nova-2014.1/0000775000175400017540000000000012323722546013710 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/0000775000175400017540000000000012323722546015371 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/0000775000175400017540000000000012323722546017412 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/doc/0000775000175400017540000000000012323722546020157 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/doc/networking.rst0000664000175400017540000001367312323721477023114 0ustar jenkinsjenkins00000000000000Multi Tenancy Networking Protections in XenServer ================================================= The purpose of the vif_rules script is to allow multi-tenancy on a XenServer host. In a multi-tenant cloud environment a host machine needs to be able to enforce network isolation amongst guest instances, at both layer two and layer three. The rules prevent guests from taking and using unauthorized IP addresses, sniffing other guests traffic, and prevents ARP poisoning attacks. This current revision only supports IPv4, but will support IPv6 in the future. Kernel Requirements =================== - physdev module - arptables support - ebtables support - iptables support If the kernel doesn't support these, you will need to obtain the Source RPMS for the proper version of XenServer to recompile the dom0 kernel. XenServer Requirements (32-bit dom0) ==================================== - arptables 32-bit rpm - ebtables 32-bit rpm - python-simplejson XenServer Environment Specific Notes ==================================== - XenServer 5.5 U1 based on the 2.6.18 kernel didn't include physdev module support. Support for this had to be recompiled into the kernel. - XenServer 5.6 based on the 2.6.27 kernel didn't include physdev, ebtables, or arptables. - XenServer 5.6 FP1 didn't include physdev, ebtables, or arptables but they do have a Cloud Supplemental pack available to partners which swaps out the kernels for kernels that support the networking rules. How it works - tl;dr ==================== iptables, ebtables, and arptables drop rules are applied to all forward chains on the host. These are applied at boot time with an init script. They ensure all forwarded packets are dropped by default. Allow rules are then applied to the instances to ensure they have permission to talk on the internet. How it works - Long =================== Any time an underprivileged domain or domU is started or stopped, it gets a unique domain id (dom_id). This dom_id is utilized in a number of places, one of which is that it is assigned to the virtual interface (vif). The vifs are attached to the bridge that is attached to the physical network. For instance, if you had a public bridge attached to eth0 and your domain id was 5, your vif would be vif5.0. The networking rules are applied to the VIF directly so they apply at the lowest level of the networking stack. Because the VIF changes along with the domain id on any start, stop, or reboot of the instance, the rules need to be removed and re-added any time that occurs. Because the dom_id can change often, the vif_rules script is hooked into the /etc/xensource/scripts/vif script that gets called anytime an instance is started, or stopped, which includes pauses and resumes. Examples of the rules ran for the host on boot: iptables -P FORWARD DROP iptables -A FORWARD -m physdev --physdev-in eth0 -j ACCEPT ebtables -P FORWARD DROP ebtables -A FORWARD -o eth0 -j ACCEPT arptables -P FORWARD DROP arptables -A FORWARD --opcode Request --in-interface eth0 -j ACCEPT arptables -A FORWARD --opcode Reply --in-interface eth0 -j ACCEPT Examples of the rules that are ran per instance state change: iptables -A FORWARD -m physdev --physdev-in vif1.0 -s 10.1.135.22/32 -j ACCEPT arptables -A FORWARD --opcode Request --in-interface "vif1.0" \ --source-ip 10.1.135.22 -j ACCEPT arptables -A FORWARD --opcode Reply --in-interface "vif1.0" \ --source-ip 10.1.135.22 --source-mac 9e:6e:cc:19:7f:fe -j ACCEPT ebtables -A FORWARD -p 0806 -o vif1.0 --arp-ip-dst 10.1.135.22 -j ACCEPT ebtables -A FORWARD -p 0800 -o vif1.0 --ip-dst 10.1.135.22 -j ACCEPT ebtables -I FORWARD 1 -s ! 9e:6e:cc:19:7f:fe -i vif1.0 -j DROP Typically when you see a vif, it'll look like vif.. vif2.1 for example would be domain 2 on the second interface. The vif_rules.py script needs to pull information about the IPs and MAC addresses assigned to the instance. The current implementation assumes that information is put into the VM Record into the xenstore-data key in a JSON string. The vif_rules.py script reads out of the JSON string to determine the IPs, and MAC addresses to protect. An example format is given below: # xe vm-param-get uuid= param-name=xenstore-data xenstore-data (MRW): vm-data/networking/4040fa7292e4: {"label": "public", "ips": [{"netmask":"255.255.255.0", "enabled":"1", "ip":"173.200.100.10"}], "mac":"40:40:fa:72:92:e4", "gateway":"173.200.100.1", "vm_id":"123456", "dns":["72.3.128.240","72.3.128.241"]}; vm-data/networking/40402321c9b8: {"label":"private", "ips":[{"netmask":"255.255.224.0", "enabled":"1", "ip":"10.177.10.10"}], "routes":[{"route":"10.176.0.0", "netmask":"255.248.0.0", "gateway":"10.177.10.1"}, {"route":"10.191.192.0", "netmask":"255.255.192.0", "gateway":"10.177.10.1"}], "mac":"40:40:23:21:c9:b8"} The key is used for two purposes. First, the vif_rules.py script reads from it to apply the rules needed after parsing the JSON. Second, because it is put into the xenstore-data field, the xenstore is populated with this data on boot. This allows a guest agent the ability to read out data about the instance and apply configurations as needed. Installation ============ - Copy host-rules into /etc/init.d/ and make sure to chmod +x host-rules. - Run 'chkconfig host-rules on' to add the init script to start up. - Copy vif_rules.py into /etc/xensource/scripts - Patch /etc/xensource/scripts/vif using the supplied patch file. It may vary for different versions of XenServer but it should be pretty self explanatory. It calls the vif_rules.py script on domain creation and tear down. - Run '/etc/init.d/host-rules start' to start up the host based rules. - The instance rules will then fire on creation of the VM as long as the correct JSON is in place. - You can check to see if the rules are in place with: iptables --list, arptables --list, or ebtables --list nova-2014.1/plugins/xenserver/xenapi/0000775000175400017540000000000012323722546020676 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/xenapi/README0000664000175400017540000000051612323721477021562 0ustar jenkinsjenkins00000000000000This directory contains files that are required for the XenAPI support. They should be installed in the XenServer / Xen Cloud Platform dom0. If you install them manually, you will need to ensure that the newly added files are executable. You can do this by running the following command (from dom0): chmod a+x /etc/xapi.d/plugins/* nova-2014.1/plugins/xenserver/xenapi/etc/0000775000175400017540000000000012323722546021451 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/0000775000175400017540000000000012323722546022634 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/0000775000175400017540000000000012323722546024315 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/nova_plugin_version0000775000175400017540000000211112323721477030326 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2013 OpenStack Foundation # Copyright (c) 2013 Citrix Systems, 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. """Returns the version of the nova plugins""" import utils # MAJOR VERSION: Incompatible changes # MINOR VERSION: Compatible changes, new plugins, etc # 1.0 - Initial version. # 1.1 - New call to check GC status # 1.2 - Added support for pci passthrough devices PLUGIN_VERSION = "1.2" def get_version(session): return PLUGIN_VERSION if __name__ == '__main__': utils.register_plugin_calls(get_version) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost0000775000175400017540000003606012323721477025742 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 OpenStack Foundation # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # XenAPI plugin for host operations # try: import json except ImportError: import simplejson as json import logging import re import sys import time import xmlrpclib import utils import pluginlib_nova as pluginlib import XenAPI import XenAPIPlugin pluginlib.configure_logging("xenhost") _ = pluginlib._ host_data_pattern = re.compile(r"\s*(\S+) \([^\)]+\) *: ?(.*)") config_file_path = "/usr/etc/xenhost.conf" DEFAULT_TRIES = 23 DEFAULT_SLEEP = 10 def jsonify(fnc): def wrapper(*args, **kwargs): return json.dumps(fnc(*args, **kwargs)) return wrapper class TimeoutError(StandardError): pass def _run_command(cmd, cmd_input=None): """Wrap utils.run_command to raise PluginError on failure """ try: return utils.run_command(cmd, cmd_input=cmd_input) except utils.SubprocessException, e: raise pluginlib.PluginError(e.err) def _resume_compute(session, compute_ref, compute_uuid): """Resume compute node on slave host after pool join. This has to happen regardless of the success or failure of the join operation.""" try: # session is valid if the join operation has failed session.xenapi.VM.start(compute_ref, False, True) except XenAPI.Failure, e: # if session is invalid, e.g. xapi has restarted, then the pool # join has been successful, wait for xapi to become alive again for c in xrange(0, DEFAULT_TRIES): try: _run_command(["xe", "vm-start", "uuid=%s" % compute_uuid]) return except pluginlib.PluginError, e: logging.exception('Waited %d seconds for the slave to ' 'become available.' % (c * DEFAULT_SLEEP)) time.sleep(DEFAULT_SLEEP) raise pluginlib.PluginError('Unrecoverable error: the host has ' 'not come back for more than %d seconds' % (DEFAULT_SLEEP * (DEFAULT_TRIES + 1))) @jsonify def set_host_enabled(self, arg_dict): """Sets this host's ability to accept new instances. It will otherwise continue to operate normally. """ enabled = arg_dict.get("enabled") if enabled is None: raise pluginlib.PluginError( _("Missing 'enabled' argument to set_host_enabled")) host_uuid = arg_dict['host_uuid'] if enabled == "true": result = _run_command(["xe", "host-enable", "uuid=%s" % host_uuid]) elif enabled == "false": result = _run_command(["xe", "host-disable", "uuid=%s" % host_uuid]) else: raise pluginlib.PluginError(_("Illegal enabled status: %s") % enabled) # Should be empty string if result: raise pluginlib.PluginError(result) # Return the current enabled status cmd = ["xe", "host-param-get", "uuid=%s" % host_uuid, "param-name=enabled"] host_enabled = _run_command(cmd) if host_enabled == "true": status = "enabled" else: status = "disabled" return {"status": status} def _write_config_dict(dct): conf_file = file(config_file_path, "w") json.dump(dct, conf_file) conf_file.close() def _get_config_dict(): """Returns a dict containing the key/values in the config file. If the file doesn't exist, it is created, and an empty dict is returned. """ try: conf_file = file(config_file_path) config_dct = json.load(conf_file) conf_file.close() except IOError: # File doesn't exist config_dct = {} # Create the file _write_config_dict(config_dct) return config_dct @jsonify def get_config(self, arg_dict): """Return the value stored for the specified key, or None if no match.""" conf = _get_config_dict() params = arg_dict["params"] try: dct = json.loads(params) except Exception, e: dct = params key = dct["key"] ret = conf.get(key) if ret is None: # Can't jsonify None return "None" return ret @jsonify def set_config(self, arg_dict): """Write the specified key/value pair, overwriting any existing value.""" conf = _get_config_dict() params = arg_dict["params"] try: dct = json.loads(params) except Exception, e: dct = params key = dct["key"] val = dct["value"] if val is None: # Delete the key, if present conf.pop(key, None) else: conf.update({key: val}) _write_config_dict(conf) def iptables_config(session, args): # command should be either save or restore logging.debug("iptables_config:enter") logging.debug("iptables_config: args=%s", args) cmd_args = pluginlib.exists(args, 'cmd_args') logging.debug("iptables_config: cmd_args=%s", cmd_args) process_input = pluginlib.optional(args, 'process_input') logging.debug("iptables_config: process_input=%s", process_input) cmd = json.loads(cmd_args) cmd = map(str, cmd) # either execute iptable-save or iptables-restore # command must be only one of these two # process_input must be used only with iptables-restore if len(cmd) > 0 and cmd[0] in ('iptables-save', 'iptables-restore', 'ip6tables-save', 'ip6tables-restore'): result = _run_command(cmd, process_input) ret_str = json.dumps(dict(out=result, err='')) logging.debug("iptables_config:exit") return ret_str else: # else don't do anything and return an error raise pluginlib.PluginError(_("Invalid iptables command")) def _power_action(action, arg_dict): # Host must be disabled first host_uuid = arg_dict['host_uuid'] result = _run_command(["xe", "host-disable", "uuid=%s" % host_uuid]) if result: raise pluginlib.PluginError(result) # All running VMs must be shutdown result = _run_command(["xe", "vm-shutdown", "--multiple", "resident-on=%s" % host_uuid]) if result: raise pluginlib.PluginError(result) cmds = {"reboot": "host-reboot", "startup": "host-power-on", "shutdown": "host-shutdown",} result = _run_command(["xe", cmds[action], "uuid=%s" % host_uuid]) # Should be empty string if result: raise pluginlib.PluginError(result) return {"power_action": action} @jsonify def host_reboot(self, arg_dict): """Reboots the host.""" return _power_action("reboot", arg_dict) @jsonify def host_shutdown(self, arg_dict): """Reboots the host.""" return _power_action("shutdown", arg_dict) @jsonify def host_start(self, arg_dict): """Starts the host. Currently not feasible, since the host runs on the same machine as Xen. """ return _power_action("startup", arg_dict) @jsonify def host_join(self, arg_dict): """Join a remote host into a pool whose master is the host where the plugin is called from. The following constraints apply: - The host must have no VMs running, except nova-compute, which will be shut down (and restarted upon pool-join) automatically, - The host must have no shared storage currently set up, - The host must have the same license of the master, - The host must have the same supplemental packs as the master.""" session = XenAPI.Session(arg_dict.get("url")) session.login_with_password(arg_dict.get("user"), arg_dict.get("password")) compute_ref = session.xenapi.VM.get_by_uuid(arg_dict.get('compute_uuid')) session.xenapi.VM.clean_shutdown(compute_ref) try: if arg_dict.get("force"): session.xenapi.pool.join(arg_dict.get("master_addr"), arg_dict.get("master_user"), arg_dict.get("master_pass")) else: session.xenapi.pool.join_force(arg_dict.get("master_addr"), arg_dict.get("master_user"), arg_dict.get("master_pass")) finally: _resume_compute(session, compute_ref, arg_dict.get("compute_uuid")) @jsonify def host_data(self, arg_dict): """Runs the commands on the xenstore host to return the current status information. """ host_uuid = arg_dict['host_uuid'] resp = _run_command(["xe", "host-param-list", "uuid=%s" % host_uuid]) parsed_data = parse_response(resp) # We have the raw dict of values. Extract those that we need, # and convert the data types as needed. ret_dict = cleanup(parsed_data) # Add any config settings config = _get_config_dict() ret_dict.update(config) return ret_dict def parse_response(resp): data = {} for ln in resp.splitlines(): if not ln: continue mtch = host_data_pattern.match(ln.strip()) try: k, v = mtch.groups() data[k] = v except AttributeError: # Not a valid line; skip it continue return data @jsonify def host_uptime(self, arg_dict): """Returns the result of the uptime command on the xenhost.""" return {"uptime": _run_command(['uptime'])} def cleanup(dct): """Take the raw KV pairs returned and translate them into the appropriate types, discarding any we don't need. """ def safe_int(val): """Integer values will either be string versions of numbers, or empty strings. Convert the latter to nulls. """ try: return int(val) except ValueError: return None def strip_kv(ln): return [val.strip() for val in ln.split(":", 1)] out = {} # sbs = dct.get("supported-bootloaders", "") # out["host_supported-bootloaders"] = sbs.split("; ") # out["host_suspend-image-sr-uuid"] = dct.get("suspend-image-sr-uuid", "") # out["host_crash-dump-sr-uuid"] = dct.get("crash-dump-sr-uuid", "") # out["host_local-cache-sr"] = dct.get("local-cache-sr", "") out["enabled"] = dct.get("enabled", "true") == "true" out["host_memory"] = omm = {} omm["total"] = safe_int(dct.get("memory-total", "")) omm["overhead"] = safe_int(dct.get("memory-overhead", "")) omm["free"] = safe_int(dct.get("memory-free", "")) omm["free-computed"] = safe_int( dct.get("memory-free-computed", "")) # out["host_API-version"] = avv = {} # avv["vendor"] = dct.get("API-version-vendor", "") # avv["major"] = safe_int(dct.get("API-version-major", "")) # avv["minor"] = safe_int(dct.get("API-version-minor", "")) out["enabled"] = dct.get("enabled", True) out["host_uuid"] = dct.get("uuid", None) out["host_name-label"] = dct.get("name-label", "") out["host_name-description"] = dct.get("name-description", "") # out["host_host-metrics-live"] = dct.get( # "host-metrics-live", "false") == "true" out["host_hostname"] = dct.get("hostname", "") out["host_ip_address"] = dct.get("address", "") oc = dct.get("other-config", "") out["host_other-config"] = ocd = {} if oc: for oc_fld in oc.split("; "): ock, ocv = strip_kv(oc_fld) ocd[ock] = ocv capabilities = dct.get("capabilities", "") out["host_capabilities"] = capabilities.replace(";", "").split() # out["host_allowed-operations"] = dct.get( # "allowed-operations", "").split("; ") # lsrv = dct.get("license-server", "") # out["host_license-server"] = ols = {} # if lsrv: # for lspart in lsrv.split("; "): # lsk, lsv = lspart.split(": ") # if lsk == "port": # ols[lsk] = safe_int(lsv) # else: # ols[lsk] = lsv # sv = dct.get("software-version", "") # out["host_software-version"] = osv = {} # if sv: # for svln in sv.split("; "): # svk, svv = strip_kv(svln) # osv[svk] = svv cpuinf = dct.get("cpu_info", "") out["host_cpu_info"] = ocp = {} if cpuinf: for cpln in cpuinf.split("; "): cpk, cpv = strip_kv(cpln) if cpk in ("cpu_count", "family", "model", "stepping"): ocp[cpk] = safe_int(cpv) else: ocp[cpk] = cpv # out["host_edition"] = dct.get("edition", "") # out["host_external-auth-service-name"] = dct.get( # "external-auth-service-name", "") return out def query_gc(session, sr_uuid, vdi_uuid): result = _run_command(["/opt/xensource/sm/cleanup.py", "-q", "-u", sr_uuid]) # Example output: "Currently running: True" return result[19:].strip() == "True" def get_pci_device_details(session): """Returns a string that is a list of pci devices with details. This string is obtained by running the command lspci. With -vmm option, it dumps PCI device data in machine readable form. This verbose format display a sequence of records separated by a blank line. We will also use option "-n" to get vendor_id and device_id as numeric values and the "-k" option to get the kernel driver used if any. """ return _run_command(["lspci", "-vmmnk"]) def get_pci_type(session, pci_device): """Returns the type of the PCI device (type-PCI, type-VF or type-PF). pci-device -- The address of the pci device """ # We need to add the domain if it is missing if pci_device.count(':') == 1: pci_device = "0000:" + pci_device output = _run_command(["ls", "/sys/bus/pci/devices/" + pci_device + "/"]) if "physfn" in output: return "type-VF" if "virtfn" in output: return "type-PF" return "type-PCI" if __name__ == "__main__": # Support both serialized and non-serialized plugin approaches _, methodname = xmlrpclib.loads(sys.argv[1]) if methodname in ['query_gc', 'get_pci_device_details', 'get_pci_type']: utils.register_plugin_calls(query_gc, get_pci_device_details, get_pci_type) XenAPIPlugin.dispatch( {"host_data": host_data, "set_host_enabled": set_host_enabled, "host_shutdown": host_shutdown, "host_reboot": host_reboot, "host_start": host_start, "host_join": host_join, "get_config": get_config, "set_config": set_config, "iptables_config": iptables_config, "host_uptime": host_uptime}) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/xenstore.py0000775000175400017540000001612712323721477026552 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2010 Citrix Systems, Inc. # Copyright 2010 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # XenAPI plugin for reading/writing information to xenstore # try: import json except ImportError: import simplejson as json import utils # noqa import XenAPIPlugin import pluginlib_nova as pluginlib # noqa pluginlib.configure_logging("xenstore") class XenstoreError(pluginlib.PluginError): """Errors that occur when calling xenstore-* through subprocesses.""" def __init__(self, cmd, return_code, stderr, stdout): msg = "cmd: %s; returncode: %d; stderr: %s; stdout: %s" msg = msg % (cmd, return_code, stderr, stdout) self.cmd = cmd self.return_code = return_code self.stderr = stderr self.stdout = stdout pluginlib.PluginError.__init__(self, msg) def jsonify(fnc): def wrapper(*args, **kwargs): ret = fnc(*args, **kwargs) try: json.loads(ret) except ValueError: # Value should already be JSON-encoded, but some operations # may write raw sting values; this will catch those and # properly encode them. ret = json.dumps(ret) return ret return wrapper def _record_exists(arg_dict): """Returns whether or not the given record exists. The record path is determined from the given path and dom_id in the arg_dict. """ cmd = ["xenstore-exists", "/local/domain/%(dom_id)s/%(path)s" % arg_dict] try: _run_command(cmd) return True except XenstoreError, e: # noqa if e.stderr == '': # if stderr was empty, this just means the path did not exist return False # otherwise there was a real problem raise @jsonify def read_record(self, arg_dict): """Returns the value stored at the given path for the given dom_id. These must be encoded as key/value pairs in arg_dict. You can optinally include a key 'ignore_missing_path'; if this is present and boolean True, attempting to read a non-existent path will return the string 'None' instead of raising an exception. """ cmd = ["xenstore-read", "/local/domain/%(dom_id)s/%(path)s" % arg_dict] try: result = _run_command(cmd) return result.strip() except XenstoreError, e: # noqa if not arg_dict.get("ignore_missing_path", False): raise if not _record_exists(arg_dict): return "None" # Just try again in case the agent write won the race against # the record_exists check. If this fails again, it will likely raise # an equally meaningful XenstoreError as the one we just caught result = _run_command(cmd) return result.strip() @jsonify def write_record(self, arg_dict): """Writes to xenstore at the specified path. If there is information already stored in that location, it is overwritten. As in read_record, the dom_id and path must be specified in the arg_dict; additionally, you must specify a 'value' key, whose value must be a string. Typically, you can json-ify more complex values and store the json output. """ cmd = ["xenstore-write", "/local/domain/%(dom_id)s/%(path)s" % arg_dict, arg_dict["value"]] _run_command(cmd) return arg_dict["value"] @jsonify def list_records(self, arg_dict): """Returns all the stored data at or below the given path for the given dom_id. The data is returned as a json-ified dict, with the path as the key and the stored value as the value. If the path doesn't exist, an empty dict is returned. """ dirpath = "/local/domain/%(dom_id)s/%(path)s" % arg_dict cmd = ["xenstore-ls", dirpath.rstrip("/")] try: recs = _run_command(cmd) except XenstoreError, e: # noqa if not _record_exists(arg_dict): return {} # Just try again in case the path was created in between # the "ls" and the existence check. If this fails again, it will # likely raise an equally meaningful XenstoreError recs = _run_command(cmd) base_path = arg_dict["path"] paths = _paths_from_ls(recs) ret = {} for path in paths: if base_path: arg_dict["path"] = "%s/%s" % (base_path, path) else: arg_dict["path"] = path rec = read_record(self, arg_dict) try: val = json.loads(rec) except ValueError: val = rec ret[path] = val return ret @jsonify def delete_record(self, arg_dict): """Just like it sounds: it removes the record for the specified VM and the specified path from xenstore. """ cmd = ["xenstore-rm", "/local/domain/%(dom_id)s/%(path)s" % arg_dict] try: return _run_command(cmd) except XenstoreError, e: # noqa if 'could not remove path' in e.stderr: # Entry already gone. We're good to go. return '' raise def _paths_from_ls(recs): """The xenstore-ls command returns a listing that isn't terribly useful. This method cleans that up into a dict with each path as the key, and the associated string as the value. """ last_nm = "" level = 0 path = [] ret = [] for ln in recs.splitlines(): nm, val = ln.rstrip().split(" = ") barename = nm.lstrip() this_level = len(nm) - len(barename) if this_level == 0: ret.append(barename) level = 0 path = [] elif this_level == level: # child of same parent ret.append("%s/%s" % ("/".join(path), barename)) elif this_level > level: path.append(last_nm) ret.append("%s/%s" % ("/".join(path), barename)) level = this_level elif this_level < level: path = path[:this_level] ret.append("%s/%s" % ("/".join(path), barename)) level = this_level last_nm = barename return ret def _run_command(cmd): """Wrap utils.run_command to raise XenstoreError on failure """ try: return utils.run_command(cmd) except utils.SubprocessException, e: # noqa raise XenstoreError(e.cmdline, e.ret, e.err, e.out) if __name__ == "__main__": XenAPIPlugin.dispatch( {"read_record": read_record, "write_record": write_record, "list_records": list_records, "delete_record": delete_record}) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/bittorrent0000775000175400017540000002465112323721477026451 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Download images via BitTorrent.""" import errno import inspect import os import random import shutil import tempfile import time import libtorrent import urllib2 import utils import pluginlib_nova pluginlib_nova.configure_logging('bittorrent') logging = pluginlib_nova.logging DEFAULT_TORRENT_CACHE = '/images/torrents' DEFAULT_SEED_CACHE = '/images/seeds' SEEDER_PROCESS = '_bittorrent_seeder' def _make_torrent_cache(): torrent_cache_path = os.environ.get( 'TORRENT_CACHE', DEFAULT_TORRENT_CACHE) if not os.path.exists(torrent_cache_path): os.mkdir(torrent_cache_path) return torrent_cache_path def _fetch_torrent_file(torrent_cache_path, image_id, torrent_url): torrent_path = os.path.join( torrent_cache_path, image_id + '.torrent') if not os.path.exists(torrent_path): logging.info("Downloading %s" % torrent_url) # Write contents to temporary path to ensure we don't have partially # completed files in the cache. temp_directory = tempfile.mkdtemp(dir=torrent_cache_path) try: temp_path = os.path.join( temp_directory, os.path.basename(torrent_path)) temp_file = open(temp_path, 'wb') try: remote_torrent_file = urllib2.urlopen(torrent_url) shutil.copyfileobj(remote_torrent_file, temp_file) finally: temp_file.close() os.rename(temp_path, torrent_path) finally: shutil.rmtree(temp_directory) return torrent_path def _reap_old_torrent_files(torrent_cache_path, torrent_max_last_accessed): """Delete any torrent files that haven't been accessed recently.""" if not torrent_max_last_accessed: logging.debug("Reaping old torrent files disabled, skipping...") return logging.debug("Preparing to reap old torrent files," " torrent_max_last_accessed=%d" % torrent_max_last_accessed) for fname in os.listdir(torrent_cache_path): torrent_path = os.path.join(torrent_cache_path, fname) last_accessed = time.time() - os.path.getatime(torrent_path) if last_accessed > torrent_max_last_accessed: logging.debug("Reaping '%s', last_accessed=%d" % ( torrent_path, last_accessed)) utils.delete_if_exists(torrent_path) def _download(torrent_path, save_as_path, torrent_listen_port_start, torrent_listen_port_end, torrent_download_stall_cutoff): session = libtorrent.session() session.listen_on(torrent_listen_port_start, torrent_listen_port_end) info = libtorrent.torrent_info( libtorrent.bdecode(open(torrent_path, 'rb').read())) torrent = session.add_torrent( info, save_as_path, storage_mode=libtorrent.storage_mode_t.storage_mode_sparse) try: last_progress = 0 last_progress_updated = time.time() while not torrent.is_seed(): s = torrent.status() progress = s.progress * 100 if progress != last_progress: last_progress = progress last_progress_updated = time.time() stall_duration = time.time() - last_progress_updated if stall_duration > torrent_download_stall_cutoff: logging.error( "Download stalled: stall_duration=%d," " torrent_download_stall_cutoff=%d" % ( stall_duration, torrent_download_stall_cutoff)) raise Exception("Bittorrent download stall detected, bailing!") logging.debug( '%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d)' ' %s %s' % (progress, s.download_rate / 1000, s.upload_rate / 1000, s.num_peers, s.state, torrent_path)) time.sleep(1) finally: session.remove_torrent(torrent) logging.debug("Download of '%s' finished" % torrent_path) def _should_seed(seed_path, torrent_seed_duration, torrent_seed_chance, torrent_max_seeder_processes_per_host): if not torrent_seed_duration: logging.debug("Seeding disabled, skipping...") return False if os.path.exists(seed_path): logging.debug("Seed is already present, skipping....") return False rand = random.random() if rand > torrent_seed_chance: logging.debug("%.2f > %.2f, seeding randomly skipping..." % ( rand, torrent_seed_chance)) return False num_active_seeders = len(list(_active_seeder_processes())) if (torrent_max_seeder_processes_per_host >= 0 and num_active_seeders >= torrent_max_seeder_processes_per_host): logging.debug("max number of seeder processes for this host reached" " (%d), skipping..." % torrent_max_seeder_processes_per_host) return False return True def _seed(torrent_path, seed_cache_path, torrent_seed_duration, torrent_listen_port_start, torrent_listen_port_end): plugin_path = os.path.dirname(inspect.getabsfile(inspect.currentframe())) seeder_path = os.path.join(plugin_path, SEEDER_PROCESS) seed_cmd = map(str, [seeder_path, torrent_path, seed_cache_path, torrent_seed_duration, torrent_listen_port_start, torrent_listen_port_end]) utils.run_command(seed_cmd) def _seed_if_needed(seed_cache_path, tarball_path, torrent_path, torrent_seed_duration, torrent_seed_chance, torrent_listen_port_start, torrent_listen_port_end, torrent_max_seeder_processes_per_host): seed_filename = os.path.basename(tarball_path) seed_path = os.path.join(seed_cache_path, seed_filename) if _should_seed(seed_path, torrent_seed_duration, torrent_seed_chance, torrent_max_seeder_processes_per_host): logging.debug("Preparing to seed '%s' for %d secs" % ( seed_path, torrent_seed_duration)) utils._rename(tarball_path, seed_path) # Daemonize and seed the image _seed(torrent_path, seed_cache_path, torrent_seed_duration, torrent_listen_port_start, torrent_listen_port_end) else: utils.delete_if_exists(tarball_path) def _extract_tarball(tarball_path, staging_path): """Extract the tarball into the staging directory.""" tarball_fileobj = open(tarball_path, 'rb') try: utils.extract_tarball(tarball_fileobj, staging_path) finally: tarball_fileobj.close() def _active_seeder_processes(): """Yields command-line of active seeder processes. Roughly equivalent to performing ps | grep _bittorrent_seeder """ pids = [pid for pid in os.listdir('/proc') if pid.isdigit()] for pid in pids: try: cmdline = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read() except IOError, e: if e.errno != errno.ENOENT: raise if SEEDER_PROCESS in cmdline: yield cmdline def _reap_finished_seeds(seed_cache_path): """Delete any cached seeds where the seeder process has died.""" logging.debug("Preparing to reap finished seeds") missing = {} for fname in os.listdir(seed_cache_path): seed_path = os.path.join(seed_cache_path, fname) missing[seed_path] = None for cmdline in _active_seeder_processes(): for seed_path in missing.keys(): seed_filename = os.path.basename(seed_path) if seed_filename in cmdline: del missing[seed_path] for seed_path in missing: logging.debug("Reaping cached seed '%s'" % seed_path) utils.delete_if_exists(seed_path) def _make_seed_cache(): seed_cache_path = os.environ.get('SEED_CACHE', DEFAULT_SEED_CACHE) if not os.path.exists(seed_cache_path): os.mkdir(seed_cache_path) return seed_cache_path def download_vhd(session, image_id, torrent_url, torrent_seed_duration, torrent_seed_chance, torrent_max_last_accessed, torrent_listen_port_start, torrent_listen_port_end, torrent_download_stall_cutoff, uuid_stack, sr_path, torrent_max_seeder_processes_per_host): """Download an image from BitTorrent, unbundle it, and then deposit the VHDs into the storage repository """ seed_cache_path = _make_seed_cache() torrent_cache_path = _make_torrent_cache() # Housekeeping _reap_finished_seeds(seed_cache_path) _reap_old_torrent_files(torrent_cache_path, torrent_max_last_accessed) torrent_path = _fetch_torrent_file( torrent_cache_path, image_id, torrent_url) staging_path = utils.make_staging_area(sr_path) try: tarball_filename = os.path.basename(torrent_path).replace( '.torrent', '') tarball_path = os.path.join(staging_path, tarball_filename) # Download tarball into staging area _download(torrent_path, staging_path, torrent_listen_port_start, torrent_listen_port_end, torrent_download_stall_cutoff) # Extract the tarball into the staging area _extract_tarball(tarball_path, staging_path) # Move the VHDs from the staging area into the storage repository vdi_list = utils.import_vhds(sr_path, staging_path, uuid_stack) # Seed image for others in the swarm _seed_if_needed(seed_cache_path, tarball_path, torrent_path, torrent_seed_duration, torrent_seed_chance, torrent_listen_port_start, torrent_listen_port_end, torrent_max_seeder_processes_per_host) finally: utils.cleanup_staging_area(staging_path) return vdi_list if __name__ == '__main__': utils.register_plugin_calls(download_vhd) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/ipxe0000775000175400017540000000761512323721477025223 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Inject network configuration into iPXE ISO for boot.""" import os import shutil import utils #FIXME(sirp): should this use pluginlib from 5.6? from pluginlib_nova import * configure_logging('ipxe') ISOLINUX_CFG = """SAY iPXE ISO boot image TIMEOUT 30 DEFAULT ipxe.krn LABEL ipxe.krn KERNEL ipxe.krn INITRD netcfg.ipxe """ NETCFG_IPXE = """#!ipxe :start imgfree ifclose net0 set net0/ip %(ip_address)s set net0/netmask %(netmask)s set net0/gateway %(gateway)s set dns %(dns)s ifopen net0 goto menu :menu chain %(boot_menu_url)s goto boot :boot sanboot --no-describe --drive 0x80 """ def _write_file(filename, data): # If the ISO was tampered with such that the destination is a symlink, # that could allow a malicious user to write to protected areas of the # dom0 filesystem. /HT to comstud for pointing this out. # # Short-term, checking that the destination is not a symlink should be # sufficient. # # Long-term, we probably want to perform all file manipulations within a # chroot jail to be extra safe. if os.path.islink(filename): raise RuntimeError('SECURITY: Cannot write to symlinked destination') logging.debug("Writing to file '%s'" % filename) f = open(filename, 'w') try: f.write(data) finally: f.close() def _unbundle_iso(sr_path, filename, path): logging.debug("Unbundling ISO '%s'" % filename) read_only_path = utils.make_staging_area(sr_path) try: utils.run_command(['mount', '-o', 'loop', filename, read_only_path]) try: shutil.copytree(read_only_path, path) finally: utils.run_command(['umount', read_only_path]) finally: utils.cleanup_staging_area(read_only_path) def _create_iso(mkisofs_cmd, filename, path): logging.debug("Creating ISO '%s'..." % filename) orig_dir = os.getcwd() os.chdir(path) try: utils.run_command([mkisofs_cmd, '-quiet', '-l', '-o', filename, '-c', 'boot.cat', '-b', 'isolinux.bin', '-no-emul-boot', '-boot-load-size', '4', '-boot-info-table', '.']) finally: os.chdir(orig_dir) def inject(session, sr_path, vdi_uuid, boot_menu_url, ip_address, netmask, gateway, dns, mkisofs_cmd): iso_filename = '%s.img' % os.path.join(sr_path, 'iso', vdi_uuid) # Create staging area so we have a unique path but remove it since # shutil.copytree will recreate it staging_path = utils.make_staging_area(sr_path) utils.cleanup_staging_area(staging_path) try: _unbundle_iso(sr_path, iso_filename, staging_path) # Write Configs _write_file(os.path.join(staging_path, 'netcfg.ipxe'), NETCFG_IPXE % {"ip_address": ip_address, "netmask": netmask, "gateway": gateway, "dns": dns, "boot_menu_url": boot_menu_url}) _write_file(os.path.join(staging_path, 'isolinux.cfg'), ISOLINUX_CFG) _create_iso(mkisofs_cmd, iso_filename, staging_path) finally: utils.cleanup_staging_area(staging_path) if __name__ == "__main__": utils.register_plugin_calls(inject) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/config_file0000775000175400017540000000072312323721477026513 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python import XenAPIPlugin def get_val(session, args): config_key = args['key'] config_file = open('/etc/xapi.conf') try: for line in config_file: split = line.split('=') if (len(split) == 2) and (split[0].strip() == config_key): return split[1].strip() return "" finally: config_file.close() if __name__ == '__main__': XenAPIPlugin.dispatch({"get_val": get_val}) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/workarounds0000775000175400017540000000273012323721477026625 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Handle the uploading and downloading of images via Glance.""" import os import shutil import utils import pluginlib_nova pluginlib_nova.configure_logging('workarounds') def _copy_vdis(sr_path, staging_path, vdi_uuids): seq_num = 0 for vdi_uuid in vdi_uuids: src = os.path.join(sr_path, "%s.vhd" % vdi_uuid) dst = os.path.join(staging_path, "%d.vhd" % seq_num) shutil.copyfile(src, dst) seq_num += 1 def safe_copy_vdis(session, sr_path, vdi_uuids, uuid_stack): staging_path = utils.make_staging_area(sr_path) try: _copy_vdis(sr_path, staging_path, vdi_uuids) return utils.import_vhds(sr_path, staging_path, uuid_stack) finally: utils.cleanup_staging_area(staging_path) if __name__ == '__main__': utils.register_plugin_calls(safe_copy_vdis) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/_bittorrent_seeder0000775000175400017540000000720512323721477030133 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Seed a bittorent image. This file should not be executed directly, rather it should be kicked off by the `bittorent` dom0 plugin.""" import os import sys import time import libtorrent import pluginlib_nova pluginlib_nova.configure_logging('_bittorrent_seeder') logging = pluginlib_nova.logging def _daemonize(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): """ do the UNIX double-fork magic, see Stevens' "Advanced Programming in the UNIX Environment" for details (ISBN 0201563177) Source: http://www.jejik.com/articles/2007/02/ a_simple_unix_linux_daemon_in_python/ """ # 1st fork try: pid = os.fork() if pid > 0: # first parent returns return False except OSError, e: logging.error("fork #1 failed: %d (%s)" % ( e.errno, e.strerror)) return # decouple from parent environment os.chdir("/") os.setsid() os.umask(0) # 2nd fork try: pid = os.fork() if pid > 0: # second parent exits sys.exit(0) except OSError, e: logging.error("fork #2 failed: %d (%s)" % ( e.errno, e.strerror)) return # redirect standard file descriptors sys.stdout.flush() sys.stderr.flush() si = open(stdin, 'r') so = open(stdout, 'a+') se = open(stderr, 'a+', 0) os.dup2(si.fileno(), sys.stdin.fileno()) os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) return True def main(torrent_path, seed_cache_path, torrent_seed_duration, torrent_listen_port_start, torrent_listen_port_end): seed_time = time.time() + torrent_seed_duration logging.debug("Seeding '%s' for %d secs" % ( torrent_path, torrent_seed_duration)) child = _daemonize() if not child: return # At this point we're the daemonized child... session = libtorrent.session() session.listen_on(torrent_listen_port_start, torrent_listen_port_end) torrent_file = open(torrent_path, 'rb') try: torrent_data = torrent_file.read() finally: torrent_file.close() decoded_data = libtorrent.bdecode(torrent_data) info = libtorrent.torrent_info(decoded_data) torrent = session.add_torrent( info, seed_cache_path, storage_mode=libtorrent.storage_mode_t.storage_mode_sparse) try: while time.time() < seed_time: time.sleep(5) finally: session.remove_torrent(torrent) logging.debug("Seeding of '%s' finished" % torrent_path) if __name__ == "__main__": (torrent_path, seed_cache_path, torrent_seed_duration, torrent_listen_port_start, torrent_listen_port_end) = sys.argv[1:] torrent_seed_duration = int(torrent_seed_duration) torrent_listen_port_start = int(torrent_listen_port_start) torrent_listen_port_end = int(torrent_listen_port_end) main(torrent_path, seed_cache_path, torrent_seed_duration, torrent_listen_port_start, torrent_listen_port_end) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py0000664000175400017540000003345312323721510026025 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Various utilities used by XenServer plugins.""" import cPickle as pickle import errno import logging import os import shutil import subprocess import tempfile import XenAPIPlugin LOG = logging.getLogger(__name__) CHUNK_SIZE = 8192 class CommandNotFound(Exception): pass def delete_if_exists(path): try: os.unlink(path) except OSError, e: # noqa if e.errno == errno.ENOENT: LOG.warning("'%s' was already deleted, skipping delete" % path) else: raise def _link(src, dst): LOG.info("Hard-linking file '%s' -> '%s'" % (src, dst)) os.link(src, dst) def _rename(src, dst): LOG.info("Renaming file '%s' -> '%s'" % (src, dst)) try: os.rename(src, dst) except OSError, e: # noqa if e.errno == errno.EXDEV: LOG.error("Invalid cross-device link. Perhaps %s and %s should " "be symlinked on the same filesystem?" % (src, dst)) raise def make_subprocess(cmdline, stdout=False, stderr=False, stdin=False, universal_newlines=False, close_fds=True, env=None): """Make a subprocess according to the given command-line string """ LOG.info("Running cmd '%s'" % " ".join(cmdline)) kwargs = {} kwargs['stdout'] = stdout and subprocess.PIPE or None kwargs['stderr'] = stderr and subprocess.PIPE or None kwargs['stdin'] = stdin and subprocess.PIPE or None kwargs['universal_newlines'] = universal_newlines kwargs['close_fds'] = close_fds kwargs['env'] = env try: proc = subprocess.Popen(cmdline, **kwargs) except OSError, e: # noqa if e.errno == errno.ENOENT: raise CommandNotFound else: raise return proc class SubprocessException(Exception): def __init__(self, cmdline, ret, out, err): Exception.__init__(self, "'%s' returned non-zero exit code: " "retcode=%i, out='%s', stderr='%s'" % (cmdline, ret, out, err)) self.cmdline = cmdline self.ret = ret self.out = out self.err = err def finish_subprocess(proc, cmdline, cmd_input=None, ok_exit_codes=None): """Ensure that the process returned a zero exit code indicating success """ if ok_exit_codes is None: ok_exit_codes = [0] out, err = proc.communicate(cmd_input) ret = proc.returncode if ret not in ok_exit_codes: raise SubprocessException(' '.join(cmdline), ret, out, err) return out def run_command(cmd, cmd_input=None, ok_exit_codes=None): """Abstracts out the basics of issuing system commands. If the command returns anything in stderr, an exception is raised with that information. Otherwise, the output from stdout is returned. cmd_input is passed to the process on standard input. """ proc = make_subprocess(cmd, stdout=True, stderr=True, stdin=True, close_fds=True) return finish_subprocess(proc, cmd, cmd_input=cmd_input, ok_exit_codes=ok_exit_codes) def make_staging_area(sr_path): """The staging area is a place where we can temporarily store and manipulate VHDs. The use of the staging area is different for upload and download: Download ======== When we download the tarball, the VHDs contained within will have names like "snap.vhd" and "image.vhd". We need to assign UUIDs to them before moving them into the SR. However, since 'image.vhd' may be a base_copy, we need to link it to 'snap.vhd' (using vhd-util modify) before moving both into the SR (otherwise the SR.scan will cause 'image.vhd' to be deleted). The staging area gives us a place to perform these operations before they are moved to the SR, scanned, and then registered with XenServer. Upload ====== On upload, we want to rename the VHDs to reflect what they are, 'snap.vhd' in the case of the snapshot VHD, and 'image.vhd' in the case of the base_copy. The staging area provides a directory in which we can create hard-links to rename the VHDs without affecting what's in the SR. NOTE ==== The staging area is created as a subdirectory within the SR in order to guarantee that it resides within the same filesystem and therefore permit hard-linking and cheap file moves. """ staging_path = tempfile.mkdtemp(dir=sr_path) return staging_path def cleanup_staging_area(staging_path): """Remove staging area directory On upload, the staging area contains hard-links to the VHDs in the SR; it's safe to remove the staging-area because the SR will keep the link count > 0 (so the VHDs in the SR will not be deleted). """ if os.path.exists(staging_path): shutil.rmtree(staging_path) def _handle_old_style_images(staging_path): """Rename files to conform to new image format, if needed. Old-Style: snap.vhd -> image.vhd -> base.vhd New-Style: 0.vhd -> 1.vhd -> ... (n-1).vhd The New-Style format has the benefit of being able to support a VDI chain of arbitrary length. """ file_num = 0 for filename in ('snap.vhd', 'image.vhd', 'base.vhd'): path = os.path.join(staging_path, filename) if os.path.exists(path): _rename(path, os.path.join(staging_path, "%d.vhd" % file_num)) file_num += 1 def _assert_vhd_not_hidden(path): """Sanity check to ensure that only appropriate VHDs are marked as hidden. If this flag is incorrectly set, then when we move the VHD into the SR, it will be deleted out from under us. """ query_cmd = ["vhd-util", "query", "-n", path, "-f"] out = run_command(query_cmd) for line in out.splitlines(): if line.lower().startswith('hidden'): value = line.split(':')[1].strip() if value == "1": raise Exception( "VHD %s is marked as hidden without child" % path) def _validate_vhd(vdi_path): """This checks for several errors in the VHD structure. Most notably, it checks that the timestamp in the footer is correct, but may pick up other errors also. This check ensures that the timestamps listed in the VHD footer aren't in the future. This can occur during a migration if the clocks on the the two Dom0's are out-of-sync. This would corrupt the SR if it were imported, so generate an exception to bail. """ check_cmd = ["vhd-util", "check", "-n", vdi_path, "-p"] out = run_command(check_cmd, ok_exit_codes=[0, 22]) first_line = out.splitlines()[0].strip() if 'invalid' in first_line: if 'footer' in first_line: part = 'footer' elif 'header' in first_line: part = 'header' else: part = 'setting' details = first_line.split(':', 1) if len(details) == 2: details = details[1] else: details = first_line extra = '' if 'timestamp' in first_line: extra = (" ensure source and destination host machines have " "time set correctly") LOG.info("VDI Error details: %s" % out) raise Exception( "VDI '%(vdi_path)s' has an invalid %(part)s: '%(details)s'" "%(extra)s" % {'vdi_path': vdi_path, 'part': part, 'details': details, 'extra': extra}) def _validate_vdi_chain(vdi_path): """This check ensures that the parent pointers on the VHDs are valid before we move the VDI chain to the SR. This is *very* important because a bad parent pointer will corrupt the SR causing a cascade of failures. """ def get_parent_path(path): query_cmd = ["vhd-util", "query", "-n", path, "-p"] out = run_command(query_cmd, ok_exit_codes=[0, 22]) first_line = out.splitlines()[0].strip() if first_line.endswith(".vhd"): return first_line elif 'has no parent' in first_line: return None elif 'query failed' in first_line: raise Exception("VDI '%s' not present which breaks" " the VDI chain, bailing out" % path) else: raise Exception("Unexpected output '%s' from vhd-util" % out) cur_path = vdi_path while cur_path: _validate_vhd(cur_path) cur_path = get_parent_path(cur_path) def _validate_sequenced_vhds(staging_path): """This check ensures that the VHDs in the staging area are sequenced properly from 0 to n-1 with no gaps. """ seq_num = 0 filenames = os.listdir(staging_path) for filename in filenames: if not filename.endswith('.vhd'): continue # Ignore legacy swap embedded in the image, generated on-the-fly now if filename == "swap.vhd": continue vhd_path = os.path.join(staging_path, "%d.vhd" % seq_num) if not os.path.exists(vhd_path): raise Exception("Corrupt image. Expected seq number: %d. Files: %s" % (seq_num, filenames)) seq_num += 1 def import_vhds(sr_path, staging_path, uuid_stack): """Move VHDs from staging area into the SR. The staging area is necessary because we need to perform some fixups (assigning UUIDs, relinking the VHD chain) before moving into the SR, otherwise the SR manager process could potentially delete the VHDs out from under us. Returns: A dict of imported VHDs: {'root': {'uuid': 'ffff-aaaa'}} """ _handle_old_style_images(staging_path) _validate_sequenced_vhds(staging_path) files_to_move = [] # Collect sequenced VHDs and assign UUIDs to them seq_num = 0 while True: orig_vhd_path = os.path.join(staging_path, "%d.vhd" % seq_num) if not os.path.exists(orig_vhd_path): break # Rename (0, 1 .. N).vhd -> aaaa-bbbb-cccc-dddd.vhd vhd_uuid = uuid_stack.pop() vhd_path = os.path.join(staging_path, "%s.vhd" % vhd_uuid) _rename(orig_vhd_path, vhd_path) if seq_num == 0: leaf_vhd_path = vhd_path leaf_vhd_uuid = vhd_uuid files_to_move.append(vhd_path) seq_num += 1 # Re-link VHDs, in reverse order, from base-copy -> leaf parent_path = None for vhd_path in reversed(files_to_move): if parent_path: # Link to parent modify_cmd = ["vhd-util", "modify", "-n", vhd_path, "-p", parent_path] run_command(modify_cmd) parent_path = vhd_path # Sanity check the leaf VHD _assert_vhd_not_hidden(leaf_vhd_path) _validate_vdi_chain(leaf_vhd_path) # Move files into SR for orig_path in files_to_move: new_path = os.path.join(sr_path, os.path.basename(orig_path)) _rename(orig_path, new_path) imported_vhds = dict(root=dict(uuid=leaf_vhd_uuid)) return imported_vhds def prepare_staging_area(sr_path, staging_path, vdi_uuids, seq_num=0): """Hard-link VHDs into staging area.""" for vdi_uuid in vdi_uuids: source = os.path.join(sr_path, "%s.vhd" % vdi_uuid) link_name = os.path.join(staging_path, "%d.vhd" % seq_num) _link(source, link_name) seq_num += 1 def create_tarball(fileobj, path, callback=None, compression_level=None): """Create a tarball from a given path. :param fileobj: a file-like object holding the tarball byte-stream. If None, then only the callback will be used. :param path: path to create tarball from :param callback: optional callback to call on each chunk written :param compression_level: compression level, e.g., 9 for gzip -9. """ tar_cmd = ["tar", "-zc", "--directory=%s" % path, "."] env = os.environ.copy() if compression_level and 1 <= compression_level <= 9: env["GZIP"] = "-%d" % compression_level tar_proc = make_subprocess(tar_cmd, stdout=True, stderr=True, env=env) while True: chunk = tar_proc.stdout.read(CHUNK_SIZE) if chunk == '': break if callback: callback(chunk) if fileobj: fileobj.write(chunk) finish_subprocess(tar_proc, tar_cmd) def extract_tarball(fileobj, path, callback=None): """Extract a tarball to a given path. :param fileobj: a file-like object holding the tarball byte-stream :param path: path to extract tarball into :param callback: optional callback to call on each chunk read """ tar_cmd = ["tar", "-zx", "--directory=%s" % path] tar_proc = make_subprocess(tar_cmd, stderr=True, stdin=True) while True: chunk = fileobj.read(CHUNK_SIZE) if chunk == '': break if callback: callback(chunk) tar_proc.stdin.write(chunk) finish_subprocess(tar_proc, tar_cmd) def _handle_serialization(func): def wrapped(session, params): params = pickle.loads(params['params']) rv = func(session, *params['args'], **params['kwargs']) return pickle.dumps(rv) return wrapped def register_plugin_calls(*funcs): """Wrapper around XenAPIPlugin.dispatch which handles pickle serialization. """ wrapped_dict = {} for func in funcs: wrapped_dict[func.__name__] = _handle_serialization(func) XenAPIPlugin.dispatch(wrapped_dict) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/kernel0000775000175400017540000001044512323721477025531 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # Copyright (c) 2010 Citrix Systems, Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Handle the manipulation of kernel images.""" import errno import os import shutil import XenAPIPlugin import pluginlib_nova pluginlib_nova.configure_logging('kernel') logging = pluginlib_nova.logging exists = pluginlib_nova.exists optional = pluginlib_nova.optional with_vdi_in_dom0 = pluginlib_nova.with_vdi_in_dom0 KERNEL_DIR = '/boot/guest' def _copy_vdi(dest, copy_args): vdi_uuid = copy_args['vdi_uuid'] vdi_size = copy_args['vdi_size'] cached_image = copy_args['cached-image'] logging.debug("copying kernel/ramdisk file from %s to /boot/guest/%s", dest, vdi_uuid) filename = KERNEL_DIR + '/' + vdi_uuid # Make sure KERNEL_DIR exists, otherwise create it if not os.path.isdir(KERNEL_DIR): logging.debug("Creating directory %s", KERNEL_DIR) os.makedirs(KERNEL_DIR) # Read data from /dev/ and write into a file on /boot/guest of = open(filename, 'wb') f = open(dest, 'rb') # Copy only vdi_size bytes data = f.read(vdi_size) of.write(data) if cached_image: # Create a cache file. If caching is enabled, kernel images do not have # to be fetched from glance. cached_image = KERNEL_DIR + '/' + cached_image logging.debug("copying kernel/ramdisk file from %s to /boot/guest/%s", dest, cached_image) cache_file = open(cached_image, 'wb') cache_file.write(data) cache_file.close() logging.debug("Done. Filename: %s", cached_image) f.close() of.close() logging.debug("Done. Filename: %s", filename) return filename def copy_vdi(session, args): vdi = exists(args, 'vdi-ref') size = exists(args, 'image-size') cached_image = optional(args, 'cached-image') # Use the uuid as a filename vdi_uuid = session.xenapi.VDI.get_uuid(vdi) copy_args = {'vdi_uuid': vdi_uuid, 'vdi_size': int(size), 'cached-image': cached_image} filename = with_vdi_in_dom0(session, vdi, False, lambda dev: _copy_vdi('/dev/%s' % dev, copy_args)) return filename def create_kernel_ramdisk(session, args): """Creates a copy of the kernel/ramdisk image if it is present in the cache. If the image is not present in the cache, it does nothing. """ cached_image = exists(args, 'cached-image') image_uuid = exists(args, 'new-image-uuid') cached_image_filename = KERNEL_DIR + '/' + cached_image filename = KERNEL_DIR + '/' + image_uuid if os.path.isfile(cached_image_filename): shutil.copyfile(cached_image_filename, filename) logging.debug("Done. Filename: %s", filename) else: filename = "" logging.debug("Cached kernel/ramdisk image not found") return filename def _remove_file(filepath): try: os.remove(filepath) except OSError, exc: if exc.errno != errno.ENOENT: raise def remove_kernel_ramdisk(session, args): """Removes kernel and/or ramdisk from dom0's file system.""" kernel_file = optional(args, 'kernel-file') ramdisk_file = optional(args, 'ramdisk-file') if kernel_file: _remove_file(kernel_file) if ramdisk_file: _remove_file(ramdisk_file) return "ok" if __name__ == '__main__': XenAPIPlugin.dispatch({'copy_vdi': copy_vdi, 'create_kernel_ramdisk': create_kernel_ramdisk, 'remove_kernel_ramdisk': remove_kernel_ramdisk}) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/migration0000775000175400017540000000475112323721477026245 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ XenAPI Plugin for transferring data between host nodes """ import utils import pluginlib_nova pluginlib_nova.configure_logging('migration') logging = pluginlib_nova.logging def move_vhds_into_sr(session, instance_uuid, sr_path, uuid_stack): """Moves the VHDs from their copied location to the SR.""" staging_path = "/images/instance%s" % instance_uuid imported_vhds = utils.import_vhds(sr_path, staging_path, uuid_stack) utils.cleanup_staging_area(staging_path) return imported_vhds def _rsync_vhds(instance_uuid, host, staging_path, user="root"): ssh_cmd = 'ssh -o StrictHostKeyChecking=no' if not staging_path.endswith('/'): staging_path += '/' dest_path = '%s@%s:/images/instance%s/' % (user, host, instance_uuid) rsync_cmd = ["/usr/bin/rsync", "-av", "--progress", "-e", ssh_cmd, staging_path, dest_path] # NOTE(hillad): rsync's progress is carriage returned, requiring # universal_newlines for real-time output. rsync_proc = utils.make_subprocess(rsync_cmd, stdout=True, stderr=True, universal_newlines=True) while True: rsync_progress = rsync_proc.stdout.readline() if not rsync_progress: break logging.debug("[%s] %s" % (instance_uuid, rsync_progress)) utils.finish_subprocess(rsync_proc, rsync_cmd) def transfer_vhd(session, instance_uuid, host, vdi_uuid, sr_path, seq_num): """Rsyncs a VHD to an adjacent host.""" staging_path = utils.make_staging_area(sr_path) try: utils.prepare_staging_area( sr_path, staging_path, [vdi_uuid], seq_num=seq_num) _rsync_vhds(instance_uuid, host, staging_path) finally: utils.cleanup_staging_area(staging_path) if __name__ == '__main__': utils.register_plugin_calls(move_vhds_into_sr, transfer_vhd) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance0000775000175400017540000002300312323721510025460 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # Copyright (c) 2010 Citrix Systems, Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Handle the uploading and downloading of images via Glance.""" import httplib import md5 import socket import urllib2 import utils import pluginlib_nova pluginlib_nova.configure_logging('glance') logging = pluginlib_nova.logging PluginError = pluginlib_nova.PluginError DEFAULT_SOCKET_TIMEOUT_SECONDS = 60 class RetryableError(Exception): pass def _download_tarball_and_verify(request, staging_path): # NOTE(johngarbutt) to ensure the script does not hang # if we lose connection to glance we add a default socket # The default is to never timeout. socket.setdefaulttimeout(DEFAULT_SOCKET_TIMEOUT_SECONDS) try: response = urllib2.urlopen(request) except urllib2.HTTPError, error: raise RetryableError(error) except urllib2.URLError, error: raise RetryableError(error) except httplib.HTTPException, error: # httplib.HTTPException and derivatives (BadStatusLine in particular) # don't have a useful __repr__ or __str__ raise RetryableError('%s: %s' % (error.__class__.__name__, error)) url = request.get_full_url() logging.info("Reading image data from %s" % url) callback_data = {'bytes_read': 0} checksum = md5.new() def update_md5(chunk): callback_data['bytes_read'] += len(chunk) checksum.update(chunk) try: try: utils.extract_tarball(response, staging_path, callback=update_md5) except Exception, error: raise RetryableError(error) finally: bytes_read = callback_data['bytes_read'] logging.info("Read %d bytes from %s", bytes_read, url) # Use ETag if available, otherwise X-Image-Meta-Checksum etag = response.info().getheader('etag', None) if etag is None: etag = response.info().getheader('x-image-meta-checksum', None) # Verify checksum using ETag checksum = checksum.hexdigest() if etag is None: msg = "No ETag found for comparison to checksum %(checksum)s" logging.info(msg % locals()) elif checksum != etag: msg = 'ETag %(etag)s does not match computed md5sum %(checksum)s' raise RetryableError(msg % locals()) else: msg = "Verified image checksum %(checksum)s" logging.info(msg % locals()) def _download_tarball(sr_path, staging_path, image_id, glance_host, glance_port, glance_use_ssl, extra_headers): """Download the tarball image from Glance and extract it into the staging area. Retry if there is any failure. """ if glance_use_ssl: scheme = 'https' else: scheme = 'http' url = ("%(scheme)s://%(glance_host)s:%(glance_port)d/v1/images/" "%(image_id)s" % locals()) logging.info("Downloading %s" % url) request = urllib2.Request(url, headers=extra_headers) try: _download_tarball_and_verify(request, staging_path) except Exception: logging.exception('Failed to retrieve %(url)s' % locals()) raise def _upload_tarball(staging_path, image_id, glance_host, glance_port, glance_use_ssl, extra_headers, properties): """ Create a tarball of the image and then stream that into Glance using chunked-transfer-encoded HTTP. """ if glance_use_ssl: scheme = 'https' else: scheme = 'http' url = '%s://%s:%s/v1/images/%s' % (scheme, glance_host, glance_port, image_id) logging.info("Writing image data to %s" % url) try: if glance_use_ssl: conn = httplib.HTTPSConnection(glance_host, glance_port) else: conn = httplib.HTTPConnection(glance_host, glance_port) except Exception, error: raise RetryableError(error) try: try: # NOTE(sirp): httplib under python2.4 won't accept # a file-like object to request conn.putrequest('PUT', '/v1/images/%s' % image_id) except Exception, error: raise RetryableError(error) # NOTE(sirp): There is some confusion around OVF. Here's a summary of # where we currently stand: # 1. OVF as a container format is misnamed. We really should be using # OVA since that is the name for the container format; OVF is the # standard applied to the manifest file contained within. # 2. We're currently uploading a vanilla tarball. In order to be # OVF/OVA compliant, we'll need to embed a minimal OVF manifest # as the first file. # NOTE(dprince): In order to preserve existing Glance properties # we set X-Glance-Registry-Purge-Props on this request. headers = { 'content-type': 'application/octet-stream', 'transfer-encoding': 'chunked', 'x-image-meta-is-public': 'False', 'x-image-meta-status': 'queued', 'x-image-meta-disk-format': 'vhd', 'x-image-meta-container-format': 'ovf', 'x-glance-registry-purge-props': 'False'} headers.update(**extra_headers) for key, value in properties.iteritems(): header_key = "x-image-meta-property-%s" % key.replace('_', '-') headers[header_key] = str(value) for header, value in headers.iteritems(): conn.putheader(header, value) conn.endheaders() callback_data = {'bytes_written': 0} def send_chunked_transfer_encoded(chunk): chunk_len = len(chunk) callback_data['bytes_written'] += chunk_len try: conn.send("%x\r\n%s\r\n" % (chunk_len, chunk)) except Exception, error: raise RetryableError(error) compression_level = properties.get('xenapi_image_compression_level') utils.create_tarball( None, staging_path, callback=send_chunked_transfer_encoded, compression_level=compression_level) try: conn.send("0\r\n\r\n") # Chunked-Transfer terminator except Exception, error: raise RetryableError(error) bytes_written = callback_data['bytes_written'] logging.info("Wrote %d bytes to %s" % (bytes_written, url)) resp = conn.getresponse() if resp.status == httplib.OK: return logging.error("Unexpected response while writing image data to %s: " "Response Status: %i, Response body: %s" % (url, resp.status, resp.read())) if resp.status in (httplib.UNAUTHORIZED, httplib.REQUEST_ENTITY_TOO_LARGE, httplib.PRECONDITION_FAILED, httplib.CONFLICT, httplib.FORBIDDEN): # No point in retrying for these conditions raise PluginError("Got Error response [%i] while uploading " "image [%s] " "to glance host [%s:%s]" % (resp.status, image_id, glance_host, glance_port)) else: raise RetryableError("Unexpected response [%i] while uploading " "image [%s] " "to glance host [%s:%s]" % (resp.status, image_id, glance_host, glance_port)) finally: conn.close() def download_vhd(session, image_id, glance_host, glance_port, glance_use_ssl, uuid_stack, sr_path, extra_headers): """Download an image from Glance, unbundle it, and then deposit the VHDs into the storage repository """ staging_path = utils.make_staging_area(sr_path) try: # Download tarball into staging area and extract it _download_tarball( sr_path, staging_path, image_id, glance_host, glance_port, glance_use_ssl, extra_headers) # Move the VHDs from the staging area into the storage repository return utils.import_vhds(sr_path, staging_path, uuid_stack) finally: utils.cleanup_staging_area(staging_path) def upload_vhd(session, vdi_uuids, image_id, glance_host, glance_port, glance_use_ssl, sr_path, extra_headers, properties): """Bundle the VHDs comprising an image and then stream them into Glance. """ staging_path = utils.make_staging_area(sr_path) try: utils.prepare_staging_area(sr_path, staging_path, vdi_uuids) _upload_tarball(staging_path, image_id, glance_host, glance_port, glance_use_ssl, extra_headers, properties) finally: utils.cleanup_staging_area(staging_path) if __name__ == '__main__': utils.register_plugin_calls(download_vhd, upload_vhd) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/agent0000775000175400017540000002100112323721477025335 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # XenAPI plugin for reading/writing information to xenstore # import base64 import commands try: import json except ImportError: import simplejson as json import time import XenAPIPlugin import pluginlib_nova pluginlib_nova.configure_logging("agent") import xenstore DEFAULT_TIMEOUT = 30 PluginError = pluginlib_nova.PluginError _ = pluginlib_nova._ class TimeoutError(StandardError): pass def version(self, arg_dict): """Get version of agent.""" timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) arg_dict["value"] = json.dumps({"name": "version", "value": "agent"}) request_id = arg_dict["id"] arg_dict["path"] = "data/host/%s" % request_id xenstore.write_record(self, arg_dict) try: resp = _wait_for_agent(self, request_id, arg_dict, timeout) except TimeoutError, e: raise PluginError(e) return resp def key_init(self, arg_dict): """Handles the Diffie-Hellman key exchange with the agent to establish the shared secret key used to encrypt/decrypt sensitive info to be passed, such as passwords. Returns the shared secret key value. """ timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) # WARNING: Some older Windows agents will crash if the public key isn't # a string pub = arg_dict["pub"] arg_dict["value"] = json.dumps({"name": "keyinit", "value": pub}) request_id = arg_dict["id"] arg_dict["path"] = "data/host/%s" % request_id xenstore.write_record(self, arg_dict) try: resp = _wait_for_agent(self, request_id, arg_dict, timeout) except TimeoutError, e: raise PluginError(e) return resp def password(self, arg_dict): """Writes a request to xenstore that tells the agent to set the root password for the given VM. The password should be encrypted using the shared secret key that was returned by a previous call to key_init. The encrypted password value should be passed as the value for the 'enc_pass' key in arg_dict. """ timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) enc_pass = arg_dict["enc_pass"] arg_dict["value"] = json.dumps({"name": "password", "value": enc_pass}) request_id = arg_dict["id"] arg_dict["path"] = "data/host/%s" % request_id xenstore.write_record(self, arg_dict) try: resp = _wait_for_agent(self, request_id, arg_dict, timeout) except TimeoutError, e: raise PluginError(e) return resp def resetnetwork(self, arg_dict): """Writes a resquest to xenstore that tells the agent to reset networking. """ timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) arg_dict['value'] = json.dumps({'name': 'resetnetwork', 'value': ''}) request_id = arg_dict['id'] arg_dict['path'] = "data/host/%s" % request_id xenstore.write_record(self, arg_dict) try: resp = _wait_for_agent(self, request_id, arg_dict, timeout) except TimeoutError, e: raise PluginError(e) return resp def inject_file(self, arg_dict): """Expects a file path and the contents of the file to be written. Both should be base64-encoded in order to eliminate errors as they are passed through the stack. Writes that information to xenstore for the agent, which will decode the file and intended path, and create it on the instance. The original agent munged both of these into a single entry; the new agent keeps them separate. We will need to test for the new agent, and write the xenstore records to match the agent version. We will also need to test to determine if the file injection method on the agent has been disabled, and raise a NotImplemented error if that is the case. """ timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) b64_path = arg_dict["b64_path"] b64_file = arg_dict["b64_contents"] request_id = arg_dict["id"] agent_features = _get_agent_features(self, arg_dict) if "file_inject" in agent_features: # New version of the agent. Agent should receive a 'value' # key whose value is a dictionary containing 'b64_path' and # 'b64_file'. See old version below. arg_dict["value"] = json.dumps({"name": "file_inject", "value": {"b64_path": b64_path, "b64_file": b64_file}}) elif "injectfile" in agent_features: # Old agent requires file path and file contents to be # combined into one base64 value. raw_path = base64.b64decode(b64_path) raw_file = base64.b64decode(b64_file) new_b64 = base64.b64encode("%s,%s" % (raw_path, raw_file)) arg_dict["value"] = json.dumps({"name": "injectfile", "value": new_b64}) else: # Either the methods don't exist in the agent, or they # have been disabled. raise NotImplementedError(_("NOT IMPLEMENTED: Agent does not" " support file injection.")) arg_dict["path"] = "data/host/%s" % request_id xenstore.write_record(self, arg_dict) try: resp = _wait_for_agent(self, request_id, arg_dict, timeout) except TimeoutError, e: raise PluginError(e) return resp def agent_update(self, arg_dict): """Expects an URL and md5sum of the contents, then directs the agent to update itself. """ timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) request_id = arg_dict["id"] url = arg_dict["url"] md5sum = arg_dict["md5sum"] arg_dict["value"] = json.dumps({"name": "agentupdate", "value": "%s,%s" % (url, md5sum)}) arg_dict["path"] = "data/host/%s" % request_id xenstore.write_record(self, arg_dict) try: resp = _wait_for_agent(self, request_id, arg_dict, timeout) except TimeoutError, e: raise PluginError(e) return resp def _get_agent_features(self, arg_dict): """Return an array of features that an agent supports.""" timeout = int(arg_dict.pop('timeout', DEFAULT_TIMEOUT)) tmp_id = commands.getoutput("uuidgen") dct = {} dct.update(arg_dict) dct["value"] = json.dumps({"name": "features", "value": ""}) dct["path"] = "data/host/%s" % tmp_id xenstore.write_record(self, dct) try: resp = _wait_for_agent(self, tmp_id, dct, timeout) except TimeoutError, e: raise PluginError(e) response = json.loads(resp) if response['returncode'] != 0: return response["message"].split(",") else: return {} def _wait_for_agent(self, request_id, arg_dict, timeout): """Periodically checks xenstore for a response from the agent. The request is always written to 'data/host/{id}', and the agent's response for that request will be in 'data/guest/{id}'. If no value appears from the agent within the timeout specified, the original request is deleted and a TimeoutError is raised. """ arg_dict["path"] = "data/guest/%s" % request_id arg_dict["ignore_missing_path"] = True start = time.time() while time.time() - start < timeout: ret = xenstore.read_record(self, arg_dict) # Note: the response for None with be a string that includes # double quotes. if ret != '"None"': # The agent responded return ret time.sleep(.5) # No response within the timeout period; bail out # First, delete the request record arg_dict["path"] = "data/host/%s" % request_id xenstore.delete_record(self, arg_dict) raise TimeoutError(_("TIMEOUT: No response from agent within" " %s seconds.") % timeout) if __name__ == "__main__": XenAPIPlugin.dispatch( {"version": version, "key_init": key_init, "password": password, "resetnetwork": resetnetwork, "inject_file": inject_file, "agentupdate": agent_update}) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/pluginlib_nova.py0000664000175400017540000001126512323721477027706 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 Citrix Systems, 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. # # Helper functions for the Nova xapi plugins. In time, this will merge # with the pluginlib.py shipped with xapi, but for now, that file is not # very stable, so it's easiest just to have a copy of all the functions # that we need. # import gettext import logging import logging.handlers import time import XenAPI translations = gettext.translation('nova', fallback=True) _ = translations.ugettext ##### Logging setup def configure_logging(name): log = logging.getLogger() log.setLevel(logging.DEBUG) sysh = logging.handlers.SysLogHandler('/dev/log') sysh.setLevel(logging.DEBUG) formatter = logging.Formatter('%s: %%(levelname)-8s %%(message)s' % name) sysh.setFormatter(formatter) log.addHandler(sysh) ##### Exceptions class PluginError(Exception): """Base Exception class for all plugin errors.""" def __init__(self, *args): Exception.__init__(self, *args) class ArgumentError(PluginError): """Raised when required arguments are missing, argument values are invalid, or incompatible arguments are given. """ def __init__(self, *args): PluginError.__init__(self, *args) ##### Argument validation def exists(args, key): """Validates that a freeform string argument to a RPC method call is given. Returns the string. """ if key in args: return args[key] else: raise ArgumentError(_('Argument %s is required.') % key) def optional(args, key): """If the given key is in args, return the corresponding value, otherwise return None """ return key in args and args[key] or None def _get_domain_0(session): this_host_ref = session.xenapi.session.get_this_host(session.handle) expr = 'field "is_control_domain" = "true" and field "resident_on" = "%s"' expr = expr % this_host_ref return session.xenapi.VM.get_all_records_where(expr).keys()[0] def with_vdi_in_dom0(session, vdi, read_only, f): dom0 = _get_domain_0(session) vbd_rec = {} vbd_rec['VM'] = dom0 vbd_rec['VDI'] = vdi vbd_rec['userdevice'] = 'autodetect' vbd_rec['bootable'] = False vbd_rec['mode'] = read_only and 'RO' or 'RW' vbd_rec['type'] = 'disk' vbd_rec['unpluggable'] = True vbd_rec['empty'] = False vbd_rec['other_config'] = {} vbd_rec['qos_algorithm_type'] = '' vbd_rec['qos_algorithm_params'] = {} vbd_rec['qos_supported_algorithms'] = [] logging.debug(_('Creating VBD for VDI %s ... '), vdi) vbd = session.xenapi.VBD.create(vbd_rec) logging.debug(_('Creating VBD for VDI %s done.'), vdi) try: logging.debug(_('Plugging VBD %s ... '), vbd) session.xenapi.VBD.plug(vbd) logging.debug(_('Plugging VBD %s done.'), vbd) return f(session.xenapi.VBD.get_device(vbd)) finally: logging.debug(_('Destroying VBD for VDI %s ... '), vdi) _vbd_unplug_with_retry(session, vbd) try: session.xenapi.VBD.destroy(vbd) except XenAPI.Failure, e: # noqa logging.error(_('Ignoring XenAPI.Failure %s'), e) logging.debug(_('Destroying VBD for VDI %s done.'), vdi) def _vbd_unplug_with_retry(session, vbd): """Call VBD.unplug on the given VBD, with a retry if we get DEVICE_DETACH_REJECTED. For reasons which I don't understand, we're seeing the device still in use, even when all processes using the device should be dead. """ while True: try: session.xenapi.VBD.unplug(vbd) logging.debug(_('VBD.unplug successful first time.')) return except XenAPI.Failure, e: # noqa if (len(e.details) > 0 and e.details[0] == 'DEVICE_DETACH_REJECTED'): logging.debug(_('VBD.unplug rejected: retrying...')) time.sleep(1) elif (len(e.details) > 0 and e.details[0] == 'DEVICE_ALREADY_DETACHED'): logging.debug(_('VBD.unplug successful eventually.')) return else: logging.error(_('Ignoring XenAPI.Failure in VBD.unplug: %s'), e) return nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/console0000775000175400017540000000463412323721477025716 0ustar jenkinsjenkins00000000000000#!/usr/bin/python # 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. """ To configure this plugin, you must set the following xenstore key: /local/logconsole/@ = "/var/log/xen/guest/console.%d" This can be done by running: xenstore-write /local/logconsole/@ "/var/log/xen/guest/console.%d" WARNING: You should ensure appropriate log rotation to ensure guests are not able to consume too much Dom0 disk space, and equally should not be able to stop other guests from logging. Adding and removing the following xenstore key will reopen the log, as will be required after a log rotate: /local/logconsole/ """ import base64 import logging import zlib import XenAPIPlugin import pluginlib_nova pluginlib_nova.configure_logging("console") CONSOLE_LOG_DIR = '/var/log/xen/guest' CONSOLE_LOG_FILE_PATTERN = CONSOLE_LOG_DIR + '/console.%d' MAX_CONSOLE_BYTES = 102400 SEEK_SET = 0 SEEK_END = 2 def _last_bytes(file_like_object): try: file_like_object.seek(-MAX_CONSOLE_BYTES, SEEK_END) except IOError, e: if e.errno == 22: file_like_object.seek(0, SEEK_SET) else: raise return file_like_object.read() def get_console_log(session, arg_dict): try: raw_dom_id = arg_dict['dom_id'] except KeyError: raise pluginlib_nova.PluginError("Missing dom_id") try: dom_id = int(raw_dom_id) except ValueError: raise pluginlib_nova.PluginError("Invalid dom_id") logfile = open(CONSOLE_LOG_FILE_PATTERN % dom_id, 'rb') try: try: log_content = _last_bytes(logfile) except IOError, e: msg = "Error reading console: %s" % e logging.debug(msg) raise pluginlib_nova.PluginError(msg) finally: logfile.close() return base64.b64encode(zlib.compress(log_content)) if __name__ == "__main__": XenAPIPlugin.dispatch({"get_console_log": get_console_log}) nova-2014.1/plugins/xenserver/xenapi/etc/xapi.d/plugins/bandwidth0000775000175400017540000000303112323721477026206 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Fetch Bandwidth data from VIF network devices.""" import utils import pluginlib_nova pluginlib_nova.configure_logging('bandwidth') def _read_proc_net(): devs = [l.strip() for l in open('/proc/net/dev', 'r').readlines()] #ignore headers devs = devs[2:] dlist = [d.split(':', 1) for d in devs if d.startswith('vif')] devmap = dict() for name, stats in dlist: slist = stats.split() dom, vifnum = name[3:].split('.', 1) dev = devmap.get(dom, {}) # Note, we deliberately swap in and out, as instance traffic # shows up inverted due to going though the bridge. (mdragon) dev[vifnum] = dict(bw_in=int(slist[8]), bw_out=int(slist[0])) devmap[dom] = dev return devmap def fetch_all_bandwidth(session): return _read_proc_net() if __name__ == '__main__': utils.register_plugin_calls(fetch_all_bandwidth) nova-2014.1/plugins/xenserver/networking/0000775000175400017540000000000012323722546021601 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/0000775000175400017540000000000012323722546022354 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/xensource/0000775000175400017540000000000012323722546024367 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/xensource/scripts/0000775000175400017540000000000012323722546026056 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/xensource/scripts/ovs_configure_base_flows.py0000775000175400017540000000526612323721477033522 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ This script is used to configure base openvswitch flows for XenServer hosts. """ import os import sys import novalib # noqa def main(command, phys_dev_name): ovs_ofctl = lambda *rule: novalib.execute('/usr/bin/ovs-ofctl', *rule) bridge_name = novalib.execute_get_output('/usr/bin/ovs-vsctl', 'iface-to-br', phys_dev_name) # always clear all flows first ovs_ofctl('del-flows', bridge_name) if command in ('online', 'reset'): pnic_ofport = novalib.execute_get_output('/usr/bin/ovs-vsctl', 'get', 'Interface', phys_dev_name, 'ofport') # these flows are lower priority than all VM-specific flows. # allow all traffic from the physical NIC, as it is trusted (i.e., # from a filtered vif, or from the physical infrastructure) ovs_ofctl('add-flow', bridge_name, "priority=2,in_port=%s,actions=normal" % pnic_ofport) # Allow traffic from dom0 if there is a management interface # present (its IP address is on the bridge itself) bridge_addr = novalib.execute_get_output('/sbin/ip', '-o', '-f', 'inet', 'addr', 'show', bridge_name) if bridge_addr != '': ovs_ofctl('add-flow', bridge_name, "priority=2,in_port=LOCAL,actions=normal") # default drop ovs_ofctl('add-flow', bridge_name, 'priority=1,actions=drop') if __name__ == "__main__": if len(sys.argv) != 3 or sys.argv[1] not in ('online', 'offline', 'reset'): print(sys.argv) script_name = os.path.basename(sys.argv[0]) print("This script configures base ovs flows.") print("usage: %s [online|offline|reset] phys-dev-name" % script_name) print(" ex: %s online eth0" % script_name) sys.exit(1) else: command, phys_dev_name = sys.argv[1:3] main(command, phys_dev_name) nova-2014.1/plugins/xenserver/networking/etc/xensource/scripts/ovs_configure_vif_flows.py0000775000175400017540000002414112323721477033365 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ This script is used to configure openvswitch flows on XenServer hosts. """ import os import sys # This is written to Python 2.4, since that is what is available on XenServer import netaddr import simplejson as json import novalib # noqa OVS_OFCTL = '/usr/bin/ovs-ofctl' class OvsFlow(object): def __init__(self, bridge, params): self.bridge = bridge self.params = params def add(self, rule): novalib.execute(OVS_OFCTL, 'add-flow', self.bridge, rule % self.params) def clear_flows(self, ofport): novalib.execute(OVS_OFCTL, 'del-flows', self.bridge, "in_port=%s" % ofport) def main(command, vif_raw, net_type): if command not in ('online', 'offline'): return vif_name, dom_id, vif_index = vif_raw.split('-') vif = "%s%s.%s" % (vif_name, dom_id, vif_index) bridge = novalib.execute_get_output('/usr/bin/ovs-vsctl', 'iface-to-br', vif) xsls = novalib.execute_get_output('/usr/bin/xenstore-ls', '/local/domain/%s/vm-data/networking' % dom_id) macs = [line.split("=")[0].strip() for line in xsls.splitlines()] for mac in macs: xsread = novalib.execute_get_output('/usr/bin/xenstore-read', '/local/domain/%s/vm-data/networking/%s' % (dom_id, mac)) data = json.loads(xsread) if data["label"] == "public": this_vif = "vif%s.0" % dom_id phys_dev = "eth0" else: this_vif = "vif%s.1" % dom_id phys_dev = "eth1" if vif == this_vif: vif_ofport = novalib.execute_get_output('/usr/bin/ovs-vsctl', 'get', 'Interface', vif, 'ofport') phys_ofport = novalib.execute_get_output('/usr/bin/ovs-vsctl', 'get', 'Interface', phys_dev, 'ofport') params = dict(VIF_NAME=vif, MAC=data['mac'], OF_PORT=vif_ofport, PHYS_PORT=phys_ofport) ovs = OvsFlow(bridge, params) if command == 'offline': # I haven't found a way to clear only IPv4 or IPv6 rules. ovs.clear_flows(vif_ofport) if command == 'online': if net_type in ('ipv4', 'all') and 'ips' in data: for ip4 in data['ips']: ovs.params.update({'IPV4_ADDR': ip4['ip']}) apply_ovs_ipv4_flows(ovs, bridge, params) if net_type in ('ipv6', 'all') and 'ip6s' in data: for ip6 in data['ip6s']: mac_eui64 = netaddr.EUI(data['mac']).eui64() link_local = str(mac_eui64.ipv6_link_local()) ovs.params.update({'IPV6_LINK_LOCAL_ADDR': link_local}) ovs.params.update({'IPV6_GLOBAL_ADDR': ip6['ip']}) apply_ovs_ipv6_flows(ovs, bridge, params) def apply_ovs_ipv4_flows(ovs, bridge, params): # When ARP traffic arrives from a vif, push it to virtual port # 9999 for further processing ovs.add("priority=4,arp,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "nw_src=%(IPV4_ADDR)s,arp_sha=%(MAC)s,actions=resubmit:9999") ovs.add("priority=4,arp,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "nw_src=0.0.0.0,arp_sha=%(MAC)s,actions=resubmit:9999") # When IP traffic arrives from a vif, push it to virtual port 9999 # for further processing ovs.add("priority=4,ip,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "nw_src=%(IPV4_ADDR)s,actions=resubmit:9999") # Drop IP bcast/mcast ovs.add("priority=6,ip,in_port=%(OF_PORT)s,dl_dst=ff:ff:ff:ff:ff:ff," "actions=drop") ovs.add("priority=5,ip,in_port=%(OF_PORT)s,nw_dst=224.0.0.0/4," "actions=drop") ovs.add("priority=5,ip,in_port=%(OF_PORT)s,nw_dst=240.0.0.0/4," "actions=drop") # Pass ARP requests coming from any VMs on the local HV (port # 9999) or coming from external sources (PHYS_PORT) to the VM and # physical NIC. We output this to the physical NIC as well, since # with instances of shared ip groups, the active host for the # destination IP might be elsewhere... ovs.add("priority=3,arp,in_port=9999,nw_dst=%(IPV4_ADDR)s," "actions=output:%(OF_PORT)s,output:%(PHYS_PORT)s") # Pass ARP traffic originating from external sources the VM with # the matching IP address ovs.add("priority=3,arp,in_port=%(PHYS_PORT)s,nw_dst=%(IPV4_ADDR)s," "actions=output:%(OF_PORT)s") # Pass ARP traffic from one VM (src mac already validated) to # another VM on the same HV ovs.add("priority=3,arp,in_port=9999,dl_dst=%(MAC)s," "actions=output:%(OF_PORT)s") # Pass ARP replies coming from the external environment to the # target VM ovs.add("priority=3,arp,in_port=%(PHYS_PORT)s,dl_dst=%(MAC)s," "actions=output:%(OF_PORT)s") # ALL IP traffic: Pass IP data coming from any VMs on the local HV # (port 9999) or coming from external sources (PHYS_PORT) to the # VM and physical NIC. We output this to the physical NIC as # well, since with instances of shared ip groups, the active host # for the destination IP might be elsewhere... ovs.add("priority=3,ip,in_port=9999,dl_dst=%(MAC)s," "nw_dst=%(IPV4_ADDR)s,actions=output:%(OF_PORT)s," "output:%(PHYS_PORT)s") # Pass IP traffic from the external environment to the VM ovs.add("priority=3,ip,in_port=%(PHYS_PORT)s,dl_dst=%(MAC)s," "nw_dst=%(IPV4_ADDR)s,actions=output:%(OF_PORT)s") # Send any local traffic to the physical NIC's OVS port for # physical network learning ovs.add("priority=2,in_port=9999,actions=output:%(PHYS_PORT)s") def apply_ovs_ipv6_flows(ovs, bridge, params): # allow valid IPv6 ND outbound (are both global and local IPs needed?) # Neighbor Solicitation ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,icmp_type=135,nd_sll=%(MAC)s," "actions=normal") ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,icmp_type=135,actions=normal") ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,icmp_type=135,nd_sll=%(MAC)s," "actions=normal") ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,icmp_type=135,actions=normal") # Neighbor Advertisement ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,icmp_type=136," "nd_target=%(IPV6_LINK_LOCAL_ADDR)s,actions=normal") ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,icmp_type=136,actions=normal") ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,icmp_type=136," "nd_target=%(IPV6_GLOBAL_ADDR)s,actions=normal") ovs.add("priority=6,in_port=%(OF_PORT)s,dl_src=%(MAC)s,icmp6," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,icmp_type=136,actions=normal") # drop all other neighbor discovery (req b/c we permit all icmp6 below) ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=135,actions=drop") ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=136,actions=drop") # do not allow sending specifc ICMPv6 types # Router Advertisement ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=134,actions=drop") # Redirect Gateway ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=137,actions=drop") # Mobile Prefix Solicitation ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=146,actions=drop") # Mobile Prefix Advertisement ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=147,actions=drop") # Multicast Router Advertisement ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=151,actions=drop") # Multicast Router Solicitation ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=152,actions=drop") # Multicast Router Termination ovs.add("priority=5,in_port=%(OF_PORT)s,icmp6,icmp_type=153,actions=drop") # allow valid IPv6 outbound, by type ovs.add("priority=4,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,icmp6,actions=normal") ovs.add("priority=4,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,icmp6,actions=normal") ovs.add("priority=4,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,tcp6,actions=normal") ovs.add("priority=4,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,tcp6,actions=normal") ovs.add("priority=4,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "ipv6_src=%(IPV6_GLOBAL_ADDR)s,udp6,actions=normal") ovs.add("priority=4,in_port=%(OF_PORT)s,dl_src=%(MAC)s," "ipv6_src=%(IPV6_LINK_LOCAL_ADDR)s,udp6,actions=normal") # all else will be dropped ... if __name__ == "__main__": if len(sys.argv) != 4: print ("usage: %s [online|offline] vif-domid-idx [ipv4|ipv6|all] " % os.path.basename(sys.argv[0])) sys.exit(1) else: command, vif_raw, net_type = sys.argv[1:4] main(command, vif_raw, net_type) nova-2014.1/plugins/xenserver/networking/etc/xensource/scripts/vif_5.6-fp1.patch0000664000175400017540000000120112323721477030733 0ustar jenkinsjenkins00000000000000--- vif 2010-12-20 16:39:46.000000000 +0000 +++ vif_modified 2010-11-19 23:24:37.000000000 +0000 @@ -213,6 +213,7 @@ # xs-xen.pq.hq:91e986b8e49f netback-wait-for-hotplug xenstore-write "/local/domain/0/backend/vif/${DOMID}/${DEVID}/hotplug-status" "connected" + python /etc/xensource/scripts/vif_rules.py ${DOMID} online 2>&1 > /dev/null fi ;; @@ -224,6 +225,7 @@ remove) if [ "${TYPE}" = "vif" ] ;then + python /etc/xensource/scripts/vif_rules.py ${DOMID} offline 2>&1 > /dev/null xenstore-rm "${HOTPLUG}/hotplug" fi logger -t scripts-vif "${dev} has been removed" nova-2014.1/plugins/xenserver/networking/etc/xensource/scripts/vif_rules.py0000775000175400017540000001137212323721477030437 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2010-2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ This script is used to configure iptables, ebtables, and arptables rules on XenServer hosts. """ import os import sys # This is written to Python 2.4, since that is what is available on XenServer import simplejson as json import novalib # noqa def main(dom_id, command, only_this_vif=None): xsls = novalib.execute_get_output('/usr/bin/xenstore-ls', '/local/domain/%s/vm-data/networking' % dom_id) macs = [line.split("=")[0].strip() for line in xsls.splitlines()] for mac in macs: xsread = novalib.execute_get_output('/usr/bin/xenstore-read', '/local/domain/%s/vm-data/networking/%s' % (dom_id, mac)) data = json.loads(xsread) for ip in data['ips']: if data["label"] == "public": vif = "vif%s.0" % dom_id else: vif = "vif%s.1" % dom_id if (only_this_vif is None) or (vif == only_this_vif): params = dict(IP=ip['ip'], VIF=vif, MAC=data['mac']) apply_ebtables_rules(command, params) apply_arptables_rules(command, params) apply_iptables_rules(command, params) # A note about adding rules: # Whenever we add any rule to iptables, arptables or ebtables we first # delete the same rule to ensure the rule only exists once. def apply_iptables_rules(command, params): iptables = lambda *rule: novalib.execute('/sbin/iptables', *rule) iptables('-D', 'FORWARD', '-m', 'physdev', '--physdev-in', params['VIF'], '-s', params['IP'], '-j', 'ACCEPT') if command == 'online': iptables('-A', 'FORWARD', '-m', 'physdev', '--physdev-in', params['VIF'], '-s', params['IP'], '-j', 'ACCEPT') def apply_arptables_rules(command, params): arptables = lambda *rule: novalib.execute('/sbin/arptables', *rule) arptables('-D', 'FORWARD', '--opcode', 'Request', '--in-interface', params['VIF'], '--source-ip', params['IP'], '--source-mac', params['MAC'], '-j', 'ACCEPT') arptables('-D', 'FORWARD', '--opcode', 'Reply', '--in-interface', params['VIF'], '--source-ip', params['IP'], '--source-mac', params['MAC'], '-j', 'ACCEPT') if command == 'online': arptables('-A', 'FORWARD', '--opcode', 'Request', '--in-interface', params['VIF'], '--source-mac', params['MAC'], '-j', 'ACCEPT') arptables('-A', 'FORWARD', '--opcode', 'Reply', '--in-interface', params['VIF'], '--source-ip', params['IP'], '--source-mac', params['MAC'], '-j', 'ACCEPT') def apply_ebtables_rules(command, params): ebtables = lambda *rule: novalib.execute("/sbin/ebtables", *rule) ebtables('-D', 'FORWARD', '-p', '0806', '-o', params['VIF'], '--arp-ip-dst', params['IP'], '-j', 'ACCEPT') ebtables('-D', 'FORWARD', '-p', '0800', '-o', params['VIF'], '--ip-dst', params['IP'], '-j', 'ACCEPT') if command == 'online': ebtables('-A', 'FORWARD', '-p', '0806', '-o', params['VIF'], '--arp-ip-dst', params['IP'], '-j', 'ACCEPT') ebtables('-A', 'FORWARD', '-p', '0800', '-o', params['VIF'], '--ip-dst', params['IP'], '-j', 'ACCEPT') ebtables('-D', 'FORWARD', '-s', '!', params['MAC'], '-i', params['VIF'], '-j', 'DROP') if command == 'online': ebtables('-I', 'FORWARD', '1', '-s', '!', params['MAC'], '-i', params['VIF'], '-j', 'DROP') if __name__ == "__main__": if len(sys.argv) < 3: print ("usage: %s dom_id online|offline [vif]" % os.path.basename(sys.argv[0])) sys.exit(1) else: dom_id, command = sys.argv[1:3] vif = len(sys.argv) == 4 and sys.argv[3] or None main(dom_id, command, vif) nova-2014.1/plugins/xenserver/networking/etc/xensource/scripts/novalib.py0000664000175400017540000000236012323721477030065 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import subprocess def execute_get_output(*command): """Execute and return stdout.""" devnull = open(os.devnull, 'w') command = map(str, command) proc = subprocess.Popen(command, close_fds=True, stdout=subprocess.PIPE, stderr=devnull) devnull.close() stdout = proc.communicate()[0] return stdout.strip() def execute(*command): """Execute without returning stdout.""" devnull = open(os.devnull, 'w') command = map(str, command) subprocess.call(command, close_fds=True, stdout=devnull, stderr=devnull) devnull.close() nova-2014.1/plugins/xenserver/networking/etc/sysconfig/0000775000175400017540000000000012323722546024360 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/sysconfig/openvswitch-nova0000664000175400017540000000141212323721477027615 0ustar jenkinsjenkins00000000000000# The interfaces that you want to apply base OVS rules to. If this is # unspecified then rules are applied to all eth* interfaces, which is a good # default. # # If you are worried about the performance of having rules on interfaces # that aren't carrying tenant traffic, or you want to do something # custom, then here you can explicitly choose the interfaces that should have # rules applied. # # Note that if there is an IP address on the bridge in domain 0 (i.e. the # xenbrX interface) then a rule will be applied that allows traffic to it. # Make sure that this is what you want. If you don't want tenant traffic # to be able to reach domain 0 -- the usual case -- then you should have # tenant traffic and domain 0 on entirely separate bridges. #INTERFACES="eth0 eth1" nova-2014.1/plugins/xenserver/networking/etc/udev/0000775000175400017540000000000012323722546023317 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/udev/rules.d/0000775000175400017540000000000012323722546024673 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/udev/rules.d/xen-openvswitch-nova.rules0000664000175400017540000000040512323721477032052 0ustar jenkinsjenkins00000000000000SUBSYSTEM=="xen-backend", KERNEL=="vif*", RUN+="/etc/xensource/scripts/ovs_configure_vif_flows.py $env{ACTION} %k all" # is this one needed? #SUBSYSTEM=="net", KERNEL=="tap*", RUN+="/etc/xensource/scripts/ovs_configure_vif_flows.py $env{ACTION} %k all" nova-2014.1/plugins/xenserver/networking/etc/init.d/0000775000175400017540000000000012323722546023541 5ustar jenkinsjenkins00000000000000nova-2014.1/plugins/xenserver/networking/etc/init.d/host-rules0000775000175400017540000000542712323721477025606 0ustar jenkinsjenkins00000000000000#!/bin/bash # # host-rules Start/Stop the networking host rules # # chkconfig: 2345 85 15 # description: Networking Host Rules for Multi Tenancy Protections # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. IPTABLES=/sbin/iptables EBTABLES=/sbin/ebtables ARPTABLES=/sbin/arptables iptables-up() { $IPTABLES -P FORWARD DROP $IPTABLES -A FORWARD -m physdev --physdev-in eth0 -j ACCEPT $IPTABLES -A FORWARD -m physdev --physdev-in eth1 -j ACCEPT } ebtables-up() { $EBTABLES -P FORWARD DROP $EBTABLES -A FORWARD -o eth0 -j ACCEPT $EBTABLES -A FORWARD -o eth1 -j ACCEPT } arptables-up() { $ARPTABLES -P FORWARD DROP $ARPTABLES -A FORWARD --opcode Request --in-interface eth0 -j ACCEPT $ARPTABLES -A FORWARD --opcode Reply --in-interface eth0 -j ACCEPT $ARPTABLES -A FORWARD --opcode Request --in-interface eth1 -j ACCEPT $ARPTABLES -A FORWARD --opcode Reply --in-interface eth1 -j ACCEPT } iptables-down() { $IPTABLES -P FORWARD ACCEPT $IPTABLES -D FORWARD -m physdev --physdev-in eth0 -j ACCEPT $IPTABLES -D FORWARD -m physdev --physdev-in eth1 -j ACCEPT } ebtables-down() { $EBTABLES -P FORWARD ACCEPT $EBTABLES -D FORWARD -o eth0 -j ACCEPT $EBTABLES -D FORWARD -o eth1 -j ACCEPT } arptables-down() { $ARPTABLES -P FORWARD ACCEPT $ARPTABLES -D FORWARD --opcode Request --in-interface eth0 -j ACCEPT $ARPTABLES -D FORWARD --opcode Reply --in-interface eth0 -j ACCEPT $ARPTABLES -D FORWARD --opcode Request --in-interface eth1 -j ACCEPT $ARPTABLES -D FORWARD --opcode Reply --in-interface eth1 -j ACCEPT } start() { iptables-up ebtables-up arptables-up } stop() { iptables-down ebtables-down arptables-down } case "$1" in start) start RETVAL=$? ;; stop) stop RETVAL=$? ;; restart) stop start RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 ;; esac exit $RETVAL nova-2014.1/plugins/xenserver/networking/etc/init.d/openvswitch-nova0000775000175400017540000000456112323721477027011 0ustar jenkinsjenkins00000000000000#!/bin/bash # # openvswitch-nova # # chkconfig: 2345 23 89 # description: Apply initial OVS flows for Nova # Copyright 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # Copyright (C) 2009, 2010, 2011 Nicira Networks, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # source function library if [ -f /etc/init.d/functions ]; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions elif [ -f /lib/lsb/init-functions ]; then . /lib/lsb/init-functions else echo "$0: missing LSB shell function library" >&2 exit 1 fi OVS_CONFIGURE_BASE_FLOWS=/etc/xensource/scripts/ovs_configure_base_flows.py if test -e /etc/sysconfig/openvswitch-nova; then . /etc/sysconfig/openvswitch-nova else echo "$0: missing configuration file: /etc/sysconfig/openvswitch-nova" exit 1 fi if test -e /etc/xensource/network.conf; then NETWORK_MODE=$(cat /etc/xensource/network.conf) fi case ${NETWORK_MODE:=openvswitch} in vswitch|openvswitch) ;; bridge) exit 0 ;; *) echo "Open vSwitch disabled (/etc/xensource/network.conf is invalid)" >&2 exit 0 ;; esac function run_ovs_conf_base_flows { local action="$1" local all_interfaces=$(cd /sys/class/net/; /bin/ls -d eth*) local interfaces="${INTERFACES-$all_interfaces}" for interface in $interfaces; do /usr/bin/python $OVS_CONFIGURE_BASE_FLOWS $action $interface done } function start { run_ovs_conf_base_flows online } function stop { run_ovs_conf_base_flows offline } function restart { run_ovs_conf_base_flows reset } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo "usage: openvswitch-nova [start|stop|restart]" exit 1 ;; esac nova-2014.1/HACKING.rst0000664000175400017540000000736112323721476015516 0ustar jenkinsjenkins00000000000000Nova Style Commandments ======================= - Step 1: Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/ - Step 2: Read on Nova Specific Commandments --------------------------- - ``nova.db`` imports are not allowed in ``nova/virt/*`` - [N309] no db session in public API methods (disabled) This enforces a guideline defined in ``nova.openstack.common.db.sqlalchemy.session`` - [N310] timeutils.utcnow() wrapper must be used instead of direct calls to datetime.datetime.utcnow() to make it easy to override its return value in tests - [N311] importing code from other virt drivers forbidden Code that needs to be shared between virt drivers should be moved into a common module - [N312] using config vars from other virt drivers forbidden Config parameters that need to be shared between virt drivers should be moved into a common module - [N313] capitalize help string Config parameter help strings should have a capitalized first letter - [N314] vim configuration should not be kept in source files. - [N315] We do not use @authors tags in source files. We have git to track authorship. - [N316] Change assertTrue(isinstance(A, B)) by optimal assert like assertIsInstance(A, B). - [N317] Change assertEqual(type(A), B) by optimal assert like assertIsInstance(A, B) - [N318] Change assertEqual(A, None) or assertEqual(None, A) by optimal assert like assertIsNone(A) Creating Unit Tests ------------------- For every new feature, unit tests should be created that both test and (implicitly) document the usage of said feature. If submitting a patch for a bug that had no unit test, a new passing unit test should be added. If a submitted bug fix does have a unit test, be sure to add a new one that fails without the patch and passes with the patch. For more information on creating unit tests and utilizing the testing infrastructure in OpenStack Nova, please read ``nova/tests/README.rst``. Running Tests ------------- The testing system is based on a combination of tox and testr. The canonical approach to running tests is to simply run the command ``tox``. This will create virtual environments, populate them with dependencies and run all of the tests that OpenStack CI systems run. Behind the scenes, tox is running ``testr run --parallel``, but is set up such that you can supply any additional testr arguments that are needed to tox. For example, you can run: ``tox -- --analyze-isolation`` to cause tox to tell testr to add --analyze-isolation to its argument list. It is also possible to run the tests inside of a virtual environment you have created, or it is possible that you have all of the dependencies installed locally already. In this case, you can interact with the testr command directly. Running ``testr run`` will run the entire test suite. ``testr run --parallel`` will run it in parallel (this is the default incantation tox uses.) More information about testr can be found at: http://wiki.openstack.org/testr Building Docs ------------- Normal Sphinx docs can be built via the setuptools ``build_sphinx`` command. To do this via ``tox``, simply run ``tox -evenv -- python setup.py build_sphinx``, which will cause a virtualenv with all of the needed dependencies to be created and then inside of the virtualenv, the docs will be created and put into doc/build/html. If you'd like a PDF of the documentation, you'll need LaTeX installed, and additionally some fonts. On Ubuntu systems, you can get what you need with:: apt-get install texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended Then run ``build_sphinx_latex``, change to the build dir and run ``make``. Like so:: tox -evenv -- python setup.py build_sphinx_latex cd build/sphinx/latex make You should wind up with a PDF - Nova.pdf. nova-2014.1/CONTRIBUTING.rst0000664000175400017540000000101612323721476016350 0ustar jenkinsjenkins00000000000000If you would like to contribute to the development of OpenStack, you must follow the steps in the "If you're a developer" section of this page: http://wiki.openstack.org/HowToContribute Once those steps have been completed, changes to OpenStack should be submitted for review via the Gerrit tool, following the workflow documented at: http://wiki.openstack.org/GerritWorkflow Pull requests submitted through GitHub will be ignored. Bugs should be filed on Launchpad, not GitHub: https://bugs.launchpad.net/nova nova-2014.1/.mailmap0000664000175400017540000001721112323721476015334 0ustar jenkinsjenkins00000000000000# Format is: # # Alvaro Lopez Garcia Alvaro Lopez Andrew Bogott Andrew Bogott Andy Smith Andy Smith Andy Smith andy Andy Smith termie Andy Smith termie Anne Gentle annegentle Anthony Young Anthony Young Sleepsonthefloor Arvind Somya Arvind Somya Arvind Somya asomya@cisco.com <> Brad McConnell Brad McConnell bmcconne@rackspace.com <> Brian Lamar Brian Lamar brian-lamar Dan Wendlandt danwent Dan Wendlandt danwent Dan Wendlandt danwent@gmail.com <> Dan Wendlandt danwent@gmail.com Davanum Srinivas Davanum Srinivas Édouard Thuleau Thuleau Édouard Ethan Chu Guohui Liu Jake Dahn jakedahn Jason Koelker Jason Kölker Jay Pipes jaypipes@gmail.com <> Jiajun Liu Jian Wen Jian Wen Joe Gordon Joel Moore Joel Moore joelbm24@gmail.com <> John Griffith john-griffith John Tran John Tran Joshua Hesketh Joshua Hesketh Justin Santa Barbara Justin Santa Barbara Justin SB Justin Santa Barbara Superstack Kei Masumoto Kei Masumoto Kei masumoto Kei Masumoto masumotok Kun Huang lawrancejing Matt Dietz Matt Dietz Cerberus Matt Dietz Matthew Dietz Matt Dietz matt.dietz@rackspace.com <> Matt Dietz mdietz NTT PF Lab. NTT PF Lab. NTT PF Lab. Nachi Ueno NTT PF Lab. nova Nikolay Sokolov Nickolay Sokolov Paul Voccio paul@openstack.org <> Philip Knouff Phlip Knouff Renuka Apte renukaapte Sandy Walsh SandyWalsh Sateesh Chodapuneedi sateesh Tiantian Gao Tiantian Gao Vishvananda Ishaya Vishvananda Ishaya Vivek YS Vivek YS vivek.ys@gmail.com <> Yaguang Tang Yolanda Robla yolanda.robla Zhenguo Niu Zhongyue Luo nova-2014.1/test-requirements.txt0000664000175400017540000000033712323721477020156 0ustar jenkinsjenkins00000000000000hacking>=0.8.0,<0.9 coverage>=3.6 discover feedparser fixtures>=0.3.14 mock>=1.0 mox>=0.5.3 MySQL-python psycopg2 pylint==0.25.2 python-subunit>=0.0.18 sphinx>=1.1.2,<1.2 oslosphinx testrepository>=0.0.18 testtools>=0.9.34 nova-2014.1/.coveragerc0000664000175400017540000000014612323721476016033 0ustar jenkinsjenkins00000000000000[run] branch = True source = nova omit = nova/tests/*,nova/openstack/* [report] ignore-errors = True nova-2014.1/ChangeLog0000664000175400017540000361117112323722543015471 0ustar jenkinsjenkins00000000000000CHANGES ======= 2014.1 ------ * Add RBAC policy for ec2 API security groups calls * Fix straggling uses of direct-to-database queries in nova-network * Update docs to reflect new default filters * Fix anti-affinity server-group boot failure * Enable ServerGroup scheduler filters by default * Fix Jenkins translation jobs * Require admin context for interfaces on ext network * VMware: Fixes the instance resize problem * mark vif_driver as deprecated and log warning * Ensure network interfaces are in requested order * Note that XML support *may* be removed * libvirt: pause mode is not supported by all drivers * Revert object-assuming changes to _post_live_migration() 2014.1.rc1 ---------- * Fix getting instance events on subsequent attempts * Make conductor expect ActionEventNotFound for action methods * Remove zmq-receiver from setup.cfg * Add a note about deprecated group filters * Fix the section name in CONTRIBUTING.rst * Add new style instance group scheduler filters * Automatically create groups that do not exist * Add InstanceGroup.get_by_name() * Add nova.conf.sample to gitignore * Use binding:vif_details to control firewall * Disable volume attach/detach for suspended instances * Updated from global requirements * Persist image format to a file, to prevent attacks based on changing it * Imported Translations from Transifex * postgres incompatibility in InstanceGroup.get_hosts() * Add missing test for None in sqlalchemy query filter * Use correct project/user id in conductor.manager * fix the extension of README in etc/nova * Tell pip to install packages it sees globally * Change exception type from HTTPBadRequest to HTTPForbidden * Don't attempt to fill faults for instance_list if FlavorNotFound * Fix availability-zone option miss when creates an instance * Updated Setting up Developer Environment for Ubuntu * Change libvirt close callback to use green thread * Re-work how debugger CLI opts are registered * Imported Translations from Transifex * VMware: fix booting from volume * Do not add current tenant to private flavor access * Disable oslo.messaging debug logs * Update vm_mode when rebuilding instance with new image * VMware: fix list_instances for multi-node driver * VMware: Add utility method to retrieve remote objects * Refactors unit tests of image service detail() * Refactors nova.image.glance unit tests for show() * Revert deprecation warning on Neutron auth * V2 API: remove unused imports * Rename _post_live_migration instance_ref arg * Add a decorator decorator that checks func args * Updated from global requirements * Instance groups: cleanup * Fix inconsistent quota usage for security group * Fix service API and cells * Remove unnecessary stubbing in test_services * VMware: fix exception when no objects are returned * Don't allow empty or 0 volume size for images * Wait till message handling is done on service stop * Fix the rpc module import in the service module * Revert "VMware Driver update correct disk usage stat" * Catch HostBinaryNotFound exception in V2 API * Raise error on nova-api if missing subnets/fixed_ips on networks/port * Fix the explanations of HTTPNotFound for new APIs * Remove the nova.config.sample file * Refuse to block migrate instances with config drive * Catch NotImplementedError on Network Associate * VMware: add a file to help config the firewall for vnc * Change initial delay for servicegroup api reporting * Fix KeyError if neutron security group is not TCP/UDP/ICMP and no ports * Prevent rescheduling on block device failure * Check if nfs/glusterfs export is already mounted * Make compute API resize methods use Quotas objects * Remove commented out code in test_cinder_cloud * Update quantum to neutron in comment * Add deleted_at attribute in glance stub on delete() * Add API sample files of "unshelve a server" API * Remove unused method from fake_network.py * Don't refresh network cache for instances building or deleting * GlanceImageService static methods to module scope * Remove XenAPI driver deprecation warning log message * VMware: bug fix for host operations when using VMwareVCDriver * xenapi: boot from volume without image_ref * Use HTTPRequestV3 instead of HTTPRequest in v3 API tests * Cells: Send instance object for instance_delete_everywhere * Fix "computeFault" when v3 API "GET /versions/:(id)" is called * VMware: ensure that the task completed for resize operation * Cells API calls return 501 when cells disabled * Add version 2.0 of conductor rpc interface * Added missing raise statement when checking the config driver format * Make NovaObject report changed-ness of its children * Increase volume creation max waiting time * VMware: fix rescue disk location when image is not linked clone * Fix comment for block_migration in nova/virt/libvirt/driver.py * Don't import library guestfs directly * Correct inheritance of nova.volume.cinder.API * VMware: enable booting an ISO with root disk size 0 * Remove bad log message in get_remote_image_service * Raise NotImplementedError in NeutronV2 API * Remove block_device_mapping_destroy() from conductor API * Make sure instance saves network_info when we go ACTIVE * Fix sqlalchemy utils test cases for SA 0.9.x * Fix equal_any() DB API helper * Remove migration_update() from conductor API * Remove instance_get() from conductor API * Remove aggregate_get_by_host() from conductor API * add support for host driver cleanup during shutdown * Add security_group_rule to objects registry * Remove aggregate_get() from conductor API * Delete meaningless lines in test_server_metadata.py * Imported Translations from Transifex * Move log statement to expose actually info_cache value * Fix input validation for V2 API server group API extension * Adds test for rebuild in compute api * Specify spacing on periodic_tasks in manager.py * network_info cache should be cleared before being rescheduled * Don't sync [system_]metadata down to cells on instance.save() * Fixes the Hyper-V agent individual disk metrics * Fix docstring for shelve_offload_instance in compute manager * Block database access in nova-network binary * Make nova-network use conductor for security groups refresh * Make nova-network use quotas object * Reverts change to default state_path * Fix raise_http_conflict_for_instance_invalid_state docstring * Cells: Pass instance objects to update/delete_instance_metadata * Don't detach root device volume * Revert "Adding image multiple location support" * Revert "Move libvirt RBD utilities to a new file" * Revert "enable cloning for rbd-backed ephemeral disks" * Add helper method for injecting data in an image * Add helper method for checking if VM is booting from a volume * Libvirt: Repair metadata injection into guests * Make linux_net use objects for last fixed ip query * Add get_by_network() to FixedIPList * Update aggregate should not allow duplicated names * Recover from REBOOT-* state on compute manager start-up * VMware: raise an exception for unsupported disk formats * VMware: ensure that deprecation does not appear for VC driver * rename ExtensionsResource to ExtensionsController * Ensure is_image_available handles V2 Glance API * libvirt: fix blockinfo get_device_name helper * Log Content-Type/Accept API request info * Remove the docker driver * xenapi: Speed up tests by not waiting on conductor * Updated from global requirements * xenapi: Fix test_rescue test to ensure assertions are valid * VMware: image cache aging * Add py27local tox target * Fix broken API os-migrations * Catch FloatingIpNotFoundForHost exception * Fix get_download_hander() typo * Handle IpAddressGenerationClient neutron * Delete ERROR+DELETING VMs during compute startup * VMware: delete vm snapshot after nova snapshot * Fix difference between mysql & psql of flavor-show * Add version 3.0 of scheduler rpc interface * Make libvirt wait for neutron to confirm plugging before boot * Task cleanup_running_deleted_instances can now use slave * Do not add HPET timer config to non x86 targets * Instance groups: only display valid instances for policy members * Don't allow reboot when instance in rebooting_hard * Fix typo and add test for refresh_instance_security_rules * Add declaration of 'refresh_instance_security_rules' to virt driver * Remove mention of removed dhcp_options_enabled * Fix compute_node stats * Fix: Unshelving an instance uses original image * Noted that tox is the preferred unit tester * Use instance object instead of _instance_update() * Remove compute virtapi BDM methods * enable cloning for rbd-backed ephemeral disks * Move libvirt RBD utilities to a new file * Fixup debug log statements in the nova compute manager * Use debug level logging during unit tests * Fix debug message formatting in server_external_events * VMware: VimException __str__ attempts to concatenate string to list * Mark ESX driver as deprecated * Volume operations should be blocked for non-null task state * xenapi: fix spawn servers with ephemeral disks * Fixes NoneType vcpu list returned by Libvirt driver * Add conversion type to LOG.exception's string * Remove compute API get_instance_bdms method * Move run_instance compute to BDM objects * Move live migration callbacks to BDM objects * Instance groups: validate policy configuration * Add REST API for instance group api extension * VMware: boot from iso support * Store neutron port status in VIF model * Correct network_model tests and __eq__ operator * Make network_cache more robust with neutron * Error out failed migrations * Fix BDM legacy usage with objects * Fix anti-affinity race condition on boot * Initial scheduler support for instance_groups * Add get_hosts to InstanceGroup object * Add instance to instance group in compute.api * Add add_members to InstanceGroup object * Remove run-time dependency on fixtures module by the nova baremetal * Make compute manager prune instance events on delete and migrate * Make compute manager's virtapi support waiting for events * Add os-server-external-events V3 API * Add os-server-external-events API * Add external_instance_event() method to compute manager * Fix invalid vim call in vim_util.get_dynamic_properties() * Rescue API handle NotImplementedError * VMware: Add a test helper to mock the suds client * VMware: Ensure test VM is running in rescue tests * Move _poll_volume_usage periodic task to BDM objects * Move instance_resize code paths to BDM objects * Make swap_volume code path use BDM objects * Fix log messages typos in rebuild_instance function * Move detach_volume and remove_vol_connection to BDM objects * Move instance delete to new-world BDM objects * VMware ESX: Boot from volume must not relocate vol * Fix development environment docs for redhat-based systems * neutron_metadata_proxy_shared_secret should not be written to log file * VMware: create datastore utility functions * Address the comments of the merged image handler patch * Ignore the image name when booting from volume 2014.1.b3 --------- * Fix typo in devref * VMware: refactor _get_volume_uuid * Fixing host_ip configuration help message * No longer call check_uptodate.sh in pep8 * notifier middleware broken by oslo.messaging * regenerate the config file to support 1.3.0a9 * Add doc update for 4 filters which is missing in filter_scheduler.rst * Adding image multiple location support * Move all shelve code paths to BDM objects * Move rebuild to BDM objects * sync sslutils to not conflict with oslo.messaging * Accurate comment in compute layer * Refactor xenapi/host.py to new call_xenapi pattern * Add a missing space in a log message * VMware: iscsi target discovery fails while attaching volumes * Sync the latest DB code from oslo-incubator * Prevent thrashing when deploying many bm instances * Support configuring libvirt watchdog from flavors * Add watchdog device support to libvirt driver * Remove extra space at the end of help string * Port libvirt copy_image tests to mock * Updated from global requirements * Sync latest Guru Meditation Reports from Oslo * Skip sqlite-specific tests if sqlite is not configured * VMware: add in debug information for network selection * vmwareapi:Fix nova compute service down issue when injecting pure IPv6 * Make compute use quota object existing function * Fixes api samples for V2 os-assisted-volume-snapshots * Raise exception if volume snapshot id not found instead of return * Added os-security-groups prefix * VMware Driver update correct disk usage stat * Restore get_available_resource method in docker driver * Make compute manager use InstanceInfoCache object for deletes * Deprecate conductor instance_type_get() and remove from VirtAPI * Make restore_instance pass the Instance object to compute manager * Use uuid instead of name for lvm backend * Adds get_console_connect_info API * Remove log_handler module from oslo-incubator sync * Remove deleted module flakes from openstack-common.conf * When a claim is rejected, explain why * Move xenapi/agent.py to new call_xenapi style * xenapi plugins: Make sure subprocesses finish executing * Update Oslo wiki link in README * Refactor pool.py to remove calls to call_xenapi * Move vbd plug/unplug into session object * xenapi: make session calls more discoverable * Make error notifications more consistent * Adds unit test for etc/nova/policy.json data * Support IPv6 when booting instances * xenapi: changes the debug log formatting * libvirt: raises exception when attempt to resize disk down * xenapi: stop destroy_vdi errors masking real error * Make resource_tracker use Flavor object * Make compute manager use Flavor object * Make baremetal driver use Flavor object instead of VirtAPI * Sync latest config file generator from oslo-incubator * Fixes evacuate doesn't honor enable password conf for v3 * Fix the explanations of HTTPNotFound response * VMware: support instance objects * Add support for tenant_id based authentication with Neutron * Remove and recreate interface if already exists * Prevent caller from specifying id during Aggregate.create() * Enable flake8 H404 checking * Imported Translations from Transifex * Use oslo-common's logging fixture * Re-Sync oslo-incubator fixtures * Updated from global requirements * Update pre_live_migration to take instance object * Remove unused method inject_file() * Remove db query from deallocate_fixed_ip * update deallocate_for_instance to take instance obj * Update server_diagnostics to use instance object * Move the metrics update to get_metrics * Unmount the NFS and GlusterFS shares on detach * Add a caching scheduler driver * libvirt: image property variable already defined * Replaces exception re-raising in Hyper-V * Remove blank space after print * VMware: add instance detail to detach log message * libvirt: Enable custom video RAM setting * Remove trailing comma from sample JSON * Add pack_action_start/finish helper to InstanceAction object * Rewrite InstanceActionEvent object testcase using mock * Clean up _make_*_list in object models to use base.obj_make_list * libvirt: remove explicit /dev/random rng default * Document virt driver methods that take Instance objects * Make interface attach and detach use objects * Pass instance object to soft_delete() and get_info() * libvirt: setting a correct driver name for iscsi volumes * libvirt: host specific virtio-rng backend * Fix HTTP methods for test_attach_interfaces * Fix the calls of webob exception classes * VMware: remove unused parameter from _wait_for_task * Downgrade the log level for floating IP associate * Removing redundant validation for rebuild request * VMware: add a test for driver capabilities * Catch HostBinaryNotFound exception when updating a service * VMware: ensure that datastore name exists prior to deleting disk * Move compute's _get_instance_volume_block_device_info to BDM objects * Use disk_bus and device_type in attaching volumes * Add device bus and type to virt attach_volume call * Make volume attach use objects * compute: invalid gettext message format * VMware: fix the VNC port allocation * VMware: fix datastore selection when token is returned * Hyper-V log cleanups * vmware: driver races to create instance images * Introduce Guru Meditation Reports into Nova * Updated from global requirements * Revert "VMware: fix race for datastore directory existence" * Use instance object for delete * Update ubuntu dev env instructions * VMware: fix race for datastore directory existence * libvirt: adding a random number generator device to instances * Add 'use_slave' to instance_get_all_by_filter in conductor * Make webob.exc.HTTPForbidden return correct message * Use image from the api in run_instance, if present * Remove unused variables in the xenapi.vmops module * Cleanup v3 test_versions * Fix import order in log_handler * Emit message which merged user-supplied argument in log_handler * Adds service request parameter filter for V3 API os-hosts request * Fix comment typo in nova/compute/api.py * stop throwing deprecation warnings on init * Remove broken quota-classes API * VMware: fix instance lookup against vSphere * Add a new compute API method for deleting retired services * Fix instance_get_all_by_host to actually use slave * Periodic task poll_bandwidth_usage can use slave * Partially revert "XenAPI: Monitor the GC when coalescing" * Mark XML as deprecated in the v2 API * adjust version definition for v3 to be only json * Fix option indenting in compute manager * Adds create backup server extension for the V3 API * Sync log.py from oslo * Make floating_ips module use FloatingIP for associations * Remove __del__ usage in vmwareapi driver * Fixed spelling errors in nova * LibVirt: Disable hairpin when using Neutron * VMware: optimize instance reference access * Serialize the notification payload in json * Add resource tracking to unshelve_instance() * Typo in the name 'libvirt_snapshot_compression' * Refactor driver BDM attach() to cover all uses * Fix assertEqual parameter order post V3 API admin-actions-split * Fix copyright messages after admin actions split for V3 API * Catch InstanceNotFound exceptions for V2 API virtual interfaces * Correct the assert() order in test_libvirt_blockinfo * Use disk_bus when guessing the device name for vol * libvirt: add virtio-scsi disk interface support * libvirt: configuration element for virtual controller * VMware: factor out management of controller keys and unit numbers * Remove unused notifier and rpc modules from oslo sync * Imported Translations from Transifex * Remove XML support from schemas v3 * Treat port attachment failures correctly * Add experimental warning for Cells * Add boolean convertor to "create multiple servers" API * VMware: prevent race for vmdk deletion * VMware: raise more specific exceptions * Disable IGMP snooping on hybrid Linux bridge * libvirt: remove retval from libvirt _set_host_enabled() * VMware: remove unused class * compute: format_message is a method not an attribute * MetricsWeigher: Added support of unavailable metrics * Fix incorrect kwargs 'reason' for HTTPBadRequest * Fix the indents of v3 API sample docs * Refactor get_iscsi_initiator to a common location * Fix compute_node_update() compatibility with older clients * XenAPI: Add the mechanism to attach a pci device to a VM * Remove underscore for the STATE_MAP variable * XenAPI: Add the support for updating the status of the host * libvirt: support configurable wipe methods for LVM backed instances * Fix InstanceNotFound error in _delete_instance_files * Ensure parent dir exists while injecting files * Convert post_live_migration_at_destination to objects * Convert remove_fixed_ip_to_instance to objects * Convert add_fixed_ip_to_instance to objects * VMware: improve unit test time * Replace assertEqual(None, *) with assertIsNone in tests * Add comment/doc about utils.mkfs in rootwrap * Add mkfs to the baremetal-deploy-helper rootwrap * libvirt-volume: improve unit test time * Move consoleauth_manager option into nova.service and fix imports * libvirt: improve unit test time * Imported Translations from Transifex * Make is_neutron() thread-safe * Update the mailmap * Rewrite InstanceAction object test cases using mock * Make floating_ips module use FloatingIP for updates * Make floating_ips module use FloatingIP for (de-)allocations * Make floating_ips module use FloatingIP for all get queries * Make floating_ips module use Service object * Make floating_ips module use Instance object * Make floating_ips module use Network object * Make floating_ips module use FixedIP object * Fix break in vm_vdi_cleaner after oslo changes * Fixes the Hyper-V VolumeOpsTestCase base class * libvirt: Uses available method get_host_state * Add V3 api for pci support * Update docstring for baremetal opportunistic tests * Fix upper bound checking for flavor create parameters * Fixed check in image cache unit test * Count memory and disk slots once in cells state manager * changed quantum to neutron in vif-openstack * Convert unrescue_instance to objects * Don't allow compute_node free_disk_gb to be None * compute: removes unnecessary condition * Rename Openstack to OpenStack * Support setting a machine type to enable ARMv7/AArch64 guests to boot * Catch InstanceNotFound exceptions for V2 API floating_ips * Explicity teardown on error in libguestfs setup() * Catch InstanceNotFound exceptions for V2 API deferred delete * Replace oslo.sphinx with oslosphinx * Change assertTrue(isinstance()) by optimal assert * Make nova_ipam_lib use Network, FixedIP, and FloatingIP objects * Make nova-network use FixedIP for timeouts * Make nova-network use FixedIP object for updates * Make nova-network use FixedIP object for disassociations * Use six.moves.urllib.parse instead of urlparse * Add "body=" argument to v3 API unit tests * Remove unused methods * Adds migrate server extension for V3 API * Move policy check of start/stop to api layer * Refactor stats to avoid bad join * Remove @author from copyright statements * Remove character filtering from V3 API console_output * DB: logging exceptions should use save_and_reraise * Fix incorrect check in aggregate/az test * xenapi: set viridian=false for linux servers * Delete baremetal image files after deployment * Make sure "volumeId" in req body on volume actions * Removes console output plugin from the core list * Using six.add_metaclass * Fix bad log formatting * Remove quota classes extension from the V3 API * Group kvm image_meta tests for get_disk_bus * Prefix private methods with _ in docker driver * Fix the sample and unittest params of v3 scheduler-hints * Add a instance lookup helper to v3 plugins * Use raw string notation for regexes in hacking checks * Improve detection of imports in hacking check * Renumber some nova hacking checks * Docker cannot start a new instance because of an internal error * libvirt: configuration element for a random number generator device * VMware: fix instance rescue bug * Fix run_tests.sh lockutils when run with -d * Adds tests to sqlachemy.api._retry_on_deadlock * Replace detail for explanation msgs on webob exceptions * Allow operators to customize max header size * Prevent caller from specifying id during Migration.create() * Prevent caller from specifying id during KeyPair.create() * Prevent caller from specifying id during Service.create() * Prevent caller from specifying id during ComputeNode.create() * Clean IMAGE_SNAPSHOT_PENDING state on compute manager start up * Fix trivial typo in libvirt test comment * Refactoring metadata/base * Removes XML namespace from V3 API test_servers * correct the bugs reference url in man documents * Objectify instance_action for cell scheduler * Remove tox locale overrides * libvirt: use to_xml() in post_live_migration_at_destination * Removes os-instance-usage-audit-log from the V3 API * VMware: update test name * VMware: improve unit test performance * Fix english grammar in the quota error messages * Removes os-simple-tenant-usage from the V3 API * Fix a couple of unit test typos * Add HEAD api response for test s3 server BucketHandler * Removes XML support from security_groups v3 API * Hyper-V driver RDP console access support * Make consoleauth token verification pass an Instance object * Adds RDP console support * Fix migrations changing the type of deleted column * Add hpet option for time drifting * Typo in backwards compat names for notification drivers * Support building wheels (PEP-427) * Fix misspellings in nova * Disable file injection in baremetal by default * Drop unused dump_ SQL tables * Convert rescue_instance to objects * Convert set_admin_password to objects * The object_compat decorator should come first * Default video type to 'vga' for PowerKVM * Sync latest db.sqlalchemy from oslo-incubator * Guard against oversize flavor rxtx_factor float * Make libvirt use Flavor object instead of using VirtAPI * Fix instance metadata tracking during resets * Make delete_instance_metadata() use objects * Break out the meat of the object hydration process * V2 Pause: treat case when driver does not implement the operation * VMware: fix bug for exceptions thrown in _wait_for_task * Nova Docker: Metadata service doesn't work * nova: use RequestContextSerializer for notifications * Fix auto instance unrescue after poll period * Fix typos in hacking check warning numbers * Fix exception handling miss in remote_consoles * Don't try to restore VM's in state ERROR * Make it possible to disable polling for bandwidth usage * XenAPI: Monitor the GC when coalescing * Revert "Allow deleting instances while uuid lock is held" * report port number for address already in use errors * Update my mailmap * libvirt: Adds missing tests to copy_image * Sync latest gettextutils from oslo-incubator * Make change_instance_metadata() use objects * Add XenAPI driver deprecation warning log message * Adds host_ip to hypervisor show API * VMware: update the default 'task_poll_interval' time * Fixes Hyper-V VHDX snapshot bigger than instance * Define common "name" parameter for Nova v3 API * Stacktrace on error from libvirt during unfilter * Disable libvirt driver file injection by default * Add super call to db Base class * Fix baremetal stats type * Fix bittorrent URL configuration option * Fix VirtualInterfaceMacAddressException message * Add serializer capability to fake_notifier * Avoid deadlock when stringifying NetworkInfo model * Add hacking test to block cross-virt driver code usage * Hyper-V: Change variable in debug log message * Rename API schema modules with removing "_schema" * Fixed naming issue of variable in a debug statement formatting * Use new images when spawning BM instances * Remove get_instance_type and get_active_by_window from nova compute API * Make the simple_tenant_usage API use objects * Add instance_get_active_by_window_joined to InstanceList * Update nova.conf.sample for python-keystoneclient 0.5.0 * Add ESX quality warning * Set SCSI as the default cdrom bus for PowerKVM * Enforce FlavorExtraSpecs Key format * Fix scheduler_hints parameter of v3 API * Remove vi modelines * VMware: Remove some unused variables * Fix a bug in v3 API doc * Move logging out of BDM attach method * Add missing translation support * libvirt: making set_host_enabled to be a private methods * Remove unused variable * Call get_pgsql_connection_info from _test_postgresql_opportunistically * Port to oslo.messaging * Sync latest config file generator from oslo-incubator * Test guestfs without support for close_on_exit * Make nova-network use FixedIP object for vif queries and bulk create * Make nova-network use FixedIP for host and instance queries * Make nova-network use FixedIP object for associations * Make nova-network use FixedIP for get_by_address() queries * Add FixedIP.floating_ips dynamic property * Add FloatingIP object implementation * Add FixedIP Object implementation * Deal with old versions of libguestfs * Destroy docker container if spawn fails to set up network * Adds suspend server extension for V3 API * Adds pause server extension for V3 API * Removes XML namespace definitions from V3 API plugins * Remove XML support from migrations pci multiple_create v3 API plugins * Remove extra space in log message * Allow deleting instances while uuid lock is held * Add 'icehouse-compat' to [upgrade_levels] compute= * Make os-service API return correct error messages * Make fixed_ip_get_by_address() take columns_to_join * Refactor return value of fixed_ip_associate calls * Make nova-network use Network object for deleting networks * Make nova-network use Network for associations * Make nova-network use Network object for set_host() operation * Make nova-network use Network object for updates * Make nova-network use Network object for remaining "get" queries * Make nova-network use NetworkList for remaining "all" queries * Make nova-network use Network object for get-all-by-host query * Make nova-network a "conductor-using service" * Ignore 'dynamic' addr flag on bridge configuration * Remove XML support from some v3 API plugins * xenapi: clean up step decorator fake steps * Use objects internally in DriverBlockDevice class * Make snapshot_volume_backed use new-world objects * Make volume_snapshot_{create,delete} use objects * Move compute API is_volume_backed to BDM objects * Add block device mapping objects implementation * XenAPI: Wait for VDI on introduce * Shelve: The snapshot should be removed when delete instance * Revert "Allow deleting instances while uuid lock is held" * Retry reservation commit and rollback on deadlock * Adds lock server extension for V3 API * Remove duplicated method in mock_key_mgr * Add quality warning for non-standard libvirt configurations * Add docker driver removal warning * Remove V3 API XML entry points * Remove XML support from admin_password V3 API plugin * Remove XML support from certificates v3 API * Remove XML support from some v3 API plugins(e.g. services) * Remove XML support from some extension v3 API plugins * Remove XML support from some server v3 API plugins * Remove XML support from quota and scheduler_hints v3 API plugins * Remove XML support from flavor v3 API plugins * Revert "Fix race conditions between imagebackend and imagecache" * Remove XML support from v3 API plugins * Remove unused methods * Remove trace XML from unittests * removing xml from servers.py * Remove xml unit tests for v3 api plugins * Remove v3 xml API sample tests * Adds dmcrypt utility module * Adds ephemeral_key_uuid field to instance * Error message is malformed when removing a sec group from an instance * Do not set root device for libvirt+Xen * Docker Set Container name to Instance ID * Fix init of pci_stats in resource tracker * Catch NotImplementedError in get_spice_console in v2/v3 API * Minor changes to make certificates test cases use HTTPRequestV3 * VMware: Only include connected hosts in cluster stats * disk/api.py: refactors extends and adds missing tests * Make nova-network use Network to create networks * Make obj_to_primitive() handle netaddr types * Add Network object * Make service workers gracefully handle service creation race * support stevedore >= 0.14 * Increase the default retry for iscsi connects * Finish compacting pre-Icehouse database migrations * Compact pre-Icehouse database migrations <= 210 * Compact pre-Icehouse database migrations <= 200 * Compact pre-Icehouse database migrations <= 190 * Fix cache lock for image not consistent * VMware: fix image snapshot with attached volume * Use block_device_info at post_live_migration_at_destination * Update policy check on each action for certificates * Use (# of CPUs) workers by default * Remove policy check in db layer for aggregates * Remove unused configurations * VMware: fix exception when using multiple compute nodes * Remove copyright from empty files in nova * disk/api.py: resize2fs fails silently + adds tests * remove 2 unused function in test_volumes.py * Update log message to support translations * PCI address should be uniform * Remove flavor-disabled related policy rules for v3 api * Remove get_all_networks from nova.network.rpcapi * Remove get_network from nova.network.rpcapi * Update nova.network to use DNSDomain object * Remove some dead dnsdomain code * Add DNSDomain object * Add db.dnsdomain_get_all() method * Update linux_net to use VirtualInterface * Update nova_ipam_lib to use VirtualInterface * libvirt: Review of the code to use module units * Update network.manager to use VirtualInterface * Imported Translations from Transifex * Updated from global requirements * Define "supported_instances" for fake compute * Remove get_vif_by_mac_address from network rpcapi * Remove unused method from network rpcapi * Allow delete when InstanceInfoCache entry is missing * libvirt: Fix root disk leak in live mig * Additional check for qemu-nbd hang * Correct host managers free disk calculation * Correct the state for PAUSED instances on reboot * XenAPI: Use get_VALUE in preference to get_record()['VALUE'] * XenAPI: Speedup get_vhd_parent_uuid * XenAPI: Report the CPU details correctly * XenAPI: Tidy calls to get_all_ref_and_rec * XenAPI: get_info was very expensive * Fix bug with not implemented virConnect.registerCloseCallback * Make test_poll_volume_usage_with_data more reliable * Re-write sqlite BigInteger mapping test * Small edits on help strings * Make floating_ip_bulk_destroy deallocate quota if not auto_assigned * Sync processutils from oslo-incubator * Create common method for MTU treatment * Move fake_network config option to linux_net * libvirt: move unnecesary comment * Sync log.py from oslo-incubator * hyperv: Retry after WMI query fails to find dev * vmwareapi:remove unused variables in volumeops * Fix docstring in libvirt.driver.LibvirtDriver.get_instance_disk_info() * Hide VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES where needed * Make test_different_fname_concurrency less racy * VMware: improve exception logging in driver.py 2014.1.b2 --------- * Add instance faults during live_migrate errors * VMware: use .get() to access 'summary.accessible' * Nova Docker driver must remove network namespace * Added a new scheduler filter for metrics * Sync module units from oslo * Join pci_devices for servers API * VMware: fix missing datastore regex with ESX driver * Fix the flavor_ref type of unit tests * Sync unhandled exception logging change from Oslo * Fix race conditions between imagebackend and imagecache * Add explicit discussion of dependencies to README.rst * Add host and details column to instance_actions_events table * Join pci_devices when getting all servers in API * Add sort() method to ObjectListBase * Add VirtualInterface object * VMware: Fix incorrect comment indentation * vmwareapi: simple refactor of config drive tests * Fix multi availability zone issue part 2 * Make exception message more friendly * disable debug in eventlet.wsgi server * Alphabetize core list for V3 API plugins * Ensure MTU is set when the OVS vif driver is used * remove redundant __init__() overwriting when getting ExtensionResources * Fix bug for neutron network-name * Fix rbd backend not working for none admin ceph user * Set objects indirection API in network service * Use oslo.rootwrap library instead of local copy * Remove admin auth when getting the list of Neutron API extensions * Fix the test parameter order for v3 evacuate test * Add API schema for v3 evacuate API * Remove unused code * Take a vm out of SNAPSHOTTING after Glance error * Corrected typo in metrics * libvirt: handle exception while get vcpu info * Fixed incorrect test case of test_server_metadata.py * Add API schema for v3 rescue API * Support preserve_ephemeral in baremetal * Show bm deploy how to preserve ephemeral content * Add preserve_ephemeral option to rebuild * Fix string formatting of exception.NoUniqueMatch message * docstring fix * xenapi: stop server destroy on live_migrate errors * Ensure that exception raised in neutron are handled correctly * Fix updating device names when defaulting * libvirt: Fix confusing use of mox.StubOutWithMock * Sync request_id middleware for nova * Calculate default security group into quota usage * Allow run_image_cache_manager_pass to hit db slave * Consolidate the blockdev related filters * VMware: upload images to temporary directory * Refactor CIDR field to use netaddr.IPNetwork * Make nova-network use Instance objects * Make nova-network use Service object * Allow _check_instance_build_time to hit db slave * Set objects indirection API in metadata service * libvirt: Configuration element for sVirt support * VMware: unnecessary session reconnection * Add API schema for v3 multinic API * API schema for v3 console_output API * Workers verification for WSGI service * Remove unused dict BYTE_MULTIPLIERS * Optimize libvirt live migration workflow at source * libvirt, fix test tpool_execute_calls_libvirt * Using staticmethod to mock LibvirtDriver._supports_direct_io * Use the mangle checksum fill rule regardless to the multi_host * Enabled Libvirt driver to read 'os_command_line' from image properties * Update nova.conf.sample * Capture exception for JSON load in virt.storage_users * Ensure that headers are utf8, not unicode * Attribute snapshot not defined in libvirt/config.py * ec2 api should check 'max_count'&'min_count' para * nova docker driver cannot find cgroup in /proc/mounts on RHEL * VMware: fix rescue with disks are not hot-addable * VMware: bug fix for VM rescue when config drive is configured * Define common API parameter types * Fixed a problem in iSCSI multipath * Fix unhandled InvalidServerState exceptions in server start/stop * Cells rebuild regression fix * Fix potential fd leak * Rename instance_type to flavor in libvirt virt driver tests * Rename instance_type to flavor in vmware virt driver tests * Improve error message in services API * Make image props filter handle old vm_modes * XenAPI: Use direct IO for writing config drive * Avoid unnecessary use of rootwrap for some network commands * Remove unused copyright from nova.api.__init__ * replace type() to isinstance() in nova * Make availability_zone optional in create for aggregates * libvirt: Fix infinite loop waiting for block job * baremetal: stop deployment if block devices are not available * Cleanup 'deleting' instances on restart * Ignore duplicate delete requests * Let drivers override default rebuild() behaviour * Enable compute_node_update to tolerate deadlocks * xenapi: resize up ephemeral disks * xenapi: refactor generate_ephemeral * xenapi: refactor resize_up_root_vdi * Abstract add_timestamp out of ComputeDriverCPUMonitor class * Revert "Whitelist external netaddr requirement" * The private method _text_node should be used as function * Add finer granularity to host aggregate APIs * Remove unused import * Adds new method nova.utils.get_hash_str * Make nova/quota use keypair objects * VMware: update test file names * Ensure instance action event list in order * Docker Driver doesn't respect CPU limit * libvirt: stop overwriting LibvirtConfigCPU in get_host_capabilities * Cleanup the flake8 section of tox.ini * Use the full string for localisation * Don't deallocate/reallocate networks on reschedules * Cleanup object usage in the rebuild path * Fix test case with wrong parameter in test_quota_classes * Remove unused variables in imagebackend.py * Remove unused code in test_attach_interfaces.py * Whitelist external netaddr requirement * Better exception handling for deletes during build * Translate the snapshot_pending state for old instances * Prevent Instance.refresh() from returning a new info cache * Extends V3 os-hypervisor api for pci support * Sync config generator from oslo-incubator * Imported Translations from Transifex * Remove uneeded dhcp_opts initialization * Update class/function name for test_extended_availability_zone.py * Allow deleting instances while uuid lock is held * xenapi: add support for vcpu_pin_set * xenapi: more info when assert_can_migrate fails * fix ips to 'ips' in APIRouter * Hyper-V:Preserve config drive image after the instance is resized * fix log message in APIRouter * VMware: use session.call_method to invoke api's * Rename instance_type to flavor in hyper-v virt driver * Rename instance_type to flavor in xenapi virt driver * Compact pre-Icehouse database migrations <= 180 * Change when exists notification is sent for rescue * Revert change of default FS from ext3 to etx4 * Convert nova.compute.manager's _spawn to objects * Add alias as prefix for flavor_rxtx v3 * Remove unused code in nova/api/ec2/__init__.py * Remove unused import * VMware: improve connection issue diagnostic * Aggregate: Hosts isolation based on image properties * Fix for qemu-nbd hang * Return policy error, not generic error * Fix lxc rootfs attached two devices in some action * Removes disk-config extension from v3 api * Fix typo'ed deprecated flag names in libvirt.imagebackend * Disable libguestfs' default atexit handlers * Add API schema for v3 extended_volumes API * Catch InstanceIsLocked exception on server actions * Fix inconsistent "image" value on _get_image() * Add API schema for v3 keypairs API * Add API schema for v3 flavor_access API * Add API schema for v3 agents API * Add API schema for v3 admin_password API * Adds a PREPARED state after baremetal node power on * Make scheduler rpcapi use object serializer * Update log message when remove pci device * Add unit test for ListOfStrings field in object models * Sync oslo db.sqlalchemy.utils to nova * Remove duplicated test * Fixing availability-zone not take effect error * Fix image cache periodic task concurrent access bug * Fix interprocess locks for run_tests.sh * lxc: Fix a bug of baselineCPU parse failure * platform independence for test_virt unit tests * Imagecache: fix docstring * libvirt: Set "Disabled Reason" to None when enable nova compute * Change log from ERROR to WARNING when instance absent * VMware: clean up unnecessary help message of options * Don't use deprecated module commands * Add apache2 license header to appropriate files for enabling H102 * XenAPI: Allow use of clone_vdi on all SR types * Remove unused variables in test_conductor.py * Do not use contextlib.nested if only mock one function * Remove update_service_capabilities from nova * Adds user_data extension to nova.api.v3.extensions * Add wsgiref to requirements.txt * pass the empty body into the controller * Imported Translations from Transifex * Revert recent change to ComputeNode * sync oslo service to fix SIGHUP handling * Fix parameter checking about quota update api * Spelling fix resouce=>resource * Change default ephemeral FS to ext4 * When inject admin password, no need to generate temp file * Make _change_index_columns use existing utility methods * Fix interprocess locks when running unit-tests * Cleanup object usage in the delete path * Change RPC post_live_migration_at_destination from call to cast * Pass rbd_user id and conf path as part of RBD URI for qemu-img * Allow some instance polling periodic tasks to hit db slave * Sync timeutils from oslo-incubator * Catch NotImplementedError for vnc in the api * List NotImplementedError as a client exception for vnc * remove vmwareapi.vmops.get_console_output() * Object-ify build_and_run_instance * Retry on deadlock in instance_metadata_update * use 'os_type' in ephemeral filename only if mkfs defined * ValueError should use '%' instead of ',' * Setting the xen vm device id on vm record * Rename instance_type to flavor in nova.utils and nova.compute.utils * Rename instance_type to flavor in nova.cloudpipe * Serialize instance object while building request_spec * Make rebuild use Instance objects * Remove deprecated config aliases * Changed error message to match usage * Add configurable 120s timeout ovs-vsctl calls * Clarify rebuild_instance's recreate parameter * Clean swap_volume rollback, on libvirt exception * Image cache: move all of the variables to a common place * baremetal: set capabilites explicitly * Remove docker's unsupported capabilities * Set a sane default for state_path * Fix incorrect exception on os-migrateLive * barematal: Cleanup the calls to assertEqual * Refactor time conversion helper function for objects in db api * Fixes ConfigDrive bug on Windows * Remove smoketests * Revert graceful shutdown patch * Handle InstanceUserDataMalformed in create server v2 api * Enable remote debugging for nova * Fix race in unit tests, which can cause gate job to fail * Add boolean convertor to cells sync_instances API * Initialize iptables rules on initialization of MetadataManager * vmwareapi: raise on get_console_output * hyperv: remove get_console_output method * List NotImplementedError as client exception * api: handle NotImplementedError for console output * Make Serializer/Conductor able to backlevel objects * Make ec2 use Flavor object * Move restore and rebuild operations to Flavor objects * Add flavor access methods to Instance object * Rename instance_type to flavor in nova.network tree * Stop, Rescue, and Delete should give guest a chance to shutdown * Remove middleware ratelimits from v3 api * Remove unused variables in neutron api interface and neutron tests * Remove unneeded call to conductor in network interface * Return client tokens in EC2 DescribeInstances * Require List objects to be able to backlevel their contents * Make Instance object compatible with older compute nodes * Deprecate/remove scheduler select_hosts() * Pass Instance object to console output virt driver api * Send Instance object to validate_console_port * Pass Instance object to compute vnc rpc api * Update vnc virt driver api to take Instance object * Add error as not-in-progress migration status * Don't replace instance.info_cache on each save * Add boolean convertors for migrate_live API * VMWare: bug fix for Vim exception handling * XenAPI: Synchronize on all VBD plug/unplug per VM * Add IPAddress field type in object models * Fixes errors on start/stop unittest * Use a dictionary to eliminate the inner loop in _choose_host_filters() * Correct uses of :params in docstrings * Delete iSCSI devices after volume detached * Prevent spoofing instance_id from neutron to nova * Replaces call to lvs with blockdev * Refactor PXE DHCP Option support * Normalize the weights instead of using raw values * Compact pre-Icehouse database migrations <= 170 * XenAPI: Speedup host_ref cannot change - get it once * Updated from global requirements * Rename instance_type to flavor in test_utils and nova.tests.utils * Rename instance_type to flavor in baremetal virt driver * VMware: fix bug when more than one datacenter exists * Sync oslo lockutils for "fix lockutils.lock() to make it thread-safe" * Move calls to os.path.exists() in libvirt imagebackend * Ensure api_paste_conf is an absolute path * Log exception in _heal_instance_info_cache * Raise better exception if duplicate security groups * Remove the largely obsolete basepath helper * libvirt: Custom disk_bus setting is being lost on hard_reboot * Libvirt: Making the video driver element configurable * Give migrations tests more time to run * Remove the api_thread_pool option from libvirt driver * baremetal: volume driver refactoring and tests * Sync middleware audit, base, and notifier from oslo * Get test_openAuth_can_refuse_None_uri to cleanup after itself * Hide injected_file related quotas for V3 API * Make obj_from_primitive() preserve version information * Cells: check states on resize/rebuild updates * Make flavor_access extension use Flavor object * libvirt: add a test to guard against set_host_enabled raising an error * Fix UnboundLocalError in libvirt.driver._close_callback * Quota violations should not cause a stacktrace in the logs * Enforce permissions in snapshots temporary dir * Sync rpc fix from oslo-incubator * Fix changes-since filter for list-servers API * Make it possible to override test timeout value * Imported Translations from Transifex * libvirt: consider minimal I/O size when selecting cache type * Setup destination disk from virt_disk_size * Add Flavor object * Add atomic flavor access creation * Add extra_resources field to compute_nodes table * Recommend the right call instead of datetime.now() * libvirt: remove unused imports from fake libvirt utils * VMware: fix disk extend bug when no space on datastore * Fix monkey_patch docstring bug * Change unit test for availability_zones.reset_cache * Make compute support monitors and store metrics * Added a new scheduler metrics weight plugin * LXC: Image device should be reset in mount() and teardown() * Add shutdown option to cleanup running periodic * xenapi: Update VM memory overhead estimation * Misc typos in nova * Add default arguments for Connection class * Update Instance from database after destroy * Libvirt: Adding video device to instances * Configuration element for describing video drivers * Don't log stacktrace for UnexpectedTaskStateError * Extends V3 servers api for pci support 2014.1.b1 --------- * LOG.warn() and LOG.error() should support translation * Minor change for typo from patch 80b11279b * network_device_mtu should be IntOpt * Fix HTTP response code for network APIs and improve error message * Use password masking utility provided in Oslo * Sync log.py from Oslo-incubator * xenapi: stop hang during glance download * Clean up test cases for compute.manager._check_instance_build_time * Recover from IMAGE-* state on compute manager start-up * Document when config options were deprecated * VMware: Fix unhandled session failure issues * Use utils method when getting instance metadata and system metadata * Add status mapping for shutoff instance when resize * Fix docstring on SnapshotController * Fix trivial typo 'descirption' * Compact pre-Icehouse database migrations <= 160 * Compact pre-Icehouse database migrations <= 150 * Compact pre-Icehouse database migrations <= 140 * Remove redundant body validation for createBackup * Change evacuate test hostnames to preferable ones * Change conductor live migrate task to use select_destinations() * Ensure proper notifications are sent when build finishes * Periodic task _heal_instance_info_cache can now use slave db * docker: access system_metadata as a dict * Don't overwrite marker when checking if it exists * There is no need to set VM status to ERROR on a failed migration * DB migration 209: Clean up child rows as well * Cleanup ec2/metadata/osapi address/port listen config option help * Recover from build state on compute manager start-up * Comply with new hacking 0.8 release * Correct network_device_mtu help string * Remove last of AssertEquals * Fix Neutron Authentication for Metadata Service * Update help for osapi_compute_listen_port * libvirt: host update disable/enable report HTTP 400 * Catch InstanceIsLocked exception on server actions * VMware: enable driver to work with postgres database * Make test_evacuate from compute API DRYer * Fix testcase config option imports * Fix "in" comparisons with one element tuples * Remove _security_group_chain_name from nova/virt/firewall.py * Remove duplicate setting of os_type in libvirt config builder * Fix logic in LibvirtConnTestCase._check_xml_and_uri * Remove unused flag 'host_state_interval' * Make object compat work with more positional args * Fix LibvirtGenericVIFDriver.get_config() for quota * Fix a tiny double quote matching in field obj model * Move flags in libvirt's volume to the libvirt group * Check Neutron port quota during validate_networks in API * Failure during termination should always leave state as Error(Deleting) * Remove duplicate FlavorNotFound exception handling in server create API * Make check more pythonic * Make sure report_interval is less than service_down_time * Set is_public to False by default for volume backed snapshots * Delete instance faults when deleting instance * Pass Instance object to spice compute rpc api * Pass Instance object to get_spice_console virt api * Remove update_service_capabilities from scheduler rpc api * Remove SchedulerDependentManager * powervm: remove powervm virt driver from nova * libvirt: Provide a port field for GlusterFS network disks * Add API input validation framework * Remove duplicate BuildAbortException block * Remove compute 2.x rpc api * Add v3 of compute rpc API * Fix incorrect argument position in DbQuotaDriver * Change ConductorManager to self.db when record cold_migrate event * instance state will be stuck in unshelving when unshelve fails * Fix some i18n issue in nova/compute/manager.py * Don't gate on E125 * Supplement 'os-migrateLive' in actions list * Corrected typo in host_manager * Fix a lazy-load exception in security_group_update() * fakevirt: return hypervisor_version as an int instead of a string * Bump to sqlalchemy-migrate 0.8.2 * ComputeFilter shouldn't generate a warning for disabled hosts * Remove cert 1.X rpc api * Add V2 rpc api for cert * Remove console 1.X rpc api * Do not hide exception in update_instance_cache_with_nw_info * Wrong handling of Instance expected_task_state * XenAPI: Fix caching of images * Extend LibvirtConfigGuest to parse guest cpu element info * Rename instance_type parameter in migrate_disk_and_power_off to flavor * convert min_count and max_count to type int in nova v3 api * Add decorator expected_errors for flavors_extraspecs v3 * Remove nullable=True in models.py which is set by default * baremetal: Make api validate mac address * Use 204 instead of 202 for delete of keypairs v3 * Fix log message format issue for api * Remove "set()" from CoreAPIMissing exception * Move flag in libvirt's vif to the libvirt group * Move flag in libvirt's utils to the libvirt group * Move flags in libvirt's imagebackend to the libvirt group * Extend the scheduler HostState for metrics from compute_node * docker: return hypervisor_version as an int rather than a string * Sync Log Levels from OSLO * Removes check CONF.dhcp_options_enabled from nova * Improved debug ability for log message of cold migration * Adjust the order of notification for shelve instance * Add FloatField for objects * XenAPI: Fix config section usage * Fix performance of Server List with Neutron for Admins * Add context as parameter for two libvirt APIs * Add context as parameter for resume * xenapi: move session into new client module * xenapi: stop key_init timeout failing set password * xenapi: workaround vbd.plug race * Address infinite loop in nova compute when getting network info * Use of logging in native thread causes deadlock connecting to libvirtd * Add v3 api samples for shelve * Imported Translations from Transifex * libvirt: Fix log message when disable/enable a host * Fix missing format specifier in ImagePropertiesFilter log message * Sync the DB2 communication error code change from olso * baremetal: refactor out powervm dependency * handle migration errors * Make compute manager _init_instance use native objects * Fix for reading the xenapi_device_id from image metadata * Check if reboot request type is None * Use model_query() instead of session.query in db.instance_destroy * Fix up spelling mistake * Periodic task _poll_unconfirmed_resizes can now use slave db * Include image block device maps in info * Sync local from oslo * objects: declare some methods as static * Handle UnicodeEncodeError in validate_integer * Remove traces of V3 personality extension from api samples * Removes os-personalities extension from the V3 API * VMware: add support for VM diagnostics * Remove useless api sample template files for flavor-rxtx v3 * Fix libvirt evacuate instance on shared storage fails * Fixes get_vm_storage_paths issue for Hyper-V V2 API * Clean up how test env variables are parsed * Add missing argument max_size in libvirt driver * VMware: Always upload a snapshot as a preallocated disk * Fix empty selector XML bug * Libvirt:Instance resize confirm issue against NFS * Add V2 rpc api for console * Fix sample parameter of agent API * VMware: fix snapshot failure when host in maintenance mode * Clean up unused variables * Add a driver method to toggle instance booting * Fix cells instance_create extra kwarg * handle empty network info in instance cache * Remove deprecated instance_type alias from nova-manage * xenapi: kernel and ramdisk missing after live-migrate * Remove V2 API version of coverage extensions * Remove V3 API version of coverage extension * Update openstack/common/periodic_task * Use 201 instead of 200 for action create of flavor-manage v3 * Enforce metadata string type on key/value pairs * Fixes RequestContext initialization failure * Move flags in libvirt's imagecache to the libvirt group * Move base_dir_name option to somewhere more central * Move some libvirt specific flags into a group * Removed unused instance object helper function * Update openstack/common/lockutils * Rename InstanceType exceptions to Flavor * Added monitor (e.g. CPU) to monitor and collect data * Conditionalise automatic enabling of disabled host * Users with admin role in Nova should not re-auth with Neutron * Use 400 instead of 422 for invalid input in v3 servers core * Fix limits v3 follow API v3 rules * Remove used_limits extension from the V3 API * Remove reduntant call to update_instance_info_cache * Add flavor-extra-specs to core for V3 API * Add flavor-access to core for V3 API * Remove unused libvirt_ovs_bridge flag * Fix AttributeError(s) from get_v4/6_ips_by_interface * Raising exception for invalid floating_ip's ID * libvirt: Allow delete to complete when a volume disconnect fails * replace assertNotEquals with assertNotEqual * Add V3 api samples for access_ips * Add v3 api samples for scheduler-hints * Add v3 api samples for availability_zone * Add V3 API sample for server's actions * Cache Neutron Client for Admin Scenarios * More instance_type -> flavor renames in db.api * Cache compute node info in Hypervisor api * Reverse the quota reservation in revert_resize * Rename virtapi.instance_type_get to flavor_get * Xenapi: Allow windows builds with xentools 6.1 and 6.2 * Make baremetal support metadata for ephemeral block-device-mapping * Make baremetal_deploy_helper understand ephemeral disks * Removed unused methods from db.api * Fix type mismatch errors in NetworkTestCase * VMware: Detach volume should not delete vmdk * xenapi: Fix agent update message format * xenapi: Fix regression issue in agent update * Shrink the exception handling range * Moved quota headroom calculations into quota_reserve * Remove dup of LibvirtISCSIVolumeDriver in LibvirtISERVolumeDriver * Replace assertEquals with assertEqual - tests/etc * libvirt: pass instance to a log() call in the standard way * xenapi: Move settings to their own config section * domainEventRegisterAny called too often * Allow configuring the wsgi pool size * driver tests (loose ends): replace assertEquals with assertEqual * baremetal: replace assertEquals with assertEqual * image tests: replace assertEquals with assertEqual * virt root tests: replace assertEquals with assertEqual * Remove unnecessary steps for cold snapshots * baremetal: Make volume driver use a correct source device * Update quota-class-set/quota-set throw 500 error * Add log_handler to implement the publish_errors config option * Imported Translations from Transifex * Enable non-ascii characters in flavor names * Move docker specific options into a group * Check return code of command instead of checking stderr * Added tests for get_disk_bus_for_disk_dev function * Checking existence of index before dropping * add hints to api_samples documentation * xenapi: check for IP address in live migration pre check * Remove live_snapshot plumbing * Remove unused local variable in test_compute * Make v3 admin_password parameters consistent * Flavor name should not contain only white spaces * fix a typo error in test_libvirt_vif.py * Remove unused local variables in test case * Rename _get_vm_state to _get_vm_status * Ensure deleted instances' status is always DELETED * Let resource_tracker report right migration status * Imported Translations from Transifex * nit: fix indentation * Always pass context to compute driver destroy() * Imported Translations from Transifex * db tests: replace assertEquals with assertEqual * compute tests: replace assertEquals with assertEqual * Catch exception while building due to instance being deleted * Refactor UnexpectedTaskStateError for handling of deleting instances * Parted 'invalid option' in XenAPI driver * Fix `NoopQuotaDriver.get_(project|user)_quotas` format * Send delete.end with latest instance state * Add missing fields in DriverBlockDevice * Fix the boto version comparison * Add test for class InsertFromSelect * Process image BDM earlier to avoid duplicates * Clean BDM when snapshoting volume-backed instances * Remove superflous 'instances' joinedload * Fix OLE error for HyperV * Make the vmware pause/unpause unit tests actually test something * Fixes the destroy() method for the Docker virt driver * xenapi: converting XenAPIVolumeTestCase to NoDB * Move `diff_dict` to compute API * Add compatibility for InstanceMetadata and primitives * Issue brctl/delif only if the bridge exists * ensure we don't boot oversized images * Add V3 API samples for config-drive * Remove duplicated test * Add notification for host operation * Sync log from oslo * Replace assertEquals with assertEqual - tests/scheduler * Make non-admin users can unshelve a server * Fix interface-attach removes existing interfaces from db * Correct exception handling * Utilizes assertIsNone and assertIsNotNone - tests/etc * Use elevated context in resource_tracker.instance_claim * Add updates and notifications to build_and_run_instance * Add network handling to build_and_run_instance * Make unshelve use new style BDM * Make _get_instance_nw_info() use Instance object * Convert evacuation code to use objects * Deprecate two security_group-related methods from conductor * Make metadata server use objects for Instance and Security Groups * Replace assertEquals with assertEqual - tests/api * Remove security_group-related methods from VirtAPI * Make virt/firewall use objects for Security Groups and Rules * Drop auth_token configs for api-paste.ini * Add auth_token settings to nova.conf.sample * Use _get_server_admin_password() * Pass volume_api to get_encryption_metadata * Comments for db.api.compute_node_*() methods * Fix migration 185 to work with old fkey names * Adds V3 API samples for user-data * Enforce compute:update policy in V3 API * tenant_id implies all_tenants for servers list in V3 API * Move get_all_tenants policy enforcement to API * all_tenants=0 should not return instances from all tenants * Utilizes assertIsNone and assertIsNotNone - tests/virt * xenapi: workaround for failing vbd detach * xenapi: strip base_mirror after live-migrate * xenapi: refactor get_all_vdis_in_sr * Remove unused expected_sub_attrs * Remove useless variable from libvirt/driver.py * Add a metadata type validation when creating vm * Update schema_diff.py to use 'postgresql' URLs * Disable nova-compute on libvirt connectivity exceptions * Make InstanceInfoCache load base attributes * Add SecurityGroupRule object * Add ephemeral_mb record to bm_nodes * Stylistic improvement of models.ComputeNodeStat * clean up numeric expressions in tests * replaced e.message with unicode(e) * Add DeleteFromSelect to avoid database's limit * Imported Translations from Transifex * Utilizes assertIsNone and assertIsNotNone - tests/api * Include name/level in unit test log messages * Remove instance_type* proxy methods from nova.db.api * Add InstanceList.get_by_security_group() * Make security_group_rule_get_by_security_group() honor columns * Claim IPv6 is unsupported if no interface with IPv6 configured * Pass thru credentials to allow re-authentication * network tests: replace assertEquals with assertEqual * Nova-all: Replace basestring by six for python3 compatability * clean up numeric expressions with byte constants * Adds upper bound checking for flavor create parameters * Remove fake_vm_ref from test_vmwareapi.py * xen tests: replace assertEquals with assertEqual * Fix tests to work with mysql+postgres concurrently * Enable extension access_ips for v3 API * Correct update extension point's check_func for v3 server's controller * Updates the documentation for nova unit tests * Remove consoleauth 1.X rpc api * consoleauth: retain havana rpc client compat * Pull system_metadata for notifications on instance.save() * Allow _sync_power_states periodic task to hit slave DB * Fix power manager hangs while executing ipmitool * Update my mailmap * Stored metrics into compute_nodes as a json dictionary * Bad except clauses order causes wrong text in http response * Add nova.db.migration.db_initial_version() * Fix consoleauth check_token for rpcapi v2 * Nova db/api.py docstring cleanups.. * Adds XML namespace example for disk config extension * Remove multipath mapping device descriptor * VMware: fix VM resize bug * VMware: fix bug for reporting instance UUID's * Remove extra space in tox.ini * Fix migrate w/ cells * Add tests for compute (child) cell * Call baselineCPU for full feature list * Change testing of same flavor resize * Fix bad typo in cloudpipe.py * Fix compute_api tests for migrate * Replace basestring by six for python3 compatability * Add flavor-manage to core for V3 API * Refactor unit tests code for python3 compatability * make libvirt driver get_connection thread-safe * Remove duplicates from exceptions list * Apply six for metaclass * Add byte unit constants * Add block device handling to build_and_run_instance * Reply with a meaningful exception, when libvirt connection is broken * Fix getting nwinfo for Instance obj * Make cells info_cache updates more tolerant * Raise an error if module import fails * Drop RPC securemessage.py and crypto module * Remove deprecated libvirt VIF driver code * nova.exception does not have a ProcessExecutionError * Fix setting backdoor port in service start * Sync lockutils from oslo * Fix wrong description when updating quotas * Expose additional status in baremetal API extension * migrate server doesn't raise correct exception * Make security_group_get() more flexible about joins * Make Object FieldType take an object name instead of a class * Hyper-v: Change the hyper-v error log for debug when resize failed * Adds V3 API samples for the disk-config extension * Utilizes assertIn - tests/etc * Fix all scripts to honor the enabled_ssl_apis flag * Updated from global requirements * Fix i18n issue for nova/compute/manager.py * Change tab to blank space in hypervisors-detail-resp * Fixing ephemeral disk creation * Merging two mkfs commands * xenapi: ephemeral disk partition should fill disk * Fix the ConsolesController class doc string * xenapi: Speeding up the easy cases of test_xenapi * xenapi: Speeding up more tests by switching to NoDB * Remove .pyc files before generating sample conf * xenapi: migrate multiple ephemeral disks * Fail quickly if file injection for boot volume * Add obj_make_compatible() * Updated from global requirements * Make cells 'flavorid' for resizes * Fixes unicode issue in the Hyper-V driver * Add missing ' to extra_specs debug message * VMware: Fix ValueError unsupported format character in log message * graceful-shutdown: add graceful shutdown into compute * remove unused network module from certificates api extension * Sync fixture module from oslo * Fixes Invalid tag name error when using k:v tagname * Fix tests for migration 227 to check sqlite * Adds V3 API samples for console output * Add V2 rpc api for consoleauth * Update version aliases for rpc version control * Improve object instantiation syntax in some tests * A nicer calling convention for object instantiation * Updates OpenStack Style Commandments link * Updated from global requirements * Adding support for multiple hypervisor versions * Manage None value for the 'os_type' property * Add CIDR field type * Validate parameters of agent API * Adding Read-Only volume attaching support to Nova * Update timeutils.py from oslo * Fix docstring related to create_backup API * powervm tests: replace assertEquals with assertEqual * Add V3 API sample for admin-password * Remove duplicated test cases * Add extension access_ips for v3 API * Ensure migration 209 works with NULL fkey values * Cells: Fix instance deletes * Uses oslo.imageutils * Add testr concurrency option for run_tests.sh * Fix the image name of a shelved server * xenapi: test_driver should use NoDBTestCase * xenapi: Speedup vm_util and vmops tests * xenapi: speedup test_wait_for_instance_to_start * Remove xenapi rpm building code * Fixes datastore selection bug * Fixes Hyper-V snapshot spawning issue * Make SecurityGroup receive context * Fix DB API mismatch with sqlalchemy API * Remove aggregate metadata methods from conductor and virtapi * Make XenAPI use Aggregate object * libvirt: add missing i18n support * Adds V3 API samples for attach-interfaces * Make aggregate methods use new-world objects * Add missing key attribute to AggregateList.get_by_host() * Fix i18n issue for nova/virt/baremetal/virtual_power_driver.py * Fix scheduler rpcapi deprecated method comment * Send notifications on keypair create/delete * Use `versionutils.is_compatible` for Dom0 plugin * Use `versionutils.is_compatible` for Nova Objects * Improve logging messages in libvirt driver * xenapi: stop agent errors stopping build * Fix NovaObject versioning attribute usage * xenapi: removes sleep after final upload retry * xenapi: stop using get_all_vdis_in_sr in spawn * populate local-ipv4 address in config drive * Harden version checking for boto * Handle MarkerNotFound better in Flavor API * Sanitize passwords when logging payload in wsgi * Remove unnecessary "LOG.error()" statement * xenapi: simplify _migrate_disk_resizing_up * xenapi: revert on _migrate_disk_resizing_up error * xenapi: make _migrate_disk_resizing_up use @step * libvirt tests: replace assertEquals with assertEqual * Use the oslo fixture module * Port server actions unittests to V3 API Part 2 * Remove unused method _get_res_pool_ref from VMware * Imported Translations from Transifex * Check for None when cleaning PCI dev usage * Fix vmwareapi driver get_diagnostics calls * Remove instance_info_cache_update() from conductor * compute api should throw exception if soft reboot invalid state VM * Make a note about Object deepcopy helper * Avoid caching quota.QUOTAS in Quotas object * Remove transitional callable field interface * Make the base object infrastructure use Fields * Migrate some tests that were using callable fields * Migrate NovaPersistentObject and ObjectListBase to Fields * Migrate Instance object to Fields * Utilizes assertIn - tests/api/etc * Utilizes assertIn - tests/virt * Utilizes assertIn - tests/api/contrib * Utilizes assertIn - tests/api/v3 * Make scheduler disk_filter take swap into account * Add variable to expand for format string * Make quota sets update type handling a bit safer * Add test_instance_get_active_by_window_joined * Fixes error on live-migration of volume-backed vm * Migrate PciDevice object to Fields * Migrate InstanceInfoCache object to Fields * Migrate InstanceFault object to Fields * Migrate Service object to Fields * Migrate ComputeNode object to Fields * Migrate Quotas object to Fields * Migrate InstanceGroup object to Fields * Migrate InstanceAction and InstanceActionEvent objects to Fields * Move exception definitions out of db api * Remove unused scheduler rpcapi from compute api * Libvirt: disallow live-mig for volume-backed with local disk * xeanpi: pass network_info to generate_configdrive * Replace incorrect Null checking to return correctly * Fix nova DB 215 migration script logic error * Xenapi: set hostname when performing a network reset * Fix "resource" length in project_user_quotas table * Migrate SecurityGroup object to Fields * Migrate Migration object to Fields * VMware: fix regression attaching iscsi cinder volumes * Remove whitespace from cfg options * cleanup after boto 2.14 fix * Add boto special casing for param changes in 2.14 * xenapi: simplify PV vs HVM selection logic * fix missing host when unshelving * Fix a typo of tabstop * Fix error message of os-cells sync_instances api * Log which filter failed when on log level INFO * Migrate KeyPair object to Fields * Migrate Aggregate object to Fields * Make field object support transitional call-based interface * Add Field model and tests * Fix conductor's object change detection * Remove obsolete redhat-eventlet.patch * Move is_volume_backed_instance to new style BDM * Add a get_root_bdm utility function * Libvirt: allow more than one boot device * Libvirt: make boot dev a list in GuestConfig * Remove compute_api_class config option * Libvirt: add boot_index to block device info dicts * Fixes Hyper-V issue with VHD file format * Update log message for add_host_to_aggregate * Correct use of ConfigFilesNotFoundError * hyperv tests: replace assertEquals with assertEqual * Utilizes assertNotIn * VMware tests: replace assertEquals with assertEqual * Fix incorrect root partition size and compatible volume name * Imported Translations from Transifex * Utilize assertIsInstance * Fix typos in nova/api code * Make `update_test` compatible with nose * Add a custom iboot power driver for nova bm * Fix FK violation errors in InstanceActionTestCase * Fix test_shadow_tables() on PostgreSQL/MySQL * Fix PCI devices DB API tests * Fix DB API tests depending on the order of rows * Use print function rather than print statement * Update default for running_deleted_instance_action * Drop unused BM start_console/stop_console methods * VMware: Network fallback in case specified one not found * baremetal: Add missing method to volume driver * baremetal: Use network API to get fixed IPs * Replace decprecated method aliases in tests * catch exception in start and stop server api * Ensure that the netaddr import is in the 3rd party section * Fix status code of server's action confirm_resize for v3 * Remove duplicated method in test_compute_api.py * Create flavor-access for the tenant when creating a private flavor * Fix root disk not be detached after deleting lxc container * fallocate image only when user has write access * Fixes typo in ListTargets CLI in hyperv driver * Fixes typos in nova/db code * Fixes typos in the files in the nova folder * Avoid clobbering {system_,}metadata dicts passed to instance update * Baremetal: Be more patient with IPMI and BMC * VMware: fix bug with booting from volumes * Fixes typos in nova/compute files * Fixes typos in virt files * Fix docstring for disk_cachemodes * Plug Vif into Midonet using Neutron port binding * VMware: remove deprecated configuration variable * Fix races in v3 cells extension tests * Add V3 API samples for consoles * Update allowvssprovider in xenstore_data * Fix races in cells extension tests * Move `utils.hash_file` -> `imagecache._hash_file` * Remove `utils.timefunc` function * Remove `utils.total_seconds` * Remove `utils.get_from_path` * Fix divergence in attach_interfaces extensions * Replace assert_ with assertTrue * Fixes several misc typos in scheduler code * Fix libvirt test on systems with real iSCSI devices * Reserve 10 migrations for backports * Sync three-part RPC versions support from Oslo * Remove unused dict functions from utils * Avoid mutable default args in _test_populate_filter_props * XenAPI: Add versioning for plugins * Add Docstring to some scheduler/driver.py methods * Libvirt: default device bus for floppy block devs * Fix filter_properties of unshelve API * hyperv: Initialize target_iqn in attach_volume * Log if a quota_usages sync updates usage information 2013.2.rc1 ---------- * Open Icehouse development * baremetal: Fix misuse of "instance" parameter of attach/detach_volume * Fix the wrong params of attach/detach interface for compute driver * Imported Translations from Transifex * Adds missing entry in setup.cfg for V3 API shelve plugin * Avoid spamming conductor logs with object exceptions * Prefix `utils.get_root_helper` with underscore * Remove `utils.debug` * Remove `utils.last_octet` * Remove `utils.parse_mailmap` * Updated from global requirements * Remove unecessary `get_boolean` function * Make Exception.format_message aware of Messages * Disable lazy gettext * VMware: Check for the propSet attribute's existence before using * VMware: fix bug for invalid data access * Make rbd.libvirt_info parent class compatible * Host aggregate configuration throws exception * VMware: Handle cases when there are no hosts in cluster * VMWare: Disabling linked clone doesn't cache images * Fixes inconsistency in flavors list with marker * Fix indentation in virt.libvirt.blockinfo module * Update jsonutils.py from oslo * Fix loading instance fault in servers view * Refactor test cases related to instance object * Use system locale for default request language * Update attach interface api to use new network model * Adds V3 API specific urlmap tests * Catch volume errors during local delete * Fix processutils.execute errors on windows * Fixes rescue doesn't honor enable password conf for v3 * VMware: Fix bug for root disk size * Fix incorrect exception raised during evacuate * Full sync of quota_usages * Fix log format error in lazy-load message * xenapi: reduce impact of errors during SR.scan * Forced scheduling should be logged as Audit not Debug * xenapi: Resize operations could be faster * Resource limits check sometimes enforced for forced scheduling * Skip test if sqlite3 not installed * Add notification for pause/unpause instance * Make LiveMigrateTask use build_request_spec() * Ensure image property not set to None in build_request_spec() * Make sure periodic task sync_power_states continues on error * get_all_flavors uses id as key to be unique * fix the an Unexpected API Error issue in flavor API * Adds V3 API samples for srvcs, tenant usage, server_diagnostics * VMware: Fix SwitchNotFound error when network exists * Fix unicode string values missing in previous patch * Fix stopping instance in sync_power_states * Remove deprecated task states * plug_vif raise NotImplementedError instead of pass * Check instance exists or not when evacuate * xenapi: ignore 500 errors from agent resetnetwork * Add flavor name validation when create flavor * xenapi: enforce filters after live-migration * xenapi: set vcpu cap to ensure weight is applied * Get image metadata in to_xml for generating xml * Add notification on deleting instance without host * Fix V3 API flavor returning empty string for attributes * Fix v3 server rebuild deserializer checking with wrong access_ip key * Windows instances require the timezone to be "localtime" * Don't wrap Glance exceptions in NovaExceptions * Update rootwrap with code from oslo * fix typo & grammer in comment 363-364 * Make Instance.refresh() extra careful about recursive loads * Log object lazy-loads * Ensure we don't end up with invalid exceptions again * Fix console db can't load attribute pool * Fix HTTP response for PortNotFound during boot (v3 API) * Fixes assertion bug in test_cells_weights.py * Remove _get_compute_info from filter_scheduler.py * VMware: fix bug for incorrect cluster access * Add V3 API samples for security-groups * Correct lock path for storage-registry-lock * Moved registration of lifcycle events handler in init_host() * Rebuilding stopped instance should not set terminated_at * Require oslo.config 1.2.0 final * Removes pre_live_migration need for Fixed IPs * Move call to _default_block_device_names() inside try block * Fix several flake8 issues in the plugins/xenserver code * Fix type is overwritten when UPDATE cell without type specified * Adds v3 API samples for hide server addresses and keypairs * Always filter out multicast from reflection * VMware: fix bug with booting from volume * VMware: enable VNC access without user having to enter password * Remove exceptions.Duplicate * Add v3 API samples for rescue * Added 'page_size' param to image list * Fix SecurityGroupsOutputTest v3 security group tests * Fixes file mode bits of compute/manager.py * Adds v3 API samples for hosts extension * Only update PCI stats if they are reported from the host * xenapi: Cleanup pluginlib_nova * Fix Instance object assumptions about joins * Bring up interface when enslaving to a bridge * v3 API samples for servers * xenapi: refactor: move UpdateGlanceImage to common * Imported Translations from Transifex * Fixes modules with wrong file mode bits in virt package * Adds v3 API samples for ips and server_metadata extensions * Fix V3 API server metadata XML serialization * libvirt: add test case for _hard_reboot * Add tests for pre_live_migration * Adds V3 API samples for evacuate,ext-az,ext-serv-attrs * Add V3 API samples for ext-status,hypervisor,admin-actions * Code change for regex filter matching * Convert TestCases to NoDBTestCase * VMware: ensure that resource exists prior to accessing * Fixes modules with wrong file mode bits * Fixes test scripts with wrong bitmode * Update sample config generator script * Instance object incorrectly handles None info_cache * Don't allow pci_devices/security_groups to be None * Allow for nested object fields that cannot be None * Object cleanups * Convert TestCases to NoDBTestCase * Convert TestCases to NoDBTestCase * Actually fix info_cache healing lazy load * Fixes host stats for VMWareVCDriver * libvirt: ignore false exception due to slow NFS on resize-revert * Syncs install_venv_common.py from oslo-incubator * Correct deleted_at value in notification messages * VMwareVCDriver Fix sparse disk copy error on spawn * Remove unused _instance_update() method in compute api * Change service id to compute for compute/api.py * XenAPI raise InstanceNotFound in _get_vm_opaque_ref * Replace OpenStack LLC with OpenStack Foundation * Send notification for any updates to instance objects * Add flag to make baremetal.pxe file injection optional * Force textmode consoles on baremetal * Typo: certicates=>certificates in nova.conf * Remove print statement from test_quotas that fails H233 check * Fix for os-availability-zone/detail returning 500 * Convert TestCases to NoDBTestCase * Fixes the usage of PowerVMFileTransferFailed class * MultiprocessWSGITest wait for workers to die bug * Prune node stats at compute node delete time * VMware: datastore regex not honoured * VMware: handle exceptions from RetrievePropertiesEx correctly * VMware: Fix volume detach failure * Remove two unused config options in baremetal * Adds API samples and unitests for os-server-usage V3 extension * xenapi: Make rescue safer * Add V3 API samples for quota-sets/class-sets,inst-usage-audit-log * Fix problem with starting Windows 7 instances using VMware Driver * VMware: bug fix for instance deletion with attached volume * Fix migration 201 tests to actually test changes * Don't change the default attach-method * Fix snapshot failure with VMwareVCDriver * Fix quota direct DB access in compute * Add new-world Quota object * Fix use of bare list/dict types in instance_group object * Fix non-unicode string values on objects * Add missing get_available_nodes() refresh arg * Make Instance.Name() not lazy-load things * Add debugging to ComputeCapabilitiesFilter * xenapi: fix pep8 violations in nova plugins * Retry on deadlock in instance_metadata_delete * Make virt drivers use a consistent hostname * [VMware] Fix problem transferring files with ipv6 host * VMware: Fix ensure_vlan_bridge to work properly with existing DVS * Fix network info injection in pure IPv6 environment * delete a non existent flavor extra spec returns 204 * Don't use ModelBase.save() inside of transaction * send the good binding to neutron after live-migration * Add linked clone related unit tests for VMware Hyper * Ensure anti affinity scheduling works * pci passthrough bug fix:hasattr dones not work for dict * Fix rename q_exc to n_exc (from quantum to neutron) * Improve "keypair data is invalid" error message * Enable fake driver can live migration * Don't use sudo to discover ipv4 address * xenapi: Fix rescue * Fix create's response is different with requested for sec-grps V3 * Fix logging of failed baremetal commands * Add v3 API samples for os-extended-volumes * Better help for generate config * Fix hyper-v vhd real size bigger than flavor issue * Remove unused and duplicate code * Policy check for forced_host should be before the instance is created * Remove cached console auth token after migration * Don't generate notifications when reaping running_deleted instances * Add instance_flavor_id to the notification message * Edits for nova.conf.sample * xenapi: fix where root_gb=0 causes problems * Wire in ConfKeyManager._generate_hex_key! * Drop unused logger from keymgr/__init__.py * Move required keymgr classes out of nova/tests * Translate more REST API error messages * pci passthrough fails while trying to decode extra_info * Update requirements not to boto 2.13.0 * Port server actions unittests to V3 API Part 1 * Remove unused method in scheduler driver * Ignore H803 from Hacking * Fixes misuse of assertTrue in virt test scripts * Add missing notifications for rescue/unrescue * Libvirt: volume driver set correct device type * Make v3 API versions extensions core * Make Instance.save() log missing save handlers * Don't fail if volume has no image metadata * Get image properties instead of the whole image * Remove extra 'console' key for index in extensions consoles v3 * Fix V3 API server extension point exception propagation * VMware: nova-compute crashes if VC not available * Update mailmap for jhesketh * Code change for nova support glance ipv6 address * disassociate_address response should match ec2 * Adds V3 API samples for remote consoles, deferred delete * Fix asymmetric view of object fields * Use test.TestingException where possible * Add encryption support for volumes to libvirt * VMware: fix driver support for hypervisor uptime * Wrong arguments when calling safe_utils.getcallargs() * Add key manager implementation with static key * Remove duplication in disk checks * Change the duplicate class name TestDictMatches in test_matches.py * Add alias as prefix to request params for config_drive v3 * xenapi: Add per-instance memory overhead values * Fixes misuse of assertTrue in test scripts * Remove unused and wrong code in test_compute.py * Remove cases of 'except Exception' in tests.image * Remove _assert_compute_node_has_enough_memory from filter_scheduler.py * Fix regression issues with cells target filter * Remove out of date list of jenkins jobs * Don't lose exception info * Add filter for soft-deleted instances to periodic cleanup task * Don't return query from db API * Update fedora dev env instructions * Only return requested network ID's * Ensure get_all_flavors returns deleted items * Fix the order of query output for postgres * Fix migration 211 to downgrade with MySQL * Removed duplicated class in exception.py * Fix console api pass tuple as topic to console rpc api * Enable test_create_multiple_servers test for V3 API * VMware image clone strategy settings and overrides * Reduce DB load caused by heal instance info cache * Clean up object comparison routines in tests * Clean up duplicated change-building code in objects * disable direct mounting of qcow2 images by default * xenapi: ensure finish_migration cleans on errors * xenapi: regroup spawn steps for better progress * xenapi: stop injecting the hostname during resize * xenapi: add tests for finish_migration and spawn * xenapi: tidy ups to some spawn related methods * xenapi: move kernel/ramdisk methods to vm_utils * xenapi: ensure pool based migrate is live * Fix live-migrate when source image deleted * Adds v3 API samples for limits and simple tenant usage * Return a NetworkInfo object instead of a list * Fix compute_node_get_all() for Nova Baremetal * Add Neutron port check for the creation of multiple instances * Remove unused exceptions * Add V3 API samples for flavor-manage,flavor-extra-specs * Add V3 API samples for flavors,flavor-rxtx,flavor-access * Catch more accuracy exception for _lookup_by_name * Fixes race cond between delete and confirm resize * Fixes unexpected exception message in ProjectUserQuotaNotFound * Fixes unexpected exception message in PciConfigInvalidWhitelist * Add missing indexes back in from 152 * Fix the bootfile_name method call in baremetal * update .mailmap * Don't stacktrace on ImageNotFound in image_snapshot * Fix PCIDevice ignoring missing DB attributes * Revert "Call safe_encode() instead of str()" * Avoid errors on some actions when image not usable * Add methods to get image metadata from instance * Fix inconsistent usages for network resources * Revert baremetal v3 API extension * Fixes misuse of assertTrue in compute test scripts * add conf for number of conductor workers * xenapi: Add efficient impl of instance_exists() 2013.2.b3 --------- * Updated from global requirements * Fix failure to emit notification on Instance.save() * MultiprocessWSGITest wait for workers to die bug * Synchronize the key manager interface with Cinder * Remove indirect dependency from requirements.txt * Clean up check for migration 213 * Add V3 API samples for instance-actions,extenions * fix conversion type missing * Enable libvirt driver to use the new BDM format * Allow block devices without device_name * Port to oslo.messaging.Notifier API * Add expected_errors for extension aggregates v3 * Refresh network info cache for secgroups * Port "Make flavors is_public option .." to v3 tree * Add missing Aggregate object tests * Generalize the _make_list() function for objects * PCI passthrough Libvirt vm config * Add columns_to_join to instance_update_and_get_original * XenAPI: Allow 10GB overhead on VHD file check size * Adds ephemeral storage support for Hyper-V * Adds Hyper-V VHDX support * Create mixin class for common DB fields * Deprecate conductor migration_get() * Change finish_revert_resize paths to use objects * Change finish_resize paths to use objects * Change resize_instance paths to use objects * VMware: Nova boot from cinder volume * VMware: Multiple cluster support using single compute service * Nova support for vmware cinder driver * Adds Hyper-V dynamic memory support * xenapi: Fix download_handler fallback * Ensure old style images can be resized * Add nova.utils.get_root_helper() * Inherit base image properties on instance creation * Use utils.execute instead of subprocess * Fixes misuse of assertTrue in Cells test scripts * Remove versioning from IOVisor APIs PATH * Revert "Importing correlation_id middleware from oslo-incubator" * update neutronclient to 2.3.0 minimum * Adds metrics collection support in Hyper-V * Port all rpcapi modules to oslo.messaging interface * Fix a gross duplication of context code in objects tests * Make compute_api use Aggregate objects * Add Aggregate object model * Add dict and list utility functions for object typing * VMware: remove conditional suds validation * Limit instance fault messages to 255 characters * Add os-assisted-volume-snapshots extension * Scheduler rpcapi 2.9 is not backwards compatible * Adds support for Hyper-V WMI V2 namespace * Port flavormanage extension to v3 API Part 2 * Add os-block-device-mapping to v3 API * Improves Hyper-V vmutils module for subclassing * xenapi: add support for auto_disk_config=disabled * Check ephemeral and swap size in the API * Adds V3 API samples for cells and multinic * Increase volume created checking retries to 60 * Fix changes_since for V3 API * Make v3 API console-output extension core * Makes v3 API keypairs extension core * Add support for API message localization * Fix typo and indent error in isolated_hosts_filter.py * Adds 'instance_type' param to build_request_spec * Guest-assisted-snaps libvirt implementation * Improve EC2 API error responses * Remove EC2 postfix from InvalidInstanceIDMalformedEC2 * Introduce InternalError EC2 error code * Introduce UnsupportedOperation EC2 error code * Introduce SecurityGroupLimitExceeded EC2 error code * Introduce IncorrectState EC2 error code * Introduce AuthFailure EC2 error code * Fix ArchiveTestCase on PostgreSQL * Fix AggregateDBApiTestCase on PostreSQL and MySQL * Port Cheetah templates to Jinja2 * Libvirt: call capabilites before getVersion() * Remove _report_driver_status from compute/manager.py * Interpret BDM None size field as 0 on compute side * Add test cases for resume_state_on_host_boot * Add scheduler support for PCI passthrough * Fix v3 swap volume with wrong signature * vm_state and task_state not updated during instance delete * VMware: use VM uuid for volume attach and detach * xenapi: support raw tgz image download * xenapi: refactor - extract image_utils * Add block_device_mapping_get_all_by_instance to virtapi * Sync rpc from oslo-incubator * Fix the multi-instance quota message * Fix virtual power driver fails silently * VMware: Config Drive Support * xenapi: skip metadata updates when VM not found * Make resource_tracker record host_ip * Disable compute fanout to scheduler * Make image_props_filter use information from DB not RPC * Make compute_capabilities_filter use information from DB not RPC * XenAPI: More operations with LVM-based SRs * XenAPI: make_partition fixes for Dom0 * Fix wrong method call in baremetal * powervm: make start_lpar timeout * Disable retry filter with force_hosts or force_nodes * Call safe_encode() instead of str() * Fix usage of classmethod in various places * Fix V3 API quota_set tests using V3 url and request * Handle port over-quota when allocating network for instance * Fix warning log message typo in resource_tracker.instance_claim * Sync filetuils from oslo-incubator * Fix VMware fakes * DRY up use of @wrap_exception() decorator * Remove unused fake run_instance() method * Use ExceptionHelper to bypass @client_exceptions * Added new hypervisor to support Docker containers * Introduce InvalidPermission.Duplicate EC2 error code * Fix and gate on H302 (import only modules) * On snapshot errors delete the image * Remove dis/associate actions from security_groups v3 * Add volume snapshot delete API test case * Assisted snapshots compute API plumbing * Adds V3 API samples for agents, aggregates and certificates * Adds support for security_groups for V3 API server create * powervm: Use FixedIntervalLoopingCall for polling LPAR status * xenapi: agent not inject ssh-key if cloud-init * Tenant id filter test is not correct * Add PCI device tracker to compute resource tracker * PCI devices resource tracker * PCI device auto discover * Add PCI device filters support * Avoid swallowing exceptions in network manager * Make compute_api use Service and ComputeNode objects * Adding VIF Driver to support Mellanox Plugin * Change prep_resize paths to use objects * Make backup and snapshot use objects * Deprecate conductor migration_create() * Make inject_network_info use objects * Convert reset_network to use instance object * Make compute_api use objects for lock/unlock * Add REUSE_EXT in _swap_volume call to blockRebase * Remove unused _decompress_image_file from powervm operator class * powervm: actually remove files after migration * Fix to disallow server name with all blank spaces (v3 API) * Add mock to test-requirements * xenapi: Improve test_xenapi unit testing performance * Sets policy settings so V3 API extensions are discoverable * Pass objects for revert and confirm resizes * Convert _poll_unconfirmed_resizes to use Migration object * Make compute_api confirm/revert resize use objects * Make compute_api migrate/resize paths use instance objects * Fix race when running initialize_gateway_device() * fix bad usage of exc_info=True * Use implicit nullable=True in sqlalchemy model * Introduce Invalid* EC2 error codes * Improve parameter related EC2 error codes * Disconnect from iSCSI volume sessions after live migration * Correct default ratelimits for v3 * Improve db_sqlalchemy_api test coverage * Safe db.api.compute_node_get_all() performance improvement * Remove a couple of unused stubs * Fix Instance object issues * Adds API version discovery support for V3 * Port multiple_create extension to V3 API * Add context information to download plugins * Adds V3 API samples for migrations * Filter network by project id * Added qemu guest agent support for qemu/kvm * PCI alias support * Add PCI stats * Raise timeout in fake RPC if no consumers found * Stub out instance_update() in build instance tests * Mock out action event calls in build instance test * powervm: revert driver to pass for plug_vifs * Remove capabilities.enabled from test_host_filters * xenapi: through-dev raw-tgz image upload to glance * Add PCI device object support * Store CONF.baremetal.instance_type_extra_specs in DB * Pci Device DB support * VMware: remove redundant default=None for config options * Move live-migration control flow from scheduler to conductor * Fix v3 extensions inherit from wrong controller * Fix network creation in Vlan mode * compute rpcapi 2.29 is not backwards compatible * Fix the message of coverage directory error * Fix error messages in v3 aggregate API * compute rpcapi 2.37 is not backwards compatible * use 'exc_info=True' instead of import traceback * Add env to make_subprocess * Remove unused nova.common module * Adds Flavor ID validations * Imported Translations from Transifex * Add DocStrings for function allocate_for_instance * Removes V3 API images and image_metadata extensions * Powervm driver now logs ssh stderr to warning * Update availability_zone on time if it was changed * Add db.block_device_mapping_get_by_id * Add volume snapshot APIs to driver interface * Pass the destination file name to download modules * Fix typo in baremetal docs * VMware: clean up get_network_with_the_name * Stylistic improvement of compute.api.API.update() * Removes fixed ips extension from V3 API * Libvirt: fix KeyError in set_vif_bandwidth_config * Add expected_errors for migrations v3 * Add alias as prefix to request params for user_data v3 * Fix migrations index * Should finish allocating network before VM reaches ACTIVE * Fixes missing host in Hyper-V get_volume_connector * Fix various cells issues due to object changes * Document CONF.default_flavor is for EC2 only * Revert task state when terminate_instance fails * Revert "Make compute_capabilities_filter use ..." * Add resource tracking to build_and_run_instance * Link Service.compute_node with ComputeNode object * Add ComputeNode object implementation * Add Service object implementation * Make compute_api use KeyPair objects * Add KeyPair object * Fix spice/vnc console api samples tests * Fix network manager tests to use correct network host * Stub out get_console_topic() in test_create_console * Stub out instance_fault_create() in compute tests * Fix confirm_resize() mock in compute tests * Fix rpc calls on pre/post live migration tests * Stub out setup_networks_on_host() in compute tests * maint: remove redundant disk_cachemode validation entry * Fix unicode key of azcache can't be stored to memcache * XenAPI: SR location should default to location stored in PBD * XenAPI: Generic Fake.get_all_records_where implementation * XenAPI: Return platform_version if no product_version * XenAPI: Support local connections * Delete expired instance console auth tokens * Fix aggregate creation/update with null or too long name * Fix live migration test for no scheduler running * Fix get_diagnostics() test for no compute consumer * Stubout reserve_block_device_name() in test * Stubout deallocate_for_instance() in compute tests * Stub out net API sooner in servers API test * PCI utils * Object support for instance groups * Add RBD supporting to libvirt for creating local volume * Add alias as prefix to request params for availability_zone v3 * Remove deprecated legacy network info model in Hypervisor drivers * Correct the authorizer for extended-volumes v3 * emit warning while running flake8 without virtual env * Adds Instance UUID to rsync debug logging * Fixes sync issue for user level resources * Fix Fibre Channel attach for single WWN * nova.conf configurable gzip compression level * Stub out more net API methods floating IP DNS test * Enable CastAsCall for test_api_samples * Stub out attach_volume() in test_api_samples * Fix remove_fixed_ip test with CastAsCall * Add add_aggregate_to_host() to FakeDriver * Fix api samples image service stub * Add CastAsCall fixture * Enable consoleauth service during ec2 tests * Disable periodic tasks during integration tests * Use ExceptionHelper to bypass @client_exceptions * Clean up some unused wrap_exception() stuff * Add new compute method for building an instance * VMware: provide a coherent message to user when viewing console log * Use new BDM syntax when determining boot metadata * Allow more than one ephemeral device in the DB * Port flavormanage extension to v3 API part 1 * Correct the status code to 201 for create v3 * Pop extra keys from context in from_dict() * Don't initialize neutronv2 state at module import * Remove instance exists check from rebuild_instance * Remove unused variables in test_compute_cells * Fix fake image_service import in v3 test_disk_config * Updates tools/config/README * xenapi: Added iPXE ISO boot support * Log exception details setting vm_state to error * Fix instance metadata access in xenapi * Fix prep_resize() stale system_metadata issue * Implement hard reboot for powervm driver * Use the common function is_neutron in servers.py * Make xenapi capabilities['enabled'] use service enabled * Remove duplicate test from V3 version of test_hosts * Remove unused nova.tests.image.fake code * Remove unused fake run_instance() method * Remove use of fake_rabbit in Nova * libvirt: fix {attach,detach}_interface() * Added test case in test_migrations for migration 208 * Add flag to make IsolatedHostsFilter less restrictive * Add unique constraint to AggregateMetadata * Fix a typo in test_migrations for migration 209 * Remove duplicate variable _host_state * enhance description of share_dhcp_address option * Adds missing V3 API scheduler hints testcase * [v3] Show detail of an quota in API os-quota-sets * Remove legacy network model in tests and compute manager * Remove redundant _create_instance method from test_compute * Add jsonschema to Nova requirements.txt * Remove docstrings in tests * Fix scheduler prep_resize deprecated comments * Search filters for get_all_system_metadata should use lists * fix volume swap exception cases * Set VM back to its original state if cold migration failed * Enforce flavor access during instance boot * Stub out entry points in LookupTorrentURLTestCase * Port volumes swap to the new API-v3 * correct the name style issue of ExtendedServerAttributes in v3 api * Fix IVS vif to correctly delete interfaces on unplug * Adding support for iSER transport protocol * libvirt: allow passing 'os_type' property to glance * Fixes auto confirm invalid error * Fix ratelimiting * quantum pxeboot-port support for baremetal * baremetal: Log IPMI power on/off timeouts * VMware: Added check for datastore state before selection * Boot from image destination - volume * Virt driver flag for different BDM formats * Refactor how BDMs are handled when booting * Change RPC to use new BDM format for instance boot * Make API part of instance boot use new BDM format * Add Migration object * Fix untranslated log messages in libvirt driver * Fix migration 210 tests for PostgreSQL * Handle InstanceInvalidState of soft_delete * Don't pass RPC connection to pre_start_hook * VMware: Ensure Neutron networking works with VMware drivers * Unimplemented suspend/resume should not change vm state * Fix project_user_quotas_user_id_deleted_idx index * Allow Cinder to specify file format for NFS/GlusterFS * Add migration with missing fkeys * Implement front end rate-limiting for Cinder volume * Update mailmap * Fixup some non-unity-ness to conductor tests * Add scheduler utils unit tests * Convert admin_actions ext tests to unit tests * Unit-ify the compute API resize tests * Raises masked AssertionError in _test_network_api * Have tox install via setup.py develop * Set launch_index to right value * Add passing a logging level to processutils.execute * Clear out service disabled reason on enable for V3 API * Fix HTTP response for PortInUse during boot (v3 API) * Adds infra for v3 API sample creation * Remove deprecated CONF.fixed_range * Offer a paginated version of flavor_get_all * Port integrated tests for V3 API * Refactor integrated tests to support V2 and V3 API testing Part 2 * Refactor integrated tests to support V2 and V3 API testing * Fix cells manager RPC version * Upgrade to Hacking 0.7 * Fix logic in add_host_to_aggregate() * Enforce compute:update policy in API * Removed the duplicated _host_state = None in libvirt driver * Sync gettextutils from oslo-incubator * Fix typo in exception message * Fix message for server name with whitespace * Demote personalities from core of API v3 as extensions os-personality * Port disk_config API to v3 Part 2 * remove _action_change_password the attribute in V3 server API * Fix exception handling in V3 API coverage extension * Remove "N309 Python 3.x incompatible construct" * Allow swap_volume to be called by Cinder * Remove trivial cases of unused variables * Handle NeutronClientException in secgroup create * Fix bad check for openstack versions (vendor_data/config drive) * Make compute_capabilities_filter use information from DB not RPC * Make affinity_filters use host_ip from DB not RPC * db: Add host_ip and supported_instances to compute_nodes * Add supported_instances to get_available_resource to all virt drivers * libvirt: sync get_available_resources and get_host_stats * Clean up unimplemented methods in the powervm driver * Make InvalidInstanceIDMalformed an EC2 exception * Fix one port can be attached to more devices * Removed code duplication in test_get_server_*_by_id * Add option for QEMU Gluster libgfapi support * Moves compute.rpcapi.prep_resize call to conductor * Fix get_available_resource docstrings * Fix spelling in image_props_filter * Fix FK violation in ConsoleTestCase * Fix ReservationTestCase on PostgreSQL * Fix instance_group_delete() DB API method * Fix capitalization, it's OpenStack * Add test cases to validate neutron ports * Add expected_errors for extension quota_classes v3 * Fix leaking of image BDMs * Moved tests for server.delete * Fix VMwareVCDriver to support multi-datastore * Fixes typo in __doc__ of /libvirt/blockinfo.py * User quota update should not exceed project quota * Port "Accept is_public=None .." to v3 tree * Remove clear_rabbit_queues script * Don't need to init testr in run_tests.sh * Imported Translations from Transifex * Deprecate conductor's compute_reboot() interface * Deprecate conductor's compute_stop() interface * Make compute_api use InstanceAction object * Add basic InstanceAction object * Add delete() operation to InstanceInfoCache * Make compute_api use Instance.destroy() * Add Instance.destroy() * Make compute_api use Instance.create() * Change swap_volume volume_api calls to use ID * Fix H501: Do not use locals() for string formatting * fix libguestfs mount order when inspecting * Imported Translations from Transifex * powervm: add test case for get_available_resource * Fix to allow ipv6 in host_ip for ESX/vSphere driver * Improve performance of driver's get_available_nodes * Cleanup exception handling on evacuate * Removed code for modular exponentiation, pow() already does this * Remove unsafe XML parsing * Fix typo with network manager service_name * Remove old legacy network info model in libvirt driver * maint: remove redundant default=None for config options * Fix simultaneous timeout with smart iptables usage * xenapi: send identity headers from glance plugin * Catch ldap ImportError * xenapi: refactor - extract get_virtual_size * xenapi: refactor - extract get_stream_funct_for * xenapi: test functions for _stream_disk * Check host exists before evacuate * Fix EC2 API Fault wrapper * Fix deferred delete use of objects * Remove unsafe XML parsing * Update BareMetal driver to current nova.network.model * Personality files can be injected during server rebuild * Need to allow quota values to be set to zero * Merged flavor_disabled extension into V3 core api * Merged flavorsextraspecs extension into core API * Code dedup in test_update_* * Move tests test_update_* to separate class * VMware: fix rescue/unrescue instance * Add an exception when doesn't have permissions to operate vm on hyper-v * Remove dead capabilities code * Spelling correction in test_glance.py * Enhance object inheritance * Enable no_parent and file_only security * Add Instance.create() * Pull out instance object handling for use by create also * Make fake_instance handle security groups * Fix instance actions testing * Sync models with migrations * Wrong unique key name in 200 migration * Remove unused variable * Make NovaObject.get() avoid lazy-load when defaulting * Fix migration downgrade 146 with mysql * Remove the indexes on downgrade to work with MySQL * Downgrade MySQL to the same state it used to be * Format CIDR strings as per storage * Fix migration downgrade 147 with mysql * Fix typo in compute.rpcapi comments * Imported Translations from Transifex * Avoid extra glance v2 locations call! * xenapi: Adding BitTorrent download handler * xenapi: remove dup code in make_step_decorator * Retry failed instance file deletes * xenapi: retry when plugin killed by signal * Do not use context in db.sqla.api private methods * Finish DB session cleanup * Clean up session in db.sqla.api.migration_* methods * Clean up session in db.sqla.api.network_* and sec_groups_* methods * Don't inject files while resizing instance * Convert CamelCase attribute naming to camel_case for servers V3 API * Convert camelCase attribute naming to camel_case * Add plug-in modules for direct downloads of glance locations * Allow user and admin lock of an instance * Put fault message in the correct field * Fix Instance objects with empty security groups * db: Remove deprecated assert_unicode attribute * VlanManager creates superfluous quota reservations * xenapi: allow non rsa key injection * Add expected_errors for extensions simple_tenant_usage v3 * Clean destroy for project quota * Add expected_errors for extension Console v3 * Add expected_errors for extension baremetal v3 * Clean up session in db.sqla.api.get_ec2 methods * Clean up db.sqla.api.instance_* methods * remove improper usage of 'assert' * Support networks without gateway * Raise 404 when instance not found in admin_actions API * Switch to Oslo-Incubator's EnvFilter rootwrap * xenapi: Moving Glance fetch code into image/glance:download_vhd * Performs hard reboot if libvirt soft reboot raises libvirtError * xenapi: Rename imageupload image * Make nbd reservation thread-safe * Code dedup in class QuotaReserveSqlAlchemyTestCase * Fix multi availability zone issue part 1 * Fix instance_usage_audit_log v3 follow REST principles * Update mailmap * Add obj_attr_is_set() method to NovaObject * Add ObjectActionFailed exception and make Instance use it * Fix change detection logic in conductor * Convert pause/unpause to use objects * Make delete/soft_delete use objects * Refactor compute API's delete to properly do local soft_deletes * Add identity headers while calling glanceclient * xenapi: Reduce code duplication in vmops * vendor-data minor format / style cleanups * maint: remove unused exceptions * Add support for Neutron https endpoint * Add index to reservations.uuid column * Refactor EC2 API error handling code * Cleanup copy/paste in test_quota_sets * Make EvacuateTest DRYer * Add expected_errors for extensions quota_sets and hypervisors * Remove generic exception catching for admin_actions API v3 * Demote admin-passwd from core of API v3 as extensions os-admin-password * handle auto assigned flag on allocate floating ip * Add expected_errors for extension shelve v3 * Use cached nwinfo for secgroup rules * Sync config.generator from Oslo * Remove * import from xenserver plugins * EC2-API: Fix ambiguous ipAddress/dnsName issue * xenapi: no image upload retry on certain errors * Add error checking around host service checking * add vendor_data to the md service and config drive * Moves compute.rpcapi.prep_resize call to scheduler.manager * Removed scheduler doc costs section * Fix formatting on scheduler documentation * Add expected_errors for extension server_diagnostics V3 * Fix extensions agent follow API v3 rules * XenAPI: Change the default SR to be the pool default * Fix flavor_access extension follow API V3 rules * Add notification for live migration call * Correct status code and response for quota_sets API v3 * Fixes for v3 API servers tests * Remove sleep from service group db and mc tests * [xenapi] Unshadow an important test case class * Fix and Gate on H303 (no wildcard imports) * Remove unreachable code * powervm: pass on unimplemented aggregate operations * Fix timing issue in SimpleTenantUsageSample test * Code dedup in virt.libvirt.test_imagecache.test_verify_checksum_* * Move tests test_verify_checksum_* to separate class * Logging virtual size of the QCOW2 * Add expected_errors for extension certificates v3 * Support setting block size for block devices * Set the image_meta for the instance booted from a volume * return 429 on API rate limiting occur * Add task_state filter for nova list * Port server_usage API to v3 part 2 * Port server_usage API to v3 part 1 * Adds factory methods to load Hyper-V utils classes * Fix 2 pep8 errors in tests * Enabled hacking check for Python3 compatible print (H233) * Fix race between aggregate list and delete * Enforce authenticated connections to libvirt * Enabled the hacking warning for Py3 compatible octal literals (H232) * Remove fping plugin from V3 API * Moves scheduler.rpcapi.prep_resize call on compute.api to conductor * Fix some Instance object class usage errors * xenapi: remove pv detection * Add expected_errors for extension keypair and availablity_zone * Add expected_errors for extension console_output v3 * Fix extension hosts follow API v3 rules * Use project quota as default user quota * Adds NoAuthMiddleware for V3 * xenapi: remove propagate xenapi_use_agent key * Update references with new Mailing List location * MinDisk size based on the flavor's Disk size * Use RetrievePropertiesEx instead of RetrieveProperties * Speed up test BareMetalPduTestCase.test_exec_pdutool * Port ips-extended to API-v3 ips core API Part 2 * Disable per-user rate limiting by default * Support EC2 API wildcards for DescribeTags filters * Remove the monkey patching of _ into the builtins * Sync lockutils from Oslo * Set lock_path in tests * Port ips-extended to API-v3 ips core API Part 1 * Fix postgresql failures related to Data type to API-v3 fixed-ip * Bypass queries which cause a contradiction * Add basic BDM format validation in the API layer * Servers API for the new BDM format * Fixes Hyper-V issues on versions prior to 2012 * Add expected_errors for extension instance_actions v3 * Fix extension server_meta follow API v3 rules * Ensure that uuid is returned with mocked instance * Code dedup in class InstanceTypeExtraSpecsTestCase * Add expected_errors for extension cells V3 * Add expected_errors for extension_info V3 * Add latest oslo DB support * Add note why E712 is ignored * Clarify instance_type vs flavor in nova-manage * Fix leaky network tests * Fix HTTP response for PortNotFound during boot * Don't pass empty image to filter on live migration * Start using hacking 0.6 * Set VM back to its original state if cold migration failed * xenapi: ensure vcpu_weight configured correctly * Fix failing network manager unit tests * Add expected_errors for extensions services and server_password v3 * Update oslo.config.generator * Fix the is_volume_backed_instance check * Add support for volume swap * Fix policy failure on image_metadata calls * Sync models for AgentBuild, Aggregates, AggregateHost tables * Imported Translations from Transifex * Make ServerXMLSerializationTest DRYer * Port migrations extension to v3 API part 2 * Port migrations extension to v3 API part 1 * xenapi: Fix console rotate script * Sync some of Instance* models with migrations * Fix extension rescue follow API v3 rules * Per-project-user-quotas for more granularity * Add unique constraint to InstanceTypeExtraSpecs * Remove instance_metadata_get_all* from db api * Merged flavorextradata extension (ephemeral disk size) into core API * Fixed tests for flavor swap extension after merging in core API * Remove hostname param from XenApi after first boot * Cell Scheduler support for hypervisor versions * Fix flavor v3 follow API v3 rules * Sync sample config file generator with Oslo * Allow exceptions to propagate through stevedore map * Create vmware section * Sync latest rpc changes from oslo-incubator * Check instance on dest once during block migration * Revert "Add requests requirement capped <1.2.1." * Unit-ify compute_api delete tests * Convert network API to use InfoCache object * Make InfoCache.network_info be the network model * Make shelve pass old-world instance object to conductor * Make admin API state resets use Instance.save() * Deduplicate data in TestAddressesXMLSerialization * Move _validate_int_value controller func to utils * Correct the action name for admin_actions API v3 * Fixing dnsdomain_get call in nova.network.manager * Raise exception if both port and fixed-ip are in requested networks * Sync eventlet_backdoor from oslo-incubator * Fix up trivial license mismatches * Implements host uptime API call for cell setup * Ensure dates are dates, not strings * Use timeutils.utcnow() throughout the code * Add indexes to sqlite * Fix iptables rules when metadata_host=127.0.0.1 * Sync gettextutils from oslo * Handle instance objects in conductor compute_stop * Config drive attached as cdrom * Change EC2 client tokens to use system_metadata * Check that the configuration file sample is up to date * Make servers::update() use Instance.save() to do the work * Make Instance.save() handle cells DB updates * Convert suspend/resume to use objects * Make compute_api.reboot() use objects * Fix HTTP response for PortInUse during boot * Fix DB access when refreshing the network cache * Use valid IP addresses values in tests * Add ability to factor in per-instance overheads * Send updated aggregate to compute on add/rm host * Fix inconsistency between Nova-Net and Neutron * Fix parse_transport_url when url has query string * xenapi: no glance upload retry on 401 error * Code dedup in test_libvirt_vif * Raise exceptions when Spice/VNC are unavailable * xenapi: Pass string arguments to popen * Add rpcapi tests for shelving calls * Create key manager interface * Remove duplicate cells_rpcapi test * ec2-api: Disable describing of instances using deleted tags as filter * Disable ssl layer compression for glance requests * Missed message -> msg_fmt conversion * Refresh network cache when reassigning a floating IP in Neutron * Remove unnecessary comments for instance rebuild tests * Add missing tests for console_* methods * Force reopening eventlet's hub after fork * Remove project_id from alternate image link path * Fixes wrong action comment 'lock' to 'unlock' * Add expected_errors for extension extended_volumes v3 * port BaremetalNodes API into v3 part2 * port baremetal_nodes API into v3 part1 * Add validation of available_zone during instance create * Move resource usage sync functions to db backend * Remove locals() from various places * Add expected_errors for extension evacuate v3 * Add expected_errors for extension deferred_delete v3 * Fix accessing to '/' of metadata server without any checks to work * Fix duplicate osapi_hide_server_address_states config option * API for shelving * Fix shelve's use of system_metadata * Fix Instance object handling of implied fields * Make Instance object properly update *metadata * Support Client Token for EC2 RunInstances * Change get_all_instance_metadata to use _get_instances_by_filters * Add a new GroupAffinityFilter * Move a migration test to MigrationTestCase * Use db.flavor_ instead of db.instance_type_ * Periodic task for offloading shelved instances * Shelve/unshelve an instance * Code dedup in class ImagesControllerTest * Assert backing_file should exist before attempting to create it * Add API-v3 merged core API into core API list * Don't ignore 'capabilities' flavor extra_spec * Support scoped keys in aggregate extra specs filter * Fix blocking issue when powervm calculate checksum * Avoid shadowing Exception 'message' attribute * Code dedup in class TestServerActionRequestXMLDeserializer * Fix mig 186 downgrade when using sqlalchemy >= 0.8 * Move test_stringified_ips to InstanceTestCase * Move *_ec2_* tests in test_db_api to own test case * Code dedup in class ImageXMLSerializationTest * Fix malformed format string * Fix EC2 DescribeTags filter * Code dedup in test_libvirt_volume * Port AttachInterfaces API to v3 Part 2 * Make ServersViewBuilderTest DRYer * Move test_security_group_update to SecurityGroupTestCase * Code dedup in class ServersControllerCreateTest * Code dedup in tests for server._action_rebuild * Moved tests for server._action_rebuild * Move bw_usage_* tests in test_db_api to own test case * Move dnsdomain_* tests in test_db_api to own test case * Remove redundant if statements in cells.state * Move special cells logic for start/stop * Port used limits extension to v3 API Part 2 * Avoid deleting user-provided Neutron ports if VM spawn fails * Fix nic order not correct after reboot * Porting os-aggregates extensions to API v3 Part 2 * Porting os-aggregates extensions to API v3 Part 1 * Porting server metadata core API to API v3 Part 2 * Porting server metadata core api to API v3 Part 1 * Port limits core API to API-v3 Part 2 * xenapi: Only coalesce VHDs if needed * Don't attach to multiple Quantum networks by default * Load cell data from a configuration file * Fix filtering aggregate metadata by key * remove python-glanceclient cap * Remove duplicated key_pair* tests from test_db_api * Porting limits core api to API v3 Part 1 * Add missing tests for db.api.instance_* methods * Fix IPAddress and CIDR type decorators * Complete deletion when compute manager start-up * Port user_data API to v3 Part 2 * Add legacy flag to get_instance_bdms * XenAPI: Refactor Fake to create pools, SRs and VIFs automatically * Port flavor_rxtx extension to v3 API Part 2 * Port flavor_rxtx extension to v3 API Part 1 * Fix aggregate_get_by_host host filtering * Fix v3 hypervisor extension servers action follow REST principles * xenapi:populating hypervisor version in host state * Port attach and detach of volume-attachment into os-extended-volume v3 * Port deferredDelete API to v3 Part 2 * Fix status code for coverage API v3 * Port instance_actions API to v3 Part 2 * port instance_actions API into v3 part1 * Prompt error message when creating aggregate without aggregate name * Port used limits extension to v3 API Part 1 * Makes _PATH_CELL_SEP a public global variable * port disk_config API into v3 part1 * Imported Translations from Transifex * Remove locals() from virt directory * Handle ImageNotAuthorized exception * Port AvailabilityZone API to v3 Part 2 * port AvailabilityZone API into v3 part1 * Port service API to v3 Part 2 * Imported Translations from Transifex * Unify duplicate code for powering on an instance * Port hide srvr addresses extension to v3 API Pt2 * Sync v2/v3 console_output API extensions * Port extended status extension to v3 API Part 2 * Port os-console-output extension to API v3 Part 2 * Changes select_destinations to return dicts instead of objects * Better start/stop handling for cells * Make notifications properly string-convert instance datetimes * Fix default argument values on get_all_by_filters() * Make db/api strip timezones for datetimes * Fix object_compat decorator for non-kwargs * Imported Translations from Transifex * Remove unused recreate-db options from run_test.sh * update Quantum usage to Neutron * Convert cells to use a transport URL * Fix aggregate update * Passing volume ID as id to InvalidBDMVolume exception * Handle instance being deleted while in filter scheduler * Port extended-availability-zone API into v3 part2 * Fix extensions os-remote-consoles to follow API v3 rules * Add unique constraints to AggregateHost * Unimplemented pause should not change vm state on PowerVM * Port server password extension to v3 API Part 2 * xenapi: Add disk config value to xenstore * Port hide srvr addresses extension to v3 API Pt1 * Add -U to the command line for pip * xenapi: support ephemeral disks bigger than 2TB * Cells: Make bandwidth_update_interval configurable * Add _set_instance_obj_error_state() to compute manager * Update v3 servers API with objects changes * xenapi: enable attach volumes to non-running VM * Change force_dhcp_release default to True * Revert "Sync latest rpc changes from oslo-incubator" * Sync 10 DB models and migrations * Make compute_api.get() use objects natively * port Host API into v3 part2 * Port admin-actions API into v3 part2 * Fix cells manager rpc api version * Allow ::/0 for IPv6 security group rules * Fix issue with pip installing oslo.config-1.2.0 * Sort output for unit tests in test_describe_tags before compare * Document rate limiting is per process * Properly pin pbr and d2to1 in setup.py * Add support for live_snapshot in compute * xenapi: Stub out _add_torrent_url for Vhd tests * Add Instance.get_by_id() query method * Fix duplicate fping_path config option * Port images metadata functionality to v3 API Part 2 * Add unique constraint to ConsolePool * Enable core API-v3 to be optional when unit testing * Clarify flavorid vs instance_type_id in db * Sync db.models.Security* and db.models.Volume* * Sync db.models.Instance* with migrations * Add "ExtendedVolumes" API extension * Fix misc issues with os-multinic v3 API extension * Port multinic extension to v3 API Part 2 * Port security groups extension to v3 API Part 2 * Port security groups extension to v3 API Part 1 * Add missing help messages for nova-manage command * Validate volume_size in block_device_mapping * Imported Translations from Transifex * Fix info_cache and bw_usage update race * xenapi: glance plugin should close connections * Change db.api.instance_type_ to db.api.flavor_ * Replace get_instance_metadata call in api.ec2.cloud._format_instances * Add unique constraint to AgentBuild * Ensure flake8 tests run on all api code * Sync notifier change from oslo-incubator * Sync harmless changes from oslo-incubator * Sync latest rpc changes from oslo-incubator * Add missing matchmaker_ring * Port extended-server-attributes API into v3 part2 * List migrations through Admin API * Add a VIF driver for IOVisor engine * port Service API into v3 part1 * Port admin-actions API into v3 part1 * Port fping extension to v3 API Part 2 * Disassociate fixed IPs not known to dnsmasq * Imported Translations from Transifex * Allow filters to only run once per request if their data is static * Port extended-availability-zone API into v3 part1 * Update openstack.common.config * Export just the volume metadata for the database to be populated * port Deferred_delete API into v3 part1 * Misc fixes for v3 evacuate API extension * Imported Translations from Transifex * Baremetal ensures node is off before powering on * Remove references to deprecated DnsMasqFilter * Port user_data API to v3 Part 1 * Update instance.node on evacuate * Fix formatting errors in documentation * Use oslo.sphinx and remove local copy of doc theme * Remove doc references to distribute * Sync install_venv_common from oslo * Make EC2 API request objects instead of converting them * Make instance show and index use objects * Remove conductor usage from consoleauth service * xenapi: Stub out entry points for BitTorrent tests * Fix debug message for GroupAntiAffinityFilter * Add unique constraints to Service * Add unique constraint to FixedIp * Fixed columns list in indexes * Add cinder cleanup to migrations * Change unique constraint in VirtualInterface * Changes ComputeTaskManager class to inherit base.Base * Moves populate retry logic to the scheduler utils * Exceptions raised by quantum validate_networks result in 500 error * Fix and gate on E125 * Add object (de)serialization support to cells * Add cells get_cell_type() method * Add fill_faults() batch operation to InstanceList * Make api_samples reboot test use a plausible scenario * Fix compute_api object handling code in cells messaging * Fix power_state lookup in confirm_resize * Make flavors is_public option actually work * Imported Translations from Transifex * hyperv: Fix vmops.get_info raises InstanceNotFound KeyError * Make instance_update() string-convert IP addresses * Refactor compute_api reboot tests to be unit-y * Refactors select_destinations to return HostState objects * PowerVM resize and migrate test cases * Clear out service disabled reason on enable * Port agent API to v3 Part 2 * Fix v3 hypervisor extension search action follow REST principles * Fix resize ordering for COW VHD * Add inst_type parameter * Store volume metadata as key/value pairs * Fixes a typo on AggregateCoreFilter documentation * xenapi: Tidy up Popen calls to avoid command injection attacks * Remove notify_on_any_change option * Add unique constraints to Quota * Port images metadata functionality to v3 API Part 1 * Port scheduler hints extension to v3 API Part 2 * Adding action based authorization for keypairs * Port multinic extension to v3 API Part 1 * Port hypervisor API into v3 part2 * port Instance_usage_audit_log API into v3 part2 * port Instance_usage_audit_log API into v3 part1 * Fix metadata for create in child cell * update xen/vmware virt drivers not to hit db directly * Reduce nesting in instance_usage_audit * Port os-console-output extension to API v3 Part 1 * Fix to integer cast of length in console output extension * Imported Translations from Transifex * Add notifiers to both attach and detach volumes * Make test_deferred_delete() be deterministic * Added functionality for nova hooks pass functions * Fix compatibility with older confirm_resize() calls * Pass instance host-id to Quantum using port bindings extension * libvirt: Fix spurious backing file existence check * Add unique constraint for security groups * powervm: make get_host_uptime output consistent with other virt drivers * Remove locals() from virt/vmwareapi package * Add HACKING check for db session param * Select disk driver for libvirt+Xen according to the Xen version * Port coverage API into v3 part2 * Port coverage API into v3 part1 * Fix grizzly compat issue in conducor rpc api * Xenapi shutdown should return True if vm is shutdown * Break out Compute Manager unit tests * Break out compute API unit tests * port Host API into v3 part1 * Imported Translations from Transifex * Standardize use of nova.db * Check system_metadata type in _populate_instance_for_create * Clean up and make HACKING.rst DRYer * Sync db.models with migrations * Refactor ServerStatusTest class * Move tests db.api.instance_* to own class * Add tests for `db.console_pool_*()` functions * Fix binding of SQL query params in DB utils * Make db.fakes stub out API not sqlalchemy * Reassign MAC address for vm when resize_revert * test_xmlutil.py covers more code in xmlutil.py * Handle UnexpectedTaskState and InstanceNotFound exceptions * Port quota classes extension to v3 API Part 2 * Ports image_size extension to v3 API * xenapi: Add configurable BitTorrent URL fetcher * remove locals() from virt/hyperv package * Add resume state on host boot function to vmware Hyper * Port server_diagnostics extension to v3 API Part2 * Port images functionality to v3 API Part 2 * Port cells extension to v3 API Part 2 * Notification support for host aggregate related operation * Fix vol_usage_update() DB API tests * Port consoles extension API into v3 part2 * Port consoles extension API into v3 part1 * Imported Translations from Transifex * New select_destinations scheduler call * Session cleanup for db.security_group_* methods * fix invalid logging * Port scheduler hints extension to v3 API Part 1 * Port config_drive API to v3 Part 2 * Port config drive API to v3 Part 1 * Port images functionality to v3 API Part 1 * Moves scheduler.manager._set_vm_state_and_notify to scheduler.utils * VNC console does not work with VCDriver * Sane rest API rate limit defaults * Ignore lifecycle events for non-existent instances * Fix resizes with attached file-based volumes * Remove trivial cases of unused variables (3) * Remove locals() from compute directory * Hypervisor uptime fails if service is disabled * Fix metadata access in prep for instance objects * Sync to_primitive() IPAddress support from Oslo * Merged flavor_swap extension into core API * Fix typo for instance_get_all_by_filters() function * Implement get_host_uptime for powervm driver * Port flavor_disabled extension to v3 API Part 2 * Fix sqlalchemy utils * Port flavor_disabled extension to v3 API Part 1 * Port flavor_access extension to v3 API Part 2 * Port flavor_access extension to v3 API Part 1 * Fixes for quota_sets v3 extension * Port server password extension to v3 API Part 1 * Port Simple_tenant_usage API to v3 Part 2 * xenapi: Remove vestigial `compile_metrics` code * Add update() method to NovaObject for dict compatibility * Add obj_to_primitive() to recursively primitiveize objects * Make sure periodic instance reclaims continues on error * Remove broken config_drive image_href support * Report the az based on the value in the instance table * Allow retrying network allocations separately * Imported Translations from Transifex * Better default for my_ip if 8.8.8.8 is unreachable * Fix a couple typos in the nova.exception module * Make fake_network tolerant of objects * Prepare fake instance stubs for objects * Make info_cache handle when network_info is None * Fix instance object's use of a db query method parameter * Make NovaObject support the 'in' operator * Add Instance.fault * Add basic InstanceFault model * xenapi: Make BitTorrent url more flexible * xenapi: Improve cross-device linking error message * db.compute_node_update: ignore values['update_at'] * Make sure periodic cleanup of instances continues on error * Fix for failure of periodic instance cleanup * Update instance properties values in child cells to create instance * port Attach_interface API into v3 part1 * Sync models.Console* with migrations * Port quota API into v3 part2 * Stop creating folders in virt unit tests * Imported Translations from Transifex * Refresh volume connections when starting instances * Fix trivial mismatch of license header * Exeption message of 'live migration' is not appropriate * Sync rpc from oslo-incubator * Fix types in test_ec2_ids_not_found_are_printable * Port quota API into v3 part1 * Skip security group code when there is no network * Sync db.models and migrations * Update pyparsing to 1.5.7 * Make InstanceList filter non-column extra attributes * Add Instance.security_groups * Add basic SecurityGroup model * Revert XenApi virt driver should throw exception * Imported Translations from Transifex * Avoid redefining host to none in get_instance_nw_info(...) * Extract live-migration scheduler logic from the scheduler driver * Fix the filtered characters list from console-log * Add invalid number checking in flavor creation api * Port quota classes extension to v3 API Part 1 * Remove usage of locals() from powervm virt package * Fix xenstore-rm race condition * Refactor db.security_group_get() instance join behavior * Fix serialization of iterable types * Fix orphaned instance from get_by_uuid() and _from_db_object() * refactor security group api not to raise http exceptions * Perform additional check before live snapshotting * Do not raise NEW exceptions * Baremetal_deploy_helper error message formatting * Fix sys_meta access in prep for instance object * Cells: Pass object for start/stop * Clarify the compute API is_volume_backed_instance method * Add AggregateCoreFilter * Port extended-server-attributes into v3 part1 * Add AggregateRamFilter * Fix KeyError exception when scheduling to child cell * Port missing bits from httplib2 to requests * Revert "fixes nova resize bug when force_config_drive is set." * Port extended status extension to v3 API Part 1 * Fix quota logging on exceptions * XenApi virt driver should throw exception on failure * Retry quota_reserve on DBDeadlock * Handle NoMoreFixedIps in _shutdown_instance * Make sure instance_type has extra_specs * Remove locals() from nova/virt/libvirt package * Fix importing InstanceInfoCache during register_all() * Make _poll_unconfirmed_resizes() use objects * Revert "Add oslo-config-1.2.0a2 and pbr>=0.5.16 to requirements." * Preserve network order when using ConfigDrive * Revert "Initial scheduler support for instance_groups" * fixes nova resize bug when force_config_drive is set * Add troubleshoot to baremetal PXE template * Sync db.models.Quota* with migrations * Modify _assertEqualListsOfObjects() function * Port hypervisor API into v3 part1 * Remove a layer of nesting in _poll_unconfirmed_resizes() * Use InstanceList for _heal_instance_info_cache() * Remove straggling use of all-kwarg object methods * Allow scheduler manager NoValidHost exception to pass over RPC * Imported Translations from Transifex * Add oslo-config-1.2.0a2 and pbr>=0.5.16 to requirements * Remove usage of locals() for formatting from nova.scheduler.* * Libvirt driver: normalize variable names (part1) * xenapi: script to rotate the guest logs * Clean up scheduler tests * Drop unused _virtual_power_settings global * Remove junk file when ftp transfer failure * xenapi: revisit error handling around calls to agent * Remove the unused plugins framework * Added unit tests for vmware cluster driver * Adds expected_errors decorator for API v3 * Sync oslo-incubator gettextutils * port Simple_tenant_usage API into v3 part1 * Remove db session hack from conductor's vol_usage_update() * Converts scheduler.utils.build_request_spec return to json primitive * Revert "Delegate authentication to quantumclient" * Retry the sfdisk command up to 3 times * No support for double nested 64 bit guest using VCDriver * Fill context on objects in lists * Setting static ip= for baremetal PXE boot * Add tests for libvirt's reboot functionality * Check the instance ID before creating it * Add missing tests for nova.db.api.instance_system_metadata_* * Add err_msg param to baremetal_deploy_helper * Remove _is_precooked pre-cells Zones hacks * Raise max header size to accommodate large tokens * Make NovaObject support extra attributes in items() * Imported Translations from Transifex * Fix instance obj refresh() * Fix overzealous conductor test for vol_usage_update * Add missing tests for certificate_* methods * Log xml in libvirt _create_domain failures * Add unique constraints to Cell * Accept is_public=None when listing all flavors * Add missing tests for cell_* methods * Add missing tests for nova.db.api.instance_metadata_* * Don't deallocate network if destroy time out * Port server_diagnostics extension to v3 API Part1 * Add old display name to update notification * Port fping extension to v3 API Part 1 * libvirt fix resize/migrates with swap or ephemeral * Allow reboot or rebuild from vm_state=Error * Initial scheduler support for instance_groups * Fix the ServerPasswordController class doc string * Imported Translations from Transifex * Cleanup certificate API extension * Enforce sqlite-specific flow in drop_unique_constraint * Remove unused cert db method * Fix bad vm_state change in reboot_instance() * Add rpc client side version control * xenapi: ensure agent check respects image flags * Drop `bm_pxe_ips` table from baremetal database * Adding fixed_ip in create.end notification * Improved tests for instance_actions_* * Refactored tests for instance_actions_* * Add missing tests for provider_fw_rule_* methods * Session cleanup for db.security_group_rule_* methods * Add tests for nova.db.api.security_group_rule_* methods * Refactors qemu image info parsing logic * Port cells extension to v3 API Part 1 * Organize limits units and per-units constants * Fix flavor extra_specs filter doesn't work for number * Replace utils.to_bytes() with strutils.to_bytes() * Updates nova.conf.sample * Remove bin lookup in conf sample generator * Refactor conf sample generator script * Remove unused arg from make_class_properties.getter method * Fix obj_load() in NovaObject base class * Backup and restore object registry for tests * Fix the wrong reference by CONF * Port flavors core API to v3 tree * Remove usage of locals() from xenapi package * Remove trivial cases of unused variables (1) * Don't make nova-compute depend on iSCSI * Change resource links when url has no project id * Make sync_power_state routines use InstanceList * Enhance the validation of the quotas update * Add missing tests for compute_node_* methods * Fix VMware Hyper can't honor hw_vif_model image property * Remove use of locals() in db migrations * Don't advertise mute cells capabilities upwards * Allow confirm_resize if instance is in 'deleting' status * Port certificates API to v3 Part 2 * port agent API into v3 part1 * Port certificates API to v3 Part 1 * Naming instance directory by uuid in VMware Hyper * Revert "Fix local variable 'root_uuid' ref before assign" * Use Python 3.x compatible octal literals * Fix and enable H403 tests * Remove usage of locals() from manager.py * Fix local variable 'root_uuid' ref before assign * Improve the performance of migration 186 * Update to the latest stevedore * Quantum API _get_floating_ip_by_address mismatch with Nova-Net * xenapi: remove auto_disk_config check during resize * xenapi: implement get_console_output for XCP/XenServer * Check libvirt version earlier * update_dns() method optimization * Sync can_send_version() helper from oslo-incubator * Remove unused db api call * Quantumapi returns an empty network list * Add missing tests for nova.db.api.network_* * Cleanup overshadowing in test_evacuate.py * Give a way to save why a service has been disabled * Cells: Add support for global cinder * Fix race conditions with xenstore * Imported Translations from Transifex * Remove explicit distribute depend * Fix assumed port has port_security_enabled * Rename functions in nova.compute.flavors from instance_type * Remove redundant architecture property update in powervm snapshot * Use an inner join on aggregate_hosts in aggregate_get_by_host * xenapi: ensure instance metadata always injected into xenstore * Nova instance group DB support * Fix to disallow server name with all blank spaces * Replace functions in utils with oslo.fileutils * Refactors get_instance_security_groups to only use instance_uuid * Create an image BDM for every instance * DB migration to the new BDM data format * Fix dangling LUN issue under load with multipath * Imported Translations from Transifex * Add missing tests for s3_image_* methods * Register libvirt driver with closed connection callback * Enhance group handling in extract_opts * Removed code duplication in conductor.api * Refactored tests for instance_fault_* * Added verbose error message in tests helper mixin * Adds v3 API extension discovery filtering * Adds support for the Indigo Virtual Switch (IVS) * Some libvirt driver lookups lacks proper exception handling * Put VM UUID to live migration error notification * Fix db.models.Instance description * Fix db.models.Certificate description * Fix db.models.ComputeNodeStats description * Fix db.models.ComputeNode description * Fix db.models.Service description * BDM class and transformation functions * Remove unused method in VMware driver * Cleanup nova exception message conversion * Update analyze_opts to work with new nova.conf sample format * Remove unused methods from VirtAPI * Make xenapi use Instance object for host_maintenance_mode() * Make xenapi/host use instance objects for _uuid_find * Use InstanceList object for init_host * Add Instance.info_cache * Use Instance Objects for Start/Stop * Add lists of instance objects * Add base mixin class for object lists * Add deleted flag to NovaObject base * Export volume metadata to new instances * Sending volume IO usage broken * Rename unique constraints due to new convention * Replace openstack-common with oslo in HACKING.rst * Fixes test_config_drive unittest * Port evacuate API to v3 Part 2 * Port evacuate API to v3 Part 1 * Speeding up scheduler tests * Port rescue API to v3 Part 2 * Port rescue API to v3 Part 1 * Handle security group quota exceeded gracefully * Adds check that the core V3 API is loaded * Call virt.driver.destroy before deallocating network * More KeypairAPI cleanups * Improve Keypair error messages in osapi * Fix Keypair exception messages * Moving more tests to appropriate locations * Skip ipv6 tests on system without ipv6 support * Keypair API test cleanup * Alphabetize v3 API extension entry point list * Add missing exception to cell_update() * Refactors scheduler.chance.select_hosts to raise NoValidHost * Enhance unit test code coverage for availability zone * Converts 'image' to json primitive on compute.rpcapi.prep_resize * Import osapi_v3/enabled option in nova/test * Regenerate missing resized backing files * Moving `test_misc` tests to better locations * Allocate networks in the background * Make the datetime utility function coerce to UTC * API to get the Cell Capacity * Update rpc/impl_qpid.py from oslo * More detailed log in failing aggregate extra filter * xenapi: Added logging for sparse copy * Make object actions pass positional arguments * Don't snat all traffic when force_snat_range set * Add x-compute-request-id header when no response body * Call scheduler for run_instance from conductor * correctly set iface-id in vmware driver * Fix a race where a soft deleted instance might be removed by mistake * Fix quota checks while resizing up by admin * Refactor libvirt driver exception handling * Avoiding multiple code loops in filter scheduler * Don't log warn if v3 API is disabled * Link to explanation of --checksum-full rule * Imported Translations from Transifex * Stop libvirt errors from outputting to strerr * Delete unused bin directory * Make instance object tolerate isotime strings * Add fake_instance.py * Fix postgresql failures related to Data type * hardcode pbr and d2to1 versions * Silence exceptions from qpid connection.close() (from oslo) * Add Davanum to the mailmap * Fix VMwareVCdriver reporting incorrect stats * Adds ability to black/whitelist v3 API extensions * Clean up vmwareapi.network_util.get_network_with_the_name * Imported Translations from Transifex * Normalize path for finding api_samples dir * Add yolanda to the mailmap * Add notes about how doc generation works * python3: Add py33 to tox.ini * Improve Python 3.x compatibility * Ports consoles API to v3 API * Fix nova-compute fails to start if quantum is down * Handle instance directories correctly for migrates * Remove unused launch_time from instance * Launch_at and terminated_at on server(s) response * Fixed two minor docs niggles * Adds v3 API disable config option * Fix bug where consoleauth depended on remote conductor service * Only update cell capabilites once * Ports ips api to v3 API * Make pylint ignore nova/objects/ * Set resized instance back to original vm_state * Add power_on flag to virt driver finish/revert migration methods * Cosmetic fix to parameter name in DB API * compute.api call conductor ComputeTaskManager for live-migrate * Removed session from reservation_create() * Raise exception instances not exception classes * _s3_create handles image being deleted * Imported Translations from Transifex * Add instance object * Add base object model * Enhance multipath parsing * Don't delete sys_meta on instance delete * Fix volume IO usage notifications been sent too often * Add missing os.path.abspath around csrfile * Fix colorizier thowing exception when a test fails * Add db test that checks that shadow tables are up-to-date * Sync shadow table for 159 migration * Sync shadow table for 157 migration * Sync shadow table for 156 migration * Add missing tests for nova.db.api.quota_* methods * Add tests for some db.security_group_* methods * Fix _drop_unique_constraint_in_sqlite() function * Clean up failed image transfers in instance spawn * Make testr preserve existing OS_* env vars values * Fix msg version type sent to cells RPC API * Verify that CONF.compute_driver is defined * Fix EC2 RegisterImage ImageLocation starts with / * Support Cinder mount options for NFS/GlusterFS * Raise exception instances, not exception classes * Add update method of security group name and description * Cell weighing class to handle mute child cells * Add posargs support to flake8 call * Enumerate Flake8 E12x ignores * Fix and enable flake8 F823 * Fix and enable flake8 F812 * libvirt: improve the specification of network disks * Imported Translations from Transifex * In utils.tempdir, pass CONF.tempdir as an argument * Delegate authentication to quantumclient * Pull binary name from sys.argv[0] * Rename policy auth for V3 os-fixed-ips * Fix internationalization for some LOG messages * Enumerate Flake8 Fxxx ignores * Enable flake8 E721 * Removing misleading error message * No relevant message when stop a stopped VM * Cells: Add filtering and weight support * API Extensions framework for v3 API Part 2 * fix a misleading docstring * xenapi: make the xenapi agent optional per image * Fix config drive code logical error * Add missing conversion specifier to ServiceGroupUnavailable * Deprecate compute_api_class option in the config * Add node as instance attribute for notification * removes project_id/tenant_id from v3 api urls * Set up 'compute_task' conductor namespace * Removed superflous eval usage * Fix log message * Sync shadow table for 179 migration * Remove copy paste from 179 migration * Sync shadow table for 175 and 176 migration * Change db `deleted` column type utils * Fix tests for sqlalchemy utils * Add missing tests for nova.db.api.quota_class_* * Moved sample network creation out of unittest base class constructor * Add missing tests for db.api.reservation_* * add xml api sample tests to os-tenant-network * Remove locals() usage from nova.virt.libvirt.utils * IPMI driver sets bootdev option persistently * update mailmap * Imported Translations from Transifex * Remove tempest hack for create/rebuild checks * Better error message on malformed request url * virt: Move generic virt tests to nova/tests/virt/ * vmwareapi: Move tests under tests/virt/vmwareapi/ * hyperv: Move tests under nova/tests/virt/hyperv * Fix UnboundLocalError in powervm lvm cleanup code * Delete a quota through admin api * Remove locals() usage from nova.virt.libvirt.volume * Importing correlation_id middleware from oslo-incubator * Make a few places tolerant of sys_meta being a dict * Remove locals() from scheduler filters * Rename requires files to standard names * Imported Translations from Transifex * translates empty remote_ip_prefix to valid cidr for nova * Reset task_state when resetting vm_state to ACTIVE * xenapi: Moving tests under tests/virt/xenapi/ * xenapi: Disable VDI size check when root_gb=0 * Remove ImageTooLarge exception * Move ImageTooLarge check to Compute API * Share checks between create and rebuild * Remove path_exists from NFS/GlusterFS drivers * Removed session from fixed_ip_*() functions * Catch InstanceNotFound in instance_actions GET * Using unicode() to handle image's properties * Adds live migration support to cells API * Raise AgentBuildNotFound on updating/destroying deleted object * Add missing tests for nova.db.api.agent_build_* methods * Don't update API cell on get_nwinfo * Optimize SecurityGroupsOutputController by len(servers) * get_instance_security_groups() fails if no name on security group * libvirt: Moving tests under tests/virt/libvirt * Make it easier to add namespaced rpc APIs * baremetal: Move tests under tests/virt/baremetal * Disallow resize if image not available * powervm: Move tests under tests/virt/powervm * Sync RPC serializer changes from Oslo * Fix missing argument to logging warning call * set ERROR state when scheduler hits max attempts * Sync latest RPC changes from oslo * Add notification for live migration * Add requests requirement capped <1.2.1 * Adding tests for rebuild image checks * Add ImageNotActive check for instance rebuild * Fix error in instance_get_all_by_filters() use of soft_deleted filter * Fix resize when instance has no image * Fixes encoding issues for nova api req body * Update run_tests.sh to run flake8 too * Added validation for networks parameter value * Added attribute 'ip' to server search options * Make nova-api use servicegroup.API.service_is_up() * Add memorycache import into the oslo config * Fix require_context() decorators * Imported Translations from Transifex * Remove locals() from nova/cells/* * Update mailmap * Strip exec_dirs prefix from rootwrap filters * Clean up test_api_samples a bit * Remove unnecessary parens in test_volumes * Use strict=True instead of `is_valid_boolstr` * Editable default quota support * Remove usage of locals() for formatting from nova.api.* * Switch to flake8+hacking * Fix flake8 errors in anticipation of flake8 * Don't update DB records for unchanged stats * baremetal: drop 'prov_mac_address' column * The vm_state should not be modified until the task is complete * Return Customer's Quota Usage through Admin API * Use prettyxml output * Remove locals() from messages in virt/disk/api.py * 'm1.tiny' now has root_gb=1 * Cast `size` to int before comparison * Don't raise unnecessary stack traces in EC2 API * Mox should cleanup before stubs * Reverse compare arguments in filters tests * Don't inject settings for dynamic network * Add ca cert file support to cinder client requests * libvirt: Catch VIR_ERR_NO_DOMAIN in list_instances * Revert "Include list of attached volumes with instance info" * Sync rpc from oslo * Remove openstack.common.version * Fix for missing multipath device name * Add missing tests for db.fixed_ip_*(). functions * xenapi: ensure vdi is not too big when resizing down * Cells: Don't allow active -> build * Fix whitespace issue in indent * Pass the proper admin context to update_dhcp * Fix quantum security group driver to accept none for from/to_port * Reverse path SNAT for DNAT floating-ip * Use Oslo's `bool_from_string` * Handle IPMI transient failures better * Improve unit tests for DB archiving * Remove "#!/usr/bin/env python" from .py files under nova/cmd * Add missing unique constraint to KeyPair model * Refactored tests for db.key_pair_*() functions * Refactor nova.volume.cinder.API to reduce roundtrips with Cinder * Fix response from snapshot create stub * Hide lock_prefix argument using synchronized_with_prefix() * Cleanups for create-flavor * Cleanup create flavor tests * Imported Translations from Transifex * Test for remote directory creation before shutting down instance * Fix run_tests.sh usage of tools/colorizer.py * Move get_table() from test_migrations to sqlalchemy.utils * Convert Nova to use Oslo service infrastructure * Show the cause of virt driver error * Detach volume fails when using multipath iscsi * API extensions framework for v3 API * Sync service and threadgroup modules from oslo * Fix header issue for baremetal_deploy_helper.py * Extract getting instance's AZ into a helper module * Allow different paths for deploy-helper helpers * Show exception details for failed deploys * Imported Translations from Transifex * Check QCOW2 image size during root disk creation * Adds useful debug logging to filter_scheduler * fix non reporting of failures with floating IP assignment * Improve message and logging for corrupt VHD footers * Cleanup for test_create_server_with_deleted_image * Check cached SSH connection in PowerVM driver * Allow a floating IP to be associated to a specific fixed IP * Record smoketest dependency on gFlags * Make resize/migrated shared storage aware * Imported Translations from Transifex * Add pointer to compute driver matrix wiki page * xenapi: cleanup vdi when disk too big exception raised * Update rootwrap with code from oslo * Fixes typo in server-evacuate-req.xml * Fix variable referenced before assginment in vmwareapi code * Remove invalid block_device_mapping volume_size of '' * Architecture property updated in snapshot libvirt * Add sqlalchemy migration utils.create_shadow_table method * Add sqlalchemy migration utils.check_shadow_table method * Change type of cells.deleted from boolean to integer * Pass None to image if booted from volume in live migration * Raise InstanceInvalidState for double hard reboot * Removes duplicate assertEqual * Remove insecure default for signing_dir option * Removes unnecessary check for admin context in evacuate * Fix zookeeper import and tests * Make sure that hypervisor nodename is set correctly in FakeDriver * Optimize db.instance_floating_address_get_all method * Session cleanup for db.floating_ip_* methods * Optimize instance queries in compute manager * Remove duplicate gettext.install() calls * Include list of attached volumes with instance info * Catch volume create exception * Fixes KeyError bug with network api associate * Add unitests for VMware vif, and fix code logical error * Fix format error in claims * Fixes mock calls in Hyper-V test method * Adds instance root disk size checks during resize * Rename nova.compute.instance_types to flavors * Convert to using newly imported processutils * Import new additions to oslo's processutils * Imported Translations from Transifex * Enable live block migration when using iSCSI volumes * Nova evacuate failed when VM is in SHUTOFF status * Transition from openstack.common.setup to pbr * Remove random print statements * Remove security_group_handler * Add cpuset attr to vcpu conf in libvirt xml * Imported Translations from Transifex * Remove referances to LegacyFormatter in example logging.conf * libvirt: ignore NOSTATE in resume_state_on_host_boot() method * Sync oslo-incubator print statement changes * Fix stub_instance() to include missing attributes * Add an index to compute_node_stats * Convert to using oslo's execute() method * Import latest log module from oslo * Being more defensive around the use_ipv6 config option * Update hypervisor_hostname after live migration * Make nova-network support requested nic ordering * nova coverage creates lots of empty folders * fix broken WSDL logic * Remove race condition (in FloatingIps) * Add missing tests for db.floating_ip_* methods * Deprecate show_host_resources() in scheduler manager * Add force_nodes to filter properties * Adds --addn-hosts to the dnsmasq arg list * Update our import of oslo's processutils * Update oslo-incubator import * Delete InstanceSystemMetadata on instance deletion * vmwareapi: Add supported_instances to host state * xenapi: Always set other_config for VDIs * Copy the RHEL6 eventlet workaround from Oslo * Move db.fixed_ip_* tests from DbApiTestCase to FixedIpTestCase * Checks if volume can be attached * Call format_message on InstanceTypeNotFound exception * xenapi: Don't swallow missing SR exception * Prevent rescuing a VM with a partially mounted volume * Fix key error when create lpar instance failed * Reset migrating task state for MigrationError exceptions * Volume IO usage gets reset to 0 after a reboot / crash * Sync small and safe changes from oslo * Sync jsonutils from oslo * Fix EC2 instance bdm response * Rename _check_image_size to _get_and_check_image_metadata * Convert the cache key from unicode to a string * Catch glance image create exceptions * Update to using oslo periodic tasks implementation * Import oslo periodic tasks support * import and install gettext in vm_vdi_cleaner.py * Fix baremetal get_available_nodes * Fix attach when running as root without sysfsutils * Make _build_network_info_model testable * Fix building quantumapi network model with network list * Add the availability_zone to the volume.usage notifications * Add delete_net_interface function * Performance optimization for contrib.flavorextraspecs * Small whitespace tweak * Kill off usage of locals() in the filter_scheduler * Remove local variable only used in logging * Create instance with deleting image * Refactor work with db.instance_type_* methods * Fix flakey TestS3ImageService bug * Add missing snapshot image properties for VMware Hyper * Imported Translations from Transifex * Fix VMware Hyper console url parameter error * Update NovaBase model per changes on oslo.db.sqlalchemy * Send a instance create error notification * Refactor _run_instance() to unify control flow * set bdm['volume_id'] to None rather than delete it * Destroy conntrack table on source host during migration * Adds tests for isolated_hosts_filter * Fixes race condition of deleting floating ip * Imported Translations from Transifex * Wrong proxy port in nova.conf for Spice proxy * Fix missing kernel output via VNC/Spice on boot * Fix bug in db.instance_type_destroy * Move get_backdoor_port to base rpc API * Move db.instance_type_extra_specs_* to db.instance_type_* methods * Add missing test for db.instance_type_destroy method * Fix powervm driver resize instance error * Support FlatDHCP network for VMware Hyper * Imported Translations from Transifex * Deprecate conductor ping method * Add an rpc API common to all services * If rescue fails don't error the instance * Make os.services.update work with cells * Fix fixed_ip_count_by_project in DB API * Add unit tests for /db/api.py#fixed_ip_* * Add option to exclude joins from instance_get_by_uuid * Remove unnecessary method argument * Improve Python 3.x compatibility * ec2 CreateVolumes/DescribeVolumes status mapping * Can now reboot rescued instances in xenapi * Allows xenapi 'lookup' to look for rescue mode VMs * Adds tests to xenapi.vm_utils's 'lookup' method * Imported Translations from Transifex * Stop vm_state reset on reboot of rescued vm * Fix hyperv copy file error logged incorrect * Fix ec2 CreateVolumes/DescribeVolumes status * Imported Translations from Transifex * Don't swallow PolicyNotAuthorized for resize/reboot actions * Remove unused exception and variable from scheduler * Remove unnecessary full resource audits at the end of resizes * Update the log module from oslo-incubator * Translate NoMoreFloatingIps exception * Imported Translations from Transifex * Fix up regression tester * Delete extra space to api/volumes message * Map internal S3 image state to EC2 API values * removing unused variable from a test * Translate cinder NotFound exception * hypervisor tests more accurate db * Added comments to quantum api client * Cleanup and test volume usage on volume detach * Import and convert to oslo loopingcall * Remove orphaned db method instance_test_and_set * baremetal: VirtualPowerDriver uses mac addresses in bm_interfaces * Sync rpc from oslo-incubator * Correct disk's over committed size computing error * Imported Translations from Transifex * Allow listing fixed_ips for a given compute host * Imported Translations from Transifex * baremetal: Change input for sfdisk * Make sure confirm_resize finishes before setting vm_state to ACTIVE * Completes the power_state mapping from compute driver and manager * Make compute/manager use conductor for unrescue() * Add an extension to show the mac address of a ip in server(s) * Cleans up orphan compute_nodes not cleaned up by compute manager * Allow for the power state interval to be configured * Imported Translations from Transifex * Fix bug in os-availability-zone extension * Remove unnecessary db call in scheduler driver live-migration code * baremetal: Change node api related to prov_mac_address * Don't join metadata twice in instance_get_all() * Imported Translations from Transifex * Don't hide stacktraces for unexpected errors in rescue * Fix issues with check_instance_shared_storage * Remove "undefined name" pyflake errors * Optimize some of compute/manager's periodic tasks' DB queries * Optimize some of the periodic task database queries in n-cpu * Change DB API instance functions for selective metadata fetching * Replace metadata joins with another query * xenapi: Make _connect_volume exc handler eventlet safe * Fix typo: libvir => libvirt * Remove multi scheduler * Remove unnecessary LOG initialisation * Remove unnecessary parens * Simplify random host choice * Add NOVA_LOCALEDIR env variable * Imported Translations from Transifex * Clarify volume related exception message * Cleanup trailing whitespace in api samples * Add tenant/ user id to volume usage notifications * Security groups may be unavailable * Encode consoleauth token in utf-8 to make it a str * Catch NoValidHost exception during live-migration * Evacuated instance disk not deleted * Fix a bad tearDown method in test_quantumv2.py * Import eventlet in __init__.py * Raise correct exception for duplicate networks * Add an extension to show the network id of a virtual interface * Fix error message in pre_live_migration * Add reset function to nova coverage * Imported Translations from Transifex * nova-consoleauth start failed by consoleauth_manager option missing * set timeout for paramiko ssh connection * Define LOG globally in baremetal_deploy_helper * Allow describe_instances to use tags for searches * Correct network uuid field for os-network extension * Only call getLogger after configuring logging * Add SecurityGroups API sample tests * Cannot boot vm if quantum plugin does not support L3 api * Add missing tests for instance_type_extra_specs_* methods * Remove race condition (in InstanceTypeProjects) * Deprecate old vif drivers * Optimize resource tracker queries for instances * baremetal: Integrate provisioning and non-provisioning interfaces * Move console scripts to entrypoints * Remove deprecated Grizzly code * Fallback to conductor if types are not stashed * Imported Translations from Transifex * Resolve conflicting mac address in resize * Simplify and correct the bm partition sizes * Fix legacy_net_info guard * Fix SecurityGroups XML sample tests * Modify _verify_response to validate response codes * Fix a typo in attach_interface error path * After migrate, catch and remove deleted instances * Grab instance for migration before updating usage * Explain why the give methods are whitelisted * libvirt: Get driver type from base image type * Guard against content being None * Limit the checks for block device becoming available * Fix _error_out_instance exception handler * Raise rather than generating millions of IPs * Add unit tests for nova.volume.cinder.API * Update latest oslo.setup * baremetal: Drop unused columns in bm_nodes * Remove print statements * Imported Translations from Transifex * Fix the python version comparison * Remove gettext.install() from nova/__init__.py * Sync latest gettextutils from oslo-incubator * Return 409 on creating/importing same name keypair * Delete tests.baremetal.util.new_bm_deployment() * Return proper error message when network conflicts * Better iptables DROP removal * Query quantum once for instance's security groups * quantum security group driver nova list shows same group * Sync in matchmaker and qpid Conf changes from oslo * improve handling of an empty dnsmasq --domain * Fix automatic confirmation of resizes for no-db-compute * 'injected_files' should be base 64 encoded * Add missing unit tests for FlavorActionController * Set default fixed_ip quota to unlimited * Accepts aws-sdk-java timestamp format * Imported Translations from Transifex * get context from req rather than getting a new admin context * Use Cluster reference to reduce SDK calls * Fix missing punctuation in docstring * xenapi: fix support for iso boot * Ensure only pickle-able objects live in metadata * sync oslo db/sqlalchemy module * Convert host value from unicode to a string * always quote dhcp-domain, otherwise dnsmasq can fail to start * Fix typo in the XML serialization os-services API * Add CRUD methods for tags to the EC2 API * Fix migrating instance to the same host * Rework time handling in periodic tasks * Show quota 'in_use' and 'reserved' info * Imported Translations from Transifex * Fix quantum nic allocation when only portid is specified * Make tenant_usage fall back to instance_type_id * Use format_message on exceptions instead of str() * Add a format_message method to the Exceptions * List AZs fails if there are disabled services * Switch nova-baremetal-deploy-helper to use sfdisk * Bring back colorizer again with error results * Imported Translations from Transifex * Adds Tilera back-end for baremetal * Always store old instance_type during a migration * Make more readable error msg on quantum client authentication failure * Adding netmask to dnsmasq argument --dhcp-range * Add missing tests for db.instance_type_access_* methods * Remove race condition (in InstanceTypes) * Add missing tests for db.instance_type_* methods * Imported Translations from Transifex * set up FakeLogger for root logger * Fix /servers/os-security-groups using quantum * NoneType exception thrown if driver live-migration check returns None * Add missing info to docstring * Include Co-authored-by entries in AUTHORS * Do not test foreign keys with SQLite version < 3.7 * Avoid using whitespace in test_safe_parse_xml * xenapi: Retrieve VM uuid from xenstore * Reformat openstack-common.conf * Imported Translations from Transifex * Fixes Nova API /os-hosts missing element "zone" * disable colorizer as it swallows fails * Make iptables drop action configurable * Fixes argument order of quantumv2.api.get_instance_nw_info * Make _downsize_quota_delta() use stashed instance types * py2.6 doesn't support TextTestRunner resultclass * Reset ec2 image cache between S3 tests * Sync everything from oslo-incubator * Sync rpc from oslo-incubator * Don't log traceback on rpc timeout * Adds return-type in two functions' docstrings * Remove unnecessary checks in api.py * translate cinder BadRequest exception * Initialize compute manager before loading driver * Add a comment to placeholder migrations * xenapi: fix console for rescued instance * Fixes passing arbitrary conductor_api argument * Make nova.virt.fake.FakeDriver useable in integration testing * Remove unnecessary DB call to find EC2 AZs * Remove outdated try except block in ec2 code * nova-manage vm list fails looking 'instance_type' * Update instance network info cache to include vif_type * Bring back sexy colorized test results * Don't actually connect to libvirtd in unit tests * Add placeholder migrations to allow backports * Change arguments to volume_detach() * Change type of ssh_port option from Str to Int * xenapi: rpmbuild fixes * Set version to 2013.2 2013.1.rc1 ---------- * Fix Hyper V instance conflicts * Add caching for ec2 mapping ids * Imported Translations from Transifex * fix add-fixed-ip with quantum * Update the network info when using quantum * List InstanceNotFound as a client exception * Refactor db.service_destroy and db.service_update methods * Fix console support with cells * Fix missing argument to QemuImageInfo * Add missing tests for db.virtual_interface_* methods * Fix multiple fixed-ips with quantum * Add missing tests for db.service_* methods * Ensure that headers are returned as strings, not integers * Enable tox use of site-packages for libvirt * Require netaddr>=0.7.6 to avoid UnboundLocalError * Pass project id in quantum driver secgroup list * Fixes PowerVM spawn failed as missing attr supported_instances * Fix RequestContext crashes w/ no service catalog * Prevent volume-attach/detach from instances in rescue state * Fix XenAPI performance issue * xenapi: Adding logging for migration plugin * libvirt: Tolerate existing vm(s) with cdrom(s) * Remove dead code * Remove unused virt.disk.api methods bind/unbind * Imported Translations from Transifex * Revert "Remove the usage of instance['extra_specs' * Add standard methods to the Limits API * Store project_id for instance actions * rstrip() strips characters, not strings * Fix use of libvirt_disk_prefix * Revert 1154253 causes XenServer image compat issue * Reset migrating task state for more Exceptions * Fix db archiving bug with foreign key constraints * Imported Translations from Transifex * Update migration 153 for efficiency * Don't include traceback when wrapping exceptions * Fix exception message in Networks API extension * Make conductor's quota methods pass project_id properly * Fix: improve API error responses from os-hosts extension * Add missing API doc for networks-post-req * Make os-services API extensions consistent * Fix system_metadata "None" and created_at values * Add the serial to connection info for boot volumes * Do not accept invalid keys in quota-update * Add quotas for fixed ips * Makes safe xml data calls raise 400 http error instead of 500 * Fixes an iSCSI connector issue in the Hyper-V driver * Check keypair destroy result operation * Resize/Migrate refactoring fixes and test cases * Fixes Hyper-V live migration with attached volumes * Force nova to use keystone v2.0 for auth_token * Fix issues with cells and resize * Fix copyright - from LLC to Foundation * Don't log traceback on expected console error * Generalize console error handling during build * Remove sqlalchemy calling back to DB API * Make ssh key injection work with xenapi agent * Fix use of potentially-stale instance_type in tenant_usage * Drop gzip flag from tar command for OVF archives * Fix reconnecting to libvirt * List ComputeHostNotFound as a client exception * Fix: Nova aggregate API throws an uncaught exception on invalid host * Do cleaning up resource before rescheduling * nova-manage: remove unused import * Read instance resource quota info from "quota" namespace * LibvirtGenericVIFDriver update for stp * Switch to final 1.1.0 oslo.config release * Skip deleted fixed ip address for os-fixed-ips extension * Return error details to users in "dns-create-private-domain" * Lazy load CONF.quota_driver * Fix cells instance deletion * Don't load system_metadata when it isn't joined * List ConsoleTypeInvalid as a client exception * Make run_instance() bail quietly if instance has been deleted * Delete instance metadata when delete VM * Virtual Power Driver list running vms quoting error * Refactor work with session in db.block_device_mapping_* methods * Add missing tests for db.block_device_mapping_* methods * websockify 0.4 is busted * Sync rpc from oslo-incubator * Fix: nova-manage throws uncaught exception on invalid host/service * Fix more OS-DCF:diskConfig XML handling * Fix: Managers that incorrectly derive from SchedulerDependentManager * Fix nova-manage --version * Pin SQLAlchemy to 0.7.x * Deprecate CONF.fixed_range, do dynamic setup * Remove the usage of instance['extra_specs'] * Fix behaviour of split_cell_and_item * Fix quota issues with instance deletes * Fixes instance task_state being left as migrating * Force resource updates to update updated_at * Prepare services index method for use with cells * Handle vcpu counting failures gracefully * Return XML message with objectserver 404 * xenapi: Fix reboot with hung volumes * Rename LLC to Foundation * Pass migration_ref when when auto-confirming * Revert changing to FQDN for hostnames * Add numerous fixes to test_api_samples * Fixes instance action exception in "evacuate" API * Remove instance['instance_type'] relationship from db api * Refactor db tests to ensure that notdb driver is used * Rewrap two lines * Server create will only process "networks" if os-networks is loaded * Fixes nbd device can't be released error * Correct exception args in vfs/guestfs * Imported Translations from Transifex * Prevent nova services' coverage data from combining into nova-api's * Check if flavor id is an empty string * Simple syntax fix up * Fixes volume attach on Hyper-V with IPv6 * Add ability to control max utilization of a cell * Extended server attributes can show wrong hypervisor_hostname * Imported Translations from Transifex * Remove uses of instance['instance_type'] from nova/notifications * Libvirt driver create images even without meta * Prevent rescue for volume-backed instances * Fix OS-DCF:diskconfig XML handling * Imported Translations from Transifex * Compile BigInteger to INTEGER for sqlite * Add conductor to nova-all * Make bm model's deleted column match database * Update to Quantum Client 2.2.0 * Remove uses of instance['instance_type'] from nova/scheduler * Remove uses of instance['instance_type'] from nova/api * Remove uses of instance['instance_type'] from nova/network * Remove uses of instance['instance_type'] from nova/compute * Correct substring matching of baremetal VPD node names * Fix Wrong syntax for set:tag in dnsmasq startup option * Fix instance evacuate with shared storage * nova-manage: remove redundant 'dest' args * clear up method parameters for _modify_rules * Check CONF values *after* command line args are parsed * Make nova-manage db archive_deleted_rows more explicit * Fix for delete error in Hyper-V - missing CONF imports * add .idea folder to .gitignore pycharm creates this folder * Make 'os-hosts/node1' case sensitivity defer to DB * Fix access_ip_* race * Add MultipleCreate template and fix conflict with other templates * Update tox.ini to support RHEL 6.x * Fix instance type cleanup when doing a same-id migration * Tiny typo * Remove unnecessary setUp() and tearDown() methods * Remove duplicate API logging * Remove uses of instance['instance_type'] from libvirt driver * Remove uses of instance['instance_type'] from powervm driver * Remove uses of instance['instance_type'] from xenapi driver * Fixed image filter support for vmware * Switch to oslo.config * Fix instance_system_metadata deleted columns * Remove parameters containing passwords from Notifications * Add missing action_start if deleting resized inst * Fix issues with re-raising exceptions * Don't traceback in the API on invalid keypair * delete deleted image 500 bug * Moves Hyper-V options to the hyperv section * Fix 'to integer' conversion of max and min count values * Standarize ip validation along the code * Adjusts reclaim instance interval of deferred delete tests * Fix Network object encoding issue when using qpid * Rename VMWare to VMware * Put options in a list * Bump instance updated_at on network change * Catching InstanceNotFound exception during reboot instance * Imported Translations from Transifex * Remove completed FIXME * quantum security_group driver queries db regression * Prevent reboot of rescued instance * Baremetal deploy helper sets ODIRECT * Read baremetal images from extra_specs namespace * Rename source_(group_id/ip_prefix) to remote_(group_id/ip_prefix) * docs should indicate proper git commit limit * Imporove db.sqlalchemy.api._validate_unique_server_name method * Remove unused db calls from nova.db.api * Fixes oslo-config update for deprecated_group * fix postgresql drop race * Compute manager should remove dead resources * Fix an error in compute api snapshot_volume_backed bdm code * Fixes disk size issue during image boot on Hyper-V * Updating powervm driver snapshot with update_task_state flow * Imported Translations from Transifex * Add ssh port and key based auth to VPD * Make ComputeManager _running_deleted_instances query by uuid * Refactor compute manager _get_instances_by_driver * Fix target host variable from being overwritten * Imported Translations from Transifex * Fixes live migration with attached volumes issue * Don't LOG.error on max_depth (by default) * Set vm_state to ERROR on net deallocate failure * validate security_groups on server create * Fix IBM copyright strings * Implement rules_exist method for quantum security group driver * Switch to using memorycache from oslo * Remove pylint errors for undefined GroupException members * Sync timeutils and memorycache from oslo * instance_info_cache_update creates wrongly * Tone down logging while waiting for conductor * Add os-volumes extension to api samples * Regenerate nova.conf.sample * Fix ephemeral devices on LVM don't get mkfs'd * don't stack trace if long ints are passed to db * Pep8/pyflakes cleanup of deprecated_api * Fix deprecated network api * Fixes the Hyper-V driver's method signature * Imported Translations from Transifex * Fixes a Hyper-V live migration issue * Don't use instance['instance_type'] for scheduler filters in migration * Fallback coverage backdoor telnet connection to lo * Add instance_type_get() to virt api * Make compute manager revert crashed migrations on init_host() * Adds API Sample tests for Volume Attachments * Ensure that FORWARD rule also supports DHCP * Remove duplicate options(joinedload) from aggregates db code * Shrink size of aggregate_metadata_get_by_host sql query * Remove old commented out code in sqlalchemy models * Return proper error messages while disassociating floating IP * Don't blindly skip first migration * Imported Translations from Transifex * Suppress retries on UnexpectedTaskStateErrors * Fix `with_data` handling in test-migrations * BM Migration 004: Actually drop column * Actually run baremetal migration tests * Adds retry on upload_vhd for xapi glance plugin * ec2 _format_security_group() accesses db when using quantum_driver * Remove un-needed methods * Prevent hacking.py from crashing on unexpected import exception * Bump python-quantumclient version to 2.1.2 * Improve output msgs for _compare_result * Add a 'hw_' namespace to glance hardware config properties * Makes sure required powervm config options are set * Update OpenStack LLC to Foundation * Improve hackings docstring detection * Make sure no duplicate forward rules can exist * Use min_ram of original image for snapshot, even with VHD * Revert IP Address column length to 39 * Additional tests for safe parsing with minidom * Make allocate_for_instance() return only info about ports allocated * Fix crash in quantumapi if no network or port id is specified * Unpin PasteDeploy dependency version * Unpin routes dependency version * Unpin suds dependency version * Unpin Cheetah dependency version * Allow zk driver be imported without zookeeper * Retry floating_ip_fixed_ip_associate on deadlock * Fix hacking.py to handle 'cannot import x' * Add missing import to fakelibvirt * Migration 148: Fix drop table dependency order * Minor code optimization in _compute_topic * Fix hacking.py to handle parenthesise in from import as * Fix redefinition of function test_get_host_uptime * Migration 147: Prevent duplicate aggregate_hosts * Rework instance actions to work with cells * Fix incorrect zookeeper group name * Sync nova with oslo DB exception cleanup * Fix broken baremetal migration tests * if reset fails, display the command that failed * Remove unused nova.db.api:instance_get_all_by_reservation * Add API Sample tests for Snapshots extension * Run libguestfs API calls in a thread pool * Change nova-dhcpbridge FLAGFILE to a list of files * Imported Translations from Transifex * Readd run_tests.sh --debug option * Clean unused kernels and ramdisks from image cache * Imported Translations from Transifex * Ensure macs can be serialized * Remove Print Statement * Prevent default security group deletion * libvirt: lxml behavior breaks version check * Add missing import_opt for flat_injected * Add processutils from oslo * Updates to OSAPI sizelimit middleware * Remove compat cfg wrapper * Fix exception handling in baremetal API * Make guestfs use same libvirt URI as Nova * Make LibvirtDriver.uri() a staticmethod * Enable VM DHCP request to reach DHCP agent * Don't set filter name if we use Noop driver * Removes unnecessary qemu-img dependency on powervm driver * Migration 146: Execute delete call * Add `post_downgrade` hook for migration tests * Fix migration snake-walk * BM Migrations 2 & 3: Fix drop_column statements * Migration 144: Fix drop index statement * Remove function redefinitions * Migration 135: Fix drop_column statement * Add missing ec2 security group quantum mixin * Fix baremetal migration skipping * Add module prefix to exception types * Flush tokens on instance delete * Fix launching libvirt instances with swap * Spelling: compatable=>compatible * import base_dir_name config option into vmwareapi * Fix ComputeAPI.get_host_uptime * Move DB thread pooling to DB API * Use a fake coverage module instead of real one * Standardize the coverage initializations * Sync eventlet_backdoor from oslo-incubator * Sync rpc from oslo-incubator * Fix message envelope keys * Remove race condition (in Networks) * Move some context checking code from sqlalchemy * Baremetal driver returns accurate list of instance * Identify baremetal nodes by UUID * Improve performance of baremetal list_instances * Better error handling in baremetal spawn & destroy * Wait for baremetal deploy inside driver.spawn * cfg should be imported from oslo.config * Add Nova quantum security group proxy * Add a volume driver in Nova for Scality SOFS * Make nova security groups more pluggable * libvirt: fix volume walk of /dev/disk/by-path * Add better status to baremetal deployments * Fix handling of source_groups with no-db-compute * Improve I/O performance for periodic tasks * Allow exit code 21 for 'iscsiadm -m session' * Removed duplicate spawn code in PowerVM driver * Add API Sample tests for Hypervisors extension * Log lifecycle events to log INFO (not ERROR) * Sync rpc from oslo-incubator * sync oslo log updates * Adding ability to specify the libvirt cache mode for disk devices * Sync latest install_venv_common.py * Make add-fixed-ip update nwfilter wth in libvirt * Refactor nwfilter parameters * ensure we run db tests in CI * More gracefully handle TimeoutException in test * Multi-tenancy isolation with aggregates * Fix pep8 issues with test_manager.py * Fix broken logging imports * Fix hacking test to handle namespace packages * Use oslo-config-2013.1b4 * support preallocated VM images * Fix instance directory path for lxc * Add snapshot methods to fakes.py * PowerVMDiskAdapter detach/cleanup refactoring * Make ComputeTestCase.test_state_revert faster * Add an extension to show image size * libvirt: Use uuid for instance directory name * Support running periodic tasks immediately at startup * Fix XMLMatcher error reporting * Fix XML config tests for disk/net/cpu tuning * Add support for network adapter hotplug * Handle lifecycle events in the compute manager * Add support for lifecycle events in the libvirt driver * Enhance IPAdresses migration tests * Add basic infrastructure for compute driver async events * Fix key check in instance actions formatter * Add a safe_minidom_parse_string function * Documentation cleanups for nova devref * Fix leak of loop/nbd devices in injection using localfs * Add support for instance CPU consumption control * Add support for instance disk IO control * Retry bw_usage_update() on innodb Deadlock * Change CIDR column size on migration version 149 * Provide way to pass rxtx factor to quantum * Fibre channel block storage support (nova changes) * Default SG rules for the Security Group "Default" * create new cidr type for data storage * Ensure rpc result is primitive types * Change all instances of the non-word "inteface" to "interface" * Remove unused nova.db.api:network_get_by_bridge * Fix a typo in two comments. networksa -> networks * Live migration with an auto selection of dest * Remove unused nova.db.api:network_get_by_instance * Fix network list and show with quantum * Remove unused db calls from nova.db.sqlalchemy.api * Remove unused db calls * Small spelling fix in sqlalchemy utils * Fix _get_instance_volume_block_device_info call parameter * Do not use abbreviated config group names (zookeeper) * Prevent the unexpected with nova-manage network modify * Fix hacking tests on osx * Enable multipath for libvirt iSCSI Volume Driver * Add select_hosts to scheduler manager rpc * Add and check data functions for test_migrations 141 * fix incorrectly defined ints as strs * Remove race condition (in TaskLog) * Add generic dropper for duplicate rows * Imported Translations from Transifex * Fix typo/bug in generic UC dropper * remove intermediate libvirt downloaded images * Add support for instance vif traffic control * Add libvirt XML schema support for resource tuning parameters * Fix instance can not be deleted after soft reboot * Correct spelling of quantum * Make pep8 tests run inside virtualenv * Remove tests for non-existing SimpleScheduler * libvirt: Fix LXC container creation * Rename 'connection' to 'driver' in libvirt HostState * Ensure there is only one instance of LibvirtDriver * Stop unit test for prompting for a sudo password * clean up missing whitespace after ':' * Push 'Error' result from event to instance action * Speedup the revert_state test * Add image to request_spec during resize * Ensure start time is earlier than end time in simple_tenant_usage * Split out body of loop in _sync_power_states in compute manager * Remove dead variable assignment in compute manager * Assign unique names with os-multiple-create * Nova network needs to take care of existing alias * Delete baremetal interfaces when their parent node is deleted * Harmonize PEP8 checking between tox and run_tests.sh * VirtualPowerDriver catches ProcessExecutionError * [xenapi] Cooperatively yield during sparse copy * Allow archiving deleted rows to shadow tables, for performance * Adds API Sample tests for FlavorAccess extension * Add an update option to run_tests.sh * filter_scheduler: Select from a subset of hosts * use nova-conductor for live-migration * Fix script argument parsing * Add option to allow cross AZ attach configurable * relocatable roots doesn't handle testr args/opts * Remove a log message in test code * add config drive to api_samples * Don't modify injected_files inside PXE driver * Synchronize code from oslo * Canonizes IPv6 before insert it into the db * Only dhcp the first ip for each mac address * Use connection_info on resize * Fix add-fixed-ip and remove-fixed-ip * API extension for accessing instance_actions * Use joinedload for system_metadata in db * Add migration with data test for migration 151 * Correct misspelling in PowerVM comment * Add GlusterFS libvirt volume connector * Module import style checking changes * Stub additional FloatingIP methods in FlatManager * Resize/Migrate functions for PowerVM driver * Added a service heartbeat driver using Memcached * Use a more specific error reporting invalid disk hardware * Allow VIF model to be chosen per image * Check the length of flavor name in "flavor-create" * Add API sample tests to Services extension * VMWare driver to use current nova.network.model * Add "is not" test to hacking.py * Update tools/regression_tester * Fix passing conductor to get_instance_nw_info() * Imported Translations from Transifex * Make compute manager use conductor for stopping instances * Move allowvssprovider=false to vm-data field * Allow aggregate create to have None as the az * Forces flavorRef to be string in servers resize api * xenapi: Remove unecessary exception handling * Sync jsonutils from openstack-common * Simplify and optimize az server output extension * Add an extension to show the type of an ip * Ensure that only one IP address is allocated * Make the metadata paths use conductor * Fix nova-compute use of missing DBError * Adding support for AoE block storage SANs * Update docs about testing * Allow generic rules in context_is_admin rule in policy * Implements resize / cold migration on Hyper-V * test_(dis)associate_by_non_existing_security_group_name missing stub * Make scheduler remove dead nodes from its cache * More conductor support for resizes * Allow fixed to float ping with external gateway * Add generic UC dropper * Remove locking declarator in ServiceGroup __new__() * Use ServiceGroup API to show node liveness * Refine PowerVM MAC address generation algorithm * Fixes a bug in attaching volumes on Hyper-V * Fix unconsumed column name warning in test_migrations * Fix regression in non-admin simple_usage:show * Ensure 'subunit2pyunit' is run in venv from run_tests.sh * Fix inaccuracies in the development environment doc * preserve order of pre-existing iptables chains * Adds API Sample tests for FloatingIPDNS extension * Don't call 'vif.plug' twice during VM startup * Disallow setting /0 for network other than 0.0.0.0 * Fix spelling in comment * Imported Translations from Transifex * make vmwareapi driver pass quantum port-id to ESX * Add control-M to list of characters to strip out * Update to simplified common oslo version code * Libvirt: Implement snapshots for LVM-backed roots * Properly write non-raw LVM images on creation * Changes GA code for tracking cross-domain * Return dest_check_data as expected by the Scheduler * Simplify libvirt snapshot code path * fix VM power state to be NOSTATE when instance not found * Fix missing key error in libvirt.driver * Update jsonutils from oslo-incubator * Update nova/compute/api to handle instance as dict * Use joined version of db.api calls * l3.py,add_floating_ip: setup NAT before binding * Regenerate nova.conf.sample * Fixes a race condition on updating security group rules * Ensure that LB VIF drivers creates the bridge if necessary * Remove nova.db call from baremetal PXE driver * Support for scheduler hints for VM groups * Fixed FlavorAccess serializer * Add a virtual PowerDriver for Baremetal testing * Optimize rpc handling for allocate and deallocate * Move floating ip db access to calling side * Implement ZooKeeper driver for ServiceGroup API * Added the build directory to the tox.ini list pep8 ignores * support reloctable venv roots in testing framework * Change to support custom nw filters * Allow multiple dns servers when starting dnsmasq * Clean up extended server output samples * maint: remove unused imports from bin/nova-* * xenapi: Cleanup detach_volume code * Access DB as dict not as attributes part 5 * Introduce support for 802.1qbg and 802.1qbh to Nova VIF model * Adds _(prerun|check)_134 functions to test_migrations * Extension for rebuild-for-ha * Support hypervisor supplied macs in nova-network * Recache or rebuild missing images on hard_reboot * Cells: Add cells support to hypervisors extension * Cells: Add cells support to instance_usage_audit_log api extension * Update modules from common required for rpc with lock detection * Fix lazy load 'system_metadata' failed problem * Ban database access in nova-compute * Move security_groups refreshes to conductor * Fix inject_files for storing binary file * Add regression testing tool * Change forward_bridge_interface to MultiStrOpt * Imported Translations from Transifex * hypervisor-supplied-nics support in PowerVM * Default the last parameter (state) in task_log_get to None * Sync latest install_venv_common from oslo * Remove strcmp_const_time * Adds original copyright notice to refactored files * Update .coveragerc * Allow disk driver to be chosen per image * Refactor code for setting up libvirt disk mappings * Refactor instance usage notifications for compute manager * Flavor Extra Specs should require admin privileges * Remove unused methods * Return to skipping filters when using force_hosts * Refactor server password metadata to avoid direct db usage * lxc: Clean up namespace mounts * Move libvirt volume driver tests to separate test case * Move libvirt NFS volume driver impl into volume.py * replace ssh-keygen -m with a python equivalent * Allow connecting to self-signed quantum endpoints * Sync latest db and importutils from oslo * Use oslo database code * Fix check instance host for instance action * Make get_dev_name_for_instance() use stashed instance_type info * Added Postgres CI opportunistic test case * Remove remaining instance_types query from compute/manager * Make cells_api fetch stashed instance_type info * Teach resource tracker about stashed instance types * Fix up instance types in sys meta for resizes * lxc: virDomainGetVcpus is not supported by driver * Fix incorrect device name being raised * VMware VC Compute Driver * Default value of monkey_patch_modules is broken * Adds evacuate method to compute.api * Fix import for install_venv.py * allow disabling file injection completely * separate libvirt injection and configdrive config variables * Add API sample tests to os-network * Fix incorrect logs in network * Update HACKING.rst per recent changes * Allow for specifying nfs mount options * Add REST API to show availability_zone of instance * Make NFS mount hashes consistent with Cinder * Parse testr output through subunit2pyunit * Imported Translations from Transifex * Optimize floating ip list to make one db query * Remove hardcoded topic strings in network manager * Reimplement is_valid_ipv4() * Tweakify is_valid_boolstr() * Fix update quota with invalid value * Make system_metadata update in place * Mark password config options with secret * Record instance actions and events * Postgres does not like empty strings for type inet * Add 'not in' test to tools/hacking.py * Split floating ip functionality into new file * Optimize network calls by moving them to api * Fixes unhandled exception in detach_volume * Fixes FloatingIPDNS extension 'show' method * import tools/flakes from oslo * Use conductor for instance_info_cache_update * Quantum metadata handler now uses X-Forwarded-For * instance.update notifications don't always identify the service * Handle compute node not available for live migration * Fixes 'not in' operator usage * Fixes "is not" usage * Make scheduler modules pass conductor to add_instance_fault * Condense multiple authorizers into a single one * Extend extension_authorizer to enable cleaner code * Remove unnecessary deserializer test * Added sample tests to FlavorExtraSpecs API * Fix rebuild with volumes attached * DRYing up volume_in_mapping code * Use _prep_block_device in rebuild * xenapi: Ax unecessary `block_device_info` params * Code cleanup for rebuild block device mapping * Fix eventlet/mysql db pooling code * Add support for compressing qcow2 snapshots * Remove deprecation notice in LibvirtBridgeDriver * Fix boto capabilities check * Add api samples to fping extension * Fix SQL Error with fixed ips under devstack/postgresql * Pass testropts in to setup.py in run_tests.sh * Nova Hyper-V driver refactoring * Fixed grammar problems and typos in doc strings * Add option to control where bridges forward * xenapi: Add support for different image upload drivers * Removed print stmts in test cases * Fix get and update in FlavorExtraSpecs * Libvirt: Add support for live snapshots * Move task_log functions to conductor * erase outdated comment * Keep flavor information in system_metadata * Add instance_fault_create() to conductor * Adds API Sample tests for os-instance_usage_audit_log extension * validate specified volumes to boot from at the API layer * Refactor libvirt volume driver classes to reduce duplication * Change ''' to """ in bin/nova-{novncproxy,spicehtml5proxy} * Pass parameter 'filter' back to model layer * Fix boot with image not active * refactored data upgrade tests in test_migrations * Fix authorized_keys file permissions * Finer access control in os-volume_attachments * Stop including full service catalog in each RPC msg * Make sure there are no unused import * Fix missing wrap_db_error for Session.execute() method * Use install_venv_common.py from oslo * Add Region name to quantum client * Removes retry of set_admin_password * fix nova-baremetal-manage version printing * Refactoring/cleanup of compute and db apis * Fix an error in affinity filters * Fix a typo of log message in _poll_unconfirmed_resizes * Allow users to specify a tmp location via config * Avoid hard dependency on python-coverage * iptables-restore error when table not loaded * Don't warn up front about libvirt loading issues in NWFilterFirewall * Relax API restrictions around the use of reboot * Strip out Traceback from HTTP response * VMware Compute Driver OVF Support * VMware Compute Driver Host Ops * VMware Compute Driver Networking * Move policy checks to calling side of rpc * Add api-samples to multinic extension * Add system_metadata to db.instance_get_active_by_window_joined * Enable N302: Import modules only * clean up api_samples documentation * Fix bad imports that cause nova-novncproxy to fail * populate dnsmasq lease db with valid leases * Support optional 4 arg for nova-dhcpbridge * Add debug log when call out to glance * Increase maximum URI size for EC2 API to 16k * VMware Compute Driver Glance improvement * Refactored run_command for better naming * Fix rendering of FixedIpNotFoundForNetworkHost * Fix hacking N302 import only modules * Avoid db lookup in info_from_instance() * Fixes task_log_get and task_log_get_all signatures * Make failures in the periodic tests more detailed * Clearer debug when test_terminate_sigterm fails * Skip backup files when running pep8 * Added sample tests to floating-ip-pools API * _sync_compute_node should log host and nodename * Don't pass the entire list of instances to compute * VMware Compute Driver Volume Management * Bump the base rpc version of the network api to 1.7 * Remove compute api from scheduler driver * Remove network manager from compute manager * Adds SSL support for API server * Provide creating real unique constraints for columns * Add version constraint for coverage * Correct a format string in virt/baremetal/ipmi.py * Add REST api to manage bare-metal nodes * Adding REST API to show all availability zones of an region * Fixed nova-manage argument parsing error * xenapi: Add cleanup_sm_locks script * Fix double reboot during resume_state_on_host_boot * Add support for memory overcommit in live-migration * Adds conductor support for instance_get_active_by_window_joined * Make compare_result show the difference in lists * Don't limit SSH keys generation to 1024 bits * Ensure service's servicegroup API is created first * Drop volume API * Fix for typo in xml API doc sample in nova * Avoid stuck task_state on snapshot image failure * ensure failure to inject user files results in startup error * List servers having non-existent flavor should return empty list * Add version constraint for cinder * Remove duplicated tapdev creation code from libvirt VIF * Move helper APIs for OVS ports into linux_net * Add 'ovs_interfaceid' to nova network VIF model * Replace use of mkdtemp with fixtures.TempDir * Add trust level cache to trusted_filter * Fix the wrong datatype in task_log table * Cleanup of extract_opts.py * Baremetal/utils should not log certain exceptions * Use setup.py testr to run testr in run_tests.sh * Fix nova coverage * PXE driver should rmtree directories it created * Fix floating ips with external gateway * Add support for Option Groups in LazyPluggable * Fix incorrect use of context object * Unpin testtools * fix misspellings in logs, comments and tests * fix mysql race in tests * Fix get Floating ip pools action name to match with its policy * Generate coverage even if tests failed * Allow snapshots of paused and suspended instances * Update en_US message translations * Sync latest cfg from oslo-incubator * Avoid testtools 0.9.25 * Cells: Add support for compute HostAPI() * Refactor compute_utils to avoid db lookup * ensure zeros are written out when clearing volumes * fix service_ref undefined problem * Add rootwrap filters for password injection with localfs * fix floating ip test that wasn't running * Prevent metadata updates until instance is active * More consistent libvirt XML handling and cleanup * pick up eventlet backdoor fix from oslo * Run_as_root to ensure resize2fs succeed for all image backends * libvirt: Fix typo in configdrive implementation * Refactor EC2 keypairs exception * Directly copy a file URL from glance * Remove restoring soft deleted entries part 2 * Remove restoring soft deleted entries part 1 * Use conductor in the servicegroup db driver * Add service_update to conductor * Remove some db calls from db servicegroup driver * XenAPI: Fix volume detach * Refactor: extract method: driver_dict_from_config * Cells: Fix for relaying instance info_cache updates * Fix wrong quota reservation when deleting resizing instance * Go back to the original branch after pylint check * Ignore auto-generated files by lintstack * Add host to instance_faults table * Clean up db network db calls for fixed and float * Remove obsolete baremetal override of MAC addresses * Fix multi line docstring tests in hacking.py * PXE driver should not accept empty kernel UUID * Use common rootwrap from oslo-incubator * Remove network_host config option * Better instance fault message when rescheduling * libvirt: Optimize test_connection and capabilities * don't allow crs in the code * enforce server_id can only be uuid or int * Allow nova to use insecure cinderclient * Makes sure compute doesn't crash on failed resume * Fix fallback when Quantum doesn't provide a 'vif_type' * Move compute node operations to conductor * correcting for proper use of the word 'an' * Correcting improper use of the word 'an' * Save password set through xen agent * Add encryption method using an ssh public key * Make resource tracker use conductor for listing instances * Make resource tracker use conductor for listing compute nodes * Updates prerequisite packages for fedora * Expose a get_spice_console RPC API method * Add a get_spice_console method to nova.virt.ComputeDriver API * Add nova-spicehtml5proxy helper * Pull NovaWebSocketProxy class out of nova-novncproxy binary * Add support for configuring SPICE graphics with libvirt * Add support for setting up elements in libvirt config * Add common config options for SPICE graphics * Create ports in quantum matching hypervisor MAC addresses * Make nova-api logs more useful * Override floating interface on callee side * Reject user ports that have MACs the hypervisor cannot use * Remove unused import * Reduce number of iptable-save restore loops * Clean up get_instance_id_by_floating_address * Move migration_get_..._by_host_and_node to conductor * Make resource tracker use conductor for migration updates * minor improvements to nova/tests/test_metadata.py * Cells: Add some cells support to admin_actions extension * Populate service list with availability zone and correct unit test * Correct misspelling of fake_service_get_all * Add 'devname' to nova.network.model.VIF class * Use testrepository setuptools support * Cleaning up exception handling * libvirt: use tap for non-blockdevice images on Xen * Export the MAC addresses of nodes for bare-metal * Cells: Add cells API extension * More HostAPI() cleanup for cells * Break out a helper function for working with bare metal nodes * Renames the new os-networks extension * Define a hypervisor driver method for getting MAC addresses * enables admin to view instance fault "details" * Revert "Use testr setuptools commands." * Revert "Populate service list with availability zone" * Fix typos in docstring * Fix problem with ipv6 link-local address(es) * Adds support for Quantum networking in Hyper-V * enable hacking.py self tests * Correct docstring on sizelimit middleware * sync latest log and lockutils from oslo * Fix addition of CPU features when running against legacy libvirt * Fix nova.availability_zones docstring * Fix uses of service_get_all_compute_by_host * VMware Compute Driver Rename * use postgresql INET datatype for storing IPs * Extract validation and provision code to separate method * Implement Quantum support for addition and removal of fixed IPs * Keep self and context out of error notification payload * Populate service list with availability zone * Add Compute API validations for block device map * Cells: Commit resize quota reservations immediately * Cells: Reduce the create_image call depth for cells * Clean up compute API image_create * Fix logic error in periodic task wait code * Centralize instance directory logic * Chown doesn't work on mounted vfat * instances_path is now defined here * Convert ConfigDriveHelper to being a context manager itself * Use testr setuptools commands * Move migration_create() to conductor * Move network call from compute API to the manager * Fix incorrect comment, and move a variable close to use * Make sure reboot_instance uses updated instance * Cleanup reboot_instance tests * Fix use of stale instance data in compute manager * Implements getPasswordData for ec2 * Add service_destroy to conductor * Make nova.service get service through conductor * Add service_create to conductor * Handle waiting for conductor in nova.service * Allow forcing local conductor * Make pinging conductor a part of conductor API * Fix some conductor manager return values * Handle directory conflicts with html output * Fix error in NovaBase.save() method * Skip domains on libvirt errors in get_vcpu_used() * Fix state sync logic related to the PAUSED VM state * Remove more unused opts from nova.scheduler.driver * Fix quota updating when admin deletes common user's instance * Tests for PXE bare-metal provisioning helper server * Correct the calculating of disk size when using lvm disk backend * Adding configdrive to xenapi * Validated device_name value in block device map * Fix libvirt resume function call to get_domain_xml * Make it clearer that network.api.API is nova-network specific * Access instance as dict, not object in xenapi * Expand quota logging * Move logic from os-api-host into compute * Create a directory for servicegroup drivers * Move update_instance_info_cache to conductor * Change ComputerDriver.legacy_nwinfo to raise by default * Cleanup pyflakes in nova-manage * Add user/tenant shim to RequestContext * make runtests -p act more like tox * fix new N402 errors * Add host name to log message for _local_delete * Try out a new nova.conf.sample format * Regenerate nova.conf.sample * Make Quantum plugin fill in the 'bridge' name * Make nova network manager fill in vif_type * Add some constants to the network model for drivers to use * Move libvirt VIF XML config into designer.py * Remove bogus 'unplug' calls from libvirt VIF test * Fix bash syntax error in run_tests.sh * Update instance's cell_name in API cell * Fix init_host checking moved instances * Fix test cases in integrated.test_multiprocess_api * Map libvirt error to InstanceNotFound in get_instance_disk_info * Fixed comment typo * Added sample tests to FlavorSwap API * Remove unused baremetal PXE options * Remove unused opt import in scheduler.driver * Move global service networking opts to new module * Move memcached_servers opt into common.memorycache * Move service_down_time to nova.service * Move vpn_key_suffix into pipelib * fix N402 on tools/ * fix N402 for nova-manage * fix N402 for rest of nova * fix N402 for nova/c* * fix N402 for nova/db * don't clear the database dicts in the tearDown method * Fixed typos in doc strings * Enhance wsgi to listen on ipv6 address * Adds a flag to allow configuring a region * Fix double reboot issue during soft reboot * Remove baremetal-compute-pxe.filters * Fix pyflakes issues in integrated tests * Adds option to rebuild instance with existing disk * Move common virt driver options to virt.driver * Move vpn_image_id to pipelib * Move enabled_apis option into nova.service * Move default_instance_type into nova.compute * Move osapi_compute_unique_server_name_scope to db * Move api_class options to where they are used * Move manager options into nova.service * Move compute_topic into nova.compute.rpcapi * fix N402 for nova/network * fix N402 for nova/scheduler * fix N402 for nova/tests * Fix N402 for nova/virt * Fix N402 for nova/api * New instance_actions and events table, model, and api * Cope better with out of sync bm data * Import latest timeutils from oslo-incubator * Remove availability_zones from service table * Enable Aggregate based availability zones * Sync log from oslo-incubator * Clarify the DBApi object in cells fakes * Fix lintstack check for multi-patch reviews * Adds to manager init_host validation for instances location * Add to libvirt driver instance_on_disk method * add to driver option to keep disks when instance destroyed * Fix serialization in impl_zmq * Added sample tests to FlavorRxtx API * Refresh instance metadata in-place * xenapi: Remove dead code, moves, tests * Fix baremetal VIFDriver * Adds a new tenant-centric network extension * CLI for bare-metal database sync * Move scheduler_topic into nova.scheduler.rpcapi * Move console_topic into nova.console.rpcapi * Move network_topic into nova.network.rpcapi * Move cert_topic into nova.cert.rpcapi * Move global s3 opts into nova.image.s3 * Move global glance opts into nova.image.glance * Remove unused osapi_path option * attach/detach_volume() take instance as a parameter * fix N401 errors, stop ignoring all N4* errors * Add api extension to get and reset password * powervm: Implement snapshot for local volumes * Add exception handler for previous deleted flavor * Add NoopQuotaDriver * Conductor instance_get_all replaces _by_filters * Support cinderclient http retries * Sync rpc and notifier from oslo-incubator * PXE bare-metal provisioning helper server * Added sample tests to QuotaClasses API * Changed 'OpenStack, LLC' message to 'OpenStack Foundation' * Convert short doc strings to be on one line * Get instances from conductor in init_host * Invert test stream capture logic for debugging * Upgrade WebOb to 1.2.3 * Make WebOb version specification more flexible * Refactor work with TaskLog in sqlalchemy.api * Check admin context in bm_interface_get_all() * Provide a PXE NodeDriver for the Baremetal driver * Handle compute node records with no timestamp * config_drive is missing in xml deserializer * Imported Translations from Transifex * NovaBase.delete() rename to NovaBase.soft_delete() * livbirt: have a single source of console log file naming * Remove the global DATA * Add ping to conductor * Add two tests for resize action in ServerActionsControllerTest * Move service_get_all operations to conductor * Move migration_get_unconfirmed_by_dest_compute to conductor * Move vol_usage methods to conductor * Add test for resize server in ComputeAPITestCase * Allow pinging own float when using fixed gateway * Use full instance in virt driver volume usage * Imported Translations from Transifex * Refactor periodic tasks * Cells: Add periodic instance healing * Timeout individual tests after one minute * Fix regression in RetryFilter * Cells: Add the main code * Adding two snapshot related task states * update version urls to working v2 urls * Add helper methods to nova.paths * Move global path opts in nova.paths * Remove unused aws access key opts * Move fake_network opt to nova.network.manager * Allow larger encrypted password posts to metadata * Move instance_type_get() to conductor * Move instance_info_cache_delete() to conductor * Move instance_destroy() to conductor * Move instance_get_*() to conductor * Sync timeutils changes from Oslo * Remove system_metadata db calls from compute manager * Move block_device_mapping destroy operations to conductor * Clean up setting of control_exchange default * fix floating-ip in multihost case * Invalid EC2 ids should make the entire request fail * improve libguestfs exception handling * fix resize of unpartitioned images with libguestfs * xenapi: Avoid hotplugging volumes on resize * Remove unused VMWare VIF driver abstraction * Delete pointless nova.virt.VIFDriver class * Clarify & fix docs for nova-novncproxy * Removes unused imports * Imported Translations from Transifex * Fix spelling mistakes in nova.virt * Cells: Add cells commands to nova-manage * Add remaining get_backdoor_port() rpc calls to coverage * Fix race in resource tracker * Move block_device_mapping get operations to conductor * Move block_device_mapping update operations to conductor * Improve baremetal driver error handling * Add unit test to update server metadata * Add unit test to revert resize server action * Add compute build/resize errors to instance faults * Add unit test for too long metadata for server rebuild action * Adds os-volume_attachments 'volume_id' validation * Raise BadRequest when updating 'personality' * Imported Translations from Transifex * Ensure that Quantum uses configured fixed IP * Add conditions in compute APIRouter * Imported Translations from Transifex * CRUD on flavor extra spec extension should be admin-only * Report failures to mount in localfs correctly * Add API sample tests to FixedIPs extension * baremetal power driver takes **kwargs * Implement IPMI sub-driver for baremetal compute * Fix tests/baremetal/test_driver.py * Move baremetal options to [BAREMETAL] OptGroup * Adds test for HTTPUnprocessableEntity when rebooting * Make sure the loadables path is the absolute path * Fix bug and remove update lock in db.instance_test_and_set() * Periodic update of DNS entries * Fix error in test_get_all_by_multiple_options_at_once() * Remove session.flush() and session.query() monkey patching * Update nova-cert man page * Allow new XML API sample file generation * Remove unused imports * spelling in test_migrations * Imported Translations from Transifex * Check for image_meta in libvirt.driver.spawn * Adds test for 'itemNotFound' errors in 'Delete server' * Remove improper NotFound except block in list servers * Spelling: Compatability=>Compatibility * Imported Translations from Transifex * Ensure we add a new line when appending to rc.local * Verify the disk file exists before running qemu-img on it * Remove lxc attaching/detaching of volumes * Teardown container rootfs in host namespace for lxc * Fix cloudpipe instances query * Ensure datetimes can be properly serialized * Imported Translations from Transifex * Database metadata performance optimizations * db.network_delete_safe() method performance optimization * db.security_group_rule_destroy() method performance optimization * Import missing exception * Ignore double messages to associate the same ip * Imported Translations from Transifex * Database reservations methods performance optimization * Using query.soft_delete() method insead of soft deleting by hand * Create and use subclass of sqlalchemy Query with soft_delete() method * Remove inconsistent usage of variable from hyperv * Log last compute error when rescheduling * Removed unused imports * Make libvirt driver default to virtio for KVM/QEMU NICs * Refactor libvirt VIF classes to reduce duplicate code * Makes sure to call crypto scripts with abspath * Enable nova exception format checking in tests * Eliminate race conditions in floating association * Imported Translations from Transifex * Provide a configdrive helper which uses contextlib * Add extension to allow hiding of addresses * Add html reports to report action in coverage extension * Add API samples tests for the coverage extension * Fix _find_ports() for when backdoor_port is None * Parameterize database connection in test.py * fixing the typo of the error message from nbd * add 'random_seed' entry to instance metadata * Baremetal VIF and Volume sub-drivers * Fix revert resize failure with disk.local not found * Fix a test isolation error in compute.test_compute * New Baremetal provisioning framework * Move baremetal database tests to fixtures * address uuid overwriting * Add get_backdoor_port to cert * Add get_backdoor_port to scheduler * Add get_backdoor_port to console * Make libvirt driver.listinstances return defined * Add get_backdoor_port to consoleauth * Export custom SMBIOS info to QEMU/KVM guests * Make configdrive.py use version.product_string() * Allow loading of product/vendor/package info from external file * Remove obsolete VCS version info completely * Trap exception when trying to write csr * Define a product, vendor & package strings in version.py * Extract image metadata from Cinder * Add expected exception to aggregate_metadata_delete() * Move aggregate_get() to conductor * Add .testrepository/ directory to gitginore * Make load_network_driver load passed in driver * Fix race condition of resize confirmation * libvirt: Make vif_driver.plug() returns None * Add an iptables mangle rule per-bridge for DHCP * Make NBD retry logic more generic, add retry to loop * Reliably include OS type in ephemeral filenames * Allow specification of libvirt guest interface backend driver * Fix "image_meta" data passed in libvirt test case * Fix typos in vncserver_listen config param help description * Traceback when user doesn't have permission * removed duplicate function definitions * network/api add_fixed_ip correctly passes uuid * Import cfg module in extract_opts.py * Raise old exception instance instead of new one * Update exceptions to pass correct kwargs * Add option to make exception format errors fatal * allow for the ability to run partial coverage * Remove fake_tests opt from test.py * Execute pygrub using nova-rootwrap in xenapi * Add DBDuplicateEntry exception for unique constraint violations * Fix stack trace on incorrect nova-manage args * Use service fixture in DB servicegroup tests * fix instance rescue without cmdline params in xml.rescue * Added sample tests to FlavorDisabled API * Reset the IPv6 API backend when resetting the conf stack * libvirt: Skip intermediate base files with qcow2 * fix test_nbd using stubs * Imported Translations from Transifex * Properly remove the time override in quota tests * Fix API samples generation * Move TimeOverride to the general reusable-test-helper place * Added conf support for security groups * Add accounting for orphans to resource tracker * Add more association support to network API * Remove the WillNotSchedule exception * Replace fixtures.DetailStream with fixtures.StringStream * Move network_driver into new nova.network.driver * Move DNS manager options into network.manager * Refactor xvp console * Move agent_build_get_by_triple to conductor * Move provider_fw_rule_get_all to conductor * Move security_group operations in VirtAPI to conductor * Retry NBD device allocation * Use testr to run nova unittests * Add a developer trap for api samples * Update command on devref doc * Fixed deleting instance booted from invalid vol * Add general mechanism for testing api coverage * Add the missing replacement text in devref doc * Allow xenapi to work with empty image metadata * Imported Translations from Transifex * Fix for broken switch for config_drive * Fix use of osapi_compute_extension option in api_samples * Remove sleep in test_consoleauth * Fix errors in used_limits extension * Fix poll_rescued_instances periodic task * Add syslogging to nova-rootwrap * Clean up run_tests.sh * Ensure that sql_dbpool_enable is a boolean value * Stop nbd leaks, remove pid race * Fixes KeyError: 'sr_uuid' when booting from volume on xenapi * Add VirtAPI tests * Move remaining aggregate operations to conductor * remove session param from instance_get * remove session param from instance_get_by_uuid * Use nova.test.TestCase as the base test class * Ensure datetimes can be properly serialized * Fixes string formatting error * Adds API Sample tests for DiskConfig extension * Fix for correctly parsing snapshot uuid in ec2api * Autodetect nbd devices * Add Jian Wen to .mailmap * Move metadata_{host,port} to network.linux_net * Move API extension opts to api.openstack.compute * Move osapi_max_limit into api.openstack.common * Move link_prefix options into api.openstack.common * Move some opts into nova.utils * Properly scope password options * Remove the deprecated quantum v1 code and directory * add and removed fixed ip now refresh cache * Implement an XML matcher * Add support for parsing the from libvirt host capabilities * Add support for libvirt domain XML config * Add support for libvirt domain XML config * Add coverage extension to nova API * Allow rpc-silent FloatingIP exceptions in n-net * Allow conductor exceptions to pass over RPC silently * Don't leak info from libvirt LVM backed instances * Add get_backdoor_port to nova-conductor * Properly scope isolated hosts config opts * Move monkey patch config opts into nova.utils * Move zombie_instance_updated_at_window option * Move some options into nova.image.glance * Move cache_images to nova.virt.xenapi.vm_utils * Move api_rate_limit and auth_strategy to nova.api * Move api_paste_config option into nova.wsgi * Port to argparse based cfg * Cleanup the test DNS managers * Move all temporary files into a single /tmp subdir * Modified sample tests to FlavorExtraData API * Fix KeyError of log message in virt/libvirt/utils.py * Allows an instance to post encrypted password * Make nova/virt use aggregate['metadetails'] * Revert "Simplify how ephemeral disks are created and named." * Fix bw_usage_update issue with conductor * Correctly init XenAPIDriver in vm_vdi_cleaner.py * Set instance_ref['node'] in _set_instance_host_and_node * Consider reserved count in os-user-limits extension * Make DNS drivers inherit interface * Map cinder snapshot statuses to ec2 * i18n raise Exception messages * Set default DNS driver to No-op * Access DB values as dict not as attributes. Part 4 * Use conductor for bw_usage operations * libvirt: enable apic setting for Xen or KVM guest * Improve virt/disk/mount/nbd test coverage * Add NFS to the libvirt volume driver list * Use admin user to read Quantum port * Add vif_type to the VIF model * Make the nbd mounter respect CONF.max_nbd_devices * Imported Translations from Transifex * Raise NotImplementedError in dns_driver.DNSDriver * Unpin lxml requirements * Added sample tests to FlavorManage API * Use fixtures library for nova test fixtures * Catch ProcessExecutionError when building config drives * Fix fname concurrency tests * Imported Translations from Transifex * Make ignore_hosts and force_hosts work again * Run test objectstore server on arbitrary free port * Fix network manager ipv6 tests * Prevent creation of extraneous resource trackers * Remove unused bridge interfaces * Use conductor for migration_get() * Reset node to source in finish_revert_resize() * Simplify how ephemeral disks are created and named * Order instance faults by created_at and id * Sync RPC logging-related bits from oslo * Fix bugs in test_migrations.py * Fix regression allowing quotas to be applied to projects * Improve nova-manage usability * Add new cliutils code from oslo-incubator * Update tools/flakes to work with pydoc * Fix pep8 exclude logic for 1.3.3 * Avoid vm instance shutdown when power state is NOSTATE * Fix handling of unimplemented host actions * Fix positional arg swallow decorator * Fix minidns delete_entry to work for hostname with mixed case chars * powervm: Refactored run_command for better naming * Sync latest openstack.common.rpc * Ensure prep_resize arguments can be serialized * Add host to get_backdoor_port() for network api * Add agent build API support for list/create/delete/modify agent build * Added sample tests to extended status API * Imported Translations from Transifex * Make policy.json not filesystem location specific * Use conductor for resourcetracker instance_update * network managers: Pass elevated cxtx to update_dhcp * Volume backed live migration w/o shared storage * Add pyflakes option to tox * Adds API Sample tests for Quotas extension * Boot from volume without image supplied * Implements volume usage metering * Configurable exec_dirs to find rootwrap commands * Allow newer boto library versions * Add notifications when libvirtd goes down * Make update_service_capabilities() accept a list of capabilities * update mailmap to add my perferred mail * Fix test suite to use MiniDNS * Add support for new WMI iSCSI initiator API * Added sample tests to deferred delete API * On confirm_resize, update correct resource tracker * Renaming xml test class in sample tests of consoles API * remove session param from certificate_get * improve sessions for key_pair_(create,destroy) * powervm: add DiskAdapter for local volumes * Access DB values as dict not as attributes. Part 3 * Patch fake_libvirt_utils with fixtures.MonkeyPatch * Open test xenapi/vm_rrd.xml relative to tests * Reset notifier_api before each test * Reset volume_api before cinder cloud tests * Fix rpc control_exchange regression * Add generic customization hooks via decorator * add metadata support for overlapping networks * Split out part of compute's init_host * Use elevated cxtx in resource_tracker.resize_claim * Fix test_migrations for postgres * Add vpn ip/port setting support for CloudPipe * Access DB values as dict not as attributes. Part 2 * Enable debug in run_tests using pdb * Add POWERVM_STARTING state to powervm driver * Fix test_inject_admin_password for OSX * Multi host DHCP networking and local DNS resolving * use file instead of tap for non-blockdevice images on Xen * use libvirt getInfo() to receive number of physical CPUs * Don't run the periodic task if ticks_between_runs is below zero * Fix args to AggregateError exception * Fix typo in inherit_properties_from_image * Access DB values as dict not as attributes * Fix KeyError of log message in compute/api.py * Fix import problem in test_virt_disk_vfs_localfs * Remove start_guests_on_host_boot config option * Add aggregate_host_add and _delete to conductor * Imported Translations from Transifex * Call plug_vifs() for all instances in init_host * Make compute manager use conductor for instance_gets * Fixes HyperV compute "resume" tests * Convert datetimes for conductor instance_update * Update migration so it supports PostgreSQL * Include 'hosts' and 'metadetails' in aggregate * Verify doc/api_samples files along with the templates * Remove default_image config option * Move ec2 config opts to nova.api.ec2.cloud * Move imagecache code from nova.virt.libvirt.utils * Use flags() helper method to override config in tests * RetryFilter checks 'node' as well as 'host' * Make resize and multi-node work properly together * Migration model update for multi-node resize fix * Add version to conductor migration_update message * Validate rxtx_factor as a float * Display errors when running nosetests * Respect the base_dir_name flag in imagebackend * Add exceptions to baremetal/db/api * Clean up unused methods in scheduler/driver * Provide better error message for aggregate-create * Imported Translations from Transifex * Allow multi_host compute nodes to share dhcp ip * Add blank nova/virt/baremetal/__init__.py * Add migration_update to conductor * Remove unnecessary topic argument * Add pluggable ServiceGroup monitoring APIs * Add SSL support to utils.generate_glance_url() * Add eventlet db_pool use for mysql * Make compute manager use nova-conductor for instance_update * Missing instance_uuid in floating_ip notifications * Make nova-dhcpbridge use CONFIG_FILE over FLAGFILE * Rename instance_info_cache unique key constraints * Cleanup compute multi-node assignment of node * Imported Translations from Transifex * maint: remove an unused import from libvirt.utils * Encode consoleauth token in utf-8 to make it a str * nova-dhcpbridge should require the FLAGFILE is set * Added cpu_info report to HyperV Compute driver * Remove stale flags unit tests * Truncate large console logs in libvirt * Move global fixture setup into nova/test.py * Complete API samples for Hosts extension * Fix HostDeserializer to enable multiple line xml * adjust rootwrap filters for recent file injection changes * Don't hard code the xen hvmloader path * Don't update arch twice when create server * remove db access in xen driver * Imported Translations from Transifex * Move compute_driver into nova.virt.driver * Re-organize compute opts a bit * Move compute opts from nova.config * Add a CONTRIBUTING file * Compute doesn't set the 'host' field in instance * Xenapi: Don't resize down if not auto_disk_config * Cells: Re-add DB model and calls * Use more specific SecurityGroupHandler calls * Fix wait_for_deleted function in SmokeTests * Wrap log messages with _() * Add methods to Host operations to fake hypervisor * Move sql options to nova.db.sqlalchemy.session * Add debug logging to disk mount modules * Remove the libguestfs disk mount API implementation * Remove img_handlers config parameter usage * Convert file injection code to use the VFS APIs * Introduce a VFS implementation backed by the libguestfs APIs * Introduce a VFS implementation mapped to the host filesystem * Adds API for bulk creation/deletion of floating IPs * Remove obsolete config drive init.d example * Imported Translations from Transifex * Rename sql_pool_size to sql_max_pool_size * Detect shared storage; handle base cleanup better * Allow VMs to be resumed after a hypervisor reboot * Fix non-primitive uses of instance in compute/manager * Remove extra space in exception * Adds missing index migrations by instance/status * Convert migrations.instance_uuid to String(36) * Add missing binary * Change all tenants servers listing as policy-based * Fixes a bug in get_info in the Hyper-V Driver * refactor: extract method: connect_volume * Handle instances not being found in EC2 API responses * Pin pep8 to 1.3.3 * Return an error response if the specified flavor does not exists. (v4) * Send block device mappings to rebuild_instance * Move db lookup for block device mappings * Use CONF.import_opt() for nova.config opts * Imported Translations from Transifex * Remove nova.config.CONF * Add keystoneclient to pip-requires * Pass rpc connection to pre_start_hook * Fix typo: hpervisor=> hypervisor * Fix reversed args to call to _reschedule * Add the beginnings of the nova-conductor service * remove old baremetal driver * Remove useless function quota_usage_create * Fix calls to private method in linux_net * Drop unused PostgreSQL sequences from Folsom * Compact pre-Grizzly database migrations * Fix os-hosts extension can't return xml response correctly * Set node_availability_zone in XenAPIAggregateTestCase * Ignore editor backup files * Imported Translations from Transifex * Remove nova.flags * Remove FLAGS * Make fping extension use CONF * Use disk image path to setup lxc container * Use the auth_token middleware from keystoneclient * improve session handling around instance_ methods * add index to fixed_ips * add instance_type_extra_specs to instances * Change a toplevel function comment to a docstring * Ensure cat process is terminated * Add some sqlalchemy tweakables * Fixes an error reporting bug on Hyper-V * update api_samples add os-server-start-stop * update api_samples add os-services module * Switch to using eventlet_backdoor from oslo * Sync eventlet_backdoor from oslo * Added sample tests to consoles API * Fix use of 'volume' variable name * Ditch unused import and variable * Make ec2_instance_create db method consistant across db apis * Adds documentation for Hyper-V testing * Adds support for ConfigDriveV2 in Hyper-V * don't explode if a 413 didn't set Retry-After * Fix a couple uses of FLAGS * Remove nova.flags imports from scheduler code * Remove some unused imports from compute/* * Remove importing of flags from compute/* * Remove nova.flags imports from bin/* * Move nova shared config options to nova.config * Fix use_single_default_gateway * Update api_samples README.rst to use tox * Do not alias stdlib uuid module as uuidutils, since nova has uuidutils * Allow group='foo' in self.flags() for tests * updated api_samples with real hypervisor_hostname * Issue a hard shutdown if clean fails on resize up * Introduce a VFS api abstraction for manipulating disk images * Fix network RPC API backwards compat * create_db_entry_for_new_instance did not call sgh for default * Add support for backdoor_port to be returned with a rpc call * Refactor scheduling filters * Unpin amqplib and kombu requirements * Add module for loading specific classes * Make sure instance data is always refreshed * Move all mount classes into a subdirectory * Add support for resizes to resource tracker * Fixes create instance *without* config drive test * Update db entry before upate the DHCP host file * Remove gen_uuid() * Enhance compute capability filter to check multi-level * API extension for fpinging instances * Allow controller extensions to extend update/show * Isolate tests from the environment variable http_proxy * Handle image cache hashing on shared storage * fix flag type define error * Simplify libvirt volume testing code * Migrate floating ip addresses in multi_host live_migration * Add DB query to get in-progress migrations * Try hard shutdown if clean fails on resize down * Restore self.test_instance at LibvirtConnTestCase.setUp() * Fixes usage of migrate_instance_start * added getter methods for quantumv2 api * fix LVM backed VM logial volumes can't be deleted * Clean up __main__ execution from two tests for consistency * Imported Translations from Transifex * Update uuidutils from openstack common * Remove volume.driver and volume.iscsi * Use base image for rescue instance * Make xenapi shutdown mode explicit * Fix a bug in XenAPISession's use of virtapi * Ban db import from nova/virt * Update vol mount smoketest to wait for volume * Add missing webob to exc * Add missing exception NetworkDuplicated * Fix misuse of exists() * Rename config to vconfig * Move agent_build_get_by_triple to VirtAPI * Fix _setup_routes() signature in APIRouter * Move libvirt specific cgroups setup code out of nova.virt.disk.api * make libvirt with Xen more workable * script for configuring a vif in Xen in non-bridged mode * Upgrade pylint version to 0.26.0 * Removes fixed_ip_get_network * improve session handling around virtual_interfaces * improve sessions for reservation * improve session handling around quotas * Remove custom test assertions * Add nova option osapi_compute_unique_server_name_scope * Add REST API support for list/enable/disable nova services * Switch from FLAGS to CONF in nova.compute * Switch from FLAGS to CONF in tests * Get rid of pylint E0203 in filter_scheduler.py * Updated scheduler and compute for multiple capabilities * Switch from FLAGS to CONF in nova.db * Removed two unused imports * Remove unused functions * Fixes a bug in api.metadata.base.lookup() on Windows * Fixes a bug in nova.utils, due to Windows compatibility issues * improve session handling of dnsdomain_list * Make tox.ini run pep8/hacking checks on bin * Fix import ordering in /bin scripts * add missing opts to test_db_api.py * clean up dnsdomain_unregister * Make utils.mkfs() set label when fs=swap * Another case of dictionary access * Remove generic topic support from filter scheduler * Clarify server_name, hostname, host * Refactor scheduling weights * update nova.conf.sample * Check instance_type in compute capability filter * Sync latest code from oslo-incubator * Adds REST API support for Fixed IPs * Added separate bare-metal MySQL DB * Added bare-metal host manager * Remove unused volume exceptions * Adds a conf option for custom configdrive mkisofs * Fixed HyperV to get disk stats of instances drive * powervm: failed spawn should raise exception * Enable Quantum linux bridge VIF driver to use "bridge" type * Remove nova-volume DB * make diagnostics workable for libvirt with Xen * Avoid unnecessary system_metadata db lookup * Make instance_system_metadata load with instance * Add some xenapi Bittorrent tests * Move security groups and firewall ops to VirtAPI * Move host aggregate operations to VirtAPI * Simplify topic handling in network rpcapi * Sync rpc from openstack-common * Send instance_type to resize_instance * Remove instance_type db lookup in prep_resize * Send all aggregate data to remove_aggregate_host * Fix incorrect LOG.error usage in _compare_cpu * Limit formatting routes when adding resources * Removes unnecessary db query for instance type * Fix verification in test_api_samples.py * Yield in between hash runs for the image cache manager * Remove unused function require_instance_exists * Refactor resource tracker claims and test logic * Remove out-of-date comment * Make HostManager.get_all_host_states() return an iterator * Switch from FLAGS to CONF in nova.virt * 'BackupCreate' rotation parameter >= 0 * Corrects usage of db.api.network_get * Switch from FLAGS to CONF in nova.console * Map NotAuthorized to 403 in floating ips extension * Decouple EC2 API from using instance id * libvirt: Regenerates xml instead of using on-disk * Imported Translations from Transifex * Fix to include error message in instance faults * Include hostname in notification payloads * Fix quota updating during soft delete and restore * Fix warnings found with pyflakes * make utils.mkfs() more general * Fixes snapshot instance failure on libvirt * Make ComputeDrivers send hypervisor_hostname * Fixed instance deletion issue from Nova API * De-duplicate option: console_public_hostname * Don't verify image hashes if checksumming is disabled * Imported Translations from Transifex * Look up stuck-in-rebooting instances in manager * Use chance scheduler in EC2 tests * Send all aggregate data to add_aggregate_host * Send all migration data to finish_revert_resize * Send all migration data to revert_resize * Fix migrations when not using multi-host network * Fix bandwidth polling exception * Fixes volume attach issue on Hyper-V * Shorten self.compute.resource_tracker in test_compute.py * Cleanup nova.db.sqlalchemy.api import * Use uuidutils.is_uuid_like for uuid validation * Add uuidutils module * Imported Translations from Transifex * Switch from FLAGS to CONF in nova.scheduler * Switch from FLAGS to CONF in nova.network * Switch from FLAGS to CONF in misc modules * Switch from FLAGS to CONF in nova.api * Switch from FLAGS to CONF in bin * Remove flags.DECLARE * Move parse_args to nova.config * Forbid resizing instance to deleted instance types * Imported Translations from Transifex * Fix unused variables and wrong indent in test_compute * Remove unnecessary db call from xenapi/vmops * xenapi: place boot lock when doing soft delete * Detangle soft delete and power off * Fix signing_dir option for auth_token middleware * Fix no attribute 'STD_OUT_HANDLE' on windows * Use elevated context in disassociate_floating_ip * Remove db.instance_get* from nova/virt * sync deprecated log method from openstack-common * move python-cinderclient to pip-requires * Tiny resource tracker cleanup * Fix Quantum v2 API method signatures * add doc to standardize session usage * improve sessions around floating_ip_get_by_address * Bump the base rpc version of the network api * Eliminates simultaneous schedule race * Introduce VirtAPI to nova/virt * Add some hooks for managers when service starts * Fix backwards compat of rpc to compute manager * xenapi: Make agent optional * Add xenapi host_maintenance_mode() test * refactor: extract _attach_mapped_block_devices * Make bdms primitive in rpcapi.terminate_instance * Ability to specify a host restricted to admin * Improve EC2 describe_security_groups performance * Increased MAC address range to reduce conflicts * Move to a more canonicalized output from qemu-img info * Read deleted flavors when using to_xml() * Fix copy-paste bug in block_device_info_generation * Remove nova-volume scheduling support * Remove duplicate api_paste_config setting * Fixes hypervisor based image filtering on Hyper-V * make QuantumV2 support requested nic ordering * Add rxtx_factor to network migration logic * Add scheduler retries for prep_resize operations * Add call to reset quota usage * Make session.py reusable * Remove redundant code from PowerVM driver * Force earlier version of sqlalchemy * refactor: extract method vm_ref_or_raise * Use env to set environ when starting dnsmasq * pep8 fixes for nova-manage * Fix VM deletion from down compute node * Remove database usage from libvirt check_can_live_migrate_destination * Clean up xenapi VM records on failed disk attaches * Remove nose detailed error reporting * Validate is-public parameter to flavor creation * refactor: extract _terminate_volume_connections * improve sessions around compute_node_* * Fix typo in xenapi/host.py * Remove extra print line in hacking.py * Ensures compute_driver flag can be used by bdm * Add call to trigger_instance[add/remove]_security_group_refresh quantum * Validates Timestamp or Expiry time in EC2 requests * Add API samples to Admin Actions * Add live migration helper methods to fake hypervisor driver * Use testtools as the base testcase class * Clean up quantumv2.get_client * Fix getattr usage * Imported Translations from Transifex * removes the nova-volume code from nova * Don't elevate context when calling run_instance * remove session parameter from fixed_ip_get * Make instance_get_all() not require admin context * Fix compute tests abusing admin context * Fix use of elevated context for resize methods * Fix check for memory_mb * Imported Translations from Transifex * Fix nova-network MAC collision logic * Fix rpcapi version for new methods * Remove useless return * Change hacking.py N306 to use logical_lines * Add missing live migration methods to ComputeDriver base class * Fix hacking.py naivete regarding lines that look like imports * details the reboot behavior that a virt driver should follow * xenapi: refactor: Agent class * Send usage event on revert_resize * Fix config-file overrides for nova-dhcpbridge * Make nova-rootwrap optional * Remove duplicated definition of is_loaded() * Let scheduler know services' capabilities at startup * fetch_images() method no more needed * Fix hardcoded topic strings with constants * Save exceptions earlier in finish_resize * Correct _extract_query_params in image.glance * Fix Broken XML Namespace Handling * More robust checking for empty requested_networks * Imported Translations from Transifex * Rehydrate NetworkInfo in reboot_instance() * Update common * Use cat instead of sleep for rootwrap test * Addtional 2 packages for dev environment on ubuntu * Let VlanManager keep network's DNS settings * Improve the performance of quantum detection * Support for nova client list hosts with specific zone * Remove unused imports in setup.py * Fixes fake for testing without qemu-img * libvirt: persist volume attachments into config * Extend IPv6 subnets to /64 if network_size is set smaller than /64 * Send full migration data to finish_resize * Send full migration to confirm_resize * Send full migration to resize_instance * Migrate to fileutils and lockutils * update sample for common logging * Add availability zone extension to API samples test * Refactor: config drive related functions * Fix live migration volume assignment * Remove unused table options dicts * Add better log line for undefined compute_driver * Remove database usage from libvirt imagecache module * Return empty list when listing servers with bad status value * Consistent Rollback for instance creation failures * Refactor: move find_guest_agent to xenapi.agent * Fix Incorrect Exception when metadata is over 255 characters * Speed up volume and routing tests * Speed up api.openstack.compute.contrib tests * Allow loading only selected extensions * Migrate network of an instance * Don't require quantumclient when running nova-api * Handle the case where we encounter a snap shot correctly * Remove deprecated root_helper config * More specific exception handling in migration 091 * Add virt driver capabilities definition * Remove is_admin_context from sqlalchemy.api * Remove duplicate methods from network/rpcapi.py * SanISCSIDriver SSH execution fixes * Fix bad Log statement in nova-manage * Move mkfs from libvirt.utils to utils * Fixes bug Snapshotting LXC instance fails * Fix bug in a test for the scheduler DiskFilter * Remove mountpoint from parse_volume_info * limit the usage of connection_info * Sync with latest version of openstack.common.timeutils * nova-compute sends its capabilities to schedulers ASAP * Enable custom eventlet.wsgi.server log_format * Fix the fail-on-zero-tests case so that it is tolerant of no output * add port support when QuantumV2 subclass is used * Add trove classifiers for PyPI * Fix and enable pep8 E502, E712 * Declare vpn client option in pipelib * Fix nova-volume-usage-audit * Fix error on invalid delete_on_termination value * Add Server diagnostics extension api samples * Add meaningful server diagnostic information to fake hypervisor * Use instance_exists to check existence * Fix nova-volume-usage-audit * Imported Translations from Transifex * Avoid leaking BDMs for deleted instances * Deallocate network if instance is deleted in spawn * Create Flavors without Optional Arguments * Update policies * Add DNS records on IP allocation in VlanManager * update kwargs with args in wrap_instance_fault * Remove ComputeDriver.update_host_status() * Do not call directly vmops.attach_volume * xenapi: fix bfv behavior when SR is not attached * Use consoleauth rpcapi in nova-novncproxy * Change install_venv to use setup.py develop * Fixes syntax error in nova.tools.esx.guest_tools.py * Allow local rbd user and secret_uuid configuration * Set host prior to allocating network information * Remove db access for block devices and network info on reboot * Remove db access for block devices on terminate_instance * Check parameter 'marker' before make request to glance * Imported Translations from Transifex * Internationalize nova-manage * Imported Translations from Transifex * Fixes live_migration missing migrate_data parameter in Hyper-V driver * handles empty dhcp_domain with hostname in metadata * xenapi: Tag volumes in boot from volume case * Stops compute api import at import time * Fix imports in openstack compute tests * Make run_tests.sh fail if no tests are actually run * Implement snapshots for raw backend * Used instance uuid rather than id in remove-fixed-ip * Migrate DHCP host info during resize * read_deleted snapshot and volume id mappings * Make sure sleep can be found * Pass correct task_state on snapshot * Update run_tests.sh pep8 ignore list for pep8 1.2 * Clean up imports in test_servers * Revert "Tell SQLite to enforce foreign keys." * Add api samples to simple tenant usage extension * Avoid RPC calls while holding iptables lock * Add util for image conversion * Add util for disk type retrieval * Fixes test_libvirtr spawn_with_network_info test * Remove unneeded temp variable * Add version to network rpc API * Remove cast_to_network from scheduler * Tell SQLite to enforce foreign keys * Use paramiko.AutoAddPolicy for the smoketests * nova-manage doesn't validate key to update the quota * Dis-associate an auto-assigned floating IP should return proper warning * Proxy floating IP calls to quantum * Handle invalid xml request to return BadRequest * Add api-samples to Used limits extension * handle IPv6 race condition due to hairpin mode * Imported Translations from Transifex * XenAPI should only snapshot root disk * Clarify trusted_filter conf options * Fix pep8 error in bin/nova-manage * Set instance host field after resource claim * powervm: add polling timeout for LPAR stop command * Drop claim timeouts from resource tracker * Update kernel_id and ramdisk_id while rebuilding instance * Add Multiple Create extension to API sample tests * Fix typo in policy docstring * Fix reserve_block_device_name while attach volume * Always use bdm in instance_block_mapping on Xen * Centralize sent_meta definition * Move snapshot image property inheritance * Set read_deleted='yes' for instance_id_mappings * Fix XML response for return_reservation_id * Stop network.api import on network import * libvirt: ignore deleted domain while get block dev * xenapi: Refactor snapshots during resize * powervm: remove broken instance filtering * Add ability to download images via BitTorrent * powervm: exception handling improvements * Return proper error messages while associating floating IP * Create util for root device path retrieval * Remove dependency on python-ldap for tests * Add api samples to Certificates extension * Add nova-cert service to integrated_helpers * Compare lists in api samples against all matches * ip_protocol for ec2 security groups * Remove unneeded lines from aggregates extension API sample tests * Remove deprecated Folsom code: config convert * Make resource tracker uses faster DB query * Remove deprecated Folsom code: bandwith_poll_interval * Add TestCase.stub_module to make stubbing modules easier * Imported Translations from Transifex * Update tools hacking for pep8 1.2 and beyond * Remove outdated moduleauthor tags * remove deprecated connection_type flag * Add aggregates extension to API samples test * Update RPM SPEC to include new bandwidth plugin * Remove TestCase.assertNotRaises * Imported Translations from Transifex * Imported Translations from Transifex * Use self.flags() instead of manipulating FLAGS by hand * Use test.TestCase provided self.mox and self.stubs * Remove unnecessary setUp, tearDown and __init__ in tests * xenapi: implement resume_state_on_host_boot * Revert "Add full test environment." * Synchronize docstring with actual implementation * Num instances scheduler filter * Add api samples to cloudpipe extension * Fix CloudPipe extension XML serialization * Max I/O ops per host scheduler filter * libvirt: continue detach if instance not found * libvirt: allows attach and detach from all domains * Fixes csv list required for qemu-img create * Added compute node stats to HostState * libvirt: Improve the idempotency of iscsi detach * Pass block_device_info to destroy in revert_resize * Enable list with no dict objects to be sorted in api samples * Fixes error message for flavor-create duplicate ID * Loosen anyjson dependency to avoid clash with ceilometer * xenapi: make it easier to recover from failed migrations * Remove unnecessary check if migration_ref is not None * Bump the version of SQLAlchemy in pip-requires * optimize slightly device lookup with LXC umounts * Support for several HA RabbitMQ servers * xenapi: Removing legacy swap-in-image * xenapi: increase timeout for resetnetwork agent request * Replaced default hostname function from gethostname to getfqdn * Fix issues deleting instances in RESIZED state * Modified 404 error response to show specific message * Updated code to update attach_time of a volume while detaching * Check that an image is active before spawning instances * Fix issues with device autoassignment in xenapi * Deleting security group does not mark rules as deleted * Collect more accurate bandwidth data for XenServer * Zmq register opts fix in receiver * Revert explicit usage of tgt-adm --conf option * Fix booting a raw image on XenServer * Add servers/ips api_samples tests * LOG.exception() should only be used in exception handler * Fix XenServer's ability to boot xen type images * all_extensions api_samples testing for server actions * Fixes remove_export for IetAdm * libvirt: Fix _cleanup_resize * Imported Translations from Transifex * xenapi: fix undefined variable in logging message * Spelling: ownz=>owns * Fix NetAppCmodeISCSIDriver._get_lun_handle() method * Integration tests virtual interfaces API extension * Allow deletion of instance with failed vol cleanup * Fixes snapshotting of instances booted from volume * Move fakeldap.py from auth dir to tests * Remove refs to ATAoE from nova docs * Imported Translations from Transifex * Set volume status to error if scheduling fails * Update volume detach smoke test to check status * Fix config opts for Storwize/SVC volume driver * Ensure hybrid driver creates veth pair only once * Cleanup exception handling * Imported Translations from Transifex * Add lun number (0) to model_update in HpSanDriver * libvirt: return after soft reboot successfully completes * Fixes to the SolarisISCSI Driver * Fix live migration when volumes are attached * Clarify dangerous use of exceptions in unit tests * Cleanup test_api_samples:_compare_result * Fix testContextClaimWithException * Fix solidfire unit tests * Stop double logging to the console * Recreate nw_info after auto assigning floating ip * Re-generate sample config file * Use test.TestingException instead of duplicating it * Fix startup with DELETED instances * Fix solidfire option declaration * Restore SIGPIPE default action for subprocesses * Raise NotFound for non-existent volume snapshot create * Catch NotFound exception in FloatingIP add/remove * Adds API sample testing for rescue API extension * Fix bugs in resource tracker and cleanup * Replace builtin hash with MD5 to solve 32/64-bit issues * Properly create and delete Aggregates * No stack trace on bad nova aggregate-* command * Clean up test_state_revert * Fix aggregate_hosts.host migration for sqlite * Call compute manager methods with instance as keyword argument * Adds deserialization for block_device_mapping * Fix marker pagination for /servers * Send api.fault notification on API service faults * Always yield to other greenthreads after database calls * fix unused import * Don't include auto_assigned ips in usage * Correct IetAdm remove_iscsi_target * Cleanup unused import in manager.py * xapi: fix create hypervisor pool * Bump version to 2013.1 * Add Keypairs extension to API samples test * sample api testing for os-floating-ips extension * Update quota when deleting volume that failed to be scheduled * Update scheduler rpc API version * Added script to find unused config options * Make sure to return an empty subnet list for a network without sunbet * Fix race condition in CacheConcurrencyTestCase * Makes scheduler hints and disk config xml correct * Add lookup by ip via Quantum for metadata service * Fix over rate limit error response * Add deserialization for multiple create and az * Fix doc/README.rst to render properly * Add user-data extension to API samples tests * Adds API sample testing for Extended server attributes extension * Inherit the base images qcow2 properties * Correct db migration 91 * make ensure_default_security_group() call sgh * add ability to clone images * add get_location method for images * Adds new volume API extensions * Add console output extension to API samples test * Raise BadRequest while creating server with invalid personality * Update 'unlimited' quota value to '-1' in db * Modified 404 error response for server actions * Fix volume id conversion in nova-manage volume * Improve error handling of scheduler * Fixes error handling during schedule_run_instance * Include volume_metadata with object on vol create * Reset the task state after backup done * Allows waiting timers in libvirt to raise NotFound * Improve entity validation in volumes APIs * Fix volume deletion when device mapper is used * Add man pages * Make DeregisterImage respect AWS EC2 specification * Deserialize user_data in xml servers request * Add api samples to Scheduler hints extension * Include Schedule Hints deserialization to XML API * Add admin actions extension * Allow older versions of libvirt to delete vms * Add security groups extension to API samples test * Sync a change to rpc from openstack-common * Add api_samples tests for servers actions * Fix XML deserialization of rebuild parameters * All security groups not returned to admins by default * libvirt: Cleanup L2 and L3 rules when confirm vm resize * Corrects use of instance_uuid for fixed ip * Clean up handling of project_only in network_get * Add README for doc folder * Correct typo in memory_mb_limit filter property * Add more useful logging around the unmount fail case * Imported Translations from Transifex * Make compute/manager.py use self.host instead of FLAGS.host * Add a resume delete on volume manager startup * Remove useless _get_key_name() in servers API * Add entity body validation helper * Add 422 test unit test for servers API * Use tmpdir and avoid leaving test files behind * Includes sec group quota details in limits API response * Fixes import issue on Windows * Overload comment in generated SSH keys * Validate keypair create request body * Add reservations parameter when cast "create_volume" to volume manager * Return 400 if create volume snapshot force parameter is invalid * Fix FLAGS.volumes_dir help message * Adds more servers list and servers details samples * Makes key_name show in details view of servers * Avoid VM task state revert on instance termination * Avoid live migrate overwriting the other task_state * Backport changes from Cinder to Nova-Volume * Check flavor id on resize * Rename _unplug_vifs to unplug_vifs * PowerVM: Establish SSH connection at use time * libvirt: Fix live block migration * Change comment for function _destroy * Stop fetch_ca from throwing IOError exceptions * Add 'detaching' to volume status * Reset task state before rescheduling * workaround lack of quantum/nova floatingip integration * fix rpcapi version * Added description of operators for extra_specs * Convert to ints in VlanManager.create_networks * Remove unused AddressAlreadyAllocated exception * Remove an unused import * Make ip block splitting a bit more self documenting * Prevent Partial terminations in EC2 * Add flag cinder_endpoint_template to volume.cinder * Handle missing network_size in nova-manage * Adds API sample test for Flavors Extra Data extension * More specific lxml versions in tools/pip-requires * Fixes snat rules in complex networking configs * Fix flavor deletion when there is a deleted flavor * Make size optional when creating a volume from a snapshot * Add documentation for scheduler filters scope * Add and fix tests for attaching volumes * Fix auth parameter passed to libvirt openAuth() method * xapi: Fix live block migration * Add a criteria to sort a list of dict in api samples * delete a module never used * Update SolidFire volume driver * Adds get_available_resource to hyperv driver * Create image of volume-backed instance via native API * Improve floating IP delete speed * Have device mapping use autocreated device nodes * remove a never used import * fix unmounting of LXC containers in the presence of symlinks * Execute attach_time query earlier in migration 98 * Add ServerStartStop extension API test * Set install_requires in setup.py * Add Server Detail and Metadata tests * xenapi: Make dom0 serialization consistent * Refer to correct column names in migration 98 * Correct ephemeral disk cache filename * Stop lock decorator from leaving tempdirs in tests * Handle missing 'provider_location' in rm_export * Nail the pip requirement at 1.1 * Fix typo in tgtadm LOG.error() call * Call driver for attach/detach_volume * rbd: implement create_volume_from_snapshot * Use volume driver specific exceptions * Fake requests in tests should be to v1 * Implement paginate query use marker in nova-api * Simplify setting up test notifier * Specify the conf file when creating a volume * Generate a flavorid if needed at flavor creation * Fix EC2 cinder volume creation as an admin user * Allow cinder catalog match values to be configured * Fix synchronized decorator path cleanup * Fix and cleanup compute node stat tracking * avoid the buffer cache when copying volumes * Add missing argument to novncproxy websockify call * Use lvs instead of os.listdir in _cleanup_lvm * Fixing call to hasManagedSaveImage * Fix typo in simple_tenant_usage tests * Move api_samples to doc dir * Add a tunable to control how many ARPs are sent * Get the extension alias to compose the path to save the api samples * Add scope to extra_specs entries * Use bare container format by default * Sync some updates from openstack-common * Fix simple_tenant_usage's handing of future end times * Yield to another greenthread when some time-consuming task finished * Automatically convert device names * Fix creation of iscsi targets * Makes sure new flavors default to is_public=True * Optimizes flavor_access to not make a db request * Escape ec2 XML error responses * Skip tests in OSX due to readlink compat * Allow admins to de-allocate any floating IPs * Fix xml metadata for volumes api in nova-volume * Re-attach volumes after instance resize * Speed up creating floating ips * Adds API sample test for limits * Fix vmwareapi driver spawn() signature * Fix hyperv driver spawn() signature * Add API samples to images api * Add method to manage 'put' requests in api-sample tests * Add full python path to test stubbing modules for libvirt * Rename imagebackend arguments * Fixes sqlalchemy.api.compute_node_get_by_host * Fix instances query for compute stats * Allow hard reboot of a soft rebooting instance * On rebuild, the compute.instance.exists * Fix quota reservation expiration * Add api sample tests for flavors endpoint * Add extensions for flavor swap and rxtx_factor * Address race condition from concurrent task state update * Makes sample testing handle out of order output * Avoid leaking security group quota reservations * Save the original base image ref for snapshots * Fixed boot from snapshot failure * Update zmq context cleanup to use term * Fix deallocate_fixed_ip invocation * fix issues with Nova security groups and Quantum * Clear up the .gitignore file * Allow for deleting VMs from down compute nodes * Update nova-rpc-zmq-receiver to load nova.conf * FLAG rename: bandwith_poll_*=>bandwidth_poll_* * Spelling: Persistant=>Persistent * Fix xml metadata for volumes extension * delete unused valiables * Clean up non-spec output in flavor extensions * Adds api sample testing for extensions endpoint * Makes api extension names consistent * Fixes spawn method signature for PowerVM driver * Spelling fix Retrive=> Retrieve * Update requires to glanceclient >=0.5.0 * Sort API extensions by alias * Remove scheduler RPC API version 1.x * Add version 2.0 of the scheduler RPC API * Remove some remnants of VSA support * hacking: Add driver prefix recommendation * Implements PowerVM get_available_resource method * Add a new exception for live migration * Assume virt disk size is consumed by instances * External locking for image caching * Stop using scheduler RPC API magic * Adds api sample testing for versions * Do not run pylint by default * Remove compute RPC API version 1.x * Add version 2.0 of compute RPC API * Accept role list from either X-Roles or X-Role * Fix PEP8 issues * Fix KeyError when test_servers_get fails * Update nova.conf.sample * Fixes backwards compatible rpc schedule_run * Include launch-index in openstack style metadata * Port existing code to utils.ensure_tree * Correct utils.execute() to check 0 in check_exit_code * Add the self parameter to NoopFirewallDriver methods * request_spec['instance_uuids'] as list in resize * Fix column variable typo * Add ops to aggregate_instance_extra_specs filter * Implement project specific flavors API * Correct live_migration rpc call in test * Allow connecting to a ssl-based glance * Move ensure_tree to utils * Define default mode and device_id_string in Mount * Update .mailmap * Fix path to example extension implementation * Remove test_keypair_create_quota_limit() * Remove duplicated test_migrate_disk_and_power_off() * Add missing import webob.exc * Fix broken SimpleScheduler.schedule_run_instance() * Add missing user_id in revoke_certs_by_user_and_project() * Rename class_name to project_id * Use the compute_rpcapi instance not the module * Remove duplicated method VM_migrate_send * Add missing context argument to start_transfer calls * Remove unused permitted_instance_types * Add lintstack error checker based on pylint * Make pre block migration create correct disk files * Remove unused and old methods in hyperv and powervm driver * Trap iscsiadm error * Check volume status before detaching * Simplify network create logic * Clean up network create exception handling * Adding indexes to frequently joined database columns * Ensure hairpin_mode is set whenever vifs is added to bridge * Returns hypervisor_hostname in xml of extension * Adds integration testing for api samples * Fix deallocate_fixed_ip() call by unifying signature * Make instance_update_and_get_original() atomic * Remove unused flags * Remove test_instance_update_with_instance_id test * Remove unused instance id-to-uuid function * Re-work the handling of firewall_driver default * Include CommonConfigOpts options in sample config * Re-generate nova.conf.sample * Ensure log formats are quoted in sample conf * Don't include hostname and IP in generated sample conf * Allow generate_sample.sh to be run from toplevel dir * Let admin list instances in vm_states.DELETED * Return actual availability zones * Provide a hint for missing EC2 image ids * Check association when removing floating ip * Add public network support when launching an instance * Re-define libvirt domain on "not found" exception * Add two prereq pkgs to nova devref env guide * Fix hyperv Cfgs: StrOpt to IntOpt * continue deleting instance even if quantum port delete fails * Typo fix: existant => existent * Fix hacking.py git checks to propagate errors * Don't show user-data when its not sent * Clarify nwfilter not found error message * Remove unused _create_network_filters() * Adds missing assertion to FloatingIP tests * Restore imagebackend in test_virt_drivers.py * Add nosehtmloutput as a test dependency * Remove unused exceptions from nova/exception.py * Cleanup pip dependencies * Make glance image service check base exception classes * Add deprecated warning to SimpleScheduler * Have compute_node_get() join 'service' * XCP-XAPI version fix * add availability_zone to openstack metadata * Remove stub_network flag * Implements sending notification on metadata change * Code clean up * Implement network creation in compute API * Debugged extra_specs_ops.py * Fix typo in call in cinder.API unreserve_volume * xenapi: Tag nova volumes during attach_volume * Allow network to call get_fixed_ip_by_address * Add key_name attribute in XML servers API * Fix is_admin check via policy * Keep the ComputeNode model updated with usage * Remove hard-coded 'admin' role checking and use policy instead * Introduce ImagePropertiesFilter scheduler filter * Return HTTP 422 on bad server update PUT request * Makes sure instance deletion ok with deleted data * OpenStack capitalization added to HACKING.rst * Fix get_vnc_console race * Fix a TypeError that occurs in _reschedule * Make missing imports flag in hacking settable * Makes sure tests don't leave lockfiles around * Update FilterScheduler doc * Disable I18N in Nova's test suites * Remove logging in volume tests * Refactor extra specs matching into a new module * Fix regression in compute_capabilities filter * Refactor ComputeCapabilitiesFilter test cases * Revert per-user-quotas * Remove unused imports * Fix PEP8 issues * Sync changes from openstack common * Implement GET (show) in OS API keypairs extension * Fix spelling typos * Ignoring *.sw[op] files * xenapi: attach root disk during rescue before boot * Allows libvirt to set a serial number for a volume * Adds support for serial to libvirt config disks * Remove unused variables * Always create the run_instance records locally * Fix use of non-existant var pool * Adds Hyper-V support in nova-compute (with new network_info model), including unit tests * Update sqlite to use PoolEvents for regexp * Remove unused function in console api * Allow nova to guess device if not passed to attach * Update disk config to check for 'server' in req * Changes default behavior of ec2 * Make ComputeFilter verify compute-related instance properties * Collect instance capabilities from compute nodes * Move volume size validation to api layer * Change IPtablesManager to preserve packet:byte counts * Add get_key_pair to compute API * Defined IMPL in global ipv6 namespace * xenapi: remove unnecessary json decoding of injected_files * Remove unnecessary try/finally from snapshot * Port pre_block_migration to new image caching * Adding port attribute in network parameter of boot * Add support for NFS-based virtual block devices * Remove assigned, but unused variables from nova/db/sqlalchemy/api.py * xenapi: Support live migration without pools * Restore libvirt block storage connections on reboot * Added several operators on instance_type_extra_specs * Revert to prior method of executing a libvirt hard_reboot * Set task_state=None when finished snapshotting * Implement get_host_uptime in libvirt driver * continue config-drive-v2, add openstack metadata api * Return values from wrapped functions in decorators * Allow XML payload for volume creation * Add PowerVM compute driver and unit tests * Revert task_state on failed instance actions * Fix uuid related bug in console/api * Validate that min_count & max_count parameters are numeric * Allow stop API to be called in Error * Enforce quota limitations for instance resize * Fix rpc error with live_migration * Simple checks for instance user data * Change time.sleep to greenthread.sleep * Add missing self. for parent * Rewrite image code to use python-glanceclient * Fix rpc error with live_migration * volumes: fix check_for_export() in non-exporting volume drivers * Avoid {} and [] as default arguments * Improve bw_usage_update() performance * Update extra specs calls to use deleted: False * Don't stuff non-db data into instance dict * Fix type error in state comparison * update python-quantumclient dependency to >=2.0 * Key auto_disk_config in create server off of ext * Implement network association in OS API * Fix TypeError conversion in API layer * Key requested_networks off of network extension * Key config_drive off of config-drive extension * Make sure reservations is initialized * import module, not type * Config drive v2 * Don't accept key_name if not enabled * Fix HTTP 500 on bad server create * Default behavior should restrict admins to tenant for volumes * remove nova code related to Quantum v1 API * Make sure ec2 mapping raises proper exceptions * Send host not ComputeNode into uptime RPC call * Making security group refresh more specific * Sync with latest version of openstack.common.cfg * Sync some cleanups from openstack.common * maint: compare singletons with 'is' not '==' * Compute restart causes period of network 'blackout' * Revert "Remove unused add_network_to_project() method" * Add error log for live migration * Make FaultWrapper handle exception code = None * Don't accept scheduler_hints if not enabled * Avoid double-reduction of quota for repeated delete * Traceback when over allocating IP addresses * xenapi: ensure all calls to agent get logged * Make update_db an opt arg in scheduler manager * Key min_count, max_count, ret_res_id off of ext * Key availability_zone in create server off of ext * Fix the inject_metadata_into_fs in the disk API * Send updated instance model to schedule_prep_resize * Create unique volumes_dir for testing * Fix stale instances being sent over rpc * Fix setting admin_pass in rescue command * Key user_data in create server off of extension * Key block_device_mapping off of volume extension * Moves security group functionality into extension * Adds ability to inherit wsgi extensions * Fixes KeyError when trying to rescue an instance * Make TerminateInstances compatible with EC2 api * Uniqueness checks for floating ip addresses * Driver for IBM Storwize and SVC storage * scheduler prep_resize should not update instance['host'] * Add a 50 char git title limit test to hacking * Fix a bug on remove_volume_connection in compute/manager.py * Fix a bug on db.instance_get_by_uuid in compute/manager.py * Make libvirt_use_virtio_for_bridges flag works for all drivers * xenapi: reduce polling interval for agent * xenapi: wait for agent resetnetwork response * Fix invalid exception format strings * General host aggregates part 2 * Update devref for general host aggregates * Cleanup consoles test cases * Return 409 error if get_vnc_console is called before VM is created * Move results filtering to db * Prohibit file injection writing to host filesystem * Added updated locations for iscsiadm * Check against unexpected method call * Remove deprecated use Exception.message * Remove temporary hack from checks_instance_lock * Remove temporary hack from wrap_instance_fault * Fix up some instance_uuid usage * Update vmops to access metadata as dict * Improve external locking on Windows * Fix traceback when detaching volumes via EC2 * Update RPC code from common * Fixes parameter passing to tgt-admin for iscsi * Solve possible race in semaphor creation * Rename private methods of compute manager * Send full instance to compute live_migration * Add underscore in front of post_live_migration * Send full instance to scheduler live_migration * Send full instance to run_instance * Use dict style access for image_ref * Use explicit arguments in compute manager run_instance * Remove topic from scheduler run_instance * Use explicit args in run_instance scheduler code * Update args to _set_vm_state_and_notify * Reduce db access in prep_resize in the compute manager * Remove instance_id fallback from cast_to_compute_host() * Remove unused InstanceInfo class * Adds per-user-quotas support for more detailed quotas management * Remove list_instances_detail from compute drivers * Move root_helper deprecation warning into execute * Flavor extra specs extension use instance_type id * Fix test_resize_xcp testcase - it never ran * tests: avoid traceback warning in test_live_migration * ensure_tree calls mkdir -p * Only log deprecated config warnings once * Handle NetworkNotFound in _shutdown_instance * Drop AES functions and pycrypto dependency * Simplify file hashing * Allow loaded extensions to be checked from servers * Make extension aliases consistent * Remove old exception type * Fix test classes collision * Remove unused variables * Fix notification logic * Improve external lock implementation * maint: remove an unused import in libvirt.driver * Require eventlet >= 0.9.17 * Remove **kwargs from prep_resize in compute manager * Updates to the prep_resize scheduler rpc call * Migrate a notifier patch from common: * Update list_instances to catch libvirtError * Audit log messages in nova/compute/api.py * Rename _self to self according to Python convention * import missing module time * Remove unused variables * Handle InstanceNotFound in libvirt list_instances * Fix broken pep8 exclude processing * Update reset_db to call setup if _DB is None * Migrate a logging change from common: * Send 'create volume from snapshot' to the proper host * Fix regression with nova-manage floating list * Remove unused imports * Simple refactor of some db api tests * fix unmounting of LXC containers * Update usage of 'ip' to handle more return codes * Use function registration for policy checks * Check instance lock in compute/api * Fix a comment typo in db api * Audit log messages in nova/compute/manager.py * XenAPI: Add script to destroy cached images * Fix typo in db test * Fix issue with filtering where a value is unicode * Avoid using logging in signal handler * Fix traceback when using s3 * Don't pass kernel args to Xen HVM instances * Sync w/ latest openstack common log.py * Pass a full instance to rotate_backups() * Remove agent_update from the compute manager * Move tests.test_compute_utils into tests.compute * Send a full instance in terminate_instance * maint: don't require write access when reading files * Fix get_diagnostics RPC arg ordering * Fix failed iscsi tgt delete errors with new tgtadm * Deprecate root_helper in favor of rootwrap_config * Use instance_get instead of instance_by * Clarify TooManyInstances exception message * Setting root passwd no longer fails silently * XenAPI: Fix race-condition with cached images * Prevent instance_info_cache from being altered post instance * Update targets information when creating target * Avoid recursion from @refresh_cache * Send a full instance in change_instance_metadata * Send a full instance in unrescue_instance * Add check exit codes for vlans * Compute: Error out instance on rebuild and resize * Partially revert "Remove unused scheduler functions" * Use event.listen() instead of deprecated listeners kwarg * Avoid associating floating IP with two instances * Tidy up nova.image.glance * Fix arg to get_instance_volume_block_device_info() * Send a full instance in snapshot_instance * Send a full instance in set_admin_password * Send a full instance in revert_resize * Send a full instance in rescue_instance * Send a full instance in remove_volume_connection * Send a full instance in rollback_live_migration_at_destination * Send a full instance in resume_instance * Send a full instance in resize_instance * Send a full instance in reset_network * Convert virtual_interfaces to using instance_uuid * Compute: VM-Mode should use instance dict * Fix image_type=base after snapshot * Send a full instance in remove_fixed_ip_from_instance * Send a full instance in rebuild_instance * Reverts fix lp1031004 * sync openstack-common log changes with nova * Set default keystone auth_token signing_dir loc * Resize.end now includes the correct instance_type * Fix rootwrapper with tgt-admin * Use common parse_isotime in GlanceImageService * Xen: VHD sequence validation should handle swap * Revert "Check for selinux before setting up selinux." * reduce debugging from utils.trycmd() * Avoid error during snapshot of ISO booted instance * Add a link from HACKING to wiki GitCommitMessages page * Instance cleanups from detach_volumes * Check for selinux before setting up selinux * Prefer instance in reboot_instance * maint: libvirt imagecache: remove redundant interpreter spec * Support external gateways in VLAN mode * Turn on base image cleanup by default * Make compute only auto-confirm its own instances * Fix state logic for auto-confirm resizes * Explicitly send primitive instances via rpc * Allow _destroy_vdis if a mapping has no VDI * Correct host count in instance_usage_audit_log extension * Return location header on volume creation * Add persistent volumes for tgtd * xenapi: Use instance uuid when calling DB API * Fix HACKING violation in nova/api/openstack/volume/types.py * Remove ugly instance._rescue hack * Convert to using dict style key lookups in XenAPI * Implements notifications for more instance changes * Fix ip6tables support in xenapi bug 934603 * Moving where the fixed ip deallocation happens * Sanitize xenstore keys for metadata injection * Don't store system_metadata in xenstore * use REDIRECT to forward local metadata request * Only enforce valid uuids if a uuid is passed * Send a full instance in pre_live_migration * Send a full instance in power_on_instance and start_instance * Send a full instance in power_off_instance and stop_instance * Make instance_uuid backwards compat actually work * Send a full instance via rpc for post_live_migration_at_destination * Send a full instance via rpc for inject_network_info * Send a full instance via rpc for inject_file * Send a full instance via rpc for get_vnc_console * Remove get_instance_disk_info from compute rpcapi * Send a full instance via rpc for get_diagnostics * Send a full instance via rpc for finish_revert_resize * Ensure instance is moved to ERROR on suspend failure * Avoid using 'is' operator when comparing strings * Revert "Add additional capabilities for computes" * Allow power_off when instance doesn't exist * Fix resizing VDIs on XenServer >= 6 * Refactor glance image service code * Don't import libvirt_utils in disk api * Call correct implementation for quota_destroy_all_by_project * Remove return values from some compute RPC methods * Reinstate instance locked error logging * Send a full instance via rpc for finish_resize * Fix exception handling in libvirt attach_volume() * Convert fixed_ips to using instance_uuid * Trim volume type representation * Fix a couple of PEP8 nits * Replace subprocess.check_output with Popen * libvirt driver: set os_type to support xen hvm/pv * Include architecture in instance base options passed to the scheduler * Fix typo of localhost's IP * Enhance nova-manage to set flavor extra specs * Send a full instance via rpc for detach_volume * Remove unused methods from compute rpcapi * Send a full instance via rpc for confirm_resize * Send a full instance via rpc for check_can_live_migrate_source * Send a full instance via rpc for check_can_live_migrate_destination * Remove unused scheduler functions * Send a full instance via rpc for attach_volume * Send a full instance via rpc for add_fixed_ip_to_instance * Send a full instance via rpc for get_console_output * Send a full instance via rpc for suspend_instance * Send a full instance via rpc for (un)pause_instance * Don't use rpc to lock/unlock an instance * Convert reboot_instance to take a full instance * Update decorators in compute manager * Include name in a primitive Instance * Shrink Simple Scheduler * Allow soft deletes from any state * Handle NULL deleted_at in migration 112 * Add support for snapshots and volume types to netapp driver * Inject instance metadata into xenstore * Add missing tempfile import to libvirt driver * Fix docstring for SecurityGroupHandlerBase * Don't log debug auth token when using cinder * Remove temporary variable * Define cross-driver standardized vm_mode values * Check for exception codes in openstack API results * Add missing parameters to novas cinder api * libvirt driver: set driver name consistently * Allow floating IP pools to be deleted * Fixes console/vmrc_manager.py import error * EC2 DescribeImageAttribute by kernel/ramdisk * Xen: Add race-condition troubleshooting script * Return 400 in get_console_output for bad length * update compute_fill_first_cost_fn docstring * Xen: Validate VHD footer timestamps * Xen: Ensure snapshot is torn down on error * Provide rootwrap filters for nova-api-metadata * Fix a bug in compute_node_statistics * refactor all uses of the `qemu-img info` command * Xen: Fix snapshots when use_cow=True * tests: remove misleading docstrings on libvirt tests * Update NovaKeystoneContext to use jsonutils * Use compute_driver in vmware driver help messages * Use compute_driver in xenapi driver help messages * Add call to get hypervisor statistics * Adds xcp disk resize support * Log snapshot UUID and not OpaqueRef * Remove unused user_id and project_id arguments * Fix wrong regex in cleanup_file_locks * Update jsonutils from openstack-common * Return 404 when attempting to remove a non-existent floating ip * Implements config_drive as extension * use boto's HTTPResponse class for versions of boto >=2.5.2 * Migrations for deleted data for previously deleted instances * Add image_name to create and rebuild notifications * Make it clear subnet_bits is unused in ipam case * Remove unused add_network_to_project() method * Adding networking rules to vm's on compute service startup * Avoid unrecognized content-type message * Updates migration 111 to work w/ Postgres * fixes for nova-manage not returning a full list of fixed IPs * Adds non_inheritable_image_properties flag * Add git commit message validation to hacking.py * Remove unnecessary use of with_lockmode * Improve VDI chain logging * Remove profane words * Adds logging for renaming and hardlinking * Don't create volumes if an incorrect size was given * set correct SELinux context for injected ssh keys * Fixes nova-manage fixed list with deleted networks * Move libvirt disk config setup out of main get_guest_config method * Refactor libvirt imagebackend module to reduce code duplication * Move more libvirt disk setup into the imagebackend module * Don't hardcode use of 'virtio' for root disk in libvirt driver * Ensure to use 'hdN' for IDE disk device in libvirt driver * Don't set device='cdrom' for all disks in libvirt driver * Move setup of libvirt disk cachemode into imagebackend module * Get rid of pointless 'suffix' parameter in libvirt imagebackend * Revert "Attach ISO as separate disk if given proper instruction" * Ensure VHDs in staging area are sequenced properly * Fix error in error handler in instance_usage_audit task * Fix SQL deadlock in quota reservations * Ensure 413 response for security group over-quota * fixes for nova-manage network list if network has been deleted * Allow NoMoreFloatingIps to bubble up to FaultWrapper * Fix cloudpipe keypair creation. Add pipelib tests * Don't let failure to delete filesystem block deletion of instances in libvirt * Static FaultWrapper status_to_type map * Make flavorextradata ignore deleted flavors * Tidy up handling of exceptions in floating_ip_dns * Raise NotImplementedError, not NotImplemented singleton * Fix the mis-use of NotImplemented * Update FilterSchedulerTestCase docstring * Remove unused testing.fake * Make snapshot work for stopped VMs * Split ComputeFilter up * Show all absolute quota limits in /limits * Info log to see which compute driver has loaded * Rename get_lock() to _get_lock() * Remove obsolete line in host_manager * improve efficiency of image transfer during migration * Remove unused get_version_from_href() * Add debug output to RamFilter * Fixes bare-metal spawn error * Adds generic retries for build failures * Fix docstring typo * Fixes XenAPI driver import in vm_vdi_cleaner * Display key_name only if keypairs extension is used * Fix EC2 CreateImage no_reboot logic * Reject EC2 CreateImage for instance-store * EC2 DescribeImages reports correct rootDeviceType * Support EC2 CreateImage API for boot-from-volume * remove unused clauses[] variable * Partially implements blueprint xenapi-live-migration * Improved VM detection for bandwidth polling (XAPI) * Sync jsonutils from openstack-common * Adding granularity for quotas to list and update * Remove VDI chain limit for migrations * Refactoring required for blueprint xenapi-live-migration * Add the plugin framework from common; use and test * Catch rpc up to the common state-of-the-art * Support requested_networks with quantum v2 * Return 413 status on over-quota in the native API * Fix venv wrapper to clean *.pyc * Use all deps for tools/hacking.py tests in tox * bug 1024557 * General-host-aggregates part 1 * Attach ISO as separate disk if given proper instruction * Extension to show usage of limited resources in /limits response * Fix SADeprecationWarning: useexisting is deprecated * Fix spelling in docstrings * Fix RuntimeWarning nova_manage not found * Exclude openstack-common from pep8 checks * Use explicit destination user in xenapi rsync call * Sync gettextutils fixes from openstack-common * Sync importutils from openstack-common * Sync cfg from openstack-common * Add SKIP_WRITE_GIT_CHANGELOG to setup.py * Remove unnecessary logging from API * Sync a commit from openstack-common * Fix typo in docstring * Remove VDI chain limit for snapshots * Adds snapshot_attached_here contextmanager * Change base rpc version to 1.0 in compute rpcapi * Use _lookup_by_name instead of _conn.lookupByName * Use the dict syntax instead of attribute to access db objects * Raise HTTP 500 if service catalog is not json * Floating_ip create /31,32 shouldn't silent error * Convert remaining network API casts to calls * network manager returns empty list, not raise an exception * add network creation call to network.api.API * overriden VlanManager.create_networks must return a result * When over quota for floating ips, return HTTPRequestEntityTooLarge * Remove deprecated auth-related db code * Fix .mailmap to generate unique AUTHORS list * Imports base64 to fix xen file injection * Remove deprecated auth from GlanceImageService * Adds bootlocking to the xenserver suspend and resume * ensure libguestfs mounts are cleaned up * Making docs pretty! * allows setting accessIPvs to null via update call * Re-add nova.virt.driver import to xenapi driver * Always attempt to delete entire floating IP range * Adds network labels to the fixed ips in usages * only mount guest image once when injecting files * Remove unused find_data_files function in setup.py * Use compute_api.get_all in affinity filters * Refactors more snapshot code into vm_utils * Clarifying which vm_utils functions are private * Refactor instance_usage_audit. Add audit tasklog * Fixes api fails to unpack metadata using cinder * Remove deprecated auth docs * Raise Failure exception when setting duplicate other_config key * Split xenapi agent code out to nova.virt.xenapi.agent * ensure libguestfs has completed before proceeding * flags documentation to deprecate connection_type * refactor baremetal/proxy => baremetal/driver * refactor xenapi/connection => xenapi/driver * refactor vmwareapi_conn => vmwareapi/driver * Don't block instance delete on missing block device volume * Adds diagnostics command for the libvirt driver * associate_floating_ip an ip already in use * When deleting an instance, avoid freakout if iscsi device is gone * Expose over-quota exceptions via native API * Fix snapshots tests failing bug 1022670 * Remove deprecated auth code * Remove deprecated auth-related api extensions * Make pep8 test work on Mac * Avoid lazy-loading errors on instance_type * Fetch kernel/ramdisk images directly * Ignore failure to delete kernel/ramdisk in xenapi driver * Boot from volume for Xen * Fix 'instance %s: snapshotting' log message * Fix KeyError 'key_name' when KeyPairExists raised * Propagate setup.py change from common * Properly name openstack.common.exception * Janitorial: Catch rpc up with a change in common * Make reboot work for halted xenapi instances * Removed a bunch of cruft files * Update common setup code to latest * fix metadata file injection with xen * Switch to common notifiers * Implements updating complete bw usage data * Fix rpc import path in nova-novncproxy * This patch stops metadata from being deleted when an instance is deleted * Set the default CPU mode to 'host-model' for Libvirt KVM/QEMU guests * Fallback to fakelibvirt in test_libvirt.py test suite * Properly track VBD and VDI connections in xenapi fake * modify hacking.py to not choke on the def of _() * sort .gitignore for readability * ignore project files for eclipse/pydev * Add checks for retrieving deleted instance metadata for notification events * Allow network_uuids that begin with a prefix * Correct typo in tools/hacking.py l18n -> i18n * Add *.egg* to .gitignore * Remove auth-related nova-manage commands * Remove unnecessary target_host flag in xenapi driver tests * Remove unnecessary setUp() method in xenapi driver tests * Finish AUTHORS transition * Don't catch & ignore exceptions when setting up LXC container filesystems * Ensure system metadata is sent on new image creation * Distinguish over-quota for volume size and number * Assign service_catalog in NovaKeystoneContext * Fix some hacking violations in the quantum tests folsom-2 -------- * Fix missing nova.log change to nova.openstack.common.log * Add Cinder Volume API to Nova * Modifies ec2/cloud to be able to use Cinder * Fix nova-rpc-zmq-receiver * Drop xenapi session.get_imported_xenapi() * Fix assertRaises(Exception, ...) HACKING violation * Make possible to store snapshots not in /tmp directory * Prevent file injection writing to host filesystem * Implement nova network API for quantum API 2.0 * Expand HACKING with commit message guidelines * Add ServiceCatalog entries to enable Cinder usage * Pass vdi_ref to fake.create_vbd() not a string * Switch to common logging * use import_object_ns for compute_driver loading * Add compatibility for CPU model config with libvirt < 0.9.10 * Sync rpc from openstack-common * Redefine the domain's XML on volume attach/detach * Sync jsonutils from openstack-common * Sync iniparser from openstack-common * Sync latest importutils from openstack-common * Sync excutils from openstack-common * Sync cfg from openstack-common * Add missing gettextutils from openstack-common * Run hacking tests as part of the gate * Remove duplicate volume_id * Make metadata content match the requested version of the metadata API * Create instance in DB before block device mapping * Get hypervisor uptime * Refactoring code to kernel Dom0 plugin * Ability to read deleted system metadata records * Add check for no domains in libvirt driver * Remove passing superfluous read_deleted argument * Flesh out the README file with a little more useful information * Remove unused 'get_open_port' method from libvirt utils * deallocate_fixed_ip attempts to update deleted ip * Dom0 plugin now returns data in proper format * Add PEP8 checks back for Dom0 plugins * Add missing utils declaration to RPM spec * Fixes bug 1014194, metadata keys are incorrect for kernel-id and ramdisk-id * Clean up cruft in nova.image.glance * Retry against different Glance hosts * Fix some import ordering HACKING violations * Deal with unknown instance status * OS API should return SHUTOFF, not STOPPED * Implement blueprint ec2-id-compatibilty * Add multi-process support for API services * Allow specification of the libvirt guest CPU model per host * Refactor Dom0 Glance plugin * Switch libvirt get_cpu_info method over to use config APIs * Remove tpool stub in xenapi tests * Use setuptools-git plugin for MANIFEST * Remove duplicate check of server_dict['name'] * Add missing nova-novncproxy to tarballs * Add libvirt config classes for handling capabilities XML doc * Refactor libvirt config classes for representing CPU models/features * Fix regression in test_connection_to_primitive libvirt testcase * Rename the instance_id column in instance_info_caches * Rename GlanceImageService.get to download * Use LOG.exception instead of logging.exception * Align run_tests.py pep8 with tox * Add hypervisor information extension * Remove GlanceImageService.index in favor of detail * Swap VDI now uses correct name label * Remove image service show_by_name method * Cleanup of image service code * Adds default fall-through to the multi scheduler. Fixes bug 1009681 * Add missing netaddr import * Make nova list/show behave nicely on instance_type deletion * refactor libvirt from connection -> driver * Switch to using new config parsing for vm_vdi_cleaner.py * Adds missing 'owner' attribute to image * Ignore floatingIpNotAssociated during disassociation * Avoid casts in network manager to prevent races * Stop nova_ipam_lib from changing the timeout setting * Remove extra DB calls for instances from OS API extensions * Allow single uuid to be specified for affinity * Fix invalid variable reference * Avoid reset on hard reboot if not supported * Fix several PEP-8 issues * Allow access to metadata server '/' without IP check * Fix db calls for snaphsot and volume mapping * Removes utils.logging_error (no longer used) * Removes utils.fetch_file (no longer used) * Improve filter_scheduler performance * Remove unnecessary queries for network info in notifications * Re-factor instance DB creation * Fix hacking.py failures.. * fix libvirt get_memory_mb_total() with xen * Migrate existing routes from flat_interface * Add full test environment * Another killfilter test fix for Fedora 17 * Remove unknown shutdown kwarg in call to vmops._destroy * Refactor vm_vdi_cleaner.py connection use * Remove direct access to glance client * Fix import order of openstack.common * metadata: cleanup pubkey representation * Make tgtadm the default iscsi user-land helper * Move rootwrap filters definition to config files * Fixes ram_allocation_ratio based over subscription * Call libvirt_volume_driver with right mountpoint * XenAPI: Fixes Bug 1012878 * update refresh_cache on compute calls to get_instance_nw_info * vm state and task state management * Update pylint/pep8 issues jenkins job link * Addtional CommandFilters to fix rootwrap on SLES * Tidy up exception handling in contrib api consoles * do sync before fusermount to avoid busyness * Fix bug 1010581 * xenapi tests: changes size='0' to size=0 * fixes a bug in xenapi tests where a string should be int * Minor HACKING.rst exception fix * Make libvirt LoopingCalls actually wait() * Add instance_id in Usage API response * Set libvirt_nonblocking to true by default for Folsom * Admin action to reset states * Use rpc from openstack-common * add nova-manage bash completion script * Spelling fixes * Fix bug 1014925: fix os-hosts * Adjust the libvirt config classes' API contract for parsing * Move libvirt version comparison code into separate function helper * Remove two obsolete libvirt cheetah templates from MANIFEST.in * Propose nova-novncproxy back into nove core * Fix missing import in compute/utils.py * Add instance details to notifications * Xen Storage Manager: tests for xensm volume driver * SM volume driver: DB changes and tests * moved update cache functionality to the network api * Handle missing server when getting security groups * Imports cleanup * added deprecated.warn helper method * Enforce an instance uuid for instance_test_and_set * Replaces functions in utils.py with openstack/common/timeutils.py * Add CPU arch filter scheduler support * Present correct ec2id format for volumes and snaps * xensm: Fix xensm volume driver after uuid changes * Cleanup instance_update so it only takes a UUID * Updates the cache * Add libvirt min version check * Ensure dnsmasq accept rules are preset at startup * Re-add private _compute_node_get call to sql api * bug #996880 change HostNotFound in hosts to HTTPNotFound * Unwrap httplib.HTTPConnection after WsgiLimiterProxyTest * Log warnings instead of full exceptions for AMQP reconnects * Add missing ack to impl_qpid * blueprint lvm-disk-images * Remove unused DB calls * Update default policies for KVM guest PIT & RTC timers * Add support for configuring libvirt VM clock and timers * Dedupe native and EC2 security group APIs * Add two missing indexes for instance_uuid columns * Revert "Fix nova-manage backend_add with sr_uuid" * Adds property to selectively enable image caching * Remove utils.deprecated functions * Log connection_type deprecation message as WARNING * add unit tests for new virt driver loader * Do not attempt to kill already-dead dnsmasq * Only invoke .lower() on non-None protocols * Add indexes to new instance_uuid columns * instance_destroy now only takes a uuid * Do not always query deleted instance_types * Rename image to image_id * Avoid partially finished cache files * Fix power_state mis-use bug 1010586 * Resolve unittest error in rpc/impl_zmq * Fix whitespace in sqlite steps * Make eventlet backdoor play nicer with gettext * Add user_name project_name and color option to log * fixes bug 1010200 * Fixes affinity filters when hints is None * implement sql-comment-string stack traces * Finalize tox config * Fixes bug lp:999928 * Convert consoles to use instance uuid * Use OSError instead of ProcessExecutionError * Replace standard json module with openstack.common.jsonutils * Don't query nova-network on startup * Cleans up power_off and power_on semantics * Refactor libvirt create calls * Fix whitespace in sqlite steps * Update libvirt imagecache to support resizes * separate Metadata logic away from the web service * Fix bug 1006664: describe non existent ec2 keypair * Make live_migration a first-class compute API * Add zeromq driver. Implements blueprint zeromq-rpc-driver * Fix up protocol case handling for security groups * Prefix all nova binaries with 'nova-' * Migrate security_group_instance_association to use a uuid to refer to instances * Migrate instance_metadata to use a uuid to refer to instances * Adds `disabled` field for instance-types * More meaningful help messages for libvirt migration options * fix the instance quota overlimit message * fix bug lp:1009041,add option "-F" to make mkfs non-interactive * Finally ack consumed message * Revert "blueprint " * Use openstack-common's policy module * Use openstack.common.cfg.CONF * bug #1006094 correct typo in addmethod.openstackapi.rst * Correct use of uuid in _get_instance_volume_bdm * Unused imports cleanup (folsom-2) * Quantum Manager disassociate floating-ips on instance delete * defensive coding against None inside bdm resolves bug 1007615 * Add missing import to quantum manager * Add a comment to rpc.queue_get_for() * Add shared_storage_test methods to compute rpcapi * Add get_instance_disk_info to the compute rpcapi * Add remove_volume_connection to the compute rpcapi * blueprint * Implements resume_state_on_host_boot for libvirt * Fix libvirt rescue to work with whole disk images * Finish removing xenapi.HelperBase class * Remove network_util.NetworkHelper class * Remove volume_util.VolumeHelper class * Remove vm_utils.VMHelper class * Start removing unnecessary classes from XenAPI driver * XenAPI: Don't hardcode userdevice for VBDs * convert virt drivers to fully dynamic loading * Add compare_cpu to the compute rpcapi * Add get_console_topic() to the compute rpcapi * Add refresh_provider_fw_rules() to compute rpcapi * Use compute rpcapi in nova-manage * Add post_live_migration_at_destination() to compute rpcapi * Add pre_live_migration() to the compute rpcapi * Add rollback_live_migration_at_destination() to compute rpcapi * Add finish_resize() to the compute rpcapi * Add resize_instance() to the compute rpcapi * Add finish_revert_resize() to the compute rpcapi * Add get_console_pool_info() to the compute rpcapi * Fix destination host for remove_volume_connection * Don't deepcopy RpcContext * Remove resize function from virt driver * Cleans up extraneous volume_api calls * Remove list_disks/list_interfaces from virt driver * Remove duplicate words in comments * Implement blueprint host-topic-matchmaking * Remove unnecessary setting of XenAPI module attribute * Prevent task_state changes during VERIFY_RESIZE * Eliminate a race condition on instance deletes * Make sure an exception is logged when config file isn't found * Removing double quotes from sample config file * Backslash continuation removal (Nova folsom-2) * Update .gitignore * Add a note on why quota classes are unused in Nova * Move queue_get_for() from db to rpc * Sample config file tool updates * Fix instance update notification publisher id * Use cfg's new global CONF object * Make xenapi fake match real xenapi a bit closer * Align ApiEc2TestCase to closer match api-paste.ini * Add attach_time for EC2 Volumes * fixing issue with db.volume_update not returning the volume_ref * New RPC tests, docstring fixes * Fix reservation_commit so it works w/ PostgreSQL * remove dead file nova/tests/db/nova.austin.sqlite * Fix the conf argument to get_connection_pool() * Remove Deprecated auth from EC2 * Revert "API users should not see deleted flavors." * Grammar fixes * Record instance architecture types * Grammar / spelling corrections * cleanup power state (partially implements bp task-management) * [PATCH] Allow [:print:] chars for security group names * Add scheduler filter for trustedness of a host * Remove nova.log usage from nova.rpc * Remove nova.context dependency from nova.rpc * _s3_create update only pertinent metadata * Allow adding fixed IPs by network UUID * Fix a minor spelling error * Run coverage tests via xcover for jenkins * Localize rpc options to rpc code * clean-up of the bare-metal framework * Use utils.utcnow rather than datetime.utcnow * update xen to use network_model * fixes bug 1004153 * Bugfix in simple_tenant_usage API detail view * removed a dead db function register_models() * add queue name argument to TopicConsumer * Cleanup tools/hacking using flake8 * Expose a limited networks API for users * Added a instance state update notification * Remove deprecated quota code * Update pep8 dependency to v1.1 * Nail pep8 dependencies to 1.0.1 * API users should not see deleted flavors * Add scheduler filter: TypeAffinityFilter * Add help string to option 'osapi_max_request_body_size' * Permit deleted instance types to be queried for active instances * Make validate_compacted_migration into general diff tool * Remove unused tools/rfc.sh * Finish quota refactor * Use utils.parse_strtime rather than datetime.strptime folsom-1 -------- * Add version to compute rpc API * Add version to scheduler rpc API * Add version to console rpc API * Remove wsgiref from requirements * More accurate rescue mode testing for XenAPI * Add tenant id in self link in /servers call for images * Add migration compaction validation tool * Enable checking for imports in alphabetical order * Include volume-usage-audit in tarballs * Fix XenServer diagnostics to provide correct details * Use cfg's new behavior of reset() clearing overrides * Sync with latest version of openstack.common.cfg * Only permit alpha-numerics and ._- for instance type names * Use memcache to store consoleauth tokens * cert/manager.py not using crypto.fetch_crl * Cleanup LOG.getLoggers to use __name__ * Imported Translations from Launchpad * Alphabetize imports in nova/tests/ * Fix Multi_Scheduler to process host capabilities * fixed_ip_get_by_address read_deleted from context * Fix for Quantum LinuxBridge Intf driver plug call * Add additional logging to compute filter * use a RequestContext object instead of context module * make get_all_bw_usage() signature match for fake virt driver * Add unit test coverage for bug 1000261 * Moving network tests into the network folder * Add version to consoleauth rpc API * Add version to the cert rpc API * Add base support for rpc API versioning * fixes typo that completely broken Quantum/Nova integration * Make Iptables FW Driver handle dhcp_server None * Add aliases to .mailmap for comstud and belliott * Add eventlet backdoor to facilitate troubleshooting * Update nova's copy of image metadata on rebuild * Optional timeout for servers stuck in build * Add configurable timeout to Quantum HTTP connections * Modify vm_vdi_cleaner to handle `-orig` * Add __repr__ to least_cost scheduler * Bump XenServer plugin version * handle updated qemu-img info output * Rearchitect quota checking to partially fix bug 938317 * Add s3_listen and s3_listen_port options * Misused and not used config options * Remove XenAPI use of eventlet tpool * Fixed compute periodic task. Fixes bug 973331 * get instance details results in volumes key error * Fix bug 988034 - Quantum Network Manager - not clearing ips * Stop using nova.exception from nova.rpc * Make use of openstack.common.jsonutils * Alphabetize imports in nova/api/ * Remove unused _get_target code from xenapi * Implement get_hypervisor_hostname for libvirt * Alphabetize imports * Alphabetize imports in nova/virt/ * Adding notifications for volumes * Pass 'nova' project into ConfigOpts * fixes bug 999206 * Create an internal key pair API * Make allocation failure a bit more friendly * Avoid setting up DHCP firewall rules with FlatManager * Migrate missing license info * Imported Translations from Launchpad * Fix libvirt Connection.get_disks method * Create a utf8 version of the dns_domains table * Setup logging, particularly for keystone middleware * Use default qemu-img cluster size in libvirt connection driver * Added img metadata validation. Fixes bug 962117 * Remove unnecessary stubout_loopingcall_start * Actually use xenapi fake setter * Provide a transition to new .info files * Store image properties with instance system_metadata * Destroy system metadata when destroying instance * Fix XenServer windows agent issue * Use ConfigOpts.find_file() to find paste config * Remove instance Foreign Key in volumes table, replace with instance_uuid * Remove old flagfile support * Removed unused snapshot_instance method * Report memory correctly on Xen. Fixes bug 997014 * Added image metadata to compute.instance.exists * Update PostgreSQL sequence names for zones/quotas * Minor help text related changes * API does need new image_ref on rebuild immediately * Avoid unnecessary inst lookup in vmops _shutdown * implement blueprint floating-ip-notification * Defer image_ref update to manager on rebuild * fix bug 977007,make nova create correct size of qcow2 disk file * Remove unnecessary shutdown argument to _destroy() * Do not fail on notify when quantum and melange are out of sync * Remove instance action logging mechanism * httplib throw "TypeError: an integer is required" when run quantum * fix bug 992008, we should config public interface on compute * A previous patch decoupled the RPC drivers from the nova.flags, breaking instance audit usage in the process. This configures the xvpvncproxy to configure the RPC drivers properly with FLAGS so that xvpvncproxy can run * Fix bug 983206 : _try_convert parsing string * pylint cleanup * Fix devref docs * Remove Deprecated AuthMiddleware * Allow sitepackages on jenkins * Replaces exceptions.Error with NovaException * Docs for vm/task state transitions * Fix a race with rpc.register_opts in service.py * Mistake with the documentation about cost function's weight corrected * Remove state altering in live-migration code * Register fake flags with rpc init function * Generate a Changelog for Nova * Find context arg by type rather than by name * Default auto-increment for int primary key columns * Adds missing copyright to migration 082 * Add instance_system_metadata modeling * Use fake_libvirt_utils for libvirt console tests * Fix semantics for migration test environment var * Clean up weighted_sum logic * Use ConfigOpts.find_file() to locate policy.json * Sync to newer openstack.common.cfg * Fix test_mysql_innodb * Implement key pair quotas * Ensure that the dom0 we're connected to is the right one * Run ip link show in linux_net._device_exists as root * Compact pre-Folsom database migrations * Remove unused import * Pass context to notification drivers when we can * Use save_and_reraise_exception() from common * Fix innodb tests again * Convert Volume and Snapshot IDs to use UUID * Remove unused images * Adding 'host' info to volume-compute connection information * Update common.importutils from openstack-common * Provide better quota error messages * Make kombu support optional for running unit tests * Fix nova.tests.test_nova_rootwrap on Fedora 17 * Xen has to create it's own tap device if using libvirt and QuantumLinuxBridgeVIFDriver * Fix test_migrations to work with python 2.6 * Update api-paste.ini to remove unused settings * Fix test_launcher_app to ensure service actually got started * Minor refactor of servers viewbuider * A previous patch decoupled the RPC drivers from the nova.flags, breaking instance audit usage in the process. This configures the instance audit usage to configure the RPC drivers properly with FLAGS so that the job can run * Allow blank passwords in changePassword action * Allow blank adminPass on server create * Return a BadRequest on bad flavors param values * adjust logging levels for utils.py * Update integration tests to listen on 127.0.0.1 * Log instance consistently * Create name_label local variable for logging message * Remove hack for xenapi driver tests * Migrate block_device_mapping to use instance uuids * Remove unnecessary return statements * Clean up ElementTree usage * Adds better bookending and robustness around the instance audit usage generation * Pass instance to resize_disk() to fix exception * Minor spelling fix * Removes RST documentation and moves it to openstack-manuals * Trivial spelling fix * Remove workaround for sqlalchemy-migration < 0.6.4 * Remove unnecessary references to resize_confirm_window flag * Fix InnoDB migration bug in migrate script 86 * Use openstack.common.importutils * Ignore common code in coverage calculations * Use additional task states during resize * Add libvirt get_console_output tests: pty and file * Keep uuid with bandwidth usage tracking to handle the case where a MAC address could be recycled between instances * Added the validation for name check for rebuild of a server * Make KillFilter to handle 'deleted' w/o rstrip * Fix instance delete notifications * Disconnect stale instance VDIs when starting nova-compute * Fix timeout in EC2 CloudController.create_image() * Add additional capabilities for computes * Move image checksums into a generic file * Add instance to several log messages * Imports to human alphabetical order * Fixes bug 989271, fixes launched_at date on notifications * Enable InnoDB checking * make all mysql tables explicitly innodb * Use instance_get_by_uuid since we're looking up a UUID * Use nova_uuid attribute instead of trying to parse out name_label * Add a force_config_drive flag * Fix 986922 * Improvement for the correct query extraction * Fixes bug 983024 * Make updating hostId raises BadRequest * Disallow network creation when label > 255. Fixes bug 965008 * Introduced _atomic_restart_dhcp() Fixes Bug 977875 * Make the filename that image hashes are written to configurable * Xen: Pass session to destroy_vdi * Add instance logging to vmware_images.py * Add instance logging to vmops.py * fix bug #980452 set net.ipv4.ip_forward=1 on network * Log instance * Log instance information for baremetal * Include instance in log message * Log instance * Ensure all messages include instance * Add instance to log messages * Include instance in log message * Refactor nova.rpc config handling * Don't leak RPC connections on timeouts or other exceptions * Small cleanup to attach_volume logging * Implements EC2 DescribeAddresses by specific PublicIp * Introduced flag base_dir_name. Fixes bug 973194 * Set a more reasonable default RPC thread pool size * Number of missing imports should always be shown * Typo fix in bin/instance-usage-audit * Improved tools/hacking.py * Scope coverage report generation to nova module * Removes unnecessary code in _run_instance * Validate min_ram/min_disk on rebuild * Adding context to usage notifications * Making `usage_from_instance` private * Remove __init__.py from locale dir * Fixes bug 987335 * allow power state "BLOCKED" for live migrations if using Xen by libvirt * Exclude xenapi plugins from pep8/hacking checks * Imported Translations from Launchpad * Remove unnecessary power state translation messages * Add instance logging * Use utils.save_and_reraise_exception * Removing XenAPI class variable, use session instead * Log instance consistently * Keep nova-manage commands sorted * Log instances consistently * Moves `usage_from_instance` into nova.compute.utils * Log instance * nova.virt.xenapi_conn -> nova.virt.xenapi.connection * Remove unused time keyword arg * Remove unused variable * support a configurable libvirt injection partition * Refactor instance image property inheritance out to a method * Refactor availability zone handling out to a method * Include name being searched for in exception message * Be more tolerant of deleting failed builds * Logging updates in IptablesFirewallDriver * Implement security group quotas * Do not allow blank adminPass attribute on set password * Make rebuilds with an emtpy name raise BadRequest * Updates launched_at in the finish and revert_migration calls * Updated instance state on resize error * Reformat docstrings in n/c/a/o/servers as per HACKING * fix bug 982360, multi ip block for dmz_cidr * Refactor checking instance count quota * Small code cleanup for config_disk handling * Refactors kernel and ramdisk handling into their own method * Improve instance logging in compute/manager * Add deleted_at to instance usage notification * Simplify _get_vm_opaque_ref in xenapi driver * Test unrescue works as well * Remove unused variable * Port types and extra specs to volume api * Make exposed methods clearer in xenapi.vmops * Fix error message to report correct operation * Make run_tests.sh just a little bit less verbose * Log more information when sending notifications * xenapi_conn -> xenapi.connection * Renamed current_audit_period function to last_completed_audit_period to clarify its purpose * QuantumManager will start dnsmasq during startup. Fixes bug 977759 * Fixed metadata validation err. Fixes bug 965102 * Remove python-novaclient dependency from nova * Extend instance UUID logging * Remove references to RemoteError in os-networks * Fix errors in os-networks extension * Removes dead code around start_tcp in Server * Improve grammar throughout nova * Improved localization testing * Log kwargs on a failed String Format Operation * Standardize quota flag format * Remove nova Direct API * migration_get_all_unconfirmed() now uses lowercase "finished" Fixes bug 977719 * Run tools/hacking.py instead of pep8 mandatory * Delete fixed_ips when network is deleted * Remove unecessary --repeat option for pep8 * Create compute.api.BaseAPI for compute APIs to use * Give all VDIs a reasonable name-label and name-description * Remove last two remaining hyperV references * bug 968452 * Add index to fixed_ips.address * Use 'root' instead of 'os' in XenAPI driver * Information about DifferentHostFilter and SameHostFilter added * HACKING fixes, sqlalchemy fix * Add test to check extension timestamps * Fixes bug 952176 * Update doc to mention nova tool for type creation * Change Diablo document reference to trunk * Imported Translations from Launchpad * Cloudpipe tap vpn not always working * Allow instance logging to use just a UUID * Add the serialization of exceptions for RPC calls * Cleanup xenapi driver logging messages to include instance * Stop libvirt test from deleting instances dir * Move product_version to XenAPISession * glance plugin no longer takes num_retries parameter * Remove unused user_id and project_id parameters to fetch_image() * Cleanup _make_plugin_call() * Push id generation into _make_agent_call() * Remove unused path argument for _make_agent_call() * Remove unused xenstore methods * Combine call_xenapi and call_xenapi_request * Fixed bug 962840, added a test case * Use -1 end-to-end for unlimited quotas * fix bug where nova ignores glance host in imageref * Remove unused _parse_xmlrpc_value * Fix traceback in image cache manager * Fixes regression in release_dhcp * Use thread local storage from openstack.common * Extend FilterScheduler documentation * Add validation on quota limits (negative numbers) * Get unit tests functional in OS X * Make sure cloudpipe extension can retrieve network * Treat -1 quotas as unlimited * Auto-confirming resizes would bail on exceptions * Grab the vif directly on release instead of lookup * Corrects an AttributeError in the quota API * Allow unprivileged RADOS users to access rbd volumes * Remove nova.rpc.impl_carrot * Sync openstack.common.cfg from openstack-common * add libvirt_inject_key flag fix bug #971640 * Do not fail to build a snapshot if base image is not found * fix TypeError with unstarted threads in nova-network * remove unused flag: baremetal_injected_network_template baremetal_uri baremetal_allow_project_net_traffic * Imported Translations from Launchpad * fixed postgresql flavor-create * Add rootwrap for touch * Ensure floating ips are recreated on reboot * Handle instances being missing while listing floating IPs * Allow snapshots in error state to be deleted * Ensure a functional database connection * Add a faq to vnc docs * adjust logging levels for linux_net * Handle not found in check for disk availability * Acccept metadata ip so packets aren't snatted * bug 965335 * Export user id as password to keystone when using noauth * Check that DescribeInstance works with deleted image * Check that volume has no snapshots before deletion * Fix libvirt rescue * Check vif exists before releasing ip * Make kombu failures retry on IOError * Adds middleware to limit request body sizes * Add validation for OSAPI server name length * adjust logging levels for libvirt error conditions * Fix exception type in _get_minram_mindisk_params * fixed bug lp:968019 ,fix network manager init floating ip problem * When dnsmasq fails to HUP log an error * Update KillFilter to handle 'deleted' exe's * Fix disassociate query to remove foreign keys * Touch in use image files when they're checked * Base image signature files are not images * Support timestamps as prefixes for traceback log lines * get_instance_uuids_by_ip_filter to QM * Updated docstrings in /tools as per HACKING * Minor xenapi driver cleanups * Continue on the the next tenant_id on 400 codes * Fix marker behavior for flavors * Remove auth_uri, already have auth_host, auth_port * A missing checksum does not mean the image is corrupt * Default scheduler to spread-first * Reduce the image cache manager periodic interval * Handle Forbidden and NotAuthenticated glance exc * Destroy src and dest instances when deleting in RESIZE_VERIFY * Allow self-referential groups to be created * Fix unrescue in invalid state * Clean up the shared storage check (#891756) * Don't set instance ACTIVE until it's really active * Fix traceback when sending invalid data * Support sql_connection_debug to get SQL diagnostic information * Improve performance of safe_log() * Fix 'nova-manage config convert' * Add another libvirt get_guest_config() test case * Fix libvirt global name 'xml_info' is not defined * Clean up read_deleted support in host aggregates code * ensure atomic manipulation of libvirt disk images * Import recent openstack-common changes * makes volume versions display properly * Reordered the alphabet * Add periodic_fuzzy_delay option * Add a test case for generation of libvirt guest config * Convert libvirt connection class to use config APIs for CPU comparisons * Introduce a class for storing libvirt CPU configuration * Convert libvirt connection class to use config APIs for guests * Convert libvirt connection class to use config APIs for filesystem devices * Introduce a class for storing libvirt snapshot configuration * Move NIC devices back after disk devices * Convert libvirt connection class to use config APIs for disk devices * Convert libvirt connection class to use config APIs for input devices * Convert libvirt connection class to use config APIs for serial/console devices * Convert libvirt connection class to use config APIs for graphics * Convert libvirt vif classes over to use config API * Convert libvirt volume classes over to use config API * Delete the test_preparing_xml_info libvirt test * Introduce a set of classes for storing libvirt guest configuration * Send a more appropriate error response for 403 in osapi * Use key in locals() that actually exists * Fix launching of guests where instances_path is on GlusterFS * Volumes API now uses underscores for attrs * Remove unused certificate SQL calls * Assume migrate module missing __version__ is old * Remove tools/nova-debug * Inlining some single-use methods in XenAPI vmops * Change mycloud.com to example.com (RFC2606) * Remove useless dhcp_domain flags in EC2 * Handle correctly QuotaError in EC2 API * Avoid unplugging VBDs for rescue instances * Imported Translations from Launchpad * Rollback create_disks handles StorageError exception * Capture SIGTERM and Shut down python services cleanly * Fixed status validation. Fixes bug 960884 * Clarify HACKING's shadow built-in guidance * Strip auth token from log output * Fail-fast for invalid read_deleted values * Only shutdown rescue instance if it's not already shutdown * Modify nova.wsgi.start() should check backlog parameter * Fix unplug_vbd to retry a configurable number of times * Don't send snapshot requests through the scheduler * Implement quota classes * Fixes bug 949038 * Open Folsom * Fixes bug 957708 * Improvements/corrections to vnc docs * Allow rate limiting to be disabled via flag * Improve performance of generating dhcp leases * Fix lxc console regression * Strip out characters that should be escaped from console output * Remove unnecessary data from xenapi test * Correct accessIPv6 error message * Stop notifications from old leases * Fix typo in server diagnostics extension * Stub-implement floating-ip functions on FlatManager * Update etc/nova.conf.sample for ship * Make sqlite in-memory-db usable to unittest * Fix run/terminate race conditions * Workaround issue with greenthreads and lockfiles * allow the compute service to start with missing libvirt disks * Destroy rescue instance if main instance is destroyed * Tweak security port validation for ICMP * Debug messages for host filters * various cleanups * Remove Virtual Storage Array (VSA) code * Re-instate security group delete test case * db api: Remove check for security groups reference * Allow proper instance cleanup if state == SHUTOFF * Use getLogger for nova-all * Stop setting promisc on bridge * Fix OpenStack Capitalization * Remove improper use of redirect for hairpin mode * Fix OpenStack Capitalization * HACKING fixes, TODO authors * Keep context for logging intact in greenthreads * fix timestamps to match documented ec2 api * Include babel.cfg in tarballs * Fix LXC volume attach issue * Make extended status not admin-only by default * Add ssl and option to pass tenant to s3 register * Remove broken bin/*spool* tools * Allow errored volumes to be deleted * Fix up docstring * libvirt/connection.py: Set console.log permissions * nonblocking libvirt mode using tpool * metadata speed - revert logic changes, just caching * Refix mac change to work around libvirt issue * Update transfer_vhd to handle unicode correctly * Fixes bug 954833 By adding the execute bit to the xenhost xenapi plugin * Cleanup flags * fix bug 954488 * Fix backing file cp/resize race condition * Use a FixedIp subquery to find networks by host * Changes remove_fixed_ip to pass the instance host * Map image ids to ec2 ids in metadata service * Remove date_dhcp_on_disassociate comment and docs * Make fixed_ip_disassociate_all_by_timeout work * Refactor glance id<->internal id conversion for s3 * Sort results from describe_instances in EC2 API * virt/firewall: NoopFirewallDriver::instance_filter_exists must return True * fix nova-manage floating delete * fixed list warn when ip allocated to missing inst * Removes default use of obsolete ec2 authorizor * Additional extensions no longer break unit-tests * Use cPickle and not just pickle * Move (cast|call)_compute_message methods back into compute API class * Fix libvirt get_console_output for Python < 2.7 * doc/source/conf.py: Fix man page building * Update floating auto assignment to use the model * Make nova-manage syslog check /var/log/messages * improve speed of metadata * Fix linux_net.py interface-driver loading * Change default of running_deleted_instance_action * Nuke some unused SQL api calls * Avoid nova-manage floating create /32 * Add a serializer for os-quota-sets/defaults * Import nova.exception so exception can be used * refactoring code, check connection in Listener. refer to Bug #943031 * Fix live-migration in multi_host network * add convert_unicode to sqlalchemy connection arguments * Fixes xml representation of ext_srv_attr extension * Sub in InstanceLimitExceeded in overLimit message * Remove update lockmode from compute_node_get_by_host * Set 'dhcp_server' in _teardown_network_on_host * Bug #922356 QuantumManager does not initiate unplug on the linux_net driver * Clean up setup and teardown for dhcp managers * Display owner in ec2 describe images * EC2 KeyName validation * Fix issues with security group auths without ports * Replaced use of webob.Request.str_GET * Allow soft_reboot to work from more states: * Make snapshots with qemu-img instead of libvirt * Use utils.temporary_chown to ensure permissions get reset * Add VDI chain cleanup script * Reduce duplicated code in xenapi * Since 'net' is of nova.network.model.VIF class and 'ips' is an empty list, net needs to be pulled from hydrated nw_info.fixed_ips(), and appended to ips * Fix nova-manage backend_add with sr_uuid * Update values in test_flagfile to be different * Switch all xenapi async plugin calls to be sync * Hack to fixup absolute pybasedir in nova.conf.sample * fixup ldapdns default config * Use cache='none' for all disks * Update cfg from openstack-common * Add pybasedir and bindir options * Simply & unify console handling for libvirt drivers * Cleanup XenAPI tests * fix up nova-manage man page * Don't use glance when verifying images * Fixes os-volume/snapshot delete * Use a high number for our default mac addresses * Simplify unnecessary XenAPI Async calls to be synchronous * Remove an obsolete FIXME comment * Fixing image snapshots server links * Wait for rescue VM shutdown to complete before destroying it * Renaming user friendly fault name for HTTP 409 * Moving nova/network tests to more logical home * Change a fake classes variable to something other than id * Increase logging for xenapi plugin glance uploads * Deprecate carrot rpc code * Improve vnc proxy docs * Require a more recent version of glance * Make EC2 API a bit more user friendly * Add kwargs to RequestContext __init__ * info_cache is related to deleted instance * Handle kwargs in deallocate_fixed_ip for FlatDHCP * Add a few missing tests regarding exception codes * Checks image virtual size before qemu-img resize * Set logdir to a tempdir in test_network * Set lock_path to a tempdir in TestLockCleanup * Exceptions unpacking rpc messages shouldn't hang the daemon * Use sqlalchemy reflection in migration 080 * Late load rabbit_notifier in test_notifier * boto shouldn't be required for production deploys * Don't use ec2 IDs in scheduler driver * pyflakes cleanups on libvirt/connection.py * Validate VDI chain before moving into SR * Fix racey snapshots * Don't swallow snapshot exceptions * allow block migration to talk to glance/keystone * Remove cruft and broken code from nova-manage * Update paste file to use service tenant * Further cleanup of XenAPI * Fix XML namespaces for limits extensions and versions * Remove the feature from UML/LXC guests * setup.py: Fix doc building * Add adjustable offset to audit_period * nova-manage: allow use of /32 IP range * Clear created attributes when tearing down tests * Fix multi_host column name in setup_networks.. * HACKING fixes, all but sqlalchemy * Remove trailing whitespaces in regular file * remove undocumented, unused mpi 'extension' to ec2 metadata * Minor clarifications for the help strings in nova config options * Don't use _ for variable name * Make test_compute console tests more robust * test_compute stubs same thing multiple times * Ignore InstanceNotFound when trying to set instance to ERROR * Cleans up the create_conf tool * Fix bug 948611. Fix 'nova-manage logs errors' * api-paste.ini: Add /1.0 to default urlmap * Adds nova-manage command to convert a flagfile * bug 944145: race condition causes VM's state to be SHUTOFF * Cleanup some test docstrings * Cleans up a bunch of unused variables in XenAPI * Shorten FLAGS.rpc_response_timeout * Reset instance to ACTIVE when no hosts found * Replaces pipelines with flag for auth strategy * Setup and teardown networks during migration * Better glance exception handling * Distinguish rootwrap Authorization vs Not found errors * Bug #943178: aggregate extension lacks documentation * Rename files/dirs from 'rabbit' to 'rpc' * Change references to RabbitMQ to include Qpid * Avoid running code that uses logging in a thread * No longer ignoring man/novamanage * Fixing incorrect use of instance keyword in logging * Fix rst formatting and cross-references * Provide a provider for boto.utils * Only pass image uuids to compute api rebuild * Finally fix the docs venv bug * Get rid of all of the autodoc import errors * Rename DistributedScheduler as FilterScheduler * Allows new style config to be used for --flagfile * Add support for lxc consoles * Fix references to novncproxy_base_url in docs * Add assertRaises check to tools/hacking.py as N202 * fix restructuredtext formatting in docstrings that show up in the developer guide * Raise 409 when rescuing instance in RESCUE mode * Log a certain rare instance termination exception * Update fixed_ip_associate to not use relationships * Remove unnecessary code in test setUp/tearDown * Imported Translations from Launchpad * Only raw string literals should be used with _() * assertRaises(Exception, ...) considered harmful * Added docs on MySQL queries blocking main thread * Fix test_attach_volume_raise_exception * Fix test_unrescue to actually test unrescue * bug #941794 VIF and intf drivers for Quantum Linux Bridge plugin * Ensures that we don't exceed iptables chain max * Allows --flat_interface flag to override db * Use self.mox instead of create a new self.mocker * Fix test_migrate_disk_and_power_off_exception * fakes.fake_data_store doesn't exist, so don't reset it * populate glance 'name' field through ec2-register * Remove unused _setup_other_managers method from test case * Remove unused test_obj parameter to setUp() * Use stubout instead of manually stubbing out os.path.exists * Remove superfluous __init__ from test case * Use test.TestCase instead of manually managing stubout * Handle InstanceNotFound during server update * Use stubout instead of manually stubbing out versions.VERSIONS * Remove unused session variable in test setup * Cleanup swap in _create_vm undo * Do not invoke kill dnsmasq if no pid file was found * Fixes for ec2 images * Retry download_vhd with different glance host each time * Display error for invalid CIDR * Remove empty setUp/tearDown methods * Call super class tearDown correctly * Fixes bug 942556 and bug 944105 * update copyright, add version information to footer * Refactor spawn to use UndoManager * Fail gracefully when the db doesn't speak unicode * Remove unnecessary setting up and down of mox and stubout * Remove unnecessary variables from tests * Ensure image status filter matches glance format * fix for bug 821252. Smarter default scheduler * blueprint sphinx-doc-cleanup bug 944381 * Adds soft-reboot support to libvirt * Minor cleanup based on HACKING * libvirt driver calls unplug() twice on vm reboot * Add missing format string type on some exception messages * Fixing a request-id header bug * Test creating a server with metadata key too long * Fixes lp931801 and a key_error * notifications for delete, snapshot and resize * Ensure that context read_deleted is only one of 'no', 'yes' or 'only' * register Cell model, not Zone model * Option expose IP instead of dnshost in ec2 desc' * Fix _sync_power_states to obtain correct 'state' * Ensures that keypair names are only AlphaNumeric * Cast vcpu_weight to string before calling xen api * Add missing filters for new root commands * Destroy VM before VDIs during spawn cleanup * Include hypervisor_hostname in the extended server attributes * Remove old ratelimiting code * Perform image show early in the resize process * Adds netapp volume driver * Fixes bug 943188 * Remove unused imports and variables from OS API * Return empty list when volume not attached * Be consistent with disabling periodic tasks * Cast volume-related ids to str * Fix for bug 942896: Make sure network['host'] is set * Allow xvd* to be supplied for volume in xenapi * Initialize progress to 0 for build and resize * Fix issue starting nova-compute w/ XenServer * Provide retry-after guidance on throttled requests * Use constant time string comparisons for auth * Rename zones table to cells and Instance.zone_name to cell_name * Ensure temporary file gets cleaned up after test * Fixes bug 942549 * Use assertDictMatch to keep 2.6 unit tests passing * Handle case where instance['info_cache'] is None * sm volume driver: fix backend adding failure * sm vol driver: Fix regression in sm_backend_conf_update * TypeError API exceptions get logged incorrectly * Add NoopFirewallDriver * Add utils.tempdir() context manager for easy temp dirs * Check all migrations have downgrade in test_misc * Remove monkey patching in carrot RPC driver * Call detach_volume when attach fails * Do not hit the network_api every poll * OS X Support fixed, bug 942352 * Make scheduler filters more pluggable * Adds temporary chown to sparse_copy * make nova-network usable with Python < 2.6.5 * Re-adds ssl to kombu configuration and adds flags that are needed to pass through to kombu * Remove unused import * Make sure detail view works for volume snaphots * Imported Translations from Launchpad * Decode nova-manage args into unicode * Cleanup .rescue files in libvirt driver unrescue * Fixes cloudpipe extension to work with keystone * Add missing directive to tox.ini * Update EC2KeystoneAuth to grab tenant 'id' * Monkey patch migrate < 0.7.3 * Fixes bug lp#940734 - Adding manager import so AuthMiddleware works * Clean stale lockfiles on service startup : fixes bug 785955 * Fix nova-manage floating create docs * Fix MANIFEST.in to include missing files * Example config_drive init script, label the config drive * fix unicode triggered failure in AuthManager * Fix bug 900864 Quantum Manager flag for IP injection * Include launch_index when creating instances * Copy data when migration dst is on a different FS * bigger-than-unit test for cleanup_running_deleted_instances * Nova options tool enhancements * Add hypervisor_hostname to compute_nodes table and use it in XenServer * Fixes error if Melange returns no networks * Print error if nova-manage should be run as root * Don't delete security group in use from OS API * nova-network can't deallocate ips from deleted instances * Making link prefixes support https * Prevent infinite loop in PublishErrorsHandler * blueprint host-aggregates: host maintenance - xenapi implementation * bug 939480 * libvirt vif-plugging fixes. Fixes bug 939252 , bug 939254 * Speeding up resize down with sparse_copy * Remove network_api fallback for info_cache from APIs * Improve unit test coverage per bug/934566 * Return 40x for flavor.create duplicate * refactor a conditional for testing and understanding * Disable usb tablet support for LXC * Add Nexenta volume driver * Improve unit test coverage per bug/934566 * nova-manage: Fix 'fixed list' * Add lun number to provider_location in create_volume * Fixes bug 938876 * Fix WeightedHost * Fix instance stop in EC2 create_image * blueprint host-aggregates: improvements and clean-up * Move get_info to taking an instance * Support fixed_ip range that is a subnet of the network block * xenapi: nova-volume support for multiple luns * Fix error that causes 400 in flavor create * Makes HTTP Location Header return as utf-8 as opposed to Unicode * blueprint host-aggregates: host maintenance * blueprint host-aggregates: xenapi implementation * Rework base file checksums * Avoid copying file if dst is a directory * Add 'nova-manage export auth' * Alter output format of volume types resources * Scheduler notifications added * Don't store connection pool in RpcContext * Fix vnc docs: novaclient now supports vnc consoles * Clarify use of Use of deprecated md5 library * Extract get_network in quantum manager * Add exception SnapshotIsBusy to be handled as VolumeIsBusy * Exception cleanup * Stop ignoring E202 * Support tox-based unittests * Add attaching state for Volumes * Fix quantum get_all_networks() signature (lp#936797) * Escape apostrophe in utils.xhtml_escape() (lp#872450) * Backslash continuations (nova.api.openstack) * Fix broken method signiture * Handle OSError which can be thrown when removing tmpdir. Fixes bug 883326 * Update api-paste.ini with new auth_token settings * Imported Translations from Launchpad * Don't tell Qpid to reconnect in a busy loop * Don't inherit controllers from each other, we don't want the methods of our parent * Improve unit test coverage per bug/934566 * Setting access ip values on server create * nova.conf sample tool * Imported Translations from Launchpad * Add support for admin_password to LibVirt * Add ephemeral storage to flavors api * Resolve bug/934566 * Partial fix for bug 919051 * fix pre_block_migration() interaction with libvirt cache * Query directly for just the ip * bug 929462: compile_diagnostics in xenapi erronously catch XenAPI.Failure * Use new style instance logging in compute api * Fix traceback running instance-usage-audit * Actual fix for bug 931608 * Support non-UTC timestamps in changes-since filter * Add additional information to servers output * Adding traceback to async faults * Pulls the main components out of deallocate * Add JSONFormatter * Allow file logging config * LOG.exception does not take an exc_info keyword * InstanceNotFound exceptions for terminate_intance now Log warning instead of throwing exeptions * bug 933620: Error during ComputeManager._poll_bandwidth_usage * Make database downgrade works * Run ovs-ofctl as root * 077_convert_to_utf8: Convert *all* FK tables early * Fix bug 933147 Security group trigger notifications * Fixes nova-volume support for multiple luns * Normalize odd date formats * Remove all uniqueness constraints in migration 76 * Add RPC serialization checking, fix exposed problems * Don't send a SQLAlchemy model over rpc * Adds back e2fsck exit code checking * Syncs vncviewer mouse cursor when connected to Windows VMs * Backslash continuations (nova.tests) * The security_group name should be an XML attribute * Core modifications for future zones service * Remove instance_get stubs from server action tests * removed unused method and added another test * Enables hairpin_mode for virtual bridge ports, allowing NAT reflection * Removed zones from api and distributed scheduler * Fix bug 929427 * Tests for a melange_ipam_lib, who is missing tests * Create a flag for force_to_raw for images * Resolve bug/927714 -- get instance names from db * Fix API extensions documentation, bug 931516 * misc networking fixes * Print friendly message if no floating IPs exist * Catch httplib.HTTPException as well * Expand Quantum Manager Unit Tests + Associated Fixes * bw_usage takes a MAC address now * Adding tests for NovaException printing * fix a syntax error in libvirt.attach_volume() with lxc * Prevent Duplicate VLAN IDs * tests: fix LdapDNS to allow running test_network in isolation * Fix the description of the --vnc_enabled option * Different exit code in new versions of iscsiadm * improve injection diagnostics when nbd unavailable. Bug 755854 * remove unused nwfilter methods and tests * LOG.exception only works while in an exception handler * _() works best with string literals * Remove unnecessary constructors for exceptions * Don't allow EC2 removal of security group in use * improve stale libvirt images handling fix. Bug 801412 * Added resize support for Libvirt/KVM * Update migration 076 so it supports PostgreSQL * Replace ApiError with new exceptions * Simple way of returning per-server security groups * Declare deprecated auth flag before its used * e2fsck needs -y * Standardize logging delaration and use * Changing nova-manage error message * Fix WADL/PDF docs referenced in describedby links * bug 931604: improve how xenapi RRD records are retrieved * Resolve bug/931794 -- add uuid to fake * Use new style instance logging in compute manager * clean pyc files before running unit tests * Adding logging for 500 errors * typo fix * run_tests.sh fix * get_user behavior in ldapdriver * Fsck disk before removing journal * Don't query database with an empty list for IN clause * Use stubs in libvirt/utils get_fs_info test * Adding (-x | --stop) option back to runner.py * Remove duplicate variable * Fixing a unicode related metadata bug * bug 931356: nova-manage prints libvirt related warnings if libvirt isn't installed * Make melange_port an integer * remove a private duplicate function * Changes for supporting fast cloning on Xenserver. Implements blueprint fast-cloning-for-xenserver 1. use_cow_images flag is reused for xenserver to check if copy on write images should be used. 2. image-id is used to tag an image which has already been streamed from glance. 3. If cow is true, when an instance of an image is created for the first time on a given xenserver, the image is streamed from glance and copy on write disk is created for the instance. 4. For subsequent instance creation requests (of the same image), a copy on write disk is created from the base image that is already present on the host. 5. If cow is false, when an instance of an image is created for the first time on a host, the image is streamed from glance and its copy is made to create a virtual disk for the instance. 6. For subsequent instance creation requests, a copy of disk is made for creating the disk for the instance. 7. Snapshot creation code was updated to handle cow=true. Now there can be upto 3 disks in the chain. The base disk needs to be uploaded too. 8. Also added a cache_images flag. Depending on whether the flag is turned on on not, images will be cached on the host * Completes fix for LP #928910 - libvirt performance * Add some more comments to _get_my_ip() * remove unused and buggy function from S3ImageService * Fix minor typo in runner.py * Remove relative imports from scheduler/filters * Converting db tables to utf8 * remove all instance_type db lookups from network * Remedies LP Bug #928910 - Use libvirt lookupByName() to check existence * Force imageRef to be a string * Retry on network failure for melange GET requests * Handle network api failures more gracefully * Automatic confirmation of resizes on libvirt * Fix exception by passing timeout as None * Extend glance retries to show() as well * Disable ConfigParser interpolation (lp#930270) * fix FlatNetworkTestCase.test_get_instance_nw_info * remove unused and buggy function from baremetal proxy * Remove unused compute_service from images controller * Backslash continuations (nova.virt.baremetal) * fixed bug 928749 * Log instance id consistently inside the firewall code * Remove the last of the gflags shim layer * Fix disk_config typo * Pass instance to log messages * Fix logging in xenapi vmops * Ensures that hostId's are unique * Fix confirm_resize policy handling * optimize libvirt image cache usage * bug 929428: pep8 validation on all xapi plugins * Move translations to babel locations * Get rid of distutils.extra * Backslash continuations (network, scheduler) * Remove unnecessary use of LoopingCall in nova/virt/xenapi/vm_utils.py * Stop using LoopingCall in nova.virt.xenapi_conn:wait_for_task() * Handle refactoring of libvirt image caching * linux_net: Also ignore shell error 2 from ip addr * Consistently update instance in nova/compute/manager.py * Use named logger when available * Fix deprecated warning * Add support for LXC volumes * Added ability to load specific extensions * Add flag to include link local in port security * Allow e2fsck to exit with 1 * Removes constraints from instance and volume types * Handle service failures during finish_resize gracefully * Set port security for all allocated ips * Move connection pool back into impl_kombu/qpid * pep8 check on api-paste.ini when using devstack * Allows test_virt_drivers to work when run alone * Add an alias to the ServerStartStop extension * tests.integrated fails with devstack * Backslash continuations (nova.virt) * Require newer versions of SA and SA-Migrate * Optimizes ec2 keystone usage and handles errors * Makes sure killfilter doesn't raise ValueError * Fixes volume snapshotting issues and tests * Backslash continuations (misc.) * nova-rootwrap: wait() for return code before exit * Fix bug 921814 changes handling of adminPass in API * Send image properties to Glance * Check return code instead of output for iscsiadm * Make swap default to vdb if there is no ephemeral * Handle --flagfile by converting to .ini style * Update cfg from openstack-common * Fix xvpvncproxy error in nova-all (lp#928489) * Update MANIFEST.in to account for moved schemas * Remove ajaxterm from Nova * Adding the request id to response headers. Again * Update migration to work when data already exists * Fix support for --flagfile argument * Implements blueprint heterogeneous-tilera-architecture-support * Add nova/tests/policy.json to tarball * Fix quantum client filters * Store the correct tenant_id/project_id * dont show blank endpoint headers * Pass in project_id in ext. authorizer * Fix _poll_bandwidth_usage if no network on vif * Fix nova.virt.firewall debugging message to use UUID * Fix debugging log message to print instance UUID * mkfs takes vfat, not fat32 * Pass partition into libvirt file injection * bug 924266: connection_type and firewall_driver flags mismatch * bug 927507: fix quantum manager get_port_by_attachment * Fix broken flag in test_imagecache * Don't write a dns directive if there are no dns records in /etc/network/interfaces * Imported Translations from Launchpad * Backslash continuations (nova.db) * Add initiator to initialize_connection * Allows nova to read files as root * Re-run nova-manage under sudo if unable to read conffile * Fix status transition when reverting resize * Adds flags for href prefixes * X_USER is deprecated in favor of X_USER_ID * Move cfg to nova.openstack.common * Use Keystone Extension Syntax for EC2 Creds * Remove duplicate instances_path option * Delete swap VDI if not used * Raise ApiError in response to InstanceTypeNotFound * Rename inst in _create_image, and pass instance to log msgs * Fix bug #924093 * Make sure tenant_id is populated * Fix for bug 883310 * Increased coverage of nova/auth/dbdriver.py to 100%. Fixes 828609 * Make crypto use absolute imports * Remove duplicate logging_debug_format option * blueprint nova-image-cache-management phase1 * Set rescue instance hostnames appropriately * Throw an user error on creating duplicate keypairs Fixes bug 902162 * Fixes uuid lookup in virtual interfaces extension * Add comments to injected keys and network config * Remove hard coded m1.tiny behavior * Fix disassociation of fixed IPs when using FlatManager * Provides flag override for vlan interface * remove auto fsck feature from file injection. Bug 826794 * DRYing up Volume/Compute APIRouters * Excise M2Crypto! * Add missing dev. Fixes LP: #925607 * Capture bandwidth usage data before resize * Get rid of DeprecationWarning during db migration * Don't block forever for rpc.(multi)call response * Optionally disable file locking * Avoid weird test error when mox is missing * fix stale libvirt images on download failure. Bug 801412 * cleanup test case to use integers not strings * Respect availability_zone parameter in nova api * Fix admin password skip check * Add support for pluggable l3 backends * Improve dom0 and template VM avoidance * Remove Hyper-V support * Fix logging to log correct filename and line numbers * Support custom routes for extensions * Make parsing of usage stats from XS more robust * lockfile.FileLock already appends .lock * Ties quantum, melange, and nova network model * Make sure multiple calls to _get_session() aren't nested * bug 921087: i18n-key and local-storage hard-coded in xenapi * optimize libvirt raw image handling. Bug 924970 * Boto 2.2.x failes. Capping pip-requires at 2.1.1 * fixed bug 920856 * Expand policies for admin_actions extension * Correct checking existence of security group rule * Optionally pass a instance uuid to log methods * remove unsupported ec2 extensions * Fix VPN ping packet length * Use single call in ExtendedStatus extension * Add mkswap to rootwrap * Use "display_name" in "nova-manage vm list" * Fix broken devref docs * Allow for auditing of API calls * Use os.path.basename() instead of string splitting * Remove utils.runthis() * Empty connection pool after test_kombu * Clear out RPC connection pool before exit * Be more explicit about emptying connection pool * fixes melange ipam lib * bug 923798: On XenServer the DomU firewall driver fails with NotImplementedError * Return instancesSet in TerminateInstances ec2 api * Fix multinode libvirt volume attachment lp #922232 * Bug #923865: (xenapi driver)instance creation fails if no guest agent is avaiable for admin password configuration * Implementation of new Nova Volume driver for SolidFire ISCSI SAN * Handle kepair delete when not found * Add 'all_tenants' filter to GET /servers * Use name filter in GlanceImageService show_by_name * Raise 400 if bad kepair data is provided * Support file injection on boot w/ Libvirt * Refactor away the flags.DEFINE_* helpers * Instances to be created with a bookmark link * fix `nova-manage image convert` exception * Added validation of name when creating a new keypair * Ignore case in policy role checks * Remove session arg from sm_backend_conf_update * Remove session arguments from db.api * Add a note explaining why unhandled exceptions shouldn't be returned to users * Remove fetching of networks that weren't created via nova-manage * uses the instance uuid in libvirt by introducing a new variable 'uuid' for the used template instead of using a random uuid in libvirt * Fixing a rebuild race condition bug * Fixes bug 914418 * Remove LazySerializationMiddleware * Bug #921730: plugins/xenserver/xenapi/etc/xapi.d/plugins/objectstore no longer in use * Adding live migration server actions * bug 921931: fix Quantum Manager VM launch race condition * Fix authorization checks for simple_usage.show * Simplify somewhat complicated reduce() into sum() * Ignore connection_type when no instances exist * Add authorization checks to flavormanage extension * rootwrap: Fix KillFilter matching * Fix uptime calculation in simple_usage * Fixing rebuilds on libvirt, seriously * Don't pass filter_properites to managers * Fixing rebuilds on libvirt * Fix bug 921715 - 'nova x509-create-cert' fails * Return 403 instead of 401 when policies reject * blueprint host-aggregates: OSAPI extensions * blueprint host-aggregates: OSAPI/virt integration, via nova.compute.api * Fixes bug 921265 - i'nova-manage flavor create|list' * Remove unused flags.Help*Flag * Convert vmwareapi code to UNIX style line endings * Blueprint xenapi-provider-firewall and Bug #915403 * Adds extension for retrieving certificates * Add os-start/os-stop server actions to OSAPI * Create nova cert worker for x509 support * Bug #916312: nova-manage network modify --network flag is inconsistent * Remove unused nova/api/mapper.py * Add nova.exception.InvalidRPCConnectionReuse * Add support for Qpid to nova.rpc * Add HACKING compliance testing to run_test.sh * Remove admin_only ext attr in favor of authz * usage: Fix time filtering * Add an API extension for creating+deleting flavors * extensions: Allow registering actions for create + delete * Explicitly encode string to utf8 before passing to ldap * Make a bunch of dcs into single-entry lists * Abstract out _exact_match_filter() * Adds a bandwidth filter DB call * KVM and XEN Disk Management Parity * Tweak api-paste.ini to prepare for a devstack change * Remove deprecated serialization code * Add affinity filters updated to use scheduler_hints and have non-douchey names * Do not output admin_password in debug logs * Handle error in associate floating IP (bug 845507) * Brings back keystone middleware * Remove sensitive info from rpc logging * Error out instance on set password failure * Fixed limiting for flavors * Adds availability zone filter * Fixes nova-manage fixed list * API version check cleanups * ComputeNode Capacity support * blueprint host-aggregates: maintenance operations to host OSAPI exts * Add a specific filter for kill commands * Fix environment passing in DnsmasqFilter * Cleanups for rootwrap module * Fix 'nova-manage config list' * Add context and request spec to filter_properties * Allow compute manager prep_resize to accept kwargs * Adds isolated hosts filter * Make start_instance cast directly to compute host * Refactor compute api messaging calls to compute manager * Refactor test_scheduler into unit tests * Forgot to update chance scheduler for ignore_hosts change * Add SchedulerHints compute extension * Add floating IP support to Quantum Manager * Support filter based on CPU core (over)allocation * bug 917397 * Add option to force hosts to scheduler * Change the logic for deleting a record dns_domains * Handle FlavorNotFound on server list w/ filter * ERROR out instance if unrescue fails * Fix xenapi rescue without swap * Pull out ram_filter into a separate filter * pass filter_properties into scheduling requests for run_instance * Fixes bug #919390 - Block Migration fails when keystone is un use * Fix nova-manage floating list (fixes bug 918804) * Imported Translations from Launchpad * scheduler host_manager needs service for filters * Allow Quantum Manager to run in "Flat" mode * aws/ec2 api validation * Fix for bug 918502 * Remove deprecated extension code * Validating image id for rebuild * More cleanup of Imports to match HACKING * chmod nova-logspool * nova/network: pass network_uuid to linuxnet_interface_driver and vif driver * Clean up crypto.py * Fix missing imports and bad call caught by pyflakes * Clarify error messages for admin passwords * Log uuid when instances fail to spawn * Removed references to FLAGS.floating_ip_dns_domains * Removed some vestigial default args from DNS drivers * Allow config of vncserver_proxyclient_address * Rename 'zone' to 'domain.' * disk_config extension now uses OS prefix * Do not write passwords to verbose logs. bug 916167 * Automatically clean up DNS when a floating IP is deallocated * Fix disassociating of auto assigned floating ips * Cleanup Imports to match HACKING guidelines * Added an LDAP/PowerDNS driver * Add dns domain manipulation to nova * fixes bug lp914962 * Fixed bug 912701 * Fix bug #917615 * Separate scheduler host management * Set instance_ref property when creating snapshots * Implements blueprint vnc-console-cleanup * Rebuild/Resize support for disk-config * Allow instances in 'BUILD' state to be deleted * Stop allowing blank image names on snapshot/backup * Only update if there are networks to update * Drop FK constraint if it exists in migration 064 * Fix an error that prevents message from getting substituted * blueprint host-aggregates * Add missing scripts to setup.py (lp#917676) * Fixes bug 917128 * Clean up generate fingerprint * Add policy checking to nova.network.api.API * Add default policy rule * Super is not so super * Fixed the log line * Add tests for volume list and detail through new volume api, and fix error that the tests caught * Typofix for impl_kombu * Refactoring logging _log function * Update some extensions (1) * DECLARE osapi_compute_listen_port for auth manager * Increase robustness of image filtering by server * Update some extensions (2) * Implement BP untie-nova-network-models * Add ipv4 and ipv6 validation * greenlet version inconsistency * Add policy checks to Volume.API * Remove unused extension decorator require_admin * Fix volume api typo * Convert nova.volume.api.API to use volume objects * Remove a whole bunch of unused imports * have all quota errors return an http 413 * This import is not used * Refactor request and action extensions * Prefixing the request id with 'req-' to decrease confusion when looking at logs * Fixing a bug that was causing the logging to display the context info for the wrong user. bug: 915608 * Modify the fake ldap driver to fix compatibility * Create an instance DNS record based on instance UUID * Implements blueprint separate-nova-volumeapi * Implement more complete kombu reconnecting * First implementation of bp/live-migration-resource-calc * Remove 'status' from default snapshot properties * Clean up disk_format mapping in xenapi.vm_utils * Remove skipping of 2 tests * Make authz failures use proper response code * Remove compute.api.API.add_network_to_project * Adds test for local.py * Fix policy import in nova.compute.api * Remove network_api from Servers Controller * minor fix in comment * Updates linux_net to ignore some shell errors * Add policy checks to Compute.API * Ensure nova is compatible with WebOb 1.2+ * improve handling of the img_handlers config list * Unbreak start instance and fixes bug 905270 * catch InstanceInvalidState in more places * Fix some cfg test case naming conflicts * Remove 'location' from GlanceImageService * Makes common/cfg.py raise AttributeError * Call to instance_info_cache_delete to use uuid * Bug #914907: register_models in db/sqlalchemy/models.py references non-existent ExportDevice * Update logging in compute manager to use uuids * Do not overwrite project_id from request params * Add optional revision field to version number * Imported Translations from Launchpad * nova-manage floating ip fixes * Add a modify function to the floating ip dns api * Adding the request id to response headers * Add @utils.deprecated() * Blueprint xenapi-security-groups * Fix call to compute_api.resize from _migrate * Fix metadata mapping in s3._s3_parse_manifest * Fix libguestfs operation with specified partitions * fix reboot_instance typo * Fix bad test cases in smoketest * fix bug 914049: private key in log * Don't overwrite local context on elevated * Bug 885267: Fix GET /servers during instance delete * Adds support for floating ip pools * Adds simple policy engine support * Refactors utils.load_cached_file * Serialization, deserialization, and response code decorators * Isolate certain images on certain hosts * Workaround bug 852095 without importing mox * Bug #894683: nova.service does not handle attribute specific exceptions and client hangs * Bug #912858: test_authors_up_to_date does not deal with capitalized names properly * Adds workaround check for mox in to_primitive * preload cache table and keep it up to date * Use instance_properties in resize * Ensure tests are python 2.6 compatible * Return 409s instead of 500s when deleting certain instances * Update HACKING.rst * Tell users what is about to be installed via sudo * Fix LP912092 * Remove small unneeded code from impl_kombu * Add missing space between XML attributes * Fix except format to match HACKING * Set VLAN MTU size when creating the vlan interface * Add instance_name field to console detail command which will give the caller the necessary information to actually connect * Fix spelling of variable * Remove install_requires processing * Send event notifications for suspend and resume * Call mkfs with the correct order of arguments * Fix bug 901899 * Fix typo in nova/rootwrap/compute.py. Fixes LP: #911880 * Make quantum_use_dhcp falsifiable * Fixing name not defined * PEP8 type comparison cleanup * Add cloudpipe/vpn api to openstack api contrib * Every string does not need to be internationalized * Adds running_deleted_instance_reaper task * libvirt: implements boot from ISO images * Unused db.api cleanup * use name gateway_v6 instead of gateway6 * PEP8 remove direct type comparisons * Install a good version of pip in the venv * Bug #910045: UnboundLocalError when failing to get metrics from XenAPI hosts * re-raising exceptions fix * use dhcp_lease_time for dnsmasq. Fix bug 894218 * Clean up pylint errors in top-level files * Ensure generated passwords meet minimum complexity * Fixing novaclient_converter NameError * Bug 820059: bin/nova-manage.py VpnCommands.spawn calls non-existant method VpnCommands._vpn_for - fixed * Bug 751229: Floating address range fixed * Brings some more files up to HACKING standards * Ensure queue is declared durable so messages aren't dropped * Create notification queues as durable * Adding index to instances project_id column * Add an API for associating floating IPs with DNS entries * 'except:' to 'except Exception:' as per HACKING * Adds EC2 ImportKeyPair API support * Take the availability zone from the instance if available * Update glance Xen plugin w/ purge props header * Converting zones into true extension * Convering /users to admin extension * Add a DECLARE for dhcp_doamin flag to metadata handler * Support local target for Solaris, use 'safe' command-line processing * Add 'os-networks' extension * Converting accounts resource to admin extension * Add exit_code, stdout, stderr etc to ProcessExecutionException * Fixes LP bug #907898 * Switch extension namespace * Refactor Xen Vif drivers. Fixes LP907850 * Remove code in migration 064 to drop an fkey that does not exist. Fixes LP bug #907878 * Help clarify rpc API with docs and a bit of code * Use SQLAlchemy to drop foreign key in DB migrate * Move createBackup server action into extension * Bug#898257 support handling images with libguestfs * Bug#898257 abstract out disk image access methods * Move 'actions' subresource into extension * Make os-server-diagnostics extension admin-only * Remove unneeded broken test case * Fix spelling typos in comments * Allow accessIPv4 and accessIPv6 on rebuild action * Move 'diagnostics' subresource to admin extension * Cleaning up imports in compute and virt * Cleaning up imports in nova.api * Make reroute_compute use functools.wraps. Fixes LP bug #906945 * Removing extra code from servers controller * Generate instance faults when instance errors * Clarify NoValidHost messages * Fix one last bug in os-console-output extension * Fix os-console-output extension integration * Set Location header in server create and rebuild actions * Consistently use REBUILDING vm_state * Improve the minidns tests to handle zone matching * Remove unused FLAGS.block_size * Make UUID format checking more correct * Set min_ram and min_disk on snapshot * Add support for port security to QuantumManager * Add a console output action to servers * Creating mechanism that loads Admin API extensions * Document return type from utils.execute() * Renamed the instance_dns_driver to dns_driver for more general use * Specify -t rsa when calling ssh-keygen * create_export and ensure_export should pass up the return value, to update the database * Imported Translations from Launchpad * avoid error and trace on dom.vcpus() in lxc * Properly passes arg to run_iscsiadm to fix logout * Makes disassociate by timeout work with multi-host * Call get_instance_nw_info with elevated context, as documented in nova/network/manager.py * Adds missing joinedload for vif loading * missing comments about extensions to ec2 * Pull resource extensions into APIRouter * IPAM drivers aren't homogenous bug 903230 * use env to find 'false'. Fix for OS X * Fix scheduler error handler * Starting work on exposing service functionality * Bugfix for lp904932 * Ensure fkey is dropped before removing instance_id * Fixes bug 723235 * nova.virt.libvirt.firewall: set static methods * Expose Asynchronous Fault entity in the OSAPI * Fix nova-manage flags declaration * Remove useless flags declaration * Remove useless input_chain flags * Make XenAPI agent configuration synchronous * Switch disk_config extension to use one DB query * Update utils.execute so that check_exit_code handles booleans. Fixes LP bug #904560 * Rename libvirt_uri to uri * Make libvirt_uri a property * Making pep8 output less verbose * Refactors handling of detach volume * Fixes bug 887402 * Bug 902626 * Make various methods static * Pass additional information from nova to Quantum * Refactor vm_state and task_state checking * Updates OVS rules applied to IPv4 VIFs * Follow-on to I665f402f to convert rxtx_quota to rxtx_factor in nova-manage and a couple of tests * Make sure the rxtx_cap is used to set qos info * Fix some errors found by pychecker * Fix tgtadm off by one error. Fixes bug #871278 * Sanitize EC2 manifests and image tarballs * floating-ip: return UUID of instance rather than ID * Renaming instance_actions.instance_id column to instance_uuid. blueprint: internal-uuids * Fix for bug 902175 * fixed typos. removed an unused import * Vm state management and error states * Added support for creating nova volume snapshots using OS API * Fix error when subnet doesn't have a cidr set * bug 899767: fix vif-plugging with live migration * Fixing snapshot failure task_state * Imported Translations from Launchpad * Moves find config to utils because it is useful * fixed_ips by vif does not raise * Add templates for selected resource extensions * Fix network forwarding rule initialization in QuantumManager * _check_image_size returns are consistent * Fixed the perms on the linux test case file so that nose will run it * Add preparation for asynchronous instance faults * Add templates for selected resource extensions * Use more informative message when violating quota * Log it when we get a lock * removing TODO as we support Windows+XenServer and have no plans to support quiesce or VSS at the moment * Adds network model and network info cache * Rename .nova-venv to .venv * revert using git for novaclient * Port nova.flags to cfg * Make cfg work on python 2.6 * Relax novaclient and remove redis dependency * Relax dependency on boto 1.9b and nova-adminclient * Make QuantumManager no longer depend on the projects table * Imported Translations from Launchpad * Fix for bug 901459 * Updated the test runner module with a sys.path insert so that tests run in and outside a virtual environment * Add ability to see deleted and active records * Set instance['host'] to the original host value on revert resize * Fix race condition in XenAPI when using .get_all * Clean up snapshot metadata * Handle the 'instance' half of blueprint public-and-private-dns * Refactors periodic tasks to use a decorator * Add new cfg module * Remove extra_context support in Flags * A more secure root-wrapper alternative * Remove bzr related code in tests/test_misc * Change cloudServersFault to computeFault * Update associate_floating_ip to use instance objs * vm_state:=error on driver exceptions during resize * Use system M2Crypto package on Oneiric, bug 892271 * Update compute manager so that finish_revert_resize runs on the source compute host. Fixes bug #900849 * First steps towards consolidating testing infrastructure * Remove some remnants of ChangeLog and vcsversion.py generation * Pass '-r' option to 'collie cluster status' * Remove remnants of babel i18n infrastructure * Fixes a typo preventing attaching RBD volumes * Remove autogenerated pot file * Make admin_password keyword in compute manager run_instance method match what we send in the compute API. Fixes bug #900591 * remove duplicate netaddr in nova/utils * cleanup: remove .bzrignore * add index to instance_uuid column in instances * Add missing documentation for shared folder issue with unit tests and Python lock file * Updated nova-manage to work with uuid images Fixes bug 899299 * Add availabity_zone to the refresh list * Document nova-tarball Jenkins job * Adds extension documentation for some but not all extensions * Add templates for selected resource extensions * EC2 rescue/unrescue is broken, bug 899225 * Better exception handling during run_instance * Implement resize down for XenAPI * Fix for EC2 API part of bug 897164 * Remove some unused imports from db * Replacing instance id's in in xenapi.vmops and the xen plugin with instance uuids. The only references to instance id's left are calls to the wait_for_task() method. I will address that in another branch. blueprint: internal-uuids * Convert get_lock in compute to use uuids * Fix to correctly report memory on Linux 3.X * Replace more cases of instance ids with uuids * Make run_instance only support instance uuids * Updates simple scheduler to allow strict availability_zone scheduling * Remove VIF<->Network FK dependancy * Adds missing image_meta to rescue's spawn() calls * Bug #898290: iSCSI volume backend treats FLAGS.host as a hostname * split rxtx_factor into network and instance_type * Fixing get_info method implementations in virt drivers to accept instance_name instead of instance_id. The abstract class virt.ComputeDriver defines get_info as: def get_info(self, instance_name). blueprint: internal-uuids * Fixes bug 767947 * Remove unused ec2.action_args * Fix typo: priviledges -> privileges * Bug #896997: nova-vncproxy's flash socket policy port is not configurable * Convert compute manager delete methods to objects * Removing line dos line endings in vmwareapi_conn.py * reboot & rebuild to use uuids in compute manager * Fix for bug 887712 * Add NAT/gateway support to QuantumManager * Fix QuantumManager update_dhcp calls * Fix RPC responses to allow None response correctly * Use uuids for compute manager agent update * power_on/power_off in compute manager to use uuids * Use uuids for file injection * removed logic of throwing exception if no floating ip * Adding an install_requires to the setup call. Now you can pip install nova on a naked machine * Removing obsolete bzr-related clauses in setup.py * Makes rpc_allocate_fixed_ip return properly * Templatize extension handling * start/stop in compute manager to use uuids * Updating {add,remove}_fixed_ip_from_instance in compute.api and compute.manager to use instance uuid instead of instance id. blueprint internal-uuids * Use instance uuids for consoles and diagnostics * Fixes bug 888649 * Fix Bug #891718 * Bug #897091: "nova actions" fails with HTTP 400 / TypeError if a server action has been performed * Bug #897054: stack crashes with AttributeError on e.reason if the server returns an error * Refactor a few things inside the xenapi unit tests * New docs: unit tests, Launchpad, Gerrit, Jenkins * Fix trivial fourth quote in docstring * Fix deprecation warnings * Fix for bug 894431 * Remove boot-from-volume unreachable code path (#894172) * reset/inject network info in compute to use uuid * Updating set_admin_password in compute.api and compute.manager to use instance uuids instead of instance ids. Blueprint internal-uuids * rescue/unrescue in compute manager to use uuids * Updated development environment docs * Call df with -k instead of -B1 * Make fakelibvirt python2.6 compatible * Clean up compute api * Updating attach/detach in compute.api and compute.manager to use instance uuid instead of instance id. blueprint internal-uuids * Change compute API.update() to take object+params * Use XMLDictSerializer for resource extensions * Updating {add,remove}_security_group in compute.api to use instance uuids instead of instance ids. blueprint internal-uuids * Extend test_virt_driver to also test libvirt driver * poll_rebooting_instances passes an instance now * Revert "Fixes bug 757033" * Put instances in ERROR state when scheduler fails * Converted README to RST format * Workaround xenstore race conditions * Fix a minor memory leak * Implement schedule_prep_resize() * Fixes bug 886263 * snapshot/backup in compute manager to use uuids * Fixes bug 757033 * Converting tests to use v2 * lock/unlock in compute manager to use uuids * suspend/resume in compute manager to use uuids * Refactor metadata code out of ec2/cloud.py * pause/unpause in compute manager to use uuids * Creating new v2 namespace in nova.api.openstack * Add a "libvirt_disk_prefix" flag to libvirt driver * Added RST docs on how to use gettext * Refactoring/cleanup of some view builders * Convert remaining calls to use instance objects * Make run instances respect availability zone * Replacing disk config extension to match spec * Makes sure gateways forward properly * Convert security_group calls to use instance objs * Remove hostname update() logic in compute.API * Fixes bug 890206 * Follow hostname RFCs * Reference Ron Pedde's cleanup script for DevStack * Remove contrib/nova.sh and other stale docs * Separate metadata api into its own service * Add logging, error handling to the xenstore lib * Converting lock/unlock to use instance objects * Deepcopy optparse defaults to avoid re-appending multistrings (#890489) * install_venv: apply eventlet patch correctly with python 2.7 (#890461) * Fix multistring flags default handling (#890489) * Fixing image create in S3ImageService * Defining volumes table to allow FK constraint * Converting network methods to use instance objects * Handle null ramdisk/kernel in euca-describe-images * Bind engine to metadata in migration 054 * Adding downgrade for migration 57 plus test * Log the URL to an image_ref and not just the ID * Converting attach_volume to use instance object * Converting rescue/unrescue to use instance objects * Converting inject_file to use instance objects * Bug #888719: openvswitch-nova runs after firstboot scripts * Bug #888730: vmwareapi suds debug logging very verbose * Converting consoles calls to use instance objects * Converting fixed ip calls to use instance objects * Convert pause/unpause, sus/res to use instance obj * fix rebuild sha1 not string error * Verify security group parameters * Converting set password to use instance objects * Converting snapshot/backup to use instance objects * Refactor of QuotaError * Fix a notification bug when creating instances * Converting metadata calls to use instance objects * nova-manage: exit with status 1 if an image registration fails * Converting start and stop to use instance objects * Converting delete to use instance objects * Capture exceptions happening in API layer * Removed some old cruft * Add more error handling to glance xenapi plugin * Fixes bug 871877 * Replace libvirt driver's use of libxml2 with ElementTree * Extend fake image service to let it hold image data * Bug #887805 Error during report_driver_status(): 'LibvirtConnection' object has no attribute '_host_state' * More spelling fixes inside of nova * Fixes LP878319 * Fix exception reraising in volume manager * Adding Chuck Short to .mailmap * Undefine libvirt saved instances * Split compute api/manager tests within module * Workaround for eventlet bug with unit tests in RHEL6.1 * Apply M2Crypto fix for all Fedora-based distributions * Fix failing libvirt test (bug 888250) * Spelling fixes in nova/api comments * Get MAC addresses from Melange * Refactor logging_error into utils * Converting rebuild to use instance objects * Converting resize to use instance objects * Converting reboot to use instance objects * Reducing the number of compute calls to Glance essex-1 ------- * Remove duplicate method (2) * Move tests for extensions to contrib directory * Remove duplicate method * Remove debugging print * Adds extended status information via the Admin API to the servers calls * Wait until the instance is booted before setting VCPU_params * changes logging reference in zone_manager.py * Exception cleanup in scheduler * Fixing create_vbd call per VolumeHelper refactoring * Switch glance XenAPI plugin to use urllib2 * Blueprint lasterror * Move failed instances to error state * Adding task_states.REBOOTING_HARD * Set task state to UPDATING_PASSWORD when needed * Clean up docstrings for faults.Fault and it's usage * Fix typo in docstring * Add DHCP support to the QuantumManager and break apart dhcp/gateway * Change network delete to delete by uuid or cidr * Bug #886353: Faults raised by OpenStack API Resource handlers fail to be reported properly * Define faults.Fault.__str__ * Speed up tests a further 35 seconds * Removing duplicate kernel/ramdisk check in OSAPI * Remove unnecessary image list in OSAPI * Add auto-reloading JSON config file support to scheduler * Change floating-snat to float-snat * Allows non-admin users to use simple scheduler * Skip libvirt tests when libvirt not present * Correcting libvirt tests that were failing * Fix for launchpad bug #882568 * Gracefully handle Xen resize failure * Don't update database before resize * fix bug 816630 * Set nova-manage to executable Fixes LP885778 * Fixing immediate delete after boot on Libvirt * exception.KeypairNotFound usage correction * Add local storage of context for logging * Reserve memory/disk for dom0/host OS * Speed up tests yet another 45 seconds * APIs should not wait on scheduler for builds in single zone deployment * Added some documentation to db.api module docstring * Updated rst docs to include threading model * Adds documentation for Xen Storage Manager * Xen Storage Manager Volume Driver * Drop extra XML tests and remove _json suffix from names * Fix empty group_id to be considered invalid * Stop nova-ajax-console-proxy configuring its own logging * Bug 884863: nova logs everything to syslog twice * Log the exception when we get one * Use fat32 for Windows, linux-swap for Linux swap partitions * Fix KeyError when passed unknown format of time * flatten distributed scheduler * Bug #884534: nova-ajax-console-proxy crashes on shutdown * Bug 884527: ajax_console_proxy_port needs to be an integer * Too much information is returned from POST /servers * Disable SQLite synchronous mode during tests * Creating uuid -> id mapping for S3 Image Service * Fix 'begining' typo in system usage data bug 884307 * Fixes lp883279 * Log original dropped exception when a new exception occurs * Fix lp:861160 -- newly created network has no uuid * Bug #884018: "stack help" prints stacktrace if it cannot connect to the server * Optional --no-site-packages in venv * fixes bug 883233. Added to Authors fix typo in scheduler/driver.py assert_compute_node_has_enough_memory * Updated NoAuth to account for requests ending in / * Retry failed SQL connections (LP #876663) * Removed autogenerated API .rst files * Fix to a documentation generation script * Added code to libvirt backend to report state info * Adding bulk create fixed ips. The true issue here is the creation of IPs in the DB that are not currently used(we are building the entire block). This fix is just a bandaid, but it does cut ~25 seconds off of the quantum tests on my laptop * Fix overzealous use of faults.Fault() wrapper * Revert how APIs get IP address info for instances * Support server uuids with security groups * Support using server uuids when accessing consoles * Adding support for retrying glance image downloads * Fix deletion of instances without fixed ips * Speed up test suite by 20 seconds * Removed callback concept on VM driver methods: * Fix file injection for OSAPI rebuilds. Fixes 881649 * Replaces all references to nova.db.api with nova.db * venv: update distribute as well as pip * Fix undefined glance_host in get_glance_client * Fix concurrency of XenAPI sessions * Server metadata must support server uuids * Add .gitreview config file for gerrit * Convert instancetype.flavorid to string * Make sure networks returned from get_instance_nw_info have a label * Use UUIDs instead of IDs for OSAPI servers * Improve the liveness checking for services * Refactoring of extensions * Moves a-zone scheduling into simple scheduler * Adds ext4 and reiserfs to _mount_filesystem() * Remove nova dependency on vconfig on Linux * Upgrade pip in the venv when we build it * Fixes bug 872459 * Repartition and resize disk when marked as managed * Remove dead DB API call * Only log instance actions once if instance action logging is enabled (now disabled by default) * Start switching from gflags to optparse * Don't leak exceptions out to users * Fix EC2 test_cloud timing issues * Redirects requests from /v#.# to /v#.#/ * Chain up to superclass tearDown in ServerActionsTest * Updated RST docs: bzr/launchpad -> git/github * Refactoring nova.tests.api.openstack.test_flavors * Refactoring image and server metadata api tests * Refactoring nova.tests.api.openstack.test_servers * Refactoring nova.tests.api.openstack.test_images * Utility script that makes enforcing PEP8 within git's pre-commit hook as easy as possible * Add XML templates * Remove OSAPI v1.0 * Remove unused flag_overrides from TestCase * Cancel any clean_reboot tasks before issuing the hard_reboot * Makes snapshots work for amis. Fixes bug 873156 * Xenapi driver can now generate swap from instance_type * Adds the ability to automatically issue a hard reboot to instances that have been stuck in a 'rebooting' state for longer than a specified window * Remove redundant, dead code * Added vcpu_weight to models * Updated links in the README that were out of date * Add INPUT chain rule for EC2 metadata requests (lp:856385) * Allow the user to choose either ietadm or tgtadm (lp:819997) * Remove VolumeDriver.sync_exec method (lp:819997) * Adds more usage data to Nova's usage notifications * Fixes bug 862637 -- make instance_name_template more flexible * Update EC2 get_metadata calls to search 'deleted': False. Fixes nova smoke_tests!!! * Use new ip addr del syntax * Updating HACKING to make split up imports into three blocks * Remove RateLimitingMiddlewareTest * Remove AoE, Clean up volume code * Adds vcpu_weight column to instance_types table and uses this value when building XenServer instances * Further changes to the cleaner * Remove duplicated functions * Reference orphaned_instance instead of instance * Continue to the next iteration of the loop if an instance is not found * Explicit errors on confirm/revertResize failures * Include original exception in ClassNotFound exception * Enable admin access to EC2 API server * Make sure unknown extensions return 404 * Handle pidfile exception for dnsmasq * Stop returning correct password on api calls * Restructure host filtering to be easier to use * Add support for header version parameter to specify API version * Set error state on spawn error + integration test * Allow db schema downgrades * moved floating ip db access and sanity checking from network api into network manager added floating ip get by fixed address added fixed_ip_get moved floating ip testing from osapi into the network tests where they belong * Adds a script that can automatically delete orphaned VDIs. Also had to move some flags around to avoid circular imports * Improve access check on images * Updating image progress to be more granular. Before, the image progress had only 2 states, 0 and 100. Now it can be 0, 25, 50 or 100 * Deallocate ip if build fails * Ensure non-default FLAGS.logfile_mode is properly converted to an octet * Moving admin actions to extension * Fixes bug 862633 -- OS api consoles create() broken * Adds the tenant id to the create images response Location header Fixes bug 862672 * Fixes bug 862658 -- ec2 metadata issue getting IPs * Added ==1.0.4 version specifier to kombu in pip-requires to ensure tests pass in a clean venv * bug lp845714 * install_venv: pip install M2Crypto doesn't work on Fedora * install_venv: add support for distro specific code * install_venv: remove versioned M2Crypto dependency * install_venv: don't use --no-site-packages with virtualenv * install_venv: pass the --upgrade argument to pip install * install_venv: refactor out pip_install helper * Replace socat with netcat * api.ec2.admin unit tests * Fixes Bug #861293 nova.auth.signer.Signer now honors the SignatureMethod parameter for SHA1 when creating signatures * Enforce snapshot cleanup * bug 861310 * Change 'recurse_zones' to 'local_zone_only' * Fixes euca-describe-instances failing or not showing IPs * Fixes a test failure in master * Fixed bug lp850602. Adding backing file copy operation on kvm block migration * Add nova-all to run all services * Snapshots/backups can no longer happen simultaneously. Tests included * Accept message as sole argument to NovaException * Use latest version of SQLAlchemy * Fix 047 migration with SQLAlchemy 0.7.2 * Beef up nova/api/direct.py tests * Signer no longer fails if hashlib.sha256 is not available. test_signer unit test added * Make snapshots private by default * use git config's review.username for rfc.sh * Raise InsufficientFreeMemory * Adding run_test.sh artifacts to .gitignore * Make sure options is set before checking managed_disk setting. Fixes bug 860520 * compute_api create*() and schedulers refactoring * Removed db_pool complexities from nova.db.sqlalchemy.session. Fixes bug 838581 * Ensure minRam and minDisk are always integers * Call endheaders when auth_token is None. Fixes bug 856721 * Catch ImageNotFound on image delete in OSAPI * Fix the grantee group loading for source groups * Add next links to images requests * put fully qualified domain name in local-hostname * Removing old code that snuck back in * Makes sure to recreate gateway for moved ip * Fix some minor issues due to premature merge of original code * * Rework osapi to use network API not FK backref * Fixes lp854585 * Allow tenant networks to be shared with domain 0 * Use ovs-vsctl iface-to-br to look up the bridge associated with the given VIF. This avoids assuming that vifX.Y is attached to xenbrY, which is untrue in the general case * Made jenkins email pruning more resilient * Fixing bug 857712 * Adds disk config * Adding xml schema validation for /versions resource * Fix bug 856664 overLimit errors now return 413 * Don't use GitPython for authors check * Fix outstanding pep8 errors for a clean trunk * Add minDisk and minRam to OSAPI image details * Fix rfc.sh's check for the project * Add rfc.sh to help with gerrit workflow * This patch adds flavor filtering, specifically the ability to flavor on minRam, minDisk, or both, per the 1.1 OSAPI spec * Add next links for server lists in OSAPI 1.1. This adds servers_links to the json responses, and an extra atom:link element to the servers node in the xml response * Update exception.wrap_exception so that all exceptions (not just Error and NovaException types) get logged correctly * Merging trunk * Adding OSAPI tests for flavor filtering * This patch adds instance progress which is used by the OpenStack API to indicate how far along the current executing action is (BUILD/REBUILD, MIGRATION/RESIZE) * Merging trunk * Fixes lp:855115 -- issue with disassociating floating ips * Renumbering instance progress migration * Fixing tests * Keystone support in Nova across Zones * trunk merge fixup * Fix keys in ec2 conversion to make sure not to use unicode * Adds an 'alternate' link to image views per 3.10 and 3.11 of http://docs.openstack.org/cactus/openstack-compute/developer/openstack-compute-api-1.1/content/LinksReferences.html * Typo * Fixing tests * Fixing tests * make sure kwargs are strings and not unicode * Merging trunk * Adding flavor filtering * Instance deletions in Openstack are immediate. This can cause data to be lost accidentally * Makes sure ips are moved on the bridge for nodes running dnsmasq so that the gateway ip is always first * pep8 * add tests and fix bug when no ip was set * fix diverged branch * migration conflict fixed * clean up based on cerberus review * clean up based on cerberus review * Remove keystone middlewares * fix moving of ips on flatdhcp bridge * Merged trunk * merged trunk * update floating ips tests * floating ip could have no project and we should allow access * actions on floating IPs in other projects for non-admins should not be allowed * floating_ip_get_by_address should check user's project_id * Pep8 fixes * Merging trunk * Refactoring instance_type_get_all * remove keystone url flag * merge trunk, fix conflicts * remove keystone * Include 'type' in XML output * Minor cleanup * Added another unit test * Fixed unit tests with some minor refactoring * Fix the display of swap units in nova manage * Refactored alternate link generation * pep8 fixes * Added function to construct a glance URL and unit test * merge from trunk * convert images that are not 'raw' to 'raw' during caching to node * show swap in Mb in nova manage * Address Soren's comments: * clean up temp files if an ImageUnacceptable is going to be raised Note, a qemu-img execution error will not clean up the image, but I think thats reasonable. We leave the image on disk so the user can easily investigate. * Change final 2 arguments to fetch_to_raw to not start with an _ * use 'env' utility to change environment variables LC_ALL and LANG so that qemu-img output parsing is not locale dependent. Note, I considered the following, but found using 'env' more readable out, err = utils.execute('sh', '-c', 'export LC_ALL=C LANG=C && exec "$@"', 'qemu-img', 'info', path) * Add iptables filter rules for dnsmasq (lp:844935) * create disk.local the same way ephemerals are created (LP: #851145) * merge with trunk r1601 * fix call to gettext * Fixed --uuid network command in nova-manage to desc to "uuid" instead of "net_uuid" * removes warning set forth in d3 for deprecated setting of bridge automagically * Update migration 047 to dynamically lookup the name of the instance_id fkey before dropping it. We can't hard code the name of the fkey since we didn't name it explicitly on create * added to authors cuz trey said I cant patch otherwise! * Fixed --uuid network command in nova-manage to desc to "uuid" instead of "net_uuid" * merged with trunk * Update migration 047 to dynamically lookup the name of the instance_id fkey before dropping it. We can't hard code the name of the fkey since we didn't name it explicitly on create * oops, add project_id and 'servers' to next links * Fixes migration for Mysql to drop the FK on the right table * Reverted some changes to instance_get_all_by_filters() that was added in rev 1594. An additional argument for filtering on instance uuids is not needed, as you can add 'uuid: uuid_list' into the filters dictionary. Just needed to add 'uuid' as an exact_match_filter. This restores the filtering to do a single DB query * fix syntax error in exception, remove "Dangerous!" comment * merged trunk and resolved conflict * run the alter on the right table * fix unrelated pep8 issue in trunk * use dictionary format for exception message * fix a test where list order was assumed * Removed the extra code added to support filtering instances by instance uuids. Instead, added 'uuid' to the list of exact_filter_match names. Updated the caller to add 'uuid: uuid_list' to the filters dictionary, instead of passing it in as another argument. Updated the ID to UUID mapping code to return a dictionary, which allows the caller to be more efficient... It removes an extra loop there. A couple of typo fixes * Reworked the export command to be nova-manage shell export --filename=somefile * Adds the ability to automatically confirm resizes after the `resize_confirm_window` (0/disabled by default) * use '_(' for exception messages * PEP8 cleanup * convert images that are not 'raw' to 'raw' during caching to node * now raising instead of setting bridge to br100 and warning as was noted * * Remove the foreign key and backrefs tying vif<->instance * Update instance filtering to pass ip related filters to the network manager * move/update tests * Adds an optional flag to force dhcp releases on instance termination. This allows ips to be reused without having to wait for the lease to timeout * remove urllib import * Fixing case where OSAPI server create would return 500 on malformed body * Fix the issue with the new dnsmasq where it tries and fails to bind to ipv6 addresses * Merging trunk * Renaming progress migration to 47 * merge with trunk * Added unit test * Corrected the status in DB call * don't try to listen on ipv6 addresses, or new dnsmasq goes boom * make our own function instead of using urllib.urlencode since we apparently don't suppor urlencoded strings yet * Merged trunk * remove unused import * merge the sknurt * remove the polymorph * Fix typo in comment * Fixes the handling of snapshotting in libvirt driver to actually use the proper image type instead of using raw for everything. Also cleans up an unneeded flag. Based on doude's initial work * merge with trunk * removing extra newline * catching AttributeError and adding tests * Remove vestigial db call for fixed_ips * Fixes the user credentials for installing a config-drive from imageRef * Some Linux systems can also be slow to start the guest agent. This branch extends the windows agent timeout to apply to all systems * remove extra line * get the interface using the network and instance * flag typo * add an optional flag to force dhcp release using dnsmasq-utils * Fix user_id, project_id reference for config_drive with imageRefs * Fix a bug that would make spawning new instances fail if no port/protocol is given (for rules granting access for other security groups) * When swap is specified as block device mapping, its size becomes 0 wrongly. This patch make it set to correct size according to instance_type * Fix pep8 issues * fixed grant user, added stdout support * This changes the interpretation of 'swap' for an instance-type to be in MB rather than GB * Fixing list prepend * Merging trunk * create disk.local the same way ephemerals are created (LP: #851145) * Fix failing test * Authorize to start a LXC instance withour, key, network file to inject or metadata * Update the v1.0 rescue admin action and the v1.1 rescue extension to generate 'adminPass'. Fixes an issue where rescue commands were broken on XenServer. lp#838518 * pep8 * merge the trunks * update tests to return fake_nw_info that is valid for the pre_live_migrate * make sure to raise since the tests require it * Pep8 Fix * Update test_volumes to use FLAGS.password_length * Zero out the progress when beginning a resize * Adding migration progress * Only log migration info if they exist * remove getting fixed_ips directly from the db * removed unused import * Fixes libvirt rescue to use the same strategy as xen. Use a new copy of the base image as the rescue image. It leaves the original rescue image flags in, so a hand picked rescue image can still be used if desired * Fixing tests, PEP8 failures * fix permissions * Add a FakeVirDomainSnapshot and return it from snapshotCreateXML. Fixes libvirt snapshot tests * merge the trunks * Merged trunk * I am using iputils-arping package to send arping command. You will need to install this package on the network nodes using apt-get command apt-get install iputils-arping * Removed sudo from the arguments * Add a FakeVirDomainSnapshot and return it from snapshotCreateXML. Fixes libvirt snapshot tests * merge from trunk * Make sure grantee_group is eagerly loaded * Merged trunk * compute/api: swap size issue * Update exception.wrap_exception so that all exceptions (not just Error and NovaException types) get logged correctly * Removes the on-disk internal libvirt snapshot after it has been uploaded to glance * cleaned up * remove debugging * Merging trunk * Allowing resizes to the same machine * trunk merge * updates Exception.NoMoreFixedIps to subclass NovaException instead of Error * NoMoreFixedIps now subclasses NovaException instead of Error * merge trunk * was trying to create the FK when Should have been dropping * pep8 * well since sqlalchemy-migrate and sqlalchemy can't agree on what the FK is called, we fall back on just manually dropping it * tests working again * the table is the table for the reason its a table * uhh dialect doesn't exist, beavis * update comment * if no public-key is given (--key), do not show public-keys in metadata service * it merges the trunk; or else it gets the conflicts again * exceptions properly passed around now * merge with trunk at revno 1573 * add the fake_network Manager to prevent rpc calls * This makes the OS api extension for booting from volumes work. The _get_view_builder method was replaced in the parent class, but the BootFromVolume controller was not updated to use the new method * remove undedded imports and skips * pep8 fixes * Added a unit test * pass-through all other parameters in next links as well * update for the id->uuid flip * Merged trunk * Adding flavor extra data extension * Merged trunk * fix test * revert last change * Added virt-level support for polling unconfirmed resizes * build the query with the query builder * Removing toprettyxml from OSAPI xml serialization in favor of toxml * use uuids everywhere possible * make sure to use the uuid * update db api for split filterings searches * update tests * delete the internal libvirt snapshot after it is saved to glance * cleanup prints in tests * cleanup prints in tests * Add a simple test for the OS boot from volume api * get rid of debugs * Merged from trunk and resolved conflicts * Execute arping command using run_as_root=True instead of sudo * Return three rules for describe_security_groups if a rule refers to a foreign group, but does not specify protocol/port * pep8 issues * added xml support for servers_list in response with tests * Merged trunk * added servers_links in v1.1 with tests * added build_list to servers controllers and view builder and kept all old tests passing * The 1.1 API specifies that two vendor content types are allowed in addition to the standard JSON and XML content types * pep8 * tests are back * PEP8 fix * Adding progress * In the unlikely case of an instance losing a host, make sure we still delete the instance when a forceDelete is done * 0 for the instance id is False ;) * Cleanup state management to use vm_state instead of task_state Add schedule_delete() method so delete() actually does what it says it does * merge trunk * write out xml for rescue * fix up the filtering so it does not return duplicates if both the network and the db filters match * fix rescue to use the base image, reset firewall rules, and accept network_info * make sure to pass in the context * move the FakeNetworkManager into fake_network * Fix issue where floating ips don't get recreated when a network host reboots * ip tests were moved to networking * add tests * fix typo * allow matching on fixed_ip without regex and don't break so all results are reported * add case where vif may not have an instance_id associated with it * fix typo * Initial pass at automatically confirming resizes after a given window * Use the correct method to get a builder * merge trunks * pep8 * move ip filtering over to the network side * fix pep8 whitespace error * add necessary fields to flavor.rng schema * get all the vifs * get all the vifs * make sure we are grabbing out just the ids * flavor_elem.setAttribute -> flavor_elem.set, flavor -> flavor_dict * minor changes to credentials for the correct format * Don't report the wrong content type if a mapped type doesn't exist * add stubs for future tests that need to be written * Test both content types for JSON and XML * Remove unnecessary vendor content types now that they are mapped to standard content types automatically * Add copyright * Map vendor content types to their standard content type before serializing or deserializing. This is so we don't have to litter the code with both types when they are treated identically * exporting auth to keystone (users, projects/tenants, roles, credentials) * make xml-api tests pass * update variable name after merge: flavor_node -> flavor_elem * resolve conflicts / merge with trunk revno 1569 * Fixes an issue where 'invalid literal for int' would occur when listing images after making a v1.1 server snapshot (with a UUID) * fixed tests * removing toprettyxml * add attributes to xml api * Remove debugging * Update test_libvirt so that flags and fakes are used instead of mocks for utils.import_class and utils.import_object. Fixes #lp849329 * fix the test so that it fakes out the network * fix white space for pep8 * fix test_extensions test to know of new extension FlavorExtraData * add extension description for FlavorExtraData * Adding migration for instance progress * Make tests pass * no need for the instance at all or compute * bump the migration * remove unused import, make call to network api to get vifs for the instance * merge the trunk * skip a bunch of tests for the moment since we will need to rework them * remove the vif joins, some dead code, and the ability to take in some instances for filtering * allow passing in of instances already * run the instances filter through the network api first, then through the db * add get_vifs_by_instance and stub get_instance_ids_by_ip_filter * change vifs to rpc call and add instance ids by ip * Multi-NIC support for vmwareapi virt driver in nova. Does injection of Multi-NIC information to instances with Operating system flavors Ubuntu, Windows and RHEL. vmwareapi virt driver now relies on calls to network manager instead of nova db calls for network configuration information of instance. Re-oranized VMWareVlanBridgeDriver and added session parmeter to methods to use existing session. Also removed session creation code as session comes as argument. Added check for flat_inject flag before attempting an inject operation * last of the api.openstack.test_images merge fixes * pep8 fixes * trunk merge * makes sure floating addresses are associated with host on associate so they come back * Deprecate aoe in preperation for removal in essex * Only allow up to 15 chars for a Windows hostname * pep8 * deprecate aoe * Fix instance rebooting (lp847604) by correcting a malformed cast in compute.api and an incorrect method signature in the libvirt driver * Fix mismerge * make tests pass * This patch teaches virt/libvirt how to format filesystem on ephemeral device depending on os_type so that the behaviour matches with EC2's. Such behaviour isn't explicitly described in the documentation, but it is confirmed by checking realy EC2 instances. This patch introduces options virt_mkfs as multistring. Its format is --virt_mkfs== When creating ephemeral device, format it according to the option depending on os_type. This addresses the bugs, https://bugs.launchpad.net/nova/+bug/827598 https://bugs.launchpad.net/nova/+bug/828357 * Test new vendor content types as well * Only allow up to 15 chars for a Windows hostname * Split accept tests to better match the name of the test * Remove debugging print * Inject hostname to xenstore upon creation * Update test_libvirt so that flags and fakes are used instead of mocks for utils.import_class and utils.import_object. Fixes #lp849329 * interpret 'swap' to be in MB, not in GB * Actually test expected matches received * Test new content-types * This branch changes XML Serializers and their tests to use lxml.etree instead of minidom * add additional data to flavor's ViewBuilder * Inject hostname to xenstore upon creation * drop the virtual_interfaces key back to instances * - remove translation of non-recognized attributes to user metadata, now just ignored - ensure all keys are defined in image dictionaries, defaulting to None if glance client doesn't provide one - remove BaseImageService - reorganize some GlanceImageService tests * And again * Update MANIFEST.in to match directory moves from rev1559 * we're back * Update MANIFEST.in to match directory moves from rev1559 * Moving tests/test_cloud.py to tests/api/ec2/test_cloud.py. They are EC2-specific tests, so this makes sense * Same as last time * Made tests version version links more robust * PEP8 cleanup * PEP8 cleanup * PEP8 cleanups * zone manager tests working * fixing import * working on getting tests back * relocating ec2 tests * merging trunk; resolving conflicts * Correctly map image statuses from Glance to OSAPI v1.1 * pep8 fixes in nova/db/sqlalchemy/api.py and nova/virt/disk.py * Add support for vendor content types * pep8 fixes * merging trunk; resolving conflicts * Update GlanceClient, GlanceImageService, and Glance Xen plugin to work with Glance keystone * Fix typo (woops) * pep8 fix * Some arches dont have dmidecode, check to see if libvirt is capable of running rather getInfo of the arch its running on * merging parent branch lp:~rackspace-titan/nova/glance-client-keystone * adding tests for deleted and pending_delete statuses * Fixes rogue usage of sudo that crept in * fixups * remove unused dep * add test for method sig * parent merge * migration move * bug fixes * merging trunk * Fixes shutdown of lxc containers * Make quoting consistent * Fix rogue usage of 'sudo' bypassing the run_as_root=True method * trunk merge * region name * tweaks * fix for lp847604 to unbreak instance rebooting * use 'qemu-image resize' rather than 'truncate' to grow image files * When vpn=true in allocate ip, it attempts to allocate the ip that is reserved in the network. Unfortunately fixed_ip_associate attempts to ignore reserved ips. This fix allows to filter reserved ip address only when vpn=True * Do not require --bridge_interface for FlatDHCPManager (lp:844944) * Makes nova-vncproxy listen for requests on the queue like it did before the bin files were refactored * Update GlanceClient, GlanceImageService, and Glance Xen plugin to work with Glance keystone * api/ec2/ebs: make metadata returns correct swap and ephemeral0 * api/ec2: make get_metadata() return correct mappings * virt/libvirt: format ephemeral device and add fs label when formating ext3 fs * Fix spelling mistake * Stock zones follows a fill-first methodology—the current zone is filled with instances before other zones are considered. This adds a flag to nova to select a spread-first methodology. The implementation is simply adding a random.shuffle() prior to sorting the list of potential compute hosts by weights * Pass reboot_type (either HARD or SOFT) to the virt layers from the API * merging trunk * fixing image status mapping * don't need random in abstract_scheduler.py anymore.. * pull-up from trunk; move spread_first into base_scheduler.py * trunk merge * adding auth tokens to child zone calls * Add comment to document why random.shuffle() works * Merged trunk * Make whitespace consistent * Use triple quotes for docstrings to be consistent * Remove the unnecessary sudo from qemu-img as it is unneeded and doesn't work with our current packaging * Remove chanes_since and key_name from basic server entity * Merged trunk * remove extra line for pep8 * remove unnecessary qemu-img flag, use base image type by default * shorten comment to < 79 chars * merged rbp * remove sudo from qemu-img commands * adds a fake_network module to tests to generate sensible network info for tests. It does not require using the db * Adding a can_read_deleted filter back to db.api.instance_get_all_by_filters that was removed in a recent merge * removing key_name and config_drive from non-detailed server entity * Authorize to start a LXC instance withour, key, network file to inject or metadata * Open Essex (switch version to 2012.1) * Last Diablo translations for Nova * Open Essex (switch version to 2012.1) * Last Diablo translations * pep 8 * Fixing security groups stuff * put key into meta-data, not top level 'data' * metadata key is 'public-keys', not 'keys' * fix for lp844364: fix check for fixed_ip association in os-floating-ips * if no public-key is given (--key), do not show public-keys in metadata service * NetworkManager's add_fixed_ip_to_instance calls _allocate_fixed_ips without vpn or requested_networks parameters. If vpn or requested_networks is not provided to the _allocate_fixed_ips method, it throws an exception. This issue is fixed now * Merged trunk * First pass at adding reboot_type to reboot codepath * child zone queries working with keystone now * Added docstring to explain usage of reserved keyword argument * One more bug fix to make zones work in trunk. Basic problem is that in novaclient using the 1.0 OSAPI, servers.create() takes an ipgroups argument, but when using the 1.1 OSAPI, it doesn't, which means booting instances in child zones won't work with OSAPI v1.0. This fix works around that by using keyword arguments for all the arguments after the flavor, and dropping the unused ipgroups argument * Fixes the reroute_compute decorator in the scheduler API so that it properly: * make check for fixed_ip association more defensive * Fix lp:844155 * Changing a behavior of update_dhcp() to write out dhcp options file. This option file make dnsmasq offer a default gateway to only NICs of VM belonging to a network that the first NIC of VM belongs to. So, first NIC of VM must be connected to a network that a correct default gateway exists in. By means of this, VM will not get incorrect default gateways * merged trunk * merging trunk * merging trunk * merged trunk * Make weigh_hosts() return a host per instance, instead of just a list of hosts * converting fix to just address ec2; updating test * Do not attempt to mount the swap VDI for file injection * Add a NOTE() * Merged trunk * Use .get instead * Do not attempt to mount the swap VDI for file injection * pull-up from trunk * pull-up from trunk * pull-up from trunk * adding can_read_deleted back to db api * Clean up shutdown of lxc containers * Cleanup some more comments * Cleanup some comments * fixes vncproxy service listening on rabbit * added tests for failure cases talking with zones * This code contains contains a new NetworkManager class that can leverage Quantum + Melange * comment fix * typo trying to raise InstanceNotFound when all zones returned nothing * create a new exception ZoneRequestError to use for returning errors when zone requests couldn't complete * pep8 fix for tests/api/openstack/test_servers.py which is an issue in trunk * catch exceptions from novaclient when talking to child zones. store them and re-raise if no other child zones return any results. If no exceptions are raised but no results are returned, raise a NotFound exception * added test to cover case where no local hosts are available but child hosts are * remove the short circuit in abstract scheduler when no local hosts are available * fix for lp844364: improve check for fixed_ip association * Ensure restore and forceDelete don't do anything unless the server is waiting to be reclaimed * actually shuffle the weighted_hosts list.. * Check task_state for queued delete * spread-first strategy * Make sure instance is deleted before allowing restore or forceDelete * Add local hostname to fix Authors test * delete_instance_interval -> reclaim_instance_interval * PEP8 cleanup * Restart compute with a lower periodic_interval to make test run faster * merge trunk * properly handle the id resetters * removed vestige * pull-up from trunk * fix a couple of typos in the added unit test * modified unit tests, set use_single_default_gateway flag to True whereever needed instead of setting it in the init method * exclude net tag from host_dhcp if use_single_default_gateway flag is set to false * forgot _id * had used wrong variable * Fixes a case where if a VIF is returned with a NULL network it might not be able to be deleted. Added test case for that fix * Fix for LP Bug #837867 * weigh_hosts() needs to return a list of hosts for the instances, not just a list of hosts * Merged trunk * Set flat_injected to False by default * changed the fixed_ip_generator * PEP8 cleanup * Wait longer for all agents, not just Windows * merged trunk * updated floating_ip generation * Tests for deferred delete, restore and forceDelete * An AMI image without ramdisk image should start * Added use_single_default_gateway to switch from multiple default gateways to single default gateway * Fixed unit test * reverting change to GlanceImageService._is_image_available * At present, the os servers.detail api does not return server.user_id or server.tenant_id. This is problematic, since the servers.detail api defaults to returning all servers for all users of a tenant, which makes it impossible to tell which user is associated with which server * reverting xenapi change * Micro-fix; "exception" was misspelled as "exceptions" * Fix a misspelling of "exception" * revert changes to display description * merged trunk * novaclient v1_0 has an ipgroups argument, but novaclient v1_1 doesn't * Set flat_injected to False by default * Fixes an issue where 'invalid literal for int' would occur when listing images after making a v1.1 server snapshot (with a UUID) * further cleanup * Default to 0 seconds (off) * PEP8 cleanups * Include new extension * Implement deferred delete of instances * trunk merge * cleaning up tests * zone name not overwritten * Update the v1.0 rescue admin action and the v1.1 rescue extension to generate 'adminPass'. Fixes an issue where rescue commands were broken on XenServer. lp#838518 * fix a mistaking of dataset and expected values on small test * fix a mistaking of deletion in ensure_floating_forward * revert codes for db * correct a method to collect instances from db add interface data to test * added me to Authors * meeging trunk * format for pep8 * format for pep8 * implement unit test for linux_net * Adjust test_api to account to multiple rules getting returned for a single set rule * Clean up security groups after use * Make a security group rule that references another security group return ipPermission for each of tcp, udp, and icmp * Multi-NIC support for vmwareapi virt driver in nova. Does injection of Multi-NIC information to instances with Operating system flavors Ubuntu, Windows and RHEL. vmwareapi virt driver now relies on calls to network manager instead of nova db calls for network configuration information of instance. Ensure if port group is properly associated with vlan_interface specified in case of VLAN networking for instances. Re-oranized VMWareVlanBridgeDriver and added session parmeter to methods to use existing session. Also removed session creation code as session comes as argument. Added check for flat_inject flag before attempting an inject operation. Removed stale code from vmwareapi stubs. Also updated some comments to be more meaningful. Did pep8 and pylint checks. Tried to improve pylint score for newly added lines of code * Fix bug #835919 that output a option file for dnsmasq not to offer a default gateway on second vif * Accidentally added instance to security group twice in the test. Fixed * Minor cleanup * Fixing xml serialization of limits resource * correct floating ip id to increment in fake_network * Add iptables filter rules for dnsmasq * Merged trunk * Change non E ascii characte * Launchpad automatic translations update * Instance record is not inserted in db if the security group passed to the RunInstances API doesn't exists * Added unit tests to check instance record is not inserted in db when security groups passed to the instances are not existing * removed unneeded import * rick nits * alex meade issues * Added list of security groups to the newly added extension (Createserverext) for the Create Server and Get Server detail responses * default description to name * use 'qemu-image resize' rather than 'truncate' to grow image files * remove extra description stuff * fix pep8 violation * feedback from jk0's review, including removing a lot of spaces from docstrings * revert description changes, use metadata['description'] if it is set to populate field in db * merged trunk * change db migrate script again to match other similar scripts * Fix for LP Bug #839269 * move networks declarations within upgrade/downgrade methods * more review cleanup * remove import of 'fake' from nova manager, now that we've moved that to test_quantum.py * Fixes a small bug which causes filters to not work at all. Also reworks a bit of exception handling to allow the exception related to the bug to propagate up * Email error again. Tired * Email error * Fixed review comments * Add documentation comment * pull-up from trunk * Forgot to handle return value * Add tests for flags 'snapshot_image_format' * Update snapshot image metada 'disk_format' * Add flag 'snapshot_image_format' to select the disk format of the snapshot image generated with the libvirt driver * missing migration * Email contact error * Update Authors file * Merged trunk * Correct tests associated * Fix protocol-less security groups * Adding feedparser to pip-requires * Removing xml functions that are no longer called * Launchpad automatic translations update * Glance can now perform its own authentication/authorization checks when we're using keystone * import filters in scheduler/host_filter.py so default_host_filter gets added to FLAGS; rework SchedulerManager() to only catch missing 'schedule_' attribute and report other missing attributes * move content of quantum/fake.py to test_quantum.py in unit testing class (most original content has been removed anyway) * melange testing cleanup, localization cleanup * remove references to MelangeIPAMTest, as they cannot be used yet * Deleted debug messages * Resolved conflicts and fixed pep8 errors * Fix a few references to state_description that slipped through * added unit tests and cleanup of import statements * renamed fake_network_info.py * trunk merge * moved cidr_v6 back * Probably shouldn't leave that commented out * Added test for NULL network * Fixed lp835242 * Fixes for minor network manager issues centered around deleting/accessing instances which don't have network information set * remove extra references to state_description * pull-up from trunk * merge unit test from Chris MacGown * Adds test for image.glance.GlanceImageService._is_image_available * - implements changes-since for servers resource - default sort is now created_at desc for instances * undo change in setting q_tenant_id in quantum_manager.create_network * additional review cleanup * docstring cleanup * merging trunk * Fixes NotFound exceptions to show the proper instance id in the ec2 api * typo * more review cleanup * another commit from brad * add specific exceptions for quantum client. Fix doc-strings in client.py * merge brad's changes that address most review feedback * fix for lp838583 - fixes bug in os-floating-ips view code that prevents instance_id from being returned for associated addresses * Accept keypair when you launch a new server. These properties would be stored along with the other server properties in the database (like they are currently for ec2 api) * Launchpad automatic translations update * merge trunk, fix tests * fix for lp838583 - return instance_id for associated floating_ips, add test * removing unnecessary imports * remove BaseImageService * pep8 * move GlanceImageService tests to proper module; remove translation of non-standard image attributes to properties; ensure all image properties are available, defaulting to None if not provided * merge trunk * Add comment for an uncommon failure case that we need to fix * Fix for LP Bug #838466 * Correctly yield images from glance client through image service * Simple usage extension for nova. Uses db to calculate tenant_usage for specified time periods * Fix for LP Bug #838251 * merge trunk, fix conflict * Validates that user-data is b64 encoded * Updated VersionsAtomSerializer.index to use lxml.etree to generate atom feed * remove extra test * merged trunk * Fixed and improved the way instance "states" are set. Instead of relying on solely the power_state of a VM, there are now explicitly defined VM states and VM task states which respectively define the current state of the VM and the task which is currently being performed by the VM * Updating test for xml to use lxml * expect key_name attribute in 1.1 * change to use _get_key_name to retrieve the key * Implements lp:798876 which is 'switch carrot to kombu'. Leaves carrot as the default for now... decision will be made later to switch the default to kombu after further testing. There's a lot of code duplication between carrot and kombu, but I left it that way in preparation for ripping carrot out later and to keep minimal changes to carrot * Disassociated previously associated floating ips when calling network_api.associate_floating_ip. Also guard against double-association in the network.manager * adding support for limiting in image service; updating tests with fixture ids and marker support * trunk merge * merging trunk * fix keypairs stubs * add explicit message for NoMoreFloatingIps exception * fix for chris behrens' comment - move tenant_id => project_id mapping to compute.api.get_all * moved key_name per review * zone_add fixed to support zone name * kludge for kombu 1.1.3 memory transport bug * merged trunk * Removed extraneous import and s/vm_state.STOP/vm_states.STOPPED/ * Merged trunk * Code cleanup * Use feedparser to parse the generated atom feeds in the tests for the versions resource * add test to verify 400 response when out of addresses * switched default to kombu per vishy * use kombu.connection.BrokerConnection vs kombu.connection.Connection so that older versions of kombu (1.0.4) work as well as newer * fix FloatingIpAlreadyInUse to use correct string pattern, convert ApiErrors to 400 responses * Fix for LP Bug #782364 * Fix for LP Bug #782364 * more logging info to help identify bad payloads * Removed test_parallel_builds in the XenAPI tests due to it frequently hanging indefinitely * logging change when rpc pool creates new connection * pep8 fix * make default carrot again and delay the import in rpc/__init__.py * Removed debug messages * Fix for LP Bug #837534 * add kombu to pip-requires and contrib/nova.sh * restore old way FLAGS.rpc_backend worked.. no short name support for consistency * fix remaining tests * Update RequestContext so that it correctly sets self.is_admin from the roles array. Additionally add a bit of code to ignore case as well * pep8, fix fakes * fix a bunch of direct usages of db in compute api * make two functions instead of fast flag and add compute api commands instead of hitting db directly * fixing bug * fixing short-ciruit condition * yielding all the images * merged trunk * changing default sort to created_at * The exception 'RamdiskNotFoundForImage' is no longer used * With OS API, if the property 'ramdisk_id' isn't set on the AMI image, Nova can not instantiate it. With EC2 API, the AMI image can be instantiate * adding an assert * Use getCapabilities rather than getInfo() since some versions of libvirt dont provide dmi information * supporting changes-since * Fix a bad merge on my part, this fixes rebuilds\! * disassociate floating ips before re-associating, and prevent re-association of already associated floating ips in manager * Update RequestContext so that it correctly sets self.is_admin from the roles array. Additionally add a bit of code to ignore case as well * Merged trunk * remove unneeded connection= in carrot Consumer init * pep8 fix for test_rpc_common.py * fix ajax console proxy for new create_consumer method * doc string cleanup * created nova/tests/test_rpc_common.py which contains a rpc test base class so we can share tests between the rpc implementations * ditched rpc.create_consumer(conn) interface... instead you now do conn.create_consumer(. * Update the EC2 ToToken middleware to use eventlet.green.httplib instead of httplib2. Fixes issues where the JSON request body wasn't getting sent to Keystone * remove brackets from mailmap entry * access db directly in networkmanagers's delete_network method, so stubbed test call works correctly * more logging info to help identify bad payloads * In the XenAPI simulator, set VM.domid, when creating the instance initially, and when starting the VM * remove 'uuid' param for nova-manage network delete that I had add previously * add alias to mailmap * update file name for db migrate script after merge (again) * update file name for db migrate script after merge * merged trunk * Fixes this bug by removing the test. The test has no asserts and seems to be raising more problems than it could solve * Removed test_parallel_builds * Merged trunk * Increased migration number * Fixes lp:813864 by removing the broken assert. The assert was a check for isinstance of 'int' that should have been 'long'. But it doesn't appear this assert really belongs, anyway * Merged trunk * Adds assertIn and assertNotIn support to TestCase for compatibility with python 2.6 This is a very minimal addition which doesn't require unittest2 * support the extra optional arguments for msg to assertIn and assertNotIn * removed broken assert for abstract_scheduler * pep8 fixes * fix for assertIn and assertNotIn use which was added in python 2.7. this makes things work on 2.6 still * merge trunk * restore fixed_ip_associate_pool in nova/db/sqlalchemy.py to its original form before this branch. Figured out how to make unit tests pass without requiring that this function changes * remove unused rpc connections in test_cloud and test_adminapi * carrot consumer thread fix * add carrot/kombu tests... small thread fix for kombu * add doc-strings for all major modules * remove fake IPAM lib, since qmanager must now access nova DB directly * Update the EC2 ToToken middleware to use eventlet.green.httplib instead of httplib2. Fixes issues where the JSON request body wasn't getting sent to Keystone * fix nova/tests/test_test.py * fix nova-ajax-console-proxy * fix test_rpc and kombu stuff * always set network_id in virtual_interfaces table, otherwise API commands that show IP addresses get confused * start to rework some consumer stuff * update melange ipam lib to use network uuid, not bridge * fix issue with setting 'Active' caused by Quantum API changes. Other misc fixes * Bug #835952: pep8 failures do not cause the tests to fail * Start domid's at 1, not 0, to avoid any confusion with dom0 * use 'uuid' field in networks table rather than 'bridge'. Specify project_id when creating instance in unit test * Bug #835964: pep8 violations in IPv6 code * In the XenAPI simulator, set VM.domid, when creating the instance initially, and when starting the VM * Bug #835952: pep8 failures do not cause the tests to fail * Bug #835964: pep8 violations in IPv6 code * Virtual Storage Array (VSA) feature. - new Virtual Storage Array (VSA) objects / OS API extensions / APIs / CLIs - new schedulers for selecting nodes with particular volume capabilities - new special volume driver - report volume capabilities - some fixes for volume types * fix FALGS typo * changes a few double quotes to be single, as the rest in the vicinity are * Default rabbit max_retries to forever Modify carrot code to handle retry backoffs and obey max_retries = forever Fix some kombu issues from cut-n-paste Service should make sure to close the RPC connection * Updated VersionsXMLSerializer and corresponding tests to use lxml * v1.0 of server create injects first users keypair * add tests to verify NotFound exceptions are wrapped with the proper ids * use db layer for aggregation * merged trunk * flag for kombu connection backoff on retries * more fixes * more work done to restore original rpc interfaces * merge changes from brad due to recent quantum API changes * Minor changes based on recent quantum changes * start of kombu implementation, keeping the same RPC interfaces * doubles quotes to single * changed format string in nova-manage * removed self.test ip and _setup_networking from libvirt * updated libvirt test * merge trunk * stubbed some stuff in test_libvirt * removed create_volumes, added log & doc comment about experimental code * reverted CA files * couple of pep8s * Tiny tweaks to the migration script * updated fake values * updated fake values * Merged trunk and fixed conflicts * updated fake values * updated fake values * forgot ) * update libvirt tests * Update compute API and manager so that the image_ref is set before spawning the rebuilt instance. Fixes issue where rebuild didn't actually change the image_id * added debug prints for scheduler * update libvirt * updated instance type fake model * added vcpus to instance flavor test model * added memory_mb to instance flavor test model * forgot test print statements * misplaced comma.. * Update compute API and manager so that the image_ref is set before spawning the rebuilt instance. Fixes issue where rebuild didn't actually change the image_id * Add brad to Authors file * replace accidental deletion in nova-mange * rearrange imports * fix for quantum api changes, change nova-mange to have quantum_list command * merge brad's fixes * add priority for static networks * driver: added vsa_id parameter for SN call * merged with rev.1499 * cosmetic cleanup * Updated server and image XML serializers to take advantage of the addresses and metadata serializers * VSA code redesign. Drive types completely replaced by Volume types * merged trunk * Just a couple of small changes I needed to get the migrations working with SQLAlchemy 0.7.x on Fedora 16 * Minor fixes * check log file's mode prior to calling chmod * The fix for run_iscsiadm in rev 1489 changed the call to use a tuple because values were being passed as tuples. Unfortunately a few calls to the method were still passing strings * Add a set of generic tests for the virt drivers. Update a bit of documentation to match reality * updated LimitsXMLSerializer to use etree and supply the xml declaration * merge underlying fix for testing * merged trunk * updated additional limits test * pep8 * pass all commands to run_iscsiadm as a tuple * altered fake network model * Updated limits serialization tests to use etree and added limits schema * Test fixup after last review feedback commit * Fix glance image authorization check now that glance can do authorization checks on its own; use correct image service when looking for ramdisk, etc.; fix a couple of PEP8 errors * forget a return * review feedback * Fixed integrated.test_xml to be more robust * typo * fixed a couple of syntax errors * Add bug reference * updated tests * updated libvirt tests to use fake_network_info * Bumped migration number * Merged trunk * Review feedback * pep8 * DRYed up code by moving _to_xml into XMLDictSerializer * updated addresses serializer to use etree instead of minidom * Added addresses schema * updated addresses xml serialization tests to use etree instead of minidom * Updated ServerXMLSerializer to use etree instead of minidom * added unit tests to instance_types for rainy day paths * Reverted two mistakes when looking over full diff * Updated MetadataXMLSerializer to use etree instead of minidom * Added: - volume metadata - volume types - volume types extra_specs * Added schemas Updated metadata tests to use etree instead of minidom * Servers with metadata will now boot on xenserver with flat_injected==False * moved import up * Verify resize needs to be set * changing comment * fixing bug * merged trunk * Updated ImagesXMLSerializer to use etree instead of minidom * Set error state when migration prep fails * Removed invalid test * Removed RESIZE-CONFIRM hack * Set state to RESIZING during resizing.. * Merged trunk * Another attempt at fixing hanging test * Once a network is associated with project, I can’t delete this network with ‘nova-manage network delete’. As you know, I can delete network by scrubbing the project with ‘nova-manage project scrub’. However it is too much. The cause of this problem is there is no modify command of network attribute * Update paste config so that EC2 admin API defaults to noauth * merged with volume types (based on rev.1490). no code rework yet * merged with volume_types. no code refactoring yet * merged with nova 1490 * added new tables to list of DBs in migration.py * removes french spellings to satisfy american developers * added virtio flag; associate address for VSA; cosmetic changes. Prior to volume_types merge * stub_instance fix from merge conflict * moved import to the top * fixing inappropriate rubyism in test code * Added fix for parallel build test * Fixed silly ordering issue which was causing tons of test failures * merged trunk * change snapshot msg too * forgot to add new extension to test_extensions * Add me to Authors * added Openstack APIs for volume types & extradata * Add comments for associate/dissociate logic * Updated ImageXMLSerialization tests to use etree instead of minidom Fixed incorrect server entity ids in tests * Merged from trunk * Add names to placeholders of formatting * The notifiers API was changed to take a list of notifiers. Some people might want to use more than one notifier so hopefully this will be accepted into trunk * use dict.get for user_id, project_id, and display_description in servers view as suggested by ed leaf, so that not all tests require these fields * Updated flavors xml serialization to use lxml instead of minidom * merge trunk, fix tests * fix more tests * Removed unused imports * Updated FlavorsXMLSerialization tests to use etree and validation instead of minidom * Merged from trunk * split test_modify() into specific unit tests * Added DELETED status to OSAPI just in case * Fixes iscsiadm commands to run properly * Fixed issue where we were setting the state to DELETED before it's actually deleted * merged with rev.1488 * Merged trunk and fixed conflicts * added volume type search by extra_spec * Fix for trying rebuilds when instance is not active * Fixed rebuild naming issue and reverted other fix which didn't fix anythin * Attempt to fix issue when deleting an instance when it's still in BUILD * Fix default hostname generator so that it won't use underscores, and use minus signs instead * merged with 1487 * pep8 compliant * Merged from trunk * - rebuilds are functional again - OSAPI v1.1 rebuild will accept adminPass or generate a new one, returning it in a server entity - OSAPI v1.0 will generate a new password, but it doesn't communicate it back to the user * Fix flag override in unit test * merged with rev.1485 * add rainy day test to to_global fixed to_global to catch correct error from incorrect mac addresses * Let's be more elegant * similar to lp828614: add rainy day test and fix exception error catch to AddrFormatError * check log file mode prior to chmod * added unit tests for version.py * Merged trunk * Fix for migrations * Conversion to SQLAlchemy-style * dict formatting * Commit without test data in migration * Commit with test data in migration * Do not require --bridge_interface for FlatDHCPManager * Fix quotas migration failure * Fix flavorid migration failure * fixed indentation * adding xml serialization and handling instance not found * removing extraneous imports * pep8 * Thou shalt not use underscores in hostnames * Catch exception for instances that aren't there * pep8 fixes * Couple of fixes to the review feedback changes * Launchpad automatic translations update * Address code review feedback from Rick and Matt * removing print statement * added volume metadata APIs (OS & volume layers), search volume by metadata & other * Update paste config so that EC2 admin API defaults to noauth * cleanup * updating tests * fix iscsi adm command * Fix pep8 * Merged from trunk * added volume_types APIs * Fix not found exceptions to properly use ec2_ips for not found * Stub out the DB in unit test. Fix 'nova-manage network modify' to use db.network_update() * rebuilds are functional again * Adds a use_deprecated_auth flag to make sure creds generated using nova-manage commands will work with noauth * Merged from upstream * Fixed some pep8 and pylint issues * Forgot to set the flag for the test * I added notifications decorator for each API call using monkey_patching. By this merge, users can get API call notification from any modules * Fixes bug that causes 400 status code when an instance wasn't attached to a network * fix for rc generation using noauth * Fixed doc string * Merged from upstream * Switched list_notifier to log an exception each time notify is called, for each notification driver that failed to import * updating tests * merging trunk * Fixed some docstring Added default publisher_id flagw * Removed blank line * Merged with trunk * Fixed typo and docstring and example class name * Updated migration number * Move use_ipv6 into flags. Its used in multiple places (network manager and the OSAPI) and should be defined at the top level * Merged trunk * PEP8 fixes * 'use the ipv6' -- 'use ipv6' * Move use_ipv6 into flags. Its used in multiple places (network manager and the OSAPI) and should be defined at the top level * Refresh translations * This branch does the final tear out of AuthManager from the main code. The NoAuth middlewares (active by default) allow a user to specify any user and project id through headers (os_api) or access key (ec2_api) * Implements first-pass of config-drive that adds a vfat format drive to a vm when config_drive is True (or an image id) * Launchpad automatic translations update * pulling all qmanager changes into a branch based on trunk, as they were previously stacked on top of melange * Moved migration and fixed tests from upstream * Merged trunk * Added the fixes suggested by Eric Windisch from cloudscaling.. * removing unnecessary tthing * merge trunk, resolve conflicts, fix tests * unindented per review, added a note about auth v2 * Our goal is to add optional parameter to the Create server OS 1.0 and 1.1 API to achieve following objectives:- * fixing exception logging * Fixes bug 831627 where nova-manage does not exit when given a non-existent network address * Move documentation from nova.virt.fake into nova.virt.driver * initial cut on volume type APIs * fix pep8 issue * Change parameters of 'nova-manage network modify'. Move common test codes into private method * Merged from trunk,resolved conflicts and fixed broken unit tests due to changes in the extensions which now include ProjectMapper * xml deserialization, and test fixes * syntax * update test_network test_get_instance_nw_info() * remove extra spaces * Fixed conflict with branch * merged trunk * The FixedIpCommandsTestCase in test_nova_manage previously accessed the database. This branch stubs out the database for these tests, lowering their run time from 104 secs -> .02 secs total * some readability fixes per ja feedback * fix comment * Update a few doc strings. Address a few pep8 issues. Add nova.tests.utils which provides a couple of handy methods for testing stuff * Make snapshot raise InstanceNotRunning when the instance isn't running * change NoAuth to actually use a tenant and user * Added Test Code, doc string, and fixed pip-requiresw * Merged trunk * Ensure that reserve and unreserve exit when an address is not found * Simple usage extension for nova. Uses db to calculate tenant_usage for specified time periods * Stubbed out the database in order to improve tests * logging as exception rather than error * Merged from upstream * Changed list_notifier to call sys.exit if a notification driver could not be found * merged trunk * implemented tenant ids to be included in request uris * Add a generic set of tests for hypervisor drivers * Upstream merge * Added ability to detect import errors in list_notifier if one or more drivers could not be loaded * Fix pep8 * delete debug code * Fixes for a number of tests * Use 'vm_state' instead of 'state' in instance filters query * Merged with Dan to fix some EC2 cases * Add 'nova-manage network modify' command * Fixes/updates to make test_cloud pass * Fix scheduler and integrated tests * Update migration number * Merged with Dan * Merged task_state -> task_states and fixed test_servers test * Update virt/fake to correct power state issue * fix test_servers tests * update test_security_group tests that have been added * Merged trunk * Renamed task_state to task_states.. * Ec2 API updates * merge with trunk * Fixing merge conflicts * Launchpad automatic translations update * Adds accessIPv4 and accessIPv6 to servers requests and responses as per the current spec * adding import * Fixes utils.to_primitive (again) to handle modules, builtins and whatever other crap might be hiding in an object * fixing bug lp:830817 * added test for bad project_id ... although it may not be used * added exception catch and test for bad project_id * added exception catch for bad prefix and matching test * added exception catch and test for bad prefix * comment strings * added unit tests for versions.py * Added OS APIs to associate/disassociate security groups to/from instances * add/remove security groups to/from the servers as server actions * lp:828610 * removed leftover netaddr import * added rainy day test for ipv6 tests. fixed ipv6.to_global to trap correct exception * Merged from trunk * pep8 * improve test coverage for instance types / flavors * Launchpad automatic translations update * Assorted fixes to os-floating-ips to make it play nicely with an in-progress novaclient implementation, as well as some changes to make it more consistent with other os rest apis. Changes include: * finished fake network info, removed testing shims * updated a maths * updated a maths * Merged trunk * Lots of modifications surrounding the OSAPI to remove any mention of dealing with power states and exclusively using vm_states and task_state modules. Currently there are still a number of tests failing, but this is a stopping place for today * who cares * added return * Merged from trunk and fixed review comments * fixed formatting string * typo * typo * typo * typo * typo * typo * added fake network info * Fixed review comments * Fixed typo * better handle malformed input, and add associated tests * Fixed typo * initial committ * Fixed NoneType returned bugw * merged trunk * Updated accessIPv4 and accessIPv6 to always be in a servers response * Fixed mistake on mergew * tweak to comment * Merged with trunkw * a few tweaks - remove unused member functions, add comment * incorporate feedback from brian waldon and brian lamar. Move associate/disassociate to server actions * merge from trunk * pep8 * Finished changing ServerXMLSerializationTest to use XML validation and lxml * Added monkey patching notification code function w * Updated test_show in ServerXMLSerializationTest to use XML validation * vm_state --> vm_states * Next round of prep for keystone integration * merge from trunk * Removes the incorrect hard-coded filter path * Revert irrelevant changes that accidentally crept into this patch :( * add tenant_id to api. without tenant_id, admins can't tell which servers belong to which tenants when retrieving lists * Merged from trunk * Fixes primitive with builtins, modules, etc * fix test_virtual interfaces for tenant_id stuff * fix test_rescue tests for tenant_id changes * Fix unit test for the change of 'nova-manage network list' format * Add copyright notices * merged trunk * Define FLAGS.default_local_format. By default it's None, to match current expected _create_local * Fix config_drive migration, per Matt Dietz * updated migration number * merge with trunk * Bump migration number * pep8 * Start improving documentation * Added uuid column in virtual_interfaces table, and an OpenStack extension API for virtual interfaces to expose these IDs. Also set this UUID as one of the external IDs in the OVS vif driver * Move documentation from nova.virt.fake to nova.virt.driver * add key_name/data support to server stub * add user_id and description. without user_id, there is no way for a tenant to tell which user created the server. description should be added for ec2 parity * merge * Bugfix for lp 828429. Its still not clear to me exactly how this code path is actually invoked when nova is used, so I'm looking for input on whether we should be adding a test case for this, removing the code as unused, etc. Thanks * remove security groups, improve exception handling, add tests * Merged trunk * merged trunk * Currently, rescue/unrescue is only available over the admin API. Non-admin tenants also need to be able to access this functionality. This patch adds rescue functionality over an API extension * Makes all of the binary services launch using the same strategy. * Removes helper methods from utils for loading flags and logging * Changes service.serve to use Launcher * Changes service.wait to actually wait for all the services to exit * Changes nova-api to explicitly load flags and logging and use service.serve * Fixes the annoying IOError when /etc/nova/nova.conf doesn't exist * tests pass * Fixes issue where ServersXMLSerializer was missing a method for update actions * follow same pattern as userdata (not metadata apporach) * rename the test method * Updated docs for the recent scheduler class changes * Passes empty string instead of None to MySQLdb driver if the DB password isn't set * merged trunk * added volume metadata. Fixed test_volume_types_extra_specs * declare the use_forwarded_for flag * merge trunk * Fixes lp828207 * Added unit test * allow specification of key pair/security group info via metadata * Fixed bug in which DescribeInstances was returning deleted instances. Added tests for pertinent api methods * Accept binary user_data in radix-64 format when you launch a new server using OSAPI. This user_data would be stored along with the other server properties in the database. Once the VM instance boots you can query for the user-data to do any custom installation of applications/servers or do some specific job like setting up networking route table * added unittests for volume_extra_data * Removed extra parameter from the call to _provision_resource_locally() * resolve conflicts after upstream merge * Change the call name * Cleanup the '_base' directory in libvirt tests * Oops * Review feedback * Added 'update' method to ServersXMLSerializer * Added more unit testcases for userdata functionality * Remove instances.admin_pass column * merged trunk * Merged with trunk * typo * updated PUT to severs/id to handle accessIPv4 and accessIPv6 * DB password should be an empty string for MySQLdb * first cut on types & extra-data (only DB work, no tests) * merge from trunk * Better docstring for _unrescue() * Review feedback * Need to pass the action * Updated the distributed scheduler docs with the latest changes to the classes * Syntax error * Moved compute calls to their own handler * Remove old comment * Don't send 'injected_files' and 'admin_pass' to db.update * fix docstrings in new api bins * one more * fix typo * remove signal handling and clean up service.serve * add separate api binaries * more cleanup of binaries per review * Changed the filter specified in _ask_scheduler_to_create_instance() to None, since the value isn't used when creating an instance * Minor housecleaning * Fix to return 413 for over limit exceptions with instances, metadata and personality * Refactored a little and updated unit test * minor cleanup * dhcpbridge: add better error if NETWORK_ID is not set, convert locals() to static dict * Added the fix for the missing parameter for the call to create_db_entry_for_new_instance() * Updated a number of items to pave the way for new states * Corrected the hardcoded filter path. Also simplified the filter matching code in host_filter.py * Added rescue mode extension * Fixed issue where accessIP was added in none detail responses * Updated ServersXMLSerializer to allow accessIPv4 and accessIPv6 in XML responses * Merged trunk * Added accessIPv4 and accessIPv6 to servers view builder Updated compute api to handle accessIPv4 and 6 * Fixed several logical errors in the scheduling process. Renamed the 'ZoneAwareScheduler' to 'AbstractScheduler', since the zone-specific designation is no longer relevant. Created a BaseScheduler class that has basic filter_hosts() and weigh_hosts() capabilities. Moved the filters out of one large file and into a 'filters' subdirectory of nova/scheduler * Merged trunk * Adds the enabled status of a host when XenServer reports its host's capabilities. This allows the scheduler to ignore hosts whose enabled is False when considering where to place a new instance * merge trunk and fix unit test errors * in dhcpbridge, only grab network id from env if needed * bug #828429: remove references to interface in nova-dhcpbridge * pep8 * remove extra reference in pipelib * clean up fake auth from server actions test * fix integration tests * make admin context the default, clean up pipelib * merged trunk * Merged with trunk and fixed broken testcases * merged with nova-1450 * nova-manage VSA print & forced update_cap changes; fixed bug with report capabilities; added IP address to VSA APIs; added instances to APIs * Make all services use the same launching strategy * Updated compute manager/API to use vm/task states. Updated vm/task states to cover a few more cases I encountered * Updated server create XML deserializer to account for accessIPv4 and accessIPv6 * Added the host 'enabled' status to the host_data returned by the plugin * Added accessip to models pep8 * Added migration for accessIPv4 and accessIPv6 * Fixed broken unit testcases * Initial instance states migration * pep8 fix * fix some naming inconsistencies, make associate/disassociate PUTs * Add NetworkCommandsTestCase into unit test of nova-manage * very minor cleanup * Undo an unecessary change * Merged trunk * Pep8 fixes * Split set state into vm, task, and power state functions * Add modules for task and vm states * Updated tests to correctly use the tenant id * DB object was being casted to dict() in API code. This did not work as intended and logic has been updated to reflect a more accurate way of getting information out of DB objects * merge from trunk * Cleaned up the extension metadata API data * Updated get_updated time * Cleaned up the file * Fixed vif test to match the JSON key change * Added XML support and changed JSON output keys * Added virtual interfaces API test * Removed serverId from the response * Merged trunk * Merged Dan's branch to add VIF uuid to VIF drivers for Quantum * Removed a change from faults.py that was not required." * Changed return code to 413 for metadata, personality and instance quota issues * Append the project_id to the SERVER-MANAGEMENT-URL header for v1.1 requests. Also, ensure that the project_id is correctly parsed from the request * add new vif uuid for OVS vifplug for libvirt + xenserver * Remove instances.admin_pass column * merge trunk * all tests passing * fix unit tests * Resolved conflicts and merged with trunk * Added uuid for networks and made changes to the Create server API format to accept network as uuid instead of id * I'm taking Thierry at his word that I should merge early and merge often :) * Fixes issue with exceptions getting eaten in image/s3.py if there is a failure during register. The variables referenced with locals() were actually out of scope * Allow local_gb size to be 0. libvirt uses local_gb as a secondary drive, but XenServer uses it as the root partition's size. Now we support both * Merged trunk * merge from trunk * make project_id authorization work properly, with test * Use netaddr's subnet features to calculate subnets * make delete more consistant * Review feedback * Updated note * Allow local_gb to be 0; PEP8 fixes * Updated ViewBuilderV10 as per feedback * * Added search instance by metadata. * instance_get_all_by_filters should filter deleted * This branch implements a nova api extension which allows you to manage and update tenant/project quotas * test improvements per peer review * fixing pep8 issue * defaults now is referred to using a tenant * fixing up the show quotas tests, and extension * making get project quotas require context which has access to the project/tenant) * fixing pep8 issues again * fixing spacing issues * cleaning up a few things from pyflakes * fixing pep8 errors * refactoring tests to not use authmanager, and now returning 403 when non admin user tries to update quotas * removed index, and separated out defaults into its own action * merging test_extensions.py * another trunk merge * another trunk merge... a new change made it into nova before the code was merged * Cleanup the '_base' directory in libvirt tests * Small bug fix...don't cast DB objects to dicts * merge from trunk * Updated the EC2 metadata controller so that it returns the correct value for instance-type metadata * Fix test_metadata tests * merge the trunk * Merged with upstream * Added list_notifier, a driver for the notifer api which calls a list of other drivers * merge with trunk * Refactored the HostFilterScheduler and LeastCostScheduler classes so that they can be combined into a single class that can do both host filtering and host weighting, allowing subclasses to override those processes as needed. Also renamed the ZoneAwareScheduler to AbstractScheduler, for two reasons: one, the 'zone-aware' designation was necessary when the zone code was being developed; now that it is part of nova, it is not an important distinction. Second, the 'Abstract' part clearly indicates that this is a class that is not designed to be used directly, but rather as the basis for specific scheduler subclasses * cosmetic change in test_extensions. Avoids constant merge conflicts between proposals with new extensions * Validate the size of VHD files in OVF containers * Include vif UUID in the network info dictionary * Added uuid to allocate_mac_address * Fixed the naming of the extension * redux of floating ip api * Merged trunk * Merged trunk * log the full exception so we don't lose traceback through eventlet * fix error logging in s3.py * pep8 cleanup * Merged trunk * Removed newly added userdatarequesthandler for OS API, there is no need to add this handler since the existing Ec2 API metadatarequesthandler does the same job * got tests passing with logic changes * pep8 * pep8 * add note * have the tests call create_networks directly * allow for finding a network that fits the size, also format string correctly * adding sqlalchemi api tests for test_instance_get_all_by_filter to ensure doesn't return deleted instances * added cloud unit test for describe_instances to ensure doesn't return deleted instances * return the created networks * pep8 fix * merge trunk * Adding kvm-block-migration feature * i hate these exceptions where it should just return an empty list * fix typo where I forgot a comma * merge trunk, remove _validate_cidrs and replace functionality with a double for loop * fix bug which DescribeInstances in EC2 api was returning deleted instances * We don't have source for open-wrt in the source tree, so we shouldn't use the images. Since the images are only there for uploading smoketests, They are now replaced with random images * Make response structure for list floating ips conform with rest of openstack api * put tenant_id back in places where it was * This branch allows the standard inclusion of a body param which most http clients will send along with a POST request * Libvirt has some autogenerated network info that is breaking ha network * making body default to none * pep8 fix * Adding standard inclusion of a body param which most http clients will send along with a POST request * Fixed merging issue * Merged with trunk * Updated rate limiting tests to use tenants * Corrected names in TODO/FIXME * remove openwrt image * Fix the tests when libvirt actually exists * Merged trunk * Add durable flag for rabbit queues * Fixed merge conflict * merged trunk * Merged trunk * Dryed up contructors * make list response for floating ip match other apis * fix missing 'run_as_root' from bad merge * Added ability too boot VM from install ISO. System detects an image of type iso. Images is streamed to a VDI and mounted to the VM. Blank disk allocated to VM based on instance type * Add source-group filtering * added logic to make the creation of networks (IPv4 only) validation a bit smarter: - detects if the cidr is already in use - detects if any existing smaller networks are within the range of requested cidr(s) - detects if splitting a supernet into # of num_networks && network_size will fit - detects if requested cidr(s) are within range of already existing supernet (larger cidr) * fix InvalidPortRange exception shows up in euca2ools instead of UnknownError when euca-authorize is specified w/ invalid port # * Changes requests with an invalid server action to return an HTTP 400 instead of a 501 * Currently OS API doesn't accept availability zone parameter so there is no way to instruct scheduler (SimpleScheduler) to launch VM instance on specific host of specified zone * typo fix * Fix v1.1 /servers/ PUT request to match API documentation by returning 200 code and the server data in the body * Allow different schedulers for compute and volume * have NetworkManager generate MAC address and pass it to the driver for plugging. Sets the stage for being able to do duplicate checks on those MACs as well * make sure security groups come back on restart of nova-compute * fix all of the tests * rename project_net to same_net * use dhcp server instead of gateway for filter exception * get rid of network_info hack and pass it everywhere * fix issue introduced in merge * merge trunk, fix conflict frim dprince's branch to remove hostname from bin/nova-dhcpbridge * merge in trunk, resolving conflicts with ttx's branch to switch from using sudo to run_as_root=True * remerge trunk * Added durable option for nova rabbit queues added queueu delete script for admin/debug purposes * Added add securitygroup to instance and remove securitygroup from instance functionality * Fix ugly little violations before someone says anything * Merged trunk * Updated logging * end of day * Check uncompressed VHD size * reworked test_extensions code to avoid constant merge conflicts with newly added ext * nova-manage: fixed instance type in vsa creation * Stub out instance_get as well so we can show the results of the name change * removed VSA/drive_type code from EC2 cloud. changed nova-manage not to use cloud APIs * Merged with trunk and fixed broken unit testcases * merged rev1418 and fixed code so that less than 1G image can be migrated * Created the filters directory in nova/scheduler * removed admincontext middleware * updates from review * merge from trunk * fix merges from trunk * Nuke hostname from nova-dhcpbridge. We don't use it * merge the trunk * need to actually assign the v4 network * Fixes to the OSAPI floating API extension DELETE. Updated to use correct args for self.disassociate (don't sweep exceptions which should cause test cases to fail under the rug). Additionally updated to pass network_api.release_floating_ip the address instead of a dict * Merged trunk * Fixed unit tests * only run if the subnet and cidr exist * only run if the subnet and cidr exist * merge from trunk * make sure network_size gets set * merge from trunk * don't require ipv4 * forgot the closing paren * use subnet iteration from netaddr for subnet calculation * Fix a typo that causes ami images to launch with a kernel as ramdisk when using xen * Fixing a 500 error when -1 is supplied for flavorRef on server create * rewriting parsing * fix typo that causes ami instances to launch with a kernal as ramdisk * Merged trunk * Allows for a tunable number of SQL connections to be maintained between services and the SQL server using new configuration flags. Only applies when using the MySQLdb dialect in SQLAlchemy * Merged trunk * Fixes pep8 issues in test_keypairs.py * Merged trunk * start of day * Fixes to the OSAPI floating API extension DELETE. Updated to use correct args for self.disassociate (don't sweep exceptions which should cause test cases to fail under the rug). Additionally updated to pass network_api.release_floating_ip the address instead of a dict * API needs virtual_interfaces.instance joined when pulling instances from the DB. Updated instance_get_all() to match instance_get_all_by_filters() even though the former is only used by nova-manage now. (The latter is used by the API) * remove extra log statements * join virtual_interfaces.instance for DB queries for instances. updates instance_get_all to match instance_get_all_by_filters * remove accidentally duplicated flag * merged trunk * add keystone middlewares for ec2 api * Merged with trunk * added userdata entry in the api paste ini * Initial version * Accidentally added inject_files to merge * Support for management of security groups in OS API as a new extension * Updates to libvirt, write metadata, net, and key to the config drive * prefixed with os- for the newly added extensions * Merged with trunk * Author added * allow scheduling topics to multiple drivers * Check compressed image size and PEP8 cleanup * v1.1 API also requires the server be returned in the body * capabilities fix, run_as_root fix * lp824780: fixed typo in update_service_capabilities * fix pep8 * spacing fixes * fixed pep8 issue * merge from trunk * fixed v1.0 stuff with X-Auth-Project-Id header, and fixed broken integrated tests * merged with 1416 * fixing id parsing * moved vsa_id to metadata. Added search my meta * Refactored the scheduler classes without changing functionality. Removed all 'zone-aware' naming references, as these were only useful during the zone development process. Also fixed some PEP8 problems in trunk code * Added search instance by metadata. get_all_by_filters should filter deleted * got rid of tenant_id everywhere, got rid of X-Auth-Project-Id header support (not in the spec), and updated tests * Silly fixes * v1.0 and v1.1 API differs for PUT, so split them out Update tests to match API * Removed postgres, bug in current ubuntu package which won't allow it to work easily. Will add a bug in LP * minor cleanup * Added availability zone support to the Create Server API * Make PUT /servers/ follow the API specs and return a 200 status * More logging * removed extra paren * Logging for SQLAlchemy type * merged trunk * Fixed per HACKING * * Removes rogue direct usage of subprocess module by proper utils.execute calls * Adds a run_as_root parameter to utils.execute, that prefixes your command with FLAG.root_helper (which defaults to 'sudo') * Turns all sudo calls into run_as_root=True calls * Update fakes accordingly * Replaces usage of "sudo -E" and "addl_env" parameter into passing environment in the command (allows it to be compatible with alternative sudo_helpers) * Additionally, forces close_fds=True on all utils.execute calls, since it's a more secure default * Remove doublequotes from env variable setting since they are literally passed * Changed bad server actions requests to raise an HTTP 400 * removed typos, end of line chars * Fixed broken unit testcases * Support for postgresql * merge from trunk * tenant_id -> project_id * Adding keypair support to the openstack contribute api * elif and FLAG feedback * Removed un-needed log line * Make sure to not use MySQLdb if you don't have it * get last extension-based tests to pass * Allows multiple MySQL connections to be maintained using eventlet's db_pool * Removed verbose debugging output when capabilities are reported. This was clogging up the logs with kbytes of useless data, preventing actual helpful information from being retrieved easily * Removed verbose debugging output when capabilities are reported * Updated extensions to use the TenantMapper * fix pep8 issues * Fixed metadata PUT routing * These fixes are the result of trolling the pylint violations here * Pass py_modules=[] to setup to avoid installing run_tests.py as a top-level module * Add bug reference * Pass py_modules=[] to setup to avoid installing run_tests.py as a top-level module * fix servers test issues and add a test * added project_id for flavors requests links * added project_id for images requests * merge trunk * fix so that the exception shows up in euca2ools instead of UnknownError * Dropped vsa_id from instances * import formatting - thx * List security groups project wise for admin users same as other users * Merged with trunk * merge with nova-1411. fixed * pep8 fix * use correct variable name * adding project_id to flavor, server, and image links for /servers requests * Merged with trunk * tests pass * merge from trunk * merged with nova-1411 * This branch makes sure to detach fixed ips when their associated floating ip is deallocated from a project/tenant * adding other emails to mailmap * add Keypairs to test_extensions * adding myself to authors * This adds the servers search capabilities defined in the OS API v1.1 spec.. and more for admins * Be more tolerant of agent failures. It is often the case there is only a problem with the agent, not with the instance, so don't claim it failed to boot so quickly * Updated the EC2 metadata controller so that it returns the correct value for instance-type metadata * added tests - list doesn't pass due to unicode issues * initial port * merged trunk * Be more tolerant of agent failures. The instance still booted (most likely) so don't treat it like it didn't * Updated extensions to expect tenant ids Updated extensions tests to use tenant ids * Update the OSAPI v1.1 server 'createImage' and 'createBackup' actions to limit the number of image metadata items based on the configured quota.allowed_metadata_items that is set * Fix pep8 error * fixing one pep8 failure * I think this restores the functionality .. * Adds missing nova/api/openstack/schemas to tarball * Instance metadata now functionally works (completely to spec) through OSAPI * updated v1.1 flavors tests to use tenant id * making usage of 'delete' argument more clear * Fix the two pep8 issues that sneaked in while the test was disabled * Fix remaining two pep8 violations * Updated TenantMapper to handle resources with parent resources * updating tests; fixing create output; review fixes * OSAPI v1.1 POST /servers now returns a 202 rather than a 200 * Include missing nova/api/openstack/schemas * Rename sudo_helper FLAG into root_helper * Minor fix to reduce diff * Initial validation for ec2 security groups name * Remove old commented line * Command args can be a tuple, convert them to list * Fix usage of sudo -E and addl_env in dnsmasq/radvd calls, remove addl_env support, fix fake_execute allowed kwargs * Use close_fds by default since it's good for you * Fix ajaxterm's use of shell=True, prevent vmops.py from running its own version of utils.execute * With this branch, boot-from-volume can be marked as completed in some sense. The remaining is minor if any and will be addressed as bug fixes * Update the curl command in the __public_instance_is_accessible function of test_netadmin to return an error code which we can then check for and handle properly. This should allow calling functions to properly retry and timeout if an actual test failure happens * updating more test cases * changing server create response to 202 * Added xml schema validation for extensions resources. Added corresponding xml schemas. Added lxml dep, which is needed for doing xml schema validation * Fixing a bug in nova.utils.novadir() * Adds the ability to read/write to a local xenhost config. No changes to the nova codebase; this will be used only by admin tools that have yet to be created * fixed conditional because jk0 is very picky :) * Fixed typo found in review * removing log lines * added --purge optparse for flavor delete * making server metadata work functionally * cleaning up instance metadata api code * Updated servers tests to use tenant id * Set image progress to 100 if the image is active * Cleaned up merge messes * Merged trunk * cleaned up unneeded line * nova.exception.wrap_exception will re-raise some exceptions, but in the process of possibly notifying that an exception has occurred, it may clobber the current exception information. nova.utils.to_primitive in particular (used by the notifier code) will catch and handle an exception clobbering the current exception being handled in wrap_exception. Eventually when using the bare 'raise', it will attempt to raise None resulting a completely different and unhelpful exception * remove obsolete script from setup.py * assert that vmops.revert_migration is called * Import sys as well * Resolve conflicts and fixed broken unit testcases * This branch adds additional capability to the hosts API extension. The new options allow an admin to reboot or shutdown a host. I also added code to hide this extension if the --allow-admin-api is False, as regular users should have no access to host API calls * adding forgotten import for logging * Adds OS API 1.1 support * Updated test_images to use tenant ids * Don't do anything with tenant_id for now * Review fixes * fixed wrong syntax * Assign tenant id in nova.context * another trunk merge * Merged trunk * Merged trunk * Cleaned up some old code added by the last merge * Fixed some typos from the last refactoring * Moved the restriction on host startup to the xenapi layer.: * Remove nova/tests/network, which was accidentally included in commit * upper() is even better * merged with 1383 * Updated with code changes on LP * Merged trunk * Save exception and re-raise that instead of depending on thread local exception that may have been clobbered by intermediate processing * Adding __init__.py files * Adds ability to disable snapshots in the Openstack API * Sync trunk * Set image progress to 100 if the image is active * Sync trunk * Update the curl command in the __public_instance_is_accessible function of test_netadmin to return an error code which we can then check for and handle properly. This should allow calling functions to properly retry and timout if an actual test failure happens * ZoneAwareScheduler classes couldn't build local instances due to an additional argument ('image') being added to compute_api.create_db_entry_for_new_instance() at some point * simplified test cases further, thanks to trunk changes * Added possibility to mark fixed ip like reserved and unreserved * Update the OSAPI v1.1 server 'createImage' and 'createBackup' actions to limit the number of image metadata items based on the configured quota.allowed_metadata_items that is set * Pep8 fix * zone_aware_scheduler classes couldn't build instances due to a change to compute api's create_db_entry_for_new_instance call. now passing image argument down to the scheduler and through to the call. updated a existing test to cover this * Adding check to stub method * moving try/except block, and changing syntax of except statement * Fixes broken image_convert. The context being passed to glance image service was not a real context * Using decorator for snapshots enabled check * Disable flag for V1 Openstack API * adding logging to exception in delete method * Pass a real context object into image service calls * Adding flag around image-create for v1.0 * Refactored code to reduce lines of code and changed method signature * If ip is deallocated from project, but attached to a fixed ip, it is now detached * Glance Image Service now understands how to use glance client to paginate through images * Allow actions queries by UUID and PEP8 fixes * Fixed localization review comment * Allow actions queries by UUID and PEP8 fixes * Fixed review comments * fixing filters get * fixed per peer review * fixed per peer review * re-enabling sort_key/sort_dir and fixing filters line * Make sure mapping['dns'] is formatted correctly before injecting via template into images. mapping['dns'] is retrieved from the network manager via info['dns'], which is a list constructed of multiple DNS servers * Add a generic image service test and run it against the fake image service * Implemented @test.skip_unless and @test.skip_if functionality in nova/test.py * merged with 1382 * Updates v1.1 servers/id/action requests to comply with the 1.1 spec * fix typo * Moving from assertDictEqual to assertDictMatch * merging trunk * merging trunk * Add exception logging for instance IDs in the __public_instance_is_accessible smoke test function. This should help troubleshoot an intermittent failure * adding --fixes * glance image service pagination * Pass tenant ids through on on requests * methods renamed * Add exception logging for instance IDs in the __public_instance_is_accessible smoke test function. This should help troubleshoot an intermittent failure * Removed most direct sudo calls, make them use run_as_root=True instead * pep8 violations sneaking into trunk? * pep8 violations sneaking into trunk? * trunk merge * Fixes lp821144 * Make disk_format and container_format optional for libvirt's snapshot implementation * pep8 * fixed up zones controller to properly work with 1.1 * Add generic image service tests * Add run_as_root parameter to utils.execute, uses new sudo_helper FLAG to prefix command * Remove spurious direct use of subprocess * Added virtual interfaces REST API extension controller * Trunk contained PEP8 errors. Fixed * Trunk merge * fix mismerge * Added migration to add uuid to virtual interfaces. Added uuid column to models * merged trunk * merged with nova trunk * Launchpad automatic translations update * fixed pep8 issue * utilized functools.wraps * added missing tests * tests and merge with trunk * removed redundant logic * merged trunk * For nova-manage network create cmd, added warning when size of subnet(s) being created are larger than FLAG.network_size, in attempt to alleviate confusion. For example, currently when 'nova-manage network create foo 192.168.0.0/16', the result is that it creates a 192.168.0.0/24 instead without any indication to why * Remove instances of the "diaper pattern" * Read response to reset the connection state-machine for the next request/response cycle * Added explanations to exceptions and cleaned up reboot types * fix pep8 issues * fixed bug , when logic searched for next avail cidr it would return cidrs that were out of range of original requested cidr block. added test for it * Adding missing module xmlutil * fixed bug, wasn't detecting smaller subnet conflict properly added test for it * Properly format mapping['dns'] before handing off to template for injection (Fixes LP Bug #821203) * Read response to reset HTTPConnection state machine * removed unnecessary context from test I had left there from prior * move ensure_vlan_bridge,ensure_bridge,ensure_vlan to the bridge/vlan specific vif-plugging driver * re-integrated my changes after merging trunk. fixed some pep8 issues. sorting the list of cidrs to create, so that it will create x.x.0.0 with a lower 'id' than x.x.1.0 (as an example). <- was causing libvirtd test to fail * Revert migration now finishes * The OSAPI v1.0 image create POST request should store the instance_id as a Glance property * There was a recent change to how we should flip FLAGS in tests, but not all tests were fixed. This covers the rest of them. I also added a method to test.UnitTest so that FLAGS.verbose can be set. This removes the need for flags to be imported from a lot of tests * Bad method call * Forgot the instance_id parameter in the finish call * Merged in the power action changes * Removed test show() method * Fixed rescue/unrescue since the swap changes landed in trunk. Minor refactoring (renaming callback to _callback since it's not used here) * Updates to the XenServer glance plugin so that it obtains the set of existing headers and sends them along with the request to PUT a snapshotted image into glance * Added admin-only decorator * This updates nova-ajax-console-proxy to correctly use the new syntax introduced last week by Zed Shaw * Merged trunk * Changed all references to 'power state' to 'power action' as requested by review * Added missing tests for server actions Updated reboot to verify the reboot type is HARD or SOFT Fixed case of having an empty flavorref on resize * Added more informative docstring * Added XML serialization for server actions * Removed debugging code * Updated create image server action to respect 1.1 * Fixes lp819397 * Fixed rescue unit tests * Nuke hostname. We don't use it * Split serverXMLDeserializers into v1.0 and v1.1 * another merge * Removed temporary debugging raise * Merged trunk * modify _setup_network for flatDHCP as well * Merged trunk * Added xenhost config get/setting * fix syntax error * Fixed rescue and unrescue * remove storing original flags verbosity * remove set_flags_verbosity.. it's not needed * Merged trunk * OS v1.1 is now the default into novarc * added NOVA_VERSION to novarc * remove unused reference to exception object * Add a test for empty dns list in network_info * Fix comments * uses 2.6.0 novaclient (OS API 1.1 support) * Fix to nova-ajax-console-proxy to use the new syntax * Update the OS API servers metadata resource to match the current v1.1 specification - move /servers//meta to /servers//metadata - add PUT /servers//metadata * fix pep8 issues that are in trunk * test_host_filter setUp needs to call its super * fix up new test_server_actions.py file for flags verbosity change * merged trunk * fixing typo * Sync with latest tests * The logic for confirming and reverting resizes was flipped. As a result, reverting a resize would end up deleting the source (instead of the destination) instance, and confirming would end up deleting the destination (instead of the source) instance * Found a case where an UnboundLocalError would be raised in xenapi_conn.py's wait_for_task() method. This fixes the problem by moving the definition of the unbound name outside of the conditional * Moves code restarting instances after compute node reboot from libvirt driver to compute manager; makes start_guests_on_host_boot flag global * Moved server actions tests to their own test file. Updated stubbing and how flags are set to be in line with how they're supposed to be set in tests * merging trunk * add test for spawning a xenapi instance with an empty dns list * Nova uses instance_type_id and flavor_id interchangeably when they almost always different values. This can often lead to an instance changing instance_type during migration because the values passed around internally are wrong. This branch changes nova to use instance_type_id internally and flavor_id in the API. This will hopefully avoid confusion in the future * The OSAPI v1.0 image create POST request should store the instance_id as a Glance property * Linked to bug * Changed the definition of the 'action' dict to always occur * Updates to the XenServer glance plugin so that it obtains the set of existing headers and sends them along with the request to PUT a snapshotted image into glance * Fixed rescue and unrescue * Added in tests that verify tests are skipped appropriately * Merged trunk * Merged dietz' branch * Update HACKING: - Make imports more explicit - Add some dict/list formatting guidelines - Add some long method signature/call guidelines - Add explanation of i18n * Pep8 cleanup * Defaults `dns` to '' if not present, just as we do with the other network info data * Removes extraneous bodies from certain actions in the OSAPI servers controller * Revert should be sent to destination node and confirm should be sent to source node * Conditionals were not actually runing the tests when they were supposed to. Renamed example testcases * fix pylint W0102 errors * Remove whitespaces from name and description before creating security group * Remove instances of the "diaper pattern" * Fixes lp819397 * Initial version * Load instance_types in downgrade method too * Fix trailing whitespace (PEP8) * fix test_cloud FLAGS setting * dist scheduler flag setting fixes * fix scheduler tests that set FLAGS * fix more tests that use FLAGS setting * all subclasses of ComputeDriver should fully implement the interface of the destroy method * align multi-line string * fix test_s3 FLAGS uses * switch FLAGS.* = in tests to self.flags(...) remove unused cases of FLAGS from tests modified test.TestCase's flags() to allow multiple overrides added missing license to test_rpc_amqp.py * follow convention when raising exceptions * pep8 fixes * use an existing exception * use correct exception name * fix duplicate function name * fix undefined variable error * fix potential runtime exception * remove unused imports * remove bit-rotted code * more cleanup of API tests regarding FLAGS * fix use of FLAGS in openstack API servers tests to use the new way * Removes extraneous body argument from server controller methods * Merged trunk * Merged trunk * Default dns to '' if not present * replaced raise Exception with self.fail() * Removed dependancy on os.getenv. Test cases now raise Exception if they are not properly skipped * PEP8 issue * whoops, got a little comma crazy * Merged trunk and fixed conflicts to make tests pass * fumigate non-pep8 code * Use flavorid only at the API level and use instance_type_id internally * Yet another conflict resolved * forgot to remove comment * updated to work w/ changes after merged trunk fixing var renaming. the logic which forces default to FLAGS.network_size if requested cidr was larger, was also applying to requested cidrs smaller than FLAGS.network_size. Requested cidrs smaller than FLAGS.network_size should be ignored and not overriden * merged from trunk * merged from trunk * merge trunk * Launchpad automatic translations update * Resolved pep8 errors * renaming test_skip_unless_env_foo_exists() * merging trunk * Removed trailing whitespace that somehow made it into trunk * Merged trunk * Removed duplicate methods created by previous merge * Fixes lp819523 * Fix for bug #798298 * fix for lp816713: In instance creation, when nova-api is passed imageRefs generated by itself, strip the url down to an id so that default glance connection params are used * Added check for --allow-admin-api to the host API extension code * Another unittest * Merged trunk * Add support for 300 Multiple Choice responses when no version identifier is used in the URI (or no version header is present) * Merged trunk * Glance has been updated for integration with keystone. That means that nova needs to forward the user's credentials (the auth token) when it uses the glance API. This patch, combined with a forth-coming patch for nova_auth_token.py in keystone, establishes that for nova itself and for xenapi; other hypervisors will need to set up the appropriate hooks for their use of glance * Added changes from mini server * raise correct error * Minor test fixes * fix failing tests * fix pep8 complaints * merge from trunk * Fixed a missing space * Bad merge res * merge the trunk * fix missing method call and add failing test * Removed duplicate xattr from pip-requires * Fixed merge issues * Merged trunk * merged trunk * remove unused parameter * Merged trunk * Merged from lab * fix pylint errors * fix pylint errors * merge from trunk * Moves image creation from POST /images to POST /servers//action * Fixed several typos * Changed migration to be an admin only method and updated the tests * - Remove Twisted dependency from pip-requires - Remove Twisted patch from tools/install_venv.py - Remove eventlet patch from tools/install_venv.py - Remove tools/eventlet-patch - Remove nova/twistd.py - Remove nova/tests/test_twistd.py - Remove bin/nova-instancemonitor - Remove nova/compute/monitor.py - Add xattr to pip-requires until glance setup.py installs it correctly - Remove references to removed files from docs/translations/code * Fix an error in fetch_image() * Get instance by UUID instead of id * Merged trunk * Added the powerstate changes to the plugin * pull-up from trunk/fix merge conflict * fixing typo * refactored tests * pull-up from trunk * Removing the xenapi_image_service flag in favor of image_service * cleanup * Merged trunk * abstraction of xml deserialization * fixing method naming problem * removing compute monitor * merge from trunk * code was checking for key in sqlalchemy instance and will ignore if value is None, but wasn't working if floating_ip was a non-sqlalchemy dict obj. Therefore, updated the error checking to work in both caes * While we currently trap JSON encoding exceptions and bail out, for error notification it's more important that *some* form of the message gets out. So, we take complex notification payloads and convert them to something we know can be expressed in JSON * Better error handling for resizing * Adds the auth token to nova's RequestContext. This will allow for delegation, i.e., use of a nova user's credentials when accessing other services such as glance, or perhaps for zones * merged trunk rev1348 * Launchpad automatic translations update * added some tests for network create & moved the ipv6 logic back into the function * merged with nova trunk * Added host shutdown/reboot conditioning * avoid explicit type checking, per brian waldon's comment * Added @test.skip_unless and @test.skip_if functionality. Also created nova/tests/test_skip_examples.py to show the skip cases usage * fix LinuxBridgeInterfaceDriver * merge trunk, resolve conflict in net/manater.py in favor of vif-plug * initial commit of vif-plugging for network-service interfaces * Merged trunk * pep8 fixes * Controller -> self * Added option for rebooting or shutting down a host * removed redundant logic * merged from trunk * adding a function with logic to make the creation of networks validation a bit smarter: - detects if the cidr is already in use - when specifying a supernet to be split into smaller subnets via num_networks && network_size, ensures none of the returned subnets are in use by either a subnet of the same size and range, nor a SMALLER size within the same range. - detects if splitting a supernet into # of num_networks && network_size will fit - detects if the supernet/cidr specified is conflicting with a network cidr that currently exists that may be a larger supernet already encompassing the specified cidr. " * Carry auth_token in nova's RequestContext * merge with trunk, resolve conflicts * Revert hasattr() check on 'set_auth_token' for clients * it makes the pep8, or else it gets the vim again * merge from trunk * Fixes this issue that I may have introduced * Update compute tests to use new exceptions * Resync to trunk * Remove copy/paste error * Launchpad automatic translations update * Launchpad automatic translations update * Fixed review comments: Put parsing logic of network information in create_instance_helper module and refactored unit testcases as per the changed code * pep8 * wow, someone whent all crazy with exceptions, why not just return an empty list? * Only call set_auth_token() on the glance client if there's one available * Make unit tests pass * merging * only attempt to get a fixed_up from a v4 subnet if there is a v4 subnet * FlavorNotFound already existed, no need to create another exception * Created exceptions for accepting in OSAPI, and handled them appropriately * only create fixed_ips if we have an ipv4 range * Revert to using context; to avoid conflict, we import context module as nova_context; add context to rescue * You see what happens Danny when you forget to close the parenthesis * Merged with trunk * Merged trunk * allow the manager to try to do the right thing * allow getting by the cidr_v6 * the netmask is implied by the cidr, so use that to display the v6 subnet * either v4 or v6 is required * merging trunk * pull-up from trunk and conflict resolution * merge trunk * stwart the switch to just fixed_range * typo * Round 1 of changes for keystone integration. * Modified request context to allow it to hold all of the relevant data from the auth component. * Pulled out access to AuthManager from as many places as possible * Massive cleanup of unit tests * Made the openstack api fakes use fake Authentication by default * require either v4 or v6 * pull-up from trunk * Fix various errors discovered by pylint and pyflakes * fixing underline * removing extra verbage * merged trunk * This change creates a minimalist API abstraction for the nova/rpc.py code so that it's possible to use other queue mechanisms besides Rabbit and/or AMQP, and even use other drivers for AMQP rather than Rabbit. The change is intended to give the least amount of interference with the rest of the code, fixes several bugs in the tests, and works with the current branch. I also have a small demo driver+server for using 0MQ which I'll submit after this patch is merged * removing dict() comment * adding more on return_type in docstrings * Fixes issue with OSAPI passing compute API a flavorid instead of an instance identifier. Added tests * made the whole instance handling thing optional * Reorganize the code to satisfy review comments * pull-up from trunk; fix problem obscuring context module with context param; fix conflicts and no-longer-skipped tests * remove unused import * --Stolen from https://code.launchpad.net/~cerberus/nova/lp809909/+merge/68602 * removing 'Defining Methods' paragraph * rewording * Use the util.import_object to import a module * rewording * one last change * upgrades * expanding * merged trunk and fix time call * updating HACKING * Fixing lxml version requirement * Oops, I wasn't actually being compatible with the spec here * bumping novaclient version * Fixes lp:818050 * Updated resize to call compute API with instance_type identifiers instead of flavor identifiers. Updated tests * fix run_tests.sh * merge trunk * Fixed changes missed in merge * fix more spacing issues, and removed self link from versions template data * merged trunk * added instance support to to_primitive and tests * merged trunk and fixed post_live_migratioin_at_destination to get nw_info * Removing unnecessary imports * Added xml schema validation for extensions resources. Added corresponding xml schemas. Added lxml dep, which is needed for doing xml schema validation * remove extra log statement * api/ec2: rename CloudController._get_instance_mapping into _format_instance_mapping * fixed typo * merge with trunk * fixed pep8 issues and removed unnecessary factory function * returned vsa_manager, nova-manage arg and print changes * Added the config values to the return of the host_data method * Adds XML serialization for servers responses that match the current v1.1 spec * Added methods to read/write values to a config file on the XenServer host * fix pep8 errors * minor cleanup * Removed unused Duplicate catch * Fix to_dict() and elevated() to preserve auth_token; revert an accidental change from context.get_admin_context() to simply context * Fixes bug 816604, which is the problem that timeformat in server responses for updated and created are incorrect. This fix just converts the datetime into the correct format * merging trunk * pep8 * moving server backup to /servers//action instead of POST /images * Simplified test cases * Rewrite ImageType enumeration to be more pythonic * refactoring and make self links correct (not hard coded) * Fix tests for checking pylint errors * Use utils.utcnow. Use True instead of literal 1 * Some tests for resolved pylint errors * simplify if statement * merge trunk * use wsgi XMLNS/ATOM vars * Updated deserialization of POST /servers in the OSAPI to match the latest v1.1 spec * Removed unused Duplicate catch * pull-up from trunk * Catch DBError for duplicate projects * Catch DBError for duplicate projects * Make network_info truly optional * trunk infected with non-pep8 code * unicode instead of str() * Add a flag to set the default file mode of logs * merge trunk * make payload json serializable * moved test * Removed v1_1 from individual tests * merge from trunk * merge to trunk * more commented code removed * some minor cosmetic work. addressed some dead code section * merged with nova-1336 * prior to nova-1336 merge * remove authman from images/s3.py and replace with flags * fix tests broken in the merge * merged trunk * fix undeclared name error * fix undeclared name error * fix undeclared name error * fix undeclared name errors * remove unused assignment which causes undeclared name error * fix undefined variable errors * fix call to nonexistant method to_global_ipv6. Add myself to authors file * Make network_info truly optional * updates handling of arguments in nova-manage network create. updates a few of the arguments to nova-manage and related help. updates nova-manage to raise proper exceptions * forgot a line * fixed create_networks ipv6 management * Fail silently * typo * --bridge defaults to br100 but with a deprecation warning and to be removed in d4 * Reverting to original code * use ATOM_XMLNS everywhere * merge trunk * added unit testcase to increase code coverage * stub out VERSIONS for the tests * put run_tests.sh back to how it was * Fixed conflict * Fail silently * Merged with trunk and fixed broken unit test cases * Fix the skipped tests in vmwareapi and misc spots. The vmware networking stuff is stubbed out, so the tests can be improved there by fixing the fakes * pep8 issue * refactoring MetadataXMLDeserializer in wsgi/common * move viewbuilder and serializer tests into their own test cases * Fix all of the skipped libvirt tests * fix typo * merged trunk * Fixes typo in attach volume * utilize _create_link_nodes base class function * default the paramater to None, not sure why it was required to begin with * pass None in for nw_info * added test for accept header of atom+xml on 300 responses to make sure it defaults back to json, and reworked some of the logic to make how this happens clearer * Drop FK before dropping instance_id column * moved rest of build logic into builder * Drop FK before dropping instance_id column * Removed FK import * Delete FK before dropping instance_id column * oops! moved ipv6 block back into the for loop in network manager create_networks * update everything to use global VERSIONS * merged trunk * change local variable name * updated handling of v6 in network manager create_networks to it can receive None for v6 args * added ipv6 requirements to nova-manage network create. changed --network to --fixed_range_v4 * remove unexpected parameter * fixed xmlns issue * updated the bridge arg requirements based on manager * this change will require that local urls be input with a properly constructed local url: http://localhost/v1.1/images/[id]. Such urls are translated to ids at the api layer. Previously, any url ending with and int was ok * make atom+xml accept header be ignored on 300 responses in the VersionsRequestDeserializer * Removed superfluous parameter * Use auth_token to set x-auth-token header in glance requests * Fixed the virt driver base * Some work on testing. Two cases related to lp816713 have some coverage already: using an id as an imageRef (test_create_instance_v1_1_local_href), and using a nova href as a url (test_create_instance_v1_1) * Remove xenapi_inject_image flag * Add a flag to set the default file mode of logs * fixed issue with factory for Versions Resource * Fix context argument in a test; add TODOs * improved the code per peer review * Add context argument a lot more places and make unit tests work * fix hidden breakage in test * Remove xenapi_inject_image flag * removed unused import * pep8 * pep8 * updated nova-manage create network. better help, handling of required args, and exceptions. Also updated FLAG flat_network_bridge to default to None * Re-enables and fixes test_cloud tests that broke from multi_nic * Fix for boto2 * Re-enables and fixes test_cloud tests that broke from multi_nic * add invalid device test and make sure NovaExceptions don't get wrapped * merge from trunk * pep8 * pep8 * updating common metadata xml serializer tests * Cleaned up test_servers * Moved server/actions tests to test_server_actions.py * updating servers metadata resource * pull-up from trunk * Address merge review concerns * Makes security group rules with the newer version of the ec2 api and correctly supports boto 2.0 * merging parent branch servers-xml-serialization * updating tests * updated serializer tests for multi choice * pep8 cleanup * multi choice XML responses with tests * merged recent trunk * merge with trunk * Cherry-pick of tr3buchet's fix for add_fixed_ip_to_instance * Resolved conflicts with trunk * fix typo in attach_volume * fix the last of them * fake plug for vif driver * couple more fixes * cleanup network create * code was checking for key in sqlalchemy instance but if floating_ip is a non-sqlalchemy dict instance instead, value=None will cause NoneType exception * fix more tests * fix the first round of missing data * fix the skipped tests in vmwareapi xenapi and quota * Add myself to authors * Implements a simplified messaging abstraction with the least amount of impact to the code base * fix for lp816713: In instance creation, when nova-api is passed imageRefs generated by itself, strip the url down to an id so that default glance connection params are used * cloud tests all passing again * added multi_choice test just to hit another resource * pep8 fixes * initial working 300 multiple choice stuff * cherry-pick tr3buchet's fix for milestone branch * cleanup * pep8 * pep8 * First pass at converting this stuff--pass context down into vmops. Still need to fix unit tests and actually use auth_token from the context.. * pep8 and simplify rule refresh logic * pep8 * merging parent branch lp:~rackspace-titan/nova/osapi-create-server * adding xml deserialization for createImage action * remove some logging, remove extra if * compute now appends self.host to the call to add an additional fixed ip to an instance * Update security gropu rules to properly support new format and boto 2.0 * Updated test stubs to contain the correct data Updated created and updated in responses to use correct time format * pep8 compliance * VSA volume creation/deletion changes * moved v1.1 image creation from /images to /servers//action * fixed per peer review * passing host from the compute manager for add_fixed_ip_to_instance() * adding assert to check for progress attribute * removing extra function * Remove debugging code * cleanup * fixed minor issues * reverting tests to use imageRef, flavorRef * updating imageRef and flavorRef parsing * Updates to the compute API and manager so that rebuild, reboot, snapshots, and password resets work with the most recent versions of novaclient * merging trunk; resolving conflicts * Add OpenStack API support for block_device_mapping * queries in the models.Instance context need to reference the table by name (fixed_ips) however queries in the models.FloatingIp context alias the tables out properly and return the data as fixed_ip (which is why you need to reference it by fixed_ip in that context) * added warning when size of subnet(s) being created are larger than FLAG.network_size in attempt to alleviate confusion. For example, currently when 'nova-manage network create foo 192.168.0.0/16', the result is that it creates a 192.168.0.0/24 instead without any indication to why * xml deserialization works now * merged from trunk * merged trunk * merging trunk * pull-up from trunk * got rid of print * got rid of more xml string comparisons * atom test updates * got rid of some prints * got rid of string comparisons in serializer tests * removing objectstore and image_service flag checking * Updates /servers requests to follow the v1.1 spec. Except for implementation of uuids replacing ids and access ips both of which are not yet implemented. Also, does not include serialized xml responses * fixed detail xml and json tests that got broken * updated atom tests * Updated ServerXMLSerializer to utilize the IPXMLSerializer * merged trunk * merge from trunk * fix pep8 issues * fix issue with failing test * merged trunk * I'm sorry, for my fail with rebasing. Any way previous branch grew to many other futures, so I supersede it. 1. Used optparse for parsing arg string 2. Added decorator for describe method params 3. Added option for assigning network to certain project. 4. Added field to "network list" for showing which project owns network * Moved the VIF network connectivity logic('ensure_bridge' and 'ensure_vlan_bridge') from the network managers to the virt layer. In addition, VIF driver class is added to allow customized VIF configurations for various types of VIFs and underlying network technologies * merge with trunk, resolve conflicts * fix pep8 * Launchpad automatic translations update * removing rogue print * removing xenapi_image_service flag * adding to authors * fixing merge conflict * merge from trunk * initial stuff to get away from string comparisons for XML, and use ElementTree * merged with 1320 * volume name change. some cleanup * - Updates /images//meta and /images//meta/ to respect the latest specification - Renames ../meta to ../metadata - Adds PUT on ../metadata to set entire container (controller action is called update_all) * Adds proper xml serialization for /servers//ips and /servers//ips/ * some cleanup. VSA flag status changes. returned some files * Pass on auth_token * Warn user instead of ignoring * Added ensuring filter rules for all VMs * atom and xml_detail working, with tests * Adds the -c|--coverage flag to run_tests.sh to generate a local code coverage report * Estetic fix * Fix boot from volume failure for network block devices * Bug #796813: vmwareapi does not support distributed vswitch * modified to conform to latest AWS EC2 API spec for authorize & revoke ingress params using the IpPermissions data structure, which nests lists of CIDR blocks (IpRanges) as well as lists of Group data * Fixes faults to use xml serializers based on api version. This fixed bug 814228 * Fixes a typo in rescue instance in ec2 api. This is mnaser's fix, I just added a test to verify the change * Fixes bug 797250 where a create server request with the body '{"name":"server1"}' results in a HTTP 500 instead of HTTP 422 * adding xml serialization for /servers//ips and /servers//ips/ * add a simple broken test to verify the bug * Fixed old libvirt semantics, added resume_guests_state_on_host_boot flag * xml version detail working with tests * adding testing to solidify handling of None in wsgi serialization * Added check to make sure there is a server entity in the create server request * Fixed some typos in log lines * removed prints, got versions detail tests passing, still need to do xml/atom * reverting some wsgi-related changes * merged trunk * removed print lines * This fixes the xml serialization of the /extensions and /extensions/foo resources. Add an ExtensionsXMLSerializer class and corresponding unit tests * added 1.0 detail test, added VersionRequestDeserializer to support Versions actions properly, started 300/multiple choice work * fix for reviews * Fixed bad test Fixed using wrong variable * Moved the exception handling of unplugging VIF from virt driver to VIF driver. Added better comments. Added OpenStack copyrights to libivrt vifs.py * pep8 + spelling fixes * Floating IP DB tests * Updated Faults controller to choose an xml serializer based on api version found in the request url * removing unnecessary assignments * Hotfix * Some estetic refactoring * Fixing PEP8 compliance issues * adding --fixes * fixing typos * add decorator for 'dns' params * merge with trunk, resolve conflicts * pep8 * Fixed logging * Fixed id * Fixed init_host context name * Removed driver-specific autostart code * fix 'version' command * Add bug reference * Use admin context when fetching instances * Use subscript rather than attribute * Make IP allocation test work again * Adjust and re-enable relevant unit tests * some file attrib changes * some cosmetic changes. Prior to merge proposal * Added test_serialize_extenstions to test ExtensionsXMLSerializer.index() * tests: unit tests for describe instance attribute * tests: an unit test for nova.compute.api.API._ephemeral_size() * tests: unit tests for nova.virt.libvirt.connection._volume_in_mapping() * tests/glance: unit tests for glance serializer * tests: unit tests for nova.virt * tests: unit tests for nova.block_device * db/api: fix network_get_by_cidr() * image/glance: teach glance block device mapping * tests/test_cloud:test_modify_image: make it pass * nova/tests/test_compute.py: make test_compute.test_update_block_device_mapping happy * test_metadata: make test_metadata pass * test_compute: make test_compute pass * test_libvirt: fix up for local_gb * virt/libvirt: teach libvirt driver swap/ephemeral device * virt/libvirt: teach libvirt driver root device name * compute/api: pass down ephemeral device info * compute/manager, virt: pass down root device name/swap/ephemeral to virt driver * ec2/get_metadata: teach block device mapping to get_metadata() * api/ec2: implement describe_instance_attribute() * db/api: block_device_mapping_update_or_create() * block_device: introduce helper function to check swap or ephemeral device * ec2utils: factor generic helper function into generic place * Launchpad automatic translations update * Config-Drive happiness, minus smoketest * merged with latest nova-1308 * more unittest changes * Last patch broke libvirt mapping of network info. This fixes it * Fixes an issue with out of order operations in setup_network for vlan mode in new ha-net code * Merged with 1306 + fix for dns change * update netutils in libvirt to match the 2 dns setup * merge * merge with 1305 * make sure dhcp_server is available in vlan mode * Adds ability to set DNS entries on network create. Also allows 2 dns servers per network to be specified * pep8-compliant. Prior to merge with 1305 * Reverted volume driver part * pep cleanup * remove auth manager from instance helper * docstring update * pass in the right argument * pull out auth manager from db * merge trunk * default to None in the method signature * merged trunk * remove some more stubouts and fakes * clean up fake auth manager in other places * same as: https://code.launchpad.net/~tr3buchet/nova/lp812489/+merge/68448 fixes: https://bugs.launchpad.net/nova/+bug/812489 but in a slightly different context * pep8 * updating images metadata resource * ...and this is me snapping back into reality removing all trace of ipsets. Go me * fixed networks not defined error when creating instances when no networks exist * fix test_access * This is me being all cocky, thinking I'll make it use ipsets.. * fix auth tests * Add i18n for logging, changed create_bridge/vlan to should_create_bridge/vlan, changed unfilter_instance's keyword param to positional, and added Dan's alternate ID to .mailmap * fix extensions tests * merge trunk * fix all tests * pep8 fixes * Updated the comments for VMWare VIF driver * initial test for v1.1 detail request * Moved restaring instances from livbirt driver to ComputeManager * Added network_info to unfilter_instance to avoid exceptions when shutting down instances * Removed unused exception object * Fixed the missing quotes for 802.1Qbh in libvirt template * add decorator for multi host option * Merged Dan's branch * Merged trunk * use new 'create_vlan' field in XenAPIBridgeDriver * merge with trunk, resolve conflicts * remove IPy * for libvirt OVS driver, do not make device if it exists already * refactor xenapi vif plug to combine plug + get_vif_rec, tested and fixed XenAPIBridgeDriver * Correctly add xml namespaces to extensions xml * Added xml serialization for GET => /extensions. Added corresponding tests * merge ryu's branch * remove debugging * fix a whole bunch of tests * start removing references to AuthManager * change context to maintain exact time, store roles, use ids instead of objects and use a uuid for request_id * Resolved conflict with trunk * Adds an XML serializer for limits and adds tests for the Limits view builder * pep8 * add in the right number of fields * pep8 * updated next-available to use utc time * merge trunk * rename in preperation for trunk merge * only include dns entries if they are not None in the database * Updated the compute API so that has_finished_migration uses instance_uuid. Fixes some regressions with 1295-1296 * only use the flag if it evaluates true * Catch the FixedIpNotFoundForInstance exception when no fixed IP is mapped to instance * Updated time-available to be correct format Fixed old tests to respect this * This fixes issues with invalid flavorRef's being passed in returning a 500 instead of a 400, and adds tests to verify that two separate cases work * merge from trunk * Moving lp:~rackspace-titan/nova/extensions-xml-serialization to new branch based off of trunk. To remove dep on another branch * Perform fault wrapping in the openstack WSGI controller. This allows us to just raise webob Exceptions in OS API controllers with the appropriate explanations set. This resolves some inconsistencies with exception raising and returning that would cause HTML output to occur when faults weren't being handled correctly * pep8 and stuff * Some code was recently added to glance to allow the is_public filter to be overridden. This allows us to get all images and filter properly on the nova side until keystone support is in glance. This fixes the issue with private images and snapshots disappearing from the image list * pep8 * Merged with trunk which includes ha-net changes * Updated the compute API so that has_finished_migration uses instance_uuid. Fixes some regressions with 1295-1296 * Updating the /images and /images/detail OSAPI v1.1 endpoints to match spec w/ regards to query params * Ensure valid json/xml/atom responses for versions requests * Update OSAPI v1.1 /flavors, /flavors/detail, and /flavors/ to return correct xml responses * Renamed the virt driver resize methods to migration for marginally more understandable code * allow 2 dns servers to be specified on network create * allow 2 dns servers to be specified on network create * Fixes lp813006 * Fixes lp808949 - "resize doesn't work with recent novaclient" * minor fix * Some broken tests from my other merge * Fixed import issue * added tests, updated pep8 fixes * Changed test_live_migration_raises_exception to use mock for compte manager method * fixed another issue with invalid flavor_id parsing, and added tests * minor cleanup * pep8 issue * cleanup * merge with trunk * Fixed the localization unit test error in the vif driver logging * cleanup tests and fix pep8 issues * removed vif API extension * Fixed Xenapi unit test error of test_rescue * Slight indentation change * Merged Dan Wendlandt's branch and fixed pep8 errors * Added call to second coverage invocation * Fixed an issue where was invoked before it was defined in the case of a venv * - Add 'fixed_ipv6' property to VirtualInterface model - Expose ipv6 addresses in each network in OSAPI v1.1 * forgot to add xenapi/vif.py * Perform fault wrapping in the openstack WSGI controller. This allows us to just raise webob Exceptions in OS API controllers with the appropriate explanations set. This resolves some inconsistencies with exception raising and returning that could cause HTML output to occur when an exception was raised * Added LimitsXMLSerializer Added LimitsViewBuidlerV11Test test case * Added create_vlan/bridge in network unit test * Add OpenStack API support for block_device_mapping * Changed the default of VIF driver * Fixed PEP8 issues * Combined bridige and vlan VIF driver to allow better transition for current Nova users * Merged trunk * Merged lp:~~danwent/nova/network-refactoring * Adds HA networking (multi_host) option to networks * CHanges based on feedback * Older Windows agents are very picky about the data sent to it. It also requires the public key for the password exchange to be in a string format and not an integer * adding flavors xml serialization * added versions list atom test and it passes * Set the status_int on fault wrapped exceptions. Fixes WSGI logging issues when faults are returned * Fix plus passing tests * remove debug prints * merge ryu's branch * update for ryu's naming changes, fix some bugs. tested with OVSDriver only so far * Fixes bug #807764. Please disregard previous proposal with incorrect bug # * Whoops * Added LP bug num to TODO * Split tests into 2 * Fix email address in Author * Make sure reset_network() call happens after we've determined the agent is running * pep8 * Merged trunk * Added Dan Wendlandt to Authors, and fixed failing network unit tests * merged trunk * Made all but one test pass for libvirt * Moved back allow_project_net_traffic to libvirt conn * Set the status_int on fault wrapped exceptions. Fixes WSGI logging issues when faults are returned * lp812489: better handling of periodic network host setup to prevent exception * add smoketests to verify image listing * default image to private on register * correct broken logic for lxc and uml to avoid adding vnc arguments (LP: #812553) * Stupid merge and fixed broken test * Most of the XenServer plugin files need the execute bit set to run properly. However, they are inconsistent as it is, with one file having the execute bit set, but the another having it set when it is not needed * Made the compute unit tests to pass * Host fix * Created _get_instance_nw_info method to clean up duplicate code * initial changes for application/atom+xml for versions * Update Authors file * network api release_floating_ip method will now check to see if an instance is associated to it, prior to releasing * merge from lp:~midokura/nova/network-refactoring-l2 * Corrects a bad model lookup in nova-manage * correct indentation * Fixes lp809587 * Fix permissions for plugins * Ya! Apparently sleep helps me fix failing tests * Some older windows agents will crash if the public key for the keyinit command is not a string * added 'update' field to versions * First attempt at vmware API VIF driver integration * Removed unnecessary context parameter * Merged get_configurations and plug of VIF drivers * Moved ensure_vlan_bridge of vmware to VIF driver * Added network_info parameter to all the appropriate places in virt layers and compute manager * remove xenapi_net.py from network directory, as this functionality is now moved to virt layer * first cut of xenserver vif-plugging, some minor tweaks to libvirt plugging * Refactor device type checking * Modified alias ^Cd minor fixes * Merged with trunk * Reverted to original code, after network binding to project code is in integration code for testing new extension will be added * Fixed broken unit testcases after adding extension and minor code refactoring * Added a new extension instead of directly making changes to OS V1.1. API * have to use string 'none' and add a note * tell glance to not filter out private images * updated links to use proper atom:link per spec * Renamed setup_vif_network to plug_vif * Fixes lp813006 - inconsistent DB API naming * move import network to the top * Merged lp:~danwent/nova/network-refactoring-l2 * merged from trunk * network api release_floating_ip method checks if an instance associated to the floating prior to releasing. added test * Added detroy_vif_network * Functionality fixed and new test passing * Updates to the compute API and manager so that rebuild, reboot, snapshots, and password resets work with the most recent versions of novaclient * better handling of periodic network host setup * Merged trunk * Removed blank lines * Fix unchecked key reference to mappings['gateway6']. Fixes LP #807764 * add downgrade * correct broken logic for lxc and uml to avoid adding vnc arguments (LP: #812553) * Beginnings of the patch * Fixed equality comparison bug in libvirt XML * Fixed bad parameters to setup_vif_networks * Zapped an extra newline * Merged with trunk * Add support for generating local code coverage report * respecting use_ipv6 flag if set to False * merged trunk * merged trunk * fixed reviewer's comment. 1. ctxt -> context, 2. erase unnecessary exception message from nova.sccheduler.driver * cleanup * merge of ovs L2 branch * missed the vpn kwarg in rpc * fix bad merge * change migration number * merged trunk * This change adds the basic boot-from-volume support to the image service * Fixed the broken tests again * Merging from upstream * Some missed instance_id casts * pep8 cleanup * adding --fixes * adding fixed_ipv6 property to VirtualInterface model; exposing ipv6 in api * VSA schedulers reorg * Merged with trunk * fix issues that were breaking vlan mode * fixing bad lookup * Updates to the XenServer agent plugin to fix file injection: * Don't jsonify the inject_file response. It is already json * localization changes. Removed vsa params from volume cloud API. Alex changes * Added auth info to XML * returncode is an integer * - Fixed the conflift in vmops.py * Check returncode in get_agent_features * resolved pep8 issues * merged from trunk * Updated servers to choose XML serializer based on api version * pep8 * updated servers to use ServerXMLSerializer * added 'create' to server XML serializer * added 'detail' to server XML serializer * convert group_name to string, incase it's a long * nova/api/ec2/cloud.py: Rearranged imports to be alphabetical as per HACKING * pep8'd * Extended test to check for error specific error code and test cover for bad chars * Some basic validation for creating ec2 security groups. (LP: #715443) * changed to avoid localization test failure * Initial test case proving we have a bug of, ec2 security group name can exceed 255 chars * added index to servers xml serializer * Change _agent_has_method to _get_agent_features. Update the inject files function so that it calls _get_agent_features only once per injected file * pep8 * Moved Metadata Serialization Test * Added ServerXMLSerializer with working 'show' method Factored out MetadataXMLSerializer from images and servers into common * added missing drive_types.py * added missing instance_get_all_by_vsa * merged with 1280 * VSA: first cut. merged with 1279 * Added some unit and integration tests for updating the server name via the openstack api * renamed priv method arg_to_dict since it's not just used for revoke. modified to conform to latest AWS EC2 API spec for authorize & revoke ingress params using the IpPermissions data structure, which nests lists of CIDR blocks (IpRanges) as well as lists of Group data * got rid of return_server_with_interfaces and added return_server_with_attributes * Added ServerXMLSerializationTest * take out print statements * Ensures a bookmark link is returned in GET /images. Before, it was only returned in GET /images/detail * One last nit * Tests passing again * put maxDiff in setUp * remove get_uuid_from_href and tests * stop using get_uuid_from_href for now * Updated with some changes from manual testing * Updates to the XenServer agent plugin to fix file injection: * merging trunk * use id in links instead of uuid * pep8 fixes * fix ServersViewBuilderV11Tests * Adds greater configuration flexibility to rate limiting via api-paste.ini. In particular: * return id and uuid for now * merge with trunk * Adds distributed scheduler and multinic docs to the Developer Reference page * Added more view builder tests * merged wills revisions * Added ViewBuilderV11 tests Fixed bug with build detail * fix issues with uuid and old tests * - Present ip addresses in their actual networks, not just a static public/private - Floating ip addresses are grouped into the networks with their associated fixed ips - Add addresses attribute to server entities * Update the agent plugin so that it gets 'b64_contents' from the args dict instead of 'b64_file' (which isn't what nova sends) * Adding unit and integration tests for updating the server name via the 1.1 api * merge with trunk, resolve conflicts * remove argument help from docstrings + minor fix * Fixes Bug #810149 that had an incomplete regex * Existing Windows agent behaves differently than the Unix agents and require some workarounds to operate properly. Fixes are going into the Windows agent to make it behave better, but workarounds are needed for compatibility with existing installed base * Add possibility to call commands without subcommands * fix redundency * Updated Authors * Fixed remove_version_from_href Added tests * mistakenly commited this code into my branch, reverting it to original from trunk * Merged with trunk and fixed pep errors * added integrated unit testcases and minor fixes * First pass * corrected catching NoNetworksDefined exception in host setup and getting networks for instance * catching the correct exception * Added ServersTestv1_1 test case Changed servers links to use uuid instead of id * pep8 * Updated old tests * add support to write to stdout rather than file if '-' is specified. see bug 810157 * merging trunk * removed self links from flavors * added commands * exposing floating ips * updated image entity for servers requests * Update the agent plugin so that it gets 'b64_contents' from the args dict instead of 'b64_file' (which isn't what nova sends) * Use assertRaises instead of try/except--stupid brain-o * Added progress attribute to servers responses * fixing bad merge * pull-up from trunk, while we're at it * Comment on parse_limits(); expand an exception message; add unit tests; fix a minor discovered bug * adding bookmark to images index * add updated and created to servers detail test, and make it work * removing mox object instantiation from each test; renaming _param to filter_name * add self to authors * use 'with' so that close is called on file handle * adding new query parameters * support '-' to indicate stdout in nova-manage project 'environment' and 'zip' * Improvements to nova-manage: 1. nova-manage network list now shows what belongs to what project, and what's the vlan id, simplifying management in case of several networks/projects 2. nova-manage server list [zone] - shows servers. Useful if you have many servers and want to list them in particular zone, instead of grep'ing nova-manage service list * Minor fixes * Merged with Trunk * updated to support and check for flavor links in server detail response * Updated responses for GET /images and GET /images/detail to respect the OSAPI v1.1 spec * merge * beginning server detail spec 1.1 fixup * Augment rate limiting to allow greater flexibility through the api-paste.ini configuration * merge from trunk * added unit testcases for validating the requested networks * Extends the exception.wrap_exception decorator to optionally send an update to the notification system in the event of a failure * trunk merge * merging trunk * updating testing; simplifying instance-level code * pep8 * adding test; casting instance to dict to prevent sqlalchemy errors * merged branch lp:~rackspace-titan/nova/images-response-formatting * Add multinic doc and distributed scheduler doc to developer guide front page * merged trunk * Don't pop 'vpn' on kwargs inside a loop in RPCAllocateFixedIP._allocate_fixed_ips (fixes KeyError) * Added Mohammed Naser to Authors file * merge with trunk * fix reviewer's comment * Starting part of multi-nic support in the guest. Adds the remove_fixed_ip code, but is incomplete as it needs the API extension that Vek is working on * Don't pop 'vpn' on kwargs inside a loop in RPCAllocateFixedIP._allocate_fixed_ips (fixes KeyError's) * added unit test cases and minor changes (localization fix and added fixed_ip validation) * Made sure the network manager accepts kwargs for FlatManager * Fix bug 809316. While attempting to launch cloudpipe instance via 'nova-manage vpn run' command, it comes up with IP from instances DHCP pool and not the second IP from the subnet, which break the forwarding rules that allow users to access the vpn. This is due 'allocate_fixed_ip' method in VlanManager doesn't receive 'vpn' as an argument from caller method and cloudpipe instances always considers as 'common' instances * cleanup * server create deserialization functional and tested * added xml deserialization unit test cases and fixe some pep errors * Updated some common.py functions to raise ValueErrors instead of HTTPBadRequests * Renamed 'nova-manage server list' -> 'nova-manage host list' to differentiate physical hosts from VMs * Allowed empty networks, handled RemoteError properly, implemented xml format for networks and fixed broken unit test cases * minor cleanup * Updated ImageXMLSerializer to serialize links in the server entity * Updated images viewbuilder to return links in server entity * updated images tests * merged trunk * pep8 * Updated remove_version_from_href to be more intelligent Added tests * Fix PEP8 for 809316 bugfix * Fix 809316 bug which prevent cloudpipe to get valid IP * fix reviewer's comment * stray debug * pep8 * fixed marshalling problem to cast_compute.. * fixed all failed unit test cases * This doesn't actually fix anything anymore, as the wsgi_refactor branch from Waldon took care of the issue. However, a couple rescue unit tests would have caught this originally, so I'm proposing this to include those * fixes an issue where network host fails to start because a NoNetworksFound exception wasn't being handled correctly * Bad test * unknowingly made these changes, reverting to original * catch raise for networks not found in network host and instance setup * Merged with Trunk * add optional parameter networks to the Create server OS API * Changed broken perms * Tests * Made xen plugins rpm noarch * Set the proper return code for server delete requests * Making the xen plugins rpm to be noarch * merging trunk * Expanding OSAPI wsgi module to allow handling of headers and status codes * Updates some of the extra scripts in contrib and tools to current versions * updating code to implement tests * merging parent wsgi-refactor * allowing controllers to return Nonew * adding headers serializer * pep8 * minor refactoring * minor tweaks * Adds an extension which makes add_fixed_ip() available through an OpenStack extension * Comment out these two asserts; Sandy will uncomment in his merge-prop * Fix the bug 800759 * merging wsgi-refactor * adding 204 response code * pre trunk merge * Missing Author updated * Allows for ports in serverRef in image create through the openstack api * Adds security groups to metadata server. Also adds some basic tests for metadata code * fix comments * fix conflict * Added vif OS API extension to get started on it * Moved 'setup_compute_network' logic into the virt layer * Added myself to authors file * Fixed two typos in rescue API command * flaw in ec2 cloud api, _get_image method , if doing a search for aki-0000009, yet that image name doesn't exist, it strips off aki- and looks for any image_id 0000009 and if there was an image match that happens to be an ami instead of aki, it will go ahead and deregister the ami instead. That behavior is unintended, so added logic to ensure that the original request image_id matches the type of image being returned from database by matching against container_format attr * Fixed up an incorrect key being used to check Zones * merged trunk * fix tests * make sure that old networks get the same dhcp ip so we don't break existing deployments * cleaned up on set network host to _setup_network and made networks allocate ips dynamically * Make the instance migration calls available via the API * Add a flag to disable ec2 or osapi * Add a flag to disable ec2 or osapi * refactor * easing up content-type restrictions * peer review fix - per vish: 'This method automatically converts unknown formats to ami, which is the same logic used to display unknown images in the ec2 api. This will allow you to properly deregister raw images, etc.' * Updated resize docstring * removing Content-Length requirement * Add docstrings for multinic extension * Add support for remove_fixed_ip() * Merged trunk * pull-up from trunk * Added unit tests * First take at migrations * Fixes bug #805604 "Multiprocess nova-api does not handles SIGTERM correctly." * image/fake: added teardown method * Updated mailmap due to wrong address in commit message * tests/test_cloud: make an unit test, test_create_image, happy * nova/compute/api.py: fixed mismerge * ec2 api _get_image method logic flaw that strips the hex16 digit off of the image name, and does a search against the db for it and ignores that it may not be the correct image, such as if doing a search for aki-0000009, yet that image name doesn't exist, it strips off aki- and looks for any image_id 0000009 and if there was an image match that happens to be an ami instead of aki, it will go ahead and deregister that. That behavior is unintended, so added logic to ensure that the original request image_id matches the type of image being returned from database by matching against container_format attr * sqlalchemy/migrate: resolved version conflict * merge with trunk * pull-up from trunk * unit test suite for the multinic extension * pull-up from trunk * Added server entity to images that only has id * Merging issues * Updated _create_link_nodes to be consistent with other create_*_nodes * Changed name of xml_string to to_xml_string * Merging issuse * Temporarily moved create server node functionality into images.py Temporarily changed image XML tests to expect server entities with only ids * Removed serverRef from some tests and viewbuilder * Comments for bugfix800759 and pep8 * Removed bookmark link from non detailed image viewbuilder * implemented clean-up logic when VM fails to spawn for xenapi back-end * Adds the os-hosts API extension for interacting with hosts while performing maintenance. This differs from the previous merge prop as it uses a RESTful design instead of GET-based actions * Added param to keep current things from breaking until we update all of the xml serializers and view builders to reflect the current spec * Fixes Bug #805083: "libvirtError: internal error cannot determine default video type" when using UML * Dried up images XML serialization * Dried up images XML serialization * stricter zone_id checking * trunk merge * cleanup * Added image index * pep8 fixes * Comments Incorporated for Bug800759 * Added API and supporting code for rebooting or shutting down XenServer hosts * fixed image create response test * Updated test_detail * Merged trunk * make server and image metadata optional * Updated the links container for flavors to be compliant with the current spec * pep8 * Renamed function * moved remove_version to common.py * unit tests * progress and server are optional * merged trunk * Add a socket server responding with an allowing flash socket policy for all requests from flash on port 843 to nova-vncproxy * pep8 compliance * Pull-up from trunk (post-multi_nic) * changed calling signature to be (instance_id, address) * correct test_show * first round * removed extra comment * Further test update and begin correcting serialization * Removed a typo error in libvirt connection.py * updated expected xml in images show test to represent current spec * pep8 fixes * Added VIF driver concept * Added the missing 'self' parameter * after trunk merge * Changed the exception type for invalid requests to webob.exc.HTTPBadRequest * Added net_attrs argument for ensure_bridge/vlan methods * Added a L2 network driver for bridge/vlan creation * wrap list comparison in test with set()s * slightly more fleshed out call path * merged trunk * merge code i'd split from instance_get_fixed_addresses_v6 that's no longer needed to be split * fix metadata test since fixed_ip searching now goes thru filters db api call instead of the get_by_fixed_ip call * clean up compute_api.get_all filter name remappings. ditch fixed_ip one-off code. fixed ec2 api call to this to compensate * clean up OS API servers getting * rename _check_servers_options, add some comments and small cleanup in the db get_by_filters call * pep8 fix * convert filter value to a string just in case before running re.compile * add comment for servers_search_options list in the OS API Controllers * pep8 fixes * fix ipv6 search test and add test for multiple options at once * test fixes.. one more to go * resolved conflict incorrectly from trunk merge * merged trunk * doc string fix * fix OS API tests * test fixes and typos * typos * cleanup checking of options in the API before calling compute_api's get_all() * a lot of major re-work.. still things to finish up * merged trunk * remove debug from failing test * remove faults.Fault wrapper on exceptions * rework OS API checking of search options * merged trunk * missing doc strings for fixed_ip calls I renamed * clarify a couple comments * test fixes after unknown option string changes * minor fixups * merged trunk * pep8 fixes * test fix for renamed get_by_fixed_ip call * ec2 fixes * added API tests for search options fixed a couple of bugs the tests caught * allow 'marker' and 'limit' in search options. fix log format error * another typo * merged trunk * missed power_state import in api fixed reversed compare in power_state * more typos * typos * flavor needs to be converted to int from query string value * add image and flavor searching to v1.0 api fixed missing updates from cut n paste in some doc strings * added searching by 'image', 'flavor', and 'status' reverted ip/ip6 searching to be admin only * compute's get_all should accept 'name' not 'display_name' for searching Instance.display_name. Removed 'server_name' searching.. Fixed DB calls for searching to filter results based on context * Refactored OS API code to allow checking of invalid query string paremeters and admin api/context to the index/detail calls. v1.0 still ignores unknown parameters, but v1.1 will return 400/BadRequest on unknown options. admin_api only commands are treated as unknown parameters if FLAGS.enable_admin_api is False. If enable_admin_api is True, non-admin context requests return 403/Forbidden * clean up checking for exclusive search options fix a cut n paste error with instance_get_all_by_name_regexp * merged trunk * python-novaclient 2.5.8 is required * fix bugs with fixed_ip returning a 404 instance searching needs to joinload more stuff * added searching by instance name added unit tests * pep8 fixes * Replace 'like' support with 'regexp' matching done in python. Since 'like' would result in a full table scan anyway, this is a bit more flexible. Make search options and matching a little more generic Return 404 when --fixed_ip doesn't match any instance, instead of a 500 only when the IP isn't in the FixedIps table * start of re-work of compute/api's 'get_all' to handle more search options * Silence warning in case tests.sqlite doesn't exist * fix libvirt test * update tests * don't set network host for multi_host networks * add ability to set multi_host in nova-manage and remove debugging issues * filter the dhcp to only respond to requests from this host * pass in dhcp server address, fix a bunch of bugs * PEP8 passed * Formatting fix * Proper Author section insertion (thx Eldar) * Signal handler cleanup, proper ^C handling * copy paste * make sure to filter out ips associated by host and add some sync for allocating ip to host * fixed zone id check * it is multi_host not multi_gateway * First round of changes for ha-flatdhcp * Updated the plugin to return the actual enabled status instead of just 'true' or 'false' * UML doesnt do vnc as well * fixed a bug which prevents suspend/resume after block-migration * Gracefull shutdown of nova-api * properly displays addresses in each network, not just public/private; adding addresses attribute to server entities * Gracefull shutdown of nova-api * Removing import of nova.test added to nova/__init.py__ as problem turned out to be somewhere else (not in nova source code tree) * Fixing weird error while running tests. Fix required patching nova/tests/___init__.py explictly importing nova.test * Added missing extension file and tests. Also modified the get_host_list() docstring to be more accurate about the return value * Silence warning in case tests.sqlite doesn't exist * Fix boot from volume failure for network block devices * Improvements to nova-manage: network list now includes vlan and projectID, added servers list filtered by zone if needed * removed unneeded old commented code * removed more stray debug output * removed debugging output * after trunk merge * Updated unit tests * remove logging statement * Found some additional fixed_ip. entries in the Intance model contest that needed to be updated * use url parse instead of manually splitting * Changed fixed_ip.network to be fixed_ips.network, which is the correct DB field * Added the GroupId param to any pertinent security_group methods that support it in the official AWS API * Removes 'import IPy' introduced in recent commit * removing IPy import * trunk merge * Fixed the case where an exception was thrown when trying to get a list of flavors via the api yet there were no flavors to list * fix up tests * tweak * review fixes * completed api changes. still need plugin changes * Update the fixed_ip_disassociate_all_by_timeout in nova.db.api so that it supports Postgres. Fixes casting errors on postgres with this function * after trunk merge * Fixes MANIFEST.in so that migrate_repo/versions/*.sql files are now included in tarball * Include migrate_repo/versions/*.sql in tarball * Ensure auto-delete is false on Topic Queues * refactored the security_group tests a bit and broke up a few of them into smaller tests * Reverses the self.auto_delete = True that was added to TopicPublisher in the bugfix for lp804063. That bugfix should have only added auto_delete = True to FanoutPublisher to match the previous change to FanoutConsumer * Added 'self.auto_delete = True' to the two Publisher subclasses that lacked that setting * Added the '--fixes' tag to link to bug * Added self.auto_delete = True to the Publisher subclasses that did not have that set * added multi-nic support * osapi test_servers fixed_ip -> fixed_ips * updated osapi 1.0 addresses view to work with multiple fixed ips * trunk merge with migration renumbering * Allows subdirectory tests to run even if sqlite database doesn't exist * fix bug 800759 * Child Zone Weight adjustment available when adding Child Zones * trunk merge * blah * merge trunk * merged trunk * Windows instances will often take a few minutes setting up the image on first boot and then reboot. We should be more patient for those systems as well check if the domid changes so we can send agent requests to the current domid * Theese changes eliminate dependancy between hostname and ec2-id. As I understand, there already were no such dependancy, but still we had confusing names in code. Also I added more sophisticated generation of default hostname to give user possibility to set the custom one * updated images * updated servers * refactored flavors viewbuilder * fixes lp:803615 * added FlavorRef exception handling on create instance * refactored instance type code * Update the ec2 get_metadata handler so it works with the most recent version of the compute API get_all call which now returns a list if there is only a single record * - add metadata container to /images/detail and /images/ responses - update xml serialization to encode image entities properly * merging trunk * PEP8 fix * Adapt flash socket policy branch to new nova/wsgi.py refactoring * clean up * Update the ec2 get_metadata handler so it works with the most recent version of the compute API get_all call which now returns a list if there is only a single record * trunk merge * pep8 * pep8 * done and done * Update the fixed_ip_disassociate_all_by_timeout in nova.db.api so that it supports Postgres. Fixes casting errors on postgres with this function * phew ... working * compute_api.get_all should be able to recurse zones (bug 744217). Also, allow to build more than one instance at once with zone_aware_scheduler types. Other cleanups with regards to zone aware scheduler.. * Updated v1.1 links in flavors to represent the curret spec * fix issue of recurse_zones not being converted to bool properly add bool_from_str util call add test for bool_from_str slight rework of min/max_count check * fixed incorrect assumption that nullable defaults to false * removed port_id from virtual interfaces and set network_id to nullable * changes a few instance refs * merged trunk * Rename one use of timeout to expiration to make the purpose clearer * pulled in koelkers test changes * merge with trey * major reactor of the network tests for multi-nic * Merged trunk * Fixes Bug #803563 by changing how nova passes options in to glance. Before, if limit or marker were not set, we would pass limit=0 and marker=0 in to glance. However, marker is supposed to be an image id. With this change, if limit or marker are not set, they are simply not passed into glance. Glance is free then to choose the default behavior * Fixed indentation issues Fixed min/max_count checking issues Fixed a wrongly log message when zone aware scheduler finds no suitable hosts diablo-2 -------- * Fixes Bug #803563 by changing how nova passes options in to glance. Before, if limit or marker were not set, we would pass limit=0 and marker=0 in to glance. However, marker is supposed to be an image id. With this change, if limit or marker are not set, they are simply not passed into glance. Glance is free then to choose the default behavior * Sets 'exclusive=True' on Fanout amqp queues. We create the queues with uuids, so the consumer should have exclusive access and they should get removed when done (service stop). exclusive implies auto_delete. Fixes lp:803165 * don't pass zero in to glance image service if no limit or marker are present * more incorrect list type casting in create_network * removed the list type cast in create_network on the NETADDR projects * renumbered migrations again * Make sure test setup is run for subdirectories * merged trunk, fixed the floating_ip fixed_ip exception stupidity * trunk merge * "nova-manage vm list" was still referencing the old "image_id" column, which was renamed to "image_ref" at revision 1144 * Implement backup with rotation and expose this functionality in the OS API * Allow a port name in the server ref for image create * Fanout queues use unique queue names, so the consumer should have exclusive access. This means that they also get auto deleted when we're done with them, so they're not left around on a service restart. Fixes lp:803165 * pep8 fix * removed extra stubout, switched to isinstance and catching explicit exception * get latest branch * Deprecate -r for run_tests.sh and adds -n, switching the default back to recreate * check_domid_changes is superfluous right now since it's only used when timeout is used. So simplify code a little bit * updated pip-requires for novaclient * Merged trunk * pip requires * adopt merge * clean up logging for iso SR search * moved to wrap_exception approach * Fix 'undefined name 'e'' pylint error * change the default to recreate the db but allow -n for faster tests * Fix nova-manage vm list * Adding files for building an rpm for xenserver xenapi plugins * moved migration again & trunk merge * Brought back that encode under condition * Add test for hostname generation * Remove unnessesary (and possibly failing) encoding * Fix for bug 803186 that fixes the ability for nova-api to run from a source checkout * moved to wrap_exception decorator * Review feedback * Merged trunk * Put possible_topdir back in nova-api * Use milestone cut * Merged trunk * Let glance handle sorting * merging trunk * Review feedback * This adds system usage notifications using the notifications framework. These are designed to feed an external billing or similar system that subscribes to the nova feed and does the analysis * Refactored usage generation * pep8 * remove zombie file * remove unecessary cast to list * merge with trey * OOPS * Whoops * Review feedback * skipping another libvirt test * Fix merge issue in compute unittest * adding unicode support to image metadata * Fix thinko in previous fix :P * change variable names to remove future conflict with sandy's zone-offsets branch * Fix yet more merge-skew * merge with trey * This branch allows LdapDriver to reconnect to LDAP server if connection is lost * Fix issues due to renming of imange_id attrib * Re-worked some of the WSGI and WSGIService code to make launching WSGI services easier, less error prone, and more testable. Added tests for WSGI server, new WSGI loader, and modified integration tests where needed * Merged trunk * update a test docstring to make it clear we're testing multiple instance builds * log formatting typo pep8 fixes * Prevent test case from ruining other tests. Make it work in earlier python versions * pep8 fix * I accidently the whole unittest2 * Adds support for "extra specs", additional capability requirements associated with instance types * refactoring to compute from scheduler * remove network to project bind * resync with trunk * Add test for spawn from an ISO * Add fake SR with ISO content type * Revise key used to identify the SR used to store ISO images streamed from Glance * remerged trunk * Fix pep8 nits in audit script * Re-merging code for generating system-usages to get around bzr merge braindeadness * getting started * Added floating IP support in OS API * This speeds up multiple runs of tests to start up much faster because it only runs db migrations if the test db doesn't exist. It also adds the -r/--recreate-db option to run_tests.sh to delete the tests db so it will be recreated * small formatting change * breaking up into individual tests for security_groups * Proposing this because it is a critical fix before milestone. Suggestions on testing it are welcome * logging fixes * removed unneded mac parameter to lease and release fixed ip functions * Made _issue_novaclient_command() behave better. Fixed a bunch of tests * Review feedback * merge with trey * trunk merge, getting fierce. * Merged trunk * Added nova.version to utils.py * - Modified NOTE in vm_util.py - Changed gettext line to nova default in guest_tool.py * renaming tests * make sure basic filters are setup on instance restart * typo * changed extension alias to os-floating-ips * missed the bin line * Updating license to ASL 2.0 * update nova.sh * make nova-debug work with new style instances * Changed package name to openstack-xen-plugins per dprince's suggestion. All the files in /etc/xapi.d/plugins must be executable. Added dependency on parted. Renamed build.sh to build-rpm.sh * remove extra stuff from clean vlans * Clarify help verbiage * making key in images metadata xml serialization test null as well * making image metadata key in xml serialization test unicode * extracting images metadata xml serialization tests into specific class; adding unicode image metadata value test * merged blamar's simpler test * Pulled changes, passed the unit tests * Pulled trunk, merged boot from ISO changes * Removed now un-needed fake_connection * Use webob to test WSGI app * fixed pep style * review issues fixed * sqlalchmey/migration: resolved version conflict * merge with trunk * Adding files for building an rpm for xenserver xenapi plugins * Upstream merge * merging trunk; adding error handling around image xml serialization * adding xml serialization test of zero images * pep8 * add metadata tests * add fake connection object to wsgi app * add support to list security groups * only create the db if it doesn't exist, add an option -r to run_tests.py to delete it * Fix for bug #788265. Remove created_at, updated_at and deleted_at from instance_type dict returned by methods in sqlalchemy API * PEP8 fix * pep8 * Updated _dict_with_extra_specs docstring * Renamed _inst_type_query_to_dict -> _dict_with_extra_specs * Merged from trunk * Add api methods to delete provider firewall rules * This small change restores single quotes and double quotes as they were before in the filter expression for retrieving the PIF (physical interface) xenapi should use for creating VLAN interfaces * Remove the unnecessary insertion of whitespace. This happens to be enough to make this patch apply on recent versions of XenServer / Xen Cloud Platform * Removes the usage of the IPy module in favor of the netaddr module * - update glance image fixtures with expected checksum attribute - ensure checksum attribute is handled properly in image service * mailmap * mailmap * configure number of attempts to create unique mac address * merged * trunk merged. conflicts resolved * added disassociate method to tests * fixes * tests * PEP8 cleanup * parenthesis issue in the migration * merge * some tests and refactoring * Trunk merge fixes * Merging trunk * implement list test * some tests * fix tests for extensions * Fixed snapshot logic * PEP8 cleanup * Refactored backup rotate * conflict resolved * stub tests * add stubs for flating api os api testing * merge with kirill * associate diassociate untested, first attept to test * Pep8 fix * Adding tests for backup no rotation, invalid image type * Fixed the default arguments to None instead of an empty list * Fixing PEP8 compliance issues * Trailing whitespace * Adding tests for snapshot no-name and backup no-name * Edited the host filter test case for extra specs * Removed an import * Merged from trunk * Remove extra debug line * Merged with trunk * Add reconnect test * Use simple_bind_s instead of bind_s * Add reconnect on server fail to LDAP driver * ec2/cloud: typo * image/s3: typo * same typo i made before! * on 2nd run through filter_hosts, we've already accounted for the topic memory needs converted to Bytes from MB * LeastCostScheduler wasn't checking for topic cost functions correctly. Added support so that --least_cost_scheduler_cost_functions only needs to have method names specified, instead of the full blown version with module and class name. Still works the old way, too * requested_mem typo * more typos * typo in least cost scheduler * Unwind last commit, force anyjson to use our serialization methods * debug logging of number of instances to build in scheduler * missed passing in min/max_count into the create/create_all_at_once calls * Dealing with cases where extra_specs wasn't defined * pep8 fixes * Renamed from flavor_extra_specs to extra_specs * All tests passing * missed passing an argument to consume_resources * Committing some broken code in advance of trying a different strategy for specifying args to extensions.ResoruceExtensions, using parent * Starting to transition instance type extra specs API to an extension API * Now automatically populates the instance_type dict with extra_specs upon being retrieved from the database * pep8 * Created Bootstrapper to handle Nova bootstrapping logic * alter test, alter some debug statements * altered some tests * freakin migration numbering * trunk merge * removing erroneous block, must've been a copy and paste fat finger * specify keyword, or direct_api proxy method blows up * updated the way vifs/fixed_ips are deallocated and their relationships, altered lease/release fixed_ip * Fixed syntax errors * This adds a way to create global firewall blocks that apply to all instances in your nova installation * Accept a full serverRef to OSAPI POST /images (snapshot) * Cast rotation to int * PEP8 cleanup * Fixed filter property and added logging * added tests * Implemented view and added tests * Adding missing import * Fixed issue with zero flavors returning HTTP 500 * Adding dict with single 'meta' key to /imgages//meta/ GET and PUT * fixing 500 error on v1.0 images xml * Small refactoring around getting params * libvirt test for deleting provider firewall rules * Make firewall rules tests idempotent, move IPy=>netaddr, add deltete test * merge from trunk * altho security_group authorize & revoke tests already exist in test_api, adding some direct ec2 api method tests. added group_id param support to the pertinent security group methods * Make sure there are actually rules to test against * Add test for listing provider firewall rules * pep8: remove newline at end of file * Add admin api test case (like cloud test case) with a test for fw rules * Move migration to newer version * an int() was missed being removed from UUID changes when zone rerouting kicks in * fixing 500 on None metadata value * proper xml serialization for images * "nova-manage checks if user is member of proj, prior to adding role for that project" * adding metadata container to /images/detail and /images/ calls * Add xml serialization for all /images//meta and /images//meta/ responses * trunk merge and migration bump * handle errors for listing an instance by IP address * Merged markwash's fixes * Merged list-zone-recurse * str_GET is a property * Fixed typo * Merged trunk * minor fixups * fixes for recurse_zones and None instances with compute's get_all * typo * add support for compute_api.get_all() recursing zones for more than just reservation_id * Change so that the flash socket policy server is using eventlet instead of twisted and is running in the same process as the main vnx proxy * ec2/cloud: address review * compute/api: an unit test for _update_{image_}bdm * ec2/cloud: unit tests for parser/formatter of block device mapping * ec2/cloud: an unit test for _format_instance_bdm() * ec2utils: an unit test for mapping_prepend_dev() * ec2: bundle block device mapping * ec2utils: introduce helper function to prepend '/dev/' in mappings * volume/api: an unit test for create_snapshot_force() * Add some resource checking for memory available when scheduling Various changes to d-sched to plan for scheduling on different topics, which cleans up some of the resource checking. Re-compute weights when building more than 1 instance, accounting for resources that would be consumed * Returned code to original location * Merged from trunk * run launcher first since it initializes global flags and logging * Now passing unit tests * Two tests passing * Now stubbing nova.db instead of nova.db.api * Bug fixing * Added flavor extra specs controller * Initial unit test (failing) * This catches the InstanceNotFound exception on create, and ignores it. This prevents errors in the compute log, and causes the server to not be built (it should only get InstanceNotFound if the server was deleted right after being created). This is a temporary fix that should be fixed correctly once no-db-messaging stuff is complete * allocate and release implementation * fixed pep8 issues * merge from trunk * image -> instance in comment * added virtual_interface_update method * Fixes issues with displaying exceptions regarding flavors in nova-manage * better debug statement around associating floating ips when multiple fixed_ips exist * pep8 fixes * merging trunk * added fixed ip filtering by null virtual interface_id to network get associated fixed ips * fixed ip gets now have floating IPs correctly loaded * reverting non-xml changes * Adding backup rotation * moving image show/update into 'meta' container * Check API request for min_count/max_count for number of instances to build * updated libvirt tests network_info to be correct * fixed error * skipping more ec2 tests * skipping more ec2 tests * skipping more ec2 tests * skipping test_run_with_snapshot * updated test_cloud to set stub_network to true * fixed incorrect exception * updating glance image fixtures with checksum attribute; fixing glance image service to use checksum attribute * Round 1 of backup with rotation * merge from trunk * fix some issues with flags and logging * Add a socket server responding with an allowing flash socket policy for all requests from flash on port 843 to nova-vncproxy * api/ec2: an unit test for create image * api/ec2, boot-from-volume: an unit test for describe instances * unittest: an unit test for ec2 describe image attribute * test_cloud: an unit test for describe image with block device mapping * ec2utils: an unit test for ec2utils.properties_root_defice_name * unittest, image/s3: unit tests for s3 image handler * image/s3: factor out _s3_create() for testability * ec2utils: unit tests for case insensitive true/false conversion * ec2utils: add an unit test for dict_from_dotted_str() * test_api: unit tests for ec2utils.id_to_ec2_{snap, vol}_id() * api/ec2: make CreateImage pass unit tests * volume/api: introduce create_snapshot_force() * api/ec2/image: make block device mapping pass unit tests * db/block_device_mapping/api: introduce update_or_create * db/migration: resolve version conflict * merge with trunk * ec2 api describe_security_groups allow group_id param , added tests for create/delete security group in test_cloud although also exists in test_api this tests directly the ec2 method * pip-requires * pep8 * fixed zone update * Stop trying to set a body for HTTP methods that do not allow it. It renders the unit tests useless (since they're testing a situation that can never arise) and webob 1.0.8 fails if you do this * fixed local db create * omg stop making new migrations.. * trunk merge * merge from trunk * added try except around floating ip get by host in host init * This branch adds support to the xenapi driver for updating the guest agent on creation of a new instance. This ensures that the guest agent is running the latest code before nova starts configuring networking, setting root password or injecting files * renamed migrations again * merge from trunk * if we get InstanceNotFound error on create, ignore (means it has been deleted before we got the create message) * some libvirt multi-nic just to get it to work, from tushar * Removed whitespace * Fixed objectstore test * merge with trey * Very small alterations, switched from using start() to pass host/port, to just defining them up front in init. Doesn't make sense to set them in start because we can't start more than once any way. Also, unbroke binaries * Bump WebOb requirement to 1.0.8 in pip-requires * Oops, I broke --help on nova-api, fixed now * pep8 fix * Monkey patching 'os' kills multiprocessing's .join() functionality. Also, messed up the name of the eventlet WSGI logger * Filter out datetime fields from instance_type * erase unnecessary TODO: statement * fixed reviewer's comment. 1. adding dest-instance-dir deleting operation to nova.compute.manager, 2. fix invalid raise statement * fix comment line * Stop trying to set a body for HTTP methods that do not allow it. It renders the unit tests useless (since they're testing a situation that can never arise) and webob 1.0.8 fails if you do this * log -> logging to keep with convention * Removed debugging and switched eventlet to monkey patch everything * Removed unneeded import * Tests for WSGI/Launcher * Remove the unnecessary insertion of whitespace. This happens to be enough to match this patch apply on recent versions of XenServer / Xen Cloud Platform * trunk merge * fix lp 798361 * Removed logging logic from __init__, added concept of Launcher...no tests for it yet * nova-manage checks if user is member of proj, prior to adding role for that project * Other migrations have been merged in before us, so renumber * Merged trunk * pep8 fixes * assert_ -> assertTrue since assert_ is deprecated * added adjust child zone test * tests working again * updated the exceptions around virtual interface creation, updated flatDHCP manager comment * more trunks * another trunk merge * This patch adds support for working with instances by UUID in addition to integer IDs * importing sqlalchemy IntegrityError * Moving add_uuid migration to 025 * Merging trunk, fixing conflicts * Enclosing tokens for xenapi filter in double quotes * working commit * Fix objectstore test * Cleanup and addition of tests for WSGI server * Merged trunk * Check that server exists when interacting with /v1.1/servers//meta resource * No, really. Added tests for WSGI loader * Added tests for WSGI loader * nova.virt.libvirt.connection._live_migration is changed * Cleanup * merged rev trunk 1198 * Introduced Loader concept, for paste decouple * fix pep8 check * fix comments at nova.virt.libvirt.connection * Cleanup of the cleanup * Further nova-api cleanup * Cleaned up nova-api binary and logging a bit * Removed debugging, made objectstore tests pass again * General cleanup and refactor of a lot of the API/WSGI service code * Adding tests for is_uuid_like * Using proper UUID format for uuids * Implements a portion of ec2 ebs boot. What's implemented - block_device_mapping option for run instance with volume (ephemeral device and no device isn't supported yet) - stop/start instance * updated fixed ip and floating ip exceptions * pep8: white space/blank lines * Merging trunk * renamed VirtualInterface exception and extend NovaException * moving instance existance logic down to api layer * Ensure os_type and architecture get set correctly * Make EC2 update_instance() only update updatable_fields, rather than all fields. Patch courtesy of Vladimir Popovski * Fixes two minor bugs (lp795123 and lp795126) in the extension mechanism. The first bug is that each extension has _check_extension() called twice on it; this is a minor cosmetic problem, but the second is that extensions which flunk _check_extension() are still added. The proposed fix is to make _check_extensions() return True or False, then make _add_extension() call it from the top and return immediately if _check_extensions() returns False * Fixes a bug where a misleading error message is outputted when there's a sqlalchemy-migrate version conflict * Result is already in JSON format from _wait_for_agent * Fix PEP8 * Fix for lp:796834 * Add new architecture attribute along with os_type * bunch of docstring changes * adding check for serverRef hostname matching app url * Fix for Bug lp:796813 * Fix the volumes extension resource to have a proper prefix - /os-volumes * Fixes lp797017, which is broken as a result of a fragile method in the xenapi drivers that assumed there would only ever be one VBD attached to an instance * adding extra image service properties to compute api snapshot; adding instance_ref property * Missed a pep8 fix * Remove thirdwheel.py and do the test with a now-public ExtensionManager.add_extension() * Removes nova/image/local.py (LocalImageService) * Add some documentation for cmp_version Add test cases for cmp_version * Increased error message readability for the OpenStack API * fixing test case * Updated "get_all_across_zones" in nova/compute/api.py to have "context = context.elevated()", allowing it to be run by non-admin users * merging trunk * more words * Cleaned up some pep8 issues in nova/api/openstack/create_instance_helper.py and nova/api/openstack/__init__.py * Pull-up from trunk * Add a test to ensure invalid extensions don't get added * Update xenapi/vm_utils.py so that it calls find_sr instead of get_sr. Remove the old get_sr function which by default looked for an SR named 'slices' * add vlan diagram and some text * Added context = context.elevated() to get_all_across_zones * auto load table schema instead of stubbing it out * Fixed migration per review feedback * Made hostname independent from ec2 id. Add generation of hostnames based on display name * Fix for a problem where run_tests.sh would output a seemingly unrelated error message when there was a sqlalchemy-migrate version number conflict * stub api methods * Missed a InstanceTypeMetadata -> InstanceTypeExtraSpecs rename in register_models * Fix unitttest so that it actually fails without the fix * Make $my_ip Glance's default host, not localhost * We don't check result in caller, so don't set variable to return value * Remove debugging statement * Fix lp795123 and lp795126 by making _check_extension() return True or False and checking the result only from the top of _add_extension() * Glance host defaults to rather than localhost * Upstream merge * add in dhcp drawing * Rename: intance_type_metadata -> instance_type_extra_specs * erroneous self in virtual_interface_delete_by_instance() sqlalchemy api * Fixes a bug where a unit test sometimes fails due to a race condition * remove the network-host fromt he flat diagram * add multinic diagram * add the actual image * Renaming to _build_instance_get * merged trunk * returned two files to their trunk versions, odd that they were altered in the first place * Added a new test for confirming failure when no primary VDI is present * Unit tests pass again * more doc (and by more I mean like 2 or 3 sentances) * Fix copyright date * PEP8 cleanup * Attempting to retrieve the correct VDI for snapshotting * Fixing another test * Fixing test_servers_by_uuid * floating_ips extension is loading to api now * initial commit of multinic doc * generated files should not be in source control * Fixed UUID migration * Added UUID migration * Clean up docstrings to match HACKING * merge with trey * Small tweaks * Merged reldan changes * First implementation of FloatingIpController * First implementation of FloatingIpController * compute/api: fix mismerge due to instance creation change * ec2/cloud.py: fix mismerge * fix conflict with rebasing * api/ec2: support CreateImage * api/ec2/image: support block device mapping * db/model: add root_device_name column to instances table * ec2utils: consolidate 'vol-%08x' and 'snap-%08x' * api/ec2: check user permission for start/stop instances * ec2utils: consolidate 'vol-%08x' and 'snap-%08x' * api/ec2: check user permission for start/stop instances * api/ec2: check user permission for start/stop instances * Adds 'joinedload' statements where they need to be to prevent access of a 'detached' object * novaclient changed to support projectID in authentication. Caused some minor issues with distributed scheduler. This fixes them up * Add trailing LF (\n) to password for compatibility with old agents * Workaround windows agent bugs where some responses have trailing \\r\\n * removed commented out shim on Instance class * Windows instances will often take a few minutes setting up the image on first boot and then reboot. We should be more patient for those systems as well check if the domid changes so we can send agent requests to the current domid * Split patch off to new branch instead * Add --fixes * First attempt to rewrite reroute_compute * syntax * Merged trunk * Windows instances will often take a few minutes setting up the image on first boot and then reboot. We should be more patient for those systems as well check if the domid changes so we can send agent requests to the current domid * Fixed bug * Added metadata joinedloads * Prep-work to begin on reroute_compute * specify mysql_engine for the virtual_interfaces table in the migration * Passed in explanation to 400 messages * Fixing case of volumes alias * The volumes resource extension should be prefixed by its alias - os-volumes * Adding uuid test * Pep8 Fixes * Fixing test_servers.py * pep8 * Fixing private-ips test * adding server existence check to server metadata resource * Fixing test_create_instance * made the test_xenapi work * test xenapi injected set to True * something else with tests * something with tests * i dont even care anymore * network_info has injected in xenapi tests * Adding UUID test * network_info passed in test_xenapi, mac_address no longer in instance values dict * added network injected to stub * added injected to network dict oportion of tuple returned by get_instance_nw_info * don't provision to all child zones * network info to _create_vm * fix mismerge * updated xenapi_conn finish_resize arguments * stubbed out get_instance_nw_info for compute_test * pip novaclient bump * merge with nova trunk * fixed up some little project_id things with new novaclient * typo * updated finish_resize to accept network_info, updated compute and tests in accordance * _setup_block_device_mapping: raise ApiError when db inconsistency found * db/block_device_mapping_get_all_by_instance: don't raise * Print list of agent builds a bit prettier * PEP8 cleanups * Rename to 024 since 023 was added already * pep8 * The Xen driver supports running instances in PV or HVM modes, but the method it uses to determine which to use is complicated and doesn't work in all cases. The result is that images that need to use HVM mode (such as FreeBSD 64-bit) end up setting a property named 'os' set to 'windows' * typo * None project_id now default * Adds code to run_tests.py which: * Fixing code to ensure unit tests for objectstore, vhd & snapshots pass * ec2utils: minor optimize _try_convert() * block_device_mapping: don't use [] as default argument * api/ec2: make the parameter parser an independent method * Show only if we have slow tests, elapsed only if test success * Showing elapsed time is now default * Ensuring pep8 runs even when nose optons are passed * network tests now teardown user * Removing seconds unit * network user only set if doesnt exist * net base project id now from context, removed incorrect floatnig ip host assignment * fixed instance[fixed_ip] in ec2 api, removed fixed_ip shim * various test fixes * Updated so that we use a 'tmp' subdirectory under the Xen SR when staging migrations. Fixes an issue where you would get a 'File exists' error because the directory under 'images' already existed (created via the rsync copy) * db fakes silly error fix * debug statements * updated db fakes * updated db fakes * Changed requests with malformed bodies to return a HTTP 400 Bad Request instead of a HTTP 500 error * updated db fakes and network base to work with virtual_interface instead of mac_address * Phew ... ok, this is the last dist-scheduler merge before we get into serious testing and minor tweaks. The heavy lifting is largely done * db fakes * db fakes * updated libvirt test * updated libvirt test * updated libvirt test * updated libvirt test * updated libvirt test * getting the test_host_filter.py file from trunk, mine is jacked somehow * removed extra init calls * fixed HACKING * Changed requests with malformed bodies to return a HTTP 400 Bad Request instead of a HTTP 500 error * duplicate routes moved to base class * fixed scary diff from trunk that shouldnt have been there * version passing cleanup * refactored out controller base class to use aggregation over inheritance * Move ipy commands to netaddr * merged trunk * mp fixes * Really PEP8? A tab is inferior to 2 spaces? * pep8 fix * upstream merge * Stub out the rpc call in a unit test to avoid a race condition * merged trunk rev 1178 * Making timing points stricter, only show slow/sluggish tests in summary * Improved errors * added kernel/ramdisk migrate support * Added faults wrapper * remove file that got ressurected * Cleaned up pep8 errors using the current version of pep8 located in pip-requires. This is to remove the cluttered output when using the virtualenv to run pep8 (as you should). This will make development easier until the virtualenv requires the latest version of pep8 (see bug 721867) * merge with trey * autoload with the appropriate engine during upgrade/downgrade * Created new exception for handling malformed requests Wrote tests Raise httpBadRequest on malformed request bodies * Fixed bug 796619 * Adds --show-elapsed option for run_tests * pep8 * Alias of volumes extension should be OS-VOLUMES * Illustrations now added to Distributed Scheduler documentation (and fixed up some formatting) * Load table schema automatically instead of stubbing out * Removed clocksource=jiffies from PV_args * Test now passes even if the rpc call does not complete on time * - fixes bug that prevented custom wsgi serialization * Removed clocksource=jiffies from PV_args * merging trunk, fixing pep8 * pep8 * Improved tests * removing unnecessary lines * wsgi can now handle dispatching action None more elegantly * This fixes the server_metadata create and update functions that were returning req.body (as a string) instead of body (deserialized body dictionary object). It also adds checks where appropriate to make sure that body is not empty (and return 400 if it is). Tests updated/added where appropriate * removed yucky None return types * merging trunk * trunk merge * zones image_id/image_href support for 1.0/1.1 * Update xenapi/vm_utils.py so that it calls find_sr instead of get_sr. Remove the old get_sr function which by default looked for an SR named 'slices' * fixed bug 796619 * merge trunk * check for none and empty string, this way empty dicts/lists will be ok * Updated so that we use a 'tmp' subdirectory under the Xen SR when staging migrations. Fixes an issue where you would get a 'File exists' error because the directory under 'images' already existed (created via the rsync copy) * fix method chaining in database layer to pass right parameters * Add a method to delete provider firewall rules * Add ability to list ip blocks * pep 8 whitespace fix * Move migration * block migration feature added * Reorder firewall rules so the common path is shorter * ec2 api method allocate_address ; raises exception.NoFloatingIpsDefined instead of UnknownError when there aren't any floating ips available * in XML Serialization of output, the toprettyxml() call would sometimes return a str() and sometimes unicode(), I've forced encoding to utf-8 to ensure that we always get str(). This fixes the related bug * A recent commit added a couple of directories that don't belong in version control. Remove them again * adding support for cusom serialization methods * forgot a comma * floating ips can now move around the network hosts * A recent commit added a couple of directories that don't belong in version control. Remove them again * 'network list' prints project id * got rid of prints for debugging * small pep8 fixes * return body correctly as object instead of a string, with tests, also check for empty body on requests that need a body * adding xml support to /images//meta resource; moving show/update entities into meta container * removed posargs decorator, all methods decorated * Allows Nova to talk to multiple Glance APIs (without the need for an external load-balancer). Chooses a random Glance API for each request * forgot a comma * misc argument alterations * force utf-8 encoding on toprettyxml call for XMLDictSerializer * added new exception more descriptive of not having available floating addresses avail for allocation * raise instance instead of class * Fix copyright year * style change * Only update updateable fields * removing LocalImageService from nova-manage * rebase from trunk * decorators for action methods added * source illustrations added & spelling/grammar based on comstud's feedback * fixed reraise in trap_error * forgot some debugging statements * trunk merge and ec2 tests fixed * Add some docstrings for new agent build DB functions * Add test for agent update * Multiple position dependent formats and internationalization don't work well together * Adding caveat * Fixing code per review comments * removed fixed_ips virtual_interface_id foreignkey constraint from multi_nic migration, and added it as a standalone migration with special sqlite files * Record architecture of image for matching to agent build later. Add code to automatically update agent running on instance on instance creation * Add version and agentupdate commands * Add an extension to allow for an addFixedIp action on instances * further changes * tests working after merge-3 update * 022 migration has already been added, so make ours 023 now * parse options with optparse, options prepended '--' * renamed migration again * Pull-up from multi_nic * merged koelkers tests branch * remove file that keeps popping up * Merging trunk * Fixing the tests * matched the inner exception specifically, instead of catching all RemoteError exceptions * Support multiple glance-api servers * Merged trunk * Fix merge conflict * removing custom exception, instead using NoFloatingIpsDefined * raises exception.NoFloatingIpsDefined instead of UnknownError * Normalize and update database with used vm_mode * added a test for allocate_address & added error handling for api instead of returning 'UnknownError', will give information 'AllocateAddressError: NoMoreAddresses * merged trunk again * updated docstring for nova-manage network create * Now forwards create instance requests to child zones. Refactored nova.compute.api.create() to support deferred db entry creation * MySQL database tables are currently using the MyISAM engine. Created migration script nova/db/sqlalchemy/migrate_repo/versions/021_set_engine_mysql_innodb.py to change all current tables to InnoDB * merged trunk again * Support for header "X-Auth-Project-Id" in osapi * Cleaned up some pylint errors * tweaks * PEP8 fix * removed network_info shims in vmops * Fix for bug#794239 to allow pep8 in run_tests.sh to use the virtual environment * adding Authorizer key for ImportPublicKey * fix exception type catched * Look for vm_mode property on images and use that if it exists to determine if image should be run in PV or HVM mode. If it doesn't exist, fall back to existing logic * removed straggler code * trunk merge * merge trunk * pep8 * removed autogen file * added field NOVA_PROJECT_ID to template for future using * added tests for X-Auth-Project-Id header * fix fake driver for using string project * adding Authorizer key for ImportPublicKey * Cleaned up some of the larger pylint errors. Set to ignore some lines that pylint just couldn't understand * DRY up the image_state logic. Fix an issue where glance style images (which aren't required to have an 'image_state' property) couldn't be used to run instances on the EC2 controller * remove the debuging lines * remove the old stuff * tests all pass * Added virtual environment to PEP8 tests * Added test_run_instances_image_status_active to test_cloud * Add the option to specify a default IPv6 gateway * pep8 * Removed use of super * Added illustrations for Distributed Scheduler and fixed up formatting * Disabled pylint complaining about no 'self' parameter in a decorator function * DRY up the image_state logic. Fix an issue where glance style images (which aren't required to have an 'image_state' property) couldn't be used to run instances on the EC2 controller * Fixed incorrect error message Added missing import Fixed Typo (pylint "undefined variable NoneV") * removing local image service * Remove unnecessary docstrings * Add the option to specify a default IPv6 gateway * port the floating over to storing in a list * Make libvirt snapshotting work with images that don't have an 'architecture' property * take out the host * Removed empty init * Use IPNetwork rather than IPRange * Fixed type causing pylint "exception is not callable" Added param to fake_instance_create, fake objects should appear like the real object. pylint "No value passed for parameter 'values' in function call" * sanity check * run_instances will check image for 'available' status before attempting to create a new instance * fixed up tests after trunk merge * Use True/False instead of 1/0 when setting updating 'deleted' column attributes. Fixes casting issues when running nova with Postgres * merged from trunk * Remove more stray import IPy * Dropped requirement for IPy * Convert stray import IPy * Use True/False instead of 1/0 when setting updating 'deleted' column attributes.Fixes casting issues when running nova with Postgres * Removed commented code * Added test case for snapshoting base image without architecture * Remove ipy from virt code and replace with netaddr * Remove ipy from network code and replace with netaddr * Remove ipy from nova/api/ec2/cloud.py and use netaddr * Remove ipy from nova-manage and use netaddr * This branch allows marker and limit parameters to be used on image listing (index and detail) requests. It parses the parameters from the request, and passes it along to the glance_client, which can now handle these parameters. Essentially all of the logic for the pagination is handled in glance, we just pass along the correct parameters and do some error checking * merge from trunk, resolved conflicts * Update the OSAPI images controller to use 'serverRef' for image create requests * Changed the error raise to not be AdminRequired when admin is not, in fact, required * merge with trey * Change to a more generic error and update documentation * make some of the tests * Merged trunk * merge trunk * Ignore complaining about dynamic definition * Removed Duplicate method * Use super on an old style class * Removed extraneous code * Small pylint fixes * merge with trunk * Fixed incorrect exception * This branch removes nwfilter rules when instances are terminated to prevent resource leakage and serious eventual performance degradation. Without this patch, launching instances and restarting nova-compute eventually become very slow * merge with trunk * resolve conflicts with trunk * Update migrate script version to 22 * Added 'config list' to nova-manage. This function will output all of the flags and their values * renamed migration * trunk merge after 2b hit * Distributed Scheduler developer docs * Updated to use the '/v1/images' URL when uploading images to glance in the Xen glance plugin. Fixes the issue where snapshots fail to upload correctly * merged trunk again * added 'nova-manage config list' which will list out all of the flags and their values. I also alphabetized the list of available categories * Updated to use the '/v1/images' URL when uploading images to glance in the Xen glance plugin. Fixes issue where snapshots failed to get uploaded * Removed "double requirement" from tools/pip-requires file * merged koelker migration changes, renumbered migration filename * fix comment * Fixed pip-requires double requirement * Added a test case for XML serialization * Removed unused and erroneous (yes, it was both) function * paramiko is not installed into the venv, but is required by smoketests/base.py. Added paramiko to tools/pip-requires * Changes all uses of utcnow to use the version in utils. This is a simple wrapper for datetime.datetime.utcnow that allows us to use fake values for tests * Set pylint to ignore correct lines that it could not determine were correct, due to the means by which eventlet.green imported subprocess Minimized the number of these lines to ignore * LDAP optimization and fix for one small bug caused huge performance leak. Dashboard's benchmarks showed overall x22 boost in page request completion time * Adds LeastCostScheduler which uses a series of cost functions and associated weights to determine which host to provision to * Make libvirt snapshotting work with images that don't have an 'architecture' property * Add serverRef to image metadata serialization list * Fixed pylint: no metadata member in models.py * Implement OSAPI v1.1 style image create * trunk merge * little tweaks * Flush AuthManager's cache before each test * Fixed FakeLdapDriver, made it call LdapDriver.__init__ * Merged with trunk * This change set adds the ability to create new servers with an href that points to a server image on any glance server (not only the default one configured). This means you can create a server with imageRef = http://glance1:9292/images/3 and then also create one with imageRef = http://glance2:9292/images/1. Using the old way of passing in an image_id still works as well, and will use the default configured glance server (imageRef = 3 for instance) * added nova_adminclient to tools/pip-requires * merged trunk * Added paramiko to tools/pip-requires * Tests that all exceptions can be raised properly, and fix the couple of instances where they couldn't be constructed due to typos * merge trunk... yay.. * switch zones to use utcnow * make all uses of utcnow use our testable utils.utcnow * Fix error with % as replacement string * Fixing conflicts * Tests to assure all exceptions can be raised as well as fixing NotAuthorized * use %% because % is a replacement string character * some comment docstring modifications * Makes novarc work properly on a mac and also for zsh in addition to bash. Other shells are not guaranteed to work * This adds the ability to publish nova errors to an error queue * don't use python if readlink is available * Sudo chown the vbd device to the nova user before streaming data to it. This resolves an issue where nova-compute required 'root' privs to successfully create nodes with connection_type=xenapi * Bugfix #780784. KeyError when creating custom image * Remove some of the extra image service calls from the OS API images controller * pep8 fixes * merge with trey * make it pass for the demo * Merged with Will * Minor comment formatting changes * got rid of more test debugging stuff that shouldnt have made it in * Remove comment about imageRef not being implemented * Remove a rogue comment * more tests (empty responses) * get_all with reservation id across zone tests * move index and detail functions to v10 controller * got rid of prints * Refactored after review, fixed merge * image href should be passed through the rebuild pipeline, not the image id * merge from trunk * got rid of print debugs * cleanup based on waldon's comments, also caught a few other issues * missed a couple chars * Little cleanups * pep8 and all that * tests all passing again * list --reservation now works across zones * fix novarc to work on mac and zsh * merged, with trunk, fixed the test failure, and split the test into 3 as per peer review * Fixes nova-manage bug. When a nova-network host has allocated floating ips *AND* some associated, the nova-manage floating list would throw exception because was expecting hash with 'ec2_id' key , however, the obj returned is a sqlalchemy obj and the attr we need is 'hostname' * start the flat network * more testing fun * fixed as per peer review to make more consistent * merged from trunk * Implement the v1.1 style resize action with support for flavorRef * Updates to the 018_rename_server_management_url migration to avoid adding and dropping a column. Just simply rename the column * Support SSL AMQP connections * small fixes * Allow SSL AMQP connections * reservation id's properly forwarded to child zones on create * merge from trunk * fix pep8 issue from merge * coose the network_manager based on instance variable * fix the syntax * forgot a comma * This just fixes a bunch of pep8 issues that have been lingering around for a while and bothering me :) * touch ups * Updates to the 018_rename_server_management_url to avoid adding and dropping a column. Just simply rename the column * basic reservation id support to GET /servers * - move osapi-specific wsgi code from nova/wsgi.py to nova/api/openstack/wsgi.py - refactor wsgi modules to use more object-oriented approach to wsgi request handling: - Resource object steps up to original Controller position - Resource coordinates deserialization, dispatch to controller, serialization - serialization and deserialization broken down to be more testable/flexible * merge from trunk * make the stubs * use the host * da stubs * Bumped migration number * Merged from trunk * updates to keep things looking better * merge from trunk * fix pep8 issues * PEP8 fix * Moved memcached driver import to the top of modules * fix pep8 issues * pep8 fixes * Cleanup instances_path in the test_libvirt test_spawn_with_network_info test. Fixes issue where the nova/tests/instance-00000001/ is left in the nova source tree when running run_test.sh -N * fix filtering tests * Renamed migration to 020 * osapi: added support for header X-Auth-Project-Id * added /zones/boot reservation id tests diablo-1 -------- * Adds hooks for applying ovs flows when vifs are created and destroyed for XenServer instances * Logs the exception if metadata fails and returns a 500 with an error message to the client * Fixing a bunch of conflicts * add new base * refator existing fakes, and start stubbing out the network for the new manager tests * pep8 * Incremented version of migration script to reflect changes in trunk * basic zone-boot test in place * Incremented version of migration script to reflect changes in trunk * Incremented version of migration script to reflect changes in trunk * switch to using webob exception * Added new snapshots table to InnoDB migrations * Adds a few more status messages to error states on image register for the ec2 api. This will hopefully provide users of the ec2 api with a little more info if their registration fails * Cleaned up bug introduced after fixing pep8 errors * Fixing Scheduler Tests * Cleaned up bug introduced after fixing ^Cp8 errors * Basic hook-up to HostFilter and fixed up the passing of InstanceType spec to the scheduler * make the old tests still pass * rename da stuffs * rename da stuffs * Resolving conflict and finish test_images * merge * added tests for image detail requests * Merged trunk * Merged trunk and fixed conflicts * Whitespace cleanups * added pause/suspend implementation to nova.virt.libvirt_conn * Change version number of migration * Update the rebuild_instance function in the compute manager so that it accepts the arguments that our current compute API sends * Moved everything from thread-local storage to class attributes * Added the filtering of image queries with image metadata. This is exposing the filtering functionality recently added to Glance. Attempting to filter using the local image service will be ignored * This enables us to create a new volume from a snapshot with the EC2 api * Use a new instance_metadata_delete_all DB api call to delete existing metadata when updating a server * added tests for GlanceImageService * Add vnc_keymap flag, enable setting keymap for vnc console and fix bug #782611 * Add refresh_provider_fw_rules to virt/driver.py#ComputeDriver so virtualization drivers other than libvirt will raise NotImplemented * Rebased to trunk rev 1120 * trunk merge * added get_pagination_params function in common with tests, allow fake and local image services to accept filters, markers, and limits (but ignore them for now) * Cleaned up text conflict * pep8 fixed * pep8 fixes * Cleaned up text conflict * removing semicolon * Cleaned up text conflict * skip the vlam test, not sure why it doesn't work * Cleaned up pep8 errors * Fixed the APIError typo * MySQL database tables are currently using the MyISAM engine. Created migration script nova/db/sqlalchemy/migrate_repo/versions/020_set_engine_mysql_innodb.py to change all current tables to InnoDB * MySQL database tables are currently using the MyISAM engine. Created migration script nova/db/sqlalchemy/migrate_repo/versions/020_set_engine_mysql_innodb.py to change all current tables to InnoDB * Handle the case when a v1.0 api tries to list servers that contain image hrefs * Added myself to Authors file * edits based on ed's feedback * More specific error messages for resize requests * pep8 fixes * merge trunk * tests passing again * Actually remove the _action_resize code from the base Servers controller. The V11 and V10 controllers implement these now * merge from trunk * This adds a volume snapshot support with the EC2 api * Fixed the typo of APIError with ApiError * nova/auth/novarc.template: Changed NOVA_KEY_DIR to allow symlink support * Updated compute api and manager to support image_refs in rebuild * zone-boot working * regular boot working again * regular boot working again * first pass at reservation id support * Updates so that 'name' can be updated when doing a OS API v1.1 rebuild. Fixed issue where metadata wasn't getting deleted when an empty dict was POST'd on a rebuild * first cut complete * project_id moved to be last * add support for keyword arguments * fixed nova.virt.libvirt_conn.resume() method - removing try-catch * reservation_id's done * basic flow done * lots more * starting * boot-from-volume: some comments and NOTE(user name) * Use metadata variable when calling _metadata_refs * Implement the v1.1 style resize action with support for flavorRef * Fixes to the SQLAlchmeny API such that metadata is saved on an instance_update. Added integration test to test that instance metadata is updated on a rebuild * Update the rebuild_instance function in the compute manager so that it accepts the arguments that our current compute API sends * Cleanup instances_path in test_libvirt test_spawn_with_network_info test * Added missing nova import to image/__init__.py * Another image_id location in hyperv * Fixing nova.tests.api.openstack.fakes.stub_out_image_service. It now stubs out the get_image_service and get_default_image_service functions. Also some pep8 whitespace fixes * Fixing xen and vmware tests by correctly mocking glance client * Fixing integration tests by correctly stubbing image service * More image_id to image_ref stuff. Also fixed tests in test_servers * When encrypting passwords in xenapi's SimpleDH(), we shouldn't send a final newline to openssl, as it'll use that as encryption data. However, we do need to make sure there's a newline on the end when we write the base64 string for decoding.. Made these changes and updated the test * Fixes the bug introduced by rpc-multicall that caused some test_service.py tests to fail by pip-requiring a later version of mox * added \n is not needed with -A * now pip-requires mox version 0.5.3 * added -A back in to pass to openssl * merge with dietz * merge with dietz * XenAPI tests pass * fixed so all the new encryption tests pass.. including data with newlines and so forth * Glance client updates for xenapi and vmware API to work with image refs * Merged lp:~rackspace-titan/nova/lp788979 * get the right args * Fixing pep8 problems * Modified instance_type_create to take metadata * Added test for instance type metadata create * merge with trey * Added test for instance type metadata update * Added delete instance metadata unit test * Added a unit test * Adding test code * Changed metadata to meta to avoid sqlalchemy collision * Adding accessor methods for instance type metadata * remove errant print statement * prevent encryption from adding newlines on long messages * trunk merge * nova/auth/novarc.template: Changed NOVA_KEY_DIR to allow symlink support * docstrings again and import ordering * fix encryption handling of newlines again and restructure the code a bit * Libvirt updates for image_ref * Commit the migration script * fixed docstrings and general tidying * remove _take_action_to_instance * fix calls to openssl properly now. Only append \n to stdin when decoding. Updated the test slightly, also * fixed read_only check * Fix pep8 errors * Fix pep8 violations * Fix a description of 'snapshot_name_template' * unittest: make unit tests happy * unittest: tests for boot from volume and stop/start instances * compute: implement ec2 stop/start instances * compute, virt: support boot-from-volume without ephemeral device and no device * db: add a table for block device mapping * volume/api: allow volume clone from snapshot without size * api/ec2: parse ec2 block device mapping and pass it down to compute api * teach ec2 parser multi dot-separted argument * api/ec2: make ec2 api accept true/false * Adds the ability to make a call that returns multiple times (a call returning a generator). This is also based on the work in rpc-improvements + a bunch of fixes Vish and I worked through to get all the tests to pass so the code is a bit all over the place * fix a minor bug unrelated to this change * updated the way allocate_for_instance and deallocate_for_instance handle kwargs * Rename instances.image_id to instances.image_ref * changes per review * merge with dietz * stub out passing the network * Virt tests passing while assuming the old style single nics * adding TODOs per dabo's review * Fixes from Ed Leafe's review suggestions * merge trunk * move udev file so it follows the xen-backend.rules * Essentially adds support for wiring up a swap disk when building * add a comment when calling glance:download_vhd so it's clear what is returned * make the fakes be the correct * skip vmware tests, since they need to be updated for multi-nic by someone who knows the backend * put back the hidden assert check i accidentally removed from glance plugin * fix image_path in glance plugin * Merged trunk * skip the network tests for now * Change the return from glance to be a list of dictionaries describing VDIs Fix the rest of the code to account for this Add a test for swap * cleaning up getattr calls with default param * branch 2a merge (including trunk) * trunk merge * remerged with 2a * tests pass and pep8'ed * review fixups * Expanded tests * In vmwareapi_net.py removed the code that defines the flag 'vlan_interface' and added code to set default value for the flag 'vlan_interface' to 'vmnic0'. This will now avoid flag re-definition issue * missed a driver reference * exceptions are logged via the raise, so just log an error message * log upload errors * instance obj returned is not a hash, instead is sqlalchemy obj and hostname attr is what the logic is looking for * we don't need the mac or the host anymore * Test tweaks * instances don't need a mac_address to be created anymore * Make a cleaner log message and use [] instead of . to get database fields * use the skip decorator rather than comment out * merging trunk * Adding some pluralization * Double quotes are ugly #3 * merge with dietz * fix typo introduced during merge conflict resolution * Remove spurious newline at end of file * Move migration to fix ordering * remove dead/duplicate code * Double quotes are ugly #2 * Double quotes are ugly * refactoring compute.api.create() * Fix test_cloud tests * Restricted image filtering by name and status only * Switch the run_instances call in the EC2 back to 'image_id'. Incoming requests use 'imageId' so we shouldn't modify this for image HREF's * Switching back to chown. I'm fine w/ setfacl too but nova already has 'chown' via sudoers so this seems reasonable for now * replace double quatation to single quatation at nova.virt.libvirt_conn * remove unnecessary import inspect at nova.virt.libvirt_conn * creating _take_action_to_instance to nova.virt.libvirt_conn.py * Instead of redefining the flag 'vlan_interface', just setting a default value (vmnic0) in vmwareapi_net.py * Renamed image_ref variables to image_href. Since the convention is that x_ref vars may imply that they are db objects * Added test skipper class * change the behavior of calling a multicall * move consumerset killing into stop * don't put connection back in pool * replace removed import * cleanups * cleanup the code for merging * make sure that using multicall on a call with a single result still functions * lots of fixes for rpc and extra imports * don't need to use a separate connection * almost everything working with fake_rabbit * bring back commits lost in merge * connection pool tests and make the pool LIFO * Add rpc_conn_pool_size flag for the new connection pool * Always create Service consumers no matter if report_interval is 0 Fix tests to handle how Service loads Consumers now * catch greenlet.GreenletExit when shutting service down * fix consumers to actually be deleted and clean up cloud test * fakerabbit's declare_consumer should support more than 1 consumer. also: make fakerabbit Backend.consume be an iterator like it should be. * convert fanout_cast to ConnectionPool * pep8 and comment fixes * Add a connection pool for rpc cast/call Use the same rabbit connection for all topic listening and wait to be notified vs doing a 0.1 second poll for each * add commented out unworking code for yield-based returns * make the test more expicit * add support to rpc for multicall * merge with dietz * Fixing divergence * Merged trunk * Added params to local and base image service * Fixed the mistyped line referred to in bug 787023 * Merged trunk and resolved conflicts * Fixed a typo * make the test work * Merged with trunk * Several changes designed to bring the openstack api 1.1 closer to spec - add ram limits to the nova compute quotas - enable injected file limits and injected file size limits to be overridden in the quota database table - expose quota limits as absolute limits in the openstack api 1.1 limits resource - add support for controlling 'unlimited' quotas to nova-manage * During the API create call, the API would kick off a build and then loop in a greenthread waiting for the scheduler to pick a host for the instance. After API would see a host was picked, it would cast to the compute node's set_admin_password method * starting breakdown of nova.compute.api.create() * fix test. instance is not updated in DB with admin password in the API anymore * Merged upstream * pep8 fixes * Initial tests * fix forever looping on a password reset API call * updating admin_pass moved down to compute where the password is actually reset. only update if it succeeds * merged trunk * change install_ref.admin_password to instance_ref.admin_pass to match the DB * Merged trunk * remove my print * we're getting a list of tuples now' * we have a list of tuples, not a list of dicts * pep8 fixes * return the result of the function * Updated tests to use mox pep8 * InstanceTypesMetadata is now registered * make some changes to the manager so dupe keywords don't get passed * Fixing the InstanceTypesMetadata table definition * try out mox for testing image request filters * Adding the migrate code to add the new table * dist-sched-2a merge * Created new libvirt directory, moved libvirt_conn.py to libvirt/connection.py, moved libvirt templates, broke out firewall and network utilities * make the column name correct * The code for getting an opaque reference to an instance assumed that there was a reference to an instance obj available when raising an exception. I changed this from raising an InstanceNotFound exception to a NotFound, as this is more appropriate for the failure, and doesn't require an instance ID * merge against 2a * trunk merge * simplified the limiting differences for different versions of the API * New tests added * Changed the exception type to not require an instance ID * Added model for InstanceTypeMetadata * Added test * Avoid wildcard import * Add unittests for cloning volumes * merged recent trunk * merged recent trunk * Make snapshot_id=None a default value in VolumeManager:create_volume(). It is not a regular case to create a volume from a snapshot * Don't need to import json * Fix wrong call of the volume api create() * pep8 fix in nova/compute/api.py * instead of the API spawning a greenthread to wait for a host to be picked, the instance to boot, etc for setting the admin password... let's push the admin password down to the scheduler so that compute can just take care of setting the password as a part of the build process * tests working again * eventlet.spawn_n() expects the function and arguments, but it expects the arguments unpacked since it uses *args * Don't pass a tuple since spawn_n will get the arguments with *args anyway * move devices back * Using the root-password subcommand of the nova client results in the password being changed for the instance specified, but to a different unknown password. The patch changes nova to use the password specified in the API call * Pretty simple. We call openssl to encrypt the admin password, but the recent changes around this code forgot to strip the newline off the read from stdout * DHSimple's decrypt needs to append \n when writing to stdin * need to strip newline from openssl stdout data * merge with trey * work on * merge trunk * moved auto assign floating ip functionality from compute manager to network manager * create a mac address entry and blindly use the first network * create a mac address entry and blindly use the first network * create a mac address entry and blindly use the first network * need to return the ref * Added filtering on image properties * Fixes a bug related to incorrect reparsing of flags and prevents many extra reparses * no use mac * comment out the direct cloud case * make fake_flags set defaults instead of runtime values * add a test from vish and fix the issues * Properly reparse flags when adding dynamic flags * no use mac * instances don't have mac's anymore and address is now plural * let the fake driver accept the network info * Comment out the 2 tests that require the instance to contain mac/ip * initial use of limited_by_marker * more fix up * many tests pass now * its a dict, not a class * we don't get the network in a tuples anymore * specified image_id keyword in exception arg * When adding a keypair with ec2 API that already exists, give a friendly error and no traceback in nova-api * added imageid string to exception, per peer review * Fixes some minor doc issues - misspelled flags in zones doc and also adds zones doc to an index for easier findability * removed most of debugging code * Fixing docstring * Synchronise with Diablo development * make _make_fixture respect name passed in * zone1 merge * sending calls * accepting calls * Fixing _get_kernel_ramdisk_from_image to use the correct image service * Fixing year of copyright * merge * select partially going through * merge from trunk * make image_ref and image_id usage more consistant, eliminate redundancy in compute_api.create() call * take out irrelevant TODO * blah * uhhh yea * local tweaks * getting closer to working select call * swap should use device 1 and rescue use device 2 * merged from trunk * fix tests, have glance plugin return json encoded string of vdi uuids * make sure to get a results, not the query * merged from trunk * Removing code duplication between parse_image_ref and get_image service. Made parse_image_ref private * Changed ec2 api dupe key exception log handler info->debug * Added test case for attempting to create a duplicate keypair * Removing debug print line * Renaming service_image_id vars to image_id to reduce confusion. Also some minor cleanup * cleanup and fixes * got rid of print statement * initial fudging in of swap disk * make the test_servers pass by removing the address tests for 1.1, bug filed * port the current create_networks over to the new network scheme * need to have the complete table def since sqlalchemy/sqlite won't reload the model * must have the class defined before referencing it * make the migration run with tests * get rid of all mention of drivers ... it's filter only now * merge trunk * Fixes euca-attach-volume for iscsi using Xenserver * fix typo * merge branch lp:~rackspace-titan/nova/ram-limits * Added test * Fixes missing space * Fixed mistyped line * Rebased to trunk rev 1101 * merge from trunk * moved utils functions into nova/image/ * Trunk merge * Fix bug #744150 by starting nova-api on an unused port * Removing utils.is_int() * Added myself to Authors * When adding a keypair that already exists, give a friendly error and no traceback in nova-api * --dhcp-lease-max=150 by default. This prevents >150 instances in one network * Minor cleanup * No reason to modify the way file names are generated for kernel and ramdisk, since the kernel_id and ramdisk_id is still guaranteed to be ints * found a typo in the xenserver glance plugin that doesn't work with glance trunk. Also modified the image url to fetch from /v1/image/X instead of /image/X as that returned a 300 * fixing glance plugin bug and setting the plugin to use /v1 of the glance api * merge trunk * move init start position to 96 to allow openvswitch time to fully start * Include data files for public key tests in the tarball * minor cleanup * Makes sure vlan creation locks so we don't race and fail to create a vlan * merging trunk * Include data files for public key tests in the tarball * Merged with trunk * renaming resource_factory to create_resource * combined the exception catching to eliminate duplication * synchronize vlan creation * print information about nova-manage project problems * merge from trunk * fix comments * make nwfilter mock more 'realistic' by having it remember which filters have been defined * fix pep8 issue * fixed silly issue with variable needing to be named 'id' for the url mapper, also caught new exception type where needed * This is the groundwork for the upcoming distributed scheduler changes. Nothing is actually wired up here, so it shouldn't break any existing code (and all tests pass) * Merging trunk * Get rid of old virt/images.py functions that are no longer needed. Checked for any loose calls to these functions and found none. All tests pass for me * Update OSAPI v1.1 extensions so that it supports RequestExtensions. ResponseExtensions were removed since the new RequestExtension covers both use cases. This branch also removes some of the odd serialization code in the RequestExtensionController that converted dictionary objects into webob objects. RequestExtension handlers should now always return proper webob objects * Addressing bug #785763. Usual default for maximum number of DHCP leases in dnsmasq is 150. This prevents instances to obtain IP addresses from DHCP in case we have more than 150 in our network. Adding myself to Authors * foo * syntax errors * temp fixes * added support for reserving certain network for certain project * Fixed some tests * merge with trunk * Added an EC2 API endpoint that'll allow import of public key. Prior, api only allowed generation of new keys * This fix ensures that kpartx -d is called in the event that tune2fs fails during key injection, as it does when trying to inject a key into a windows instance. Bug #760921 is a symptom of this issue, as if kpartx -d is not called then partitions remain mapped that prevent the underlying nbd from being reused * Add new flag 'max_kernel_ramdisk_size' to specify a maximum size of kernel or ramdisk so we don't copy large files to dom0 and fill up /boot/guest * The XenAPI driver uses openssl as part of the nova-agent implementation to set the password for root. It uses a temporary file insecurely and unnecessarily. Change the code to write the password directly to stdin of the openssl process instead * The tools/* directory is now included in pep8 runs. Added an opt-out system for excluding files/dirs from pep8 (using GLOBIGNORE) * fill out the absolute limit tests for limits v1.0 controller * add absolute limits support to 1.0 api as well * Merged with trunk * fixed pep8 issue * merge from trunk * Fail early if requested imageRef does not exist when creating a server * Separate out tests for when unfilter is called from iptables vs. nwfilter driver. Re: lp783705 * Moved back templates and fixed pep8 issue. Template move was due to breaking packaging with template moves. That will need to happen in a later merge * further refactoring of wsgi module; adding documentation and tests * don't give instance quota errors with negative values * Merged trunk and resolved horrible horrible conflicts * No reason to hash ramdisk_id and kernel_id. They are ints * temp * waldon's naming feedback * Fixing role names to match code * Merging trunk * updated the hypervisors and ec2 api to support receiving lists from pluralized mac_addresses and fixed_ips * fname should have been root_fname * minor cleanup, plus had to merge because of diverged-branches issue * Minor cleanup * merge from trunk * Fix comments * Add a unitest to test EC2 snapshot APIs * Avoid wildcard import * Simple change to sort the list of controllers/methods before printing to make it easier to read * missed the new wsgi test file * removing controller/serializer code from wsgi.py; updating other code to use new modules * merge lp:nova * fixup absolute limits to latest 1.1 spec * refactoring wsgi to separate controller/serialization/deserialization logic; creating osapi-specific module * default to port 80 if it isnt in the href/uri * return dummy id per vishs suggestion * hackish patch to fix hrefs asking for their metadata in boot (this really shouldnt be in ec2 api?) * Sort list of controllers/methods before printing * use a manual 500 with error text instead of traceback for failure * log any exceptions that get thrown trying to retrieve metadata * skeleton of forwarding calls to child zones * fix typo in udev rule * merge trunk * libvirt fixes to use new image_service stuff * On second thought, removing decorator * Adding FlagNotSet exception * Implements a basic mechanism for pushing notifications out to interested parties. The rationale for implementing notifications this way is that the responsibility for them shouldn't fall to Nova. As such, we simply will be pushing messages to a queue where another worker entirely can be written to push messages around to subscribers * Spacing changes * get real absolute limits in openstack api and verify absolute limit responses * Added missing xenhost plugin. This was causing warnings to pop up in the compute logs during periodic_task runs. It must have not been bzr add'd when this code was merged * fixed bug with compute_api not having actual image_ref to use proper image service * Adding xenhost plugin * Merging trunk * Added missing xenhost plugin * Fix call to spawn_n() instead. It expects a callable * fix pep8 issues * oops, took out commented out tests in integrated.test_servers and made tests pass again * fixed api.openstack.test_servers tests...again * fixed QuotaTestCases * fixed ComputeTestCase tests * made ImageControllerWithGlanceServiceTests pass * fixed test_servers small tests as well * get integrated server_tests passing * Removed all utils.import_object(FLAGS.image_service) and replaced with utils.get_default_image_service() * MySQL database tables are using the MyISAM engine. Created migration script to change all current tables to InnoDB, updated version to 019 * MySQL database tables are using the MyISAM engine. Created migration script to change all current tables to InnoDB, updated version to 019 * Small cleanups * Moving into scheduler subdir and refactoring out common code * Moving tests into scheduler subdirectory * added is_int function to utils * Pep8 fixes * made get_image_service calls in servers.py * use utils.get_image_service in compute_api * updates to utils methods, initial usage in images.py * added util functions to get image service * Using import_class to import filter_host driver * Adding fill first cost function * add more statuses for ec2 image registration * Add --fixes * Add --fixes * Fixes the naming of the server_management_url in auth and tests * Merging in Sandy's changes adding Noop Cost Fn with tests * merged trunk * move migration 017 to 018 * merge ram-limits * Removed extra serialization metadata * Docstring cleanup and formatting (nova/network dir). Minor style fixes as well * pep8 * Fixes improper attribute naming around instance types that broke Resizes * merge ram-limits * support unlimited quotas in nova-manage and flags * fix test * Changed builder to match specs and added test * add migration for proper name * Update test case to ensure password gets set correctly * make token use typo that is in database. Also fix now -> utcnow and stop using . syntax for dealing with tokens * Added missing metadata join to instance_get calls * Avoid using spawn_n to fix LP784132 * add ram limits to instance quotas * Convert instance_type_ids in the instances table from strings to integers to enable joins with instance_types. This in particular fixes a problem when using postgresql * Set password to one requested in API call * don't throw type errors on NoneType int conversions * Added network_info into refresh_security_group_rules That fixs https://bugs.launchpad.net/nova/+bug/773308 * Improved error notification in network create * Instead of using a temp file with openssl, just write directly to stdin * First cut at least cost scheduler * merge lp:nova * Implemented builder for absolute limits and updated tests * provision_resource no longer returns value * provision working correctly now * Re-pull changed notification branch * PEP8 fixes * adding --fixes lp:781429 * Fixed mistyped key, caused huge performance leak * Moved memcached connection in AuthManager to thread-local storage. Added caching of LDAP connection in thread-local storage. Optimized LDAP queries, added similar memcached support to LDAPDriver. Add "per-driver-request" caching of LDAP results. (should be per-api-request) * ugh, fixed again * tests fixed and pep8'ed * Update comment on RequestExtension class * failure conditions are being sent back properly now * Added opt-out system for excluding files/dirs from pep8 (using GLOBIGNORE) * MySQL database tables are using the MyISAM engine. Created migration script to change all current tables to InnoDB * MySQL database tables are using the MyISAM engine. Created migration script to change all current tables to InnoDB * fix for lp783705 - remove nwfilters when instance is terminated * basic call going through * Added missing metadata join to instance_get calls * add logging to migration and fix migration version * Migrate quota schema from hardcoded columns to a key-value approach. The hope is that this change would make it easier to change the quota system without future schema changes. It also adds the concept of quotas that are unlimited * Conceded :-D * updated the mac_address delete function to actually delete the rows, and update fixed_ips * Added missing flavorRef and imageRef checks in the os api xml deserialization code along with tests * Fixed minor pylint errors * This branch splits out the IPv6 address generation into pluggable backends. A new flag named ipv6_backend specifies which backend to use * Reduce indentation to avoid PEP8 failures * merge koelker migration changes * using mac_address from fixed_ip instead of instance * PEP8 cleanups * Use new 3-argument API * add a todo * style fixing * Removed obsolete method and test * renamed test cases in nova/tests/api/openstack/test_servers.py to use a consistent naming convention as used in nova/tests/api/openstack/test_images.py. also fixed a couple of pylint #C0103 errors in test_servers.py * make the migration work like we expect it to * Fixed all pep8 errors in tools/install_venv.py. All tests pass * Added the imageRef and flavorRef attributes in the xml deserialization * Add vnc_keymap flag and enable setting keymap for vnc console * Review changes and merge from trunk * Pep8 cleaning * Added response about error in nova-manage project operations * Removed tools/clean_vlans and tools/nova-debug from pep8 tests as they are shell scripts * Added lines to include tools/* (except ajaxterm) in pep8 tests * Add a unit test for snapshot_volume * Define image state during snapshotting. Name snapshot to the name provided, not generate * Unit test for snapshotting (creating custom image) * fixed a few C0103 errors in test_servers.py * renamed test cases to use a consistent naming convention as used in nova/tests/api/openstack/test_images.py * fix sys.argv requirement * first cut at weighted-sum tests * merge trunk * add udev rules and modified ovs_configure_vif_flows.py to work with udev rules * Adds proper error handling for images that can't be found and a test for deregister image * added |fixed_ip_get_all_by_mac_address| and |mac_address_get_by_fixed_ip| to db and sqlalchemy APIs * started on integrating HostFilter * Add support for rbd snapshots * Merging in trunk * I'm assuming that openstack doesnt work with python < 2.6 here (which I read somewhere on the wiki). This patch will check to make sure python >= 2.6 is installed, and also allow it to work with python 2.7 (and greater in the future) * merge lp:nova * XenAPI was not implemented to allow for multiple simultaneous XenAPI requests. A single XenAPIConnection (and thus XenAPISession) is used for all queries. XenAPISession's wait_for_task method would set a self.loop = for looping calls to _poll_task until task completion. Subsequent (parallel) calls to wait_for_task for another query would overwrite this. XenAPISession._poll_task was pulled into the XenAPISession.wait_for_task method to avoid having to store self.loop * pep8 fixes * Merged trunk * volume/driver: make unit test, test_volume, pass * Make set_admin_password non-blocking to API * Merged trunk * Review feedback * Lost a flag pulling from another branch. Whoops * Update the compute manager so that it breaks out of a loop if set_admin_password is not implemented by the driver. This avoids excessively logging NotImplementedError exceptions * Merging in Sandy's changes * Make host timeout configurable * Make set_admin_password non-blocking to API * volume/driver: implement basic snapshot * merge trunk * Update the compute manager so that it breaks out of a loop if set_admin_password is not implemented by the driver * Add init script and sysconfig file for openvswitch-nova * volume/driver: factor out lvm opration * Authors: add myself to Authers file * trunk merge * Adding zones doc into index of devref plus a bug fix for flag spellings * fixup based on Lorin's feedback * added flag lost in migration * merge trunk * pep8 * Adding basic tests for call_zone_method * fixed_ip disassociate now also unsets mac_address_id * Make sure imports are in alphabetical order * updated previous calls referring to the flags to use the column from the networks table instead * merged from trunk * handle instance_type_ids that are NULL during upgrade to integers * fix for lp760921. Previously, if tune2fs failed, as it does on windows hosts, kpartx -d also failed to be called which leaves mapped partitions that retain holds on the nbd device. These holds cause the observed errors * if a LoopingCall has canceled the loop, break out early instead of sleeping any more than needed * Add a test for parallel builds. verified this test fails before this fix and succeeds after this fix * incorporated ImageNotFound instead of NotFound * merged from trunk * misc related network manager refactor and cleanup * changed NotFound exception to ImageNotFound * Update comment * Variable renaming * Add test suite for IPv6 address generation * Accept and ignore project_id * Make it so that ExtensionRequest objects now return proper webob objects. This avoids the odd serialization code in the RequestExtensionController class which converts JSON dicts to webobs for us * merged from trunk * Remove ResponseExtensions. The new RequestExtension covers both use cases * Initial work on request extensions * Added network_info into refresh_security_group_rules * fixed pep8 spacing issue * merge from trunk * rename quota column to 'hard_limit' to make it simpler to avoid collisions with sql keyword 'limit' * Fix remote volume code * 1 Set default paths for nova.conf and api-paste.ini to /etc/nova/ 2 Changed countryName policy because https://bugs.launchpad.net/nova/+bug/724317 still affected * Implement IPv6 address generation that includes account identifier * messing around with the flow of create() and specs * Redundant line * changes per review * docstring cleanup, nova/network dir * make instance.instance_type_id an integer to support joins in postgres * merge from trunk and update .mailmap file * Merged trunk * Updated MANIFEST for template move * NoValidHost exception test * Fixes an issue with conversion of images that was introduced by exception refactoring. This makes the exceptions when trying to locate an ec2 id clearer and also adds some tests for the conversion methods * oops fixed a docstring * Pep8 stuff * Bluprint URL: https://blueprints.launchpad.net/nova/+spec/improve-pylint-scores/ * start of zone_aware_scheduler test * Moved everything into notifier/api * make sure proper exceptions are raised for ec2 id conversion and add tests * better function name * Updated the value of the nova-manager libvirt_type * more filter alignment * Removed commented out 'from nova import log as logging' line, per request from Brian Lamar * merge trunk * align filters on query * better pylint scores on imports * Code cleanup * Merged trunk * Abstract out IPv6 address generation to pluggable backends * Merged trunk * First cut with tests passing * changing Authors file * removed unused wild card imports, replaced sqlalchemy wildcard import with explicit imports * removed unused wild card imports, replaced sqlalchemy wildcard import with explicit imports * Fix for #780276 (run_tests.sh fails test_authors_up_to_date when using git repo) * extracted xenserver capability reporting from dabo's dist-scheduler branch and added tests * migrate back updated_at correctly * added in log_notifier for easier debugging * Add priority based queues to notifications. Remove duplicate json encoding in notifier (rpc.cast does encoding... ) make no_op_notifier match rabbit one for signature on notify() * Bugfix #780784. KeyError when creating custom image * removed unused wild card imports, replaced sqlalchemy wildcard import with explicit imports * removed unused wild card imports, replaced sqlalchemy wildcard import with explicit imports * removed unused wild card imports, replaced sqlalchemy wildcard import with explicit imports * Better tests * Add example * give a more informative message if pre-migration assertions fail * Whoops * fix migration bug * Pep8 * Test * remove stubbing of XenAPISession.wait_for_task for xenapi tests as it doesn't need to be faked. Also removed duplicate code that stubbed xenapi_conn._parse_xmlrpc_value * migration bug fixes * Change xenapi's wait_for_task to handle multiple simultaenous queries to fix lp:766404 * Added GitPython to [install_dir]/tools/pip-requires * got rid of unnecessary imports * Enable RightAWS style signature checking using server_string without port number, add test cases for authenticate() and a new helper routine, and fix lp753660 * Better message format description * unified underscore/dash issue * update tests to handle unlimited resources in the db * pep8 * capabilities flattened and tests fixed * Set root password upon XenServer instance creation * trunk merge * clean up unused functions from virt/images.py * Removing a rogue try/catch expecting a non-existant exception.TimeoutException that is never raised * basic test working * db: fix db versioning * fix mismerge by 1059 * volume/driver: implement basic snapshot/clone * volume/driver: factor out lvm opration * Host Filtering for Distributed Scheduler (done before weighing) * Rebased to trunk rev 1057 * Adds coverage-related packages to the tools/pip-requires to allows users to generate coverage reporting when running unit tests with virtulenv * merge from trunk * Set publish_errors default to False * convert quota table to key-value * Simple fix for this issue. Tries to raise an exception passing in a variable that doesn't exist, which causes an error * Fixed duplicate function * Review feedback * Review feedback * Fixed method in flavors * Review feedback * Review feedback * Merged trunk * Set root password upon XenServer instance creation * Added Python packages needed for coverage reports to virtualenv packages * Added interface functions * merge from trunk * added test for show_by_name ImageNotFound exception * tests pass again * Sanitize get_console_output results. See bug #758054 * revised file docs * New author in town * Changes to allow a VM to boot from iso image. A blank HD is also attached with a size corresponding to the instance type * Added stub function for a referenced, previously non-existant function * Merged trunk * grabbed from dist-sched branch * Explicitly casted a str to a str to please pylint * Removed incorrect, unreachable code * spacing fix * pep8 fix * Improved error notification in network create * Add two whitespaces to conform PEP8 * Publish errors via nova.notifier * Added myself to Authors file * terminology: no more plug-ins or queries. They are host filters and drivers * Added interface function to ViewBilder * Added interfaces to server controller * added self to authors * fixed issue with non-existent variable being passed to ImageNotFound exception * removing rogue TimeoutException * merge prop fixes * Merged trunk * print statements removed * merge with trunk * flipped service_state in ZoneManager and fixed tests * pep8 * not = * not = * and or test * and or test * merge from trunk * Removed extra newline after get_console_output in fake virt driver * Moved all reencoding to compute manager to satisfy both Direct API and internal cloud call * Merged with current trunk * added myself to Authors * Adding a test case to show the xml deserialization failure for imageRef and flavorRef * Fixes for nova-manage vpn list * json parser * Don't fail the test suite in the absence of VCS history * It's ok if there's no commit history. Otherwise the test suite in the tarball will fail * Merged trunk * flavor test * Fix indentation * tests and better driver loading * Add missed hyphen * Adding OSAPI v1.1 limits resource * Adding support for server rebuild to v1.0 and v1.1 of the Openstack API * reduce policy for countyname * looking for default flagfile * adding debug log message * merging trunk * merging trunk * removing class imports * Merged trunk * Merged trunk * Moved reencoding logic to compute manager and cloud EC2 API * ensure create image conforms to OS API 1.1 spec * merge updates from trunk * Added support in the nova openstack api for requests with local hrefs, e.g., "imageRef":"2" Previously, it only supported "imageRef":"http://foo.com/images/2". The 1.1 api spec defines both approaches * Add a flag to allow the user to specify a dnsmasq configuration file for nova-network to use when starting dnsmasq. Currently the command line option is set to "--config-fil=" with nothing specified. This branch will leave it as it is if the user does not specify a config file, but will utilize the specific file if they do * merged from trunk * implemented review suggestion EAFP style, and fixed test stub fake_show needs to have image_state = available or other tests will fail * got rid of extra whitespace * Update tools/pip-requires and tools/install_venv.py for python2.7 support (works in ubuntu 11.04) * No need to test length of admin password in local href test * merging trunk; resolving conflicts; fixing issue with ApiError test failing since r1043 * Added support in osapi for requests with local hrefs, e.g., "imageRef":"2" * initial pass * Implement get_host_ip_addr in the libvirt compute driver * merging trunk; resolving conflicts * Modified the instance status returned by the OS api to more accurately represent its power state * Fixed 2 lines to allow pep8 check to pass * Since run_tests.sh utilizes nose to run its tests, the -x, --stop flag works correctly for halting tests on the first failed test. The usage information for run_tests.sh now includes the --stop flag * add support for git checking and a default of failing if the history can't be read * ApiError 'code' arg set to None, and will only display a 'code' as part of the str if specified * Fixed: Check for use of IPv6 missing * removed unused method and fixed imports * Change the links in the sidebar on the docs pages * Use my_ip for libvirt version of get_host_ip_addr * fix typo in import * removed unused method and fixed imports * small changes in libvirt tests * place ipv6_rules creation under if ip_v6 section * Added checking ip_v6 flag and test for it * merging trunk * adding view file * Expose AuthManager.list_projects user filter to nova-manage * Final cleanup of nova/exceptions.py in my series of refactoring branches * Uses memcached to cache roles so that ldap is actually usable * added nova version to usage output of bin/nova-manage for easy identification of installed codebase * Changing links in sidebar to previous release * Rebased to trunk rev 1035 * converted 1/0 comparison in db to True/False for Postgres cast compatibility * Changed test_cloud and fake virt driver to show out the fix * converted 1/0 comparison to True/False for Postgres compatibility * pep8 * fixed docstring per jsb * added version list command to nova-manage * Added more unit-test for multi-nic-nova libvirt * Sanitize get_console_output in libvirt_conn * added nova version output to usage printout for nova-manage * Make the import of distutils.extra non-mandatory in setup.py. Just print a warning that i18n commands are not available.. * Correcting exception case * further cleanup of nova/exceptions.py * added eagerloading mac adddresses for instance * merge with trunk and resolve conflicts * Added myself to authors file * pep8 fixes * Refactoring usage of nova.exception.NotFound * Let nova-mange limit project list by user * merging trunk * Make the import of distutils.extra non-mandatory in setup.py. Just print a warning that i18n commands are not available.. * Updated run_tests.sh usage info to reflect the --stop flag * Fixed formatting to align with PEP 8 * Modified instance status for shutoff power state in OS api * Refactoring the usage of nova.exception.Duplicate * Rebased to trunk rev 1030 * removed extra newline * merged from trunk * updated tests to reflect serverRef as href (per Ilya Alekseyev) and refactored _build_server from ViewBuilder (per Eldar Nugaev) * Add a test checking spawn() works when network_info is set, which currently doesn't. The following patch would fix parameter mismatch calling _create_image() from spawn() in libvirt_conn.py * removed unused imports and renamed template variables * pep8 * merging trunk * Renamed test_virt.py to test_libvirt.py as per suggestion * fixing bad merge * Merged trunk and fixed simple exception conflict * merging trunk * Refactoring nova.exception.Invalid usage * adding gettext to setup.py * Use runtime XML instead of VM creation time XML for createXML() call in order to ensure volumes are attached after RebootInstances as a workaround, and fix bug #747922 * Created new libvirt directory, moved libvirt_conn.py to libvirt/connection.py, moved libvirt templates, broke out firewall and network utilities * Rebased to trunk rev 1027, and resolved a conflict in nova/virt/libvirt_conn.py * Rebased to trunk rev 1027 * clarifies error when trying to add duplicate instance_type names or flavorids via nova-manage instance_type * merge trunk * Rework completed. Added test cases, changed helper method name, etc * pep8 * merge trunk, resolved conflict * merge trunk * Abstracted libvirt's lookupByName method into _lookup_by_name * Provide option of auto assigning floating ip to each instance. Depend on auto_assign_floating_ip boolean flag value. False by default * Fixes per review * Restore volume state on migration failure to fix lp742256 * Fixes cloudpipe to get the proper ip address * merging trunk * Fix bug with content-type and small OpenStack API actions refactor * merge with trunk * merge trunk * merged trunk * -Fixed indent for _get_ip_version -Added LoopingCall to destroy as suggested by earlier bug report -Standardized all LoopingCall uses to include useful logging and better error handling * Create a dictionary of instance_types before executing SQL updates in the instance_type_id migration (014). This should resolve a "cannot commit transaction - SQL statements in progress" error with some versions of sqlite * create network now takes bridge for flat networks * Adapt DescribeInstances to EC2 API spec * Change response of the EC2 API CreateVolume method to match the API docs for EC2 * Merged trunk and fixed api servers conflict * pep8 * Fixes and reworkings based on review * pep8 * Addressing exception.NotFound across the project * fix logging in reboot OpenStack API * eager loaded mac_address attributes for mac address get functions * updated image builder and tests for OS API 1.1 compatibility (serverRef) * forgot import * change action= to actions= * typo * forgot to save * moved get_network_topic to network.api * style cleaning * Fixed network_info creation in libvirt driver. Now creating same dict as in xenapi driver * Modified instance status for shutdown power state in OS api * rebase trunk * altered imports * commit to push for testing * Rebased to trunk rev 1015 * Utility method reworked, etc * Docstring cleanup and formatting (nova/image dir). Minor style fixes as well * Docstring cleanup and formatting (nova/db dir). Minor style fixes as well * Docstring cleanup and formatting (nova dir). Minor style fixes as well * use vpn filter in basic filtering so cloudpipe works with iptables driver * use simpler interfaces * Docstring cleanup and formatting (console). Minor style fixes as well * Docstring cleanup and formatting (compute). Minor style fixes as well * merge trunk * Add privateIpAddress and ipAddress to EC2 API DescribeInstances response * style fixing * Fix parameter mismatch calling _create_image() from spawn() in libvirt_conn.py * Add a test checking spawn() works when network_info is set, which currently doesn't. The following patch would fix it * put up and down in the right dir * Makes metadata correctly display kernel-id and ramdisk-id * pep8 cleaning * style fix * revert changes that doesn't affect the bug * in doesn't work properly on instance_ref * Another small round of pylint clean-up * Added an option to run_tests.sh so you can run just pep8. So now you can: ./run_tests.sh --just-pep8 or ./run_tests.sh -p * merge trunk * fix display of vpn instance id and add output rule so it can be tested from network host * Exit early if tests fail, before pep8 is run * more changes per review * fixes per review * docstring cleanup, nova/image dir * Docstring cleanup and formatting. Minor style fixes as well * cleanups per code review * docstring cleanup, nova dir * fixed indentation * docstring cleanup, console * docstring cleanup, nova/db dir * attempts to make the docstring rules clearer * fix typo * docstring cleanup compute manager * bugfix signature * refactor the way flows are deleted/reset * remove ambiguity in test * Pylinted nova-compute * Pylinted nova-manage * replaced regex to webob.Request.content_type * fix after review: style, improving tests, replacing underscore * merge with trunk * fix Request.get_content_type * Reverted bad merge * Rebased to trunk rev 1005 * Removed no longer relevant comment * Removed TODO we don't need * Removed _ and replaced with real variable name * instance type get approach changed. tests fixed * Merged trunk * trunk merged * fix: mark floating ip as auto assigned * Add to Authors * Change response format of CreateVolume to match EC2 * revamped spacing per Rick Harris suggestion. Added exact error to nova-manage output * only apply ipv6 if the data exists in xenstore * Create a dictionary of instance_types before executing SQL updates in the instance_type_id migration (014). This should resolve a "cannot commit transaction - SQL statements in progress" error with some versions of sqlite * add support for git checking and a default of failing if the history can't be read * strip output, str() link local * merging lp:~rackspace-titan/nova/exceptions-refactor-invalid * Round 1 of pylint cleanup * Review feedback * Implement quotas for the new v1.1 server metadata controller * fix doc typo * fix logging in reboot OpenStack API * make geninter.sh use the right tmpl file * pep8 fix * refactoring usage of exception.Duplicate errors * rename all versions of image_ec2_id * Abstracted lookupByName calls to _lookup_by_name for centralized error handling * actually use the ec2_id * remove typo * merging lp:~rackspace-titan/nova/exceptions-refactor-invalid * Fixes cloudpipe to get the proper ip address * add include file for doc interfaces * add instructions for setting up interfaces * Merged trunk and fixed small comment * Fixed info messages * Tweak to destroy loop logic * Pretty critical spelling error * Removed extra calls in exception handling and standardized the way LoopingCalls are done * one last i18n string * Merged trunk * multi-line string spacing * removing rogue print * moving dynamic i18n to static * refractoring * Add support for cloning a Sheepdog volume * Add support for cloning a Sheepdog volume * Add support for creating a new volume from a existing snapshot with EC2 API * Add support for creating a new volume from a existing snapshot with EC2 API * Add support for creating a Sheepdog snapshot * Add support for creating a Sheepdog snapshot * Add support for creating a snapshot of a nova volume with euca-create-snapshot * Add support for creating a snapshot of a nova volume with euca-create-snapshot * trunk merged * Implement get_host_ip_addr in the libvirt compute driver * Adding projectname username to the nova-manage project commands to fix a doc bug, plus some edits and elimination of a few doc todos * pep8 fixes * Remove zope.interface from the requires file since it is not used anywhere * use 'is not None' instead of '!= None' * Fix loggin in creation server in OpenStack API 1.0 * Support admin password when specified in server create requests * First round of pylint cleanup * merge lp:nova and resolve conflicts * Change '== None' to 'is None' * remove zope.interface requires * use 'is not None' instead of '!= None' * pep8 fixes * Change '== None' to 'is None' * Fixes nova-manage image convert when the source directory is the same one that local image service uses * trunk merged * pep8 fixed * calc link local * not performing floating ip operation with auto allocated ips * it is rename not move * pep8 fix * Rebased to trunk rev 995 * Rebased to trunk rev 995 * merge trunk * add fault as response * Fix logging in openstack api * Fix logging in openstack api * Fix logging in openstack api * trunk merged. conflict resolved * trunk merged. conflict resolved * The change to utils.execute's call style missed this call somehow, this should get libvirt snapshots working again * Fix parameter mismatch calling to_xml() from spawn() in libvirt_conn.py * move name into main metadata instead of properties * change libvirt snapshot to new style execute * Add additional logging for WSGI and OpenStack API authentication * Rename the id * Added period to docstring for metadata test * Merged trunk * Empty commit to hopefully regenerate launchpad diff * Explicitly tell a user that they need to authenticate against a version root * Merged trunk * merging trunk * adding documentation & error handling * correcting tests; pep8 * Removed the unused self.interfaces_xml variable * Only poll for instance states that compute should care about * Diablo versioning * Diablo versioning * Rebased to trunk rev 989 * Rebased to trunk rev 989 2011.2 ------ * Final versioning for Cactus * initial roundup of all 'exception.Invalid' cases * merge trunk * set the bridge on each OvsFlow * merge with trunk * bugfix * bugfix * Fix parameter mismatch calling to_xml() from spawn() in libvirt_conn.py * add kvm-pause and kvm-suspend 2011.2rc1 --------- * Rework GlanceImageService._translate_base( * Updated following to RIck's comments * Rebased to trunk rev 987 * Rework GlanceImageService._translate_base() to not call BaseImageService._translate_base() otherwise the wrong class attributes are used in properties construction.. * Try to be nicer to the DB when destroying a libvirt instance * pep8 * merge trunk * fixed error message i18n-ization. added test * Don't hammer on the DB * Debug code clean up * Rebased to trunk rev 986 * An ultimate workaround workd... :( * Zero out volumes during deletion to prevent data leaking between users * Minor formatting cleanup * jesse@aire.local to mailmap * Changed pep8 command line option from --just-pep8 to --pep8 * re-add broken code * merge trunk * Final versioning * Updates the documentation on creating and using a cloudpipe image * iSCSI/KVM test completed * Minor fixes * Fix RBDDriver in volume manager. discover_volume was raising exception. Modified local_path as well * Fixes VMware Connection to inherit from ComputeDriver * Fixes s3.py to allow looking up images by name. Smoketests run unmodified again with this change! * move from try_execute to _execute * Make VMWare Connection inherit from ComputeDriver * add up and down .sh * fix show_by_name in s3.py and give a helpful error message if image lookup fails * remove extra newline * dots * Rebased to trunk rev 980 * Rework importing volume_manager * Blushed up a little bit * Merged trunk * Only warn about rouge instances that compute should know about * Added some tests * Dangerous whitespace mistake! :) * Cleanup after prereq merge * Add new flag 'max_kernel_ramdisk_size' to specify a maximum size of kernel or ramdisk so we don't copy large files to dom0 and fill up /boot/guest * Rebased to trunk rev 980 * Merged lp:~rackspace-titan/nova/server_metadata_quotas as a prereq * Merged trunk * Docstring cleanup and formatting. Minor style fixes as well * Updated to use setfacl instead of chown * Commit for merge of metadata_quotas preq * merge trunk * Removed extra call from try/except * Reverted some superfluous changes to make MP more concise * Merged trunk * Reverted some superfluous changes to make MP more concise * Replace instance ref from compute.api.get_all with one from instance_get. This should ensure it gets fully populated with all the relevant attributes * Add a unit test for terminate_instances * pep8 * Fix RBDDriver in volume manager. discover_volume was raising exception. Modified local_path as well * pep8 fixes * migaration and pep8 fixes * update documentation on cloudpipe * Makes genvpn path actually refer to genvpn.sh instead of geninter.sh * typo * Merged trunk * Updating the runnova information and fixing bug 753352 * merge trunk * network manager changes, compute changes, various other * Floating ips auto assignment * Sudo chown the vbd device to the nova user before streaming data to it. This resolves an issue where nova-compute required 'root' privs to successfully create nodes with connection_type=xenapi * Minor blush ups * A minor blush up * A minor blush up * Remove unused self.interfaces_xml * Rebased to trunk rev 977 * Rebase to trunk rev 937 * debug tree status checkpoint 2 * docstring cleanup, direct api, part of compute * bzr ignore the top level CA dir that is created when running 'run_tests.sh -N' * fix reference to genvpn to point to the right shell script * Set default stateOrProvice to 'supplied' in openssl.cnf.tmpl * merge trunk * This branch fixes https://bugs.launchpad.net/bugs/751231 * Replace instance ref from compute.api.get_all with one from instance_get. This should ensure it gets fully populated with all the relevant attributes * When using libvirt, remove the persistent domain definition when we call destroy, so that behavior on destroy is as it was when we were using transient instances * Rebased to trunk rev 973 * Currently terminating an instance will hang in a loop, this allows for deletion of instances when using a libvirt backend. Also I couldn't help add a debug log where an exception is caught and ignored * merge trunk * resolved lazy_match conflict between bin/nova-manage instance and instance_type by moving instance subcommand under vm command. documented vm command in man page. removed unused instance_id from vm list subcommand * Ooops - redefining the _ variable seems like a _really_ bad idea * Handle the case when the machine is already SHUTOFF * Split logic on shutdown and undefine, so that even if the machine is already shutdown we will be able to proceed * Remove the XML definition when we destroy a machine * Rebased to trunk rev 971 * debug tree status checkpoint * Reabased to trunk rev 971 * Fixed log message gaffe * pylintage * typo - need to get nova-volumes working on this machine :-/ * dd needs a count to succeed, and remove unused/non-working special case for size 0 * There is a race condition when a VDI is mounted and the device node is created. Sometimes (depending on the configuration of the Linux distribution) nova loses the race and will try to open the block device before it has been created in /dev * zero out volumes on delete using dd * Added RST file on using Zones * Fixes euca-attach-volume for iscsi using Xenserver * pep8 * merge trunk * removes log command from nova-manage as it no longer worked in multi-log setup * Added error message to exception logging * Fixes bug which hangs nova-compute when terminating an instance when using libvirt backend * missing 'to' * Short circuit non-existant device during unit tests. It won't ever be created because of the stubs used during the unit tests * Added a patch for python eventlet, when using install_venv.py (see FAQ # 1485) * fixed LOG level and log message phrase * merge prop tweaks 2 * Set default stateOrProvice to 'supplied' in openssl.cnf.tmpl * This branch fixes https://bugs.launchpad.net/nova/+bug/751242 * Ignore errors when deleting the default route in the ensure_bridge function * bzr ignore the CA dir * merge prop tweaks 2011.2gamma1 ------------ * Import translations from Launchpad * added Zones doc * Update the describe_image_attribute and modify_image_attribute functions in the EC2 API so they use the top level 'is_public' attribute of image objects. This brings these functions in line with the base image service * Import from lp:~nova-core/nova/translations * corrects incorrect openstack api responses for metadata (numeric/string conversion issue) and image format status (not uppercase) * Implement a mechanism to enforce a configurable quota limit for image metadata (properties) within the OS API image metadata controller * Update the describe_image_attribute and modify_image_attribute functions in the ec2 API so they use the top level 'is_public' attribute of image objects. This brings these functions in line with the base image service * Ignore errors when deleting the default route in the ensure_bridge function * merge trunk * removed log command from nova-manage. no longer applicable with multiple logfiles * merge trunk * reminde admins of --purge option * Fixes issues with describe instances due to improperly set metadata * Keep guest instances when libvirt host restarts * fix tests from moving access check into update and delete * Added support for listing addresses of a server in the openstack api. Now you can GET * /servers/1/ips * /servers/1/ips/public * /servers/1/ips/private Supports v1.0 json and xml. Added corresponding tests * Log libvirt errcode on exception * This fixes how the metadata and addresses collections are serialized in xml responses * Fix to correct libvirt error code when the domain is not found * merged trunk * Removed commented-out old 'delete instance on SHUTOFF' code * Automatically add the metadata address to the network host. This allows guests to ARP for the address properly * merged trunk and resolved conflict * slight typo * clarified nova-manage instance_type create error output on duplicate flavorid * This branch is a patch for fixing below issue. > Bug #746821: live_migration failing due to network filter not found Link a bug report * fix pep8 violation * Update instances table to use instance_type_id instead of the old instance_type column which represented the name (ex: m1.small) of an instance type * Drop extra 'None' arg from dict.get call * Some i18n fixes to instance_types * Renamed computeFault back to cloudServersFault in an effort to maintain consistency with the 1.0 API spec. We can look into distinguishing the two in the next release. Held off for now to avoid potential regression * adds a timeout on session.login_with_password() * Drop unneeded Fkey on InstanceTypes.id * Bypass a potential security vulnerability by not setting shell=True in xenstore.py, using johannes.erdfelt's patch * Renamed computeFault to cloudServersFault * fixed the way ip6 address were retrieved/returned in _get_network_info in nova/virt/xenapi/vmops * added -manage vm [list|live-migration] to man page * removed unused instance parameter from vm list ... as it is unused. added parameters to docstring for vm list * moved -manage instance list command to -manage vm list to avoid lazy match conflict with instance_types * Simplify by always adding to loopback * Remove and from AllocateAddress response, and fix bug #751176 * remove unused code * better error message * Blush up a bit * Rebased to trunk rev 949 * pep8 * adds timeout to login_with_password * test provider fw rules at the virt/ipteables layer. lowercase protocol names in admin api to match what the firewall driver expects. add provider fw rule chain in iptables6 as well. fix a couple of small typos and copy-paste errors * fixed based on reviewer's comment - 1. erase unnecessary blank line, 2. adding LOG.debug * Rebased to trunk rev 949 * fixed based on reviewer's comment - 'locals() should be off from _() * Make description of volume_id more generic * add the tests * pep8 cleanup * ApiError code should default to None, and will only display a code if one exists. Prior was output an 'ApiError: ApiError: error message' string, which is confusing * ec2 api run_instances checks for image status must be 'available'. Overhauled test_run_instances for working set of test assertions * if we delete the old route when we move it we don't need to check for exists * merged trunk * removed comment on API compliance * Added an option to run_tests.sh so you can run just pep8. So now you can: ./run_tests.sh --just-pep8 or ./run_tests.sh -p * Add automatic metadata ip to network host on start. Also fix race where gw is readded twice * Controllers now inherit from nova.api.openstack.common.OpenstackController * Merged trunk * Support providing an XML namespace on the XML output from the OpenStack API * Merged with trunk, fixed up test that wasn't checking namespace * Added support for listing addresses of a server in the openstack api. Now you can GET * /servers/1/ips * /servers/1/ips/public * /servers/1/ips/private Supports v1.0 json and xml. Added corresponding tests * check visibility on delete and update * YADU (Yet Another Docstring Update) * Make sure ca_folder is created before chdir()ing into it * another syntax error * Use a more descriptive name for the flag to make it easier to understand the purpose * Added logging statements for generic WSGI and specific OpenStack API requests * syntax error * Incorprate johannes.erdfelt's patch * updated check_vm_record in test_xenapi to check the gateway6 correctly * updated get_network_info in libvirt_conn to correctly insert ip6s and gateway6 into the network info, also small style fixes * add docstrings * updated _prepare_injectables() to use info[gateway6] instead of looking inside the ip6 address dict for the gateway6 information * Enable RightAWS style signing on server_string without port number portion * modified behavior of inject_network_info and reset_network related to a vm_ref not being passed in * Create ca_folder if it does not already exist * Wait for device node to be created after mounting image VDI * Improved unit tests Fixed docstring formatting * Only create ca_path directory if it does not already exist * Added bug reference * Only create ca_path directory if it does not already exist * Make "setup.py install" much more thorough. It now installs tools/ into /usr/share/nova and makes sure api-paste.conf lands in /etc/nova rather than /etc * fixed based on reviwer's comment * return image create response as image dict * Add a patch for python eventlet, when using install_venv.py (see FAQ # 1485) * Undo use of $ in chain name where not needed * Testing for iptables manager changes * Don't double-apply provider fw rules in NWFilter and Iptables. Don't create provider fw rules for each instance, use a chain and jump to it. Fix docstrings * typo * remove -None for user roles * pep8 * fallback to status if image_state is not set * update and fix tests * unite the filtering done by glance client and s3 * Removing naughty semicolon * merged trunk * remove extraneous empty lines * move error handling down into get_password function * refactor to handle invalid adminPass * fixed comment * merged trunk * add support for specifying adminPass for JSON only in openstack api 1.1 * add tests for adminPass on server create * Fix a giant batch of copypasta * Remove file leftover from conflict * adding support for OSAPI v1.1 limits resource * Moved 'name' from to , corrected and fixes bug # 750482 * This branch contains the fix for lp:749973. VNC is assumed that is default for all in libvirt which LXC does not support yet * Remove comments * Separate CA/ dir into code and state * removed blank lines for pep8 fix * pep8 fixed * Fixed the addresses and metadata collections in xml responses. Added corresponding tests * Dont configure vnc if we are using lxc * Help paste_config_file find the api config now that we moved it * Add bug reference * Move api-paste.ini into a nova/ subdir of etc/ * Add a find_data_files method to setup.py. Use it to get tools/ installed under /usr/(local/)/share/nova * Nits * Add missing underscore * fix bug lp751242 * fix bug lp751231 * Automatically create CA state dir, and make sure the CA scripts look for the templates in the right places * fix bug 746821 * Remove and from AllocateAddress response, and fix bug #751176 * Allow CA code and state to be separated, and make sure CA code gets installed by setup.py install * Rebased to trunk 942 * fix bug lp:682888 - DescribeImages has no unit tests * Correct variable name * correct test for numeric/string metadata value conversion * openstack api metadata responses must be strings * openstack api requires uppercase image format status responses * merge trunk * Refactor so that instances.instance_type is now instances.instance_type_id * splitting test_get_nic_for_xml into two functions * Network injection check fixed in libvirt driver * merging trunk * fixing log message * working with network_ref like with mapping * add test for NWFilterFirewall * Removed adminclient.py and added reference to the new nova-adminclient project in tools/pip-requires * Don't prefix adminPass with the first 4 chars of the instance name * Declares the flag for vncproxy_topic in compute.api * Fixes bug 741246. Ed Leafe's inject_file method for the agent plugin was mistakenly never committed after having to fix commits under wrong email address. vmops makes calls to this (previously) missing method * Attempt to circumvent errors in the API from improper/malformed responses from image service * fixes incorrect case of OpenStack API status response * Fixed network_info creating * Moved 'name' property from to , corrected and fixes bug # 750482 * corrected capitalization of openstack api status and added tests * libvirt_con log fix * Ensure no errors for improper responses from image service * merge trunk * Fixes error which occurs when no name is specified for an image * improving tests * network injection check fixed * Only define 'VIMMessagePlugin' class if suds can be loaded * Make euca-get-ajax-console work with Euca2ools 1.3 * Add bug reference * Use keyword arguments * add multi_nic_test * added preparing_xml test * split up to_xml to creation xml_info and filling the template * use novalib for vif_rules.py, fix OvsFlow class * extract execute methods to a library for reuse * Poller needs to check for BUILDING not NOSTATE now, since we're being more explict about what is going on * Add checking if the floating_ip is allocated or not before appending to result array in DescribeAddresses * Added synchronize_session parameter to a query in fixed_ip_disassociate_all_by_timeout() and fix #735974 * Made the fix simpler * Add checking if the floating_ip is allocated or not before appending to result array * Added updated_at field to update statement according to Jay's comment * change bridge * Add euca2ools import * Rebased to trunk 930 * Rebased to trunk 726 * lots of updates to ovs scripts * Make euca-get-ajax-console work with Euca2ools 1.3 * merge trunk * Hopefully absolved us of the suds issue? * Removes excessive logging message in the event of a rabbitmq failure * Add a change password action to /servers in openstack api v1.1, and associated tests * Removal of instance_set_state from driver code, it shouldnt be there, but instead should be in the compute manager * Merged trunk * Don't include first 4 chars of instance name in adminPass * Friendlier error message if there are no compute nodes are available * merge lp:nova * Merged waldon * Adding explanation keyword to HTTPConflict * Merged waldon * makes sure s3 filtering works even without metadata set properly * Merged waldon * Didn't run my code. Syntax error :( * Now using the new power state instead of string * adding servers view mapping for BUILDING power state * removes excessive logging on rabbitmq failure * Review feedback * Friendlier error message if there are no compute nodes are available * Merged with Waldon * Better error handling for spawn and destroy in libvirt * pep8 * adding 'building' power state; testing for 409 from OSAPI when rebuild requested on server being rebuild * More friendly error message * need to support python2.4, so can't use uuid module * If the floating ip address is not allocated or is allocated to another project, then the user trying to associate the floating ip address to an instance should get a proper error message * Update state between delete and spawn * adding metadata support for v1.1 * Rebuild improvements * Limit image metadata to the configured metadata quota for a project * Add volume.API.remove_from_compute instead of compute.API.remove_volume * Rebased to trunk rev 925 * Removed adminclient and referred to pypi nova_adminclient module * fixed review comment for i18n string multiple replacement strings need to use dictionary format * fixed review comment for i18n string multiple replacement strings need to use dictionary format * Add obviously-missing method that prevents an Hyper-V compute node from even starting up * Avoid any hard dependencies in nova.virt.vmwareapi.vim * review cleanup * Handles situation where Connection._instances doesn't exist (ie. production) * localize NotImplementedError() * Change '"%s" % e' to 'e' * Fix for LP Bug #745152 * Merged waldon * adding initial v1.1 rebuild action support * Add ed leafe's code for the inject_file agent plugin method that somehow got lost (fixes bug 741246). Update TimeoutError string for i18n * submitting a unit test for terminate_instance * Update docstrings and spacing * fixed ordering and spacing * removed trailing whitespace * updated per code review, replaced NotFound with exception.NotFound * Merged Waldon's API code * remove all references to image_type and change nova-manage upload to set container format more intelligently * Rough implementation of rebuild_instance in compute manager * adding v1.0 support for rebuild; adding compute api rebuild support * Key type values in ec2_api off of container format * Whoops * Handle in vim.py * Refixed unit test to check XML ns * Merged with trunk (after faults change to return correct content-type) * OpenStack API faults have been changed to now return the appropriated Content-Type header * More tests that were checking for no-namespace * Some tests actually tested for the lack of a namespace :-) * pep8 fixes * Avoid hard dependencies * Implement quotas for the new v1.1 server metadata controller. Modified the compute API so that metadata is a dict (not an array) to ensure we are using unique key values for metadata. This is isn't explicit in the SPECs but it is implied by the new v1.1 spec since PUT requests modify individual items * Add XML namespaces to the OpenStack API * Merged with trunk * Fixed mis-merge: OS API version still has to be v1.1 * Store socket_info as a dictionary rather than an array * Merged with trunk * Added synchronize_session parameter to a query in fixed_ip_disassociate_all_by_timeout() and fix #735974 * Key was converted through str() even if None, resulting in "None" being added to authorized_keys when no key was specified * queues properly reconnect if rabbitmq is restarted * Moving server update adminPass support to be v1.0-specific OS API servers update tests actually assert and pass now Enforcing server name being a string of length > 0 * Adding Content-Type code to openstack.api.versions.Versions wsgi.Application * Fixes metadata for ec2_api to specify owner_id so that it filters properly * Makes the image decryption code use the per-project private key to decrpyt uploaded images if use_project_ca is set. This allows the decryption code to work properly when we are using a different ca per project * exception -> Fault * Merged trunk * Do not push 'None' to authorized_keys when no key is specified * Add missing method that prevent HyperV compute nodes from starting up * TopicAdapterConsumer uses a different callback model than TopicConsumer. This patch updates the console proxy to use this pattern * merge trunk * Uses the proc filesystem to check the volume size in volume smoketests so that it works with a very limited busybox image * merged trunk * The VNC Proxy is an OpenStack component that allows users of Nova to access their instances through a websocket enabled browser (like Google Chrome) * make sure that flag is there in compute api * fix localization for multiple replacement strings * fix doc to refer to nova-vncproxy * Support for volumes in the OpenStack API * Deepcopy the images, because the string formatting transforms them in-place * name, created_at, updated_at are required * Merged with trunk * "Incubator" is no more. Long live "contrib" * Rename MockImageService -> FakeImageService * Removed unused super_verbose argument left over from previous code * Renamed incubator => contrib * Wipe out the bad docstring on get_console_pool_info * use project key for decrypting images * Fix a docstring * Found a better (?) docstring from get_console_pool_info * Change volume so that it returns attachments in the same format as is used for the attachment object * Removed commented-out EC2 code from volumes.py * adding unit tests for describe_images * Fix unit test to reflect fact that instance is no longer deleted, just marked SHUTOFF * Narrowly focused bugfix - don't lose libvirt instances on host reboot or if they crash * fix for lp742650 * Added missing blank line at end of multiline docstring * pep8 fixes * Reverted extension loading tweaks * conversion of properties should set owner as owner_id not owner * add nova-vncproxy to setup.py * clarify test * add line * incorporate feedback from termie * Make dnsmasq_interface configurable * Stop nova-manage from reporting an error every time. Apparently except: catches sys.exit(0) * add comment * switch cast to a call * move functions around * move flags per termie's feedback * initial unit test for describe images * don't print the error message on sys.exit(0) * added blank lines in between functions & removed the test_describe_images (was meant for a diff bug lp682888) * Make Dnsmasq_interface configurable * fix flag names * Now checking that exists at least one network marked injected (libvirt and xenapi) * This branch adds support for linux containers (LXC) to nova. It uses the libvirt LXC driver to start and stop the instance * use manager pattern for auth token proxy * Style fixes * style fix * Glance used to return None when a date field wasn't set, now it returns ''. Glance used to return dates in format "%Y-%m-%dT%H:%M:%S", now it returns "%Y-%m-%dT%H:%M:%S.%f" * Fix up docstring * Added content_type to OSAPI faults * accidentally dropped a sentence * Added checks that exists at least one network marked inhected in libvirt and xenapi * Adds support for versioned requests on /images through the OpenStack API * Import order * Switch string concat style * adding xml test case * adding code to explicitly set the content-type in versions controller; updating test * Merged trunk * Added VLAN networking support for XenAPI * pep8 * adding server name validation to create method; adding tests * merge lp:nova * use informative error messages * adding more tests; making name checks more robust * merge trunk * Fix pep8 error * Tweaking docstrings just in case * Catch the error that mount might through a bit better * sorted pep8 errors that were introduced during previous fixes * merge trunk * make all openstack status uppercase * Add remove_volume to compute API * Pass along the nbd flags although we dont support it just yet * cleaned up var name * made changes per code review: 1) removed import of image from objectstore 2) changed to comments instaed of triple quotes * Displays an error message to the user if an exception is raised. This is vital because if logfile is set, the exception shows up in the log and the user has no idea something went wrong * Yet more docstring fixes * More style changes * Merged with trunk * Multi-line comments should end in a blankline * add note per review * More fixes to keep the stylebot happy * Cleaned up images/fake.py, including move to Duplicate exception * Code cleanup to keep the termie-bot happy * displays an error message if a command fails, so that the user knows something went wrong * Fixes volume smoketests to work with ami-tty * address some of termie's recommendations * add period, test github * pep8 * osapi servers update tests actually assert now; enforcing server name being a string of length > 0; moving server update adminPass support to be v1.0-specific * Moving shared_ip_groups controller to APIRouterV10 Replacing all shared_ip_groups contoller code with HTTPNotImplemented Adding shared_ip_groups testing * fix docstrings * Merged trunk * Updated docstrings to satisfy * Updated docstrings to satisfy * merge trunk * merge trunk * minor fix and comment * style fixes * merging trunk * Made param descriptions sphinx compatible * Toss an __init__ in the test extensions dir. This gets it included in the tarball * pep8 * Fix up libvirt.xml.template * This fixes EC2 API so that it returns image displayName and description properly * merged from trunk * Moving backup_schedule route out of base router to OS API v1.0 All controller methods return HTTPNotImplemented to prevent further confusion Correcting tests that referred to incorrect url * Fixed superfluous parentheses around locals() * Added image name and description mapping to ec2 api * use self.flags in virt test * Fixed DescribeUser in the ec2 admin client to return None instead of an empty UserInfo object * Remove now useless try/except block * Dont make the test fail * backup_schedule tests corrected; controller moved to APIRouterV10; making controller fully HTTPNotImplemented * when image_id provided cannot be found, returns more informative error message * Adds support for snapshotting (to a new image) in the libvirt code * merge lp:nova * More pep8 corrections * adding shared_ip_groups testing; replacing all shared_ip_groups contoller code with HTTPNotImplemented; moving shared_ip_groups controller to APIRouterV10 * Merged trunk * pep8 whitespace * Add more unit tests for lxc * Decided to not break old format so this should work with the way Glance used to work and the way glace works now..The best of both worlds? * update glance params per review * add snapshot support for libvirt * HACKING update for docstrings * merge trunk * Fix libvirt merge mistake * lock down requirements for change password * merge trunk * Changed TopicConsumer to TopicAdapterConsumer in bin/nova-ajax-console-proxy to allow it to start up once again * style changes * Removed iso8601 dep from pip-requires * Merged trunk * Removed extra dependency as per suggestion, although it fixes the issue much better IMO, we should be safe sticking with using the format from python's isoformat() * Assume that if we don't find a VM for an instance in the DB, and the DB state is NOSTATE, that the db instance is in the process of being spawned, and don't mark it SHUTOFF * merge with trunk * Added MUCH more flexiable iso8601 parser dep for added stability * Fix formatting of TODO and NOTE - should be a space after the # * merge lp:nova * Mixins for tests confuse pylint no end, and aren't necessary... you can stop the base-class from being run as a test by prefixing the class name with an underscore * Merged the two periodic_tasks functions, that snuck in due to parallel merges in compute.manager * Start up nova-api service on an unused port if 0 is specified. Fixes bug 744150 * Removed 'is not None' to do more general truth-checking. Added rather verbose testing * Merged with trunk * merge trunk * merge trunk, fixed conflicts * TopicConsumer -> TopicAdapterConsumer * Fix typo in libvirt xml template * Spell "warn" correctly * Updated Authors file * Removed extraneous white space * Add friendlier message if an extension fails to include a correctly named class or factory * addressed reviewers' concerns * addressed termies review (third round) * addressed termie's review (second round) * Do not load extensions that start with a "_" * addressed termies review (first round) * Clarified note about scope of the _poll_instance_states function * Fixed some format strings * pep8 fixes * Assume that if we don't find a VM for an instance in the DB, and the DB state is NOSTATE, that the db instance is in the process of being spawned * pep8 fixes * Added poll_rescued_instances to virt driver base class * There were two periodic_tasks functions, due to parallel merges in compute.manager * pep8 fixes * Bunch of style fixes * Fix utils checking * use_ipv6 now passing to interfaces.template as first level variable in libvirt_conn * Replaced import of an object with module import as per suggestion * Updates to the newest version of nova.sh, which includes: * Installing new python dependencies * Allows for use of interfaces other than eth0 * Adds a run_detached mode for automated testing * Now that it's an extension, it has to be v1.1. Also fixed up all the things that changed in v1.1 * merge trunk addressing Trey's comments * Initial extensification of volumes * Merged with trunk, resolved conflicts & code-flicts * Removed print * added a simple test for describe_images with mock for detail funciton * merged trunk * merge trunk * merge lp:nova * Adding links container to openstack api v1.1 servers entities * Merged trunk * Add license and copyright to nova/tests/api/openstack/extensions/__init__.py * Fixed a typo on line 677 where there was no space between % and FLAGS * fix typos * updated nova.sh * Added a flag to allow a user to specify a dnsmasq_config_file is they would like to fine tune the dnsmasq settings * disk_format is now an ImageService property. Adds tests to prevent regression * Merged trunk * Merged trunk * merging trunk * merge trunk * Merged trunk and fixed broken/conflicted tests * - add a "links" container to versions entities for Openstack API v1.1 - add testing for the openstack api versions resource and create a view builder * merging trunk * This is basic network injection for XenServer, and includes: * merging trunk * Implement image metadata controller for the v1.1 OS API * merging trunk * Changed use_ipv6 passing to interfaces.template * merging trunk, resolving conflicts * Add a "links" container to flavors entities for Openstack API v1.1 * Toss an __init__ in the test extensions dir. This gets it included in the tarball * Use metadata = image.get('properties', {}) * merge trunk * Revert dom check * merge trunk * Fix unit tests w/ latest trunk merge * merging trunk and resolving conflicts * Fix up destroy container * Fix up templating * Implement metadata resource for Openstack API v1.1. Includes: -GET /servers/id/meta -POST /servers/id/meta -GET /servers/id/meta/key -PUT /servers/id/meta/key -DELETE /servers/id/meta/key * Dont always assume qemu * Removed partition from setup_container * pep8 fix * disk_format is now an ImageService property * Restore volume state on migration failure * merge trunk, add unit test * merge trunk * merge trunk addressing reviewer's comments * clarify comment * add documentation * Empty commit? * minor pep8 fix in db/fakes.py * Support for markers for pagination as defined in the 1.1 spec * add hook for osapi * merge trunk * Ports the Tornado version of an S3 server to eventlet and wsgi, first step in deprecating the twistd-based objectstore * Merged with trunk Updated net injection for xenapi reflecting recent changes for libvirt * Fix lp741415 by splitting arguments of _execute in the iSCSI driver * make everything work with trunk again * Support for markers for pagination as defined in the 1.1 spec * add descriptive docstring * don't require integrated tests to recycle connections * remove twisted objectstore * port the objectstore tests to the new tests * update test base class to monkey patch wsgi * rename objectstore tests * port s3server to eventlet/wsgi * add s3server, pre-modifications * merge trunk * Added detail keywork and i18n as per suggestions * incorporate feedback from termie * Implementation of blueprint hypervisor-vmware-vsphere-support. (Link to blueprint: https://blueprints.launchpad.net/nova/+spec/hypervisor-vmware-vsphere-support) * fix typo * Addressing Trey's comments. Removed disk_get_injectables, using _get_network_info's return value * Adds serverId to OpenStack API image detail per related_image blueprint * Fix for bug #740947 Executing parted with sudo in _write_partition (vm_utils.py) * Implement API extensions for the Openstack API. Based on the Openstack 1.1 API the following types of extensions are supported: * Merging trunk * Adds unit test coverage for XenAPI Rescue & Unrescue * libvirt driver multi_nic support. In this phase libvirt can work with and without multi_nic support, as in multi_nic support for xenapi: https://code.launchpad.net/~tr3buchet/nova/xs_multi_nic/+merge/53458 * Merging trunk * Review feedback * Merged trunk * Additions to the Direct API: * Merged trunk * Added test_get_servers_with_bad_limit, test_get_servers_with_bad_offset and test_get_servers_with_bad_marker * pep8 cleanups * Added test_get_servers_with_limit_and_marker to test pagination with marker and limit request params * style and spacing fixed * better error handling and serialization * add some more docs and make it more obvious which parts are examples * add an example of a versioned api * add some more docs to direct.py * add Limited, an API limiting/versioning wrapper * improve the formatting of the stack tool * support volume and network in the direct api * Merged with trunk, fix problem with behaviour of (fake) virt driver when instance doesn't reach scheduling * In this branch we are forwarding incoming requests to child zones when the requested resource is not found in the current zone * trunk merge * Fixes a bug that was causing tests to fail on OS X by ensuring that greenthread sleep is called during retry loops * Merged trunk * Fix some errors that pylint found in nova/api/openstack/servers.py * Fix api logging to show proper path and controller:action * Merged trunk * Pylint 'Undefined variable' E0602 error fixes * Made service_get_all()'s disabled parameter default to None. Pass False for enabled services; True for disabled services. Calls to this method have been updated to remain consistent * Merged with trunk * Reconcile tests with latest trunk merges * Merged trunk and resolved conflict in nova/db/sqlalchemy/api.py * Don't try to parse the empty string as a datetime * change names for consistency with existing db api * Merged with trunk * Forgot one set of flags * Paginated results should not include the item starting at marker. Improved implementation of common.limited_by_marker as suggested by Matt Dietz. Added flag osapi_max_limit * Detect if user is running the default Lucid version of libvirt, and give a nicer error message * Updated to use new APIRouterV11 class in tests * Fix lp741514 by declaring libvirt_type in nova-manage * Docstring fixes * get image metadata tests working after the datetime interface change in image services * adding versioned controllers * Addressed issues raised by Rick Harris' review * Stubbing out utils.execute for migrate tests * Aggregates capabilities from Compute, Network, Volume to the ZoneManager in Scheduler * merged trunk r864 * removing old Versions application and correcting fakes to use new controller * Renamed __image and __compute to better describe their purposes. Use os.path.join to create href as per suggestion. Added base get_builder as per pychecker suggestion * merging trunk r864 * trunk merged. conflicts resolved * Merged trunk * merge trunk * merge trunk * Small refactor * Merged trunk and fixed tests * Couple of pep8 fixes * pep8 clearing * making servers.generate_href more robust * merging trunk r863 * Fixes lp740322: cannot run test_localization in isolation * couple of bugs fixed * Merged trunk * Dont use popen in dettaching the lxc loop * Fix up formatting of libvirt.xml.template * trunk merge * fix based on sirp's comments * Grrr... because we're not recycling the API yet, we have to configure flags the first time it's called * merge trunk * Fake out network service as well, otherwise we can't terminate the instance in test_servers now that we've started a compute service * merge trunk * Sorted out a problem occurred with units tests for VM migration * pep8 fixes * Test for attach / detach (and associated fixes) * Pass a fake timing source to live_migration_pre in every test that expectes it to fail, shaving off a whole minute of test run time * merge trunk * Poll instance states periodically, so that we can detect when something changes 'behind the scenes' * Merged with conflict and resolved conflict (with my own patch, no less) * Added simple nova volume tests * Created simple test case for server creation, so that we can have something to attach to.. * Merged with trunk * Added volume_attachments * Declare libvirt_type to avoid AttributeError in live_migration * minor tweak from termie feedback * Added a mechanism for versioned controllers for openstack api versions 1.0/1.1. Create servers in the 1.1 api now supports imageRef/flavorRef instead of imageId/flavorId * Fixed the docstring for common.get_id_from_href * better logging of exceptions * Merged trunk * Merged trunk * Fix issues with certificate updating & whitespace removal * Offers the ability to run a periodic_task that sweeps through rescued instances older than 24 hours and forcibly unrescues them * Merged trunk * Added hyperv stub * Don't try to parse a datetime if it is the empty string (or None) * Remove a blank line * pep8 fix * Split arguments of _execute in the iSCSI driver * merge trunk * Added revert_resize to base class * Addressing Rick Clark's comments * Merged with lp:nova, fixed conflicts * boto_v6 module is imported if the flag "use_ipv6" is set to True * pep8 fixes, backported some important fixes that didn't make it over from my testing system :-( * Move all types of locking into utils.synchronize decorator * Doh! Missed two places which were importing the old driver location * Review feedback * make missing noVNC error condition a bit more fool-proof * clean some pep8 issues * general cleanup, use whitelist for webserver security * Better method name * small fix * Added docstring * Updates the previously merged xs_migration functionality to allow upsizing of the RAM and disk quotas for a XenServer instance * Fix lp735636 by standardizing the format of image timestamp properties as datetime objects * migration gateway_v6 to network_info * merge prop fixes * Should not call super __init__ twice in APIRouter * fix utils.execute retries for osx * Keep the fallback code - we may want to do better version checking in future * Give the user a nicer error message if they're using the Lucid libvirt * Only run periodic task when rescue_timeout is greater than 0 * Fixed some typos * Forgot extraneous module import again * Merged trunk * Forgot extraneous module import * Automatically unrescue instances after a given timeout * trunk merge * indenting cleanup * fixing some dictionary get calls * Unit test cleanup * one more minor fix * Moving the migration yet again * xml template fixed * merge prop changes * pep8 fixed * trunk merged * added myself to authors file * Using super to call parent _setup_routes in APIRouter subclasses * Merged trunk * pep8 fix * Implement v1.1 image metadata * This branch contains the fix for bug #740929 It makes sure cidr_v6 is not null before building the 'ip6s' key in the network info dictionary. This way utils.to_global_ipv6 does not fail because of cidr==None * review comments fixed * add changePassword action to os api v1.1 * Testing of XML and JSON for show(), and conformance to API spec for JSON * Fixed tests * Merged trunk * Removed some un-needed code, and started adding tests for show(), which I forgot\! * id -> instance_id * Checking whether cidr_v6 is not null before populating ipv6 key in network info map (VMOps._get_network_info) * Executing parted with sudo in _write_partition * We update update_ra method to synchronize, in order to prevent crash when we request multiple instance at once * merged with trunk Updated xenapi network injection for IPv6 Updated unit tests * merge trunk * merge trunk * removed excess debug line * more progress * use the nova Server object * separating out components of vnc console * Earlier versions of the python libvirt binding had getVersion in the libvirt namespace, not on the connection object. Check both * Report the exception (happens when can't import libvirt) * Use subset_dict * Removing dead code * Touching up comment * Merging trunk * Pep8 fixes * Adding tests for owned and non-existent images * More small cleanups * Fix for #740742 - format describe_instance_output correctly to prevent errors in dashboard * Cleaning up make_image_fixutres * Merged with lp:nova * Small cleanup of openstack/images.py * Fixed up the new location of driver.py * Fix for lp740742 - format describe_instance_output correctly to prevent errors in dashboard * Merged with lp:nova * Filtering images by user_id now * Clarified my "Yuk" comment * Cleaned up comment about virsh domain.info() return format * Added space in between # and TODO in #TODO * Added note about the advantages of using a type vs using a set of global constants * Filled out the base-driver contract, so it's not a false-promise * Enable flat manager support for ipv6 * Adding a talk bubble to the nova.openstack.org site that points readers to the 2011.1 site and the docs.openstack.org site - similar to the swift.openstack.org site. I believe it helps people see more sites are available, plus they can get to the Bexar site if they want to. Going forward it'll be nice to use this talk bubble to point people to the trunk site from released sites * Correctly imports greenthread in libvirt_conn.py. It is used by live_migrate() * Forgot this in the rename of check_instance -> check_isinstance * Test the login behavior of the OpenStack API. Uncovered bug732866 * trunk merge * Renamed check_instance -> check_isinstance to make intent clearer * Fix some crypto strangeness (\n in file_name field of certificates, wrong IMPL method for certificate_update) * Added note agreeing with Brian Lamar that the namespace doesn't belong in wsgi * Fix to avoid db migration failure in virtualenv * Fixed up unit tests and direct api that was also calling _serialize (naughty!) * Fix the describe_vpns admin api call * pep8 and fixed up zone-list * Support setting the xmlns intelligently * get_all cleanup * Refactored out _safe_translate code * Set XML namespace when returning XML * Fix for LP Bug #704300 * Fix a typo in the ec2 admin api * typo fix * Pep8 fix * Merging trunk * make executable * Adding BASE_IMAGE_ATTRS to ImageService * intermediate progress on vnc-nova integration. checking in to show vish * add in eventlet version of vnc proxy * Updating doc strings in accordance with PEP 257. Fixing order of imports in common.py * one more copyright fix * pep8 stupidness * Tweak * fixing copyright * tweak * tweak * Whoops * Changed default for disabled on service_get_all to None. Changed calls to service_get_all so that the results should still be as they previously were * Now using urlparse to parse a url to grab id out of it * Resolved conflicts * Fix * Remove unused global semaphore * Addressed reviewer's comments * pep8 fix * Apparantly a more common problem than first thought * Adding more docstrings. image_id and instance_type fields of an instance will always exist, so no reason to check if keys exist * Pass a fake timing source to test_ensure_filtering_rules_for_instance_timeout, shaving off 30 seconds of test run time * pep8 * Merged trunk * Add a test for leaked semaphores * Remove checks in _cache_image tests that were too implementation specific * adding view builder tests * Add correct bug fixing metadata * When updating or creating set 'delete = 0'. (thus reactivating a deleted row) Filter by 'deleted' on delete * merging trunk r843 * making Controller._get_flavors is_detail a keyword argument * merging trunk r843 * Fix locking problem in security group refresh code * merging trunk r843 * Add unit test and code updates to ensure that a PUT requests to create/update server metadata only contain a single key * Add call to unset all stubs * IptablesManager.semaphore is no more * Get rid of IptablesManager's explicit semaphore * Add --fixes lp: metadata * Convert _cache_image to use utils.synchronized decorator. Disable its test case, since I think it is no longer needed with the tests for synchronized * Make synchronized decorator not leak semaphores, at the expense of not being truly thread safe (but safe enough for Eventlet style green threads) * merge trunk * Wrap update_ra in utils.synchronized * Make synchronized support both external (file based) locks as well as internal (semaphore based) locks. Attempt to make it native thread safe at the expense of never cleaning up semaphores * merge with trunk * vpn changes * added zone routing flag test * routing test coverage * routing test coverage * xenapi support for multi_nic. This is a phase of multi_nic which allows xenapi to work as is and with multi_nic. The other virt driver(s) need to be updated with the same support * better comments. First redirect test * better comments. First redirect test * Remove _get_vm_opaque_ref() calls in rescue/unrescue * Remove dupe'd code * Wrap update_dhcp in utils.synchronized * if fingerprint data not provided, added logic to calculate it using the pub key * get rid of another datetime alias * import greenthread in libvirt * merge lp:nova * make bcwaldon happy * fix licenses * added licenses * wrap and log errors getting image ids from local image store * merge lp:nova * merging trunk * Fix for LP Bug #739641 * pep8; various fixes * Provide more useful exception messages when unable to load the virtual driver * Added Gabe to Authors file. He helped code this up too * Added XenAPI rescue unit tests * added an enumerate to track device in vmops.create_vifs() * pep8 * Openstack api 1.0 flavors resource now implemented to match the spec * more robust extraction of arguments * Updated comment per the extension naming convention we actually use * Added copyright header * Fix pep8 issues in nova/api/openstack/extensions.py * Fix limit unit tests (reconciles w/ trunk changes) * Changed fixed_range (CIDR) to be required in the nova-manage command; changed default num_networks to 1 * merging trunk r837 * zones3 and trunk merge * Added space * trunk merge * remove scheduler.api.API. naming changes * Changed error to TypeError so that we get the arguments list * Added my name to Authors Added I18n for network create string * merge with trunk * merge trunk * merge trunk * merge trunk * Add bug metadata * Wrap update_dhcp in utils.synchronized * fixes nova-manage instance_type compatibility with postgres db * Tell PyLint not to complain about the "_" function * Make smoketests' exit code reveal whether they were succesful * pep8 * Added run_instances method to the connection.py of the contrib/boto_v6/ec2 which would return ReservationV6 object instead of Reservation in order to access attribute dns_name_v6 of an instance * cleanup another inconsistent use of 1 for True in nova-manage * Changed Copyright to NTT for newly added files for flatmanager ipv6 * merge trunk * * committing ovs scripts * fix nova-manage instance_type list for postgres compatibility * fixed migration instance_types migration to support postgres correctly * comment more descriptive * Seriously? * Fixed netadmin smoketests for ipv6 * Merged trunk * Better errors when virt driver isn't loaded * merge lp:nova * fix date formatting in images controller show * huh * fix ups * merge trunk * uses True/False instead of 1/0 for Postgres compatibility * cleaned up tests stubs that were accidentally checked in * works again. woo hoo * created api endpoint to allow uploading of public key * api decorator * Cleanup of FakeAuthManager * Replaced all pylint "disable-msg=" with "disable=" and "enable-msg=" with "enable=" * Change cloud.id_to_ec2_id to ec2utils.id_to_ec2_id. Fixes EC2 API error handling when invalid instances and volume names are specified * A few more single-letter variable names bite the dust * Re-implementation (or just implementation in many cases) of Limits in the OpenStack API. Limits is now available through /limits and the concept of a limit has been extended to include arbitrary regex / http verb combinations along with correct XML/JSON serialization. Tests included * Avoid single-letter variable names * auth_data is a list now (thanks Rick!) * merge with trunk * Mark instance metadata as deleted when we delete the instance * results * fixed up novaclient usage to include managers * Added test case * Minor fixes to replace occurances of "VI" by "VIM" in 2 comments * whoopsy2 * whoopsy * Fixed 'Undefined variable' errors generated by pylint (E0602) * Merged trunk * Change cloud.id_to_ec2_id to ec2utils.id_to_ec2_id. Fixes EC2 API error handling when invalid instances and volume names are specified * enable-msg -> enable * disable-msg -> disable * enable_zone_routing flag * PEP-8 * Make flag parsing work again * Using eventlets greenthreads for optimized image processing. Fixed minor issues and style related nits * Fixed issue arisen from recent feature update (utils.execute) * Make proxy.sh work with both openbsd and traditional variants of netcat * Query the size of the block device, not the size of the filesystem * merge trunk * Ensuring kernel/ramdisk files are always removed in case of failures * merge trunk * merge trunk * Implement metadata resource for Openstack API v1.1. Includes: -GET /servers/id/meta -POST /servers/id/meta -GET /servers/id/meta/key -PUT /servers/id/meta/key -DELETE /servers/id/meta/key * Make "ApiError" the default error code for ApiError instances, rather than "Unknown." * When changing the project manager, if the new manager is not yet a project member, be sure to make them be a project member * Make the rpc cast/call debug calls show what topic they are sending to. This aides in debuugging * Final touches and bug/pep8 fixes * Support for markers for pagination as defined in the 1.1 spec * Merged trunk * Become compatible with ironcamel and bcwaldon's implementations for standardness * pep8 * Merged dependant branch lp:~rackspace-titan/nova/openstack-api-versioned-controllers * Updated naming, removed some prints, and removed some invalid tests * adding servers container to openstack api v1.1 servers entities * decorator more generic now * Images now v1.1 supported...mostly * fixed up bzr mess * Fix for LP Bug #737240 * refactored out middleware, now it's a decorator on service.api * Fix for LP Bug #737240 * Add topic name to cast/call logs * Changing project manager should make sure that user is a project member * Invert some of the original logic and fix a typo * Make the smoketests pep8 compliant (they weren't when I started working on them..) * Update the Openstack API to handle case where personality is set but null in the request to create a server * Fix a couple of things that assume that libvirt == kvm/qemu * Made fixed_range a required parameter for nova-manage network create. Changed default num_networks to 1; 1000 seems large * Fix a number of place in the volume driver where the argv hadn't been fully split * fix for lp712982, and likely a variety of other dashboard error handling issues. This fix simply causes the default error code for ApiError to be 'ApiError' rather than 'Unknown', which makes dashboard handle the error gracefully, and makes euca error output slightly prettier * Fix mis-merge * pep8 is hard * syntax error * create vifs before inject network info to remove rxtx_cap from network info (don't need to inject it) * Make utils.execute not overwrite std{in,out,err} args to Popen on retries. Make utils.execute reject unknown kwargs * merged trunk, merged qos, slight refactor regarding merges * - general approach for openstack api versioning - openstack api version now preserved in request context - added view builder classes to handle os api responses - added imageRef and flavorRef to os api v1.1 servers - modified addresses container structure in os api v1.1 servers * Pep8 * Test changes * pep8 * Adjust test cases * pep8 * merge * Mark instance metadata as deleted when we delete the instance * Backfix of bugfix of issue blocking creating servers with metadata * Better comment for fault. Improved readability of two small sections * Add support for network QoS (ratelimiting) for XenServer. Rate is pulled from the flavor (instance_type) when constructing a vm * pep8 * I suck at merging * Now returns a 400 for a create server request with invalid hrefs for imageRef/flavorRef values. Also added tests * moving Versions app out of __init__.py into its own module; adding openstack versions tests; adding links to version entities * fixed code formatting nit * handle create and update requests, and update the base image service documentation to reflect the (defacto) behavior * Move the check for None personalities into the create method * Get the migration out * get api openstack test_images working * merge trunk * Improved exception handling * better implementation of try..except..else * merging parent branch lp:~bcwaldon/nova/osapi-flavors-1_1 * merging parent branch lp:~rackspace-titan/nova/openstack-api-version-split * iptables filter firewall changes merged * merged trunk * pep8 * adding serialization_metadata to encode links on flavors * merge with libvirt_multinic_nova * pep8 * teach glance image server get to handle timestamps * merge trunk * merge trunk * fixes for NWFilterFirewall and net injection * moving code out of try/except that would never trigger NotFound * handle timestamps in glance service detail * fixed IpTablesFirewal * Fixes lp736343 - Incorrect mapping of instance type id to flavor id in Openstack API * Comparisons to None should not use == or != * Pep8 error, oddly specific to pep8 v0.5 < x > v0.6 * Remove unconditional raise, probably left over from debugging * Mapping the resize status * Mapping the resize status * Fixed pep8 violation * adding comments; removing returns from build_extra; removing unnecessary backslash * refactor to simpler implementation * Foo * glance image service show testcases * oh come on * refactoring * Add tests and code to handle multiple ResponseExtension objects * Just use 'if foo' instead of 'if len(foo)'. It will fail as spectacularly if its not acting on a sequence anyways * bugfix * Remove unconditional raise, probably left over from debugging * No need to modify this test case function as well * refactored: network_info creation extracted to method * Call _create_personality_request_dict within the personalities_null test * Foo * more pep8 fixes * Switch back to 'is not None' for personality_files check. (makes mark happy) * pep8 fixes * 1) Update few comments where whitespace is missing after '#' 2) Update document so that copy right notice doesn't appear in generated document 3) Now using self.flag(...) instead of setting the flags like FLAGS.vmwareapi_username by direct assignment. 4) Added the missing double quote at the end a string in vim_util.py * more pep8 fixes * Fix up tests * Replaced capability flags with List * Fix more pep8 errors * Remove me from mailmap * Fix up setup container * Merged trunk * Update the Openstack API to handle case where personality is set but null in the request to create a server * Make smoketests' exit code reveal whether they were succesful * merge with trunk. moved scheduler_manager into manager. fixed tests * Set nbd to false when mounting the image * Fixed typo when I was trying to add test cases for lxc * Remove target_partition for setup_container but still hardcode because its needed when you inject the keys into the image * Remove nbd=FLAGS.use_cow_images for destroy container * Update mailmap * Fix a number of place in the volume driver where the argv hadn't been fully split * Fix pep8 errors * Update authors again * Improved exception handling: - catching appropriate errors (OSError, IOError, XenAPI.Failure) - reduced size of try blocks - moved exception handling code in separate method - verifing for appropriate exeception type in unit tests * get_console_output is not supported by lxc and libvirt * Update Authors and testsuite * Comparisons to None should not use == or != * Make error message match the check * Setting the api verion in the request in the auth middle is no longer needed. Also, common.get_api_version is no longer needed. As Eric Day noted, having versioned controllers will make that unnecessary * moving code out of try/except that would never trigger NotFound * Added mechanism for versioned controllers for openstack api versions 1.0/1.1. Create servers in the 1.1 api now supports imageRef/flavorRef instead of imageId/flavorId * fix up copyright * removed dead method * pep8 * pep8 * Remerge trunk * cleanup * added in network qos support for xenserver. Pull qos settings from flavor, use when creating instance * moved scheduler API check into db.api decorator * Add basic tests for lxc containers * Revert testsuite changes * MErge trunk * Fix a few of the more obvious non-errors while we're in here * hacks in place * Fix the errors that pylint was reporting on this file * foo * foo * commit before monster * Fix __init__ method on unit tests (they take a method_name kwarg) * Don't warn about C0111 (No docstrings) * In order to disable the messages, we have to use disable, not disable-msg * Avoid mixins on image tests, keeping pylint much happier * Use _ trick to hide base test class, thereby avoiding mixins and helping PyLint * hurr * hurr * get started testing * foo * Don't complain about the _ function being used * Again * pep8 * converted new lines from CRLF to LF * adding bookmarks links to 1.1 flavor entities * Reverting * Log the use of utils.synchronized * expanding osapi flavors tests; rewriting flavors resource with view builders; adding 1.1 specific links to flavors resources * Dumb * Unit test update * Fix lp727225 by adding support for personality files to the openstack api * Changes * fixes bug 735298: start of nova-compute not possible because of wrong xml paths to the //host/cpu section in "virsh capabilities", used in nova/virt/libvirt_conn.py * update image service documentation * merge lp:nova and resolve conflicts * User ids are strings, and are not necessarily == name. Also fix so that non-existent user gives a 404, not a 500 * Fudge * Keypairs are not required in the OpenStack API; don't require them! * Merging trunk * Add missing fallback chain for ipv6 * Typo fix * fixed pep8 issue * chchchchchanges * libvirt template and libvirt_conn.spawn modified in way that was proposed for xenapi multinic support * Re-commit r805 * Re-commit r804 * Refactored ZoneRedirect into ZoneChildHelper so ZoneManager can use this too * Don't generate insecure passwords where it's easy to use urandom instead * merging openstack-api-version-split * chchchchchanges * chchchchchanges * Fixes euca-get-ajax-console returning Unknown Error, by using the correct exception in get_open_port() logic. Patch from Tushar Patil * chchchchchanges * Revert commit that modified CA/openssl.cnf.tmpl * Comment update * Derped again * Move mapper code into the _action_ext_controllers and _response_ext_controllers methods * The geebees * forgot to return network info - teehee * refactored, bugfixes * merge trunk * moving code out of try/except that would never trigger NotFound * merge trunk * Logging statements * added new class Instances for managaging instances added new method list in class Instances: * tweak * Stuff * Removing io_util.py. We now use eventlets library instead * Some typos * * Updated document vmware_readme.rst to mention VLAN networking * Corrected docstrings as per pep0257 recommentations. * Stream-lined the comments. * Updated code with locals() where ever applicable. * VIM : It stands for VMware Virtual Infrastructure Methodology. We have used the terminology from VMware. we have added a question in FAQ inside vmware_readme.rst in doc/source * New fake db: vmwareapi fake module uses a different set of fields and hence the structures required are different. Ex: bridge : 'xenbr0' does not hold good for VMware environment and bridge : 'vmnic0' is used instead. Also return values varies, hence went for implementing separate fake db. * Now using eventlet library instead and removed io_utils.py from branch. * Now using glance.client.Client instead of homegrown code to talk to Glance server to handle images. * Corrected all mis-spelled function names and corresponding calls. Yeah, an auto-complete side-effect! * Implement top level extensions * Added i18n to error message * Checks locally before routing * Really fix testcase * More execvp fallout * Fix up testsuite for lxc * Error codes handled properly now * merge trunk * Adding unit test * Fix instance creation fail under use_ipv6=false and FlatManager * pep8 clean * Fix a couple of things that assume that libvirt == kvm/qemu * Updating gateway_v6 in _on_set_network_host() is not required for FlatManager * added correct path to cpu information (tested on a system with 1 installed cpu package) * Fix unknown exception error in euca-get-ajax-console * fixed pep8 errors (with version 0.5.0) * Use integer ids for (fake) users * req envirom param 'nova.api.openstack.version' should be 'api.version' * pep8 fixes * Fixed DescribeUser in ec2 admin client * openstack api 1.0 flavors resource now implemented; adding flavors request value testing * response working * Added tests back for RateLimitingMiddleware which now throw correctly serialized errors with correct error codes * Add ResponseExtensions * revised per code review * first pass openstack redirect working * Adding newlines for pep8 * Removed VIM specific stuff and changed copyright from 2010 to 2011 * Limits controller and testing with XML and JSON serialization * adding imageRef and flavorRef attributes to servers serialization metadata * Merged with trunk (and brian's previous fixes to fake auth) * Plugin * As suggested by Eric Day: * changed request.environ version key to more descriptive 'api.version' * removed python3 string formatting * added licenses to headers on new files * Tweak * A few fixes * pep8 * merge lp:nova * ignore differently-named nodes in personality and metadata parsing * wrap errors getting image ids from local image store * Moving the migration again * Updating paste config * pep8 * internationalization * Per Eric Day's suggest, the verson is not store in the request environ instead of the nova.context * s/onset_files/injected_files/g * pep8 fixes * Add logging to lock check * Now that the fix for 732866, stop working around the bug * Major cosmetic changes to limits, but little-to-no functional changes. MUCH better testability now, no more relying on system time to tick by for limit testing * Merged with trunk to get fix for bug 732866 * Merged trunk * modifying paste config to support v1.1; adding v1.1 entry in versions resource ( GET /) * Fixed lp732866 by catching relevant `exception.NotFound` exception. Tests did not uncover this vulnerability due to "incorrect" FakeAuthManager. I say "incorrect" because potentially different implementations (LDAP or Database driven) of AuthManager might return different errors from `get_user_from_access_key` * refactor onset_files quota checking * Code clean up. Removing _decorate_response methods. Replaced them with more explicit methods, _build_image, and _build_flavor * Use random.SystemRandom for easy secure randoms, configurable symbol set by default including mixed-case * merge lp:nova * Support testing the OpenStack API without key_pairs * merge trunk * Fixed bugs in bug fix (plugin call) * adding missing view modules; modifying a couple of servers tests to use enumerate * just fixing a small typo in nova-manage vm live-migration * exception fixup * Make Authors check account for tests being run with different os.getcwd() depending on how they're run. Add missing people to Authors * Removed duplicated tests * PEP8 0.5.0 cleanup * Really delete the loop * Add comments about the destroy container function * Mount the right device * Merged trunk * Always put the ipv6 fallback in place. FLAGS.use_ipv6 does not exist yet when the firewall driver is instantiated and the iptables manager takes care not to fiddle with ipv6 if not enabled * merged with trunk and removed conflicts * Merging trunk * Reapplied rename to another file * serverId returned as int per spec * Reapplied rename of Openstack -> OpenStack. Easier to do it by hand than to ask Bazaar to do it * Merged with trunk. Had to hold bazaar's hand as it got lost again * Derive unit test from standard nova.test.TestCase * pep8 fixes * adding flavors and images barebones view code; adding flavorRef and imageRef to v1.1 servers * Fixed problem with metadata creation (backported fix) * Clarify the logic in using 32 symbols * moving addresses views to new module; removing 'Data' from 'DataViewBuilder' * Don't generate insecure passwords where it's easy to use urandom instead * Added a views package and a views.servers module. For representing the response object before it is serialized * Make key_pair optional with OpenStack API * Moved extended resource code into the extensions.py module * Moving fixtures to a factory * Refactor setup contianer/destroy container * Fixing API per spec, to get unit-tests to pass * Implements basic OpenStack API client, ready to support API tests * Fix capitalization of ApiError (it was mistakenly called APIError) * added migration to repo * Clarified message when a VM is not running but still in DB * Implemented Hyper-V list_instances_detail function. Needs a cleanup by someone that knows the Hyper-V code * So the first of those tests doesn't pass. Removing as it looks like it was meant to be deleted * Added test and fixed up code so that it works * Fix for LP Bug #704300 * fixed keyword arg error * pep8 * added structure to virt.xenapi.vmops to support network info being passed in * Removed duplicated test, renamed same-named (but non-identical) tests * merge trunk * PEP8 cleanup * Fixes other half of LP#733609 * Initial implementation of refresh instance states * Add missing fallback chain for ipv6 * The exception is called "ApiError", not "APIError" * Implement action extensions * Include cpuinfo.xml.template in tarball * Adding instance_id as Glance image_property * Add fixes metadata * Include cpuinfo.xml.template in tarball * Merged test_network.py properly. Before I had deleted this file and added again, but this file status should be modified when you see the merged difference * removed conflicts and merged with trunk * Create v1_0 and v1_1 packages for the openstack api. Added a servers module to each. Added tests to validate the structure of ip addresses for a 1.1 request * committing to share * small typo in nova-manage vm live-migration * NTT's live-migration branch, merged with trunk, conflicts resolved, and migrate file renamed * Reverted unmodified files * Reverted unmodified files * Only include kernel and ramdisk ID in meta-data output if they are actually set * Test fixes and some typos * Test changes * Migration moved again * Compute test * merge trunk * merge trunk * Make nova-dhcpbridge output lease information in dnsmasq's leasesfile format * Merged my doc changes with trunk * Fixed pep8 errors * Fixed failing tests in test_xenapi * Fixes link to 2011.1 instad of just to trunk docs * fixes: 733137 * Add a unit test * Make utils.execute not overwrite std{in,out,err} args to Popen on retries. Make utils.execute reject unknown kwargs * Removed excess LOG.debug line * merge trunk * The extension name is constructed from the camel cased module_name + 'Extension' * Merged with trunk * Fix instructions for setting up the initial database * Fix instructions for setting up the initial database * merged with latest trunk and removed unwanted files * Removed _translate_keys() functions since it is no longer used. Moved private top level functions to bottom of module * Use a consistent naming scheme for XenAPI variables * oops * Review feedback * Review feedback * Review feedback * Some unit tests * Change capitalization of Openstack to OpenStack * fixed conflicts after merging with trunk with 787 * Adding a sidebar element to the nova.openstack.org site to point people to additional versions of the site * oops * Review feedback * Replace raw SQL calls through session.execute() with SQLAlchemy code * Review feedback * Remove vish comment * Remove race condition when refreshing security groups and destroying instances at the same time * Removed EOL whitespace in accordance with PEP-8 * Beginning of cleanup of FakeAuthManager * Make the fallback value None instead of False * Indentation adjustment (cosmetical) * Fixed lp732866 by catching relevant `exception.NotFound` exception. Tests did not uncover this vulnerability due to "incorrect" FakeAuthManager. I say "incorrect" because potentially different implementations (LDAP or Database driven) of AuthManager might return different errors from `get_user_from_access_key` * Merged trunk * This change adds the ability to boot Windows and Linux instances in XenServer using different sets of vm-params * merge trunk * New migration * Passes net variable as value of keyword argument process_input. Prior to the execvp patch, this was passed positionally * Changes the output of status in describe_volumes from showing the user as the owner of the volume to showing the project as the owner * Added support for ips resource: /servers/1/ips Refactored implmentation of how the servers response model is generated * merge trunk * Adds in multi-tenant support to openstack api. Allows for multiple accounts (projects) with admin api for creating accounts & users * merge trunk * remerge trunk (again). fix issues caused by changes to deserialization calls on controllers * Add config for osapi_extensions_path. Update the ExtensionManager so that it loads extensions in the osapi_extensions_path * process_input for tee. fixes: 733439 * Minor stylistic updates affecting indentation * Make linux_net ensure_bridge commands that add and remove ip addr's from devices/bridges work with with the latest utils.execute method (execvp) * Added volume api from previous megapatch * Made changes to xs-ipv6 code impacted because of addition of flatmanger ipv6 support * Need to set version to '1.0' in the nova.context in test code for tests to be happy * merge from trunk.. * Discovered literal_column(), which does exactly what I need * Merged trunk * Further vmops cleanup * cast execute commands to str * Remove broken test. At least this way, it'll actually fix the problem and be mergable * * Updated the readme file with description about VLAN Manager support & guest console support. Also added the configuration instructions for the features. * Added assumptions section to the readme file * * Modified raise statements to raise nova defined Exceptions. * Fixed Console errors and in network utils using HostSystem instead of Datacenter to fetch network list * Added support for vmwareapi module in nova/virt/connection.py so that vmware hypervisor is supported by nova * Removing self.loop to achieve synchronization * merge trunk * Moved vlan_interface flag in network.manager removed needless carriage return in vm_ops * Use self.instances.pop in unfilter_instance to make the check/removal atomic * Make Authors check account for tests being run with different os.getcwd() depending on how they're run. Add missing people to Authors * Make linux_net ensure_bridge commands that add and remove ip addr's from devices/bridges work with with the latest utils.execute method (execvp) * _translate_keys now needs one more argument, the request object * Added version attribute to RequestContext class. Set the version in the nova.context object at the middleware level. Prototyped how we can serialize ip addresses based on the version * execvp: fix params * merge lp:nova * switch to a more consistent usage of onset_files variable names * re-added a test change I removed thinking it was related to removed code. It wasn't :> * merge trunk * Document known bug numbers by the code which is degraded until the bugs are fixed * fix minor typo * Fix a fer nits jaypipes found in review * Pep8 / Style * Re-removed the code that was deleted upstream but somehow didn't get merged in. Bizarre! * More resize * Merged with upstream * pep8 fun * Test login. Uncovered bug732866 * Merged with upstream * Better logging, be more careful about when we throw login errors re bug732866 * Don't wrap keys and volumes till they're in the API * Add a new IptablesManager that takes care of all uses of iptables * Last un-magiced session.execute() replaced with SQLAlchemy code.. * PEP8 * Add basic test case * Implements basic OpenStack API client, ready to support API tests * Initial support fo extension resources. Tests * Partial revert of one conversion due to phantom magic exception from SQLAlchemy in unrelated code; convert all deletes * merge lp:nova * add docstring * fixed formatting and redundant imports * Cleaned up vmops * merge trunk * initializing instance power state on launch to 0 (fixes EC2 API bug) * Correct a misspelling * merge lp:nova * merge trunk * Use a FLAGS.default_os_type if available * Another little bit of fallout from the execvp branch * Updated the code to detect the exception by fault type. SOAP faults are embedded in the SOAP response as a property. Certain faults are sent as a part of the SOAP body as property of missingSet. E.g. NotAuthenticated fault. So we examine the response object for missingSet and try to check the property for fault type * Another little detail. * Fix a few things that were either missed in the execvp conversion or stuff that was merged after it, but wasn't updated accordingly * Introduces the ZoneManager to the Scheduler which polls the child zones and caches their availability and capabilities * One more thing. * merge trunk * Only include ramdisk and kernel id if they are actually set * Add bugfix metadata * More execvp fallout * Make nova.image.s3 catch up with the new execute syntax * Pass argv of dnsmasq and radvd to execute as individual args, not as a list * Split dnsmasq and radvd commands into their respective argv's * s/s.getuid()/os.getuid()/ * merge lp:nova and add stub image service to quota tests as needed * merged to trunk rev781 * fix pep8 check * merge lp:nova * Modifies S3ImageService to wrap LocalImageService or GlanceImageService. It now pulls the parts out of s3, decrypts them locally, and sends them to the underlying service. It includes various fixes for image/glance.py, image/local.py and the tests * add tests to verify the serialization of adminPass in server creation response * Fixes nova.sh to run properly the first time. We have to get the zip file after nova-api is running * minor fixes from review * merged trunk * fixed based on reviewer's comment * merge lp:nova * Moved umount container to disk.py and try to remove loopback when destroying the container * Merged trunk * Replace session.execute() calls performing raw UPDATE statements with SQLAlchemy code, with the exception of fixed_ip_disassociate_all_by_timeout() * Fixes a race condition where multiple greenthreads were attempting to resize a file at the same time. Adds tests to verify that the image caching call will run concurrently for different files, but will block other greenthreads trying to cache the same file * maybe a int instead ? * merge lp:nova * merge, resolve conflicts, and update to reflect new standard deserialization function signature * Fixes doc build after execvp patch * execvp: fix docs * initializing instance power state on launch to 0 (fixes EC2 API bug) * - Content-Type and Accept headers handled properly - Content-Type added to responses - Query extensions no long cause computeFaults - adding wsgi.Request object - removing request-specific code from wsgi.Serializer * Fixes bug 726359. Passes unit tests * merge lp:nova, fix conflicts, fix tests * fix the copyright notice in migration * execvp: cleanup * remove the semaphore when there is no one waiting on it * merge lp:nova and resolve conflicts * Hi guys * Update the create server call in the Openstack API so that it generates an 'adminPass' and calls set_admin_password in the compute API. This gets us closer to parity with the Cloud Servers v1.0 spec * Added naming scheme comment * Merged trunk * execvp passes pep8 * merge trunk * Add a decorator that lets you synchronise actions across multiple binaries. Like, say, ensuring that only one worker manipulates iptables at a time * renaming wsgi.Request.best_match to best_match_content_type; correcting calls to that function in code from trunk * merge lp:nova * Fixes bug #729400. Invalid values for offset and limit params in http requests now return a 400 response with a useful message in the body. Also added and updated tests * Add password parameter to the set_admin_password call in the compute api. Updated servers password to use this parameter * stuff * rearrange functions and add docstrings * Fixes uses of process_input * update authors file * merged trunk r771 * merge lp:nova * remove unneeded stubs * move my tests into their own testcase * replaced ConnectionFailed with Exception in tools/euca-get-ajax-console was not working for me with euca2tools 1.2 (version 2007-10-10, release 31337) * Fixed pep8 issues * remerge trunk * removed uneeded **kw args leftover from removed account-in-url changes * fixed lp715427 * fixed lp715427 * Fix spacing * merge lp:nova and resolve conflicts * remove superfluous trailing blank line * add override to handle xml deserialization for server instance creation * Added 'adminPass' to the serialization_metadata * merge trunk * Merged with trunk Updated exception handling according to spawn refactoring * Fixed pep8 violation in glance plugin * Added unit tests for ensuring VDI are cleaned up upon spawn failures * Stop assuming anything about the order in which the two processes are scheduled * make static method for testing without initializing libvirt * tests and semaphore fix for image caching * execvp: unit tests pass * merged to trunk rev 769 * execvp: almost passes tests * Refactoring nova-api to be a service, so that we can reuse it in unit tests * Added documentation about needed flags * a few fixes for the tests * Renamed FLAG.paste_config -> FLAG.api_paste_config * Sorted imports correctly * merge trunk * Fixes lp730960 - mangled instance creation in virt drivers due to improper merge conflict resolution * Use disk_format and container_format in place of image type * using get_uuid in place of get_record in _get_vm_opaqueref changed SessionBase._getter in fake xenapi in order to return HANDLE_INVALID failure when reference is not in DB (was NotImplementedException) * Merging trunk * Fixing tests * Pep8 fixes * Accidentally left some bad data around * Fix the bug where fakerabbit is doing a sort of prefix matching on the AMQP routing key * merge trunk * Use disk_format and container_format instead of image type * merged trunk * update manpage * update code to work with new container and disk formats from glance * modify nova manage doc * Nits * abstracted network code in the base class for flat and vlan * Remerged trunk. fixed conflict * Removes VDIs from XenServer backend if spawn process fails before vm rec is created * Added ability to remove networks on nova-manage command * Remove addition of account to service url * refactored up nova/virt/xenapi/vmops _get_vm_opaque_ref() no longer inspects the param to check to see if it is an opaque ref works better for unittests * This fix is an updated version of Todd's lp720157. Adds SignatureVersion checking for Amazon EC2 API requests, and resolves bug #720157 * * pep8 cleanups in migrations * a few bugfixes * Removed stale references to XenAPI * Moved guest_tool.py from etc/esx directory to tools/esx directory * Removed excess comment lines * Fix todo comment * execvp * Merged trunk * virt.xenapi.vmops._get_vm_opaque_ref changed vm to vm_ref and ref to obj * virt.xenapi.vmops._get_vm_opaque_ref assumes VM.get_record raises * add a delay before grabbing zipfile * Some more refactoring and a tighter unit test * Moved FLAGS.paste_config to its re-usable location * Merged with trunk and fixed conflict. Sigh * Converted tabs to spaces in bin/nova-api * A few more changes * Inhibit inclusion of stack traces in the logs UNLESS --verbose has been specified. This should help keep the logs compact, helping admins find the messages they're interested in (e.g., "Can't connect to MySQL server on '127.0.0.1' (111)") without having to sort through the stack traces, while still allowing developers to see those traces at will * Addresses bugs 704985 and 705453 by: * And unit tests * A few formatting niceties * First part of the bug fix * virt.xenapi.vmops._get_vm_opaque_ref checks for basestring instance instead of str * virt.xenapi.vmops._get_vm_opaque_ref exception caught properly * cleaned up virt.xenapi.vmops._get_vm_opaque_ref. more reliable approach to checking if param is an opaque ref. code is cleaner * deleted network_is_associated from nova.db api * move the images_dir out of the way when converting * pep8 * rework register commands based on review * added network_get_by_cidr method to nova.db api * Use IptablesManager.semapahore from securitygroups driver to ensure we don't apply half a rule set * Log failed command execution if there are more retry attempts left * Make iptables rules class __ne__ just be inverted __eq__ * Invalid values for offset and limit params in http requests now return a 400 response with a useful message in the body. Also added and updated tests * Create --paste_config flag defaulting to api-paste.ini and mv etc/nova-api.conf to match * Implementation for XenServer migrations. There are several places for optimization but I based the current implementation on the chance scheduler just to be safe. Beyond that, a few features are missing, such as ensuring the IP address is transferred along with the migrated instance. This will be added in a subsequent patch. Finally, everything is implemented through the Openstack API resize hooks, but actual resizing of the instance RAM and hard drive space is not yet implemented * Generate 'adminPass' and call set_password when creating servers * Merged with current trunk * merge trunk * Resolving excess conflicts due to criss-cross in branch history * Make "dhcpbridge init" output correctly formatted leases information * Rebased to nova revision 761 * Fixed some more pep8 errors * * Updated readme file with installation of suds-0.4 through easy_install. * Removed pass functions * Fixed pep8 errors * Few bug fixes and other commits * zipfile needs to be extracted after nova is running * make compute get the new images properly, fix a bunch of tests, and provide conversion commands * avoid possible string/int comparison problems * merge lp:nova * select cleanups * Merged to trunk rev 760, and fixed comment line indent according to Jay's comment * Fix renaming of instance fields using update_instance api method * apirequest -> apireq * * os_type is no longer `not null` * respond well if personality attribute is incomplete * Added initial support to delete networks nova-manage * move the id wrapping into cloud layer instead of image_service * added flatmanager unit testcases and renamed test_network.py to test_vlan_network.py * remove xml testing infrastructure since it is not feasible to use at present * refactor server tests to support xml and json separately * More unit tests and rabbit hooks * Fix renaming of instance fields using update_instance method * Fix api logging to show proper path and controller:action * merged trunk * * Tests to verify correct vm-params for Windows and Linux instances * More fixes * delete unnecessary DECLARE * Fixed based on reviewer's comment. Main changes are below. 1. get_vcpu_total()/get_memory_mb()/get_memory_mb_used() is changed for users who used non-linux environment. 2. test code added to test_virt * merge lp:nova * merge trunk * fixed wrong local variable name in vmops * Use %s for instance-delete logging in case instance_id comes through as a string * remove ensure_b64_encoding * add the ec2utils file i forgot * spawn a greenthread for image registration because it is slow * fix a couple issues with local, update the glance fake to actually return the same types as the real client, fix the image tests * make local image service work * use LocalImageServiceByDefault * Replace objectstore images with S3 image service backending to glance or local * Merged to trunk rev 759 * Merged trunk rev 758 * remove ra_server from model and fix migration issue while running unit tests * Removed properties added to fixed_ips by xs-ipv6 BP * altered ra_server name to gateway_v6 * merge lp:nova * rename onset_files to personality_files all the way down to compute manager * Changing output of status from showing the user as the owner, to showing the project * enforce personality quotas * localize a few error messages * Refactor wsgi.Serializer away from handling Requests directly; now require Content-Type in all requests; fix tests according to new code * pep8 * Renaming my migration yet again * Merged with Trunk * Use %s in case instance_id came through as a string * Basic notifications drivers and tests * adding wsgi.Controller and wsgi.Request testing; fixing format keyword argument exception * This fix changes a tag contained in the DescribeKeyPairs response from to so that Amazon EC2 access libraries which does more strict syntax checking can work with Nova * some comments are modified * Merged to trunk rev 757. Main changes are below. 1. Rename db table ComputeService -> ComputeNode 2. nova-manage option instance_type is reserved and we cannot use option instance, so change instance -> vm * adding wsgi.Request class to add custom best_match; adding new class to wsgify decorators; replacing all references to webob.Request in non-test code to wsgi.Request * Remerged trunk, fixed a few conflicts * Add in multi-tenant support in openstack api * Merged to trunk rev 758 * Fix regression in the way libvirt_conn gets its instance_types * Updated DescribeKeyPairs response tag checked in nova/tests/test_cloud.py * merged to trunk rev757 * Fixed based on reviewer's comments. Main changes are below. 1. Rename nova.compute.manager.ComputeManager.mktmpfile for better naming. 2. Several tests code in tests/test_virt.py are removed. Because it only works in libvirt environment. Only db-related testcode remains * Fix regression in the way libvirt_conn gets its instance_types * more rigorous testing and error handling for os api personality * Updated Authors and .mailmap * Merged to rev 757 * merges dynamic instance types blueprint (http://wiki.openstack.org/ConfigureInstanceTypesDynamically) and bundles blueprint (https://blueprints.launchpad.net/nova/+spec/flavors) * moved migration to 008 (sigh) * merged trunk * catching bare except: * added logging to instance_types for DB errors per code review * Very simple change checking for < 0 values in "limit" and "offset" GET parameters. If either are negative, raise a HTTPBadRequest exception. Relevant tests included * requested style change * Fixes Bug #715424: nova-manage : create network crashes when subnet range provided is not enough , if the network range cannot fit the parameters passed, a ValueError is raised * adding new source docs * corrected error message * changed _context * pep8 * added in req.environ for context * pep8 * fixed _context typo * coding style change per devcamcar review * fixed coding style per devcamcar review notes * removed create and delete method (and corresponding tests) from flavors.py * Provide the ability to rescue and unrescue a XenServer instance * Enable IPv6 injection for XenServer instances. Added addressV6, netmaskV6 and gatewayV6 columns to the fixed_ips table via migration #007 as per NTT FlatManager IPv6 spec * Updated docstrings * add support for quotas on file injection * Added IPv6 migrations * merge fixes * Inject IPv6 data into XenStore for instance * Change DescribeKeyPairs response tag from keypairsSet to keySet, and fix lp720133 * Port Todd's lp720157 fix to the current trunk, rev 752 * Changed _get_vm_opaqueref removing test-specific code paths * Removed excess TODO comments and debug line * initial commit of vnc support * merged trunk * Changed ra_server to gateway_v6 and removed addressv6 column from fixed_ips db table * * Added first cut of migration for os_type on instances table * Track os_type when taking snapshots * merging trunk * * Added ability to launch XenServer instances with per-os vm-params * test osapi server create with multiple personalities * ensure personality contents are b64 encoded * Merged trunk * Fixed pep8 issues, applied jaypipes suggestion * Rebased to nova revision 752 * Use functools.wraps to make sure wrapped method's metadata (docstring and name) doesn't get mangled * merge from trunk * Fake database module for vmware vi api. Includes false injection layer at the level of API calls. This module is base for unit tests for vmwareapi module. The unit tests runs regardless of presence of ESX/ESXi server as computer provider in OpenStack * Review feedback * Updated the code to include support for guest consoles, VLAN networking for guest machines on ESX/ESXi servers as compute providers in OpenStack. Removed dependency on ZSI and now using suds-0.4 to generate the required stubs for VMware Virtual Infrastructure API on the fly for calls by vmwareapi module * Added support for guest console access for VMs running on ESX/ESXi servers as computer providers in OpenStack * Support for guest consoles for VMs running on VMware ESX/ESXi servers. Uses vmrc to provide the console access to guests * Minor modification to document. Removed excess flags * Moved the guest tools script that does IP injection inside VM on ESX server to etc/esx directory from etc/ directory * support adding a single personality in the osapi * corrected copyrights for new files * Updated with flags for nova-compute, nova-network and nova-console. Added the flags, --vlan_interface= --network_driver=nova.network.vmwareapi_net [Optional, only for VLAN Networking] --flat_network_bridge= [Optional, only for Flat Networking] --console_manager=nova.console.vmrc_manager.ConsoleVMRCManager --console_driver=nova.console.vmrc.VMRCSessionConsole [Optional for OTP (One time Passwords) as against host credentials] --vmwareapi_wsdl_loc=/vimService.wsdl> * Fixed trunk merge issues * Merged trunk * At previous commit, I forget to erase conflict - fixed it * merged to trunk rev 752 * Rebased at lp:nova 759 * test_compute is changed b/c lack of import instance_types * rename db migration script * 1. merged trunk rev749 2. rpc.call returns '/' as '\/', so nova.compute.manager.mktmpfile, nova.compute.manager.confirm.tmpfile, nova.scheduler.driver.Scheduler.mounted_on_same_shared_storage are modified followed by this changes. 3. nova.tests.test_virt.py is modified so that other teams modification is easily detected since other team is using nova.db.sqlalchemy.models.ComputeService * updated docs * updated docs * Fixed xenapi tests Gave up on clever things with map stored as string in xenstore. Used ast.liteeral_eval instead * This branch implements the openstack-api-hostid blueprint: "Openstack API support for hostId" * refactored adminclient * No reason to initialize metadata twice * Units tests fixed partially. Still need to address checking data injected into xenstore need to convert string into dict or similar. Also todo PEP8 fixes * replaced ugly INSTANCE_TYPE constant with (slightly less ugly) stubs * add test for instance creation without personalities * fixed pep8 * Add a lock_path flag for lock files * refactored nova-manage list (-all, ) and fixed docs * moved nova-manage flavors docs * Edited `nova.api.openstack.common:limited` method to raise an HTTPBadRequest exception if a negative limit or offset is given. I'm not confident that this is the correct approach, because I guess this method could be called out of an API/WSGI context, but the method *is* located in the OpenStack API module and is currently only used in WSGI-capable methods, so we should be safe * merge trunk * moving nova-manage integration tests to smoke tests * Wrapped the instance_types comparison with an int and added a test case for it. Removed the inadvertently added newline * Rename migration to coincide with latest trunk changes * Adds VHD build support for XenServer driver * Suppress stack traces unless --verbose is specified * Removed extraneous newline * Merging trunk to my branch. Fixed a conflict in servers.py * Fixed obvious errors with flags. Note: tests still fail * Merging trunk * Fixed default value for xenapi_agent_path flag * 1) merge trunk 2) removed preconfigure_xenstore 3) added jkey for broadcast address in inject_network_info 4) added 2 flags: 4.1) xenapi_inject_image (default True) This flag allows for turning off data injection by mounting the image in the VDI (agreed with Trey Morris) 4.2) xenapi_agent_path (default /usr/bin/xe-update-networking) This flag specifies the path where the agent should be located. It makes sense only if the above flag is True. If the agent is found, data injection is not performed * Wrap IptablesManager.apply() calls in utils.synchronized to avoid having different workers step on each other's toes * merge trunk * Add utils.synchronized decorator to allow for synchronising method entrance across multiple workers on the same host * execvp * execvp * execvp * execute: shell=True removed * Add lxc to the libvirt tests * Clean up the mount points when it shutsdown * Add ability to mount containers * Add lxc libvirt driver * Rebased to Nova revision 749 * added listing of instances running on a specific host * fixed FIXME * beautification.. * introduced new flag "max_nbd_devices" to set the number of possible NBD devices * renamed flag from maximum_... to max_.. * replaced ConnectionFailed with Exception in tools/euca-get-ajax-console was not working for me with euca2tools 1.2 (version 2007-10-10, release 31337) * Did a pull from trunk to be sure I had the latest, then deleted the test directory. I guess it appeared when I started using venv. Doh * Deleting test dir from a pull from trunk * introduced new flag "maximum_nbd_devices" to set the number of possible NBD devices * reverted my changes from https://code.launchpad.net/~berendt/nova/lp722554/+merge/50579 and reused the existing db api methods to add the disabled services. Looks much better now :) * add timeout and retry for ssh * Makes nova-api correctly load the default flagfile * force memcache key to be str * only create auth connection if cache misses * No reason to dump a stack trace just because the AMQP server is unreachable; an error notification should be sufficient * Add error message to the error report so we know why the AMQP server is unreachable * No reason to dump a stack trace just because we can't reach the AMQP servire; it ends up being just noise * DescribeInstances modified to return ipv6 fixed ip address in case of flatmanager * Bootlock original instance during rescue * merge with zones2 fixes and trunk * check if QUERY_STRING is empty or not before building the request URL in bin/nova-ajax-console-proxy * trunk merge * API changed to new style class * trunk merge, pip-requires and novatools to novaclient changes * Fixes FlatDHCP by making it inherit from NetworkManager and moving some methods around * fixed: bin/nova-ajax-console-proxy:66:19: W601 .has_key() is deprecated, use 'in' * merged trunk * add a caching layer to the has_role call to increase performance * Removed unnecessary compute import * Set rescue instance VIF device * use default flagfile in nova-api * Add tests for 718999, fix a little brittle code introduced by the committed fix * Rename test to describe what it actually does * Copy over to current trunk my tests, the 401/500 fix, and a couple of fixes to the committed fix which was actually brittle around the edges.. * I'm working on consolidating install instructions specifically (they're the most asked-about right now) and pointing to the docs.openstack.org site for admin docs * check if QUERY_STRING is empty or not before building the request URL * Teardown rescue instance * Merged trunk * Create rescue instance * Merging trunk, conflicts fixed * Verify status of image is active * Rebased at lp:nova 740 * merged with trunk * Cleanup db method names for dealing with auth_tokens to follow standard naming pattern * The proposed bug fix stubs out the _is_vdi_pv routine for testing purposes * revert a few unnecessary changes to base.py * removed unused references to unittest * add customizable tempdir and remove extra code * Pass id of token to be deleted to the db api, not the actual object * Removing unecessary headers * Rename auth_token db methods to follow standard * Removing unecessary nokernel stuff * Adding _make_subprocess function * No longer users image/ directory in tarball * Merging trunk, small fixes * make smoketests run with nose * IPV6 FlatManager changes * Make tests start with a clean database for every test * merge trunk * merge clean db * merged trunk * sorry, pep8 * adds live network injection/reconfiguration. Some refactoring * forgot to get vm_opaque_ref * new tests * service capabilities test * moved network injection and vif creation to above vm start in vmops spawn * Merged trunk * nothing * Removes processName from debug output since we aren't using multiprocessing and it doesn't exist in python 2.6.1 * Add some methods to the ec2 admin api to work with VPNs. Also implements and properly documents the get_hosts method * Fix copypasta pep8 violation * moved migrate script to 007 (again..sigh) * Don't require metadata (hotfix for bug 724143) * merge trunk * Merged trunk * Updated email in Authors * Easy and effective fix for getting the DNS value from flag file, when working in FlatNetworking mode * Some first steps towards resolving some of the issues brought up on the mailing list related to documenting flags * Support HP/LeftHand SANs. We control the SAN by SSHing and issuing CLIQ commands. Also improved the way iSCSI volumes are mounted: try to store the iSCSI connection info in the volume entity, in preference to doing discovery. Also CHAP authentication support * This fix checks whether the boot/guest directory exists on the hypervisor. If that is not the case, it creates it * Globally exclude *.pyc files from generated tarballs * stubbing out _is_vdi_pv for test purposes * merge trunk * Globally exclude .pyc files from tarball contents * Get DNS value from Flag, when working in FlatNetworking mode. Passing the flag was ineffective previously. This is an easy fix. I think we would need nova-manage to accept dns also from command line * xenapi plugin function now checks whether /boot/guest already exists. If not, it creates the directory * capability aggregation working * fix check for existing port 22 rule * move relevant code to baseclass and make flatdhcp not inherit from flat * Hotfix to not require metadata * Documentation fixes so that output looks better * more smoketest fixes * Removed Milind from Authors file, as individual Contributer's License Agreement & Ubuntu code of conduct are not yet signed * Fixed problems found in localized string formatting. Verified the fixes by running ./run_tests.sh -V * Change missed reference to run_tests.err.log * PEP 257 fixes * Merged with trunk * fix missed err.log * Tests all working again * remove extra flag in admin tests * Revert commit 709. This fixes issues with the Openstack API causing 'No user for access key admin' errors * Adds colors to output of tests and cleans up run_tests.py * Reverted bad-fix to sqlalchemy code * Merged with trunk * added comments about where code came from * merge and fix conflicts * Prevent logging.setup() from generating a syslog handler if we didn't request one (breaks on mac) * fix pep8 * merged upstream * Changed create from a @staticmethod to a @classmethod * revert logfile redirection and make colors work by temporarily switching stdout * merged trunk * add help back to the scripts that don't use service.py * Alphabetize imports * remove processName from debug output since we aren't using multiprocessing and it doesn't exist in python 2.6.1 * updates to nova.flags to get help working better * Helper function that supports XPath style selectors to traverse an object tree e.g * tests working again * Put back the comments I accidentally removed * Make sure there are two blank links after the import * Rename minixpath_select to get_from_path * Fixes the describe_availability_zones to use an elevated context when getting services and the db calls to pass parameters correctly so is_admin check works * Fix pep8 violation (trailing whitespace) * fix describe_availability_zones * Cope when we pass a non-list to xpath_select - wrap it in a list * Fixes existing smoketests and splits out sysadmin tests from netadmin tests * Created mini XPath implementation, to simplify mapping logic * move the deletion of the db into fixtures * merged upstream * Revert commit 709. This fixes issues with the Openstack API causing 'No user for access key admin' errors * put the redirection back in to run_tests.sh and fix terminal colors by using original stdout * Deleted trailing whitespace * Fixes and optimizes filtering for describe_security_groups. Also adds a unit test * merged trunk * fix for failing describe_instances test * merged trunk * use flags for sqlite db names and fix flags in dhcpbridge * merged trunk * Fixes lp715424, code now checks network range can fit num_networks * network_size * The proposed branch prevents FlatManager from executing network initialisation tasks contained in linux_net.init_host(), which are unnecessary when flat networking is used * Adds some features to run_tests.sh: - if it crashes right away with a short erorr log, print that directly - allow specifying tests without the nova.tests part * The kernel_id and the ramdisk_id are optional, yet the OpenStack API was requiring them. In addition, with the ObjectStore these properties are not under 'properties' (as they are with Glance) * merged trunk * merge trunk * Initial support for per-instance metadata, though the OpenStack API. Key/value pairs can be specified at instance creation time and are returned in the details view. Support limits based on quota system * Merged trunk * Removed pass * Changed unit test to refer to compute API, per Todd's suggestion. Avoids needing to extend our implementation of the EC2 API * Fixes lots of errors in the unit tests * dump error output directly on short import errors * allow users to omit 'nova.tests' with run_tests * Merged trunk * * Took care of localization of strings * Addressed all one liner docstrings * Added Sateesh, Milind to Authors file * Fixed pep8 errors * FlatManager.init_host now inhibits call to method in superclass. Floating IP methods have been redefined in FlatManager to raise NotImplementedError * speed up network tests * merged trunk * move db creation into fixtures and clean db for each test * fix failures * remove unnecessary stubout * Lots of test fixing * Update the admin client to deal with VPNs and have a function host list * Removed unused import & formatting cleanups * Exit with exit code 1 if conf cannot be read * Return null if no kernel_id / ramdisk_id * Reverted change to focus on the core bug - kernel_id and ramdisk_id are optional * Make static create method behave more like other services * merged fix-describe-groups * add netadmin smoketests * separate out smoketests and add updated nova.sh * fix and optimize security group filtering * Support service-like wait behaviour for API service * Added create static method to ApiService * fix test * Refactoring nova-api to be a service, so that we can reuse it in tests * test that shows error on filtering groups * don't make a syslog handler if we didn't ask for one * Don't blindly concatenate queue name if second portiion is None * Missing import for nova.exceptions (!) * At the moment --pidfile is still used in some scripts in contrib/puppet/. I don't use puppet, please check if there are possible side effects * We're not using prefix matching on AMQP, so fakerabbit shouldn't be doing it! * merge fixes from anso branch * merged trunk * Removed block of code that resurrected itself in the last merge * Added Andy Southgate to the Authors file * Merged with trunk, including manual conflict resolution in nova/virt/disk.py and nova/virt/xenapi/vmops.py * Put the whitespace back *sigh* * Remove duplicate import gained across a merge * Rename "SNATTING" chain to "snat" * Fix DescribeRegion answer by introducing '{ec2,osapi}_listen' flags instead of overloading {ec2,osapi}_host. Get rid of paste_config_to_flags, bin/nova-combined. Adds debug FLAGS dump at start of nova-api * Also remove nova-combined from setup.py * Fixed some docstring * Get rid of nova-combined, see rationale on ML * Merged trunk * no, really fix lp721297 this time * Updated import statements according to HACKING guidelines. Added docstrings to each document. Verified pep8 over all files. Replaced some constants by enums accordingly. Still little bit more left in vm_util.py and vim_util.py files * Add flags for listen_port to nova-api. This allows us to listen on one port, but return another port (for a proxy or load balancer) in calls like describe_regions, etc * Fix tiny mitakes! (remove unnecessary comment, etc) * Fixed based on reviewer's comment. 1. Change docstrings format 2. Fix comment grammer mistake, etc * PEP8 again * Account for the fact that iptables-save outputs rules with a space at the end. Reverse the rule deduplication so that the last one takes precedence * floating-ip-snat was too long. Use floating-snat instead * PEP8 adjustments * Remove leftover from debugging * Add a bunch of tests for everything * Fixes various issues regarding verbose logging and logging errors on import * merged trunk * Add a new chain, floating-ip-snat, at the top of SNATTING, so that SNATting for floating ips gets applied before the default SNAT rule * Address some review comments * Some quick test cleanups, first step towards standardizing the way we start services in tests * use a different flag for listen port for apis * added disabled services to the list of displayed services in bin/nova-manage * merged to trunk rev709. NEEDS to be fixed based on 3rd reviewer's comment * just add 005_add_live_migration.py * Fixed based on reviewer's comment. 1. DB schema change vcpu/memory/hdd info were stored into Service table. but reviewer pointed out to me creating new table is better since Service table has too much columns * update based on prereq branch * update based on prereq branch * fixed newline and moved import fake_flags into run_tests where it makes more sense * merged fix * remove changes to test db * Fixed my confusion in documenting the syntax of iSCSI discovery * pretty colors for logs and a few optimizations * Renamed db_update to model_update, and lots more documentation * modify tests to use specific hosts rather than default * Merged with head * remove keyword argument, per review * move test_cloud to use start_service, too * add a start_service method to our test baseclass * add a test for rpc consumer isolation * Merged with trunk * The OpenStack API was using the 'secret' as the 'access key'. There is an 'access key' and there is a 'secret key'. Access key ~= username. Secret key ~= password. This fix is necessary for the OpenStack Python API bindings to log in * Add a bunch of docs for the new iptables hotness * fix pep8 and remove extra reference to reset * switch to explicit call to logging.setup() * merged trunk * Adds translation catalogs and distutils.extra glue code that automates the process of compiling message catalogs into .mo files * Merged with trunk * make sure that ec2 response times are xs:dateTime parsable * Removing pesky DS_Store files too. Begone * Updated to remove built docs * Removing duplicate installation docs and adding flag file information, plus pointing to docs.openstack.org for Admin-audience docs * introducing a new flag timeout_nbd for manually setting the time in seconds for waiting for an upcoming NBD device * use tests.sqlite so it doesn't conflict with running db * cleanup from review * Duh, continue skips iteration, not pass. #iamanidiot * reset to notset if level isn't in flags * Enable rescue testing * PEP8 errors and remove check in authors file for nova-core, since nova-core owns the translation export branch * Merged trunk * Stub out VM create * * Removed VimService_services.py & VimService_services_types.py to reduce the diffs to normal. These 2 files are auto-generated files containing stubs for VI SDK API end points. The stub files are generated using ZSI SOAP stub generator module ZSI.commands.wsdl2py over Vimservice.wsdl distributed as part of VMware Virtual Infrastructure SDK package. To not include them in the repository we have few options to choose from, 1) Generate the stub files in build time and make them available as packages for distribution. 2) Generate the stub files in installation/configuration time if ESX/ESXi server is detected as compute provider. Further to this, we can try to reduce the size of stub files by attempting to create stubs only for the API end points required by the module vmwareapi * introducing a new flag timeout_nbd for manually setting the time in seconds for waiting for an upcoming NBD device * * Removed nova/virt/guest-tools/guest_tool.bat & nova/virt/guest-tools/guest_tool.sh as guest_tool.py can be invoked directly during guest startup * More PEP-8 * Wrap ipv6 rules, too * PEP-8 fixes * Allow non-existing rules to be removed * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NOVA-CORE DEVELOPERS SHOULD NOT REVIEW THIS MERGE PROPOSAL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * merged with nova trunk revision #706 * Fix typo * Unfilter instance correctly on termination * move exception hook into appropriate location and remove extra stuff from module namespace * Also remove rules that jump to deleted chains * simplify logic for parsing log level flags * reset all loggers on flag change, not just root * add docstring to reset method * removed extra comments and initialized from flags * fix nova-api as well * Fix refresh sec groups * get rid of initialized flag * clean up location of method * remove extra references to logging.basicConfig * move the fake initialized into fake flags * fixes for various logging errors and issues * fanout works * fanout kinda working * service ping working * scheduler manager * tests passing * start of fanout * merge trunk * previous trunk merge * puppet scripts only there as an example, should be moved to some other place if they are still necessary * Various optimizations of lookups relating to users * If there are no keypairs registered on a create call, output a useful error message rather than an out-of-range exception * Fixes vpn images to use kernel and ramdisk specified by the image * added elif branch to handle the conversion of datetime instances to isoformat instead of plain string conversion * Calculate time correctly for ec2 request logs * fix ec2 launchtime response not in iso format bug * pep8 leftover * move from datetime.datetime.utcnow -> utils.utcnow * pass start time as a param instead of making it an attribute * store time when RequestLogging starts instead of using context's time * Fix FakeAuthManager so that unit tests pass; I believe it was matching the wrong field * more optimizations context.user.id to context.user_id * remove extra * replace context.user.is_admin() with context.is_admin because it is much faster * remove the weird is_vpn logic in compute/api.py * Don't crash if there's no 'fixed_ip' attribute (was returning None, which was unsubscriptable) * ObjectStore doesn't use properties collection; kernel_id and ramdisk_id aren't required anyway * added purge option and tightened up testing * Wrap iptables calls in a semaphore * pep8 * added instance types purge test * Security group fallback is named sg-fallback * Rename a few things for more clarity * Port libvirt_conn.IptablesDriver over to use linux_net.IptablesManager * merged trunk * Typo fix * added admin api call for injecting network info, added api test for inject network info * If there are no keypairs, output a useful error message * Fix typo (?) in authentication logic * Changing type -> image_type * Pep8 cleanup * moved creating vifs to its own function, moved inject network to its own function * sandy y u no read hacking guide and import classes? * Typo fix * XenAPI tests * Introduce IptablesManager in linux_net. Port every use of iptables in linux_net to it * Use WatchedFileHandler instead of RotatingFileHandler * Resize compute tests * Support for HP SAN * Merging trunk to my branch. Fixed conflicts in Authors file and .mailmap * Rename migration 004 => 005 * Added Author and tests * Merging trunk * fixups backed on merge comments * Fixed testing mode leftover * PEP8 fix * Remove paste_config_to_flags since it's now unused * Port changes to nova-combined, rename flags to API_listen and API_listen_port * Set up logging once FLAGS properly read, no need to redo logging config anymore (was inoperant anyway) * Switch to API_listen and API_listen_port, drop wsgi.paste_config_to_flags * added new class Instances to manage instances and added a new listing method into the class * added functionality to list only fixed ip addresses of one node and added exception handling to list method * Use WatchedFileHandler instead of RotatingFileHandler * Incorporating minor cleanups suggested by Rick Harris: * Use assertNotEqual instead of assertTrue * Use enumerate function instead of maintaining a counter * Resize compute tests * fixed based on reviewer's comment. 1. erase wrapper function(remove/exists/mktempfile) from nova.utils. 2. nova-manage service describeresource(->describe_resource) 3. nova-manage service updateresource(->update_resource) 4. erase "my mistake print" statement * Tests * pep8 * merged trunk * Makes FlatDHCPManager clean up old fixed_ips like VlanManager * Correctly pass the associate paramater for project_get_network through the IMPL layer in the db api * changed migration to 006 for trunk compatibility * completed doc and added --purge option to instance type delete * moved inject network info to a function which accepts only instance, and call it from reset network * Test changes * Merged with trunk * Always compare incoming flavor_id as an int * Initial support for per-instance metadata, though the OpenStack API. Key/value pairs can be specified at instance creation time and are returned in the details view. Support limits based on quota system * a few changes and a bunch of unit tests * remove leftover periodic tasks * Added support for feature parity with the current Rackspace Cloud Servers practice of "injecting" files into newly-created instances for configuration, etc. However, this is in no way restricted to only writing files to the guest when it is first created * missing docstring and fixed copyrights * move periodic tasks to base class based on class variable as per review * Correctly pass the associate paramater to project_get_network * Add **kwargs to VlanManager's create_networks so that optional args from other managers don't break * Uncommitted changes using the wrong author, and re-committing under the correct author * merge with zone phase 1 again * Added http://mynova/v1.0/zones/ api options for add/remove/update/delete zones. child_zones table added to database and migration. Changed novarc vars from CLOUD_SERVERS_* to NOVA_* to work with novatools. See python-novatools on github for help testing this * pip requires novatools * copyright notice * moved 003_cactus.py migration file to 004_add_instance_types.py to avoid naming collision with new trunk migration * Add **kwargs to VlanManager's create_networks so that optional args from other managers don't break * merge with zone phase 1 * changed from 003-004 migration * merged lp:~jk0/nova/dynamicinstancetypes * Merged trunk * merge from dev * fixed strings * multi positional string fix * Use a semaphore to ensure we don't run more than one iptables-restore at a time * Fixed unit test * merge with trunk * fixed zone list tests * Make eth0 the default for the public_interface flag * Finished flavor OS API stubs * Re-alphabetise Authors, move extra addresses into .mailmap * Re-alphabetise Authors, move extra addressses into .mailmap * Move the ramdisk logging stuff * Hi guys * fixup * zone list now comes from scheduler zonemanager * Stop blowing away the ramdisk * Rebased at lp:nova 688 * Update the Openstack API so that it returns 'addresses' * I have a bug fix, additional tests for the `limiter` method, and additional commenting for a couple classes in the OpenStack API. Basically I've just tried to jump in somewhere to get my feet wet. Constructive criticism welcome * added labels to networks for use in multi-nic added writing network data to xenstore param-list added call to agent to reset network added reset_network call to openstack api * Add a command to nova-manage to list fixed ip's * Foo * comments + Englilish, changed copyright in migration, removed network_get_all from db.api (vestigial) * Adding myself to Authors and .mailmap files * example: * Switched mailmap entries * Supporting networks with multiple PIFs. pep8 fixes unit tests passed * Merged kpepple * Merged trunk * More testing * Block diagram for vmwareapi module * added entry in the category list * Added vmwareapi module to add support of hypervisor vmware-vsphere to OpenStack * added new functionality to list all defined fixed ips * added more I18N * Merged trunk and fixed conflict with other Brian in Authors * removing superfluous pass statements; replacing list comprehension with for loop; alphabetizing imports * Rebased at lp:nova 687 * added i18n of 'No networks defined' * Make eth0 the default for FLAGS.public_interface * Typo fixes * Merging trunk * Adding tests * first crack at instance types docs * merge trunk * style cleanup * polling tests * Use glance image type to determine disk type * Minor change. Adding a helper function stub_instance() inside the test test_get_all_server_details_with_host for readability * Fixes ldapdriver so that it works properly with admin client. It now sanitizes all unicode data to strings before passing it into ldap driver. This may need to be rethought to work properly for internationalization * Moved definition of return_servers_with_host stub to inside the test_get_all_server_details_with_host test * fixed * Pep8 fixes * Merging trunk * Adding basic test * Better exceptions * Update to our HACKING doc to add examples of our docstring style * add periodic disassociate from VlanManager to FlatDHCPManager * Flipped mailmap entries * -from migrate.versioning import exceptions as versioning_exceptions + +try: + from migrate.versioning import exceptions as versioning_exceptions +except ImportError: + try: + # python-migration changed location of exceptions after 1.6.3 + # See LP Bug #717467 + from migrate import exceptions as versioning_exceptions + except ImportError: + sys.exit(_("python-migrate is not installed. Exiting.")) * Accidently removed myself from Authors * Added alternate email to mailmap * zone manager tests * Merged to trunk * added test for reset_network to openstack api tests, tabstop 5 to 4, renamed migration * Use RotatingFileHandler instead of FileHandler * pep8 fixes * sanitize all args to strings before sending them to ldap * Use a threadpool for handling requests coming in through RPC * Typos * Derp * Spell flags correctly (i.e. not in upper case) * Fixed merge error * novatools call to child zones done * novatools call to child zones done * Putting glance plugin under pep8 control * fixed authors, import sys in migration.py * Merged trunk * First commit of working code * Stubbed out flavor create/delete API calls * This implements the blueprint 'Openstack API support for hostId': https://blueprints.launchpad.net/nova/+spec/openstack-api-hostid Now instances will have a unique hostId which for now is just a hash of the host. If the instance does not have a host yet, the hostId will be '' * Fix for bug #716847 * merge trunk * First commit for xenapi-vlan-networking. Totally untested * added functionality to nova-manage to list created networks * Add back --logdir=DIR option. If set, a logfile named after the binary (e.g. nova-api.log) will be kept in DIR * Fix PEP-8 stuff * assertIsNone is a 2.7-ism * This branch should resolve nova bug #718675 (https://bugs.launchpad.net/nova/+bug/718675) * Added myself to the authors file * I fail at sessions * I fail at sessions * Foo * hurr durr * Merging trunk part 1 * stubbed out reset networkin xenapi VM tests to solve domid problem * foo * foo * Adding vhd hidden sanity check * Fixes 718994 * Make rpc thread pool size configurable * merge with trunk * fail * Fixing test by adding stub for get_image_meta * this bug bit me hard today. pv can be None, which does not translate to %d and this error gets clobbered by causing errors in the business in charge of capturing output and reporting errors * More pep8 fixes * Pep8 fixes * Set name-label on VDI * Merge * Don't hide RotatingFileHandler behind FileHandler's name * Refactor code that decides which logfile to use, if any * Fixing typo * polling working * Using Nova style nokernel * changed d to s * merge with trunk * More plugin lol * moved reset network to after boot durrrrr.. * Don't hid RotatingFileHandler behind FileHandler's name * removed flag --pidfile from nova/services.py * Added teammate Naveed to authors file for his help * plugin lol * Plugin changes * merging trunk back in; updating Authors conflict * Adding documentation * Regrouping methods so they make sense * zone/info works * Refactoring put_vdis * Adding safe_find_sr * Merged lp:nova * Fixes tarball contents by adding missing scripts and files to setup.py / MANIFEST.in * Moving SR path code outside of glance plugin * When re-throwing an exception, use "raise", not "raise e". This way we don't lose the stack trace * Adding more documentation, code-cleanup * Replace placeholders in nova.pot with some actual values * The proposed fix puts a VM which fails to spawn in a (new) 'FAILED' power state. It does not perform a clean-up. This because the user needs to know what has happened to the VM he/she was trying to run. Normally, API users do not have access to log files. In this case, the only way for the user to know what happened to the instance is to query its state (e.g.: doing euca-describe-instances). If we perform a complete clean-up, no information about the instance which failed to spawn will be left * Some trivial cleanups in context.py, mostly just a test of using the updated git-bzr-ng * Use eventlet.green.subprocess instead of standard subprocess * derp * Better host acquisition * zones merge * fixed / renamed migration scripts * Merged trunk * Update .pot file with source file and line numbers after running python setup.py build * Adds Distutils.Extra support, removes Babel support, which is half-baked at best * Pull in .po message catalogs from lp:~nova-core/nova/translations * Fix sporadically failing unittests * Missing nova/tests/db/nova.austin.sqlite file * Translations will be shipped in po/, not locale/ * Adding missing scripts and files to setup.py / MANIFEST.in * Fixes issues when running euca-run-instances and euca-describe-image-attribute against the latest nova/trunk EC2 API * initial * NaĂ¯ve attempt at threading rpc requests * Beautify it a little bit, thanks to dabo * OS-55: Moved conn_common code into disk.py * Break out of the "for group in rv" loop in security group unit tests so that we are use we are dealing with the correct group * Tons o loggin * merged trunk * Refactored * Launchpad automatic translations update * trunk merge * better filtering * Adding DISK_VHD to ImageTypes * Updates to that S3ImageService kernel_id and ramdisk_id mappings work with EC2 API * fixed nova-combined debug hack and renamed ChildZone to Zone * plugin * Removing testing statements * Adds missing flag that makes use_nova_chains work properly * bad plugin * bad plugin * bad plugin * fixed merge conflict * First cut on XenServer unified-images * removed debugging * fixed template and added migration * better filtering * Use RotatingFileHandler instead of FileHandler * Typo fixes * Resurrect logdir option * hurr * Some refactoring * hurr * Snapshot correctly * Added try clause to handle changed location of exceptions after 1.6.3 in python-migrate LP Bug #717467 * Use eventlet.green.subprocess instead of standard subprocess * Made kernel and ram disk be deleted in xen api upon instance termination * Snapshot correctly * merged recent version. no conflict, no big/important change to this branch * wharrgarbl * merge jk0 branch (with trunk merge) which added additional columns for instance_types (which are openstack api specific) * corrected model for table lookup * More fixes * Derp * fix for bug #716847 - if a volume has not been assigned to a host, then delete from db and skip rpc * added call to reset_network from openstack api down to vmops * merging with trunk * Got rid of BadParameter, just using standard python ValueError * Merged trunk * support for multiple IPs per network * Fix DescribeRegion answer by using specific 'listen' configuration parameter instead of overloading ec2_host * Fixed tables creation order and added clearing db after errors * Modified S3ImageService to return the format defined in BaseService to allow EC2 API's DescribeImages to work against Glance * re-add input_chain because it got deleted at some point * Launchpad automatic translations update * Fixes a typo in the auth checking for DescribeAvailabilityZones * Fixes describe_security_groups by forcing it to return a list instead of a generator * return a list instead of a generator from describe_groups * Hi guys * Added missing doc string and made a few style tweaks * fix typo in auth checking for describe_availability_zones * now sorting by project, then by group * Launchpad automatic translations update * Made a few tweaks to format of S3 service implementation * Merged trunk * First attempt to make all image services use similar schemas * fix :returns: and add pep-0257 * Preliminary fix for issue, need more thorough testing before pushing to lp * Launchpad automatic translations update * More typos * More typos * More typos * More typos * More typos * fixed exceptions import from python migrate * Cast to host * This fixes a lazy-load issue in describe-instances, which causes a crash. The solution is to specifically load the network table when retrieving an instance * added instance_type_purge() to actually remove records from db * updated tests and added more error checking * Merged trunk * more error checking on inputs and better errors returned * Added more columns to instance_types tables * Added LOG line to describe groups function to find out what's going * joinedload network so describe_instances continues to work * zone api tests passing * Create a new AMQP connection by default * First, not all * Merged to trunk and fixed merge conflict in Authors * rough cut at zone api tests * Following Rick and Jay's suggestions: - Fixed LOG.debug for translation - improved vm_utils.VM_Helper.ensure_free_mem * Create a new AMQP connection by default * after hours of tracking his prey, ken slowly crept behind the elusive wilderbeast test import hiding in the libvirt_conn.py bushes and gutted it with his steely blade * fixed destroy calls * Forgot the metadata includes * added get IPs by instance * added resetnetwork to the XenAPIPlugin.dispatch dict * Forgot the metadata includes * Forgot the metadata includes * Typo fixes and some stupidity about the models * passing instance to reset_network instead of vm_ref, also not converting to an opaque ref before making plugin call * Define sql_idle_timeout flag to be an integer * forgot to add network_get_all_by_instance to db.api * template adjusted to NOVA_TOOLS, zone db & os api layers added * Spawn from disk * Some more cleanup * sql_idle_timeout should be an integer * merged model change: flavorid needs to unique in model * testing refactor * flavorid needs to unique in model * Add forwarding rules for floating IPs to the OUTPUT chain on the network node in addition to the PREROUTING chain * typo * refactored api call to use instance_types * Use a NullPool for sqlite connections * Get a fresh connection in rpc.cast rather than using a recycled one * Make rpc.cast create a fresh amqp connection. Each API request has its own thread, and they don't multiplex well * Only use NullPool when using sqlite * Also add floating ip forwarding to OUTPUT chain * trunk merge * removed ZoneCommands from nova-manage * Try using NullPool instead of SingletonPool * Try setting isolation_level=immediate * This branch fixes bug #708347: RunInstances: Invalid instance type gives improper error message * Wrap line to under 79 characters * Launchpad automatic translations update * adding myself to Authors file * 1. Merged to rev654(?) 2. Fixed bug continuous request. if user continuouslly send live-migration request to same host, concurrent request to iptables occurs, and iptables complains. This version add retry for this issue * forgot to register new instance_types table * Plugin tidying and more migration implementation * fixed overlooked mandatory changes in Xen * Renamed migration plugin * A lot of stuff * - population of public and private addresses containers in openstack api - replacement of sqlalchemy model in instance stub with dict * Fixes the ordering of init_host commands so that iptables chains are created before they are used * Pass timestamps to the db layer in fixed_ip_disassociate_all_by_timeout rather than converting to strings ahead of time, otherwise comparison between timestamps would often fail * Added support for 'SAN' style volumes. A SAN's big difference is that the iSCSI target won't normally run on the same host as the volume service * added support to pull list of ALL instance types even those that are marked deleted * Indent args to ssh_connect correctly * Fix PEP8 violations * Added myself to Authors * 1) Moved tests for limiter to test_common.py (from __init__.py) and expanded test suite to include bad inputs and tests for custom limits (#2) * Added my mail alias (Part of an experiment in using github, which got messy fast...) * Fixed pep8 error in vm_utils.py * Add my name to AUTHORS, remove parentheses from the substitution made in the previous commit * Don't convert datetime objects to a string using .isoformat(). Leave it to sqlalchmeny (or pysqlite or whatever it is that does the magic) to work it out * Added test case for 'not enough memory' Successfully ran unit tests Fixed pep8 errors * Give a better error message if the instance type specified is invalid * Launchpad automatic translations update * added testing for instance_types.py and refactored nova-manage to use instance_types.py instead of going directly to db * added create and delete methods to instance_types in preparation to call them from nova-manage * added testing for nova-manage instance_type * additional error checking for nova-manage instance_type * Typos and primary keys * Automates the setup for FlatDHCP regardless of whether the interface has an ip address * add docstring and revert set_ip changes as they are unnecessary * Commas help * Changes and bug fixes * avoiding HOST_UNAVAILABLE exception: if there is not enough free memory does not spawn the VM at all. instance state is set to "SHUTDOWN" * merge lp:nova at revision #654 * merge with lp:nova * Fixed pep8 errors Unit tests passed * merge source and remove ifconfig * fixes #713766 and probably #710959, please test the patch before committing it * use route -n instead of route to avoid chopped names * Updates to the multinode install doc based on Wayne's findings. Merged with trunk so should easily merge in * Checks whether the instance id is a list or not before assignment. This is to fix a bug relating to nova/boto. The AWK-SDK libraries pass in a string, not a list. The euca tools pass in a list * Launchpad automatic translations update * Catching all socket errors in _get_my_ip, since any socket error is likely enough to cause a failure in detection * Catching all socket errors in _get_my_ip, since any socket error is likely enough to cause a failure in detection * blargh * Some stuff * added INSTANCE_TYPES to test for compatibility with current tests * Checking whether the instance id is a list or not before assignment. This is to fix a bug relating to nova/boto. The AWK-SDK libraries pass in a string, not a list. the euca tools pass in a list * Added data_transfer xapi plugin * Another quick fix to multinode install doc * Made updates to multinode install doc * fixed instance_types methods to use database backend * require user context for most flavor/instance_type read calls * added network_get_all_by_instance(), call to reset_network in vmops * added new parameter --dhcp_domain to set the used domain by dnsmasq in /etc/nova/nova.conf * minor * Fix for bug #714709 * A few changes * fixed format according to PEP8 * replaced all calls to ifconfig with calls to ip * added myself to the Authors file * applied http://launchpadlibrarian.net/63698868/713434.patch * Launchpad automatic translations update * aliased flavor to instance_types in nova-manage. will probably need to make flavor a full fledged class as users will want to list flavors by flavor name * simplified instance_types db calls to return entire row - we may need these extra columns for some features and there seems to be little downside in including them. still need to fix testing calls * refactor to remove ugly code in flavors * updated api.create to use instance_type table * added preliminary testing for bin/nova-manage while i am somewhat conflicted about the path these tests have taken, i think it is better than no tests at all * rewrote nova-manage instance_type to use correct db.api returned objects and have more robust error handling * instance_types should return in predicatable order (by name currently) * flavorid and name need to be unique in the database for the ec2 and openstack apis, repectively * corrected db.instance_types to return expect dict instead of lists. updated openstack flavors to expect dicts instead of lists. added deleted column to returned dict * converted openstack flavors over to use instance_types table. a few pep changes * added FIXME(kpepple) comments for all constant usage of INSTANCE_TYPES. updated api/ec2/admin.py to use the new instance_types db table * Launchpad automatic translations update * allow for bridge to be the public interface * Removed (newly) unused exception variables * Didn't mean to actually make changes to the glance plugin * Added a bunch of stubbed out functionality * Moved ssh_execute to utils; moved comments to docstring * Fixes for Vish & Devin's feedback * Fixes https://bugs.launchpad.net/nova/+bug/681417 * Don't swallow exception stack traces by doing 'raise e'; just use 'raise' * Implementation of 'SAN' volumes A SAN volume is 'special' because the volume service probably won't run on the iSCSI target. Initial support is for Solaris with COMSTAR (Solaris 11) * merging * Fixed PEP8 test problems, complaining about too many blank lines at line 51 * Adds logging.basicConfig() to run_tests.py so that attempting to log debug messages from tests will work * Launchpad automatic translations update * flagged all INSTANCE_TYPES usage with FIXME comment. Added basic usage to nova-manage (needs formatting). created api methods * added seed data to migration * Don't need a route for guests. Turns out the issue with routing from the guests was due to duplicate macs * Changes the behavior of run_test.sh so that pep8 is only run in the default case (when running all tests). It will no longer run when individual test cases are being given as in: * open cactus * some updates to HACKING to describe the docstrings * Casting to the scheduler * moves driver.init_host into the base class so it happens before floating forwards and sets up proper iptables chains 2011.1rc1 --------- * Set FINAL = True in version.py * Open Cactus development * Set FINAL = True in version.py * pass the set_ip from ensure_vlan_bridge * don't fail on ip add exists and recreate default route on ip move if needed * initial support for dynamic instance_types: db migration and model, stub tests and stub methods * better setup for flatdhcp * added to inject networking data into the xenstore * forgot context param for network_get_all * Fixes bug #709057 * Add and document the provider_fw method in virt/FakeConnection * Fix for LP Bug #709510 * merge trunk * fix pep8 error :/ * Changed default handler for uncaughted exceptions. It uses logging instead print to stderr * Launchpad automatic translations update * rpartition sticks the rhs in [2] * Fix for LP Bug #709510 * change ensure_bridge so it doesn't overwrite existing ips * Fix for LP Bug #709510 * Enabled modification of projects using the EC2 admin API * Reorder insance rules for provider rules immediately after base, before secgroups * Merged trunk * Match the initial db version to the actual Austin release db schema * 1. Discard nova-manage host list Reason: nova-manage service list can be replacement. Changes: nova-manage * Only run pep8 after tests if running all the tests * add logging.basicConfig() to tests * fix austin->bexar db migration * woops * trivial cleanup for context.py * Made adminclient get_user return None instead of throwing EC2Exception if requested user not available * pep8 * Added modify project to ec2 admin api * incorporate feedback from devin - use sql consistently in instance_destroy also, set deleted_at * Fixed whitespace * Made adminclient get_user return None instead of throwing EC2Exception if requested user not available * OS-55: Fix typo for libvirt_conn operation * merge trunk * remove extraneous line * Fixed pep8 errors * Changed default handler for uncaughted exceptions. Logging with level critical instead of print to stderr * Disassociate all floating ips on terminate instance * Fixes simple scheduler to able to be run_instance by admins + availability zones * Makes having sphinx to build docs a conditional thing - if you have it, you can get docs. If you don't, you can't * Fixed a pep8 spacing issue * fixes for bug #709057 * Working on api / manager / db support for zones * Launchpad automatic translations update * Adds security group output to describe_instances * Use firewall_driver flag as expected with NWFilterFirewall. This way, either you use NWFilterFirewall directly, or you use IptablesFirewall, which creates its own instance of NWFilterFirewall for the setup_basic_filtering command. This removes the requirement that LibvirtConnection would always need to know about NWFirewallFilter, and cleans up the area where the flag is used for loading the firewall class * simplify get and remove extra reference to import logging * Added a test that checks for localized strings in the source code that contain position-based string formatting placeholders. If found, an exception message is generated that summarizes the problem, as well as the location of the problematic code. This will prevent future trunk commits from adding localized strings that cannot be properly translated * Made changes based on code review * makes sure that : is in the availability zone before it attempts to use it to send instances to a particular host * Makes sure all instance and volume commands that raise not found are changed to show the ec2_id instead of the internal id * remove all floating addresses on terminate instance * Merged in trunk changes * Fixed formatting issues in current codebase * Added the test for localized string formatting * Fixes NotFound messages in api to show the ec2_id * Changed cpu limit to a static value of 100000 (100%) instead of using the vcpu value of 1. There is no weight/limit variable now so I see no other solution than the static max limit * Make nova.virt.images fetch images from a Glance URL when Glance is used as the image service (rather than unconditionally fetch them from an S3/objectstore URL) * Fixed spacing... AGAIN * Make unit tests clean up their mess in /tmp after themselves * Make xml namespace match the API version requested * Missing import in xen plugin * Shortened comment for 80char limt * Added missing import * Naive, low-regression-risk fix enabling Glance to work with libvirt/hyperv * Add unit test for xmlns version matching request version * Properly pulling the name attribute from security_group * adding testcode * Fix Bug #703037. ra_server is None * Fix regression in s3 image service. This should be a feature freeze exception * I have a feeling if we try to migrate from imageId to id we'll be tracking it down a while * more instanceId => id fixes * Fix regression in imageId => id field rename in s3 image service * Apply lp:707675 to this branch to be able to test * merge trunk * A couple of bugfixes * Fixes a stupid mistake I made when I moved this method from a module into a class * Add dan.prince to Authors * Make xml namespace match the API version requested * Fix issue in s3.py causing where '_fix_image_id' is not defined * added mapping parameter to write_network_config_to_xenstore * OS-55: Added a test case for XenAPI file-based network injection OS-55: Stubbed out utils.execute for all XenAPI VM tests, including command simulation where necessary * Simple little changes related to openstack api to work better with glance * Merged trunk * Cleaned up _start() and _shutdown() * Added missing int to string conversion * Simple little changes related to openstack api to work better with glance * use 'ip addr change' * Fix merge miss * Changed method signature of create_network * merged r621 * Merged with http://bazaar.launchpad.net/~vishvananda/nova/lp703037 * Merged with vish branch * Prefixed ending multi-line docstring with a newline * Fixing documentation strings. Second attempt at pep8 * Removal of image tempdir in test tearDown. Also, reformatted a couple method comments to match the file's style * Add DescribeInstanceTypes to admin api. This lets the dashboard know what sizes can be launched (using the -t flag in euca-run-instances, for example) and what resources they provide * Rename Mock, since it wasn't a Mock * Add DescribeInstanceTypes to admin api (dashboard uses it) * Fix for LP Bug #699654 * Change how libvirt firewall drivers work to have meaningful flags * Fixed pep8 errors * This branch updates docs to reflect the db sync addition. It additionally adds some useful errors to nova-manage to help people that are using old guides. It wraps sqlalchemy errors in generic DBError. Finally, it updates nova.sh to use current settings * Added myself to the authors list * fix pep8 issue (and my commit hook that didn't catch it) * Add a host argument to virt drivers's init_host method. It will be set to the name of host it's running on * merged trunk * Wraps the NotFound exception at the api layer to print the proper instance id. Does the same for volume. Note that euca-describe-volumes doesn't pass in volume ids properly, so you will get no error messages on euca-describe-volumes with improper ids. We may also need to wrap a few other calls as well * Fixes issue with SNATTING chain not getting created or added to POSTROUTING when nova-network starts * Fix for bug #702237 * Moving init_host before metadata_forward, as metadata_forward modifies prerouting rules * another trunk merge * Limit all lines to a maximum of 79 characters * Perform same filtering for OUTPUT as FORWARD in iptables * Fixed up a little image_id return * Trunk merged * This patch: * Trunk merged * In instance chains and rules for ipv4 and ipv6, ACCEPT target was missing * moved imageId change to s3 client * Migration for provider firewall rules * Updates for provider_fw_rules in admin api * Adds driver.init_host() call to flatdhcp driver * Fixed pep8 errors * Fixed pep8 errors * No longer hard coding to "/tmp/nova/images/". Using tempdir so tests run by different people on the same development machine pass * Perform same filtering for OUTPUT as FORWARD in iptables. This removes a way around the filtering * Fix pep-8 problem from prereq branch * Add a host argument to virt driver's init_host method. It will be set to the name of host it's running on * updated authors since build is failing * Adds conditional around sphinx inclusion * merge with trunk * Fixes project and role checking when a user's naming attribute is not uid * I am new to nova, and wanted to fix a fairly trivial bug in order to understand the process * Fix for LP Bug #707554 * Added iptables rule to IptablesFirewallDriver like in Hisaharu Ishii patch with some workaround * Set the default number of IP's to to reserve for VPN to 0 * Merged with r606 * Properly fixed spacing issue for pep8 * Fixed spacing issue for pep8 * Fixed merge conflict * Added myself to ./Authors file * Switches from project_get_network to network_get_by_instance, which actually works with all networking modes. Also removes a couple duplicate lines from a bad merge * Set the default number of IP's to to reserver for VPN to 0 * Localized strings that employ formatting should not use positional arguments, as they prevent the translator from re-ordering the translated text; instead, they should use mappings (i.e., dicts). This change replaces all localized formatted strings that use more than one formatting placeholder with a mapping version * add ip and network to nwfilter test * merged ntt branch * use network_get_by_instance * Added myself (John Dewey) to Authors * corrected nesting of the data dictionary * Updated a couple data structures to pass pep8 * Added static cpu limit of 100000 (100%) to hyperv.py instead of using the vcpu value of 1 * PEP8 fixes * Changes __dn_to_uid to return the uid attribute from the user's object * OS-55: PEP8 fixes * merged branch to name net_manager.create_networks args * the net_managers expect different args to create_networks, so nova-manage's call to net_manager.create_networks was changed to use named args to prevent argument mismatching * OS-55: Post-merge fixes * Fix describe_regions by changing renamed flags. Also added a test to catch future errors * changed nova-manage to use named arguments to net_manager.create_networks * Merged trunk * Removed tabs form source. Merged trunk changes * allow docs to build in virtualenv prevent setup.py from failing with sphinx in virtualenv * fixes doc build and setup.py fail in virtualenv * fix reversed assignment * fixes and refactoring of smoketests * remove extra print * add test and fix describe regions * merged trunk * This patch skips VM shutdown if already in the halted state * Use Glance to relate machine image with kernel and ramdisk * Skip shutdown if already halted * Refactoring _destroy into steps * i18n! * merged trunk fixed whitespace in rst * wrap sqlalchemy exceptions in a generic error * Wrap instance at api layer to print the proper error. Use same logic for volumes * This patch adds two flags: * Using new style logging * Adding ability to remap VBD device * Resolved trunk merge conflicts * Adds gettext to pluginlib_nova.py. Fixes #706029 * Adding getttext to pluginlib_nova * Add provider_fw_rules awareness to iptables firewall driver * No longer chmod 0777 instance directories, since nova works just fine without them * Updated docs for db sync requirements; merged with Vish's similar doc updates * Change default log formats so that: * they include a timestamp (necessary to correlate logs) * no longer display version on every line (shorter lines) * use [-] instead of [N/A] (shorter lines, less scary-looking) * show level before logger name (better human-readability) * OS55: pylint fixes * OS-55: Added unit test for network injection via xenstore * fixed typo * OS-55: Fix current unit tests * Fixed for pep8 * Merged with rev597 * No longer chmod 0777 instance directories * Reverted log type from error to audit * undid moving argument * Fix for LP Bug #699654 * moved argument for label * fixed the migration * really added migration for networks label * added default label to nova-manage and create_networks * syntax * syntax error * added plugin call for resetnetworking * Fix metadata using versions other than /later. Patch via ~ttx * should be writing some kindof network info to the xenstore now, hopefully * Use ttx's patch to be explict about paths, as urlmap doesn't work as I expected * Doc changes for db sync * Fixes issue with instance creation throwing errors when non-default groups are used * Saving a database call by getting the security groups from the instance object * Fixes issue with describe_instances requiring an admin context * OS-55: pylint fixes * Fixing another instance of getting a list of ids instead of a list of objects * Adds security group output to describe_instances * Finds and fixes remaining strings for i18n. Fixes bug #705186 * Pass a PluginManager to nose.config.Config(). This lets us use plugins like coverage, xcoverage, etc * i18n's strings that were missed or have been added since initial i18n strings branch * OS-55: Only modify Linux image with no or injection-incapable guest agent OS-55: Support network configuration via xenstore for Windows images * A couple of copypasta errors * Keep exception tracing as it was * Pass a PluginManager to nose.config.Config(). This lets us use plugins like coverage, xcoverage, etc * Also print version at nova-api startup, for consistency * Add timestamp to default log format, invert name and level for better readability, log version once at startup * When radvd is already running, not to hup, but to restart * fix ipv6 conditional * more smoketest fixes * Passing in an elevated context instead of making the call non-elevated * Added changes to make errors and recovery for volumes more graceful: * Fetches the security group from ID, allowing the object to be used properly, later * Changing service_get_all_by_host to not require admin context as it is used for describing instances, which any user in a project can do * Exclude vcsversion.py from pep8 check. It's not compliant, but out of our control * Exclude vcsversion.py from pep8 check. It's not compliant, but out of our control * Include paste config in tarball * Add etc/ directory to tarball * Fixes for bugs: * Return non-zero if either unit tests or pep8 fails * Eagerly load fixed_ip.network in instance_get_by_id * Add Rob Kost to Authors * Return non-zero if either unit tests or pep8 fails * Merged trunk * merge trunk * Add paste and paste.deploy installation to nova.sh, needed for api server * Updated trunk changes to work with localization * Implement provider-level firewall rules in nwfilter * Whitespace (pep8) cleanups * Exception string lacking 'G' for gigabytes unit * Fixes **params unpacking to ensure all kwargs are strings for compatibility with python 2.6.1 * make sure params have no unicode keys * Removed unneeded line * Merged trunk * Refactor run_tests.sh to allow us to run an extra command after the tests * update the docs to reflect db sync as well * add helpful error messages to nova-manage and update nova.sh * Fixed unit tests * Merged trunk * fixed pep8 error * Eagerly load instance's fixed_ip.network attribute * merged trunk changes * minor code cleanup * minor code cleanup * remove blank from Authors * .mailmap rewrite * .mailmap updated * Refactor run_tests.sh to allow us to run an extra command after the tests * Add an apply_instance_filter method to NWFilter driver * PEP-8 fixes * Revert Firewalldriver * Replace an old use of ec2_id with id in describe_addresses * various fixes to smoketests, including allowing admin tests to run as a user, better timing, and allowing volume tests to run on non-udev linux * merged trunk * replace old ec2_id with proper id in describe_addresses * merge vish's changes (which merged trunk and fixed a pep8 problem) * merged trunkand fixed conflicts and pep error * get_my_linklocal raises exception * Completed first pass at converting all localized strings with multiple format substitutions * Allows moving from the Austin-style db to the Bexar-style * move db sync into nosetests package-level fixtures so that the existing nosetests attempt in hudson will pass * previous commit breaks volume.driver. fix it. * per vish's feedback, allow admin to specify volume id in any of the acceptable manners (vol-, volume-, and int) * Merged trunk * Fixed unit tests * Fix merge conflict * add two more columns, set string lengths) * Enable the use_ipv6 flag in unit tests by default * Fixed unit tests * merge from upstream and fix small issues * merged to trunk rev572 * fixed based on reviewer's comment * Basic stubbing throughout the stack * Enable the use_ipv6 flag in unit tests by default * Add an apply_instance_filter method to NWFilter driver * update status to 'error_deleting' on volumes where deletion fails * Merged trunk * This disables ipv6 by default. Most use cases will not need it on and it makes dependencies more complex * The live_migration branch ( https://code.launchpad.net/~nttdata/nova/live-migration/+merge/44940 ) was not ready to be merged * merge from upstream to fix conflict * Trunk merge * s/cleanup/volume. volume commands will need their own ns in the long run * disable ipv6 by default * Merged trunk * Plug VBD to existing instance and minor cleanup * fixes related to #701749. Also, added nova-manage commands to recover from certain states: * Implement support for streaming images from Glance when using the XenAPI virtualization backend, as per the bexar-xenapi-support-for-glance blueprint * Works around the app-armor problem of requiring disks with backing files to be named appropriately by changing the name of our extra disks * fix test to respect xml changes * merged trunk * Add refresh_security_group_* methods to nova/virt/fake.py, as FakeConnection is the reference for documentation and method signatures that should be implemented by virt connection drivers * added paste pastedeploy to nova.sh * authors needed for test * revert live_migration branch * This removes the need for the custom udev rule for iscsi devices. It instead attaches the device based on /dev/disk/by-path/ which should make the setup of nova-volume a little easier * Merged trunk * Risk of Regression: This patch don’t modify existing functionlities, but I have added some. 1. nova.db.service.sqlalchemy.model.Serivce (adding a column to database) 2. nova.service ( nova-compute needes to insert information defined by 1 above) * Docstrings aren't guaranteed to exist, so split() can't automatically be called on a method without first checking for the method docstring's existence. Fixes Bug #704447 * Removes circular import issues from bin/stack and replaces utils.loads with json.loads. Fixes Bug#704424 * ComputeAPI -> compute.API in bin/nova-direct-api. Fixes LP#704422 * Fixed apply_instance_filter is not implemented in NWFilterFirewall * pep8 * I might have gone overboard with documenting _members * Add rules to database, cast refresh message and trickle down to firewall driver * Fixed error message in get_my_linklocal * openstack api fixes for glance * Stubbed-out code for working with provider-firewalls * Merged trunk * Merged with trunk revno 572 * Better shutdown handling * Change where paste.deploy factories live and how they are called. They are now in the nova.wsgi.Application/Middleware classes, and call the __init__ method of their class with kwargs of the local configuration of the paste file * Further decouple api routing decisions and move into paste.deploy configuration. This makes paste back the nova-api binary * Clean up openstack api test fake * Merged trunk * Add Start/Shutdown support to XenAPI * The Openstack API requires image metadata to be returned immediately after an image-create call * merge trunk * Fixing whitespace * Returning image_metadata from snapshot() * Merging trunk * Merged trunk * merged trunk rev569 * merged to rev 561 and fixed based on reviewer's comment * Adds a developer interface with direct access to the internal inter-service APIs and a command-line tool based on reflection to interact with them * merge from upstream * pep8 fixes... largely to things from trunk? * merge from upstream * pep8 * remove print statement * This branch fixes two outstanding bugs in compute. It also fixes a bad method signature in network and removes an unused method in cloud * Re-removes TrialTestCase. It was accidentally added in by some merges and causing issues with running tests individually * removed rpc in cloud * merged trial fix again * fix bad function signature in create_networks * undo accidental removal of fake_flags * Merged trunk * merged lp:~vishvananda/nova/lp703012 * remove TrialTestCase again and fix merge issues * import re, remove extra call in cloud.py. Move get_console_output to compute_api * Create and use a generic handler for RPC calls to compute * Create and use a generic handler for RPC calls to compute * Create and use a generic handler for RPC calls * Merged trunk * OS-55: Inject network settings in linux images * Merged with trunk revno 565 * use .local and .rescue for disk images so they don't make app-armor puke * Implements the blueprint for enabling the setting of the root/admin password on an instance * OpenStack Compute (Nova) IPv4/IPv6 dual stack support http://wiki.openstack.org/BexarIpv6supportReadme * Merged to rev.563 * This change introduces support for Sheepdog (distributed block storage system) which is proposed in https://blueprints.launchpad.net/nova/+spec/sheepdog-support * Sort Authors * Update Authors * merge from upstream: * pep8 fixes * update migration script to add new tables since merge * sort Authors * Merged with r562 * This modifies libvirt to use CoW images instead of raw images. This is much more efficient and allows us to use the snapshotting capabilities available for qcow2 images. It also changes local storage to be a separate drive instead of a separate partition * pep8. Someday I'll remember 2 blank lines between module methods * remove ">>>MERGE" iin nova/db/sqlalchemy/api.py * checking based on pep8 * merged trunk * Modified per sorens review * Fix for Pep-8 * Merged with r561 * Moved commands which needs sudo to nova.sh * Added netaddr for pip-requires * Marking snapshots as private for now * Merging Trunk * Fixing Image ID workaround and typo * Fixed based on the comments from code review. Merged to trunk rev 561 * Add a new method to firewall drivers to tell them to stop filtering a particular instance. Call it when an instance has been destroyed * merged to trunk rev 561 * Merged trunk * merge trunk rev560 * Fixes related to how EC2 ids are displayed and dealt with * Get reviewed and fixed based on comments. Merged latest version * Make libvirt and XenAPI play nice together * Spelling is hard. Typing even moreso * Revert changes to version.py * Minor code cleanups * Minor code cleanups * Minor code cleanups * Make driver calls compatible * Merged trunk * Stubbed out XenServer rescue/unrescue * Added unit tests for the Diffie-Hellman class. Merged recent trunk changes * Bring NWFilter driver up to speed on unfilter_instance * Replaced home-grown Diffie-Hellman implementation with the M2Crypto version supplied by Soren * Instead of a set() to keep track of instances and security groups, use a dict(). __eq__ for stuff coming out of sqlalchemy does not do what I expected (probably due to our use of sessions) * Fixes broken call to __generate_rc in auth manager * Fixes bug #701055. Moves code for instance termination inline so that the manager doesn't prematurely mark an instance as deleted. Prematurely doing so causes find calls to fail, prevents instance data from being deleted, and also causes some other issues * Revert r510 and r512 because Josh had already done the same work * merged trunk * Fixed Authors * Merged with 557 * Fixed missing _(). Fixed to follow logging to LOG changes. Fixed merge miss (get_fixed_ip was moved away). Update some missing comments * merge from upstream and fix leaks in console tests * make sure get_all returns * Fixes a typo in the name of a variable * Fixes #701055. Move instance termination code inline to prevent manager from prematurely marking it as destroyed * fix invalid variable reference in cloud api * fix indentation * add support for database migration * fix changed call to generate_rc * merged with r555 * fixed method signature of modify_rules fixed unit_test for ipv6 * standardize volume ids * standardize volume ids * standardize on hex for ids, allow configurable instance names * correct volume ids for ec2 * correct formatting for volume ids * Fix test failures on Python 2.7 by eagerly loading the fixed_ip attribute on instances. No clue why it doesn't affect python 2.6, though * Adding TODO to clarify status * Merging trunk * Do joinedload_all('fixed_ip.floating_ips') instead of joinedload('fixed_ip') * Initialize logging in nova-manage so we don't see errors about missing handlers * _wait_with_callback was changed out from under suspend/resume. fixed * Make rescue/unrescue available to API * Stop error messages for logs when running nova-manage * Fixing stub so tests pass * Merging trunk * Merging trunk, small fixes * This branch adds a backend for using RBD (RADOS Block Device) volumes in nova via libvirt/qemu. This is described in the blueprint here: https://blueprints.launchpad.net/nova/+spec/ceph-block-driver * Fix url matching for years 2010-forward * Update config for launching logger with cleaner factory * Update paste config for ec2 request logging * merged changes from trunk * cleaned up prior merge mess * Merged trunk * My previous modifications to novarc had CLOUDSERVER_AUTH_URL pointing to the ec2 api port. Now it's correctly pointing to os api port * Check for whole pool name in check_for_setup_error * change novarc template from cc_port to osapi_port. Removed osapi_port from bin scripts * Start to add rescue/unrescue support * fixed pause and resume * Fixed another issue in _stream_disk, as it did never execute _write_partition. Fixed fake method accordingly. Fixed pep8 errors * pep8 fixes * Fixing the stub for _stream_disk as well * Fix for _stream_disk * Merged with r551 * Support IPv6 firewall with IptablesFirewallDriver * Fixed syntax errors * Check whether 'device_path' has ':' before splitting it * PEP8 fixes, and switch to using the new LOG in vm_utils, matching what's just come in from trunk * Merged with trunk * Merged with Orlando's recent changes * Added support of availability zones for compute. models.Service got additional field availability_zone and was created ZoneScheduler that make decisions based on this field. Also replaced fake 'nova' zone in EC2 cloud api * Eagerly load fixed_ip property of instances * Had to abandon the other branch (~annegentle/nova/newscript) because the diffs weren't working right for me. This is a fresh branch that should be merged correctly with trunk. Thanks for your patience. :) * Added unit tests for the xenapi-glance integration. This adds a glance simulator that can stub in place of glance.client.Client, and enhances the xapi simulator to add the additional calls that the Glance-specific path requires * Merged with 549 * Change command to get link local address Remove superfluous code * This branch adds web based serial console access. Here is an overview of how it works (for libvirt): * Merged with r548 * Fixed bug * Add DescribeInstanceV6 for backward compatibility * Fixed test environments. Fixed bugs in _fetch_image_objecstore and _lookup_image_objcestore (objectstore was broken!) Added tests for glance * Fixed for pep8 Remove temporary debugging * changed exception class * Changing DN creation to do searches for entries * Fixes bug #701575: run_tests.sh fails with a meaningless error if virtualenv is not installed. Proposed fix tries to use easy_install to install virtualenv if not present * merge trunk, fix conflict * more useful prefix and fix typo in string * use by-path instead of custom udev script * Quick bugfix. Also make the error message more specific and unique in the equivalent code in the revoke method * remove extra whitspaces * Raise meaningful exception when there aren't enough params for a sec group rule * bah - pep8 errors * resolve pylint warnings * Removing script file * Read Full Spec for implementation details and notes on how to boot an instance using OS API. http://etherpad.openstack.org/B2RK0q1CYj * Added my name to Authors list * Changes per Edays comments * Fixed a number of issues with the iptables firewall backend: * Port specifications for firewalls come back from the data store as integers, but were compared as strings. * --icmp-type was misspelled as --icmp_type (underscore vs dash) * There weren't any unit tests for these issues * merged trunk changes * Removed unneeded SimpleDH code from agent plugin. Improved handling of plugin call failures * Now tries to install virtualenv via easy_install if not present * Merging trunk * fixed issue in pluginlib_nova.py * Trunk merge and conflcts resolved * Implementation of xs-console blueprint (adds support for console proxies like xvp) * Fixed a number of issues with the iptables firewall backend: * Port specifications for firewalls come back from the data store as integers, but were compared as strings. * --icmp-type was misspelled as --icmp_type (underscore vs dash) * There weren't any unit tests for these issues * Add support for EBS volumes to the live migration feature. Currently, only AoE is supported * Changed shared_ip_group detail routing * Changed shared_ip_group detail routing * A few more changes to the smoeketests. Allows smoketests to find the nova package from the checkout. Adds smoketests for security groups. Also fixes a couple of typos * Fixes the metadata forwarding to work by default * Adds support to nova-manage to modify projects * Add glance to pip-requires, as we're now using the Glance client code from Nova * Now removing kernel/ramdisk VDI after copy Code tested with PV and HVM guests Fixed pep8 errors * merged trunk changes * consolidate boto_extensions.py and euca-get-ajax-console, fix bugs from previous trunk merge * Fixed issues raised by reviews * xenapi_conn was not terminating utils/LoopingCall when an exception was occurring. This was causing the eventlet Event to have send_exception() called more than once (a no-no) * merge trunk * whups, fix accidental change to nova-combined * remove uneeded superclass * Bugfix * Adds the requisite infrastructure for automating translation templates import/export to Launchpad * Added babel/gettext build support * Can now correctly launch images with external kernels through glance * re-merged in trunk to correct conflict * Fix describe_availablity_zones versobse * Typo fix * merged changes from trunk * Adding modify option for projects * Fixes describe_instances to filter by a list of instance_ids * Late import module for register_models() so it doesn't create the db before flags are loaded * Checks for existence of volume group using vgs instead of checking to see if /dev/nova-volumes exists. The dev is created by udev and isn't always there even if the volume group does exist * Add a new firewall backend for libvirt, based on iptables * Create LibvirtConnection directly, rather than going through libvirt_conn.get_connection. This should remove the dependency on libvirt for tests * Fixed xenapi_conn wait_for_task to properly terminate LoopingCall on exception * Fixed xenapi_conn wait_for_task to properly terminate LoopingCall on exception * Fixed xenapi_conn wait_for_task to properly terminate LoopingCall on exception * optimize to call get if instance_id is specified since most of the time people will just be requesting one id * fix describe instances + test * Moved get_my_ip into flags because that is the only thing it is being used for and use it to set a new flag called my_ip * fixes Document make configuration by updating nova version mechanism to conform to rev530 update * alphbetized Authors * added myself to authors and fixed typo to follow standard * typo correction * fixed small glitch in _fetch_image_glance virtual_size = imeta['size'] * fixed doc make process for new nova version (rev530) machanism * late import module for register_models() so it doesn't create the db before flags are loaded * use safer vgs call * Return proper region info in describe_regions * change API classname to match the way other API's are done * small cleanups * First cut at implementing partition-adding in combination with the Glance streaming. Untested * some small cleanups * merged from upstream and made applicable changes * Adds a mechanism to programmatically determine the version of Nova. The designated version is defined in nova/version.py. When running python setup.py from a bzr checkout, information about the bzr branch is put into nova/vcsversion.py which is conditionally imported in nova/version.py * Return region info in the proper format * Now that we aren't using twisted we can vgs to check for the existence of the volume group * s/canonical_version/canonical_version_string/g * Fix indentation * s/string_with_vcs/version_string_with_vcs/g * Some fixes to _lookup_image_glance: fix the return value from lookup_image, attach the disk read-only before running pygrub, and add some debug logging * Reverted formatting change no longer necessary * removed a merge conflict line I missed before * merged trunk changes * set the hostname factory in the service init * incorporated changes suggested by eday * Add copyright and license info to version.py * Fixes issue in trunk with downloading s3 images for instance creation * Fix pep8 errors * Many fixes to the Glance integration * Wrap logs so we can: * use a "context" kwarg to track requests all the way through the system * use a custom formatter so we get the data we want (configurable with flags) * allow additional formatting for debug statements for easer debugging * add an AUDIT level, useful for noticing changes to system components * use named logs instead of the general logger where it makes sesnse * pep8 fixes * Bug #699910: Nova RPC layer silently swallows exceptions * Bug #699912: When failing to connect to a data store, Nova doesn't log which data store it tried to connect to * Bug #699910: Nova RPC layer silently swallows exceptions * pv/hvm detection with pygrub updated for glance * Bug #699912: When failing to connect to a data store, Nova doesn't log which data store it tried to connect to * Resolved merge differences * Additional cleanup prior to pushing * Merged with trunk * Fixing unescaped quote in nova-CC-install.sh script plus formatting fixes to multinode install * getting ready to push for merge prop * Fixing headers line by wrapping the headers in single quotes * Less code generation * grabbed the get_info fix from my other branch * merged changes from trunk * Remove redundant import of nova.context. Use db instance attribute rather than module directly * Merging trunk * Removing some FIXMEs * Reserving image before uploading * merge * Half-finished implementation of the streaming from Glance to a VDI through nova-compute * Fix Nova not to immediately blow up when talking to Glance: we were using the wrong URL to get the image metadata, and ended up getting the whole image instead (and trying to parse it as json) * another merge with trunk to remedy instance_id issues * merge * Include date in API action query * Review feedback * This branch implements lock functionality. The lock is stored in the compute worker database. Decorators have been added to the openstack API actions which alter instances in any way * Review feedback * Review feedback * Review feedback * typo * refers to instance_id instead of instance_ref[instance_id] * passing the correct parameters to decorated function * accidentally left unlocked in there, it should have been locked * various cleanup and fixes * merged trunk * pep8 * altered argument handling * Got the basic 'set admin password' stuff working * Include date in action query * Let documentation get version from nova/version.py as well * Add default version file for developers * merge pep8 fixes from newlog2 * Track version info, and make available for logging * pep8 * Merged trunk * merge pep8 and tests from wsgirouter branch * Remove test for removed class * Pep8 * pep8 fix * merged trunk changes * commit before merging trunk * Fixes format_instances error by passing reservation_id as a kwarg instead of an arg. Also removes extraneous yields in test_cloud that were causing tests to pass with broken code * Remove module-level factory methods in favor of having a factory class-method on wsgi components themselves. Local options from config are passed to the __init__ method of the component as kwargs * fix the broken tests that allowed the breakage in format to happen * Fix format_run_instances to pass in reservation id as a kwarg * Add factories into the wsgi classes * Add blank __init__ file for fixing importability. The stale .pyc masked this error locally * merged trunk changes * Introduces basic support for spawning, rebooting and destroying vms when using Microsoft Hyper-V as the hypervisor. Images need to be in VHD format. Note that although Hyper-V doesn't accept kernel and ramdisk separate from the image, the nova objectstore api still expects an image to have an associated aki and ari. You can use dummy aki and ari images -- the hyper-v driver won't use them or try to download them. Requires Python's WMI module * merged trunk changes * Renamed 'set_root_password' to 'set_admin_password' globally * merge with trunk * renamed sharedipgroups to shared_ip_groups and fixed tests for display_name * Fix openstack api tests and add a FaultWrapper to turn exceptions to faults * Fixed display_name on create_instance * fix some glitches due to someone removing instanc.internal_id (not that I mind) remove accidental change to nova-combined script * Fixed trunk merge conflicts as spotted by dubs * OS API parity: map image ID to numeric ID. Ensure all other OS operations are at least stubbed out and callable * add in separate public hostname for console hosts. flesh out console api data * allow smoketests to find nova package and add security rules * Fix a bunch of pep8 stuff * This addition to the docs clarifies that it is a requirement for contributors to be listed in the Authors file before their commits can be merged to trunk * merge trunk * another merge from trunk to the latest rev * pulled changes from trunk added console api to openstack api * Removed dependencies on nova server components for the admin client * Remove stale doc files so the autogeneration extension for sphinx will work properly * Add to Authors and mailmap * Make test case work again * This branch contains the internal API cleanup branches I had previously proposed, but combined together and with all the UUID key replacement ripped out. This allows multiple REST interfaces (or other tools) to use the internal API directly, rather than having the logic tied up in the ec2 cloud.py file * socat will need to be added to our nova sudoers * merged trunk changes * intermediate work * Created a XenAPI plugin that will allow nova code to read/write/delete from xenstore records for a given instance. Added the basic methods for working with xenstore data to the vmops script, as well as plugin support to xenapi_conn.py * Merged trunk * Recover from a lost data store connection * Updated register_models() docstring * simplify decorator into a wrapper fn * add in xs-console worker and tests * pep8 cleanup * more fixes, docstrings * fix injection and xml * Fixing formatting problems with multinode install document * Split internal API get calls to get and get_all, where the former takes an ID and returns one resource, and the latter can optionally take a filter and return a list of resources * missing _() * Fixed for pep8 * Fixed:Create instance fails when use_ipv6=False * Removed debug message which is not needed * Fixed misspelled variable * Fixed bug in nova_project_filter_v6 * The _update method in base Instance class overides dns_name_v6,so fixed it * self.XENAPI.. * Changed Paused power state from Error to Paused * fixed json syntax error * stop using partitions and first pass at cow images * Remove stale doc files * pep8 * tests fixed up * Better method for eventlet.wsgi.server logging * Silence eventlet.wsgi.server so it doesn't go to stdout and pollute our logs * Declare a flag for test to run in isolation * Build app manually for test_api since nova.ec2.API is gone * Recover from a lost data store connection * Added xenstore plugin changed * merged changes from trunk * some more cleanup * need one more newline * Redis dependency no longer needed * Make test_access use ec2.request instead of .controller and .action * Revert some unneeded formatting since twistd is no longer used * pep8 fixes * Remove flags and unused API class from openstack api, since such things are specified in paste config now * i18n logging and exception strings * remove unused nova/api/__init__.py * Make paste the default api pattern * Rework how routing is done in ec2 endpoint * Change all 2010 Copyright statements to 2010-2011 in doc source directory only * rename easy to direct in the scripts * fix typo in stack tool * rename Easy API to Direct API * Moved __init__ api code to api.py and changed allowed_instances quota method argument to accept all type data, not just vcpu count * Made the plugin output fully json-ified, so I could remove the exception handlers in vmops.py. Cleaned up some pep8 issues that weren't caught in earlier runs * merged from trunk * Renamed argument to represent possible types in volume_utils * Removed leftover UUID reference * Removed UUID keys for instance and volume * Merged trunk * Final edits to multi-node doc and install script * Merged trunk changes * Some Bug Fix * Fixed bug in libvirt * Fixed bug * Fixed for pep8 * Fixed conflict with r515 * Merged and fiexed conflicts with r515 * some fixes per vish's feedback * Don't know where that LOG went.. * Final few log tweaks, i18n, levels, including contexts, etc * Apply logging changes as a giant patch to work around the cloudpipe delete + add issue in the original patch * dabo fix to update for password reset v2 * krm_mapping.json sample file added * dabo fix to update for password reset * added cloudserver vars to novarc template * Update Authors * Add support for rbd volumes * Fixes LP688545 * First pass at feature parity. Includes Image ID hash * Fixing merge conflicts with new branch * merged in trunk changes * Fixing merge conflicts * Fixes LP688545 * Make sure we point to the right PPA's everywhere * Editing note about the database schema available on the wiki * Modifying based on reviewer comments * Uses paste.deploy to make application running configurable. This includes the ability to swap out middlewares, define new endpoints, and generally move away from having code to build wsgi routers and middleware chains into a configurable, extensible method for running wsgi servers * Modifications to the nova-CC-installer.sh based on review * Adds the pool_recycle option to the sql engine startup call. This enables connection auto-timeout so that connection pooling will work properly. The recommended setting (per sqlalchemy FAQ page) has been provided as a default for a new configuration flag. What this means is that if a db connection sits idle for the configured # of seconds, the engine will automatically close the connection and return it to the available thread pool. See Bug #690314 for info * Add burnin support. Services are now by default disabled, but can have instances and volumes run on them using availability_zone = nova:HOSTNAME. This lets the hardware be put through its paces without being put in the generally available pool of hardware. There is a 'service' subcommand for nova-manage where you can enable, disable, and list statuses of services * pep8 fixes * Merged compute-api-cleanup branch * Removed compute dependency in quota.py * add timeout constant, set to 5 minutes * removed extra whitespace chars at the end of the changed lines * Several documentation corrections and formatting fixes * Minor edits prior to merging changes to the script file * add stubs for xen driver * merge in trunk * merged latest trunk * merge trunk * merge trunk * temp * Stop returning generators in the refresh_security_group_{rules,members} methods * Don't lie about which is the default firewall implementation * Move a closing bracket * Stub out init_host in libvirt driver * Adjust test suite to the split between base firewall rules provided by nwfilter and the security group filtering * Fix a merge artifact * Remove references to nova-core/ppa and openstack/ppa PPA's * Updated the password generation code * Add support for Sheepdog volumes * Add support for various block device types (block, network, file) * Added agent.py plugin. Merged xenstore plugin changes * fixed pep8 issues * Added OpenStack's copyright to the xenstore plugin * fixed pep8 issues * merged in trunk and xenstore-plugin changes * Ignore CA/crl.pem * Before merge with xenstore-plugin code * Corrected the sloppy import in the xenstore plugin that was copied from other plugins * Ignore CA/crl.pem * Merged trunk * Merged trunk * deleting README.livemigration.txt and nova/livemigration_test/* * Merged trunk * Merged trunk * 最新ăƒăƒ¼ă‚¸ăƒ§ăƒ³ă«ăƒăƒ¼ă‚¸ă€‚変更点ă¯ä»¥ä¸‹ă®é€ă‚。 Authorsă«è‡ªåˆ†ă®æ‰€å±ă‚’è¿½å  utils.pyă®generate_uidăŒăă‹ă—ă„ă®ă§ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹IDăŒă‚ªăƒ¼ăƒăƒ¼ăƒ•ăƒ­ăƒ¼ă—ă¦ă„ăŸăŒă€ ăă®å‡¦ç†ă‚’ä¸€æ™‚æ’¤å»ƒă€‚å¾Œă§è©¦é¨“ă—ăªăă—ă¨ă™ă‚‹ă“ă¨ă«ă—ăŸă€‚ * Merged trunk * Auth Tokens assumed the user_id was an int, not a string * Removed dependencies on flags.py from adminclient * Make InstanceActions and live diagnostics available through the Admin API * Cleanup * Improved test * removed some debugging code left in previous push * Converted the pool_recycle setting to be a flag with a default of 3600 seconds * completed the basic xenstore read/write/delete functionality * Removed problematic test * PEP8 fix * * Fix bad query in __project_to_dn * use __find_dns instead of __find_objects in __uid_to_dn and __project_to_dn * Moved network operation code in ec2 api into a generic network API class. Removed a circular dependency with compute/quota * Oopsies * merge trunk * merge trunk * Make compute.api methods verbs * Fail * Review feedback * Cleans up the output of run_tests.sh to look closer to Trial * change exit code * Changing DN creation to do searches for entries * Merged trunk * Implemented review feedback * This patch is beginning of XenServer snapshots in nova. It adds: * Merged trunk * Calling compute api directly from OpenStack image create * Several documentation corrections * merge recent revision(version of 2010/12/28) Change: 1. Use greenthread instead of defer at nova.virt.libvirt_conn.live_migration. 2. Move nova.scheduler.manager.live_migration to nova.scheduler.driver 3. Move nova.scheduler.manager.has_enough_resource to nova.scheduler.driver 4. Any check routine in nova-manage.instance.live_migration is moved to nova.scheduler.driver.schedule_live_migration * Merging trunk * Note that contributors are required to be listed in Authors file before work can be merged into trunk * Mention Authors and .mailmap files in Developer Guide * pep 8 * remove cloudpipe from paste config * Clean up how we determine IP to bind to * Converted a few more ec2 calls to use compute api * Cleaned up the compute API, mostly consistency with other parts of the system and renaming redundant module names * fixed the compute lock test * altered the compute lock test * removed tests.api.openstack.test_servers test_lock, to hell with it. i'm not even sure if testing lock needs to be at this level * fixed up the compute lock test, was failing because the context was always admin * syntax error * moved check lock decorator from the compute api to the come manager... when it rains it pours * removed db.set_lock, using update_instance instead * added some logging * typo, trying to hurry.. look where that got me * altered error exception/logging * altered error exception/logging * fixd variables being out of scope in lock decorator * moved check lock decorator to compute api level. altered openstack.test_servers according and wrote test for lock in tests.test_compute * Moved ec2 volume operations into a volume API interface for other components to use. Added attach/detach as compute.api methods, since they operate in the context of instances (and to avoid a dependency loop) * pep8 fix, and add in flags that don't refernece my laptop * apt-get install socat, which is used to connect to the console * removed lock check from show and changed returning 404 to 405 * fix lp:695182, scheduler tests needed to DECLARE flag to run standalone * removed () from if (can't believe i did that) and renamed checks_lock decorator * Add the pool_recycle setting to enable connection pooling features for the sql engine. The setting is hard-coded to 3600 seconds (one hour) per the recommendation provided on sqlalchemy's site * i18n * Pep-8 cleanup * Fix scheduler testcase so it knows all flags and can run in isolation * removed some code i didn't end up using * fixed merge conflict with trunk * pep8 * fixed up test for lock * added tests for EC2 describe_instances * PEP8 cleanup * This branch fixes an issue where VM creation fails because of a missing flag definition for 'injected_network_template'. See Bug #695467 for more info * Added tests * added test for lock to os api * refactor * Re-added flag definition for injected_network_template. Tested & verified fix in the same env as the original bug * forgot import * syntax error * Merged trunk * Added implementation availability_zones to EC2 API * Updating Authors * merge * Changes and error fixes to help ensure basic parity with the Rackspace API. Some features are still missing, such as shared ip groups, and will be added in a later patch set * initial lock functionality commit * Merged with trunk * Additional edits in nova.concepts.rst while waiting for script changes * Bug #694880: nova-compute now depends upon Cheetah even when not using libvirt * add ajax console proxy to nova.sh * merge trunk * Fix pep8 violations * add in unit tests * removed superfluous line * Address bug #695157 by using a blank request class and setting an empty request path * Defualt services to enabled * Address bug #695157 by using a blank request class and setting an empty request path * Add flag --enable_new_services to toggle default state of service when created * merge from trunk * This commit introduces scripts to apply XenServer host networking protections * Whoops * merge from upstream and fix conflicts * Update .mailmap with both email addresses for Ant and myself * Make action log available through Admin API * Merging trunk * Add some basic snapshot tests * Added get_diagnostics placeholders to libvirt and fake * Merged trunk * Added InstanceAction DB functions * merge trunk * Bug #694890: run_tests.sh sometimes doesn't pass arguments to nosetest * Output of run_tests.sh to be closer to trial * I've added suspend along with a few changes to power state as well. I can't imagine suspend will be controversial but I've added a new power state for "suspended" to nova.compute.power_states which libvirt doesn't use and updated the xenapi power mapping to use it for suspended state. I also updated the mappings in nova.api.openstack.servers to map PAUSED to "error" and SUSPENDED to "suspended". Thoughts there are that we don't currently (openstack API v1.0) use pause, so if somehow an instance were to be paused an error occurred somewhere, or someone did something in error. Either way asking the xenserver host for the status would show "paused". Support for more power states needs to be added to the next version of the openstack API * fixed a line length * Bug #694880: nova-compute now depends upon Cheetah even when not using libvirt * Bug #694890: run_tests.sh sometimes doesn't pass arguments to nosetest * fix bug #lp694311 * Typo fix * Renamed based on feedback from another branch * Added stack command-line tool * missed a couple of gettext _() * Cleans up nova.api.openstack.images and fix it to work with cloudservers api. Previously "cloudservers image-list" wouldn't work, now it will. There are mappings in place to handle s3 or glance/local image service. In the future when the local image service is working, we can probably drop the s3 mappings * Fixing snapshots, pep8 fixes * translate status was returning the wrong item * Fixing bad merge * Converted Volume model and operation to use UUIDs * inst -> item * syntax error * renaming things to be a bit more descriptive * Merging trunk * Converted instance references to GUID type * Added custom guid type so we can choose the most efficient backend DB type easily * backup schedule changes * Merged trunk * Merging trunk, fixing failed tests * A few fixes * removed \ * Moving README to doc/networking.rst per recommendation from Jay Pipes * Merged trunk * couple of pep8s * merge trunk * Fixed after Jay's review. Integrated code from Soren (we now use the same 'magic number' for images without kernel & ramdisk * Fixed pep8 errors * launch_at ă‚’å‰å›ă‚³ăƒŸăƒƒăƒˆæ™‚ă«è¿½å ă—ăŸăŒă€lauched_ată¨ă„ă†ă‚«ăƒ©ăƒ ăŒæ—¢ă«å­˜åœ¨ă—〠紛らă‚ă—ă„ă®ă§lauched_onă«ă—ăŸă€‚ * logs inner exception in nova/utils.py->import_class * Fix Bug #693963 * remove requirement of sudo on tests * merge trunk * Merge * adding zones to api * Support IPv6 * test commit * ăƒ†ă‚¹ăƒˆé …ç›®è¡¨ă‚’å†ă³è¿½å ă—ăŸç¶æ…‹ă§ă‚³ăƒŸăƒƒăƒˆ * ăƒ†ă‚¹ăƒˆé …ç›®è¡¨ă‚’ăƒ­ăƒ¼ă‚«ăƒ«ă‹ă‚‰ä¸€åº¦å‰é™¤ă—ăŸç¶æ…‹ă§ă‚³ăƒŸăƒƒăƒˆ * ăƒ†ă‚¹ăƒˆé …ç›®è¡¨ăŒăªăœă‹æ¶ˆăˆăŸă®ă§è¿½å  * nova.compute.managerăŒă“ă‚Œă¾ă§ă®ä¿®æ­£ă§ăƒ‡ă‚°ăƒ¬ă—ă¦ă„ăŸă®ă§ä¿®æ­£ CPUID, ăă®ä»–ă®ăƒă‚§ăƒƒă‚¯ăƒ«ăƒ¼ăƒăƒ³ă‚’nova.scheduler.manager.live_migrationă«è¿½å  * nova.compute.managerăŒă“ă‚Œă¾ă§ă®ä¿®æ­£ă§ăƒ‡ă‚°ăƒ¬ă—ă¦ă„ăŸă®ă§ä¿®æ­£ CPUID, ăă®ä»–ă®ăƒă‚§ăƒƒă‚¯ăƒ«ăƒ¼ăƒăƒ³ă‚’nova.scheduler.manager.live_migrationă«è¿½å  * Make nova work even when user has LANG or LC_ALL configured * merged trunk, resolved trivial conflict * merged trunk, resolved conflict * Faked out handling for shared ip groups so they return something * another typo * applied power state conversion to test * trying again * typo * fixed the os api image test for glance * updated the xenstore methods to reflect that they write to the param record of xenstore, not the actual xenstore itself * fixed typo * Merged with trunk All tests passed Could not fix some pep8 errors in nova/virt/libvirt_conn.py * fixed merge conflict * updated since dietz moved the limited function * fixed error occuring when tests used glance attributes, fixed docstrings * Merged again from trunk * fixed a few docstrings, added _() for gettext * added _() for gettext and a couple of pep8s * adds a reflection api * unit test - should be reworked * Moves implementation specific Openstack API code from the middleware to the drivers. Also cleans up a few areas and ensures all the API tests are passing again * PEP8 fix * One more time * Pep8 cleanup * Resolved merge conflict * Merged trunk * Trying to remove twisted dependencies, this gets everything working under nosetests * Merged Monty's branch * Merged trunk and resolved conflicts * Working diagnostics API; removed diagnostics DB model - not needed * merged trunk * merged trunk * Superfluous images include and added basic routes for shared ip groups * Simplifies and improves ldap schema * xenapi iscsi support + unittests * Fixed trunk and PEP8 cleanup * Merged trunk * Added reference in setup.py so that python setup.py test works now * merge lp:nova * better bin name, and pep8 * pep8 fixes * some pep8 fixes * removing xen/uml specific switches. If they need special treatment, we can add it * add license * delete xtra dir * move euca-get-ajax-console up one directory * merge trunk * move port range for ajaxterm to flag * more tweaks * add in license * some cleanup * rewrite proxy to not use twisted * added power state logging to nova.virt.xenapi.vm_utils * added suspend as a power state * last merge trunk before push * merge trunk, fixed unittests, added i18n strings, cleanups etc etc * And the common module * minor notes, commit before rewriting proxy with eventlet * There were a few unclaimed addresses in mailmap * first merge after i18n * remove some notes * Add Ryan Lane as well * added tests to ensure the easy api works as a backend for Compute API * fix commits from Anthony and Vish that were committed with the wrong email * remove some yields that snuck in * merge from trunk * Basic Easy API functionality * Fixes reboot (and rescue) to work even if libvirt doesn't know about the instance and the network doesn't exist * merged trunk * Fixes reboot (and rescue) to work even if libvirt doesn't know about the instance and the network doesn't exist * Adds a flag to use the X-Forwarded-For header to find the ip of the remote server. This is needed when you have multiple api servers with a load balancing proxy in front. It is a flag that defaults to False because if you don't have a sanitizing proxy in front, users could masquerade as other ips by passing in the header manually * Got basic xenstore operations working * Merged trunk * Modified InstanceDiagnostics and truncate action * removed extra files * merged trunk * Moves the ip allocation requests to the from the api host into calls to the network host made from the compute host * pep8 fix * merged trunk and fixed conflicts * Accidentally yanked the datetime line in auth * remove extra files that slipped in * merged trunk * add missing flag * Optimize creation of nwfilter rules so they aren't constantly being recreated * use libvirt python bindings instead of system call * fixed more conflicts * merged trunk again * add in support of openstack api * merge trunk and upgrade to cheetah templating * Optimize nwfilter creation and project filter * Merging trunk * fixed conflicts * Adding more comments regarding XS snapshots * working connection security * WSGI middleware for lockout after failed authentications of ec2 access key * Modifies nova-network to recreate important data on start * Puts the creation of nova iptables chains into the source code and cleans up rule creation. This makes nova play more nicely with other iptables rules that may be created on the host * Forgot the copyright info * i18n support for xs-snaps * Finished moving the middleware layers and fixed the API tests again * Zone scheduler added * Moved some things for testing * Merging trunk * Abstracted auth and ratelimiting more * Getting Snapshots to work with cloudservers command-line tool * merge trunk * Minor bug fix * Populate user_data field from run-instances call parameter, default to empty string to avoid metadata base64 decoding failure, LP: #691598 * Adding myself and Antony Messerli to the Authors file * Fixes per-project vpns (cloudpipe) and adds manage commands and support for certificate revocation * merge trunk * merge antonymesserli's changes, fixed some formatting, and added copyright notice * merged i8n and fixed conflicts * Added networking protections readme * Moved xenapi into xenserver specific directory * after trunk merge * Fixes documentation builds for gettext.. * committing so that I can merge trunk changes * Log all XenAPI actions to InstanceActions * Merged trunk * merging trunk * merging trunk * Fix doc building endpoint for gettext * All merged with trunk and let's see if a new merge prop (with no pre-req) works. * Problem was with a missplaced parentheses. ugh * Adding me in the Authors file * Populate user_data field from run-instances call parameter, default to empty string to avoid metadata base64 decoding failure, LP: #691598 * connecting ajax proxy to rabbit to allow token based security * remove a debugging line * a few more fixes after merge with trunk * merging in trunk * move prototype code from api into compute worker * Burnin support by specifying a specific host via availability_zone for running instances and volumes on * Merged trunk * This stops the nova-network dhcp ip from being added to all of the compute hosts * prototype works with kvm. now moving call from api to compute * Style correction * fix reboot command to work even if a host is rebooted * Filter templates and dom0 from list_instances() * removed unused import and fix docstring * merge fakerabbit fix and turn fake back on for cloud unit tests * Reworked fakerabbit backend so each connection has it's own. Moved queues and exchanges to be globals * PEP8 cleanup * Refactored duplicate rpc.cast() calls in nova/compute/api.py. Cleaned up some formatting issues * Log all XenAPI actions * correct xenapi resume call * activate fake rabbit for debugging * change virtualization to not get network through project * update db/api.py as well * don't allocate networks when getting vpn info * Added InstanceDiagnostics and InstanceActions DB models * PEP8 cleanup * Merged trunk * merge trunk * 1) Merged from trunk 2) 'type' parameter in VMHelper.fetch_image converted in enum 3) Fixed pep8 errors 4) Passed unit tests * Remove ec2 config chain and move openstack versions to top-level application * Use paste.deploy for running the api server * pep8 and removed extra imports * add missing greenthread import * add a few extra joined objects to get instance * remove extra print statements * Tests pass after cleaning up allocation process * Merging trunk * Typo fix, stubbing out to use admin project for now * Close devnull filehandle * added suspend and resume * Rewrite of vif_rules.py to meet coding standards and be more pythonic in general. Use absolute paths for iptables/ebtables/arptables in host-rules * Add raw disk image support * Add my @linux2go.dk address to .mailmap * fixed some pep8 business * directly copy ip allocation into compute * Minor spellchecking fixes * Adds support for Pause and Unpause of xenserver instances * Make column names more generic * don't add the ip to bridge on compute hosts * PEP8 fixups * Added InstanceActions DB model * initial commit of xenserver host protections * Merged trunk * Fixed pep8 errors * Integrated changes from Soren (raw-disk-images). Updated authors file. All tests passed * pep8 (again again) * pep8 (again) * small clean up * ăƒ†ă‚¹ăƒˆă‚³ăƒ¼ăƒ‰ă‚’ăƒ¬ăƒă‚¸ăƒˆăƒªă«è¿½å  nova.compute.manager.pre_live_migration()ă«ă¤ă„ă¦ă€ç•°å¸¸çµ‚了ă—ă¦ă„ă‚‹ă®ă«æ­£å¸¸çµ‚äº†ă®æˆ»ă‚å€¤ă‚’è¿”ă™ă“ă¨ăŒă‚ă£ăŸăŸă‚変更 - æ­£å¸¸çµ‚äº†ă®æˆ»ă‚å€¤ă‚’Trueă«å¤‰æ›´ - fixed_ipăŒè¦‹ă¤ă‹ă‚‰ăªă„ă¨ăă«ă¯RemoteErroră‚’raiseă™ă‚‹ - ăă‚Œă«åˆă‚ă›ă¦nova.compute.manager.live_migrationă‚‚å¤‰æ›´ * ăƒ†ă‚¹ăƒˆă‚³ăƒ¼ăƒ‰ă‚’ăƒ¬ăƒă‚¸ăƒˆăƒªă«è¿½å  nova.compute.manager.pre_live_migration()ă«ă¤ă„ă¦ă€ç•°å¸¸çµ‚了ă—ă¦ă„ă‚‹ă®ă«æ­£å¸¸çµ‚äº†ă®æˆ»ă‚å€¤ă‚’è¿”ă™ă“ă¨ăŒă‚ă£ăŸăŸă‚変更 - æ­£å¸¸çµ‚äº†ă®æˆ»ă‚å€¤ă‚’Trueă«å¤‰æ›´ - fixed_ipăŒè¦‹ă¤ă‹ă‚‰ăªă„ă¨ăă«ă¯RemoteErroră‚’raiseă™ă‚‹ - ăă‚Œă«åˆă‚ă›ă¦nova.compute.manager.live_migrationă‚‚å¤‰æ›´ * Support proxying api by using X-Forwarded-For * eventlet merge updates * Cleaned up TODOs, using flags now * merge trunk and minor fix(for whatever reason validator_unittest did not get removed from run_test.py) * fixed unittests and further clean-up post-eventlet merge * All API tests finally pass * Removing unneeded Trial specific code * A few more tweaks to get the OS API tests passing * Adding new install script plus changes to multinode install doc * Removing unneeded Trial specific code * Replaced the use of redis in fakeldap with a customized dict class. Auth unittests should now run fine without a redis server running, or without python-redis installed * Adding Ed Leafe to Authors file * Some tweaks * Adding in Ed Leafe so we can land his remove-redis test branch * Add wait_for_vhd_coalesce * Some typo fixes * pep8 cleanup * Fixed some old code that was merged incorrectly * Replaced redis with a modified dict class * bug fixes * first revision after eventlet merge. Currently xenapi-unittests are broken, but everything else seems to be running okay * Integrated eventlet_merge patch * Code reviewed * XenAPI Snapshots first cut * Fixed network test (thanks Vish!) and fixed run_tests.sh * First pass at converting run_tests.py to nosetests. The network and objctstore tests don't yet work. Also, we need to manually remove the sqlite file between runs * remerged for pep8 * pep8 * merged in project-vpns to get flag changes * clean up use of iptables chains * move some flags around * add conditional bind to linux net * make sure all network data is recreated when nova-network is rebooted * merged trunk * merged trunk, fixed conflicts and tests * Added Instance Diagnostics DB model * Put flags back in nova.virt.xenapi/vm_utils * Removed unnecessary blank lines * Put flags back in vm_utils * This branch removes most of the dependencies on twisted and moves towards the plan described by https://blueprints.launchpad.net/nova/+spec/unified-service-architecture * pep8 fixes for bin * PEP8 cleanups * use getent, update docstring * pep8 fixes * reviewed the FIXMEs, and spotted an uncaught exception in volume_utils...yay! * fixed a couple of more syntax errors * Moved implementation specific stuff from the middleware into their respective modules * typo * fixed up openstack api images index and detail * fake session clean-up * Removed FakeInstance and introduced stubout for DB. Code clean-up * removed extra stuff used for debugging * Restore code which was changed for testing reasons to the original state. Kudos to Armando for spotting this * Make nova work even when user has LANG or LC_ALL configured * Merged changes from trunk into the branch * Hostăƒ†ăƒ¼ăƒ–ăƒ«ă®ă‚«ăƒ©ăƒ åă‚’ä¿®æ­£ FlatManager, FlatDHCPManageră«å¯¾å¿œ * merged with trunk. fixed compute.pause test * fixup after merge with trunk * memcached requires strings not unicode * Fix 688220 Added dependency on Twisted>=10.1.0 to pip-requires * Make sure we properly close the bzr WorkingTree in our Authors up-to-datedness unit test * fixes for xenapi (thanks sandywalsh) * clean up tests and add overriden time method to utils * merged from upstream * add missing import * Adding back in openssh-lpk schema, as keys will likely be stored in LDAP again * basic conversion of xs-pause to eventlet done * brougth clean-up from unittests branch and tests * I made pep8 happy * * code cleanup * revised unittest approach * added stubout and a number of tests * clean up code to use timeout instead of two keys * final cleanup * Restore alphabetical order in Authors file * removed temporary comment lines * Lots of PEP-8 work * refresh_security_group renamed to refresh_security_group_rules * added volume tests and extended fake to support them * Make sure the new, consolidated template gets included * Make sure we unlock the bzr tree again in the authors unit test * The ppa was moved. This updates nova.sh to reflect that * merged upstream * remove some logging * Merged from trunk and fixed merge issues. Also fixed pep8 issues * Lockout middleware for ec2 api * updates per review * Initial work on i18n. This adds the installation of the nova domain in gettext to all the "endpoints", which are all the bin/* files and run_tests.py * For some reason, I forgot to commit the other endpoints.. * Remove default_{kernel,ramdisk} flags. They are not used anymore * Don't attempt to fiddle with partitions for whole-disk-images * pep8 * Includes architecture on register. Additionally removes a couple lines of cruft * nothing * nothing * nothing * support for pv guests (in progress) * merge trunk * Now that we have a templating engine, let's use it. Consolidate all the libvirt templates into one, extending the unit tests to make sure I didn't mess up * first cut of unittest framework for xenapi * Added my contacts to Authors file * final cleanup, after moving unittest work into another branch * fixup after merge with trunk * added callback param to fake_conn * added not implemented stubs for libvirt * merge with trey tests * Fixed power state update with Twisted callback * simplified version using original logic * moving xenapi unittests changes into another branch * Adds support to the ec2 api for filtering describe volumes by volume_ids * Added LiveCD info as well as some changes to reflect consolidation of .conf files * Fix exception throwing with wrong instance type * Add myself * removing imports that should have not been there * second round for unit testing framework * Added Twisted version dependency into pip-requires * only needs work for distinguishing pv from hvm * Move security group refresh logic into ComputeAPI * Refactored smoketests to use novarc environment and to separate user and admin specific tests * Changed OpenStack API auth layer to inject a RequestContext rather than building one everywhere we need it * Elaborate a bit on ipsets comment * Final round of marking translation strings * First round of i18n-ifying strings in Nova * Initial i18n commit for endpoints. All endpoints must install gettext, which injects the _ function into the builtins * Fixed spelling errors in index.rst * fix pep8 * Includes kernel and ramdisk on register. Additinally removes a couple lines of cruft * port new patches * merge-a-tat-tat upstream to this branch * Format fixes and modification of Vish's email address * There is always the odd change that one forgets! * * pylint fixes * code clean-up * first cut for xenapi unit tests * added pause and unpause to fake connection * merged changes from sandy's branch * added unittest for pause * add back utils.default_flagflie * removed a few more references to twisted * formatting and naming cleanup * remove service and rename service_eventlet to service * get service unittests runnning again * whitespace fix * make nova binaries use eventlet * Converted the instance table to use a uuid instead of a auto_increment ID and a random internal_id. I had to use a String(32) column with hex and not a String(16) with bytes because SQLAlchemy doesn't like non-unicode strings going in for String types. We could try another type, but I didn't want a primary_key on blob types * remove debug messages * merge with trey * pause and unpause code/tests in place. To the point it stuffs request in the queue * import module and not classe directely as per Soren recommendation * Make XenServer VM diagnostics available through nova.virt.xenapi * Merged trunk * Added exception handling to get_rrd() * Changed OpenStack API auth layer to inject a RequestContext rather than building one everywhere we need it * changed resume to unpause * Import module instead of function * filter describe volumes by supplied ids. Includes unittest * merging sandy's branch * Make get_diagnostics async * raw instances can now be launched in xenapi (only as hvm at the moment) * pause from compute.manager <-> xenapi * Merged Armando's XenAPI fix * merge with trunk to pull in admin-api branch * Flag to define which operations are exposed in the OpenStack API, disabling all others * Fixed Authors conflict and re-merged with trunk * fixes exception throwing with wrong instance type * Ignore security group rules that reference foreign security groups * fixed how the XenAPI library is loaded * remove some unused files * port volume manager to eventlet also * intermediate commit to checkpoint progress * some pylint caught changes to compute * added to Authors * adds bzr to the list of dependencies in pip-require so that upon checkout using run_tests.sh succeeds * merge conflict * merged upstream changes * add bzr to the dev dependencies * Fixed docstrings * Merged trunk * Got get_diagnostics in working order * merged updates to trunk * merge trunk * typo fix * removing extraneous config ilnes * Finished cleaning up the openstack servers API, it no longer touches the database directly. Also cleaned up similar things in ec2 API and refactored a couple methods in nova.compute.api to accommodate this work * Pushed terminate instance and network manager/topic methods into network.compute.api * Merged trunk * Moved the reboot/rescue methods into nova.compute.api * PEP8 fixes * Setting the default schema version to the new schema * Adding support for choosing a schema version, so that users can more easily migrate from an old schema to the new schema * merged with trunk. All clear! * Removing novaProject from the schema. This change may look odd at first; here's how it works: * test commit * ă‚³ăƒ¡ăƒ³ăƒˆă‚’é™¤å» README.live_migration.txtă®ăƒ¬ăƒ“ăƒ¥ăƒ¼çµæœă‚’修正 * This change adds better support for LDAP integration with pre-existing LDAP infrastructures. A new configuration option has been added to specify the LDAP driver should only modify/add/delete attributes for user entries * More pep8 fixes to remove deprecated functions * pep8 fix * Clarifying previously commited exception message * Raising an exception if the user doesn't exist before trying to modify its attributes * Removing redundant check * Added livecd instructions plus fixed references to .conf files * pylint fixes * Initial diagnostics import -- needs testing and cleanup * Added a script to use OpenDJ as an LDAP server instead of OpenLDAP. Also modified nova.sh to add an USE_OPENDJ option, that will be checked when USE_LDAP is set * Reverting last change * a few more things ironed out * Make sure Authors check also works for pending merges (otherwise stuff can get merged that will make the next merge fail this check) * It looks like Soren fixed the author file, can I hit the commit button? * merge trunk * Make sure Authors check also works for pending merges (otherwise stuff can get merged that will make the next merge fail this check) * Add a helpful error message to nova-manage in case of NoMoreNetworks * Add Ryan Lucio to Authors * Adding myself to the authors list * Add Ryan Lucio to Authors * Addresses bug 677475 by changing the DB column for internal_id in the instances table to be unsigned * importing XenAPI module loaded late * Added docstring for get_instances * small fixes on Exception handling * first test commit * and yet another pylint fix * fixed pylint violations that slipped out from a previous check * * merged with lp:~armando-migliaccio/nova/xenapi-refactoring * fixed pylint score * complied with HACKING guidelines * addressed review comments, complied with HACKING guidelines * adding README.livemigration.txt * rev439ăƒ™ăƒ¼ă‚¹ă«ăƒ©ă‚¤ăƒ–ăƒă‚¤ă‚°ăƒ¬ăƒ¼ă‚·ăƒ§ăƒ³ă®æ©Ÿèƒ½ă‚’ăƒăƒ¼ă‚¸ ă“ă®ăƒăƒ¼ă‚¸ăƒ§ăƒ³ă¯EBSăªă—ă€CPUăƒ•ăƒ©ă‚°ă®ăƒă‚§ăƒƒă‚¯ăªă— * modified a few files * Fixed conflicts with gundlach's fixes * Remove dead test code * Add iptables based security groups implementation * Merged gundlach's fixes * Don't wrap HTTPAccepted in a fault. Correctly pass kwargs to update_instance * fixed import module in __init__.py * minor changes to docstrings * added interim solution for target discovery. Now info can either be passed via flags or discovered via iscsiadm. Long term solution is to add a few more fields to the db in the iscsi_target table with the necessary info and modify the iscsi driver to set them * merge with lp:~armando-migliaccio/nova/xenapi-refactoring * merge trunk * moved XenAPI namespace definition into xenapi/__init__.py * pylint and pep8 fixes * Decreased the maximum value for instance-id generation from uint32 to int32 to avoid truncation when being entered into the instance table. Reverted fix to make internal_id column a uint * Finished cleaning up the openstack servers API, it no longer touches the database directly. Also cleaned up similar things in ec2 API and refactored a couple methods in nova.compute.api to accomodate this work * Merged reboot-rescue into network-manager * Merged trunk * Fixes a missing step (nova-manage network create IP/nn n nn) in the single-node install guide * Tired of seeing various test files in bzr stat * Updated sqlalchemy model to make the internal_id column of the instances table as unsigned integer * * Removes unused schema * Removes MUST uid from novaUser * Changes isAdmin to isNovaAdmin * Adds two new configuration options: ** ldap_user_id_attribute, with a default of uid ** ldap_user_name_attribute, with a default of cn * ldapdriver.py has been modified to use these changes * Pushed terminate instance and network manager/topic methods into network.compute.api * Fix bugs that prevented OpenStack API from supporting server rename * pep8 * Use newfangled compute_api * Update tests to use proper id * Fixing single node install doc * Oops, update 'display_name', not 'name'. And un-extract-method * Correctly translate instance ids to internal_ids in some spots we neglected * Added test files to be ignored * Consolidated the start instance logic in the two API classes into a single method. This also cleans up a number of small discrepencies between the two * Moved reboot/rescue methods into nova.compute.api * Merged trunk and resolved conflicts. Again * Instances are assigned a display_name if one is not passed in -- and now, they're assigned a display_name even if None is explicitly passed in (as the EC2 API does.) * Merged trunk and resolved conflicts * Default Instance.display_name to a value even when None is explicitly passed in * Refactor nwfilter code somewhat. For iptables based firewalls, I still want to leave it to nwfilter to protect against arp, mac, and ip spoofing, so it needed a bit of a split * Add a helpful error message to nova-manage in case of NoMoreNetworks * minor refactoring after merge * merge lp:~armando-migliaccio/nova/refactoring * merge trunk * typo fix * moved flags into xenapi/novadeps.py * Add a simple abstraction for firewalls * fix nova.sh to reflect new location of ppa * Changed null_kernel flag from aki-00000000 to nokernel * Guarantee that the OpenStack API's Server-related responses will always contain a "name" value. And get rid of a redundant field in models.py * Going for a record commits per line changes ratio * Oops, internal_id isn't available until after a save. This code saves twice; if I moved it into the DB layer we could do it in one save. However, we're moving to one sqlite db per compute worker, so I'd rather have two saves in order to keep the logic in the right layer * Todd points out that the API doesn't require a display_name, so let's make a default. That way the OpenStack API can rest assured that its server responses will always have a name key * Adds in more documentation contributions from Citrix * Remove duplicate field and make OpenStack API return server.name for EC2-API-created instances * Move cc_host and cc_port flags into nova/network/linux_net.py. They weren't used anywhere else * Add include_package_data=True to setup.py * With utils.default_flagfile() in its old location, the flagfile isn't being read -- twistd.serve() loads flags earlier than that point. Move the utils.default_flagfile() call earlier so the flagfile is included * Removed a blank line * Broke parts of compute manager out into compute.api to separate what gets run on the API side vs the worker side * Move default_flagfile() call to where it will be parsed in time to load the flagfile * minor refactoring * Move cc_host and cc_port flags into nova/network/linux_net.py. They weren't used anywhere else * Added a script to use OpenDJ as an LDAP server instead of OpenLDAP. Also modified nova.sh to add an USE_OPENDJ option, that will be checked when USE_LDAP is set * Fixed termie's tiny bits from the prior merge request * Delete unused flag in nova.sh * Moving the openldap schema out of nova.sh into it's own files, and adding sun (opends/opendj/sun directory server/fedora ds) schema files * OpenStack API returns the wrong x-server-management-url. Fix that * Cleaned up pep8 errors * brought latest changes from trunk * iscsi volumes attach/detach complete. There is only one minor issue on how to discover targets from device_path * Fix unit tests * Fix DescribeImages EC2 API call * merged Justin Santa Barbara's raw-disk-image back into the latest trunk * If only I weren't so lazy * Rename imageSet variable to images * remove FAKE_subdomain reference * Return the correct server_management_url * Default flagfile moved in trunk recently. This updates nova.sh to run properly with the new flagfile location * Correctly handle imageId list passed to DescribeImages API call * update of nova.sh because default flagfile moved * merged trunk * Add a templating mechanism in the flag parsing * Adjust state_path default setting so that api unit tests find things where they used to find them * Import string instead of importing Template from string. This is how we do things * brought the xenapi refactoring in plus trunk changes * changes * pep8 fixes and further round of refactoring * Rename cloudServersFault to computeFault -- I missed this Rackspace branding when we renamed nova.api.rackspace to nova.api.openstack * Make sure templated flags work across calls to ParseNewFlags * Add include_package_data=True to setup.py * fixed deps * first cut of the refactoring of the XenAPIConnection class. Currently the class merged both the code for managing the XenAPI connection and the business logic for implementing Nova operations. If left like this, it would eventually become difficult to read, maintain and extend. The file was getting kind of big and cluttered, so a quick refactoring now will save a lot of headaches later * other round of refactoring * further refactoring * typos and pep8 fixes * first cut of the refactoring of the XenAPIConnection class. Currently the class merged both the code for managing the XenAPI connection and the business logic for implementing Nova operations. If left like this, it would eventually become difficult to read, maintain and extend. The file was getting kind of big and cluttered, so a quick refactoring now will save a lot of headaches later * PEP fixes * Adding support for modification only of user accounts * This modification should have occured in a different branch. Reverting * added attach_volume implementation * work on attach_volume, with a few things to iron out * A few more changes: * Fixed up some flags * Put in an updated nova.sh * Broke out metadata forwarding so it will work in flatdhcp mode * Added descriptive docstrings explaining the networking modes in more detail * small conflict resolution * first cut of changes for the attach_volume call * The image server should throw not found errors, don't need to check in compute manager * Consolidated the start instance logic in the two API classes into a single method. This also cleans up a number of small discrepencies between the two * Setting "name" back to "cn", since id and name should be separate * Adding support for modification only of user accounts * don't error on edge case where vpn has been launched but fails to get a network * Make sure all workers look for their flagfile in the same spot * Fix typo "nova.util" -> "nova.utils" * Fix typo "nova.util" -> "nova.utils" * Added a .mailmap that maps addresses in bzr to people's real, preferred e-mail addresses. (I made a few guesses along the way, feel free to adjust according to what is actually the preferred e-mail) * Add a placeholder in doc/build. Although bzr handles empty directories just fine, setuptools does not, so to actually ship this directory in the tarball, we need a file in it * Add a placeholder in doc/build. Although bzr handles empty directories just fine, setuptools does not, so to actually ship this directory in the tarball, we need a file in it * Merged trunk * pep8 * merged trunk, added recent nova.sh * fix typos in docstring * docstrings, more flags, breakout of metadata forwarding * doc/build was recently accidentally removed from VCS. This adds it back, which makes the docs build again * Add doc/build dir back to bzr * Make aws_access_key_id and aws_secret_access_key configurable * add vpn ping and optimize vpn list * Add an alias for Armando * the serial returned by x509 is already formatted in hex * Adding developer documentation - setting up dev environment and how to add to the OpenStack API * Add a --logdir flag that will be prepended to the logfile setting. This makes it easier to share a flagfile between multiple workers while still having separate log files * Address pep8 complaints * Address PEP8 complaints * Remove FAKE_subdomain from docs * Adding more polish * Adding developer howtos * Remove FAKE_subdomain from docs * Make aws_access_key_id and aws_secret_access_key configurable * updated nova.sh * added flat_interface for flat_dhcp binding * changed bridge_dev to vlan_interface * Add a --logdir flag that will be prepended to the logfile setting. This makes it easier to share a flagfile between multiple workers while still having separate log files * added svg files (state.svg is missing because its source is a screen snapshot) * Unify the location of the default flagfile. Not all workers called utils.default_flagfile, and nova-manage explicitly said to use the one in /etc/nova/nova-manage.conf * Set and use AMQP retry interval and max retry FLAGS * Incorporating security groups info * Rename cloudServersFault (rackspace branding) to computeFault. Fixes bug lp680285 * Use FLAGS instead of constants * Incorporating more networking info * Make time.sleep() non-blocking * Removed unnecessary continue * Update Authors and add a couple of names to .mailmap (from people who failed to set bzr whoami properly) * Refactor AMQP retry loop * Allows user to specify hosts to listen on for nova-api and -objectstore * Make sure all the libvirt templates are included in the tarball (by replacing the explicitly listed set with a glob pattern) * fixed pep8 violations * Set and use AMQP retry interval and max retry constants * pep8 violations fix * added placeholders * added test for invalid handles * Make sure all templates are included (at least rescue tempaltes didn't used to be included) * Check for running AMQP instances * Use logging.exception instead * Reverted some changes * Added some comments * Adds images (only links one in), start for a nova-manage man file, and also documents all nova-manage commands. Can we merge it in even though the man page build isn't working? * Added some comments * Check for running AMQP instances * first cut of fixes for bug #676128 * Removed .DS_Store files everywhere, begone! * Moves the EC2 API S3 image service into nova.service. There is still work to be done to make the APIs align, but this is the first step * PEP8 fixes, 2 lines were too long * First step to getting the image APIs consolidated. The EC2 API was using a one-off S3 image service wrapper, but this should be moved into the nova.image space and use the same interface as the others. There are still some mismatches between the various image service implementations, but this patch was getting large and wanted to keep it within a resonable size * Improved Pylint Score * Fixes improper display of api error messages that happen to be unicode * Make sure that the response body is a string and not unicode * Soren updated setup.py so that the man page builds. Will continue working on man pages for nova-compute and nova-network * Overwrite build_sphinx, making it run once for each of the html and man builders * fixes flatdhcp, updates nova.sh, allows for empty bridge device * Update version to 2011.1 as that is the version we expect to release next * really adding images * adding images * Documenting all nova-manage commands * Documenting all nova-manage commands * Fixes eventlet race condition in cloud tests * fix greenthread race conditions in trunk and floating ip leakage * Testing man page build through conf.py * Improved Pylint Score * adjusting images size and bulleted list * merged with trunk * small edit * Further editing and added images * Update version to 2011.1 as that is the version we expect to release next * ec2_api commands for describe_addresses and associate_address are broken in trunk. This happened during the switch to ec2_id and internal_id. We clearly didn't have any unit tests for this, so I've added a couple in addition to the three line change to actually fix the bugs * delete floating ips after tests * remove extra line and ref. to LOG that doesn't exist * fix leaking floating ip from network unittests and use of fakeldap driver * Adds nova-debug to tools directory, for debugging of instances that lose networking * fixes errors in describe address and associate address. Adds test cases * Ryan_Lane's code to handle /etc/network not existing when we try to inject /etc/network/interfaces into an image * pep8 * First dump of content related to Nova RPC and RabbitMQ * Add docstrings to any methods I touch * pep8 * PEP8 fixes * added myself to Authors file. Enjoy spiders * Changed from fine-grained operation control to binary admin on/off setting * Changed from fine-grained operation control to binary admin on/off setting * Lots of documentation and docstring updates * The docs are just going to be wrong for now. I'll file a bug upstream * Change how wsgified doc wrapping happens to fix test * merge to trunk * pep8 * Adding contributors and names * merge with trunk * base commit * saw a duplicate import ... statement in the code while reading through unit tests - this removes the dupe * removed redundant unit test import * add in bzr link * adding a bit more networking documentation * remove tab * fix title * tweak * Fix heading * merge in anne's changes * tweak * Just a few more edits, misspellings and the like * fix spacing to enable block * merge to remote * unify env syntax * Add sample puppet scripts * fix install guide * getting started * create SPHINX_DEBUG env var. Setting this will disable aggressive autodoc generation. Also provide some sample for P syntax * fix conf file from earlier merge * notes, and add code to enable sorted "..todo:: P[1-5] xyz" syntax * merge in more networking docs - still a work in progress * anne's changes to the networking documentation * Updated Networking doc * anne gentle's changes to community page * merge in heckj's corrections to multi-node install * Added a .mailmap that maps addresses in bzr to people's real, preferred e-mail addresses. (I made a few guesses along the way, feel free to adjust according to what is actually the preferred e-mail) * Updated community.rst to fix a link to the IRC logs * merging in changes from ~anso/nova/trunkdoc * fixed another spacing typo causing poor rendering * fixed spacing typo causing poor rendering * merge in anne's work * add docs for ubuntu 4, 10, others * Updated Cloud101 and admonition color * merge heckj's multi install notes * working on single node install * updating install notes to reference Vish' nova.sh and installing in MYSQL * Add Flat mode doc * Add Flat mode doc * Add Flat mode doc * Add VLAN Mode doc * Add VLAN Mode doc * merge in anne's changes * home page tweaks * Updated CSS and community.rst file * modifications and additions based on doc sprint * incorporate some feedback from todd and anne * merge in trunk * working on novadoc structure * add some info on authentication and keys * Since we're autodocumenting from a sphinx ext, we can scrap it in Makefile * Use the autodoc tools in the setup.py build_sphinx toolchain * Fix include paths so setup.py build_sphinx works again * Cleanups to doc process * quieter doc building (less warnings) * File moves from "merge" of termie's branch * back out stacked merge * Doc updates: * quieter build (fewer warnings) * move api reference out of root directory * auto glob api reference into a TOC * remove old dev entries for new-fangled auto-generated docs * Normalization of Dev reference docs * Switch to module-per-file for the module index * Allow case-by-case overriding of autodocs * add exec flags, apparently bzr shelve/unshelve does not keep track of them * Build autodocs for all our libraries * add dmz to flags and change a couple defaults * Per-project vpns, certificates, and revocation * remove finished todo * Fix docstrings for wsigfied methods * fix default twitter username * shrink tweet text a bit * Document nova.sh environment * add twitter feed to the home page * Community contact info * small tweaks before context switch * use include to grab todd's quickstart * add in custom todo, and custom css * Format TODO items for sphinx todo extension * additions to home page * Change order of secions so puppeting is last, add more initial setup tasks * update types of services that may run on machines * Change directory structure for great justice! * Refactored smoketests to use novarc environment and to separate user and admin specific tests * start adding info to multi-node admin guide * document purpose of documentation * Getting Started Guide * Nova quickstart: move vish's novascript into contrib, and convert reademe.md to a quickstart.rst * merge trunk * Add a templating mechanism in the flag parsing. Add a state_path flag that will be used as the top-level dir for all other state (such as images, instances, buckets, networks, etc). This way you only need to change one flag to put all your state in e.g. /var/lib/nova * add missing file * Cleanup nova-manage section * have "contents" look the same as other headings * Enables the exclusive flag for DirectConsumer queues * Ensures that keys for context from the queue are passed to the context constructor as strings. This prevents hangs on older versions of python that can't handle unicode kwargs * Fix for bug #640400, enables the exclusive flag on the temporary queues * pep8 whitespace and line length fixes * make sure context keys are not unicode so they can be passed as kwargs * merged trunk * merged source * prettier theme * Added an extra argument to the objectstore listen to separate out the listening host from the connecting host * Change socket type in nova.utils.get_my_ip() to SOCK_DGRAM. This way, we don't actually have to set up a connection. Also, change the destination host to an IP (chose one of Google's DNS's at random) rather than a hostname, so we avoid doing a DNS lookup * Fix for bug#613264, allowing hosts to be specified for nova-api and objectstore listeners * Fixes issue with security groups not being associated with instances * Doc cleanups * Fix flags help display * Change socket type in nova.utils.get_my_ip() to SOCK_DGRAM. This way, we don't actually have to set up a connection. Also, change the destination host to an IP (chose one of Google's DNS's at random) rather than a hostname, so we avoid doing a DNS lookup * ISCSI Volume support * merged * more descriptive title for cloudpipe * update of the architecture and fix some links * Fixes after trunk merge * removed some old instructions and updated concepts * merge * Documentation on Services, Managers, and Drivers * Document final undocumented python modules * merged trunk * cloudpipe docs * Fixed --help display for non-twisted bin/* commands * Adds support for multiple API ports, one for each API type (OS, EC2) * Fixed tests to work with new default API argument * Added support for OpenStack and EC2 APIs to run on different ports * More docs * Language change for conformity * Add ec2 api docs * Exceptions docs * API endpoint documentation * basics to get proxied ajaxterm working with virsh * :noindex: on the fakes page for virt.fakes which is included in compute.rst * Virt documentation * Change retrieval of security groups from kwargs so they are associated properly and add test to verify * don't check for vgroup in fake mode * merged trunk, just in case * Update compute/disk.py docs * Change volume TODO list * Volume documentation * Remove fakes duplication * Update database docs * Add support for google analytics to only the hudson-produced docs * Changes to conf.py * Updated location of layout.html and change conf.py to use a build variable * Update database page a bit * Fakes cleanup (stop duplicate autodoc of FakeAOEDriver) * Document Fakes * Remove "nova Packages and Dependencies" * Finished TODO item * Pep-257 * Pep-257 cleanups * Clean up todos and the like for docs * A shell script for showing modules that aren't documented in .rst files * merge trunkdoc * link binaries section to concepts * :func: links to python functions in the documentation * Todo cleanups in docs * cleanup todos * fix title levels * wip architecture, a few auth formatting fixes, binaries, and overview * volume cleanups * Remove objectstore, not referenced anywhere * Clean up volumes / storage info * Moves db writes into compute manager class. Cleans up sqlalchemy model/api to remove redundant calls for updating what is really a dict * Another heading was too distracting, use instead * Fix underlining -> heading in rst file * Whitespace and docstring cleanups * Remove outdated endpoint documentation * Clean up indentation error by preformatting * Add missing rst file * clean up the compute documentation a bit * Remove unused updated_data variable * Fix wiki link * added nova-manage docs * merged and fixed conflicts * updates to auth, concepts, and network, fix of docstring * cleanup rrd doc generation * Doc skeleton from collaborative etherpad hack session * OK, let's try this one more time * Doc updates * updates from review, fix models.get and note about exception raising * Style cleanups and review from Eric * New structure for documentation * Fixes PEP8 violations from the last few merges * More PEP8 fixes that were introduced in the last couple commits * Adding Google Analytics code to nova.openstack.org * Fixes service unit tests after tornado excision * Added Google Analytics code * renamed target_id to iscsi_target * merged gundlach's excision * Oops, didn't mean to check this one in. Ninja-patch * Delete BaseTestCase and with it the last reference to tornado * fix completely broken ServiceTestCase * Removes some cruft from sqlalchemy/models.py like unused imports and the unused str_id method * Adds rescue and unrescue commands * actually remove the conditional * fix tests by removing missed reference to prefix and unnecessary conditional in generate_uid * Making net injection create /etc/network if non-existant * Documentation was missing; added * Moving the openldap schema out of nova.sh into it's own files, and adding sun (opends/opendj/sun directory server/fedora ds) schema files * validates device parameter for attach-volume * add nova-debug to setup.py * nova-debug, relaunch an instance with a serial console * Remove the last vestigial bits of tornado code still in use * pep8 cleanup * print the exception on fail, because it doesn't seem to reraise it * use libvirt connection for attaching disks and avoid the symlink * update error message * Exceptions in the OpenStack API will be converted to Faults as they should be, rather than barfing a stack trace to the user * pep8 * pep8 * Duplicate the two trivial escaping functions remaining from tornado's code and remove the dependency * more bugfixes, flag for local volumes * fix bugs, describe volumes, detach on terminate * ISCSI Volume support * Removed unused imports and left over references to str_id * logging.warn not raise logging.Warn * whitespace * move create_console to cloud.py from admin.py * merge lp:nova * add NotFound to fake.py and document it * add in the xen rescue template * pep 8 cleanup and typo in resize * add methods to cloud for rescue and unrescue * update tests * merged trunk and fixed conflicts/changes * part way through porting the codebase off of twisted * Another pep8 cleanup branch for nova/tests, should be merged after lp:~eday/nova/pep8-fixes-other. After this, the pep8 violation count is 0! * Changes block size for dd to a reasonable number * Another pep8 cleanup branch for nova/api, should be merged after lp:~eday/nova/pep8-fixes * Created Authors file * Actually adding Authors file * Created Authors file and added to manifest for Austin Release * speed up disk generation by increasing block size * PEP8 cleanup in nova/tests, except for tests. There should be no functional changes here, just style changes to get violations down * PEP8 cleanup in nova/*, except for tests. There should be no functional changes here, just style changes to get violations down * PEP8 cleanup in nova/db. There should be no functional changes here, just style changes to get violations down * PEP8 cleanup in nova/api. There should be no functional changes here, just style changes to get violations down * PEP8 and pylint cleanup. There should be no functional changes here, just style changes to get violations down * Moves db writes into compute manager class. Cleans up sqlalchemy model/api to remove redundant calls for updating what is really a dict * validate device in AttachDisk * Cleanup of doc for dependencies (redis optional, remove tornado, etc). Please check for accuracy * Delays the creation of the looping calls that that check the queue until startService is called * Made updates based on review comments * Authorize image access instead of just blindly giving it away * Checks the pid of dnsmasq to make sure it is actually referring to the right process * change boto version from 1.9b1 to 1.9b in pip-requires * Check the pid to make sure it refers to the correct dnsmasq process * make sure looping calls are created after service starts and add some tests to verify service delegation works * fix typo in boto line of pip-requires * Updated documentation * Update version set in setup.py to 2010.1 in preparation for Austin release * Also update version in docs * Update version to 2010.1 in preparation for Austin release * * Fills out the Parallax/Glance API calls for update/create/delete and adds unit tests for them. * Modifies the ImageController and GlanceImageService/LocalImageService calls to use index and detail routes to comply perfectly with the RS/OpenStack API * Makes disk.partition resize root drive to 10G, unless it is m1.tiny which just leaves it as is. Larger images are just used as is * reverted python-boto version in pip-requires to 1.9b1 * Construct exception instead of raising a class * Authorize Image before download * Add unit test for XML requests converting errors to Faults * Fixes https://bugs.launchpad.net/nova/+bug/663551 by catching exceptions at the top level of the API and turning them into Faults * Adds reasonable default local storage gb to instance sizes * reverted python-boto version in pip-requires to 1.9b1.\ * Fix typo in test case * Remember to call limited() on detail() in image controller * Makes nova-dhcpbridge notify nova-network on old network lease updates * add reasonable gb to instance types * it is flags.DEFINE_integer, not FLAGS.define_int * Makes disk.partition resize root drive to 10G, unless it is m1.tiny which just leaves it as is. Larger images are just used as is * update leases on old leases as well * Adds a simple nova-manage command called scrub to deallocate the network and remove security groups for a projeect * Refresh MANIFEST.in to make the tarball include all the stuff that belongs in the tarball * Added test case to reproduce bug #660668 and provided a fix by using the user_id from the auth layer instead of the username header * Add the last few things to MANIFEST.in * Also add Xen template to manifest * Fix two problems with get_console_log: * libvirt has this annoying "feature" where it chown()s your console to the uid running libvirt. That gets in the way of reading it. Add a call to "sudo chown ...." right before we read it to make sure it works out well. * We were looking in the wrong directory for console.log. *blush* * This branch converts incoming data to the api into the proper type * Fixes deprecated use of context in nova-manage network create * Add a bunch of stuff to MANIFEST.in that has been added to the tree over the last couple of months * Fix the --help flag for printing help on twistd-based services * Fix two problems with get_console_log: libvirt has this annoying "feature" where it chown()s your console to the uid running libvirt. That gets in the way of reading it. We were looking in the wrong directory for console.log. *blush* * Fix for bug 660818 by adding the resource ID argument * Reorg the image services code to push glance stuff into its own directory * Fix some unit tests: * One is a race due to the polling nature of rpc in eventlet based unit tests. * The other is a more real problem. It was caused by datastore.py being removed. It wasn't caught earlier because the .pyc file was still around on the tarmac box * Add a greenthread.sleep(0.3) in get_console_output unit test. This is needed because, for eventlet based unit tests, rpc polls, and there's a bit of a race. We need to fix this properly later on * Perform a redisectomy on bin/nova-dhcpbridge * Removed 'and True' oddity * use context for create_networks * Make Redis completely optional: * make --help work for twistd-based services * trivial style change * prevent leakage of FLAGS changes across tests * run_tests.sh presents a prompt: * Also accept 'y' * A few more fixes for deprecations * make run_tests.sh's default perform as expected * Added test case to reproduce bug #660668 and provided a fix by using the user_id from the auth layer instead of the username header * get flags for nova-manage and fix a couple more deprecations * Fix for bug#660818, allows tests to pass since delete expects a resource ID * This branch modifies the fixes all of the deprecation warnings about empty context. It does this by adding the following fixes/features * promotes api/context.py to context.py because it is used by the whole system * adds more information to the context object * passes the context through rpc * adds a helper method for promoting to admin context (elevate()) * modifies most checks to use context.project_id instead of context.project.id to avoid trips to the database * timestamps are passed as unicode * Removed stray spaces that were causing an unnecessary diff line * merged trunk * Minimized diff, fixed formatting * remove nonexistent exception * Merged with trunk, fixed broken stuff * revert to generic exceptions * fix indent * Fixes LP Bug#660095 * Move Redis code into fakeldap, since it's the only thing that still uses it. Adjust auth unittests to skip fakeldap tests if Redis isn't around. Adjust auth unittests to actually run the fakeldap tests if Redis /is/ around * fix nosetests * Fixes a few concurrency issues with creating volumes and instances. Most importantly it adds retries to a number of the volume shell commands and it adds a unique constraint on export_devices and a safe create so that there aren't multiple copies of export devices in the database * unit tests and fix * call stuff project_id instead of project * review fixes * fix context in bin files * add scrub command to clean up networks and sec groups * merged trunk * merged concurrency * review comments * Added a unit test but not integrated it * merged trunk * fix remaining tests * cleaned up most of the issues * remove accidental paste * use context.project_id because it is more efficient * elevate in proper places, fix a couple of typos * merged trunk * Fixes bug 660115 * Address cerberus's comment * Fix several problems keeping AuthMiddleware from functioning in the OpenStack API * Implement the REST calls for create/update/delete in Glance * Adds unit test for WSGI image controller for OpenStack API using Glance Service * Fixes LP Bug#660095 * Xen support * Adds flat networking + dhcpserver mode * This patch removes the ugly network_index that is used by VlanManager and turns network itself into a pool. It adds support for creating the networks through an api command: nova-manage network create # creates all of the networks defined by flags or nova-manage network create 5 # create the first five networks * Newlines again, reorder imports * Remove extraneous newlines * Fix typo, fix import * merged upstream * cleanup leftover addresses * super teardown * fix tests * merged trunk * merged trunk * merged trunk * merged trunk * Revert the conversion to 64-bit ints stored in a PickleType column, because PickleType is incompatible with having a unique constraint * Revert 64 bit storage and use 32 bit again. I didn't notice that we verify that randomly created uids don't already exist in the DB, so the chance of collision isn't really an issue until we get to tens of thousands of machines. Even then we should only expect a few retries before finding a free ID * Add design doc, docstrings, document hyper-v wmi, python wmi usage. Adhere to pep-8 more closely * This patch adds support for EC2 security groups using libvirt's nwfilter mechanism, which in turn uses iptables and ebtables on the individual compute nodes. This has a number of benefits: * Inter-VM network traffic can take the fastest route through the network without our having to worry about getting it through a central firewall. * Not relying on a central firewall also removes a potential SPOF. * The filtering load is distributed, offering great scalability * Change internal_id from a 32 bit int to a 64 bit int * 32 bit internal_ids become 64 bit. Since there is no 64 bit native type in SqlAlchemy, we use PickleType which uses the Binary SqlAlchemy type under the hood * Make Instance.name a string again instead of an integer * Now that the ec2 id is not the same as the name of the instance, don't compare internal_id [nee ec2_id] to instance names provided by the virtualization driver. Compare names directly instead * Fix bug 659330 * Catch exception.NotFound when getting project VPN data * Improve the virt unit tests * Remove spurious project_id addition to KeyPair model * APIRequestContext.admin is no more. * Rename ec2_id_list back to instance_id to conform to EC2 argument spec * Fix bug 657001 (rename all Rackspace references to OpenStack references) * Extracts the kernel and ramdisk id from manifests and puts in into images' metadata * Fix EC2 GetConsoleOutput method and add unit tests for it * Rename rsapi to osapi, and make the default subdomain for OpenStack API calls be 'api' instead of 'rs' * Fix bug 658444 * Adds --force option to run_tests.sh to clear virtualenv. Useful when dependencies change * If machine manifest includes a kernel and/or ramdisk id, include it in the image's metadata * Rename ec2 get_console_output's instance ID argument to 'instance_id'. It's passed as a kwarg, based on key in the http query, so it must be named this way * if using local copy (use_s3=false) we need to know where to find the image * curl not available on Windows for s3 download. also os-agnostic local copy * Register the Hyper-V module into the list of virt modules * hyper-v driver created * Twisted pidfile and other flag parameters simply do not function on Windows * Renames every instance of "rackspace" in the API and test code base. Also includes a minor patch for the API Servers controller to use images correctly in the absence of Glance * That's what I get for not using a good vimrc * Mass renaming * Start stripping out the translators * Remove redis dependency from RS Images API * Remove redis dependency from Images controller * Since FLAGS.images_path was not set for nova-compute, I could not launch instances due to an exception at _fetch_local_image() trying to access to it. I think that this is the reason of Bug655217 * Imported images_path from nova.objectstore for nova-compute. Without its setting, it fails to launch instances by exception at _fetch_local_image * Defined images_path for nova-compute. Without its setting, it fails to launch instances by exception at _fetch_local_image * Cleans up a broken servers unit test * Huge sweeping changes * Adds stubs and tests for GlanceImageService and LocalImageService. Adds basic plumbing for ParallaxClient and TellerClient and hooks that into the GlanceImageService * Typo * Missed an ec2_id conversion to internal_id * Cleanup around the rackspace API for the ec2 to internal_id transition * merge prop fixes * A little more clean up * Replace model.Instance.ec2_id with an integer internal_id so that both APIs can represent the ID to external users * Fix clause comparing id to internal_id * Adds unit test for calling show() on a non-existing image. Changes return from real Parallax service per sirp's recommendation for actual returned dict() values * Remove debugging code, and move import to the top * Make (some) cloud unit tests run without a full-blown set up * Stub out ec2.images.list() for unit tests * Make rpc calls work in unit tests by adding extra declare_consumer and consume methods on the FakeRabbit backend * Add a connect_to_eventlet method * Un-twistedify get_console_ouptut * Create and destroy user appropriately. Remove security group related tests (since they haven't been merged yet) * Run the virt tests by default * Keep handles to loggers open after daemonizing * merged trunk and fixed tests * Cleans up the unit tests that are meant to be run with nosetests * Update Parallax default port number to match Glance * One last bad line * merge from gundlach ec2 conversion * Adds ParallaxClient and TellerClient plumbing for GlanceImageService. Adds stubs FakeParallaxClient and unit tests for LocalImageService and GlanceImageService * Fix broken unit tests * Matches changes in the database / model layer with corresponding fixes to nova.virt.xenapi * Replace the embarrasingly crude string based tests for to_xml with some more sensible ElementTree based stuff * A shiny, new Auth driver backed by SQLAlchemy. Read it and weep. I did * Move manager_class instantiation and db.service_* calls out of nova.service.Service.__init__ into a new nova.service.Service.startService method which gets called by twisted. This delays opening db connections (and thus sqlite file creation) until after privileges have been shed by twisted * Add pylint thingamajig for startService (name defined by Twisted) * Revert r312 * Add a context of None to the call to db.instance_get_all * Honour the --verbose flag by setting the logging level to DEBUG * Accidentally renamed volume related stuff * More clean up and conflict resolution * Move manager_class instantiation and db.service_* calls out of nova.service.Service.__init__ into a new nova.service.Service.startService method which gets called by twisted. This delays opening db connections (and thus sqlite file creation) until after privileges have been shed by twisted * Bug #653560: AttributeError in VlanManager.periodic_tasks * Bug #653534: NameError on session_get in sqlalchemy.api.service_update * Fixes to address the following issues: * s/APIRequestContext/get_admin_context/ <-- sudo for request contexts * Bug #654034: nova-manage doesn't honour --verbose flag * Bug #654025: nova-manage project zip and nova-manage vpn list broken by change in DB semantics when networks are missing * Bug #654023: nova-manage vpn commands broken, resulting in erroneous "Wrong number of arguments supplied" message * fix typo in setup_compute_network * pack and unpack context * add missing to_dict * Bug #653651: XenAPI support completely broken by orm-refactor merge * Bug #653560: AttributeError in VlanManager.periodic_tasks * Bug #653534: NameError on session_get in sqlalchemy.api.service_update * Adjust db api usage according to recent refactoring * Make _dhcp_file ensure the existence of the directory containing the files it returns * Keep handles to loggers open after daemonizing * Adds BaseImageService and flag to control image service loading. Adds unit test for local image service * Cleans up the unit tests that are meant to be run with nosetests * Refactor sqlalchemy api to perform contextual authorization * automatically convert strings passed into the api into their respective original values * Fix the deprecation warnings for passing no context * Address a few comments from Todd * Merged trunk * Locked down fixed ips and improved network tests * merged remove-network-index * Fixed flat network manager with network index gone * merged trunk * show project ids for groups instead of user ids * create a new manager for flat networking including dhcp * First attempt at a uuid generator -- but we've lost a 'topic' input so i don't know what that did * Find other places in the code that used ec2_id or get_instance_by_ec2_id and use internal_id as appropriate * Convert EC2 cloud.py from assuming that EC2 IDs are stored directly in the database, to assuming that EC2 IDs should be converted to internal IDs * Method cleanup and fixing the servers tests * merged trunk, removed extra quotas * Adds support for periodic_tasks on manager that are regularly called by the service and recovers fixed_ips that didn't get disassociated properly * Replace database instance 'ec2_id' with 'internal_id' throughout the nova.db package. internal_id is now an integer -- we need to figure out how to make this a bigint or something * merged trunk * refactoring * refactoring * Includes changes for creating instances via the Rackspace API. Utilizes much of the existing EC2 functionality to power the Rackspace side of things, at least for now * Get rid of mention of mongo, since we are using openstack/swift * Mongo bad, swift good * Add a DB backend for auth manager * Bug #652103: NameError in exception handler in sqlalchemy API layer * Bug #652103: NameError in exception handler in sqlalchemy API layer * Bug #651887: xenapi list_instances completely broken * Grabbed the wrong copyright info * Cleaned up db/api.py * Refactored APIRequestContext * Bug #651887: xenapi list_instances completely broken * Simplified authorization with decorators" " * Removed deprecated bits from NovaBase * Wired up context auth for keypairs * Completed quota context auth * Finished context auth for network * Finished instance context auth * Finished instance context auth * Made network tests pass again * Whoops, forgot the exception handling bit * Missed a few attributes while mirroring the ec2 instance spin up * pylint and pep8 cleanup * Forgot the context module * Some minor cleanup * Servers stuff * merge rsapi_reboot from gundlach * Wired up context auth for services * Server creation up to, but not including, network configuration * Progress on volumes Fixed foreign keys to respect deleted flag * Support reboot in api.rackspace by extracting reboot function from api.ec2 into api.cloud * Make Fault raiseable, and add a test to verify that * Make Fault raiseable by inheriting from webob.exc.HTTPException * Related: https://code.launchpad.net/~anso/nova/authupdate/+merge/36925 * Remove debuggish print statement * Make update work correctly * Server update name and password * Support the pagination interface in RS API -- the &offset and &limit parameters are now recognized * Update from trunk to handle one-line merge conflict * Support fault notation in error messages in the RS API * Limit entity lists by &offset and &limit * After update from trunk, a few more exceptions that need to be converted to Faults * fix ordering of rules to actually allow out and drop in * fix the primary and secondary join * autocreate the models and use security_groups * Began wiring up context authorization * Apply patch from Vish to fix a hardcoded id in the unit tests * removed a few extra items * merged with soren's branch * fix loading to ignore deleted items * Add user-editable name & notes/description to volumes, instances, and images * merged trunk * patch for test * fix join and misnamed method * fix eagerload to be joins that filter by deleted == False * * Create an AuthManager#update_user method to change keys and admin status. * Refactor the auth_unittest to not care about test order * Expose the update_user method via nova-manage * Updates the fix-iptables branch with a number of bugfixes * Fixes reversed arguments in nova-manage project environment * Makes sure that multiple copies of nova-network don't create multiple copies of the same NetworkIndex * Fix a few errors in api calls related to mistyped database methods for floating_ips: specifically describe addresses and and associate address * Merged Termie's branch that starts tornado removal and fixed rpc test cases for twisted. Nothing is testing the Eventlet version of rpc.call though yet * Adds bpython support to nova-manage shell, because it is super sexy * Adds a disabled flag to service model and check for it when scheduling instances and volumes * Adds bpython support to nova-manage shell, because it is super sexy * Added random ec2 style id's for volumes and instances * fix security group revoke * Fixed tests * Removed str_id from FixedIp references * missed a comma * improved commenting * Fault support * fix flag defaults * typo s/boo/bool * merged and removed duplicated methods * fixed merge conflicts * removed extra code that slipped in from a test branch * Fixed name property on instance model * Implementation of the Rackspace servers API controller * Added checks for uniqueness for ec2 id * fix test for editable image * Add authorization info for cloud endpoints * Remove TODO, since apparently newer boto doesn't die on extra fields * add disabled column to services and check for it in scheduler * Hook the AuthManger#modify_user method into nova-manage commands * Refactored adminclient to support multiple regions * merged network-lease-fix * merged floating-ips * move default group creation to api * Implemented random instance and volume strings for ec2 api * Adds --force option to run_tests.sh to clear virtualenv. Useful when dependencies change * merge from trunk * Instance & Image renaming fixes * merge from gundlach * Testing testing testing * get rid of network indexes and make networks into a pool * Add Serializer.deserialize(xml_or_json_string) * merged trunk * return a value if possible from export_device_create_safe * merged floating-ip-by-project * merged network-lease-fix * merged trunk * Stop trying to install nova-api-new (it's gone). Install nova-scheduler * Call out to 'sudo kill' instead of using os.kill. dnsmasq runs as root or nobody, nova may or may not be running as root, so os.kill won't work * Make sure we also start dnsmasq on startup if we're managing networks * Improve unit tests for network filtering. It now tracks recursive filter dependencies, so even if we change the filter layering, it still correctly checks for the presence of the arp, mac, and ip spoofing filters * Make sure arguments to string format are in the correct order * Make the incoming blocking rules take precedence over the output accept rules * db api call to get instances by user and user checking in each of the server actions * More cleanup, backup_schedules controller, server details and the beginnings of the servers action route * This is getting ridiculous * Power state mapping * Set priority of security group rules to 300 to make sure they override the defaults * Recreate ensure_security_group_filter. Needed for refresh * Clean up nwfilter code. Move our filters into the ipv4 chain * If neither a security group nor a cidr has been passed, assume cidr=0.0.0.0/0 * More re-work around the ORM changes and testing * Support content type detection in serializer * If an instance never got scheduled for whatever reason, its host will turn up as None. Filter those out to make sure refresh works * Only call _on_set_network_host on nova-network hosts * Allow DHCP requests through, pass the IP of the gateway as the dhcp server * Add a flag the specifies where to find nova-dhcpbridge * Ensure dnsmasq can read updates to dnsmasq conffile * Set up network at manager instantiation time to ensure we're ready to handle the networks we're already supposed to handle * Add db api methods for retrieving the networks for which a host is the designated network host * Apply IP configuration to bridge regardless of whether it existed before. The fixes a race condition on hosts running both compute and network where, if compute got there first, it would set up the bridge, but not do IP configuration (because that's meant to happen on the network host), and when network came around, it would see the interface already there and not configure it further * Removed extra logging from debugging * reorganize iptables clear and make sure use_nova_chains is a boolean * allow in and out for network and compute hosts * Modification of test stubbing to match new domain requirements for the router, and removal of the unnecessary rackspace base controller * Minor changes to be committed so trunk can be merged in * disable output drop for the moment because it is too restrictive * add forwarding ACCEPT for outgoing packets on compute host * fix a few missed calls to _confirm_rule and 80 char issues * allow mgmt ip access to api * flush the nova chains * Test the AuthManager interface explicitly, in case the user/project wrappers fail or change at some point. Those interfaces should be tested on their own * Update auth manager to have a update_user method and better tests * add a reset command * Merged Termie's branch and fixed rpc test cases for tesited. Nothing is testing the Eventlet version of rpc.call though yet * improved the shell script for iptables * Finished making admin client work for multi-region * Install nova-scheduler * nova-api-new is no more. Don't attempt to install it * Add multi region support for adminclient * Merging in changes from rs_auth, since I needed something modern to develop on while waiting for Hudson to right itself * whatever * Put EC2 API -> eventlet back into trunk, fixing the bits that I missed when I put it into trunk on 9/21 * Apply vish's patch * Applied vish's fixes * Implementation of Rackspace token based authentication for the Openstack API * fixed a few missing params from iptables rules * removed extra line in manage * made use of nova_ chains a flag and fixed a few typos * put setup_iptables in the right dir * Fixed rpc consumer to use unique return connection to prevent overlap. This could be reworked to share a connection, but it should be a wait operation and not a fast poll like it was before. We could also keep a cache of opened connections to be used between requests * fixed a couple of typos * Re-added the ramdisk line I accidentally removed * Added a primary_key to AuthToken, fixed some unbound variables, and now all unit tests pass * Missed the model include, and fixed a broken test after the merge * Some more refactoring and another unit test * Refactored the auth branch based on review feedback * Replaced the existing Rackspace Auth Mechanism with one that mirrors the implementation in the design document * Merged gundlach's branch * renamed ipchains to iptables * merged trunk * Fixed cloudpipe lib init * merged fix-iptables * When calculating timedeltas make sure both timestamps are in UTC. For people ahead of UTC, it makes the scheduler unit tests pass. For people behind UTC, it makes their services time out after 60 seconds without a heart beat rather than X hours and 60 seconds without a heart beat (where X is the number of hours they're behind UTC) * Spot-fix endpoint reference * Wrap WSGI container in server.serve to make it properly handle command line arguments as well as daemonise properly. Moved api and wsgi imports in the main() function to delay their inclusion until after python-daemon has closed all the file descriptors. Without this, eventlet's epoll fd gets opened before daemonize is called and thus its fd gets closed leading to very, very, very confusing errors * Apply vish's patch * Added FLAGS.FAKE_subdomain letting you manually set the subdomain for testing on localhost * Address Vishy's comments * All timestamps should be in UTC. Without this patch, the scheduler unit tests fail for anyone sufficiently East of Greenwich * Compare project_id to '' using == (equality) rather than 'is' (identity). This is needed because '' isn't the same as u'' * Various loose ends for endpoint and tornado removal cleanup, including cloudpipe API addition, rpc.call() cleanup by removing tornado ioloop, and fixing bin/* programs. Tornado still exists as part of some test cases and those should be reworked to not require it * Re-add root and metadata request handlers to EC2 API * Re-added the ramdisk line I accidentally removed * Soren's patch to fix part of ec2 * Add user display fields to instances & volumes * Responding to eday's feedback -- make a clearer inner wsgi app * Added a primary_key to AuthToken, fixed some unbound variables, and now all unit tests pass * merge from trunk * typo in instance_get * typo in instance_get * User updatable name & description for images * merged trunk and fixed errors * cleaned up exception handling for fixed_ip_get * Added server index and detail differentiation * merged trunk * typo s/an/a * Reenable access_unittest now that it works with new rbac * Rewrite rbac tests to use Authorizer middleware * Missed the model include, and fixed a broke test after the merge * Delete nova.endpoint module, which used Tornado to serve up the Amazon EC2 API. Replace it with nova.api.ec2 module, which serves up the same API via a WSGI app in Eventlet. Convert relevant unit tests from Twisted to eventlet * Remove eventlet test, now that eventlet 0.9.10 has indeed been replaced by 0.9.12 per mtaylor * In desperation, I'm raising eventlet.__version__ so I can see why the trunk tests are failing * merged trunk * bpython is amazing * Fix quota unittest and don't run rbac unit tests for the moment * merged trunk * Some more refactoring and another unit test * Implements quotas with overrides for instances, volumes, and floating ips * Renamed cc_ip flag to cc_host * Moves keypairs out of ldap and into the common datastore * Fixes server error on get metadata when instances are started without keypairs * allows api servers to have a list of regions, allowing multi-cluster support if you have a shared image store and user database * Don't use something the shell will escape as a separator. | is now = * Added modify project command to auth manager to allow changing of project manager and description * merged trunk * merged trunk * Refactored the auth branch based on review feedback * Whitespace fixes * Support querying version list, per the RS API spec. Fixes bug 613117 * Undo run_tests.py modification in the hopes of making this merge * Add a RateLimitingMiddleware to the Rackspace API, implementing the rate limits as defined by the current Cloud Servers spec. The Middleware can do rate counting in memory, or (for deployments that have more than one API Server) can offload to a rate limiting service * Use assertRaises * A small fix to the install_venv program to allow us to run it on the tarmac box as part of the tarmac build * Removes second copy of ProcessExecutionError that creeped in during a bad merge * Adds an omitted yield in compute manager detach_volume * Move the code that extracts the console output into the virt drivers. Move the code that formats it up into the API layer. Add support for Xen console * Add Xen template and use it by default if libvirt_type=xen * added rescue mode support and made reboot work from any state * Adds timing fields to instances and volumes to track launch times and schedule times * Fixes two errors in cloud.py in the nova_orm branch: a) self.network is actually called network_manager b) the logic for describe-instances check on is_admin was reversed * Adds timing fields to instances and volumes to track launch times and schedule times * updated docstring * add in a few comments * s/\t/ /g, and add some comments * add in support for ajaxterm console access * add security and session timeout to ajaxterm * initial commit of ajaxterm * Replaced the existing Rackspace Auth Mechanism with one that mirrors the implementation in the design document * Whitespace fixes * Added missing masquerade rules * Fix things not quite merged perfectly -- all tests now pass * Better error message on the failure of a spawned process, and it's a ProcessExecutionException irrespective of how the process is run (twisted or not) * Added iptables host initial configuration * Added iptables host initial configuration * Proposing merge to get feedback on orm refactoring. I am very interested in feedback to all of these changes * Support querying version list * Add support for middleware proxying to a ratelimiting.WSGIApp, for deployments that use more than one API Server and thus can't store ratelimiting counters in memory * Test the WSGIApp * RateLimitingMiddleware tests * Address a couple of the TODO's: We now have half-decent input validation for AuthorizeSecurityGroupIngress and RevokeDitto * Clean up use of ORM to remove the need for scoped_session * Roll back my slightly over-zealous clean up work * More ORM object cleanup * Clean up use of objects coming out of the ORM * RateLimitingMiddleware * Add ratelimiting package into Nova. After Austin it'll be pulled out into PyPI * When destroying a VM using the XenAPI backend, if the VM is still running (the usual case) the destroy fails. It needs to be powered-off first * Leave out the network setting from the interfaces template. It does not get passed anymore * Network model has network_str attribute * Cast process input to a str. It must not be unicode, but stuff that comes out of the database might very well be unicode, so using such a value in a template makes the whole thing unicode * Make refresh_security_groups play well with inlineCallbacks * Fix up rule generation. It turns out nwfilter gets very, very wonky indeed if you mix rules and rules. Setting a TCP rule adds an early rule to ebtables that ends up overriding the rules which are last in that table * Add a bunch of TODO's to the API implementation * Multiple security group support * Remove power state constants that have ended up duplicated following a bad merge. They were moved from nova.compute.node.Instance into nova.compute.power_state at the same time that Instance was moved into nova.compute.service. We've ended up with these constants in both places * now we can run files - thanks vish * Move vol.destroy() call out of the _check method in test_multiple_volume_race_condition test and into a callback of the DeferredList. This should fix the intermittent failure of that test. I /think/ test_too_many_volumes's failure was caused by test_multiple_volume_race_condition failure, since I have not been able to reproduce its failure after fixing this one * Adds 'shell run' to nova manage, which spawns a shell with flags properly imported * Finish pulling S3ImageService out of this mergeprop * Pull S3ImageService out of this mergeprop * Correctly pass ip_address to templates * Fix call to listNWFilters * Make changes to security group rules propagate to the relevant compute nodes * Filters all get defined when running an instance * added missing yield in detach_volume * multiple network controllers will not create duplicate indexes * renamed _get_quota to get_quota and moved int(size) into quota.py * add a shell to nova-manage, which respects flags (taken from django) * Move vol.destroy() call out of the _check method in test_multiple_volume_race_condition test and into a callback of the DeferredList. This should fix the intermittent failure of that test. I /think/ test_too_many_volumes's failure was caused by test_multiple_volume_race_condition failure, since I have not been able to reproduce its failure after fixing this one * removed second copy of ProcessExecutionError * move the warnings about leasing ips * simplified query * missed a space * set leased = 0 as well on disassociate update * speed up the query and make sure allocated is false * workaround for mysql select in update * Periodic callback for services and managers. Added code to automatically disassociate stale ip addresses * fixed typo * flag for retries on volume commands * auto all and start all exceptions should be ignored * generalized retry into try_execute * more error handling in volume driver code * handle exceptions thrown by vblade stop and vblade destroy * merged trunk * deleting is set by cloud * re added missing volume update * Integrity error is in a different exc file * allow multiple volumes to run ensure_blades without creating duplicates * fixed name for unique constraint * export devices unique * merged instance time and added better concurrency * make fixed_ip_get_by_address return the instance as well so we don't run into concurrency issues where it is disassociated in between * disassociate floating is supposed to take floating_address * speed up generation of dhcp_hosts and don't run into None errors if instance is deleted * don't allocate the same floating ip multiple times * don't allow deletion or attachment of volume unless it is available * fixed reference to misnamed method * manage command for project quotas * merged trunk * implement floating_ip_get_all_by_project and renamed db methods that get more then one to get_all_by instead of get_by * fixed reversed args in nova-manage project environment * merged scheduler * fix instance time * move volume to the scheduler * tests for volumes work * update query and test * merged quotas * use gigabytes and cores * use a string version of key name when constructing mpi dict because None doesn't work well in lookup * db not self.db * Security Group API layer cleanup * merged trunk * added terminated_at to volume and moved setting of terminated_at into cloud * remerged scheduler * merged trunk * merged trunk * merged trunk * merged trunk * fixed reversed admin logic on describe instances * fixed typo network => network_manager in cloud.py * fixed old key reference and made keypair name constistent -> key_pair * typo fixes, add flag to nova-dhcpbridge * fixed tests, added a flag for updating dhcp on disassociate * simplified network instance association * fix network association issue * merged trunk * improved network error case handling for fixed ips * it is called regionEndpoint, and use pipe as a separator * move keypair generation out of auth and fix tests * Fixed manager_user reference in create_project * Finished security group / project refactor * delete keypairs when a user is deleted * remove keypair from driver * moved keypairs to db using the same interface * multi-region flag for describe regions * make api error messages more readable * Refactored to security group api to support projects * set dnsName on describe * merged orm and put instance in scheduling state * just warn if an ip was already deallocated * fix mpi 500 on fixed ip * hostname should be string id * dhcpbridge needed host instead of node name * add a simple iterator to NovaBase to support converting into dictionary * Adjust a few things to make the unit tests happy again * First pass of nwfilter based security group implementation. It is not where it is supposed to be and it does not actually do anything yet * couple more errors in metadata * typo in metadata call * fixed messed up call in metadata * added modify project command to allow project manager and description to be updated * Change "exn" to "exc" to fit with the common style * Create and delete security groups works. Adding and revoking rules works. DescribeSecurityGroups returns the groups and rules. So, the API seems to be done. Yay * merged describe_speed * merged scheduler * set host when item is scheduled * remove print statements * removed extra quotes around instance_type * don't pass topic into schedule_run_instance * added scheduled_at to instances and volumes * quotas working and tests passing * address test almost works * quota tests * merged orm * fix unittest * merged orm * fix rare condition where describe is called before instance has an ip * merged orm * make the db creates return refs instead of ids * add missing files for quota * kwargs don't work if you prepend an underscore * merged orm, added database methods for getting volume and ip data for projects * database support for quotas * Correct style issues brought up in termie's review * mocking out quotas * don't need to pass instance_id to network on associate * floating_address is the name for the cast * merged support code from orm branch * faster describe_addresses * added floating ip commands and launched_at terminated_at, deleted_at for objects * merged orm * solution that works with this version * fix describe addresses * remove extraneous get_host calls that were requiring an extra db trip * pass volume['id'] instead of string id to delete volume * fix volume delete issue and volume hostname display * fix logging for scheduler to properly display method name * fixed logic in set_state code to stop endless loops * Authorize and Revoke access now works * list command for floating ips * merged describe speed * merged orm * floating ip commands * removed extraneous rollback * speed up describe by loading fixed and floating ips * AuthorizeSecurityGroupIngress now works * switch to using utcnow * Alright, first hole poked all the way through. We can now create security groups and read them back * don't fail in db if context isn't a dict, since we're still using a class based context in the api * logging for backend is now info instead of error * merged orm * merged orm * set state everywhere * put soren's fancy path code in scheduler bin as well * missing deleted ref * merged orm * merged orm * consistent naming for instance_set_state * Tests turn things into inlineCallbacks * Missed an instance of attach_to_tornado * Remove tornado-related code from almost everything * It's annoying and confusing to have to set PYTHONPATH to point to your development tree before you run any of the scripts * deleted typo * merged orm * merged orm * fixed missing paren * merge orm * make timestamps for instances and volumes, includes additions to get deleted objects from db using deleted flag * merged orm * remove end of line slashes from models.py * Make the scripts in bin/ detect if they're being run from a bzr checkout or an extracted release tarball or whatever and adjust PYTHONPATH accordingly * merged orm * merged orm branch * set state moved to db layer * updated to the new orm code * changed a few unused context to _context * a few formatting fixes and moved exception * fixed a few bugs in volume handling * merged trunk * Last of cleanup, including removing fake_storage flage * more fixes from code review * review db code cleanup * review cleanup for compute manager * first pass at cleanup rackspace/servers.py * dhcpbridge fixes from review * more fixes to session handling * few typos in updates * don't log all sql statements * one more whitespace fix * whitespace fixes * fix for getting reference on service update * clean up of session handling * New version of eventlet handles Twisted & eventlet running at the same time * fix docstrings and formatting * Oops, APIRequestContext's signature has changed * merged orm * fix floating_ip to follow standard create pattern * Add stubbed out handler for AuthorizeSecurityGroupIngress EC2 API call * merged orm_deux * Merged trunk * Add a clean-traffic filterref to the libvirt templates to prevent spoofing and snooping attacks from the guests * Lots of fixes to make the nova commands work properly and make datamodel work with mysql properly * Bug #630640: Duplicated power state constants * Bug #630636: XenAPI VM destroy fails when the VM is still running * removed extra equals * Just a couple of UML-only fixes: * Due to an issue with libvirt, we need to chown the disk image to root. * Just point UML's console directly at a file, and don't bother with the pty. It was only used for debugging * removed extra file and updated sql note * merged fixed format instances from orm * fixed up format_instances * merged server.py change from orm branch * reverting accidental search/replace change to server.py * merged orm * removed model from nova-manage * merged orm branch * removed references to compute.model * send ultimate topic in to scheduler * more scheduler tests * test for too many instances work * merged trunk * fix service unit tests * removed dangling files * merged orm branch * merged trunk and cleaned up test * renamed daemon to service and update db on create and destroy * pass all extra args from service to manager * fix test to specify host * inject host into manager * Servers API remodeling and serialization handling * Move nova.endpoint.images to api.ec2 and delete nova.endpoint * Cloud tests pass * OMG got api_unittests to pass * send requests to the main API instead of to the EC2 subset -- so that it can parse out the '/services/' prefix. Also, oops, match on path_info instead of path like we're supposed to * Remove unused APIRequestContext.handler * Use port that boto expects * merged orm branch * scheduler + unittests * removed underscores from used context * updated models a bit and removed service classes * Small typos, plus rework api_unittest to use WSGI instead of Tornado * Replace an if/else with a dict lookup to a factory method * Nurrr * Abstractified generalization mechanism * Revert the changes to the qemu libvirt template and make the appropriate changes in the UML template where they belong * Create console.log ahead of time. This ensures that the user running nova-compute maintains read privileges * This improves the changelog generated as part of "setup.py sdist". If you look at it now, it says that Tarmac has done everything and every little commit is listed. With this patch, it only logs the "top-most" commit and credits the author rather than the committer * Fix simple errors to the point where we can run the tests [but not pass] * notes -- conversion 'complete' except now the unit tests won't work and surely i have bugs :) * Moved API tests into a sub-folder of the tests/ and added a stubbed-out test declarations to mirror existing API tickets * Delete rbac.py, moving @rbac decorator knowledge into api.ec2.Authorizer WSGI middleware * Break Router() into Router() and Executor(), and put Authorizer() (currently a stub) in between them * Return error Responses properly, and don't muck with req.params -- make a copy instead * merged orm branch * pylint clean of manager and service * pylint cleanup of db classes * rename node_name to host * merged trunk * Call getInfo() instead of getVersion() on the libvirt connection object. virConnectGetVersion was not exposed properly in the python bindings until quite recently, so this makes us rather more backwards compatible * Better log formatter for Nova. It's just like gnuchangelog, but logs the author rather than the committer * Remove all Twisted defer references from cloud.py * Remove inlineCallbacks and yield from cloud.py, as eventlet doesn't need it * Move cloudcontroller and admincontroller into new api * Adjust setup.py to match nova-rsapi -> nova-api-new rename * small import cleanup * Get rid of some convoluted exception handling that we don't need in eventlet * First steps in reworking EC2 APIRequestHandler into separate Authenticate() and Router() WSGI apps * Call getInfo() instead of getVersion() on the libvirt connection object. virConnectGetVersion was not exposed properly in the python bindings until quite recently, so this makes us rather more backwards compatible * Fix up setup.py to match nova-rsapi -> nova-api-new rename * a little more cleanup in compute * pylint cleanup of tests * add missing manager classes * volume cleanup * more cleanup and pylint fixes * more pep8 * more pep8 * pep8 cleanup * add sqlalchemy to pip requires * merged trunk, fixed a couple errors * Delete __init__.py in prep for turning apirequesthandler into __init__ * Move APIRequestContext into its own file * Move APIRequest into its own file * run and terminate work * Move class into its own file * fix daemon get * Notes for converting Tornado to Eventlet * undo change to get_my_ip * all tests pass again * rollback on exit * merged session from devin * Added session.py * Removed get_backup_schedules from the image test * merged devin's sqlalchemy changes * Making tests pass * Reconnect to libvirt on broken connection * pylint fixes for /nova/virt/connection.py * pylint fixes for nova/objectstore/handler.py * ip addresses work now * Add Flavors controller supporting * Resolve conflicts and merge trunk * Detect if libvirt connection has been broken and reestablish it * instance runs * Dead code removal * remove creation of volume groups on boot * tests pass * Making tests pass * Making tests pass * Refactored orm to support atomic actions * moved network code into business layer * move None context up into cloud * split volume into service/manager/driver * moved models.py * removed the last few references to models.py * chown disk images to root for uml. Due to libvirt dropping CAP_DAC_OVERRIDE for uml, root needs to have explicit access to the disk images for stuff to work * Create console.log ahead of time. This ensures that the user running nova-compute maintains read privileges * fixed service mox test cases * Renamed test.py and moved a test as per merge proposal feedback * fixed volume unit tests * work endpoint/images.py into an S3ImageService. The translation isn't perfect, but it's a start * get to look like trunk * Set UML guests to use a file as their console. This halfway fixes get-console-output for them * network tests pass again * Fixes issue with the same ip being assigned to multiple instances * merged trunk and fixed tests * Support GET //detail * Moved API tests into a sub-folder of the tests/ and added a stubbed-out test declarations to mirror existing API tickets * Turn imageid translator into general translator for rackspace api ids * move network_type flag so it is accesible in data layer * Use compute.instance_types for flavor data instead of a FlavorService * more data layer breakouts, lots of fixes to cloud.py * merged jesse * Initial support for Rackspace API /image requests. They will eventually be backed by Glance * Fix a pep8 violation * improve the volume export - sleep & check export * missing context and move volume_update to before the export * update volume create code * A few small changes to install_venv to let venv builds work on the tarmac box * small tweaks * move create volume to work like instances * work towards volumes using db layer * merge vish * fix setup compute network * merge vish * merge vish * use vlan for network type since it works * merge vish * more work on getting running instances to work * merge vish * more cleanup * Flavors work * pep8 * Delete unused directory * Move imageservice to its own directory * getting run/terminate/describe to work * OK, break out ternary operator (good to know that it slowed you down to read it) * Style fixes * fix some errors with networking rules * typo in release_ip * run instances works * Ensure that --gid and --uid options work for both twisted and non-twisted daemons * Fixes an error in setup_compute_network that was causing network setup to fail * add back in the needed calls for dhcpbridge * removed old imports and moved flags * merge and fixes to creates to all return id * bunch more fixes * moving network code and fixing run_instances * jesse's run_instances changes * fix daemons and move network code * Rework virt.xenapi's concurrency model. There were many places where we were inadvertently blocking the reactor thread. The reworking puts all calls to XenAPI on background threads, so that they won't block the reactor thread * merged trunk and fixed merge errors * Refactored network model access into data abstraction layer * Get the output formatting correct * Typo * Don't serialize in Controller subclass now that wsgi.Controller handles it for us * Move serialize() to wsgi.Controller so __call__ can serialize() action return values if they are dicts * Serialize properly * Support opaque id to rs int id as well * License * Moves auth.manager to the data layer * Add db abstraction and unittets for service.py * Clarified what the 'Mapped device not found' exception really means. Fixed TODO. Some formatting to be closer to 80 chars * Added missing "self." * Alphabetize the methods in the db layer * fix concurrency issue with multiple instances getting the same ip * small fixes to network * Fixed typo * Better error message on subprocess spawn fail, and it's a ProcessExecutionException irrespective of how the process is run * Check exit codes when spawning processes by default Also pass --fail to curl so that it sets exit code when download fails * PEP8/pylint cleanup in bin and nova/auth * move volume code into datalayer and cleanup * Complete the Image API against a LocalImageService until Glance's API exists (at which point we'll make a GlanceImageService and make the choice of ImageService plugin configurable.) * Added unit tests for WSGI helpers and base WSGI API * merged termies abstractions * Move deferredToThread into utils, as suggested by termie * Remove whitespace to match style guide * Data abstraction for compute service * this file isn't being used * Cleaned up pep8/pylint style issues in nova/auth. There are still a few pylint warnings in manager.py, but the patch is already fairly large * More pylintrc updates * fix report state * Removed old cloud_topic queue setup, it is no longer used * last few test fixes * More bin/ pep8/pylint cleanup * fixing more network issues * Added '-' as possible charater in module rgx * Merged with trunk * Updated the tests to use webob, removed the 'called' thing and just use return values instead * Fix unit test bug this uncovered: don't release_ip that we haven't got from issue_ip * Fix to better reflect (my believed intent) as to the meaning of error_ok (ignore stderr vs accept failure) * Merged with trunk * use with_lockmode for concurrency issues * First in a series of patches to port the API from Tornado to WSGI. Also includes a few small style fixes in the new API code * Pull in ~eday/nova/api-port * Merged trunk * Merged api-port into api-port-1 * Since pylint=0.19 is our version, force everyone to use the disable-msg syntax * Missed one * Removed the 'controllers' directory under 'rackspace' due to full class name redundancy * pep8 typo * Changed our minds: keep pylint equal to Ubuntu Lucid version, and use disable-msg throughout * Fixed typo * Image API work * Newest pylint supports 'disable=', not 'disable-msg=' * Fix pep8 violation * tests pass * network tests pass * Added unittests for wsgi and api * almost there * progress on tests passing * remove references to deleted files so tests run * fix vpn access for auth * merged trunk * removed extra files * network datamodel code * In an effort to keep new and old API code separate, I've created a nova.api to put all new API code under. This means nova.endpoint only contains the old Tornado implementation. I also cleaned up a few pep8 and other style nits in the new API code * No longer installs a virtualenv automatically and adds new options to bypass the interactive prompt * Stylistic improvements * Add documentation to spawn, reboot, and destroy stating that those functions should return Deferreds. Update the fake implementations to do so (the libvirt ones already do, and making the xenapi ones do so is the subject of a current merge request) * start with model code * clean up linux_net * merged refresh from sleepsonthefloor * See description of change... what's the difference between that message and this message again? * Move eventlet-using class out of endpoint/__init__.py into its own submodule, so that twisted-related code using endpoint.[other stuff] wouldn't run eventlet and make unit tests throw crazy errors about eventlet 0.9.10 not playing nicely with twisted * Remove duplicate definition of flag * The file that I create automates this step in http://wiki.openstack.org/InstallationNova20100729 : * Simpler installation, and, can run install_venv from anywhere instead of just from checkout root * Use the argument handler specified by twistd, if any * Fixes quite a few style issues across the entire nova codebase bringing it much closer to the guide described in HACKING * merge from trunk * merged trunk * merged trunk and fixed conflicts * Fixes issues with allocation and deallocation of fixed and elastic addresses * Added documentation for the nova.virt connection interface, a note about the need to chmod the objectstore script, and a reference for the XenAPI module * Make individual disables for R0201 instead of file-level * All controller actions receive a 'req' parameter containing the webob Request * improve compatibility with ec2 clients * PEP8 and name corrections * rather comprehensive style fixes * fix launching and describing instances to work with sqlalchemy * Add new libvirt_type option "uml" for user-mode-linux.. This switches the libvirt URI to uml:///system and uses a different template for the libvirt xml * typos * don't try to create and destroy lvs in fake mode * refactoring volume and some cleanup in model and compute * Add documentation to spawn, reboot, and destroy stating that those functions should return Deferreds. Update the fake implementations to do so (the libvirt ones already do, and making the xenapi ones do so is the subject of a current merge request) * Rework virt.xenapi's concurrency model. There were many places where we were inadvertently blocking the reactor thread. The reworking puts all calls to XenAPI on background threads, so that they won't block the reactor thread * add refresh on model * merge in latedt from vish * Catches and logs exceptions for rpc calls and raises a RemoteError exception on the caller side * Removes requirement of internet connectivity to run api server * Fixed path to keys directory * Update cloud_unittest to match renamed internal function * Removes the workaround for syslog-ng of removing newlines * Fixes bug lp:616312 by reversing the order of args in nova-manage when it calls AuthManager.get_credentials * merged trunk * Sets a hostname for instances that properly resolves and cleans up network classes * merged fix-hostname and fixed conflict * Implemented admin client / admin api for fetching user roles * Improves pep8 compliance and pylint score in network code * Bug #617776: DescribeImagesResponse contains type element, when it should be called imageType * Bug 617913: RunInstances response doesn't meet EC2 specification * remove more direct session interactions * refactor to have base helper class with shared session and engine * ComputeConnectionTestCase is almost working again * more work on trying to get compute tests passing * re-add redis clearing * make the fake-ldap system work again * got run_tests.py to run (with many failed tests) * Bug #617776: DescribeImagesResponse contains type element, when it should be called imageType * initial commit for orm based models * Add a few unit tests for libvirt_conn * Move interfaces template into virt/, too * Refactor LibvirtConnection a little bit for easier testing * Remove extra "uml" from os.type * Fixes out of order arguments in get_credentials * pep8 and pylint cleanup * Support JSON and XML in Serializer * Added note regarding dependency upon XenAPI.py * Added documentation to the nova.virt interface * make rpc.call propogate exception info. Includes tests * Undo the changes to cloud.py that somehow diverged from trunk * Mergeprop cleanup * Mergeprop cleanup * Make WSGI routing support routing to WSGI apps or to controller+action * Make --libvirt_type=uml do the right thing: Sets the correct libvirt URI and use a special template for the XML * renamed missed reference to Address * die classmethod * merged fix-dhcpbridge * remove class method * typo allocated should be relased * rename address stuff to avoid name collision and make the .all() iterator work again * keep track of leasing state so we can delete ips that didn't ever get leased * remove syslog-ng workaround * Merged with trunk * Implement the same fix as lp:~vishvananda/nova/fix-curl-project, but for virt.xenapi * Fix exception in get_info * Move libvirt.xml template into nova/virt * Parameterise libvirt URI * Merged with trunk * fix dhcpbridge issues * Adapts the run_tests.sh script to allow interactive or automated creation of virtualenv, or to run tests outside of a virtualenv * Prototype implementation of Servers controller * Working router that can target WSGI middleware or a standard controller+action * Added a xapi plugin that can pull images from nova-objectstore, and use that to get a disk, kernel, and ramdisk for the VM * Serializing in middleware after all... by tying to the router. maybe a good idea? * Merged with trunk * Actually pass in hostname and create a proper model for data in network code * Improved roles functionality (listing & improved test coverage) * support a hostname that can be looked up * updated virtualenv to add eventlet, which is now a requirement * Changes the run_tests.sh and /tools/install_venv.py scripts to be more user-friendly and not depend on PIP while not in the virtual environment * Fixed admin api for user roles * Merged list_roles * fix spacing issue in ldapdriver * Fixes bug lp:615857 by changing the name of the zip export method in nova-manage * Wired up admin api for user roles * change get_roles to have a flag for project_roles or not. Don't show 'projectmanager' in list of roles * Throw exceptions for illegal roles on role add * Adds get_roles commands to manager and driver classes * more pylint fixes * Implement VIF creation in the xenapi module * lots more pylint fixes * work on a router that works with wsgi and non-wsgi routing * Pylint clean of vpn.py * Further pylint cleanup * Oops, we need eventlet as well * pylint cleanup * pep8 cleanup * merged trunk * pylint fixes for nova/objectstore/handler.py * rename create_zip to zipfile so lazy match works * Quick fix on location of printouts when trying to install virtualenv * Changes the run_tests.sh and /tools/install_venv.py scripts to be more user-friendly and not depend on PIP while not in the virtual environment. Running run_tests.sh should not just work out of the box on all systems supporting easy_install.. * 2 changes in doing PEP8 & Pylint cleaning: * adding pep8 and pylint to the PIP requirements files for Tools * light cleaning work (mostly formatting) on nova/endpoints/cloud.py * More changes to volume to fix concurrency issues. Also testing updates * Merge * Merged nova-tests-apitest into pylint * Merged nova-virt-connection into nova-tests-apitest * Pylint fixes for /nova/tests/api_unittest.py * pylint fixes for nova/virt/connection.py * merged trunk, fixed an error with releasing ip * fix releasing to work properly * Add some useful features to our flags * pylint fixes for /nova/test.py * Fixes pylint issues in /nova/server.py * importing merges from hudson branch * fixing - removing unused imports per Eric & Jay review * initial cleanup of tests for network * Implement the same fix as lp:~vishvananda/nova/fix-curl-project, but for virt.xenapi * Run correctly even if called while in tools/ directory, as 'python install_venv.py' * This branch builds off of Todd and Michael's API branches to rework the Rackspace API endpoint and WSGI layers * separated scheduler types into own modules * Fix up variable names instead of disabling pylint naming rule. Makes variables able to be a single letter in pylintrc * Disables warning about TODO in code comments in pylintrc * More pylint/pep8 cleanup, this time in bin/* files * pylint fixes for nova/server.py * remove duplicated report_state that exists in the base class more pylint fixes * Fixed docstring format per Jay's review * pylint fixes for /nova/test.py * Move the xenapi top level directory under plugins, as suggested by Jay Pipes * Pull trunk merge through lp:~ewanmellor/nova/add-contains * Pull trunk merge through lp:~ewanmellor/nova/xapi-plugin * Merged with trunk again * light cleanup - convention stuff mostly * convention and variable naming cleanup for pylint/pep8 * Used new (clearer) flag names when calling processes * Merged with trunk * Greater compliance with pep8/pylint style checks * removing what appears to be an unused try/except statement - nova.auth.manager.UserError doesn't exist in this codebase. Leftover? Something intended to be there but never added? * variable name cleanup * attempting some cleanup work * adding pep8 and pylint for regular cleanup tasks * Cleaned up pep8/pylint for bin/* files. I did not fix rsapi since this is already cleaned up in another branch * Merged trunk * Reworked WSGI helper module and converted rackspace API endpoint to use it * Changed the network imports to use new network layout * merged with trunk * Change nova/virt/images.py's _fetch_local_image to accept 4 args, since fetch() tries to call it with that many * Merged Todd and Michael's changes * pep8 and pylint cleanups * Some pylink and pep8 cleanups. Added a pylintrc file * fix copyrights for new files, etc * a few more commands were putting output on stderr. In general, exceptions on stderr output seems like a bad idea * Moved Scheduler classes into scheduler.py. Created a way to specify scheduler class that the SchedulerService uses.. * Make network its own worker! This separates the network logic from the api server, allowing us to have multiple network controllers. There a lot of stuff in networking that is ugly and should be modified with the datamodel changes. I've attempted not to mess with those things too much to keep the changeset small(ha!) * Fixed instance model associations to host (node) and added association to ip * Fixed write authorization for public images * Fixes a bug where if a user was removed from a group after he had a role, he could not be re-added * fix search/replace error * merged trunk * Start breaking out scheduler classes.. * WsgiStack class, eventletserver.serve. Trying to work toward a simple API that anyone can use to start an eventlet-based server composed of several WSGI apps * Use webob to simplify wsgi middleware * Made group membership check only search group instead of subtree. Roles in a group are removed when a user is removed from that group. Added test * Fixes bug#614090 -- nova.virt.images._fetch_local_image being called with 4 args but only has 3 * Fixed image modification authorization, API cleanup * fixed doc string * compute topic for a node is compute.node not compute:node! * almost there on random scheduler. not pushing to correct compute node topic, yet, apparently.. * First pass at making a file pass pep8 and pylint tests as an example * merged trunk * rename networkdata to vpn * remove extra line accidentally added * compute nodes should store total memory and disk space available for VMs * merged from trunk * added bin/nova-listinstances, which is mostly just a duplication of euca-describe-instances but doesn't go through the API * Fixes various concurrency issues in volume worker * Changed volumes to use a pool instead of globbing filesystem for concurrency reasons. Fixed broken tests * clean up nova-manage. If vpn data isn't set for user it skips it * method is called set_network_host * fixed circular reference and tests * renamed Vpn to NetworkData, moved the creation of data to inside network * fix rpc command line call, remove useless deferreds * fix error on terminate instance relating to elastic ip * Move the xenapi top level directory under plugins, as suggested by Jay Pipes * fixed tests, moved compute network config call, added notes, made inject option into a boolean * fix extra reference, method passing to network, various errors in elastic_ips * use iteritems * reference to self.project instead of context.project + self.network_model instead of network_model * fixes in get public address and extra references to self.network * method should return network topic instead of network host * use deferreds in network * don't __ module methods * inline commands use returnValue * it helps to save files BEFORE committing * Added note to README * Fixes the curl to pass in the project properly * Adds flag for libvirt type (hvm, qemu, etc) * Fix deprecation warning in AuthManager. __new__ isn't allowed to take args * created assocaition between project and host, modified commands to get host async, simplified calls to network * use get to retrieve node_name from initial_state * change network_service flag to network_type and don't take full class name * vblade commands randomly toss stuff into stderr, ignore it * delete instance doesn't fail if instances dir doesn't exist * Huge network refactor, Round I * Fixes boto imports to support both beta and older versions of boto * Get IP doesn't fail of you not connected to the intetnet * updated doc string and wrapper * add copyright headers * Fix exception in get_info * Implement VIF creation * Define __contains__ on BasicModel, so that we can use "x in datamodel" * Fixed instance model associations to host (node) and added association to ip * Added a xapi plugin that can pull images from nova-objectstore, and use that to get a disk, kernel, and ramdisk for the VM. The VM actually boots! * Added project as parameter to admin client x509 zip file download * Turn the private _image_url(path) into a public image_url(image). This will be used by virt.xenapi to instruct xapi as to which images to download * Merged in configurable libvirt_uri, and fixes to raw disk images from the virtualbox branch * Fixed up some of the raw disk stuff that broke in the abstraction out of libvirt * Merged with raw disk image * Recognize 'magic' kernel value that means "don't use a kernel" - currently aki-00000000 * Fix Tests * Fixes nova volumes. The async commands yield properly. Simplified the call to create volume in cloud. Added some notes * another try on fix boto * use user.access instead of user.id * Fixes access key passing in curl statement * Accept a configurable libvirt_uri * Added Cheetah to pip-requires * Removed duplicate toXml method * Merged with trunk * Merged with trunk, added note about suspicious behaviour * Added exit code checking to process.py (twisted process utils). A bit of class refactoring to make it work & cleaner. Also added some more instructive messages to install_venv.py, because otherwise people that don't know what they're doing will install the wrong pip... i.e. I did :-) * Make nodaemon twistd processes log to stdout * Make nodaemon twistd processes log to stdout * use the right tag * flag for libvirt type * boto.s3 no longer imports connection, so we need to explicitly import it * Added project param to admin client zip download * boto.utils import doesn't work with new boto, import boto instead * fix imports in endpoint/images.py boto.s3 no longer imports connection, so we need to explicitly import it * Added --fail argument to curl invocations, so that HTTP request fails get surfaced as non-zero exit codes * Merged with trunk * Merged with trunk * strip out some useless imports * Add some useful features to our flags * Fixed pep8 in run_test.py * Blank commit to get tarmac merge to pick up the tags * Fixed assertion "Someone released me too many times: too many tokens!" * Replace the second singleton unit test, lost during a merge * Merged with trunk to resolve merge conflicts * oops retry and add extra exception check * Fix deprecation warning in AuthManager. __new__ isn't allowed to take args * Added ChangeLog generation * Implemented admin api for rbac * Move the reading of API parameters above the call to _get_image, so that they have a chance to take effect * Move the reading of API parameters above the call to _get_image, so that they have a chance to take effect * Adds initial support for XenAPI (not yet finished) * More merges from trunk. Not everything came over the first time * Allow driver specification in AuthManager creation * pep8 * Fixed pep8 issues in setup.py - thanks redbo * Use default kernel and ramdisk properly by default * Adds optional user param to the get projects command * Ensures default redis keys are lowercase like they were in prior versions of the code * Pass in environment to dnsmasq properly * Releaed 0.9.0, now on 0.9.1 * Merged trunk * Added ChangeLog generation * Wired up get/add/remove project members * Merged lp:~vishvananda/nova/lp609749 * Removes logging when associating a model to something that isn't a model class * allow driver to be passed in to auth manager instead of depending solely on flag * make redis name default to lower case * Merged get-projects-by-user * Merged trunk * Fixed project api * Specify a filter by user for get projects * Create a model for storing session tokens * Fixed a typo from the the refactor of auth code * Makes ldap flags work again * bzr merge lp:nova/trunk * Tagged 0.9.0 and bumped the version to 0.9.1 * Silence logs when associated models aren't found. Also document methods used ofr associating things. And get rid of some duplicated code * Fix dnsmasq commands to pass in environment properly 0.9.0 ----- * Got the tree set for debian packaging * use default kernel and ramdisk and check for legal access * import ldapdriver for flags * Removed extra include * Added the gitignore files back in for the folks who are still on the git * Added a few more missing files to MANIFEST.in and added some placeholder files so that setup.py would carry the empty dir * Updated setup.py file to install stuff on a python setup.py install command * Removed gitignore files * Made run_tests.sh executable * Put in a single MANIFEST.in file that takes care of things * Changed Makefile to shell script. The Makefile approach completely broke debhelper's ability to figure out that this was a python package * fixed typo from auth refactor * Add sdist make target to build the MANIFEST.in file * Removes debian dir from main tree. We'll add it back in in a different branch * Merged trunk * Wired up user:project auth calls * Bump version to 0.9.0 * Makes the compute and volume daemon workers use a common base class called Service. Adds a NetworkService in preparation for splitting out networking code. General cleanup and standardizarion of naming * fixed path to keys directory * Fixes Bug lp:610611: deleted project vlans are deleted from the datastore before they are reused * Add a 'sdist' make target. It first generates a MANIFEST.in based on what's in bzr, then calls python setup.py sdist * properly delete old vlans assigned to deleted projects * Remove debian/ from main branch * Bump version to 0.9.0. Change author to "OpenStack". Change author_email to nova@lists.launchpad.net. Change url to http://www.openstack.org/. Change description to "cloud computing fabric controller" * Make "make test" detect whether to use virtualenv or not, thus making virtualenv optional * merged trunk * Makes the objectstore require authorization, checks it properly, and makes nova-compute provide it when fetching images * Automatically choose the correct type of test (virtualenv or system) * Ensure that boto's config has a "Boto" section before attempting to set a value in it * fixes buildpackage failing with dh_install: missing files * removed old reference from nova-common.install and fixed spacing * Flag for SessionToken ttl setting * resolving conflict w/ merge, cleaning up virtenv setups * resolving conflict w/ merge, cleaning up virtenv setups * Fixes bug#610140. Thanks to Vish and Muharem for the patch * A few minor fixes to the virtualenv installer that were breaking on ubuntu * Give SessionToken an is_expired method * Refactor of auth code * Fixes bug#610140. Thanks to Vish and Muharem for the patch * Share my updates to the Rackspace API * Fixes to the virtualenv installer * Ensure consistent use of filename for dhcp bridge flag file * renamed xxxservice to service * Began wiring up rbac admin api * fix auth_driver flag to default to usable driver * Adds support scripts for installing deps into a virtualenv * In fact, it should delete them * Lookup should only not return expired tokens * Adds support scripts for installing deps into a virtualenv * default flag file full path * moved misnamed nova-dchp file * Make _fetch_s3_image pass proper AWS Authorization headers so that image downloads work again * Make image downloads work again in S3 handler. Listing worked, but fetching the images failed because I wasn't clever enough to use twisted.web.static.File correctly * Move virtualenv installation out of the makefile * Expiry awareness for SessionToken * class based singleton for SharedPool * Basic standup of SessionToken model for shortlived auth tokens * merged trunk * merged trunk * Updated doc layout to the Sphinx two-dir layout * Replace hardcoded "nova" with FLAGS.control_exchange * Add a simple set of tests for S3 API (using boto) * Fix references to image_object. This caused an internal error when using euca-deregister * Set durable=False on TopicPublisher * Added missing import * Replace hardcoded example URL, username, and password with flags called xenapi_connection_url, xenapi_connection_username, xenapi_connection_password * Fix instance cleanup * Fix references to image_object. This caused an internal error when using euca-deregister * removed unused assignment * More Cleanup of code * Fix references to get_argument, fixing internal error when calling euca-deregister * Changes nova-volume to use twisted * Fixes up Bucket to throw proper NotFound and NotEmpty exceptions in constructor and delete() method, and fixes up objectstore_unittest to properly use assertRaises() to check for proper exceptions and remove the assert_ calls * Adds missing yield statement that was causing partitioning to intermittently fail * Merged lp:~ewanmellor/nova/lp609792 * Merged lp:~ewanmellor/nova/lp609791 * Replace hardcoded "nova" with FLAGS.control_exchange * Set durable=False on TopicPublisher, so that it matches the flag on TopicConsumer. This ensures that either redeclaration of the control_exchange will use the same flag, and avoid AMQPChannelException * Add an import so that nova-compute sees the images_path flag, so that it can be used on the command line * Return a 404 when attempting to access a bucket that does not exist * Removed creation of process pools. We don't use these any more now that we're using process.simple_execute * Fix assertion "Someone released me too many times: too many tokens!" when more than one process was running at the same time. This was caused by the override of SharedPool.__new__ not stopping ProcessPool.__init__ from being run whenever process.simple_execute is called * Always make sure to set a Date headers, since it's needed to calculate the S3 Auth header * Updated the README file * Updated sphinx layout to a two-dir layout like swift. Updated a doc string to get rid of a Sphinx warning * Updated URLs in the README file to point to current locations * Add missing import following merge from trunk (cset 150) * Merged with trunk, since a lot of useful things have gone in there recently * fixed bug where partition code was sometimes failing due to initial dd not being yielded properly * Fixed bug 608505 - was freeing the wrong address (should have freed 'secondaddress', was freeing 'address') * renamed xxxnode to xxservice * Add (completely untested) code to include an Authorization header for the S3 request to fetch an image * Check signature for S3 requests * Fixes problem with describe-addresses returning all public ips instead of the ones for just the user's project * Fix for extra spaces in export statements in scripts relating to x509 certs * Adds a Makefile to fill dependencies for testing * Fix syslogging of exceptions by stripping newlines from the exception info * Merged fix for bug 608505 so unit tests pass * Check exit codes when spawning processes by default * Nobody wants to take on this twisted cleanup. It works for now, but could be much nicer if twisted has a nice hook-point for exception mapping * syslog changes * typo fixes and extra print statements removed * added todo for ABC * Fixed bug 608505 - was freeing the wrong address (should have freed 'secondaddress', was freeing 'address') * Merged trunk, fixed extra references to fake_users * refactoring of imports for fakeldapdriver * make nova-network executable * refactor daemons to use common base class in preparation for network refactor * reorder import statement and remove commented-out test case that is the same as api_unittest in objectstore_unittest * Fixes up Bucket to throw proper NotFound and NotEmpty exceptions in constructor and delete() method, and fixes up objectstore_unittest to properly use assertRaises() to check for proper exceptions and remove the assert_ calls * Fix bug 607501. Raise 403, not exception if Authorization header not passed. Also added missing call to request.finish() & Python exception-handling style tweak * merge with twisted-volume * remove all of the unused saved return values from attach_to_twisted * fix for describe addresses showing everyone's public ips * update the logic for calculating network sizes * Locally administered mac addresses have the second least significant bit of the most significant byte set. If this byte is set then udev on ubuntu doesn't set persistent net rules * use a locally administered mac address so it isn't saved by udev * Convert processpool to a singleton, and switch node.py calls to use it. (Replaces passing a processpool object around all the time.) * Fixed the broken reference to * remove spaces from export statements in scripts relating to certs * Cleanups * Able to set up DNS, and remove udev network rules * Move self.ldap to global ldap to make changes easier if we ever implement settings * Cleanup per suggestions * network unittest clean up * Test cleanup, make driver return dictionaries and construct objects in manager * Able to boot without kernel or ramdisk. libvirt.xml.template is now a Cheetah template * Merged https://code.launchpad.net/~justin-fathomdb/nova/copy-error-handling * Merged bug fixes * Map exceptions to 404 / 403 codes, as was done before the move to twisted. However, I don't think this is the right way to do this in Twisted. For example, exceptions thrown after the render method returns will not be mapped * Merged lp:~justin-fathomdb/nova/bug607501 * Merged trunk. Fixed new references to UserManager * I put the call to request.finish() in the wrong place. :-( * More docstrings, don't autocreate projects * Raise 401, not exception if Authorization header not passed. Also minor fixes & Python exception-handling style tweak * LdapDriver cleanup: docstrings and parameter ordering * Ask curl to set exit code if resource was not found * Fixes to dhcp lease code to use a flagfile * merged trunk * Massive refactor of users.py * Hmm, serves me right for not understanding the request, eh? :) Now too_many_addresses test case is idempotent in regards to running in isolation and uses self.flags.network_size instead of the magic number 32 * Redirect STDERR to output to an errlog file when running run_tests.py * Send message ack in rpc.call and make queues durable * Fixed name change caused by remove-vendor merge * Replace tornado objectstore with twisted web * merged in trunk and fixed import merge errors * First commit of XenAPI-specific code (i.e. connections to the open-source community project Xen Cloud Platform, or the open-source commercial product Citrix XenServer) * Remove the tight coupling between nova.compute.monitor and libvirt. The libvirt-specific code was placed in nova.virt.libvirt_conn by the last changeset. This greatly simplifies the monitor code, and puts the libvirt-specific XML record parsing in a libvirt-specific place * In preparation for XenAPI support, refactor the interface between nova.compute and the hypervisor (i.e. libvirt) * Fixed references to nova.utils that were broken by a change of import statement in the remove-vendor merge * Remove s3_internal_port setting. Objectstore should be able to handle the beatings now. As such, nginx is no longer needed, so it's removed from the dependencies and the configuration files are removed * Replace nova-objectstore with a twistd style wrapper. Add a get_application method to objectstore handler * Minor post-merge fixes * Fixed _redis_name and _redis_key * Add build_sphinx support * fix conf file to no longer have daemonize=1 because twistd daemonizes by default * make nova-volume start with twisteds daemonize stuff * Makin the queues non-durable by default * Ack messages during call so rabbit leaks less * simplify call to simple_execute * merge extra singleton-pool changes * Added a config file to let setup.py drive building the sphinx docs * make simple method wrapper for process pool simple_execute * change volume code to use twisted * remove calls to runthis from node * merge with singleton pool * Removed unused Pool from process.py, added a singleton pool called SharedPool, changed calls in node to use singleton pool * Fixes things that were not quite right after big merge party * Make S3 API handler more idiomatic Twisted Web-y * _redis_name wasn't picking up override_type correctly, and _redis_key wasn't using it * Quick fix to variable names for consistency in documentation.. * Adds a fix to the idempotency of the test_too_many_addresses test case by adding a simple property to the BaseNetwork class and calculating the number of available IPs by asking the network class to tell the test how many static and preallocated IP addresses are in use before entering the loop to "blow up" the address allocation.. * Adds a flag to redirect STDERR when running run_tests.py. Defaults to a truncate-on-write logfile named run_tests.err.log. Adds ignore rule for generated errlog file * no more print in storage unittest * reorder imports spacing * Fixes to dhcp lease code to use a flagfile * merged trunk * This branch fixes some unfortunate interaction between Nova and boto * Make sure we pass str objects instead of unicode objects to boto as our credentials * remove import of vendor since we have PPA now * Updates the test suite to work * Disabled a tmpdir cleanup * remove vendor * update copyrights * Volume_ID identifier needed a return in the property. Also looking for race conditions in the destructor * bin to import images from canonical image store * add logging import to datastore * fix merge errors * change default vpn ports and remove complex vpn ip iteration * fix reference to BasicModel and imports * Cleanups related to BasicModel (whitespace, names, etc) * Updating buildbot address * Fixed buildbot * work on importing images * When destroying an Instance, disassociate with Node * Smiteme * Smiteme * Smiteme * Smiteme * Move BasicModel into datastore * Smiteme * Smiteme * Whitespace change * unhardcode the binary name * Fooish * Finish singletonizing UserManager usage * Debian package additions for simple network template * Foo * Whitespace fix * Remove debug statement * Foo * fix a typo * Added build-deps to debian/control that are needed to run test suite. Fixed an error in a test case * optimization to not load all instances when describe instances is called * More buildbot testing * More buildbot testing * More buildbot testing * More buildbot testing * More buildbot testing * More buildbot testing * Addin buildbot * Fix merge changelog and merge errors in utils.py * Fixes from code review * release 0.2.2-10 * fix for extra space in vblade-persist * Avoid using s-expr, pkcs1-conv, and lsh-export-key * release 0.2.2-9 * fixed bug in auth group_exists * Move nova related configuration files into /etc/nova/ * move check for none before get mpi data * Refactored smoketests flags * Fixes to smoketest flags * Minor smoketest refactoring * fixes from code review * typo in exception in crypto * datetime import typo * added missing isotime method from utils * release 0.2.2-8 * missed a comma * release 0.2.2-7 * use a flag for cert subject * whitespace fixes and header changes * Fixed the os.environ patch (bogus) * Fixes as per Vish review (whitespace, import statements) * Off by one error in the allocation test (can someone check my subnet math?) * Adding more tests, refactoring for dhcp logic * Got dhcpleasor working, with test ENV for testing, and rpc.cast for real world * Capture signals from dnsmasq and use them to update network state * Relax the Twisted dependency to python-twisted-core (rather than the full stack) * releasing version 0.3.0+really0.2.2-0ubuntu0ppa3 * If set, pass KernelId and RamdiskId from RunInstances call to the target compute node * Add a default flag file for nova-manage to help it find the CA * Ship the CA directory in nova-common * Add a dependency on nginx from nova-objectsstore and install a suitable configuration file * releasing version 0.3.0+really0.2.2-0ubuntu0ppa2 * Don't pass --daemonize=1 to nova-compute. It's already daemonising by default * Add debian/nova-common.dirs to create var/lib/nova/{buckets,CA,images,instances,keys,networks} * keeper_path is really caled datastore_path * Fixed package version * Move templates from python directories to /usr/share/nova * Added --network_path setting to nova-compute's flagfile * releasing version 0.3.0+really0.2.2-0ubuntu0ppa1 * Use rmdir instead of rm -rf to remove a tempdir * Set better defaults in flagfiles * Fixes and add interface template * Simple network injection * Simple Network avoids vlans * clean a few merge errors from network * Add curl as a dependency of nova-compute * getting started update * getting started update * Remove _s errors from merge * fix typos in node from merge * remove spaces from default cert * Make sure get_assigned_vlans and BaseNetwork.hosts always return a dict, even if the key is currently empty in the KVS * Add _s instance attribute to Instance class. It's referenced in a bunch of places, but is never set. This is unlikely to be the right fix (why have two attributes pointing to the same object?), but it seems to make ends meet * Replace spaces in x509 cert subject with underscores. It ends up getting split(' ')'ed and passed to subprocess.Popen, so it needs to not have spaces in it, otherwise openssl gets very upset * Expand somewhat on the short and long descriptions in debian/control * Use separate configuration files for the different daemons * Removed trailing whitespace from header * Updated licenses * Added flags to smoketests. General cleanup * removed all references to keeper * reformatting * Vpn ips and ports use redis * review reformat * code review reformat * We need to be able to look up Instance by Node (live migration) * Get rid of RedisModel * formatting fixes and refactoring from code review * reformatting to fit within 80 characters * simplified handling of tempdir for Fakes * fix for multiple shelves for each volume node * add object class violation exception to fakeldap * remove spaces from default cert * remove silly default from generate cert * fix of fakeldap imports and exceptions * More Comments, cleanup, and reformatting * users.py cleanup for exception handling and typo * Make fakeldap use redis * Refactor network.Vlan to be a BasicModel, since it touched Redis * bugfix: rename _s to datamodel in Node in some places it was overlooked * fix key injection script * Fixes based on code review 27001 * added TODO * Admin API + Worker Tracking * fixed typo * style cleanup * add more info to vpn list * Use flag for vpn key suffix instead of hardcoded string * don't fail to create vpn key if dir exists * Create Volume should only take an integer between 0 and 1000 * Placeholders for missing describe commands * Set forward delay to zero (partial fix to bug #518) * more comment reformatting * fit comment within 80 lines * removed extraneous reference to rpc in objectstore unit test * Fix queue connection bugs * Fix deletion of user when he is the last member of the group * Fix error message for checking for projectmanager role * Installer now creates global developer role * Removed trailing whitespace from header * added nova-instancemonitor debian config * Updated licenses * Added flags to smoketests. General cleanup * A few missing files from the twisted patch * Tweaks to get instancemonitor running * Initial commit of nodemonitor * Create DescribeImageAttribute api method * release 0.2.2-6 * disk.py needed input for key injection to work * release 2.2-5 * message checking callbacks only need to run 10 times a second * release 2.2-4 * trackback formatting isn't logging correctly * documentation updates * fix missing tab in nova-manage * Release 2.2-3 * use logger to print trace of unhandled exceptions * add exit status to nova-manage * fix fakeldap so it can use redis keeper * fix is_running failing because state was stored as a string * more commands in nova-manage for projects and roles * More volume test fixes * typo in reboot instances * Fix mount of drive for test image * don't need sudo anymore * Cleaning up smoketests * boto uses instance_type not size * Fix to volume smoketests * fix display of project name for admin in describe instances * make sure to deexpress before we remove the host since deexpress uses the host * fix error in disassociate address * fixed reversed filtering logic * filter keypairs for vpn keys * allow multiple vpn connections with the same credentials * Added admin command to restart networks * hide vpn instances unless you are an admin and allow run_instances to launch vpn image even if it is private * typo in my ping call * try to ping vpn instances * sensible defaults for instance types * add missing import to pipelib * Give vpns the proper ip address * Fix format addresses * Release 0.2.2-2 * fix more casing errors and make attachment set print * removed extraneous .volume_id * don't allow volumes to be attached to the same mountpoint * fix case for volume attributes * fix sectors off by one * Don't use keeper for instances * fix default state to be 0 instead of pending * Release 0.2.2 * Fix for mpi cpu reporting * fix detach volume * fix status code printing in cloud * add project ids to volumes * add back accidentally removed bridge name. str is reserved, so don't use it as a variable name * whitespace fixes and format instances set of object fixes * Use instdir to iterate through instances * fix bridge name * Adding basic validation of volume size on creation, plus tests for it * finished gutting keeper from volume * First pass at validation unit tests. Haven't figured out class methods yet * Removing keeper sludge * Set volume status properly, first pass at validation decorators * Adding missing default values and fixing bare Redis fetch for volume list * one more handler typo * fix objectstore handler typo * fix modify image attribute typo * NetworkNode doesn't exist anymore * Added back in missing gateway property on networks * Refactored Instance to get rid of _s bits, and fixed some bugs in state management * Delete instance files on shutdown * Flush redis db in setup and teardown of tests * Cleaning up my accidental merge of the docs branch * change pipelib to work with projects * Volumes support intermediate state. Don't have to cast to storage nodes for attach/detach anymore, just let node update redis with state * Adding nojekyll for directories * Fix for #437 (deleting attached volumes), plus some >9 blade_id fixes * fix instance iteration to use self.instdir.all instead of older iterators * nasa ldap defaults * sensible rbac defaults * Tests for rbac code * Patch to allow rbac * Adding mpi data * Adding cloudpipe and vpn data back in to network.py * how we build our debs * Revert "fix a bug with AOE number generation" * re-added cloudpipe * devin's smoketests * tools to clean vlans and run our old install script * fix a bug with AOE number generation * Initial commit of nodemonitor * Create DescribeImageAttribute api method * Create DescribeImageAttribute api method * More rackspace API * git checkpoint commit post-wsgi * update spacing * implement image serving in objectstore so nginx isn't required in development * update twitter username * make a "Running" topic instead of having it flow under "Configuration" * Make nginx config be in a code block * More doc updates: nginx & pycurl * Add a README, because GitHub loves them. Update the getting started docs * update spacing * Commit what I have almost working before diverging * first go at moving from tornado to twisted * implement image serving in objectstore so nginx isn't required in development * update twitter username * Update documentation * fix for reactor.spawnProcess sending deprecation warning * patch from issue 4001 * Fix for LoopingCall failing Added in exception logging around amqp calls Creating deferred in receive before ack() message was causing IOError (interrupted system calls), probably because the same message was getting processed twice in some situations, causing the system calls to be doubled. Moving the ack() earlier fixed the problem. The code works now with an interval of 0 but that causes heavy processor usage. An interval of 0.01 keeps the cpu usage within reasonable limits * get rid of anyjson in rpc and fix bad reference to rpc.Connection * gateway undefined * fix cloud instances method * Various cloud fixes * make get_my_ip return 127.0.0.1 for testing * Adds a Twisted implementation of a process pool * make a "Running" topic instead of having it flow under "Configuration" * Make nginx config be in a code block * More doc updates: nginx & pycurl * Add a README, because GitHub loves them. Update the getting started docs * whitespace fixes for nova/utils.py * Add project methods to nova-manage * Fix novarc to use project when creating access key * removed reference to nonexistent flag * Josh's networking refactor, modified to work with projects * Merged Vish's work on adding projects to nova * missed the gitignore * initial commit nova-2014.1/doc/0000775000175400017540000000000012323722546014455 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/0000775000175400017540000000000012323722545015004 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/0000775000175400017540000000000012323722545017301 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/flavor-extra-specs/0000775000175400017540000000000012323722546023027 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-req.json0000664000175400017540000000003412323721476031512 0ustar jenkinsjenkins00000000000000{ "key1": "new_value1" }nova-2014.1/doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-resp.json0000664000175400017540000000003412323721476031674 0ustar jenkinsjenkins00000000000000{ "key1": "new_value1" }nova-2014.1/doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-req.json0000664000175400017540000000012112323721476031470 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "value1", "key2": "value2" } }nova-2014.1/doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-list-resp.json0000664000175400017540000000012112323721476031362 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "value1", "key2": "value2" } }nova-2014.1/doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-get-resp.json0000664000175400017540000000003012323721476031165 0ustar jenkinsjenkins00000000000000{ "key1": "value1" }nova-2014.1/doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-resp.json0000664000175400017540000000012112323721476031652 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "value1", "key2": "value2" } }nova-2014.1/doc/v3/api_samples/consoles/0000775000175400017540000000000012323722546021127 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/consoles/server-post-resp.json0000664000175400017540000000073512323721476025270 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "C3r5xKS73Y7S", "id": "3f19c120-f64a-4faf-848e-33900b752f83", "links": [ { "href": "http://openstack.example.com/v3/servers/3f19c120-f64a-4faf-848e-33900b752f83", "rel": "self" }, { "href": "http://openstack.example.com/servers/3f19c120-f64a-4faf-848e-33900b752f83", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/consoles/server-post-req.json0000664000175400017540000000046312323721476025104 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/consoles/consoles-create-req.json0000664000175400017540000000000012323721476025664 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/consoles/consoles-list-get-resp.json0000664000175400017540000000014712323721476026347 0ustar jenkinsjenkins00000000000000{ "consoles": [ { "console_type": "fake", "id": 1 } ] }nova-2014.1/doc/v3/api_samples/consoles/consoles-get-resp.json0000664000175400017540000000030612323721476025373 0ustar jenkinsjenkins00000000000000{ "console": { "console_type": "fake", "host": "fake", "id": 1, "instance_name": "instance-00000001", "password": "C4jBpJ6x", "port": 5999 } }nova-2014.1/doc/v3/api_samples/os-evacuate/0000775000175400017540000000000012323722546021516 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-evacuate/server-post-resp.json0000664000175400017540000000073512323721476025657 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "xCQm2Cs2vSFx", "id": "5f1fbc62-29ed-4e4a-9f15-8affc5e0a796", "links": [ { "href": "http://openstack.example.com/v3/servers/5f1fbc62-29ed-4e4a-9f15-8affc5e0a796", "rel": "self" }, { "href": "http://openstack.example.com/servers/5f1fbc62-29ed-4e4a-9f15-8affc5e0a796", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-evacuate/server-post-req.json0000664000175400017540000000046312323721476025473 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-evacuate/server-evacuate-req.json0000664000175400017540000000023612323721476026301 0ustar jenkinsjenkins00000000000000{ "evacuate": { "host": "b419863b7d814906a68fb31703c0dbd6", "admin_password": "MySecretPass", "on_shared_storage": "False" } }nova-2014.1/doc/v3/api_samples/os-evacuate/server-evacuate-resp.json0000664000175400017540000000005012323721476026455 0ustar jenkinsjenkins00000000000000{ "admin_password": "MySecretPass" }nova-2014.1/doc/v3/api_samples/os-config-drive/0000775000175400017540000000000012323722546022275 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-config-drive/server-post-resp.json0000664000175400017540000000073512323721476026436 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "h2cx3Lm47BJc", "id": "f0318e69-11eb-4aed-9840-59b6c72beee8", "links": [ { "href": "http://openstack.example.com/v3/servers/f0318e69-11eb-4aed-9840-59b6c72beee8", "rel": "self" }, { "href": "http://openstack.example.com/servers/f0318e69-11eb-4aed-9840-59b6c72beee8", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-config-drive/server-post-req.json0000664000175400017540000000046312323721476026252 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-config-drive/server-config-drive-get-resp.json0000664000175400017540000000325512323721476030602 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-22T02:33:23Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "1642bbdbd61a0f1c513b4bb6e418326103172698104bfa278eca106b", "id": "7838ff1b-b71f-48b9-91e9-7c08de20b249", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/7838ff1b-b71f-48b9-91e9-7c08de20b249", "rel": "self" }, { "href": "http://openstack.example.com/servers/7838ff1b-b71f-48b9-91e9-7c08de20b249", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-config-drive:config_drive": "", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-22T02:33:25Z", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/os-config-drive/servers-config-drive-details-resp.json0000664000175400017540000000362212323721476031631 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-22T02:33:17Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "1ed067c90341cd9d94bbe5da960922b56f107262cdc75719a0d97b78", "id": "f0318e69-11eb-4aed-9840-59b6c72beee8", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/f0318e69-11eb-4aed-9840-59b6c72beee8", "rel": "self" }, { "href": "http://openstack.example.com/servers/f0318e69-11eb-4aed-9840-59b6c72beee8", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-config-drive:config_drive": "", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-22T02:33:19Z", "user_id": "fake" } ] }nova-2014.1/doc/v3/api_samples/os-aggregates/0000775000175400017540000000000012323722546022032 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-update-post-resp.json0000664000175400017540000000054612323721476030073 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova2", "created_at": "2013-08-18T12:17:56.259751", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova2" }, "name": "newname", "updated_at": "2013-08-18T12:17:56.286720" } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-add-host-post-req.json0000664000175400017540000000011712323721476030124 0ustar jenkinsjenkins00000000000000{ "add_host": { "host": "21549b2f665945baaa7101926a00143c" } } nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-remove-host-post-req.json0000664000175400017540000000012212323721476030665 0ustar jenkinsjenkins00000000000000{ "remove_host": { "host": "bf1454b3d71145d49fca2101c56c728d" } } nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-post-resp.json0000664000175400017540000000035312323721476026607 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2013-08-18T12:17:55.751757", "deleted": 0, "deleted_at": null, "id": 1, "name": "name", "updated_at": null } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-update-post-req.json0000664000175400017540000000014012323721476027677 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "newname", "availability_zone": "nova2" } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregates-metadata-post-resp.json0000664000175400017540000000054512323721476030553 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2013-08-18T12:17:55.959571", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova", "key": "value" }, "name": "name", "updated_at": null } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregates-get-resp.json0000664000175400017540000000051112323721476026560 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2013-08-18T12:17:56.380226", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregates-add-host-post-resp.json0000664000175400017540000000060112323721476030467 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2013-08-18T12:17:56.297823", "deleted": 0, "deleted_at": null, "hosts": [ "21549b2f665945baaa7101926a00143c" ], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregates-remove-host-post-resp.json0000664000175400017540000000051112323721476031234 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2013-08-18T12:17:56.990581", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregates-list-get-resp.json0000664000175400017540000000061212323721476027533 0ustar jenkinsjenkins00000000000000{ "aggregates": [ { "availability_zone": "nova", "created_at": "2013-08-18T12:17:56.856455", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } ] }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-post-req.json0000664000175400017540000000013412323721476026422 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "name", "availability_zone": "nova" } }nova-2014.1/doc/v3/api_samples/os-aggregates/aggregate-metadata-post-req.json0000664000175400017540000000021212323721476030175 0ustar jenkinsjenkins00000000000000{ "set_metadata": { "metadata": { "key": "value" } } }nova-2014.1/doc/v3/api_samples/os-suspend-server/0000775000175400017540000000000012323722546022706 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-suspend-server/server-post-resp.json0000664000175400017540000000073512323721476027047 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-suspend-server/server-post-req.json0000664000175400017540000000046312323721476026663 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-suspend-server/server-resume.json0000664000175400017540000000002612323721476026404 0ustar jenkinsjenkins00000000000000{ "resume": null }nova-2014.1/doc/v3/api_samples/os-suspend-server/server-suspend.json0000664000175400017540000000002712323721476026566 0ustar jenkinsjenkins00000000000000{ "suspend": null }nova-2014.1/doc/v3/api_samples/os-migrations/0000775000175400017540000000000012323722546022075 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-migrations/migrations-get.json0000664000175400017540000000201012323721476025713 0ustar jenkinsjenkins00000000000000{ "migrations": [ { "created_at": "2012-10-29T13:42:02.000000", "dest_compute": "compute2", "dest_host": "1.2.3.4", "dest_node": "node2", "id": 1234, "instance_uuid": "instance_id_123", "new_instance_type_id": 2, "old_instance_type_id": 1, "source_compute": "compute1", "source_node": "node1", "status": "Done", "updated_at": "2012-10-29T13:42:02.000000" }, { "created_at": "2013-10-22T13:42:02.000000", "dest_compute": "compute20", "dest_host": "5.6.7.8", "dest_node": "node20", "id": 5678, "instance_uuid": "instance_id_456", "new_instance_type_id": 6, "old_instance_type_id": 5, "source_compute": "compute10", "source_node": "node10", "status": "Done", "updated_at": "2013-10-22T13:42:02.000000" } ] }nova-2014.1/doc/v3/api_samples/server-metadata/0000775000175400017540000000000012323722546022366 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/server-metadata/server-post-resp.json0000664000175400017540000000073512323721476026527 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "ys9M8HQXvwEJ", "id": "a6ebe5b4-b68b-420b-9c1e-620c4d3e0389", "links": [ { "href": "http://openstack.example.com/v3/servers/a6ebe5b4-b68b-420b-9c1e-620c4d3e0389", "rel": "self" }, { "href": "http://openstack.example.com/servers/a6ebe5b4-b68b-420b-9c1e-620c4d3e0389", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/server-metadata/server-post-req.json0000664000175400017540000000046312323721476026343 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/server-metadata/server-metadata-resp.json0000664000175400017540000000006612323721476027317 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "Foo Value" } }nova-2014.1/doc/v3/api_samples/server-metadata/server-metadata-req.json0000664000175400017540000000006712323721476027136 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "Bar Value" } } nova-2014.1/doc/v3/api_samples/server-metadata/server-metadata-all-req.json0000664000175400017540000000006712323721476027704 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "Foo Value" } } nova-2014.1/doc/v3/api_samples/server-metadata/server-metadata-all-resp.json0000664000175400017540000000006612323721476030065 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "Foo Value" } }nova-2014.1/doc/v3/api_samples/os-certificates/0000775000175400017540000000000012323722546022366 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-certificates/certificate-get-root-resp.json0000664000175400017540000000214412323721476030252 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "-----BEGIN CERTIFICATE-----\nMIICyzCCAjSgAwIBAgIJAJ8zSIxUp/m4MA0GCSqGSIb3DQEBBAUAME4xEjAQBgNV\nBAoTCU5PVkEgUk9PVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMK\nQ2FsaWZvcm5pYTELMAkGA1UEBhMCVVMwHhcNMTIxMDE3MDEzMzM5WhcNMTMxMDE3\nMDEzMzM5WjBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWlu\nIFZpZXcxEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqG\nSIb3DQEBAQUAA4GNADCBiQKBgQDXW4QfQQxJG4MqurqK8nU/Lge0mfNKxXj/Gwvg\n2sQVwxzmKfoxih8Nn6yt0yHMNjhoji1UoWI03TXUnPZRAZmsypGKZeBd7Y1ZOCPB\nXGZVGrQm+PB2kZU+3cD8fVKcueMLLeZ+LRt5d0njnoKhc5xjqMlfFPimHMba4OL6\nTnYzPQIDAQABo4GwMIGtMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFKyoKu4SMOFM\ngx5Ec7p0nrCkabvxMH4GA1UdIwR3MHWAFKyoKu4SMOFMgx5Ec7p0nrCkabvxoVKk\nUDBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcx\nEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTggkAnzNIjFSn+bgwDQYJ\nKoZIhvcNAQEEBQADgYEAXuvXlu1o/SVvykSLhHW8QiAY00yzN/eDzYmZGomgiuoO\n/x+ayVzbrz1UWZnBD+lC4hll2iELSmf22LjLoF+s/9NyPqHxGL3FrfatBkndaiF8\nAx/TMEyCPl7IQWi+3zzatqOKHSHiG7a9SGn/7o2aNTIWKVulfy5GvmbBjBM/0UE=\n-----END CERTIFICATE-----\n", "private_key": null } }nova-2014.1/doc/v3/api_samples/os-certificates/certificate-create-req.json0000664000175400017540000000000012323721476027560 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-certificates/certificate-create-resp.json0000664000175400017540000000672312323721476027764 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "Certificate:\n Data:\n Version: 1 (0x0)\n Serial Number: 1018 (0x3fa)\n Signature Algorithm: md5WithRSAEncryption\n Issuer: O=NOVA ROOT, L=Mountain View, ST=California, C=US\n Validity\n Not Before: Aug 12 07:20:30 2013 GMT\n Not After : Aug 12 07:20:30 2014 GMT\n Subject: C=US, ST=California, O=OpenStack, OU=NovaDev, CN=openstack-fake-2013-08-12T07:20:30Z\n Subject Public Key Info:\n Public Key Algorithm: rsaEncryption\n Public-Key: (1024 bit)\n Modulus:\n 00:ac:ff:b1:d1:ed:54:4e:35:6c:34:b4:8f:0b:04:\n 50:25:a3:e2:4f:02:4c:4f:26:59:bd:f3:fd:eb:da:\n 18:c2:36:aa:63:42:72:1f:88:4f:3a:ec:e7:9f:8e:\n 44:2a:d3:b8:94:7b:20:41:f8:48:02:57:91:4c:16:\n 62:f1:21:d4:f2:40:b5:86:50:d9:61:f0:be:ff:d8:\n 8d:9f:4b:aa:6a:07:38:a2:7f:87:21:fc:e6:6e:1d:\n 0a:95:1a:90:0e:60:c2:24:e9:8e:e8:68:1b:e9:f3:\n c6:b0:7c:da:c5:20:66:9b:85:ea:f5:c9:a7:de:ee:\n 16:b1:51:a0:4d:e3:95:98:df\n Exponent: 65537 (0x10001)\n Signature Algorithm: md5WithRSAEncryption\n 15:42:ca:71:cc:32:af:dc:cf:45:91:df:8a:b8:30:c4:7f:78:\n 80:a7:25:c2:d9:81:3e:b3:dd:22:cc:3b:f8:94:e7:8f:04:f6:\n 93:04:9e:85:d4:10:40:ff:5a:07:47:24:b5:ae:93:ad:8d:e1:\n e6:54:4a:8d:4a:29:53:c4:8d:04:6b:0b:f6:af:38:78:02:c5:\n 05:19:89:82:2d:ba:fd:11:3c:1e:18:c9:0c:3d:03:93:6e:bc:\n 66:70:34:ee:03:78:8a:1d:3d:64:e8:20:2f:90:81:8e:49:1d:\n 07:37:15:66:42:cb:58:39:ad:56:ce:ed:47:c6:78:0b:0e:75:\n 29:ca\n-----BEGIN CERTIFICATE-----\nMIICNDCCAZ0CAgP6MA0GCSqGSIb3DQEBBAUAME4xEjAQBgNVBAoTCU5PVkEgUk9P\nVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMKQ2FsaWZvcm5pYTEL\nMAkGA1UEBhMCVVMwHhcNMTMwODEyMDcyMDMwWhcNMTQwODEyMDcyMDMwWjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UECgwJT3BlblN0\nYWNrMRAwDgYDVQQLDAdOb3ZhRGV2MSwwKgYDVQQDDCNvcGVuc3RhY2stZmFrZS0y\nMDEzLTA4LTEyVDA3OjIwOjMwWjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\nrP+x0e1UTjVsNLSPCwRQJaPiTwJMTyZZvfP969oYwjaqY0JyH4hPOuznn45EKtO4\nlHsgQfhIAleRTBZi8SHU8kC1hlDZYfC+/9iNn0uqagc4on+HIfzmbh0KlRqQDmDC\nJOmO6Ggb6fPGsHzaxSBmm4Xq9cmn3u4WsVGgTeOVmN8CAwEAATANBgkqhkiG9w0B\nAQQFAAOBgQAVQspxzDKv3M9Fkd+KuDDEf3iApyXC2YE+s90izDv4lOePBPaTBJ6F\n1BBA/1oHRyS1rpOtjeHmVEqNSilTxI0Eawv2rzh4AsUFGYmCLbr9ETweGMkMPQOT\nbrxmcDTuA3iKHT1k6CAvkIGOSR0HNxVmQstYOa1Wzu1HxngLDnUpyg==\n-----END CERTIFICATE-----\n", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQCs/7HR7VRONWw0tI8LBFAlo+JPAkxPJlm98/3r2hjCNqpjQnIf\niE867OefjkQq07iUeyBB+EgCV5FMFmLxIdTyQLWGUNlh8L7/2I2fS6pqBziif4ch\n/OZuHQqVGpAOYMIk6Y7oaBvp88awfNrFIGabher1yafe7haxUaBN45WY3wIDAQAB\nAoGBAIrcr2I/KyWf0hw4Nn10V9TuyE/9Gz2JHg3QFKjFJox2DqygADT5WAeHc6Bq\nNKNf0NA2SL1LSpm+ql01tvOw4VjE5TF6OHiIzHuTTnXggG6vuA8rxp6L24HtkAcC\n0CBno9ggSX6jVornJPBfxpkwITYSvH57BUFVD7ovbPyWGzS5AkEA1JeUtL6zxwps\nWRr1aJ8Ill2uQk/RUIvSZOU61s+B190zvHikFy8LD8CI6vvBmjC/IZuZVedufjqs\n4vX82uDO3QJBANBSh2b2dyB4AGVFY9vXMRtALAspJHbLHy+zTKxlGPFiuz7Se3ps\n8Kehz4C/CBXgQkk194dwFSGE19/PQfyJROsCQQCFFDJZhrtBUMwMZ2zSRiN5BUGt\nbwuncS+OS1Su3Yz5VRYq2BZYEPHKtYrAFkLWQ8eRwTaWaN5pFE/fb38OgQXdAkA4\nDm0W/K0zlHbuyUxEpNQ28/6mBi0ktiWvLT0tioq6sYmXLwZA/D2JrhXrG/xt/ol3\nr8jqrfNRsLByLhAgh0N/AkEAl2eR0O97lTEgFNqzIQwVmIAn9mBO3cnf3tycvlDU\nm6eb2CS242y4QalfCCAEjxoJURdfsm3/D1iFo00X+IWF+A==\n-----END RSA PRIVATE KEY-----\n" } }nova-2014.1/doc/v3/api_samples/extension-info/0000775000175400017540000000000012323722546022247 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/extension-info/extensions-list-resp.json0000664000175400017540000000054312323721476027264 0ustar jenkinsjenkins00000000000000{ "extensions": [ { "alias": "extensions", "description": "Extension information.", "name": "extensions", "version": 1 }, { "alias": "flavors", "description": "Flavors Extension.", "name": "flavors", "version": 1 } ] } nova-2014.1/doc/v3/api_samples/extension-info/extensions-get-resp.json0000664000175400017540000000022612323721476027066 0ustar jenkinsjenkins00000000000000{ "extension": { "alias": "flavors", "description": "Flavors Extension.", "name": "flavors", "version": 1 } } nova-2014.1/doc/v3/api_samples/os-availability-zone/0000775000175400017540000000000012323722546023344 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-availability-zone/server-post-resp.json0000664000175400017540000000073412323721476027504 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "a2apKsfp7Rom", "id": "e88c3898-e971-42e5-8325-b7ff921efb15", "links": [ { "href": "http://openstack.example.com/v3/servers/e88c3898-e971-42e5-8325-b7ff921efb15", "rel": "self" }, { "href": "http://openstack.example.com/servers/e88c3898-e971-42e5-8325-b7ff921efb15", "rel": "bookmark" } ] } }nova-2014.1/doc/v3/api_samples/os-availability-zone/server-post-req.json0000664000175400017540000000164612323721476027325 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/openstack/flavors/1", "os-availability-zone:availability_zone" : "test" "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-availability-zone/availability-zone-list-resp.json0000664000175400017540000000030512323721476031601 0ustar jenkinsjenkins00000000000000{ "availability_zone_info": [ { "hosts": null, "zone_name": "nova", "zone_state": { "available": true } } ] }nova-2014.1/doc/v3/api_samples/os-availability-zone/availability-zone-detail-resp.json0000664000175400017540000000374612323721476032104 0ustar jenkinsjenkins00000000000000{ "availability_zone_info": [ { "hosts": { "cells": { "nova-cells": { "active": true, "available": true, "updated_at": null } }, "cert": { "nova-cert": { "active": true, "available": true, "updated_at": null } }, "conductor": { "nova-conductor": { "active": true, "available": true, "updated_at": null } }, "consoleauth": { "nova-consoleauth": { "active": true, "available": true, "updated_at": null } }, "network": { "nova-network": { "active": true, "available": true, "updated_at": null } }, "scheduler": { "nova-scheduler": { "active": true, "available": true, "updated_at": null } } }, "zone_name": "internal", "zone_state": { "available": true } }, { "hosts": { "compute": { "nova-compute": { "active": true, "available": true, "updated_at": null } } }, "zone_name": "nova", "zone_state": { "available": true } } ] }nova-2014.1/doc/v3/api_samples/os-migrate-server/0000775000175400017540000000000012323722546022655 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-migrate-server/server-post-resp.json0000664000175400017540000000073512323721476027016 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-migrate-server/live-migrate-server.json0000664000175400017540000000022712323721476027443 0ustar jenkinsjenkins00000000000000{ "migrate_live": { "host": "01c0cadef72d47e28a672a76060d492c", "block_migration": false, "disk_over_commit": false } }nova-2014.1/doc/v3/api_samples/os-migrate-server/server-post-req.json0000664000175400017540000000046312323721476026632 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-migrate-server/migrate-server.json0000664000175400017540000000002712323721476026504 0ustar jenkinsjenkins00000000000000{ "migrate": null }nova-2014.1/doc/v3/api_samples/os-scheduler-hints/0000775000175400017540000000000012323722546023022 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-scheduler-hints/scheduler-hints-post-req.json0000664000175400017540000000056712323721476030577 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/openstack/flavors/1", "os-scheduler-hints:scheduler_hints": { "same_host": "48e6a9f6-30af-47e0-bc04-acaed113bb4e" } } } nova-2014.1/doc/v3/api_samples/os-scheduler-hints/scheduler-hints-post-resp.json0000664000175400017540000000073412323721476030755 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "erQXgJ8NBDD4", "id": "4c8b1df3-46f7-4555-98d8-cdb869aaf9ad", "links": [ { "href": "http://openstack.example.com/v3/servers/4c8b1df3-46f7-4555-98d8-cdb869aaf9ad", "rel": "self" }, { "href": "http://openstack.example.com/servers/4c8b1df3-46f7-4555-98d8-cdb869aaf9ad", "rel": "bookmark" } ] } }nova-2014.1/doc/v3/api_samples/flavors/0000775000175400017540000000000012323722546020756 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/flavors/flavors-list-resp.json0000664000175400017540000000375712323721476025262 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny" }, { "id": "2", "links": [ { "href": "http://openstack.example.com/v3/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/flavors/2", "rel": "bookmark" } ], "name": "m1.small" }, { "id": "3", "links": [ { "href": "http://openstack.example.com/v3/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/flavors/3", "rel": "bookmark" } ], "name": "m1.medium" }, { "id": "4", "links": [ { "href": "http://openstack.example.com/v3/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/flavors/4", "rel": "bookmark" } ], "name": "m1.large" }, { "id": "5", "links": [ { "href": "http://openstack.example.com/v3/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge" } ] }nova-2014.1/doc/v3/api_samples/flavors/flavors-detail-resp.json0000664000175400017540000000572712323721476025550 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disabled": false, "disk": 1, "ephemeral": 0, "flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 20, "ephemeral": 0, "flavor-access:is_public": true, "id": "2", "links": [ { "href": "http://openstack.example.com/v3/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 40, "ephemeral": 0, "flavor-access:is_public": true, "id": "3", "links": [ { "href": "http://openstack.example.com/v3/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "swap": 0, "vcpus": 2 }, { "disabled": false, "disk": 80, "ephemeral": 0, "flavor-access:is_public": true, "id": "4", "links": [ { "href": "http://openstack.example.com/v3/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "swap": 0, "vcpus": 4 }, { "disabled": false, "disk": 160, "ephemeral": 0, "flavor-access:is_public": true, "id": "5", "links": [ { "href": "http://openstack.example.com/v3/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "swap": 0, "vcpus": 8 } ] }nova-2014.1/doc/v3/api_samples/flavors/flavor-get-resp.json0000664000175400017540000000101612323721476024665 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 1, "ephemeral": 0, "flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": 0, "vcpus": 1 } }nova-2014.1/doc/v3/api_samples/keypairs/0000775000175400017540000000000012323722546021131 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/keypairs/keypairs-post-req.json0000664000175400017540000000013112323721476025417 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "keypair-ab9ff2e6-a6d7-4915-a241-044c369c07f9" } }nova-2014.1/doc/v3/api_samples/keypairs/keypairs-post-resp.json0000664000175400017540000000445512323721476025616 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "7e:eb:ab:24:ba:d1:e1:88:ae:9a:fb:66:53:df:d3:bd", "name": "keypair-50ca852e-273f-4cdc-8949-45feba200837", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEApBdzF+fTq5QbN3R+QlO5TZr6W64GcUqcho5ZxPBZZIq53P1K\ndtpaY856ManqEwME1tN+JOw8+mmCK2RpkMHtk5BNPOMqr5Y+OQ5MqI/eX1v7GWnJ\ntHGTbi+vRDmxBh3aa3xiUGo66c9tjUKAg/ExQfFr/vKJvTR/S3urPlj3vfFgu+yi\n8PKoH0LGyHsviWsD1peDuu2XS+ca8qbkY3yD1o4Mv1R/OSF4P2fxjjWdp8R4EkoT\nJMKkhRAgAuS9zxwftPv9djP4opHWrRUlRo6bh75CzrN6Hu5uh5Tn5bkifOQcy1gW\n772vd6pBpi4OGQHPKz4djvmCLAVBzSyzDP6EKQIDAQABAoIBAQCB+tU/ZXKlIe+h\nMNTmoz1QfOe+AY625Rwx9cakGqMk4kKyC62VkgcxshfXCToSjzyhEuyEQOFYloT2\n7FY2xXb0gcS861Efv0pQlcQhbbz/GnQ/wC13ktPu3zTdPTm9l54xsFiMTGmYVaf4\n0mnMmhyjmKIsVGDJEDGZUD/oZj7wJGOFha5M4FZrZlJIrEZC0rGGlcC0kGF2no6B\nj1Mu7HjyK3pTKf4dlp+jeRikUF5Pct+qT+rcv2rZ3fl3inxtlLEwZeFPbp/njf/U\nIGxFzZsuLmiFlsJar6M5nEckTB3p25maWWaR8/0jvJRgsPnuoUrUoGDq87DMKCdk\nlw6by9fRAoGBANhnS9ko7Of+ntqIFR7xOG9p/oPATztgHkFxe4GbQ0leaDRTx3vE\ndQmUCnn24xtyVECaI9a4IV+LP1npw8niWUJ4pjgdAlkF4cCTu9sN+cBO15SfdACI\nzD1DaaHmpFCAWlpTo68VWlvWll6i2ncCkRJR1+q/C/yQz7asvl4AakElAoGBAMId\nxqMT2Sy9xLuHsrAoMUvBOkwaMYZH+IAb4DvUDjVIiKWjmonrmopS5Lpb+ALBKqZe\neVfD6HwWQqGwCFItToaEkZvrNfTapoNCHWWg001D49765UV5lMrArDbM1vXtFfM4\nDRYM6+Y6o/6QH8EBgXtyBxcYthIDBM3wBJa67xG1AoGAKTm8fFlMkIG0N4N3Kpbf\nnnH915GaRoBwIx2AXtd6QQ7oIRfYx95MQY/fUw7SgxcLr+btbulTCkWXwwRClUI2\nqPAdElGMcfMp56r9PaTy8EzUyu55heSJrB4ckIhEw0VAcTa/1wnlVduSd+LkZYmq\no2fOD11n5iycNXvBJF1F4LUCgYAMaRbwCi7SW3eefbiA5rDwJPRzNSGBckyC9EVL\nzezynyaNYH5a3wNMYKxa9dJPasYtSND9OXs9o7ay26xMhLUGiKc+jrUuaGRI9Asp\nGjUoNXT2JphN7s4CgHsCLep4YqYKnMTJah4S5CDj/5boIg6DM/EcGupZEHRYLkY8\n1MrAGQKBgQCi9yeC39ctLUNn+Ix604gttWWChdt3ozufTZ7HybJOSRA9Gh3iD5gm\nzlz0xqpGShKpOY2k+ftvja0poMdGeJLt84P3r2q01IgI7w0LmOj5m0W10dHysH27\nBWpCnHdBJMxnBsMRPoM4MKkmKWD9l5PSTCTWtkIpsyuDCko6D9UwZA==\n-----END RSA PRIVATE KEY-----\n", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkF3MX59OrlBs3dH5CU7lNmvpbrgZxSpyGjlnE8Flkirnc/Up22lpjznoxqeoTAwTW034k7Dz6aYIrZGmQwe2TkE084yqvlj45Dkyoj95fW/sZacm0cZNuL69EObEGHdprfGJQajrpz22NQoCD8TFB8Wv+8om9NH9Le6s+WPe98WC77KLw8qgfQsbIey+JawPWl4O67ZdL5xrypuRjfIPWjgy/VH85IXg/Z/GONZ2nxHgSShMkwqSFECAC5L3PHB+0+/12M/iikdatFSVGjpuHvkLOs3oe7m6HlOfluSJ85BzLWBbvva93qkGmLg4ZAc8rPh2O+YIsBUHNLLMM/oQp Generated by Nova\n", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/keypairs/keypairs-import-post-req.json0000664000175400017540000000053112323721476026733 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "keypair-d20a3d59-9433-4b79-8726-20b431d89c78", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova" } }nova-2014.1/doc/v3/api_samples/keypairs/keypairs-get-resp.json0000664000175400017540000000124112323721510025363 0ustar jenkinsjenkins00000000000000{ "keypairs": [ { "keypair": { "fingerprint": "7e:eb:ab:24:ba:d1:e1:88:ae:9a:fb:66:53:df:d3:bd", "name": "keypair-50ca852e-273f-4cdc-8949-45feba200837", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkF3MX59OrlBs3dH5CU7lNmvpbrgZxSpyGjlnE8Flkirnc/Up22lpjznoxqeoTAwTW034k7Dz6aYIrZGmQwe2TkE084yqvlj45Dkyoj95fW/sZacm0cZNuL69EObEGHdprfGJQajrpz22NQoCD8TFB8Wv+8om9NH9Le6s+WPe98WC77KLw8qgfQsbIey+JawPWl4O67ZdL5xrypuRjfIPWjgy/VH85IXg/Z/GONZ2nxHgSShMkwqSFECAC5L3PHB+0+/12M/iikdatFSVGjpuHvkLOs3oe7m6HlOfluSJ85BzLWBbvva93qkGmLg4ZAc8rPh2O+YIsBUHNLLMM/oQp Generated by Nova\n" } } ] }nova-2014.1/doc/v3/api_samples/keypairs/keypairs-import-post-resp.json0000664000175400017540000000067612323721476027127 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c", "name": "keypair-803a1926-af78-4b05-902a-1d6f7a8d9d3e", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/os-services/0000775000175400017540000000000012323722546021544 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-services/services-list-get-resp.json0000664000175400017540000000227112323721476026762 0ustar jenkinsjenkins00000000000000{ "services": [ { "id": 1, "binary": "nova-scheduler", "disabled_reason": "test1", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:02.000000", "zone": "internal" }, { "id": 2, "binary": "nova-compute", "disabled_reason": "test2", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:05.000000", "zone": "nova" }, { "id": 3, "binary": "nova-scheduler", "disabled_reason": "", "host": "host2", "state": "down", "status": "enabled", "updated_at": "2012-09-19T06:55:34.000000", "zone": "internal" }, { "id": 4, "binary": "nova-compute", "disabled_reason": "test4", "host": "host2", "state": "down", "status": "disabled", "updated_at": "2012-09-18T08:03:38.000000", "zone": "nova" } ] } nova-2014.1/doc/v3/api_samples/os-services/service-disable-log-put-req.json0000664000175400017540000000012512323721476027651 0ustar jenkinsjenkins00000000000000{ "host": "host1", "binary": "nova-compute", "disabled_reason": "test2" }nova-2014.1/doc/v3/api_samples/os-services/service-enable-put-req.json0000664000175400017540000000006512323721476026720 0ustar jenkinsjenkins00000000000000{ "host": "host1", "binary": "nova-compute" }nova-2014.1/doc/v3/api_samples/os-services/service-enable-put-resp.json0000664000175400017540000000016112323721476027077 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "host": "host1", "status": "enabled" } }nova-2014.1/doc/v3/api_samples/os-services/service-disable-log-put-resp.json0000664000175400017540000000022612323721476030035 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "disabled_reason": "test2", "host": "host1", "status": "disabled" } }nova-2014.1/doc/v3/api_samples/os-services/service-disable-put-resp.json0000664000175400017540000000016212323721476027255 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "host": "host1", "status": "disabled" } }nova-2014.1/doc/v3/api_samples/os-services/service-disable-put-req.json0000664000175400017540000000006512323721476027075 0ustar jenkinsjenkins00000000000000{ "host": "host1", "binary": "nova-compute" }nova-2014.1/doc/v3/api_samples/servers/0000775000175400017540000000000012323722546020773 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/servers/server-post-resp.json0000664000175400017540000000073512323721476025134 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "6NpUwoz2QDRN", "id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb", "links": [ { "href": "http://openstack.example.com/v3/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb", "rel": "self" }, { "href": "http://openstack.example.com/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/servers/server-post-req.json0000664000175400017540000000046312323721476024750 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral.json0000664000175400017540000000154312323721476031670 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "name" : "foobar", "admin_password" : "seekr3t", "metadata" : { "meta_var" : "meta_val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ], "preserve_ephemeral": true } }nova-2014.1/doc/v3/api_samples/servers/server-action-revert-resize.json0000664000175400017540000000003612323721476027253 0ustar jenkinsjenkins00000000000000{ "revert_resize" : null }nova-2014.1/doc/v3/api_samples/servers/server-action-create-image.json0000664000175400017540000000020112323721476026762 0ustar jenkinsjenkins00000000000000{ "create_image" : { "name" : "foo-image", "metadata": { "meta_var": "meta_val" } } }nova-2014.1/doc/v3/api_samples/servers/server-get-resp.json0000664000175400017540000000320212323721476024716 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-03T04:01:32Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "92154fab69d5883ba2c8622b7e65f745dd33257221c07af363c51b29", "id": "0e44cc9c-e052-415d-afbf-469b0d384170", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/0e44cc9c-e052-415d-afbf-469b0d384170", "rel": "self" }, { "href": "http://openstack.example.com/servers/0e44cc9c-e052-415d-afbf-469b0d384170", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-03T04:01:33Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/servers/servers-details-resp.json0000664000175400017540000000354312323721476025757 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-03T04:01:32Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "bcf92836fc9ed4203a75cb0337afc7f917d2be504164b995c2334b25", "id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb", "rel": "self" }, { "href": "http://openstack.example.com/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-03T04:01:32Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/servers/server-action-reboot.json0000664000175400017540000000006212323721476025736 0ustar jenkinsjenkins00000000000000{ "reboot" : { "type" : "HARD" } }nova-2014.1/doc/v3/api_samples/servers/server-action-rebuild-resp.json0000664000175400017540000000317612323721476027052 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "admin_password": "seekr3t", "created": "2013-11-14T06:29:00Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "28d8d56f0e3a77e20891f455721cbb68032e017045e20aa5dfc6cb66", "id": "a0a80a94-3d81-4a10-822a-daa0cf9e870b", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v3/servers/a0a80a94-3d81-4a10-822a-daa0cf9e870b", "rel": "self" }, { "href": "http://openstack.example.com/servers/a0a80a94-3d81-4a10-822a-daa0cf9e870b", "rel": "bookmark" } ], "metadata": { "meta_var": "meta_val" }, "name": "foobar", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-11-14T06:29:02Z", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/servers/servers-list-resp.json0000664000175400017540000000103212323721476025274 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "22c91117-08de-4894-9aa9-6ef382400985", "links": [ { "href": "http://openstack.example.com/v3/servers/22c91117-08de-4894-9aa9-6ef382400985", "rel": "self" }, { "href": "http://openstack.example.com/servers/22c91117-08de-4894-9aa9-6ef382400985", "rel": "bookmark" } ], "name": "new-server-test" } ] }nova-2014.1/doc/v3/api_samples/servers/server-action-rebuild.json0000664000175400017540000000147712323721476026105 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "name" : "foobar", "admin_password" : "seekr3t", "metadata" : { "meta_var" : "meta_val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/servers/server-action-confirm-resize.json0000664000175400017540000000003712323721476027402 0ustar jenkinsjenkins00000000000000{ "confirm_resize" : null }nova-2014.1/doc/v3/api_samples/servers/server-action-resize.json0000664000175400017540000000006512323721476025750 0ustar jenkinsjenkins00000000000000{ "resize" : { "flavor_ref" : "2" } }nova-2014.1/doc/v3/api_samples/os-extended-availability-zone/0000775000175400017540000000000012323722546025142 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-extended-availability-zone/server-post-resp.json0000664000175400017540000000073512323721476031303 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "87taVVreqh6R", "id": "f22e4521-d03a-4e9f-9fd3-016b9e227219", "links": [ { "href": "http://openstack.example.com/v3/servers/f22e4521-d03a-4e9f-9fd3-016b9e227219", "rel": "self" }, { "href": "http://openstack.example.com/servers/f22e4521-d03a-4e9f-9fd3-016b9e227219", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-extended-availability-zone/server-post-req.json0000664000175400017540000000046312323721476031117 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-extended-availability-zone/server-get-resp.json0000664000175400017540000000330512323721476031071 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T02:54:56Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "b75d6736650f9b272223ceb48f4cde001de1856e381613a922117ab7", "id": "f22e4521-d03a-4e9f-9fd3-016b9e227219", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/f22e4521-d03a-4e9f-9fd3-016b9e227219", "rel": "self" }, { "href": "http://openstack.example.com/servers/f22e4521-d03a-4e9f-9fd3-016b9e227219", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-availability-zone:availability_zone": "nova", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T02:54:57Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-extended-availability-zone/servers-detail-resp.json0000664000175400017540000000365212323721476031744 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T02:54:56Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "cf5540800371e53064a60b36ff9d6d1d6a8719ffc870c63a270c6bee", "id": "55f43fa2-dc7c-4c0b-b21a-76f9abe516f9", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/55f43fa2-dc7c-4c0b-b21a-76f9abe516f9", "rel": "self" }, { "href": "http://openstack.example.com/servers/55f43fa2-dc7c-4c0b-b21a-76f9abe516f9", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-availability-zone:availability_zone": "nova", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T02:54:58Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/os-server-diagnostics/0000775000175400017540000000000012323722546023534 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-server-diagnostics/server-post-resp.json0000664000175400017540000000073512323721476027675 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "H83mnjinc5jy", "id": "b2bbf280-a78d-4724-90ba-b00dd5659097", "links": [ { "href": "http://openstack.example.com/v3/servers/b2bbf280-a78d-4724-90ba-b00dd5659097", "rel": "self" }, { "href": "http://openstack.example.com/servers/b2bbf280-a78d-4724-90ba-b00dd5659097", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json0000664000175400017540000000060212323721476031765 0ustar jenkinsjenkins00000000000000{ "cpu0_time": 17300000000, "memory": 524288, "vda_errors": -1, "vda_read": 262144, "vda_read_req": 112, "vda_write": 5778432, "vda_write_req": 488, "vnet1_rx": 2070139, "vnet1_rx_drop": 0, "vnet1_rx_errors": 0, "vnet1_rx_packets": 26701, "vnet1_tx": 140208, "vnet1_tx_drop": 0, "vnet1_tx_errors": 0, "vnet1_tx_packets": 662 }nova-2014.1/doc/v3/api_samples/os-server-diagnostics/server-post-req.json0000664000175400017540000000046312323721476027511 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-shelve/0000775000175400017540000000000012323722546021207 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-shelve/server-post-resp.json0000664000175400017540000000073412323721476025347 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "LJGRdNsvzh6z", "id": "1d08717a-835e-4dca-9bfb-166fa18a6715", "links": [ { "href": "http://openstack.example.com/v3/servers/1d08717a-835e-4dca-9bfb-166fa18a6715", "rel": "self" }, { "href": "http://openstack.example.com/servers/1d08717a-835e-4dca-9bfb-166fa18a6715", "rel": "bookmark" } ] } }nova-2014.1/doc/v3/api_samples/os-shelve/server-post-req.json0000664000175400017540000000156312323721476025166 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-shelve/os-shelve.json0000664000175400017540000000002612323721476024006 0ustar jenkinsjenkins00000000000000{ "shelve": null }nova-2014.1/doc/v3/api_samples/os-shelve/os-shelve-offload.json0000664000175400017540000000003712323721476025420 0ustar jenkinsjenkins00000000000000{ "shelve_offload": null } nova-2014.1/doc/v3/api_samples/os-shelve/os-unshelve.json0000664000175400017540000000003112323721476024345 0ustar jenkinsjenkins00000000000000{ "unshelve": null } nova-2014.1/doc/v3/api_samples/os-console-output/0000775000175400017540000000000012323722546022721 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-console-output/server-post-resp.json0000664000175400017540000000073512323721476027062 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "8mQaAgHHFsDp", "id": "71e8cf04-0486-46ae-9d18-e51f4978fa13", "links": [ { "href": "http://openstack.example.com/v3/servers/71e8cf04-0486-46ae-9d18-e51f4978fa13", "rel": "self" }, { "href": "http://openstack.example.com/servers/71e8cf04-0486-46ae-9d18-e51f4978fa13", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-console-output/console-output-post-resp.json0000664000175400017540000000007312323721476030547 0ustar jenkinsjenkins00000000000000{ "output": "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE" }nova-2014.1/doc/v3/api_samples/os-console-output/server-post-req.json0000664000175400017540000000046312323721476026676 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-console-output/console-output-post-req.json0000664000175400017540000000007212323721476030364 0ustar jenkinsjenkins00000000000000{ "get_console_output": { "length": 50 } }nova-2014.1/doc/v3/api_samples/flavor-access/0000775000175400017540000000000012323722546022032 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-create-resp.json0000664000175400017540000000103012323721476027660 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 10, "ephemeral": 0, "flavor-access:is_public": false, "id": "10", "links": [ { "href": "http://openstack.example.com/v3/flavors/10", "rel": "self" }, { "href": "http://openstack.example.com/flavors/10", "rel": "bookmark" } ], "name": "test_flavor", "ram": 1024, "swap": 0, "vcpus": 2 } }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-list-resp.json0000664000175400017540000000032312323721476027374 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "10", "tenant_id": "openstack" }, { "flavor_id": "10", "tenant_id": "fake_tenant" } ] }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-detail-resp.json0000664000175400017540000000572712323721476027700 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disabled": false, "disk": 1, "ephemeral": 0, "flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 20, "ephemeral": 0, "flavor-access:is_public": true, "id": "2", "links": [ { "href": "http://openstack.example.com/v3/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 40, "ephemeral": 0, "flavor-access:is_public": true, "id": "3", "links": [ { "href": "http://openstack.example.com/v3/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "swap": 0, "vcpus": 2 }, { "disabled": false, "disk": 80, "ephemeral": 0, "flavor-access:is_public": true, "id": "4", "links": [ { "href": "http://openstack.example.com/v3/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "swap": 0, "vcpus": 4 }, { "disabled": false, "disk": 160, "ephemeral": 0, "flavor-access:is_public": true, "id": "5", "links": [ { "href": "http://openstack.example.com/v3/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "swap": 0, "vcpus": 8 } ] }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-show-resp.json0000664000175400017540000000101612323721476027401 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 1, "ephemeral": 0, "flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": 0, "vcpus": 1 } }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-remove-tenant-req.json0000664000175400017540000000011212323721476031017 0ustar jenkinsjenkins00000000000000{ "remove_tenant_access": { "tenant_id": "fake_tenant" } }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-create-req.json0000664000175400017540000000026212323721476027504 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "test_flavor", "ram": 1024, "vcpus": 2, "disk": 10, "id": "10", "flavor-access:is_public": false } }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-add-tenant-resp.json0000664000175400017540000000032312323721476030440 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "10", "tenant_id": "openstack" }, { "flavor_id": "10", "tenant_id": "fake_tenant" } ] }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-add-tenant-req.json0000664000175400017540000000010712323721476030256 0ustar jenkinsjenkins00000000000000{ "add_tenant_access": { "tenant_id": "fake_tenant" } }nova-2014.1/doc/v3/api_samples/flavor-access/flavor-access-remove-tenant-resp.json0000664000175400017540000000017012323721476031205 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "10", "tenant_id": "openstack" } ] }nova-2014.1/doc/v3/api_samples/os-security-groups/0000775000175400017540000000000012323722546023105 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-security-groups/server-post-resp.json0000664000175400017540000000112312323721476027236 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "ki8cbWeZdxH6", "id": "2dabdd93-ced7-4607-a542-2516de84e0e5", "links": [ { "href": "http://openstack.example.com/v3/servers/2dabdd93-ced7-4607-a542-2516de84e0e5", "rel": "self" }, { "href": "http://openstack.example.com/servers/2dabdd93-ced7-4607-a542-2516de84e0e5", "rel": "bookmark" } ], "os-security-groups:security_groups": [ { "name": "test" } ] } } nova-2014.1/doc/v3/api_samples/os-security-groups/server-post-req.json0000664000175400017540000000061112323721476027055 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "os-security-groups:security_groups": [{"name": "test"}] } } nova-2014.1/doc/v3/api_samples/os-security-groups/server-get-resp.json0000664000175400017540000000337012323721476027036 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-25T03:29:13Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "0e312d6763795d572ccd716973fd078290d9ec446517b222d3395660", "id": "f6961f7a-0133-4f27-94cd-901dca4ba426", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/f6961f7a-0133-4f27-94cd-901dca4ba426", "rel": "self" }, { "href": "http://openstack.example.com/servers/f6961f7a-0133-4f27-94cd-901dca4ba426", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "os-security-groups:security_groups": [ { "name": "test" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-25T03:29:14Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-security-groups/servers-detail-resp.json0000664000175400017540000000375512323721476027713 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-25T03:29:11Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "afeeb125d4d37d0a2123e3144a20a6672fda5d4b6cb85ec193430d82", "id": "1b94e3fc-1b1c-431a-a077-6b280fb720ce", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/1b94e3fc-1b1c-431a-a077-6b280fb720ce", "rel": "self" }, { "href": "http://openstack.example.com/servers/1b94e3fc-1b1c-431a-a077-6b280fb720ce", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "os-security-groups:security_groups": [ { "name": "test" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-25T03:29:12Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/os-access-ips/0000775000175400017540000000000012323722546021753 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-access-ips/server-post-resp.json0000664000175400017540000000107512323721476026112 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "n7JGBda664QG", "id": "934760e1-2b0b-4f9e-a916-eac1e69839dc", "links": [ { "href": "http://openstack.example.com/v3/servers/934760e1-2b0b-4f9e-a916-eac1e69839dc", "rel": "self" }, { "href": "http://openstack.example.com/servers/934760e1-2b0b-4f9e-a916-eac1e69839dc", "rel": "bookmark" } ], "os-access-ips:access_ip_v4": "1.2.3.4", "os-access-ips:access_ip_v6": "fe80::" } }nova-2014.1/doc/v3/api_samples/os-access-ips/server-post-req.json0000664000175400017540000000171512323721476025731 0ustar jenkinsjenkins00000000000000{ "server" : { "os-access-ips:access_ip_v4": "1.2.3.4", "os-access-ips:access_ip_v6": "fe80::", "name" : "new-server-test", "image_ref" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-access-ips/server-put-resp.json0000664000175400017540000000331012323721476025727 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-11-06T08:11:57Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "ea0fd522e5bc2fea872429b331304a6f930f2d9aa2a5dc95b3c6061a", "id": "fea9595c-ce6e-4565-987e-2d301fe056ac", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v3/servers/fea9595c-ce6e-4565-987e-2d301fe056ac", "rel": "self" }, { "href": "http://openstack.example.com/servers/fea9595c-ce6e-4565-987e-2d301fe056ac", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-access-ips:access_ip_v4": "4.3.2.1", "os-access-ips:access_ip_v6": "80fe::", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-11-06T08:11:58Z", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/os-access-ips/server-put-req.json0000664000175400017540000000017112323721476025547 0ustar jenkinsjenkins00000000000000{ "server": { "os-access-ips:access_ip_v4": "4.3.2.1", "os-access-ips:access_ip_v6": "80fe::" } }nova-2014.1/doc/v3/api_samples/os-access-ips/server-get-resp.json0000664000175400017540000000334212323721476025703 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-11T03:23:12Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "b3a6fd97c027e18d6d9c7506eea8a236cf2ceca420cfdfe0239a64a8", "id": "5eedbf0c-c303-4ed3-933a-a4d3732cfa0a", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v3/servers/5eedbf0c-c303-4ed3-933a-a4d3732cfa0a", "rel": "self" }, { "href": "http://openstack.example.com/servers/5eedbf0c-c303-4ed3-933a-a4d3732cfa0a", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-access-ips:access_ip_v4": "1.2.3.4", "os-access-ips:access_ip_v6": "fe80::", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-11T03:23:13Z", "user_id": "fake", "key_name": null } }nova-2014.1/doc/v3/api_samples/os-access-ips/servers-details-resp.json0000664000175400017540000000371312323721476026736 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-11T03:23:11Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "9896cb12c9845becf1b9b06c8ff5b131d20300f83e2cdffc92e3f4a4", "id": "934760e1-2b0b-4f9e-a916-eac1e69839dc", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v3/servers/934760e1-2b0b-4f9e-a916-eac1e69839dc", "rel": "self" }, { "href": "http://openstack.example.com/servers/934760e1-2b0b-4f9e-a916-eac1e69839dc", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-access-ips:access_ip_v4": "1.2.3.4", "os-access-ips:access_ip_v6": "fe80::", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-11T03:23:12Z", "user_id": "fake", "key_name": null } ] }nova-2014.1/doc/v3/api_samples/os-access-ips/server-action-rebuild-resp.json0000664000175400017540000000335512323721476030031 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "admin_password": "99WHAxN8gpvg", "created": "2013-11-06T07:51:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "5c8072dbcda8ce3f26deb6662bd7718e1a6d349bdf2296911d1be4ac", "id": "53a63a19-c145-47f8-9ae5-b39d6bff33ec", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v3/servers/53a63a19-c145-47f8-9ae5-b39d6bff33ec", "rel": "self" }, { "href": "http://openstack.example.com/servers/53a63a19-c145-47f8-9ae5-b39d6bff33ec", "rel": "bookmark" } ], "metadata": { "meta_var": "meta_val" }, "name": "new-server-test", "os-access-ips:access_ip_v4": "4.3.2.1", "os-access-ips:access_ip_v6": "80fe::", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-11-06T07:51:11Z", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/os-access-ips/server-action-rebuild.json0000664000175400017540000000160312323721476027054 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "os-access-ips:access_ip_v4": "4.3.2.1", "os-access-ips:access_ip_v6": "80fe::", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "name" : "new-server-test", "metadata" : { "meta_var" : "meta_val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-extended-volumes/0000775000175400017540000000000012323722546023211 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-extended-volumes/server-post-resp.json0000664000175400017540000000073512323721476027352 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "uNqGTziMK3px", "id": "7d62983e-23df-4320-bc89-bbc77f2a2e40", "links": [ { "href": "http://openstack.example.com/v3/servers/7d62983e-23df-4320-bc89-bbc77f2a2e40", "rel": "self" }, { "href": "http://openstack.example.com/servers/7d62983e-23df-4320-bc89-bbc77f2a2e40", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-extended-volumes/server-post-req.json0000664000175400017540000000046312323721476027166 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-extended-volumes/attach-volume-req.json0000664000175400017540000000025612323721476027446 0ustar jenkinsjenkins00000000000000{ "attach": { "volume_id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "device": "/dev/vdd", "disk_bus": "ide", "device_type": "cdrom" } }nova-2014.1/doc/v3/api_samples/os-extended-volumes/server-get-resp.json0000664000175400017540000000347612323721476027151 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T03:22:28Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "8feef92e2152b9970b51dbdade024afbec7f8f03daf7cb335a3c1cb9", "id": "7d62983e-23df-4320-bc89-bbc77f2a2e40", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/7d62983e-23df-4320-bc89-bbc77f2a2e40", "rel": "self" }, { "href": "http://openstack.example.com/servers/7d62983e-23df-4320-bc89-bbc77f2a2e40", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-volumes:volumes_attached": [ { "id": "volume_id1" }, { "id": "volume_id2" } ], "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T03:22:29Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-extended-volumes/detach-volume-req.json0000664000175400017540000000012512323721476027425 0ustar jenkinsjenkins00000000000000{ "detach": { "volume_id": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } }nova-2014.1/doc/v3/api_samples/os-extended-volumes/swap-volume-req.json0000664000175400017540000000025212323721476027150 0ustar jenkinsjenkins00000000000000{ "swap_volume_attachment": { "old_volume_id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "new_volume_id": "a26887c6-c47b-4654-abb5-dfadf7d3f805" } }nova-2014.1/doc/v3/api_samples/os-extended-volumes/servers-detail-resp.json0000664000175400017540000000407712323721476030015 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T03:22:32Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "f9622ec1b5ab6e3785661ea1c1e0294f95aecbcf27ac4cb60b06bd02", "id": "8e479732-7701-48cd-af7a-04d84f51b742", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/8e479732-7701-48cd-af7a-04d84f51b742", "rel": "self" }, { "href": "http://openstack.example.com/servers/8e479732-7701-48cd-af7a-04d84f51b742", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-volumes:volumes_attached": [ { "id": "volume_id1" }, { "id": "volume_id2" } ], "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T03:22:34Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/os-agents/0000775000175400017540000000000012323722546021202 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-agents/agent-update-put-req.json0000664000175400017540000000021612323721476026046 0ustar jenkinsjenkins00000000000000{ "agent": { "url": "xxx://xxxx/xxx/xxx", "md5hash": "add6bb58e139be103324d04d82d8f545", "version": "7.0" } } nova-2014.1/doc/v3/api_samples/os-agents/agent-update-put-resp.json0000664000175400017540000000024612323721476026233 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "1", "md5hash": "add6bb58e139be103324d04d82d8f545", "url": "xxx://xxxx/xxx/xxx", "version": "7.0" } }nova-2014.1/doc/v3/api_samples/os-agents/agent-post-req.json0000664000175400017540000000033612323721476024746 0ustar jenkinsjenkins00000000000000{ "agent": { "hypervisor": "hypervisor", "os": "os", "architecture": "x86", "version": "8.0", "md5hash": "add6bb58e139be103324d04d82d8f545", "url": "xxxxxxxxxxxx" } }nova-2014.1/doc/v3/api_samples/os-agents/agent-post-resp.json0000664000175400017540000000036712323721476025134 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "1", "architecture": "x86", "hypervisor": "hypervisor", "md5hash": "add6bb58e139be103324d04d82d8f545", "os": "os", "url": "xxxxxxxxxxxx", "version": "8.0" } }nova-2014.1/doc/v3/api_samples/os-agents/agents-get-resp.json0000664000175400017540000000045012323721476025102 0ustar jenkinsjenkins00000000000000{ "agents": [ { "agent_id": "1", "architecture": "x86", "hypervisor": "hypervisor", "md5hash": "add6bb58e139be103324d04d82d8f545", "os": "os", "url": "xxxxxxxxxxxx", "version": "8.0" } ] }nova-2014.1/doc/v3/api_samples/os-extended-status/0000775000175400017540000000000012323722546023042 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-extended-status/server-post-resp.json0000664000175400017540000000073512323721476027203 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "EugbD2jAD2V2", "id": "a868cb5e-c794-47bf-9cd8-e302b72bb94b", "links": [ { "href": "http://openstack.example.com/v3/servers/a868cb5e-c794-47bf-9cd8-e302b72bb94b", "rel": "self" }, { "href": "http://openstack.example.com/servers/a868cb5e-c794-47bf-9cd8-e302b72bb94b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-extended-status/server-post-req.json0000664000175400017540000000046312323721476027017 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-extended-status/server-get-resp.json0000664000175400017540000000347512323721476027001 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T03:07:06Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "46d2aa2d637bd55606304b611a1928627ee1278c149aef2206268d6e", "id": "a868cb5e-c794-47bf-9cd8-e302b72bb94b", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/a868cb5e-c794-47bf-9cd8-e302b72bb94b", "rel": "self" }, { "href": "http://openstack.example.com/servers/a868cb5e-c794-47bf-9cd8-e302b72bb94b", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-status:locked_by": null, "os-extended-status:power_state": 1, "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T03:07:07Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-extended-status/servers-detail-resp.json0000664000175400017540000000405612323721476027643 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T03:07:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "a275e77473e464558c4aba0d68e1914d1164e7ee2f69affde7aaae2b", "id": "6c8b5385-e74c-4fd5-add6-2fcf42d74a98", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/6c8b5385-e74c-4fd5-add6-2fcf42d74a98", "rel": "self" }, { "href": "http://openstack.example.com/servers/6c8b5385-e74c-4fd5-add6-2fcf42d74a98", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-status:locked_by": null, "os-extended-status:power_state": 1, "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T03:07:10Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/os-lock-server/0000775000175400017540000000000012323722546022155 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-lock-server/server-post-resp.json0000664000175400017540000000073512323721476026316 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-lock-server/server-post-req.json0000664000175400017540000000153712323721476026135 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-lock-server/lock-server.json0000664000175400017540000000002412323721476025301 0ustar jenkinsjenkins00000000000000{ "lock": null }nova-2014.1/doc/v3/api_samples/os-lock-server/unlock-server.json0000664000175400017540000000002612323721476025646 0ustar jenkinsjenkins00000000000000{ "unlock": null }nova-2014.1/doc/v3/api_samples/flavor-manage/0000775000175400017540000000000012323722546022021 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/flavor-manage/flavor-create-post-req.json0000664000175400017540000000021012323721476027210 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "test_flavor", "ram": 1024, "vcpus": 2, "disk": 10, "id": "10" } }nova-2014.1/doc/v3/api_samples/flavor-manage/flavor-create-post-resp.json0000664000175400017540000000102712323721476027401 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 10, "ephemeral": 0, "flavor-access:is_public": true, "id": "10", "links": [ { "href": "http://openstack.example.com/v3/flavors/10", "rel": "self" }, { "href": "http://openstack.example.com/flavors/10", "rel": "bookmark" } ], "name": "test_flavor", "ram": 1024, "swap": 0, "vcpus": 2 } }nova-2014.1/doc/v3/api_samples/server-ips/0000775000175400017540000000000012323722546021401 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/server-ips/server-post-resp.json0000664000175400017540000000073512323721476025542 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "Ag463BYwnXEf", "id": "0813a7dc-8e97-42df-9634-957109499bf0", "links": [ { "href": "http://openstack.example.com/v3/servers/0813a7dc-8e97-42df-9634-957109499bf0", "rel": "self" }, { "href": "http://openstack.example.com/servers/0813a7dc-8e97-42df-9634-957109499bf0", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/server-ips/server-post-req.json0000664000175400017540000000046312323721476025356 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/server-ips/server-ips-network-resp.json0000664000175400017540000000026412323721476027034 0ustar jenkinsjenkins00000000000000{ "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }nova-2014.1/doc/v3/api_samples/server-ips/server-ips-resp.json0000664000175400017540000000035512323721476025346 0ustar jenkinsjenkins00000000000000{ "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] } }nova-2014.1/doc/v3/api_samples/os-hypervisors/0000775000175400017540000000000012323722546022316 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-detail-resp.json0000664000175400017540000000133612323721476030021 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "1.1.1.1", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "e6a37ee802d74863ab8b91ade8f12a67", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } ] } nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-search-resp.json0000664000175400017540000000016612323721476030024 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-statistics-resp.json0000664000175400017540000000055712323721476030755 0ustar jenkinsjenkins00000000000000{ "hypervisor_statistics": { "count": 1, "current_workload": 0, "disk_available_least": 0, "free_disk_gb": 1028, "free_ram_mb": 7680, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "vcpus": 1, "vcpus_used": 0 } }nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-uptime-resp.json0000664000175400017540000000026512323721476030062 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "hypervisor_hostname": "fake-mini", "id": 1, "uptime": " 08:32:11 up 93 days, 18:25, 12 users, load average: 0.20, 0.12, 0.14" } }nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-list-resp.json0000664000175400017540000000016612323721476027532 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-servers-resp.json0000664000175400017540000000016012323721476030242 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "hypervisor_hostname": "fake-mini", "id": 1, "servers": [] } }nova-2014.1/doc/v3/api_samples/os-hypervisors/hypervisors-show-resp.json0000664000175400017540000000116512323721476027537 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "1.1.1.1", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "043b3cacf6f34c90a7245151fc8ebcda", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/doc/v3/api_samples/os-instance-actions/0000775000175400017540000000000012323722546023163 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-instance-actions/instance-actions-list-resp.json0000664000175400017540000000130412323721476031237 0ustar jenkinsjenkins00000000000000{ "instance_actions": [ { "action": "resize", "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "message": "", "project_id": "842", "request_id": "req-25517360-b757-47d3-be45-0e8d2a01b36a", "start_time": "2012-12-05T01:00:00.000000", "user_id": "789" }, { "action": "reboot", "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "message": "", "project_id": "147", "request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8", "start_time": "2012-12-05T00:00:00.000000", "user_id": "789" } ] }nova-2014.1/doc/v3/api_samples/os-instance-actions/instance-action-get-resp.json0000664000175400017540000000154612323721476030670 0ustar jenkinsjenkins00000000000000{ "instance_action": { "action": "reboot", "events": [ { "event": "schedule", "finish_time": "2012-12-05T01:02:00.000000", "result": "Success", "start_time": "2012-12-05T01:00:02.000000", "traceback": "" }, { "event": "compute_create", "finish_time": "2012-12-05T01:04:00.000000", "result": "Success", "start_time": "2012-12-05T01:03:00.000000", "traceback": "" } ], "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "message": "", "project_id": "147", "request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8", "start_time": "2012-12-05T00:00:00.000000", "user_id": "789" } }nova-2014.1/doc/v3/api_samples/os-deferred-delete/0000775000175400017540000000000012323722546022741 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-deferred-delete/server-post-resp.json0000664000175400017540000000073512323721476027102 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "hqgU8QzT54wF", "id": "4a3bde9b-fa37-408d-b167-68e1724c923e", "links": [ { "href": "http://openstack.example.com/v3/servers/4a3bde9b-fa37-408d-b167-68e1724c923e", "rel": "self" }, { "href": "http://openstack.example.com/servers/4a3bde9b-fa37-408d-b167-68e1724c923e", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-deferred-delete/server-post-req.json0000664000175400017540000000046312323721476026716 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-deferred-delete/force-delete-post-req.json0000664000175400017540000000003412323721476027740 0ustar jenkinsjenkins00000000000000{ "force_delete": null }nova-2014.1/doc/v3/api_samples/os-deferred-delete/restore-post-req.json0000664000175400017540000000002712323721476027067 0ustar jenkinsjenkins00000000000000{ "restore": null }nova-2014.1/doc/v3/api_samples/os-flavor-rxtx/0000775000175400017540000000000012323722546022215 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json0000664000175400017540000000026312323721476027156 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "flavortest", "ram": 1024, "vcpus": 2, "disk": 10, "id": "100", "os-flavor-rxtx:rxtx_factor": 2.0 } }nova-2014.1/doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json0000664000175400017540000000110412323721476027333 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 10, "ephemeral": 0, "flavor-access:is_public": true, "id": "100", "links": [ { "href": "http://openstack.example.com/v3/flavors/100", "rel": "self" }, { "href": "http://openstack.example.com/flavors/100", "rel": "bookmark" } ], "name": "flavortest", "ram": 1024, "os-flavor-rxtx:rxtx_factor": 2.0, "swap": 0, "vcpus": 2 } }nova-2014.1/doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json0000664000175400017540000000107112323721476027130 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 1, "ephemeral": 0, "flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 1 } }nova-2014.1/doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json0000664000175400017540000000630212323721476027326 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disabled": false, "disk": 1, "ephemeral": 0, "flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 20, "ephemeral": 0, "flavor-access:is_public": true, "id": "2", "links": [ { "href": "http://openstack.example.com/v3/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 40, "ephemeral": 0, "flavor-access:is_public": true, "id": "3", "links": [ { "href": "http://openstack.example.com/v3/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 2 }, { "disabled": false, "disk": 80, "ephemeral": 0, "flavor-access:is_public": true, "id": "4", "links": [ { "href": "http://openstack.example.com/v3/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 4 }, { "disabled": false, "disk": 160, "ephemeral": 0, "flavor-access:is_public": true, "id": "5", "links": [ { "href": "http://openstack.example.com/v3/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 8 } ] }nova-2014.1/doc/v3/api_samples/os-hide-server-addresses/0000775000175400017540000000000012323722546024111 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-hide-server-addresses/server-post-resp.json0000664000175400017540000000073512323721476030252 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "5bjyggD6SaSB", "id": "3d8bedd4-003d-417a-8cd7-a94cb181185d", "links": [ { "href": "http://openstack.example.com/v3/servers/3d8bedd4-003d-417a-8cd7-a94cb181185d", "rel": "self" }, { "href": "http://openstack.example.com/servers/3d8bedd4-003d-417a-8cd7-a94cb181185d", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-hide-server-addresses/server-post-req.json0000664000175400017540000000046312323721476030066 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-hide-server-addresses/server-get-resp.json0000664000175400017540000000261012323721476030036 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": {}, "created": "2013-09-24T14:39:00Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "d0635823e9162b22b90ff103f0c30f129bacf6ffb72f4d6fde87e738", "id": "4bdee8c7-507f-40f2-8429-d301edd3791b", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/4bdee8c7-507f-40f2-8429-d301edd3791b", "rel": "self" }, { "href": "http://openstack.example.com/servers/4bdee8c7-507f-40f2-8429-d301edd3791b", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-24T14:39:01Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-hide-server-addresses/servers-details-resp.json0000664000175400017540000000310512323721476031067 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": {}, "created": "2013-09-24T14:44:01Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "a4fa72ae8741e5e18fb062c15657b8f689b8da2837b734c61fc9eedd", "id": "a747eac1-e3ed-446c-935a-c2a2853f919c", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/a747eac1-e3ed-446c-935a-c2a2853f919c", "rel": "self" }, { "href": "http://openstack.example.com/servers/a747eac1-e3ed-446c-935a-c2a2853f919c", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-24T14:44:01Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/os-hide-server-addresses/servers-list-resp.json0000664000175400017540000000103212323721476030412 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "b2a7068b-8aed-41a4-aa74-af8feb984bae", "links": [ { "href": "http://openstack.example.com/v3/servers/b2a7068b-8aed-41a4-aa74-af8feb984bae", "rel": "self" }, { "href": "http://openstack.example.com/servers/b2a7068b-8aed-41a4-aa74-af8feb984bae", "rel": "bookmark" } ], "name": "new-server-test" } ] }nova-2014.1/doc/v3/api_samples/os-multinic/0000775000175400017540000000000012323722546021545 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-multinic/multinic-add-fixed-ip-req.json0000664000175400017540000000007212323721476027302 0ustar jenkinsjenkins00000000000000{ "add_fixed_ip":{ "network_id": 1 } }nova-2014.1/doc/v3/api_samples/os-multinic/server-post-resp.json0000664000175400017540000000073512323721476025706 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "5Y9rR4XaM8Qg", "id": "bbe8d469-e8cb-49b1-96d8-f93b68c82355", "links": [ { "href": "http://openstack.example.com/v3/servers/bbe8d469-e8cb-49b1-96d8-f93b68c82355", "rel": "self" }, { "href": "http://openstack.example.com/servers/bbe8d469-e8cb-49b1-96d8-f93b68c82355", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-multinic/server-post-req.json0000664000175400017540000000046312323721476025522 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-multinic/multinic-remove-fixed-ip-req.json0000664000175400017540000000010312323721476030042 0ustar jenkinsjenkins00000000000000{ "remove_fixed_ip":{ "address": "10.0.0.4" } }nova-2014.1/doc/v3/api_samples/os-attach-interfaces/0000775000175400017540000000000012323722546023306 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-attach-interfaces/server-post-resp.json0000664000175400017540000000073512323721476027447 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "fjPxt8d8YcSR", "id": "c937be78-c423-495b-a99a-e590ab6f30ba", "links": [ { "href": "http://openstack.example.com/v3/servers/c937be78-c423-495b-a99a-e590ab6f30ba", "rel": "self" }, { "href": "http://openstack.example.com/servers/c937be78-c423-495b-a99a-e590ab6f30ba", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json0000664000175400017540000000062312323721476031515 0ustar jenkinsjenkins00000000000000{ "interface_attachment": { "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } }nova-2014.1/doc/v3/api_samples/os-attach-interfaces/server-post-req.json0000664000175400017540000000046312323721476027263 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-attach-interfaces/attach-interfaces-create-req.json0000664000175400017540000000014112323721476031611 0ustar jenkinsjenkins00000000000000{ "interface_attachment": { "port_id": "ce531f90-199f-48c0-816c-13e38010b442" } }nova-2014.1/doc/v3/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json0000664000175400017540000000072012323721476031506 0ustar jenkinsjenkins00000000000000{ "interface_attachments": [ { "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } ] }nova-2014.1/doc/v3/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json0000664000175400017540000000062312323721476032000 0ustar jenkinsjenkins00000000000000{ "interface_attachment": { "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } }nova-2014.1/doc/v3/api_samples/os-pci/0000775000175400017540000000000012323722546020474 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-pci/server-post-resp.json0000664000175400017540000000073412323721476024634 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "8C5KEgw2cQxu", "id": "fb947804-6a43-499d-9526-3eac8adf7271", "links": [ { "href": "http://openstack.example.com/v3/servers/fb947804-6a43-499d-9526-3eac8adf7271", "rel": "self" }, { "href": "http://openstack.example.com/servers/fb947804-6a43-499d-9526-3eac8adf7271", "rel": "bookmark" } ] } }nova-2014.1/doc/v3/api_samples/os-pci/server-post-req.json0000664000175400017540000000153712323721476024454 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-pci/pci-index-resp.json0000664000175400017540000000071512323721476024222 0ustar jenkinsjenkins00000000000000{ "pci_devices": [ { "address": "0000:04:10.0", "compute_node_id": 1, "id": 1, "product_id": "1520", "status": "available", "vendor_id": "8086" }, { "address": "0000:04:10.1", "compute_node_id": 1, "id": 2, "product_id": "1520", "status": "available", "vendor_id": "8086" } ] }nova-2014.1/doc/v3/api_samples/os-pci/pci-detail-resp.json0000664000175400017540000000203212323721476024347 0ustar jenkinsjenkins00000000000000{ "pci_devices": [ { "address": "0000:04:10.0", "compute_node_id": 1, "dev_id": "pci_0000_04_10_0", "dev_type": "type-VF", "extra_info": { "key1": "value1", "key2": "value2" }, "id": 1, "server_uuid": "69ba1044-0766-4ec0-b60d-09595de034a1", "label": "label_8086_1520", "product_id": "1520", "status": "available", "vendor_id": "8086" }, { "address": "0000:04:10.1", "compute_node_id": 1, "dev_id": "pci_0000_04_10_1", "dev_type": "type-VF", "extra_info": { "key3": "value3", "key4": "value4" }, "id": 2, "server_uuid": "d5b446a6-a1b4-4d01-b4f0-eac37b3a62fc", "label": "label_8086_1520", "product_id": "1520", "status": "available", "vendor_id": "8086" } ] } nova-2014.1/doc/v3/api_samples/os-pci/server-get-resp.json0000664000175400017540000000334012323721476024422 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-11-25T03:45:54Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "b7e88944272df30c113572778bcf5527f02e9c2a745221214536c1a2", "id": "9dafa6bc-7a9f-45b2-8177-11800ceb7224", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/9dafa6bc-7a9f-45b2-8177-11800ceb7224", "rel": "self" }, { "href": "http://openstack.example.com/servers/9dafa6bc-7a9f-45b2-8177-11800ceb7224", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-pci:pci_devices": [ { "id": 1 } ], "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-11-25T03:45:54Z", "user_id": "fake" } }nova-2014.1/doc/v3/api_samples/os-pci/pci-show-resp.json0000664000175400017540000000071712323721476024075 0ustar jenkinsjenkins00000000000000{ "pci_device": { "address": "0000:04:10.0", "compute_node_id": 1, "dev_id": "pci_0000_04_10_0", "dev_type": "type-VF", "extra_info": { "key1": "value1", "key2": "value2" }, "id": 1, "server_uuid": "69ba1044-0766-4ec0-b60d-09595de034a1", "label": "label_8086_1520", "product_id": "1520", "status": "available", "vendor_id": "8086" } } nova-2014.1/doc/v3/api_samples/os-pci/hypervisors-pci-show-resp.json0000664000175400017540000000175612323721476026474 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "1.1.1.1", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "os-pci:pci_stats": [ { "count": 5, "extra_info": { "key1": "value1", "phys_function": "[[\"0x0000\", \"0x04\", \"0x00\", \"0x1\"]]" }, "keya": "valuea", "product_id": "1520", "vendor_id": "8086" } ], "running_vms": 0, "service": { "host": "043b3cacf6f34c90a7245151fc8ebcda", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/doc/v3/api_samples/os-pci/servers-detail-resp.json0000664000175400017540000000372512323721476025277 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-11-25T03:45:54Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "416f83c758ea0f9271018b278a9dcedb91b1190deaa598704b87219b", "id": "ef440f98-04e8-46ea-ae74-e24d437040ea", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/ef440f98-04e8-46ea-ae74-e24d437040ea", "rel": "self" }, { "href": "http://openstack.example.com/servers/ef440f98-04e8-46ea-ae74-e24d437040ea", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-pci:pci_devices": [ { "id": 1 } ], "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-11-25T03:45:54Z", "user_id": "fake" } ] }nova-2014.1/doc/v3/api_samples/os-pci/hypervisors-pci-detail-resp.json0000664000175400017540000000220712323721476026746 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "1.1.1.1", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "os-pci:pci_stats": [ { "count": 5, "extra_info": { "key1": "value1", "phys_function": "[[\"0x0000\", \"0x04\", \"0x00\", \"0x1\"]]" }, "keya": "valuea", "product_id": "1520", "vendor_id": "8086" } ], "running_vms": 0, "service": { "host": "043b3cacf6f34c90a7245151fc8ebcda", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } ] } nova-2014.1/doc/v3/api_samples/os-console-auth-tokens/0000775000175400017540000000000012323722546023623 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-console-auth-tokens/server-post-resp.json0000664000175400017540000000073512323721476027764 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "Kwg5tff6KiUU", "id": "8619225c-67c8-424f-9b46-cec5bad137a2", "links": [ { "href": "http://openstack.example.com/v3/servers/8619225c-67c8-424f-9b46-cec5bad137a2", "rel": "self" }, { "href": "http://openstack.example.com/servers/8619225c-67c8-424f-9b46-cec5bad137a2", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-console-auth-tokens/server-post-req.json0000664000175400017540000000046312323721476027600 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json0000664000175400017540000000032612323721476033043 0ustar jenkinsjenkins00000000000000{ "console": { "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "host": "localhost", "port": 5900, "internal_access_path": "51af38c3-555e-4884-a314-6c8cdde37444" } } nova-2014.1/doc/v3/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json0000664000175400017540000000007712323721476031275 0ustar jenkinsjenkins00000000000000{ "get_rdp_console": { "type": "rdp-html5" } } nova-2014.1/doc/v3/api_samples/os-user-data/0000775000175400017540000000000012323722546021606 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-user-data/userdata-post-req.json0000664000175400017540000000062212323721476026062 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==" } } nova-2014.1/doc/v3/api_samples/os-user-data/userdata-post-resp.json0000664000175400017540000000073512323721476026251 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "2xHoDU7Gd7vw", "id": "976a62bb-0d4a-4e17-9044-1864e888a557", "links": [ { "href": "http://openstack.example.com/v3/servers/976a62bb-0d4a-4e17-9044-1864e888a557", "rel": "self" }, { "href": "http://openstack.example.com/servers/976a62bb-0d4a-4e17-9044-1864e888a557", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-create-backup/0000775000175400017540000000000012323722546022427 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-create-backup/create-backup-req.json0000664000175400017540000000016212323721476026615 0ustar jenkinsjenkins00000000000000{ "create_backup": { "name": "Backup 1", "backup_type": "daily", "rotation": 1 } }nova-2014.1/doc/v3/api_samples/os-create-backup/server-post-resp.json0000664000175400017540000000073512323721476026570 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-create-backup/server-post-req.json0000664000175400017540000000153712323721476026407 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-remote-consoles/0000775000175400017540000000000012323722546023037 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-remote-consoles/server-post-resp.json0000664000175400017540000000073512323721476027200 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "Kwg5tff6KiUU", "id": "8619225c-67c8-424f-9b46-cec5bad137a2", "links": [ { "href": "http://openstack.example.com/v3/servers/8619225c-67c8-424f-9b46-cec5bad137a2", "rel": "self" }, { "href": "http://openstack.example.com/servers/8619225c-67c8-424f-9b46-cec5bad137a2", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-remote-consoles/server-post-req.json0000664000175400017540000000046312323721476027014 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-remote-consoles/get-vnc-console-post-resp.json0000664000175400017540000000022312323721476030665 0ustar jenkinsjenkins00000000000000{ "console": { "type": "novnc", "url": "http://127.0.0.1:6080/vnc_auto.html?token=191996c3-7b0f-42f3-95a7-f1839f2da6ed" } }nova-2014.1/doc/v3/api_samples/os-remote-consoles/get-rdp-console-post-resp.json0000664000175400017540000000021312323721476030663 0ustar jenkinsjenkins00000000000000{ "console": { "type": "rdp-html5", "url": "http://127.0.0.1:6083/?token=191996c3-7b0f-42f3-95a7-f1839f2da6ed" } } nova-2014.1/doc/v3/api_samples/os-remote-consoles/get-rdp-console-post-req.json0000664000175400017540000000007712323721476030511 0ustar jenkinsjenkins00000000000000{ "get_rdp_console": { "type": "rdp-html5" } } nova-2014.1/doc/v3/api_samples/os-remote-consoles/get-vnc-console-post-req.json0000664000175400017540000000007212323721476030505 0ustar jenkinsjenkins00000000000000{ "get_vnc_console": { "type": "novnc" } }nova-2014.1/doc/v3/api_samples/os-remote-consoles/get-spice-console-post-req.json0000664000175400017540000000010212323721476031014 0ustar jenkinsjenkins00000000000000{ "get_spice_console": { "type": "spice-html5" } }nova-2014.1/doc/v3/api_samples/os-remote-consoles/get-spice-console-post-resp.json0000664000175400017540000000023312323721476031203 0ustar jenkinsjenkins00000000000000{ "console": { "type": "spice-html5", "url": "http://127.0.0.1:6082/spice_auto.html?token=a30e5d08-6a20-4043-958f-0852440c6af4" } }nova-2014.1/doc/v3/api_samples/os-pause-server/0000775000175400017540000000000012323722546022342 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-pause-server/server-post-resp.json0000664000175400017540000000073512323721476026503 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-pause-server/pause-server.json0000664000175400017540000000002512323721476025654 0ustar jenkinsjenkins00000000000000{ "pause": null }nova-2014.1/doc/v3/api_samples/os-pause-server/unpause-server.json0000664000175400017540000000002712323721476026221 0ustar jenkinsjenkins00000000000000{ "unpause": null }nova-2014.1/doc/v3/api_samples/os-pause-server/server-post-req.json0000664000175400017540000000153712323721476026322 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/v3/api_samples/os-quota-sets/0000775000175400017540000000000012323722546022026 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-quota-sets/quotas-update-force-post-req.json0000664000175400017540000000011512323721476030357 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 45 } }nova-2014.1/doc/v3/api_samples/os-quota-sets/user-quotas-update-post-resp.json0000664000175400017540000000045512323721476030430 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 9, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/v3/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json0000664000175400017540000000045612323721476030552 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/v3/api_samples/os-quota-sets/quotas-update-post-req.json0000664000175400017540000000007212323721476027265 0ustar jenkinsjenkins00000000000000{ "quota_set": { "security_groups": 45 } }nova-2014.1/doc/v3/api_samples/os-quota-sets/user-quotas-show-get-resp.json0000664000175400017540000000045612323721476027721 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/v3/api_samples/os-quota-sets/quotas-show-get-resp.json0000664000175400017540000000045612323721476026745 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/v3/api_samples/os-quota-sets/user-quotas-update-post-req.json0000664000175400017540000000011412323721476030236 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 9 } }nova-2014.1/doc/v3/api_samples/os-quota-sets/quotas-update-post-resp.json0000664000175400017540000000045612323721476027455 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 45 } } nova-2014.1/doc/v3/api_samples/os-quota-sets/quotas-update-force-post-resp.json0000664000175400017540000000045612323721476030551 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 45, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/v3/api_samples/os-admin-actions/0000775000175400017540000000000012323722546022447 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-admin-actions/server-post-resp.json0000664000175400017540000000073512323721476026610 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-admin-actions/server-post-req.json0000664000175400017540000000046312323721476026424 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-admin-actions/admin-actions-reset-network.json0000664000175400017540000000003512323721476030676 0ustar jenkinsjenkins00000000000000{ "reset_network": null }nova-2014.1/doc/v3/api_samples/os-admin-actions/admin-actions-reset-server-state.json0000664000175400017540000000007012323721476031630 0ustar jenkinsjenkins00000000000000{ "reset_state": { "state": "active" } }nova-2014.1/doc/v3/api_samples/os-admin-actions/admin-actions-inject-network-info.json0000664000175400017540000000004312323721476031760 0ustar jenkinsjenkins00000000000000{ "inject_network_info": null }nova-2014.1/doc/v3/api_samples/os-server-usage/0000775000175400017540000000000012323722546022331 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-server-usage/server-post-resp.json0000664000175400017540000000073512323721476026472 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "kmspFLBzL75q", "id": "f8eeb5ba-19b7-49be-a1a9-10250dda5b14", "links": [ { "href": "http://openstack.example.com/v3/servers/f8eeb5ba-19b7-49be-a1a9-10250dda5b14", "rel": "self" }, { "href": "http://openstack.example.com/servers/f8eeb5ba-19b7-49be-a1a9-10250dda5b14", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-server-usage/server-post-req.json0000664000175400017540000000046312323721476026306 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-server-usage/server-get-resp.json0000664000175400017540000000336612323721476026267 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-08-15T08:12:40Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "73cf3a40601b63f5992894be2daa3712dd599d1c919984951e21edda", "id": "cee6d136-e378-4cfc-9eec-71797f025991", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/cee6d136-e378-4cfc-9eec-71797f025991", "rel": "self" }, { "href": "http://openstack.example.com/servers/cee6d136-e378-4cfc-9eec-71797f025991", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-server-usage:launched_at": "2013-08-15T08:12:40.108903", "os-server-usage:terminated_at": null, "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-08-15T08:12:40Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-server-usage/servers-detail-resp.json0000664000175400017540000000373712323721476027137 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-08-15T12:04:04Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "117535ce0eda7ee02ebffe2c976173629385481ae3f2bded5e14a66b", "id": "ae114799-9164-48f5-a036-6ef9310acbc4", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "self" }, { "href": "http://openstack.example.com/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-server-usage:launched_at": "2013-08-15T12:04:05.368766", "os-server-usage:terminated_at": null, "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-08-15T12:04:05Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/all_extensions/0000775000175400017540000000000012323722546022331 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/all_extensions/server-post-resp.json0000664000175400017540000000125212323721476026465 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "zPnp2GseTqG4", "id": "8195065c-fea4-4d57-b93f-5c5c63fe90e8", "links": [ { "href": "http://openstack.example.com/v3/servers/8195065c-fea4-4d57-b93f-5c5c63fe90e8", "rel": "self" }, { "href": "http://openstack.example.com/servers/8195065c-fea4-4d57-b93f-5c5c63fe90e8", "rel": "bookmark" } ], "os-access-ips:access_ip_v4": "", "os-access-ips:access_ip_v6": "", "os-security-groups:security_groups": [ { "name": "default" } ] } } nova-2014.1/doc/v3/api_samples/all_extensions/server-post-req.json0000664000175400017540000000046312323721476026306 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/all_extensions/server-get-resp.json0000664000175400017540000000515012323721476026260 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-23T13:37:00Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "9cc36101a27c2a69c1a18241f6228454d9d7f466bd90c62db8e8b856", "id": "f474386b-4fb6-4e1f-b1d5-d6bf4437f7d5", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/f474386b-4fb6-4e1f-b1d5-d6bf4437f7d5", "rel": "self" }, { "href": "http://openstack.example.com/servers/f474386b-4fb6-4e1f-b1d5-d6bf4437f7d5", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-access-ips:access_ip_v4": "", "os-access-ips:access_ip_v6": "", "os-config-drive:config_drive": "", "os-extended-availability-zone:availability_zone": "nova", "os-extended-server-attributes:host": "b8b357f7100d4391828f2177c922ef93", "os-extended-server-attributes:hypervisor_hostname": "fake-mini", "os-extended-server-attributes:instance_name": "instance-00000001", "os-extended-status:locked_by": null, "os-extended-status:power_state": 1, "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "os-extended-volumes:volumes_attached": [], "os-pci:pci_devices": [ { "id": 1 } ], "os-server-usage:launched_at": "2013-09-23T13:37:00.880302", "os-server-usage:terminated_at": null, "progress": 0, "os-security-groups:security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-10-31T07:31:30Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/all_extensions/servers-details-resp.json0000664000175400017540000000565112323721476027317 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-23T13:53:12Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "f1e160ad2bf07084f3d3e0dfdd0795d80da18a60825322c15775c0dd", "id": "9cbefc35-d372-40c5-88e2-9fda1b6ea12c", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/9cbefc35-d372-40c5-88e2-9fda1b6ea12c", "rel": "self" }, { "href": "http://openstack.example.com/servers/9cbefc35-d372-40c5-88e2-9fda1b6ea12c", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-access-ips:access_ip_v4": "", "os-access-ips:access_ip_v6": "", "os-config-drive:config_drive": "", "os-extended-availability-zone:availability_zone": "nova", "os-extended-server-attributes:host": "c3f14e9812ad496baf92ccfb3c61e15f", "os-extended-server-attributes:hypervisor_hostname": "fake-mini", "os-extended-server-attributes:instance_name": "instance-00000001", "os-extended-status:locked_by": null, "os-extended-status:power_state": 1, "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "os-extended-volumes:volumes_attached": [], "os-pci:pci_devices": [ { "id": 1 } ], "os-server-usage:launched_at": "2013-09-23T13:53:12.774549", "os-server-usage:terminated_at": null, "progress": 0, "os-security-groups:security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-10-31T06:32:32Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/all_extensions/servers-list-resp.json0000664000175400017540000000103212323721476026632 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "a291599e-6de2-41a6-88df-c443ddcef70d", "links": [ { "href": "http://openstack.example.com/v3/servers/a291599e-6de2-41a6-88df-c443ddcef70d", "rel": "self" }, { "href": "http://openstack.example.com/servers/a291599e-6de2-41a6-88df-c443ddcef70d", "rel": "bookmark" } ], "name": "new-server-test" } ] }nova-2014.1/doc/v3/api_samples/os-server-external-events/0000775000175400017540000000000012323722546024351 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-server-external-events/server-post-resp.json0000664000175400017540000000073512323721476030512 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "DM3QzjhGTzLB", "id": "bebeec79-497e-4711-a311-d0d2e3dfc73b", "links": [ { "href": "http://openstack.example.com/v3/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "self" }, { "href": "http://openstack.example.com/servers/bebeec79-497e-4711-a311-d0d2e3dfc73b", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-server-external-events/server-post-req.json0000664000175400017540000000046312323721476030326 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-server-external-events/event-create-req.json0000664000175400017540000000026612323721476030420 0ustar jenkinsjenkins00000000000000{ "events": {[ { "name": "test-event", "tag": "foo", "status": "completed", "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3" }]} } nova-2014.1/doc/v3/api_samples/os-server-external-events/event-create-resp.json0000664000175400017540000000035412323721476030600 0ustar jenkinsjenkins00000000000000{ "events": [ { "code": 200, "name": "network-changed", "server_uuid": "ff1df7b2-6772-45fd-9326-c0a3b05591c2", "status": "completed", "tag": "foo" } ] }nova-2014.1/doc/v3/api_samples/os-rescue/0000775000175400017540000000000012323722546021207 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-rescue/server-post-resp.json0000664000175400017540000000073512323721476025350 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "8RK85ufqhJVq", "id": "edfc3905-1f3c-4819-8fc3-a7d8131cfa22", "links": [ { "href": "http://openstack.example.com/v3/servers/edfc3905-1f3c-4819-8fc3-a7d8131cfa22", "rel": "self" }, { "href": "http://openstack.example.com/servers/edfc3905-1f3c-4819-8fc3-a7d8131cfa22", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-rescue/server-post-req.json0000664000175400017540000000046312323721476025164 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-rescue/server-rescue.json0000664000175400017540000000005112323721476024671 0ustar jenkinsjenkins00000000000000{ "admin_password": "MySecretPass" } nova-2014.1/doc/v3/api_samples/os-rescue/server-unrescue-req.json0000664000175400017540000000003012323721476026016 0ustar jenkinsjenkins00000000000000{ "unrescue": null }nova-2014.1/doc/v3/api_samples/os-rescue/server-rescue-req.json0000664000175400017540000000010312323721476025454 0ustar jenkinsjenkins00000000000000{ "rescue": { "admin_password": "MySecretPass" } } nova-2014.1/doc/v3/api_samples/os-rescue/server-get-resp-rescue.json0000664000175400017540000000315312323721476026423 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-18T07:22:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "f04994c5b4aac1cacbb83b09c2506e457d97dd54f620961624574690", "id": "2fd0c66b-50af-41d2-9253-9fa41e7e8dd8", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/2fd0c66b-50af-41d2-9253-9fa41e7e8dd8", "rel": "self" }, { "href": "http://openstack.example.com/servers/2fd0c66b-50af-41d2-9253-9fa41e7e8dd8", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "status": "RESCUE", "tenant_id": "openstack", "updated": "2013-09-18T07:22:11Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-rescue/server-get-resp-unrescue.json0000664000175400017540000000320212323721476026761 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-18T07:22:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "53cd4520a6cc639eeabcae4a0512b93e4675d431002e0b60e2dcfc04", "id": "edfc3905-1f3c-4819-8fc3-a7d8131cfa22", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/edfc3905-1f3c-4819-8fc3-a7d8131cfa22", "rel": "self" }, { "href": "http://openstack.example.com/servers/edfc3905-1f3c-4819-8fc3-a7d8131cfa22", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-18T07:22:12Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-admin-password/0000775000175400017540000000000012323722546022651 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-admin-password/server-post-resp.json0000664000175400017540000000073512323721476027012 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "oCYTjD2KnRtB", "id": "aa3130b9-dffc-417b-aa03-93d5394a2fa6", "links": [ { "href": "http://openstack.example.com/v3/servers/aa3130b9-dffc-417b-aa03-93d5394a2fa6", "rel": "self" }, { "href": "http://openstack.example.com/servers/aa3130b9-dffc-417b-aa03-93d5394a2fa6", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-admin-password/server-post-req.json0000664000175400017540000000046312323721476026626 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-admin-password/admin-password-change-password.json0000664000175400017540000000010412323721476031553 0ustar jenkinsjenkins00000000000000{ "change_password" : { "admin_password" : "foo" } }nova-2014.1/doc/v3/api_samples/os-hosts/0000775000175400017540000000000012323722546021061 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-hosts/host-get-shutdown.json0000664000175400017540000000015612323721476025362 0ustar jenkinsjenkins00000000000000{ "host": { "host": "77cfa0002e4d45fe97f185968111b27b", "power_action": "shutdown" } }nova-2014.1/doc/v3/api_samples/os-hosts/host-get-reboot.json0000664000175400017540000000015412323721476024777 0ustar jenkinsjenkins00000000000000{ "host": { "host": "9557750dbc464741a89c907921c1cb31", "power_action": "reboot" } }nova-2014.1/doc/v3/api_samples/os-hosts/host-put-maintenance-req.json0000664000175400017540000000013112323721476026600 0ustar jenkinsjenkins00000000000000{ "host": { "status": "enable", "maintenance_mode": "disable" } }nova-2014.1/doc/v3/api_samples/os-hosts/host-get-startup.json0000664000175400017540000000015512323721476025210 0ustar jenkinsjenkins00000000000000{ "host": { "host": "4b392b27930343bbaa27fd5d8328a564", "power_action": "startup" } }nova-2014.1/doc/v3/api_samples/os-hosts/hosts-list-compute-service-resp.json0000664000175400017540000000024712323721476030150 0ustar jenkinsjenkins00000000000000{ "hosts": [ { "host_name": "09c025b0efc64211bd23fc50fa974cdf", "service": "compute", "zone": "nova" } ] } nova-2014.1/doc/v3/api_samples/os-hosts/hosts-list-resp.json0000664000175400017540000000203312323721476025033 0ustar jenkinsjenkins00000000000000{ "hosts": [ { "host_name": "b6e4adbc193d428ea923899d07fb001e", "service": "conductor", "zone": "internal" }, { "host_name": "09c025b0efc64211bd23fc50fa974cdf", "service": "compute", "zone": "nova" }, { "host_name": "a942ebfa00064d9d89a9e5a175cb9ba8", "service": "cert", "zone": "internal" }, { "host_name": "e73ec0bd35c64de4a1adfa8b8969a1f6", "service": "consoleauth", "zone": "internal" }, { "host_name": "396a8a0a234f476eb05fb9fbc5802ba7", "service": "network", "zone": "internal" }, { "host_name": "abffda96592c4eacaf4111c28fddee17", "service": "scheduler", "zone": "internal" }, { "host_name": "a8820f04962a4b4ba9fe2e9540c24094", "service": "cells", "zone": "internal" } ] }nova-2014.1/doc/v3/api_samples/os-hosts/host-get-resp.json0000664000175400017540000000140612323721476024457 0ustar jenkinsjenkins00000000000000{ "host": [ { "resource": { "cpu": 1, "disk_gb": 1028, "host": "c1a7de0ac9d94e4baceae031d05caae3", "memory_mb": 8192, "project": "(total)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "c1a7de0ac9d94e4baceae031d05caae3", "memory_mb": 512, "project": "(used_now)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "c1a7de0ac9d94e4baceae031d05caae3", "memory_mb": 0, "project": "(used_max)" } } ] }nova-2014.1/doc/v3/api_samples/os-hosts/host-put-maintenance-resp.json0000664000175400017540000000022612323721476026767 0ustar jenkinsjenkins00000000000000{ "host": { "host": "65c5d5b7e3bd44308e67fc50f362aee6", "maintenance_mode": "off_maintenance", "status": "enabled" } }nova-2014.1/doc/v3/api_samples/os-extended-server-attributes/0000775000175400017540000000000012323722546025211 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-extended-server-attributes/server-post-resp.json0000664000175400017540000000073512323721476031352 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "UCvmH8nHXm66", "id": "a8c1c13d-ec7e-47c7-b4ff-077f72c1ca46", "links": [ { "href": "http://openstack.example.com/v3/servers/a8c1c13d-ec7e-47c7-b4ff-077f72c1ca46", "rel": "self" }, { "href": "http://openstack.example.com/servers/a8c1c13d-ec7e-47c7-b4ff-077f72c1ca46", "rel": "bookmark" } ] } } nova-2014.1/doc/v3/api_samples/os-extended-server-attributes/server-post-req.json0000664000175400017540000000046312323721476031166 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavor_ref" : "http://openstack.example.com/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/doc/v3/api_samples/os-extended-server-attributes/server-get-resp.json0000664000175400017540000000355212323721476031144 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T02:55:07Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "3bf189131c61d0e71b0a8686a897a0f50d1693b48c47b721fe77155b", "id": "c278163e-36f9-4cf2-b1ac-80db4c63f7a8", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/c278163e-36f9-4cf2-b1ac-80db4c63f7a8", "rel": "self" }, { "href": "http://openstack.example.com/servers/c278163e-36f9-4cf2-b1ac-80db4c63f7a8", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-server-attributes:host": "c5f474bf81474f9dbbc404d5b2e4e9b3", "os-extended-server-attributes:hypervisor_hostname": "fake-mini", "os-extended-server-attributes:instance_name": "instance-00000001", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T02:55:08Z", "user_id": "fake" } } nova-2014.1/doc/v3/api_samples/os-extended-server-attributes/servers-detail-resp.json0000664000175400017540000000412712323721476032011 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "192.168.0.3", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "2013-09-16T02:55:03Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "host_id": "63cf07a9fd82e1d2294926ec5c0d2e1e0ca449224246df75e16f23dc", "id": "a8c1c13d-ec7e-47c7-b4ff-077f72c1ca46", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v3/servers/a8c1c13d-ec7e-47c7-b4ff-077f72c1ca46", "rel": "self" }, { "href": "http://openstack.example.com/servers/a8c1c13d-ec7e-47c7-b4ff-077f72c1ca46", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-server-attributes:host": "bc8efe4fdb7148a4bb921a2b03d17de6", "os-extended-server-attributes:hypervisor_hostname": "fake-mini", "os-extended-server-attributes:instance_name": "instance-00000001", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-09-16T02:55:05Z", "user_id": "fake" } ] } nova-2014.1/doc/v3/api_samples/os-cells/0000775000175400017540000000000012323722546021023 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/v3/api_samples/os-cells/cells-list-empty-resp.json0000664000175400017540000000002312323721476026070 0ustar jenkinsjenkins00000000000000{ "cells": [] }nova-2014.1/doc/v3/api_samples/os-cells/cells-capacities-resp.json0000664000175400017540000000116212323721476026073 0ustar jenkinsjenkins00000000000000{ "cell": { "capacities": { "disk_free": { "total_mb": 1052672, "units_by_mb": { "0": 0, "163840": 5, "20480": 46, "40960": 23, "81920": 11 } }, "ram_free": { "total_mb": 7680, "units_by_mb": { "16384": 0, "2048": 3, "4096": 1, "512": 13, "8192": 0 } } } } }nova-2014.1/doc/v3/api_samples/os-cells/cells-list-resp.json0000664000175400017540000000160412323721476024742 0ustar jenkinsjenkins00000000000000{ "cells": [ { "name": "cell1", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username1" }, { "name": "cell3", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username3" }, { "name": "cell5", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username5" }, { "name": "cell2", "rpc_host": null, "rpc_port": null, "type": "parent", "username": "username2" }, { "name": "cell4", "rpc_host": null, "rpc_port": null, "type": "parent", "username": "username4" } ] }nova-2014.1/doc/v3/api_samples/os-cells/cells-get-resp.json0000664000175400017540000000023512323721476024545 0ustar jenkinsjenkins00000000000000{ "cell": { "name": "cell3", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username3" } }nova-2014.1/doc/ext/0000775000175400017540000000000012323722546015255 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/ext/nova_todo.py0000664000175400017540000000647212323721476017631 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # This is a hack of the builtin todo extension, to make the todo_list # more user friendly. from sphinx.ext.todo import * import re def _(s): return s def process_todo_nodes(app, doctree, fromdocname): if not app.config['todo_include_todos']: for node in doctree.traverse(todo_node): node.parent.remove(node) # Replace all todolist nodes with a list of the collected todos. # Augment each todo with a backlink to the original location. env = app.builder.env if not hasattr(env, 'todo_all_todos'): env.todo_all_todos = [] # remove the item that was added in the constructor, since I'm tired of # reading through docutils for the proper way to construct an empty list lists = [] for i in xrange(5): lists.append(nodes.bullet_list("", nodes.Text('', ''))) lists[i].remove(lists[i][0]) lists[i]['classes'].append('todo_list') for node in doctree.traverse(todolist): if not app.config['todo_include_todos']: node.replace_self([]) continue for todo_info in env.todo_all_todos: para = nodes.paragraph() # Create a reference newnode = nodes.reference('', '') filename = env.doc2path(todo_info['docname'], base=None) link = (_('%(filename)s, line %(line_info)d') % {'filename': filename, 'line_info': todo_info['lineno']}) innernode = nodes.emphasis(link, link) newnode['refdocname'] = todo_info['docname'] try: newnode['refuri'] = app.builder.get_relative_uri( fromdocname, todo_info['docname']) newnode['refuri'] += '#' + todo_info['target']['refid'] except NoUri: # ignore if no URI can be determined, e.g. for LaTeX output pass newnode.append(innernode) para += newnode para['classes'].append('todo_link') todo_entry = todo_info['todo'] env.resolve_references(todo_entry, todo_info['docname'], app.builder) item = nodes.list_item('', para) todo_entry[1]['classes'].append('details') comment = todo_entry[1] m = re.match(r"^P(\d)", comment.astext()) priority = 5 if m: priority = int(m.group(1)) if priority < 0: priority = 1 if priority > 5: priority = 5 item['classes'].append('todo_p' + str(priority)) todo_entry['classes'].append('todo_p' + str(priority)) item.append(comment) lists[priority - 1].insert(0, item) node.replace_self(lists) def setup(app): app.add_config_value('todo_include_todos', False, False) app.add_node(todolist) app.add_node(todo_node, html=(visit_todo_node, depart_todo_node), latex=(visit_todo_node, depart_todo_node), text=(visit_todo_node, depart_todo_node)) app.add_directive('todo', Todo) app.add_directive('todolist', TodoList) app.connect('doctree-read', process_todos) app.connect('doctree-resolved', process_todo_nodes) app.connect('env-purge-doc', purge_todos) nova-2014.1/doc/ext/__init__.py0000664000175400017540000000000012323721476017355 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/README.rst0000664000175400017540000000222712323721476016150 0ustar jenkinsjenkins00000000000000OpenStack Nova Documentation README =================================== Included documents: - developer reference guide(devref) - man pages Dependencies ------------ Building this documentation can be done in a regular Nova development environment, such as the virtualenv created by ``run_tests.sh`` or ``tools/install_venv.py``. A leaner but sufficient environment can be created by starting with one that is suitable for running Nova (such as the one created by DevStack) and then using pip to install oslosphinx. Building the docs ----------------- From the root nova directory:: python setup.py build_sphinx Building just the man pages --------------------------- from the root nova directory:: python setup.py build_sphinx -b man Installing the man pages ------------------------- After building the man pages, they can be found in ``doc/build/man/``. You can install the man page onto your system by following the following steps: Example for ``nova-scheduler``:: mkdir /usr/local/man/man1 install -g 0 -o 0 -m 0644 doc/build/man/nova-scheduler.1 /usr/local/man/man1/nova-scheduler.1 gzip /usr/local/man/man1/nova-scheduler.1 man nova-scheduler nova-2014.1/doc/api_samples/0000775000175400017540000000000012323722546016752 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-consoles/0000775000175400017540000000000012323722546021216 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-consoles/server-post-resp.json0000664000175400017540000000075412323721476025360 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "MVk5HPrazHcG", "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "bookmark" } ] } } nova-2014.1/doc/api_samples/os-consoles/server-post-req.json0000664000175400017540000000155312323721476025174 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/doc/api_samples/os-consoles/get-vnc-console-post-resp.json0000664000175400017540000000026512323721476027052 0ustar jenkinsjenkins00000000000000{ "console": { "type": "novnc", "url": "http://example.com:6080/vnc_auto.html?token=f9906a48-b71e-4f18-baca-c987da3ebdb3&title=dafa(75ecef58-3b8e-4659-ab3b-5501454188e9)" } } nova-2014.1/doc/api_samples/os-consoles/get-rdp-console-post-resp.xml0000664000175400017540000000024612323721476026677 0ustar jenkinsjenkins00000000000000 rdp-html5 http://example.com:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3 nova-2014.1/doc/api_samples/os-consoles/get-rdp-console-post-resp.json0000664000175400017540000000027612323721476027053 0ustar jenkinsjenkins00000000000000{ "console": { "type": "rdp-html5", "url": "http://example.com:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3&title=dafa(75ecef58-3b8e-4659-ab3b-5501454188e9)" } } nova-2014.1/doc/api_samples/os-consoles/get-spice-console-post-req.xml0000664000175400017540000000012112323721476027023 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-consoles/server-post-req.xml0000664000175400017540000000165012323721476025021 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-consoles/server-post-resp.xml0000664000175400017540000000073012323721476025201 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-consoles/get-rdp-console-post-req.json0000664000175400017540000000010012323721476026653 0ustar jenkinsjenkins00000000000000{ "os-getRDPConsole": { "type": "rdp-html5" } } nova-2014.1/doc/api_samples/os-consoles/get-rdp-console-post-req.xml0000664000175400017540000000011512323721476026510 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-consoles/get-vnc-console-post-req.json0000664000175400017540000000007412323721476026666 0ustar jenkinsjenkins00000000000000{ "os-getVNCConsole": { "type": "novnc" } } nova-2014.1/doc/api_samples/os-consoles/get-spice-console-post-resp.xml0000664000175400017540000000026712323721476027220 0ustar jenkinsjenkins00000000000000 spice-html5 http://example.com:6082/spice_auto.html?token=f9906a48-b71e-4f18-baca-c987da3ebdb3 nova-2014.1/doc/api_samples/os-consoles/get-spice-console-post-req.json0000664000175400017540000000010412323721476027175 0ustar jenkinsjenkins00000000000000{ "os-getSPICEConsole": { "type": "spice-html5" } } nova-2014.1/doc/api_samples/os-consoles/get-spice-console-post-resp.json0000664000175400017540000000027512323721476027370 0ustar jenkinsjenkins00000000000000{ "console": { "type": "spice-html5", "url": "http://example.com:6080/spice_auto.html?token=f9906a48-b71e-4f18-baca-c987da3ebdb3&title=dafa(75ecef58-3b8e-4659-ab3b-5501454188e9)" } } nova-2014.1/doc/api_samples/os-consoles/get-vnc-console-post-resp.xml0000664000175400017540000000025712323721476026702 0ustar jenkinsjenkins00000000000000 novnc http://example.com:6080/vnc_auto.html?token=f9906a48-b71e-4f18-baca-c987da3ebdb3 nova-2014.1/doc/api_samples/os-consoles/get-vnc-console-post-req.xml0000664000175400017540000000011112323721476026505 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-metadata-all-req.xml0000664000175400017540000000022612323721476024114 0ustar jenkinsjenkins00000000000000 Foo Value nova-2014.1/doc/api_samples/os-virtual-interfaces/0000775000175400017540000000000012323722546023200 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-virtual-interfaces/server-post-resp.json0000664000175400017540000000075312323721476027341 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "m62Pu3gkXXV2", "id": "a98dd3ae-5feb-4b4b-afa4-25e830ad3305", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/a98dd3ae-5feb-4b4b-afa4-25e830ad3305", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/a98dd3ae-5feb-4b4b-afa4-25e830ad3305", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-virtual-interfaces/server-post-req.json0000664000175400017540000000155212323721476027155 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-virtual-interfaces/vifs-list-resp.json0000664000175400017540000000024212323721476026761 0ustar jenkinsjenkins00000000000000{ "virtual_interfaces": [ { "id": "cec8b9bb-5d22-4104-b3c8-4c35db3210a6", "mac_address": "fa:16:3e:3c:ce:6f" } ] }nova-2014.1/doc/api_samples/os-virtual-interfaces/vifs-list-resp.xml0000664000175400017540000000034512323721476026614 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-virtual-interfaces/server-post-req.xml0000664000175400017540000000164712323721476027011 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-virtual-interfaces/server-post-resp.xml0000664000175400017540000000072712323721476027171 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-fping/0000775000175400017540000000000012323722546020474 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-fping/server-post-resp.json0000664000175400017540000000075312323721476024635 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "xrDLoBeMD28B", "id": "3f69b6bd-00a8-4636-96ee-650093624304", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3f69b6bd-00a8-4636-96ee-650093624304", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3f69b6bd-00a8-4636-96ee-650093624304", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-fping/server-post-req.json0000664000175400017540000000155212323721476024451 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-fping/server-post-req.xml0000664000175400017540000000164712323721476024305 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-fping/fping-get-resp.xml0000664000175400017540000000030412323721476024043 0ustar jenkinsjenkins00000000000000 openstack 6a576ebe-8777-473a-ab95-8df34a50dedd False nova-2014.1/doc/api_samples/os-fping/server-post-resp.xml0000664000175400017540000000072712323721476024465 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-fping/fping-get-details-resp.json0000664000175400017540000000021112323721476025634 0ustar jenkinsjenkins00000000000000{ "server": { "alive": false, "id": "f5e6fd6d-c0a3-4f9e-aabf-d69196b6d11a", "project_id": "openstack" } }nova-2014.1/doc/api_samples/os-fping/fping-get-details-resp.xml0000664000175400017540000000024512323721476025472 0ustar jenkinsjenkins00000000000000 openstack 69d3caab-ed51-4ee7-9d4b-941ee1b45484 False nova-2014.1/doc/api_samples/os-fping/fping-get-resp.json0000664000175400017540000000025212323721476024216 0ustar jenkinsjenkins00000000000000{ "servers": [ { "alive": false, "id": "1d1aea35-472b-40cf-9337-8eb68480aaa1", "project_id": "openstack" } ] }nova-2014.1/doc/api_samples/server-post-resp.json0000664000175400017540000000075312323721476023113 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "MVk5HPrazHcG", "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-server-password/0000775000175400017540000000000012323722546022537 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-server-password/server-post-resp.json0000664000175400017540000000075312323721476026700 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "78AtBtuxTqZV", "id": "66fd64e1-de18-4506-bfb6-b5e73ef78a43", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/66fd64e1-de18-4506-bfb6-b5e73ef78a43", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/66fd64e1-de18-4506-bfb6-b5e73ef78a43", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-server-password/server-post-req.json0000664000175400017540000000155212323721476026514 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-server-password/get-password-resp.json0000664000175400017540000000055612323721476027027 0ustar jenkinsjenkins00000000000000{ "password": "xlozO3wLCBRWAa2yDjCCVx8vwNPypxnypmRYDa/zErlQ+EzPe1S/Gz6nfmC52mOlOSCRuUOmG7kqqgejPof6M7bOezS387zjq4LSvvwp28zUknzy4YzfFGhnHAdai3TxUJ26pfQCYrq8UTzmKF2Bq8ioSEtVVzM0A96pDh8W2i7BOz6MdoiVyiev/I1K2LsuipfxSJR7Wdke4zNXJjHHP2RfYsVbZ/k9ANu+Nz4iIH8/7Cacud/pphH7EjrY6a4RZNrjQskrhKYed0YERpotyjYk1eDtRe72GrSiXteqCM4biaQ5w3ruS+AcX//PXk3uJ5kC7d67fPXaVz4WaQRYMg==" }nova-2014.1/doc/api_samples/os-server-password/server-post-req.xml0000664000175400017540000000164712323721476026350 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-server-password/server-post-resp.xml0000664000175400017540000000072712323721476026530 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-server-password/get-password-resp.xml0000664000175400017540000000062412323721476026652 0ustar jenkinsjenkins00000000000000 xlozO3wLCBRWAa2yDjCCVx8vwNPypxnypmRYDa/zErlQ+EzPe1S/Gz6nfmC52mOlOSCRuUOmG7kqqgejPof6M7bOezS387zjq4LSvvwp28zUknzy4YzfFGhnHAdai3TxUJ26pfQCYrq8UTzmKF2Bq8ioSEtVVzM0A96pDh8W2i7BOz6MdoiVyiev/I1K2LsuipfxSJR7Wdke4zNXJjHHP2RfYsVbZ/k9ANu+Nz4iIH8/7Cacud/pphH7EjrY6a4RZNrjQskrhKYed0YERpotyjYk1eDtRe72GrSiXteqCM4biaQ5w3ruS+AcX//PXk3uJ5kC7d67fPXaVz4WaQRYMg==nova-2014.1/doc/api_samples/limit-get-resp.json0000664000175400017540000000522212323721476022511 0ustar jenkinsjenkins00000000000000{ "limits": { "absolute": { "maxImageMeta": 128, "maxPersonality": 5, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxSecurityGroups": 10, "maxServerMeta": 128, "maxTotalCores": 20, "maxTotalFloatingIps": 10, "maxTotalInstances": 10, "maxTotalKeypairs": 100, "maxTotalRAMSize": 51200 }, "rate": [ { "limit": [ { "next-available": "2012-11-27T17:22:18Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" }, { "next-available": "2012-11-27T17:22:18Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "PUT" }, { "next-available": "2012-11-27T17:22:18Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "DELETE" } ], "regex": ".*", "uri": "*" }, { "limit": [ { "next-available": "2012-11-27T17:22:18Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" } ], "regex": "^/servers", "uri": "*/servers" }, { "limit": [ { "next-available": "2012-11-27T17:22:18Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "GET" } ], "regex": ".*changes-since.*", "uri": "*changes-since*" }, { "limit": [ { "next-available": "2012-11-27T17:22:18Z", "remaining": 12, "unit": "MINUTE", "value": 12, "verb": "GET" } ], "regex": "^/os-fping", "uri": "*/os-fping" } ] } } nova-2014.1/doc/api_samples/server-action-reboot.xml0000664000175400017540000000016712323721476023552 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/image-get-resp.xml0000664000175400017540000000164112323721476022305 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/doc/api_samples/image-metadata-post-req.xml0000664000175400017540000000030112323721476024077 0ustar jenkinsjenkins00000000000000 False UpdatedImage nova-2014.1/doc/api_samples/images-list-resp.xml0000664000175400017540000000705112323721476022665 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-action-rebuild.xml0000664000175400017540000000167512323721476023713 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-evacuate/0000775000175400017540000000000012323722546021166 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-evacuate/server-post-resp.json0000664000175400017540000000075312323721476025327 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "xjDVAYHmc34s", "id": "784f5005-bec9-4c22-8c42-5a7dcba88d82", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/784f5005-bec9-4c22-8c42-5a7dcba88d82", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/784f5005-bec9-4c22-8c42-5a7dcba88d82", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-evacuate/server-post-req.json0000664000175400017540000000155212323721476025143 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-evacuate/server-evacuate-resp.xml0000664000175400017540000000011212323721476025753 0ustar jenkinsjenkins00000000000000 MySecretPassnova-2014.1/doc/api_samples/os-evacuate/server-evacuate-req.json0000664000175400017540000000020112323721476025741 0ustar jenkinsjenkins00000000000000{ "evacuate": { "host": "TargetHost", "adminPass": "MySecretPass", "onSharedStorage": "True" } } nova-2014.1/doc/api_samples/os-evacuate/server-post-req.xml0000664000175400017540000000164712323721476024777 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-evacuate/server-evacuate-req.xml0000664000175400017540000000026212323721476025577 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-evacuate/server-post-resp.xml0000664000175400017540000000072712323721476025157 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-evacuate/server-evacuate-resp.json0000664000175400017540000000004412323721476026130 0ustar jenkinsjenkins00000000000000{ "adminPass": "MySecretPass" } nova-2014.1/doc/api_samples/server-post-req.json0000664000175400017540000000154112323721476022725 0ustar jenkinsjenkins00000000000000{ "server": { "flavorRef": "http://openstack.example.com/openstack/flavors/1", "imageRef": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "personality": [ { "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "path": "/etc/banner.txt" } ] } }nova-2014.1/doc/api_samples/os-config-drive/0000775000175400017540000000000012323722546021745 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-config-drive/server-post-resp.json0000664000175400017540000000075312323721476026106 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "am5LKVsBVQ4s", "id": "58da039c-dc81-4d8f-8688-a2f819e2f750", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/58da039c-dc81-4d8f-8688-a2f819e2f750", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/58da039c-dc81-4d8f-8688-a2f819e2f750", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-config-drive/server-config-drive-get-resp.xml0000664000175400017540000000223512323721476030076 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-config-drive/server-post-req.json0000664000175400017540000000155212323721476025722 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-config-drive/server-post-req.xml0000664000175400017540000000164712323721476025556 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-config-drive/server-post-resp.xml0000664000175400017540000000072712323721476025736 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-config-drive/server-config-drive-get-resp.json0000664000175400017540000000317512323721476030253 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "config_drive": "", "created": "2013-02-04T13:17:50Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "8725fb615b191d8249a40f3e90d1efde88d914412e4edb2719176afd", "id": "dd3b0715-a3fc-43d8-bbd2-2720beb226fb", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/dd3b0715-a3fc-43d8-bbd2-2720beb226fb", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/dd3b0715-a3fc-43d8-bbd2-2720beb226fb", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-04T13:17:51Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-config-drive/servers-config-drive-details-resp.json0000664000175400017540000000353612323721476031305 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "config_drive": "", "created": "2013-02-04T13:21:44Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "76e154b0015e25fad65a7ab0c35a86dd79acfa8312075a6534ef6176", "id": "720e688f-5ec8-4d4f-b585-dbd1a89ceeb0", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/720e688f-5ec8-4d4f-b585-dbd1a89ceeb0", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/720e688f-5ec8-4d4f-b585-dbd1a89ceeb0", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-04T13:21:44Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/os-config-drive/servers-config-drive-details-resp.xml0000664000175400017540000000232612323721476031130 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-SCH-HNT/0000775000175400017540000000000012323722546020335 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-SCH-HNT/scheduler-hints-post-req.json0000664000175400017540000000041012323721476026075 0ustar jenkinsjenkins00000000000000{ "server": { "name": "new-server-test", "imageRef": "70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef": "1" }, "os:scheduler_hints": { "hypervisor": "xen", "near": "2b7c42eb-7736-4a0f-afab-f23969a35ada" } }nova-2014.1/doc/api_samples/OS-SCH-HNT/scheduler-hints-post-req.xml0000664000175400017540000000071612323721476025735 0ustar jenkinsjenkins00000000000000 xen eb999657-dd6b-464e-8713-95c532ac3b18 nova-2014.1/doc/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.xml0000664000175400017540000000072712323721476026121 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.json0000664000175400017540000000075312323721476026271 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "yjzytFHb7XHc", "id": "f8f4f3ce-f6e0-4e05-8f79-bf984fdfce45", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/f8f4f3ce-f6e0-4e05-8f79-bf984fdfce45", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/f8f4f3ce-f6e0-4e05-8f79-bf984fdfce45", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-aggregates/0000775000175400017540000000000012323722546021502 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-aggregates/server-post-resp.json0000664000175400017540000000075312323721476025643 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "kWaKB9zfiMsq", "id": "d261e7aa-50ea-45bb-827c-61bd94deb012", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/d261e7aa-50ea-45bb-827c-61bd94deb012", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/d261e7aa-50ea-45bb-827c-61bd94deb012", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-aggregates/aggregate-update-post-resp.xml0000664000175400017540000000062012323721476027363 0ustar jenkinsjenkins00000000000000 newname nova2 False 2012-12-04 12:04:30.245284 2012-12-04 12:04:30.357795 None 1 nova2 nova-2014.1/doc/api_samples/os-aggregates/server-post-req.json0000664000175400017540000000155212323721476025457 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-aggregates/aggregate-update-post-resp.json0000664000175400017540000000055212323721476027540 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova2", "created_at": "2012-12-04T12:04:27.075065", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova2" }, "name": "newname", "updated_at": "2012-12-04T12:04:27.242597" } }nova-2014.1/doc/api_samples/os-aggregates/aggregate-add-host-post-req.json0000664000175400017540000000011612323721476027573 0ustar jenkinsjenkins00000000000000{ "add_host": { "host": "581d29b9e3504d8a895caddb13839b15" } }nova-2014.1/doc/api_samples/os-aggregates/aggregate-update-post-req.xml0000664000175400017540000000013512323721476027202 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-aggregates/aggregate-remove-host-post-req.json0000664000175400017540000000012112323721476030334 0ustar jenkinsjenkins00000000000000{ "remove_host": { "host": "581d29b9e3504d8a895caddb13839b15" } }nova-2014.1/doc/api_samples/os-aggregates/aggregate-add-host-post-req.xml0000664000175400017540000000013312323721476027421 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-aggregates/aggregates-get-resp.xml0000664000175400017540000000056612323721476026071 0ustar jenkinsjenkins00000000000000 name nova False 2012-11-16 06:22:25.587739 None None 1 nova nova-2014.1/doc/api_samples/os-aggregates/aggregate-post-resp.xml0000664000175400017540000000043712323721476026111 0ustar jenkinsjenkins00000000000000 name nova False 2012-10-01 18:50:35.506667 None None 1 nova-2014.1/doc/api_samples/os-aggregates/aggregate-post-resp.json0000664000175400017540000000035712323721476026263 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2012-10-01T18:50:27.781065", "deleted": false, "deleted_at": null, "id": 1, "name": "name", "updated_at": null } }nova-2014.1/doc/api_samples/os-aggregates/aggregates-add-host-post-resp.xml0000664000175400017540000000066112323721476027774 0ustar jenkinsjenkins00000000000000 name nova False 2012-12-04 12:04:27.574038 None 392adba19dd449179804eaff16ff4a97 None 1 nova nova-2014.1/doc/api_samples/os-aggregates/aggregate-update-post-req.json0000664000175400017540000000014012323721476027347 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "newname", "availability_zone": "nova2" } }nova-2014.1/doc/api_samples/os-aggregates/aggregate-metadata-post-req.xml0000664000175400017540000000017512323721476027504 0ustar jenkinsjenkins00000000000000 value nova-2014.1/doc/api_samples/os-aggregates/aggregate-remove-host-post-req.xml0000664000175400017540000000013612323721476030171 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-aggregates/aggregates-metadata-post-resp.json0000664000175400017540000000055112323721476030220 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2012-11-16T06:22:22.342791", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova", "key": "value" }, "name": "name", "updated_at": null } }nova-2014.1/doc/api_samples/os-aggregates/aggregates-get-resp.json0000664000175400017540000000051612323721476026235 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2012-11-16T06:22:23.032493", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/doc/api_samples/os-aggregates/aggregates-add-host-post-resp.json0000664000175400017540000000060512323721476030143 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2012-12-04T12:04:24.399784", "deleted": false, "deleted_at": null, "hosts": [ "0438c6a4e8d841ad823b801d681f4680" ], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } }nova-2014.1/doc/api_samples/os-aggregates/aggregates-remove-host-post-resp.json0000664000175400017540000000051512323721476030710 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "2012-12-04T12:04:26.557909", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } }nova-2014.1/doc/api_samples/os-aggregates/aggregates-list-get-resp.json0000664000175400017540000000061612323721476027207 0ustar jenkinsjenkins00000000000000{ "aggregates": [ { "availability_zone": "nova", "created_at": "2012-11-16T06:22:23.361359", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } ] }nova-2014.1/doc/api_samples/os-aggregates/aggregate-post-req.xml0000664000175400017540000000013112323721476025716 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-aggregates/aggregates-metadata-post-resp.xml0000664000175400017540000000061212323721476030045 0ustar jenkinsjenkins00000000000000 name nova False 2012-11-16 06:22:24.864471 None None 1 value nova nova-2014.1/doc/api_samples/os-aggregates/aggregate-post-req.json0000664000175400017540000000013412323721476026072 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "name", "availability_zone": "nova" } }nova-2014.1/doc/api_samples/os-aggregates/aggregates-list-get-resp.xml0000664000175400017540000000065312323721476027037 0ustar jenkinsjenkins00000000000000 name nova False 2012-11-16 06:22:25.935099 None None 1 nova nova-2014.1/doc/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml0000664000175400017540000000056512323721476030544 0ustar jenkinsjenkins00000000000000 name nova False 2012-12-04 12:04:29.722109 None None 1 nova nova-2014.1/doc/api_samples/os-aggregates/aggregate-metadata-post-req.json0000664000175400017540000000021212323721476027645 0ustar jenkinsjenkins00000000000000{ "set_metadata": { "metadata": { "key": "value" } } }nova-2014.1/doc/api_samples/server-action-confirmresize.json0000664000175400017540000000003612323721476025303 0ustar jenkinsjenkins00000000000000{ "confirmResize" : null }nova-2014.1/doc/api_samples/image-get-resp.json0000664000175400017540000000210012323721476022445 0ustar jenkinsjenkins00000000000000{ "image": { "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } }nova-2014.1/doc/api_samples/image-meta-key-put-req.json0000664000175400017540000000010512323721476024031 0ustar jenkinsjenkins00000000000000{ "meta" : { "auto_disk_config" : "False" } }nova-2014.1/doc/api_samples/os-migrations/0000775000175400017540000000000012323722546021545 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-migrations/migrations-get.xml0000664000175400017540000000122312323721476025217 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-migrations/migrations-get.json0000664000175400017540000000201012323721476025363 0ustar jenkinsjenkins00000000000000{ "migrations": [ { "created_at": "2012-10-29T13:42:02.000000", "dest_compute": "compute2", "dest_host": "1.2.3.4", "dest_node": "node2", "id": 1234, "instance_uuid": "instance_id_123", "new_instance_type_id": 2, "old_instance_type_id": 1, "source_compute": "compute1", "source_node": "node1", "status": "Done", "updated_at": "2012-10-29T13:42:02.000000" }, { "created_at": "2013-10-22T13:42:02.000000", "dest_compute": "compute20", "dest_host": "5.6.7.8", "dest_node": "node20", "id": 5678, "instance_uuid": "instance_id_456", "new_instance_type_id": 6, "old_instance_type_id": 5, "source_compute": "compute10", "source_node": "node10", "status": "Done", "updated_at": "2013-10-22T13:42:02.000000" } ] }nova-2014.1/doc/api_samples/os-floating-ip-pools/0000775000175400017540000000000012323722546022734 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-floating-ip-pools/floatingippools-list-resp.xml0000664000175400017540000000022512323721476030607 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ip-pools/floatingippools-list-resp.json0000664000175400017540000000020512323721476030756 0ustar jenkinsjenkins00000000000000{ "floating_ip_pools": [ { "name": "pool1" }, { "name": "pool2" } ] }nova-2014.1/doc/api_samples/server-action-confirmresize.xml0000664000175400017540000000015612323721476025135 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-action-createimage.xml0000664000175400017540000000032612323721476024523 0ustar jenkinsjenkins00000000000000 foobar nova-2014.1/doc/api_samples/NMN/0000775000175400017540000000000012323722546017402 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/NMN/multinic-add-fixed-ip-req.json0000664000175400017540000000007012323721476025135 0ustar jenkinsjenkins00000000000000{ "addFixedIp":{ "networkId": 1 } } nova-2014.1/doc/api_samples/NMN/server-post-resp.json0000664000175400017540000000075312323721476023543 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "xrDLoBeMD28B", "id": "3f69b6bd-00a8-4636-96ee-650093624304", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3f69b6bd-00a8-4636-96ee-650093624304", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3f69b6bd-00a8-4636-96ee-650093624304", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/NMN/server-post-req.json0000664000175400017540000000155212323721476023357 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/NMN/server-post-req.xml0000664000175400017540000000164712323721476023213 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/NMN/multinic-add-fixed-ip-req.xml0000664000175400017540000000007012323721476024764 0ustar jenkinsjenkins00000000000000 1 nova-2014.1/doc/api_samples/NMN/server-post-resp.xml0000664000175400017540000000072712323721476023373 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/NMN/multinic-remove-fixed-ip-req.json0000664000175400017540000000010212323721476025676 0ustar jenkinsjenkins00000000000000{ "removeFixedIp":{ "address": "10.0.0.2" } } nova-2014.1/doc/api_samples/NMN/multinic-remove-fixed-ip-req.xml0000664000175400017540000000010112323721476025524 0ustar jenkinsjenkins00000000000000
10.0.0.2
nova-2014.1/doc/api_samples/os-floating-ip-dns/0000775000175400017540000000000012323722546022364 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.xml0000664000175400017540000000021612323721476032207 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.xml0000664000175400017540000000024712323721476031164 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.json0000664000175400017540000000031212323721476030167 0ustar jenkinsjenkins00000000000000{ "domain_entries": [ { "availability_zone": null, "domain": "domain1.example.org", "project": "project1", "scope": "public" } ] }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.json0000664000175400017540000000025012323721476031133 0ustar jenkinsjenkins00000000000000{ "dns_entry": { "domain": "domain1.example.org", "id": null, "ip": "192.168.1.1", "name": "instance1", "type": null } }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.xml0000664000175400017540000000024212323721476032024 0ustar jenkinsjenkins00000000000000 domain1.example.org public project1 nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.json0000664000175400017540000000017512323721476032202 0ustar jenkinsjenkins00000000000000{ 'domain_entry' : { 'domain': 'domain1.example.org', 'scope': 'public', 'project': 'project1' } }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.xml0000664000175400017540000000016112323721476033163 0ustar jenkinsjenkins00000000000000 192.168.53.11 A nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.json0000664000175400017540000000012212323721476033331 0ustar jenkinsjenkins00000000000000{ 'dns_entry' : { 'ip': '192.168.53.11', 'dns_type': 'A' } }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.json0000664000175400017540000000024712323721476033523 0ustar jenkinsjenkins00000000000000{ "dns_entry": { "domain": "domain1.example.org", "id": null, "ip": "192.168.1.1", "name": "instance1", "type": "A" } }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.xml0000664000175400017540000000026312323721476030023 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.xml0000664000175400017540000000020512323721476033344 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.json0000664000175400017540000000024412323721476032361 0ustar jenkinsjenkins00000000000000{ "domain_entry": { "availability_zone": null, "domain": "domain1.example.org", "project": "project1", "scope": "public" } }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.json0000664000175400017540000000032212323721476031327 0ustar jenkinsjenkins00000000000000{ "dns_entries": [ { "domain": "domain1.example.org", "id": null, "ip": "192.168.1.1", "name": "instance1", "type": null } ] }nova-2014.1/doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.xml0000664000175400017540000000021012323721476030756 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/0000775000175400017540000000000012323722546020760 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/server-post-resp.json0000664000175400017540000000075312323721476025121 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "zD7wDKTXiHsp", "id": "b44e5008-42f7-4048-b4c8-f40a29da88ba", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/b44e5008-42f7-4048-b4c8-f40a29da88ba", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/b44e5008-42f7-4048-b4c8-f40a29da88ba", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/server-post-req.json0000664000175400017540000000155212323721476024735 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/server-get-resp.json0000664000175400017540000000324612323721476024713 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:e1:42:90" } ] }, "created": "2013-02-07T18:46:28Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "4e2003eddbfdb1280c2618d04090bcdd6773203b8da8347af0b2723d", "id": "dc7281f9-ee47-40b9-9950-9f73e7961caa", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/dc7281f9-ee47-40b9-9950-9f73e7961caa", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/dc7281f9-ee47-40b9-9950-9f73e7961caa", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-07T18:46:29Z", "user_id": "fake" } } nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/server-post-req.xml0000664000175400017540000000164712323721476024571 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/server-get-resp.xml0000664000175400017540000000242112323721476024534 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/server-post-resp.xml0000664000175400017540000000072712323721476024751 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.xml0000664000175400017540000000251212323721476025403 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.json0000664000175400017540000000360712323721476025562 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:e1:42:90" } ] }, "created": "2013-02-07T18:40:59Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "fe866a4962fe3bdb6c2db9c8f7dcdb9555aca73387e72b5cb9c45bd3", "id": "76908712-653a-4d16-807e-d89d41435d24", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/76908712-653a-4d16-807e-d89d41435d24", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/76908712-653a-4d16-807e-d89d41435d24", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-07T18:40:59Z", "user_id": "fake" } ] } nova-2014.1/doc/api_samples/os-baremetal-nodes/0000775000175400017540000000000012323722546022433 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.json0000664000175400017540000000037712323721476030243 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "terminal_port": 8000 } } nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml0000664000175400017540000000063712323721476027763 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.xml0000664000175400017540000000013012323721476031300 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml0000664000175400017540000000035712323721476032464 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.json0000664000175400017540000000011212323721476032216 0ustar jenkinsjenkins00000000000000{ "remove_interface": { "address": "aa:aa:aa:aa:aa:aa" } }nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.json0000664000175400017540000000021212323721476031634 0ustar jenkinsjenkins00000000000000{ "interface": { "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "id": 1, "port_no": null } }nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json0000664000175400017540000000106212323721476030125 0ustar jenkinsjenkins00000000000000{ "nodes": [ { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [ { "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "id": 1, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "service_host": "host", "terminal_port": 8000 } ] }nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.xml0000664000175400017540000000013312323721476032050 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.xml0000664000175400017540000000017012323721476031466 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json0000664000175400017540000000046012323721476032630 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000 } } nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json0000664000175400017540000000073112323721476030134 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [ { "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "id": 1, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "service_host": "host", "terminal_port": 8000 } }nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json0000664000175400017540000000044612323721476030422 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "service_host": "host", "terminal_port": 8000 } }nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.json0000664000175400017540000000010712323721476031455 0ustar jenkinsjenkins00000000000000{ "add_interface": { "address": "aa:aa:aa:aa:aa:aa" } }nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json0000664000175400017540000000073212323721476033014 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [ { "address": "12:34:56:78:90:ab", "datapath_id": null, "id": 1, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "service_host": "host", "terminal_port": 8000 } } nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml0000664000175400017540000000055312323721476032644 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml0000664000175400017540000000055212323721476027764 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml0000664000175400017540000000035512323721476030250 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml0000664000175400017540000000030612323721476030062 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-block-device-mapping-v2-boot/0000775000175400017540000000000012323722546024637 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-block-device-mapping-v2-boot/server-post-resp.json0000664000175400017540000000075312323721476031000 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "N4x7wFX6iN8D", "id": "babd1af0-4fc6-4529-b32f-aad69811ccf5", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/babd1af0-4fc6-4529-b32f-aad69811ccf5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/babd1af0-4fc6-4529-b32f-aad69811ccf5", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-block-device-mapping-v2-boot/server-post-req.json0000664000175400017540000000264112323721476030614 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ], "block_device_mapping_v2": [ { "device_name": "/dev/sdb1", "source_type": "blank", "destination_type": "local", "delete_on_termination": "True", "guest_format": "swap", "boot_index": "-1" }, { "device_name": "/dev/sda1", "source_type": "volume", "destination_type": "volume", "uuid": "fake-volume-id-1", "boot_index": "0" } ] } }nova-2014.1/doc/api_samples/os-block-device-mapping-v2-boot/server-post-req.xml0000664000175400017540000000240412323721476030440 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-block-device-mapping-v2-boot/server-post-resp.xml0000664000175400017540000000072712323721476030630 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/flavors-list-resp.json0000664000175400017540000000412312323721476023242 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny" }, { "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small" }, { "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium" }, { "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large" }, { "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge" } ] }nova-2014.1/doc/api_samples/os-certificates/0000775000175400017540000000000012323722546022036 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-certificates/certificate-get-root-resp.xml0000664000175400017540000000223112323721476027546 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-certificates/certificate-get-root-resp.json0000664000175400017540000000214412323721476027722 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "-----BEGIN CERTIFICATE-----\nMIICyzCCAjSgAwIBAgIJAIJ/UoFWKoOUMA0GCSqGSIb3DQEBBAUAME4xEjAQBgNV\nBAoTCU5PVkEgUk9PVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMK\nQ2FsaWZvcm5pYTELMAkGA1UEBhMCVVMwHhcNMTIxMDAyMTg1NzQ1WhcNMTMxMDAy\nMTg1NzQ1WjBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWlu\nIFZpZXcxEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqG\nSIb3DQEBAQUAA4GNADCBiQKBgQCg0Bn8WSqbJF3QNTZUxo1TzmFBxuqvhjZLKbnQ\nIiShdVIWUK7RC8frq8FJI7dgJNmvkIBn9njABWDoZmurQRCzD65yCSbUc4R2ea5H\nIK4wQIui0CJykvMBNjAe3bzztVVs8/ccDTsjtqq3F/KeQkKzQVfSWBrJSmYtG5tO\nG+dOSwIDAQABo4GwMIGtMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFCljRfaNOsA/\n9mHuq0io7Lt83FtaMH4GA1UdIwR3MHWAFCljRfaNOsA/9mHuq0io7Lt83FtaoVKk\nUDBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcx\nEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTggkAgn9SgVYqg5QwDQYJ\nKoZIhvcNAQEEBQADgYEAEbpJOOlpKCh5omwfAwAfFg1ml4h/FJiCH3PETmOCc+3l\nCtWTBd4MG8AoH7A3PU2JKAGVQ5XWo6+ihpW1RgfQpCnloI6vIeGcws+rSLnlzULt\nIvfCJpRg7iQdR3jZGt3295behtP1GsCqipJEulOkOaEIs8iLlXgSOG94Mkwlb4Q=\n-----END CERTIFICATE-----\n", "private_key": null } }nova-2014.1/doc/api_samples/os-certificates/certificate-create-req.xml0000664000175400017540000000000012323721476027057 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-certificates/certificate-create-req.json0000664000175400017540000000000012323721476027230 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-certificates/certificate-create-resp.json0000664000175400017540000000671712323721476027437 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "Certificate:\n Data:\n Version: 1 (0x0)\n Serial Number: 23 (0x17)\n Signature Algorithm: md5WithRSAEncryption\n Issuer: O=NOVA ROOT, L=Mountain View, ST=California, C=US\n Validity\n Not Before: Oct 2 19:31:45 2012 GMT\n Not After : Oct 2 19:31:45 2013 GMT\n Subject: C=US, ST=California, O=OpenStack, OU=NovaDev, CN=openstack-fake-2012-10-02T19:31:45Z\n Subject Public Key Info:\n Public Key Algorithm: rsaEncryption\n RSA Public Key: (1024 bit)\n Modulus (1024 bit):\n 00:b8:87:67:7a:de:28:ed:f6:5d:1f:20:14:58:df:\n b0:f7:62:3d:85:61:a8:c2:31:49:5f:b5:2a:07:34:\n 0e:25:13:0d:2e:4d:79:c7:26:36:dd:d2:3e:c7:36:\n 54:80:0d:67:80:32:e6:a8:48:33:69:ec:22:2c:5c:\n cb:7a:88:0f:c0:48:de:67:14:54:d9:94:b4:6a:23:\n 36:28:23:44:47:8a:24:89:8e:f4:86:77:59:f8:62:\n b6:ab:d5:e0:bc:b4:ad:d1:95:dd:59:a3:aa:e3:ea:\n d3:ae:23:17:c5:54:96:a3:25:56:72:90:20:07:8c:\n 63:4d:be:e9:60:7e:10:57:17\n Exponent: 65537 (0x10001)\n Signature Algorithm: md5WithRSAEncryption\n 32:82:ff:8b:92:0e:8d:9c:6b:ce:7e:fe:34:16:2a:4c:47:4f:\n c7:28:a2:33:1e:48:56:2e:4b:e8:e8:e3:48:b1:3d:a3:43:21:\n ef:83:e7:df:e2:10:91:7e:9a:c0:4d:1e:96:68:2b:b9:f7:84:\n 7f:ec:84:8a:bf:bc:5e:50:05:d9:ce:4a:1a:bf:d2:bf:0c:d1:\n 7e:ec:64:c3:a5:37:78:a3:a6:2b:a1:b7:1c:cc:c8:b9:78:61:\n 98:50:3c:e6:28:34:f1:0e:62:bb:b5:d7:a1:dd:1f:38:c6:0d:\n 58:9f:81:67:ff:9c:32:fc:52:7e:6d:8c:91:43:49:fe:e3:48:\n bb:40\n-----BEGIN CERTIFICATE-----\nMIICMzCCAZwCARcwDQYJKoZIhvcNAQEEBQAwTjESMBAGA1UEChMJTk9WQSBST09U\nMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQIEwpDYWxpZm9ybmlhMQsw\nCQYDVQQGEwJVUzAeFw0xMjEwMDIxOTMxNDVaFw0xMzEwMDIxOTMxNDVaMHYxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQKEwlPcGVuU3Rh\nY2sxEDAOBgNVBAsTB05vdmFEZXYxLDAqBgNVBAMTI29wZW5zdGFjay1mYWtlLTIw\nMTItMTAtMDJUMTk6MzE6NDVaMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4\nh2d63ijt9l0fIBRY37D3Yj2FYajCMUlftSoHNA4lEw0uTXnHJjbd0j7HNlSADWeA\nMuaoSDNp7CIsXMt6iA/ASN5nFFTZlLRqIzYoI0RHiiSJjvSGd1n4Yrar1eC8tK3R\nld1Zo6rj6tOuIxfFVJajJVZykCAHjGNNvulgfhBXFwIDAQABMA0GCSqGSIb3DQEB\nBAUAA4GBADKC/4uSDo2ca85+/jQWKkxHT8coojMeSFYuS+jo40ixPaNDIe+D59/i\nEJF+msBNHpZoK7n3hH/shIq/vF5QBdnOShq/0r8M0X7sZMOlN3ijpiuhtxzMyLl4\nYZhQPOYoNPEOYru116HdHzjGDVifgWf/nDL8Un5tjJFDSf7jSLtA\n-----END CERTIFICATE-----\n", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQC4h2d63ijt9l0fIBRY37D3Yj2FYajCMUlftSoHNA4lEw0uTXnH\nJjbd0j7HNlSADWeAMuaoSDNp7CIsXMt6iA/ASN5nFFTZlLRqIzYoI0RHiiSJjvSG\nd1n4Yrar1eC8tK3Rld1Zo6rj6tOuIxfFVJajJVZykCAHjGNNvulgfhBXFwIDAQAB\nAoGBAIjfxx4YU/vO1lwUC4OwyS92q3OYcPk6XdakJryZHDTb4NcLmNzjt6bqIK7b\n2enyB2fMWdNRWvGiueZ2HmiRLDyOGsAVdEsHvL4qbr9EZGTqC8Qxx+zTevWWf6pB\nF1zxzbXNQDFZDf9kVsSLCkbMHITnW1k4MrM++9gfCO3WrfehAkEA4nd8TyCCZazq\nKMOQwFLTNaiVLeTXCtvGopl4ZNiKYZ1qI3KDXb2wbAyArFuERlotxFlylXpwtlMo\nSlI/C/sYqwJBANCX1sdfRJq8DpdP44ThWqOkWFLB9rBiwyyBt8746fX8amwr8eyz\nH44/z5GT/Vyp8qFsjkuDzeP93eeDnr2qE0UCP1zipRnPO6x4P5J4o+Y+EmLvwkAQ\nnCLYAaCvUbILHrbq2Z2wWjEYnEO03RHUd2xjkGH4TgcBMTmW4e+ZzEIduwJACnIw\nLVfWBbG5QVac3EC021EVoz9XbUnk4Eu2usS4Yrs7USN6QBJQWD1V1cKFg6h3ICJh\nleKJ4wsJm9h5kKH9yQJBAN8CaX223MlTSuBOVuIOwNA+09iLfx4UCLiH1fGMKDpe\nxVcmkM3qCnTqNxrAPSFdT9IyB3IXiaLWbvzl7MfiOwQ=\n-----END RSA PRIVATE KEY-----\n" } }nova-2014.1/doc/api_samples/os-certificates/certificate-create-resp.xml0000664000175400017540000000721112323721476027254 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/image-metadata-put-resp.json0000664000175400017540000000013212323721476024257 0ustar jenkinsjenkins00000000000000{ "metadata": { "Label": "Changed", "auto_disk_config": "True" } }nova-2014.1/doc/api_samples/server-metadata-all-resp.xml0000664000175400017540000000022312323721476024273 0ustar jenkinsjenkins00000000000000 Foo Value nova-2014.1/doc/api_samples/image-metadata-put-resp.xml0000664000175400017540000000027612323721476024117 0ustar jenkinsjenkins00000000000000 True Changed nova-2014.1/doc/api_samples/os-cell-capacities/0000775000175400017540000000000012323722546022413 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-cell-capacities/cells-capacities-resp.xml0000664000175400017540000000132212323721476027310 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-cell-capacities/cells-capacities-resp.json0000664000175400017540000000072312323721476027465 0ustar jenkinsjenkins00000000000000{ "cell": { "capacities": { "ram_free": { "units_by_mb": { "8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0 }, "total_mb": 7680 }, "disk_free": { "units_by_mb": { "81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0 }, "total_mb": 1052672 } } } } nova-2014.1/doc/api_samples/os-availability-zone/0000775000175400017540000000000012323722546023014 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-availability-zone/availability-zone-post-req.xml0000664000175400017540000000174012323721476030734 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-availability-zone/availability-zone-post-resp.json0000664000175400017540000000075312323721476031272 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "k4pKvTfcA4gY", "id": "3e45fa2a-5204-466f-a684-c2a8e1c82d7f", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3e45fa2a-5204-466f-a684-c2a8e1c82d7f", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3e45fa2a-5204-466f-a684-c2a8e1c82d7f", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-availability-zone/availability-zone-post-req.json0000664000175400017540000000161712323721476031110 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "availability_zone": "nova", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-availability-zone/availability-zone-post-resp.xml0000664000175400017540000000072712323721476031122 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/image-metadata-put-req.xml0000664000175400017540000000030312323721476023724 0ustar jenkinsjenkins00000000000000 True Changed nova-2014.1/doc/api_samples/server-ips-network-resp.json0000664000175400017540000000015212323721476024401 0ustar jenkinsjenkins00000000000000{ "private": [ { "addr": "192.168.0.3", "version": 4 } ] }nova-2014.1/doc/api_samples/os-used-limits/0000775000175400017540000000000012323722546021630 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-used-limits/usedlimits-get-resp.json0000664000175400017540000000551012323721476026433 0ustar jenkinsjenkins00000000000000{ "limits": { "absolute": { "maxImageMeta": 128, "maxPersonality": 5, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxSecurityGroups": 10, "maxServerMeta": 128, "maxTotalCores": 20, "maxTotalFloatingIps": 10, "maxTotalInstances": 10, "maxTotalKeypairs": 100, "maxTotalRAMSize": 51200, "totalCoresUsed": 0, "totalInstancesUsed": 0, "totalRAMUsed": 0, "totalSecurityGroupsUsed": 0, "totalFloatingIpsUsed": 0 }, "rate": [ { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" }, { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "PUT" }, { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "DELETE" } ], "regex": ".*", "uri": "*" }, { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" } ], "regex": "^/servers", "uri": "*/servers" }, { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "GET" } ], "regex": ".*changes-since.*", "uri": "*changes-since*" }, { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 12, "unit": "MINUTE", "value": 12, "verb": "GET" } ], "regex": "^/os-fping", "uri": "*/os-fping" } ] } } nova-2014.1/doc/api_samples/os-used-limits/usedlimits-get-resp.xml0000664000175400017540000000360412323721476026264 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/image-meta-key-put-req.xml0000664000175400017540000000021312323721476023660 0ustar jenkinsjenkins00000000000000 Falsenova-2014.1/doc/api_samples/image-metadata-get-resp.json0000664000175400017540000000024312323721476024231 0ustar jenkinsjenkins00000000000000{ "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" } }nova-2014.1/doc/api_samples/server-metadata-resp.xml0000664000175400017540000000017212323721476023530 0ustar jenkinsjenkins00000000000000 Bar Valuenova-2014.1/doc/api_samples/os-flavor-manage/0000775000175400017540000000000012323722546022110 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-flavor-manage/flavor-create-post-req.json0000664000175400017540000000021112323721476027300 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "test_flavor", "ram": 1024, "vcpus": 2, "disk": 10, "id": "10" } } nova-2014.1/doc/api_samples/os-flavor-manage/flavor-create-post-resp.xml0000664000175400017540000000057412323721476027325 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-manage/flavor-create-post-req.xml0000664000175400017540000000024412323721476027135 0ustar jenkinsjenkins00000000000000 test_flavor 1024 2 10 10 nova-2014.1/doc/api_samples/os-flavor-manage/flavor-create-post-resp.json0000664000175400017540000000067412323721476027477 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "10", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/10", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/10", "rel": "bookmark" } ], "name": "test_flavor", "ram": 1024, "vcpus": 2 } }nova-2014.1/doc/api_samples/server-get-resp.json0000664000175400017540000000314112323721476022677 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-08-20T21:11:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "65201c14a29663e06d0748e561207d998b343e1d164bfa0aafa9c45d", "id": "893c7791-f1df-4c3d-8383-3caae9656c62", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-08-20T21:11:09Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/server-ips-resp.xml0000664000175400017540000000030112323721476022535 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/0000775000175400017540000000000012323722546021214 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-services/services-list-get-resp.xml0000664000175400017540000000106312323721476026257 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/services-list-get-resp.json0000664000175400017540000000171212323721476026431 0ustar jenkinsjenkins00000000000000{ "services": [ { "binary": "nova-scheduler", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:02.000000", "zone": "internal" }, { "binary": "nova-compute", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:05.000000", "zone": "nova" }, { "binary": "nova-scheduler", "host": "host2", "state": "down", "status": "enabled", "updated_at": "2012-09-19T06:55:34.000000", "zone": "internal" }, { "binary": "nova-compute", "host": "host2", "state": "down", "status": "disabled", "updated_at": "2012-09-18T08:03:38.000000", "zone": "nova" } ] } nova-2014.1/doc/api_samples/os-services/service-disable-log-put-resp.xml0000664000175400017540000000020012323721476027324 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/service-disable-log-put-req.json0000664000175400017540000000012612323721476027322 0ustar jenkinsjenkins00000000000000{ "host": "host1", "binary": "nova-compute", "disabled_reason": "test2" } nova-2014.1/doc/api_samples/os-services/service-enable-put-req.json0000664000175400017540000000006612323721476026371 0ustar jenkinsjenkins00000000000000{ "host": "host1", "binary": "nova-compute" } nova-2014.1/doc/api_samples/os-services/service-disable-put-req.xml0000664000175400017540000000012612323721476026372 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/services-get-resp.xml0000664000175400017540000000121512323721476025305 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/service-enable-put-resp.json0000664000175400017540000000016212323721476026550 0ustar jenkinsjenkins00000000000000{ "service": { "host": "host1", "binary": "nova-compute", "status": "enabled" } } nova-2014.1/doc/api_samples/os-services/service-disable-log-put-resp.json0000664000175400017540000000022712323721476027506 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "host": "host1", "disabled_reason": "test2", "status": "disabled" } } nova-2014.1/doc/api_samples/os-services/service-disable-log-put-req.xml0000664000175400017540000000015512323721476027153 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/service-enable-put-req.xml0000664000175400017540000000012612323721476026215 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/services-get-resp.json0000664000175400017540000000214512323721476025461 0ustar jenkinsjenkins00000000000000{ "services": [ { "binary": "nova-scheduler", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:02.000000", "zone": "internal", "disabled_reason": "test1" }, { "binary": "nova-compute", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:05.000000", "zone": "nova", "disabled_reason": "test2" }, { "binary": "nova-scheduler", "host": "host2", "state": "down", "status": "enabled", "updated_at": "2012-09-19T06:55:34.000000", "zone": "internal", "disabled_reason": "" }, { "binary": "nova-compute", "host": "host2", "state": "down", "status": "disabled", "updated_at": "2012-09-18T08:03:38.000000", "zone": "nova", "disabled_reason": "test4" } ] } nova-2014.1/doc/api_samples/os-services/service-disable-put-resp.json0000664000175400017540000000016312323721476026726 0ustar jenkinsjenkins00000000000000{ "service": { "host": "host1", "binary": "nova-compute", "status": "disabled" } } nova-2014.1/doc/api_samples/os-services/service-disable-put-resp.xml0000664000175400017540000000015012323721476026551 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/service-enable-put-resp.xml0000664000175400017540000000014712323721476026402 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-services/service-disable-put-req.json0000664000175400017540000000006612323721476026546 0ustar jenkinsjenkins00000000000000{ "host": "host1", "binary": "nova-compute" } nova-2014.1/doc/api_samples/server-action-resize.xml0000664000175400017540000000017112323721476023554 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/image-meta-key-get.json0000664000175400017540000000006712323721476023222 0ustar jenkinsjenkins00000000000000{ "meta": { "kernel_id": "nokernel" } }nova-2014.1/doc/api_samples/versions-get-resp.json0000664000175400017540000000116412323721476023244 0ustar jenkinsjenkins00000000000000{ "versions": [ { "id": "v2.0", "links": [ { "href": "http://openstack.example.com/v2/", "rel": "self" } ], "status": "CURRENT", "updated": "2011-01-21T11:33:21Z" }, { "id": "v3.0", "links": [ { "href": "http://openstack.example.com/v3/", "rel": "self" } ], "status": "EXPERIMENTAL", "updated": "2013-07-23T11:33:21Z" } ] } nova-2014.1/doc/api_samples/os-cloudpipe-update/0000775000175400017540000000000012323722546022635 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-cloudpipe-update/cloud-pipe-update-req.xml0000664000175400017540000000021212323721476027461 0ustar jenkinsjenkins00000000000000 192.168.1.1 2000 nova-2014.1/doc/api_samples/os-cloudpipe-update/cloud-pipe-update-req.json0000664000175400017540000000014012323721476027632 0ustar jenkinsjenkins00000000000000{ "configure_project": { "vpn_ip": "192.168.1.1", "vpn_port": "2000" } }nova-2014.1/doc/api_samples/os-flavor-extra-specs/0000775000175400017540000000000012323722546023116 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.json0000664000175400017540000000003412323721476031601 0ustar jenkinsjenkins00000000000000{ "key1": "new_value1" }nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.xml0000664000175400017540000000012512323721476031613 0ustar jenkinsjenkins00000000000000 new_value1nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.xml0000664000175400017540000000015712323721476031311 0ustar jenkinsjenkins00000000000000 value2 value1 nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.xml0000664000175400017540000000012112323721476031104 0ustar jenkinsjenkins00000000000000 value1nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.json0000664000175400017540000000003412323721476031763 0ustar jenkinsjenkins00000000000000{ "key1": "new_value1" }nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.xml0000664000175400017540000000010212323721476031424 0ustar jenkinsjenkins00000000000000 new_value1nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.xml0000664000175400017540000000015712323721476031601 0ustar jenkinsjenkins00000000000000 value2 value1 nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.json0000664000175400017540000000012112323721476031557 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "value1", "key2": "value2" } }nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.json0000664000175400017540000000012112323721476031451 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "value1", "key2": "value2" } }nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.xml0000664000175400017540000000016412323721476031415 0ustar jenkinsjenkins00000000000000 value1 value2 nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.json0000664000175400017540000000003012323721476031254 0ustar jenkinsjenkins00000000000000{ "key1": "value1" }nova-2014.1/doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.json0000664000175400017540000000012112323721476031741 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "value1", "key2": "value2" } }nova-2014.1/doc/api_samples/server-post-req.xml0000664000175400017540000000165012323721476022555 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/images-details-get-resp.xml0000664000175400017540000001263312323721476024116 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/doc/api_samples/image-metadata-post-resp.xml0000664000175400017540000000047212323721476024272 0ustar jenkinsjenkins00000000000000 False nokernel UpdatedImage x86_64 True nova-2014.1/doc/api_samples/os-tenant-networks/0000775000175400017540000000000012323722546022534 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-tenant-networks/networks-post-req.xml0000664000175400017540000000025112323721476026701 0ustar jenkinsjenkins00000000000000 172.0.0.0/24 1 1 255 nova-2014.1/doc/api_samples/os-tenant-networks/networks-post-res.json0000664000175400017540000000021312323721476027052 0ustar jenkinsjenkins00000000000000{ "network": { "cidr": "172.0.0.0/24", "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "label": "public" } } nova-2014.1/doc/api_samples/os-tenant-networks/networks-post-res.xml0000664000175400017540000000023712323721476026707 0ustar jenkinsjenkins00000000000000 172.0.0.0/24 9ac30188-57d8-4349-94d1-dbad63b20e4d nova-2014.1/doc/api_samples/os-tenant-networks/networks-list-res.json0000664000175400017540000000047312323721476027050 0ustar jenkinsjenkins00000000000000{ "networks": [ { "cidr": "10.0.0.0/29", "id": "616fb98f-46ca-475e-917e-2563e5a8cd19", "label": "test_0" }, { "cidr": "10.0.0.8/29", "id": "616fb98f-46ca-475e-917e-2563e5a8cd20", "label": "test_1" } ] } nova-2014.1/doc/api_samples/os-tenant-networks/networks-post-req.json0000664000175400017540000000024512323721476027055 0ustar jenkinsjenkins00000000000000{ "network": { "label": "public", "cidr": "172.0.0.0/24", "vlan_start": 1, "num_networks": 1, "network_size": 255 } }nova-2014.1/doc/api_samples/os-tenant-networks/networks-list-res.xml0000664000175400017540000000050112323721476026667 0ustar jenkinsjenkins00000000000000 10.0.0.0/29 cf3fb0f1-9967-4dac-8284-2d103e904099 10.0.0.8/29 434385bc-a7ac-4778-b295-56f8134fddbc nova-2014.1/doc/api_samples/image-metadata-put-req.json0000664000175400017540000000013212323721476024075 0ustar jenkinsjenkins00000000000000{ "metadata": { "auto_disk_config": "True", "Label": "Changed" } }nova-2014.1/doc/api_samples/server-metadata-resp.json0000664000175400017540000000006212323721476023677 0ustar jenkinsjenkins00000000000000{ "meta": { "foo": "Bar Value" } }nova-2014.1/doc/api_samples/server-action-createimage.json0000664000175400017540000000017312323721476024674 0ustar jenkinsjenkins00000000000000{ "createImage" : { "name" : "foo-image", "metadata": { "myvar": "foobar" } } }nova-2014.1/doc/api_samples/os-server-diagnostics/0000775000175400017540000000000012323722546023204 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-server-diagnostics/server-post-resp.json0000664000175400017540000000075312323721476027345 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "gSLumCiGg3V9", "id": "b10a33d1-6fb5-45d4-876d-4e68962db878", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/b10a33d1-6fb5-45d4-876d-4e68962db878", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/b10a33d1-6fb5-45d4-876d-4e68962db878", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json0000664000175400017540000000060212323721476031435 0ustar jenkinsjenkins00000000000000{ "cpu0_time": 17300000000, "memory": 524288, "vda_errors": -1, "vda_read": 262144, "vda_read_req": 112, "vda_write": 5778432, "vda_write_req": 488, "vnet1_rx": 2070139, "vnet1_rx_drop": 0, "vnet1_rx_errors": 0, "vnet1_rx_packets": 26701, "vnet1_tx": 140208, "vnet1_tx_drop": 0, "vnet1_tx_errors": 0, "vnet1_tx_packets": 662 }nova-2014.1/doc/api_samples/os-server-diagnostics/server-post-req.json0000664000175400017540000000155212323721476027161 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-server-diagnostics/server-post-req.xml0000664000175400017540000000164712323721476027015 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-server-diagnostics/server-post-resp.xml0000664000175400017540000000072712323721476027175 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.xml0000664000175400017540000000120312323721476031262 0ustar jenkinsjenkins00000000000000 524288 5778432 26701 0 0 2070139 262144 488 140208 0 662 0 17300000000 112 -1 nova-2014.1/doc/api_samples/os-shelve/0000775000175400017540000000000012323722546020657 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-shelve/server-post-resp.json0000664000175400017540000000075312323721476025020 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "bGZzzzeaSp9z", "id": "9582b762-0964-4509-8fff-0146c02abe31", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/9582b762-0964-4509-8fff-0146c02abe31", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/9582b762-0964-4509-8fff-0146c02abe31", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-shelve/server-post-req.json0000664000175400017540000000155212323721476024634 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-shelve/os-shelve-offload.xml0000664000175400017540000000007412323721476024720 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-shelve/server-post-req.xml0000664000175400017540000000164712323721476024470 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-shelve/os-shelve.json0000664000175400017540000000002612323721476023456 0ustar jenkinsjenkins00000000000000{ "shelve": null }nova-2014.1/doc/api_samples/os-shelve/server-post-resp.xml0000664000175400017540000000072712323721476024650 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-shelve/os-shelve-offload.json0000664000175400017540000000003512323721476025066 0ustar jenkinsjenkins00000000000000{ "shelveOffload": null }nova-2014.1/doc/api_samples/os-shelve/os-shelve.xml0000664000175400017540000000006412323721476023307 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-shelve/os-unshelve.xml0000664000175400017540000000006712323721476023655 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-shelve/os-unshelve.json0000664000175400017540000000003012323721476024014 0ustar jenkinsjenkins00000000000000{ "unshelve": null }nova-2014.1/doc/api_samples/os-security-group-default-rules/0000775000175400017540000000000012323722546025144 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.jsonnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.j0000664000175400017540000000040212323721476035007 0ustar jenkinsjenkins00000000000000{ "security_group_default_rules": [ { "from_port": 80, "id": 1, "ip_protocol": "TCP", "ip_range": { "cidr": "10.10.10.0/24" }, "to_port": 80 } ] }././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.xmlnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.x0000664000175400017540000000057312323721476035036 0ustar jenkinsjenkins00000000000000 TCP 80 80 10.10.10.0/24 ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.xmlnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.x0000664000175400017540000000045412323721476035041 0ustar jenkinsjenkins00000000000000 80 80 TCP 10.10.10.0/24 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.xmlnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.0000664000175400017540000000032512323721476034747 0ustar jenkinsjenkins00000000000000 TCP 80 80 10.10.12.0/24 ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.jsonnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp0000664000175400017540000000032012323721476035046 0ustar jenkinsjenkins00000000000000{ "security_group_default_rule": { "from_port": 80, "id": 1, "ip_protocol": "TCP", "ip_range":{ "cidr": "10.10.10.0/24" }, "to_port": 80 } }././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.xmlnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp0000664000175400017540000000045512323721476035057 0ustar jenkinsjenkins00000000000000 TCP 80 80 10.10.10.0/24 ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.jsonnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.0000664000175400017540000000024012323721476034743 0ustar jenkinsjenkins00000000000000{ "security_group_default_rule": { "ip_protocol": "TCP", "from_port": "80", "to_port": "80", "cidr": "10.10.12.0/24" } }././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.jsonnova-2014.1/doc/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.j0000664000175400017540000000032112323721476035014 0ustar jenkinsjenkins00000000000000{ "security_group_default_rule": { "id": 1, "from_port": 80, "to_port": 80, "ip_protocol": "TCP", "ip_range": { "cidr": "10.10.10.0/24" } } }nova-2014.1/doc/api_samples/os-console-output/0000775000175400017540000000000012323722546022371 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-console-output/server-post-resp.json0000664000175400017540000000075312323721476026532 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "N4Lxd6cMUXmE", "id": "4e44ac84-f3ed-4219-aa2e-b3d1477f0ac3", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/4e44ac84-f3ed-4219-aa2e-b3d1477f0ac3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/4e44ac84-f3ed-4219-aa2e-b3d1477f0ac3", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-console-output/console-output-post-resp.json0000664000175400017540000000007312323721476030217 0ustar jenkinsjenkins00000000000000{ "output": "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE" }nova-2014.1/doc/api_samples/os-console-output/server-post-req.json0000664000175400017540000000155212323721476026346 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-console-output/console-output-post-req.xml0000664000175400017540000000011212323721476027656 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-console-output/server-post-req.xml0000664000175400017540000000164712323721476026202 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-console-output/server-post-resp.xml0000664000175400017540000000072712323721476026362 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-console-output/console-output-post-resp.xml0000664000175400017540000000013512323721476030045 0ustar jenkinsjenkins00000000000000 FAKE CONSOLE OUTPUT ANOTHER LAST LINEnova-2014.1/doc/api_samples/os-console-output/console-output-post-req.json0000664000175400017540000000007312323721476030035 0ustar jenkinsjenkins00000000000000{ "os-getConsoleOutput": { "length": 50 } }nova-2014.1/doc/api_samples/images-details-get-resp.json0000664000175400017540000001763312323721476024274 0ustar jenkinsjenkins00000000000000{ "images": [ { "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] }nova-2014.1/doc/api_samples/os-networks/0000775000175400017540000000000012323722546021245 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-networks/network-add-req.json0000664000175400017540000000001312323721476025137 0ustar jenkinsjenkins00000000000000{"id": "1"}nova-2014.1/doc/api_samples/os-networks/network-create-req.xml0000664000175400017540000000012312323721476025503 0ustar jenkinsjenkins00000000000000 10.20.105.0/24 nova-2014.1/doc/api_samples/os-networks/network-create-req.json0000664000175400017540000000013312323721476025655 0ustar jenkinsjenkins00000000000000{ "network": { "label": "new net 111", "cidr": "10.20.105.0/24" } }nova-2014.1/doc/api_samples/os-networks/network-show-resp.xml0000664000175400017540000000176612323721476025420 0ustar jenkinsjenkins00000000000000 br100 1000 10.0.0.3 eth0 2011-08-16 09:26:13.048257 20c8acc0-f747-4d71-a389-46d078ebf047 None None 10.0.0.1 None None 1234 10.0.0.2 False 100 10.0.0.7 255.255.255.248 False 10.0.0.0/29 127.0.0.1 False None 2011-08-15 06:19:19.387525 nsokolov-desktop None None None nova-2014.1/doc/api_samples/os-networks/networks-list-resp.xml0000664000175400017540000000406212323721476025566 0ustar jenkinsjenkins00000000000000 br100 1000 10.0.0.3 eth0 2011-08-16 09:26:13.048257 20c8acc0-f747-4d71-a389-46d078ebf047 None None 10.0.0.1 None None 1234 10.0.0.2 False 100 10.0.0.7 255.255.255.248 False 10.0.0.0/29 127.0.0.1 False None 2011-08-15 06:19:19.387525 nsokolov-desktop None None None br101 1001 10.0.0.11 eth0 None 20c8acc0-f747-4d71-a389-46d078ebf000 None None 10.0.0.9 None None None 10.0.0.10 False 101 10.0.0.15 255.255.255.248 False 10.0.0.10/29 None False None 2011-08-15 06:19:19.885495 None None None None nova-2014.1/doc/api_samples/os-networks/network-create-resp.json0000664000175400017540000000154312323721476026045 0ustar jenkinsjenkins00000000000000{ "network": { "bridge": null, "bridge_interface": null, "broadcast": "10.20.105.255", "cidr": "10.20.105.0/24", "cidr_v6": null, "created_at": null, "deleted": null, "deleted_at": null, "dhcp_start": "10.20.105.2", "dns1": null, "dns2": null, "gateway": "10.20.105.1", "gateway_v6": null, "host": null, "id": "668687f9-d724-4976-a6f4-a6fd3ad83da3", "injected": null, "label": "new net 111", "multi_host": null, "netmask": "255.255.255.0", "netmask_v6": null, "priority": null, "project_id": null, "rxtx_base": null, "updated_at": null, "vlan": null, "vpn_private_address": null, "vpn_public_address": null, "vpn_public_port": null } }nova-2014.1/doc/api_samples/os-networks/networks-list-resp.json0000664000175400017540000000402312323721476025734 0ustar jenkinsjenkins00000000000000{ "networks": [ { "bridge": "br100", "bridge_interface": "eth0", "broadcast": "10.0.0.7", "cidr": "10.0.0.0/29", "cidr_v6": null, "created_at": "2011-08-15 06:19:19.387525", "deleted": false, "deleted_at": null, "dhcp_start": "10.0.0.3", "dns1": null, "dns2": null, "gateway": "10.0.0.1", "gateway_v6": null, "host": "nsokolov-desktop", "id": "20c8acc0-f747-4d71-a389-46d078ebf047", "injected": false, "label": "mynet_0", "multi_host": false, "netmask": "255.255.255.248", "netmask_v6": null, "priority": null, "project_id": "1234", "rxtx_base": null, "updated_at": "2011-08-16 09:26:13.048257", "vlan": 100, "vpn_private_address": "10.0.0.2", "vpn_public_address": "127.0.0.1", "vpn_public_port": 1000 }, { "bridge": "br101", "bridge_interface": "eth0", "broadcast": "10.0.0.15", "cidr": "10.0.0.10/29", "cidr_v6": null, "created_at": "2011-08-15 06:19:19.885495", "deleted": false, "deleted_at": null, "dhcp_start": "10.0.0.11", "dns1": null, "dns2": null, "gateway": "10.0.0.9", "gateway_v6": null, "host": null, "id": "20c8acc0-f747-4d71-a389-46d078ebf000", "injected": false, "label": "mynet_1", "multi_host": false, "netmask": "255.255.255.248", "netmask_v6": null, "priority": null, "project_id": null, "rxtx_base": null, "updated_at": null, "vlan": 101, "vpn_private_address": "10.0.0.10", "vpn_public_address": null, "vpn_public_port": 1001 } ] }nova-2014.1/doc/api_samples/os-networks/network-show-resp.json0000664000175400017540000000164712323721476025567 0ustar jenkinsjenkins00000000000000{ "network": { "bridge": "br100", "bridge_interface": "eth0", "broadcast": "10.0.0.7", "cidr": "10.0.0.0/29", "cidr_v6": null, "created_at": "2011-08-15 06:19:19.387525", "deleted": false, "deleted_at": null, "dhcp_start": "10.0.0.3", "dns1": null, "dns2": null, "gateway": "10.0.0.1", "gateway_v6": null, "host": "nsokolov-desktop", "id": "20c8acc0-f747-4d71-a389-46d078ebf047", "injected": false, "label": "mynet_0", "multi_host": false, "netmask": "255.255.255.248", "netmask_v6": null, "priority": null, "project_id": "1234", "rxtx_base": null, "updated_at": "2011-08-16 09:26:13.048257", "vlan": 100, "vpn_private_address": "10.0.0.2", "vpn_public_address": "127.0.0.1", "vpn_public_port": 1000 } }nova-2014.1/doc/api_samples/os-networks/networks-disassociate-req.json0000664000175400017540000000002612323721476027251 0ustar jenkinsjenkins00000000000000{"disassociate": null}nova-2014.1/doc/api_samples/os-networks/networks-disassociate-req.xml0000664000175400017540000000004112323721476027075 0ustar jenkinsjenkins00000000000000Nonenova-2014.1/doc/api_samples/os-networks/network-create-resp.xml0000664000175400017540000000170312323721476025672 0ustar jenkinsjenkins00000000000000 None None 10.20.105.2 None None 1bbbed2b-0daa-47a1-b869-1981c29150b1 None None 10.20.105.1 None None None None False None 10.20.105.255 255.255.255.0 None 10.20.105.0/24 None None None None None None None None nova-2014.1/doc/api_samples/os-networks/network-add-req.xml0000664000175400017540000000001212323721476024765 0ustar jenkinsjenkins000000000000001nova-2014.1/doc/api_samples/os-security-groups/0000775000175400017540000000000012323722546022555 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-security-groups/security-group-post-req.xml0000664000175400017540000000014712323721476030053 0ustar jenkinsjenkins00000000000000 description nova-2014.1/doc/api_samples/os-security-groups/server-post-resp.json0000664000175400017540000000112112323721476026704 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "QmKpgBk7izBM", "id": "3ad37a3a-d5c4-40ab-9bff-af5b66a0e35b", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3ad37a3a-d5c4-40ab-9bff-af5b66a0e35b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3ad37a3a-d5c4-40ab-9bff-af5b66a0e35b", "rel": "bookmark" } ], "security_groups": [ { "name": "default" } ] } }nova-2014.1/doc/api_samples/os-security-groups/security-groups-get-resp.xml0000664000175400017540000000033012323721476030204 0ustar jenkinsjenkins00000000000000 default nova-2014.1/doc/api_samples/os-security-groups/security-groups-get-resp.json0000664000175400017540000000024512323721476030362 0ustar jenkinsjenkins00000000000000{ "security_group": { "description": "default", "id": 1, "name": "default", "rules": [], "tenant_id": "openstack" } }nova-2014.1/doc/api_samples/os-security-groups/server-post-req.json0000664000175400017540000000155212323721476026532 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-security-groups/server-security-groups-list-resp.json0000664000175400017540000000031612323721476032061 0ustar jenkinsjenkins00000000000000{ "security_groups": [ { "description": "default", "id": 1, "name": "default", "rules": [], "tenant_id": "openstack" } ] }nova-2014.1/doc/api_samples/os-security-groups/security-group-add-post-req.xml0000664000175400017540000000014112323721476030573 0ustar jenkinsjenkins00000000000000 test nova-2014.1/doc/api_samples/os-security-groups/server-post-req.xml0000664000175400017540000000166112323721476026362 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-security-groups/security-group-remove-post-req.json0000664000175400017540000000007712323721476031521 0ustar jenkinsjenkins00000000000000{ "removeSecurityGroup" : { "name" : "test" } }nova-2014.1/doc/api_samples/os-security-groups/security-group-post-req.json0000664000175400017540000000013612323721476030222 0ustar jenkinsjenkins00000000000000{ "security_group": { "name": "test", "description": "description" } }nova-2014.1/doc/api_samples/os-security-groups/server-post-resp.xml0000664000175400017540000000104512323721476026540 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-security-groups/security-groups-create-resp.xml0000664000175400017540000000034712323721476030700 0ustar jenkinsjenkins00000000000000 description nova-2014.1/doc/api_samples/os-security-groups/security-groups-create-resp.json0000664000175400017540000000024612323721476031047 0ustar jenkinsjenkins00000000000000{ "security_group": { "description": "description", "id": 2, "name": "test", "rules": [], "tenant_id": "openstack" } }nova-2014.1/doc/api_samples/os-security-groups/security-groups-list-get-resp.xml0000664000175400017540000000040512323721476031160 0ustar jenkinsjenkins00000000000000 default nova-2014.1/doc/api_samples/os-security-groups/server-security-groups-list-resp.xml0000664000175400017540000000040512323721476031707 0ustar jenkinsjenkins00000000000000 default nova-2014.1/doc/api_samples/os-security-groups/security-groups-list-get-resp.json0000664000175400017540000000031612323721476031332 0ustar jenkinsjenkins00000000000000{ "security_groups": [ { "description": "default", "id": 1, "name": "default", "rules": [], "tenant_id": "openstack" } ] }nova-2014.1/doc/api_samples/os-security-groups/security-group-remove-post-req.xml0000664000175400017540000000014712323721476031346 0ustar jenkinsjenkins00000000000000 test nova-2014.1/doc/api_samples/os-security-groups/security-group-add-post-req.json0000664000175400017540000000007412323721476030751 0ustar jenkinsjenkins00000000000000{ "addSecurityGroup" : { "name" : "test" } }nova-2014.1/doc/api_samples/images-list-get-resp.json0000664000175400017540000001265712323721476023623 0ustar jenkinsjenkins00000000000000{ "images": [ { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage7" }, { "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage6" }, { "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" } ] }nova-2014.1/doc/api_samples/server-get-resp.xml0000664000175400017540000000221512323721476022527 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/servers-details-resp.json0000664000175400017540000000347612323721476023743 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-09-07T16:56:37Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "16d193736a5cfdb60c697ca27ad071d6126fa13baeb670fc9d10645e", "id": "05184ba3-00ba-4fbc-b7a2-03b62b884931", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/05184ba3-00ba-4fbc-b7a2-03b62b884931", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/05184ba3-00ba-4fbc-b7a2-03b62b884931", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-09-07T16:56:37Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/os-extended-volumes/0000775000175400017540000000000012323722546022661 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-extended-volumes/server-post-resp.json0000664000175400017540000000075412323721476027023 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "MVk5HPrazHcG", "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "bookmark" } ] } } nova-2014.1/doc/api_samples/os-extended-volumes/server-post-req.json0000664000175400017540000000155312323721476026637 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/doc/api_samples/os-extended-volumes/server-get-resp.json0000664000175400017540000000334112323721476026610 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-02-07T19:35:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "570eff4776ab310707d11d181037337197086998a8b3305c90bf87c8", "id": "ecb5e433-fa75-4db2-af3d-a29ae8618edc", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/ecb5e433-fa75-4db2-af3d-a29ae8618edc", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/ecb5e433-fa75-4db2-af3d-a29ae8618edc", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-07T19:35:10Z", "user_id": "fake", "os-extended-volumes:volumes_attached": [ {"id": "volume_id1"}, {"id": "volume_id2"} ] } }nova-2014.1/doc/api_samples/os-extended-volumes/server-post-req.xml0000664000175400017540000000165012323721476026464 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-extended-volumes/server-get-resp.xml0000664000175400017540000000253312323721476026441 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-extended-volumes/server-post-resp.xml0000664000175400017540000000073012323721476026644 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-extended-volumes/servers-detail-resp.xml0000664000175400017540000000263012323721476027305 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-extended-volumes/servers-detail-resp.json0000664000175400017540000000371612323721476027464 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-05T07:34:10Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "585aa01f94eca692eff9f77ffe3eab866d8a819e97397e28c5c7df12", "id": "030758aa-5c41-41c6-8fb4-29d44eb96a85", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/030758aa-5c41-41c6-8fb4-29d44eb96a85", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/030758aa-5c41-41c6-8fb4-29d44eb96a85", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-05T07:34:10Z", "user_id": "fake", "os-extended-volumes:volumes_attached": [ {"id": "volume_id1"}, {"id": "volume_id2"} ] } ] }nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/0000775000175400017540000000000012323722546020777 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/server-post-resp.json0000664000175400017540000000075312323721476025140 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "m62Pu3gkXXV2", "id": "a98dd3ae-5feb-4b4b-afa4-25e830ad3305", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/a98dd3ae-5feb-4b4b-afa4-25e830ad3305", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/a98dd3ae-5feb-4b4b-afa4-25e830ad3305", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/server-post-req.json0000664000175400017540000000155212323721476024754 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/vifs-list-resp.json0000664000175400017540000000036012323721476024561 0ustar jenkinsjenkins00000000000000{ "virtual_interfaces": [ { "id": "cec8b9bb-5d22-4104-b3c8-4c35db3210a6", "mac_address": "fa:16:3e:3c:ce:6f", "OS-EXT-VIF-NET:net_id": "cec8b9bb-5d22-4104-b3c8-4c35db3210a7" } ] } nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/vifs-list-resp.xml0000664000175400017540000000066512323721476024420 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/server-post-req.xml0000664000175400017540000000164712323721476024610 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-EXT-VIF-NET/server-post-resp.xml0000664000175400017540000000072712323721476024770 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-action-changepassword.json0000664000175400017540000000007612323721476025440 0ustar jenkinsjenkins00000000000000{ "changePassword" : { "adminPass" : "foo" } }nova-2014.1/doc/api_samples/images-list-resp.json0000664000175400017540000001265712323721476023046 0ustar jenkinsjenkins00000000000000{ "images": [ { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage7" }, { "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage6" }, { "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" } ] }nova-2014.1/doc/api_samples/images-list-get-resp.xml0000664000175400017540000000705112323721476023442 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-multiple-create/0000775000175400017540000000000012323722546022465 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.xml0000664000175400017540000000072712323721476031633 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.json0000664000175400017540000000075312323721476032003 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "wfksH3GTTseP", "id": "440cf918-3ee0-4143-b289-f63e1d2000e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/440cf918-3ee0-4143-b289-f63e1d2000e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/440cf918-3ee0-4143-b289-f63e1d2000e6", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-no-resv-post-req.json0000664000175400017540000000163612323721476031622 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "min_count": "2", "max_count": "3", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-post-resp.xml0000664000175400017540000000025012323721476030233 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-post-req.json0000664000175400017540000000170712323721476030232 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "return_reservation_id": "True", "min_count": "2", "max_count": "3", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-post-resp.json0000664000175400017540000000004612323721476030407 0ustar jenkinsjenkins00000000000000{ "reservation_id": "r-3fhpjulh" }nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-no-resv-post-req.xml0000664000175400017540000000175312323721476031451 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-multiple-create/multiple-create-post-req.xml0000664000175400017540000000202012323721476030046 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-EXT-STS/0000775000175400017540000000000012323722546020400 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-STS/server-post-resp.json0000664000175400017540000000075412323721476024542 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "MVk5HPrazHcG", "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "bookmark" } ] } } nova-2014.1/doc/api_samples/OS-EXT-STS/server-post-req.json0000664000175400017540000000155312323721476024356 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/doc/api_samples/OS-EXT-STS/server-get-resp.json0000664000175400017540000000332612323721476024332 0ustar jenkinsjenkins00000000000000{ "server": { "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-02-07T19:35:09Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "570eff4776ab310707d11d181037337197086998a8b3305c90bf87c8", "id": "ecb5e433-fa75-4db2-af3d-a29ae8618edc", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/ecb5e433-fa75-4db2-af3d-a29ae8618edc", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/ecb5e433-fa75-4db2-af3d-a29ae8618edc", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-07T19:35:10Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-EXT-STS/server-post-req.xml0000664000175400017540000000165012323721476024203 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-EXT-STS/server-get-resp.xml0000664000175400017540000000246412323721476024163 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-STS/server-post-resp.xml0000664000175400017540000000073012323721476024363 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-STS/servers-detail-resp.xml0000664000175400017540000000255512323721476025032 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-STS/servers-detail-resp.json0000664000175400017540000000367712323721476025211 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-05T07:34:10Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "585aa01f94eca692eff9f77ffe3eab866d8a819e97397e28c5c7df12", "id": "030758aa-5c41-41c6-8fb4-29d44eb96a85", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/030758aa-5c41-41c6-8fb4-29d44eb96a85", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/030758aa-5c41-41c6-8fb4-29d44eb96a85", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-05T07:34:10Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/os-floating-ips-bulk/0000775000175400017540000000000012323722546022720 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml0000664000175400017540000000115412323721476030713 0ustar jenkinsjenkins00000000000000 eth0 None None nova
10.10.10.1
eth0 None None nova
10.10.10.2
eth0 None None nova
10.10.10.3
nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json0000664000175400017540000000111512323721476031061 0ustar jenkinsjenkins00000000000000{ "floating_ip_info": [ { "address": "10.10.10.1", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null }, { "address": "10.10.10.2", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null }, { "address": "10.10.10.3", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null } ] }nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml0000664000175400017540000000015212323721476031177 0ustar jenkinsjenkins00000000000000 192.168.1.0/24nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json0000664000175400017540000000004412323721476031166 0ustar jenkinsjenkins00000000000000{ "ip_range": "192.168.1.0/24" }nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml0000664000175400017540000000026512323721476031205 0ustar jenkinsjenkins00000000000000 eth0 192.168.1.0/24 nova nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json0000664000175400017540000000020512323721476031350 0ustar jenkinsjenkins00000000000000{ "floating_ips_bulk_create": { "interface": "eth0", "ip_range": "192.168.1.0/24", "pool": "nova" } }nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json0000664000175400017540000000006412323721476031352 0ustar jenkinsjenkins00000000000000{ "floating_ips_bulk_delete": "192.168.1.0/24" }nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml0000664000175400017540000000040212323721476032271 0ustar jenkinsjenkins00000000000000 eth0 None None nova
10.10.10.3
nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml0000664000175400017540000000025712323721476031024 0ustar jenkinsjenkins00000000000000 192.168.1.0/24 nova eth0 nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml0000664000175400017540000000011212323721476031011 0ustar jenkinsjenkins00000000000000 192.168.1.0/24nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json0000664000175400017540000000016712323721476031175 0ustar jenkinsjenkins00000000000000{ "floating_ips_bulk_create" : { "ip_range": "192.168.1.0/24", "pool": "nova", "interface": "eth0" } }nova-2014.1/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json0000664000175400017540000000033312323721476032445 0ustar jenkinsjenkins00000000000000{ "floating_ip_info": [ { "address": "10.10.10.3", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null } ] }nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/0000775000175400017540000000000012323722546024610 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.json0000664000175400017540000000075312323721476030751 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "8SV3AwzrE9Yn", "id": "5b39f651-2c68-48a1-ad26-dab135c4f543", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5b39f651-2c68-48a1-ad26-dab135c4f543", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5b39f651-2c68-48a1-ad26-dab135c4f543", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.xml0000664000175400017540000000173412323721476031545 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-post-req.json0000664000175400017540000000155212323721476030565 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-post-req.xml0000664000175400017540000000164712323721476030421 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json0000664000175400017540000000320312323721476032656 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "1.2.3.4", "accessIPv6": "fe80::100", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "adminPass": "seekr3t", "created": "2013-12-30T12:28:14Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "ee8ea077f8548ce25c59c2d5020d0f82810c815c210fd68194a5c0f8", "id": "810e78d5-47fe-48bf-9559-bfe5dc918685", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/810e78d5-47fe-48bf-9559-bfe5dc918685", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/810e78d5-47fe-48bf-9559-bfe5dc918685", "rel": "bookmark" } ], "metadata": { "meta var": "meta val" }, "name": "foobar", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-12-30T12:28:15Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.xml0000664000175400017540000000072712323721476030601 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json0000664000175400017540000000165612323721476031721 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "imageRef" : "http://openstack.example.com/v2/32278/images/70a599e0-31e7-49b7-b260-868f441e862b", "name" : "new-server-test", "adminPass" : "seekr3t", "accessIPv4" : "1.2.3.4", "accessIPv6" : "fe80::100", "metadata" : { "meta var" : "meta val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ], "preserve_ephemeral": true } }nova-2014.1/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.xml0000664000175400017540000000225012323721476032506 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-agents/0000775000175400017540000000000012323722546020652 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-agents/agent-post-resp.xml0000664000175400017540000000042012323721476024421 0ustar jenkinsjenkins00000000000000 xxxxxxxxxxxx hypervisor add6bb58e139be103324d04d82d8f545 8.0 x86 os 1 nova-2014.1/doc/api_samples/os-agents/agent-update-put-resp.xml0000664000175400017540000000027712323721476025536 0ustar jenkinsjenkins00000000000000 xxx://xxxx/xxx/xxx 7.0 1 add6bb58e139be103324d04d82d8f545 nova-2014.1/doc/api_samples/os-agents/agents-get-resp.xml0000664000175400017540000000032012323721476024375 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-agents/agent-update-put-req.xml0000664000175400017540000000024412323721476025346 0ustar jenkinsjenkins00000000000000 7.0 xxx://xxxx/xxx/xxx add6bb58e139be103324d04d82d8f545 nova-2014.1/doc/api_samples/os-agents/agent-update-put-req.json0000664000175400017540000000021412323721476025514 0ustar jenkinsjenkins00000000000000{ "para": { "url": "xxx://xxxx/xxx/xxx", "md5hash": "add6bb58e139be103324d04d82d8f545", "version": "7.0" } }nova-2014.1/doc/api_samples/os-agents/agent-update-put-resp.json0000664000175400017540000000024612323721476025703 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "1", "md5hash": "add6bb58e139be103324d04d82d8f545", "url": "xxx://xxxx/xxx/xxx", "version": "7.0" } }nova-2014.1/doc/api_samples/os-agents/agent-post-req.json0000664000175400017540000000033612323721476024416 0ustar jenkinsjenkins00000000000000{ "agent": { "hypervisor": "hypervisor", "os": "os", "architecture": "x86", "version": "8.0", "md5hash": "add6bb58e139be103324d04d82d8f545", "url": "xxxxxxxxxxxx" } }nova-2014.1/doc/api_samples/os-agents/agent-post-resp.json0000664000175400017540000000036712323721476024604 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "1", "architecture": "x86", "hypervisor": "hypervisor", "md5hash": "add6bb58e139be103324d04d82d8f545", "os": "os", "url": "xxxxxxxxxxxx", "version": "8.0" } }nova-2014.1/doc/api_samples/os-agents/agent-post-req.xml0000664000175400017540000000036712323721476024251 0ustar jenkinsjenkins00000000000000 hypervisor os x86 8.0 add6bb58e139be103324d04d82d8f545 xxxxxxxxxxxx nova-2014.1/doc/api_samples/os-agents/agents-get-resp.json0000664000175400017540000000045012323721476024552 0ustar jenkinsjenkins00000000000000{ "agents": [ { "agent_id": "1", "architecture": "x86", "hypervisor": "hypervisor", "md5hash": "add6bb58e139be103324d04d82d8f545", "os": "os", "url": "xxxxxxxxxxxx", "version": "8.0" } ] }nova-2014.1/doc/api_samples/server-metadata-req.json0000664000175400017540000000005412323721476023516 0ustar jenkinsjenkins00000000000000{ "meta" : { "foo" : "Bar Value" } }nova-2014.1/doc/api_samples/OS-EXT-IMG-SIZE/0000775000175400017540000000000012323722546021113 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-IMG-SIZE/image-get-resp.xml0000664000175400017540000000202312323721476024441 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/doc/api_samples/OS-EXT-IMG-SIZE/image-get-resp.json0000664000175400017540000000215412323721476024617 0ustar jenkinsjenkins00000000000000{ "image": { "OS-EXT-IMG-SIZE:size": "74185822", "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } }nova-2014.1/doc/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.xml0000664000175400017540000001331512323721476026255 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/doc/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.json0000664000175400017540000002035312323721476026426 0ustar jenkinsjenkins00000000000000{ "images": [ { "OS-EXT-IMG-SIZE:size": "74185822", "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-EXT-IMG-SIZE:size": "25165824", "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-EXT-IMG-SIZE:size": "58145823", "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-EXT-IMG-SIZE:size": "49163826", "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-EXT-IMG-SIZE:size": "26360814", "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-EXT-IMG-SIZE:size": "84035174", "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-EXT-IMG-SIZE:size": "83594576", "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] }nova-2014.1/doc/api_samples/server-metadata-all-req.json0000664000175400017540000000006012323721476024261 0ustar jenkinsjenkins00000000000000{ "metadata" : { "foo" : "Foo Value" } }nova-2014.1/doc/api_samples/server-action-reboot.json0000664000175400017540000000006312323721476023716 0ustar jenkinsjenkins00000000000000{ "reboot" : { "type" : "SOFT" } }nova-2014.1/doc/api_samples/os-used-limits-for-admin/0000775000175400017540000000000012323722546023502 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json0000664000175400017540000000551012323721476032025 0ustar jenkinsjenkins00000000000000{ "limits": { "absolute": { "maxImageMeta": 128, "maxPersonality": 5, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxSecurityGroups": 10, "maxServerMeta": 128, "maxTotalCores": 20, "maxTotalFloatingIps": 10, "maxTotalInstances": 10, "maxTotalKeypairs": 100, "maxTotalRAMSize": 51200, "totalCoresUsed": 0, "totalInstancesUsed": 0, "totalRAMUsed": 0, "totalSecurityGroupsUsed": 0, "totalFloatingIpsUsed": 0 }, "rate": [ { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" }, { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "PUT" }, { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "DELETE" } ], "regex": ".*", "uri": "*" }, { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" } ], "regex": "^/servers", "uri": "*/servers" }, { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "GET" } ], "regex": ".*changes-since.*", "uri": "*changes-since*" }, { "limit": [ { "next-available": "2012-11-27T17:24:52Z", "remaining": 12, "unit": "MINUTE", "value": 12, "verb": "GET" } ], "regex": "^/os-fping", "uri": "*/os-fping" } ] } } nova-2014.1/doc/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml0000664000175400017540000000360412323721476031656 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-action-revertresize.json0000664000175400017540000000003512323721476025154 0ustar jenkinsjenkins00000000000000{ "revertResize" : null }nova-2014.1/doc/api_samples/server-action-rebuild-resp.json0000664000175400017540000000320312323721476025020 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "1.2.3.4", "accessIPv6": "fe80::100", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "adminPass": "seekr3t", "created": "2012-09-12T17:20:36Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "1e3da81662354c25560b7e5ea6d8123031f67168b6992f20bb84df69", "id": "075e40fe-9f03-4652-ba8e-5f8e2547899a", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/075e40fe-9f03-4652-ba8e-5f8e2547899a", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/075e40fe-9f03-4652-ba8e-5f8e2547899a", "rel": "bookmark" } ], "metadata": { "meta var": "meta val" }, "name": "foobar", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-09-12T17:20:37Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-extended-floating-ips/0000775000175400017540000000000012323722546023563 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.json0000664000175400017540000000054612323721476031000 0ustar jenkinsjenkins00000000000000{ "floating_ips": [ { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" }, { "fixed_ip": null, "id": 2, "instance_id": null, "ip": "10.10.10.2", "pool": "nova" } ] }nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.xml0000664000175400017540000000007012323721476030725 0ustar jenkinsjenkins00000000000000 novanova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml0000664000175400017540000000006612323721476031760 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml0000664000175400017540000000017312323721476031113 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.json0000664000175400017540000000002612323721476031077 0ustar jenkinsjenkins00000000000000{ "pool": "nova" }nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml0000664000175400017540000000000012323721476032222 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.json0000664000175400017540000000023112323721476031257 0ustar jenkinsjenkins00000000000000{ "floating_ip": { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" } }nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml0000664000175400017540000000036312323721476030624 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json0000664000175400017540000000003212323721476032122 0ustar jenkinsjenkins00000000000000{ "floating_ips": [] }nova-2014.1/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json0000664000175400017540000000000012323721476032373 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-flavor-swap/0000775000175400017540000000000012323722546021632 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-post-req.xml0000664000175400017540000000043412323721476026367 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-post-resp.json0000664000175400017540000000072112323721476026721 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "100", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/100", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/100", "rel": "bookmark" } ], "name": "flavortest", "ram": 1024, "swap": 5, "vcpus": 2 } }nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-list-resp.json0000664000175400017540000000507112323721476026712 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": "", "vcpus": 1 }, { "disk": 20, "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "swap": "", "vcpus": 1 }, { "disk": 40, "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "swap": "", "vcpus": 2 }, { "disk": 80, "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "swap": "", "vcpus": 4 }, { "disk": 160, "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "swap": "", "vcpus": 8 } ] } nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-get-resp.json0000664000175400017540000000071012323721476026511 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": "", "vcpus": 1 } } nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-post-resp.xml0000664000175400017540000000060712323721476026553 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-post-req.json0000664000175400017540000000023312323721476026535 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "flavortest", "ram": 1024, "vcpus": 2, "disk": 10, "id": "100", "swap": 5 } }nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-get-resp.xml0000664000175400017540000000057412323721476026350 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-swap/flavor-swap-list-resp.xml0000664000175400017540000000265512323721476026546 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/0000775000175400017540000000000012323722546021151 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/server-post-resp.json0000664000175400017540000000075312323721476025312 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "u2mLZBKHKRou", "id": "0b57a8d2-b1d0-43d8-b81b-9ef446281bfa", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/0b57a8d2-b1d0-43d8-b81b-9ef446281bfa", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/0b57a8d2-b1d0-43d8-b81b-9ef446281bfa", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/server-post-req.json0000664000175400017540000000155212323721476025126 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/server-get-resp.json0000664000175400017540000000343712323721476025106 0ustar jenkinsjenkins00000000000000{ "server": { "OS-EXT-SRV-ATTR:host": "1169a68456af48238da47b1d5957a714", "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-11-15T19:27:04Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "2dfce43c41dd288cfac3a5b4251742b3bd2b37c12eb5927e757d9b4c", "id": "1fc2392e-5727-46af-bc21-317a4a3eb04c", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/1fc2392e-5727-46af-bc21-317a4a3eb04c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/1fc2392e-5727-46af-bc21-317a4a3eb04c", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-11-15T19:27:04Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/server-post-req.xml0000664000175400017540000000164712323721476024762 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/server-get-resp.xml0000664000175400017540000000257612323721476024740 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/server-post-resp.xml0000664000175400017540000000072712323721476025142 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.xml0000664000175400017540000000266712323721476025607 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.json0000664000175400017540000000401012323721476025740 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-EXT-SRV-ATTR:host": "dd99797793774612b081a8be19bf721a", "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-11-15T19:27:05Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "146245c049213a54b8c2352751518fcb4c2befd1b942b45a5a705d35", "id": "e0c3563a-84ef-4d0b-bb80-23392cd23882", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/e0c3563a-84ef-4d0b-bb80-23392cd23882", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/e0c3563a-84ef-4d0b-bb80-23392cd23882", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-11-15T19:27:05Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/server-post-resp.xml0000664000175400017540000000072712323721476022743 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/0000775000175400017540000000000012323722546021766 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-list-resp.xml0000664000175400017540000000017212323721476027026 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-detail-resp.json0000664000175400017540000000127612323721476027474 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "cpu_info": "?", "current_workload": 0, "disk_available_least": null, "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "1e0d7892083548cfb347e782d3b20342", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } ] }nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-servers-resp.xml0000664000175400017540000000023012323721476027537 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-search-resp.json0000664000175400017540000000016612323721476027474 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-statistics-resp.json0000664000175400017540000000055712323721476030425 0ustar jenkinsjenkins00000000000000{ "hypervisor_statistics": { "count": 1, "current_workload": 0, "disk_available_least": 0, "free_disk_gb": 1028, "free_ram_mb": 7680, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "vcpus": 1, "vcpus_used": 0 } }nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-detail-resp.xml0000664000175400017540000000071312323721476027316 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-uptime-resp.json0000664000175400017540000000026512323721476027532 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "hypervisor_hostname": "fake-mini", "id": 1, "uptime": " 08:32:11 up 93 days, 18:25, 12 users, load average: 0.20, 0.12, 0.14" } }nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-uptime-resp.xml0000664000175400017540000000025312323721476027356 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-statistics-resp.xml0000664000175400017540000000041712323721476030247 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-show-resp.xml0000664000175400017540000000064612323721476027041 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-search-resp.xml0000664000175400017540000000017212323721476027320 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-list-resp.json0000664000175400017540000000016612323721476027202 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-servers-resp.json0000664000175400017540000000016612323721476027720 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/doc/api_samples/os-hypervisors/hypervisors-show-resp.json0000664000175400017540000000112712323721476027205 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "5641188ab2964f88a21042b493585ff8", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/doc/api_samples/os-simple-tenant-usage/0000775000175400017540000000000012323722546023253 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.xml0000664000175400017540000000156212323721476032224 0ustar jenkinsjenkins00000000000000 openstack 1.0 1.0 512.0 1.0 2012-10-08 20:10:51.902640 2012-10-08 21:10:51.902640 e4521f3b-d9ad-4454-be8a-e2732f0630ef new-server-test 1.0 512 1 1 openstack m1.tiny 2012-10-08 20:10:51.854331 None active 3600 nova-2014.1/doc/api_samples/os-simple-tenant-usage/server-post-resp.json0000664000175400017540000000075312323721476027414 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "tpKL9n5BHKFv", "id": "3edb83e6-2c90-41c1-bf80-0b61472b4c19", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3edb83e6-2c90-41c1-bf80-0b61472b4c19", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3edb83e6-2c90-41c1-bf80-0b61472b4c19", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-simple-tenant-usage/server-post-req.json0000664000175400017540000000155212323721476027230 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.json0000664000175400017540000000053212323721476030606 0ustar jenkinsjenkins00000000000000{ "tenant_usages": [ { "start": "2012-10-08T21:10:44.587336", "stop": "2012-10-08T22:10:44.587336", "tenant_id": "openstack", "total_hours": 1.0, "total_local_gb_usage": 1.0, "total_memory_mb_usage": 512.0, "total_vcpus_usage": 1.0 } ] } nova-2014.1/doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.xml0000664000175400017540000000067712323721476030447 0ustar jenkinsjenkins00000000000000 openstack 1.0 1.0 512.0 1.0 2012-10-08 21:10:51.902640 2012-10-08 22:10:51.902640 nova-2014.1/doc/api_samples/os-simple-tenant-usage/server-post-req.xml0000664000175400017540000000164712323721476027064 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.json0000664000175400017540000000150712323721476032374 0ustar jenkinsjenkins00000000000000{ "tenant_usage": { "server_usages": [ { "ended_at": null, "flavor": "m1.tiny", "hours": 1.0, "instance_id": "1f1deceb-17b5-4c04-84c7-e0d4499c8fe0", "local_gb": 1, "memory_mb": 512, "name": "new-server-test", "started_at": "2012-10-08T20:10:44.541277", "state": "active", "tenant_id": "openstack", "uptime": 3600, "vcpus": 1 } ], "start": "2012-10-08T20:10:44.587336", "stop": "2012-10-08T21:10:44.587336", "tenant_id": "openstack", "total_hours": 1.0, "total_local_gb_usage": 1.0, "total_memory_mb_usage": 512.0, "total_vcpus_usage": 1.0 } } nova-2014.1/doc/api_samples/os-simple-tenant-usage/server-post-resp.xml0000664000175400017540000000072712323721476027244 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-instance-actions/0000775000175400017540000000000012323722546022633 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-instance-actions/instance-actions-list-resp.json0000664000175400017540000000130312323721476030706 0ustar jenkinsjenkins00000000000000{ "instanceActions": [ { "action": "resize", "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "message": "", "project_id": "842", "request_id": "req-25517360-b757-47d3-be45-0e8d2a01b36a", "start_time": "2012-12-05 01:00:00.000000", "user_id": "789" }, { "action": "reboot", "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "message": "", "project_id": "147", "request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8", "start_time": "2012-12-05 00:00:00.000000", "user_id": "789" } ] }nova-2014.1/doc/api_samples/os-instance-actions/instance-action-get-resp.xml0000664000175400017540000000106512323721476030163 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-instance-actions/instance-action-get-resp.json0000664000175400017540000000154512323721476030337 0ustar jenkinsjenkins00000000000000{ "instanceAction": { "action": "reboot", "events": [ { "event": "schedule", "finish_time": "2012-12-05 01:02:00.000000", "result": "Success", "start_time": "2012-12-05 01:00:02.000000", "traceback": "" }, { "event": "compute_create", "finish_time": "2012-12-05 01:04:00.000000", "result": "Success", "start_time": "2012-12-05 01:03:00.000000", "traceback": "" } ], "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "message": "", "project_id": "147", "request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8", "start_time": "2012-12-05 00:00:00.000000", "user_id": "789" } }nova-2014.1/doc/api_samples/os-instance-actions/instance-actions-list-resp.xml0000664000175400017540000000101512323721476030535 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/servers-list-resp.json0000664000175400017540000000105612323721476023261 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "616fb98f-46ca-475e-917e-2563e5a8cd19", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19", "rel": "bookmark" } ], "name": "new-server-test" } ] }nova-2014.1/doc/api_samples/image-meta-key-put-resp.xml0000664000175400017540000000020312323721476024041 0ustar jenkinsjenkins00000000000000 Falsenova-2014.1/doc/api_samples/server-action-rebuild.json0000664000175400017540000000160112323721476024051 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "imageRef" : "http://openstack.example.com/v2/32278/images/70a599e0-31e7-49b7-b260-868f441e862b", "name" : "foobar", "adminPass" : "seekr3t", "accessIPv4" : "1.2.3.4", "accessIPv6" : "fe80::100", "metadata" : { "meta var" : "meta val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/0000775000175400017540000000000012323722546021065 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.json0000664000175400017540000000034012323721476027232 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "flavortest", "ram": 1024, "vcpus": 2, "disk": 10, "id": "666", "rxtx_factor": 2.0, "OS-FLV-EXT-DATA:ephemeral": 30, "swap": 5 } }nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.json0000664000175400017540000000523512323721476027412 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 20, "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "vcpus": 1 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 40, "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "vcpus": 2 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 80, "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "vcpus": 4 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 160, "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "vcpus": 8 } ] } nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.xml0000664000175400017540000000075312323721476027045 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.json0000664000175400017540000000074712323721476027427 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-EXT-DATA:ephemeral": 30, "disk": 10, "id": "666", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/666", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/666", "rel": "bookmark" } ], "name": "flavortest", "ram": 1024, "vcpus": 2 } }nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.xml0000664000175400017540000000316412323721476027240 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.xml0000664000175400017540000000052512323721476027066 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.xml0000664000175400017540000000076612323721476027257 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.json0000664000175400017540000000073412323721476027215 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 } } nova-2014.1/doc/api_samples/os-deferred-delete/0000775000175400017540000000000012323722546022411 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-deferred-delete/server-post-resp.json0000664000175400017540000000075312323721476026552 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "jDje6SdBHGfQ", "id": "e08e6d34-fcc1-480e-b11e-24a675b479f8", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/e08e6d34-fcc1-480e-b11e-24a675b479f8", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/e08e6d34-fcc1-480e-b11e-24a675b479f8", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-deferred-delete/server-post-req.json0000664000175400017540000000155212323721476026366 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-deferred-delete/restore-post-req.xml0000664000175400017540000000006212323721476026365 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-deferred-delete/server-post-req.xml0000664000175400017540000000164712323721476026222 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-deferred-delete/force-delete-post-req.json0000664000175400017540000000003312323721476027407 0ustar jenkinsjenkins00000000000000{ "forceDelete": null }nova-2014.1/doc/api_samples/os-deferred-delete/server-post-resp.xml0000664000175400017540000000072712323721476026402 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-deferred-delete/restore-post-req.json0000664000175400017540000000002712323721476026537 0ustar jenkinsjenkins00000000000000{ "restore": null }nova-2014.1/doc/api_samples/os-deferred-delete/force-delete-post-req.xml0000664000175400017540000000006612323721476027244 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/flavor-get-resp.xml0000664000175400017540000000056412323721476022517 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-rxtx/0000775000175400017540000000000012323722546021665 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.xml0000664000175400017540000000062012323721476026634 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.xml0000664000175400017540000000044512323721476026457 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json0000664000175400017540000000024412323721476026625 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "flavortest", "ram": 1024, "vcpus": 2, "disk": 10, "id": "100", "rxtx_factor": 2.0 } }nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json0000664000175400017540000000073212323721476027011 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "100", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/100", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/100", "rel": "bookmark" } ], "name": "flavortest", "ram": 1024, "rxtx_factor": 2.0, "vcpus": 2 } }nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json0000664000175400017540000000072012323721476026600 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "rxtx_factor": 1.0, "vcpus": 1 } } nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.xml0000664000175400017540000000273712323721476026635 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.xml0000664000175400017540000000060612323721476026432 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json0000664000175400017540000000514112323721476026776 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "rxtx_factor": 1.0, "vcpus": 1 }, { "disk": 20, "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "rxtx_factor": 1.0, "vcpus": 1 }, { "disk": 40, "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "rxtx_factor": 1.0, "vcpus": 2 }, { "disk": 80, "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "rxtx_factor": 1.0, "vcpus": 4 }, { "disk": 160, "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "rxtx_factor": 1.0, "vcpus": 8 } ] } nova-2014.1/doc/api_samples/os-hide-server-addresses/0000775000175400017540000000000012323722546023561 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-hide-server-addresses/server-post-resp.json0000664000175400017540000000075312323721476027722 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "c47PrLGGmARP", "id": "1130fd6e-4d52-4e2a-848f-89b28fa03a7a", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/1130fd6e-4d52-4e2a-848f-89b28fa03a7a", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/1130fd6e-4d52-4e2a-848f-89b28fa03a7a", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-hide-server-addresses/server-post-req.json0000664000175400017540000000000012323721476027521 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-hide-server-addresses/server-get-resp.json0000664000175400017540000000314112323721476027506 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-19T20:32:40Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "d2697421d9869915ee376575508fdba76432f9b3ef451e7a1f86c62e", "id": "2e9157dc-deea-4ee7-820a-640ecba32b5a", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/2e9157dc-deea-4ee7-820a-640ecba32b5a", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/2e9157dc-deea-4ee7-820a-640ecba32b5a", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-19T20:32:42Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-hide-server-addresses/server-post-req.xml0000664000175400017540000000000012323721476027350 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-hide-server-addresses/server-get-resp.xml0000664000175400017540000000221512323721476027336 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-hide-server-addresses/servers-details-resp.json0000664000175400017540000000347612323721476030552 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-19T20:32:37Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "11c1ae0bb109cd0467c62e96917cfa2956a9f3c1dce9a6565d80f5eb", "id": "625a1d37-3515-49ad-91e2-21075a1b2ccf", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/625a1d37-3515-49ad-91e2-21075a1b2ccf", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/625a1d37-3515-49ad-91e2-21075a1b2ccf", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-19T20:32:39Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/os-hide-server-addresses/server-post-resp.xml0000664000175400017540000000072712323721476027552 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hide-server-addresses/servers-list-resp.json0000664000175400017540000000105612323721476030070 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "120eed64-e7db-409c-b565-38ce2bc90021", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/120eed64-e7db-409c-b565-38ce2bc90021", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/120eed64-e7db-409c-b565-38ce2bc90021", "rel": "bookmark" } ], "name": "new-server-test" } ] }nova-2014.1/doc/api_samples/os-hide-server-addresses/servers-details-resp.xml0000664000175400017540000000230612323721476030370 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-hide-server-addresses/servers-list-resp.xml0000664000175400017540000000074412323721476027722 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-keypairs/0000775000175400017540000000000012323722546021220 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-keypairs/keypairs-post-req.json0000664000175400017540000000013112323721476025506 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "keypair-7d7c3650-dabe-4eb0-b904-5c464453c043" } }nova-2014.1/doc/api_samples/os-keypairs/keypairs-post-resp.json0000664000175400017540000000254112323721476025677 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8", "name": "keypair-7d7c3650-dabe-4eb0-b904-5c464453c043", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7\nDUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ\n9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5QIDAQAB\nAoGAE5XO1mDhORy9COvsg+kYPUhB1GsCYxh+v88wG7HeFDKBY6KUc/Kxo6yoGn5T\nTjRjekyi2KoDZHz4VlIzyZPwFS4I1bf3oCunVoAKzgLdmnTtvRNMC5jFOGc2vUgP\n9bSyRj3S1R4ClVk2g0IDeagko/jc8zzLEYuIK+fbkds79YECQQDt3vcevgegnkga\ntF4NsDmmBPRkcSHCqrANP/7vFcBQN3czxeYYWX3DK07alu6GhH1Y4sHbdm616uU0\nll7xbDzxAkEAzAtN2IyftNygV2EGiaGgqLyo/tD9+Vui2qCQplqe4jvWh/5Sparl\nOjmKo+uAW+hLrLVMnHzRWxbWU8hirH5FNQJATO+ZxCK4etXXAnQmG41NCAqANWB2\nB+2HJbH2NcQ2QHvAHUm741JGn/KI/aBlo7KEjFRDWUVUB5ji64BbUwCsMQJBAIku\nLGcjnBf/oLk+XSPZC2eGd2Ph5G5qYmH0Q2vkTx+wtTn3DV+eNsDfgMtWAJVJ5t61\ngU1QSXyhLPVlKpnnxuUCQC+xvvWjWtsLaFtAsZywJiqLxQzHts8XLGZptYJ5tLWV\nrtmYtBcJCN48RrgQHry/xWYeA4K/AFQpXfNPgprQ96Q=\n-----END RSA PRIVATE KEY-----\n", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-keypairs/keypairs-import-post-req.json0000664000175400017540000000053112323721476027022 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova" } }nova-2014.1/doc/api_samples/os-keypairs/keypairs-import-post-resp.xml0000664000175400017540000000074012323721476027035 0ustar jenkinsjenkins00000000000000 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova fake keypair-96bbe50e-05e1-4d59-9115-4779a3ebcc2e 1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c nova-2014.1/doc/api_samples/os-keypairs/keypairs-get-resp.xml0000664000175400017540000000075012323721510025305 0ustar jenkinsjenkins00000000000000 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCWdUoGD7qz9kjbLoY2L0S5CdhUS8RvQ1g62OTgvmWE/bEKDLwaTIFEEpN/0huGk/nxvVZ6VOhv1eSKC3o9dZ2NDk0C4sBsrvJ41uWd1hbq72sDGzVEkJ+925CraioSAbMpRK5Ea7UPWbR8laqrY1TsKtcuxiGJ936bOPIXW12h6Q== Generated by Nova keypair-a4c7d228-218b-4c4c-9d99-62e7878ebb1b 62:32:23:67:56:ee:6f:51:4c:03:ce:b8:00:f9:41:ff nova-2014.1/doc/api_samples/os-keypairs/keypairs-get-resp.json0000664000175400017540000000077112323721510025461 0ustar jenkinsjenkins00000000000000{ "keypairs": [ { "keypair": { "fingerprint": "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a", "name": "keypair-601a2305-4f25-41ed-89c6-2a966fc8027a", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n" } } ] }nova-2014.1/doc/api_samples/os-keypairs/keypairs-import-post-req.xml0000664000175400017540000000052612323721476026655 0ustar jenkinsjenkins00000000000000 keypair-96bbe50e-05e1-4d59-9115-4779a3ebcc2e ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova nova-2014.1/doc/api_samples/os-keypairs/keypairs-import-post-resp.json0000664000175400017540000000067612323721476027216 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c", "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-keypairs/keypairs-post-req.xml0000664000175400017540000000012212323721476025335 0ustar jenkinsjenkins00000000000000 keypair-b03122a0-102b-445b-a128-dba267c7cd2a nova-2014.1/doc/api_samples/os-keypairs/keypairs-post-resp.xml0000664000175400017540000000257212323721476025532 0ustar jenkinsjenkins00000000000000 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNa8e/Gfe4572GwEDXlLsCqxsMcuUiF8Fr9RSeW30EuWg8Me5HM/rzqaShmzdHZbN5dvGH15H1yMXTUg8cxcLaOU04IQi/g+BHkGzbxV3gCdODWqjF+5928Ljg6x87e5lxxB6WAoyoGuzghaJXikOihRZSzdityb3DlYuYRfaRMw== Generated by Nova -----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDNa8e/Gfe4572GwEDXlLsCqxsMcuUiF8Fr9RSeW30EuWg8Me5H M/rzqaShmzdHZbN5dvGH15H1yMXTUg8cxcLaOU04IQi/g+BHkGzbxV3gCdODWqjF +5928Ljg6x87e5lxxB6WAoyoGuzghaJXikOihRZSzdityb3DlYuYRfaRMwIDAQAB AoGBAL67q4zqHJRIQDcE/W/t/jI9E3FcoRoluod12P4sbolbacgyiE7+ma1yv5T6 HLqjWKCYay05YKI5GE3dbIDHsuHnnhd1S5tE2SNY85as8zC0QT6N8eFexh5/0Px4 dVl3tXKj+Oaovb0tCKoiPVUHIZTsihNPwYqFS2kMuHnUwthxAkEA99Bw2FIWbgq9 gj37qNGP5Vm2pmK9xU0aSyG2NJKH77CrERgmqrBT41a97BdsJbzuIaAwi4RJaDqm AsTFBw312wJBANQ02vVin5NYD4BAfMyCsoNI7pQBCkq6UeK3VAC9ozCBE5BIDqat VTx2ijbdlfwGqQVM6g773xuuNebgZJrbrYkCQQDV4YXzfe2z7fsf1MVGMBBkn2h/ 9ErbZa9i1ua+OxWt7qnGaDS/Ls5IMQ5cHN8PNx/Dz9D2KSd+GNg9HXz7mLXvAkEA 0GvZYomrEZy8HMs5x+PWUPug19ztrtew9Wv6JYAcd9dOz7b2LN6xiOEkfx7D4PTp rTsN6AmZ6CYC6vAZ379DgQJAPMZjO9Z9KZ2t2VFu0YgK9LbQ4upbhew7YUmWA5dV djCVjJ/0AZgQofvvUDe9FZHtSLt6IN5+jsLAi35Q3iQp9g== -----END RSA PRIVATE KEY----- fake keypair-b03122a0-102b-445b-a128-dba267c7cd2a 7f:97:1c:83:27:a3:6b:c5:a6:a2:37:90:4c:be:73:86 nova-2014.1/doc/api_samples/server-metadata-req.xml0000664000175400017540000000017312323721476023347 0ustar jenkinsjenkins00000000000000 Bar Valuenova-2014.1/doc/api_samples/server-action-changepassword.xml0000664000175400017540000000020312323721476025257 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-DISABLED/0000775000175400017540000000000012323722546021065 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.xml0000664000175400017540000000075412323721476025611 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.xml0000664000175400017540000000320112323721476026061 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.json0000664000175400017540000000525412323721476026244 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "OS-FLV-DISABLED:disabled": false, "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 }, { "OS-FLV-DISABLED:disabled": false, "disk": 20, "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "vcpus": 1 }, { "OS-FLV-DISABLED:disabled": false, "disk": 40, "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "vcpus": 2 }, { "OS-FLV-DISABLED:disabled": false, "disk": 80, "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "vcpus": 4 }, { "OS-FLV-DISABLED:disabled": false, "disk": 160, "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "vcpus": 8 } ] } nova-2014.1/doc/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.json0000664000175400017540000000073712323721476025763 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-DISABLED:disabled": false, "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 } } nova-2014.1/doc/api_samples/server-action-rebuild-resp.xml0000664000175400017540000000225012323721476024650 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/image-metadata-resp.json0000664000175400017540000000013512323721476023454 0ustar jenkinsjenkins00000000000000{ "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" } }nova-2014.1/doc/api_samples/os-extended-hypervisors/0000775000175400017540000000000012323722546023564 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.json0000664000175400017540000000116512323721476032364 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "1.1.1.1", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "5641188ab2964f88a21042b493585ff8", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/doc/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.xml0000664000175400017540000000067012323721476032213 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-attach-interfaces/0000775000175400017540000000000012323722546022756 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-show-resp.xml0000664000175400017540000000067612323721476031024 0ustar jenkinsjenkins00000000000000 ACTIVE b6e47749-6bf0-4d6e-ae4b-ba6b5e238510 192.168.123.131 89e64f2e-86bd-4c19-9155-4548b36fdcb2 a9efd207-2c1a-4cdd-a296-d3c7c3211302 fa:16:3e:a4:1c:12 nova-2014.1/doc/api_samples/os-attach-interfaces/server-post-resp.json0000664000175400017540000000075312323721476027117 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "N4Lxd6cMUXmE", "id": "4e44ac84-f3ed-4219-aa2e-b3d1477f0ac3", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/4e44ac84-f3ed-4219-aa2e-b3d1477f0ac3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/4e44ac84-f3ed-4219-aa2e-b3d1477f0ac3", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json0000664000175400017540000000062312323721476031165 0ustar jenkinsjenkins00000000000000{ "interfaceAttachment": { "port_state": "ACTIVE", "fixed_ips": [ { "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef", "ip_address": "192.168.1.3" } ], "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "mac_addr": "fa:16:3e:4c:2c:30" } } nova-2014.1/doc/api_samples/os-attach-interfaces/server-post-req.json0000664000175400017540000000155212323721476026733 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-create-req.json0000664000175400017540000000014112323721476031261 0ustar jenkinsjenkins00000000000000{ "interfaceAttachment": { "port_id": "ce531f90-199f-48c0-816c-13e38010b442" } } nova-2014.1/doc/api_samples/os-attach-interfaces/server-post-req.xml0000664000175400017540000000164712323721476026567 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json0000664000175400017540000000072012323721476031156 0ustar jenkinsjenkins00000000000000{ "interfaceAttachments": [ { "port_state": "ACTIVE", "fixed_ips": [ { "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef", "ip_address": "192.168.1.3" } ], "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "mac_addr": "fa:16:3e:4c:2c:30" } ] } nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-list-resp.xml0000664000175400017540000000076212323721476031013 0ustar jenkinsjenkins00000000000000 ACTIVE f8a6e8f8-c2ec-497c-9f23-da9616de54ef 192.168.1.3 ce531f90-199f-48c0-816c-13e38010b442 3cb9bc59-5699-4588-a4b1-b87f96708bc6 fa:16:3e:4c:2c:30 nova-2014.1/doc/api_samples/os-attach-interfaces/server-post-resp.xml0000664000175400017540000000072712323721476026747 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-list.xml0000664000175400017540000000112612323721476030037 0ustar jenkinsjenkins00000000000000 ACTIVE f8a6e8f8-c2ec-497c-9f23-da9616de54ef 192.168.1.3 ce531f90-199f-48c0-816c-13e38010b442 3cb9bc59-5699-4588-a4b1-b87f96708bc6 fa:16:3e:4c:2c:30 nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-create-resp.xml0000664000175400017540000000067112323721476031302 0ustar jenkinsjenkins00000000000000 3cb9bc59-5699-4588-a4b1-b87f96708bc6 ce531f90-199f-48c0-816c-13e38010b442 f8a6e8f8-c2ec-497c-9f23-da9616de54ef 192.168.1.3 ACTIVE fa:16:3e:4c:2c:30 nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json0000664000175400017540000000055212323721476031451 0ustar jenkinsjenkins00000000000000{ "interfaceAttachment": { "fixed_ips": [{ "ip_address": "192.168.1.1", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" }], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } } nova-2014.1/doc/api_samples/os-attach-interfaces/attach-interfaces-create-req.xml0000664000175400017540000000021612323721476031113 0ustar jenkinsjenkins00000000000000 ce531f90-199f-48c0-816c-13e38010b442 nova-2014.1/doc/api_samples/flavor-get-resp.json0000664000175400017540000000066412323721476022671 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 } } nova-2014.1/doc/api_samples/os-server-start-stop/0000775000175400017540000000000012323722546023015 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-server-start-stop/server-post-resp.json0000664000175400017540000000075312323721476027156 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "xrDLoBeMD28B", "id": "3f69b6bd-00a8-4636-96ee-650093624304", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3f69b6bd-00a8-4636-96ee-650093624304", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3f69b6bd-00a8-4636-96ee-650093624304", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-server-start-stop/server-post-req.json0000664000175400017540000000155212323721476026772 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-server-start-stop/server_start_stop.xml0000664000175400017540000000006112323721476027325 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-server-start-stop/server_start_stop.json0000664000175400017540000000002612323721476027477 0ustar jenkinsjenkins00000000000000{ "os-stop" : null }nova-2014.1/doc/api_samples/os-server-start-stop/server-post-req.xml0000664000175400017540000000164712323721476026626 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-server-start-stop/server-post-resp.xml0000664000175400017540000000072712323721476027006 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-assisted-volume-snapshots/0000775000175400017540000000000012323722546024535 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.json0000664000175400017540000000037312323721476033136 0ustar jenkinsjenkins00000000000000{ "snapshot": { "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", "create_info": { "snapshot_id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c", "type": "qcow", "new_file": "new_file_name"} } } nova-2014.1/doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.json0000664000175400017540000000015112323721476033312 0ustar jenkinsjenkins00000000000000{ "snapshot": { "id": 100, "volumeId": "521752a6-acf6-4b2d-bc7a-119f9148cd8c" } }nova-2014.1/doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.xml0000664000175400017540000000045612323721476032767 0ustar jenkinsjenkins00000000000000 521752a6-acf6-4b2d-bc7a-119f9148cd8c 421752a6-acf6-4b2d-bc7a-119f9148cd8c qcow new_file_name nova-2014.1/doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.xml0000664000175400017540000000015312323721476033143 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/0000775000175400017540000000000012323722546022121 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-detail-resp.xml0000664000175400017540000000320312323721476027601 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-create-resp.json0000664000175400017540000000075112323721476027760 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "10", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/10", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/10", "rel": "bookmark" } ], "name": "test_flavor", "os-flavor-access:is_public": false, "ram": 1024, "vcpus": 2 } }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-list-resp.json0000664000175400017540000000017212323721476027465 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "10", "tenant_id": "fake_tenant" } ] }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-list-resp.xml0000664000175400017540000000017212323721476027314 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-detail-resp.json0000664000175400017540000000526112323721476027760 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "os-flavor-access:is_public": true, "ram": 512, "vcpus": 1 }, { "disk": 20, "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "os-flavor-access:is_public": true, "ram": 2048, "vcpus": 1 }, { "disk": 40, "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "os-flavor-access:is_public": true, "ram": 4096, "vcpus": 2 }, { "disk": 80, "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "os-flavor-access:is_public": true, "ram": 8192, "vcpus": 4 }, { "disk": 160, "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "os-flavor-access:is_public": true, "ram": 16384, "vcpus": 8 } ] } nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-add-tenant-resp.xml0000664000175400017540000000017212323721476030360 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-create-resp.xml0000664000175400017540000000076312323721476027612 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.xml0000664000175400017540000000007012323721476031122 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-add-tenant-req.xml0000664000175400017540000000015312323721476030175 0ustar jenkinsjenkins00000000000000 fake_tenant nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-show-resp.json0000664000175400017540000000074012323721476027473 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "os-flavor-access:is_public": true, "ram": 512, "vcpus": 1 } } nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-remove-tenant-req.json0000664000175400017540000000010512323721476031110 0ustar jenkinsjenkins00000000000000{ "removeTenantAccess": { "tenant": "fake_tenant" } }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-create-req.xml0000664000175400017540000000045412323721476027425 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-create-req.json0000664000175400017540000000026512323721476027576 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "test_flavor", "ram": 1024, "vcpus": 2, "disk": 10, "id": "10", "os-flavor-access:is_public": false } }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-add-tenant-resp.json0000664000175400017540000000017212323721476030531 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "10", "tenant_id": "fake_tenant" } ] }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-add-tenant-req.json0000664000175400017540000000010212323721476030340 0ustar jenkinsjenkins00000000000000{ "addTenantAccess": { "tenant": "fake_tenant" } }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-remove-tenant-req.xml0000664000175400017540000000016112323721476030741 0ustar jenkinsjenkins00000000000000 fake_tenant nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.json0000664000175400017540000000003312323721476031272 0ustar jenkinsjenkins00000000000000{ "flavor_access": [] }nova-2014.1/doc/api_samples/os-flavor-access/flavor-access-show-resp.xml0000664000175400017540000000075212323721476027325 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-console-auth-tokens/0000775000175400017540000000000012323722546023273 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-console-auth-tokens/server-post-resp.json0000664000175400017540000000075412323721476027435 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "MVk5HPrazHcG", "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "rel": "bookmark" } ] } } nova-2014.1/doc/api_samples/os-console-auth-tokens/server-post-req.json0000664000175400017540000000155312323721476027251 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/doc/api_samples/os-console-auth-tokens/server-post-req.xml0000664000175400017540000000165012323721476027076 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.xml0000664000175400017540000000041312323721476032337 0ustar jenkinsjenkins00000000000000 b48316c5-71e8-45e4-9884-6c78055b9b13 localhost 5900 51af38c3-555e-4884-a314-6c8cdde37444 nova-2014.1/doc/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json0000664000175400017540000000032612323721476032513 0ustar jenkinsjenkins00000000000000{ "console": { "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "host": "localhost", "port": 5900, "internal_access_path": "51af38c3-555e-4884-a314-6c8cdde37444" } } nova-2014.1/doc/api_samples/os-console-auth-tokens/server-post-resp.xml0000664000175400017540000000073012323721476027256 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json0000664000175400017540000000010012323721476030730 0ustar jenkinsjenkins00000000000000{ "os-getRDPConsole": { "type": "rdp-html5" } } nova-2014.1/doc/api_samples/os-console-auth-tokens/get-rdp-console-post-req.xml0000664000175400017540000000011512323721476030565 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-IPS/0000775000175400017540000000000012323722546020362 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-IPS/server-post-resp.json0000664000175400017540000000075312323721476024523 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "zD7wDKTXiHsp", "id": "b44e5008-42f7-4048-b4c8-f40a29da88ba", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/b44e5008-42f7-4048-b4c8-f40a29da88ba", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/b44e5008-42f7-4048-b4c8-f40a29da88ba", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-EXT-IPS/server-post-req.json0000664000175400017540000000155212323721476024337 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-EXT-IPS/server-get-resp.json0000664000175400017540000000322112323721476024306 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-02-07T18:46:28Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "4e2003eddbfdb1280c2618d04090bcdd6773203b8da8347af0b2723d", "id": "dc7281f9-ee47-40b9-9950-9f73e7961caa", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/dc7281f9-ee47-40b9-9950-9f73e7961caa", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/dc7281f9-ee47-40b9-9950-9f73e7961caa", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-07T18:46:29Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-EXT-IPS/server-post-req.xml0000664000175400017540000000164712323721476024173 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-EXT-IPS/server-get-resp.xml0000664000175400017540000000236412323721476024144 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-IPS/server-post-resp.xml0000664000175400017540000000072712323721476024353 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-IPS/servers-detail-resp.xml0000664000175400017540000000245512323721476025013 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-IPS/servers-detail-resp.json0000664000175400017540000000356212323721476025164 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-02-07T18:40:59Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "fe866a4962fe3bdb6c2db9c8f7dcdb9555aca73387e72b5cb9c45bd3", "id": "76908712-653a-4d16-807e-d89d41435d24", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/76908712-653a-4d16-807e-d89d41435d24", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/76908712-653a-4d16-807e-d89d41435d24", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-02-07T18:40:59Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/server-action-resize.json0000664000175400017540000000006412323721476023726 0ustar jenkinsjenkins00000000000000{ "resize" : { "flavorRef" : "2" } }nova-2014.1/doc/api_samples/server-metadata-all-resp.json0000664000175400017540000000006612323721476024451 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "Foo Value" } }nova-2014.1/doc/api_samples/os-floating-ips/0000775000175400017540000000000012323722546021765 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-list-resp.json0000664000175400017540000000054612323721476027202 0ustar jenkinsjenkins00000000000000{ "floating_ips": [ { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" }, { "fixed_ip": null, "id": 2, "instance_id": null, "ip": "10.10.10.2", "pool": "nova" } ] }nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-create-req.xml0000664000175400017540000000007012323721476027127 0ustar jenkinsjenkins00000000000000 novanova-2014.1/doc/api_samples/os-floating-ips/floating-ips-list-empty-resp.xml0000664000175400017540000000006612323721476030162 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-create-resp.xml0000664000175400017540000000017312323721476027315 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-create-req.json0000664000175400017540000000002612323721476027301 0ustar jenkinsjenkins00000000000000{ "pool": "nova" }nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-create-nopool-req.xml0000664000175400017540000000000012323721476030424 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-create-resp.json0000664000175400017540000000023112323721476027461 0ustar jenkinsjenkins00000000000000{ "floating_ip": { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" } }nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-list-resp.xml0000664000175400017540000000036312323721476027026 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-list-empty-resp.json0000664000175400017540000000003212323721476030324 0ustar jenkinsjenkins00000000000000{ "floating_ips": [] }nova-2014.1/doc/api_samples/os-floating-ips/floating-ips-create-nopool-req.json0000664000175400017540000000000012323721476030575 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-user-data/0000775000175400017540000000000012323722546021256 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-user-data/userdata-post-resp.xml0000664000175400017540000000072712323721476025551 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-user-data/userdata-post-req.json0000664000175400017540000000167412323721476025542 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-user-data/userdata-post-req.xml0000664000175400017540000000203112323721476025355 0ustar jenkinsjenkins00000000000000 IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg== Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-user-data/userdata-post-resp.json0000664000175400017540000000075312323721476025721 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "bwQZtcB28c29", "id": "55116d7b-2cad-4d65-9c7c-964cde61946e", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/55116d7b-2cad-4d65-9c7c-964cde61946e", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/55116d7b-2cad-4d65-9c7c-964cde61946e", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-user-quotas/0000775000175400017540000000000012323722546021661 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-user-quotas/user-quotas-update-post-resp.json0000664000175400017540000000060412323721476030257 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 9, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/api_samples/os-user-quotas/user-quotas-show-get-resp.xml0000664000175400017540000000102312323721476027372 0ustar jenkinsjenkins00000000000000 20 -1 10 10240 255 5 10 100 128 51200 20 10 nova-2014.1/doc/api_samples/os-user-quotas/user-quotas-show-get-resp.json0000664000175400017540000000064212323721476027551 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/api_samples/os-user-quotas/user-quotas-update-post-req.xml0000664000175400017540000000020212323721476027716 0ustar jenkinsjenkins00000000000000 True 9 nova-2014.1/doc/api_samples/os-user-quotas/user-quotas-update-post-req.json0000664000175400017540000000011512323721476030072 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 9 } } nova-2014.1/doc/api_samples/os-user-quotas/user-quotas-update-post-resp.xml0000664000175400017540000000100112323721476030076 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 9 100 128 51200 20 10 nova-2014.1/doc/api_samples/os-volume-attachment-update/0000775000175400017540000000000012323722546024306 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-volume-attachment-update/server-post-resp.json0000664000175400017540000000075312323721476030447 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "JpSxM7jTxqC2", "id": "3307a815-3f98-4d01-bf59-9e7c4fb2a6a9", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3307a815-3f98-4d01-bf59-9e7c4fb2a6a9", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3307a815-3f98-4d01-bf59-9e7c4fb2a6a9", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-volume-attachment-update/server-post-req.json0000664000175400017540000000155212323721476030263 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-volume-attachment-update/update-volume-req.json0000664000175400017540000000017412323721476030560 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f805", "device": "/dev/sdd" } }nova-2014.1/doc/api_samples/os-volume-attachment-update/server-post-req.xml0000664000175400017540000000164712323721476030117 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-volume-attachment-update/server-post-resp.xml0000664000175400017540000000072712323721476030277 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volume-attachment-update/update-volume-req.xml0000664000175400017540000000017512323721476030410 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-ips-network-resp.xml0000664000175400017540000000024212323721476024230 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-DCF/0000775000175400017540000000000012323722546017665 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-DCF/server-post-resp.json0000664000175400017540000000102012323721476024012 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "adminPass": "CQH9gWzgkVno", "id": "324dfb7d-f4a9-419a-9a19-237df04b443b", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/324dfb7d-f4a9-419a-9a19-237df04b443b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/324dfb7d-f4a9-419a-9a19-237df04b443b", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-DCF/image-get-resp.xml0000664000175400017540000000200412323721476023212 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/doc/api_samples/OS-DCF/list-servers-detail-get.json0000664000175400017540000000354712323721476025251 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-02T02:11:55Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "99428f32351a5d89d0f7727c6eec68c1777c545a0972aaac645508dc", "id": "05372e62-05b9-4ee2-9343-9a1fdf2a5fda", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/05372e62-05b9-4ee2-9343-9a1fdf2a5fda", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/05372e62-05b9-4ee2-9343-9a1fdf2a5fda", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-02T02:11:56Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/OS-DCF/server-post-req.json0000664000175400017540000000155212323721476023642 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-DCF/image-get-resp.json0000664000175400017540000000214512323721476023371 0ustar jenkinsjenkins00000000000000{ "image": { "OS-DCF:diskConfig": "AUTO", "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } }nova-2014.1/doc/api_samples/OS-DCF/server-action-rebuild-req.xml0000664000175400017540000000056312323721476025406 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-DCF/server-update-put-req.json0000664000175400017540000000007512323721476024744 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO" } }nova-2014.1/doc/api_samples/OS-DCF/image-list-resp.xml0000664000175400017540000001303112323721476023410 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/doc/api_samples/OS-DCF/server-get-resp.json0000664000175400017540000000320612323721476023614 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-02T02:11:55Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "c949ab4256cea23b6089b710aa2df48bf6577ed915278b62e33ad8bb", "id": "5046e2f2-3b33-4041-b3cf-e085f73e78e7", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/5046e2f2-3b33-4041-b3cf-e085f73e78e7", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/5046e2f2-3b33-4041-b3cf-e085f73e78e7", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-02T02:11:55Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-DCF/server-resize-post-req.json0000664000175400017540000000012712323721476025136 0ustar jenkinsjenkins00000000000000{ "resize": { "flavorRef": "3", "OS-DCF:diskConfig": "AUTO" } }nova-2014.1/doc/api_samples/OS-DCF/server-post-req.xml0000664000175400017540000000164712323721476023476 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-DCF/image-list-resp.json0000664000175400017540000001775712323721476023604 0ustar jenkinsjenkins00000000000000{ "images": [ { "OS-DCF:diskConfig": "AUTO", "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "OS-DCF:diskConfig": "MANUAL", "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] }nova-2014.1/doc/api_samples/OS-DCF/server-get-resp.xml0000664000175400017540000000236012323721476023443 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-DCF/server-resize-post-req.xml0000664000175400017540000000043612323721476024770 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-DCF/server-action-rebuild-resp.json0000664000175400017540000000325312323721476025740 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "adminPass": "NBjMaJoFL4EF", "created": "2012-12-02T02:11:56Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "c076393ad900d62c4805a42df10d9b364f629842681c00cce035487f", "id": "63a8aa13-60fe-41c4-b079-77f6fdf3c841", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/63a8aa13-60fe-41c4-b079-77f6fdf3c841", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/63a8aa13-60fe-41c4-b079-77f6fdf3c841", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-02T02:11:56Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-DCF/server-post-resp.xml0000664000175400017540000000107212323721476023650 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-DCF/server-update-put-req.xml0000664000175400017540000000041012323721476024564 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-DCF/server-action-rebuild-resp.xml0000664000175400017540000000241112323721476025562 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-DCF/list-servers-detail-get.xml0000664000175400017540000000245112323721476025071 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-DCF/server-update-put-resp.xml0000664000175400017540000000236012323721476024754 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-DCF/server-update-put-resp.json0000664000175400017540000000320612323721476025125 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-12-02T02:11:57Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "6e84af987b4e7ec1c039b16d21f508f4a505672bd94fb0218b668d07", "id": "324dfb7d-f4a9-419a-9a19-237df04b443b", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/324dfb7d-f4a9-419a-9a19-237df04b443b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/324dfb7d-f4a9-419a-9a19-237df04b443b", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-12-02T02:11:58Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-DCF/server-action-rebuild-req.json0000664000175400017540000000025112323721476025551 0ustar jenkinsjenkins00000000000000{ "rebuild": { "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "OS-DCF:diskConfig": "AUTO" } }nova-2014.1/doc/api_samples/os-quota-sets/0000775000175400017540000000000012323722546021476 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-quota-sets/quotas-show-get-resp.xml0000664000175400017540000000102312323721476026233 0ustar jenkinsjenkins00000000000000 20 -1 10 10240 255 5 10 100 128 51200 20 10 nova-2014.1/doc/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json0000664000175400017540000000064212323721476030217 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/api_samples/os-quota-sets/quotas-update-post-req.json0000664000175400017540000000007312323721476026736 0ustar jenkinsjenkins00000000000000{ "quota_set": { "security_groups": 45 } } nova-2014.1/doc/api_samples/os-quota-sets/quotas-show-defaults-get-resp.xml0000664000175400017540000000102312323721476030040 0ustar jenkinsjenkins00000000000000 20 -1 10 10240 255 5 10 100 128 51200 20 10 nova-2014.1/doc/api_samples/os-quota-sets/quotas-update-post-req.xml0000664000175400017540000000017012323721476026563 0ustar jenkinsjenkins00000000000000 45 nova-2014.1/doc/api_samples/os-quota-sets/quotas-show-get-resp.json0000664000175400017540000000064212323721476026412 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/api_samples/os-quota-sets/quotas-update-post-resp.json0000664000175400017540000000060512323721476027121 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 45 } } nova-2014.1/doc/api_samples/os-quota-sets/quotas-update-post-resp.xml0000664000175400017540000000100212323721476026740 0ustar jenkinsjenkins00000000000000 20 -1 10 10240 255 5 10 100 128 51200 20 45 nova-2014.1/doc/api_samples/os-networks-associate/0000775000175400017540000000000012323722546023216 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-networks-associate/network-disassociate-req.json0000664000175400017540000000003412323721476031036 0ustar jenkinsjenkins00000000000000{ "disassociate": null }nova-2014.1/doc/api_samples/os-networks-associate/network-associate-host-req.json0000664000175400017540000000004412323721476031312 0ustar jenkinsjenkins00000000000000{ "associate_host": "testHost" }nova-2014.1/doc/api_samples/os-networks-associate/network-disassociate-host-req.json0000664000175400017540000000004112323721476032007 0ustar jenkinsjenkins00000000000000{ "disassociate_host": null }nova-2014.1/doc/api_samples/os-networks-associate/network-disassociate-project-req.xml0000664000175400017540000000002712323721476032333 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-networks-associate/network-disassociate-req.xml0000664000175400017540000000001712323721476030666 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-networks-associate/network-disassociate-project-req.json0000664000175400017540000000004412323721476032503 0ustar jenkinsjenkins00000000000000{ "disassociate_project": null }nova-2014.1/doc/api_samples/os-networks-associate/network-associate-host-req.xml0000664000175400017540000000012012323721476031134 0ustar jenkinsjenkins00000000000000 testHostnova-2014.1/doc/api_samples/os-networks-associate/network-disassociate-host-req.xml0000664000175400017540000000002412323721476031637 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-admin-actions/0000775000175400017540000000000012323722546022117 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-unpause.json0000664000175400017540000000002712323721476027216 0ustar jenkinsjenkins00000000000000{ "unpause": null }nova-2014.1/doc/api_samples/os-admin-actions/server-post-resp.json0000664000175400017540000000075312323721476026260 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "GrsuNLsSKd5N", "id": "b63a8fc6-2977-4a11-a611-3ec45f839c4c", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/b63a8fc6-2977-4a11-a611-3ec45f839c4c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/b63a8fc6-2977-4a11-a611-3ec45f839c4c", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-pause.xml0000664000175400017540000000006312323721476026502 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-reset-state.xml0000664000175400017540000000000012323721476027614 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-backup-server.json0000664000175400017540000000016112323721476030306 0ustar jenkinsjenkins00000000000000{ "createBackup": { "name": "Backup 1", "backup_type": "daily", "rotation": 1 } }nova-2014.1/doc/api_samples/os-admin-actions/server-post-req.json0000664000175400017540000000155212323721476026074 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-reset-network.json0000664000175400017540000000003412323721476030345 0ustar jenkinsjenkins00000000000000{ "resetNetwork": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-unlock.json0000664000175400017540000000002712323721476027031 0ustar jenkinsjenkins00000000000000{ "unlock": null } nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-suspend.xml0000664000175400017540000000006612323721476027051 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-backup-server.xml0000664000175400017540000000026312323721476030140 0ustar jenkinsjenkins00000000000000 Backup 1 daily 1 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-unlock-server.xml0000664000175400017540000000006512323721476030166 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-migrate.xml0000664000175400017540000000006612323721476027020 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-reset-server-state.json0000664000175400017540000000007212323721476031302 0ustar jenkinsjenkins00000000000000{ "os-resetState": { "state": "active" } }nova-2014.1/doc/api_samples/os-admin-actions/server-post-req.xml0000664000175400017540000000164712323721476025730 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-live-migrate.json0000664000175400017540000000023112323721476030120 0ustar jenkinsjenkins00000000000000{ "os-migrateLive": { "host": "0443e9a1254044d8b99f35eace132080", "block_migration": false, "disk_over_commit": false } }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-lock.json0000664000175400017540000000002512323721476026464 0ustar jenkinsjenkins00000000000000{ "lock": null } nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-inject-network-info.json0000664000175400017540000000004112323721476031426 0ustar jenkinsjenkins00000000000000{ "injectNetworkInfo": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-resume.json0000664000175400017540000000002612323721476027035 0ustar jenkinsjenkins00000000000000{ "resume": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-reset-server-state.xml0000664000175400017540000000015512323721476031133 0ustar jenkinsjenkins00000000000000 active nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-pause.json0000664000175400017540000000002512323721476026651 0ustar jenkinsjenkins00000000000000{ "pause": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-lock-server.xml0000664000175400017540000000006312323721476027621 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/server-post-resp.xml0000664000175400017540000000072712323721476026110 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-suspend.json0000664000175400017540000000002712323721476027217 0ustar jenkinsjenkins00000000000000{ "suspend": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-unlock-server.json0000664000175400017540000000002612323721476030334 0ustar jenkinsjenkins00000000000000{ "unlock": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-lock-server.json0000664000175400017540000000002412323721476027767 0ustar jenkinsjenkins00000000000000{ "lock": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-live-migrate.xml0000664000175400017540000000035412323721476027755 0ustar jenkinsjenkins00000000000000 6217bf142bb3491995f966af999f9f23 false false nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-reset-network.xml0000664000175400017540000000007312323721476030177 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-reset-state.json0000664000175400017540000000000012323721476027765 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-resume.xml0000664000175400017540000000006512323721476026667 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-migrate.json0000664000175400017540000000002712323721476027166 0ustar jenkinsjenkins00000000000000{ "migrate": null }nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-unpause.xml0000664000175400017540000000006612323721476027050 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-admin-actions/admin-actions-inject-network-info.xml0000664000175400017540000000010012323721476031251 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-instance_usage_audit_log/0000775000175400017540000000000012323722546024410 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.xml0000664000175400017540000000111312323721476033573 0ustar jenkinsjenkins00000000000000 0 0 0 0 1 4b54478b73734afcbf0e2676a3303d1a 0 of 1 hosts done. 0 errors. 2012-07-01 00:00:00 2012-06-01 00:00:00 1 nova-2014.1/doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.json0000664000175400017540000000073512323721476033755 0ustar jenkinsjenkins00000000000000{ "instance_usage_audit_log": { "hosts_not_run": [ "8e33da2b48684ef3ab165444d6a7384c" ], "log": {}, "num_hosts": 1, "num_hosts_done": 0, "num_hosts_not_run": 1, "num_hosts_running": 0, "overall_status": "0 of 1 hosts done. 0 errors.", "period_beginning": "2012-06-01 00:00:00", "period_ending": "2012-07-01 00:00:00", "total_errors": 0, "total_instances": 0 } }nova-2014.1/doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.json0000664000175400017540000000073612323721476034105 0ustar jenkinsjenkins00000000000000{ "instance_usage_audit_logs": { "hosts_not_run": [ "f4eb7cfd155f4574967f8b55a7faed75" ], "log": {}, "num_hosts": 1, "num_hosts_done": 0, "num_hosts_not_run": 1, "num_hosts_running": 0, "overall_status": "0 of 1 hosts done. 0 errors.", "period_beginning": "2012-12-01 00:00:00", "period_ending": "2013-01-01 00:00:00", "total_errors": 0, "total_instances": 0 } }nova-2014.1/doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.xml0000664000175400017540000000111512323721476033724 0ustar jenkinsjenkins00000000000000 0 0 0 0 1 107debd115684f098d4c73ffac7ec515 0 of 1 hosts done. 0 errors. 2013-01-01 00:00:00 2012-12-01 00:00:00 1 nova-2014.1/doc/api_samples/os-volumes/0000775000175400017540000000000012323722546021063 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-volumes/list-volume-attachments-resp.xml0000664000175400017540000000066312323721476027353 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/os-volumes-index-resp.xml0000664000175400017540000000103412323721476025771 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/os-volumes-post-resp.json0000664000175400017540000000125712323721476026027 0ustar jenkinsjenkins00000000000000{ "volume": { "attachments": [ { "device": "/", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } ], "availabilityZone": "zone1:host1", "createdAt": "2013-02-18T14:51:17.970024", "displayDescription": "Volume Description", "displayName": "Volume Name", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } }nova-2014.1/doc/api_samples/os-volumes/server-post-resp.json0000664000175400017540000000075312323721476025224 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "8VqALQcVB9MT", "id": "a80b9477-84c1-4242-9731-14a3c2a04241", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/a80b9477-84c1-4242-9731-14a3c2a04241", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/a80b9477-84c1-4242-9731-14a3c2a04241", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-volumes/snapshots-detail-resp.xml0000664000175400017540000000111112323721476026031 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/server-post-req.json0000664000175400017540000000155212323721476025040 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-volumes/attach-volume-to-server-req.xml0000664000175400017540000000017512323721476027073 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/attach-volume-to-server-req.json0000664000175400017540000000017412323721476027243 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "device": "/dev/vdd" } }nova-2014.1/doc/api_samples/os-volumes/os-volumes-post-req.xml0000664000175400017540000000024012323721476025463 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/volume-attachment-detail-resp.xml0000664000175400017540000000032612323721476027453 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/volume-attachment-detail-resp.json0000664000175400017540000000035612323721476027627 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "device": "/dev/sdd", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "2390fb4d-1693-45d7-b309-e29c4af16538", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } }nova-2014.1/doc/api_samples/os-volumes/server-post-req.xml0000664000175400017540000000164712323721476024674 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-volumes/os-volumes-detail-resp.xml0000664000175400017540000000103412323721476026124 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/snapshot-create-resp.xml0000664000175400017540000000035112323721476025654 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/snapshots-detail-resp.json0000664000175400017540000000156512323721476026217 0ustar jenkinsjenkins00000000000000{ "snapshots": [ { "createdAt": "2013-02-25T16:27:54.671372", "displayDescription": "Default description", "displayName": "Default name", "id": 100, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "2013-02-25T16:27:54.671378", "displayDescription": "Default description", "displayName": "Default name", "id": 101, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "2013-02-25T16:27:54.671381", "displayDescription": "Default description", "displayName": "Default name", "id": 102, "size": 100, "status": "available", "volumeId": 12 } ] }nova-2014.1/doc/api_samples/os-volumes/snapshots-show-resp.xml0000664000175400017540000000032212323721476025552 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/os-volumes-detail-resp.json0000664000175400017540000000140512323721476026277 0ustar jenkinsjenkins00000000000000{ "volumes": [ { "attachments": [ { "device": "/", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } ], "availabilityZone": "zone1:host1", "createdAt": "1999-01-01T01:01:01", "displayDescription": "Volume Description", "displayName": "Volume Name", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } ] }nova-2014.1/doc/api_samples/os-volumes/os-volumes-get-resp.xml0000664000175400017540000000077312323721476025452 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/attach-volume-to-server-resp.json0000664000175400017540000000035612323721476027427 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "device": "/dev/vdd", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "0c92f3f6-c253-4c9b-bd43-e880a8d2eb0a", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } }nova-2014.1/doc/api_samples/os-volumes/os-volumes-post-resp.xml0000664000175400017540000000077312323721476025660 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/snapshot-create-req.xml0000664000175400017540000000040012323721476025465 0ustar jenkinsjenkins00000000000000 snap-001 Daily backup 521752a6-acf6-4b2d-bc7a-119f9148cd8c false nova-2014.1/doc/api_samples/os-volumes/server-post-resp.xml0000664000175400017540000000072712323721476025054 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/snapshot-create-resp.json0000664000175400017540000000044112323721476026025 0ustar jenkinsjenkins00000000000000{ "snapshot": { "createdAt": "2013-02-25T16:27:54.680544", "displayDescription": "Daily backup", "displayName": "snap-001", "id": 100, "size": 100, "status": "available", "volumeId": "521752a6-acf6-4b2d-bc7a-119f9148cd8c" } }nova-2014.1/doc/api_samples/os-volumes/snapshots-show-resp.json0000664000175400017540000000041212323721476025723 0ustar jenkinsjenkins00000000000000{ "snapshot": { "createdAt": "2013-02-25T16:27:54.724209", "displayDescription": "Default description", "displayName": "Default name", "id": "100", "size": 100, "status": "available", "volumeId": 12 } }nova-2014.1/doc/api_samples/os-volumes/snapshots-list-resp.xml0000664000175400017540000000111112323721476025542 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-volumes/snapshot-create-req.json0000664000175400017540000000030312323721476025640 0ustar jenkinsjenkins00000000000000{ "snapshot": { "display_name": "snap-001", "display_description": "Daily backup", "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c", "force": false } }nova-2014.1/doc/api_samples/os-volumes/list-volume-attachments-resp.json0000664000175400017540000000100312323721476027511 0ustar jenkinsjenkins00000000000000{ "volumeAttachments": [ { "device": "/dev/sdd", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" }, { "device": "/dev/sdc", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f804", "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f804" } ] }nova-2014.1/doc/api_samples/os-volumes/snapshots-list-resp.json0000664000175400017540000000156512323721476025730 0ustar jenkinsjenkins00000000000000{ "snapshots": [ { "createdAt": "2013-02-25T16:27:54.684999", "displayDescription": "Default description", "displayName": "Default name", "id": 100, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "2013-02-25T16:27:54.685005", "displayDescription": "Default description", "displayName": "Default name", "id": 101, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "2013-02-25T16:27:54.685008", "displayDescription": "Default description", "displayName": "Default name", "id": 102, "size": 100, "status": "available", "volumeId": 12 } ] }nova-2014.1/doc/api_samples/os-volumes/os-volumes-index-resp.json0000664000175400017540000000141412323721476026144 0ustar jenkinsjenkins00000000000000{ "volumes": [ { "attachments": [ { "device": "/", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } ], "availabilityZone": "zone1:host1", "createdAt": "2013-02-19T20:01:40.274897", "displayDescription": "Volume Description", "displayName": "Volume Name", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } ] }nova-2014.1/doc/api_samples/os-volumes/os-volumes-get-resp.json0000664000175400017540000000125712323721476025621 0ustar jenkinsjenkins00000000000000{ "volume": { "attachments": [ { "device": "/", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } ], "availabilityZone": "zone1:host1", "createdAt": "2013-02-18T14:51:18.528085", "displayDescription": "Volume Description", "displayName": "Volume Name", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } }nova-2014.1/doc/api_samples/os-volumes/os-volumes-post-req.json0000664000175400017540000000025612323721476025643 0ustar jenkinsjenkins00000000000000{ "volume": { "availability_zone": "zone1:host1", "display_name": "Volume Name", "display_description": "Volume Description", "size": 100 } } nova-2014.1/doc/api_samples/os-volumes/attach-volume-to-server-resp.xml0000664000175400017540000000032612323721476027253 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/versions-get-resp.xml0000664000175400017540000000071412323721476023073 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/images-details-resp.xml0000664000175400017540000001263312323721476023341 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/doc/api_samples/image-meta-key-get.xml0000664000175400017540000000017712323721476023053 0ustar jenkinsjenkins00000000000000 nokernelnova-2014.1/doc/api_samples/os-baremetal-ext-status/0000775000175400017540000000000012323722546023444 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-req.json0000664000175400017540000000037612323721476031253 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "terminal_port": 8000 } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.xml0000664000175400017540000000070212323721476030765 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.xml0000664000175400017540000000013012323721476032311 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.xml0000664000175400017540000000035612323721476033474 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.json0000664000175400017540000000011212323721476033227 0ustar jenkinsjenkins00000000000000{ "remove_interface": { "address": "aa:aa:aa:aa:aa:aa" } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.json0000664000175400017540000000021212323721476032645 0ustar jenkinsjenkins00000000000000{ "interface": { "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "id": 1, "port_no": null } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.json0000664000175400017540000000132312323721476031136 0ustar jenkinsjenkins00000000000000{ "nodes": [ { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [ { "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "id": 1, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "6fae68da-108b-4a9d-87c4-88831ee1241b" } ] }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.xml0000664000175400017540000000013312323721476033061 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.xml0000664000175400017540000000017012323721476032477 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.json0000664000175400017540000000045712323721476033647 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000 } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.json0000664000175400017540000000115212323721476031143 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [ { "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "id": 1, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "c862b836-c7c1-4f7f-8081-6766fa9cf38b" } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.json0000664000175400017540000000066712323721476031440 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "73d35253-b6fb-4c83-b8eb-0229336e79b6" } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.json0000664000175400017540000000010712323721476032466 0ustar jenkinsjenkins00000000000000{ "add_interface": { "address": "aa:aa:aa:aa:aa:aa" } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.json0000664000175400017540000000115212323721476034022 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": 1, "instance_uuid": null, "interfaces": [ { "address": "12:34:56:78:90:ab", "datapath_id": null, "id": 1, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "0a130464-bccc-4e36-b9d3-9a8c98e636ae" } }nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.xml0000664000175400017540000000064712323721476033661 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.xml0000664000175400017540000000064712323721476031002 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.xml0000664000175400017540000000050212323721476031253 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-baremetal-ext-status/baremetal-node-create-req.xml0000664000175400017540000000030512323721476031072 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/image-metadata-get-resp.xml0000664000175400017540000000042512323721476024062 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/doc/api_samples/os-server-groups/0000775000175400017540000000000012323722546022214 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-server-groups/server-groups-post-resp.xml0000664000175400017540000000045712323721476027522 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/doc/api_samples/os-server-groups/server-groups-get-resp.json0000664000175400017540000000030312323721476027453 0ustar jenkinsjenkins00000000000000{ "server_group": { "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "name": "test", "policies": ["anti-affinity"], "members": [], "metadata": {} } } nova-2014.1/doc/api_samples/os-server-groups/server-groups-post-req.xml0000664000175400017540000000014712323721476027334 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/doc/api_samples/os-server-groups/server-groups-get-resp.xml0000664000175400017540000000045712323721476027314 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/doc/api_samples/os-server-groups/server-groups-post-req.json0000664000175400017540000000013612323721476027503 0ustar jenkinsjenkins00000000000000{ "server_group": { "name": "test", "policies": ["anti-affinity"] } } nova-2014.1/doc/api_samples/os-server-groups/server-groups-list-resp.json0000664000175400017540000000035412323721476027655 0ustar jenkinsjenkins00000000000000{ "server_groups": [ { "id": "616fb98f-46ca-475e-917e-2563e5a8cd19", "name": "test", "policies": ["anti-affinity"], "members": [], "metadata": {} } ] } nova-2014.1/doc/api_samples/os-server-groups/server-groups-list-resp.xml0000664000175400017540000000052312323721476027502 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/doc/api_samples/os-server-groups/server-groups-post-resp.json0000664000175400017540000000030312323721476027661 0ustar jenkinsjenkins00000000000000{ "server_group": { "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "name": "test", "policies": ["anti-affinity"], "members": [], "metadata": {} } } nova-2014.1/doc/api_samples/os-extended-services-delete/0000775000175400017540000000000012323722546024252 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-extended-services-delete/services-get-resp.xml0000664000175400017540000000111612323721476030343 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-extended-services-delete/services-get-resp.json0000664000175400017540000000203612323721476030516 0ustar jenkinsjenkins00000000000000{ "services": [ { "id": 1, "binary": "nova-scheduler", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:02.000000", "zone": "internal" }, { "id": 2, "binary": "nova-compute", "host": "host1", "state": "up", "status": "disabled", "updated_at": "2012-10-29T13:42:05.000000", "zone": "nova" }, { "id": 3, "binary": "nova-scheduler", "host": "host2", "state": "down", "status": "enabled", "updated_at": "2012-09-19T06:55:34.000000", "zone": "internal" }, { "id": 4, "binary": "nova-compute", "host": "host2", "state": "down", "status": "disabled", "updated_at": "2012-09-18T08:03:38.000000", "zone": "nova" } ] } nova-2014.1/doc/api_samples/servers-details-resp.xml0000664000175400017540000000230612323721476023561 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/all_extensions/0000775000175400017540000000000012323722546022001 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/all_extensions/server-post-resp.json0000664000175400017540000000116612323721476026141 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "adminPass": "ahW3PjQNAu6r", "id": "e726f5ae-8179-44ba-bbfb-8a0c52b33095", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/e726f5ae-8179-44ba-bbfb-8a0c52b33095", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/e726f5ae-8179-44ba-bbfb-8a0c52b33095", "rel": "bookmark" } ], "security_groups": [ { "name": "default" } ] } }nova-2014.1/doc/api_samples/all_extensions/server-action-reboot.xml0000664000175400017540000000016712323721476026601 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/server-action-rebuild.xml0000664000175400017540000000167512323721476026742 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/all_extensions/server-post-req.json0000664000175400017540000000154112323721476025754 0ustar jenkinsjenkins00000000000000{ "server": { "flavorRef": "http://openstack.example.com/openstack/flavors/1", "imageRef": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "personality": [ { "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "path": "/etc/banner.txt" } ] } }nova-2014.1/doc/api_samples/all_extensions/server-action-confirmresize.json0000664000175400017540000000003612323721476030332 0ustar jenkinsjenkins00000000000000{ "confirmResize" : null }nova-2014.1/doc/api_samples/all_extensions/server-action-confirmresize.xml0000664000175400017540000000015612323721476030164 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/server-action-createimage.xml0000664000175400017540000000032612323721476027552 0ustar jenkinsjenkins00000000000000 foobar nova-2014.1/doc/api_samples/all_extensions/flavors-list-resp.json0000664000175400017540000000412312323721476026271 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny" }, { "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small" }, { "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium" }, { "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large" }, { "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge" } ] }nova-2014.1/doc/api_samples/all_extensions/server-get-resp.json0000664000175400017540000000462612323721476025737 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "1e6e2aca70404eddb6120b83ba0ba990", "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2013-05-02T19:13:48.734609", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.3", "version": 4 } ] }, "config_drive": "", "created": "2013-05-02T19:13:48Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "2e41621ca04684ffb8b3616c554bcfa402856e1678aaf9473bfced1a", "id": "a594696d-f35a-4238-a152-ae471395bdfe", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/a594696d-f35a-4238-a152-ae471395bdfe", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/a594696d-f35a-4238-a152-ae471395bdfe", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-05-02T19:13:48Z", "user_id": "fake", "os-extended-volumes:volumes_attached": [] } }nova-2014.1/doc/api_samples/all_extensions/server-action-resize.xml0000664000175400017540000000017112323721476026603 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/server-post-req.xml0000664000175400017540000000165012323721476025604 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/all_extensions/server-action-createimage.json0000664000175400017540000000017312323721476027723 0ustar jenkinsjenkins00000000000000{ "createImage" : { "name" : "foo-image", "metadata": { "myvar": "foobar" } } }nova-2014.1/doc/api_samples/all_extensions/server-get-resp.xml0000664000175400017540000000455312323721476025565 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/all_extensions/servers-details-resp.json0000664000175400017540000000530312323721476026761 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-DCF:diskConfig": "AUTO", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "f43a596b8ec841e4bd486473ba0693bb", "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2013-05-02T19:14:01.806067", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.3", "version": 4 } ] }, "config_drive": "", "created": "2013-05-02T19:14:01Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "6a892e9c0d3105ce7c93fd44982253a16d6bd760fc80cb686cfe1c18", "id": "cdd530d5-140d-4f16-88a6-690cbbabc186", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/cdd530d5-140d-4f16-88a6-690cbbabc186", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/cdd530d5-140d-4f16-88a6-690cbbabc186", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-05-02T19:14:01Z", "user_id": "fake", "os-extended-volumes:volumes_attached": [] } ] }nova-2014.1/doc/api_samples/all_extensions/server-action-changepassword.json0000664000175400017540000000007612323721476030467 0ustar jenkinsjenkins00000000000000{ "changePassword" : { "adminPass" : "foo" } }nova-2014.1/doc/api_samples/all_extensions/server-action-reboot.json0000664000175400017540000000006312323721476026745 0ustar jenkinsjenkins00000000000000{ "reboot" : { "type" : "SOFT" } }nova-2014.1/doc/api_samples/all_extensions/server-action-revertresize.json0000664000175400017540000000003512323721476030203 0ustar jenkinsjenkins00000000000000{ "revertResize" : null }nova-2014.1/doc/api_samples/all_extensions/server-action-rebuild-resp.json0000664000175400017540000000325012323721476030051 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "1.2.3.4", "accessIPv6": "fe80::100", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "adminPass": "seekr3t", "created": "2012-09-25T13:36:08Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "935dcd1019fd43814a1d2a6e9b320dcac352d3a02c69f8be7ba41002", "id": "27568e59-cfb7-4283-a00e-4af933f2d539", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/27568e59-cfb7-4283-a00e-4af933f2d539", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/27568e59-cfb7-4283-a00e-4af933f2d539", "rel": "bookmark" } ], "metadata": { "meta var": "meta val" }, "name": "foobar", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-09-25T13:36:09Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/all_extensions/server-post-resp.xml0000664000175400017540000000121012323721476025756 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/servers-list-resp.json0000664000175400017540000000105612323721476026310 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "eb51f4a9-8192-4cd0-be78-d8e2c834dbc4", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/eb51f4a9-8192-4cd0-be78-d8e2c834dbc4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/eb51f4a9-8192-4cd0-be78-d8e2c834dbc4", "rel": "bookmark" } ], "name": "new-server-test" } ] }nova-2014.1/doc/api_samples/all_extensions/server-action-rebuild.json0000664000175400017540000000160112323721476027100 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "imageRef" : "http://openstack.example.com/v2/32278/images/70a599e0-31e7-49b7-b260-868f441e862b", "name" : "foobar", "adminPass" : "seekr3t", "accessIPv4" : "1.2.3.4", "accessIPv6" : "fe80::100", "metadata" : { "meta var" : "meta val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/all_extensions/flavor-get-resp.xml0000664000175400017540000000136312323721476025544 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/server-action-changepassword.xml0000664000175400017540000000020312323721476030306 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/server-action-rebuild-resp.xml0000664000175400017540000000241312323721476027700 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/all_extensions/flavor-get-resp.json0000664000175400017540000000114312323721476025711 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-DISABLED:disabled": false, "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "os-flavor-access:is_public": true, "ram": 512, "rxtx_factor": 1.0, "swap": "", "vcpus": 1 } } nova-2014.1/doc/api_samples/all_extensions/server-action-resize.json0000664000175400017540000000006412323721476026755 0ustar jenkinsjenkins00000000000000{ "resize" : { "flavorRef" : "2" } }nova-2014.1/doc/api_samples/all_extensions/servers-details-resp.xml0000664000175400017540000000465212323721476026616 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/all_extensions/servers-list-resp.xml0000664000175400017540000000074412323721476026142 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/extensions-get-resp.json0000664000175400017540000006642212323721476026632 0ustar jenkinsjenkins00000000000000{ "extensions": [ { "alias": "NMN", "description": "Multiple network support.", "links": [], "name": "Multinic", "namespace": "http://docs.openstack.org/compute/ext/multinic/api/v1.1", "updated": "2011-06-09T00:00:00+00:00" }, { "alias": "OS-DCF", "description": "Disk Management Extension.", "links": [], "name": "DiskConfig", "namespace": "http://docs.openstack.org/compute/ext/disk_config/api/v1.1", "updated": "2011-09-27T00:00:00+00:00" }, { "alias": "OS-EXT-AZ", "description": "Extended Server Attributes support.", "links": [], "name": "ExtendedAvailabilityZone", "namespace": "http://docs.openstack.org/compute/ext/extended_availability_zone/api/v2", "updated": "2013-01-30T00:00:00+00:00" }, { "alias": "OS-EXT-IMG-SIZE", "description": "Adds image size to image listings.", "links": [], "name": "ImageSize", "namespace": "http://docs.openstack.org/compute/ext/image_size/api/v1.1", "updated": "2013-02-19T00:00:00+00:00" }, { "alias": "OS-EXT-IPS", "description": "Adds type parameter to the ip list.", "links": [], "name": "ExtendedIps", "namespace": "http://docs.openstack.org/compute/ext/extended_ips/api/v1.1", "updated": "2013-01-06T00:00:00+00:00" }, { "alias": "OS-EXT-IPS-MAC", "description": "Adds mac address parameter to the ip list.", "links": [], "name": "ExtendedIpsMac", "namespace": "http://docs.openstack.org/compute/ext/extended_ips_mac/api/v1.1", "updated": "2013-03-07T00:00:00+00:00" }, { "alias": "OS-EXT-SRV-ATTR", "description": "Extended Server Attributes support.", "links": [], "name": "ExtendedServerAttributes", "namespace": "http://docs.openstack.org/compute/ext/extended_status/api/v1.1", "updated": "2011-11-03T00:00:00+00:00" }, { "alias": "OS-EXT-STS", "description": "Extended Status support.", "links": [], "name": "ExtendedStatus", "namespace": "http://docs.openstack.org/compute/ext/extended_status/api/v1.1", "updated": "2011-11-03T00:00:00+00:00" }, { "alias": "OS-EXT-VIF-NET", "description": "Adds network id parameter to the virtual interface list.", "links": [], "name": "ExtendedVIFNet", "namespace": "http://docs.openstack.org/compute/ext/extended-virtual-interfaces-net/api/v1.1", "updated": "2013-03-07T00:00:00+00:00" }, { "alias": "OS-FLV-DISABLED", "description": "Support to show the disabled status of a flavor.", "links": [], "name": "FlavorDisabled", "namespace": "http://docs.openstack.org/compute/ext/flavor_disabled/api/v1.1", "updated": "2012-08-29T00:00:00+00:00" }, { "alias": "OS-FLV-EXT-DATA", "description": "Provide additional data for flavors.", "links": [], "name": "FlavorExtraData", "namespace": "http://docs.openstack.org/compute/ext/flavor_extra_data/api/v1.1", "updated": "2011-09-14T00:00:00+00:00" }, { "alias": "OS-SCH-HNT", "description": "Pass arbitrary key/value pairs to the scheduler.", "links": [], "name": "SchedulerHints", "namespace": "http://docs.openstack.org/compute/ext/scheduler-hints/api/v2", "updated": "2011-07-19T00:00:00+00:00" }, { "alias": "OS-SRV-USG", "description": "Adds launched_at and terminated_at on Servers.", "links": [], "name": "ServerUsage", "namespace": "http://docs.openstack.org/compute/ext/server_usage/api/v1.1", "updated": "2013-04-29T00:00:00+00:00" }, { "alias": "os-admin-actions", "description": "Enable admin-only server actions\n\n Actions include: pause, unpause, suspend, resume, migrate,\n resetNetwork, injectNetworkInfo, lock, unlock, createBackup\n ", "links": [], "name": "AdminActions", "namespace": "http://docs.openstack.org/compute/ext/admin-actions/api/v1.1", "updated": "2011-09-20T00:00:00+00:00" }, { "alias": "os-agents", "description": "Agents support.", "links": [], "name": "Agents", "namespace": "http://docs.openstack.org/compute/ext/agents/api/v2", "updated": "2012-10-28T00:00:00-00:00" }, { "alias": "os-aggregates", "description": "Admin-only aggregate administration.", "links": [], "name": "Aggregates", "namespace": "http://docs.openstack.org/compute/ext/aggregates/api/v1.1", "updated": "2012-01-12T00:00:00+00:00" }, { "alias": "os-assisted-volume-snapshots", "description": "Assisted volume snapshots.", "links": [], "name": "AssistedVolumeSnapshots", "namespace": "http://docs.openstack.org/compute/ext/assisted-volume-snapshots/api/v2", "updated": "2013-08-29T00:00:00-00:00" }, { "alias": "os-attach-interfaces", "description": "Attach interface support.", "links": [], "name": "AttachInterfaces", "namespace": "http://docs.openstack.org/compute/ext/interfaces/api/v1.1", "updated": "2012-07-22T00:00:00+00:00" }, { "alias": "os-availability-zone", "description": "1. Add availability_zone to the Create Server v1.1 API.\n 2. Add availability zones describing.\n ", "links": [], "name": "AvailabilityZone", "namespace": "http://docs.openstack.org/compute/ext/availabilityzone/api/v1.1", "updated": "2012-12-21T00:00:00+00:00" }, { "alias": "os-baremetal-ext-status", "description": "Add extended status in Baremetal Nodes v2 API.", "links": [], "name": "BareMetalExtStatus", "namespace": "http://docs.openstack.org/compute/ext/baremetal_ext_status/api/v2", "updated": "2013-08-27T00:00:00+00:00" }, { "alias": "os-baremetal-nodes", "description": "Admin-only bare-metal node administration.", "links": [], "name": "BareMetalNodes", "namespace": "http://docs.openstack.org/compute/ext/baremetal_nodes/api/v2", "updated": "2013-01-04T00:00:00+00:00" }, { "alias": "os-block-device-mapping-v2-boot", "description": "Allow boot with the new BDM data format.", "links": [], "name": "BlockDeviceMappingV2Boot", "namespace": "http://docs.openstack.org/compute/ext/block_device_mapping_v2_boot/api/v2", "updated": "2013-07-08T00:00:00+00:00" }, { "alias": "os-cell-capacities", "description": "Adding functionality to get cell capacities.", "links": [], "name": "CellCapacities", "namespace": "http://docs.openstack.org/compute/ext/cell_capacities/api/v1.1", "updated": "2013-05-27T00:00:00+00:00" }, { "alias": "os-cells", "description": "Enables cells-related functionality such as adding neighbor cells,\n listing neighbor cells, and getting the capabilities of the local cell.\n ", "links": [], "name": "Cells", "namespace": "http://docs.openstack.org/compute/ext/cells/api/v1.1", "updated": "2013-05-14T00:00:00+00:00" }, { "alias": "os-certificates", "description": "Certificates support.", "links": [], "name": "Certificates", "namespace": "http://docs.openstack.org/compute/ext/certificates/api/v1.1", "updated": "2012-01-19T00:00:00+00:00" }, { "alias": "os-cloudpipe", "description": "Adds actions to create cloudpipe instances.\n\n When running with the Vlan network mode, you need a mechanism to route\n from the public Internet to your vlans. This mechanism is known as a\n cloudpipe.\n\n At the time of creating this class, only OpenVPN is supported. Support for\n a SSH Bastion host is forthcoming.\n ", "links": [], "name": "Cloudpipe", "namespace": "http://docs.openstack.org/compute/ext/cloudpipe/api/v1.1", "updated": "2011-12-16T00:00:00+00:00" }, { "alias": "os-cloudpipe-update", "description": "Adds the ability to set the vpn ip/port for cloudpipe instances.", "links": [], "name": "CloudpipeUpdate", "namespace": "http://docs.openstack.org/compute/ext/cloudpipe-update/api/v2", "updated": "2012-11-14T00:00:00+00:00" }, { "alias": "os-config-drive", "description": "Config Drive Extension.", "links": [], "name": "ConfigDrive", "namespace": "http://docs.openstack.org/compute/ext/config_drive/api/v1.1", "updated": "2012-07-16T00:00:00+00:00" }, { "alias": "os-console-output", "description": "Console log output support, with tailing ability.", "links": [], "name": "ConsoleOutput", "namespace": "http://docs.openstack.org/compute/ext/os-console-output/api/v2", "updated": "2011-12-08T00:00:00+00:00" }, { "alias": "os-consoles", "description": "Interactive Console support.", "links": [], "name": "Consoles", "namespace": "http://docs.openstack.org/compute/ext/os-consoles/api/v2", "updated": "2011-12-23T00:00:00+00:00" }, { "alias": "os-create-server-ext", "description": "Extended support to the Create Server v1.1 API.", "links": [], "name": "Createserverext", "namespace": "http://docs.openstack.org/compute/ext/createserverext/api/v1.1", "updated": "2011-07-19T00:00:00+00:00" }, { "alias": "os-deferred-delete", "description": "Instance deferred delete.", "links": [], "name": "DeferredDelete", "namespace": "http://docs.openstack.org/compute/ext/deferred-delete/api/v1.1", "updated": "2011-09-01T00:00:00+00:00" }, { "alias": "os-evacuate", "description": "Enables server evacuation.", "links": [], "name": "Evacuate", "namespace": "http://docs.openstack.org/compute/ext/evacuate/api/v2", "updated": "2013-01-06T00:00:00+00:00" }, { "alias": "os-extended-floating-ips", "description": "Adds optional fixed_address to the add floating IP command.", "links": [], "name": "ExtendedFloatingIps", "namespace": "http://docs.openstack.org/compute/ext/extended_floating_ips/api/v2", "updated": "2013-04-19T00:00:00+00:00" }, { "alias": "os-extended-quotas", "description": "Adds ability for admins to delete quota\n and optionally force the update Quota command.\n ", "links": [], "name": "ExtendedQuotas", "namespace": "http://docs.openstack.org/compute/ext/extended_quotas/api/v1.1", "updated": "2013-06-09T00:00:00+00:00" }, { "alias": "os-extended-hypervisors", "description": "Extended hypervisors support.", "links": [], "name": "ExtendedHypervisors", "namespace": "http://docs.openstack.org/compute/ext/extended_hypervisors/api/v1.1", "updated": "2013-10-21T00:00:00-00:00" }, { "alias": "os-extended-services", "description": "Extended services support.", "links": [], "name": "ExtendedServices", "namespace": "http://docs.openstack.org/compute/ext/extended_services/api/v2", "updated": "2013-05-17T00:00:00-00:00" }, { "alias": "os-extended-volumes", "description": "Extended Volumes support.", "links": [], "name": "ExtendedVolumes", "namespace": "http://docs.openstack.org/compute/ext/extended_volumes/api/v1.1", "updated": "2013-06-07T00:00:00+00:00" }, { "alias": "os-fixed-ips", "description": "Fixed IPs support.", "links": [], "name": "FixedIPs", "namespace": "http://docs.openstack.org/compute/ext/fixed_ips/api/v2", "updated": "2012-10-18T13:25:27-06:00" }, { "alias": "os-flavor-access", "description": "Flavor access support.", "links": [], "name": "FlavorAccess", "namespace": "http://docs.openstack.org/compute/ext/flavor_access/api/v2", "updated": "2012-08-01T00:00:00+00:00" }, { "alias": "os-flavor-extra-specs", "description": "Instance type (flavor) extra specs.", "links": [], "name": "FlavorExtraSpecs", "namespace": "http://docs.openstack.org/compute/ext/flavor_extra_specs/api/v1.1", "updated": "2011-06-23T00:00:00+00:00" }, { "alias": "os-flavor-manage", "description": "\n Flavor create/delete API support\n ", "links": [], "name": "FlavorManage", "namespace": "http://docs.openstack.org/compute/ext/flavor_manage/api/v1.1", "updated": "2012-01-19T00:00:00+00:00" }, { "alias": "os-flavor-rxtx", "description": "Support to show the rxtx status of a flavor.", "links": [], "name": "FlavorRxtx", "namespace": "http://docs.openstack.org/compute/ext/flavor_rxtx/api/v1.1", "updated": "2012-08-29T00:00:00+00:00" }, { "alias": "os-flavor-swap", "description": "Support to show the swap status of a flavor.", "links": [], "name": "FlavorSwap", "namespace": "http://docs.openstack.org/compute/ext/flavor_swap/api/v1.1", "updated": "2012-08-29T00:00:00+00:00" }, { "alias": "os-floating-ip-dns", "description": "Floating IP DNS support.", "links": [], "name": "FloatingIpDns", "namespace": "http://docs.openstack.org/ext/floating_ip_dns/api/v1.1", "updated": "2011-12-23T00:00:00+00:00" }, { "alias": "os-floating-ip-pools", "description": "Floating IPs support.", "links": [], "name": "FloatingIpPools", "namespace": "http://docs.openstack.org/compute/ext/floating_ip_pools/api/v1.1", "updated": "2012-01-04T00:00:00+00:00" }, { "alias": "os-floating-ips", "description": "Floating IPs support.", "links": [], "name": "FloatingIps", "namespace": "http://docs.openstack.org/compute/ext/floating_ips/api/v1.1", "updated": "2011-06-16T00:00:00+00:00" }, { "alias": "os-floating-ips-bulk", "description": "Bulk handling of Floating IPs.", "links": [], "name": "FloatingIpsBulk", "namespace": "http://docs.openstack.org/compute/ext/floating_ips_bulk/api/v2", "updated": "2012-10-29T13:25:27-06:00" }, { "alias": "os-fping", "description": "Fping Management Extension.", "links": [], "name": "Fping", "namespace": "http://docs.openstack.org/compute/ext/fping/api/v1.1", "updated": "2012-07-06T00:00:00+00:00" }, { "alias": "os-hide-server-addresses", "description": "Support hiding server addresses in certain states.", "links": [], "name": "HideServerAddresses", "namespace": "http://docs.openstack.org/compute/ext/hide_server_addresses/api/v1.1", "updated": "2012-12-11T00:00:00+00:00" }, { "alias": "os-hosts", "description": "Admin-only host administration.", "links": [], "name": "Hosts", "namespace": "http://docs.openstack.org/compute/ext/hosts/api/v1.1", "updated": "2011-06-29T00:00:00+00:00" }, { "alias": "os-hypervisors", "description": "Admin-only hypervisor administration.", "links": [], "name": "Hypervisors", "namespace": "http://docs.openstack.org/compute/ext/hypervisors/api/v1.1", "updated": "2012-06-21T00:00:00+00:00" }, { "alias": "os-instance-actions", "description": "View a log of actions and events taken on an instance.", "links": [], "name": "InstanceActions", "namespace": "http://docs.openstack.org/compute/ext/instance-actions/api/v1.1", "updated": "2013-02-08T00:00:00+00:00" }, { "alias": "os-server-external-events", "description": "Server External Event Triggers.", "links": [], "name": "ServerExternalEvents", "namespace": "http://docs.openstack.org/compute/ext/server-external-events/api/v2", "updated": "2014-02-18T00:00:00-00:00" }, { "alias": "os-server-groups", "description": "Server group support.", "links": [], "name": "ServerGroups", "namespace": "http://docs.openstack.org/compute/ext/servergroups/api/v2", "updated": "2013-06-01T00:00:00+00:00" }, { "alias": "os-instance_usage_audit_log", "description": "Admin-only Task Log Monitoring.", "links": [], "name": "OSInstanceUsageAuditLog", "namespace": "http://docs.openstack.org/ext/services/api/v1.1", "updated": "2012-07-06T01:00:00+00:00" }, { "alias": "os-keypairs", "description": "Keypair Support.", "links": [], "name": "Keypairs", "namespace": "http://docs.openstack.org/compute/ext/keypairs/api/v1.1", "updated": "2011-08-08T00:00:00+00:00" }, { "alias": "os-migrations", "description": "Provide data on migrations.", "links": [], "name": "Migrations", "namespace": "http://docs.openstack.org/compute/ext/migrations/api/v2.0", "updated": "2013-05-30T00:00:00+00:00" }, { "alias": "os-multiple-create", "description": "Allow multiple create in the Create Server v1.1 API.", "links": [], "name": "MultipleCreate", "namespace": "http://docs.openstack.org/compute/ext/multiplecreate/api/v1.1", "updated": "2012-08-07T00:00:00+00:00" }, { "alias": "os-networks", "description": "Admin-only Network Management Extension.", "links": [], "name": "Networks", "namespace": "http://docs.openstack.org/compute/ext/os-networks/api/v1.1", "updated": "2011-12-23T00:00:00+00:00" }, { "alias": "os-networks-associate", "description": "Network association support.", "links": [], "name": "NetworkAssociationSupport", "namespace": "http://docs.openstack.org/compute/ext/networks_associate/api/v2", "updated": "2012-11-19T00:00:00+00:00" }, { "alias": "os-preserve-ephemeral-rebuild", "description": "Allow preservation of the ephemeral partition on rebuild.", "links": [], "name": "PreserveEphemeralOnRebuild", "namespace": "http://docs.openstack.org/compute/ext/preserve_ephemeral_rebuild/api/v2", "updated": "2013-12-17T00:00:00+00:00" }, { "alias": "os-quota-sets", "description": "Quotas management support.", "links": [], "name": "Quotas", "namespace": "http://docs.openstack.org/compute/ext/quotas-sets/api/v1.1", "updated": "2011-08-08T00:00:00+00:00" }, { "alias": "os-rescue", "description": "Instance rescue mode.", "links": [], "name": "Rescue", "namespace": "http://docs.openstack.org/compute/ext/rescue/api/v1.1", "updated": "2011-08-18T00:00:00+00:00" }, { "alias": "os-security-group-default-rules", "description": "Default rules for security group support.", "links": [], "name": "SecurityGroupDefaultRules", "namespace": "http://docs.openstack.org/compute/ext/securitygroupdefaultrules/api/v1.1", "updated": "2013-02-05T00:00:00+00:00" }, { "alias": "os-security-groups", "description": "Security group support.", "links": [], "name": "SecurityGroups", "namespace": "http://docs.openstack.org/compute/ext/securitygroups/api/v1.1", "updated": "2013-05-28T00:00:00+00:00" }, { "alias": "os-server-diagnostics", "description": "Allow Admins to view server diagnostics through server action.", "links": [], "name": "ServerDiagnostics", "namespace": "http://docs.openstack.org/compute/ext/server-diagnostics/api/v1.1", "updated": "2011-12-21T00:00:00+00:00" }, { "alias": "os-server-password", "description": "Server password support.", "links": [], "name": "ServerPassword", "namespace": "http://docs.openstack.org/compute/ext/server-password/api/v2", "updated": "2012-11-29T00:00:00+00:00" }, { "alias": "os-server-start-stop", "description": "Start/Stop instance compute API support.", "links": [], "name": "ServerStartStop", "namespace": "http://docs.openstack.org/compute/ext/servers/api/v1.1", "updated": "2012-01-23T00:00:00+00:00" }, { "alias": "os-services", "description": "Services support.", "links": [], "name": "Services", "namespace": "http://docs.openstack.org/compute/ext/services/api/v2", "updated": "2012-10-28T00:00:00-00:00" }, { "alias": "os-shelve", "description": "Instance shelve mode.", "links": [], "name": "Shelve", "namespace": "http://docs.openstack.org/compute/ext/shelve/api/v1.1", "updated": "2013-04-06T00:00:00+00:00" }, { "alias": "os-simple-tenant-usage", "description": "Simple tenant usage extension.", "links": [], "name": "SimpleTenantUsage", "namespace": "http://docs.openstack.org/compute/ext/os-simple-tenant-usage/api/v1.1", "updated": "2011-08-19T00:00:00+00:00" }, { "alias": "os-tenant-networks", "description": "Tenant-based Network Management Extension.", "links": [], "name": "OSTenantNetworks", "namespace": "http://docs.openstack.org/compute/ext/os-tenant-networks/api/v2", "updated": "2012-03-07T09:46:43-05:00" }, { "alias": "os-used-limits", "description": "Provide data on limited resources that are being used.", "links": [], "name": "UsedLimits", "namespace": "http://docs.openstack.org/compute/ext/used_limits/api/v1.1", "updated": "2012-07-13T00:00:00+00:00" }, { "alias": "os-used-limits-for-admin", "description": "Provide data to admin on limited resources used by other tenants.", "links": [], "name": "UsedLimitsForAdmin", "namespace": "http://docs.openstack.org/compute/ext/used_limits_for_admin/api/v1.1", "updated": "2013-05-02T00:00:00+00:00" }, { "alias": "os-user-data", "description": "Add user_data to the Create Server v1.1 API.", "links": [], "name": "UserData", "namespace": "http://docs.openstack.org/compute/ext/userdata/api/v1.1", "updated": "2012-08-07T00:00:00+00:00" }, { "alias": "os-user-quotas", "description": "Project user quota support.", "links": [], "name": "UserQuotas", "namespace": "http://docs.openstack.org/compute/ext/user_quotas/api/v1.1", "updated": "2013-07-18T00:00:00+00:00" }, { "alias": "os-virtual-interfaces", "description": "Virtual interface support.", "links": [], "name": "VirtualInterfaces", "namespace": "http://docs.openstack.org/compute/ext/virtual_interfaces/api/v1.1", "updated": "2011-08-17T00:00:00+00:00" }, { "alias": "os-volume-attachment-update", "description": "Support for updating a volume attachment.", "links": [], "name": "VolumeAttachmentUpdate", "namespace": "http://docs.openstack.org/compute/ext/os-volume-attachment-update/api/v2", "updated": "2013-06-20T00:00:00-00:00" }, { "alias": "os-volumes", "description": "Volumes support.", "links": [], "name": "Volumes", "namespace": "http://docs.openstack.org/compute/ext/volumes/api/v1.1", "updated": "2011-03-25T00:00:00+00:00" }, { "alias": "os-extended-services-delete", "description": "Services deletion support.", "links": [], "name": "ExtendedServicesDelete", "namespace": "http://docs.openstack.org/compute/ext/extended_services_delete/api/v2", "updated": "2013-12-10T00:00:00+00:00" }, { "alias": "os-console-auth-tokens", "description": "Console token authentication support.", "links": [], "name": "ConsoleAuthTokens", "namespace": "http://docs.openstack.org/compute/ext/consoles-auth-tokens/api/v2", "updated": "2013-08-13T00:00:00+00:00" } ] } nova-2014.1/doc/api_samples/all_extensions/extensions-get-resp.xml0000664000175400017540000005205312323721476026454 0ustar jenkinsjenkins00000000000000 Multiple network support. Disk Management Extension. Extended Server Attributes support. Adds image size to image listings. Adds type parameter to the ip list. Adds mac address parameter to the ip list. Extended Server Attributes support. Extended Status support. Adds network id parameter to the virtual interface list. Support to show the disabled status of a flavor. Provide additional data for flavors. Pass arbitrary key/value pairs to the scheduler. Adds launched_at and terminated_at on Servers. Enable admin-only server actions Actions include: pause, unpause, suspend, resume, migrate, resetNetwork, injectNetworkInfo, lock, unlock, createBackup Agents support. Admin-only aggregate administration. Assisted volume snapshots. Attach interface support. 1. Add availability_zone to the Create Server v1.1 API. 2. Add availability zones describing. Add extended status in Baremetal Nodes v2 API. Admin-only bare-metal node administration. Allow boot with the new BDM data format. Adding functionality to get cell capacities. Enables cells-related functionality such as adding neighbor cells, listing neighbor cells, and getting the capabilities of the local cell. Certificates support. Adds actions to create cloudpipe instances. When running with the Vlan network mode, you need a mechanism to route from the public Internet to your vlans. This mechanism is known as a cloudpipe. At the time of creating this class, only OpenVPN is supported. Support for a SSH Bastion host is forthcoming. Adds the ability to set the vpn ip/port for cloudpipe instances. Config Drive Extension. Console log output support, with tailing ability. Interactive Console support. Extended support to the Create Server v1.1 API. Instance deferred delete. Enables server evacuation. Adds optional fixed_address to the add floating IP command. Adds ability for admins to delete quota and optionally force the update Quota command. Extended services support. Extended hypervisors support. Extended Volumes support. Fixed IPs support. Flavor access support. Instance type (flavor) extra specs. Flavor create/delete API support Support to show the rxtx status of a flavor. Support to show the swap status of a flavor. Floating IP DNS support. Floating IPs support. Floating IPs support. Bulk handling of Floating IPs. Fping Management Extension. Support hiding server addresses in certain states. Admin-only host administration. Admin-only hypervisor administration. View a log of actions and events taken on an instance. Server External Event Triggers. Server group support. Admin-only Task Log Monitoring. Keypair Support. Provide data on migrations. Allow multiple create in the Create Server v1.1 API. Admin-only Network Management Extension. Network association support. Allow preservation of the ephemeral partition on rebuild. Quotas management support. Instance rescue mode. Default rules for security group support. Security group support. Allow Admins to view server diagnostics through server action. Server password support. Start/Stop instance compute API support. Services support. Instance shelve mode. Simple tenant usage extension. Tenant-based Network Management Extension. Provide data on limited resources that are being used. Provide data to admin on limited resources used by other tenants. Add user_data to the Create Server v1.1 API. Project user quota support. Virtual interface support. Support for updating a volume attachment. Volumes support. Services deletion support. Console token authentication support. nova-2014.1/doc/api_samples/all_extensions/flavors-list-resp.xml0000664000175400017540000000235112323721476026121 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/all_extensions/server-action-revertresize.xml0000664000175400017540000000015512323721476030035 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/servers-list-resp.xml0000664000175400017540000000074412323721476023113 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-SRV-USG/0000775000175400017540000000000012323722546020377 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-SRV-USG/server-post-resp.json0000664000175400017540000000075312323721476024540 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "8dRuZpE2Pr7z", "id": "cbdfb561-b94b-4b98-bb22-7d62575114b1", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/cbdfb561-b94b-4b98-bb22-7d62575114b1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/cbdfb561-b94b-4b98-bb22-7d62575114b1", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-SRV-USG/server-post-req.json0000664000175400017540000000155212323721476024354 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-SRV-USG/server-get-resp.json0000664000175400017540000000331312323721476024325 0ustar jenkinsjenkins00000000000000{ "server": { "OS-SRV-USG:launched_at": "2013-05-02T19:26:38.326387", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-05-02T19:26:37Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "1127931217d16e2c8b1e1ec54de06f17805bfaadc0d36525879450d1", "id": "cbdfb561-b94b-4b98-bb22-7d62575114b1", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/cbdfb561-b94b-4b98-bb22-7d62575114b1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/cbdfb561-b94b-4b98-bb22-7d62575114b1", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-05-02T19:26:38Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/OS-SRV-USG/server-post-req.xml0000664000175400017540000000164712323721476024210 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/OS-SRV-USG/server-get-resp.xml0000664000175400017540000000246012323721476024156 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-SRV-USG/server-post-resp.xml0000664000175400017540000000072712323721476024370 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-SRV-USG/servers-detail-resp.xml0000664000175400017540000000255112323721476025025 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-SRV-USG/servers-detail-resp.json0000664000175400017540000000366012323721476025200 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-SRV-USG:launched_at": "2013-05-02T19:26:45.066375", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-05-02T19:26:44Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "15ac731a430372d42a333d9d316ff2af70e0bf5eee523a0bc43779f5", "id": "fe828a86-aad7-464b-8995-280bedf4fa9b", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/fe828a86-aad7-464b-8995-280bedf4fa9b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/fe828a86-aad7-464b-8995-280bedf4fa9b", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-05-02T19:26:45Z", "user_id": "fake" } ] }nova-2014.1/doc/api_samples/os-server-external-events/0000775000175400017540000000000012323722546024021 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-server-external-events/server-post-resp.json0000664000175400017540000000075312323721476030162 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "5Qu3rYANhmWy", "id": "a9c72a94-37d8-4aff-8fa3-2ce4ded4bbd4", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/a9c72a94-37d8-4aff-8fa3-2ce4ded4bbd4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/a9c72a94-37d8-4aff-8fa3-2ce4ded4bbd4", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-server-external-events/server-post-req.json0000664000175400017540000000155212323721476027776 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-server-external-events/server-post-req.xml0000664000175400017540000000164712323721476027632 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-server-external-events/event-create-req.json0000664000175400017540000000027012323721476030063 0ustar jenkinsjenkins00000000000000{ "events": [ { "name": "test-event", "tag": "foo", "status": "completed", "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3" } ] } nova-2014.1/doc/api_samples/os-server-external-events/event-create-resp.xml0000664000175400017540000000037212323721476030077 0ustar jenkinsjenkins00000000000000 completed foo network-changed 8544aae8-a2e0-4429-8537-d3aaeaf55dc2 200 nova-2014.1/doc/api_samples/os-server-external-events/server-post-resp.xml0000664000175400017540000000072712323721476030012 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-server-external-events/event-create-resp.json0000664000175400017540000000035412323721476030250 0ustar jenkinsjenkins00000000000000{ "events": [ { "code": 200, "name": "network-changed", "server_uuid": "b376b585-848e-4fc3-a000-56635d645194", "status": "completed", "tag": "foo" } ] }nova-2014.1/doc/api_samples/os-server-external-events/event-create-req.xml0000664000175400017540000000036112323721476027713 0ustar jenkinsjenkins00000000000000 test-event foo completed 7dd63360-256e-4304-ba46-7d87311fbf33 nova-2014.1/doc/api_samples/image-metadata-post-req.json0000664000175400017540000000013112323721476024251 0ustar jenkinsjenkins00000000000000{ "metadata": { "kernel_id": "False", "Label": "UpdatedImage" } }nova-2014.1/doc/api_samples/OS-EXT-AZ/0000775000175400017540000000000012323722546020241 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/OS-EXT-AZ/server-post-resp.json0000664000175400017540000000075312323721476024402 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "MgXXGVx9ctdF", "id": "75a88708-cecb-459c-8c3d-b7c93e67edbe", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/75a88708-cecb-459c-8c3d-b7c93e67edbe", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/75a88708-cecb-459c-8c3d-b7c93e67edbe", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/OS-EXT-AZ/server-post-req.json0000664000175400017540000000155212323721476024216 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/OS-EXT-AZ/server-get-resp.json0000664000175400017540000000322112323721476024165 0ustar jenkinsjenkins00000000000000{ "server": { "OS-EXT-AZ:availability_zone": "nova", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-01-30T13:38:47Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "d38ea49a033b0efaf80c165de63f4805c886dfb94dc0fe731227eccb", "id": "fb7babfd-e1a1-4add-90e6-3558180983c7", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/fb7babfd-e1a1-4add-90e6-3558180983c7", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/fb7babfd-e1a1-4add-90e6-3558180983c7", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-01-30T13:38:49Z", "user_id": "fake" } } nova-2014.1/doc/api_samples/OS-EXT-AZ/server-post-req.xml0000664000175400017540000000073012323721476024042 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-AZ/server-get-resp.xml0000664000175400017540000000241312323721476024016 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-AZ/server-post-resp.xml0000664000175400017540000000072712323721476024232 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/OS-EXT-AZ/servers-detail-resp.xml0000664000175400017540000000250412323721476024665 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/OS-EXT-AZ/servers-detail-resp.json0000664000175400017540000000356212323721476025043 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-EXT-AZ:availability_zone": "nova", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2013-01-30T13:26:51Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "60c988a84401fa15888a32833e5848e9caa99a45778310ba7b363165", "id": "3dbf5b00-dabc-41ff-b6ab-4409568fae9d", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/3dbf5b00-dabc-41ff-b6ab-4409568fae9d", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/3dbf5b00-dabc-41ff-b6ab-4409568fae9d", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2013-01-30T13:26:52Z", "user_id": "fake" } ] } nova-2014.1/doc/api_samples/os-rescue/0000775000175400017540000000000012323722546020657 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-rescue/server-post-resp.json0000664000175400017540000000075312323721476025020 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "xjDVAYHmc34s", "id": "784f5005-bec9-4c22-8c42-5a7dcba88d82", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/784f5005-bec9-4c22-8c42-5a7dcba88d82", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/784f5005-bec9-4c22-8c42-5a7dcba88d82", "rel": "bookmark" } ] } }nova-2014.1/doc/api_samples/os-rescue/server-get-resp-rescue.xml0000664000175400017540000000220012323721476025712 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-rescue/server-post-req.json0000664000175400017540000000155212323721476024634 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "flavorRef" : "http://openstack.example.com/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } }nova-2014.1/doc/api_samples/os-rescue/server-rescue.json0000664000175400017540000000004312323721476024342 0ustar jenkinsjenkins00000000000000{ "adminPass": "MySecretPass" }nova-2014.1/doc/api_samples/os-rescue/server-post-req.xml0000664000175400017540000000164712323721476024470 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/doc/api_samples/os-rescue/server-rescue-req.xml0000664000175400017540000000020012323721476024751 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-rescue/server-unrescue-req.json0000664000175400017540000000003012323721476025466 0ustar jenkinsjenkins00000000000000{ "unrescue": null }nova-2014.1/doc/api_samples/os-rescue/server-get-resp-unrescue.xml0000664000175400017540000000221512323721476026263 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/doc/api_samples/os-rescue/server-unrescue-req.xml0000664000175400017540000000014512323721476025324 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-rescue/server-post-resp.xml0000664000175400017540000000072712323721476024650 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-rescue/server-rescue-req.json0000664000175400017540000000007512323721476025134 0ustar jenkinsjenkins00000000000000{ "rescue": { "adminPass": "MySecretPass" } }nova-2014.1/doc/api_samples/os-rescue/server-rescue.xml0000664000175400017540000000011212323721476024166 0ustar jenkinsjenkins00000000000000 MySecretPassnova-2014.1/doc/api_samples/os-rescue/server-get-resp-rescue.json0000664000175400017540000000311212323721476026066 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-09-19T09:22:27Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "c02c15d17499304e9893d9fc41c415f5096f8aa880bc651cac092650", "id": "7e21a264-6cc1-4d90-b7b5-f9f49cec3a85", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/7e21a264-6cc1-4d90-b7b5-f9f49cec3a85", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/7e21a264-6cc1-4d90-b7b5-f9f49cec3a85", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "status": "RESCUE", "tenant_id": "openstack", "updated": "2012-09-19T09:22:27Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/os-rescue/server-get-resp-unrescue.json0000664000175400017540000000314112323721476026433 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] }, "created": "2012-09-19T09:22:28Z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "a9410a6a8cb87328b1c43cda5c5a15fc860e977d14feb2c9528a2450", "id": "f1ec6ac3-5379-4cdc-af9a-6ddc29656e4f", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/f1ec6ac3-5379-4cdc-af9a-6ddc29656e4f", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/f1ec6ac3-5379-4cdc-af9a-6ddc29656e4f", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "2012-09-19T09:22:28Z", "user_id": "fake" } }nova-2014.1/doc/api_samples/image-metadata-post-resp.json0000664000175400017540000000030112323721476024432 0ustar jenkinsjenkins00000000000000{ "metadata": { "Label": "UpdatedImage", "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "False", "ramdisk_id": "nokernel" } }nova-2014.1/doc/api_samples/flavors-list-resp.xml0000664000175400017540000000235112323721476023072 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hosts/0000775000175400017540000000000012323722546020531 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-hosts/host-get-reboot.xml0000664000175400017540000000015412323721476024276 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hosts/host-get-resp.xml0000664000175400017540000000113412323721476023754 0ustar jenkinsjenkins00000000000000 (total) 8192 ecf3458ac6bf4a299cc2e0efa740f426 1 1028 (used_now) 512 ecf3458ac6bf4a299cc2e0efa740f426 0 0 (used_max) 0 ecf3458ac6bf4a299cc2e0efa740f426 0 0 nova-2014.1/doc/api_samples/os-hosts/host-get-shutdown.xml0000664000175400017540000000015612323721476024661 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hosts/hosts-list-resp.xml0000664000175400017540000000124612323721476024337 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hosts/host-get-shutdown.json0000664000175400017540000000012212323721476025023 0ustar jenkinsjenkins00000000000000{ "host": "d2576862a2144ee6ad37d9e1938460a2", "power_action": "shutdown" }nova-2014.1/doc/api_samples/os-hosts/host-get-reboot.json0000664000175400017540000000012012323721476024440 0ustar jenkinsjenkins00000000000000{ "host": "066bf157ab50481d8c607cfe584b2230", "power_action": "reboot" }nova-2014.1/doc/api_samples/os-hosts/host-put-maintenance-req.json0000664000175400017540000000007512323721476026257 0ustar jenkinsjenkins00000000000000{ "status": "enable", "maintenance_mode": "disable" }nova-2014.1/doc/api_samples/os-hosts/host-get-startup.json0000664000175400017540000000012112323721476024651 0ustar jenkinsjenkins00000000000000{ "host": "57f5de2fa5b44f14974a4f50b9ffcbf8", "power_action": "startup" }nova-2014.1/doc/api_samples/os-hosts/hosts-list-resp.json0000664000175400017540000000203412323721476024504 0ustar jenkinsjenkins00000000000000{ "hosts": [ { "host_name": "787f4f6dda1b409bb8b2f9082349690e", "service": "compute", "zone": "nova" }, { "host_name": "a98b433151084aee8b1a986e28823b36", "service": "cert", "zone": "internal" }, { "host_name": "c56158d13a884a87abf9171efb7de9d8", "service": "network", "zone": "internal" }, { "host_name": "81d5cdcda0014918b3ebd3503a2e5c9a", "service": "scheduler", "zone": "internal" }, { "host_name": "6e48bfe1a3304b7b86154326328750ae", "service": "conductor", "zone": "internal" }, { "host_name": "39f55087a1024d1380755951c945ca69", "service": "cells", "zone": "internal" }, { "host_name": "7a9a6cb4701f4dee9048fe0bc25d0ee5", "service": "consoleauth", "zone": "internal" } ] } nova-2014.1/doc/api_samples/os-hosts/host-get-startup.xml0000664000175400017540000000015512323721476024507 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hosts/host-put-maintenance-req.xml0000664000175400017540000000021112323721476026076 0ustar jenkinsjenkins00000000000000 enable disable nova-2014.1/doc/api_samples/os-hosts/host-get-resp.json0000664000175400017540000000140612323721476024127 0ustar jenkinsjenkins00000000000000{ "host": [ { "resource": { "cpu": 1, "disk_gb": 1028, "host": "5ca60c6792a1442f9471ff575443f94d", "memory_mb": 8192, "project": "(total)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "5ca60c6792a1442f9471ff575443f94d", "memory_mb": 512, "project": "(used_now)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "5ca60c6792a1442f9471ff575443f94d", "memory_mb": 0, "project": "(used_max)" } } ] }nova-2014.1/doc/api_samples/os-hosts/host-put-maintenance-resp.xml0000664000175400017540000000021212323721476026261 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-hosts/host-put-maintenance-resp.json0000664000175400017540000000016612323721476026442 0ustar jenkinsjenkins00000000000000{ "host": "0738dca90a8c43fdadd0be28715520e2", "maintenance_mode": "off_maintenance", "status": "enabled" }nova-2014.1/doc/api_samples/os-fixed-ips/0000775000175400017540000000000012323722546021261 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-fixed-ips/fixedips-get-resp.json0000664000175400017540000000022712323721476025515 0ustar jenkinsjenkins00000000000000{ "fixed_ip": { "address": "192.168.1.1", "cidr": "192.168.1.0/24", "host": "host", "hostname": "openstack" } }nova-2014.1/doc/api_samples/os-fixed-ips/fixedip-post-req.json0000664000175400017540000000003112323721476025347 0ustar jenkinsjenkins00000000000000{ "reserve": "None" }nova-2014.1/doc/api_samples/os-fixed-ips/fixedip-post-req.xml0000664000175400017540000000007612323721476025207 0ustar jenkinsjenkins00000000000000 Nonenova-2014.1/doc/api_samples/os-fixed-ips/fixedips-get-resp.xml0000664000175400017540000000026112323721476025342 0ustar jenkinsjenkins00000000000000 192.168.1.0/24 openstack host
192.168.1.1
nova-2014.1/doc/api_samples/images-details-resp.json0000664000175400017540000001763312323721476023517 0ustar jenkinsjenkins00000000000000{ "images": [ { "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "http://openstack.example.com/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "http://openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "http://glance.openstack.example.com/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] }nova-2014.1/doc/api_samples/image-meta-key-put-resp.json0000664000175400017540000000007312323721476024217 0ustar jenkinsjenkins00000000000000{ "meta": { "auto_disk_config": "False" } }nova-2014.1/doc/api_samples/os-cloudpipe/0000775000175400017540000000000012323722546021355 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml0000664000175400017540000000020112323721476026342 0ustar jenkinsjenkins00000000000000 1a17f615-343b-430f-976a-457c029eddb7 nova-2014.1/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.json0000664000175400017540000000007512323721476026524 0ustar jenkinsjenkins00000000000000{ "instance_id": "1e9b8425-34af-488e-b969-4d46f4a6382e" }nova-2014.1/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml0000664000175400017540000000065212323721476025670 0ustar jenkinsjenkins00000000000000 127.0.0.1 2012-09-25T18:18:49Z 22 down 1a17f615-343b-430f-976a-457c029eddb7 192.168.0.3 cloudpipe-6405f2ca-caf9-493b-a1f6-e55f595d75ab nova-2014.1/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.json0000664000175400017540000000014312323721476026336 0ustar jenkinsjenkins00000000000000{ "cloudpipe": { "project_id": "cloudpipe-059f21e3-c20e-4efc-9e7a-eba2ab3c6f9a" } }nova-2014.1/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.xml0000664000175400017540000000011512323721476026164 0ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.json0000664000175400017540000000057512323721476026045 0ustar jenkinsjenkins00000000000000{ "cloudpipes": [ { "created_at": "2012-11-27T17:18:01Z", "instance_id": "27deecdb-baa3-4a26-9c82-32994b815b01", "internal_ip": "192.168.0.3", "project_id": "cloudpipe-fa1765bd-a352-49c7-a6b7-8ee108a3cb0c", "public_ip": "127.0.0.1", "public_port": 22, "state": "down" } ] }nova-2014.1/doc/api_samples/os-extended-quotas/0000775000175400017540000000000012323722546022503 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-extended-quotas/quotas-update-post-req.json0000664000175400017540000000011612323721476027741 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 45 } } nova-2014.1/doc/api_samples/os-extended-quotas/quotas-update-post-req.xml0000664000175400017540000000020212323721476027564 0ustar jenkinsjenkins00000000000000 True 45 nova-2014.1/doc/api_samples/os-extended-quotas/quotas-update-post-resp.json0000664000175400017540000000060512323721476030126 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 45, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/doc/api_samples/os-extended-quotas/quotas-update-post-resp.xml0000664000175400017540000000100212323721476027745 0ustar jenkinsjenkins00000000000000 20 -1 10 10240 255 5 45 100 128 51200 20 10 nova-2014.1/doc/api_samples/server-action-revertresize.xml0000664000175400017540000000015512323721476025006 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/server-ips-resp.json0000664000175400017540000000023312323721476022712 0ustar jenkinsjenkins00000000000000{ "addresses": { "private": [ { "addr": "192.168.0.3", "version": 4 } ] } }nova-2014.1/doc/api_samples/os-cells/0000775000175400017540000000000012323722546020473 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/api_samples/os-cells/cells-list-empty-resp.xml0000664000175400017540000000014712323721476025376 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-cells/cells-list-empty-resp.json0000664000175400017540000000002312323721476025540 0ustar jenkinsjenkins00000000000000{ "cells": [] }nova-2014.1/doc/api_samples/os-cells/cells-list-resp.json0000664000175400017540000000160412323721476024412 0ustar jenkinsjenkins00000000000000{ "cells": [ { "name": "cell1", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username1" }, { "name": "cell3", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username3" }, { "name": "cell5", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username5" }, { "name": "cell2", "rpc_host": null, "rpc_port": null, "type": "parent", "username": "username2" }, { "name": "cell4", "rpc_host": null, "rpc_port": null, "type": "parent", "username": "username4" } ] }nova-2014.1/doc/api_samples/os-cells/cells-get-resp.json0000664000175400017540000000023512323721476024215 0ustar jenkinsjenkins00000000000000{ "cell": { "name": "cell3", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username3" } }nova-2014.1/doc/api_samples/os-cells/cells-list-resp.xml0000664000175400017540000000105612323721476024242 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/os-cells/cells-get-resp.xml0000664000175400017540000000026512323721476024047 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/api_samples/limit-get-resp.xml0000664000175400017540000000310012323721476022331 0ustar jenkinsjenkins00000000000000 nova-2014.1/doc/source/0000775000175400017540000000000012323722546015755 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/source/conf.py0000664000175400017540000002273512323721510017253 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # nova documentation build configuration file, created by # sphinx-quickstart on Sat May 1 15:17:47 2010. # # This file is execfile()d with the current directory set to # its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys import os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../../')) sys.path.insert(0, os.path.abspath('../')) sys.path.insert(0, os.path.abspath('./')) # -- General configuration ---------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'ext.nova_todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig', 'sphinx.ext.graphviz', 'oslosphinx', ] todo_include_todos = True # Add any paths that contain templates here, relative to this directory. # Changing the path so that the Hudson build output contains GA code # and the source docs do not contain the code so local, offline sphinx builds # are "clean." templates_path = [] if os.getenv('HUDSON_PUBLISH_DOCS'): templates_path = ['_ga', '_templates'] else: templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'nova' copyright = u'2010-present, OpenStack Foundation' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # from nova.version import version_info # The full version, including alpha/beta/rc tags. release = version_info.release_string() # The short X.Y version. version = version_info.version_string() # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. unused_docs = [ 'api_ext/rst_extension_template', 'vmwareapi_readme', 'installer', ] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use # for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). add_module_names = False # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. modindex_common_prefix = ['nova.'] # -- Options for man page output ---------------------------------------------- # Grouping the document tree for man pages. # List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual' man_pages = [ ('man/nova-all', 'nova-all', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-api-ec2', 'nova-api-ec2', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-api-metadata', 'nova-api-metadata', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-api-os-compute', 'nova-api-os-compute', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-api', 'nova-api', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-cert', 'nova-cert', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-compute', 'nova-compute', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-console', 'nova-console', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-consoleauth', 'nova-consoleauth', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-dhcpbridge', 'nova-dhcpbridge', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-manage', 'nova-manage', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-network', 'nova-network', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-novncproxy', 'nova-novncproxy', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-spicehtml5proxy', 'nova-spicehtml5proxy', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-objectstore', 'nova-objectstore', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-rootwrap', 'nova-rootwrap', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-rpc-zmq-receiver', 'nova-rpc-zmq-receiver', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-scheduler', 'nova-scheduler', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-xvpvncproxy', 'nova-xvpvncproxy', u'Cloud controller fabric', [u'OpenStack'], 1), ('man/nova-conductor', 'nova-conductor', u'Cloud controller fabric', [u'OpenStack'], 1), ] # -- Options for HTML output -------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. # html_theme_path = ["."] # html_theme = '_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' git_cmd = "git log --pretty=format:'%ad, commit %h' --date=local -n1" html_last_updated_fmt = os.popen(git_cmd).read() # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'novadoc' # -- Options for LaTeX output ------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass # [howto/manual]). latex_documents = [ ('index', 'Nova.tex', u'Nova Documentation', u'OpenStack Foundation', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'python': ('http://docs.python.org/', None), 'swift': ('http://swift.openstack.org', None)} nova-2014.1/doc/source/image_src/0000775000175400017540000000000012323722546017706 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/source/image_src/PowerStates.odp0000664000175400017540000005263412323721476022705 0ustar jenkinsjenkins00000000000000PK¤@3&¬¨//mimetypeapplication/vnd.oasis.opendocument.presentationPK¤@Configurations2/statusbar/PK¤@'Configurations2/accelerator/current.xmlPKPK¤@Configurations2/floater/PK¤@Configurations2/popupmenu/PK¤@Configurations2/progressbar/PK¤@Configurations2/toolpanel/PK¤@Configurations2/menubar/PK¤@Configurations2/toolbar/PK¤@Configurations2/images/Bitmaps/PK¤@ content.xmlí]ërä6v₫Ÿ§`ơ:©¤Ê¤ˆ oỀ¸Öv¶v«f¶œñÆÎŸ)ª›-q‡Mö’liä—Èϼ_$ï—&¨fKl-]e @đǃsÀ7ß}Ưʽ'~¾]!M_)^¸6~xûvơó§?¨öê»wÿô&Únưµw½‰Ö‡¦ê: SøW̉ar-î¾]âđ:r?¹Ư—\§ëëhï…y©ëjîk₫,q%IéâÈfyÔjñm$[øk¨ÛPßíƯÔo´âkà‡_̃®î̉t}uơđđ =-o¯ă8WünÑàu‘oˆk³¾̣=,¹BºÊóî¼Ô•mË[mRxØƯx±44nê¶zu{ d×eÄ”«¨Z¦Æ¯û[ivƯßöÀ¼¾sciñ̀uª-›_VƯÄwĂ¾›̀—x_³Ụ̂ï×’̃Ï÷~Å5VâíÊéP4‰×æÍîö®Ẳ.^ÜÏ*®%Ÿ8Œ«À=dĂé& 6½¸‰"•›¢T~»»lK_é"//ZKÀ> ƯбáÔy³ä 5œZ̃ó¾_₫”q÷Q̣ïïư/æ̉\ù膉¸X{7‘_½ơB/ö×oWq´sĂZ½Ÿ®a ºwcŸ…¬PÚ%Z—B#U˜¼Bz!fæöÓ2 Es₫Ë ÿóà†¿úÊGÊ=°y Éc’z»vsóûe£eeHöœ¢·3£;?U₫臉¶e{[WäèoßS¥wË]ô,ĂÉƠÆ–©ƯÆ¡§z^Ë3öyÏ7û~ji5¬eókfK ’jæó 'º§ù§O-Ơr4¹/ZCüỔG¼ÿ¥+zŸZ̃˜Î6}íSK_›©d[Ô®9I¶–Ú5†ÜỤ́-WjăkHe†À»÷‚L8Ư ƒ"n²ëPÿJü·TƠùvơÿû?Eó*•TÉË0Mà̃ÀÂe /Üxø˜ºñÇLj CâA]á&zPyÎ̀1T8ñ*ÀPăŸ9.Ç̃tø’½»†J½m{9¯!2Bbñëơ!D'DÈ~•“!„5ú*2'Cˆ¼J|¬éđy¥rÚ !úJå´3!B¯SN³‰ 2.KPWngºöUï^ƒ́ÆM´y,~TIß½áKœ,^],vfK«đ­̣µôÇbá”oQÈÖxf³‰@÷ê¢ê*«r}H 1jrçî½vE<|½X®-Î₫”ßñ7oW₫g¿÷‘ÓĂ?Ñ!kúYa±¸̀®˱ÅăøÅ¯|éœæ?YŸbÉŒnûŒơF¼ûmÓ ́ưñœ:Æ+ọ́{áÛK´/ÚyiüÈŸÎ6Å|A“tEW02ớoÆăꌽuꆷE\QƠoBû °Âï³âµj”̣_]ùoåÏœN­₫́"ÜÛE¸ÖEH¢‹p³‹*—¸“C3ÍJ™¡“Áz“æ°}ÿÜÿư:ơïó~aÙ̃MÑG·ÁÁS÷‘¦ c–ÍÑ&È$⮈kü²)±² ¢¦́ ÿ›]áwÅV¨: ”€§”µW×(ă¿Ozós₫ŒÖ_h¦yN¢ÔÇ2™€(T£†Ó`ÊđX>Ê cưDçv»Pe.T¡§SÅ\¤Q₫#£x¡ÉÉ4‰Â&¹(îâäHƒ•V¯ñ}̣÷ñ¸,«$*Y r`>óF‘.à"R-].Í®NsârÙgÜ«’´)³cQ%°y‡°˜˜́ɺJˆeª#]E"EáVÀ·¤çÍHœ&jøi¨‘§£f@+j8GêºĂPËR€jÎtLëC¦¸X…±‚˜Ó ™‚,GĐL¤$i6‘7&˜ík N%Ă¿?ø;[eăs™í­Ó©‚Á œ*ñ’ơÁÛ,Ly9¦ÔmM{¡bihz[ócí÷ SÎÏYÇ‘)Áª£A×-ƯK̉®£/Ô!ôLªÖ5{@WTJU2j—ƠK³T–°n7”rè)”r™R>lÉÈb6̉©`Ö2dlÑLĂä©ya6¬’ËBF{!Ó{ ­«’ÆüÄD£Aifß”˜ĐÆH¶œ|$óÔ¼°”1¯eÁi]K€Ù¶º̀æ6æfq#[Ă‘̉~*Z6nPIHA=:·É]×nÇhǦ¦Oí_¯¯¥5TăSj­©Y‹Êưâ*7̉%øg kHç¶4Ăn(Ưƒ KÆÓ¢s÷ K0z&[³)ªJK¤9¢[º$¦3næá'°dBÓBµÆVic>LjÈLzº̀”&­̣̀5-=}¤ÍmFPöQ¼ö^w„ÁlÈ ÓnO@îNu¿ ĐM¡IzໄbÅSÏLúá°¤ÙzKW謩 jf¤̣ăV"k̉hy\€öB߈–™" ¨‚nóà¦ÓT)˜>ưßzT©Sêư«ûÛÇEE»Øs[³Z˘X¯ë ù¨émê4ºPß:gEn(›5 ĐÓ-¢"f´" S–¢ºcÎÈNmü Ôæzú(Pûí₫§ƒÊ ›5,•Ăf " Zóµå‘:™¨ư©'c*Êß);NI&DwpWö¤ÑG`qÂÄ뉺 ± qÿ̃q#ª=́˜ƠëøĂƯK¨}£«ºơGoL¦,ƒÀ4€E¦{>"k¸‘áp†W´ E`Çgáöó‡W`™đló‡jÈiŪ/°ü…[?̃-öÏ3éê†FöŒư„°ŒÎ£Ñ363€œÂræg •#1©ZJaÚ2*á ŸqT‘¤ºí̀Ơ! ¨)“ÔưQ°cÏA’ØRĐ„SâX̀O( ©%ôơm uÁiôÂ9̣F5]oˉ5£L®o0ù¬Qü™7Ñ×ôJÊäñßŇ6Ê_?LÜNyü]ê%Ươ^5^ăªÄú¼¸W|¬ư¸£ îĐ \ç˜ù?%Iï¹9§ÔûC´Û¹aOÅ3Ç\G ơ#‹ïX`"́†1RÄ€7¦çzEÊ|r“/s“3C¸ÙÛ2Œ-Å»q,©m‹Dw‡±z÷3ó(;Ï {09¥̣0RRèD%a˜O_½Ÿ( i°/=»¢N©}ămưĐÛhS»Rª>æàn½ø[·Y¢¨,™årÜX]»APª[»hăo}/†ªT ÿQÍ$T7lRØ`Y„­ÀL—€†ƯC ‡µôæaÉ÷Êw[ ÿ3·íX́Â&Ñá…ÿ ö”!]ùUä¯ÈJ™đ¿%Êdn^N¤¿ÛÚđ¿“•×~)D́«±Œu”çƠÂ=Ö4D²‹¼¿få³X#‘‘•-^®±æ!‹[py₫ư >Íʼn¾ßŸ2â`₫vơ®¨ÜuÄ ¿₫r¨UI•ĂÍr₫ö_¡¡¶̣-<ø[ưß—&ư¥‘̣­‰í¡ hg`JH=̃è/ GÁC5˜Ư5˜âù/`ơWMà<¨Áî®ÁMy §¿É6 íx‹FHUÑb`Y…dg n2:¢ƯŒäUÈ1uS’˜̣ưºyI2R ï&%±¥I‰ºYIlÉtQ’=ZEßÂèv”¡̣Ư„DYU€[tto¨A,Ø"¡(ˆ ¶¨íÉ ‘2P´‹rZ˜>º›p€‡ ªª E7&ûŬ¼`ô3ø£-™Gw­xy{đå[Tăˆ«ư¢=b·è­'ƯROWDÓ%*hϺº̣¤G̉ñN'DæÑ=S¯4kHœM0djèṣĂœtñ<±Ë÷²O¶ÿ:]Ñ€AAGº)(OÚ¥î é̉ô" ]o‚̀8íYŸƠÂë₫•ë-¢{a¡ú•¡ë0ûµm{nö8×jù‡„̉»Ăî&tư ËL©GDs̀öB®Ñ̉A₫•}UÍ®:b°†p $>hÍ`Ï̀j¯±Ü$_G* ®Z¶j»÷ñđú Œ´ÚÑbͰj¦tí₫ºY±®FrÈ·ö»öî¢`ĂÂ?@Ơđƒ\5üWí^̀s0*}W%ûKªzwOöơ(Ùñđ°i8ÜhƠ¨UKC§y0–=ÛÁuv/M̀:Md¾26D³æU?™&æ̣U¢gă‰#Ë“ >TÀvÈǸ“å+3ûJ™àÛ'xR–,_(x>–ȇ§ø˜…Ñ\_>~o9 î•Xà)¾ĐdkΤü[¢_₫Tg«N™+;÷ÿƠ¦³<̀¤b¾Z§~wÇâ[ƯÙç¼&_ñ|•ñ—VEơäßÇhn>#eDiËû(oX=ú×® Vxè ´0€æ̉¦¢…"̉±HQ:«0²mOS!Úÿ‘§#JÍ¢¦•#ÊSóBëµ°K«œ^z¥sĐ‘ßê´ ¯3Il9"́ŚĐ(Ơ¢H`Gê ̀©Äó“j|WYw¬éÅóOî!™ÜÑ5«}Ü̉®È >ÎÁ‚³kf¡îØ'ëû¼»p6 ̃£G4¬·BNQóC.ơÓ´ÓGóÏá₫̣Çó<”-0ÜuΨlơ›uLÙRUˆ«"57Ơ ̀;¢#OĂ‘A뤨rDyjnˆS¶:VÙ’ù¶[KÙR)Û’Ê–HH*[Ï·mÈ™̉‘çäÊ@L§ )²2Hyb^:®è<¨Tz P-ͬoÅÂZï Xxäw‹ˆ> ¨ T,Ö(]%”Ú*̀ÉÜaC)j82{§Z{˜b-Sל5`eÖÁ‰+‡dÏpœ̃µ¼¨¯3R_evl;Cê+HR:¹₫đ²ơשºIÆ­K§ƯM¨¼(d…NQ½£Đ‰G‚p¿nrØ]¸¥1UOÉ1Éô”¥ƠÎ#ÅÄ;j}¸đ‡·x´3Ö[,c¶¼Åsk2g1K̀Ë|iâi•XOP¾©´bØf·b(³AŸƒi!®hj0D™¶̣»?#8‹“àÄO;%ª Y9fÖü Ă5·9*5å6Đkh5Ôö`¿›§›† C“˜bqD‰­ÚC”»ˆđyŒ¨áS³îçËçéÅø̃½¿öÎPñÎƯï6Ÿu~èºj̀ÇƯ£ê)FÇæ‡Z8®^œu4ѱ½ưçÎơ gæåÎ5 Ø–¤?²·L¯j˜pî<„ =Î*sû‰Ñ¹Ă<á2×’‘¹¤Î•\Ÿ˜ÊóÄhs.9{~owí¨mQ=ż¸»ç» l“ÁxO2^°leṛĐĂŸ¢/¾°¥ÉóG»êdà±x’Å'å&ˈ¡ơÛÂú‡åđÀ+[8L­&ˆ§:>Upr/\7<ưg§uÂCûÎNÓ°™Đ$•mË5œSO™¹*l, ÜhĐª¾±0P;±+°ÅU1‚QgĂó47ˆj qp\yÔt7N¹RÙ‰®áéĐ€{dÀô"æẸ́y¸øú{{i kRè.:$zï'₫M€lƯ áè]EÛ­¿ö®«™Ë«7Ñæ±üµ‰Ö‡dR`)üûîÿPKˆ!ˆ,Q̉PK¤@ styles.xmlí]Kă¸¾çWŹ̃$ëá÷L÷b²‹`˜^L0“9̉msFJjwÏ)ÿ ‡̣ỵ̈K‡$SÖĂ’­¶ƯnÍ‹6Y«>‹Åª2ư₫ç'Ï‚·Ê€Z€“çÏøéNÑúÀÔ–.Úéö Ú¦¬mcêß•áư{a»¸±›́ŒѶTUï”5ÁÙJJ›|VB% ¢;){|ü RƠr15?̀töŸ"x\!×Íźœ®ÆÊ`…[ú(ƒ@ÈÇ*û¼c*đÉrSñ.¶ª p¶y#bA Ü`”„,ˆ};ùàϾSBä.LûéöƠ%€nA”dGi[»tÇS=́ĐÇ»D–i× SùdÊÜ ₫Æw;VÀ aƯv)¨8©TĂj±2r&WAÚ8„*Ư¼Uùä ’‰!‡‘7¦¯ë'àđƯGD÷0.øà3$h%Zs"ˆêú”€&‚=àç(ÙÔx?‚˜÷°›+Dß)*æ(ˆx› üu Ö´ ú¼ÁƱỀ/ʦ¤êü”Ó_áWđ÷xđ™.—ƒL¦#Ăç0‚^‘×´DZDÁ˜N ë‰$ܧ}ß7iO"FÚñËe¬1[ê§£ÄÉÆV ”QT‹”‘” •ơnĐ¾XY×ï(;ờ™‚T/e» NßÄQÚ[ n„¹ ÏÁ.rÙ‚l‘Ă\Ưö”ƒ†EBÊ+ơX²É†ûmºX™c'Vh€®äᬷl03k™Ơ†÷°• ¨¥Q7˜ ïôå—Ú*´¦zơ5#´zæ+';½¨Ôd0V s̀˜‘:–8˜sPÖçÂUÄØï h½‘zÄ Ø‡;0Èqز•Uºç„0RỴ̈hä;ŸK;÷̃̉ư{~hqQ˜ß[ötH&s©oă bu».Œ¢“µÓ-VE—Ê|Ơ;åÿưw¦p̉C$ăc<ä«.X̉́]O¨Ă*ë»oZ?Ó7øùÙ[bWic™…µ䫬N̉8˜'àÀ7Mu ©{Sn!«3„ ¡ç7‡Đ¨C„f7‰Đ¸3„Lmt“M:CȺI|¦Ưás£vzÖB£µÓóºM;mèA4~]†ZêNNlĂªƒWm\…ÎMO;k&°8E$Gˆ¤1=Aä[Å)%ß–P’fÙ@1̃Đơy+Gñø‰ ­Ä´n̉@GlẤœ&uqF¢ Áñz£&YûB(MNóGDPŒYAm)OÄî¥ô &x•)|DŸÊ¤Ù&˜§ÏKÖŒè9V¥ÇZŸ‡«d+c4ÿ€₫_càÿ Mđà7ˆÎ« É|$½yé$ÁkÊ#7ñEƒß¨’5®ÛÈM…ˆYµ$\? l€P4Ywøp]W%J…ËtªŒ Y‚»å(‘đ̣+´£-¨™që̉RÅ$ËÚª…ÈÁ©a&ÍWDt₫¯$’”…ÛkbPÓú”Xv•!(KXĶh Sñ’p&¶è…ˆ«ô‹DœÚ}{{Ñ醈̣•̉˜u¶–Π÷bùÄå;Ï—ä´̃ƠJ6̉ 5 ­¥bׂ•1́óIWå’‰LÜZLáf]¯-üμۘ:ă á@‘´ _©"F­™‰d\B¦Ê¤‡.§gζ]4_Ebnú:̀ö¯Ă|ñ=(óô]6'÷V+Ûϯë4Yäb–ưă¥fT0³’÷ÛéV«ÍdĂüáË[–Đ'h̀*8M£9FíFÑELƠå@ÊïÓóø»N{è^Ȭ\-t£’Èè"·OEÔƒ ŒÉ9ÖkñĐÙÉѲ¬>¡t\EUƒônS“N ź£(9—6}GfđkRW²ö·5Á±_p»å Ø—̣¶DkíIÄ94ài uẓùµfgơ@&@´̃fÔÚÔû¨ơá Cưæ£Ö"̃lÔ:5[Éj-8³Z.ÑÀ œUºĂl³üYZ\\WUW`óLƠuûUeµơó+K£Xw÷¯ÿS35¾„¦×ZwgÖW+̀^«•×Ư£CWSñ̉±uWw÷ÊÊ9.Pw7¹Ñº²î*ï¦7Z5Ơ]åƯü&ñé®îÎĐ¯ÅP_oáa¼.SƯ}å]m9÷ßd¼Á2ûxĂÁxƒé¦ă "¾•xC!”‹7T§-JâX£Q‹\a¡ºQ“•vîbL³cr ‰¨V7ˆ™Ư fµ̀®V"VÚ™ÿđ±ˆºÀê1³b…Xdm,¶Ç<±q7ˆºA¬MÿRˆMºAlüv›vƒØäí 6ë±éÛAl̃ b³7€X/KkI;Ïÿd%l¤½+đă¸Mó@»/º¦Óù‰ ₫"…₫"…₫"…kLèô)ô)ô)ô)ô)\y>ç•ẽ/s‘ü”¯®4@CØ'~úÄOŸøy-‰Ÿ×eèC }ˆ¡1ô!†>Äp½ơ!†>ÄЇúCbxơ!†’¸Á› ŒÊî èCùÁ¨P1vs!‚ o$D ŸùƠ€ư¬‡ éBÍÄ?|Ô¿˜¬Æ'÷KbK æ»TѹqgÁ²Ô&Ä ¼Çơ‚ƠDhúx–̃ˆø̀ Ó‘•~NL«¡kăñ$mL¿œªêi%U§ñ`PĂnŒ.̀Ä>Ô§3̀Kq &ö <ÍŒKqĂúơD ö~n+ùȾ‰Í~ÉËVÓt{._‹Ÿt¥„æˆR¨|s“”Ÿ/AÄ4´ñ\nOA1§Ú\À™‚¨ Âí~µưTH®Ê!uă:˜•JoÔîRå mÀzÙ‹ÁĐ'(Ü üv&W³ ¹±´ƯƯ+“89KL–:úOÊWáÛ­øÊ­Q…tư>«́jªƯ]¶¥$+Œ£$|ªô77Ÿ³”Đơ>¿h¯Ơu3kr¹‹ÇJ¯çcÿÜñÀƠ›êvvsºfͧ9#vXêËƯvHêÊœƒXö/MPÔˆ–ơ®ÅËŸ®EOF£yK,NưfÑơbÑ^/NưÎĐ¹±¸ôJúT\HiÈB9z‘¯ú«8º–wî.Îoơe§‡OEM/0Û$â}§ƯE†ç‘®¨»GI×îÜ3 ø¥ kŒµ‹©Y]ZüáăÙî]zÏ>S̃gÊûLùƠ ÔgÊûLyŸ)ï3å—E¨Ï”÷™̣æ™̣zgÛ́+O{º÷§{º÷§¯¡̃Ÿîưé̃Ÿîưé̃Ÿ¾zXYÙ’tx Œøo‰VFrÁ3kbOÜ}&ቋ ÆPy¿ôă? h̉ Z%©Mq Ø­¡H~́‰•Ûqªá¾đ¤ÜHBç명Ô\Ù]–Üïg¥@i¢ï9ḲŒ„i>&ÚÄ̃̉È́8,ĂB®wkæ<«‰JSxgđ²Â)©fzVr‹́y'6tm4³.2óL[ÆÙf¦g€ùøbˆïÏ~fØ Óïc¿"T÷KÖ¯Ïɲٹ´:Ï/·áÓ̀÷ùdIí‰Ä¨.ñÈÿÎ-wÛa(~w’t‰r¾–ø)Ùl‚dKØc4é¥;…_BđÅØ¯ÍsdÖ›KÿRSµ›y¸Ăđ<ÍÎñ4LÍ4›`UpµƠl k6ÍK k^JS͉65ĐeĐB»—UW1Ç™A}yu­V*Ó\kÅđƯ÷?¹Ñ;ñçOëè]­DpôĂ2'ơ{'MQö­₫:¯Æ(÷j %÷¶sʤ{w4ÇæX3æ…—lic=÷’5¹X\×fÖ´ê 'TƠ§'n÷̃»V+øA‘w¿ÖBê‘6±ªmjÆtV)öH›‹ù2±.Î!¸(·́Äl̉µjZÅ>U£`̀5ƒ»!ƯíIímgg{̉‘ [m@i³éøÈsm<4†¹ư₫d]h:àVûT#-6uMŸ#üê7ªœPü§akÏÔåGî÷Ẳæ“YáeÑ£ƠT̃p,m–?jf­O±w(:Èẉ[¹-øjæÔ(Ù1ÆSSÖ2ÍÏe%³̉aeœ'\œe˸˜§}gÂ#qíφ lơgÄ‹€ÛŸO=+÷à́)wÙƒ½$AÚ́`;ö²oÈ„÷ÿPKéÿ^Ûà ©­PK¤@~UüÄ££meta.xml 2012-05-02T10:10:082012-05-03T21:24:43.07PT26H29M35S13OpenOffice.org/3.2$Win32 OpenOffice.org_project/320m18$Build-95022012-05-02T11:37:56PK¤@Thumbnails/thumbnail.pngÍxơ_T_Ôî̀0È0ÔĐ̉)̉J7(]̉(]"- "ˆ€t  t‚4*èÀHw# ̉5 å;¾ßû˽Áưå|öÚg×Y{­çyÎÓƠV#ƒ2B™†º²>Ä7]₫i÷î®0@ÿ^CYÁ0 g7W!vÅ8ë§Ü÷œź€´­ˆÛ³8¶TäwRLu¼́cÆ,4*xs¨L—‹DÄG̃ßzîDôĐ₫G̀çOèđ৤2Rç÷ükÇGµ6ô§b`÷)g~qq!ùFZï}WLŒÇ¶ó>M³4÷Ó́½?;Ê7œ¸üÓ^2‚Ạ̈¤³©›á́÷á<|®ñ@’ah øüz 2C ¶Ñ‘ª̣äÓYÁÔĂ%Ñ:9gM ‡çLRG_ŸèĐv?8°<}nơoBs!©Å¼nöÈ—I`s¿¹Ken•@U—(X`.5?Îç…{¶mø8–ÇsThÊæL´ÂLTʇWUÙR;àcÛWcózQ†ŒƒË¨ùvư₫®!_mKÿBèçßÜ)Đ]סñîm."{˜Jm Ươ ’âd|„ºøv׳àô3Ç#‡̉—b#F“¾:úđ¢azÍNç1;£¼”ÁŸSûÛ œÔf$ŸĐ)B3¥#zt9A‚»O7J"9[-Ị̈*,ÿÈ›[̉ÙŸBBô¾sÉ_¸!Í£Óô]’­T à¯c̉^›6+¦ªÍ€ë8kz⹜vt¿Qv›̃óçư}{Ç5f¨đO|Z£ê&₫Đ̃xè<]Óa"O |ât½ Ă*:6°˜~¾îCÂ0éßÍ̃Ó’v´_%ÚÖÛœöHÇá¹d_Ư=A™ ­Ôˆ>´If鼆ĂZĐE'µ̉²ÿÊ ü~Ă–è©Ø¡øZ–Bä²c^kp’ṂÁ¡3Ÿéëà¨₫G½† K1o)% Ÿ˜–)ŸÆ‚‡£Ù f@ø÷;¤«1úYÜ™ˆ—HVđÍN“¡ÚaÔVÂŒîûă;ÍưvËLVÁDo}Ï8ê{çÂT±Ñ%Hó, `†‘ø½₫;}nQ`8­yVg3EÛÓ}̣ä@₫É„_íÄÉ/Ô#€×5Í̉<β¦r$*Gç~A7€}bv"'ÉÉ:Ơkcă₫¦sjótéîJáo±Ÿ:·H”®¾m^4d™ \k|ƯEgäóCøÏơÍpÊhp‘¸̀Rh@{,=Otç®7̉!û˜l-ùÛQơÓ–đE§¡ă£Ö,± ˆ=å#9ˆl§ªƒÍŒ£“R‹̉LY?çæ`ûmnŒ8-TÖñ{!j²"QÆuíƠ-̀…3³ßwƯxZ:Qal¦èÁ>`XQèJb§£‡vÓ^M|/·“¥ “û-‹»•¾ÄƠ0²'èZ-P9ßd$L°c^¨TÖ̉®zĂP x¥4(Đ EĂ­(–Zçf₫ ×륥ºUÙY]ëû‹í2ÍI¿4•Îă;¥”ĐSĂê è̃t»¤Zûá‰P‡Ö2˜ø³ó¯ë(–άv¡-›ïŸv£b{ØUl˜€ăÇj†âzdƠnTĐÜŒ4̣Ư9­̣µ'ˆ̣jóúÖÛµ'-|“ûæÉ @¶²[„ˆbF@²‹.àáÚB{ĐM“ÿ₫Âü¤“°–3gï”b­§8UÛ„3³Ï—ͼ_éÔ "„IiµvD˜¨oƒw+ü¶Ô¬pªĂK“r¬dg&·øŃíΓֈ1âW““¹bí/Ă6ÔzÜ$4̣‘àkrW1Xm§tåx—êp8ø1âv"ÁèKÚƒŸC/¤ư×n_pj·Ë₫¥73˜¬)Ư¦ZdäC”Nm°Â®:€¯‡3"8÷»ådeêØ_6Bß‘A¹°B?¨„đ¢;Ü}.ü§´T€äȱ6³Tóƒg /ƒ¼üjE›¥G´2€¶®sáØ¼M"é#"qr¶ )!@7%ºÊ™l–‡fØïщ¸‡kễl÷Fz¿åï VĂ›mźï₫Å“à~8kƒ́t)ëhûû·̃ö3jePÂBäH{J—ñ́‘b ƇMhÀùå[<@ø];:âơJÄzÁÖÜ2ê$gWÙ»Dçgnë̃åÚÆ'ÓéN=€*2“WơçG©Am¹]—Xß<rYÖ7Ùëê¡ư°¿(»/fæî2e·ÎTXªĐÛÊí£º̀ë§´Hú fx¶v6S#îzeÇ èư0Ù#äϹNQ+ä‘;ï‹ơE¥MÁÈEFƒy²½ữ́É9¯ñÄæ=ăm\Íj©UáÄІÇÓuéµÊǽBèkªŒ>G1ǹV|ö́¼Á¢°ÁçĂ>{ŧ#9GïCOóá€ß«+ØÎLàËóÍơô†Ơ~ 3£µ´‡Å̃í,₫Ue ( mJÚ7­AÜå0Z̉‹Í~6/4©-ß6á’+¾ă¿´™Èù´>1ư` ÏAÅL*|Ø™ưv·¤R;’y«Đv½ô“}ø(á‡A‘úg¾N·TŸÔ¨» °‰ô6‰’•§l«³‹Î™ÖP+ù†tmë $\ƠFl¿ö6{e˜ƠåơN4u–º°®Îå<́@gI¼äcßxå“0 ɇï¢âÙjs¨¹̣%àÿ˜¸àܵ=o€úr¼ÔƯ vÇp¼ 0],äÓ\¬¯Ñïæ·ḳRG$k ËëăµçLVToû­̣v·L¦ø£I­±Ußʆ¬₫ Ñz>`ư@®5oéù­£ÂF¼§p±ö˜¬ö»K5$Ùơ#8¦¾-˜–Î+ª\ÈX"XD%+Ïkưñyy™Ñ Z£ .—0Ío}:ïªưI–ùz[c#W̉ÑD?…F^ÿÚĐ:°}[œk”£N4Cʾ̃e4hr¼ÙËèYƠkótM®€¯îk¶g•0g9úÙ[ë7ó¬0+å—ËígÇÁÆ»Ÿ@}Uù ÜQ+ MÀ£{̀¯1Æ] LÛ¾j«gs”â= /í¡XßơWƒ4¶åÍ6¨aÅ8Ù‘dƯº,b½Ü¥"»†ø&5É~Y5]A¦́Ê·¥œmù…kÔßo ZúEÔ½~I¦¼÷û¿iC¿a&Ôf#?©ŸˆF́Mˆ)éöÏëØËÍ®è6aKùñ3S™L äzÿ„(¬¤»äÍ©›dgq‹UP÷lëê§m¼`kúµ˜.€²~˜­¶{YD8Ö5³ĐYVxf¤æ— IKuø7U»Ÿ+^T$;!pô„¤¥c©z'v’øöị̂ÛZ¼đk³đåüé<9|[§ƒ6‘Đ7ÄŸí:ƒx 4]ÚÄMZ=Rfụ́xá‚<£×¯ÏÍo3fv'€!];Z‚/U4ĂJ^.9îzIƯ6d÷4aX1¾ñSd ‘/VIœD*t¸°A(yzbϤ_a¨@[Eu¿̃%[.@߸=ÉĐ8Œ6A|gƯ¾@ED—:óô·Ơ?håË‚›ª[©½º£Ü@9‡´sCP ¯$ XJ©Î³TÅÏ6ççü¾Î&ÍyX•s4zFA¾F“£Å#3it¼MŸPJ Sä.|q©³;Ä„K¨k˜£=EgSE‘ù?f×{ÊÙ *qN½˜̃ù;Ÿp<>=’›µ¬Åa×:#jD<ƯờƯv u#t=ö Ca™ö9Đ<™´ÁV £‚+±0ÇVqÉ#Ÿhѯ9ë{׿Ói9̣?ŸÍr C7Ï鿦΢¹ÄH”ĐJu™~&8·xs¦Cß±eÂÇRb[Ú¹Gk(²LƯ·7$ÊƠ°ăhr‹ơ/r¯Q?g´ö£7!øzYxÅŒ„Z™s^{a«ô&ĐÓÖ™UB†MS«üÇ1>‹«^ư.“˜Dÿ»¿¸«‚(^z{ÏöZ=– É.iÚ†*2H'ñÓn4ưTg¿*>7êOç-¬é×Y” “™y‹íR^…Ö ÙjU¥¼Åɽ?Ơ œæï…É/OIsÊ&Á5mÎÄ̃ +ëÔËñº§'å»̣ÀnHƒÊ´ ‡‚C—ñ̉%Mr¶ ÿEÀLJ>´8đà|‹°Ö`ÍåÁ%J¢Ü«†½ä‚äMb?"–́ߨ€ uéM(¥#^#…WĂ„y@ê›uÊ&±ç)¤ÀâÈ¥j˜ÂH¸‚é]F"ú@J6’ÙÏq€rxX"îµVÑ àBpƒLmI‘¾̣ o>– )m₫€Ư{˜ĺ=ºPFUUCỂlª¹K._™ƒư‹~‘‚JëÀ«1Ju/H8Íáá@ªIN§ơ€&CªM¾Ú¢ª÷à-Ü¡¦ï®î[q!%œ¡÷»"—˜ƒ,ÜH‘¤R­K8‘H7R[€XDAƠæĂ +z4¹gf–Œ3ö„åRNbÎg Ä G’Ôd6Ç*Ú5$ú›¨ ÇSÿ$‰ÛU‘)t9%¼Œˆ”…sƯ;¢ôGF/é̉₫÷KÈgœ¬@ëX‡0ø~‹¹Af,Ñ’H²\–Ç0k·X„'ê›9àMOS”Ù1ư[z¥_#‡jqÓI~¢æ±hÚåđ;’´=“̉í„× ¿̃ƯJÊÆ‰¤!-Ư¬4̣ Ê¿đ&9̃d éJÄGi@8hŸTlt,ßơå=ˆŸ7¢‹¨†Ù&€\¹0Köœ’2₫kgåưëœKơĐ“ K¬ÇP{§ï]|̉ SU t«Ywzè„8üy§ ˜ ¸Đ5¹â†2¶ø"³A^AßXí]|µZKPṚư»^¦ÈN¨y3¹L‹SÔg;Ỷ¬l±[˜@ = Û ̀¬EƠ‹₫áÊ•ÉË Ú¯“́Gœ¾è¢kM“ƒ:Ø#Z)¸ăWDƒÖ¸Û6âÓ^Á¤XÇ‘w!EÎ…ÁÅÊ¿¡¶›ơ2Í阵÷n.v¸ 2W©ÚtƯ~ë÷âKÈ₫¥Rw„Ê›«ö\™ÊCµ ™ư™S„ʼnñKÜñè“ ₫c«8àăÖăñ¹>‚4q¸NĂ»h>6̃X,IËÇÔ0¹ŸÏ!d+’,ÿfđPÏ cÎøÂƯS±Ư|í&Zí|„ü¢hz§eûyîư›̀ủÆi„QbnCÈ_h@Uo´˜^<–ØAÊ;¦¹g裧dgï ëw®•ÅƯŸ*l- /äñ|)©èp¹Ë*çư—ùr&̀ÿÖƠ÷Ç¿l×w/-ë¶ †0Ư¢$!_7›;¯C̣%óXhäÏuø¦§=öUie'ÙgÑù>:S„ËŸ×Hó'đ̀ˆ¸C lwoƒ¹T^_îư¤ˆœ¬éÚüUÛđˆhü° 08ß)’re[ùjê¾i{u÷’ʦ¨è£ú̃đ4%(*øœût(s™éÂy—O@bSÇo7`€qS-æ ÈÊæ…~%{ ÏÂIc³; ĂÓ(ןú(fă¾, /OơĂLœº4(ö À }Û+É²Ă©K|j̉g÷/ntï?©º ³ åüGxü*úˆOAm|¾…äơŸ€ÀµDi0§x*|*T2B‡è¸IñiYL]ïkX?r-°Â-,>¼Íßx’»@F'œđ?B!§ă>'Ñ%jäÁûXPtöEN¥alƯº¨»5œåikç«î¶v*÷Ơ?H'¨.w/œ¬è³À¢Ư4ÛÜôÜ\3è+†>3³̉,E©²47M̃WØÀ‚}=ưË5ˆZw½pÄ`übªétá[µ1̉̉û\WĐi¨D¹³²9®ÍùĐiL¤¯Â´»ZññÛg½ô!Ç¡'æ+Ư‡hjơY¡¢œ•́ôáüQ§" øR]x5œ̣—2˜J\ë¼Ǻáyåû¿…£­úQƒÓ¨•|ÂăWú²#ùÿØè›ê.;ÄS ?ûi€?áßKbRóŸ§ú)ol®v=–ßVSíË>dYƯq³É µº̣n½ ¥ÖÄKUÔ$7=¯Ṕ»NÑ)n¶çÊ);̃̉l̃[‚•æP/º£Ÿ­ ÏäÍS¡¦ˆ,jdP₫£ñÄ]¼4P‡̀ÓÙÇwdïK₫«:rX˜§Âo] á́3…l”a ØœM7=cDÉ_~¡»̃3r¨ }\ÓM¸ƒ—q¼|ˆÜđF¾—ÿÔ-‡GÀŒijùUÈø¨)˜O­$7 ñÓƠ²̃ñtäÖ>(³Y4ë¨̉&—ÉåV¤Üt­b&bXt.ả—¬©_^Ù\Ù†.®«ä̃çĂwå_ñ;)+4âû,2Ÿy}À0cy÷ßù́ûd(Œ’i´S­ 5˜à}±>È{p¿³oƠ†=–{Ôa4¸xÜ´xƯÿ±YÚø¾ƯéÙ‡9ˆ×‘xw÷NZK§ÈïHL’Ädw7­ØåG¤ÊæbƠRÆL€Rj.kÛHk?Cg4lơ„ü¾V¿ đ¬~5»î¾ÇµqÏ1Í¿²p,Ø'Jú. dÉw!›"̃ï7"Köe<8˜áÍuü5ñ~§û¸̣?¡ø¡₫ÿéÀ…*´Oªpék ü+Ơk¨h+W+Ú„ÿPKêfÊPK¤@ settings.xmlí[[s£:~ß_‘ríĂ9µ•ñ-™‰S“œ6Ø$16đåM€‚‰̣r v~ư¶°“É88ăÁá́9»£ª€Ñ¥¿–ºƠƯjÈ×?V>=y$aä±àªRÿT«œÀf¸WC—N/*\ÿă+»¿÷lré0;ñIŸF$¡KtĂƒèrÓ|UIÂà’áÈ‹.́“è2¶/Ù’ÏĂ._÷¾̀À65+ê‹«Ê<——Ơj¦Ÿ̉æ'ºƠz«Ơªf­Ï]—!‰€3†|=æ5¬Í‚{Ï=”ʦ÷ëñŒ±¦ù€ÍÄ2ƵÚYuóüÜ;̣=z(ï{j3 <[ô»µÂçJ†÷}3ë Wïó̃zá}+¬W*̉¨\?ëĂ³\Ư.ÎævêÅÄç:r²­æ<^Ụ̣Ñ#é‹öṬÆ}?Æô"¾($XgËÊsc¼^B£Ä•ëÓfưË×ê[:?EûÜǹÄŸkơ£©='ç‘o6gÍ£É÷ˆçÎsÙoÔ?Ÿ5¥êăå©8dEœ],’æ +ú®ᘤ²³Ăf‡  •k®ºzm×c‡¼Å%8¨\ßc‘cèK! v×ø#¨ËÑ(ÀKq”}äă09’ú»¤C× ¢̣@øơÎ H‰ëرBeÙ C[hïT’ø&Q%¢)^—¨¼\qáG'Äî6-C8"ơ|/À12ºÎ–í*bÄạ́¬Rư¼V+:›·Xeˆh+;¼··KGäó™L„ëÊuơàrqUŒ—!ÈÿU¸¹cö‚8?f¥úcR C1X« *¬Í({ËâñÊ®%”„eºnªoÁ ï:Ê9 aïÜ8#BÁ¤‡Ï'|p˜°»#3]è3§ë%xîÖR–B¾Ăb›zöB'«Xt¼½>₫¿’´ç8p‰Æ6ç‡QÏ!Ñ„Kóe|VĐ¾Ăªpbw53³éợ™´Ââ7₫º\wX’ÖÿH jÉÁ’‚ ·#²—{8¸Ô—oÄßáư(êÆï1~åw¹.NÇĂÓ%ñIˆc–ˆÑ!Ë‚»|”#‡/Ó?aÓræ!GY@ÍaĀǃ{‹GxDN½„¸}Ƙ?r‚Ü^Nåë¬Ă¾æm"#¿CDâĂSV›$̀ÜöÏä®ĐrI×FDÂñÇû{Á‹a¢:WC»Û“Wùço 0đû m]ø§ˆYÅP! 1„’a›ù<¯Ê³‚:@~h¸ï…gfíàh^Ó)ˆIîqBc€ÅùÑD½q~đ"îÏàI,´<Ç!Á‹øÏçƯA8›äœ'¶kE‚¢²O8₫ªÆ¨`t‚C¿Iàm©pXˆë<¹U˜‚8ïÿûʪ₫OeơCŸô#ünˆˆ6Gn±•ß—¢ ½'Ę~¼ÛêáØ.ngçEƒ§[(½&'ïÁKị̂|ÀØ‚’r̃¼°½(#añăƯ7Gƒ@lTNæhC=Ä)ר²¸—¼ø½¨öø ä'0> ø$Jym“aäew>p ƒ$¦o­ơđƠQ̃yåt<‚îQR®"é^)üs7 ̃²°=/ ˰£́°€îF•ƒWß"!Î>ÎM¬L“ !₫vC¼œß/Ë eWL½xwyɪfdI(CĂ¿5å¯ßZ§g©S– ‘Ñ„Oó(ÈœƯ÷Œ̉ ²¯Qàđ> ÙÉÅy­v‚ZơÚÉo ‰S.~? {Dâd÷höưk·₫«Z›«²Ø̣g>}˜—Ôi ªí_¸ƒ‘öÛ‚0ĐÅTnϳ‰Ö´7á­₫ke$!Wò|ºă"EEéÆNê,PŸ?CÏSg¢µñø )©0̉LEs‹̀ñù̉öÍ'M\ơ‘¸zœ6¤l’dùN„' ›ÔÍO4:“ZºÓ•j³Iá·Û4qºæÚèƯ<:ƯÖƒƠH‘ƯU¢~Ă©̀i<;K #ZƯ”[Z§.&³î*BbkÇfÂiâq+A’04¨6R j Qy´º­µ>n-Àέ•îMjƒư4Dg=P}Ă#̀«;O¦™ÚĐ×é)|Nêˆ`»c6™×̀î|=ƒ9XƠuäçªÖ¼™ÛƯùrZן7î¶¢Bë¾ ôÁÆCj3ªw¥s«iÖ8=­g¦V×<».7jMêg´¶ơúXZÏ4AµÙ>§ă•k’À:ʦÔRUSÓGæRÔ4I[H¦.©œGe6V÷1v#Ăy‚±°n:2h2ó/P?›s«1›Ü<Ù½›9QÑy¿ç̣¿¿+ª0~­¹YĂÎ4ÍÚ:ÂÂî.8ÆFN’T–NôAºàígʬ̀ÁđW5®/Đ· >wXĐ|ÚÖ© Cj×µGó̉ T¤H-Áê®6ơ)_3’vc-n¢éX QG¸ŸuéÓt|ĂơHNjSeI|é¢i˜¢9BbBŸ¹Ù£)—ăƯƒøWqN§cMi€A¿³5‘”t66úØ|À=ư™›tƸR ÑÍö«¡>XSI” đµß—ư~Drasÿ˃yû¼ñ‡_À£¾ *ØĂvD÷wÛ'wÇÛ‡ü̉ɶđÅËó+¼Î»=ñ~æß.‚çN›ö́yx“₫ơ•_åWù;ÁÀ=Ă_w.wГܑWƒy=x@5¸×ûmđ¡q]"~3q[îˆÛŒ̀>¾¶·êËÍù†StUđÓÍ~$ææß8A›²¨Œ|ĐËGhù‰ËíkáÏňKÇD ™¯IßÉÿÜçÙçƠ7ÿÓRƯ÷_O×ÿPKh&­H 75PK¤@META-INF/manifest.xmlµ•KjĂ0@÷9…Ñ̃R›U1q-ôéýôC3 Éí+’¸m(M±V–̀è½ñH­6GkªDỖµ́™?± œ̣vCË>¶ïơ Û¬++ ª¼ÎáuÚ²]ă%jlœ´€ ©ÆpWÉ‚£æk|3Ö‹êîµ:ÆSu“A§eM§-“!­$å<ÅÁuǘâS0?Ï1́F™|ƯṛºOÆÔẢ¾e‚‰‡r¹Oyó®×Cg?.æLîd,ƒ—J<ơQ¨ăX\äâ®"‚̃xIP|H!ŸTưO^¹&ïMLüX™¢¹ƒk+@ñªÉÊ€E²¿w+Lnü9ỷ\MËáA9Á‘ÄØ ₫×+~ç" à́X $gëkÛ}²;'µAA—!n˜>oa(_Ç×̉®ÄÛxư PK’đ§ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); {% endblock %} nova-2014.1/doc/source/index.rst0000664000175400017540000000434312323721476017623 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2012 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Welcome to Nova's developer documentation! ========================================== Nova is the project name for OpenStack Compute, a cloud computing fabric controller, the main part of an IaaS system. Individuals and organizations can use Nova to host and manage their own cloud computing systems. Nova originated as a project out of NASA Ames Research Laboratory. Nova is written with the following design guidelines in mind: * **Component based architecture**: Quickly add new behaviors * **Highly available**: Scale to very serious workloads * **Fault-Tolerant**: Isolated processes avoid cascading failures * **Recoverable**: Failures should be easy to diagnose, debug, and rectify * **Open Standards**: Be a reference implementation for a community-driven api * **API Compatibility**: Nova strives to provide API-compatible with popular systems like Amazon EC2 This documentation is generated by the Sphinx toolkit and lives in the source tree. Additional draft and project documentation on Nova and other components of OpenStack can be found on the `OpenStack wiki`_. Cloud administrators, refer to `docs.openstack.org`_. .. _`OpenStack wiki`: http://wiki.openstack.org .. _`docs.openstack.org`: http://docs.openstack.org Developer Docs ============== .. toctree:: :maxdepth: 1 devref/index API Extensions ============== Go to http://api.openstack.org for information about Compute API extensions. Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` nova-2014.1/doc/source/devref/0000775000175400017540000000000012323722546017230 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/source/devref/hooks.rst0000664000175400017540000000301612323721510021073 0ustar jenkinsjenkins00000000000000Hooks ===== Hooks provide a mechanism to extend Nova with custom code through a plugin mechanism. Named hooks are added to nova code via a decorator that will lazily load plugin code matching the name. The loading works via setuptools `entry points`_. .. _`entry points`: http://pythonhosted.org/setuptools/pkg_resources.html#entry-points What are hooks good for? ------------------------ Hooks are good for anchoring your custom code to Nova internal APIs. What are hooks NOT good for? ---------------------------- Hooks should not be used when API stability is a key factor. Internal APIs may change. Consider using a notification driver if this is important to you. Declaring hooks in the Nova codebase ------------------------------------ The following example declares a *resize_hook* around the *resize_instance* method:: from nova import hooks @hooks.add_hook("resize_hook") def resize_instance(self, context, instance, a=1, b=2): ... Hook objects can now be attached via entry points to the *resize_hook*. Adding hook object code ----------------------- 1. Setup a Python package with a setup.py file. 2. Add the following to the setup.py setup call:: entry_points = [ 'nova.hooks': [ 'resize_hook': your_package.hooks.YourHookClass, ] ] 3. *YourHookClass* should be an object with *pre* and/or *post* methods:: class YourHookClass(object): def pre(self, *args, **kwargs): .... def post(self, rv, *args, **kwargs): .... nova-2014.1/doc/source/devref/aggregates.rst0000664000175400017540000001126212323721476022076 0ustar jenkinsjenkins00000000000000.. Copyright 2012 OpenStack Foundation Copyright 2012 Citrix Systems, Inc. Copyright 2012, The Cloudscaling Group, Inc. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. General Host Aggregates ======================= Host aggregates can be regarded as a mechanism to further partition an availability zone; while availability zones are visible to users, host aggregates are only visible to administrators. Host aggregates started out as a way to use Xen hypervisor resource pools, but has been generalized to provide a mechanism to allow administrators to assign key-value pairs to groups of machines. Each node can have multiple aggregates, each aggregate can have multiple key-value pairs, and the same key-value pair can be assigned to multiple aggregate. This information can be used in the scheduler to enable advanced scheduling, to set up xen hypervisor resources pools or to define logical groups for migration. Xen Pool Host Aggregates ======================== Originally all aggregates were Xen resource pools, now an aggregate can be set up as a resource pool by giving the aggregate the correct key-value pair. You can use aggregates for XenServer resource pools when you have multiple compute nodes installed (only XenServer/XCP via xenapi driver is currently supported), and you want to leverage the capabilities of the underlying hypervisor resource pools. For example, you want to enable VM live migration (i.e. VM migration within the pool) or enable host maintenance with zero-downtime for guest instances. Please, note that VM migration across pools (i.e. storage migration) is not yet supported in XenServer/XCP, but will be added when available. Bear in mind that the two migration techniques are not mutually exclusive and can be used in combination for a higher level of flexibility in your cloud management. Design ====== The OSAPI Admin API is extended to support the following operations: * Aggregates * list aggregates: returns a list of all the host-aggregates (optionally filtered by availability zone) * create aggregate: creates an aggregate, takes a friendly name, etc. returns an id * show aggregate: shows the details of an aggregate (id, name, availability_zone, hosts and metadata) * update aggregate: updates the name and availability zone of an aggregate * set metadata: sets the metadata on an aggregate to the values supplied * delete aggregate: deletes an aggregate, it fails if the aggregate is not empty * add host: adds a host to the aggregate * remove host: removes a host from the aggregate * Hosts * start host maintenance (or evacuate-host): disallow a host to serve API requests and migrate instances to other hosts of the aggregate * stop host maintenance: (or rebalance-host): put the host back into operational mode, migrating instances back onto that host Using the Nova CLI ================== Using the nova command you can create, delete and manage aggregates. The following section outlines the list of available commands. Usage ----- :: * aggregate-list Print a list of all aggregates. * aggregate-create Create a new aggregate with the specified details. * aggregate-delete Delete the aggregate by its id. * aggregate-details Show details of the specified aggregate. * aggregate-add-host Add the host to the specified aggregate. * aggregate-remove-host Remove the specified host from the specfied aggregate. * aggregate-set-metadata [ ...] Update the metadata associated with the aggregate. * aggregate-update [] Update the aggregate's name and optionally availability zone. * host-list List all hosts by service * host-update --maintenance [enable | disable] Put/resume host into/from maintenance. nova-2014.1/doc/source/devref/database.rst0000664000175400017540000000325112323721476021530 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. The Database Layer ================== The :mod:`nova.db.api` Module ----------------------------- .. automodule:: nova.db.api :noindex: :members: :undoc-members: :show-inheritance: The Sqlalchemy Driver --------------------- The :mod:`nova.db.sqlalchemy.api` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.db.sqlalchemy.api :noindex: The :mod:`nova.db.sqlalchemy.models` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.db.sqlalchemy.models :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.db.sqlalchemy.session` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.db.sqlalchemy.session :noindex: :members: :undoc-members: :show-inheritance: Tests ----- Tests are lacking for the db api layer and for the sqlalchemy driver. Failures in the drivers would be detected in other test cases, though. nova-2014.1/doc/source/devref/unit_tests.rst0000664000175400017540000001360312323721476022167 0ustar jenkinsjenkins00000000000000Unit Tests ========== Nova contains a suite of unit tests, in the nova/tests directory. Any proposed code change will be automatically rejected by the OpenStack Jenkins server [#f1]_ if the change causes unit test failures. Preferred way to run the tests ------------------------------ The preferred way to run the unit tests is using ``tox``. See `the unit testing section of the Testing wiki page`_ and Nova's HACKING.rst for more information. Following are some simple examples. To run the Python 2.6 tests:: tox -e py26 To run the style tests: tox -e pep8 You can request multiple tests, separated by commas:: tox -e py27,pep8 Older way to run the tests -------------------------- Using ``tox`` is preferred. It is also possible to run the unit tests using the ``run_tests.sh`` script found at the top level of the project. The remainder of this document is focused on ``run_tests.sh``. Run the unit tests by doing:: ./run_tests.sh This script is a wrapper around the `testr`_ testrunner and the `flake8`_ checker. .. _the unit testing section of the Testing wiki page: https://wiki.openstack.org/wiki/Testing#Unit_Tests .. _testr: https://code.launchpad.net/testrepository .. _flake8: https://github.com/bmcustodio/flake8 Flags ----- The ``run_tests.sh`` script supports several flags. You can view a list of flags by doing:: run_tests.sh -h This will show the following help information:: Usage: ./run_tests.sh [OPTION]... Run Nova's test suite(s) -V, --virtual-env Always use virtualenv. Install automatically if not present -N, --no-virtual-env Don't use virtualenv. Run tests in local environment -s, --no-site-packages Isolate the virtualenv from the global Python environment -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added. -u, --update Update the virtual environment with any newer package versions -p, --pep8 Just run PEP8 and HACKING compliance check -P, --no-pep8 Don't run static code checks -c, --coverage Generate coverage report -d, --debug Run tests with testtools instead of testr. This allows you to use the debugger. -h, --help Print this usage message --hide-elapsed Don't print the elapsed time for each test along with slow test list --virtual-env-path Location of the virtualenv directory Default: $(pwd) --virtual-env-name Name of the virtualenv directory Default: .venv --tools-path Location of the tools directory Default: $(pwd) Note: with no options specified, the script will try to run the tests in a virtual environment, If no virtualenv is found, the script will ask if you would like to create one. If you prefer to run tests NOT in a virtual environment, simply pass the -N option. Because ``run_tests.sh`` is a wrapper around testrepository, it also accepts the same flags as testr. See the `testr user manual`_ for details about these additional flags. .. _testr user manual: https://testrepository.readthedocs.org/en/latest/MANUAL.html Running a subset of tests ------------------------- Instead of running all tests, you can specify an individual directory, file, class, or method that contains test code. To run the tests in the ``nova/tests/scheduler`` directory:: ./run_tests.sh scheduler To run the tests in the ``nova/tests/virt/libvirt/test_libvirt.py`` file:: ./run_tests.sh test_libvirt To run the tests in the ``CacheConcurrencyTestCase`` class in ``nova/tests/virt/libvirt/test_libvirt.py``:: ./run_tests.sh test_libvirt.CacheConcurrencyTestCase To run the `ValidateIntegerTestCase.test_invalid_inputs` test method in ``nova/tests/test_utils.py``:: ./run_tests.sh test_utils.ValidateIntegerTestCase.test_invalid_inputs Virtualenv ---------- By default, the tests use the Python packages installed inside a virtualenv [#f2]_. (This is equivalent to using the ``-V, --virtualenv`` flag). If the virtualenv does not exist, it will be created the first time the tests are run. If you wish to recreate the virtualenv, call ``run_tests.sh`` with the flag:: -f, --force Recreating the virtualenv is useful if the package dependencies have changed since the virtualenv was last created. If the ``requirements.txt`` or ``tools/install_venv.py`` files have changed, it's a good idea to recreate the virtualenv. By default, the unit tests will see both the packages in the virtualenv and the packages that have been installed in the Python global environment. In some cases, the packages in the Python global environment may cause a conflict with the packages in the virtualenv. If this occurs, you can isolate the virtualenv from the global environment by using the flag:: -s, --no-site packages If you do not wish to use a virtualenv at all, use the flag:: -N, --no-virtual-env Gotchas ------- **Running Tests from Shared Folders** If you are running the unit tests from a shared folder, you may see tests start to fail or stop completely as a result of Python lockfile issues [#f4]_. You can get around this by manually setting or updating the following line in ``nova/tests/conf_fixture.py``:: FLAGS['lock_path'].SetDefault('/tmp') Note that you may use any location (not just ``/tmp``!) as long as it is not a shared folder. .. rubric:: Footnotes .. [#f1] See :doc:`jenkins`. .. [#f2] See :doc:`development.environment` for more details about the use of virtualenv. .. [#f3] There is an effort underway to use a fake DB implementation for the unit tests. See https://lists.launchpad.net/openstack/msg05604.html .. [#f4] See Vish's comment in this bug report: https://bugs.launchpad.net/nova/+bug/882933 nova-2014.1/doc/source/devref/architecture.rst0000664000175400017540000000564012323721476022452 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Nova System Architecture ======================== Nova is built on a shared-nothing, messaging-based architecture. All of the major nova components can be run on multiple servers. This means that most component to component communication must go via message queue. In order to avoid blocking each component while waiting for a response, we use deferred objects, with a callback that gets triggered when a response is received. Nova recently moved to using a sql-based central database that is shared by all components in the system. The amount and depth of the data fits into a sql database quite well. For small deployments this seems like an optimal solution. For larger deployments, and especially if security is a concern, nova will be moving towards multiple data stores with some kind of aggregation system. Components ---------- Below you will find a helpful explanation of the different components. :: /- ( LDAP ) [ Auth Manager ] --- | \- ( DB ) | | | [ Web Dashboard ] -> [ api ] -- < AMQP > ------ [ network ] - ( Flat/Vlan ) | \ < HTTP > [ scheduler ] - [ compute ] - ( libvirt/xen ) | | [ objectstore ] < - retrieves images * DB: sql database for data storage. Used by all components (LINKS NOT SHOWN) * Web Dashboard: potential external component that talks to the api * api: component that receives http requests, converts commands and communicates with other components via the queue or http (in the case of objectstore) * Auth Manager: component responsible for users/projects/and roles. Can backend to DB or LDAP. This is not a separate binary, but rather a python class that is used by most components in the system. * objectstore: http server that replicates s3 api and allows storage and retrieval of images * scheduler: decides which host gets each vm * network: manages ip forwarding, bridges, and vlans * compute: manages communication with hypervisor and virtual machines. nova-2014.1/doc/source/devref/nova.rst0000664000175400017540000001006212323721476020725 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Common and Misc Libraries ========================= Libraries common throughout Nova or just ones that haven't been categorized very well yet. The :mod:`nova.adminclient` Module ---------------------------------- .. automodule:: nova.adminclient :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.context` Module ------------------------------ .. automodule:: nova.context :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.exception` Module -------------------------------- .. automodule:: nova.exception :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.flags` Module ---------------------------- .. automodule:: nova.flags :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.process` Module ------------------------------ .. automodule:: nova.process :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.rpc` Module -------------------------- .. automodule:: nova.rpc :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.server` Module ----------------------------- .. automodule:: nova.server :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.test` Module --------------------------- .. automodule:: nova.test :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.utils` Module ---------------------------- .. automodule:: nova.utils :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.validate` Module ------------------------------- .. automodule:: nova.validate :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.wsgi` Module --------------------------- .. automodule:: nova.wsgi :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`declare_flags` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.declare_flags :noindex: :members: :undoc-members: :show-inheritance: The :mod:`fake_flags` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.fake_flags :noindex: :members: :undoc-members: :show-inheritance: The :mod:`flags_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.flags_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`process_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.process_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`real_flags` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.real_flags :noindex: :members: :undoc-members: :show-inheritance: The :mod:`rpc_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.rpc_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`runtime_flags` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.runtime_flags :noindex: :members: :undoc-members: :show-inheritance: The :mod:`validator_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.validator_unittest :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/development.environment.rst0000664000175400017540000001466312323721510024647 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Setting Up a Development Environment ==================================== This page describes how to setup a working Python development environment that can be used in developing nova on Ubuntu, Fedora or Mac OS X. These instructions assume you're already familiar with git. Following these instructions will allow you to run the nova unit tests. If you want to be able to run nova (i.e., launch VM instances), you will also need to install libvirt and at least one of the `supported hypervisors`_. Running nova is currently only supported on Linux, although you can run the unit tests on Mac OS X. .. _supported hypervisors: http://wiki.openstack.org/HypervisorSupportMatrix Virtual environments -------------------- Nova development uses a set of shell scripts in DevStack. Virtual environments with venv are also available with the source code. The easiest way to build a fully functional development environment is with DevStack. Create a machine (such as a VM or Vagrant box) running a distribution supported by DevStack and install DevStack there. For example, there is a Vagrant script for DevStack at https://github.com/jogo/DevstackUp. .. note:: If you prefer not to use devstack, you can still check out source code on your local machine and develop from there. Linux Systems ------------- .. note:: This section is tested for Nova on Ubuntu (10.10-64) and Fedora-based (RHEL 6.1) distributions. Feel free to add notes and change according to your experiences or operating system. Install the prerequisite packages. On Ubuntu:: sudo apt-get install python-dev libssl-dev python-pip git-core libxml2-dev libxslt-dev pkg-config libffi-dev libpq-dev libmysqlclient-dev On Ubuntu Precise (12.04) you may also need to add the following packages:: sudo apt-get build-dep python-mysqldb On Fedora-based distributions (e.g., Fedora/RHEL/CentOS/Scientific Linux):: sudo yum install python-devel openssl-devel python-pip git gcc libxslt-devel mysql-devel python-pip postgresql-devel libffi-devel sudo pip-python install tox Mac OS X Systems ---------------- Install virtualenv:: sudo easy_install virtualenv Check the version of OpenSSL you have installed:: openssl version If you have installed OpenSSL 1.0.0a, which can happen when installing a MacPorts package for OpenSSL, you will see an error when running ``nova.tests.auth_unittest.AuthTestCase.test_209_can_generate_x509``. The stock version of OpenSSL that ships with Mac OS X 10.6 (OpenSSL 0.9.8l) or Mac OS X 10.7 (OpenSSL 0.9.8r) works fine with nova. Getting the code ---------------- Grab the code from GitHub:: git clone https://github.com/openstack/nova.git cd nova Running unit tests ------------------ The unit tests will run by default inside a virtualenv in the ``.venv`` directory. Run the unit tests by doing:: ./run_tests.sh The first time you run them, you will be asked if you want to create a virtual environment (hit "y"):: No virtual environment found...create one? (Y/n) See :doc:`unit_tests` for more details. .. _virtualenv: Manually installing and using the virtualenv -------------------------------------------- You can manually install the virtual environment instead of having ``run_tests.sh`` do it for you:: python tools/install_venv.py This will install all of the Python packages listed in the ``requirements.txt`` file into your virtualenv. There will also be some additional packages (pip, setuptools, greenlet) that are installed by the ``tools/install_venv.py`` file into the virutalenv. If all goes well, you should get a message something like this:: Nova development environment setup is complete. To activate the Nova virtualenv for the extent of your current shell session you can run:: $ source .venv/bin/activate Or, if you prefer, you can run commands in the virtualenv on a case by case basis by running:: $ tools/with_venv.sh Using a remote debugger ----------------------- Some modern IDE such as pycharm (commercial) or Eclipse (open source) support remote debugging. In order to run nova with remote debugging, start the nova process with the following parameters --remote_debug-host --remote_debug-port Before you start your nova process, start the remote debugger using the instructions for that debugger. For pycharm - http://blog.jetbrains.com/pycharm/2010/12/python-remote-debug-with-pycharm/ For Eclipse - http://pydev.org/manual_adv_remote_debugger.html More detailed instructions are located here - http://novaremotedebug.blogspot.com Using fake computes for tests ----------------------------- The number of instances supported by fake computes is not limited by physical constraints. It allows to perform stress tests on a deployment with few resources (typically a laptop). But you must avoid using scheduler filters limiting the number of instances per compute (like RamFilter, DiskFilter, AggregateCoreFilter), otherwise they will limit the number of instances per compute. Fake computes can also be used in multi hypervisor-type deployments in order to take advantage of fake and "real" computes during tests: * create many fake instances for stress tests * create some "real" instances for functional tests Fake computes can be used for testing Nova itself but also applications on top of it. Contributing Your Work ---------------------- Once your work is complete you may wish to contribute it to the project. Refer to HowToContribute_ for information. Nova uses the Gerrit code review system. For information on how to submit your branch to Gerrit, see GerritWorkflow_. .. _GerritWorkflow: http://wiki.openstack.org/GerritWorkflow .. _HowToContribute: http://wiki.openstack.org/HowToContribute nova-2014.1/doc/source/devref/threading.rst0000664000175400017540000000436012323721476021733 0ustar jenkinsjenkins00000000000000Threading model =============== All OpenStack services use *green thread* model of threading, implemented through using the Python `eventlet `_ and `greenlet `_ libraries. Green threads use a cooperative model of threading: thread context switches can only occur when specific eventlet or greenlet library calls are made (e.g., sleep, certain I/O calls). From the operating system's point of view, each OpenStack service runs in a single thread. The use of green threads reduces the likelihood of race conditions, but does not completely eliminate them. In some cases, you may need to use the ``@lockutils.synchronized(...)`` decorator to avoid races. In addition, since there is only one operating system thread, a call that blocks that main thread will block the entire process. Yielding the thread in long-running tasks ----------------------------------------- If a code path takes a long time to execute and does not contain any methods that trigger an eventlet context switch, the long-running thread will block any pending threads. This scenario can be avoided by adding calls to the eventlet sleep method in the long-running code path. The sleep call will trigger a context switch if there are pending threads, and using an argument of 0 will avoid introducing delays in the case that there is only a single green thread:: from eventlet import greenthread ... greenthread.sleep(0) MySQL access and eventlet ------------------------- Queries to the MySQL database will block the main thread of a service. This is because OpenStack services use an external C library for accessing the MySQL database. Since eventlet cannot use monkey-patching to intercept blocking calls in a C library, the resulting database query blocks the thread. The Diablo release contained a thread-pooling implementation that did not block, but this implementation resulted in a `bug`_ and was removed. See this `mailing list thread`_ for a discussion of this issue, including a discussion of the `impact on performance`_. .. _bug: https://bugs.launchpad.net/nova/+bug/838581 .. _mailing list thread: https://lists.launchpad.net/openstack/msg08118.html .. _impact on performance: https://lists.launchpad.net/openstack/msg08217.html nova-2014.1/doc/source/devref/rpc.rst0000664000175400017540000003176012323721476020556 0ustar jenkinsjenkins00000000000000.. Copyright (c) 2010 Citrix Systems, Inc. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. AMQP and Nova ============= AMQP is the messaging technology chosen by the OpenStack cloud. The AMQP broker, either RabbitMQ or Qpid, sits between any two Nova components and allows them to communicate in a loosely coupled fashion. More precisely, Nova components (the compute fabric of OpenStack) use Remote Procedure Calls (RPC hereinafter) to communicate to one another; however such a paradigm is built atop the publish/subscribe paradigm so that the following benefits can be achieved: * Decoupling between client and servant (such as the client does not need to know where the servant's reference is). * Full a-synchronism between client and servant (such as the client does not need the servant to run at the same time of the remote call). * Random balancing of remote calls (such as if more servants are up and running, one-way calls are transparently dispatched to the first available servant). Nova uses direct, fanout, and topic-based exchanges. The architecture looks like the one depicted in the figure below: .. image:: /images/rpc/arch.png :width: 60% .. Nova implements RPC (both request+response, and one-way, respectively nicknamed 'rpc.call' and 'rpc.cast') over AMQP by providing an adapter class which take cares of marshaling and unmarshaling of messages into function calls. Each Nova service (for example Compute, Scheduler, etc.) create two queues at the initialization time, one which accepts messages with routing keys 'NODE-TYPE.NODE-ID' (for example compute.hostname) and another, which accepts messages with routing keys as generic 'NODE-TYPE' (for example compute). The former is used specifically when Nova-API needs to redirect commands to a specific node like 'euca-terminate instance'. In this case, only the compute node whose host's hypervisor is running the virtual machine can kill the instance. The API acts as a consumer when RPC calls are request/response, otherwise is acts as publisher only. Nova RPC Mappings ----------------- The figure below shows the internals of a message broker node (referred to as a RabbitMQ node in the diagrams) when a single instance is deployed and shared in an OpenStack cloud. Every Nova component connects to the message broker and, depending on its personality (for example a compute node or a network node), may use the queue either as an Invoker (such as API or Scheduler) or a Worker (such as Compute or Network). Invokers and Workers do not actually exist in the Nova object model, but we are going to use them as an abstraction for sake of clarity. An Invoker is a component that sends messages in the queuing system via two operations: 1) rpc.call and ii) rpc.cast; a Worker is a component that receives messages from the queuing system and reply accordingly to rcp.call operations. Figure 2 shows the following internal elements: * Topic Publisher: a Topic Publisher comes to life when an rpc.call or an rpc.cast operation is executed; this object is instantiated and used to push a message to the queuing system. Every publisher connects always to the same topic-based exchange; its life-cycle is limited to the message delivery. * Direct Consumer: a Direct Consumer comes to life if (an only if) a rpc.call operation is executed; this object is instantiated and used to receive a response message from the queuing system; Every consumer connects to a unique direct-based exchange via a unique exclusive queue; its life-cycle is limited to the message delivery; the exchange and queue identifiers are determined by a UUID generator, and are marshaled in the message sent by the Topic Publisher (only rpc.call operations). * Topic Consumer: a Topic Consumer comes to life as soon as a Worker is instantiated and exists throughout its life-cycle; this object is used to receive messages from the queue and it invokes the appropriate action as defined by the Worker role. A Topic Consumer connects to the same topic-based exchange either via a shared queue or via a unique exclusive queue. Every Worker has two topic consumers, one that is addressed only during rpc.cast operations (and it connects to a shared queue whose exchange key is 'topic') and the other that is addressed only during rpc.call operations (and it connects to a unique queue whose exchange key is 'topic.host'). * Direct Publisher: a Direct Publisher comes to life only during rpc.call operations and it is instantiated to return the message required by the request/response operation. The object connects to a direct-based exchange whose identity is dictated by the incoming message. * Topic Exchange: The Exchange is a routing table that exists in the context of a virtual host (the multi-tenancy mechanism provided by Qpid or RabbitMQ); its type (such as topic vs. direct) determines the routing policy; a message broker node will have only one topic-based exchange for every topic in Nova. * Direct Exchange: this is a routing table that is created during rpc.call operations; there are many instances of this kind of exchange throughout the life-cycle of a message broker node, one for each rpc.call invoked. * Queue Element: A Queue is a message bucket. Messages are kept in the queue until a Consumer (either Topic or Direct Consumer) connects to the queue and fetch it. Queues can be shared or can be exclusive. Queues whose routing key is 'topic' are shared amongst Workers of the same personality. .. image:: /images/rpc/rabt.png :width: 60% .. RPC Calls --------- The diagram below shows the message flow during an rp.call operation: 1. a Topic Publisher is instantiated to send the message request to the queuing system; immediately before the publishing operation, a Direct Consumer is instantiated to wait for the response message. 2. once the message is dispatched by the exchange, it is fetched by the Topic Consumer dictated by the routing key (such as 'topic.host') and passed to the Worker in charge of the task. 3. once the task is completed, a Direct Publisher is allocated to send the response message to the queuing system. 4. once the message is dispatched by the exchange, it is fetched by the Direct Consumer dictated by the routing key (such as 'msg_id') and passed to the Invoker. .. image:: /images/rpc/flow1.png :width: 60% .. RPC Casts --------- The diagram below the message flow during an rp.cast operation: 1. A Topic Publisher is instantiated to send the message request to the queuing system. 2. Once the message is dispatched by the exchange, it is fetched by the Topic Consumer dictated by the routing key (such as 'topic') and passed to the Worker in charge of the task. .. image:: /images/rpc/flow2.png :width: 60% .. AMQP Broker Load ---------------- At any given time the load of a message broker node running either Qpid or RabbitMQ is function of the following parameters: * Throughput of API calls: the number of API calls (more precisely rpc.call ops) being served by the OpenStack cloud dictates the number of direct-based exchanges, related queues and direct consumers connected to them. * Number of Workers: there is one queue shared amongst workers with the same personality; however there are as many exclusive queues as the number of workers; the number of workers dictates also the number of routing keys within the topic-based exchange, which is shared amongst all workers. The figure below shows the status of a RabbitMQ node after Nova components' bootstrap in a test environment. Exchanges and queues being created by Nova components are: * Exchanges 1. nova (topic exchange) * Queues 1. compute.phantom (phantom is hostname) 2. compute 3. network.phantom (phantom is hostname) 4. network 5. scheduler.phantom (phantom is hostname) 6. scheduler .. image:: /images/rpc/state.png :width: 60% .. RabbitMQ Gotchas ---------------- Nova uses Kombu to connect to the RabbitMQ environment. Kombu is a Python library that in turn uses AMQPLib, a library that implements the standard AMQP 0.8 at the time of writing. When using Kombu, Invokers and Workers need the following parameters in order to instantiate a Connection object that connects to the RabbitMQ server (please note that most of the following material can be also found in the Kombu documentation; it has been summarized and revised here for sake of clarity): * Hostname: The hostname to the AMQP server. * Userid: A valid username used to authenticate to the server. * Password: The password used to authenticate to the server. * Virtual_host: The name of the virtual host to work with. This virtual host must exist on the server, and the user must have access to it. Default is "/". * Port: The port of the AMQP server. Default is 5672 (amqp). The following parameters are default: * Insist: insist on connecting to a server. In a configuration with multiple load-sharing servers, the Insist option tells the server that the client is insisting on a connection to the specified server. Default is False. * Connect_timeout: the timeout in seconds before the client gives up connecting to the server. The default is no timeout. * SSL: use SSL to connect to the server. The default is False. More precisely Consumers need the following parameters: * Connection: the above mentioned Connection object. * Queue: name of the queue. * Exchange: name of the exchange the queue binds to. * Routing_key: the interpretation of the routing key depends on the value of the exchange_type attribute. * Direct exchange: if the routing key property of the message and the routing_key attribute of the queue are identical, then the message is forwarded to the queue. * Fanout exchange: messages are forwarded to the queues bound the exchange, even if the binding does not have a key. * Topic exchange: if the routing key property of the message matches the routing key of the key according to a primitive pattern matching scheme, then the message is forwarded to the queue. The message routing key then consists of words separated by dots (".", like domain names), and two special characters are available; star ("") and hash ("#"). The star matches any word, and the hash matches zero or more words. For example ".stock.#" matches the routing keys "usd.stock" and "eur.stock.db" but not "stock.nasdaq". * Durable: this flag determines the durability of both exchanges and queues; durable exchanges and queues remain active when a RabbitMQ server restarts. Non-durable exchanges/queues (transient exchanges/queues) are purged when a server restarts. It is worth noting that AMQP specifies that durable queues cannot bind to transient exchanges. Default is True. * Auto_delete: if set, the exchange is deleted when all queues have finished using it. Default is False. * Exclusive: exclusive queues (such as non-shared) may only be consumed from by the current connection. When exclusive is on, this also implies auto_delete. Default is False. * Exchange_type: AMQP defines several default exchange types (routing algorithms) that covers most of the common messaging use cases. * Auto_ack: acknowledgement is handled automatically once messages are received. By default auto_ack is set to False, and the receiver is required to manually handle acknowledgment. * No_ack: it disable acknowledgement on the server-side. This is different from auto_ack in that acknowledgement is turned off altogether. This functionality increases performance but at the cost of reliability. Messages can get lost if a client dies before it can deliver them to the application. * Auto_declare: if this is True and the exchange name is set, the exchange will be automatically declared at instantiation. Auto declare is on by default. Publishers specify most the parameters of Consumers (such as they do not specify a queue name), but they can also specify the following: * Delivery_mode: the default delivery mode used for messages. The value is an integer. The following delivery modes are supported by RabbitMQ: * 1 or "transient": the message is transient. Which means it is stored in memory only, and is lost if the server dies or restarts. * 2 or "persistent": the message is persistent. Which means the message is stored both in-memory, and on disk, and therefore preserved if the server dies or restarts. The default value is 2 (persistent). During a send operation, Publishers can override the delivery mode of messages so that, for example, transient messages can be sent over a durable queue. nova-2014.1/doc/source/devref/compute.rst0000664000175400017540000000567312323721476021452 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Virtualization ============== Compute ------- Documentation for the compute manager and related files. For reading about a specific virtualization backend, read Drivers_. The :mod:`nova.compute.manager` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.compute.manager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.virt.connection` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.virt.connection :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.compute.disk` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.compute.disk :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.virt.images` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.virt.images :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.compute.flavors` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.compute.flavors :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.compute.power_state` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.compute.power_state :noindex: :members: :undoc-members: :show-inheritance: Drivers ------- The :mod:`nova.virt.libvirt_conn` Driver ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.virt.libvirt_conn :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.virt.xenapi` Driver ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.virt.xenapi :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.virt.fake` Driver ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.virt.fake :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`compute_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.compute_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`virt_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.virt_unittest :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/addmethod.openstackapi.rst0000664000175400017540000000536712323721476024407 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 OpenStack Foundation All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Adding a Method to the OpenStack API ==================================== The interface is a mostly RESTful API. REST stands for Representational State Transfer and provides an architecture "style" for distributed systems using HTTP for transport. Figure out a way to express your request and response in terms of resources that are being created, modified, read, or destroyed. Routing ------- To map URLs to controllers+actions, OpenStack uses the Routes package, a clone of Rails routes for Python implementations. See http://routes.groovie.org/ for more information. URLs are mapped to "action" methods on "controller" classes in ``nova/api/openstack/__init__/ApiRouter.__init__`` . See http://routes.groovie.org/manual.html for all syntax, but you'll probably just need these two: - mapper.connect() lets you map a single URL to a single action on a controller. - mapper.resource() connects many standard URLs to actions on a controller. Controllers and actions ----------------------- Controllers live in ``nova/api/openstack``, and inherit from nova.wsgi.Controller. See ``nova/api/openstack/compute/servers.py`` for an example. Action methods take parameters that are sucked out of the URL by mapper.connect() or .resource(). The first two parameters are self and the WebOb request, from which you can get the req.environ, req.body, req.headers, etc. Serialization ------------- Actions return a dictionary, and wsgi.Controller serializes that to JSON or XML based on the request's content-type. If you define a new controller, you'll need to define a ``_serialization_metadata`` attribute on the class, to tell wsgi.Controller how to convert your dictionary to XML. It needs to know the singular form of any list tag (e.g. ```` list contains ```` tags) and which dictionary keys are to be XML attributes as opposed to subtags (e.g. ```` instead of ``4``). See `nova/api/openstack/compute/servers.py` for an example. Faults ------ If you need to return a non-200, you should return faults.Fault(webob.exc.HTTPNotFound()) replacing the exception as appropriate. nova-2014.1/doc/source/devref/objectstore.rst0000664000175400017540000000344712323721476022316 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Objectstore - File Storage Service ================================== The :mod:`nova.objectstore.handler` Module ------------------------------------------ .. automodule:: nova.objectstore.handler :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.objectstore.bucket` Module ----------------------------------------- .. automodule:: nova.objectstore.bucket :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.objectstore.stored` Module ----------------------------------------- .. automodule:: nova.objectstore.stored :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.objecstore.image` Module ---------------------------------------- .. automodule:: nova.objectstore.image :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`objectstore_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.objectstore_unittest :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/vmstates.rst0000664000175400017540000000665512323721476021645 0ustar jenkinsjenkins00000000000000Virtual Machine States and Transitions ======================================= Preconditions for commands -------------------------- The following diagrams show the required virtual machine (VM) states and task states for various commands issued by the user: .. graphviz:: digraph states { node [fontsize=10 fontname="Monospace"] /* states */ building [label="BUILDING"] active [label="ACTIVE"] paused [label="PAUSED"] suspended [label="SUSPENDED"] stopped [label="STOPPED"] rescued [label="RESCUED"] resized [label="RESIZED"] soft_deleted [label="SOFT_DELETED"] deleted [label="DELETED"] error [label="ERROR"] /* apis */ create [shape="rectangle"] create -> active create -> error building -> create delete [shape="rectangle"] delete -> deleted building -> delete paused -> delete suspended -> delete stopped -> delete rescued -> delete soft_deleted -> delete error -> delete soft_delete [shape="rectangle"] soft_delete -> soft_deleted soft_delete -> error active -> soft_delete stopped -> soft_delete restore [shape="rectangle"] restore -> active restore -> error soft_deleted -> restore pause [shape="rectangle"] pause -> paused pause -> error active -> pause unpause [shape="rectangle"] unpause -> active unpause -> error paused -> unpause suspend [shape="rectangle"] suspend -> suspended suspend -> error active -> suspend resume [shape="rectangle"] resume -> active resume -> error suspended -> resume start [shape="rectangle"] start -> active start -> error stopped -> start stop [shape="rectangle"] stop -> stopped stop -> error active -> stop error -> stop rescue [shape="rectangle"] rescue -> rescued rescue -> error active -> rescue stopped -> rescue unrescue [shape="rectangle"] unrescue -> active rescued -> unrescue resize [shape="rectangle"] resize -> resized resize -> error active -> resize stopped -> resize confirm_resize [shape="rectangle"] confirm_resize -> active confirm_resize -> error resized -> confirm_resize confirm_resize [shape="rectangle"] revert_resize -> active revert_resize -> error resized -> revert_resize snapshot [shape="rectangle"] snapshot -> active snapshot -> stopped snapshot -> error active -> snapshot stopped -> snapshot backup [shape="rectangle"] backup -> active backup -> stopped backup -> error active -> backup stopped -> backup rebuild [shape="rectangle"] rebuild -> active rebuild -> error active -> rebuild stopped -> rebuild set_admin_password [shape="rectangle"] set_admin_password -> active set_admin_password -> error active -> set_admin_password reboot [shape="rectangle"] reboot -> active reboot -> error active -> reboot stopped -> reboot rescued -> reboot live_migrate [shape="rectangle"] live_migrate -> active live_migrate -> error active -> live_migrate } .. image:: /images/PowerStates1.png .. image:: /images/PowerStates2.png Create instance states ---------------------- The following diagram shows the sequence of VM states, task states, and power states when a new VM instance is created. .. image:: /images/run_instance_walkthrough.pngnova-2014.1/doc/source/devref/glance.rst0000664000175400017540000000201412323721476021211 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Glance Integration - The Future of File Storage =============================================== The :mod:`nova.image.service` Module ------------------------------------ .. automodule:: nova.image.service :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/index.rst0000664000175400017540000000320312323721476021070 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Developer Guide =============== In this section you will find information on Nova's lower level programming APIs. Programming HowTos and Tutorials -------------------------------- .. toctree:: :maxdepth: 3 development.environment unit_tests addmethod.openstackapi gmr Background Concepts for Nova ---------------------------- .. toctree:: :maxdepth: 3 architecture threading vmstates il8n filter_scheduler rpc hooks Other Resources --------------- .. toctree:: :maxdepth: 3 launchpad gerrit jenkins API Reference ------------- .. toctree:: :maxdepth: 3 ../api/autoindex Module Reference ---------------- .. toctree:: :maxdepth: 3 services database compute network api scheduler fakes nova objectstore glance Indices and tables ------------------ * :ref:`genindex` * :ref:`modindex` * :ref:`search` nova-2014.1/doc/source/devref/jenkins.rst0000664000175400017540000000143712323721476021431 0ustar jenkinsjenkins00000000000000Continuous Integration with Jenkins =================================== Nova uses a `Jenkins`_ server to automate development tasks. The Jenkins front-end is at http://jenkins.openstack.org. You must have an account on `Launchpad`_ to be able to access the OpenStack Jenkins site. Jenkins performs tasks such as running static code analysis, running unit tests, and running functional tests. For more details on the jobs being run by Jenkins, see the code reviews on http://review.openstack.org. Tests are run automatically and comments are put on the reviews automatically with the results. You can also get a view of the jobs that are currently running from the zuul status dashboard, http://status.openstack.org/zuul/. .. _Jenkins: http://jenkins-ci.org .. _Launchpad: http://launchpad.net nova-2014.1/doc/source/devref/rc.local0000664000175400017540000000160012323721476020646 0ustar jenkinsjenkins00000000000000#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. ####### These lines go at the end of /etc/rc.local ####### . /lib/lsb/init-functions echo Downloading payload from userdata wget http://169.254.169.254/latest/user-data -O /tmp/payload.b64 echo Decrypting base64 payload openssl enc -d -base64 -in /tmp/payload.b64 -out /tmp/payload.zip mkdir -p /tmp/payload echo Unzipping payload file unzip -o /tmp/payload.zip -d /tmp/payload/ # if the autorun.sh script exists, run it if [ -e /tmp/payload/autorun.sh ]; then echo Running autorun.sh cd /tmp/payload sh /tmp/payload/autorun.sh else echo rc.local : No autorun script to run fi exit 0 nova-2014.1/doc/source/devref/gmr.rst0000664000175400017540000000571012323721476020553 0ustar jenkinsjenkins00000000000000.. Copyright (c) 2014 OpenStack Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Guru Meditation Reports ======================= Nova contains a mechanism whereby developers and system administrators can generate a report about the state of a running Nova executable. This report is called a *Guru Meditation Report* (*GMR* for short). Generating a GMR ---------------- A *GMR* can be generated by sending the *USR1* signal to any Nova process with support (see below). The *GMR* will then be outputted standard error for that particular process. For example, suppose that ``nova-api`` has process id ``8675``, and was run with ``2>/var/log/nova/nova-api-err.log``. Then, ``kill -USR1 8675`` will trigger the Guru Meditation report to be printed to ``/var/log/nova/nova-api-err.log``. Structure of a GMR ------------------ The *GMR* is designed to be extensible; any particular executable may add its own sections. However, the base *GMR* consists of several sections: Package Shows information about the package to which this process belongs, including version information Threads Shows stack traces and thread ids for each of the threads within this process Green Threads Shows stack traces for each of the green threads within this process (green threads don't have thread ids) Configuration Lists all the configuration options currently accessible via the CONF object for the current process Adding Support for GMRs to New Executables ------------------------------------------ Adding support for a *GMR* to a given executable is fairly easy. First import the module (currently residing in oslo-incubator), as well as the Nova version module: .. code-block:: python from nova.openstack.common.report import guru_meditation_report as gmr from nova import version Then, register any additional sections (optional): .. code-block:: python TextGuruMeditation.register_section('Some Special Section', some_section_generator) Finally (under main), before running the "main loop" of the executable (usually ``service.server(server)`` or something similar), register the *GMR* hook: .. code-block:: python TextGuruMeditation.setup_autorun(version) Extending the GMR ----------------- As mentioned above, additional sections can be added to the GMR for a particular executable. For more information, see the inline documentation under :mod:`nova.openstack.common.report` nova-2014.1/doc/source/devref/scheduler.rst0000664000175400017540000000303312323721476021740 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Scheduler ========= The :mod:`nova.scheduler.manager` Module ---------------------------------------- .. automodule:: nova.scheduler.manager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.scheduler.driver` Module --------------------------------------- .. automodule:: nova.scheduler.driver :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.scheduler.chance` Driver --------------------------------------- .. automodule:: nova.scheduler.chance :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`scheduler_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.scheduler_unittest :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/filter_scheduler.rst0000664000175400017540000005201312323721510023274 0ustar jenkinsjenkins00000000000000Filter Scheduler ================ The **Filter Scheduler** supports `filtering` and `weighting` to make informed decisions on where a new instance should be created. This Scheduler supports only working with Compute Nodes. Filtering --------- .. image:: /images/filteringWorkflow1.png During its work Filter Scheduler firstly makes dictionary of unfiltered hosts, then filters them using filter properties and finally chooses hosts for the requested number of instances (each time it chooses the most weighed host and appends it to the list of selected hosts). If it turns up, that it can't find candidates for the next instance, it means that there are no more appropriate hosts where the instance could be scheduled. If we speak about `filtering` and `weighting`, their work is quite flexible in the Filter Scheduler. There are a lot of filtering strategies for the Scheduler to support. Also you can even implement `your own algorithm of filtering`. There are some standard filter classes to use (:mod:`nova.scheduler.filters`): * |AllHostsFilter| - frankly speaking, this filter does no operation. It passes all the available hosts. * |ImagePropertiesFilter| - filters hosts based on properties defined on the instance's image. It passes hosts that can support the specified image properties contained in the instance. * |AvailabilityZoneFilter| - filters hosts by availability zone. It passes hosts matching the availability zone specified in the instance properties. * |ComputeCapabilitiesFilter| - checks that the capabilities provided by the host compute service satisfy any extra specifications associated with the 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 default operator of ``s==`` is used. Valid operators are: :: * = (equal to or greater than as a number; same as vcpus case) * == (equal to as a number) * != (not equal to as a number) * >= (greater than or equal to as a number) * <= (less than or equal to as a number) * s== (equal to as a string) * s!= (not equal to as a string) * s>= (greater than or equal to as a string) * s> (greater than as a string) * s<= (less than or equal to as a string) * s< (less than as a string) * (substring) * (find one of these) Examples are: ">= 5", "s== 2.1.0", " gcc", and " fpu gpu" * |AggregateInstanceExtraSpecsFilter| - checks that the aggregate metadata satisfies any extra specifications associated with the instance type (that have no scope or are scoped with ``aggregate_instance_extra_specs``). It passes hosts that can create the specified instance type. The extra specifications can have the same operators as |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. * |AggregateCoreFilter| - filters hosts by CPU core number with per-aggregate ``cpu_allocation_ratio`` setting. If no per-aggregate value is found, it will fall back to the global default ``cpu_allocation_ratio``. If more than one value is found for a host (meaning the host is in two different aggregate with different ratio settings), the minimum value will be used. * |IsolatedHostsFilter| - filter based on ``image_isolated``, ``host_isolated`` and ``restrict_isolated_hosts_to_isolated_images`` flags. * |JsonFilter| - allows simple JSON-based grammar for selecting hosts. * |RamFilter| - filters hosts by their RAM. Only hosts with sufficient RAM to host the instance are passed. * |AggregateRamFilter| - filters hosts by RAM with per-aggregate ``ram_allocation_ratio`` setting. If no per-aggregate value is found, it will fall back to the global default ``ram_allocation_ratio``. If more than one value is found for a host (meaning the host is in two different aggregate with different ratio settings), the minimum value will be used. * |DiskFilter| - filters hosts by their disk allocation. Only hosts with sufficient disk space to host the instance are passed. ``disk_allocation_ration`` setting. It's virtual disk to physical disk allocation ratio and it's 1.0 by default. The total allow allocated disk size will be physical disk multiplied this ratio. * |NumInstancesFilter| - filters hosts by number of running instances on it. hosts with too many instances will be filtered. ``max_instances_per_host`` setting. Maximum number of instances allowed to run on this host, the host will be ignored by scheduler if more than ``max_instances_per_host`` are already existing on the host. * |IoOpsFilter| - filters hosts by concurrent I/O operations on it. hosts with too many concurrent I/O operations will be filtered. ``max_io_ops_per_host`` setting. Maximum number of I/O intensive instances allowed to run on this host, the host will be ignored by scheduler if more than ``max_io_ops_per_host`` instances such as build/resize/snapshot etc are running on it. * |PciPassthroughFilter| - Filter that schedules instances on a host if the host has devices to meet the device requests in the 'extra_specs' for the flavor. * |SimpleCIDRAffinityFilter| - allows to put a new instance on a host within the same IP block. * |DifferentHostFilter| - allows to put the instance on a different host from a set of instances. * |SameHostFilter| - puts the instance on the same host as another instance in a set of of instances. * |RetryFilter| - filters hosts that have been attempted for scheduling. Only passes hosts that have not been previously attempted. * |TrustedFilter| - filters hosts based on their trust. Only passes hosts that meet the trust requirements specified in the instance properties. * |TypeAffinityFilter| - Only passes hosts that are not already running an instance of the requested type. * |AggregateTypeAffinityFilter| - limits instance_type by aggregate. * |ServerGroupAntiAffinityFilter| - This filter implements anti-affinity for a server group. First you must create a server group with a policy of 'anti-affinity' via the server groups API. Then, when you boot a new server, provide a scheduler hint of 'group=' where is the UUID of the server group you created. This will result in the server getting added to the group. When the server gets scheduled, anti-affinity will be enforced among all servers in that group. * |ServerGroupAffinityFilter| - This filter works the same way as ServerGroupAffinityFilter. The difference is that when you create the server group, you should specify a policy of 'affinity'. * |GroupAntiAffinityFilter| - This filter is deprecated in favor of ServerGroupAntiAffinityFilter. Note that this should not be enabled at the same time as GroupAffinityFilter or neither filter will work properly. * |GroupAffinityFilter| - This filter is deprecated in favor of ServerGroupAffinityFilter. Note that this should not be enabled at the same time as GroupAntiAffinityFilter or neither filter will work properly. * |AggregateMultiTenancyIsolation| - isolate tenants in specific aggregates. * |AggregateImagePropertiesIsolation| - isolates hosts based on image properties and aggregate metadata. * |MetricsFilter| - filters hosts based on metrics weight_setting. Only hosts with the available metrics are passed. Now we can focus on these standard filter classes in details. I will pass the simplest ones, such as |AllHostsFilter|, |CoreFilter| and |RamFilter| are, because their functionality is quite simple and can be understood just from the code. For example class |RamFilter| has the next realization: :: class RamFilter(filters.BaseHostFilter): """Ram Filter with over subscription flag""" def host_passes(self, host_state, filter_properties): """Only return hosts with sufficient available RAM.""" instance_type = filter_properties.get('instance_type') requested_ram = instance_type['memory_mb'] free_ram_mb = host_state.free_ram_mb total_usable_ram_mb = host_state.total_usable_ram_mb used_ram_mb = total_usable_ram_mb - free_ram_mb return total_usable_ram_mb * FLAGS.ram_allocation_ratio - used_ram_mb >= requested_ram Here ``ram_allocation_ratio`` means the virtual RAM to physical RAM allocation ratio (it is ``1.5`` by default). Really, nice and simple. Next standard filter to describe is |AvailabilityZoneFilter| and it isn't difficult too. This filter just looks at the availability zone of compute node and availability zone from the properties of the request. Each compute service has its own availability zone. So deployment engineers have an option to run scheduler with availability zones support and can configure availability zones on each compute host. This classes method ``host_passes`` returns ``True`` if availability zone mentioned in request is the same on the current compute host. The |ImagePropertiesFilter| filters hosts based on the architecture, hypervisor type, and virtual machine mode specified in the instance. E.g., an instance might require a host that supports the arm architecture on a qemu compute host. The |ImagePropertiesFilter| will only pass hosts that can satisfy this request. These instance properties are populated from properties define on the instance's image. E.g. an image can be decorated with these properties using ``glance image-update img-uuid --property architecture=arm --property hypervisor_type=qemu`` Only hosts that satisfy these requirements will pass the |ImagePropertiesFilter|. |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. Now we are going to |IsolatedHostsFilter|. There can be some special hosts reserved for specific images. These hosts are called **isolated**. So the images to run on the isolated hosts are also called isolated. This Scheduler checks if ``image_isolated`` flag named in instance specifications is the same that the host has. Isolated hosts can run non isolated images if the flag ``restrict_isolated_hosts_to_isolated_images`` is set to false. |DifferentHostFilter| - its method ``host_passes`` returns ``True`` if host to place instance on is different from all the hosts used by set of instances. |SameHostFilter| does the opposite to what |DifferentHostFilter| does. So its ``host_passes`` returns ``True`` if the host we want to place instance on is one of the set of instances uses. |SimpleCIDRAffinityFilter| looks at the subnet mask and investigates if the network address of the current host is in the same sub network as it was defined in the request. |GroupAntiAffinityFilter| its method ``host_passes`` returns ``True`` if host to place the instance on is not in a group of hosts. The group of hosts is maintained by a group name. The scheduler hint contains the group name. |GroupAffinityFilter| its method ``host_passes`` returns ``True`` if host to place the instance on is in a group of hosts. The group of hosts is maintained by a group name. The scheduler hint contains the group name. |JsonFilter| - this filter provides the opportunity to write complicated queries for the hosts capabilities filtering, based on simple JSON-like syntax. There can be used the following operations for the host states properties: ``=``, ``<``, ``>``, ``in``, ``<=``, ``>=``, that can be combined with the following logical operations: ``not``, ``or``, ``and``. For example, there is the query you can find in tests: :: ['and', ['>=', '$free_ram_mb', 1024], ['>=', '$free_disk_mb', 200 * 1024] ] This query will filter all hosts with free RAM greater or equal than 1024 MB and at the same time with free disk space greater or equal than 200 GB. Many filters use data from ``scheduler_hints``, that is defined in the moment of creation of the new server for the user. The only exception for this rule is |JsonFilter|, that takes data in some strange difficult to understand way. 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 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|. To use filters you specify next two settings: * ``scheduler_available_filters`` - Defines filter classes made available to the scheduler. This setting can be used multiple times. * ``scheduler_default_filters`` - Of the available filters, defines those that the scheduler uses by default. The default values for these settings in nova.conf are: :: --scheduler_available_filters=nova.scheduler.filters.standard_filters --scheduler_default_filters=RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter' With this configuration, all filters in ``nova.scheduler.filters`` would be available, and by default the |RamFilter|, |ComputeFilter|, |AvailabilityZoneFilter|, |ComputeCapabilitiesFilter|, |ImagePropertiesFilter|, |ServerGroupAntiAffinityFilter|, and |ServerGroupAffinityFilter| would be used. If you want to create **your own filter** you just need to inherit from |BaseHostFilter| and implement one method: ``host_passes``. This method should return ``True`` if host passes the filter. It takes ``host_state`` (describes host) and ``filter_properties`` dictionary as the parameters. As an example, nova.conf could contain the following scheduler-related settings: :: --scheduler_driver=nova.scheduler.FilterScheduler --scheduler_available_filters=nova.scheduler.filters.standard_filters --scheduler_available_filters=myfilter.MyFilter --scheduler_default_filters=RamFilter,ComputeFilter,MyFilter With these settings, nova will use the ``FilterScheduler`` for the scheduler driver. The standard nova filters and MyFilter are available to the FilterScheduler. The RamFilter, ComputeFilter, and MyFilter are used by default when no filters are specified in the request. Weights ------- Filter Scheduler uses the so called **weights** during its work. A weigher is a way to select the best suitable host from a group of valid hosts by giving weights to all the hosts in the list. In order to prioritize one weigher against another, all the weighers have to define a multiplier that will be applied before computing the weight for a node. All the weights are normalized beforehand so that the multiplier can be applied easily. Therefore the final weight for the object will be:: weight = w1_multiplier * norm(w1) + w2_multiplier * norm(w2) + ... A weigher should be a subclass of ``weights.BaseHostWeigher`` and they must implement the ``weight_multiplier`` and ``weight_object`` methods. If the ``weight_objects`` method is overriden it just return a list of weights, and not modify the weight of the object directly, since final weights are normalized and computed by ``weight.BaseWeightHandler``. The Filter Scheduler weighs hosts based on the config option `scheduler_weight_classes`, this defaults to `nova.scheduler.weights.all_weighers`, which selects the following weighers: * |RamWeigher| Hosts are then weighted and sorted with the largest weight winning. If the multiplier is negative, the host with less RAM available will win (useful for stacking hosts, instead of spreading). * |MetricsWeigher| This weigher can compute the weight based on the compute node host's various metrics. The to-be weighed metrics and their weighing ratio are specified in the configuration file as the followings:: metrics_weight_setting = name1=1.0, name2=-1.0 Filter Scheduler finds local list of acceptable hosts by repeated filtering and weighing. Each time it chooses a host, it virtually consumes resources on it, so subsequent selections can adjust accordingly. It is useful if the customer asks for the some large amount of instances, because weight is computed for each instance requested. .. image:: /images/filteringWorkflow2.png In the end Filter Scheduler sorts selected hosts by their weight and provisions instances on them. P.S.: you can find more examples of using Filter Scheduler and standard filters in :mod:``nova.tests.scheduler``. .. |AllHostsFilter| replace:: :class:`AllHostsFilter ` .. |ImagePropertiesFilter| replace:: :class:`ImagePropertiesFilter ` .. |AvailabilityZoneFilter| replace:: :class:`AvailabilityZoneFilter ` .. |BaseHostFilter| replace:: :class:`BaseHostFilter ` .. |ComputeCapabilitiesFilter| replace:: :class:`ComputeCapabilitiesFilter ` .. |ComputeFilter| replace:: :class:`ComputeFilter ` .. |CoreFilter| replace:: :class:`CoreFilter ` .. |AggregateCoreFilter| replace:: :class:`AggregateCoreFilter ` .. |IsolatedHostsFilter| replace:: :class:`IsolatedHostsFilter ` .. |JsonFilter| replace:: :class:`JsonFilter ` .. |RamFilter| replace:: :class:`RamFilter ` .. |AggregateRamFilter| replace:: :class:`AggregateRamFilter ` .. |DiskFilter| replace:: :class:`DiskFilter ` .. |NumInstancesFilter| replace:: :class:`NumInstancesFilter ` .. |IoOpsFilter| replace:: :class:`IoOpsFilter ` .. |PciPassthroughFilter| replace:: :class:`PciPassthroughFilter ` .. |SimpleCIDRAffinityFilter| replace:: :class:`SimpleCIDRAffinityFilter ` .. |GroupAntiAffinityFilter| replace:: :class:`GroupAntiAffinityFilter ` .. |GroupAffinityFilter| replace:: :class:`GroupAffinityFilter ` .. |DifferentHostFilter| replace:: :class:`DifferentHostFilter ` .. |SameHostFilter| replace:: :class:`SameHostFilter ` .. |RetryFilter| replace:: :class:`RetryFilter ` .. |TrustedFilter| replace:: :class:`TrustedFilter ` .. |TypeAffinityFilter| replace:: :class:`TypeAffinityFilter ` .. |AggregateTypeAffinityFilter| replace:: :class:`AggregateTypeAffinityFilter ` .. |AggregateInstanceExtraSpecsFilter| replace:: :class:`AggregateInstanceExtraSpecsFilter ` .. |AggregateMultiTenancyIsolation| replace:: :class:`AggregateMultiTenancyIsolation ` .. |RamWeigher| replace:: :class:`RamWeigher ` .. |AggregateImagePropertiesIsolation| replace:: :class:`AggregateImagePropertiesIsolation ` .. |MetricsFilter| replace:: :class:`MetricsFilter ` nova-2014.1/doc/source/devref/services.rst0000664000175400017540000000455312323721476021615 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. .. _service_manager_driver: Services, Managers and Drivers ============================== The responsibilities of Services, Managers, and Drivers, can be a bit confusing to people that are new to nova. This document attempts to outline the division of responsibilities to make understanding the system a little bit easier. Currently, Managers and Drivers are specified by flags and loaded using utils.load_object(). This method allows for them to be implemented as singletons, classes, modules or objects. As long as the path specified by the flag leads to an object (or a callable that returns an object) that responds to getattr, it should work as a manager or driver. The :mod:`nova.service` Module ------------------------------ .. automodule:: nova.service :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.manager` Module ------------------------------ .. automodule:: nova.manager :noindex: :members: :undoc-members: :show-inheritance: Implementation-Specific Drivers ------------------------------- A manager will generally load a driver for some of its tasks. The driver is responsible for specific implementation details. Anything running shell commands on a host, or dealing with other non-python code should probably be happening in a driver. Drivers should minimize touching the database, although it is currently acceptable for implementation specific data. This may be reconsidered at some point. It usually makes sense to define an Abstract Base Class for the specific driver (i.e. VolumeDriver), to define the methods that a different driver would need to implement. nova-2014.1/doc/source/devref/network.rst0000664000175400017540000000252112323721476021454 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Networking ========== The :mod:`nova.network.manager` Module -------------------------------------- .. automodule:: nova.network.manager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.network.linux_net` Driver ---------------------------------------- .. automodule:: nova.network.linux_net :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`network_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.network_unittest :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/il8n.rst0000664000175400017540000000170012323721476020633 0ustar jenkinsjenkins00000000000000Internationalization ==================== nova uses `gettext `_ so that user-facing strings such as log messages appear in the appropriate language in different locales. To use gettext, make sure that the strings passed to the logger are wrapped in a ``_()`` function call. For example:: LOG.debug(_("block_device_mapping %s"), block_device_mapping) Do not use ``locals()`` for formatting messages because: 1. It is not as clear as using explicit dicts. 2. It could produce hidden errors during refactoring. 3. Changing the name of a variable causes a change in the message. 4. It creates a lot of otherwise unused variables. If you do not follow the project conventions, your code may cause the LocalizationTestCase.test_multiple_positional_format_placeholders test to fail in nova/tests/test_localization.py. The ``_()`` function is found by doing:: from nova.openstack.common.gettextutils import _ nova-2014.1/doc/source/devref/api.rst0000664000175400017540000001344512323721476020543 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. API Endpoint ============ Nova has a system for managing multiple APIs on different subdomains. Currently there is support for the OpenStack API, as well as the Amazon EC2 API. Common Components ----------------- The :mod:`nova.api` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.api.cloud` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.cloud :noindex: :members: :undoc-members: :show-inheritance: OpenStack API ------------- The :mod:`openstack` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack :noindex: :members: :undoc-members: :show-inheritance: The :mod:`auth` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.auth :noindex: :members: :undoc-members: :show-inheritance: The :mod:`backup_schedules` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.backup_schedules :noindex: :members: :undoc-members: :show-inheritance: The :mod:`faults` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.faults :noindex: :members: :undoc-members: :show-inheritance: The :mod:`flavors` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.flavors :noindex: :members: :undoc-members: :show-inheritance: The :mod:`images` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.images :noindex: :members: :undoc-members: :show-inheritance: The :mod:`servers` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.servers :noindex: :members: :undoc-members: :show-inheritance: The :mod:`sharedipgroups` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.openstack.sharedipgroups :noindex: :members: :undoc-members: :show-inheritance: EC2 API ------- The :mod:`nova.api.ec2` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.ec2 :noindex: :members: :undoc-members: :show-inheritance: The :mod:`apirequest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.ec2.apirequest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cloud` Module ~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.ec2.cloud :noindex: :members: :undoc-members: :show-inheritance: The :mod:`images` Module ~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.ec2.images :noindex: :members: :undoc-members: :show-inheritance: The :mod:`metadatarequesthandler` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.api.ec2.metadatarequesthandler :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`api_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`api_integration` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api_integration :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cloud_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.cloud_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`api.fakes` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.fakes :noindex: :members: :undoc-members: :show-inheritance: The :mod:`api.test_wsgi` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.test_wsgi :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_api` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_api :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_auth` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_auth :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_faults` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_faults :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_flavors` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_flavors :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_images` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_images :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_servers` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_servers :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_sharedipgroups` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: nova.tests.api.openstack.test_sharedipgroups :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/devref/launchpad.rst0000664000175400017540000000311712323721476021724 0ustar jenkinsjenkins00000000000000Project hosting with Launchpad ============================== `Launchpad`_ hosts the Nova project. The Nova project homepage on Launchpad is http://launchpad.net/nova. Launchpad credentials --------------------- Creating a login on Launchpad is important even if you don't use the Launchpad site itself, since Launchpad credentials are used for logging in on several OpenStack-related sites. These sites include: * `Wiki`_ * Gerrit (see :doc:`gerrit`) * Jenkins (see :doc:`jenkins`) Mailing list ------------ The mailing list email is ``openstack@lists.openstack.org``. This is a common mailing list across the OpenStack projects. To participate in the mailing list: #. Subscribe at http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack The mailing list archives are at http://lists.openstack.org/pipermail/openstack. Bug tracking ------------ Report Nova bugs at https://bugs.launchpad.net/nova Feature requests (Blueprints) ----------------------------- Nova uses Launchpad Blueprints to track feature requests. Blueprints are at https://blueprints.launchpad.net/nova. Technical support (Answers) --------------------------- Nova uses Launchpad Answers to track Nova technical support questions. The Nova Answers page is at https://answers.launchpad.net/nova. Note that `Ask OpenStack`_ (which are not hosted on Launchpad) can also be used for technical support requests. .. _Launchpad: http://launchpad.net .. _Wiki: http://wiki.openstack.org .. _Nova Team: https://launchpad.net/~nova .. _OpenStack Team: https://launchpad.net/~openstack .. _Ask OpenStack: http://ask.openstack.org/ nova-2014.1/doc/source/devref/gerrit.rst0000664000175400017540000000124612323721476021262 0ustar jenkinsjenkins00000000000000Code Reviews with Gerrit ======================== Nova uses the `Gerrit`_ tool to review proposed code changes. The review site is http://review.openstack.org. Gerrit is a complete replacement for Github pull requests. `All Github pull requests to the Nova repository will be ignored`. See `Gerrit Workflow Quick Reference`_ for information about how to get started using Gerrit. See `Gerrit, Jenkins and Github`_ for more detailed documentation on how to work with Gerrit. .. _Gerrit: http://code.google.com/p/gerrit .. _Gerrit, Jenkins and Github: http://wiki.openstack.org/GerritJenkinsGithub .. _Gerrit Workflow Quick Reference: http://wiki.openstack.org/GerritWorkflow nova-2014.1/doc/source/devref/fakes.rst0000664000175400017540000000341312323721476021055 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Fake Drivers ============ .. todo:: document general info about fakes When the real thing isn't available and you have some development to do these fake implementations of various drivers let you get on with your day. The :mod:`nova.virt.fake` Module -------------------------------- .. automodule:: nova.virt.fake :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.auth.fakeldap` Module ------------------------------------ .. automodule:: nova.auth.fakeldap :noindex: :members: :undoc-members: :show-inheritance: The :class:`nova.tests.service_unittest.FakeManager` Class ---------------------------------------------------------- .. autoclass:: nova.tests.service_unittest.FakeManager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`nova.tests.api.openstack.fakes` Module ------------------------------------------------ .. automodule:: nova.tests.api.openstack.fakes :noindex: :members: :undoc-members: :show-inheritance: nova-2014.1/doc/source/images/0000775000175400017540000000000012323722546017222 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/source/images/run_instance_walkthrough.png0000664000175400017540000047653412323721476025063 0ustar jenkinsjenkins00000000000000‰PNG  IHDR§}¾ç½{ pHYsœœ&Í:4}IDATxÚ́] \MÙ?W½Ô ½PR– YÊhAY*d-»́zB E+•-YZ,-dyÙ_₫c˜lC™1̀¨¬CeFÙfZ,…B…^ôÊưŸ{ï{·×Û¼TÎ÷“çÜsÏ=÷Üû½ß³ƯßưeÇB£…2ºˆ¿…´‰ÿ+r • ´ˆ8÷ØglgÅ-@ñ÷m¡acHÀË.k3 á¶ơª+Rù»6̉2à†at ¿¿™À¸ú]i`+ƒa}HIŒW툟Eü})$Pÿé›i⢢È8^a*4’ "##qüvh̉Ûø!Öú :<ª̀ÓN;àêêê´0 üz½è/}áóXYEwùT ~ƒa­“÷yظÄĐÏ|uL%/…£gíFç0găù#«ÇP/<°Ç{cX6pÀñs_đ’è2/°ÅÈLf8t>üµ±·_2¸ û)N4‡ÇF††z¦Œˆˆđöö†a¥§æ–âºLE2êí½æ¶¯Cj2§WÆÏ_0è$¨ṽ&‘k“^ÙØ¶MZL$^å&ZƠĐäÑ¿Ù"r©ghY΀¿I ‚³'Äs©€yD I„¥ư\±ÈÔdâđ@ßi Ÿ?ÅußóR¶ëY/­:RÄÀß×A±WéÔåÔ-`Ăó˜N#Ö¨ä}é¡‹h )wë0óLjJsCĂ¢!Q9Æ+2‚ªiú†X–[wđR_*éΩJlḈ —8V4·¯w/ ó µ;ÑiL ëăÿÑ{K3T7U5Nåàóx ¥+ ùH©O@í̉£₫K-aC‘»¡Vk…q̀B‰dŒœœ̣«SÊζ¦éuê¹Àa₫t7»«6EÄ'KưZ²•TÓôˆ?Äâ¯1V¡¿ü SÁç÷íØJjâ‚—µu‰ÆÜ¸ñ̃ÊÊGvö±1®ˆ¿/†°-[G;¹‹_!ƒqçE™©X|xøz±H+«$I®‘GḌË*jˆ¿/ỊhˆQø‰_"I^uª\ «Ä}C6₫ C'nÆ8&ºù(÷¦ÊG-Ư¶æ†ă±Ä©·Yô•—Û¥?b́†y4)₫róơơXßêđ§µ:v₫đ:Oµ¹{ÿ¡Å œéM~₫C†nwHXÎÑ~y™e9.TdªöNúyS³1TØ¢o¹üÓÙ SùöúsÀ°jb³Wéa­‰É\̀'…å¼ư´AÍ8¬M* ¶iE…C®•- Ê©—-́Dn¸AM*Yèơ0Ê­ ̀~k`¼—•ƒßÚZ²$pxú[ KÀ€Dr:Û ĂD¿L½ HOI1_t Ïôdžă¿_Úd~MêصgÍâơ`‚‘ư{₫uûG_ç}/̣LÔs÷p˜^­̃ÓíNöwHµYƒ?)zêó· ·h₫(Đ̉¤éf>> ¥ÿÉc»záx)LøtF„„ø»9…'ăÅA¡—rÊ’OÍ[n^ ÀTÈÊÎĐĐ›©©!!!SʱÀ\øŒ^Æ>¬†s9°1;OƯÙv(ŇäXÀÀíæÆåp yÄtF›Éù'Y`!}ö$ç“ó&ºäfÈbv8-áñ(è|\1â91‰ơ£-he•7BOÖÅø‡C̣V,t \̀Đ›z†pfßEÛ×ø-Û°5ëv²éØQ’GQ|äW¾/|eÔ­ùĂÄ’E„LvtÜ¿0-ñ¥\¾{Ñj<>‡;·A´ÜØ(ú餧Ⴣ‰€9Å®oÓy:~Üź \.—»O2¥ĂFĂÈkkkÉ«zöÛÛZN°ïÉ#¤à1Đ9ßÏê6<y4%Q‘½¼µR‘BaùÇÙÎÎêh₫å‹a±Ë<*~÷~ïƯ”•å] —÷j*pï̃å^½†(=Améû×ï̃¿̉Ñ!º¯*Í¿ñơ6Ùùk³̃=O¬y¨·hÿÈe~u₫‚ƒƒưüüÔƠ믒9|üt›ª®fo-%%%Y‰Ÿ=éĐQEʳ¢>ôWŸäÁ.¨(yw Ë¥6Ÿø%ÍǪ“›‘Qfbâ‰ø`æ̀™ơI¬]—î<²35›¥ab¢¶yËúË×"₫Èñ»‘Qư\ÉÅÔ‡mơ:ÉÚÛF§£˜Îädµb¹NăÓ53‰aØÅÜUËÀĐÆ̃OôI?=àÍèÁÄqÜqˆá‰¤ó1lÇ÷Ü•)ÀƠuÎëØ#'€­§›Z4çWÚÎÓ̃À01'nr¼F»Eư #‰ËƯ®ùkbC<]ÛDÇœâê bcá±8~ù‹\‰̣(Dnñ^æªøƒäí\GLH₫•ơ6‹4©>»7w“H–ÚjNæàR1ˆ¿œiƒMÚµ̣›˜-›Ö_g8ù¯ØÍÔ]s6ÅÅytÄ4‚.å–PäAlƯrÂV¤₫ă²̣̀Ïá`±±_¸Ï9vH=™₫üªY{fúsñû"ßLGt²N¿ùÛ ±̉ḳÂK§´‡?™â¦5ôq̉ÍYë¹NÄè† ëÖ¬Y×ÈêO÷u{áŸpV‰“5w"ç5¹©C+ïdœú¥æ*đ[„é2[9Gt“‚~ÿ8>ƒÿZÆŸ©àÀ/ÿa1 °b*Î× ¼J¼%øP̣Ö£’ư“ü€œø=[,)ù×s\'Âæ¾6µơôç¿ <€ ~©—GDÛBú`Û.8&I"on]ƯV ₫¼zơªmÛ¶ơp%WN-Åq˜Fö¦WÇ‹‘o-uvFøµĂ'±øs¿\i„ü©w0>>̃\8,$ÍÈY„¹Ù³êÇÛ»FÙ†Hät›ÎÀF`₫ŸXå„JCñ:ƯªỄW4M] ß₫:÷Î5ÓÑvb‡äÿ›¯ÛMÖ¢¥¥»`-Êd6ç“ǻƠ«=ê¿Ô7äÛ_O¬NfóK„₫ß̃Ü5Å7ÏÂM&S Ă–Ø¬ H 6€›ăÆ/DüƠ+jd}ô(OÀx¢f±‡ăă躴‹aTV¶?|À¡:íÉbWtsæL/Yó×$yhü÷-`gÚ-,|óè¹Kå“'„ë‰[§L‘ü4¾1™65ûƯÁ{×ø3 ƯºuéÓ«‡œÄS¦ø z›çöYöª¥Ư¥Ñ]oÓ´¿†ʬG÷ß—•ÉçO0hâ=½?_Mí’âOä4cưM¡m‰Œ1“ø zéË€êÑȨ?Aff´±±, Æ¢úSÚÚÚơv1弦ȃÔùkÈÖÿ=26î €Ø¬¿ÁâÅ‹ëçJÊÊù*j2ÆÄ(ܵkÓ’%Z±±W&L€üâ”S,ëIă₫‹ÂjüÙbX§çăV₫ 'ªæ\ª›bY¾‹ÄĂ7'†äÁß„ÁGà<²ƠôoÜí_’đö%®—ZỤ₫̃Ḉ³|HÂÔ†L>ôïàưƯ|*Âđk₫‚{]ùSî ]7ÈƠæ¯)ǘ|ÜXYà÷÷ọ̣̈U"CđîsÔ{-:ơ¬êÔđD'æv­ÅصgÆÜ|;¨“2e¿{d“6$ØúóºĂĐ"%uơR*V‹₫tlÇŒéKkư)d¢Hp¯Um1s…f»Ô¦RÈ-æe ™+,$œbjii‰p© #YZZ̀>˘¢ùóy…Å¥0%³'¼Un–ëdÔk±ÁĂ²aö À»;a$KÅôüµ^OÓê×È ĂÇŸ7Ë›¶Đç`æÙ³â&Đ₫)´‚>«ªƠ|H& LÈƯ—½˜ôs¾øÊ~€9§(ûƯ„Ô'®œ:bºx¡…t˜x”Âñ&ÁwZZ-lQÿ¥¡’=fJĂ¢qÜ’Ă={Ø ₫ê5¿†ƯËâ›ă4­èu †á¸ÀˆmPÎêEf#Ç룦¥¿ùUI¯XRÙ‹‰₫µ/ơÚ́ÈL'«Sâ³Ûäơa#‚Í^M?+sS aóđæÓ'8H&ΠŶ‚áá/ׂlM°ư“©4̣D+RÑ ÿÆ6D₫¯7Úüµdưùß›£‡ă\€íˆŒ|éí½ñ÷mrçAKñ¥âºZ*nííƯÍ_WC ÄrP_’ä‰RŒB9ö×|>‡ÁpCüPQ©'ßÂ5³¿–ë?„ÁÀ·₫ênôûëàm`23¯ q́NܧơyU2ü_\¼`¢OĂßLMG56₫¾ư5ÛÉmîF_ÚÀd‘¡¡??ªŸ‹ùœÿë*¿’ëμ̣̉¹ngu.•œÅæ>ÚĂ6Zd¾60m}(üM ÖON¾ƯùûBö×ܸª±w=¶̣í¯ ³2€đÍ?~³ZmÈØÆv;Çï—ö] ™Üe˜f–*ñ»ï|^kMÍF\6RÈ·¿1¨êûÚuÑÄ.øàÙsGÛv.Ă¶Ù–”æ4åû÷Æ>í¢xæàÁ’yó4Đø½a¡´¤H]CS»¢›óæ-G₫Cu× ß`àdT6÷éÓ«»")•”•»i÷²Díß·ÇÖèç»À€n/‹B8—k}âDø”)D{9b¤²È2ô¨₫üFH¼N‘'>™"Ă₫"O2ơ_¾p×í"ók1  uv–³@,ÿƠ7Ä–½•¹ä¡ö¯A">áwG‡ &₫ăÿ 6ñWßÈâNwô?›₫œ·¬=s;éÛ78œWëj1X2½ˆ ¶À›2gJIùoØ0¤¿zGö±t6ØN`S†Ø®;jê2_¢ƠäH ÏeEơgĂ ̣ä@ßÀñW¯¨Ñü5édw¿¬½•jJäÆ4-û¥SqÖ“œd±[­ÙSR"]}¶–XIÙ ơ?¿–.v†0øÇwf¥|Ă=kV@¯Hù³hä?̣fỊ́jD—Üôí¯P“•R©)6NŸ5 ÿˆ?Äâñ‡€øCü! ₫ˆ?Äâñ‡øC@ü! ₫ˆ?Äâñ÷=đ׸ÜÍ" ư!₫0¼¼¼¢¢¢à/ Sø«à±]RS³ßg££!aƯ\Â\S¸Ù‘ r¥>›T$¼ruч÷ñIlÖ-üj¨Øưáx( ˆˆˆoïÀB>ˆ³±5Kºœi "å(wo*C O…ɼÓđpÅ/:–ôX÷¹Q£©?©;nÇU<=%Ÿß×Aơàè€ú„ÿÈ”°‘‚,:Oצ`XLàfNäàúÓ±3ºÖÿ•C̣à¯û8'2Æ[₫!©©©Ơ’14§×À´đ'©Z1 Pu€¬G₫Ô“z‡úÓ€r:C…c1́K‘w3lÀ¬Ǿ̣œ4Ñ’%¿¶i#µ: ̃É‘lMÓ7Dư‰®ï&¹Ö›¤̣$Ë̀ç‹À2àzv ¶lû•íË>0ôN‹!p, ôjÀûÅ?ñ†qc‰W3)ʬ{¨Ñ3LØÀđäDkvv¦}p7W… ̀|ÿLÛ:ÆPäù_|>¼Mñ­ ư×R³q‡TPsDâUW̉6ºT ́Xô¦̉—Œo«ÛëùZm7üs÷.}‡²i€rî‘₫\EḄ„£º`øk­Ạo“mĐ¿ï×oMº™´àgœĂ¤ÜO•¾CßÔtä7æ/åØ^ëé Bvœ¦b pÜq ût₫åŸB=£Ësn”d\p{æ³q½ù?Ô«7Ïu¯Ÿe_âLiÓü• Xæ“@%ؽBBBuèÓ±=öEÀËÀ>&DÙÁ‘ s¸´/t÷¡5d;¹¬́‚éXÁ¦çæÖEw£¸'$/#;3­—ƠÊƠgé–-}{´\¶Đe[øB¢ß©?'pxµ.FÉÛJVä¤ ÿ#˜ %À î÷‘Él.ơ6%wÁï’S¦ <ºƯjæ¢çLºœùíơɃ¿ÔM‡đ&ßiÅŸ ^/8Ú »Ëz;‰ă9$7¢0›à+@l!G.I© ÷@ wªïàâ#xºGôéVëd]ÆêU«` Gùiu[¾œ¨QÇUíW­K¢Öœ Àÿ` rØ2Ÿ+ b0đNá„Z»­¼Rͨ,ÄÇïă÷to ơg“D;́=íM¥¹ Q„´ÑoŒS83+¤·n}áç§#;oâï @ÿOŒÿ¡}G-‰qºøBŸ¼±œb×êĂ ?¿µrK‡øû&Œ^ -¹ ““[¹ºI»₫ñGÔ°aƠzO8®Œaó¿í%7µú“äƯ₫;£o"F:yUơ䇲·Oó2»u%^AÛØÈL:l˜`çÁĂ”Ư­ÉN2jÿ¾(̣ªZ+<A‘×pÇ_ÁÁÄ+((¨̃®BḌÈÎH<|°̀‰ˆ¢Û,Í´ª)5N¡«ÛªF?~ÿ‚€̀:t¨̃.æÖÓb£ÚÎĐÄBÆâG_¬ê˹ºi5®Åê£₫tvv®Ÿ+ÙËư±ßÈIRwI£PN­_ơ- ‹<ÙÊÄ¡C›W4J₫¼‰æü !Ö`eJ•‘ H ĂºZ;{¯qøUNøđ¸Ä;|ü—Ûo­Z‘½2̀¦ăû¿ăaĂbooLYñ®·Íê«Ú›Ÿ¶$™GœJ¶r̉¿Èeüvå¯v]{+˜8..ÔÉ©Ü:ƒƠøôï²ơÆ?~̣ æ”áøåH‚­Üü\Ø£N”m9(Âñ}D|Ṿ϶¾i—¼â—ï₫;qi'*ÍC°œă7Ë*̃zƠ•é£ù?àÛtÚY5wyt¯÷¥/æ©¿°°°iFzd“¿̃V::ys›1ëÓÉUDç¯ịrÏÿÏÀ>ÙÉsL\ôy0g¡§^NTØÔÆÚ1༠ÈùOjn)©ºa§K<î"¾Ú7ñYD|–„h ÷1§¹ñ«Ø¼–¼&ŒúÄnÑ„OÑ "Æm¡/)mX±¬£ôÇ̀†çúUvG®®(`7ºV£‰´î.óÈùëå,wˆ¦£É·B8KT|dóVä́¬)|¶8(4møû–ø-n§ér?aóæ/·ÿ ²²út邸«_·QÎ|]!k¯¿< ûö»,”ÙIé̉Å鯾Á`0Zzơ¦™V$G. WÄrÂ\Ư$ׯ‚½³…¨₫ü6è¤Ûv_âÏ$tµ$ÖÎ|ùï?£¬e*ÉƠ˜×̃µ+tÉ¢;zö,Ü8wÔ₫}{8Np„t>_ .Y"° 7ơ_$Ü¥K—9sæÔÛơK¼ÔƯ| üÊ“·‡Él&&KÄ_<==Y¬ú›Ë€C1̣¨Èsû#W¯Z)‘¨ưû–Âßÿ?IMû{ú$¢ 4ơ–c¥AÔ“÷î]~ö4wä(g;·1÷?› n¥ß}üï>4ƒñùƒ23oçå•Ơ8Ûơ¯{pp°±±1Öç< üíi5 ₫‘¯s+îƯ¸‡ÙÓ Ă†V¦EôCƒÜcøûâ¬ÚzT̃°a㸅¾´î‘ILb₫óNXKS)ÿµju7%(Èf}Aă5”Æ_+[ 2™)”…&ợAäjRaÊÀ—÷÷ÓµỗÂÂB2ñnê”bAŒ––•!$Üu™ˆÇZưÖà8_XYµơèÚ©;ñµ$¶¿¦Y¼´ëàÄØ‡tŒªZ3•æđÜ@xÿƒ Á•,’Hª ü¾úŸ̀>(@D Å'Ư?&Lù/ăS%Ÿ @ÙÑÆ”øZ- >»~¢Hâ«WK­ô©3è*´°đY¶–¨ÿR¯˜7sª́É3u1ûëAƒ¼e½§˜ăóƠ Ä_Ă›—¡a”“l+̀ äˆuÖêm¸ptö̃ê-ƒá„ô÷ ’%Á3œÍ¦ƠG¢IÁ¡P‚¢­]VlwKl^?ödÀt4~ÿFFn:mX¤©ôi×ÔÛ;,ú6'[>O:²‘×ëOïe'¶è»´±_/̣ø“àààÎ;×›  áȵ¿ÎȈ61Û‹́¯E`ii9zôèz»Ø#ȵ¿– ˆ|ñÂFG§â@=“'kẂ¯ut’@ü50ÔÈÈwm-¼=Ëk5®øW_½1Ô÷W]­ëđ±“}l«^̉Ê·¿¾|9bÈ’ñ¹ù<}]&øÎí¯ÓÁĂÙk2yÎ͈ÂñmégbBƼûª—QYù (lMÇ/ ơüŒ'z½7‘  âøb½½p (´m„ơ籿6³'l€ªÜ#•=̀¾²ẼóÜG8(êÿº¤rב¬Oô¶7d”}àdÊï|H̀PârJCÙ?̣QûW¯Xµr¥âö×>)Đ] €`Ø%p2è₫ù|¶æº ñCĂăôS¡ưm-È₫º̃!Ï₫€jÆ/†¤!=lmÔé¯ÁPøàúÅ“ÆÉ™8…¤ư ̣ÿùM)„¿ç/%=ÈüÇ{ÑN'¿LHØ÷ôÙ›En„ĂHÿFv½M³ưëß×â“Âc8£níZ¶Àé•65₫„ơ§’^¯¾T8ñPôÊY.è‰ú³›ñG…OäÓøû¶äUƒ½³gê³wZJ%O “'3â✜ ‚< JÊÊYOvéÔQ>yœœZ#ư58¼SiK‡)ûk¹hŒö×6nçB¬{vù—³CÆ“N¬à̉½ii߀èƯ¤çú÷Jú´i÷›†&ß#¼w·×µ́»†Íb|UVl»Ä́?é× fºÍ̀§ÇN›Æ! ±{ED˜x{Û!₫¾ ̣é0Eá69ÁIßyÙY …!ÿÉ ®.̣¿«&Vâó>y₫“++T•” ¿|'û«l¤¿oÀâö×r毑órĐô毯¤êví%)Ë₫Ïç0b3g®ˆ¼&XÚ®Á`€Ápḱ׋́¯ˆ?Äâñ‡€øC@ü!₫ˆ?Äâñ‡€øC@ü!₫ˆ?Äâñ‡P+₫¾ª[+T}" ù!Ô†áÄwÄGe—1µ!tÁñÿ.ù¾ùºơª+É)–±r•Ȧß–“RñµhÉ%¯ü+p¼œ̣‡K9É%|́ÈâµgÔ 3bá±›a#­'²âó ó µô´ë¿aXÈO)Ó‹jíÙçÁcuÉ:$dmñË監÷»̣Âf\{0b7~a!Ë^aà^@9«×µƒ‘åÿîQ鶆0,q摈gs¾¶{ßïE~éû˜» Â“·\9á§PÅ\|uuh™wøđ6²*×ÏróUü¦`ÄŒ´"8«†o­½c** Ă¢†{èB{•0å8₫†>K°bw50pWE|û¶Ơ¿/¦éêÍûđïĂR*< 3ÖƯ¸»8I«»À½’y¥ápă%÷ʨ\Å6k/ă^ÄF·Áy]¢—O¡6#m0juor¨"¼¢7Ô< ½\øg+b,wîq°C'±ù’c®zÓcó`ÀÀă—¥KÑlë-$?„ú½ú (¹±§ÓGØ—†q1{¹Dßèh¬Mz;üD_À•ptÉvtä,¾"«fô2Ç¢Ó«uÑa¯9”í=̃[x.¨y:ÛĐSÿNê¦xÍû•̣G̣C¨'¤œæzmˆ¶¶›J=Ó7mt°w„a[‡isÚ̃ ˆĂñR[Û1ü¤$oan;v¾{°Ç4ùÙ†ú{Æ_¼â¹ö>qÜœbmăµ"¬))IĐ`¦%)’m`xt Èf|²à¨¤´T@/[&<ËÈ*áçÄûkç䇀€€ä÷Ưö-Ă·lÍö‹¿̣ËnóØ £Ö9—ßùưâo¢‘Ÿ>} {¹reP‹}ăú>%åwưúU[¶¶´´̣đá7K–¬B´"ù5h́9xÄj ơrHjbđøY™¯+€àü¡í.˜³ÑĂC4X@L{Í5[¹²=íR:ă®¡IïáûÑ£íFFª0`5₫ˆ/­®®´d‰yeÅ|%ee$?„„›ÿ±Ê Àß̀2̣́₫¯¸đ%K×đy€Áäñx̃&êœlđ xLm¦0›ô´L3sú@c>ÔAî£ }#xTÎËRcV~_Äçå”ëë±óË́uƠ¨“”‰Ç̀Ôb`£96-mƒ™™¨=_uä°ˆ¥áàI‰̀µD/+÷W_m›0&ä–êkI|Ă/â34a ×ËLub“)¸&Ÿøđrr¨²=ÊÉ72Đ8ÍØØœ¸(áܼ̃bx9…ù9ZđF) θS¹Ö]z‚‡Y{fú“BÀP/ăñ UÇf·s÷ ăÎí5a€:¤ „¯­ÁÈÏ₫W·£.L cZêt’̀™Ö7f̉ï7)£êhGÇĂññsµÍ”™…=Fg/v¬Å\g';ö¢¹ÛÄ[шˆ>>«%3§´‡uuĂÿH:=-ß̀\`Hkëÿ )¼ŒwƠœ¯°¨\S“¥\/€ ”33󉔅YZÚ]¾wù]Ú²vWXMv%LœĂÁ½ó8~ *HĂ"¬w2aÊ@ÔƠƠíÉçˆhĂúâøí ä×ëmGß_ÿ™ô yă }\âŸ$^Jqnµ},L×%óÓ̀‰J§˜Ơ’©&ùí‚á‚KÙû©EÛ_@íÁlƒmßFËgP9¤ƒ̃¯öƒ5° ˜ºĐØb.¢R²Ú°˜LƱœé¬bîú³´â[XưÖÀK3 ‹<ơÁ ˜Çù¹däà·ơéi•ï¸mV_…×̉¡å›B K˜¼KỖ”Œ‡øéùüius®ÍU…§÷©ÿLÓ‚JØ…èúZwwÂz˜œ¸AZ-8낳Ƅ µº¦+Ú37“ëRª¨2åŸÅÉ}´“Àˆ[jv2YêJ@«3Üâ îY’––VÈÉjï´ç:ªu¥›V¸ µG%x–KäÁỔ¼à<16ˆ` Âñ`AíVV‚Z?`'Ô^•Ád¦?₫tä>v iÉ)Æù'ÉúưˆÀˆ6Á#ˆ/ ö௽5uÔtá‡ơàÁ7”!›M½wæe“æä."ÛyE{Ǿ‡0đê½nâÉ0*1¡¥~kD‹4e鮸í‹Ùlêaär +üéÄ%³Èôb»D/Dô#º8~™¡>oe¶5‡k Lß%r/‘€QCí Åà奄C±v/½̀«Øz¯«¨M²¼T3è2rà¤s¨½©&ô3œ'Ñp½ôñ©¶Fs¤µ›w µP,ˆ ¼S"x@cíÖV¿•SÜZ<¢X³fÔb¼äk·#*Á‰ÑëđhúàT$ª6¡ö„‘ÁtdçÎæH~Ÿ‡ ÷oÅăOw׺p”*$¡?awÂç‡Ú#~ed"—"ÅøèÚ¹ă¡c§LmG×ôÀ}® B奋̀“Làă³FlyJ¨=Øó Z;YKô5TM/¬M†øÍ0›0ÔËó´”YÓ°₫̉Ï®ƯÎ]₫̣³ŸEzzG334ó‰đ­á<}RHX˜½sm&`îüqÖy–³O×ÜÇ;ô;7¯ª€â祀Ú#º ÑáŸhüÑ£üÖÊ=¹k­ø¡l¶™™úwÈ5’_CÄÊ¢•9úË…ư­9üø®OgmÓYŸ1¹Öï¼”̣́íÁ°f æ¼#æơRÀ™3IëWV’s˜âĐá÷Îs}T¿S‹k$¿Œ™ăGRÍ[#GÎY$5MÂÈU+W’Á<¶H(­MK=´¤ Ư•Ľubß /ơ¨A™Éww‚É›³g£Æ“2 ”ŸßêÍë¶”%óÜïb$¿F€~2]1˜ ´WK,ơX%CŸÀ‰]×bç%5^W—øC@̣kLÀqüÇSç₫÷Úw6œ=eB]Œ­Eñ₫íçO=~\Ö\ëưC;;;Wt·‘ü>G=z‚‚‚$=‘;v:Ÿ̃48₫QaÚØ⟫ÙSÆƠ(ḉ¬†]s0-Z34Đî¬AÙ¼åÅåk‘Nü¤ÀÈÈ₫úùù5=bn?}«̀`ˆjO~4ü΋2¢/ªó¹ ^ 0bj„Ö̃gú½Ëu 32ÊLL<‘ZüÄÑôÚ½×oKỴ̈)תc EøêQêp›Á̉Û̉ˆ ̃Ơß¼+5²ID̉z‘å̉§Ç™å’å°îào<‡…aCh« 6o¥¬YNE½”½Xçj¯.‡·5²Ÿ•u¶vÚRà×—Ÿ­ˆÉ%ơLcØbî“6Ÿ˜„Í' Ø₫^ÇÓ~ï€Đ[n1m0ï?ïcÊ=a$~… Øœ (÷ă¤q&¡ ̣„PĂ¹b*x×-ÛTm©z¡ÇÇ“V—’…7œÿ[ÎÍ;x¦?<5øPª{¿:̃HQR±ß!aáöÎË`À¬=QơÅÜ|;¨“€#ăk%01;2‰9!hmKSéF('Ï_<ÆN,²K—çâ–ub+Ơ¸LÎ₫²Wî7Gu–_R5gæ—ÉßƯ"1q²ü‹†Y€Đ›Ô]á=đxEfîi1â2(,,”•-Z]VOFä}`£¨Si6^ƯK‡¡©ó64> L„–W̉Ïù̉’£ÔAXZÓªĂ΢¥xÚµûÄX¶sï₫œ‹̉±‚¯¢¸'¼WƠ”yçï¼qă‘j¾éØRÔ%§´)&ZZZä `2ÅÏûmQRđ‚ @íÙ&ׂ¯h“k¬4áö“à³O);±?>`á->S’Î33cJÜdÇeβ8;OFAS/U¨¬¬TjB_I/Ϧæ0kX¨;X¨;%êç-E?ff^u´.}¯Ñ±ăH3H~UÈÎÎîÖ­I9H6ƠQ«E—½³öVÑEo45[OE‚Ạ«†ÜÜÜ&&?JB\¹ÑºkŸuvï¶5kV.•kpppPPûå\₫q¶fku¤$?q<~ü¸I3l°ˆÙeë8ONỀ+¿Îv$¼B˜~^{è7¥wîĘÊs^₫Âߟ0yQi”‚ä' ùùùM›!O%Ÿi*'Ơ²5ừ· ₫₫H H~²±~ưz¢}ˆöôlâ&Qá[¶7³«jeöÊó‡w¬^U§/Îߺ-ÔÏO§z‡âăÅK¥ æ y ùÉ}xÈ÷C‡m’Üœ¹˜̉Ù¤/åä.¶WIYýoz’&)₫àgÛÉ*1‡­÷ %‡1íÂçJóó›Ó“4¯ G´Ơ2@RẠ“2Œ9tèĐ?4µÙđ́ç¯̃bê´öB)̃¿úÛ̀)å$Û²uưr?öC[­ßÉÿ‘¹’Ÿœ›%›·Eœ½¨vÇö4jÏî¢ù̉?•}øpûr?Ú–+69™ec3 i¦>ä'´ö$Œ$)‡¹|̉‡¬‘±1éÍ–°5)æe—Ïçñy÷ă“‘ù0߸;ù13Ÿ_˜—­¥ß=3㑱‰¯0¿œ¥K¥Ï/âëj2efQ₫j=êĐ¡“ɤ\ÜÂe<Èg-UÊæ“.zÅ%dä™è›ûư¶u´˜—^Qï·Ô.xu¥¥‰đŒ¤ó_â'=3ÓŒđ&L8ÿ]¼ÿ‘Tƒ̉úéN×Z{¬́§&_ûËf ¸ƯY,'ÄƠ­­Ën¤kSẪ%ôfE ¥r1©%˜†Ă&›b$˜z’_Èơ_àï”*3eÁs”üÚ[m0đ@3;‹µ`' ø©‡ß¿ T† Î ưá‚H;ÂÀÚ8Ï„ư–"¦–î·&r’`úcˆùnÊü:Ä’ÚÅ­ººØ§ ´Ó^áfµ"¥ÜÈôü_vÚqđéhÁjÙĂ²ª®NfHx¿Ư4Çÿ£"™Làˆaƒ¬O–7ÈÍđYö [ơM¬±wí?4h́ P7/×ÍZ¶•̀YR{Ëk'…ÿ­®S̃Ưró|Év8¼ôWú÷+QQ!^^+‘l¾ºü­ZÁßx sj̉½ôØ¢À°ñ‚CùÁ^Z{€6¶Î¬½ÈùGt­…¹mN9®Ïbçú·­rÚ,ÍüÚÚÊ8ÍhÙ3ëƠƒÀjÉÉ̉û?àeúêH?*¢fÿ8À¿o5ơ–‚P¼\«¶̉Pđt„ö ´ºÂŸ]»q¢‰³lß#óÛ±·oË‘fÂØù !kaä:ú·­O÷¸_ ¦}¨: .^®¯;̃×}±XÎ;b –’ëå0×!")a(̀Z}=ƒÎê˲§g°¬ƒ8Âs’ׇÁ€EPnÚñ”A)% k²;ºví:¤4ởdѧg·ăçÿ42³ªé´—ḱSÅ2 í©Ùjê]BBèoI >‘¡xów;4̉/€Å*€ñ1!“ƯG…†&ûL4­J|Ùào¯9x»ôBFkMB{ÑQ…^ˆ"$¿&ic††m̃"u9ÛÏ"/ó/;[Ùû]KJvC]îÀaĨăLÆ‹«PñÄÊd̀ˆđ4K؉í­K6²1;ßxz¡¡‘ü¾¬X¿}O«ƒ¢ï»•đỄí[˜êØÊO¦¡A5Œ5øî!>₫££ăRwD ’ß÷„}{QĐđÍcæ.•æú¹£‹]æ×Œ§í­H~ß1ưWÈÚeZíUáX™ƒ9doä÷«Ăikk/^¼¸ “tàh¼ùP©»rïƯkÓOY¹6<¾›YđêCCé_í?đjÁ|ôÉO6¨÷ïMU{7s_7'ש•¥=ư^¦¯øÄ̉ÂøØ¥€ñJ¦E+ø'óK¾óÛRCÄ}èf´ IÉOk×®=~üxÓc%&vÿàñ³«Ö́åêeoߨôê,'Me%GI Yü9ugn®1¾±Ûˆ°₫Y<—0¢èf¤ uˆ¼Í#ùIÁ´iMÍøÜ•T¨½ÚÛªµ6¡́f0j̃úÂN(Œ5½zT<£Ư ^̣Ăs«}ï·b¹ÎÏÇ"¦N÷A©ùeó€!“4¥.¾́{†}€$'·Éqœ“dMùFèT÷ ‘6ØÅg†ï[™'ÿoo²ˆ7E¡6دÚNÉ'â(cN¡E%}`–…}pÚy.^vÍvö¡ä“±¥w¢Ù»²OÄ~`¨î̃ë4eŒåÊ“jÀ* Üđ¢ĐV„ETæE­gơ[ƒa}H%“"eÙµ”·¬µ«²æÓ–qïà/Èæ°lߣR¿“ËLé+ª\KḮеW3 ß,9[³{÷¦Å‹N)Ÿ‚)Ï‚ömq0a¶è.©˜:½¹z¦’Í×–Ÿ!́‘\L85ÜảÅ ëW‰‹&Yî³^{«í"’ŒZ~[G¡?ưµ2à%ñWµ²ß|øhz0gô°Iñ\̀Ø8‹0¹æíư=sác¾ĐQï>Ç.'v=00ạ̀^ñ_¾ Êïîù£Á'NÄêQ’0ô»œ½u] m»wú$<#v]÷Ä0¯c¡‚öÁ^¬à‚RX¸uă^¿100e“ÿ‰Ud#©ÚéƯk‘‹µ.›L<ÆoƯù­N”ö(U§8îï{Âdîy¸—º"³zé(ܿϢ=¬¯€ÙØm¤›ƯA¾Vé´›]ËƯ‘“ÁƯ_“ϯmi¶ÈL‡ø¸$ư9Ï̀rx’BÙ¦fKyIGiïfH¤åJo²ê ‡•¬§›É˜¥R?z[âv²Eë¶]zWơ- Ÿåd̃¸́¥°k]YˆÚ0ef‡UƯˤä÷ü-‡@«Ø"ùɆººz^^ øùù5In<ÎÿĐ\“ ÷±#¶W«ƒÁGÚËơß—ÏÍ¡è`±{C\ Ÿyz‰/ønkÓ‚|§!ø$÷CÙ UµVH*H~â :|ø0Ôac¥¬œÿđMjOô2J1ïîu‡Ăä$‹‹ srjMkO¨ªưD₫¼\#ùI`îܹMŒ’½‡́7ª–‹éơ°sï~÷… ¤î½ôÇ6¨½Ú–+öúµ¶¢Å¥ëE~ ÍËơ£œ|#"Ûܼb}=•› ŸâñøL&®¸đK·Ñ/RkíQ4nÖŸWod)âÄÖ)SêÔ‡0đL=ɯAy¹†èĐ̣M!Đ½Úu‚sûg_đhGûAêư×FX 2”<¶akÔöá3ˆ9ºx¹ñ¶ƒdÎP{¼Â" ¥IØnóJ“H™™™ol¬Ëă&Y-̣x„oßœœ×ddàWRab¦‡WÉb*EK#¡¯₫¾¾ü”—k.—ËlkŸ›öđ™Qê-›KĐ¯ä!kÄm¤hÅj#ƠÁË5SCz“©¥ê¸añrS–å86æ'üÄ6f4đøu0́”äà₫ä—¸¶A9Éëaư{O>ă₫0àĐB i¦!Œư¾—k3fçcđà”±Y]¼\'Œ2 Ë9*꥗W»Àø5¼ôKĽÅ9\A…EXºĐ_(Q›IÁ ¸Êđ…7oR,( ®¬˜‡4ƒ¦^,zu58y1Ű&+ûQ ½\â”Đ„—×ê]Ó̀®Æu­¾ỖÏÇ?N†L`ü4&·̃½Ănzm * úöăëÅơăÇ=Í›7«EδÛO$¿&_O©î•y¢‹¹„‹Ị̂Ó4oN-X/×÷25{OEn?‘ü¾/ î!ø2Ï®•½t‹–g™·Æ ¤Tcÿ+Ä;t~yÙ½ûúô‘̃ŸÜµûơ’ÅD'¶—1¢Éï;†¬Å¢ÉϦÖÙ2TÔúô‘¹tĂ’ÅèÆ#ù!°)4Ôatođ́Yáç]Ë|ñÊ_~Ù6~KêÎÈÈ—̃̃kĐÍG̣ûNqæÏ{_˜Ë̉ÄÈ9‹(«k~ù‡~·%Ç~¥=oïvT²C‡^;;":ü¾„„…Ù;{RÚS¸'© u˜qí̉œÉcå$+-Ư­®^³¢³s¨Ăƒß͛狨ẠkâøßéD¨½Úk2ĐîÖ“â~dµi±5ƠyóZ†#‹3$¿¦;²­†Ö%†Jó{öº/ÿXvÿ₫ ÚÖ%gÿD’_SFjZªÅ°j½Ç»¯­]2°3̀Ú37%Ư²_zîá|“ĐÜ4ËŸôaü¬-IËçT}ßwäDÉœ%µç`è–Í¡—[9ư(f¢á%-¹ ÖZë5†J:œßºuƒŸẠk¢øXV*ºI|ñđœ—n1íAx’oÏ´`~ß–·áóÎ́ü!Ư1̀¹@…„™h}ö\P{ ́?p*Œ°£(ck· ëœà¢‡´jÙq„ä×d±d3í?-­uv‹nR–ÖB#́đ߆ß/T›_y•€¾XÎ/}|ÄưJµ®t'Œ<Å´áê¶q„ä×”q₫đY+¹+4züă¬ó,)‹®ùø¬y₫|gûöµ·™₫ë/₫ư?H~M₫+?Í/bhÖâØÔßN,˜;GÖ̃öíƯÉÙËÚÍ ¸"í!ù}èÜQ·3ÇOŸ3²Rôă ßâvú/÷3•­= Ô›ƒÍ[Ö¯X®¨_¿Ư¦u'D ’ß÷…i«¦@7n =R%åj|]øß¾‹3Óå5đ¶H/]YÁß»Å}IµIѼ¼‰ y …‹+µi¨@̣û¾±zƠJÉHS_ï:f«¤̀p_"³Xˆ¼ "ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! ù! 4Vùá8îjưüüü¾Ü\½ô‡zÎ́ Ăl'7U₫ÿ®¯,*–X‹ÏÍÉM­ZTTÔ?oC‹øŒT3&bÉï;Æ,~̉¬èÀ™ÄôXÜ‘Ørœ£‚a +ˆ„übÄÂ_Åå‡ÁcE gÖ-;'í}9ÉÏĂËɯ1a"çˆ%5Sy₫PKcº¶N‡₫‹snUÓÜ(a@á8KDå8ÎÙ¤ơ³Î NVTNtæ¢:7˜°kđ™%q½ÂđL™ÁÇKÎbmÇ¥ïÑ4[D¤˜° ?½˜Jo½êJ̣ÆAH~ A¿¿^?̣0B°Ä4'­ĂTîÍÛnWøö­=ƒEEE,Ëæ50¼h _¬áz¼Mqí… Z¿~=䋪1¿‡ơ,üóƯ”mÇMÎSÀa(3M³Á98®/êbº @­BĂBù½=*½ˆơ÷đ ‹„qă@ª…’orÖÔÔṭ\‘ C%€5hµë˜ T+TJ*gú¿å•¼÷điö¨ëê{zÀÚĂ6AAb¾ÓNÀ Ù8ÛÖº¹©Á–ÜƠµê’üêцâu'́v5©ÑRá,aL- Á"₫gî Zfkφ98::ÆÇăû"ƒ,,,.¦æØ±@HDDu"óÈÈÈÏf¸0fÛà ±;Ø·éîăapóẫmÿ~„S1Ûr̃~¤¬ór²æJ• Éï @WI¥=¶P™„l¶àP{8¾Ó £U'Ø5 ¿F ÓÙb–êôáÄäÁ_ë©Í.æ¶°· q@|n0÷‚4&ëKNëÖ 6ĂsÖ=JæàyîÅöqíɈWđMt3å².Ú… ÄÇÇ›̃ÁđÚ(L#̉¦Ér÷™(™”F‡í\|́„)éÈuQq뤴œH~uĂûïÄb(AƉtM‘aíêóà\€•“ÿĐV¿³ú­`-•› ‹SR½÷‹7/åT !NBCˆÖ Ûa'Ij©ü2vN0q¶ :‡ó¦wQ€¾›—¿AU§QR‹p|·¿ÿ:ù'J9ͼåÎ ¿>0îĂ²÷0ªø%5è—‘-đuŸër”*Øäíw`à!¹s'z‚üŒ—œ₫©`ơô›ÍKÛí!1 ́7àÀ‰4S¥8®a…"³/d’=cüâªåûú#,ÿ˜O´¨Ù60ár"†Ư]müÍhMKOÿ‹«„ùüƒa?€̣UÔ!/ÈŒü\Re;±´XúŒ 4¼§Äô1L•́!×´Û,–íq·™³ÿ¶iS=•ôs5„ü‘ü>éëÀ?9Óba*€ËKÛe”‰§dơ_†ăË` \<Ûđ7Uzæz ù!-5Ed³újʦÁ‚:ÇUªæ«̃`XëÏÏļ8Y=AÑôØ<Û6X¤³@V‚s±Ÿ̀\÷†c®»[i|¾Ä_;$?„úÁĂjóºÔp7yă b¿ªå¢óUs>sî„ÉÊêLi ºàøđ¿µI¯¡°´´à®báĐ Ẳ3̀îÔS_;$?„úA|Nwç0ăđN‚xÑå¢82o óºư û³-*&́đCæ[[4û¯‘6ơïææD̃Œ+̃b¥ü‘üêíç´<̉¦91„Ü€Kdtµǻ̀‰÷= Ñ Êy…}Ú­Ă¤Ø¼So¼ûçÜÔ"#×GïÚj; ø9Ù¬ô©Å …È!·*-Ï9¿Ñ³^®È›ñ¯?’Bư ü§Ú³œzXPj¤Å`¨ùÏÇ.找('ú¨Ö6^+ÂàÈ6|c.(;‘ó¬|cÎđQ-t „ăR[Û13N?ưé±ùÖÄœ—ÍöôâÆ^ Ïơ/ñªÖÑ~aT[GÈ_;$?„ź₫,úHMM%₫^íEy|rµ×É;ØIøÆ\ZIi©"̀¤$"ú976ªê\p3>±Fe₫Úù#ù! ù! ù! ù! ù!|O¸ÀlƠºC7cÑÈ¢‚çYwn¸°gƠ%çƯ»7ÍƠZCCI429å½F+£>}ÆÖ±ØaaÁíÅ"O,6d&«uGD+’_CGô.íd¶‘…µä.Míö}GNºó¢,á`ôªÀ€æ¼sçFwwíÅ‹µ$wÙX· €Ø ”F\P‹bgdD›˜¨Ijḅdça °ÀNK» ’BÅ•yP{ŸMæ0ÏĐTGMÁl?U¼i¦µ÷Ù”#GṼºÙ¯_ >Æ»ru÷àAJP{ŸM©¥}i{ôÑe«‘ü ¢Z°Z×(½" üX–Û\í‚âÙöë§₫¡lªÚ"EŸ8±eÊ”O/óÔ₫å̀–ñ–#ù!4 \Ï*PSoY Å~V5̉Uµf7nDYYyÉOÆ+ư·FÚ£0~‚FxØzÿ€µH~ ›·Fœ³¨vÇÆÄîópu‘?$«E¶VV̀?ÿüqèPyÓ_è<1¿̀^WÚ+TËC]ưîäE€©ÉdU½̃ÍÍ+Ö×c ¬MBÜ 1N6ÏÅcj‹>ééi™æ&E­g»Ábˆ–VP$/ïY¶¾‘‰ÀûPE¯¼“Éäñxđ—J©2x±fefN¤Ïxañø99È’đó øºPŒjÇR“ ‚K+‚ =222¢ +—r–.‹Qµ7÷Q†>yßDï‰âÈØ9̃Äư—«ÛÆ̣ư…/â€Ưkûµưó_ñ×́»ăÛ¯ŒÇË’Û¥G/¢Măñ[0²\µçä\40„̉—8LƯë³r²Y/ö!/sLá'"d›u ¹û0‡;7̃!çÖ́ z”örR¾µ.lQ“‹c…ƠÜÂr}âKEà€¹%àœ̀}{]&>/·o¯’™ùÔØ¸#Ơ¦z¿„üú¢Î'‰µI„'¨=đú¬®Ñ¸D¯ÎÊê·†z²‹Đ4YŸcˆL~lÓ F4gª‰zË%:3úƯ0́P0ưÖX`ØkàL:ö_[ Ÿ–BemG K"ÉËH566‡{J P{o­FPå9îÖaç™PÚ07Úu’­0 pă3„ê^Á̀W30;îÿ7qiÁ±xsêXLÄ· ÍQ'|o]*Ư¯ À,y,Àœj£~úèAF7g*Mñ­ ¬~< yl‚÷Ÿ·Œ,ró Ÿåû´ts¢Fy£öv7ïmơÛƠ+no4QªÑøuÏcÖxvÓ}Á₫¯ P8+­DŸ₫œǿ}`§±°áá™a×D‡a„8á®r>_¥ºóóỴ̈̉#ø³ ƒÅ%®Î=pü…Úƒ¿P{ÄY&Œ0S¸¨,MÁSä̀r͉ïÖư/•‡ÛÁÛX„‡»¨4'û$ĐœÙ<=ù_3›®˜éE‒ -]“K₫avá ù‘Xo« Í©¼‚|fĐ¾³¡ø“1º? —±y]lÔ üè3ơL“OêÂÈj•¿¶ÙŒ|„ÿ=RƯaŸ «{¡ö ²îç‰f ›h¢i`æP{ÇÙ–¸´Ú$i2ïƒ-Ñ<`ØY•x€×® ·ßX`­Sqg Ù*YÀ=m²¾(bÍÇ÷_˜ ÷æ?#I˜1}JÜ̃sDñj®=Bx¤Æ®¾Â^=.TÉ'™‚8äI«‰EE¢Ô ú´rNẀ¬Úö¬ß•|0Ǭq<-º¨̉{½ØqR“|̣›Ûn¡6‰˜‚†ønµ']~”/ƒ}?ơ´đwsésج áµ*$„đ–£Çí[:NaÇŸàễÙœËƠg€½Ël7'.'ngh¨{à77§¬â?:s9b팻…mîưDt;ù 4ªÛs7zÉîàÈ>Ú7l×€½!Ëç:;\Ê©ÈÿÉï?•AÁ¾Ó¨̣&ĂœƯ¸Û6± F‹\1ăAq•2…9Ä„„%ܺd°¶ ´ ¤éü¦áỤÛæ9ÈÇ•¸4XTXHÑKÙAØUuQí̉»…çp¢×µûX«•ÙœKU-¤Áp@z*âK¬!óyđ7üt)Guw˜[<çŸÄÜ·öúÄ^³ lGGn|<ÿçæÄæÄqkỄ—#±;´;™Œ=4#32¿PÛÁ£È±¶åkË "ÓÏB¾ˆm8qkÍ…½_›³Ă‡₫[¹ ÉOĹöQ0%³Ï²Z—,!1^Ö.Jị́Aù™J=d&–³K±b| œÛ9vA×Qí`MkïÉƯ›¦:C$Ó|(û¤ªÖL4æyî`Q̣£Ñàææí¤>ươZªü¾¾?ñ¡÷~ «W­¼ó¢¬.9 îo.5₫æ_L[Û¢1íoÿ;s¶¾2è¡ûLÔ­JôƯí[f}©¬“nƯöÂÏ·.¶cÍ0%%$?„oôˉfĆkw,₫ñ]kéï6mmÙbĂ¿uѳ陪 f-&˜½Çi–)qO/eeW³±á/{S?ßµ’cKÅñ×_Úưû£©„€y3¦Ôº4ë,Ï® ¤xœë́g3±v²ÏrÓ?æïÿ™~ç<·e-Êü÷ßưûÿ>¹F̣kˆĐgVæ̣jÜË»{ƯTg˜œ¬ö;w¾rwo[ó-ül ç¹¾†Î›×¦¦O`Ÿ>Ó¿[¢‘ü"X­Z´//z^¡ªø!Ó¯L3â³ÉÜƯWîÜ⾤ Ä+`UóæîÚ½i‰4RQY¡®¤<û{&ɯ¢][Ívüv+³]GCù)±}:°LĐ@KV¾{WĐ²åéϦ¼xQiøpEµGaÉâUä—ï?›’L®ưÎYF̣kĐƠϸ́Ç߮ü¥ỏOrïû—O´[47ê¢_Ól[¶„CD×›×Ïtï™ÇbIyέ7nÉđáµ)3ơUn7r“†5“L°eKẠ́å«åLä ù!4¨©ªN.ø  ïEÁ³üü¶mÛtéD:êÓé^—œ-T½̣$ưmÉ==#M̉à¸qu-¶»êíåăÇiåü†ú}•H[åË«H~z:Úz:Ú_#çǸ¾^±;w6GÜ!ù! ù!Ô 7ÿ¾wóÚ•wE¯Ô[±̀û[ÙôÿbMÊơëSSó̃¿¯ÔÑQ9r¤®®ºÛH~ŸGp0±¨]«V­¼½½›*C‡~:aJÁ4og`3©Êæ’z5ÿçϼ—º×.çĐĐàÀ@Âơ€đîÓ̃‚|>qW×̀|R’ßg ©©Ù$¹yỤ₫Y™’©\´¡Sç:|kjÜSñœăă·8:jPÚ“ 33^^¾GEe ’Ÿt())UVV:;;7=bbÿØÔ$ES·Ñ ß诫"g“››BoÆUTÁ‚äd›öERẠû?{×EΆ3Â"́̉”¢R„E¥(`,X»ØN Tđ(OAl€åÔ_=Ö;°{vĐé¥üđL×đ®V :PDŒ )¨â‘ѱ˜¢ˆg`³üD¡Kâ`ù'¦r₫‹Ä̀ <'fMöŸĂ‹·̃€¬QY æö”,ŸYiÄ⡟Qån¨Kà¡$’]ü&¸îw[*)ë{N[C™N¢­}̣=9hó¾!Ưi«®¤D¥æ®c„¥%oÄ+ïbB™®Wª”•Å€0ÍN¿ cU»îŸ1Ñ×Q·u§¶Í[€%E8@̉ʾƒÇ/=½ÜÚü/ôËZÈÊ=VíË{®®âͳ™ûºr”ÖÚ(!9ûMùOζ³é3±¹HAÂ6ÚI’ÿ³Ç:¹ÖI Wbî=Éb‡"”°}‚~VÖ=-­.Ỡ‰ßîK«³Ñ •ëÙB̃ :Cƒ2O/£ƠOàI”_÷û,‰Öª©¹7óÏPSy¶–[¹ær©Cƪ̀AƯ4Qÿí´ÛÁyTw·èÅ}eñSM̉ëMΪHN=nn.ê)` vđ_‘UÀ¯M?ºêOŸ@}GÍ5—ö—ç‰Øø¥}À˜BñkÑGÏA‘x‚¬”‚È‹´ÏÀ}hÇtƒé¼£–†́ç§*Å@Ÿ˜ŸŸ/ ™î‡ù%"ÂÁpƒ3´' å ¯ye }tj)î9̣›v8ơ¼̃ àºßuÙhö*ú)è\¯>}«í^úÏm¹7÷´À³*>}äVWĐ¿Ñvàé½ps;º̃;P1ă›Ñï‹H,gQă‘(ĺÊíœ:Ô1XƯ¯ûưàà®Èă>{sÇG¶NB™{…[¡­F¨oåàIqë¦á6iM±u¤¶»¹[Å[E'€ṾnÁNÑ‹“ø₫,„̀œŒo=¾Gú}Wxúôiûöí[X©zœ0Dh¼«;¯û—F{È!ªméOñpÇ0„üù?́i¬=™ŸM°¤UO¿}EèG7,…¿©F‰̀‡ó|j#3èLJ¬l‹z•ÿ,KY£̃¦¤é₫¨yrÿ·óíÔ)@ ŸäääZRy¼Ï{Öú #~g„Q@5{>\8vl£̃|₫2qè×’1Únp#̀T¿_ר±~1DM’â’R,(  _ ÇWÎê÷Ô°sk’>Nß@|S4X^ è×̉1ìˆĂg“tºÖ{‰]+nq`@m[UNß@ åí­Eôû)0vẻƯ§2ơ°EƯ@ƯÚ×%¼[}÷ÙÛ; è÷Á̉ ư¶Ư{{S—À…ïơ7¯»}$·bγN3ÈV¯y±`₫( ßO‡.“=~úVB±Z[Ñä¦ß°h]¯˜ỲY;₫·vÚTÙZ;{̣,Öˆó%¡ €~?)t:R3 ÊÊÊV­^=`ü4)Vù^¥¥FO›:E†Å4jgƯ€˜§M¥ÖÎ>}zçâß§œ+x˜›#½s׃ÀÀ¥r°¼è@<‹R DÚ5Ô¾ 0Ú·ïêäÜUØGU BGèư¾_aYhƯºu¿~ưzö́Ù‚ 韻îüû¯ÈÓ©×äXC¬5ưưÔ©•Ï&&•̃§Gï.5jª¬\[ Đ¯FèééƯ¿ŸĂá´`îíÿód—ưÄ5Œû‰¾vÓ5¶@<[×çnŸûëœúƼjU¿¿êĐ¡RU9»(!t;>0́Ô¹7èW &NœH™o©8‘đæ̃ƒ ?ưÆă×fë/Y†ˆ˜{_ Ø©sÚ¡ƒIăÆĂN|@¿Ц\ œó¾ƒ»%ZKa4j'Uî}DDtƯ“1n¼Â³§›4Ú{U€~¢hƠª•··wË+•ó·2”ÚƠ{cXîÑĐh/qôèÚÑ£ÁÈ'Đ¯2/^Ụ̈dSÔ¾#~iع«×®_P³ù ¯Đ_¦Ñ-›–~̃=ôkáh0÷0;Ö¼$üÔ0îÑ0d?ÂƯL( _ó‚“ŸĂTVûVWß}àHwkÛÆÄ¼*4Đ¿Á’Óg6":ËŒèäN>Œ¤M¥§ç°ÙjîZî‘YƠ8Ë͹§ªÖjH³ÓÏ” ’I’›{6ªÀ̉ĂP,;¿XS™ƒ”SÈe¼ÉTÖÔăp8ϲ²tÙĺ`2™\Üû'ú‘äǺŒ4M]¾…ś™q?G·­8CÚÖ#==…Í6Áá³²²ØljP!5-ÛØPä"ÏŒ7'«¦Â¬œ́ûj”± B„’¥<·i±ƒŒ”đù댲ڠó~½. AL†×‘æM$3/&—0ºÈk)FJ̣Å©'…°¡Ñ¯ •Ú„÷É0ùwõ¨©6Á¨¯OÑ̃D„Ñl$#íy>kèJa¾jăÓ)êö°Aüáï.bÿˆ¶]>Ujœä>A&:üj§¢(ÁÔµ  ơJpT´q_>gÈ¢¡WĐÇij&œÆ%Ăöû8zSAXT½§í[~ăRIÛ<ÂĐăÄåu#ú̀=Á²đéͳró»xûÍMs{~àprdët1à=c¸̉LFMmĆv‹u9öÜ÷|6w`soÙ¨…~˜*~>Nm‰q³½~|›sxAt„y$á¹]· ÿ\Wä`gO¦Ååß5ñ[ĐÚ~È̉íÇG^ÄA»ë¶ºÉhÓËĂ^¥A­” ^¹yÖ8]lÁ \yÇ`́ă1Lû¿ë³9ĂĂ–ư5­gjRTDmSv»‡fEF,ĂJ=°Éxÿ]æ»»Ó£¢9H‰JFÂN:I=m_z±}P"é́́œɶ›²tă…É́§ts‚…*²8ŒáË’bVºYó(ë"à9 üBL‹ÜÆ'gcÓVWÔ{í¿-÷P¹íÀ˯ˆW‹P/I!9× ÉË–JkmUT)Û ¯ê6̣TÈT£.ß÷Ègv,>rZXƠ? æpc¢mäéßêư¦ï‰Ú¨̉ÁpđĐ₫iéa9%›ÔHK9Úéíp‹Yù[ÔT‡‰}ÛÎAïm¨gÙ ­^¿­¦Qă¼³îƯÆĐ6&8œOLfkJ!9Ÿ̀Öôh'‡SVŒÄîq KæG¦<ÿåDNQ™¼Xƃ—ệô)€ï…~€æ€ap,Ÿpæ¾|ß¡₫Ưp¯XiábJëúèăÆ'₫ Á¦ªŸ%ítœy"7ư‹1³X¿¦¬Ó3IµB{¶Ñc-„Ñ9tûvd~|{đ9ë¹Ó,Ÿ¤ơÄ:0|vMY§˜5‚Xrr¤ƠÔ p€~-'wo´u©÷̣I K÷̣̃Aí̀ª†)+#ÅĈâ´q,ĂCƯw;5!¬ü Ơ¸óTzËöûBƒUÏ²ß ÇpêtX¹úµdø-h¤™]êƠúÿơ'wä( &ÛæÀµĂÚ>cjÊG°·ßḶ̃ÙL½nÙ™°ưö©ÉD„¨¦f¿yGö÷ö:&ˆaê˜ö ôkéxxëz'#ó†K|æj×@¿‘£<éîßxs9„è77’qq”Ånˆ~éba¦fÁ¹‡¿“’²²¸TËs㦂9°́è×âá0´_ƒĐ@¹¶7ă³L;j%×+ÂäÚ1Çvuúư`çqX*ơ=ëæ©X#W§ZtÔ2 óókWߘK¹®âđè÷“@W§cJÚƯVmê±ƠÑƠ¿öÍ₫åƯêưü–„†.¯9Åă˜, ( ßOCj4̣FV„Ôf~i±>Ơ{>|t­“ο_ ™•©¨¥íÀ„}€~?'̀´”î=̀Ê+i%«XM[”ø̀}zçæ°!ơ%ÖIÇ!‹}û6LT½ëô4iMÍ!ZÚJP@¿Ÿ]:i ùœOºụ̈e‚‚¢Uõ̀2©îj Ÿ¡9ỉ¯åÍË××oœzû₫½ºªZÔ«|¶!d<ĐP-û4G´L–bÿ₫¿@öư5âŸôŒkI‰o _±ddz÷37mª˜¯_ß•œüüƯÛ²vª­ ¤¦a¹ ôûF>.\(.̃bŸ#{üÉîMM­WjßwÔd?ưnđÜ₫mó¼mX̀´¥]́07ÇeÍñ§¬ŒLNncf6ô«C† 9}ú4u-”{o8²̃"{5Áfâ ̀ĂO¹æÆơ°R·̃̃^ºK»bb„™YAYY¤˜˜;èW ,,,0ưÔZè$üƯv·ZÇÀ­UuƒW­ ô÷¯Kà Wü:§Nïô1 úï¿.úúV@ _5˜2¥NÂ?z:¡îÜ£açêº:ÀoAíÁÂÖÿæăÛöøñÛ̉,Ù6Z‚ÅDÂHzCXÊU¬çÔ׿÷â…J»v`d èW¥ưÙ"[ZƯÍp–­Ëœœ¼|5å\»‰¹‡½GvÇ–çđ¼_D@1Y”˜¨n½—f£=á'DËvíúưª´?[^‘œư箲†VĂÎÍû,]K[Ü¢A;́7¿¿÷ï’ó[eÖ-€ä™DȈæ÷È…ÉU$ñÏ?×î „úµd$Ù`îѸxåz¿̃Ơ¬WÚ³g•£#ßÅÉ8&E¼•ƒÜÂñoˆđ“+ ÂM¤Q:|¸4”Î×£A¨>6]–ï tü¶7#°ÏIđl₫vi(û¼UO©.$Y2¿Í-¬‹Øh3qFcbø̀¬̃âËäÉ7ÏäS}BÓÊiÏ'›¯×WµCˆ±vƯoóæ.Î4;ư„í̀ xH;́œÜÈnÓOÎ7skkxÄÓT ZX°|¡SP ½•[fRl9xMc{”¼4ă> vl79|¹u7÷1}|ºt7᥃+$m*.T™ö…¡È;„{)Å·"œÏ<ơ ¡­vcâßö&Ï̀uwvèæ½‡¾º—ûĐá¿´Q!¬tPÂCRä¾BĂmŒ äŒM' -#È«^ëS>v×–$Xtb^ ßÑW@#¹‡¡ØN£†2mƠȘgÏRÂ|íÆgb!‰E#½”rü3‚đ‰¤ŒU#OÂzX‡Y)f&Uü¶\xéÄÈ ̣=ăúƯºˆÚƒ.QS #·¶Ztñliñ‚%®èƒ¥‰}¡ªM2Îí5´C‡ 2Ëưăb£ý­ _dtlyª¬Ă·¤Ư4÷¬*±ú0-̣pDT?́ˆ<éĐîcîk|#ŸáÄ́NNPCaV„đ}5¤¬ï9m e»…67È÷ä Íø–<§­º’”{ºîZDĐ$¤̃ăK[7’-]…ŸîƠ^…f2[a¾ưR6O²ṿ¶'ôIâŹÔ= ú–H=̀ÏÏrÜ9wÏ”­IW¢vsp%÷ùë¢̉me+vÑåẸ}V^ˆÎmŸg3ư?aºj£„ä́7I+û:ŸD3ÎSÄ8̣ [á …©T!†¡ÓËHr:vÿb!=ñ°¡eR!'?_˜{Tª^ƯwÜ7wÏ$2!'ăZđƠĐÀ^T »_ˆY-¢«Ù鉴ăyÖé–ÅÏYMmé8QXÅù ÿ¾r©H´VMͽ™†Zi¾µǛ.—ËkL¨2uÓDư·ÓnçQƯƯ¢÷•5@H̉ëMΪHK;jØ•çê>¼e“ºyb{ÄR„^ĐMM–E×ÿüug§ëàĂAvZ(.3̣ èg<û„ÙŬî₫a ´äÙr'ÓưÂ_YY+ÆŸR>–ñ‚9["ç̣đXÓê#Ơ×@»ø‡VTô¸|–¬0–¯|¡T’S”Ẁ¥Ø i‚<…+ÊRú¨¹ÿUAUMY™$·äS$D‚ ÅLÄ~äø#- XĐñ‹ŸSái)”á;úÚe£Ù«Pè§`¹ùêÓw±úÑî…¡đÜ–{sO <‹9X̀JV'>–TÚÀxt/NzB9÷Öăïơ)›}M 9ÄÄ:Á£ïoä³ ûB5EÅ”WaÖíDeåzôIêøâà®Èă>{sÇG¶NB™{…[¡aaî+2Z·®bE„{ZqG›ÚÙƯN yçx +3>«(‹nvú"µ múƒ—†S© 5̉§—ôî}—ô4+ =Nà^̣xWw^÷/ö4‘CTÛ̉Ÿâáaùó;~ØÓ8Y9z2?cUÿ,Sj£GÓ$½¨æFÀhªç¼ª'Ỵ̈qNAÇLj‹»”‹û)?¿„ç'¦¬̀„rúµp<{®Ñ¹̃]Mz„¦?jêF2£µ²r…yù>L˜Eôk¹`”}ld í3ZXƠ?&¦À©n¹¢ëÊ›¯ê?tÈx(  _KÆ~}iåzQuÜĂpr ±$Nµë{E¡GÔhg(B™$¹ ¨Ùd…׆)XüƒĐ ́@¨˜ö$9ó­n&¾H’ÛääU¡€€~-Ù©—5hT"ng¸Q@öpÓ^¡„$ÂRưQR/ÿ*îơqRO•”pI2ÈOÓ]àfé6xMB&êÅÜœ¾ª°¿ Đ¯Åc”­Í¾gôÍê½Ån«ÏÜ…µÙ¢îAú¾£¾¸é iY+ µ¨­Ư»“èä1,z~1™«#á(Ü7Œ¿‹ªj°âè÷s`̉ˆÁn?Rl[¹!ê¦&[{z ṇ¯“ɶfóG;‹Éx[„lq—/ÔI;Ô©âU»OVÅ?ß@›è÷“a@wßẃ́m?±.‹_dơ12¨sÜnï̃n‘‘+ÿÉ7£[ípËÖ¿Í}}Ư&nP"@¿Ÿ ³§My’“[€dˆVbµËJNm_¿¥ñ2²³b¢Ăœœk³_]ü^NL̀Ö×W è÷“¢ƒjceHHÿqS™̉ådø\–xl¯ăäIr²Fơä 'gjBiÎóô³çNº¸Tp,/µ}Û£À…KX°¾è QuLÅhvØ SSg»¸Tz˯¢‚B~ư ú‰bûöí´ĂƠƠµ[¹ÆøPˆˆ°™è&ΨØạ̈jü¡!ƒj·WoL̀ưùỌƯ ă>Îçđđ—K@¿Úđüùs₫=´\î¥fd#e‚h5ÔÉCäP/»qoy¦æo_Œs™èPÿ‡Wđôémtt‚°?“Ù*0P¡(.—䀉f@¿ê±té̉   YÙ;2¾u׋¡_̃e¡{?û‹éÙưØu¹˜³s¯ö0 !'ÿçæÍy‹€'@¿ê¡  Đ" &1=».Ü£!¯ÔË Q;©ºb1Å곇‡JJJ¸‰‰7PèW pǯå•Ê₫¿ÎvéÑ·̃-Ơœ÷Æj_|[UßhML˜»w‡º¸ø[€~¢íÏ–W$₫:Ó¥‡eN$Z‰Ơ¾ÍĂ®]!®® ±áâ¢đèÑus Đ¯…C¯AÜ£aë2§Ö–BĂm·èèÜFèôkшûû’º~£¶­ YPÍNc»v‡¸º4ÊtR̃Ë •¶ºPFÍN?S‚H&InîÙ¨KC±́übMeÊDyN!—ñ&SYSĂá<ËỂe³±ƒÉdr’àYkÏÎHÓÔ5¤#Á÷stÛ3ä©Ưä̉ÓSØl>++‹Í¦&:¥¦ejâ€\D¿ÏâæäqƠª³o–‘‘¡««‹ÏÍ{úLSOWï$êl|ˆÁdf¤e° ́úQF0ƒƯ¯ê¥Ï¥±fË®^?9rĐ¯ùé—Âûf¨̣PE~ç Bm”:”Vöj¶D@"IY¹¾ëOYÚ,w¬H,Àá“–ơ¶\v…¦.₫)1ê…ósz‹‚HIL4¶´„7YtyE/q;{ó|„TzưN^Tĸô_Y@/&¾PïBU2YW×4;'_K]…6ïY[aÊ]UB’C×§&%̃!Ïüđ–€:téVËÑw$Ăä;̃½y£¦*×l ùˆ¤ˆ×ÈR@˜¯Úøtº=lJn ±D;û•Œ·ææ>A¼m蟖†zH‚ÿfÜÄÊJا4B‹NåÙÙS¦cMơh²Ú©̣Æ";¬Gåç´ƠĂÜxTÄ–»Êqçóá)Û¼­ZĐÛ©´Í# =N\^7¢ÏÜ\!»̃<#ó9¯¸‹·ßÜ4·ç'çI¶Nj¥_!‡+ÍdÔ$o ïË) Œ/u;·åpʲ²^²Ùjˆû);¿LSY 1Zs8Ÿ˜L¾Q³œ¢25yI!·Xöƒ—̣8ækĐWn?§¶Æ¿Ä¸Ù^?¾Í9¼ :¿‹<’đ܈®[Đ®+r°³'Óậïø­?hm?déŒöă#/bÏ ]Çu[Ưd´éåa¯Ç̉ v^¹yÖ8]lÁ \yÇ`́ă1Lû¿ë³9ĂĂ–ư5­gjRTDmSv»‡fEF,ĂJ=°Éx‚§ =÷^“] gœ¶¢çèØB¯üƒä:…åPTÄ—C¨å¼4V¥d.u.ÚQnd>å ߟ6+Ø»Ă0ÜàÀîI«®Ü‹°Ái«ø;@)ÉWÚ̀éñÓ;kƯ£ÉH·”Ạ̊ ÉÈeIŸ¶keÙ9!Y„Z³üơØ~gFg#b>{ÊÚạæh·çÿœ5;÷ù…T¿Đ°Úa>r†ùHÊ¡Œ?ă)Jøº˜aúÅÆÇQĂByË¬í¢¨đ´'B”%Ÿ ½Ú DM­œMEHÎâ[ª›`¡,cGxIJ¤˜•®cÖ<ʺˆ¸D(¿Đϧ±ÿÔzPƠ±±±”n|âlªúñỶNÇ™'rÓkU26–·y ¦t\5Fë‚¿—yè"DgúLçj́_Ñ湯%=4Ụ̈é£TkI( _ËÅÉƯku^=±4,ÜûôújWÍöÔee¤˜oÏЬz'¤PkíW¯y¼`>Đ¯å"ÀoA#­\s óª†~Ç};¶Qâµ`>,}úµt<ɸÓA·kƒOïß§ú©acÇ₫Ú€ùÖ?V:rĐ¯¥c„•Yƒ°­X1B5¾OO×f³3óÈQ³¡h€~?>æÜ—TÓ«ïY§voô¯y¹›m³zỊ́óÛƠ7æ¼¼**P,@¿Ÿ&Fñç₫V3´¨û)'wmđỵ̈’¼ó—¬Y»|₫¼z0đÁĂ®;u‚BúưD°³é_VVöõG‚hơåĐÙuáùó–$%²´,übÈ’i ‰_:ơ€~?!ÄÄÄŒUY'Ï'´Ó7­ÉÎ|â‘è_g»£vúơÙ̉r₫^¿~…¯oơmÊOeîƯoÓ½û ( ßO ÛÖ´ăINî¹s ̣edå,,,ŒØåcëÚ×—ÿ"!=ưü·̃½ư¨ª*gc3RA±}kIÔ½;ä=ĐPjªS'7G̀lö@üújõÛw_¾Èk£¤Đ§GSj÷SÁ¿{ÿQC]ƯĐp$ä3ĐÀGvî«»YÏÔ´©÷’mµ:¶¥f´Đ/‹ß’E/úö4iX̀û÷¯8‘ZHÁhúô¡+ĂKúƠüÅÆF3°¾è÷#éîSÅ64÷ª‚%£€dRs‹ ÛH0ơ°Rñ ăPgƯB{ƠẦŒ…P̀í9Ư»…O ßχ[#̀½/†$ˆV饷ÿ>â2©Ns©CW-÷ó¯Ó{¿îƯ˜X K¹Îâ Xéôûiñô%æ^½Né̃ľĂÇ&ƠTÜ«¨"Œh„`si ßO£!Wè÷̣¥6gl}¹W(` Đï§À̃£q́^vîǯÍ:*Öt´³îë§7Yt ”Đ¯…£ÁÜĂh-•û2_µ­rƠC®0^¾Á17`¢6è÷ƒaeHˆư”F 6^O»7ª:úרØÅnçà eôk±h$÷04Ù=ªơ¯ÓÔíZѽ è÷sáÎNו ï L}Ö¥%oÄ%*ù;x{ÔøúMÑƠ% 8€~?"3·̃¡l~æßüßà‰.°¾ZÀ@ü½tÆ  mg¿ÈÆ’Zôªä3zÂïèÏd %•ö„{N˜Đ è÷SÀR_£MP£v_¶ QÊugÔ¯ ­0aÂ8( ßÒ¥ó©JªíëÔ-#˺«ÖiX7Ay+÷êªû÷˜8Vúư~> 4ÖƯµw¿Ñ—BOî̃PëÖƠÁ-4t¹Ÿ_í/Ö‰‡»NœhôûIá:y"₫Nºz3¯è­qoáCï¾ÈqioToîQđó£ÖÎ9²U¿ ¡oPi.ỡ½ÅẮ'ÊÉ«ÂÎ@?²́Ơ³ßvÆ72æ1cfVơœ<²èưĐú ô@?è€~Đư ú@?è€~Đư ú@?ô€~èưĐú ô@?èưĐú ô@?è€~Đư ú@?ô¾ú‘$ ¹h{∠~ÀÏ‚ xÿMỊŸ ß· „\?üƾQ£RưhoÛ5·âçuç‡)»Cˆw£– /%®èÓÔI+$ÅVNp=ăL,$-å›8¹Ö‘Xÿµg\suxL@ü€ï $ùAè#”́¶ïIÔ¤|E”£ƠÎ%jb'ôñ¹ đÉùFEóHZ5Ê×lP̀eK lâs;I’)âzüÿí‹û@ +;×韜‘zî÷-‡|Đ14ọ̈óQcVcÇIHH”|’5ºo#“+]‘¥üdç܈R7w·Đ` 5̣ùz¾gƵˆßÿ—ûú£V Ÿù³å”çùcÇ>IH(é÷6×¢r7ơ|\î'•”ØÅ;‰{,₫¬*d7ؾ>.ñ–”¤ÚÜ•Kt•ù÷FŸU"¡ioôaÚ̀£)!¾ö¡†ƒø€jÑå~̀D=§ưÛ~é¸y‰Ÿ­ñ₫]Ë⻄Ă=¿à«>`½Ñ$/¦ïø…̣Rơ·Ë]ßüI,ùXî@ˆ~̉o¶#'§ưø¹)A¸’äûĐ4úy*ú(ï¿Î­OA ›Ós=§ï£Ô9!öĪo’fx2^‡ˆÏDz„À3ëÂ]„†Ë÷ÄzC‰­y4틳₫îûÙ(đ‰t%›åúT̃₫äå„ ùÊwơM€…,vDg’é‘‚ĐDuª=xâŸn nKå?—´`{fĸ“V”̣¡Ä‹ù—•Gº› v ®`aJ^ñ3¶D1Iˆ§‘¡Vƒø}Gض`Ơæ5a§×5A>Œï)yÎNîJR­uÆ…ÎéµêgC4IÆṔK¸ …Z₫vĂ¼:MH&_D[OC5́^’đêÛ¥—CTÇxá¥̃»F¾̃ÈÑGU„×₫f\ˆ̉èÎ"^ï™XLêœóT¹ûGƯù0ĂP² WĂÊc₫°hàªØ€cSiw ưÏÀ–ê§÷Àé±WéÄóg.ŸôU·]ß©‡íc)8̉r‚ô[2¡Ú‚ø}ßà>Ù'ÑñÚí4?́øôA)q»}}#–ûbŸ¸<̉N¹)/gOñ¸uyåC@¯úñ9fO‡ª?₫ë‹p̣ªÔÎdéB¼7Ïi¸¨gÅ’¡P*)aƒx¯ß́ƒ¬”đï<ßg¹_7±Lr¤®́K¬¤~oú}ḉèª?Aø“₫!¤zT9E§̉Øf R±‰ü0™êíÖUÊṃ̉ÉÍœfI–„:> ¦ |µ&íÈüƒ̉Bœ„6#DµÓ¸)Ÿ¡ëZÿ(9»ï“”³ûü¬ă/µF®³bu[ˆß7_ùºú“ÿ†Đ>lƯƠN>«k'9WH”LØË¹oDô%D͵»??•„}ÈÎÊ8>1•r 'Ï8 fÇö– äQ"ơ÷Q&Ç)/#«w±‰³øojCùd?QĐ’V–LˆóÓfemœ˜*``Å\ó&o|#Ư®ÎU±£_ơ똠GtSwƯƠ"_ ¹¤U½èñÆ…±é˜jÓχ,đZ½:‚Ö}’ü øĐpˆơª₫*;HØßØû é-Üü]sÿ3¤¿HTôº³6ÔA *’́Ơ„²÷娵_®êѪ>#Ö’äÚjO÷I$} ƒø}7(¤ÿÍœöå°ª₫dNH¹–+Ÿ—Oÿ̃EDß>9ß,©ŒÔ1%2̉¯]KÎ())1”^±:₫1:‹H^ùY’đ×0/ä+_wg/kà}D– ñÎẸ̈'̣­K₫àkBơ ùó ®QWáfTL1O|"»ûH’sùL9-ƯơD«Èt?ÊËvI®»t>#;ëÓ[â9‹ØÜi[}Óưº´Ă1"¡÷.tâ§m H÷ ±"jâ¿àV¾OŸú·4±€îˆß·…ưoÛ¤ÎQ+=ÄéUA›₫Jơ°7¢},§«ÚÓ ç†ï®t¢@̃\öÅD¬Ûñ?_S1^,áơJ}Om₫Øi«AèäY~óUß$©9l©çÖ­\ï2Æ̉EĐa­²vßEÓ˜I>ƯBé–çŒjưÊX ë5u044\Ä ~ß°D™̣æt‰Î£ÇjÊ•Oô¬W'ˆ6#èÁC7÷1Q‘Gx̃ÔÈ`9ajRR§8{ûí¥ƯË­ÛüeÎÿCÆùÚ‡¦Íí!>™µ~}8! ñ¦3Tz©SOœ÷ïjĂ›hbéĐC¿½6Bôˆ¤Oùè—@访éAÍøç<ÛjÚïzJù)>ê·€ WÛUÉ@^á|ë4öp̀aA~ rrs‹‰ª©Ávï¡3"N‹x^{I«đƯ6o~EÊzx:}9®̉¬í»Î›p5Vi–f m?í!₫N…4 ơ¸/H?į©đÅ÷"Ơ<µ•† {Fn­8WŸ×v«îu›‹^ùD‘x„_º ‰32²–›ơưBj ÿ¹µJiˆ®1µÑ•¨ åc¶Q./Rè»̉¢-±à́«Y2×nüưÇÄ€?°}% 3K½6¨†…äÇâ϶·ÁÛ'’n&̉£øk±Qê…ư[wÆ@R=æÚYè6<­oÏrƒo ܵQ„̀Ó«b.ưêđáyXè†Ồ\EUíYséñD%ûz\µ÷…8ya«×áÀªK—Ïn⹓?zú ~@‹ÓX”HơŸ“yƒ:Áƒ§O]J’+補|c´?€vwëf„ÄåjYHnÖSŸ©¡ÓƠȈÏ×Ëo—đ­ˆU2‡V/Ẹ̀§OT'&"d5ÆmŹÂ-* à/~@½ƒÈËÑ!VD—¶AtbT´Eï }L  ¶YséptŸŸ>,£‰G~ôô@ü€ƒé±ätºvéèÊ…¿Ι8‡ˆ7CJ­cÛvƯÁ?••©̃J- ÉƠ”ùƯU- MM%„̣/k…‡÷OÎ7BóöDf̉rnÑó¨đƠA¬D ÷û«$Ưß g÷+º²” – B!$¯,z_ËŒûÑG̀ïK̀¯¸dHÂÛkÙ&Ế=ư? E èæ³رéξ£cF kỢÙ›ƒ̉–T>£ö…ä|H’´©¾Á†F¾NFUë„Dzü¡t{ ˈº…|,• è¤̉’“}hÖøÿƠ¹²*B·P³v•~ôô@ü€ùó‹Ó•Ý)]¥è^äÙÚÓ`oÏäu=—Ôë6CB‚T¿mVÏ©đäÉíºCÍñ~^œJ¼öÍ•CVQ%8dU`@&eÜüç^Ñ÷|´¶a\?ÓÂf;B}‹Ó:đü+ơrèÎ\Ñ‹Kœô÷<¿‘/đ?CF̀ú¾—ă¯q[Ùh«OѲîAO¨@yd¤ÈR;oo•²̉R1ñº>a8ï³üưÛ~…~ꤛˆˆ_9²/¬Ơ8_hØ„d6uRr.í.1wÑd4*’0+âèà¦Ù´ÁI""±́úà7³ó$y±‘iˆ YêT¯S¸ÿEJ̀ÔîăưèRØ7©UE7ëzïMRè͇äKÛëV<SÖ÷œ¶&]đsÓơ·}:TĂ cUæGœ»“™›ŸÛáß[à¿g4å>4ÑÊöïÔÜÓơJ‰¡yߺ+-y7y²|uủi%îúºàơÛ¶“mĐ!©^:¹V–«£t;¿éÛfª©k-·Û4Đ½·²¯É†$ÿàK¡¿Óa–=\VCJZ·nuàÀ– æÔñ÷Ø?mREjû₫B&Y ~’U’Wy„ĐFˆÇ26́̀ÈI¼R̉»·fuO¸˜à?k\O9y²€øñqZDD§Uẁâíiêå®yê\iyK–µvVB&/ÀXk­Ă YøÄ+"0 i[Ùe&ÆóÚ›$V©¢¯‚¬pu/$Åâôê–SL,.ØûʇéyyùyE„F8îºă¢/rE'»²˜ø[y$ɸɻ"̉±3}ŸLI2ècIeV´5±uN9 ¾,¾åm^¼•`yuó:ĐL’Ü’}ÂSkäf'7·˜¨(d°ªøPÛº$‰É„T;7¯{Tl$D§±ÖŸq&TÛ\àÜ̃ ’zƒÍ±nn‡q&í‰V‰q8½ÿ̉߇â³è”÷Z®. ·9å>Œ”è<³J¹Z Ÿ‰óDƒDù/R°̉ÉkALÄj„¬± ï‘]bQ™I'¸„$¹•“wÿ`‰— ™’₫û(Că8q B¢æ­Ô éÜvsyd÷½Rg½¡o5Öéưá˜Ü„*ô«C™ÙÈÍÍ1*jÏ’\1ZU9· rQîâƯ‹—{g\ử¸$»F1Úë²…J´VE¦Sÿ‹Ưùg|›[§æ^Æ’ö̃ïéL %D·SKÍåPín%-D]‡"îư™˜ ª2ÿwp}́·Ko‡éˆS!;XK{2qD³̉/«[G›XỰÛ>ăÊ ÏˆÇ¸"ơ¼º4q½Ńvç w÷_~p(Η%2®Ë«B,–Ø÷ơ»X<€ø¡Ôlôë:»ªÏJúyƯÁ³Ö°Tf̃P£|2/̉O=ú™ˆŸPEIbÂ,¼”¸¢í“^*z ¦«â"ÎR¾8Iù`™¡Ë®1."K‰çµ» |(Ëü4øi†SOÏí¶EO$ïĂ­¼ƯôăXđÜ×áÉÀa¾VmM/Ư ’‰(åøëÏ4 ëœ$6¸¾P\äp.´Ct¥´e₫oˆÈY]¼D̉@ =’–̣¨hº†‚Ù6'̣¢s—(œrô§Àn¬|ÅƠÂù}Ë\%.ûÑ}P[tx¨ ÛiŸÀO0|­¹VNw4‰Æù(„R¾»«%~Ù]â8&ân핇Ns—»Äö˜kÎ+ú8™ ˜Ă1ØgÆÚ Lƒ₫å9ŒR: ”°̣áCËgmJw9· ±¯pQr₫£‹""ñå\±69=Z‰‰ƠÈÍ^EÖpTĐ•}wkÅ 3Gø=?fñ”²cóè¡ÖCq)[¦^§z„ÇÜô₫¬R¬•XYY™XÍéá÷ü¸¥ßÏĂELŒ¨GVW–lMÛÉ$9럠K••…ưqe4wâÊĂä<È®ÂSk;í‡OÆUë1Âʇ͹J̣̃r̃àçËIO×%I':2áÆ àg¿’ÄOĂ mÛÿé¿#AÛ-W\H\¸¡%nëN-.¯n´ øê¬µD’´²o’ÓóÜưS°×ÚMäkm>åù¹±êZt€÷…¬ÜÓ>Đ·¸Ѹçyá₫CƠcRÆÑÏâs…¤U.UÅÓ²²¢=ú­œ~ó_D5Îüv_¥ÿlu6ºÿ¿!qV}D|ÏÑ3¾m˜•¹ư—À˜Û$ùZ?B,,®¥e=Oß?BÀ8IÄÈu–svlŸÚVÏx¥î\n-IûÆƠ¾F#’e] %œsÂi«zVƠ4T‹è¤ëΖº¿Û¹‚Ÿ îƠ>ø|ni/+"+/oßÜAt¶× U“W’±S‚ w>`èwBûgü”‰Ơ¯{„{&á_Êư¬’gg,X=—äçđÂ1«Ѷ³éZwÚL_‹î₫WơÙS¥(±.δ³ƯĂH]««íŸæ Ç«ç«Œ„9¸Kº¤äíÉ¥K©†₫t@ëF[H›o\MVÈă^ø̣­‡.›I]^wM¨çWCȈ?NwÊ=ôçS“ʶ3‹r³ÄÚ|1Á:Ú¦]nÀ̉³7ÿæv̀nQB@û&É=yɺ.+«ê§‚5Œ~¹HUæ%ZṾnYyk÷Í ©̀¦„;¼ñ ”Đ»¢rO\µV…Ühïß}uÚv.H+ë²ÍŒ3èv.]µb’²,EÇu™Ñ©SOĐ?Te”̀ÖcÙ6ÏrÇb’¤G̃ª¢z~–zjhééñÔC9E“NѼ‡Iy€„*èd2Z8yw’¤˜—Êï}^•P—¾¼0ÔdƯD̉§̉uñV·x5é1÷¿J̣&°ư÷÷ß[ƯíÔ˜¤üü|QwŸO’óy#Bü ¡‚Üà¥ËÉ/*®œ§ŒZ̉ _~zƠTq8…gm×ÜpÖ£úU£ŒÏå½™¸́ É{'-zûƠŸU‘`^°*ÉctÆ,W‘ôT“UïĂ/—>¤ă>ê¿®Iº glyÈ5ä´5"ñûˆ”i•¢¬yܵÑo¥JÓ8 =N¤zđƯnüWàö{^«o/¯'èÏ™å8̣†Sù₫}Rsđ½Ssư…ü‘#QƠ£“¾Ơ@O´vŸ£KáqÅ›Ïô3₫²ø)·e_ºtªo_™Úƒ…Yº¿ ^¿̀’…/J¾•̃¨},¥=ycΦQ‘ÉÑ[4̀5Vcû%¦ÎE ¬Ă{û!uÏj[[sªï/2H+ääOÑ•y1Ÿb‚‰PøGåîÑ1Û±äô±"qVu`œ:Y6ÔV´įi x~5ñ³Ièyư5¡¬¬\ïsLe妙$Äd*?î’˜†ƠÜQ}op4îøÅë»tû#YårØç¨¤.#GŒ®c4yyMCjZº¤»oß“ưê«%₫ AZMÂ]±º˜Âܶ½hÆt£º_N_đ½«'û“ÄÄ™âüäPjơÍÓp:f³ßüyu KGÆŒ:^»˜²R©º)(Ô{«I)Ù¬GFÚ·âÛèßp@ù@ü“F_¼rCN‹ươʧ÷l©¯̣Ñ6l₫ÆM+æ4ÑFLăá$I-ŒÓiG’µmû́©R›6ƒTƠøÎLKÇâƯ;í©(íµŸkÖäÍŸÊâ„Đ¯·₫̃½¯çàQ_çeï ÚHµ̣›×đưæx.:urÇPÛ²¯–K¡¡/üü»1‚ŒŒŒŒÇµËçÏûJ†¹ËJ¥o₫#9>léâªĂ çIOs_\¸|£{ßAÍw•V¥ŸRO¹₫̉Û' µ†¿ƒ‚‚–.m^›™Û·½™6Ơ×ÏO¬©"œ?oI)·depH3§\<(èé̉¥K-, vƒø€Ñ^µ‹Ăˆ%%†8y4mä÷®ëfh`ĐY§Û/M¹qàR̃’Äsgc´µ‹´uZ7à$Ùzíº'óç->£M :å«×à^ JÓ9ßJ•ưT"in>wˆ¨$%$èé—Xׯ[o5ÚQZ^©aQŸË.Úik?¼K'M£ÑĂ›/Í6ƒøæK.îUđ|́X™G•vGúbÂcOÏ‚@u…Úp,˜Ïßbă¦₫ưd %“ØîƯoºꙘÚC-ñPAá )·̉ÿûûü9 I¦–~×6:I´–ªúsYQîăÇ₫{ú(Ă¼Ơ ~|›Ư½æ|Í4[÷«èV–•–=“œüÔ´‡R7ĂÖjêŸEJ¥ÿÇMIy)+#io7²2µ¹’aWêóơ1Ç3@à.xưädÜ‘‚‚÷Æ&JúâÊm*M@ưü¹Uv–Ôô´;¯ûöélƯoíïâuâ45ŒØúøS[562e? :tÊĐ×qÈ+ >½©Ï÷%ÅN5î—Ûª̉Ö¡>#G@­€øâ?À×Ă»wï6nÜ(â9zôh}}}Èœ7îd\8y¼]GÎ&,…‚•–rư{óAêu «₫6–½¾eÉOqñ[îß7`€Œ‘Qm-³ºø÷ûÏd«q®22m¡¬ ~€BFFæóçÏeBû¸t́Ø”ï‡Ẵ#µfJw2¢v*’Pn?ÔÙóË”gè™ôǼ¾ơâ¢6Nz’våœ÷¯`î§ëÂ"½½ÚJJµB²·gâÏÏ̉́ØÚƠ•^#qœöÙ³çuŸ^ưµt̀¡@üơĂ¢E‹‚‚‚h·¬¬́¸qă O~>yAJNAM» »÷ÀÆÇÖF½C¿qS±~âp®Ÿưu¶{3ṭJCCƒưüÛ1Z#ÿ&X6î計ĐmüÙ·¯pèI  V@üuŤI“öí£ö·SPP`±X!ß?"6GZqÔ1n–áÊÖL¦Ơg¬‚q;Ă4‘́}ø}ËúÙ³•±̣5OV@èTöăOe¥f:Đ€øê]]]111 WWWÈïO^æ¼áXu₫ ײŸâ%đáơ #íOhèr?¿vXù;Á[ă^ࡃ‰ăÆÏ‡ªñ|‹!ù£Ă‡eO^ù«nđƯÉ|ÀªƠkü4HNHîå+›°̣}Í/WVùè![W¯/Ôˆđc+P]f²4đu7Gíđp›V?á+{ŸưdgŸ>ß` ]LŒĐƠ»{íZ…Ũ9?@ƯÁÉ~^¢©._[ˆüœ¦<«jH¾Ovv¶¦¦&de“`Ç̃ƒßJùhôñËÊz½ü;1r@™o˜f3³¼‚‚l%%¨„€]ü mv'ç;›´Á¿œ "†2èNÓËÉH+äl6ßb‡Ăe¢Âô¬|7==C—ͦv¥är¸ fqNÖów[G ƒ‡Édºk#/q́Ôxæ9y8-6[d62==E—m‚ÏÍÈHWĐĐUæGƒ2̉Ó‹I–±!?—Ë`PW|Íeê d#+ï…º®‰|ùN™Ø£đ“´®–2•r^Xï‚à9ØØQH’;²|_‘iKp?EàS´âU•B…,–"ü, µfRʇS窠·g ¹Á´Ệ@…,¡™à0GŸ‘£tÙÁNxÔócü…gvöæôéy$¹g „¯ạ̈̀LyµB:1©IIz––leµÔđÁ&Û’é¾XpJ°0Æ8·wÑ!ß,¤/§¬†Îûơ¶IœP¸á-}Gµdn hÉ­‹¸…$Í$̃cOJù><¯&I¼L O¬ª|åˆCLccS‚–đÆG*BÁU‚L÷ĂX,/ë$Z]:1’̀¥ïgl̉ª#µä§‹µ)ùƒ‡‰!çæo„6–ɳ¢÷ËN@-ؼe›Ơ§ú•ÿô±rû s¥Ôe„ÚL|VqNN©ª\½â¼våJÅoÀ™ï!ëÆc=xp¥sç̃P‹?°øùúÚXË 4àc2!Ơ£øîV„thƠÚåa­kÄx¨™ÀÍå}çf"Jü8‰̣ƒü'†́ ªÂ#PŒ~ê¼A!KT„Pؘî'́́+…±4¶<_hbeEÇöø¿<J¥èACC SSÄ}ù\pGC¯T?́·ZîHĐ !“ú̃C₫Ă_}’FƠeY˜)ư-Ȫ»Ù5®¸‹¶=>ÖM[—T Iß/Ô₫/BBªR?mó§øÁ©qÔ(èåu#<×KÍå n1—Á¢Ë÷‡#…{æJT?;vzç¿ÍÏíđ§₫÷̉nɶc_˜Á÷QhĂ~tﮌjg9~½ÎÉ| ƠNSQ"ˆ“FwK›º$øáĂSúRµ‡!w\Í“£,åHú'IF̣”¦¦ä)´—×ärp9Ÿ̀ÖÙrJ2ºå‚Êy›ơ^‹­Æ¬CbΜIñüØâ7pƠrJ:°-âĐi¦¢Æ¢Ơki!I'?w§´g¯}×ÿAúÈ¡WÉÁ»ñÎ^OŸ»>8˜~í̃NU~ôêágƒO"¹̀ÛÍáǵû£—, Æå\œö«sIP$<&Äëlök-ƯáAsÇS đûy m0l'8˜̃Ô«ÇŒµHGÎ2‘|ă>ÖÙùĐ̣­Ñiq‘˼–¹̀Ư¨¦¢Ç ¢À;K¡0ă¬ƒ»»̃ÀĐÈx{ÇgIâ …-ó+’5\d;¡FgW’tơvûdơqñw¶1ײ+¿#nHÈÚ€êß»p–y{ăL0íDÆRƯ±¥3Ú»ÏXY[’Pbôbgw÷­‘‘"|Åu»ú[}.Ưă^‘î,Ûloçà́¿n÷Jêö{{nÔê¤ÇêĐ—6’,qÀ«¤±oç̣àÂy™LgQy~œÁkơx!+Ư/Ô₫/B^¹)¯”ƪ hç¾GT»mÏxå÷~OgZ(!¢¨·–C36;îñ›tÜçÍz¸R‰ĐÅk™£w·VYÙ₫úâ|%—£ÓÅ`Ïhfœù¹è‰™f½ÜèÆªr&^|á¤!£¬V—?₫¤S§/#FênKæ%uæ7¸w›sa¡Ơh9,$#X¿nJÙ́a¬Æ¹₫'¡•I’^Ø¿˜Œd³eÑ›4B~c¹dÖˆÂÂP…?¶øÑ°œ0*û1C#c*~µ1 đ¤{-Œ€₫p¿O0d4»)ÉHW ŒĐ²đ(ÚD…a¨ZGGó»MNƒM|Ơaä§ÜY:ÍåÇy˜ÚÎ-Ü××,?>K¾³Ml$¿ùNëÖå›Wó_ÊưJ’»èCáчk¸£TvÏaJ°°\q>¼=/¸~J¢b¾˜$K§å–NKR›Jñùmơ¥¶ë;Aèu‰Ưô@»é<—u#æăéùmøó0±ñqü;£.¸_AQw1×´¦ûÔ‚O‹E½tKMàW9cUæ¦;<ûd‹?T\5†ù™ñÇE´ʬ|TĐGĂ•àcÑ3A„PAåeÜq—₫b‚Y,ÜE{W—[{DFóZF|¤¸)ä§#)¦›6î|’å#¥C2r†_T>D½ù#  Z‚ø5Ó£oOÿoŸ—Xàb]b££›đ̣qñ±ßơư₫ôxr/­{ß!‚Ÿêư¦Ïe<̃EY$Wé`È륑}r"—x.˜ñÑû÷í3}){uAZrˆ9u½zG=™n½SÓ‡ü:czÛfnÇ·eÈJ¶û5Ø‘̀_ùÆíz̀\¯̉FKƨwj¦Ó†ÅóÚ÷sêaƒîh(VNÉm³N_^´gj<¾¬l»˜Xmª¼„¿aTÄ2rÑðí]x£8‘×'9̀»ÇTïH Û¦à1]xă¢̣ÚƯ‚×áF•8ö 9pöñmƯnË|M¾˜cc°yøéÅP ^¼xÑ®];ȇïC†₫©ÀáXƯN´îË7ñó©éăçPß Ăgv¡}7lÛN;y“nͧL¡₫M™Ă_½̃e?äÇ‚̀¯_9·ư¤û_÷~3­¤yÏŸƠ%Á„˜ØöÈWîîµ™t ªs¤ÜÉ'€?Nj>̉2v¤¥ĐpKy0徎d&Ôq₫Ïăli[Û_  @ü5B^^2áû„™{ơº°Á“g~ËIjXn?s¥ªÎƯäÙîu]çî0æ’‡Ï&étíñ­@”r»èÖ=¼’²Vĺ'©o˜ik×½œ7w1Tˆ F¼~ưÄï;ÇØA–GÏ_̉b›~ưK·*ư$ù©H]£~}(¯˜èuNÎßfÁ_XX(Äđ¼yó¦}ûöß9F́ºfư§Y_ó¢Ù©—† &ÖQq'ç¹^k×.UZŹk¦yëÖB°Ơñ| ……… ?üæû̃}đèåBAEµ¹¯EŸS.œ˜2yRc"éÔÉ!‹ĐUË›i'?ÄÆ~=jÖ̀™đH€øꀢ"°´̣ĂÀ ³B7Rÿ}‡$•T›¥¿.†Ê®<2cs÷Æ)_…fûSæôèư)[öíăŒ5ƠÁAjÄPW¼yó2áÇ‚™1mô…¬ 8i†Dë&˜ZB tjÏÏÙ³XLé®S~¿\??J3î_J¿{môè¦Q© 7n>Ÿ<Ù{̉$¨?ôü~øûÑôŒ‡=̉gÄ$…6ơ8¿ôÓåøXmÛưñ¯îó|›;Áºz}Û̀îƯ!/OÚÛ3ëĂY'O?ă1G©ĐYuÖ…Zñ@Ïïg[·ÛoˆçĂÇO?yZøº¨„[".Ε•ƠPk×¥“¶¸¸€tRFnß̀đÑäÉ^">œâ×Ùÿ}ù2‡Ăá|.#%¥Z+((iv4h£¬%Óµơ@ü.q(‚–‰N;àÏ”`&KÑÀ ŸÄĐüÀÈ„’$o¦e<|đ àenñû7e¥ÜV­Ä¤X̣̉mT4µ´û˜te0¾»m„9ï³ÿ½sññÓüWùŸ9Ÿ©Ÿd+ }½jÆP¬?@ ((HÄmfffkk 9ó#"úà±2̣³±uEñI(w0P®¾Û—^PJ•™–́å1ë+¼}óïï[Nœ¤¨Ù±5¿Û',záOµ[́̃ä}(”•‘;wé÷è1Êâ¨7–.]*¬ |? ̃qv₫o‡Íê¥]7«! ‹D‹mŒ?i¯¸qÓ®^è¢ưöÎơăï$Û‘²¯Ư¢Đ‚[H¨¨,-B©[–RTJ–êºE´H;i£=Zn¡E ÚÜnhÑ¢B«̉B‹C÷ưÏœ9c)*÷ù~çw̃yç™9ï̀ow̃Eé÷~Z-góÑc«5zó«© uî‚üư¿§·"1}ºB¯f±đ5¯èv¤â4•.]ºĐ­]ÔÔÔ&Akñ¶Ăö½‡´ Í…håk.´ †‘ÿ³_–%í\·°ºió€Ë6n^í>[ÆzlsxÆÏO°ûFß½SÖ‘LÚ€øMÂËË‹t₫ ƈ#àl´ &Qéó»Î°Q-ºK繤ŒƯàï»à‡e¯[·|®§ ©|-gpo a„nß¿ÿ„¸•´Œ*”Ähssó‚‚III8¿>›¶Å²ÿóʆ£Çù›y â²Râß—CZê&#ă¤̣ưƒƠƠ…:¶*B? ôØÀyøÅùÀ,»–ûôg*¸Œ|a%ºr̃̉lè·n».rÙO“=^üüä'¬¶±Åñ€6LÆ—o=”SêÑZ(hé_¾–5hÀ7t6ؾ=´)ÊGnhđ8Ư„»ˆqTưd/̉.W ¤Üä[…­è=+'O^…hWâgBiƠá)Ë’ă™7»M!»ƒNiû綘 $0ÆyƱÑẁKS™s¡Ăt3¥V?±ÆÄă‹iË ÿƒWÈú›‡ØMm]˜„`Ó?{|fÚ´¦V¤ç/|VGó˜YgEtÚº Oˆ:ƒĐ°̉Û]MbuŒ³ưbfLèÙÔ'w‰\»ÜÓkÜaö!~y¡Z1w4@“E₫}~±̀°å¾q‘á¤8b|¼Ư“ñn6qQ‡É€¥ƒkR\´ÅÊ¿“|zz@­²µˆKH̃p½̀]§ŒVú[²́Í?Γ̣ó.<–M®ênd×ëy|R¢ÓĐ„ Ó‘±­CZBµ¬mƠ=+1Ya|ÂK…ˆ,@®®S¢£w/I}lÜ̃£«›MtÔá]÷*Ơ“G¡cሒc3Ùư‘QùBx±kÚáh2eJ16x¼N¤¿§­«gBt$B31̃LBµ̀¨÷M¦Ñu°¬KÊ.ÂXºöÚúg©äÚŸâ—8¸N‰‹̃m³.;ahmĂJ ₫îd†‡}üâ§Ö±§A¡­}˜|l{T=ƯzFF¼Í¾jªô‰M»Ÿ±2Û`•‰‡̣öÙt뺂?füM ̣¬úúz†‡Gj/>—ùg:O¤¿v Í1Ú¬¼˜àó_QÁóY­®|$R]UV®X0ß»)‰O¥\sqiê£Ê“1Nê_qµ₫ơÑ9H₫g+ɹ|ơ(Këÿ—»Q—‚ ‡p…ñèFsv*·W ½ˆß‡§ä?̃qpùÔM‘¼§ÓḾÚ0̣æ˜Ăî¿KÇhß!ÊĂßèw.™ÓUÜụ̀éÁƠ-7Vô÷vÇ!uv’xg;!˜}ˆÔBJoÓăóØñ¶»&8qª„2Zt1u™aɵâø²÷î/Ø ¡D*^:+&8Ç•»Ç^wˆ˜¸«ÁÔCqfr,U B;F ¢sC(´_€¼₫ûSĂ²•†²4§r3÷ˆăz\ơµ!í-©»¼+꟥1—́íPl[«îƠ6Œq5tø‚OIË UÙ̉ËkfC¿ïaÚM¾Í{ơˆü̉âwÆeœ[ri™¸BÀƠ¹×§́x¼{ªÚ‡í£Ÿc¬Gî„Î!,l!AÈ¢?ßqóŒ0öJ_>˜X₫5ío—\<“8zz/îbæ.+s¸‹2>vkà—Đ–gl{ļ3™q^/e›M€Ưă¨˜µæiÆç³ O}“%jư6¤-3$kÏOÎ\e₫¹<~SÓä]”Gº³NP­9^Ÿö¡g’Ux‰”´O~OgêK"¢D[N!«I•V--D}̀‡÷ÎÜD:ÜæḾÄä·£u|́Ñ?/~¥Ú‘JÙÍHăIú„t$RÏpâä§Z=ÎdLVâí̃ơsƠ‰Đ̉-‡. ¾´ú*ç÷…”‘{Oơ(<|ü©Ní‡>=ă“ëÙ¨ÁJJ}¹ăp~7á–VmÔ…s©F¹µ\œđÍ3×w€"€ø@Ûƒ!"»¨å₫W–;'<ŕӔß*’iÅ~»‡íÆqư9#Lªe-æ,"d˜UH7”UèϦĐ)Q)ù×C½·±©Zµo“!oMă?©§÷m\üä´ÿ₫ûÂÀ\³ "ˆª̉¬, øCcs·8ô$T ·5Ï·Z+Î@¨»§#2êvJQ´ñ_âú'È B®®ălZö`¬L+¢Z¡̣J̉<‚ ¦ÛuuÓºNeƠơ™ÀØvHZÂ2>¥$Ú´K­G[ ó¡P„?h{Lwü#ùÊMy•?cgX¤Z»±µ„ÄdȰ&fóàAåÀ5j2y%3X†æău*ÄL‡ÜIyh°ÉÓć· ”wâvRDfñU7f!BÆb®́Å(̉ ̃ẃô«Á^9n1» ̃œ[i¼Ä?5X¡I¤³XÇËÛ÷i à€ø@Û¤êÓ»V·!q{Ä¢… ›˜x̣äûö­˜4‰ÓÓ }#A¸#åaÊHpÍ`D¨í+ÂQ́fËnnwG *êa{{§y3aW{¾%%-ñùÖ/íÈmƯ¸y:+’,ƒöÏ ª³êsy';(<ˆ´UF ²eÛN}+ûÖ2à̀¾¨¦+ͤI₫éW ¦çpèÈmÉéå]Û‡ă Œæ¾§>„$Ø-«·ª“3‹êN£¡.é86Îú˜QMgǼ|Å̃½¡Ÿâm™™.Î %©l…7XI;"ødžFƒçïÙ³ḅäT †öhº·»̣XKŒ-éÈÅ?—ëöîƯ âmÛ1–•••‡Ï¤«iëÿœ=¬̣̣¢'ß§|4“'ûïܹÊÙ¹óO;K6¼ơđp…̣€ø@»¹T:vœ`14=ăZU'i1IÙ–ÛQÙˆ~ÿÁ¬œ}ÈÿÁÁẠ́-zrRRø÷đè åñ€vˆ‘̣̃ÿó—EÇ“Nê[6ó$G_â ~À·đêƠ«mÛ¶Ơ‰tvvVPP€“ÓvÉÎ}túø_Ṛ¿ơÔÖÿât²U••nư“›yåwCcó!ƒ[Ób\yæ̀æ¬ÅC‡ˆ ̣•„Ÿ|NKưTQAØÙ:tS„ßñ¾YYÙÊÊJ̃ .äååAùÚ"ñ‰)¬ª{4¢:+Œ˜<³ÑMø:vTÓÖ§û f¿,#ÿ¿{ơ"ó|¢×ÜŸ`đ¿•ïÂW­÷đ¡}høÁá#äƯJ©› ƒƒ ;˜HḈß_¬Óß@­—1”Äø–,YL‡edd¦M›ç¤ ‘”vµ¢+kôï¡køă¹IÈ*˜MœA !«¢üâÑ=̃s=ZÀÉĂaaúùËuèˆüư›¡ÏßĉâƯ#?‡J¶–‘UƒR€øMbäÈ‘§NQ3—JJJv́?DÛ`û̃C}G*¨ơk‰̀ù„†Np!UđĶˆÅ‹6O¦˜¼4$0PT¾–°ÙÆV ¡ / Ï”kjh €ø ¯¯úôiyyù &ÀÙøơy₫ºøÎăBa?£Ơă(oRo^HtœøCs#D¬ùÓ{,=¼ A¸9xI ”™’‰Đ}¥Æ¢;\ơW¨3½m}äùäsOœ¸>jÔ|(*ˆĐK–,“Đ&ؼ=ÎÀ̉Nº«ÊÏÜiß!V«""}¼=¿Ëá«:u:‚T>̃8§†¤øéÊ–;.¼Øµ¶¶¹Æ.r=èl¿U cg‚đÍgE)w¤Ô1“ÅQG?m·đ́₫Ïú¢fÅxKv¶’¶¶”ÄÚ6«#×›ÚOo•]›Mr‰Ư;ƯñoT¾Ê[·7Yw¤Í¾ ̉ik:Œ6!Â0¦_.R3È“ÊG₫Ÿíc¿u^IFBÊÔ½A„ë²§·EÏ¿¬|Ơ:ÚA[ûéÙ³»MM§@É@ü€ï¡  @YY™'‚Yđ¼BYQ¬Ñ _(ÔÚđ+´Dí½GN´–̣Ñü>bÜđ•₫¾ ¾É‰£Fw©/C¸qĂÅ”ª•²ƒ"ùIDơª´¢Íb̉ܪc8Ó»§”D›vÁº„[¦̉H\`óuLM™OÜèÖ­\Å@;?]‚ÈD&_ ìÂ3 #6Ü*s×"—²2sÅST–¦n£,&“ŸÁÈÍÉ餠¦ Îÿºà~1–PS‘¦îµL&ƒ½JFMSŒqc{3?½¿. 6¿¢ô ?ƒZ]{»Khª×îÀb±øùK î}%W±JrŸ•hjqÚ›1_¿È/z©¨¦Ă›NN8Û: i@)ÑÖẫÍY¹¹ù*jj,®1ˆ•““+.­¢ ĂàQVf¶æe¤ÁCø”ó”Ф½V†tâ‚û¹¨“̀´§XEEcœ““)®¢£À@%×V« fǧĐ1t>¦"%Ë̃÷ÿDeÎàOd|Ê_ñ¤w1ùJÉ<}ÎĂl„©À<‰møè4₫Kˈ^G1₫GSô)¹k2Ÿ¬ôtu##Mi…¬µ#t¶̉ù—bL̃Ó#Œ‰8ă‹™‹”“Î=³´̉£­%9éø›ăöX""¤l,'̀/—Ô:"ßêcüÅ £©‚Lˆ2\rúMđp5ôá8AŒáíóÇËk„45uÈ O)̃Éz{œ¢̉“R“äƠ×ềd|¶'!oKƯ¦£­›_u;zM2ûóXö*ơbA6☾â0B‚èĂ¢Ë:‡³~ƒ̀̉́ñù1ˆ²ªê–€H_2@°ÏŒ—81*ơ}°±&óÎ>¯/m‡¾ôµ¶îÚ3ĐÜö[·zưô±ôoJåoŸ³„E<#RúâE¥‚ü·¨4Qü´¨‡Ñ¯ux£¬Üp?}½à?qpă9XY eg%÷‡—@{?!̣_èƠúœw v!•M*¢¯jƯ+¹WWj{̣*t˜đ;å‹ Đå®’fÿ—ëÙŸy7yù”JªÇ/,|¢¢Á™úz=m0̉R§¾0̉`O+ĂG§,Ö16¦…äñƯ—ÜÄÜûO'R8Gvë÷—eơø‹¤÷̣¬à™¶®zơÅ3̣QVIˆû́OFư.Ùèªh̉_ÎP¯?;CåF3üMK ¯ö/‹^ ¤J‡å•¨£f¿æ¦Ÿ1m‚"ûho>¦¦đÛ˜b¿Ê¼^®ÔăílÊvƠ@èëƠsn¦a—iû̉Bơ‰áÛQËỞ“O₫ÖÓ$¨_ˆ¡flkSR¸cơW~£v@y“wñöÆ1I#²©We—VñX•’UÈD¬R¿]tʘLaCL’úƯâ§÷<¯—²Í¾w;»³œæ¹œq)7ñ£{wDå{Êtᔽy„å”Åù+¸ỷô3̃ƒ_fđƠ’¡Ÿ¬ƒÓ©+7'ù¼–å₫5W×yë ²ư7EÅ ́zˆÏ †`u–‘áÊ]™“S¤¨® V}«(xđ¢14{6^U~ǽ? ~@;©ö¤nÜeÏư¼Ư=-4Æ%}¿‹sÅǶÚ-8ÅPü¾³o éž4y¬ÿôu3‘Ñ_íËÈ‚́#> ctÇyàÛÔ…Q”sÜn¼¥ª³ÓÎk2I‰ œñ›ÛŒ ¨­Ï&”Ü·³´bHvơ[½QS¦#ëÍ•U±æ9 ™¿^A†’+‘®f«=«Ø¹ †,߈xqî;77UuÓ°¨›¾^^I|!!!ô~©­d»Û/ĂïƯl-Ư{;1*È3hmvÊJộôsZF&“è„aœ{n—Ơܳ]»oˆ âç9¢¬nÉv4Vjøy¹Ö¡±¸»®Ÿ!e13×Ñn!ª>iơè´dÉjáƒs†’‡²¾/£÷XŒüÜn?{7oÍ^́Ư…ư»8x98ωz¬$ÿ”û‹OWăÜhŒ?Äé;eÉ₫]¿˜z|R"7%¿”AÀ<êÖ0ÖC›Sơj0Ï•ss oñb=Íâ£̀訰µk©<«án•ÀÉÑ̉u-{—ng§§_=®7$¿³¹!µaN‰Ăœê‘¶=•I¨ƒí]¢ÖXˆ̣¦^ơ? z«ú’î’„´Zl|<§È̉NR÷¾ÆôÛ́M9IkŸs:aQu~ÆÚ¸¸úÖ* œ8©p¹££#ỏ7Ÿ’¯àØ€9œ¡ׯ&ÔùYƯý¯ùMÇzÄ傤öoÔΨ`–ƠRû3+•Ó•M[±á•àÍăD§ưHmßñuûצPA(¯ÎÅÄS9Q^̣Œ̀’^$½¼·u;++Eœ#©6"ºĐ}ƒ˜đ‡¢ÁăYEï’«vôưÙO^&ÆóƯ6e˜¹Ïø×4„¡}ª ‡¡̃ÓÖúsáöƯ{KU;ú÷,-­‚;,ĐÄï‡`à_²r̀ÈaÑu‡EMO—P?2̀éíQíó˜ßB‡¦zf/:VB{ƯÖN=Ûy:•ú:‡Ó{¡×HNỆ·y73.§Ä$»¸÷§n7̃]Ü¿=ÊÔ¨)6oßöÆÛ›Ó·]ZGÇ[§ádkc]ë>̉yẵFV;úCăÇåqôåâ9“÷M\rø oo™b‰ñœG­7oElm'C@ü íÑ[Uyyè «©?gwB]bN_®ÿöñ½ùs˜‰›«{EÅAfáV^đâ_e…Êyek«Xë/¦>ÿÜƠ Jâm“E₫û₫:Í™´¨5 ₫­R”kzz†ˆDR"¢Ú3³*YüK ^±5{±J>ä>/ÓÔä8…/ ^½zW¥­ĂéI7̣̀Íy!SƯ°“ɬb ̣œü÷t‹PRe¤+¹)sr^ˆ+Ê*ˆÑ5Ÿ•¹̃ªô”eU·Ư¸é­û́(<ˆ´a&±ÿÄ™^¿·Âij®b½.è×Oë›¶²´™°₫ÉÚ¹ód¦á=₫´„ZÆ~̃„ÆQégo™j)(#+Âm@Ú #$"2¯G©i*œơ[bvʸ8ªL\ÿ™RSS„nóé%pZ\?ăédÊR*^!ÂÈm÷°¯¼£ØM@+D榕Dß̃û”ñ€öÀÄQĂCĂÂ-œæǜ¾Ê½a¢¯#$¯ơÛÚÚÎ Z9w*»q¦ FưØm;RïK2›ƯÁ˜ÊöBª7©î¥ú:E÷à4R¥̃rVTq;à¢Zgñ³‚::²Ü›Iüæ×‘₫ ¡À ~ĐNđó}ôäi^Q©tW¥–̃W]:¾oÖôâxlÀú̃2ĂWṇ¬±Æ`Çñ…„LÓ3NÙƯfî4ưc̀£âÿy%1¨?YY>‹/ë³5HDHêèă[Ͼt¿½ÚR“ÁzƯ;dƒ·!(ÉŸ‰r‚£œ2oyyíi@Å»ú€̣ ~Đ¾Píö›j7tónå”Zd̀O~>t.>nÎ,×¾?¦|ˆÛ±Ơ€6«âƯRvœP@€1ùe:}Œ)g°n‰µkÇ#TN†”µµă9 H¹“ơ¼ÑÖóª “îÀnæÉmª=v(:v÷“ ©ïÿµ›ÛM@ü ½Ñ··Z_v`EøÊ¡v΂ŒNÍ’íÙ1.S§uî¤9˵Ùmöó£$0?ÿŸ®?¡₫°¢Bu†½fh›âüF̣|̣ḌLJ¾Ë4ÿ5®₫P,?øÀf(÷Ñă„Cû FÛ‹IÊ6}sâßÊ+'ää¬-G‹ư=[ü…¢Êïä‡8°Á¨=ñM9ܽ+ú×±³ƯƯDEe»uC.Ó  ~đ_EMU)À¿îœ>?)x̣´ä]q‹ÅÇסsçÎ rrj=øùk¬î7͹µl¶·¯«µ̀̉â‚Ç7^½zQZZZU…%%%•º©ÉȪqÓôîM}Ä€†é¡Ôü´!ƒ"âC44à§@üÄ€¦P^ÁʾûàùóçJJ*+*:täctê$+#Û·WO) ±_Óæ·o²ọ́o½.*)e~®ªB‚‚%%DëÚ]Eu(ü ˆĐ<× »sçή®®"""pfÚ"—³ï¤Ÿ9idưC´¦!¥¬ª¬J”Ï*Đ³—5Ó$]?w‚Ÿ¯ƒ£½í϶³vÅ®–—ë8bdgnœ¤ơAHư¡©BèûSmÿ³=»ßMu¶—‘S‡ßñ¾==½ŒŒ ¸8(_Ûc¼",Üt’«€ CNe¤Ă¬ïÈDw5“e6[Óî±µ£ ׂÓ=¸0ç^ơX1D ''‰ïÈ¡kW?9„RÉÏ»·•{öÏ™» â4sss®ø)))9;;Ă9i+\øç ñIwU±pÛŒÙYO.B¨èeYʾhïfG",l©ŸŸ\OuÔS½Ù*]%$;Ι+Ptê…OÖR̉Ư¡l ~@ăwîÜyüøñp6Ú×ïå—”±$»öhѽ˜Mr%}Áó·yÏơh.Ù#?-g°ÉN¥\¹̀́Û×A¤“$”Äh==½—/_B…g›€ØẒgµV:Á%ùÊMC-Ơ΢ßY<=ÍÔùq‹Ê/ƒ%¬\Y´`Áb(-ˆđ5̀ÍÍá$üú`Œ$¦üä)HäUzæ•¢â›W‡êë¶ññ+í́ºüü |Á™]»Âœœü Ø ~жÙ÷×i =ăÖÚ»¸j¿nÜ₫ư[¦ôKN^ËV¾ÖÁÉI|ǰ©SAÿ€ö%~&‘V²,9nQóû.!»ƒNßøXj5Í«um(auhzâ2fÁ0S¡Ö5xêTñÈÈåĐh'â—Gª¥s‡Âe1©I/_Ÿ_,3l¹ƒ§o\d8)_ j̣07›¸¨ĂdÀ̉Á5).ÚbåßI>=‚j`í`k—¼áz™»Nƒ1&##Œ‰’eo₫q˜”Ÿwáà±ỐhrUw#»^Ïă“̣†&Ô˜X˜Œm̉â¨em«îY‰yÈ ă^*Ddru½{Iê›`ăô]Ưl¢£ïºWé¨₫˜<  G”›É®ÑBåWáAÆ6®i‡£É”)ÅØàñ:‘₫¶® Ñ‘ÍÄx3}DƠ2£6÷¢7ỉ§„8:[zK[‡$̉Èá›ñé™ul{i"%”Pi#gG H㇬';”6†]'@¿sÉœ®âÎçO®~l¹±R¤¿·;©³“Ä;Û áÀỐC¤RzËÛ]œ8­́ÈÇZ£ES—–\ë)î)€/û!TL‹œ`7„ ©.dx鬘àWî{Ư!bâ®:S­Ñ2“c9ÏÔí1ˆÎ ¡(̉~„úô§³•²4§r3÷ˆ¾L/Çă«ÎÑQƠ›¬"YRDëØ†ñ+2>²̣rrÚ`´kk>rí>-“…/ #H{̉({8´Gí¶t®éu¹f€ËÊœ™Éø`Ø­+H[±íóÎdÆy½”m₫ƒ¸ñ»ÇQ1kÍÓŒ-Îgú&KúènbJ©ôA3‹ëçaÜxO ¾}û6N4JĐöů³IæÆI¤<Oñ[2IßƠjí—¤‹ùEEûæ'SiÖβ¼‚U'Â<¸(ÎQ¦¿ï”¢æB Ưÿ÷àg楣%ˆU©̃'.̀ë2dWZ.qSËh̉âÉ=J.-|ăje÷w†¶ÉQy¼Ălú*tç.«̃AÄØ÷&ƯÓüü(S•^¤ư× ̃»­Ÿ×p̉¨ÛûƯ9¯Uö†êë\½ÿí=BÏ$«đ)iŸüÎÔ—DD‰¶œBV!“ªaỞBÔÇ|8qï̀M¤£Ç½ ¨Ää·£u|́Ñ?/~¥Ú‘JÙÍHăIú„t”J7ÖÓ¢”ù‘*aùî‘*IY"/ÄB´"ƒ¾ˆ(wÍOÙ­ëưd+Ê@JùHnR›…́Ư^£Ñ”̣Ư'àđO,s«í†?«Ë-5Ïm¯·˜Ư£-köU;₫6µ‹GÔ.blưâhçu@{¿’₫ïæŒ~ÿĂød@ý"Œ›ô!&Óè  [í€â×/ëF]?}pg§ÉÔ3œ8ùé†V3“•¸@»™îDµI§é–C— _Z}•ÇóûBÊȽ§z >₫T§vÍ"«ô½´jăọº)ê tV@e£CÈôN*s/éŸRL‰Ô¿¸¼YjoĂ£ûÑêêÄă¹S·:‹¨ël dµ²²"×Q€psˆ á×”D»ƯÉœ CiO”˜̃0„NøÅÜƠzzeÆácvÊÇO•P„?h{HH×™]Ëư¯,wNx+gw«H¦ûíđ¶Çơçt0©&˘³ˆaV¡/;0(«ĐŸ'M¡S²•¦‡zocS´jß'Cjăj²ÓS¨6̃Z\RơâÅ£´OFŸGJ2H7R#̀¡;BƯ1ÀuÚx¨§!Ɔu#‘7́Å®P¡êêÅSƠ'Z}dG[¢¥óÜTúwÄp](Bˆ´=¦NŸt9[¡ûO™Á‹TËa7v VÍA·&Ï‹ûô)®ç–nùj¡j9”`₫MN₫×Âb!ÄÚ$¬o[Ư†S±›ØÏd̉$ŸẮ'ˆ·ªÉ|½{Û€ø@›e¬¹é†è˜Ác&·–Yg6]ùh́'øed¬ÑÓëÔZ6§¤˜™ø ~Đ–ñp¾û@‚–‰e+¨È₫h¯ï™̃HOõáĂá66?{ÖxŒ;fgË›™Y@±@ü Í3Å̃–YV–̣wN7uÍŸ³G¡ÛiÉß§|466¾7…¸Ï–úigéøñªÑ£]µµ¡¼ ~Đ^` 1ùưHâIÍ‚BŒƯ×±¨đÀÀÀ~l~0÷Ù Qơ”~-jđ³§å]GÖ‡r€ø@;dœ5’{Ö­»÷óŸöhÔ¼™w`•^80w¶[v'ÂæÂÏo ùƠª?çÍ“îĐ¡CóÚ¼o_Ùˆcº₫¦eñ€vvŸ̃ä‡ ¤]½–ÿøi?“zÅơéåăëÏyz̀FH¸ïl·²ÙÇçt€TA'' ii₫‘é]»>˜›(«èNÅñ€ÿÆúÈ~ơæíÁCñü‚ÂjÚ%䕾¸MEéẮk÷ne an8@‡‘ë5¸¯Ÿf3WI.]J¸p!g°¡Ô C>~~âK›Ü¿ÇHK{Á°ç$̀ :Q89Á€ø€¬”äœYMñÛ„ûw³@c~‰ö††¶ä§Ñd꽨€øˆüçÁ'§^κœ&§ÜCI½¯”b’}*yû4÷N^ÎuƠ^}́F›ẃØÊàËÂôă‰é|¾ˆF°(xüùÚß̀ü‚Ï–æºZ}¬à‡@üà¿Îó7%±Û¢M'Î"z韯¤ï$&Ù{ Qov3ÑÛoXQó₫]I:ÔGKkđ@ŸcóΡ}úéêa9y4cz#••É}¸E“_E¯X;cß.˜·&j@üà?DáÛ÷û÷î:~B‚Ns~07Ëñäÿ́—enü-'.jØ2*¸5&äIâ""|ÎÎ’?˜•Œ,¿ï9„¶‘á°/ưü—@‘@ü =s3ïEáÛbÙߺ³•¯™Qí7üưŧ+íó˜9£¹²  ”oÔĂû>üüIŒ̃½ûƯ„ñsE „ ~Đ®¨¬Â{èkh&ËhÙ ø:đ ¶råQQ—?jôTưAoÔ¼o$Åç4mes„´³ /5¸>Ñ•!µ’©×}|ÿ^´K—ï¶DÇxxS’=|”¬¥Ơˆ«JÔ¤Gq¹áæ%)阳ó|(Eˆ´1$å»~u}©|ç ™©SÚö[³̀@Äkm9¥Ä'Lm9…}O™§#絤”÷RÈ*djË36Ü*3”—Bz0?¿™o¨mO& ÓÇ?aª~a¢!qy¥ªª*¾ÆFT)È/è¡Úø¨+G’w›¥Y}êï\2Ø0\Q‹%å̉È₫£pÖè£~aă•1¶'c¶ÆNWˆó r\§±Ă×÷̣äÉG(Bˆ´=ªªX_Y«-O5*&OÏêî™2jÔ.„ŒHĂb”¤Ñđä‘ơ*K[V8«è¢ÇúÛY…ï°a >—Î$WmØs˜En̉­á9âqe%_ăoªl‘ Ṇ̃æp`)½|¥•Ø’ûaô4D(6£Œ̃(íÂ2fˆ ÏC¨”Œ™¨₫!)¹X̉||¢yăûèEñ€¶ÇÓ{9ưlp•/©yă¶gmÈ£…Œ‘O™3 –jsäĐ(«đTßK/Æïpư«¿v´¶̀àÄ—L„ÑÔẰ#̣ ÉỞÈƠËz<ÏÍÖîÚøÄñºÚ¤\nâÑ‘ú·ÑÂ-₫“ \éx‡Ơ₫z˜rl9₫-©¦å‰¥ÚÈGĐq!i+-Ë¿_¿ß  ~Đö0₫E'¼PÑ̉Ơë0“wN¿¹3ç² ªÓ«ÚȲ'Ơ†“à¯/ /·ÿ¹:jXăâÇè$µñĉâ_ס„ ~Đn™5ĂươÛ’CG 5±¹²}y/›U 2¸ÿ÷Nà÷%ø:̣;;SRajƯ Đ<“-°XÂkó},Ñê…ñ€ÿ̉’b³§O¥ĂÑÛwJ*tSíođ­™|zơ$=ù¨»»GgQ$gĐ̉6;8zs„öå½;NŸ.%%ơmw€ªJá»^öíÛkÀ€Ñüü¨Éư/ÄÚ®ÓœyËÊ˯^ÏÎ{øđơ«BÖçÏ|üüU•¬||â2Ư”•u´û*ÈHs’Ê©îç÷ó –“ëåï_«YÊ›×ù·n_ỵäƠÛ·¥Lf%ÆHP¨ƒ„˜p×ߤz÷¤SíD"øÁ?ê!,$4ÔPŸü´!›¥¤U†Ußñ?ñ?ñ?ñ?ñ?ñ?ñ?Ä@üÄ@üÄ@üÄ@üÄ@üÄ@üÄ@üÄñƒS€øˆ€øˆ€øˆ€øˆ€øˆ€øˆ€øˆâ‡1†³€Û |Ê |Ê |Ê |đKăçzû3£¬́mTToü‹sëĂÿz„ÓwmôO×ǃŒḍ÷‰^éÂMS’½3hg6({û.*.¶MïF»₫Ûóù2_ká'»à×@ù࿈™¡ÀŒ±‘dÀbIœµbMü$Ó¹íÀÚµÑ)ë¶&UÇó*ß\í©\µl å Ơ&fqmJ16ûæ<+ndf’ߢÍ*?¤]†ÔÖ”y8JÊ¿ Êc6g‰¯xVG³̉8¸»Núù•ö*œ+.®…mûܶN¥@ĂÑYG‚â<Æ ° |đ«àJzrä×U/„8Ê÷ú|0¸;¹Nâ‰l´g $ënTK”…ƒªĂAP_úky䡲çaë²̣ %ä»Ï¿X]†÷VÀŒÛ´ö̀¹L$,i5ÑÅ̃j`ƒ»`½È<“ư’tXZK7“Ù!×Ët„è°.AP&J- 2¸O×$fd#aቓçZk²$?éüƯ kkkÚø£IH%́6ĐTK\Î9›øø3”-Í4¨(7sƠ¦-…ïÊờ&¹;Zp™½UÅpKëè Ïó·ăb¡xƒ̣ĐoVF̉K»₫p₫°åô*MkËÂ749<€+Ëÿ˜I₫w øy¶~(çºuµ~Î]Œ Vñø+oưh2ü"y±¢årƯÑ*ŘQ7»çºÔw×™ø©usÙX₫©!̣]½) A®G%HY ǻ£å°¡Æ°hê‘£ciOVVVd¸c̣(¹2릧 ăä—£Ù(RAµƯ“IåS%ˆa¯åå !ø»MEˆR>ăÙ{đ^ÊÉ£«1mÖƠzÉöIô-(‘;[‚LÅP0{哸àV±É‘½AÁø̉’Pcba:Êß0­§¯§eOÛe[f y\L‚!EFlÁ§g̣fA]iÇ ?ƯÜBVf;A:Qu¡yƠ²§Z–>8!®Fé´ Ñă‡t²=™åî:B›=HûUI¹DhB”̣±G´,Đm°@ÉÈ̀y;̃ö§ÀßZ/ă¥̉T%eÀ™S …FR6"Ämơ’µ-öŪ‰ bŒ†ær‘Q¥«OÂøŸæµlé¢Eh˜,¸¸4í:'RA:©Æt¸?ä'í́9êjèpư€3l‡Sç¼ză ÷mv́v=-QpÊ©D•Wè -¥A¥'™IÊùu½̣2ÑqB‡Xä _wÎÎǼ~”0J5(_ĂaG’c\_J-*Ñ.kúEÚøzuƒÈ=î/©1è˜ËQYª¨öüdTA´–Íù©ÛÔ-ç6¸j—N~§*‹Đ1Kv¦; æIrˆöœT&mk~Ë.F-½X+âv)%½îrêf¹'VÏy&b+Ù­ppZô„íùÛW m´@Zyù¨'­Y²ưn(ƒ~±âÉr AláƯE)ä'Æ€̣́Đ(|}èïEk¯%P+1 $“Mc×4Æ­0G•©­boɵ•ê–¾́ jÈ÷®ÄGÓđähK·?̀Ùhé©Ưt]n-ùÜç’;M»yo!æ^kFt#¿Ël2ÎHG™úêFÊă!´ôâJ®QM‡,V.*Eøa·u=”÷Ó1<Éu]]uk–˜eE,$ÆÏYå‡ Ê÷Ëđ"'Íßwq\ơ,ªcdùgx„¥¾Ú¯c^Ạªµ§••½ƯÎÛÇj¹K^0°;B¤? ß¹Ád!Fha:'Lµ©lk÷̉²‡è7d‡\ê$жpÅØ•–+B„ê¸/Ơ(Ÿ Æèö¢:üDóNm½$`±·±dưx)å®(ư j&Ù1û9~[Ê_ăÔUê\B₫_>›[Ơ¼%œư,²Ü‹·̣Y.** -(߯AÔªÊLO²2Hb_·¸…öơ­9¿ºq:2’ªx ‹û1‚´‰àlv‹5(›mÍÙ{‘;U7HU¬øR²€Ư{*ưAT¦jEk;KuEˆR‘Œ"¤ÓáºÊ„ítüơd*t…D†w]í¨CºMŒ–(‰ºÚºÖɤ"w‡€ÚT2à°ënœSï–¶Ù!–S¥,ĐÍ ?ÙÅz[ß›~i§K_q¾Êˆ9ºV›QĂÑrö}.Å×À,ü U£™ùfºT„̉¼„'-t'@ù~ƠÙS=’²G©S…×dă´G´Jữ̀/Ø«®´úñ̉­₫D `¶1–Ñcµ¤$ùñ®xÉ₫ÿ©œE}u›„¥|ûÖÛ±ƠăçÚØ¥ZE"69Æ!ú²ôÅeEùe&NøyăÀnê¤+íijé®{Éu2ăïél‰¦’‡¼ÛYc»nùª>)#̀‚O£§±QÓß ¸úà³}^ø°5́ ÇpÏÍóÂ-èN«TÓ°Ë(œ:äº̉3¸xê(¾ |¿os:ßôñÇ7Cé`êCœ¾b„1ơr›|HE·‚µŒƒrÈø´@ăà+T3köÅàe¢™VÀs…`®7æeBD¦Ớ$ñÓR]8H™~\ăù©̀?Ÿ·jB,UB ¯&­Æ'µÓW6øˆÓåqá§èHß½Â&ơàäBI<ég¬:=hÉ¥Åâƒ9o#D(½§„Ó¬œ ·gí.¹Rö07·Û,̀íF–sl¹–ơ⽬?í1”§o›c<½¦kÔ®ë%:]àbø¿à7\¯_˽èḷs¼5BBHTi$gYrtÅóëÖ“¦úH˜{­ p†Ệí0$º:öí¢‰ñꜴÅaë₫ÉÉG¸“Ùxûe³iaû}ƪ5ă:”ÿ«X}ȯ""öĂW íơåÈD¡kÖP*5¤—ä—’˜‹‹‚|æO¿ƒDäf͘>±¦ƯôĐÅ!kº !$ÚdžQ0÷[³†rUôxÏF̉®¥aÔ˜s’ưÇl‰ ªn2#²f ¹¹*ĂÄƠ ÄÈ+{–––ÍZ'¢Ö›•¥¼鵪߻rѪ®Å¢Ù:gس̣́$Ÿ~Y›¬ƯQQưíŒ?Æ“´“®˜z)ÖcÀåĐ> đ®ë±)è$¦fÖ, «ÄÇÇרˆ¦qT¬qư|ŒæƠñöön&›”UG™ µqA ¯¨›CĂæéY:%Z:Ơ÷ÚíXP¾ă\̉ÎăÛW*A†‘xW©5–Ư©ö-{KRßwFÑ+h÷ÈïÄ˰QrÁœÆRC*"ªóPDÚÛà,F‚œlP[Àb?){́z˜…-¯³jéá¥9̀ \¼î†»·"¶ö›!̉Ú’÷/\LŒ‰©øüéç7ÍđÍô¢ïºÈà₫Ơk‹9’y˜óF$ăêw#œUˆyÇËË‹üæ¼')\A(\€̣µ2̉’UMÒơĂî§s^âÅE†×Jq§Ơ{Çö >q́zÎ _âÑå3áV¤đÆbæM‚Ñ—cáº`̣CÙ\Ơj$P§]k}Œr:“1ÔyÚm—s^MIÖ{kQ~¸yÊ? |¿ƒÇÙ£hê½·ë¾'Ñ“ºƠ¬`ÏæƠƯÂíV̉–ú[©›!DUZ̉Ơ€µïû©´́M‰Êsí÷uiQîT­UÍÛ A¸•!«8nëæ ÷E´F© ©?KÆ :pµë‘ná˽„|Ó˜âto*ùÀª·ªư½úŸÊyº|pÊ÷k¡`¾!Jù¶₫¡4Xî`„PÙ=z˼ä(~´¥~Ëp±>fQZƯ÷?ŒH5§t´´S12Ôè;t¤çÅ¡óJörw»|eïæ6æSés¢»Í[9º™éơbí¦­øƯç­hcèÆƒÛ–¦>ij’Ÿ¬µ#t¨IÏxÑ#(̃Êg̉‹źÚP·jÙc5¾Nk™u£§G²ÛăĐ£óªøüß=æaª~ølèŒÓ%àz”¯ơ©ÈƯ+ FuªÓÁˆ$äô›†{ è°hß:©çơXÇ’äXʯJNH+ÆbBeô+73qBGe>âl±ÔDOhç̃ÁåœúM‚ø wÀ§O#oÊ#T'WWzV”¤8„ƯƯà€d<.¥}MWWײ·OăØb,?}´Wa{¢™Ă«í©å˜ê9íÜßȉƠ}< ¢‡zD7ăS™öù?ÑOË*́6{ôÂk¶&ïRóÉH£?ÿv„«áëTæüƯëÄuéÿèd(7Àγºcœµe¿¬lÜøwv÷ph!cc¼̀gDªyơÖ“ùv¾å¸À~”¯àï9 ³Œ ₫ºCH\-bé±\G ´R¹1Ư©.3™Ó°cו×́éÓ B,ÑBv'){Fsâbú%©Oß‡Đ£…~'ñËD,Ag€na{HÏèÙXhÙĆùÀçÏ/x½±̣ổ§:ÉÊÙº†K₫!Ä~'ÑƠy¢~8›}÷́<œ7½¶Gz9‡p‹™̉‡G:»cOÜ]ĂÙGyµXíü̉ËFA—”›Û‡‘÷́ÍÙ–¶:̉rÅ­ Ń=¢/‘‡™À9̉Â'.iñ¸¾¯́étï™G=PåZÑƯeP̃6êÄt7ư|‰Ú8m™F_³&zxPƠ-£|+ fD^åh³N^>§ƒ¾,·K̀7đ-Çö |Íf£âW̃´‰.ĂxYƒâ×`ú€D\{2Đ)Øe/w¡̃›̣’Ï(đ6äÙEV]Ôζ‹îẈÄ_éøŒcMMV'“zƯ¢'¬89á i¹G]t‡‘ ¿‰œẓưϱ}uc*ÚÏß>mĂG“Î̉“̃]KI>ú®g~đ†æ=/ÈHüû<§È=›$Đu ‘:»ŸY¾L,¯¬¸töô®ô  eC—;È·KŒ_ÊÛY¢W4 #éÀö}‰e2¶t>q áăB(ëÜ₫-;’ÊđD÷ùÍ>ˆn[·å€v“ăÈßÉz‚ºƠ{.)geF‡’ÿtHf¯ú̉¼çGŒW=nµ™™•Ñ¢‹iˤb»Íˆ{Z6.üO÷ WJÜơ¿s`êÚ†ë > F×7  wĐĬ|Æ$ºXÇE,AHÔ$̃»X[·å€vœ9ư½t”̉R„Œm\—-o¤ĂơÄŸ=W”¡†ơ±3{¡I—¯̀{î–đ\1ÄÜ~í-reQÑsÔQ•§̉²g³̣b‚aœ·¡ăÚËbîß{;e‹f$p½RƠơ!Ó§“fp^‹×7`£%G6ؽḳB• «Ï9Nêt½ăBVƠ²Á«"–«n$ùôk®“ƯÖí@ù }À(ÍÙ+¢ù½v8Úø0ưVµ‚=K¸‚4§T^¥«²2ơ>é‹óK+(ÉÊ!DƯ¸¥Ù[Å9N¡·%eQ#J_r\KƠ£Æ̃¯¢CøV¦Çă“ªD§W磅śΡBs×]ŒœcȨg€û±É¥¥¬R–4%.ƯÉD(ÿú„F×;.&§_Đz¬?ñ̀ˆá:̃g’Ø"Ÿ‡Íu®Ûºư(´éÓ˜„ñ$VÉóèµáÁ몣  ÏQ÷•yÏëđè§OKF¼Ï_–"ơÎßgmü#ʤ¬‹G–/ú3!-‹\7w°X¿7 Œ@ÄÏ?YW<)¯väû3æÔD{j­ƒh̃³ƯÖí@ù ưÀ/¦èI~Ȱ—ɾ'×I56ïyºp]G®®®µV¼{…Pç±V{đ¸øÔql¸BˆQCÂ.œăW'Wq<}ơ´´™­ĂEV{\­‰†x½Ơ¬]»Ñ2C?“ê×+ÉùƠ9.„Äéa"̉ÿ7đơb,]óL JküÓÖí@ù `ơL' ;T3Óç]µáJI­¤ÇfÄ́¢7ÇQƠ½½ÁyÏ}ôúĐCËÊ·]8ÇÏW…g¡¬m.ĶjïĐ`ÅwÈMiÎMê-VÜJọĂ³F5óOjvâîµ  Å=ÛBÔ@¸6Íñ˜½¡T‚÷&}\_¯¼Kt́ÍÙ¶¢f•¶n?Êí„ë³^ç¯Zµö䙋Ÿ$'«bï:ÛÑz7Æ¥vƯ ¤­g!&9ê+óKˬ¾z@bvØa2ÇyÔâa™8 ÷êÜ…Kß’wc,µ,2J[Qø»Meh8ćœ~46rÏ₫ü¼Ww22³˜½`®4§¼ôĐZØ›ùÅyÆ]{ˆ°dü±Xi~$U‚]¡9hlƯă"—ùz‘r¸6î">ếÑ̀#¾¶uûP>h?đK«„E„}ñŸ–Z³ôƠyÏơ&,º>aïÆbjú±ñIÍh­‘µ#ùù̉Ú:LœÎ³Ö>`ư—‹ƒw°C ÏãÖí@ù”@ù”@ù”@ù”åP>¾‡*Œ/\É|pÿî»—ÏA3‚¨b±Ê™ŸÄ¥åº÷P2h Cø—²ùí›̀¬¬«UJˆó •øă‡*!¡**¢Z}zª™₫çWƯº;çñăÇe;¢ø:̣Ÿ+pIq¥hg¾=%tú “‘ëeå€!ïEÑ‘øƒbR²z&’Ư5ÈÏ—R̃+©zp>åaößf#­ôï×z²SÓ¶düưzÄđÎưû3̀†w4₫¥²½(¼wúô~ñv³ùZY¶™¥÷í?$"̉ÁÜ\´Oß}ú!$ö…´i7n/€*­-†ÿ›ẃ:¬Ó́Ùß9R—.|₫₫̣UU©+V˜çí# (̣sNué§;›¶Äû̀—ñ™/÷}9ĐXđxË…óeÎξPzAùøfVF¬5±q$eïdzRÓ¦&ü _áíéÁÏßRIÑ«Ôô‹S§J₫xV||©·ßÈâk=»¥Ou\Ü‘#DøÈưxVÊJ‚Î΂‡… 2AJZ1(MâcÙ瘘˜á“Ü7ÛSf₫uîrwy)í¾Íns|üJc#†­­X3æIªˆ² [êç·¤¥Î5f­\º`\óæ:~¼xaảÑ#„ơ¸ÙPAùh„'¯̃O¿4tü´–È\µßÀÅo’RÎ[ mÆl£¢–»ºJD‡–°ÙÏO.2r™§çâæW½ª’­Û76»́ÑÈËóûòÖđé3 æ”€/ọ́Ư‡´ËWû nÁr¢âR‚B'Ï¥3i– 7o^>k–t‹OO™ơ–ÍñhVñĂåK—EÊ·œÙ:t˜>C Ä”€/RVÁJL>©k:º¥w$ÈèÄS¾‘s·Ÿfï̀jÿ₫đ™3%ÂÉ™ă!³rå̉ ©ÚăơëWµ΅q™æ̉ùÈ‘-ăÆÍ„Ê@]ÖFDX8Íù9ûê,!sïú%Mơ;~ÿú́ịHóN-TÉYŸ ä6m=+àdzZ±l̃<ÙŸc6éùb½Ê•‘UƒBÊ@ ›¶íüi²G£®k¸jM¤¿ïüïu›ªñα´èü3mvq¿w/½W/£É$ăêVooéŸi¶Œ,ÿáĂÙØø@9å€ĂDzϪ}~ÿùû5wœrá¢ÙÁß±í†M¡î2?Ù`A™™W~Hù0~ư¦„ ºüdËml:oƯºrÆŒPÚAù X¿6Ârªg«́º¨äưwlÅü”÷ÇD‰V1ø?ÄXooÿ₫q̀¶ĐéÓ¥ZÅr«Q VEY«Í€̣@ëóæC©‰ckí]CØáI6£,¿i«[v{¿ị̈‚ÿ*+0~<±„xƠw;|}úµÖ©Vç_»6ÂËk!”yP>ø¯³uóÆŸü†¯ï?–~›|T–ÙÛ×uøT ·¼ê°å’9‰ÁZu”dœQÑÏøI®í×ÁHI‰33søÖ#=|xµmçV<Ơ––bPàAù@½·®ÚCGå>*PSUnª~Ûh[[?²Ö¬ÉC¡*+ ¡¯ƒ£ØmH*srƠÄjnå99ïÔ4ª‡P£ˆËH)H Đ˹9OY 5F†XËË{₫Gú¹¢²uOµZÇÄÄmVV.ṔAùà¿ËÙËו{÷ku3÷[ĐÔ–‡%%ub*Ê „î°¢ôJXă(¶ßv\\ÿ„ƒ›A\ÔÛ 1T ;jk\•öºG±²Îè´uu¡aÛÛn yºéDFe"¤ñ́í»TUṾ}K—Œ2æc;;ñV?Ơ¯ Øƒ̣Àÿ³w&đPuo?c™±oe)†¬£Be©hAYêUQZ½¡"¤¬½¯èÿ6̉J;íx[̃x[©·Ô[êmzKEYZ¨P£b̉ îÿ̃¹c¬1Ê’·óừ‡;gÎ=÷¹ç{~ç9çÜsofeÚiè÷ºJ5øÖÙÙ·œi±Ä~¹0ÂYhÔØ°èü"uiÔẾÔ¬MQ";ëE$çÎÜUÆ₫"ˆOÖ{d¥ñôë[ĂM…Àg,¤8a²Ç@¤pR‹±lw8LJJđüùCVV®üŸă_¥M™*̃ëY=ÑV{¨|ȼ̣ÀïÁŒAœ—ùñĂƒiƒÛèLçøỳrFổ-Tï<4¡óÚ‰PO¦™Æ­Æ]À¦nœ0/ˆ0óå \I-îJă`ƒÇPÀ{!Öư„¢-—¶¹~½Đª3/røèă÷ |ƒ4‹ oR5L`á‡Ê×—(..VWWïU˜Å%,ué̉âbå̃³¤´´TAY¹·^ÁÙ»ç̃…¨ëuz¤º´´VYIªôÅ3åjͲ…R₫â™Bóđ!‹K̃¾÷`øPƒcæÜ-4ÜrzËÆ°?T8ÏP +ÈÄ&ưz=Ù'ë ®̣w, $jß]¾ưy0̉Fj‡KwÎPªoøÖ8Ѧ,ÿ-áÚ§mKÈ ‰NăPC̣wrѳsnCåƒÊÇe ‚d5l»₫v:y¹m—›²‚áúmi0¨T*¢½hRå­ơT“ó(zQ…JÍb ß8Y¬¶h×EùÖ«(¯Æ²«Q£^ªLđs¯F-È=sÑ»‹Ê ªÍr̃H©É)éÿœs~së½>ælv°û;çơa½œẀ&W¥’™`¢·»€iÜÉK“——Ị̈×´ÔAs¨ç vúŒ×;›ŒƯÈǵHÔ~Ö¾cóWºkGfÍX×r¯«ÔÍ”½hE±¹Ó\"n"§iúüÚA:î×ÚçĂªÛ9NO—û<Ăå¿Z®,#ºU‰¯5s bµ³ïFçĐ ´Ê†o†(ºûs3*¼-«-ßuQh¾ơ{5Ÿ<©€Â•g‚dƒ1Xmm³_V`æøÉ×+©́œ́|™*ê x)e3™$29?7W\Y[Y†T^œÇ@eµ©ø$2&“Iæü¤¨M“æx"Dà́Æ&‘Áû;+—ïú%Đ…DÆ.ÎPỂt”[ÂfææQ¤U0§—Hq^>Wä„ÈTWW·Ú£,¿¨œFă¼óŒÍf“HE¹ÙÚ4ć[yiQƒÉư‰ë¬ä½yWkdŒ‡°ù4©üÜl¶¬¶păIÂâX`.[H‘¦óÅƠ˜ZØÀd²É¤ªÜüRm ;jî¡ß¶Ư>{Œp-§Ru™Lâ`Æ5÷́Øœ¿El–:çÚ–æ?`°‘¦éW—Erë¬Å/v,R?⪵0wÉđărmh²ÙVu5vI‰Ü®.-*yǦpEd–—¾dT©jk“[å0–WƠ(ÅÈ@w¥ŹÛ́Rrrsóe¨ÊƯ¢đùEÏÉJ-¯¾bq;£₫ G­™ª'ö‰Éă–äj6‰"avơù̉¦RÍÛü’̣ZM=®ˆ̃,¨àeNÍëge•,M]-îù|*/}U©¦¡Ơ˜&ÏÍz]ÊÍÊ*­íc£ Ÿ‡FÙ4¬'¡é#±@«Ø•×G₫½"0ụß;¾C@ù3ú®…[èÓ4)¨rDxɵ%Ë«ªôgqdE·:;$,‹e°Ø1ë:˜ BUG:‘×h×ràg-“A¶†}U‚ÜÛóI)ƒh´æ÷à§§˜́ñ¼Oñ =ÏümXytĵåÆ$²§h•V#¾xwîÁôí̀f‘ẖ“W1(dA( Pù0 ³±û˜#{$%V5 «ªÊÿ₫Eqü*·€äø5€£‹Â ÁÍgZrŸøưææ‘œh·öfƲA ̃ăæd—œvzËO¾ÆŸ°Â9ÛhE©ü­â¶Ç ́@Ö#g_º›ˆ ²κ%©… ©W|Âê¸ƠÍÛ;91è¯FsC)œ#Ú;¹e¤%›íèY^²ÜÆ %tx;[$¦^Æ| 3¶Â—9¾!Êà‘f€V|™l”&D¸JĂǗë’3î–¡¨‡QÇ&ñpF|Ú›÷´øDܹ́ï—1#!N®̃i)‰Àz7zñœ³FTr₫'c‰…8©O»TÄB« ÜöpÏùhqcaù&gàÿ?w¼R PÖ_« 2k6£á7îÏuœw$Ư˜‚ŸQ€–~f:¬˜HĐ¯½7kùàqùœ¼½Ó°́•‚˜ÓÂ< ¥EƠ91©3t₫Ǻ´+{‹më¤2èÍŸđÜÆ̣ \N-ÄëM4Aâđö™–˜đ§ÿÉWOưy9‹ ÆvîàtR6'fŒUË}[\J'›(†Ñi‰X’ Pt{×û|oß l¥|Üy÷(WÊXóaŒÔT&|»” U¡/æˆî´äø|DÄÇI.³BOÎñ[ôû–mDˆ‰¦üÇ̀‡R›®¦SÁ£/ÀR b:»ÍNM>8!Í\É÷ ~l–•mû–V˜äƯ"ĐÔq\ªcĂ‹ÔÂ}¹›¾á‰ mkótkó¦ƠEj:7R¸okÄHIƠײYB$a¾zJO¥e•̉~}TÆ̉¨¨ËƠQ”&7‹>äø„™e‰V hÓk’S^o¤ À‘g\4vại=jߥœŸäWcûQ ăNÑ7ÀÖ7Ó‘#.o[L^%’“‘…•k²b7&hÚ₫$Zè¶ăW…œ«ˆµ–KĂª-„èkH¼_ëe ¨÷Ù9äLú–‰¹fo ¶^Ëđ LK0?bnØ`k·xßÜ–7aúƯ=ˆÔKw\ ̀â ²_sĂơ÷¼]Xs^Ö£µºbI ̃2¼ö<[m#>LG¤~À¥E²X]‰‰æ uưû̀¼DӢёàĂ9ÎṂû;Yj¤ET>¼ëªí`¬7¼ñƠ_%œÆ°®*^h°jËËo*ªŒÆ‹@tŸ™Ïr±…m×”n_¸®_C@â«z^9¯r¯*8`鸾Å~Ö#86H¶e#̃L&J³Kl îÆ‹)ø„3fIaƒËÅmƯ╵oÏáü™Ä»UyŒkçy®mCÚ±­M4y₫b“ăs!,Ç̣ØÓ½S¯'Üv»¿tѰºµ²đ./µ±n ;œrÓô[3DC”wÁ[›~å2ÓăgûßqLJñäöŒµ?ia2¸é×ƯÅ'…ƠµWâ›Ơ˜¦̣V¹₫è0ɬ©ñ­ömy)·1R¬É̀C ƯƠ³µÛx¿··%²ÑØU9—|ÛOk6ªª`¥’ƒ[üdlDkÓP wÄIê3h©|h}=?6×ƠG•‹€¿"(ÔÊ5T7 PÛƒ¾>ƒă>ç,ơ0›̃6kíŸÅăM•?O¹Œ ?•DOrnh”vpˆiQ´ZM^å¡úz@ ̣I¼®Œ¹₫×?†5ÄîâƯîŒÆúF¥yJ5,v›‰ƯÎ4Ư¦!¯_€¦ *z*T­í…»Ûxÿ§ăú£/Ñ)*Ø>¥9Ü^ â8um:ˆà58Ça-ÍÉbHi¼„°Ÿ4 ‡†Ûßrë˜GGxHH³†s;&µ¦,¯¸±‡ª=Û¾dC+Zu½œ¹°\q¼ÿpíûj{ÍqEÎƯ“wá o₫ÅV æáyù²6D³ïSè@yI§JImáqÆ8R V¢·¹2¼qœ‘߉́Í“›km—̣P ê¢Ü÷†„xs4x«Œ¬9O7·:@£̣½+mwí±Ùø†¼́đˆï™BAm^WS„¯.¸ªª¯[3“»gqq…ºz×,Íf ‘ù}6N‚¢Ú:0®8!ñÙ3T¨c…Y’ÓeÀ)̀€¡:¼h—“2WçöO5$‘¾NJeO<Îgñ†¢é¿øN¼ACi³{ªùäƠ†<üȆ•ẵmel.uÆ54r–™·ĂT|ÜÅ{¨G©¹µÉ´¬́àR^{¼Ûè²dwƒù]÷>/—1‡n8·¦DbM1¼N¾tăÆkw‘›ä‘; ù×ÀbV6¥̃øEfôB“6ÄîÑŸ×OÇ—½J¼BHIY™—"V6¾U¹̣î.˜{D87ï̀Ï:Æcè×̃ó*’–öÁ)»| U¨ƒí6Ư=néÄÜââ$ß±Ø æ̃ú |É$£–Ù†ßá¶Ñç×ÓÁGæ¸z›¶/ÛpÀ¬ Ù»¼$æ†ư–¦a ă~Ă²; ­Ư«GÖĂîó̃ëÏDM–6:N¿–@|'Tª•y‹‡j@ªPY¿RÆdyäÙÎÍ‚ĂTÍuUr¬Ç¨;9÷€è,̃E—P9[Ö/Ơ¶¢â­¢;Å­_P@nq)Ę™© E%¹‡‚]Âtá„̃ÆOÿ~­»;S÷%P°¦Wáư½;÷èfïüÜsü–¡àß{_´ådŸpkjjhp3=ؤƒ‰̣KÍ@1-ơbs[¯%’’áKÊË¿¦ÖnX‡s>•º¼:Å›Wª|? )J–aTÖÊ´rÛ‹¡N¹d È4́:à³ñÑI"ÆKÿ¥_Ÿßد`§`9w³C¥s¤ç ûßôZY´áºøŒµ3̃¸^„­́Mç‹—(XQ#9E듸(µồ‰3Úœ¼ÊÉĂ( PùpŒ@=׆F„mß“â»?#ÈƯ ´ºzƯhç²… É*3Qw·Đéºé·¹j^#PÍÖ‡p;‹VY8טîÁöË=¹pET¥¹GYÖ¾[(æY®đrƯ³ë´éÎ(”ñØyvP¦œêƒ7l¬rgë8Đ×ăM<}ḉđÛ6e¬Û²q>å#³8/láB9ÿ4> kh̉étü¸ »ÜAÑ­QK"7½V<ÅL2géfeEnkŸpáîưëÙưçrƯ­ơ¹³dS̀¯ăC/¡>®ØÍ”Œû’I­AQ–³ư”e«KÝ—ë¶ÿKä†gà̀n ÅæD¡)+Ú̀Ø–6TỔ7sSlwM PLw»üsÆ?…SXáí{à—®×:]˜›~u¨×’w™+­t$A…=/ưÖđ.Ÿ4Ơ¾N§­,'m>ñÿ“±”¾A(ÀF®¤Äm–!® fOT` ¿ÿ±aK¥ú9b!D'¤¢/}œ"#W¯F«/&îܸqn«}[\J`v-Ïdÿ’eaª*Z,´[º§ô©ßzQI"‰đBü#bI,¦×²ƒƯ¯P“Ç ù…‹i1ëé]/ßùPˆJó§`诇2#™ÉüyïÚđ°ûï¯îõ0"*È 6(ÊqN•&bºeRnJ?r*çU¥‘RË–¤ª_O¶°Ø|e“ù™Læœû3»ñ)ƠƠœ¡fv-›$T]ZQ¨£Ñ¸ïF//­`°D´Ơ%˜̀:2³‹YªY ¨%cŒßZ¶cÜ̃qO_Ưqöºœü)Ná‰ơ9ä•Y™g¥%̉¤%8emˆúơØÚu¥r*̣EŒDui,tVx›ïÙû0!-á¥OBdä™ó̀„ê¿/ïÜx!.̃ßíê璘½j5y•ÛŒ••¯1•ØÉ-ÂL½R½x_}Ă¹S;Lgø5ônÙÍÄ ºáÔÔŒ©ÅURê‘IÄ6ñ –¨Ä†ô¥uR3̉yóđ b‚™LjZ8?| öw¥?–̉NJMåÅ çØĐdàÏë2rôkúdr\RZÓÓ±¿̉ª¡)÷E“Ø̣̀ÊæÏN $Ei^„đÅ*¼ÜàÙV^^̃"÷¤H-lî7¬yf’’¸§<¾ÁrvÎ+±cÎÂëfeY5»Y÷ ‰"½¤áB`®RlBrëôÛÜ‹wùđhK‡µ™E4G¿†±)rø’đ/å‘”B“Üç&NKl——ĂQ ²÷ăˆVû6»”Úă禟ۭ·ÇË'©Mf÷\ÜÆÄ»5‰vÄ6g©SOO"2÷5§®+¹Ă±ƒƒñœp™‰ t“ÅCRlÈëX\}~t¯÷&gÏeóaèëÉñ«B "\œăưßÓ7 7 ïqhXY·8kˆ;Ứ&gàămü¼̉áÁĂ ‹Î¬ơưà₫'cÎC ÆÆó›„/i˜hy†± _è  D­Ă+ %Ê£a£¡“Ó̃‚(ZI©ÜbÓj̣*§ÓÔ 0@å뺫 ¥€¸pOgYqÆÆÈ´f#1UÊ®n/¹ åä›Îe†îH¥u₫9´œms×ååUsoïøÅ !”¦”ƇÇz赟È×íƠ…¹ÑW(¸‡ú˸|®ç˜́ÈŸç»L“³ÉyỚyÆ‹Ă|)Ÿ™¦Á™ßh >(`ë^pÓñY@-oÅN·`÷₫jN”Á¨û®x}½°ÉˆÉ•¯+ £ƯÓU€öÂ,,uÇåĨ+=#µKn´è@Á¢Æ¯áÉi_‘È×íƠ…¹ÑW’êÑơ‹=Wîöl+üîƠ¿Çñ§|rrׯW™™}똖&MçáĂDÿ£­³>HùÀO cÇîÔÇ À«^¿âç3?ÛL @a€Êü¸LŸ6åé¶©wÍPTRá?̣… ùW¾×/€Xg,yù’¯×ä̃¼%b2¼Sç8tèäâ Äz7«ï̃+·™ >T>H7sđàÁY³fÁ|ø>‘–¿ñÇ̃Q“fö¢ ¬Ê²™Np«§NE¬rđeđч˜?¹kW¸„8œÈR0ö»ßá¸úf2¢ÓgzâDeï* Îå‹=T>H·“ŸŸ3á{¦Ÿb¿̃5àÜŸL"Âù¯§oÛî[^…Êø-Œ:Y9rdÙ¥¹·ú×S¤ơ8‹vĐéÓ°ŸÇ.›©̉O‘Đ<"E6®8zü_AÖƒéÂôI~®÷̣öø3ơpŸVWwUP°×–¡Ù»1Ïs0,óPù çŸ́?–A3×+GGj?Ïûy~g÷—åMqlÚàÔ#Ü*3Ûq±hg8g"¥‘ă¸&kññ± ơ:í£¯KYb́ßẠ́›6Ï₫“UV¼)₫¸€bo]k= Xà¡̣A úÚ̃:tẓˆđ°Îîe;Ñëđ±.3ºlzÆ;;l³³8nM_®ÛǸj¦¤››åWÈqưgÖMaÏê;ß{yyẲ•à̀öSÜ–mc={ø¸Ơ¯‹ƒ–}Ư¾´aơơOºJBDSÓù²dëÖ§!Á_?,ª¦f»úThXÿÎêÏ5¶¶f°¨Cåƒ@ ¸LŸ₫øÍ+E¥;"@q̃ĂQ†z_·;f½fíƠà•S'ëB‚ùÆDB‚—ŸËŒ³±–èIËẃ( „Í ̣A &(ơS¸pérO*_ú̃ø¯èçl.!‘))«]]e{Æ`C~¨á .|AA ơQUU9ââ=ô¶ íÛËa!‡Ê@Z2gÆ´µălfùôÀ±₫₫c÷7ÊÓ´…—²v±ïnƒY,ñ[7?L˜8¤KRÓdṿä={{´æy;Êö¿o¨|¤m‚—FGG;ú„tëQ.¦î]âï×%I‰‘¥ œ98}z7.FĂfS|í17¨ Óœ<ÙçđáMÎÎ"Ư*~§O#“&ừç‹ă!Pù ”+V¬Ûo=«»&ư}GÈ̉®tAädNœàqút]·ŒœU}”»|åC×Ê‹‹ÿÉ“‰VVơdr·Lơ' /‹üư÷¸áĂttºÀËa³)ëׄ/G»w¶Îh­Aæ«W¯ î×%=Ÿ·n’KJ«¡́Aåƒ@ FANs₫Ÿ>ËxÿÁp¬ĂW§SQøàÁ›‹}{Àæ9skÙ¬ØƠ«==åû}å2Ü(*´#¡|‚Íа°9=“Ơ˜¸†…E>yz-3óâùÊÎÏ¢é´cyK#F˜Â •|%vøÂ₫ươđ₫¿¦öÓÉâ’| HưƒËƠ0™ó=\­Gè¹$Œ¹;lÖ§ø¸ ĂGHƠ ư+.–ÓEªÁ¿å‚çΡEEï¼~₫yÙR¨y¨|HW0qœ%öa³ÙGÓÿÊϽ§e`¤Öc¾›i ZÔ¸jWEyá»w¥,V IJR^QQKCSXCL™úƯå¶ùÈi؇«ĐuueeE>TÔÖ±E„ÅädÈÈö3‰Å¥•éA$(dƯAê}Ëfy ́Óç²TT„}`©ƒ@åƒ@ *@ ̣Á,€@ T>@ ̣A ₫(-gÜ₫÷₫ëÏ?T¾cƠ0Q„EÄ¥¤û+«1Đ4P廳­{úô¯'O J_U1*Ùl*(„HHơS$kh 4 M‚k:C ̣Aº€Ơ«W×××Ût:û+&&¶d |[J_…Å®=tôäëźĂ-êĐ̉F`ŸÖѪ8wûq^ö?ˆ«‹‹¤¥m..:ưçÑÛ"–£Åi ̉@¤U¬ºº½W®TeeU¯mf_ß ÊùZú÷ïÿ́Ù3b›ÍfĂ é»<)yưÇ₫½£&ÏbiËÏëéTƠ°¶‘Çø|eïVó‘£Fơ°Í§Nm¨¯¯ûé'©  ~FDF–À>|¼sgăƠk̀E B…Hđ̉C ̣A:ÇܹsW®\Ù4ÄÆÆfKßâƯGæ-›læ,p˜ø»“„EÆÍ˜‡mlIÜmme¥«©̃6gß$Lª4é+ßU;lû¼|‘ṕø{??øsT>Hg@f‹-iii1fKbÇ̃-C{Ï€oOjôO³?²jbbׄ‡vă;oY5/wíóóSüö¤Tûù)œ;»NEƠX_<, ¨|~QSSăuxĂ é+Ô¡hĺ{ÿ.L“$,j7wñ¶]{]œ§ÉIKu¹Í7®'™]"{½$k>åoÛ~cÑÂpX* Pù |Ñ´Ăvuö>~ú¼oR×Ê‘“f^ιG£*i©«ua²₫¹Î̃N\TŒÜå‹ ,Z(»24¾î•¼OØƠÙWøÄªƯ±c‡M½¶MÔơ†<{Ö=ÓÖ́ñ;p væL)î³94´?±–T>HÇ 8đùóç°«³OP‡¢‰;wv«́ôWôđÑ=99)9iéoLểÅÍÓ¦v¯́DD(­]÷¿àe¿ÂrÊé•+W®Î>All¬½G@Ï óü₫H;¼đgoIä}åu ¼C²gl^Öïø±Ç)>°¨@ ̣AÚA‰»:¿’Rơ˜́˜;¸¬]ö ³=Oœ<ëæ&ד6›˜Ö¾}÷\Nv ,0¨|öˆˆˆ€™đĂb×JÊöëùăZÍö~ô¤HO‹úûîÛăá!×Ă+)‘ââ’e•é۬߰Ánîâ?.‰$̣÷_¿BùjYoÇ T¼tñà˜±p‘3T>¤ÏRư‰efïÜ[GÇŸs¸qÇÂtX§öÚº}[@@¿̃²¹¤ô%,6¨|Hf[Âv›™̃½h@öí›S>´vÂD©^4xöl©œœÓFFv°đ@ ̣Aø¢´¸XY]½ư8ÅÅÅêêê­c!̣̀RYYó²k êö®£~óîưY)I>ăŸJßf¬̃:E3âäê–’¬w£çæQ(b-‹Ê[ÿ“ F¯zó²§æ"6Ü̃;à1n3àä§đQË+'/ȘD é4¦>íR EI­Î×J–ÿUT₫̀Đ6Ϙ¹¹©4ƒïâưéW®ÜƒÊéËÊWóûÓÔA Ü2Ûñ«BÎUÄZË%ÅÅ"RÉù)ñ~­— ̃Cdç3é[&æ½1Øz,„ưT†¢˜ 37l°µ[¼onË)éw÷ R+.Ư=r9j$0‹+È |Í ×ß™qÛ°˜ w_JWù¶̀èchö)PwÏMÊ¢[X`F.Đ{c¼pW4'ưjÅBt"qÉ×Ư—«§Ÿºnï` À~̀ÚrÎxÏÀt) ;ĐÆj ;ĂúƠOáæ¢ !sFÛ±DˆsübæÔáî×¥Ô$’KËÉÊ öÀ3èD:&*Úm™DdÂƠç‚«VdüÖvuÆ‘I9°u"ơóưö¾eä?ùêô„PÂæVÀSÀy^>«”ú·<_HǾ ͸Óû Ơ¥¥µÊJR¥/)hÖ¡M„”¿x¦0 skrJ÷SÎ/(Öæă~Ù9…4™ï!뤤E`ùôeåc}á nx£$”Ôr§ª‚„Dy¹c*#ç¤)p₫Ïr±…mơñqÿß¾p \¿† ÜW}ªç•ó”ĂÂ@‡æoIPƒ?ô‹å̃8¤¾ñŸ§Öø“MÂ&™57Å/-¬†7|Ăy @ÄH±ˆæg4ix»#‚ĂÜŒ¹kO{­»¸tïTÚ4IKb=„sDIS~®_É£ ¦ÿ…Ç4ÍƯÖç iỴ̈w§ó0Rj̉Ôÿ9çüæÖ{}̀Ù́`÷wÎëĂ&z9¯˜M±’™`¢·»€iÜÉÎæñ£|Ï} =廼âWË•e 4Aºá«GÍÜ‚ØA]{4=)X„ }Yù$ñ 4æú‡p3î́2gK¸‹·aµ@›‚Jó”jX́6+ºhºMC^¿à8s ¨è©Pµ¶î¤™÷ĂÀ4†è<æ3dê•6¢o§gäw"{ódĐđ’„ª*?¶ˆv¨uédÿV̉óø˜( ƒW-Eù5Iô‹ ~$r®î /¤Œ ¤I€ùó«[¾_ ; *uh›ç i‡Ç…Ū-ù®¾bq;£₫ G­™ª'ö‰ÉăXW³I ð«Ï—Đ8[ó6¿¤¼VS+¢7 *Hdî uÍëge•,M]-â'ö§̣̉W•jZịüÅ—|=$§ªÚ§%,"‹(d;.$¾ªAî!”2X€FẵLf™T“›ÿ^›¦̀k+?)­dVÇåêê‚°Aú²̣aîƯÖYÆæRg\C#g™y;LÅ\6Ô{¨G©¹µÉ´¬́àR|ÁåoÄ6º,ÙƯ`₫A×½O7,æĐÍÑçÖƒH̀ Á=ËK7nܘ±öw©±I¹Ă ,fe³Qê_dFŸAÑÛ_N¿Ûwe>¤>Û;5ñ>Z«®„"ÈÙ²¾x©¶×Ư;Åï6¯‰0´Ëp}pÈ×€ˆs Æ̀L1(*É=́~ Ù£²ÓêïÂuc[$›Ÿ2KÇíPv^ëåU™ªÂ"¯J°|Z{&‰‚ËKbnØo15n£ï ˆ””•y)`b7#öüoæT» À|u‹Èœ³øérPÑ•Ø)íçëó…´ÏÛ·ª-k‰(>¬¬@c¤¦2áÛ¥̀P¨ }1Gt§%ÇçăÊg’ˬГsüư¾eb¢)¿ă1ó¡§Ô¦k`€éTpăè °ˆ˜În³S“NH³öPå;~l–•íø¶_•±4*êru”EăPñ@#À‡Ÿđ ³,qXá ³Sôw²¬KË*g¡ $P A–#t_ÜÊ(ÂZu íE^¡!HßV>£EPϵ¡aÛ÷¤øîÏrÇŸÔ±ºzƯhç²… É*3Qw·Đéºé·¹j̃b¥(­ávz­²p®=1#܃3́—{rá¨Js²¬}·Q̀³\áåºg×iÓQ(ă±ó́ L9ƠoØ4!ÀÖq ¯Ç;9Ç.Ư¬¬ˆoPT­×ÔG_µ2#ÿÜüuñ:V˜\…+¤ÓéÄqñ½úi¸ü†¾ôqŒ\u¾­¾˜¸săF«ø¨’lư5û’–œF“û!²â€v-Ïdÿ’eaª*Z,́ñÎÈ6l³R‹Hi»̀–µ]±Œ,&÷ø>%³ôâÏ¡» Ní˜d˜îvùçŒ [+vDÏÀ™ Ü͉BSđ¡èwçE‘ñ }³ó_¬Ñ@¤CØF–Î>&°qSŒéÔ}I†ƒ¥°ßfê é¢ôÍCxijRyhp‹ó…´ÏçÏ5­-;1•ØÉ-ÂL½R3̣ ç†Ïđẵáj6Asñ®?¼÷ĂpjjÆT^dưI©G&q¡œ¿Q‰ éKë¤f¤ób’äÍĂƒđQC#G?#"DÉ<ˆ;E†±ßCË:5Á‹ĂÓl0†·WTBZC£×;Î0ïưOÅ8²ˆQ͸´ £qrB{üÜôñs[Ÿ‘‘ ³²¬Ư¬f!Q¤́ç¦Ú7îBR“”D °}Ñ$,VRZ`3ËËË›e(J"˜”Ú$T‘÷5ÜKÿˉÓh›ẳ$GbÓ°IæË‡û kzm/¤½^ ¤ áövà¯D6»*ç’oû‰`₫œª ÖøĂÚvƒ[üdlDkÓP P ©Ï`qkkø2åïÜÔMÔö †§¯ÏÀ¿U>€;Z<ÖĂlzË%o?Æà‹À•"9@„Pó«ÚW¾/e ̉§”ï›øgy‘‡₫•$à4̃®’±øª0â/|„4{FXi|x¬‡̃×Pœ±12-¯iHE•rÆŸ«¿ŸóưÁmë‘G^̃óts«#X»‚÷Ó»ĐöŒY6¿Ñễ3 …‚Ú¼6n!Q¾œ§êêz>Ï.®8!ñÙ3T¨aqLq¹½©y€¡:|j_EO\Co^A"Ïôk>‘DÅDa)‚üÈÊG₫̣óp½‰…Ụ̂;nËùœÖ…GWw\̃à«}§çûƒÓ_±©¸©û°¶ÏëÂû{wîÑ ̀øƒ3`Ïñ[†‚ï}|Đ–ófĂ­A¨©¡ÁÍô`“Ö‚Yj‚Œi©SœÇnư«¤Œ,?6¿etbt­èØê”K–‘€LÀŸVL1^ú/ưú|ζˆv¿BM—½ ÓbÖÓ?»^8¾ó¡<•çO7ÀÑ?$›‘̀dE₫¼wmxØư÷W÷ẫáÑT)@^°AQóˆ*MÄt=ʤÜ”~äTΫJ#¥–3Æđ'#o^³Ú a;ÆítCÛköºœü|$EăC}yeVgæÇYi‰€̣!ô-Üɨ[èÓ4)(̉AÑÎs̉ÎÉÉ<(ÛÖaoya1 **¤m:4sæL˜ß!b¢¢¥…w•5tx!‹ÛxKŸŒƯDîềœµ L==‰ÈÁD ëÊƯ\) ÆCfpÂe&.ĐmLI±!¯`qơùѽ̃C0jq£¡|ÍÈƠÑ‘h?‚‚±ñü&_—„OlØMđhO-¼¡×—Gºjº/Ÿ¹÷đa…¥%,D¨|¶¨¨¨€™đƯRøàNSåëV\Ï1Ù‘?Ïw™"&g“óªÙ3̣•%†ĂøR¾ẰÈư²$C ̣A¾HMM ̀„ï–:6«'ç¹r·g[á÷®eåOùÔ5F=|t[_¯÷Ÿ%;Ö–T>HÛ|₫üfÂwˤI“¾‡eo¤deù|êÔû^W¾»wÅ a_'*äK^E]̀„ïMµû₫8jhiÛ›%„Y9gºÿñGk6];­WÈÈ(44„Å•̣DDà’öß5¬êª̃5à́IĂÂBù?zôœKYÆXöÚ"=uµ¢sƯ§Á’ÊÊ×Wñöt;‘us öà^9:‚ÖMŸ5«³{½|Ñ›óK¶n{áïïK**_æYîỮR¾ÓIÛÂBC:»×œ9K/_̃`aÑ n_]­˜ưxXf Pù í!* Wxú̃Y¼Đ{ï¡4£±ö=|ÜÚ .úº}?×ÈÀîù¼Z»®(,̀ –T>T¾>®ëó'a‘3yăᅥ{Ïÿº}­m<×®[¼¬OüÏUÑeKĂ`i@åƒ@åû/0ÂpHÜæ­c§Ïë±#₫•´-4dé·¤q)kSMuù\#!!¡ D†¥••ï?Bàb_úêƠö=p¬Ûg̉–- üÆD…„iØ<{vQM­Æ’IG¼qu›Ë *¤cà —>DDXXtt´£OH·åß‹éîs\¿=)ƠÁ÷î•’„Ÿ(+u«+&ư|Ű„@ ̣A Ï÷«ß»Ơó»~ÈĂm0‰ÔU :1?OâIơm­AƯR̉êëÈû“̃@Ùƒ@åƒt111˜ }Îó‹Û´eÔ”9$á®Ô€ô}ñXâ]n°¶ÎÈ·o•RR₫pu•éÚ”óËV¾̣ôt…¥•}¾ÿ8₫~7sîƯ{R8´‹6«|‘_œÿ¨;d@NêêºnƯÿ.”§P»"Iøø7^óuteay€@åƒ@Ÿï‡ÀÄh(öÙ´-aĐáʃô¿:ºjÆ_G’‚—.;bhwÛ¼lÙ¯¯_çíߟ¶`¬€€ÀW§“bå6 `9,¨|èóưpø/̣Á₫îØ½WRVAßܪSû–?½矋₫₫‹‡…ơÜ3pưûë,Zñüù½C‡Ïu—ïׯ5›-úûïåjjJ³á¥‡@åƒ@Ÿï‡fÁÏøkơ?->qJLBRkđ09U6cÖ¼{ưôAγ§-ÆÛØŒ6Á>½bđÀCC‚qó́_û²s›˜Ê3’jĂ ¬«¾ÿ@àÚơWR’¢?9yxÈÁË ÊùVàS ÿt©ëúûÛ>~|ü´°¬¬¢Y…Ö£"b¢̣2rƒ4Ô•ô©fúÔïÇæ =&Län—–ä¾xùäƯ;«–M”””́ßU}˜¡! ¾r•̉eÔƠƠÁ̃Îÿ$’&FCû–ÍÊ*4́¯*¤{©©©¡P(0 *ß§OŸ ̣A T¾Kù`&ü÷xư¶̣νû¥/^|¨|ËúĬGQ’°ˆ¸”teƠ!úƒª|w£hQÑ_yùOKJ?¾¯¬e±êq ¡~d 4};’0œ‡Êù6öíÛ÷́Ù3AH$’ˆˆÈÂ… »d©FH¯P[‡:v²¤0_w„…îưáØ§u´*2ï<~|çs\\¤%Å{ÑæçÏÎ₫yôÆÀ"–ª‰ª! @ë©›uuIW®TeeU§mnפ†@åƒ|S§N‹‹«¯¯œI.Ø_%%%({}”ÂWå÷î2w˜a0Êût_^Em´¶ñô=ûJ̉¶a#L-L‡ơ°Í§OÇƠ|fM"دĂȘÿ7z´öàcvvÜ•ª-o#‚@åƒt))©!•••0[ú¶ÄÇO˜ăă0ïk̃($D"uÆܶkï¸1–zZ=`ó¥‹ÛêĐOvv˜Œ‘¿bwcc2ö)-MLM}ïï×p@åƒtÂç#„ĐÍÍ æIßbWÊ!5Ư!]đ̉†‘“fV±?Ǭ  í>ƒÙŸ_oÛ¾3ẉ$¾1)eea…óÖ+È2d, ¨|¾°µµÍÈÈ ¶ÅÅÅ%$$`ôêP466¶k_TD"‰Øyøoß“<í§IưäeºÜǽ;»Qđ!€¾M₫±/ñùsá–­t?ßX* Pù 3bẠ̈ÉËËĂ é+0k؉»wuÓûù̀íoäæj)Ëéiuå:/§Nm7N¬;Ÿđó•] Ë*„_ÔƠƠ§L™ó¡OPĂ®MØ™8nú¼î;Ä@ÚË—ÏĐ'ú]4́÷çŸë&O– ‘î³94´LLtx8|9-*¤#´µµóóó_¿~ ³¢O€¢èÖí;¬füÜƯRPU+|’+'ó¶Ÿü·.}íꉶ”n•=‚đp¥5kW†CÏ•̉.3gÎ\¹råøñăaVô VÇ®±óđï™c©jÑN¤ÿé5wη$R]•«ĐE!÷а!ÁưSS·:;û¢Êù"‚ˆ‰‰1fÅ÷ÏÁc=&{#&NûÆÙ‡ÿ8>o^!ÊË 5a@åƒ|¹™3áû§E…ÅzayƠ ®‹î=|>áÁvBˆñ.L ­Gí»”3Ÿ›g̀”…u+ä¿¢|oÓ0ÙÛ§ÜƯo~º#Aˆ ±4ÿƒĐh4®»Ăd“#·¨œÂÎÍÍצÑđ*—Íd“ÈƠ¥E%Ç‡à„¸{1Édr´»‡ă•êÊœ[—Y†%B¥ÑZè+377[›fŒí›ŸŸ+£ª­ÀMäçæV£#"}6›DÂøM3ĐæycEe¯U´¥d `|צ*à–s̉Á£0˜MϨº¬(ê(´#ơlfn~EZåK^‹\âåB3PoË0¶{ÄJ§đ_È  {ZºÓ$r^Fª¬ˆÍÍX” ˆSäfcÓÜœ@–i¸4xEx&S›æ<‰L&ư0·Ç• ™Ö3½zƯ d'ú &ÙKñ³ê} Z4¡E¡ Ü ÷₫̀>̃̃,µÚ`Ü%4Û‘9Ó)ÙĂPQú矴Q£œ` éóÊ8ÜXï&d# E“¸D€a> ñ g2ËĐaÅÿ“1‰Ô1E— 9œÆPÓ.acE‰¸ 4,í ³287ºÑRù[E´¥æXP(²Ơ¹{‹Àí™Îw¦V,!û¡ñ±ñ®û&ÏƠă¹ XL^²Ø†·›SbrÚơjÔ”\ˆ ÆvîàtR6'ư+aüˆÎàrj!'$Äoo×ÄÄ”ÈKø¡$ 7{Ă䌻ŒÁü3Îiøhagô€ªäpÎúµ÷áf’m{Ă'ü¨[Ư¼½“₫j4·åcX-rÉJb©y'«  Ăư‰?Å<ƯÁêHz¥¹=´V­ơi2ïm¢8y¤%ư :×”ÈØ'Ócú£¥1¹Û¦øg¡( °) ¾A~XÖQß$¥e7fƯè;â(9Ûfûü¡œ?²ÄwÑM­=|Ÿ1ŸäŸĐ̉éD̉ê¦j{ĂÓ×gpZ6/ß6¸}\ "ÜE®£Ô|¢Ÿăeh‚?†+¹Pù ÿå{R "÷;·rOr4́6öw‚èë±±Œ}x0Zx«3D–¨(±Z¾|1 ZtÁ¥H^HËFßĂxH·’Èinoj\„"¥Ÿ<·Y…Ë©²ñD¾D§¨€·ÉHÆí·¦#D̉O]·w0`?öS9qD›ígÆ`ßæ&eÑ-,°dè½1^¸+:7( ¯ÜQ¬†³qà À‡sœ3zÊiö4°ˆgl„N·“9Âó²­µĐKJđFá„¶ŸKèy-^ˆ»“O.³¥ahî÷x$==«µ=èµ–Ë%·>M;ĂúƠOáæ¢ !Ë –₫ö†Œ- ôWÅ´2Ä÷¸ư0p0¯n–Àï8d„Ya—æNviök"Ȭ̉œ‹…>ÀBØfå½µ˜́±~°>Oª¾a§÷AªKKk••¤J_.Ÿs•ïYBT§Ü> ¬^!ÿå«Âª¿ &v6 ¬,Äư$b{¬§ˆÇ\e^Hk,¦Xñ¶Kj¿ "OïäA¾¸̃ ¯Ăm¬ ₫w”ÀuTø£Ă$³q,L7ƯñĐ/–k²¾è[qN  {[g\È,)lpѸ ǹßj猸™SpÀ̉qư—~mKLF£3‘”†÷5…¶4¬¡ƒ± {ÚÊØæ§ù€ˆ‘bͳZ˜hÅ€µ 0§›•¼F8úẬœÿ0/UßbÊ"²³:X¹ÿ̉†æKÆ9Äâ— ¤é̃øøé³U«iˆ‘R“ÎnưŸsÎonc¯œÍvç¼>́`¢—óÙD+‰ &z» ˜Æ!ôè?Ê÷ôi5R=Ó¢cc¨S.YF’æ\&9„ƯÚ¹@Y…º̉~Ëô9XÁ{xăz‘©Yç^¡¯' «WÈAù"C ¬”ây­₫;ˆØđê‡;8Ơ,Ñ…€¾9V£¶§5yÛœƒ¿*d¼·“Ù<¢x‡nVk6Ó3̣;‘½yrs©h S"Ùc>C¦^iöÛË—x·IH“:ÂÇâêÖ­ÿuxhÇơ„÷ ^@”Z.·(,®Ø"—JÈåô󃌿dXk{øäP ê¢ÜFø;°jÛV̀û%éÍmâHKƠË̀đ̣Ơ+"Ầ¹Ÿ;ü̉l/Ö“7ÂH¿Œ¨½ÊroäæˆökYƯ_}Åă8vFư>Z3UÓ“)Æ%́j6‰"avơùRªy»Ô¼Í/)¯ƠÔăúy7 *Hdî0jÍëge•,M]®¾²?•—¾ªTÓĐjL³W/_̣cs¿~Â|†í·wÜæ—ºắ t9ùRœ›.!Đ=1:̣aRf´›U,d…·ù½;«|êê¬^!ÿå³Z}Äb‚‚́<”ñùÑŸ~Ñ»,~»@ÖÀïơg¢&K§_K ¾DrÖÛ]ö*yuÈÛV@^́ô´˜é¤Båy–1«RD¸Zâê5£¤,.̀V%9{:₫:“Z}yäEBälY_¼TÛ/{q§ø}«(øÈ®̀‡Ôg{§&̃ÇZ̉l€¿± ÏÖ5ö=yf$-<íƒSvùªPÛmº{ Ñĺ¿m͆Ø=úóúéá²WÉf7ư‰¬çÓ"—Hx‹x3ưHÀ |K—_hu+Ă8îàåî-íÉX<´Ă‹u Æ̀L1(*É=́~³™—±̃ñ{…µ=]÷>ø¹ßÉÆ*)æïÙí%5!Ă·Xîe æ₫n)¹·¥“­Xr:HEùqÆù̃¾}§̉Jù¸ư(̃•§¬@c¤¦2áÛ¥̀P¨ }1Gt§%Çç#">Nr™zrߢ߷l#BL4åwô”Út 0 n}Ư¯˜DLg·Ù©É'¤Y“ñC%?6ËÊ ̣yv ÆÆMg­, ŸØØÿ™äƯ4fT‚ÇWä¬\=ZW‡ ÂJ̉·•pÂ.̃d7YV5ÁÖ–âV‡úøx-y—ù¸̉JGTØÓ7!ü6:}Wèt¢×ßnƯ•SB *ú•q*P·$´@Ö{ÙâÈ4º÷·,$³ôâÏ¡» *.¡hrL@Ø/¡ÔÙ‡Ñ;øøû:]“B$Kçº/t:ÑÄîµhJY¤¢/}œ"#W¯F«/&îܸqî̉ÍÊ:Dwg/2#ÿÜüuñ:Vع„+ú„O´‰ =vW€ơ0^X?›8Í@w§è_Ïî?—ën­*j›œư 9óÎÙ)à·mÊØ¾»bB6î¸<Åw3UK‡2P€Ø·e.qBƯ|âï EƠø(ckĂ²’~Ư™²ÇÙ´¥=­Ụ̂4iص<“ưK–…©ªhƒs¼ŒU×̣ o`̀ơÀŸYÎܹ₫^=g(K̉¦ºèÚ‚eKßbYÄơl’&÷¬•m×Z¯²ơèCß©ú?½QSSÓ:Đ²±ĂÓÖT¾ăF@HèÉÅ'_Ï.¹̀ßÑH{bC3°]-ăOöH¥Qå¦1C|ÍM̀·H§¾®›E„¾Ÿ d~ª¤ˆËÁJ̉ç•ĂÂÅ û4#Ç&$7~“î7Œ¸ÁĂĂ—4´(Ă¹MWhkQÆ%ÑÑx’̉˜¤$î˜[x|Óåÿ|¹‰`Ɇ7nKÚ§iÜØö̃qöø£†Ư‰½¤µ¬S¬‰Ø¸8¢_ÔbỴ™]¬‘ïé†foÚÎO¤¼¼¼e ZA!5˜ë 懯áüÏ9´|¸_[¹Ä ‰Kn im ®´p­íi}t#G¿§‰¡=~núø¹N[“Œ _½.VóƒxCydu³¤ÔÔ¶̉l̀p—  ç̃h«ĂœÛÛ €¿Ùh́ªœK¬ç‰ùsª*RX;Hnñ“±­ELC-¼IDRŸ ÀâÖN¾Ú¦ßS"́đ„üW”ï[P¢6Pü{Ë̀÷rv°µ³ˆ´ZơGb„mÇ;Ô=^¸”NnÖ¶­H=’ÑCæöîÑ$È”6f¡đfe­9O7·:‚µ¾x?½+m²á]ßBéx î=R(¨ÍkăFæk¯ºº₫Û}ƯẩzuåÆs/.®PWïôkêëÈø<;*æ %Ư›ÿ=f95=«ÑuS“’zÍØ̃=úD…6z3S÷%Px]xïÎ=º€³Ñă· ÿ̃ûø -g¿†[ƒPSCƒ›éÁ&,}¹Ô ÓR/¦8mcƠ)i¾º ß½căYW̃8G5+DQ̃“3ƠTêr”÷¨;ßT”‹*öƒ…•éSĐ´¨÷ÊjçhøGÄ’X,²ƒƯ¯P“ÇeïÂÅ´˜ơôÆ®ï|(D¥ÇùÓ 0EôÀŸ›‘̀dE₫¼wmxØư÷W÷âØáÑT)@^°AQ3ŒJ1]2©7¥9•óª̉H©å<.åªüØü₫}³á@&ó3™̀y°]Ëd#d²`“ÀÚœ́2™̉êœu‰Ø̀Ï$²HNv)µåî”êêMD l’PuiE £FăjZyiƒ%¢­.ÁdÖ‰ó(,dCåƒ@僴A\\\`` ̀‡ïỗ*ỵx NăhœçâÅ­£ÉèØ­I´#¶9K­˜zz‘¹+ܺ®ÜMl ÆCfpÂe&.ĐmLI±!¯`qơùѽ̃C Os2Ø€›ơôd~]Bñ;¶.ÎQÂYØ7óˆ:»ø …úOY¦¶¢ơ·»äøÓèc0…ûÆyÆơIĆ;â“ LPt&…„ù|1ă}#® Ë ëg gć³øÑÀäŒçD"Mû¨Ầ"T>H-ô÷0¾gÜiª|Ưë9&;̣çù.SÄälr^5{F¾êÍsĂ¡:ü$b2Ü€›¼¯+2¬T^Œsœ̀™ơ À¡_[̉ÙZ¯ÉÜkEN›‚ >ÄDHå“oµĂdOEæ=˜ˆ¯dë^p÷Y„¹ŒœÅđ—Ù¸»§´´„YU Ë*̉÷$ơèăh+w{¶~÷ZÖh₫”OYƠđî¿ ‡pç§(ÛMÏB@­£·Œ¾²¿XÀ+åC6›jâ†SxSA‰%~&5†ÜƯpd–…µ˜+jỉte„Ï qñ#}̣¡…%cÆ ‡å•é{8NTÖ#H/?$'**ÊäÓéïyÊG¬d¶ë·t·$×9Ú̉V1°¯FÄÚIŒ: Å=/•–Ơ@ÿ;Y†2̃|Nlyù²ºEÈÇ”!Cm`ù@åƒ@ú”úŸ=pdØøI½iÄçsfNç?úøñ˜‡×¸àËaWI—è‡y¨œ4Ÿm†NÁ3#©ÖÔ…&eë.ă¹nM•¶˜ºbè‰GÑ/MÇÆ•@Nd)ûƯ ÙâÇ=ƠׇÅ•é› ơ½<^uæđ~Ă`₫ă›ÎÈ̀\om-A|±Ù¯Dÿ1g­kʺËYØ–UtØuăËË"«˜¢è¯_i®̃·IÑĐ£oÁ—º› s!·R”NŸ†}»l¦J?EBóˆ̀#ܸâèñY¦ ¼â€¢B³f9À’ÊôUæ¹Î:z₫ •6¬wt­Ÿ–¡^§}ôu)KŒư—đ’Ú¾ăÍ¢…p•é˼*Êï-å;“²=4xYg÷rq <a½Ơx‰nµ Eă¶ÙY·¦/Hç>£Q_/:fŒ),3¨|HßfÑüy»R ·v́áă¢ƠŒyó¾rƠ#!Á~­̃üƠ刦¦·\ÇuÍâ°0wXf Pù >Ïp£¡Ÿ™L2¹'zù̀qß…_·ï˜1®kÖ® îߓ߾-¾4(–T>ä¿€!MoÓ¶Ëi=çÍœư}GÈ̉%ß’BpĐ̣̀̀8̃T—î†Í¦ Iƒ¥•ùà¿È‡³Ú̃3 •s₫xPÀâoL¤é;<-87HS¤j’””×s`9@åƒ@₫SD„‡EGG;ú„tëQ]=7ÓiPÜ›Jʺ¹¹¯¿È8@¸;MŒ~±bÅ XB Pù ÿ Xữ­ßí¿̉fÏpë̀¢-íC£+( ?z|COW´{L&'&–BÙƒ@åƒ@₫ă_ü–mæ“g ‹tñ˜Öé}›B‚— vñb¡¦ŒwÊûöưîáÑů}úTîơkÔÛ;– T>ä?N€ß¢́sï>|l8Ö¾K¬z]ôønvxXh7,#;ÀĂ#lƯúÿ-đ‘ïeE¶l©˜;wÊ A°<@ ̣A ?ÆChØgËêzFªßđ&#´æĂéƒ{—-[:Ú°ÛWº\¶ô×̣²‚}û-Z$' đơËpŸù  ˆøù…ĂbÊüpø-đÂ₫îÜ›D–’¡´îÔ¾o ̃¼|̃ÏÏ/"<¬Ç VPÔôó[₫âÅưºÏ•Wê߉ ®VôÀ %eÛ‰nđ̉C ̣A ?4^øs~ùÏ̉ÓO‰Kj &§ªÑf̀ÏŒ²§¹ÙEyFo5Ềjdï,6`ÀàĐĐÁØÆ¹sI·o™* †HIµÑ Z_/tÿ¾Đë¥d²¨ă”)nî°o•4 ­©¦íïGlW~¨Ê/(,{SVÅd¢ơu¢b¢r2rƒ4Ô•ơÔLơÔ˜úØlcănÓđ½̉’Ü/Ÿ¼{Ç`±ØBB’’’ưû«RƠ‡*@ ̣A •đ(¯üp3çßW/¿¯|ÇúÄDëë…„EÅ¥¤ú+«¡éRđƯYŒ¢ÅÅgóóŸ¼,ưøQËb¡B@\\¨Ÿ"™J`@³‡ëPC ̣A¾•˜˜E‰m:ư¥P(0gú.u(zøXúó'tGX¨ë Uц}ZG« óÑắZ?Ûe†¬”d/Ú\Zr!ơÏ«*Ê$‹ÑâêT’:U¹V±̃Ö×ïÿçŸO—.~3vШQ³áµ†@åƒ| ’’’Ä6›ÍÆ₫2™L˜-}”çõ&ïI4µ¦on…}:Œ/¯2p´Ê@l£đ;9%a¨‘ÑØ‘&=ló¹³›ß`:;Ëø/îø)Q£(Øî»wă.^¬̣ó " ĂKÊé^^^˜Û×4dÊ”)0[ú?}̃·Ñf¦—ƒgà×Ü{$̉'üAÀí{’,Fèjơ€ÍW®lÿTĂ´™ À×¼ºÈĐŒ}^½̃yø#0đX Pù ü",ܬ½¬­­­§§³¥o±÷PUÛ¡+^Ú`n?½†Í¦¯^Ö‹¹Ô²Ê7oƯ±dI?¾ơ]µJưI/n’̉52²‡…•Ậ̣̣¼Ïââb˜!}EcVÇví‹0ÿÏ̃# qÿï“m'(ơSèr›ïÿ›TŬàÈ^—1v¬8‹ơ|ó¦U‹ư—ĂRÊéooobn †££#̀¾B »vëöƯô~>“‰Ó²Ÿ>À` ÑƠîÂdÏ35‘’ïrƒ……û+ÄÆ® „e•̉$‰ØĐÖÖÖ×ׇ̉'¨­C·nÛnå2¿û¡¢©W₫úއ‡êëvI‚éé¬mÈ"ÂƯgshh:=:"¾œ•̉D‡'́ế+ (ºqÓ&›ỸƯ} ¹₫J óÊÊ”¿uyè;·wYĂdY\pî^¨7TC[ê‹1ôIu ¿­̃~"•7₫”1{‚¢í½;0"B z~¨|!:Ôṭ̉¢;›=k Ê €̣Đ´Ù´Ùwđϳ₫¼"ÍDbï|̣Q%\]Ư*s¬¤\\ü+3&‰₫wà ê!0øVœ5óæ#”\̃ù_fÀm•gEG33hẰ ’wí4!÷X¬w·[©~¨ưÔ³g)†…ưae5Å@ùhª”¼§ºöµh¬³ZŒ<{1jè@³ µ{Ÿ¯ưLÅÊ®ƯƆ† .„År¼đU5 lsrăIéÙưa{˲γæ¡Ø(M˜ßv›Üˆ HI¡´Q>2Đ¯ni…æb¥[ô?éR›đ§)]–Ø!Lƒâü²ưwU…_ˆ›÷ưX´“{ƠF¥ä^¥­Ăî5›ÖK÷đ¾>–uL3j´ô?ÿ÷écƒÂ |àăàf¦±Uå8å.i))ªêêơ ’Z¤®&WŸ³|8¿3TÔ7Æ–cŸ¥¥·UU©§ÿ‹—vÀ©b‡å˜ƒ,ÖA₫®•ûLc)*ü yQđ^o¦3±w¤U9 ̃×IOÔ‰ZÅbưÊZÏ8„¦í$OṆ‘ÔÔ9,µ…3ưµëzmÄÆ>́Ó1ø^”/åâF óEe»ùÅ₫̉ J‹Ù_dgùq~OÄ?H̉3иi`±9|t¡›K=ưÇÅe Đª’£©×*Ê«²Ï·üW¬DÿG”+¸¨Œ¬©¥Ú­Ïê™0Qzÿ%"‚7,húÊ—BË̃₫ØL;¦ ÁÅâ°Xüuæ̉ƯÍ-fééé n1›ä&$g̣\iëé1ZV̀-cç§%§¾aéuä™<1A(.›Íö²›:2fœº*¯º†›AG¢¡§WI_ù>â´ơ è°%È·ÖVDC%$äSưÎüø‹‹ÅĘ3æëuÖ.3§’3^ªiÈ•ê+í[(­­¡Ä¤œă%—+|EùID¹£RMR_Í¥1§Næ%²ÚÙämBrZ™K5Hg¦<|‘S¢oPÉOq|Ü#ù6jêJe’Åd²¶œX5U­ —ܱB´L ̣JªẾJém¹¿æy”åUFK¯s©¥XĂ=ú>ˆŒ8ÛßfZăÛ-UêïyØ0Ù¯¬Ä•\"̣̀e+Œ TV‹¼t¤_ÿ‰xĂ‚&¯|n=lˆÅ¾́ÑRT àI`bèê¨äç6"ƒ2LY%o´ŒhôÓLLây°î§™̀̀ókÎYM4ͬ’¢ÂR sÑê,/3Br9œù {’ÉÍ 6ovgÍc;‡WwW?¿ÉûîM)[Í€ñY-½á`kr5Ÿ2f'±XZ–v$<0?³°¹8sFSœÄsqÓ`ù¥‡É–E2§¶a±B±µêv‹~´eĂ»"-WÇôƯ-¦ÔâyWDˆ÷•W&Ơ/%Zởø§f’KQ̣ƠG¨ee˜[£éư«‘ɹ̣” „çï¥Êרº.̣[ÏOm̃ &6[‡ÉAÆl½µÇDœ₫4 "c)êHåx bYR=¬\ø ÄëöVNwWkׯeEmâp8t²å˜C8Ưç^_)ϳùø÷ÚL+6*‘Ỉ+V ÷è;ADô›X…N»G}«Ÿ>=§«óu×O¯Î́«f8ü?ÿ<î×/XĐô•ïq Y¶¿J«uöĩĂp“₫;X²«EŸÜ}¼G!éưÎg±Zđ_Ùô3?„Wbä²2—J°;Mµ"ÓæŸ 5—#¬p$ø.Æ’í4¥ÂÓUDQb¼H¿ F©‘́ VØÍlă¡g®Z 3&d?}(“ÆA;ÏÍâ'†̃›åmjJG;K÷?ƒÙ»½æ‡đĉ~˲kcDÈëó¼+zBÿ!Û»³©_îV₫_ÛlU/ïBƯ]Vs„Œ‹!‹åơÚˬ:Aí´.1ʽR^ ¸fñù, …@_¾»¹Ñ²e‘¯è~wµZ²ï"a”OÖ¤ bX́rÄu$éµ.Ôßøụ̂”ŒXvwơ¾üγ—$ß%́´"dî¾'ASÛÏê¾Ør+ưAp ụ̀XÙ½¶³vLàçZïÑw€†^÷·‰̣Ó̉JTUdÓ?UmÓNøß%óùS¥îuÂi.÷o‚AW½:}Æ̃¼Ó®Ưç.BÄÍ̀-âÈË}¯Ơ¾9^¯à{P¾·„äeq ©đÎKb́$₫vÿi¶Ä¶OTË\ªb:ª|ÑêÔ’êưđ>³s™Ū)²Z½₫¼₫}L £ âo† 7©äÇÔ¨‹pÀCKÍÖG•I‹9ﲿ̉p¨Í ”ÄMM*5dÜôS\ËƠri|—Ú#´P'Aû®x™ ©&ÂÑ}«æmËúöPv§/¼S{̃wĂDßơ„6 ƯN"2nV›ÎÔû©¤]…‰c^²¤·Ô¡8ÿdŒ¼ ASỏ_ùs»Ư`”››Y$0Ä¿Î{ÔÔ).)QѪ0‰¾ta[ƠPoâ· ³ü;₫åáaFºñéB#Xy|—ÁFº{¹©+÷<¨̣=|ôVxù=áIËÁ±aÖơ9—ÿVK#=Û|NîééAùÀw¡|ËÜ;[X«ø•™>¼J³ü{¿ó̃œ¼§îâ?¤S/Ú«M> ̃”m+óN”K˜ÚÎJ£ˆ¤ë4³ª²e€®¾ó©¸m#**0¹´́ñ£=áØutL…c/^ä0z)*A+ß ¨;£%ơø2¨ri®>BÁôÁé)Ävb0-·„È öƠD™ÉY9DU’”¤Fß̀ëÂô*Đ™ ¯̀ª6 hS¦Êk÷P*5^xNª¿̉7<áŸƠ„Œe—̃Qá6ÄèĐ ]†™}Â=jB$£ø.ט¨±:'§&Z4̃ó ÿ—w'û₫º)ö]ù…è̉Ä,í™_KQUïÑ÷ôldfe+UQ>íM1ĂT•Ø„•Û[K•oÛ§ôÖưùÏ’»̀x6ßăƒÀñƯOÿ́<çÏí¿ñ]Œ´À½7Mvë̉Æx4¹vü9}¯Ó¹|Ÿ6¶“‚ƒ˜±́EFq^Ơ'Í-ZT~¢é¯JIÆR₫´ –Åêÿ<‚cpÄÚqPˆÿyBæßUàt>ÊWÄ–NÎÄnóÛÀ="½4x&£¦™fRTÓ¼·ẲÑù,qu·đó‰° \h[Û:·̉ÍIÁ»×’R2xÉ‚¦­|üüèĂ»üîa·hư0·X›gyPT¾»££ư¼œˆyæeH–•÷¶®üÂïí½™p³·7„‘åÆ˜3›Ư³Zfđ^¯¶Tb ‡…s—…Q{W¯ẽ́i—f¸ï̳¤¨ µ®KƯ5&¦b™Ië·{{kqøÑ Öt¥]ø=zØo$Z²¦ÁÔ GëeËÖ\ạ̇/́Ú²eÊ‚mªÊy^äy¡Ø¹ÎÏÜè§ƠÑœ¾w7·óÉï˜6+ÜOÜjVtÏO¼Sÿ2Ứ¬½~=·ÿ|‚E'’U"tẼ5eN¥Kë_~êÊæ1•‡c{eŸsZq/ôNfµ‹̉Á£Í8ăåp÷yó\^„ôÅêÈ¥—¯êïZ8{6[mEƯâ‘\íµ}¹Û¼áÛNÄ:,κÂOíxJbí–„\¢'_!fv·Eq'mÙºÖxô¾Àîa]䈜Ǖ‡Fûç-ôh­Ö¡¨T×W\º)ûǹyL{%GĂ‚'}¯ƯlưbYÉùLËhƠ{ô=ñ®  ª£Yy…çPcźíƯÅî§ç~9½‡̀B—‘úÚ‚:mÚz£ƒù:lOXyú­T…}.vêedRyQÑz=ªµM.jM[œ·ó},x_Ưái,J~·¡µ­HÖ¼£ %DO”ĐÂWÜç̉^ßµ´X̃gZíl₫JxÇ¢̣-H_O]–ܲ@Û:F8@ùÀw¡|4¦ăíé_E7¶Pù¢¡§³!ÿ÷ôœÇw›çé)0érIÏôÖ7€¿áåÅøSé(h³ơô³̣é$ˆ„Ö³¢ 1µ] ˆÍ?DàÛÊÁ×ù_¿48?”\‹`ÁN>¾¾üzQÓ…AgÓá´Đw ç̣ ©á˜H233«©œ¬xiú#ơ…Vˆ!cÔü#£æó+¹¸™yù?1Äèà̀u EXv±Æ#íƒGV¸Æ#ƒy₫™$*ọ̈t.»äy™™•+§¤¤?rA `q$AíSBN©àOÖp̃<Ă*q²}ƒ*ܾJ÷è{¢Yuæ‚ÚNB\TØúư×ÄGÖ±€mϵV“ez?Êt©tÈ@_¯’ÏîSŸ@ÈÜ*ơü6­íh2!†â"L³®‰“p³îæ¾ÄnÁƒØyŒY©/JøµÜÜ·eƒ'̣ëç9U†4Ôëûm?œ̣}ÍƠ»¶k+ư­emÇØ jiº̀|Í‘€%Cëđ₫Á́̃ÂíÜwYC?æ̉ÄÅeIẹ̈)a[–…<öơV5́غ/ruS§̀VP¬X÷߃¿ÏÁw_6‡SƠ±¬WÖú ̃½̀̉$e‡rRIơc ‹™UwCƯ+.‹ÈR¤äaƠC̃—ÔËN}÷¾Æci·ă9k*±›Ăi»Æ©”·Ăé?_~óÚ8bµiE™c…fƯ°]¬Ú“ê‡4Ô‡£„R |dfàí™ßä+.84ê#¼‹èVsuơ?_7êyù®úÈ_¿Ụ́´¡aÁ(埆ª²bƠêÎà}₫´¾Lº³w×:na„7ó“7º‹ü½÷9q¤*O>äiAÜ»w¾ºÈȨöÓ-0!ó ô‚/°éß·êQùơIsvveÜù[¤ E₫>r>$*Óz³­Eר›¨Úë%û$ü2~ÉuF̀ä˜jù%1$?º|ȼ˜^?Ú¯ÍÚxW­t³ñ's)^³îÔŒ1C<‚â(jF-)ÉÍ‘’o!R |4%t4ÛƯx–'&.Qæâ²ÄG¬¨¨ˆ]NÜÉjÇ3¦/^ Y»ÉûÁä‹'wƯS$’r\¼;Ó貄™.l\·hÙŒ½<=¼—©]÷\â¥!Kس6++đ)9¾ÏÉǹm =z&>=O_¥r?®Vjmë“æââ Ỡ̃ă% Kè°)Ia¼Äó¡Ñ•y O¶VkU¶đ́ƯăNƯ—à{èímîܪ~ä;Z®¬ƯĂ›jÅxÚ4¾gÁ ·“WîáotYĸŒă¹Ë™¥S-ăr`{Ó]ÓËÏïuè*Ô<- k½ú$XW·‚Úxz¬Ö›¶E¯P‹^Â.z£è ºúăñeS•JúNöfë9¾¬Y73óM¥hå”Ê׃HHÈ60D P>P…W¯^!¾eïÆ +ßWẹynñ²3Ç’RŸ^aŒ<7çe÷NZơ‰Ä¨Ç Ú6k˜OzHAA¸>³ĐƯßQOªt½,.Ê€̣ĐôàH7h§üi+÷T;=ö¿W"{w̉¨O J-;̃¸Ö³'§Rj_Å­¼®Ờ¬;Ê€̣Đô=rÄ‹Â÷"ÍyµúˆùPΟư5”/-%KU]±?ñ£Çp”å éÑRA₫ä₫ƒFCF7bXÅï~?¾₫₫--icë¿/ 5_¢¸¦RơWü¸tô)P>’Ü5ÿGö/^0¯₫₫ơơG†‡o´´”ár Ùl‰„„çÚzm˜e,§É«µTâÏÏY\˜đ(›#/§ÎŸ€³¸°XL"?-+5Ÿ¥×™K6åñ„Óœï§(«-{Å%Åb¢ŒÏÜ÷zz‚ÙË2Ó²r‹$´Ơ›s¹ïyó3%@ùhªØM° >Ù¾»Q£œ½‹X ̣±¡̃½“ $ŸĂa¦²6S ‰bfñq°5 ½Ê hyîOQ‘¶ư‚ü#I·±Ô-‹µ]–Ä-³n‰Q· o¸:‡Ă,oeƯ;,ä2jG…÷ç¸Dä\îDûÔ4ëI¢nđ–ô·a9̣–·löŒNåºgOöŒÓQr”€&LîËç„4̣û+`¡›ëdž3fîÿÎ1 ŒQ₫¼e,O¤î©ú!;È1üæ[­¾QÆv ü½7‹µ– fnÖn£D2c3hÏüÅ —GlYaÎ&¯º³ä~ă×ç¯:9Ô.1œ̃ÈbÑÊZÂ[̃’í7Èv‘ƯZ E :£̀(Mû©“ß{ÀÄ̉ºÏË*|;ỉ¤O +-ƯÍ@ÖO•é#Ó§/yEÈÛÄkf£"*ù7Y¾!1H󦯦¬zeŸFÂËY’̣å-;‘¯×¯áîƒ@ùhú˜ö1yÿFÓ «­^!Í\] ´(ßzÚíẃéóÓ¤;ă…C»¸¹|f$áá¯--«’¸Ùç²îTNGFọ̈J/nư–è™>éö‘̉Å ‡)9¤fl´W^EÈÀÏÀ Ÿ` ;7_ÉÀù!]$¥8(-ÊÀw‚“Ă ïu>VS]à\w£Â]œf^̀Z’= G?|ºƯ{Lé2–c‰–Ô j³Mđêßå(Ê÷Úc¾₫I²„Xmö8³ñDb¶|FéL)+=fRp±¦üfyÈ1:²”ô j-•ùçí=†đ:¹lY~üä¿b;½FÍ^.‹r ||W,ñp÷̣̣鏸«%ñæ¥1#,ÅÄÄ>/ÁZ’Ù9Ư­&°øSQ›ÚñW¦ä ÖbœéɨזCämññŸ*^\®U`pù,-NLS¥‘„¼d\X,G3wǾỴ¼w•-o ”€ï‡åË—{¯[g5Ơơ+Åá¤ơO#ØRR_*B³§O¥ï̃îܹÆ8›««µk#!́¢IÛŒơÇHQ=º­}_ßå-€̣Đ-?m¿ù µ‘`á~Ă÷o[´`¾¨è~*Ûµ3x•§²ç}3¦+TëafĐ²J«K&2uuO×̣4Y!1¹àæíÇ(ÊÀwÎÜ9·îÇ^½k0đË̀NÉÍxöïËî_«UVNeÆtÏÍ›WÛÏTh.óe¦!ưmgöÏG ÔPAyP>~ºéé̉¿ßü÷´îع­N×O¨đmØ_{æÏŸß»kǯæùó—fe&ïÛ~pÎlEÖ'Çq¾YqI³9³15'€̣đă1Çqưw÷¾’Í¥;÷ù¸iÆr=¼zñ¬³“ÓK°¢’Æ\ç_̉R‚„ØÚ*ªª~Äà}‰Ä¡Ă9 -†‚[ |üĐ̀œ:™₫û$åÙ™Ó§%Ùín=[´Ö¬̃ÀËËHL¸ôàN/³₫æ¦}5Î"vªjzîî̀"ïA7n$+ơ0dÉÊVS JQ" wů^M5rÄÏ?£n@ù¥´Woë6׉¿÷úí£Ä¤Œÿ2̃r¹>¼——h¡¨ĐA£N;cv„üô¤ÙÂÂÖÂB°M‚ÏŸ=ÉÉË.**mÖ¼¹L«–ª=:w‘́Ü·@ùµ"'#m¤ßµi¥™6éî€̣P>Ê@ù(?Oÿ÷89)'3óƯ»|êư1 I999vm»évø6L•¼{’ü÷‹Ôç¹9ùEEïEDI7—l©¬¤¥ÑKV¾ n(€̣ÏåÏ?ÿ|÷î{÷îƯô_yyykkkäL“æêí{‘çζPQmßƠH^YEE»»vEu!äZRf̣½[Onßè¤ßsŒƠ FV»÷oCĂwƯ»ÿ¦O_é†́uèÀ"DZÈK!áÉÉ…W®äç½ú0jÄƠÖß |à“xụ̀åÛ·oùÛ©©©ôߌŒ dKå=EíÜơG‹–ªŒû±­cQ= ¶´N¾ỗ¾ÿèêÙcS§MWk¥ÜÀiNN:rüÖô©Ă‡sè_í54$èoóʉ“áïK$¬­]qß”|³fÍÚ¸q£°‹EÙpbĐt (ÊoÇNmƒ̃}?i­v•6湦­ß4k–£œŒt¤9=íâ©ÓW.hơ ÁG”c¬Û«›Ÿ?;ú | ̃p8¾²Û·oodd„liZ\¼₫ïó”¤₫6Ó>311‰¡vs₫}‘waÙ0_I¨7lZå4GÙÑQé3c21‘61!AAk ÓªUGåơBZZº¬ÂóÙ³gȦŦ­ÛMG₫Ü­íë®"ÓB¹ÿØé¶ø9Ïv”’”üâ ÎιzaÑÂV_0N[[…̀̀ˆĂ‡Ï‡ñ | >Wx››#C E­ơñùJk²èp,ü‚…iï–̣_0ÚÄ'ÁEE©´P}ñ+)‰/¶eóêyó—¢l(¨ƒ² OTu6-V®\9̉qñ׋_¯×À˜ø½ºé¨*™n/φHH¾Ôj/ơởEV4¼×®ûª²ÇG«KϨë1#öå°?W®^¾¼XXœÚ¡ä×Nó̉¥ª[ưÖ¸¸₫‚B | 6øèƠÙTضs—Ơ´jĐ̉éÑwÏ₫ —ÙŸ U½};nÈ™†Ió\…sÿÛ7xÈTå5ÂápdddPƠÙ$¸|û~Á#̣Œf£m}6lt_´đ“cX¿i£»{«K0‹Ơ¬C‡7¯_ư'#Û@ù@Œ7™Đ$ø7>ÖdhCO²3püŒ')ÏÚ«·ư„°ÿüó{CÊ M‰-›æÍÿ@ù@¨©©!¾}v₫ÔËʦáÏ+&.v́ˆËÇIQ¼132 Ÿæyó[ÆÄíÛw, €̣ĐT¡(JAµÑ¦l6c}å†i¯êø‰M£GË4VŸ=KA±P>0ûÓïoƠˆ ˆưhå“ 1Á“&ÉÆÇ†ëZ¢đ(M’â‚‚ÆM€é(Ûÿ²rë?¶ưÖíVV²›æˆ¿oBùÀ÷£|)7j˜/*Ûͧ(ö—NPZ̀₫"ă)êb¸5 ñIÍ̀5lØ.U=t(ÈƠyN=ư‡…&vï¦̉¸i4A…|/Ê—BË̃₫ØL;EzÏÅâ°XÅÔ«¤=º›[̀̉ÓÓă{är‹Ù$7!9“çRœđH[OѲbn±;?-9ơ K¯£:)u„â²Ùl/»©#cÆ©«̣Æđr3èH4ôô*é+ßgBBœ¶öÑ£ùÖÚJ‚hÈ£„„|£ß™q±˜sÆœb½Î‚Ở¸™iÉ/Ơ´ äJơ•vÈ-”ÖÖPbR΋‡ñ’˾¢üŒ$¢ÜQ©f©§£}‘û¶µ¶6»<̃&$§•ER)mü«̃(ær ›],¸ºyUmUy|4&§Ï„X6₫º‰̉r1™™¹yóFO°ZkQôs߉̣¹ơ°!{ø²GHQ¼ ‹Eˆ¡«£’ŸÿÙˆ Ê0e•¼Ñ2¢ÑO392‰çÁºŸFHd23á¡9gI4Ñ4³J #¼¾[̀9y«³¼̀è/Ä\§E~Ẫ€drs‚Í›]ÁYóØÎáÄƠƯƠÏÇọ¾{AStKÂø,‹–̃p°µ ¹O³“X,-K;ÇŸbÑ\œ9£© ‰N⹸i°üRˆƒĂ䀀Ë"™SÛ°X!„ØZu »EH?ºÄ»"-WÇôƯ-¦ÔâyWDˆ÷•W&Ơwpc±üè”8 đ?ær:Ư«å.^-+ĂİX¾q\)m÷9]æ»á},‡Ócÿƒ»":ΦԼÑj̀B0ü¨øî(¦Å›¼́o!{˜ƠÓgnö-ccéo!ÍÑÑ÷úöE M_ù§eû«ôíÎ>ÍÓ°›ôßÁ’]-úûäîcœ©¤KôcÈbµà…´–äẦ¡¤ç•¹¬̀¥́NS­È´ù§BÍå+\P›ê»dK¶SĐ” öE%Æ‹äø j”Éb…Ừ6î)zæªƠ0cBöÓ‡2ùg´3ñÜ,~bè½)Q̃¦¦t´³tÿ3˜½Û+a>-{¹E«Í »6vA„¼>Ï»¢'ôß²½;›úån%|®%srYv́‘×è₫Ûr¹Dºè)‹ÄẠ̊‰zíU9m:ô¡úÔÛ<ͬ̀¦x²;8ÖæQªHi5²Î=–oĐU»Ơ}PL ÍNú†•Ÿ–V¢ª"›öü©j›vÂGø.™ÏŸ*Ut¯‡Í×"î߃®zuú¼v3z良—!i)Yªêơñ©¡!ƒ̣¾å{KH^·̉ ¡¼$ÆNâo÷ŸfKüè··j™KULG•¯KZR½q̃Ç+ưĂØ^ƠSV ØŸ7"®)atTüͰá&•ü˜uxh©Ùú¨̉Næ¼Ë"r¼½¡6ƒHP75©Ôå£M›nµ\Ÿ=)§ÅƠµW2›Zù<Á+ b¡N‚ö]ñêÓ®RÚ¼MÉ–3ÙOæßOåk°8d%’)‚/€²WJhăAë´îPAlôU„*»;͈¿°­31~Û0Ë¿ă_f¤ŸÎRÄ<¾Ë`#Ư=‰\ƒl!¿{ï^}”ïÁư¼¡C¾â*j¿DqL¥êî;Ú¥Ks!đ=(ß2÷ÎÖ*~e¦OA,KªG₫½ß yÁwxxñ̉©mƠ&Ÿoʶ•y'OOÊ%Lm'·̉gnfVU¶ ĐƠw>·mDEéªPDË?Ú]GÇT8öâE£I¢ô'³%P/ºßXUç©ÅÚ çG»Ö¦;§óÊܽ,¾¦2˜Bl'öØ2@±RÚ\ưư83™…ÔyJ·eåNûƒ§P"¿±ñ·‰äDüǺû"ˆ₫&¤å_9m溳Éeq̉z½»Ù”̀ºØ–ó‚o—™Í[WV>Áëœb™RUbVno-U¾mw`œ̉[÷ç?Kî2ăÙ|#,püD÷Ó?;Ïùsûo|#-ÅßpïM“Ưz…´1M®N?é\¾OÛIÁA ÏEø¼Ü7ơIs‹ôÎb­0³éư6ø2¯EÙŸĂq¡YY÷ ¹L†ÚQá}X,GB4m­J‚ÂeP₫Ê—dÊ_q‹æä9‰AƯ8¸ûHÙÛÄmYC4Íz’¨¼frÚCD^ÀơáN•Üăwl7p¾ăàØ+Àÿ ។Ư,ÿm6G¾}x—ßÑ=́­ækˉ̣óƯíçåD<È3ï(C²¬¼·uåÛm̃̃›ù7{{ó×£³Üsf³{bVË ~ØR‰-Î]RDí]½–v‰H»4Ă}Obu$E­uơXê®1é0Ë̀o¹ƯÛ[‹ĂÖ›-í«%=́7-YÓ`ê…£ơ²ek.äSù—vmÙ2eÁ6UåÁ΢É*º"ïr&…››‹Ë Ăy'‚G̣̀ı½²Ï9­¸z'S›í*i3÷[A§_q-´Ä1èùó®RÅSô§ßRe´±Èçr«VØ™•Wx5V¬»Nb±ûé¹§_Nï!³Đe¤¾öA ư£ƒù:lOXyú­T…}.vêed2·R<âơZiˆ-%BJ˜Ê†È£S™’’&ĐËå[V˜³É«î,9Z€ûDÈ55ïL»g³wDç/nG|O¾ñüÑÔM:pŒu¿ëmTîÍáôUÚ%†÷!d"‹5_~óyEwç;̃W·zKl_ .®ưWiæBùÀ÷ |4¦ăíé_¥ÇÍÇ?¨|OÑĐÓÙÿ€{zÎă»Íóô˜t¹¤‚gBVøđ7¼¼?b*ư-d¶~¶B>‘ĐÑzVt!¦¶ ±ù‡|[9ø̣f̃(ë¢À%×Á"Ø_°0¯/ß\3]tvñ0N }§p₫!ßÀ®ˆ‰$33³R¶())•]H)£æ5_èJ«¤­,ứvƒæ-TéêôG:룄6"ªqÔvâ¢ÂÖï¿&>̉©ö8h{®µ,ưiDdºT:d ¯WÉg÷L#º˜úBæV­U¨÷3­n«OxVqØ´À>#ßæ=8LdƠúmQ̃BÙ“~4GÈÛ]èđÄvÅ´ ;wÁ3%Ëô[33R­ö$•Üi˯¯-ˆ”XB₫*ưü€B¾åû«wm×ö›ë´A›k6ÆZ.3_s$`ÉĐº¼0{·p# ÷]VđѰ _èⲤµ.W“†Ă©faزƫơ¼{™¥¿^Êå¤̣;gU¡¸˜yĐXu7ԽⲈ,EJVGaa}̉\TȈM`œ 3À4•£¼rơ|ÚåM1?ơŒ ˜wí4!Å(œO å̀,ÈS× ¿¯b9ư²å@8i7äc³+'ŸŸø—e.Rl9”"å#3oÏü3ỡEt‚눱› ơ¥«iÓJY!¿cđ>Úzz™tgï®?tÜÂo£?Ñè.̣÷̃çÄ‘ª<ó€§q7î̃ùz袺b\`Bæè_:`Ó¿qpâ’ơªí̀Î)yĐÑ.6î‘wÑ3¦—2?AĂ”R36Ú+¯"d G¶,“R²çl¢}ܽ™FL;hB_(QÛ8\̃äẠ̈ˆ-•W›û’Qj¿̃½;³sçµ|—‰æÍ•Q”€¦D‡vmn<Ë/——%>bEEE„´Đ́râNV;EFö.^ Y»ÉûÁä‹'wƯS$’r\¼;Óè²Ä‹>:.ˆ[´lÆ̃ w^]̃ËÔ®{.ñ̉%́Y›•x-Đ”ßçäă\¿¶†=Ÿ§¯RÙZj©Úº~DÛÖ!NáÊÏcl6çan€a##RVz̀>¤àbMù fvw½ÚºîŒ¹Ç"ê ×mÅ.épêø„SÌlŸrƃ¼7‹¹3—Öáµ–|ơâx{!LËúYJºû¼hÿ»#ƒ₫¥¨,c'%7ÓE­€̣Đäxñø¾†^ycë´¹s«ú‘ïh¹>@0;3ỏăiÓø3ÜN^¹‡¿Ñeă2ç.?d–Ny´ŒËÁMwM/?;¾×¡«Pó´]zÉHGm¦3ª¾U¯`«^|)˜Œr­ƒË›çÍg₫d.¨~iáëË̀1¦7j@i«£¤ç{öU%åkxr²dôĂB Ê@¤J«ˆC!»&;¡>Œ7®₫̃ èHÈëÆÍ·?%ÏuÆ#Ê@Ó¤¤à]ă&àúÙ‡ivơ÷ob2!*j³™YcœƠï̃%@ùhªØO|ểµ¶:]ÍîlÛîcƒ<N5b<­UKJEEẠ̊¤aûwxz|¢XZÙûú®rskÙ ÎÊR=ªJ €̣đ=`fb´a‹ï ‰ vÆø '?Yöø8;-º~}§‘§¡’Ü,âBê„ñcPZ”€ï„EóÜÖ­ß0ÔιΕ÷́å`‹Ï}¶Å$ed 33ï()5„©º~CÚâEËPN”€ï Å‹ÖmØ8ÔÖé«…›ñ¬U ùVJŸ•Ytt¤Dns™¯;ºÎË+}ụ̀å(!ÊÀ÷(~‹úlØ8䫉_NÊ=UÅ:íƠ¿T„¦¦®];®®Ö²åײü||^Bö”€ï÷E ×ú¬jçôÅg5»vØú§‘J̣_6ZcăÑÉI7ÿ÷¿¨!C¾đ8‡‚w2́{êîJNåà{ÇÓ}ñé³çß‹sÔ;}™•XÅawÑÑ~¥khöPo§¿~ĂE •¿”`Ÿ;ËRk«Ûq†“&¤P>~TØRR‹™EƠĂ/DÆ^édØ«m経yÏyöøî8Íe&ÓÍƠ¥Q̉Ü«÷˜^½É«¼ôà?EE‰©isMMVM ̃qb₫á^»–n9ÔФ×0“^¸çÊàaĩ₫Ñ%%%±·R¥dge½ăæS(qqqyùÖmÚtë¤×Ư¨ë@£®ßB‚eåTf̀XÈßÎ̀H|ø(.5ơeN·¨¨DDTDZZ¼¥²¼†f{¦ÄÂw@ù5=T¢¢Æ†Ưè_J³’²ưĂ½P>Ê@ù• (ê~̉ó—™™oßæꃔ¤”’b ½öêbbbßl32n¤¾x’“÷ª¨¨DLTT¦¹t«VZmÛ¡C €̣j -+ï̀é3¯_åhu1hƯAOŒ£Ô‚₫ y¸›Y˜|7ù₫­‚ü·ƒ‡tÓƠnl}.¹øwÀƠ«™=zp ØÊÊ¢ÊÊ´k3BÄy‡¹„Ü)xwûö¿Ü«ẈÛ´‘>|¦¸7@ù$0øD₫ë×FƒGYZ×âƠLDUK‡₫̃¢±‡ÎœOO~4w¶£¨hC?†i/θ2yr‹ÅT©Å§¤T3cci₫̣î\nĐ̃ß³»uoob27@ùøAÙóç¬|×OZ®]§G_úy'éÆù“ü @æчFΙ­äîÑêcĂ²ÙÍg)̣*$d½¦‰‰ €̣đqûñÓèK}GLú̀xTÚ µs>v.º„ûjܨá_1ŵqóªYJs•?3&kk9Br6n\é2wê?”€‚ß÷èÜkÀçË^]{Đ½×­[âñU&Ằιzú­¾`œ ¶ßUXØÖÄë°(ß5k}Ö[N™û5b¶êê·c§“£ư—mù{üøa½´›¢đŬ¯Ï..ÎưŸÉ¡Y“ÅØŸ“˜Ô/êăMM­É©ï<5ú—dÿ8E₫îÊÂQ_CùÔ5$P„”€&Æ™Y-kW>V*-{m?Ñ`n|úV¾›‹ ;ú)³q=k¤Â˜_ú*́&äï~Q,3ß;«ÆkÑkTØw]#₫̣l§ßª/œf|úƯZNơ*'«>iVT¬û‰¶r´ ÿËöq₫Âă$̉®E©™üÉlé÷¥âl¹ñ8.”ÀÑ8FÄúRɶôÿ»]·ÚoM 7\wưâ;³mígQRz" |41¸oëè̃rnñ¢½Jgâ,2OéÙ*Å«ƠŒVú%₫ê/'\;©LO½¨¯¶<>ưF³IAÑÚ¿\O´[5₫:l0ܳ·~+öđ WWMîºÜX_Å!>= ¦sÖ«ÙŒÍiV§Ÿ·- 6÷ g¦¨²n«¯hÙ»Ë Đ“¢ Yư–÷=iÅ%1gy.,–cB‰­räqZö(ÊŸ|k¾ưT½Z_̉4}P>>úP»÷À½\@(̣s[ấ{y[ï­wÈ¿Đ‡Fù=åGHaT3¨ÿZZ›̃Đ[7ÖѶ•É£7;–\9).Ó™„Ô¨|,«>i®Ÿ¯’yÑ₫óY»Æđ'Ë‹¢m×N´ÈÑÛg#†*[\'VlBºó]hṛYçVœ%ÄhË– „0¶â©+…z¦µƠg6kåP>µ½Ùß0êE&¶*m½ó± nÜ:ă´!dåDÖ¢•“ö$̣]4:u o‹é°ưϱµIZ³fơIsqa}ơ&÷êùÎÎqÛ» ¾ƒ8ÿ?1iúC+4!EÂ₫ è¦Ju˜1̣¡a.*mêĐØÂ I)"å I¡¨¨XËÑY?­´Ø·a²W_…}îYÉpB6øûkùà̀s³O‰‰Où·Â¡_ 0êÅL o¥Bx"UÔÆœéó&zÍΤ>k<´L½Æ*dç”Ôóê䌇X‘cÎẁ– “ëM[œ§ùîkÇŸ!c¦“R=,ĂzJ%ö÷­¢~¢·íô·¬¼¡W{ü™¢mÛ¢(MÎÔ¿®áØû„{„́+•=íjÎÆSăÿ»§ß²“₫ï<—¸×Ḍ?ZăhQœE[V…Œ %¦>™Bœù¡₫>å=À@`Í=XKbZªÖk¹†gÏêh,*̀y[ 0×B©Í,Öü·%D´ĂrSÂb9̣Ư©ă¼èă|3Oí™ööe~ëzs½BƯf¯Çñ^„| Ü)µ²]ÇR7ar=ƯâÓƯê“Ư:ơñ¦¤$^»S¯U±B—Èë±Â°"Ê…°Eh:*­7åùavK=ׇûrMÍPˆ”€¦F̣½[Ơ+_ĂRü6§gƯúø4Đ×&$û[ȺÂŒjP> ¯23¾…d$ܸܳưØúøÔ7°Î̀Ü¡¤$ÖèiîkÚå@ùhzôdñ-$#ë¿´ú{>}æƠôi›àÇ›ëë[¢ü(Măî]CÎGiuéÙ˜‰ >Œµ[ï2Í9oÇ=vwGñP>&‰ÿÆ6®̣Ư}ØjªK£œ=!*üçqc>6Ô\'·Œÿ‚”[6J?—fmÛµF±P>6₫ÛV»KŸ—E}P×Đø„€’R2û÷¿vœ¥ĐđyµeËËyóf¢̀(M‘ÜÔ§ ¯|aû·{z|bGÇYÁÁëmlt}öôtåiS­P`”€ï)Çz¯]g5͵ÁÎøạ̀ùO–=>ừ¬ÿûïlˆ«ó½~3cäTu(ß K<=v́̃Ûgø„8WAæó†úŸ‰’²Vh¨øàÁÄÄX æ S-üå@ùø®˜a÷óŸGOÿªg)y›ư¡«ƠNûó£6̀~ß¾S¦H³X;j½¼̉—/_ ||oH‹ÛµçÀ!K›¯gí}(̀ïƯCÿKE8uêƒ}Ç•úz–ŸÏKÈ€̣đƯ"&&fo7iăæ-Cl¾xä®Dô4è₫E¬=a&Mr»xñ@›Ö9´%¿l̀…2»÷¤¸»/CÁP>¾gDDDÜ-Ü₫û®îư-¥å¾̀ÈơászrÖÉÀ“óßfï °wøbC.\mÙJÉÉi€̣đCà<Ë>;ïƠî];Oư™­h÷₫ù_›Öm¾́ñáH+Ø;x>µ«e«#£ÏÛ,=­ÅÑà‡..¿ (? r²´ñwïqâ©c!ưÆN“bKTđf,róü EE¥IÖ£,Í#~²§ÿï‘ù0xđGëß­Û́ÈKOæLuqGP>~P:uĐêä¾ø]AÁ¿éö4m¡̉¦ÿï¹oîߌI{–2f¬ÍôÉ%Í66L#åưQ§N^êÖ½…i_G¤&Ï%zưZ³‹?ëÛW×Ôtl÷n¸çÊ DJR̉~-ûÁ“”ï̃Mñ́u^‹Çû’©æ2-UZëèhuïj¨9æ[H³®ưc´íưû„{‘=NKËyơª¨¸˜i&Ó\L¹¥´¦¦z—ÎưŒMdŒMp“”P:íƠé_J0KDD¯Ó@ú‡{ |”€̣P>Ê@ù(å |”€̣P>P>Ê@ù(å |”€̣P>Ê@ù(åå |”€̣P>Ê@ù(å |”€̣P>P>Ê@ù(å |”€̣P>Ê@ù(åå |”€̣P>Ê@ù(å |”€̣P>P>Ê@ù(å |”€̣P>Ê@ù(åå |”€̣P>Ê@ù(å |”€̣€̣! üXÊGQr¾[«Y°úÀꫬ>°úÀêX}@ñ֬å’h!‡NërÜåjôÏƯműrĐóʸ»Léud?Ù₫QU|<(±ï(RmD'[H­ä¨?ÿŸ¸M½›B¾qĂÖzœL)”’’úØ€ÜnrÓk˜tæ®5k!tûEä^2—ûæs·$yË‚µX́Ú2—’mƠªS·Æ= Ơ•Ùx’°ú€PöMB’JƯ¥¥¨&’o…Ă·DZØ~¶+Ư´Êô’¬¸+̃$r·äYÄÖ]aFkSäµùf x¤°ú€ªfA¯?¯¯”7ZVæp`Ö́‰c.YUµƠ ®Ø[îvXv.Ä´ơB[qŒÉg¨Ib“HẬYcC*ÙIKÆ/æ©Ó~“„¬Ä¦ƒtoçm›G±Ä%„Ü$ȵÎAqL‘ÅÛ=Ú’ÂrVaá--9»dŒÇvs¥¢BÏr/ʸv"0(*EÈGâ‚~œÂă¶En`ơ•‘ëùëƠµÑ&çK"‡Ùÿ‘bz¥ns'\Ç 7¿è/øÛkP5M+´§©©™+hÀ;æh6ú¦° yÍw–Ÿàs=‘hh&Å55“F̀xœ³q×Y'ƒâΗïw²÷tY‰Ç½đ›‡…Ó¶bŸ¼:Üÿ—¡U»-¦ÅØ›:Ö̉f¿ñ¢ï‚ơíïXk'Ơ#HØEÅ#9m­ú·—ƯË\:UlÇsçHÈ£;Ú*sŒß±îÂê¡Â]X3oư5{Ƥ¸"ÖrÙºăÜ>ü₫¶ÜÛ8Ư—ÓXđw̉Æ₫å~_Ÿ7”\!&‹=Eç§ ơƠMrciù•ïÎK¥6«̣¶Ó#M˜êWÁL-ÇrᑃÆV('‘†RưËÏ¥́“qOßFqpY'jư_bâV÷Á» X}ÀG`́qÀ;Lh€ßÉg¬ü†·*ówcU…axz^g„?ˆ+̉qÎîµ/\Çû̃áíÅûù÷üs³¦È˃“æ•ÙE†‡V4–ô#euføe«Í•l+«/ĂÂʾ̣,µ<°”lº’7ßDVàô>ÖF´GHÅ`ff̉¬7/"ăË2p×»’ŧÓ}„î]upƒ́:Ú½r•{Ä´©5B¶î̉‹CƠçóßK•®©jæh%Æ•×2$nué»Ơ…èó ÙƯÜ­Û•æṛ¦×Vö7.µ¡£7//½AL5óÄŒ}w'Ùw–,=ăB&}«̣Lk©Ê7ÎÚ̃½uá?~1üƯđăä7Ë ×Ăöø(ªĐed¸++â-¬>àsQöpêJ[kÇÿ·Lµæ¸̃¾“·iëß‚ØÎÏö́°t|i³ö¯ÀUL—× ›——Uˆl¿›×ă¨¥ ß<)hî+¾$T¶‰÷7%ÆŒ?T1ÉÇÖ¸+,»¿$/Vøèz÷ư ‡»+Uwqơh¿Àêể€Ơ‹/Z¬´i$ÿñÓZ§OÅ@³̣V¢1ư”ߘz}}jÕ¸9à̉OáĐ_Ü×)-oḅ¾â£ưCfrôºÁfç?6”˜®#Åíí>´ëúJëc$Gm¥^å.]<Æ®­neˆjFO†»tw×hêæ„–ë¶m+œ-ËM̃‚¤”·|hjÊW &g`eM– 5Ľ̀Î'„-6î— “¶wúº½‘˽L¢—=ƒvNÓ“e·̣4đú‰ßáÓá—û“?÷]/lÎîÇ4è=Œ®¼IßúÚ.å^J.ưVs ßđ¾0ù€Ơ|!̀}.>ßz}¼`w‰«Ó­Î Ÿw‘×úW?äç Ù®bÍÿ€_ïYn::Ỵ̈4‘ù³÷Úº^fWË÷[Ϻzg§q™½̣̣ –ÊÏ5r”êâIùđ·‹sƯ½våz̀Řˆđ Aî¬ë(~¥¦uùô'm9´ÉdµJ¯²6¨ơ#TÎ/ø;®æQß̃±ï< $ëë[RS½Â¨8’JÛs•gªÔi–¶ øƯHÛNÜäºv´ß°Wïꉲ!—›ÖMeºÎ*ŒXå̃y˜Ï]ÆéÔ–Ư‹ơºi‡#?ï;›r^Ø,ºâ*†· °ú_„¼{Ç\l­ƒâệ§>l×₫3ÍÚ5«*I>́öFB¢°@¢÷¸‰úÊ_·´D¯è-\µOZze¼\¦ÔØy}èø¿oé< }¦Œîáàë æs₫T„¢ ƒÄø MP¡µ?i½úGEÖjLđ‘N'+º Ù2â‡̀ÛÜ;ÉÜ 6Ø8Ûr“Üq¬ḅ ₫ψ>qößû‰ÿ̃Oxp9DqÖ­…Ư´ơ-èŸíxßÁåÓä¼Hưï‘«ºÈy?¿̀RT¾Y‹²‰ñ›°ÎzeÜmü÷|M¼Í¯²ô`mƠ çN_ưGÙ₫®IÍMŒ×̣̣>Ö¥ÂPU¢¿`zÙÄ-£)m­V-[)+)*ªt3 ê¬>Pñ¿M2pú«¾¾SBíû…Úb¿÷qÀÔößö•q2PZ¸¬«•¾̣×]ˆV\²b5©‚Dă‹Đ³½¦fÓßC½ÖÙŒîơ®øZ(Œ8î¤Vqi> :k§ñÑR¥?gÇ̣]'½n•»,>¿SÿUSÊưHö Í:eXV‡BÛŸ;́H ,íz´}áLp×Âùÿ ‹Êµ…ɬ>P—]ä¨1^xVq̃^wÏ/Ó«<‹YnغéæŒT…Ó÷0́̉} ñÂưÎÓË¿i®DŸ ë¡H̃Q }†™V¨œ~—zíï˜Ë×ă9@H ÍÎúf¦Í:VILåÛƯs¸¾í'÷ÚÉàcaQ‰ÙïÅVĐê4pđOcx×X3¹ Ñ—/ÅD₫{ï%?Û[¨hôhQéZ*çAÜ,>Ơ¡ÛăéœM+.m^) 8¦sk© “lo¿}“Eï©+(PèÑZè˜Ú/'ÎɼI$%™xZ˜Îµª·m;aÓ –? jÿM:ß Ó*́gW².ÜÎ%w\ªaUaER“¯ß₫;ávŸØ±º–u¿L \CÈ`{Ÿuw(ÏX÷IÖëĂ BEÇEWIA7»ă¶ê\>sIÁáĂo‹„v¬ÖƯI6œ!dEZȳ¾‰YC^Vt((úĂ¢ö$ùơ§ñ«Ëä#.º̣b‡öÛ.îpPơ o^Ö”WÆÈ=+´7Zưº\ÓϦ‚½=áèÔ"•êPb)*-fÛS—²ØâÂ+vH¶ÿÊ>;“ ‚^ËÀêûq‰÷VÉäÛtùƯü^Ơö‘·̣8N-ºc'Ú5Á̉Îfô˜¡f½;wq£ËÙk¹n¹l3oƒĐ =Ëa%Ó7†1FnùêϪ~ôÅ.ŸR…ø-÷ÄlájÓâÇéhOªke*ĂCIWÇ3ê¹Ç Ÿ_EÔĂWÙ†¯b6L‰‰Z͉ÜƯvỨƒWƯúU‚íẈœL>{nî‚K-†—Ëæèu‡~ïv¢²·Kæ2ÿ{_ÉôR²´đ¥jVkê<‰Æô£w÷ØĐÆÕă#ĂF/«r₫Óz!¯n˜ăuîuĂáÄåĂVöç›đ ÿ{<›‹b“vÊ‘Y%éKg»†>BAXlñ5ọ̈Ç¿8³P} ÄÆĂІi|_8̣ư4›¸=«¶kÜ[ƒơ*°±ä[”îS¬ûA0/¹ZƯFpH]Í₫¬áÂăU'fa„¢¹¬ªj1‹UVU…c±XJ•”â)¹akcׇóM ’œùq¼¼E’­‰¤Ù+½Ö_OV©§¤¤„$¯y’j?›_È>’:¯wƯ/ú¿;Ú Cü#VM ûܶIÿ“oCZ£'Ÿêc€o˜üMqʦLt₫r%ÿœúă1IO?ZKr:tU5Z'*ơPHđµ¹£ôähX*)³÷ ³÷4½"§DA*åơ7¢I+ÉỈf·¦8^®²g±Ê«ª̀²UU¾¾­²ÇÍ×I£ê'ÏÎN~Â@Ær[̃¤_̀<ª0z8/TÅ gsí¯8ÉkÚ”Ä@,8ç²ÎØZ7’|ÓÏ¢''ó¢,¦ị́p`ß óÎ|̉P–” K)H|ÄÓ¿<³P} Ÿß5úy;̣™—™ñ‹é»¯êÜŒ÷MúæíWÂío-”œ·å˜Náêæ³  «œvƯ踤—e¦½åÿ}l¾Â±ù­øÏ̀+(GÔ;pÂtÿµ]”g8Œđon5*±ưNS₫5c<§›6íÚ¥h³nƒûê¹&ß6¶@ÈÚïâ´,¼­î³HI‹GL7ư;¼ñvr#gY#{Ă›9·,/§‘Ù·.Ù44÷‹™îMÜ wf úº*ôaÓ ‘‡ + ÅmñOƯ`ÜúqI{W,éo7oŒ–\‹– “™Âƒ@j́ ?Ç^¿Å¹̉˜LZÈBh„â½Öâz!ḅÈÄṿ0 )QQ¡t?;ÿÔïH;AL¤© ³·—oÉwÅÇȧ÷̉B¢́[€œÑ\í^¡ˆ̉U”ÛEËmơcđẦ¨$__¨Ç™ ¦:Ïoú×ó ³€(9^Ï E  )×-øẴу÷‡/Åjü¬Ô³zSw4¹ÊƠ+i^fÍFÀÓïøBóÅu]é¡Wó­÷Ï`½œC7₫Íơ¿]̃tßÙ*a…¯¬ËB¼•wÍÉCb~ë'_·Ơ«Ÿ>‡¢fn6È o}={Đën ‚´ª.&¤êÜ=p8v¡«ọwÑ=¤¡çdjđ±¤eÆRëC̣ÚI·Å6ÆƯˆdÆê^îx*̣ŒØÈ†á‚‡§à¹§ßôæ¬Â]„½,uV7ÏUœÇ Øe2 ø³`~H¼t%"6åAFjJ ßsHYÏL]Iwа±S& ×–CaÁ₫ ú:=œi9å^›¡8ö<ŸsV|ˆg|HK'm½ă1Fá[/5Ü7!Ûx¥̉¸z©–l§/i×lø1<8â„ĐÇ!hu€eưz¸rlÙàcË|Z­Û«íX/QRw ÅaÁK{¬S6ĐA¾ar——Há–°wúúf¬–”›\ưtơ Ímu¢(ơĐ©C ‰‘OaÂêï̉>F2©x`KX§̀“çêKÎmÑ·Jđ³ˆm†¡5r5s…yœ½u1¼ü₫·+”oU¥·û ¥ùGZÚüOÙiIư<1́©ö:Ñ<~$]¢#bĐ·~6=]ëej‚6Ơ§Ÿ²îÏs½yë0₫‚̀¾çßj=•m­tÏJ‰Å¶ˆó₫9¿ç¦”ƠmÜsqg-Ư„7ơ.v×ø̣/µ÷ü¤`Á°]ܰ`@ơ탠0æwIVqjRttTô{¯²ß×-÷J•Ñ̉Đ101·n¡%ß̀X<ª¤ÙÎ-;î‘ÊJ¹¡Ê-]Hñ¯í(º»J̉Í+‘Q÷S3 PYÜ;́-ƯA6cǵФ×çpŸ4Ô‡™zéxđ…‹qéå2²hÁ;œ–©Ơ\»…õ¹M^Kß;µ+à́[&¡PzÊ*ë™MÆ„aèƯ”tÆï߀Ẹ̀́2a ª¤ªö@£‘y²¯á›‚úbWĂ"ñ¹Ÿ‘U.£B-Èz/£¤5Đb̀ø cuåÉí7£̣Đ¿·nµ"ñº²VGñµ ´Û¾u‚÷`e­¼ µéé½LfƠŸ^Y‰˜¨Ô©+’>wª¢ŒØË‘ÿaF{ö:«¬”3$–QVĐÖ79ÊÚLOñ«ñ”̣RQ·œDÿÏÅæ`1$Ôô Œ₫ê'†ĐØ«*±̣S‚ƒ‚/̃+–Ẽ 2Z£§Ï[8c˜$',Çy.§wùMf/ L賓¡?µŸ•ÙVvó¯Í^]zhă´Ê»„¡.ẦO ¿q=₫Aö{eé²̀÷ÂÊZ‡Œ`›]é«VÅÎ,höª¤fU˜²e²‘*…sS°y±×Ưælâ[-:Xú·Ê/»³LV[¡Q©·Ÿ,¶Ḱ¨>à»ô]×d¶¹|ÓIæ.æßtë¹ØÖî(ºăí°­E19xú®éÍh0u͹©kZ¦f8Û\~Ôx’Ó= ZL‚霦­.g2×äƠđµ̀bÛ7Æ¢hèáw¾¥Uk rz 7`[ ‡ÉJÓyù̃r`Ø?À°`ÿ.a@ơ …‰É́qÎ̀Ôˆcûö…?lÖWJD¶­˜Ç̃×uº’´g,¡…đ*q|+U’Œxƒ¨±ªp₫óç™oß½ ­ụ́A¾ _XŸÍZŒ Zf£`‘âóA§f>ñ^½œ,!!äÿÑw>±+½̀$À°‚aÁ₫]Â₫€ê:”fVÈdç¼H‹:äíuœ|QjÀ_Ä»ï:·gq“8Ÿ‘f|-C峜²Æ.B¶=jíŒwùÅ"†ưƒ öïöTđÛa1‹̃de¾z‘ö(ưªÇ¦)껺"wR¥ ǘ₫¥pk8”[À@6+ÇI>Ff‰ ¿{.JLÛgPZÁ ÙYYßm’†¢p#‡ª]ơñ`Ø?ß°`@ơÀ7PcC¶çsضynláASɯ_4…G64r ÓZo₫]^y]ăCqZ6“ÿîÔ9 5c$Íá«1«åẸ̀˾üè‰#<ăZZV tƒ6¤ñ?o»O´eeezKJˆHê Ÿ¨+/†íÚ†ûw ûªèD̀ĂJ"mÄF̣ƠƒÍ¤‚Ûq¦MâưƠ’u?ª*uJ;0SáÀL}=ưäñ]1Ö̉ü‡Rwăv"zæº)1Í-ưÄƯĐôÉd#Í1Î+Må[ ¶8̉YwydXozƯqö$¢?Ç^Ÿùüæù˜l®+7i¦›îÅ₫Ê1 vw¶? ú€Î…èˆ0EJ̉üÜÜ\ƒ®·éƯt–ÿκR̃D¦Â2ÄÎñ»%§$#ˆt‰fdd¶úZ%ë-üÇêjÆæÁi¶Ú¯lq «igŇl‹G‘v¦̣­Ëm9±öIC}̣ö:Ls ª_›-94(™ÿ«•¡ÁÿΖĂ₫1†ûw ûªètˆé¸F¸~÷ùtdz¨c Ç$­6£èæ–ÏƠ AÑo¶yÇÀxÇ@0l73,ØP}¨>TªƠ€êƠ&Ơ€ê@ơÀPÅb•”2KË+ªkYƠµµ‚8/H"EE)" اC¨aUTV2+‹kªY5µ,‚Äñ*…$I¦̉Á> ²ªLffđjVfpÁ …ÈB4*E†H#ªø“*Àhf₫ûgÏ^¾ÍÍùø₫-Vñ¥KɈĐ%Ä$¤È"¢T‘ŒI;"B ̣D çÿR)úŒÔ0Ê*JK°­¬äSÉÇ¢̉OJ>bgÉöTPUUÑÑP%‰`a•k?=~‘ù0+³èơëJ¼ "/G””"ÈH ̉hx:O¥â©„ڜ֨­­-aÔ25>VU¾¯~—ÏPT ơQQSR2&‘©`ோuYé³/ïgf½ÏÉ­@P¤gO¢¤$AFF.ÇlN¥àÅ„±Î₫̣¥–Q\ó‰Qó¾ º¨ˆ•—WUYYÛ³¥¼ª¡„¤2P}@§¦Uđ0#=ù₫çậª}å•Ô{È÷î©5Û¾5(¼^XLÛ${*}}ôq^i^öó¼WO?,RÖĐnf")Aë6ªăË‹Wï&¾ÊÏÿ¢£Mé«ERR"H ₫f ĐűMPIY諃9•Y))•˜2Ñ̉êab<–.̃»{êê¼¼ÿâf¾ªPS#ii“ÔTIzú8=}LÙ‰}k`BB̉2ØFĐÔhr¤ E#³³YO2*Ó̉™22ä!F†jêfđTTđû©®A£î=J¼CS` Ư[ͤ—ÚϾ(‘LQê«‹mÜŸÙeQw#³ÓS¥dåÇX–‘́ñç)½´´³ÿƯÊÆ›kjÔÔÅö5Id== ¶q~ùËLJ*“‘¦ZYMèñg·J¡5¯s#"n<úR…Sô§L›‰êŸûe‡PRÂ6›1\1ù́鳇wâËÊÊj-‡h대§  ú€_ʧRæ•đëùÙ/5™*öí?JµßoŒ Qˆ¬9ĐÛ°ư,FÉ¥°cŸ?Z¥×O«K™ơ¥ 2êdzZ©™¹°E§ŸôoŒŒ€™™0¶aû¥e7Îưœûºjôí~#ÿ ±Wy'!8>î}¿”aĂ„$ot0ym»/næ;éqqŸû÷“1b¶  Ơ?‹*VuD̀ƯŒw´,˜[a[g‹!ED̀pô$¶dªªÜw8´Y:ẹd9©.¥=XÉÉÁ7£̣FŒµ±¡b[g‹ ˆ0~ÊöL0,VöÙ3¾ï‹j¦N,%­ÖU‹5fg_>ñ±6eäHacc™ÎAcc*¶a0)éÑ·ËF4`€¨>è@>””8q‚*J`>ZA{`ç0H2²Œíyyy 6±°ñ #YÍÊÙ²5ØĐ€:o®DW4²”4aƠJ™̉Ïï1#›*ÖÙ‹ ZĂƯ'€Cf̀=ªë-B$ Œ-Œ¢µÿnÿ·‚‰®vs!‘Eáa úà›a”W ¡ËÈÙ̀_̃ƠÓ",&>ÎÁYVâ³m‡éĐ¡Æƒô:‹̃«* =~PBBpưzÙ®ndQ<–̣̣²]»6iŒï”‚¯úzdÀë×å˜ÀÆ´S—68'à¶JÓ~çÎí¯ª"LŸ¶/BƠí¬£è™°›Eï̃˜MœƠ,ÿ˜tQ„ÅFÛ.ùXđÆÛwÛÂ…ö¿}½‡ø;û>)^°@\@àÏ12•_¾\ê]ö7₫=oNI¥Î·Üœ«§N§.Z$ÙÛ÷ZÑ~S¦ĐX,tß~_Cƒ₫'€ê€6ÈÿXr(h€…•:gV̀? ™^£mÏ\8-''7Áfôo‰Ă—́}ûYµ³ëñGYV†à¶Jæäɳ¢"â6c₫₫¡•ÇOøÓÅñ«WËü‘'pNN’Éɯ¼́—Ă`?Ơ-›œ5bæ¢?»«'`‹₫¦Ñ{₫úä½¹qüT’ó2)Y ;œBps“ÚxÙpĐk]}XƯ@ơ'/‡©¬4´Ô­R-*.5|Ú‚½{÷,^â(.öÓgAŒù_aQéüùƯÊÈt ‹‹”Ÿßaûytñ̃¿̣̉¯sÂÎ_LY¹BêO9Ù&8œÀâE=BC̉X5¬Áƒÿ‚‡€ê6ç#₫++ư<Èr\7L»EØḅÜưÿûŸ³³3•̣GC%%|ưöó́Yâmø«₫œ•Vđú}%ö‹,Dî©ƠËȤ–\{{H2’®̉ ¯!ˆrĂ}¸ÚI`$] ̃ÀBe¸›~KÈBBNN’G‰ˆHưœ-,ˆ9u6Ùe¹´€®́9¶´ƒŸ„Èưú€G€êº;Ñ÷åegMœÓm-@¡Œ¸/(hårçŸt‰̀̀+’ [<¬œ$ ¥ĂÝ]ûu–ÖæÂÄếÇ/B§ùÛqëñ![Cæ´¿ổqÇÅ‘¾ăLaaüüyA+–{âđøŸ§_*̃:½t©€ë¶{ÁÚ‰’’½då4àA ú€îËDẓøÈ°Qsws;HÈöêƠGó̀¥kSÇwüÄ÷ƠUŸÎœIuZÚFWzÔc¶ä3™Yg̃0ëÈpí….ócN¿ ÔkxƯçÇÆÚÍ;Ưpº}ÀG5¾éJˆiWĂ×ι[ï 8,ö̃tSI^]Qb́¼™BP¶²9<ΠÎ+çñŒa{Ï×{P¼̃VèǴ -C02¿xåÀÄ ‹~v†9wÜÚF “Ư¹Tăp¶³%Bư5JP}@'å̉å«} ̀D˜B} iäñư¹ọzÉulÈ7‚MDDÚR ºăŒ̀́ÄÆŸ âN H_ûơư¬LT÷—’“$Ê™ q1«÷Xâ=ÀÍó‚˜Ï~a¥È®”œ³ÁÎiGÓàÖ‚º̣:îNgi‘1W}iơ Ûn™Í{h%W‚â°Äâé4¶̀c¤& × 6” ›t`Ó¹…R9g*M»‹¹oƯéaJåˆÀdC¥ 4…±1áÿû››¢  ÷ó²2=í4‚ ưûQ TKI jkÓÿ»}̉̉r6X@ơƯ‘¹ù ô‡Spégdùßvó:²³kIÉ“'OJÛµLœ¤v ˆ •Qig¯¥ß=äÅXù@¢ÓB*#î[°!b¯Z+ rÛå¨ Cÿ]ÊóÇàư›0‰#ùØơ‹‰}‘mYÈ£™%Ö”g±œëiRD%p|‰‚ZHJr>ø1c¡ÑÉ=lÉg¶u-ẈaơăÇPÙ#yä§¼|X\S×üWM¤÷2Ơk3•#FHDưwkÁß?Mơ¡è­è—Ó¦̉¡<ó nIđñÉ27«€EüTĐIH¼«̉ÓPŒ²æ£„èwï‹d¥%;*̀»‰ÿ}Ó²$-ËAضa×üz§Ôƒốغ"铉ܗ~U[áT±½´ZÏ×Ö’Ö«ưRÅù¦ô¿eÓỤ̀NŒX?t¯²º± â*X:Ê7•æ˲*dÀP}½m¶¯©ªâ"#«̣ó2ääÊ‚r/^\ÅKK MöåÍ̉‘ùˆüøDL·†16iëR4}nHÔƒZ_íz÷¤—üG]́>‚PSBâ³c7̃Jưg.¯–ñÉkñ~u:Ơwñ÷Ém-ñôôû?Iơ¥§¿̉ÑiÚc™™“ymC]9¯^»Çè£>\ïG—m,z™y'ñÍÓWÅŒ/˜–&ĐzÓûk+ 1“ư½<~B×®e›™Ác@ơññ"t©ºmw_w´Ă”‘ ˜êcäÆÎăÉu4]{+vÓĐNoVèd¢íùÎP±¦¯¼W¾¸¼J£uo+qßÁÂM~Vu+¼ $ª.̉u½“²cÈO½ă₫ä3+Œ¶–Dº!´AÊ‹WU©4ÊŸw§w=f½& ‹…Zl zuy‹Ëæ(́U0ÆÎˆ'µ*©¡'đ/¼T°[¡}³÷‹ đLxæRM ˆp²Àé3Øz)à÷ÓäôŸJù^/?è¨Đ>~x(€c/X×¶WÉ₫™¬ ̃Óư=ÏŸ”ÂlƃµMú¹qœ›=CĐMÊfÿxmóĂmă÷Ñ7,©µʨâ6ĐU6zẠ̀; b!xØú8í̃ƒÛƯø*V3­MÙkK˜z-?Íđ™¶ûá̃×~đÑ­¨(x#²đ'å`n.ÓbXS™vâÊ„5ϸûö§·NíÑäè´5Ï̀Ö¹ÿ€ê«>c¿zÚ¶°T¶ê:½ï`9â—b®%Ø8s< {ΦÆ.Ơ¡“m/|Ûº¬—ÑDµ“znɾß¹=Ñ¿TV”“ÈTxô¨>6áî:6¾éØN@r…£ÿ§2ßưRpBEvV^ôÑKÏ Ç«³+ ù÷‚́ Âùƒèo{ñô~îQæ£ƯÔΈ‘O”K™åÔÍơ^f> üë­ñØóYuNCÜŸG{s¦+ö3wCÜN‡“ƒ{…çÖùPq;yƠwº&g¿ØÛLÜ3YóÁˬ₫ÉÎ;stÁûÑM¶p“-é́+[ï–x"H̃Áå ́üođEWeYàIûA­'å ÎZ¯Ë2À¼÷/ƠÀ â¶¼Úfê¦?£6\¹°^‹]A)Θé¦{±k[¸PũÁ•#fâu:`¸–³̀½ÖT§Ä-ôÀ»9v́Q̉^…ë0ÉPt/p̃ŒEá|1Så~"ÄÛ@ª]‘gÜYÛqVúÊj¹×f ăË_…)ëç7[%/»êcoï{ ̃£̣xŸˆ3«Ơ¾¥cNëv¨/„‰[đK†­J©÷ÔË6öA°©¯%#u§1n'‚hî*~bw¼‰Íåÿ6Ê;|+ºG^†ÎëĂwñ¼ƠJ=·å´§!·áBc#…Ü<¶8Ú”Ö¾›hˆWÈ_©¶î—0·›|-Ûn7h+ám[/ÜẼfW¾’Ó•¬=cyÙút7±/{^ûÙ'_†NçÙ!ḉ¥©‡ë‹e[º×‡>x‚Ø$–_3 đÊöº°8©SN¡»ăC—̣́Éz³vẠ́mù ¤Ưæ€]kFWµP†±SVMŸç›Ăʺ“缦àÚ¦=×mơ®l»àu ̣ß½oG“ÚD×+ÆHm;ˆ_Öí;AFĬ_„=„qŒ#ävßE.¾YdXW8qŒcăåv$̣Kî4³Úˆ £C2/è4Sí¬º³×Öió•úߦ =¥ùæÛo|zù™Ù’̃QˆĂñ›â—]½Ï¤Ơ{³%jÓßußnpåÑÛ¸loṣ†P­¬m^!i&›÷,è×¢@—f|(ê(#¿Ÿ-)Ơî' ¬Ç9Ö|Ô‹© ±Zú¼b:E'4öÿµ£¸cÈ6ÇÖ>ƠMơß0Ơ¿Í˜|²rƠEE•?£Ta~`V âôæëEÖÖHdxĐ´5AWíªB¶’1ùI±v†Ç=™uM.>Nµ…“*̃^ăH¾­){=t®n=ƠÄ7¤0tçS!ÍÂUăîEºÙuΑ,K=Ûân!V₫óUÓƒưă>̣…(³₫´ư†©̣Rî=À•;3e›7[ç÷ŸYüĐœÖYX}U$¾/|₫S'Ѡ먾Ï1¾Éçvơ]cÉWÿ™‰Î¬ûQ¸AWÚ «‰É¹¤¿ÜÉ‘7óƠQSƠù4BL×ÄÇn6®ª*a»̃u·̃•‡¢́9Ñ^ŸTQ˜ỳaÀ1ưà4æ9m¬^[¼ẉ§ó>êhÅ«ë•Á¶iÖËN>AĂ49â‚¥â¤m3ú½y%ë»Úúds4ăÍhµàp¬b]mʉ[ÑíµRöp5g¨}nE<ÔÅÜÖađn‡¹é¬£Z‚-×Ôuܳ{s?¯e[ =gƒ̃Å«a…¬%‘*罕°̃¦Ô%½åØuÉƯb‚ïmj詼gÓäÚø6Z¯¾Ü.äúNèÍvy¨¯»ÈR>ĐÊÿIø2™*N¿mś°*iùRcNj ½u¥Ùë¹(±xŸÇjŒ‡G‡ëÎ7”ö™øä¼½fÛ‘ï0+5…'°—Ỳ,ÇrĐPqRs~“ưĂÍêíînaăë®N<{1/q¼\{JuÛv¨/„†ÎîuB.¹Ođ 1“¦¤³öy¤¢£}FêyÜä“åÅ_ۼ謔ɖcóUÍŒªíÔyñÅùLÆ$"ë~­í¾»t́B+m"X‡)±̣„Ơ”oº‰ÖÛ&̀Ícʵw,~› ×lËz«÷(ï”àuÉ}́xyvÔ‚V́à~lƠ¦ïScï>óæäµÛ1Çoi¼,«ÂîÊ®7Ú˜²oöÎ7‚ ú²“-3ADŸ„ÎƠÄJ–r±ˆJPZ…6÷¾/>8WÜn­Ơk»Êï6S†ë:‘6ÜPHMƒj¿3t¯>¸²Ư«¶yƯ¶îJ‰vÜ€]€̉²R¥-¥¹/?éÁªb æ§̀„“[°Ư'[÷ƯĐ^ PÎb}å&³]ºïqlÇ|Û­SNyY½ƠÊånK§³¸98kÄ̀ưÉ©₫k^ƠƵ5–ˆpʦ©ˆÀó-̉ºç0w‹M‘§V°ëÀ5/§ đâ„É,*k%BT‘ªÊ3rég˜1¿)D¢‡V0KÈ”î°[Z'Lmq¾2i½˜¬Q~¦Î®Çe¦³¦5÷R+Ù0ÀÍ SY £̉Ỵ̈¦Ăa¾¼cª2^-̃l{Œ—R3A“ç®S Ư˜í©çè‰ z“-fÿ¥eaØ[]‘F!HÍq­û„io– áßp¤o,s¹)'pF̉º!û“Û%ßqœ; ú­ƒê&¯i¯&¯LöUơx8zëN½5ÏͶ®ñèÅd›³°6ưœ!"Tú¹Ê€êă>†yƯïhíèCøÄ®­b•­ ^mƒ̉g̃ơ[¯0Ù·åXÆcy³Ḿ%göé=ÚÉqĆœ²ƠæÖ_éóW/t:¿®Iø¦›âưy-{Aaâ¹[k°`³‡&íkĐ>¬:‰UÅí!T|l=·M`+̃ÏïçK%‘Hë‡ i|åÎn-sÑfkêŒ́đȰ“V¿Ïg|ª̀\¹’ôô£µd}“‹yll½ă}.nMöŒËcÚ̉̃­ë–}N[8é½Ç«¡böà‰:Ô+OAÖ4´B0îr[¬fª?8́—€ă¾D‰ZJHJ6rá膽&­=‘ï+5•Ê'÷æ¦È£¾F¨01î̃Fêàu_ynd7kƯ’C¯½ßzs{́€ÔÂDïú‚j1i4⛀ O?au?ZƯ”_Ér~›KoNô»gèrÓ^cÁúe>Ưm摈 úa¼Û9Ë{9÷ %<{ËMdU|ô»µ˜pÆË6­·:h½‘¥×]WŸ«ă÷ŒeÜßëñZiÁ±úg-—́ßttEè¼>/y±çq±o½¥Äw?x°¢R³#2Cg›")qHîËÓŸTa˜̀´×!ÛëÚ¸M0r˜éäƒèÂà–ît„6h nÉI K8¾zù{ÆÇO8ä£8‚d#© I Ä‚ÖöuÛ¸+÷7µắÔÖÔ àÛÑ ơîàMoꟻ3o¼áî]<“è>yhï}•&bK>dô¡@§ºE¢Åó+î³› [Aoúªqu9(mneˆq¼x“ɇö¯à5{àƠ.æG(́Nk;Jx|‹E$tÀt Ơ5µ‚0áZ³®¶–ƠáÁVW×¶¶,{5‚\â‡́Üi¸â–6áÖô€…Z2Ç–|˜*{T?*BQ5¾U(ey=vă½Œ”ư:ÜËơB˜ùy×.&_ åjƯ¨¸ÚÏ¿hÈ~ ±ªZœzÍ`"ǸIL »›´Ú¹”Q̀¬@8O­$%!—¨̉Ø~9‰ª›\‡‘Ôæ,¬–MB‚‚5µ5PđTR/UEöSÆsË góEÍj«¢ŒÄ·´₫º̣ơ M¿„¹s8,k¨B—ƠWÈê‘Unè.ÔáT*÷s`a_P$â7¼’y]I†¨¨÷Ó@J¿Ô9+……±[/e{7TeŒ9Ù‚½¾­Â”àC34¥¨dơóơŒó)m\Àm•(z_ÖV¼ˆHûÍĐ-u yôK]j”ÂØÓ¯e‰ßùï±̉×å¨Y…¶g5°:»~ê(;Tµ\¿ƒå—ÄSíÎkO^6ráôut»yă‡Gèµç&j2¡Fûi;á­Xo¸ûk¯!á^ÿ­7|¶Â söX5k¸‚²ơ’ËÇæïøgºăæ9§D%xƯ™¶•!Bxưs(»Ö•Ÿ‘ø_dÄåË[,×d×]ÛLk’‘![#“₫ ]³d†4J£Q£W= ONCJÚyƯö̃•­Ư€]‚±¼̣sÛ₫Ô6ư{lE“YđKïû˜ưµÑƠÀ|ÿ³;uµK¢àwÉ$̃IåYrĐ1Mhm Z[Û!’m‚PUÍ}›%;~Œ™Q„Ơƒ¸ºß ^°Óv=½ÑÉë́&~ơdæÖµÊÊX8D°ÅKPää§:b̉Đy¶"Ƕ¯whĐ©„̣óú_?-“¶z®Éa?µÖ-\ă4HF¤Ñ‰Ñ+²ÂS ̉6̉Ê,¬M¨ªª!… à¨>.Ê»î¿*;+ëæb*îàäë ơø†|”$/:Đ?•½Ëî¹gl5 ùç<æ¼9ÓiK÷TN{θÑ:äGF{ÇưăŸên\×7¾8Đ‹]ăDFL×§5ˆ“³çR< y—.º½Ă5®™*o)ïK"}̉Üq'‘„›UỄăëPÏ1¶æëHcm=Gpt,‹™“ơ¶(¬¤$‡½˜ÙÏ̃²]ÍcŸœ1å=§‹÷Ú¹¤4£9cv…>2]Êí‰0ïäFfüDm©ưê]Çú_sỵ̈Œ»÷ÏKó£ë"–·ד=˜Âñ6ĐÿëTÑôÆÏAÖ…"ÈÍûƠ¾¶c̃~3G.ñđ |[ä¿ÑJm@8̀‰»·Å?uC}æy-rkÎsc»ƯàÙÍZ»=…¤=vhO!$ ± TVÙÖÛ¡,<÷ô>N3èÊlç kº&̃÷Ú¸h†?÷&úqë!$£mg„/t¥1çĂ÷ñÄßbp«Ö>Ñr½}ü̉¸«ÇY½&4Œ|̣"¹-tç@ϾΩ.­Âưs5̣™—™1B꣭ˆ„ç$s¦Í@–Ưüà¿àD¡º¡éª =›öưØêJ‘“$ƽ­J́Á<¼ù)s<&-²;cÆ7H`̉–3;qS]Ï!Fbˆ×Ë{¼÷Ê…epË»îæ;WöăÅ%œ$¿­ä¥¯ÉU´\Ζ[«d½¥IÄL×Fü·ÉâëÓÙàuBĐ·¶FNá'fÄ.k3¶@iGä Ñßa¥61ƯuºÄpÚ®¯r¿0đỆÈ¿©Ư¶Æä»¶sjövØi®6q”ÖdÔVœâäQˆ®jÆæ<4ß ;)…S ¯|ëRM:»!ë{n¢o¸V+ oơ¬|n¶_x2ˆ³¼e·,_cæq3–óYÁóèïU³væwT7Ï$h­ç–a¸-MR9´ˆ]1ÿêN÷̃ăï9À9îŸÁ¸ê=O9}yû´q+‘ÄåtÜr·¨Lr[×më®DÚcºÎºR¯è×ZÍ®ẃ?)nCd›ùjc²äđÖ¦³›EQÚ ßí»ÍV>Ûo­»¿á3"ïÓNôóE†CjîǺ2®ÑË9 {…_8AÄtßƯ£óŒæE­5Ô]Ûô*L®ŸVN¯£‘£°e]˜zơaö>A_InK‚1 ̃JJËu”‘{ö2̀Ë‹AÑZNà—ä*÷åêtêÊû»—×tàœ¹En.*/÷³–à•ÊÍe)) 5.̀Ÿ8ª©ñ[‰Ü' Ư¹×ÊƠ‰£úʸư'Ï¡›6°§HỮxTdÎ÷W¥f/jíï—=:l¸ơW3W׿<¸̃è;UsQ)m$<7ËF’=›‹s”ßÖƯS=ơÎÄznÆyÖ{|ụ́”iăÎ"ñ'è¸nQ~Î́^%)¼Y[Ç¢cÛœ…µÑ}Ä*+eIJ©@@ơ5BkÊvỮÊbĐ ­|H3̃Œ¢››|†c6kÛÂÊ¢¥)ËPtY«q“÷ÍF};I¬̀DW"ßaÊÂsèÂf<¢.ơơƒûÜy;yó16ûåqCj#+}^E«f,Đ̉éơ t yƯêôkmGă;¬Ô(SưOơCo+ßGvhöBMåFï@ÑFª«›³É;Çi/’»ú[›‹̀wÜDß}­¯Û,É¢h`7’y ₫p¬-ÛMå=ÂPo»Ó›8LEW4ühûº­ß•í4]gG‚&Fưøî„l¯f=è¹̃OumWP$Ơ%©ï–´âAdà†ÔwuFi‘L~¥¢8ơø»©ß}zsU¯ßâÆyzL¸d‚Q]ƒü—Øe±¿ƒ̀[ëMđ6çU?~&ˆä=I/_V©©‘~8°roSWÏxd}́Î ­Iå~¦®®My‡†±ƠMR¹×ÊÙé:²>ÂṂøq§cy b&À=Ä‘'f˜/SlG¯ŸRwèé­̉¾V§RÁ)̀…ºäé­ú́ùgUUåŸT°ƠTe>ûØDơ™zmB½ơNuŒtlêØÚ©-¡he“‰Ú´Ă£¸oN`ă§Öp̃ÜS˲Ñ/´É=̉æ,¬ <}¨ªJ €êëTTvÍhWuƒr–´AÛĐ+£-_°rÚ/»Đ7Di×HC—›¼²îÙù¼iQ9E6FŸlÑÖPODiÅí¬†nœß}{üÂkuñ,Úƒ†v¿œ§ZR}]¢¼ÔçÉ[½„×µ“uQ‹ŒZœ• ­b¾Ï{3pÎ̀Œîơääç¡úï ‚7H wîS/«mΧ7¢¡œv§üd}ù P'DtcÈéœ3G•¦±ç9Ươ¯Çp¶•r".)Yâœ^VV7ûÈÂb ={V0~œåOÊ{}=›Ưû¬F ÿªöƠ.@jÊ{‹a°F;€êë\Đ=b[ÿ´ß¹  úEÿé&å̀`CzkÍR]đBߥå‘ẹ̀–*bæÉ语áW^«‹gĐ,M }·ư[Q^J¦üaI#©-H}·à[Ïz|w€₫`<¾#‡ªĐukÓ‡Ơ=zt—µÙÖµ»¸] 1ä4f› )ñHî+&‚”ŸÜs—ăÁ+ùvûƠøâAºùƠŒ@l,kàÀ^‚̉OJ UDJ]–˜Ä42†{#;[¸º¦¸!˜@ơỰå!(h`64ư΃Fk ̀ÏÙÏ3ÜV­́đGÔ»~ưñ́ÙÓÅNˆøc/ưºÙÿ›‘ÊÍ9…:̣K³\ỗ½ç«V®₫©Y9z”­ÿîƯƒQñx\·/׸ˆë¹ÖÖ£àP}@÷Å̉ÄpïÓŒ¼̀§̣*ƯÜq×/Yÿ5®cú¸ôÓ±ÉHœR®¯÷CkpG@œ»đÚĂ€7·dÑ‘®ñMêÀaJH|v¬ç­ÔU x303Û^ë@Sœ9—7vŒÉÏkèăB¡̉‡×:w>sÚTz7/Ơ·£ñ½{ơPTĐƒg€ê€?//¯ơë׃à;ø{Î,?¿]tiy°h·5³»Q½ú÷ƠøIáO²tç.ï̃½ˆ’’ß½ ƠyÿOí³)æ–”á₫¹UÄÍ¥ÛWÙx\̃ÚÜM~~íhêµü4ĂgÚî{z„{ơáO²UCB^ 1|=* ßCBL[gø/ÈĐÁƒ'çæúß¹SnlLí¶¥úƠ+ú“ŒLGGwxʨ> »C&‘-Y²oï^Ëé …(Ưq(TæƒØÚê 6c̃%đ‚„¥Ëwùû-Z$I£}ç[›¢e‰¢­M‚B3€¢8»(¦7<䟈²ÉÏfYE¡[·z–¬sLÚêwûÓ_K_́‡ºzÆÆ?•O™êô˲uÊçààíDbù AƯQø½}-~åÊ3çe«@ơ†¸˜èü¿=zxÄL{‘Ô­̉₫6-©„ññïÙ3ö…HdÑÅ‹́÷ï?à´T’JÅwBS$%¾Ạ̈́<öÙsÍ¡ÆGÇÆŒ !߯úîƯ§dgÎëú‹S4wîÊ @o2Y@[›Ü­JuaäÉÓÎË\đ‚P}ÀENFré̉¥†V“èRrƯ$Ơ)Q—ÄÅé¿@̣q£Éºº®Ú°}üx²²Pç³iNè¿sB›=ôư’ï̉EXùë%{óç÷ä½ứرoÜx1Ơ>f©₫ô¡ÇCésfO’“ׂG€ê€6¢7@·¯ÆCG${©h6ư“’&PU~ăl¨±É çe¿7&j¦ËU‡́©ưĂ`–ÓÉÔדpqYÛybEî±rå?·oº™ó÷ßBBN£ :U,ˆÏ_½z<¾T´2‰´̀qqAч£‡÷h˜+hôëê)ÂU³.̣Ó́¯·j…KgyyH ¬ú\R°sçccªA—ïđYSMÚ¼%[G§ÖÉÉ£sÆpèĐYf5§ÎÔÔT̀Eëú>üü H$ÂüyN$r÷]£@ơÀ÷##ÙĂ}µÛ'FIPP€jÿÁ*ưwI½WU~ụ̂i)Y¹µk×â;ßü¢b2®®ÿ0Ë‹ưüöêêR-,ºdƯ½²B44ô5]‚ºníÚN>‰½3œÑS§**™³f̉»b» ]ºTö₫}™½Ưbª°<¬Tüâ41w·UŸKK††Id½ácˆB]cü̉üWñ7# ŒM—/úäQ¥Pé..k++>9„ĂUO,&,Ü5Æû½z%qẹ́ƒÁ4;{·®ô-€£ư°[·=|˜=aMII¨KÄüC‘Ä™³/deécÇØ ˆđ€P}Đaˆˆ,[â€í¤<ο¦ÖRÿÁxΨLjÊ>&D†‘)”©“&êu%)B"‹ÎŸ¿’-¥2/î‹̉(lnFÆăq0ªŸ>ˆ_¾ƒĂ L4~åI]·`6{Ø0äsIÁáĂÇđø¿ÆĐÅ;cµª²BôÆO¹¯‹§L6[²d¨>øyèơÓÂ6lçÁ£ô7#Å%¥µMF©"¿7V8äcè(Ù^½ÇZ[ésj×¥áªU†ØÎË— áá·%zÆØÓh¿ưu₫L4,ü¹œ¼˜Ơ(ăùó'ÿ95Äd₫₫›­·ÅoO<_PPjc#¦¦öÛ[ÿpùùW¯¾ÀámlŒÇ‡É9TüZöׯ6lçsiéíøøŒGÉ’²½ûè̉¥dQ¸•ÿ*íñƒ$aQQccc3ư~Cë₫aFVUấ<Û©`ÇD_OºÿR^ljFéƯ‹đk"Àb‘̉ ÄÇç’ÉDc“Aê¦ê®̣Úß4zOnÏO´¦æÉ“¸;ñ÷˜U¦¦4đ+]kk‰ÏŸ“ăăr+*XFCúè?ÜÁa" ‹#*BƠƠÑÄ60ÅσDUU‚m`_†ŒŒ:¶Ơ€ê@ơ€ê@ơ úàG¨AÑÙyÏ_¾*È[\˜¹‹‰‹÷ ‹ˆQEÅ„H"‰D Qp8AÁZŒÚêê/•¬/̀R³ôsyIñçâ•e¥"ô’²²}”•u4úI$°mhuaÑừW9¹Ỵ̣̈+kª‘=¥¥¢4¼8O¥ PȘñ€«©AjjÑêj´¼¬¶¢²–Q\SRR[ü©ú}! Ûé!!(ßSTY 3óYL ª~_ E7mÚ„ưßÄƯËË‹ÿ§œœ\¿~ư ÀbđËxSÄH¸›”ưø<ËÍ‹.z÷ZQ³¿JÿÁêƒÍ°í'¾đLLb[½KÄƯÇ/&V2Ëơ Œ,ŒáÿDq̣ñC̉íèØW¯˜ººTccªÅPA‹¡̉?ïrx<®¯&Ûê2_¾Êˆ++.®12RøaÔÔÔz÷îư₫ư{èÛ BiÅ—ƒ*hô1Ư₫L`]£^ưwøíee­û›Öú«e•̃«ªFrq‘₫#nÿ·íOºD̃ÛÿnFe-_.ÙmܳaÔ(úÑ`ÿ VÂMĐyTóẺíØ„Ç/ H%‚ĐhZƒ‡[,Gk] Æư5ôÁ[D?¶ø)í»ƒ)öÖ÷|ˆè®‰OÙlÜ0ûit:d Đy(¯¨¼r~Ä »nn‡ư‹̃½¹y;nÄPÓ­);vü½]n2`²%´´9Ù¬[·N 6n=€ß¬ú^„.U· àîëv˜2RS}ŒÜعc<¹¦koÅnÚém L´=¯Uü`8 JÈŸ“¬WDƠEº®wRv i÷I$ÎÿÂU?teúÊ{å‹Ë«¨4˜í¹ns§@gá̀¥+M„₫ ơâ¾›~æVGv ÔéàÙ€¯ß8l` L‡9ˆÍʶ_éé¾¥Ñ{‚5~›ê w×±ñMÇv’+ơH|G<|÷#HÁ ÙYyÑG/=7¯Î/ÈÎÀ!œ?ˆ₫¶Oïçe>ÚMàŒùD¹”YNƯ\ïevàĂÀ¿̃Ø=ŸUç4Äưy´·»«±Ÿ™¸kâv:œ¼Ø+<·Î‡ÛÉ«¾Ó¹ +{›‰{Æ!ëb>x™IÔyàˆ9ºàưè&[8É–tögëƯCQÉ;¸|ÿ ¾èª, <éoß̉º̃̀½ÖT§dƯ¥pRµg}:{.Jy±ă“ÿ,KKơ^ƯN¼ôч§L̃Ŭ>Ï?6‡ÿBëNó> Q°aqR§B7Xfw|èRăö èåÛÑ“̀ØÏá´¯¶¯ỞdJJù]NĂlѽÀy3…g5„¢<ÊưDˆ·g6^ ñ ù+ƠÖ·›|-%¾YŒ½‹Y»`ù¶ˆ‡ü±µÛ°kÍèª;k›ÍvZÉ-ôÀ»9v¡˜ƒ¬Çiï-œ+¤î4ÆíDÍ]ÅOœÛ­¢Ê®úØÛû¨·„̣xŸˆ3«9¥aÜßD¼Ṇ̃*L_Wß«±cqÀpv3Ưt/vm3†•{mÆ0¾"­0eư|₫¨5:½₫ÖHÜ‚_2lUJ½¯^¶±‚M¥¾!àGxơæ}ãkƯ¡6` ¼^ÛÀäZÄ™S'v`°eŸ_†½³Ygô§í×£́WZp¬½H©NÛfª’äÙ*´®_âv!×wBoöù5iªư6ÎĐ½úàvÊv‹†`mLÙi áHÙ‚ ú²“-3ADŸ„ÎƠlG HÎÙJS³EÔÍw–2l—ˆµJVÜ÷haY‚P ½u¥=²ejbñ>q×o(í31đÉy{M^%¬·M˜›Ç4•#_ɱ”³ˆET‚̉*́´¹™S|p®¸ƯZ«×v•ßm&;Úo¥mś01\¾Ô˜s̃ÖI>#ơ JŸy×o½ÂÄUÜ–cŒåyÎ6±—œå¸»½G;™"®qˆƯ‘S¶Ú\AŸ¿z¡ÓùuMÂ7ƯïÏkÙC ÏƯZƒ›}84iÏXƒöTvYuUs^司ØznsÓ=V¼Ÿß-NmH¤ơC4 ¾rg·–¹hKaĂĂŒû™–0rá$;eÑơƒ³¸¡ôŸ³ÓÔKOsÚ‚¢[r’¯^₫ññSù( ÙHjB± ñ[ŸFDfèlS$%É}ù©}ŸÜs˜k(®$ÀP´Ú\O¢›üĂË£ûœ–1«™êû%à8™L$j)!)ÙÈ…£WöuWG̀£~ÿ˜7ª0§},Ó^‡l¯kă6yÂÈa¦“¢ ƒ[Êo±̉†öOn-I¯¶0­/«kŸ‹[¤=ă’C¯½ß`‡ï£>/îyÔ5>c…6î̃Fêàu­h›è]ûXLø& ÈÓO˜Ü¥µ¿đƒ (úöå3Ë™-y¨|›”˜Rˆ4^bL•–QPVèưmQ–>Ü`fµ At=»£Gc!·; Ñp:é̃BWm\#?Nû‰6Á àå•Ơ“ 56è¨0Ó3çÍ•ø‘˜9™‘÷ØŸÁLttå¾>zíC¢úp½.£-µ´èÅ™˜L†Ûàw¨>R/UEÉA<·œp6_Ô¬¶*ÊH|Kë¯+_ß"ÔôCâüưXÖP-/C¾j—U¦7­Ç·.+¨Ü÷|a_P$â7̀₫\Éư3DE½ŸRú¥ÎY),ŒƯz)Û»Ơ ¾Ö}[Zn)ÉÇÈĐ#Û™ôOè%3¤éT½êaxrR̉V°ßH³¢‰DôkG-u yôK]¢•ÂØ³³e‰|Æÿ¡¥sñúçPöuó3ÿ‹Œ¸|y‹ǻzơ»Öø‡¬ô³ p XTø©Áí{k“¤f3m³­ ™[£i˜íÈ_ø>22s("bB¤?¤½º¼Åes¦µÆØñnJFjè‰'¼ă /́Vh_‘à™đ̀¥@á~T$pÆÍµ₫ßO“Ó*2½rr2‘R}EE)xD\â‡^Ói'®LXóŒ»ozKàÔMN[ó̀l{R}**”÷ߘ˜À]đ[T¢¼ëîñ«²³²n.¦âH¾¾PïƠR’¼|è@ÿTö.»›±Ơ$äŸóH˜óæhn‡CỹS9ăFëP™<#îÿTwc]^Ê½ÜØGL×§5H¸³çR< y—.º½£¾µ¿V]ÊâîĐ'ÍáwI¸Y¥́=¾®ùck¾4ÖÖsGDz˜9Yo«ˆÂJJrß»œPñ­đDÚ¹w®® "ăÑnÿ4ö(©ă¡f„ÄƯmd(,9|K4½ñsu¡ró~µ¯íØÅå7sq¤èJ ’›Y”ư¶˜%,©$Go—^`UÇP«CᛇÎÑ2œăâŶå£MÄëâÂăkiM³ăû­DbWúÊ*K¿=kbv…>2]ÚŸ—ÆûÜ3̃Z›óíÓz÷lBÑjk̃À¾Â}+Öµ/亼ØâŸº¡¾Đæy-rû; íü€äm~˜D;ºØ©MtƯ¸¢áCƯ¶ƒHñeƯ¾3ä`D̀úEf́v¹ r»ï"ß,2¬kÔÂ1—Û‘Ès,}¸Ó̀j#‚Œɼ Ó̀T)UwöÚ:m¾RÿÛt¡§4®ápăÓËÏ̀–ôBß¿́ê}&­̃Û˜-Q›₫®k<Ä•Go_ಽ!̀ÉBµ²¶y…¤™lNܳ _KÉí!‘œØQF.x—)%Ư1ËÓY;X#‘áAÓÖ]µ« ư?{gU÷Æñ3Æ 3Ĩײ¦BÙzQB‹ỂBTT/̉¢”JÑF‹¢•êưG½½E{i§…KJ…6²U–-ëXî6kb¥<ßÏÔ\ç{î9Ï9gîùƯ³ ï Đœ¸(GƯ“­¦ÜkŒº|væÔô‹*ïđhC£f<̣lXl̉<¯XvTÔc;}‘&_tÄå„£ÿË–Øå°ư>‡?IÉúOùåP~•êcÍÜ{y~•ªƠnG-‘¯Ẉvô9¸Tñ°º€¥y*xíƒÛƯÊÏœ1Á«èƯ;T*³w©¼¥´`6×[u0½}®©m̀yM®•ĂˆÙ·™=.~Ê.‰­n­Àüºvû—âVT•Ea™ñf¢ô@–…úٟʤ©«¿ÚB×&Q̃~gd™Kz<ö–£¯;̉¼Ôd)#¶«k;m‹D ¸́÷óPw‰̃ kˆ7ắ•]ÖSW¡GËpËƯ"̉H_Ûê^l^èăq¶T×z_KC)XÚé£ º¡Ç?4û¨c7ÂùÀÜÖi¿ÏÔ@¦99­̣¨Øo‚<}•÷ZèùÛ„Sç \ï±m,n[›3 ‡̉ ùUvlÿ^+‰ ¡gtânFÖ»çc̃ï~ÅJ#zî§[Ö:ë#s\ĂÅ(z®‡-78†°bÈ=³L½º‘T²FŸ̉º0´¶›~;yÑüê¾*KíU 6Âl¿đc”••qóôëÜß—¬”·¯„k©µœDTY”{:`Ûtw‹£s›†4³Û ]Q[û•Gæ.1å“´Cß»gœ̣’zßÛdÅĂo]^Ëœô0{ü¬Cñ‰~ŒÚùWf«Ù\_g„x¶X Fo·‰i\ ¹̃rû̀Jº©O ˜¡îơùb«#½Aäå¯*/ë.#—–~áçïßËÅ4#Ó'îƠwq=q˜x"-¹Öº½éè¥ên^Ï’™˜üÚR…DϘÊÔúJAæJ1×FzÉQ©•t1çuWMJ® dú¹¼ÆÇÂ7Æ@”È ¶àÎ%Q£›4wÛĂ›‚˜S4*‚]vÚ9nós•\k«̣cí~~TQÑ€Ơ×ăđx¨‰¿Bơ1P™± Ăv±áQ̃3óüöiúª*ØÖÖn{ç̃s=˜o…L² Ă–u7)Ÿ ̀§µ“ȨUiXG›Ă~ÏĶ ́4Qdµöăf…­l₫#ñk»µº;Ô&c*Ñ[ùÖÙ6)Ÿ¸Bh_Ê&Z¬₫5©%Aï—ưhu†”{hÇ—|ßg%$i¼Ăvw)rí°¯Ë”Ă¬Ă=ª[eĐWa’­ö¾°ÚûƯ—·ăX[˜ÎF₫À÷ÓPWÇÉÅÆˆÉÜ#‡·|ḥ÷9íÖæÑ¥sÖN3àG@_âÎĐ%2₫7À¹±G‘8z]ÈÊ'ô®ÂĐ\µzjă¤\1C]ôêÊI/b„yéăỊï¡•¬¾+¼’Ó¥,âxÿ¤NâC p5Ô×w—‘këêˆÄîÚ£¯!îÑ#÷́Ñ]yW•p÷p̣•V}~%QÑtɇ”£³$ưçi ͈̃|‹Úüøå¹ÆÁ.êQ±SüŒ¦Œ|ÓÊ+ªÀ!₫̣7ÎÚÔÔ½{_3 C@+ 4½xơ¡•>×&†@@5ÔjnÔD€_¦ú~-ƠŸl>2…å©Q&Á=ÖÛµ>3#êÁîƠ‘Z¤Ñ ù’[y/½^Áî%ÎSU×ëeg¾~×=F₫}ü7„H¬¡²Ñm¬´eç‰#<™RíɃ)›]u ½y ÓX‰œß5”‘uQE× ¨…ù•Đ`CbÔSkđœ„î22‘H(-mè̃ŒÓqu-Ö»% {ÑQƠ9ếæü_ǶíLm/³P^^Û4v€J3@êđA¬/2h¨*ỏÀB¡aôéưq?œ\m-ÉĐ—UŸ€{TW;ú,dÛ ¶A=ynĂx¬÷.¢ă™ÜQ_3ä/t…Ÿ’‘‘Ö¹?^®¶sm92/lß̀8’#3SJ„‡&ü=|4ÓKÉ¿ỨMë§ §…P<>}á…făt»‚{>»`n]?Åáa¾Ñ´̀tLtb'̀ệb~|ƯöH£ef~ê₫¼Ó™ˆU*˜‘w{l n‘‡”‘ª–èZz¶Ü;%̃g`£sÑvëëôïiªCIBŸÇrîp˜§(úu­‚ùTÉFƠẒÖnLi®ûxâÆ¿¨ˆ‹ÆvôiƠü d¥ÇvàZ“KÿJp)ÑÎ̉D£ỡ0“>/£Øǿ̣7Xơæ©Æ¡¦ọ́̀¯ÈûoêDù̃£ræ´¾ FÇ^~ C€ôÓÿßĂcóF̀‹X¯«±¾í]*™~:¸¼‘V¼Faj6…Ùœ…–,ḮÄ,¥ŸrDźmGu)IơĐÏ~0j }Øjyuë6’b(¶ç ‰«3Cơ•W×1²°-¼|wá|[y·Ư½6ÈUµ)o[Ï+nå¨äà˜¯4@×đ¢¹TÛ ₫̃₫ö²?Üèøđ“à‡:ªèYd¥$êêËKx)‚ízĐt}’èÊVPÜ'æ.îÀC¿á‰¹¬?0ÓíÊ–»d­NæZ}÷åí9RßÄMơpŸ>|±ÅˆÆeEk¢–É^¢}ÿe¨ÚÁ½²³̉‡ Ö]Fæ@&ásr¨’’ßß?¦ïµój÷ Ï’KÚ:zFx~;4¾†Y0­Ö£ˆÁÄ4lb•½wïJ䡀ꀮñ¿ÿưỏ¤Iưû÷Sû( ̣₫Í åÆ-p₫ ˆR¢eÓ½·#ÄÚĨ G|{'µêSöûá¶³º1*C‡J%&üˆêûè¯ăzư:oÊäq` P}Đ5jjjH$غÄÄ1†~ûö ÑÖÇqüi“¬¸•́sí»zƠ»OT5´đƯºÀÈ3}wúŒŸĐ¯ûóü½y[¯¡!I Â/6¨>Ơ=O?̣5­—q‘ª#Æ‚5µüí‹„5n«»ù MàÖ×—»yóÓ”)0“ Q©¼11©«V®S€ê€.S]]ÍÍÍ v€®b9i¢ïî½̉Êñ>n‡·¯71åä́₫Gª¾¾Ư?ÿxgdÔÈÉqơq#‡„äONä‚=@ơ@×%­¡Ö½ƒ² ï`7ÇöèÿN´[‚ç軕(=!Z@PX[C­‡ÂŸk·`ÿƒ+\Ÿúđ8ψDb¦–T:P}Đejjj¸¸¸Àđ}ˆ‹ O›a}ådà„Ù p}Rø}|ù¤¤°ào»Ù=w ^áyv3ưưÎ._.F àú ‘ăŸ’Rß̀›ë 5T|UUU0¼~„Á ²Æ&w/geß×̉^đ.éCÆ»E÷¸º–deevđ`˜‹‹×·zü^½âÏZàäu T|'0©~­¡C„øùNó3²v$’È}$ƠoƯ©©®₫ ’‰ŒŒ–­­ OĐ¢Å¢ü|}¥[ơî]ÎOŸ>äƠ?ôơ@· ;@ÊyÉ̉ƒÿÔ5™. *ñg'CÑWO)(*M4Ÿô3ï+$$çºbƠƒ{,,(}`q©S¥ââ"66CưƠ?Duu5‘; @7À×Ç}Û™‹W߯ÇêX₫±?î…^Z°p¡ǻ¦@äâquƯ~,22wî\?u´gN¶ppp²Ă‚yB‚ f€ê€¥ªª 6ë€ndæ´)ïsrO߯=Á\H¢ÿŸ”4¬₫Aè9I)i÷µk~mLŒÆÏ+.z¿k÷qss₫Ôh ă>}ºHL¬rÍÚP›@ơ@÷óú Û )á¾Æíñ³7ï5eV?¡ß^ïáĐíÓ‡yxyæÚ„̃%Á«WmHMơñ‰°³’ ü₫äđç ÍŸ·”@„—q ú û¨©©áåå;@·£­>Œöỵ́Å•€ ,lÓÉ~8¬>ñ^Ø—’bçÅ ¹{ßhđG®Y32--ÎËëæÜy‚²2¿åd? #^½Z•ưùïùK¸I|Pw@ơ@7S]]-,, v€â/ơa´ÏË”wWù®'¯ªơÛH‘Êâè›×(‚Bs¬¦qröêg¥‚‚ΦM:>¼Ø¹ëʈưFéư6˨–– ^Éäáá>͉“S¬@ơ@©>˜×=’¢ÊÚ5ÔÚÚ«¡22´'SDÄ{gTq µ¯Ưÿ˜‘6múôe‹~##÷ï?lơªaơuµ7o'¿Ê¶²Đ¿—ê¨ú:̉»5ÉÉyÓ,‡Ûÿ=*¨>èqƠÇÅÅv€Ÿ‘@°±4§””•‡Ư¾™•–:ä/}Yeỡñ[PöèỊ̂/eŒm¦Mù}Œç$›üml‚ª*‹ĂB/&%gRtu{Ǻå/_„®_ÿđ)¯ÜØÄpÂư  N€ê€Ÿ¥ú`5øÉPøxgM· Ô××'$¿~û ººJIM[zđ0<ÇÏÛ¼îKảă¹ï3‡ S75RƯ~̃ŸddYÀỒ̃ÔŒ~üæmt́ƒ¸̉’ª#)ưEÄăq?-E…Â÷#sRR‹ÔÔú¡kcc åTüljjj`„'ü*đxü_jª´óḮܼ¸Ç )o^¸¸û+–’“́¶-骾ädf¥¦äe¿“́¯¦>LCUyøÀ™}Á΃éÓ>̀ăÏŸ3c’^dÑ´Ÿ²*ÿ@ü\w¹¢œ÷]ZĂëן32J$$ûi¨«ª(L³„7k úT ¤$ħM1E´O#E¥e©ï̃}øø!?ïSiq!†02O?^> ‘Dâââæâ&ăđ8NøC%'''S úद¦đ@ơÀKUU ï@ơÀ Lê€^K=†¥½Ï}“úîSö‡ÏỴ̈êxùù„„I¼|<|.n‰›ÈEÂápxN†5Ô×ƠÑ₫Q««©5UU_J*¿”U”–”V•—ñ ‰ˆK)(Ȥ@†Ơ›Z‚Ơ&¤¥%e¾/ÊùX]Cm&ˆ(¼€Dâ “9đxĉÇÑr¤¡ƠƠa• UƠ %Åơ¥¥ ÅÅuỴ̈kKK…8ûKñÉÉË+Èâ&ñi@ơÀ¯!<<<66ökw//¯¦cAAÁ¢¢¢ơë×Ăd?øÉä~.}÷8ưu2@”(=P¹Ÿ€đƠ¿hŸ.„ÂßÑÉWŸk?e½ÎI{›ÿ1CTr€†¦Æđa}k “ÊwOŸF<^ˆ8ĐÁ¤¡ªÜbâa¤£Ë߉íZ ØÁÉơơ§_¿ª~ơº:5µZZ¬¡¡®KKâïܽ÷öm…YO×Ào`(Ús·ĂăqC”I´O£CFzú?QÑå……uº:º:–œ"”|P}ĐƒX[[?~ü[g¥¥¥ååå%$$ÀPĐsÔcØưGÏÆÜWƠ7Ühê/ŒŒ¸Œ"íĂR€'Ç̃—–™l:QˆÂÿ{[«{ư&äÖ­‚© ß´i|ư²Q—̣̣\´ăđËëWÿ»y«L\¼ŸñDKÁ₫P@ơ@÷#+++%%•ươ)%%¥ÚÚÚQ£F• ‡xuûú%!qi5Că‰rƒ{[ô¤•iÚÁ‹÷9–U4m’1@ø½Œœÿ)̣Üùh11´i”!CÄz[ôº?å]Ư·¯HNVÈÔt>“-@ơ@·2wî\ooï6YYY+W®û@·SW¿–™¦kl9̃Æ©÷GX@Tr¢íÚÁƠ»SŸ?±™m##%ÙÛ#ƠFFJ|V2ËFĐÙY´÷YLœ°|9]”ÆÇºs÷Ël )é¡PY@ơ@÷@ ´µµ?~Üä‚Çă«««gΜùÛ½Ô€^Nu]ĂÑăAĂ´'ZÑûÛÅ_Aí/Ú'éƯ«cGÏûÛQ¦¯Ô~Xù™³ÿTTÖͶ4-öÛYK‹‡öII¹çåuq₫Ü)d5 â€ê€nÀÄÄäùóç555̀?åääÄÅÅeeeÁ2Đ]ÔcXđ¹KeŸ ơ¦Øàó%R˜#?ß|H?y2höl»^¤ư°ºđđƒéåóç ‰¿µ‘•”¸7m’Èză³ăÚ¬ÙæưûƒJª~”3fœ8q‚v0pàÀªªªqăÆM »¸—sô4;"‰üÇ$J¬¿¼é<—øäø‹—..Z¸€›ø‹¢L}{₫Êơ×NN"ă'ˆü1F–Àµf­ø³÷.^¼æ´`)́ûª~ ‰̉̉̉̀̀LWWW0t •Ơµ‡—Uœ0{á™@yU­₫J*₫₫F3̉Öø5ưQX}ùñàử̉ÄU+ÅÿH#«#© á>à¯7BCSË ª¨>ø~æÏŸïíímmmÍÍÍ Ö€çuVÎ¥SAc¬íId̃?8™"÷„9‹̃ư°|…XŸ2²œ×üyB{öî^ù€ê~ ±ñio^XØöÁ´S„Ä´'˜ïó;àº|)gO.Ụö|LLÖ’%Ư°_efÚíÇå´™QC5$9¾>{ưq‰â q½e˜®€ 'Møí?à¿bù*N ÈƠü\¥d$ÄFM˜³°ÏZ@H¢¿êĂ€£Ç–,詮΂‚—¯¾^µ²{ö^O:uƠbƯæñ‚³Û¬„Ûœµ^÷Æ`ăZ¶U_]°å»‹̣%kÇñc=d1q‚¹9åđ¿E‹Ö@¥赪¯2%î^T́‹Ô¼T…¢¢=ÎhŒ¶$Œ|ÅÛ5=!u1 [ơJ¬ĐöFH+ªø©>ŒÓ+2̀ÑG¨¢Ö†…œ5œ>¯ÛARaHavVhø]³ñ=°=V|w®­GwîÈgêdn‡Z¯ ¼æH ̃ÁøÔ‚GQóf Ëhv‘71;u|ªV}IÀà&Ă-Ưˆ²€öåưÈß]‡«'Œ

ëQ#O˜ÀµwÏG 4Q(r½Eơ…­jæ“L;8_µD³å@|wŸCåR˜}ÿØå·ºæƒH4לÇ:Na-ƒP³»töólåsu4bGÄr#«­M^æ< ˜̣ÁNorHz£ÓȵoïoW¢?‹÷ºF#·³a¤ă‹¼Â²}(¸¾æ3să¸x» G4ÚYèe Ôèu!Íq~¯À¨m Çx#úĩKƯuùÊ>²Ü̃ÑïV‹è*, 8í·à¯oØ£̣ )ó ´ñrw ©GS:¥&¤́.̣›mä~¹É«Û©TEVû=7rờy~Q™-o´ñô¯™ê­‚ =³Ä9øE³eüc‚—ê±# Ô‹vÆ–ÍfætÖGƠÇdi‘PqNƒÑ1[đ8`ͰôæPä'®=´]‡1́ˆ•G#½‚¦$Ú­¥'Ç-¼ĐÇHè;DKô?+ç-Ùßâ>H̃Âó¿›4غ¾ă²Ạ̈è8שeZ÷ß=è<†Đ¹ÅXZ4÷èáö 4d_ñ+Jgöa¶r³ăŒ(y°¾M‰?Kú¿S圯¦ïŸ̀²ïk¢² =ØÓ©Á3Y%-󼽜ƠQ$敟·Q¤âæl½°Î˜Ü"nÁ‡smƒiô«–~;¼nÓKµ\ŸIâđkû‡‘]Pü>ơ•é<0 c˜®áơ°[sgYuc°U•?)\»¶'Vp©Cˆ{EtÀÈ={tW̃U%Ü=œ|ÀA¥•¶,‰‹¢K>„L­EŸ₫Ëp$9UdQB& 9₫¢ÄÁˆR[Ç̣MEˆñ›“ú¬¸¾±¿¯(Đ__³Û”đø "·Ă¯Í½@ïP}e‘> ÉGkíµ–|ˆÏJĂf5₫‘ï©!æEkFK®HNƯ£ÂlW¾;¦?p¾Åà ưu1Q[ơ¨ÔRºëõF¼û²1L’vü₫´‚̀¬Nê'œ´'U^P¥=mNWwÙ1HRürMS'‡¯µé²Ó¯°Pº̀«Íºh$kék£|>üjú¿ôFpÇĂ)z[±:33ΑaÈ0ªâ¾>SüÜ[/:vSs/Pc Åà†vNÚ₫Ns“kµ÷Æ´†JŸ<6››zGæ`¡´¸œs̉²<¤I>$g¢»DnN¾³rKÑUhăØEäv1ËÇbưúú$§Ă6Ûh\{z/a×èæ`Íôéi bHÙ¼‹Z–'–B|¯‚ça#Æ?MÓ†çºÑ[ç™7ÖË™0Ûñùå´g99»†]êH/|Tü?†qK§1_WlÇ´€W! †°̣(v“]́ܨ́J}ỈwFM5tmÆ‹í² §—'́Um=5/] Íj*̉ñå—%VZFze¼Ù(ËxApÄNÍqéØĂKg$Ô“ḰÄbñ îáú[G­gêüÎíĂFÚ;ÏM6nôU‰Í»yÊ2ư€×嵓ͥèö\¹›y¿«wo˜ù?%úá›íŒàvb º·Ç(̃Ç^ÎeF»̣œ“®ơz“ë #âékëH“£Kơf.n™’̀«ÎrS¢ß¦?ø"c( vhBzˆú‹G‘%eå¾nëó~w}øpîÛÙW×b½[ºU£În^ÁßN§¢ªØ`Ɇ*k»¹–ͤ}ø‰í„Ws6Âç&ÎËè÷£=?ÔÇhiªw×”UU\øị́ÏŸ3…„d¡ÈôƠGd ô¢ôëü§¾äA ½™Nk¤¾d5ÓiçƯ¼û&®¢·xé©'År6‹º́"É<`́¬\£‘ăǵT™C`₫çmÂ×ßăÇêÙC™i›q48nÿdvDµTÖ]üĐ[·'61ûRfhÖǼƯ{—~ˆ‰”a%!tüêĂo®.MÓ î̀¸Lp˜i—,¼yd63"d5Û=ú.´D±4ç_Û0l[f\hh́É5Ë?•|.ªÂ¡Ï‚e Äظ4̉"ئ4"ñ1sôQB4ÊJ-b/âÓû2 Å”|4dM¶Çp ŒÚÀÊ£'̀̃-“YƒƯËxô‰D9”.»Z̉¬jhÂàØ̀¯ i*÷’Œ°Û¡§=×|Ê))ª®B•…ŒSñq¯?›ưhYóg¤Å,*”)ùè7uzïÔ fg•‰j*ûöaß$ä&[7jSbŧnaäơĐuÇ5óư“Kt¾ñ^Î₫Äa­óF‹m9¶2xbÊ ¯@ÿñÿÛdÄág°Y%Ư„V¯ÓätäÙ›ïÆÍdeME·́d}z™Ö¶„„4́OÄ4làÏð÷©¯ơ-¾¹GyơǸG ù¨µ, ñˆ‰ËÈË î̉½¾<ó40ñ¥•©ß<Ф”ü7^̉? v‰8½öă«q­ü´º¼‡Ç¢Pô$>qüưî đåËÏÓ§ ôtnRt&b• fäÁƒÓZ¸kiØ¢ëÁE‹¬z2¶**ÏŸÇ ª 7¨>î₫i?È™ÈcÛ)Ă…í¶ü ^>úHQÓjêjûr”ÀË!̣¹œÚäṼ(½‘o~"RÙˆó±ŸOm7± S&ª™_# Œ¾Ô4:Ë…†̉{/%tTơWqT–ưÖÀ¸#tƯÑ,7¯[l#&ÀC¡đÜ_ư,,> •vlWi·Ă“Hlg†ÆP•Aƒ¥°ÆDË¥¿ñ%J[Ÿø#%§:̉4:v 3ăø¿6CDyH²›/Cn$t!”Ë‘‹U–~Ǘ]±OWŒĐyAî̉Æ­Ưmê52́€×MºoVºÑ\ÜWÏ'#oºøÊ‰ù»7̀\²Ơö B Ç÷;’QÙ7nHàgLÛûø®¡Gí¦'0s*ñß9^æă``çŸÊ»÷¹x‘§ß7É»+ÛVl i­I#XR«º$1øÔ+Öy‡Ëy₫2́Íë§îûfÈ|‹H`lÖƯñ …–~Ú\̃£ˆơ—Í|›ŒP÷¨¾̉’×ƠƠ Ư=£ZC…T^ƯzŸw’b(¶ç ‰«3Cơ•W3ÆmrJaÛúv8ûïÇù·Åd–©¾ ăBQU–•n&B_ÍÅ%bï¾q=khy¨ƒ½Cơ!ù}O^“˜¾ˆwäpüMÍ/wKă—î—H?ô,t×3±DBP¨ËÖû̀‡ ²·[1zí¦%³%ç¾Eô¿Äµz¬„xÑ[½hüL-J³„;!Á]—uë‚{»›zÛZP̃ø"SÀr®GôiN•ßñØ ‰Ê"í 7rO¶óÏᵕ™é©D^99Éï}bß £kư-/°†¢’ç₫f~Iô#>îî D`øØ(úa+CÑ’£ƯÜkJÑ4·Eƒ Rçc7¹Y íµè6ßbwẉ7$weAÆÇâZ^9I¶̀P™ñæ#ưÛ0êƠ9}VË¡ø ăöÄ9E·ó²Df¥%̉eëÍ„]ÆL9Wÿ–úMù„–<}Άى\dFĂè ûöéºr£¦K3Üß#6a§DolǸDû±qûø0÷CƒH‡hh,9`7O+ SæNñˆ¾½Á%̀©y¡ªbÈơúù¡đßɾ*^ÙÉ%á‡öăCn.EH¤sJÓ\7¯l–†¾GPñ e„܈ܴĐ@ˆ̃/g!éÿ9]ú°P·ñ…®ä„¹äîG,Ç/Ïö˜lFÈ8(íâPvT̀ƒƒvÎ[¯6B±¦ơåçæˆl@N'Ă¯¸n?—Ôäm̉¶ˆ-7vâ*îï²_±«9̀éÁ*é¾^AI£¶>Úo?́›/œ„%bît—‘ọ́RÅźów}¯-˜W»gx–ÜX̉ÖQpIï’ ÂôÉ đù‰eOZªîÓ§ ¨ƒ½Dơ±fî½<¿JƠj·£–ˆăWçưc.Ơc<Đ„.`i† ^»Çàv·̣3ggLđ*ú2*•Ù©Q̃RZ0›Ü­úE˜̃>×Ô¶ æ¼&¡ơKÍ;²o3{ \ü<”][Ưµ8صÛo¼ ô·¢ª, ËŒ7¥²,¼ĐÏ₫T₫ M]ưỞ¸6‰̣ö;Ă4X̣Ø[¾¨Fó:¥ŒØ~¬®í8¶-%à²ßÏCƯ%zƒ6nCÓùg¯́²º =Z.€[î‘Fú:ØV÷b#đBψ³¥ºÖûZJÁ̉NÑ[úô¸à‡aúF8˜‚;Đ:Íă÷™È4'§UûM§¯æ¿̣^ Öä!¶î– C" xmk¹íÜœ•ëä1‚ßyåcK[³å}ñZ–%FZ̉äé~LZû1 Í0åç͆Å\†Đ I"+÷|̀»sû°Ai'¹É^F|]b„T́·.p8Èđx|›5³!©³|{x#í~[YXÅ₫J†äz9Óm̀Ë›éoÿ¯¾í£ª£x–0ZcB“#1Œ±¤Ó&)ܦe³ü˜3$?…²̉R.~ûû’•̣ö•p-µ–“ˆ*‹̉bOlûînqtnăZv×}¬¨­ưÊ#s—˜̣Izö½{Æ™!/©÷½MV<üÖåµ̀Y©³ÇÏ:ŸèÇÆœe¶ÍơuFˆ7a‹Ơ`Äñv›˜Æûè-·Ï¬¡E¯>%`†º×C曬̣¢ÈÍÛ¯º²ÛIIiI?><¶¶F&á°\uU7‰¬Đ T³9c†íbĂ£¼g$æùíÓôUU°­­ƯÀ:÷†×đø–̀X†aË:Œ›”OÖæE¦È¨UiØ*Ô… x&¶M`§‰"«µ7+leó‰_Û­Ơ½Ø ¤¶0Sq̣̃Êç°Î¶éí}Ü !´/e-ÖŒ4©%Aï;xăËfuªû.`ímuŒ­hñGË~ußNÊR§~Ø2;Úa»Û”“íĂí’ö;½Q;%––ä hÛz2¤i³¯¯—5i§u=ÈtG¶~cÿLêëê 6F.ç9¼åCSôç´[˜G—Î=Z;}̀€}}‰;C—|ÈøßçÆEâèu!+ŸĐ» ;@sMÔê©3WÅ MtÑ«G('½ˆæ¥ ŒGÇ¿‡’₫¶EÉéRq¼ŒR'ñÁá8đxÎj*•›Hüq#×ƠƠ‰Pؾ†È…£R«@ơô"Ơ÷k©†́e‚°<5ÊÄ#ø£Çz»ÖgfD=XÓ=[¾UGj‘Fw:7Onå½töz«‚؇Óü©?DBƠ—̣Îư)mÙybe›É_́0˜²ÙUÇđĐ›:¿/DÎïÊȺ¨ëƯk̀m?"Oç¡bXCCC}·H>¦‘ë¨ Pؾ†Jmàæ†ÍA@ơ±pêjGSŸ…lôÁ6¨'ïÀma}Ôº}9íÀŸúóJ¡ä|üع?^®¶S92/lß̀8’#3ôU-c(qxhÂßĂG3½”<đ븧®‰~ zZÅ£èÓ^h6N·+¸çĂæå퇩8¼1̀7öƒ™ÉŃ„Y[^Lâáë>#‹½L₫đËóº$î-„ä£JÖêóưSV±]ƯƠă9̉Üèï%ûâS₫…ˆÇăˆ\

/£Øǿ̣7Xơæ©Æ¡¦ọ́̀¯ÈûoêDùqå̀i}Œ½üFg]?ưÿ=<6oļˆơºëÛ̃¥’駃˛„KKG^£Æ05›Ấ?ÎBKÅgvb–âOyÂâƯ¶£º´¤Vnnl/Èmfïç·–ăYơÄQE=å'mỘá#‡¤D?¨ƒ ú€E\Dˆ“H()È£ˆ´¿9‡¦ë“DW¶‚â¸81wqú ÷L̀ơdưQœnW:µT$²V's­¾ụ̂ö©ï?â¦z¸O¾ØbDă²¢5QËd/Ѿÿ2Tíà^ÙYïÊ+v—‘I<‚Â"Ä̀¬Y®vNçÄ+H¦#ñËÙ[¦J2‚V±tq¼H;û³VbùËuÂy"ä±×g9'.ÊQ÷dXËp4F]>;sê@º´«L¼Ă£yé›™dÚ1ö¥]å₫ơPÊœçfRÿĐ‘™”9ö́XW×dà½>̉½?-M\œo¢M7ÜDNt>‘Ưt‘íµAKäX‚<5Ánb@HFSÆœơó19“€´*4H HIù¢¨«C€ê¶ṇ̣̃Ú´iؾÅÁ*ïß&}KơưÎ¥D˦{oGˆ5µ‰Q#øöκÚ́Œws¬,»1*ÆÊ$&~l_ơIjí^&aáŸëêób*c ơÊÄû ÉGăîÖ`£ [ºdM ¾E_¼WÍ|Ơ¸:Ou'¯ç4©61ùµ¥ CYU¦>ĐW 2W1ظ6̉KJ­¤_}Ù.zTTö~}IúÅ’¸–wÍ]£áéK׃ê¡ÙKLéj³qR%s‹?TÏ\%ƠËÄ×ǻf,XŒ)Pµ¤ƒw ¾ÍA¶b™çÉYÓWDơØé>nÏ̀—åLÎ0./§/ÇLú¦Ađ/“ó&¬˜TĐăƠßµs§²îhNN–4n%ûÄ\û®^•™üdª:‘ĐÖøk¸•ïÎm•øÈävó4_?ƯÀ”è•5æJ~ Xv !ñĂq3¢töÛE¬±µVA¶ÚÑơƠÿÆ¢"è’)G=gI>äz7#̣EnFm~ürƒ\ă´Ê%v_Má{µ|꺄È„䃒]mUhÉ́h¥ïơû¬»J3 %Ä ¬w4UYqzÿC†‡µLɇèë›Gr ^ëÔ ăđC”ÅHd¨€ ú€—FDâĐáº/ƯU5¬««I[¹̉µ{ƒÅsr3èæ÷Ó,Û[MYDƠw÷ Ư•o7û½93Ư5¡iS´U‡n¼î®ÿ¹‰îèF0ÍÛGg î(æ5m×%đ2›ååµÍ[t¶»)C̣ÑH·›1dÇQguưµWrÚs$ru¾äU}÷½û.Ë–ByƠü$¦N·ÛoÿçÜBưû¸)D\=~‰›»ÛCÖÑyäÈ””j%¥v×Yfe»rK°ï.Q_Ú_âA;4é+LL×½ ´^CÛ‰ä/ûhPe¤ª%º‚-÷N‰÷Ø@ÑvëëôïiªCIµ£ˆ¨GU.Ö'awÖ́0̣½,…»́¶ËÇä;VUá>VÅdDyÜM\m¯Álƒ”¼µÓ½̃é•—¯”3Œ̀#UTđó˜?×îÿûgâœ%œBŸ5Âû¤8n÷(íá=₫́Y‹öùísqkgœ'§ôæ³#‚ÓäĐœi32úëHƒ7n“ [—‰è)­Xk½pÊ^À¶xlđ̣Ư…óm†íîµA®ôuV¨Tf]ëƯ YeTÆŒ»q>k1—çZRÿø®̣•™øöqéúéƠơLïm₫üÚQßkùÙ’Ö₫5 Ï‹[Ú)¡ úƯ¾a„ÇOHTjµ®®T:P}ÀOEÂo3{ÎÙS‡&̀^„ḉ‹”¼”ç9ï3ÚÏë¹[Èü æî÷Zî*ÊEl+üd­æaVmï®ăáy|’¨gT€ç·oDÑ·À0¦¬Â:r”T‹Çk&Oë?Ûq¬-øŒ†ñ̃FrđĐitŒó̃BûRSÑjgK@”ô¢ßógWCƠüäôŸb1-́üQ£™8GŸJ{ñû7©/_,]´ §o$$"kkk¹ÿÅËEñxÜom4‚ˆPMä>eë₫m}F;*r<µU}©)QÑiK–¬…ºªøe¨()Rølÿ·ŒƠß$¾²ƒvz|tIqáO|L$¥Tí);wqZ " ø[?»¹mƒwÚ·{ª­ä‹‰&¦¥ÉªøơH‰‹._îâ¿ÿŸáă' Küá›hsàP\Ø IÉ¿çüÔăø)R+]Ư₫ùg·‰)_»‹»üYà/\¨äå%̀ë ơ TĐ+ “HkƯV†\ K‰afơ§ö¤çE\9û·½ƒ¸ˆđÏ¿;HrY¾>2̣dttÖüù‚¦‘óó„ÿ;–<₫LQ1%¨Y ú€̃…åÓœü‚ăÿ>n’ˆ´ÜŸ”4Ôwă¢¨¸˜ÇÚ_<àĐĐp¶ºZî½G̀̀ø† &ưIFÆ0â…ó_…*ƯV¯ĂáñP¡@ơ½IQ÷5n‰I¯oó1Ù"$ö»§‡PäÅ ÎÁ~7‘Ø¢ÄO‘XµrCFÆSŸ°Ù³¥ûÿ‚ĂTú¥œú÷ü%Ü$>¨G ú€̃ÆĐ!´ÏóWo.ø:KH\ú·Ô{XCrô­‚O¹ ₫&“z]¯œÜđ5k†¿ÿÜËẹ̈́9‚ \¿ga!ܼU—ú¶À̃~!™Gê¨>àwBMy°Ú¦M)i™!Ç÷+©ë(¨iÿ6Q¯ụ̀àÖU2™gơtBï̃ƒ~ÀƠrr_îÜuQ[›×@Ÿô»Lª,ÿ"rñƒĂÚÚÉx" ê ¨>àwEIAÖ}[mmí¥Đ[©o₫`!(&Ù;£ÊÑP—̣4:íí«©Ó—,pøŒ,)¡²z•J}]ƯˆÓ‰Ï3f̀•é¥] Ü÷ï×Ç'|´°6wî ¨  ú€?`e> ¡Ie_*n„‡§¥¼2|”œªVoˆ®¦üÉư[EFƧO1EÈô752“Óh¼­ÑxT]UvófÈógFéóëéơn´rÁ°°ÜK'L1v́¸±c¡N€ê₫PøúñXO›‚íƒ^¼Œ­¬(¨₫×€!êxŸ·l#VQôâq́Ç̀wƒ”‡̉s˜;çO227‰ÏØx¾±1ư855öÁƒ‡EE•:ºüº:\x<î§E£¸X0*2ÿơ›Â¡C%uGhϰåTзЦBû0ṣ̣ăâăS^½Ä‡KË ˆIuÛµÊẤ̀¬ô·¹Y™BâjĂÔ‡««j(ô‰á…¤}˜ÇŸ‹̃?KŒJz‘‰Ă!eÊÀœ îÚ÷¯²’7=­áơë¢ÔwÅâ<ĂTTT ¦óL…‚ªhH‹Z˜™ Ú§‘¢̉²Ôwï>|ü˜ŸŸWú¹Ă02o?~ü\d27‰‹‹¾l '54Ô744ÔƠUWWRkj*¾”V”•UWUyù„…%%¥åeÈËHsÊh¡‘Z}ÜÈB‚Æ›3n\³KEùç¬÷IïßgååTƠ×7đñ(.2LƓȜ8×Pê°ú:¬¢¢®º¦¾¤¤¦¬¬¦¼¼¾_?¼ˆH?iiñ₫̉ ̉̉CU‡U‡BYỚ!Èϧ£¥Fû€)z^!eåÑÊÊ` P}¨>TªèĂÔcXFΧ·oßå~|ÿ9?¯®¶†—_OH„̀ËÇĂGá"‘ \$"‰¾ “«Çêêêë¨U•TjMƠ—’Ê/e•e%¥E…Uåeư(‚¢̣̣̉rĂ+’I$°m3X}qÑ‹Ôôçï³ ?~¬ª¬lá%Pø9)‚¼I{›Œ0$%§$9pEHLJY‹öéB(ü‚œ|ư¹îÓûÄœô·Ÿ>dˆˆK«k¨i UÁăñ}ÇÈ5UYOn={–_W‹ B:”[B‚S[ˆCû/>„øØ D #g×ן{û¶æeruJj•„IKc¨Ê\_22¨>øe‰ÄñăLJ‡‡wàGII‰æ $ü4̉s #ïƯËÉz× ¢º¼ÆHÚ§çn‡çä””Lû4¹D$¼I}ö¨¢¤XMKÛÈ`$'çøL,+M¾ÿÖ«×å**äQz´ƒ‚‚PÿưÅ̉’”I“æ¹x v€ê€nƒ@ L˜0áÖ­[_5D”h§`l'ôơv)́Nú›d] #k‡̃aˆøÄ9‹h7¢¿};ĂÆFa@ÿ̃i¬îÁĂ#q fÚ,Z(̉û,"BX¶”.JŸ=;|ëVÙ̀™“dd4¡²€ê€îAWW7>>¾å8OÛ =µ;ṿTMU•®©¥¢–̃o9-Ú'%ăí‰ÿÎ;_Qv@¯Ô{•W¯₫“—W3ÛVPo¤Øogduu2í“₫ÀËëÚœÙu¡â€ê€n Í8ONNΩS§ÂØNèFê1́́å°‚œ÷#§Ø\¿uZ$äMurË̀~î̀+›Y2½Fûaơ‘‘ÿ$¿,?_˜Læë̉¥•ÅùơQa ¹[¢R“YN%’e%¿38yy®M›$²sú́¸mmm&+§•Tü-Çy*))áñxeee0 tÑñÉîÜ0´œ«~ ‡Ûjñ6gˆ\‚å£Q³*¢ [tºU‡m:d¶ù™Ü½ĂÉTß ¸¶¤ %½Ê…'¹¤ä„(í4ê rJ̣‹©ă’Ü®‡–ÁƠTÖ̉›dr×6ëSQ! ̀ ¥¡¢3b*T+P}đư899mÛ¶Í‚@ €5àÇIËÉ?süè˜éóÈưøÿàd\F6 ̃%>àgó:3'æÎ cÛÅ}Ö"†Æÿ <²lÉ¢ºEIqâÙs «W‹ăp8¶.x₫̣ÿø=mTjU^Ö翨ÆÍÓL…ÛtÁq;µưßÅư ÿĂ=úï„¿¤qé±›_¡_2jÖr}.2Œp»cäûÉYuÉ=ï…^Ó%‹ă—[³<G7©>ÁA¢”fè©îîå»ç«½ÂT²á- ,Äim-à¿t™;T:€^«ú*SâîEžHÍ+AƠQ(*ÚăŒÆhK’ÁøÀïHñv AgHc]LÂÖöw.y²N@Û!­¨â§ú”îhóuw€¿W<^ µ¶îʹÓz“­qø¾l1ÅÏ9Y—ÂnZ˜wèX]đÉĐY³„đøÎ%Ÿ¼±¡7N›C5uT–A\IzÍåê#å•DærvémJU6fṭ«Æc•™i§N??³-ähµÄ;=Èơí ¦z<Îg3æSwåáéç›–Ç"ïäKB₫&ËÙZ+?ä€7±ŒOb0kÛAÏg =>~¯üùñû2‹ U(?:ÚSV– 2”/4ôˆ™™T=€̃¥úR‚—²;À<Ö0v1A†¦úJ²¢æṆ`:꯿µeL¯7Qmđt¢]ˆVDñÓqĐâîGÿŸ·C/¨S/]¼gwØ#ÁR₫̣¬(^M%̣PàNßàbØíƒ”ùEÁÊ#ÆƯ >˜3\SR´›­ơ¯¼<×€l-#¢©éÎÖvœÖc4Z;‘eÜ:TTÜ:SÇè´·“ADq‰»bGI]mw]ú₫ %eÇO!w:@v́ÂÙ“¤¤‡B‘è-ª/líP3ŸdÚÁøª%Ü-θûB(Ä́́ûÇ.¿Ơ5DU˜ó8ĐQÇ)¬ejv—Îb­|îÏ£î‚F́ˆXQndµµÉËœ€gS>ØéMIot¹öíưíJô§Gñ^A×häv6Œt|‘WXV£·Ó×|fao7ôˆF# ½ ¦‰³.¤9®Àïµáo$@Ïêư°Ô]—¡́#Ëíưnµˆ®Â²€Ó~ ₫ú†=*̣8ß@/‡qz4¥SzaBÊî"¿ÙFî—›¼ºJơ±a=>ks#WÏœç•Ụ̀FO_đ©̃*ØĐhÑ3Kœƒ_4[Æ?&x©{0J½hglÙlÆaNg}T}L–&  ç4ø‚Çól†¥7‡"?qí© í:ŒF+FzMI´[KO[x¡QW'ß³“k¬T»εu¤/.敟·Q¤Ó>̃É£ăF‹aẹ̀:3«--üx^½¸I¥‹B¥üơ§IsC›¬ªà}íû$™v=w\¼Y~bç:µŒ¼ă₫»Ç´ßÊ»n&1™ ÄÚ́œí’́¼½Èºn3¶EM‘™±i~Û×°:̉4:V´₫K ײy—î„SDôÎÏ»Sï hoDÈ́QÅu2;‰êj=z¥eï’Ÿ™ưí¦`ưj}ăF¸ưÜÙƯ&M1ÅÄ|Zí&öû%34bÉá!¡TkÍçJ1ß`sRçưăÇ †GÜ7T@/Q}e‘> Éçv-·µäkD|V6«ñ|O 1¯gI®HNƯĂl|W¾;¦?p¾Åà ưu1Q[ơ¨TÆ,ó‡kx÷ec½û₫´‚̀¬Nê'œ´'U^P¥µ‹NWwÙ1HRürMS{Ö×ÚtÙéWXèFĂ÷¢‘¬¥¯̣ùđ«éÿNFß‚¢·«33ㆠ£*îë3ÅϽơ¢c·15gđ5¦V ^ahç¤íï47¹ö˜J;F­¡–Ó¿6››zGæ`¡´¸œs̉²<¤I>$g¢»DnN¾³rKÑUhăx9äv1ËÇbưúú$§Ă6Ûh\{z/a×èæ`Íôéi bˆ¢¼‹Z–'–B|¯‚ça#”ỹ^Îê(]Ó†çºÑˆË¼±^Îd)3wÊéËäo×óxF—©ÿ§Ă0nɳcă4æëí˜đ*dÁVÅn²‹•]©/ùC+Úu˜k¬TûÚ:̉ÄmÅR=F¶°C\53†f_V$W`Œ’V{yíh OUà3Ùo¬%»P/îÓ§Åđzs =&Ëv¾¾rkïæÈôÊx³Q–ñÎâˆẳ±‡—ÎH¨='×*À7k4‡ø̉·̉2 ưxƯT½†WSGº3^pĐâ¬+kÙ2Đđô W)“='æÏ´1{j*̉ô~gj C|^§%äÉ]¦"¦¶,3ßH”tôwÔ# ưH^E‡ăS0‘PTy{ïSág1án[j2îée55€û}Í"knjÎG¶†€„»^›óFBr09€^ úˆ¬Ac”~w ”<¤·‰i²êå¦₫²â¼›wßÑ…ÑÛN¼ôÔklÙE]vauk 0vÖG®ÑÈñ¿3vªL!0ƒsÈÆ6áëo‰ñcơ!‚̀´ w×Ñ‚Í8·²;Ư;µ“#Xk¢ŸØÄ́ư›¡Y³w/£™‹‰”a%!tüêĂon+¤¿å±»sâ;a‚Ă H»dáÍ#³™!«ÙîÑw¡%¥9ÿÚ†aÛ2ăBCcO®Y₫©äsQ}D(%ÆÆ• Ñ”Á6¥‰™£¢QVj{Ÿ̃”i(¦ä£?§M¶Çp ŒÚÀÊ£'ôæ;B&³==º7–Ñ!‰*r(!]î₫iÏ…Lä±í”‹áÂvµUÁËG)jRM-×¶“‹¼̀§Ùçrj“[yÛ娒h:¦²5æ4ŸÚ"(nbVÜ®f~T4l0úRÓè,Jï½”ĐaPƠ_ÅQYö[³@âvŒĐuD;°Ü¼n±˜…Âsơ³°ø$TÚY°] ¤ƯO"±7¯CU –Âj-w t&Ư«±…ñ{b»âvs­]؉a›‚ÆL~Á§̣.̣Ö1$0cXỸ₫m:,̃D.Vñî †ä£?wæN£ä’]l›r‚qwÉ€4̀" |´Ü>À,Ä©Ôñ^`YÈuó¯»;KÔƠ#àWó!¯°¾¶®ƒ}ï®l[±5‚¦µ&9`©–ê’ÄàS¯Xç.çù˰·ÀG?uØ7+êdæ[Dcé₫_ÙµôÓæ̣E´¿lJâăî ­ª"ûsQƯ·fô%ºj±î Ḅ¶.̣‚tßµEŸ‹„$5§^pxS€ƒd7Å…gƠÿEơ½aή¢"1,,ê @ïP}H~ßĂ“×$f§‡/âÁ9ÓA³ÅËỬøåc†ûч¨1Æ›é™X¢ !(Ôeë}æ€CÙÛ­½S‡’Ù’sß"zƒ_âZ= VB‹¼ÜèßăgjQ›ç/$¸ë²n]powSo[ Ê¿Ô2,çÚxDŸF±áTùíÍƯ²H;ĂÜ“í<Æ3W4«̀LÿH%̣ÊÉI~oëµøn]­éoy|a=kSÉs3¿$úw÷"0|́ư°•¡hÉÑnî5¥hÛ¢Á…?©ó±kÁ·wÖ¢Û|‹ƯƯÉßĐT•‹kyEä$Ư˜k_Ó•Fî ~®ßØ­Wùø3»Í§©₫P W1c8‰Ă–¦ èv^¼É¬ÈGºl½™°‹µ`ÎƠ¿¥¦₫‡Bhñ»Æ ³¨ëúdtgÍH#ßMR¸Mn×r}&±±esSoóKôls¶×B·.Áà)ÿ*Í¿¸ĐX+K ©´%7ư¦‰;G¾™(¶êĐ[ÉÊÎåfcï8¥i®›W6¿™ó=‚¯h(Û täF䦅Bô~9 Iÿ‡Èé̉‡…º#q%'̀%w?b9~y¶ÇÀd3BÆAi‡¶³[ơÁA;ç­W›₫Öwđk1"²ơåçæˆl@N'Ă¯¸n?—Ôäm̉¶ˆ-7V5\Åư]ö+v5‡9Ư3X%Ư×+(iÔÖGûí‡}+¹¼ÂÅ…Ư&Hr>%‹‰wöË©¦µ{ŸQۜȉ7” tô <8)#q²,óÑö(j̃¬“a-Ó&f§OƠÁâ¼·ë®ËDh́[̀Z©E0™çÉY?DH9ªÄñ餮1ÈÀ{}¤{ÖM¢¢çµ pÁ•–(5ƸèˆË Gÿ—-Âw9l¿ÏaÀEJ²>ÿS%ÔA€^¢úX3÷^_¥jµÛQKÄñ«ó₫1—ê1B°4OC¯Ưcp»[ù™³3&x}•Ế hƠRư…ñK'¦·Ï5µ­‚9¯ÙfRĈÙ·™=.~Ê.‰­n­Àüºvû—âVT•Ea™ñf¢ô@–…úٟʤ©«¿ÚBºí\ o¿3̀Ál%½åèËÀ4¯üYʈíÇêÚcÛ"Q.ûư<Ô]¢7hă64ŸqöÊ.ë©«Đ£å¸åni¤¯ƒmu/6 /ôñŒ8[ªk½¯¥¡,íôQ]Ñă‚„}Ô±á|` î@ë4ßgj ÓœœVyT́7A¾ÉÁÊ{-›tkí“6rq™:nY+/Ăs]Ùûż;RHhĂñû˜1lU\ñZoFäÓäé~LZû1 Í0¥ V€ỳ®Îq>±ØëZ“}'KøJ®x›¹G©³–¡~;YÜüFƒÚÎK>rIƠáj}¯®wLl[¤›́(QˆzôZJKK¹yØXươKVÊÛWµÔZN"ª,J‹=°í?º»ÅѹMƒÙ]̉¿¢¶ö+7̀]bÊ'éÅÊ÷îg†¼¤̃÷6Yñđ[—×2g̀?ëP|¢cv₫•Ùj6××!̃„-VƒÇÛmbhÜ>³R„½ú”€ê^™o²:ê“çâ&×××UUW“¸¹ÜÈe%Å|ư:«ÙN]‘Ồ_¬%úO³ëÇ¢Çzê×mWwóx́ØGÅ3u›(”$ÆÓ<®+jyxË'·@w߬»6kÔ÷U/xnI—|È%́o}~́)ëUÇ̀V€úæ)&²ôvDÅ[OGçƯÎÚ µö̉‘—Dn̉\mo bơ7V»́´sÜæç8*¹ÖöGfíâñ8nGYé'>~1¨‰½@ơ1P™± Ăv±áQ̃3óüöiúª*ØÖÖn{ç̃Pă‚íC² Ă–u7)Ÿ ̀§µ“ȨUiØ*Ô… x&¶M`§‰"«µ7+leó‰_Û­Ơ½Ø ¤¶0Sq̣̃Êç°Î¶éqÜ !´/e“Æî5©%Aï—ưh±I‡¹Ö1Ù‰a“êˆ*¾ÿ3¿u÷LÑIñîÔO;¶Ÿuiÿ+²ỠV{;öæ‘ừ¾̃i=z-uµu£¹ṣ̃¡iPàç´[˜G—Î=Z;}̀€}}‰;C—|ÈøßçÆEâèu!+ŸĐ» ;@sMÔê©s}Å MtÑ«G('½ˆæ¥ Œ¡1$]g(9]Ê"—ñObă™ÊI¨¡Ö‘ºAô¡ÚÚ:.®ï],‡—§© ¾$.®Đ2µ}úö³ø…6²• " S 8e9pàDm¥jpÛV«uÇ[q îº\¸·€2TDP@Ae¯@¸7­ƒVPÆïû¹–Ëạ̊ÜƯŸœÉçÆ®È‚2Ñ… Ô‰¸ âè„Â)«nüpDeWÜêơ+‡m´áåºaÿ‹ăj–ÿŸÎâǛÖ¸íÂèËüM¢N»¨ jÄöÇ”°º€½~é9₫ˆ…);uưúG‚pJ—Vå¾!"æÔM[‘¯©ŒZ]ƒî>€Ö”ú¾¯Jüz›†ÖI“åö"há„÷Ÿu}~óܤ°̣¹h߸/Í¥1÷´WËoïGF½½ÔĐjỴ—^ÚênÛØFWÚ:ÚÛÂ&z¯ûË{á)ˆjw·¼|¶eŸ-¯[Ö¿-éÂÿ©{·îEeÿ₫_$ö—Úüp*Ơ´<\SÍ`4ÏÙÍt‘ªªÚÿø/ĂúÓü[ÅèÛ‰ë&(è)×V±ëz×5₫7‹wÖ.M’·ºÊV—=Öu3Èêđp̉³zsXP A¨¹₫ØESèŸ₫§´Ñ‡¯­\×î D)§~²lx„%÷‡R—¯½$)›M̉é,́†H}̉Qÿ±£©ăaz†>÷ mÉ%0ú4¹oª¥~kR=‘ä¢O=k¹4é‹ưq­P]mhóÿ¼ÊH§¥¦|y>1‘;½„2¬\.‚ÛrWó#ÀÅđ¸{ồRx=øó=u ĵz›D,}àH‚YưévùWV5ñåoS»G}›Í&×e¤­Ó̉fuy‰0Π7Oê“–V,(|̣¥Ơư°Ë5?₫Î$³‚»ƒ®‹›a/Iæ¦Ä™0‚ˆ¼W»*øƯ ̀·×mŸ~‰ơSÀ@Ag¬ºÇøĐÓÉöƸ˜¿ ă2BóÄ!ÊÄGb§T]ƒưV±GP̀="úQµÖĐ!Êơ-¦Lè!:Ø*Đñ«êĂfSÙ́Zqqý†H}Đ‚ôÔU#ĂO~î«yU.ïGܼ^Jó₫ù¬Íô+ç‘RcV­Ù`7÷ñÓ- Ïk ~\»âmƠ‹¨t• Në+ăẃåUñ;Ämÿº¹{’ơ¤È…V¦ ?\J¹`ϼ¼̃{ÅêÛ4kh³‹½»¹:›ñ…²ççt’Wj®"«([¾zy‰$k?zSDvïxT"f?‹²ÿOꯋëï\À¾pçPr¥å„ß}6l¤lxFç±.¶2 ßdžª|xôÆ “Ơ¿î{Ç‹,¢û R´,I 1–¸ä›—Ïe»|t³Ùwăg7©)†ÎôøÜ韙A¼Ç̉øÜ¥uH©iʧ5z–¦î±/×ă?¿ücÙY/(C‚Gô˜în]YѪ¨Yêǹ?{öùÜÅ~s3̉5´5›íă™FïÜ™‘ÊÖƠưÈi‚¶Ë~!—5½1™¡«¿|Ö®pç#dÈÇ`-½²ô½)̣K£>˜̣9»iäÀ–x磻–ikvÆ>€ÔĐTË–-[²d êđèêf=NüTêkËè*̣Å#V¬$ˆºCQØ,ô¶–øÔËÈZNFê#÷AÎ͸*ÆÆZñ÷Ó?úÚ®ÛKY-ÿâư-4# x‡§~H(áÁKoï¡Øú Å °ëơûªƠ†½úÓèŒv¶i ƯÉñ¹“ÿí«²Åiê鳘Íy«I3³‘/./*æHJPÛMy-›ÚKù‘SÁccé2’RJØú å?<„…Í{Ù&^¿dÖÏƠª­¹+Æ×ϯÙ[vt4<‘:z´4L’ôÈÈ ïi^(R|#Îưlƒ7ÿơêyºBÍ^Ø+á½úôg5ÿUF̀̀†%$®NJª04mưu(¼}LÚêçˆ%'}E¶­ŸI½ÜC÷·ë·;,xĐđÂy‡~[åщ?Z½ùÈ$Ÿ+éƠ>ôÈvS)A<+[o;{v 1ﰯ记egßÖÏ¥8ïĐôU ܱ̣[çYÖÇÛ¡á>l×QïÚqzꨋ(¯ÂÛg¥­Î„É­̣é–¢u«zvܾ}>{³^â¹) t††`¼<5nÂÀ£ÏêŸ3íwh…Â*çƒq„E\ùS~³)Åo\Ϙ>·à@ê€ïAEIÑcô˜£·;Œ›J¢v¨m/ÉMO¸wÓ–OK/HRJịc7o>àç/Æ.åMY6$xEÔd„7ÑúÛ¨m—͘—5§z•‘Ó™Ü(‰evxơ¨¢Jë–Ú+MfqĂ ‰Û³øAêü“ĂvN8av4!áZ20©|+?æƠœ˜¿Ö}ơ Cæ­C9K<”î+ÈfsçåÔ­ªój^›a¼6‰œXs•­a>¿ËC=2ïÖu“;yEäö¼ë£fœ=¡á|ßHi)¯"+Sö́¹G3}°¯ ơÀw£­®6釉۷mê;bK\²ƒluÖƒ›/³³¾Aä“×ñö¶nív ï¡Ư…¶‚ÛH˜lFlË!ˆ₫gCzÎ,dZ­³9<;FđRVàưÀÂüˆ É–ơ²âmE5QÎdDúG¥.¶¬†¥Ø­ø“ß³Gđî…h~$̉Ĩá\ú¶[·ƒ »ÖÍ¢uu¸ g»è¡«¼Wܘọ́đ±—3”?ºæÜUmh“PÖoCÄÅ™OË ¢́ÀÆ›‚… "—ºóĐ‚kẨ}N ̃¾-˜îç·{R|g dç̀™½aăfc»í₫â.‚ˆ»tRRRb꓾årÅÅæ̀ñµsïAe͇OËÊôeû0×GqG4,B· ÓMŒÅe&%MŒû̉Yu×§)e³?ù-Bpăü¼ªO¶̣ÏU­÷Ñ›~ĐEêú¯Gp X•S¼~Æ₫€Ô­ƒNŸ7ÇÿäÙÈèØ›6CÆP(Bír3k^_8¶oâ¤I*Jßá3[˜f£@{B¼+àpÔ©TÊ_R₫êï§~ṬÛº>º²Í“ "Ÿư½¯QA—ălZ7­,dù1̃O§æ’d}î{¼7Û¶¾[¯üVŒ GqèĐÿpiMV₫D̀³÷Z˜2wf WUW»AƯô±g ơ@ë2ÄÙ!ÿuÁÿ3î㤤¦Ư6BÖÆ^:%++ø=Ï1+*áG"‚“źwg‚ƒ> jªÍVÉŸ­‚MaXÛïú¡sjĂ³ĂWx¯£l™}”²D¸ç‘¶ơÏÜ1£Ưyoy6#³ÏöfDCoßQŸe”÷k]ù‡¿)¿ßN°&D%»Ñª¾¨äüsưm—ù*ü} Uêm¯K\zB%”ùú U’ë$0ïç¤ÇONí̃`í2RZ¾Íß`B7ÎdWVxM₫)ú}ïQ!½4\Z7î•ơ`Ơª“£F»¤ûû³ñÏå«0åhÈ”4âÿn¼LđĂnqÀµeŸ]ư¨B¿OƯ‹OÊÖ½~M¸3°–̃Yúá,ïM¬ÎCtï·â7Ñ)AråĐ¡²¼WF…ûrSŸ¾³¹v&¤>hÅ ơt æ?LMû;du/×QrƠÚäfµ)·¯¼ÈL÷úq²„8«µ­ªªñüùÆ9ÙÉË–=ZºkWÆnª²És²›oưir²U×₫ Ú[´`ÇûÏŒŒº>¡©Ú}­%K–¤e>?¼g£–QO‹¶r¾¥ªüÆÅ“ÂÂ4ϱ£tzk^Ueƒ%K ̣^=Y·î±‰Xÿ~¢ÿ¾È¬ÀèÏßOÊrIDáæZọ́2y!§e»́9£Gy1D%°¿ ơ@[¥¥Ö%p₫¼“ç.¤>Lîé8DV©K+ {$'=₫fJb¼Û¡?Mù± Y^Awö́E$‡såÊÁ{±i#†Ikj‰´ÎU%IzL åæ­̀Áƒº7;R´—Ïaáán.„›KIYùùÈKO&u5ë¥eܳ5¬›PuElÔù¼œ́~î.wh›(Tjÿ₫ăú÷'*+/^<›Ñ«·„­ £5t±VVHGœ}•–^àè`aÓËÁÖ–©Ú'qsÄ7‚;D|̉Ă›×o–è˜X¨u3¥ ĂO¥̣¤{73Ÿ¦hwÓïcÓû‡qcÚS‘¢ùéơiÚ­ë17̣óˬ¬$--Eh4Ê7[¢"™èèüÄÄ|}}Å̃½̀‡ ÓÄû©:SC}î Ï}•;66%9IH˜¦ª¥+×EKZQ¥Ù:©Øor3³¦dg¤ËtRènb̉ĂØÀÄcXG(²¶–wŒ¼ˆ‹¿–˜A¤¾¾¤MMj"WV°̉̉È”'…O¼•“céÚ¹¹I¸¹á€Ô@J rC]œîP¯°¸ôIZjVÖó¼¼—Eo^“$Ég‰K2Y4CDTTˆ"D¥R¹Ó9µ²†SYYή¬*-)*+-®,+e‰ËÈvRRQVSUƠQW¥©–¦¼ÈR̉‡€6(/{›‘™đâyFNî›üü¤$]JJ„%Fc2¨¢,•BPi’CÔpH‡;Me%§°¸ª¸¨²¸˜#.F•“SQVPUỚ̉ÅÈÀa`ˆ÷2R@#„˜…©w@)Z“%£¯ßWwD@ê¤>@ê¤>@ê¤>hƒ8$ù,çƠÓ´Œ—Ù/ ^¿*-*`°ÄEÅĘbR"¢¢4SD„A¡ Q©Âdm-‡Ăá₫¿ª²¼ºª²¢¤¸¢´¤¬¤;YBº“œ¢R—Î] uµ$%ÄPƠ‘œ‚·‰Ï2_¼ÈÏέxóºZLŒ*)É„%$¨ Ád Q„…)$IÖÔµµdY9YYQ[\̀)*âÖ°«Hyyº²’DgƠ.ZêV,qy©àû(++[³fÍ?§/[¶¬ñCYYÙ={ZZZ¢bß:}dRÚóøûq/>fK*kê)ªiJÈÈ+ês‡¯oÿi)çí“ǹ™©¹é)T]ÏÀ¨—…™Œ¤DGËxyy7băc‹ÅŨ¢::"JJ4iYẦœ‰¿2¿¬­=–‘YưäqƠĂG‚bbÚÅÄØARJoo¤>€oÅbq³ÜíÛ·?3¶¶vuu5"À7Ă®®‰ºû 1ö§¶VÇØBµ«¡‘Í@îĐË¢ Qå:«q£̃u9°°̣éƠóâ”UílzëhªµÓ¤W•œ|ôÆÍŒ̣rN¯^bææ¢ÎNLîĐ‹RWá âtUûôµ«å·ï–ª(‹Ùô²SÓè·=R@ rrrJNN.--ưè³™™™¾¾¾(@KËy]x>̣̉Ë̀4} ;µnÆư4¿Ï Âé" }K;îÀ/ª©=zúÅ“dsk{+aá6ÿáX^–zåÊé¤ä̉¾ưÄ--X†¾ËjˆĐ…úôăÜq'öb䵨{¥½zéô²&Lc`_@êh~̃̃̃=ΓKZZºwï̃, Uh!%UÇNŸ}™™néänÚ×¥u} ÓŒz;ºÏDƯ}xû½ƒEÛ똪­y{áRhRb±Ç(W71îĐzÖJ¥8:ˆs‚(MLÜ^ܯ¿‘…ÅṔH}ÍéSÇy í´°°@‰ZÂƯ‡O#Oëjnml7иƠ¯­º¾ w¨®® =rªđUö¤ ă%ÄÅ[‘s²Ïï?pÛ̉5pËi ³•¯m÷îLîÀá¼:{nMzÛsüd Í)H}ÍăŸÇyâØN€B’äù˜»ñ7®Z: w8³m­<&bdăȉ¸“{Ăö\ qVë¬̣£ÇûNJ÷đ;W±m™J¥8;ñμykß…ó%₫~̃È~H}Íăƒă€ÿü­‚µdÉÔ Y¤åäܳ³ßˆILqɰ½†½3=̃ô?ŸŸ¦Q©Ôo³Đ̉â¤Mÿ;:yJ'¹N´Pd{{VrråÆM+§{Ï¥ Ó°— ơÀw“qüˆÓDªµălµZ7cq¹5ëƒçøÍú§ù½Î¿±cgäœ94¥ăÙÀ€!/O]»~¥¿ïÏ4º(ö5¤>øR³_9rÀq¼w‡|2 Ê&}o₫ŸŸÏŒíñ+.Jضư¢¯¯B‡|rr´±£e6nZë;k>züúà[{S\vxÏNÇ1Óh4‘Y….óÊ­»öü4åÇZDuŨ_˜>CÉê˜EîÜ…îæ&³cÇú©Óæa§hµ©¯üÉí+Q7R_•!%e`aïĐÏB™‰â´a$IîÛ·ÏÜ~]´Cÿƒ®¬­ÿ6çyøÅË®ư[¢ưƒ‡w:¹HHJP;r‘uu…33D/œß=`à$́z­+ơ= ›ÙuÂ&Á¸©Ó´‘Ô¸©¯03j¢[`¢íÂËQ¿ôkơ%ªAŸpÔ<²à½̃0u"®^gIH)ªi£¶çöl²05•ë$Ư¼-ßßK¥ÆFøC)á8@äÏ?_§(*vE5ZKê‹èîº*‰;²)¶b†£Ñ3«¶ÄËưZJă²¯î>‘b5´+ïǘœ;[½,§E4nÂxÂñC[Ï–?ØÀ2ñ%¬ô/uđøµa–ñ!÷C?ŸĐ{ĐÑôúI½R®®Ôåù_°̃Nfv41ïP„蟖EdÖÏ¡5ïÀéU£»ñÇ VÚÉE‹¯½^f'[?CƯ ¹ư©ë¥m~ăOŒuæM±âfQ •Ado÷›́|¾ÑêjÍ 9<µç'êQ¾Ù…ås–X|"‚±Ơ%¨a;;{Ç=Yû6xœCà‰†YçíO]5¦î[TuGO Êh¼ Å,ṃ^³áṆ̃gø„%¼«̀†˜°™½›Ö¿¡Ôcœ†¿+£Ñ´C« W9ÏŒ#FÆ•6åßÈ¿2iŒwDú»V4́]i)O¼ûơZ:8~Bosæ]|½ÊAö_‡́Ük 'û­>{¿ñÚzưºéÏNܵ(¿óËrw)á~5®¿4Z“¥§-1`_̃ä—Ç´”†§ZÇ_<ªR·ơÛG°¼rG¼SÈ¿tëæ<̉m+o+²Tש~±È »ºæ₫Íh‡±SQ . EȨWß3çÎư0~Ls¶KÖ\¼”>eJ'TX`À€NçÏGLœˆÔĐJR_ñµUüÈ7ïtîû‘¯âØ4rlưƒ¼¥¦ ˸_̣•ư“R× ¾¸—?Ưm«óƒ»^¨í‚˜¨_{³ÙE¼©7Ä₫̀&IeîxÖ-µ±{§™́f¾'±üˆ!7laâsô÷®&RÉóºåVr™uà!΋yƠ™ÇÔ‡¯£ÿ÷ÅSé;q§0>»R½%k\]…{E}¢Ê®Ú ÂÏ•…̣ưdΰ©Æ‚ æßgÂ4‹ Ó&&Uï6øHQ«Ø¥¼ˇº¬¸–C†+q×åđ4óQ[·˜1·hL̃[FgÖ§Ơcu*¼Zxw´Å ^e®rW当8MÇhùÓÓ÷®Ä­éû®YW[̃6†̣£́ËcæJĂ÷β!$†ḾÖ„FˆŒ¿'kx́äeÚ‹¹¼)gj8ÏüvJÙÁ̀[iªtŸSoüeÉ/náưƯö¦?X)ü>,äáÑ©Ưê~G7–L¸11*»ÜVYô¿½s”ûFZ[+¼ ¿œ‚íe¼:o;ógÙM_6¥R°×ÿ¤2’ÿn©>Đ×}ƠRCVØÁ́Ç£”…¿´ÉĂÖúvwNœưûé¡ñóêf~äăỤ́Ëî9a“x‘ûÉ̃?¸‘0X6×Alị̈/ÿ@yư¶¢º¶}PuTtn\}SX(+Ơl‡…¶Ä́hÂk×Á †‚€!ưĂü)>GĐ¾í/1Áu={MmØ‘Ë ¸Í>Ûv{ă ˦|]©f×đÂ/„́]"èưiV³~ưẽ(I§KD"Á9u}ƒA‰O5fûË@;%Áº ˜2’ØÊ}‰÷¹íă+Â4ö\gëËƯ¨º̀Ùó7’ü-ăvxø}óư^¾y[A!̃ÈÄ3"₫ÆíB¢¯T£f¶‘Ṕ7̃–ˆ‹&2Sß6­‘‚w %ˆ|\êοÄ0¤mƠưî†ñû̃œÇv½·sư ₫5äètº÷Œ8¶ûTáÔ†äÓ'²`·í₫ÎĂăßx8mjwÑ©¦®óF¸èo;b;9eÏ»_‚`)QQ ïÚĐ߯¸¡vøḥ¨™Æ_Üä¡‹ÖÚˆÚ´́DÀ ¡*!3ç„Ö¶;¢,\Ă~X0é/"ñWO^MÖ†úʵ_,2@ôôQr·6Ÿz¶̣Åí[qyÜÏ‚ÆDY jjªÿ®çªä₫R;çƠaºăñu3©Â]Ê =ßȽ>₫Ê{ó¼÷̣¾• zWƒ[wăñ́¾„„,ómơv…·I['ͨÂ[I²¹54’¾ÿÆ€H}­!ơ1ºè¨DôÛ~ß>̃ÍVùÉ·^H›ª4|‰}0MLpE¸7¥́†i¥ơÑë%Íw'Q°›+X‚ư+mu† Ln•O·­Ǿ́ûùù8±d—ụ̂wçuO]çƯóñ)¯­9.›–„Ïà룢ÂÉË«$9 •=à»§¾º3÷’ÿkè±ÖË\ÎëÏ{mˆÙ<³7ÿ[µ́2mi­ekûQÖ¾7Ïø?bÂæ̣¾è³Ù‚̃¥̉ÆÑ¢²„ÿÿÆ“³½©ª~¯™¿Í>¸­­ơïÙ=̉¾!ÁAú¾ñï-ZKđăô…ÇË́z mCu""#ÖU×Ȭ‹¯ƒ'ïÏëjfeû³{çï–»"ø :“ ï¬Đà]æƯ•?‹økû¢²úókÛh£¤}7™øF/² ,jx~ä¡“kF ™KỤ̈“¦øÍ‹Lưg³ï-« \|½jiä¡"«Q6.”Öđ ¶D(/KñÖ…Ú=”|a9ÁÚgÓ`ʦ÷·ÙñO;µw›ó̃ï¨ x€fĐ}ÂtΕFy₫³_‡L²Ùº0è·₫”ß>xFkÛVon! ë›eB™ỡ‹/æÎæ¿Ơ¤Mvè¾üđaü³‰Ñ¿éÊÿöÀè³x¥UD  47Dú¢/ Ă)((dI4ápÉ’̀');U³«…éDùÛ´B~ÛÅ›î¾sbư´hMí*«₫ç̃&”±FAw¤ÏêË}øñ’}u…³ÿÍO½¼Zp.tÈ8DZ[băƒùÇlçg<æ̀B,î=B(å7Ó#Üé}¹ppwơ8OBF,»)øKVégV‘FgQ©…Å¥RbÍPäÂWR‚3ú STÖEÛ’6M1ü1ªlû„Ù^ ₫ÜzvlYt6…ÿïnô ×’Iå[ù1¯æÄüµî«O2oÊYâ¡T±̉dvĐns{?HßDrØnĂ '̀&„ç¸̀¯¹akú†đ“ó†(×r?…¶Î¬FØüK =Fñ§̀]9W…y;íäˆA%—9¯ö=´œ ăÿ 'Ö\ek˜Ïï„Ạ̈Pφ? °yGÖˆr0î4ÊR̃ ƠÎ#³#x ¯&wiÿ¥^ü?ê•æƠdB¡IJRßeËʨbOh©Ï`ä’\Ó„5—^#—~úĩUUÈ_ߟ&O~y6Bp=˜Oµ̀́6‹$g}vƯTV=#W½?IÎfn9—ø+,½4₫Ă üâF1?¾näœwâÿY·÷–Ơ”Fª_'‘ÓVü*1e§\ưÄÛ¿à]âDßÙ¼îđ"•¡Y3B¿öwô%*áMyIŸ¨‚«Ÿ:{°Iu#ơ‘;HrÇóXÜ$>WÏÏNè(ØƠlªp>>r·oûåyĂ‘•ỏÎ?Œ?|+`D?Ơ¯ư*¹}ù§!>ơ=ô¾ ιËë*ü ³ùQ?©?MW¡³ñđ‘“₫–ßæñ#ü[ø‘÷g/ƯiÇ3éj›đ™*L¯âư ¬R»M§óÿ'&Âÿ—ù¥—¡—™É¼ÆúiØ2¥₫äú¿µéG]^ß³'ö̉c†ràưÀÂüˆ É–ơ²âmE5Q.H°éw•ºØo]¬á°<}öª„!Á†…·¯ùœ+ĐœêµƠø¶ĂŒË¿†9„zÊ> ;Í‹dN–Øs¥e‚EÚ­Xø§G}ÀSÖoCÄÅ™OË?µQŸ™¿0*v«`+8*ü­VZµZÄd/¯6B§SÙ•åØ ZQêû¾*ñëmZ'Mv”sPØ‹ …̃fdÔơùÍsNIå5sѾq_KcΕô¦ơ â;€ïˆN£×ÔÔ|y>Ư_₫Ø;çƒØ•ÜưƯnđ̣Ù–}¶<¾nYÿï ]ø?O]÷¢²ÿ/ûKm~8•ÆjRĂ55lºHóYD„Í„ơ#d÷gNRú¥‹É'OD8åׇ¨€kŸ:»R¸î„ç¼*¢âqæú(̃?²¡Ûé&Æb² “’&6ü³l0ÂeùÂ/-R{<÷wJà\ ûÎR.3Â&D.ióë„X‚P ƯĐë½$+k₫eå?=¿ùñ­ÿÇ¿ÿl·8Ø ú¤£₫mGS‡Åô }îÚ’K`ô‰%›á„~©‹Hr~aßùŸWi©GIÅ_OLäĂS…2¬äß …Đ`̣óU5¿7ëbxÜ=ú f)¼üùºâZ½Í "–ˆ>p$Á¬₫t»ü+«ø̣·©Ư£¾ÍÇf“ơ“¶NkJ›œêjNMM³̃ÉûçNB±¨(™àđî¿́1hBø2OCMÕÉƠƠñ§éfg¢"̉ ߥ¾‡Á{³mgÔ]èºüV̀́̃ÈĐ¡Jåé·_đFơ£’§ØÖu–m|XùDèüo¢Ú«·ơˆđºç Ç?’e¼×DZ‚Đ^ü›^Ä‚Ë]Ey¬6›5ÆS‡̉Bo*)= ;‚ˆâmÅ+Ûu—9»½n·`+¡×HIvÆn€Ô-HGUǻ›¼Ï̀À®Êåưˆ›×Kĩ?Ÿµ™¾sŢѼ.Rj̀ª5́æ>̃âbº¥áyMÁkWS¼­z5‚ă6J§ơ•ñ;ọ̈ªøuâ¶ƯÜ=ÉzRäB+Ó….¥\0Ïg^^ibơm5´ÙÅ̃Ư\ˆÍøBYÊßäJËÊ7W‘•̀_¿>W[[«;ÄÚ&äTĐ̣5”åβm‹Măú,£ø¼7Ç’È?üM¹ÑÛ2pØ~¯cí˜S¾Â{eË́£DƠ¬ Â=t2˜2dª×=₫a–Dè/f‚^OKg»£ø¡ñÏåƯ¢îïwơç6s/lA·^]¿ê—ç—4Œ|̣£•îΣ>‹¶BË¥§&Ơè4¹9 YUÛ@ꀖ$!Γ”zọ́¹¬b—Î`6ûnǘ&5ÅĐ™Ÿ;ư33ˆ÷XŸ»´î)5íBù´FÏ̉Ô=öåzüç—l";ëeHPàˆÓƯ­ë/+Z5Kư8÷gÏ>†ŸYÖ«é]ÔƠ›«ÈÜ`Ó¹3#í)[GW&0"¤ ‡®èGú}âÎxŒ)GC¦|dzˆÿ{åCÈfƠ»F6Lkhœµô~È̉[{o¢”­;Iº×¿êËósú“L¡W¸ưÔ»ÿ»új+»2ïrös¨ëĂL}ÊÖÔĂ>€Ô-NGÏàù“äO¥¾¶Œ®"_wo:)ËA$)¸“*Ù¦+Ï4èC’}>3ĂÓ§b""Å*»c@ê€G£ÑŒ,z'Ư¼dbç„jPâ^ô•ÑcG7s³Tjÿ₫zçÎe.…"sëqáB¦›̃oH}đ­ v́»væ7¹Ïe•ºtđR¤̃¹ª­×UUY©Ù[¶°•˜øû“'•ºM>γ½ºFí̉¹“ªª)v=¤>øv&²å¯3ÚßqMW’ờ×gz µ?fô´à |}˜L¡[ä¬LÉøûO}}`§@ê€oª“ŒÔÈQcÜ:`œ7EˆÚ+P]øêzdøœÙ₫-·&Kẓ£7m>äï§@£Q:`‘ß¾–>pđ‘ï¬9Øăúà;ĐƠRàäzùï]ư=~¤P:VgYVpñøA??_Z wuÊ+víá¶ic¸¯ŸœPÇ*rI‰ÔÖífú̀`ˆ²°» ơÀ÷aÚ½›‹y$t³Ă/½£œ~Vö*#æâÙÙsf3èôo°8U5³qăÄ₫X}Đg¦Üç/éÙdeÉ:ôØÏ×!* ©¾'MµÓÚ´ys¯A£¥dÚI¼ựyÆü¹³¿åBåt}}çlܼv”‡Œª*½ƯùÎmfB³Ÿ^ˆư ©Z qñ €€]û’B4³~.íu3…jªÎÚƯ»OŸÁ“¾ử¢¬Ÿç.>}:äÆ‚Ñ£¥Ûk‘95¢[B²{öTœâ5{R´.?Œ‘yd÷›!cÅ¥;µ³­ËO}wgÆôiLQÑ︃M{ù2eơ‡Æ—QVjo~‰ ̉—.¥L:É’Á€Ô­‘ºZ`ÀüȨë·"Ú¹aµƒz₫đNÔÅÑă<m­ZĂú(*v÷óâøØđƒâ&Oî$)ÙÎô{ôH́ÔɧcÆZúùÄ~€Ô­ƒ]oîÀÍ~ç®D:›Æ“l£Rọ̈Ùµ³§<ÆuhmëfjîÊñ8záb̉ ¹N²mơ3=ă™́¡ĂÉ#æŒÅ¾€Ôm/ûEƯº{öhhO‡ÁTÔÚ̀ª“µÙï%ÅƯ3f\P`@k^Së^Ă¹CṚ¥;¯»‘̉ÑmC—Q¾sGôêµ´qc¬çÏư©Ú*;«ÜáMaÑÁĂûH‚°pt§‹2[íÚ² ²/Ÿ>®«g0ÈÙÑƠ¾O[)²¡=w(+}ZQU9vŒ”˜Xë=́3'GîĐ¡d§î ́#H}ĐÈJIΘ:…;’‘yîØ‘ÚZ‘Ư@iyåÖ°nBâUjâ½ëWU5´œ:Z̀û¹™%&ë9ÁŸ«r“>[QYåæ&¡¦*̉J¾r$&°Î_|¢®&ăè`áïï©Ú'u5éÓ¸#%eå‘W¯=J¸/¯¢ªmj-%§ø“̃ë̀ÇIwo±««-,¬ú[›;ÚX´›"++üø£w¤²¢́̉¥÷î¥ué"jg+Ú¹Ë7¾æ'íÑ#æơ˜¬̉²*kkĂænƯđÅ©: qÓƯƠ‰;pÇ«««oÆ̃OLxPôöº¶¶´¢*U¸Y?¤Øe¯2Ó3Ÿ>ÎÏÍƠ£‡Y SîĐ¾‹̀eÙÛ³·çsjªïß¿rÿ~âË—eº:†ƯE44„h4J3.®²B,åImṛë̀̀bMMi33ĂnƯzuë†7;Rtx4Mpú_Ă”’²̣‡Ÿdde¼ÊÉ)*xĂ`‰IËÈ1Å%X’ ¦."ÂdEˆJ#ÈÚÚZAÖTUTVWU”—•—”¾Î¯åpd••U´µ4u5ÔLT-[‹[dª0ÍÄdwh̉SSă22̉³_¼É˯`±„äå™’’t))„¸0C”ÂBªå&CG¨¦–¨­¡”•“µE…5EÅUoßVå¿.gWƠ*)‰ué"¯®®£®fflL76Æ;©àKÄYLKscî€R´†¨„¾~_î€R ơR ơRÁ®®IÉÊÉÊÊÊơªèÍë̉¢7܉LqICTD„A¥P(TaáZ̃Å\8Üÿª**jØ•å¥%Ue ¦˜„´¬´\'µÎ]t5Te¤$QϪªx™÷üyöËW%ùý²rR\LHJÊd ‰2„D™BBB˜Fpj)55$§†,/¯­¨¨-.æsjªÉNrty9VçÎ ªåơPO¤>€Oz[V~'6!ơabñÛ|UM¹ÎªÚ",9•nÜá«ZΪ$îßOÍ{‘ñ2#µ¼´XU³«E3]MµWb’,,|pÿÁ„ok8d7}Qmmº¦†ˆnWnWî÷é¯hºˆ ¢̃\NM­zô¨2'›­¥%ajj¦£eC¡Rñ̃@ê€$ÉG™9·nÜÈÍ|ªÖµ»–‰¥¢®1wh‰eÉ(væz=lË âü¤”Ø›•e¥¦¶V=tz;­rơÓ´ˆ˜ë_¿®¶²·¶böí+Ü·¯|‹YZØ̉‚;°ê'¤dç$^»Zú"›Ư³§eÏÁL–4̃öH}Đ₫•W²/Dß|xï¦jWC½vfưƯ¾Ëj(¨jqÁøÍÇÏï_=G£ÓƯ\]Ô»¨´ƒ"WUd^‰:₫ ¾ØÆV¼W/QmmÙï²*Êô±cek”ÿzÿÁCÅ•¤›«“v¤>hoj8dø•˜ä{×m¨w·à­gƯ¤å•ûyüÈyUY~aϾ’"QJrÚ\‘kk̃F^KH(9RÚi “;´u“ëDûñG^ø¬bß9~"̣EVơHá8©ÚÔçyÇïSPÓ0´²W3́ÑWU„Á´8Œ;̣87wï̃}::ĂƯ\ÚD‘³ŸŸƯ讥¥˜£#sÀÅV]dºûP)îH₫ëKÿûßQe™Áƒ¦âô?¤>h“®?xtí́IÛÆy·­5—–Wr3µ¦ºú;vṢ§É?´̉%Éû »ÎŸ{1z´ôÏsÛV‘å:ѦO—ăpÈ}ÿ(( }~‡́€ÔmÆưỒÓĂzâ2É· F̉h½\G‘dí–]{éT¡‰ăFQ[S,IM=|đàĂÉ“;ÍŸ¯Øv‹L¥RÆăûwäÈÚÊ Ú˜1>Taö ¤>h½rß…í̃ÙỜzלö±E•óđêê…hëèº tøî«ôæí;Î u—Z´H¹Ư¼sFŒâpÈƯ»×té¬4`à$́JH}и•‘’d?Æ‹*ỖƠ¦ÑúøáeæÓU«×₫ôÓT qñï³$yñâ†ÜỤ̈¹så¹q´™J¥L,›ṾÇ_¼§MWÀ>€Ô­EYû[₫2°°ăF£v¼™jÚ »Ăöơ·±₫ÆK¯ªx¾ù¯ƯÆK9mÇEÖÔùy®Â»ôơt­{ Ă΀Ôßßóü‚Đí!vCÇ‹K˶û¥P„́†Mxpí́£ÇÇ wÿfËÍϋٹọ́t9q±qÉ“É?Ê„‡gœ82Ô}v1¤>øŸf…;ää9ƒ*Ü>SŒû8g>Œß²c—÷7¹¼ç³´“§#çÍo‡Gu~†««Xl\Ơ=ë&Nœ ©¾´œ¼Sï0nZ‡|jú¦ƠU•»öøaܘ]PNö¥£Çøû+P(”Vds3‘ ̣àÁ£GÏÄî€ÔßÚ«¢âƒ{v8Œ™J£3:f´M­SîD:~r”ûZDQQBXØơÙs¨TJÇ,²MoÆ¥K•ááÛ]]§`§@ê€o‡$Ƀ{˜Ûa0;rºZØ]?½ÿÎư £¨rMhØ©1ădh4JG.²½=c×®7É/è÷Ç®€ÔßÈéËÑẩ²ªZ(EûÁm73ÔnîĂ\¯\Ư¦¥ÅPíBG‘=<$6nŒÑÓµÅ=Üúà[(¯d'Ü0̃¥àai˜œ>éîêÔŒÍVUdß¼™7¾"*̀ÅbQ{˜Ë^¹zĐÁÁƠ@ê€w1ú¦¶]D¥Đ4±:ú¿A±»ïú­Sææ¬{:ß?ÙØP×­{Ö¯oM¼tR|ké’Œû8µªUª|“ư¶¼F\VMü{œfH£3U5nÇ'öîiÚ\m&>x=fœ ̃l ¢BêbÉ®uw@5ú å¼.¨¬(“QP₫Êv®/ÑñÙͳ ¾qÈëßöæßÙwô–ĐàŸÆ(Ó‚RxdÎÚ[„Ùü¨~=¾KY”Ôµ>}̉\©ïu~€Ô-«  %)ơ5-T>üsÈŒCÜ‘Å1î2'Æé‰[elöÜ×N¶a’û¿Û9/çºyvË̃›Á{àđë­_læy®ŒÎâ>̃üÓ¸]%L­kóæḥúú|#w‡ûÉ-;Mf«£Â}Ä-ÔÚ>ˆ;2ûüOăªĂă•WF̣¦w±t·ë©”uúÑ™¼‡nÁq¿xèư‡bJH——5_‘‹deç3Úeí̉ÍƯ.k¸DÙIM]µn©-룳å_:.ïp?ªééÛU¦̣ypHÿ¡~dŸ½Yxû´´Ơ™úÙ‡OëJɺạ́åÓư£ăæ­>äüË(₫½%8É¿ñjóë-O#Ѹ5®¼Èg¶úF¸O]ÿ̃‚5ܧ3øŒ¯™®æKÏÿv³(BT!!j%›Í 7Ăª«ª¢Ís—̉¢Juçqä3m-Ë́f_Y<÷Ú2d¾NüÈ7/rư*ûº¹?·¾K\7ơñ¢%§¦Y"¯Èta6»²9mê–i¤†Ÿú¢àåk('‡ÜwnüdazVï§¾[VCÁ¹úN²&6'¼É®!Tê¦éỉæièwăovÙ½Ëü~½˜ư,Ê₫®Âơ'¥_™úª«) È€Ô-KB\<ÿƠ«ÿôRvø̀û²Biʦí?J¾‹ Äđ SÎø»íKÜ;b|χ¼¸NÏi¤°œPª?Û®&;îZ !¥¨c®/₫¥%‰›́Xxạ¯·fûî92/×?4› †…îâ_3†dÊëv&n½è<úïÓë]›«,́²"QfóY"+³¨¹ụf„ôơ]ê¾á„4åÉÔ µ OĐÅ)÷mn‡j˜r%÷ĂXV¥IßDTº‰1¥^³̉¶´Ä{¯¨.!»´ ơ@ SUQ»û_.[’´møÂĂ/ÂvË…–ÈƠ;u9K£t”¯Ïï;&‡̀ ™¶1ieÙ{aÓÜŒ_ëµô!!8[OŸ`SøưƒÑ»6¤»jÊhwưçầ|yŸTÛí="÷pöùmƯëB}À‡CÆizpد'XhK§]ß½hâ™î³Ă<ß«÷ï?KßäÉt’k®"+)iß¹“̃¿¾¡ÁKŸơ߯1ôÚÖĐw™}"ßtX₫l”ÆO—ÖùïL/̀ßó˾ 0îï‹Xb+ÅMàMøRá±zêæm뢶m l³r±×c<~ºÊw{X<÷Y‹¸êɦ_÷½#7—WÇ>€Ô-K[M¥º¢¼¢¬D”ơo¾×dd’v³‚èºLùgäăaX­½{úĐñ¸jZffu/‹ ;ñ Ê’Î… ?²x/!*k»âđ£Ü”ÉMÜö¯ûçw®Ưó"?̣ä~uß®&?®›Ơ¿D½O£øGÊM;z]zw$[„`iº»5ºB§¸íöÜr¢øIxhȵA·”e‰J†{Ø‘}ƒµ:ưÇ®¤W/2UƠ5›«È**=‹‹#ÊÊ8,Ö?QÓ©Ï*}9Û/½£>d,™g±~;¯¯SOIÁDûeä²ÊÛ'=÷§˜ ¶¬¶e䓹ö:uu“̉4Ú´‚^,¡¤×èB uEä´Xü‰R]¯‘!Dá˰¿®üưØÅ.,¢œ®9~Z̉yc¹f8,óiZ±¦¦*öA¤>hqª:]Ÿ§>Ô5±ü78ê®S₫ü,´ÎöăgÚ7m,Ẵ†?1³‚í´Ơ¶ïwñ6üçLâ¦3?}= ]WŸµ®>ÍP Ad¤>r˜2µ‹l` “Pam-öŸ[33 4ûÔsÚ₫ÿ¼MĂrˆ-wøÄKÔfª5i¢”¢gà(Ïæ~ב$ơÑ£·NÇc@ê€×϶wØ=ÿ.ơµkyiI J*r²RÍØ¦µ¥SØ̃ƒ_“úÚ™»÷„ơôD™̉(R´8ey9%Uͧ÷ïh›X ‚ˆ½~uâÄIÍÛl'yu É›7Kü^GưRd¦7J€ÔßÈèaƒV¯₫£‹®¾³£g’Ç·.w5认 ×́-»¹z­Y»ÚÈHôkÎîkN,ëƯ[O\\»R|#tmûˆÈ3‡́=&wä:g§¿|‘éë3½%§ÑE=FÚï̃suÆôvXo ^êư©¾)c}Ưü7ù7Âÿîå:²cV º8ïzd¸¿¿_Ë-BKÛ¦çÛ¼°°OOÙYäŒ éK—Sgú̀Ă€Ô߃mïÊʪ»‘'{: éhÛN–_8ºßÏ×A§·è‚,,†UUíûûđ‹‘îB&¯re₫₫û±¿ß\ª0¾± ơÀwâæØÿbÔơèă{mƯ;Đ%ơ+ßd_=s̀ßÏ)*ú gk;îîƯăÛ¶?2Y†Bê E~ôHêÂ…¿yÂ4:v4¤>øízwQQ>¾g£Ă˜©4ºH»ß̃ÜG±é)æÓc{ötWVÔúc͉Y>̣ Ñöü._~ơꥯḯ_H}Đ*èiiøùÎÚüWˆ®©•ªQ{ƯL¡Ú+Ç ŒŒfx{}û¥«t1̣÷ƠÙºm½……hϬöZäªJñ¿¶¤9Ø[÷ïo= ©ZQc®¿odÔơ+ï´sŸĐ₫NÄ*yñäæƠK̃Ó¦Iˆ·ÄE£‹Î˜t÷î©M›§zÉ̉éí­ÓïÎñ;w3§ÿäOaaŸ@ê€ÖÈÁ®wß^–»ÂPh4sûAíă$´Ê7Ù—Oq:l̃ÜÙ­a}zöÜẰơđ‘ÍNÅèÑ’BBí¡ÈÉIbgŸzNèma1ûR´îaa¯<+*+×®]+L8₫§¶›ưjó.;àä2((  U­…J5jVM5ûäÉm))¯~₫Y‘J¥´Ñ"?K“=ôẉÏáóçÅî€Ôm†(ƒ±pÁ‚êê꽇”•—[ t§‹ˆ¶¡ơ/Í~u1ÜmȰ֖÷̃û§ÑƯƯgpjjNŸ̃—ÿf̀(iq júrç赨§ăÆơ]©Ú$öĂx̃{q Ég´º›w5ïƯª×¸ªøÚé£,1ñĂÜm̀ÚD‘©ÂÂC‡zsG=»²ơl÷­¹5'Gîđ¡d--'§¡¢ØMú =032à555®Fß¿{[½›‘®¹0ÖJVư6÷æåsBTaWg_Ÿém´È=æÎíAr8wï†_½v_¯«˜ƒ“Él%ñú(YüÜ…'ÎN=ưüƯ±S ơ@{üÔvqèǸăÉO^>s¹²¼\ǤG—®Æß₫Ÿœ̉7É÷n=–ªÓ­»ë{‹6ö>@¡R-,sîxNṇ±£s_•Xö”´´¢‹ˆ|ă(ô,]2&æù˼2k+=+Ë!Ư p¿u¤>è0 tµ¹ƒ`<ưyv̀Ơ›YiOTT•4u4º̉hÍ|·w AT¾zñ4%=å¡0fØƯØÆº§¹öˆö]de%ƒñ‚ñ‚·Ï/_¾˜˜ôBV†¡§Ç4êNmö“kkE¦̉>,HIy£ $ÖẰÈ@¿Ÿ†&ïv¤>èè4»¨h~À**+=IKMK™ư¼¸đ­¤´œ¸ŒŒ”ŒS\‚).%,ʤ‰0?8:”$k9́ÊZvEyiqEQQqIAÑë×o^sªÙr*]ÔÔôơtTơÔ-ơÔ ·³È̉2]œtv®¯‡“••đôéìç¯r²K˜Lj§N¢̣̣ I aia1!Ê"™¢µBB¤°0Y[+TĂª©.+ª¨¤ÖV½}ËÎË+}ó-!IëÜYF]]CGÛ\·«¬nW¼£ú>K”Áœø™yª¹jx(BTaªÆ Rq_ïB¥ªªr‡¦̀L¥̣:Áâ×XM ơ@êha4>Ô©©ú©ú©ú©©ú©ú©ú©©ú©ú©ú©©ú©ú©ú©©ú©ú©úú©ú©ú©úú©ú©ú©úú©ú©ú©úú©ú©ú©©%@ê¤>@ê¤>@ê¤>¤>@ê¤>@ê¤>@ê¤>¤>@ê¤>@ê¤>@ê¤>¤>@ê¤>@ê¤>@êøÿFrÿiMAÁ¾IEND®B`‚nova-2014.1/doc/source/images/PowerStates2.png0000664000175400017540000076145012323721476022310 0ustar jenkinsjenkins00000000000000‰PNG  IHDR§}¾ç½{ pHYsœœ&Í:4âÚIDATxÚ́]\ÏŸ“P1À–CEÁ¿”"¡(*&ÊÏ"Ä1QT L°›0±E ;±,lA¼ÿÛcY.÷ăïûÑeovvfv¾ûf̃̀μ§̀ápåʲM.ó£·¡N]–¤‘?¹v-–Àđoß8ù‘Ô·‹ÍZØbïå¹QŒd̀_n«„"ÿÎaI]ªU«æ»ºÎ•úv±Yçưá¨(³_l)QJ₫XMFq^mv•Í&Ê‘^"-3=q8ßû€c®^¡ÄeË}§O ‘?‹ûp8oX¬F¸ƒ„ÀNÇG¾†ŸdKme¢‰˜ PƯgp³1=ưh1ïÁ•k­;áÄ¡ª®K[±| Å_Đ"_¾ƠkêH&7âĂ lỬ¢y®®®+û²H ­D Â:¤º<»Æƒ= ]›Ç/‘yy¹ÚÚ•%’T ¦ 8q»Ö,†·³ÙFÚèz9b0Ë5–8Iù…Œ«—øđYưƯ£ ;T„Ô%o6¤hÖ¬]âÑw¾ˆ{đ·bÅFMZù­…s8B ··w_{çđ£K[ç EN¢Éƒ£ ÇŸøåG„ †ƒ€hø°7‰E\ÖÄ©%°ÜT•8cṬÙ¬³Í3á¶Ăq8l]¢9IO?/âNëá³éMwk©È`È"=>OO—D₫€'8†´µ€ăơëש#àhô8&Äï]‚mÛÖ|l5¼å›ć Ϧ¤®µ3ˆTî˜Ø„舠§b¶́éj!ÑÉ»— ‰=ç}û÷቟}sÙ˜,M₫„Óÿ–¥Ú4rÄ8±u7w̃€wß̣¢̉9ă=§t´lœ¾s8ªªåéå<Ơiđô‘7.?pîáHûV¸6~ÊKKç¬^½6%åJTÔvGWûăqûEgí8̃äƠ׺ï¯ù¡p*¤YYˆS ·mÛ́â8)×Ïîö$~Aˆ7u¨ßÅËơuÚÛu¥«K¾zÚÚºIIi<‘í]ưñIXD4ñÓDÓ>6‡l çyyO²±%̉¼2§oP­ fŸ›ëTn²a«¨@¡•(èFŒVuUà8y²;üƒ“(¢Øb*-|"z^"̣}˜ă«”¼Ü!åÔäXFúËb fÎ×€rwoD–É+{O9™’Lªq›¸/‰³4̀îx”?ªqï{ä¾_@ég˜ÔARe,3-”Û˜8dQđ*đ¿å­̀œ“͈c},—¿™8;n|eXϵèeă ³ˆ£Zaˆo×EᜅÎ-•F‘?++foÊÈü‹³A]ç‚Æ“Ăáí̀ùÛU-­¦&oH£F̃¼y#0o₫ÈjjjÙÙÙ #3Çܹs‹SGH]“&MDÄù₫ư{Í5srrªT©"åø¯ÔÁœ<ÿ   IÉ;wî\·nƯpHRÂ;xđ`·KGOvY¤f;yÆaÛ·oOHH€á¾}û ñÄÿûßÿ₫ Á˜Œ®:D£Æ2̣0F¹k×®̣Ê_JJ Ă˜zzz’ ’‡$Y?!síQVä•̀«t‰RNLLd™ùDZ”Yư Lë/k×®•(>óåk’µ‚?ǯÜmØD÷@̣ƒ›ï~ååưîÔXèBˆ@v):pr+ñÔ(û¢SæÆÇRxx—Çø± #ƯºjÖ̀™Âb½tCK·úå{pKîï_µk3Ióæ…ă.Cí˜Ä<¶-l¦Ÿo9àï₫‹·¹Ujy´Zex’ ±;<'¹Ñc/YÚÛ¹ÈP½c×S¯¡àm^›wî7´îGéÚ¤°øôºĂè;zÀÈO^ÈR©äQ!ª•«B̀ÄQÆ)đ̉e½Ü‹tÛ½¦™‘ÅbU¢‡ôqññheˆ? O`¸Å`ç_99U È1ÇÎđG¯z₫ç\²|¥Ă†ñ±01Œ ä ŒÙucNnn•‚eœ{œä!OXÇ’nj6kÉüÑ$ç/'UƠ ñ-­d±XôË…ĂÙF…ó\Ûb<ÍÈÖƠ,²,ơÑW^Ă‚ƒ~Ñéđ<§0̣ÆFƦ»Æ9&¦t<üœO¸¥‘9Ă#cƯ¦-“Æ‘üaJ̣‚Ơ´ÅÚ?“çJñáß̃ njF6b}Ơo8,5ăDqd:O’Ô‹‚÷3ED#»’k~,\ØÜ4ºô!ƒöSuÚǔ蟠ÅïP¸ï->ØÎÖ/'Æó.£@‰ù#È#RÑ “—•ư«ZƠÛwuêUX‰új£×¬Ûê1)ẹ́̀*m&̣'µlù>£ˆå°c×_̃<±Ë¢-ç5;ê1$¦Í–F]áØ©H?G’oä‡éc»5G-gMp¯ÅÑ8÷ô×̉¡u⯠Ø4£O¶P`8™Đ£‰[äCHv× Kù‘•]£Ú†-;Llÿ#_ù¯QƒØ̉ơ²áꆳ—&t7[3ËmN ȃÁJw2ÁÍ+½ †/‚4qUPi›¿*–<'çö k%‹Ê)ܦ$Á"vªÄ7¾!uwá•wIGùÔô[OZ•u3Xàüq̃oîèÈCù÷¢gÙ¦¾ƒT;¸rØ÷ío‘c‘åñùó•*)ư²»ưGRb¦̀™å£©vz¥ø°{~ÿL»}đ”IÇ‚^´›̣jÏhHG̣à¨V­:yy2rD¨ÇÂd8¿z…5¡;X îR¤¢û„¦n? Ó`Û¦™'·Ûéi–ˆ₫"CëLPÊ-IßWn¸ù!ñFx?¬½è#÷§w<Ô¥z‚7¹Ï™3§0¾R[">‡{ׂἑ'ŸmƯ¥g-"ÙK¨à¸Ddŵ¿o¬­¢7¥ü¾•'Yçaƒ¹ "÷¥c‰Ñf?¢o7¾đ«oê¹#úƯúyp~èj,¶₫7áKSfüYÚ;_ˆ‰l6íÜóåƯ¨.¹Î"cLk!«ŒËŸdïë¯d;†>¦ƯA ;ăóƒˆÖJ’́Ö“JƒUà?Đ`MËèÿ‰Îưê±ưz£eÉ—¼¸§±Ÿk9bµ AE—)úÆ= ±ûÓì†UE”®"Ù‘ÍÛÀ¶©£|?S(©=»v.̣D±;`¸",̣Dy2+p£Ôùé==†» ‹9^*̣„̣ÇƠPüö²’Ë“ïûÑ5ÀLÆä‰~N₫qn ÎÓ,&1‰1µÊß+Ơ×aßs’[pÈ’̃£&3‰̀¼À:Ơ₫>˪$6æô)^AÁÁ¶.^ ­Xüj(ïæ@GĂ.]ă ¥¼÷8-¯&×&Đó v¶Vj W ­Ư°Ñl#iR5¯¶zMaÉt V.…,ỸËyi_OUØR|?_bƤ€Åǘï†: DøÆƯû•ê6+èAOÔŸ?ZÍƠôj 5ë#ºÚqmâ4UËרY?¦?¹ÆpÙªP,ˆœßÙúÚuÙDËu₫³m‹æ…µc+j —{‘9*ñ¯§¯Ï4æÅÀ,2IÙ ]áwf=AäQđ˜èÊ0wDæÏU¶ø+iT©R…ù'§£GöíÛ·¼?r…âùN>D~œ*-₫¤̃VÁù ÷ññaùüùó¥UNY‘WÑø{úôéÛ·oµ´´ÄÆ̀ÈÈÈÎÎÆûä ¼ÇEÁŸĐÚaM“4•#g̣ l¿ÿ₫·Ö2äuëÖíܹsqqqvvB?,R¦Kx› Å®̣‡É[¾|ù´iÄXÈĂJ&æZH±yóæ±cÇR䙘˜$''˼HK—.Å[“Jbç_Ål?1y6mÚÄ;ûûS_ŒŒ®]»F†É>|8e2gôèÑ<{!ï¤T$̀Ÿ²²²‚?é¡««K7º“’’̉¯_¿#GĐ#¬^½"/((ˆN4}Æ ;qBÀ׿֭[Ă]Ô®A8§v0aéWŒÿ¤DÛ¶mƠƠƠñ60:y …wï̃¥“‡#àÙ]‡A!µ%33~>xđç÷ïß7hP8Ù6jÔ¨G`Qäa VŒß¥GZZZóæÜ)º{÷î!Af̀Ià>ÉØØ t„ôbÔ&SPªW¯₫íÛ·̃½{GFFNŸ>JçôéÓt}^ èh}}}©½¸—.]b¸SàŸæ:3è̉à„"·nƯºçÏŸƒ*?»wïNUhƯºu±\RÖH¿ÿ¾œ"¼~¬2eʸq„eæăÇó«»Ôf]€©©)’BßhHíG„8Kù̃$€j`eeEé#ôK]ºtÁÍ&ƤI“¨sÑ̉ÀcæÈ4hĐ„ŧÈCäÆkà^XLjc0¼4˜¼}ûö :TjRå? O__ŸnC0;;̀¤“'zzz7õÈ ợ̣›|ôÉ‘#G2ß=JÁĐĐÆ‘tm³D‹øöœT(₫àÁ¤hÍú÷'V¯HA k×®ÔÜ©¤Eenp¾"`̀KÿéăăCæƒç®€€†7öèу'Dà½üq9A*ö^₫óæÍ˜¦ø›2ÅuƠªqnÅä ÷S©}¦½±’‡áLÊPß®ø ƯÿàäÆÚă6ß¹~ư)*â”3—Ơ¼5BBÀf³ J^çÀü–̀«a®¡1Ç çÙ¿_›ư©úpVí¤i?ñd¼₫¤ 7ëđ„ỂÄûßüÇq`½ĂÙc₫b&Oü̉¥ánPÛô"¼«ưL@Ơ-±ïJ¤\¹k÷öÆ^SB¹Ÿ:~THuô霧̣Ü¥®®₫íÛ7eÇb29ÀJâéÊ¡₫ISµ¤~ëDc̀˜1§Nzưúµ÷JjBQ̉,—ß$̣ÉJ¡uëÖ̉åxưúuggiö§_»vMºsæ_đËå÷éÜ—₫₫ư[ºoƯº%ƯFFF̉mcØÎ—×öS:ŸRû=Eä~3ÍâtSÿ¸₫Rê¨UKâ9ăÇ‹vÓ"°i‘Ô¤œ‚?F³¢¤ä!©–{₫@;‘_ÉÅÚ¿>}út=¤ËˆrÉ(–6₫ÅÚöS(0y [>xđ€>1bD«V­x"y¹¹¹̉­ịV®\éíí-đjÆ ±«±ä©©©egg+ø+:y:::Ï=ăăååơøñăcÇQu-)èäué̉å̉¥KT‹ÇŸ M³fÍÂĂĂyÂeH^ǺÿxÈÛ½{·­­­ººzhh¨°ºÆÍ#D ï̃££}ûö”çFDú¸|ùrÇGéë+Ø9ö ©h?‹ hH©s;;»¸¸8aÍ#ư'ö;Lµu*Æ¥ gƠ¨À…††₫X³f ư*E.Ñüɘ<úÎÊ•+#sWeÊË¿>~Çä¹»»¯]»–áÆAEûY†€3JêhI†mW™‚0¯ÿ:@Ï>̃2Hî£E1ÿ‰J‹<Œ(;µ+É(Œđ|À†Ÿ›fm¥†Np‹wïªm®h?Ë(ă² ;ÑœB ©tư₫O‚Í÷ŸElVÚùÙÑAb[„ĂÍ»ógÏŸÿnÖl²ÔÅĐ×t…"´A¨N¿‘$»Å%L0©̣w.Æ« »­©©«.ÿQ₫V¯Y8Ù£>&‡ÚE|û–¯®>‘Éír?*«ÆạÍÁÀïØr•¢0 —Ûh´ŸgÖ¾­—Y‡&ÚÄâ‰9Ni˜µ8yíO¸ÈƠª4₫¾'°Ô­xÿcRî)-;ض}1Ç®®®D̉  OÈ•)(́;’»œÀÑÍ… ´hviM`62ôdÆŸ*wê(%ØÆØ˜{e5…^ïø’•{}{ >N1‡Y 2çngA¤k(•rŸ˨bZíµ9̣BB˜…¥¨‡ Œ=yQ·#ͽÖï y¹uTjüï\Få©ă—Eö9ª́xb„CØLßü´Ÿ&3OqȾ ÷ƠvUÖ ̉® &˜¼´ơlÂ5‡Îb¹­¸ê­O|^ôç:O:¢`a)àK}Ppˆ­K!©EÈ#&~,T*£‡;†us̃‹®§¶;BL)¤™†Đ4Iøăó?¦B{eø_"ê\­hä2 Yܾ€pƯ:Z¿ œ|à„;‡e8…¹}ƠªS¦V³³«¨U~|#]«q zÄŒZ^̃n}¦>|–WUCµ2wÄF'OhŸúă×¥³ÇS3¢}êЉån+˜øG”Ÿÿ±2…zÄ£…Ó3 †¬,n…\Ï«b8/·‡· d‘¢L‘G¨”­t$¿·s?T8¨Đ ₫ÑB$åz¸Ü/o’‘–E-VEb1?Ÿ£¤ÄB4ùĂ­(̣ág ²áÄ\¨ÛĐ@†Ä ›Û±/®ƒ…˜•Nñ[CưgúIƇjKµÜæđ¾2â™ơF¡[;ˆúú#sƒå?%%7¬€¬\|–ª÷AƒƯXnáäÏØØ?ƒ ½%ij’Ôp*̃–”̃L?$¹ü[Ånd†F,TđÍÙ°e¹–Kï™Ưiç½ĐLn{5xđ$Ñ7†„¼óơa¢̀UO¡,¶ç£“tưZÅhH]…Ä×¾¯ïœûBÛ´®ZêäưËóg®W®êܹp!Ó̉¥f̀˜Íđæ6­½x‚ƠhÑr„üăßÿ́ÜyưgÙjI嘋-Kç)ßÊ7”Û Ë72LëÛ7Ο<ñÑêÔ%´Ù̀OL߈ÿù‹øÈƠ«#UÁĂ\&·j×’̣va7¾W­*ªR…Å<ơˆ¹–«VÍgn-7O‚½6¿sÄG^(̀ “Û‹™»÷̣Xl. = 4ü­µ×seü›Íf{]ŒóíZ-Ʋå¾Ó§…TÔö›xbb¯I9 ¨% س8œj…6¹ßŒÖ$}ơ0Ơ€swqé™Ùû3„Í¿%¾wï>ÅÂË—T`₫\¹Öº³fñäS6ƒ¦§Ÿg³­à(YÿWmäN ]t¶åØƠƠơöVÂ;©OS1…À¯ex¬Đ2[Ñ× B^¦}VQ«Eaøê1I!//wغ+±^· pcßWNRÍ ¶(‰H¥¿zTT¨»²o.Pb‹È£Îmơ„co‘OÊÇ_ÂÁơ]ó¦$lŸ»®i-îÍ¿2_ïˆïÔ¬ikFä˜ØpÓn^;ưù9v³n$ÁDÑ—&Z9¸^Ü]kÁ- s‹p®*¯'[̣vlJŸˆ6-FÏ“ØÎ5·1l“7†1Z̉¸ó0·ÎLk‰²¹˜,’<¢=ç™ û–lMVÚé%02b$ô…-YWæ«u ` ZN¢_ơ:Ö“¨ÛggƠë¶PpY…´oLª˜ øíÂU0pCơ3˜¶ŸÔw¢\rUÄ—k±₫’÷Äá¡=ê`'KÂÈS tæ_è6“)h00;Hÿ)lø,YĂá̀ßn‹ÈÉí̀sß´iv (é½<™̣˜'₫퉰d篡ċ/fèf"ïÚµ‹¾Ư¹lbüøñ̀ù“^°”MM—, ù@L&ü§TØÿ Î5jÔ`î¨N~íg‰uÅé̀#3oĐRRR5k&u©rrr6lØ $ƠJ–?~Hïß¿e^åơû_—.]¤¾÷àÁƒƯ»wç1ùĂØ)®Ô½ Ă˜ơë×gh¸° ñ÷́Ù3†‘wîÜ)uF¼víÚ`«̀„cÙ²eRóÇ^^^̀­N–!₫™óWœÚÉÈÈpuu]´h‘·¿yó¦äʦ««Û¿ÊÎP™à¹±*æ6nëƠ«‡ êàƯë̀ S·n]́å]*pèĐ¡ûöícr»ó?¢qö́Yh±ED˜6m´RX(-q₫¤³4&”5$ ïơë×7fx#w÷îƯvíÚakKk×®uww_¸˜‹øúơ«†††À»@Wz₫ü¹£££¤ä-_¾ˆyÿ₫½0̣:tèpûöí;JmÊ©üé/” aybÔĐ`"5ø‡"̉lè¢-Z«È1yGíÛ·/½A™̣fÏ%iQ<86hĐ€®UzzzbđW¯^̣Pñ́p• ₫˜ËÔ8< L̃È‘#é­"¦¤ ‘_.qeÊê ?̃ÊÊ ÿ<~ü8đ7}útĐSzö́ äaU˨hX[[Ÿ9s†&ÂH:³^½zyxx ̉tWRR̉’%K0y€N:•ơñlNØUæ  C-@Œ A°`TŒ›DC@êǛ̀ ª₫ÀPé¸r<{{ûÎ;ƒ¸ĐUAh}}}DZ½sçΨQ£îß¿o€ºº:–¶½{÷N:>Lï;¥s›]&ø̣ø;תUëË—/Lnf¢Åßß?((ˆJÙ˜uê”Ífọ́Z¶l9aÂê§ %7NNN µÀbttôÆëÔ© }ÿ₫ưôéÓ”¥­ùóç7mÚTYYùçÏŸ#FŒ °µµ…KĂHTùÑk¿~ư9‚Â33$oÍ5ÂL´yÇÅĐ́ƒ¾đñăÇx*@àË*7S\ríÿ(̣ñ•̉“É-Đâ₫ŸjÙÂ&ä²³³©iIºXß¼ySOXª@‘Ê T4iBƯ{ưúu‡ §NêƯ»÷Ë—/µµµá'G]‚¶qŘ<##£k×® ́,đ 6Tîù“tÖ"fSésʘ¼Ư»wCˆÉăWvö¾yyy˜HĐ\àˆÉăG $’&¯ø«V­ZVV–D·€Â cI3Âß1’““MLLDO3m ZXXHç–§t!o₫€¼+W®€jÇ\maHt“TK‹ ̀è $ïóçϵk׆¬[m@èÄ·oߪ¦‚?n³Ă?‰,ËA¯½ ¥. ‹‰É«Y³&d;wî,›ä•“&M*‰dñàF ưŒ1t'Wœ1sæ̀Å‹ÿ+ú‹¤`H -@eèæ †:L´e₫ !yèŸƯ¿9`Àæ>Úu˜‡ññăGéü*øă‚>¤“?öíÛçîî®à¯¼BVäÉ•¿§éT*\ ₫̣楽»[»q‹YÿÂUhÂLwö(!KúŒ̀0₫›»öÉ$̣ÛO_?₫©\8{pï­µe1Ó\½~£¹#óG++ü†¾*Yǯ­g&Đ&7̉ÉCF„=*\¥“':>\¢W4ytặ0[kF•é!́¶…˜?M€p:y8ạ̈ѽ“ƺ”i₫DXYç©1¯§ÿ4dWg̣©ë{¶b¹¥A— à`Ú"UÙøÍĂF5ÄǼ̉wXđ’¥~>3ËđÎ9ù)°§ó¦xí7u¤&8$Ú²¶h¶ç,âC¨¾¦Z¡¹î»÷ơÛµ“%ËWÚ8Lv¯R%̃å«Ö¬³²-,~=-m†L#¾£ó§¸uïAǶÄ(%xé²̃NB{2%ee†¹÷vö™üëƠa±&"´Ñ–æÑ&¥ˆÚw?–º¶Kkê…œ„ü¸\CÏÏ3`áø™³u¹íºöâÉưÎ'äÜ^Í\-Ú0Ç¢Ï|2ÚW}Me«B§yy‹?,[ƒ´í9º½´Í̉ùx2mÉëAfMëñ̀12ûÆrËÈ_ô1*pêèˆ>©ÍÊ¥dd ₫L;›:Mpî |D|«ÅÄ´ GcéXr5Û–Uz₫…Mׂ‚ÈdÖ6©Ä-›È@©ÊÂT•ôl¤Uuzíäî«©KÛ¯ÍƯ1l|è æ̣gk¦] Ư§÷™‡fóŒªç|üYEÔ¬̉̀¢ä¥9¨o=PDüq4̣î§\hclÁ¼À""P®üăƯï" ¢Yä=½uE·cç’ü7/î]h6øvƒÉ£¶V2Ô"Œ—iÚÍÅFk̃´‰ˆ;³w“W‘q̃h‡á"⟈Z¯7½p§ùȽDD₫_Í"?ß¿zÚ ‰®Ø·₫_3Q˜Ưáz̃Ü%3CzYˆÙB]¦ü­të35â89<˜B’w›]ô™ùh™Ó3 óècÜ₫ÀÙ¤¦mx—2°8ù5«ó¼ÚŸób́i^“‚Àø F ‹œưæa5#}zH¯Îí%\k̉²-_ÿvÔ¬Æ$Í„è­3¼§0Ëư‘ZC=Ỵç~̀;ñ()…çK¥ÈfPwS¬Oc•́}Ú^];‹hÎß~¦QŸØP|åØ~×ÑÎz¤f("~̉ÓU«ƒåsû6{{z3#Sơx"r-Ñí5Ôç9À’0F³ûÀÑÖ&„Î’ụ̀‘µ±¨ßy®QhK“ă÷Nă¢ç1I`̀üüü;s¹ƯùöƠ3}}P1È“÷üuá`¨¡˜ÎÀªw#’̃hF›ZLu¹₫pô<Å…©L¯@g†ƒ  ‰«e«öÜQ¬̃Q“aJJJ…¹ûú”§ùë2…K—.™™™•VîUªT¡/WđÇ…––ÖÛ·o™Äœ={ö¹sçJ«œ²"¯¢ñÇ|¡¿¿¿× Dfff:uüñ¢mÛ¶÷îƯ4hĐÄFöđđxôè‘§§gXX˜< yæ̀kkë’ÿ•Sy?~<₫üöíÛ---›6m*,fbbâ˜1cZµjuøđaj͵| [̣*ZûY¯^½¯_¿FGGc̣¨Í<èJÂ×—˜ÍÁ ´cbb† R¢e“í²Á¬ÚÛÛ»ººFDDy¹¹¹ªªª ,;vófÂ&¯víÚŸ?–aIđö||, ̣*́øȃ#µ] È;qâÄñăÇW®\9eÊ8âé$ ¯eË–ĐR>Ñ ‘̉Dsï̃½!#b(>ÛVÎĐÅ?ĉ —mÛ¶!Úvµ   P8ñ¾ÙU«VÑ÷çyĐx‚p\»vZrwÇS066†Á¿Ù¬}ûö…††ÂP’ ¡ö×đvÎ’F¹ç”˜R9r$eM>Ơ´OŸ>0>‘ôF‰l%”?₫`̀W½zu)î’.;lßQ:/¥x"MR¸¨Èö¯¥k ™o˜¦£C‡¥2/Q¡ä/00PØOan;xn™7õÊ•+yâ0¼—?DàüwA¦ü<·ÿøÁY±b>O555±7 áïÏs¤,Æ4ÿb Ö̀ ru?DwËÊĐE«Øh ï•Uñ÷¯€&%°Àüü½₫ --{̀Ø»¤¿&%Ñ]H_„ÂùL¤€0µE¨T“ÀsÉs»1¼ëáÔAă(8Ê”a½œûçiˆ)-,‰öûn§­ÿä¸ü@Ô´AÀf¡“,˜¹”oÈ®5‹ô])Ôaª8₫ª£§I₫đ1đ_%Ï÷zËt›'‰''Çr¤¸W2s¿ÏçUê²$!sVMÉKjˆƯ-âL]È“ XÂrbJ¨9ấâ ñ;<(1ó–Ø.û³¢°ƯîĐû² ¯†Í{@3 Ü(a¬̀ËéÀơÄÛ7=ư¨è́†7‰‰¹)́}ÀÖơ0~~M̉c-v­¼ª«đr^£‹”Àạ·Ú“8êĐaÊn'Ço}á"Ù,œ¤[à¥F̃÷çs—Ź 뀔tÁ@À@åÁ1-̀\ÿEn₫ï¤ß?¿ÇÈ~̣§Ä½„ÿÔ¹N@ç ¿vÿ¾å®Js /|Mi{sudjbQµ®ExÄ Êékm±Qœ_ô'–k$Q'Ù™Ơê´B(÷Ù³ç::-EK<ªle’è¡û|€½ÓáĂ‘ư{ôz–ñ!Ơ·/¯˜w&^₫¨îÍ¡Wækt X{7Ç£=ñ>ú(äY „ªq+N+₫ü }Q,ƠÊÑÉ̀ AA÷¸qăjƠªeee•;v̀5‹ºª®®>v́ز0÷ûoÙ_Âäûù 6†·«ă9Ê]m‹- îÁFäl»BÁÂÈC¤Å|B÷–Ê­)’¼#GôëǵÁ]ü*ü¯HL̀-U(ø“Ưºu“Î E··7ÿ²`rL€2"ÅÄ"7„₫÷ßÅ)@غ‹ÁNb£%Ù=aÜ`jjJÙ‘5kÖ́̉¥‹ÔY_¹÷˜ y“~#̣'̉mj¡K04ẨƯ{,z÷@7„+áSâƯGôë~§³©wü W­¬à}Z˜ú.]¿!;5#ûO>GY‰¥à̉µœô´øe ̣ĂH²IêÂÛ2vE@ûCxªH÷ÿ0œü¯ßÂß¾‹PÄÛ7µIl‡úä‰e6½ˆ=ơkÖ|ôđ˜%])(.w² GEέÅ—z6}øÍúơưÇ©'üñ ±†÷ñµ]₫!W nG“‡‹ơ dcÄçñ®~Rßçɦ<ïÖá g_EƯ?¾«M»ÆµÔ«§¼orÿÂá^N«ÉåUL`<ºç1hr[‚-Ḳ„†»J}ûx×ÚÛ¶-wq™&iij43‡c{M•ö®„³o‚m^»ùI0~ ²Bˆkjq¯o¯¡ÁÄ`V㉴\¶¼Ev¸‘Ë…⮢đæ­H½B¯º¸Ô›ưˆÍ] aå¸Ôú…ĐÏ<s=s‚I}ÍÁ‘³ÿh›uÑ×́%¢ñäk?ßÅr8çY¬~Π“È}½^•µ•}+L­£gêÓL22«œ6 ‹ơÜüoÁn9÷y·sÁÏœçîÇ{—^G1êvï1¢ˆ'±Ï?²¯?~Eù#Ääñê/¤×§ª*È#Cbë+âh`IŒø£Èăi!U\åZÔA¨¯¿ys±¿íËMÇgF t@wŒ#Ü–dừ¬V‘}ñ́<¤F΀̃»—̃BGE¥*á¼iÄÂ}Ú¢  ¾c¼©†Ç™$?¶$}_=¸!&rDđeÎßͬ ó/¢Q›o‰å‹ôl­pj*úǧÍđ÷bß6­¡.dßáBŒÔƠY₫₫LJ@y‚cZs å̀œ(*¢øÛqáÉ(Ëœ?—‘’i¹ƠS„ẫÚ5í<îàzEĂÊbÍĂ4Óaä(¬)IÙ…SGD˜–ü2aÓbsÄMbụ̀à˜²t®±ßÉÈÈMÎÁ™˜B//¯U«V•w.Ûº{pÜ‘ó„mk‚¯©‰&]zDvoŸGŒ¨-"„ ¾•¤˜.ÄÅ´Ÿ¹9?Y6¡¹ÛÑ}ÂđáQßv[’!´jˆ“S¹¥Đ•RAwlpá¹v÷n»ö¢n1ÂO„›ÿ§’|{$¡¹*,Ä¡Đ=36ê½c‚å´ñ¼§Û¶­€u+Ë–¿Ÿ>ÍU¢7€w6NÙAÎỊ̈/ê/mÛZ#dŸ®TD)p.ÁÈÛ5"|±«[¡“e¯V­¶üŸåßƠ?•”ÜƠ »±£V­tB±~¢|CY±ZJMüÊlÉ¥3'ô½é2.*•¸¬Rˆ±;_ÎƠÅÅđºơ8*ÊO¥K¯è.₫ă0dP¡½( @YîưrXU­¯£®´`M½hÉ᜗îvºA87µî“tæ¶h!¦¥71xùê"™µÁ’ĂÏ“‹RZÎ²Öæ)ù<4/™¥¬Uô!mô²đ5²ê±û¯yƯgî‚óiœöj%¦|²X¬·_²ØDkmYÇ çG©ylj‰ ơs¯S£a‘oàçÔ‹2¬Ă˜Èø!\Ó–ééç áL¾~ñâ…9Ƭ2ơ6̃•8ËƠ†8û{ùÎß.TÉ]c9ó؄֔ọ+LJôc{Rª‰Ül¤ªṼ¤>”t¼Ÿ '^qÚ+ƒ@Z-·Æ¯›ÍÔâ®äâ—ClKÙ›×—H|±Fúc£^ï@tbƯ`Ü–#.Ä₫»€(rtñ+‚.Tزi ‚_57·0Oa*{TwÊæÚse¥güdkVxhÖ­Óóy´ñˆ2Đ,¸Äđ™­YûÁKNkíÂpѹôw-0+_©KûJJn¬.û—†zˆ^Ư:ùp“Ñq;/ù¹k2ˆ_áă¤sÎdæYḉ¤"ŒÔ©*mDjïnFDæ v¯³+2c€ö5·¦'º7a¥¥s“U—ÇQ¥gÍs̀Íû[¼Gfí=ñܼ}SâÇ—S¨VÏmN,ëpÎ̀æ¬(2ư#—fÇé:ùRQe,}êekÏ}Ï¿¹ àµ”X³c ~U, ́JÇyG9óhé—K$O¦“G$£5N‹.|eQW FZ èBÛÜma*âT ÚpúAæ[s# äås€ˆ{ÀQ'ÉÆz‹ñkơưÚ́F E”¿dñă:t¶Ñ£WG@u¯÷-¯À‰OaáórYôÅ̀°¡ëJ6ëBQé2ê~ Íj@'rÙ–̀L9`Ù#^‰çÄn@ÿ3(] Qó µ¼Q¹D²Çe6¬é'yß7lR»ÄÆ~eÑ®,{xE¾QU5Á"—²Ö̀ØđøíƠÄ>”poÚ+äl½P먂¼‘’I³'NX¶ƯIZ&v`MEX̉Cs ·µÛÆÏávVéé„Û¬3ÜE÷C,:¾̃̀«ª"zù .A¯(£¦„Ö ×0¤@o¬®âËá)|oMeÁ¡"_7¡NZÛÙ²àgYuê¨Hï̃±Ë Î9Å{dÁfâĂhy¸Ki€ÍöNO_éééÖ®:w@x§’M¯æ_lÜ»ZIÑơñ‰_æaVƯ¸›ºlc1óÏ^‡‹í,æƯĂ??¤„Ö7öZ“ôÑƯ¤.ÄY1¤ÉÔ˜WYNµÂưÙ,ñ9ƠH55Χ—Ư’>»„Œhî¬Ă|¾x̃·i3±£NÇw²Ñ£àY»DssÿÀơŒĐÍÉyÛơO.FJ_s*Ó-»g•Vă¶đKTùI\ÿg§6f˜Ô-¥´ úïèèˆv&äϲ ̀¨å₫MAï·ÏbaWîw’ăGîEj̀¹ç{oƯ 8ÿre>7ˤJgOί¬ªơÜIáñ~Ù%ئmw–=DzÀ6(ä8'„H3dDÈQ&¥ÄíVû[öĐ) $’êx‹jƠHƠ¥̀5Cs ›ºă¥:Ăß̀ă#¼m3̉yËO?*P‘¾gJ‚8µ@ ’ wEÄohø›¡kß̉»;,K,–₫ùởl*21PÈÍ-2·ơ;?ƒíw²GµWó=Y4X OÛlL¾§`W|c?e-U₫SĂl!‡³°0°fOúÔ‹ùÜ»œ¹üó1È™< )ºíŒº:NˆæÉdÑ$R©R%I'u.ébW€Ø”µ´´̉¡©—¬¤K^̃"z_uq úÁ™åË’m¾©•••0£L¢«Ḱă(++çååŸẠ́½êdƠ«Wÿùó§lSÆoŒ̀m÷‚́¡RÚ}×¶m[©›•âפœ3=₫| ¥üçÏŸ’éưÊà5ªV­̀e§|é̉%333™'kii™ ÿººwï^@@@ll,œÈ™#ssó‹/Ê9S}}ưÔÔÔ’H¹$•Ị̈†₫ưû—PÊ2—=Œû÷ï—V]ä={—[¦ÙÙÙƒ–ó“vé̉¥$dOæÚP¹¿={ö”£̉ ..îÀƒ ’sÖŸ>}ª\¹2±ö’†···~ü8]ööîƯ;ỉ$₫±¨ÍÚÚÚ<Z±́a…–.á2<Å‘#Gbcc©È">>̃Ö–0¼Çăylܸqđ2À³`Ơq¹{÷.èô’ƒB.çÏ0vêdïñăÇ-Z´(N"ÅôÜÁMMÍŒŒ ~ÙĂ dÙ«S§4ƠX!}¸gÏ ´ưô8tÙ›”>i1pà@бƠ¨Q#¦ÁƯ½p¿ ´\*䨱cëÖ­™±™³³3Œ©°[đ3f@!½¼¼@l¨±Ă={à‰ S…®R_èIˆx~·å đĂ–=< ,pﺪªª óuppعs'"¿;‰ˆÚQăÆy>Lá^7„„ØŒ=z„e‘ÎpbggwàÀ*h‰ <0¶Áƒ ¸³‚*=·’ùêƠ+(gƠªU¡çÏŸ²·xñâ™3g̉“JKK;{–Øs³˜u)''úF¸zôèQB333,{¸¿@èO ăí$¨¨¨(777è–E‹_yG…ưî'Lö@.dO†yáÉ,{<€‘¨CtƵ#₫‰~hii½}ûNø'ôA¥»•dzGçưAn¡‹›5kÖ®]»x ÑÇø̃P] ¦¤¤P²!0$KMM½zơªÀ¢‚̀ƒÆH ƠPÑo€ “ÓK+$^6mèÏ̀“†BüJĐ t́XèV ¤®ÎÉĐóđL6À(ÆB”8I”@Ùƒ„Ëô]¦¦¦”Ú̀ó6ƒ́-Z´èÁƒ­[·¦ŸSđ$ÁŸ %{ÙÙÙ'Nœ ¼Üƒ¸̣(xđö3Ôú¨i'z[@×ÉŒŒ®]»&Qñ¯Ú)¡5 ñ+.@ö@j̃¼9œ7hĐàưû÷²Mt$₫F’=é ¼ßÔÏmÛ¶Q&₫*…Ç<ú6̉¥ú(<„ă^&ÂÓûÁCÑ—1`ưV Ä®¥6íDARÙº́á/æ ñ++‚±øÉ\ööíÛ'LA*è²$hG '§¾JÁĐ‘.¢u9=ø…ô++¿|ù̀¨x|È {#G=–8qâÄơë×—Ư”́µlÙ²äV«(Ä)†hk¯dˆ¡C‡ÂÆEñññ²M”&L˜°aÆ•+Wz{{ƒ́!rË₫X/¢Gˆ/lÿ”̃—/_ùÑB¢̣È ˜²WœÅ+<Tp¬U«~:…ø•&d.{W®\‘¹́¡‚¯đ {ÿûßÿx¢×ú²ï÷¾e%]»₫'¿̉Ăg/[éhË0å›Ó̉>Sª¤db¤§Y¯¬’½œz7ûWÎÙËW»wé$“åä&$_ÿ•“ƯL»‰¬jø₫ÓWÓ̉T”•»v2P¯Y]!~%… ÷_Ö¬]ŸúYK»uüu‹ĂÍw¿èѪåk0£áèù$­VzôÍVÜ¥÷ô4o_:íÏF(»0ÍK‡w¹«¿ââå»̀/¤ñlº́‰À‹l% á̉îÆ ‹¼dyoçI<²'tVì~Wô2uÓµ#æ0ÜUTö„¢Ûc˜§c‘=á°"S~~ïºuWÑ̉3¿}È#©ÓeOeUBY¿.Ù=iœPs!KWôrÈ#{ÂĐÑ¢“ÀqÈp˜ơ ñ\¹8b€ME?CCĂë×åí3dË®hƒî}¥¸ÑlCjF–¾f5,‚́I£ă½ûu"r­ïŒéb£́I—₫›[—ûơ²x5₫|›Y{Áƒfm !eaoöÆ»;ÙHc­K¿©é?ơÙƠ>Èt5p2jƒÏt^j‡Î\lÂL’yĐº³¹ˆg—¯øÑ¼I;³X‘äªbºă{+¦ .åË–Xˆï ,u2©w»XT:DHN«j$ »¥ ơËË„¾¦ZjFöÇ+;ëuv€sÔÖƯăîH€pzL«̉ék÷{µáoA¥F/'÷ —¯Xté,º…–:v¡/פÏáH'{ô‚ñ¿…‹‚‚ú‘̃X «’̉é«÷ztj+ðqœpùjj—Núôg—NöD?{©ơ~”¨'†®®†đóq)ºí~@.jZ ‰e’§Đ|nr¦\\đË…×W÷Ö3l ̣ÖYÍó]:âhèk XxU·Q3úÏ«w©ÔkÂçüñĂD™Ơw³hͤT5uÚ ́mÙaj[Dá<è°Ơ€¢ăFÖW(­ˆô“î¿4ï ËxậM¶n+|₫0ñPB̉#·3pK$,¼oW³Á–³jơ)“‹ø æỄŸa!¡³$[Ps¯ÛX§èlÍ=5MüàHYơ.|ö7çƠĐŸÂ}v²n|C‚Ö̉¨5nEÿ mhƒÆ:˜&z‚•s͆Æ—ªøUi7>‚xÓLê²|®/]j€Q²PA¿7¬˜[¿wܾq,)5aÚ„¦ÀyhH 2…ÄÇeÿ˜[˜rµBÄ^Emë[ל‹œ]§ÇBBX§!‰ 9PG–†à̉z¢Ñ±…ɾz“Ѥ×wÉ•K Vö„øy» 3·îå=zX*Ù8FÙ© œ;Ç!“å̃;vƠµÍ̃͹¢¨AdÊ_º¤„CRpœ¶÷ạ́a­¦Å€ŸsÂÚ è†ÅøÇÍ` ?8.']!ª$Sk#̉ơ~Z”Yâ¶®-{6ÈØvÔQÛ­hxtÇ£7â@~“Æô|n>~*ÿ%™€jé/}by´¯kê}l+5sm–̣Q¿¡M̉Ç9[ŸÊMÍ(´­@É`¸Ñ÷3y}h¤&qṃ %Óß́3¡%׳än„×íú_jÑÇÚQ&ÊŒjpϳé™̉sÔ¶n“S­°˜yJ à„ơ׆cÜ\zi©[(Ù¸qyü½è@€LĐ1.›:'z<²„“ÍSŒpàËû™Pe"_Ño„ uÅ{ÉçÚt£t$O蕆»PÜPF+ZNM¶f©‹ŸPE”êèG9¥â»çåÍËÚz…ûßöm _<Ó×fÈ́áT¸WØö‡yƠ •L;·ßÍ3êTTsxÏñ¥ ±;ô&¹Q1UUT~|~W£v±̀o¶×Tvi`¯îÅùơ²âtfWü”‡Ùñjn/R›ê åj†"UåK‡vê¹NĂª©©ư|ư¶ºzmIËfgZ! nSÛ¸Hƒl‹ÿ́v}û”Eñ£°|Û8¦ÛĐåζœ»s eƠ4˜sÙ—º Ḉ[a±Y!3e₫ {[oƯ¹Gßz Ơ† uq£·pđ~P穱<­r̉‘Ư4ÙĂ0oÓø̉£ôj굤+’–Êo%%Qƒxâç]1CP)êÓssÔ.Ăv̉¥yơx´»+ï'®-µ.§½W«^Sº4›TÍ£w}%]«¥*~9 ôNoÚ’àdîȈ¶›ƒStÙQ̉ D,œ%ô!¶„µµfKôŒJBü£ˆ^îÚëïÊ4«* k\OÈW)³–́Œ÷ßs$[!‘ñàzŸn]ùß Y9qºQGÉü( _"Ö¤¼diog‰R~œ|fè ~®uIŒ/̃üPRV–¸†]œ^ể¼ÁÛw>¢%øæî•~=,…Ơ0d·tehÏ®¥™–rÖ~`_$w0«Ê*–œ¢¾ịåø₫äñ\BL$DÅ6d KZ/5jL4¥‡Ÿn¢'æ>¶}ơL_± j6¨‡‡akĂ-†8‹RÎaP‘ûY§‰–^Ă®̀Ùöâ~÷Û}đXkc+QéÿùƯ²¾ZUU=f¾{ü|C,ùùù)Ï?‰îa§&ÚơéI¼¸Âe‚a#BTbÅëtî&:füÖPÿ™â§£´Ö×"OV¯ßhnç(º†5̣¿hk±ơZNs†·1£›——₫SµrÑĂPˆg/ ÙCrÑÙ€̃â¿eë1=:<ƯƯ˜¨œR—yÄ@±Ciô"%%%èaÄT){ađ[ñ5<ÓO¢4'Od2Ư/A%¨¨¨tÖ3vĐëm]ºïªÂÁXEûöíïܹ£¨¢oß¾G-SERˆ_ÅÇK"Y+++H¹t”bUˆŸШQ£>}ú:tHEÂÉ$Ñ8sæ̀¶mÛx¼²ü ¿?S…ø•W€4cÆŒ={Ê6ÙI“&U®\ÙÖÖöÙ³gĐÖ«Wï_῭ƒ¦¥¥•AÙSˆ_Å–-[bbˆ́È¥3öööÑÑÑfff—.]’:M‡³nƯº¦M›âU„xeG´â!++«Zµj%í)U!~Xö(ƒÍØMÈ̃û÷ï4h ©»,___́̉äÅ‹ˆ¶†IM»4§E‹?®U׺uë ̉ZL```Y–=…ø•E˜b/| {999UªTÁfg;uê„]€́̃HÍÍ`/¢Óæ8‰Zs{úôi|’ŸŸ?õ¼²é O öîƯ›ư ‚àQ enÛN!~C† ¡{ÀÙƒw ÷Q”;¡=zĐçEAöx|<€ÊZ»vmϯ0˜sæ̀qă¸û(gitÁĂ`±XtƠỎ­ï€RgVùéB²Xö ŸÜ½{7ôEP0ŒÍ›7›˜˜@8®^½zWæÆ` .Ü¿?´)Í5ƒV aÆ;v́ˆ‹‹ƒÎ ’0`€££#„sßBee(¥O†……AĐëBœiÓ¦A:ơPˆ_)€‡ä_Ú2pàÀÙ³gó¸ă‰â™\kc^zèm@&L˜@ß®DBØ ÊvëÖ TPúWÇsçÎÁ(qĐ A{÷îë=`;IàŸĐOŸ>}̉¤I Ọ́®¾qă†¹¹9Œu;tè@×'½Il† ¹Ù´iŒT¡ÏÇ~êé:<©½½ư† â§€PĐûhơa¨Cư|À?Åú3àÿĐC/a‘éºkçί\¹‚ez­Û·oº…'ạ̈åËô¯)Ç™‘4YĐlñ@z¿Ji P· ~·jƠ ÇYUˆ_–=wwwèCx<ȾxñâäÉ“ô@Ê¡4s€́ÁûôđáC$ÄŸƯñ²ÔÙAöđ 4 Å—=a +ÛĐ”à“~ưú9rD&éÓ»n,{Đóc}A†̉âWVP½zơŸ?₫úơ‹̉ß~üø¡¬¬\µ*±‡­iÓ¦̀]:‹–= ”‡WÙ:=Çnự̣̣d»(œ›7oÆ'Øÿn:u233e ¥«ƒ́A· #X9¸§VˆŸœ²G,lx6²F%‘¤\¯^=¼¸¬qăÆ¯_¿.Q¯ { 999rđ„çZJBöøgéZ&₫zâWú ;§´©’ˆvgÙ“Ă£<Á–455eî$””́•Đ-…ø•8FŒ|>gggC××§OŸ¥K—Θ1CnϸeË–\ºtI]ȶ¶öׯ_Ï;g``P̉Ù́éèè¼ÿtTü T!~å0ÀÛHâîƯ»mÛ¶-ѼÔÔÔ@cbb̉̉̉ä)~x¨9gι嘟ŸÿêƠ+D~½OÏŸ?‡£ eO!~̣@dddTT”ܬăy—›7oÊóq¦̣Üd ¤¤$+!̀ŸQæă@…øÉPz)=#⪦¦̀2b’"¾:Îef°P†™VRâ4¨ÏHZ@Œ]]Ol¦L*ùÛ7Nv6£‚=|øav k˜øÑü+-XS/Zr8炪€÷~¸£ôöK ¶Æ&{ÖødÑÇ)!~¢¹v ¬Êûø¦N—, 2G₫‰ûÀEEm+ Øl«ôôóä º;8â~ÿ|;²ñà]ÚlV‡¦HmØ™m–—ZÙΙa‚–&q$̀ˆUpK.Bªl2ÍÛ­Ö¦oÁÖ$ôơ]rï¨O[ªă%JRgÊœ§ƯAçåígHÛ½¼!Q¦’)Ÿ®®®-µj!M?² nƠ˜C<Ô¼0&>™yá½?«½½ưÅ{TÂXëæê^ºeÈ{Ÿ ̉À²$RBÊÆcJB0™yîƠ»éö·\çô&ƠËï7/áC¥Î+eE·ö^"os¬ë"RÚGÄ=à« ÁĂøù5ơp`́u1η+›=/éøSBt“®ăp™_…y| 'C¹»!ĂĂ#Ÿ§1Ñ?ÿÖ•ö’£¦Â}iö¼ü­­]™j­éÇbæ’xéNW³öTjó<@üxrI;ºøÉèz'wWpcx=(Œª”Y₫>1ÇÊœœ}° IŒ(êq–•j>=¸ØkA$¼×_O/ŒtP¥)ípïdúkbÙç¯côhÚ7€ééÛˆ˜¡æ1œÛ,Vr`LñíÛ·5kÊ!/*Guuu~Ó’¢F “½_xHŰb>‚BüJëÖ­#Îß¿544ÿ®ˆÖ)䳇çƠaÛG&œ£Ü§”ĐL¡BüJ“H@s(ŸÉ ̀í É0S9×*ä8`ÀöiÊÅ*ÄONÀ²çàà 'f8-̣Q%0ôôôJh‰Büä l`“‰S”â€Ç¡Ü 7oyyỵ‘=́£ävo)ÄO®ĐÖÖ₫óç%{%'‡Ø²“œŸN²Ơ•V̉Æú÷ïøđaDNç–hF ñ“7”•¹u>|øpº́ EEœü/¹ß̣s¿(**çå~»sîüÍÿö­ ÿ[}Y99EEeE%E%e€’ªªºª²œ¬,6V®îçPÎ*Ö}»Ö6jk¬ÖÄ,±̃ưÑî{GsÍæ›ç®Ưÿt́øîO}MØŸ“s+cT–xô« ¦¦ú ©¤3bê—´ohå¶ol;ƠíÑ£ô¶mÙœ¼ï“?µnßP¡kanˆŒ|}đ¿üo‰Æ=@Óf‚-u8ûMÚÅXƯ͈8›Mç\½ûν-*ʉ ííwC̃\BùrK¸ư}/|Q¿eé±qá5Ïóñ³ç…J‚§âôưv¸¸»óûwë Đˆf\åƠ@®Âh´äèQ>+±ßlƯ7w§ñ À泯½XÛ ,7èLƒâ³ç˜c%llâzÜJŦ_*¦g‚R¶‘ÀA X¹2ĂËK›O˵x¶ÏÛ óËSđạ̀6b`‹µă!g ÿÅv?dëˆ:@>jälY¨h'Ê Ü#}¢°JTÔDøÇ;TPÏ̀Éể°ư5cزEj×kø¦¦OăOÛëF@ï.̃Rƒº²Ö§}®ÏbÍ™²3 ÿ ºS4Û´¥aÆ·2e¬¤îÇe Qxyù;»¦o¿’¹ơ+̃-ùơÓ ˆ¤–µiÛ“<§V¥EºâeÁY€ƠÂæÍŸ¦Ooơ»~jÓoÂô‚WÉÏ”̉f^Yí´×`‚p`X!Môí7÷í››ÄW=đàêÄÿ3pơ‡y‹èÈ‚óÉ!m dExqúôßùÓ0Óî7iy í¡u„¸tI±G±óC¿?ZZ­Çk]ƒ°²Y¼Å÷C? j~̀ÜŒôcÀ€¡_­Á§ô‰å¿†:o¸//ŸÈÏ¥3Ÿ x1ç~#¾sè‰S]­Úë$?gÑV]̣rHV¶ÈÎ&~5PdqJ]Ir¹¹Ä÷B)§ö̉¯CÛmÚƠ)ùH«—:;Ó¹‹ ¾–‚™Ơ5A4Ç\-|/ ­º6„Tï^¤àà+8¥¦°fôĂ(Ÿ 0Ê' ư$SSÓ»wïªd\f7çͧ§ÿJCµl6«KO‡ŒĂ_‰Lß\rA†>,÷ó„9›ŸÎŒ<ÿzŸOzôc±X>W>úYiˆ™RBB‚8¯ư0SáY…l6¹æ¿tâÀ0Ö’$!¡03ÁãË6>æLíaé‘ÈƯíÈyÀCÀÍ3{ÀúôS̀ÇÚ êó}IZfĐŸ\µóï+âÆ$Ö‚r¯íéꣴœ°̉/ừ¢ÆưW`7ÿæ÷ƯÉyŸœägÇñ<-^]̃ï  ÂÅ:LG- mĂ‹Ó¼X²ÙƯ—t!Ư7×vă/¹Ó8g _-ùx1“¨‹‰=gË_?„?çÎGÈ/Çp¯6ƒÿómîĂkxCW]=A|ßè̃!/Øơç>f¢  K?.÷È3—(ŸØä·–­É{Ö•á CQ4üÉà^!AÈ}E•̉σMÅĂ["¨ÚX;^̀%·_¿!µGô±Ù#ÓÓB¸jŒ}‰·Bdf×Á8Ç‘–5’thØZçÙ¿ ̣ỴùPŸ¥üJ)´±ÔÈ…”Ï£×’´ư00…À]˜y§&̃)¬¿¶ôư˜ö₫º¸¸8;;¿}œ*8çzàR31!|ª&XPàh=jåă?¢ˆë6MO¿S¹1ó­›•2±zrkbâơ…6Úå©ƯYˆP3ă!n8?èßÿ$sî‡l‘NçéRăÙ¬Èôﯟ$˜ơ0è†l¾ÆO?܆hH’ó2æ§—2ÁnV¿¢ư–̀‘ ư₫Jí2éÄ3q‰**(éé—E₫|èoïUF§·ö’¯ă§l¶ˆ¢EXúñvßÍt0i€XO³0í̀¢æưWtÖÅ]@̃Á³˜Ư`P(yëôrr+'«ƒ÷é±ÉbƠ¯bË̉*v¸Ÿ'|ƒ“ƒ…²^]´ âE¿K›Ø`µáûxäßGç‘Zï]Xs¯Í3‘ÖÍ:u-ùíú̃ªsï_˜©¶ø0QeÏb¿àˆư‚ s.1)]O§u—ôŒÏ«ă?®¦Éß"OÎhJeq8kVi“j*2TSb—®Æÿ®Ÿy€{ëÛ(àÔÔG&®çá×êd̃₫ù÷ƒ_φâ?¯Î̀Bh&J²‘ñ™­­₫ßKQ’(ơù:-Çÿ̃đí|©†ç!NƠUM¿µk×v7Đđ#ûà‡™…xm̃SSÓ¶–6xÉè„£&ÎË„­ø̃ª!̉è–ơ$̃nDÿ„7yƤ¨„†.w×Ö_W«ôQưLÍÙD|¼Yzúv(jĂíÀârx_î*ôv²dO¹ ¥kË›D¤ ]Ok̉¼ơ€C¯Ñ!R*>`¾Å/1|G¹]ø2O)&"w̃%̣S̉”Q~¿ X çæ#v0bk7‚f°©ÿ‹ư 4ûe|¾™†h‹C¿†óë'7>U.°\Td$U½ât[UÓoÖ,̃¡ˆ¡áQ%¾rùg¯”ƠTmƠåô¡hê'IÅ#N3â/ê—;‹”‹;$QŒÉ³wÍxÚà^%₫x€ê á3Îl˜ßLëÅ%~ơ¦_¯ö7KƠ8§¦MÙ²º´Ơ!¹uX×ơœ!Đ\H¹\âĂ@€m ‡B't€h_¶ H¿́EVlư®s#ooZ™Jê.³£v›irëóB<Â}¹µQÿïÅâ$>ŸÍZ•N€ÀpbÙ»âdÖ‘LÏ. J÷,ßÄnª0j$¤|Ö4 ÷Fó¹(kïÁScÇN@uy§qíƯ·}́˜©9ï^Œ\}ư\иœwO.ÜJµd[Y|²-ôëóZ^èFø;¼¯éÀ©#Đ’!u†³~Îm£3ȱ/ç₫L'-tQ¸$¿â4ÁZ«ĂÈe®EŸzëh¶2ï¾ÅÔ„Ø4RO3cü§>̃ÔÍô´Ç]: Ú¢g{Mzl?ÿ5¡akëËhbÁßaFl%/̣uêæ2®$ó Çv¯‰ä "dÔ’¬MBhộ{ c‚¦Î[¾îê¡°¸WE3ß?̃,® Ûü‘¬éÿŸC}ü0ë€WLfĂ«QÛæƯzß,đo± Ü»zjăÖÑóẂmO 9NQ72>îúaEĐ‚yBAŸ;h7a€æk̉©¾<{2¢U§zÚª`EíÛn?†¼£ûÓ‹øK²¡™ °0µCG¯ơoK?6›´éç’çöñ¹ũiøF/°4ä¾å¼ ‹¯çl?¨uv6Ѥ¥¹‘Úưás*Bă-QBÜ|̃R˜™OûGÈ5„Àù×Qñla&Âa|ñOߨOK­A0%ˆ;B’2c¸Ÿówœ¥]̣EîQÁj¬_OØ9Á¹r$+Ưôí†G«ùó&É\$|KE…oÄơ.•ĂªÚB,ƒĐƠƠMKK¢˜%ụ̈…éÓ§õ¼Y¸:d ³än/¦º„L½ºW:W¾FJ-//Ÿ——'Bœ̉,ί½ÛưåË—JJJ_¿~¥=æ-[¶́̃½;77—ö˜ëƠ«WXXXS5&ưÛKüø!ưb6hĐ ??_1ÓÛØ~ùĂ&¾}û&¡˜Eë;+Áóçä˜'‡Ă©‘’••­‘tëÖ%ÛØ̣åË-Z$µD?}ú$¡˜•••1 ¡ßÿ£éçà ©›’6l(‰h[¶l‰·nƯêܹ³”«ëû÷ï ¤œú̉¥K¥F¿uëx“>>îîî´G»`Á‚Ư»w3ô“8@@I‚~Ë—/ïĐ¡C”¸‡Pff¦4Óơđđˆ–f†††’0L@!¢—{¿ư^½zƠ´iSÚ£5j”$r[SÜKIIÑ×'÷d=₫|Å  ‚̉ ÿ”ƒêâñăÇ´ÇùôéSI4³_~ OàÓí¶mÛ$”á£G‚jôàÁiÖRăÆutt^¿~­©©éÇņ $¡ñ„³³³”ÛĂ? \B¯X………’˜8ưåé! úI^^^O<‘fmÚ´ùï¿ÿ¨Dcbb4hm4##C[[[réöïß_èUô`ܸq{ö́¡‘{PQ?~äp8íÚµ“D†yú-[¶́WÉj‹-@÷ëØ‘Ü ¢¦¦&¹‰~÷w $ö¹zơª¯¯o«V­@¡ºwïÎíø̣勲²²4¹g``œœ|çÎN:‰ÛÅ‹mllV­Z…¸ó–Êó/O¿¹sç̉§„fÛ9<ˆ$9i)ø¹k¾øÙ—÷=zÜkÛ¶-8èM"W]]ưóçÏ̉)æ´iÓ€{-[¶|ö́™˜Q]ºtÉÄĸMkÍ5’ư:ˆÁÛ·O ă.R[‡)Àö¦M›¾zơ ˆ<îíØ±cÊ”)t¥EpR㤸eË–ÿưWLîá¨G 6üđფ¹÷›Đ4:ĐëhŒZœI#zö́ í»srrTTT€{sæ̀ ’D́ÚµËÑÑ‘¢ưưû÷ùŸ÷(³pæ̀™xE|}ϰ‹y™Gµ€,¤5Ô°h‘êèèŒ3¸×¥K—7n÷¤¤›üô:t(‰ªªªÙÙÙ´g’âVnq? ܓĢÎ;ߺu »¸‡‘››« @̃ôÜkß¾=T æ–––h ¨‚¼~ư´D?º™™ÙÍ›7±€µ²²­n Ư»w_¹r%đm̃¼y#FŒ°µµ…OÜ“fÓưèGï ¾$¸7dÈcÇQ?ùu$h²©©©zzz´$ô÷ßß¾}›âÀØØ¸ÜÀ½₫ưûă q\ëÖ­›5kæd8** ÛUbñâÅË–-{‰Rª%Ê=P@} 6,Z´HxîM˜0fp0y¾÷åË— °bÅ 0€:T#M÷7±ư¶nƯú¿ÿưOüxúôés₫üyÚ³ÇÏ=Œ… ‡Çǹ½‘#GâQÑÀf³ÓÓÓ{¿ÜăW‰{?~ü;ĐÙÙ™Ê0XAïß¿/WŸôôôộ̣̉ĐĐ ŸA‹I"!ƒÖÅÅeÆŒ†††À=́Ó¤I“7õ,_^ÙEÛ·oŸ?>ÈÿÆÉ ¹""" ©€uwéyƒ€ôWÀ₫ô£…{£F’÷@A‚WÀ“âà‡Ă‡đ‘_¼xô%À=øá¨ÄüsuêÔÁåÊÊÊ_¾|e­Zµ ñ={@H‚|óöö^½z5TgÏîÑ^{@0É@- ¥<±™ Ü y–ÚÙÙQSS§N6l(`ââeÿă¢–´ÛßgäÏü:è!’è ñ|¹đ2~̀½*WEO<ÙÈÈÈĂĂÆ‹²Ü†{˜{Ó˜{”¦÷éÓ§¥K—bO’ĐÊAw̃‚:)êààĐ¯_?Zj RiÚ´éÑ£GqU¼}û–z¤’——wttîÉ –X¹[¶lÁ’ yxụ̀åèÑ£¡Î9‚kú>鬰û£éí@dTĂ-xx³"îáñ È-ä¹́#̀½ăÇŸ9s† 0xđ`mmmü³¢-Kx[ƒđÜ£€¹gmm}å ï° ¡­cM4̀%K–ôêƠ ́%ÜÊsss¿}û½­­-~ ưgD˜¡ë×ÉÉiăÆx̣/₫EEEAAA  gddL4)$$dúôéÔ[ Íz÷î p—.]|}}AÊQöïßÿ«4Úßj̃Z3tđaªË[Ú¹æ\jjª0&+ôÜü¼€ÅøôéŚVRR‚.¿¢±đđpà9¨Xx[ƒ ,+à¸[·nưäÉm \€hë ¶lÙ’R>555Ëná…§ÀX̉6là÷ ø}ûö…D>üüùó¡C‡‚!'Đ€̉fÄÖØl Á,XĐ­[7* È^)ï¥`èW€{ÂCăY#è¿ìÀرc÷îƯ+ ÷0€{xư×»wï #-Ô<ühçÎT0j>‡`̃P"Ö`«{́ Øo`.Ù@ªP6%@đêP‚ @Ê;w‚è­D¶¸øMMPMAr‚2Œ}233Á…ê…$@œúùùÁÀ¾K||¼¾¾~óæÍ´̃\ îz Å‹Cr ß ª`Á\ ß¿áªøÆxé­0ƒ"ô&””Ü2pAA®®.´6àôôĐ…Y!iaaÜƒÖ ½4wáU (‡À4س¸¨ü-‹ơøñă?~€À˜ »ÿ>đ 2 ,æO›6íƠ«WÀÏC‡{ö¬̣ơnƯ»wǃÀÍ́̃Ó§Oă&.ü(n~~>è–P`Ä‚·ƒ7fLÉvÀ=ˆBb•”^ª 111@ÎÍ›7Oœ8ûLæ‚̉®©ñ-Àí9sæT™+₫EBˆ»H5,,Œ®ÁU†~̉h\e‡$±g¹îá5„NNNÂÄSåZÓr¹·cÇPgr¦ Ï¢¢"ƒ®î‡ ¿³OÊ lV!ƒJ¯Ÿ•Ø̃̃Ÿr :y||¼@¿™C ª±±ñƠ«W©‘ÆƯ»w÷€<ü|¨xY9U(б1÷¶lÙF£NqOB«súÑ̃¥ŸÅ {áááeG¡UAÛî‰áÑ£GË̉ïÇuêÔá÷ÁK̀¨åWeñóçϳgÏbm-))‰̣ÿđáƒÀú̉²6'^uM©ˆT+§†[A,»f ,öîƯ;v́ضt@-AÿH­8W xA₫Sƒ® ưjÀ|§†7{÷îMUĐ…qăÆñÿœ?₫ªU«€{"G¸xñbŸ;â³¢1đªT%f”¼BâáM̀L<ơÏF`K‘ÀX}}ư””< 2ó¶\ Ü•„jEf$ sÏÍÍ Ï7Đ´1÷À.ˆˆ`èW‹Àß¶hçâ.’âÇYXXX¯^=JîñsïøñăeW¥‚ç›7o\]]Ëi÷@Wk­\úyzzRơ6!xq>ƒ_f–‹J¸W­[œ€{´½¹œ§w"—¡ Ä¡&ü´,ºÎưỏ¤ µĐùÊ•+ü»HZlûU®å÷øóI-æDÜ…)Ø7w£â]đø&&aPîA–––Ơ½A ²G×ÉÀ=\ †~µ£FJNN¦7NªMóooü;h*ÚÁ‡+±ư*R8©!JJå:t(pò˜1ûöí«n«-Ë=0¶E[øÜ£Ô]1¥ ë0†~â"88xÆŒ´s>ÆÆ©Aùr—ƒb›ªº›»ñ¾[J.aî­X±âèÑ£!!!"oóôéÓV­ZQ? @‰-*à^QQ‘{|+Ç/Á½?‚~K–,Áë6è5ß@/÷ø¹G Ÿ€T½N´MUÀ=‡###ƒ/6Ă»ï)i#ΰ¡··÷áDZÛÉÉÌă‰¥C?ÉÂÚÚZÑöêƠ+##ằ™3¶¶¶’Ë ăÁƒGIûm!t]¶A#÷w ¶’-] ư$={v́Ø‘vúmÚ´Éßß_„­ÂàÂ… `5õüÅ‹‘‘‘t‫;vøøø@tˆ„­kÈ$]û\333555éƠáúƠ$±DÅbIˆ{ˆ»:»„çÁévàÀ 8w‘-Z´èGăsĐ?OŸ>Mc}â‚¡_Ít-Úă få¾hˆ‹‹Ûºuk‹-è=¤$--mÚ´i­[·~7°UAoñéå vrïO¡ÿƺ@3) ë>|Hû\uêÔùùóg^^½Ñ:;;»»» *QÛ Í 'ú•‚$.µçLÎ*ѤI“† JˆØƠÚz+$>L/ưöíÛGo§ù₫ư{Fú1 `˜ 2D1Khù½zxxĐK?É]ÆĐïwƒ‚‚‚„®¡¦kaªhד»víú'|h†~µ•oÿ0`ÀÚă¤ư&,†~¿'¤y)lí„™™™$ Ôùóç3ô“^¾Ë¼›xøù³u+ưv-ơi‰óΣ§¯_½–S·éú7-ëƒp=ñQvNǸµÛ½ºưMc´œ¢¢‹Wo‚ w+Ѳ³1]Ñf~ι™xïGÑOCư–Ítèªáä§©Ù¹½hªa‚ bâoÇ^‹ïôÈ̀¨-C?ÉbE@€Ư$|Öµ¢1y¤dBIïÈƠÆqÇö¸ÿoju#üA{Ÿ́`Ñ›¬2 æd;{ø‘­ñ§öO›:Iœ ú’w÷¾ṇœBym½+ɨ8ĂEΫûׇىxÈ×ÁSçơ:v©ËxĐ60¹ơ*‡9ăųN­jj¨­ÀÊ₫“đdZ½&mÉn"·8ÚˇwÍt&J 9Ơ¡› ®áv¥jøFô¡ÿMv¨nœQÑ›µ3•©G̃¸Ô@¯ư°}TÙ_=}ĐƯ¸­²’C?:¼¡×¨©ÅÜ+–CÆÁ¸°?̀s¦°S±‘GNµëÚ s¯\˜ qf§>è̃µ³y>wëa£¦ú˜{å|!=Skˆ_»nA£jÂGûú}Ö'B¶U'Ëh7où–ƒ=Jë̃VWøh×oÚ̉}¸c1÷Ê<…Ü‹Ü2îl!ăÜs,ºm—˜{å¢Kÿç×—-ÍL…*{fÖ§²-LºU i«ö©¹èăÓdS†~4)÷çb{„́=Ú91#×X[¡Ê.ùÁûà0qªêµXè=¿ë3ß}₫̣®P¸'LàŒ"ÙˆơÁs…ë5ÖmØÔcÄd¡²­ÑZvCô•­UơLă₫S€]ÂDÛwü4ák¸'LœJÍ …©aáË̃ q3(»l¡†ª C?±pü̉ ưƠ0–X¬¿ ê´*Û -£Zy°è¾2pµ×ºé·É̃ÈíVGâƠn)C4îaàÚíÄn ‚"‰§vÛª-@lA‰ÿ«‚zê•ô幨¼« …ÂöÈ}SÇ—¿ÖD4îÀ¦½~'©k'AË„I´8´*ß̀(}i˦mÿ¸:M®yú \ä]ù₫ÿ́ÛËÔ:ûPa ?ÜC¯Uù£Âæ7g¦¡½»x§úœ¿é×[ckv4Í",UÅ-Ă½‡L{ Î̉&_=q%₫‰‹g‰è¡-’QÎjcƒr…˜8YZ½n½ç¬Ê®™{uÿÿ̃JTo*úXB'›̣Wºm ß÷wÑÁÉ5nY®§Öo˜UZ ¿pí¶¦~;‘#́6p ’:Ê—~>W>úYiPTÔg±đ•,‚P-ÅOk"?¡˜²¤-éT¸¶“î₫@ }ÀgiŸ~1›¾{Ër̀³Å  ”œ®“¶O·ÄŒ¼8„ŒµåI­2£%ÿÑ—ăÙFâd©÷—J®Yb3ÚIœøå´Ë_½AÔw$}E@ÀBî{ü‡{ØÔùcb›¶kV³G™16eq÷̃n—,ư–Z7XÊ÷3ËÀñÀ±Îÿáí²æqù ƒ*s¢; Ö×ܪ½œ+Wö×DÜ-:M¢sÛÛ̀,ÈD9ÚƠCö#&úœ|=eàà›±6©;%¦Eơ­Ê©÷U^|Ö|VÖg¶$+Ưr¸­‚RùV†–¸ße•̀ŒO9‰{\ÀxInníµªª©%f 6•v̉£ß¼ WÙhPª#ÀÅ…̀™óø oßđÎñgŒ‹9đé ÏS +igK®#?—œ¥ÆÖüÆ£.ëÑ™â`Oøî>ăÊÔZÖu‹‰#Œµ»é¸Úd'tv{E‘u+uœf[sÁÓ5/Ÿ8‰[`÷~…̀Øăg)†¬³©/¯(àóàU^û¦̣ü> ¨«”̉•#dÅ"»É ôÙ…ˆ¨L¿‡„Ö¹÷–s=n¦R¾¤ŒØƠ{4yöáÁ°Ơ2Z†ê[­l$ä dlQj̣¦Mg̃läå³'å™YvæËùÉpÙ+×V¥½l©Û¬́g̉̉í``Ь:j©®ÔwE”O?YnSsæ3̃₫vYñƠßtöáW…OwÎ&—(îÜÖ{¦•Û¨ˆ7…|$Qt‡U·AD²X4ĐONA±_5[ÎX¦¥#xZ÷wxxlÉG¥Fp‰̀;ë"bq¯¢×c²Ơ1…$à§¿ÿZ}±Ç]d奴nhP’¢'n^[–‘9£o±Zûd†•à¹/¹¹Â0³ơÁ°Ä÷ËÑOÔgĐ)Üzv$/™b ¿ÎÔó×&äÏ67gɺâ¿L6/™—Ëμ¦3;ç ’çPñL5—¿›†ߥ_u=-­‹lÚ¹º&丆¨ r9ê:TÇD¥6½3ÔgÊÖmû f“{¸áâ´øăR¹ư4:6qf§„JOâö?4?åÜÔü“0¹ÜîC•¶đ/‰S K̉Bä>%5đéKNu¥RsÀ*ï&ơp̀=^ÿEÈâvï·—ÏÉy&ª ưP­ ÿ­ß”ûô•’»̣¦zƒÙ»ÎªÔm2¤§Ws8R¬é¬Y¼abM³Ñ̃f%Ñz{Ͽٟ>¨RêJ)-®( ƠƠ-gÄ‚óähå ¸Tç¿î'®X­}R6|£FÚB ëLbF$pÏX»×ÊF× ½rHºûªgăúî9÷¡ă]"Ó9¥̃ÓkÖD &½¦xA#Uê„MƒJ¿^·ỶƠë/ï[̉’-Sơ]ê9ŸÉ¤-"#ÏeékYyß+îY¬¬Q́.œÛ ĂÖ£Y«âqÊ­á ‘GåÈÜN+wŒM@gá»ÀØPOçI6?ư nÈ̀Óéh‡ %r»Ë¼jJVA,DhRµº.ü¾₫>ÍîµeäS̀%f¡GCíR­06#O‰Ûøâc‚|v¦\ˆ,Äú̉ Á®¯o§Å´È«[Æ Pô₫µ‹Æ£KîëùñóG̉î%¹vÔø£y”gEjíà₫}„*€mqy#ठ"pä\îñThviĂDCµ2Í¿nâzwê8ĂüÙçÛAÓÿ_ÿUjd6d“Ă9'Ătk@tóíƒ|óÊÈ=®ă€BN8·d·B ,WA V̉ß?±‘)ÇËU$öçfæ\9ƠÎu§\-u=ăÀ¾%«pådA¦åăđ8«ûüí¸²»méâs+™@J|µºzJ„:ÔHëưåW½L=œệKúB„FöCi9„ưú&¥w 3æ^¿z—~qƒVR,¥Á^ˆÜ"漪ôtƒ§‰7Zw©ơ™™̣i•˜8ªœ.ËÊdeK^ØÖg\µ7Èë[ŒàOHàÊQñ‘ñô‘V—ZH¿T‹E˜H»øEKôÀk‹̣g­²Ñ¨ÁÖµ+ô¿ÁlŸ‹.’iß™œ~NíqƒECLQ=âÁƒ—à³jÑh}>v Pê°jÏ9³d“ Nö¤Uáàܾ÷/Ÿ6]ÎơzqÇöX'Ǹ?¾çKâ»Ø.57;{†;w3‘èø₫9i•º¦÷Æ™Ă]l‡‹g}–´í?¡è§OrïRăĂöđø%º,T<('úÆ/?±ĐLÍbB+VDÜw«©Qñ̃d … ·Ueˆ=n5Œ§₫MrtAxâ_₫̉Î ÙUĐO?¹ù¯Ñ`;~èVËêŸƠ‚†BekÑÙ¤y" F—µ¥ûÿ¦s¿å̀‹Æ·î rœ)wćJMWÔ­[—øYÀ£†›¨É øüỏx1Ë̃Ó̉¼6̉/%í0Kw8‹µ•Ç(ÂË={.¯0 #’Ló¿Ls÷ÀÓ|Ù̃V‚Hk­ûÛK¨ Ó]Ä©÷Q¥¹‡Ñ´çm‘ˆƒÈË̉Ó«bH#ơî=Sï~yr#ÆhH…G¡ÄGG™‹ZƠb£F–#@<\ŪáávåLjƠÉO(aÑ·O[4)ëŸđïi“v¢Å™|íœÑđ!µ‘~¨Ù0,ÇôY,~µsF@ïẴøWº°8¨ ¾Dâe¬tM'ÜÈ—ÖI´z ?SsÿáÅk'ö9—³EP³Z8wç®qëU½ff˜]¿#¯êµ3¥¿RÙ1DÓ&O*Y¯’ǬPyÓ•ÿ‘–'Jº‰ÑôrV“h7̉<°q³h:•Ç=Àä±ö"–ưÅăÑRç°ôăr‰4ùRˆ÷,V#ÊßÊû‚ñ́k AJ,oà(ăm.’5Ç"1&ÀémẵÛ7ƯÈ%̀äÉH2¡YK¦ÊJ ÏngÙ¿Zo ôơơ­èéœîÇ.ÅW´ ½"hƠÉ­rƒÇ@‹›iŸêËÊW+₫Ê7(RaªÛ YEß{TzŒª²â½Ó:öDc Ït›~"öVÓVí«gc™Êf‰D,»¹)ª E?¬^²Xä6¢„÷“/¢6ïßµÖÿÜhÜÆ6[1†ØèÜÅÓK·!¾ƠØ’,ÉøĂăâo+5vÍû¹ˆM•´ Œ!=̀C¶„Y dœ-•‘‚|5₫éjQNA‰_zDï ñö/¤rHA¿)9ïü9çËÁ#ǺØà”÷ù]âƠWç©F"q6>~–’pïA;‹R£ÙoR̃¦>“̀¨ÜĂX@9uFVEƒƯ²”÷èêYă [êiơ¬n´Ăû’ú´o›±Îơê—ª̀ {¶zΙUƯn¡K̃Ëù9;'êè‰Î¶ö¥k8#éÚ¥éNSŒ„æ¯́ÜÛuT]§y£f­ùưwưbÛ6­;´ieT£ÜC¿ñ9ŸånÜêè%ú)«ê*Êÿ›Tfđ]«yWĂ©´d˜@-ÑVQQÉÉᮕÔj‡:µ3f₫YM‡4Œ́‡m¹̉ØhèK¡ÔUUœ'•Ñóµôºê‰ç¾b››ÇÇ“ă‚FĂÖ’VÊœr]¡¦¦&¡˜‹₫ØZµ··¯mYbèWѸqc¦h‡ä®Ceè÷[ö0ù•O¦zú1¨ oß¾e³Ùééé´ÇlhhøgV©’’̉ׯ_ú1¨ươפI“$óäÉ“UUU³³³ÿ´*522ª…¹bèWÑ£GM›6A‡íååEc´qqqÇûÓêÓÀÀ@B×ú2ôû áää´oß¾ hiiÑx­³³óÿư÷ï¿ÿ‚ úøñă?¤2W­ZUk¥=C¿Úˆ=É©đ©S§‚Ú±cÇ{÷îÑ-p;€Û›7o>}úo_“III³fͪm·j2ô«í {ö &L¸}û6âNëăG Q=<I±Ü³µåíTîeddhsO•uuu…vvăÆ ̀=àä+₫ùçŸÊM ́n×®dó5ùÜĂó˜{4´Jx9 UÇ…úU¸ÇĐ¯Ö’T˜ ”?æ̃îƯ»'Nœ ®wọ„Ù®]»^¿~slÅ 0GCCăÓ§OÔÏ;wRn₫©0<xøđááÇăîß¿M錄$Xü·mÛ¶=úåVó0ô«] ¸‡q̣äI ơ¸·uëÖÿưw@-p₫nß¾ưû÷ï )îy{{ƒT„ÉϽ*Ü9ùíÛ·-Ztàqç¬ëƠ«Çï@ b̀˜1­Zµ̣óó£X•³wï^ "pï—Ôt˜_{Đ¾}ûđû@órttܵk價7ỵdJáœ:•·ß÷áÇ#FŒøï¿ÿ <ˆ=Á̀366^¾|ùÑ£GÏœ9Sy@SÅ++«ØØXpPÖ?~üPQQyóæªªªÔ*$99ùï¿ÿ†²`=|ß¾}Ø___ºFA÷ôkL£¯=àpzzèàù=1÷Àüóđđ È ¦¨‹À“uëÖA»tqqYÚ¸qăÈ;R¦L™‚ƒÍ™3'22róæÍ î°5#OsÔQ02W¯^¸“ ©}úôÑƠƠ £· +¹zơê©S§@#îZMj›‚……ÅĐ¡Cñ=< ơ;ØùL£ÿ%Fđ\–€¿²²2æ¨ % A;¥Ä&¿Ö:õ¼M›6íØ±côèÑA\đÇbM]]Ø5}út µ'p8Ø­¦¦vóæMĐưđÏóçÏóÇ:ể¥KöÎÎΔ² ĩèé鉕I P¤)7–x”ÄZ₫~_–¡ß¯à^§"௨¨´éر#4h́³hÑ¢+W®ÄÅÅñ ä‚ßĘ‹ Ó€–––xQ(–ëׯ>ÇëÙ³'ØW˜~À±ÄÄÄøøxjv>y›4iˆÙúơëƒR Ö#5ï{r;øçñăÇ!X› gÂ#́Y¥ª̀и~soÿ₫ư aBõ±!OéâW1À̀ăÿ â῭XÿÑ¥K—»wï ¼› ™™1cÆëׯÁÈôơơ…`¢@0¬s^¸pÄ( îB6€6@°Q£FơíË;¬m'ü/B¶ABBO<MÛ̃̃̉¹=˜‹?đë3ô«IdddĂ=P»wï¾ÿ>¦Ó°aĂ®]»&dA+V¬îܹ3X Ö äȦ«« B{óæÍåæ6???44tß¾}ÉÉÉ`sº¸¸XY ^·½Pä90sÙ²e ưT åNs8h¾Đ¶wỰH5j„©̣ñăDzOưüüÖ¬Ycaa-^ á‚߇¼Ú½‰‰ÉÂ…¥®ª‡Z¶léîî)¶Í455*u×́B.²ñåË—ñăǧ¥¥©Ú¶m æ äçŸ#‘““›ÉEEE†²¬]»ööíÛÀ̀%K–đ?‚ÎJ:6È^JûeèÇ@Ÿ>}*»u¯áQ†¹'<^¼xѱcG‹µuëV°Ó(_.DÈ̃áÇM4™?₫âÅ‹q7Á? éææÊ¡±úzâÄ ~0¡S{/$$$<<œ̣‡ÎâÙ³g ư*‰Í‹²₫À½)S¦€̀„|‚Ê@ùûûûƒ@mOc0ôûÓÂíÖ­[ü>xµ”đ‡p–’’æJ̃̃»wô1~î!îP$ØiÂg tT0óđ ¡¬¬́›7oPñv§¢¢"P&)b`î•uêÔÁGMc€A ¦à»wï(]777×̃̃¾ZĂ œ:uJÀ”aè’®_¿NMØ,_¾ü_.úư‰€&ËÏ=hîwîÜ©rµ4DPù^¾|‰̣¯€¡àííÍ¿X0v́Xa²äååƠ®];ĐÁJÄÜ+§‰Ô­‹¹2äùó甸~ûö­øÇwèĐZ „$ °˜{`ư³¨E@1x́Ø1¨püs̃¼yPï ư₫€˜½ »7õL5…²Æi°µµ¥¸W ‹̣/×.‹œœ«W¯^¹r¥đùÇÜ£6ÈÓ~7èŸØ1{öl̃˜{xÙ˜˜ÁvŸ>}úÆxeORR̉₫ưû«U ư~IPÜv•{̀ZcÆŒ¾NÙö*A Ăp8œFD¡)ƒQQQ¹M÷¨MI:ÊaíÚµÔ(>Q`놘°ă‚ú(xî+# ư~O4lØkw`Û(((”ËUUUq–zPC ¦¦¦x’XWaB‹øđ!h­À½²ËÄiæ̃̀™3{ ¥ƒL{˜{?~üĐÓ#ïQ’̣éL ư¤„´´4ø;nܸ={öh‰ĐË<‰‰‰ÆÆÆüÛj1đÎ@‹I|₫üY]]]rÜ£°~ưz¼JrIÔ©SϬ[·è§££óúơk†~¿äåå?ÎÏ=<óNïỌ̈©S§̃½{wÇ₫ôr¸·téRŸÅ‹Kz^N™2¥lÑèhÁW –ƯÂĐïµ¬Ë IlÍÆË8åäx—Ë‚NưºäJÜ>|¸›››t*¸ơö́Ù30%ŒUTT́Ơ«WLL C¿_ À´ÍŸr+t%Ê=ŒĂ‡K³&¡ç+º¨¨Hüs‡«„¬¬lfff›6m¨ÓÁúư’X±bÅéÓ§ÁÁb±‚øÍJXJ”È•4>|ø€+S €>˜ ¸ëdè÷K44Pc,--¥À½¨¨({{{ZÎ¥`#m&ÍèvvvR»& >Y“&MúưÂÀW¦l•Ö¬Yô“÷0 sù?ß›7oD8Ú˜¡_ÍzhŸ?¶mÛV`Y¦$°}ûö„„ ƯŒ[ @=;{ö¬Àæ&IẂĐ¡C;&e>&&f̀˜1û÷ï§79†~’èHxb×ÜÜ<,,̀ÉÉI¢Éáø322¤¹†¬#$ÉûèË¢  ›̉¹ªĂáàmVŒôûUÇ'$Í=%÷B’(¼½½¥Y™²²²Ø!ñäß¿gè÷KB:«(̃¾} ²HYYY]]]jEọ̣́úIGñˆ@I¥¦îâ䨃äúưJ樠T‡-€̣)å2*((DDDH¿nñÍMRCEä0ô«ađVYK–,©$@µÖøVâaVånVW®§§ç}.hI´Ê2 S«Â§.åäúIÎ΢¬”—‘!èMH´lH¨tµ$­ºuˆZR´jÓÏeæ̀‘óÖôb‹KÔßrÁ’¥_Xp°Ö°Å½ØLe1`P3¶Ÿ=‹u!=„R‹G JM@Ú^k[¬œÇó´\x5vy7p̀›7#00˜’Q1Í¢›¤§ «=]ơï`± ÚëÚÙlV‡.V÷oÄ₫s—è§]aÈÆÇ<Ô@^ôĂËÚ»yø¦/áy¥&Ä̃}bỉjU©s2¬H¾á ßX̣€¬s2¥˜ Æ”}%œ{8äŸ6ÚéĂf9₫Gè©đŒ„¡ëoÙY éægÄVI?13%zụ̀;âä6k¡^‘–E;÷¨3p.́•ï?¢ˆË Óôô; ú€~$?3^³µYüºŸM/^ưW#¥†Ă›_jÎ^”Æ‹§à&!Éw¾»¤osC¨ˆkeq 9ơ¹₫²ư Í.hị̂€#«½ñgËÍÉE¬\vÏEé§]ض–¨-¹ƯưX·TÓ5/Û‹Q÷ óôIO?Ïîäôüôä^o’g@ƒ™pÜbñ›ÓóÚ¾L'qÛ›ï/™ñ #SÉÔ+„ÈøÆÖVL>±đ^£¹œn†n‘&Ú¬çÉïó8¨CûF©‹–âÙâÍ\¯™Á?ÁIÁT7ß-Ñ„;#Çê§µ âÅê‡l{8ƯÏ”{¡Uƒ…\‡r'îun}H£‘P³TaèW£p?B¸C£Ù4yÎ\øT ²2 ‡¦Çp@?Y‚º mƒ{ú~cæ 9ä¥y9ŸÛ̀Bü½?+ËĐDOü´Ú°?çr¤h܃4ô#"¹À÷lƯ=‰†§¯Oy¶·Ûz#äp¹s3#f‡\á–±EzúăË÷L6Úu"ææ¹p,æ]$×r̉v }t ‹WoĂ˜$Ü­¯ØÄq́Ȭˆưâˆ&Ûum±=»̣OL?ư75qƯ'`ÂI©/H5ú7¢|ÿy3>â/¤ù1J¦eø³]> ư‡GÏ’¯…/ßu=rÛVqR‘Ó&/ú‘iæüv·Ïª ÿEFÊK31È0Ü̃1ử]„|Ç;XtƯ6ˆ”߆µ¦2ƒĐ ‘ơ]»>dÉd„ꙥŸ° 2‚¤º‡³½\£¶Ëüt¼ƒ¶üÔ¤₫ÉĐ04ÙyvzÊ:'—₫ÛB£ENÔoÉ óT£OMˆMă(ơ43Fä±½í'€ºç̉©Aj*ï Q=½Ö9ï\¸•j?ÈV¤äæP#=¤£(kïÁScÇ’£Œ7ÿ=4 ÍÚ·¾z5ù]ꓼâäàï̃}ÛÇ™*.ư€{A×óg›“kóMû“{+f°‚y7^éÄs‹Ÿ<ßp%ź…)jÇbE÷]‚Î-¡â¡&ß)“a†®DGy¯ œx–j×ßU£XXroVdé8qéÀâ­*Ư"»9ˆkƒ²ô›¸´7fy]Rç<|w_tdø•âNT‹,*3"ƒöΤ‰¤ƠvXdÄ0!Ă¢xº·{i¡!×Xîq¡€ơ’o3Ú¿µ¡ïª÷zœôí7ĐḯÎû=»´ær¦ÓËxçøzÎöƒZ³ÙƯ1oÅ@aŸ[çư'Ÿ_ 6ëé>©yÈ€Ÿ¢hzúÑD¢ ̣‰¹¸½›4t'Ís Ø9m½đ–˜ldc‰¢Ï-Á? âồCWX åDÖ‡ªà æ(ïߨOK­»¢Á;ˆc“ÿ´9 ç#̀ª×ê"—kd’c­ó»°‚̀É›ú^¾´ fĂú•̉ “÷Oơ äú‰~ôKw^v57GººH̃Đc¸-+₫^É@(ßî›·hÖLŸÛ/±sưfúG®_0¾́ ¤Ö\<ÑÁëŒAă×&ï(~}{µZçy₫Åweđ‡Áđ÷²gZaUúŒ÷́î~6.lĂéØ©Ù’Ç¸ơûôe Á`Œ?wêÆ¦É` cAđ"LCñéÏÁíÁfæÎFœån¥t*-ëâăŸ‹6ÂT~ áȰü7†owsHEÓoBĐ%¯–Ơ>ăé䆸;w‚Ơ‚ÙènyçÁ-0Wñ&r™†Å *&pH¢aú%r[#éF7}»!_²ơ/=G₫ớ̉À“"ѸÇ}ñ¹hÄăwàHJ˜&Û¾Ÿ¶àʲℸô 'ˆpN–i›nNóSÂVb;ÍÁ¾ÿô˜XåƯüT·éÚµ₫ø§>hæNküëPO[̣XKô˜àí½ÿ¥Éè"/ƠaÆL§â0₫₫k-ôUüÀ´6 ØvÄc£zLcđ‡¢̀ăŒ¾' „“Q%¦ó¬Y³¸/5Ÿ5Ë›úÉ0ǒ頻á€Y†ÀqúJ/†0rñ'ăí= {?µe¾†~ Įʺ¢¨¬¿ªưJXXeG|ụ̀EYY¹̣D8l¢̣D…đ‰V¾9]üơư®ÊËĐOz¨¼mѸӿÊF,¡S*O7==}ơêƠëÖ­£%-͆Bµ]ºJª©)TrrrrùùùŒôûÅ ưØmmmŹ%Wà{̃é¢_íDAAÁ7è=ªœ¡ŸÄïPRRúúơ«tR<{ö́o_«xÆxàÀ'O”Zr...ô^‡ÊĐOJÀGÍKø,ô‚‚‚Bn®T'“>}*eÈ(Ÿ¿êׯÿóçÏÀÀ@)¤Ơ¼ys]]ƯÇJ§€ ’Y[[·jƠJ¢×¯ `ụ̀å ëJá₫PŒW¯^ơèуöhúI©ËTUU9s¦¤Óẓä‰ô æĐåË—=:tèP©%º ©%gjjúáÆ~¿*¤sd bé̉¥̉¤Ÿ4miĽRWÑ2ô“ ̣AÊ÷HR= VÜ“úI §N‚¿™™™’Nkÿ₫ư£G–r/^¼(µ´$t×,C¿ß—.]óºmPœ$Đ”)S¤O?©aܸq̉áí’¾—¡ŸôÜSWWÇ·®ûøø€±$¡„|xøđáà>}:ö433»yó&]IHsœZZZï̃½£7NWW×M›6I{=Z¿~ư¶mÛ€{R®.†~5̀½ |üÈ;ÇsïíÛ·LHH3₫Î;Kaä ,èåÖ6{’ÈêüùóY,ÖÊ•+¡«¢ưÖh†~¿0÷TTTrrr°OăÆ)îM™2₫îØ±C´ÈkjQüÉ•?~€.pçÎÚ-=¤ĐÁ;v Ü«V­ªñÀĐ¯æ¹—:wîÜ#GP₫üă0:uÁ¸¶ÔéU•́É!C†à¦&M÷’’’ŒŒŒªû↠@ĂÜ¿?ä¸'~N€Æ -à̉¥KØGB‚”¡ß/==={:::Û·oïÛ·/ơ$ä³gÏøĂ?~üx̉¤I?₫„V[Ñ&4àˆP‘å§ÈÀ܃.²]yH]]](,"Ï%!ZEEE3f̀€’zzz.[¶Œê€¤¼ï‘¡ßï€×¯_Sn??¿½{÷̃ºuK )–;T^½z5ÄÄ[´hæh¹`gJ¹a0q>LùúøølƯºŒ:́S­µ2Ÿ?†"""Øl¶››ÛĉKÚqƯº›¸øµ>4C¿Ú_.¨Ÿ·oß¶³³›9sæ‚ Ê ?Œ Oà¨aûöíƒ'<<\MM Èéáá!¹l?zô衬¬ ¦ 06–<}•¼äzôhYÿ·oß!á›;vÄ_¿~K̀è¨ ³fÍÚ¶mÛÂ… ½½½±êˆÍÚ¸`>C¿ßPSŇúÛơë׈"UkÇ@ăÆÏ;‡ƯmÚ´wÓ¦MÇ' ©ÜƯƯAÊđ¤fÖqQ6™dèÇ@zƠs̀§¨¨(§ƠƯ1Đ©S'¬I₫÷ߨçĉ u5j²±°°°aÆ Ó‚z)Ll ÷úư)ÀÜ6lÿŒ"â®5¥Ö»UĐHÁ&䟅STT̀ÉÉ©S§(œïß¿GÜQGê )°0AG=xđ`åÑÖÈ’T†~ j˜{Ó¦MÛ²e ö©’{ Đ>|ø@-Á¡w¨üȶ\ î&ˆJ77·rƒ÷€º <ú1øSÜÓÑÑ¡&+:.%%%E__¯‹À­««[ƯĂ(ËÓ¸lĐ¥y6 C?5à^ÿ₫ư££ÉksÊeTÓ¦Mñ̀>¹Lüì½fͽ|ù’ߟáC¿?À=₫ü nM ]4aîq8₫éÄ &DDD0ôcđg¸wñâEü{™™÷<<Ôvñ“¦̣[‘SéÇ@XÛØØ̀5«¦2Đ¡C‡ZRƯƒŒ­ƒĐÓ}î¦V£Èsè"uÁª¤ƯœÁç3vÍ0å₫,˜Đôñư$¾WÎuŸ]$Z¢ ư₫tĐ{Yyu‘––V³ÅŸb@J­ÄŒ<®8₫6üÏ|B§@7nƠ* !5{m0öÙäH¾¸₫Ιđ+n=ç&f„1ôcPmœ>}ºS¯_¿~ÍŸG<́~°!̃ËJ›a¥1ƒûÛ—ó C?¿Ú·o_Ësø5i½’‘¤®%fè÷'ậå-EEy66%÷œ¥¦|?{₫ëôi ¤‘<ñc…ÿéÓ¨©×=yr B¤Ú¶wïçnƯz6kÖYÊU1U[^¾ƒnȹ$'G¯í{Ù2Ö–çé»]Öo=·ØÇ“vPFw$ø̀ó˜:yUĐ²!¶\ÛoBGâc‚‚‚ÆÆ3ôcP5Ö-;G«{÷:•ºcPO¿₫ôi †Ư½›kj*©‘˜ü¼çº(/ÿ×Â…ZÆUGÚt̉²¦L/µ ª…œ{œyÙ;dÛ̃)×wxu5™q1!Øfߺ‰́>ë>û’T́lẢ¯SS•WÙª[Ï] Ùw*€äœ×kΨ=G8É0ôcP ¾ç¿®/w¸Wy0SS á®]_ç̉›uk—ÍƯ¡¿ª ™¬–›»EAatªe|y,•f÷€Đå‹v,Zn‹º1.kWŒ&—Âü=̀O¶©Mb†W&iÊ \¤:R›Ø¹au–́±C»eÛxDÈåƯzöc¤ƒ ‘“¯¢V;7•ưüüøÏ×®­ărO(((Ôáj¤ÎR¨™ÎÇb‡ —{€IsK‚»xzb‡¦LÉ£Iîü1x̀]D§íÇb±(÷î+iVÍ*y?q}“Yđ&1²‡³bͳ&ˆËàξ¶HÍb̉xáƠ„åƯÊ$ûö2µÎ>T$ è¶µˆjqĂ×WûÀ £F¹‹Ÿ~Xè g.]‘EÑ¢7>ư¯‹†D†^üïæ{›Èr>Æ×ÓÔuà²b₫Lç¦&C]lÁưèê₫UáI+§ÙÜJ¯ßưo+„êaÏđ /Tù"Qí¶œ –Û±XÑd #9°}íé[¯ÂĂÖóº– ­Í̀vI½r,:Z£igËv ÊĐNQ˜Œ K„G¢aV ư푸G"22püøyôÖÆöÈ}̣ª†]ºó{²¨»Đe8vÇohnl”ø.ưkâV%#¯ƒÿåôÔˆO}&ûW ªoµơƧQ\âưsçËÑ#q'ưíh¦*,DHV¦>%c?pf6”q›8‚ø8¡å S‹¬”t²>sЧ“Ø“µ´Â¡3,T߯,Ă[ªñß™&,–û¨¬[ä-çüDe@⯇™we‰üú™³ëmû‰5́ÎnüBtĂl¼ªø5—đ ₫RL¯1SëüE^!ÜÉfH¹Áœ'7Öî–˜q Ư]¼b©dô0³åÇÖ‚M®~á|¾/Û€·Dî}₫^¨u’oÚ6ú-0WÁ4J₫̀#ƒUC<´s(`è!́3\’ÿʨªÉX ÂóŒQ`bPö}–j‡Æ½ øÊ'8îI]̀âÑËeÆ ›àà‹*(9ßedÊt¶ưäŲ9³ï©ˆÇ ½{WëY­W 8E›6oimÚµI Cø©ÄnÑg\‹Ê_I<5‡ü›q OÄóO»›¨”Ç:§A c±¿Nùôó¹̣ÑÏJèa`¹”xèƒøˆ±i¯+å§™r±Q]÷ÈϯÚábÑK.™ÅjCE¸}f?HK¿yº%g0  ,VÉHăúơ#üؤgóYGtT»B›R`¹¬µ@³âB¹· ”üd±"b~ëøñ°ÁƒE´ÁΜ=;z´8ù;VE˜`‡£/f¾×Åv8₫ÙkÔT‘S<øàËÈöÊà84z₫‰eä›±ƯÆÄÓn¨ôZ•OÅ^Èb]çCI*ÿ+½n,ÿđ Àµ”§bEÚÈó̃bi-Eïy£jÍÇD"” U/ˆ@+üɇÖuÚĐ‚„»‘&¦¥|Ú…D·yKÛ_G€ơóàL<Q]¸Äs‰>óèt´ 寨P$rÄä^%HMÿ°gGX÷á•ÔÉ‘}“nú4ôUÙó¦N×›²ÁX»²bOdăÎÂ'¾O\áé·pỠ±NKW)ê–Ç:J₫È`·€DÂ?¹ƒœå¾U §‹ưËđ)çbÄ(ŸtăÜùSí̉ơ¼$ú#+Đ!8t‡vé¿‹T¿¢%Í\0?\ÖĐ:Ä?vuÿâWzÙĐ<;ÅÉû.#_q¾#̉”zö±•.I¡´ô<]¶<îøĂg~HÑlH’k[ø^ C3+̉÷/¥NsèÍXæ¹UÛön½ñ)ôĐN!Ç-{[&¦-Ü9ĸ»Û‘—_rönÛ@îrư„UëÉĂ ¿1M¼6CI¹ñp›Öî߀ Ú7C_R²¯„̣óhÓÆ¶®nơ<|;¢%I¤¤¥̣“ĂêÅ&åŒÉ¼’é₫Ø;MnÆ=³Ơèí»|øùwŸ¡Eùy¹Ÿ3¾çææËÉÏÍÍưú%/÷[^îׂÜoÄOBVAQ^QQAQQIIYYYIEEUMEY]U₫ÈI7Bhö ]½z«çÍ·¸/^DÎÈÊh :ú“ä…,'§×CV,Zî5øè̃¨¡cíËÆđưËG¤¥# ú-I#–0 ¼vƒó]Hm¢!Ùôô,6[M¢ùiçö€ Ïv2ô»÷̃x§”ˆN™‰W4Ûë÷Ri‚Ăœ]Ơ’ oƠéU'¹‡n¶kOö+‡†ø9‰?en[đ<ûPwR³;–ÿ‘Ç"rzƯc!ÿ»Üh³̃¼@­$I¿cÛư‡:-´²~%:ißµjê¥TH¿‹Ø¦\%Ó—È“'¯\<¬)Ën¾¡2^»Èá ₫«5?–îæ¢ªAdù-Y›púéô{çÉ›’âvvZç{đ¬Ö*ă&3vY:ÖL·̃‡ăááƒK‘¶=ưnN›4áÂÇMÓçñĐÀꮪưX¬®…fÊh¡¦ï‚Ù±X×ó½Í™{¤jăÆz ÄwŒ4¾[0‘×— ụ̈’ÏyˆTÚÍÉóVŒQ5¨P·N=̉îZ&#Ó?’Ư»^Î-b¾}û¡¨È7¦ªµd6¹è´Kr“;».åÇ[t±>Ü;¸'9ôîd¸çàá¶VưÅêûç ½†*"¬Ñ«ưđ!ưĐG̃åR.À˜ÅíJÿÏ̃uÀSƠÆás … !!"#™EdDÙR*%í¶Đø ÚÚJi £ŒBeÚZê*-##̉ư₫÷N×½×µ.÷^ç×ç;÷½ï9÷=ïø?ÿ礂¨ÅRöÛô$Ú8¿G!H”±Ú8W$ó\J)E ̀Ion¤Rzúk¢‹¥mÀ/@¿ñÖí'$á'Êna(z±~âh ‚Ó·`?ùÂ7Îí¤̣ßb=51ˆu$üTq+秇Đ÷ßti~ûY´h¶œ¯Ù8qü焉í¶tÖü¾Ÿ^ËÀl#íĐơZn%o/Úüê $$₫«±£à—ê+cëm §‘Ë逕"UØMôqĂ>R§cJR'…€TṼ”›»‚6̣‘#%-<óÂ…B—æÏ|™0qa;.¦5?ÏjQ $’ơBI¤Pø¿÷̣Mđw¹Ä"´¡ß¦™®¿_ºj ¸¦3fL@̉ß­¢-´ùỌ́ẻ‰I×ö~ư<¹¥k\\–7›SS¥ ¢ùƠàk1å±À L¾]Ys½o_8Ñ$ÚË—­~ûn§¢B“—/tê4–- øR`%)ÛÔ»¶m+X¼xFû.b¹í?E…ù¯sw*)7©²­êKJ)¿zơ¥OŸÇ¿%$äëâÅ+Û}¹Íï_’̣üÀÀũ̃ {¡î 8½¿̃§‚UUík̀ÊĂ7ø.ôư …h~ÿ¼½©ólœ:…ù́–'O:+ơv0P´•ÀÏ?33ăº†æ;æ;¾~‚DÚÚ₫+%B4¿ø>bñwN=Î~ó»²Z±·¤£ƒ¿€†F«ÿº®vQPđ*&æ9¿X´s'M=}Ô@ü[eA4¿æcÍ-8öëRR}Æ÷úÇ‹€h~Í¢ù @ í1ÿ‹¾' @ºX»víŒk¸0a:RzH‘x(Á8DE)""$.Oó₫ứ—¼¸„$…ŸÔ6¿•ŸÏ3…È%¥ẴJH ” @&€T°oßqº°îư]\‰¼i=¤ß>¶÷Ô©ï_J»ÉéÎ^è§§Äê Ϫ‚k :pñ˜L!Np%@ -[_»#¿âx’˜üyô×À¡Ư9₫Jµ‡.Ơ.ߦ¨x²ö¿%ŸR ™G—wúÙçi9-KÓ»>=ÿVÙM¸øQÜăüñă©YåeG'¥t“Ó·4ư{lăëô„”ç/¤•ô- u‰ÆV?oɪÚĽ§â„M$9Æ"d2…i}z³u$0Ÿrj̉µ̣¼ç²†j[®>7’‘R’'̣’¶µ¾ß?^¿/PRêw%üS bí4Q¢ö(‹²oo¢îÄ₫,!9™ZX^đúƯ%µ¾7®„ÿüƠÉ̃uŒp›$ŸäW{~‡à߃<ÊÂ÷„DÇ¥#BƯÆNusH=6̣Ø™s1å$Dg ăây5{û“3b2ó+++'§Íö£.]Bº(›˜ö­e’²‚à ­¯óeÖ¬›C›A9I§÷GÉôV÷YëSÁé*Á/BrĂ[~JxÔ ́´JYYbsœ|ÄưôµÿR§dÊø~̣ăª¬æđ«¹×qưR©¬ iTÈ ó»V ÎRoT̉3ĂnỘ½émI´»t¶V@Kyê -K•‹ü<Ă),ó\®'‚äÉơRê‹=@YYUIŒÈGØÙú³w ¶_½#µÊuøD¬ơ ÊÙ9A.ä=o¤POö–%…#æḍâçû ²lƠäÚȈ^0ùj«o¬Í₫nOlÓyƯ©‡̉Ͼ"‘D¨{´ÛK¹5k£É—F“-Ô#‘æS·8§P(§½†agäâëœá¯©_R¤"$D—.›“Î3 _d"B[ùÛ’Äê r³(Ç|ά°ơMäp•(ø̣»JâÏ_.äˆ ÏCô7â!‹åm7#ÄưdÙ̃ôˆđW; …"‚iïmyđwĐ >Ø ÊYÛ!ùÑ ™\g¡ª·)ü=ƠŸ`™çhÅև͗uíơ—_>|ü]¼³^=£¿r_º]Ö'«×D× Ù•~ø÷Èo›)4–qh*éĐT,duXâÚIƒáböÆơ¾ƒW!H<~*‹ƯøQ'V4ø̀ÿY`– &-û¾1¾Y5»¦äí…¿c6ƯH»E Êàd…è*̀G{*%`MÄ’să}n¼_j+χ|̃ö™°g3Ư]zó#₫½lŸ»¹ÍµèÅ)u‹qqeËwù…đŸ¹+ÅS_!ư•éÖkæÑ–÷TĐ…MX}=hV“·Ô¼|å̀ˆác8Ûö²Z[¯¶œ~|º0©4zÔ9ơ”˜Æä9 æQ‘¡·K?[YƯÆà§“~˜*±êªƯïBúïûF̣zWzÜiyS7 ~®yÉ_¯©.? †x%Ÿi¢ëMm#`|yT̀?»µỂsCbʧHS̃ÜH?._OakÅ©ÖWÎÜøÄSáͲ™ZB¯o­B=ÓxüK—u7.¬¶E:<Û•‡y/hƒÜf?ù-J ,úû©̀$²ÎÓt§2…̣JÜd%…̣w»₫ƒ m§o÷!Eø”R(}‘Ä{4ùHûLIɬ£ q́®=r;ÀIæëdA&3Ù1§»Å2yK͇Ăđ83.P₫Ÿ@‘ĂĂÅTÇ’ÉØ¡&ÈäÚÆ@éÊôáM?µonTŒÎ£—Çon¥ª¢A²¤wµáïÈ,K·̀ÔƯv%ó/SÎ6׳fºÍ½đÅÏH"`bï]±o±;n¸jI"¤²2½orŸ²âÄÜS_ǜêÄ9Vi*Ă»ÛoÚ-̣4ÏÜmL³!?ÛèÄj`CrËB^‘)`h²Ï/³_ó¦6$MLw;cÎ×̉̀X¤ûä¬5 >¡-Đ¡#]Í„DÊéJ¾M]׿mê„…OƯœº̃I©”•­=¬dÀBrdpV¤É* zÁW-9nÉÆË‹UH¸X|Ê|€?jmÖ*Ù_ØØ¡ït8ú, ₫f¯7í$ƯW½Ç‡l¿éHµËµ¢P™6ÎÜ(Ê{=ª£=È´‰rÏ{îYÊ<4P€₫àáÎD§D}X½t–¡ Ơj¿8wæ\œæ#ÈÊô8K1ªƠˆ²$hüO6óƠ´±ZßÜ–í=«¦Ô~|§ăd²;n\nnÈ80U®³CÈäăX ¡W"9|0gÑ…ÂeFÄh[3á{“²K–“ß)Hv[¶9n/À,Ê«#ø˜æ<ć Œi¶X“X?¡-á¬^Û{#Tb¾]³¢ỳ"8á9:R »>“•V?œF±•¡†̃8aˆN«æÇÆÑØK¥ïöWjg'lÛŸ^óâÔw~ÈÎÚ¨ơî₫ùk9jÍñÿÑ57*O¿ª¦6ƪ—›ú  á"´ÍmDù#GÿJZo‰«ñûG~–ä'hN+ÈQ(Çꉨ;5‚25¢>IÂz—ÑÀtJ`=_Û“6+·„¢¼sÅK₫Úµ"YXBƠvâ¸ël]ÓØ4–‘ÉԾ椛ÇL¦OéU÷ÊZ*´¿~ù‰]˜iÿơ;%$º!¼&¹¸ŸnÍ£Ú8 ™ÿ¨ó́¤đđó̀2–uÎ'g7ü„6­̣«z{8 ´Ë~C̉®<Sü₫ô¬å*[׉èÿÀ}d°.ĂÎĐH¿æªUJVrºXùå̀ëĐóWs)zêôÓàƯüHS:i›AÔ€¦‹ÇÈ3 .ö—eF̀«cqæz5ûƠ,8 ) ÿ̉ªí)k†´FÚđi¹Ă·¿·]tTA†äZmơFˆ<Éh”÷µ2_ÿ¢O&?̀>æl½â’‚¡ÇL;í₫̣ë^®¢ › “̀F{góÓr5”½å±Å©ïR?ª óŒ™!Ï¢‚Ố5e÷ÙïXd·`Éü–ó_ƒÈ:ÿ±<ÅÁñtCbXâÏç½_l=ve‰G2‚àb¨ÁœwV7°´Öà8£ü0Ø‚̣“UEc´7n¥N+¬!ARƒ eă=v8),đYµƯ”³=h×%ü_¡Ÿư0¹èăûшIÔIp?ÿ67¬2lÙp>À¡X¾swĐ‚ñ´OªúU ÷x{̀ñ?¦Æ!OuN1o¬ú¤ÎEđkCo¢ĂkYijo­å Ư¸ä¿©»­ư£á¢¿"̣ø-bä{ÁË’Î ĂßAVvɱ×1Û„Öê“d÷Q?N%ÅÁ'-s$‹:>|ú1Å´Ùè$¿â$2yvM;æ9wvÑÏă"Ù£6pÆbTkÓèB*₫:nă'Ơ]w„RT§F>\ÇÍk^ÚP  e₫.+ủ~Ë$ÿêbƒ(p£Ï•Âù}3eU-¨Ù=T7. ÎL¾ÆU5ë8 ’¦Háïë9n"Œe}9ÿ7—(Ó'´¹êQ¨ÏÁ'Đ#ÈÚ4áKoQ–Ö\nª}!ü!4ơöïˆïü%ÛiŸŒ»G®“Öq¾˜iFưë‚öưư¦¹ù¬¹X:æÈuJjo¸ø.yqÛ%<ïÖø]h´ă‡/‚k7Ư}₫”)ö²²PKdI¥^‰ ¡̉wó>s ơ₫¦pvëOú» ÆóQ»€Đ!ÉôƯÖ(¥Ơ“×đ»˜æƯ1K ¤ÇÂĂÍázÊ cÜ÷̃?1{ áεoçÓ̃̃>**ª1ÏùA¡€´ ÷ y„·VVGgĐỜP̉£o>_fdBÎÏ“•ù;’ṕi$ƒOpZ—JQ̣̉¡ÎÑÇ:¾‡Z!¾¦²T[œ©J;̃ƒ/ưù·ĐÙ<5b½aí˜Đ¼¥@ï±È@ªR‰Îœfÿ‚Ú˜:—Ÿ9l VAËy÷ÍƯs‹F€@#Qöâh Oüă¨U‰bà^R'½ư¤ͱ¯Û‰8YÖªŒù}† Cü—Cøé§”6y­—ü>|]ÈÖs-óÍ¢Pöb!Ø.Îr$ "-++Ṭ«¤P—‹>Xßuàjø˜]EÑ„Ÿ­H& ĂÇÄBÄTq2E¨«Ô倸spJ&6̣‰F³8Ï’ŸßIJưZ\i?Lỹ¢Xn‚?ŸJƯb₫œđm­YŒù&„> Ÿ©N½ªƯ8†]`.êvå× NÛ3=·ÓßD3ÎHX@&Ó¬úüW•I/‹•ḍßu¢¾‹ĂYd ͘“ü§’¼A¨= aƠ¿óp̀¿E™Ï¬¹©9n&“é·›Ơø;2Íyåç<Íũùmp1ăäûưăäÿ~nc­d73+*´&DVˆơo`3«Äµ̀°=ùp?€rØÿ,í‡!‰ÑơH̉AF¨ LùAqºû‘_]˜ăåÂø¡NüD}%@€ơ’Ÿ¬íÖʪăŒW80₫Ûi‹ü…©êê)‰¤ƒI¤`{W»¨s×±oc ZÑ́‚]u­3+ZßtRØ©C,oí ƒøf"&«˜¬¬‡ä¦åO€ùÑ+6•qÊ8–·«±X`.>`…̣w‡ºµđtën†®¸EYÁü£îÂ[”ú·<5­û¤îxŸ O‹³lÍ5́ÊưÂÂBeeåoß¾±éy¤ÖN0‘̉̉R¶>’>å«W¯fK÷®ŒŒ _^^^Ë…&©ƠÁ®tèĐAPP°¬¬Œ} ăê‡÷ưóçOK+"‰ÔfÆWºYC÷åååĐ›÷¦Í.D¶”ιsç\\\¸§ëü8‰®]»Â_¨®®®¼’f̀:,[¶lóæÍ­ư+-DuuơçÏÔ}@?~¬­­ÍCÙË.®ª¨¨˜2eÊ‘#GÚư‹c·KHH°Ï•ä̉W惿ÅÅÅbbb¼U:ăÆ£ZÇÊ@«ÂØØ»˜5k¯ŸṽªäÇÊÍWS½utt₫©=đ¾|ù²~}Í®Áaaa£FjÇïÛ¹sÍF¾ß¿oß%‹“Đ|UUo¥oùưëHN®Ù™|Ơ.]º”””py‚‹̉̉̉°kPTƯ»wçf/²”ö£Pyyù?Rµ¤¤¤h?‚kơôéS55µöêD̉v ³«§—›•âïß¿ọ̣́zơêÅCi†èăă³qăF‚ü₫iĐu#üüùsÆŒû÷ïçæ4‹‹×Ù¼́ÜÜ\eee.LjHHd)mHEEE+ Ụ@Ơ ®®^\\Lç´âN$na éêj»,VUUU.÷çÓ “ ¿x/œŒŒL~~>o¥ùđáĂS¦Láæ¤.DàR¤¦¦>zôè_«ZƠƠƠ’’’àÀß?¶×—ơFP÷+‹‹k¯ê–¶ơA~ụ̀…‡̉‹/îØ±cDDÄ«W¯ÀV~øđ¸Ñ¢Eị́eåååoܸ¡¡¡Ñ¾ËtçÎG=|ø0O¤vâĉ»wï^¾|ù́Ù³¹6‘ùqS§Nå­c+çxàr®X±¢C‡̉̉̉Ưºuk÷óà1`ojmm ×₫üÍw÷î]MMMúWUUmO/«¯¯ÿ₫ư{…wï̃µă23g8¢¢¢ÅÅÅ\Ô€€Híưû÷!µǛ|ùq'O7n¯$xûöí¼’TP¨<÷³²²ø³ í»:uíÚơÇ'Nœ¸uë‚ÎqƯ·oßêƠ«srr¯^½ª¢¢̣̣åËöñ²Øb›eË–µoæĂÊỔ̉’Ë™¯oß¾™™™BBBĐÖ?ÎưKçÄ+ä·råÊ 6đJÆ‚ÜÁ.–,Y²sçÎÍ›7·ï©FFF`%áâÔ©SX×4üÅÆ;ù@öó]¸pA^^߯€Gá́́ ̀WVV6cÆŒöZ O<ÉÍÍ…28qb\\w&̣èÑ£©©©àVđPï:A~œ­¾ºrå ¯´É°°0́”ŸˆˆHçÎ_¿~­¤¤ÔÎªĐµk×ÔƠƠSR¨§ 4_ú†‘ßÖ­[{ôèñùóç/^(++ƒ=…ÀÙ³gûøø ̣ÜËm?|øđâÅ‹p}đàÁ ´K³ ££BJ° ·%#¹ààà &€s äÇ»èäÇ]¸|ù2O¤óÎ;<´`nß¾}“&Ơœ1v́Ø1́BQQ±²²̣ÀÓ§Oo7ơ§OŸ>¯^½Â®ÏŸ?O»èßë˜ÏÏÏÏßߘ¯°°p÷îƯ{÷RÏà¼~ưúƒÚfÏî–# ÀƠƠ˜A2‚Ó₫˜¯¤¤ÄÆÆæ̃½{À|º’{fKfgg›™™}øđAXXh¯{÷îà ƒOùơëW^̀j‚ü8qqq###̀mçfx{{§¦¦̣D–Î;̀₫ÑÑÑüÓăÇ©'¿ óIHHđh‹¥6„3ˆZ|ĂX ´«H×­[jÉÙÙê!|çÀ|+''FŒw¾éĐ¡CO<éëë‹s<„pùN MÅøñă.\8pà@¬ê.[¶líÚµg¾•+WFFF>~ü˜D"ơë×ïÂ…  ÈÉÉAĐ}y:Ă ̣ă €uæ̣1‚W˜B¡à‡P#—ù¢££¥¤¤xå´Z”––É ÇFø0$$$èèèˆ̉Ƥ"ѱcG`¾ÀÀ@lKLím̃¼ÙÔÔ|/pç±ḥ̣̣ ñáRÎâû÷ï`jA­ÆÄÄĐQ~»iûÛ·o÷eçÎXøÁO<áÔÆñ^^^Àv‰‰‰ØÆ¡ ítuu%%%ß¿¾‘……Æ|íùqÀ½²±±¹yó&w&/33<>^ÉLy'Nœ  Ø.h`ă°¯@&.X°àíÛ·ÀmüyyyŸ?îÖ­6B‰$û–-[Úó)**B„Jdƒ†„„@¸““S›mH´téRHüîäÉ“q2^¾|9ĐY³f­ZE=uögu ̣ă€ë÷û÷o.ܨâË—/"""¼²ƒ†½½}TTÓ¯Ö¬YĂ˜ĂØ6»»ví?wäÈ‘\øFƠƠƠ PŸ?.!!ñæÍF™ëééÉ”ù0Ë̀wøđa;;;\c̀œ ¢mrFExụ̀%°QXX̉€$ 2,/”ƯrR   0Ó¼ÛÀ+++AÏ›7oΜ9đ¼ ÚB́̃½;È\lCÚV̉ĐK–,9sæ 84´[Kƒ3sæ̀™¾¾¾—/_ ={ölÇûÁäÇuPUUÅVbqUª®\¹baa¡¢¢ÂưXQQ^ó444đ‘?:€IÂ.€`̣óó¹a/ccc[[ÛƠ«WƒđªopÛăøèÑ£ơ=¤¾qMl´LWW7==vë}mmmŒùPè`1‡®‹đh?†´¹»»·°k…¿‚uS_¿~‘øAæÂ[àS–xàiA. bZ@@€n̉&d)HyÈ(bvíÀ°ÿ₫}ûöÉÑjJĐĐGP‹‹‹ƒ’Û»w/$ AÏ^ạ̀óḍkÿ€F̉·o_îYÊC³BôơơÓ̉̉œĂ ̀gmm-gÍà¤ûûû;88´Ù+lAqÿ₫}lùí„F/–œœÜàî₫Ÿ>}bñmFF‚î…¦ĐÄÄ„î[ÚµđÇC‰oOÜ¿¼ă˜u T0÷`R1ơÀ 2¶nƯ-Ϋ²²2YYY( é¼RKKKA‚t†:†uZBâi‡*q‘ÄÊ•+A¯‹‰‰5•ókê˜ưmä¹h`ăh‡grrrÀ̃9::6r§´̣̣rooïC‡;vóæÍÀ[XøXy¨ƒ`=Án6U(Ц¼AàĂl`ÈXÈ´ï¸J@u:t€kCCCWPP`ñØz¯_¿:t(˜o(îYí#$$Đ»S§N…æ@K-PÔw/Đ|hh¨››P85̀Ÿ000®²¶¶®ooU3pqóæÍ«W¯‚c±~ưzăÀ‚3Œ²đ5*̣kW3̀—Fs÷îƯmđ‹àHîƯ»÷̣åËơMàgŒ1,ØÍ8,«ñcBMMM|>$°ncÆŒ))))--7|áÂ…đÿVHHhÆÿhM°z ƒ°»Z²¥NóNú į8R¬W¯^d2ÙÅÅD ƯâÖbîܹs›6mµ:mÚ4]Y±nƯ:̀µ‰‚E2***@cœJLLZ„€sÖÂúy½xñb||¼ººúèÑ£gΜIÇ.@WđRÊÊÊ@E ‹àc¿~ưôôô h ôôéSŸ»wïúùù-Y²¿w3 ́jEtt4ü¸/yëÖ­ Û,,,lmmëÛfÈa ̣û§¡‡L<ˆ`ÁÖø 0s¹¹¹û÷ïç~GRBB,XađÇÙøXŒùX/ƒ8aaaใ#l¥¥¥%₫-DÆƯ§̣óóçΛ°jƠªûKÁD‚Mq€•2hM°•ly;Öç»–••Á{?%''ƒ5đôô¤[9₫4 à¼Ă“)€]€2!æÁƒ]]]ñpÚ­d@hIœ8qBZZÔỚÙ³éÖT NCÑàk^¸páäÉ“P@¿~ưúưû7Ôx,|ơáĂª¢¢‹¾¾>ƯKƠç媫«¡¼|ùđVqq1”‘¯¯oŸ>}tuuAÉkÂb©h—.]\PÖŒ ?MxˆĐ̃ =ƒ`×b;04ưû÷‡¿Øzg®Å‹/°™­: dÖ0<<ŒăŒ3è¶u8Eă(##Ă´°@ǯY³DLJJ»»;Ög &²5öb‚¢7nÜĉ騾ƒ¢ñÏœ…ÿê ˜j)¾v‚uÇ †=z`s|°@3'>̀̀̀gâƠ«WØ }QQQ\:§¦gÏÀ7@̉tÓs@·MAÑ`ú¿ÿt{úôix¸;Àôrrràʃs“““³`Áhø XÈ1_„!"ȇʉŒ)4Ưàààơë×7ï!ïß¿?~|RR¶¯#×¢ªª ̀\AAv » ö”ÇÍ›7Æ ÅÄÄđ¯@@×`X!í¶Ôˆ˜·oß‚"¤“•@K ½ |›´ƯLyyyPPĐ‘#G:wî „=₫|º4ƒŒĂÿ² ‡ B922ˆhƒvưˆ#¾}ûR8==ưÙ³gMCC’‘‘H[ºy‰²³³¡6»wëÖÍÍÍm…2ømÇóđđ} zëÖ-È@P̀ _­¬¬ÀaÂv'aü ʧOŸ>|ß¾}pO£‹|ñâňˆx8°/¨7(>LM È@[.Xíf̣́,2uêT.̉%‘——7ỉ$`¾–<çܹsÀ1`÷́Ùƒç@¾Axƒ÷̃½{AW¼±EƯÄXÍÑÑ‘éÂ`,º¥‡`ÍAÜÄÆÆbkÈd2ˆ30î HhAƒjYƒ‚ů·dó6pA._¾|ăÆ à€Ÿ?8$0–?LA»E;(*H381p 9 H …®˜r7 ºǴ_ä́Ù³YYYC† 5jHIlư%å½(°˜¸x=xđ p¡¢¢"-óÁOCuÂW ¹,@»̀Ÿ) ¤víÚ•„ơªU«EV04fÚ1vÖ÷Ú'6—ŒkQZZ ² ̃«÷fdd€m5°nƯ:,ÄEK̉̀'##Ó˜¥L1räHpSú÷ïO»;Wcàëë L°cÇ|µœ¡¡axxxó¦₫öíÛ—1’våʸ°°°€Œ^¡ë½víÚÊ•+!cu¿¯ đ%È# À 6à›…b'Ë3{Ư»woË–-À¶¶¶@êtƒˆ¢¢¢KP4₫e±Bø-IIÉĐĐPH9Ô¸ q0ÛÁbrÊÑ£GÁ/éƯ»7°#—l”J€ ¿ö0 Đ´Ö®]Ë:ZHHȼyó¸öL˜–m<óUWWĂ-~~~ºSIc-4À|JJJMS B³°°022²1‘+**@Q 4hß¾}XH Ú8 …± P±))) îu)00đĉ:uˆ‚N‘€]‚©b:|ø° Ö?ôû÷o³đsW¯^Å–p€2cÜnê*|Û½{÷Ó§OëééááÆÆÆlÜ0V^^₫äÉ“&&&đ[xeXùhđtÓîéÜR®Ư)›̉̉̉¬7"Á¡¥¥µjƠª1cÆ€Li›}p€ù0á̉˜È½zơ¢jpu6pÀâŋ߾} T!((øøñăF&ïßswwzưúu CL`Í₫i5“? ́c#ŸÍwmP1ĂÏ©¨¨`›0đññƯ¸qƒö[Œ¹—/_NK9~(pEÅ®Ưă€}AäaÓtY4´;Cδ’"¬Œ;Dƒ6¿D0ÑeJ&<A\4ĐTO0_Ÿ>}X3h#YYYŒ~²²²Ú>…đÓÇg=wñ- \¢1} àx(/`&7OÀíÛ·A¾÷èÑ#88ĂĂάPWWóæMƒ ?œ%‹­t¬o¥Gee%ä?œ|LLL¤•‰S¦LÆ3§Á‰‘ؘ+k§­1ÀT#di³OxÀ·KêÖ­[ø<Ơ66=z4x!ÿæN›ùhïß¿äÈîO¼˜˜ívÉt{&´»öüm6@c± ?++«ØØX¦¼>`À Ex‹Fî×µiÓ&O;v́Àgi2„é j z€ùàádÑ΂äää>|øÀt¿··wII ›€€NŸqqqNNNÑÑÑØ.ÍX…bmv·Ö«̀băÓ¦ó¨€ăûöíËxhFắÙ³´ơÊÑё؇“ ?̀áăăăîîNw|]DDÄÀ¹<åK–,aÊ|ÅÅÅ...111ÍlÂv@ö®X±h‰ñ+)))¦SA”-aY<¹ººÚÔÔ”.àV h|Úzơề7sæ̀ĐĐP¦Ë3ôĂtÏ;wđ9)´…Z|ö́Ùø&/@Ă |±E÷–––´§ă¶À|‡:ujăoÁ¶£k¥=?ă1ækê?­𨰠(©¥K—>|ø0wù¨:a4hĐ Fîz̀Yôë×.¤¬¬̀̃̃:ă^øG||}J‚™`>îLpbbbii©ˆˆâííM·ŒëEd:0yđàAPf˜ kđô†f(qö¸´éÎ|ụ̀%ˆN°§À|đ‚½{÷:Vn›C€ùLLLX,Djû9Û̃¡üúơë7ܧ¦-ï”Æz7>ùưC?~<6ïńر́Ưú²•àăăƒ_ÇÆÆª©©q£Í¼đñ9::̉Nn¤UNªªª/^¼`́E„÷ˆˆĐÓÓkä•-0j©¨¨À¯]]]qæ+//>|8ˆl`>Hff&P{ ÷h€ù=!@œ:Û´/0G¨·A`̀ÇCÇmäG µ€oø̉È5œÅܹsñ=ص‘J€v£5Ú©: ă€ùhcêëëƒ ¢¢¢̣́Ù³¶O'0Ÿ>Dôë×/¼‡ßà“À|²²²d2™.ưmŒÔÔÔ’’’.]ºĐ…ƒ{ÁZ¶€ù°="¸°Bb̀băóṭ#À1`{ S(Úư¥¸¸~⪑•±xñb́"''c>°‰ À·f™4iRtttăOÖm%ó?Ó¦•••X h;;;;‚@̀À|X)Ứ¨¨(0ƯØdß¾}Ûf)gƒ€Rvss;}ú4wVK`>H› ă™̣kÿẠ̀́́Ù³CCC¹?µØQ¨½zơâ!æĂ+è01,--…·ÀÏCHHHư:₫|`>.Iíƒ0̣«ªªBjÇ#ÁJºººîƯ»×ÓÓ“«: m¿ÿæă«1GX72÷$̣MMM#:¾1À–‚ăŸ½‚üÚ9#"" ês?ù¶ºlÙ2Ök¸€”ƒrMIIÁ&•——ûúúsÛÖ©›6m266¾wï^uu5|Œ‰‰Ù¹s'Đ3_jj*·e¬˜˜˜®®nFF\¿zơ«˜0‹±In46‚B̃Xä¡C‡r:Áùqù.Û,2¹¨¨hÆ [·n522Âv*æăÎÔb'€̣ÓÓÓ‹ŒŒ´±±Îǹ¹~ƒ¥¥e ÷i%€Ó@;­ ̀F€ W äG ‘––F;…’k̃=ïÎR{ôèh)ào ÀÁƒs§Æ"5 àÏŸ?^^^p „͵©Å(ÊÏÏ÷îw¦PTT´sçÎ?₫äæB拲··'L"A~ÿ ^¿~Íú́1.¡¡!~đÏB¡€Y9tèv&0÷'ØßßßÅÅåË—/ºººjjjÜœÔ={nß¾=$$„›ç.6ơMạ̀åËùä÷A÷§4h&Íä̃½{çééé5ơœ#NÁÇÇ'""´Ưñ ܉ăÇsy¸¼¼<đ H+nNdhh¨§§gXXa ̣û' $$Äéd\ ÎC””,//gºÍ4wb₫üù7näæi´È̀̀ ç̣ḌIJԷoß&‘ ¿t'qs-œœœx7“)ªª*%XLL¬¬¬ ô O¤VZZËûf‘Úu\BöäG€ëФü¹ yyy<$ûxÜŸÈæâÔÆPTTÄÖ• ¿ö.9‡¥A(++ón&ă' ̣R çă#ê0ÑÆ‡¿7>$È ¿öFr—c³R“äTÔƠuÄ%¥±đÈÔg™ŸÊ±ëªª_^>É}üP¼›„Û(§."ÂmŸÎÇ/ßƯ¾Ơ¡#ï~º=•ƠH¤µßˆ}BÓI¡üù˜û́Mv:¥ú£wuÍÅ%§§ÆGKÈÊ+jhKÊơÆod¾ù›É•y/rr³Óºv“ă~~,üA^1æùïf~xơTߨÜn'§]OHNOº-­¨¢ ̃_B¦¦è/ÜËÁ“ú«́'µg¥Kơ”ss.$(Øö‰̀|ñæÎ­ë|zkèÊ*÷­©Ă¤~Ô&’̣§êđë́ ¸rp°WVèҬ¸ổå+ß>Rî¯ßKUS SÍØ¿û’uxf~ùøʽàĂ[c + £„%Èg@₫Zt́đ~«±Óø¨&@¡ßøÇ">??µ¹Â?¸Î-Ajx”tSTXØÙ̃ºơXyÛÎƯjúÆ=•Ơ©Ÿ»H™̣dL‰\ ø×¥`hІúñƠÓ—É çÏmûL.)ÿµ3$ØÜÅCD¬+|́Ö[Ư®·:«LTê§ÿàú5¼@)5ưÙ÷bù; nNm“æ“—¢ªª«û›`›đ´ua¿«” üÓ1·Cj3¼̣Wý©ƒsç̀mṃ₫ZôóÀ̃Ư–c¦tî eTuTuXćhÊÚá\?/EHMmúí()‰®Ă,[±ïØ¥>ÀTV©/ơ³¨´…ëdVu¸CGđ3àµ₫Ôf釗9¹ï{ÍÓz™yêÊơ_¿~i¶A?uĐ:’u|É đ¯†ÑÑD–ư,¾söÈ¢E 9âUäG a{qôh˜Ơ˜©"`ë1¯…OĂ TưÏy¯Ë¾|d# m ¶t›ÊÇÇ&µe}J}Ôá$̣wUƠí3‡—-YØÚ™\^Yl7i>\ÛOöjáÓú[a™üư3ùó«¬q£ZevOÄÅk’̣Ê`ÎÔ†´đQ àƯ1̣>µî̀Âl6ü½´́`è~k÷™̉Ñ㥇âê ±Ç²7ÿÍóêâo6V́â¼ -ÁCÇMïÈÇgåÖ̉“§0:„DVUư?téB/v–{/eI9µ-|”pgQ¨í˜WqăØ%‹đ×väG€“xú₫ó›ùà~¶œNÑ£—̉K gTØvß+ưœj0A›ÁtZ»Ïb½äçæ>yơж•~~­‘ÉŸ ̃Nº§n`1{Ñ­‡,üƒôGî Z³f »»víÚ‘3—k jé3ĺŒEÈ»ÔÔ~J²Ệ-íÁËÍÿọ́•¼ªÊ|l†Lï¾ ^Ûá³Â»%u8dçnhe6Ù4?§¡cg@"¯غjƠJ®-w[99ß~?OO0Óï/ÓC’ ?œ´Æ#'N )«$ÚÚ¿eïé•ö¡¤èM¶¥é ¦̃»108£5hƒSƒù¸ql×åËØøØ]{,\'óµvúÁfeä—¾N‹娢M7.̃¸#ßßÖÚ VPë_‚ ûĂÏđlæ!æ ¤ö=ad; ˜¯µS j̣á‡â’wO‡˜6¹o „Û[Ă¿¤ĂđéK ß<¾×{éâ¦̃{₫z¬’¶a”{_=ăÏä|èÁy³ÚâÔe‚üÔÁͤûRÊ ơà³ùøº©èlÚÔx ø»—Ø´W×9w₫æQ6-Ô£—ï~ ta=–Ă^H” †m ^¾dQó€¹m™ámG¥‘VΨ«Ư¤cS3Ä{©óµ ăăïªÜ?`ă&_ŸÆÖáʪß×ï·¼¶I°™0ûLT̀û&́>¿)hsËÇ;„ÁNîó…Ê 4Uû䇢8$ÆÜîëa¦Đ’d„Xë-Fê™èlFZœÿ7§PîІ̃ƯĐuđ*¸Xÿu­Yw<¼́é j'ûê[_‡̃n¶6¹¦ºS(»´?Edܱ˘+î8̣Ä…+Æœ9–$àνæÏ̃`̀’̣_i¯ó•µ80aLYÛđNÖ5¹– N\OH‘QƠæÈj2k÷Y‡#ÎL?¦©7î>x¤™¯Æ1êб£Œê¥¨Nö¶¼åTd”áÎÔáÉP‡÷ÏŸ=£Á˜…¥eYï¿cÓÁÚªz&q™/Íúơǹú“½‡ĂÛ˜ùj(Ÿ¿¿çÍÛ 6Cx̣èv“_­µH+÷Ñ«™Tơ5Y@̉x’¹â$fụ́"}ËĐüï†CÇÍơ°£}FN̉©5!ç„»ơÙº{SUvLf~e%¥‹“ƒiïÅ@~´1÷GÉôV÷YëSQOÄMVn3]¼¸Î\b- kb̀‡hlZ;¬{jZg,P ̃€äI¡„Ơxâ2îÊÊHn®2‚ärɪڄ‡É|#d„ó¥à; _Ŭ]́’µ̃aå©PWZ6#¿ H_WfHF₫Ưkê<Á?`£ŸoçBÄ&§+jèp*—Ä%¥£Œ´4ñí¯>~’êÓƒ¥¬g9|KÈ¥ › 8@”ƒkÂÁ4+ê™?ẓL[£áWîfæpùjëđÄë0xØ iÙmĐ[ºIË]¹}Ïy˜·i>:H©éç¾ËăÈâ .#¿¿ư•RC~üulnê&k#ª€K(¨2•äÓ'‘æM‚O£)”3È·+$‰ÔH½<(ï7Yaë{îfnn7ñ₫Qºù…>)7‹r̀‡3±̃´,J ,&‘¨¦^Ö‡B̃ˆÉÄ*C;>Z9 u[zèb=ÁK3å èƯYd×hî)†O_ˆÊ5®R"ḤúnZöôÉ~3üQªû¢+­p.·LYq—ô9äSÛUơ'A:72 S̃NJ2¸̃So6øû;N]̀ÙŒRĐĐ…d4o LBB’̃ΦèØéç/GѨñ¿È˜Î2†—o?4†ü>óûJ+q6© ÖaÿÇi®Ă½µøøùúÖáüơXÎ2‚öƠ§¦?"Èï/|‰Ñ•سÔeQÆ|3)Ú^©³… ßGÔp̉û£đẁ¦i·HAăđ‹ ó#è:́x̀¼½cf°đă>“H=üM§ß¬wë~í E>̉wŸ¤Q’HêKô…S>8ïÿA¯wº’vqKœ¼̃×Đ¢‘‘Rơ\m柵ïVUÙ43÷̣e}†\f«q3¸!»¬ÆNoÆ]1wpœùjÈê?ŒY@₫ÈzAgÛ ÉƠ›±¬×œ¹z³¯Wô’½zơª¾:\M¡Øx̀á†DÄâÛ¢ÂÜHAVÑw’†Yđê,l&¿¿lŸ.d¨cÚj¦ë(Ù«i}/ å*Ư]¢=jM1zQŸ5>&.„ âKYn«Ä±̣ôˆw²L¢©]ổr̃E"QåƠÅܵ‹̉›çÙ'¿#3Ôv\ù{†*¾.ÂȬAº25Û¸ ½…5_ ‚:O„¯2h(“´Lë]üw>*º~Ăs#á·†Mœ"Vû±¢óơ«Ù<÷AH¤Kƒ¶˜©ñ1Ê,û<%è*ÚÂÔ×K|m†°Äæ2C1¤¤¨¨‹˜X³Ó¯>Ȫ¼¢¢1‹‹µÍm™ô{í^ÛË]/ª̣̃8¢~̣?&=ÆG\„oi_:¹ÆÊnWV¹‰“Öñ(í>ë •©ZK~UÏ 4đt]2lü₫Ñ.ihd‘€’}èY™^mô«¿Ÿ¼®Vwe$Üë8}Üq`Ϲô©LÉÛW–”‘ºˆ”̉gríàByQ‘PëCg±n×căí¬̀™2´¶© ]̣̣Ç×¶îVU|…´¯™œx› ?H»P(•$’’³†DZCAA¢vB^CÿÖ ₫«Y÷¹g)óĐ@¯˜¢₫˜ơöƯIÙº\q[Đ[=`mÖ₫q̀wÉr yŒlGŸ©¹Ö‰Ë6çëÖ£ ¼ÿă<Å™Êꬥ¢ˆ×T_JÏ&µ¡Î¢ä‚Y))Ư>å½ï£ß¨‡LYü_wSœU¥°æäè³~ñqgá­)Ƚü2!†®ÚÛ3»u‡̉¿êÉ4¼[̃û&ö-ع k=̀—_?AX×í@ÆééXg̣µ÷e²ÔôŸ̀+»yñ ¡Z35ªuÀ©ânÀÀy§moïí8dT 5·Ñ÷=÷¾L¹₫y9O_äêơ×dàị̈:I0q÷û½Q_gsäÓe#Ơ§Ék…çN‘8jæÅŸ¿3  ùe¯D ‹S;Ă÷Y ‡̀ËÈ ªx{|Đ `~ 2̀¡Æ­Ñ“`îJÊ4Đ)ßMúoæ¢úÇç¶7>„wTäÖ&̉3j{úÊ1j·–z‡CE½IơÛÔçeÄƯ °Z´ósƧ$ÈÀñ¡iØë|{6|ôCº¼º5ÛaÚQ*§~Œdô>æê)#͘ÈÏó{oƯ§ˆQu©̣•₫G¤(u¬?Tן̃yî‚̀́ng|:Åß"#|Â<(ăÔ¼;₫5^± °ïOjƯ¦̃X©«=.üe„ÏY¬Ï8¹dŸ‹ph2=oåƠs`}öó×Åÿ:đ¾ë¶`›̀›n4ÈœÚơrÄZxÇ×ié;JrN˜ UEj›Bóvñ­O¿—Hïèä—qÅï’Wßµg$\ïGWªï­¥ËÏ‹̣ô/…¡{™¾ÛSĐœÙTL~º@û̉̉}U;‡³á˜AàJ ³pĂ·(+ê}2÷́¢ûû÷ï>áK̃;É^ lIŒ`'æ¤c£wÜï)-ÁÈ3À|5æƠ+ZiÉưCô]µ¶ ËLĂ|ÔÇßä‰Jª«Yªê”_Ë_÷Úăüé‘å§ñ$°‰Zd|ÎĐí!”Q4ogvF₫}ĐOÈ€¥wă¨gÆî:q¡ n‘¯÷]: vj0Á"„˜º-ŒữŸÈp T-ŒÛß  `ë–Áopü*¨IhrèùAPq‚̀ÈBVù₫Gµ±ơUĪߕ e/Í­Ư¬h =ÜƠqßT°¨< ̀­7ßô¯±̣‡.R“dáwÙY‚½Î®ëƒ́v\|—H—·ÉBE¢Ö„LÖ 0¯Ă|L̀j_®¢¦¶Û̀°—±ŒIƧk¬ßô¤vß<ºÔâu›ú¿5zîÄ ¥RÎ̀‹äPiú)₫Ǹ#a!R†@̣µ²‡ëYˆç47ºCn”£r0;.Â׺>OS^t*µˆ©ƒâNÛŸ;mGJ27ÑU†‹[ẹ́³¾—ª₫]ưÏ“»QTÓo÷!~û—|]:˜O‡JƯ¥%Ÿüí÷῭}öª‹„¢”ƠÂZTÇ{~ȯŸ”#âÊJÔœ{aöÊ,çĂ¾ÖBüô·0Å÷¼W:˜O„ë§ƠØ rfu 3ÍJK‘‚_T3ÚeÀ º®Ú’‡ÿ5¾>hë6yÆi'ÁzwíZÉp>œ±g,m¶Ûä•Í´®6…¦ PúôB¦ª ?ó¤Ö̃÷=2\WjđµOe™|¡́¢Œđ’&©+³ |Y„ổÔL7Twû̉ŒÏOt{Ôd»ăê-aäa)̣«–Úê#¿ŸEE ´è/Ÿizî^èÊÑĐ¥ÎêB_>×$àÚIo¼ÜeƠ<2¶¦ăt.^ØÅ­Oe’„.oƠ.}Ù*-©»Ñ'A ?äê0ïßV×́ÏhIS]A!”:¿®vç¹ûĐ Úy?9l } ª¢©ÛŒ1{Y93iÚ:̀ë°B¯Û_w•ª‘\¨W"ë°7ăóB(¸]YåŸ^êJ«„a_ƒ\³ü›ZêíbmïJ/6a¨ Œu•éKQß«‰“̣kÿ½¥üG^-œG»ưb¡ k„ªÈ‰ü20Ó¡ ߺơ2¾̣m̃EIßj95Î%ăƠƒs—¶½̣I7ÿ£p§ÎÀ|Ód„énaÚ x÷f¤e=äg:@÷BL¶3 01ú”¿3oưí¥ëªíbđ_F~£*ÅÇ',›¼3‹§û¸Ü̉?4‡KüEC±«ƠMá‚ûeØ…eµñ•ƯNg¸!HmÂåÆơ0Ç_>;°q{–¦Ü¸0|Ú’†û½i´iMS ÂbcF₫F”³é¿|«¬AÂ;nlCux́ßUIU%‰'€úCôû½…>£¦âüU'1fyK©/µ‰7.YÔC~–Æ.ƯNQT×fU]™Skfm–̣+ÉÈĂ߯۵ÅQ]YRÓĂ{qđêÚ[̃e¥fQ_f̃»vÆƯf¶NJ₫ôE?RÇ2èüG±N…ñ5ẹ́“ñ¥0¸G_pé`Àú½‡̉Ó©cpfv£Ví´ê×;[ueÅFmáQp=AầºG!ˆ\Oà*ĐVë¯äTk„ 4<;µfeJA=·Ô±'Å+¼Ym“XQô•²«´¸°w‰v¹¶3Àqê"Î&ô§Úc̉¤FF^¶|ù£%„…9›æ¨#ÛÜ[thÉFÆ+ư|#.]×0²à`úFGNä̃Xë) đ.+EƠĐ’ƒ ÎÖÈmĂV,_y;E¡­¨…)^?z £Àj å$·Q_?̃à†̣¢]D\;ß߃‰|ŸÚ¾™Íä‡Ï^:u.fœ™ ¿xÏ4’Û¨ḲͬơI¤̃‹ï¦=/e¿ ë@̉CrÓÑ«­É…‹₫HƯ°˜¾ÆB¾(Yf́q̉›‹Î́̉q5+9—€ ¤”R …‘¿_)éé‰b¢‘Y­|ç 7x35«æ 1¼Kj>s¦Q́¾cđ_:f~í¦Ï¢ªAÇ/̉DXà Ó[èđøÎU± ¯ú’̃2lÜLdQô‰Đ–láOåo'»s7ăû §Äµ=âÏñ×´ufcF::¡oí̀‘û¤Ig̃: ¸u?G¦· GR›sị„†»é€¤·„́Ú¬Ơ¢-ÇÍđƯÙG×ć¨Ư™ Ï‘D~}•5b('}D̃#¿x*Ơ•Ít0Ù¿sÀÎ:¼’BñÉ XÖîS«üŒ)”­©‰±/̃¾ùUŒlœ7XkÉÔĐÅ9̃µ 'đ•…?jèMÛĂ˼+‚xưܾÈ̉H„1Óâj§;¿Nïl71!íº©*Ï•DÇíuv́Ùoæ2±-·Ce9߯a> Ë-äˆí¸}æĐ²%lè´tµ1Ú̉ḉ°ÊdJơ—WÊ|¦zŒÏ|̣¼RD?¤›k©ê°Ư ₫;C:¹·iö₫®øSô©1̀‡aé›·† sok²Ô{Ù̉FF;}j̉ư‡‚²ª||mÚÿyḉaœ&ÍÛä÷…üüÆ¥ó×2öÑb&P»Âđu'3t? ¿bë¡Ă‹ơ;R¯BBđÀiç(Ø!±‘Ƕ­ûÏL¿F¤\óî瘽Āo ¢?Êüûùø7đ­éúû +è“HX—騉å Lô7<]$CÑÓơN_¼"¯m$ÔjxưèNïå:>Í<̀VXHhÜëÏ_¿ƯIÍè«ỏJ‰|›yw ¶ƒ-ÛŸ<@‡:ë=*:®‹œJ—®­¦V.Z0_g){fÙø¢]¾­;́ú«äuÖCG{DAª%±Eˆ8w±¾YëQ vÊ£Ns{»ˆ»Ù[‘ ¾ÜKÏé£cØJ‰̀}˜`b¨¯3²ù[ëa'Ym nS£kPQü:;ƯÅÑ®…å₫ï’ßµ†”–é÷ê.q`µi/n³ß”EÙÄf”Îö³”ZpWoÆT tf×́ÈÓ¡^ æ đK±0̉$Œw¥U–•—ï;phûÎŒưööIÉ÷oNöÖ:́8ßXVJ̉ƠÖXVc§ñ °gz©²ôÖÙđeKé8Ú°©»bæ‹J+°kT-÷}^ æ đ÷ĐQ´C₫1‡Ùr5–.¬qN]¸\ù»º¿Y“ePñÇ×w£¯Î›?\]DÚ¨5̉‰dÜ{˜™|7Ñ̀e"?§¦µĂß¿b·lf¨]H{iÛm½ÏÇLJ§ÿ\䵟å:MŸhWYX}!ḅ´i`LiuơVM³£M[P\Rºk÷ÎVĂ%{5íD0|ÙI7øùøÇ89ÂGí%­µDXHhQm—ơ‰ÓçI4Y5ơ!¥_>Ä_=?kΜnb¢ˆ´~k¤sE-•̃}₫ %y°ÓÄ&/6¨ªˆ9̀̀|È@Ư₫Ô:Ü YùÄ€/_́?j́à†/‡o|¹?¹M"!c]F å¾ùWAÏ«¬´Hœó́Å‹‚|̣Ïâ¢êßU¤…:w“PPPÔ×Ó¦ ̉fúm“HcøG̣äenvΓüy%…?₫P¨tèĐ¡‹XW¹^ư454Tđƒ±„´½æs<“]º§îg>~ñüÅç|riqaxxø„‰ùĺIÈơ’×ƠÖ’—­5=̉ : ±5 ÚE„nöà÷¢̃¿{÷ăë×̣Ÿ»vî\൰‹˜¸”´L_µ¾zư4đ˜Ú®m=‰ÔƯ­ÎÖ‘ƠƠƠ©_¾|ñåóç²âÂ;Vÿ₫-ĐIP\BR^A²—êIÔd¯‰Ö¶I¤É=øG’óâUvÎÓOóJ ÿü©¦©ẶZê*ø.uêÛÇOi™?ä½+úöµ²̣×Ư¤»&&ÆÅºJJËöUQ1Đé×±cÇr5‚0§ùñ6ôúk6¸?2ÇôFĂp¼‡:ưêÔl‹µcÇ5«Wsy‚»‰‹ÑÁ ^éÇ¥ ¶ÀèÂ?.ÏRMƠ>Ø‘³è)-Ơ“f˜`Ô¨QkÖ¬!Œ$A~°çÎsuu%²‚7ăÑ£G‡&̣ ?Ø &đùñsz—,mCCĂ "̣#@€=øö훘˜ØêƠ«×­[Ç ö÷÷ïÓ§Ï«W¯ˆâûGpơêUggg"̣#@€mxưúơèÑ£lß¾}ÆŒÀ|`ù$$$¾~ưzâÄ l555¢Ly·oßÎÉÉ™7oè{2™LdA~°̣ëØ±£……Ejj*0¦¥à+đ¸1æ³²²‚8wÀåååùà”²zơjPÀ|ǃàà`àl¢dy)))C† ñóó›;w.Á|ù ĐZ¯Ù0}ذaØ0ß„ ?₫èÑ#øøáÇ1:Á`8‚***ï߿ǮŒ±‹‡N:ơĐ¡CÀ| ({¤¤¤“'Oî̃½›(_ÀäÉ“MLL¦M›öäÉMMÍ́́lbb'A~´"Æ{êÔ)́zÆ ăÆ΀k`>Œ£££wíÚ×àƒå<₫‹¼gÏàp̉Û&]»vưñă₫‘v=¢¿¿ÿçÏŸ{ôèA"‘€ù9¢¥¥5‚.‹j́ׯQÖ\))©„„555(µ ¬“3''‡È‚üh]€¹¡ư8bD­ùbccu\]]!&6£¬ƠâÅ‹ArÍ™Ss„éöíÛ A&¶Æ’¡gÏ¥c¾Ơ4;‘JKKƒ02e ®!à/Öáǧ¦¦bá *$$$6mÚD:QUU¥¡¡±bÅ Đëđ±  ₫B¹¼~ưZTT”èä$ȶ€™™0m(?l ‚u0̃½{ØÎËË » ®±oedd®]»æ…¿ÅÅŤ°f˹|Ó§O§ ܶmÛêºÛpóEDD¸¹¹á³á1Û ¦¶wï̃Ø0áÁƒ±¯ª««ååå/mllˆ:Đ˜9s&¸ )))Pøùù_¾|‰ »t9̣íÛ·pươëW"—̣#@ ç̉¥KŒáÀ|t]O&(à‚óóóq^MM HÈÏÏïÂ… ´÷̃»woüøñÆÆÆGmü†œØNZÁ‡˜˜1~¢¸¸8**j́رx ü>AfÍ5IIIzäÂÇi‰3++ ) @Ô–ăúơë'Nôôôܲe ²oß>́JaÔ¨Q@~’’’ÚÚÚó È6Å̃½{W­ZÅô+`>--- ¦ÔËËËeeeáD"á4“››‹G{úô©¹¹ùÂ… }}}öÍܦM›6nܾÿæÍ›{ôè‡WVVªªªBüúÔ€¢¢b}FSTT˜¯{÷îß¾}£ûÊ F̉đs₫||Lnrr2ëWĂ˜’D¡P¿’Æ•kQQ¨Ơơë×O›6 °í-W¯^ợ̣êÓ§¼#Ưé?‚›7o<₫|îܹ>>>||5Ọ̈$&&VQQáêê ®ÉÙ³g¡´WŸ K€ ?8 °MŸ>}bÍ|€̃âââºuëÆzç°°°0üzÏ=kÖ¬yôè#ILEA¸`Á EP™6lÀäÂ\LHkÀ€À»@«NNN@º )ëKÆ|t´tĂ»m™™™¶¶¶@Ït[›:¢ »êÚµkCCC üüǜ̀̀xºVDEEØ&3552eʘ1ch¿µAẠ̣åK(»Ç¯Zµ Ä^ 8 D#È®6¦¨¨ØÈø–––đwö́Ù₫₫₫Øg¬1₫1)) ¤Ỡ½{ñ̉‰'ûFGG#è ̣Æç€†Ø²eËáÇA¨?T ü:è L†¡´´ôäÉ“‘‘‘wï̃å:räÈ3gÎ@øÅ‹±%,O·£izzúäÉ“EDD@­ï̉~% à‚飀€oß¾mbbâîîîáá¿~#;;ûÂ… Ử̉̉ôôô†é‘——§‹f‚.¼xq¸}đàÁK—.2d₫•Êơë׉EÜ̃½{¿yó¦yÓꀺ0₫eФeă`4AO€àăăăõ&pØ•+W€·mÛÆh…q ±ê–ùàúرc¤ÔÔT}}}0Ü VÀ"QMCA÷@LÊ|ûöMYYù₫ưûªªª:íó6ääd1Àg@rÀXÀúÂÂÂÀØ2:a+ˆ‹‹Ó3ÊÙúÄ"-à§!ñ—.]‚_ïĐ¡HX;;;QQQÖYúđáĂ;wî@‚̀@C¶`©µ¶¶fʯưPĐMÅ”+x†ØØXÈ øixiii:oà ¢ùäG€!77wôèÑ `€ùZø(gpáçç܃1"-€@ uï̃¾Â·€‰‚6ÚŒÏOHH 2&RÁuÆéÓ§ŒŒèf߀dœc àûË—/mçåççkjjĂÇ 6tèP`b|ƒ›ÆcÁ‚À»À@666/^¼øøñ£¬¬,°0ü PfII đÈ\øºô`7BœgÏBựå |ödÔå ²X 8̣Høĺر¦¦¦@{BBBx´¸¸¸[·n%&&—ËÈÈ€óakk ¥Æ8‘B&¡ ÚA~´¤¤¤LŸ> %`>6>ùÉ“'À£ YÊÊÊÖ®] Æ8³ï(ưd3´!@±@“;wîDĐ₫̀={ö¾|ùø~ˆµ´Â!!!1ăWtsg–/_?aaaq÷îƯøøxàKà¤ÏŸ?«)))¯ƒJ¢zơêU^^°$ÈtÄiLzàùïß¿‡7z÷î<ä&° ˆăeË–ÁóGA„ü­¨¨€À¬½zơ200}̀Í%a¤ŸÔ~̃bưúơPrrrÈd2=Đ?heđ'@26~å ‚üà^`3ñÀØ1J¥&áơë׫V­†á²zơjÚÙ+`©#""đø–`¦åääÀÔ‚mmù‹TWWƒ2ƒ1@DDd w=xđààÁƒ/^æ7nÜܹsưú`úA >{ûö-°đ ˆ'---]]]¼ë5v ¸ÔHL¸½1ă¸ÛqçÎ{÷îeffBnÀ¯ ·AÈóçÏÁ144ß¿}½¾8®_¿~ö́Ù›7oVUU‰‰‰Aëc> :áW èÁGß7¥¨¨ˆ8ÏƠƠR´×ø̃€øÁ τ܃\…' 8r̉Oœ®GFbb"˜È;vlܸ±©÷úúú zh‡…@Áœ8q¢IÏ™‚(=z466;c¡’’*((æCе 111Ø₫2 ]à£h¬ 4˜˜öÆ(đ%Ơh§r8p`ëÖ­ÀˆÀ¬LÇê脨@ÚÍ›7¹fggƒ́ƒ¯€™ UÀ£ÖÖÖvvvX?­¦ixÔ­[·€f0]¢väÈ‘; –>hâË—/›Î=nlđÖ P(P½đvÀ sẠBª@z‚Ї×d½qOII °utt4”Ü |innoO *A~°3f̀X¹r¥)ÆÄwwwOKK»zơ*H,${S…&?È•Vj€5¼páP#ØVqqqĐ`©mmmÁ¼b<==i GÁ–„MGÁTầ™3Dp+$p[YY™‹‹Ë¬Y³pÅ¥'8ÚÚÚ Ư NËS¥bÉ’% ÆM .Ÿ¤¤ä˜1c°I°¬K¤3p¶‚‚–-[@q6&=@ºÍ pƯ@ ** X<)) t'”;ˆolÎ0SÉä°°°ÈÈHP«À‘î(853– ?x/Q€ưemï̃½`ơ>}Myhªk<À߇ÄgÀo :tôèÑnnnXé™3g@Đ`Hw9 ¦ ]5ØzÈ̀̀\µjUBB¶j˜ŒvË´ơ( ‘ááá3gÎdúP“Ø"°ø222m³;¥ BCC·oß̃¡C‡E‹aS^磠‹öîƯ;(¨gÏ¥Ư^§…àççgœßTÀ :ỵ$9_¨0àU¸ºº2yêÔ©Ư»wC½̣đđđóóĂư$ùøç>uvv¶ Óoóóóµ´´¾|ùôllùÑ?nذèÓØØØËË‹®o­K—.KP0̃ˆ-3¨o¿4,ö-k v́Ø<tÏ=¸¤ĐÑѹrå ëi‡đË—/3®|‹/Ïá́9̣³P0†ß»woÁ‚ rÔ6Aº³¨ºrå <́mܸ‘:ÄÆÅ‹—,Y¢¯¯OŸăÈ¡Ívok3ßôéÓas/!!ñ«›ù Œh``å¡cÇÑ+555é3đPT­ªª‚mS#%tæ̀33³´´4ê y.3Mzäöưû÷#FŒàLvÈ(€­I§•—%®’0Àjjj°£»>œ+§ qnذ¡¶₫—–Å„ ¨3:¸åïÿưæä?NF r¹ "?„¶‡óçÏs »Á–÷öíÛ?Á£aii™””Oẹ́€2â73 |||¿!gpÎÜlƯº•̉vư“€mÙîƯ»322¹‰¾öÍ ùüüüzö́¹hÑ"H C1´ •.HØÏŸ?§oííí³²².\¸@—9sæÀHqíÙom$ÁiECXZâââh惵æÚ¥K—ù! ´ ?~œ̃Ù}ëÖ-(±ƠËâBhh(́ó>ỵ„ˆăÚĐ"€¼kjjʹbûöíÎÎÎ?|qÀ€ááá;ëT`Ö²€TAq““µf24pÊm Îi³²²rHH}Lc¯^½^¿~ƯV"âF‚¾=pà@ddä£G¨Û+VtîÜù—ú^ˆüVVVÉh£q'::6Á>„fc­-.ù`7<==º¥w²×‰©S§ 80;;»ơ Ođ ,₫áĂlÈ|...¿±ù²µ²©‘†“'OR̀×đ‰­œ§‹Àˆ;v ¸€\}:sæL®3œù! ´<è!)55µ:™¶¶”ÎÉ:5ô·6Đ )cccë;6¶wï̃/^l[9Eÿ@mƠ‡̀Ç`0h=8mÔHCUU•¢¢"Å|8üĐjEØ’’Ê YRS\QQammȡ呓“C”ëgjj*ç£M›6Á:lnñ¶HbÊ”)0.W®\ñơơ…f®§C‡…}pÈ|m7Ë ó8pÀÄÄ2Ÿ££#Œ&Ï”F>>¾ÇRç\iii››Ư¬ô¦ (víÚơÛ·oC† ¡¢‰È¡Å`llœœœ,&&ƹZRÈyîOÛ ? µ–pZRoŒ>-[¶,33vMxU &d>ø 3 –ĂGư¤¡Vơë×S†·oßRåPó(^@䇀P>}údiiI3Å­1}Ă8~üxEE}H,µ›S·@QQñèÑ£Û¶msuumt5r­ ‹/nÜM,-j\÷̀™3;uj3œ‚Èw°bÅïß¿CCLL̀àÁƒyƒ! >¼G¬ÆèϣƉ  Oww÷¦Î¾? $XVVÉz̉¡#̃«'ÖÚ2‘ ÙÙ¥‘\5[ó¸ÄoE¼¤/+k̀ë̉eà“'Ÿ7v^†ù! ´;4ùU$`‚ăáƠ-á§v÷’Ÿ6æ¯ăpü*Ê`„f’üô1,ăÖÜ'>Èqe¶Ó5ßÅ¡YXÓOÚ ¯2˜'©Ÿ§¦¾û;^ÉơOZTÉaü¹Áñó,ca,ÆĐ¡í¦¡lE@@h&Äö}^Y=fعKŸ¿fÍë!Ä Q ;âuú̀ÅrÆO·¶Y:÷·ü¨d0:Ă‹Ơñ·Fđw½vkÑ̉ĐøäG‘–ÛƠrÏqĐh(}åÆ!﮸‹ÅÄ@=̀Xkă;à¥́̃îi.‰Îî̃[=]Dûđ¼ßúđÁß'¡ äMCC‹ÖY6~¨Ç+O-ë?ï ´|‰ÏêMøa¨B" 4B]âÁ8&ó*md‚yıfj!rÓS?‘”U›¨N’^ơ± ÿƯgYYyÚ}nîă¾²̣DK÷µè́éóŸ+Î,}~-ÊÍ~#+Ưå¿Ó‘ºôÍUe?/ưÇjŒ¬lÿ&ŒVÊêÈH.v¥́ ¢agEªüÍá'ùùE'êỊѱ€‘ʺ–ĂTRŸ©$+Ÿvv |t--·{÷ ®e‰Hö \ô•ôu'%Ăq2¹/̃ÀÏ…=΂âÏ…¼ú̉y®á<¾¶E~xY&¤¼q¼àÆj»¯ăÄÔVѸ5A~V}ü±†ùáøî8NÄkî„ơ8=*:–2“̀!´ß˜‡£*‰€€ĐlàèpcEùX’“m¿Ơ§̣!aȪjSü¡dwÑy¢¦Öoé™”Í3 åhö,f2ƒ „¤¸$æ’— ´¼8Vyó øâÇ̀M=7—sÅ6 ˆ“óø̃Sºi™ÿÙ]H»ÊiIs9‹1Ưˆđd먺Å>gâ|X‘¦¦B?£S); F]–V0™ÿ •†Îd%‰ÖT°x»F£tI{øñîß0‚'áÓ —¼ư7ƒ1Û%¢Øfº ø| ~èm;ä÷&pg˜¶HÈf¥TúNUûXy₫8h §µæT¢:kL ĂFl›3È ÇÇèMI=`ÏÎÖ8#q…é” tâécDÚè›ZNVW¯%ĂÿA„äC›¸b0‰ Ëó! 4/J© l¾fºíNª2”#ÖÛ7‰¦iôèÔSii¹û»ç‰̀Ü Ù1÷=ñª}:Ï 8 *ˆă'3¯ZỊ́QF¤•êM5ÑæŒ̀Đ‘J å~ƯϾá<éÆ:•BÑ<¸ơº_TÉ&}—;K ß ‘̣¨O¨Û&q̃j‘ñQ&{2Ơ oºǘd•ơ&‹zc_e%u­ ®=­VͰvƯXCYÑ0Süîx5Ynåan­!\Cz£F2%Ö]ÚqGÚ!ü…<ù¢ùᇪ 0 €—UđVÅînW€a}ä9¼=|—€—U§óúoê¯÷¿ÉâÔ#¹Z€\đ’€j$Ï€́WCivàÅÀUDOçerêçZ ¼YØVĐs£;Ú¿‡NØmÄ}j±Û…m+t-)îlP˜±ù“¢9!2̣̀BK†ßjyæ÷µëCfl¶ HY¢ÖJ„ ©n}-‰–Œt3µÑdÅ¿ c' Fü>É̀lx=ç>̀r?P\znºA÷1qÀY³Ic1Ñ%c´?¯‰«„n0ƒ6Ǽuư/í=̀ă+ 1’ ¥zÁ_Ơ¶©“ 1ÈOdJƯ¢j l̃̀©ÿ‘}Øs{ÎûÅ\.{×ç­̀´ 8^ă¨R{D<g ́ù oæƠu´M|̉Ͳ*°g,¶ă%ǘ̀‡d†âÖ}=æ­(x5``Ƀ¼¥Ÿ¸PÜ©ï|a¿­n ÆåƠUkƠ…&„ÁÄ{p†y”%óỗê¡'ï82ÔC,™—÷Ö†̀đ5:6>¬fkeHèÿŒ}FƠL™æ?ü‰|„svÛaczïièEßE\!ÍHƒ¥ÊswëdJr Ô…ó2é÷Œ²9‘Z©%Å×üq åJa¼'æƯGlb27±íÅ9óBƯá:Ó¡Q˜îyoº'Ù¸ÿ“ù?Ú~7o•0á5#µÀ%fKá¬{ÍØYDà€;ü´N—5"Øy<³[+ù! 4%¶¦à¢–* † ms"₫pº…ße`¥¶I‘Îù—¬Ơ—̉Íh¼»2lja噪’S\’9¦+怤[Í–‹ÑS^ĂÄ·đ₫·XssÇX*̀Ô­iÈ3v»Ï`d1_dHÊÑăiàM8t|1?5 Η£ß"ÿs̃̉)Ó‚çæ´B]XéWüñIØIBCÛIÈ|؆T¯9¸– [F$§vøn‡̀w>£RµuêL]c8rn=¡YƯ6‰¢I?²(^£!ª "?ë¾t×} ¦0—ÉÔ€Ër³åÚ̉<ư" #*Ob®%† C+…ÿ̀;…0[”fEÅ%BóÅl‚ùÊa›¸KË9GwkĐu°™˜¥p÷Ưÿ ̀+,9oYđ3¶Ñ Æ€Ư₫ëVÛMjË C\l|ˆ0[{TÜ9|>©ß’˜¯©%o^SrŒ‹ïÑ›»MăŸƒÔ«  pPÉa†«v ́æ $ÖAjÑ*̀gHơ¥"èkc₫œàŒ«çL™ -A~¶aú®ºöG¤¥0ưMéûÍt<4ÀÔ~˜†ó …2×Í₫¨1™w2ÎÖYwZZƯÔrÚ0e28º2´À7q̉4k=ø(- HÈ̃¦ 7”±Oo·ư´Ơ6-ÂÆ ,¾–e¿Y¡){ư’?¹Y™"ư[ƯîÀ/Wư'Ô¶¦‡X~åo²)(È·̣«Â0VéÍ,Ň U³…ù8sƯè ¼ÀoëîôÜBAqÙƠvvCû³h¤™{÷Ueeå¬Y³Ńq;ÿp̀ôU‹'ÂG§ƒ½Bc̉†Ÿçi=rœUø«ä—™5yˆ‡EæË+=öNR$ºÈ̃ζ©9sW{Ï×È‘¬v“’]é¸A¾g§Ú₫{¯IÍU?Ï…ưẽÎ.˜“ç,3=QKë‡MnSÏ#Ι‰ê†oẠ́ó"́ùBCƒå-®)œê0[XÑ[ƒúê0™¬¸/0¡;]Âè4q aK²}hOXĹS¦À9yC‚Of1“¹˜Wö„Ä+V^)F2Ù§¸/±p`E„\u³Úp–°HÄ}uËŶÆ&¿7œ Kö,esöèIÓ’ă.бpSÇ‚¡¼.­ §ôyàÙ¶ỉ•ˆm*™\dCí gQ¬̉8pŸXÇw"×jÆâµçn¥ÿÚÉ+¯µ>%ïỢ́p4̃±ẴÆ>Æ¿~Ô[SèåI‡³ÚøbA˜·kø¢«Íü¨7¸Pð4̣Ybn±–ägJ́Càa½º t@hJ$P$Gƒà5 -CFV`¾ÈÆ̀LÁЇÍz,1R 4FjyŒQè+Qg§" Êœ82ßÁ“Qà3ôÉ.mÿ́ùÊXsʸ³׈k­ơçÈ|ƾ§'!á/»al=)ÍWúÀZ²d´,àÜÜi|uöV‹Î3†N×ßts¿Ù(‚M!óơ²;è=Í,øçé/úçÖ¿+GµùU|úñËóÑùœáUÏîߨg÷ơwƯÏ;8À{ÊÈp̉'^I#¨ÛáåW) ÷‹–PèAZúø=ba[”­/ô‡|÷üMñ¢áË₫¬ĐăèỰz«Á w «Öđ] ô¶ÚRùYû„°›̃ëIt ˜Ï+¹D«¿¢8₫Ăú ºËĂêÑS¥BsI~iI’-üĐ¾ 9_m¢î,.)?™ƒ·̀XTM¹öƠU'Ơ…¾>qeáƒY$ Œ’u5YS׺º¸kóF¯Ẓ#w°ôPAbK·&Ÿ©+E¹Åœ³d#&Óˆ5ÈV%=̣/—sÅ‹;Öă"oÅiºººS¹‡CZü\̉¹b„ôaă95D›ö3'7•_.b1yΔ1p×ưz?%ö3:¯Yw—”„´X§ ¶4§>c«7«Ó®±êâºë’‹±³øöATq~ïj¶6P²¹H¬ÚƯ}­lăM\Öv8‡PHLmÂK˜»æêư׫©%ƒƠVV‚›;”fûdB³Ó$!Ö·Ä:æ½€´3ƒ8…K(YJ6AT{·+é[ru ăo‚¢˜Ä|su¨¼"˜K4¤¨íŒ\gj£&úñÎæ#¤::Đ&N¬R>\S²lẠƒBdC  Æ}ÔK˜ĂqJ‡uMr8Ưt!¶ 9kƯc¨₫¨>e/akcßI6(”>Ü+;^ó ?ªÅ¿Œ˜ZbºƠu¦˼d×Ư%»¸_1ô¼fèÉmÉw´ïsm₫£ 9r5“¹£ưm®èÑkqkÔ˜oæ[ûóDØûë“êbZbú«=Ă~tÖpTưÄF₫Ç«çöÀ¸Ó‡5oíqÎéêë.áëê¹í>½¡'ăöuñ4‹ư[â¸%ª±íhŸ"?„…»»ûhaXvv¶œœÜo¼Ú:cD£[·nvvvnnn-ŒŸ”ÔŸú ((X^^₫g~`­0¹0sæ̀;FDD4ª¯¿qQQL´Qă|ûöMRṚíÛ·­9ù!đ>~$40 ))ISS“—¢VUUUTT´iÓ¦ơë×Ăæ’·ó±ÿ₫=zôx÷îGÓ̃̃₫́Ù³̣æ>ăÂÂBƒ!$ÔÚ×Y#̣CàtïÎZK¬¥¥dnnÎ3Qăçç§(PFF&??Ÿ·óñÙ³gđ÷ưû÷Ç¿{÷.OÆ1 `çÎĐđôéÓØØØ)S¦đŔΟ??}úth(++srṛññA䇀Єøúơ+m¶°°ÈÊỆơơåx­]»–6¿|ùRRṚƠ«W¼‰||Ơ[¢ïƯ»9{öl‹#d;›j…E3f̀øă1̃V?¿êƒÊ÷́كȡ Á`0¸lüưưăăăÓÓÓÛzÔ¶oßÎyûúơkØ ¬Zµ÷2Êyœ=ˆÅ‹óù=ỵDGG§>¾çæ;~¼Æ2©?ŸFä‡€Đ˜L&Ư€̣óóCñ¨[7Q\GoÔ4%!ÎÄáÇӑưđáÏä ' DÅQQQ133“Çb·ƒÄ·oßÂÂÂæÏŸßúŒÈ§P‘ÜÜܤ¤$---^Ú¥K—ÚO>nܸ‘ăIÄÆÆ̃¿Ÿ'£văÆ̃½{· æCä‡Àkøøñ£¡¡!́{JIỊL¼ôôôÚO&îÛ·WÉÉdÊÊÊÖ֙ŀÂ:ÙÛP€ù!đ ó­]»2ßÓ§OÏ=ëèèÈ‘ ÆÙZÚy{ö́áƠ’ ;1µ§¨Û:ttt`Ek[̀‡È7±mÛ¶‘#G̃¾}2_NNÎ?ÿüÓWư DEEa»Ư²oé̉¥+W®„¹ÆK‘âÉÍ‹}úôyụ̀e“Gä‡À›€̀7lذ{÷îÉÉÉQ̀[&“Im›k‹àÉ5 ơ¡ªªgârüøqUUU^b>//¯7Bæk»±@ä‡À³€̀­­­ˆƒÑ©ÖÇqÈ‚?†¿m+:¡¡¡°¹ùC%gmÁÁÁ'NŒoÓ±X»v­±±±‘‘odÊäÉ“ W¬XáêêÊÑAä‡Àă€̀ OQQñÁƒ€Tú₫ư{ê‘¿¿ÿÉ“'“’’P*µBÄÄÄÀ,:th[ <́Z½}ûvÛ¶mm==zD·_¾|™— "?̃$<ùäåå$%YÇ>Ú ̀·nƯ2eÊ‘#GfÍƠj#Å>QQÑ’’’öküüüL&fY§Nm¦™’‘‘‰8p`Ûä]ºt©ÎE¡[IpYâ8îëë»oß>ø………••U3 ÓAæ;tèĐÔ©SyoÓX€̀—˜˜øôéÓeË–5ó§‹‹‹.\øâÅ‹“'ORL %oºóÔªđêƠ+ÿĐĐĐ®]»Â¢é™sc¨- Tåù! ÔsçÎq̃æäälß¾ƯÀÀ ÎW`ûâD¢>?£¢¢;vñâÅîƯ»Ï˜1ú£®®₫çA]ºt)ü…b(äƯÖvÚŸC›̀}}ư´´´&’|||ddd¼¼¼hơxbbb­a{åƒÂĂĂaYÊÈÈ=zồ™3aà®””ÜLUdD~))©ØØØÚöaaa°}|÷îDÖ®]Ûđ¤ >‰~‹Éd={6..îÖ­[?~TQQÑÔÔ„²Ưرcx+$$«u6nÜx₫üùö#óEFFúùùAqđ—d8ØQ8uếÍB1HQQ‘ÓAsÊF=OJJ‚BíË—/•””ÆŒ3ỵd˜ăuơ0”D;Ùè‚È¡•ÂD¾~ưºwï^ÈI°u›>}ụ́åË'L˜đ3~2Œ$~>đ[°ơ‡ èíÛ·333z÷îưéÓ§ 6À–tĈ<œ³IPæqăÆơëןŸỵ̈åË•••“&M;w.”¸^2œ3‰Æ Cvvö7îܹ¥±¬¬¬²²²(++9vY†̃À»ƒIXYY¡Ú„È'jT§NÖ$`,(>|Êvvv¿½• ~k"‰:¿Ûú¢¢¢úÔBạ́Ê•+°í†ÄùđáĂ/_¾À¶XMM ²&ô°W¯^­$=¡„ẉäI(‹N›6ÍÈȆËMBBm†3”Ÿj3_€táÚµkééé0 (Ù a°ß¿̣ĂÑé$LMMQ±G䇀€đcƲ"QçSJkÔ?ÿü[̃­[·6́·¿R\\ ÈóouuukŸë+""2“Ä/y 9ơâÅ‹±±±PℲ&”r ÔÜñăÇÿ^8Ïœ9xưúu==½•+WÖ&rN ¯a}ú Ê|”Í6¯ÁƒC₫ă´Y¼xq^^̃/mơƒ€‰#&&V›­ù! đ(æ³³³ọ̣́â»tẹ́ó₫XXXkkkgeeÑ–‡̣ññÉÈÈèØ±c×®]©s3G¡Í0zw9™ ‘¨„ ̣C@@àYP#¢#FŒ¸sçmiffÖ§OŸÄM Ñb“¬¬́«W¯–’h%q„Â(-ïB²çăăÛ¾}{îưưư+**ZP;9"?„æÅ|̣̣̣ô¹N”j´ú !!ñöí[Q={¦«« Å>È…­À₫ôöö₫öíÛ† j»éƯ»w}cˆüx ùôơơ£¢¢y¢…¡¡aXX—›C‡Í™32 uiæççËÈÈpx¶Đ{₫ê\ä™ïơë×­G— "?„&d¾€€J[nn.×Sú¤@ Ăp/,,ä(S̀GňÓ^EE…Éd¢"È¡]2Ÿ«««———¿¿?§½´´4d>j<‹'xTŒ ôäÉÊfáÂ…í¹œ8}₫si™Ú¤é­$<ï ߺtÚÆÚªk×®ˆüù(…gaaaÔ ƯºuË̀̀Œ‹‹ăí™0È|+V¬Ø»w/4ûøøôîƯ»]eưứ™YYƒGhÉkLjUëÑ[Zo©mN)¥ågömswwG䇀€Đø€̀·~ưúÔÔTH~“&M²²²bàùˆCæKOO—••uss;pà@ûÉtßƯ“æ-|Øsß8²Œ6CŒ₫¸XzqT%¥ƯƠ¢+ZÅsúC½Ơuøºœ^ƯƠ¦́.,kà+œù! 4øùùûv€ *íˆüÚpüeAB₫‹¼EŸ¾«:¹³K‰^=e¥Çt•lÑ/`^ñâ釟Dºv€Ñî̉YB¢guQ±>¨tp£Cæ_^çרïù§»[₫­0_¡Ñ½>×Ư…T=ËkZ®•ÚÖ¼¢"?„ö…÷ï’÷_?¿[ÿ₫YVèÓ‡ø@àơ/¶ĂwÔÿ$¿¢÷JÊ ÇK/,£v\.%ô¿Üw"¥ÀZ©Ç/¬5E䇀€Pö́Ùdh ̃³_÷`Ư:©ßđaútr < t8q²HC}´´j[‰₫₫`/==‘̃ ~Q±ßŒ¾̃4:ú‘§‹(¯É“E…¦® ă¯M[V]Üm¹qöá÷”%¿@ÙÇ"đ%QEư|úƯMúcÓ]{ûÛ[æ]ùKU$% ẹ‰Œ»tlºÔêôÂƯÄ;ß̉˜™ïÖ~³K½= ƒ×%UkD]rʪèï–cUóæơñ ºæo;₫!â-kó̃߸{/ỷÄ®«VơlDoçσMÓø·mû«µkÜZmô?–ÜKº~I_OÔ|yFôvö,1`ûüpëÖWÎÎn¼T`j-E¹×߬bwŒ °°–¥̀¤V¬°n͈ïtZlGƠôÂPxe~pÑ ÜS/ÎÙ‘>gËè́z¢ĂñuD~Ơ4~0¯cÚ[EüÅ‘¦₫VÙ½ƯZfGJJ̉²³yM«!B{@Yé“´»Qc…!ó5ƯWÖ®‘„ÂĐvŸ×kœ₫ת¢_Yñ2!ñøÈ|M÷gg"ú¼G*RTVƯO?h̃¤ùtw穯ff#Z~{åÏ‘_E&8¾¾‡n—̃yNé₫Û!(¾ư·ø(¢Ơ©H·̣ͽ´4À̃ÂñÖơ â›ëó³¿ă•\Ÿñ¿\y*K̉È! ´9l÷Ù¸ÆI2_ó|nS¯·o¿}›,))ߢ¿Óïo;û^ùçsKJ₫).VoCăÀ?FUÈ}e!´á™ÖûI„¦ï˜C=Q‘R›>;ơ\ä²1ä.u€«(îI<ØA{ÆF(ÍùY<±Ế£»kÜCÛEuû̃µó₫=¦Ê ©}5tóSbẬ ûJ Q¾wëŒÊ¯UÔVwÊçôZọ̈k’Ÿ[Â;Oíj3Ű6êôđ$yKøÎG)Âq1̉`ˆaáuø7ǯ)M†C3hÈ%7ÄÆnÂñM”Yèyj>«Ă0.¥j8Nc]€aÜ ºd•™Ês­E´¼§̃Çpôˆ7d¾f₫¨„ çÎ&NŸã²Ñß·w3d¾f₫¨¨hGQÑ;Ç_72²iU…áç²+I7d¤ơb PR“èÓŸ~4ÓrmCọă ‹€~P™T̀K“@Ú#Z"̣냃Ös»ïÖđUÙœ{Ÿ̀À‰²ÊTÅU$ük€EUe6àjŸt̀ œ{ç«£˜yÜƯ_MơTẺxi߈K¯ˆÁÏ6@~ÇơØXË2ê ÎA+püâú-ë4FĂ*q<̉²Åg¥8.T“WŒ¦Ùå¤i_Ê%|‹¯¶ËŸ‡ŒaQÑ´ªJ~‰BlORƯßCæÔc1_bV–|Ư:|MûY‡ä<‰ă¼¯å¡ăĐ!ï¥Kk ½œ>yc¯ë́7 ÊĐŸ˜ñn6Ó%ƠSæ—¾>}:i’qKE?pÏ&«FƯü%u>wvóÓná›7Ṛeô0XNy„H7ÎÀäTÇ¿_öT`đÖµ €•f¿(Đwơ³´±dÛk¤_Ü·iĂ iÔúƯzp}ߦMº6›ÖMè÷}ä‚Dz^ÛIˆÜ´^xưЦ  ÇĐ¥+@éđi=[Án"r®̣ßn¼hêØ/"ï~lcÉUù|‰–“,~üÖÆ¾Û:¹{ƒRÑmKKV’YXX€²̣¼*Pđ²€²¡• ®UÛêRdSđ₫%e ƠÍ­•Ûưj¤øù»±^wó8 †₫r«hÜâ]êdÚ œç˜Èáx6}C1„MĐ£p‹Á¨yEhµØ¹óo;;n¡göü=ođ}Ơc–Ô­¾¬eta“̣&H]O ×6¿oeµ&ä$ t…ư₫Å7ωkœ§½Âñ}P–À0êHtI÷¬†Ñ£?W~)åï,ÜüÑÚçƠ‚̀GAOÿû§Ooºvmü`¤gå¦̃ºùúe^ÿ¡*”Gñ r¨‘ƺ*ÿó{¸„¶”ĂæY¬á~$(c¹5̉Æ×MÅr¡@zq̃‚5  ªK»]Êv ¹PG›ûëÚ9q¥²ÔF…~EÁüœB‹fܯ‘Ÿ?]%pK "Y0̣%>«7¸¼vôämÉPÀi³\µ‡Ÿ¡´Cø bD"ähÿ‡¢—ù¥́€ǵˆÛ9k[=*ܬ«]ºà̃Ñ[fÿ:óª́“”Áx÷­­6Ă1Œèsgï{j§h[eY(½]ØĐ_o395ÊÁèUđÅË!˜åb?ŒY„Vük™…EƯgÓôÄ,ióË[$H Ôs6ÚÑë;?'Eø>ùöŸpX>=oWñUL}:OO Pµ¾O2_)d¾ Á—¯ü%Ï¡'¤e  uđööqqqoöø›m Úâ¹Đ±#vđ@­Ư†ß‰_»“q/ưNyé'YEU™¡ª;t¬&81©:³Z<‚™3®©âÚĂ₫ksuX©ö^NMf­?G~v́ §W¨ÿ>wŒz\w̉/iͤ­7đ­àfô‘ö:‘t¾´÷ :*|—àø’à-¶ÿœJĐ74 ÜzGæTÇw8\^§WpäßÈ̀Á—r«*ÊÇ6 đ\‰ÑnøÀúibgjø4ÆÑ4[’MíL ^¾9x4ª'q[^àá⩦FÄh¨Öä¼U2âD:KhѬ¨ ¼.½½ư€·ïIÇy¨©Ehmø÷¸¿±qƯ›£ ·QÓír˜¥Ă?́'iđ \Ẫ^ZŒf•¿”í?<'w%¼ơÓ²,ñÚÁ¦‘ [ơ6·¢uyNvÖ„™Œï øq^÷@ˆ™Y ̀DD́œcĐG~‡x3qmè¸óe n«¨¬úwưöƒ{wøù;Ë*©ơ0„ói×¾ƒ4ûj…¥ëÓƯ-Û2gưm¬P̣æÅvÉù̀ªJ~m¹4í±h Oc(º°lŸèü¢%¥K“Ç÷ÀcíûIlç 2…xôơq+ŒàOJ~½ííëĐ̣0HÏb^ u½ÅQz‹ëôbùº]Ë×ưÔÇj¸œi=ôGîç[9Ô²Úy´†²†G9–ÑööØäQ›zeÆÙÛă´qq±­……_ê‘'ª…³¶ù(‡ejÔâÉ|öI䣤}öƠ¯ă5}ûN˜Ää÷yÖ’^½đgÏÓdwécæƒO? ¿’LL̀ŸJq˜¥nÊnƯ;û¡D Ù\䦑Qƒ²,l;Ep×¾´´² ù—ׄƠ3r€á8¾’p$wÆ”¦&Ơ÷.]:¤ß¿›_ö8#µ›dŸJ#zô–æt ¥0₫5¹$Œÿ^ùå[UÅתÊo••UÄï—*Âđåk%Ä—Î]Åeö‹®ŒÁç§múÛ8Ô:(ÓrĐà́½̣yĂJëL²Ñ†”8j¦Á„•»f_Ùxí2X%ÅŸô"n¸®] ùaùLóà3ûÛù52́qÄ*!á­'0Ÿ?5ó…~}q₫û©zKHPïŒiÜ¿\4I/KV%Ä‘Ëc'[_ßµMÙ¡"øtZ’̀q₫k0/íV*5J¿ƯåbƯ„…„;ñwî Đë,€•¿îßW^a@΂Bß„;óóñ5{>44óx3ơ|ê93½p& ·Ÿ×u,ç¾xĐYû!´ŒI'ùÛÍá@ëM}̣Ư_e¾gÿn±œ§ÈáÏQôákO 1Ëp]3ü‚:Ûâ+†Y¥UíS©§̉“K]rqÜ–”uƒTa)^ß̃C9ú?\ îyèe?¿yæÆ¬0YcsP-!óÁß¹ª‘¡8˜¨§ÿæÏ߃¦&¤Œh`·j̀WyƠ¯Ä”BÖÜÆÿ€ăºö«Ii¸²Z gb(´̣£­®ö<Ÿ™ó¡¼[¯6°Œ=úĐ.W—uMçS“_.†ÉƠe_½„*Á?³—ÚØN¯8E@hç˜faEóG_yØ̀³g·Ï˜Ṇ̃ >ïƯ§6¢-•œ~½æKQæ|faüƠ¤‚yU_*Z$0:tí̃]QIy¢µ7QPÙÆª¾Û´ä—ó,“1`/†Uïá¸å¦‰n×3|Ú —XẒ£Ơ»P·C7L =æ‰gºAJFôºZâ2N¤zĐcôü†3¼ZbØb5±ÅRëp¦w f}œÀqbIgÙ½ƯÓ\Ư½·zº — Ư6º ,¥ë„—Ù“²Ưü.Ñ4ză 2o&>of.""*ç̀±hÙèg‘qIQ1·C‡æ–ÿb.ƯiˆùùƠ†À8(öùYNs:‚a5$J{]¥̉“ø´úºÀ¥KÔë噽¾¿̃æôc1b´¾AđßCB¶ƒ^ë0°¡ô₫…à N ĐRÓ:¨zLuSÈVSB~7Ynåan­!\c1­eÇ ¡aˆûç§£Ó|'Å~°²Z×¢¯¬L yzyê^3ÁÏï½ưTöùƠ û}́Z-%εΓ>«}[ưÔêÎ5 jµïU=ç £Ú°utœîƯ»$%ù´g¯¦Ư^æéYèîîneƠºR`ö¬µO_ºÛ¯/3DßmUF䇀€ĐJ0l”t ™Y)7ÏÏƯÈRà÷ï}w¼Xăô?w÷VưẠh¾Ÿ{ÊȨѥ@¾­[óƯZmôù! ´kH1fÏ&¶ee%Ư˸9̃±`Ññư¯qpéб㶰ª±{÷₫FFÄÁuy¹·®ß¸jlüG,X̣Qlï,''×:9;£Â…È¡ƠCAA ₫Qæ%¯ĂÂC:tü>N[¤ÿơ‹wü7oâW®¼ĐÔ”×Ö&´Ywk×´Éè÷—ÿ(sYé‡SaG¾}¯ÔÖ W¯jït3»r5_]]nâDb1‹¨p^‡"?„¶ Ñ^ff?Ü:t£G<!án‹ÿxĂ€Æhâ‘"?D~mŒüp´‰}ˆùó! æăy¼×JgFEÄ_'¬ ˜Uù€¨(w°?µº0wÇá+­0âÍư¯_ñŸZ>‚@PkoUTàeåm&[C±́ˆQ±FËÄ|¿ŒÊ*¬ùk³§{]z[m€)Ö́/X;,Zß¾á­6â0l;6UØJK[Eûï®»5¶nƯhaá̃V2±5ä_§Æd_Ä|í ˆùó! æC@@@@@@̀‡€€€€€€˜¯}#æ°ïóÊ‹ *+,­]QÊ4!¾¾ñߺùjê] ,<~̉B›%Æ ;7``Éđ̉Ưƒy·€Đ¬µ1_Ó¡HNv²˜xñ¤u¡æ₫v¨«S|-KÄ|M‡ü«Nê }¡a¹•Û—7·¼]Mà_6¯7ç±7ö–ưóäï™ÁçKŒA®L攌ÍQûxŒùÆaX"ih%ʯsó̉@¨¬ er`“yµẹ̈7‡Oœäç¨o$)ÊÇ jîcYYù°cẠ́S+ơ ,“â#ó_}8ËD’ü×¢³§Ï®:³Lz¡êVvDÅ[̀d¦n·î.eHu™µơÚ%gÍ:Óî++R¡klÙ„$åßgF]K‘́£6QK…~+íZtV>³[%]-uV3˜ơX¤Ÿü×ü”ø´̀¾JÚZƒÚóuAEàGˆñ̉4 ¸›\e™''S È<¸ `E ”«ˆYJSC§C³4Đ₫¦ôưfĂoề̃ -•eK ç¸Û‰(=k⬺pa&¯7Í-P5>rưK(Ιđ)P×TxÄÄEQ*" 4^í£[6Øpe<,‚ÄRƯK%ƠŒûiĐ@¹×œÈr,#Ñ[?óƠÆ“ôË{₫9ợ}¹œ¢­³=ƒCR){ûxWàỒ‚î}ä̀–Û©+JQö§OGóó¹ÑẓâÄmUIf́ơ•••³fÍ¢ßM?¾÷Pt94²rÔÓà́”y;»gâ|d̉Ơ—æMXûȧÎ,¹MYo.¸ ̣óÿeø ¾ÿø)øRL´il¯Ô×̃¤ ̣ ₫öÿep0bÛ`¾âÛS†‚Rz7Cm4ḶÎ-;€ "öö'<[®-]V˜,̀€Œ•º#­ÂAỡê³id; êùÜ‹v¦Æ¦½ÄÜb-ÉϘPŸ–.j̀ç7ªØ7U ©:#;ơ%Cvós¼9bXÿ™C $‡ú;&±Å<TƯêÀôÅá!ûÄ©#=~ 3nJi€€Đ„µïê:¢­®àvù8jùó°…´vĐgô­Ál…Ï‹X&¼KóTƠÆ–ùØkúœ»æ2_SƯØ7öçrr4$ráh;!©Ñ+bVZ^M^Œ='¯âi~STíc/¬1N̉('3hơ‡I)Ztk£ø(·- ]?-ô†oD6̃y&ơ ­>Ư­ïÍCá)–j„˜Rơ₫₫c&¦8Œ8=­+…êW]øZàlµ`ÎÎDu¶,Ô{ÊDâŸdÁÎ̉O¦9¢r_P€‰…C{[u3,àÑ÷aKæi¡ÊÑ¢µ¯n¸´ÇĐ²\×m¯~&ô…e¨xJ+hâ‘­Ff>±±üˆ¤‘–«%§è—æ'k 8å&)Ø^8Ø-¨•iơÿa?S—Đ¥̉¡K9ísèG^ë Yi€[ë*"•à‰̣xjJÉxÁmµG,­û‚€Ăºe^Ä`#%ådöÀ·™Új¸üœû0ËưộïA—eÔ²ü…Èe/“S?ĐRhÉ„íÔ;ä\RÈ9́Ú£JYr†!ó̉¦xúươ“i@BhbˆƯS9-4 Ü#ü=z+ơôp4²p¨ßAÑÙ i3t'µXÖ.™'R+µ¤ø~É“{ÿÙx|đn»̀7=ç¸Ux1pƠoT·´øư´æ÷àk¡Ú×NQ†ä`¢ưX®>¨–/ͬÚL “z͘oµ~ÉY£ÏóơÄñJK½IA’XÏ¢„1¬'ÚV(ä{˜›{Ó®µe…‚î—›+rûRpûÇú½iỤ̂÷ïë À—,¸ï8x̀Ü †¬2=ÿw-»½*éÑM<€ `»‰'Ư0 óR}é½"˜BRRc2oT‘²¯'ªëLưUB=°zL¼öÍf>vúh®Qæ}q‡áϤù€ SÀæXèàÄ#\«5/îä#br¿R[¯*/>±iµ»'#ÜóOú@eé+̀âf0[óq”L₫2•T”æ«ñÿa?¯mÁ¤½kpY²4Ǽ˜jæcuÈréReÁ_­nEæ41ó5Xû +Øs>_YṃñǤÇ, ª¤Áöôđ5*~B¿%:©k¥ÙUƠ*äYst››¢¦î‹NÜGÄÉO²$䕼¯óûßZî±₫r‘§pOb1«Å†ÿ̀O›Qõ¾• È.§ö«í¯Ößîû6ŒäªÂ,ÚØuÉEƒHñâÛÿ¶`Ù©¯¢ (ƠQ‡qq.˺Üôi‚Êß~>²VôUœœæ¨`è[Fî~̀ _£căC92̃”´ÍŒÜ÷!•¡8‚ư®\63{Ï(lÇKRÔÛÈ0Hf(²f[A=æ­(‚¤X€¼x́Á§›Q–̀Ó{'* ¤Ï̉\dÈ&sM[i»tâƒYÆÇ×ÓĐ|·¡ÅZ¢?´ô ó— @¯/¨F­”ÿxgƒÂŒÍD¿YL¼Ç}hÆXR%³{/ÅûÇ̀”|G1â·\F_9º>gfS!¼vÔ|̃:V7ú\®Ö£†_Î ,€GL|0³:₫v½6ñ8m‡̉_>™° dÑqKö5ærpƯ{.óöÉ–Íâ/ư`¡ơ–ewÂt.†¼©1XЧfuË¿î¯>w5åFzüºäÿ¼¹ª…ÙrX“+*ª¿öqÚ‹ŒØÄdn"ˆAƈÉ4¢íư±Ü€¹*‡ăÙ,'Çç>8€*kéI¾¶‡‰ư‚ÄhgÁaH{nq₫+&¦·ùËAkøø²…²‚í ±d^̃ Êß0äz æÂ¼‡'3°O–ñQ®cVJ4¬ƒí˜q~ "‹!;˜1Á“yއ¬«Jsv́²¥, ÔyçHÙë„*ăKµ˜‡¡ÄÿíÇEx_\€Ơƒ&¶$bÄ>binñ½Î”ßt̉éÊ<>æóKÿ5èCs¢zGĐ¢Ù‚ i\"On“f,a2—= ‚´g mÍ4•ƠØtåÁ>lBĐ^ü ÖNM~Z,é,;xđ*;b6É!ƒ˜̀»ù×}Ôç®1?đpd‹æj¬2.sÖà¡^.B$·O$÷z;ƯªQƯ íơ›æ—rÀ®äYÄà16¡&₫ÆC8«›‚‚"̀Sb ;ª+ÍÄ| åw0A(¤ÖØÛä&A®³Kö„¥xGàæ¦±đ÷¨ 0 !nU{°…qĐÎPÚMê×GX'b\¸'Ç»oHÚ+}¸WxÈ hP®©0-ä«?—ÜÜl)Slđn¢³¯½₫ø,] ».öˆ\0̣íàd¶k!¹L ¼'§È{̉ ¼ÿ.¥₫ü‹Äd̉sH{„˜¥j®d¼v´ ơUk₫ ó̉Ơ€yÅ—-Q̀ _OÂÓ(xÀ Cv3Ö[w"{À—y¾ ?¨₫Q èk€ŒáÏV×}é®û……1§9:ÍŸØÓ`çÿy5´sl7S ˆ{Fß>ÍûÀUƯÚZdŒ¡˜o–÷²åöđ¯NÇZ3Íá_TfZç̀´fßơ···çr`bïib_Ç‹|=Ô¢̉è[{{Ô26ܾ„G\e …1:ÿµèof<1U@î,a¯9æ@ßñÄ0}É«Ç[̀¶˜„nIe2ưè§U ”Óñ«¼Çµ¿Wơ¥´¥Ê7¯Âƒ˜7˜ ªˆ¾̣ŸR=ơøÇ)ÿ#Z †®1¾˜ëÜmK2—AÚS2 ½¸‰$8l‚AyU\ëY@¿ÜT3ø¨ÙÙ&3úưR¬J[ÍHœ¸îGæG]n·̃^u•|uƠ ̉̃î‹o •$Po²…™¡6¨E ´8 Y÷–ÿµ€eÖ[Âr₫6”ë´à/|₫ừí¬ >}…‹ü·9®p •”wƯ™h0Tg‚;₫æ++!:›ª:óÁæYP ăºØ²Ă UƒÅÀçÆư¯€j^sÏo.^¤¥$ó'Ao8˜₫mnS‰ö.$ă$èBđÖ–£wÿ5N<øvÿpÔ›%3&ư\Ê“‹»Œo؇{@?­¡ ‚˜Ôøwklœ¢=²¸²•F~>Ï4=2‡̀nU¿[́ b+4ø¦±WëÜHÈÄr­Ă¤\Y_5"ê {̣-9ÔIió̉°‹p®V̀Kló`-í¡ªóaGÑ̀,øƒƠ3RXTöˆ¶\óNÎȶæUÓˆù(];ÿ˜vøĐ²7CĂ-;'XÚúÀj->C&n¸ÿơj©^đ»^¾GÏ9&0ĐaW_Ñ̃¡đÏÁ#¤́Ø ä=¨÷ưĂ3ßén º€íD)̀Ưwÿƒ0¯0–?ăÊ¥-°œÚ³ö¨¸s"ø|R¿%#R₫Œù~€?Jÿk^ÊNU»RÜ'´•5{p̃ư²éä&}~ à±AeNºó …2×Í₫¨-™qç‡)OÊ‚©«MWm>Ú°Í‹.!&~!lC¡A™1ÂÅUßÛk#ǻ¿°Ó ÷ç¯&7ü¸8®ööƯ mƠ±Ló31E²Ÿ‰ĂG̉ŒLæÑ$ï̉rëèơ Â5¹æ÷&öĂ\|̃Üm ÍÿsqγÅ2ø»±ji×$Æ.`hlQ^˜G,¼˜́ÍYƯÜ툭8£W )Ư@¬„HÙ5)f\-fjÇO %W~¶XÏú§]f`Û—&ó5&roE&æ¼WVÑSà²OKLyüDRVm¢ºJ¯Ơ:‡(÷áqâ÷U^÷îư)%°IWNä¿ú¤¤9S©ïm¡3ọ̈ÑÂå8m’ósö8ó¨Xw0±€ÅÇÙàlôÙi[vR'%AËĂ>ΗcN¡»C̉ 'QÏÏ1^éQ.Ê œ;âvøT«]{”K-˱Đßezµ&9è&戛ߙ( ¡^'.h)1~O8|8ˆ¿KŸ…†³N@Đ`ú—¼Êó ¸/º€™››'+ÛŸ´y{% ÷6œ1­Ơ•*î¾ôôà±ôñ.€Tñ:ăA„•ĂæËŽ¼v]^2—×paÏÍ|ơ§¼ºĂu“¬iå@¯Ç‡fQ2«Ouî<|ôdu%rƠ7.Î|œa°ØúfÊĂÈkEê²b^k-³²|³đ³×•7ï>µrYoIL?[äă^1UäßÙw,á~ ‡¥z­Ị˜Ñæ§Ăơ„ö¼_],g˜¯r¦EüO] µh>ÛDà+>æmßä~çi¾PawŸHË…¬rNW7¡!k®sÚ{éñ«̃ÄrÜ,g7¿§9oÆÖ¬ni§xư{¹—ÜĐækú2Ó²^u—̉¤ÅI}Y·¢Ór˜Jê3•d«®sÇ>=U¢4æç?†̣}~Γ\©²RͤZ1_£ÁK È̉Jă;sIoD§f̉´ä8sPk̉¥sˆ́T4'/€6ª².çmäï2CR'«8>ë1™Q¿HƯ%ÜVe-9”}8m ¯ưÖ§­Kj½t”¾#u÷Ơá4´æ̉ƪ»x£îŸ(ïË$8{âh§Ơ³JÀ9ƠNÿ«d‰¾ÿ1cÍcÄ­1#ÎVî'¬^NdàZ=ZSÁÂûX6 É¡sÂ/ÎáêmÛ˜»6œ̣¤°̃€Í:J&®JáƠÚv\·íc§Œ°ë¶£œƠ «;]Ơ,-ÔX¥z[mmi3…Óçư!Ñ­'«ùDúsŨvu“k1–ƯÂ(le¥†&gu“eº{”i³›ªbôÙC7 ñ¾Ô@EơÊ)sêØµª‚鑬ŹȪêꄤàô—̣­:Î!êPÓó^Z,]ˆ‘ó½§ni­Ỡê×±ó€XÍHAü¯†pưVĂéoÏ&.9Ñ1÷'j£ArrjÍx"C̉R-Q:4Ƙ±DU [f`kez‰ª>îrgm;™ª’SAĂsâô¢Mlu4ü9–²ĐY³ùCƯó¥X¦ºü ‡EήđoÎökáNcy ËÑ/Aâp~lÈü]Y{ƒôÉ/ÀzO'êVZZîùs‰ºŸ<‡èơNOÏs´BÛă.}b»–„\­̣ûƒüAú ÔvV’=׬f[È‘Đx|Â’RÂ(üLæ7‹ÉÁ~ÖüˆmiÄdư®'h*Ơ¨€"-ÓƠË|U/Ñ´g²ÆÏyù”´¨#¦Ĺk4£ăz(Ë9PN¬Ä̃œ÷ •²îL´ÈjÉÉơ,–ªç¢j·éѼöŒøÿ–^WÙp~dHŒ́øw!.ÉÉÙ¨# ü6ùm J$ÖƯ’ đÿµ“Uï”₫¹đµ–oÍêe> é…”!Ç©nôĐAÛĹ·QjÉôÇoÅ8CĂ c#Ïj%Ѳºv9XÛœ)—nÉåGÓÇĂăr–Ëî_³oV$`‚ăáµ-Œ±´¯hYŸLô‡±oûÏÜ“{z%eÛ³z²Uơ±Æ›.„¬×­éO¥0VƯ•¨>°0cè°­ơq_BÂü +™iÿ¬È2$Ÿ²¶ \Än›î#6yÍ=ï:]‚½̉N¦½J2´uŸC$HÁ ¬Ÿe|Ê%ü2Sf;PØiBƠêØŒM@¥±fïîƯ7`æÀº}0J}é¯: „Åy0&ÓÎ́R¹Œ¹ŒỤ ³̉6ƒ€đsóŸ²ơ1U©ê†=eó j̃cÿ…#₫©³Øè‰́<éË®kFbÍØé¬ùXgĂkÍhà˜ÁíÍ܃“̉ØÍ³4́Ï]ôzs‘e†±FƠ©³ú( ¼°f/púˆ(³ƯÎÅñ“e÷v ·­~·"$Y y¤n9x¥̃ö£lZ²t\¾Ë!ÓĂ9Χ Åö₫ŸZA=‹|‰Ï"‚W¤FAßñ˜̀ ô­«k!ơ’]w—́âv\-—ÔỷGÍŒb̃/®D«‘Vu$ }0J}é¿$_Â6K\Íd®æđ¥4Â/ æG-˜Í%ܦÁZÜüê–~°¶SA±^ÍÏÅ×Q†ḈAHu»CÀ¾AQÇnë9±OüX@¹@o0^A™ô ÷Ñp@ ög‘J凙@¢‚ăCO [r Äó|BO)t̃L ₫̣@áˆ;Åkè́đMͤ Ó-ØógM[Îb±²6‰¨Ø" ´3ÔÇ|]¨Ë;ÙÀh@.ßf±FÏj;qệêUµîW-YÀIuCd|/ANdeÅk»IÚ¢£íÛp¬Fʲ–mĐ.°KÈôIùœÎL @b8*ˆù°ö́¥ûN>5äPếÙ€óé‹FB‘‰ •bØ gXc¤’’M¸\˜E{}VàùÿÀ+Çz™àí³|.›D{ˆùhdÎT´:ˆ©²¿pü®aÆ 𷨨¨ªªJT”7ÂÆNôÚÍÍÍ-((èÓ§¯umm-¯°5[÷Çmyï̃½û~¥¤ˆáó<¸|ụ̀N|§555đWPP‡l&[‹©§ƒ3×đóg³³¥¥%eS…eTV6{$MŸ>ưÁƒX6uƠª?ÉUTT€­ÿªeddD̃öôốồœ‡nüïÿëÄ̀7xđ`rÓQ\\Œ̣=ÆA9ó3$!!¼Í+̣ÈÛYYY·ÖÏïO°Î¼¼¼§j566RíILLÔ××ï¬÷+++K̃₫ñăG'~²b=Μ9óÎ;Ø·¹gÏØl4pæălmmÉÛùùùÙÙÙ·ÙƠƠ•nWWh›RvbôîMk×ÄÄk锸ôé•₫ëÚµ6kTjé₫ưûØ·9==ư/²Á̉sÁ™; “777ÿ₫=ÙÿóçO—C‡aÓ¼#FPíÙ°aĂ?Â|´’úúúÂÂBö®nÁfÍEµÇÍÍRîwP½kđL±o³åGÜ·§=jW4̣DfacC¯ếÙ³˜e¾çÏŸSí©®®®¨¨ûwÆ(¡¨¨XUUƠùî7((ˆjÏñăÇ;ó………ÑîÄø@­°urr²––Î|ÿ(víÚƠ·o_`»¦¦¦ºººüü|Đ|̣̣̣˜µùƯ»w"""`*đ‡  àçÏŸy«ØoƯº5mÚ´Î]µ¬¬¬à6i÷9²S̃/¼G%%%¨³˜°°p—.]Ø;3fŒ””Ô?àN»ví* @̀¼½té̉¨¨(̀Úlll ]ÀÀÀ7õ@[­Gccă¾}ûh;+8óư+đ&!MY«ªª̣„ÍäÙi“ØØXŒ[Kn₫tuu‡YmÊv,!6ºuëF ~ưúJ·ß/y’¯W¯^_¿~í¬·)**̃0}LLŒ O˜½‚¦ O±fÎ|\î±̣œÍ OyÈZ99¹đđđ‡ùÈĐ××̣䉲²̣ºuëvï̃Ư¹on]âƯé!//Ï+´‡ÂÆÆ›CY8óqĐ1/--•””ä!› yÈZ--­gÏưƒUKGGçéÓ§Đèœ8q¢Ó3Ÿ———££c§¦ĐVđóóó–Íâââ!!!8óá #¡x‹ùx%Ü “oß¾ưk•ÊÓÓóưû÷]ºtÉÍÍ]¼xqguô'cö́Ù₫±R-áÀ8zôèYŸ2œù¸ŒŒŒ MMM2ûëÉx̣䉺ºúàÁƒëêêP§€Çªæ{ưúuVVVxx8¯Ä­nÂÂẦÍÍGư/0OÄmAqèĐ¡7R.Æ™Ç`pî—9444xÅÔ„„===P?AAAŒR8uJ́Ù³Çßß¿´´T___VVvàÀ[đÁS¶²²êÜÏÔÇÇgíÚµrrrhköïß_PP0cÆ †{÷îiii%''w¾›mjj ¡]Ï̃ù·Ê+“ÖfffEEEXˆ3—ñîƯ;̃2xܸq¼b*ÚL@‹đïÔ¨›7oîÛ·oƠªU'OÚûüùóäÉ“wï̃ $Á[éëXÁèÑ£¡ăééÙ¹Ÿé©S§ S"Ç2ddd|}}MMM±l$Î|\oåxôèѨQ£xÅZ4vó›7o.^¼øöí[̃ro }ëïï¿råÊ.]º ¤‘O???ggg ‰Î—ÇÎ̃̃₫Áƒù._¾lnn}SÅÄÄ@ííÚµkúôé8óá`́Ç-£ÄƠ«WyˆùŒáoJJJ×®]¡‰DÓêvnÀ-———8p˜UxgΜ9xđàØ±c‹‹‹>¼lÙ²Ns³Đ•gª  ““Ó‰Ÿ©A|||ÿ₫ư?~üˆqS PQQ¡¡¡}*œù¸ÿọ̈µ¼•AơtG£¬¡9u;7€ăÑÁsÔ!Å3ƒ¿ªªªüüüß¿¯®®î‹¾È=V.vâg••ª6æÍ›‡e;¡óưªÜÜ\iié/_¾`¿`qæă2x+ "-'ÊËËC™ÍçtîܹÎí $WPP€üΤˆv?~ØÎßßäàƒdeey+ #¨©©}ưú566ö̉¥Kø™:::¾|ùrêÔ©X¾MèYîÛ·ORR’Ẉ—á̀Çe`|˜¶måS;†Æ.!¯ôruuíÄ̀çææ†̉̃®]»Ö¯_OÖ|ÎÎÎgÏ…~@CCĐ^=x}u¿ Çr̉¤I8RA÷îƯA¦#ËlG`»¢¢" //ÏCi;qæă>—TUUñJ`ªô˜XÆ©S§Pæ?~<º'===77wÀ€¯566’×8Ă]£̀Göä|øđ!üuqqA\€*xZù¥¤¤×¨£wÖ–AOO¥=kk눈l¾b÷îƯ¶ËÊÊBĂñPñầÇe@ótåÊè•cßÔđđpFéß0%%%²ª1Ô§OŸ̃½{‹‹‹———w¾Z´G–>¾¾¾è9Æchh(ºñåË—½{÷zxxíA€·üQÔ××ûøø#¤¾/^tÊf´lLL BZ°ˆ:ja µµµè|̃¼yóV¯^ ¯Øơë×y«„qæă>._¾̀̀·sçNb¾mÛ¶‘·O<¹iÓ&Øøđá´•̀'BSS“L{nnndæCçùR†z++«Û·o 544@³@{}ûöå¹$‹jjjäàNNN²A€·́̀™3è8P=På‡ 2dÇè ™={¡ăê8óáhh“cPÅy¥HçÎK₫xơêU”ù Úă­aæGYnܸAf>ÊÉ!rÂÂuëÖ‘ƠĐ¹$(ưååå;Ós$cÔ¨Q÷ï߇® B¸ÆTj mmí´´4؈/))áÑrÆ™û€ÊÄv‚æă•"]³f %ó“·¡¹ttt¼xñb'¨9ĐúL:UBBưøæÍ›×¯_“¿¥́‰GFF={ZÚƒ®:Úfí‚&VVVÆøÍR®Ä³ÑÏN†~ưú‘Ư§ACߥ@®*ÉÈ‘#ïܹÛååårrr_¿~]¸p!ï5Î|ÜOT *…qPÊR¹tΘ1º̉222<]m€¼(GnA.PÎbR9nܸ‘<¨´Gꌋ‹KHH€¾f§j† F€FMM'±ÆÆÆ₫ưûS>kjjr=öÔuuơíÛ·C%A÷¨¨¨=z´™ûprrJOOG—aîîî¼Â|©©©ÀÓ”{6mÚD™¨xJÊœwë̀®]»€ç(}@É¡ĂPd R~üđáĂ7́ííÑĐÈtt4 333{ôè©;‰‰ ¥Œ 2~üøNF{{ö́©¬¬¤¤=®¯<ñöööơơMJJB—Ê ²ÏÜܼÓB™X¿~=´JX¶ĐÅÅ…W s̀˜1èb/2DDDV¬XáïïÕ´Ç»ËÚ¬¬¬NŸ>Ư»woÊ ₫¨&]¨4ßÖ­[É̀‡&ÿ¤¤¤ÈCÁpzddä̃½{ïß¿‘;µ±±&øøñăä=/^¼ñÚ™̃}èpR&[‡=ܪ™ÙÙÙFFFĐ÷̣̣"GC9r$¼SdÙ‡3¶]q…YgPºJb«V­¢Ư *’ùиđbÈG̣êfJܹ́“r.ec"99ÙÎÎîæÍ›ä=p0(ÙwÉ’uuuÔ'ˆ[¨­­•••¥º)îÇ;ỵdçxëçÍ›'//OƠ_áÏPï„ à§¡ÿM–°sÈ!?î|M.Î|˜Æ³Çíf≒\ºté‘#GX¤C =̣ˆö‘˜˜r‡®;4R´ˆè:GLŸ>½¼¼\\\œ¼hỏ¤I+W®444D÷\¹r!¥ ^¸p!W"\[[[û̉r9TÂÎA{çÏŸQEÖ™Ăă  åääà‰?ỵ„¼ỖƠ«WŸ={ÆC~¿8óñ$ ]¦œƒÁ eLMMå•’üđáƯư;v́¸wï̃رc©öí©ªªfdd`ü¾ Iw’QsI5χÂÑÑZ:ª”¡Đ̀eff>üùóçäh» ügkk ¥Ç™Û¼pá‚··7Ư$º¼ ™9"""@ꮢJâ4•“3´·k×®Ư»wC·Æ××÷Í›7”¶Í˜1cƯºũ$tî&g>¬`ö́ÙØô˜RVV數'®®®@Œ¾:u*Ư–hËs~~~~=b”ÁxäÈ‘Œ,gä´GË"đ”öÔƠƠ)ưEQ₫›3gNAAÁ;w:.·-èKKK¯Ó¦M£úª±±qđàÁ¼N{‡öññÉÎΦ½‘Í›7+((¤¤¤tܯ‡„„lÛ¶­{÷îPÖ“@₫*&&++«ăÇw¾ 8óa´*''‡‡s††Î,£¯€<ÔÔÔÉkă° }m"'L˜Ôˆ&Á`@ÈB§$77—vxåi777FÄϰ··ïÚµë•+Wh‡›€JKK;" J@@À₫ưû¡lß¾} TL ơgÑ¢E ï:Gúœùx6l€¦ ²ŒèëëóJ_»Å@”Đ·€÷œ̉Qhêöèèh,̀$=xđ`Ê”)Đè3IF xQRR’Ñ̀Ă ß¾}{üøñaaaTûAB?bË–-T.́fff?~ü€ hÁqAªªª¶³·lụ́åKºœ‡&ö̀ÍÍÑyGõk×@K]¸p‘Ûö̀™3‡ÊF™•îëë ÏèÈ…$P••½(x¬ÀˆËHøgÛ[œù0hŒ0Å|sæ̀áÚƒ¢‹gEÂ2ùÖ‘„={fggsKüAƒ ư«W¯¨fPÁƠƠdn$sæƒo¡E†–—2́ UQ€hđ̣̣½Eµ@â0 Đvƒp<₫<9+øüùóˆ# Q̃»w/“Ăàî¾ÿ̃qă«„§OŸB—bÚ´iÀ.'N¤{̀™3g= G¶ó·̉̉̉9T]¥K—‚ª;Eå1ïß¿‡^5¼ 7mÚxK‹3¶ívB¥đJ|ꆆ†›7o²’;$eLgº())IHHpvvæä‚‡̣̣r===KKË}ûömƯº•ùÁ:::wï̃m‘›»uëÆü  ½^½z1bYT4@—ÂÆÆæ̃½{@W”ß̣ññ¡Û`3Đ”-ăkkkí́́à/ˆE摲AêQÆ*ă €¶ åäääïïϤ¿xîܹíÛ·ƒö9ØÚŸ¨««Ê }üø1Háùóç[[[!Ö˜ƒN|Ä[Wœù0 è b„ù¦L™À…¦¬¬̀zđbVÚSP0@{ w"##;:8ëgÏÅÄİè_Jw=#ÍÄÊa@{JJJO‘Ë#À‰²²²Đ\¶a¹!pLkO¶µ¢¢´4ÍĐ.3?XOO/!!aÛ¶m ¡e¿~ư ʆœ6– ÂÂÂ;I +'(–ÀÀÀÿ₫ûoΜ9—/_Æ”' Đ̀‰'bccAHÁM¡ƯVN}#¸) ½={¾zơ ”÷Đ¡CG/µ¹¹9Ñé á@û̃½{711QFFf́ر†††›HÀÛFœù:9€ö(£)rĐÙ‡öˆnø ¬ả¤IË–-kOŒotVæøñă-ºPÁèL<9èûC‹Fy@CCƒ&Hè•O™2¥mĂP €{àÛA (³ g‰‰‰}ÿ₫~ø/88ØÚỤ́Û’’’ưû÷ƒÈœ7oÈ5* `¾U«V\¼x1È#r~ 2 agg÷ë×/Đy”'FDD€²†YĂbߢưù ”óóçÏñăÇ/]ºt< LNÉËË{üøñ£G’’’àtsp®ººúºuë 7Đâ k]]]dd$0ô0²²²àDs¶¶¶Đï\Ãầ÷h“£}ûöÍÈÈh- p } ÄhùW«páÂ'''P!mX†G2Ư†ÆÎßßz*`›³³3ôÍ×’ĐfĂNŸ>íîî––Öΰ2¢¢¢p…¶e¥üƠOYY¹k×®………JJJsçÎ]´h¥t£Oö›/++[½zơÙ³gŒŒ ŸqøđaØN7>»5 ”{={v₫üy¸Đ-Pt  Ñ₫Ơ&OŸ>½xñ"\Øä׬Y³@Zù@IÏ@l/_¾LII÷âÇĐ€[é?|øppPg €ú̉z₫ü9£Á8=&&t(Akhhèëë!¡ErÅ3ß? hwȹ³;đö9s¦mƆ̃öíÛÙB{(@ÓÇÿA‹ÆúYĐÁ?zô(”ÜÜ\GGGWWWt&4© D¡Qóöö¦ Ú"@,‚|„.P2HR¶Ü XØ*æDuëÖ-¸Ç &€ªCG/÷îƯëëëkffÖª1I`)à ¨`P§N –€^”——Ÿ8q"póÓGpàÀÊ`[XXØưû÷üø¡««knnnooß¿ºWn’ƒS@œW³ĂYBBBđë©©© ×@›~üø¨]MM å6ذ ̣jƠƠƠ bá́Ù³‡́~ÏưÚµkđ÷Ơ«WđAÏ ®`hh5A“777¼5Ă™G+´G_˜̀ ѧOŸØŒª#pèĐ¡»wïR†“g §ưúuttÉhP´nP\3f̀X¾|9Ư!)hR_¼xn;vlÛ¶mÚÚÚ`ù€˜Û|°cÇlO– 60ú´HHH¨¨ À  ~ oÇûùùQéABMM PèæëĂ***æÏŸÂzÎ$ û©¦¸€9%D¸råJÇ6é:1ÂÀC¼qăFNN   €€€´´4đ.H7xw€w~TUUûơëWYYYWW§A+?:[ñññ&&&đ&·9ü§££:+º$àÎ|8Ø xuáí‚æ‰^ơi±pï̃½Yw‘ç¾}ûñ¯_¿v\j\7 ¦L™Bö·¼zơê‰'€‡@ºA#nkk{Ö¯¹˜´{±víÚÇĂQæ̀ƒn ´˜Đ ÔA•‡¼ưàÁĐ©‘‘‘bbbpG3gÎÔ'ơ« ?{ö !ù:Âí€:¤ôû€T*¸£ÀÀÀK—.µx5ÈáĐ½HHH€Ç±zơjº„’’ªè͇€Ø€çP¸#PđpyfL‚ô€ÿà 1G;ơˆ"99Ø ₫ûï?`Gª;wîlƠœùp°÷ïß700€¿´¹FÛ€úúz™De  [ ºIÂ@o½ÿZƹs炤›D[®L ö€œV-Z-¬±±1´ƯÀ"&&##’ơigg7gÎcØrq <ÔÓXêơë×Đ/»jƠªÖz®RbذaP8đÄÓ̉̉¦M›œÍÇÇuuàÀ ƠàcQQ‘¡¡!2 ȻŠƠÑ.€2‡b†+,,¬­­EYÓÉÉ H̃­[·²BÛ8pæĂÁ ÄÇÇ[ZZ†‡‡SEPl-üüü*++±O{ÀCĐÆQ&c/îƯ»·{÷îçÏŸOŸ>}Í5óH@H>tÛ²}úô©©©133µäïﯬ¬¼`Áæ¡ÔXèT°$ èTàïñăÇĂO@ûNöÄa/–-[†.Ă·²²ºxñẩ¥K®z÷îÍèø?~@~úô)ê3L|¦ªª r „ÚđáĂû÷ï/++ eªxË©©iCCt€€±€b¥¥¥[¤=ø-xS 7?—••¿JÔÈÈhܸqèÜ!z\pË–- dG—f…S —`bbRw?Á™&)//Ïz˜.ZhhhÄÆÆ¶ÍÙ“€†{Ê”)l§=`ưưû÷KII­[·Ô ]'h‘;(†4îđ£ÑÑÑèG̣L!<Ö™$€m­º \êÀhÀ*777º:•yØë6ØÂÓÓ ZîDĂ[gff*((—Ù€n+..ƒ*‡Î‡iiiÑzo655:u ËË—/ç ó<êOÂ_T×®” ·ăÑè À[đ° €MAá‡à:Đ· Mʃ¢´´ä/°/”öĐưÀT¶åççŸ}º TƒĂsH@9D(¿+W®£Ï >«ơơơP˜=jçÓ„Ç~ĐUUU»wï>sæ èNḯZˆ‚g>tÀÇÇÇ(@#ÈÈÈđíµ“¡%‚~=´ơ7nÜ8₫|{,Ù±cGû³ä€ÎƒÖ¶ ù.®_¿EMM ´oXXØRÚf‹̀r ¸”0°0­­-TàÚÔÔTF«å˜`Ê”)O< z̃!˜?;å!!!À‹-2%¡U}&(7”íà×_¾|ùơëW ÏKG'**JÎP̉ÙC%::]́ËAœùp° H´´´X 36uêTȺ0hĐ 6Ó̃‚ @]ÅÆÆ’gÑØ¢­uÚææPSS·Ă$:#dggƒàCăƒ ÓœÇ[»v-y™`ä/íN ¹ .+·¡qÂP9E™Y^^$Wk¹J ÔÏĐ¡CO<‰²Ư¹sç಴Iû÷îƯ{êÔ)`GèîîîëHhÿƒóđđ€’ÏÉÉƠƠƠ…'È."æPWW¿víº åđÖ­[`̀ÿ₫÷?¼É™{€:"²̉’̣D @//¯¤¤¤ÖeäÈ‘ûö탮ÛMöôôl󥤤€=­¢½ºº:333øEh+©2¤£ëÚAÓ@)µÖ Đ^på^½zM< ó5@WÏ=k•#Ơ }̃Ú°aU‰Í5 t§¶¶6<_PEptP`'pa;c¼Ñª:¨ḍ4¤¤$ÔØX¿~=P2ü:mZÁ‚„„9{Qbb"Hv111ØĂÅ,8pæë pqq±°°@çQ˜ÀÆÆæíÛ·¿—†††_¿~1ÕFPB;wîLOOïĐ´Ưï̃½»~ưz«Rçdee½zớôØ"üüü¶oß₫đáĂøøxæ*mÊóóó™øq ¸}û6°\sܸq]»vƠ#E{€³Y p₫üyàÑ;v¬"î1iiiđƠ—/_Đ„º,z—´`É₫ưûùí"ÅÙÙîzœ¬̃úúúP%̉:Ú©S§B¯"44”ÉD)œùp0C‹Táää„}ÚCHN§¬Ø̃½{/\¸‚I°1öjkÖ™/..‹"ÛÊʪ[·n/^lÑƯ”Œ̉̉RàÔ¼¼áR&&&îîîV$ _±¢È ÎbÅm¸ªª ¤¶N``àôéÓé M¸©3gθºº‚aä!hYYY`nö> ˨·3]K¨ ¼¸¸'¼\‰RËÏÏ®‘G}dffBÉ´*‡"œùpgkàÍaâ×̃†ôlœGDD‹Ówï̃]ºtiNNNkưZÛh(A’²=ZƠ„„V’…ª««Ïœ9³mË–-^éÛ·ï¹sç¶mÛ•§§'£\©‚‚‚¬\öÚµk@¨-8_¹re₫üùO‚ĹÙ³'‹ù•à`;;; ¢èèè—/_¶Ê6 =tÁ@k™ÏÔÔ”î(%íđrccă Aƒ@ç±2ßÉ" pZ{ʽ{÷€ö:(‹̣̃½{×DKlˆQàcè@• §Ä3fĐÆµ={6v8ƒù»Mw¿¶¶vBBB‹«Ö8 Fë¾kkké5hYh³X¡=е˗/‡Jxxx›ÍÚÓÓÓ£›°‘ÇDï̃½A_̉0Ơđ2p^¿~ưà^Zœm-víÚ¥¢¢Âúª›ôôt`ºéØàÔÄÄDxØÉÉ€æ„n§oîpæĂÑ OOÏúúzÊ®=;懬¬¬³gÏ̉îoUkÈ10 5"''GË»wị̈>ỵ$ókBó ́ƯùY³fµßÂÀÀÀ§OŸ‚V£ÚOw¬,,,,##ƒVQ1”´7lØ0`å }çææÆâ‘@É›6mMÖÑZ__?>>>88 €«–-[Æ̃Ú8óáàºuëvàÀÊLf¤°ƒ™3g̉j”Áƒcs齪ª*ƯÖđèÑ£T{<Èdy2ÈD%%¥­[·²wDÎÈÈèáÇTûév:tˆ*ÆØôéÓÁ$r¸Í›7—••µvܵµX°`‹~•½zơ*..æ̀³600øñăGJJ¦¦&vj X´Ç–L&8pæë$ !3ßíÛ·y"[JMM ƠI“&AsƒYƒO:EÅ|¦¦¦ä5(́́́‚‚‚ÄÅÅƯ²¬¬,è-¶Ç1A´GÇœv ¾……È;Ê=ÊÊÊõ¼A9V f§'ÛVØeäÈ‘£=ÖÖÖÀʇÆZ¾x:đø §ËÅ5ˆ8óáÀ ̉ÓÓÉÛÛ¶m#G®Â2(Ó $—œ={ö`9±ËÓ§O©öHHHP~tww dD{ÀyĐAéè̀À;v́MI9·GË|úúú”eddÈă™S§NñÇ1ÚCH®C₫₫₫Lâ½åå冿üăùÛ¥‡;wîgggă âqæû×abbB̃扄D¡¡¡S¦L!„Æ:>>ăọèÑ£)?ÆÆÆRƾºrå (Bº₫  ;HçÑ*?OªÑN¸ Ê|”~.íÏGØ6lÚ´‰ óÁœ):Zíihh0r?æ" ¦%&&bm2g>œÆ¸qăÈÛlq—èh́ß¿Ÿ’ùúöíËIÑ6ØÚÚR~œ6mYÔÔÔ¼~ưÖÛ8ÆÅÅ…ĂC¸@ÉbbbèG*—aÆ‘·¡YGiẠ̈å˹%çôéÓŒ¾Ú¸q#·hÈô¬¬,%%%¬ƠFîĐ_ÚÙÙq>¸6”!N(ƒË\ºt Ím›™™éèè($$äêêºhÑ"®»Køúú̉2Èe4¡w´=†6äæLLLv́Øall̀hvÎ|ÑÑÑÀ|/^ä æƒÖ–L'´ëá0‹¨¨(”ùÀ~T$A³Hå±víÚ#FpwrhñâÅähäÑΪª*r8´yóæÅÇÇ/_¾üÿû<®́²eËhw¾{÷#Ï=77³uàĐ¡Cic«âÀ™ïŸ“™Ï:ĐæÀFEEo­̀%/@$/tÁGép¯®® ‰fÈQÉ̀çàà€–6çÓÇÇÇÉÉ ´‡}¿|ùB 944”jéZyé̉¥GÁfµÚæ*Î|8:iii)¶2öM…F e¾đÄ U!#¤8ø{̣äIÊæ¦gϽhuܺu«®®N@@€̀|Ÿ>}‚¿ÉÉÉĐóx₫ü¹¦¦&mÀnŒ\¿~}`` yÏ‚ ¨&V¹‹̀̀L,×L0ïܹs<áƯ†3v¡\̃€YW‡„„đV!£̃åååhâơC‡‘Ç– BSSvL•——wtt¼xñb—.]Đ=h45{{{¨*;v́h1¸çu%óa­n a£1EÆ”èÖ­[xx8Î|8óưsèÑ£Br÷¾©¨§˜Ă[… "₫8p`óæÍW®\!ûm‚ÚĂíQö0Pæóơơuss ÈËËĂf,t…‡‡Ç̃½{±fá¼yó0Ë|€Ë—/C‚ ÇCœù₫!(((@ăkaa}Sµ´´à/“È–˜Å Aƒàopp00Ÿ‹‹ º˜DMM ;ƒœ”@Éáâåå̀wâÄ èm`3đ#¥“Ë©S§0È|đÜ1^?—,YÂ<…2œù:ú÷ïÿøñăQ£FaßTMMÍŒŒ êDHCˆđ÷Çơơơ¨¢Ú¹s'“äºÜ…³³39â’’RlllbbbPP6­µµµ-**B=nĐÁd¬aüøñđ¸±œđyúôé:::/^¼ÀÛCœù₫ 8W˜OOOÏ̃̃;>ë­Ơ|cHxøđaUU•¸¸¸¨¨(f ̃¶mºVÏƠƠʜˑ₫Ï=ëéé™àîîM wï̃eæXZZâ!Î|ÿóQÆcÄ8ó¡f<„”W]Æ.''‡ÍqN2ÀƯ»wƒƒƒ¡eÁ¾§Bơ‰’M™Đ›PUUEHnX6̣úơëg>xÖ‹-‚Î̃*ầ×ù!""‚å´®d@+L•1·””daaA›™³ÈÊÊ‚¦¼ËĐĐĐHMMŸ—&öK2$$g>œù₫tï̃ûF~úôÉÙÙ™w ˜ÛƯƯn„elâăǵµµ˜ơ¡ÄđáĂ/]º¤®®e#gΜ‰ư’ä¡ú‰36È>́YTTäææÆ»…\RR²yófjY‹‹KKKy™VIIéđáĂ7’'– ¬Y³¦¡¡ b€g¾NaaáYPP ¡¡Á»…\YYéèèÈCÿ₫WLUQQ!ÇÇ,SSS1.L{ôè§kÇ™×|Âׯ_yº1›­†.„„„dddx£%êÚơçÏŸØ·3&&ằ¸zơ*Î|8óưà ?æÚÚZ.dhyËCG@@`̣äɼb-Oäç‰đC˜ ª‡36ƒ'ü÷êêêđ'ÅIO/Y²g>6"++ ïằ‡C½{\óá B}}=¯Œṿ óñDÈEEE¼̣ằ÷Oƒ)â:¥„â9æă!kyB©ÔÔÔ`ßHiiiümř‹à‰!eJüúơ /^ö‚'Æ-$%%ñ·g¾N‹Úºú7Y¾VVW•|/»q'j¼Â©˜²3·°øă§Ïeeå°}ó̃ƒị̂²ưúJ÷ä1ñ!¿đKQEE|Œˆ‰ƒBV•—ïöfm.(₫ù!÷û·oWnƯí#Ư[Mi ×xAñ¦ç|„â­¬¬üV₫#â~|OIÉÁJÄ0櫜[ø57ÿsyyyuMÍÍ{»Kˆ+Èö냱:\Z^ùî}̃·o¥…_Knܽ/öŸ˜¬L/ey9¼©Ä™ç‘÷¥4âÖͺÚyu¾ƒù$eûHÊÂ₫7î£|®CRS2sÓ_}ÉËebf¢7œóF665] ¿“ơ:y få¡b=zv“ÔMI.¬F(Fœô¼ǜ7̃¤¨j ›dƒ­¨’eUƠWoÜ*ựYA}X?%5A)Iy)èE?Ém^÷¡)Éz—÷öƠ—ïG™Áu›ïÄ?y_f€̣€Á=¤ûIôW‘è$d7 ‚¼úRó9;ư}ÚK!{ûÜë}ùöăæÍđe¥ Cuú)©̣ÿ׫§b/àÓ·âĐr~ Eõ䥿úVôÙĐt́(M®ÔáË7#s̃¤ ¬%;hˆX÷Ä"EG9Ír¿"Hvz̃Çwiđ® Ö>Ñj,W 3:ñùóøû=ûÉ PÑ”ê''"#ÿv?~ ïÛ³¼ïŸ̃¥å¼Iê!Ơ{Ê;1Q¼Å™—p6ôúÏêêaæăGÙ´°˜ZRZ₫¡Û7ă½yüÀÅÅ…35₫Iê»ØÈ°‘6S0†ĹÖ£—ü3í¯?<µµŸ8DE‰»…|52æÓ‡́‘ÖS†™Ù2?²gß₫đƯ¾ÿ"51fé̉e‚À"GƠơÍú)iX+1‹À×µkuøǴ?Ơ6^>Ô]\Âq¢-'­½p#â[ÉWƯq“FXLd~doYyø‡n_yôîåă•+– qÀÈG¯̉F†ëÛ9ªèÀ?æuxÈHSøÛ±¯ßC¶Ÿ4y°’Œ,)¯XGàùË¢âƯ5 -Úp.H.ø÷º <ö¿›Ûj¡s}x?Êh’³¥s«xJHI[Î^QßôëÀ¡#––* 9_È¡÷ª++4,´Z4t!üË(®ˆ=rxƠÊ"‰§SVQ}ä°¿±Ă«Ù+Z{._¾‘–D*ºƠX]é4ebG[{.ôŸ€€iΨ¦ÿ^æ–Æ]̣pwë8?£§¯3ŸÄÇNp²l}‘v—’±½̣ç¯F_ÿCăíltÔcyuÍa??c‡ÙmxÑø ́gÇƠpQA¾I6V8óáÀ"^¿ÿô0úîh»ö¦n·³̣᫬©ÏÏ›Ăöq!//¯±ÓC+Üë]à u?wíñZ¿v Ç ¹ ´<äÜé±Óµó:¢b@Bß}J»|ɵùPÀ)•aúĐÔ¶ó:ª:đ×ÿhÀ${»¾2☕_qóñ¤Ùí¼Î=¬æ¬Œ~‘ñ93u¾³{lhḷ̃ëe>c©ÑÄv%$tá3›2ïÛÏÚªĂ‡O*kéA9´ó:êúDÍçëwp¶óLI l¹à̀÷¯ăÄÙó*# ÚO{d #H»½¼=ÜV³ËÙáEÆûׯRÚßSvK?/\=BGY¡Ă'ç/Ư’èƠ§ư´G†¤t?ƒ 3½|ö­\á̉ »ª¦îàA?‹Y.l¼¦á„™9¥EÑ.;OcsÀ—Ó¯PÓj?í‘!3P ₫¯¬ñpg×*ˆgo²2̃¼ac‚:|*$ÔxôH9Ỳ>w³©ó“?|üö1qÊxkœùp`{¼}-f-íˆ+[:/?{éúd;«nb¢í¼TXt|¾µŒÙÀ^ÛĪè[I~üc3ƒ‘WÈ~‡NœZ“íWç´äêíhóÑ#¥z²3{TAIÙƯèû́m₫Pt“́­abăí³ÏÓ}5»®éí»ß|ÆâxpľQÈ%ÇIö퟽¾~çÔ@% CöûX 3³Í/-Êồ¸ƯPŸK¾ß‹yĐϽ§Lø·ßÿë ä_Î|XÄÖ­[Ç/̣́¸ë3³¹}ß̉d´¤DÛ£f„FDÉ©j t”O‡X5‚‚×nEN´±äÅBVÓ3‰K~1bˆ’,›F ¿ưHxÜư 2̀–@±l̃¼ûÅ;Ü|ÂƠˆ({ ³öx¿¡¨©' ÜQÎ_’½«…ÂîÜoÑvÏÏ‚o?Ÿ§hYt\aL™·mÛ¶M›6á̀‡ƒkđÚëÓ¡M!#MoEƯ6ÁZ M₫w^ôSVï8ÚC!,*Ö{֣ɣt´Ø{eÿ#(d…¡:“Ÿˆÿ'Ö~y]VQó0u#́P@±€VótsmŸÚ;ÀâƠ44¿~û¶Ó$»¶ù¼Ü~đd úđ£="ÿ‰Kü,9u„V[2<|«¨K@] ;v =<¼jù¿’Ơg>l!đ•q39Tù4 Ç>àÚúº^PR ‹ˆq"Ê¢¨˜ø—ï%?**º‰‰±ë7¢ăôí§s¦•µô‚C/.m·WÑÙsgØ7[Ö‚̣›±øâµ›íÚhjè ó‹8cª–±•ÿ‘cn+[íåø±¨T@¬;t­8`äâ= J‹+ªª[;6ÛÔÔl8‘C‰àfß¼mgñO,xÀ™CÈüX$?d'Ñḍ\Ÿư~î®­›Û¿z‰co#@º¿ÂésçV.cOcẒ£ª«(_Î…ˆeí¸ÛË{Ư¶k /Ÿ}ăœ8r¡—‚ZQÉ÷̃­Ÿ¤|_X,«¬ÆISͦÎ÷ơów[ÙuÀ(7Ăn°Ñw¬Eô‘t*0°µÊÛÇ—cư`„ä\-ĐC½½Lœùp´ŒÛ7¯¶sa@`0Á)/¿@N¶‹Ç¬f¥đ?ĐÎƠ m€ñä¹'N-˜Ăê»ó<=Û”ă% ½̀£Ç¯ñpÇ™»ø® ?F¢{Ù‘øƯÎs'øêMÎÓ@PHäÚå‹,y~«¨VƠ5àJù(jª©­mgȸ'Î\đaăëÚơÉ‹mc¾¸è»œo¦Q-u="r‚u+j.„Ưæ<íë°ÈWCO±è¢¨>wôú«iƠƠ׳8³₫$.ÖÀ̃‰óF‚ʼ7ÎÄg>Ĉ@ˆ£û…¦CṢåvKlb’Ï{%^cèÄÿ! ù€Đ9 ¡ÉÎC¹ÿOú‚iÁMçgQ ̃7okjz‘'ñ‹{Y†L&Ï}ôNŒo‘ùªjêFZM梑F¬ÔἬ·ưƠt¸eäđqâ=3Ä@v.3”$·J›à—L܈/C ~‡¿¹tr_D\°P·›”¥(eZơ–U«̣̉k-œ\æOqăÆmºáVöR¿¿£N|Ơ»×¬Ë(¨3q̃¬ ă뮺„¸ö€™k$ù4·ïÉG ¯îĐÿ­ïP†ûC¹77’:ÿ9˜z …ynñ°úÏ¡#tf;¬>0ÖhhÀä ÛưÉ~@‰àƠÓT߸°Ù8b¡HϽƠº,ø`LœU\Z&%É,Ñ™à Üm5@ö óÚ¹êñư»V³qÑ₫–éY9¬G4Î₫üeô„™Ü­™ï2̉Xd¾Ùoå5GrÑT£IÎ,Ôá`}®ö~¤û+œ»:g3̉s>?»ÏưÉ£œùèă@Rª¸B%úy©ÁXɲ”ăƯµ₫Äk8á…Œ?̉tƒäVû˜ Üøêµ ¿‰û̃$%X!Èí?Ă+ ÍG83ûưî†p`;_ħ™H*^2¡Ă¡Ü7sí$âRĐeăĂ_mmù¤¤÷yåUƠhøà‘‰h{ođ Æ„QX|₫ º…ŒHû8úáCÓø+¡9Û ™£7?¤éü”$ô»ñ§¬‰#ˆø÷gÛºø&GäO¤đẓ‘éI ưBd¾ù>¯n»kd7Ï{Ùü,JR ¤ălØÈ…SïEmîQ^gđù}–¦k‡ö0K₫R||ăƠSĐa%­äÂÄc¯‘So½áƒĐ'Y˜SOü¢®n”+§U3é0óæˆ‰UÖá¾»—€ đƯ˜‡6­_l›ö, ̀§¨£_]SĂJ£ú†U]#,ÔÏ̀7©HK̀—Ÿ™æ4‚Y¼«ªgÊu#¡3ơ ÑrM]ư`=L<÷Ô—Oq棧'ƒ¶Í#v¦̣Ñ=©¨1÷‚T¢›»Ö6èI Ÿ‹ tùŒơ#›±YÙ‚DzLBܳ̀ $î’¡Jª«D"H‚,ơy¥|˜¸Øéôɺ/K±ó ä‡j·âè&ÑEÛNÁ?"ïɈ\Ϩ¡ú¾º¾fˆwgc);- ̀xư*© ̀׫ß@,Ï×…ïAâ«1-£{–,)? 6+iY§T†SEÅ ¿¡Eß}7çÍ+,0±'¿dÄ|=“QÑÆ‚‘UÔ΋¶x¸Üqëk¹6̣~© ûùÑ™ Röf«éOËüdù[8rKôÍ­=í Jדæü_́¦=̀ëÙ¶€›"=vF’>œ­øn†¬â`´“É·ôNü³n©—”ôÊöxpa³1B º¶* ¯(»ơĐauŕMúF̀'&ѳÅÓk?=}’ö•̣ñé[8°=‹¨˜x[²ôUla-]ư·äÄÄcÛ&\O›‹D™F_X;ªÍög½Í@X`¾¬woé3so;MB'‰“¿kIK¡£­-:„˜›W…̣ăÛ„›QŸ ˆqZ¦ ÓKq+R¶Z̃£´ùÍ›tF̀×£· £ê:pđH¹₫ôk8ô/O½­~5™ºÑb°ˆ¢2€2ư9™oQæ£4Ÿ_TÛ̀”ù)ëR_U¤ó¢-¯…¯<²ï=‚Äï]°£©‚4¯/^°ÿ¸u=oW\ï¾N¸´ úÙUFơ¡ùH¿¨uzÄ΅yH ¦H6¸¬]…nL¥73"1|#I;¢K‡a*caÉ÷ÿ$$Y<øæ§­~Z2¿ă`™¸ë÷l̉/J×ê=Xëq‡Í¦hx=꫟u¤̃º,â2Txú¥|C–~¢è3Ău<=û´œf,;l§ë÷37-µºÀ|R}úµöè±ớÛBª?75} €}I“Mdèvê´dL s(qâoWS^Qö•ĂJ¿Đyt{ùE‘ ‚æ›®0B(#̉^auE2t ’ ï̉éjHJ39Yü­¼[^ơÏùư!˲£´{Úx½}ªCÚ !ªµIE ë°äßu˜T]Kg,‰Ô–¹Î™ ó“ ưiÏzô¶PXI§)d´ØÅ4×Çålhơă·é{Q!µỵ1í¶‹Sî¦û¥T;–₫(ë’„´lCC»yvæ#vL2b /A§©é…ˆ†‚›cCQâG¤á3ŸØ< \vçư¡ß£ÿœ’ÏĐê^-ªË(€áï2¿8ùÍ©&5‘j&“|dD¬bí•àåGü9G†Ëê'!Ê·ưOaê|*üÊ/ƠŸåÁ2e:ÍǯT;çD5\ñ¬ºUqºê•ug•çlđv£Ü:Sä‹ư‘Ó.Kï)6•–²A[=ÿ—üz=¥?ª‰‚0´Œ;₫g÷¿7[l»u—lm!–– 2 ₫Bø Æ\Ø?uörró·BO$>¸ñ¬°z„ŒÊnzH¬QÁËP†Ô ĂÎ2"i+£/¬“Ó’FáÈ'¦1Ó¬,iÖ.ô"‹2rîmHÓ’!Û́Œ̃>wØy¿°º;Qí1\Ơ¸B`'j|\aumr ¹ì@mFrô -é>èW¿ r]̣û\øUEq#S?ñI₫iÊó‰%–F́ñ˜èkÎï& J‚l@̀¦ñ[O}°mÖ̃ؾ̉¼6åÀÈUÈ ¢…ưŒ7„_Ø]øâ†4!3ú#.Z5ÊŸh!qË̃büü+~Ÿ”ñn¨­°ơ|´$R$RÔđ88à¡@·!Ḷ©j…˜£[âtv̉sî%–đ’yưZđ ¬xv xBÔ´¾ºÆd̉Ed]ósm|͸–₫jdV‡ÿªĂ' «s.ïöp·Hc›Âó'è4ău/í5ѤsDEî=ÈL„FMX1¹w;]ƒx;Äcøû‡¿i5åÔeK Ö =ø{*rÓHËØ¿‹À¸zÓ”|áI¿=ù¨NE®‡"G[(À§Ä‚¤Ùˆêÿïo=ƇÁ,aÿûoOá‰H5ÇiV EX~›₫ú*ÉóÏÔ<ëÍÆ¤Ai$ă¢ÿ+A^¹u1bñL©O>sWˆ¾q[í\¸¤âù°°t=›$oS•gÅSyF7Ơâ‹ÓÉ™Ï~Ùjºû×¹₫¾’¿û–A[è÷ñ0‰<”Íl ù¯#i~‚–­[Gß¼u”ç̣S^jÀhg×јx""‚íæ«ª‚‚†>2lÈ–×PÇĐ¥¨¾®¥K Û~“n`Ô•ÅÁÆúV‡üODˆI« ²2Múw_Ûk ²ªeé jk[pÁcÛôSÍñ€VB*¡””…0[Ó]_ÿ“µÛd0jG×¹·¶åÂhîṭ+̃7VÏaªSE„©ë°ÂèÉ' áíÅ9Óle'Đk‚Aö¤}(C(¦_Ao}+¦uờËVˆfľq¦©9ÊÛưƒƯ~ô<-'5ÿ]×D~Tá±kđ‹̉>ÜŸŒŸ;…ưÚ̃É.¨m“ưÓ|©)ĂQw]³à—Q0pK¶û||³‡½¶ X\äV,ü«<ùS"""ŒtRàY¸ ™^=5ÊIû†ÏÛû†üq_l¾‰ éäƒÖ–±t§g"n·^¾±̀×ĐÀp ºœ%¿ ¤‰%"§ơGeßËZ[ÈưzK}ûZ˨£½ØnÛ˜½I{TÈ-`ÔÇ¢…Q6›G-6wNHÎ=B^uƒÂóqÀˆ‘DQ’l%ƒ:ÏÖɽc*âw}¯ÏØyE—Új:Mt{?Đ;=µ„ ß³éʶm ³É;ŴͯÑíÓ ·!ÇX,À^R̀FäûôîUJ₫đ=Rkđ$tb‰Ø§)…o₫,0œjë¿ÊYEÔ©¾Ou»ÔŸ ïĐ _âƠÛ† O‘$¯#ȪQ¨:Qí&NS¶Ä9×· ˆJW$Às=ƠhgƯÏZfu˜Ê³„<œØ%—ØĐó#ơä^D̉\ă²D?Ú+ˆ)è“ ¬ƠÖeX&b:L¬(cØç¨úAQ½+› 2ùE€–ºÛøj±¡¶pÙ£‰ëñÓǸÍºåø û!›ÂyŸ_äM«ºü»P“½­¦® MÔ幄áMIKIuÖ†—›̀W‡à@äúHä|¥›Z@PÑvF;}9±ÇLdW‡™ICöưK̃·²*å5Å9yÅ}T“ºjuÿÛµÛtÅZá&~f§P6p2 g³K ó5[ˆăW÷³đïñdú¥ünUÈןÔÚ›ÆayÍưׂ­-d>>¾̉‚|úîỏäŒÓ§üC ûºèÎN¦°đP̉D¨ÚhJm¾~̉8-‚4“ṔÍ]&ÚÍäå×™E…í̉…¥—®»”4íNºÎ½i4%¼Ù–èÓ ²$7 AÜĐviñÈ?₫,ÉÏf!Èïv¶¡ùFh«¾̣›”"³yY©Oä:ÜƯr…mS• W~»‡  «D è3cªpEJóWè13‡v &₫­yϰíÂôÊÖkái²äŸø«‹ĐSa†:@™ù™ªº^8TQ̣̣ñ7´"=÷?T fV¡…,f<˜ÂÚjØåö·ÍG₫7†|ä°Ôë ̣Êëǹûö[öur@’ÑO.L\7E–l@Ô—@¤q¤ùĐæÂé7-áS£xÄúât*uyÉPßÚ÷ú^$&=g>6¢;¦&·¸Âœẉê â²ÿîô)˜,¾à;ÍÖrfa"©ÊϘ¥r.êÊÇj²;yèL‘ƯÑÈ —¥!‡Øø%é¥gYÖ8Y{EúûĂ9Ê*ŒŒ,₫”Ûâh¯~L;.UƯœLrâÆ•u—÷¢OÛPÈ2é3ŸƠOëoÍJ̃ ₫mRS_̣ÇEôl–¾*¹p+– PTdå0y%zÁµé9÷.¢)aû€jªœŒ¿VưWnûß§ˆélI~Mߒϲ†+¶0#^đ₫ÂĐæ:<'à-mI²ô4ơj í•ѧ(VÎÑ–­ùÖgæ[é[¢¤¬̀ÈÈ/sZ¬®BJK“ —̉Z®û»C¨í7N.Ǜö§„›¬¿~]iÄe…ŒÈ`£¿–f–|a˜µ£¿‚]ó6V£‹'¦ø½›B–£Đê¯I&¹ư©?bÚÊ@[!ỗ>xîˆ*Î|8: ̃¾bÈ|P™±Y3©Œ&½DÏCq3ûCq;›Ú#¹P"î+-´”´·VÿPí)¨¤ë¬­Ë0G?ÅA).ùAmY`ûñƯkVó@u0t‡³îÄdÔđŒï|]¸28+5k̀ü˜Üô2óµơ„vœÜĐ ?‚¡}ú+p°ØvïÚ ÿĐ₫#ÿrT¬Îè4£‘#>ac4,ëu2b…G/ĂÑaam«”8BR[G9:j°yX†4)2^¼ z§ĐAvÊcM†¡ǘ•b ¬ U43iKTĂƒcáYç¤iê³>TDX8+æ÷±ºK¶¼€RXT´mÓ\›\øWÄÁ9תç´ƠÔ÷©O47Ö&&†?8Xn ‡1~™›2¬Ă={H<¼Ï®nD{Đ»Ÿ,̉yÁfæ«.Is]½% ˆ´j\^{¥Ó¼[—"8˜ÂÖÚª¤éW‹ËækLC†mç#ûk­tE )[“£—öºÈ„.cæ“•î•x‹û qNR‚F›ú¡­-̉¾Ö¶°½ăñ<.f¬>«³³_=çz~5ÚÚØ´\‡­,Y©ĂŒ”çLd¼lßĐÈXe-=î™ù⡦-³Ü,Ï0À|¿ÆÛXằÇÖh¼“);`I~Ûàß²¤ª&-’̃(Kü_÷Ñ;=ï•xi¹‰®Ëùfee¤c.]Ó¤›Ï:3*ồu•ù¾;‰Ëđ/4^¸|ûÅM³ƠÍGèŒ̃ñdWóà™À0¢°sJóöŸ®x+ubr!ÑW âé3k]'ªS(ĂIae7¹¹é)\oˆ³̉_·m$Ôó{ơm¹k¿¶n+¢kµ²åzå|wGñå䑲}dbB¯s=Đ8k»zN©Ï¹Î|y™™ÂŒùF›qư¹'Å̃̉œ1 é¼`ó5¾n¦=¹ÉUY¡"üHLđ¦13‰ƠÚ¢6MM·`c)+#ÿ)ÙWK/FF_ăùnüyuuuˆ@ïSQÚCåÈ£(>+¦́̃ú̉Ú@µ₫[Í]Äùó“…Ơ‡Üü½6ơ”|—ÛéÔ¡µ×¯3ƠAu ío¥'Ü™îĐBâÖ™³œ ëë»̣ós«”ºüªŸå<«Í§wo}Ø3ö¢0ă¥¥i+̣]èj =w5\] mf²Ä“ 5åÜ-̃·c'´ O§Mw*ưÅÍÙSB}íÜy³™cª¯{1"Ze˜> “¯ —å;Ï0_YZóÚÿw¹¡è„’™Ó¶}7n~Q›jn=ÁïBs̉Èơ£„×7‹¹jª`.UMÄ1»-[ó₫(¿n±ï}Œ¤^ @‘LÖeS̉ÛùÀÿW.Lj÷ƠVyi æâ¹³n%¼́÷w̉†îjvN ̣„¸ûŸ'oó÷Đó{bÄÚÅ—r„B{̉&íItN¡SÑùZ®è}¥{yûZ̀âÚđơí ck×x¶ùôé“́.Ư¤ÍµåCö;Ĥ•¢¹›̃ÅÙ©sgÍ`ñà%ófG$$±’Ø¡ƒđ«¾å² Û'Ôg¿¹Ób®Ơá€uk×´xXEñnvÑ̃&9O›3KÔsđäígƯAÄU5®WR~Ogơ.™ö¬¬¬nß&&K%€»#HÅqM¤ƒ›cwzz®ôööv#¥$™ö ­ ănĂ8YË‹|njâ­H«ï’ơSäÆû—§NÏÊ‘V¶¶ơ\ê2wij´›8©)/*àÖóư—±hî́Ö5kê¤Kу¸ÔưÏx•4v´n+T×ËDn1_^Ê£éS&²räsó¦_îÔáºI“Yo_0Ûéz̀£jZ\)̀œ·éˆ17'/1"d¤ hØ1=•æƠ?Ú–³î„•"×đ¡Sw»”¯3ê†Ô6g®¸Wâ7F$v3d]r“és½uÄ€îè<_fpóˆó÷&b/¯Å¤LĐŒơùÍ©èW‚¢₫›Œ5}xJö¹­Xr=Bm$§3gÂ#a5†ºª̣ÎƯ{¬ç¬ä|ùÜ:shưºµí¼ÈÂ9³Nœ;?Ü|çíÏÿđO·-G…»¸R!ß>^±lIëêđÊåçĂ"ës¾ó±\HÚêjÜ«ĂGY¯Ă?pÇ™úM—ŠÎvz¸¼ljJ жú³Œ2)̣\/sZ.7“₫™«¯%‚uV++x÷ !âäɺŸ•Í₫Æt'‘®\D7v¯Yơó'"ø;äĐñ¸̉­†ÍôÖD«›|Ͻ¬Ë–àçɇ!).ÖÈqEyîĐZOV´nn«£Ÿ¦öSâh¾æ̉÷i«ƯV³åRêC8>[wơLkY„ »qf^{}ÆÍ\Æa…Ư»M‘«$D…8¯¨î]ẵê±ÚuUlRFyNY”ùÊÓĂơă'Øúú4›:Ÿ£}ˆ_ ²ưú!ÿؼªAËraS1yRÿưäÎå ¶SË&²+;ØD›–ITu*ä₫öÿ s₫Aa>É´P·!S|Ñ=ÛÜfÁ?„7B-L ÷pv"-79Á£•Œ"$ BhhlhàăTÊJBC=?̉¿Ë–«ĐTßïÈdÊ<̣ǜ9³Û5àºêÚ½xN:%̃ 9áéîÚ†­Æ˜́ñ̃k1Ë…c¦~J{궪Ui(a!!¾ŸUœ́e~ưüOX°µY^—.Zơ䕜:Ç 3êÂ)·UÈ?ö5^ơƠOŸÄ^‹ªöÚN ¦Îß}₫–àé4D5‰. eĐüûđ§{s >ù̃¤ ß}9Oa8—>àwÖeº|¦6Ù§©ÉäăQ?ßỡ'Ç4₫—˜´ƒ÷†ª×zºyûî7ŸÁ‰øúïEỆ|­Oúc:ZïÀÁĂÆ“çr¢É@7‚Wº°³7àºÂe·—·¥órNØÿ³ºñg “„æ,½¥]»’“)/-ê&Ù›6ßm¥„¢©Ă{÷û¶¦6T”ÊÊônC̃đq&£9¦¨ Ç…]Z¾dQkO†–¨ª(çÄs:¼¦5ªg>"¬Do“6lVÔH5_öôöCè¥gáç*j¯?4¯¹Ö%Qâ¢ß´G7l±Åıëă‰Ó~™Hs>ëY‹ÆèªÛ/êWơèp`đV¯²¦¦Đu^đψ@ˆ¡y2ÙÁ““´n®1v˜Ó¡¿̉X]VYúeøè6ʈUË—íṇ̃¶èx̣¸qÜ{óæÍl¿́º5èa€ZM?m’}û/¥1Xånl|WAa‘ÿºu¨Íá(pו₫GNœƠ±•ăgEI₫{‹Ö,ùKI¯\¾{—ǻX®Ă£†k]»Ùo¨^Ga똭ó3_DyAÜ6 {ÑΠXSΜ˜.÷̉ÙïÔ¼™j̀SÏÀù̀ÅSHmåïou±3›¢¢Wâaƒ„™ Ó~̃B–-CJË·z@\¸pا—h ÑGgóîSYå²´C;¤uß k¿—˜Œn×èÙÚ5^>ûÆ9-é # $ñÑqo#ô0:t₫ŒPWù.é)[hï·L1ˆ‰K¬ë̃G‚^¶ úb» |Å̉Eû6é°Æ̣’o¹m¦½æĐÚ5:¿Đ…uøx;‹t¢åÛQR CDÅ»cÿ¹ÿs̀‡tÛT–J ’6˜±'.¸yưÊ!Äå q#é%¢ú¢™̀Pœ}]=T$Ã'œ»•±ÏkK²]ÿ÷I%ÆehjúD §^QÚ|EG>%m“ιkỊ̈#^¢_9íó›ĐŸ§ tHwí̃cƠhÙÏb‡ >¾M¶6QÑ?₫W-7ºE~—RU~æđF;;-å6í„”ÑT:óñA¥,¿đËQ¯1†óz‰ömæ3—ÿ’¢®ˆ‰‰³đ…S½¬_g^SSsààaEiùÍưz₫ëgÏ’-×Qj‡‰Á@@")*>|ÈKsIïæ—} ·ÿ«©₫ăØ§,düXúkÚ«×£ ¿ªLlvæ₫ïëÇÛW.­6_»ÅÁ¡µƒÚ­kWH^Đé“'ütŒ÷è-̉¼bĂRîFôèÎo2C¿UĂim¹ê@p V-Ùük8/#%óyÅƠZ#[±§ Á$ú`A¡×₫WU¥¤3­ÙUoùQWΛ­ZƯù”ÑRÄD„·8:€´\ºríĂûuí¾2=«ü^øâq—Ïy&³MV6yèÅ–{‘ÖÓŸgß¾÷đÁpuméaʽB£ư÷ñerJb¬ú)ă´¦h·ó úÂB‚Dqpár؇œ·:b+Âh•e¯’²_¥ëO7oÜ>ó*Ï„ßää†^¾,,.1XY³»Pcsy›‘üà®´Œ̀$¯ˆTcÓÓ×”}ÏHÿđöñ,“¥M˜/‚Uu +zgÄ›1±OăƠ´¥½†)ÿƠ|xùôib¬¦îÔqc§Ól›pÎĂ¯·ç¯Ă®†J’—QÖ́Æß½‘ă¿åf%?ˆéÛOjñ µ­yHù8–ù?­[^Aạ³4PÁo_ ÿWQNûï?^¾ÎƯ{ ÷ë7T~¨ÚĐ!jƒÛmbɉă´à¾—–=JN~—ư¶đs^EY)/_MuUW~Qñ2²£Gœ m0A›Ửy₫¬ÚÉn¨Ÿ?'?MË}ŸSô¥ ̣₫₫₫æææü=ûˆ‰ËËÉ¡¨,mˆa†í`Ù₫Rv6µ I½Èx™‘™Oưđ£¤èh@Ạ̀+ºtíÖKXDªÿÀQ#†ÔTÖÓTnχ—×ô§Œå|¤>}–₫ñ}Nñ·/UU•(hM®añ~CäåTG W‘1n¯pN¯=oA×đC¸†ß¼ưRÀp ôé#6PVFCeä=m½ö¹†ä+ÈÓß_@8)5=ăƠëÏyỔ’¢Ä„ MM¾Î…zơ‘́ß_̣]Uq¼ª"*B‘̣q<â}Dô'gó@öà×Ó‹isêè·¢¢S~M–æââ²mÛ66óˆạđG,ïqsÛ¶u+Ûµ? øcÿkx"Û_ĂP'VSÄê°aĂ®_¿ I¤| ¨®®æ¬wâöYÖơRTT„)ÑQoo^tƒwD‹‹Q" åC :( %''§ÿ₫():eee(̣!”ÊÊÊưû÷{yy¡¤èPôù«¦̣!ˆzè̉¥Ë›7odee9%ÀåååÁÁÁHù:ZugÁ‚(̣!¬‡‡g̃¼yO<á”óóóÿ₫e\‡bƠªU`ôQ: åC XCUUƠ§OŸ8(À=zôÈÏÏGסˆˆˆ D途`™…‚ÏĐĐPcccN °¢¢â–-[\]]Qöu ¢S^^̉)Ájjjúơë'))innÎÊWYYÙ¹sgp@@R¾QÑA途` oß¾8pàƯ»wutt""" Ø<À§OŸ.--…`¯X±âû÷ï=zô@™ÈƯ”••-Z´ÈÑÑ%R>‚5<{ö *Ô222ùùù`¡Ø_ù|||¾}û–——çççwôèÑÂÂB”‰Ü„„D—.]Pó¤|Ëx₫ü¹ªªª‘‘Qnn.h‰œœÜ«W¯Ø9ÀàótuugΜ9v́XXBùÈ­¸»»ÇÇÇ÷ë×%R>‚e¤¦¦ZYYñđđ̀={À€÷îƯ;ỵä²eËØ6À›6mÚ¶mÈ̃?ÿüăääDX@”\I––Êb¤|+IOOÏôàÁƒ₫ưû‡„„¨©©™‚ÿ“’’bĂІ‡‡¯Y³æÀ«W¯®ªª ,((صkz Ä• <Ø××÷ăÇ()̣!¬$''>oܸ²w÷î]ww÷‚ ç'((Èn¡µ´´444”””äçç·—’’̣âÅ ÂtíÚå&7Ñ»wï¯_¿‚á322B©”`%C† !”oÇPÄ+((<₫œŸŸŸ»µœœ0a|ÊÈÈÀ'túÛ·oưúơC΀›€Z\ƒ ÊÊÊB©”`1cÆŒÁđv.đÅ ,‹~₫üyụ̀åööọ̣̣̈lÔû÷ï?~ˆ ñđđÀç›7oAöúôéSPP€2” ëđĉ³(5̣!¬‡x”4~üxø>|8Q×Ù;EÏùóçĂĂĂí́́Ø!¨†††%%%°0b}’n &¶jƠª´´4½Áƒ¿~ưå)§Ë^aaa^^^ii),£Aʇ@°(b¦N ¦¦¦Ä–ôôô/^ 6l÷îƯk×®=tè!;( F "–ƠƠƠásÖ¬Y ̀ ,Ù300ˆˆˆ€@‰‰¡!=9È>'''¸&«ªª Zăëë‹̉)Áz9B 5wîÜ”””‘#GJII 2$33S@@àÀ'N¼}û6I ~°Đ“ÁÊÈȼ}û=z¤¦¦Fl´°° f®Ù¾};h6xV=âQ-Ê\Ị̂qåÊ•çΫ¬¬Ô×ׇ‹ ¥ R>¢U¸té9ẫ½{Ï= {Ó¦M»~ư://oddäĐ¡C_¾| â÷àÁ°YIIIíbøœ‰e©|ä„mªªª:::÷ï߇e=qqñ¼¼<”¿Aii©´´ô—/_`>ç̀™’)ÑZ06 ¹zơ*¹́êêJXÀÎ;ƒ́ 3dDªäëׯoËpˆˆ%#pï̃½₫ù‡Xöóó ™={6†·!^Á2È̃²eË/^ å2;£§§·zơj"sõ¼‰d)Ѻ,_¾œ\¶´´$—Ge``N¡P`dO[[ûĐ¡CÇ/LBBậåËmH(Ÿ>}J®>~ü˜) „̣aøkK¢,Ÿ¢uÙ°a#Æ- .|ö́¹ ²×«W/rÈDUUU=99¹K—.)))ñóóÍđhmmM–b¬¥nu]]]ÆU==½aƽxñ‚ܲÇX’>zôˆƠ¢ƒÆyi_üüüöïߟ••5kÖ,b‹¿¿BB’=¤|Dn‰Iù$$$˜Ù#-Á«W¯ ¶vđÓ§O°‹hr9₫ü‚‚̣áKعsgff&ÓÆyóæ1mY½zu];+&&RGxAâ=epp0x\¢Ï>¢JƠ—/_ñ¼iaaAl©¬¬„«ˆJ¥ÖÍ>R>¢µØµkÓ–k×®}7‚́ “ LYYY¨­ÆÇÇ/\¸Ÿ |P÷̣̣b|ƒøwŒN ضmÛíÛ·A¥ˆzzzÅÅŰ`ooºx₫üybt˜æ’’’…#ÓvoooºÇƒŸûøñ#Ó,ngÏ…óhhh0‚µÂ!ÿʆ£rsUUUÆÆÆß¿‡kƒ±Î„ác 8đÑ£G(•̣!m ˆÊ5kênohæëÇûúú~ûömëÖ­ŒÛwà€ yzz‚_́Ù³'±},¬]»6$$䨱cÓ§OobØà< ¥ue8sæL½Ê7zôèz­9r$È8¨¨¨Áƒ“Û—âdffÂ.ww÷U«V¡K¢åÔÔÔ,Y²äáÇáááL{¡VYÀØy”hSN:UïvĐMMÍ„„„º»,--+++ë!Å'++ „dï̃½+W®$wÂÁđɵwîÜ I6Ŭ ”Œ………ëÖ­«w¯œœ\C_Ù›0aB½½Á̃½{÷âÅ‹ºc° 2„h¿NJJud4µˆ&ÉkffVPPpᦧ̃NJUUƠÉɉµï€HùˆæµïF¡… 6´«sçÎ { K²²²¶¶¶L{ D<)…¢q›̀lÂÁđ1bÀ¾yófûöíL“¿/X°`Û¶m̀ÇÚÙH¼ÀjÖƯ5lØ0=°§©©©ÁÁÁL{Á’bx·E555đçÏŸG­@ÿˆ——dÖâÅ‹}||êl̀ÙÙùĉO<ÉÍÍEÉ…”hgŸxhưúơ₫uđàAø‹µkè€̉̉R0a`A„„„©»111[·nưđუ££½½=Ùƒ¢^À,Ö•[F@/_¾`ăÆsçÎơ÷÷gÔZ&9B¨`hh(XÀº^ÁömvªªªV­Zú޵µu¼Z  j)¦®® +pê=2×ÊÊ ́₫îƯ»¿ÿn4¤|»@£Ñ2‰´´´©©éƯ»w? ¢¸¸øƯ»wÄL`¶ê=¬gϤÖîܹ́xooo>>>âÅ!•J%{2¾%:₫üáÇŸ>} Jfcc£  ¦°)q¡?¾¯¯oă³»ms@à§L™rèĐ¡zŸñBp`RĂÁÁáëׯđ­º} ¹ ¨7@‚@¦@»áÔ{dMMÍ5k.]º4oé̉¥èCʇ@°½{÷nü‰" ôŒ¸4€@Ă”””ôôôjJ°ĂËWß‚³S§Nu\€C®‚÷‚_é̃½;ü)??C¿ráÂpÊÊÊÄ́ƒ”è†%ø­[·@¿eddê=rܸqdĂp¨...éééàr6mÚÔ¹sgν$ 8ơ È PtˆÑ_¥‘¯xxx@̣B‚ÀÉ)Á8::6kâ:=pZMôJÿÔÔT oøà́́ %cCFaذa`ăHYư₫ưû–-[=ª­­mmm=ỉ¤ºßˆˆkH®VWWŸ8qÜÆ½{÷  Ôf|@ ₫́åË—·åaü%†?Ü311IKK;uê1ÿm½LÀ!¿}ûö“'OJHH˜™™™››7̉rµƯÉÏÏ?sæLHHȳgÏ qÀé‚?vÆiä[Gpu„‚Ưyóæ _³¾¶¦̃~r@6|ot́Ø1²3{rr2Fppđ«W¯¿̉£GOb5&&ä́H ˜}}}FFFÆow8/ïrƉ‰‰ …`Ư²³³UUU'NœTTT¾ f·)‡ô![~ÚÛÛCYJ ö®‘¯@àwá«_¾|ÀŸ;w̃ØØ¼¿|ùrxxxll,,Cj̀™3ÇĐĐЧñï̉h4ˆûñăÇA)! À×îÆA÷R>‚c(..]!\6 °/>|èß¿NNNs¿ X€rÄ,Ñëׯ‹₫øÅñ8äjJJÊØ±cAc-©·A)†?º¬Û*çîƯ»Đ€N:ué̉ÔẉäÉ7pÅ:ă¿xñÂÊÊ >á<˜[XXx'¹%** $è1„¼é¢E‹È™uY8đÄPÏHJJ‚„̉̉̉‚={ö<œ¦œê àzAơÿûï¿ €¥³ÀA÷R>‚#ÑrrrbœºYâgê?OÓ¿X]]MŒèq₫üywww Œ蟣£ăÚµk›xp-?~ü`|„xçÎ .ܼy“I###PĆ16́(ÎúơëÁ¼‚’e=œüĐ“'O`yđàÁÊÊÊêê꺺ºL#—ÂÈ₫jÏŸ?ß¾}{dd$ÈÄ…q\˜†˜„øååË—àM¯_¿₫ôéÓ‘#G‚Ϙ1ă“~ưú´˜. ¤N\\TB *>Rµ‰I ¿ €¯ƒƒtÇA÷ R>‚ă9wî(Ö_ËIaa!Øđmơ*Æ x…ÿưï/^ÍcÜ%59ÆJ\\è1ÁË—/ß¶m[CăgÖÔÔ€MdR5=Æ-ß¿ AzđàÈ3xÄ)S¦@i.&&FsàÀ ï̀—™™#ƒSï¸eyyy÷îƯKLL» *U^^ 7́Ä‹ ϱcÇ222f͵nƯº†Z·21tèĐm8Œß½{ œ––•^^̃̉̉̉~ưú©¨¨€(7Rt»Ya»råÊ7=z4dÈĐ¹ùóç5 dp´¤|WñƠ«W™Æq₫k¼¼¼@‡zơꟓÔE[[[(µ7lØà́́ >ïgÓ̉̉"ÛTUUíܹl™€€€©©©µµu·nƯˆ] µ Ü<[=̀p˜¶ƒ¾‚³O0IfPfp¼àft; åC ¸'(‰™óXØ©oß¾bs ‘ƒeWW×@œ¿;-ÙÛ¨¨¨pww?}úô«W¯V¬X&²‰^ª^}ênẠđđ9¹víȼ¼<ˆ¢¦¦æøñă夡Đêà0m1Ø»wo89è8ZsH±ÊÊʲ²2ǿRPP€¸€ÈA*))5¥¨´´4)êPómĂB Ơ[ˆÂ‡øùù!đ ¸mmm4)R>¢†ăäÉ“,—=ÀJsđ÷ïßÿøñ#”¹,ÿ•®]»nÚ´ , h±ÊúăÇGDDHII^ª¡ñÉ£œ`¿¦M›ÆËË v"?  ܤœœXOđ£l°¡°EFF$R{äȑెăüñ§Á€A]¡   ™¬¬,(qZP/Ä‘xö[\\üéÓ'øQ8Œx9ỉ¤ºOzü(ñồb—.] ´p*°¹`궈@ʇ@pÄ́²¬:arṛ®]»®_¿>wî\0–8ä^+++77·°°0r~>V4ăĺL­=1| –sçÎEEEềŸ?4Œ|@Ú,RSSA ÅÀ-=~üä­ªªJXX˜huâè訬¬Ü¿̣xˆ)H×ÇŸ={Ë ^?~ü€í UḾ½@ØPđµ`—¡ö@<5ưï¿ÿ@ÿÀB,@™ µÉF1àó̉̉̉à8̣÷Í›7ÄĐ   Êđ»`™Ú)à4 8 ¨;ü:ñ.³´´tÈ!p°¤ ‹ªènBʇ@°;ƠƠƠ"""P·|ª¹Ă‡ïß¿Œ—­­­©©iƯ™ !̃!:B¹|ăÆ –Ä }PÜÆ™‹C®‚1U§ ¡¯¯B'2|H8**• FmĐ A„$€¸‚QS©{~¢ơæ¿ÿ₫;sæLÆícpê ø³û8 '/^¼Ơ”””é‚_úô)Èü¨¶¶68œ†"¡=₫üåË—!)455A†™G~~¢2 VLh9x;40£ˆ/ˆ:q<ç|œzÏvt4,#xGPwđ‹đu ù€Đ‡”hgÀơêƠ«)]åÂËËk÷îƯ***đ¹§Y_wÄYºt)”³-Ô”î àº@Û@ØÀ aø\ &&& . Û`Ë9ré̉%UUUˆ£L6ObT3œMZZº‘ăcccĂĂĂï̃½ ÚÂ2qâÄ)S¦=è¡FrûöíèèèÄÄDWWWP‘±cÇN<”—·₫ D©Ë9F§{êÔ©˜˜ˆÔÂ… —/_NM)¦ŒÓx¼ ¡@ AÏ Ñ^½z•““#..ÆäŸhDJ<‰ƠÇiè$SB_¿~ ÉNâ˪æT¤|Dc@ÉE¼jîA9V¯^ _„’½¡gѬ'”§à6₫â yyyƒ&Ç[̉™h¬¾-33ÄT w555pN£p9›ººúñăÇÉSíÙ³,Ôœ9sv́ØÑ¸Œ1â€SRR_w»nƯº+8°̉̉R°©S§‚!ÓÆiè$}úôa†” ªªèrpï̃½÷ïßC¼@!„ơvƠ§P(LN·¬¬̀ÏÏïèÑ£ ̉‹/¶³³#-]CÈâ4̉5âăÇ iP¥ç ‡!̃7nèĐ¡äIç&Y‡3@ư²̀7¤c÷R>¢EHJJ62‘^½€£Á[»v­››O,RaaáÙ³gÓ̉̉àŸ đCׯ_~(## Ù›7ojiig"ÚŒ0¾Yükà<§qˆUưû÷C9 ¼ÓE9qâDpp0Ô@äjjjôôôÆß̣₫‘àØfâ0m/r?B¯nCP~~~Æ* Bqưúơ7­˜¶Fz æææBNAđàÊyụ̀%ÔEÀ}‚äƒ`ƒÂ„ï¬Ûé´<1|j0†††`‹[ØL ”Ñ¢F£5ñ`(­ ¸177ß½{wkO²³hÑ¢ÊÊJPe0£äFjXXXdddll,˜B(¡L700ĐĐĐ æ^˜={6¦m“tŒc.;;;ïƯ»jûö틈ˆ8räH”Î࢖/_Îä†AQàSIIÉƠƠuúôé­¼ºoÁ_úûû_¼xª 3fffuẸđđ¬Ç!V³²²́íí!. Ïeßt¤¤¤ˆ̀ª» $ ̣¬đ£GxyyÁ#‚Ûƒ<%äqŒoĐB¨‡Ưºu«gÏ3f̀€H”¨Ÿ4QöæÎûưûwœ¯_¿¶Yđ ø322êܹ3j`à@$ F8 }åi¶àE>|ñåË—S§NïÉƠøÓăÔÔT¢&ÎâÄlpÈ-)))¼|ù²œœœ……EƯù DÎ;²ú Ÿ` §M›Ö!2dH½s8@ ƒ"Âç›7o@Îá€*ÑÁ߇ñ`pÿPÿ€ÑÊ•+Ñ„Hùˆ_ôîƯû2V]] e"”D`Z;<111'O„«_¿~àE h#Úîûùù<\¹råg€*?”m“zîîî̃̃̃ p›7o†Đ2zÂÍdggëééơơơmD@öÖ®] G6wD1–0räHbơùóçnnn „p±LÍ/A– êCF,à;êÓÔu{Pcƒp‚*ß¼ySLL̀ØØxÅDËi8䑹¹¹^^^pi)((€s‰î}¤|ˆ `P₫è¡È Z<²ĐÔC‡8qâÇóçχb«n;̀»wï?g³ÆÂ₫ À븸¸¨ªª‚˜mÂiä`(…‰q>́è覰¡‘©! t7nÜç¯om@_dî̃½ÛÓÓSSS>§-Äđ©3ˆèC@́êÛĐJP(”Y8Œ¡Út́Ø1ĐB p{„…•’’bœ¾ 2ÂÉÉéñăÇPáØ¾}û_´êBʇ@p$P_–””ldÔ«™3gBy÷G¥i.§N‚‚’J¥®^½úŸ₫a|ŸôGˆÉÈ́êrçÎĐĐP–§Ơ§OŸ–-[Ô®Y&!:x‰‹‹Cù»hÑ¢ºÇ@é ²×ÜY [¢I*±loo)`aaÁ4™&K–,yơêU|||s§od!L½¡>áááqæ̀yyyKKK¢Y¬ºº:Ùg´  ¶ƒR‚7}’ ¤|G"&&ÖĐ¼êFFFL“¾₫5ÿ₫ûï‘#G&O í†Ú54(Oûöí[UUƠPÁ åZ³&‹oœ/^̀™3|ñ<­å'"Đ4¬ÆâÅ‹ë²×¬Gm 9ÑàÓ§O!đ Ơ.\`J›p |Ó¦M‹1bD»‡éC¬>₫.B½¥K—îܹ³wï̃}úô "½ ¹¹9??ÿñăÇÛåm1R>¢)..nhœ”)S¦́ر£…²7đ`•À¢yà°$äà-iÂ’F’¥¥¥“&M‚2ñÚµkPP¶FúgeeA CQ[·Ë́’““cUÍ£5PVV&R.$MMMAAÁ°°°Î;{Ç[‚#"">> µ<00póæÍ[¶l-dWKbªÛ·ow¨±¹‘̣!¸ºTSS3|øđ¿“½={ö@ñå”LË[ƒ=z,Z´èÓ§OLÛ‰i₫îœPjkhh́Û·¯çŸ:t(È̃ĉ!çRÿ4mÚ´ÜÜ\)))¸¢ú÷ïO¼tuu=~üxzz:1đw×®]‹233›̉:©'æÁđî vC† 8|ø0l,//×ƠƠ•––&Û₫ åC 8‰U«V0n)--IÛ3wî\đ>>>ÄjVVVCSá0ÊmkkÛtƒÛö€́1>ä„Đ‚dœ\—㵑¸}û6ÄåÙ³g>9‘“““‘‘QăSd°!ópà1bÄ´iÓÜÜܾ|ùRXX̉÷ws#åC ZÇ“Ê7ỉ¤Æe¯¦¦¦ÿ₫dSo¶ââÅ‹¤̣:ujÇÅβG²ÇØ«;ºWOœ8dOKK 4.€„pb~EGG›˜˜„‡‡'&&râƒÁ†øüùóŒ3|}}ơơơÁÔ´ăPŸ,!** j–BBBṕ5e¤|D[púôiBùbbbˆ*™>}:́å ÙĂđa8ˆeeåº{§N$((ȹöˆ˜-ĂÛVäääpÓƠvøđáÁƒŸ¢Ư Æfl ̣éÓ§… r¢́+V¬€C)£¢¢Â¸ƯËËËÓÓ“ÓeàÂ… %%%~~~đÉ1bÊAđ|YYY}úôáxÁe©¥¥u¯ \ºt‰ă2)‚{011yñâERR¹%>>₫îƯ»111#ƒ:88¨ªª2Z[)))®)C544±té̉ÀÀ@î»,—-[u/p·Âœ*™ƒˆ‹‹Û¿¿±±1øZ¤|D;@£Ñ¦OŸ>tèP̣uQnnnrrrƯ~œEXX˜¾¾>că@ˆ&Ä‹›̣îÖ­[•••`Ö¹Rù0ü¡.ÔṬóó###›2"§²¶o÷îƯ÷")‚K¸}ûö¤I“ÈÁ-³²²®_¿₫Ó‹³©©©`dIåigÿ₫ÍEMMmذa³fÍââë³  ÀÀÀª,l2’*«˜;w.ÈùéÓ§ZiºG¤|DƒÄÆÆ8Đßßû9ś¥K—¸ ^ d_=(4Éùµ¹ ]]Ư… r÷%ºzơê1cƼ~ưzđàÁÜ/p±îîîgÏ}ôèTḅ!mGRRR\\\tt4, stg#&I Ÿß‚ ¶df]væĐ¡C\Ö« ###!!!>>>vµlÚ´iĈÿư÷_ZZR>¢íÈ̀̀,//Çđv.\#{€ªªê™3g0|¸K¨¥Y¬\¹l+đ̣åËưû÷seÔ={&))ikkëé鉔h#rssi4ÚŒ3¸)^ÚÚÚDQ2zôh¦û¸ uuơº1¹Œ¾}ûúûûkjjs_́’’’8%^HùœM@@À… øùùAùúôéSXXÈQ Íÿ ‚·mÛ6(.¹;+}||  ¬¬œ““3mÚ´³gÏre4;îÖÎÎêjpÑrhOÓzËËËÛ¹s'Ü•; ă”`=«W¯&—‰±¾(  oß¾åèx•——/[¶Œ\…̉„ˆZ—.]***¸)¡¦ÂØ7‘›ûÊ•+Üw­2̀M¼¯e[ahÍ –Æx?"åC X¼¼|FFÓÆN:qz¼”ËrPDD¤îFr¶)n^YYăYYY®‰]÷îƯüøÁ)±Cʇàl>|È4ds¯^½>̀Q›={vHHăUUƠëׯs_&^¾|™±3¨¾¯¯/÷E³¨¨ˆi|ç 6pḾ¾ÿÎ4ÛỔ¥K‘̣!­BƯÿûï¿I“&qAÔ‚ƒƒ™’̀̀LaaaîËD¦f`Ù9t€Æáăă(--%VayñâÅÜA¦Î́+W®Dʇ@´Œ‘8bÊÙ¿cÀ€̀OË阙™=z´¶TâåÚr Œù(¾²²’Ëb—NÖƠ JÊÎCË"åCp<§N"æxĂđ×`bbb\µ°°0²“Fqq1çNÅ÷GHåóđđàÖh‚0ïø©y ‰•••,TWW³s8‘̣!8Ù³g“^ËEœ>}:¹̀e·ÖERṚÇBBBàÿ¸8äû°aÆq_́¼½½ åcj˃”h-FÍ}‘",BîξÜÜ\nêßÖÄÛ¾={öp颣£'L˜ÀæÏ'̣!¸%%¥ÔÔTî˜ó‰üü|°AđỤ̀\»¨¨(×Gª2Ưºu›:u*WÆnüøñ́_ Eʇ`#jjh..;₫⋳fÍúđჳ³óßư®““SëEê¯CERUUåîî̃“´jYÓÍ›7¿yó¦åçamd««i®®;X›V |-&«"Ị̂lÙ²%++‹å§ea¶"åC°«W;µñưưÙ3F,<ͳ…°‘ø{(_-Q̃"¢•”@ ˆ­|Ô8ÿ~ÚæŒ[Ji4~b©ú-…O†qWDv™₫Ànä#ÊMQ…{&̉ä-ÿ·—–+Æ0ÀÓ±ơ:f¿†oL*2UÛS̉T†rúç\lï̃¢LE måó‘#g7 S™¢­¢À1ụ̂6ÁƯË3+· ·¤¼•ƯEé¿y{½ób°¶E~†+•Ê.¶±Zùj’HÙÓÑU¾ï),P(„€‘²§£¯s?̣>,Èđ¤Ñ$~~»+ùŒ²óo“==8SÇâ*}i¤‰Î÷àûo°¥*Br¥4u~́´é/Ù£ŸpÀ@t3"ˆ6¢â…óvÛß7ÑWs¨´Ö˜•UB‚̉6â?D,(JJHôöÇ0]*ơnsÏC—=ùÍÔèƯXùçèè%\ëù’‰W~¤W+“5mú$2 ăǾ»¾ÑhDåA–2h́*Ă—oË%₫¤V£ÙÓt£=°‡ÿÍ)ÈA4ênÓÓÄ!*4ÚøÏoÅ2Ư¢í}IS'Çê¢|“èÛÛ`OÜ-{-újơ·°+á?*±É3—ˆàϾ²³_ñ‹Ëˆó×*caî«’ª22ôúṿưÄW™â2*Ô•‰½ppO)¹—ѧ̣yGơ}Eß’÷VXx `kÎv~̃œ.{‡ăÊfÈÔNœ{÷_ơ…®«.¾˜;V“£ƒ2̣¿‹K*NĐV'(Î{ơ¥²·Œođ¥L ŸÉŒiôoå̉M‰ôĐÁÙÙoeú ÔNQ]qÇ(Ÿ@÷Ú‘‡èC²Ô ôty“|ïçÎZ× ­u›ç©¤Ê,¡Úü«hô¬µ’‰•½øçŸàÿ'Äê'7 ÛT[³8\+€§ïZC·"hh½à#=ö f¯ơĐo²±k¬* À́́L5́ï\¶ ¥%aK©Ô“ÄáJệØ”3Ô‹›¥©7-áÎ*X ¼~0NŸÍX½ ¡Ö(‡kEëUZqTLÛk&·”=@jœKV .Ö•]Ăù’Jƒ ­“߈GGqTjZ²ƠzøƠƠéù̃‡®Ô Å2"whéoƒ%é¾°@œṿË_¤³JIsTjBr0Ífà₫<`qk êÍbåăj¾Igû}|åí½¥³´é“̣*n¦¥î×—~Ñvø\Oâȶ¦đ‡50UGgZW†ç µ ÏNy?c:°VMe†₫믫*ºơD[Â'đk9.€>Ù¬Í&ø¬Ù¾́Æ­]S`ËC¿±Æ®z˜5-f¿Ñx›@ Ă•ïóyøˆXl-Mª†?lœ²'ú¦ưbµvûÿ¦H ßêO;)t§áàñÓf£̃°ÄΡËÏ‚lÿη$†Lɨ¦¯ÂêÖ±¡öZ%);Ïö»x×>G…ƒAöˆ“̀– D…aœ¢|À{´=–ùô¶§ë>ÿëôMinwvë a sFUUơn8 áÔ%WM0,ø&”ä„̣é×níA·Å¥Ö°/eô¬ö.ÄÄ6Ze7±e0,›¾v˜B9\÷´öĂ ö¤ă{ÏÖưr₫âT{ç#S Û5sLµ{Ê QØ›dt"8œ“₫û†N]£.Í’‚c’œ®|Ồ›C¦,:ôè́Z5ŒŸ₫ ôxHÖÔ¾̀‡ŒÜ!¯¿­ŒH_Æèu¡«£JBÂvˆ†ǺTÇÖ₫öXD]zÁ5XJ &­X‡¿¼ö…ʗǰ¬ç–¶)m€{dNrlp̣OVD¯ëOO>e7ÊÔRÎß?‰ØµØåª·1ư÷Ú E’¡p“̉u ¹ªï–æûMË̉?¾‚·˜™fw:̣_º§vxJs¤è²ø|•½3MƇ m¡®΅à2nm°̀…qḲ'8~W†]»8cú\.‹¯ăv[%Ó÷í›2S%(©u6fQiüÍO ySNªtŸ́ í̃©^¸–&̣ư5Í •ATj,\saJ¼Äê9r+†m4*ưK‰<Ö~[Îp=™T¸LE„h*e÷Đíïæˆ>5qqcYĂç×$¦ƒÔE'•Ê÷å/û6h8¨!vÓsQơô§Á =o¼¯*Í‹åG%@~đ`U¾¤ß›΅‰x×ĐLĂÊKö̉–́m`g?¦¦.L«Gâ,4`–?̉ŒFĂ\C§l=éiûá¯Ü«?KH‹ê‹÷j¢|[c>û”´wÊàÉT¨ÔÄÛ¢¼W÷Ơ'OÔü¾h́Óñ¹Aª* ËG²₫2m·E ,ơS®D_)²oÜ®ËṬ° ’ؾØ®èCĪđh—]s§÷q¬Ư¯BỄ§Ÿ¯ÜºÑ›Jïeè4¾#ƠË₫@bø˜ *¿îm8±q–+4jdHëîvŸÙ₫÷>~0ÙàßÂ_ư¿Úuré +„_j÷Ö=!Û)Ñ% ưYÊÍc?[ñf=zÇ+KÔ‹‰‡0— ¶hˆ́Z2Đ÷Î;â(Ÿ›ŸMû` 2cÂĂ| gXÛ[©qÓĐZúù®‡ o§¦91†9(©R»om躖?“˜XûÈ$•¦+IzÈÆÉë=ˆÖ>³u1±¬)AÉùy₫T*M¤NÊ´—ưÁ°Î|x„¤†Ò¶•7ñÄûơ₫‘Å.±î+đ~o_“$†“³xËfQ³ø‰(\(Ø¢.1đ·‚¾6^_ t®Ư¤fN½r¸]L^]y₫µ…&ÙxÛ=¢Ùư¾e™wÊ2ïFµŸÖ«íª½5ú-ÇcëoÑÖ×Nr¡çh*Ơ…q¡no0,ÿvB¤|ˆ¯QÏ ºùVïÙÊ/©I¯ú̉0êó[ µåÎÉ%ß;XxR騾ü– °":4 ưqÈ^jM¤:[BV¶¿Ä\*ơbûFdÏéx¢î0¹kÖ̉¾wrƒ~Ó–Ú6›2O¥3)̀»M<ưyª|Ÿ©c%º{({áj±̉ûáÎ9jÙw]´.qƠºEG„đÄ%H«Á2lƒ›ônmô§–OBDfo»s`Í„ä ë 7hW¶P¦]ö†™SoÆÊ?KÈ á@}FoæGï₫Üe\jZ>^¤̣…Ûôv¼ƒÍP¡w,Ù“0¥> ,Ë¿7HyœÄrm²y=”ÁÉĐDsƯí¯6ñ”Ú‘~&̀v:s`;}‰ÿ—ƒ̉Pzæ=zmñô»Ư‡ă)+éÏaœn‰À|2-çú^jÿÉm7ŸJùbÂ¥\uëX=X̃B;*AñJ,̃¨¿ÄQÙ ²‡ư|ặ°‹Xn Nd6ÊŒûW Ûê7Ư–6ȹ{Û¶YKQG}è®T‡₫BÈcùr ÓÙƒåQóhnđµ[á½đ.̃bâ ̃J¤›h]ͦ7 ,IÙ msªÈ}y²ƒå'ôF"übº¡vcŒ=ÿl^@ åCp8|’ºDQ˜û*Ñ×eƯég‰纅ălÓ)Œ«…%µ/†I×65s 滩Ư££>U\~è­-Áđ€ëÁ½4Lƒ₫èO]KëçC§Ú—=Ù¹6ÄŒ<̉@KM,ÅÊßẶ8ÙŸw±]Nʪ0Œ‡-2îy:½Ơ55ñ>ÈaÇa5%.ä«/:™ôn[ÏmQ_è*!áo>ínµ˜ùt2äơ7I/8³Q‡̃V2çá#ŒaxI)‚;‘’ÓØs:yÏ· zàN¿íeîô¿Zåëüsộ²bv‹‘ÁÎç+륢 9v;ưå?Ĥœ®¿ú́|Äè­É«èå₫ûrL„g’ữÚ¢]Ñ ¹|_ we¸h'}Øb""ØœºÏœ¥ÆÑ_ÿç½̣s[åë¶äŒ[•ºŸñ ñ¡¦ŸèYëêª₫G̀M`HùØ ?“‘Çß̣$ §½D—{b/A9ư{÷åÍKz9ÈÏ<Úk̀΃ØZ5ÜĐ»†NƠW!8̣Bï2un—+»Å.bëvle­lƯë·m£ñ˜̣¡»ö}{Écø*ˆ™èa w~=ª= PgÖƒ̃$äPÈ bxĂÜkôf#ôÁ1₫ÇV±́ç»RË̉-øÍNỸ†XBø¯ˆØh=ó_)oÜm×8—sôº?[ạx'0¿”O÷vTj¹eỐ¥˜Çƒ´jL/Ă²Ă]?ö_¤Ưc׋¦(*ỵ/[ÍàCră¤gNå/WƯ¥»¤á̀¹"ÍïcRÛRIG„}¢öå3U¡œfê>À€ö6œ;JƠÊÏÏ’é±ë†mÙó)÷4̃.¼ÿpưI#%£Îøăí—̉ûóá ʧ,^ª3Ç>-x‹¢‰«„1Íc¦œĂØn®ØP¾ˆM V9»¤KîïKĤ—Ư`Ÿ¨eDºËëo’P3đ±™feKoȶs£ÅÏ—$Œ—zÎ́oëj­Æ‚3¹¶ôtäs`³çzúHÁƒÖb4lĂplDđƯ¾Á’wûÁúl¦—K )³ÅhX»ÇTfÖÑ₫–Ǭ´ùL¨4“€|«¾b¡»MQÔSÁ­fđ!9ăhưûG»ỷ3Ï$l̃ûÔ¸è´̉"lµÆ”B©ïú»ÊÏùöˆVoî{øø¥́O¹ª‹́ư×o®$³ûdÛU÷ßWȉơÖpÉIg»Í>äê; §‹[̀ç'È¢̉¼́g¿*¢8¾o>C»}căäèÚWW®¶¼¹‘úfáªƠ õ\iăKÊ“ƒç0“ơù!ÿ^‰a°hWÀ^‡ÚtøôĂcÛógOŸmŸpÀ ĂoA»[4ø ÿƒ1yØáĐW3Ô‡0¥L»Dsñ.m,ă–„Ü7G]¹ñ²hêPzûÙa‘aÂ&ÖÉn^⸇€'=́o߸ˆñ‹úœN6ÑS&’k˜¿Ä+§³ÏÖELøÊÀmû¯Fôá ºùQ[Q¢]"Û¬)F‡~.ư!:@M]±öb Éçe¿*ûƯ.ËÈÔ6́ ÊÍû®¨e¤(ƠÆ£ư6-ŸÿÊö+‹±ŸÊWwZ% ́KFd̀c¬KIÓgÖ&Lí€̀•ÙÙ¿Í.,%GL·Tœ÷**&–œ̃¨=•ï¢ùÏUÆ8Óâk'•ˆt36p ¾:Êîn²Ç¸Ú\Œ :~>¢œ‚©O\`aú+ÜW®\éܹsß“•̃˜Zm)£ :~¤ijèƠ?ö.Êø=ưD‰”]‰¼Û«œ¤?ómÜG¯`a­#îô.\™±¡.g»ơîë½±E₫¨₫2³ùÈ4'ÏSú.Ñj›F¶ÿơ+tÇ]ØăÙwàPg‡ ¤+‚–¡%üƠƯnbëọs™O\ÑÇ?²î1UPQƯÂ&1·ü½+T·~§ï1³~ư?Ë=&̀•;çÓuÏ)¯5ïŒÖ¼FR¦í™º̀–yŒùê ä]}9²̀nϲz“Kz¹r?´tÇÔ¥lUQûĂEX§ ü…%¦¤$“MèwÉ«#Ä >Ẓ ¿Ÿ₫ôÇ=‰!ôÂvÂDe;[°ûúŒO}Û˜ùkm·ßñ$Æ‘©wZ¥mêú£ø₫£°œd̀[|́û´₫ZẒ6— 6*§kiữ/ºX‚Bw–ºXÚ=«5XP*M»ơưaƒÊ7ÏÿcmV₫”=@sèÊPÿ+v«pÙ+O£đ+‘{OŸ>m¹óM(°ÀÓâ¨ï(³Ú2+äŒÿÇÂ[ưD&“«·¿Ñô„è,ÀßÍc,Ư;ư÷ÚÜw̉ÔqN¨]ơq₫i4«(”ÎŒ?ºjVIĂ/ü¤'®‚±…˜vÛ=;dˆ囼 }9½†¦UÙïơî́\z‡¢kNScă/cÓl~ZơqŒÇC¤@öªrüAö'шÑMgKPæ)û‹ÉßY¥|µ³ÿhïŒcÚqá9'){éùU ½¾S:ÓG°ỐcÁp̀3ËÅ×'x™î¹ « {Êf½u³u–Đ߯OœæMK°Æºƒ́…&¿ %GTƯAö<ĂŸæ»+₫íN,qĐèé§_+{¯*iCø²)úC¹ơײL'ϲ·ëB¬V§›:séƒ8j8Đîb_®ƠÊäZî¡‹›§ÎĂƒ„à̃'¥½’“?¢t@´&Í¢HQP”(÷wyG.3ị́zÛºæ̉7dÏÀåá i²¿víyºÓK¿Ă—i¹Ú‚H¦®#ÉŸh ;ßÀ´J x1ÿ ˜g½kă–éÎ7¦×wÆÙµí•èZ~’¾éMägô3©hb ÷Ú Vhá2^G¾¡]UïO IåøăÄ^´̣»”nt/ètÿ‹31[9§m§bØTÓ=µÉ—°>G-ñ 7.I Å0kÈXb×´½)3•‡̀$G¯6:¶Á`$f@sÇß8^OsĐkqµrQiiUiưÁ)&£ƒa ‹o“^`Øṭ<ʶ1ó´0LËz€‹÷;Ø@OÊ‹6눽•¹ô±̣æºƯ˜·uârÄÅû¡D@´*Í¢ˆ¯ßüœ4…ù‹•­ơéư¹_~¢TBa:&·=`ƒ¶å{9;_#û÷—åÿƠé¥ ¨}ÏẈx§¼Ñ6ŸØ*b°ø†¦UJ ̉‚}­¬vyO¦÷Tơ¸Y´Pñ·ÊçùƠư~Ê'À/< ¾ä¼Ñêç~p2oÚ_ùbne8댭wWi₫baŨŸS"tƠ­û-퉅Q[øOÓ­¶HªïœëFàÿ×–V»6×÷ª‚o‘J¯È́ß7₫̃SËûßqÄÂóĨQẠ̈›wµ&ßnRÆÜŸ¢;@´€fNQÄ'¬r^ê—}Œ¤jx ©x)ĂÈ}A2e©1NŒ_!Ÿ¶#=U·jbÛˆºX£Ó*™XúÀ,¬’ ØMZÈĐ[#ï®mø{;eâ?· t§ËGBBVG§!å«mëêMNKđĐocwă- BXeÓ SEåoRWü§kˆŸñ«ờ L¶8]b½I}øpËU¦MŒj׺¾¡»@°ˆ&LQd%A ₫ùzŒ_˜₫ªl°„ –_{‚Uµ“zÇ•“S wÑDÀxeÊ[ô’¦ƯñC>åKô“ï Â\ÿ´JÎÂâC.S×kĐ¿¯"†¥©üú₫÷„Q = ¶>\8´¹Mjú6 óÓ°8è·«ßJ–)ÚÔó­Æ0|VÙK‘1ư_OŒÊ4,=0øĂd+_×¹³éĂqÛWQÛ.iüdÅV pm£_å-q§pI®U¾&\jjƠOÛç₫Ư¬âoi₫E>Ÿ¾÷íưëÍ™„)˜Â’µCM6ß«¥Riv·h·ñs[ưÚLöèÓ1ND Ư2ÆØu{pö&“z§UúóY5Öj–ÄîŸßM­5…••ØĂ€Ơô8îT—ØùswŸÍÔg»“¯z2Z)º’Ø–ü) kưNs *ß‘êT^zIŒ–éí¦ÏÂ:z]&ö̃₫œÅG¨»†®=Ư–ÓhüX¥[íŒ!Î:=[;ÜOÏ€µ×ưy‰$\Ç0ûÆ¿²z× Ëàåt Tr ¥ît3Fw.h‰ÉköEơÍ4DNÜÓĐ0.7Úix—º¿«nOư9ÜB½Ó*™8Ç™8cơ§‰NuC=¿"®jE¥Z1$Q[D­á÷|<•ï®u@o›“wÊ`â)rÏ®kïôđΔ´O×(}é0ôy÷M(j́[Z[á¯}_øá0…BŸË÷àzËu0́̃¿₫k#ßä¼ Ăèʇ¥¹Q(nŒ×/º…¢ăĐX ¾₫†4íi\¨ë®£oóó0ñf–Œ}Ơ1qú§÷;y¡g6qöº=+Éû\÷aƯ0 |25`¾§ëDJ7¼u/‹Ï‰ß)ÿR»́Ú·¯+†É₫́:²k×¾®]±1²‚uO•D£Ưn}ú18báà«§úđa"EØ¥$ªÂ£ºç‘̉Z´oß´Ÿ]Ö!´GƯ¬]ë.¦xöTé}ß[ÙUå=Ñu€@ Hù~¡¬eÙØƒÁ%6ÎđWw»£Ío‡mø­ç¸¾Ù}'ç`óÛÁ6œÊl»·Ăê<r ¦óHh-µÑú-Tf›½Í6ÿ\1²T@—@ åC )@ HùˆÖ¸"y¹m硦¦†‡§¥ó¬;99±d!¦đỤ̀Ȳ₫²äañeY]SĂËNÑdÿû̉ )‚Káá¡ôù«9X¢££ơôô₫ṇ¬Ö–„–Ÿ_TTôóçḮŸ}-é„ ¾ÿ₫øñc¶¥(‹ÏÙµk÷ 6I–ß‚‚‚>>>K—.eÛk)‚˜7̃Èéùóç ÜÖhiƯºuOŸ>UVVæú|Œ‰‰‘””äúh‚$üïÿ+//ïÖ­÷Å®¬¬¬¤¤$,, )Ѻ̉‡›m¨¬¬ä²¨Àçĉ¿|ù̉²̣Ç‘‘‘úúú\ÇS§èƯ£===ÿư÷_î‹>øŒeç@"åCpUUU¡¡¡ÄÄ\Cuu5ưFåå₫[ờ™3ÄÂܹsüøÁ­Ñܱc±pâÄ îS¾””âeĂ—µHù\ËâÅ‹KKK¹&:‰‰‰ÄÂçÏŸ=<<́́́¸8ïÖ­«GŒÍ ÍB¾Tcù{>v€|&ß«W/¤|D+bnnN.—••íÚµËÑÑ‘;¢6}ú¯©=¹[ù¾ÿN,”””XXXøùùq_/\¸@.wé̉…ËbçăăC.ûÆÖSá åCp<çÏŸg\Ư³g×(ñ₫’€xˆÄ­0½ ½téW*ß‚ Èå·oß‚Ø÷èуkbgmmM.çåå !åC Z×+aÙ²e'OäôxÛH***fÍuụ̀e®̀Ä1cÆ0®|ưúµwï̃ÜǺ½5öîƯK¾öătLLLêVI×®]‹”h#‚ƒƒ¹@ù´µµ™¶<|ø[³,))©nôŸ?ÎMqTSScÚÈ5ÊwăÆ.]ºüïÿ#·DDD åC Z…ââbâ~ăååíÑ£‡®®®DMHHHII©gϹ¹¹ZZZ½p¸5û÷ï/&&&/..Î̀̀¬OŸ>#FŒà²8–––†……Ư¹sçôéÓ°Ú¯_?¸z¹&vDsÜ   //¯””IIÉèèh¶ -R>g#((H¶‘ƒ¢3&&&44”;¢I,́Ù³Ç̃̃»óñƯ»wÄB÷îƯ÷ïßÏ•qäççŸ3ỉ¤¹sçreáB%³’AʇàÆ»sçN*•*!!ÁMñ5jTÇÉD999î \¢[·nåʨ•””/ åC Ú³gÏ())16‰ä˜Zp7ªªªÜÁ#Gp«̣ 0àëׯHùˆ6¥[·nS§NÙ³¶¶öööæx ₫L4uå«W¯FDD́Û·ÏßߟC£ĂÇÇ·uëV":\ÔZ¬¬¬§¼áôè•0î€F£AŒ8¨R>D‚‡‡GKKëùóçÄ2œ^½zÁK¡P81F‡î ʇáó•s‡̣Á%Çæ3Ơ5 —̣̣rN—=¤|nÆĐĐpÑ¢EüüüÄ(ƒöïßÿđáCÆ B9==½“wPÂrA,¸¦‘‘¡««›ŸŸÏÑAʇàfÎ= ‚ѵkWb‹ |>ÜÁÁt‘ƒâÎÅ]¼™°¶¶†: ‘YœHUUƠ!C¸CöøôéS®‘=¤|îçÎ;FFFŒÓC§§§×ÔÔˆ‹‹Ÿ9sfâĉ‘̃½{ƒ‹ ï ·cÇU¾¨¨¨ëׯ¿}û–Ó³ //O^^₫̃½{ÜôÀ)¢£pơêU(FGŒHnäáỺºzĐ Aà0Ö¯_Ï₫ùøñcÇɵøøøïß¿“T8…Áƒƒ̣M4‰£?44Ồ̀,-- W^]Hù‚mÛ¶eddhkkÇÆÆ₫vđ̣feeax+íÂÂB0ˆ́‹»wïrßL 1lذ~ưúq؃wuu}ưú5ç¦9F›0a‚(Ÿ±±1_]Hùyyy=QQÑ̀̀LÆ'ŸAAAđyóæÍ¹s纸¸°§KÁ5C²ư‘ÀÀÀÊÊÊÎ;³y8‰7aïß¿744äФ¶±±9₫üµk×bbb:Â¥…”ѱٸzơª··wtttƯ½S¦L!†̉Çøùù-^¼˜­Âüøq¨˜shÇŒæ2qâD6ïPVV&##ƉoÂàBZ·nÔùöătœr)¢Ăa„3}úteeå;vÔ{̀XØ…p÷îỨxpâââyyy$³>}útâĉåË—³[À^¾|9f̀˜[·nq\^âçÏŸÇđ¶y .¢1 KJJ`aË–-G9pà@SæRUU½té¹zưúuĐΨ¨(mmm°ƒ¦¦¦­Z=uuơ‡vÜÙk³¡ŸsrrÖ¯_uOOÏå8l˜ ééé Êàä***@’A›qĐŒ”ø\q` ¾;v̀5ëàÁƒMœ!h¹ZXXèïï•ñ/^Œ? &PSrÑ/ PZZÚẠdoôèјRRR,?ù³gÏœœœÀ0­[·ÎÅÅ%,,Œ}"^]]}ụ̀åđđđ[·nÁu8eÊ0sp9yâ )ÁJlqĂî ÊsssĐBrĐ?"""B¶‘!¨©© ‚â;66–F£;V__±nĂ?ß½¼¼?~üà¬î̃-äÉ“' 7nlù˜ă`A6Î;'**jeeÆîÊ•+íÁ̀̀̀ˆˆˆÛ·oƒ›‘ÓÖÖ600K7Ư’Hùˆ¶£wï̃ä#Íâââ 6œ>}ZGGÇÆÆ¦¹Ă~̣đđÔû&::úúơë÷ïßOMM•––ÖĐĐ7nÔî±…B¡€́Ë́y1 ô₫æÍ›Ă‡oúANN<)++»jƠªƠ«WïÅiû(TTT€¹„OLLLKKëÑ£‡ x8Ènyyù!C†pîPƯHùîDPPđ Yîß¿ ²É“'¯Y³fêÔ©wÚ 8u·§¤¤Ü¹s'>>,_NNnÔ¨QcÆŒÑƠƠ4hqLnn.øH°A`%;H.|Ä£ ŸơÎ_qăÆ H°é]ºt122233›ˆÓf!„ü‚\{ôèTJ²²²„……•”” B&prLOÅHùN‚©<}̣äÉáÇAÀ·-X°À¢…ó Ä!º2‘}ï̃=đ ÉÉÉ™™™đC={ö?=”­"""Ụ̈`û úúúúvvv`AfFŒahh¸dÉ’©8­÷ë••• l>„Ä₫üù›7oDEE‡JÔK@̃”qĐ ‚”à~F}‡X­®®wxæ̀™ÔÔTƒU«V±ĐvÈà0µ<îçÏŸá¡h~üø1xĐEE(—UTTÛ„“̉ó̉¥KW®\“Ư½{÷I“&Í™3çëׯqqqûöíûöí[Ó_Á₫H´$%%AJ¾zơª¬¬ LöđáĂAÛ455ƠÔÔÆă k)øưăå]‡Ăh A Á2DkÍ5,wB {6ltrrZ»vm½‡̃¿,KJJJVV–¤¤¤’’”æ `YØ$ơrssAç^¾|©¥¥ellljjº‡éHØ[XXeff–““ÓÄó§§§ß½{r´íơë×P9——‡zTÆ;gÙ²eè2Fʇ@ Zj ă«T*ƠÍÍí́Ù³PæÚÚÚÎ5‹%¿¨¦¦¦‘p#pê’¢¸¸$ä̃½{=m—£­­=eÊp­—2•••¸páBFFÆäÉ“/^ R÷/NÏdÏƠƠ‚MŒN@£Ñ "ÑÑÑ ñ°±´´¢Yêvm8º&‘̣!ˆ6EBB‡X½}û¶‹‹ ư I[¶liÉ™yxx@öÔƠƠ#""ơÎ̀¢ NƯ]™™™7nÜŸôàÁƒN:7‰‚#ÿîbII ¨Ô¹sçzôè±dÉkkk²Is©ªªºvíÚÍ›7ăăăÁ‚ ‘@;Çá + ”`SÛˤ¤¤€₫åççƒ)ük/^Ç̃̃̃Êʪ_¿~-ñÎÆ´ä0,, 1//dB;₫|^̃z—«W¯îƯ»÷ơë׫W¯̃ºuëœæê%ˆexx8ˆøQ¢äŒ3ˆ̃ŒGúâlÚ´ ]W¤|g0räHrù€W´sçÎæ¤eÅđuYYÙV jƯ†”•••`¹.^¼̉ ¬  L˜³³ó̀™3ŒŒ~fĐÈ£GÿÏ̃™RÑÄ|^åzäV¨œ%>G9B¹ÊшJåè‹H‰P¢t()¢"tS}IÉUB…BÑAº¨$ÏYûí¾}çL‡{~ßû4»;;»³;;ÿùÏüç?¡W¯^EơW--­… ¢*æj2?=×ÎήªªJSS³Ăµ!P̣A ~ÍZ2h•%–––¨0ë̀t¥C?êC‘‘‘½¶¤-===*´²³³Q…Ø€́3•ß6l@uA GGÇí0O:…̃mff¦¾¾₫²eËtuuC/¤‚Û[·n©¨¨  ",E(ù  Ơ‹*Nâăă>|ØM‡¢—/_îåV¬Xqûömôrm–ùæåå¥:DäỜQ5ƠçĐ»6l*Í̀̀\]]—“ù‹÷CGG—`eeuôèQX~ P̣A @ TWWOOOÿçŸ~z *öPM±‡ÖàF“EåÖ¥K—Nœ8ÑuLA<<<#""ÔÔÔy‰(///UUUôĐ__àU.׬Y“‘‘¡¤¤KJ>d`3ỵä¯_¿–——spp úßOG̣z± >ơ x]wÀúúúz{{kii¡àv2´GơÉPƠÓM›6ñóóŸ:uJPPđ¯Ü¤¬¬¬^tt4,3(ù ÁWEEÅëׯ999Q)ØÅ`*odddrrr₫ü¢uuuBBB¨ëbíăÇ‹/₫đ᪡:‘éNÊT+ͦ¦¦•+W^»v-44ÔÀÀào{"""EEE°À@ äƒ@ ¨zôåË—}ûö¡‚ Ơ–:‹†Ê’?¼‚ ¨Bvæ̀™Î…ñâżyó&L˜p₫üù?±«1buÊ?ª†„„\¸pAGGç·DµÉÏŸ?z¦(ù ¡>U₫>}úÔጺuëÖ¡zîâä7ĐÖÖ644,--mˆD"¡GYYY£¢¢̣óóÿn¾v“dToKIIé¦i-“'Ofgg¯¬¬„åJ>2Ø@•?MMÍ'Ïuß³%-wï̃µ³³ËÎÎnÈ×××ÇÇç™ÎÚÅ‹Ùå¦Ê±cÇ:ô5Ó©©©ß¾}9r$,$P̣A Á†¿¿ÿË—/W®\Ií0¤_RR̉ơ·m˜4ỉơë×Û‹=±cÇ8q¢›cx ))©ªª*4 ¤¤4sæ̀îOđGO-,,„%J>2?~ü¡C‡¦L™̣àÁÚưD"qÆŒƯIäû÷ïïß¿o³•nnnqqq}›G<FFFbbb»víêÎ) .„eJ>2haddLOO~ơêí₫áÇwçô§OŸîܹ³Ø›0a–-[ú•Ú‰₫•““svv^´hQבwï̃}́رU«VÁâ%œ BîÙ³g&&&ø­w•Έ‰‰yûömxx8uÏÊ•+yxx^¼xÑ?s••U[[ËÆÆöñăÇ®—¨utt„’J>2˜¡§§÷ơơE%îù ‡Ç‚‚‚lmm;;åÖ­[UUUVVVøfQQ‘NÿcbbBo•Öiiih;‹fmm K”|d# pêÔ)T%¢Nđ÷÷ïḶ=zô¨¬¬̀̀̀ ßTPP8|øđ² 1#ÓÅ´đ̣åËñăÇĂ‚%̀lÙ²…v•öÎ\½|ÿ₫ƯÏÏïôéÓxxôèÑŸ?ˆùEŪ§=zTHH¨ưÑ7^¹r– (ù È {666ÁÁÁhØÂ¢3í7iyđàÁñăǨØĂ‰‹‹»páBrrr{/ØpÑ>(ù ÈP……XZZ¶?:mÚ4\́…„„ öĐ½‰©©iVVÖ;ÜƯƯi÷Ă¹ P̣A ¡Â¾}û&Môøñc+W®R•––̣2î:::rrrƒ#ËhFFéíí½yófêN{{{X äƒ@ Cj?çÿưG+ù¤¤¤ÊËËĂĂĂç̀™###3˜²~üH ÛÛÛ/X°ÀÊÊ Ơ„k~·mÛ6f̀ªK!kärLFm¦̃uưê®äµæ¢…,[bÂÎÎ%ùË  _FF†„„¾™——‡j{œœœ_¾|ÜGŪçá̉½¢¢b¾z//¯ù6ÎưööÔ˜ßÉ~¬*3‘›‹J>̣—111¡®̣ª®®~øđáön©%kÖ¬©««cddœ4ỉP{é»÷úög±‡#$1)ưéµIâl¬,P̣A ¿‰²²²¬¬,vww 455 722âàà@>EEÅ!ơÆïgÏZºz@ÜêØ ’ÇOs´·ƒ’üMPQ—““ƒΜ9óáĂZk—AÙÚÚZyyù!ơƳÓïj™ˆ”»a²êÉóBI1Q(ù È_ƒ‡‡çêƠ«ZZZ̉̉̉C*ïRRR"""wîÜR¹–Ơ˜Ój›P)Ë«—]z WÇËN½ŸëÖͤ‚¼m|7÷ô ÇƯ‘³…’üM._¾́ááÊ€Û·oµ¼›˜˜|ûömäÈ‘C!¿ MMœ£ùÛínH££‚ uÅ“«¥.®·ä›b±}‡uƯ»»•.ĉ*÷b̉ÎyỈ£r§SÑ\9ûœÙYÆ3y³‹>º;ë‹ØÅMk¦9ặ̀½øđËY²CTj|9¾¯ïwÛ:FzÁ_§6WyxÜÍ'TDmñöÍkÛÜ\UEy= (ù ¡ Waaáóçχ`̃wï̃ª¼|||JJJC!¿„a„ŸÆi¬,r™s-»ô%±b‡µæ”YÙ¥¤Æâ‹[?œ¥NçXxvŸ,Ư @".ö(gY¦fgƯC+$y\Zá_Ê$ÚÿC™±zV¬³̉‘ôK[]Å`©_vi^̃©5s¿H³¶º!’üetuuăâ⨋ö 5wíÚ5D$_7±¹|ư;]“ >k§¢rkœ¤adüwwg*z§ư\›C[ñ€8|›41'æW:M|„YM Ia1´½±LzH^wCèrÖ^Ë&”|ÈĐE__ßÙÙyO]ïTá"9:‡bÖô&úœøS̉¡‘zLjQX¶ƯópÅIjÄ~ ñ àÛçªîô×ÑÆ¯KOatÏ.uu{‡Đ‘5Đ–«˜ǘÎG,8¿bƠ‡ÇÖ)@É@zUUƠÜÜ\êZµC ‡¬¬¬¡ûúö`÷y¸*†’]zøÛĂ;ơ X¸æ=h`£Êø§äCk¯¼])¦#ˋǜ]z™²|Ù¥Û°MuøYê>Ơ7D=¹ƠÿCx¦)Ë·CßzÉơ¼ £œi¯b Gq×y®đÔù HoP]]=dónjj3”ß¾¢Ưùl)s#<È›û$ôïl”³O"‘`øCç9@É@úsu_ưºèƠư?«©>|Øơ¨NÖqc'ª …́××¾Y˜†fÿku-@¢ÈÙ;FTHH –ö8ó÷ü™`“•Ü—ưdC«]ẶôwÖ]ߤĐW™‚’”}J»zí6aÚTf11F)i %j{̀ƠƠûÉÇxR]óđé^Zơ^™6ƒ)ûåYW₫»E ÊS™%Ä™$¥€¤Ô04û󽳟_CÊË|X›–V-#Ă3{¦5a(hĂßRdÅfSư6=&â éĂ^E»ƒtj“²SJ²cv›uÅáq̀ÓZ{z;Ë #©Bqir٥ᨧ³pIÜ¥³ç )Bq)q~́|*zI¬£̣̃8©?ĐÈ[M^€/¹{/êuSÓ_’rứé̉nqÅ÷äÚ“–‰%ô—æ_?˜U«Â‡ôZ¾¡äƒ@5rí_Cc“‘›•%w×qYX†OŸ1ưa•WiPØ©rs3C₫±Û¥gtô₫oßLMÙV®äê:&3q¸º: úCĂŸÊœ:Ynb¢'(8¨½ZÓ#`¢ûµ+îyGçÆe–̀Ăû-ÉS0ÉÇ(d€ơµlJzbƯ—*Rœ ei'#«-{Bñ°¯QëB!Ơˇ¼T #‹-ûöĐãA½Ûh"¾Ñ°¬äík3µï̃|=rÓc]Œºô÷0Ú.x—3§₫ÔÅ̃ÙwÜ¡äƒ@ ÊåHßQ£ óæÿ_J~>:—M¼ß¿ß;øß’Åf\\B.û×£üˆ,ˆ}æ_=wƯƼ?~<8t(f1/ÿÄA[JXÉJïO|›mAe¡ë1û%ºøfviåE_×Ơ3ûdƠ¢›g̃ư7UđáGåÖ?Ø•ă¨Ǹ,É₫íú₫DV`ʹÛYékjc³Üưø8'ç! Ûôf¦¡äƒ@!eS®ßHY±‚ûÓ>œ°ÖnTUƠÍûË×9n(Ù¯¬xpñb¬µ Ϧ3lذ5kxjj}}/:9môÅF m.ä5:¿Í₫ZBc)®–‹ËcÖ“ÅX–́X¿́̉p!¶Ǿ×dAHBƠD S’(ÙRظô~ihz™,/ù<ƯXûUïÄÅegœ2:²n#ék`Đ ENóVÉu·uyúQêP̣A ß%"b¯ñÏÅ6¶áëG…†î45]5räè~ư¨¨}²“₫\́Qafîä4:,l·¾̃NAUVe|œ±u˜8YW—’®„́=\ÅHk«}ăÔù#gB?¼88YÛưꥩ±øïÙœđƯÎ>aƠf]Ù}XŸgö‡Ño‰.œ…†JIÑ'‚Ëêß<Üxn?́26<ø,rxÈAÆùëfrnÏ-™ưöuÀͼbQ›¦Aü&l_·®G„“¥%wvö9nnÍqădúmöƒyÛ®Ơ)››sæ\-¯P/ªSưw¤°̃'nh½±M~Ù…+d1?,6kñU„ bùV8QLaơ–,!'5FoáêYzöÔ°áZ²º,o¯H̃4³Æ̉YAÑ¡ýƯ½{?ßP̣A ƒ//¯­[ùz.}YYâ‹—w kEE•†`ö%Äß¼}øäI¤¤,l~.ù*DE´Ù9*¥*{üb¢„ñ́rlÿX[; – È€ă`€wÖû8Æ3>y’^^>º¿Ù¼ïè…́ Œ£/*|ZZ2†_|•g>¢W)©§—÷“iïƯ’|Br‡&#Ù—₫đ̀¦È9î³v6ÇE¯²À+Đбƒ³:Ơàk=Ă"P²óœ¡ëÀ2p‰‹ó·[ËƯ;×’”dºv-b̃<§₫“ư»w[ZöRöEDâănđ0È&üíéaÔÁ|ö~.ùX:;đ(•@ÈßX6—‘Ö]ÈoRư5OTd0¬×®8o«Ïîm.›<úCöëk‹Ù؆オ–´uXö́Ưá¼Ñc0•"K>ẫe¼<ú&×/^½_JÂ=ºÖ==ŸVxÚô@ÍÆƒÿ*{†ơÀvSÑ~*ù:Ô¥ÖÉü³±@J%Pc§́¼êüˆ‰‘Ă1Z5ä¹n]̃ÛºÙfv–†W¯̃ §o˜¢k@µ¾̉–¡*|¤].®ù%uÚ V-3œđó;ùI¹ÀÙ™Yë*ÇHP̣<ƯÿĐñ̉/u“Ơ7¯·¤uÊK*{æt(3ï=×XÑ•–딤:î!ÉN¸RZÏĐĐĐ```ëVH&$ôÊúơ½mré́2êáƒë Sôû<ûN»¸đövö7̣&'ŸWW_ÔŸ Æ·ÚúÛw3 gYÙD¥ø„'t­¯G4£ ×€í₫g©ûí´6$—’FPPđÔƒïØN:fđ v]¢Øb·ßNçF&”\½]J@L,%q{8 Jđù́g€è² ©¨Èü—´Ø#!»T´ÒïóÈÊñ'`&^ñÊƠt¸*sÈ®nùú€ù‡«ÿ’Û i&Åjäå0«æ8É;Đàơ´ª4;%fXxẸ̀îÜG#¥s²®ºP¦GQ¡ˆ!,lÛ«óE¦ÂXf=e ^hª ÿ=È#ÈĂ6©–Ü̃,§½ X| å¤?“z¤÷ÅÀF†•~èû%~²2O:;ê“K7`“Üú¨JpÿIAÖư‡•e¥"̉r¢̉RSĐ_wÏ.™]ô"`«ư‰°«øê¸Dl"Ÿđ­¹̣ll;Ü„Ùy¾ñîùç%Ș—Ç‘.̀q ¢£ú¬Ăü÷%_1¥­§­‚©kÍbo9‚œ¬|t’CvøoMé_%"o{Ñ•ºƠâXÚt.UTzz:²~(ß,ö’‹*ƠxÛǼ&¤ü\́9_~îc8\$¢l‰· \́M*¶T$•¦1ó£Ẁô˪[O£/‚̣¸1˜Ø“µ»²\Ö­₫̀Û·•pöÉ¥çÎe‰>¦§·ª³Ÿư¨DN»O.­­ÅdllÛ· ´¼*)ơî˼G£ED¥§pª+ô{IU?ö\rZ8jßY†—Ä¢JÀÆíœev¹³Óp¸â䓯™‡œ[­`ŒÛnèä0Ăưnöímö|Ä5…íF Ÿ¿nl¤í¯É ÿ˜[‹Í–èÿ’¯#» 5"h|Œo¼BN¢Ù'[肨&§ly9k’…›Lw"ú Ù*îoăPlé'²³SƠ7jL5ábv¢„}MyMMÖ™¼uªºW*̃hăœ»²dê:"ßÔöƒ”£ˆ%n,4Í+ëà\X±Bú3Y™§/n%öHÅ…q)!tô ÓçˆwÏ,º†@X Á¿z U}˜ưg—V­âîĂ`emêư‹~G;iYyÙ›¾7JÉ JȈ+Í@˜¬YH(ߤ% ¯ûz‹9ç(±Qöëù“ØÏ?MÈ.ÍC7½³÷†‡¥Gœ9…ê ̃û(~;=0ß.́Óv]ơ¹àím‘ú-vh‚øAï}§ÂÍgÏ)¥œÂ¢₫QáFúêÅưѬ³-¡aÛ°æ^åÇ·øá6¢±øÚŒÀƒ;7Q́SV¢ªĂG·c₫„î‹íÜêè₫OJ¨#s¨c³~IRnt7Á!Áΰb…ôsï¼–“o5Ä•{ö{ƒƒƒ~‘ưXO·́h^ ¥äO—Ÿe®¨Øÿ7``Ẹ̀ôé₫™̃'Ù¿|å©«+_>ÿ™3™<¸>¥ç;ó‹ß§§¥½+,”˜4^f —È?"ÿüƯK(ÎÅ&¤‹ªÎCm©,¶§®_¥G3Ơ2‡ƠöÈ®[PRæ«7'H†UéÍóÙ—4¾¿i¤`dsám¾¸ß±p)‰Ù0fxưCœÚ´ÄæÖÖ´öU¤ôún_°₫7²¤K°»‰DT—Ù-R|}̀·Ä¡f!ÔÓÊÊ+”ºG]„’[k%ÅØ&ki&+H¿i\²¤£~ÎỊh“C o88ê-·|4§,=yÔÔ3Øw1G¯đZµ5‰lñq«ÏçOhààÀt>¡eq"uMI^¡VOĐM‡£î,;đƯuơjRßH>1^ÈÑç/!>>³'$_MmCüƯôg2™ÙØDÈÆ)²3ôĐß (¶tcæ\ëë)}¿£óñÏ̃'üĐo&e‡j‰7Â==ElXíVkÛ·BÉ¡[@”«̣Rlû~d' Sħ›¬«2ÖF¨|pæ7n{h¦œBÿ±±³kÁ̉ó(úd#OæQ˜đ¶̃|ÖêêJü¨ÚöûÉ›¹̀âˆ`pĩô7RR«©w4hd‹†·%€$ç<€*T́¥W„(±#̣ăPe‡·Ç™¦P™À!f‡ ~Í̉ïđüB ¸z¬,K¸‚=̣N¬;ÔÊ"X²]¡®ÎÓ'ÙÏ̀ “—ǵó·0kÖß±¯ÁŒSr ²>¨üüQXJNTz öëó ỆIáưœ-*ç)ó;ûîzΰb¥ëOS7'Î#́OßÎoöv"ùfú1† € ‰“PưëTgÆ6AÓ{fœ"lSHÑ‚Á9³́ ¥²$f¥Îz›eæù…O!’D̉o ̣aMZlN:Júö%§CÙ¦Ê9¦£ aG¯ÇCYyDVf ’º4Óæc—…½ÿ­z̉´RºxƒôSÉ÷QM½#k₫Ô³Ơ*]ñ™P™…†ˆ¿€¤;•ăµœ¥hÛQ=æ÷û=f"ˆ*ØZƠlWë ;´¸‡í÷Œ@qÿ₫´¥î¿–V/©ÆĐ¶+LeØ·oŸF́mËä¤×̣̣}ï>[Nnø‡Ïxyg£’̣ÊäÔ{/óñ ˆÊLá%¤ü»Æ)=IQ›íÆ''Ơ¶¿SUáTífưÏ;ÈoWêâÙ2­O¾ ±ÿê¿ Âó÷¡›´V0¸Ø«yz„ụ̀̀Só'K@QcJ1·ù+óÜC\¤´}̣@³=Π›ÛlñÍO±­Ç#3¼UÚ$b~úí²0,Ưxy +YH?Dl"CÇT— )ä2oc}¡ÅđR\ft}aâ!ûEtl’ÚÚÈ’/—&YÀdYF†*…`Î’`̀r¤ëá™(É×èö|ă:ø„ „a÷ïÇji™ơrö¹¸úK›ôÁưä¹óº%ùSîÿø₫CXZ^P\ú¯§ô͉»>ªËMiÖüˆøêÉ¥¤¥Zn@æ¢ăü¬–r‰&6ÓÔ´USâS³KI¾JÄ3l³ÇåÆ(ÈƯ<ó¹́?FÆó&E¤ƒùQ̣YîÓn ÔƠ²¶‘ ïd÷3¢ßF)Úœtç‹4¸{n´Êú‚uöØaª=™¢ÊIØ4”)Y}¨&¯övµ̉ :^(²]̀9»öc—èª]Ç8̃Ï먙.M™ ¯µ;7Kù¨å¶p4¼çt¤–w±§Óˆ±¢Ŕä.…”ÿú‡„½úPĂẦkb»ÁÖT?Ño‡`üSEđͬË'îcí²FÀO«YH¿CRª“¾¾oăqä•9AØ}¿I0»¼,×µ´¤°v_hî”Ë*úÙ{Ûx7hÓ"ùöëÚd¡‚đ†¾i´\ÁÍ*_73yX&»ÛÉ/˜ŸÿV«×}8KJ÷JWgSYè–Ú] (æ?+í üiÑ»ŒŒtqÊ$Å0Né vŃ́̉[¸̀ûö`·Üê«^¶r_ èÖí¾wæ¦Ç™:+ Æ£Yu€È†øåÖÎàF–b₫\μ÷…è꧘ˆigûeƠÎàCª®û[îº%ù l×w¸ßƠѱƠ6‡ç0Ïb̉qËG'e5oUtq­Ö1Û]¢Æ8¶‹#k`•i@1„ED´¸ZP›o…₫Ú'äèÖ*vYCGYX»Bú+""ÜÎ×PÿT4›Ú ©Zƒ0f‚‚¸³Q­W̃#– Ax 5¾)bMưªÖcĂäcê#ˆ•ˆ• ơÄÓTØ*Û½° C×Iơ€È€·ZI¤z"‘ÿ[\üĐsñă]IMÅÅå̀̀#y}N‘ÊÊ^}j””äÇ7=57Ym³̣́BL ­xbÆ)©i3YØ9D¤øÇxă:@h,~ó0Í·?Ô·rä̀F‡Yb¶Zûf=ắ?áñ*ÄP<Ÿ]BºßeaA ’¯__±²uà¨SÍk;âƠ²Œă&+¶§÷ئ‰§…J5ưÖ’4´X¸´PØI~œ\½mỉÔPÍù³̃Nmf{ƒôG%P•Ç̀~Í33¶hœ¹ÍÔ°à4¿,½ç'¦Y;̀ ñG¾"‚¬%Ø^ks°ÜtRǴ¯ ;2"ĂØN‰ é<ûL9O³<¬*o6N‘VD½Ưjlü̃XרTÿ£±₫{CSCC]SC=úOcJ}cc½”ếî§6€»ojḈAĂ#ŧg³ ơλê0ñ‹ùƒ =x̀|"›K^kLu¼ºBÈûMm]OEÖ ÈŦ½Fº½™¼e†(Sø|úṚ5ÀÚ ù]jHŸYÙúËÍ™z»&!Ơ~bưÙđ?ª˜D(azá“Ki`’Ø@̀'$˜UsÓÓªª¿'G½jÁæ0 56•üw¦üƒ h´9Œœw%y¡¢âft´m{W#¥eI÷†¿̀Íç *­Í0oª0m&ë~4646Öưhhjj¬Ă„Pc=*‡È̉ 44’%S}ó₫Fô׈ ?FĐѧ£G¡Cÿ2ĐÀ₫0ĐÑ34ƒ†™Đÿ‰ŒXˆ‰‘ÈÄ0b*Tº²´¼÷âqdw ͵̉Ê€Ûj´¬½}å£rÚ£°€›Å®(°6~™¥RÏÊÈ€ưMï<‚¬-¯8È̃;OxoÜ’Ù¥—Ñ͵_·‰¸„M{gWà₫5±Gdé©"̃'’óä ?là÷§oˆ@èớƒŸ^“sø|‹K¬ôHÙ÷øßăơÄ˰h…9[„«@X)Ź›LÎ ¥kW΃ª:°n«oÇN5±³WÓ3 ›¬8¡₫}~ ±q2.˜˜˜P9ÄLd»ûÙI7Uô»ïb›²Zº26‰“q´¬½;eø‡S–ÜI₫ËGÑ#UŒWà›[ÖXŸi½…摜ư«Ó_Ô¦÷”í́í„@$DÆ¿́µ«¤ø3¿–fcå×ÊÆ<<¿`•PWÿ½×³ÿ“ù ¸œT9g6&Ö#DĺÅÿ¼:Úv`Ä{wå 6ËBơ™̃YA®²-µbvP YYl=Xc…ÆiÚ<¤$?–³@%ü₫ Ö+- äƒ@ -°s|ÿ ̃‰êÓô@·½ ¦Z%‡Ù,»<A₫í,Á1Âîɤå¢;ôRgEÔf&uÿf¾|©ëǻÓ1«¾~gcítm؆T2=}RüÙYÓ—s¥–édôµ˜&GWû’@ÜŸµS‚¥* civÅeÂÚr¶‹ßû¶ôÙsó *ïD猗*!~b×Ù¯eFOGsç®Ưº+úÿ­ÖW”Î=«ç̉ïqÉGúœç¸̃3$Œ́·EDÎÁlƠ¯5°Ú‚@₫œWÅơăE;1-1V¿̉èơ·–Ë.ƒ %¶ü(~QRˆ’(âI¤ï5Ÿ>ƒQ£jè˜â7Q-'7f&nÙ§%ÜñƠ†z?ûÅÅơ“d:•H́JszTùxÄîrhÊîx´ »s yØTÓíÜg˜ÆÊsذơ2‰ÈŸ¹GK(mïdyITm.r[7Æî”[¼El₫'u~¡®Vư­¬0F n®›¼¼¼æÛôk§Äe…ylDzA ‘*ù\ä{h|f‚¢,ÿmèÏ6«‘%—ØÊ»›9Tw8Ç}öÑæúijø̀t8FàäåƠu*ùHHË¡á Öc½y¤́ô¯ ß7a½ˆúñ·n¼Ầ8+3¢8”¯£‡v¦¸)ÛÇWp¶KE¼sfKNIÀA_Üa;×ơ2bbü½Ÿư§Oêº|(–^følO/L{°umÖ!x]×cư~<’ÿœh5µNË\[ËœF³äŒ¶úéLœÈ3€ÍÖ­[÷*ë™01́‡·÷0&ræL-₫uD̃“’ï{.É .¬yq‘HÂ=´Í·£;ä˜ơû̃–ªbËà±33w#µ4XÓA ­$_.É`>{§Jº>Q U-6d¡ÜƯ})[Ơ%…I¨P'ǾϨÇmp©æ†ùJ"&œƠç°aJJÖ¶!$̀vy‘é3a£Î9ƯÀ­]7J§(hô‰Î×O^„¼‚̣À*9öv?—;ê?Mw!ûh₫₫pK¨N›~ü°´è g@=(ù*ónăgÅñ†™–Ù6¿«×>HÎÔ @@q3ï6É¢̀‘Ú¸w©Aô\O!‚×ëÍOxĂí"ßéhcT”@OăQN—¦M¯t­4åè"’®0€@S~̉.¾`Å¢=éR¬~€†ơ|j¯@ê+ªKOáçƠ+ÄƠ ¤ Áï­ c|O°ÿkPcÛUå˜•É '/ÚûÙWUú½å\₫.ùù̀r®đŒæærsƯ„SîæåäT})ÿñă{ŸÜ =ă¡ÓƠ—öÚE{P̣±O¤;M$̉ ̃+MÄ>LjæỚ;̣äB{ººº7n _+`&P‰ÈÀÀkx=92e:³³Ă=₫¨t#(ª$Ú©ëª'ßÀ,•ơDˆï„@ ƒMÍU_uaåaânJpMÙÿêÓ0F‚EDbeaH‹²ÊŒÎSç—Gÿ\¼˜®­È`úzéèÏụ̂ïê.™8uÑößúgñ•ĐOÇdµ)‡_˜¹§x'¥Ơ,Üeúé;Ä•ç_:ưüH×·1c†L_=óç¿8:öñr r²"°(BÉ×Lɾ"§Û²ÖeÖÍÓ£èOËÚ]Ë:Øââµ@Ă8•j•%Ïî¤F‡†6ÔWÅvØ¢‹ 9v¹¬«¯ ÍvgÁÉå^êñ†/Èà±ïtfĂKvèr2™(6¦koHW_Ùû¨Å†àư0H…—ñ̉È8.¼O‡°å·DdvRæxî\ Ά0ó³¥|-Jn‹€»§ù„®́6““èÔ5 û*ûÓ¦Jà3Öû̀‡LKa9„’¯-²s¬„́·±"tÇZ+/l±Ù́Ày•‘öCó„n»‚(n^đ‰ÜÏÙBi ªđqå]Ü e²ß³mĂ2ô Q(d0¢©iqă¦¯îœN}VÑ I:º̉,°ÀÎùâj†Gеy‹búÈ?Ñ‘l̀H"‘˜™=uưÜ»¾·ï¾öaö•”##}ŒŒúleọ̈́́ °BÉGK#)#ưöåX’Ïö…äOẲ3|‰á$æÉØT’Jôl=c÷TJK¢„ûp–À×icJˆ…èPI.ôE_T}<́¿ÏmÏQJ§Äæ»Ỹ*đ•C u=̉‡Ï̀́cdoá(ĐEœûÄ¥K­û6û¬#yhê“Kçå²­Z¹ –@(ùZ¡GÏ|ƒĐ·oTă¡\èÄö@ÊwE«¨½¯AµÜW$J;,mÅ^‡ËŸ̀^ ă–‚ û=@ ¿Ü2m%™é6ckî÷̣©D‹®>!èOƒ@HF[g¡ J>È ĂÀĐöØñ«V₫egfíP₫¥ïgpë̀\ämk;ª÷/ứy¹”ôpX¡äkEtU,m&PƠ~MvP₫èÁ̀}`¿™¾Ù¦ÏSYmùÉóÇ@]uóQ cÄÆâ««O$̀­­ĂBBĐđ0€ØÚ‚̣*/Ÿ£xLkkùw™!øZRö‡-àû† JfêèW}½Û…‘gOàï_æàà̃²o²pqYY O¯æ>RñïjXö äkß ¡ƒTæØÛÚ}©-ƯN)1ÆÀ. de‰‡a†s*—/M  (ơôơ|?Ïhà…ÏÿË9óÈm̉wÂX4€‹=€­?Bîùä›uÚIn™/3$$?dæưŸ¿¡|ßAɸq2§NÅ-_̃{.9ÜgYó¯y?É>Ï(шˆÆÆ½wÅ'ýËLaÁƒ’¯ؤ»¶+±½„ĐŒ¶·´[† §;? À˜Î—5ß‹˜ï…o2tX¾|ƒÏ6̃^¸Öç2.–‘Ütôưh±ñÚ={·9ó́WUr6Ô33Ù`©ƒ’ô1..;wz¹¹ơ¬ĂĂêolÏ~¨ªjô·́;oôعc››{Ï ¿úº‘÷ttŒayƒ’ô Üܶö¨æ÷éÏ‹¨Ø3ê§Ùw÷đÙ½ÍeSOe¿²‚'3«FGg,iP̣A ₫¥ù́ø÷_n:º¿¼rP|ü!a>•~íÙe“Ç¡C»V­â``öwSNMeààdÓ̉2„e J>̉ï°·wø0º†ôBCøWD¾¾%Në] Ă€ÿ5®O$””äèè0ÿ¥$Gøî{ïè°iøè J>̉_QPĐCÿØïmºˆă}:GE}Ă?făÆ•(û’’Zè/0p×¼ù¬ă₫(û7o88Ø6¬„… J>2X縹©±ÁÿÀ^u vYÙ_Âpö́—qăÆ̀k2@³ogçú½©)0h’"ë”)ô¿ªæ^¼XÍĂĂ5gtË %X_8½Ă:l¾yڽˉ·óÔƠx¦© >¼Ó!À7oXRR>ÖT7/\ºTx gøˆv¶nhà₫ưkqqTUx¦N#ĐÓw:X̣%%µ¬¼œdlddj*Ë”|d3uÚô‡P-0'/éUñ«²OUߪë¿ÿ@èFpp0ñ%>q’€€ä̉Á¨ä(*ÎChƠó$½*,úø±²ºº¾éBO7Œƒˆf_LLfÜ8iS8CJ>2ø´@™I:2“†höQ-PJR ưÁ’%@ P̣A %@ P̣A %@ P̣A %@ ½.ùº^9@ @ [ëƒ@ @ Ö@ @ ¨ơA @ j}¡†——|¿ÁÖ­[áî5œœ<˜™ đ9÷rÑíÏ|ÿx{oƒoóWÙ¼ÙcøpÂ@¼ó¯ßư~đ·àîî1baejèTă>X(¡Öém¬­·Â‡Đ}† G̃Ÿp¯âŸsï?LXwÁ·ß¯@~À7̃êUV_CᣯïÇ0|8|°}Ư$èP?í?‚Z@  f Ö@ @ Pëƒ@ @ Ôú @ µ>ô"µï3’îV|Eƒ,c§ÎQ“¤ƒÏ@ ¨ơA ư‚êØÙb³rºQÊ&1vë øÀ ‘‚Ø-+,¼_wAÚ0èÔ¡5¼¿ëM/ÆE`eØ[ê¦À¬cÚ¨ÖG¨ÈJˆ}×À=MK‹ª€\²̉µ¾¦Wû7́* ™° R-‰ÓÄÓ[‹j¤8»Ô9ƯR¨›ñw´Ø‡@¾éè¹)!ùă™é³¹4v–ÈÀcX‘¯h(®ŒÍÙÖom­ø)&À|¥olî[¹+¶;bH+d˜~ù„7/p•O÷ú›h¹æ:•”¨oæV&W ¡Ö@ Á%û ư[ë{pôÍ^³Zü\đơà0¶̃z* q ƯiæEn´ZëÛ¾÷Hóß°[̀¸[ZĂïṿ D=¯x±rÓ|·íù2wu,V㧸ÍÿÎ Kk›Îª½Û—*vçf̃);VªÂ5¤Skêx€Ø®[ÇÖ±µ­›GÍ^ë¥IZú«aB„y¹˜~­œ*|§pú½£¹¡/@^®w”&ø”ؼ3ÉP”¼“Ë3'w+7|#é—²¯ü“´ñ>4àzå™äƯµf¾±­O“ßc!O#Ǿt[î–Úị̂¢«öơXªHmå…N›éµöÖ‡§¹e³!́q«èc†EƠ$Qp< 2H = ¯í@ÑÍü3<R>é¢;̃ªK¶$6—9lNUê`æV €g+7é~»6èëùD¹¡æœ5ˆ(r¬é[o8KsASEbđZ³gmT:¶QăB₫5´¢z’Ê üF ̃«5±Ê‹P“un“₫úÀđÍjá›o*i‰́¦‚tXûËO–|Ï]%ø]•—ît\¶X^\ˆHÓU@;Uśo–s§ûˆá¯Î8¿ûh·r¬¼»™CuuSxĂí"ßém:1R­·° ,êø’z§2Ï,“kÛµJă–©̀ {ƠAüèâ@z–!^C$ôƯơh4̉Đѱú:‚ÚR'¥1ow¯ |á)Æ¢-[dúæ’G³'ç´hͼ—¥[ÇóeƠ[ú‡̃^wÀU>ÿ¥ï˜×ü¡phÚ†çN]rû}ĂhvNöªJÀ̃à»Wù4.̃Q£"„YnÑÁư¹Fb³ĐZÄi¥¿̃Ml°–‡´µö2²ú]̉̃í룥Ÿq3=ăÖ&¦ÑV[[5²ÂVô‹åœ™•R{°°é¨æDfỄtƯE‡@ ¤od ‹.¥øSÅ×?ËÏ\{!=k™'Æç®•WÅdÜû’’Ơ$R#‘¹EÀ!³×GíLapË@7«j 7Î@%‚ú¡üóÿRlăTœ̉ˆÏ–œ‹JƠè-k2Œï( üÆ\¿×ú¾gPˆl½ON]…đí]R6U³:ê¤yÔ 8G•úèóâ{²ÈÙ₫×ê49uq–êï²²ÏK Ö |›̃—́â'ï`€FëcloLIÏ@»5–±U{©ƒ‹N6v9&=̉?¹ß^.Ͼè¥×\W¢èaËè—…µ»¨((DωÖ†UDâ1·ÄÎ2̀X£Äù¦Ÿ¾$f9]´]©­©§ r̉ÑP ©í́@ ơI­LÛÊßॠ4ÚDå’Ó5–k̃¨»ó(¢”âfṛ<&§j“Tû @7VĂ-8Û-˜ÚWUñ¶đÙ“¬»·oœ KÈNŒôBèn£ÏLµ¿]Î!˜²¾Ñ¼mz*éF0´O?/̉½Ăy] $+Ư¶±Æ©̉,U™ÇcïïZ_eÖ Z•ÏăN­—í47R±„_‘¬°àØñ|́%OI€—¬LUÜ»N«}9V ~´PH¤'Œ3YṕX>>ÖüWµüÂj†÷<|q+•oêî{.”‹ú À† B9­<̃W5‹/­n­̣É_y÷Đ` M2ÛE ñÊAăJ₫ϺXª µ”×ơ¦p·y™„eïñPMĂÏ.Öjđ@Σ÷@¾ó«66P®̃zsQÚJC₫N•̀1n¢2ú›½xƒV“EΖĆï"×¹¯˜{Qîû_+ç Ù÷K-t»ăÉ=¤̉+ĂÏx/¥éÚo8iÎà–Đɉ ô4 Á ’ªư½­Ề2vsÛt¦mxHXĂ|îtíéÚ:mùÛ{´d`heÅ·Ÿƒ°©Ï1GỎ>;³Áưo6UD†œoµƒôt—˺úzê ‡´GKw';y©;wđ8ín³#a4* Ñ6́ÎňéɰFè‘ ÆZ û’/|zÔ¬•ùơÛ(ßP|„DƯT₫gĂnrúËÁ{˜j¾eOÁrÙ7Nê®±&±fµ”sF́ºé‹ơAÚú»O?:³rr«T¾çÜ:Rm–†ú8¶¾3 #|9öº¡Ó¡H–±¢%%$$¹‰° ơ.Ă \x%đe‡„Ë.Æ*/̀§,^Â#ʽ£¿VÎñÎ’ R`ƒ==ö¡ÑÓsq‹ˆNdûóOŒPqP‡sWô¾Ó£ÔÄœÜ×aÉ0’‡w”Ø?̉"|½âD¾î>§éSVJ̀Ư{™9o^|)#w33srˆÉÈ)¨¨Ï’áO¨÷dß/­ßP÷̣)Å(fWk•<»°‚ª̣µ×â2ö*°S¤mơ}½¼+8CbPmơwyO'aƒ¦¹̀–ÙÓFïy•€₫¼ZöHoz–¹KŒ̉À&ZF S/9I™́k“`̣Í0ô·fóåç>†ºy?ôc'…¬ ¸ºơǧ÷<î*©̉’ øy„Æ”–Ơ´D$FµÇ8ÅÜ$Gª¢KæÅáoß“WD;Ḳ;‹¯±U—Yú,él`8eˆŸgSÆ…‰?«;è­s#̃Hïà”¦À)0V×ÎDµîƯÍЋͫg¨¿ºsăi|ôăĂÑéàöfY₫Í@ÙÈẽ4IđåAÔƒߟgîÏ|8®kº§ánN‰Ư‹+`rhiOk¨©;eLslÓ‡ø‹?Ä}Jß5‡J”t-~lŸ ”î”ÉcÑeiiA^B2iỆ[i»ÈËưr̃Xhg®”W66ÿçËÛ1›Oï‡Ú_ÏhF ~«5û+cÀgir1üf Ơ±SÅf½̣̣B³óN¾Ïá{»ñ*u¯äG÷ô$Ÿ?}Ưßåí'¥%-­GeÍeṚSXëỄä$_̣¦_„¿<´”Ø;̉mĐ|¼¿)û~ÆIÚZ 1ó#Ăan«7– ¼¸‘Fë<#Étùj_³ÙÊ:4j!¹Ơ§´̀ƠD›¯áÅƠ#Û)·"ǘ éyrIÚ' ñ¡ÔÈÏó23̉î§&¦ÆG̃lå1%w÷Dú4Úµ́$ú"ˆ/®,y–ù ă₫½ÔÔøøY­¼¦́Y çå­‚¦^÷­uÉiçÙ.7ñr'…L\¨µÏ•}›ÖËÿỸ*Êß¶R‹*€zë%+ê„ M•q¼ÙN_µ íN‡ŒuEœ5)ׯÇ]ôüê¹,€T)#W³•ó”ÄÈqZ´D…%]g7t˜8×4ï’ỏÇ̀×.$'å=¼›BdaÑ3s™5×|¾$Í̀àQÖ—k><¹~úLÚ£¸k•…DPĂí°Smîl=-̃~4€Ö¹•,¡"ÄŒÓ3¼¹j¦'(ë¢ÚêhSEQNn^ÑëêÆz€0đJÉHËv60H*/È}œÿöK5¨#Ç IˆKO¤^³êĂ«̣/ûsÑ0Û×’¢¯ p¦ -•v/=³¼‰¡g#"6IZœ¿ÍGXơáY9 ­º8Ex>äŧæ7 ̉3IÓ,<‡ÆÉÉôñĂ·Đt&Ê*Hëư²Èص—‘µh½óơUFrtṛư§/_¿{ñö V“0OYêb!«ÎË-ˆ¼Á›^sQ‰¢Ö|ô·¬9f¦A:|˜Pæ­ÂFiê€GÔÔ€ÛT#ä°Xófñ5;e×ôNn•cö·”–s7(ØéÓœ‹’°ËÊ/˜¯×Hi­²c8æ-ï–̉2đè KSÚEØI¡fCƠ¼;ÛbĂ¯ŸÅ,®j₫~^ÎØN®ËÄṆ̃ÆVèïç×ä•\àä³`À>gEÿnđLÀ„\^ÊĂ*U¼“4ÓpGKyª5§¦đfNqsß§KÂe‡fĂŒaS$B©Ư‚r2l•99-}2fÇ÷è²^X#âÙüơä3S=G®dÉ~–ß_;Å(‡ÀTuQđ-1-›Âk•+ØpơÂqÏv_¡íå9̉ÜÜ :ÉLlzK?½´†æè¯‰ñÔtt/äD«ơ¿₫::VaU};Uư^-ç¼Ë|—Á^oơaI¯ +^ơtïxmgtËIkÎ8|ơ—_úĐ:n¡v«̀“̣B•t©âÏIŸÜ6’ÛŸ[,ëOïảá46.J·,+;6G¨8iÆI3YHTF-'7‹ºƯÆ#Eó̉)Í‘… ©OÜxyRº3ƯkXÑNQ²r-6›qg+²¯Đ'¿>ÇËe•[UpYÇÍÚ*¸è¨éz¶UB¢B °¸›70´8™äå®%ؾúÅ” ·ß…tûút¯¸6ơÓ‚2rl_³h^÷êỔĂ"èBº­öơ:â´µ³w@óK²n´†Æ/)½xCÈâZ‘"*Vn*-m»¯_{çjĐ³Œ­öt§áµ¾`TCú^;«D°q2a#S3VàÄz¬Êß̃m3ÜÇ·P}"ÖÊĂUuÀÊZă*372ÿ‡‹ =Jz—~#³Ơé[à].JKVˆ¸ÆÑ¤yd"áHËÖø®îUv]lôi=êƯRΕ7·–'=‹‹L¢ 0âëO¨m¿Ÿ<{ø’kBvưÏí5™$mônEŒ&¿Œ̀‚µ.äïÀLס*BEjÈZ“­”EêÍÈR¤!Âa¼ư%L“²ˆ‰Ư9‹öŒŒ Ă÷̉}´fƠ%Ü"[ä“̣bq•oÆâ3&´²!jë¼…£ÁƯËEظhư3áh UÉ!å uPñÓ9ơ)KȽ˜a9w´h-uif"ÓĐøîóØR—´ñZ©¾?ÿ|‹Øk|"8Ơ†”?ùp6_«–±‘Øô4pĂTfú…œ;jp ¤/ J®Ù7×™¼0LRz~•2Ó/}híù…2?ycIÉÆ¬ ™d€v«áïađ’´˺”Ñ߀u_K‹§&æP並ĂÍ.-ÏêÙy;\å°ˆI§}†ÍS˜"×Y™̀¢èù‰[èbzÛŒ-g₫U¤Æ%Q:NÍRKOĐ¾h¼:u™b†w­¾ợ°ô¯Nv"Ă?I¼¥7-¡q…DK¥ú́Ẩg±0™ŒjC÷Ce™y₫̃Iơi¨T 2 ¢ö¨h.ÓQSWRP“‘k5[áèTºƠen¦¨|¢Çs^Φ=o/[*ÙC«w/mkbÓNºy,ñèèă…@¨Ö×Đđ¡ơºæN6­Ư¹ˆk¦Ë£=7(ÖµY)Y)íR˜´́Jx€Tó§À57A²Ă6/ómVá2#Ă2Û_Ù̀û¿ƒh‹’º-°¸Qßo•WUaê+_RßH³6tª[¸iy«—BüÓ̀›‹ Ô ›ä\±4³=†·2.dF«ñư…Ü)9gĐª|X.o·ô;‹uáe]Í©Z7”¿T:¡åi%ËÑ@Ơ»̀ä„ÿâ®GÄgç&F´Ñ4×]=á<¿«Y—Œ̣%Håï²>¼xöă»̣Ï¿‘‡«zó¼óÓÚJ7HÂ*¹>'keBÇÊ=ø»„û‡ÖǪƒ*ie“÷‰.öùơTeÍ÷ïươóÆ8F¼v́ô¨DW·J>Ư68Ơ6ø×.)4g3‚lîôp2â¿KÈ¡q¥đM£íëƒíâó=ÈAù€”tl½oj¹Á2^¤‘û=ÂnHiW̃E „ÂâbJßƯ˜Ei%‹Ësÿ;wô\ôÁ´ÿôẹ̀¾·–Hw*ÂèW Ÿ¡*Ư₫è8éÉ`Z‘µ­Kå6ÛD.´Fv£óñ€×ƨv)‰ ‚ׯ ‰¸f†@z…aE1§)†”ǘ̀¿ú¡µç/”ù?¾‡A\g^ˆ¹Ó¡Û Ü>3è_ɨ[—Ra«E?‹¶œauŒZăé™Ë óđdeɈ¶­ïJ5̀%É×M+Ê$W³$êÆ¨û/ÔæOøó́•’g÷µî•`iîNÅ «I¼ù9V~îrô·-€f'é}œ—Ñ̀°7 ñ€à]ùw6u*̃êr=4d¨Ó¤•Œ'K‹̣ŒbÉÂJÿv¾³C+øø{WËgææe"y…^Û ‰ÆIg₫ˬ “g¯P ọ̈é›h´>Ö)[J+‰ÍJ™öjtWhmˆ̀ ”ÆŸüñÈÖfc]T›\̉ÆvèF4F;LÑ™N³ØËÉ3¨‡4cỜÜ”eTdúZùYm’͹ÚÍü17·XÚªÁ é{¾gÚó+àÎÿ¤WǬaĂ~çCûËeø§÷0ˆé¬å-7Ûgå½IyRŒ¹«“Ü(*_»µ[‡äÚFk94‚‹”G=,ƯÚú7d$WÑq²9Ä…h>ïåẈO*±×œ³fÙÂÿ ÷\—úh¿H‹^ƯiAñÖÛ᫯o§¢<ͤè'Ÿ†îŸMf̃ ‹â½RxQ©£ñmâŸ{wßUÁæÓ>/xÓh_:­tË8´2ưÁ;»Ị́Noyù];¿²_mÇdE?(mt"F+ à\ ¨ơA9µ¥ÉnØ•£Œéo´zÿđtL“y—Ÿư–c 5ñßùÍ23²ôăAĂÑ»̉ÁííJü=sn“}ÿwr·ƒ́ÙüΨt ùæÚ•På1Ưæ(6·dœMjÆV´YcÏ+·e]/—¬UniŹø¤À¬™ä'đ“U>d$̃âI¿På@q3q‘ßÙÀ· ïä́ŒW/x´̀¤Ílöy°n÷Å®'±Œ›ë±^*È/KG¹êØơ •T‘đơù)“éä 1¢̣_ö¡ÛkX€;ƠƠ4Vÿ5_?>»wóäέ©¾È<9hB¶ ü¥ío–ù¤øÇUJêlå†È«D››¤Æ̣¹×‚W{¦,Êdä²°u»ó̉½üZii¢P»EƠ›ú̀“ŸÖ*MeĂ¥·Ư¹ˆD¸B@B1îÍ}Ú;çÚ$Ï Q;₫̣–TÅÄÅÙÈ«#óÆk;€Tù˜~¾‡<è7^e>ä»Í–¹÷S|N*"œ§Û‡åt–½7'æ/`¸yÁc6]³‚ºs̃ |Í!eo´ÀäÑFñáaé6QؤCQ‚æ¿aÛ́MEh§ñj̣ní·²Ø‚Ñ‹ô)¼#é(ÓBÁíØ4̉ÊÉ”*».××ZÆ/¾Y3¼™JrQívmNóñA5OØ{ao4&/0à₫»P‘•û®{–÷à],j}È/T Ḉ§¡:’’sÆÀh476|nnÁtÜu‹ŒZ{Q$ûlÏÄÚÉYà̃’å}£b–-¿dîµR0Ỷ.öû“üS(Æ0F ̃«5±Î/BMÖ¹MúëĂ7«…o¾©¤%"¸ŸëîéN÷§8#É™ihem“»uFcc=æPÛa¼ îÙ…+₫jä=I“v¯™l* f…¿>±6œa†@ u8w‘W=3Ú‘àm¦‰[Ô–?¿́µ̀("1Ø\9xƠé’íÚ´—Vο¤¹îb–ƯB^"6óœ»̃†°Ç¹çVÉ<ûJYÉPs̉Œ…²¦Äºëá;äpJu­fïJ¸a?k”ưḌÄï’ïæU45Âră´X‘F:úA)̣ Ö7d©2á—5œ Wf•©¦œRêî!¾gîln1Ó®@EÇ)ïY/Ö¼´TseñÉw̃äƠ¸PxGÚ0F˜å,ÑŸKöVœVúëuèeëWO'̉áQ˜±Ú€Übå·á-æV«ô`‹¼kl‹DôüT Ñzä–ÙtưÊĐc 0é·4Qœ¸4ÀGé7Œ Yëc¢g¡N¢ä[t|†è‘ô‚yÍ*̀ˆ1‹÷Ä~~9)À×Qcoo¹PVÑ4O9DÓkÉ(¾6¬X_6ó™§ëñùGÉvˆÍîÄYFĐ́¿ÁÉi}•O/Û›…ưt)q!½£§‚,ƠaÉîW4|z\ô ÊDăP!Đ´¾¦o_đ€˜ñÔ¶sIèÅååm£¹îé£<<”d*ÚùztÏcrª6u`ÿ‡§“yqdø«ñwn"u/)(«ÂR7U°C ~ +yX>H?á°8Yøy¡¨_:ߨNcÇ*=ĂÆÊf½±ºX»sÆfk£¿Đ1P-ùo٠ʈFËfµWá”MÍÁQg4đùëĐêùM­/ûĐ9ÛsƯ]m¥m€Ơ‰!ăa ‡tE#¡T},'¶Ö3,¾µöCƯØ@‰Ü̃ev·®ơg§ăi4»ÆÖÛ₫äèªà „`@ºËp§Ëˆnª(z–™q;.ấ´ÛÁöè³CÅ{ ~mè¨PDÛ£́" Üv‚̃‡WÏ(¡z¨ơứI^´6 yßjß4¯¼8ɶ#E7v¯ÔsmYnëè óngùNo›díûŒÛ©÷îg–Ö’;¬™8Dd䕦«M•fïàJ²¢ï¿¡§Çôù††Á)ú²cF€ÊgΉNJ"¡çsMÓ65_¢ÉCUđ+Ÿ]ˆ¼ó ÿ]y-zTRIËÄdä¨6Ù'e'Ü~]O ÷44Đ‹éiÿƒ&đ<ơüوļwX>—ˆªÉ23-©–ô<åJäơ;ù¥ïÑër‘̉4Zº@}B§CĂírÊÉ'"%«®¦©>qTûwÑñưT§Gœ»œœ_„^‘ÈÄ%¡¤5¯ƒ¼´$̣$ơÚµ¨´ü̉ €0ñ‰INÖg¨ˆ>Öº₫Y$GJL•iyغĂç’ÜƯƠi¾Ơ÷üvPÖ8fćßY¦/Öi×ÑĐ¥Ư§µY|Ï=¸)t¤Ú<- ơql½“ß=Tơ…–3Z¯Ư½Å3wyÛ–wÑơ'̣ÙgÎÖS–‚Ó¢†°C ̉=ÊŸ%ƯN¿û åơ  Ù#ÀImô·ØÎ h6zJ"ák¬7ÜÏû+ÉÊÍ4;0Ñv{û¡‚5â´=°Ă‚)kl‚Ùº̣­Ï«® 5¶A;ưí—3–}@¯Ê·ï^íú©ŒÅåĐƯtÙ˜»l„̀“9ËŒ ̀VŸ&5‘Æ]xmî:ÿ́Ÿ^S40-Ư–FSÏ:½ÉĐ5zÔ#ôư:K»äÖçD†‡l°àŸƯï“åsÏltæ)I#¾âU¯¬{°Y[ÿ5̉,ÏÀ„X»Ư÷Úœ²×ưggZ‰jŒ‘ºWZÛ£˜·&5÷Ôdo•Ÿ¨Êí¶»ö́àÜ–¦U›û1Ü}ቻéºv‹V‡‡¸‘½>íL+s¥íϨJ3fŸ9à$2Ê)ülää%¯1Å›t"ÏÙó ç $†9\8wñÉS7ÇÔ( 1ƒ¥»4FiënÍơº„ææơ;s …•$E*°û?ÓÇE];¼çæËl±…Yơ{·úg0œÆJ̀ÊYñ®öÖ×Ư>t½ƯB +³ỚåG‡iƠè!IƠúŸe`‚ ‚àa• …ùŸ¼]í½¼ü££œB3 EÅÛơ^±yÅđÑăzHpÚ;Ñ^“₫^§+PWZ¦È/¡%­Wû§k^â ×»WƯ|ï]=ÿφ…*‹6ï5h(ưăú®đ V?wÈörVƒÙrªƯEkắ¾å¶±ơ₫đuf× œ5ïƯi-ß ¬Êÿwu›Xv±pÁ<Ư9F+úÔèÍÓ“¶jÿ£©¤¤~<¡o†=;₫¤́×ÁW¶Ñ9Ƚú苬Ẹ̀Á¥öé§"¡ÿỴ̈½”ºôÿûZumËå²tö=u^¥È|”½S8dr[sî'“z'soÎbÍí}XØo™ÂX‹œ•.·_¬Se÷‰,º•;///#7W ///W@´M‹ÿgaéunw]…‡s ctPxªÀ¨ÿ?},z==W₫÷~¬”áö¨Â™Ë:ÊXÄügbư"¾Œh!₫Ï£ÅåÆ?X>®KhĐfü×aúÛ›ơÙT³¦HÛ‹Í›»fÀüÅJܾu÷q«öûÉo?­̀7©øî̀¯̉+m J\Ơ öômÚÓ© '(Aïv¤¥úHơ‘?± Ê&Êå\U·uQÓñïç—ĐºÏ´½}¦Ợ0—w‡ô?|}p/r«fỵ̈$ăă{î‡Tưö̀R.öÀPxÀ¢¥=œ¹|Tiç̉ؾ{ÊI¥₫ʃ¹>YëàMÅ‹¼\¯ÔËÔ]g¬ÈơµÍÍæ!ÿ]Ï®µÜ]$ZăÀ/Jku£Ư/7Yâüög¡I+c®…ÙÀ—HÍj±Î­Ø–ߢb̃s/r©ÿ„¡÷,Ó›̀C¨¦!‚ ‚ ˆÚn®Ë¹}3­ ªO}9ßí´Ù̉¿g™‡ñ³\}9MqƯ%ÿÿ+—·—s…y{¼ưă¦?.“™ºT_®CëÆ7₫æ5m¹-¯×Ă3Â~ºI@ å‚ ‚ ‚ ×WŒ¾kOÏ['góß‚«Êũyï9¢M‰›gÚNë:÷ü?óSYlø×đ¸§¼ÑlƠ⇭¬½ºt‘üû²ŸXî å^0hXá̀‹›°|=7xs ôsƠó‡Íù3 rưz?§º̃ẫ*Ơ÷¥\4¡üOAAäúJ «u₫ó,!…óÿ-y¨ÛöŸgw̉êÓæL¢ØURà[ü3Ï[¶‡½Ï8Àư3ffÓù/Ï{v™jÇYả£ï~땃·’æ¸M^D;.rƯªÙ¸&†¸qó¶ÿ½orö‚ß’₫}[ ä%™é÷2/2ºè— Ô5ƒ›Ṿœ"óv6¹6ó¿v†ơÂÖ†úîff×Èt̃3™{F ‚ ‚ ‚ Èơư3,çÉØÛFR£¸'xë}n½÷¹̉vÚå³näs,ÊN¹\8d²®Ä(Îx-Vi]XUâ®2GŸ-R­èS°&¿7Â"S;|k8Í÷ÇU[çÚ@÷è1iă¿9zH³,´©[̉̃!Uø¬u;ÏÈÏí¶à¿E/öÈ‹î)}†etp$‚ ‚ âs}¬¯è0̣;%C^JˆŸ§§»§ÿ›è‰ÿ®mƯ½k¾êؽMƒ’ÑzäæŸ_ùº̃qqó ‹₫ø¯iƠ]U}ÀÈÑ#4ä%ï'ÚBóà΃́Q³³%IÿxOí'Ø9DđßƠơ$‰r¯VXtâÀ¯ÿv,̀₫̃Fæ¿Ơơ{ÍƯ¿ḱ_Â%¬ú‡vê“wí̉fVggƠ×úqàØ.£—ü®SÂU‰ *,̀K>ksöƃGßJ|HhƯ]{âŒ9FÿÎ#¿hÆ̣+‡] JøÇ&µíØUe¼[öơ½¤lu®K‘›_X8?/)è¬í¹.¿ ²Ơkdd #ƠL ́ÖQÇ·yÿ<«q«ª̀g66[«aî·±±‘””9rd-(ÉƠ3Â,₫₫₫ÎÎÎfffBBƠwî›zơj^œcccOŸ>=v́XEEEj̀øÎ_UÓ’åää4dÈuuơj·H‘j‘âû÷ïGĂ4ỉ¤ßŸ”‚µ³hÿâ$¶µµMIIY½zu­/‰¿½ܾ́}ûéÓ§Ë–-kذ!5a|v}\₫¯YOơ±ø·¼¢h!«:ÿx̃¿®Ô€åë”~O§®X_ú̃ÍF̀Y1¢äU"SWj”¾§¤úôu¥7²M»\̃­ôk–T³ÿJkm:NXwdB±;)ûz~zIÿœ·¹ÊœµøWªîz&ƯI&Û¼ys5̀ú«V­JHHÈÉÉÑĐĐĐ̉̉ªÑŸzF˜%--­iÓ¦mÚ´E9wîÅ™ ₫#ÊnܸaggW¯=¬çx«aÉụ́åË–-ÿ4$îîîgΜAÉ¢”âơê₫₫Í̀̀|ơêƠúơëëÖ­K‰RÓ«ñAƒ½ÿ¾.̉”[uèëë '''ïÛ·²z•¹>‚¨iäææZXXàCzz:jÏŸ?WçÇP5Î;ăo||üíÛ·Q#÷êƠ‹bÂÚ·oÏùܲeËÔÔTI­§   yóæœ¯mÛ¶ÍÈÈ¡ÈÔ °|øå:lذPLj4¦¦¦ÿ̀ ^R»]ßïEWW×ÙÙ™ µ““„\Aü‡²²r~~>>äåå¡}3f < ……ïŒ9ưüưû÷éÓ§‡……QX*ϱcÇâââ8_Ó̉̉† âîîN‘©Ư4n\tH3111¿:uêPpj:ƒg?gggĂ-$%%q›|¢fqăÆ Î'èÔÔÔăÇ/X°€"Ăw´´´8?‘äää@u }l×®E†\A\¹r…Û{$&&>}úÔÆÆf̃¼y>ấ́|çÎng̉´iÓ¬\¹’‚S¾~ưºhÑ¢" ïß¿oaa±téROmEFF†}Ä $N‹-’““)>5 6xxxp/©_¿¾§&̣üùóqăÆq/©[·®™™¹>¾Ó¯_?___î% 4X²d \7‡\À=»È’øøøåË—;ú‰âẶóó‹´ỳè#›6m266F¥L!ª0;v,qùêƠ«555{ö́I!ª}Œ3æíÛ·%®JIIA–ˆ¦(ƠPvíÚUÜÏ„‡‡wëÖBT³øüùsñ¶̣̣̣¾|ùṛäÉâ „¨0ÊÊÊ!!!ÅC}ÿ₫} ¹>‚1bDFFFñåuëÖ2dȳgÏ(D|¡K—.P-Å—‹‰‰M›6íêƠ«¢ «H‡W¡©SWW‡à ^µŒ;w̃ºu«Œ bbbTUU‹üàMÔ"""ôơơK[;uêÔ   R ";;[RR²dÁ-$´fÍr}ü¢{÷îáááÅ—çççgee¹»»CÔQ”Èơ.QQQ...%®JKKKMM555577§@UccẳK¼ÿ̃ÓÓÓËËKSS“U^\]]ËVÿ™™™={ö|ụ̀%ŪÖíbfföÓÍüüüÆK/5Ơ,̉ÓÓËx”———IâµQXX(..ÎP¢ÉÈÈ8v́HU%‘‘‘)Mf€:uêlƯº• ¹>â¦ÿ₫e¬}÷î¡¡aï̃½)V2ÅÊʪŒ ²³³gÍơæÍU¹€b3f̀O7‹622º|ù2E¬đáÇ¡C‡̣¸ñíÛ·¡&¡))n5Å!´nƯº́m233/^A᪴hÑ¢xçÛ"ÍÛÍbUÚµk÷₫ưû26ÈÉÉñóó+(( ‘®Èơ(«V­úøñcÙÛäååéêêb3v&4¢¨ªª CĐ”ø†'øö훸¸ø;xy‚Ap(í¥ÙâR̉ÅÅeÏ=k×®¥ Ơt:uêT®ß¬¬¬¤¥¥Q×Qèª?Ư»wÏÊʪ[·.Ú26KHH8wîÜ´iÓ(bƠœqăÆ}ụ̀¥~ưúß¿/#Maü:´|ùrXÅđ̣̣âLÈ6y(G%nicc³páB¹>âO:XOO¯* üˆˆ011 æ,¡Yû*÷ÄqhùPöéÓg̣äÉÙ X‚¿ÊÊÊ«ryàÀ>ˆˆˆˆ>₫Fï̃½µ´´{¡ûUTTÔƠƠi~çÚÛ 944té̉¥Hầ̀̀‚‚VS 7jÔ¨Y³fíÚµÛ´i½5]³(̉% É:tèP¤5̀ x||üÇ“““á" @áª₫888Y2a„èëë#AcccQu'%%¡đÊÊÊR¸* *:8=ÎW??¿áÇKHHœ8qâîƯ»AAAh+?₫œ’’B¯‘ë#₫à¼.$¤¡¡Á½¤Aƒp 4ngƠÁ₫á+̉µkW H%A Ѱq¾Nœ8QLĹÛ·o999ôx§#//ÏIçåå5mÚ´ÄÄĦM›Ö«WO€y¾wåÊ%%%RM'22̣ùóç(ÎG¥ßkÁÁÁ°|ĐÇ£·‡ªˆ°°°aÆÁzxxÀø©««SLÈơDÉ´k×îË—/ôæwU ÙJqà;¯_¿VSS{ñâÅădz³³………)&µ›-[¶Œ1ÂÇÇ'..®{÷î""")))†††È œÎ̉¥K‡ ̣éÓ'²|µƒÙ³g÷ëׯiÓ¦dùª† ÚÚÚẬQ@ÈơÄOhÑ¢ELLŒŒŒ …¢È̀̀üúơk¹º'¼Ûé+VÜ¿_]]ưäɓŧn'jÏ= WRRRUU…ëëÓ§ÏË—/±p̀˜1óæÍ³±±¡Ơ\‚àÉơ½}û–\_Ơáïïß¾}{ßùđáC~~~ÿ₫ư?}ú´wï̃uëÖ‘ë«ƯL<Ù̉̉rÛ¶m;v́¸víÚđáĂO:…ṭäÉ‹/Î=;}útRM¤  ÀĐĐĐÑÑqèĐ¡NNNN`` \ßÖ­[ííí{ơêEá;ƒ êܹsaaáÊ•+i₫Cr}Á+0$/_¾ä}lt¢®ONNâÀw¼¼¼ºté"%%•••5pàÀœœœû÷ï<˜"S+ˆlӦ̀¢¢¢F%((رcÇFijj8qÂÖÖvêÔ©222Ô­¥&2~üø¹sç:;;=ÆaªéäææBQøøø >üêƠ«₫À₫8bhhxæ̀mmm ¹>‚à(§èèhCƠB?vV~~~́8¨­[·ŒŒ\±bÅÖ­[ÉơƠJ̃¾}»sçÎ>X[[4H€™ƒøû÷ï#FŒ¸råʹs猌ŒbccÛ·oö́YhMX bÇ)))»wïFA¾wï¤F“ŸŸ/%%uụ̀å7n(((¨ªªRLø[MMMÔr®®®¨úBCC%%%),äú¢tëÖíÎ;‡ªĂßßñâžăååÅÎÈ'##¸páB df]]] Nm¢°°P]]ƯÉÉIDDäôéÓ°̣́‚‚”¬₫ưû=ztâĉS§N}ÿ₫½´´ô¡C‡ôơơ)n5{{{ơׯ_ïÛ·¯gÏđ “]TQ---{ơêehh˜@1á7n<₫|@@À5kđ999™bB® Ê’’´2Å¡HMMMLLTSS£Pđ(₫ĐĐĐ‘#G 0s=?₫öïß¿jƠ*r}µŒ!C†À̉kjj"Å“’’F……‚‚‚È]»v•’’ºvíÚTTTΜ9óîƯ;(Îàà`9$ª-&&&±±±ø ×çééI1©¹dddẠ̀:u 5°––ÖöíÛ5jDa©<ëׯ‡Hó÷÷Ÿ6mZ—.]®\¹B]rÈơDQUUE£K“7TW¯^íÛ·/Åï\¿~]^^ª¡wï̃GŘÀsçέY³fï̃½¢ÚÁèÑ£7nÜ(ÀLÛ0₫|vù_ươưûw|X¾|9’ÛÀÀ€6 &000ĐÔÔ5›¯¯/°Úâàà°té̉„„!!!ccc==½nƯºQXj(ááájjjOŸ>E\»vmăÆ—-[Fa©$Û¶m;v́Øưû÷wîÜ9hĐ ¦M›̉#>r}Q¹ $©ôäÉ¡*¸}û6u¶®"ÉÈy¦7`ÀÎè—/_nÙ²å̀™3»víJQªéL›6M\\üàÁƒøœ””äêêjggÇq}ùùùø0ỉ¤ 6|hĐ »»û¥K—̃½{Ga©0™™™úúú đ{›6mZ·nÚµ€€€-ZPpÈơDeéÙ³çÇÉơU<°¶¶¦8đ({ös›6mDDDBCCååå!"ï̃½‹̀œ˜˜Hs=×h4víÚÅ~]¼x±‰‰ 'Máú ØÏ›7o^µj•ŸŸl^ll¬”””››öMNN>|xÆ ¯_¿Nñ¬>Œ;fư:tèĐ+W®ĐË&5”Aeeeö5Ư°°0ƒ¸¸8LÅ€g8qâœ9s\\\đuï̃½€Ø½{7‡\AđMMMgggß±··—••mƯº5…‚¿@#vêÔ‰{Ä^½z¡™„ëc?›™™ 0ÀÇLJbUC¥d·nƯV®\9õ}úó?bÄÔljjj_¾|±´´422ẓ䉴´4ù·p˜!,,Œă víÚ½{ñâE NÍ"99YIIiáÂ…œb"##UUUaùh.̃A½„†, Ơ×ăǘw;544êÖ­kooîÜ9 ¹>‚à?PW¢¢¢₫₫₫}úô¡hđ‹ÔÔÔGƯ¾}›BÁ_̃½{càááÁ½pâĉëÖ­ă^baa1cÆ ´©'O¤ Ơˆ®®®)))0oœ…û÷ïỏ¤ R³ˆëËËËă|íÙ³',’ûÔ©ŚøFccă!C†¸»»ăë"†;w™™! µk×¢ưËøúơ+LR'&&†³ĐÁÁe3**âS³7n\Ë–-‘p0'́???]]ƯØØX”SÏOyóæÍܹs£££­­­õ¼É.trr>}:ª,È ¹>‚¨Z´´´®^½J®lÙ²ÅÈȈº–ñơë×sräĐ¼ysiié[·néééq9s[3†Ó²Ơ–¸¸887›"=X .·oߘ˜Xdû"®XZZvé̉^ª”]ŕرààà¦M›>|øPQQK60¬\¹̣Ê•+?æ~I˜¨"ÆûùóçW¯^q÷Ü»sçÎâÅ‹ÙÎ`DMạäÉÏ=óññávw;wî´··GsÿRCçôéÓfff¨£?₫àÁva||üèÑ£¿ÿ~ăÆ Ÿ“\Aü"àO–,Y²oß> _(,,DÏ®€àIII°p)))ÅWAë_ºt‰Ûơ 0ï‚BåkhhШƠ™)S¦4kÖ́ăÇŇô4hŒ\ƒ ~êú€———¬¬¬––œ»DYY¹ERR̉ÊÊ ₫Ÿ]x€Ơ¦­­-Ç%üÅÜÜüĐ¡C̃̃̃222ÜËçÍ›ËG?ỢóóÛ·oŸ‘‘‘ **ʽjđàÁ:u‚¤(•H``à5k^¼xfÈÄÄdæ̀™œ†lÆŒˆÛÙ³gƒ‚‚(Päúâ—2tèĐÔÔÔçÏŸ+((P4*©©éèÑ£[µjE¡à/sçÎ]¹r%çÍ"nЦBÀoùÉyçÎnnnÍ›7‡ £V+9‚̣÷÷ïĐ¡Cñµêêê‹/†²,¡å*îúPânܸ!''÷₫ư{D~øđáCxx8RÿôéÓœßV3DFFv́رoß¾çÏŸ/1_i”}øđ!jÂ"«à´íííăăă)JƠŸääd”Aø:Xô"¥ƒíËyNp@m¶yóf??¿Y³fmÚ´é₫ưûœU .D0mmm©÷¹>‚øèëë󯯡³]•!##ăøñă$køÚQ4¨¥ Đ"..®ªªjmm½`Á‚â?j@ÜwëÖíØ±cô`§pêÔ©Ù³gGGG/Y²¤Ä &MÔ£GÎ=E¨W¯^q×'À¼¬É¥¢¢̣ôéSîåH}HX ‹–-[úøøtîÜ™]̃µkW\CaaáÆQû™››s%Ê Âh``àâậñăÇ 6”ØÊÔ¯_?$$„bUͱ´´433Û¾}{xxxñµĂ‡¯S§Njj*Íö¨Í>üåËccă+V°ó.pÖ¢ÚÙ±c'DƠÓÓ“"F® ~?kÖ¬‘——'×WyŒŒŒ U7nL¡à/'Nâh­çöíÛ&&&rrrçÏŸÿøñcÙĂê§¥¥ÅÄÄüª¶9rdï̃½(eÖÖÖeÿFé́́˃€†Ú®A}G}||6nÜøôéÓ9sæàCpp0ï?Đ@R+((?~›ÊÅo!>>~ß¾}.\’’Z²dÉÔ©SÇÏ˰ëÈíhÅPñÖ¬»NOOwvvvss{üøñ»wïĐjhhh >\KK«lĂ–——çää„ ^WTTT[[{̉¤I}úô¡¼D® ₫ >|(##3`À€æÍ›S4ÊfÔ¨QmÛ¶%ËÇ_<== ¢¢¢*<¯ú“'OÚµk§¦¦†¿¼ïåúùóçÜÜ\h…ØÚÚ1‚’£^^^fffPË—/_½z5ʲG…¡̣ööæLW.DDD233Ë»< ̀D!´Ư₫ưûj́±ÁFÖẴl̃¼¹Œ¹›6mÊư¶Xrr2L „ø§OŸ`á¦pöê“”¾ÈäH ˜Uvª1ráúơëóçχ¦ Q~=ph–––È]HGTY+W®<̀Àăî¾¾¾È̀»îƠ|2Ü êdT́¸TTÑ ªªª4hĐD†2v/((@›róæM¼¸¸8eeé22¹>‚ø£ÙCư¨¤¤KñK ¬¬́–-[h`w₫bbḅüù󤤤ʤqăÆP ÈĂhăáʵo½zơØ·C?|øUñîƯ;kkë²'¨Ư@3;wjÖeñâÅđ0~>©©)¤*Rç§Ă”¨¨hÙÓ?”†°°p@@Àׯ_{ö́‰û æñ1cÿ₫ưYe\XXhcc³cÇ&M¬[·n̉¤Ié%&&V¤Ë››Û©S§î̃½+..®«« ±₫‹_*¾uë–••Ôó€Ö¯_¿¡¼aŸ!t8Z%‹*Á;È<§OŸvuumƯº5rüöv†rÙ§½{÷ZXXhhh;v,44´úÜƯ›7o=zäççY¿~ưnƯºÁ¡¡è <˜û‰z ºvrrrww÷÷÷ÏÊÊBáBƠ­¯¯?˜²A® J`Đ AhPç¾|ù’¢Q—iÓ¦ÁœHHHP4øÅçÏŸ{ôèqèĐ¡²çjăyyyggç:@üt€Aâzzz 0]DÆÿàÁƒU ÂO!pe°ýˆk×®ÉP™æçç£È@̉yxx˜››Ẉ̣àꑬ̃½Q£FOŸ>Å%7.**Í'<î+((8ưjgg·gÏÄÄÄéÓ§Ă·jƠª́Ư‡2p/A¾ºxñ"B‘‘¡®®>zôhˆT~+›––væ̀™K—.¡&×̉̉211Ñc¨ØÑà{gÏ™™‰ ¦)jªú§–{÷î]¹r‘åtttfÍU<óđȹsçvîÜYXXˆ¼jÆđëï(==Å? E/<<<::ŰK—.¨óQÉÀ…vbà¥Ap|}}Q“ ÂÑrrrQv´µµa1P"ÈơD9˜f6¤$µ¤¤dDDDëÖ­+|qqq{{{öó©S§6n܈cB?Ơá®]»{6₫|CCC~ éäååedd4lذóçÏó+qáú¾~ưZÙæ_HÈÑÑ‘ƠÄË–-[¹re‰ăø• ÷Ûe Ë—/‡Åƒ \°`A‘y JdC}ŒKrrrzüø1-²1´>Ü ´´tÙ‡BLà”HGèñăÇĂ*,e¨L ,--·mÛ¦  pâĉÀÀ@ª¬ø,ôơë×ï̃½ÚµkW¸Ô‡: ;`FF†………••UÆ ‘«Ù®ªîúọ̣́à¾BBB^¼xGơñăÇ-Z ÊÉÉÁ’¡VA₫)—kE)xôèr2Œ"‚;‚ETQQ»ĂAú3PÎ!Èơ߀VC­º;,,Œj5kÖ@Qñ"æÙ¹sçßÿííí]ƒÊËËGGGC.œ>}/ôf10ƒ€C ;v¬mÛ¶ëׯ¯YưC //^¼èêê*"";1õ¼Ÿö)/ï̃½CL²²²ØÉù{ư°U…ü:«‰q©“'OvssƒV®ØXV’’’Üă—ÂîÛ··Ÿ’’2räÈÙ³g—=‚(·§-.Ó QF\\\ØI&¡æaÿúë¯÷ïßúô©OŸ>HÇI“&Ía¨|L‡uëÖ}øđÁØØ˜đ…̀̀̀Û·oß»w~Ù£GÔÓÓƒ±‡5B}R™ƒĂđĂŸ#o ³!íxyµ́ †‹{₫ü9₫¾|ùu);u**½;¢^íÖ­îBII©7C¹Ë:\sdd$;h3jleeeUUUÄD—² A® ~¨ÇQËËÊÊBÿÉØ̀̀̀lll}z~~₫©S§ªî¹̉‘¿ÇlĐ ÛŸ399‰µ}ûv &p'g‰§§ç… `¶ tttÆ?tèĐŸ>ÿdÇ wwwøđ!®}çv̀˜1œMë°öñăÇđ«0ÛíÚµĂ6Í0™ă}:0”Ư3– ÈơÄ/ETTMÂ+PSÔâùˆ‹q6₫ü»wï¢ñ̃±ce¾đơëWèˆ77·Ư»wÿ“̃ºu "LLL ›ïcsCXs?+c_¯‚íAÁÑÖÖ9sæ/x4;;ÛĂĂẵ½{̃̃̃tRRRZZZ£G8p /ó2W2Aalmm‡ †₫üyUß,ä)Ÿơ™̃Œ5óp̣»víRTT„BXÉ#‘²ÛÎÎîÎ;ĐǸ©Ö­[£ÎIHH€h–——‡mCH±KÙcĐË2”hP“’’à}}}ƒ‚‚ ¿‘RĐñƯ»wǽôîƯûÇçÎC¹À)LMMÙé ©‚â1Ïûøø tlhh(̉ UQQéß¿ÿ!Cº3˜˜˜đëtqqqÈ'NNNOŸ>EÆ@U3mÚ´e Hbø7Ø*OOOTªØùV3--­I“&ÈQmÛ¶EmбcÇÎ;#Ÿào7†] ̀¾Æ‰́÷LjӉˆˆà,8²œœœ‚‚‚’’¬c…{!¹>‚øÍË{ÆæÍ›ë30s ¢6Ă-8;;ăÖàOÆÛ®];ø\̀Ê•+á²³³‘£PÏă\HYÈ÷Ÿv&¬•äççĂÛ°‘(hH;öưC4 ưúơCªi3đëŒyyyï̃½ƒmcưܾâ2êƠ«‡UuêÔG4hüJªP\O§N3¨ªªV¦,¿|ù÷÷ À©qjIIÉöíÛăDptÈ«=zôhÓ¦ .Ζ3‚\AÔf5j„ö $$ÍO%ß}ª¶ÀÙNŸ>²́Ê•+h)Ñù‚››Û´iÓ KNŸ>ư ÄzÙ°/Ư¼~ưúáÇ¿¦‹¦çkaa¡»»»½½ư½{÷¾}û%+8jÔ(ÎX£ñññt'T‚‚´¦¦¦&ÂÈÑñ¿˜ĐĐĐ-[¶àÂ`B`×1ü–D„EF*((øeM5ỉä k̃víÚeee%""o?õ<ÎËlW%¨öÈÈÈôôtXö•KX…! eŸ«E‹%>vCơ‹àĂí"‡ÈÊÊâ˜p¡Hâ?a *»pạ́.nüøñS§N5fà̃L¡́_‚ƒƒÙ]0pIIIĐưœn]È™ÊÊÊütô׃Ji†›Bª¡uƒ·aUávTTTz2”ë°iiiïß¿‡sCêàŒÓ‡>3¤¤¤ Ep¤̉DFyOHH@Cƒ2̃¸qcvJí¹sçVæîP4^3¼}ûw»Ăơ|üøU Î.!!çoœ /‡DÄWàf ‚\AÔ~Đ6@ ¥Dûqøđá*́—‘™™ éæêê;rpp Tæ ¶¶¶k×®…¥>†ú©V×víÚ5üíÓ§$́£G ƒ~åÙÛ·oỌ́́Ù³û æææ…†Đjƒ0x#G„ÍÀÂß%èÅ}ûöÙÙÙA¡¢€À‡°q«@:ĂTÅ@¥‘ŸŸÇ…$ƒ[€ç„²?räÈƠ«WQ%"Ơºwï¾bÅ #†ª¸† Y+9qâÄùóç_¼xG%-[¶TUUE:tè’’ReN*..ÎË«z°:¡¡¡p†0°1ø Ï#,,ܶmÛ:°Oà©zôèQ¥₫9qˆˆˆÀeÀó$''·nƯ}¿‘3ôˆwÿºÂÂBÔQpG°a¸ww÷OŸ>Á)¡~@â²íû÷ï¸x4|Í›7g›JG;†& ÅăĂxß»wv=((Ι5ÏđáĂa/˾́́löíMÖ¼ÅÅÅá X\U^^ûô팇úq†CÁåU`l‚ ×GDÉÈÊÊ¢5}úô)ÔY³fíÚµ«&̃Ñ9sæ@%=z”íÉCTh•+W˜˜˜lÙ²…/Ă V₫₫₫ø «¿mÛ¶‹/Vxœôâ@)>ỵ„}æ {™á«  Đ«W/555¶/ÖO'§bÇâwuuơöö†ÚëÙ³çàÁƒuuu«hjoø”ØàéÓ§ĂéưÍP Ó¿®̣ơ‹{èy¨ghh¤¼¼<¬‚ /bÚ××VĐÙÙ6uăŒ3*6]di£|ÁE _ÁÆÀ<Îe(q{ÜÈ£GpUØ·[ˆ STTÄôïß¿o–;2/#.ÂÂ3s&»•““Ăö@ƒ=C̀Q4`ùzơ걥邽ؾdHw˜ŸÜÜ\äRœ™v«aÆ™™™¸_öñ|"…0r°m8‚Àñl0ưL8©äT¦5ÿG¨Qêảpa(¤0̃0̀È<Í5ëÛ·/çÉ ½½=.ͨü®ƒ;BX _[“g –… ÈơÄo”(®îƯ»C~]¿~½FŒơơ)VPPpúôé»wïR:VÈ)ˆNè°cÇÙ2Ô ‹gûnÁB"cđ2L+¤³ŸŸû’”4Ä«¨¨(Ät=”••ûơë‡1’¡’×Ö¨Q£‡æĂIƯƯƯ¡w!ß¡₫ơôôÊûÂ*`eeåææơ‹>ỉ¤ Ơ?Ơ ‘¡¡yü%‚N044f‰©-!!Á¾ÑÇ(ˆÛïĂPù Seà|…Ù€m†ÄGaß±„åàñPÈ]́4n0<¸Tø}}}x ä1̃hC®6`(q-jo8”ߨÈÔÔTÔäˆ ‚+,,Äí°SSKAäú¢fĂNè———§­­îííÍ₫@[Ưđđđ˜={6ă .ü‚aÿ,--7mÚ4hĐ kkë/^Ôè{âÿøñ#20T5¼ÖáÇ9¯óAáAƠqL’’’ĂïºZv¾µk×r/„&¾yóæ;w>|˜˜˜ˆK…O3f ÷+g®®®G…Ї0511ÑƠƠ­¡3  ĂơeffÂÑq¦‡†£ƒoiÓ¦¬¬,â/ßKP|&ô_´¾û†sÛ¶mgÏ……˜Œ‹‹C)ÀeHJJJIIq†$Áyá!‘UbØ×&?|ø€»À-ÀÂá:7ǹÚ<ÜîåEOO¹¨³A® j uëÖuwwgׄXñôôäï{MÏĐĐP\\ÜÁÁR€Rª’ ‰wíÚµoß¾E‹mƯºµæNß ‡\úäÉ(ZˆEä[999˜SSS(<ü …äeơ_R{ ÷Â7õ@­¢l åçç£lÂéYYYAWÿ;úúơ«¿¿?çEÙ¨¨(Ö~'%%¥¤¤ Úùéx$Ơ 8M›6éèè\¼x5̉‰'`_aœ6m¢ä́́ wTugg§…`Çaû°Áê°ïk°†íÛ·o 6ÄŰoB²¯A—Μ9SBBÛ¼zơ E…#ÔaÈÉÉ…£?~}îܹünU¼7;Đ>Ă{ÀHÀö¨««Ă„W¬$œ̀—/_ªgZDFFîÛ·CNNÎÈÈz+÷6H,vxFÎC*dc˜·̀̀̀›7o>xđ€}ĂĂĐĐ;tè¿G§ÈP̃«B?₫ÜÇÇ•3|l̉ÆI^^ơØ=zôĐa¨|à9¹ËƯçÏŸÙ¹V¬X{<ï——×°aCd6vhÜ ̀L¦CeÎ?₫êƠ«¡¡¡¸;Ü\t‘ÙSxˆBB́|ë?Í̃¬UfçÀW”/Üؾ}û"·×ˆïA® ˆ ‚Æ~̃¼y»wï†Ôø :"rÿ₫ưƠm€ dúرc!ÔªÏUùúú̃¸qĂĂĂ"RZZ~LWWoßOW¯^=Vggg111???ˆ¹ê èæM›6YYY!,ÛéưÔâQüñññ(¹́ăzÈ÷åË—s¦/§OŸÂ:®CæöêƠ ©3dȈø9 |¼÷-Z¤¤¤T“„HKKƒ©»páä>´¾¸¸8ª –-["‹®]»öÀđºRRR¬sC¾Å_v₫^úN.×ÜÜœ{¾³-’yù6++«[·nđTđ<¬]äăT«0¥Hköư[ØWÔù́ˆ&²²²;^¤¤diÏlYpµ×¯_ß²e êp\¡¶¶6Ü2e ×pêÔ)́‡;E|Ǿ ~YKÆWFö@­¿‹LLLlß¾=‚‚DA›E ÈơDmÀÆÆ†ØÊM]¶dذa7n¬>B°FóîƯ;蘣G&%%ưÆËÈÈȸ|ụ̀µk× z¡Y-XdŒÄ_Ăˆ# ¹¡̉à‹v́Øñ{S';;ÛÄÄäæÍ›p»ªâ,mÚ´ÙĂÀ~MHHX¶lŒM§NÖ­[W¿~}xo¸ Øeeez===ö)ͯ™ºôÛ·oUư ÑÙ ̃¼yĂ¹¦Y³fL¾b9œ́ g÷ª ÿ₫AAAl̉Ă<;88 ®Ă5Ü»wV?66‰‚B1hĐ ¡C‡̣kœ¡ÂÂÂ/^À¨°C¹À¥§§Ă»²ß!¡‘î]ºtáẽùŸ̉—–³$??9ÜÎÎÎÍÍ ;v́¼yóXˆûE¨±ªiÓ¦0x ,XÅPm«Ó&M g(q-*”#ooo„:<<\XX¾)¨"&¿¦{$Aë#‚?ốÙ3..NZZí4ßG̉ƒ ‚‡¨¶/Ö,bbb 5̀̀̀ ù~ñ© nƯºuêÔ©GÉÉÉéëëO:•ïψ*Œ   äïêƠ«‘‡¡̉~Ë5°S nذáWN‘}₫üyHpè~¶C”¼¼üưû÷=<<êÖ­{îÜ9(̣_ qqqvF̣ đùóg$%§¿̣<¼\óæÍÛ·oÏ™,÷ˆÏ¬á΢ûà¸öîƯûÓîd|a¿zơêƯ»wƒƒƒq…đ'NœĐÔÔ\¹r%ÑÅ‹+́ñ233Ÿ‚¨¦ˆ¢Ñ’’’:zô(wo¢Jơ³uëÖ°°0~u@úĂ5jTưúơ!₫~Íé²²²N< ÷̣₫ư{ˆyóæc¨Î!‚âÇC~Á0ü²“ÆÇÇkkkĂiØÛÛ/[¶¬JÏG„¼rå ¼ĐĐ¡C ¡¼Í¸7ƒ#Bz 0Ïd8°{÷n555”îª{_11±ôôô¯ ¦.222::º^½źÈH5x9×:h3đx.Ø Ü¬¿¿?ns-CƯîÏÁÁÁÛÛ >ZCCc=C‘á·ñ7""6µG—/_.qÊÎÀ* 6†¹UVVVQQAzÁ;•ưâåoäË—/Û¶mĂ=âö7lØPâ›^^^–––...ØfƠªU¿krªCRRrC‘åï̃½srrrwwG²6hĐVp8Jäú¢ZP§N(0H™Æó¥yîÛ·/{måyö́Ù€>|XƠ9:;;Ă8…„„Lœ8Æ„¡fÅjΜ9uëÖí̉¥Ë/ºº̣·ê¦CDZ9räÖ­[°FÓ¦M›>}ú:^Q!¡• ¬éß¿?<|cIđŒŒ _ø:|iÙ²e÷îƯÙw{÷î 4‚¡̣ç‚_222={ö¬££#ßïåëׯ.\°³³Ă½àÊ P(f3đ~99¹W¯^,X°‰ˆ8„††¢²íÓ§|RG®đ€F¿˜¼¼tèĐÓ§Oó}¤Êwï̃™››_ºt †a₫üùđ8 _Œúøø°~IWWÅgáe n ß \aí={ ;ª  Đ«W¯¾}ûâ/çñr̀p‰ÓT\À²eË`Æ ¡=<<øxäçÏŸ=zÔÁÁ¡U«V¬Á^ÈP®ƒ ăÁƯ¹¸¸ Ô(\¨aíP¦N0 A>|… Ơ”̉×:gθkX¾Ÿj̣Œîtö+‚³qăFdU«V­X±¢fͼR17o^dD«ÂÂBT#ÈÉh+5j¤¯¯?wîÜj5Aë#ˆÚ „““är\\\Å¡¡Đ¢E gåÑ̉̉‚’ö÷÷çïaÏœ9Ơ%))¹eË–¥ µ,n+W®ŒŒŒ„Zå{ÿºđđpMMÍ#Gđ±kå;w¶mÛƒ †>ÊPuÁ«Á˜>i7¾y󦸸8÷6ÁÁÁ÷îƯ{ôè>äääÈËË#¢h0€Ç{„……+ܵ¯D`2aŸFư7CåÁNá ¤¤4kÖ,###wOOO¿~ưú7%hz¶O—¶¶vÏ­LMMp˜çêü껟Ÿß”)S`Ú˜|₫¼ÿ₫Ç“¼nƯº¿₫úËÊʪ¼“7Ôh‹Œµ“››{‘9 !‚E¬}# ‚\ATS h'L˜0ỵd´= #GŒ¡HV.]º@ –ë²2ˆ7õÓ§Oׯ_obb2cƌڽ'N@Í_ºt‰_¯Ïååå±Ă‡đeèÔÛ·o#q³³³W¯^taøơ!’––¶°°pvvîƯ»wtt´„„¬ je†Êô‘«_¿>¿†ñ„u_³fÍÙ³gQ·T2a-<($$„˜/Z´è/ûFEE>}/!!AMMm̀˜1†††3Ê{æææ{÷î…FÀ¯\¹R­JÍ›7oÆ‹ çơë×¿àŒœ©)“““Q)9::¢‚ªÎc~VơêƠ›̀ÀYâééiiiéææ¦¢¢‚˜đe¶F‚ ×GÄ́ß¿_FFÆƯƯ½\C~‡‡‡£M‚v$ËÇ:wî¼eËnP1îß¿+..t÷îƯ?*†...pÎP±•Gbôùóç•yˆ ç§°lÙ2ؘ ̀~^a¯_¿ àçç'Àt»6lØèÑ£2°ƒ̣GDD`¡°°0_fV„„Í̀̀¬äA.^¼¸téR ¿Iûơë×íÛ·Ă7öèÑcóæÍK~ºŒ=Ê ,*4ØàI“&éëëï`àKr zyy…„„°¯W”÷=[¾SPP0wîÜ;wî\¸p¡ê:©– Bqæ̀æµóµk×?~I¿uëÖ?¹`‹'û¹°°đ̣åˇzûö-2äÆé…‚\A|-îüùó!RyÜ>--MMM-00†ëä ½zơ‚6­Œåóññ™2e””t3ïéXË€pD*|ˆ­>}ú¨««øđ¡bG€Ư‚ÍCZØØØ¸ººVơ]Ăçà~õ¼ùđáĂfÍ 0înĈÅG˜(‚œœ\\\\zzº‚‚BçÎqÙ•¹ŒºuëVæ Ï“'Oâ*đdIvôèÑ]»v!æû÷ï7g({—ĐĐP¶S¼ j¿rS1zö́™œœ¬££Ó´iSúßRF`ơuuuQáàªÉ|BBB́\”°Hä8đß2IµBPPĐˆưúæÍ›Å‹»¸¸Œ3fûöí¿lx^‚ ×Gµ¡C‡v́ØÑ‚Ç_ªªªÖÖÖ:u¢ĐUMMM´èØ÷óçÏG)))wî܉¦`²zÈÛÛ»bc ÅÆÆ***>xđ½¼û>}zƠªUúúú(Gø[E7Ÿvîܹ7n¼|ùîÔ{äŒ̣̉¸qăçÏŸĂ@e.X°ÀÊʪbÇ©W¯^vvvv„C₫?{ölyŸïÅÄÄà‚ƒƒƒ÷íÛ·˜¡Œăăăa/\¸Đ¶mÛ%K–ÀégøơYÂỮ̃^RṚơë×¢¢¢¿́¼nnn&L€×}ûöm5•€BBlOÈÄÄD…fÍ9::̉‹,hmí́́ØÏˆÏ¤I“œçλuëVzƯ† ×GDù8r䈖–/®oÖ¬YØ‚‚Vyvï̃~đàẠ́îø÷ßoÙ²B‡ÂÈÍ̃½{—/_P̃¡ÅW®\ùéÓ§gZ+ øí™3gjkkĂ/U ÓWÙdddÀÁ«„……ơíÛRånO$&&VXXÓÛªU«;wV`*đúơëçåå•kœ7¥¤¤ÏÉû^đäˆ3̀ÛO¥^ºt ™áóçÏ3f̀X±bÅ!†êEǯ¡¡Ñ®]»û÷ïWà÷…̣W¯¨¨xóæÍrÅù7̉ºuk\3>́رăđáĂW¯^­}³ÿU2>ÈÛ́gd!äí̀̀̀ăÇWÏÉ ‚\AT;º1;v̀ØØ¸ŒÍÜƯƯ=<~ü·²²âă´¿3x{111ssó üQëÓCQ`¦P8q"ê½-[¶PÓ@ë#â'¬ZµjơêƠeKL¯ßƠ#¥ö¡§§ ËắUÉÉÉ=zôpqq¡Ñ½Ëfụ̀å»wïæƯơíÚµëÎ;¬xú)öööóçÏ?xđà“'O*©đ™0œ—.]jÙ²%<̃¬Y³3üÆè-Z´h̃¼yJJJ¼®l ÓÅăÆ†††ß¿çåÑSbbâ˜1c²²²nß¾]ÙƒI^¿~}ƒ 7Î$ơƠaaá>Àô~ûö z¿OKKSVV2eJMy¾WÚÚÚ¸ 8XÔ{666sçÎ¥*®8ââấ+ ùùù¦¦¦'Nœ@È—‚\AÔBFŒabb‚ÆUMM­Ä 6lØ€U4;_ؼy³¼¼ü¨Q£~ºeAAAÇJqă…… ™™Á$HIIưtc˜.'''^,Ǜ™3ƯƯƯï̃½›’’Rák+,,<{ö́¡C‡àgp@è³ßnóJ´paaa–––`DD/c¢Ö«Wró§›eddÈÊÊ9rä§]a8-,,=êëë[|-Ö488xơêƠ°y5ô…sؘ·oߢt#zăÆă×açÏŸY›æCGÓƒ²ăăă#&&ṿäIî¥T%-$Äh„²6ỉ$3gÎÀ9Sdr}Aü€M‰®/77Z­ÚP³È̀̀„Ùx÷îƯOư––all,=ß+oN†³‚m({³Û·o#W#¼eû4íƠ«W̃̃̃["++ " &JZZzÆ 3ª -Z±(!!ñđáCEEÅŸjÍœœœ²·‰RQQ èܹsiÛ¤§§ëèè ¶qssÛ¼ys‘µ°4 6‚ ₫ÅØØ¸wï̃%®Z³f‘‘MÄ/=½`Á11±2¶AÀoƯºeCítÅ" óP¶ë‹‰‰™2eJÙSĂ=ỵF¥qăÆåº€üüü rrr»víÚ̀Pă±˜[X²dÉÂ… ËØ²nƯºe?ëọ̣́‚y₫đáCiOß¼y3`ÀT2>>>EV988 ¼`­••ƠË—/kY^E@>} ·רQ£ gçÎvvvŸ?®ơ¿-gĐ̉̉‚ë£?å—ÎÇ̀̀̀ÚÚÍJi¯ó¹>‚øƒ’’‚¹ÿ~‘ÑÀ mmm_½zE!ª•Ç̀̀lúôéđ$%®]¸p!Dpyç.#£««{åÊ•̉\^‰Ư]55µ«W¯&&&̣r¢ÂÂBh)”‘ &À¨³ƒÎ×2àŸG½|ụ̀̉&?*íYœŒÁû÷ï‹çù¤¤¤-Z,Z´ˆ;Ô™™™°ˆH‡²_¾­M̀™3ÇƯƯ}Ưºu»wï.×0Û;v´¶¶®º±@«-h§’““UTTPØ·mÛF•/Œ5*%%%88XPPđرce?Ă'r}Q›t(>kßéÓ§÷íÛGÁá çÏŸ/ÑdddtíÚuëÖ­)›à¦v¢ÄU^^^PØ%ÎÓ ¯¯ŸÎËȇPÛË–-³³³Û²eËF†ÚOGGG--­M›6•(¯ëÔ©S¢ëûøñ#ö‚…+bù`•‡ú×_}ÿ₫óFâƒà÷Œoß¾ưæØ .4õ|Ö¬Yeô{,—/_:uêäææÖ«W¯?¶¤­ZµJMMíñăÇTïñˆ²²2Ê ŸŸŸ˜˜˜¥¥¥‘‘Å„ ×Gb±±±¾œL!!!iii#FŒ àT[[[EEÅöíÛYîëë«««ûêƠ+qqq_½ÈÂăÇ8pàÓ§OuêÔ¡ñ%%¥;wî øáÇ;v́8dÈ"ªñĉ?~,c°{öPÀÜÜ.åÏ ©¯¯/´uŸ>} 8‰¬[PPPdă±cÇN:uàÀœ%¹¹¹ØQ__ŸóJçâÅ‹===á¥)ÇN™2åĐ¡C—.]úéụ̈éééĐèPêdùXP¢ï̃½+))Ic{– x¿qăÆ¥¤¤xxxĐxѹ>‚øƒèׯ;àǴ^¼x‘ÂRy¾~ư„Ør/dz¼~ưâĂw444>|XÄơíØ±£È́|Æ ë̃½{iƒCfeeÁ¥ÄÄÄ8::&%%ưá!­W¯ŒŸªªê§OŸ„„₫kµá–¿ÿν¥­­-\ô7¸mó́Ù³!Ê›6m¯Ë–-C`ÿ₫ûoÊ«I elSXX(++‹x"ßRÄ8(**†‡‡wé̉%,,¬M›6ráàà€Ûºukkkë1cÆP@r}ñG ¢¢ÅÆ~JKKƒÈ£°TóçÏĂQs/Y¿~}pp°»»;§~¿(̉ƯîđáĂÊÊÊÜư¦äååç̀™ûQ|÷ˆˆˆ!C†èééA^Óïßà7Œ ñ¼É½œûY_nnî+ ¾9K/^üâÅ ößåË——,ỴèÑ#¸gÔÔÔ ¼Ï=[ü¥ƒFíß¿?…«>>>(Ô±±±åm…hƠªŒŸ¡¡áéÓ§oƯºE!ÈơDíGCCĂÔÔ”ư|íÚµPLø‚££ăرc9_7mÚH–¯êĐ̉̉8qb×gggÇ~ÎËË“’’:qâDñ>«qqq222‡*{6¿?–;v¨¨¨\¼xq̣äÉÿ¶ßBBÜnêÔ©đuíÚµc¿***bË¿ÿ₫ûÇpƯÛ·oÿ“ûïưÔ ¨Ks}XƠ¢E z!¶4ºwïîää$++‹ÂKï̀W€«W¯>xđ yóæaaaô®,A® j9̉̉̉™™™ÉÉÉbbb^^^Æ £˜đ…€€€ădzŸõ¼ Ñ̀NKT¢¢¢M4va_„sqqÁ΃k99¹ưû÷±|́æææè>G++«1cÆp\Ÿ   g4—7õ¸¹¹±î}qưúơ3gÎ\ºt)Âû₫ư{̉âeƒ<¹`Áÿ>}úYnkkK¹lÔƠƠ/^¬­­|HѨƒ z₫üy—.] ( ¹>‚¨Í´k×.$$dđàÁAAAPÆÊ,""ÂNùưîƯ»éÓ§ÿ9s‘ưFdddY×£2mÚ4vy¯^½–,YÂ=^yBBBï̃½MLLx™¶€!QSS333c§ngç``W!°k×®e}`Ç-,,P“´iÓf×®]øL¡ăöÑèùóç‹,;v́Ù³gÉ6ÿ” 6x{{oƯºuóæÍ ))™˜˜ˆúùpܸq‚\AÔZ Ơºví““#''G©<îîî***́ç¡C‡^¸pÓ‚¨R:wî!Àg¹8r䪈íÛ·ĂàÁơ±Ïúbbb‚¨ ™Œ̣öö–••¥hđ…€€€̃½{ 0Ưr”””Hºư2ׄW®\‘——oܸñ™3g={öôéSv___mmíÇwëÖÂU.$%% ´{÷îơë×sơÁæ±̉tuuơôôâââ`íỌ́̉¡C WWWdNv ”÷;Ø̀LđBƯºu<8aÂ???FÅ|ơêU›6mZ¶l©¡¡A!ÈơD-fï₫ưûơëׇ?¡hđ…/^,Y²äơë×¶¶¶ôá/CNNÎÁÁ®_¿>v́Xؤg²¸I“&edd¤¦¦R *ƶmÛàîX×Çsjggcjj***|ÉÈăœăDFeooÏq}fffµ̀ÿØ»°&².:”P¡‡̃{¯̉‹HWAD( ¨ˆ]ֲëú[×XQ°+ˆ"¢̉‹‘̃;¡CÈ?!”€tB s¾÷i2̀¼™œ¹sçW?ÜƯƯoƯºº\ˆI‹gđ‰æççÅ3qöc Ơ™tñà('©PRRJh(ù̃LBHH¨ªª ü†,¾¾¾ëÖ­ù‡Ăáh4ZRṚàÁƒK“†’’xûö-a(ù@™ ÆÙ ©×ƠƠ=~übir055Ư¼ysÿ×€€Â¸Y‘#GÀgR}Sè0CBBôơơ¡´¨ ƠBPP°¦¦¦½½}ëÖ­SGNNÿøñ#== Ưf¢¢¢ ö(..nii©­­oAhh(hÛ„̃lUUUˆ¢)bÍ5₫₫₫ÂÂÂ8îÁƒvvv666VVV Ơ‘‘‘?“†‘‘QIIISSS`` ???4̣br4"‘ÈÑ×?„0&ttt\\\Ö®]±R} ›êkhhh²I‘‘! đçŸîܹbc&Á̀̀LIIụ̀åK___??¿²²2ĐªÁ;9ÄÏÔáææ¦¢¢âéé ª¾èèh666đCaa!DÎ!''¾jƠ*PW¯_¿"drسgÏñăÇ!Ơ7EœÈ`  ©R¡©©IOOâa¶ĐƯƯMOOoccQ1M€Ăá êƒ–÷$9@! ôŒ·‡¨˜"@Ơ—’’©¾©t¤»wï†x€©>È Đz¬¤ËÈÈ@<̀ °X,ƒñññ¨˜>ÎíÛ·¢‚´ ¥¥¥§§‡x˜:$%%Ó̉̉ ¦sss[[[h¸,HơA€©>ĂT***³‚ÆÆF g1qˆé‡z’yBT80¢¦fff†x˜:ddd …sHAAÁ„„(ÉHơA€©>è>qqqˆ‡YA}}=:sqqATL«…C$L ’€ŸŸ¿¶¶âTª/;;R} ƠĂ€ "aVĐ̃̃µ_̀€ê¥5ÄÉĂá ë% ˜™™;:: H>>¾̉̉Rˆêƒ|¢ JJJˆR‰DB$̀– ¡  €x˜nw‘ ©¾¹ &&&Hơ‘ p8¼¥¥â¤ú @˜hë@/(*).«©*ol¨kon¤¡¥£gd¢ƒ3Âhéhèè((¨ü.ùƒGà‹°îîntG;¶³³­µ©½¥¹ ‹adfeaGróđˆ‹‰đó.đ ¤¾©%;¯¨¼¬¬¶¦ª©¾®£­™–@Àhéièè©ih@ñ|ÿùëQ “Xt'º£ÓÙ̃ÖÜŒîh£c¹äààäà—f€Ci&†..¿¤"¿¨¤²¼¬±¾®U‡ëî¦gD€£¥Óƒ–|æÚ- €âΓW =c:ÚÀ;ĐÙÚ 3®‡`agaçàæåæă†ÂëaÆ`•WWT4Ö×´6¢¨`08d&j:ZĐ]PR^ |ª¾Àoq¸.Đ]`:;;Z[ÚZ1èv8‚$™‹›WTXPBˆƒA”ö›[\YP\ÛÔPÛŒj™‰¥…#hhi`tp̉¿Ï\ÂáºñÖÛƠC,è;ZÛ[(©¨˜@ëåààåá“àá^àÚ¸¶©ùg~qiYY}MuS}-øº¢¡‡Ă™`t ‰̉SQĂ@Æ.Ư~pïY(‘½5 ƯÙAÇ€`am”KPPPZDpûa [P^_X\YQÖT‡wª ÁtŒLô ᮩuŸSíÂtt€¶·¶t´4ƒ{ö8U$7¯„¸ 7äT!@ª„EMcKRjznÖ·–¦aq.AQN+¿0X¦Vs $ÔVçWåƠ–sđđ+**ª+É‘k`Æye5ŸS>ÿüAAEÁ+,2ÉÁ+çËÔ*ÏFuƠ~ûV[ZX–Ÿ~“’ƠÖPåå„zĐÆ$ÍÊÊÈ›Ÿ[H„K@Œ™•K,S©¹¹Ï’«Ḳ«K‹Ø¹x•)ËÑ-¼Œù­íè„´Œ́¬¯ UœüB\‚bœ‚¢ôŒœü²`™È€´̣æê’‚*Đcæ2±²Ë*(j©*- »±­=)-ăGVªºK@˜S@O,;Ÿ X¦T3•e—V•àư0x׸„•••”e¥Èù-è‡sK+?§¤ÿüNI ă‘Ḍ‹pđ ÀyÄ$yĦX9Á×””çÿU·¸Œ¬¶º*7’ƒ\Ͳ­ø5+;ók]E);èTA³d@°rK‚Ei*5£ <¿|ØÁ̉,R’£Ú} @ª̉¾3óË’b*‹ …¤$T´ødÔÀ2ç‚32 Ë*ƒ¥Kb^Ơ”øÊâ\ YÅ%º:HÖyM&ƒMËüF£%”4¤¤5—€…ä'¢¢¤â‹œvï̀Ø®ÄȸÜ/É´4tZºÚj r °Ư´¤—Ÿơ•S@XZU—‰_R‹_rf,9¥¨6'%¾qi™ÉñX,VRY“ORNFË,Óç‡åuŒ [Ê0]ñïc~¦'ÓĂ´uu)ÊÍwË,ª®‰M(̀Îà“TƠa”̉”§`‘SKÿ–¤¼ê©q•E¹b̉ Æúºó=<€©>f mèw1 ß’ăø%åd5«¯˜•˃5ckÂçÜÆæg¡÷jª–˜˜h(+Î#2ËjQõ†×”ÉëAêâéy)ˆÈª€…đ5,.-#.’WHt…¥9 #[r›ú-áĂ;&v¤’©Œæ™iÙc‚Áªbh ¼ølkø¨º¤@ÏĐXg‘2Èo •œ‘ÉÎÍ«h`*¯»,3ôpFE]°€Ÿk0˜ÁÏẸ̈³5tj«ÏÓ®*4û>₫sz|·è=”[€eæ/ƒ…KẰ–đ9»º1ưñóÖ¦zS3s%YéùÔèSƠđöí›Úª2ĐBxE¥ …fáâñ~XN ,„¯/>&f%~_n±” ˜GÏ{tJfrT+'¯’₫R9mc°̀FxÀ¦fÔä·´=ó°®¼̀ÀÄXSI ©> Œ+Dûÿ5!JQÏDH^,sçÚèf+ñÙƯơàexQöëe+äe$ç,™µM­Ï¿hj¨Ó0µU3^6§®_B,à‡Œ̉ÚÄẃH‡•+àd´‚3‡KÊøùáÍ !iEIUSg¯¹sm4´ô„`‡ë~û#%ÎÄÜr~5dô“›*ª &©¬i.2‡45 ¦d`đsHô笄úFÆúêó‚XĐGÆ¥&G¿“Q×–U±˜Úè8̉`Ö±Z ~Àb±÷Ÿ…–æ~_nc'#!2gɬjlyöôy{K£úR›E¦6sêÚ@ïđCjqUrøM.¾Ơ6Öôsuu ¢ç]U\YË̀Ejî\-\Ưß6ëîz•÷%ÉÜ̉Ze₫w¥B€TÓ‚ÂÚÇÁ<ü º&ü2szp*J* }°4·6_»u¯» ëæ²vîL_ï̉“?…+虨›ÚÎñû`ă0qđ?D~₫–û̃È̀\SEi^[2ª¹-0(¨‡••¹«÷\¾T J1u° ;;®ƯºßÑÖâæầ„`˜û$×5·=xđ€’ ¦fle±nÛ¿Za%°`1ÿÀGMµUë\]ØXæèbåeµ ÁYÙ• ̀-Ưdç2«TÔÔrÚF`ihiºt#€†æêä0wæY~ømlrŹG%}S- »9n¢,́\K7‚¾|KøhjaµHI~î\^mSëÇ)))ƠŒ–Ïñç‚’JRE ,èö¶K₫wº1ë\œ p(ƃTđøœ]₫§´_F~iÈ£@)5%«7̀/báŒLà‡Ău> ©))Úá³uvSp~8èEhEq¾è‡ç|“ÄzÿjŸđÓ3\2ë½Ó…µÁw$äæƯóNC'tJ‡~ˆ)ø–¶Ưg9 f©>&ŒïEåÏÜQP³œoeơ–‚åÙ›•…9îf¾a‡Ă=ÿ”d´Ú]FÓp₫2ÉÈ̀fîêƯÙÖṛ̀9EeU³%úóâ²k[nß  ‡3ÚËç/­Ô‘Éé?Rb7lđ@²³̀k«¬oº{;ÁÊnêä5¯I&L¬Ëø–¹Îm=×,ç¶Í-­~x›WLz̃IbPPP*˜ƒ‚CßƠ”nt_?óA6臟¼~Ÿû-ÍÈÁ]NÇx₫’‰`塽µÙïô™EÚF³ÑW^×tÿÎM Ç|̃¥é%,*9/3ÅĂĂ}¾ç"‚©>&Œº¦Ö[7…¥-æ¹̃#aØgĐ³”ƯƯëœfl>wlzVÔÛưN"JäÁ$-œ”O„öæe+lä¥çîäI4{ó̃-aœ*y€ÿ3<úCCeÙ&w·Y_¼$ùÆ{ô Ló]TƒĐ¹•[™Ÿ³ÑcìL¦jlk¸À-,1LJ"OrZKp¸îûÁÏ`0J·µ3×ë•’ñÚ`¥³¸.y0IÏ€WS]ƠñOØ®²—Ÿ¡É“íh̀Í;÷,K7‘Y)©ƒåƠ»·m¨zO7Wr]‰R} @·±É_“b WÑ$-ùưºE&+ZPu'üN®qvà›Ösu`°₫·î° ¹çu#ưH ´7‰Œ‹‹s_ç2³¢¥ÿ,zưä­ #3ùñFÏm§Ïœµ°²V’“™­ËHù^đöEđb;&F—RƠ‘S»pñ’áŒg₫ô5éSÄ{7ZrxFAA©nfÛ\_ûÏñ]Ö ̣óL·¾îÀÁ/D–~˜‰ËÂÍ')æmLl¬Ç:çé>]rVnÄË'‹W­ƒ32“™Jzfí­Í'Oÿo¹íJ9Iq¤ú @ c 1ØË×ư¥äÈ© ïW0²°[®ßơñu"ŒÊÑnº’¶}Í+ }tßĐ~=œœW>Ó6_“'Nrrq™;  áp¸[AOÁà̉̉m;“OK7wơÎN‰IJJö\ï:ó$$&%mp^ @€Td‰Ú¦Öë—ÿÓ4³eăæ_¿WÙĐ2ÿëç‹W®{{‘>KMD\Ê—Ïñæ®[)(É] đ5iæºơñ£}9áßxqÍ_HF‘xt2†”^eQ®ßé3;}¼gl´g{åê59U!¥…@²˜’שÿñÙæ=­£=Q­mW.]R3²F̣ -bU¬ó¾$_ºê¿e“;É+ó)1;#ï‡)(ÉI8‚Ù̀yËư₫ÆKMUåeI₫¼ÿwù„’– Ô‚Xí@VkIỸ÷Óç.lߺí ©>"` Î́>Ms-3—„¬²Æ"ä\ •~Ë÷t<=;₫ÂÛkGOYŒ“–†ăl¢û¿.høh@6ø§E[ÿöÔâéRïúî‹i` 8W[[·́Ó;„aĐS0…•µ·n˜8n$¿ÑD£@Tq3'—ß©3»vl#¡gü:ƠPolï¾p˜¤¢¤2vđH‰x^W²0^<‹W̉Ú¾xñ¼†ÙJVN…Ă?·8;̣ä©Ó3“̃$ùÂ… ¶¬ÈD2(Ă ́Ö9svËVo¦iéÀ/¯E\¿bâàNKÖ~QÔề\'OŸƯ¹Ư›„~8èeX[[›áªơ ÈSS/uÜ”ôæI}m½‰¡©ªmlk¿tá‚î2&6Î…C&Ÿ˜ 3;§ß©Ó;¶û@é=!Ơׯú#Î_=ñă,E¾>¸d) A×\»wm hØø»¥û8̉Î9f.|¤ÆRú¯s…[béạ̈/Œ8¢#úßŨçˆ6xư¸‹-ª¾„ß½÷nÈÎ×î5(¶k§!¿ùouơ{đËæÅ.íf‚T56Ư¸¾dơ†9*ù(Z*±8:ffœÄz[@Q×øâå+;¶‘&_B臘êrBJè…5›¸‡bé–èÎÑ4{éêeeC‹%ù€32ë­püï̉;wî˜ÖJ:@’¯\V3²XP’z8£ÁJ—Kÿ]ܱc;ÉA|­ëW¯tYP’>AyĂ‹—¯îض•$>÷©±¾°̃ÉBƒ†¹]̀Ëûôp¸®†êÔkkGc®üwYẰvAI>Yص-W_¸pi×N ê+€Tß°XùÛEc$º“¢÷+††¢églع'ÑÄ{…2¢¸´³ ́³D¢ƒè›˜×´Ê ѳŸ_ ­Íïû^pqùÿœP»´†™ ŒùyË`?±ä»}qÔ·½Ê÷ÿECÖ½ÛâÑ#ùÄ ²ùÑ|úÍ+W l\àŒ$KX\{Ö}Ơ’á₫¤·3ØoŸơxĂ%ÖçÈ#¯z> ‹Øm}rÈYº&é₫“Êå›yI䄹E$º°—olö˜j«đ‡¤ôǘïú¶Î Öœt¬×D=½ƒ`d˜ùE„q8ÜƠrê\¢ “|0,Ó4·»đߥ½;wLÉ×A’5 ü" “dFf6k‡ ÿÛ³k' çø¡1ØëW/ë,_C–™‡Æ©n,ú€—ûTưpDlJYaî2Çë‡ơ–;}|ÀÈW’•ªS½v]i±)û˜÷ñ+X9yÔŒ,₫»r•TíÂÈMỡ¾g«Á/f;÷Ÿÿ-ÚĐ¯|€̣3¡©lUP>˜O{׸‹*¶f‹=Á'W#Î*̃¹ễ-øơj3Ë7KíĐ›j Ÿ £1i‰›møE¸¨ÆW§UháEI4D :¾±¿Ù¿a·ö‘•¸_Eoơßöƒ<¾ó•W®Rc¼Y n.?îÙ¸_‹X´´ƯØdEøI¾Qq70XF]ÁÊNª ³¯/s<üô/¦†ẹ̈à₫Đ‘ö»ˆnÈ{3‡"+åûC×äçÖµ0@ÏÁÇËÑÿD LMUÏÓàv7{ûbv ŒÓœvm›çăb}ûH&ŒD]| ue¡ï"­–Mº’ʺƸˆ03×­ Ü¢t–9¾½{QRTd†W~ơ†™“›WLz!“ÏÆÅ+&«|?艓ƒƯ4’,º IfArK©h̃ ~¼ÎÑTũ z$©¢ÅÂε‰%øá×,M&?ª¤ª!1êùº…£ë.w ¹wYBdçT:¥< áá[ÈLrđ‹đJ=|úrÍÊåPÄ©¾‰€fH×–‚¡O?u¤¬¢_ôdđŸí<}ù;cÏƯ‰!| ;eÏz °8™ôzz¿N vu¸[:ôDbb@^¤—‹̀Î.Æ₫q?p>ièƠE@ zà`̀]W×»Àu†Z ‡Nî× ¯¾äNtµg\ÙE´rÎ7ÿG̉‰¾¯đ¿¹i¤Œä«ÿ÷/Í®ßî¾ĐöµĂ]îï¬ùđg?›®ÿ[Û¼ëÄ3ÈîÅǤt MÚ¤X4¡£;úsRºÆ ¥YF§r´¢í(Ѩ¸#ḰNô|T±ö0bFgÜ¿̃óUÿJF¸RƠƯ};ư£3đßßûyæ]jæ5ZY~7 º_ù›áöWo˜‘fœ•‚¾é›;ÿi¨¨ 9&™€₫éógÊfÔÔ }5 ¦j`ôø©çz—;iNqyáof.[¡‡ZTI3êé¯Ù9¤^G"yàu&¿(æù½´Œï* $X3#&%££­MT^ "ï‡o_TWV´~ñ⩪¡%ƠH£5:`4tÊzFŸ<›t"ʌܢ²¢|rZ„s̉TÓû́Ÿ“W()& ±©¾AHNNÎáhmí“Q8€¢¥"3öæÙƯORí)²á_Ç̃^¬ ×Á’ïđ§Æ#½=Wgo…÷ÜE\z{ÉÂöjøJWœ°æ?>̣,ùÄæç: Œ»iûÏ’Á;l„Î.¦ÅŸp¸_7ƒu–|jÏJ?ÛđƠ¹Áûñ$½ưwïïÊôÏ&Œ₫}ƯƠ?º̣ê^¹zOĂ[úxĂÈt›×‰?.ß?RDøzÅăsÔ± Ù•±Ûèï₫ưöƯí>ÿÎ.À–÷|<`ùW —VÏ>ë4}$Í¢ưí·i’t¹ JEíů̃„Mî™øơ;æ—́ ¸Üϯ)ßrrglÉ£÷ï"äµ æ{5%‘ï̃‘\ơA$rt:Æ‘‘¡SW} T7†ºúü°á¤ư0¨Ÿ €GDbŸ¤RΗ”Ik•O‘̣:Đó̃ïTÂß½“󄨀Tß „í±Û3æ^j×R̃{öíDž̉µVđôïO;û̃ ´*…ø¯~¾·÷Xû"†no_yî•Ă ©đ­O?ÓFMạ̀‡Öé|å® ßà:ï~ ~<¡:‰!}ñç•kưR oƯß™‡‘=鲜XŸN¹£2ÚjAĂD>?wD¥w=®è¿ơ®¯i÷”§{`ÓŸK/3áNưLư¯ø˜œÎÈÂ`ă yÍ9§óNư_;êÊr¿ÇE>:pÄåÖP;?¯¼ÆVô% ÿG}}¥AƒKƠÖ×9EƠAÀ†4MĐô~Ÿ5>IůñŸªj¸&̃̀ü9)A\I2ª~H*«ÇÆÄ̀ŒêË)*oFƠA’»¬ÜT0/YÙSœƠCŒŸÅåÍ É`áä¡£‡§ef©L-K~LÊW8# ’¢t°®ăâ˜đ¼ƒ´ä UmˆĂ~H)«GÇÄNBơ}Í-êloă‚V*ï¿HWÂḈÜiqˆ Hơ ‚¨¨h~>^fˆ‰åáEƒwgYÙÿ†¬dü#z¨†º{Îo´d6 E Ñ)3ä•ɰD§îbD=ÿµ­STfêuL|SæỌư}zß₫đ:¿ú‰LùË}ønÉ>XœLߥ:ÖHh¦́á{ƯäD&aĂÆV₫ô&~ñư "ô¾”wi$üÈ̀’&qÊ LUtĐIó­ưƒM{4:v>y½Ơ`ññ‹̣6OâRóÚ-à„%LÊj±óÀ#YÛsû$…8găΉHË'~NYnn2¡£*kQ5U¼¢RQơƒ[T&å㛦æf&bºÏ•’–&(%?§~~G]Y}Á.„˜¥¥¡E¥̉¿|!¡êKIM&ñR]MeơXzv!ÖYaé—äÀ˜ÆZT;‘ƒy<îGDF!=ưËUßwĐK),,ï@ÑZS\‹¡fáåaÙ§MÔWÖ¶6¡fhÚàŸ0ç}Đ>c1@*đˆË¥| okoŸè́¾¯éi Í,Ç̣̃Ẩ ©ééêƒTß ₫T{dP6—¾a–”Ÿá£8s-ß%5Đc¬D hEÇoÇ+§³¦pP–Äü`H"™ä»“gÓQçPȹ߸ö ̃ƯÓí{£íÿº·â?b÷Œwå_ă¿]N(övîE¸ă¶í›Ç¸̣ê]K$dí#È3,¶º¬HƯÔ–´Ơ¸ôE(vŸÎ̀ŒÖḍå7÷Ù¹VIZÓR[]ô9Øï~DÏxÜÅ^&¢ôt€ûƠ=›NÅûj2%ÿñ|ưjUXS^ÈÙí烿‚»l;í9¼V@S´áÿ‹8ÿÆJ”MLƒ—¤/M.!±̀ø0±hăË÷l.ẢäLưŸºûÉo£î²'²â/Öù`cM”<"ßhªNlö~yQ¶åꉼ›ô÷?»e¯5ÿWs¡ñn"…IJÓ¡èR}£¾ơ5nÑYS­ºn£ư›óéO¶ơ KàđÀ¢ ;¶>´º¶†¨c½2ÄuĂ-zI1n.nN$ÂJ+eÀº|ÍÑ/ú÷º¾̃ĂÁ†xÁt̀ g— ųζΓ̃9À‰GĐç7Ô}SÅC xˆ3ÄXE…mŸÀ:T çc̃Ơ˜È×;Qöß+¡ÁH#"·¨œ™•ôς@siZTÄ»ô„§ifđ­†că×ó½²o‰¦‚Pÿ»ß§íiÍ|ù>ǿo·:ÚÛ™EV]‰ ×ëKǃ+;ưÏÇ#ËÛ÷bDè_N{óôí̉ˆÂ&> ¼̀¤\5‹‰“¯¾¦j¢GU–—“jí2Z°o€ª_\¨÷? ƒiÇ`¨áp¶¦(¯ çà~cŸb!WjOemmXF‡5”äT¡°\b²Sï~açâ-+uÔôª¾ötkj䟮ï•| ¢¶{ŸUA­¡*+êQ­ÀÀ)&„èkœû%µ,‹sp£]ÏèăÀß”!7đ×íí5å5íhĐXxEy§bÙ´pFjmEU ’4$£êǹ ℳø̉᳌uÔ•UƠ4‚FÈÆ#̀JÔÓÖ̃ÖôXæ ë؈Î{yâĐ?·¥½4ÍóhưÀăMÜc¨ùxÿ]ê`hÄ>V4@çÓJOC/«¬æăäRf?Ë虘©‡[ lÜ4Ȧ©°¸…¡¦Ñ0p ˜ëPÛPå• Ơaè™ùu=aZÛ1ûl®,Í;\=ă²[Ö¢́Ÿíh¯¨Íy˜‘¼ µU]]]Z£ª²‚mÔ†÷®­±§½Où{kú¬³•¡̣Û‡%¡ü[RFloCÑQ—SXÑ£¦¡çàEÚoèáư~»‡êj¼‡!x„9érÆ´×ÔT 0à«[˜Ü}Øëê‡yJJÊ&¤újQ-tÇ̀̃£¼›j’/»/ß}ÜV́®Í½§—W†q˜‚C˜“₫«aÔ—·azâBv>$3|œ.waö9ʹ"X»»»ëQl,ÓÛC a^«><4w„7¨cƠû½ËSeÀ³ ñ=̣†N;´ö¥ÇÀ¬¶ë×U ×E‚-WŸö.öÖ'\V)·åÚ?×_HzùÉ„•Ä,í”+Ÿå™È‚u#Ơig§\đdH>)€JíNÖ¹'²ÛDZ ÔŸàÚ,ºm¼åĐ´á!ö0d7ÔÏ7[oh`@Lă"~+7°ŒµÃl=XFzM˯̣2tÆ¥¿ÉO.›’ÎXSÛ0¡ r-M(n’fΠèÄƠà€Ïs3U¿¨×ÎƯêƯ5j®TM\sú¿ø†çl{U¹aÑT×oD0³UçO·%—U×™¦dÉYgWl Â;Ÿ˜v[¶çN²©' Ω$AD‘µ‹LEt`Jl09–pTÿë>—ăƒRË^;]½[´·µx¿Rèn¥{ :©¶ñđĂ®·u.JÁμÇ{:4m Ôy_]îé·>—zÔ~’£4,,Ơuu$Q}5uă'yüY| ÙV9ÿႸÄGÏ ][‡cëlEé{iW;²1ä^€C½¢~_{è:¾E5ûÊßÜS8 /¿Ă+;'–…£fª/‰ía»}Ä÷Œ¯¯`äƠµµ“V}uµ#úáqÑHÑú 'ÿĐ`+Dđ2FNZ²̀¥Q—̃á‡P̉;^?đ5lÏ Dơ­µ€’Àè/=ß}Ưƒ=Œ€–¹̣ê-áë₫·uöô Ûn;̉ö‰èÚ¼ơ]¶åQwŸ—Œéÿ(©èáˆún䦷6¢Ç3(qˆwÅ1H*ˆø3Tx‘øJđwƯ³çŸßMÏJz³ˆơ¸\â}ê_É~«ùË ̀¾ăàèÛÓ•¬`î´X´:êơ»¯…Ä; >|0Ơàƒ …K¼ÓË̉ј&k1êAu ê¯Z,u70«ßÍÚ[`f-Ê)ŸYVƠÖ2 F6-Ă¼›ê›½íwû¥Y-À÷o—µw¬k©³9'enß3èñ¸ø¼ (ßiµî*áçX/–è¬HyÑcœ{¿₫…ÄærOº+áÇaŸc̃©!`db­ª©‡TßV}htå=’29„«ƠTă0N ;X)~¶äöe)8\ỳ…eú>ư;¤†Ư¬²¬nÇßrƠ"v‚œûÓpaÇD,'Ú˜÷ú a6¡Øé¨Ç´çU&˜rsø:ŸôƠy=áeó^9¢5?e—vè³ĐM”9¸ŒOê™U¢.PüĂ}0¦?yé0dw{.âƠ&`öçƯ¾¦Óß_ª̣ƒơ8\¸è́́„ÑĐB< ă`°ö ̉…ÁRĂhHy)¿đü>́_Ü•lï DzóÜHŒüx°O¡¢†ÙØæ4V®ÔʃI©2IC£1Ó}¿ÚÑhØTº¬["¼{Ô—ơÙ [1¾ÿ=Ù¾ÄîÜ-‡Å2‰ßL{­~áƠlzZé¥MpP7:r‚ÿö‹b.ÿTÆ¿í|„Đ Ô²`€HSÚœŒ|eºÏ/Èâ¨CϤ£®o÷œTïX‚‹"}ê)+|hB܈~đxaNËC¶«JVºLJĂ`°N4i¼]M=n’ǛŷÄCj/´̃³A‚±uHpm Û<ÜiñÜZươBˆk¹Ë±Ơí'Ïöoó˜xrà̃xQrưÉ{»'4|FCÉ4ø˜LÆáˆư[/!ˆhN /–Ë:fŸµ¼bĐoĂxl *ñêeéĐ̣ÚIbUVÔöÛñ^:ĂxPj&ư£±éBæñm—,>í₫yjåXvK₫‡₫OïñRÿ3r?–0±°Î‰ÛƠ…¡̃»?È{* ÇMø)ûe ¦,x_h;iiö4Káđ^ª‰?Ô=¼È¼ÿ(Éú7LὡuúƯÀùkhm»)“†˜îè́¤)<ȉ}ü€¥³_# hªüĐ«è€ĂW¶°ö:ƠƯ=W[·a}ÿ3˜ôñ¦ 7VÙHF…z×ÿ́Ñx†GŸûïêkai®,Ç̉³0âÆp¹ymœ£{B=–}®áy3₫;Ơ÷RŸ÷ÂÂU}LKSpăv́ć̀«·-·m¢— lq‡;4ÂΜ̀ϵNˆÂí$y*;Âq;&°¿₫™¸?FøvèÈÜvàB †ÁtB< 'á00Ú‰e’¡¤¦ÂbI*o$‚±éx² ¨/aucó8r¥öơS ƯgÀb°TÔÓ¾j $;Ƀ) O/'¼àSÎü‹ÓÑ÷Ḷ}5=ů‰Á€T-!Æڽ畴?zĂ¾/x5µ,Ößa‡AQ²ĂƠÈ n îă› ÏÏ]”ˆY1=pê>}¿ư5¿˜”êĂ`10 ᦥMˆäñdñíê­ª"G4æjªÏQóä’O68À ±°),Ñ £¢êÂ`§DăB*HÎÆ3°é˜%ÀƠàh/m«₫w£1KuM « NổQÖĂ(Ú¬.ôĐˆmÛnƠÙ«sz—&öfº¦0–÷ưđÄî%%(üÆ̃Oíh\Ènâa~ 9Á,vsƒnD›lIM>¡›ŸoÀ]L †Z@ʨ?zđƒĐ ‚ ê@•öÔ©¯,1à `Âk₫XæwäƠ]§Ư]jʉ1ICCƒÅŒ$¹[ÑM­ø¿̉P¿8|¦çqóx^y¾ß;Ê‹ª m8ËØ/üZAêWđ”÷~u‘f¯÷áßmĸ€†»ï?]æ±]nó˜¿a~Ơ†zÂwª§…J¸Uó¬,L­Í=ª£41!µ ô~`G p Jp2OØ6§ÿi`áÊÿ́XƠ93b¢£­…c‚ă7à ˆö–æ¹y£a³—+µ£¥ `îˆdeoÙ¤E‡n3½_ <ol`¢;WÖ÷3î­rV ̣Y#(TÀÓ˜aËR?ưX¸%ÔdÇÔçåßü…»Kصưöă};ï”ÀÊ;=íú88§$?PÊ¿æÑ«3V$d¦­¥…™4£¸9ÙY:ZÇẸø³ø ?ƠbNQ=(Ơú µƠ8œ´ƒooiba™<Él,̀­MS¢Q”~00F¤h°ƠƠƒÇ!µçåöñ&{âáñ-íx[]Ó³•­ê€uºïe_{ºh¤¸Ø`ă±[¦g˜*ÿàÁ@ ùEc úaÖ‰é/zFDÇxüp30Dg³JÚû½/Ǹ₫ñ:«önߘèÚ"Đ?Âh­/›Đåˆ̀@´IQZ”0uskil£˜ûï׸Wc–Z››™tª#?ï’¦k7mê¯Î~ẵ>É6Ü?ó|ï"¡ŸPôDê7SÚWp º—̉ïø»>ÆU!T¼ö›üu<"ßWS9ÿüƠåZü•_ˆŸÜ¨âµ[ë¯Ó i»TåÜNŸ¶VăʹpèÔƒqùáj~¾ ›ƒµ« ÛÙÑFK7ÖôV‹ó³6åÿđcŒ½è×úg﵄ ;ÿsè¦Ë±_UúW[nîp3`Pi/Où{ô k¿àFơ;¿:~¼ƒ¬û±?=T$@{IFJzo ¾€%Çp¹ăđ ăđ«¼S8Lº£$3¥!@ªoÀhơwˆH MĂñ(°@wBO³(3g]y)ßÄ“}K®Üơ×/³_ª_x(9>Ù«ơÄOèÇ¿x{¢è†´›lö&jØå_²çŸó)Œ4EŸ¢́ùï[\'í)ºödÀ^gu|₫’¥¼ç{r0d_5Q¹ '£¢¶"&q–‘Q]V̀/(4Ñ£d%Å^<N’ûÂgèáÓ½6ÊŒKZBCæ"¯ÿù5óiK·n³q¹R‚fûPµ2ʈ´³²¬XO{&V®ç¬))`HjrlaÎÀ瀩¤¥Ç¯’¯GphN~ô,+*ÂèhHJ;rx÷MhØƠĂ÷zvư‚O:X÷&—’Zv»”̣ü^L|w›Ä²̃@Ó ¢¶¶Dƒ¹ú7*Ú€¦œĐ;W?]8ÀËtĐñÙ̃}|¹Ç${¦Ë ‘|J8F È/TSZ0¦êÆŸÅwxféƯ¨ƒ_ &äV¹<60àMdêơĂì<¢úÁiç©BÏV³ơ¦y’÷|âÏöï³7Å Oî”H¯WDr`:ƯƯ¬Z +¼üÔSFKGCĂÂÁ5¬2ä_0¹_ÑÖQøæùË7ç÷¿hoï g79zeơ’_ïʫɴ½~x₫·ÿÛ)˜=₫º¸v½® ;¾ó¢w½Ăû j_9ü°¼ çô9ờÆÉŒuÜvK'»#­bKöÛË7ï~|v³¢³Xdq5é4GøÍÀ*j%‰NMIá$ü°´„XøÛ7ặ®s1éØDÖ„J-̉È0Icu®MgKXđưĐ́Đ²CØùÔ,N·Ñ§Ư₫T.ߣñé— øLĐ’‰Ÿw‹ưƯ6ûú´{g/&…ÔE·HĂß2¹óƒŸ‚‡[ËsøXA\9·—Å>’’ơ.4ŸE@Û'­âr° Ëñ€—´§²ª´x©‘Á„*ŸPUQ ”Ü`öôa\Z¿fqÀÏA]úâñÛb ïEb±‡¦ ½üÖÈ´­@Q̀ưGÁ/ÏưÁz;fÑcÁ)¦ú2Ë8ZÑv°*íư‹ôG>µ·œYHíij£¦Z½éëÇp¹ăđ cÛç8î1êË‹¸ùçÇâ(¬êƒIê[IB7Âp—’.Íư6Ơ7́#ĹâFÖ'Y»¬́S/ă·{iw,‹4;Ùçz̃îÍßî{™xº*œ29™z̉yhfBT_æ=ë“ G †¨ĐĂf‡ö.Üëü¸øÚúđ6í‹ËÿX¢f¢g…?¾™YL˜I!×TWÅÄ>Ơ®V¹åëÇ·¶´™—´Ùm4Ăm$Ä£æJeS±ß¦BZëêh¨¤¤ âăK–—•KLJꣶڸw ïÉó¼Íx0‡^̣f#́<$µ¬€×0ËÆ#Få™ỈÊû´•7i8)üù]N†”‹ª+*ÈÇDG‰Èwqdñ̃\‡nÄ!u÷é:o¬¶ß;U»Ăªv1ø_’ƒ·ÏyÛ„3ådIO™d i™’‘ưđø’!Ă¿¦·¦Í'¯¡FHnüƯpăˆ{´5¼rË}ü–OÁnÁ½ƯÏl;ñ¦ÑŸ¾‚œïFÆFn} ỹÑ‚ªcdaŸ¢wÅï,e±é¯Áï §M}­X06Mûm?p™—ô/NƠù/gâ-#>æƒ@ÑzÏy?aSÿXÈu#Elư€çñ=¯*FÆ2Ăt£µ¦”—sÂƯS2²r_¿~%V}£³‡\±₫—XSHÏiÓˆM\*VUFÔ>ªË‡gŸ}z§‡Y²̣̣Pè©>æ%–êkŸđ;)§cƒ‘(™'ưÀú>Íi₫„~9ư•ßÿBo:¦¡¡²€ˆ‡¡ÍCô*ä$!ÙúJ)lü½kŸzœ8 èdÁî}ú|JL› KhîËí6³Œ@WkU @A)-.<‰Ÿ® ª₫óḲÔ× 'd§')«©Ï̀¹Ô•d?}ˆ@ƠTNqƠ>̣ºµ¬ ×Å~% «T‘“|ÿ®¡ºœ•“"˜@riÁOç)“l¢§uÂÏO^Ûh&“*Ăh˜ñ“ÿx¤F^è Æ(¨$dđ̣3Î0¯m5eƯ]X9IñÉ4©ªưü’¤²Ø‚ÜŒ Çàü®mUiôƒk·í_ÈÈØ_Æi½ôXÈ^+5Á‘$̃§%«©kN℺‹”b>¼oAƠ3²°AÏ:ˆ®6TuE©»ëZˆ HơA€0/ƒÁ”5u¾ÅE*“è™éÿOÏ´}v  w£˜”¤0®?ß?OÍñçæÂ!Sê ó₫uQY ¢ơ5„.̃_ ₫ÇÎ7Úc;ÊYÆ”ØÆ&Æ“ûífÚ~§Î4ƠW3±qB¦…FU×TV¸9:̀Øơ S?êZ¯Èñ5¾ ‡w°ØĐ8>ÄpÉ‹§NrÖưÿAy±ùŒ]<́æ—›G—6çmÎͱ©± —,™Ü±–Fÿúlml``f%?“£ă×_ÿ—₫úqïßQWÖ„ª×ƠPÜé´ 3ă?hYØA;ˆ/qu/x€T©-¸±g³ç¹·cî(jö[àăœĂÔtơu3-mg­½£ '5©.lZª…0«°61<}îB]E ;ÀcQ»á[đ&n„Ew½}_²La™5đW$¤a·¯Ä‘y}Ă?VoÛK?$‰ÅØ̃á||ü-ptIâ¯æèßW¥[ê´^?œŸ?ª?­bg'J¿%³°±O®™ ëeá!Ḱ7,p£Å{lø+kë3yR-eůi_‹¾’QZàü7W êj\׬"yÍ‹ẻÓÓ ¾¥Œœ'Ḍ4úarDù÷T£’œ̀¤k0µ²xµØỊ̂ĂÑoBV®¼f3ĐTÍ̀H/ÍÍâ—]àd6”ä´·µh© ƠGB$₫«­µ˜”±¢"ª,¨Ôü|âùoÿƠâúWdĂË|ÿeD›1Á[ơ×\ëM0|XÑR…“$ pMSµf®ÎÎ×®^1sƯJ=U§Đøÿ†_G÷ƯÿœMúT•ÜÑÊŸ >FÇV« ̃q±Ÿ¶ ~L –°Úi a‰%Á5Ä”\—Ø¥:T¬m;z›·çêØ%DBZ¹+àÿ{"+₫û,ă±oTufJẫƯ»¦Â¤‚´øœŸ_c#uM²EeŽ—‘™áóº9;œyúH>‘…<î $ùSèsïm>$¬ÓÙiíë×Í\¶PS/ÜƠÀ°-ơ_cöîÙ=•JTådrṛ¾%|ÓZĐ=3Qa2̣ bBSjGpsr.1)-¥0¯¡®½ ‡Ó³ñH‰«éêkÊó@ö:­@²³Ú¬ZtséZÏ1WqPƯ•œ6~e„ă³?÷Ă~Ø1B=b ±èÏ´?‰7³¨ïxY1oEO«8>¡³ŒÎ–đ§Û¶yO}°Öªå₫wsÓÅ•5¦9g$v´·:®\>ó§¦Á<<7‚¡³©Ó& ƯBd¿»ë̓ökؘ§k™D ¶ÉËëÊåK&ÇÎêN–’‡'y“3 )ă`.ö¶vaLÖxLh5̣!Óú6øÎæ-[¦’•€5¶ÖWîäg~•_´0ưpAZLww·µ™ñëÓÓ»º­¿{ç¦©Óæ…¹:9E7öơƒ.®n8R}¤D[óàE1S²̉̃¡y½XtápÇ~9¸áÙ^ë]ÑC·†u ;ÿ 0&ê¾Ën“±~"̃/\X›@µø=o¸*ỹ~ÁP¿£½.Æ£¶j7Ă—ư©Â$}LjÔngG»JÑC†;M“o36ùøøÖ’Ơ nt"¦#4Đßc£‚4ëx¹»®½t#€†vb)%É•9é•%…7¸ÍÖ€¡³“³ëƒÀëK¼\Ÿ ®ûư£s+k a¡i=; ³Ûz÷Û·đ$“,Ôü!9"覅ơrqả'p——–hm7úôä¶áªơ ÍuP`;CïßXïáÁÆBz¯ơ®®\ư° ¤ÂB#³́[r}uµû:̉̀¿àåYm¿æÉĂkàóNEIµ°̀²»ë탶v«… Vê#9¸Í7ÛO6üe-ôWïG1ƒ•ÆæKŒơt”¥¥EĂdƯbƯô¤̀b₫1w8›Ñ¿ƠóVúß–ÈÖV43(+ÿ³dđ#:Hçȇ%ñ•å7;Чî ..—^æ_X6¾j ă“½ák¢WŒy²G— ïî´v=GØî­Íz2ươÂÄ›†ăÄ’oñơO·= ză•¶øV:ç̉zđ:ixmJû.U:Èv§ êỆp8Ư«;—L=N“^WKƯÛG÷¼¶l!mßÈơ7nßooi’Ñ0X8&”—ƠÔP?‹’ãuë×ø_Z²z=œ‘iO‰í|}ÿÚÊUö’bÂ3p:>nNOM×®_1\éJ–i3†1¯¯¯vX3’M:ÚĐ»—×x,?ŒkC…ƯÚ¸q3’” oọ́¼róN{K³”ªÎÂñĂ9‰‘ím¤’|Hˆ ­utºwû¢±ƒ'-¾`÷ö×÷¯;¬uä @ªo÷xŒ[›ơÀuÙÚ'ùCª¨§`¹6x£˜ÏùÛ§¶é̃ p$~íJ!.î4÷½àáG"Ù‘½+µÀ¶¾@oÄ`ZÑhƒÁ >dßă+ºÿƯÛ7tfQ}¤d¡€e,ăª¶íîFgbÉçPt×­ÿ¥Èêr&V^ÈTugïºÛa{íî,ûá*…o1<@æÓ»Ï¤¸́ƠDyAU çÑ>›; ™ê BNRœg£ÇåË— lœ¬ä?o³¡8;5>fß̃=SPô+<Ö9½|û>₫ơcmËUdÏ$Ä¿²svœ ×Ăˉܽ{×¹sçU—X#ù…Èlsmøăû[¶z“v̀áè@r°îÛ³û̀ù‹z&ÜBâäOrcmøÓû̃̃[I5(`$ÈËHrqn¸ví̉â•.Œ̀ä?y²¹,/ácľ={`Ó r½6¸> }“ôö™†™-Ù3IIļ ”ZºÂä• ̣ó́رưÜù f¶lÜüdO&¦¡*âE÷¶mĐÀNHơM³̣“u|œ×9aPe™™Iq?|ˆ~•ö˾yç}ôÎû‡?Ơ1_ŒƒD\Ùéíó:¬=ÇÉ-y¥Äßï­º7Úø”¼²ÊV@ „Nz‡ữÿ‡è; ń²·ÅÚăûm׆wÎØX˜îÿíZÀ:&V2NIBë yÈÇ/¸{û¶é;Ër3ă¢²̣ûçômœ¬ä-9œ×­äCSpéhh|÷î |̣¼à[†ÙJ2~f³ẵµ67ØÿÛ̀Ÿ Ó÷í̃ùøåë¸̀mËƠd<-+æMGGûŒ‘Œdgùmß^Đ3qp‘qJP¥Ä…!98÷îÆ<¶VæyE%A·ÎØ’³Æ¢ªĂŸ=psßÀË9]KÁéé÷ûî»óđqÁ·45ăed@Æ§×Ø.̀₫ß|¡˜R}3ûNeáSѳËÖ?‰ơXü%ưCñøkó ïo¾È±jC%ŸdƠ’wQ̀e»Œ7‚ƒ©%ÊuçÉ]&óЦO«Ǵo¯«ê«?̣E÷wS›rûâ•»÷nDå ³Xà~°€—z-#ÓSá9ظ̃53ûç«ÛÛ­#¿1rè̉÷¯Ÿyxl$íh¢a!ÄÇë»oï­ûApṿí m_?…ÁéèfErŒkílJ**ïƯ:¯½̀…‹Ü¢“Φ×oÛ¬\=óéR‰±j¹eEUÍ­€‹æ+ɰ öđƯj‡™:Û**ªÍë¿de‡Ư¹úaz™ñAUD<ä¶~rºÏ%&$à»w¯ÿû̀œ¼Rjºäç‡Ó"C˜™3ă‡]׬Ê/. ºu^oÅẒkͤèhxưđîê5Ó7¤ú†—d3Ú·+r˜µÿ đ;§¼øå?Rµt¸₫!m÷ÿT¿ÊÁ˜Ôcî¯đÑÇÁgíj‰ªÅƒfđ¨"ư£\=4UM`j^ ñƶo'Z·0oă¡@§ç ¾ö™¼´„¼ô¾ç¯Ă ̣~ê­p‚ÑCÎ4ªúư‹ sËư¾ûf2zsw][ߨtăÆ eu²Yè¬ -&7ë›§§ÇL*œx¸÷ÿæû!6ñmØS[g̣ˆ)0JHͤ%0pIKN{s碾­‚fúQ [#Ÿ?’•ŸÅ&%Yi°< y]ZT¤»Ü‰HơÍXÔ÷>ÛxΖ(»¦·½7¸́=³̉L[‚Ÿ‹hm(Nưrc×ɨÁǪØêÔVvà̀}Å› eâà€¡˜i·ï%úèjr˜Ú”Cv‹ü†T–‚̣5f»Z`Ưz÷åMå©}₫]CµĐÿí „ÊcNñéï%:Z,´:× ¤ƠVƯ9°R…û½ÈNư'„#¥L̀D«Ơ«ÈKA’o†aciÚƠe™gáæCC;_ûZq­ơáOè.6œ­(™™ißî5u¨KưÄ•Ôçơ¨­ªœôϱ·y{ÛZ,/×¼DW,‘1 áïß.]»i₫.èG‰éøø*˜…}Ƕ­síÚtÔUÀxƯÈ̃}₫Î ¦À´~zùˆ“‡o§Ï¶¹p=vÖ–]]]ÏĂÂ3S’,×oŸ¿mp¸¶¦wÏUÔÔ}÷í• `gañƯ³«ª¶îÊ~ ö“^¤7_Mʲ>IĂO<³¶˜•kXj¨–7‘Q‰ÑL7Ïß5JLë‡ÁÜ||»·û Ơ7söỞÖí·ôåÖ§m¼{rçƯ“£$v1>…x-QMx7đ÷[8)¶à?È₫[uYơî²ÊK¯hq]!ªÊêâ%Qï-ú¾~2aÅ/ä·ï~1ÀѪưæ‹d_–‚ưî«.ă×7î4ÍßÓß}˜ëƠ₫·:®w0ªÊøTÄZU}‡8³ú;ô;Eï%Ó… wæAEEµÂb)XBßE~ûúEËb%ç<º₫¶Ê‚a/Í­–ùîƯ3ëƒdgùă?êPwîø#ù…å´ )æO"l \WvâÇ’BWWW3íùh̀FzZ`‰JH {úQÓÜk>%ăîj©|,§¤́³eÓ\¾N]°$¦|yư⺉ÍüʦÓƠXñꉲºÏÖÍsÍÛY[€åùëđŸ?¾k[¬bd™OSÔ:ëJ#_=]lbºo÷ÎY¿.vĐ×Ô6ܾwODRZĂ`MIưpV\DuEù:WWK#ưY¿s#°¼ÿ£iaÇœO ,c›ªß¿x¤ºHs»÷(؃Tß,.ë–‚s?`j b£câSṚÖäUµô,¤à¹¹‘̣‹Tu4´tµ$‘Ăt}!—œÆá&Ÿ9y1¼ µ…₫mÓ•,́)8¦<ơöµÛÏ>D·0̣•·œù7G#dÏÈ‘­n;ƒÎy”R¿6~i5{Eæ1ªí})IŸHÅTN«аw±Éß̣[¹Å*ó«¸EäZÛØ.Sá‘EÅ=ç´—E‡¿~ÿ!9ógvAe+áOŒ ÜBª̣ÚfV¦¬ÔÉÎ:¬–¥¸¼âQĐ fv¤¡ơܽ/è–¨§´t´ö«Vé̀±Yǵ,̀;}¼±Xlø‡¨ô”d•Åf<"RsùÖ7•äľ£¬®egmNM=ïF- °TƠ6ß¡¦¥U_ºb./éN…æ|««®\µzỠ91jJ`©olzØƠƠ­ajC Ÿ»#©º1I¯Qö«WûîÙ5—‰µ±4,MóK>¸ÊÁͯ¸Ø|./¡F‰éˆyó×Ơ «9ÇÎ!9X÷́Øúá׿}IUYbÉ-(6wßhP_œùV]S×̃fƠܺéÆúÚ`)¯®  c`R3±Ë+y‚Ï{rDHSc½ưjû¹Đ a᪾~À"ú6`qœxÔ´?øØ₫àđ5óªzü –¥qØ̃aâƠöƒERË, NèùôWx‚²Ë¹A^B̃ˤô¯ï#"X88åuMæÎx9tCeBä JJ K‹ms»K”O–KÀ̉ÔÜ₫¦àg¬†¾°¬Ê\y/ReßÓÓ¢D$e¬̀L Ô•È̀’¹8X f_¿ç¼{ö†Ψ g:w%â:›Ó¢ß×TV.1v[k?OIfcfÚâ‰ô‘“Wöø%•¢¾) ’{®Ü†úü)U_glfêîê4ˆØ»Ÿ÷269-úC’O@VËhî ±Ă6×&~x‹é́XjfN0€¹́‡—››€¥©¹9$,¬¨ WVĂ@hÎ̀ú£Àu—g§¥%ƈIÉ-37Y¢¡2—ÉäåDîèé4KË̀z÷.Á̀&¯k LÜHơN½á)ª©åSl̀o4´´übRÜ¢2$Ÿ|B_ü£¬èçÂÜtttrJJzê‹ÄW““TTTZê`!|MÿöưsrJeY1Ÿ¨°RHœäC¹(p]ơ¥yŹ9¥?¹xƠ5.RË´d6fg‡U„Ï 8‰‹ûù•ă“â•™}‚ëh.ÉÍ*̀ùÑÖ̉$%'¿XOWÙÊ ù‚ Áà`» đ‹}µwtÄ$|₫–‘FcÄ$AwÁÊÉCrwi®+ùùtX FFNÁ@W[É֬ɌX>nN·̃ˆ µ£b?ä|Ïddbá•â“&yH,º±¶$/”y8'+¯¸XGKÅÎlÈÀ/ÑƠ ákjfÖç¤Ï5•¥|¢R<"’œ"$ŸŒMÑ­ëñĂe…¹<üBêFÊ`!³D²³¬stèsªÍbzÂ:Z1i.Qééè́jC•₫ü^”û£½­UJNÑPOGy™%êƒiÁÂĸÂb)@”Ú1¯¸$çg~iqQMe955;+;'=‚‰‘™ÎHEGGM §¤¤ÿ„Ăuwuu]]Ưè6 º³½¥±µ¹©µ±±¡¦ºUKEMĂÉÍ#$,,+%Á-'®%'VäM¦²œ Xú¿‚:$óGvA~~eEY{K +;33;=`¡îarHr¿.tGWg;ƯÙÖ„jkmBƠƠ‚¥©¡–‘‰›‡WDTL^JBI] PW‚L÷Wqbmf bK₫‘“[Z\RSYFCK@Vv&Vz‚™ÜD'A{Æv¶uw‚–ÜỖÚÔÚZq U×ÑÚÊÎÍĂÇ' -!.ööή¦÷ă7) If"$ʪŒö!!úư¬́-óoŒ́=ö !d”d*ɨP¤(‰*…††ûÿt®«”"Ụ̈}¿zơ:÷ÜsÏø>çœû}ßç9ÏSOµU=3¥Ùßdi))Ö  `΋W¯DDÆ>}ú:₫ṇJÊUªV“‘WÈ»]T–—¬$Áˆ‰UÈÍÉáa¡é9Ù™™ïß§¿O}ÿ6ơMâë·o’rssTj Æu›j4RkTG¯Q¯ĂßX¤Ú½ºuáuû”éæää¿ôt*ÊT¨PA¦8”úÙKç-Ư‡Eđ´̀ÊʪZµ*œYA!BHKK§¦¦R~)P뜜Aü ¼zơªcÇ‚¬ ‚!”””âăăkÖ¬IÑøuÖÇË{ȇ/&&FÑ ˆrLvvvJJJÿ₫ư)YA!BÈËçu–¸té̉M›6Q4~yƯ>ñx666 ‚(ḈܹSBB¢]»v ‚¬ ‚!XíÓ¾}ûÈú~>|Àÿ5kÖơDùfụ̀åÍ›7§8d}A„h‘-##ƒÿNNNóæÍ£€”: ¬®/ --MV–úô#ˆ̣ÉñăÇß¼y³aĂ AÖGAˆ™™™ø_¹rå+V >¼V­Z“̉ÅÛÛ[^^>##CLLlÊ”)Û¶m£˜DùƒÏç1»­­-Eƒ ë#‚ D‹´´´́́lI¥J•̀̀̀"##)&¥‹¿¿¿œœ¼:==ƯÅÅeö́ÙuëÖ¥°D9ĂÎÎÊG-&²>‚ Byưúµ lØ0AÖGAˆIIIø¯¦¦Ùóôôüđá&ÚµkHÁ)nƯº%&&–““ÓªU«ààà—/_ZXXôíÛ÷đáĂ‚(̀Ÿ?ßßßÿñăÇÔV‚ ë#‚ D‘đđđ5jhhhˆ‹‹CNÇïää|ô葤¤$…è'Ù²eË¿ÿ₫{èĐ¡Î;ïÙ³gụ̀åûöíSPP˜9s&¦)>QÖ3fLlllJJ .vÜN) YA!r„††Ö¯__GGÇÓÓsÆ #G 0119₫<̉—Ë—/·hÑ‚¢ôĂdgg»ººÆÅÅmƯºµM›6ÚÚÚ+V´¶¶>v́Øüùó.\HQ"ˆ²K»ví̀̀̀ÄÄĺuëfooO!Èú‚ Q$<<\SS³mÛ¶ëÖ­kß¾}ƒ à{—.]²´´Œî̉¥ ¬ÆBú1V®\iee…Œ°B… rrrÈÏœ9lܸñ³gÏúơë7v́Ø-[¶P ¢̀ñèÑ#Ü9===qóTUU]¶lÅ„ ë#‚ D”áÇ·iÓ&11ñơë×p’êƠ«ÛÚÚ̃¹s§^½z7õ|₫ü¹’’̉•+WhÜá’’••µ|ùr¤†‘‘‘U«VÅœ!C† <3]\\Ϙ˜˜¹sç¶nƯúÖ­[.‚(C 8đÙ³gÉÉÉ;vlѢŪU«(&YA!ºDDDbrîÜ9¤2ÎÎÎ:u‚¨$%%ijjN™2™ÍäÉ“/\¸ ¤Ƌτ ́ííkÔ¨qơêUö´±±1TđöíÛÖÖÖAAAˆ³——×?ÿüS¥J•7nhhhPĐBÄñđđÀ}̉××·qăÆơêƠ[°`ÁàÁƒ),YA!º@íÄÄÄ6lˆé:xzz"›é̃½;´ÄÊÊêüùó=‚º°.=ù|>\fø₫ư{r¿ïC>ỵäË—/y\K05556 âêƠ«92õ<¸t×®]‘D¾yóÆÔÔË@¹)t!à6¨¯¯¿wï̃ääd\à***AAAêêꂬ ‚iàu:::lúŸ₫±°°`Ó‹-²··5jÔöíÛ7nÜøøñc%%%h!ܯgϘsåÊÖj‘ø&½zơ:zô(›†ơ1µ³gÏVVVNOO—‘‘Y·nƯ”)Sºté‚À^½z²]¥J•'N ‚ Q ,,̀̀̀lΜ9¸âe¿~ư^¿~ưæÍ AÖGA” ëëØ±#›nÚ´©œœ\É ^}úæÍ›ñrÍ5ëׯỏ¤ ̉J===ä‘+V¬0`ÀÍ›7k×®M‘$ˆ? nqÆ ĂƠ˜˜ÈăêđqÏôôô400 àd}ADÙÀßßûöí‚—½zơÚ»w¯ÀU`wĐ{{{ ^.Y²dáÂ…xWAAÁĂĂĂ‘¨¦¦¦¯¯¿oß>))) )˜7o^VVäM0'::ZWWWđrƯºu***K—.•——ÇËI“&!ƒTVV~đàAÍ5gpŒ5jÇÏŸ?'÷#ˆß.á¾}û†„„œ={–Ơé½{÷®uëÖVVV)))‚¬ ‚(3xzzÖ©SGX* 5‚¿‰‰‰±9€ĂÀX‚‚‚̣¾„*V„(¦¦¦6õ<,,́ăÇ:::OŸ>Å[Ë9,X€•üÍQƯºuë©S§îƯ»'˜ọ́åË̀̀LV0GVVṿäÉC† 9qâ›Ó¦M›/^hii?oaÎv)S¦9räÊ•+Â'â×áêê:zôè1cÆ.O\¿fff¸éáH!"Èú‚ ˆ²„³³s¯^½„çÔ¨Q£]»v›7o†{f:99YZZ*))EDDT«V sBCCÓÓÓ ¤¥¥=<å¾¾¾p¶‚Ë»¹¹Aù^¾|)...˜éèèm†ø!…²™ư8={Ö²eKDdúMÄOrêÔ©1cÆ´jƠj÷îƯ¸Äó=z„ËÓÔÔôăÇ‚¶AÖGA”1¶lÙbddT°N33³êƠ«*00°F=zô€̣á]˜̀B,sé̉%hd… V¬Xѵk×rO‡§OŸ̃¹s§à[7nܨ²0P8X´­­í™3g„ç+((DEEyyy)))]¸pAOOÍWUUeë‡[²‘W¯^MíÍ¢¤¤¥¥9::Bó „›R||¼đ»˜?mÚ´uëÖ±¶ëAÖGA”aÖ¯_¿k×®ẪêÙ³g>ëc̀=ûÿûŸäuA) ]»v <®oϵk×Î;wÊ”)́-KKËđđp×AÂâÅ‹7lØĐ¬Y3$>R"™““£¥¥5räÈ‚§́]¨Za®ëää„·UD#ß[:uJNN†œcâôéÓ†††‚·XƠë_¾=bÄ|\¸Â ˆ‚8;;ă“––Æ-n-‡đ»¸GơèÑ£V­ZÇ6l…‹ ë#‚ ʼ°aÚµk—””tö́Y11±ăÇt6iiidQ<®² -6l̉/ÿÈÈÈ̀çÀ4ŸÏ‡ˆ®[·.22̣3mÚ4¨ è‡±C‡JJJ‚¾É±cǺtéRôzÂĂĂƠÔÔdee{ôèñÍ₫åpwwÇæ6nÜX°v<Kº_¿~O}èT'₫6RSSW®\¹sçÎ:uêàN̉Ÿ£àb/^¼À|\)»wïọ̣̈¢¸d}ADy)QÆ Û·o_Ä2p3haÇïß¿_ÄbÖÖÖ6¸ldÍ5C† ùÆ÷VÅ‹8xÜXS¦Lùøñ#œÄÆÆF° Ô±7‡ oƒîÙ³‡ ™åàà)©}Ú­[7vJƒÂ– ›9sf@@ÀĉgÏưÍ'– ‚¬ ‚(W@º`YǺ÷ß¾}­[·₫ï¿ÿ¾»pÓ¦Ma,ŒáÇ_¸páôéÓ‚Î' ")))῭̀̀\¶l¦N:HÎ 6…«Lä̀¹yó&öÍƯƯ›CÚ×»wossó_Ư»zdddăÆ!Z¯^½*æG6õ\¢n!îܹƒèÁiÏ=ûƯ…'pdgg?₫Đ¡Ck×®ßËË çééY«V-œ´#FŒ>Ÿ¿IxxøÂ… ñA8&<<<(’YAñ·€́GZZz̉¤IÅÿÜ@MM >Ö½{÷b}KU¬¸wï^LÜ¿_SS³jƠª§N*Z2¥¤¤fq°—5kÖÙÚÚB±’‚iĂ!\ _B^xîܹçÏŸ·k×ÎÆÆ¦OŸ>ÊÊÊ¥·Û·owêÔiÚ´iH@‹ÿ©èèèŸmk×®]8 ́yhhhÍ5¿»¼„„Ä&È3̣àƯ»w=zÉ’%EtéiÎÁ¦ñ©­[·b£O<éÙ³çäÉ“µ´´èJ!₫¸c?~ụ̈å˸otíÚuĐ A9¾+‡û÷ï_»vmbbâ¨Q£p&9r„âIơAp $÷±±±%ú”˜˜ØăÇëƠ«+Q»JÈĂÇ™ÅÁC5j´oß¾âôÑbÍÁ¦ÓÓÓ7n܈ ºuëæààжmÛo~ª%ÇêƠ«sà3®®®W®\yÿ₫½¡¡¡¥¥e=JôˆàâÅ‹‘GîÙ³©dI>gÎÖÀ²¤ Á…»êêêÂ]¿ûL °<³17o\}Æ …ELđ©1́evv¶³³óutt́ííû÷ï/##C—Qêäää\¸pçăăƒë '*.ü₫ù§/GqÖ€{ËæÍ›ưưưMMM'Nœ8˜ƒKơA/‘‘‘ưúơ‹‰‰ùf’’’Ï=ÓĐĐ@f6hĐ ’~™>Îăª »té’••ùî/÷ økÇÈ^æææBäöîƯ{íÚ5MMÍÿưI^azđÖơ¥đL¬ˆd™bXX˜ rM ́X­Zµ‹…‡‡ÛÚÚZYY999±q&JJ\\4;))éÇÊ ;ÿ₫ư“'Oâ谫߬đ,ÁcNÉÉÉ#G‚ âo'**ªM›6?œ¬‹‹‹c%–––ÁÁÁp¶[ ö¢Åăjđ&O¼oß>$|Ë–-+₫ Ø|"—ºyóf¨ vL[[»k×®[uuơ"Ö`Æ‘o>lråæævèĐ¡7õT®\¹eË–²²²×¯_755•––.éÁ2d₫üù?9rº-Lj# ̃P/99¹’®AIIi¦_¾|9v́XäÜ3gÎ,ºWªªªN‚9ĺx)2øÚµkc==zô€9Ó0ñ| jççç‡ëç .I\>>>***ÿüóÏèÑ£…ë¥ ‚¬ ‚ ¾ÀjØbbbrU—.]Z³fMăÆïß¿ÿ3@ÊÈȬăÀôÓ§OáiƯ»wwttüî@ù€ÇằÉÉÉñđđ8~ü8²Ï̀̀L$p§êƠ«¶’G!•„ïÚµkíÚµù̃MKK;wîÜƠ«WIXë‡444à„Xä²ß́ åđáĂ¯_¿†Ù–J îܹÿœ={ö„††­¡˜ [8˜åî̃½ÿêƠ«̃½{cWëƠ«W|“,˜Áă;v́„vKKKHx1û "Ê 8sBBBüưưoܸq÷îƯØØX˜ëÖ­MLLPâÍ9~à̀‚àáüÁÊq}ơèÑcàÀëê ‚¬ ‚ ¾̉úmÛ¶Á@J«Ë)S¦ôïßyÖ\*ƒ€«©©¹¸¸°é¤¤¤éÓ§ïƯ»3 đn‰t噕•tww‡¼ÅÅÅiiiaæ‰' ±Û·o‡Đ¶BYYÙ":“xñâ…¯¯/2`d«‘‘‘©©©uëÖ}̣äÉøñăÏ=Û¶mÛ̉êQ†uy ;ơäøÉ>WÄÅŇq°—ï̃½[½z5"S¡>|8´­D+„4Nă™íååu₫üy??¿đđđ5kBŒ;tèđƯ¶¦ÄŸ×Epp0Niü¿ÿ₫£G*UªÔ´iS]]]œ°;=^ÿ­[·p1^¾|̉X£F ¸¢­­­¹¹¹p—NAơAÅbÓªU+dÛ¥»Z$j/_¾\µjôyaiY ¨ZµêJöy'¶rñâÅæÍ›:¶)))ùckÆ™ =ztñâÅ °¦!C†8:: `S7õ|ö́Yưúơ™– -f»ÓZµjơá̀ÑÖÖ̃³gO¿~ưx\¿‚ˆ?V'|đàhlZIII]]¶‰%[´h¡££Sü–·[·nÅÿÓ§O#ùf}u–Jäåää¦r°—Øm„e÷îƯ>>>8ÀnƯº 4¨¤Ị̈¸§;q| :’ơ÷÷GdHcË–-!É8.ÄäWÂñ7“’’rûöm\¹aaa>ŒÎ̀̀Ä Ù¤IÜ.Ú´iƒRhÇñ3[Á)»C³Ö?~„(¶oß̃ÆÆ¦5ÇÂ… ©,‚¬ ‚ø)lơîƯ; à2ơbÂ*vñÇo~àÉ·ï‚́óøñ゗Ч-[¶`[È ±ƯÁƒ'1}ûöí5kvíÚ¥¨¨ˆ†½ 2‚w«U«6ˆ£àÙ  ¬ÛóçÏkÖ¬ ùD¶ —Ö××/¬̉ÊÊÊÖÖ–)ëµ G½à03ÄV…GFF" }÷î́.Ô°aCøaÓ¦MáBµk×fé̃½{RR’ơœ?~Û¶m={ö,ÅÈc·óu³‘››ëîîîêêêííissó=z`7~¸Üµ8¾9ˆ$đÊ•+p´$55NC†£ÄqVü°ü—o²³³}ÿÿü󼍸]›̀đ»K¦¤¤À ‘Đ39Äv_¼x­3f̀¨Q£dÛ]»vmĐ ††FưúơK±Æ ‡cĂ!<311ÑÅÅÅËËëÚµk(Y§N:wîŒø™mAwóUŸ ƒ Á1 ÷îƯCđá60äºuë"€đ™f͵lÙ‡_nº–Aù†‡‡£Đ?~üèÑ£'OÀåàüJJJuêÔA)³ß`Ǻ§P[Ï̀̀  ÂÙ€cpª³ZAè·±±ñO¶ö$‚¬ ‚(±ï!C®̀†Iøœ>}Ç m·~ưzèVéÖ;………¹¹ù… ˜ûƯºu úgx₫ü¹ŒŒLBB¹sç BÅ瘝8ÈÊʶç‰lê5}út–©³Ft¡¡¡HÙ¡gEäèĐ!˜‰––VóæÍ±|Ië¬pq¶@NNÎÊ•+û÷ïohhÑ­P¡<^U€‘Bq’$''ËËË«¨¨ PØ%UUU‡É¦K$KÊÊÊ À³₫o`Å0O©J {%!!ñ“ÁGĐ¾Û₫ñ¿sçÎƯ»w¡…0d>ÎV5‚ ¡đÿç÷ç®S¸ %†W+ÊåƠ«Wïß¿‡ÈƠªU ‹â`û C¡´åø;2b©‹s›Fp Ï̀è 8èKd}AÄ^”zĐ A¿§~¯0ærÄÅűß₫Oœ8Q¢ñĐ‹ëNÓÅÅạ̊åËđ›Zqñ)>Ÿèéé  ÀØ}¦¦¦Å©aû.Èàuuu±K‚ºAh•GŸÊÎÎFÂÍ´PP‡ƒÔ¿zơê¬a'{ö–¨¡¡Q̀^m°ØlWçèèˆXué̉ẽ¼yÅ9̉¬¬,¶'PD́ 2>>¾„U%%%UªT©jƠªpÅjƠªƠ¬Y~R»vmx,;,ÜÔS‡cΜ9ùÖóóÊ•+~~~Pb5ỄƠºukD÷“5„ ₫&ß=^ÖG Ă?₫V†cÁâ p3Fà¿°¥çææba ¦Ä̀ ü ±Â¡!V8E±¦ÖX ë©Î₫uW"¶cíáĐđûùúơkX:2‰“ *ëT£W¯^t%²>‚ BDAn7qâÄ#G:t©¹ˆ́L9=1¢S§N222‡F²[̉ơÀÜÜÜ j₫₫₫âââÆÆÆ°—=zØq”hUbbb…ƠAØ`k×®] Â4̉ñ–-[bIX4®8®5v́Ø[·n½yó¦¤Í)%$$hDZPN»GFF²:"ǿ'¼‚y¤A†¨À`<®"n+ë¢sÉ’%Û·o—’’?~üˆ#0QpC°M(wÈó́äƈ=„i@RRR̉ÓÓªT©¢̀…cçk}ûŒàä™GDDà€¢@ YcBü/ơöĂØ+œZ¬† ÁĹM`·a¹¸ íÊ•+cŸ±Ÿ]è.‚V¡BGZZ+°Dv,]çÎƠ§ØÿŸà$ØÔ”‰¤"‡ cë,.:¦s7Fl›5kÖ€£{÷îtŸ$²>‚ ¢¬‚T~Μ9C† Y·nƯÆEs'Û´iĂº…¨X[[CçÍ›7nܸ|v„ ÛƯƯƯÇÇ'00¶ ¥¥Åzö‡ çø¥;É’ăonåíÛ·́6„đÁƒȰa&LB Z·n 3ÁqŸ¿jƠª¥K—öïßơêƠcÆŒ)+{´ơرc¾¾¾̃̃̃M4";oÖ¬Y·nỪÍÍÛµk7„CÔvFTب(8X=Ö®]ëæææääôèÑ#øI:u7nŒCÓÓÓÓƠƠ-Ư‡ K´ç¬e1—ǯX±*ǿÙ36ÅÚv2?‡@œ`M¬U§₫³ê¬ µƒó°Çؘˆ¾æ`-H±!8Ï»wï°u|¬J•*Ø.œ[©₫Ö¸´°±.`Y₫₫₫·o߆¨Cw±rlEVVÈtr{„±¬G‰£‡²²² ü Û*Ψ$¸0q,ÑÑÑO8°QÖ2Û…yb+¬A,óL}}}ÖÔ³èjÀôôt&(‘‡^¾|™­‚ºĂxY­)ÛO¬aíH«é%‚¬ ‚(K¤¦¦Nœ8ñ̀™338Xg!"»«HOưüüñ¼*)) ÿa#°™2ƒ‚¸²…‘¹®[·®W¯^¨lÑÀ‰Èă pPÏŸ?gsđUdêĐöđ^DḌxˆ’~˜¤‘ơ–·ùă˜Ă!˜¼gψ“˜˜˜½½}çÎá/9àQ0«ÀÀ@æiÄ$--M‚C\\ùøñ#Êr…s@NN#«¶bËáđ±Î_1(_CÁƒ½„ …rÿ₫}Ö7& ‡•Â~boa‰8–œœœ̉(Ḍû÷222°Gö²Ç†‡Ä[8RVyˆ5 dñ¾ÇêY5#¦‹ÙYÖÖ”ă"€]å`O1¢ÈàƠ¬Ù*k³*0yÁó™Ø4Ưu ‚¬ ‚øM áFæDmË–-ûöí)µóöö¾zơê7°“Èt›7õ®];¨¡¡aâ¬Yơt–§BüÖ¯_¯¡¡±råJÑ́0;iff†=ÄQó#0¥‚£s€x@9(&$$ÀÁ5j¤­­ÍgÓÔÔü;ÊÍÍŪX̉/°5üG̃Ï< åøîƯ;))©|ơ]Ø:ó”ă˜1c0Á¦óññ9uê”§§'–·³³ûßÿ₫÷“¯ O<ÔhÅÅÅ jÿ°‡Ø1́kÓ(uuul´8#ÚCذ樨(6¾›`+‡¤À˜†1ÛÁyËêß va19d=¾`mØO>ÅúÚA1Á`µ´´Ó( … †µóLü +€-b¡^¬¶ÁÇV.µ °8 t?V.k̀Ú£ ª|™äăŒT3² L„B1„-Ó­› Èú‚ ˆïèß¿?TêÀ7õü³Úéáááëë‹]úđáR[}}} ccă¥¸-ä©‚'ß¾} £Ø³gO§NàHÍE¡\úơ뇤ÿÚµk¥;>8ü VÏXà?ȹñÿÂ… [·n}øđ!²p¤Ưé̀™!đÖ´UÚ0“a2ƒ¤œ=½VZ»¯KR8Û̃½{q–̃ºu Î?zôhœ%²Sz1G)„iÀÙ"##oܸqøđaf_°&œ*x«R¥J¬v»„°À…ú¬vÑ̉̉Ó?öÔ"®ÄâŒ[‘‘̀Ô……ƯCÙA˜6õ\GGGOOkcÂV*%‚3Ơă Ë ºÏa=è >ÙÙÙ{du‚‡U|ùNiÖ̉ơdžàĂ>†£`'° SŚ †µ¸¢ ú·t/+‚ ë#‚ D¤GƯ»wGẃرˆˆˆß¹id‡nnngÏ Ä Û377·¶¶†æ5mÚô÷7(E’º–ƒ9° Ù;wvèĐá ÔwđàÁׯ_oÔ¨Qñ?…d÷éÓ§¬–Iđ”ËÈß¼y9~.KĐÅS86b(æ¶ÂÂÂüüü`_(G¨dƒ ‡€r455P¡tE=ßÓ˜¾¾¾7n„¦Âp¦NÚµk×¢E.**9Rëùó¡%¬̀† ²L`†, đ·Û[ÈÛ`t{hIBBBrr²’’‚Ï:AŶ455=A‰Ö wH=Èü;w„ëuq2`Ó8:Öm¬‘‘Q‰ûBûYsÖŸ)GœƠ ă,Å ;WY $l g{À’= (æ‘UÀ€ưôP̉¡sssY¡Ds°jF¦‹>|`ƒ…`s°DX4’…ơ+YAñ«X·nƯÂ… ñYû¯̃VVVÖ‰'NŸ>}ơêUd{&&&ƯºuƒmåÁà@AYX†BD‘4Cÿºtẹ́ÛvÀÀÀiî̃½{½¼¼¶oß.èƒ9qFF† gHAS7–#%eU:E$^Zhs|³wŸ´´4Xë•+W ô¡¡¡Hß!8¨;¶iÓ¦twƒ‡-̃áèÔ©ÓÍ›7YÍ$¶‹È0‹CÊÎXcÆ̣{†€f³)pgyØ{äïÇÇ"x:QCCƒµí,¾V¬X±%GZˆˆ±±+îƯ»G…"P°h!b[œ¦­%îÄ~w(~ß?ù€» -dêÈ₫ăIII²_7XƠ"³wÖRW ‹¬ïVPü‡{qơ¡tàđ?ÆÖñŸù*kV Ed~£Ö̉̉Â4}Ñd}AÄcĈ/^D’7ỵä_±~$‘îîîôöö†ØÚÚ6¬/G™‹²í³gÏb"&&ypµjƠ?^¢̃#©©©ááá,›t·ˆô¹/«ÇT)())¡€N ÚPÁ:´mÛö†”µưiŒÇ)„óA{ÆÁ:wÅEʺÿaU¾¸5j„xbBĐLWZZºh…ÎwƠă¼ c>î!(5>Ÿ+ƠîâÔŪ~́Z‚ ë#‚ eøđáÈ€¯]»¶sçÎR\mrṛ–-[œ‘å@íFeËQB‡,u¦²qăÆ… ºººZXXDGG#¥ b₫ôéSÖY?ëÈU, óFV‡—… ×.Lpp°¥¥%V…́¿¼„ˆÉD|3kÖ,6=;;s 0 6&J4 „##£ëׯ³éC‡M™2¥E‹8ù‹ßUdaOƯœ5))éÖ­[wï̃ ‚-Ă:Ùó~,ÎÆâ´̉”””̀÷h¥È̉¹sç¼¼¼äôôtx#Tơ+Ê¡cơáÅQk÷2scC ²+=!!₫†ơ°kà‡¸̀µ´´„]AA¡8ÿöí[\øØÄ;wp“ÁúLœ¢l,–ÖpQú₫"Èú‚ ˆïK;vl``àO>#àèÑ£«V­BÔ¯_¿iÓ¦Íå(7Ⴜ±Önááá0:&23dxơë×Gn·hÑ¢#G@Ị̈vç(•b‹:u‚ÿü¢'â₫8±±±0???ä¸)¼=Wfjj µ[Æ!¼<’́}ûöM˜01iß¾ư°aĂ:wîüĂ[ïω€€¬ iô±cÇÊ÷sU«V-làGĂ××·…‡âă·À1̀̀̀P(ßJ%8ŒCxfnnîùóçO:åííëÈÀÀøï¿ÿ ?†W¶€÷²Æ̀ÅY7 È«ƒÅ­ăÉ“'pcÇ~b]́߇3ÂÖ ½„ B­ÙĂ™XmNN ˆ·¦¦fë·â™””´yóf77·   fÍơë×a—““+!…±M‹^́ơë×P8ø!«E„fgg«©©!¶l8MèœàqJœœ́‘Ô|‚-çóƠ«WÙ= NX­Z5A+ÜbÊ*AơA”mX‹Aä?ܤ yö¸qẳÓÓœœÆrˆ₫Qóù|2̉ –°ÆÄÄ())± Û¶m‹¤ŸuÜÿóÉØqôíÛΆüøgVƠ¦M›'N°êÊĐ —.]:ỵ$/11QGGâÚµk×-Z ל5kV©oшCđ̣îƯ»6l€K z³gÏ.铬633sÆŒçÏŸWUU¥›CVV¶°>pq;w'ü›BxáÂÖ×.TÊË奯¯Od}Aå„7nÛ¶-))é¾Ưׯ_ÍëƠ«×+ä‰àÑ!‚ÔÁ:à¥È2226mª««khhˆ´¦ÇïÙ“Ă‡GFF***"»ú±* Ô£Gà÷}àÀS§NaqFÂd½è„¿èå–%ïØ±cÍ5?~ttt8p`1WoYù™µkוâ`ƒåÖI>«÷î‹‹ËÙ³gq=âbÄÉlgg,lù5k 7 ÇG¶nƯºsçÎçÏŸEa'544RRRl™˜˜À“KôY???ŸgωÔù‰ruu}ưúµ¹¹yŸ>}ÎçÙ,Y¸ù¨³³óÂ… åää6mÚT̀~;¦sÀ7`/7õ$÷+u?á™±±±æ™3gBCCuuuq 0@VV¶àÇ¥¥¥ÇpN?ÜöïßߺuëE‹•t ¾¿"Zç&&&Bçà„7n܈ˆˆ¨Q£́̉¥‹`Àuuơ ÂLNN>tè»»;n¶̣̣̣ÖÖÖưû÷ÿ=ĂÀd}AÄ0gΜ{÷î]ºt©˜Ë#ǵµµEZ°}ûö|yÀïäÑ£G§NB¾‚ưQPP€ÑYYYÙØØ”b)¿”ëׯ#UÅ>Ÿ?¾øŸ;v́† ₫øÎ_¾|ÎÿlÚ´)R½Aƒ-ä(£—À@×»†ƒƒÜFáää$¨)ŒU½zơJJJBL¨ÜÏP·nƯ™‚9¬a§««kLLLÇq̣³].”{=¦ÓÓÓqnÙ²E[[Ÿ¥Ơ¾‹²²̣7GÊÉÍÍ… ^¸pÁÛÛ®ªªjjjʲçcÙ°1@øS₫₫₫PAOOÏŒŒŒ®]»>ÜÀÀ€‚LÖGAüyÁ÷nܸQLå8}úô±cÇâââ~çN&''#óæaJ5jÔ°´´́Ù³§¹¹ù4²|–ªêééƯ¾}»8Ë>|XZZÇ₫ûw{½ṇ̣̃̉ÑÑÁsỵ̈w9ÈËËÿÇÁ.yóæY[[oÛ¶­è^sNœ8ṇ̃åË5k¢4ûôéCw•̉!ÍÁ^̣ù|ww÷­[·B-ôơơÇgcc“ï#222‚Jæ„„„Aƒ9sfäÈ‘‹-ú¾|₫fÄÅÅYO3Â=$ñ¸.‹ƯÜÜàu¸W®\™Ưáä́'’|ӢȰä®]» 5²··‡%~³₫– ë#‚ ~!ÁÁÁ ,xñâEÑ‹åää4õ<+++$$©đ¯̃«øøø½{÷"“ŒŒDn×»wï₫ùg4Gù+‚I“&!1Âa F+‚eË–-]ºô÷́Xvv6r5hLff&4oüøñGư«®AwD7n„EÀ–/_^Xm^ơêƠá(MD,00î-¿߆Cط׬Ỹ¯_¿3fä놪Fû÷ïgÓ¸¥`¶mÛîØ±£|Àñ«Á©.ܼ–ñôéSggçÓ§OGDDèééÙÙÙAđPd]8K>~üEæêêÂ5jÔĐ¡CÉÆÉú‚ ˆ_ dĂÊÊêܹsE4cKKK311©]»vhh¨¸¸ø¯ØÜÜ\¤nÈÉ®]»¦««ûï¿ÿ"]₫¿Ü3ỵdäL½zơBX̀ÏÏïưû÷E´ưóe±uëV¸ ̉åU«V̀í₫NØMNß¾}q–"µ-lx(PRRÂơBOúưzq°é¤¤¤ñăÇ8pÀÈÈhÉ’%-Z´^r&X}u»vípÏQTT¤– jjj‚9(uëÖávï̃=ccă¢¤đ]Ó°aĂ­l±°°°ùóç_ºtÉÚÚz̃¼yEóAơA?Â"º}ë̉¥KFFÆÍ›7K×÷²²²ö́Ù³k×®¨¨¨îƯ»O4é_¿¹,` –––K—.-Âu7õŒ̣ú[¿r僃ŸÏ_°`A¾ó ¸ 9Âô»jƠª³fÍ:ujÁÅ cbbÔƠƠ?^̉Á!ˆŸ…²‰Ó©©©Ó¦MĂ}ÆÔÔ—p`§Nâăăy\{iœöS¦L™3gEïWÇdÁœû÷ï£tàƠªUƒ3FAAA[[[đkJmîܹøj€®^½:†!ë#‚ Jk×®ùûû#=-LBÖ¬Y¢¬¬\*›óơơ…̉vîÜÙXym®ù3\ºtIEEñ)l ‰³gϲçÍJ…́́́ùóçoÙ²¥gÏk×®EBFEPLŒ“’’"##ÅÄÄFŒ±cÇ| ÈËË'&&6jÔ¨DcB¥t‚u´ƒé‡v́ØñÎ;ơI“& Úè².L̃½{gmm °^½zº_‡––Ö6ö266· #Gà¾7~üøÁƒ£Ôsđ¸±=¦Nº{÷nssó•+W 7HơA%`ܸqË—//8?%%¥Y³f3f̀øÉ±ø|₫Ö­[¡È´†îååEa/[[ÛoªøñăÇ›6múóÙC.ǻ́Œ|k)…ưÇĐĐĐÀI»Ă„™™YA÷ƒ"Uïß¿?…뢩©yáÂ6íää´víÚ!C†¬X±‚=N&''wö́YW—>õ‚ ˆ¿|_²ÔG|¿Ö¯_?66¶¤k»ÿ>́ .Ö‰‰|Ă7%bÿ₫ưƠªU›9s¦‚‚‚đ|???áq̀ÏíÛ·{ơꥣ£sèĐ!h EøWP»víøøxWWWH JªI“&Ÿ2¡>|¨¦¦†ÿÔo¤HÁ™óù|öøßæÍ›Y%R×®]“““Ï;§¨¨xøđáÎ;S¬~?¸ Ú‚ÆÅÅơíÛ%2lذE‹­ä@Á-[¶lơêƠS§Nư{úư"ë#‚ JÆ­[·^½zegg'˜“““£¡¡áèèÈú¸+&...ÿûßÿZµjµuëÖ«W¯R`Kiiihó¤I“öîƯ+˜“̃¼yó­jÅ«V­:sæ̀Ó§O)°¿Ö)‘‘‘QăÆwï̃ÍfBœ?~L!5ÄÄÄX3ÂÄÄD===YYY999È^JJ .Ÿ‘#G–âăÍÄP»vmè7›>{ö́ĉp}±~³²²`ƒ®®®¸Ê(\d}AÄÖ¯_/ÜĂÄÛ·oëׯ₫üù":ó62mÚ´=zlذ±ø,[¶¬jƠª7nDöÉæ\¸p¡eË–Å_ƒ­­mhh¨¯¯ïŒ3(¿ÿK—.U«V EP£F ̀é̃½;²ƠÑ£G ú± D xƯíÛ·11eÊ”ƒ>}º]»v¸ÑM:ƠÜܼV­Z...¥?5û!¬C‡ûöíc¿°Ü½{·fÍ666[·nưEƒ d}Ae www|Y²é´´4(ß¹s羫|×®]cơ»ví*Q• QR¤¤¤́́́œœœX„àúơë­[·.¦ï={ö́êƠ«²²²É?…¥¥%.1MMMgggö4æ;TTTFYØ@„ˆ°†w9}}ưÈÈÈF]¹rwȪU«̃»wÆ`êƠ«wñâEL¼xñÂÂÂâùóçnnnñññÙÙÙVVVõ¼Á»JJJ(²>‚ ˆ¿|56lØ=bÄçó4h lÓ¦MaËăK²‡tçôéÓqqqÀßĂäÉ“­­­Ö‡ø÷‘<‡ .À©5(€ŒóƠ«WÆÆÆx̀Ù¸qă°aĂBBB(8¢ÏpÇ·mÛÖĂĂ£sçΉ‰‰Í50`ƠŸ‹µjƠb½Ü¼y³nƯºFFFPt ¨à­[·’““1MQ"ë#‚ø9~ü8k!Ă㆓9s¦Á7—|øđ¡¥¥e= ‚®ˆßCË–-‘¾°Î$¢¢¢}¶°——W¿~ư¼½½Kq4?¢TđóóëÔ©Óÿ₫÷¿µk×öéÓïââBí¢Ë l@¿¹sçÚÛÛC!ÂÂÂđ²wï̃G¥àˆmÚ´‰åóù“&M:v́n-Z´°µµ}₫ü9.C))) YAÄ_—†N:'NÔĐĐÀdÁe|}}ñe¹zơj|_RÄ₫đíC‡ÁúâăăyÜOÚ—ÉÍÍE®£¯¯ŸœœLMàä½zơ|xăÆ­Zµ¢:[ÑDLLŒLăææfnn¾k×.++«–-[vé̉eíÚµ²>‚ ˆ¿Ö¤N@@€««+Ó a‚ƒƒÍ̀̀å$%%Q¸₫,}ûöíĐ¡k̃Y§N‚ ܼy³cÇø{§p‰2'Nœ€3ü÷ßS¦L₫äĐ‹ÄoFRR—áÑ£G«W¯–e½¿¢IOww÷jƠª:t¨råÊJJJt·$ë#‚ø+¸xñb‹-˜Q?~\ø­ääd]]Ưaƽ}û–% hkkW¨PáîƯ»‘‘‘uëÖÍ÷®“““››[JJ ªLC¨]»vóæÍGŒ±iÓ&²¾²Hï̃½»témX¿~½½½½¾¾₫ơë×),¢ŒMzzú©S§úôéăăăÓ¯_?SSÓ5kÖPdÈú‚ Ê97nÜ€Ú­X±BKKËĐĐP0„ ₫₫₫?¦¯E6mÚœ;wîƠ«Wù¬¯ÿ₫|>ÿÎ;¢2ÄéÓ§á 111sçÎÍÊÊ’””¤˜”9äääâăă-,,Z´hÑ Az˜VôéÁ1bĈ *())¡́pó¤‡ƠÉú‚ Ê3÷îƯ›:u*¾ü>|Èæ$&&jkkõ¼yăÆQfîëë+--Ư¬Y3ÁL[[ÛÚµk£È(>e ==½aÆ 2ÄÀÀ`Ï=£G¦˜”Q|||mđ÷÷?xđ ½½=ÅDôÙ¹sg\\”_‚Ơ«Ẉä oCÖGQn‰‰‰ 122b#7œ={9( Æ5Môơơ·nƯªªª*h8tèPEEER¾2ʲeËTTT lĐv HÙÅÙÙyĐ A½{÷¦áʵk×NLLÄíÔÀÀ÷U|!ÊËËSXÈú‚ Ê©©©®®®»wïÆË•+Wº¸¸¼zơ"#²ÆÅÅÉÈȰ̃\Ö¬Yóäɓ˗/SdÊ. .Ü·o_TT…¢¬³ÿ₫;¶hÑbđàÁ‡¢€”¼¼¼œœœ=zÔ Aƒ/^{vvvVVƠ’ơA”%́íí¿™ˆ¼ÿ̃ÜÜ\đRYYyƠªUC† ¡ˆưq®]»fddTp~XX’KÁKö8JŸ>}æÏŸ¯©©IqẻÓÓ;uêäççWđ­‚íØ±cĈ4Q&!!¡wï̃>Äz““Ăæ»¸¸/¦  °xñâqăÆQÄDøøø79sæùóç¸6Q|¯•‘‘9{ö¬™™…‹¬ ¢lpàÀWW×́́́¢KJJ:tè¦M›BBB>|ø@=LüA utt‚ƒƒ‹³đ‘#GÁ¨««ïÙ³‡B'² ƒˆAHHHÔ«W”OôY¾|¹¯¯oÑËHKKăÆKÊ'jŒ?₫»măqÁâb$å#ë#‚(Kˆ‰‰9::Λ7ï»K²~ù|>í$''÷₫ưûï.ibb¢¥¥Eư> 6,ºI§¼¼üªU«(V¢Ïúơë!Ë–-+b™?:”b%jlÚ´©E‹Eÿ¶‚²#å#ë#‚({Àú`/_¾,b++«̀̀̀û÷ïS¸D„»wï6hĐ èeŒŒŒ¾P·«e…Ç+++'%%}ó] ha÷îƯ)Pe‚¥K—JKKöƒZÅÅÄÄfÍEA†®©©ill\Ø|>ŸºY"ë#‚(“øøøhiiö®³³3JtPWW_ÀQD©µnƯzíÚµ«2DBB‚¼¼|FFFAI€ơmÛ¶BT†ptt”‘‘™:ujÁ·¤¤¤àđªªª%ÑÄÈÈ(&&¦^½zßB™â¿ Ăd‚¬ ¢,Ñ´iSCCĂk×®|«qăÆ¦¦¦K—.¥(‰óçÏwss»wï^Á·ôôô`}Ô°́¥D+ÆÇÇ+**æ›åÓ××oÙ²%…¨l1eÊIIÉ &䛟íääDñeÔÔỖ¾}«¤¤”ï™[\¤M4¡øơA”Uüüü*T¨o¦Ê¤I“¨)‹Èr÷î]))©>ÏTWWoß¾ựåË)>e…¨¨(áæ»•*UB̃yøđa NYdüøñö1cÆæÈËË‹‰‰ÙØØPpD99¹̀̀Lü®~OOO§>xÈú‚ Ê0́!áîdddœ­¬¬(8¢̀ƒ„  eŸ>}–,YB‘)»ÀÛ½½½¡î́%œÁÔÔ´Zµj™2ÊèÑ£QˆĂ‡g/áđưû÷§°” ÄÅÅ¡y©©©<®innn®½½=E†¬ ¢ ³té̉µk×~øđ ŸÏ¿yófû¢c#Gܱc{9nÜ8R¾r€………““Ó¼yódddpI‚ ‚ ‚ ˆ̣ YAAAYñ'yóŸùÚ`qÅ*˜N ~møp[ AAAeÈú̃^5U0ó1ưbâ ˪T<Œ¬Ww£ŸđxOØ+Ơ¬,¬ ‚ ‚ ˆ²d}’¼Ê_Ï’¤¢!‚ ‚ ‚(7ÖW,̉#Cn\¿tçirrR:_FFFº¦º¦NCcó6µ ¯ûJq=àÆÍ ˜¨7IéySªÙ¸¡®¡™q[íù~réæÓ,IÎ9³²xML»4®̣ƠÙ©a/?æqKdeeUmbnÜXá[[}èsÅ7äaT|†Ç—®Y¿…iK³vÉé}ÿ3gܯ‡Ç¿É[^½VËöƯlÛ(̣x™tAA„ a¾·B#ßaJB^Ç̀¶AnÀ¡ÓAx•Zv̉¶.µ‹+ƒÖ÷âÜÜÚ]¾?Rư¡ÇÂvÛ •pÜ‚Vũùîçt÷?ôØX›~stb‡ÿù}yõƠÄ…&_54M‹=0¸îçWU¬»¦­ÖQg̣EöúÜ´^Î6t<ö+åë¾;ëÔĐO—‘tí—{úµ¨J›yt¦AQN©\¹b^î#!ñ•ªj[Î>đd\ÀTM»5˜á{Îg²eA N؉i#Ư~Z`]ö‹ư– 5bk ̃̉¬ëâ°¼©Á^/–Zå_ô‡¾– ·Ư“á·Û*wµ áÊ8~ÿabÜ£©#{`s«Í#µ|ëç&_7V¶­µ’Ó$·×sÚ)—ѲÉÙob0˜ÄáÈë9&ùDFNÓf›ÍûŒº£HZëñn߬ZÑÅd1æÀzGû/ë{µºuơµÏy*ô¹đëƒCÔ)bù¨¸„4^ăܨ˜¯>µt¦]¾zqÅÖC§··2„¾‚ ‚(Ÿd₫VÀùO¿˜óå?7öÛW«ơ§«×<ïÅ£-̣|M,-øđ̀®ÿÛ|p®ñÁ¹¼Ơ₫éưÔ¥u¼ÿwªúZxß¾N›z¥Œ×z¾F́ͦaLùx“xå)_±W›§:ƠÙ’›GöæñLçïYÑ¡±l–xͺËß\́¥Ơñ:§=ÊçÂ|ó́́, ‰²ÛKa–÷Öµ,Jö[# *Ÿ06+bmV|y™₫`cCˉlz؆ó₫iĂRÜè+‹ú9úlĐ|ë!”¯Ăă!)œƠVŸg1éÔ½ÉƯ•ñœWÇçt˜pà^èÉaÍc_…»ÏTĐË«ĐK ˜Û̀.Ođọ̈˜gÅă‚üöN%¶9ÉÏñ.¬˜̣́QæÓɰö_̃LPGª2¼̀‡«û5YÈóÙĐ¾Ö¼Ùe›Ï«nƠp¶x-^㛬cÍ ÷˜¤@Ö÷ P™́ËŸ̀Ë9·wÛ¦ƒ;Îù}c‘˜³NƒñÇăơ=˜æ̣éG EĂ¹|₫ǗÄ ư›·8¸Ë7êŸ;ç2 <^ƒ¡a#´‹ƠÂ3îVx!ïH(Èå›c=rdíÂÖ“‘”ÄK~Éă)KÉ}w›xoèë€ ‚ ˆ̣ÊƠÅSG·­YIxVÊÛÈ[®^_êˆL¶›oÎÙÚ«ƠC˜›™ºb,øé/«ÓgÓ‹®6½4¬`\S‡n°¾2S¯2ơ¨û%-›{<̃2›‰b÷i~Î|Ăö]˜7Ñl¢÷4ˆG‰V+¼£4ÊH°OËJ± ̀²Ü1½XŹ£O^V«^¥¬½|S¾ưÚ5øbêfs_Üỉ©¥Öû_Ÿ±Ư»6ûê¼o<´Sư¼|E»•ăCª/ƒºyƯKìE_BæÓÙ"SI–‹̣÷‚\x»Óº}N®íöé…”æTç+×5̣̀^¬>éÆuª¬Z_¥Ó·ÿ]á~AˆÊ˜¤#]ö ³¬ôá)ѪóÈíøûjfz¤ÏÁÉíG}iWyx¾û’̃½ë9( eƯá vâ﫽pY2qÄÁórQ#çºô?5T†W¥±Ï/@°ä­›Ñ¼¯zs‰;¶ópa»(ùơèÆ‹æoŸÛú{Ç•.ùơ³¦³7\˜Úî«ê¾”[‡VÆĐ÷AAå–а[•“>'Rbï^\ù́{£=‚ÖèÔÊ–2Ü û佈ºÆÈφP¥ë¾}:ƒÿăñö̃“å÷Ù1û;Î<ÅdàĐ ‹YígÚvj¯\K&ûĂûÏB$Q’nZ2b£YKWáf èFu ëv¼{yÖ–ï½:ª̣ù–—¨ôùÔøa.¢˜jVWúzküOB§P]₫«–œŸ{•Åă‘ơ•2™×M¥ „Fo×Ưä5PGPj2¦&­»đ<¿h_å*yG²^_gr `n«a}vơW|¬ZcK+=̃ëăµ̉ǹn'UkÈ oÿÜ´6b—˜̃J1ÓÏyÉđÍ…ïk‡göơËâçØF'f÷ù]CY»æ₫«kO₫%ắ«Ç]ªÉŒ\ºwÜq¡– G₫‘¼?3,p™Ṽ¥{.ïo=ë}AQ~1=êuÅø«´,÷‰ Gƒ7lëÚ_1ø̣²/ORege|úç|¬k³bd²5:ñ3à̀ĐÏbt_Ơ#eé»E½³í8ö¹₫§ä«ư+à«vïÀ Ëkd›WY¿O³ˆGÚr£·/ÛßĐn\{Íj¼l±OñŒ Íà)çs$±—¯ăØTZ™¬ûUAÿjÆí̉zŸ¾ä ̉­6¨Đ¥́x®=çv­&]–ë§3üS½\Ènû*»í ûXư¾o|}¡í¤³ÎÁ’½}~ÊÁ&FN̉ß±₫à·WTƠ&('|Fë&‚gđBvSÙ=́Kê/0ƒÙ D£Ái>È6ưåƯĐåÚ²Ë Je aO"HΫ`?¯kA÷b%¿NË›#+«TE£¹¡‰•z5PEĐsÀ7»1 ~b¯¼öxUh L¥Êu4Öj̉DKY†Î2IÔF̉fC¬–ép£q»y—ëÔ<ö¥•`e³¾]y×=0ul¹óCC[~-¡›fî’3îÖ̃ÔDUáKƯT§Uh‚ünÓ ….¯wqƠPG©ú¡ƠMzjr9(í‘̀À÷[ÔÜ?Ù9f¥ZÁÅ¢/L3¼:oj‹“ưúÈ•½ớÚó®{çÅsë‰;í› /ǜ}5+Io]:ưÿ*ë“j8bóËÏwó̀ ùNŸÛUJé:óùÎ<̃ëû¾§/xß ¹ÿ06úư;nI~åêjÚºí:Zu1Ñ©—ïl5̀…?̀…—çwÁÓụ̂­°GŸ$¤}º®ek¨éh·Ơ·²îhR¯J₫JäÎüÎÙ!§·¯[»çÚóTEEEl ]³cFơkU[—óÄHµI¢ûÉ"S®‘ÊWŸ×\̀_Áă¥DºŸ=wñÚ­ûÑi5È&D¿¬Q_KϬk[›¼•|L“Q|₫¨¼Gw9Ÿ<ç—đ>ïè*W×êdÛ·¯]çzUx÷Oo>-ơ98Ơé´%QâÙ•©mû­¼lg1P[·µ¼TæëØ{¾Ç6œ=₫ùoù̉ûœÿ̉æÿn­;Ê'=©Bˆî÷d₫î₫ơ9“ùàà́©>Å[¶nƒ~[úÿ̉!Ăäµ&øûôÉâI(×%åû…¨÷ÜơTǘë@2j‚±ÄùÅ!;ódL̉nçËdÛê y—綪5—׮׌nZ¼ä[îK6}Lîе=A·U…uâ£æâëÛèâ=ؾàà íQ>_û­ö›|®6 Ư×Ư*v`K™ẈÖkætoZv•̃̃aO³Á÷ Íë­c³Ơt,VÏxqư^ô—e5gúŸ_¦ËÏë{đY\Ơµa¼³ÓµjMo`7ÖÁ¤‰\|ÄU—Í?5ß­6óÆÑ12"Û¦\y» D¤®¯v‡ÿ½D5-“áø+é¥kw¿~L¢U÷qÎƯÇ}+`ơüoöw?¯¨Ñn₫&—d“ʺĂgâïoiu§E÷~‚M̃_˜ôIùùơđ‰ yÂﳯ<Û›Ç;eßCMí £Ô„'IÉ7ÖmÅû o_D'<á¥óªªÖ₫ù8éÉơ€À ¤̉’•ø’²µƠ5Z4Ó¬•/‹M|ñ67%%ơºƠxqÁA7£̃geñ*+ỞÖ3QW–øÛ‹&çMt́+^O¾Acåœ8?_ïgÉo%U »·o%MjBĽđ;/̃e!¯‘­Ư¸•^3ƠÂkeù²¬hn=NÎ₫ơöƒRSKăVß®[Êx|ự½Ø×’•¤xüJ5T56שQXÁ÷.Î9ó×`z2üJÛo¦ƯbovØ+-đæÅ²·æ®µüçĂ½Đ°è§ï³?ä¹vóf­ «LOzz7üỴûJ•xxrªơh6kœ›’ÂƯGd%D?I/2o.X^%;ưÊ%R í—®6ÎăI¨7(D¥$ê º₫̀øøî#I<)^º§Wx½NMy|•‘nü‘<^Â}·ƒÎ‡®ß¹x&%J†—¦d7q©±M'ëö5¾U²j#o¸J I”¬Ä˪ØtàĐ¿”dµ̉5MæÏΫï­iÚ8ÿz*w<ñ,êøúå§"2•¤ù’-Z—¨‘DFc׋¼övIσ¼½üƒƒăbÓ¥¥ex̉íúÿ£cÜáµ ü:S/đ§¥=ôóđ¸èq'̣Ôá`ÿ=O»×ŒYöC»µƠà–ùrƒƠë·iV§¬oœ ßzëKüÛ}‰¿´r̃̀,¾TËϽ½QL‚·Ộ½%̃¨÷‚%&¸*U­¾µ’…Ÿ®d}AûO\]8§½ZAU|€?X(1=:V}ÁççCÛqMÑg¹çu)çfӺ׽Ï˪é›4à½ó¹₫eä–%gR†èqß6¹ANmơ½)µæêO…~sµ^²³Ë¿¶<̃†m6êR`°Óª ̀B[)¿¿j¯aö¥â¨™©Eơ·>—qîrỗYăU8ëzÉ|ú…»^ƒæ¼¨{1‚w¼ïstY^K-̣z÷₫DưöiQç¾,Üé¿đ=c?' Å[¸Ès†.<¡k­JŸ1Sxçư æw;u†‹Îÿ:Ú.¹(XJ¿}gá ·›áí6ÑâÓ‹ÿ³wđT~~¯=2²IvF"+$ѰZ̉’¦$‘‘DZTª¿†HKiÑ ¢"¤RF¤22¢¡HddÓư÷J×LưÆ÷ùÜï~Ïư÷½÷<÷œ÷œ“¤Ît̃Q ²,Ơéd÷”©_‡^û=₫ùƠ)̉Ơe\æ¨Ê5%X©OḾ7ußÛ‚₫̉å7L³Œ_w¥Ă7£1^Ûûî<̉F›₫g4đU_¾AưÇ› ä°ÔÜÖư¥ÙÁ×x8f;¿Â¬è5đ\f”T_„^?ÚFÁØZaÀ«z?5÷…ưdSŸ«¨Æ̀êưzë'…`}ĂQ3®&œ'`{l™Đ±Î‚œọ̈éx %¼¬¬x—_? £ÛKnzd*<ûTlăB:k$J¯hL2!¶{ÑôOÔ¥»±ÆDS5´ưÖÙ¬´q-&¢T•ÈÚ:ÉfúåŸ[ưư$6<²Hï8Ê•1è.H-ù¾|“-ˆ“g“Ÿẹ̈’m÷%f~{‡Ưá‹dµÓơ(y‹|c"ơư{óƯƠ¥ê/#៹P4|S¤“ØjÿviYywG—!¡3Ï̀˜±ăi%µ%ÿ\{ûĂoÜç53a¤f́m1®*̃wĂ—Hsö›M‰ùƯ|ƯV̀¦ưy$lÂÊȨ®ƒt'›2Ï=áÉÿtf6>¸Ḱű>3¤|Sä]ZH₫ NsèÎÙçr¹±ÇÁï4íEzÖ#ÑjƯ(ễLí]0ñ™4â•ṿÉ“ÙT¤ËOđ/?°>€G{$b»—ɱnƯ{vư~jFôEô"ßLÛîæ¹Ísúi‘—àCzÔAƠiO÷¦é&o÷4‰¶G‚]»₫ĤK¡_?äøê.‡ư*ăx̃êz{7åXôưŒ ê#<ƒ&‘«oFØù)n<–ùâ{r4£h'c‰íU61'¯=Å[*“GƠé<¹̣!DL¶¯ñ¼Üî )7Óḱđ”1§ưIơD»lgvKÆ„UûŒwÜk¯½{úIÍ̉ŸÛ̀ư;ᆸ~VË̀;váøú₫¿$^¹ÖQs''Óy“¬·@Z̃)Ö>VS†×¡mzŒ… ©º Ú ñÙaªÆ¶³ñ3UU•DÇrÎr‹œ5đ4V…Í—Eªú3Ø“tzµ̣¿üÀú,ü³V ×.o²…ơ…÷ÜæÏđÿ€E™+¾/»Ûđ¾äöHÛQ…1U]¦çÚ±2rÖn} ̀Ư:yUU×}à v₫jûx #ÈK¸9†öX/*(ˆåçç2Đv]QI]÷m ltS\Œ4íÅö1¤9E]ÉÙL5V€Ă>₫̉ÆÀw4Cr©]đŸŸí–œCjÊ«è÷¤½›ÇÎZ7ªQbXâ‡öÉ€£q=:Åárọ́:¦£³8±hqKEÆ­+§¯Ü9xƯëÉu/²Í̃}`"Ó¯‚ăꮘw#RÂ5åÑNÂï¹üÀú₫­…¡gOÅ'?̣å É Rém̀V†1Óÿ—đ¸Jûc<¯s>´bäĂ@áè¾O3rt=Co<٠ؽ̣'%²¯¡;Y±îCÜb9C:œó3Œ„ÔÆQAïÙäïàº/©ÍNî¨I*msª³—ÏäëÏË»WØÖ¦%~$M‘́ñ§6îư¡t™ỷö¢×*óÅg&bÉ6xêíI—:kÉi;¤Kñ́®Í)û†]ÆØÚ½È~»¹c;Éđ–¼i&kEßS?Ú¤ĐÑ·“èÁ&Rôá÷]~ÀŸ¤¥$æ̉­ä&ŒVNw•²¬¯w²bĂ£Âbï?Ix—›Û¹XT/Ÿ:m†ÁtUqjˆô £jŸ›K\ç¬æưªG:¬ø©OĐ1ÂO,BÛo¤y¢8mKÿ]6‹DÈăĂƠẽơ4_¹ÔtS`±aG'Ÿ&6âÿ'7ÔØvô9!±øÖ‡/û`™çuènîø̃4₫ØŒ…ˆ“vû×+w-J&¯VÔ:ûä¾®@ÇçyA”£¡;©q™¦ó:uÈ¥nŒµcă„c‡3Ûă¬Zăvlu§p}~}a!±krô˜ư¶[»ÊçæÑFîĐíÈœ½óµHVÙ́AÜXfçe‡ëíå₫äe²]2+¹g*?“´±éñă ô?»qï× ĐÁ¨7>•ǽï öp· _kúCâĐÛ_%mm=Ó>°ºMÄö†>Y©ø-·qU¡;´,N·çöX‹ø¤SP†ÚđH‘zHÚ\´Aơ»#2° đÊ`X{ªăøz‹}m¢¹„Úâ¤Áö¤Ó}7ÎüåËo¸ñ%JW|fú64ƯáºN÷Oä `”\ÚÙÖ×T?3…5gû^Ÿ›‡^á^»:†d0:cÓˆøà¡ÛïÅĐ~ k¢̀?^w·±ñ ‰>± ½zƯLFoŸ×açï ùèEt°ë0́•«Ÿk»asI"…9j¯=øää\Á“Ư!jïá¨7®{í²…µP̉jƠ¿­)¹&…îKÁyÓÚQ5÷©±ke(kSÁô™÷Ê9¶é!f²!fƯ3‹üÁ0 Ë"M;l.<¤×#_°ÁEß ]ë`Ñ»{—Êú$ÆồÍ}—ưœ;ûù©ûºfFJn¶4—+oö^MàÚLP&vĐ‚B$Ëçê_o,BÏ®´§èÓºó6†.×^¸̀ấÑ1ŸẫàĐ•¤́û*éư©RcÇ,›Ó÷ñíëy ¾å!‘T8º\]ÍÄÔ$^{çÛVwvîî-…œÎé/öqüäå7l¡¦ù¦»₫‰:́„̣Û´¥®ø]²ÿÿ̀}ä́̉ Ø…Y],Ú:÷Ï%‡]'E{à ²¬¯Çgï‡+’‚&ïº/]æhm4ṣ¸±£«*3BÏ;û½ê vTÇ9*̃)}®Ï a`Aà7v 6vù©]FwÎ IĂEE~âPƠBkœt9̉ëYFt¶ô_à™dYdÓw}ŸTÙ˜QÔ9 ¬Ăÿ~|b:—„^߸ïkfD0jFdÑ/h«ÇEV½Ü¡+½̉Vz (ÈÆnñÆn?}uu¹HÀÀ/¿‘µ£¨Ụ́ ¦î"c'Lsño°Ỉ¸½ÑllD´ư´¥¿d̃p4ßp0¿Ç±L÷Ĺ¯Vị̈ JẹÁ-k‡¦ơØVÔt‡Og5ÔççÛ$g+‹Hl4=̉Ú]–UpÙVƠoîS™¸×ÖIN÷”-OÅóRCöAö Më«Uí¦|2ÎïÓ÷ uƯJ^¿̀̃MÄퟡ±¥sœœd­ÿUe9‘5$, tƯ¸ØíR_gѵó=~@G¸K:ăÜ&h¸fuÎîHl°oơẃ±·æƠŒˆEèËz«ªØöÔTŸÄ'VªdÏR4Æ(̉k¥tÎrư¯®då)ăIo|è¶'̃:(̣è¬ôØr%kÿ‚nk…çOºiÙĂmëwfu´¯wjº'âÔÖ®•àỬĂíVW¼%ÊiÖ<»=wß|ùÍÿ–ˆu_úẹ́̃)3üß÷ÜÜàNÍ((­ÀpĐ0téçáă„»Hó·Q· ÏóMZEœ¿ăÁuÚíM(pu)Wœ 7úlĂlĂÆ×›ˆĐ“Ë6̃"đÜ~üXbñ³¡4ú́FS÷KíƠP'œS̉÷µ×¬RÑ’Ùñp.­VpNI=yư±%h-·Ë̉üÙ²¤ds¨­˜©«X¾å!^¤³Ô—Ä́_¯u&ñÔ"ÅSØ̀̉`-}}C̀ú’NMéª|…éûøú̃ïEpîuM©«<·[{QPx—̣ư ï"L9‚a!ŸÏóm)-ù.»&Óïêưä1‹e÷™´\ëÉœw¤…oØyåvñ R'FœS¯{Æù,dôéó¸ïo­çÂ=|R¤̣ÍáÊ"¸ôwsN}}‰âđđη°M]뇫7ª²ô’Œ¸}ÔĂdœ‡÷‘ªDÛoFƯ⿜f¹ÏGD±ö‡/ïƯỏ4}!₫«hjX0T‰Ù³i /-ù¢êϯŸE~¯ ̉8~Ô˜WzpÉ4sá;;ơ!0*,>Zd8‹Ø©¶iµ—±·d*†oª zFúoă<̉si[Y|Û·÷d10s‘ÿÿ9퀘₫f̉´ưƠ"GöÏw‘œ¡Û@ Ü»n O™w0»kz䉡£* ddßĐ²¾ªèđ{]¤n¶!߯œ·ĐI߃\ù毺iĨ™H̉‘¹ªö·¾Í%Ïă׺óñ‘>Qüuô1́ ùáô< ß4‰8YLŸÑ:¢ëÙæ¯»iÉĐqتößßB„ăÉ,»̉¤00ËÎÅc±qä{.è”·ú̃Œr¶Ữ†Orƒ•ñù¸ÆDzµđïk®ùøg«XH‘VYvU>›{å^ÓØ;îÇÛF«»w®rXăµ,sGG=a/é½ój¹e‡L>ÜÆ¥ư}_́‰g¬©›Fû‘ó®­ëª|]µEi£ơuø²€! aô†(ˆCœŒ̀g£*¾ưÊ«-JLư& ëÂ’)đ’•̃_¦evÈÆ"Ѿ‡m|™^ăŒgÁÆ;&]®Q1qÇJÊ’·ƒW4u¶[·ÂTd %yœ“¤Îkƒ–ÄêR퓟ô´£Ôê…çë»qBL¦ªÙÙ7´¬cæÀ°ï-%'pÿÂY«ŸóH%_°îUWåk×n»s{ƒÉ;™Œñ¹̣LŸ¨vƯk“—ÜêP¾v?_ê¶Ë:bùÁ3¯[v^t*ëÜôíï‘éYvå—öÏ{CôtÎ…Îú:†‰ËöâmÉ̉ƒ™{Ó¡|XûÊ;öMÿ̃–Ë/΅\uĐñ[DuÑ«W¹?}ºăïßÜÔ„aMXSËg û̃ú”@ÛO%̣¡ä̀NåCpNuñÑs﮸D9¿r´KG;¦'ưÉ”¯ưƯXù? º® ß6ü34#uí°´³ÑƯIĂ¥¬)÷}ïÛ¦¥¹¡cjÁƯA2(ĂƠú₫fMñ«Œq±}‚âö/C/ ³KúäÙO¯WIÇf̀s'íôC²ï¨ôĐŒ–¦±U vg6ÙÙ7œ¬o'{ùüóço±Åb?{ÖWϺêÆx!®^¶={ñ—¸Îê>¬¸¸®×£áE„ÈM‰UFCĂÂÉ>¦Ë»øèUüÜäĂoÖÖŸÅ}÷:‘ÑM¾÷réa§öWXx$ÔÑkæ—#Ø«Ó3¦îDŧ#Gïmöè­{É–¼ j+IƠVf'^ï3®×Ä+̀_‡Ơ¹³Ư5cEw“yæ~.›u†®ªŒ5ddßP³>jơy‹0ßïíSé­Ù÷]"ĐçŸc4Y:ê”Dô,6Z­[e '1IĂÈ\¥º¤º—ú¶ªÛWo‘Ïóđ0Å'ퟬ±…¬=*ÿº''T:ßmñeQ̃¥ï~ó9›Ệºô1óé]¦Á̃e“Æg₫ | >DŒÎä+à‰÷\<ơƯ=©§Û%ÆøtIå¶ư±0.Æ’}>71,à†&¨²|¾2ÖT^˜zÿt@G®§óö|6,åĐĂC 3:Æï¯Ûv{(¦®“Úàëǹ ¸6'¼F²ư™±k3p¿¾ơ}q&BúĂ 3aÍĂîU‰=‘‚́ƒ́rÖ‡ñéÊ<–;Áê»6“Ăi¸Ç’ê˜å‹±†ÂÈ S7îÇÄD̃yω5Ôs›Ùû̀Ї—áƒ́ƒ́ªÖ‡^³yúUq²Î<ï¬Pä\ñ£÷F•o™Nªq’%´Ñ¦ÿ äT́ÓW¢W¿ÛPókZXk~?¸ü¢ ̣?ùèÇè®Ø¥»²²oxY_{|Ç-I&,ÁZ ÷8ơ3Ú ù¥ûOx:¨pv;?© ×5†n×;»‡IïV «nqÿ¢O·ñú°æ&̣¹/]«Ç±ḅÙnƯ77wY‹}!ί±¶ÏUÄÓ‘Ï66÷·öă·TÉÛE½—Ø&¬ïN¾ö›̣i^ȈX>áírœlg›ïâ/zÄcØ sü₫ÓÓo’¸¶¤–D́ÖßN¶>÷Æ ’O‹~r»ÖQz#Yg99ñ¬tđM`}ä{Yä€^¿~×kù®?¹ë”=Â>W3k&úîЇyzßkG#SÚ̉÷yñ;3 ;e­^¿ Æd.{[Ñz~˜$!½m¶>WḈá°>¬ëÀúí}}Ư₫æI]]]ÙÙÙ7lØñ ..; ÿ6 sfÏxøè₫Û·Å\\\ÿ6%;v́ÙºmÇúºœ­¡¡7—8èmaaưoS²uë`ÏV*ªđiù³Ô××{xxL€ß ‡Û¹sçß<#©,RSS¾á 55ú_& °°)ߨQ£ôơ5^½z9̣[ Äá˜Fưă4¬·\…₫º¹º̀£'&&™2¨>-AùØØØ˜˜˜ÊÊÊyRÿÁíF9سÏÎÎ)Ÿ„„'''dXÀçáÇèokkkrṛĉ_¼x1ü¨©©¡¿_¾|AÅJssóÓ§OCL†ÖÖÖ555¤ûÇúô b2tiiiáààh"2jÔ¨èèhmmmËPÁÈÈ($$MÔÖÖFEEíß¿bÖ0„ṇ̣̃BE“ÎÙôôôñăÇ¿|ù"3˜9qâćCÎ~üøñöíÛ3gÎ466†È iÚÚÚ|}}IÓaΜ9·nƯ‚È EPö±±±544féèèЇ-XßPAMM-11‘4]TTTYY‰Ü‰‰ "Ö0Tqwwï¶$;;[XXøƯ»w8â38Ù´iùliié+¦M›ÆÊÊ ÁºhhhÿSRR’œœ́ééioĂÜ=̣}ụ̀¥söưû÷Ÿ>}ª¯¯g``€à rÄÅÅß¼yC¾„ŸŸ?00pÍ5°>€!IRRRYYYÏåyyy<<<?~¤₫·Ï®½1wî\Tv́₫µJE¥©© ­s‡.¨”™Đmaaaá;fΜ9~üxÑ‚‹‹«ºººÛBÀăaƒôƯWRR̉syhh(XXÀPeơêƠ}­*--åää,((€6-ƒ^›ü}₫ü¹²²̉ÆÆÆÛÛ¢4é«í_KK ̣yt?BƯûPŸŸ¿×_Ó‹‹ÏŸ?Ö7hikkcccCŸ¥=W¡¯BôÙ !ë’ÔÖÖöÿü^MM ßÛ·o¹¹¹!\ƒ•¾V}üøṇ̃åËúúúººº¨¡Å‰'Pöơºª©©‰……ÅÀÀ <<5ø-,,́ủ &&¦ˆˆ===Ô`£¾¾ƒƒ£ó9̀·!;;{ll¬††Ä ¬`ˆ1₫ünóåËTˆIKKƒä—.]ÊÍÍígƒ ”””À³CC GGÇ~Ö–––fdd́ß¿ßÙÙb5˜‘••}÷î]?PSSûøø€ơ 6‹‹ÈŸªí Kpp0XXÀĐăÑ£Gä³´´´MMMôôô_¿~EE4M Z[[‘ơA¬ 6làåå5j%%%ƠÇ‘àqqq‘ÿ¡,C…NIIÉÎ>Áµµ5Ê8qqq”¡¤œmhh(,,DùHÊStK¶µµmÙ²eîܹ¤…À $!!É9777###ú8EK››Ñˆ̣´±±‘´M^^Œ¤±Á''çâÅ‹_¾|™››‹¾ơØÙÙQ–Ơ××£[²ªª´MEEŽ{÷ V`}C¨¨¨ mÀăñjjj®®®¨ÔBCCƒ,„TVVv[âèèX[[{̣äIÎĐŇù’ÏŸ?óññ=₫‚3„@Ÿ¢HÑÉ—¸¸¸¼zơêÆHă_¿~ư–º‹IN ™_¼x±sö́Ù³èÛ#>X›nÆ´´´¦¦&ä„H!b`}C -"äKÜÜܸ¹¹ï̃½»}ûv‡C‡A”9&L8sæ Äa˜Á̀̀̀ÆÆ–’’¢  Ñ¢äåå;vŒÔ­ ==ưD"–ÁÏñăÇOŒØ(W™D¬`X±ÿ₫µk×>}útÅ . ‚˜ f”””¶lÙq~ÈÊÊÆÇǃơ ]¦M›vö́YÅẨ̉²   ==BÖ0̀YµjUHHÈöíÛ/\¸àăă#&&–““ Z-̉̉̉uuuÅÅÅ<<<ᄆ†Æƒlll CCCĂ… ¤Ç,`ĐÚÚ>Nׯ_âÄ ˆXÀˆ 88˜——×ÈÈÈÚÚzö́Ù\\\×®]ÓÑÑÈ Zñ{ôèÑâÅ‹!Ă tëyzzB†"––– {÷î…P ®_¿nee•ĂơŒ¤h*ª´´´ñăÇ¿}ûV@@ ²²ríÚµ»víBjăDBđxüƯ»wÁú†’’’ÈâăăƠƠƠ!CˆU«V555AÛø¡BMMœœœ……EII D¬`Ä1f̀$̉̉̉ïß¿gddôơơEî',,¼fÍmÛ¶A|³fÍ233ƒ8 ?ôơơ¯^½ Ö7„˜>}ú¸qăÎ;¡L›6MDDäƯ»wđƒ&XÀÈEUU‰????VVV66¶¼¼¼ÔÔTzzú­[·‚û TUUåääÀHnĂ +++ nƒ:ƒ“††11±Ă‡/Z´¢1Èiii‘’’B_j111è Ö0̉‘——ONN•••%-A…›̀̀LssóƯ»wC”ººº₫₫₫îîîá̉xt÷‚H r®_¿¾~ưúôôtèTiSRR¢­­=ńܸ́ljjjXĐˆˆHyy¹„„„££ăºuëH 'L˜P\\\TT$%%5f̀˜&&&ˆƠ?ÄÂÂÂÔÔ¬oøáàààááÖ7˜™„ëŸ0eÊzzúđđpÈ‚ạ½;vDDDèééA4»wïöóóKNNfgg‡h Ѿ}k``0f̀˜àààơë×C@Àú€àééùúơkNNÎ . /Q̣U;ˆhjj~üøñÊ•+ÊÊʱ¿Œµµơ¡C‡Àú†{÷îuvvëT„††®X±"((hûöíAHvvö̉¥K›üưư_½zë~qqṇ̣̣̃ưû÷[ZZ¦¥¥±±±‘¯;vlLL ÈÉÉ‘““knn>uꇸưÖ¯_ô ))IEE¢1œ˜?₫±cÇ9bggÑøç\ºtÉÊÊệåË•••ÁFxx¸­­-ʦ””Xđë8;;;99Í=»´´i]· $%%‘¢ ¤ˆ‹/Ú¹s§ tư§qssCb˜˜¡f\»vMHHhụ̀åƯ~j₫&[·n=}útddduu5Dcđ€²cÛ¶m+W®Ü»wï›7o &`}Àïù[hhh[[›¥¥%*}₫ü¹×̃\888®^½J¾xñ¢««+##£‡‡´UûC˜™™?~ụ̈åË&&&á;;»§§§®®îÓ§O!™üüüY³f)((:t:L$ÔÔỐÚµë́Ù³“'Õ·oŸ XđG ¤¤ô%²zơꘘäăÇïkăåDĐDss3*9¡ohnnn''§%K–@$#!!!²²² ,€NɇkÖ¬ILL´°°8uêDă/€>©́ííÑG\zz:䟓¾;îƯ»§­­íêêzˆ„¬ø{œ={ư SWW߸qcÿ¸ÓĐĐl%B½~ưú¾}û ₫¡}!ÿ;wêèèÄÆÆB4†~~~¨¼»{÷nèAäÏÑ̉̉²cÇ'N Ï±cD &ÿ ô½àăăsụ̀eZZZ++«uëÖ¡ï  Xđ144¬¬¬lll433 ½páÂ@Zr!M×ÔÔ¸»»#‡lkk[¼x1ú‚À₫,ööö‰‰‰¶¶¶^^^aFtt´ ““Dă7RXXhnnœœ¼ÿ₫}D &Ÿ'O Ïÿ[·nqpp¬X±ÂÂÂâD 2`}À ƒÎÏÏM”••=~üøØ±c^×?,,,äƠ€ơơơ'Oô÷÷ÏÈȘ:uª‰‰É¼yóPy‚üC‚‚‚&Óáá±yófˆÆ0#))IGG§¤¤äđáĂÿBKKË={=:eÊOOÏđđpˆÉßäåË—W®\¹~ư:º˜uuuW­Z5}útUUU___X0dàää &É›ƒƒRÁ… ¢¢##ăÀÀÀ°Hç’¼¼¼‹/†„„äææ¢‚’IäĐ«a¯$&&*((PPPlÚ´ ¢1̀xđদ&i¬`àÔÖÖ"Ó;}ú´ŒŒ̀îƯ»Ưˆ@X₫BØCCCoß¾.]ôÁ>cÆŒE‹éèè́&ñë†è;¾ó±û¤¤$GGÇœœ¤"vvv?[q'$$D¾sI]]ƯåË—oƯº…¿Èp´µµQyÂĐĐT‘’’‚¢‘ŸŸôèQˆÆ0ĂÛÛ;66]çÏ=…€ôCXXØ̉ÓÓçÏŸïääÿ(õ¼ Gv÷øñcôáÇă fÍeBâÖŒTTT:{‰wssCeVSSS¤‚¿Ö ##cÏÂDCC̣ÀÈÈHt.ä<̉̉̉“'OÖÑÑAN8đÆáATTÔöíÛååå‘Âx‰Ă )S¦ˆ‰‰]¼x̉yûúùù!Í›>}úúơë ‰@d~#mmmIII>LLLLMME1WTTỔ̉̉ÓÓSPP°%QÀú€vÔƠƠïƯ»G®®®̃½{÷™3g¨¨¨–,Y‚ j|||¿|dzzú9Dº-¯¯¯ }đàABBBNN ‹¬¬¬²²2WSSë9ÜüđY1ÇíÛ·‘!À…7œ@&.欬,”¿>>>‹/ihnnFvPPPtt4''çüùóÍÍÍWËă?‚>–ăăăÑöüùst}₫üY\\}`jhhL›6MD ë~VVÖíDH³555 xÿ₫½¶¶ö²eËÂQRR₫dz000̀"̉sUmm-*5¢"NJJÊË—/+**„„„&L˜   €LIQQ™äĐ ¯””zGëÖ­³´´|̣ä \rĂ iiẹ̣́rRu®³³ó0ị̂Ù³g7n܈zơꕬ¬,º—MMMÉûN[[r9ôœœœ‘‘ñöíÛ††QQQt9)))M<ư…jR¬øƒ°°°l"̉¹$;;û̉¥K¡¡¡ï̃½C6sæL##£ß8¸“>‘^×677£²*q¾xñ9!*ƠƠƠ¡â‘˜˜*TúDr8nܸAƠ“'O¶¶¶N›6 IuRRô†:̀@!@HMMåăă›7o··÷ÿ¡ä_QPP_]]̃̉IDöïßÙƯ?è }Xeff"¯{ưúơû÷ïQH™™™EDDĐG–ŒŒŒ<Y".¬, ’Ê"KÚÚÚ¢££oß¾₫æææ¢r ̣™¹sç***₫öØ ©ég›ÊÊÊ””T̉ÊÉÉyóæM^^^II ̉W䇒’’è-Hù‡ºEEEơèÑ#:¨üü|:¸º†¨(_TT„²ØÎÎîÊ•+₫₫₫6óŸPQQ‡.ȧOŸ"9¡§§—““SWWŸ>}º²²²9ÈPrêëësˆ¼}ûöƠ«WÈå>|øP^^>zôh~~~dtăÆ“––F"‡>g &Ö ())µ‰t[^PPp÷îƯ˜˜T”üøñ#*Mz₫üyg³çÚÚZt)"9A—·¼¼ü¤I“öq®¨¨@·'̉6R[JtŸ~úô Ư§åååơơơ¬¬¬è®äáá!Ưª(,ÈßËñññÉ ë€ß%%¥ ‘^×ÖƠƠÅÆÆ>}ú4%%%++ àØØØ$%%Qá•ÉĐ^ÿjH´1D¦N:đ]Pá)b^^*ƒv+€~₫üyÔ¨Q$]D%NTEùùù¼½½‘‘˜˜Ü»wÏƠƠƠÊÊ ®™á==}ç8uÈÖPF£Kå2RÁn½û´¶¶¾zơ m“tîÍ›7è*jiiél«Œ¤nâĉ̉̉̉ưÜPC‘²²2ôNÑ]Cª~GÓ¤]ee%‡=ztçO-èÆA7¦!!!v"P `}À †‘‘Q‡H_ ̣_bbbrr2* çää •Bå?qqqTÔSVVF¥áẠ^˜˜˜&ùÙëëë·nƯºlÙ2dŒÚÚÚO<áââbee­ªªB¥̃¶¶6Têå$ÂĂĂC*ơ"oD_x>pđS[[›‘‘‘™™‰t††ÙËáÇ===‘Ï ÓC—ñ̉¥K‘ÔỈÚVTTDª///GÑ5Lªs#]ĂèÂæ%Bú탟Ÿ]Ƥk̀ Àú€‘ * é§Ä‰4éùóçH _½zEª-”““#uƒ₫{ưC000t÷---I ĂĂĂ7lØ ++{áÂ11±~Œ"Ÿ©v‘¼̀]]]¤‚TÚFºˆ"Iª$A¥mR“Ôá:Râ_£¦¦&55ƯË—/I| à£ËEXTT]„(OeddÆ×ñññ›6mÊÉÉÙ¼y³Ưßï”t‘o#ƠQwVS#mklldaaAm¤k ´ Àúàï›} HâƯ»wĂ?dee544 â8*¡ª¨¨hhhô#Tÿ–Î-ÍNœ8‘:00°g{W&&¦Ÿz^±PXXHêÊ‚TÜGÆXZZû¨¬t‘½³=*II}₫ѾyÈy?––†¤dth¡°°0©{p999 -"ÿñ\êêê111¤éàà`¤XÇÿÙfœ(ïP:I₫VPP@j0‰̣ehSSÊP’ÿw₫€œô´ZơkW`}0(!bbb̉ëÚÜÜ\̉ƒ… oß¾EEa%%%dƒ3f̀@{ †ôËÊÊ"_E?2eÁ‰'₫û(8ốâÏÔÉM^^©‚‘ô ©ÿCd蘤n3:;D¥¢teÏŸ?£'=Pụ́åKô.PÊIUs¤¾.‘`ùË #Ơl766¢´©©©eee©ªª¢́&ƠâVVV̉ÓÓ#y#u&„œœ¤m$''5„aë€.ˆYµjUÏUééé<@Nˆt 9*LÏœ9sΜ9¨`ưO’”•ûÛÚÚ\]]=zôO¯rx5ìŒW¯^½~ưÔ!*̉Ed‰”””È‘®úÇ?~<̣Ûßû˜":ott4Ê>¤vÈM4I^^yú«Kä¯Å­¢¢)©×M̉SpUUU£G&µ¼íTe  䥱ù¥¹¹yiiiHHˆ²²2ܳ€ơÀoC–ˆ½½}7‡‰ŒŒ¼sç’.TpG̣0kÖ¬%K–đññưT!YÚMdÛ¶mîîî¹¹¹ƒ¤N²/~j̀ $„¤†¸¤±‘"VWWsqq!3$i¡œœ©½kç.H¢ˆ »C» +))©««ëèèÎkccóGß Ê”挌Œ́́lRëëëyyy‘Å‘¥%ćرD~öøLLLW¯^EÈ]‘ N:ờ™3ÿÙ?Àú`¤€|£gQccăơë×>|ˆ ÷óæÍ[»v-ø£)ÙCÄÙÙùÆÏŸ?gaaá%u33gΜ^×"Í tttDï—@ ZCZˆlpÅ***ÊÊÊ¿«£tp̉C¡¤êJdtèÈH³¥¤¤ÊÈÈ í'U÷ÓáĐïBAAimKK‹––ºØà~¬₫ÈŒ‰t.©««;v́˜¿¿vv6RD{{{UUƠ?qêưû÷#÷C> §§GnØđàÁ$̉”””:::óçÏ×××w$̉ÿơơơ÷ïßOLLDrˆlíÓ§OHÏÔÔÔ¦NÚ­ÖñíÛ·±±±HíRRR̃¼yCCC3nÜ8$(ˤ¥¥ ‰ ªßâââHJJúøøàp8¸ë€¿ ##£̉l[[Û¥K—N<™••ejjế́ü[„RQQ¥§§Ÿ9sFDDäåË—Ct<†ÜÜÜ'N\»víëׯsæ̀Y±bEÿ9öĂ4"Kû!|ôèÑáÇKKKyxxP”™—•• !»ÓÖÖ̃»wïü™²ậ̣r~~~—Î+ ¬₫ ”””K‰f‹‹‹mmm/\¸€ÇăƯƯƯeeeÿû)Ö¬Y3}útä3ñññC¢ ₫œœœC‡Ư¸qɪ¥¥¥‰‰ÉA"¿|@đôéÓđđđ˜˜˜ÔÔTVVV555MMÍ3fđ³³³ëg÷––äQ÷‰ yF©̉̉̉200@æI₫á ijaaá‘#G„……³²²î½X ›yAÓƠƠƠ6l¸xñâÂ… ÷ïßÏÎÎ₫ˇD>)$$tîÜ9==½Áö®‘Vùúú"EAHz-,,Nù…C577GDD„††>|ø°¼¼\EEéÙ¬Y³TˆüẒÚ‘j÷íÛG¾…4$$äÖ­[‰‰‰(ăCΟ?ÿ¿Ñ÷A6»dÉ’±cÇưZí(`}üAXYYAÓÏŸ?G:ÑÚÚ\H]]ưFGGWXX( €üêï5׫>|ØÓÓSTTÔĂĂƒ¼ƠëÀyûöí¥K—nß¾ưúơëI“&-X°`‘¿£è–DÈfggŸ?©`ii)-äœÿpXBnnî %%%“íÛ·ĂmX RP©=##M””” gKOO¿xñâÔ©Sê ”””¹¹¹cÆŒ¹ÿ¾¼¼ü?y#‘‘‘vvvÈf‰ |ßââb??¿   üüüéÓ§¯X±BWWw'‘Á“SRRRÿ#̉¹$''çܹsW®\! .\¿~=Ư¿œªçÏŸÏ;úøñăp7Öƒnnî;wî ‰‚‚55µúúúĐĐĐAGG—œœFFÆÍDH³qqqnnnÉÉÉË–-Û¹sçé§W†ªû!ñ«««›0a‚®®®§§g¯›íÙ³‡ƒƒ#77÷¿t)ùâÅ 55µsçΕ••ơº··÷®]»đx¼Oll,äίAjÇ‹{UWW/((8{ö́/Á‡üüêƠ«Hø.\±°>†*ŒŒŒÙÙÙ‘‘‘lll ’’’=·±°°Ø¶mÛ•+W~áøñññ³gÏ>pà̉Ën«s¢å{÷î]µj•‡‡‡ dÇïå#<ö­×ÀÀ@99¹Ÿ=ÎÑ£GMMMÁú¬€!®®neeåÔ©SÇçëëÛmíöíÛ‘Ö××300 ü˜ååạ̣̣̊7nDGî¶*88xíÚµfffîîî=”‚ÎN\333QæJII!ưø£zx<^\\ÜËËËÖÖ‚ `} y>|xö́Yä 999ä½¼ĐÑÑééé:téßµjƠ*¤ïß¿'ï\äÓ§O³gÏnkk»uërBøßd„ õ¼Açλxñ¢¾¾₫@vܽ{÷‚ Àú¬€aÂêƠ«µµµùøø’’’È[{™™m̃¼y ÖWPP ''wơêỤNÿƒƒƒÑöíÛ÷§Gÿ~È"(ÙÙÙwíÚeeeƠÿöªªªÜÜÜ‹-‚èXĂ!!¡²²2aaá“'OÎ5‹´P__åÊ•?́Óeï̃½—.]*))é¬â Z»vmdddUUÄvđ ¢¢RQQ‘ÍÉɹsçNkkë~6^¿~ư‰'Àú¬€á M~~>̉?ghhHZˆÇăû±}₫üùŒŒŒYYY¤ÙƒDBCC«««!¤ƒ)))dø/^¼àááÙ¾}{_ơ~+V¬Ø°aCMMÍo¶°>₫ơ—=? .L›6 -™3gŸŸ__Ö7a„uëÖ‘ªŒîƯ»·hÑ¢°°°ââbˆäà‡4;̣svvöøøx¤‚Ư6 ¤¤œ>}º¯¯¯££#„kdR[[ûøYjvfzScǘ±¼c™F³ba§¤¦¦¢¦Q¡hmiikiùRSQ[UQ^”_^THOO+3QVEQ‘üqh°>†¨¬Ÿœœ,..››ËÉÉ9sæ̀ 6ô¥ –––VVV rrrHùzöÛ rfÍUQQahhˆ„ÿæÍ›ƯÖ¢å—.]ëQ´µµƯü$9!OX\jgü$ô‚°PE—–w¬Đøï£¡d–|yù́nñû7êx¼ºÚdÖÀĐ€‡‡'$$DII)??Ÿ›››ưéÓ§ÊÊÊäÛ µæææHùüüü\]]³²²˜™™!tC”°°°¸¸866¶´´4ÎåK–,ni‰‰‰‰µµµZTT”’’„hXrçÎ<¿ÿ~ggg$öG…˜ K®ß+!Ó¯̣5e¦UF‹ÉŒ£'_Œ«ËONừ "#Éá ^a‰†ÏƠ!·MŒçơ0¨±±±¹zơjIII[[[vvvBBÂË—/}}}Aù†7qqqcÆŒQVVæ¾¾Ô¢¿pơÑÛµ=ÁûåÜU µ±1ùnœâîØ0¦ß°–4We½{~†¾|đKỄ»t …zhµóë€Ǻu뜜œ899sss·oßÎÏϯ®®nll ‘ö<|øPEE¥¬¬Œ™™徨¨(Äd8ÑJøÚÚ̉LCKÿSûl¿Ǽ]¤iü¬™¡w_"ÛY|-ÔÓ+X:q>•̉™'ÊPúm³20×Vƒ·ñå‰É:hVÊp©4EæơÛ/Đ̃>)Q<1ëŒí/ å‡ ÔèE-<¯`êư\"øiLq÷_|[ƒfùâîÇ£©Ñó¤èû:₫^Bu–©ó½ÚSkhBW‘p/1ĂŒ.æȰô÷^¢́ VœB'¾@ûرוÜI†₫‚ƒÂ‹‚Üö£Rm<Áú`ÄAIIi``Ÿ••IêÁÂ2733[³f //ï›7oÀú€̃!Ö®àëgG¬ÿÇÙå;”’S‹P—¿BÖ„1»Êvª’ônßo†Tg”ŒÛúf¢+[]}+Æà°ă™̉ë%{¢đ¯xµlµCP×ÚẸsÙ̃÷sVCiG&ë¹HÚ̃¿B6t+u[ßÇß:Zm_ê‡mUŸ«jj0'ăø½Ni>ËÈ0÷ó^3Û•Rj₫Êùæ ÆK z ë1êÁú`$2cÆŒÓ̉̉Â#^#Œ=z„ 08Lj¥¥½e"#Ö«äÔb­ß a’ªpÏơtăíR?ÙƠ~LMŒ»çmmF¬›v åÀB»ÿ•¼HILâˆÛ̉®¿ŒQ @’&iIt¤ kD55'϶™¦ïă·em矆a†[ü–ÎPbçàj¡¡C«ëêZ¾¿·÷¢°ñYêÆæü”褻̃§×HÎCËD₫—’5ƒ—ÖÀp`̃¼y–––ÑÑÑ̀̀̀ººº‘‡[¹reDDÄÇ!#«¡­w¢—™è̀-Ó•„°Öª71¾VGĐÊ->æ£ÛƠ¯ORö™-Zy6yư’Í3–lvH;±\Ïá₫é;µËl ̣ÇÅEg8xØểc͹a®ÆæGømï‡j`Ííî÷øƒ‚>¸\¦-Ư—Đªöy|•ÖOhnë•k–ˆ24ç;/!6(-/©Â0ö>Oñ5Ơf̀”8̀èäÓc 7é.tÜơÔwƒÅ«OSógđ ¿l뀑--mYY™““Dc¤±~ưz??¿êêjÅÈ„Sk_ê§}Äúº˜›c1¬‘‘Góf†› GGơÀ̀=‡¿=H`˜¼áÂ&!: Spy›j÷8æa€ÏơæF#»”GJ¹$/FÀfx½q΅éÍ+§Ưc1Z:AÍ;¹{ùˆ-@6Ÿ¼˜Ô¢5oÎ$̣ZÆnç¢;ë‡x¿Í2‰¶Ï²¨L@®ØÏñÏç?½|å¾ßÑD¦q[S?ο÷2"*Ùxªpï…B̃ûS}Ơû¸„Ε×4è¸ÄÍ¢?œ=LÛy‚ơÀ…‘‘ñË—/¶¶¶‘†¸¸8r₫ÜÜ\ÅH†‰_~Æù^WQ³É˜¯¢Ơ^đưPf¡)³VMéƯ-8•m”{.'°ö¾¼Ç¹¨Ù¥g˜H“¥²ëlŸÇçT^̉e¹ úAủ$o?ïe´0̃@?²¬F(”””ÔÔÔÈØ±cá¹>9€ơÀ¥µµ•‚‚â02acc{ÿ₫=ÄÀúÎ ¹Q†ß33sSSÄøOàêØ\ ç´lÚ/vR›¶_Co—EHÁ:Uö_;BÙă#§âÅœ éÿpRÁút4Ôçø̣¡ °°đKYys[+…………’…™’‚GA‰‹ˆØ‚¤ïéSϯ_ ơơ„ÆÆ¯Ÿ?ư\ÓZư¹Đ†qpÑđñ2+(,8‰‘‰ B:„hn,̀Ë2¿¨đsIiss••˜û,”ttŒŒí¹¿m›…&Ê}$ÿuơ„††¯ơu_««ÛjjZ[Zœœ4¼¼̀üüü‚*̀¬<̉aHk^€Ë–/Sơ˜ΜyWö…^@qéF÷©R̀¤‹('ôÄÙs9uØ(nù© —Z.áëÚÍIKa„‡Ûáëí£´¿Í˜¯±Úc«$–ÿølÀùĐ—JĐcdŒ–9ØÊđv́–}6àJû*·¨¢ö¼åf ƯGC¯M½ä}îN Ó́íî‹™º®êewABÔA3Ÿƒ· 0ùÏ…7%uWë‹ơ€^“Z›qù¸ÿ³´¼zŒ‰_eúâơv ¼ĂÙŒÀú`ÈSWû*-=&íEiCưW©ñôââ´"´’8 I cûoÇ.üúµ /¿å͛旙ơ '+;FAn+ÛXû 1üwééÑ/^”TU·IIÑKHĐ ÓˆKPˆKPưçÜ/!n~,h}ư¶éeVCca¢ œœ'×8û§íĂSÿ[q₫·ü̉wXb¸ê s¾Ú~[îV,ä‰=qIï+ñ È0\ƯMs3¿GưïeÔcô6Û½B*¥àäîa§„6»c#¿-èă†àâ­“ÛƠ1j³Êr…¤z¼”cÚf{Jgdmåh /óÂúe*Ó·DEèECÅ€}¹o3nv†m -^¦ÄÜ-±}í¾p“_i<ç¡J#7oúöˆ÷‘€nI%Ô₫Û˜{ƃmYåb À,¹.üÊN-°> „¶ÂÂèø„Ô¼÷ŒêS§L¡˜2åÔÈQPP ̉¢×ôi¤ß[ÚÚÂă×?I¬å䤛2/&62äïæ>¡´4>₫q̉ë×uå5đŒ*ª”*ªœâT8ÿXổJÊ}Âׯ’’Bꘘ©ƠÔ”¥¤´!C†0»Wë‹3–uüÄiXèưÊúúñ‘¶Áw$©*À¨³~•[讜ô˜~—æ‘ÄaøĐ¿Í¬öÜMZyÔˆçhó(,q3¾=s£LG3LE}Ÿèˆ)R̀µií³Gg±·ï¶;!ˡ׆}ía£´₫(]’Ú“₫„x̃E¢ä[æ\O¨Ú©5¬€Kkså³ç×bcKdå¦é0-ZÈúO’AI‰C‰^Dy›˜P«¤( ®¾²é™₫—”Ô ?JJĐÏÔe22BE^濟 •QèEœ{ûäIZL̀™ ˆ>’‘Ñ`ºt '—(dâ/ÓPÿị̂•« óæ²¢Ạ̀Ô Đnrà&ăă>Iª[ºÄˆoŒ4dâàeÔ´KŸêÉ(l|–º±cZÀĐ3ơ“çB«q†ü *ơ^]Öïv;óṃ\ês½AÉ5ơ“kçÜ—§©.½l%¹¢Ư Œ¦!ơ¦ßçûIÖ%©~÷§úƯ#)ĂÁú`0R^öèÜ…XM &KKΡ•r iÓ˜Đ+++́ø‰jËuK¸¸Å!CÏ5Ïüü"Í̀8†VÊq8 <~z½Ëvs»¾rå,AAÈPë  ƠUÏÏ‹–¦wÜ4´{̀Go½̃æ̃=w₫ê2ÓùPó3êê²ưÎÜĂOc¿‘{H¿QÚ;y?~LøßÿÂ.ĐQ‚̀€aa}­ï=öåàè´!- ÷¸ñrÊJ̣ƒâÇËê´óN‡éÙÛ̃PÍÙ}P_x€a©Ú§Áæ×9«y¿ê‘N¿ÏƠ·ä;n»‹±Óÿl"*$fíÙh(ø—ḅl÷hå³ø­ñ±{¦ÀƯđ§im®ùˆíÿ}üw°¾¾¾©>Ü÷>₫óûéí‰ß:ơ†€¦¹̀7À·s–gív}á^tƯơ£íëJ³¼ÈÎơSà9×ư5ë₫>oß^¹ùr½%'#ă0́EAAF†̃×÷„²²́¤I³ »»QXpùÙZsÑlð–”$½„8íÙ³çlj ij-́¼P3,˜K7Ø¥IkᣳÇĂ#Ö¡çV̉^1Ù Î̃ºé©}qÎÏ?=-¯‘[~¦Ùu†£‘?¾rw»‡ßæ=ƒÔ!'®.jMµ¾Ëæù¸¼ w—8Ơơ¯º/äwºåÚÖ«£ơ§ ?́ưQ̀₫Ô1s¦Ö¼;'̃Ǹ+ÄqÉ*,³§Aa¢¯ÁåÇSv±}_G̣R.l¼G¹xÿA₫:[J#¼¶úSOw²]8¬ïw`ä́£ĂÙÜô­;U îó›Ç^7âȷئ;nÿ¾đ°Đ? A3®‘lNT”ûö‚ÍÈ?ÍçĐ(Œ–\i±/¬/uÙnëi}¦&²D67 «JÀgÀđ„Đv5đ''åPỏùƒ̣$5ÎÊ3%å½ï©ưæk¡“Ïo¹O¸ê‰Ăµ ₫₫Z₫ kÖ°¿zUæåånµ̃r₫wÑF ”V~~›ÿ¡°àcyiÑ:Vkqêµ›q6¦ô–ăf&cFQÅQícà Ï-Ơ™qkÖơ+DȶÇƠ™rî»m -¶ñ`F›>NÛ ÛÿyZư»°èKc6́Ç0úƠz~%¬rüæÍVư.́¡_ØĂBŸ” ¢`f~ɸwé₫½J¯è»/‘1~^¥a(µ:àBđ¡vͬ|`#-» [s³Ø[°ŸÁåÉGlo¯ëëH£‚ѼăÎ3Íăî¼đà#¾—†ó/è^ô8¢®“?h};l7Yiô¨4³ßrưưpNTpơ»Î…EwRvZ)|"£åSŒăâ•^±y½YoSĐå z‘³O÷–O™áÿ¾ç Å«™—‹,%6~÷MÅûUÏI­1iF‘·£àæ¦Ø1 îäùĐŒúÉ/<̃ÉV{ eÛ8.Üùy5é;ë5½Ô7ÖçßsY>Ă+¶£]~ç̃I}‰̣­ïÏl²4÷ºÛg²Ô-î\ôÔhM~ªŸ‰Â+äKlẬ½ àcàøÚZýäqí©L̉̉ô#áư*(ĐñđRxt·Ù°†wĂ§Ï–“£Ÿ4‰e$¼] :Nªƒ‡<,×™CkÏŸU»üậ÷ï?|úTXQ̣ése3+ïh.>6>¦ÑL|b’|b¿í|£đû®ïœá6ƒ‡$ỵÆö;ïX/ácèºYCFü}ôÏzê$f aŒET½qM§tơÅü#ȆIø‚ax?óöO\u¬û ÙgM•Ï’ïq&(f§£ © ßËạ̀ÖQ†oív&&¼Ïƒ½“u\,́UCeúX+À6̃½$Ă0².¡Ô€¦ÛG›(ă7jL6¦WºÑí²0wâoźu14qpá胘̃§á›&uzbĐr‘E₫»ŸHTËÍŰd— í’‰.·×rguĂI ûfR_¿ïÜ⿜f¹?ÖÇ1ïƯù‹!+t•çwëzÿˆhèKbŸÂcS;æ .H^Ħ©²íTâÔăs¬nuƯMACrÔ—â))ß¼;₫”È)Œ×¹°h_¿‰¨y^FzƠ;r?îüü"-MẼgV­bçäAă›ññ̉ØÚpyy]gaÆÂ:fä_[­×Ñ#FF£hFλfc§rtäöôÈili}_X’÷áCqQQeIQ}m 3çhn>dwl<ü L,́"ăÑëo$ׂ ƯÍuâ"©®0È\Û@ôüÉœ»*= àÆZ¾Mæßư_Àư/jë\:zïé!½öyÄdkßwấQƒC: U|̉́Iæ–膅R߯P¯)o`áhÿa¬©ßOT\ïËéÆÛ]÷|aloº™Êäÿưi{,“¥iW×´¾gϽæ[W÷M£4î˧̀Çg8ÜHé²¥đêưK$Hv±¼«̣툩qÓ`&M¹€å˜ /ë°₫Ge'ÉOÿ3lo‘wm]Wå½úîí"áï¶rLŸÑ:¢SùºÂ¬C ô\ŒÙUùC>>Ÿ;†́˜ ­¯ÿ¥|J=nƠUù¶”ö~ë §ÔUûûÚ{v±¦nU…U aäÊg_E8L~‡Ơ¿đ–‘óæ×“äççåeÎ~ßÀ×kú6zg',ê•G¶pÎñª›–¬đ‹|m­:z̀Ïd1ÛàQ¾ú²ª̉º6V.Ö?ü+8=ÅzKÎcÇư6X[1‘}-Ỵ̈̉ÓcQÊG‚’·a§§gÅÚ•£ÙF\[¡º†¦7ó?–V–776°rñkíÆ°óŒ¡¡găG/¹“¸Î¡Ûq¥a¶½»¬”Z½O¶›̣Ñ©z¿¸a3q¾ÙpçêváSEé±F­éØ®SF<§È·' OƠÚ₫tUYMKsS-†5tª£̣Ö¨=53·iÓï#ÛƠädºă±~—ooẼ9bûºđË]Î"ºøœgv–½ïeL÷ä^3Ùø‘ó­/b“^Ħn¥è›üÀü[ÛÎêÇ·ºU­½v· ₫&ơZ¬:™|­‡Ó…M†NœXƠ•£]*€¼BÉ”Á`ü(ˆ^+ö'’ßư˜¦'ưçézLÿGA×꘿üú›„ơ¤/äÿ·w&đP­o?ƒ±̀Xf,c+k!”%…2£¢²¤ÍÜmh!¢E´¯7uK¡ÛEƯ[të¶è¶kÑbèªn¨•Ê–5Â(ë ÎÿœË-ÿäùv>9ç}ßó3ï;sÎù÷yŸ§̣YNf~^I\t4›Íû"7Ô)©"̣ºÚOD¤Ăm;„Jh ¸É°uc=̃zŒM Û‡̣¡‡Äµ# kùf¤rNAÔ€Ozèo:øë¤IR¾ï¡?qưZƦ̉îóuĂ™s½è’Ÿëq4bú*ÿ$„±mMBàÀ/Ư’‚îßïï (D́g½Æ =J\[»ŸNoÀ„_XØ¡¥¾KEÅ$¿»îE+«ëçä––±J‹JS¢ÊcênU^IHRIU[F|s§̃º½™{ºvîḈB³ íí½Mîè2é™é Û‚ûà»öÁï=Ăw÷E‘ÛÇt8JáÙ#‘éâ}ñí?º/û䮡¡‘µjjfáF‘ü(ùîîdO˜™ØYCǺƯñ¾<έD9DDNm ’˜ß–¬oøËcÑ®3¶—£Nuj ùô:?7 öRczî"•ä~ 5?¹\ßiW§ f\ ¶lâKYyúYđ´ÁWíIcĂM…éë”à¡  ·\¾ú«¦¦¨–Öú…E¤¤±ø±&ѲÓđ[Qâ :ă¸7cÅîY‹ŸÆđɦÆ2́9³3H¥É*ɽ«*ë‹r«ª¹ïƠÅå(J‘Öt²ß} 8MDRKJmm×ÖTX*­öMna5nÜ#LR܃aBY!++é'÷»¸øô«̃g&FHI ’úóO€Lœ2UîÏc‘óç-ï‹çI»’̣7/rs _¿*f•½%IË+`¢JS–’“¡©ib \́₫ß¼}¼ÿ'«eˆ¾ÍÔßRL‚ ư´¾¤7—„×;¸$i5³l¹Y…(B"Ơyè·ßđ´­èr­}³=́dßxû×P–›Ï¿]œ]‰ṭ†RÿoLÏäÙ—¨³·Ô'XJuTœñ ƳƯïЉœ# »Û[oÆ/(ú oU”™̣ïƯ{ÿ$%ÅÇ_Jíà£fÇt­k«“R»Ë7|×µc£óÖ›µ9qÉX¯L¸q±ô–\LzLqQBæS–¯ïGå{ËÁ$U'‰ D÷ó¬ăÎǴGe,ü(R›vl|‚›©à¸`è¤xoD:ws\:ÇYOÉ={T}j 1Äu<­6?7ö×TDuRa®ƒR2Îë[·*a£zmF]ÿ:bÜjù/.Êb>åMí6^˜²Q AjöÙú{_æÖÇá`.ơüDü%î½Å5zS´ëG}:cc¡Gj3ßĐÓ×Oz¿ª*=9¹tåJü†èf¤ ̃»wnäÈÉßæâ>TËrró‹‹óËKßT–‹KR)4\ÚÉȧJK Đ̉ ]ù-#¡»è\ñ"h‡¯i¥G̣º„́™`æ×®ë<‡]}»¤EÀP†ZÛ!ëÚG´î,ơúË>r&Ÿ?¢’ nó‰ii*È+Đäde‡N·7$"ÔÉ3§%¶O`‹ëî<•?`:çÀ,×b~°ÎÚ³¾’y'+åZÇ ŸĂ]äÙ‘ùƯI¾²g̀Ë̀GY/¦?z{IáNÍ S%m«)ØâÖZ$Å’`̉VyÚëe[F¿«ăè«÷ú[F£•ÆđEoO°§Ö]}½q<ľèW®%Oß«¶‡Ï÷“«olàƯ» ơ/>̃™̃r‡úÓ¿tW¥Ûr%ß¶;ûM[îï{~C®l·̃qC¬Be¢å« ®Æ³‘k­ƠªæXE•éƯyÚ$=ËÔ²u«ñ„g€3÷†º×Ëc›¸> —|üăÛg`§1œă¶ÎH+ÔÏTäc>œ­ ùرä₫£ú®^½l=^‚@€†hxøƒĂíÿ‘<؜Ƭü’œ—ù¯ +J‹kßVIIÓ(̣̣̉J̉ Ê$ñ¯èC¥¯‘¾o²ë–øFB¯¼ÇÜ*A4Æÿ4g®‹Đ“‚üÏ—¸|&Ë^ëiJ¡å›™ Ë$ K¾ Ơ‡cºôjåˆ-T‹öYb§} G÷T&sƯN_|}n¸́ä6o/Q.ƒ£\c[7•êøˆÓ-̃#[ 확®¼‘@½Å‘ۢεû;I°¦DÓÎѰ$–Ïẁ nºtEwu::æÄṿGóe¡ ··C¶̣™w¦àgbll\•ƠEùM–¦9¾CŒ—Oz³ÇĂ»íTÍÈØùwtƠ•Ănơµ)G.u˜&‰ǿŸó₫¡;ʈµèkC₫Ú4Aöæ̀Ícá·đ‘'½a5Ñí‘9vĂ›¦·\‡äÂHùï₫W¸×áq™¨sÛ(CmA9Ï­Y™WĐ»$½,lDLƒü.°_vR›t²-Gƒ>6,ÚÑ®{÷\eñhăÏc+Œ•~ ÁmNkîßàë%%¾»×ígƠ©úḥ‚̉̉"ưd¸ïMƠ“¬¬3 hA â₃ĨO½4b„Ă=PMûY^ÁË‚ü̉¢ÂỂWv=>d'§@U CS&É(é`‹!ôȇ$Vá™­ËO&䡨„ÑtOƯ~§™́§Wöÿs1»¬%É›NœïÆ ×w%xWÄa,{È8s‘úz”¨=iÜỌdü>ưØêèêLO³Ăaf–‘äM\‚æ;h1ôë.P;&#săÂׄ0_+ÎđqGÈR}óƠT›]̉IÖ³»Q£× ¯M‡ËNhNw–R 1 îÛ)#ˆŒC %…9Đ}Ú ¤ÆEwTYö‡“¹™Ẹ́ß2ÓP—¸-êvü^G².Ạ̊T‘æ.æ)‘P£ºǗºÎØÖ:£îœ{»B/`ÂÓ‚z:Eôó7&†Ñ¬Ÿí5ƒø'ö¥¦̣Ú„¾$ær謂ƒ?j·ÇĐËÂçCÊ“Ưg¯Ă3-fÅn¿´†[H‰Iy÷fm9¶z2…ïé‚?·ºÓ¾wĐ“„!‘­ ‰[Æ~8êÀăáĂ4ƒNè2Đ[êÇh»J{ùM ¡ûû'ƯĐ&”Ä—.µÂƒ(#Dã=]áxÑf'Åæn*µówCưÛ,>ê3Î^Ÿ<ơœ½úÍơñ!¬̃)̃˜ëFü™ëh­ÅF”å!âHRµ†‡OV¤̃'¶‰¡¡ÔÓûƒê{đ€9̀€ ¿‚½OJHÈütƠ‡¢hÅÛÚ¹yE¥%E•¥E‚9E*>j§L¥) QU±E¼—prŒ4÷Dt–_½u ¿ê”Æù´Xđq O8̀ÉWt?–tU‡„¿ñ1§è„éM Ø5Pd¤Uµ_è<±·¶·Go¯Àƒ³?i₫ưDè™xpöES¼,²ă­ợôÜ)Ưj¯;́́p̃bóÜ<<ÄË ~Sầl¿ê“Ÿ‚~ốH™V²X’‚.éé)¨Ù®AÑ5ƯdV†¬îÍÇzoÂDư¾RÓi^D»ÏÖ´Ë,#×Y®;{tF”Ñ[PtK÷ù:(¿€^ñ"«Êqú'F''û%FŒÚb¶ú±5ÍÓ÷̀ö=S¨ÄÁ£ne­ÎuṾ8à¾cá`*R“t́²sĐ=l»đơ4»7ăÎhlôN :¦Ùj*’“ó[^ v n|}ưvëM¼Yz®L™¼kí̃¢‰̉ă­vxî‹ÚÍŒ %DŒfÚYéˆV>}́{ #;2•3ÿă½=ké4;Ï꽟]Á`|?ª¯è́ŸÊS™+Wd÷>>¸¦fó_UsØuDá€ă>T*ª^dç¼.-a••ˆÄ©ṛTyeLÚIỂDhêØ/@qÆḿÿ%;—Ëñ[i¶k̀·ÜÁ_ •eă₫0¸hàßåÄÅTW“1ơl<ˆ»±WzÀƒ³o\?“—ªbï2Üëp ̣̃@íLÙ3籫Ø̀#®c‡ơË̀"vU@ÿ|5ƠÀ‡hd¿­¬hTTüØ@6–Ûº¢4̃ ¦A~•SR÷Ÿc!Ó®Đ­Ôˆ¦Aḥ,>ù×è´•Ë !U!:~ăL+̃ñ¢Ñˆß̣bÿ—tøúÙZÜç¦̀ ăLG':ÏÀ_p”÷̀mvl]|SÁhô¶Ư#Eñ窆û÷‹ø̀A$ˆcE"E;@X%1ûÎn?}m ©Ö˜µ ư\Ïæh‰ HJ–¾zF“ÿÎߨ—³øDÍ_ºTmí̃{kHú‡xö fuŒ¤×ÀF$«.k°w±6â7³Ư{ăwü%Xv¾ơNÁÙ»Aª¹yï Ô>5ôvÊùÑk-$;“nÛºmÄü°Œç¯`|)wƒṽ }ÍSÿQ}âö[/¨—„ñ¨El6ª8”ÏÀ׆ͮ& ̃…Hds¾÷̃¯₫Ä̃o¼pđöGĂĂÚLªmzHăƠCø‹†§%ÈÊÚ…Írçj¶Ê1ñ–G>üÙO„a;9}¹M&\u 3ÛyĂhxVË́:Ẉa5xÈ̃ú#₫w]XXÈÚq`jl~u)¯›J£v>Â₫x} ́ ‡ƒœ»L*)®.U†67‹S¨24i¬6!‚Öb"HH¨IRJJR’‚iœÚªÊ겜ô®Lâ*¡&®dâ)¥æ&¬‚.ÂêÁÀ¹›B\Q„%㉸j—CX"‘»&ÈÛ&bÿxJHˆÿ!bß@|Ë bIXi|[cßúåäæ¾x¬¢5ô Ô-ßÚU±»p̃v>&jHƠ¥}qÁ½é¨G’¦;Á–h¤jae$Rr!¾̀ɪo€Ä>DÊ++•Ö긮ơx9́xđtî¤ÍÆ[Gñ WZÓÅ>ĂW¢êM… á?b¢¢ËưưÂ÷Gh¡¢3 ä3Röüá㇩+–/ës#À úà«",&!N({Í‘“íŸY8û†ó²LL€],[e'ûÎÓvUº­2.ÛVMÚ+Qj:¹¦̉†-,B!¡\x+ùt/–-åîKI¾¦FbE[A~đwÿW)*b«ªônw©‰/ra/̣˜Ạ́”e<{¨>ë¹ñ!.Ñç9+óÍúKâ&z¹aEPUÉzf̉M}âƠN50|–üæ ï Ék‹u7Gúo%øw(à{|‚“ϯ„(₫̣"uÇ/„ˆcô¶S®Ÿ¤Ù^•Ô*)hĂơásA$ư|¼ï¦>8±ć³%eä¡M>‘̉üĸ3Ví|½÷ÑĐÇU_cÎå‹<ö^ù`A‰«FÿlJ뢆ă—̃ˆ4Ô‹Œrr1¢ }®û"Ơ}5 ÉÏz¥úSŸèÛ^n§³íMbsr§«uȬ0àùØ̀‹ TÇ6øñÍà+ à5»J«¸N6>ЧFÛæº=ÀRVƇ_Ç}?"†wjgß0÷ăJŒÇör˜ÆP7Br̉Ä5z[t‡Güï‘ÆëS6ªơ®M=RQ‘$ôÁ×ç=ECMúù‹ê^«>Q܃F́é>›dꀢ¼Àwíddƒ¢6m‰z®sP×9ï;ˆØ€ˆœˆ÷‡h² ̃„6yù’L¡ˆ’ÈT¸8|^L ±%í¿Œ¸C¡CF̉Ơt Mz)z’v'ÉùÇY«VöéÏ̉‡ƠÈƯíæfwº¸ªS¬Ốl₫Ä́+ÛÍä·«Ï;—}?(ç„}fd!ocƯ0;#Úg±.øBƠßúĂ¯]O07ïƯÛ5vs î¸ÿº« ;ƤM;ñÜÊơâ8.3δæúßdëËØ†kÔúhw¡_MŒïN7­{=,̉9®zB¸_<9ñŒ[¢³0Œ®„›Œ²ị̂*c³ÙäÀËÓÎ _@,fÔ$âNËÿ¦1.Ǹ1̀~sÜb£˜øs~\ƠIç{+ù0̉UƠ×é½?l˜å±¿NZ[IÀ¡Gª†Ơ€vøB ÓÇ+ưaúƒAFfDaQh™÷@l®’zçYúĂa†&­,mÆŒ₫>TŸU}o®­́ ù†ÿUxßY©s)Öí5T‹­m›9¿Opyl-“{÷âƒrQö¿;·j3Œăă®s¤ß¾eË ± kóÍ­+¼{3éŸ{©O³ë¸÷8iE }#}C»ă ^ϪŨ-M»să3­¥fTLQƯÀ̉ÎzŒ™Ö{ÜaƠ–e&ÿs÷^ZJnVey]-‰D“VÔ4|ôº©¾"üP¾qÔ4F7_KÈËkèí€mÏĂ%i”0æ‘(K•Sî¸Kî‰CÓp'Ëfj!Ơ!.sK4b? yÂ{Œ¦ª H1‚$Kv̉£·Z7åFïf¶^ ÏÓú[û‹Ư˜äèÓî́Ê1[–é¡uÄœ+k3âA¹øqïOVê­ưgơ[‰́́’Nvư¡÷ị:̉T‘ÇOêt‡ˆÁoÁ½øˆ=|³råd·@_¿u‰º÷¹̀0bªÅKp3đˆÉï²Â­hĂ“Y^fR|9…Œl|đÁ¦~øi¢›6ÜK¾]¬­W¯2=W¯V­%D„¡§¯‡Œ4e’5¶@S ÷g8÷|>̣û₫¨}Vơ)Ø,rDη ‘˜ÿ›Ÿ·Ï¥́•¬úøS®ÎzTÀ¿}d®ê‘¹ï)ŸUXRƒhKb‚đ§Ơ›½ăÖ¶e$đcđëTÚöÇŸ·ø̉ƠÁhà[‡ (¸x¡WhXØ¢Å4)É^ú®´Û‚îí:K11 ø})ôi(:»v—È·ÙŒK©¸äCF¦̃´¦ô¶8±đ}ÏƯ终‘¤úáÀÓƯ?dïÎ9n24yb?üø(*?ÓÙBWƠ׈e#‹iØâµ_%/Ûfúˆ³iÑƠÆúw'ud'÷¬®¾CT$%d%«™n~zwR­9́==•»+]W^T¼BIüÖ;z ®á¼N9₫[̀‘̀¬.ÊÇ Ä́T#¥{胅'À7 ‰,½h¡ç₫_#}|äI$oÿ„ïî̃m†G ä¢:)'×A­·U57‹„‡åÍtB“×ꟽO[âå»7tÏÂ…rJ‹đ$´ñD 5ơápP}=dá꼺9RæÛ₫رׯ0¡¡»jEѶ—mµ®ïP¿Ñê¤Ô-í>[sÕêx”÷-_µ8ÂgpĐ7¯X3¢7 Ùá…?±¶,óèV_¾¸…Yk₫tf ¾àß6RÅ%̃̃aaûæ̀–‘WøÖÇ|LưưQÿÏPOM5%<üéܹ3û­äă!F’̣÷[¾û‡(jªưÅÔ³¡A",́ÅŒöªªÆpP}ïƒ2bÅß{§ñy×ô*æ ®+B¦O4<@,‚ÔT¾L½uá€ÿNfÇ}¦Ñ»è ùÓƯr/WRv‚´›b¦>r×g´) á¼NYăh²£S¥Éq)¬+ʇ«EªẀ¹ße'§¶æ&®iœ{đÊy¼EI¿(ÓWđí­y±ô…’¶ÇÜØ¯=R…Ñü#7üÔv@’œ¶ơD„/Z½‘¾6H>€>Y\fạ̊Ơû#‚G[ †}ÿï—y2ÇO>öơ]&*F†̃!/_¶ö?vêèpzíÚ§QZ*ûÇï鋽JHĐ ÷T߇™QPă{ˆ®77•/1f§_̀Î÷́¤œÂ AĂt(‚\kÏ?»˜FXŒ¯èn/eî7qh¯¼à73ùßøª²ÿUĂ{qXëf‚5wd¶̣ đ}ƠfÈÉ8¤4> 1dG«ƯiÚÁù´ƒó»8_óí¥ÿ´£-MN•øÑØưXë.³¨gu÷9Ơ]ÜƯ2¾Ü}|ßâ &óXÔœùó¤¾Ó*xüx¨hùåk¡Óù™;wÅưûçĂÂ.\ G$¾×¯ù…óo« V­ƒP}=€¤;'ƒ­pÊrîÜNLJNIÉ~^–ơªwµDÅäë›i6ÚLK®‹·§rcw¡èæ»'Bv†_Í©©Ç ă»˜O˜N‘œ‚¢œ¢ÔĂ‘‡ÿ¾™X-®ˆ— z63縻Œ“ăÚàxÍñ;¾'ädJ~2̉Ôu†; “ú@µ-w=àT4AXÏwíö¿Ù5 ä’́W êz&c&Mæ`¤ÜÙ#‹Ñü£èü£H]aâƠK×o₫›₫üiNI /Kœ¬ j¬oj>Ñ~C*_k€¾ƒábhđjwHäd)-­ïmnvq±BtôƒÙ³t ¯ßÅÄÄAO—ñë¾0Ëqâ†ßƯoe9-ê÷ÿœ&U'€êë=D9uúTlqëx4uZ}Êiu×5+»oÀ–nvSw uîyµmP´̀\±Å¯'ç+¦LŸâ-đƯø₫”’_¾líóÉ;v^su•QTø¼;VTPzFg(À Ï{ïđ$)ߥḳóÿ >3s&Uơ»˜éWS-ñû¡\CÊÊĐûª€V2_¹ÂüéfdÄ͹seTT„ûèaUÊFÇ<14¤øù¯nưH0́åˇ7qq¡öƯQßjjtLöÀK¼¡[T] 3„±~=#'û^pđe[)ƒa})kÖ ™Ø¿ŸLœ îă³º²¨¨¬_oPT˜±sçß––#Gö¥̃/x)û×É ºmÑ¢èJƠÀP×0²¾®æÔ©?Kª~r¡JË|»÷îj™¿g üđĂ”•+¡û>%e½+ô8́ºóç¼È*™9SZQñÛ5úm¨§8‘_W×8c†ị́eÓ¡ûT=@TŒüẴØÊë²́#+]mg'5xđ·2ï«0_æÂ¥çA[³ùóÁ}fˆÂb“ñùüU¬Â“ÇOç²&L̉×ÿV,?KK°̃Ï©¯çØÚ»ºÍ€₫P}|²r³~Z­4rê™̀3wï=W ‰XĐIêê_y˜”X”•Í26R¡Ó­,±÷Å‘¢(Ïp^‚­45r’ÿ9Ÿ|ç1…B¤[k}홟¯Ë¨‰I¯23+†Uc9f̃<è}ƠÀg¿EŒ™ ¾65¥?º•–ö_aÑÛÁƒÅuơÄi |̃°oÍ͹9"̉+3ŸUHSD ‡N˜á$ ñAPˆh>j:¶đzÿÉÓÛi©iyy, M =]Q--aáỊ̈E_¾$§c½ŸYN" µŒ&L›F†P}|%‚‚úC­°¥-¥¾îͳç÷ssr ÊË^×KH̉h$ U˜"I”¢‰È$L9 ‚‚¡±il¬­ÅöB«ª«ªX,viY5‹ƠH¥•ʨTTªƠĐùÉ_»Dø¶¿IEND®B`‚nova-2014.1/doc/source/images/PowerStates1.png0000664000175400017540000052741512323721476022310 0ustar jenkinsjenkins00000000000000‰PNG  IHDR§}¾ç½{ pHYsœœ&Í:4®¿IDATxÚ́] \LÛ?¥E›J5Ê^Ñ‚’¶²dMv%[Ö(¤Å³d©dI¶GgÉßö’5;/e§BÖ(„ •J ÷îÜév›™¦™ifjê|?¹Î=sî9÷ïưís~Mp2‹&( ˆ?ÄâñW«((ÀKJ0ÁĂGE/_¾¼^ñ‡aXµ sÄñxÓÈÊú¶ôô*ÜÁÁÁ‚\BÑÀ`ü1™8é&$ÖƯÎñ³ÖªùM6jŒë´ÀD~@úÓIDBx ± 8Ưg¿ûŸ@sˆ4_1//áô ƒ´Á¿[ưHŸÇw/;_ÍdVzá¢\1¯ă_êgù ơç‚a$y%(•û»GÜØ6 ›ó¯ˆ]~5Hlưe½cèµ"}œ‡÷#ưMf\§ô÷£¨ÖîP²ü‘…g\yªDó„ ɼđä€ơ‚˜̀Ă£–_Èî¯Î‘SD̃¥]ÍœùÇ0 ëơŒ¶§&çï@íÆåÉ“ï‹8¨©½î˜g4NÅ$¯‰ÀN­ÊK8 çÔX•z&îŸ̉®ÚD›+|¾Å‡:X1P¯Ëí̃l˜@øÀ,úO°(ƒư>‘ĐÉ«Óơßœ˜·å =s5ẹ̀g¼/»}\ÊƯ.í:j£]Kö…˜¢cµ’­ª¹,HG…çåæææ)))U…W5[*BFđ¼I??¿uëÖñ¼÷j¯µ··OHH^û…ÊʸÏ̉O9~åă#5Lo®Ă€G7.{Œ¬¾I²ù¯(ûîÊF>~Sù‘cÔßàĂP—)>¤ÛLWQ²ú+{µS®Ư lüÿ@Épr*7Ii¦&¬̃}goXnf<’äAt´°>o=₫G¯ªSè5È úœÛ»90ÀŸî¿/æD7Û₫$yêÚºä…ÜÙGú“äAtíƯú¼Hº1Æ¥/Ï»-(ùöú+€äQ>…Mµà%<‰Ùuàp÷¾Ă(̣¨äjÎ"ïơG*Ht·m®ơúĐÚ́Ơdl:'î.-=‹‹Á …‚¿m?₫¨U€”bg2…aQcÛư=L\}R¼²KɺA¹!y­¦Ü@·wøizJI\ú¸³×Ü{ÎûWOơÛAîåM,z’ÈăéîU%MüJÇñº˜”dWJƯmpÿ”îö´ ĂYDÙS‘À#Uÿu騾«-±ú~·3Tô)̣6x½Cbæ̉ϵdbT̃‡Çw[ôä7@e\‘}·ÎÅô*¯3ve•Àêeñ¼¹á›·R|¼‰Ơƒm-ù·2ÅŸ1;h£%%ZÚñKƯ´ÈÖƯ´3ư6NU~Ơü(¬I!Z'Æ_\ú:đÏk:fMv§†U ¼ç7/™¹ 4åÁ"ÂƠÅYđÔÙø’ W9£KpvïæAóª ܺE}?ƒÏ\U&r÷ª ܨ´h,<Áă*u³Kǰ°Aó à&ñ¾~{c#—ƠñOø0Woh¶·äñàO›¶ls5¥r`EDç&íöåÑÇđŒđ之­Í+ R-¹&Mª̀Ÿ ¢¯’ô¾°qy˜g7/så=ä6Ø®;ÇmpÉ<}́z ˜¬ç|3*ÜĂ«Ơ6ĐYضÔW!Æ̉ ÔÔỒ\‡qâ  ïbZm%Ư€ø#URϪñ¾fÍÄŸ¬B@̣ L»uëöæÍ£ưùó'Ÿfľl ƠœX°`àä9ØDˆ<û·†Å_óæÍ‰Î7ß¹b»wï>zôhûöíÍÍÍ«pêÔ©0<*?¥ââb’¹ùóçGFF̣ 9jÔ(ú/²Qư'%hii}ûFô ù·oß¾I“& BÍÍ›7QûEz É#±gÏÉ“'CG@@@XXÅ"jĂÿ₫ûï?ˆ]F/_¾Ü·/ù‚“§¡¡‘——‡ø'Ḥ8@‘Ç`0è»MäAä‘+ÊZ¶lùáĂ¡B7n”y ?úÖ¦'N$cÇåØ*ÄØØøñăÇ00©rE$¯E‹Ÿ?æ“Ä•+WúôaO{„ä¡̣Sœà®Ǿííé9̣رcÔ;w&QQQjjjṭúơëG®~ruu%=)̣Pư' P{ R{@̣8ê9²½êåUiwçÑ£GC’îÅ‹×Öư78₫”••yîLÆs/ooï-[¶p·WMLL(̣È0ˆ?éơ)wZZZ‡ø¦ˆqvv¾xñ"åO‘G…Ù¶mÛœ9s¤³g$*?ÙàO… .ĐÉă Hä5Ä_>} {ßùùù†ïߟmç@¨¡jÄŸ¤đû÷oÁÉ#‘››«©©Y×Èă͟צMQƠ5ÄE6¡Së€u•°[ÊC̣<|øđ'NÔ‘‘Ă?èH̃6lÚîÔ¤¤tzÏ ÇK±v°K¤/»úÍÀƠ«Wœœ$¿8ËOrœÂ|ö ƯƯ†₫¡ö₫ ₫ê(Ó]xa'ß»wv̀¼Á`´k×îåË—µĂ}zu\RƯ‚4*'»…'|öèÑ£‡àSSSaµ_Ä^Æ1›Ó=¡ ¹w{â¾ÉĹ=IË9₫&>MàÚÚ˜dù­`Ü₫‚ùÛ6ˆ½¶ƯẲéöDz]WỬâb¹Æ×ASgÊ'ïîJơKëøC``ª°â(Q|}°JƠŒ°d÷ùóoẸ́7ç,›³Ñcá±íœó¯·±–½«Wj7˳vú£kT£ç2¯ëüiÁ¶ôƯT̉¼ÍÙbÎEÊN*tdeáU4Cˆ 9p4nâh—JÜ];=oÀ€áôÀ9¬Tà%Ϙxg†#ek—Áè.¥úÎ ¹́»QĂß§.CWß`y ½æ̀'IbÈ#iX³*Æ»̉lZ“ÄO™Âi&W«ÜLgg„/[ºrQ ë—$Ô~©)°-âj™.`AÊ30ŸØ!ı‹¼eˆ¬đ—™Y €Ôå㛸Sà«®¸Rº¢ADÄ•·‘G7½!®µwh\ûåçÜc™“®SêægooÜph¢’ºz2üA±%øÁƯä"Ö?,\yĐ®»iÊăl̉_;#öƒ7´xœ?»?D÷ư‘φÀ—½íËåKxß~µÍ½`ÄNÀM\öÇ‚í5ƒéÁN[Á÷!₫œûÏ"ë³̉è(üœÈWOÄ:¹‡Ê hqöí7£Îµ_dkª¼èàÎ*GÔ;Ú±'J³'tTnÆƯÉ«CM˜&ƠµÍHScƒˆ«§,VÉǃ ff<–½¯ ûè [ulu‰?öBê¹§R¶ÆÁÓm›æÍñÙ h_,—mؼÀ]Ö),+Û)'Wé́Å ̣Îư=x†öXö­¤@Qéˆ Œ¿<¥lƯI¹»Úh¯oM¸ĐÈ<@NnWƠÈ/¼¢’Z­°%₫xỹG½~Ù¨ÿˆ?„ªø«÷};¤?Äâñ‡øC@üI¼v«ăî}&dœ¿¯×€ªÿk"́1ß\B ¡¦+)³G“ƒƒƒ¹dụ̀å”{ÙåK‚•ø†ÏÈ̀64Đù>é¬×îĂÅŸ<û̀y¸t€k |täú±~¶ä¯¾̉z¿¼¼– {É®m+—. >₫D ‡á¬ưàCÖø'm ?ÆÚưÊ {k°âK(3>àN^ßôGá̉zU₫è--ê ᢭u£ö‹“ä˜2eLÑ:ø¿ÛËÿغ-œµu±•\?È%¦”rƯ¤éˆm¶Íæs”+æ‹×a₫Ø…'$HhÛ:,àÄ”™²—ëZ;,†‚¸ªăĂL‰€>°đäÅ=<öàđqs+Ù¼y'-XiE‰Qúembü¡nṃ-vKXU1VŚ[ÇÄøB₫x÷\ˆ9¶Ëmä´˜˜h77wúksê\¿†jº?–]®JrŒS ̉1oỤ̀Í+ƒY‘¬^æe¯ÏV5oXŒ÷#_2¹&Máq…5€ä±ß<ưÀ»q#m°c·>ÔÉ»bóKÅäÛ Ö¾Â~Ûă³+Vs.2çPÖX´öÜ¢µ‚&Q¹àơ¼4Ê%ÙÑ.î¿yó< ˜Ëª'qKÏ,éç6ç"S÷>ư bø&DÆ+£X;àUo\¨Ñú‰ÜpC£Çnâđ̣cLIêÏÜÊ’‡a³B́v̀Ú@́ªûä'0aÍ*±co[~âè₫c&±JQ¨‡uvçd&ó(wY ¦²³¯NU`bă*)ä"¬Ưw%r₫pẸ̈±g4’䱋% k'™æ2Æçr%%¥’’±gÏû¤t©ê©Ơổà¯Â<ívƠ¹Z+\§¯DoÄ`˜¶¶6[–¨ûäƠ2u™¼oưúơÂnẺ€ÊỎh{]ŸtÈ“U₫$J̃‘#GÆŒX{– µí|m¿èêê~üø±îäỈf@Ăå¯.·xñâđđpºÏ”)S¤¹|Ć?¸»»GGG×$†™3gîØ±:8È"Ù¨ëâ2̀ŸPäq+ ‚$ăÆ;tèĐYYÖÅe»ÿnccsóæMABîß¿Ÿ›¿ª y¨ü’¡  ê#ÊøYÇ%ù²eËV®\‰ø“ ŒŒŒ$ym‘×€øc0†„-OØy@ågƯB‹- ø«sPUU¼‡Ú/uÊ,Ëç‚À̉̉ñW#<~üØÄÄD¼qÊËË ²sçΈ¿!))Íü1™L±×”u‘?jy ÇœŸå ¹Áöä|È;›œ­|.R“ºœ‚-"·ưå0̉³[ÿÑ>~+Ê|fÛÓ‚Oà°đu<æ’îj@IQ‘g°i¯ª®ùÀ±0Îë§₫7×kZU₫µ{/—Qv£¦ÁX̃»n;T{Ă Oߪ6'øN‰?;ýH₫S²1¬t\:åç;_¢ús€¬ à,‹¡Ä|b·Ol8{H’7hưCß5¿o¥e/¾ü„äQ>Í :Ă|4ÓåÁÊ®‡»÷F‘‘V@À0Huj;tô1Öl"'Wi1ĂÏ_øắï<Ê×hUUê1ĂfQs¶XÍAŸä«qSÆ»U˜$¢ß8/èsñÀ_‹-?,IK­Î²=JX³­89• sÎÏŒT|åbđøóÉ«*›82ñÁË·³H cF/2v_ÿdr_ĂÅ7–:·â(f\0lMV ën‰cƯ^¾ù°%WO®s2 9«¡'l"Qü‘È+_©Å̀x©¡ÛRQI)=ƒid¤–œ¯l(×L"ú#nº,’Çâ’èü®xƒ¯`7Xâï$®×¹¨°H©™ÎO¢yF́́k®7/!ksŒ—ơä¨Û{\9XÊ)(®<3üü(Ï¡Ăú’¹£ƯsGøwmæówÊ‘é@‘™‘!;NröbaAơ~|=XE¾´9°Ç¹•ÅüË»l¸n¹TÈ“WMƯÛ\O 4o’ZBÆĂqA|Æ·•½5+’è¸$%~ÉŸ¸à.J’á¤bê])ó̀ûRKü/ç†÷Ób?Áw±Y|µ17uŒJE#›`’GcK&WûÿALbëƯ½Yÿ©˜PYŸB.5Å£(Ăqz}9/̣̉¼HV¥ ¯º¶Ư×|l¦[ÉÉCÅ4R!yđx:Âê8Qü©™r6RL×̉›0îë¤_ÿ5WSͤ­›7},¾₫ù§¢Œư„E¨¢DïáƯøäXˤ-{WîVz-¦yN”Œ₫¤Ų̀oU®.çh₫ß¿}€{‹ˆÍïÄ\1gê×núªÔU|–JÅŸ( :XÑ'¼™€©CxMvçs£ÊÓ—¾|?üïŒÙ¸Q2ÏTƠ₫ưÛGñøjcªÍ9n°xá?ÿµp\m^ĂkS³K¹ƒÛ·%Đ1uª§£½!ÂyÂLî°§_©U±̉UGQÀÀK‹'ƠŒ¼:4₫éăMÔ97^~TVa×TÏo];‚·)¥)ăGqôÛâ₫‰XÄ™AĂ¼;t"®³µÛëw™CƠŒF‰Å ‰ ‰îeæÉɳ§É¼ypsø€>|n˜ˆ9æxgÛ|”Jÿ)$4lĐäù•‹¡œ¯[ă×½ÛWŒu™¨Æ=¿̀¸È«ḥ ' [¶lñööæŸe= ˆf¬……Err²_̣Ø1»üÑ‚¤1~]_áà è ­6@ü víÚ RQQ‚Í×Ç;ñ'4””” )øL'Ư»w¿_ĐM455‘₫DÄ;fΜYm°øøx¡¢œ<ˆ~ưú!₫DlŸ²²̣“'OŒQưW·Y0¤¬Ú₫¥¥¥ü'2}ÿ₫\)Ñ·oßË—/‹1é={̃½{ñW#@̣œœœ®^½ºhÑ¢ơë×s É2d$OCC#//O,é:::J‚<Đ÷äÖ₫đøîƯ»V­Zq‡9}ú4iÍnXågAAç—\HåÖÖÖ5jÔöíÛcbb8ºóô­+ccc]]]I÷ºuëüÊçä¡ö§D@'ïÎ;VVV¤û?₫øï¿ÿ #;;›ôY¸pᆠè×ŕ;““C:RRRüh“9PÿA ª·   ’<:èäñ\eïåÅ̃ăœêïææFIñ'qPm“ ª?7™?K‡¾~G‡°7ă'§€²&̣ºƯ2«?Øáª5kÖÔÍÇá]~úŒéï1d,5ùƒE{ Ă úmB>µ¡¡azzº€¥¶ă=oûcàư1D“&M$µ?Å û˜L&ÎáĂm²%88˜Ăndff·MêB’3d99}ÏË(ÏvÂ, S‘uNTơ6€ÿƯ%́m{ü}®)1™n±9X›LüZ€2{ÛX˜´âc¯NÁÀ&.»>ÓỈ }}°JƠl)•¨LVđwöä~ÖåË̃Ár‡×Ñ́YS©Ö¦ á¿'%²ñ’&ßɰ°2\3oÍpd2ă×ƯÎñ³Ö" ḳ¿đüùѯ†E÷7>hµài¤q↧si+ûùƒ ;³¤ŸTơW¾T̀ƒ₫·ư1«•|Œ•d£9£Ûªm¹ưÛ$†•c`äɽ{·zz†5Ù¶«iD—Á°ZŲ}LzḄBb9w“äÁئ»uƯ ëÀà5—Hÿ¨ ó¼nFí1€nÿX% ̣@eó| C²̀$c;༕₫“DÉÈ₫Qưi¿ÔWp´Ưi0/_¾\¨f¶I ₫DG‡̉̉̉„½J__ÿưû÷ƠkÙ²%̉Ÿ!2¿ Í©‹|Så¯_¿ ¾W,âOüúơ«qăÆB]ÉkƠªƠ»wïø“Đ—}Ä_%Päµoß₫åË—Ơ†'Í́đ'Éd2 H̃—/_7oø“(̣¼¼¼¢¢¢x†ÉÍÍ­Ề¨XVÏ&*ư)0 ½₫ëß¿ÿ… ¸É>|¸‡‡‡««+}ǺÛ·o¡gLLŒ¶¶6éC’Ê÷|Fó—¤ HÏzëĉ”r ¦¦¦©©©×®]#ư!UPmTx±oøŒøü Àox’‡ï$¹„nÓJ̉'ṂçÓ~©»ư¿ºcLÜđ"ù`±E§n5¤&…!₫k*Ö¸.ñ‡µ ̃₫[oÚ)ÜØ¸ñÓ‚:U³[%å܈‹ûéẩ¸éïí¿”óÄÑư#ÆL¬ư >ỲWs]º̉AKÖ¹\°`éϲ̉&r{…áAá[:..äÿ‚öÿ,»cÉ́f&LÀ=f̀Ød¯¹XÖ96‘“¾ÓÆ̃ªW¬ÿ(n’îW"iÿΠ 3«hüñ‡øC₫Đî¨øD@@̣C@@@̣C@@̣C@@@̣k((ÀKJ$8­(**˜{Ÿ)$?$?ˆï×0EGÖ÷‰7—ɋǸô„̃WNîßẉ́₫ưû¡û́Ù³ƒ ¢;"VøüƯzíÊÙĐưäúáư—^«ÿ”è€ăñbî-Å%5U\I“tê<·8§ïÁ|g›óÖ®°̀¬/ ½æ§ó½-ƠÈ0đ8rSÚ–±ºFĐí›áZii7± í°r+n³O¥™™ă:-°ZaPrÇK¯öĂ0exŒ>vl çßXƯw8±Ùlί.gÿàââB~?$Ô4́đUsB́@P"1Æÿt*íDÁÏÇÓñrzp‰-ÖÔ(ºv!7m82}®±”®»ư•ÔØDv€‰G¹²H)$Vä°¼;ù(se°ñ¹ÿÅ7ÓçlûZç‚ÿöz%#̉s±9Oa¹z…&øaX¹ ›Iúy¨‚tl¹“:¢cÈélOă—Éï:ï-—+¯+X[’Á0°óå“¿bâJ´¦›ñüÅí”KăÇÍ9´Ëmk#¬8æßX77÷œw/´ZudËx‘ưæA'§1YwÏ*ẃ×JMǜ;xồøñîUSỔª U}í`/½6c»9˜²}¨Æ…¼Ÿµ–+ÀÖÑ+–µyw<$+€¥^ +5P• (klím"üƠÄ;NvVkr–Øk‘yU‘ua -ĐÅÿÜßóPë{b̃ƒ«,wÆÅ¥¶«W iíµó y˜¼ÑÔb±7LnÛXí›Fé€|=‚5Áíâ>J”'Ï›”}ù)8đX̉ñ >ơ uÆ1ufm2¾–vZ‹k®Æ&Éđ̀úRfÜ‹Éô® æeÅ~đZåL‡øØ·cø°IXæl:‘ µnm´asØ­[¯_?6õ¤ơ·µ;4‘Àø‚¦¶¶(ÍÇŒû §1­q°u«ÇÍ›RÍ%†i03µÊAR{DûeŒµ——§µ`3¿0 XKZÓɧ¸óˆÊ.U}pà.»jṬ{½\D̉”ƯF$“ƒ×~}°.B*XVÚêïn­L×u“#¥b/EṚóp±>›wëÅ ë’¿< k.F}RùN:ûÛ–»ó:)V®1ÚÏ£N”{mJÚDt]EK—Îz§̃L&kÍÙ† ¬wËQ— æÍWƠFßÂcM'wn¼ $û ưØZâ„îˆyófÄÄDAÏÓËôøĂD×q=|SC®–$;)m~pđJ£q}´ˆÊ|…5‹+½z̃̉ 6SfSAë<ë&aEZñtM4ØvÜ5 YÇ’U+G̃V ‹9IUo“Ö4xƯ7w-ü£ûTºIYl|̃ s¶¼Ű¿Âï3†éZXd$'kF÷²¼ÍÏ5·ÜöùœJ¸†,wNÿ{ỵ6ÖưºßN&N£aÿ³o sǻP÷n_|* ¶ŸÛ10“WNûmÁ'û,€¬̉‰Đ́}øéŸ×AÁ§–tñ¨ó&Nùµ2ƒ=ˆKåEî5£±‡2Îí ßô¤¡öØ},ïîJn“âÉĂquÖ (¥(J½”´nçáVßbzè­PÖ¯ýSZ ̉×¢vdX­ªưü»lø bç0ŸVsö¡—÷+/phÂÁ2}Öi»Joæ>₫×…™"†̀d0L&³†(B9rd̀˜1ơM~Œp|ûDƠ!ư¬́ÍÖđ@¶„–Vtç*w ­.â2+oRÇññ ªMÊc&”••KJ¤j¬°ª}tª…¦¦ô†¬Øïêê+ ©o`¡¦ÆîCèèè|úô ÉOö_i’'LóL ’8~ü¸ṭ°V¸«ƯƯÅ‘üÄ)ÔµR¬…„„H'9--­œœ4|‚ä'4z÷î-å©éx…Ô¨¶´çëëä'Û¸ÿ~÷îƯ¥–œ›››Æ{`$5íI--Ô–]7$?fQ:=@éX*ONN¶°°3f̀‘#G¤OÜÔ©S‘üd ƒ>sæŒt’SW—Æ~Å:u’B*P{đ8}úté³&ÍÎ-’ŸdµwđàÁñăÇK'¹.]º<}úT¢IJ-÷úöí+e¾`ạ́üùóúô6ôå¶P{“&MÚ·oŸ̉‚ÚKOO722’­,5kÖ_ưÅáùáĂé4t)899Ơ3í!ù µ·fÍ¡Œ¤¨½±cÇ>|¸.gHDD„••yÊ­½óçÏ0@j÷ÓªU«wï̃]½zµ₫½{H~lPÚ300È̀̀”\BuM{‘‘‘̣̣̣°£||}}ù_"5í•••ÉÉÉƠº-h$?éA¢Ú£#77WSSü6ï̃½Û³gO>ÂÂÂ*+̀Ÿ?¿ÎrµW¿_6$?~ •Pä’ĐÄÂ… ¹ươôô²X{ªĐµW!̉b$¿ú¨½§OŸvé̉EBñÇÆÆººº7Îääd&“É`0²j¶ŸQ‡̉̉̉$áƯºuk8ÚC̣«P{ªªª_¿~•Däb×DçÎ)·©©ijj*µä¢&‚ö >|Ø ̃.$¿ê!!í‘ûÜ‘ÙÛ:Á Ô å³½½}BB’'Ú´ióæÍIÄ,öỈúúúb¿arR̉™ÜĐ´‡ä'($¤=ˆ]»v‰7B=ÖÎ â½aww÷:₫­É¡N yóæ&&&?cœ°y,iù1B: …‘ü$ˆf͉W{666’¾í””Tû!È<”””ħ™™™¤o{ôèÑH~UB:ËƠÅÀhñsj`` éÛ¶³³C̣3Œ ->N²Rª9ơ₫ư{™¸Ïgω})ö°Đ«³VˆjW~´äR1¬+}]Ö>¹·0EvÇ !ÓẠ̀p;́¦Îö,-…í!ΨH<Ơáç’×y'L aƯ¦È~c½è>=‡º?øøîóêînC…®¯>xÙ\WŸOü÷¯vjT”*´Î'̃ÑmßµR52jÇ}^:åç#ÄÄΰđu<æVêû¹Næˆ3ëÉƯ}DÎ̃ ›·ö]iÑz}c$¾3_X[Ưè½pï‰N+~‹K¾Ú´Ó‘±Úy~aË¡<̣ïV/¼¼ˆWÓ}zØ]!· ­UIưıƠeC÷¬x±rN‘>‡?°e¶ç>n¯a@kỔ¶­tä–¼)&nƒC{<Ñ®çđ)+ữĂ@£ÚÀ›¶nwt› üµGä^£Æé…~‹Ùă3wvUÁ¾Um̃‚C{<Ÿ…|³Tp>ª.₫öăeÁoèàĐïÊʸ'Œó[qa/£‚g/3§àóO ‡öxBÑ&ñåă{'³öƠ^ê2™Øó›¿öˆ¾q3U27ÎíƯà_×å·qăFP¾vDD„¯ïR¼t®eŸ‰‹—­Ó×,úï‹Đ‰k*É ÇIÏuhÆq€æ­!!_ÂÖ,¨­”aà̉ĐĐ­êå Ơ"NÅß1èÔUØ«ää oS‡ t®* @jO(ÀKà…fº₫ÿƯ} aĐjOØÓ ±OO÷ïÉc“›ăW®·5¶6BEex‡ŸƯëÿ‡}µ¯àxK̉4^>û£6Ơíûïº^gvÓ+ưkjîë)›?lla;`ÇíÜ₫{S®-„Ư±ÿ}5ÓY+9̉ƠbáƠ zJ“<ôצ9÷́̀ç­’WPp6 2yWyv`\y¦½̣‡L]èÔÀ+¦SZ¨P₫ê/)¿Ä́—ªâ‡øïØ|u›PB Y%é% § ̀́ÙÙ€ÍY%̃»]MH‰›}ÿ«{wUꪘ“g܆ f·S®^oÙÅ̉ ‹i³L'́O“˜v39²/Œöñ¶¡&sNù{y8g¹ ™}øôö±dró/2ø‹ >aÿAƒµZüïïí¬îÛÓô”`†˜›-NyΖqVI|̀AÇ!ú…Míacî°¤-%c̃qëëNW]è^8H­ÚSùL¤\Œ¥î™đaåv…ÆÙ¬)™Würf!,́`†÷:A–j?X˜%|.³Ón²Í­5GÙWsV©Xœ“K:¹{}úđs¹ÿtrĂ½è¿#ëü₫aKµa TƠäTÍNG˜Ư=´̣âí.Eg7oÙââí̀^ÖØíM{> ˜¼đêâ‰#V¦iÉ-]WxvgçzÆ[·̃^đ½ä́ư“ûfº<>‹ÅE­#_Đ[Ö¥|̀^mƯ¹,wG‚áLS0Ï{ib̀†·{–Z€åª„s!æ=\Áûóđw°'jẁ/’nt0·†·QõŒ‰‡b¤ÿ³;«D oéôñ¤ƒđ¹v|M#s£‡w“£çØ ^̣̣̃µî­†ÈŒü(½Í‰y;‡æCwâøN§¹ÏEœƠ+ÛOx›‡EqDRGđ£¤¤)k¾Uơ· ­×Saf¬d¿ÄáسW…W¼Ö÷Ï3óœÈ­ßBŸª:'Cơ”N±ÄC–ư|împŸ í=¹~Áض?[9P],Lôö8€Ú#ni3{÷ḌWƠÚøoùJ½²̉ï ‘›·₫!|W^hÆ÷  p öŒ‰M¡¢mô»¬+C•®=vŸơ"đÎñ/#Â7D8O˜)ʳW§=*dHXØ Ïù¢$À?À¹;©z­Û —½?¿wƠרEí!ùqÂwñÅ9ÿkÑ›’ÆƠ~rcÄ@A§wMt%†:ö:̉í¡ƠÛ³i ñ…F‘ÿ;Gâ.u´¬₫›Ê£Ö­ø—‹ăYŸ²?áͪđăóäB[‰ bị́ốåë*ºƠN¿Ÿ0rpA{ïVÄpî†È-}ÆL¸.U¬ơ÷ ÉÔU›™©Ṿy₫êơ—ü‚¶­ZêéhW` ĐS+'ă4‰ü$íƠÏŸ?M:¶oܸBđf´¯£ü1Æ¥ưôƠ›L¿E —üÙӼǡ€Âä˜|y÷Á£ÉÆ?×Áˆö1CWt mÛ·åđ¹“ô0ơqª££}»Ös»ÍÖ……ó½é§ß¾¿“üÇñn&]«©̉²·®́ơ†ä':µk+¡˜;´clíÚø/ZÈ¥½¡§Y×?¾W̉Ø;̃–ƯàŸØ£UTPp´±ªËï’_}ƒ$– +¶H~¡uëÖ***………bŒ³¸¸X¢÷¼k×®iÓ¦I"æfÍ!ù!H¶¶¶°?)Æu·Ë–-ûøñ£®®®„nXBÚƒ¨ËÚC̣«Ÿ8wîŸưg››7oJîngϽ}ûvIÄ́åå…ä‡P €Úspp¸víZ ă¡´÷đáĂnƯÄ<@²{÷n i4K†ú~µR{Í›7ỵ̈å‹h1899‘†ơ455sssÅxoä,| j‡U™0K†äWáëëAºÇGiïùóç§ŒZ̉µëƠŒ…–””())a’ÙÜ€¼7eee™` ɯ¢mÛ¯”‡‚Ǹ¸8J{C‡=uêÿH.\¸Đ¿îú ”‡đđđØ¿¿P7vụ̀å¾}ûJb+DJƠ²ơɯb̃¼y>P{¤#11ÑÖÖ–C{‘‘‘Ÿ>} ¡|JKK9´Xë9é§”ö`œVVṾ̣̣Üw£Ư±cÇ̣åËÉS±oÁ¦®®ŸŸOº%¤j$?¡‘™™ÉssNí4áiLL eàJVzĐAjiÙ²e°̣LJJRUUå3ªAÅ +Ỡ½{₫üÙÔÔÔÓÓúèèèPÚ«9₫úë/x3t«”ödH~ơP{°RªvïZ&;;ûåË—íÛ·'œđ8lØ0{{û… ®d¾°°J‹’ë÷ïßaM [¶;wîç¢E‹xjONNàđܲeKáɯ>jïñăÇ&&•v„úiÓ¦ G³c…Û́‡Íê'N >œ’ásP`éééÜ ×çÏŸCyÓµƯđ'CCÆC’_=Ç£G(ùÅÇÇ;::Bí‘§ôOyÂaRÚ °A T§V‰G¥ÀÖ&¬E”öüê?ÆO:ñ¼ µGÿI¼ŸÑ!>}Ú¥K?‘Úăºú)S¦üóÏ?H~ơ¤>(9XéI"~ooo>›••Ơ;wDˆÔ¹‰^M¦́ ù!Ô>^½zennN.A’ök¼ÄÏÏïüùó©©©đôúơë¢iÙ¥tss322¢÷‘üd 7nị̈¿ª°P³Y¦ˆễ½ûéÓ§‡ ̉ å÷ư¦èXóm9#́±‰8ô eÄÇÇGFFRë$~ưú]ºtI¼ÍÅû÷ï÷èÑ£¡Ê¯䜣̣:0Ôw¹aÓûî×Îî¼ ÷-^Lb‚‰†Ä‰D$„ZÉÏÚµk™L¦̉»©F*Z99¹RÂ^dCm|zyyul©ô,²ˆÓN­pºđmÓ (<̉˜đ)Ó-ø$…Ú€¥¥eRRR“&M$­=@›“#‰hë™ö“Ÿ‚C¥=äw’[ȇ’?îÜÍ]Ôñ?E&`Ë ¾»Ü3K$§@yyù‘#G=ZÉ ÉLí'äYZvOJJG:YYƠ`2q₫a`Ơ"È6.ÁÁÁ^^ƠÏŸ~û¶´Ú[ÄlÂ=ÅăǹüĂ4i‚kkc2,¿”Mξ—Ø•Ơ¯Ô”Wºæµé–Üï„9[f@¨ÅV{’M¡Â„ÜbơbÎĐơºÛÎ=•±e}¹ Ư@<BƒE%ù•~§ O765ïÈêÑơ ĂoúŸ 0…î¼»+¸Dç$«³E+‰³ƒ’K{Fû#₫đđ ¶T4_Y¿æ•Ÿf`˜¢¡æ˜ÈÀ0‰́e00XƯÁ#Q1ñÔ¦ ˆqkr†}töZƯÚiÆ­;ÈL¦(ưöµiñŒd$Ч«©Å£Ôd*ỉA?vm”Æ\‰ïTU´ăçFŒßæÇÄ»–ÇđơÁª}v‡^yKÅ“̀zè~~v¥ªÙ̉ơØÆË@ä©[̣³ ¸…€ˆóœ¾¾ÿÔuă–P!Ùi·a÷}Ó¾‹x˜^Ù›kY‹27nÜH¬æWèJd'­l'„¬N–~Hê;xº»Ïß'¯ç=ùü“2ƯÎrh”fß'GjƯ¤{=ñ"bïM§¸°zƒáxf »‘'/L¯º~ÉÁ¶_¿;Skø¾Rz¨H”%ËG&îw94‹eÿ“„¨nû_%uµLüÎÆ̃ô{ó~ăMÄ̀.åAÓJ±lLơa2#HÁד¾ŸïHß§Ú¬¡HH·\ß@Pa‡]ƒtG†í¤@–µ̣Taq-9‰3.7ƯÎ₫UË’Œ¶vMº× Ë ׇÚc©"̣ó³&644î[ó‚Œ;ºO+-¥`¿Á¶̃†µQ,¸ÁáC‹9é 1S"d·êhÖ ’‚è¨Ö¦‡p‘!à¶¢mIXíS(**~ûÆß¤!†ä‡P!. ’`mB¡   öhQí‡ {Â,K#ôMÁ$ƒ¦M›₫øñCWWWŒiéèè())•””H­ẠC¨÷uï̃½’N+33Ó̃̃~÷îƯäÆMâ§OŸPßA†[ƒäÎ’FB‚˜çöΜ9sÇyyyH~2 Ø£ïÑ»wï7nÔå&·¥¨½‚‚‚z©=$¿R{mÚ´yóæ ]{°b´²²zøđaM"766~̣ä ‡§°–ÉZ´hñùóg̉MmK£­­ŸơÔ. 8₫^ =ƒLƒî’́³–ø­Øbe¢ĂØ-¹°º÷Ù³g „t" ¬ZµbéR¥:Ê?.́º§o"q„Ú«đñíC0?uí₫'̉k†våw‰´ÿ¹Âđ-×Á¹Đ }@ÛxÆTèˆ{½Ơ¥í\û™2¹YC¯ưèû̀gßø³…-1M!::ô ·BnL³VÅX£ö±†Öª“xÅö½¨…m¾Â#/đ÷Ê…ÓáUÊ-:ÁŸ;FƸÆ[ƒl³HY›xâƯp3VC4iøhKÊ?ÿN¬º•+)a“øơ›Ó'¡$Ê óÁĂ×jvấ¶Ă¤1́.t½]̀¡=Öi“zl ‰`T\E{´*¯ Ù³„đ›₫%ÏÔ•»¨qt‹Ÿî¨đ”ççÜMP{`à²mçVΡ¯è"-ñµ_ưÛZ§î`Ù²ä0# ¨=(ƒ×Gz =*bû5ùÏésVL¹R€YbMCK$ÅG)÷¥G±ñ³ï‚*“˜5k = "EÜ®\]T—’̉ÛhkåÑ\"?t¨x„,?Jîûß¹ï¯ä¡Ô–‹3ȯ”Ë“Ol‘Ïæˆ“G bă'ß:´lg¿ú¾³ ö2+¦¬:ë×”Ÿ€¾¯¨PƯwÿ$BC³ơD¾Ă×ê&x¡¡—*1ĂĂ-*úØüeÛTd¾ –¦¿ºmÔî‘€áÍi/Ëöí¹³gW/ŒÀÀå7néƯ»@„Û _÷q±ŸWư¦ F̣ă0#̀s/Ô3ô€]•‘F§ĂĂ#9 Œ!éÖŒÚY`ư×_¡³f j¼̣êƠ&NNSf ü9 wï1€ø±jÑB/9v¬täȹ‹ưê₫×H~·ÎXÙ¹@GÉĂuÊf‹IQ‘ÇÛy¸Ơ÷ƒ˜̃„À<ˆåjOèmíÚMđ”\>ó…FËNHµY³Ùö¢œøk]\87¨Î̀TIKûÙ·¯;t;9‰’Ä¢…lc)9Ù¯¥ur’ăđ̣e³ÏŸå{÷vƒnqÛÆ­§̣#µGtöºùá¸U•×făq|aƯe>uwr´µ—<úX`˜÷˜v`A"±Ÿ’ˈÄîÔ₫Ä”é»ư™ƒ –†h8ÆÄOï[6#p!¶´ø‰N8iàS¦ôa¾₫4u$ĂxFă?¶†\ YÂ:uàØQRxÖ₫‰±ómC˜̀$ñ‡5|Đù qdÙ¡±ƯS±ƯS—íM¤ X»˜EØW"rE/Gê×Đk_‰0ï₫‚Ç1kߢÀ†ưÚ C&­œ£ªăäè0@Uéưˆçhjf å÷™̣Ç¿³₫+䈲媌ÉÏ7g™-Á0åàIlS*»|@™ÅùۀěTHmØÄP±snËlƒœt¦èZN3-–Ó9ø¿‹Ëÿ¨ ­:ÈĐ#J.Ó¡àw§)–„;$–éÙ«ô']Y |~-’¬Ó¨-ë;ËdFî2w~±³©ÚD{1°·,Gͨ Ç0f|RZäçaѕۢ¤£í¸ƒÂFƒµ̣”Ïœ³ø\ £o€-/55r8¥se9ê-${D”{$»À™G¥*7r:B¹2Lƒ™×3Lº`Äd¾"_¾·L\ĐRăg(+)SlỴñÅ¥»nCB¿ó§£;tb¨§‘™oh ‘ñÂĐö8xh×øqÓÈ#<=m3È]K©êÈq}º*Üx…û|¹ƒÉ¬´KçmVÄL]Îúé~y˜ûƠêêm‡PR3%e ]kBäÉM-¤``ˆ¾]¼ƯZ™ ƒ‘ñ|¹Å0±=g0Ó€bi¦#v_Ø6…çB…."[èr:{@áˆñÛü˜ø)d̀0˜ÿH,ú ®"ọñ1?gïơW'†O±•yù±ë1ßÏí)Àiíî%)ɽÿ'å¾̉•CzUª¤DˆvŸØÓl µÇ~#±Ïáé¸"ïÁCøúxë¾_ófjEƯ’÷rÚö²B†\ó܉ƒ‡k뱾ʶ¶˜Y_\ĂRbF2‡1OlI*¢“¸³­·Öœu굘ÛñƒXI¥M‰ËGå>éÖÀ+–p¸F^¿½Öx½‰`i»H1¼°¿B†$)<₫wäëÙ•P{Z4RBúTÜƠµN'™Ç†&&&ĐỏÙûYÈ‚)¸̀ËO–P†¥ÿ•kÄ&M)wgç¡đØ®]?&3[¨_t¶èÄL» ®à,l»ËÛRíùá»Á‘áÁÄY:Ô^y =¶RGn¦¬µ|—ỡƠË©D3¯W;xÜ6…ó¶%-Θ÷E~O´3%h'Y#æÈ¥C[ư†„¯°®Ü½ÀjY‚è³û—9Ù5¹C= ĂDo¢đA%R~æ1 C·©!‘{vvö•¯nAYƠŸÆ§l ™Ă`æ4xäƠ3Lj²3²̉óÖ„Æl[Ăd®†…f/²]ÔÔ±3é° …jY°b++ç₫°ˆ]â´æ&Ơ`Æ…à‰gn®vdÍù"n.«B€ƠH•Ÿ[·^^̃¿ö2¿H{y×~ˆ;l¢–ä¾>zúª§çTzû¶$÷ùÙ›ÏƯ† —S̉JK †7́Ô‘lîîƯ»{‚çTXÉgdfß¾~~üxwØîmZÅXxÿn½bD]x…¯h‡-[ºkă%æÂEĐ̣̉0íØŸ:"AHÔ¶­+æ̉ ,‹9Ëü|Ÿ³\Ø0¿ f+HqIÓØ­ă–/KµÛ•5¹ÔMđï̃CÑA =ê₫—Nù1Ÿ$´4q°°””'…äañr̃G]œ­M·ªûuÙ¼$₫ñ Ăñ,̣CyzÎ4Qvx ¨=Öå¯Hÿ.[©Øˆ#¬Ô?k¢@?îo ü‰Ÿ†?ä¿­S'ª{ă´!ívÈTöíô+ÿ=|ñŸ₫YÀ̀*"ĂÛÜ>m‚‰ ́<µnAEÂX8ƯK€lܾ“ªFV.ªÈ:¯¹+£\1ê1IÏ vÖÅWzdá¹ó^ÉÎ^LQ¤l^Ly²æ=Læ¸IÏqî2VûaX|̣Ë·#fXKͲ¬¼T39ù½¬Wís[Ç̀½¶´Ù@¼^´öíˆÏŒ-ë/äCùEhöêr8h|ÿUJD;aL* ²k!6\j|3£>¡qK1Ëjï3₫‡É>£|”§†%pF; ÇÂÀƒ :{ö,G˜<?íyDKơ9uu[Ê:U[ß ¢kË/”ôË ×*Ú·gud273Ư™bfn^]ü:ăFíú.f2+Ë«yĂFI«øŸŒ*F>)á•âxñ½U=—‘jL̀Ăí@B¢¿"+̀;aÎÖÿ2ûđ<æl"”_> ð‘»2LÜñ4zFg Cßâ…k›Í0Àt“¹ª¢}ûx[“îs4ü*Eo"HI~^‡2£Æz+æƠø„xuS{.o}ó;a½¬oC½MŸ>½ÜÏ@±©Ø>Å »hÍƯƯ=:Z<•¯¼&Hêêêêùùùuÿm*'åååKKK¥–‡ôñ!»E˜lȯ4í |‡Ö/o`pµ?…ÈSêZK»Is+ÇAXœÜ>irí<ózôè1õ<©¥XPPP“ËëfeUÆ‚œœ@‹üäÚĂñqÜ-OÎSº[;ö|4ö©UÀEœ5ÎŒûĐ/ƯGR8-ƯJAAAR“ßı'OKºbÿơëWăÆ¥đP$ÊÊÊb©™\·nƯ>|XŸơ™™™đX\,½iǶ¶ÄúÀɤ%OOÏóçÏüøQ Ơ¨Q#²”2}M›“(=zT?û~ơ­[·¦Tqưúu©¥ûîƯ;I'±oß>ÔœC̣«Ó₫T˜"lvÂÆ§ÔºdRèÁ‡j̃¼ù—/_êwf"ùƠH:‰Ù³gSƠ;“É”ÂC1¢V2óåË—¨öC;w–tÛYæC1ŒZÉ̀=z ù!={Ö¿‡ª­ñ777$?ÙFll¬«««Ô’4hP=ËÀ¬¬¬Ç×J̉>>>H~²   iÊOUUµe lƠJ̉ơi¢b•Ÿ……j×ïß¿zôH„Ų'O6l˜̣¿>m¦„ä'  ö $·3'Ô^ii©¼¼¼4JKK+''GäM"¤£=ww÷¢=$?~ô®¸&Lø÷ߥó,¤Ô¡öD¡]»v¯^½’­J.’_Ezzº‘‘‘„"—ö‚‚‚BBBjɹsç¤p«²b‹ÉO€Ú«•b„¿¿¿XfÛ´oß^ wÛ ´‡äW=BCCk^uT̉ü¨än₫Ë—/R˜é&.\¿~´‡ä‡À†ä´Gä~ÉæóæÍÅÏ•+Wúôé#…’...É¡îƯ»'¡•?.¹Ûă'rŸÔÔTIçsCÓ’Ÿ@5jÔ›7o$³Dg{‹ñ¹Ôf¥#ù!pâơë×2wÏô•é5ÇŒ3$}ð€kÓ¦ ’'dq[eñœ9s¦¤oxèĐ¡ơÆh&’_ƒFbb¢l@ZZZ¨ñ‰À_¿~•ĐB›´´´:ˆ7Î+V\¹rE¶rX¢#̀H~² ??¿;wJ"æÓ§O/\¸P¼qÊœö€`“Å‘ü(:$!ùƯ¸qĆ̣C@̣«W055•P̀Ï=o„8×'\H~ÀÙÙYB1¿ÿ^¼?ÖƠˆ2$¿ú''' ÅܨQ#ñFxæ̀Ä’_½‚䦋kZ&…1cÆ ¾üê$×›RWWo„nnnˆ/$? ¬¬,̃Å»Ë5’_}†¢¢¢x#TPP@¹ä‘giÙ=) ™ƒăK@T"ùU £/ÆÆq¼Ú>=Lrrư§Çe¸1‘à Ó§>O±Âçaíz€tè_w²æ]v₫ùsçz8§{â¿ÅíÙüç’ Ä|4¦~».Đº'öÁÇoĐQ”Ÿû0ñœéSEˆ0lƯz‡‘“•Ñ=oÆư;qôHUQ·_K±ƒ% ›©kö2Æ|vïæ #Ü{$Ö̀aà÷9Ü?Ù¸ŒÊ( ø[‹FEŒÚFø!;ïóOy kÄ¡=ù¦ƒ<çĂ;|z'~ü0ÑÍ»?}ó¡T¡9̀^íMqeç 3aIWÎL0Jؘ·ïÚc3x¬qwáŒùܾ-₫‹eI~”œ‚ûibØ̀×8̃†í9T]₫½U=—•+°ŒĂ“ĵ̣ê.ƒøµ¢–{¬`“GY$—Ö…Y±©ß¸ê—·™v‡\–¼{nÓĂ\À˜¾…Ú«6Ø Ïy0f3Ưjú„̉3+kCíUáçßÍ₫·)̉ϧz»(aáëx̀­v”·‹•#¼ĂFyïºvz²xÄæmŒRm0Ë>ƒaÚ °¥n A³÷ɨ½jƒ œäô¾ĐR_EfäG6í–\'O—͘_ ///Øb"}Ô{L€̃åÁyz²QÆÑ;¼»R#́ •Ö̉håªUC§/<¼R«NÇăÎpPmHø2©6o!x̀üxåÎÍÖ­ßX¯Çă&pá&88xØ !ª…ß­.Å_ïç(ÄÑC§.¢= Ù@%÷Y "'²WSGÀh7i"HW‡†^pü†u«‰æetT^v“Ó'g!§ä‹æôÍ05à¿'%ÀD™s‡̀8جi;¶bKơKa=êºù(ö«ơ¼X&”öH´µt(-+“çklùú‹ÍÔ„₫¼^Ơ+̣ Ç…̉ “^N¡kĂ«jw…„† ¥=Ú,₫ü)àèQXø†³…M¼Ú0·̉?ĂV«¸²·ÉoúÖ ¶j,g§CC#`M¸ÂÇỬÉ‹́é•fß·îk‰ăÅVÑÅ'<í 'Q©Y–ºQ'Â×—ư]˜4Ư£ ôîöæú„-µ™ßË~ºLÑlƯÓÜŸfºUÊoĂæ­}FO-æ₫wtÊN«ƒ²7eóØîâYRüü…ơÙç”™éV/¿Ü´Gâ₫»¯Ư[U¹Øríúư'Î-æơ›"ù̀¯»̣>g5øèËZ±)zE¹§œ–eRRlẺ¯*÷¾¾œCXt̉MFÛÆvR`­nñxëY¦F =‘/ÿßÑØ £]y₫$²ö K€EŸ!'/'´6}Ûµ{or{·×åđ¼ö襦^+‘ă®¼5™ &ùëÀdi¡D:3½â¿~x9z¤F¹eíÚ5w³‹₫ƸÏúLS˜?¯¦TMhqa"çc–„¬|;«|< •=́ëư¡Ơ'ªë ¸@–IÖ̀-î·2·ŒÆ0À̉wÏ Ă=ô# ¹æ¼µ̉B>ÙEŒ*"ÅEE‚BBY™oä ŸŒL’"`…ŸđË@ƒ^¡Kºs«&ư¬Woñs#>d‚ƒƒí·Èm´̉0 ?đs^́töé·À¡¡‹od‰ÂÜ鱨'hŸ×ª đçơö ¬ư|"Z²÷b%Ưº©o1¯Zñ_I•ü/Y¢Ṛ~ZB«ïUc-óY›eB¤7…ưÙ+'dÁŒ\̣é3ZøCÍN IÈsÑïÅFN̉A_ÉƠ”]Xv‡z½6ú`@;ÄL*órđª>d4̀#Ốg¬Uø;WZèHvQè<åƒ×>́Nư©%ÍÇHÀàÎ(=‘}†9>Ÿ2i_ñûA…ît½¤eÿ HŸçW€>̀·‘öbö„á )e¸‹~"Ă X»,úVÊ Đ¦[?@I2“x9¤øi{]ÍÜ2æă¸H§‹áw2ŒÖïú»âñ}÷!?77 ÷œ¥…ü.­ë®¶RGIÜzf—•éLƯC½èưđçVï½ÔØå+¬Xz”t8l «ôÙcäT­ƒö‘>>t‡ƠR¢÷eÁb,ÈêµU½ù_só$ʼnÊÅÜoƠ¢₫}eU¨OüD¥¦¬]́ôăLG¬ß®=‘\U-ܵ5–ß ss]ÏÜyˆ>=ëM_¦ÅJ³.•ûRß_]ô™l_±ÿ)3˜‹v¯K¯ê(LooYç°w'ĐÙ3q¹ºA0x½–‘û;½ÚZ.̣fóH¾.ƯÈ·1ߦτÀ×ÜÙRù$…kŸ·uo‚ZĐ]‚•®£˜Y­.Z•/E™a¸“{DÅÅáÇ₫ơ8²î=‹¿=¯èơQWƒyĂ{œ́¯̀z្âFƯhjÈ=–*Z!Àkœ).ʘØE¨Zơ₫“£/̃«YVËßX̀yñy*ÖU€izßî­² (ăLÈ?—Ö0=øSmGø̉ºƯÀ}ă–#{wROØ-–v!ÇQoĂbkù¯/¯ơƠƠ¨¯¯HKƯ˜Zj¬—‰Iˆ‘ {>:„„»A ăxó{?CåøK ¹®1„oR¾IA¢ ^u°8”'³]/Å!Ô$̣mœ&Ä%™­Ñô#aC.ö>l·á9%ûsá>‡qLơcỤ́ ǰ-<<çu3pü¤ $µÿ²K̃Bá|áDÑàL¯₫A@îùy,>ÿúAq÷!ÎÖs}¡?Vè±Øzë(øùz­³“OhØfă·'/=11Æ0¢TÔyÛ̉o¹å½Å…²^=¦TÜấZ«8Un± <´Ú·°Ä<%A•ø¢¬2đ¯óâ9û‚_¹÷Ó’Ô×I ;ØĂÚÂaûI%q–"ÿ5’âÂ_‚Ư~ªKơŸk½đÈálơ±=²讲̉9 ínöTŸjî!t/„Å€TU¯—̃„r~ÉR—̉`njñ2 Á%̃ônáîz³¥…4À„=yđè`Äæ;ôK®­Ñ¸(´mÍ27«ØZ<5#Ơ)m­Ëæ}DÊKwï¿+Ut5_̉pÁ À_̣z­÷%ßÅ´çç*f-é)=ụ̀¨¦+@C¦Ï%?2ẓÜ&ßb•W­s|Ó&*oê‡+ù)"%‰è×ö˜jbtơá ‰>}›píƒKÿª-°©í́?‹4™0Ăd9̀“xr3vØXó¦å¶Eó9L8œe1éæÓ̀¦ »ƒ¼R³¯À£ưâ{™yMzö*ùŤÚÎÎ27j̣ëUSlÛ\‡èW£áƒ›đ!c;±´dp6BÄ:7Á¶̀¼Sm2‡AUógÏØ¶#|́Œ…Í˜ÛÆUl³§\<áhßĐÁzZ½p‹kÇ÷º»Ö3.¬₫#ëÙØ˜?Â==º «u± ÷û ¨g·–NåeC¤…Ơ¦ÔS½„{åzŸaơVM=ö¿Å Hí;ÂÇ4@W_%Ç7–{̀[́>¥mZÿ:.9/6„{$ú+Ưëw^~́.ZÏ6₫+")¤ÆÜCôă wbx~ṃ̉ ƒϱÿÙ-lBƠÅ\dyyù™+7hrh-øươƒ¸°€r¿†ÚŸæ‰™>á»÷®e ™û—₫µ_`£¶¸ƠT×¥D/RXÄ>ƯZZJHÁW³˜̉ä×»d!a'ï<<Âxzͳ±FÛñÿ-Z¤½’•̃ ÙœÜü‡o²¤ûrèÈ)-øÆ_^8Te0÷ä4D¿ºä…t?ơF@€_mÈ ̉g¨Ư¦¿q>>+3#FŸWđñógqq19 ½ÙCj`"tdQ¡¤Ô?%%ưûơ…ơ1BjjoªN•íÛ·ô×]ºhk#ߨ5Xđë†-£Èøđ)ûí»÷]»ve.Z5lÑ‚&G+!.j".JºŸ§¿16ạ́Ƈ“’ç¶<†èW?„…Gªm‰˜%z‰ÀÍáè/»Ö@Pz÷†ÿZôơÊơ‘†ÿZ"æ!Êưÿü)a\D?^ĂÍ›7ÇÛ¾̉üäÉ“aƵD̀ÅÅÅÜüàˆ~¼__ßvG¿Ó§O·ư444ưZä"W͈ϟ?ËÈÈ´hCBB6nÜØ1»¸¸ ú!´âmî=[ââấ́́Z4ÍK–,i¡˜§M›†è‡Đzđññĩcbb0 [¼xqË¥900°ƒ–•(¿̣ttt¢¢¢lll+Âëׯ'''·(ư:nU½Ă«W¯”••›1Â… †††¶\‚]]]·oß̃1ËÉÉ}øđÑ¡ơđ̣åË”””‘#›m†îÎ;[4ÁóçÏo¡˜_¿~Íå Ñ×đôéÓ™3g&%%=º¹âôơơ}óæÍ¡C‡Z"Áêêê-ô*¸ŸmD?^CZZÚéÓ§¡cîܹGi–8¿~ưÚ©5kÖñăÇ["f…÷ïß#ú!´*>₫ {ö́ùăG3,á²yóæ+V899 ˆˆ4ç¹̉̉̉â÷sÑ¡¥E¬uÖ,܃¸ŸX)Ôßß₫–””4oRZè%ØØØDEE!ú!´6,-Û'Θ1ăßÿưËØXc’’222ºzơj³¤sÊ”)çÎk‰7°cÇvÁ=D?Ä?ÿüĂdÏÚµk½ïnüøñêÍ›7ưû3v¹ÈÊÊ’——o.îµèö;K—.m/ Ñ—¹WTTÍ6Ƚ~ưú½}û¶Q—?zôˆI?“/^4KªÜ̃wƒDôCh ÷‹‹Iî-\¸đÀ ¹2dÖ¬ªơ›‹{0;ÿ.&&†è‡À]€Üsqq !öd ¹×>‰oß¾IJV[ jĐ`cÂ(4 ÔÔT(Â-ñŒ½{÷† Fê‡ĐöØ´iÓªU«X} ÷,--O:E’Ü“‘‘!{)jÊ6O6²ÁĂáÇ?|ø°̃ô¬\¹r¯%öëׯ0µí‘{ˆ~¼‰k×®±Ñ‚ä+å˜îƯ»ÿúUµw$UMî‘ơØI“&]¸péCrOJJêË—/S"//Ÿ••¹×ù‘öû¥ưx7nܨíI9‘‚‚¦'“{¡¡¡^^^………µ]ÎÊ=&Hî)**fff’>ÖÖÖzzz{-ñ€JJJ²t ¦®CƯ#THîåææB[.))‰éß§O&÷`MMÍùóç¯[× ­àâăăÅÅÅaœÍ5à¦&DEEsrrøøø ÷xă3!úñ&®\¹2sæ̀ºĂ@¶0¹‡aäëÜpÈ^¶\¾fÍ;wî̃½ÛÊÊêèÑ£sæ̀Yºté³gÏñ¼ Ïöë×r° ¸±°°000puư«ư˜ôơơ¡ƠếL,ú˜ŸŸÏcŸ Ñ7¹uLXX¸̃dE”Ù«‹PôH"±Á××·sçÎ̃̃̃¥{Đ䋆ƠQ¨'Cœ=[µsÓ˜1c i™Cêd/aX. J,î˜ÀĂŸ ÑgͼÔ oß¾ï̃½c5ÉÆ&÷ Đ]»v é«W¯( ôÙ@Óäƒ`Ù\ZZjjjÊÏÏé̉%Vÿ[·n1Ưƒ º~ư:!‰¯_¿B²‘“*`Ư•µˆ·èdz¨ƒ{¤ÖAîq<[VV&&&9°„’i“'O>₫<[H(€l>±¬>[¶l9xđàóçÏ™>/_¾$Æ ƒ\ơ÷÷—””l¡ Mˆ~m¶ëׯg*+JJJ̀ÍÍ!y v±]iFrOGGçîƯ»l–——×±¼;¤›F£©©©=ỵË—/‡̉¿åZkưÚ 5¹T“{ä<†®]»² WM܃Æ!ëj¢{ tùĂCîÁ*è‹/0 c¶ÖṕëGôCàxxxÔ$^cç1܃UÊ {¡4„{‰‰‰&&&« ¤ ’Ü;{ö¬……¢¯!77W\\œµ™äo&Aî±vß×!€äS]]ƯÚ$‘µ₫ ¹'**Ê{} ˆ~̀5?ẃØÁœgffvñâÅ¿Ÿl¹Çd]mÜëƠ«W^^^½Q‘Ü#¦BîiiiƯ»wÑ¡}ĂÏϤs!÷æƠÈ: ‰œœ@oP%m9&kÎAîÅÆÆ››Cîqÿ*ˆ~ơ}àÊ6I~~~ø ©̉́ơ:È=r–=z°6ö@5¡)^è{vvv{÷îEôCh¯ Ç‘uëÖí÷ïßĐ#eªÙAnÄÖp u¬ÉÂÂVGy›{ˆ~¼rä'äÙ̉r7211aérâĉzÖ={‚ÊIºˆ~í***¤£Sc› VîÁªă_r æ¢_B‹rs–“¿¿§)Ơ 111Ú¦ó"ú!p;lmmÏ=Û £º̀̀̀¼¼¼̀ÍÍ›‹{ ²/¾ăªŸƒ««•Ç–ñ”¿%j‹.íˆPwµ°uFT&%%Aî½zơjụ̀åÍmk̉đ>ư"BB¤¦­Oé…̣q;Å_Nxmñ¼ Ùæ¥ä^xx¸££cÇ­|ZbØiÈdö®*j€̀T ½rk¿€ewz«|GC‡‡‡KPPHÍ~X„Öër- ¨T/^löh׬YÓ¡éw₫;Úy}Fˆ7Ă+35áÑ+=ÛôXCúë|ûó‡p¯O F‘uNÄĂÖó·NÍŸ¼ùÛŒ·cFË{ÆKCéG!o£˜²Yˆú$  Æ´¾xé¡j>Îχkz ÷e=µ9%w…¶8/ĐZÔé~®›o_e]óÂN3€­äaeÿù‡ZÀÄÊÇi6‹ôØ´u+Ë¥¬ñlZi‰8Ó¬0 ÑnYv́ÚµyY%Xa¡Ñ̃’Ù”ùËàç÷dé@‹ÙƯDª÷̣ỹă Ơo\“¦Ñ.’1ßËÆ]¥1œFÖ‡ÔØƠFñ$7ôͱđ»ZoÑÀH̃³»¬i#<;Đ®íöKÈ]­/Óϯ®vɘơnÎN¼ ~ó`ư“ÛµÏÉ&’~ó‚o®́£±ñ^Ø Ưçé¯Zp°jTO/¼‘¦ùđéăÇw®ZÑOqĐ¹fôH‹ê5 ,ßzó½ ¹#‰\«¢ÜÛ:ºiw̉r¹sÖS—¢^`=ÇàÆ5  ù¾-ÇA2äO ± hjøfxȽÎ ƯM-‚uÅ̀,)˜iƒnc‚–»«ẓùºXº9å'/Đ/ Ç£Ệ5µ GÛyfDv¥é?×ÅÉ*èVRÍøä¶nƯD* `·eÓYæÙ“·âcçyyÏ̉Ø÷/Ê´qqµ« ³iÓV]¥ 5h á¿÷6”GIÄœfÁ@YÙ¾§ẹ́B¡t!̣e·êçqQȽé:˜’Ç{‹–ưƠPlcc㉤ ¿X!Å,œîl›&‘¢P-ØéÇG)”áA~¬­/Kˆ½æX̉ƯËCè₫oÉ«éVÙ7q OÊú±đ÷2 —˜¼R¶ƒ6m{#̃ âU ieÚ2{^MêVƯ®¿¢¢¢¢BCQïPc''§°°°V¸hđœt¶ñÖơFÎÜ„ Ñ¡=AVVöÓ§OÍB¿"88¸y—Z‚xúô)Çuư¸{đẃر7õlé{©ªªún̉ÍK¿~ưúVY&Ñ¡E@®Ñ̉xö́YKD›‘‘è ×#ú!´? UTT+¦´Î›qU²ïß¿óóówêÔéÏŸ?Đ-&&†è‡Đni ##óèÑ£Và¼×Ë—/ ÔŒqB¾•––úúú¶̣’ˆ~Írç“V@ór„››Û̃½{ưÚ%.\™›°·4FŒñàÁƒæ-$$dÛ¶m¶¶¶<ùiư:̃¼y¹×½{wÖÍŸ›düÍann®‹ 1^|ذaˆ~íiiiưû÷‡ÜĐ××OHHh¡»Ü7n\³ÄvèĐ¡ùó‰Obbb¦Nè‡Đ^1mÚ4(€$÷;6{v3Ï’’bn‚Ù³gÏ¿Ü̉L[[;%%…t+**̣êwAôë(€Ücº!÷ÊËËưüüj₫j`l¬Đ₫ ÷DEEóóó™Ü»zơª‘‘¢o}x>>’{&&&[¶l2dH“£âØ£ÈÜƯ¥¸qăd¿¿?ä«?sѯ#bñâÅûöíc^ºt‰tÈÈÈ$&&ª««7<699¹>Ôô‡Ü«¨¨èܹsƯ—8Ö„544ÆÑQ/«ưÚ7HîÍ5ëøñă¬₫"""……U+V<}útúôé#G¯^½âx-o(è‡HîCơă¸ÚêĐ¡Cß¼yĂæ¹wï^///Ȩׯ_CîƠ} ___h^úøøÜ†êª¤¤TßXK²#pѯ£ặåËđ̃Ë—/‡^wà́́́©S§ÚÙÙ±ù/Z´(-- 2SWWwÏ=sæ̀!ư×ĐÁ¬Ù’”†¢Z[üæææ±±±dÈb£,ˆ ,, ¹·lÙ²­Ơ–E®eeåôôt6OXó;v,9#Töûijj®[·ă.{µÍư­›™ˆ~<È=r€§"##Ù¸7a„øøx999&÷˜`.TyçÎX³Ư´iëYÈ=h₫ÅÅűz‰‰}ÿ₫½¾sD?„*@î½ÿ^AAƠSUUÖ-Iwqq1ä› ä^½±éÑQ“]{ûöí[¼x1y9ß1¹‡è‡ÀÈ=Öz&4 ™Ü311j¹×Ø8Iv 0àơëפ“{§OŸ¶´´DôC@ ÀZϤR©ººŒ¤™=„Mä̃‹/LÓ :,÷ư8ĂÓÓ“œ¸Àä^³€É=RK“““IEEôC@¨9Á§EƒÜƒ¿ăÇïÈïÑȾ;GGǾ}û¾{÷®Ùăg|swwGôC@à€¹t´D̀{eeeüüüü #ú!pFlĺ́Ù³[nvüÖ­[{ơêÅÚ臀ÀÀúơë[te OOÏ‘#G"ú! pÀÇ[úơÚFôCè PRRjé[Ô;Ñ¡ƒ¢´´´¥oÁq|)¢`zÛR™Ñÿ ^^Œö̉Ó—À˜“~₫üS>~¿¿ÅæÍW¬"Ư¿~3oqâd¾Ơtw¬ƒUGưlßæăê&Éä&Oî @äçO¥2}œ|‹½{7ÙÙ‰3¹Ç†™V¢́ñ²xđ D?„…ȽzÉôêñä‰ü°a=^°ư{ơaj"ú!p5˜Ä8wî ü2…Ă.Bëß?Ú PÓ_X¨ó—/éRRÊ ¼EЧ@IqaWAaD?^C̀Ùà©ƯI·Î”aD'¸ï¿)ß"JÏ̉·‹‡‡Ưºv†>t nƯ!…ăÈ«~ư¼Y7ư"öøÙ;HüM"ïß?¨oà„è‡Àk6¬ª¯7`[¯@‚mƯj¥ƯÛî=±Œ8WR^I¼Â­ás¾U­kÖ@=}t66½₫2‘ú¼ưꡟ†Um§f‰Sÿ­Ç̀Æ0Ç+̣1LŒyÈ6ˆ%XƯ‘ ´ú*vaºóñ="đµ[&Î#vrøÚ·‚—‹­zß)•ªSÇNjDe²«`'ôÿ~ƯX¨Yq§è‰€û¶̃¸ÿmODưd‘åô%§NGÅÅŘ2÷@,²™çÀηGßp26Ú딕¾;÷GE‘3.ư½]̃tƯ³½jcTêơ³Y¿0^ƯW‘«@îûŸ̉€XÙåÑEÆÖ̃zẪz}Á†=äáÊ d½đó§4™>ª ¾Ï7(´ ^'̀5µcûx₫/hÈ[m›«Û®f«BậH™%©^•m**xx(L#+Ÿ¤ˆÍϧ!5 Ă„/¦ÊÉ‚Đ3!z°_^ö›ÁΗ¡2ƒ]ÈE]Éß½·ß»ô§Ué^̃U ĂiH¹9¹´†Óï¤} UDpPHÑÍ 3M€k©›`µVÄ̀8̀”øÖö'üjÜ"£·ä€M?’]Ök÷é1ö{:$ª~ˆ¬¶Àÿ¦{âø' ëƯô¡O½¾U5!4ÈÖꨂ ™EŒ;OˆH+Fù»Ơpï}©–ahTaå§<ëѵû*×ñ=9…’½å~‹™{[E oKd›`ï gé!|?(÷₫Gß¼Àqô+ö‘1<̀½†̉ª†öY½q½@(bc$kx~öF‘ÇT!µ:·Á½p¾hM¿Iä¥KÀÄ©ÏÁh‚Û`kFå₫»gĂ(ø~Xëô¥~ê¾Å<÷Æçfƒñ„E¨̣Ùˆ"±jw Ëqrjè¨6éûƯKRºw½W|ñ\ÙÄqgŸtWÖѯVå>–PxÆ#”›ÛœœVÿ₫½«[·¦dqIéé æ¹r]Ó&U@¨ ›^jGE°ÄĐÂR<ùÄ:²¿Î Ătï{êZ=X2Ƨƒ´‘;Ñ­ÛÿP?üøq”¬lCwî́Đ„[üü1¹GO€èW;ʈMÛ̉2iă­7âÖÈ NGĐ‹̃FJî`Jt©óéÀ`Ëï¾Û:º̣J3…aôMơâ>ă8ñ -a_Zº[@ ¡ľ}#+ÛØ¾8{ßa ½Eáïé=zöê¯₫/è×Ơ 5n†²L¥m@èÛºÛ¹đ7ÿsú©¸;~¤øi{]Í ÖÁ¶Â !; !÷̣Kq”ÿÛK6Ök¤%̃ĐƠ³í-Ù”[`Xƒnqñ"nfæ Ü­£¼ù¿Q¿¢ăwE™]ï+½ïŒ̉öJ₫vvv́†xàvæ/ àïi/*€©¯NLơ8ж€Fü X²D´¦©¶#4o©³—®^3ÜbëV77‰J¸yË×îkÍ̀:Ökÿ ú'ùZù2è¿ ÄÇo3•ézó#Çă<± !€¥‡Ï=‰O¶·'&¶èiÊ¢ÜÏ%pt\ÉÑ©s³ƯbÙ²µưWtÈÆ₫‚~=ŒØT˜‡¸kµ€¸7ù×¥fà={ö LĐaºƯưưưưưưưx€~h.ª{" ñC@@@@@@⇀€€€€€Ä‰?$~Hüø! ñC@à.””àÛơ#¬_¿}G$~ÀŸ?À̃¾‹GDÄôø! ñk··T;đ®sj ₫áúÀ­„̣o;ưn=z „…ÇŒŸ³ÔÖº…îC¡`ÇsVë‹×rÇ̀?Û›–†6ZHüJnc‚càßu·s7è÷jóG*ưö$5₫í̃>Cv6ïd©=p!a¬¡« ÏËŸóA¤¥r:Kói´È¥ä1VH‘ÆT\îÄ{ểu1ÿ|ĹïR0aê9»è¬†%8j÷„K ;¾$BÛáøƯHy[ …hiX¶~ŸƯÂE4™K)”.*¶—ă7̓÷ÂGơ» O)*IÁCE©¾5­:9ÛË)›C·'‹4Ú­Sö˜s,`D˜Ë ¬«« èæ¨èĂ êÑđ9³U%Öô§]XyÆEÙû»?íÖÊÿ({§g-g/¿ăaàpeÔă€Ä¯yQ©|Ÿóă("B¬§ÂMÊ—₫Yo ¥áqFÛÈÚEb“F§Q"ƯÓË»ú)ÊWăü,ª‰€Đzơnhöͯ²̃>_¥Œ˜øÓ.ÁĂg·GbœRP©Å@£S­Q}ˆ4¶«°ª40º̉'êÄJƨ9k`-_̉1€üI÷Dmœr€•Ơ#6`üí>‚° ¡…¾¿fÔ'ê¥ SQá*ßÙ‡ñ£săpûÜG†ÚĂơ•eX®PÂñ·uÇ™û₫éppp ööö„!ù"³kă³ơÈC½G_¡ơ@^‰/K阙ÏïÁ_9~ «&qú=H¦9üÂúa{† %D›ü6ú}₫¬¿Rä *˜¿–.e„íj£S~iE₫ªBà”ç0è“ó5qôÚI¤^Øñ´XÍÖJ½ „6¿’dLP₫=ô(ÇFƒà§·¶!€c{Áѹ¤M¦¾è0₫v.Q&\ZÓ—03 [g¸s•°ÛŒ7àœ11ÖXƯÎ_&>:Th¥î[HKÜ"£·^ôƯc¤rpYÜâ¡^øSÿ¸ ̃Q¾?·(}Ǿ¤á=«—³Z.wÎ’IÜÊFNT&¬¡ÑÖÔ<5iĂ“Iää‚®l—èfÀôTœàC£ùn Çx##ˆeàË@7=̀â¶?ƒÛ×â WNE9ܺaXGÁö+̉säå­n‰÷»\´`¨`¾ü‡½¿û#ñCh ñëÚoëÖ­đïå^ ë(hùå0dôÖM¹˜`÷₫½‰+{M‚>¯SœWm4›q à⩟Ôe蔓°ÅqÛ}.»₫70ư|èÈÙgƒÂâ3ËJ{tkăÀoÆÊǼ)Ybùi¢̃đ4 /Ϥ()0ƒF;9[uÜ{‹Ë k vƒ \]\ ÿ₫´[+‰˜;Đ®íÅß(J’@b%í‰?y;"01£[Íÿïñó±²é:̉ư”†»̉Ó T @ax뉃ñNZ¶áđP€," +¶H9½—«Z¡̣U DV°†Âh+ïEvzƯ Ÿ`áGT¹†*€§ï¶çơ3.ăP¡P$´Hî¾₫‡7y ñăeWh˪r£Û™œÚD}75|‚¹ßU˜=ˆá¦ÏÀË,ÚĂÎÚØ©D‰˜†y§³•1{§DºÊ¯:ùáÊ\•èÚĂCE_o÷S&¦œKçsØc ´z£Ÿ_¶S&EJIuö₫+Á ŸY €ÍmMV>ÛÓq$]e¾5HL Ś«Â‘)_Å1lùpåi¡ªÈœÙƒËñM‚Ï‘” ¦¯»¾cɸÔăKÍ—…mI,£(ˆ̣d›[~2nnnƠH2DO”>ç°‚2̃Û#¼9ŸăºÊ<˜·lÛi‘ÚQ§â8^¹xeÈbfǧ!ăăA’:NÆmdÊ¡/qqXƯàW|{-¨Ÿ¡Ñt¶óîª:ZưÔzïèj­9~ÊBWF9[CE!O ¢TÅpçĐk~#²ÄI ×ÊwàäEđ»*\ê^‹™C1xêñơóD Y¿ĐđqZ,ßùçØÎ¾Äµz2Ê/³3—é#¤ Û+8ñ¬cT>ëà˜q¢ÄîZ;OµÇ5P‘R –ÁĂYËó/;°p¹;tNß₫z‡UÎá/eøË* ’'̣ŒêXZÊîÊ3Pùˆl¹=kƠI, ́₫r~º¡L‹¢P¢A®X0— •°zƒn9G‹¥ÿü‡—çƒFö´fNa¹€tP·ÈºG¦p|Pù¼.¨ƒz…ê®JZ ·NoºrA!w]“9´[(OrS³'B3¢+ÑÁ3hRæàc¬ül¢Y÷uQ^èY†ưk<U×:̀ê¤3;ÅøøÄ¼”ôb E/îo0ʵo1w³²hŒÑC¯öN PæÑh {¬/ơÈB5·"-̣â7½–1!!¯@²±®)yhlŒ“U¡I&U¶ûƯŸfíwV±‹Y¯,«UàK@Yµă’đgܘ)ÆŒ) SiÓ‚x;C†}ügS.î”N‘¤írưŒç8À'j<{9mörX8íw`‡ÑAy÷v:Đ&Ză#éÆ4Ä©ĂǤ”ËÑ ™Î)’Xj6YÄßfĉåĂŸÁª̣–Àï*Ư$¼3cư>ËÏ­-!̣ê#¸[ÙíI(_sOk—`yđ´F\ÙE‡#SNâü*ü'¹,¥EBG¢«ŸI ¬ù&§ƒ±Um-;V¸L]³Hüxd÷Lñç-ë’Ÿ¥‹ơQwv÷¥ÑÂÈ“ëWùI d˜Ó̉úđy]ˆơàMÓß·M Ñ#Í)O}»đnĂgx…̉đQaë\|7†Đ22œ]Ls€í}gƒ·<₫O đơ^º*:r‹çµ»)@¨÷Ô4Z<Ă—çg¦O\$Ø[̉p̣rÛă›ÿyËÿ0²æa©çPXªÏ°°ÂAÑëCưÆØ2=§¯½%øôë[”c(/Â>Øt’hAÅcIJY¢/e9È.)ÿ)Ó²?R¤«n±é ÍV[ºiiO?4wœ×QÂ¥ ̃­¬W̃âªB€lpf6½’vÇÆÛuZؾĐKdíÖûßc‹¢é­Ö ²•›¬”dY¬ë´~²åM~”~Vr<ëw¾`ÁđdS!ÓŒ&/5̃$ùú%«É-„đuÑđ²Ÿï6yØ<|“+Ô è™Ø3‹cèØâ1oú´Ơ£&- ¥Æ9I†åüU‰±av«ặ~ă9D`2¸Æ¶ô¤(ß-Ǹ\e«;ŒÊ₫̣¡uîçJ ;x†è©£Á‡ÏÙá5©rr.́å¬Ôổñ¥e{ÙYh K™Ún&̣mq3·ơ œyä^ßÉÖÓ €‚ÿÁC뽂ûơæ«tƠÙ'À‘)_ü-úúÈÙÚô;¦Ú_¡y ©ơMFà–lñœ~—Ö©—¨ŒO@ˆ”*[Xüj›6ÀœrĐΑaD·PB>®'­i”q߸§¦·ƒSU³0¿¤ƒ“A•ñÀª@ö©{˜îÙN³‘+†FT¶$k.ת `ëh[ăRC¦¾2­å´Çp(í¾U·áL£9³ä9âGh@µI ° µ% Ùj#;8»ñ>ÍƠsI¦̀3T²‰ưÆĐh·l£ñá÷¯%Ư¿Ÿ÷ăÇ£đ Ó®v;¬nql¼½JŸÅª=BoÓÉËʲtË#ûk´´dZ9Pz½™x.s ?ó íĨ|Đ¿·uôS–;¾:1ẃd‘ŒC².5\‡5Udwï߀¿GßUAQO¹EWeÎ¥F¤C×Ü ₫«Q¬”(¶9<Ú†ÍÛx₫FăêßVẲI£êH`©ư2¦î=Ắ"¢Ơ¹Qvä̀ĂgfV>β:HÇÆ¾Ú˜ÂñUIj†kÈ›$üÑ|æÖ¿¼ }€%P]‰?ơgzß ˜ ïub>Óơâ†I²^w-³l|_"Ú;Tô½Ÿ sg³(}p&Äñ´¢qE{{k¹‡aÉ9ô¶8M #̣rïÀ­záËN ÏâøA9§Ê¹íßp¼²1¢Ă„YoZ9‰¾2É gçßµºBơ8ú&pv?̉m£ˆE¿c\uñư;̃4ÚÏÉ<ûû64I¯|ÀFÂ#Ï AÉjm¼Mfùpv́"]´BgÈNù?đe÷¦E–ƒ₫s–î–xâ´#Wh‹¿ÊRà.ó’œÏïk&£ T«¼fpÁ›©6ô ÅÏßb2£8eQ>½•ñxe—§D¥P !$,ECE~XñÄñ[¦37Ñ!<'âᦘÓ%0KULÙ ïmŸ ívƠi”Ę2|°Ö©w ¾yêDáø)†Å)Œaañ¨®fkG½1Œ°8+gS8_Í 1́U´FT׆$¥‘Ï×ơ?–ăsn®é=Î/hNÿ®2Ä̉k•†¬&?„Âg éđÍ ²²̉¾$l¯¡L”cd³ôÛ!Ñ. ööVdÍÆÛSëu÷&1=Ï>%´Đ2äƒ3½ỬVY³̃ÚÀÊíhlN6ÍƯ¦°´ +‘ơ?¿ Ơ%½´“¼îà0óTAtÚ©óßø±@i ¸ó¹î‹I僘M†Ï§¨8#;´™=,qîÄ¢gn9Ñ—ÍùAË%«Ñụ̂´ªÉÑ@‹nÁ¥øi{g5ºH₫Fq^Œ¾_Đ•±ZF¨‘x(kƒLµ¤Ø ́ ÿHŒơ€Ù_Äh’ºÍ°ÿ-tªnA¶Zgs™ïß¿‹‰‰µô]<<×5<0F_‰‘ ‰Ñ #S×8\®av³ù0rk6̃ZnH´ä” hœæđ‘P6ßL£mf ¿4¾rL&yUí0;²åÏŸ?+**DEE[(₫ÆîS?w‹r0--MUUµEs,Ú±ÙÄÏjϧ™ì1g¬ƒâtLh 'x]/`Ẻ“ô¤+¨ZK©°ÏaĂ$¥÷;:`X£…§^0úˆ7L߀µ̣}–Â\̣Z!ăÂï())ùåË®Êüü˜dïæ‰êÀ‹-úö후„Dë?Hµµ4ÚZ+Z.[ÂÜÈÇÇWVVÆ%OÊLJµ(áó̃¸qÖ>‘ä´ñc¨KùgŒ¿Ï|M ÖjjÊ·2- âÂ=8¾çG&2”u\ ³Ï”₫©]¥%ÈÈï•cïÈ?%ŒyZŒæ̉?´j—².̃óÄ®R•áï¡´¢bU¡hz£¨ÇƠ\‘êñ0QRÊx"úU·Ék÷¦<§‰áéŸJôDº̣đgŒŒ„¿_¿~íÖ­Ûïß¿ỵ¡̣ÁßáÇgeeµ’uØ -h¶–—Wđñuæ½/E²¯¼¼\WW711‘ç ỴyóóóŸ?>dH™„ÜÎÅ~^¦=Uk 2ÚÇ}YêÆƠBö0b=ô¢â^,×ê­†¯¯ơí68^5₫¬z<5³.Æ;Äđ ÂÂB;;»½{÷̣؈0Î?|ø ''[á¦Ư»cƯ[ră, ă·´´ü÷ßÛo{CMôéSµ¯KRRÏSOAAé633{ÿ₫=Rv"~í¬Å ľ}ûBBB„„xg¢FûñăóđăÇW®\™8q"˜ 111ĐBâăă>}úóçj# „……a…ŒW©÷öí[Övè:u*ü¦¨PBâ‡ĐĐ××ïNDZcÇÜƯƯ¡ăÙ³g#Gä™”‘‘Z^ZZ uBPPJ…±±q»JnZèmƒ²²²Ù¼²Ù±®®®££cnn.€¡C‡₫úơ+''‡‡©WRRräÈ‘Ÿ?ñ¼ÙÆÆæ7¨DBâ‡ĐJ8zô(é e[…•7ÀÔ9mmí””x"Övé/_¾L™2åܹs<đ\’’’aaÄE:::wï̃åyê©ĐkÖ¬A£1‘ø!´`]›·°_¿~<đĐ(ïÖ­iöñóócvåÊ^úLÓ¦MëPÔDË¥#ñCh;XYYñöª©©ñÀSÜ¿Ÿtxzẓ̃g2448p`‡¢̃øñă?„¶‚‡‡GQQ/ uaĂ˜1cxéqx̣35êÆz̀N\$~m̃›çÀ9ÉO^^7§K—.¼÷È₫K²]·ƒ>/|jTø ñChKÄÄÄđ°øúè///$~\ WWWøË3”†`íÚµHüø!´1?ÎÛx́Ø1?̃k VVVNOO‡SSÓC:Ṭ ñChcŒ?̣̃̉̉Ô©S¼ú€¼4cZXX˜—>˜˜sqË¥K—vÆåææÆÅÅ¡’‰BÛƒB¡đđÓ­Zµg¥G<ó,’’’LåÛµk×ÿ₫÷¿B·!C†|ưú;HüÚ¡¡¡<3iº&-Z3uêT̃0•xă£ôêƠ+//y¸iÓ¦#~gΜAe?n/­É[[Û‚‚x6Ù›©y?ÄÉ“'Y•bܸq„hĐvÿùó'*pø!p †jnnË“OÁ"))Ù®Ó/**ŸŸÏ6Å-55ơĐ¡CeQQQHùø!p ̣ÉÊÊ~üø‘÷ÍÊÊÊÀÀàöíÛíưAÄÅÅKKKÛăTw Ăp‡ÊWó”oăÀDyyyß¾}Q9ƒÄ•W×̃´io<Èëׯɕ‘Û***(Êׯ_kÛRăׯ__¾|éäfn¢‰€Äë•ïéÓ§%%%¼´ĂÄèÑ£™SÊÚ5à#´ ñ“’’zñâ…˜˜XƯ#µµµŸ?ÎÛœºÿ¾´´4R>$~Ür«‡@#ƒ— ÊFÏ=Y7¹mxüø±¥¥%w¦-22rÛ¶mO<ô}—ê ¯¨¨˜™™ÉÛl"»9Q©‚Ä¡Ư€T¾Q£FÅÇÇwï̃7 *ŸŒŒ ÛÖáí T*•{SQQ¡¯¯¯ªªº{÷n@U ÑÀk‡ ÂÛÊ7pà@XßBʇÄ¡]"99₫̉h´±cǾzơ*_ll,,¯Ûéb’äi+œ9sfÁ‚+V¬X³f <ܹ́sRRRâa]Û…W­=̃à ?„ …B2ù̃½{nnní}DŒ¹¹9üi“ÿäääZí^;wîôôôộ̣b®’3¿‰¾óK—.ñ¤̣-[¶lܸq0w!k‰¯AKK‹T¾³gÏ&&&·ßg¥0´h?~ܾ–T7o^ Å|úôihƠùùù1—Ùü‡f¼Å¬Y³?>{ölă…¤¤äׯ_·nƯ$~< :}æYnnnûµh!Ú×́Fh^TTTtîÜù:µ Öf”••áát:Z.å<9‹tôèÑIIIh­N$~¤̣‘S˜Ûé#À¹…¯:22rÑ¢EM»|çÎQQQ)))¤Ñ:ÉÖÑÑá1å#›Í›Ö剀ÄG•¯´´444ÔƯƯ½=¦*Ÿ¶¶6) ÜøøøÆŸ¾¾¾··÷¸qă½%³!¸KÏäv˜Ơ¡Ñ̀«Å" ñCø[@åëƯ»÷·oßÚcúa₫íÛ·ưúơă₫¤>}ú´!¯_¿~é̉¥-[¶$$$´a‚}||`2x#Ÿ§§§÷êƠËÆÆQ‰B ̣µÓ‰ä;w¶°°HKKă₫¤~øđ¡̃0¶¶¶ăéhÛÔnÛ¶g”¯¨¨}<°·?„æT>%%¥ŒŒŒv—r¨|×®]344ạ̈t Ơq6&&¦ÿ₫‘‘‘\’Úđđp777̃ÈÛK–,‰BG⇀ÀPù8°páÂv—̣)S¦pÿâââµâÂjG||räÈܹsÛQ»ví3uêT®M!sß•+W¸ùṂÆđÈ‚‚‚Ơ«W#.#ñC@h¶mÛÖ¾ÄĐWăfñôư²ÔKâÅ‹<ƒƒƒ}||‘‘ø! 4\^@s•JårÛ₫:::rùkl¿}°âܹsHüø! 4FFFí.Í\¾G—.]Nœ8áééÉ寱OŸ><Ѫ.Hü“v—æ/_¾pṣøùù—/_ÎÍ3xIüTTT‹‘ø! 4í.Í×ă"̣ñIKKsÿk”’’B⇀Ä¡ƒBVVöëׯ\.'låæäuîÜÙ̉̉’û_#÷/Đôïß±‰BSđúơëö%~=zôàrñăæÁ¨LÔ\ƒ´=BAAQ‰BS@£ÑÚW‚………¹9y¿~ưj;Îsùkl ĐÖµHüˆß¿·¯óóósṣÚËö<{™ëé ñ«–Àñ„%Nư÷/#Ç0 ₫z\Í 4¬ÙaÄj÷ ù¸‡«@‰G¬₫L7˜}?Z5)[ Ă2NMˆ̣G½€/óöƒÇỏ_æfúï¿ A¡‚¼ü -ÛJ‹JHơí7@_kxîÜe¼Î¢=¢R?geÿú!ÔCd¨úđm;ÂK qü¿̃ùÁCTt4UÛ0yeåå‰f¼y•—ư§¤0/7w“@Yéá¢̉2***CrĂk|øâÍ‹gÏr¾|₫ŸÇ'Đ%//×××O «¸¤´̉À₫zĂƠùøø¸?÷̃ú"'ûSѯüÅEEññWº IP((ëPă¶4çüø™ü€úé}f~ÎWøù*ÊKñÿ₫ë!&N‘S©1T"Ê¥Ö¿n,Ùˆé骅POAaU¦û¶^Lx,Ø•²ÜoƯ !–8¼]]Ÿ},1¶vZl12&&N@ t„éTfëƒùp¦̣ù{z½¤•N[dcÑ¿ö ưÔE ÷[©[ÆÔíHÇ7f:•”@F8fư¢̣ƒ†Ëª7ye¥%7ÿ;̃h„Z‹Q¼ÿüÍơسcf,bPƒO¬ÏPưZ§7<Ë-ƒ d°ïÖ%Á.ü³,&µ}î½GMM¾c0Ư†Ÿ¿ #/HöU“́[陼£”ËgdúÈL6× .¯ÀĂ÷DÈ ̉wˆ&³©BNe$üÇ1üwø¯2Í9Ÿ³\=çäèÄmµO?è¯(¨ô•>XM®ù8Uđ8R´7ñ%R q-! ‰a©ôsÓ Lå~3 2¨" 0?đÓ…’2!³@Oê7)oµ@4?qµ¨®5x,m N¡›‰nW #̣BvU‹~FÆÅû‘f#mUø1R¹ûN ‡¿×vN1üçÊlØ®m6CP¸»˜Ü@#¹&ZƒµÆ0 ”kÇ÷:ư³¤k‹µ•½xOK¾›¤9κÇÏ\Ü´Hº ™̀_ú‡æüœ́̀')‹¬ç4W¡´9Èd¾†u ©×´HøºN˜»„|¥E¿̃‹;éæ¼´y_ăƯûÔ &vèƠ¾¦E¢>Æ„ùƯ/Gít_æ̉ÊFáæmÛơ§̀ƒ_SL^ÙP^¹I­PF™X’OÿWq)*|ƠÊ\vàe-ñNÂĂ)DëÚ4›¦E"!#ojëLÖ>ß=Ô½3f8f4*Ê_üªé°^»/z#±^~N̉J¿Cvˆ@Û0¿kOêÙ¦ä¦{ĐÇ?aXU]R¨jüX>3¤^_!Ù 2Úw½ß†Ç@ë‡ăo H¥”^h^m*R÷₫óím¦[ 'Ú7¬¾éöå”-ªÚX ~Ÿ‹n8e¬ƠÂæÙp–]ú÷Â__¾¾¢N3oΩñÛĂvLŸu%•¯¹ *!­ih˾›'÷»9;59ëÉÔÿø»Hôé ¦fLP·c­Ăä¥̃Œ›5ƠTˆ¾"h“QPX|ôø ³™zS›y¥Vc› QX÷©,ç“ÑƯͽY_ro'%mh4Û¡£Å:u†ß¾ếwodDº4 ùsoQRù ¤áÓ²jåJT²5§ø1›=Én³Ă>‹7.‚V—p7ÆVœ …¸{‹ùgUè/m‚cE÷ÖVg„ ‰÷̉&ê_Ôo*¾Đă ‡•®d¯$Nó¯lG`Ø¥j—èæe´m¿{(W0L“ˆÈh³Ă›•„lî̃Sqø˜¤74¾_ß´4₫¶eï¡£Ă'LcÙ²[ôµZ ‘+Ñ»”̃;Lt×hm“i-{Mm]`î½êµ̉tl4ăCGÛÈÚD’Á0»ƒo"lW¼;÷µï”`}a¬†X ¾Ø-r¢EZNéƒK§́̀køUQ§b†êN„Ê×:‰„Å# (x¥Ç̣fŒvÇî½đ ̣µÎSP•¿ư6YN`…ăÄùË£L[o)[çÄôÏ}Eøe¤z#ñk".r•yQçEU*L̃‚ă[8kÚ gm‘ȯ­3¯FȆ@¦¶•æYư%Æăx0óPke<̃±[üMµE®0mụ́éÆP÷³đÅçïĂô'¶r‚;wê,,;(â@¤ưBÛºCî;|Ü´-^éËM₫«¼”¡‚6Û8µ~"m₫9~î̉¬)ÍÓôMV2Zÿ) evˆZ²°ÑưsY_ri…ÿ‘Ưá­‰n"b9P/_376\:¹_m„-ÛCÛDùH(©:zæÂœiXV^>¬g·Ï•‡ºn'wx˜·t:[ƯÔº¶¥ac™Î«­^©éÿÀ /Oºƒ‡†µ‰̣‘PÖsèÄéù3§ÿe<~₫f \Úê)´Mg„îÜăüO#êè…Å¥ Jº‰´ÙÊp}ÔF'ƯO=RtVÊÄ%Đ·đjô`q€ºsá£jl„¥_} 4´ªn×WM·´¬L€Ódùía;[º§~£d₫̉„”úÚ#j đàùëñV‹Ú6‘Ă L7üÍXŒs×n·¡̣‘ĐŸf³kïÿÙ5ttXô‰“ÚÆÓÛ6ÍÅXdùµ,rŸ¹-óˆ>M(j¸X/Ú¾«ä.<¸—¬;I¡Í“1ÑÚ±¬¬¬! ¯$>J³ÙùÀf'á.Éû±qúÁ“Oc¾Ơ ¶ÑÖi]äƠ@vä" đă@Ă…aºAIË(ÿ•*üuÑđ±""ÙŸ^¤ÑüÓGßäà/û÷„LÆŸaX~́)´û#qỚ¢ÀÀÀµkÖ°ƯÖäÔ ¸b§̀÷Yuˆß½¤;º“ëÂQöỡ‰s÷­í›sEüÑÈBn––9ÏÓ̃5k8Û¡¼¼¼É³ ~üøÉ ¯z€‘©î {X¬æ8¿®á¬±×Ú\ù ÄeƒCB—»8w´â®Uį" ăJ8äg–âBüàúáu†óC6:`†ă±đŒ†Å°én±×¨®ơÅ–Œñé^Ù9{PV^>Ê„}„ iư0-¤f¿/¼©1U™’Ÿ?êè‰Eóëvq#.¦WÎI§Ïœƒ£F(‰•~ÿ=Åp *‚- &S/®P§O¯x•Ï÷d²zŸ3±»“ưºb˜jơ6÷,1ON‰¯§&À´øgA¡súÅ>Vó^ƯƠaÈ»ÿM)˜œBX~÷‹˜-\Úă9´µ‹¹8xÔøzè‡POp6¸sî)SŸK`دM~Éjc̀ṛ $z‰p₫î¦V„«Ó{uÉÁ}L‚. ·–ç¨ËÊ“½$ûfđú ?¬₫Ô§ÖđLØï:¼äqÀ“•ù£Ÿ\ØÈ™”ô¢CóÅ»“ƒFÀ:SΫ;fFæ-”W‚^2̣¯̃x¶tY^@Ưâ÷,ơ~Ÿ!U5’É̉B+ƯŒÖụ̂÷gïv²Đ—kỉ)ôŒ,¿*V¿3Yÿ¦ẻ´RÆ[oÄ­7V®ä²JGpUơåÇLMMăââ˜ơhulƠăJaXßeI™Á:̀À.AA!$#HMẻ7ƠOˆc,Äö'g¾#TĂûOÄ9p !»¨;ƯQ̣Ø[]z45;‰®ˆêæ†ÿÅ^{¾Çúkø©±ËIRÁđ{¤…`i3ơTT̀œèŒF‚°4”Ơ²PøröN½T*¡ª÷­7ïŸ÷Ñ;9&æËç I³´|¿v÷©«‡*Z/ƯÉÏRdFÏG*K@juÇa@X~°üüúHĂ}•|®ùT¿¤»ÚJjöJ€3}àK`ïB“è;đç¯B¶¥4²^¿¨[üàëZ—X|JW0$a‹~¯ÊÚ†º¦ơÑ{|;bÂûAÚ§lƒwÑs|¡º”ù9J^l5~ơ ưÅÖ{rÚpŸÚK‘¾@ N$₫Ó%{i“´TåŸ[„ểÓ¨Ùgr¨&˜:-½đeáđ0µgéÍ˰(Ÿ<Ï÷qĨ#æ%dcrTj®ª´ĐAkåĐë`†!w*úñjUIÑ@_ †4óiïß5)óv{L}1ˆ₫ª)*ă¶Ù«¸E<£Sư°úp{óuq>ÿó́ø²yn»×%åY( /yđ"êơ 8G]Qôv§>ÙHÖóîf•¿¿¤?jº²kÜ1×Nê Æ̀üï,-tg€ơọ̈x—'?í¾Ÿ­%ÛsË4¡#ÉôVwzƠaĐœ]Gƒç_̃¸íơ Ü€ªUôàÛûÈÖz?·,ŒBưÆÿ–k<¶M œ₫9¶“H˜ç2µzæsîÄ%*O'gÀœ}̀'MŒ½pÅëJƠ°? ']ŸC‘øµ º@Ư¢^Đ0uĐV–©F'§ó©;&1ƠnƯíÜ ô"úĐ^ƯJ¼—û³ÔÔHÉÉmô,À‹ ˜ íu•iùùëW)ߟ?Lư»¸>!oƒ~Ơ<_¨|낣ܖÎáG2W›åWÆÑ_ÔYºmj¿íÍ4céí„'ṚæB[ưWµK\>2|:T> ¥O%ˆúñ̃Y²b»âdưc£ÁÔCƒ̀@Đ6ă’AüN  Ö©ñóØHXŸ-jöáüeǻµ¼R[´ˆO Y4ØfjäLYóE2ïöÓE7‰FØÛFƠ)đ¤‹SÂ¥uúôúT>XL×|±›­”j»]i9çad¥¥•₫x•ÚÑ^Ư?èërêÚ“êơ¢ÉWB}!NI×-®ĂùNÂUƒÊƠQ•₫‰N•rß₫|đP¨K7~~₫ÎBD‡ó‚N|Mû ·}׿ vù–’_ÔZêâÎĂí‰ÖŦ±•5í£§Zd_¹x̀Ólv º4ñ¶-½ö¯v ₫$ơ<¢ÈP0a<̣ÎëC僿KFV-¡¹$à®[wb‚0T>øÛ[Ål:¸}º¾DwfyXÇóTGz“¥ơ>zá¶_+wx V—b|ç5êṚÀ³ªM`₫„˜ÁüR«‰‘g©ö¾†“®3G,[Ç̣+º—ró̀ƯjƒYlVó †M~¿W`«¢Œ̉öJ”||ª´’âW7·³9˜ utWHđªå6—‘ƠW'¦ú¢e~Ø¡2 _'ÿ„äçƯY?æk¢È8uÿåÅU^ûñ8­«‰x½4-Ọ́acZôÈáÓͽö;[él:HÇ ˜{%xÀDߘGÊØ3Ë)óMSRPÙ<~FªËË'»8ϤjĐj„9Ÿ³÷%ü‚V¬ÉMjö•Æ^X’ÿµ× ¶Œ Ä¥ekṃÚ;éÈ=æVoHQ—¢^K=BOÏR̀Xdç Ëbx|0ô¸”‹ Ó]¢JØ(Ë®äÁbÚ:ưÅÖ‘B%EE₫ƒ(åÓ~̉B§* PÊÀ‘«£“Œ¼1utE<¸ơj‰6¡‚'|¯q °ÇÂkIvÙ¬ ÆŒRG"™ ‡6»lëA_`öĂ™ÿMÑ÷Iüi®Ä7q¸s¡J¼º»O\ëÊs®ÜưÀ´±2öNR—^DÍ. ¤ñpúfkåÊH=ê'búï›" AW;ƠîàĂŒJ̀æ—:…w5¸ß$´k¥eååëYO¢s³?2× LÚ4²fëư/<5dKÙ6¿ôÆÉ•N*ưFyÉ"e¡øg|T ̣1VïSŸíw#lî¸ñ«̀·§Y›Îh8é~dg9ÑVâµø'ië­đA¾ŹY Œâ±`›µy¨-Zm^¼¦̃üÈăûAÉïÊfÏáÀh€¯¢[ĐvœgoQ%{y0ñÉä¥öö¦ ̃£§)‹¤®&d¤Äă® Ô¨V-¨Ù’Æ?–ÄÈ@çèôÊ.̣1¤jHÊ‚jW¥°µ:¢fÓ»»R³]á_ÊKØ0ѤAăD i“–¼Ø5jür#ë®̃ jv¨‡´ĐUæÎ›z$:†0·‡·®jbï·›:Ù́Ky-U » TÖà]µÉWÄbfy°6Æ2ưâ«:Aw=ö[ ̣²^×â¼€„xS­fÉ*J 'Ưƒ[ñµe$~‡FơNa €»ÖÔû.î]ëµQ{öTè5©z´{ÂƠ?¿¸b¼\̉ù£ö yo5ÉôD Á®ÿªñD/]ù}É(÷¹ZYd8̀!,¿&¤Yg4‡6@)ñ^QÁÛȵ§ÛéÔu”n…ß«l₫‘“–À́5I=ë¥Uuë¥+˜n‡ }U₫ŒN3÷p3æµRC|"β7;WÆÀóƯØcÿ,nô²S‹̀=½{ƒ1aƒOulCĐÑ3ï¬Ü}­ÜÙ=•ÇÍ W}¸ BUâ5«fĂ ÊEÇ×(Å„ƒÎÜ‹ qœ¦ͰzëPKØ\¾—&%ß”Ùk¥¸H“ø@Óa¶µu,îĐf¶U°™9­í祕ü\dÛˆ¹”ûÊ7vÔï¦5Úó|SNƯ›q~§ïq%>¢}j̉l¿=̃f&›`ù]<°}ơ*Η»:'<ÏíƯ–[¬=¹uÑqI]Ó7̀™A. Ö¦5¯ß¶sgÿMË:?Lר â÷—¬FMU,ÿ™@¿¶eư•Ă»=ÜƯø!tt¸:ưsđøéV[‘½W’Fís4lPÿs—¯Ë«é4üÇäà%Ç€cAWvD‡×¦|€̃´5HºÇÇâ~®ṃJi/ΟUÿ¢‘K—ØE¾Đ¢Ë@×ùƯÿă/ư)$ø·kCÏ·œ|₫Ö=9å¶»ˆưù­¢Ø§Q—˜‰ø?{gWC÷Æñ3(*ÚKEÚPiQY*o‹—²”½́•µBÑ¢E¡Å’·D"kxQe/»W²T–,¡(\» …Ê₫gîÜn·Uh¹Ưï‡Û™3gΜ3sÎüæ9s–£ú·n®úÿïºúO(âđ83&Y­[×°«ÀÔ‡̉‚·ª]$…e~ơÀÑĂßy𨤓L»vMƯi­>³ăËHI–”$Ưy"ƠU©‰“wóLǗiơµḉ¬F6‹ƯÿăË%)aqY•‰mÔ@ưû5́jVơ!?/ËXOó7Fè;̀°=zꜢ®QÓ×ô3Ñ›[­̣ø5ăéæzøä)¥>&ц{T¤èeq6l4ÛTmwß> ₫øZÏ4c[Ö¼o¯ UÿX4áü[©ñ1sfư’a»ïÁĂ&M7+Íé=‹¼<6ÎYSÆoØ´Íxœm“åâÉ3ÜüÇNœíe0°É^8$Û·ñöpG­? fèfG;z5ê‰RNîw˜1M§!V›?×₫cAá̃˜C ¾+'ÄÿJ¯&ÄÎươ®¾>‹đ3nÅ}Im ñ÷÷×™ơ;6ÜÔ ăæ¾§=2mʆV>VI˜çĐ4¹¸¹ĐuÎ/Û¶mÛ)c†gÜ}÷¾PA½wă%¸ÍÿJ¯Ÿ=6{º-jơ€øuŸ¡ø÷hÂY©.å•RBÈÿ%́À–“Î́†\#^\Td₫œÙXc‚W¯¶˜̃ÀfVöÍK=TT°•ÙûwÓŒŸqô%]2̀Ωa k²8?ị́ü\ÓaâÏïû̃ØĂr=u¶·NÜßt́¦4MéƯ¼}gï–‚…´ô₫8½ÅÛÓCǵ!§ÄÔƠR×Eècá§=QÑ ̃₫œ“–¨¬¨ ­¡® ÊâÔ“1ChÇ© ÿ1^¿é3ø÷×v/x₫èf̣%梵½m-i¬1t3VÁĐ5úìÄ;ÿæ”vÄÿ~ü·Ë|è0ƯuF4X{ {¡ƠkÖi ₫½₫î4O3’?|œ6y"BºÊ ù\›jÍăôàÑ“¥ÿ#5ü~w˜o^^?B·pjû4é‚™l}ç½ÂR²Ưu ;ªü¼¬[©In ¨q½==)Áâ"®ÎÔ¤ÿX·mÙ2h̉l₫ö¿ưªqùH´‘±‘†ºå0x”ø¿ÉđÁ³ƯeeeGăÏ<¸›ÑCS¯KơN2U—zó́Ñ£̀Û--†w“c2½öëƯd Æ*ȹ”Ư£́ggÏûQVª¤®-©Đ]°cåI8ÊÊ ^ç>{üàåÓ'úFÆf&¬>½ç7âBw +Æ´>y–—p ›ƒ*½¥•Ôª÷ßùñưËë́‡÷3̉$:K5JT˜Egx£wîŸ0¦¢ÿHñׯ‡ưâyOí¾UÔk°¨ÊỄç=~t/£äÛWú¥yß»hx6oéiWÑ₫± đȱù?ôĐÖ“QéƠ¾Cµ9öÊJ_?{đøÎ-¢M åǹyet₫îßtƒÁ± .â(½ÿ]¹–rù?ÙnÊ jâ]jè<ơơă›¼Ç÷gfhêöc¿°jϱ‡ˆĐ E§];ëÑ–h´eíArgËAÆÜ“æ*=Uê|tƠD}5›+yƯ»U_ 500Đ¿¢S)H5ï%`Z™Uéׯß7Ê/£Ù®^U\T¤ÆeC̣̣̣ºuëÆºÔ]ơ‡ésOÿ₫Kÿ«â‰S‹Ó̀ÚQ4́¥ˆF[ ÄZ:œëœp-¥¥¥-ưRăë\®|-†OŸ>AñDAAaÑ¢EÁÁÁ\Îwï̃µôK½ÿ₫)S¦´¬4KHH@ñ¤cÇ›7oæ~ñc0-ưRoƯºµÅ‰ßèÑ£¡€ø‚_íùe¾·fáêƠ«222-ưR·8ư&Irụ̀åPG@ü€‘’’0`À¼yó6mÚĵ‰Œ‹‹+eÂ×’—E=₫|ËJđøñăccc¡€øo²~ưúèèhnNááDZyjbb’’’̉B/r=?~ܲ̉\TTµÄx–œœœµk׆††pg EDDÔÔÔ”••[îẼ¿ËJđ®]»N:µÄx–‡&%%ihhôêƠë₫ưû\˜ÂÀÀ@>>> ‹qăÆa+°Å]aIIÉ÷ïß·¬4ăë<}út¨ ~ÀËâ7õ]]ƯŒŒ ¨ ~ÀËܺu ÿbå[¸p!V>n3S<==iñ[ºtééÓ§±…zï̃½–rmƯƯƯ[\?—íÛ·ƒ̣øï“™™I;V¬XñàÁ¬|ÇÓ××ç’Ñ´6c^¼x±̣‰ríçINÆ{äÈ‘–U’““í́́ R€øï#&&F;„„„ =´™L@YYÙW¯^Ñn¶`åÿøñ#7_UîOau"""œ¡F€ø@«`È!lw·nƯJJJöïß?ỵdZù‚ I²YöéÓ§‡²7{ôèaffF·"b]QTT|ö́^ϼ¼¼´´´§|]»v¥mkÄZ3gVZ;—ŸŸ+_çÎß¼yƒ˜Ó|à_¬4=jâ¹`,,,’““9} Øn¬|—/_Ææi¯^½¸çbÊËË?₫¼eM`ưáÇÿư”ÄZưúơ;v́X•Y±̣=zTUUU]]VúwÔ¨QwîÜi‚TƠØl¸bÅ ssósçÎÑ›&&&ˆkĐ¯ XùZÖƯ§–=<< "€ø@«cụ̀åƠ§03f ₫0a¾}ûÚµkGÛ´̣Ư¿́رYYY”̃½{×Öl¸fÍ*>ÍÛ<{áÂ…øøøµk×̉†r BNNÁ`°?© ~Đêªm×Áƒñïܹs544hÏ^½z±•Ï̉̉[‡¡¡¡ • ‰>Ô¶W[[{Đ A/^¬âO+ư@o‚+†WGGçÅ‹ƒ™´ {$%%eooÏ e€øđGœ;wîëׯµؼy3₫-++ëܹseÂvÛíïï––&**ú{)±°°¨Cùh°̣IKK¿}û¶ú.ú YöÄÛÛ;''çĐ¡C’’’-ë#Ù–-[đ]‹‹óơơ…â???ƯSă'ơ¹];Z™JJJ°üäææˆˆpdÂùÀơôô 7õOÓ@Ï*’PŸcåSSSắ ʉ ­|……… 8_:uúí‹3{ö́§OŸ^¸p»¹áCN‹‹»uë†S̃»wï9L ¨ƒøP‰3gÎü’X²‡™9r?U±=T½í´ú7))i₫üù|||›6mêׯíi``’’̣«³`åûï¿ÿºté̉³gÏÚÂ`mf§ọ́åËtoŸvÅ´³³ĂÆë¥K—¤¤¤sÆ“tׯ_tëÖ-AAÁ7³ˆMJ¯^½°‘„¹_=p,ö¦££#–™+W®ˆ‹‹Wlll̀±åăÇFFF÷ïßOMMƯ»wïêƠ«±PáĂ-ZDD}Nư÷ßÓv^vvöO›˜˜pÎ ƒƠŸÈ××7::‹ÜîƯ»Ù¢¸gÏ–r×""¢C‡Üvw®^½êååơêƠ+œkkkÚ³{÷îܹâ- ¬|ơùøW:uêṭäÉׯ_«©©ÑMÇ7559sæ¡C‡°­\¹²n;Ï…Ia°I7a¬999ôâGáááØe°`RwRk´™®]»æííưôéSŸ¦ùf¶eË–°°0|^ü̃Àö0`@•!ÿˆ V¾™—²¨¨¨K—.©©©Xöddd8›w2©rÈ7<==±q³fÍÚLä„$É 6l̃¼;f̀˜áææÆqFTTtv`¬©Ø6mg Xƒ£¢¢°_¿~ƯÈÈë%P÷´5úúú—.]ªîóåëëû́Ù³åË—×f³ÖÁƒpjưüü8Ó=S@üh°̣a¹ÂRñÇ.^¼¸¸¸Û.BBB¿ºöB¿~ư°ܾ̉}ÛyNNNX̃\]]ŸÖ°´´ÔÑÑñøñăÿ₫ûïÈ‘#iO,äXeñ5ÁV)í©®®~́Ø1(i ~pXù°ñÄ–ŸrơêUlÉmß¾Uÿ³`#óرXØ¢££ÙưMz÷îÍiluï̃=%%…ó(ºßæîƯ»«ÏJSZùê? 6NÆ?LjÜ{ï̃=l¨?~̃¼y+V¬hÛ¶-ç^¬mØÜl×®{¡ Lzz:–:Nå@üàâÚÛ®^ơ700pÆŒ˜ü4đêƠ«CBBRSSUTTsbÍ₫Ơ„Ué·‰åKΆ ê8+_ll¬™™Ùo¾§ÑĐĐˆ‹‹ăôÁö¨]hh¨¯¯¯¹¹9¶ù–-[Æ`ï̃½lwII‰‚‚Â;~úñ yđöö¶¶¶ÆQ[l½xñÂßß¿îx´µµ±<ĐS'ÿ´Ơñ7`¯ó÷ùóg,-µ}­¤{Hbœ?₫ñƯ»w={öÄfk‡FŒAŸ±ÊâØ9r¤——¾ŒlOlă²ç̉|đàKXKÄ®[*µí¢'cÏöY…]»va‹‡^~¡iV@̀¥´½ÿ̃ØØ«Kơ0Xù"##ííí#₫û÷ïO:5##CJJ*??¿îÀØ朧­ú{uuuZù°b“¿I@yñ€+ÀFUqq±  `•§Öüï¿ÿ°´́Û·o:“æJ¶¤¤$­|]ºtyụ̀e•½¦¦¦ß¾}û¥‘|t÷Ÿ^½zưê44l8›jsrrôơơñ¤ÇxÈÊỂʧ££“––Vå;"â@SƒÄsæ̀©2ăIï̃½«Ï¨‚å[03áôÓÊW¥çjÏ= êù­‘^)é÷:¾Ö†²²̣»wïh·¼¼I2§|HêøD/I²äĐ,¥ Ô’›G^c¨I Bî+Đªøøñ£——×¼yóx,_“'Oöóó›8qâ¸?µ§NRWW§Ư¥¥¥°@R«?²ø!¨½l Çg÷¨ j §̉™’Æ0‚cï3°_ơÓ8׬¡bLeeó¤Â9ÚÍT>Œ`¤²ƒ; đ>œ#Áé÷θ¸¸qăÆµô¬aå(++£ƯO<9xđ b®>qûöm.¿ô]ùƠ…‚–.~o7®‹5QA‰OX­—ë†è¹SåïN’O¢¶o´²0öUZ¡d±ÔLŒ̃¥²Ö1;¼$ÂƯx’$ÙuMLL,::'³&++Ë`0¸9µEEÉÔ¶oßÖÂmâ'l^inY‘>uL5›]û.·Ø\7ÎíiUBv©-ZÅáKHrI¥¨àÆ­ zÁÚ‰m¹<}úTII ;¸\ùª¨u3ξ4­øđüѺÉÉwÅÄÚäçÿïOâÁm¢Ár”O₫¯!ÖZVèÜYfëÖ}?6̀̉ ¨];¢ñî¾ ø^ôèÑ÷OâiÓ w" ^€øóơëŸ>é ̣ë×?)~ –£đơËü$ªŒ j‘‡ïß&a+Wúûûsù½h×D Z4·øÜ?,¦aUÅ32ñÙlÈ~>Aˆă?—óIcQ( ~¨” øiWf©!X¡ö¦ö£ÑÑ×—aÁë3r^ ˆ)/puƠPbÉH)#ưÜ­×%%%cÆŒ9°ÉïĐÅûFÎsŸ6ï:º=(útºÆÀ ÎXïwâ_}'Jøǘơ puÈ|ñqnÀ–Á’x×*o—´́—ă¬h̉ƒă uRqYå¹ —¨J·«ÏöU^§Órú œàS~&Å«¼}0¾™›e7¶”¿ ÂLXÊW¹›‰ç&ă¸s—ѱCỳ?ÙG‚ÖMƠTĂ›J3ḉùôÊFKæđsLÖÓ»“œ´âââN§6ÓŸ>³_Œ7—ÍŸH÷öÜb?bÛSfPmǬ©OÇ{™Û}>ZëÛÓoNb%¦|û€@̣ÊU&„Zç@v:+âÁ¾Œ]å«„ô?1₫-i!…úD:sßåœc™/´Ùđ«”¾IÜy,ÓÑÁé—×vÔ®mkƠ‡ÍÑï&¶ùÅïÛçŸL+2ÄÊçÿZ¸îv×2üîÓ£ĐRZQ‘S>ÉWq„,Ơ‚J«ùơ=#èƯd,Ôº"D‰–%y›í,̃e ‡y,5WPê*sŸså§̀JX¯j±]ơ'ˆæû„p´ñ0'?Ë.ïuíÁ ©6´̣¥+ #$B’/¢+€{°‘#.¢> ÆƠRjŒOẹ́YÛÏ?s‹yçi"Ù¢ó•““%,¯úàâ7í´¬ëbŸ¤ÿ<ưYËh´–¼TE°̀Ëé_w“6ؘíYø<ó\rªx×>ƒŒ©K¿¾|₫ꋲ²*g̀’ôl*eùÇüR‚†Œ±•ldùúêr`€_=ů³©£ƒiGù,tÓ¶ñă ñóÉxàKPSơÄ@΢·Ûu³g*?Ÿ_n¦,BÈ›vnd*V͈ÖgÎë/ô ,‹5†(Ÿ#¥©Ïʧ7«1Ê´g•³đ³>Ö”^̃Ø %à>:"ÄÏœ‹Ù§Û到hOW99ü§Â`ü+ÓoË*/Od_ÏÈ=¦oD=Waå£^ÇăÈ9Đ?.?X̣'¯Nñµí·”$—Vlw0­ôù°̣¦Ûe’sdº₫¢³ä¢Z6%FÖ1ˆ™‘n5é4KưÔỈî:ÀƯ˜̉ƯJ|¿„•,·đho!É6CÔ†ƠX̣!+ñ¸ƒ±•̃´‘# ×Ük´̣Ü™=Ú­6pzˆ•NÎá)FÎû±å·Œdepèâă©A;ÑJù¡î±gÖZ>Q89èbñ¸¿Œ:÷° ©µC±̃½ËŸ'}è÷ơæ}¿·cä)­u]7:˜U©©ö§=¯&>DFرkå¹Ú¢ƠÑD3}b>×₫w•Ê‚‰°¹IühJl‚BI•v´ÈȺc5ÎT@Pz₫²Hly9ú­XµlÉ̃kJ£lÆ™"AÅUÿîö÷YÓ]º„²iđơ /»´'¹â]Ơ¼Ó¢e™fĂéƯ~ÇnJ 9z‡kÉ5Y¾8[ü<Î’ånáÓŒi”kÜ>Ƹ}ˆ¬¬8P¤ç$cÓ¹”Á`½U[ß¶®á#o üưÔ Èøû®¤Ư| 5^·v¢zøj«}½k?ÏùăÛ/'̉JúẸ̀ÑÉơ²µ·Øp¤ûúŒ³©7IŸ5t̀´_„y/‡5•’’ö^wˆºq"$”?h¥ ›¾°Ö}´âẀXëÂ2́äûOŒ><‘v;Îw/¯Ù̉¾!{jˆÚ²aÓà2ÿª³iƯ×MPÑ̉q>ơÍ%2ªê4Â!Ql·ă|s*®¦óç›̉1Ó*†®¦gΰƠbß8Ä@üÄx‚mÛÿ0†&IƯ“^6}¦hBCCçÎ+$$÷ñâŸt×®]ĂOÛ+V”2Æó@Øü÷ß8k«W¯&I²E¤œeee¥©© Ä€FÄÀÀÿ–••a󨨨ˆ—²6hĐ Ú!,,üéÓ'.O-{¸³‰‰ ï­­âÉvẃØñË—/¼‘5Ω3>₫Ü·oß›7o¶ˆÔæç燇‡»¸¸@ùñ QpppàÜÄ–Ÿ€€–víZvƠ®>«TZZZtt´M‹H-ˆˆÈ£G¢¢¢fÍpøđáÂÂB̃ÈÉ‹¯¯oXXØ×¯_±¢wêÔ‰kS‹¨YFpR{ö́¹{÷nîiÄx„=z,[¶ ;nƯº…•OTT´  €7²†•ïÈ‘#AAAeeex“k•ÆÉÉ)99¹ÿ₫ׯ__°`”L?‚ŒŒ üđÅÊçèè¸eË–ê q-‘ùóç;6$$$&&f̉¤I\›Niié·oßbG÷îƯ¡(‚øФ`đ́Ù³[·nå|·\°„¿xñ‚v/_¾œ;ÅïùóççΣ/uxxø¾}û ‚øФ`哸đávÓc11±üüüyyy¶û̃½{nnnaaaÜ“¼¼¼¼•+WâW™3g̉>?†Bâ@3€•ONNÁ`Đ›´̣Ư¸qĂƯƯ=))©e$44ÔĂĂƒÓgÑ¢E/_¾́̉¥K³§MEE%55µ[·n´‘M#""Â3½@ühy`åÓĐĐÀ¦Û§_¿~´̣ưøñ‹ÇîƯ»‡ʵé?uêTß¾}«(¦sçÎÏŸ?đ຺zÓ§êăÇÊÊÊÏ=ÍÎή²{‚̣øĐ̀ĐÊGD•YÁÚ¶mûúơköæÂ… ăââ.^¼ˆëÜlœZÛ·o×€nÅ©ÍÉÉi‚ôDDD,[¶ §GVVV\\¼¶n´cƌᙶ ~´xhå“––~ñâ??ơk˜p†wwwŒŒtpp êĐ¡C“%ơèÑ£ÉÉÉ¡¡¡u(¬|t§Ö4`V­Z<{ölœ ÚÇ™I‡Đ“®áÄCañ€»`÷ù444=zô¢E‹j ‰-Å0&Ơw½gÏuD₫êƠ«Í›7:tèăÇC† ™)**¾{÷®mÛ¶¿!–}ûöơîƯ[YY¹Jg!!¡ÙLªB+bii©——Vb́̃¾}{=ÜƯƯ­¬¬–1©çÙ±qÆ^Q' ##ûüRúéñ‘ x ~´ „……iåÀ¿ØÆ:sæLư½ÊÄĂĂƒs Eu>|ˆM7ƒ={ö°WŸ˜̀„&ˆIơcẃØăÇ!7mÚTŸ$ÑưBˆÅUVVö§áé5Aó@üh¥ˆ‹‹cå#Ỉ̃̃au~ÿ₫}tt´««k±Y©¢¢²~ưú)S¦àM55µß«0‹ §OHHÈÚµk333%%%k;ể¥KègóƯŒ?₫Đ¡C<¶0âÀï@V>kkëØØØÚÂèèèܺu +_mmí5kÖ˜››‹ˆˆ`ul¤z1a«¬‚‚BVVVçΫ‡ÄÊgdd”œœ\}W—.]^¾| ·Ä ¬|ñññC‡­¾FnusÊĐĐ0&&‹Đ;w8XeÙŸ‡ ²råÊ~ưúqÀʧ¨¨ǿÙ3NÏaÆ̣øÔ€¥¥åºu몘wúúúœÊGO+Ê9¦¢9{ö,í‘‘áœ×+§ư‡M̉#GÀưñ¨¬|RRRï̃½£7>|xơêUÚ-..₫ñăGö„Ú\­|’’’́¦WÎzºººÏŸ?‡› âP+XùöíÛG÷[;v́ƒ̣̣̣°æ±‡p-Xù° ¦¦¦3¦_¿~™™™Ø§n+ˆÀO Äâwÿ₫}¬|ÁÁÁ̃̃̃Ưºuk)—‘‘Áʧ¢¢’=pà@́cjjZ÷¨ Ä€âúơëøwøđákÖ¬ÁÊ×ẩ•îÛ™››Ë¹^.âP+"""sçÎíƯ»7{ẾV>l¿bñ[¸p!ÜP?€z±wï^))©ăÇ·è\œ8qbçÎp7Aüê…¼¼üï­À=øûû‡„„À­ñ¨/¢¢¢ÿüóOKÏEqq1ÜJ?€úÂ^¢E#((·Ä f<ˆM¾̣¨øËj |âí’“ç}ü°éÓ—õ”åå–em“ôô¡¯¿§§ôº°®n  ÙÙÇ”•_É 6C‡{{‘U«}|ü¡,øĐBl¾²âÂ/—ºÈỦ ‚p´u1§Œ©̉đm‰T0rëO£*-ưøÚóưb\Ư¤ƒ‚}}ÿH9>?è*ÿ Ú4×eôñ‘ _éâ²Jˆ-€mÛĂçÔĐé˺ñ´%´@AHsv¬̉qô-D>XqULo7–C¬‘EäVA¦X®MG \Z”¨DÇ`☤C’s))ôß3[.Ê%Àn½ IÚV9—¯¯́µkGơơÇüv.Î]81fŒhó^I©¼¼ÛƯºơ†Bâ×”ä«(›‰lJÊÖoüÆ¢»¨H¯é;£æCAZ0y¹çkT>6ÏîR˜B›}¾·‘×­„S÷‰OXP̀4¯J™b± ïí«,p³â°4Bi[>¹5€i•áÿ“T?%œÊ—6>~XÍ'zñ"W_ÿ7sqíÚ®fW>'ăæÁ3¡UŸ%A$Ô¾—$É?‰œ üë—ø>Ф†¾U9OÓÑSTRRu0}TĂ&)e£t$4ü ” EśXêü5÷,bÖ$Å ÓÉ C±éÿnI®"ÖôÏçĂ)ƒ^K„¼đ½øö#@Á1¹ºsï[rëÛÄq̉&at° Ë«-j:Ưر픕¶mÇ÷¹8{ö™¾¾\\.œßº›Ç–†BƠÚ-¿Ê¢r— ´ñÿsÍ% nmÓS)ôèMäѹ”ă[ !0 zl—óIcQ„ë VV3m¦̣¦¢~-%ß UäS… r*‡É)¨D]‡]"đV•ÈúäÍ*^Œÿ–t´;́wƯß6MÊĐ‚øñ?²–ZĂùˆ—enââUưU6n1M½`ÚàăÀd(I­;%mÚ´¹÷0I£× ßÈE÷îêP|í„AIºĐv¹`Û+Ï€‰‘ l›¾Ë$¤7d8A¸ĐM¸*„ắÔơo „ë %3Æ•>¾Æßs'Î齨÷øºO$×åùŸ‹‰Ă¢¸­Xüj²·L±̣•>a)ßS’Td‹ÇæS„É}XÊ7zyt&₫[pc¹X?öññ‚ZÊR¾ZBÖŸ»E‹Ê¤¤¨–Ÿ¤€&)“”ù&R'ʧ•ÏxvØéM®‚5½J 2XÙH^ñƒ̉´8êlịÄ 6 ÷´©Äpƒ“A©ë™/Í™T¥!‰HÆK¬|=:})Œ@¨–·¤ƒ—L&îGHÆGûñ|h/foÇø£ đQÎw/Ïg¾üQb€Vaù1N/́2|-UÚ'_^ñƠ–’ÏZîÙÏÑQ€éèêàà€_Í₫÷!V+bĐ"kÚ!Úo*XSôơY-çS”CÙÈÎyRÿÜă);Åp¶ØÛº mwcûn»ûƠ^“ơ·xË÷ªÿoœ>¾ºôæÚÚµ KỈ›µ]˜Iˆn¨³Ư¯¬ ˜lK7“ZH₫Â7…̉R>uUăßËÅăÇ_q…­#€.B¾ |™n=?lâJO·“ªÚ¥á¤̃‹úWÓUưMŒGÈ̀,¬k"èPw³gn®€‚BW(W­ZüXĂÖ¤=A¨'­4"VRm†¢ư–̉:µ-jB,{IđQeEÉé4»øú ûHê„J-W„UDjÖ².Öb9²“vg̣Đ˨ؕ±ÎPÏ-;̣IR”ă…nsL=SÅÙe'oơïÍ,%5 ·,Đ¢°7¡äÚöê»»»¬w$lo’Q}©* º!‹ÙĂ³J×Mæ—?#́(¸vJ¬¼uq $ù.鈴ÉiZ-pliƠñ]îàÁ‚©SÛ₫^.F́Đ»:¬#·®«ä¡H’#9„D¶ÓIÛéœ!¶>Ưºµê ưÏ{ÄÅ=sw‡bƠ*ÅÏ>bY ñí«0‡Ÿ6¡V……asiƠª07Ê(,Íđ\ĐÇ„Ü/æ\ÆD3¶½Xú>mŒ•ưl³>ÖsVdAƠfỶ!íŒé¬St®c„k‡îk×Rfè@-Ö¿l’̀89{Yt=Ó=q$ú́zŒGH¬«wÀêà̉%‹œmịôuQG!™ˆ˜ NY$Ö®\‹œ¡2vÛîy>̉íÈ¿—Ư&ǽ&Ç¥h1HËôZ·.ÎƠµÖ‰]Ö=ÛN8†-êă®9'(u}ÏZºn^.°«̉X‚”ñØÈq§ «4‡Ăۼ·ƠƯ#EKSó·s¡£3vß¾¦Loöç§íT(T­TüÆ8ƠüÚăăæV¹µE,`]T@í0’}âÓË·̣ëj±©²Ú)j ‹[µ0ºćÓÆØW¼öŸ;‰½i<Úÿ«‘›o¥xDuǺéBáZ$®®K³²Ö«ªÖÚg„χøè·G¨}]7KXW†Đ7ÚYÊü·u3á¸Íh<9¸®HÁÁ¯½½₫$ă­] ?ínÛŒWrdzf)C‰j¥â×Đˆưáè~²ĂÛ7;¤;óƠ¡l·Tµ®›å}A‘¨ñXº¾̉ᙟ ³Â2É́gÊ÷§Ÿ̀ùøJ †–t8ËÏß<“¼„†¾ñđX e Ä€–Síù:Hwv:w~¹Y§ŒVßƯüÙ°M›>ü¹̣ÑHJ+ÿ(›•™¹ISS i¯WÊâ÷›xë!5ø§‘º̀ö’‚+KÄŒVz{löóƠCèÎ)`5@ư17[¸cÇêY³h½ơÛ·D»we‡˜K†°T­¸J_˜"’Ä* HæVH ̉ÂÿrB"TªBđs f·$É“,gÙS‚¯R3}|N±…’ 2kµ.O`` ¿¿lăåq–ѶKoƒFßÍ}Iä"%E@Muà°a0Äïí½@¹¤#¤Ê1>To¸Ưé%>R̀7*¬v´1t©ĐÇT˜=̀‚sïĂÍ$h£Pˆ ̃’dÀ3rø?C |α-¿GÑ“UmcPÅ …‡¡c{I’r(ŸV>öx¢{̀*Ÿö>«ƒ₫­j…Œ´S$ñXO¯CĂEL„¬~ăéîÓCµm“åâüùèî=̣Ú7àC28ø…··Ÿ¡!”¿† ³‰²4ûÊùö{¤ù÷p*æÁ́DÖUîÖ›K®çˆ¤Æ¦‡5kch‡Xå™bl›Ô=óàBÍ k8wåD†ïÙ¶ĐÊÑí3!ü½|q7zï—̉~§/IÊƠö³̃Ϙ±»½|ÁW33Úñ0+)!₫’‹‹tÛ¶¿3˹sm ̣¿ŸàŒỮ̃P:@üötØ—ß–KµC|b³¢¿g&9ÇQóă–r„|ơ²!‰í¬yÓiÛΑ ¶Ñ¢YSäś̀·eP† »MỞÎÑL_{ ±â»G—¥}BhKº¾$ˆ®œmª»ö̀u\LFkœD‘œÓñÙ¬8µx¨Ass»–.Â"--g[ZÂưUü(D´êîœétˆtâØ¬Ø$÷Ô¾¿¼Ö¹®íj̉v5Üx?ñ?ñ?ñ?àñƒ•0û”@ù”@ù”@ù”@ù”@ù”åP>åP>åP>åP>åî$00°E§ßÏÏ ¸(¿€ƒƒËMü·o¤€ÜC”@ù”@ù”¯9ÈWQ6+Ø””­/÷h"̉ÿÛ³9&æă»"ñ®ºs]ë)K5ÆY>Ư\¢6j%ƒA₫<(‘/'+~‡AJ½€ÆP>S‚¸̀t$É YÊy¢’„Zˆ̣¶è.‚œlÛèïïÿKyçÚ¼Ô?#rrÔØƒAv₫̉[2"6‰flZ[øä m̉đTÿ¿½¾¶¯oHŔâÅ»’­²X₫j!ä:øYåûS:ÂU₫î|âàGI}ƒ~9‹.æ‘j̀Êä±0x—-á{Ô•+_NúåÔ¬G2Ê}éëâÍÂ×OĂ"îLfää‰ÿjkéƯ¹›NÆ¿AúDÄs¤ e»ĐöSf„‘…v(h+ç̃ÉñXÀôUĐC¹é &RùFFj¤ÓÁ‘R{Ë{‘6½à– | I¥Y!G…,sWy(g‡5̃ Đ%oq¼V‡‡ Ô‡$o"”?v¬%öñK|h"EXZR»¼5Ÿ ÄÙFEo«ØU˜Bˆ`ûOƒ[ 41‡`ÅÛh«¸!­AvKÜ÷a½–źtc ­‚Cƒ/9L^–#\’xqF“ă\¸ÍC9ơ¤Bd,R‚eÏrù½ÈY”V “#îprài,‚>ƯX®6ÚÏçpÁ|l€ÊơZˆHå4v›t(u­5C¼×d³îÊ×`ÜXN;^‘ØÔ»=ßÀ6âéÎñÅ;HA”OË^dâ³Ù& ůR„ä°b¥­Mÿæ®÷“h-Ëe©v,´½àÑ»O¹́]Î)0–ùBv…› 41) ²đEÚR_ûØó{&^܃}¹ö½ÿĐś¾xúh úDw7| ̣Tc$ª÷2¬ÂNÄn¿›ơ}/À>üøÿÊ>œ;…e¢-6±̣ûc¦¾ kă_;æF§~øç–LÑJ‘‡û[ÓqèNê¸e(_ƒRÂ2øvŸHö™h¤o³´ÙP%Ȩ#S ]e 9zÄ|­3̉âæ›s™Å̉ẰơÜỊ̂´B̉é £w+á/’}™X?¸¯@#̉µÏú=éë™no"jƯ˜B/²{7”’‡zĐaTrskưÆ–?ûoûơqv·”“/·Ù¨ÏèƯÊçăï$TŸÄđĂư€¦T>Ñ¿Z¾“Œ}'1½-‹d~é£Ă$mwÚîVn¨+ưtêÀ/ôŸè Ñ38ư³Ù»‚±^iEûÍD”h:Nlós xÈ`dû_½Ơơ¯¼2Ôzµë“’r³úQD‡ª>¾”́gÅÓæ¡ï¢ỜwBª„?(d™wOï¥Áî³ù4I–8Z ̃v*‰åñ,^ˆ HRÙV¹=À̃>p;;´‰²à¶»_í5«Æ̣̣gƒ _¹ẲÁ¡ Û÷ë‡5%à;ÜT )Qj“Đ9›åÑÑKm˜VdØơ/üW­rÙ¸xû¨•»̉̃Oï#Iw`‘wL¾æÿ—8B^@.FƠ";Dÿ‘“Q§̃ ïƠ74ʼnÏe¤oÆ18F=‡ ^™’­Û"lÜá.Đ¼ÊG ƠÖ„Ë[™®G·©v¤̃‹Ÿ–MT¢Î5; ÿC̀NB̉T—3‡%û́Τ¼q=1{¸Ü_=^ăå₫[—ô«́Ẁz_?ëc@™}7ọ̈̀½¡º3H0îVtúÿ…̀@S¡9û́ú·ăDØÊm¶e{^|@â÷5‰¾+‚ÆŸô)åẸ̈îƒeÿÑŒb/ÈÉp̃ʘ«ûL¦û‚Z­ÎˆóÔ ³üóîÚ¾åúS–ÊÉmÁ₫Î6¡ÑTè27¼Rê3b)§°÷Tóù₫¥¢åWyxvé é+8}̉_‘2Í[‰¢À€…“ܡͩ|å£Ú雨§© í/)Ö.c¡~;Fù$) ”*½KWS•}ø)Ï₫Ó¿÷ấ˜®c%-íÿn )UÑ}T…$Ÿ”?6ÆßÛAjó̉G>j²Då‘ËơÈ 4!Ö¾‡­}k̃5=üÖôđjĂ*^'1“Ø›¦²%e ƒ±„íïë……û®`0ÊE¨ă %ÅXîê&óÏ’ó/“mr°́u–ºĂ•)½oåºuÖ“%à= åC‰_o}J«¼â¥Ê`¬u®)Ẹ̀«¼æµÔ[đ[dGƠh¤'Mµ[8¸Úl[Í“Vö€hGµÿHsû–){E÷·ơC½z U^c“§¿̣¸ê¡e½&ÚcˆMèYÚ˜`0¨W +9"¥ç*…G>t_ KïS‘.ðăù• úăé1_Ha࢔}«ªÚ”ß/É)ưMOv꨻öëƠĂÆïTÈ*†̀8Ï!óCY+’Bf5x¦rr²„åU\Üó¦–ơ`jĐw̉¿₫¬e4ZK¾¢cHNæåô‡¯;ÉlLÛ3̀!á¬÷§÷ϳ>‘•»‰¾ÎúP"®,úy_üEñ®}†ëbû vß~₫Ϊ£WÄVy˜9P+¥Eøç -{Ô“CúÉơ«¯Û©P–ßZ­¡™œƒ7œb̃-6‘̀<¹tˆK9¦DoAßR䔜<¾~Ä(VìeôÇŒ [¥ˆ ÏhÏi%Ʋ|ˆx+'ÛùZJœ¾¡íÏŒ¶Œ1î[Ï7F^ÙYà̀]m•ṽv Âa"bÖ¦kJ —_Ñ·çt†Đ³V_[>µmW» åˆỤ̈ä±/ĐœÊg±Æ¬„øöU˜ÚèЇú˜æúÄ—Ï„Œ’†»ï²Áz¬÷Q’L:¾-êéë¢B2œ:Mdơđ¶ƯCjZEX»‡‰vQÛ¾?V·ókµnØ̉ûÆ:G[5|lT˜ÿº¨Kˆø2b†w óz ºcÉ»¾c¬́_!¬ç¬đ±¾*,¬Byú¶ñ RlBE¨ y·–Ùô i…óûˆ 5@)©>‹¦,½ËUÁ7xø]'R‹¯Ëư¶^ǿ°ú«ùѶlzU·)ù˜ ªXö\Ë7–½¸ÑÆfÙp÷¹¤̀‹]¸2[ù]Ø0gPz̀üîÆ:‹§(7đª¦®%¬S>Éơˆƒ̀t=¨Ü F<û‘Çë}í)ÿíª‘ÑßÔmæ¡®újû¬bœXt`ZƠÄ€Ñ3üD•7Eϵµ•ïÜÉ™ƒ¦1»PMẰá‰Pû£‚ªRêrÄ3Oµ¨-ØƠP™̃Ơ^?Û+½ṿSóñ³̃jå… 3}xtXk Ởó₫ËÍ©[ŒeïN.)Y–#§¢¢ 7Á8xÂ¥[Ä…çt©ó³"&öág>Ü©Ç;–=*0A™˜Ú#ÿÁwÖOŸ(WÁ9¹Æjág¿:—ç®¶J‡=±́ùïL5í¥^ÖTST¾Ơt)„)ÙèÏØ@U4Oư!#H¡¯dyAeÎKP$'ÛQALm.P¾1NUÙg»â56mÿƠ¸Kw´söhç̣-%77·*lƯmƯj’É>ñ‰é́M7·Vrór™ư%zMChúÅówç÷aÙa‘ FSMjër}₫“»åæ~áă£:Ä‹(Ă¿µÄí˜Ơ[H€ <È)áH:cB¦¸2SFù¤ †î3ç\ZÔ™¢«4³ª³̃©Ñ—D¬‚IT>âø¶d3Ä4!₫‘ăàjQ|®Û†!Ī̀DZ¯­ưklèn„vƠ<̀¼–Áv"¥s¯_Rè?pâPÖŒkƒ¬ü£7Ô}?5*C¢ç¸̣ëLƯAÿ3’XÔø”:kMˆ :ơ8z®ï’„e»—Å‘Ûåˆu©…†Ô믕R‘´&Z•v¡EÛŸ#Íé§™ÆnÊVCÇæ¯tªĂ¨ÙæB‡ÔTS«_ç'gSÅo_]ÑÖw³-,(­ñ”Ä[ÊÎf¾Û‘BŒGgjœ¬hÎÖN I-¿½M+=zHJåVÏÔd7%a?ưX[œ‚½<̣¡MkcŸä7•EĐ-ê54‘ƯÄDñˆz5xđă¯b£³ñéÓG©Ç[G*1[]7«C=Pd‰Yn.NÑg™í´ŒÚă³ ÿü5Úe£Ÿꃆ¡Đ«ØñKẰª¼u5e=µ³R#V̀‹ ”‹ ¬Ơø ÅÜ ĐZOưhO¦€ÅdY›°¦¶éƠơĐÖc‹"¼h÷µpc9¢Wï"C ́f=£ÚsL<̉Ê€•¤Î}¸¡̉éc½Ơ\SÈEƠ/Å»gyœ1X¤¦iL¯ñ”ßîăŸ‰*•¾æÜ)è€̣ñÔđ₫G•êB̃ôzWi°sñ÷’×—<°́­?óÖZK q|#¡èT«Ơ•|fû„öFêĵW$s¢ñœCÖ‚7ëOĐNÁöXÿøŒï~fÛĂœw„9³Úꢨ}¿4̀œh¸u‹äU ‚£̉ƒóăä4¬ÓkŸ…Âă0‰/nνóöæ &©^ßô,d¬0gCâ×âBv`ö mä×óóo³™Ÿ¹®ÎÖTSª_ «: g%˜}wÏä‘Zđ´åk 0?ÚzOẉd2Äÿh=K`?éđO_C5Æ]j®GZöĐ»Ôf/wj ¸4–é–u4’ơê}fOô-é ̃ĂŒ†Îf0fc™ÜpîƠä(åä!ö 6xºŒY*/̉¸_Ù5§Ÿ>4´7ÿ²m——Qy >x¨XLj¡z¦”VzôÔ‹:†™·¾v‚Ÿă-GDU₫ú!›t+'ˆ %9̃ÚÜeíÍJ Y½/xûVe ³¸«¤=o]ÈXªëơö¸ûú̀)³÷­d¿4Íb Æ̉Ơư<êHjôº}!£©Y™QAt¡®&>DTKæ.éâ~J5EđơƠê—beÊ4´̣êĂ2D/ñ+¦×µ ²5\IÔq ₫ùgÏ­½3uè*¼+₫íôQƒá ÊÇ›8&äml¢É›êúébJơê÷äç_¶å亯߰hÁ|ê{êbÉbIs´̣œ¡Í«^Ek#¨³©áƒO›fMđ8n«f›ôíYÍŒBoÄ…½™jç8¼wLÀB́ăn.+c₫flg\9ƒÖ́9±Đ.¡îạ́ÙØâ®‰Öîö>ˆ2P>=Ú­6púd— SŒœ÷³¾ó‘”iÛ­·2ê¤ïo˜ĐëÓưm)ơ>EmẰ/Á9³„»©–=O½˜)¯eb¬Y±–HÍ Uí¡Ê|í¸xämÑiÅ₫úZªXÚs²_°û¬R_eT%™¶Ÿçd!ayyæÆ‰ưŸQ5] =59vH|T́₫íªæÓ´$ùJ?<Ü{⸼æ(3Í?¹#Á¯GÉÊă2  ia®Óơ\ô6fWĂiø^È ™ULN Ï„̃«ÖP3¸u@| £¶EÉ] rM¿¸ó"BN{X ›ñ^ rƒº}º¼6u›ß½ĐĂ„5 /¹₫–ëƯ†/XH »XîéT[Jv:t¹-`¨ư+}¡ûT¹Ujø¦?C„RÂưÚƯ;́›̣+ZGÖPS†Ơt)ødrÔpvXK‰9êÚ_0¿†+‰ßö PÀƯq̃£Ô}WnÀolÓGƯ„'$(Ï‚_±¯‰Ü}äĂAŸ•çÏOû ÈøûV¼/c·¬Aù°H½°‹>â+BcY:nŒ¤:O ọ̈L>$ê±ålÖë.Tóà·‡̃~a³ßÎw¿²µ£ß®Ó‰*ƒŒË"ƒp%Ó´;rWÿ\à­'Në=Ëïđ̣@AJj¥qJB½­'—°vIÿgLằ™ñêËxó8K§UŸ‰ÖØÔ£mÜ>mçưz²­µ©+G!Y"çªḈoO}PI}ƒ*Ù.ư₫ªâåcÀkf₫{ buLeu%¥»Ö²đP =T‰‡ô¼-tïS*äëFFêtWé³ƯFFÓÑĐŒ©9ôÔ,Cîmúû¡B?ª»ÿ Cºû+b/ND§ÄéđÑô`ưé¡©h£́9xoÈ®8₫ä“[vÊyơ¼ßTïmóiucNŒ-f~íhŒÏ?›®e\Ë%¶¬í.M¢}yo‚|=N?$̃µß™´d-YAºó ƒ\çm•U@øo¹́8~aOFö{‡)g.%̀r‹`É)ä°F¥\̉úNÙà3’~XÀó#Z+ưö^yƠa]nµú%,—v/Û”«§ íÆYn=x·JG9LËkYcM©ñRP÷+6̉k_B’¥÷¦øj»’̀—àQ÷;¹¯<_Đ9(üüôñ`đ5¾̣móúgăếĺTqñsZèÆ3CIV™¾”©cJ’—¸6‘úCíñ¿ªmVM+z²8:sŒ£₫̣Mí/»è¿́8Ă+ÿeø¯̣H:¨‡Đś ‘ËF:°¼çÛ³"‘P5_¿Í¼zJ<‚ă[æ97O×Ôu¢FÏÈÊô‡;Î!Ûúîwå9Ç€×8̀üϳu`êßn» Ñ®×5.<$ZCU[ųW dœ}ÎJÀÖï¾9«Ẃªé”÷™Yͤ۫ưl{™Èjà¢Ë`0‹.sœÜ¾́²)Ư™˜„1b\™ʇp$ư5!âêfĐh„3₫WƯ_¾ÿÄèĂY¥q~ùµn'í²§z`üvă[½, t‰ŒJ¬̉²=Ÿcr=kgö.úV‹ÏXU-· ‹GHTEưo^G¥«Tûj«)µ\ kûkûz\I„d4ÆÅƠÊ—±c–̃́ÙáËÜñ¿q«“ă<₫ầwàÉ[Ú Ju3½£x]£ª“—#·}T\ 1Ûi«ôP-}™NÛ‚Aá SÇ?½oú UKCЬ] O Đ‹/=u)Fèy,5#¼<‰r2đ.ŸÆ¥5àPlê”ETÈ[]Ù©ú{)Ëmä"Àm€º”¯4o?[öl=Ă¼g›§Çï¶s§æ?́i”0´‚«ÇuØl{3u„ëĐ,¼Ê-ï‹HR·@ˆ¿–…‡j́¡ÚeRî]I6Ú¾.¾.ˆË8kEø*3DlÄÛcÔä°-{àNÙU·cÈdKƠŒ´8 (̀ê4É9\Ó¤¿û¼ÍH±ôôĐà^å3P˜B;’¤"Ó¡Ñ3ÄÖ-„–̀r`0yÏ›z» °™X1I´̣0×́Sa´›é—̣u™!{²ª]Q… rX›åo~K$â¿Eä!‚5û±óÁËL‰̣M¥Ñ›rÎ¥Ư6-0sªXöÏfÅ©¨ÅĂ*ÇS"DTÔó…_#䆔{[F çµÛ)() “Ö7ßƠ/ŸE9«¨­¬qá!¦Uí¡z̉•OB+îUP‹_Æwï7‚9?È„\’¯Pë§ăÛ4ùn¥Z̀Ö¯f5ˆKßghƯ‰:|>ͱ5H±ôă]n¸H22] ¤Ü«|¬cZ‹«¼´U,'‹t‰ÊSK£œÓë"‰®†Cö0‰•çó̀¦×UgÏ$Ï–=LRÄ"¢"èÓcó®ÏƠDïN-,—==”Ó½d¸îàwx*½̃†ád ~‘.­=”ï| Đ`äư;ºt%5¡bШ¿sÁôu”wƠ…‡¤^ͪ̃Cu[₫OP‚\¦‡ei#4ÁÚ Å &ø„øÍR@ÈZª¶Ị̂(b×°̉ êŒÉ©‚ưϼ₫UÆÀ1û(F̃T´&}©Å-?”"˜óå«ÅŸUŒG¨ưØ—,Ù½‰dZc×Ö1p;†PZÂKdÑ¥Xk„5½V-§<· ÍHX»<́x’[a©²  ~‡"4’y2súÔºđPơª•×bĂÙ+µzÆOăùŸr¥ÍơÿÀm€:”ƠKâæÍ'hR÷CdƯ`©†t…Ÿưçơë‰yŒ•§ÔơR¬#5ª8ăQV«&éŸ!&>?™U¡Ÿ2«Ûf_stXJQ%UZ̉ÚÖ ]ăÛ°m[`cŸ"))ÉØØ˜ ‹`›¶ 3ë<ù?’hC@•nÅrÏ=vvv­$³˜ëׯ÷ïßJ÷+ëS@Æá(´̉ƒ‰^{6âdÆÔ~Ød¢D¥!QÖNV©ŒL#¶"²d¯ẹ̈9ơ埣¿̀Ox÷́yŸ(î=ÿ&8 A§OŸn×»æ.hÀ¼««÷rvvvrrj®„•đÖ£¡Q‹e@@@Ó{nÈlvvöæÍ›ăăăAo¸_ùPæÆÑNǘÒ$y’ö ›Ö6ôÖ~â´Ă!jhÑ Y±9”ƯÛÁzè8Oî×h f‰«î[æß»9ơ>rԤѾIT. j¥\TÜz:?}ú„GyêÏöêyøđ¡——WC)߯ë¥Ơyyyü»bÅ%K–´†üêéé}ÿ₫$ÉÊưû®T>yGơœfÏøê7Œ–:„¶!ôtçxbg=•´ôl–Yhшư–YíŸkÿꓦ›˜Ạ́¾¿ÈÛ‹ ©k¥.yÛSËÍÄ++«¸¸¸Ös›ûô¡sÉ̀̀äíḷóóC•æ~^¼x—-[ÖJ”~ïœ;wî–-[àîs»̣ảH²Êp=ÊØúOz´7í̃J’²ăcópX–́9’I•îî—̣™_Ó>|¯´Y>³"M•ö¢o•·_0£z°XÉ‚=){¦$¹ ¨.!«}ØÊÇ>®¤̉âm̉O–+YPv*SöTÖg»S³—%̣üm~̣ä ưÄÉÍÍUPPའ̉Ÿ0 đĂMWÚ©÷˦y«Êï̃½¬çç₫ưûAùZ†̣a&Dău8”PË.Α´Ö¾)V%p›ĂWäÚöV9ĐØ?“ähÀW¾„$+½fºµ²û=hĐ ́́l̃ËWrr2íX¿~}“)_£~ÊËËSWW/**â±;¥­ÍzTZZzúôéaÆñv›1cíhÓ¦ èM‹Q>€°´´¬°ªKJx;³?~üàŒôíÛWLLŒ÷n<¶{̉¤IØLçíÉÎ/ÎiXX˜›[k{Ù剄„¶ûÅ‹Ç=z4/ep„ lwqq±½½}dddKÏÔ»wïđïáÇÇăú'NœÈ¹É{mæÍ›Ç¹¹dÉP>P> y°±±ùüù3/åèĐ¡Cœ›GméÊÇ`°¾OϘ1ƒ—”ïàÁƒœ›eee·nỬÑÑáƠº¶yófÎM4âAùndåÊ•U|Ú·oÏÛY.,,ÄTn¹øKèêểygå º‹cÆÿøñăVR_¾|Ù>m‚̣ÍϘ1c>>~~~¬yØ œ₫¼™™YKÏ~GáÜ´··ç åĂSóæææ̃¾}›çkŸµµ5»4G |@S£®®ÎóyÄÆä¢Êw/^jđd[B¼—©ºQVV†G(Đ đññ=~ü¸G<œGº?dKçơëל› #&&f̉¤I Ùøûï¿y{0;e÷l¾É“'çååƯ¾}›&™«?œ d |@3°ÿ~???^Í––(7CÏ]yÿ₫ưÖ£|Ÿ?å噽{÷̣°̣ơë×”k‰Ưµkje½üwîÜéââOP> 9aÏ“óRvx¬oḉÙ³éµ ZU/ÿ£G‚̣̣ÍÿôááÜuêÔéÊ•+ươØ|ÜFqqqbb"ínUÊwăÆ x́€̣Í̀¢E‹ ylqZN₫ûï?Q>^²ùTTTØó đññµ7v́Xx́€̣Í ??¿““O΃Ls₫üù%K–đF^JJJx&#QQQ́M\!¹wMx́€̣ÍOLL +/5.ñŒÍ'--]PPÀ̃ä±Ï±u°yóæ¹sçÂ3”€—ĐÆ…—†ôñ†̣¥¦¦>ỵ„ÓgäÈ‘­¤®ƒ̣̣\ÁâÅ‹Oœ8Á«O^ú¬̣íÛ7È…§§gRR{333SWW·•Ô5UUUxà€̣ÜÂôéÓylrg6ÿgï<à©üÂ8₫̃D\…́‘M)+#d¥•’TZhI’–æ_)%)¤H*R4¨(™ MQHd”‘‘ÑưŸ{_Ưl×]Î÷#½̃{̃÷>ïyÏ9¿óœikk }>ÚADD¤ƯzÍW¯^=|øđ`Èe âráÂXÚ@åƒĐ <ÁHHHÈßßƠªUĐç£:...YYYíNFDD å³¶¶ …¥ T>­°oß¾Ư»w3jtæ̀ÆP¾ß¿Ó¯ñ/_¾TVVfggow¾²²r䲪Ê¡2ááጪ|?₫dŒ¡ßY aaa‡êø‘¥¥å`È_………qqq°œÊ¡-^¿~ Ä!§Ùw–1ƒÁĐ£Ùùùù>>>Ö«êëë÷îƯ;̣—JII ,g ̣Ah́ÅêààÀÊgcc5sæLzVVVº³8:ñññ]5'€JÉñăÇC₫rww‡… T>-̣åË—={ötÚ$Eï¬Y³¦  €̃Ÿ‹Å̉—Ák×®]²dÉ₫ưû» àëë;”ò˜1?~„% T>B×c(º>ÀđáĂéÈZ~~₫¢¢"&&¦nÂlÙ²…áóT]]Ư©S§`Ù•B»;vŒ››ûÇ ö\>>>7õ477§ë§ —…ÅCBB._¾Üc·VDD„³³3Ăç)ÆËPPù ŒÈ¥ZZZÏ=c°çZ¹r%½+¨”и…ơơơ‚‚‚……… .́1đ²eË~JĂ+ ́AåƒĐ<ذaƒ——#=ÔË—/¿}û&,,L¿ÀÏÏO³¶áp8 à[·^º{Đ Ù䬬¬`y•Bprrnß¾ƯÔÔôöíÛ óP \æââ"½\¦A€;EƒV(UTT<~üx^^éWM˜0±÷h­®®¾uëV7£{ Pù 4‡˜˜ØåË— iú-đùnܸ1õ<:µ_\\œ¦́¹yóæªU«̉̉̉ú0nvåÊ• œ}@m`ơêƠׯ_‡% T>ÁÁÁd‘¼`±Ø‹/̉¯̣ÉÈÈĐ‚555:::ÊÊÊ}ë:åççgàiƯ¹¹¹Çƒ²•BÇÙÓ××?{ö¬¼¼<<ÎƯ»wyxxètcqăÆQñÛ›››çÏŸơ{÷î½|ù²Ï÷Ơ©W¯^1j~ñđđº̣ ,: ̣A蛄„P̉1LÇ đ6¬­­/]ºDw–‹–––̣ññQ̣Këëë-ZôñăÇ›7o†‡‡÷ÿ†ˆeÈœj‡ñññ¼¼¼°Đ€ÊaÆdOVVöÑ£Gbbbtư,LLL7nLNNÖÑÑ¡;ăÁ[ ̀¬ü ssóêêj x亭  `qq1ăej$eee°¬€Êa4²³³`ØÚÚ̃¿Ÿ®ø¯«W¯¦GåKKKPå+//Ÿ3g¨ܺu‹́Ùµk×r§ÔÔT///({Pù P {ôÛUFÄÏÏT̉KKKéË́”””¸mss3<àçƯ½{7))i€Œîă¢E‹,ǴÙ³ÇØØ˜áç&Båƒ@đđüÖ¯_¯¬¬L¿Odoö́ÙwîÜ¡#›ß¿Õ:uêèÑ£ 64o@-———÷îƒe yW¯^¥ưµu Pù äÁ××hFrṛºuëè÷)–,YR__OG»ÿ|ưú•\·RWWWSSóññ±··h³›\\\, èëëGGGÓăÖQ¨|¾¦ŒŒ à4P è /^¼mÛ6†Ĩ 6B•B6èwĂúúzº°³¬¬¬›í2hj'Ḹ8CCCÆHØ7n<}ú4̀àPù N033›7õ7èỊ̂ơë×Ó…@غR>QQQj;₫¼c$́ˆˆ¨|Pù .¡ÓÙNk×®¥‹±©]i›››­¿`¤é̃~~~0kCåƒ@ºäÎ;=öEÑ ̀̀̀Û·o§q;+++;Äápuuú́́4e*…·8\\\vîÜ ³6T>¤K„„„̀ÍÍõ¼Iw–‡……Ѿ̣UWWw<ÉÍÍMƒó̀ŒŒŒ#I=z*T>¤={Ff¿}û–öüơëW»3·nƯ¢ü"Ô¤0}útÆHÏ #á¨|äÀôh¶††íYSSÓî̀₫ưûç̀™CkvÖ××Ϙ1ƒ1̉ó‘#G`¦†Êô€MRR’®®.}™=eÊÚ7²®®®ơŸ®®®/_¾¤A;cbbfÏ͉ùüùó =ĂL •é™Ă‡ÓƯĐ>cccÚ7²¶¶¶ơŸ×®]Û±c Ú ª>Œ¡|¾¾¾Pù ̣A ¤|tg³¦¦fyy9-ÙzÆ}dddzz:mÚI³†ơ–OŸ>Á́ •! Ú_ ¬SâââæÍ›GË₫₫ư›x¼hÑ¢N‡z̉YYYŒ‘’¦·•2à¬Y³†Í~ö́+_CCñ8$$„fí,**bŒ”¼xñb˜¡̣A $¡­­ưâÅ‹ &Đ—Ùõ¼¡q ‰>ßêƠ«iyazܲ£#ååå³fÍ‚Ù*B*W®\¡;åËÎΦq Ñ@$!!ÁiøÆ¶¶¶0/Cåƒ@H%::îl¦Í)á­!¶vúûûÓ²’’’ †cbb ̣Aåƒ@zÁçÏŸéÎf...ºđùN:eoo•o IKKƒ*̉ ÔÔÔèÎfQQQ·°¹¹!¬’CăÊ'##Ăi¸´´fd¨|H/ »N>„°Ü6]ø|´¿Đí×!HAZZfd¨|H/˜4iƯÙ,..Nă₫ùó!¬Ơ c’())ÁŒ •éÚÚÚtgó¨Q£h_ù"##MLLhÙHGû1I 0#Cåƒ@z_vv¶¬¬,ÙLû³Đ}||h\ù„…… +**ÂŒ •éiiiô¥|bbb´ïó=zôˆÆ,..f å?~<̀ÅPù ̃ñ₫ư{ºóSiÜÂææfyyy7²¤¤„RoUUíx‚@åƒĐ´¿$J;hßç£ñ¦N„°è¤̃?̉ăødT>•ÉÏϧ/ƒ¹¹¹SÅÄÄDËF̉₫¾w?₫d€Ôûùóg¨|Pù ^C­^eee´́ù544¨««Óx̉́̃I½‚a¶›€@åƒPZEèÎfà¯Đ²̣Ñ…¨TUU1@êưöí̀ÂPù ¾¨ƯÙLă¥vë=Ùi–ÚÚZH½ŒÑ[ Ê¡4tgó¯_¿hÙ¼Ö{²Ó,uuu°̃ʤ >œîl®©©¡eóZïÉ•o@©¬¬„Y*̉kØÙÙéÎf/µ›h?éBé½Ê¡QØØØèÎf/µé¢µ“¸q<]C]ª¨|¨|Œ/-̀̀̀Pù`J€@åƒĐ.,,,tg3—ÚC† ¡ư8D·Ï¥w£Í•Bñô4”₫RºT>ĂAơFV¾3óÇ_ø̀”^ª€Ë„oÓ \̃a0ÚC•2h”¯*ĂiĐé'ñ_¬ơûµGsÆI#U‡˜®2UCÉ«ôtđÿˆvç+’ÔƯ öÅ—9ëóÏ×¾÷dg?]65y¶¾óÓ–ûàpÿzQ¯`„–¢‡â ¹`̣虼¢²éé_?ªüQ†Á1VAé˜Ç©ßµ¿˜‡± ŒSTTT“CS765Å=Kÿ”ơ¡¼èëPæa¬X¶ŸUÇO®©ªàÉ#&%;I{5ß}v~QÆË×Å_¿T₫(2„IYYùđ‘£@G̣ ˆKJëMPáàAơh¬¨©M~ÿùÓÏ̉ï¸?ÍBÂ"‡ưÓỒÁÍ#8J\m¼¢Œ¸(í§̃ïå•Ï̉3¾~É­(û₫œ ©yøÈPàppó‰ˆKj¨( ̉Z ăÅ›¬÷™oK‹ k*2³ £ÆÆ†a¬l¼B£F‘ÓVU¤ñEhBùºîÓY6I"'º̀yOŸï-©£‡ 1½½Kg‚à•ïÀ$Gg\ñ¼óLû–ƒi<ÏÓĐ9g̉’s(¦œh¤Çª¥$<OøưØ÷/_ŒÓœ$1VYFMüt2îÍç·OcY˜‡Y/µ`¥^/`î·̉đë×F̣ ƠÄ'£~º YPÄÅ$~x‘¨¥?ÅPW‹2æ5ăpWõ)Êÿ,¯9IXj̀h }đƒ~d²rsë95rŸó’Ô&êMŸ¬Káh¼Ÿø<-ñ‘¬ÊDiå "ăÔÀO§Á~!ȃ”·oŸÅñ /?‡ÖÊâ[ăß¾x2NCObœ¸¢&øi‰ê¶ÁÊäurú»gñ£ÇX̀IEƒ‹~TƯ eba;A‹_L™¿ËM%Ṣ~||‘ø=?wî¼£¥ÄaI50Ê÷—#iuNª¬-uê²§,|Úxí1猋CO–f¥»{Ÿ+úQ¯9uñzë­¯}—tmÿÉ0,·̀ñ3.o¾,jhÀ03ÑC0íR#éê%$9ÖÉÙ©›ÑÇ'ô-‰x·A₫)ŸÛÂă\Z—!Rx#ÿ ä–(DZÉÉÁ+"L̉ĐØäíë'9NErüDđCR]„OP×t 8HÏÿñøzÀRK+ Qnƒ“üâmZ¾¹µáB/‘VT?à ỗă⯶+¬μâU|½5¦™)èLSĐé9<3„h^ø£¤¯Y™ëlW ´´aö¹È+,>ZEËDV‰”KĤÁ8Hx—÷$2ÄÖv-•[Qê›ÎùøJÈ«H(hˆ+hr‰ˆôXđ¼x—¹iăFv,EG/'¤¾yÿḥ‚eºfKI φ>~¾€­EßÀ+üü|f3¦Á‚k ”¯₫W ‚´(3ïDPNáă[Ê &÷oÈ    ËŸ8 æc07ˆù¹₫=œ„ĂÅq©¼·–•¥Z‡t;°«cîÆm!´Áy[¿^`Uñô£È¸­Ë·\¼ÂưÈz|ûg^̣ ́u÷ù‹²ă5 æ-ïÛåØáœ&+́Ë›‚ºlqØ̀ÆÊ:Đgæ̃»nh±j²´Bßî z¼‹đøYMyÑ’ùsÉk^S3î˜û±Ió–Í\nßÇvy5đó0íưç7©v«–P4ú_—Ơ6YØ·ËG̣ ™¬ØüùW¯¯Ëm[©5êô9?à0̀_Ñ·ËD¥f,Ûø²àgâ-ïÛ)`pv₫÷ˆ›×¦-²5Z*Ó·;hăŚÅ›2bâzƠ` F~åcei=å¨$诀Ï]ŒPÙK(iÔăª†Á¤ƒ̀€±ÀáB‘̣;-b&jË Ư9}W؃¢î°ªÿ¬©AĐ 6Ä£́pgAÈ…®º´†cúÿ#çơß‚‹–ể̀6ûo«ª"9À˜éơ[TY#́à‹’ ×?{-€É¢Yùßăăbµg-êÿ­˜†ú—ü>¯8ë­åÂyg³û©Óz³—Ùëÿ­ÄÇ*#ˆ̣I/ïƠ+W«Êëaâ ¦ư¿ê]ù]º:ÓÈPDŸŒqXđưç­Ûẳ÷ÿV,ĂØÀ{đüuCEÉ\“é”L½¯ṣSSRồ,û+vΑӭׅ=ˆççdÓ×̉8›Ÿ:­=k!½₫ßJẻ îÏ×];wÀ¢Œ̀Ê·k"gG/,²$üÖrBûế€́ÿ̉`†j#ÈơF ßµ YCŸiár¡këal̀\Xf‹? uX×̉ÚVp¶³öOÄa)rA¼̣?•ơ÷Ú†*ñ̃?QËù©ắ][ Òơ-§=æë{ÁTц‹WĂ$Ô&™‘ñ¼Bbàg€rcm}ăYŸsSInÛ$à.Ä¥¿Çb'ëhöóV®ÇNL]¼‰¬̃xAÙåßcbC—/± Ë ¯FḌJ“EöˆˆHÅáÆP²>w1HaâdƠÉäÜÔ^FY£©±ñ˜ÇÉm›ÉnpMƯï³>>S­&ă=1˜!3—o 0˜¨!.* Ë4dàf5|ø3²M Ä`εyÁ’ó¾=Æ₫=¹]qËèän9_¾¶ˆaO!Qô₫‹@œñ;®…|nZÈó=y׫}MSó¿ ˆóX䛂´4_èÁùm9åí£k¶”iÈ€t#Üx̀ăÔ6{2̃³èGƠ½ûц䖽–‚[fl]MơƠ‹çơ±€ĂẺö¹y³{¸x”'›œ̣̣¶ß°®Ÿ·̣öĐ06:”üËÇ ¥°‹Û±Û· tê~ÿÔI C™™§-^sÄÅe×Îd¼í·²Ê’Wöˆ(ëg}ư\\Vª©¢ K6̣”ôÛcÊ\§̣ ­æµ•=€­m«†æÚº’F„•ä±Ù„́a;~UIGEKÎ`dƯ g¤;«êÈ¡ÿu&Ô@µNÂÑFöΜÔ×^=™¶Øöø©ÓöÉr·̣êÚß³3–o8ƒÙØGÈjL ¿³pî́>\~àÀ9k¶œy@W&Í_ááéå°iCŸoâåëJ8¦[op=æ¾cÛÖû ggçjBƠÍŒ₫ki寘¸Ç*8ˆ”o”dEù÷ÔWoƠ•Á ¹úù₫Vi‹n`„đ7…¸·ûZôññiwÙ__¯ñ¯3וÇ̉1ä—Lº»…Ê äÙf§gø?W_‰í4X¸½âÜSovưŒ?³G ñ¾¦;×_ü3²x M×Ăn΅ëûbJ ORôµ{×Ó\„.‹Q ¬đ ^µli®½¡5“]ƯÆVë®Ùˆ7e¢ø¯G]Ưœvô÷»ê#nƯ!oŸBW ß j̣ ¾ ̣fOr·î Û"ˆ/8x·?¢pŸ™̣pûÄ©nO$̣|z™*¯Ç|ñ-7̣ÑfÛ#7„á‡Z±(mÁ½>ñèd—o½UH'Üë£Q.=²ă›|AN€t|Í™ÅÏ€1;~9¥̃r,‚@P^çäQÓ FÎN=€~º)÷ăîÔØ©çWÚ„ÔƠד>B?…RæÏo¬ÎỒ́œq²̉½ºđC~‘ØØñÑÈÙ•lxóÛ`GæÆ½„Ô·Ó̀(–Yf,ÛxơFøâyưú{̉Ăƒ,ĂHA@T*öqÔÅóA ùûµ|p ¾¼8wÈ›¡ëÄ ßºZ˜ÀÄ—ß̀²Ë„0ÈøăÑÍ=[…tÁ`ZÏÉënÔíD×Юˬ̀ô· Ṽ ^‹ăĂ¥¥¦ªLAÉ/Ơ›ḳ̣µÆx¥¾]îJ1]A­èíăGb;íû¼oc5ơ)iv8ÇËgi½R>đ̃â'LCI;5f̀{÷![^N–\7®qiéèQ̉”| !9•ïe?xGöíroÿÉÊ䙃|´gÿ”UæÄ ¼_e ×z­æ‘>‘ñ{<&6é‰ 9êyTà×Sà ÏxÓs§₫öÊlç]́Ï^O””?ăw)|‡Ùi¶DC ¾T“àÛX_ÇÑu®/RƒÀ’Y›T%5yå‰3êq¼-5Dßă©¿0ê-a9êñ̉ƒx鲓^̃“¬¤tBdf~ñêMß”¯¾±‰o”å#Êp¡MØ­Èùsz76@ĂºaœÖd7wí[H ú¬Ÿ¾¹…dÆHFå;̣6eU!4!\<Ó·nËêºß̉J(Ÿz­×æ¿~ú|"ä«Ñ3mG·í¦Ơœ¹,ræ²Noa³ó” iĂ£Ú„œ³A¾Ç xƠ:™¿É§¹È¡Ơ¸t½Ơ[Z/½åää€ bÊƠ¨Rå«'›÷­wÊăøq tïũdÀÎÑc˜ĐÈhÊË̃_OziyE)ËVÖÔ*êN¥‘:³_ºf½h~ÿo•UPd¸È†*Oalµ>&.iA¯×“;}̉cæ *Œ0`”ö*BÀÏûÜtëuÔúvö‘¼½½¤¦®AË„̉‹|+ÈÅ/(© x%tY·Sè~””P+>ÙØGøœ=µË©çª¥ÏY#K;jÙÉÄ2Œ,÷¹~9ÀdÅfj=EVÖÇ̃*_Yå/ƒùË©e°ÚÔ9’¦êë"ƒÚR¾Ê|ôÿ_P¨B3§nhBEä4ôoÜgÚ‹Ư®Û<AüóIQ퀯«ˆ©0Ñ›QT‹₫5lDw³s$=×AÍ¡zfK»ßؼwe}j®î(¯=ơöư‡¦Óûåt–WƠP¾•¾ójº¤·í‡~ç¼)ß6ÛV­³ ̣QŸÿ¾à₫ƒúC=‚Bn7˜I]¾ö*<=¯ô:!üVV{…°ÚBG2vƠƠÖ²a ½É5̀́øRS“—ó Ë#Âlj?ÈûÉ-=nÄ_Qø–›Y‡pIKµŒö®«mdc©ÉùôMLn¤¾<«°´Izl›%đå&7xVƠ₫V̉¥~ê’KzƒgZ̉c“ÑÊ´ăaqG9å‹8äàYÿôtǜrưóö¹6T‚zC;$§¿å‘¡K̃½L#Qù†aÙGÈ/Î(Â}›tƯjU€óƒŒb·öEÿ†;È!>!ü–Å^ÏËuCQAÉl r:73é’₫LE¨e%áÜR³Ñàÿc~™¤AF‰p¥@8b†)UD›=·¦́«ohè¸ïîËÔ§Óh@ù@ÑöøÉ³©zï₫÷$ưH³ßB}<ù&.¬ÄC.“Jß&%½ù¤4m©4/sô•€–ásçÏú¼ÏÊŸ(­¢C ©÷ir²º̣¯5ØîeRr4-,«ª •o€ÈÅ`Úd­„{7¦̃» Ëpw…EüƠÏïU‘¼g¤îaâJ¡rñöơK-Ê+¦æÛ·&a!ÎÖçF‘\"Œâõ4ÍÜ3æ&^̃td|P‘h30ơG!‚—#;Úø™óÀu¾&OF«Æ½Âׯ12ü£G’đ¸ăñotOơËξ¯±Ÿe0„ơÓq|ÄA.xưHIŸ̉awf̣́A__^ØÈ&2Û—ụ̂eWÊ÷ÿ̃[²§©¶ ƠGcÍO]9ƒŸqô¿ªöê“•H*"ë¿>U-£9¶ë́Yj4m9øß)ÚÜA‘“đR@ù„Ä${ïëÅ`8Ú›¿?b·µ̣Ñï†zùµeË–=)Ÿ¤üxê˜Ø6Óqñ }øôENF*™±₫+{ñYÖú²…Z#G¥N$Vè xóS̉ï¶T÷0₫m±³C­"/%_¿´;“~bªcïˆ.9¿Í’̀Sn«3N›̀xœQÔf·EaI’¸±©ITmQâ[[• æ₫>;« ß9Ø®G&¹!8|sáÖ‹ñL/ kp̀{…°wÇ­ vz“öOĐTơZ:ß!dÖÉ7F3ơwŒ6\”&‡y;β«µW²śĐ¯¹M£“å:s²³:*Ÿ d´“÷Ënđ-́f<ê9Ï«v›‡ÙÈ>”à¿Y½ïÚYWÛơ{ÿŒ¸d/âC­8¡HŒ;nêànºÆ̉B©w£e¯nœ¤ŸĐ̣ƠĂ7ü ơ†£¢º£åÑ„¥zïǘÈ’Æ7—¼¦X¬DkήѺèl6\&Ç~*u”FI”z ËF̣ÿ[9³4ù¤Ñü[½¡I"̣ôA“{ÉnaÇL—ù!*ß4£µüodßpÄ%’†û>i₫V+Óỷ,Èç<„èùI:>Îu7xä½iêúÓÄ;Xº´{:‚üÄ`¸Ñ3»´Ùvươư7êÛüÛU/0­ÂZµ¥:s~óôƠ§Z•ªºkp‰ç Èu 'wûñ],Ă„Ơe‘ø̃¯ú’G•'Y,¬gƘ̀ÉÉcăA«ÿR¢ă!±øy¹Ù3û¿UqëJṣJ…åÆ Ѽ/›˜G±t²îåHAQR Îụ́•i¸(@#ÜÎädă>ư^Sßwăèñ#Ơª–±·ü2y»¢Z-߃'÷nåWË(º øârâQ{‡Mîá+‚™tÆÇ—Û×íxÆ-ö¦Rd 1ăMGZzkœv9‹bƠ Ú†}«.sÚù¦̣ÉÅöÛz”~ïd¯X÷°°+䆓©­T­!çĂ'~ÂˆÓÆê Ÿ£«læ[†V.dfn¬­E°Xt”é¿ăÛ)|£º~ï-›Ù₫Ʋÿë~8̃ö̉HQÛrc,ö‡PË[̃w§`®:ÏÛă¬Üß_đẹ́Ö­¢ç€~>ƠWq%hÛç*̣“ÿjÂôŒ7«Sÿӟ톆o©`¹¶æ"í½wdóP~1ǜ f®MA. aŸGÅ#SµóbSjÑØó±Ơ:wçu;1%pƯ-MP—̃Ô*̣â{|3y÷d¼!̉ï‰éhßp›‡̉X•që41Đƒ÷×ơhsö—Û½&m7¸–7u»ÜjµÑn—ĂÿưÉ­²b… zh±±e Ë₫èâ6’v–ÎÙƯhĂúL¼|fd^U§l®EĐœq`–Ơ’»AW¦zöÛ×A>¯5]n0"ü±æĂÙ¹S ƯĐˆ†4ï–åĂñ´‹Ø.å‹»ë÷̃¢uÂÀÏ}º×f+îôÑ­l„\ª£÷Ï»M:jác¤(ôàÀlѹ@ƠXSơ®ơ­†± kRj_aḱ¢.í̉A05x…»!#Ö ©ËR‘¯bp8#î¿Ç70“ç¹¢:ÔBÎ.ẩ.¼° çè´»´G:¤^§ Qđ‰X"ȧ!„ÅÚMưÈ̃¹”"MQÎd¯•œÍl×ÖøèdoÍ…§v3”÷ja­ñ!ñN+÷°Åe₫¡„—f¤ùƠOœ8̃Xe¹NFÀ"wMüwid«(8¶çµô~–ÿànëeµ¢¹¿€êK·ËÁÅÇNY:ª,8æu›Çzʹ‰¯đâµ…|OQ­éÏî#½ÏtƠ•?¡̣‘Ÿø/70øw÷N¯c9Ử s<àÑ–eø¹,N¸).FèÖí¨7Ó̉!Ă}B₫v:ÚœỤ́v€₫y$®̉i~á(UTö&ºààW_]ƒÁø"ˆ–Œ·'w !¸ü⢵¯<§2úĐù‡Á—çâKU3ÏXgIe6 Íx½±RbSi±]6iíz&;ÓßÎÈ7k«mµ.ïÓnÙ_́\l±ÑrÔâË@öđ'oïÓ7=ĐÍs[qĂX€öí~ÄPJ,aÀÛh/[… ¾‡d7vXëw€6œ8Ѿ¦¶®Ê·ÍÆNùÉÉVYùénh48ă»ßÁ”â­ÍÅ'3|GoömYS<™±øNX6|”êl¸±á‚C[mB d/èHjY#yÜ™ !Aª‡ôñQÿxèØĂá»TÙ!_̉@Å;Íco2¾Ü¡¹Ú¨ÈXRøá£¬£-¶îÅ·°µ¹„ßèñ¸ƒ9i†èŸB0í#¶·/5̣Ï¿ae›|ŸásHSEÜơK[vÚMÚ|ߌđó ö¶Úđ#;§upµ…Kß]=¼Ó>mŒ•‘ñ¢qn6+í)(al2< eÄ{|‹T›øÉ¬D4Ç‚b—µ"êéªD|HçD¾ç#Èhó¿…¢ˆÁ”.w,ûú<­uĂfk¦™ă—Æ!˜GơÜ#;¤í$Ẹ̈KÛQ.̣E?úüâ­êô–7Uñ M\_¹ÅiÓE"CŸ/>ÀôÉÄ»•4Uö*Óa0C[qG±Y XŸÈ tkÚ/ï &¡Ûæ±L<…{Ú~µÖD#}‚ Ø3ơZ^]:ơªư‡6a¸Ơ÷ˆO¸¤/l¿™å:Wt¬„ÖƠtrVíàí»m¼º9ËNH¯›,„CJBU”[4"#˜‘ú ßđ…à›kêËßMT˜°~]%̣w8±̃ü¯Í'7¯³²¸™sxÏ#˜8FRiAŸ¨x.lh[…o‰̉ÚZf–Î7đ‹Üh„ÙØ.²ÄWÛ×,Ý¡Ḅ§™‹cx¾èaZÚ÷øă4ơ£íGï=_ñäjNđc®ÔÊu(äĐHKypqỊ́ơfrØÈbB́duf^‡$ÖPÿ««hÿVX‚¨s4áô¼₫"¶U oüèhéÑƠåá|¢%%Åèñ§dĐ¼7į(-@Læª"Híï_ÊÍŒíU¦ÆlÅ%”¯ôÛÇû7f¯Û…®/!¯Ÿó·ÑÉ+î¾EöFÙá ΂ÿ¥1˜Ü®nÍÚ̉±q<µi‹Sg•n|}öÑ­K'ü•Ăæf>Ú•„¹ƒê?:;Ûɹ`¯©%fSñ²Wèl°s÷Ù®e²øPÊü›+欹ü¾©è9>…á˜ƠđudËè·nKdî¾6Ï(—¤³öùỏœơûùê*J™„{à.>J¨¸‘̀‘`¤1ÖÿC­*g¯/́´K¯úgéđ.:Øö„~=÷æ´oKRQ°Áå‰ÏF…5SxÔ’_íÓQÎTu˸¦ êoÓSˆW©nAá…Y_R±t±Rù³¬«~Ũû**ª›£üwüóđ¾^—]Vl<­FoyÛú£Ú*|cŒ¢Ñ|äĐ³ "MxÊ ›Àê^•eˆp_”:º:ºBD^~œµµEĐù3·ÂC¶]O0œc ~@*Æ`đ­¥Â…®#˜ö'D lùÚMÏ(₫¶Ưfëù!P£ŒđÚ”œQœ·×Æ₫́ùÊŒấ‹—ß™;^åvá¨Ó06îˆø~…óEµ‘^®ûDæe<˜G¨Vl·\x̣LQJAvĐ¥wí[ɾ"ăzV>A‘Ÿ>|ÎƠ—i?‹ó~TÔ´Œ‹Ă?{͇×yâăúy"£D;«óIé$tÓ—M»\5yÿƠÀ¿¸sùn†]JÚ9Ÿ}Ûơ„¯À/{fgµäÖ•è9+OˆˆîƒăsÚå̀<¶eûïÛe]¯OÖÔ@è.ư3fÓDÄóäL•“È,«•¿‹²b&á}¦§]véI‡5DEÓx“…‚§;>÷±ú.€£ñáâ‚Ă¥Æ»ưÂdë|A¬ă ï×Ư@½ÄÿC7F– c%úÿøk ¤<ơƠ˜h»Íÿơ±UJZÈñ=Z6/ÆÔ=|_¨˜&cKnƯ=yçƠÓ¥–3oư‡ßÅbÍ4!¾iÙ{e nÚº}U,̉´uâ]÷D›Û䆼 m¢Î,¾ A6.Å®pöhH ¾“@%ËđZăw·\’~ 8yFZ,À÷„ÉY‡Äj>:áî}ÿî8›]çîaĂ×@D2K=·Ùgdä.ÿÏß~ÍbpJĂñ‘눃¡÷+¥'eÅ\ô=6ô¯JÅô¸ÏËÎ.ú“¦"~ês¶¿’›ûå§… |8î¨ÇQµnwEdce-úœ!,ơo8nÇ!ʪóö©¢ơ™Q-Y¬UµÊÀö²A«áʵ•Ȧ¶©…ôL§¦¬4Ø;J´vFâpkflñ½ßî|ú÷FBó²̃‘ˆ3Ú(”†¼6ưµ[r&¾H%È̃$î4ƒ1nÇœ€̣yÍG6„.OCd¦Ë¯Ÿº|A,íF<₫üŒ­AQ{đ®Óp8´¥ôFPĐ¿Ê>lếC=ÂF°äOs‰!?¿Iïµ̣ưzˆü§Ïi8ß̀ËUÁQ;èéæˆ¸¹«ơ¥Ă£¶¼H[¾“ùË\|´RË Ñåz:ZåDæØÔAk–­ä–Y@ÏrcKœ k,đ _đ7̀F¢®{úư»‰Ñ²½Fm7¥n}‡ÖwnĺĂ`Ư–ͱǫÿTbbûï|̣¦ç£Ûï´ÙnƯ2îPÛ?ÿ}º₫:n}Û‹×û$­ïâæ9PçH†gäăûq£ÇkRƯ=ưI¤ú©£{]pÔËCڌ͓.aùˆÊơÇàŒäÇỤ́ô‡VÑÀ›­(̀1Për eQA₫щRJêÔï“ ú|­®úøG/³xú:là₫̀œF̣Âi}-œXÇ­ÍHosǼÔs³¾œ₫$a*T>È`&+í Ơ•ï{öc= [˜¤æÿ́Ơbó„í¿¥PŸå¢ùåQ¬ư²yX[K‰‰\»#§Nå?Ÿ=ŒêFù™/¨¯|¥9o§éôkm¼ô¸{ÓÙR÷)>>oFễÎfsf•á₫P}F˜”ô ,ë ̣A₫1Ăt.ƠmHM|Dº̣133?¹b¸Đ†ôû3KX"ˆíƃ×ö-W2̉P×=ốØ¡#† ̉×¼uva_jùơƠ–K,ºú4ïĂª+Ÿ²zµ™©Æ&Tï)ñ1ưT>)9ª?EQÁg̉‹ E_¹®6…;8₫₫Q´`ơß>T>5QSëwéÊ#ªé¦©qù½ºDAY¥·ß’QTë¾i‰ï±‡‡BÓLôÆ"ˆ̉ƠLđ…cÓ}ÉGËörJĂưkUvîèêÓƠ«m>–ÿbçV”~y™lÖÓÖ?ZêÊ®̃P<“jïưO“¥Ợ~̃d̃,ă1‰̉Ts^qµ¶6«zuÉ„ÊƯ1#B4w9!ƒ¨|6đđpSñÛï_ơƯ±mk¯.16ĐơU3œƯ««¶z¶)'gl°e¯Ù̃íÁ5/X¼¸›Üœ±̃.&+́©¥eÅŤĂc¡â{¾z~›£\®Ï©¨|Q×Tz©"+–Xܤ^'+¦±̃ÆÖnptPù m07™~.à²ÖôyTɇó-ú̉̃((ÀOµÂ.đŒS×ÊÊ•«>WWa‡SaÁØÏI6Ë-I ¹È|ö…+aªS¨Đđ…ùó{–©YnµÁÖæFL‚´âÊ?®æÇÚuëúpaù·/ÔR¾ÈË>»œvBåƒ@đ¨«ª4ÿiîÛ ưR‘`ßU¤SL¦¸;alµ–Â7V|ßĐvZ^§ đ]ºDó0ÂŒÁ^VRG‘çÈX₫6ƠPg8ḿƯö}Yxơr+ªÔ5k¾Ùâ¸eĐ–rPù ”OI₫¨«ÛŒe)ù¥Ÿ=ê›́¡¬µ[“œùIHœ¢{Ê¿~4A$jǶ-₫ËàÙ«(Ơ›¨vÄÅeær6̀~NOÚ±}o¸Đl–‹Û±éÖ(ù©ú({(“tt~₫¢h«¨å¼§£<*̣§ÛÏœ¿¨3k…¾ïwµ’¼|nÀ1‚½±¢'*‰¡”«z¯—º2UO'ÿgùˆ‘<”1ïSJÜö^ö˜víÜéwéê#3Ê9¤±FJ|™_ÙÖ-7¢ăǨjS̀ơŸ9ø?w++é}₫‚ö¬Å”ó³/´íœPù Ư±bé¢[û°6X¯«Ÿ?f¤X˜ơ×256ôôöÑ7·¦@ä$ܼÔ[U\T8#*•]ƒ™eØ@›WơíÓÄ *}S”ysLâSÓ$å|j3×ü29ÎzÑ|̣jC‡ªË₫\˜Ç+">àOÑXó£(‚œ~?ï³Îf%ÅZâ®_䲕̉%X6¶)Zj·î̃Ô˜n>€µ₫?Mñ·®m\K ț֭qvv³fû€ÆLrDđú56}¸Đl¦‘ÿ¥`åɳ»Ù'¶ÿÔ–ä‹ đˆ öírnN%Yñä䇯8J6Ùûsï’÷Îơ¦¤ÅEËÊ_~Ëư(,5fSoSư›§ñK-ÈÓEç´c;Ro|ØÅÍ×Ặ *¤KxyæÏ}'æ²®ñ@ÜŸ©±î]J¹deÿ₫ư§ÏújÏY2@#t…øm̃°¾Ï t«¬—†ƯUÔ603ü~|Éäî—lˆ‰b‡±&¤&QÓ˜êÎï´Ç÷NöP4UÇ¿Ëú”ÿùcçÛeôÿ)~Wå¿C.Ù#¦̃ơü]ósÜ wç†Ê!ÁXj6ëØñdÏ_2’ÄDEÍ#—̉{âql}[¸Ë’ùx¦ÿåơü9&o3ß¿I«©ÕƠy++KđÊú+!>SCƯÓgÎ-%ó|¯¢iĂY†­XJ‰>-ùÑ2üå×B/ë͵$ï?>{¤ 7fÖṭ»ÅÀóó»4V{ÊpNrά%8Ùgº¶•Â@IdèPÏ\­@–¶£!îzíܾ́Cˆ̀0œT]S{Æëôt2 vNj– K®‚CEaœ̉Ø1®nÇŒ­Ö3 %Cl₫UîhOÎÚ +ëvGà@ËOœ̀-8,…oT —£ă–ĺmׯµ«yœÔiÁ̃ÙîÁ½~¦ÆÈ ïí'[½Â*'¯à₫+:³—冟3’™‡` ́Aåƒô›å–ÇÜë.âàèă]pĂ/ëM̉ßí4à &`Ç Ơ£ÄäœO¹3ú>Œ¢<7óuêS‡Md%T”õ'&'é™ơƯ#Á4ÖE]9¿ÆÎNÍ~@È€][Wẉ”çä+zµ2x#äù½ëăäÇơgâJØæ°¹´¼ÂßßËp‘ 3 kŸSoÂÍK†Ó¦Q`xˆ´¸èúƠ«¯†°rpQëûº¯U_sÇ?Üæ¸–`Pù }„™™äùú††Ó§½¥ÆK)÷bW‡Ú̉¸»a&s̀6®[CI› ơtÀORJjr|ÜD“ܤ®ö”7‰êjkV/·2°=\TÇ‚ŸŒ·™÷ï̃™8{!Woª?ó³Ÿ<´µ]ë4Àuy,Û®;ªªkΜñT8YdŒ"é×6ƠüŒ Ñ™d`»Âº©8;·o+*-»àwRƯĐD@\–ôkÿ,~t+d–™ù¦ơ]`Ùbü’F!áw~₫ü©nd6t(©¾2¿kÄẳïßÖÛÚè«+À² *¤¿°²° UÈ×ï³bÆ e&%¯È+&Ë2Œ­Mư÷§¦äk^væçïƠ´&Î0œ¬­HµÔºêà§¹¹ùnt́ë´çRr Â2c¹Fµ[¯äweyÑ—¬́·¯¹xxLgÍT¶0§Œy* ăÀ8ˆˆ~›ñBF^EXz,Ÿ`Ç⬲8¸ ß̣r'êO¬£9Yƒr[isŒ`G=¶ä‰±1¼B£$Ç*r’ê¸æË者¯Y™^§Ë)(›™«ou Ô+ÄÇ»›°´flâÓ§‰qÂ’2b£y:›üPû£8?ëƯ§w¯”Ô4M§OƠKµÔ»p.~MÚª_7o‡—/­¬*(5¶ă)\ScĨ‡́ׯ@Ö›a2ĂbÎLXXA僥±£ÁñÏ¢âïå?êë†ÂÍÅ%&"Ä"4FWy ‚̀¥ƒ™˜˜æ̀˜~Đ? Jª««›ÿ°²± ̣óá{³ÆŒBŒ§PËB³™Fà=₫QY•ÿµđgEåƯ‰ñÉÏy¸GJIˆ² Êé§̣^<:TÀzÜĐØøéK~Yi¹±á¤¨˜Çœ\¢BÂ|£E5G‹"³Œi9ơNÑ›~ZD®®.7¯àÇyf³BĂossq‹r Jj“D̀fшÁ\ĂWZ₫ëöËỵ̈[ɯ_µ¯^¥khj đñÈHˆ!£4Œu4`Ñ•B9D„û<‡Œ*033K‰‰ĂiÓBp8<…¨¨(}œ••¥¥¥“T>„Ñ6líÉÊ'##C_CåƒÊ0&·Æ©­­mlld¦à²dÁäÉ“éËàäädkkk˜G ̣A ŒÆ!C=zdhhHËF><11qÊ”)tƠ3g̉Ù́ï´´4˜A ̣A ŒÉ¥K—h\ù888„aggonn₫₫ư;-Ï6ÓĐĐøúơ+]Ç3ƯùO UØÙÙÁ •a@XYY333.\G³FNœ8ñ÷ïßtÏÿư÷}́éééàà3T>„1}¾™3gñ£Y 555‹̣̣̣ÄÅÅé1’CBB@Ư‚¾löóóƒÊ•aL°X́¾}ûrrr¤¥¥iĐÂû÷ïÏ=ûÍ›7@?®^½J‘looOwÊÇÁÁsT>„1œŒŒŒ»»»››[II ZøđáC |ï̃½‹ŒŒ¤ÓH666¦;›?sT>„1áââ¿]Ц…ñññàwffææÍ›é1†ÓÓÓ/\¸@_6ïß¿ßÙÙæ¨|cÂĂĂƒ–±±±QPPxûö-­Y˜₫>xđ`ll,ƯÍg722*++£/›O< •*° ÛĐøúú­]»–-D§ á·_½zuNN}Åđ–-[è.Uxzz¬•aXPEaee:uê»w︹¹üøASZZZ‚ßêêêà÷ôéÓé+z-ZtíÚ5ú²yÅ/^„Y*°7SRR¿ø={öŒvö¦)//_¶ḷw£ƒ3g΄……ÍŸ?Ÿ^¢—§!¾yóæ ¨|##&&†\½zở¥KÖÖÖ Êÿ₫}1ïđáĂ'Nœ ,@Ϭ^½^”oụ̀åáááô•ñ¼ùâÅ ˜/ ̣A ŒLëíR7õ ”È???̀pbŒ*//SSS«ªªèb¶+++Ư¥‡µk×››Ă|•ad„„„ˆḄ₫ưûÜÜ\))©ï߿ϛ7ïÆT7OCCƒx ”OZZzäÈ‘?₫¤ñˆ•ø̣å }%†°°0z_*!‰> # ÀÅÅUQQÁ`<>wî\êÚÖz–!± 6..‰ÎD¤M233ïƯ»Gw)á¿ÿ₫££>T¨|¤ï¼yó†èZåä䤤¤€?Ç—••…60R˰Ư»w>|˜ø'±KRYYUhR;;»„„úJ¦¦¦48›*Zo½ÍĂĂ£¢¢’ŸŸÍ̀̀>|HÅÉă­•ÏÆÆ†x\RRˆû¤5øøøJKKé+ ÔÔÔXXXÀ¼•,¼~ưºơŸ@ö,Xpưúup)oØÚ9RÙÙÙ²²²à˜……8U4¨| –@w²‡¶¤»^I¨|¤ïdeeµ;3₫|â^µ³fÍỀ̀¤ü€—S§NuÜ%g÷îƯ¡¡¡è±¿¿?­µyîƯ»÷̣åËt—DEE `F€Ê "€Èµ;³páÂ1cÆ|üøưsܸqaaa‚‚‚ÅÅųjÿ₫ưöööíN>xđ ơŸ@ö,,,ˆZH]:âMXX˜¾̃₫ªU« ·•tÈÉÉu< d¯ơJf ȺºúƠ«WÑöÆ¥¾¾Ư¢¡ûöíë¨7W®\Y²d uăeúzơ6l~*̀Pù ÁEWk•Ù?~üË—/‰gRSS“’’,--Ÿ?> &)))ulƒ8::̃¹sgö́ÙÄ3£G~̣äIFF† µ"ĐÈÈ( €î¼=OOO {h›6*2¸wW©“——÷îñŒ®®.½ &8p`ÆŒdR7û¬\¹²Ư’åË—666¶öN1(ÜL.vîܹlÙ2({Pù A p¡êêêØØØ:ÉÀC‡wJ[[øU­Ï¿xñ¢¶¶–‹‹+//“““¼öHKKw³‘]Ç“ ^Weeå´iÓ(o@€§L™B²üc໳³³ĂÄ•¬¹tèPà3­ZµªÓOYXX’““………¿}ûÖú<‹­¨¨xưúµÁ—/_ȵfyyy÷[äv́Ø~Z2f̀˜w0÷ññé¨|a‘OàÍt­JF€¿»dÉt§xú",,́æÍ›Pö ̣A zSE@TTtÍ5{ö́雋/îQöÂB£]m"È̀̀ dØ ¬¬L̃Xª­­yÿ₫==ÊßÇᲜPù H $Uñơơ­¬¬́j#tBô–-[ÂĂĂ?~,!!Aº ¯_¿ªIJH666SSÓnöQ>(Đ'™OŸ>‘%~êëë%%%ƒƒƒéÑa²²²£Ç•e ̣A dçÎ$†äää’´ 8@çÎë4̀  €®®îĐ¡CoƯºƠă(˜††/// ¬$;ooïuëÖu`́ر@öV­Z5bĈ“'Oö9fÀMÔƠƠï̃½[TTDw¯uß¾}À›…)*i(ÜÏ=»víZĂ£»Å‚«¬­­7mÚÔi,‹6¢–——g100PII©cÈæææåË—_¹r…tƒ1̀“'OºQ>đ[SSÓ̀̀̀ÉÉ©Wq²gÏ   W¯^Ṇ̃¦]^eVVÖ£G`Ú†Ê@º+èIW>”ÔÔTTÿLLLœ» ÆĂÇ;::úøølܸñÈ‘#@½À™ºº:##£ÄÄÄ̃|ụ̀e‡)¢óî§M›&..̃ăÈO Ö¦¦¦À©=D€¾^"ˆLôu€z L̉Pù Hôýª+W®üüùstt433s7¹¹¹@‰ºØ[€́‘¾ngLL ø}øđa ½@̃ˆ»ư¡DEE­^½h†¯¯/qÍ6:bûöíÁÁÁ ­—€@åƒ@ ƯôhCŸg‚_¸p!ŒR™2e ´Ư»ww^JJª¬¬ xcrrr¥¥¥ <(¸§N Jp̉¿×ÛÛ{âĉOŸ>%1ün555ÚÚÚÀ•••ơóóÛ·oß¶mÛ éî­íÚµ ÄÀÅ‹ƯÀd •ôyóæUUUơçJJJè´„S§NíÙ³ç¿ÿ₫stt́ hŒ††Qiøøø|  FFF={666ÖÈÈÈÎÎnúôéƯ|#//oDDĦM›<==I4ØvôèÑñăÇ»¸¸444Ü»w/>>~Ưºuô²¦ ¨(¬X±"33<̣0éBåƒ@ }äúơëÍÍÍdY¹ß88₫¶¶¶"""­Ăƒóû÷ï×ƠƠíjVbmm-Đ`àÛM˜0áđáĂDÛPĐ-é`Ï;7''çøñăfff´öjp8Ü̃½{f›››Ÿ;wÄL®Pù 066î~Í̀>`ChiiƠƠƠ>}Z[[›ô;hh}æÆ—/_~øđ!°vö́ÙVVV@Ḿñđđ”——£a®\¹âåå•••µjƠ* ‹=6ß1::=̃' “'O”‘‘¡ÖëhllÜ·oŸ···ĐoÚgK=ÚTÔ €/(**:ĐñŸ›› D7""bé̉¥Gÿ“%T>2€ªÓơ9û̀ÚµkKKKÔµ>9Ÿz <3àʨªªéƠ·÷ïß×>~üؼyóæ{÷î¡ç/°hÑ"à̃¹sçÉ“'àæ¦¦¦@Kú ] „I‡¨ ¹»»‹‹‹“+€ ëââbÉ̃̃̃ÁÁ!88¦C¨|„¢ÄÇÇÿøñƒ››»Ÿ÷Ù±cǧOŸ@±̃}° Đcggg *@¢<==YXXÚ…|ơêPˆÛ·oÏœ9ˆÄto8•º¡<’vbúàÁƒaÆÍ5ËÊÊj„ $>đƒ‰*ˆĂáöïßüă9sæS¹¸¸z9àIåäävíÚƠÑ……@åƒ@ E^^¾ŸÙܺu ¸q/^¼èí…û „ÅÉÖ¬Y“‘‘D8s‚‚‚7nxơêUodOSS3::ºơÂiÅ2%%%(((** ˆÙ‚ €‡JÊZ£ Æ™B>ckk₫®g7Wùúú¯Q]]跘ؠ̣A Z!22²o½}à*>>¾¯_¿g¨Ïß~đàAàÍ7nQ77·>L·x₫ü¹““ĐK…®Â ĂgNŸ>M<œÂ€€€ÇÖ¯_ßăZ̃X,–8%ăÎ;@¡µ´´‚ƒƒÑØûöíÛ’%KÊÊÊ;Öºû•ĐÚÚÚzzz½]Ql×®]lll}[¸‰[·ṇôôÜK€øÑààèÑ£À[ºtéé² .nĐ¿v+¶tƒâŸO<9~üøưû÷ÍÍÍÇÖ}Oälàh'ø^àªffföy…T>BQ†̃«đ@´€«×[7ÑƠƠ¸t@ç¶oß̃£9@Å xQ$nApö́ÙÇÛÙÙñđđô­ĐzÆI"""@SơơơÛ.**4i8₫üùåË—ƒ3 ö 8|Ưlü Ê@h‚đđpP=#%0_¯¶»pႽ½ư™3gvè­mèB‘‘‘Ë–-ûđá//o÷áwï̃­¬¬üêƠ«₫GËf豯¯ï₫ưû555ưüü€¶·5%%%++«uxà:£Nđ’%K~ưúuûöm˜´ ̣A …••uơêƠ¤¬‚Á`p8)÷¬©©ÑĐĐ000·råÊ~Zhbb<¿́́l™¼¼¼î·²'((X\\LÆ(Bûíttt8P^^^]]ưøñă®ÖA÷`â7Đ5¾!Pù ÍAJ-""B́%$$̀=ûéÓ§dßI@VV¶¢¢"))Ẹ́̉̉Ë—/Ư„̃á£G ÉơƠJJJ rœœÜúäÎ;/xé̉¥Y³fu¼m°Jù́Ù³¨¨(˜Æ ̣A ÚbăÆƯ@ç̀uæÖ­[ëׯÏÍÍ­¬¬8Suuú á¶mÛ: ĂÅÅåààđúơë₫……ø¢NoåB,[¶,==è"G»0ûöí¿ơơơû3• !ơơơ¬¬¬~ºpáÂîe/++K[[»¨¨èëׯ”18[­WïlĐ*WW×>ô,ÉÈÈÎ%)k`` ø ôXFFÆÙÙ¹ă®¿À( đưûw˜Ø ̣A €……åøñăn3¤ÅÊʪ›k»CÆUĐH„™™ØÜ©‹/JKKw pơêƠ>+Ÿ¢¢bhhh¯l%$$JJJÀ‘‘8&îÄDt́úA@@ÀèÑ£a’ƒÊ@¨Ïơë×;U>PLwåW;w.--¼cIz p§._¾üèÑ£3ÇSSSŸ={¦¥¥Ơ«ßWRRø¯}6 ƯT€6£»øỵäIDDDHHHëYŒ¨|„:t:Ü]9sBBByyyvvvT·Ü̉̉277wÛ¶mÇkS$ :}úô ̉oơâÅ‹   ₫Èpđ{ÆŒÀ†Ö{™™M<œ¼ÿ>LuPù 5QUUíx̣ôéÓç$ÔƠƠ©««“EÈ…””Ô¦M›¶nƯêîî̃ú<:D€̀‹’¾á;) ÛJ ¾{÷8¿““óÎ;ÏŸ?‡ *¡S¦Lé¨íN¦¦¦^ºt‰́3ú­ 6x{{¯[·xrÇè+Ư,""2mÚ´°­¸¸xx®®®?FÏ033?ỵdƠªU₫₫₫0íAåƒ@ ´¢|;wîlçđÅÅÅ’×+"#Çỵ̈åKëM{T¾ĐĐPà„ œmè̃üüüùùùèZ&&&tE7t©RT>Biôơơ/‚₫YSSÓn˜˜ªªª¥K—̣̉SX[[ëêê&%%ÏL:µûḲ̣̣êëëTöˆ”””9rDQQ]í——WEE%77WJJ ¦@¨|„̉$>>èùM<9%%…øé»wGJ³!Ơ²×z¯ù3gÎt¿ ÓúơëIY¹\́Úµ+33s̃¼yèF¾&&& Î‘S T>B€“GT¾‘#GÏå8pà@HH½<p〵 .DưªnZû¹1oß7n\hh¨ºº:ºh=QQÑ‚‚˜¡̣A Jóöí[ô ¢¢",,Œx^DD„º“öz ;;{PPª|aÁ—N•¸_”—=¢‡ doĈƠƠƠaÜPzzz§Ăk!Pù Ẹ̀éÓ'ô`åÊ•7õDµµµéKöPî̃½kjjn¦Ó0ơơơÔ5²ªªÊÀÀ ..N@@@SS³ûe¸!Pù ùÉÏÏGˆ[´ƒ3̃̃̃tú8rrrèÁâÅ‹;~*..——G] 1̀ưû÷ẃØáêê dïäÉ“Ä!Pù % n9KÜACCƒ>777sssà¼v\h¦¦¦& €ŒdeeƠÓÓËÎΖ•• „Ê•P...„0íU> ô+{(膂¼¼¼QQQ3gÎ$—””DW—¦fÍ5eÊ”ØØØŒŒ  Ó@­aR„Ê@(„€€ø}øđáÓ§O#„®²íÛ·Óơ…‡‡_»vmÑ¢E­•Öṕ¡Ă;W®\ •*¡|||aÓ |ÇcŒIf«W¯ÊǴ¹DË©ĐàjÑÀáKOOđàđS1 LPù %¿Ñ…•Ï=ÛƠçô…««+B˜áGăṿ̣̣?₫ëׯ ,•˜¡̣A  ¾à÷́Ù³NçöÑ;ëÖ­óơơ•••EÿüđáCdd$m dÏĂĂƒab*¡ĐÖN ‹iÓ¦eee1̀s999¡ëd.\ØéN„4‚···ŸŸLƒKù<́mó0غZV_x¢Ÿ 7øïáOœ!|¿A¡|@đTUU'ÒHÏ5}útômÑ¥Y€Kúøñă#ǴÚµ &ÈÁ¢|=ư¢´¡|-°Àw pssß¿ذagΜa¤çÚ»w/qzF»}Ûi &&&sss, •o)¡"¼¼¼!!!±±±Œô\rrr÷îƯ300puuƯ±c[ëîî~íÚ5˜¯̣}ḲÑ[ÓúL ‡E>c˜Û́h™[;S’ØD¹=¦̀u*~ˆZẸ‘º‡‘¿sZ‰₫ơm¼ˆ¦UX«r¢ÇÖR˜ Ïoøå3|©AÇ»wï*++ïÑ®^½jaaáëëKûÊgkkÛzd)_sQöô'©$Äg€v 0¢́éÏÔOˆÂÏ:2‘ÂâpÄ&|Vb%˰ÖwÍđ6Ó_ 4~¾~uXB²LkL N‹Yÿ“=ü %$áK… *¸¸¸rss÷îƯËxö@7»ôÑÀín·³>¾†·nƯj³ Æ̃«W¯ØÓÏZYèÊ—t*,âä?o•ÖF-34¢›=z₫ªüÍë»Dxx“äqWï`üÑ%lf†Ä!OMúp·‘+]É=Ø¡áÊ«0ưµTÍ̃…±7n³ơÅbÉ¡C‡XZΠwí[`<ÿ*v„̀ 7è$₫/ƒĐ#jk/Ámm̀J#ïÆ̃¦ºï£¨̃œÚÿµDÈk8r£ê‚ 1@åeÀ-: sæ̀aW>Öjæ,á́Ê'***++ÛfS‹ë÷́ö·¤¤$ί|́¯qơ·d¯Èîçû$#)2£fpKtvq?ü%29#l™å6„̉ƒƒÓé]s=O˜ôÁ<̣AH±â!+.<ăY›†[²wiÙ_ĂÇF1z̀L\»†z¥çIº1¡do_êk¡x#÷Y…¶Ü` cĂ₫ÀÍÈèP¿=z¼ÿv·ưîâââ´{ÿ₫ưP2;¾̣¥×í¢â“ïƯDHe‹­¤ES³IÖëêRoÓ.(Ù.¨ñ#ë…´j¬Ë tHΟ?¯¯¯OK`[îƠ«W8StÖ<==Ûxjéơ1ÂÂÂÚÚÚP2;¾̣đ»ĐÓÓ£×®]ëhϦ®]ë‰J'""bîܹEEEP,AùøŒÑÇó¬]»ÖÇǧ½,½D¿v…9\@ùø dEÅÅp8âÔ:÷åÅÅ?ÔÈ/ €m¬Öi,ự…l­9D—,ñظqcy9Oyyk¼Â Páæ̣XVJVVưĐTTFxmöÿÁ{ÑMqt¬†kP>êàí½ÁÆÆưGb£75Iojyù%# ÀĂƯƯ½Urô¹}₫ÜjîÂḄóçÖ‰ª ÇWië¶½gÏ₫‹ÿ·{€̣@§W¾]fĂ<æÈx£@>=E”ÂR•¯7F¨ŸùølÇÈ|åëÛŒPƯ €̣Q4><(?†¨Yo:̣·­™Qe”ymíŒƯbbäz ;T–]ÍØ6öL‹=vàï˜r©̀²³œÈáÔ©S\\\½‡SæÏ³t\]F́9$ƉPñ½%+=Ÿ•ñyøîÚ“N@٩ث\¨r¬¡ñăä£n₫‘"2ZA>Ô<ô÷“¢=÷æVذ“-y¬“êη©Wă]Oi~ªăºmˆYY{;ÉG½ƒc{÷́êáZ÷”…yđsÚÁ’=Œáªh Wbpđ©eÖ Ù+Ï&ø”X{ĂĂĂíç¡)ó4Dñ¦‰‰ ₫¿.d§sm‘¨ˆàço/Jcm^."ơ…¨LŒŒ°ÏÎU£́·\§wouNt©ă‘ÂÜÜáQchVûI­g¡J’¤t±&c₫ÆæKN1D{¥¼qe$ÉŒ ¢jôÙà·”síÉơv„±µs²d/çUƠPáẂ¶)fÇfƒ•ưÜmçÆ½ñ·ô¾€7±́)[íĐ}¤c± oL Sœs,{Ñ÷ö© ¢WvDzç{6ó•2½àßæÔ®Ưw2eï^%)Çùˆ ¨yl9œy8™–=¯£IZ].è̀ &=riæJ^EïÎ0eOjY°çøª æŒ$|+¡ÁÛOX¤̃‡ï›7zTƠ«„§slḿàª₫~›fŒN“³¿W==H;|ÓË͉ÂdùU‚—²ƯßyĐ«åQL_:¡ –̃̀·†û₫ÂÿU,¶QKR£rBˆ©X·̃2V–3fÍ^=u¿‹ÑpdDú0̃8;›íª¡iwºrNiiUiƠpdt²ø8ư?„&³âQ^zÅƠ\ !-§~ù؃åú¸óbzoeµÔÑŒ-çͽa¸(Đ–øtQBn|=¿‡…$\™¶‡Ûú¥ÎJ–-T>ØN ÜèQå/=Ö¯åkCÊwåb®‡f£»J_=£ Uj–DàÑmx”öÆå´Ck₫¹…̃o,N×ÅĂß̀5>¼V™5ˆ“sªṕ£ºuçŒX3v̀²àz‰vçå3̀z_¸BùdBÚ œT{Fxv¥Nw»_̃‰Uk4@‚(,lçʪ‹=|-ÓWàÈ©èé³́ñ°äå½KW’¿¤Ù”Úˆ(=ÿÏÉOŸ‘æd™̃µ+Ë'ÅG¼ü¤gl!ÎĐ‹Gîu—$JÿŒË_?zQ$#3ˆù(#1ỡ}qU=uå6uÚứ4ÊÇ\ 6iSkÙX´]ËLV•B•-3˜**ëH]óÓá°|́‡62•«Ç©…Ó u{ë–._ÂÓpđL- ´=º̉K 顆¹±ä ×½EH¡Đ•Úná̀·nMÛ8ḉ ́¾Y­C½ÆÎØ®8i[ư AdƠDZªÏ02¼,úïŒË§=¥Wj÷æü59ú³SËÙ]`Ü,û%D¶Ơéw~ûø…ËƠ瘓̣ŒŸ/«¿wo„rđwà8Jöî>!9‘£a¡ÁŸÅgœú́Œ+8–V¤--´Î”0WåzRHr₫¼¸)vP¬zŒeï@:9¡7åi*A˜+.,¼µ‹©v˜çG½¯PúMÉ̃ôÂÂăØTEđ¢÷zètÿÙéÎ<Ñ•º5vgÊ9„V6ˆ×AûÈTTr%³6Çn1Û´ẠæKôÄOp®ÿ†ÎuđÅÏGª^7ĐñáĂ?ùøø)=p9ƒ¶q—”6YáëÖ‹zü 2Ï;RÉ OÛêNIøñƯ¢È Â?µd¹†à/Ë—#ÙgC™Œ=›j R‰RR¨×đ"B̉ùK¨gF́Ø¥§>sÇ™Øë·‘'³¶ÍỈ¦éÈÿ>Q€ÿÇŸ?Åhbâ¦Nà‹~@ùĐ ơ¶Ôñ·^3×Mu3–=ü}₫Îl›¦• –Ö$¾PKsH¿IUkz¨î˜.íÈH?đû•q(VæŸáêG55ÿ£R¹½¶oçÁ?₫qơÚÎĂƒFÉ 6Œ*$CÖ;…ßxˆH‘ÈÓabœH´H/:jjĂx¤µælß>‘µ Nmȧ='’z =t8¬4qçÅGUåƯ¡m‡è—̉n*ª))7F›¼nܬLªGB%j±ÍWEUJ̃HÑ:[ù±}R>e-“ÈØæ-œ=đ§¡¿³›s`.uFZ¹²U]ëvuun&*«ơVl›æ®;̀YÖGBksƯJ­Ơª«U5Sí‡BÚø Ú@ù₫Ă&ÜfºƒÄ½c èP5&H.m‚„nbvc<ä%0fÅ„>³́½g9M—è5â%£Q&fízôçq:̀Ú­»Ö-·ăü噓¼¡]vRw-D̀8²……) Uǯđ(5s“d? ºyÈ^í PæE똩¨”Ró&ÏoñÚå{Qd²ø9íZ2eShúÛùª¢Ø_¢wiÛä4wÍVIsS×-ÍgZBù¸Aµ(DïDÙ Í.ÙMÆØm0₫÷wÂ[ºÏËö´!åà·c âă\Wn*/ÏLyLUøæ-J>´w$¶Ÿ´×qxƯ9é–Rø‚ëê´Ú̀jBOr½ƠoPœD¹±>̣†+$₫0Úá<Ñq©öܸüW «f[á™q:@eêŸÑ̀ö¡Œ‰^ 0z¾„³æjº6 ÿwK#wJ$˜/SâR²wÖĂx’û^ ª 7hßr[ë­Ø!¢æé5ư¬Ûd±úµjkÉ^³×í„„É<_ă¾K]7á3b7¡#ê£]g Û́KÉ!O£v Ù³/Öÿ™b\¼²Ư8”:<Ü×ûÊ6ö.|~8Éíkÿô°²Ca”ó£kû‚Nß|^RUHn[a‘rưüHëSQ†|AÇ);c_!™|vç¡c±ç³‘‹{ø2۹سûđå…y³­mf_¸û§óÎ_'{øÔj……¬Mñ……l2Àhö‘›WX8¯á± '¨XGZ×nN.ôa^¢€[óZ'Áîn›zë2Ç6uƯÜ]}‡˜9¼ZsêÚFs¼ömu¥|…Ǧ:êºewZfqÚ2vïöTg%*Â!|́”B2p…iÚƒ¤!³B¢f :Å”:%¤”­KS;g- Uă–Ñ´öÖd>₫—ù„³ÂØ:Œ¥Z“́ñ§~¼’ûÂà2[{·¯^7[Ʋ÷®7Ư†ôæ'Íë„a‹=fŸ(‡ÚØtᲃ̣(€̣(€̣(ÊÀo 8ØăGûömrr²±±qÉ/Úúc9bg=ƒÖÍƯƯư§̃‹;vX[[ọ̣́B©åàûŸÅ_ETTôƯ»w™™me‘e‚ ~~"§OŸ¦økll|êÔ©“5)))ÚñáÇŒŒ •¶œÚ!C†°ß”©S§Báåà§`cS»PùåË—;RÖ‹k׸3fLIII[NíƯ»wYnP>P>~¯_¿f¹KKKUUUé6·ö΂ ÚQjûơëǾY]] %”€_DnnnÇÈHhh(ûæ‡₫úë¯={ö´ÍÔ>ỵ„}óéÓ§$I”€VÆÓÓ³OYY™””Ô³gÏÚu¾̃¾}ÛĐ3::ºm*_¯^½z.]ºtûöíPDAùhe¼½½kÉ]»̣đđ|úôICC£½çK___DDÛy]ºtÁ›ÿûßÿ888°ÀJHH´µÔêéé=z”W;XAAA | |´>¹¹¹:thjjª››[IIIß¾};@¾XCâ,,,vï̃Ư­[·ÊÊJ..®¶™Ú¿`‡¿¿¿ŸŸ_hhh\\œƒƒ”OP>ZIIɵk×b‡œœœ–½6̣̃[¹|ù2–½K—.;¶'‹txx8®‚Œa…”€Ÿ‹‚‚ÂÉ“'ÓÓÓŸúÚ‘#GÚ¾̣ÑMmgöT”:>Û¶m»~ư:–½zư Û5vvvøÿ™3gÚx:ơơơăâẫ¾}knnE”€_Daa!bt¯5j–À£›7oZ[[c‡ŒŒL[Nç»wḯííc–Ñ 6@QåàÁêçźر`|8::̉îâẩ–Ó©¢¢BÛÙû÷ïååà×¥‹ßÊ•+åää®^½úàÁƒvŒ¬Íœ9³Í΄)..₫̣åKÚ=xđ`(‡ |üR6õŒ•1&óôơơUWW×̉̉j§yyóæMll,kÓÉÉ© *Ÿ¤¤$KöH’l³S̀ |Đa‰g{[ºté©S§BBB¬¬¬Úc^ÔÔÔØ»êhjj¶µÊÈÈ<₫œµ¹páƒB!åà—¢¢¢Ẫ·ÓØØ[NC† ùï¿ÿÚ]^–,Y¾yøđá65ªOHHˆ}) Lrr2”@P>~;w¨àáá¡7ÅÄİ́ 8đÂ… m¼‡$;ÊÊÊ™™™ơ~oß¾ÅÊáááÁî9dÈ,{₫₫₫QQQIIIm9ưưû÷g_t=C[=Qÿe8::–——ß»w¯á®/^@S'(¿ơ'Ưµ«¬¬l^^₫_o×»wï̃¼ysNN  `[K¼Z£²GƒwáÄ/^¼øW& ŸîñăÇçÎk*À°aĂI3ÊÀ¯À̉̉̉××wö́Ù½{÷nôQyúô)6.\¸qăÆ6’l33³† ‰́pqqa‹¶¤¤ähöÇG9~üx¬µÍ300Ùå M°téR+++l‘4 OŸ>t§üˆˆ;^^^¿1Ạ̣̣́iii_•´uëÖ >üÖ­[?/%óçÏOJJºrå 6‹›yôèÑ;wBaå ­oooßüÓy.́¸zơª££#???V—‰'₫ʤöêƠëƠ«W- ŒeOQQ1##ƒ““³µpçΜ÷—/_:t(44´%‡à«:tèP,ØP̉@ùhCè1èѣǃDDDÚ"ïß¿¿qă¶“=zÄê×<æ h7–¥-[¶>|¸wï̃ØsñâÅBBB?ªÛ·o3G>{ö́ï8<88¸   ÿ₫?ná!ï̃½óóóĂáăăsrrÂÚyôèÑo=oee%¶Pa (m#F&''&&&>¼åÇâ½z“$É`£0))ièĐ¡S§Nµ´´́Ó§OË# Ăf6C±$ÿH¦¤¥¥±́a“´¤¤$<<¼̃^œNœH¬sñññ8¿sçÎ]´h‘'ƒï>ă¨Q£°đƒ̣́ĐnĐ̉̉úđáCUUƠÈ‘#±µtäȑ ˆ… Ø=± Å‘Oœ8ÑÔÔ´b)̉××9qâËÖÊưsÚ´iøÔ¼¼¼ØºUWW711Á§˜É UÎ2eÊ”ÀD- |´K899SRR°kƠüùó:„uâăÔfPÏ›˜§Nº|ù2=q(>×îƯ»[¥KÈéÓ§±|ÆÅÅqss˜™™á¼`fÆ̃}“&M8pà?ÿü%”€vÏ4ôĂïøñă­nb†„„HHH°BHMMÅ¢uáÂ…‚‚‚1cÆ`›̀Üܼù4X>CCC/]º¤  €E+èT CâÿÎÎÎõ¼‰ˆˆøÁô;99•••={ ( úáîåå…í³øøøV‰s̃¼y‚‚‚ Gh0đơơeùc:/999êêê/^láôĐA$ÙL€¸¸8“½{÷ngđIÂ)9sæ í^´hÑåË—qœ}ûöưêXö¾Ú́ed”€NMZZ^Kú¼`£ªÙ[¹r%䯭¸¨:VPÄXÆV^^~Ê”)>>>͇߸qcnnn3c*vï̃ 7”€ÎV¬¯¶aº»»75…تU«î̃½{úô韔<~~~¬g´ ˆ »˜˜˜¦B*++8đÁƒî•““»ÿ>ÜnP> ,{³gÏnf®]ë?I°…·`Á‚¯.ôÓº&ạ̀åË_¾|Ùp&3,{6lX·n]=ÿ/_¾ĐP>&$I6:̃¼gÏ —fíׯßơë×™́±Øºu+b,́îïﯥ¥Ơ0Àùóç*6ø̣̣̣à.ƒ̣Ôbgg'))I¯dË·.^¼ÈîóêƠ« &äççÿÆỖ¼y[~²²² ơ ëñÙ³g'MÄî9õ<¸Å |ơÙµkWCϲ/­ùéÓ§̀̀̀ßZqqq,{8yYYYơ†Î5ëăǬMŸ†V Ê€ŒuttÙ=ׯ_Ïrõ¼ÙÈÈHII©í¤ùÁƒ®®®3gÎ6lËÓÛÛ›=Œ§§çLX€̣Đ‘Á†û& ÖX‚Ó§OO€&áàà X0¬¬¬°CXX¸¨¨¨í§›}bbbõ¼AŒa´g½×–(@}°yG;<== ĂÂÂh-ià¤â4cÍ4ỉÍ›7ƠÔÔè…yP>€&?~üåË— >|ˆË YZZ¶£ôWWWwíÚơàÁƒXùfÍ÷”à+́̃½+Ÿ™™Y@@@FFFûJ¼¸¸øË—/ÏŸ?ÿâÅ‹‰' åø .\@Œ“3gÎtrrjwé?räÈ—/_JJJ¢££/^ 7”à+ 0 77·ÿ₫ í1ưzzz£GVRRJNNååø:cÆŒ9{ö́?ÿüÓ~;Fvï̃}đàÁÍ/T €̣0ÑƠƠˆˆ())i¿Y8zôèáÇï´Ú(ímmmWWWz= v _dd$???ÜMP>€¯#**­¥É“'·ë\¤¤¤ôë×î&(@gaêÔ©?†ëÊĐ"₫÷¿ÿµ÷,̀=Û××n%(@‹¨ªªjïY7nœ¿¿?ÜJP>€ÁÇÇ×̃³ÀÁÁÁ¾2;ÊĐ]ºt鹨¨¨€[ ÊЉ”¯´Ù |´>•Ï/ÇGefËÈpơëÏ%̃‹³[w§O·¼y³ëí»/O+ï߯è̉…ĐÔT6lj›ÍEéÇûqWb²³?ÊÉq÷íËƠ³W×îII½zµëƯûê'ùU÷î• tƠÖT4x,ÜtP>:#ä—OGîââBÆÆB††<††â ‚pˆ‰q–ç7®;cóƠ£¼ÀÈ“EzcƠÔLÚU÷ùơ¡đ^½8ŒºM™Â? Ăà½CóNœHçâqNNÀÙ³ÅS§h ¢Å”€NAuåÿÀ=ÓŒ…ç̀₫¦ed¹W,ÇùæÄ oÁn"ă&XưÆ\”—=ØqdÁQ++Ño:PAÊ;xđ_9¹₫3¡H€̣Đ‘ùûoõeKÅ$’éÓ±d₫/8hÓDĂÉ̉̉J¿Ü\%ƒ‚½&O\µª÷D³`Bü¶oœ?¾pi( |t4*+ïƯwĐÑ¡gkEhc+VZzíàÁ‹ ,ûe¹øPr;êdŒ­­XkEè́̉ëơ«NEÆ&°(ˆ'ÿ)*yÔ²GĂÏϱ`AwŸ­V,_÷ r‘™¹_¸GÙ‚¢­mÏ^œÆ&è—ååà§sÿ~8_Éđá?kpúåâîîî?5—/ŒøƒKP»]çåà§ó8/ªk×b))îŸzw÷̃~~×₫¤øÓRƒ²Çñ³sáí½aåJ°ü@ùh·|úđ_EƠóẠ́<¿à\Îν~’l<vQF¶ZPóäbåJq??Ogç5Px@ùh—₫;º;ƒ´D6N 26¶mÍHɪ´´[ÓL…~Y.Å̉RN«œ 唀vFĐ̃M¶‹Ä~ñIƠT«*Ê?đđvo­½}6cAư•Yàà ˆ®O ü€̣ĐÎ(+}0yªĐ¯?¯”4—··kµy>¿èĐÚưQ[Â#x «'(팀G\]{ÿ–S/_̃óÉ“Œ¾}U~<ªÈ“ÿ:₫åĂ,₫K¬ôÓ;~(K |´>—çÿơWvβü¼K·?ÑnN.îÑå[6Ä¡” \H2è›Î̃¥K—ăÇÏ._₫£ÊWǿ’Ưb±ßu 8¼·́Z¹ ̀>P>Ú»÷†;;÷b÷É>̣ñêJ''́~yÛÈđ;œVC¿Ú[’¿¨Èï;à`ß³¬´ˆ_øGrvƯÍ­÷o¼Œ³fƒÁÊ@;aÄøSơ÷7`¸¦Ç:9͹lukâ›ÔÄ#c/™‰Fy±Sª–%́1º¿sêÀJaaÊæ#ˆÚî:ëV%xôqÚa½ẵtÚ·ÚߪO½Sñđv Ùbe½üûó@’3göø½—±OÎ3ÿ́›<ÅJ(müÇç´4Y¬u«µđÖî(SY1¡,{©EÁêB¤*ak¢áTp͵&ĂƠ3ă„ǻIr{ Ñ ï ÂuCß7qÑXöTs¨ơü ¡ 3Â=~hø]Jê₫‘#¹ûÅ,xöJ(mKq™Ö.Ü“|„ ÔlÈ̃‹ÓÎ`×̓—¯#4´ ?”å1Oàц}FüÏưÖ#I},ĺ`Ù³9¶I_´‹ßúóưáç‡%oÿ¤|ª]_¥&Là&¿|!8¾sÖ•+WÙû·_̀±c¡Á”ïײËløÇoȧ‡~ö¹ÊnïĐ^x¨¤$ăáCJ Đ®ù_ueXk6™¤Ë0[›c²¼å•z}®$ívœÉ)8ÔÀ€œư~½ó‰A’KN’–¬`Ø(DgÍ 4µÿi‹ ’§†ÙÅÄ:ö–&ŸŸăÆs#FLú¾\ ÂÛ.æÀDáó;’C¡\u2åû@ntÏ¡„|K¾?w¦ÿ8çKˆjKiä·ZùúvF₫îVÏ¿øÚa­MMÅ©¼:9ĂSó[SRYY’Á8´w†*6ÑmócưM>¶ ú¯ö›$¤ªŒĐY}}́™¶=${Ä´ơ–lw\d»>¨ ́b*ŸŸ¡mÂX]zÓt›ơ]ĂÄ)Øm©́·áFă“sﻕo˜"o¹·³̉@ù:Ỵ̈q5¹gn¿¼‹o=~ 5 ¿¦6B—Z7·ÅUpËΌ܀F~´•Ÿß£¢jæF?-ÎOx“äÊ‚¬̃+ÏI+TÙ_R̀†̃”±aớ(q9‡ÿߪ 9‰$­e¬mY†5ñŒyö́ă÷e¡º²¨¿̀¯˜¥³đôaíëêỹ óøñ+(TOùjđJ/wUaÎ{[ơ6…KlvlgêA^¥=ßÜÏØ¶{ï‹÷ê³́,'²{'ù¨»$_¾»¶Tå\¾ơ¢²’́fl¤*éF#ö̃Á±½ûvơp­h"%B$éI»"–®ÆÖµ…lI¼…xz̀ûk±¾²û®¸ÓaÇ#/—hø“\́g4q’ªS±—đó£[Ÿ?´D¡ í…êÊ={5¢ÚIÚÍ 2ˆî²bæcÆN«Z+îÛ̉pH_^ ù‰ˆ~g•·ûôí̉|˜%ưl¹÷ûyëóÑưnè¨§ÂÆ[^Ä{KÉ >F -Ư’s,'`ÆPªü;\ưwPÛÊcÈŒ™÷‡2OA(1IJ¹õTB¹ê¼ÊWñ©!¦̣q´@(œr&Đ>²ñ¨&dxx¸ư3ܬR‹È‚=8¤¹÷…ïH'Kö°hÆ{JêceM?ơK¢Í:R,Ñ¥êŒ*D@&'ÏgYW̃°Él ÙÚUUåm'1ÜÜß©ƠUƠ_ ‚ÿ4©_èÅĐTcTL=V†3OºêL€¬Ă,WUîß2Ë¡Ÿ6Ơ6{ơàeüă70•N}Ÿ;¯±ÏWç²áâîåªó*ŸÛHÁ†VX̀kJB4\éwu‹°́á¯ôêëD×Q¨B(Úí/:d)£æŒ-çͽٻq ñq̉Eï¸ób¦̃́i,dK©¬¬,--­ª¤Œ6 ½5 ›eæ½3–éÎƯ›t¯P{„éßàđ]–}èæÓç$É ehopq ´ÄTV₫ï;sÁư5c±ü!¢GT ä·ă…Uêà;‘a¨/³6¡CÚÜư´­ÉÙ¦–Ó·qG=̃s-Yl_4Hz2 ’7±TëSœ†ëĂ¿^™ø̃\Aù’ûTgr¢½±—}»¡¼»Ïi7«bµBùd6[^₫3¦~-dóp–å +5ºkÎêöç(!Ô‘—¤}&Î̃{x{ûđÆ·¬ "$$G’‰Ñ”™Rzüx¬í²Â¼‹ÿ"ccÙ¦"$ÛÄâ`mÁr‚p¢F’+[˜÷Eßi€ öF¨¹!äÅY-œ8TÖ¹¿Ơ¹ƒmo.wǵ,ÁưP‰®öå„$Ó°/^Âö́å7 ĂĐ $b8±B„î 2aè)Ït•s¾˜¾@¹ê¼Ê·ẩ[oÆ/i ª?'ŸªMí/ ••¿®B<ƯZ#!‹¾#™E„SöV¬ó8@̀Ú²væ!!Í5•o&h¨%Ö4·;âJ !ɇ …Ø4øn”Í`(=@û‚£k×ç…Ơ’MơÉæ77Đ 6e¶äO”ôA^«Œ›Œ°´ÈO,N»„•†$¾í×ø₫;û†ˆ÷Vụ̂å6G“­>Bêjeu.ÅơTÛ(Æ\’ñÚ/+4B‚‰É â"3V½øæ¬%ø6.Ô¦Ó± ø7ÿeøl3Sđ´h®ƒzoq^(WWùxj~Jä‹(¢·)% Èö‰̀Ń‚êw÷ºTcëUƠsM™q\ Cæs"Ën3ß?^.#ơ©âkmY×"UM¨«²d‚uÀ,relH\§íOàSŸ´Re @ûẵ½ÏM+ ›†ŒÔ¢Èüi´U† ¦R×ú“p–eÆñ;U¢¤S+.ûù8§–ùihœeÔz· ô˜}&³æ—q‘ùα~ßÍ­,ߌäô®wjÆ&ơÓæS@’PĂ₫¨¼Rơ|ô½7̃_OŒ 4ufåc¸i6cÇ÷SÏ×K¢Ë+FøàzVLHÆ[+Q?³¾.QOi±ñ:h¹€6%2k{œ“uK¶®dÖæØ-&ß‘4N~æëĐúĂ ‚i´ù'ÛCg4m­*ÿ‘B5qŒWC”̣Q-±́USïÇ•>Œ¾\Ä|’ …´/²n—éi²±Å"j£%±¶ MõºS6›̉+m0 §deJ:›ø ²2˜¡ &R–7}ïëȇkU1VÛ¢WÂ[JÎGˆ̉3”íGÍ-wÂr £jÉẫØs°EhvD8₫áHù¬ĐA>‰(Ów á‘2KÅêï̀ưs‰ưsY‡ôŸÑ0 ¿±ŒÉe…ƯÛo9ú4í ‘Íwé©ƒĐ¬×‘V=Mö}y33ÂĦ̃$œQ?î!Úl†c)®2F¥§ú̉‹°"-tỤ̈c̃¸ÑfV£¼}Û]IÑà»sñ́Y›E—Å«¨Ô UçS>Û·Sóµ–go ç¼sÍ6éyµ¶dW¬i±‡6xP?¼áSö¬ç«m… C¶8í9‘,̃è®}aÑS —¤ÆOÅ )Đkè¡Ăa¥‰;/>ªª(ï̃Lê,wúT́aH²t‰¥ÙƒwŸD†P½W>[>CüS̀Í”†³·®wơ8“”ư‡jlpßÔO˜º>üb:T6+˜£ç•—\ô*÷ăáAÏÏF¡A3  íˆñă°)–ÜL€s&ü*k‘Á,́6%o£“p6=i‰ºËb´Ô Ÿ„>¶™³œ¿đbîœïÏÅØ±Ăúư“§\¸ôXQ ÊTg´ù$úÊÚÈÖưI΋1œ×hV«¬VµèduBNµÿêdyæv. üøüĂbÙ·ưĂ¢j7x%×û¯ohåơÓuvÖe÷quu†¢´Gz¹x1vܸ&«Œ|Ê&úÿmºo#jtÎæ‡Ç†zá·VgƯW~̉ú¡apÇOÍÎöWTäû½sø00ø:©̣ĐÎẸ̀•ÙkcùŒv”EZơ¤j±Vơ'á,®¬¦×c ¡±OÍ´ŸAÏm‚%ƒO{4' Eï…Íg̀ÿÁ\ÄÆ|ø½Ê÷ßƯ fBqåkJ̉ߟàÆÀOâÏËŸ́í#ƯdOĂ?2 v³̃$œBÚ&¬ù‹˜}&±Ï¦ÏØ „₫h¾×fPđƯU«¦ÿ`.₫ú˦¬́ßo›Bå̉ż!C 4̣µëóÉơpOàgÂѵ뱣ï—/oơ˜iÓđq³ƒ>²µ™đăçê.(î³ơơŸ‹–đâ…ˆƯ|(K |´\œ]srv+(´̣À²K4øûç®\Ù:ưÂ₫Z´èơ›=Å~ĂÀÚèèû‹sAAå ™}œwî …_}̃[·»/[º°µbëÖ­ç¡°{»_½RØù ÄâÅ®P@ù¾“S!^÷́ÏÈ ÖrĐ™hºÎ'P_¡7Üø˜›;mƯºaù/l-üRÍû¹Œ—£kk>śíÜ‚ƒ6ÙØ₫ºµ—>–ËËÉ@ùåû>DipÏEœ‹BhkbzR•–¬W|m°Ö&ÖÜ¡´ç%«._40èökNød‰óVvÖl«œœ£­̃rÛ”µ|#½ROO (ß÷`Y#{‡î[ê ¬*~®!,ÅXùPRq¨¶®¦´<¶9Z›đ!~~¸đ ?~N®j³Ó3ªªüôß÷–—+W­û1wëÖ«{w'O“ûöá₫Ù¹đó{áüÄè,Êwù½Ë¢â“L'_é-³˜b*Ë…Ö÷#ª$Y÷.’¡iIqáá!Ÿ?P+KR&#Y§Y¿‚ çdªY²¶́¿%K–àï›ôæ‹-mæfÎvD- ¡3ÑÂÓsMB¬#À¬\µ.åúÉâO&NøQ³‰$y¼½ó—8Í”•ư¥ƠJ®]—/_w₫üÁnƯ?húÑ>/UUƯ·û̃_¶laëöG:±̣QđÅd̉_óï$ê+è2Ú?×È2¥₫âÎI[Æé0LÀ¯S‘ËtÜ ¸]§U$i]³j|â¹psÔZµ+Ñ÷6EF¢Ö¤=v,PDôúߣ_ªv۲毙ß g»e6`*ϰ`|g7*{/—"$‚§7—ªÙ»”LÆm¶¾X,9tèKËá!»NG[~"Qª%₫ ”Nj”#$eØĐ̉®¥E9î̃MHK»ụ̀eiß¾½zñvëÆÙ•£Ke%ùîưçgÏ>½{W¡¤$©£3Iß —¾A›ËÅØ±–cÇRÛ·/Ưø÷Vñ‡ i)=yp&˜¹xú´äÓ§/Ç÷ÑÖ26oưAù~<º†1VÉ;D‡êíL½AuK©¬`.×@)ÓXZđPævMƠt匄LfĐÿV­\Azû0WÛ7»oº/»IƬT0̣ÎAh/AÜ0Ơ}•@vÚÿÅBçomŸP?aja!ÂK3—\Ù€¦å€v¯|$¬Ô Đ­>¸`ơ`ơ`ơ`ơ`ơ`ơ€Ơ€Ơ€Ơ€Ơ€Ơ€Ơ€ƠVVVVVVVđû()!ưư7ØØ¸Ă¥ø-{¬X±——€KVVVVV´ª^%>₫qŸ°@½_+ÅZ™|ë}%·Đˆ3´ùà*íÉê«~́·ts.ÁÇKm”•—ơ˜±̃S_,R¢Í:=Ü’X›º—‹®ê Áeie<<<à"´MÖ¬YÇÁñS&$Ịógü®qK!Äɉ~̉íȽ¸vÁ|Ï'MP4Ùuh÷bñï½_eÏR.g£-/ök.Wù‹D·ơë°ĂYɼƠ¬>¢4ÉÇaû3„DÖOúMV<- îî?wÎÛêjrÓ¦ p;ö]Àêk VßÓË;öŲyˆÏ]®/!·‡†§î&\‘Ÿ̀#ß öø\øøJäUƠÈÛÖøæ;̉úơ’.։ˆ0œ}&úÙ¾DF] ^Ÿßa±pÛǺh;•h»MçË(ñ~»±T´ßqÔæT¤¾"í—Y}?RxÙ¿ä2xZv&ºp{÷üt{́$ÜÙß ''¹kXƯ@g°ú€NKUéç>=EHnó…ưKëËTÏ .ÎHI}Ü¥ßÀ₫â"uL¾œ¨åÖÛ¾!œë™´i¡'ẴÛ6¢ơrŒAº„å°;ùfµ†h“Iụ́(Ôm[xrƒ²n=²nΜ́~ÙÛl”¶_®p´ûq›ú ûîú2E3_́p9!yÂx鉧́{ơœâ"Vj÷¼pçÅ:‡MôË8°„ù’“•‘ơYÙîTˆ×ÛFô¢|ä6§’si_÷¤&ûïZ( Å ¬¾¶Oar°µ¶mlÓ¬·Åû/S¿¯KơăeY\ḥ0-Û˜0?Ă₫¬:DÑú~=<ت+.½ơ6¨óʱøÚa­M¬Í₫K¯<Ú6º^ư%i¿Ë|«?¥Ñ¡ôĂ–*ơk5èÅ%KÍqá “¿“K *XˆzII0¬¾û®ƒ%\5æx9[ÎR•ïÇÇfZñIÔ“ª{ÔóP‰ h§éº8ÏEzÔƒ•(Íø{Ơ$—k´#Ö mÉe³e/Ç.™—‚‚müE÷1UU•œœMv›({°c€®mă¹½l«Ó6·ÎûÎ\¸íâ₫åêû—Ï‹*ÏĐÏ—íUæïbVƯvæülUʼªzŸ¾ƠZmǼú1ṣ1₫Ûg¨ µUg³×ªˆđ¡Üm³oOEñúx§á̃ø×SäŨ3nÂà5tÎYÅƯ=Ë´‡»ăë@Y}Ü5—‡“ésßU}$̉[r*Ëyª('ơ4rơXÇđ¬́è?•¾¾{f• ”4°úÚ._̉ͺªEƠơSÑÑ >>KÈdYVû–éí[†Vœyá=IœöÉÜm¬bwºÎa2*:̣Ÿ^>ËȨ9.9ÈH&ơ^ơ¼p³ĂC°BlVOĂZ7û–OßFN:ÜlÅ8ÉÔ¨€ÄË9 p<ư|VÉ*m0ûÀêk³gIJ›|ë®–{è²s+Ûe6xû£~ÊưûJ è-Tø_gSE×ϲ[_ÎEävö PÊnïP¾Cjâđ¾RR½{w¿û¸\¢?ï&ơ~Ĭ:&ßÈ-E×W2OêíP®-18˜¹/Fc€+mjæŸXT×äS~vÓX’-ƒÓùí#¡ ĐÁá”̉u Êt ªÙ®.*È»w'ăÚ•ØĂáq™ñQøƒ½MưïΈ*₫»•C‡K0—mzv™ûßiíäD­n´ăh}ª?¾§rf#{×ÛÇ%¯ª°úz÷êQ7ó$S{u¯3] gwf_×U•}E¦¤¤»×ÓtNî®"0 ¬¾6 ¿@OöÍ £y™c]ûëZLm0Ú`́Ûv g´äæ®ÓƯÓO˜đ£]:-đA£'¤W: q¶bJ‹¢‚Öñ(ûoóÊ%Ÿ?³„n²ï}±%(q™‡N—¿°{ÏƯÎf̣aǿ¯E€Î¥NẨƒ4đg¬¥̃ŒǴ„¡fYE-Y½`̣q•/•å̀pÓ/<=®ØRF<óúCz'ĂXS\qØsÛˆ¸ÊP n·8¶ÀU3%¯̃H°îü¢•Ká6`ơµÎÁ¶dÙ¨•”|êÙ=ÂwàÛüÑ«î¥o–cr|V‘äÈËføÖ‹0ñ\8₫°O“´âä}o“-LÉÓøÜüOu}n‡ùÜn.ª…EIˆơ“FIµÁ2ƒ{ÖÇ3ÂÂ%FAY #̉%w¥ø`ºÇƒ†SÜÉ•z†z—w7‹v‰ÉJđ!D5 ¥œÅÛ'¶„Ư:¼pxĐ_²W…tÓ¢¯«#-X§y¯¬äưW̉Sñđ?ú‘,·¹®É‡î[À2ù*é¯nƒG* ”„^ùÿ°zµ[đÿ]ß¾éó)8á>`ơ} ^Eï̉›vWƯÏIOKù79>ùrÔ¹:3¦doĕ¾–ƯĐéÛHrí..¼—~#íßëÉÉ—/ÇfÔ™5ÅgÜ¥ƠÉ8öu .®úR²ñḌÈ÷«;çïÍjU¯å­èM~₫?/!ºKVTÜ“¯­ñåQä₫£¸̣H é/œ¡̃T…®êUÊáăW>HDm¶™F?¸lĐÿ“÷~Q e"½9¥2§3A} G —ÂỊ̈/rsâÙzZλ²™1›%—Ù¾WïMz­OEWÖ(K¬A¦+§Œ̃ß8³)0…{øÚô›̉t÷Î*æ»Á́Đ©ăŸZç{ƯƯÈwơÔ!=̀‡è£ø8jr%‰H ;#)AôàJxd »p$˜Ï[´mî±ÆË"D ŸS¸k¦Ø.¤jáb*K¼¸˜’_úLB¶ƒ†V‹®F·tg«_g$¿v==ëéƒ÷o¯=ùù{Ë)©¨iêŒW‘ƒ²ˆ¢À±=¨—¬Y:«Ơ÷:éÔù¬»yYwïä^]t+jÙ09eü±X̀ ‘é?NÅùRMøgÏ_•#!̃7÷Ï'fç=¼“+Zz\]b₫Tü±¬ ™®K¨±^f†Ä½ñÔC=ờÇ¢[¬ØÛÈ•¦ä¹Íǘ5\S›Hªđ„icƯ’j]ªf?‰íXLÜfëíw»(ôî-̃GL¤›˜¢₫4eIá)3§º%ƠÜ·ÀÊܘ}ö²¹Đ½³ ÖfZ¿]®Ë̀êM *qÙm3µF³º“X}Đ$¤”ĂỈ›f§%Æ$&₫ûßĂ'ϼ§̉øG̀Y9_Yc”ÖhÅ>u;ó“=mN’6½¼s2"́pÊ­Kÿçñ¡̉fN^Ú“'鋳÷óUé¿åÔ½¼d9×°½„›HŒđüpr₫Ḉ¿ƒ#¯Ư{ÿúÎó»„„²CôÖê2T]ÛwôôÍDææ̃•₫cœLŸY)…³Ê%́ß±ắí·Ï$=/å2+dư¬?¿$OLJ 0P ăæí­ăîFÍƯWwP“r 4_¿IÛ²̉ăëzù©² ôPPÓ‘m¬@”äf?¸ÿ€ös’WÑlЬ^ù¶à1#æ^2}ê‹­9iư]eïr³oß-xÿ‰›}FƯ¤û –W$ØT6³²s=ùTÅȬ‚’bư¬@C8»÷×d¯5éÛ:m™÷´¯‡ă1[lÖÂH»)ÎZ|ô5ŸĐLj¬—WĂ]lKr_ô±6´©;ϤaxVŒ₫ç“sGÔ_ªÛưd¡­FY&¿¾¾9ü‡¢ùf¹FAƹơv\´Wg.˜A¡¤¨R’ÁV’—¤½`¬~ñPô)a®ÜèÚ¢®^¯ñ—3Y?®cY1Út̉ˆ¢c‹å××íúƒ“‘•]ÛTkäsgß\fâ‚‹ËƠço«Ù#;R_®4ÎzQ»º—ßtƒ¾Ié ̀xâÎVưMii©À5:9…•´>*èimH#Ï̀}ŒqÂß”å#X}?Ÿîc±‘Öä^AUï˜|ïoUÙbkÅÖo?N̉9̣‰s“{7—TÆávAÉvAßvÊ~×ä&w'’ÎPT;uWÖB(ÙKiÆÎl\OÚutE ]Wè*£ "éÅøưO.¬­ˆwÉvWµ™˜åỆŪ‚¨"} Óä“=ơp›Bœ´R·ßĐ̃E[æĐÍêµ|l:5»Êr.̉&ßÿüĂ3Ø+p•gܧ̀ë…®|¤ë,ĂWY³:™Âü󽯳G–¶KÓdÓơToưñqV¶uåăêE;vÚ˜#¤ë~À{́ ₫J)Qœe§¶ô\ü–Ç¢´¥©&£²W [I 2W Bă#œĂ‰ØF́ dº)Îs®=«È»û'=,M#ăƒ,4‚₫ +Üh@Yb̀ÛƠX/¯»j—ägˆ₫ H[7ư¼ëÑŵZó=µP¢–1Đ[t<Ëuº('*Ë?i1Ê×o<¦ITaỘơÍyᇠ|3ă^Ơ5ŸëhÑU WÔ³«­£®¦­¤$'ø# DQ\ë’Œ~ấ‚üüèÜ{zÈ—ÅÆÜ·5”û¦GhƠ“à¾#mûê,½H[ƒ¦Ôj±æJ£e]Ơ®;ü®Ï̀©ÛÙ^!º8An|yE`î̀=ذÁ1ט|ó.< eŸo6ÙKsÆÎë]éØpe=£ó ̣̉RQtvÂĐÉŒ–¸égó×®I”›`K>f²ƒcy˜o ăÈV­ŒÆÊPv!Ä(NG”¢gÏÎ1h½{aj̉ÿ—‡ÚE2Ú5ă/g;¨j!Ơ…älT<Ëøïæñ#¯½{ûêc¶äéưI*§`Olêá Ü•%ư$– 3§)Úă54Ôd¥Å&{œŸ\[×Iù»fi²áñçOUÖÆÁÍƠ[!ªr“à›á¨§̉^¬‰Aë³®Ô¾|{ws ṃ©;%E³ÙÏ|½t7D‘FÛ5M¶]Gæú§NZ®AU\ºaă‘aơñr °ª¹"rÓv¤Rwê‡QƯ›zsJæ†̀¸Ñ«ăqƯ»ÿ ÉßhÈ´ÏùúM \­hF%Kư÷±ƒêđo^ß¾ơ¡Ño^Já<êáó,=1îô¥¸³‘—3³ăĂđ‡=˜̃’SWLưfä’FÿưUzû#iƯ?ͦÑ­¤('*93âầÆùú#4ûl(sW/m”{₫víŒK€Ku$J¡̃ %́=ñ¯ö_°Çà^·×p·Ó4Pej̃-)EH±b³vI½%F´\¶éíJÇ?WÙL¾oƠ”––´ƒ›éÎFnu”ˆä§Ç R₫°ú¨+đßyYñMÁï•Ö_ YDª¦Zß12¤"{®«¦¢ºÙpEY±Ư» tç*đ¡=ù¿¯'93¥pfƠ»́Óïû;&0%2 52€ƯöØv!n¶¢ ê*0 JaôŒ\Ôàxß¾²‘—Ÿß&îSŸ Ï̃¬ÿ$í_f½!@[" É£®'d# -jRĐ¼·Óe·§¢ˆåêËk(±µ¶u1Ó‘û±Ô ôªk“qÖÜáî=êÜjN>nÚQö±¼̀O^ßhTfœ ºñ¢[hČڿqH‘ ”êäyø³½™£́ù%ÓqáOQ¼¿qߨÍw¿¹qk²÷ÓÉ̃•¹×9r6a¿₫Ôîî3+â‚ïÁo|„̣‰ AˆÑéï•¿Ç̣3 N*Û·/ẓ$»̃H¼–,ÉÈœà[ç₫ ó̉±M€oTºzơÓỏ”–– NnæăQmXÿÖ«Jw@ùÀꀖ2n¦T§‡ÄÜu=¸1á&NîaU’́ñcçBUơ½r¯D×Tå©VÅ´Ư‹˜ư0=3ë­]V vkû?ûë̀ZZ5ˆ˜mWËADÑ̀~₫°UƯbœFLAéËÆ ½;Ś0‚Ÿ›)uª¢êöê(T}fÖđŒ6̃Ù÷ç¯À!³́$¹ŒvW=º—våR䟔+AøƒĐÜƯù>Æ}¼á³ñÓÖ7ÚDé̓©ÔàO“Ú¿ôÔƠÏÏJN¿~F<:ï¸zcF>ɱ̃ׯ=—̉¤̃qƯÏ}Z…đÓWwớ%yMË øĂ–ëøs7E?ư{îà{oî]"ø-P~æhù†=ô~ôWc¼œn«Z§ƒ_Ơû́œvSª¾ơư0|ß¡)_/ü¢LÓë`Tª­j]ơ.;ơ¿"a¡‚½e¤© XZœe¾/X}ĐYáp9 æÿ́ŸH_ɾ¹­×i ₫¨}K+8°îjlÚ$í( Ư º¡kmó7ơîXo5„ÅƠËO©“…?´ÜL\|Ÿ4å?øëẠ/ ¾¢Öö‚ă˜º¯ pƠec×[o]M¸~‰C¯r ,ÂNŒ¿‚b„W¾¿[%e¸ ơKó&R ‚†Î+ '1áÓÜô‹l³û°B"Q^¤U aÆû:»P…îú ™EóÖÊb\ØÚ’Œ—­mœ+¯½º­5wB)o±eFH«Ÿ|f”ƠÍ×ëÈs—fFûƯ$V<œÅ€́ß|Éđ›1×­5 ›î;mxÛm±Àâ€Đkº‰^[-9—]—»Äÿ²'q‡#×ܬU‰ï™~ÅSEùñúèÎÇ#RƯ§Ûé=«ô1a?”Î~ZMßÛ'Ï̀ âo=ás:7é+¬ áIÿËæ̣5Á(̣đ FZ›˜^ü'Û~Gû·¤µ×Kwiµ̃uQ|º±éB 3¡5î_@nŃǼư..§ĂŸ³E‡^W“78è}|‡TÇ5Æ<å‘)Æîÿ!EçgO$ê0‰wƠßyN­ÙJ[«ir™^û$7ϵaÏ6*óơé̀́q§Vk ô๷<ÀÛ$Ÿ´[°>-ÜA!Ü¡g‚¹rvM§hj/ªÅ₫’€‹g…}>e#~0 Ü&¸hŸæÛm?HGâ¸üzDŒ„+T÷ÿ øM×÷Êư§ àªÀ º&áMĂÖÍv>~}±Äơ—ÄăëîRô>ä1ÿúÀơdMÅsă)”¬­=W¦”j$¾¿¢]Ê 4cv$Álqb™ÑCÁ¾.B*EVzwơêmQWûj·&}¤3oƠcă,ß‚>¢ÑÚuTJlÏ ±™{Ä›{ôïñ‚ṽ©ṽä}Z;»̉æëÑ•vk>`kAÁV¤!?úæ…Đ˜§O££¾p! ơ<OÏƠ_¤)Ïßµ*­J«ÂÍ%ñÑ7Ÿ={ùåKrDFÏÀ!4m“û¦yóMåùºî7MÏ VçD\~øêU~̃›'ß%fŸ¸>_…?)øØËÚ&júi=ºä¦₫¥ßm₫;wê#¶K/‡ƒ§Öî8œơo>ˆM]Dø¸~ÜFA_|üP_ªƠÿ|~ÔbñÖ¯ù·lƠouV¯­Ï>)1k=Á¹_q̉i³IÑÇ–Ø}à¿UÍkGtø~ÇS­~µ[ªơƒ=‚È8Ư¸tˆ£i(y|q“Í₫ À½çv¤¤¼h»Ï>à;̣fÍÍ÷vvRí…³9×₫í́$àÉ6Ïô%ѱ!„Ễâ'Ï;̉wöV‡"½!2p¿2áJh|ÊQÿࣻ.ó¸]ºÂ1p¢J$"ȇ=ö;yÓă7̉7áøÄ9‘ 9nÓÄ ơºå­üƒʦ°a›ç:éưå[/hîfî:°”Ă {_dRàÙí£Û¤åÑmÑbúK¿¡mùùi.Ñ.}WçÛºøu½¯ÓÛ¢Ÿbë®ö±>rè0™<û‚ô¦ûƯ»o ï”]R¦§ LO ă!™×®¯ïé»0[³€?v%.bä{å̀ -a›¤À–¼Íù‚ í½Ç a±èST!Q ¦Ư¨ªƯWWÚ]FJ@ù^ư₫d0¨¸ûÛí8˜Éʽ&¿„S³êo—ܼJ–ë”v8ưíß|´hF:‚?hͺ¾ºÓ¼ ÍÜ’)Eˆ·ơ¿5Iæ±j,½¤KAÁªúz†C”çÖßq Æ5 È%QDúO•¾ă7Ëéè:‚âĐqÏ^X°6°3믿ă¬B@kb\[\²o}p¶¼>¸éúßhÓqºM!ß®œ¼ºĐëîăåöîN¾æBTßïo X¾‰ ăÎZw¥œVj]@®¬»‚o:êñv^\àÛ½̣íÆë¥[µº¢ }₫Ạ́ÉÙEßïj‡F-gzê«|G'v :ô“öBåM8ĐO¨)É÷¬́Æ>Ó¨= ~W„̉ŒĐ]½v4ß“~ÇS¥—Ùt­Jmé~¤ØËX¸lHÅfdžUËmÚëà±Ø;ÇØí!rßáæ{+;)ºŒK;£Z,vÙº‘ûYÈÿ¢vH_rS¡.äÁ€Ú¦ƒ₫+ÍnïIÅlÙ¼_­ˆº¥-âÛZ°¬ºGÍÁYZƯú‰«++%Œ˜˜©ÿâóUŒP{ —Æ_¿̣8#¯µo1 ‹e6ºr]oßqá¡‘±Y…ùèïrÈÍ6³6Ơ’́ó³â/GÊÎ'&§¤¥9[k2÷¯ç¢÷ôTæ&†‡=ËÊA‘CZMw~/Ç̉µ“̀ø;w"² +<Ÿ˜ˆ́Ưù‹TQYạ́'q~S‰Æ6=ăă#DáfëZưẼU¡Ó„úöAû¬‰,ö²-M{ÊNúOUH»«¾YUчô·qÏî]=}3.đ-: Ȇ¤ÂBxDùŸcæn­Ư|»³ö—:„:À¶Àäñb±Íu}È­“aÙg5ïnnëÀÈ󡟮Έ©oruÎYôåC‡_ÁöSªïy%ˆJwLQÓ—~ùúáGJëăÛơÑG1 ïd t˜·ÂƠ ùà;WÇ}ïxz¸ÍS¡”ßêëâèÜw71Ä·‰Ý²¬­N&íôơ £Üÿ‹:³dI`eë®n¶2„VaÊs-‘ư­¯•'ÿ}¿FU¸]Ù„œ í¬èªü^"a%Ui}z]Û¶ÀXŒ€í¡_™àRéú*bĂOk₫߇åë€R₫*¾— wœœ!#¶đĐ ›[ˬpwÏ8m¼Ö±ä³ót®cöwrüMÚƯ¤¸ÑvŸ÷®pFÿÙ½÷?3Á¤ó[–¾ßµđƯ¶—¡̉³₫» jăÏhÙ%Úö©wEÂúvßGË#(ÚÙÎ AîïqF÷¤à~y“L]ÂFM»»D[ºN'„mP9ég:©úÜYDÎ2n¿ÆAăªềmSơg œïm<ĂăC¬Û¤V{—sPKܵ#Pß—Óó'#wrNµfÏô„ï°lí^HåÀu/+MÁïÏưí,öåtK’¹bI¬!ÁV—G¨pÎïÖâRpƠ³g‡4EY†ü›–Ä*WfO¼‚¨-Ûi¡Ç‡Í₫ïü¿Ûëqª\¼Öæphơt‘Çm‘iøCl× ² ÙOB¾?á-—¯:j£¯>kâưưˆ§JÅ]V~đô¨“ ơF„Ơ–™¨r"Meùob|ۃѳiÁ¿ ïÙ$ç<ăsZÛ2#Ï=yÈÙn›í₫ßă¯)„ï‚/lêx b$]̉CJäÍ÷·#_ë1º[h2aKïøu&̃Á/×I₫Ưws̀Øwqå{Ÿ<äĂ₫=̣FNƪ»…~mí $­j‡& \NÀÀËú¨»MêhI âWqß.iv·|Ç^7lRîp6Ă AøU+è´;Ö—‹óƯ——yhq ăÜ""Ư÷·8±î&!₫ä¤CѺڛ />̃°V®mç"GđzÓUø̀º́PbøëÊơÅ}“i´s"ѤÀ,-yÏ7]é9°Ăœ¸ư//¡Ëê^À`¾Äœßè́r7çỎTưf™‘÷níîsĬœæxï|øËµŸsóˆ§{$µU†iöÛ”Ü<ßÀ-ÉÑØ\‡0É›;z;₫v=&y«Í>V›{Y"6ÓÑuf÷ûO•c̣;tèG:éæ8­›Óë"!eë4~·-†W̃d9:ü₫ú ÙÚi Ờv¡CÙ¿„~Àơ ¶Ù–êHjbçtÜ~ï7{f*ưv7Ig¶W):ÚẸ̈w|¦ÅRôë×hñưË toỡĂ×U ZœZ¤{gƯ}]#¶_QÁ*“°©në>OÜv½™´0/3'sí³eưú›~CûçæMH\ÿ]́Úå†kÆÉÎÎVT˜lnnq5àú8œíÛƯhi)Fh瘶—©uBBÂưû÷]]] 1«€¤Øíæ†m"¿§¥¶öô—IIÖÖË|ư.“Ÿæ»G¼n5†}₫l!×÷  OiiiUU=- -™‚›ÔÀHËơ!j;.­Ü)íÓ5ă–2F;*/ÖP ×Ơëư–I9´6º÷nÿ)SñI‹‡«{gGPÆúµrƯoÔÆ„3‡3ˆgè̀•'C…ëƒÜ»Y>¥]ñ)D^roÅv[}xjăĐPw§êêư`‹z·â¾Êä Ï\¸₫‰î* *ª±p sçh¡ăẫ¹}Ó̉̉Î́o   pww'µTµ´´ĐÑѱ±±=}ú4>>~\fÙMi)öÍx 3''\Ÿ$ %¹å«>|ˆZ>t$(èªÏ9zzè¶÷÷ BïA333Ộ :8,»uëœJׇ RÓ¨ºæ<5lư/¦±lÅ=E)~¤6ÿḿm?¯°_ê3Î)i‹™Éêô! v²mWY„³<]âÑÇ6ë´=‰q™wöÊ-ØG¼¥èÚh-f²̀Çp "HW}Ë7W“\fªq#¸²×»Í¦zöˆ.pïuåv]Ö!₫&ưÊ—œC₫éq}1uæŒÄƒm½kÔß=dMÜ£0fصkWqq1:‚₫µ··700`ffYÈ UUUWQQñíÛ·Ă‡oß¾}<†“—®`xAo¨¹sçÆihhTTT²²²@–1C\\\XX:’——÷ôéÓÇÏ=d€aq}ía9ư¿FZ‰˜w Ơ5₫j_ˆÈƯi,Ü99É&¯gmÄg̉¯%pË́À-½n*~:áơZơÁ–‚ưå¶́ô¶'Îz…Ó̀;¯Îsh£ÓgŜלê´Đzl­zÛĂ²ĂzŸw’´«{×Ä ³ªkVú!9†C}oÁˆ@U22§¥¥åÈ‘#“hæFWW799”!#"""RRڟ߿߻wï’%K„……A4ăMMMïß¿¿víÚ̉¥KA™±¾¾~çx]]½½}nn.ÈĂäú¾BØ8„Đ%®âMRllĹ󗟾µ/fà••’WÓ˜¥­«-+ĐGj^㨶=”~LŒº÷đyræ—âv Â#«®1Ëx¾¡¦߯Û1piß!́µ±‘_G¬û1M\rl¿Eûbj>nŸiÖúÓ«io)ÔøS@¼k1ÍTÇ£M íeQ+BÖж-nl ™Ư=¤Úäù.Çô’*“×x<® åÏ•đ'qµŒ|HaÂ+«¿Än…U{?̣kí6̃đ:qëuA«Md•R±h¼†ư}zz&©Ñ J½´ï„+{}Åïjø½¸¢Z ‚°ú‹¬¬̀ DØ̀Û§ïäàÚw̃À̀w™£®®Ăuµ5­¨¨(..vuu=pàˆC.XYYORRRΛ7ͤ±Ădl‹M‚-*û‰——333¹$ßS0~ZŒjjjÖÔÔô˜éèèˆ̃k@æ(((Ô××wNÆáÅẮúˆü›’Æ"tØ8ØpMR·E‡~o™µÑuVßÇ$j»Éµï­Ù Wl2́}½¦íf;·ä×X¾³ï˜l¬2ÆeúN3¿̣=èĐÇb:QË'iƒEơûôü1I­¿Ë©²b:ô²Hv³,Üc…¸¸¸W¯^ơ˜ùưû÷3gΘN:$"} êêêˆç ¹Ơ††† 6 6c,)%%)¶΅'Ë–-«¬¬¤¡¡QTT\¸p!\·¤̀¹sçzm‹Åb/^‘5LOï;ưëׯ̃̃̃...¼¼¼  ·ëào³`Á‚^ç755éëë—––ÂWmçƯ»wÑÑÑ¿ÎÿöíÛ•+W–,Y¢®®*ưụóóZ[µ———ÛÙÙ•••QQÁk”D),,\³fM¯‹››ï̃½‹B L©¬¬tuíư?“¥¥åÓ§OA%×c GGǾ\;;û¢E‹₫ûâ÷4³fơY¡¡¡a₫üù%%% ̉_GII©Ó6022¢nÊ‹H ‰ß,Eo+ssó¢¢"L™4iR_‹‹‹©¨¨®^½ºlÙ2 ÀơÀ¡¾¾̃Ïïw]>&''ûøø¬\¹ä"MĐSSVVÖ×RÔºÓĐĐXYYƒV‡̉̉̉ÎÉüüüøøøĐĐP333‡Ô••%nîƠ+555[¶l9zô(ÈEv˜ߌ¿RRRâââbmmMII r¸> ˜˜˜đóóóđđêpâñøªªª̣̣r|?₫Dmƒ““7%eèụ̀ơơưu>êôĐüÊ„6jkkŸ°/›Œ2¥¥¥>>>¿Y¡°°ĐÑÑqÑ¢EÔă§¥p}0N™:ujdd$¸>2ELL¬¦¦¦±±‘––Ô ¹'¸>²àܹsÜÜÜsæ̀AÇ‹‹‹%$$@“±GFFúœ„h.®Æ)sçÎ Ư±cHA¦đ̣̣¦§§O›6 ¤ 50 Ôđ$ ÜƯƯcbb¶Î6***ÀơIĐS¬¤¤:¸>§XZZnÙ²ÇSPP€䈨¨hff&¸>d„ 8t qV¯^=₫|¤-²?///h2V]Ÿèàú`œÂÎÎ.--jnnj#èéKMMHjjj(ë#q^½z…>ư:Ç¢®ơUNŸ> :¸>¿˜™™‚ë#S¦L™: ”””PÖGÊ´´´FFFvÎÉÈÈ””eƱ±±́́́""" €ë€ñ‹³³ó¿ÿ₫ÛÜÜLEw:ù1cÆ Đ¡¦¦†h.¤ jù\\\TUU;礧§kkkƒ2ck×®ƒ®Æ5LLL:::^^^[¶l5È99¹ººº̉̉R...Pƒ¤À`0X,t MÖ®]ËÆÆ¶{÷nâ™ï߿߶mˆ3ö¸sç!`àú`\ƒú=GGGp}d¬¬́ưû÷mll@ ’‚––¶¹¹t A=––G<‡Ă}ưúuÆŒ Ï#""‚››:(p} :::,,,ׯ__²d ¨AvhjjÆÄÄ€ë#50LSSè@jxzz̃ºu+99¹ÇüGM4‰’’$cxyy999®€Vö́Ùăêê ®166^¾|9è@jĐÑÑAY©±oß¾»wï₫jù¶€Ämü€±A~~~JJ jéA ×@+&&&çÎ[½z5¨A^hhhTVVæä䈉‰¤--mcc#è@:,^¼=)/^¼èu)êúÖ¯_*16nÜè́́ :¸>º¸xñ¢ªªª££#ó$;fÏ}ưúuWWW‚t ££ƒh.$z"¤¥¥cZZZ̉̉̉̀̀̀@«±DnnƒƒA ×@’’’vvv yaccăææ®¤ §§×G $&&%''ÿ¦0üæÍ› ÔÔÔ ×XÂÑÑÑĂĂÚj¸>zrôèQ4daaj ,@ó7YYỶ̉̉ é¸>ˆæ̣×™;w.++kyyùïW 655¹Æ7nÜ(..†Z»®€̃ỵ䉄„„ôÿF^XYYy{{Ÿ?¤ ˜™™q8èđ· [±bÅóçÏÿø)¤¥¥åÑ£GW¯^ÑÆ X,ÖÉɩװ=€ë •¯_¿RPP€ ä‚›››ˆˆÈ¹sç଑ŒŒŒÍå¯đưûw55µ­[·₫øñ£?ë_¸paæ̀™¬¬¬ Ư˜ÁØØxûöí’’’ €ë OæÍ›çîî>eÊ”·o߂䇑‘ÑîƯ»÷ïßj̀̀̀ơơơ Ăh’ŸŸ///¿té̉‚‚‚₫ouæ̀OOOPò°cÇFFÆ;w‚®€?àààĐÔÔ$''—‘‘j ̃̃̃¨c‡ $ơüñă;;;H1̉|úôIGGÇ¢Ÿå{DEEáñx###Đplàăăsï̃=ød àúè/kÖ¬áááø̣å ¸²=_ööö+W®¼|ù2¨A ĐÑÑUWWƒëQ‚‚‚Ö­[çååơưû÷Al¾{÷nwwwqlxäÈ‘?‚®€`ff&##ĂÍ͘˜(%%‚>̃̃̃üüüÏŸ?Ÿ9s&¨ñ×abb*--)†ââbB]XXØ@Ë÷:¹|ù2ƒ±´´=ǧN:₫|vv6Hàú0̉̉̉eeeđEœ,¸}û6.,,„^ªHÁơ¡·è0ŒÔÔÔ¬Zµ*&&ÆßßÿƠ«WCÙUssó†  ̀ăØÀÑѱ   33¤p} ö₫§¢B_¥>>>üüüP]Ä™6mÚ¦M›ôôô-ZäââaÉ,+--½~ưz___PÀơ0TV®\ioo¯¡¡¡­­}èĐ!„”Ù±cǧOŸ́́́ ßß…ƒƒ£¸¸t---§N:|ø0§?{ölTTÔ0îÜÓÓ³®®nï̃½ 3Y¼qăÆ·oß̣đđ€®€azPQ%&&æçç ¡ù0Đ„dñóó³²²rtt„ïß4'ZTT: ˆsçΡ–ŒµdÚöŸ?₫|NN¨M¾ wÖÔ©S·lÙ·€ë`Døúơ+‹EGäå壢¢ ưíâ⢫«ûèÑ#PăoƯ,iii ĂïÉ̀̀ô¾ø̣å (O¦TUUÍœ9SAA!//Ôp}Œ,ÔÔÔùùù8nưúơ÷îƯ»s第,ÈBjœ>>pY’×'ôú‰E/*‡ àú !\Û@s~¨ñó÷÷ß½{7j6@RàØ±ceee'Nܹs§³³32ïN**·oß***ɬ««»qăÆ­[·?.**:₫üåË—/jƒt…¦*##ƒ——®Ir!<<ơ{+V¬5\¤›Ù=Ú‡sqq Ü¿ÿˆFhú''g~~>êÆÑ́ojj*d‚GIIÉ—/_ ×W^^̃Ë!!!õ¼AÈÔÔÔÆÆÆ¾ ’MóÂ… iiiËÊÊàR$—klÁ‚ƠƠƠ?~üA\äƒ9ÙF}}½µµơ£GüüüŒA™¿ˆƒƒẶåËUTT´µµ½½½AEII)99ÙÑÑ‘́R^SSœª¬¬¼xñb[[Ûơm‹‘‘¹xñ¢‘‘\‡¤Ï•+W6lذwï̃øøxPÀơ@®ĐÓÓ¡#¹¹¹ aaaPÖô×éTToß¾E3ôè)È̀̀äààMFUUƠăÇ“ER“’’.\¸pçÎNNN ''§5m£́±±±fff>|@.BR¦¥¥eé̉¥ÉÉÉ111 €ë`Œ ""‚ú täĉÿ₫ûï¥K—,X²ü¬¬¬ŒŒŒ$$$üưưMLL@‘`ÆŒ$[·9--íØ±c·oß–‘‘Yµj•­­­ÚĐÜÏÏÏÓÓ³¬¬ ºg e››çÎÛØØøôéS ‚¸>Æ&Û@ ''§»»ûºuë@“ч™™¹¤¤DSS3))iß¾} Ȱ#$$„₫ưöíÛĉI!Ÿ:¢#G ă[·nµ··¿råÊÜÛÛ=(èÄ166jhh ¥¥5\cEEŲ²²”” sçÎĐdô‰‹‹[¼x±““Ó… @aGDDäÍ›7Ëơa±XOOOÔ IJJº¹¹­jc¬J|îܹ÷ïßĂUG²øúú¢×!zG@ ×À¸CYY‡Ăư÷ß́́́±±±  É(sëÖ­E‹m̃¼ùرc Æđ"**••5Ê5™Ÿ={F¨YzøđáƯmŒy?₫ŒrQQ\r¤Icc£¬¬¬‹‹Kaa!¨àú¿,lĂÜܼ¶¶6::eÂĂçNêïïïààj #âââ999£ó[çÏŸßµk—±±ñ‰'233Ç•Î:::¡¡¡Pc4¹ÿ¾µµuVV¨àú—/_²²²¾zơJBBMâââxyyÑܳ˜˜¨1\Lœ81==}D"88ØÙÙÙ̉̉̉ËËk Wàü èáëéééêêÂơF‚́ر}¶@¯‰® ªªª¥¥¥“'Õ¹s'9vtF¾ĐÑÑ]¾|ÙÈÈ(++ Ô.„……G¨ÚáçÏŸ,XÀÆÆQ^^>nÎÍÍ €N½I+++jjêçÏŸƒ® ' &''ÇÀÀ ==ưäÉ“ Ȩ±hÑ¢K—.íƯ»×ÍÍ Ô†ƯøûûoÙ²ư›‘‘ ¯^½z÷îƯ””” ©aaaÁÎÎ~₫üyÀơôɽ{÷lmm—/_>öâË“2—/_Úºu+¨1tøùù«ªª†koÎÎΑ‘‘±±±Đ¥5Ô÷¦¤¤ Ï ‚Ư8X>×đg¬­­W­ZY‡QƒƯÁÁaăÆ ù°ÀĂĂ3,®oÇçÎûøñăéÓ§AƠN<<< ·OääÉ“éééñññ €ëèAAAºººû÷ïßµk¨1:€#$$¤®®1úF##£ Y7PcèĐÓÓ—•• Âơ½}ûVGGu5yyy ă¯ fƠ¾MèÓăÖ­[TT{p}‚‚">>^QQ±¨¨››6m²°°×7\®oÍđ Đ !4åo¸qăÆ;@’ÂÙÙyΜ9¨)\À€qss311‰‰‰5F555Tm===Pcˆ022¨i_jj*i—••ơú¢¬¬́ăÇæææ é<ûp}CeóæÍAAAÖÖÖ Æ(°páÂ+W®€ë:ôôôưw}nnn·oß₫ñăH÷®]»6sæLФprrrww\À ˜p}£Ă²eËfÍ: ::ºÚÚÚ₫¬©««+//ÿöí[íDGGëë냤C|||NN‹‹ Hàú†„‚‚-̃½{÷¾}û@‘FJJáåË—ªªª ÆP@e¬¯¯ÿư:---’’’îîîË—/ÅúCrṛÙ³gẢÁÍÍ Y¸>€ááØ±c¨ñđ𠤤5FMMÍđđpp}C„––ö÷e}8NXXØÏÏÏĐĐäêï̃½£¢¢)H„́́́´´´Çƒ®`àççGsÆ{÷îE¨1̉œ€áÏFO:5 ÀÁÁÔQ£¢¢@‡¡@OOÿk»¾¥K—†„„€8ƒ --M@@t ={ÆÁÁÁÏÏR¸>€áÇ̀̀,<<\ßH3mÚ´ÜÜ\Đa(PRRöp}NNN .œ1cˆ3̃½{'!!:wîÜ™={6èàúF„ ́Ù³ti„„„+++YYYAÁAKKÛÜÜÜ9ùưû÷ëׯ———ƒ2ƒ#''gâĉ ‰đâÅ‹µkׂ®`DfaaILLTWW5F>>¾ŒŒ bpPRRâp¸ÎIGGÇƯ»wSQÁ»u|ưúƠÈÈt ̉ÓÓơơơA×0RL›6-&&\ßH#((øñăGp}ƒ†¸¬/---555::d4………ĐI‰€^̀¬¬¬ €ë)fΜùàÁĐa¤ÊÉÉÍ„ :ËúÜƯƯA“¡PZZ ®Dxñâ…´´4èàúF--­£G‚#Íĉọ̣́@‡ACIIùóçOt¤²²2&&&,, 4 UUU )đæÍEEEĐÀơŒ JJJÅÅÅ´´´ ÆÈÁÏÏŸœœ : Åơµ´´ #Ç722¢  MMuu5gbb)H?₫óÏ? €ëYÄÄÄ^¼xqĂG!!¡’’Đađ/Q**‚ë»vퟟ2 Ạ̀‘_¾|²>×0®/33\߈ÂËË[QQ: jjj<ÿîƯ»ÚÚZmmmd(”––233ƒ$BQQ‘œœèàúF ‰>€#íúª««A‡ACAAÑÜÜ|ăÆ Pcˆ”••ë#rrrXXX0 HàúF))©ÈÈHĐaDáăă«¯¯Í„ đx|ttô¶mÛ@!̣ăÇVVVĐÈÎÎæçç\Àˆ#$$TXX:Œ́;€’’²ººÊXíú~₫ü™••¥§§j ‘ÊÊJzzzĐÈË˃ú\Àh ,,\ZZ :Œ4tttàúê™ëê긹¹YXX@!R[[ËÈÈ:………\\\ €ëqÄÅÅ!ĐÈ(ÀÀÀPYY ¤ & ®OMM ¤:555`I„ââb>>>ĐÀơŒ†ùùóg}}=TúQ¨©©ÑÜ6è08((($%%A¡ƒ̃́444 )đăÇ ĐÀơŒŒŒŒEEEbbb ÅÈAKK[[[ : &`±Xbè466BMc¡ªªtp}£,++×7¢ĐÓÓCÏACIIÙÜܬ  R ¦¦&Ш©©h.®`” ¥¥…̃äFÁ· ¹mĐaĐàp8h5\® ²%$A}}=èàúFÉơAåĂ‘ƒÁ€ëåCááá)†ELèœDhll„rW×0J Ùºº:ĐaD¡¦¦nnnGyy9 .ZZZhiiAR‹Å211®`4 „ÊF : ¦¦&T@Đa¸\ˆ@"477SRR‚®`4 „ÊFÚZÿüùtX,\ßp^‡èƠ:ˆ×àú†æ/'6|OAÿÇöÂ4,<’2STT§*‰r‘‚j•©—·K ăhMxC²àߣ†¢ưT²â »k\ç䬘X]ÖßmPụ́ÂîS)„ßBụ́:±̃;d×{Y₫™ơiª6”7(8îY«Å—{ï¨Ûµlv.±ÑES×îwTḉ+©Û·ÅW0ĐuưV}ưO×cD Ù0’à›«jëêëÑ‘&\sAqiN~! †•‰:îđx|MCcM]]]}×R×Đ”WTúîËWTdfzV&h[Ơ ›p¸úFlyeêúÊ+«1ÔT 44Qä‰^Í?›°¸ÚúÆUµt4TtPƠó/=~ÑBsKK3ú®o¨ª©£§¥†°‹Ü€^ë¸f\ËOôéAKEIGKÊcÛơ}‹9é{wàÛ́{|w—Î_L85¶Ô'Чs’wåÿ Eûà¸Ç{́w9—êºøŨ¹]sÓÊæœ2ékư¸CæÎ'‰f¬úĐ\®øíƒ€À‡=Vö ¬P¨»©Ö[F:Óí2Ïà_fϲƯ»A„n`H9¼oÅ?̃}ü˜—û¥¬0ĂÆÍÏÄÆÎÂÁMÇÄBÏ̀JKGOAA‰L`BoÓ7£ÑZƒxâ‘̉j¤¥²¶¡¦ j«*«ÊKk+Ë*Kh™˜ù„$$$¤$ §Ø)̣§¼¢¬ÙßrË‹̣14´l<|L¬,\t̀¬ L,jT(„S7ZĂØ¶¡‹ä—77ÔW6ÔT×V•×”—VW”ÿ(Χ¢Âp ‹‹‰M‘‘bfû1Zđø9ù>},ü₫µ¢¤ˆ‰•“™ƒ‘ƒ½JY0´´ ‚Pÿ³¾7"H#*{#¶©[__[ƒ XU]^ZSQ^U^LCÏÈÍ' &&¦(=y<¨×ƒ5u™ï?}ù’SZ”__]ÉÂÎÊÈÂÉEÇÀLÏÂJCÇ@KKG1uË”^ÁQèúߤߌ«Æ654ÔVµ]¨˜Ơ•åµƠ¬\<‚Ẩ“%%E„Àcô±Pô£*ă}öwôÙ[”ml`åæadál},0210³̉Đ̉£6Å™ù*ƯäK‚Ô5ă°µØ¦&ôÜ¡WuMeyợe8\#€°°¬”¤ˆ?ÈÛIÑềÙß¾´ÜT_ËÂÁĂÄÆÁŒ̀ÄÂÈÄJMOOMC¹ĂK£Õú¶‡m¬¯ªª¯«ª­h¹² ÛĐÀÆÍ+(,*;Y\|¢h ³ëûÓ§u¹°MµeđÔÔƠÙÏïy‡Æ¯uo÷l³¿äùKÉÄR4M‰‹óŒ¨ ózz-BxiNÇô—Óó[WnRgéåRöe­Ä–OüÊûÓ“~·ó[Vë"rüñå׬h³|̣ n`¨èäô÷)ÉIÅüb“Ñ[H”ỏtè®('P2²°£—`/KÓ‹ sRó?gU”‰HJëjjđ̣p‘›[đ o2̃¦¼DͰ ¤Œ€ødN¾‰å¦¡Ă öFGψ́<½ää>VáÓṚ?e•ä}“ÔÖ˜)"42|•uơOŸ¿Ê~—Çÿ—FdæàUœưß “CóÍèÀÄ̃û…—]Ơ\œ₫¦ çCÑ×4+7}ºº́$ñ±g-2ṛ““ s³9ø&̣‹Oâ•b¤ 4i`¹ è™̃^–¢ïàÄOÅyŸ³ >¿Ç66M–S˜­1}:ê?>{“̉²̃¾~]^ø_tŸè$^a1.q9tĐ~0Ô´èÀÀÄ̉û½ƒ Ỏs ?ø–‰x¹)S´ÔU©ÇMñ *̣ëwŸR“_–äå‘à•ä‘ä‘A‡LƒôŒ½‹\ƒ ±™¹Ÿ>äçdM˜@)«0eÖôiđ• o×ç¶~ËZ­_ Í6îôBÿ~»$.lßé|‚Q)îk•»n\áÓ­Ḱ¼Ÿåöºgƒ-7¯YÜ‹9+|¸læÜ€/¿.P¹q­`ơäM]~S%¦â¡6&5#7Ñ‚¢<”ưÛ§QTîijÆë2ÑêÑÍQ‹‹36O÷0ÅÿjzKö[üCbÙä?| ưrq₫AǪềDóêưœæ>#Œ‚åû"|ö*íU|,†ZrêôføWjZaiEt L~oj|z÷QNúkVN®ùFF¼ÜcÏéÅ&½zư"‘IRIWXBCPbÄßTVS$M˜,kÆ¥<ˆËNKFÓ`h /.LN_£Ëªëî?|œû1ƒOXPXa:Œè/RRQñ‹I¡a‹ÿ÷*;5éçÏŸ³f©N!×®̃Q§÷êƯ§O75ÔKN™6q²¢̣lă‘₫Q¶ÉÊ3Đ0™Q\ưéÁăï3E$L ç±³0ÏgoÛc!åMR<55­¤’*êô¦ô²qñ¡ƒŒº6ạÅÇüOoK¾çJÉ+èéŒ=sBxÁ¥¼x6aÂôÑ! .¥ªo:̉?ÊÊÁƒ2jZ„ÉW_J³ß$~Í––7™§K+dçú~›¡ëñưCœ‰¡Ă?5¾6§›Ú}±™ăvÁ¦ç̃Wă “÷Z°E ¼¼»¥ó¥»¹L̀2 ¯ç‰‹#Ÿ?#ÈkW¹É­&³«°‹±³6&½€zÛµû"¤–( .`ơ²¤}F‰D îèEŸ¿aû€(µ'–í3{¶{&ñ:™₫»[>•đ¼W ˆö¹˜Á9d9X‹«Hw¶&Œûß̣«‹?tå•G,[AÜ oqJˆ}ß¹†ú«»Ÿ ̣øJ˜<¿b·Í³}m²%}ó́ưëm»xxn¶-Ü'ÀïiÁăc^¼z÷HJy¦̀ôÙè@j)¤c`"äB›q~׫ÊJ̀› “U[TäûOSʨÍRĐ˜‡¤–Bjº)³ Đ50—o„•ä}]df*)"L"É+üQ}ûö†Ú*UưEןô åÊIJêè€G=KÊz¯9[WSm ^x<₫y껸Q"̉S¤U5ŦL'µ¢â™&V­¯º¦†Ó¾ñÍ-K›sq²½g/×ư,1ăe¼ǛÙ¤ùXàÖµ\äü( ¾~’“›×l19Ååj}öƽL}₫DZU‹4_ṕ¼‚Úæ­U½ «*nŸ:ĂÄ̀baº*<¤îúîm1¸·åk©ø¼~äØQ·³̣ùíEk_Âöokêx;Ñ •¯‰—zn¿²Åx;R|ê"ñ|SïËn• è׆Å̃¤Ó~6€ä÷ܧÍù€…Ư÷{3d@û$FêtöyÉU“Ÿ—›í7Èpă"øIÛùľøØë«J¿;·µXŒè®ÿ¼=”Ö·{Èư¾Kåh¹:ué9çÜ>=̃”W”蓪ú†k×o¡#Sç̀7´“#ưSQaöï :¢¢:}¶‰§¹²¦>èúu †FY×ÄPj 鋌Ôû¡#%UáGOÈÈËÏÓû‹éILûøønØ-}u3²¸­DeUĐ¡‡ ¾ó ²$ÏÎf)‰Ô‘«oć†×UW©˜,_GúJRÓĐi´Ù¿´ïß“ü|´uç’{Q'Å•µ×¯1±q(jΛ(«Bú fbçÔ[âˆøz0 ’±á$2¨€ÍÀ¦³Ø‰OŸú́₫SsÙI¦ëCËÉiµââŸ[+EĂ¿1?ÿxóâzz¨oÏßưÀ»Ü áBh¸D„¸ï³å¦üRñ€v­̣,´ÿiï¹O1é¡ï³ § ¿§rez™î«N.u‘.¸³­µX²ƒ#©›”ÿ”EÀ"˜).1Û}ơgf¬ÜxÍÈŸNÏ3¡Ó]G­‚hÍ@ß~ëuä °´“n GFf YưeÎ ơµSTg,0˜C~¯®Éûè!Q9eBÁÙfAæÚ¬Â65¢"ËN™f¾Àp4Ç?My÷ü₫&–†vëÉïơŒÁH«j¢#¾—*J 6mÙúKHjqgNzqđ *ë™PN ¿È™|B†v.µ•åè¥8CGw–B¶VÖ]:Z\^…‹¬ûĂÄỊèđéˇkW.[Z/—’!I¿×à{î´Đ$Y “¥ä(2¡ưpÃ×EV ̉“ ¹h.OË<ºEsé¨fI à„Å ŸôÖ"©Î5&ë¢/E¢ Ô½° ëûáUJs¿w{ŒæT =É4& ̀Ä>{"ëàç{/¸³Ư]Øú­q{œ!VàÚÅ~îMwÿ5ÛĂ í…{1Â]íM/rÁ ôB}#îr` ă§mä~,tô­GÑT_ä„—’ÊT=’É Ö54] d`f"SÓĐ¢Gz¿c̃§¤ddæŒFư¨¤ốGQ¡ªsÙo wµÙ´>í£î×₫(stX>ÊM₫qÍ×n¶üü9Ïv 9~ß!†‘•½ëjªyÑ­7c*™•û•×Ô_½|‰ƒ"ê`ÉưªæŒ‹¼üoa‡YZY“N ¨ªú†+W˜ØZ? ’»È\‚¨Èå%…Zh¶XFr¬E ÈÛơưưÚ»ø©^sƠ7vùº•̣tÑ'SC×µVy=CÄ­«Ó¿Ä k¯ù,!*Ñ.\f™n’8//7''Ÿ¼©Ñ Â6É׸Ûkù₫³Âr!q‡é8?ÛVÅüă>ëưl]½³K“7^ESu4e”ˆ̉â#cố̃úô#A)2~W€FWC¾övŒ2‡Î¯”†Ûø•;âs²̉4ÚRRQ™ƒ¢¡§ŸcåT]^|àĐáåvÿüơÿÅ<Ë}Ÿ¡iºŒ U~ăưt-WÔV₫@E¶¶¶±₫ʪë.úúȨi‘cù̃oPÔ‡Çÿô¹teâD‘ùú£Tc6:.)ăủ,³em˜XĐ }yÑ÷ƒ‡¯X±’,Úûáñø °ÈªJBư½1§ê`×§e¾¹sûöêU+iÿjOå¨È7"”åi.´&÷Ự¦Ü|¨È9Ÿ̃EƯñZ³Ú‰¢}‚ë#aÔ6<¨˜¶MăsÂ\¦P\óªHh³7´Ó£Êî¨pvµjóµ’ôµB” –MXs!¬½³‡{¦¨Â–đ™TvÏßÛ®]A/Ÿê±Q ˆ¸¡Ù”¢P¢Ø1é°®¯}™MùÚ#Í T¹úÎ;Tf}—IëÀíé5ÍöÈ:ÓưÆÊË–>ùDóįGn†r> ?jêưư|'«L'´{0sđڹܽÎÈHge¶è¯¤¡Ó±ŒU‘YÙQ‘=¤¤ø¹ÜÊrØ÷ơ$á}Ú«Ù–TTc°~:Ơ˜o]ôơÓaÏc«W¯dfb¹ßªiḥóơ–Q ´Å{pđ é/w¾~ƒŸŸ‘‘>)'ơ[QyĐe¿ióÊñM“çBTVIPRúä©3³´g«©(₫•4”W_ơ¿0EÛ@JUkL,(!Ă+,ỹ×oÚ45­ª¥×7ê`±EƯg4bûr&»ñej*œs»ŒSâ6€¨¼W†èĂÛä5_ÊDÓ¥s…”{W»»,£+ ——©÷œË½ó ̃ễ>QĂÿÍü|7”ĐPüس“J ¹Ùû>C;öé›x§f«,Q€Oßç5j²¸™>½´KʉHe¢"P¥]ñÁK{»©€h¸· Œ…÷­+>3:ËK5[RơcC`ñ:+çÁ=+G ơïvÚ¼EÅßs=¾̃Åy”?<¿z—ó0y%†fl‹¬<Û¸¼đû!Ï#.뜇«›©<₫¼ÿe.BÀÀ1 ¯°×R‘ ~₫ºsæ*ËH€₫ôÏß"n]Ó³t¤¦£ĂJ¢.z¦‰U₫ç¬c̃§Ö¯]ME’ơî?ù.%5¨c©ôéWĐ7Ë\ëUY‰±ï̃¿ûÇz´›1Ǿz›;ÇfơXª^ÑKƒAŸ̃$œ¿xy•½dlÀơ.̀s^÷ÖÿAïpüae~u¯ñ)&b°ßƯÇ»sX¿Ư'‚<Ăoñ”6<À¤¹¦{̃½e´Ó£úÖöwăƒÈ'/r²2È"dß°À#$¦¹péñcÇÿY±‚‹st~ôΣ¸¯ÙïÇÈ|B³̀í¼¼¼mí́„øx‡¸·ªú†ógÎ)ëès ơ(©¨æX9½ŒÍË+öÚ÷ă_f¥¾B/űm3:—ffç̣ óRED=|<,‘Q>O₫̣!Ks‘Í8T’†Ng±½Ï¹uÎ.¤Đ½ơµđH ”2jÚăđ\°óđOÑ6đ>svƒóZJʬrr÷ac}ƒ®ñ8™‰SÍÀÜÛûäè¸k\éĂh´?R´œ¢í;‹ç“gM€qÄë¬O¯“ÆO½—^2‚tôZ‹l|Οߺeó½“b¼́æl,m3ßä2súTzꦂwq‘N‹ö¶­`́•₫¯åX·iËHÿêb1Ô´³L—ùûú¢"cØ'÷¿|YnÆl4›8n¯Re]“çw®%½~;Ä0iÙ_ß$Äϱ¿÷;=#ó #Ës.lÙ¸~DÍÆ¹›PUY1ƯÀ|Ü !±&…ê‹×íFªÉ£¤”¢¼oó—[‘ÑǦüŒÙ.^^»r€ë÷`&iAÇ–Àø¤‹»ÿ_È,s»q®§ÔÔéA·BG"à$*r ÏƠV˧́ù2ʹËñhè/\¹¿ôeĐưO42mÁN(*/-â?™€8…_¥̃Q&FQ¸ÿXbçLlÊu=Ow*¤ê°ñ¸§8]çÊv>á´7ןùÖ±˜Ưù[ëtôÔB‘ÿßÿÖxøG[zä̉V›i„‰Æwç¦ënFT₫ p¥:h¶ó]çZüÖ₫÷ư”9 -„±ÏÏ,s̃w§s¡æ W>u``a“UÓ ¸qË̃f`9°°èÇLlâă½›U³ûWÏÊHIºw,®9*ôºæ"›q̉–¯/ظù$ä¦Ü½½ÔÂôo¥ákQù›„§úËÇùU=QzJi₫×Çq ³5§û΋T'ÄDù†¿¸tY^îƯ˜'†z:í×À8%,2ZT^™‰¤•›ö4ôræûlY)ÉayÆB‹„[o^§lSåÛ†#óMÆ3Ôµd¥%¹9é¹T­mˆÂkc₫ú*嘾ĂÑDÁE_œ]B‹YóîæM₫›Ù*´¯vy墥ç_¿ huJ¸üÛ«§Z]^¥{+â„Qå ³Ăè|ă#‰ÿÚ(Œe”Û¼Ư[g]Ûj̣ÍGƒà°­uP‘×ÿ³Ưµ%äs½x›Ëˆ= »ñTƒ<]È·“â4¹Gyd‚Đ¹³<_wnë {À`cÂï/,£ôíCÆÛ̀,EÙ₫Z¸‚̣Ê÷©É†vëàÅ`h”4uo…ÿ7PÛÜIhd´ˆŒ# ;ˆ)>eú“[?~Î$.̣WyGi–₫Ø&ÙOµ £¯œ>M‰v˜cG߉ˆP˜©K…Á€Ẹ̀Zóî^>9Cu+3#¨®€qGqyUîû #û 9uÇO ¯ë+₫QMÙ¯p=BQ÷9îǹƒèä°í!lj×Rr‹¸³hj¿¼±¶ö²™n?#Ü^Óf³ælåiKß®îX^Iø§¼=fkGÉF`ÁÑĐí¨ÓË»œq@#ơÈá¶Ù¦“›}¶â©©™å$AŸ¾:*>½³o}ÿ¨½âK*†sS¨«ûPUÔ¤^"¬pÁ¹£÷kjí]¡›“[K ”fĬÄvd¸°T, Ệür3´cŸÄôßơƯ¿ÿPFUcœ—Mu"0IácêËÏ_¿‹ tÛ̉ªêœ¬4ĂÖƒŒíù`ơYÅLÿ Ỡ^¦}hÁ5ó‹M†³€´µû•VV‹ˆ±X8œMï̉²¿TWUL“R…‘¶₫KäU5#ïEÛXƒàúÈæ/~[V;zßÿăbóv\»zP»—=ܸp·††¦©‘f†…•7Ơp%lDv #ĆóbrÊ C'Â?[³s¿J›Èñ ¢²"ăÄ5£ƒÓ^ÿÎ̃_ÿÇjă½&BÈặE½²Q÷Ưù¸¸å7–̉Ÿ‘đôytä%§c{;Úû0å>%Ó̉sK±8G¨„9MLTF’¨oNáÓA‹ÛD ~pƠ!¸>̉éX¡Ï\FƯ›Ûg.¿jä$„̀¨«ĂK¯’–7eă¢˜@™•ưEẒϽ/ü¨®Íÿ’=EÇ.ÎN&)L‹ñB\xÀU‘Ÿ§æƠ-OtDpƠƯwm̉“ûü˜óÑ®g»ß×k1ơ6“ƒSHüí‹'9ß̣Å& ŒpªJ₫;øÛUû91ù ï7ŸSí÷;#Ÿđd™Ỉ2lôăôª–Ÿ}ùÎhS{P‰Ư5AxúÖfx/v–ŒµS_^̃ö_‰ûÿ́<•ßÇïÍÈ&#{“M×ÈV()J{H)¥̉ø£ùk̉.JCQF%£¬PFvŒ¬ŒDö¸ÿsïE’dg|߯çŹÏssÏư>çyó9ă{Ø5ëI’́¥_ÜZÅÖ*uE„s{ï¦.ạ̊N{¿7ắy©ë,•ÖYº‘Pop7f:ơ<&­L^µuÀXܱ éVjâ¤g?¶ÂóäB@k¡#«Éb—7÷1oƒx´9ÛF”V…í›ïD5cÙÍ]Tzau &æá™(¿®µ5½$äØÏ¬âiớ=ôº:—OT"19±'ª/:î=—X?;úËă#¿`°ơ,rú2|ư+²pR:”°‹HÆ…677÷ÖI*3™ÆVđj·©sûGeâ ôTu¥yÉÑοôl;Đa81†¼u ̃Äñï>æđ”g“û£'«̃nUwâ¶Â­Jơ÷$D%]ơƠ¥]µÚîß³¸<Æ×_X2Ö†$’“Spđ ¾}Ÿ¢¦ÈOEOÜÅ2¾?Fhhl*È₫4yÁc4•¤G½ILư0<*wÿ¦CRa1ôPƠVWú¨¾‘@åË¿H>…{ùïÿæÔ­"bïCí?_›kgZzl:Kv´_BUCâµÅmÚŒĐø,¨‘¹ªªEBCS¬C£fm~tHxdL\zfa-±Æ̀)$Ó̉ÔÑûµ¯wÉjy_ă£‚_…Æ·¦Œ§æ”›ª?}ʤn65%̃DFÇÄÇfg~+«­¡¡¡¡fæQPŸ¦©,Í Eè-ùÅeÍơƒÿéÉ!›ƒè-2gƒjûKä{Ñ{_ŸRx„8Ÿ$UUÿ>Ÿ•‹?>ôÅ@}kAé·¦†zzÁÅO¿à®[̀uñÙ©C˜×÷Ú¶®Â4x ÉôØ -ÛôKú¸K?µHÿ^¿ú`®¢6±ê¥‡V2kyL¯-#øz©hÛñØ”÷×'‚SÀƒ Ôx ß’ë!Âr+çîÙ&ß9‘ÍN7¹HU­¦:â¿¿tơuÜI¯yñÍƠª«÷ªàö₫ö¼ªoèÆ,,\¼ï‚{bÀ/99́ưs¶Uº]jVXëÜ©¸ÈŸB·gµG?3¦½>¸KéÊèÀ3-÷+]XÓHÅøÏ¦Â¢ú1#3[FVnOdó¯÷{=s‡ûưGà₫VÉ×:™óœ ½µ–³Aw¿×Úµ||¿©\‚ê«+J‰}û₫ë ~<¯äd¹ ̉i¬Í/(¬A^Ñ ̉¯-É)¬h?TU”S^sål2¡d}/Ê)ÊÁÔ`˜yùé;œơísôÛ¨„ºñTJZN¾I2ââ\?7U~/Ï-n½$„ÉËrrª*ëÉ:í́2 _bdÈ^½©¡ß^ËL~ŸđNÍ`q§÷å\' ƒ·W₫ní¦œÄäY¹ƠSO–”™ü§F·º²ŒÔ÷ Ë«(Æcñôœ‚â¢2¢ô]+Ÿ̀ĸ¼ü¢o?I…¥Ä…;¾¾åeW6b1äùù:øoy:TU”‘–ú¾¤¨ºK¸RÂ8q̃®_4e!_«°èÖƠ’דe«)Œs½¤Œ,F–‰d]ùdǹ°@q5ÑÖ_<*7æ¸MQÙ,¾1Đăj˜‘Á_̃t́Ü|ÙÙ™P} úF5U?~ù›Ÿ‹áâë‹Iư đ·“¿y혳-¬ó̃gN+9öá¡Y ]v;ê·.´zúá¬!E/’%Ät])·áv^— ₫çÔ8÷¦ÂR¥ă34ÿ8‡„¿FáfzØJ1èµzJNAÑ/UÀî™4›ăöT¨ÀV¼²Ñ6½́»uÓœY/bLCÜÍ]ÿÛu©cçÑ·?~Ê^œX¢«jÍvĈÙ¿²oOªÓÎÆâ°‹Ûw^zß! ¡»Nmߢ×Z¸ÿæ|’øRf¿`ÁËœ¶ÏÜóÍM{ZG§eeÿ^^:PFÎÍ/l52Ù¤5W̉{²$6•è¦øÂMƯD`S·‹/´ûk:̣[Ư~ïŒjÓ;LJ[Ÿv7Ÿ“^ññ…ÿë~'…€ÉB“>˜…ybå·²ôVU|+SRïûÀæ_6$H>ùư;&\5µ¹¿M~³w‘ ÿ¯º¯äí5§ÍVa9?÷,<ä¿sí´º¶ÑŒL¼¹8¡½Ù÷åA±“Qy»P7‹ơ³boø—}ˆ]̉ÓÖ؃Û[˜Y'æôJơå2üñ~w÷}½wËt¾ßJ ­Éí?]à8g-I3̣ă$±ñ©ÙíGæ{乓:™?\³XAh3úƠ'-‘äkë~R%{b!Ñ̃Kœæ±ÖȃØáS´V‘¡1ÿÉjEÓv/²¼ª˜ao~¾wû™(2T%_2˜íø³½ÀËÂÈë·F„¶¤” E‘•£¢́ë?{‹¿!Ư₫›µ™æYl9H°izX\Ơ.5’N‹;?wÑP­ozƯ™µ™/Ú­-¿ËßmË´¶‚÷á„îN»×^t]¿¥&₫¼0 Ü̉÷ê·^嘓ºy’Èêp—{d^!”÷ú¨Sˆ-& N¡¾ÛémLéâPU˜ơ¤™?kC2́•aíóY—’¼”[Ưÿb ö¬:Ó]ÑA/>`0V´dQQ1s×ăC3Ă^RƯ{TnëƠ'\ËÓq—1Ñă¡¡–ô]ÜΘ9»¼÷´½¡êΨÎ̃ƒQ´?·±ÙjĂÑŸ¯ÂiögǗ s¤ÈÍrß̃t ,Să¢ ₫ªo„À1ËbfĂ£Ÿ;çđ·=æ…µæëÎ̉ÖƠP›,..ÈFóûĐ€ å/Æ`ÂÏZ|&©}ï† ‡ôÙª«h¹‘¬<¯Okơ¬ĂIj^íŸDH,눖đ¶çÙçssÅ0O³Îö,Yô$xm@=­ăùÇĂÙ’j3ßnÛ̀Yy&’´ßJ•Éïx‚¿-iE¦oG´:J¾©W_ß\¯Ơ:ö¬¦đÍ5çøV¼Jœ¦4¶v›<w 'Tư¨¢¢é±//ú.")‘¤îZ‚ƒ´öw¤¸­ß+G.â›=ó±ÅBËC¦₫₫ç’"ƠÛ^öÉ™¶™Ÿq`ƠB·ªÆ₫Đ³?g¾Ơ¥QƠƯƒÁ¸› c¼‹®üæ^ƠÍ‹¤í±Ć#ëQ¯ [? =ØŸ›Ëè]J @ÂEn“|Ë=̣®Úê|åå®XúxúoàÙ‹^p´]?{Åơ–+`îÿÅ£2³& FơÜ\ÓC„&­+UD:àˆ·ó總&âÄ W°CÇïQÍKé„ÖÏF q@Ä»CVƠVm̃‰ÎÏZ(́q,.A¯mxZ?Ư,÷íMGAËPWưê? úF 4ë=ñKS=V.}”Ơ¹ù&ô1Ú®üºSØÚ忉Íê¤7 ºùÙ9ˆ®êZáäaccakm¢°|̉`ÖØXƯĐ€illlÀĐr³µ¡ÚựÅsª™¡m'~M­À2ơ(ÙÛfË;J¾å×sn¯noX°ât„4¿¼Mk£Î³ n~X)FhÿµæùúÖm/1v!.¤ji8UÏÄáÏ@éúDKSS/æÅîÓâÜ×Ơå·̉¯ÈĐêm蹦2;âơóÇ÷–W|¯¯ĂÔ‘f¬Å'}*UgíÁ4WZ¢Gù,GG™Y«ç̀UQW×=QcäÜZ1zôWç“j-/Ü/Bô^ÛÖ·@Á=ÏíÙ~Ơư~däMb䦦–¡^]ˆÇ5k†}ñCFFÆù{)mi&ë«×ờ[+́n}!t=…nŸ€'ô\ƯMư¤$y't‹Ơ)·­„ÚƠÛóÄæüYnîö­ƒñLFÎŒÚ'»µUíÊ« Û´#§WzÚÜ·Zu6ÔÏàQ+Â0EÜ©çNl˜oî½p—Ú›7:e}u}¯Ninj÷›‹ åO }+U_âßù†úû¾O ¾ƒ¶Ñ4lœÚ9§ÓẸ́vW:J>„¨®† ú0å%V­Œ»Ư:v@̃îÀ/’A¥²åôâ0›û(èû0Ƹ¯Ó,ÉÈ(››‡ªàû©Pt×*#1ßÙùÂ6̉­ö"J>„´t}ÄsŸe’‚Sƒ!X;ưŒK̉æiè!LÆÈ‚¤2WøV1ÜVŒÂBK=­é * |¼¬zOô:h°ëDɇ¥åª_œPIno€ïƯûàÛVfØƠ±™Ï^½ÿ™Y : YUL,AÊ…¹?|«l¡ØYcŸ•x[!7¢¥¹Y×á¤₫j₫ư6tss3åxÚ®1ëºÖôÄ£r¶­‰‡ø̣:qŒX[%†8{ù¸ïç₫KIa/_}R'̉–ˆ¦›×m̃)§Ùß³~Çị̈&륪̃z¾¶;¨n–ûú¦C¥½¥¹€êIÊỎÔ3³µ=£±"?99&2đUHHØ£Đøßßû.Ö.Ö˜ư¯K´zæ[…‚âsà%+kÿ¬¿Åü̃‹V§̀¤/?»¯áwï®^–™_TCµ Ë́¬ư¬m‡¹Úh¹Út={é‘Ư·h ÂđN PßÔÔcm3É)ôơöîĂëCI£Ư0Üó̃1S”‰úÇË,Ÿ©bv“ ™üÄY@%bb^¿xưü?ó#Ùí/H7É8Ÿlh]ï®®Ó¼²^ô755RQ Œ§ J*ʦ†(l]¹ºî@ÈÉ)ÈÆ÷úá†Ô×B;bđ±)GçùOqǦ;Kgn™ÎÙæ›¤ºÏ?dÚqß…·pq;Ưg_ơƯi.¡ÊµÔÍ“Ô×Ñw©½±^CĂø^:SOIÙÜôÇ¢HσÓ[…¶}NvÖ} :¹ÀĐ3~ÚdßoO€º!yLQµ6|ªkHÿ~”[Vƒ!¨>FÊ₫E*ÊñCUđ§†V¿Ê}öt<£ˆÜRAƠKª¦ăœÂ_„4₫§ZäĂÄ»ï<ÏÚEÿ&Ăxù1ØÏyÙ¬m•~“§…&e)×¼|/ÆzGÛ/bæÅ3cY %¾ơ~`•d8Ç%Ô,b$)>wÊÖï·ă‚¼ü˜¼œÏT”¤+ƠzY§LøÙ`ƠRGN.å€Te())›ºmù«Ge‰f„‚–¨.‹?WtW³$^¾nDzéf¹o:|s¬^ªoCÁÄÓ0F›åÿ:ê±7[µÛ‡>p´pµJ±û« à·Ç'LéäkAxÅ–ü ô¬ ?BWÚ¸ö-›ŒkºfftV[V†)/Æ`mÀLê{ñø½¥±7Ï]ºíîÙEügww£ eơJṚiá ôˆ‰¬̀É q•Z]ÎGâäM·PwyRM[ñ`ÇN’äk]‡€Ôøû8±Ô¶µÙ[âéø³a2çű“§nâu.œµ›f 6ÅÀŒĐ̃јzt®c\à›ª­jºu>‰§‘ÔPÁDEÅ9_H·m÷`™eçVkkÆaÇÑÓLmˆƒ•%1¶b˜—„;8(jQƠ–ö¯1iè~|+cæàéƯ|{fN¬IO?w|¹x§ƒ¤‘Q7V̀ˆNĐ“1œƒqôÅ„?àq µ;¤$À\oƠ- Fè\z²zëơG-¡"ÖU÷G‹ØÎ7W^«8£SÄÄg>ư,u?°ă°´4CØfÚ€abb*iơÜ‹¡WÚÿQq½èÜXLü> †‡\̉Đ´‰QÜ©Ç=ơBDÁ"e`um?ÎùÏö+.x‰‰wœÉñͧh-¥ơ./ơK(´ÿ5Ù†̀èđï̀Œ4¸Äù©°5íå¥ó¯øy¨ơJѵ^¶ß£veƒÖ«ï·¢ÍYquE#Că×Äø03Ó„́œ́.s%ồ£2œ¨@kêng­Å†.o|âíˆX₫sDwÉ ̉”TÍ™RRúŹq]ü Rœỉè‘ÑÖöÔ7Ë}}ÓƠ}/§e`‚ú¨¾Àï’́\R­e—"‡Qơđơÿœ'wˆŒưc“¾½Ù£æÎ_̉ÇÙ‡ÇüéH ûá«_¿¥»ÜvH–Xëưux¹¦ÓË{{1•Ÿ‚Uaưÿ®¢í—ÇSɇ»‡¶tX·0ÓlïƯẽki ¼=@Bˆß«´ß̉Œ×ƯĆúB¿̣úˬ5Ǘà¶Nøgœ±ûöv́“O1g 9Îböm9`èèàßÑÿ$¯ñ_FÀÇïÛåg-ǹ;¸œÑÇu¸,´ÿÄzTCêóIy[Ÿc•ÚvW~ó`I¬ƒ6₫Í,ßḲXÙ̀)®˜ ¯gyisSS—®ä† =up:P|/úÂJß­ÂÁù­¸ wª¯9e§äBsƒñµĂ¿I>—ÁÅsfVW²́”Wóå¹;§̣I^ºdÔÁi*á!}.ÎO=ä±Â"¼˜°¼ÖB»ôA*±_đk'¥Ë=Ïø,Üê“J˜èjuùÈŒvyØ#w©½§´¸@O[«W§H<ơ,Æă[Z—Á çæĂÆØ=ñ¢{VcÓ5[ëüŒ2„­Nqnç*̉KÓY½/Âüêz¤₫ŸË›fD»´NbÄVøíœ¹÷VRçØxz̉K5Î;¤jk«/aÓƒkNƯ¿‡I¿>o=ƠĂ‹û Ú³s~n›?«Ư›{;"±µ"ưµu"×ßoü¼Ó’~¦›îZ”sƯ˜ßå &ÜQ w¿ÍßU‹Øúóvw a0ñÛä¥vû¾6Qh²„­دgG¨É½1Đ÷j˜qö±ă|IEË+s­Êχ ßD̉œ 7#†Œa»Ç_‚ûV”¬Spàœ¶IÔ‡Ø%TóR䃕ủÈ̀Œ}§8µ k¬J½f®kƠi—ás™Ë—’Wʰââ­ «~º́Êp7ŸjFŒ/t)=Y™#¿̉Aáà̀XÂđTưƒÜq{‰÷iù׆ºDq~çÖVÅ_1L}½GDyâßv5?pẤ§_zäQƒa%øONo}8Ø̃÷cw00=ÖÙ…2×2·äYÉëïÎ7̃Ï\!Ă0Pn–ûö¦+ûZÀÎÉ@ơ ˜”vx™9wđ®‰n<+ fÅÓógª̣°ÓÇTË{åëºíxè¯çâŒ5ÿÔÑ·çôơS-HGXQƯâçP̀ø›îÑÖêÊ1¥±{(₫×)Ñ7Ïb+́t™₫,z̀X̃~zun{ÇJؾ)̣Ùn/\×’"„ŸàÖÜÑála¿¯ŸôÙ0ñgTåm~z[­sv]Ö₫…4lbÓg*b:¬V“Éôô¡@NÎÆÍ[˜ư‰KH¬›ḥÛ̃ÆoëArxZ£+5F]X°ür{̀â´Gà^sû/s̉₫ê|’0ÑÂ!FÏ¡fÉÿœ),":PF&##›ÈĂ_”ó‘[Xbh.ë·øk,~qGÉ£m{ØÅQ¦Í}cœ_>í‘‘'‰N‰‰–›̉£K‘Æ wƒºĂÇøö̉"°ñqÍÆ?—Ië˜ë{ºˆ,¼ø~üâŸå¼w%¶—4|/Å´`¸{Yu£¤ `aç*ÎÍâàoz$¾Á'̃,ßï í̃sOÂ/¬E[×ÍC³NÛ ·—‘ÖƠ;~ѽ:D?y×mÇøû}0…® ù:Œ”á\̀U×n=¡u§´Éh¢˜¡”™ñ Ä`>̉â$¬½DZ¸ÙßÀwÏ gb/.r±s{ĐF7os}‘Ÿ6ï2{Î3±(₫Â3 EmƠq”)Á'U•µƠUÔ´m£€đlk×È´ Ÿ¯ĂyÈ)¢l5“âø¢ơ¬çytdï‘Îéâv{y^‹˜SQÊ₫…{¯D5>ÛEkR&®̣Ä*¦iGâ?›œ˜«~')~ŸK§Û«Ư·è iÍÍi“f¾Ä`|·ÈûnùgΑÛZOW\"Ââ*,†0o–mc@Íü··ÎƯêe¡ăeѹ uœ²H¯éZœz}™¤K æÑùGª?¸åvf)ǮģQh^5fR_û¥¸¹đÍ-UßÊè'ü6»§Ç•Ù¡ ±ú„iâ ôàTM·ôƯ觛徽ẹ́?RS)«Pc[ơ!Œ.©̃rCSjMÇqi·ÛÜ>̃ÍIÂç̃Äv\ AHYƒéà ÷ɦ‰X¢ŸtÉ£_C/Êß6ü™ø—K*́› Î]²ÚÔ₫8}=}ađơΗ„Å»K6ÅÅ0¶)ÍNIâ¿¶± ñnë&º­ë"¿ªG¿F¶FÅm}G¿T~½GÛ)Ë'¸ưÑ«± ©{ôAu(ë@Ï‘‘Å%%%v¯úÆ-Í9ÓÍ3À$e'ăâcß …êkwGɹ₫Vº‹ iµŒ”;æÓ7¬”9AëØO§Coä)rRÏ|k~|§¡c„âIâsZ¢˜”tN””–ư˜Ø®úHÖÀ̃ĂÀ¾‰t¹¤G7‡¤7ÜßĐuRz…‡­Å2ưi¡á9‡ă;EîMö₫˜gbQ\8WĐ¯ĂŒXü/‚âR9é‰â ¿¼²å-ƒă-»hw0q6qîIÓ“C Aw2 C¨p¶5¶7¨æÛPV/Øø[ªlJw -ẓư˜m|ơ_CŸyí°!霣—Âê"ÈÈï¥Uu₫É}Ú͸’åf¹©¦â{yÙd) ªo¤@#¹:¿pÛ”| ›ơ±$³øé.ÂÓqp°‰J+Ê«MQQW™ÄÖE×›öI<̃)úÁéăç>Wÿ CĐNQƠ›ÏÄ"Íq7¯Üô ûAlj),ÂpHÍZ²z½©±WƯrµÍư3§Æ2Ằ#(®`"Ëø—d[›—ÄÅáa0Q>~Ï^F¼Mɪæ¦-Ê*æ”Rœ6ÇÈØÇƯ¹7·î.~Ư]Lm~X€PÈÛä韋ZĐÑrđËK+«Î4ĐÓ˜@¥è-J“#^W–e`Ö@d'FO’’¡¦Èɱj8™ˆWÁß¾N˜È9¨™¯w#­.¥9_4íË{,á™HII)ÄIÍÁ̃ó«ZÁѧ Zzid9%•ŒØ7“§Î‚̣I¬+7~Ly¿}û¶>œª­¦R]ơ–~‘›̣NTR–†ú8B›©­uñâE1yƠÖ·cÔ¸h%eƠMs–æ©S§%”´†r€==q‘îÅù¿r³ü!.J~ ¬ÏªodBÁ&¨i„¶•}Ê&ö&]·pRpɯÿÚ₫p*µàâƯ.‹{Ÿl;L“TV Í¦7ù¥æÖœ·mP”eA†¦` Lc]rltßêÓƯ£3]/2fIKK§>E~̉_a2ÿäifN ƒç0Lʩ裌µÎ‘ë‹p×=4ơ? U> ¾¿Nûmä:zzu¥^YF\äÓçÏ ¯Ÿåqăê_ù>2·°èg:k–/9q̣*tŒc·ï47)rüx-µ)ÿ6+V¬ºyóº̃MdƯ:RƯÄùÈÉ+ ñqRúkV­¼xñ¢̃rs ñcÖÈ)áÏ…DŤ&‰@…Tcûé@Nn½yÓgg-£cs]~ÊÛ²â¢u«– ̃W‘‘Y[[>uZ}î’AlÚ'8~øĐµẳØÎ₫98í_R̃–-^»²F6=ă§wÊ›`©ä›áß‚miôs¿¼|Ơ*f¦₫zµ¡  °´´:{ÖEgñºŸ>$ÇEé EyÙfkWÿóœpq°/4yrç̃23́˜~H022̀ÔÖ¼¯@·̀²å+=î^™±̀œœ|,.P2nÙÜYÓ¡¶ª€0ÿÁÜbÓ¥ ´MÖµ`駤́̀ K³ơƒưET””¨¶}îüÙ© V5w%ó²>Ylè×Íe ®¹{|ˆ‹“[ÇÉđÍÏîº/\̀Ç50èi×›™»¹^njF9zLó[NÚÇ´Ä͇I~Ä…jfÎ ö¼¡k²n¬½w2ß½Âb0ƃ̃/ÀË5o₫ßûn3L7Œ5uó>²¦ºrở%PÏƠĐ 3#ƒ­íö3Îgå¦Îdç#¿:-â%ß<’¯½¶½ÓÖö̀Ùó’ÊSÇ΂)áÏɰØ~J>k—›zù=yá5eæXñI€¯©|zÿÚú ǽ¬ÙR€RÛºe‹³ËY噯̀óơkÈGTÁà`cƯµsGbz†ï Uư…ƒ¸ÖËĐ={뽯:Ëà”₫y[[;̀LŒèËÈ̀ö¼î‡øÉ)LÙlaö³±Êt1úû<èuB́;Ù#¥–ŒÅ7§E…äf~\¾|¹æî]Ă!K̀Œ »‰ÚïÖíët ä¦Í)óư*¿¾öÂ+ ¸vÅ̉ÑQư$̀¿g—]N^Ç­s|b̉J#e*ZU~fD ¿²†ÖÖÍVĂ<«üÜ\Hûå}½ă~‘KPTBU{¤¸‰ª)Î}á;YQÙzÓF €ê`e‰Åz‚óưäô ß[7ùÅe'É« Ó1uu•QA₫ÍÍÍKL© íH¹~BEI¹~ơrø˜óØư"· ¨˜’&åøa˜U|ơ·È ÿqdd¦‹©ïÜ1Lr5Kw*Úb¹÷àn #¯m0<½´c1˜̣Üô7Á/”T4–Ă"í·•8ÿ*:.Á?ไ¢º€”üđt1‚m¬ ü^^f²hÑöÑ8‰Ÿ—k×Îèö,øUŔ;œ¶>¿Èđ̀*z,„¿đ¡¢¦Y¼p¾¦ÂÎddn‰;‰/‹!a±ÑrzÜÂĂÔÈ5•o‚|±́b“…jĂæÙ €ê`"->IZœđ¦yŸ₫2à-=£¬Ö¬̃1…%̀‰úô‚™…ÍpÎlóukF´‘EøI3»22³ưŸø‘QPNÖEÏ̀úos5‹)Ïˈy9‘‹{®>n¸ö "ŲiaÍ뢒R_?Ị̈²RÜÔ™Ă¡÷o¾!=&üSj’‚º†öÜđ/Ệ“ц$GT́ûĐ@>!)5á0Œ¶±¢82ĐŸŒŒ\Áe£E222²93tÑÖĐØø̣UX»ha)yQEỡ1…½ß¾´?foáưN3µ5ÑÖØØÁ/.#¦¤INNñÏ\]œøœô‚#=ßTC„œ¤8iÁ¥Êªê°¨7‰qï&L䘄S²EŸ±-M¥Ù o#ÈÉÈUTƠ•å¤Ô'K2#O˜´Ùjëê"b̃ÅFGÑ22‰áTYy†¦ăÛÔX˜•øö -†º&NzâˆYƒuưê(ĐÔÔŸó&…ÅäU9…Ćl¤¶₫Gz|ô§´$^AQí©&ó 0h’C}<ÚP¸¸ôÛëđÀ©ÉÜB“Dp*tŒ̀C” |Ë¢œ„èˆUʪªJ8¥í ̣Ÿ@IAa0Cm(œ•—ÿ:$´07GPBVh²̣xª!rf‹Å7ÍL}ÿ. eFEM]c²Ôz,ô ’üCáÜ‚ÂW¯"¾|₫Ä/&-$7eÈ&8`[Ẹ̈2̃GGb±˜)*êSp2jrƠÀ?„¶½̉ÜÜü!+;>.!'ë#ă~A6nA¦‰œPÉn¬ÿV˜[›…̃¾ä”"bâ*J rj ºj cÁÈÔTTÓµ4ĐFú˜•›ÿ66.ûc%%;¯àD^A&v^̣₫û®h¨.ự9?7» ;‹†^T\BEQ^NKe––ʈ¶99¹ºm¤ùE_£ß½û˜–:œ‚WH”•[`ßÀô™ÔWå~.̀ưœŸÅ̀Ê.-#£$/+g4ƒ¶Ñ;ë#CŒa`jccc\bjbâû₼‰\|́|‚¬|B´ôDăƠ”}ÉÎÍ̀¨­₫!(*¦¨HXbB'‰ÚâåZfJ ×ÔÖFžOMNú^^Ê% 2‘‡•Gd<Íè@lKÓ÷ẤܼœOX2,áÙ«  §1e†Æ”±`d>.ΕK¶ù]|RrRRyi1'¿3Ÿ0ơ@,l‹„teñ—¼,dä–æÑIâÊSå”åu”塜 ú‘‘I £­ăÎêÚOŸ³ó¾””~ư^^^]ơíOMK9;nÜ8r2L ¾¥iÆæúÚ†ú†Ú* ÊñôŒ˜™Y&NœÈ/À+ÀÍEÁ+‹™" F&Ôöø¸Ñö‹^kl̀̀₫‚øZṚ­¬ôGƠ÷ÆúzñăÇSQSŒŒ%'£@ni!˜¹®®¦©¾¾¡¡†‰‘……mâD6A~^~>. +FMit[›câü9ú´µ*sŸ²órsóJJ¾–—•ÖT}'#§ ¥g@Et<55y}]}YY)7/ß̉PW‡6dĂªJ2 r&d?6!>öÉü1å1R)((”äĐÖqgÁׯYÙ¹ùù…å¥%H bFCÇ0Ưî”ÔÔă°Øâ¢"ZzzZZT‰÷{=28)ÚfBaäăăáçgàÅÈb03à~ï 4ÔÔ¤µLÚ÷ ÇiNAQvNnQQQyIIeEyss =#5ơxJ* **,v\}m-%a-o<:TW[ƒƠ•ßQ˜ •kvv~!^j.)Œ‚cFÖR›‚¶F₫RTŒ <2r2̣·²æ¦&†ñă‰={±Øúú: JJ,ÓB0rmc}]uUeSS#º̀,¬l„Ï+"ÀKĂ)™,ÁèCa@ơ0R¡¥¡–“’@˜bđ ¤ D˜¢o•9Y‰IhûS;;»ÿ₫ûǃ­₫ ×ĉhëî@K+%%¶TÈÈȼÜƯÄaggsơÙÈüÜ\hë&‡‡‡²²2˜ ƠĂfff0Ẩ̉̉FÔƠƠ100€ÛÈôôô`T wXYYÁHSSa8P__ÏÈÈvl#ÓÑÑP}0ÜáççGsssùøøÀư„8Ó©́đÏ),,¤"¦<đx|ee%777˜ƠẲ(8sss°FÿU_mm-ØáŸ“’’jd°ùôé333˜ƠĂ "aaa úúOKKKMM ØáŸ“* vT222888À¨>PRR’““GEE)úOssó?Àÿœ·oßâp8°Ă '..v@ơÀ€ŒŒ,//¯¢¢‚‰‰ ̉gªªª0ÄA™™™ÂÂÂ`HTT”™™ØaP‰>}:ØƠ#Cơ!¡ÂÀÀpưúu0HŸÉÍÍ¥¡¡7n\xx8¨¾Hyyyaa¡¦¦&˜bPyÿ₫½““ØƠ#ZZZ̉¸Ä .€ê묬¬ƠƠƠ/_¾\µjä_qưúơ©S§‚•´´´††F €ê€‘ª½IJJ"áçéé¹páB°IßHOOçççONN~ơêXăâáá±cǰàrçÎ̃ €ê€‘ó%¢­­zôèQP}}æăÇ222ÑÑÑôôô)))RRR`“¡'???33sñâÅ`AÅßßÿÀ`TŒÆ¿hÑ"###iiiggç-[¶€Mú@RR’›››¾¾¾‹‹ËåË—Á&CºàÇe°yûömIIɼyóÀ¨>1PQQ±°°đđđ¬ZµÊÊÊjưúơ´´´`–̣̃ñăG555]]ƯM›6êzÊË˽¼¼¾}û¦TNœ8±fͰªFHăUTT ±wëÖ-‡Y³f………YzEZZÏ\\\¼¼¼•••RRRW¯^Ư°aXf(±²²Bz›’’L1x”••ùùùƯ¼yL€ê€‘==}ii©¥¥¥““ÓéÓ§ß½{gmmíââ–é9/^¼PTTD ‰¤¤$GGG¤¢Aơ %‘‘‘¯_¿ÎÏÏS ¶´̃¼y3˜Ơ# &&¦̣̣r@bïÀ̃̃̃RRRwï̃]ºt)§‡„††jii¡€¬¬́ƒ´µµÙÙÙõ¼ K8 Hf_¸ṕ0¨dgg¿xñ‚ô¸P}0ÂT_qq1 ́Ù³‡——7<<<99YPPœœÜÄÄ́ÓCƠwüøqPSS#ù6tuuƠÔÔ\¹r%‹û äSWWÿ"ƒ ²đ¹sçÀ¨>y°²²–””ÂÎÎÎæææHơeff !á7₫|0Q÷„……!å,,,ŒÂRRRƠƠƠHEKJJ"ÓYZZBÔ`sï̃½7õ¤¤¤€)•ƒ̣đđÀTŒHØÙÙ¿|ùB #¡ríÚµ888dggËÈÈdeeÙÚÚ‚•ºáÖ­[†††í‘đ B•ă«W¯rpp,[¶L]]¬4H ±gnnÓù›øøø3g΂)P}0"áââmÿèííÍÆÆ¶dÉ ‰äääÅ‹#s÷î]0ÔŸx̣äÉëׯÛ?"Lê ĐÖÖ...&'‡êÊÀSTT¤¦¦†J)¬52¨ÔƠƠéèèDDDPPP€5P}0"áăă#Íëk}­’“ûøøL›6­  €ŒŒ́₫ưûçÏŸHMM¥¡¡suâÑ£GÜÜÜH!·ï™={¶……),++»{÷î©S§¢3Øj`A…V\\<22’——¬1¨ÈÉÉ={VRRL€ê€‘Đׯ_;îÑĐа··WWWB---/^Œ¢¹¸¸€—N8;;#ûtÜ£££ƒI~~>Rƒè£­­íÇW¬Xqûöm0×@‘™™)//Ÿœœ ’o°QRR²°°X¾|9˜Ơ#QQÑvo.íX[[øđaÁ‚=Â=¾YYY999ÅÆÆÂBØ$êHOO_¿~}§ưZZZwîÜÙ¹s'éăåË— ¶mÛvêÔ)0Zÿy₫üùÊ•+?₫̀̀̀ ÖlÉgll¼uëV0ªF6HÂ111eff’¼P¶s₫üùµk×._¾ÜƯƯ´çܹs•••âââ«V­"­O0ÆÙµk×öíÛß¿téR$đÚUÂÏÏoΜ9666§OŸ»ơ[[Û7õtê</""²wï̃5kÖ€5P}0àææNMMí¤ú×®][·nƯüùó?~LÚĂÀÀ••8a„;wîèëëY£ÅÅŽ{÷Î××÷÷CK–,Ù¸qcAAWûNsÑ¢E0Ô³Ï444ÈÈȬ\¹&I6ÅÅÅO<ÑÔÔk ú`”€ô^rrrÇåÚqsssttTVVnß9}úôoß¾Ư½{‹Å†„„L›6m  éºcÇưéè‚ N:uâĉ;>|¸ÿ₫NÆzÂăÇÍÍÍ988Àƒ {fffÙÙÙ ` TŒ$%%‘êûÓQ$TÙØØ>|øĐq&ƠR"7õD;Ñß.EăhåüùóăÇ_µjƠŸ"ܹ́SCC£“êC =uêTdpNNN({¥ªª ‡Ă-^¼Fuúúútttú¨>%ÈËËûûûw_LOO»}ûö¬Y³:ZE$<<ÉÂmÛ¶í̃½{Ô›«ººzÏ=Ÿ>}ê&¸¸¸¬¬́•+Ẁ̀̀:̉ƠƠÍËËC`̉T÷X[[#…LEEÖTRSS544Đs@EE¬€ê€QˆººzFFF÷qXXXJJJJ9räHÇEÉI ú":úưûwmmmè8¥m”1uêÔ“'O"•Û}4'''SSÓßU‚††&77EMLL¤¦¦†BØ ˆˆ°Æ ̉ÜÜŒ"""ååå` TŒZ€a``HII‘’’ê>æơë×SSS™™™ƯƯƯwåÂÈÈ‚訵µơªU«Nœ8AFF6leii)))ùûj ]jéI“&9;;oÙ²¥ËûöíÛ¼y3JmíÚµ( åRÔ‡NOO§CÀ®]»îƯ»ÍÎÎÖ@ơÀ(GNN.00đ¯ªCœX^^~đàA++«„„„.]>,'‚Çă÷́Ùsé̉%T‰·°°V:wîÜÛ·ocbbzÿÚµk222H(’“w]]abbúüùsppđ„ |}}‘PË…ĐÆÆæáǯ_¿îr= ``Aw¥½½}JJÊÑ£GÁ¨>hii…„„ü©WêwöîƯ‹ªŒïß¿Gº¥ËuÛ±X́"vvv—/_FÚƠ5Ñ₫‘h"Ó§Ogfföü>>>333$€ïƯ»×M4oß¾]¸pã¼y·oß={ö˜*{ºººĐ¿74zï̀™3{ö́k ú` ahhØÛ 7o₫₫₫ÍÍÍHơ¡Jd—ÚAAAqŒ _¼xÑÁÁARṚüùó#Ḥí̃½»W’ÄñăÇÅÄļ¼¼Œ»¹‰Èµk×XYY½½½544Fw‘ĂăñȤW®\A/-- îÁÁ¦¡¡aáÂ…éééÏŸ?½€ê€±’aăÇÇáp½:‘ŒŒ,22²©© U(?}úộåËî$° ‚yyy , Y½zơ₫ưû™˜˜†­qÎ={é̉¥́́́¾Œ̀;}útzzú¿F^KÄÇLJ™™ÙÑÑÑÊÊjô¶›7oÚÚÚ"Œ”? /ÂĂĂ/^§ÀÍÍ}ăÆ …¿:JmÇĐа¼¼¼¸¸EGGçéé9¬l̉7.^¼ˆä½¾¾₫… ºYê(JKK‘ÓÓÓ‘ØËÏσ úÀ ŵté̉“'Oö'‘­Ḍ̣̣&OLCCƒt]OÖ"G‘Ÿ={F çææ™™=xđ ¤g̀˜ñ¯ ‚Ĩ¨èáÇû/QŒ?}ú¤¦¦Ùó³ØÙÙcccQàîƯ»VVVæææNNN#«¯ ;vx{{oß¾ ûÑáÔg˜SQQ́ré̉%???0ª€Ÿ MBII¬££ÓϤxyyPàùóç̣̣̣W¯^íáN>>¾+DH‘`8wî\LLŒÍy¹tuu=pà@JJÊ@ =EâÉH--­ĐĐĐ̃»”?xđ ’åÖÖÖ(oĂV₫566¢KväÈiiéS§N]'÷×`“ºzơê²²² .xxx€AP}t͆ ¨è¿êkgÖ¬Y………(àïïoaaƯ7„……{‚‘öÏ=C2((H\\|ƠªUË–-cddX#”””L<ÙÎÎnÀÅ!©†4¤””T߯‹b±Ø}D0ÄÑ’( ©©y₫üy..®^rªªªNŸ>}ö́YQQQ"pC 6555‡F{ö́ÙÈ₫=_S@ơÀØÅÖÖöĐ¡C999üüü›²¾¾>JĐß9sæ¼yóf÷îƯ[¶l¡  èU:³‰´,++svv~đàAbb¢‚‚‚‰‰É¢E‹ú<®¹¹Y[[›––öË—/ƒ´¼úÉ8……%==½?SơÚ⤥¥­]»öƯ»wH¦¢ÄÿäFu0@ ǜ™3ÑÑÑóæÍCWs?¸‰›ÊÊJdviii$ù³ úè)HếرcëÖ­^^^ƒôHOúúú’Â(`ooÿưû÷mÛ¶! Ó[ˆ@̣i ‘ö=555wï̃Eù ¡££Ó̉̉200@:i¹n̉ill”““?~<’£TTTƒjd”¥́́lIII''§Ơ«W÷35 ‰çÏŸ“ÂAAAûöíËÊÊ233Û¾}ûÀö‚655yzz̃ºu+<<ưKKËN <ÂÂÂNŸ>®/2ø₫6À,¨>ú’a|||¨f?ëÅÍ!B ¿zơÊÑÑ1!!ÁÈÈhçÎâââ}K“†††4 ®ăÎ $Wüưư#""ªªª´µµgÍ¥¨¨˜ŸŸ¯§§',,œ˜˜HN>D• zzú¼¼ª†“'OΘ1ĂÑÑq8LBÊÄ„Hû .xzz¾}ûVRR̉ÈÈIAQQÑ?¥€Çă‘ rppX°`³³³©©i÷ßHAA¡N¤Ë£µµµ!!!HÆÅÅ¥¤¤äää°°° lL}ª««C¢đWơ˜‘‘t’vï̃½ËÍÍE" 6 éÓ§KéùOj_‚Dss32&̉ÁÁÁ(q”s$Zæ̀™ƒpwtjSˆE÷ 2 ĐÓÓ«ªªÎ˜1•@’Àûï¿ÿÀJª†)ïß¿Gʆ¡đë‹%Ơ°‹‹‹wíÚơøñc“ưû÷ûùù¹ººnß¾]DDdÚ´iH· ¿}đÚsØØØô‰t'''ÉÂäääÔÔT$̃¬ª®®æááAê ‰ĂY³f!Ơ§®®r;wîÜ7õ ]‡äkMM :*//¯¢¢‚~Å$"6lŒ_AFF6H§ư(Ï>>>H ¢,Ñ̉̉¢œèéé Ơ:ºo‡ÊÊJô«ƒ‚‚ĐåHKKăääœ2e º $·@ˆƯ»wĂC@ơÀÈUñQƠ¶¢¢bÏ=Ă6“Hé8pà̃½{H~9rä:̉!T5owÓ1>’‚HV¡ê;úi :::H·àp¸!Ë3?###¤%""""##ăââµCCC‘,**BfGÚ•êÿû_HHˆ””;;{^^̉UUU(@̉äYYYjjê!Ë9éK;)œææfô+?̣ŸÀÄÄ„̣O²*ß*đMMMQQQHƯ¡+‚~H}}½œœœªª*ú-FDà± ú`´3cÆŒ̣̣̣'N Ÿ\•••!¥çî«‹”̃%"=<ɧµD:íOMMơơơ zûö-̉QÊÊÊHF¢Z>G²Z[[‹$Dxxø»wï®ûúơ+B222JJJjjjHu¿điyẲ̉R””——R€„ R€III(ñôôô¬¬,¤ZxyyI=‡(₫äÉ“‘T¼¥)ÈÈȺœ ‰ÇăÑoGj0,,,>>Y]²9sæ ́ưẶ“íïï4jlllAA¨¨(ÊØÔ©SQQ祪Æ"/_¾œ;w®µµơà9™́ H̃œ "++{úôésD0}I";wî́¸³±±ÉŸW¯^}ụ̀É'$ .\ˆbvŒVTT¤’^444H×!E‡ôƒ––Vÿx°²²¢ôQ ¤Z /_¾Lrú‚´œ‘îS¨©©‰NHH ‰Ằ̀L¤?QRÂÂÂH"M(//~ƯÀ.RÅbƠˆtÚßÜÜâç燬2ƒÔ)²’ÁôéÓvđ-ú±H6“¦>"%¬  €¾hæ̀™¦†ªÆ:OŸ>ƠÓÓÛ»wïÁƒ‡ø«‘*@µó´´´Ă‡ï"2”ßDHû$=RÏUPPĐÖ­[ß¾}KZùiQ$–V­Zebb̉iuøÁ‰–ââb¤/^Œ$ܳgÏzè2 Ñn“’¨««#ơIÆÇǧ¤¤dee!¥$""‚$.‡#Í^ѤÈn]zÄÉËË{đà’Ù111<<TÛ¾zơ*E¨N?à‰_¿~}ûöíÇŒŒTçææöđáĂ> )²hÑ¢¥K—ZđïBï̉G$]:äêêÇă7mÚ„ÔÚ@ù̃$-µ·jƠªŒŒŒđđđ₫/̣̃7 ˆü~¨¸¸ØÇLJ´́AYYÙäÉ“µµµçΫ¨¨Ø)&2΃.^¼;uêÔuëÖ+++ẉÖs˜)ÜĐĐp₫üyT2ọ̣́ĐƠܹsç¿u¨>Ù,Y²U¯Ï=‹DË@¥¹uëVoo€̣̣̣ÏpLLŒ‹‹‹ŸŸŸ°°°©©é5ḱˆ ½éèééí‰>¾}ûÖÉÉ)44tÙ²e¬¬¬ưLÿæÍ›………7nÜèRzưCØÙÙ×é´?11Ñ›HjjjKK‹   ¹¹ùâÅ‹{8%%eGƯ^RR²cÇd dØ3fÀm  úèḤiii ˆêCêëîƯ»gΜ΅eff=zôáÇrrr7nDúÁƯƯ}QIIééÓ§¤0̉<ëÖ­Cv°%̉ç%899‘æ™?>úÉĂ¹!¥÷¿ÿư¯´´É<ôĂ;v{FGGß¿ÿÅ‹HÄêêê.]ºÔĐаç6acc;NCtÁ óóóŸ:uJEEî_ƠÀß‘””DåäÉ“¼nô'O¬Y³&44ôرcưÏ’ŸŸŸ££ăçÏŸ­¬¬¶lÙr•ÈÈ2)2)Œdđ¶mÛp8Ü•+Wú6RññăÇH™KHH 1ùWï—CI||<º:033ûÓçÊD:îIOO¿uë’‚ƠƠƠ ,°°°––îÉ7RPPl%‚!δ¶¶Félذ•–¡\ÚP}0̣رcÇÆû¦újkkeeeW¬XÑÏñœaaa¶¶¶_¾|AbƯºuĂmLcŸYJâââtuuYYY=<:£££Ó̉̉‚jđ¨̃Ü«QmÛ̉̉2--­oUí;;»[·n!͉Ä^ttô(6²¼¼|FF „‡‡+++Ϙ1éœ/€d0/ ››;ô₫]س··¿xñâîƯ»ẃØôù&tl»6&‰ÀëׯŸ?>//oÆ èë»Oa!đññY»v­±±1:ưßÊc@ơÀ°cÑ¢EHTôJơ-Y²iÅââẫ~WAAÁÊ•+?}út¶1ej ¢¢"Ø»wï¥K—r6mZONœ={¶££#Rïß¿²Ü^»vmûöíÛ¶m;tèP{ïÜ ‚ÔÚ"¤ééé›6ṃóó›;w.ÊC÷£d KJJPÀÁÁÁÙÙùöíÛ£¦Ó@ơĐ_V¯^­­­ƯóøRRRVVV=?¥¼¼iË́́lWW×ÀÀ@°ùA"‘‘‘–––ûöíûë)ëÖ­KNN^¶lÙ;w5oH™Ï5‹……‰̉µk×₫C+‰‹‹·ÿØœœSSÓçÏŸ# 9r„₫Og‘ÖØHKKVUUẸoXM‰Tü›º5ULL̀_§T555 ;wñ¼y=L|Ï=—.]:ỵdPP˜ºjjjEEE?~D²äøñăqâÄêƠ«ICCÓØØØÔÔ„Jcmmm`` 9Ơc¿.…§  €‰±±q÷ÑBCCŒŒ;Fª—=„ŸŸ????::‰‰ÉÛÛûOóư888¶mÛ¶lÙ2gỡóçÏKKKGœÑ‘\w¶_‘+V́ڵ믪ï¿ÿ₫»ÿ>’4`F Ñ“gtttff&++ëƠ«WI+‘!=Œ̀›““mªïÿ́Ưç~Ï9œ³Z,))©²²²œœ111v—;vøùùU À`0”••ƯÜÜÆrưz"""$«())=ỵDVV–t111!Á/55U^^¾¡±\\\¢XP@NdK~÷î ̀K–,‰‰‰1b„§§')/ ~4 %@êh™Ú¶mKr;ơ8qBFFFCCƒƯ«°°PAAáäÉ“FFF(Ôo\A$‡kii¥§§sqq‘.ưúơ;uꔓ“S½ĂïÚµëÚµk<@éêµzơêyóæµoßư$O’¢mmm ÂÂÂP¤>€–©]»v)))½{÷¦XÏ÷·¶¶fwÏÏÏ———¿qăFU„ßE__Ñ¢Eƒ&­Ă‡?wî\½©tß³gÏÓ§OQ´/‘‘ÉÎÎ:t¨··÷‘#Gœÿûï?KKKOOO© ’””LOO' 999ÑÑÑ́·]Ưºu;xđ "_3aooáÂ…]»vÍŸ?ߨØxé̉¥u‡ÉÊÊ5kVRRÊƠW¯^]¾|yß¾}ïܹsàÀeeeR[T© ¥‘’’ÊÈÈ Ă† cßƯ¤¯¯okkË~è4íÚµ›:uª‚‚‚€€À£GºwïÎ9@¿~ư¼½½%$$P«FZ³fM§NŸ?Ô³gO’œñHO¤>€–†„vêóóó³°° K—.[¸p!Ó¬ĐétggçÙ³g_¾|YMM-<<œ3ơ‘µÖ­[·Ñ£G£PßÄÜÜ\PPd¿ääd̉leeuøđa”©ï/”»g€íÑ\"¢¤9/:«_dâQ:ÊĐBHII=~ü¸¬¬,::zÊ”)ä_¬¬,T¦Z¾|¹œœÜíÛ·{÷î}ÿ₫ưªîééé»wïÎ̀̀D‰`üøñ¤t={öŒOHHPUUEYZbêûb(Ü?”£ƒóơw›µÅêacd>LN¡¨v›ƒAQH}-…ˆˆH^^^```§Nxyy'Óíí§Ø7[‹/&ÙÏ̉̉’ưd6+++~~~Ô§i¬­­Ó̉̉ÆŒCÊ»páBÔ %¦>^J¨f~^¬ø+ˆ‹‹øđ!((HWWwë֭ÇGY-›+V §¤Tü96..î̃½{œoY„&X¿~}ß¾}IrˆˆHJJRVVFMZ\êk”‚g1wîFÜ‹}™““]À¤Óé̉J]4µơôhË4|î« ëiÄ»÷b¢^$åf”&&­̉QK¯¿¾N7éZgÄܸ÷’ÁËÊœ ¥jh¬"Zc€’÷q×o>§XC0Œ¶ªôU„ë›kfLdđ­Đ˜Ä¤×…4b Hwèah<¨¿nç/,i|øå˾ ¯sˇWRTë9pÔXm*Âv Đr‰ˆˆ|úôéÁƒ³fͲ³³KLLDM¹Ù³gŸ:u*''‡ đ̣̣.]º´¡w÷Á7¹uë–¤¤äÔ©S׬YsäÈàïJ}Ëd×}u°³ÏÄÀ‘©̉Wj´_ûƠñ´&†™«°sO-́ÀñP×w« j\hÿ́‚ÉXתVư¥á¡kơ8úç4ïaáVïœ6¯©hpȳÑåÈï#&ˆô=‡àoM}………Ï=KHHèׯŸ´´4j̉̀YYYikk·k×îÉ“';w¾qă (Ë÷#ä½'N¢WêË»¿†3̣ì9ä·kv噽‚»ÇéNwg·¤(˜¶/ÿÚ*s:íç…†nÔï L¦Ÿ^5ÇtÓUl¦-;ơ•••>}úøñă(H󧬬ܾ}{ƒñüùsÿ!C†à¾åŸ₫Ù»w/IÔ'OœQăvö˜C^Gw1TSF„„;ºÙn¦ÙîzÇkSăNÁ/ï *í&i)ÉĐy(ºt·h¦Û^ĐoK3ÎÈgöïKï™̣•m¢ÓwÜî¦0DÓ₫:»=Ài¼×ȧæ*ŸOÛÿ¯Fä}ˆqqvÅ{jd'm 2~¨¶+¶T€–ááÇăÆKNN®ÛëÇ$?´jƠ‹‹KJJjÏ=DŃÔÔT[[Û„„ó8»Oœ8‘ƯÀ~ú -vvv²²²(Ú7B>>22’ùăÇ™™™3gΜ5kV) {°:Á°Zfêѳܮ¿œăªË—Éú.µR4q]¹xÑŒ~—wN[ºÆ6`yU{ØA{ƒƒöµÆ>uĂ’µ ô;üˆ%ư”ôøgû±Y Çf}aø¤ô7ù”JỶ‹c­_<¡Ö«IEzÏvÖpƯƒm %PQQIKKûÂá/»áưû÷$Q())=xđEûíöîƯëëëûƠÁ‹‹===ÿư÷_mmmÔ­1HîÔ©ÓW£Óé @äh±©¢$íC™öTILÀ¿ûwó «gWVÏ$r,ßg½"..c2—•¼‹:ê¾ßûØÁФzÆ đYB>¥́ù8΢[£~¤ßOh pëZ]L,-üS_av6•ó–¢Äù[ư—•‹  … ‡­;wîüßÿ₫÷åÁxxxù‰7†‡‡ß¾}û«CÊËË“•‹È×x;v ụ́im²²2777”  §¾_Ă-=ȧFÇ‚gÁḈZU_Wyb…ï:SÓƠ_G\kîÊäSc´¬§>ëX́¬º_.Ér™Ï´‹³é”¨Jß¾Tت!ïßK¦j<Í%ừ -"oÍ·Oè¯Yᱬ÷×¾WoÍgzº́¼æ¨[ăt_̃ưă›_`Ch9¬­­=<<>|ø…ÈÇˡZ5$ơIHH¼{÷î Ăèéé©««“ơ‹r}###²GXYY54@ii©……EëÖ­Q+€ú" úr¼½]ëhT ¹¦xe+½³¡AocăMíÅEË¿QŒ[MûȪ®sœ&R5„Ê ¡½¨êÔGitSa‡¯¶R‚œóp̉¦ƯXíí¬!Ræåj0×½áeµñ¾|˜ă¹,a˵5_ºzp¶«5#|«¬>çc•¯d>7– [®ÿ×ö,Ç• ''̣Æ/‹Ü V¾@₫§™,¹ˆÍ …‰())i(ơƯ¹sGXX…jV̉ÓÓ«n3«¥sçÎ\\\ûöíC¡Ạ̀̉̉¿ÿ₫ÛºukƯ^t:½¬¬lǨ@ËM}ü}B ˜ ộ®ü-9CKbFƒC+M ÈÊvvÑ­§jέ8/sÈLôYC£u˜ŕnåÛt́®xEó{sô¾ºRSreƠ,,íúxº«BmGF•&,ê­Zu^̀¡9’‡æÔ3dŸ™w±Ó O§™ùO»Î«îûxc7Á EˆÂ+́₫p$œ9sf̀˜1ơüêăç?tèP÷îƯQ¥æ†——766¶[·nơ&“‚‚‚[·n¡JM¶eË–„„„+W®Ôê^RRB2!//~Z@êăïhá¾mPåă:‹ Û ëRy]%¿–“éEQYñ¡—®Ư‰OLM₫ô‘5$SHJI¡›–î¡Æµ‚¢1LJ9LJ*L»ætó~܉)ọ+b“ ”‚f7>CM†(ÖªÏt/æt¯’˜K;¶¾ư꽈ˆ%(¥ƠœµƠT Yª4¥Ÿœê;û0E­;IÖü5̃eS4sEå=‹ô½pưöưøä|)eÁ7Éo¥:¨ơê?b̀Ø‘å©ơ«BƠÉ´*¿ñ ×…€°7ŸÊ¿P;µac§L™0\Q”¿ä~9¹„¿²8í°ÙüùF­¥¥U«û?ÿüƒÖ7[jjj$œÔ}';F‹‰‰a?É̀ÏϯK—.OŸ>­ê"$$DRßÎ;Q€‘ú(Ù16_BBÍ`.ù|ë„dơG[Ï7Æ£1ÚÖk´m}ë0ƯÁå«ă‹tÖN>öß2Kq­¹‹É§¾ß1£mƠ°©´8<àááá¼b°OŸ>›7oFe3GGÇ3gÎÜ»w¯úXC@ 00P\\Åù~‰‰‰bbb¹¹²ûüùóôéÓ¹¸¸P€–‘ú₫F·nƯêׯÅzƠN¿sçj̉üƯ½{WHH(?¿â¢Ơ«W³W"ü999üüüÅÅǺ}@Mú₫`zzzYYYä·*E@ó÷ñăÇV­Z‘†®]»:::¢ ?Ù¸¹¹?₫ơÅ)6(ÖJCGº}ù{fĂ61Xr½²s”IÿM¹ñ‹8.$̀<µ̉ạªă ÍMi˜ç̃-;ÔXΰUƯ VÆWµºFÚ—º‹ê;ƠÛđäăÓnY÷véê,¨SƯ#"mt9̃©Z¢%Đ?ºªUrS₫Û™z;œK­5¦¾íéÀƯéTæó^¶̃iµúv½÷îEë:Ù¶ hïâA6»ú¦fk<–£svªµ<íVå¿YrmÑȱ›¯ÖƯÙç¿MS:Öîúúº¹̃ƒ›\yáÎ+„í©¯»vG׌|é6È4<¼₫âk̀ÅơöÉ\©ÑnUl˜§©™]=‡ä@·AJn¥uáƠƒ1²•]ùZs²º@W ™¬NŸÜà¢%Ùö‘¸²%Öß±GEU#e.¤-ªẁ0÷I‚î N7å̉ÿ$i7#óOëTf¸¬€…’ÆÛkeNcc•7₫₫U_ơزáÇ–QÛ"̣t…ë_·+i >PkóÔN›w¹åF,¨LÔ%̃æ¼æ̃u†SV¦Êo¾¼b¢x[?R_]¹Á₫×k„ºQ#d2ßôEí7sF¾Ñ{s/Zs>Lä®Û]ûK•mQcÛ÷¿̣ê–1+øi 4¦¨HÎÉ ßrÏß±7«±`± m@͹̃›Ñ^1Ù!ºöƠ_!Ài¼Ư>5vÚt£O…†q9±*¼<Ü%ØsA­¯áUh£Éº?®(ÂD ¯uŸ3î̃ :Vª́^Ö5#ßüëïvjËnλ½L´_ơ»ÎƯ9=εâ(QTơƠ§L¾/<ït[T\Uä#$¸¸_W;â²Âù‰Ư5´c¶ß›#̣•ï[§ÏöÅP¯¢'Ç\ƒ1 ü˜cÁ{§!ư4⨓ư?ï~‚\µùáÁ“¸¼xSæơÓ àÏM}BmË8Ûơè~‹»„.Rqå‘»¥) ê+o¬"Èàj/N1|t´:Ăú(c~êÂN}¹̣_ÀoC6₫¯ÿÁS-jè±—ÿNăa­¾ƯƒÅ6ıÖÔº µfF¬D‘ứü*óñgƒ=¦ëz̀ñÊX3HÄï–B }Y³́¿âê.gu’éKsƒ=₫1[wü“Î!'ĂS ·ô…)Oä8ª̃“Hu{¥‘é=«bSq Z;ÏH˜ơ£O,áà~l™₫±eÔÖđ‚©J¿¸¼âÜû»ÖîÚveÿÇâMÚ̃vŒ§ï`7)*w§’UçñWŸQ§ọ́á©{ ë\­Ụú̃Êî•ÇG ê†ÊB#bđĂ úê'3l[ܤn6ƠýÀT…SMF1׬¹›&î˜7ÄÁ«:~$xl“dỉ“®7Á’ZîYƠ#c‡Ñœ¾É‡&pÈÆ¥Æ-m†¶SzÿÎ}œRÀÙ®1izuä£[Ơ‰|%?`¦µO“˜5×t çKØ ạ́N€Æ¬ÿ}¦ew¬9ÁnÔ™3œưûïéI[v䓟¹~(Çáfâ")Uo:gg1i(+ |ZnĐ9v䳋~½CÉÑ+ư¤Ù¬}b] ü¯<³2î\̣̉S¡«‡Öá¨ä9†ü2¾sÿÊß´{ÿSné·Ô{—TV>º¹¢êËe?XÆ|: Â.,êWÛ®>Ç4Ù®7vëꪙ[ä'Ö£ÔZ·c1J€WH¸̣$RÛÎăvE2wq̀$Ío;̣ÉϺ¹®̣4/·¨‘ͱÇ}¦̃Lg´yŸG ‹|ËZÎÜ:‹ù O%Ử¯JvLAÍÉ»3FŒßyhE9Î̃irk±đï+đß¼´*æO¶7™&noÊ[ƒ§ªV…&ŸœÖÏÁ‡¢Ô3ÁÏî'|AÆÙ¹‘ÏdMü9]9Ôü†©|„u€ÔW—Úÿ.2ŸĐí<•ăaWfhÌøÚˆë¯½[2˜}Æ©‹3¢©V¿”Ăiåw¢iO|TkTĂ™·₫‘W¦ˆj©Ö¸ơ1f»m;¥i¨Rߟ—,ÖƠ2¡êˆú²MŸ«Úÿ<׸äRư¼œA¢4̣Cvüø)çÎEcĂh,ÿ±Ê´/ô¶9ôléđÓw*¦Ç3LS¥™qÑ|Ï̀x“™ư₫}yâ¼ç•Ă7å¾!¦`[9’5(ÊMSÚ’3œ3aâƒ₫ƯƠ;‹ËN>v­úaƠưT4µÓ§’üVßÔÀ+Ä«Ơ‡(¿1dÿ™{úÖÚ-rmé È™/^̃½Çn¸»S_fgƒcƯ yLéö£˜¢3$½›¨¼=’:æ¤sŒă…Pê¬,¬&tf·f½¨xÀÁ´q†µ&ƠVÓx‚f“½èIl\ůlÓ/lrϽ_¬ÿ›b ÏU‘ï{¶7ƯEG8#¡4uùÜ>É6}ñÑ{»ÿ?Eœđc7M´Úµæ‘ÚˆơK³O ơƠÆÓiJs U~jí¢/¼mMcÚÆ};êHÔ ~L÷WαêlƠăa¢ük=X²ŸƠ /÷Zïë£Å5v䢧ÇÔÎÖ́⽌75 p̃çWô±Á^¬ÙfÔøù̀øRßW•K¥aw-EeYăuœ}+#ŸáÑÇæƯ›ÓºW=q39Üks8E ±Đ—mơååùâ"I.‰aN XÛÁx9Gÿ¤sçØyZù@äåNjËI|U¤/Â] –%Ç"H2?‚yé¢ẩJRµï±zzeî‹C•mZ&Óµ:HHµn#ÜŸé₫]‹À;rSêÈMŒÄÛ'}<èrhùT÷–Ÿŕê¶iä8™̃–βî3{ë¶ÊÉ·Ît”¨—/“è|Ë3+J+PûôNC¸”Ï3ÙÍ¥¹ÉO£î̃¼~ÖgsÄMùäCQf{_l£PBULöQl:¥ơƒJ £°¢iâƠÔÓê­fM̃̃2̃ÖyRS¬̣DRđglBK—P–¯s…,okAü ¤¾/-kº̣ù4} Âê+ϼ\ù#‰è­e2×6Ø»a“ÙpßÁ ÷%IiIĂóƠ_Ç\Ñ”¾Ă¿¸À”º“éUï¡Æ—ç«‹¤8|“¹¬Á̃¡L{́_a¨­¥Ó­1öŸB\*"_£öV‰ {·x§Öá«Y¥Ö¡i=óƠäSƠ–́>ƯlƯ…ÔfªO³ǘ…*œ»Í ¼Æy‰éßJsü jë̉peùÊÇ3jG©d¿uÿ&ˆ f¢«^₫X¸́§!7#oß{9ÀuÏ0yn[TImùL±ƯDq=0k×;˜¢ưÏÍáÍ3¨úÉnNœq¤ ÇdĂ7´Ÿ´;½|8ß½f§-(^q̉Ạ̈Ó‰Ơ›Äă#µN. ơŸ2‚(?uf£ẂñÙ=kô-{¼{ñÁÖú£È ó4“̣6}{£×ị̂1!ªâ– ̀| iMØA¾¨đS:»!+"á=Uó\"#%> ; ơÀ79s'¡P]½â„ḄµåưfVưá/$ôI¡NỴ̈^ơ†³Ï“́øß̣‘÷öU$ZîYç₫ó½kÜd”|~j?[Ö=„;¢OÙUß×Ç”U¬xi®|%r+<̉Ơ¡ÛíqTÜ‘aºïùí™]u¹ă‡gG'ơŸÉ®̣©„çúÂÅàQ°LôßÅØ™¬”¡̣4ª½±í\ăέ™n>èWq¹Ëơܑꤡ­‚ĐƠK¯P”·¿'©̉„¹Ó4•$Ÿ2ăîù­|<‰—syư,ŸMUŸ°¢É-Ÿ́¤~E¯®¼„FÿđE»̣kU†̀́CùD°/1=o8wâP Ú›[çvE¼¨^H~âx'x›3¶ƯÊHêæ2 ™e”îøE£úªQ9÷}×í®xPèñÛ‡£È5›u'×Ôí-ơßÑăøN¹ă©ü³ÈúñưÙßQÇy3{àÆï "d¸´â2ÎÓÖWĂ÷±ŸS9ÁÄ™ơ6—¢đ¾>@êøK”0̃U4}j́ „ Õ91²ïr@ºj(}GŸñ[bÖi‡v1\@U>½pÎɬ5ËưVEXq‘z³ßH~ơĐRó< µ²ØR~ ›OA•Æù<ï6t9†µ×”®ç*ñËĂv[³Î#1%¯1Íîï9zÁ£ sº_˜SkHơ±{îưŸ³¥­.iƒ.åwRHªÔêƠ¦§SF†U˜xÚăÜÀ+)TaA»9öîC†ƠW—áˆ_Z2˜TifxàéĐĐ{))÷}ặ™LÁ¶r½V8 5N]ºúÍmû®ÍÈX[đ6Êỵ̈©Đ¸·ĂèBB&f‹†œ>Z_­údœèàs̀´{§Nơ‹}'P€®ØÇ⢛Ùh¹œë§—ÇÉÊơÁ”´<Ï´¤¨7ñçyˆ½~9/‰Nå‹MX°^ä0“R¿ë½¥§æ^׺§æ··„àÓ́† Ó· WØ_{>+ÎgXéJW®¸Æî œKX}%v.6×Ơ™ºœLphGÎykÙ:¹o-¿r-66“Ư ?ÿ©àï 4$0ă›³âäÀŒÉ ố™‘1¿V'M‹ ơ=2c3g+½óŒÀŒ\ ©̃óë̀‹ăH½®.v†V¶†_̀…²Ăf¬Ö˜rKöaÛoD£æKo§5Á‚|¾2˜œ¶©£¶ií®í[ư3¸₫5¨6ÎqÓ¸æS̃6½Ê#î÷oo:3*[núê|¿ƒÔ]Âz—Y®ÿ²ŒŒúï|qqđÆ=@ê¤>@ê¤>@ê¤>¤>€¿ơ!7“FûÍË™™)))ù{—Öª™® öÊááivoœHIIîĐA©ÙV́Oß/ĂNA´j®ûR@c­X±â·/ĂèÑ£/_¾̀ÏÏŸ››K₫ưË«Q—€­.Xaa¡¶vG̉0k֬Ç·° û·üơë×jj2¤aÍ5Ë–-ĂO ¤>€?›¿¿?ù·¨¨HLLŒ́ £&Í_Ơi(Ÿ™3g &?ÊË—/ÙÍ[¶lùí©©¾Ë´iÓJKKÙÍ………222IIIRRR¨Ls¦©©ùéÓ'vsqqñđáĂß¼yÓºukTæû%&&ªªªVµ2ŒƠ«W»ºº¢2H}$&“yæ̀Î.ÊÊÊ="ÿ¢>Í“µµuLL g’LtuuăăăQœïD K5g—¢¢¢M›69;;ÿ̃‹Ÿú ‰FŒQRRR«# ~=zôïÙ³'JÔÜøûûïß¿¿VÇ̉̉̉ׯ_Ϙ1ăèÑ£(Q“Ư¹sGOO¯nw>>>[[Ûƒ¢DH}ƒÁ¾£¯®üü|ƒË—/÷ïß…j>̃¿?zôèz{åææ^¿~Âyóæ¡PM4hĐ †j{êÔ)WWWyyy ©àO2pàÀ/ôưøñă˜1c9B₫E­ ’:ªn¬ëơë×$¨wé̉µú&¾¾¾£FúÂVVV¨RÀăưû÷ááá_fΜ9999³gÏFÅ~;UUƠ>|yƒÑ·oß̀̀Lnn_5Ö‰'¦Núåa²²²¢¢¢nƯº…³ßH}ŒÆ¼̣đđˆ‰‰‘à—‘‘‡×ÿ^$–$&&~u°’’6`À€°°0­1nß¾Mj+""’——÷å!KKK,XđđáC ©àÏK]NN;Ư1™LrPK§ÓI3é̉»wo%%%…Y³fIKK£\¿Ư®]»ŒŒŒÏ;ÇÇÇÇÅÅEVÙçÏŸ¹¹¹óóóÉ+a!CΟ?¿G¨X#ééé‘J’†åË—?}ú4###%%…́¼¼¼́3«́=‚Ô¶  àÑ£G$%ÖûÄ@êhvØGºœ¼¼¼öïßçΉ'’¤GbªÔ|ˆ‹‹Ïe©ê¢««K̃Ô©SIz‰‰!UúkÖ¬!ÿ¦¦¦vï̃ưíÛ·~~~»w@eúZéÓ§ÛØØdee9sf̣äÉsæ̀9tèỂ<‘X?eÊu¶êôéÓNNN(Ëwzưúµººú£GÚ´iCR_Cô¤>€?F›0a–-[6õ|̣äI}}}ÜÖ<íØ±cܸqd•‘fSSÓưû÷#ơ}§ÄÄD]]Ư‡²Ï̃¼y÷² ơ´@k×®UUUƯ´i‰Û·o÷ơơ•””|̣䉸¸8Ó¬˜WơX333›ŒŒ T¦iȦnaa‘––Öºuk̉êççG¶ù®]»¢2H}-¬¬́èÑ£œœ¶nƯJZG™®¡¡1jÔ¨ơë×£>ÍIJeË̀y# ~kÖ¬Ù·oÓ#FŒ aïÍ›7U]víÚEB *€ÔĐ2yzzJJJ.\¸ưèN¸¸¸àà`QQQ???<½đ·ËËËÛ¹sgZZgÇuë֑ľ}ûv”¨ññ¼9nÜ8̣oÏ=«:&%%Ư»wïÚµk¨R@ËDb £Fºÿ~UG##£ÜÜÜmÛ¶;öúơëx1Ào4~üø•+Wˆˆpv$­3gδ³³óđđ@‰ăơë×:::ææædĂ®ƠË̃̃~Ñ¢E(R@K6{ö́7náææÆÙ}!‹¯¯oÏ=;6mÚ4Ôê[¿~=Y u{íÙ³G\\|Á‚¸íË222deeçÍ›—Z·oppp||üåË—Q(¤>€ÎÇÇG[[ÛƯƯƯÖÖ¶V¯‘#G2™̀û÷ïËÈÈ>|˜——ûH̃>xđ`rrrC?~œ¬¤¤$Ôª^áááăÆ›5kVƯ—UV™:u*©3j€ÔđW¸wï???ç›Á«ôîƯ;##ƒ4,Y²ÄĂĂcé̉¥ơ€‚åÖ­[ơª2tèЉ'3æâÅ‹¨X•ÂÂB² Ÿ;w.33ó C1ÂÚÚlÛ(RÀß">>^OOïÅ‹k×®mh˜ ,%%% ,8zô¨••˜‡‡ƠûNœ8áâậêƠ+nî¯5mܸq̉¤I¶¶¶îîîyÑJKK—,YrèĐ¡E‹?~ü«Ă;88đóó¯X±ÛRÀßåöíÛ .́Û·ï;w¾0‰y;Y(ÖƠ¡$¢ õ¼yèĐ¡¨áw;w.É{)))₫ôéÓ&L ñûï|²Kzzºµµ5Ù\I~ÛẨ˜±œŸ¤>€¿Z×®]³³³]\\&OüđáCö«ü¾ŸŸ »5 `ûöí÷îƯ2dˆµµucäßlôèÑ #33³iQyÓ¦Mwï̃‹ŒŒܹ́sË«ÏíÛ·ƯÜÜ®^½:|øpWW×M,Mˆ‹ªªªdD333lrH}P₫ÚÂÊÊêúơë< ‰â›FÎRƠJB §§çÍ›7'Nœ8{ö́F†É–Éd?>)))44TXXø{&¥££“““3a„ׯ_‡‡‡ÿÑ'ZIY=<<È£¦¦F6B’ÓΜ9ó=Ótvvöơơ%¥æççdž€ÔƠØw‹­[·nëÖ­îîîM~k_­XTTṭäɳgÏ’Ăú6mÚŒ9̉ØØ˜N§ÿ%…%Ù̀ĐĐPNN.((èN–”´¬¬¬cÇ={ö|xÉ’%½{÷&Yè{øRVV–À.xttôÓ§Oọ̣́”••»u릥¥Ẻ™… Ë/₫¦/^$[ ¼¼¼§§gă_}H}đƒYØÍ$q¹ºº>>"""³fÍúßÿ₫·ƒ¥®‚‚̣ƠH–#ßĹ”””ÏŸ?_¸páÎ; ăíÛ·]»v]¼x1 ϽYófF¾YÔđđđ3f¬X±Âßß»Rü;vÜÅÂnÍÊÊZ³f··waa¡¹¹¹Ưo _ ..>€å ±„:_Û´i3lØ0’ùùù Hü#ƯW¯^Ư®];EEẸÅUTTH8́̃½ûw?lŒ„„„ØØXv^%I;55•›››,‰©U‹AU‡å Óyÿ₫½«««‡‡GŸ>}6mÚÔLÎæ±%'';;;Ïœ9“,d³:‰ H}Pd¼å,́Ö7õØØØøøøôèу¤A}}ưæ¹Ø$G9::̃¼yśر$×­ciüè$(̃¿ÿáÇñññOŸ>%ù0??_NN$Ă®]»jjj’ˆ¥  ĐĐèL&óÑ£GáááÑÑÑqqqIII £C‡ªªª¤ńÑUY¦L™̣ßTXXx ;¢O<900ĐÉÉÉÅÅåw½ưïøñădH¡$_AFFæ'…m’r#""H‰233±_ ơ@ËÔ·o_-HĂ7H¼1bÄ₫ưûö† ƒ0`ÀV­ZơC¦I¾…———ŸŸß›7ozơê5lذ‰'²_:ÿMÓQPP¨zü&§‚‚‚ .\½z5,,ŒdH555SSÓïy+Ă >}4,^¼˜dÔ¬¬,qqñ8}b_¿~ÚºuḱH}đW é(==d̉ó3²ß³gÏ´´´ÜÜÜ^½zơ=ÓÉËË#éÔÇÇ'--¼9sæ 8pËOªNËÂÙ‘Éd‘ÅhƠªÉdI´µµà|7²ØÚÚ̃¼y322̣ûCÚ† öíÛwï̃½ß~e/ ơÀo@² ‰1¤aĈ[·nưQï|ôè‘‘‘Ñúơë?~üØ„Ñ †‡‡‡»»{aaáÔ©SÿùçŸÅ,¿·\$dá̀¾¾¾‡ºuëV=¬­­'NœÈÅÅơ3bquuu2Á… 69*wíÚ•ăÔÔTlêH}đ·óóó+((è̃½û¤I“Ö®]ûS300““{÷îƯ7•½zơê£Göë×ÏƠƠơ–f^7’G²Tu ß²e &&&K—.USSkÚ”?î́́¬««ù­£ß¸qc̣äÉÏ=Ăæ €ÔPN§“àåå%-- ""̉„‰<|øpÀ€aaaO;»ví"9“ ïîå.c?vóÇ>Ü·oßÍ›77á}d,Èeee“’’v÷îƯû÷ïÿÖÔ H}đW0771bDçÎ}||¾ơÉ($°yzzfggơÁ‚‚[[Û .8;;/^¼x₫üù-²˜­[·̃ÎB322&O|ơêỤe]]](YçÏŸoß¾}ZZ€€@cR4‰îñññؘúê'&&–™™©®®niiÙøk,ăââ¾6˜L¦ƒƒĂÑ£G×­[w˜å頻ŒŒLƠ;úH<^µjƠèÑ£÷íÛט3x:::¤h***_½CÏ×××ÍÍ-99›1RÀW<~üX[[»´´Ỗ̃₫«/Y²„ä½ÀÀÀ†ˆŒŒ;v́đáĂ===ẃØñ—×v iضmÛ5kH`^¶lÙ—G111±²²6lØüîƯ;33³””l½H}rï̃=eeeYYÙI“&}a°Ă‡ÄÆÆÖÛwË–-7nôññyưú5JZËB–üüü!C†¤¦¦’D§¨¨ØĐÀK—.íß¿ÿ®]»º –dB’¨ñø¤>€o#''§£££  PïIIIu{­[·n÷îƯáááNNN¨ä ^»v4̀¶víÚ+W®èêêÖ;äùóçååågΜ٦M›Z½ÜƯƯÉtê¾nú¾„¤‹cÇ <øÙ³gơ`ll|ôèQ:ÎÙñâÅ‹cÇ [ºt)jØxö,vvv¤ª~~~}ûö­5€˜˜Øüùó-,,N:U«—««ëƯ»wQC¤>€o6räHooï%K–lذ¡V¯Ơ«Wwé̉eôèÑU]>|ø ¦¦æääÄd2Qº¦qcÙºu«©©iLLŒ¸¸8gßuëÖ‰¾|ù’ó́ëÚµk ;uê„ê ơ4…———„„Ä¢E‹8_âWTT´eË–´´´ª.¤ơÀIII¼¼¼(Úwrtt\¸p¡AÇÿư÷ߪî4ÍÆÆfé̉¥Ç«ê¸oß¾€€ © ‰øùùçÎkooÏ?\\\&L˜P•û÷ﯦ¦ÖĐ… Đ$à………?^RṚñăÇíÚµcwwrr’••---åæ.?đ»xñ¢¸¸x÷îƯQ1¤>€¦[·n„„Ä̃½{«^~øđáG‘?:v́¸~ưú©S§¢P?ܸqă D*́åå5lØ0̉…$mƒΛ7´9rdÊ”)(RÀw¡Óé#Gܲe‹««+i%‘CCCC^^¾¨¨ˆü{ñâź¥M›6™™™$éEGG»¸¸.$`Ÿ8q‚ú‚ƒƒÉê@•ú¾×̀™3Ø©ÏÇÇÇÔÔ”4¨ªªîÛ·‘ï¸{÷®¶¶677·³³ó„ Øïy ’‘‘©ơÄ@êhaÆM›6íÅ‹rrr~~~ÆÆÆ$ ?Åù5îƯ»§¢¢¢¨¨8ỉ$²‚ƒƒ¯]»†È €ÔđĂœ9s¦cÇjjjûöí+**Z±bỆ+EGGËÊÊêèèèêê’ÔGr ¹¹9Ê€ÔđĂR_PPĐ«W¯455W®\™œœŒüb‚‚‚»ví7n {×®]{úô©¶¶6Ê€Ôđc 8pûöí999¼¼¼ÖÖ֨ɯG̣··÷Ë—/ß¿¯¦¦† ơüƯ»wÏÊÊ*..₫øñ£¯¯/ ̣»¬\¹ṛäÉ$~W½Äú~ YYÙ´´´‘#G¶nƯƠø]ôôôÈ ©ORRƠ@êø‘„……322F…Rü^cÆŒyüø±€€J€Ôđ#µnƯº¨¨h̉¤I(Åï5}útWWW¤>¤>€ŒD>>>>„ßNVV–½:P ¤>€œúxxxP‡æ€¬ˆ?¢H}?RII FC²" ê€ÔđÍÊJ>eç>É|û2''÷ư‡‚……eEEŸKJ>Óé¼bb¢nnk¸¸iüü\\Bt>aAQQ1IÉ’ªÜ<ü(àŒÙÅYYï33_å佟W_PÂ^e¥̀¶mEùø¸ÉºàáiÅÏßJ@€»uk~aaA11ñvÅÚväâÆ‘!Rüợ?>‹OH̀LO/‘‘áVVæo/Ë#'Ï+)I«|)ơ©`g÷¿ú&ó™¢̃‘ÏçÏwSÓJÓ^1^$3^¾,oËÛEUFMƠ°­„"Jừ²wïÄ?‰NL̀ÉÎ.UTäSPà““çi/Ë-#ÛJ¦ü&¾V%Ä9†Ựú&TJQoȧ¤$$%‰‘V’”\ôúu©l{₫®ªj]…ÄQl¤>hÉJ9]¼‘! ĐJSC {wº.MG·í™x«V­äåxÉG¯OU·b&30>¾8&¶đuCGGY»÷H~6Xå¥)|q÷ÿƯ{ïddx54T»đrJü‰óđĐ:*ó‘aÿª¬˜Ç`œ½¿0&¶ ¸˜̉ëÛ½G÷a\ܸK©Zféÿ]đH””ä10̉êÅ«Ơë×½Ư›Fk¥¦&@>¬¶üœÜc×®ç'>-4 ¡¥aLăâú»VEÙ§ѧ‚ƒÓIAôú rJư²¹ọ́¶êƯ[|Xm¯_¥y„„~ÊÉ.nlÔ±ć(H}đ煽؇Ǯ^Mí­-hh ´`A»æ°Pb¢Ü£F ¢„™̀ôèè]ÁÁ{ơRêo0¥eÇ?fÙÇàc¢óŒŒZ÷ê%Đ»·TsXªör¼Ó¦‰QåéytçÁƒüaĂt{ô‚]©»̀7·N —‘æ9²MÏRÍs!i´VZZ‚äóùó§à›nÑ1cÆ êÔÂÎ81™Ï¹x9±W/A£‚éºàá¡ Ø|ÉgÎlz›Yf:ÑTBR»R4»Œ‘àsÙ7iÜx‘l%ÿ”¥nƠª;rdeEoƯv£®ª̃„?]”„†xp?{挶ÎNRÊRóñ¶8Q”4<}zåđá¼±cŒ:wé‡ ©…„'ÇNŸIg%¾h‘Ôú$$x¶ûô)këÖƠZZ ˜úgæ½̉}·Br$ ôÛư¡ëBE…Ñb©ŒŒØuë‚Ç3TU5Ä.€Ô¿MFú5ïc‘'®X!Ư¾—££Ô»́¼Í[Vñ‡å¸Ç̃WSæ̀7́ßÖ…Œ ï̉¥Rÿ=¸iSÈŒ¦RR*ØƯúà×bóqk+Æưçßkˆx[ng'©¨¨÷=·­,́yxù3̉÷øW¿Ÿ“cK[:̣“ ̀ÏÏïăÇÀ)S`·@ê€_$ăƠµc'"--ÄEDŹ€–]]ŸÇ¶₫:Ư{ n¶Ë{$,ü•ơ< ZK]#F´ÎÉ.Ư´iơŒ“¤¤º`@ꀟë₫ưƒ±3%i´V-û›̣̣¶ÿä… ̉^¥˜̀ivËÇdúúí`2Ë₫ Çç4™X[nggÉưçu{khh Çn€Ô?‹¯ïöV\esÅÿ¯FqñÙ³{&L°ùíëâä©m:óii ₫›â¨ÑBgÎd†…Ñןˆ©~Œ¤ÿ.ÇÅgÛüï+÷ṇ̃‰QT&Ơoj~˜a­“PaÁú§l œ¶›ư/Ñ»OuŸ̉¬Œ¼̀\i•—‘à­3Ơ¢Œï?•”7 IˆÈˆđUv´̃cURÆC¯èRPP\ïR‘x8Û >¼Hÿ”OfÈKïĐéNêëó9ó1âι>}ÇÿÆuîÁĂCéơú›7ȉ[ï̃ơLN>ZQA»'R|¯²’gÏÅZÍkô½|KH¤ª•¦dô6˜2=F%?ÎÊ£( ¾b‚5O³zJ·RoO½̃éÇj5+1Uă¦^\̣é0&¤¼ƒ’êôÁ’i/Îù¿,oU‘₫b¤ •¿ĂÈ¡ü\ŸëâU âCô»Q•oYâÏ MLf5jº.‰Z¥HQù{†;ز¦gĐ{dáÿNßđO)oîµÚkz£̃i>nœĐ–-ñ]»öù=ïÄË˹₫ÖÉY›å”i¢‡û99ô qq¡H}đ]ṇ̃̉Đ ĂK₫·ï€DQi1ûV”úđÉfOv¢£7$‘z7œùÖGîY¢S1e·ưTĐ¢ƒ6w •fø6•ñ†O|znPçÊ4——‘[B§×½̀”®fŬz©zéiËE¦¡åMîÑ;m4ø©̣«Ow—G>Îó'’ÅĐÙímîªÑy—½ßW¿mèP ÿ€3S¦̀ÿ-ëÂïÊ5c“6­ZµÂf)̃–[]MôfÈI#£i¨R4])#'̣n–³ó7½₫›Qü¡́#UJx©́ĂW£Ë;=ev®¢àUö+Vƒ‹®KƯ „§¦—R:.öWøO›,<£B?SƠGIÀn¯ñÆ ß]˜uĂOr°/i0p¶ÙTơn·üÁ¬ózá>‚4ŸºcƯ~ö©1©ĐĐà ÉÎ|ûL²]ç_¼.2̉ĂróJÔƠE±Y² äÙº5ÉĐ „‹›Ơø R_iÊ…it¯ È'Ü®S×ZÚ½4:H4‡ªåÅY´-B mù‚¾£F¯ÙjÜ¡‘•̀Ư` æVƠjx#÷ÖÀ/Ư`O•¼<ï´́*ƠVà[²°0[eäZ‡ ¿¨&÷׈j»Vµê/ ]«‡ àw‰ñíÚ•ÎËû-'—z¨ÙÙTưR²±ºCßÁ!}¾o‚öa}×ïĐ]úd¤å‚‹ƯF‹̣t̉óYª»ô…©ŒÅÑEs7Ïë$J凟4u¹GF0v_qÅê³9Ị̈§1ÀkK?}’Ụ̀s""̉’+~íqQ¬s‰U‚Vl´}—̃ôP‹¶/¯³/eá%}»âoZL­ˆ£MY¹ÈÏ›—`ûAîÛ„(>ÎxÈG}ºe»øxáÆ®<`,^̀ñ4ƒÑAW›8À߈É|ơªXQ±±/èSf¸Ö•¿½RƯW è¸Øç̃w9zÔC "˦ ớFÄ^¯gÇ'íé%*åucƠäŔËơ¼˜û3^;ơ(ühĐ¥‚̣gn¶í¨t*tü$}ṿáêk;y½1£ë°̣V) ½ơÛµù)&E?xÁ1çª5OJGD%„éAå½ñ̃riăùër‚T¯’™UÜƠjßö8‘̣Œ¼ÜW"¢íÙªx—ËÇÛªµĐ÷>¹¤¤ ¸¤ÎsMkv,-((£xøè¤¥$¿üy§9e‚Râ2µ₫Â\—U˜—OV —¨ ]B¢“YY)™åO_Q”©1@IaÖº¡ËV…QÓ½´g””̣đ4ñHR©CÙåËï±§ü¥©Ïu£A“föKÜÈ¿©ÿ*+̀N®ê˜±ăJô Íêßg%¯Cœ&ÏÜú¢̃)w<í³eb=á́ơus½!̃)u{hŒóɰVq¨Î›Z7r°¯Æäâ|Wûí¸7M“+/Üy¿ñ‰Í<̉}lúÔîZÔÉñqÎÓ¤®v¶s ê9ßXđ̣º‹ù¡ L]ÎüÊơưÆ*u₫\rĐÑÚbçƠ«ŸƠ¯ÆûWä˜CS5çà́2ßïåNý?Ç)|üTă/ï”ĐÔ\̉đƒôEÔ4—Ô¹¸²ó >nƒú44 ]Faº½BoăæÖ1 SÙ¢6F¿QnHM_búư¯÷ă—ưKS_vvªXÛï>Üz7Hd7ùe¾=’ăé5•×GîZ¢Ă³g¿¦íăªT5Ưª]¼GëÎLj{ôN{ ₫g§¨˜F°zªZT(z»ÓƒƯ_;º`®†³à¿Ûê½XÇZRÆÓ»´§²=½Ù́Yđ?æ³KUưºHeŸ<«{ í̃«SH÷&|!~Z+.*ÿS¶ P[́°]êû̃Z°Tn-X™Ÿ¢&ô:W³÷x‹Eí‹oïô g·l$º•¾å¿c煮xÚ\ÉÔûUí)+SIIå̉M¥ü_GzÎî!Tơ·2ºlªLRŸƠ#—x›ó{S Ló‰â•_X²ô•íWÅÖè¤d`Ü…zíSÑæẻÅ‹́–{mAU$Ù;FÓæRÍÑ4 º}zó*:º2w‡{˜(yP̉‹Ó36È|q! QW›•̀™À·†û/Ä-?QQaY_Øàç*Èÿø+çXXXÀÇGûΉÄ»U~ÔÑcŒÇ£kâÏD°;Î(ï˜sé+¡ơ›˜6¨âr̉ư£Vö\²ê!ơ₫SÙ(B}SË;êI ®È:tÛOd} DètfÆ¥ă²cÈôº̃ȳ(\ä<¼¨‹– Ljũ˜²ªCçÑĂŒ °8Oi:›]ÙÔ‰5³É_‡«°đ=RÀߘúîß¿ÿLJ.?¿2F1y)Ú§×q·»-<]cȳ7NQaŸa{l^3̣¹†¼_eІỨv”zqlN‡é‡+²Ÿ“ö¢.¯7( Ù‹3ójF>å“ÉÏM;T§•=Æ‚¶U‘¯¦6†!̀z~̀‘iÖŒ|Z^=#Ë1͉‚¶gQ1cöÚÔŒ|K2™ë+ï*È\©Ñ®ºïu»¡f«*Næ̃ñăŒ|ö¹̀íœçH îR﹫ưđ íÛKK·IH)”©÷Œ?ÉÈÉv”w¾àè8zoîEḱv?ơE¨ùíƯªí—Î’Æơ™ù“È9ĂJtămµ8î|ÆưAyG‹2å/Q¼G̉]yfó,Q™Äª:êw"_}®·sƯÓƒl/và¹Xy8¥íuḅộ7päŸÚÊ₫kö“A"–u—àÅ*Úûç̃çËÿŸ=¹ĂXåËIĂ6 đ7¦¾Çá_JË3*È¢̣ÚμۗjZK9¿Îî|åưmL>*/³ïæEGG,’ rÓ>̀Ù}ÜN_Ó?Áè6çoèú ‹_{fû½9"k̃·NŸư¦i6Æÿ.2ÿÇ₫©Ÿû,åiÚË7^^ ;QÊ(P±/ë¯Æü;Di;ØMç÷4xPÿaQŒù"_{̉rØrmÚrΣKNkàE!¿„  TAas}E/>1xéœ÷Œ•ä}È*(ăáá‘ ÿ¼Çù” ¶ùµë¢MaÁw­‹ªđ¶`b»ªsk/N_`w´6#‡̀kG"I‹’¥¡puļu¤üzN%3½Êüm̀™6ÏVÍ ¦éc®{ïúƠ^3KY _½gIĂ¿­c*O9Nú¿Ñ ÊŰ·ü©¯üg“’Rrrù~”•“Ê/ä$cŸ¾½Öơ„OĂjg(4ƒ'/r)J‚â“P”£Ẩª:wë)Y{H₫̃ÓÇS¡ç¿́µ§©¤úưÓüBL„ûû#RésÏ2ûœq́6i[­¡̃ä³£‹óùg›ÆvjÜdÏhö\ç*ƒ}à$Ö̉$|¦Ó¿ư:Ï̉WxÖ”ÿ¦6› S_+ơoc^~Χgt‰uÿóî^—Ơơ#‰%´ÀN_€YÂÛ­â]|JúCÎ^ !ÀüI•ÉÉ-jÛö—>ƯZ¢m§Üœ{ß3£„}³qĂ=±y>=ŒYmÖŸơø€DW˜x`×k̉:w¶jơú*|¾g×̣ÿtKuÂç†ô-åLÆ&7ÖêuoÏ[’—å*–}•ªºÅÍ7ɼƒçêM›·îvvc¥oÓ-ơÙSC·/Ѥ¨ü[WÊO9*uHÏ(é #óo£øø‘‡·•]{+Àߘú\C̃­ªñH’ÊË,Ù2vÈ̉vx>.´èVưú•úu½z ]7FÄ‚Fü°8ëEgûëä\ªÖÓPî{[<ûÓlª¢Cá'Í­m×Oè½\¡[ơ—ø²´à+™·Œ%°ßütṛ))Åjjß₫̣îögÓ-µd=£Ù.ÅAºVÿøƒûY‘OêT†7ë,VÁ‡̣'F–?­“̃¡“H­,ÀzÎ$7Εơâí«œ²ö]d$tF2̣‡”đpÑy˜$Ф§¾-®Ç˜”C$³¨  öĂ*©ªçỤđñ4ơT`V™h«6Âí~åS¢hTnN©¨XºDtF2s{Üq#đ~́&×ÿ”zvÙ¿wÏíÛG µÍz”ă“€ñúqưÚHÏå|aư'̣|3úđQÜC˜YñO;ºî|éKTVƠ¸5s`åÅSW-f®zä}ß÷ú]Ç+%WYdä̃^:U5´=êR´,0üƠ{6½Ÿ±z¤ŒbÓïMN¦ÉËဿ5ơƠA·ñgör¢k_ë,ƠwÅû§"Àˆ¨2¦\«ÏhEÚÙœ4ñœÜ±zoǜgè¬,ƠNJRB\\Z}œIOJtÔäÑ.aÿoïNà¡̀?€?CÂŒ˜ÁŒ³4”»r†µK—£ƒ´H9Ú”6ë/¶Sw[*»[íĐêZÛv ¢-TR ơK¥cP‹$-rÆf₫3¹†¨Ø̣y¿×kç¹¾ó̀óôƯ™çû|¿m°EÎñtÆ?`zC”‹k7›b¾µ̀(—Ô¼³œ•Ô₫ôƯÛ"ß½ư]E¾§÷RO¥̃d?¸‘}3'.Aörơa#y5˩ܩu°]ÖX’AkáYQgŸ†¾ằƒ·-¶N±e#5øFoO±a–)]9n|X*Ù·î÷$ơqÉëŸM±£=‘đƯu¦¼₫!۾ɲNi{ñnø,Ot”«üịbßS¼åʆv&÷'7ƯƒrƯ·jŸ+/\•gœ ñnëµY{yû·Ä™W 5“˽‹"ĂÎ̃â­¸qyöÔ\¢’₫…ÔÙ•rCàŒ’ëV­ß/ ÷ÏTåư±]'–Ưt3»NCsđÇ¿êRÜ·¶°ëyTYÏ•.üK¬,VXµ¼¦+ù½vóµ…t-Mÿ•o| KW+Ë®{J¢+í÷^ÎÉíÛÿŒĐÖF=@êkc´èL™a(ͬí)±?ütH±ae鯺1‰/=®/=¥µ·—Hçá‘΄̃d7ƒ!UÉ»₫hî=²ù†¡Mj™kÓŸµæG¬<¶´­¿“+‰ T¬tăøúÖE‡.éªL¼¸ưÑ|XT}kb _óNïHôôô*23Ùl¿j¬Q̃B ]‡%¶ÏĂ¼|[Ơ˜Â=~}WM)Qîï†Ö₫„vI~¿¸¿ùÖƠđN©ÿZ5Aú\È_©«¿@ơøpF˜˜Z]ư’BéÉHqT Û́đ|mß›KwníÔ±6g†̃Qî­\±Â’œ¶|=/̣™ÍªNÛ|oư ¢"[Ÿº#Æm™®j»xö}̣Ö –Í[•g4/H]#ǘ’á(óßă›bùc̉ˆG&*±;, Ï‹|ÖáË{ùBàê•¢oæy}ükah0i÷¾ưÿ)ơ}^*ŸS>,vv¶Â©è©¯¾¾¸ư‚ºú.¾{LC8¥Fú̉Ú‚ÓåE4RL|Á5k‚²cq8EvØ™ûµn™¸¯}ʲٛ¾ÇÍXo #(‹ăœÊ´æïu„×”T~Lư]x»n7»Ǘ¼̀¸–2#/¯ Đâ0%§ Îœ*̣₫O7 sØëlT–̣?Ø—™ÙtǸÄœÚîR=K­m =6ïyHḉeÜ“™đ•Ûæ–áXq1¬×Á%ôØà)m72ë_đ¯­ªkh›á] ;óH- ̉B¿$E¿}Ôè1’  ¹9ólrñ”©=lG§åóÍ¡N‘·­F/̀·“'*Ö™lå}«¸xưÉköY}í¯W÷ơ.ÄRH±¯ï~ñ^_BÓ´5 ¼µ—ÿ––›r» ½¯)DdnÜ8nó†ÉƒÎ.ÿuÛC‚°Ÿ{ħçßé—UUT¹-¤èỀ¡âUFF~Ơµ°äï:¼çĂyŸ8ñr°"C{Ä'~LGÇöñă¢ø„ ë~;\@ttÉdë1RRLÔM¤¾̃C̀fÍIæ3̉@̃·P}=Gnz€¾FG×®îEƯo¿±¿₫º‡#b Ợêº 'UÖ5È©Ë{7u/)DæÔÖÛ¶¼ßúkjêïL̉sâ=Eh½%x—cÏ¿€“Î΀ñăƯzõ˜<ÙûÏ£ágÏVZZêÿI1ûëè¨N\úz!UsUœèăŒg¼|ypÏĐ¼0ë§Ưz¾ÊÊ¢~.k×›«ö¼¨øxNCgÚ´y½çÓM›î·ăô©ç'‰÷«œÑÑÏ´5U íPúàƒ05)/›±eË__úÀ̃Ư¡ˆ®Çç=Å íáFFÓzÛtpXpñâ¡Ư»sç̀éÏø½x1hûN¶C†è¢& ơÀÄT1ç­²mû/Ó§K SùŒ?ii©dtômW7y9­̃y„¦¦NC•nnØpÔÛK&ù9ÿ»w—vüdÎüoæSĤPú>¢ó¢–|ëµíô[7Tø±ûÖ1:)áĐ®„JaáuÂcũ×}bZPĤ–üœ´çBÚăÙ³i$̉ç7éäÉÆÊÊ¢ÀÀe½ü@GسẼ8ùslíÉá üuw)s¨Ø’ï~@Ơ@êû¨2Ö›]î$à1ơ¨¤̣̀Ü\₫…¹§×ˬgÎ=Íß½á°ù̀ˆÂ¦™e#­uïåoW¨X€¬Æ»×T—…ÿô³ˆ¹ÙçÓ­È;’'Næ̀uŸ%MWî+Ḉ⺸äɽ›N›JUUưlnÀ’RR„²³‹=æÎG@êû¸'}ß.̣é,¼æ$ßq«̣‹!4³5­³y¿N t.Ư`%•Ÿư™Hưÿ~ujÉf\W“Ï6HVVÖKi˜™«ñu][˜qîÂ¥+™9́ǵ¯ú–”SÖÖµ0ÿ̉B­ưM¼îËUS’uù¯ó©YÍ%sD嘣ÆZ[3V}ĂØµ5Oï¦_ʸ’ÅÊg—=«­!“É¢’rjĂôMÇ™iË¡ô7d mo07o„†ÆNœ(ahHéÓ'?_rï̃[^̃¦ß|Ơç!£ú}À²œ;©+W›í.9TI¸O_‹«WÈ ‰lÿEóÆ•EE@êûj*«Úͳng="ä‡tØjÊᄾ¶sÙÑÛÅi—&®vM\Í{a|!5TwËn“?¿ué{üî;¡nËÛ2Êm”Ẁ߸quó‹đôrc₫Q€ Wè*®¼₫ÖS£¿7'ÍMMơ _áæÏ₫y¶oÄÑ>8œéÆu‰S§sfÎ4X¾ü«>}-Ô5,–/·ÈÏcmØok+¡¥Ơç¾”…’Î4̃¹Śæ6{ùhT.¤¾OGv̉·„W\Û‚U¶J«_ªXØ[NúẨlŒº:“NzmgÚ¼¸B'‚¸°v’SØÍÖ¥^{®¯±¦WW×S$¸±̣'ko"ßNcṼ=¿L•WXî: •¥-é./|qräΰa²ă­fŸ@A…@êûäÈ¿sfƯ>àf7+.·Ă*vêÜ)¢ưB¿í{7/0múê#ÓåÉ¡$#KmñL©H§KÑéMsB>Ç꽪ë뉆††z‚¢@oiu©”tú”ÈÄÔ–óX·Ë ;ê;[ăíÂù\v?Œqo½EIsƯzQ[i‚RÓ|b€Ă>»»nj¼/ q1₫“²/樌£¾²<7Ơ’åLÂ29a¨đˆ(ÅÁ7`ÂÓöÏ?%ÙZbô²øWYI;}º8ÿa¹ƒ½ܹ̃3>×kA¥)zxđ~°3vî:Ă*:q"¥·Å¿'ÅR'ăsëg8Œ_¸Đ5©¯—%?MçßÙÎM¯Ê ³³¯\J>î\Z\jÖkÛ²·û™m÷#–¥”®´x·¾U„„̣’wúûú%ä¾mËw?ä*öÍ₫ùưs”öÏyĂö́ÂâjBMœ¿^í›ØÖqVZ”¿E”‡­'ÏZºĐœ‰æÀCg῭ŸÄ}Q]UúGÜáÜügÆF†£ ¢Q₫…¯g ^Jÿ{Đ ak«¯¾Rî?×BEÅhÉwFÜ%%9VSûÂtŒøÈ‘>͵xQ'–qåEÆ•‚a*Œ ăÇyx8 ¾ ơơBT]³éÜÉgK_ôEkÓGUßFù̃ ¤¿­´̣«›h£¿ïđ¿k×…J²âƒ¤Å«RƯü£zv˜Ÿ³°ñöVèjëÚgψ¯Ë,ªi‡̉PÊÚ¾3fT*»“ícƒ¸÷P#nf{i£…'4£ˆIÛ;̀ozứY^bÚ™œœ'Ç‹éë‹*)‘>ä¨Oˆ_»ö́Öí§ƒ©ffÆzú#ơôûơµ`0†Í™ó]ÓëG_¿–RPX¡­)n`0!óËq8‚ùyƒX™O<(ÓĐ’535³°baÊ€Ô×[½ÉÂoÖútr$LÖî̃¸M‡oc̉‹®á´6}©ùmy»̣uƒ/d†¶Îæ9ß₫]̃t´|Ạ̊ l×P“0_½|Wˆa7R£´¾çHîÄ¿°æéƯØ5 ùÆ-d{‡Ä~ưç\2ê¼FJ9mÚ¼ÖÙ’’ÙÙWØ Ÿ>­UP$+(ˆ* bÈ4JHt/ VW‘K üư¨¶ đùÇÏÅÅ…UTd4µt˰±´±Á‰ïÄÁ:³fé4§²—/=úß­[×Ù́âꪆÁC( äÁC0d₫¥»Ơ"T ¢BäI1éѣ¢çƠ †¨êpEMÍÑLe¦2Î:R_A5 8ê½m:_ï¾#D} Â5`«ưD“á2a¢º́Qæù“Q‹7¥¶ßWwºyW7ú–nưÍś·MkÅ¥ ¢­)fÖ̃ư~¦F ¢¡”â`°±C¡é‰¬̣@KêÛ‹%Òñ_¥§d¶¬Mûa´^~ô騹M]ج`À··J|Ék:‘f¢çß6R…®Ç₫¿¢¾n}C2]Íj¢Á7Z½®¶"¼ cØ—_r§×SܳÊ +ÊK*WÔÖÖÔƠƠ54¼|Ùø’DHB‚‚"¢Âd2™B§Ñ¤©rT9¦ÁdâŒöIPpÈ]îôúª̣ÇeËËVU=¯}u1^₫ÛØØø’»JP@PHHPDD”KBœ*AeHI*JHĐ$$U5œT¤¾>nÚ®‚ê…{̀µæḍ-ŒÙä³é ;©„§³øÇBP6AImëÍg^µ~Ñ\_’ú‹^Œ][á;eṿe₫³²ïü-³)V4̃@~ß'ñ|S±·éRv¬ïjlliwíÁˆöèäxMÖ—\jnŒª»(=sĐ,=Ï-»¸Đ¢»́I™é¼?ƒïÎ$@PĤ¸ÓàÁ8Ÿ7Qs'B gúYê#x]¹¸³8îÜ Oó._L»Îbå̃Ê~Rơj u‚#&+K®m 7f´±©±*½“[_ô/~äpVg̃º)üL^u•…·‹É{ªÔp‡ÓP”¹7bïÑsiUbrÄăbBVk̉LwOç/é¯Úlú¸û Ûz„UÄ;IE¦º¾ăH‰·ÛôÆ‚ê29¢ü̃åñ‰I¯̃Ê­–U¡ç>‘ejŒ³6ƯNW¡c,º±X¢¶0íLÂÙsW³ïçäW7­£È*éi™L´™`1”65©ï³"DgOăNn= FÁ¿;w^²¼ç îÔÅ®¢L§ íNƯ/¶UƠØ•;ùwçxȧzq'üs@ê¤>@ê¤>@ê¤>@ê@ê¤>@ê¤>@ê¤>@ê@ê€>íÿ¢d=6-IEND®B`‚nova-2014.1/doc/source/images/rpc/0000775000175400017540000000000012323722546020006 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/source/images/rpc/arch.svg0000664000175400017540000004404412323721476021453 0ustar jenkinsjenkins00000000000000 Page-1 Box.8 Compute Compute Box.2 Volume Storage VolumeStorage Box Auth Manager Auth Manager Box.4 Cloud Controller CloudController Box.3 API Server API Server Box.6 Object Store ObjectStore Box.7 Node Controller NodeController Dynamic connector Dynamic connector.11 Dynamic connector.12 http http Circle Nova-Manage Nova-Manage Circle.15 Euca2ools Euca2ools Dynamic connector.16 Dynamic connector.17 Sheet.15 Project User Role Network VPN ProjectUserRoleNetworkVPN Sheet.16 VM instance Security group Volume Snapshot VM image IP address... VM instanceSecurity groupVolumeSnapshotVM imageIP addressSSH keyAvailability zone Box.20 Network Controller Network Controller Box.5 Storage Controller Storage Controller Dot & arrow Dot & arrow.14 Dynamic connector.13 Sheet.22 AMQP AMQP Sheet.23 AMQP AMQP Sheet.24 AMQP AMQP Sheet.25 REST REST Sheet.26 local method local method Sheet.27 local method local method Sheet.28 local method local method nova-2014.1/doc/source/images/rpc/rabt.png0000664000175400017540000012764412323721476021463 0ustar jenkinsjenkins00000000000000‰PNG  IHDR°6¯»sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYsÊ&ó?¯ IDATx^í½ ¸U™ÿŸÿ H ›dWV‡‘5ƒ"‘‘AĐˆ#‚,FAAq (ĂOˆ"£ˆ@•%È&‚D–@v1 (*:êàŒ3s₫ơmî{9÷¤ªëTuuuu÷§Ÿç<÷vƠ©sN}ë­®÷SïYÆăƒ(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(0d LLÎwÚH:.ù;+Ioó¶Ù>₫¾¢Z 6€ `åm`ÿ‘gÍ¡̃³fȽœ.      @ÖM2:q•Uæ¿́_7ßêM/*}äÈ™Ûa§]F¿Ûv₫¾¬ °lèÜvßs¯?śñnÿú‹éùêe–ùÏ +¯|ṃlÜêÅ*@@@·ÉJ+­tÓJ+¯ü'9_z¥{₫÷/‘ĐÀ°l §6đèâçƯYç\à·¯yÍk₫V]uơï¼oÆÿˆ#ˆ#ˆ `Ø6Đï6 ±[OÙöw«®ºêG†ï‰Î£    À€+°Újk|íÈó§~wXh?N76€ `Ø€o;î<íw&LØwÀăœ     É„½u··ư§§À°l`Đl@<­·₫†¿Mê[ Ï“½§g:=©}VɤµåÇç´̣Û „>=5*G¨C­ô`×~ĐœÎGÀ°l@6°pÑ#n­×½î©ä¡Ê2;Ư÷,¦•„WAï̀ˆæQ~{‘Đ'ˆȂ(ĐÇ $“6ưâÆy €WÖsİlhĐ’pZ×¼Ù4PP†[e—}Í‘ûíÿ̃ÿ BA„À°l`l`̣:ëư!ỵo5ÜOÎPPúSñË/?áw÷?̣ä@¿q‡Œs<°lˆ³‹/½̉M\e•ùưùئƠ(€(€(0Ä Œ?₫˜<äÏ8=qN:¡6€ `ƒaZëO9~‹4I¶IWƒ¶ @• ,ơªWưí©ç^`™yÀ°l`(màÚæ¹ '>\å³uHË`‡ôÂ7ô´؆^…+@–¨EÙ¨Ça;Ø606 eä4œ¦ă*°Ø@“`›t5h T©“8ဂÊ9`ÇØ6PÖ9öx—Wl;‡(0¨ °ÀG¯ZÔ Öe, ÀvƠ›Y7)}qÅ5ôÀ>ñô n½ơ7Mú­ñ¿ëÿ*çÎ<ë¼Vùæ*ËíeYlÅwÅ¡À +À½|`Q7öW§ °,ÛUfh6´«í¦n?p̉nÿV°]½7)K€èöC‰̣±±¦Ø À°]ơaØ‘ñªy«ªº+…Ư‹ơưü‹.mEV-Ÿ₫†¶›Ö…Ø̣Ÿ|Êl§nÆMùíiG¯v«‘Ơ9&)»ÏôÈr²ê¢üö×aĐơ™™ØŸXà"æÁB́dl€`Ø®ºElÀ nƠư÷#G̀toÇ̃-Ñÿf›SåñS˜G]‡µÍïBlåpàŒÖ±Uw[îö3  ;-)3wL¶2ƯÜƠÛ‚ÂQ ^YIV%>l_½́ö‚̣Ña¶€`»ê°9+¸ ÁRÑRm³ˆ©V¿U~ÔUÛü®W«n3›aï´–C$ °ÀÀ0?0ñÜO<éÔÖ’ ¤t ̣îå·̃z«[uƠUc³Î_¦Ù³g»)S¦D·©h~\ô˜/ùËn©¥–Ẫ¸çºfïx×»ûnâA|¶tûœz°Ó’o†P ! ¼,Ûí‡å×kcV±Hלl>ûØ9sæ¸ư8¨¯C÷Kḅø4GÆÔù2~Ïê}†ôê™ À6çæ£%½S`zRơŒ̃Uß?5°Í|0\{Ă½́/Ç•W€-æèT O=÷¢;₫s_p‚Tƒ×iÓ¦¹›nºÉ}öÙníµ×Ư¾áF»‹/½’‡iMÓª¯u]å°,[́w€-ïCT|äº)åƠ °Ÿú̀ n½ơ7“¶›º½{âéxövùÙ;(; ppµëœ́¬).B¶˜£S%„̀¹đ7ỵ:£€ºÁ¸ .¸Àự—¿M?₫¸;î¸ăÀ0o×·́î.z„‡i—¦U^ë:Ë`X¶Øï:á,ô.Km{̣)³[ÏYươ³?rÄ̀V4¶Îßña¬k öÖµÖr<̣i€5¸cÛm[Qv¶7O¶˜£SÅCE“3 B-â*8¤>ưôÓ™é§?ư©{×»̃5z̀øñăƯ‘3q.~‡* ;ÆX€-ö»ÀVæLLJR7à*?µ¬"¯8#ê™*ÈU´Vï{xñ˜cοèR7÷ªë[Û•G)̀#_Bỷö«Líóư •©dÛÔµÙ@ÛÚâcÛ̉êƠ6ÛæYç-q¾Ú§ˆ³êËj{¾PX;À°7ˆ0ÀVù;_¼,¶˜£Óɶ`óĂ3¾ơ ƒr÷̃{¯{æ™g¢̉UW]å¶̃zëÑ2&­¶û̉igD=p;i;ÇÖg'j À°l±û€-î;d¡.À‹++íå‚jXEXP!8†¿ÇÊ'ĐU·bEfơWß}¸Ô6°å³.É₫xZ몬¿Êûöẃ=ú×ñÚî×­mJ¶Mûm›ưµèqX¯±Ö~Ơé—á×¥ăunVN‘îô•u< ÀöUÄ€­ø§¾`ql1G§́·&ạǹn¿ưöî†np¿úƠ¯J¥¯}íkn̉¤I£ «™‹5ƒqÙöq\=vP‡Î, À»ŸØ‚Cvö¾XA€--b‚d¥Ơw. jưnÇ…V–¾‡jûbVÀçGPU¦¶L+ÖcpmuYR ¸ë÷ À°le¿Åƒ_[̀Ñ) z›»Ùæ[¾1M SđY\ưă~øawÄG¸e–Yf´üéû́˲;C̃¥€`Øb¿ële¾N߬EDÛ=ăAM‹̉ê9¯ía £¥*3ܦˆ«¶¥E|cV Ù.Jkơ( ÎuŒ ×fYÖßjÛÁuQ¨H~€`Ç›‘Ü3+ûIà‚Øbѱ&YÚs¯½GÁRyôÑG»Å‹»gŸ}¶̉´`Á·ç{¾RW2>V3k†ăØö’¯;vĐ ]X€-v?°•99} °‚:T»É¬›q˜'ܰz6øƯŒĂ.È1]ˆ‹¬µ3́zlƯ¡c¢ĂƯ|¦u`§%eæÉV¦dj>Zûơ–ĘÄiđ'°êRâY‰%*ñÉQ€-æèäưx 5¹’&Yù1vÓ§Ow÷ƯwŸ{î¹çº.¾øb·á†Ö«5Óq^›Ù_­ ôZO€`‹ƯÓle®R߬E'³ºơêw= `Eơ»Ç¬ÊT½²~bAm]M‹gƠkçd伕(«`Öœ<ë`‰ü–ü°y·Vw÷°ÅvprÖ98MªdàºÙf›¹¹sçºçŸOf ®1xâ‰c–ƯÙ~ÇƯó²C̉µ€`Øb¿ële~F߬íêÖ+x O€jƯƒÓf*Në‰MëB́û![÷bËăOeÛʬ™i€íà~ ;ø‘W›Q€íàF©àP¶˜£“°[CÖ蘴zÉ¢́Xû®«sÊ[N¨ϱ^¬¬|U· ÀvhKl¤€l1G'íG{åUVi⪫®ê9æ÷ÄO¸^x¡QéüóÏw“'OÙ 7Ú¸'¨n<ô(s¬ °,[́w€ṭ³ Ạ̀L)vÿT¥W/6ß´#s°l¤©de`#`;ÿ¡6€=ưôÓƯ¡‡êÖYg÷å/¹Q+ ~æ™gÜ'>ñ‰1Li¦d͘\Ơˆr:·§N5`X¶Ø}ÀF: ùÙØ!™k¡ÓçTÚñ,“)•LÉÆ¤Öư—1°ùO„næ`‹9:í"°_ưêWƯí·ßæ·Ï>û¸í¶ÛÎưèG?r¿ưío•zè¡VûF- ỜÉŒíܺñP/Z& À°Åîe¶2/€`K¿`Xöåñ¯J|r`‹9:1;₫|wçwºóÎ;Ïm¾ùæîŸ₫éŸÜ£>ê~÷»ß5*]ươnÊ”)¯L>•̀ ¬™”‹ù;·¡*5`X¶Ø= ÀVæ*°li€­`úÓŸºË/¿<3UÑǘg?ë¾öµ¯ơ¤¶Ó€leR°Å"{×]w¹… ºư×uk®¹¦;₫øă[Ëéü₫÷¿oT:í´ÓÜj̣̃?QY3+W U”Ơ¹ÅjÀ°l±û €-å>¤À°¥}¶f€=øàƒ[c̃,éøßœUB́Ö[oívÛm·Jˬ²}EË`+{p”*€-æè”Ø{î¹§‘ưđ‡?́^ÿú×»ï|ç;îÅ_lTẓÉ'Ừ™3ÇŒƯÿ€ƒÜư¤41Ù˜̀ĂZég–®ÏŒb6Ưz° Ø[o½Ơ}́ck¥SN9e еhíøĂÑ|:Æ\u»ûå^pÁ}Đl¥?ô… `;(Ø,Ä6‰“µ.ÄÀÀ̃wß}î₫ûïwsæ̀q›l²‰;äCÜ/ùËFA¬ ú²Ë.sm´Ñ(ÈN¼›sá%8}đÆ€m°7ß|³‹Igœq†K~£̣ª¼¢ùËsøá‡»7̃8ºMEó«ME9î¸ăœzkô£Ălm` »uÀöÁs§û¿W«~ï3«²è~]F§]VÀªè¬ºÿúƯ}@Ơ~Û§®ÂÖÙÏ£íJµ‚YåÓ¶÷¼ç=­ÿ«î¶ÜÍ1[Ơ]S®¶7û³Ÿừ=øàƒîóŸÿ¼[k­µÜ©§ê₫øÇ?6.|̣Én„ £ »ë[vw·-XÔ×ÎjÚ&—ÀfßÓoO–Úq§£̉ö;́è6J`16ÿÔ7oŸ¼ô‰Ï¯r‹³ívSƯ&oxct›¦$ăÙ7̃x“èüjS™cN9ưŒ¾₫M`Ëù5À°eMmFràœ¼ƒ§UÙm`ĐV–Ú&è4@4U´FÛô7̀¬«•¡cú) ÀæƯZƯƯÀv`™}ƯÊ+;­kX؇~Ø)R;cÆŒVDöÊ+¯tÿñÿѨôøă»~đƒ£«·¤‡vËî4Ô©`;¿§›ü‚‚¶U}Øîú–À6ôYSơoQ¯"°lœYXEDÓÆÆZ´ƠXu/ö#\?âꬺ낫̃nFI»Yv—vz¢‹̃¼đÉQ€íÜÊêB¬ñ®;&Ëè́¶Â n÷e–q'œpB*Àê₫ź±Çœ–µÙyçƯ{́á´VëŸ₫ô§F%ÙƯi§ÆŒeÙÎí§j'€m̃5©úS^µ×€m´«À°e tjràqy°mVP°ávå 6̀ă¬À€Í3Mö·S€íÜ ṽ¼yîđ$b¹ök^ă®K^0%7©{ßrËå¬"O<ñDk|́úë¯ï>ùÉOºgŸ}ÖưùÏnTúÖ·¾5º́Îøñă‰Ä6̀¹`;¿§Äá̉€m´ŸÀ6́Ó­ßÇ.D`£ €-°F`Ø(Û$SØÎµ`·L–Ê9*»—Fàµ(À₫â¿hơ¨8öØc[ «.ÈùË_“₫û¿ÿ»Ú#·pÑ#}=₫­[ă^• Àv~O÷êÚQoo®Ûh7 €`»j l€µ®¾á̀ĂYc`ưñ¬yc`Ăư:–1°]µơ*€íÜa ö€w½Ë¾ÔR­È«¥"X́âÅ‹ƯSO=å4ƒñAä¦Nê~̣“Ÿ¸ÿüÏÿ́Yú¯ÿú/÷?ÿó?î÷¿ÿ}ë7€íÜvº,l3¯K7®5eVs­ØF»5,ÛU`Û¬ ̉fÖ_u 'cR›uXû,¶µ›…XùäHúåúCusüjewi lW} `;w€̉º¿nÅƯs>À&c`?üá·k]ˆ}€Ơ;Ï<óŒ»úê«[¿ûí·Ÿ{̣É'k…Ø—^z©®¼̃}÷Ư­¶|ăß`êT°ƯÓs¯º̃}ê3'Đ« ¡öƯ h`íỜZuƠI/m¾Ơ›^$ ¶t!îá:°8ĂêC"°‚K-¥“¶ÔU>[n'\VÇ…Çj)•«”¶¾l Ù­2Ø̃>8†`å¬vÚ6m§yd«±E`³ï\~y·ó[´fög!¶IœÚ́¯~ơ+÷ÜsϹ³Î:Ë­½öڭ߀_|Ñ .»•₫ú׿º¿ưíoîÿ₫ïÿœ úG?ú‘ÓÄTlg€Ô Ü/€í́ú^×[ƒØœ1đçXä>`+óC&&%å.[R°6•© iđ5ت mT’làœ6‰S·À±)å°•Ü¥ v€¼n¿ăÎAlÀª»ïW_Ư=<…½7ù+ˆƠ¤N›'ëªrÀ­e²´ŒN€}₫ùçƯÓO?í>ñ‰O¸ 7ÜĐ]vÙeN Yu2pUwa½D»ùæ›Ø>‰H°ư°·/¼¿˜ú[Äbóek#li"Û§îÀ¾­)ïÛß±·óÛ¨6ù0luøÇ…åêø^ÙpƯơ°•ù!leRRP] °lÀØ´:º°3ĂŸY—ñ÷s=́+ÎnYˆm°çwÛf…Ƭû±Cu;­´’KúY¹£˜ưt̉¸,À b-ưÛ¿ư››‹º2¶3hM9mÄ $}˜| ơWy Nmâ'Ál8†V)ˆ´zôÖ8[A®_¯V¶Ơmmñ!Ö@Tu¨m:^ÿûơ§AºÎS`kơ ‚ëÉ^ƠÀVæÅ°•IIA( 6W À– `/Hœ7î[‰‘ɪH*«ỆªhS#ËXn¹ån9̣£G·̉ơî¬s.p›m¾…ûáo‹ṽÚ¬ºö¾eÊ·Úßư;á„Fg!3gÛ"[EaƠ•ø(ưíoë¤ơYMy“M6q?øÁZƠ¬$pƠGăg5³± ºöâK¯tÇî Ñ׫WNr]ơí f î~‚̀0) £KD[ ê÷Ô®yXÎ}/n;¾5« ±Êñ£±*?Œ¦Zû-Úk­6 ‡›vNuÙkê`ó\üèưl´Td¬AI¹“°li€Ư5y°®ợÀÿ›+J*«ỆªjWăÊYj©¥~³Á†·&2"½¬Á¤ƠVsÛï°s4ǻÅ_́–IÖ…ơVăKwK^̃\1…=₫“Ÿ, °›•î¸ă·ë®»º·½ímîç?ÿùˆµˆ«Àö׿₫µÓR=e¸ŸVÑr9kO^§ ºnMp„›Đ¶s€•M CPƠơµ®»Ơ´hªQơĐ"´El# `³ 6Ü5‹²Ñaí楃ØÊP€­LJ ª@¶iƯn©=]êB<+1|%>9 Đ…øg÷ÑÅÏ·@èÄ“N-Cy{Ï=÷¸Cÿå_Ü\0fØË/¿¼…ƠÙM_÷ºB«±®~z÷{º+®¸b̀6íÿîw¿Û­ø¸ăku5VWa¥?ÿùÏ-xỢ<ư°O=÷b+B¾ë[v]ƒV À.9£ª̣"ÀD̃W44¸Sd3Œ¤À*â*pô“?c°UWÜ¢ƯqØÎ^Bµg¶2W €­LJ ª@(€T”ªù$aªi·$É­k­U*ª7H€7èçÀVsÏ”-€}ÙQºmÁ"·ơ”mÇtû‹u‚bV“"iÖàû5ÆÔÖtơM~ïÜ̃ Èj=guV4tñâÅ­É”—Ï<óL 4µ¬&qx†iÇÍ6s›'ă_Óö© M 5mÚ´VwaëvÜ/«kó₫|ÈMHºZ°†‰À¾âđí ~ü褭—êwÇínkƯ}ơ×ïNó»’°êvœÖ¥¹.ÄYÑæ˜¶B¶¬±ÄqleRRP D¬ê_Ae­"`]ɃϘ†`ŒÊ ơ¿º‡YM¾²Ûn»®¬º+¯¢¹ÚïGWCÈU×aåñ»«.‹[ư>Àª £<₫~†>øàÑ2T^¸OÛçíÊ(×Eó̉…¸¾;9­&¶sÇ¿S€Ơ=£et>º́²îë „¸Ï>£ûøă»6̃¸§>¸*Ÿ´ÉQ£û™=÷Üs[?YºóÎ;[ëo³ÿûeb9Ä÷?̣dkl¬º}ûƯŒØÎí¸Ÿ€£ÚÚ«n¸lñ{€­̀`+“’‚*P€Àü {>¨…QƒS'€µcüq«!À†ß•Ê/86¶:U"Ú/@ỦwươÛeଲ­ «îp¢'ƒX+SëŸ[§0Zæx¶‚[´ƒ"ØÎº*ö±Çs‡Î˜á₫5ƠÓ“ôÁ₫g÷ù$*{T³!¼Î>餄₫üç?w³?¾²Ç.·Ü˜|ÂsÎ9£°j+XMKZºGmx衇ZËüh¦sA´Óo×Í7ß́~ô£¹ë®»®5ÑÔ7¾ñÑî¼ =<&Ña °₫´¶'b́¡“¯É<¬|P  À ê, ̣|P,°á,Ä*Ë" y«È«¢ªÙpb§´1°á6u-¶®Ï6£²Ej­<‹À–Ϫ`{{“°;\ÚwÜѾ¾˜Ü÷–Yf̀¤M‚XE^ ^ưHª@v³¤{pâ5ŒB¬Ea-Ÿ¬¢ºi €íÜ€4ÄúÓØ̃ú!Ô]R `Ơm`fU èå2:‚>E*˜iKÚt °6V6`ˆê:l ê±X‹®úKÙÿ~6́]˜Æ–ÀVu×”+€íÜáXE/ï½÷^§ ›áüÙÏ~æ|đA§ett¯(ú©ñ®ï¿+{r0ÆUđzú¿˜=UDuû7¾q À x…ưæ7¿Ù:Fp¬ß¶Å‹§&¶s;^ĐèO`Ëù… W `§UÙm ×ÛnưÖx̀…ØŸ *` •×À:kâ°]íº ° ¿åjlÛ¹Ă•°Ç̀œéVL"ªÿïÿư¿\€7o›œ¬ơv¼fEOµ=XEc7J¢¹gÎƯ:îöÛooư†T³R?v!Ö2HZËW³Û2¢á0Ú[£ÓAU(PŸ¬M´q¤¹—i4)º©±d6{±º+ªªïykù”Weøăgc Ú–ÿñËQY~Ty€»OO´–ạ́ÉQ€íÜaÍØóÎ;ϽaÍ5ƯQăÇ»½“t '䬢´®²ÊèÄL¼ö…/¸'Ÿ|²m2€Ơ„NZSVßüăsÛm·µ~CÔƯ8+ơ ÀjYO:Ơiæaư¦*1 qçv<ŒàÂ9c7²W R©ÉY—wfCZ÷\ûN˜dPk@)Ÿœ,ù<€µ®Ă~]₫,ÄáMiPë×oåø]‘`ó́•ư# °;p!Àª»đ{öØĂm“táƠXÔÖøƠd’¥<€U·âØ|óÑ®À₫’:Y]m»€u¿¥—nÁïgœ±D7a›DNÚ.5u§ko˜ç9́·Á†§® ÀvnÇÀ« °¸D(0¼ À¶ë>́GbÙT”Óïæëï·r4a’à2œˆÉ¢°iÇøeêØ°MÈÆlS9ªWíd‡Çh_Z»bǯV‘¯Kc`‡÷N,xælçNk°ëMäN_j©±Ư€#öÀ½ör_K"µÖ}XÑTÍ0¬q²íº₫jß¾{îé>̣₫÷»E‹¥æưÉO~̉À>úè£mSSÖ_"g̉¤ƠR¡Ơ¢¯D`;·áaÎÛ![Đi ; ˜°U@e<2f=Úvz°½ư%`;wàB€=à]ï* °Ÿ8ôP÷É$bkđzH2v~°Zçơ3Ççx≒ÆÖ†½6̉îË^¬ÀơÈ™Ç䫯üÿr7j?i}\à¬ó{ ‡CC"°½ơC¨z©›D;×â°½¼mÇ`;wĐB€½ækÜÚ €¾ä-ksHY=ô_₫%u ́¿'-½s„Qx=)9vêV[µfVäM_÷º¶cWÛkµ}·ÜrK `¨y© ëÀjmYsƯzʶQ0KâẂXθđƠù½†Ă¡!Û[?„ÚQ — °l)€`{yÛ°U8¨i“8…QX­íºo¤û¿ímnáÂ…£Ëè|÷»ßu;­´̉(́^œŒcƯ{ç[Ḱ¬@­º d¿₫ơ¯w±°*7/5`ưërÿ#O¶f̃s¯wºe–ÏØd̉™vv ÀtUñÛE/Û [™21)iNe¥Q Ô  À°5ÜhUWA¶sg7 `¯½öÚ%¢°êüïI$vÓ5ÖpW_}µ»á†Ü”d¼¬ UûÔexû6r<đ@k¢¥́·_kMX‹ÂæMÀÔnÿÍ7ßÜÀj¢¨¼Ô4€ớ¬±±D`‰Àcÿ– «†leźII‹++‚P X€­áF«º ¶s§/k÷NŸ>:ök ˆî›t ¬>œ¤Í“èêÖI×`›¥8yâ»ÍV[ÍƯ}÷Ư£³_yå•n‹‘q±Û®¸¢»ä’KÚÎ °‚Ó˜¤‰âîºë.7₫üÖ̉[`Í®|Ưu×µàûßøÆh$TƯ}{åøÎ½êúÖ́ÄûpPÏÚĐ«sϪ—lç÷tÓ®)íéî5`+ó,ØÊ¤¤ º`X¶®»­ÂzØÎ£,€́ÙXX-£³G²´ºîƠ¯vêR,UäUÿoóÚ×¶à0œ%øï×[¯™½"I»o·]î,ÂY³ ßtÓM­¬f)Iư°8öKÚ/Ûù=] —†leN[™”T—,Û$€‘₫̀ºŒ¿Ÿë`;wÔ²V̀÷¾ûƯ­(¬­«m9ø`7yùåƯw(ƠDOïLÖn=çk_K½fÍå4”@WÑØ+®¸¢Ô}öăÿ¸°÷̃{oT`;·‹^AÛ¿×®W63́ơ°•y1leRRP ˆMgç•À°¥ë.Mâ4+1X%>9 °;»íVë,+ ûOÉr8'œpÂè,ÄTéÉdM«%púéd­g­ơ–¼“’è­@7™ĂưcÅÍÊÛnû7̃ØXilê‡.ÄĂîx§?Ûù=] —†le®[™”T fåN*À°lw[ƯE°;j°Ÿ₫ô§Ưí·ß̃7zçw¶ÆjÆá÷ÙÇÿÿ₫¿1«‰”’úÀZÑvKÛ́³ûî-xÄ*rû“Ÿü$w)œ°<_ÀjŒml`;·^€۟׭¶B̀B\±ÏÀV,(Åu¤Ëú®Å×wƠŒlG7gǰ;»;ị́£í¸ănîܹcV³ /“LâäG`°yËÙØ₫o}ë[n§‘Éœ4+ñû÷Ư7úX+CmÀ ¨cÛ¹môØ₫¼n½°ê`;v"ÆĐ-€UŒ4øÈ~ªüD́Ô¤Æd‘j>7'é–$ÚpëZk•êÅÂùº¦±Ú°ƠÜ3eK`;wvµNé̃Ó÷…ØW%ù¾÷½ÏƯvÛm-X¼ç{Ü'fÎt\pÁhâ"ÛZ6Y+V3+ ;)鬯ÀoƯi§Ö̀ÀYPl+(-’> 18“8aÿ† »†t!.ëA,q\7v檫Nzió­̃ô"i°5XúƠ¯₫Ke–ørAQ«Œă«ª€í=XÆh§ùتîrå°Ơ9Z̉e“7¼qd'$3Ÿt̉I-€Uwau¾ï¾ûZËØä­ÅîÿØ‘Gºc“Ù‹5™ÓQ À{ôÑcʘºÉ&nƒUWmƠ•Vöơ×_ßÀ |‹$¶:û¨ ˆÀöß5«Ë6¨'Ư6Ør₫CÊQƯØYº>Øîàÿ®%ö$ÿ©ÊO4ÀVV) ÀvhL³’ă•øä(ÀVÿPø̉ig¸‰IÄtäÇØ½á opçŸ₫€}à\‘¤uX'̀F¬µd7œ8Ñ]tÑE£e`·L"¿Ç~üă©åÀ̃qÇ®hj̣:°85D`±êÆMS¶2W €ư=÷cÙߨŸ¬¸¢»ûˆ#H¬º‰ß’8äÉK‹*€|°ƯyØ<ºøywÈaGŒB¬~˜÷̃{o§ål-“ṽb wƯÈÚ±êN¼cÉÇuT«¬í6̃¸µ,ÏÉ6M$–¯ÙƠ¾¢ €í”}ÈçG¶¿®W̃ơd÷¯'é0äg`Ø̉Ṇ̃AØ©‚̉đh́qù¿Ñ9ØH©Øî:G·-XävÚe×Q]6é₫ûÑ~´5UƯ‰‹¤Ù³g»m’%yîX‡=2ù¾ÛÖ[»7N¬—@N“<½ïÿq‰r¯»îºÀ FË$E€5“±Ê¹úê«[ăm-¼pÑ#¥X8çƠÛ[½¦Øé`k ÀF: ùÙX¶´?0«{$×ÙIº™4\‘8ß›äÿ6Fç`#¥`ëq̀.¾ôJ·Îº¯…¾I“&9é¢E‹ %óƤ×Â;“åt dç.½´›¤ù#“d_‰Êj’§d:x÷Öm¶S̃µ×^ÛØyóæ•Jl}vkOYùǾkơáĂt;î´sTÚ~‡ƯvÛMÊ«2‹æ/s̀Ô7oï¦l³]t›æW›ÊóË®,í´vjïUÀF: ùÙX¶ôoÁÀD`óïr Û© °ơƒ‰–Ư9đ}3>ö½ï}o+2Zb•×@vß$êª.ÅX¥Í“íw¿ûƯṆ̃ `¢e]ˆë·•2Î9›}ä ÅÚÿg$“±%“¥u+¿Ê-ZÇá‡î6NƻǶ©h~•[ô˜ă;ÎíÀA¥Ö26^ơ1l§Äèñ“ÿ’u•~˜…xH €­ô¾¡°>U€lä…`{%×̃0Ïm±å›FAv¹å–sG'Ëăh)œ¢i«ơÖk5€U÷bu5¶r4nUXM"U6°½³•";Û`]äGcÅWM–¦ưͯr‹£!S¦L‰mRk˜B‘ü*¸è1sæ̀`#Ÿ·d+¥ À–2œä I“w°º ø @`#¯Û{(9ëœ ÜÊ+¯2 ²ë¯¿¾;û́³ A¬f!öV «q²§vZ«Øo¼Ñ•Mlïm%dXÖ·(Œ°‘N²Ơ© À–µ·(€–”^u·² æ8`#m€m”h|¬Àcéd2¦ä̉µ̉Î;ḯ®ºê*w÷Ưwç¦m7Úh À—̀F¼Á„ î̀d¬¬W9À B;I6 ñ¾đf!n¨SÀ°l±ßuºG: ½ÉÀ6ôYóBµHß§J+`«T“²jQ`zR‹ —Ol1G§Èq™¼Z’f·í5 ‡¯J@tÆŒ­µ[.\˜™ `Ơux›d<́»¦MsZûƠ1€½₫úë]'é²Ë.s{î¹ç+³)¯¶|—9Wéí°,[́̃`í*°lY˜»D'ز̣r ôP¶˜£Stͽêz·É̃8 ’hê¿øÅÖú±iI»G½}ĂkºóÎ;o‰Cï{xñ(ܦ=ß´_Û-Ÿ}÷ó¦¬åï0wû9 ÀV|çP ²l1G§Û?àEËW·̃}÷;`̀øØưöÛ¯µT–̃±¤åo° ë§9sæ¸vÚiôøñÉ8×#gă4î¶h[Èß [`X¶Ø½ÀVæå°#ăUÛ¬"³ên¬<ÖíX]‚í*đƠ¾œ1¦K²ŸGđv!¶r­L•ÑOÏe¶²û‚P`đ`‹9:M}¨›ï[¾iD—[n9wÔQG¹Ûn»­•.½ổÀj,¬̉÷¾÷='Đơǹîú–ƯYgf{`X¶Øï:[™¯Àæ¬àT€éGO T}€̀i»m ó„«¥÷tŒ¹Ú¦ú,ií`+»)¨˜‘´}f·¿¶¦°Å¦? Î:ç‚d ë*£ ûú׿̃qÆ£«H́'?ùI·Z̉Exäaá6Ühcwñ¥WöƠƒ®éס—í`X¶Øï:[™ËÀæ¬àƠSë&¬íŸ¹₫sD]‚ưˆk°*³ß"®ás² ;-)svu+ÓÍy™Ø5)0+©G‰Ol1G§—`[·ºÿªđ̉K/ưÊdL[oí&Mä6Ûl³Ñm&Ll£-—|ưa+, À»WØÊ\%6`ÓÆÆ `m{Àêù«<'Ÿ2»ờVđ À.aÇ fåN*ÀVvÿSP °‘"°Å~‚¸…‹q{¼m¯1ăcG̃pº÷àC,‹3Ư…Ó́€`Øb¿ël¤ĂŸ €í` NÛ¬º °ù†8’€–ŒMQ€¼l1G§ŸÖÚª̃ë×[¿²[OÙÖƯ8oQ×…W]s€`‹ư®°‘C~66`%}û;öó >ÿ¢K[Ïg›98mœ¬­ûjy¬MàÔ>µyä{¾•ÅçˆØ­’̣®ˆ/“œ(ĐUØHyØbN??hûp\k€`‹Ưël¤ĂŸ €ÍXƒUY„ LĂq±XÁœ‹Ơ1úßß`µ|•ă—ÛOËéô `óÍ(PŸl¤Öl1GD¯¦Û À°Å~§ØH‡!?;°Të>3¤¶„NÚr;ÜZ¾pâ'©öù€ª̃V~¹₫ŒÄMn©}l₫ FÁW€¼Æl1G§´q¸¯) À°Å~ØH‡!?[§ûơ¤·Ờ̉ơ¦çZÖØA׀ͿÁÈ1ø °‘×€-æè ú„óë{`X¶Ø} ÀF: ùÙ:ØñIèC,;Às6ø>›ƒ‘cđ`#¯1[̀ÑđĐ«é6À°l±ß)6̉aÈÏÖ)Àª†b‡`Ơơ8œè©éÏ*ÚÀæß`ä|ØÈk Àstªø‘¦ 4ï¦ °,[́7€ṭ³U°!ÄÀvóùĐ䲨üŒƒ¯yØbN“üi×’etÚÛ€¤ØÏ­·̃êV]uƠǾ®h~\ô˜Ù³g»)S¦D·©h~\ô˜9sæ¸ư8¨¯Ç(°‘C~¶ªÖ‡ØoÛØa}–°ù79_6̣°@ϰ>,ơ¼ǻ­=y·ư;tzĂ7+|~l>ûØ/ùËn5Ö,|-dŸº_ÛXœ¤›Iipk¢ß‹j8/)ë¯ïØûƯ}ư‚dPŸ5UŸ鸓m `#//;øûÄÓ/´Ö›«úaÓIyMkO'ç̉´c]ü¼Ór ƒæ\ø½ÂçÀV°Àîú–Ư _‹&Ùç~ÿ| ö[IFj”º&OñÑ£ơüjÚo₫ ´§W«n‚>(ĐØÈ«À>À6mJ₫pöAyørÍ¿—Øî,]ˆ#¸d‹U`b’Q³·|9º7ÿ·µç_¯Vo­Ôơ‚ 4A6̣*°Íz0Ü÷đâÖ́ƒú[ÅAe°ÍºÆU]WÊ)~]X6í¾a l¤ĂPO¶M’jæ'iúHu,Ë蔵¼Éṣ`ób è‡O†Ë'G¶¸ÜMpèFt€mÖ5î¦ưP6“8ùˆZt<+“8á2ôX­ÿ*xÄÚ€`ËåÔäÀặ`ób? 4Pºöü‹.u8ĂƯ¾đ₫V„q»©Û·"ƒ¡Ă­ơÏ´OIùĂH¤U:Vý»Eí¸4G₫#G̀-[ơ„y/Ú¬^Ơ–¡1]vnú{æYç)+OíW¹‰™Œ¶SÛÔ;Vm ÏQI+Ó-lWY€Uv>víL›´óó¯…̣ùzøÇ¤k¿µ;íZK?_Oå÷¯®§ÎƠtÓù‡ûvaúè¯éªư²'k‡êó÷„ƒÿº·b?Eg.ŸYˆ›c[D`ăœ́Ÿ´dbĐZVÏ=#Ö[ƒÑ¤g Ï‚î߯ú}î…%°½P:Q CêXƒ(=ô0P̉•ÿ`P„ Ä"zøog0nÓ÷ppƒ]Á“Ê·vXÙUiPíC›4hÛdD*ÓÎGÛ́üụ̣̈4Đ9ûº(¿àÊïlí–N_Ú¦ï:^í Ï¿ ÀF*Oç£̣U®½P°2í» i¥¶H»₫~ÓÚÚmeù×Zyt ³êW=>í¨N@ €ưënZùúIwåQ9a8.Ưw\ể€ÍÇ÷¢Q[–Ñéđ!̀áy Ô°₫sKÏ%óE˜x°ûÏ6ïV`?  À¨u¬ÿ4b²œWåơ¡Iù zBP̣AØàẸ̈Ôùơ„y  Ă6i»~\Ă( å XÛĂó3Pk§AVâ,°2@óÛ+€S[Cø- :ŸæĂmöR@hŸ¯Ú¾D0صsô#Åjsx­Ăöj¿aµ·ä~¾0:­c|½­Í₫K‰°!ŒѼƯwr:Ñ€`Ó́‡l£¢ÚÖ^ÆüÆèy§gKÏ gơæ2nçç„p¬2Ẵ`*3́‘fu[[ü:̉¶¥íO›oĂÊƠ¾:Á€mô}HăP Y Ô °₫hVdĐ~đ-ªéÿ€†•|¾aäTơY²Hg°†›vQ̀,è ·§•nk°i°Ÿú E#°ë̉È×,Œ́ÚÛê4xÏj—Ú–uÍôđJ{›=¤t¡ăGdÓW럧¾·{±ăܧ™ À°l³|ˆÖÔ°öÜK†ÚŒ=#́%ª₫ú¾„¾Û%ë¬m>”ÚK[+Ă‘6Ä*|¶Y4ëeơXï%¿̃°ư~»Ă €ùöâßzƠñL`#î²  ¼¬@“ÖÿA·ëjʬưXûbÿÇ₫(À`†+ Âñ¡ººFáC¿S€Ơ›_ÿ!kcƒư¨pÚỤ̂p›9ÖÅ8Œ”‡¶‘6F:ÖVÈ×LxƠu`X¶«̃ÏĤôÜY_ ¶ €µæy/µ­×“Á¨₫†={́ÙeÏ{©>¿üc~$4`ơ{fÉÔƒV+×êơŸgaï(Ëă?Ă­œ¬gƯzÆ°ï ²£À0+Đ$€µ·–öă˜©+°Ut Më†lí̀ê^vSîV6œ`BBédŸ¢Øđø¬‡•½aNÓ7-*Û×:«̀"kç!è6@ »Kµkg·̉”Û;À`X¶«ϺIé‹+®¡€yNÚ3%|akÏz{¾Ä¼\ {ùv °aO¡¬zưçfØ+Iơ†¾W¯‹lÅwÅ¡À +Đ$€ 4UD`íÍjø61„ưÈg½q´—ÿ YD2|›öV6`}èénN®¤cl›ó`Nëb ÇÏ$Û›_¤­ ₫[jÿ­px]C€ Ä6ζÀú]¡u|ÚX¤°vy³Q¡½ƒĐN´`X¶«M߬ùí"°±Ă…bVeY¤6œ…¿[kí·«ÿ×̃·ëAƠÉïõ±lWïM GÁR IkăRíÇߺv:Ö‡:+;Ïi?́áÄE₫nØ>?ÊiƯp´Íïú¡ipéo]ÚAh8Emđ5+°áùXöpß[„ÚŸü!l—= cÆÀ¦u'/3Ö«”u]®ÊuùÉ{ ³¿ZP`X¶«>Lßl̀Ø<€ơŸz®„QƠp›öë»=ƒ,·6ob&¶«÷…£@[f&{•øä(PÀ*¢₫h¦m³5^íA£ïat,íÇ8m›ÊÔĂ–f ™¼uåW:>+R«íÆ´²b5P=*ǯ#íX¿ưª/+‚œwl;ḤËơ#ÖY‡×Æ–ö ßjÇ\3ƠçkÎ̀¨ïa¹₫6ëÖå·É¢ÅáWµGÛtL̃( ²Z¨¬SO€`»êơ-ÀZWÚ4ÈÔsĂ#ip®8 Ÿß~¯¤´ăíåx»U±]ˆÛ½¨Wù°Ó]gçYü´$ĂÍy™Ø5)0+©G‰OC¶N'•ºú0ª¼vyöÖ"ËuONQåyQVyû`X¶«nQ_¬=,ªgˆÁ©½tµïö¢Zơ».ñ–Uï Úû±î̀ö×ÀÔ/3«÷VZ½>°ZûƠ^V£m₫‹ÛØɵÉT €íêo…T€¬®,Nwy§»Jílr$ÿèÿo3VYg¯ÊJ›É¸W“SôJê{ß°,é”ËÖ×k½¬́9iCÂÙ÷„₫Đ“p¿Ÿ¥á6¿ ÁlØóÇ@Sơ¨|Á¬_¦¾‡óT蘴zĂGaûĂcTn/fâ×ïs9³Ë< €­XPë¾l¤Æl3À².аÅÍíÍkøw»Ïúç\—ÎÔÓ̀û €`ØHç \¶¾X~»{÷ÛƯ+€Ư*©øröÎQ(P¹l¤¤lï~¬yP¢=6P¯ °,é”ËÀ&cHù]/§A¯¶œ©s tG6RW¶Ü-(tĂúÏX€tÊe`Ø̉À–»é8j°`#¯'ÛN8àÄ5ĂÊÙ À°‘ÎA¹l, À–»w8 Z °‘†À–s„tĂúÏX€tÊe`X¶Ü½ĂQ(À±¶ÿœpÀ‰k† ”³€`‹x…ó°,[ø¶áxE"°‘ÖÀ¶w„5-½¿¾à̉.oÁtôŒ×­:× €`ØHç \6€`ËƯ;…D`‹Ø›íkQ­7ˆKË”…!­I®=—U–i—~eëâ¸Î YvÊ”)ùÔêå˜={¶+r̀œ9sÜ₫Ô×÷ù1ǯơ'ơâ›Og °léß½`́̀ü–8zF²eNÅeR tU"°‘̣°Ù …¼C¼Å\/à¡Ûí“&E8—~D°Ñ^Ü iuN˜0QRtZj©WEçU¹Eó—=¦È9Ô‘÷Ă,í´6Á6ØH‡!?ÛÄ$ËÍù٠嘥ëÓ;¡ Ư}–°…î 2¨lä…`³mT7Xÿ¡¥mJM}5­}8£ÑÀßÔëH»ºë(¡/úú6ÀF: ½ÉÀIT·W«n‚>(ĐØÈ«Àf;rª¬9:únÑ ưoÑYAc8ÖÓºÏ>ñô ­.ÈÊ{ĂMw´à× #“á₫´H¯êñÛä;aYí³<‚I«[Ă6[U¯å >-Âë—«óó»\§E±àÀdl¤ĂĐ›l,[Ọ̈f$æv!Ö…nèq(ÀFÚ›îH &«úk–¦ Mÿ¨ ̣®Ƃ:‹ÔZYÖVß ú4ÎVåÛx[F}Ç›Z9Y#eµOå[dÖÚ,°ÔùùmĐª̣UVZ0Âkçq₫E—¶ÎAÇúí³63`i°Đ́‘l¤“Đûl,[Ö زÊq\ϘԬÄ'G6`Ó& Jë¢+8 †ÑZƒCƒ8A^15ØÓß°¾´I| NsÂÓÚ§rÔ¾"Mơ»C«₫¼.Óaùyc\Ó^À6€ 4ɈÀ6ÚU`ز:59đĐ¼ƒ‰Àæ)Ä~h lº#™”~$3t¾vFj{Yçc]‹ íoÎsú̉6ë\ÂíiƯĂ<~ù1p“'ïœǾ`Ø@7m€m ṣJ“X¶« ÀvU^ Gî(À¦;†YKÀdM’äơ ljƬuMV~?qÜXư"öB^́xɰƯñ/**uÖö;îܺF¤ÁÖ@/́+²™BŰ…ä"3 4C6~ l»¬ö)‚i ëw'éBœ6¶Œc™°êʬ¶Ùx[+·Ó.Ä6n·Ư29ŒÊØ1Ç`7uÚÛ $£[%Ûg‘†Bƒ™½°D¶ªS' t¨? ±*MÍ.œ„₫́Ä₫äOz³èÏjNâdăTư5VU¾?nÖ&vj·kVûT·€ƠÚl4ùåÛ,ÆV¾ÀTíö5dƒ`¿\ëJ­ógb@¤NÑ Ư›uÖÙouå£ï·ó©¢½l‡‡£@+ÀöñÅ£éĂ«Û`ĂIlIœ4P5ơNΕE! .³–ѱH©¿Ô_¿ƠƯ`³Ú.Ñ“6ù’¶Ù́ɱËè¨>i ưïGŸưÙ˜«p4) ngiă¸Ífổ(œ.ö“~ÿ°•ù@“’r—-©¬6 B `+‘"P nØl h×­7Œ¾ÊL›ØX‹|äE@Tv§ËΤµOmiW¶ïü­_å¦ƠiƯªcḷ¨Ø@V¿ዯNÎ)L¸ª^%;nÚÛ‹.BH•å_Ÿ̉ U—’-Ç•vM `m¼»µWÇøùóÚjZ©>•) Ú‚o+Sí̉ÿeÇëÖi“le®[™”TÓ“2fç•Àæ)Ä₫:˜•T¦Ä€eF̉!Y½N‡—º ưwQ>h¦Íˆmk×3Œ†ûiy=2̉º[Ư₫ Éúßïơ`pÎDöŒǪ ¨ư‰ÓÚÙfZL•éÏ$®ïíÚêÖIâ¡u=Ø¡½ô<ñI«r'`y톶Qlä¥'ÛLG@âº`ÅmÀº­êo%µH¥Ô’"‡@릂™ » ç]—4€ÍëoÏŸvĂơáĐ@=¯M~”WçëkÖÓV‹ÀJŸ4x`#Àƒ— €¼kÚÏgÀöóỞ¶°‘€-î$Ç:‹äC[l ^°®±ú½´.»>ÀÚÿa]¬AZltÓâfuÉ í!`ư±´MX‡ô±nÚ:¬.ù¼ĺà]Ó~>£(€Ư*9Ă+úù,iû@)ÀF^N¶^ Aol {6`à$U¤Ñ»&±̣ÙR5áøÓ˜k—ÁTy!Ôª,´³"°! úßÓºEÇt!ni«_‡u…ö#Ơläxđ²°ƒwMûùŒ¢¶ŸO¶lä5`»çLÇ8»äAl :H›ÄÉÆvÔ†Ơp^[₫)-kc`ưñ¡áơKå4 Ûc+е̣¨q¿Í₫9Z”Ø—+h7p×__$‡ÛbÚÎŒNÓ®ÉvÎ$N‘C~66_#rÔ§[ŸÖÔT‘l¤luÎs“4ÚÆu#a4Ôị̈j]Ó–ÎQ9ÇỘf!–Æ‚F›V·¿ƯŸƯXÇùkcy•?ƒ£ăµú´ß€7m¦c•Ù.«¶¨ÎvmµÈ¯_§¯•ߦ4}›f‹l¤ĂŸ €Í׈ơ)ÀÖ§55U¤)$ Ø4Í™¤=ØdY˜…³ç†“9 ´e´%`̉êÊêFk ™×>«#`}W½6ÆÖ/Ç„Z¤7míèđU†•›]ËH[(m[»¶¶«ÓÎÉ–*J[c6O¿º÷°‘C~66_#rÔ§[ŸÖÔT‘l¤,°P·³H}Ø\Óm \º¦öf­£îa¯€ṭ³°ù‘£>Øú´¦¦`#…`‰aw^9îßl)º#‡lḯ€ṭ³°ù‘£>Øú´¦¦`#…`{ç4Nh 4ÏÔ9­ën×*­+oơ{l¤ĂŸ €Í׈ơ)ÀÖ§55U¤)$Û<zØIΛİ:m€ṭ³ML²ÜœŸ(P‹l-2SI• °‘j°8u:Ô…½aØ@Ól€tȆư¥@ÀªÛ€  4A6̣*°8“Ms&i6‰ `uÚé0 úK(€–œƯúëÂrkØÈ« Àâ(Öé(Rö† `M³6̉a  ô—l]/Z›(0}$!F,ÎdÓœIÚƒMbØ@6Àâ*¡À@*059«CóÎŒlB́G*Àâ(Öé(Rö† `M³¶Î MB`kjP JXœÉ¦9“´›Ä°:m€­̉« ,è/Ø₫º^´Z °8u:Ô…½aØ@Ól€Å!BáU€̃kÏ™÷±,ÎdÓœIÚƒMbØ@6Àö±CÓQ CØäpè…,b"uaoĂfs¯º̃í¹×̃îưø»ÿ‘'Ư°?œ/[™÷11)iNe¥Q Ô [ƒÈTU+Àưà`̉F́´ßlàÆy Zàüf¦ &:Á̉SϽÈ₫¾96 ÀVæY¬›”´¸²̉(jP€­Adª@ª`›ăDơ›ƒN{±l`IX¸è7}Ÿ}Ç€ë{́á6Ø`ƒÑm“V[ÍuÎ@lC €­̀³`+“’‚êR€­KiêA ` À:·ũƀë›ßüf÷½ï}Ïự—¿l¥Ï₫ón„ £y¶̃f[wí óÙƒ,[™SÀV&%Ơ¥[—̉Ô£À̀$“ŸØÎWœ4Ć׮‡v„?~ü(˜nºé¦î /tO?ưôéÁtỵ̈/ÿ2t±e|lïl€­̀U`+“’‚*P`zRǼ¼rØ<…Ø_§³’Ê”ø°D7zƯîz瘣}÷´tñó­ñ¬×ǜ¶’º ŸsÎ9î™gÉM·Ür‹û‡ø‡ÑcÀŒí̃ơjw/°•¹JleRRP ̀HÊÈT €­@i¨L6RJ"°½q˜ tÇúÓ4ÓñŸûÂp]{íµỨÙ³Ư¯~ơ«ÂéÛß₫öăc¿tÚ¼x«ñÅé0äg`ó5"G} °ơiMM)ÀF Àö§ üpƯ°úmàÄ“Nu€É"®“&Mr'œp‚[¼x±{öÙg;J*GåYÙ›m¾¥Ó<\çî_g6̉aÈÏÀækDúˆØ­’ö\Q_›¨ Ú*ÀFÛ}ç±₫¶¯œy¶[{̣:̃r8ÜÑGí|̣I÷ÜsÏU–}ôQwä‘Gºe–Yf´®=÷z§Ó̀ÆØP÷l€ṭ³°ù‘£>¢¶¾æP ä+ÀækÔÊÀvÏ)ÂáD[l ¿m`Î…—8EB-**°<æ˜cœ@óùçŸïZZ¸p¡ÛsÏ=ÇŒ=rfRo2̃¦ØH‡!?›¯9êS€­OkjªH6RH¶zgM±₫¶uƯơÁU,rÈ!î₫ûïï´¦ñܹsƯf›m6fưXucƾªµ/6̉aÈÏÀækDú`ëÓ*R€€­Ö±DOl ¿m@‘N‹¸êï₫ûïïî¾ûn÷ë_ÿºgé”SN3>vĂ6v_z% [ÑDOl¤ĂŸ €Í׈ơ)ÀÖ§55U¤)$ÛßÎ6°ÄơĂªµI“^¤iơƠWw?úÑÜo~ó›F¤ÇÜuÔQcÖ›Ươ-»»Û,d;Y6̉aÈÏÀækDú`ëÓ*R€€­Öù&Đèo0€1c†[c5ܧ?ưéÖ̉8/¼đB#̉OúS÷ö·¿}L”øĂ`|l ÀF: ùÙØ|ÈQŸ½Ø[Æ›¤›IC¡Á7§¾ª>l¤’l;ÛÀ×¨Ö `¿úƠ¯º›o¾Ù}đƒĺœ9sÜoûÛÆ¤+¯¼̉M™2Å›y¢c|l9[`#†üll¾Fä¨Oú6™© ¸:̉đh\óă*´i6RL¶œĂ4 60˜6à́í·ßîæÏŸï®½öZ·ûî»»]vÙÅƯzë­îw¿û]c̉7¿ùM··6­–ûÑ́ÉØg¼}°‘C~¶‰I–ÄăƒP ';Mđú“Wtwqi€5¸u­µZ/*’_ë>ùÉO»ư;»ç-d#º°‘C²%¾átù‡¤¡Ñ`ơ Í, `×M*¬ @Cm¬àæ‘G! °wl»-[áƯZ´(vđr ‹kŒ ÄÛ@;€Ơú¬÷ÜsOk\́ë_ÿzwâ‰'ºßÿ₫÷Ị—öÙgŸ1ăcßÿ¹ûym²lQÏ¡ü LLXà%ñih4øz…Ö°Ó’ +ë6À´°̃ª%`ă[ ­°Á·€ƠDJêJ|đÁ·@ö+®p/¾øbc’fÕf›mÆŒ=₫s_pO=÷" ›²l 硆C47ëÂ÷¿Ÿ̃˜ÜÓX ¹̃s*4-–(p÷€ºK;=¹”øä(À¾Ctq±xˆØE‹¹ûî»Ïi2¥wÜÑí±Ç­ơbÿđ‡?4&{î¹cÆÇNf|l*À°Ít•|€}đÇ?¦7æ÷ÆÔpÑ‘—ÚÔIJͳn"°lXƯø.l½²D6̃±Đ |( °÷ß¿ûÙÏ~æ¾ño¸ơÖ[Ïyä‘îé§Ÿvüă‘~ưë_»ă;ǹøØ­§l뮽aÑØ‘h,ÛL—€í^đ¨›~}™²»°Q† À°¥̃°Q÷W×2°qùg>ÿ·ăN;G§m·WåÍ_ô˜íwØÑm·]|›æW{Êó•ÿ&NtÄ$3€sÜ}Z…N1{̣É'»üà­¬́ƒ>è~øa÷©O}ª²gœq†ûÿøÆ¤Çܽ÷½ï3>vú>û2>6¹ÿØ®¹ À°PäÁ, ÀF̃,MÊÀÆ9Æ“×YÇ}ç;ßi­ “’k•ÏÊ*_Ç9FÎtr­£ÛT4¿ÚSô˜Ù³g· ¿ è Œ8;F§|Ú́E]ä¶Zw]7áU¯jMà”°>hù₫çv[mµ•ûáè₫ô§?5&©m;í´Ó(È.3~| à†y|,Û$¯ä•¶°l– À°lwZÅu°ù­œ~́âÅ‹]́GpYäS4¿Ê.rŒ&œYuƠU£›T4¿ .zŒ €³?À³>̉V“"½wút·ụ̀Ë»ùɽư¾å–k °=ö˜SÄóꫯvS§Nuïz×»ÜC=ÔˆPë…Ü:Éï~G”vH–ƯV;`+v,**€`+2¥¶Å°,[ÇVqlœc Àæ³/gKĂ ưr̃!À~ñsŸs믴’;}©¥ôÖ¨•bö‰'p¿øÅ/ÜÙgŸíÖ_}÷ÙÏ~Öưö·¿u₫óŸ‘﵃ ¶_®QƠí`+s,&&%U6  ÀVf™m `X¶;­â:Ø8è`تfÊ‹»÷êÖ)Ø7¬¹¦»n\Ë́“O>é•ưØÇ>æÖ^{mwÁ¸¿üå/=Mưë_ƯÿưßÿµÖµ`—³*~¼cqë&'½¸ª`تl©]9, ÀÖq§U\çD°lƯ E}q÷fƠ:…ûÍo~ÓMIº¼–‰À `Ÿzê©Ö́Ä÷̃{o«K±ºÿä'?qÿùŸÿYkz饗ÜÿüÏÿ¸ÿ₫ïÿv·Ưv›ÓR;,[‘kÀÂ¥X€Yˆ1œR†SfÊëªaâ%‹`ăœd€­”(/î̃«[§´1°»n½µ»Â‹Â^œLâ´~2¦\đÎB¬g£µ.Ä>À>ó̀3îW¿ú•»ækÜÖI¹₫đ‡[p+°́vúÛß₫æ₫÷ÿש]×{Ưu×°̀B\̉{H= €…CJq‹á”2œª`´L9]Ø™ÉO«ŸØ8'€`ë)ê‹»7«Ö) `¿÷½ï¹ÍV\ѽäÁĂÉÿ;­°‚Û+™Ñ÷–[nq¶ŒN,À>÷ÜsîùçŸw§zªÛpĂ ƯI'ä₫đ‡?8uí­:)Ú*pƠÚ´wÜq‡»é¦›Xoù*ÆÀVæ*°pH)éÀNO,{vuebcјK ASæ§Ün»íæ¾öµ¯•º°eÀ°_éÀÎJ V‰[É̀,[5(Q^o5O÷¬et4 ±Mäô¹W¿Ú”t+Đ~'I&KT}ü#i­[`ó›ß¸Ÿÿüçnæ̀™n“M6q—]v™û¯ÿú¯J’«"¯>úh ^Ơm€k{le® À–âœ.́ŒÄ²s'J€¸jzu²”ˆå«!@j›·Û`yđÁ;¥n×SUùleRs¢X6|Øw/5]§,€UwÛMWYÅ=72 ñ®»́â6Ÿ0Á)ûb’>¹́²n—-·,°/¼đ‚ûƯï~ç-ZäöÚk/·Ç{¸x #ˆƠ8WM̉$@₫éOêîºë.Ö‹ºúvÀ–r̉`ØRüÀÖl8X«sÊÔVyEÊ1.rL/ó°•=8JÀÆ9Ư,Ûtđ¢}q÷rNY+<ú¨£ÜQăÇ.£óưïßmºÆî¼dL¬&wzg̉¥ø̀3ÏŒk]ˆ˜°‚X¥K.¹¤Ơ­ø£ưh @IM¶ \5VkÑjŒ.Û̃6ØRîë1‡ßSÿ‹̉|ë÷¼ç=}dª‹z °[%–œ̀qPÍ'™:{Ú-ÉĂàÖµÖ*Ẹu °ª[†«H́)§œ2Ú₫° ±¾«»±¢¥‚Nߨ©5M‹¦*¯WƯ ÖmYÛÏĐi‘ິ‰­€­æ)[ çô°lø°?î^jºNíööÛowë'QØ—YÆxâ‰î¾ûîs .tû¼å-î³ ¼̃›<÷7}ƯëJ¬Öd Ó¿øE7ỵdwúé§;i^̉8W%Á±&’z衇،¨+ز^CÛă†6öÆ4_ÜçùẠ̊Ù•b}ä²ù´.»@Ë–Qçq½ØJï„~X]t¯Ÿú.à5ƒđ!Sùl|¬ [ûô] FT •O7†₫Zغ4[]utYîÔÀØJoÂ…°qN7 À6¼h_ܽœ§S;€¬vÚi­Ô°pj-Ơµ“îÄê^¼E²W^ye+úÙnâ0›°Ú¦2=ôĐÖøX]U×à0 ZơÑÚ²ÑXǰñö@¶°ëuÀṔå—_>åŸë·¢óߨ-ª;lS§>{·`Đ…Ø.nYëƒ"©28?«·':ÖŒPoTÂȪÿ†….Ä­ßƠY#©²_åA-€srX6|Øw/5]§<€¬n’<“}€ưÙÏ~æ̃¿ï¾îô¤+±–ÛÙ#Yăµ(Àªq»¤ ˜vØa7=™LJ€jÑVƯ™̀êX-ÏÀ·C¶2€ 8ÄzK¯ÎS£ï 6) %ÿƯt‰ ,H•5¬ơƠ±´0ë»x˜ ]v؆¬iëª.´ŒỊ̈ùưéµÍ 3,'4€-̣(`ăœ€m:xѾ¸{9O§€Ơª ,hu!¶u`µ®ëFÉ̀Ä «(́UW]Ơ8W?]qÅ-·ëûùçŸß{̣É'·Æº₫ùÏn›ươ¯ ÀFtN»₫l¯.Äi`æüưÖ32+¸åOëĂ­àƠzr*€¥rÂh® ØĐCåULe)¿₫êØ¬R@f7ó° Ø<`MQ3ôp0¸o|lÔ-Ø(™Æ`ăœ^€ÍöÇƯKM×)`5)’f öVëÀ₫ưzë¹ù‰Óøơ$½÷ƯïÎعsç¶À3L;n±…ûç·¿=uỴ̈̃}÷ƯnƯu×±`ËÛé0äg#pHØ•7 2é»üúp¬jZoKÈ`ZM0éBÜ2ÖIÊ]F'߬ äè÷1°z¢7₫< •á© ̣µ{Ë­%›jXläưÀÆ9=,Ûtđ¢}q÷rŃç?ÿywH2K±Ö‡œDcï¼óN÷‹_üÂ=ùä“­®½O?ư´{æ™gZ‘R9¬’¼›'“4Í™3Ç=ÿüó£iÇÍ6săÿîïÜ7̃8f»åÑX\¬¡`Ë_6̉aÈÏÀkóÖ¤l¸‰Í£#ˆơZqƠ₫0²² À¶…É´Yˆ­p8ËX ÀÚx×°k±ÿfÆ&ỷ`¬₫ú“Eùohºl&qÊ"t3çô°lø°?î^jºN¬¢²’°{đ₫û§¬ vÊë_ßµXiï¤Ë±¬&wÚaÓMỪdûÛ“1¯ú&-é#€ #·Œ-gƒle^llâЧ3„«²l8!e³D`³`Íú¤ÛtÙö7P{›ÎBœ–Ï¢°~¿x?*+˜µ.ö×k«Ú₫öËXX6ê&́Z&6Îá`ئƒí‹»—ótê`~øa÷{́á’>k-ˆ´Ür­®ÆaöƯÓ¦¹‹—^º5^Ö’²“'MrIO´Øw̃yîÙgŸ“4₫V‚-[ÎØÊ\Œ‰II‰éVóI Z÷–ä>PzđÇ?nôr0Yc`å‹û>z‘lÚ2Æ#,Ëâ"°D`Û̃0~ÊH,µ$­<5•Á…ß}#¤ªÛ7k lí—§Ơ©má¦ÚÖ9°ƠüĐ—-€sxX6|Øw/5]§NVÏæW\±¦]vY÷ÙO}j ÀpÜqî£ ˜úđ‚́~I×âÅ#ÑYEf³6ÜÀ–³A¶¬ÑƯăú`å[—_ßذ·¥1‚qDZM°l¶aÛßôÙ‡í¼z9‰“º hÜa%Ÿ~[U7Úa.'`í ₫–ưÈ+³Ç²è‡ăØ8‡€`›^ĂÔ¾9^┺qάç$Ô‡Ơº°“'Nt>úhk ́·“hêîÉwXDb'¼úƠî£I´VùC°}_Ă³“̉‚SK[«¬¿Í₫g¸ßtßvØfz+ư°aoLlHXưø½-íëB¬ư6Ó°•©úưe8ưăưăȽØiw˜¦.·®µV£» 4Ñú­MÀ¼nƠáÏ)) ḉ°l7`‰2ăî¿P§ư8¨5Tf™eÆ»éû́ë¾ræÙîÑÅÉ$H%—Qñ«`™9Ó›Œ…µ(́ç>ưiwûí·»-VYŽèAªàơíIÇzÈÍú̀gZ°«¨­²ÁZûU@)ÍŸ?¿5á£&… [ܦØH‡¡ælư°~ò¬“̣Ï´>Ô†ßÓ&c²ub³z\j¿®~Úµ¯I¼ÀÖ¼ŒN“.~¿¶Åö»ăÆư¿‘— «~b§¤nû¯:6ÎÙ`Ø*àˆ2âî·< `±~Ú~ÇƯ‰'ên[°¨4̀V°‚ƠƠ’nÀXmƯlíµƯfk®ÙÊZ„Ơàơç?ÿù(„êÿYÇïVK¢±~̃c“ïŸJ†¬À VÓ’`÷±Çk±Ö©U·CMütÇw¸Ÿüä'nrZËöºë®sç{yºḈ_¸èwÈaG”Ö?¦ªó°Íô]ú `ûƠoJ»»°SË>4Ϻ‰ÀÏ¥¢åØk’‡úZăÆ%C~ÆU¯y¶Ê~O6Ρ`تfÊ‹»÷̉tÊXf7ØpăH]{Ă¼B0UÀ ÷˜:Ơ]1¬Û%0{^2+±¯{&‘×ÇÜự—¿\"mÿÆ7¶&q²ü¶,Ï=÷ÜÓÊ+UV“C¥¥^¬àU/ô·Ÿ́€m¦[À>Rʯn ”iG—6ʰX¶Ô&€]1yP¯:nܳ#XÍ`GªIƒ¥–Zê7rôät²5Xî5¯q‹/Χ¸‘r¤‹|æWÙEÑ„«®ºjt“æWÁE¹₫úëƯJ+­ŒƯqï¶I«­6&̣FbĂï‚RAoL7ă<€½å–[ÜÁï}o«[̃}÷Ư×p₫́g?s>ø Ó,ÄrÚ°8§Ö-̉]–¼K‚9]ˆÈRÙË›É&qºzܸ/<<4èOM °qÎ6 Àv\wŸÅê”°‚(ÍHüÔs/–~1́Ç;̀m–D@”6&5`ƠÅwó¤Ë¾ßuXăaßöæ7ç« V«¥uưèGSóÀ RÛ¥:&qźÉçƯvS·wŸuRáHzSz₫́÷Ï `¿E°{À½#Ñ0¹U:.§Ơoʸqû9¹o4Oʃ?₫qßù·½ô­û­n€í»Ñ) `Ó¢°¬î˜Àé±GƠZFG>æk¬áÔ]Ø¢¯»%‘×óÎ:«µ̃«­ {z¿ï·_k[Ùd«zóRk‘XÍú£uṢ°•¹J°ZËzdv̉+Ó‚bí˜ ̀#9øàƒ£øC/²Uº° †ÍγîJ»}ÖÙ…XF"ˆyƒ!#1CÓq‚_ß(wÛm·Ö›˧ïaWdƯÚ®r|hÖqÚî—§̣µÍ¯'­{»cơfEƠfk¿ºKûu©]:Nos¶uÆ»°³ƒUâÀVâH°lSœmÚQ¬¦i™µŒÎ[¼±°œIÑTEXL–ÊÙmÊ÷wvç%pjđzTi=₫ădÉÖ…Ơ1Âj¢§¼I˜²ök *ù-<đ@nª`ûÑ>ØÊ\¥Xë‰é÷ÊÔÿEưá²Û€mk»3’½ṣ¬»o6Ƹd°–OƯ•̀¸}c¶.È‚LƒIm3µh¯àQ ( 4øÔ÷pRmK„oåµz¬·_‡A§¶)OĂÚ¯m*˺Lûox́8«í±7OÑ›9̀ÀæƯZƯƯO6Î`Ø~t̀isÜưƯn'u÷½óÎ;Ư·¿ưíѱ°ï[f7!I¦ Xç&ëÂ~rÙeGáơôñăƯÁÿø­ơ^ư4idc“cNf÷Ç~¿é¦›ZÏyÁiL̉ ú»îºËƯqÇN@éøưèGîºë®sç{nËÏPV{`+ó3 `ưȦùèE}ăƈɓåk°C °lí@LÀFiơ@Đ6?’›µ<F•oà˜VW€ơo Exơàña4¬ÇÚï×æÑªrô–¸S(-r<[Ùƒ£TAlœƒ À°ĂêÜÛygE`€oI"­ˆI“8}âŸpïK uĂ$ë/±#˜Ưc›mRáôĂ3f¸M Wܵ“5bŸ±Đêç3€]´h‘‹Ilûßy¶”ûvĐÀ¬È2×zD†=1}?ÚàTÛ́ÿ°Ëo°̣ç}Ÿ^.ùưˆ̣ÇÔÀ¶ëù©ö…½?ư2¬·§~'tNa¬ˆO_6o—ºGE`·J,9ù]¯æSgâ€Íz;nO{âo³lZ×â"¾ £´aYªÏ7r¯›CÇùƯĂpYC,r[Í=S¶€MCSưV­¬cYäSôuƒÜq§‡6ê3l`Ø/çÛ`/ºè¢VÖŸ…øÊ+¯t;o¹¥Û-Y"ç;É3ơï“Û‚Ê´Ùo¼ñF7yd†â£’ˆí§ΛI8«{©.§3&Í₫­`ËzK7đëĂîA¿‡¤|ßü®È¾ïíûñ!K¤}·!~ HYP̀ê³^—i=?ưà™ơ₫TY~ïPcëÉ©ưáÉ"~}™¼½ØÊ¬_Ơ °1¡ûªVUFaÆ£rËt!. °vù̉í34ëB\Æđ:9€­ôÖ)\ À°q6Đ/F;;»íváÂ…­(́j÷wîÄOt÷Ưwßè,Ägœq†[1‰Æ RÛAéÔM6i­«É6Hf2î`ï¹ç›X¶°ƒPü€Ø´^EÖ÷“l[;€3„Aªpè¢ß+3́ù™Ơá6®;qT'>Ö±l‰Yˆm§vol̉¥Pø0z›ơ7#3Ă³7 ~;²ÆÀXëzĐÎèØâ¿Ôƒpḉ̉…8?K6Ζ̀fëôºµ'·Æ7̃Ø}öÙ­%o4V(€½øâ‹[ûC€}đÁs—´Ñ’7'tR+‚«±³ïL¢¶_ưêW£ó—ËÑøUùwß}wt`Ø|–XƯc~̣#Ÿ1Øp̣' ưó{<ÆD`•'¬?N$Óï•XÇbYÔVe¤±F7 µ]™l €µn½2e`—2€ß¯Ư¶ù³ çl¸”ơg·È¬?¦V€«ưá›—°4Ă »§µƠê$[ĂOzƒ«`ăœi€<ăî•~×é+g=:©‘¿z}íµ×¬"»î°C*À bó’í“’H­f1¾7I›®µÖÇüÛÉ'»n¸!³,í“/ (-’˜Ä)Ư†éB\™“2P+è“?µkl6XóÛ­Ü<€•ŸîO´v!ÇÔúœàGWĂ^˜Æ4leö_ob{û¾i AQ0«‡™ö§½igH6™’_†cøù†7H€Ơ9úƯ–­K±ß—Ÿl…ÜGE°qN9 Àö;˜Ñ₫¸{]:Ư¶`‘Ûvêö£ »l2^ơđĂo-}#€7o[°`Á˜.Äyë±úû÷ß{o÷ơ‘ơbwJ¢°sæ̀³«ºï¶í¶™k¼^ươ-€U$€í²{2P›·¾j ¤ A 'VX 6…Ưóg¤ —ôô£¡l…wEc`Ă‹hƒœÓBƯ‚M@ÖåXF®'n³2²ŒIùU‡•vOȪ#loxœö«nAwÚ9ªƯiÇt»c`+¼qJÀÆ9µ, ÆƯ+ƒ¤Óœ /qk¬±æ(Èjb³ÓN;­ơœ×DM66f=V?Ï¥—^:º$f5̃y«­Æ¬ç*€̀V¬I£̉Ê6€U÷æ" €`K¸ E:€ơÇŸZ*œ IÁ/?àå÷¾”Ư`ơ[ăó† {4ß<`­üv3 °EL<'o¯¶Û°Fù,±D[áS¢(6Î)`ØA3Î%î¾—NO=÷¢;₫s_pË%Ư~åˆ*m•ç÷¾÷½Q€Y‹5̀óƤ밺k,¬ÖƯy‹-Z^åÛ.;;Ù®—¤m’ï+&`«mú¾ö„ ­‰ü²¯»îºVVNhÑÀ°eư…ºë%Àâûw×÷ơí%ÀªÛÀ¬ªŒ›.ÄơN/oT¶ª»¦\9lœó À°€^ܽ2,:uÎnå•WÙµ×^Ûưû¿ÿ{kll‘tÎ9ç,²Ÿ_j©¼ j¥ưD5ñËüÁ~ĐXM&U&ƯtÓMNKñ„Ï=÷ÜÑs–k']ˆËùƯ> €è%ÀN«¸ÛÀ4u¸5ÿÑK¸¢îîß<l·íË`ăœr€VçóÎ₫ĐøXÁÏ̉K/= o~ó›[ËîÜ{ï½…̉7¿ùÍ%@Ö¢²›®²»ñÆGËSùØ[n¹¥T`Ç^S¶·~HVíl÷}đ¦pKâ¾₫.́ôäQ‰O,›†¦ê–¨W‹|sóÍ7»wÚÙHq6ˆNÍƠIăc÷xÛ^£ûªdá|à­è¨ÆÑIgŸ}¶{Ưĉ£< bOO"²í³Ïh9×\sM `u•I,ÛÎ Àvh§S“ăÍ+ƒ,đ\ »°yöÊ₫Ø8§˜l>ʰq¶ˆ®Ns¯º̃ṃ†7‚́„düê§>ơ©ÖÚ±E’Mâd<½¤±°É,È7ÜpC«œ«¯¾º°?N&¶)›èBüm¦KÀ°uX& À°uÜi×ÀÆ9Ó, xÆƯ+èô’û̉ig¸•V^ydßđ†7¸9s渻ï¾;*m»ÑF£; b°ÿ´̀2îĐ:₫ª«®j¬ ´“ÄØ—m€­Ø±¨¨8€­È”ÚÀ°lwZÅu°qNù†ḿ¶ÛnªÛy—]¢̉«_ưê¨|ṼRIÁزËó÷¿µ[VkMF¶_ù5®/6¿̣=fË-·royëît!Nh ođ4xtñóîșǸW½ê•ñ±o}ë[Ươ×_Ÿ ±>ÀjyE_úЇÜwÜ1`‘í$]|ñÅNcv“ÇJ+ «°;À°™Û”Á΃Ôº×q{f×ÀÆ9Î =âÔ=06]úưDçU™—^Q,™cÖqI‰6=Fc‡Ơiæ¼ăî½~×é¶‹ÜN»́:f|́‡Ơ2:Z'- `ç$@¹Ụ̂Ë»7ß¼5[°ŸïÊ+¯lE`ĂeÓÁ́ô¢ÍàơøÏ}ahïE¶·~HVí,[‡e%K¶;­â:Øáp¢ûh?vÚï6pñ¥Wºu_¿̃(0&¿½îÔSOMØ·ØÂ½.?û•¯|%u¿¬À¶h={¶›_.€€-æû{ĂMw´ºÍªû¬9‡CmûÈ3[)ܯï!đúăj‚iy|çÓÊ×_µGU†uăƠ¶ạ̈·êSƠ¯ÛoÛüè¦"r&¦Ê—6VTgǨ Ơq₫E—f:…>4«r©( ¬ÓœYZÛ§6«µ%Öù ë ÏSc¶˜­ÅjO¾ÁÔUKÛl±å›FtÅWtÇs̀€UWâï~÷»îƯï~÷˜5]œyŒÓDQØFœm°‘C~¶Jv$˜µ.¬¡dµ–ù&V(GÀn•yE¡bÉŒƯS€Ô€sp̀4€Ơ_?̣ªư‰lúÉÔhÛe–óFhU—Ö"ª:΢ĂV†ZyÂè¯ö‡kåtÇ8Á!ÀZ”Ø?–1°Ål-Fẉ ¾¦gs[Éëüú׿̃Í5«=₫øăÇt̃zʶNCaǺ€ṭ³U°ùU’2ˆXôC&)ÀF^ ¶˜£cQİk°  ч\ûߨúpg]‹8œeVå« Ö~¾ ª5^Uđª6i9 `CX`‹ÙZ› ï`k«ñ±‚¬¥—^z4"ëÿ?aÂD÷¥ÓÎ\K.QÀF: ùÙØ|ÈQŸl}ZSSE °‘B°Å_H«~wa`̀$ErÖå8œè)Fʬ•+ơ!Zí±q¸i‘å¼ö¼ûç6€-fk1º“g¸4]¸è·ÇÛö3>v¿¢»pIpµû€ṭ³°ù‘£>Øú´¦¦`#…`‹9À₫$N6I“uµµnºi3üú aà*hL^EA5f´Ê.Äay₫y´é2¶-„Ó´(.c`‹Ùp^Y6 —^ïÿÀ‡œÆÉb'Û é0äg`ó5"G} °ơiMM)ÀF Às~ÂetÂï6y‘àVP§¿iƯqxà†3ÛøÓ´±ªæ¨–‰ÀZ”ƠÚ¤º­[³MÚ¤r-ù³Ç8È!ÀZ·d§±Íö˜̣ÉS̀NÑ ½°x`#†üll¾Fä¨O¶>­©©"ØH!Øx'G¡º ûë®**@ó£—À¸¦­kå"Ó¢ayiÑδơeư(«₫!XíDªm₫ñiăpâEÆÁÚ:¯~[µMå(éÿ´6ád³?ôB/l z`#†üll¾Fä¨O¶>­©©"ØH!Øê¡³( Æ”Y6¢®á²=Y‘ă²up\ó ƯÑÈ·6̉aÈÏÀækDú`ëÓ*R€€Íwnºá ưHn7êˆ-ÓºöZ·gë-¨µ¨©¢¹Y©ƯxƯØ6¯7vˆîè ¼Ôá9ydÊoàÓ™“Ă“å<ù @#`qhDØHµØúØ&v¥µ.À‚TµºF˱`ë·€ͱzm€tȆư¥@À®ËÛ«₫ºª̃Z6̣°ơ:J8¦è `Ø@³l€tȆư¥@ÀN£Û@]Ơo-yØf9R8¶\lÀêµ6̉a  ô—l]/Z›(0}$!Fl½)zcØ6Đ,`q•P` ˜œƠ¡ygF6O!ö£@`›åHáØr=°l i6 ơ©óÚ¤Éà21]^[Ăưl„5)ÀÖ$4Ơ @• °8ËE=̣c3ØÀđØ€&tK9K¬+Ú€fV×î;`«ô*( úK¶¿®­E–́đ8¢ưâL̉Nlh– (›·\‹S(Đ l¥7t¤Y9'=1Ùÿ"ågª„>ưx×4 Íl³Ew®6P̃-4ĐtµëúÚnÿí ïou™Ơß°Œ´m₫5StŒ•QôzZ}V-i¥rl[V™íÎÉöåé’VvÖ¹øç À6à̃û&ŒOđp¾úœœS üö¡OïïZ€(P‡lyg¹¨cJ~´ÆºkÛMỮ}䈙NTJúßj¿m·<ç_téèOuƒƠ18c´ å¬iœ§_nx=í«_ư<ª[e´P•¯±¤V₫ª}ÖnÛîC¥öûçä×qæYçÙ'¸( ›a~+ÓÚbçMâ:ÚÔ(€(€C®Û]‡`A_l >0p´É„!|ù°ªk#ø̣AS&ÈÓvíü¨ "µÍÊơ'-̉qÊgSg l6`Ü`U·ƯvŒ₫ªL+ׇTw+×ÚÛ>}·óˆµÍPC}7}LCµ€r‡‚ÓG@@:`ës®cẸqM°r6 £iÛ|} (PH¶\dîX€¡[N!åb[uÛ€àÍŸWơ‡Ûo₫xQ}÷#§‚Î0’ªnÆiåú³«.¿lAŸÊñ—»É[FGyƠ¶p‰œ°=ª×oEdĂ:ư1¯Ơ6˲AÍ»Nªß?WµÏŸYßƠP¼r›²€ío¥m<0iÅÜ”–l”l#¤Áe•½7Ơ“!…0…₫jD°2b̉©I’Q)ÉPí#COëú«ătŒ},ÂV†̣„X+W7Œ}ü6¨åñ?Ú¦Kç¶¿¿®­­LÈhI;°El ZÈêj\f"§A¾6le.Å $¿[=-äOûùéÚî3€í¯̉ç`Ưºt~!À Ê`·N’ÆÇÊ€mœ́)°hÛ̀ø <÷i³₫† ́¬ÀTuø€jeĐZ;ǜàØºøđÛ%¹(¶`«uÙÉăܰl ¿l@Ư{å3øƯư.ÆœZd6í¯ äkÀöƒ·̉˜6ÊŸöƒPj˜ñ@´Ê d•=¶¬rC~\Àj›ÿÑw¿{₫÷¿ .}×ÿáÄPaXArVt5Œ¸†m ¡xÈ/%§o °ưå²ɹa‹Ø@ơ6 ˆUw_·ªǹ¶̀`Ö¶§ư »Mêơ`ñ‰ (  Uèû›/¯¿ TÙ'-¯Hâ ,©, bÙqY½&C€ ™CœàĂtØƯY|¡mÖáy¬ư¤@,ÀúaFb­}öæF†¦·£úëÂíÖ5! B-¯Êơ“̣ú†Ë[›~²´Û ÀVï0ª“Çya+Ø60ˆ6ÀÖètôU¡_?mFufaP*ô½­¦ÀVÿ+éÿ|³zMúå™ÏoZÙÆú®Äl¼nüêÿ«Ă¤*P`}ƒ6ă²î»EÖn°ï½•!#Ôÿ~̣ß°uª,é :¤œv `±6Àâ TÀï )`´€‘ßë2ôùU… ù « »%gơ4_>-²ë7´̣}¸Ö6ËĂ0‚¼ß³—X34…îưèlÚYi”Ơ…Xû́MỊ́˜iƯÓn.£‹“ëä‘[Á°A´Ǩ ̣åmÂ&ưoC}ÿ=mük5µjĂíYA'‹̀†[•c]‡Ă™~OÏ4È-xêdïGʬ½ »Hë¯<úX̃´Y}CÇÙªm~ÄUå„ Àö£Ơu¹Í,é :¤œv `±6ÀvÙѼâ ågË··ˆ¦¦ÔR~z8+q+>»Àj{ØÓ¦À-F‘-›c™Ă HÓÖˆ²·&>dúåøoUÂÙÍBƒ“1†ogüáÚ-]ˆ£.ñđe`q̣b<̣a+Ø60ˆ6ÀŸïÓáÛr:aIkƯÓzGZ/ʰúĐGo¤q@V÷d¿.¶Ă Ïáé „“9•Ñ©2ÊÔË1}ª‹C:ˆ)ç„]û60,ËÁÔe÷Zr§®ºê¨€íS¦·Í¶ÀS´2HƠ₫đ3-Ù .½~ *k§´^“>؆KfZÙ₫Ê& ù3°½µjG¨JG¿‘:°³^Ù€–‚é÷å`´ ’ix̣)³Ưù]Ú3ˆT[´¶l¯®iƠơ°UyCUg¸¦@R ™ÖSÙØX`ëöë‹—µ¼aD7,Û¢Á–€*ådQ`€`‹ªAÊædë­¿›{Ơơ£°¥h¬°Im̀k‹­ÑjùôƯÚ¼ăËîÏ̉JkËJײå6í8v€œæº!§ +¬¢Å*—™†«P’2P©Àø &>·pÑ#ăˆ4Í1¢=À6Đ;H-Eû ¾B€­Ë¦Úi¾¨«MƯ¨çâK¯tWYe~#Ÿ̉4 PPP`¬K½êU{ê¹Øß÷ÎÉî†CF™\Olà¥V”̉TªÛ­¾ ¾gÖ VÙ´q²~7Y‹Ú*Ÿ{ßĂ‹—øíô÷û‘ß"×Cåúu„«óđ»ëƠeuûơª,µ]å èÓÚ¡üVŸé¥•î÷®Ùv.×̃0ÏM˜8ñaü@@@>P`¹åVx,°SĹ&/ö̉/6` jípi[̣Ó́ x!è*¿ ÏÔêÿ1³µMÇꯒ±ñU>ËBi×ưWàhuøơèĂïvn~÷bM¶¤²´O€ÉU;¥‡i ü‚Ø,­¬ :ÎoC¿ØDZ;ç\x‰[i¥•nêƒG6MD@@Xyå•ï-%èg‡…¶aØÀàÛ€`,Œ:¦u‹5đôaTpæĂ§AåO¿ĐIư58ÔwÖ§ßVÁ¡Ư( ₫²́/¬× 4`UOø[–em¶h²µÙ¬¶Ú9¶ëBÜ]±³4?ñ¤SƯrË-÷5<@@@>P`ÂÊ+_{Ö9Đ…˜.ÄØ60P6`p.ù’^‚Ḯ|đ £¹‚!®¥A°êóSDg”µ9 Dó6Œ†ú@í·Ç‡Ú0ʶkXö#GÎü[̣¸>®Ù4PPP Q`Æ̃ÓÿñOD£?Å5æ“ >•ŒXFÓÀ- `ư|úßïlƯuơ7vɵ5­Íi³·Z]g+Ëo‡ưoà¼(ê°́Fọb¢ûT<@´S¸ÆS¿ÛÖ^Ă5ŶևêÖ̃ưªÑ0¶{ơå—_á/ĂäØr®€606Û…Xö ¨§iMƒƠ¼l^43Ææ² » Àf•å·€}ÉƯÿÈ“nÙe—ưă0>ü9g@ÁT@k( ä TơfW‹ÛGp®Eù ¹}Q³0Æ8XäÇŸë̀uHƒÎv i,…“3I kº„c` ³fúµă”/mÆcÛ﫵HjXwĐf•^Ó´6«ë±µ¯Vƒ2‰Ó—N;Ă­¸âç¹Àé£ §&çrë"°Ë{çsà Đ)r*e?~üg;ü£/ ‚ĂÊ9^Ø6`6àÏÈë¤^èªË°’?q“ß 8´#›uXeÚŒ¾!èÚ̀½‚;åIƒ¼FÓÆZûüY‹U¹‚i+Ë–ÉQ9~·j[VÈŸ9Ù Ü7M«p‚¨~½ï¶Ưnªº¿­̀³“c«€4 Bñé̉Zoª¦V) è«±ôU ú]róSÔ)z¬•mÇ¥uûơoTåK»qÓ¶é1²¼«7øûÇ/¿ü„ß©+U¿:!´hÁ°Đ²"ˆ“jKËøÇØüÉœü}ÍÜÙLÂiëÀj¿« 1œImÊÖ¡2ü™‚ơ»ï~»mW§Ú•!VYvNa{³´*29USïÍç-p'NüÅà?â‡ê Îô₫r+(ˆåÓlŒh©ú.èSdVIÿëfi÷Ñ…´côWoDơ7€÷Éï—¡2}°Ơ>ƠƠ_«#́œäí ½²Se¯H¢°Ç̀øà!nª£A»€l(jY³úf•c3 §íOë\´=ƒ’¿Nưt“×YïÉ3w«^=w©·+ 0<®:Y-–8HC0‹{Ïó .aÔRÓ‡GƒÆ¬É́"¬O+p†Êë—ouú«¶ ¨-Ỵ̈h›_O¬ˆhYTñ+¯̣Ú§n[°ˆ(,Ë©`ØÀÀØ€u«´.Ç₫xRETcÊô<Öúkäöăùιđ·̉J+Ư4 Ïóa>-zVwơ; r•…ßêZ?¤% ü$¾ÿ±m₫8Ríow³XÄÖ/§ƒP9×Åáw«+¬€Rc.pÚS7ƯlózîEœ4ÀÆÂ¥t²€K€5ÁR»}ưp´9VÏNêèæ±.3ỵº¿Jëx>’µù ¤ùîæ7[¯IùÂ1Ư[5„Đz5ú‹¨ v¬ê÷ƒbê]¶ÉßïÀ,Ÿ•á‹XÚf]©­÷¦ßë3M¬>ưµÿ­Çh¨™_vØ3}Ô†AG¨Èuïi^3\¿Úæ_Lß ³–Ú±ˆ«u3–Ñ¥EvóNVå[´TUFÀ*ŸoØlẾ÷Ú×¾öcûî·ÿ‹Ưt(›® Ø6€ `½°½ Ơ‹ÚäqϺ¯ƒçó¤ùîæ‡[ïI}ưăP 4ó³m(`́Đ?•gđ*¿_uªmJú ;Ă‘œ’ï®üúÙCÈ i ¼Ó¼ă|˜LØ´à˜Á©öYO«SơQi|‘v-ÏâxFi·̀ŰLJƯ¼1³¡2Lßu|,ÀúƯØZ›´êª“ÎưÜçOúÏ^8Ô‰S‹ `Ø6Đ-Đ Z½¨mâ³—6u¬€üô0ê—æ»teU–“ƠÓ±]ƒåsgùûi-ˆơ‡₫YªËÎÅÔ†+¦X¿·¨Î7äµÏÿ¤c7„ś¤­ÚR†™:6 X²›®4±‹+Cˆư¤ƯL±ÇZ¾Đ€̉̃’È0ư(°³¿-Ö‹¶üƒ§Àøbçù±c₫Ô-'‚rqP±lÀê²E^ߺÛÛ~¿úk~yđٜшaS›ưî·Y=CĂ¹fÎlœ¼i₫¸ÚàoO+#«w¨íYàèuL6lÏ$*Ë×̉‚t¾loË´·'vÁ±2ươßDX¿që&`ßư‹®O¥ïá›ÿ´­NƠgữÓ"°fø~7¿œ´FÛ²º?÷Pzªn‚É[êÛqçi¿{tñó3®.g‰zp̀±lh† ,\ôH²<̉†¿]a…j³•6tM´H ïCË?öSVC đ̀woMM+cĐV:‡Z†“̃°]3óü‚eôa˜\GY—^3lƒUí³¾ợ÷ûÛŶ~ñÖ‚¼ơ’d¹¶8°Áv£è ‘Ÿ/4&íóaƠº+°Øs¾- m &́»ÖZ¯ûflÄk†3Æuà:`Ø6oºÎúâÉ[ủ¤g’‡øVCû Oƒ&¿ZDùË:N₫±?₫3¶Œp₫›đ8ñCÈæ“«>}:Àæu!çă±q¹V¿ÚĐIÏM6ÖZº/́BP¦ A°?Ơ7ʪÀ1ïMOV»Ó̃T•9G|ÖƠrm¼É‹á"÷8QùN¡6€ `ơÚÀWÎ<Û­¶Új/Nœ8ñ́ä=qđÓœa¢À´ẹ̀Åж´av₫Ø̉0dĐ+ˆ)ùăY-XƠ®£ÍÂë/oiĐjpgeZy~WàNÖ_ZS ›ÖµÚ‡hÓÍïƯ) ư@‡µ]ÇØG<ă×vf!îñ-© ^”"M²h«ŒÔºË b¦đ­§,À̉}8Vạ™SW^yå{×XcÍ?~äÈ™»q̃¢²,µ‚ `Ø6ĐPO¡ư8è/Ë/¿Â_p½4yp­Ëă{¨°Èg跇˾ÈÿơƒKáP>Ëođj@kÇØđÀvk3 ÛøPù₫~»¬LÛrucö#¢i5µÑ?Ö3\ÂÇ/GF‘¶̀Úâçóóøu„m×q₫ •Ÿ½*ćơÉÚ4Ơ´#\§ê1§v“ØÛ‘˜¶êŒßơ9æ̣ €)°ỊÏq‰ƒđ 9 ›oơ¦wßs¯?śñn‡vù«¾“ĐÀ°l 6`Ï=svÚù₫ :Æ_ö¯ê)”<›M̉ê<®‡V¬áD~rLïÇ´1¯e»ÄªÎv₫y–^¸°yç›·ßtKk—M;7†(vz9P ë ÈQ˜–¤ư“4k$½md›¶“ĐÀ°l JđŸ7ÓG3»₫´£‚~P èŒÁiçQµ.¾ióâ4M“² ]åy0D±J5) PPPPP` ° Oˤ­øaƯ{Ó&]*[v·kÀJÿ°Kq·Ï›̣QPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP†M[”>f};_›qrØô”ó-{Ưåü9@@@@@X>)G€¡Eæư¤ơâ´n_••ï’Ttø2kФ¿E?lÓB:ùh=B›W¯Ö/´5ù́ǘ¸²ºë8+£ƯK[¢®åt~e®{ƯÉ‹(€(€(€(€(0 &YIđQ¨BùêX«KĂÏáÉ¥¬ÖëóơĐ÷˜àƠ?. Ô¥§ẠûkÚñyœÖ;g•‘ṽvŒ_́yÅœ{»<l§ r<          @KXA†₫·4m‚ °1́ôS'Àª½´´vçEt đ‘v₫1çîGR³"‚WƒTo)XđµƒĐ´ö˜¾v|¤°1W“<(€(€(€(€(€SÀذqê^l0TE´®N€m't,Àêœíüôí>‚E©u!NXÁtŒº&1ùÂö˜¾êÜ¼ØÆƯ†4PPPPP Fv«ăÛuÅƠ~Eo‚"¥vƯC€Æ§ê°ăTFÚ'-kÑe+Ï8ûeø€çGcÛéiçfăgÓÖÀ2&²¡imñơµÿÓ^<ĬÎĂ4λ®ÖiîÛ‚E¿óº۵ʻ¦1öL@@@@@V `ĂÉŒ|P ÇÏZwäP6ƒ*A§uÏơƠ₫v]~ƠVœ§ß7¬+ ̉ ¤̉ÆûúàíkQS›ƠZç£2mÜjV¤9¯k¯̉×Ú;k³_¯uUNkwÀ¦]‹èf½ ÇơZ~¿KtÚ˜`Ù•éâ_ḰyđíÉ©¡         ø ´X¿+« ÍÿX÷ZˆÉ´‰Œ̉¢Œ₫MÁÊб>ü¤M^äÊP~g &X #ifÑA‹ÀúFu—¶Ox¬]Z4SÇØ~ƒ»<€M¹4«´óµÏ²à°^û®k^»4͔Ǹ›Îj¯?AUØ}÷_&(¿¶…/ÂóömÅÊ´¶³¡¬sg;          À(ନ`ÂŒ…$Y|à e2đ #h>À†0ăĂrxœ•—Å6öTyüO»(£lÖå ơ£™á1~„Öö¥l»Yí°óÎçđ¸°^]G‹„úficZ¦é¬º ,Ă— điv⃯Í-¬sL³%;@@@@@h)``•Ö­VpQf­Đ¬¤mÏ*Óö‡ÀfÀ™Íz> U °̉)+jơø]¬«Ø,=²L7­^ƒK:³´±ă³º ûĐé·!ë……åI»>6Æ7kƯ4]¹eQPPPP†\?2h]j53èÈŒP6‹̃êoÀ†ÑW+Ë &ŒđåEL­>Ù˜ª6¯m₫øØª¶Ó¬tơg>6"t–6i ^ç0OLd9­\ÓH×Ú́Îÿkà ̣Û–ÓG@@@@áT @;•5đ R$U€a€FqCPÍ[+×À*„–X€ơ#·UlÚdNÖµ8î´óô'eÊøÛq¾-©¾pMà!»=9]@@@@@_‚ ¡]´OĐ¢(€(€(€(€(€}ª€œú¸ëÖéƠ°±mσ̀Øṛ̉å•]G6¯ œ_™ce{U¿10N+W/jô†          @* pM‹8ÊÉ×v%ßá#xú®ưÖ Ụ̀«Û®ÿ±®ÇV¦_nÀj›€.­ ¡̀YP¢c÷ÉFä Ú­µßÎYƯ™­^¬ïaç°LƒC;6ŒjçÁ£¬Æjf•¡ÓÑ9…Úøă—ơ¿¿_åéÓîüBMUF– Ä´!Ï.T¾ÎÑ×Ú·3ß”ÏÎAuÛ>ÿœỊ́ÊmZ:Ôï(€(€(€(€(€mHƒ*ṣmR%¿Ëe˜ß¾ ˜¦ÀU½‚ í·̣*₫¤Q!ÀÚ˜Uƒ}×ñY‘3Ăq½a¤ÏQíW»>Jj“¬YëGùtvŒỀܬˡsĐY9ºúîw±¼úÛ Vư±³~—pibßîüÂ6L›.₫¹Å´!Æ.¤•Á©₫·ë§̣ư—¦¥¯µo¶ß€6«\£ÙZ¯&,˺ölG@@@@ˆP@PNdÀ™vxÀú3‡yT¾á₫`Ó Ú %ë”BX Çơ¦lڸ߬(i À¦A Ư±X¿œÜÓ@^0&¨•Fú„K¿¼¼6(¯iFÑ­œ˜6X=í́ÂÚêÛ†¶©üđÚèÅ‚o§i܇ö•U®¶§Eû#n²          4A‹´ùm18Đ¾p‚,€mI!L†€B…uµ¶Ùßv3‡e âböIØœ”·S€UäWeøHkC<¦]‹p[xiçgÑgëÚƯîÚ¤Ù`^;cÚVFÚ¶´²´MÉ¿₫¶Ío¯ßƠ:<¬6°MøƠ¡ (€(€(€(€(PR0²•;‚‹Æ•Xæ Nưî¹i«|Ú¦¬Óœ–́à ¾Ó–ª`U‡ ±×+t½lܱ¹̀ƒS›—§€•]†×>́ö À–¼é9 PPPPúU!ÀœøÀèOF”%›‘ %`MµÉjp)pµI¥ü2 ` " ¬D?cÖô·ëam ë1¬]v.YçjBª´ _bäµ!Í®Âm>¬†Q~ßFt=ưï₫qj‡?Xç’V®¶3 qÖƯĂv@@@@èlÆ_|´¨¦J€µñ©¯únÑ3•ḱG- ¨ú-…Q¶P^́nY´Tû²"t?Vg8³­mWû¬»°Ơ.;£ó,2‰“ÍÎ́·=m[x}ÂÙ™ưvø/¬\{¡ }Y‘Hp;_•é}^b#°₫uöÏ#,_í°Ù”­l‚(ëC|V¹í&(ëƒÛ•&¢         duÙLë’ZT-ƒÊpF[Ơ™µ,_‡ëEwϬxóÚ¢ă²-ª]^₫¼ëÓ®­±m̀;ß¼6äƒío§wl[Óê ‡“Ŷ‘|(€(€(€(€(€ P m̉£ªeă3}h˜–¬ªNÊA4̀îPPPPPP ÏP4T~7>ÖåÓḯwçíF”‰¡ê–œ× ƠPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP KÿäE­mẈƒIEND®B`‚nova-2014.1/doc/source/images/rpc/flow1.png0000664000175400017540000012002612323721476021546 0ustar jenkinsjenkins00000000000000‰PNG  IHDR°Y¡iĂ¡sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYsÊ&ó?ŸIDATx^í ¸ÅƠ₫ï?ÆpE«PĂÅWŒJHb"nñªqGçDT¢âB *"Ê§Ä¨Ä „ˆQEÑDÀ%¸cÔHLŒ&1Iưëmïë=ÓƠ3Ư=½¼ó<ờ½ÓƠƠƠoWw_ŸSU üP*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T  ổg}®N£Û·oëFm´3Q¶¶¶̀¶ñx–¯»n›+[®á)ú»G!{84 T€ P* ú¶mÛöú¶mÛ}°é¦›}|ÚĂ?1r”;îZ5eê …¿™¨ÛÛÛ@vÛÀ„‰7ªQ^ê=ˇỳß7Üh£¿555ưQCíe„Ù\ôă< *@¨ …P Ç†nøD·î›ÿå’1WªÅKW¨÷>úŒ‰° ° °   <6o‘~öÈÏ;wî¼fĂ 7¾V÷zM…èùx’T€ P*@¨@ö€±£ẹí÷̉P-€¡Ê|1Ă6À6P® ¼±zúÙ¹|ÖÔ´ávíÚ“½5¦T€ P*@̣¬@Ó×;v\cF Zµllllh+W½§öÛĐG;vº9Ï Ï P*@¨È=6ÙdÓ?̃~÷ổ`¥ÁÊ6À6À6À6à×.¼h̀§bçé®­1;ƯkJ¨ T€ äMM¾Ñ¥Ëó-¥×•!ĂllllÛÀÍ·Mù—î4bóf đ|¨ T€ dCF6üâ¬GçÑh¥ÑÊ6À6À6À6àÔ.ưÅƠÚ»É]ÙèæRUË&]›Ñ̉€ÚÂóí-gWebùùÓ¿oªZ8+C¨ˆ[„‚ám:Ă.È6À6À6À6¦ ü¸ù„ơr;çÅƯOå¬üú|VU€Olú ¯^½,¿2ÀfMŸéúNj0ÜN¨È“Cöđí¿„1X˜—.ÛÛÛÛÚ&ûëĐÔô±î7ÉSÇó¹æÄ| _ °Å¹Øeÿê¤ÖI&f¢T€ P*ĐZáÍ'œü4<ÙØØØ¢h}úî°Fw3€3~*+@€e ¡T€ P*V¦7^8eê ÑÄơÙØØØ"i—Œ¹RµmÛöú°ưQó`.àyó”© T€ T¯@Û¶í>X¼tE$FKoîY=@lllÙn“nºMuØh£YƠ÷L…Ú“Ëêród© T fÖùêW?Çú}4³m0̣úñú± ° ¤¥ L›9[m´ÑFKjî X T€ P*@,×ăøW† ̣ÛÛÛ@dmQ=ˆîaK¨ T€ P¨ À̉h̀hM‹÷‡ơ '’m ¾mQ=]»uÿ³î°°.%?T€ $£@£> C̉“ÑG¡T Î `±llll‘¶ÎDœlÏ®×̃=OQ1eOƒơ×ßà•ˆZK³.grDe±*@¨@ªˆÔh¡ç£¾êOưÙØ̉аÉöû`§N˜x#ûó ¾ˆjyéEƒ!ÀF¡"Ë T  °ĂË`‡—•u (± ° ”kØdûlvïEl²÷ F¨@> À`ÙØØØ"mØd ,V·8z`“½íx4*@ê¨@¤F =2ÙíDyíxíØØ¢jX§^î uʉ›Ư{—Ø(î–A¨@Ñ À̉óÂ6À6À6À6i À:™u®9N9 °‘¶Ï¨^ÔDQ6;€eP*P4rÛ)Dѱ°Œ́¾ƠæµKßµ[¹ê=Ơ¡C“óL©ë®»®s̃#Đ)‡œ̣¡̀ơ×_ß9/̣ÇQçÆÆF5Ñ̉L=« °N¦–/äùâÔ`25ë휅8 %Y ©W SF¡$}PÂkÂkâÚ/]¡ºwï¡\>ăÇWưúơsÉêåÙ{ï½ƠE]䔿K—.jΜ9Ny¥®Ÿ0uSßúܦ͜©g5Ö©ï'À` °N· 3Q*@Z+)£ÈƠPf>BÛ@úÚöK&À²+Ö ` °X> ¨ U(@€eÊ6À6H À`«è£̣¼ –Ï^lïp ±)ˆáJoXú¼a¼&¼&I·,6¶,›` °Øl̃»¬5 uV€Ë”m€m ‘6@€%ÀÖ¹¿KÛá °|ö`ÓvW²>T€ dBD פ==<½‹lékXl&zÅä*I€%À`“»ßx$*@r¤–(ÛÛ@"m€K€ÍQßÅ©`ÏûùŪ\zí­j~ö<½x™Úµÿî ßY|q© 6O³.„ËèD¡$Ë T ơ ḍŸÅNuNŸG×$ÙkB€%À¦¾GL¶‚…ØÍ·ØR6lx h£X”ñC«–¯Ê¤=C€Mö¦ăѨȇ™|à<’êM½£hXl>ºÍÈ΢k>;°>±€v‡ơ!ÀöĐeơ¬u² hÔ%à&G úlbä•}Â|³ü/µöÓ-ïú_·³#aø(ÛÛ@"m€K€Íc'ZĂ9`[½đÊn%!äXÀÀ ëÄI·”¶ăŒÍb́/e¥=¼8B€­¡)r×8hÖ…®Öéa¨•>CơÆ9U&–_Y»"èGûM{™‰®QxoX½€lÙnXlÚ;Ä„ëG€Ơ+°)Ùi3g{đ `Å3¿̣¢FÂßGƯ\²_LÏî­wNơöG9ØÿKYíC° ßu ËAÉ ÎCJ,½oll‰´,¶P½kđÉ`ơ³°yùă[=ƒàa/+ỳñ²½¤&Àb?nÓ­f°Á7JVs`³zåXï,(ˆáö„ơ˶g×/×K€ÍB§˜`ûëc!º­æOSSÓÔ oL}î7Öï7*¼¬âEó9/Pë°ØÏ AN{ÿ@€­¹ù§¶lj/ +–Rß᥽óaư²O¼Nơ¿NXlú̀¨O¡)‹°2–Eëaq)@€KY–Kô¸öơ7́y x аXvºñ(e€µÇ³âYhzQÅÛjÎ^Œas"'Ó‹‹m⽕çjËơÄơŒ¦6{" ¥`ÓpX‡¼*@€åøG¶¶DÚ–›×´̃ç•e€Å$K€8€'B¦&€Ê$N²†,̣!¿L̉°4“<á”#å¥9¤˜ưƯ³iôEVU"¶*Ù¸Szèß# Ùɉ‰®q½¹d¹ô\² d§ ` °9é7Óp­l™¬,@̉Ï ÅR:€N{B'ñÀb™À+’ ¯è́r±åÊK[Ÿ!À¶E»(Üç|}ÆÓŒ³~Yÿ½S T À¦à"ä¨ ˜ÑmŸ/ À̉ûÆ6À6H À`ÙñF¦&€Â²‘(1+[ <Ú6USF÷‰` ËKا°‘=\XP: À¶¾.‰®iîx^î̃,¶>›»TV!Ä·mÛvnÖåóríçe–cK‘®Ô Đˆ¾ñ€ ÿ1Ë₫Æ ‰íøđkîk7mÀ­”#À*eZQ&Ê|²?ÖV’ÿçQlë«J˜#̀± $Ü0Ɉ‘£ —NWư¿ÿ÷ÿ>y₫…|–'ü,È[x/ {»Y7¶€¨yXó7ÓÓ Ø4'X*W9̀Œ̣©A@,̣ʇ¤·çAlë«È/ƒ^&Ëp÷F­Ơî{P‡yL¦€$ àÀv́ØÉ‰ĂÀ`̃vÇv"Àæ„£»ăÚ_ùÊW>₫å•×°?Ï`5€µg÷µá&&¼¬2©¾Å[[ "l(µópªŒ²P~0><äÄsH…X,;ù ṿQCd=ËÀÚË@Ô³>I›!Ä !N…JÀ¾ÅLµ|é§ë1°ÓB\¿—’µh¨Ø.“8á[Bm¸Åÿ2‰ö“0d„ËøX.~/ŒVCë&sµ†LÙƠ@_Ă^ô?ØÖ"²ó©±ó)O“nºMuêܹ­ÇsŒzî¹çÔi§VÚÔ%c®ä5ˆé¤l °Xl½yö‹¨`›^“X+¢}b¯ø?­ÏÙ¬Ô+Kk/_ƒ¶'̃Qs6b{YbЉ2n½ö²:ø_f5¸ÊGƽ^BlN …|f9~ờ́ă^WÀë“_ÿºZ°Ë.L̉× ××0‚H€%ÀÆÚáÎztê·ó.%pƯ}÷ƯƠĂ?¬̃|óÍRZ°`4hP)OÏ­¶VS¦Îˆµ^Yé̀‹PO,–Aoư"jØVg·ö¼Ÿ_́y]_{ëƒưÔ ËWyp‹d?ËŸ^¼¬ô¶›ÿK^üfoC™HfyvùR–́/y¥>ö₫²½\]¥|”çWÏ(û©,¬ß-ç7‰SöoÍ́¢ï}O­X±‚)Cà`c»™Myÿ–­x] ù₫JPÚµkWuÓM7©·̃z«lº÷̃{Uï̃½Kû́³ß ăe£́YV´ăW£Đ“K€%ÀÆÖ§e©à̀,<­®ôüƒGVB‹‘›!ÆøM@Üđ¿”yÚ°á¥ưÍ}ÅókÛ2ñ-ơ“ăâụ̂+Æ·*ïÖ;§¶h»®&c›.Ås¿\Ø,Ư²u¨+6»ĐN€ơ†!,Ơ°ç:êÂK°àê¼óÎS¯½özûí·̉å—_®:tèàuè/{¦7Ëñ±éϨŒ,–k¿–•Â3°:6íg!<œ6° ¬J^Qñ† `Êv́oB¦½_%€E߉̣Gê‚ăɱ£f¸³®”‰ºÛnƒ<ÎQô YX4b3Ô7+7_fêI€%À¶4V†3„82hŸ|û½ª[·î%ê!CÔ’%KÔ;ï¼:-_¾\x≥²:ũDwmdu¢£eÑ@5–K€ÍŒùgEs°6¬ )MñÀá»ETv¸¯‹Ö,åÙÀmÖ!ÁØ.cye<¯Y†lO¢ÏË:ÀÆyƒ°l­–K€ơ}ªđÀb,‡Ó̉ñ¨vÚIưö·¿Uï¾ûnÍéÉ'ŸTû́³O©́̃}¶WW›DGÊcD¨A:` °X¦Z\¬ß„Nf¨oÀ,¿sÈ`.ÍpåjÖ>– °VôƯR®|ăØ¦7ØooĐ³½íØü> †èS]ëé` °-m¨¯₫nªµ=åh‚Q€Å8W,#àÚ©S'uĂ 7¨Ơ«WG¦L™¢½»Ư¾ôîêñµ8~5$÷IL]u&À` °9êE«?•̀,à®̉ŒĂv®¬́¬9æccícÛc`mlÀÚùíg·Y¾ës½Ú|,l[ظü¤Df]„}Öô!À`kj@ùƯ™@ä°XîË̃ ³Á8Ơ#F¨7̃xC½÷^Ë5¦„̣GƠj|́ˆ‘£ÆƯVÛYr¿úĂ,–K€Ío§ầ2°·Eߘ4û€+<§²ß寕¬:ŒăˆGÔOÆÄP¨‹9‰S€•c3k‚sÆ=°!̃ËߨKØ„*À!ó:Ö† û‘µ^ĂîWm~{Yj˱÷#ÀfhÆà8fxx§¨Úe^Ê!,:d,sƒé;ßù·ëŸ₫ô§Ä̉‹/¾¨=öXc|lg…uf £ơ‡Ñj®–K€ÍKZÓyd`ñœ“Y†e‚#|›a·2k¯„äÚ^̀ €µg– dR&Ù.̃àZÖ1uËAq¨ÆˆµVÑåhpFù‘µaĂ– èEưâúøA5 ¢ü` °Q.£eÛ̀CY„ €ưêW¿êă6Ûl£¦OŸ®̃ÿưº¥'xBơëׯ²‡‹ñ¸Ơ@÷©ü` °Øø ®éÆoT;w.,Æår|lư€4́Ë,–_§–¡’ûëºN¢¾MMMS'L¼‘ư¹ă °Ḯ8ó×`j6ùˆ§¿áo®|đ7~CB¨­ùÁ6¤M<ø[>đèÚḰ˜å™yÍr2e»N’ơ‘º™uÆv́k×ypî€wÙ&e¡€ø(?ͺ0-0Ä2„8ÊÛi­²Øá9,Öh}ä‘GÔ1Ç£zơê¥î¿ÿ~ơá‡Ö5¤Ï9çcưÙ&o=Ú8;Z– $` °ØXûµ,̃Ee °Ñ<›ëÑÇé럸Öö¶\uHØ6¸¥QQ9@€ÛLÈĂo²¯@1Ê0µ½ÊÈ‹ñ·å€QöĂväC2ËEơä7”)PjzP‘y¤¨Î eâœđmB|^ßf} ,Va"®(ô,£•G€?¾zúé§Ơ´iÓÔn»í¦<đ@ớ³Ïª?ÿùÏuMX?öûßÿ~É‹ñºS¦ÎàuMñ›x,–Ë8J°Ø0í pg{FưBˆí|€@ś¬©9¦Û$m(Ä6Ó‹[É £Æ4úÍúáw”eåJXt%-· ¡Î8f5!Ïå´Ï=À>ơÔSGÇ/ÁëÅÄH\pB¢¬¤Ë 6̀c)t^‚NH€]¸p¡Z´h‘0a‚êÑ£‡6l˜ZµjU]!=sæLƠ§OŸÈî³ßj₫¢¥¼¾)Y,–º¯â À`ĂÜ 6üa_`Ë™O¼²æ±MϪYF§_̃ ă¢æyáoxXMFJơđÓ%Œ®ṽǗñǯvÚi'/aœ’üØa‡E(gÿư÷¤¬Œl_ƯÀji9Û—€S%ÀÂûÙˆ±œÎf›m¦Æ«>ú裺§qăÆµ{̉©ĂÔÊUz©Ÿ‚\QëD€%À`sÖ“Öùt°ØÛ6nàÇô¢Jæ¨Ö„Úz,¼»f́*L€­!Ü÷₫ç)k›om«¶Ó çRöºÜ]vƯÍ)o7=¤Ç¥Lä Sç0ơÅzÏY»_ °±öÛkN€%À†X?Ï)àđi{+̣;₫6'N’r̀YŒM(µAÿ›å:åcz…ưV–ø‘ü2i“ÔÍ †V~—±°æMcÖA~G½ñ{”ŸÂ,pPEñ<ñ&€@Åÿ¦÷+chM€Å>È+p›6«]l”·6¬×M+¦°Œ̀B,“8Á»ù‹_üBulß^Ư}÷ƯVöøƒZºt©:û́³=½öÚkƠ_ÿú׺§_₫̣—̃¹àœƠˆ‘£Ô«×dÙ¢lØ{ù³k”`cí· ° ?³ă|¡?¨µ8ó’ßqưBhñ›ßï&‡™½7L̃ m*•Ui›}>€W{fæ cmw¾ • Êrq¹°b@(<+~Vü&“CÙÛ± »i†XlĐ-RÓvÂKØ{î¹Gí¢=?\}µ]Û¶ê׿₫ơZ‹åmV®\©,X <̣Hµë®»ª¹s窿ưíouM¯¾úª:á„J̃ØN;«YÎc;HĐ "Àf̀â4dóT6Ö©_î¡svʉǾ>Sê°hNđXÖ l~Ü(Ús̉eHHrÔÇ%À–™Ø‰[USă$N­e#¸„ØÙ³g«æ₫PơÔàª_)Mj¯ví*́+¯¼¢xq´Ă;¨Ă?\ưñTŸ|̣I]ÀÉ óDXgŒç´Ÿ 6»ÆfÚÛVZêG€u²Oê\º+©ưC€Íî3¥^‹a3„·V®µŒjơ>G¶ÇGqŒ₫ºSj-(ËXLÀd{LưBˆíÙ‹ñ¿LÜdzq±¶,n˜¨Ö˜Û{Kl­­¿â₫—{ê‰'ªÚ´ñÀU’+ÀZ1;0ÆÇvé̉Å[—ë·₫ưïO<ưăÿPÿùϼI§đ,Àø½´¾E¨6»ÆfÚgçH€uê· ° F¾DÑ®ă(£^ëÔBÓœI[/›ü§¡a¼₫î•æzÖZ·,,‹ñ¬æ$Næ¬Â2i“ä‘Ì1²&àb(ü–I¡âÑjË'ÀÖÚú“ØO†PÍœ;Bç"c`1Óh=æuu ûÆoxÙ³Î:KơèÑCM:U}ú駉¤Ï>ûLưûßÿVÿüç?ƠÓO?­.½ôRl (le€=̣èfơÚ[äîY‡ñ›Ö2 °Nưv¤{†îƒ§é>˜)[`3i륇x4È.ù¯övj«,.µ»e`á•‘‰—Làƒ·Đ)3 ÛË與ƠœØ^FÇ.ÿKy8nµ€÷~ØXo«ÈŒÄwëîy%ñư‰胔Ír‹P«1öL€ôÔày¢÷*ÏÍqÚ#Û¥©I]rÉ%­&q’1°B,X,f&~ûí·½‰ ä…̣bR(f ×Ï?ÿÜóº¾öÚk^ôŃ>H€­¼¢ `+́æ[l©}bAU÷k5÷xœû|çÁ )Îc¤±l¬S¿À¶k×î˜6Úh Sö4@ø·Sk ÎÔ¬³Ô¼́hđaR’ĂX3,NẮt ³CSRÍ«‘€­+­[m™iÙ[só¯T@d†•¬ùùW¿]ÔÇoTª£2̀¯½ûl§ªX`1 ñ6›m¦–´xaá]¥Ó5ÔvƯpCuÙe—)̀B́°ï¾û®Z½zµ>}ºêƯ»·:ùä“Ơ›o¾©œQ%€ëÿû_ơᇪyóæ©Çœ['p•öL€M'ÀÆÎđ†ƯzçÔȳQ=ă.‡ëÔoG°NGc¦¼+@€µ@v†Ù4̀b,jf?Ø©ơ°26ÖÛ.2ĂÊ`åỴß6ê³ïÿP­¹ữÈÖƒ! p»ŸÀ^sÍ5jÿ 6đ¼°ûë vÖ9Ù ;nÜ8oâJXØ?ưéOêƒ>PW]u•êÙ³§3fŒ·n,B}«Mâq…G^x °é{I€ °¶7ö…å«<­ư»Ÿ×ÖƠ“‹|؉“nY«ÜrÇĂ³äéÅËJÏ”a₫í…Æ₫æsGʳó†}6¥9?Ö©ß&À:ÉÄL `M€µ`v¹₫ÿ\xmÅLM¶¼,Ʊ¦9 8R+m'ÀÆz…ºrFS%€mơéÔYưưÔaêĂEK#;¶«!wɘ+ƠIúØ®ù‘Ï`-Z¤öƠcȧ·̀B|æ™gª-µ÷ơá¯,<²»h́ÿ₫ïÿ†XxIW­Z¥†®úöíë…ù₫ë_ÿ •\1ÖáÊX?áÉØtÀ+Cˆƒ¯ƒé ÅxXü/÷,ÿïÚ÷RÂ6@!~Ç‹*É+¿ (– çÅv́‹{ßH²}<\9êqùăKuÂvÔY¶Ÿ÷ó‹½zÊÿ§ ̃*/₫ó<ÊJ^¬S¿M€u’‰™°˜üH§ÑYMÚ»zM9`­ô»̃õ̃¬S££°uÍ–w€­Ó¾o¶%”/‡}–ŒÖÆ«F‘₫Û¡C«Ùy]+Ÿ÷ÜZ}<îZơ₫×3â?̣5A‡5»‚åö;îPưô9ï¬=°Xv₫üùjÀöÛ«1úœ;àö½ök,3#=ó̀3jß}÷ơÆÈ¾ổK̃Ö „1®₫裼0æeË–`ë.́×ÎèuóÀ₫L˜ 5½ª€R@ümÂ#À̉„Gl3·Ûׯ!–ăbM 5å›û ñ̀6¿a› Ùy /&À:™¼X'™˜ÉQw€ƠO¢.FZóhưL§É:Äx£ÀuÉF€Ívñ¹ºÓߪ¡á7ºñhæª)-Ñû?PcµÖ¡Ơ₫Û64\ơφ†Ïóüœp9·5̀̃1ø{êܳGªªăJĂuù]ơDS·ÜvÄ–Xx5₫̃÷<ƒû /x“8 Đk½^?Ó©›3Æz«˜uØo';„k§{î¹Ç +†WÛàYµÀŒ›…×Đœv€…— Ë|yáú̉"î|Ø`€O¥ «¤>ŒoäHo©íu½6À @Ûá¿f>ù̀<Ø.¿™k{c]ë•Å|X'S—ë$39* `‡¸fyÏ£v¡Øáđ"9œx6lvö©ÁƒƠI9Ø! “̣₫Œp9¿?m¼±zBƒW÷“ØàP €ƯRẶ£ÇÔ °³gÏVơ²:&À̃wß}j;=&猿M¯ª„‹÷ÔZéºù¬éÁ•}ƒÖ„Zlâæ^–H€Í̉ƠJ]ClcKm¢aQ†ÖB<½åÜă^rGÛ÷ ăkm7ǾlÄ!ÄxÉ̉Tk{zD0Dy_»–¥]Á‘„#¹b̀RüW=.5©%w̃X½Ftđ¡jÊÔÎĐTÉûÜsÏ©o¼Q=ùä“%,Â}: /́r¶́ÔÉ `ßÿ}% ³7®»®:l₫0ÅLÅ»dÉ/\ø“O>ñàơ½÷̃K%ÀBóI7Ư¦öÙ÷€´ ¼`ƒÇƒÖÊYƯW h.AăâÁ̀b;|ØE‹¨åàø8&6ễ2Wå`su9ë~2°mSëHŒ\xM]¼#t11B…‡êüI{u£PA¬,Öp}ê©§ÊÎŒu1qSØñ«W\qEè}Â#êülä÷PÆ t¹ Đu§h€Ä̉:I{EƯ«×J“8!„‹I’“B èüÍo~£ö̉Y<[wÑßđÊ– !~ươ×Ơ]wƯ¥0±$,àîäciơ»l¿ổKƠüăVÚ´́|=IױǨ:èqÂ&°ÚÓKˆ-7U¼¨+“-Ù3 ›^Z„¦Ë$OæØUăM+9Å~ævÏjYµ!Z¼ÁR9¾x~Íü²Í¬?ÇÀf¼­­úØÚôẵEV Àj`]Ơ²„N=Ç·f`1#0Öf•6w̉3œbßr0h®û ˜E~|W‚Çûï¿_uï̃[ä~ís`á™ưTuü‹öÂưI{ă‚@8íƠÂkµ‹ñ§Ûvéâ­;Y§ĂôDLåö{ß₫¶:PCnŸnƯÔ¬Y³2–´¨§q€ơ輪Î÷.¼ˆ˜eKÑ,\¸PaJX́ĉƠ`  ˜̀©ƒ »|ùro+&YÂXƠ·ß~[]r̃yê§-ăe»đÖ=è uĂ 7¨ú˜Wơ«ê¤£V«W¯n•°-ÖÛzÀ"\xˆ^ó7Èó*[D€Å8`´Éz̃i>¶ía…çƠô²â„èÂĂê·–j¥år‚Ö^(Û/äx~/d¼+<®€U¿u`íßđ?̣º®Q›ækU®nX§ë$3Q2›̣I˜2 °¦Ù0̃Ï0ë²K€å#Àï•qôO=Æca?œ·(W†yµ `/́ở:ß7vêÔ©¤ÚC8nÑĐÚY¯!»·̃đ /́̉¥Kf,–4~üx`m°­7ÀÚm cFlNÚd{f‹BƠ=ÇrüĂ¯íµZăÔÉoâ8—•² °NöE:H‡*@̣¨@.đĂ a¾H€Y3ä° /ªÀ([ü†¼HæøU3„û˜åIH±́' -+0-^b€‘Ç–}M¯1¶¡>øÍo_W›c`c½­s›qwµ́ù眣~º̃zj¡¾÷wÚb‹À‹»uy₫]¡Æ̣?¾á‘Å6xaO<ê(ơÎ;ï”öhí™5ĂßiXóz<¦_l ́Ö/&Àr l”÷­½”N”eû•o¯½ŒNÜÇ̀BùØXûmN¨@ÈÀ"Å+0‹o9H"›È#Đ)aÂ~+å!dIÊ–ñ·r\lC9´&› ŒĐdÔCê ùñ₫sTËå'ÀÆz—`ơä.• ÂZăW»j/ëj,¥×„}üñÇƠË/¿¬ú}ó›%@¤₫¸©I~đÁª›!¾P‡›`ë­'«½°˜( aÇHXJ `µS—Ñ­—èÙ§±œ –› cõSl¬ư6 §T  d`í1°®k™5á²Àâ¸&À ú…›¡Ê¨ŸæŒ: 9†6h¬mTà*å`c½K °1́Ê•+Ơ¨‘#=/́/´'ơ´NPCö̃[MÑKäˆçđ:~̀Dÿûß«³N;ÍÙ[ô>’ÇóÂyd V`ß|óMe§,,a  P/ꕵ6@€µßfáT€ d@̀,`PBÍYˆ]Ö…Ø„ÍJk†›e,̣ÂÛ$áẶ-¡ÍơC1ÀÔçØ#í>©*`cØçŸ^ủcZWé{«Ñ3µ'ք׫/»l-½ç{Ô€–ex×óÂêưP€uܸqê(VŒ1µv"Àv²;¬o₫Ú,6©.œÇ¡%`ÛÂÆå'% d`Ë-ƒ&à0(„Ø̃ûÈo•Ö ôVĐJPl{Rs°˜0mŸ/ Àְ矾ẓÉ'[­‹Yˆ1‰<°¯¼̣:₫đĂ½±¬z=êµà³ÛÉX@́¹ë¬£~¢½°È{ƠUWy XơK8&ê€f ÀŒÉ˜Aỹ¼y^3^r=øàƒ ëÉ¢ ́¹×¶ƒ€v@ÈÊdñÆwM °41¨@â DÂK‰×:ÇŒä‚hĂqà\m¨Á›uˆ«_y&l–Ûnzẹ+¡ºÈ¿Í0`^wê°ö̉9AXÔơ†ÁëWgl.ï2‚K•‹µX·èØQuĐ`úë_ÿº"Àb̉¦ÎFH0†Çixôó â·»ï¾»äÅøÙ“ôŒÄ½»vU=ô·́k¯½¦üRËÇ`©ĂơÚÀXj‡c`ăƒµ­W Àæ̉^àI¥[Hx)Ư§˜­ÚErẢ°2»°̀> `µV¼§«æ,ÅAc`1vỠ/`œÅ++kØÚ³'ñÀBmÙsë’g–K‹œXV:ÚÖÉD&À:ÉÄL `…ÊT6,–K€­Æ¸Ơªµ !À̃~ûí%/́:„¸“˜éú–u^áa}hƯu¿\ïUƒêØË.S/¿ü²—f̀˜áÁ+ 0+¿‡ù₫å/éy`¨A)­ëÀ\/s¥Z¹ê½Â½D¡6UÍó€û¸];¬“‰L€u’‰™ À: •©lX,–[ñé°‹-Rû¶Œ…Eø0€rèÁ«ơß–‡§h=tÏ=×>°o_o&cdơXÙ°cÇ1̣GáÍP”̉ °Ơ\‹¼́C€uƒ ¼\ï"ÖÉD&À:ÉÄL `…ÊT6,–K€­Æ,°wÜq‡ç…5g!¾óÎ;Ơßü¦ú‘₫Ư›m¸sgớ³Ï®¨'Nô&r̉²Ơ<°j€œº$ÔăwçÍ›§üqo‰¯|Đ[Îç·ç^ ç­¦-Dµ–U[Jk9X'™ë$39*@€u*SÙ°X,¶c¯À ÷í×O5~å+ê׿₫u«Yˆ¯ºê*ƠuĂ Ơ­·̃ª–/_î›0‰ ·›†Ư§zªl>¿ưñ‹_xØçŸ̃)`ÓLØt]j ܧ̣5$À:™ÈX'™˜ÉQ¬£P™ÊF€%À` °Ơ_Ơc[±;ºï¾ûÆÀ"„P8eÊo› °AËÛ`ûu×]§Ơ^X,«ÓüĂV\Ç.ò˜1jèĐ¡jñâÅN‰›.`"À¦ëzTó\à>ØŒ`l"²ˆ’Ø<6,–K€­Æèœ0ñFµ¤  ºÎ:먣:J=öØcÀ>÷ÜsjĐ₫û«»ï¾»•6hyÙ̃I{_±Ô&zæ™gJKâ<úè£êà}÷-»D,êàBœh"À¦çZTóLà>Á×X'K:2€m×®Ư/ÑG1eOƒơ×ßà§Öœ‰¬Qâ9j="–K€%ÀVkxb¦Üc?©d´×Ëâœ{î¹Àb ê’%KZ,Ö‚uI#Ï>[©á Ë>“'Oö5aÂßr.Ó³Ă èuMØ`£»Úöv?lz®EØkÇün×ëdµF°MMMSñ²•íÓ­}¦I§–—N & 6 #,c¨.ë†ZË#À`[ÚĐ&ú»±Öö”£ưÙá¬kvtó-U»í±W d{ôèás56hmVs;¸k‡̃±=›&Âö[n¹EmƠØèmC»LX„3»&lz lz®E Ù<Ơ…ëd%`Cô¿yº?̀s‰`aÛÂÆå'% ḌFAöém¶QÏ Æ”! pÍæj×0%m2OƠ ÀVÑN™:Cmö.%ƯW‡ûbvß 5Yư¶Ÿzâ‰ê"ŒPâ=ơÄO#Ï}úx³c|¬kB₫¾ùMuŒÙ5^°H[³¬‹/¾ØóÀÎ;7t"À`ëuáeO‡MjÀ̃{¦­¶ÚZ­¯£\̣"φn¤ºèµ•]̣o¼ñÆ ÷§K̃6mÚ8åCYaꦾôøø¬A,Ö©ăî¥sƠ<Ç ÄIœêÿ\¯ö¹J€uºW2™‰›ÉËÆJgDlÄo€'ß~¯g¤·tJê»ßư®úƯï~çÍV́Î<í4u¨†V؇5Äî¥ nÙôèÑÀ>ñÄ¡¶₫†NQ=°‹—®PƯ»÷P.D1ôë×Ï%«—go ]t‘S~€îœ9sœ̣â>vư„©s˜úá­­Ö@®Ç~Ød-lưŸëỠgØdï•$F€MRm«h dÊ(ª¶ƒHz?Œ~öHo\,:§F=£đgœ¡₫y§tă7zc``ñ  7nœ·¿,`´ôÈ#¨|Pa2(ÔoϽ°Dü"£R›#À#a$À¦Ïx'À&kJ`Ów¸ÚØdï•$F€MRm«h \b„L:øĐ’7vÓM7U×^{­·4N¥ô«_ưªÀ.×¹³§qúé̃~đ4ưèG?̣<»Ơ$X¬eK€M̃đ!À`é-ZWïù`“»jP>l¼÷F=K'ÀÖSưü{>%Œ;áç °1¬t\³§zmó­È"4rêÔ©jñâžỉ¤IÀb́9z)-:vTøṂ ÀÎ=[U“î»ï>€1¾màØăOd;H H{ À` °́‚£T€K€m±maặ“°)¹9©Æd}hSü`‡¶±ă®Uíơ,Å€F$@$B€±ô™n¸áƠMÏB¼¥Î{ÆO~²Öö /¼ĐÛÔ° ¡̀˜ÄFêp̉©g¨•«̃K\‹ ·̉ỹN€%À`ÙG©–ÛbÛÂÆå'% `Sr!rR lë IpIĐó(,vÆđ̉øØvÚÓ:räHµhÑ¢Rz衇Ô=TáÛü]₫¾à‚ <€Åv×tơƠW«-·Ü²®û́w€Â’&yÅ´–K€Í‰E‘’Ó À` °)¹j`ÓwM²\#,6ІY‘â íÖ­›º₫úëƠ3Ï<˜°?üáƠ¬Y³ÓwÜ¡X:NO½<É”©3R¡AZ3îz` °Ø,›é«{ö¼Ÿ_¬Ê¥×̃ú æ¾èéÅËÔ®ưwWøûÙGù-6@¼…–Á ¡˜,ªK€MU'‡å1¾Ñ¥k 0û÷ïïͼpá²éç?ÿ¹°¿ưío˦ûï¿_qÄ¥q®XÚç’1W¦êÜă0²P&–K€¥5¥YØÍ·ØR6lx h£X”ñC«–¯ÊdÿF€̣NHWYØt]¬×†K€Me'¸\OOØ„ÎluÖQÍÍÍjîܹjÁ‚k¥Q£Fy;sæLßt₫ùç·çźq'*̀ˆœ¸+B °XlÖM‰Hê %oˆ¢¤4¬ùLÀ>úÄöEÆĐ%lw@:Ë À¦óºdµVXlj;OŒ=öø“J̃XŒ½øâ‹ƠÓO?Ư* À>đÀÊLX;sûí·/í¿ÇÔcó¥ö|‹«~çH€%À`³jBDZﺴ9Q”˜u€…Wp+ !Ḉ̣đÂĂ:q̉-¥íøßc3„ûKYi/&ÀFq¤³ ¼¡Ϊ±VT€K€M=Đar¥]wÛ£¢˜| kĂΟ?ßKđ°Â;mÚ4/ƯrË-jĐ AÆxÚîj̣í÷¦₫< °Ùx¤k‡qßƯ»÷¦W/c°Ü”ë' vé̉EÍ™3Ç©h—®Ÿ0uSß{ï­0Ô ÍëµOŸ¾;èUÀhü”W€«=‘›â™E[|XÑ~ñ;îC€(„‘đ÷‘G7—î Ó³{ëS½ưåÁÿRV½î‡JÇ%Ạ̀A¨€‹Xlf AL¶Ô±c§˜|đÁjÆŒÀvØa ë¹"ÔZt‚jÄÈQêƠk2si4(â®=°ÁHQZ $ÀÆÿâ„ëbx€_x,`ọ́+Æ·ê³àa/+ỳñ²½̣¬6û™p÷ó¼Ọ̈ °N÷ 3QÂ+@€%Àf .¼TĂéăcÛ´iăÍ*¼ûî»+̀\Ü̉ù©ïưàGçđ’HƠ.Xlà¦6·v V?³ưÆÅPáe,̣˜Ï[Z?€Å~frµÏé¤ö#Àæö₫æ‰QH À`3°̉‰b¦#:¶¬®ưṽUÍzt^&Ï))!mÇ!À` °‘öëY-Œ[%ÀÊxXl«¦ß¬ÿƒË 9T€K€Í4́aR¦=öÚ[ơÙn{5é¦Û2}.iˤêC€%À`sh]„?%¬X{<+æU¼­ǽÅ6'r2½¸Ø&̃[y¦G±\O\ư=°áoîA¨–KèËH¨m\C½Ë%À` °É›ÿihX®CXÎƠ©G̣G÷="V÷E˜d đDè/ÀÔP™ÄIÖE>ä7'63“<á”#å¥9¤˜›’»‘Ơ )W€K€%À`ëÚ°Xḷ–‚¦%IẮư7H¨)ù”X ÀöƠ¥”@<+Ëè$ư¼¡€Q,¥è´'t,–ɼ"Ù³rÛåbË•Wï˜öñ °u¼yh*!°غÂKÚ:OÖ'₫Ym °XḷVƒ °È~¦aṿ%_£f!Æ“ ụ<+[McOØTMĩ‡[‡;/¡C6Ê Đñx˜|+pƒ>=®+üå5&̀ÑÉ6p À` °É~kyeWk˜¯&ñ©Å‹ú Ñi:6ù—Qq„ Û6.?)Q ™$%W"ƠhÊÇiDv„—„á%ÊeeÓp!À` °‘ơaά³ËµWv¸₫mç„ÏX+À∣‘̣́•¥ṭÚßE°̃»ŒđÍ{Ä¥–ÓBÇ¥.Ë-ºX,Û@Âm€K€ÍÀ~<ñFơÏ=8§ç×ßàó–`¬iZR€µ`öá–ñ²ˆŒ̣À¢>ÓÛ¶mûô}̣ yy>¯ˆ6ÊöɲjT€[£€Ü TP€^Âđ’ç˜çææ̃gßTï>Û)€l̉6ßÚVơß}ÏÀsÙ©ß.ªC‡ÁôªsŒ?^ơë×Ï)/2…Â.]º¨9sæ8• ẳơ¦Îaê»Í6ÛÔµ½œ¸}ß̉äGƠB`öû¸¡ás¯»z‡††Eº]̀‰ -Ñe¬‰ œyºŒÏÏ₫Ùù́Ï3ØŸ`ók£`ó{myfơW€^Æ:<̀Äh¯q—48b–H̀™ôqór¼e+^÷fÑ̀Kºåö{œÎëo¶Ù7œx0 æ`ûï¶›ºd̀•NÇѦºơîẤ_̃x®¡á7ç74üDwÛđœF‘†ër±µ–ơËuÖYg5=°n/ÓÖ`ëoÇUl\ʲ\* ½ i{˜çµ>æ"́µœcfdÄ’ơ†èZ4ä¾ơ1ô/]¡ºwïA€ é1°÷̃k-’t~_¿tùH¿tqM'l¾ùß&|1†t`R(×¡Ï [ÆÁöˆÉXÀdQ—×X¶g#ç} l̉í=Éă`k¼R¼;6ŇU˼Ø„<°æBëµtØúÀW-׌û~qͰ_²{˜â4lØ6ܧï…g15—0f ­Ó5´óäMQiR² °Ùí°QƯé+‡›¾kÂåGX:>'Ư¢đ7¾mCá¨Ø†„ÅÇe;;—Í%l¿ơΩeËC”g/vưÍcøer,»®f¹~Û°eÛç‚óÀoX,¬n.¸.úà˜æâíf9åucP–Óç-Ͳ¤Ṇ›Ÿâơ;_Ù¯’^(ºHûÍ6#z–«—ß¾a´ãä ?,¶]g™u`×hh½KCëP½=êIâ<Ư!đ¼Ê’X A_†„(¿>ÏÔpÏTlœ·I}Ë&ÀÖW=ß Ä °èä¾sÈ`/̃đ 6;ÀjO$̃[l °AÈñp.È+0[I—󵽺¦¡c;̣ááØ²]góM¿À±Ưnè ¨Ưl °Øúuu ZÇkOkÿzÖ!®cÇ °ö3¿Ü³ưú(¿9đrÖ|Am₫/¿ă7́kn󋜲˗ü²¿”'ơ)yU®®R>Êó«g”Ïʶ-l\~R¢6%"'Ơ@È Ú?_(;Àßä?f‡g¬ 5ây3T:Ú̀S@˜]F¹G<†öörÀhæ÷;/XˬƯ›`́×aṾV̉D<¾6¤—Óur9_¹&¨ƒ ĂvÙö9Ùkz̉~Ís¯{”Fˈ °Xv¼ñ(7ÀJÔK¥ç¢¼0O­_”½ûĂ~Á}°¿ừ·=½¶­`FơHxÙi–g¾Ü–>Ǭ«ưÂÙ —³?ˆ`ÉKñÜ^U—Ê RµtÜÑGlkQê °F*aÄQ¬@Kç“&€µ¡ÖÆZÖOèNÔôv×°¦q áƠ¶Ö4\́sĂ¡Ü¾đ›‹¿íñÎ.לy¢‡ÔJ` °´JâQ n€ zIˆÑ6°/˜å4úñ† `–‹¼‘ßí!*øƯ/ZK¢¤¤.æ±ÄÖ0Ë4£ª́—²¾Ug_A€çHC©Ø4\…üÔ›€h1;ˆZV<‰A“4ỤÀú­m*ơ´Ë5=–.É0X;ơ’1²aÖE©»__n­× ó•±­¢µßÅ+<ÙZø…XÇi\°́è —K€Í)‘®3©7Àڰ禀¤¼ zî‹Ơîk]Ö´²Û¬Ÿô‹2–WÆóÚĂX’z)J€M×½em°QªÉ²°)XéÜd¢$ùßỐĐï ¯ ]fØBY‘ü DŸ¤Ó·À“>e¿9:yclϘëµ’̉‰ËØT©W€•·̃å4e˸]sâ*3œÙÔ#è|M½P®m€28®xåq,bíë„s”ú6£ƒÍ8´$À`i‚Ä£@ÖoB'³ zî,ÍÉĂx`Ă74J¿$ß̣’ØöđÆñ,4Ë$ÀÆsO¤¡Tl®B~ê@€­3À„„ʸF|WX 5={fÇ…}eü ~G2UfD.×!ɘYÙׄF³\³(KB]Írm85Ë–I!üeH'.ơ0.,ÀV̉ÄöfÚ/Êét¾RGó˜×Ư¾ö9I½$LØ`»^f¨XÜÆ˯’ °Øü˜‘œI_]Ji)œZJŒ`ñLöÔrQ6fX°«Vö‘™ûåū߄‚µDk¹ô¡åúæ8ÿØZZ~º÷%À¦ûúd­vØÖåaï²6«K9f”YË̀åö£®•έ–s°Ë­E“jëaåu¹~ÆE9ƒ£̣]êÀ<ƠCj%í°ج 1×w .NLj`ñ2 eG0á%#úÙn†Ư†:b†Ë̉ỵ‚Ø|QE´–9Èg?đ»? ÀFq¤³ŒºZ¸Éù¡Q(@€MÀÆƯ9ä¹|Y2 ç—²xî2> Fœ“=>7‹çÅ:¦°Ø(:ñ•‘€ÅóK†o˜3û–‹¨’ˆ%ó%cP±”+ûÊđê"ÛÅ\Ëp#{Æd‰#Àæèîâ©Pœ)@€%ÀÆ:ór’ "`gå±;ă$ëű`\˜çTnÜrÇbñx[ưt%À`sfOÔz:™X¹§åÅb¹u\1‚ßHÈoÏêk.@Ï~${"'Ù&åÚǶ£q́cá¸ö>R&êkïŸdt=°µ̃FÜŸ C,67KøJ¾¨uíZ` °Å03œÏ2“ËgaíÏBSC¬óưÂŒT Đ ` °XF#„$Ư°ØB[kŸ<–}‘7¶8¢û¢Y—ɤ`Ơ‡ÅP*¡X,áFÛ@Ú–a_‡¢°ux%ưâ.èxØ<ÜÊ<*¿X,á…FÛ@Ú–Ÿ©#`ëđ ʤ·`3uϲ²T n ` °­à9ØK$Ư¥ơxĐÅL#­ue½̉M€%ÀÖ­çOç °X†§ó̃d­¨@ê À`[,f»ơ›11Ï@„Y‘‚κTZ¼>hnO?T&y°ØÔYơ­–K€­ï=ëÑué›Äz^$Æë“Z¤8×@ˆỈÀMúX4st‹¯§É#G}°ü¹~_%Ư¡OÑ?évX”ă`;w̃DÍ™3'0~úéjë­·̀'eơíÛW577;åßtÓMƠøñặ"¼Ï¥¾È¦Îaê»ưö}3wöé»Ă­Ỵ̈ ` °Q,l[ظü¤Df]Ϊ•’‹‘ƒjà…?_*Ph€È!™`Kr ¸ x©w}ü4 ª3·Óóê×̃X½Æ{q²ç^S¿wÑÛ+0Ÿ”µÍ·¶U;́°“S₫­{m£vƯmw§¼›o±…S>Ô#LĂÔw=(À–î+¬“™A€%ÀF °ht´qn½d2`“Ñ™G)¦™2¢6à‡X4åb‘s„Ëêfà}#á7Ü·̃9µ•N€: ÁÅvxlñö±X¼ºR&<ªæy l»üJơ‘}åx(×.ÛPwüí¨£¹ˆ;ê~Ú°á­ê!y‘߬ô±½ÔQ_–GàeÈW À:XlÔëÔđ˜)°Éè̀£S¬émÄÖw…~á¶fX-₫FB~3j†ç¢,@!ƒ„¿Mx°ơ3àưêƒ|²Êó;¦lGƯ‘ß&„ ¬Ú0Œ²¬æ¸ẂO€Í\y=ănX'ƒ‚K€%À:Ư*Ù̀D€Íæuc­³¡@aVÀ̀e×ÙµÇÉÚIä7'D’üR.¶›̃O»<ü_iŒ©]9¾9N×>¦Ÿ'Øô6›‹zVç*ÛÓV·ñỊ́ xlµµ¬“@€%À`n•lf"Àfóº±ÖÙP đkª~cNMøƒwƠô –Ë/W3$Y<£aa”%`i‘2 0¶ÛËÔ­³êWỸGʳ—Ñ‘™å¸~ËèØç-y±¯9)•ß,̀i1’YtÂu½ÆLÇ1ј¼Ü ÛÖâŒ\À‹µj :́9Ô’Ÿ›qË€ƠÏ¢°maặ“°)¹9©Æd}hSü|¡@¡6ŒwQ–Ăq™ô©Ă/}ư&qª¶\s«jËà~é͸®K½6®ăÚ/­\t‹`ËMäæR¯¤̣`ibPÄ /%.yạ̊‚¤́‚d¼:ØÖ°Đ+!À•–±1C‹MϤù{ŸZ ͨÖ^̣§–:qßâ@¬ßÄcö²O€0Y;YÚ₫·=‹¸çä₫HúÁ$ʶ×L6‡U~ÇĂqQ>̣âÈcßăøƯă}¤<¿çœ‹,ÊF>û\Íưru“óÂvꀲ$ÚĂ¯¾i¹Ï°·”Xư,*@^JÙUăIÙÉxu°ØVĐă4`Å4bÓèöû½†¤iô×R?ă½–̣¸o1 Ö^̉É-QmöUvh»¹]–¡²Û ÛQ"yt%4ÇCʳNj#„ƯÛÇ(7^¿W¿.+k2K=Lª› Ica_9>`OÖ––{Œ›qK‰ƠÏ¢䥔]5^”]ŒW‡K€-¼×9-F.ë‘O €04¯³=k·Æo‡ôÛ½åÚíù•ưÍ û6°Ềạ́RËX{¶oÔ£\x1  6_™‘Au«‚̀âŒ[!­«ß˜«³áÉÔṢR=Ơ÷96/HÊ.HÆ«C€%À`µáMx¤qµñÚË= ” ˆ^Q3$_ /h‚3»₫Q­™,3x£|Ă€£€[®,óđ7¼¼v„H˜zÄuƒÊ¥ÖÉR¤;Ór2V€¼¬Q¢9xA•;÷#À` oX¶Û€„éÚ@é°¶WƠ„Vsíâ `’ñ́¦·ƠưÆ‹—Í0àÀ»kÎ$n[°×£vÑ'É<X'[j Î5Ç)'3Q`ÈKÁ%£‡>ZßDȃåY,–đ#¼$i$óXéô"— !ÆMØViV_ ­ÅØtÛƒt½ư<°v",“Eù¬9îÖöÀºÖÉ`ƒê&ç‹1öÈ+“F…é ÍâÚN€u2£°N21“£XG¡˜ dQ,–K€eˆ± Ø“8™3ɤF&8Ù³ü–› U´È„<Ÿjÿf¯kŒú˜^@¢ –&, ü HʤJr,„û œ¬]Ê0ë&3#ăwX™‰Xf\ÆïƠ,ñ´å`̀#¬“L̀ä¨ÖQ(f£YT€K€%¼Ä/IÇĺ}7@lê†S–ô(@€MϵÈCM&ë“@›âç hÄÅhÄ*xî„ê¸ÛÆ·tđàœ\/ºè"ơꫯª·̃z«U3gúö·¿]ÊÛ­[w5é¦Ûøü‹éùG€¥‰AW€¼”¸ä•È ’² ’ñê`[_@p1pqï,Ÿ€XÔ6€ñ¬C4½ªÔYg¥^{í5ơöÛoWLS§NU½{÷.lï>Û+„U˸Λ›qK‰ƠÏ¢䥔]5^”]ŒW‡K€¥±JhgÈ`X¶âu=ơŒ|b\ë°aĂỘåËƠ;ï¼*]ươª[·n¥²öÙïÎXa› ÀfÜRbơ³¨y)eW$e$ăƠ!À` /ªqypX.=̀̉0ñ&`°b؃7!ÓI'©¥K—ªwß}·ê´jƠ*u₫ùç«:”@öØăNTe¶¿ÚÚÖÙRjrÎÉŒT€«™jØL]®ÔW–K€¥qJ€eÈ@¸9JfS 0‡ª}öYµzơêÈ̉Ê•+= 6ÇåŒÅƠC,ÖÉ„’;åd&*¬y)X£Dsđ‚$*wîF€%À^2/ô€UY×3_2æJƠ¹ó&%p=è ƒÔâÅ‹Ơ{ïéepbJ(Ç—©“>₫Øq×̣yQÅó‚ëdK Ô¹æ8åd&*¬y)X£Ds4é£ơMôˆ¨kº́²Ët8sçÈù₫–̣‰³^6ÖÉ<"À:ÉÄL `…ÊT6=È qnCĂ]:ÍaʤwékØA£#À`ix¦^²n´³₫µ{«`¯»î:uß}÷©¨<Đ›¸éĂ?¬[³çœsNë™ờÈœèÉÿ`¬¬“L̀ä¨ÖQ¨LeÓđ3Pƒ«bÊ®¸†4:,–K€eHi0öé§ŸV .T×\sêÑ£‡·æ+–¾ùóŸÿ\·„5g;73$cÂ)L<Å_Â,ÖÉZ!À:ÉÄL `…ÊT6Ø…{í¥–ƯvS†4À5Ă‹l,·®”̣4†k÷æQẮiè°Ï<óŒç=묳Ôf›m¦Æ«>ú裺¦yóæ©ưöÛ¯²ƯºuW“nºÏÓ–ç)Ö©¿ `µ4Ñ…™Œ.DTètmßörj1•3`#1uEÀ.ú̃÷Ô+˜2¤®6¶[–m€m 5m À>÷Üsjîܹꨣ̣ÆÇb¶à5kÖÔ5ưö·¿UÛm÷Ÿ]¤̃}¶WÓfÎNơz‰C€uê³#Xmßö`tav£ [́ÛÑN-†L+‚›]h'ÀÆz³̃Đª—ÇăfÏ;Èkÿ5 ØçŸ^-Y²D=đÀjçwVƒV/½ô’úË_₫R×tóÍ7·èé ƒ«ù‹–öùJ€uê·#Ø'¿₫uFf(ºÑ †}K€uºe²•©‡®nßZ«L€%À¶´!<$†ÔÚr´a ,ÂHü0B©qØ6à °/¼đ‚Z¶l™0a‚Ú|óÍƠÏ~ö3ơÖ[o©?₫¸n kƠ=ZuèĐ¡ä‘=ö¸Ơ²¯î9K€u²"ا¾ñ Ff(ºÑ Ïéqưz`aÛFÂN—™‚hÖY0ñNM,¶¦”ß gXùÔ˜€eÔ…—ª#G¦ag­†Ÿ=20Ÿ”uÆOÏvÎ;̀1/ú™g¹—¢ÎaêËPIjX@ ʰ!~́±Ç”,¼¯đÈb|,@k·Öbq́7ß|SvÚi%ˆmllôîƠ"MôD€u2°Ψ‡ F °N™’S€[đ<ââäZn6D€Ơă'L¼Qmß·¯ºè¢‹Ó7ºtQC† ̀'eµk×N ><0ÿñǯÖ_ưÀ|(wÇwT½{÷vÊ‹üaếZ_œS·îƯÙ~8~6̉6P `Ï×^Öö_û¢—Ơ1öøƒẤÀ˜µøàƒV»îº«3gúë_ÿZ׸>äCJ Û©ó&j́¸k#Ơ+è…@½¶` lÁí[¬Ó}’ÙLØ‚ßàØXïƯBSAFöØc›•ËgÛm{«É“'»dợ´oßÁ[ú#èóÔSO©;eó¶Ÿp jèĐ¡Ny‘)L]ë‹s"À̉to…Ưî°7Ưt“ÚFÏ>|’~Á3^O”4DÏ₫ë°+W®T/¿ü²·~́;́ ?üp…ơ[ÿö·¿Ơ5=ñÄj/=›¾~’{ißưÈưs—ëÔo` nß`î“̀f"Àü'ÀÆzïæ̃r1  °_²0–PêrÏÄ•ÇXxQï½·ê·Áj‰?MJ' ØW_}Ơ×k¯½VuÑ—]v™úđĂƠ'Ÿ|R·ô÷¿ÿƯkظôKK¹X§~›[pû–ëtŸd6¶à786Ö{—ÛBĹK€%ÀÖ‚L€9s¦ê¤Ç~Ö¯aQđÈb<ê–[n©î½÷^L:ưóŸÿTÿùÏ&y"ÀÆÚŸe­đMt…‡ÖZiYF‡“8eo®l­­?Ưû` °Q®›îÖ|í°ØV¡ÈXlZcZO:̣HuÁzëỹWØ}wÛ­b±x`°o¼ñ†7©̉Â… Ơ AƒỖÚ£»hÑ"ơé§ŸÆ₫ñxàæ'Ÿ|R͘1ƒ›|—û#`³®26ß·'–K€ï'À` °œˆ)5Ï{ ́¼yóT—öíƠê€]£¿Ơ!Åß̉K†\sÍ5̃°2‰“ŒơØ·ß~[½ûî»ê₫ûï÷&@;ùä“Ơ{ï½§>û́³ÈÀơßÿ₫·—0¹ỐÙ³Ơ¬Y³°ñơc….™K€-ô â“Ï5À₫ßÿưŸ×¡É¦y₫ç₫Gá;ê)¼³PCˆc½;Sc¸ÖÓëĂ1°[ÏöÇcéơö›ÄéÂóÎSÇhh…v•Në„1±‡ê¾²×]w.»zơj/”÷Ê+¯TƯºuSăÆSΨ ơ¿ÿư¯ÂqߘÀ‰kVøÂ °ØÂß) × 0Ř˜vÚÉKƯơ²H\pA Vyäï7|ÇœÈq”E™́h­÷À”¶ơzT‹K,=°ôÀ¦æ9PǹB hÅ$Nm¾úUuNKX±€́¶z²&À"ƼṾÀ À¾ÿ₫û̃DO§zªêƠ«—zđÁƪV›>ÿüs\.Œ>uÁ‚Xöµ‰ôéXlKCƒm —Ÿ”({€œ xÔ^ươ±« •đ₫Úuˆ<£*#b€ƠöOÚ?_(õ^(z`é­gûă±+{`ŸyæuĂ 7¨½´ÇUf!~Ê)̃ÿZ|—~– Ôk9‡X̀LüÑGycb÷Ưw_oŒ,à÷_ÿú—spÅ>¯¼̣Z²d‰zöÙg °}wĐÑ̃|Yœ„¡‘f€…“ÆL¦sFlÄĂ;L!Ee3f©œˆÇÀFÂKI´Ù¢#’ ¢ođsuJSăÆí¸™á‘•ºî¿ÿ₫ ëDâxb±€‹<Ç|)Êo.₫6ÏûK¹(åàa‚ü|ă÷4郺`c½Ơ °ôÀ̉Kljå<°€Â}ûơSCŒetn¾ùfƠûë_/-±ÓYÏXŒ‰Ÿ\=°Ø?ÿùÏ¥„Y{ö́©F©>øà8­”0A¼®(!̀/¾ø"¶å^â2:±öÛ­ O3À¾…])+‘†·Ưv[+»Ơ´c£¶Aa÷úsÔÇ©¦<lr÷I=TH€ÅÍm‚-₫†§7ˆxLñ rc ƒŒ§µáÿăFÆv́#‹ứ²ª¹ăÚ‡ëm—õ^(z`é­gûă±ƒ=°X,«ÓfuZ­‹µU·ÓXŒÙ¦1|x(€|éw̃ñúG€,^ËdLæ·€+f2ÆLÇflëÙ» °±öÛ™XÛ™;4ɨ?ؾvâ²WĂ–K€Mî>©Ç‘ °€LxEZm€Å6ó n{œ¬ ÁW\qEÙCˆëѬSsL,=°ôÀ̉›ç@%́sÏ=§₫₫÷Ơ=´Ơ2:ươVí…̣&xêºá†Î /k¹ôûßÿ^577«¾:,^]VÜ,đÊb -f6&Àú/;E€uîă±lMŸ´{`ưàÑœëÛÍè?ü ›U¼µ2ÿ‹8[°¯8kL`0¯¯ØÅ°—e~™´,¶¦¦Ÿú °¸á$lØÏk̃¸¼>lN …|Ź÷vˆ›ú{ Î ¦Æp­§Xz`ëÙ₫xl7,ë¹bMƠ^xA-[¶̀[F³cFbxaè%wî¼óNo‚&sXYFÇœÄ * ³¿ơÖ[¥ÿåwL …₫t¸ö́"\øă?öB±¶üÉX§n{ Î¥'Ơ®í“E€•ˆ@?ûTÀ‘âÄVVăÀ6Ó‹+ˆb3c;ÀI¢¥¬°^̉8ó`kkûiß»kßœ.+yü–å!À–9'qj}Ç`饖ØÔ<‚<°Ï?ÿ¼7ÎÔX¬‹Yˆe–âĂôdLåv́˜1j„ ̃R:fê¦Ç̉₫ô„ÖúyÎ=zôhå­%À–‡W¼!À:™ÖXÍŸµ}² °2Ï‹mŸp+đû^Y&M»Øo»äeqmí‹{W¯@“̃µGơ»±g–&qÂ&{üjÀâ­“Bl̃è6Û̃Û$Ç#„}›Å1°µ¶₫û§Æp­§Xz`ëÙ₫xlwl9€8q¢¬½°Ÿi/l§¶m=ÈơóÀ=è u ̃̃m£<ˆ"áÿ_ûçƠ•ßä{ñâÅÀ[,6‚¹Đ+7ù¬ê+!Àö·ß0;ÛÆ$ÀFĐRYDưH;ÀÊ măoÎ@,qüö$NöMqØc_‘ßæ̀n¸ñe'¼É’1±ĐWÆ›¸Â~Ă6ăÈO€ wßè‹fL –Xz`éMÍs Ź̉¥KU×¼euNÖkÄ^zé¥ḱ%ç§~ÚjŒñ²Ç®¿¾®×\s÷}‘ €‹0c3a)¬ ¶ !fq¸̃y­Ü…XÓcê °ö¼/å¼±Ø[%wO—iXY GƬ0ư Rf Æ à,·Ü9ˆekÉÊ~2̃|8stµ[×Úü·¡¡ÿÆë´J§0!I©1\ëé…¢–Øz¶?»v,f>ÿœsÔO5¼.IJp[lÑ `§NªĐ -ÆÊJmüÊW<øƯN¡ưƯï~§̃}÷ƯRÂ:±Xó7üM€%ÀºöÑẹ`íe"]ÖJôƒÔrKñĐ[c+åîơU ­‡Ç2oe–ñÀö×-ª¹V•›1°Ú¢au²N«MƒŒ[9´Í°XBdøûfåª÷Ô²¯Gú¬Z,á¿â…Å̉:³fÍRo¼ñ†Z°`Ú¹sgPåY ÓƠ_ưj hlơŒ:jựËéHzæ™g<€5ĂߨêV_ƒ‡…UÑ÷§q—B¬8Mdr&{a€…3‘‚€_sMY±wííæ1ıÀM[”!'qJăm™²:`W´ü%ÈơØStó‚—±©f–Y€ƠOï&5 ̃¥Óg&´`Ăß&°` °Øđ÷Đ´™³=£r§~»¨Q^ªæ/ZZ3̀Ö°+W®T§è¥o~¡ÁpzÂG¨—_~Yí±ơÖWV“?njRŸ{®:ñ¨£T7 d‘cioºé&P‘0ó1Œp̀Rl'.£¼ŒÖ´Ñxáº/^«è»ó¸KîCÓ8ñí70¢‘ÓRüí.,ĂâÄ£jçÁÿ€U$3úPf:Æï²$OZl`loëˆÏ‰›}€½«¡áƯ,ôWĂ :5VÙD2°xS­ĂƒOWµ°Ú¿Ó̃'À` °áïX@¬¤®Ưº«“N¦°­MkX¬ÙÚmƒ ¼5a»iPưî>û¨[4̀đ:^ÏD, IO<̣Hµ•̃gM ä.Ñß½»v-å€}óÍ7•ê°đ|Că7V¯©Jăj®KØ}öض÷_lhø¥ß WlÉzÉ=À¦ÓZl•–|‘v#Àf`ïÖE»††ßë6;´Æv›z€Ơ†V/FëN~‰+´æ)ßơD,ŸŒ•¨aF€%À†5Đ™ÿ3RMxµÿî ïåĂ$?äơă %ƒ)ËÛtOÖʀʔVs.:>¼¢qơµ₫ö·÷i5o¹¶Ư¶·>B}̃skghÍKß„óh™ƒbtv=°ôÀª¹ºMiF‰ª=ÁÆå'% 4ëzÔnB€Í6Àâ?¨¡áƯ¦G±)iÚ•«Pâ–¥qZÍ2dp lø±|Xl­F}÷¯°[j¸ÁÄNag)¶³l¯g>F‡cam ́ÏGŒ(…cB§Óố£ˆ¨”ºj8>V{m{o¶™úÍo~Ó*/¢#°¯¼̣JÙ'ÀtđàTD: ̉Úđƒú ¢l×q¤âºàEÑ×t±É&…ÇÍ‚ÇƠ®cÄØLضEª$¶ào¨¬YˆuZˆ•]{eÍ>,F–kÇÇBÜMơE7ó÷˜ °mÚ4zc^g=:¯êvá”)ST{¦nÎ °×O˜ Ơcoåy¸¤eB¦rá¿̣ûÀwV#Ï<Ó ¶ó>ùä“À"D¹\`1YÓ±Çè¥zOÜô']—¿hoú§ú:c¾‚¢ÀªÏ8̃Ë#0Äé-¸}K€à.Jq™XLi¾‘̀©Á³øv( uöYF§‹{Tw¢²”ÎÂr†–K€ ߥá53—ÑACpe{`·ÑQ@¨<ï*́< vÖᲦëI믯°®+&s4i’zíµ×ªJË €­ÔÆ °̉6Çê ’vßs@h¯vœmû#=‘×§¬ÿ­gŸv…Y-YÜXl”!Ä)F¹bV-S+à*ë^í¿ÿ₫ ) ˜Ơ:ø,î@,Öƒ-́G =tÂlÅ«¬ 2tļó§jOIœFQ̉e3„˜!ÄI·¹<áÁQO(d́رcƠ¡ÆLÂúᦶГ=₫øăjÙ²e꥗^RøĂÔc=¦úuêä…ăy8eƯuƠ–]º¨z<«w¢́ß¿âÖJă[çÎë,S)Å=‰Ú ¼ÛШ/w\mÏ«Çê%À`’5Y+Ù¤Ø%®ÂØ­Çë¡~ëdž)#é¼ôÀ:Ûª™̀˜€Å €µo¿…›“¾I²|¼2›ÉÆW¥uˆq:a‘x¬6ôÂiXl˜ö¼áî¯0zùMâd{aRÜS‡¯̃|óÍÀ.Z´Hí¾ùæ%Oí*„ wî¬₫yµ¥†ZŒÛÜN{agΜYqk¹1®°¿ÿưïU¥”ÀBK¼8À„NQx¼Ă\›0y¿³Í·>ÖÑD¿5̀ °%K Iÿ5¤V»@ëÜc®năO}ă¡€¯Z»đúë¯/EÂæ…“& 8Â&hÀv±]A¨ œGƠW=ö#ÀÖÚúÓ½f7\PÈ0̃!Ÿ$ófĂÍeÈvÛ{ HöÛfÛ~@ è_xá…ÀD€ưÂ;o¬Ùƒá%«N½bíƠ Vx½Ö´å` ö+’í‘ÿM€…íèg7›XØŸ~åa?ów`+Ù¥̃v™bÇưÖV­&?=°ù¾Ys°~Z34Âï­”yCgÖ¾épÓ¸¬éa•²̀eÈ4es;ö—i©«_]ª¹‰+íC€ơ'À`[ÍùÔ¾}o ‘ ̣pâøBió ©•Î­À^yå•´Ê$NăÇW[n¼±:g½ơ«à…®û¥!ûíçAêâÅ‹ƠY§ªzꙇ¯×pÚS‡6í¾gâĉ̃Lʸ›†àùó燂XXx‚\êº`Á…Ù‹á½={¶5k–1c†×¯"%¡e=QΪwbf'ê °v´  Àâ0'r²Ç¹XÓN䑈¶ÇÛØvÔàxæ1% RʨM\å˜,l[ظü¤DL¬`¥1°æ )7,Àb?ÜẠ̀–É ÷ ! °~Rù…€Dªåʉ`ơ ü´)~¾P ÷†”‹Çb†»´æ‰ßă,{ùå—+„ÿ.\¸P=ó̀3 PxƠUW©Æÿ÷ÿJ+³cÖ#9DƯø¿ÿë;K0¼¢]ơ¤O˜¡øtO:öØÀ…ÍÙ†÷»ßyF3&…rIØ̣!Ä́x£W  ÛA@÷† †.kqƒígĂf9€œÚ@+Ù¹)!Ä̃¬ftÜvmL /EßB‹[b$Dßàçê0Wè´Ăj%DAẤ7FrĂ¹x`Ë…dØ7ư0°·ûË|(È›©rÓ˜gØK€mư,!À̉K,=°©yqÔ±%/å‘G©°Ï=÷œú–iU<°æ2:AKÜ4ÿđ‡^1 0 ¨5÷ÁLÆåÊ€…Ç×%` °ÍơX±akÚs T°¶MY`aË,È6ÈÙ¹Èo†ËßRÿzL±6^J²íæưX‘\$Vbèåm”̀Đ+LÜtxkĐ´"dÂôr,ö‘}m¬L…cÊr>æ® Ûo­Üܲ¦­y °¹¹íRc¸ÖÓ»E,=°ơl<ö—Ư•«̃SÇR bÛéĐßsÎ9ÇóÀ`§L™¢Æ^v™B,‹¥t‚̉oû[µƠúë{ceÏÔăfG}v«}¶Đ`†íj†!ẈÀÚQŒb›¬} ”Snă¸́Y»\z`kmưé̃?s›TĂ/Êq°±̃ ©3\ëᢖØz´;3xL픩3Ô7ºt-́>û́£{́±ª†îI-KêŒÑ̃Øưûơó&[´`èm—]tÑZ+‹¼a'qúbX~Ê*}4ÖöIÀÊ8U Ù•hC`íÙ€ÍÙ„%"Đobs G™tÉœ…¸̉X™Ê %®©˜„M€­­í§}ó µV2©â$|ÑA€­µơWÜŸK,=°ôÀ¦₫9pɘ+UcăzÈ~Ue=å”S¼p^—µY%̣whÓÆ›¡ÄÓÖ]Wm©ÁơöÛoW]ôLÆđÎb|¬]îĂ?́…cöâ0‰K€ è½3 °ˆÀ³£ơl»P «DÚùål·#e˜”iûÚQ…È‹ßíy[üfÆ1ºö6¿ưă¶· °±Ú·u/¼Q× ©ÖZ`WÄ6yUÜ78¶ÖÖO€ ̣tÑKlPáö`oiÜ-[ñº2'yj¯—Í;vl(ˆy晪«^J:dN¼³gÛFÿ¿ªe|́9Ú¸5ÁXFy˜D€%Àæ`ă¶ùT>6Vû6…` °--™³·¾¥Sïy‰Û(FùXlíŒÇˆ‚›·Hí°c¿RXñV[m¥î¹çµtéR§„äc~đƠU‡ Èê0/h‘đ;̣Hy=ôç†M\66dLg‘Il‘3îs%ÀÆtgå©X,–ë{G` ° !fq&Ÿ“o¿WúØ©²ßưîw=đÄ$O.ÉÙëµaÅHW¯³¸RƬY³<€;wnèD€Í“%ù¹`uèoܘæ̣ °‘ßSù+›Ư‡Cˆc½3i¸FíÉ¢–بÛË‹ÆÛ¤ă«×¨ágôÆÅb|l£ˆéŒ3ÎđÖÅx8—„u^;ê°b„`á…í§ÇÄ̃u×]̃₫>ø °€Ñj&Ϙ1£ÛAç•ơí}úrb‡›K€UsơóF3Êh‡ö”¥Yg@”!?yR€K€¥–ØrF!–›u`(zư1>vĐÁ‡–qă7V×]w·́KÂ$N°€Øé:í«g)ƾXC m5‰›'k2̉s!À` °‘̃R9,ŒK€%À`+́ö}ûª‹ôAé]º¨!C†æ“rÚé b†˜ëC¯¯Ç̃ÛwÜqGƠ»wo§¼È¦Î®ơÅ9uÓF}ÑÁ‰çŸŒ§ƠUçYÎSÛ|«w dq¯Üwß} k¾VJ&Àb6â>Ú#ûS}ObŸ™3gz Om5IVÖĂ„§Øơ|²X'CK€%À:Ư*ÎD€%À` °åŒÁ•«̃S#FrJ?>î'jØOG8åE™˜5Ơµl×¼g ?[ư¸ù'Î冩³kpNƒ˜U›ơNxF}=&Ưt›êĐ¡©²‡~¸₫»xñbß$Ëè£ÁµoêÎ;ï,倈V“î¾ûnuè¡_z‡ûí¼KîﬓÁM€%À`n•g"À` °بd–—oâơÍöơÅ‹©ÓÎ̃j|́¹çë­ój§.z=Ø.:Zâ¢óÏ_kƮ‹u"Ă$€ïqǧƠ¯+ÆçâÅÆíæ½m` n,–ët«d3S/]íAµVK€miC§èï₫µ¶§íŸ{C*¬¡8q̉-Ô¤̀¬¼¯½ơzzñ2êĂY‹3Ơ/]¡öÙ7¶[·nê†nP‹-*¥k®¹Æßj₫&?đÀÀb9×t饗ªM7Ư´t̀!ßÿ‘Â8Ư°Ï£¬æ'À:Y Xl” Û6.?)Q Y×£æYµ°Ø”´ç´U£0•‹!øè Ôæ[lYXM¾sÈ`uùăËÿy?¿XíÚ÷Âêẳ†˜'½^Ûi3g{÷7¼¡H»í¶›>}º7cq¥„<X̀$”~ơ«_©]vÙ¥t „ c\nÑÚÖ©«'À`£X§FÇLÉ)@€-ø ñ2:ɵÜl©p†U%C²è{äÑÍêÖ;§`éaÍơsá¸kUÛ¶m=È\G¯ùzÔQG©yóæ©… ú¦iÓ¦y‹àr Kî`r7ăN;+̀n^4p•ó%À:؂۷¯ëÔè˜)9"عºĂbʦđ¢'×́ s¤ÂX~†eÑ6ÈØ¦6½̃Å kÇí­¯ÆÇ{üI%àÄ8ƠK.¹D-X°`­tÿư÷{‹±°~éÔSOm5ÎơŒá#Ê/²æX'"R€}̣ë_WËn»)CÑN-†™2¥@TÛ¨Áơaæ0eRƒ‡5Àn’©–›ÊÚȲ L`á‘4Cf±ÿ# é´aĂ=ư0.ÿÛăCñöA„ç–ón ‘P”±¸È/ÿc³¾¨›ß6́'¿›ß.Æ´Bl–…ó¶ơp)“y½inó-U»í±W d·Øb uă7ª§Ÿ~º”° ¡ÄfÂ8×={–ö=èàÁ ămÓ|¾IƠëdD °tÎdÓ9ƒë¦í[¬Ó-“­L‘l¶N™µ¥‰)@cË5V`R†€P&y„F€:3¿h‘WàO F́ Hơ3 ñ»¹]2ÅR/9–”: <ŒÍ:Úu2^q<³(K‰oüÏ1°̉ v”ÅíS¦ÎĐë%w-Áè^{íå… ÏŸ?_M:ƠX„#M4Ií¾û½ûl¯0¾6‹çW °N}x“ÎId™† ÉtÎd̉9ă9Ơ4ÀbÂZ~r¦6g”§“*htù¬À ¯~0Đ “}Ä „7ÓÚ–¯r[ hƠ­¤ä½E™& ˱́2ưB M/p±jlĐù•ÅíƯ¬µ,o3êÂKƠzë­çƯmÚ´Q'Ÿ|²2e°çơdñ;¶cÙKÆ\Ég¨Ï˜qlªúyV† P:(@€­ƒè5h§0‹cʱư<°fˆs/¬=‰“y¾¢'q"Ä&A /HÊ.HÆ«C€m} °ÀÂsi)₫7=W*¡Â2C¯ihÛĐ+ÛPN¹™Jñ»]–ßq%¤pŒíâéX–eẁú†ñ¢v1•,„rưΙ ‘]Đàµăµ‹£ `3n)±úYT€¼”²«Æ ’² ’ñê` °±B»¹ôL†a¥2ưÆ̉3%']pÄ6P̀6@€Í¸¥ÄêgQ̣RÊ®/HÊ.HÆ«C€%Àư~ăF“4àåøú‹o+Xs›ü-3)'YW«˜`Ăë^ŒëN€u²”u®₫N9™‰ +@^ Ö(Ѽ ‰Êûƒ` °±,BlẰú—1:H’c`)ówûï¸êÂr‹,¼Î¼Îf À:ÙRu®9N9™‰ +@^ Ö(ÑCơÑnHôˆSX'3ë$39*@€u*ÉlMIŒÇʵX,Ö˜¸Æ6‹m€m ê6@€u²£°N21“£XG¡˜ dQ,–K€e`HUÀøu{t*íµ¡£†Î(Ë#À:™GX'™˜ÉQ¬£P̀F²¨–›*Ă5J£‘eÑ“Æ6Í6€å©¨•®6‹&GÅ:`swIëzBغÊσSx À` °ô¾± ° d® `ă5êP:¶¢çøØ”]ܺ>ª†„ ZéẶ‹§: ~¾P sF=LÙô0ñºçºaÉ&̀z-ëc™&ü/mà…å«”¹¬“:‹ü˜Ñ[̣Èvx)±ô“]ʽơΩ̃6$́g¶7û–kƒa‡úc© ₫—²åœÍåªP· ö:ÚËY™eÉYi˜å<è\°!ÄN&F/ë³́ÛÑGỉÛ×°ü²*åQŸ 6áÔ0™‰ P*v +c…y'¼Ö¼ÖAmÀI—€́Àœaàʼn“n)=‹đ?ötâwù€'åa»”'eàÛ|M¨¬öxÉ8ê'€*uÅÿR'œ'`ŒßÍđeÀ« ¡•^ôØùÁ*6 ]*ëH¨ȧ;%xZÓô±NOđx¦-\͹s*{üÖ~ce‡ưb»®xi!T¹7XÈ/ñî¿a_¹ñ%|ßâÁ•‹À  rß½̀á”ău Çm ˜máÊ©²¶,¶)Ïr­pa±_M;2Ùÿ»DÚ&ÀÊßv"Ê…}‹oÓ!#ÑaˆíüP*PAj7­Ü\æMï °̣`0ß@ù¬À,¶XM˜ç…°RLXáuçugđoôÀËh9[¤€¢xd± v¬À¥í9Ø´AÑ„vD ”oª=Üö®ß&'¶8—™,d3åIW£@5+¡½q0½µ2nƠ¬‡<0d¼ªxQ¥ y@`{Đzz`«¹ÂÙÛ‡K€e```ˆ´ `³g DPcQ»S ̉ ÛƠœ́ÉƠc‡ ÀâöäQ̣›e›Wʰ!:‚SgT ß T°PÄ/̀A`Ơ|ƒ$ă DEBí ûö1Ç`óƯǻ"5Zè Gm€m€m€m€[ Âç,%RPÂw‘ÅtÀ¶4íÖZÖ¶mq~Ôå¯\ơjjÚpî#›rĐỌ¨ T€ P”)9ă(jc‹ååœxmëmám5a°†ÿơsĐûF’<ö˜OH/< *ûØQäđÉöÓ† oơlC₫[ïœZöy‡íæ¾&ÀÚÀ-u‘ăI½Íúaüo¶AxYíúËqEó¼pqz~ăº?æ/ZªÚ·oÿNÊú:V‡ P*@¨ȃë­·̃ÇËV¼Nˆå ¤ll±´:–ä7€¡À`Đ„Ns?äà!Bj‘đ·vk#&‹²½—Øxöƒ6ñ€JÙ€FO&r²VÀ̃QÉ#ă|í}äüpnRÔûb)Û°¯2\Î3xFU.´Øh£–ä¡ä9P*@¨ )S ©©éÍ[‹á•1ÄrêïEă5à5¨¶ øA˜_1€ÎôÔ"h%¿9‹±xrQ/?H(”zWKăÚ¡º•<°6<ăö8_ü†|Í~Y©[9PÍâäW8§ oÔ!ÄMSSÖƯ±:T€ P*R̀|&Ów‡Ü55ÙQ™Á-5•bEjS ĂFÍtÓmXzߨØbi®+“‰ÇRB‹D~Àk₫†cÀc*á¹åÂŒËA¸ßx× €µ½¹fø²Y`Ë-ÍS`³0VØOÓSOÿég?¯­wẫT€ P*Po0}÷ÀzW"äñ¬X`ZÀơÇyđ“/ùÁߪơ®p?zæØØ*µÓS4‰¼®đdÚU?3óÔjkO2…zV°ö¸[S—J“B•«¿í•Îʽ¶é¦›}¬»É^ùê*y6T€ Pb)đ³n΂²–—9­9Î#k ­ëYǦơ×_ÿ“7V¯‰Åû’ƒ‹ơ$„± ÄÓ‚¼§~cc²¦‡SÊ0=˜]™àHBmÍcûzÚD™Ûí`ûx~c`m¬²lßăkn/°µ‚y=Úôâ¥+TÛ¶í>¨g§Æc;)Àåeœd ‰Ñ¡%ăiUà&]1¤<|̣t.y¸‘œ&Û0—¸¨‡ÑĂcÆÔ•ºÖ» Ø¡Á¨üæ7nTÂoÍ1«2‰¶±Ÿ~øµZ€(cN~ÈcBf¥Iœ0;1ÊCÙ¢a=°rNß86₫è–cH½PWÙo²y|¹fâ‘®÷5 sü‘ç₫|ƒ 6IçÄBâRàh]0#êâQNj¶,5aàµÄĂÂüÀ«9­¥‘ă;hñf€#n3¹ŒGÅ$ÇÁ¾ƒJà˜(׬ B†Íö5ƒóÈ¢79áK¹Ă Ä¢óaŒæ%± ° ¸¶¿I’t€9{̣$@›½&ªx@áEèơ{醲ú́r”•^Ô¡>2q<¹Ø_<ºø6aÛüÊÄ× l/£ƒ}¤₫ö’>(Û̀ß+Müäª}’ùÉÓ¡© áĂ›d®,V…a^¬S®úlÍ¡t®…0ZÑU)æKµhÈf¨€¿ááßñÿË©À«™×ÑJ'‡ Óï8ø ÇÀ85!Ö®»́“jÁY¹đ l¸á†OL¾ư^†s"¶¶ÈÛ€x#]`Êv³:™‘Ëù–Ëc¯Ÿ[KYIí{̉©Ă>éĐ¡Ăèđ=÷HP±A]œ V+µ‡²í`—2ZÑE%æIµ|æƒâJ]cx6ÍO¥·aöÍSË›3³,©› ר›éa-ß;‘êfWUåúvë¾ù_’2txzïØƠ¦•–²A{±¬v¾",¼±•&…JÛưƒơÄ7Ø ĂŸuïÓXUÄ’R \$œågGăÙuƒÅ „ưẹ̀=,;Ñ,ÛúE 3ÇF}́áze(çfûÙơ–<8ÊDx¿œ«-iFFÚN%F+º´æIµ~KÜCóæÇÿå&°bpxØĐÜH(É`Mñ°¨°È[ÍÛ¨T_$Vî ôº}çư¸ù„Óf±>Å^ï|^ïJ“(É5G¨n¹¥fÊư×öâ¢WZΡĂÛö›ú³?M½{fEå7جH°;Ë©Eˆ¼.Cáäx(@ `Q¢a³âØ¥øˆ=-ĂáÄá"uÅ₫°OMˆ;¿a|›6®l7µ0m\±›q,ÓF7ÏAkB,£S°‚A øy`åf“…|—['Vn8ß0BÉM&aĵ¬<¸è º̣Ữ±c§›/¼h̀§i1ŒX| ¯+¯+Û@~ÚÀ~ûú¨]»vÇd´Û+Zµư<•° Mï" Ñ=S#ñfÊoa`­’g̉ͺúÙÓ¨£ ÚvƯÊ«̀K°8GÛiă§YI[¹hwUNÏ×nüP;„¸̉©cÜ ¸yĂŒYđ{¨ø¬ Îö›9»îaT9½œù?­¯ẃ¸hâ“ÿE3?&¯%¯%ÛÛ@mQ;›l¶Ù5ùïss†€6Ó›»Î “¨+°6ÀÙĐXI¨Jyư¢û̀ü~ö§}.â1•:ØÛñ»ù[5+Ç}Ź„oóĂhÅÜÜ2Å=4bsbÜüxXà&ï+₫–·_2©“y¢ ¹Y$¦ÛưÖj•ư°MÂ1d̀₫ï©ùĐBä͘YWûd\1ÚqăÆ:=r̉ɧsL,'ô‰|BŸ8Œh–I8cH¶ ¬\ơÚsÀÀ?cèI1ºÅÜœ¥í•0´£ËEÚ‰wÑ]ר¼´¬¬̉Q ™ ̣f 7n@y[d{tĂ”)yĂ,n^œ?ÅT ¹mÛvÀx¹d̀•0›l¸Ă#©7ÛÛ@=Ú uøÙ#?Ç2k:\ø-†|1{Á|œµ =³çT‘è>‰ 4gƠd ¤JÔ„Đ ¬Év;ĐV ÇGyrØ–̣Û́@ÙÏ,u¶áÙ`ˆË¹ùÍ–lÎfŒº˜‘8–œ/àV43ÏÁ¯®ŒV̀Ç½Â³Đ àA`̃¤aDÁ #đïj˱‰7Iv¸F¥zá¸öZWa΃yó¡ÀÀ¶mÛ^˜ml\ïZ¤!ß?üS}zcÍD ØØØ2Ú¶́¹ơ§̣\ÇóĐºîºm.Ó÷ÍGÆ³Đ ÆLaQdH¹ßoaÊŒ+o½êÅhŸ®(Ë¥T€ D @SË ¼Ü8E'.`¨,‚ P*P'zèă6Ïơ:Uƒ‡Yñ*VsñfcE₫wC[Í1«Ư§ {ˆÑƠ^1îG¨ T€ P*@¨đQ L½;X!¼a–xḶb nÊ$?8£“TœÇ¢T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@²¥f²Ä¬‘X£Úơƒüi\¾Áµ₫ỳ‡ë±SOŒçD¨ T€ P*@¨@¶˜Ø)ª%°,ƒ̉ÉuyÔù±ÖŸëeO É([Î9 ,Ë>Aú L€¸,K1Đơd¬|r¼J»'—¸\±Ê‹ÈƯ¨ T€ P*@¨ˆFF@£™+€–jÁKj—À¢®¨»í!Ø•Mû¼]ÎSÎ¥`£èfë‰ÿQOW‡~f+=Ê. °ÑÜo,… P*@¨ T€ P0=âíĂ‚ö7µ@À(Œ‡̉®J+NûØá~̣Èy üƒôP,ŒĐMÀú™^mè ÇÂ6—]ÇrđK€uQ“y¨ T€ P*@¨ȼ•Bvb]ËOŒ$¶ÜEpXxÅ»X),Xàß~Àˆ}P‘Çï­%Ï@‡–#×úË1ưÆ`Äd*@¨ T€ P*@²¯@%€d• —…Wp ¸BÂß~h,¼¥È¥N~ g×yû`_¿Ïà–ăË6ñÈ ØÉ8Tsó8ø=hœ®@.̉QG”û¢‡‹ÇWê(:—+?`ECeáºVú˜Ë5ªBŒërQ~¹ëpHn¦T€ P*@¨ T€ +P `́l(¨È˜N'ù߆#6”!$^H? 3ëc§L˘S‹ừcHMh´Ï»âœ̀ºúåµëPNy€¿htuL€5ÁÙé.WwÓăk†?ăøåZÎĂ¼®È[`%4Z¼Ư¢{¥1»AçÍíT€ P*@¨ T€ P_Ê, ­\¸+àÄöJˆ­ .°Mâ¥5Ë7Ë’ú¬ c?+¨ËÁ£k1„‘pi?¯°„đJƯư€1È jï×X́_Î{ëW̉lzMá-5?~!ă2íƯđ|Ëu2C›åŇ‹—™·% T€ P*@¨ TÀYs¢ s<¨ ÅơăR•Bfzư<£(Ëï)P†mæ' €Øc6tÉ1ÍߣX¿Y“mm€Åv9WÔW>•B¡¿ư)§c'×Owüæ:.Û å†\ÛóQ*@¨ T€ P*@JKµˆ·RÀ€Uǹi9ÙüÂL`]AªRH3+^a3Œ6 €•²m “ú›Ù¨6hvg?€5½•V4)w [³ Ưư®m%·Œ –°ñjT€ P*@¨ T€ Pđśd9,àV Æ/i{é*¬ r". e{/£X©«Zë «®aÁ~ç\î"ú,̣ÊØ`yÁàZGó8¶fâ ÷{Ñ€ưl€5C½åøö·‹—¹æ̀¨ T€ P*@¨(•ÆÀM$³Ú¢ ¤°Ø´¬Z[êÊ£ °™!ÛA­¬ÀÔ;Jˆw¹Y‘ƒ€:*€E9rưư¾ƒÎ‘Û© T€ P*@¨ Î Ṭxú·x̣[.&,ÀúÍÈä03ÇVFå…hâƯ¼ÊùØă8ưàĐo$¿‹ ù́ ”ụ̈–Xä5Ëñ«k±„é^.„Øö¸;78@Ê2¡O Í/ô¶ÀçPgc%€­ä5Fˬ@¥ ÀæùJ=±ƯbƒÇ3Ëô»¶²]ô“o¿ơnỊ́̀k„kúúy³íubåÜñM€åó† P*@¨ T€ PÈ(UZ̉Ûí°RäÔ˜̃=ä±Ăgíß¶́S præñä8€¨rk"O¹°]ñúí}Ê•´Íe ÑÇ–ü8<ÀeĐRE~ÚÛ ÀåúI]pü \#S3¿kk–#ûà8ø›ë¿©̀íT€ P*@¨ T€ PŒ( ̃j?¯fFNƠ¤T€ P*@¨ T€ P")PnƯ"iÀs¥T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨@±øÿw.G?ÓæIEND®B`‚nova-2014.1/doc/source/images/rpc/flow2.png0000664000175400017540000007367212323721476021565 0ustar jenkinsjenkins00000000000000‰PNG  IHDR°W›c¢ÑsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYsÊ&ó?w#IDATx^í½ ¸$E™¶Íơ!CÓô¡±›foA•Æ@<Ă("È¢¢ö0(=à‚,Ú₫.lƒàö3đ1 ̉ #8 à†¢ ² (´è àÖà̉"*îùÅSœ÷dVFUeUETƯu]yƠ9™‘‘‘O¼™ñ̃ơƲÚj|PPPPPPPPPPPPPPPPPPPPPPPP`́˜p ,vÛ©ÚfÏ}ÇZk­u¾ưÏ÷cº°¡6€ ä`³fͺqbbẩ©²ï¾}+‡(€(€(€Ù+ h=rbươo1c­ßpĐ‹yÓq'Ú.ºô3­o64À°l ?8ç¼ 3Ï>·ơ?êØ%Úló-~å~”|xƯu×ư˜{ïOfßzq(€(€(€c¥À ÷y“‹²₫|Ñ!/ÿ­`ơ‡eClÀFØî¼û̃âƯï;«X°đ+Ơˆ΅XµûÜ,     d«À®³fMÜ¿øˆWÿFÎ à ¸cØ60~6pÙg¯*•}âŸx™kÍfdÛ¢Qp@@@ÑUÀ9*oxÚv ¼mùƯ€ëGY€‘ñƒêœ:ïÖ̃wæüqΜ¹ßq-ßüÑmư¸3@@@́˜3g̃Å/yÙ¢•÷Ư¿x^±lÀ¦màën)6̃x“ŸÓ¥8»¦£    Àh*à~]ÿÈ›?ùÑn¡ç<¢;Ø6€ Œ¶ ܳâbó-¶|Àµ‚ÛfKÈ]¡     d¡À̀™k¿jÿ_ø+œÏÑv>©_êÀzµ /™3wî]ă6‘E—V!µTÑ2o[ê₫®[ăŸ_÷7ù¯ªw¨WÎú\Î3˜ÖĂMiP«À®óJ·aÛ^[Îdž°ñ°Mî45Cñ`[«ü¯¶ÂƯÂ"·MNm»FÜ’¢Ư–¾Óọo¯]Îúh†đ˜̣G˜IPP 3Ü"ö?ĐØ&Ïñp<©gêÀ°ÍR¯¥Ö2ḳ†]\́üa‚ë„óFâ.¸ @èTºăÈ6áÈ’v„ ŒŸ h‰µµ×ơK×îÔuí´iåố(×.÷†(€(ĐwfÈù`×ñs< êÀ°¢°·ÓlÇ’q     üME{?¿‡›pbÈgÀ°ñ³ưºÖZk=LĂ­- QPP P`Ö́ÙWœs̃Œ}eGlÀ°®m`ëm¶]é&“‰ó2Ø8H…(€(€S`ÆZ3g₫Zkú5¿¨ uNcØ@S6°äÇưi5Ö|'íl”l”L$B@@Ç+°«~5oÊ!œalÀÆÓ4‹½f³§¡R€’‰D(€(€(đxpĐ‹ÁáO‡“z§̃±l )`lG.Û‘\$F@@¿)püQÇ.ùSS ùà cØ60¾6à–‚6J6J&E(°Ø¥™ˆHG@ fΜùÁ·¿ëtÆ¿2q 6€ `Ø@Ï6°̃́Ù¸Öq₫h´}½ ¶¯̣UæËÜƯNƠs³(€ă­À¬‰‰»®¸úº".ăq¡î©{l0`£} ?Z*Ö(Àb"(€ă¥À̀™ëƒU2üáé²Ï^Ù=û†¬€mHH²AÈDǵ)Ç•|°%l`Úø°«̃“́@Ÿ.†(0j °8œ@6€ `MÙ;P/€`epD`úØq1@¡+Àâ¸6帒¶„ `́@›u€`úÈq1@$`q8l`6pßư+[Ưæb·K.ÿB_̉₫÷§>ŸïeWD§½´ƒ̣₫wùæ6K<;Ц€`Ø>r\ P XàeđÂ5°³“̃úbóÍç{>ûÙQÛ¬Y³w̃¹6í;́X¬±ÆµétƯ6Ú¨Xươ£̉*½̉n·`ATz7lTº7̃¸£2l°Á¼bé…—ô<;đ Av M; À°}ä¸  @ °€Å [®3̃¶ö¦ăN*N9å”"ö³îº³+VÔ&¿₫úë‹9sæÔ¦S‚#8¢X´hQTZ%Úd“MeË–E¥w/ô¨t–á°Ăg}.›D‹Ùh!¹Üfô˜# À°=>Dœ(¡́xCPIưÊØÇø€Í°¡́O‘W¸lç÷˜5 À°=>Dœ(¡,3(€á:ămk,›aÙÏ"°™ÂgmËèôóÑ"o@‘W€o¨h¢!&l(ÆXväÔÎn€`ïè̀d*S³ŒNCB’  @& °ÀG |;éƠX6“fqPÅ`XvPO×A-XÀ¤W0á|l(ÆXv´ZÏï€`›Ø+5îÚ³E’   ä¢ |ÄÀi°“^m€`siTΑØ£YŔ²ën¥Û!‡.ndVí}_p@¡­×wÓ0Îox ́Ä€l–Ë   @ °€É0o®9~vÀ°i´zÉ”b¤ö›w­(®₫ÊM­Í`Ö₫¿ñ¶;NAàÇ>~i#y ºMj`“1j ‚(€Q€?tCÍơ°1Ù À¤QËç"# °₫{ÿ„{[+[Öø ÷AWđ‚ï÷ô`¡óưó,¿¦ ¹_í›ÏƒÚï’*|~jÛÂ’{r×§ßö™l₫,pѯ|±-ßX6Ù†p8{€=ûœó‹-¶|̣t7cưíGT½̃Z}ûƯC0ÓêÿTÛ!v8Ư°®*HªúäP”¸€<,›úuX #Ơr–m°́Đ¼´ 0Ö«Hi¬ öîÀ*ES}® §ÿ÷VitLíü”»°i=Œư,Í<—ù]ư¼y£À8*À$}Ôgª6À°ăØÆ¶¹ç±XÁ§à4́₫«}ê.¬ưX¥óÓèøiï9£µÏØvƯ”S|'°ăó6˜ïnU;@`wÊ4zv À° 6]£ƠØlÙ¸Ø:€ơ¡€…Ç`ôï€ư:懠;z üQ§)Ú À¡‰Kù’l0±“u+¶.ĂUX%›²iS6_{hR3̀,ç¼X`'EØ¡L£g—,›s[Ù‡²5ÀÚxV̀jØ ØÖ‘ƠlĂj4¦UZ›yØO¯|üè­¥Oµ-i¸ ññÎ>5Ô’O‚ ° VJÆẺ`>Nvô@!Ơ›r·­°́°]×à/₫‹›G寫­¶Äư£¯y]äÛọ̈™\°đ+S·VOƠŒÂá,Ä6₫ƠÆÀÚDNöíÏ,æëçÎXœF ́2gD“½çöO¶ÚcÎ́T­°ă ©5ê”gtí€`‡ål`ƯVØæ`öÊ©}3†U¦.#f*ï‘^™³XEP«ÖeƠ~MÊäGbưYˆ©¸ê»lØpŸ₫/K›ZÛÀñÉđ¥Ø >â—`ØdׇK­¡¥<£ •ƒ¬[€–_¬²:˜]ê"³û «l]\w©;gñÔyYl·ï™²1°Ưæ•Úyl–Ÿé)l¦—h±X€ucRkÔ)ÏèÖ À謯 *{¿ƒÙ3ܾm‡UÎÈë* «.£»ºm¤vßđ¸etF¥`#­}’°#P‰ Ư Ào,60@`Øaù1ÀljăeCé4÷f·-Êa ́¨@g“÷Àëm0øë°ƒ×|”¯À°ÀËá¥É†Ÿ¼̣Œ̉°ýÏî_Yüî__Uüa÷=£¶×XăÏ8¸rÑ̀e©lv8ù€ÚÉ߉Œ—-óǽăi ¶ÿïÄü̃‰́(#ƪ÷ÀO]âNX€`‡bÏßo½Ær;́°Ă£¸ˆÏºëÎ*V¬XQ›̣úë¯/æ̀™S›N 8âˆbÑ¢EQi•h“M6)–-[•^uóé´ ÏzÖîCµ•Å̃äG€ß¨¥}ÔéàÖ*)\ÿƯ¡ÖGøîXkæ̀?°¬º“Âyæ+Àv®gT+À°Cü¦ëlÓÍ6/n[~÷ØÙØ<#°?¿û̃âO[m3=ƒï¨iƯư¸́SËï¤66v¡"°O}ÚvD`3ü1–́ø ;>u=ˆ;`Ø„ ¥l©€¦‰ü̉†d6&NYD`Óé°Ăg}îÀßWƯ¾GÖ›=Ûơ îy}ÓFư€.ÆÀ^é ơHw^*kƆz^5‘Ó ›öû¾ê9`}ēΠ€Mºz²+ À̀!¼Ï!{Ư’73f̀hu=ÛjëmÙ 1ïÖ¡Ï`ØNº1°½ûu뢬ZNçb­‹\Ú‰̃¯•ƒë‘¼Z7ëĐ¼ªœ…øê¯ÜThkê]8Îù°QÏÈH$j `ƯOVû¸íT¶l5ĐĽ~Xv đ̉ /)æn°A \×\sÍbÓM7?ơüưË®¤ắ´è̃X€íµ ḯü2€uÀªes–ºcu–[c©W¸œäÛṿ´*̣j=€=ûœó‹-¶|̣*Û ÿö¶´¡£Ú^°˜}̃iơ+Ơ‘MÜ‚{̣­s&Ù²Ơà®́€`ûÚø̃pẸ̈b¯ḉ= «ÿøÿXÜtÓMÅøĂâ”SN)fÍƠ:¦¨¬¢³÷¬x ¯åU' Çû`X¶V¼ƒ, `°®˜Zëu²ƒÓû•´€ Ë̉w€ưØÇ/mµU§½çŒé6JđuÈ¡‹i³zèIÀöë±á|®_]wƯâëÇĂ–™S?:è¥ßë€`û̉øª»°&«±îÂsçÎ-₫ó?ÿ³®₫öío»xå+_9 ¸̉æ4Î-GpL¥̀, ÀöÚ„wv¾{Ñn«­³³ú: €Ưe×Ưjaơ›w­(‘Ơ惮̃¹ßÿуÓûtLin¼íÎUÚ_ưoçûóD„Q^óó×ßÊ_­´Û5-?•-|÷[9²*ÛÊÊÙdÀöưù½ ‚®ßxăâî»ïfËL¶ùçqæ̀uÇQ›lˆ,¯‹.ưL±™›aV¿Vk;ú裋ï}ï{Å~ô£ÊMKt(:kḉô;W\}]_àº÷LO À°lómY†9&°‚?un7ù àSi‘ô xơ¿ÀRíƒÆ̀Z÷ă£ỶJ§ÿ ,í|ÓùÙƠyjư1·–¿µ;º–m:_éu¾öé;æ·SäÊkßĐJcÇmŸÊ§ư!à6Ù̃°>±Ă.2›/¸7°MDq‡mÊ\€í@ÂF́N·̀„ß]xÇw,®½öÚâÇ?₫qôṽyç9øƯldzÑK åÛdƒI^½×u°,ÛHó•{&ÉlD†ï@A`ØX(€4€Xú¬ă] ¡ỘX]ßÎÑ5•·A¯ Úÿ_@ê«ÎÓq‹Üª,~ú&̃÷Uy4 °—;æ₫@P₫X–‡äo °ƯCº ŸôÖw¬̉]øŒ3Î(~̣“Ÿtµưà?(N8á„UÆÇª;²®Óφ”¼»·n´`X–VØ)0[¡µè§ £ °9‹œúƯ}cÖïflê_ËRÁ«€×º[ú:˜îæ=_wNĂË5 °́8Øý=°ƯÁ‹º k9ëú{Øa‡µ†$üô§?íy[¾|¹[ûñ°é¼Ơ-Y³×5ˆï®.­ À°±-ÔH§K`Ơ½7Œ†ï˲ˆ¥Uµ.ÄU«ư‚9eYä¶® q¯«ó-:\ îGÀô³ƯŸ›`Ø₫XV¹°Aºơjù×í¶Û®øüç?_ÜÿưoÊw§v¾Ö³vß³¸æº[Ùf~́‡#̉i, ÀæÙ^6\êäVﶺIœü.¸ö.ô»ǬßmXùÙ$O!û‘]+['[ÖƯÙ° [x³;Úå½vóï$ë;IÜKZ€íÅ~Fí\6`Ơ]xÖ¬‰Pjœ·¿ưíŸåoú¼sÎ9…f3ö₫ë«›1İ,;j-iW÷“ÀÚ2:‚;ëâ«1£6–Ô&M²c,úƯëVùÛ¹–Ö₫÷#²Jg“+tª ¬­gëÇƠß6áÛ•ü¤IwÅïôùª[»ü¯w›¾ë>—¹êvŸùu™Ä`Ø;—4l=ÀjÖ-¶Ør _øÂßúÖ·ŸứgÛ´Ï›ßüæéñ¶é·¿ët¢±‚, À°ẳ¶½Ï,V°hàg³ ”~ÄƠ…Ù2€µq¨:߯¡ú3[¾₫uuMưïOÚäç£s4I“̣©«ư6Ñ“/̀6 q§½jºIOâúw€àQp~Îs;N÷vV¥«¿Bu Ewuí #29t v«’ ^™9€`#́ql’°ơ{Îy´àuÍ5×,N?ưôâç?ÿùĐ6­»ï¾ûNĂ´Æájô­̉Êq²nÂ*‡_~¥ñË%}tܺ+?âªc!ø›6óƯD̃®ue¾~ă[K^°å¥êÎmMØÁR3¬qÿ`;Ø›o¾¹¸æk½èEÅ.»́̉úû—¿üåĐ6­+¨z; W¼û}g±‰:G, À{ËÛº6Ñwt¿ ƠÏ·a€=ƠÙ“8©í§ ²bÚï|àˆ¶ËÜ"£1cFư.¿ṽdIæe]ƒËÊ[–Î@ƯÏV÷b‘Óª¼}8ö6Œ‡Å•F¡–FÓ¸¬&J`¯¿₫úbÇw¬Ü¾øÅ/ö ÜŸúÔ§Í7ß¼Đwđ®ºs[v gŸS€í`o¹å–âÖ[o-–.]ÚêÊûW¼¢¸ç{‡zhh›ÊôœçÀ¶ăª¼Û>;5fWƯŒ·öưÜç>w:¢*Ơ₫ƒ>¸•Æ6t}0¶nË~~Ú×T´·é|Øæ›h¶9€ưæ7¿YÜyçÅç>÷¹bçw.<đÀâ»ßưnñđĂmûÎw¾Ó‚ê©6‹¹n|¬–ê¶Ñå¼z{©ÓhœV½N9唨muÖií®Køá‡ÿ÷_›Nù́°ĂÅvÛm•VéçÎ[,^¼8*½±º²vS†§»ÙÏƠ ¤Î®R9¾̃́ÙLo°È1T€`e=u!¨€ à| 50Ü)BªăÖ¥Ø&J2£´®ÀÚo똀UNˆö[”Ó®¡ ˜,O;ÇÀ×®­ư₫„P:ן@©,]Ó/·ÑW›¹Ø̣÷£¿¼¸–Ÿ̉Zwa~U¦É÷ëV`ê«`SđiƯ‚°ª5èJïŸălx́‚ .(n¿ưvvŒI¶Hêº_}ơƠÅ¿ÿû¿°Z«ơÿ÷‹³Ï>»ØØM§nÅZ;ö׿₫ơĐ6E‡÷ØciƯév)®¸úºlœâTœó&Ê1®«ńê»ưó¿ÖxÚc—¼±xÅâWFç{è+/–¼ñ¸¨ô‡º8*]§e^9Í,ÀÔ`Øh€<†e0¦ưIZ8“₫×~[†Ç,\ç„KdžùØXÛï«Uví°|:Oê_§l‚¦²tÊËÊ–Ó"°a寭L?Ú¬ăeiĂ¥}Â7ëÖÆÅú‘MA­¢®6†ViüăoxĂZçÙ>`ơ· µéHi¿̣»–IœoØîVƯ„}á ‹¹®{î&ë­÷8€½ë®»ZÙ×¼æ5­nÅŸù̀gGyd¨ÛÅ_Üzè‡.m‹yyqçƯ÷²t‚Æ`›€̣¨_ [#¶ñfº]†́ßƯM>[ĂèB\fHí&¨%wp1‹wpÊă’ÖM:ƠĨuå`§6«*@m°6ópÀæ0öƠÊÀṿHÅ¥`ëÂ0ûùϾ8ä ƒM]·Å÷¯¾zq—ÁM&&JV3«ñµ×^[<ûÙÏ.÷¼çµ¢³¿ùÍo†¶iíÚO<±5.V«ewM9/́à´nªÎÈ'¾Îظ¶·¡T,+SêB<*k]†c–́©zÎØvƯ‡u}v `Ăˆ©ß­8„UØRóe)YØzÇ̀Ø£Ưr9®:øs†T¸Ùåjö{ßû^¡ơZ?úÑ[n¹eñ–·¼¥µńoûÛ¡l¿ûƯïÿøÇÅ„oA,³×ÛASÀNë¦êŒ|âë €mMă²`ØV]dưñ¤qf7üT«”Ùy1]©Ư¬ÂdW—ë`4³ªñª~·b«åw,ji“:•E`•ŸØi²'ÆÀvb¶ù§m`¶â‘́ếQn|ù[ÖZ«®¶u°+V¬(4±̉ñÇ_lºé¦Å%—\2p€ưăÿXüơ¯mơFmÀØ`ÛĂĐ7ïZ1’ï‘q`v ~;à÷wSÏq*]ˆj­ưº˜óbNưËj«Ưå¾w›€1¥ëV€i3 Û,Ä>€ZVḈ¸̉û3 ûc`-??}Ù̉<ưÓÚi¾×2¶ñg²I€ưóf›¿ßoÿâWn–ÛŸĐr-aâ§»gêf`ïw¯ëºă~ùË_nyµIœ4Öº[V{ß}÷?úÑ -½³Ï>û´º/_¾¼PT´ŸÛ₫đ‡¸>ôĐCÅ5×\Ó-€,5帰Ơ_ư•›-¶|̣H́÷ô`q¿½­ĐwS¶“C>lt3}ªKÙMàÈ¿ÀäŒkư~ÁÂg¬dËKƒ'm±å#n™»£­¥}®»7tưáf#€ơ£ f¯tÿ/v[‹-÷zsc°íƦª±faÓïB¬(¬‰5X,Ë·*m§€Ùïôl¯ÑăÏo`ị́W·₫èï₫ơUÅ/™éV3î^tégºr$C€ưÄ'>Ql·îº…u!Ö=_î¶M×^»xĂ‘GßøÆ7Ză\ëV]xúÓŸ—]vY±ƠV[¯{Ưëx xôÑGƯ®ùË_ßÿ₫÷Åm·ƯV|éK_j½;ØÁĂ«€M` 6›Äo»³ăún2ßÔó`£Ûi×y§‘`Ѥˇ-O æE[ [­@°æˆ:}ÔmKÿºÚjû4$t7Ù¢usbx èz·´E¿akù—F9úuM¶‰'`Ơ<ú°₫à₫Æ-ñ [FcXΗ&)Úm÷=»Z:¦lc^ùÊé®ÄÙ׬±F¡H¬º?mĂ ‹sÏ=7`­?ûÙÏw¾ó-ưÈG>̉‚Í^7ëŸÿüç¼̃{ï½Å7̃ØL €¸í°é́(E~‡ơµë°ÑítS}A¬D`}§³́o²+Üv;¶m®fÀ̃-¼°Í?uƒXÿ]̣‘Ÿ}n1Œñ²¨hÇvîxÙ˜ªu`ΟßêJ¬1°êB¼•‹:»V¤5+ñs×Y§8dß}Ûv!¶¬́ƒ>ØÜrÈ!Å®»îÚêú/íf¸ª»đÊ•+[á¯}íkl"c¥Øx€=ûœó‹}_pÀ*?|i½Ơ]vƯ­µ}́ă—¶)Ê©ÿĂñ³:×" §½çŒÇ×¹Ú¯sƯÛµơí_OùÛµ´_ăÖ Ô”¯Ê¢oS:uöRûư2é~,¿0í°Á³©ë°Ñí4- k`ë6èb|‡‹ÊéöMädZ£ °ư|¦’/Ûü“6h€îb¼æŒâѽ¤x¨Ën½Ư:[r@÷ú§½;Z6¦ `5“ºÛ2:»Ë6ÛLGf·wûéOºµŒNÙØ2€Ơ7øª«®*vÚi§Ö²?ÿùÏ M¼³ưéOj«º!ëºßüæ7ØDÀ•l}äÛ„ öÔWûL;ÁŸ Qû́¸A¥̉ F-­öûăiơw4 @:fI+­[‚WËS׳4ÄVV¥QY¬<₫5ụ̈+_K«² nư{ëö–Úylt; ÀFKE¾¬&=r‘É‹Ư¶,ămE'À́ÅféâÛo3`‰À:»£ßvÖi₫îy:hïV_ư¿vQIEF{Ư₫ê¢Ư¼C₫2wƒâ·¯=¦øÅ-Ë̉ÅøƯï;«8̀ÏuüªöÖ[o-^÷ªW/]sÍU–Ñùÿ^ûÚVVăb÷̃e—®V«í½ï}o±Ùf›ïÿû ÁiƠfWu¾ÿ₫û[3+›2À̃ăf­¾óî{£ë!¶¾ROG¶>kp((¬RíTZÄT p-½@W›ư¯¼ªf8.ëB¬¼”§oOĐÚgçøy†eđ¶  S·×NËÀF·₫l´T$¬Qàbw¼»±UăG»qær>Ç9à+•MÙÔØ|öxêæ5›º¡æǘ7Uv÷ËBá̃©ă“O}W<µدưë…ºoâÖS,Ú,Ä;l±E«{ñf3g¶ÆÆF`Ơ8Üt®"± .lu¬ú›"®ú<̣È#­ÙµMu'ß7‘Ê€Í`́BÜ55—Í8ÿÖ±ø—+/¼d Ëï^æ® Bu{ÑEOÊSVØSN9¥xµ‹H¿ÿ O(ÙË:Ø÷vZ«û±³Ë–-ku+^´hQñ“Ÿü¤ƠUX‘U:E^SX?~“›ÈKđæÿÀÖw«µÓQHgPhƯmư|°‚G¥ñ7?ëܰûp6lsvÀFûl´T$D6 tâ@OÍL|¹;GË́Lä$, Àæd¯ư.ë°ÆÀjfb-³ó7)J“ÙÄñNáU׬XM’¤5]ứ-·ÜR̀uÑוºåun¾ùæVdÔ_6«™ˆmûçư÷/6[o½â‡?üáô>;öḘ;wn¡ñ²ZÓUß)¬f~>Ç­ ¬1ÇU½&ØæÀ¡‰çcØyø i“5ù]€ëÖˆµ ™tnØư·›l8fÖïVleơ×y­ëB́ѶÖưº>Ưj°ÑR‘zXuÖr:«ç¶Ö†íª>sX­Ơ¸ă;VÎ×ÿáÚ°e0)Ϙt©L̃dåålWÆÜÀIƒØ?mµMk9_\wKtô³I'«xí`5₫ô{îY¸)ÓQØ*€ưđÿư¿Å¾ÏzV«û±f$Ö¶è/(¶]}ơâÍn<­íó¿7ƯtÓbụ̀å«DhS‰À̃àÆ2kŒ±[¤½¶+8 ÀúÏx ơÇœ*u-¶¬Mdy¨û°̉”­¿Ṇä_WQ\ưÈâçg]–µO׳ÿ­‹²öé•Q_ë>́Ûơ»ÛùJçÚdTM¾ăRÈ €n˜Øh©Hˆ́Ô²9roéÉÄ[ØD °'Ÿ|r±ù曯²½á oˆ^Ʀn]×đøsŸûܶÀk ¨2éÜÔµ®<lOÀªyô`ÿè&ˆúơ»Nê°rêä`v̉mØw»‰À `µ́̃n–b­»©ƒ¹»îºëqد~ơ«Åönü¬@ws7ñÓIo|cqß}÷µöCnŸƯpĂ ƒX́í·ß¾Jt6€¸VE[ÙÿØØn½&°J6R+ƒ-IcåèùËăØqƒT™;GûÊ"µÚoËî”Ư·Í2́/£cƯ–•_x-¢)[¶ŒNØ ÚÊÎ2:Í·g™åÀfVa7Q¬ ±ƒÖ»¦ÖzmºƯù.=́= °‚UÁ¢™€V̀?øÁ(x́`u­Y‚lÏf42ô`¿ß₫ÅĂn¦ßŸÈ ³Ư¬€uS× Xt½~­µ“O8a€ä.˜7¯u\ó<ê¶ă\·ăo\l·ơÖÅR÷ÿ•nÛËơ˜øéOºÊ&€U×eA«¿¥0Vp&Í4QS]v#°©A㨕§löà~ÜcÙ¸Ù~\'·<‰ÀF»l´T$D6 8j¡Û)~F`–ê¾kQXl³:¦È̉ÀêÁ¯]pÁÓ€®ùù©›°Î Ï3€}Ï{̃Ó:VÔÊ«́\•Ëʯ2i«æ¦ëÇ·5̣CFF>Œ25 °ZÓơgnÜcnW]y{Øc]àS\W`Ea7sÑT= ° 4÷r³ a57û´Ö•=đïÿ¾5‹±Àö™=ÿüó°9Û6ÔS³+2Nà¤óXº×=·®À~Ô³“ó;I À–Û.Ư’°ÑR‘̣U`$V0qơ££T9yÚwđÁ·6?‚¬Ạ̀̉¼ê¼Ă?¼œ:×ïB¬tÚ§ăÊS0kÇơ·ÎƠy:®¿}ÈƠÿÖ]YßMj]>lóp“Û‰ó—SÚ^ö+_ùJk)è+”~úé-€=ö¯(̃å₫×~m¯wº½ën|yÉrJ¿C«Ù‡µ)«uh5”¿¥°~]_ăÆ?k6âílßzï°l“ï ÔDI¼iT»÷R'lt; ÀFKEBÈW‘XëBlQÔX€ơáQĐiÚ`}˜ ÁĐàÔöûyj_¬Z´ ¨ë€³éă ¬ă>R€­ˆ^ö{î)é–ØYæ`í·mçÀó?]Ï‹\4Öàơƒn¹Wp@kbµçï¶[±½ƒÙdµÏ«9¤¹Ơ¶É&›éX³‡[êëÀs¬¥uî‘næ½8üœ[ÿ ¢Q>°Ñ¾- k8Ă'ñIPlÖ"¨6™“éŒX ­€Đ&†̣»(úĐ*HÖµ§á¸Øp ¬A±uö£°ĂªA€•6|بîν́»ßưîVôƠºoíUă]ơ¿Àv¯í·o­kp*Ưn₫üU Véwvăiùök_ûZ+n¹,P’”PWÔU¬ °Ñ®…%²Ú¼èÔ$Djœ+‘Äd»ÔQ‰Ù¬ÁbÙäJƯ¬ÀÔ ¶]V°©´êâk]‰«´` fØÑ{6‰ÀÖ;¦1«Ù„ưu`5A“&qRöÛß₫v1×́J¡Ç»ñ°tÑTÁ«ûù½5‰“‡QÔ—í·_k'‹̉́îöÔ§¶̉*«µeµ®l¸°ơu댓-±Îl€=?;J^6á*Ê`«º̉–uó ÇÀ†Ø2Ø,‹Àú×4еµ_ÛE`ḿl»ÙŒ‡5‹1ØæŸP¶̃9k°₫đ‡‹]¶Ù¦ØbĂ +ö»ßưnñ//|akYRÁ́?<ñ‰…ÆÈ–EQ_ºï¾«¬ÆÁj&ă­6Ø øÖ·¾ƠØ›nº©¬–mßùÎw A´ Z³+Z{ă7×^{mñ¥/}©ÉưÜç>Wl´ÑF­êÎ;HG]×{·›©Zcy]®Uoïh„F½ØÛ|;M(P£›°‰Œ$ÀZw`Á¢f¶IlV›ÄÉ&`R:üj»¬ÆÍ„Z:û¿ÀÚLÉ₫¤OÚNâ4ŒudØæŸP¶̃Y-Ø}èCÅÎn©›=\w`EJ7qcZ«"°Ø×ºI›₫ÿ5לؽ]úw^qï½÷–n°̉ªû±f0~ë‰'¶"º:G«ơaƠơ¸lK`Ă œÎLâTo½Àç¢ï m€m¾&G`óµ‘XƒE«èªºüú«ÿm&`›ư×¢«ek³Û´–·̣h×…ØŸMXùª{³[×¹éɪ̣`›€ØzרsÏ=·ø‡­¶*vwàªñ«Ö¸À^zé¥Ånüª?îU]˺ÿÚ¾—<ÿùÅÓƯ;ZGV3ë™đÓÀ ˶Tvé…—T.¡ÀÖÛ̃ áƒëQ'½ÚÛ|;M(ÀækYl,ØY×̃vé=m×­·êÜ^"¥º^LÙbï³×tló0[ï°úû;íTœŒMU”´ `ï¼óÎb+×UXi¬û°ºoàºkáª.Àg½ï}­¥­ª `5îVÙªm]ˆïYñ@+ªzĐ‹^R¬¹æŒV÷ävÛ1¯c«ñ8mW\}Ư¦ªîz)ÎÆlóí49¢›¯ Œ4Àö văr>Ûü ÀÖ;y>À~̣“Ÿ,́Í"\=Øơ 8j̉&¥}µ[ëuûµ×.Nq“9½₫裋ïÿû]mXgƠDQUÛ ö¾ûWo×éÅ^ÿ´w-¸Ô>y«mƯvßs¬6ư ÇsơÏ95£Û|;M(Àæk¬ëB8. JâÁ=¨l½Ó}µ[ơdAµˆªºïïÀtÑ>û·Ưv[kVaÁăÙgœQ́?kÖtº÷»ơ^wËZ=ÍÁçåîu®ĂZ·_»lÙ²â₫çÚnĂÄI‘Øsλ ‰å4¨ÂăØM7Û€%;²Qxvpí7WB)˜Ä)aS`Ø‚lóO(Û9À^wƯuŖ믿J·`Á́8@Ưa³ÍZ³ûª{ïv®ë°º ëØen<ëóṽ¹5^ơ¤ăkÍ(¼·ƒ̃|ä#¥cX«Æ¶Ú₫7̃¸5ƒ±`¹Ư6,€ £Y]ú™̉±°l½ưD£œl€m¾&G ›¯ °,ۇ瀭wËf!ÖøÔư]W`ëBüz×%XKăÜá¶Ü>mÓM§'ỷ¾7ß¼µü&Wúú׿^̀9³5{ñ₫Ï~vk_§›öË_₫r¡1¶í¶TÖwÀ5ñIo}G±Ư‚íÇrb"°ơÏ\NÀFYW­O6º¡>Ă¥œˆNMB¨V€lÂÖÀ°lP¶̃™®ZöŸÜLƯê ¬ Ötă\7uccßï¾²Wz3ïäÖˆƠ¬₫dKW¬@VƯÛMÆTvL{Í5×´–î©ÛR\vœ~¶₫™gûÈữØè†Ú5«É·åƒ½*Àöª`ŸÏŸl"uC½̃9ă>4ÇûWƯ¹M/ư^?“ÇÇ)ÀÖ;ÓUû™Ï|¦ØÊAë]S³k]ÖW¼øÅÅÖnƯV¬@VÑØ/|á {ß\pÁÅ® ñë\WâßüæßGØ«¯¾º¸ă;j7¶¾ lZơ1Ⱥ‡k°Ñ®- k`ÇÁDØ|'ƒ`›BØzgº `o½ơÖâđ—½¬xßê/££1°Ï~úÓ‹Í\ăÿüÿ¨œ%X“8)‚«IÚÍ&\vL{ƠUW·ß~{íÀÖ×ñ Á€M«>Y÷ăp-6º`£¥"!‹ ¬À°î1 ;ơ.`ëiØÍÜMZFçæ›on­á*€½é¦›9.⮫ÈèÅ_ܸj;ú5¯i-§³½‹â^vÙemÓ†y`µF³ºÇl_ûÚ×ZƯ˜µôΗ¾ô¥Ö¹í6Ú¨5C0˺ÔÛASđÀNë¦êŒ|âë €v´Øh©HÀblÆciŒÀª»ºG-e¡%aæÎƯ z«;à\¼xqqươ×·V2½ï}ï+63§5U*iVàºåmt\³Ïu3ÈåûϸÊ9ưèG AgU>Ø+¯¼²U†˜ €wÀû +l:uÑïºÇüØh×¢ €pW;•-[ &£­¥}BçF¬¶mCy‘Mª %›ªm£\D`ăœéûî_Yú’bu7I“@v]7~ơôÓOo¬ºè~âŸX`ë–·±ă{º®Æk2'ÅU>¶ÿE{ï]́ºí¶•Kä`¯¸âäÆnD`ăêºßĐÀ¦Qư®çqÍ€nÉ›ØÉ9sæ>ú¦ăN*Ø̣̉àe‡¼¼˜={¶[¤€ D*À°‘¦2ÉØÎœénY^<óY{´ VÛ;́P|êSŸjM¤dX-—»yæ™Å₫® ñKÀ¾óïœ>O»Áÿù?Å[O8¡4/uưưüç?ßêλ°Ơu¿€M£úU¿ă/í:4° >cå¸Û\÷Ùg¯`£¶À~ơ‰O,ît³€²å¥êÎmM̀B̀Ó0¥Û3½ôÂK ÷Ë÷4ÈvØa…f!®[—5<®ñ«›ÎƠÉx²G»|”æ…Ï}n«kñwL³‡ç `?ûÙ϶Ƶv²1¶»ún̉A`‡_MÖ'y±l—ûĐø¾ Ø.Ÿq>m ‚lMQ¾ƒÂœ6¶Á€í¾U·â%o<®xÂT·âu€¾ûƯï®]—5\·UKï,qck '»uaŸñ¤'{́´SkØ›Ư¦ÿĂs `Íll÷ơƯ¨°Ă¯ƒ¦ê’|_—D`£h€¥ qôă’wÂÉ&ïfï9ƠÛ2¶<5pơwdv@)ÀöîLkß½³÷t4vë­·.₫û¿ÿ»X¾|yÔ¦_î v[vGÀªmîk¶ÆÆ jßâÖ]âf,öóÀ*2ûƠ¯~µ£ €í½¾{…vøuĐkr~u°Ñ̃ À°ÑK¾ 绢yË·₫(y¢ °Í9Ó]ú™b£7™Ù—¼ä%-¸ÔøØ˜MA)Úúr²êR,xƠöèTWâË/¿|:¬₫vº±ŒNsũ ÈŒ+ÀªËÜî{́½=m»Ånn¼yƯ9»=k÷â©OƯ®6̣ÙqÇíl•Vé•v—gî•₫)O}ZTºNËđ,W½ïÆÖ†qƯذ,ư¸ä›€Í·î(y °ÍÂŒºŸôÖwLw+á–É9ñÄ‹Ûo¿=z{ûÉ'O˜Xb•ƯeË-[3+/¬Ö]¶lYÇÛlw ă °%UKPÅÚ¬fúÖZÊuéÏ:ë¬bÂ=/uét|¿ưö+öÚk¯¨´J¿á†gœqFTz÷J×i÷¼} ­EƯ© +=Ưà°,ư¸ä›€Í·î(y °ư™;ï¾·Øg¿ư§£±O~̣“ ­íª¥rb¶ÿéŸZc`- Û뺿öå/o/€ưä'?Y|ùË_îx`ûSç±À0Î{Ê)§±Ÿu×U¬X±¢6¹ÖdăÖaùqÄÅ¢E‹b’¶̉l²É&-(ù`c>–á°Ă° ·¡= €`Ø \N`s©©<ÊÉKcªØ₫ÂŒºMn²éfÓ »Ï>ûW]uUkưØv[À^©ơgÿîïZç `/½ổB0ÚÍöÅ/~±øÜç>×ÊG·ÆñÆéz³6ó ·Ö2+¥Ø<œ.J À°Mù¢nÊŒƠ¶íÂ9e °yŒ.!§S€í Fbaîíï:½˜1c­,ª[ñÑG]h ªÍX7qYk‰ƯäPçœsNëumÀ^}ơƠ]m̃xàÓ`­ˆq́½®7›`ØN¢À́È6Ơî7ÉƠæơxw“¬ÛÛûxXíYĂËè87aµÉm‰Óû¤Û'aÇ4[–́ÀMxà †FAè‡>ô¡âÖ[o}Ü&€uÓmOƒk˜Nçj¦cER;Ư=öØBK₫Lklâ°ñq¼. À°cêy4Ûl¦Q\¶ù‡!ƠØTk&Ïr°́Đ í«¯+¶Ø̣ÉÓ û̀g>³øÂ¾Ph9ÛqËê(â*pơ÷ÛßXÍZ|å•WFoZ£v«­¶¾®–₫ÉivÓQ]€`ót,5 ÀÊ,‰À&øpZ‘Ø„+'Ă¢°́ĐÖ@́Ưï;«XËM̀¤Hèđ„⨣j-»£™†ë6́E]T\qŵÛùçŸ_́¶ÛnÓàºƠÖÛẒgT€0·û`X6C¯!Í"' °ß¼kEqơWn*Ưn¼íÎFÚŸÓ̃sF¡-·6@å%›æƠR°ưPu|ó`Ø$½{Vk÷= Á1C:3U°,;¾ÎGĂw=À*j‘Y®ßV阺+Úêw?V÷aEzíu[¶ü´©µlĂOBÂÙ° WN†E`Ød¡N‘̉Ăơ4„jÆàÓN;íq{Á—_~yk[ºti±ç{NŸ³Ùf›K/¼$Ù{LÍ™dyX€ÍĐkH³ÈY¬ÀU ©±²ûø¥­nÆ~÷bë~¬}J£o¥±÷uÙUzK«c)w/`Ó| úQ*¶ªo,›<Üi†àǵ°Ó4”n·Ưv­nĂ×_}1õ¼â£ưhk&âC=t•eqN:åÅ}÷¯L₫₫ )] €`Øñu>¾ólö́sÎ_Fmb#ª"©ú߀Ôë¸àOû|€-Ë/¥÷~X¶á'!á́Ø„+'Ă¢°l6€wÎy´&`R·bm/vḰ̀;·Đz®YÛÿ¿´ĐZ³)7Ú”íÑ€`Ø ½†æ‹|¹Ër¢Çl³تq±TE[ `ĂnÅ:nûüêå`X6»¦²î`Um§ V0 ÀfÚ“¨a€í‡}’'   ¤« À:0¦v, À¦Û&°dƯ¬xÛ´ ÏH¬º§Ü ¸—¶€à“Æ¥PFO€í¥æÜÎí€`ØÑkK»¸£^V—;Ímç.XøŒ•¼‡;[3¶‹'†SPPÀ`ókø†ƯđrữlFûê×S¼é¸“Fb;ü•GFƯÇnnù§ă;.^]ªu×U¬X±¢6ươ×__̀™3§6qÄE'đ¸É&›Ë–-‹ÊÛ½S£̉uZ†ư÷? Øgßư£4NÁ¦f¬µÖœpÛ©lm5XÙ€N÷Í7ïw¼“{{'C?v|üpơơ_4>·Ë¢À``ókø¾y×̉Ùkm¾QíÚƠo—^xI60RDK̃x\qđK‰º́ë_ÿú(ÈS"ö1©÷¼}ØÑ„á^öÎK¸oΰƒ`ăă¦p•ù®ênÁP AØüVëá… À÷ºÂüGyvÈAk9.× ŸrÊ)l‡QàĂ[\œyö¹Ù̀¿̃́Ù¸&J>Ÿö ổ…XA} ]ˆókĂơÎ`ÇçơÀO]s§T€\ă'è|ö ,́àê¬×ºâü¿Ơû»wÚ…€`ƒ8ØKu °¯û¸âô$N£ü₫`û° ój́0ƠçÚ#«@¿V ‹[#$đ̣ÿ·ưê«cepgût^x¼*?åkù)ïNA»VÙ¹–oÙ}ؾª² `Ï>çüUîĂ¿¿0Ϫku°U‡~ÿG>®ÊêÆÀVƠƒéPV¯í´̣íÅ®­ï°>ªl¦Óú&ư`~`Ø‘mH»»±nÖ‡W]u «÷ơ¾/8 ƠóG›₫fIoïM¶»‡&dzØk-Ư2Ó}ªnú °—T£§¿Ưe‹₫ímÓP鳯Ñí;äĐÅÓ §₫ÿØÇ/måU–Ÿ`ÄéÛ Ñ EỌ́k´X#mçêZ–ÖöÙ·̉ú°¥ưÚç§Óq5₫*‡îƯîÑ.¼¿Økủ…XĐlúÛ·éëÿoơ£zïÙêÆ¿×²zuô5xViUvÿ¦›lÅ~œ°û°̣•ư ˜öæ`5­ À¦ë ¥dƯ¬ ºĐ+mßÖÚ/µö£¡Ú¿ưkú]1ù5 °êNîÛÅP ‹–+ÀbM* ˜àăÀ 2 |Ôđùđ₫­4À³ÍĐ¢zR??5²>)ÿx;€µ¼…ÔơTf+Ỵ̈ôlS¾:Ç J eÿ+ÿ¸̉”u!6³k*]̀µbÖÊéGAu©æœè>Cm”οg¥±rÚUơꃿiaeĐw;­ ¸­ÎCgI×6•g*-P­r>X–Fw–ºÿ&zÔ¤ï¶ö|ûm–ßë©Ó̃IaÿưQ×CÈ®e=Œü¿Ûơб̃AaYuOv_M ÷iâ ́2gG“=Ú§÷I¶OÂi¶́TÅ`ưˆk]÷×2€ơ'¿ÑóaΠÑïz;öÔ¢ÅeNÉ5Đ´ÈbÙ}ƠƯK;¨ÄùåÔ¶»VUCiPêë¡H¦µ(¸E·ư ªº‰…÷VW¯~Ôi‚´Ê`åơÛî)̃qøơ>Ç{`Ø1ơ7úyÛ}ز¶/|ÿtÛ;É~(ö{MÙ¦öC§ß₫Ë—đÛ.k³ưFjüPa¤ØztY™ư¼•¿ßăË÷]~ç°ư|,̉Ê€M«>r/ ›ÀZwRW£o¿Ñá3`ưÆĐ₫ébB™ß`•A°ß˜ÖAY;X éíæZU«E¼CMüFÛ¢´¾cPU^»NÀʉ°kÊPÄƠÀ†d???ºmđêwV^áưĐ-ư(, Àæî8$X₫¾lD†mML¡v=nÂ,ư¨ßnXo›`ư^Ÿö°µËÖ₫‡?vZï û¡ÖÚËđä¦áUù° >M}*Û'aÇ4[6€ »ÙÖE-c¶ÛÉ%ê"°a¾~ĂƯ4Àvz­v‚i•₫̉®ÿ»‰ÀZ”ÔóN"°ö ºEưîÂu‘̃~8äÙ °́˜úư¼í¡l¯½“ *ChŒÀú?x‡C”ÂbơC§?–×~@·<Âo?ßưl?‹´̣`ÓªÜKÀ&°₫xÉ^#°Ö@ù ?.Fp呟.lüôë¬\8È~¹ éơó+ƒñË¢­Ư\«ª¡-ƒI¥µ_¹mŒ°4²û·c¡–ÊË[Ơ5Ü Óÿ%½€5'ÂïöFĂĂ:́f¶é~:'äưxè`ØÜ‡ËŸÀ†½ˆ:íä÷2 ëwuö{ñX{À&há#P$v*1¡[`Xẹ̈cѶ^#°l6&Æ,²_hCèôÇÓXĂæ«4~7ܘ¬?3¯5øeÛ͵Ú“?æÇô°û ơÖÿv_VkèUVëU×…ØÎ±zí`ư.ÍV^ÿÚ₫¬Ê~7e ±™Hi¿t`Ø„|€Q)J_Ö"˜6„£́ƯPÖS§Ó̃I–¯M¤h?H†ícÙØN"°ízY•uQî×».Ä£̣øÅƯ§©â`°~Ô΃đ×Z›W–?  ̉‡i•¦l=а¡QjØêf1,k ụ̈”å«F¶lLmx­²{W̃~¶ƯL‡V˜kƠ5´yüùù•éîÓ9a÷®˜zơÏ+[ăÖ/³ŸŸ@?t˜B`– (ƠE; ëtáøà €`ăgRu @ßÖ~ôơÛ-½í‡Înz …sØ{Øz6ùË̀YÛc˺…c`;Øp¥đưO¶Ë#i´l´T$ŒP€Àƒ„QÑ:ü•Ü"²ƒ˜XcT4Lñ>X6¢m&Ig ô`ơ.ñgæµ^1ö#c7=†|€ gö'ä ׉gĐج«{ »û½{ØÎŒÔq °q:‘*N€]e™₫˜2©ñ­Úr™×föï«]¶H3üRX6®y&U `ơ₫´µVƠă¥lÎNz …=x”gY)ëj«È©]ÓïÍSÖ¨®·ớ̉ơTfÿ^Y± ‰ö„Iœ:°̣̀“°™W`bÅ`Ø‘Ø&Ṛ>ÜC°lb~À°‹s¥+À¼ 10€‡wÔ ï€íṆ̃3:€Í¨²2(* À°îWơA6Ø\k¼ơ`Ø |ƒAq…»˜|Û^>l¦íÛ‹Ùçwn¯z~wL‰û¥ Ào™6ü€p À°ưjĐ3Í€ă6€Íô©¥Ø(0dX€cç<°́ÛưÔ.ÀqÀ¦ö8RÈC€]`5qCnà„.ƒ½Ül$¶¼,›‡{0°R°́ YÛ2—ÏdCy‘  @ œ‘pÙZ´™3×yđ¶åwu4RÓøÛ,·ƠQ[|H[ï¯.-ÇƯv6À°mÜ̉¿ À6°Ç;sïuB°ôŸJˆ(€¦ûhk*}M¯¯éôS²~”GP³̀­ñ—”#_HÀ.^¼¸X¶lYÔ¶îºë_|qmÚ³Î:«˜˜˜¨M§ëî·ß~Å^{í•Vé7ÜpĂâŒ3ΈJï̃©Qé:-Ăó·OqæÙç&ó>ª{×›=û§Å|ZÙZX¶)€­56   ÀH)0î{ö9ç·ÖwÊô¿Ö¥«sÔu|ØåÑơ¥Ó î—ëä ©íêné…—»ï±gô¶å–[ÏÜm÷Úô»>s7÷ oY›N×~úÂ…ÅSú´¨´J¿å“·*ṽå™Qé7Û|ó¨t–áY®W\}]6Ïí"°,ư¸P<Æ`‰´.²6î²ënƯú֦Ȭ"•ûø¥«8:Ç Në\EJủ‡cGí˜ëoßÑW̃Đ!t₫«Êcét]+g˜g]™Ô}Øï6­û´üẬëº&ṬcơÚ´ °Ñ. À°Ñ QP€†Å(‚8 î paw[¥1HUú_§È­¾ư¨®̣R¨†×4-s$ËÊ£tÊÊSl×·<êÊd@í§·̣똿aÚ¦^̣¢°Ñ±6ÚÅ`X6úqÉ7á Wô#ó->%G4÷lY÷ذˮ Ó̉°Û±`1ŒP*½EU}Ø•£æ§ÿË"°æÔ‡å)ëölyÚX̃º2ùPZ–ŸÖ†Ư¬Ñê’ºl̉Øè¶€`ØèÇ%ß„ó]Ñơ°óAhPöñă]ËÆœú «è¤ßư¶¬[°̉ !ơ»$[´µ ËSơÓµ+“œU?º«î¡“̣6é “p… äelt À°lôă’oB6ߺ£ä +À>~‚¢2€ơgí #ªukù ư-Ö16ÀÍ bítÔk?l€nđØ'm±å#Ö‹‡ïÇz3å°½ư]§³gÏ`£—|°ùÖ]%W—t>NqØ*ø g!¶ådÊ¢•ÊĂÈj ƒNué ·S§1Ø2  »%·+S­Ôºm§÷CzÀ ]`£]‹&ṽ¬Y³n±å§Áœ9s¶–ö ñi²Ù°ưPu|ó¼|o}Ơ;w€-›a×&qúëÁÚÄH>ß·ưÖeXyjŸ¥±ÿ•ŸMääoÙ$Q~₫eåñ'²‰¡ÂnÍ~7æ°L!”úùiL¬?‰“?S3à1ºàÑTƯÊöĂY¸›Ê{ĐùèyífMh=?á{bĐeÖơØhï¢ €¾ GZ+ƯƯ-é;̀øæØŒ+/Á¢k\""°-'3ß)€ó—Ñ1GĐf¶‰’l¿E;möá²et́˜®¥ô₫²<:æĂgèx–•G€ ëX~á2:uẻ}ûOùù)_R©²‰®†åsƯôº¬ ₫ ê­k7Û@–¿¬gG§yT¥ïÇ}6U6åÀF»g¸”Ñ©IˆƠ ,s‡&(MØ4ë%×R°S57îXëâBi™CgËá„Çúé¬vëX6U&Ó§Ûrp^úÀÙt `û5ÑX̀{¡L¿¦¿²¼‡¡o'6ÀæêQîŒ`®<6áÊɰh,»Jß0‚Yå8–u ́§³Ú‰ăvk¹§ºüíáAuçp|ü Ơ¯ó²IÇün¸êQ ÛÔf€¨ăeöª}vnLª·€́Ô¢¥á3ªÿĂëù½*ô·•Iß₫½èܰ;´å¦-{₫T6]»́½¡û±r•W/ ¿Ü¦‘ )hâùîdz ÀfèQäÜ`®A6áÊɰh,;í¨ÊA­¯Vå`ËÔ¹íÖq퇓X—gSe*sàë®ÍqÖº¹†ëëÇûÁǺƠ˜†]Ơmâ4³'çͶư=s¯´Ö·ŸÆ†ö́za÷xƒn\µD–MΦô6†¼ê½aăâí^mŒ¹•ÙîMe²¼”Æ`Ư†6è˜Êc°ïß§₫î6BÜÏg€ÍĐ#¢È¹+À&\ƒl•“aÑXv•HK?:̣o ·ú·l8q˜A›ơ'ó—ª’f7F-Y¦gYb³î§7€¶}Í´ÿUơÇÄû½+ʆTMđ‚t˜o»ÉăT–pñvîỐ €ÍĐ#¢È¹+À&\ƒl•“aÑX€ăEäSsúG©<6±X89¥¨¾}È —‚êḍ°2€-ƒÀ²kø“" ²Éơ#ÈÖU·“¡aÚ°|º·°×†ȾV¡m06Cƒ"£@`û«oO¹°=ÉÇÉ, À°Ø@lÀ¢ecamœª±~7\ƒÖ°ûpàWl8N´ $ĂY}ưrû Ú4À†× —¶²ÙÇC`ñgPØ„M€M¸r2, À/}€—:Đàøèw§6À »ë–-YÚƒuîṭ°*€ ' ËÂ`˜O°±ÅD`ĂI ÊºÛ{? ÀfèqPdè¯lơí)w¶'ù8™l¹ Œû2:Ơèu<Ø:#˜}¶$“qƠ>¿+­E^«ºØV­—là©ülb#wjùk–ÖƯÙα ü‰£,kùYäTù„ª\U“?)¯Œ îíºÖµÙÊêĂ­ôR¹ưq»íf@¶½3 ®;pÉă/ÀÆkEÊzˆÀ%Kèƒ øk@jÀe¨4¶iaºlßÄB¸ Ûy~´̉f¶k…́ww6˜ơ—ͱ‡íZ~~ºgX¶đ¼²±̉ø:øPó5̣Ë.ñ3lxƠơØzd*ÅÍî{^tj¢@µlÂÖ¡‡ü®„ËGṆ̃R€`—>ÀK 4elĵ½^UKÀTu¥¹NUáxS?iÇ:ÁN̉Ö•»]^M^§®M`£¡.¥‚3|P WØ^́óù}ΌÇG€`Xl 1°nƃZW9ơñ¤MAå ó`£)6Z*Ö(Àb"(0& °,đ’¼ ̉ÉæZiFiƠUÖ_ûµßơ¤kåǻ·.½äÀF{Ql´T$`±@)À°,‹ `Ø@Ă6ÀF;Yl´T$`±@)p*2<¦³§‰ê%¹Ô)6€ ËØh„5 é3!f‚(0> °8ºĂrt¹.¶‡ Œ °Ñ₫- QPPÀS€=( N±l`X6ÀF»l´T$D@@–qo {–³̀u5l -`£] 6Z*¢     À°Ø6€ ôÁØh€–„(¯3\ÑÏ·ø”̉T€.ÄiE/ˆ&QØ6³ °Ñm=- Q _滢ëaçƒ(Đ ,ÎrÎÎ2eÇ~±´l€n Øh©Hˆù*Àæ[w”Ơ¥œˆNMB¨V@;‰@i*À¦Y/¹– €ª96-çgœúÀ°œm€ÍƠ-¢Ü+À&\yl•“aÑX–5 û°dÎ7e±̃m€ÍĐ#¢È¹+À&\ƒl•“aÑX€`±lhØØ ="œ»lÂ5À&\9 €`q\v\‰^ơ½BC4̀ƯØ ="œ»lÂ5À&\9 €`XÀ°†m€ÍĐ#¢È¹+À&\ƒl•“aÑXǵaÇ5÷Èå'ú‰ ônl†EÎ]6á`®œ ‹À°,‹ `Ø@Ă6ÀfèQäÜ`®A6áÊɰh,‹ăÚ°ăJôª÷è¢aî6ÀF{DÑ)Iˆí`¶6áÊɰh, À°Ø6€ 4ll´Gt—K9/:5 Q Z6aëĐC~GÂå£hy)À°8® ;®¹G(?ÑOl w`£¡.¥‚3|P WØ^́óù3úœ?Ù, À°Ø6€ 4ll´#ÀFKEÂXLÆD€ÅqmØq%zƠ{ô Ñ0w`£½(6Z*°Ø  €`X€Å°l a`£,6Z*°Ø  €XŒ )0sæ:̃¶ünœ¸†¸Ü£(”ŸH 6€ tcl´wÀFKEÂrÇ'P PÆF'µ'•s°l(³6Ú}`£¥"!     x °8¡€6€ `MÙíb°ÑR‘PPXºLÓeÀ°>Øíb°ÑR‘PPX×>8®MEpȇh 6¯ °Ñ.- Q _&\ÑÏÈ·ø”̉T€.Äù:8ùÔ6€ ¤flt[ÀFKEBÈWù®èzØù  4¨‹œLy°Il _`£h6Z*¢@¾ °ùÖ%OX6_G'ŸºĂ°Ôl€nđØh©Hˆù*Àæ[w)–\öÄÇ)Àâ§æSlÈרh×€–„5 àÓ&l"l•“aÑ ËÜ—"°ù:8ùÔ6€ ¤fltS ÀFKE–¹ă“¨”¦lơ’k©Ø©`q€Ss€)6‰ äkl´[t¤K9#:5 Q Z6aë`®œ ‹À°,¥ĂR:Ø6€ 4ll†EÎ]6á`®œ ‹À°8® ;®DỊ́QwÔ]S6ÀfèQäÜ`®A6áÊɰh, À°Ø6€ 4ll†EÎ]6á`®œ ‹À°8® ;®MEpȇh 6¯ °zD9wØ„k€M¸r2, À°,6€ ` Û›¡GD‘sW€M¸Ø„+'Ă¢°,kĂ+Q³|£fÔu×” °zD9wØ„k€M¸r2, À°,6€ ` Û›¡GD‘sW€M¸Ø„+'Ă¢°,kĂkṢ!ˆ äkl´G4/:% Q ½lÂÀ&\9 €`XÀ°†m€öˆîr)åỤ̂A^`{U°çO¸¼UA|P  XǵaÇ•¨Y¾Q3êºkÊØhe­ ‰Àb(€N€`XlÀ¶6ÚÇ`£¥"aD`1Xǵaǵ©ù Ạ̈µ6Ú‹`£¥"!‹   H€`XlÀ¶6ÚÉ`£¥"!‹   Hƒá1fÎ\çÁÛ–ß×°G)ßuGƯaƯÛí]°ÑR‘°F}Üñ¨„(€c£Û½£†“‹vØ6€ ¬jl´ûÀFKEB@@đ`qÀqÀ±lhÊØh€–„(€(€(À̉e.ÓØ6€ ôÁØh€–„(€(€(Àâ¸öÁqm*‚C>D±|m€v1Øh©Hˆù*0á¾4ßâSrHSºçë(âäSwØ6 °Ñm=- Q _滢ëaçƒ(Đ ,pj0åÁ&±|m€n Øh©Hˆù*Àæ[w”D±|m€v²Øh©HÀb(€¬g3g®óàmËïæ€9lÀ°m€v²Øh©HÀb(€R`S€Í7̉A”ºĂ°Ôl€ö.Øh©HX£À®îø TB@±Q€ÅNͦ<Ø$6¯ °Ñî- QPPÀS€Í×QÄɧî°l 5`£] 6Z*¢    Ûó8¯ÔœFÊÈ`Ø@ 6ÀF»l´T$D@@€e²lÀú`l´‹ÀFKEBÈW WôËó->%G4  1Q›¢6”;ÄFĂØè¶€–„(¯ó]Ñơ°óAhPv4œFœêÀR°6º`£¥"! ä«›oƯQ̣„`qzSpz)vˆ Œ† °Ñ >- Q _Ø|ë.Å’”b¡†Q&v4œFœêÀR°6º%`£¥"aû¸ă¬›¨™°‰VL¦Å*2-wăÅ`qzSpz)vˆ Œ† °ÑÍ4- kXæO¢R °iÖK®¥`§j€ §çŸzİl€v‹ˆEKEB6_`ó­»KÀ°,¡Ñ‡%4Rp ) ‡ ÏØ]Ê4â M¸‚Ø„+'Ă¢°, ÀbØ6а °zD9wØ„k€M¸r2, Àâ¸6́¸ơ^Ô íÑ>`3ôˆ(rî ° × ›pådX4€`XlÀ¶6Cˆ"ç®›p ° WN†E`X׆×T"@”ƒh$60<`3ôˆ(rî ° × ›pådX4€`XlÀ¶6Cˆ"ç®›p ° WN†E`X׆W¢^Ă‹z¡=Ú§bl†EÎ]6á`®œ ‹À°,‹ `Ø@Ă6ÀF{D“Ñ)Iˆí`¶6áÊɰh,‹ăÚ°ăJˆrĆgl´G´Â¥”oËzU€íUÁ>?Ïå½̉mª¤n¶ăkÊ6Ă_Úẽ*ù·¯—Ôô`X€Å°l a`£=áÍ]ụ́Wå·¶ûÈïêÆ_Ö9äß^»ÔôMF[ ®À®S¤JêtÛ6¢´äß^¤Q̉ga„=ŒE’™3×yđ¶åwăÄ5́Ä^íÑ °Ñ®ƒü̉N}YK/¬îC₫í5}ếă(€(0: °Ăsôp²ÑÀFÍØÑñ¸@@HRzÔhî›Æ†gl’M=…B@́Øzª›Jv§ÀưW€£‡“öØ60j6Àö¿Ưæ (€(0,NwÖ6ˆÏ‰î"×âB\#?XèQs ¹l °ùù”PbP *ØØZĂt́đ=œl´Ç°Q³v ‰Ạ́̃yîrkö’\ PÀ`±…$`q GÍæ~°il`x6À&Ñ´ª¢ö·m\P= Ë‚4—¹ư½ö>ÔơvÔ r@UVä¡S¼₫Öq{!è׿ôđ÷éogçà%#°ÊÛèoÿ\ÿÅ |ưréeÅg„`‡çèád£=6€ Œ °#ä ÄƯù¯~jí+ÜúŒeiă®̣·Tl§‘T  `µO»ºFèou“ĐG©6|9h¿>¸Ö¥Â€ÔØX?_kḈÜ£§®m×Rz][ûùÅ«AH%+zÔhî›Æ†gl*­ûÀÊ!ÔüU]T¾§Sä;ÚÇ¢µaÁä[j+ Ø>7Ÿ6Ø2ßỘ,»–ö)_23.4J ”́¤wƒaÔÔÿƠÊ èïª_¹́Åayévé¨úå̀^a´v”ê€{q °Ăsôp²ÑÀFÍرs-äkúAëµö,›Å‚$öí÷,”j¾²̣·c>À†~­Î1x¶<}PƠ1c½Ç®²¸aèU2€ơE t=pöđú/{XẶ(塾­;‡Em-½=Äá·°–O¯÷̀ù *Àâ@Íư`ÓØÀđl€M°¡ïo‘,âj (U~êd¶a@Ä÷kUBËÇ‚/̣C ñ£»Jgk½ ư t ?ê+ÿƠ‡bƒ[&ê¯Mû+Đ)ÀÚ‹@5XZë¶×ÿÊ»êăƒđWÇø̃;eׂؕ2©µ\ưnÅíVÇtp̀¬Ïe%%;–æÉM7©€úè‡KƯø¿$é¡öûñëÚê¡—@Ù̀iÀêÁ×s ó²|́~tÜÖ́R₫₫ Ee_0Mê@^CV€Å5ûÁ¦±áÙ;äF}x—†ë¼Z·^Áf蛆KDÆ‘3µ̃†₫<-~WfS"6Gvx6•QP Øá9z8Ùh `£fl3ms†¹RƠ£/ z*ĂùWt{·6±’¾ư†uXåa½í6æƠïFLâ ‰"£  @[XèQs ¹l °cët(̉YƯ¨¶‹z >ƠÛ¯¬waÙyá>ç÷`T9²Ê3LKôulÍ“G)fMLÜuÅƠ×8|ĂsøĐí±l`Tl€)›A@@ô˜9sæß₫®Ó؇p GÅæ>°el`x6À¦×ÎS"@@5?êØ%ÂáÇöh `£b®Ô8H>(€(€(€(Đ7pĐ‹ç‰û°l Üy÷½ÅZk­ơpßZ+2F@@@§À®[o³íJ¾á8|èîØ60*6pÍu·? eE@&Ư­ø <çrgµÍfxÓ̀n₫”ä¹Üål£Àß­¹æïîYñă`‹ `Ø6е ,yăqZc5ßIƒ‹(€(0: üü—s¹3­Í.í/ Ë}PÎ Ü/æ—yö¹];-£=à>ˆ„aØ6Đ½ l¶ù¿rÍ̀B[@@ÑQ@ X¶ÎUêwª@üôÔ Mù:R`Ñ̃Ïßïa·î7´C;lg¸mùƯ…Öï¨å!ñ P0â¼A_t ®'?Y>>9&+Œ[]rơBÑVƠT–Ö¾cØ¿̣ñ?]µ4úö?áÓJŸcWè‘3ªohƬY÷ËgŒ{@°lèÎñêß̀˜1ăM ¶KdƠ¼‚¬Đl₫*ùç(ßÚ†ÎÅ̃üâĐ=—t(¬eЧ_Ádđö‹˜^,U«¦¦WäS›₫Öù1«ˆ©u_Ö9:×麖Fyë?Âje4q5&–_’5µ® vĐ{₫ă¯p̃ºs̃Đ Ư°l`\m@³¯½ö¬_ºÖgF×-'ö[ù}ønq*‡~òY ö܉Q4Y) £ö'?xêEâÿÂ#¸¬êÚvÛUºØñ´á¯Hძ~Ạ_re+ç¬*iÜ «Ù#5‹ä¸:aÜ7‚ `Ø@ç6đœçîóĐ:ë¬ọ́qoC¿&Ê&áTO@h¬÷ `Úÿ´ë%(0”{ÀÔùåÔ¾²ŒÚ¯sôÑ·̉„× ưg·st̀;úÛ÷u•®êî$₫P¼î!Đ¿K°^,U¿̃Xư¨h'k%ÖĂ¥­ `µß>zX¨¶¯́—(=Ü₫9Ư©ÂY©)°p‹-·úÅ}÷¯b™‰À°l Ö>rÁEœ3gîu©5f”çq ”ùrƒê (đ“ßh¾¬₫60Ô>ư/Øzú€©rÛæ÷@Ô>ưoÇ|_Wùi¿†äÓ €ơ‘ïêû¸Úç÷’”/®ó-;Ï‚;~9í˜]ߘoä°Ín¬ `µÏ~ °G«=́±P;׺Û‹¢Ưç?„áKÏ«°#g¦«­6kÖ¬—́¾çä/‰Bt…@34ðq²ơØqđ*®Ăéûª'ßÇdO@ƒÉP¥É)Pô‡Ï•ơô#ǹæƒ*âêû¬¨>\¨Ç¬̉Tnüùùé:₫CW »A”u!î¤́u÷ÆñÄØ`ƒ ̃ơ²Eỵ̈ëqrĸWÀÀ°x¸á–åÅ“¶Ør…k¾æ'Ö„QœrÂèà {VE&ưÈgè·Vơ´rW¥/ëÊëûÜuØ2€µ<ư^“̉~9ÊÀ{D¬R‹bú¿†ißäÔ]êoA«ªu/¶‡Gçùk“;•‰äÿ"ä?„–ÖºIø×̣í H•€ÍÚë ïÆĂ°ăN;ỵ̈Ôv!Ăé‹wúĐ ­°l w¸đ—ÿã¼ ¼Ö·¥ ¥ßf>¦5È€ĂXßom `ÍAZûù ÀÈ(Pö‹u“°¾ö~¤Ổ[7a›Ừë£_¾pv'ŸƠuí—$ƒY¿{²u=¶<«&™ÊâFS`bbư6ßbË.û́U@,cá°lsĐüo>₫äGŸ8gÎ-j"h+³R >6è€6ù’/ZY4Ơº6›Qº‰À†A¤¨m,­•-¼fX¦ª$ÈÊ@(, tjØz0꺗ưzUơ‹VƠơ«Æ̀úùÄŒ«Ơƒ]ö"¢æGSmgÏ}‡–ØQ—±Ü#”Ÿè6€ `ÛÀ™gŸ[̀˜xx½ơÖ?k4›º‘¿«p.–¦{*ØNjd¢Ú0:[Cđl¾¯ßKPé•¶]/À€µ¥&•ŸƯ§µÀ«̀¼ñVåĐÇÊ\6·l§?zä-l¦nîÊ6Efµ•=ÀƯä«s:aûªÛkq^¾ ´îºë₫D +GFë₫ávî¢aØ@.6pÅƠ×G»äOëÍưˆVr©k¾æåÛ„}ÉĂ(¤i²'`¢¡à₫́¾úÛÀ0,C¸ÔOØ °,ŕû±ÖƒÑ&<Ơ±0Oÿ”ñÓÔú÷¤|•Öï5é¯29uĺ FO×ÚÍéÁ°q°ö+PS¿̣(ߨ¼ôĐûl7÷Â9y+p™µÖZëá­·Ùv¥€öMÇTh{Æ;=²`á3V²¡6€ `yÙÀâ#^ó{½Çơ­º[{íu~ë"®w¹æêx·Íϻ٢ôS~à«́3¨€̣ƒ«zÆú¡u•éÙkw=åSwͲ²j_Ùy½©êî‰ă(€(€ *°«Ëë ·:µ-vß“lh€ `Ø@v6`ïñ%SuG´µÁÆ2‘¬zÖÏ€MÊS6çL“ùWåÅø×A῭5PPPPPÆFuµ±̃´~œîWOÀNË̉.½¢£a—á&ó/Ëk×́÷=‘?                                                                               ôG­3=ÙAÖJ«sø¤£€făÔ2|PPPPPP`è N­©Bi=m±­iXtLZBBË+LÆ^`*AYƯ¢÷~¶±ç(ƯÑn;qjoØaù”Ü®×îÜAÀ¥ê¤“:́âV9PPPPPêd ĂMÀ̉ĺ{ưX^ƯGøi5T¹́ËÎ ó([ú*˜³u«ô<½¾:VIaeÔwÄv ü¡•€íF5ÎA@@@@h\XÁ•Ea=40̉w/Ÿ~¬ÀR÷FRí¾ª Öؘè¢Aœà´,½®oyZD¸W=ư2Vư˜Àöbœ‹(€(€(€(€(•zeQH¨Éî¨ß[U´€UÙÎs› ´Ư= N•Fi«îÇ@Riª>í¢ÅeçèZ:ÇÎ++#Ûƒqr*          @^ ´ØvÀ¥q:W‘A}WM¼äŸ̀ÎQ”·́ă™ºÍú×(ëF+¸ô#°k{ç:YÖqm:f+—ʤtíºKä*¢Z°–G]´Úº!ÇD|UNXi«2–å_°̉YX=©¬í>º–îW›Ơi».Ä~é:LÀU#0‡QPPPPºW `}èÑß™5À²ÿË¢|ö¿uÅ »₫ †,­½Ậûi×°|üîÄ>ˆ U3UZÜ2€µ{SYê>v~̀¤N¦¯̣Ôơu?áưW¬éj`‘ä²rZ^~é̃ªV÷kiư.Öu _§ÇQPPPPP T*€Uä®,ê§ư‚<c?!úđéG] úÂȧåcÑS+´•'Œ^V•ßö·kyỸe“,Y>e[ơ…ï$­°“ơQ–ŸêĂÊé¯_O!l[}ø?Bè\¿₫üû°h²®ïG¶MË&&ă‘E@@@@@U0@3X̣#i‚Øefª@²,úi08̣¯a@VÖÅØ¢₫±&Vå)Ó²ưĂX•¥,̉[°qưPöáÖ7„ªû¯ê6Ư.jƯ®Ë1           t­@ÀZ·ÓªèeÙÅê¶́œ²n±í"”Ưó£„M¬Á¡±´±§>`}ø´.ÈezƠu‰ÏQ=·\¤~t8¬ÛN¢̀].'¢         ŒŸehàv×5u1ơÇFÔ•Eưª"{Ê«́ÚíàÇ@ËcÙÀN–@œ[å÷Ç«`}Í âËôj§¹̣ϱÊ"¶–̃·«‡p|­o:ÖÉ ă÷äqÇ(€(€(€(€(€+P€Uí£Í:+P©ê¶ ÀJ8+«€Ơ–Î Çr–ƯE’«Đ¯”:¸ Ó–Mˆä—s˜«k«î«¶‘PPPPPP U[5V̉º“†ÑµnºWu­̃•]£©¬4²¼ăđ“xeÚn™ÿtK;ÁQU7]¢¤vV_öXå+‹lûå®êB\¡ç‰C@@@@@¾(P€ºXÙƠªb»lỤ̀/í¹j©ƒ5*ë¶j]̉²ûđËTU÷¯ư*wƠú¶6’̉„P\U±UePzÓ®ëÿ ĐnY]»lvi»/Fa]§ª;yY]ôÅ@ÉPPPPPLv[Yl7pƠXí·cÖƯÔ(\ºÆöÄZzƒ²°KmUùưe€”‡À͇³*µû«‚ѪóL++·®ge·5mÛM”Tf‘íÖ@Ô´ơÖ@Ü4·1¼₫²8!DûúZ¹M[ëê—Ñ–ÑQư ơµ¥–xÊPPPPPP QÚ¬.d>ëªoÛg0§ïvXA§®cçtù³ ÛMYwU¶,½…Ưbە߇á°[rˆVu­:OåÔ…×´²Ûyáú¶í*³Àê<ƒN¥ó'̉1?âë_[«œeŸ°́§e]ˆu~¸N¬oeuۨᒠ         Àø) ¨d8ƠWAÀXv\đ"xô£oJvAƠ>ƒ+}+:§óªÆgj¿̀®3YQ5uå¯:_åª*C»cUzøÅÓùvŸú6ưt®ßơW:´û´+‡W—Fºé:Úª4ôË`éUn¿̃ÚÙHx¦kn“Ă(€(€(€(€(€(€©*àG£Ûaªå§\(€(€(€(€(€(€c¦@UW̃1“ÛE@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1Pàÿ·ß×Å‘>7IEND®B`‚nova-2014.1/doc/source/images/rpc/rabt.svg0000664000175400017540000010200712323721476021460 0ustar jenkinsjenkins00000000000000 Page-1 Rounded rectangle ATM switch name: control_exchange (type: topic) Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 name: control_exchange(type: topic) Sheet.17 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.9 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.25 Sheet.27 key: topic key: topic Sheet.28 key: topic.host key: topic.host Sheet.26 Rectangle Topic Consumer Topic Consumer Rectangle.30 Topic Consumer Topic Consumer Sheet.31 Sheet.32 Sheet.33 Rectangle.34 Rectangle.35 Direct Publisher DirectPublisher Sheet.36 Worker (e.g. compute) Worker(e.g. compute) ATM switch.37 name: msg_id (type: direct) Sheet.38 Sheet.39 Sheet.40 Sheet.41 Sheet.42 Sheet.43 name: msg_id(type: direct) Sheet.44 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.52 key: msg_id key: msg_id Sheet.53 Sheet.54 Rectangle.57 Rectangle.58 Direct Consumer DirectConsumer Sheet.59 Invoker (e.g. api) Invoker(e.g. api) Rectangle.55 Topic Publisher Topic Publisher Sheet.56 Sheet.60 Sheet.62 RabbitMQ Node (single virtual host context) RabbitMQ Node(single virtual host context) nova-2014.1/doc/source/images/rpc/flow2.svg0000664000175400017540000005775012323721476021577 0ustar jenkinsjenkins00000000000000 Page-1 Rounded rectangle ATM switch name: control_exchange (type: topic) Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 name: control_exchange(type: topic) Sheet.9 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.17 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.25 Sheet.26 key: topic key: topic Sheet.27 key: topic.host key: topic.host Sheet.28 Rectangle Topic Consumer Topic Consumer Rectangle.30 Topic Consumer Topic Consumer Sheet.31 Sheet.32 Sheet.33 Rectangle.34 Sheet.36 Worker (e.g. compute) Worker(e.g. compute) Rectangle.57 Sheet.57 Invoker (e.g. api) Invoker(e.g. api) Rectangle.55 Topic Publisher Topic Publisher Sheet.59 Sheet.61 RabbitMQ Node RabbitMQ Node Sheet.62 Sheet.63 rpc.cast(topic) rpc.cast(topic) Sheet.64 Sheet.65 nova-2014.1/doc/source/images/rpc/flow1.svg0000664000175400017540000010610212323721476021560 0ustar jenkinsjenkins00000000000000 Page-1 Rounded rectangle ATM switch name: control_exchange (type: topic) Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 name: control_exchange(type: topic) Sheet.9 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.17 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.25 Sheet.26 key: topic key: topic Sheet.27 key: topic.host key: topic.host Sheet.28 Rectangle Topic Consumer Topic Consumer Rectangle.30 Topic Consumer Topic Consumer Sheet.31 Sheet.32 Sheet.33 Rectangle.34 Rectangle.35 Direct Publisher DirectPublisher Sheet.36 Worker (e.g. compute) Worker(e.g. compute) ATM switch.37 name: msg_id (type: direct) Sheet.38 Sheet.39 Sheet.40 Sheet.41 Sheet.42 Sheet.43 name: msg_id(type: direct) Sheet.44 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.52 key: msg_id key: msg_id Sheet.53 Sheet.54 Rectangle.57 Rectangle.56 Direct Consumer DirectConsumer Sheet.57 Invoker (e.g. api) Invoker(e.g. api) Rectangle.55 Topic Publisher Topic Publisher Sheet.59 Sheet.60 Sheet.61 RabbitMQ Node RabbitMQ Node Sheet.62 Sheet.64 rpc.call (topic.host) rpc.call(topic.host) Sheet.63 Sheet.66 Sheet.67 Sheet.68 nova-2014.1/doc/source/images/rpc/arch.png0000664000175400017540000006410212323721476021435 0ustar jenkinsjenkins00000000000000‰PNG  IHDRpó ß HsRGB@À}Å pHYsÄÄ•+tEXtSoftwareMicrosoft Officeí5qgÂIDATxÚí½ ”\gy 9gâ3¶q[j[’­Ă X×hqÂ()Xăœ)Ï´~ÂØ=̣đ³:3mV±ƒqhÛêV9ƒ•x³Ty2^´̣˜‡°)Ea| #p)SK43:vâÚ ́Y¬9KHÛ0±w©½où{›·¿₫î­¿[?·ê©sÓU÷·ºïßÓï÷}ïû·~í×~ío@và€ÀÀT \ô*…¶!ë9à€À Gàe#qU¡Ëm, ½îŸ¸î®˜–˜qŸ æ}Î}Λågt¾ûœwËä¼í®Y×½oôơ@àÖÊXĂÉ–Fäê.ʶà̃ëô[§½sï+n^É-;ï¦Ûuơç¢ÛW‰“¸î®nhxbVñ–ñ>çMók̃6‰ºÏu÷¾®9'‡‹º N@ຸלé7–lt̀—-'e#p̣¾é¶¹J’¨!p€Àơ&p…˜y½\Ư[¦³n nđWv}Ü ®ÿZƯ_Îô—+¸e+uËfzCûÉ p \Éökóæ­Ëïæä¬dÓ†DoƯ2 ëÎ3ˆ¸áK`¹×NàÜ|êŸ7lsƠê¦8ư‚ÖFuI{+¾À¹ù“Ü7ÇÁn°çṢæÏxŸó^¿9[kÁ~@à#p÷¾ˆÈ5¼å뮹Ô~đ°ÊÁnç>KD­̃¥À•Íü%¹¢À¹iUÓ¿­́ú·¬Üy˹m̀»eVûÏ pƒ¸’íăæ¦å½~p‹ÚßÍL[Íç$N…n p€À p€À@ÖÎ¥Yô¦uT¨>íböîs屺)Íù†À7«xƠJ^¸Kî[UÑsïuƯª·́¼{_Ô* n›º Ÿw9æªn½’I LMU@à®àU_°"UƠ&V'dZ‰¡`̃Kơ…œB÷¾́D¬d¦åỤ̈E· ­â7É€̉îL¢ÀiI¬¼'p@áú‚'peI+º÷«bgÏÖ[Ơm‘¿ºÛG¸sïç@% \«ô–'pyÓ ªÑ¼ymZíRà*NËœ@€Àµ8÷¹¢̉fä«è̃Ï89› ÈW+rfDlµ¨½Û¦­£Zuͤ…¸¾wv¿\²ÀÍxWp2UƠ蜛óú»ULÄ­ 2ç n£l–«Æ\‘~p0×Lj&Œ†™™Ë¾Äyt+pG̃ÿÁÛ›ñ}†̀g?÷‰æẀá<8@à8@à˜‹«=j̣´-ºQ£:‚´¤©AÜrU?Ơ‡[g‘ƒ p€À æáTôÓ}¸é¶"CƯT^(zùƯ~ª ̉ pƒ@Ơµ@½‘ºº‘1_Đ̀ü†[¿‚À pĂ{@-zV1¶ÀUL"̃†‰ÊÍ#p€ÀÜđR˜÷%—½a°•¦iµáª8 p€ÀÜRU'a æĐz’øi.Sˆ8@à†đ*:¥ù^Î}®Ûz© p€À öA7¢´Ë»i p€À7„•ÈWΛ6c#ru 1Û™áà p£{€muM¬Ê6, p£áÈ}KÍ;-öµo­¯‘¤~·‡À7¸‡Đ¬°ey(]y啟߼yó™M›6u#Mƒlܸñ…BaEÙ²eË…¤åe{²ƯˆÇe?Ư÷VN @àzgÛ«_ƠºÎ|è¾ÖYÛ½÷†5Ÿe›ÀN¢c{å¡ Ô“³³³ß–›ư¥—^ú#°C‡½xï½÷6}ôÑf­Vk>}º™æK¶'Û}́±Ç²A÷-2(ßç̣Ë/ÿN$‚§Üí‹ØÎÉ\2"m"[ïÜ¿¯ù†7îèi²]²À¹¦Í‘¤ư®D¼DŒ$:vươׯˆ4?~¼yö́Ùæ8¾Î;×|â‰'Zr·k×®g¯¹æç4z'‘Áèư4Ơ·‰œ "6r½ÈO¿iôÄăŸY·Nụ̂©êªÀé4+p"ˆ̣¹×è\üĂdçÅ_\¾â+¾%Ѭưû÷_8v́X+â5 /‰̃IdđÖ[oưȨDgff>&QEN&˜f;ưÔ—Z¢¥r¥‘8¿yÔ¦‰¨‰́ÉOY^æ "q"tº Ë÷áCà{éáq‰DÙ¤?Y$n?¼îºëVxàæ™3g&BØÚ½$‚xôèѦD/ºè¢¥YØEçf9¹`îƯï¹eœ…d­ÀÅ5¡Ê|aJÈ4<¸îÛ¥itffæ{e“₫d+++S!mq¯çŸ¾Ơ,,ѹ 6|ß5µîä$ƒi8?â¦9+^½ \¨œL 5Ç"p€À…¤˜ô “¦Ñi—¶$™“¦V‰Hº•»„&Qà´Ï›mæ 5u"pC8‰)#3%Ú–ö¨Đihf•¨ÜÆ¿;33ó+œt0i'D¨D¶,̉¬j3 pC8I*#He$¦Œ̀äƠûëüùóÍ|Ïåµ#- LŒÀ©¼ÅÍÓ¼n!Óè’Àmذᖫ¯¾ú¯&e鸼$‚¹mÛ¶ïF"w˜².p̉ÇMdJú¼…æëÈR™¯²¦ưâ4mˆ8æ…̉ˆ pm.—˽÷ÆoükéăváÂ…æư÷ßß|æ™gÖɈLöK„RöK'ßyœ_̉Gî;îxîk®yˆ“²,p~Ä̀G$ÍFèt´ª¢¨2öñG~kuLCà:8‰ ½ưíoÿ®ÊÆSO=Ơúùæ›o^'"×^{íĐåG-îûÈ4™'ß9 ¯C‡­ qeë•QË%pRtçÎß‘‘/p"k?üpGÖụzúé§;8Ùohß2íúë¯ \;©KúÎIë¶ûÎíæK¤S«9an@à`lN*(øIxE^DŒ>ưéO·~ZÑñ%J"`"PÏm·Ưּ뮻ÖÉ–lKÇ®#ÓOœ8‘(pº¬|'}É{Ù/pö;ɶí÷ĐÏ*~‚ưư’ÖƠ¿‹Î—em“²Ưn̉ï$ƒd„*iFCàº8)%BÑ'5$ÛtiN¦Ë|}I´NäEû¦ÙeE¶t/>*híN¶o¿‹¼—ưXó—ñ¿‡¼·ßÙ~—NÖU”>w²_]W?í‹§ø(Ÿ¤‘\qœ€À!pƯ Ụ̈¡C‡^L8Û”ê ßÔ(Ó´ Q̃ëÀ#=Ó&LY_"W*p²?™¦X“åưưË+© U¾w̉w–m‡føëÚ¿Ih]•YûƯưˆ¡}I9®WnúĂ½‡kE€nxå›>¹øÁ÷!TÀ0ÿqÜ*]®`d̀úwä̃{ïm& œ¼¤)PÅ,$P¾ÀYñ©ñÅK›fm3¤ œíï¦ëØù*EÚ|ê œß<«ÛëDà’ÖU!‹8m6µëkÔ0ô:ö;Ÿj₫ư[çü¥Z  ~₫öÏœû¥;¡Bà†Ǽ́†¯¾ú5¯ºđ3¯Ư —«®Úü¼ø/pûçççŸk'p¶)Ơ—!?µ‡m6TqS‘³ËØ₫a¶é5© Ơ6s é³'Óm¿µtÆ \̉º₫vôo·®oÂhÔ%ÊhBEàÆ9ïµÂ ¹ß‡nV°Û¨q§M©vº6}ª°ùưåTl|ѳM²Ú‡­SÓơí÷đNeQ¾WH:“.i]ÛLªÍ«º®ö—ÓßSçÇơ“Ú²Tg€Q œ$Ü•|nq4É®,#¹Ư¸‘"p€Àq®ºêªß<|øđ? F(çD”üév„¨²%­#Ó´ÉQæ…–±/‘!»mù̉ÏÓï®Û–¦V­³ïuÛ*“íÖµ̉*?û=́ï×/O^<̣È Ñß½ÊMF)pZ!”4Wxđ¡ûZómƠÆDà©}úÄO4y%¿ü&R‘»¸>nq/IÙÉ[ƒ"0'̣&‚°IôM@à8nLNRs¹ÜŸ>₫øăƒ¦Å¿́  Í?×ÍKj¢^sÍ5gu4 À¨N‘rW₫|‘;ÂY“›¸6¿ ZçT‘&Ùo­·ÖƠeä½]Fê¤Ê>í₫ưÚªv?²M‘L¿¹×.#?­ˆÊwĐơDDe¾LCฉ8÷P¸äꫯ₫Ú‡>ô¡u}âxưä%ͪ"pqéAâ^÷Ưwßó[·nư&̣ă&pZ›Ôo>ƠÚ£Và¤n©|9̉:§"HVüd»2M–‘ee•85]Gæ  ÔmøûÑ‚÷v•K]F~Ê|}ÈÈwÖï̉®~+€ÀeVà”ÙÙÙ#Û¶mûîñăDZµ^2¨áºë®[Ù´iÓoÓl ă(p*T6z¥rå œF²üˆ›+•¦Đ¾ty¾¿¨ùƒ.üưø9ÆÙm†¢‹7qçÛ7õüd¡PX¡o\o/i.Ưµk׳̉¿0ú{îäă*pú̃È‘ˆ/V>2½±̉æ̉¸mHP÷£Bé?,ä³îG¿—Dáä½¢Q9‘Ñvß@à&Nà̀ƒ¢¸eË–Ó;Ö\YYÁ̀^̉ôüè£6_ûÚ×>»iÓ&éë¶ ² p¶Uû®…"cÚŸL›3-IçGƯTú«"/mƠíéÚIÛAฉ8óÀØ6;;û»333ßÛ¿ÿ‰.ñúÉë́Ù³­Ú¦’SïÊ+¯ü|ô÷ÚÁY8ÛŒ*‚¦BM›‚•¢Pj’À©¼I?7¸`÷#ßÃ'Eàô½?đ!©Y@à¦Nà̀ƒă’ˆ]’¨œÈÜc=6u‘9‰´IA‘6IÈÉí·¥0= «gûY1²d›-»í›fNæûưÛüÑ®íúÀ©p†FÀʺ2Ú@ธ¨œÈÜæÍ›¿øâ‹(͆RjR£ṣ{=đÀ­ ]tÑ‹̉GĐIƠ`"Nû¡Ùi¾is§ BíFà´ V"pÚÿMóÑéÂ…j›\m¿:YF[èv´/€À!p=TvHmO×÷«U*J:ñß{ï½MqîܹLˆÚùóç[#Gå{KXSù}ä÷Dµ̀€˜)²Q.‰j‰d‰<é4iδ¥´D†4å‡.£7wÛkåĐîËö£“é²oùjeIKyÉtù^~º›‚Ä/ æwCà:{Èl—Nü²Sqùå—GDHF¶‰ "K‚ˆÓ0^̉Ü«û”ˆ|i –ï%‘µË.»́97rôHÄ~ú³Á¤ Ü8£bèO‹+û5,8@ઉ¸„‡Oщ‘̉‘%AÄIï̉K/ư‘È”E#y"‚èocăÆ?íKs¯îÓEÔä{pß‹ËûªḌDàb¾Ç¢îÓ߇À p€ÀÁT \ô*;I*8™ÊyÓênZƠ}^t¸º[·à„l̃‰V%°²›WÖœ›>o¾[Ơ}¶Óêî³,[Gà88˜F«›i¥81Ras2VM¸‚ ™Y¯î¶[uÛ(鲡&T'sÁ«xÛÎ{ß—€Àœ‹Ùió®Y´â„«èËW‡·`¶QpŸÛ \ƠÛvCà8@à{IÚÊNÔêiÚŒ©̣UéEà̀üy·í²i¶Íû§ßщ̃¢×¬ª}åhBEà8@à`ª.oßûi<üiö³®ë§ñ¶Yˆ›ø<ă-_đæûß­à¾iD88@à8ăd@à8@à88ˆ¸7½¹Đº¨³Èmº·ù+üåL~w¹ #p€À½Ä‡›»÷̃¸̀;÷ïk¾û=·t´½#÷-µƯÇÉ e›•‹9«Üđ?Z™}ÅëÊđïPä<îÍ/ŸªX4|è¾Äù¹îT·½úUăÈî¥Ú¹½÷Ô¶ñ·È¶À oxăØ¨™D̃º2† p̉́)̉uú©/­›'ÓưæS‰Ö‰đ‰øÉ¼o­Ç œ|ö£w²?Ã˺²Œü”mÉ6¥ÉV¿‹æ·¤ïÀ p-p*j*UvÀ/v"L*u"^"Ov_àä½Ló#~‚¼?ñøgZ˨¤éúºŒö¿“i6J(ÓCßcP‡Àc'p"D*UVÖ¬4IÄ+ÔÎ6Áö"p²MåÓưX¡Ô(¡eÜ÷Eê8`"N¥H-Xù²ƒB’çK[¯'?u~Ü42Í¢Q¹A Ü+®yyÇ£q8@à`àç÷w³¯xRàd]™/ŸC RàzM‘‚À€À +_¡æH00jëvd,M¨ÀÄ œ D1úø#¿Ơúi›S“F«Z± œß́¨ƒz8iÖƠ&Tÿ{Đ˜*³£LC‘6=“>sÚï̀(đN·'̉%Ëh?µ~N¿‡nWæ‰$Ê:"Ÿ0U'$r”$B*aÚĂ •̉²Ë‹àÉ2)“(Ÿ́ÏFûâ¦%m·ƯwFà8€‰8@àCà@à*@à88˜f“d¼~¢^@à€18M´+h=ÑAU/IL#7›-Çå' Fà8€‰8­^ $Ơ -KWy!-ñBà8@à¸"o¶ä•E¦É¼4d Cà€”NË^ÅÍ—̣V¶Oœ–ỔæV¿ ½lKk¡ê2¶)Væk­îW~ÚíJô¯“}µ8Û,,Èï¢ó´—F…^ú₫!p€ÀÀPNú¢u ̉ˆœH–/€¶¶©,cבùZ|^dL‹̉[Ñ“ẹ́½:ƯWœÀÉvlQ{ƯJœLS‘”e}9Dà€±8•˜Pói\´ÎؠͬºPDO¢h¶//¡u:ƯWHàTL5’çGä́ïn£r pü-Æ^à¤É°S‰Ñe5j×”èÉçvg?÷²/+g*zU“é|ÖíªÀ…öÀc+p*AI͇Ú™$ p p™8m¶TÑ4G̉r"E₫V™çO“Ï~6X·N·û’Ÿ¾Ê4ù=ô÷±ëól½µ¼üDàCà8 “ p‡À pS#p[_~ơ ̣|é×7{CàCà8¢ÀmÜxù)y¶ôÁ%€ÀÁN₫₫©<û9™8@à88@à8@à8@àCà8@à8˜B®ù»oüâưåÉ} ×ÜríÈ®»¿̣ăƒ÷ÿ/Üç8@à8@àÆ™—Nn®·³»—ü₫Ü]ÿîE`Œ™[:ơîèZû«ˆ¦0w×—8®#¹(E4ơˆ.(`đQ·]KµÓÑuö¬Ê[Kà>ôÅä!îó\¢X´Í¸Ï9'ry..nlî!Û7nÜđ+®˜=3É\}ơ¦÷N͵uwmo+êvè'â†À!pƯÜ#*̃´ó~>¢ê(™é•ˆ²›^±Q7½h¢{º₫¼›–wûƠuóf™*ëî!v¾å?ǘç>ÑœT~ỡ;›"q“~,ç>ṛ’躪F¬øâ†À!pỮª.êVñäM£s9#m î}ĂIXA¦Y ”uŒ¼ULd¯î~ÜúóF̃Tî¬("p€À!pđ’ÀƯôOv_˜äëY$nN®§èºúVÄ…X»óK/ÜûÑrŸGà:º9بXĂ}ÖèYIèÈYĂ[¿nL¥­îÖ)yÛ*ẹ̀&bWwó&²éCà8@à¸5‘¸¥Ú‡cî®/½øëư÷y®mjΛVH—²#p'oUÓ|Z÷¶UrQ½5g¢}e'e8¸‰¸Ăµ×ÏM¡èWqb·`û¤©„Åœ6·Ö½íøưæ\Å4ÓæümO¯̃ùÏ/îBÿ¸tªùƠÿô§ p7>¸ëï×§^hư<ô•ÿïo_ôwÑq‡đ²—½́cc/pF 4…HĂëϦ͛U¯?\#°ºFè̀´ªYW›V Î{û˜¸4&¯ßwäÔ§Nkêuç±§_<ưu8#vªUö,Ÿú'pgö.Ơ®ß½üäă’̀—ó~®Û!̃ H‚À!p€À!pÜ0"p/F='¹àBó8ï8@à8@à8nü®­ƒG9¿8@à8@à8.hƯÓ¹¥“³œß p p—ëê¨Dà8·8@à8@à8.̀ƯSÛ.èç†Àơ{S˜ñGÂøÜ3Ï<Ó¼í¶Û7ß|s‹OúÓ‡À!p\¶¯©ăû8¯¸~o ë’êÂxœÈ›H[­V[#s÷ß?‡À!p—ÅèÛK¹ß¦*U 7“hœû)e´ ̃2¹Àz±Óu;fºÖ@Í{ËçCÓ¸fKÔT̃́ëúë¯Gà8Cà²y=‰ăœFà̉¸’)U1IxµÄ•&ñµ%²¦tVÅQ¶U\E‡º)ÍU6û«˜ưÎ#pkî©§Z7]¢r‡À!p\殥}̉|ÊùŒÀ JàÊf^Ă¼¯k¤̀–¹¼WkÁ¾÷¢qu‘[S¹a’£p½œôwó›KEè8Cà¸lá’ö‘ œÏÜ ®”$pf¹ª)½UrµSë1ÛmP¬ºÏUnưKú¼I“©ˆœ¾úé§8Cà¸l]G$íEàF+pNÔ*œ_ ¾è ÜŒƯ§ưé̃/Ṇ`~̉ˆÈà‰¼…S8Cà¸1¾-œ•¤½¡’Y€À ]àÜûyÀ™eJѪf»e³Î¢™®ưåtzk¶"liS¤ÉTß÷}CàCฑ^C$íEàrSXÍçÄ«h敼ÙŒy¯Í¦«}ât[b O\É1ăm·4é¹èºÀI´MM~øá5)EˆÀ!p‡ÀeW2ëI{¸q¾¹è „]#Ap§£P/\¸°úYd®×fT8ÉơóXÄ~ÎanÜo0ó&ơH‰ƒ×ŸÀIs©DƯDä"p‡À!pÙ¤½ÀaJ.­  p7|ö,Ơj{׸?!p0'©C®½öÚÖ†^ë "p€À!pÜĐ¯’ö7­'}̃4™¯DàDæ$"‡À!p‡ÀưuCÉ,J‘u‰vƯ¼ªÍƠĂ8­Â WZ Cà:¼Ö+ưœ:Oá{äơ₫2¬ßCà†,o$í…¡ \=f^ÀI!{Ä Ñ71 p}^ë=åY4Wê÷~àî77²1¬ßCà†…+™u¤½06gÊgUơ¿`Ííf–Ÿ77g»¼æ‰Ë{UM:Mê[5Ÿ«“́µœŒD•T" b@à̉8wƯêµµæ̉µ>oÈm>_|ï8w¨$̃ú>§ûT̀uƯp÷‚†Y¾œđƯÊv?7ÖÑ·åÚ{ Kà&ÉnIˆ¦úBÁ₫ç«9̃4÷›}@¸¾%#y®(·U²ÿ»mjU†²ù~™o6鵜­È@%.%³×`=0mÁ]¯­¦ÎWưÜÍÏnÙöÆư1×đÿ4÷‘²ùçm̃”ܳ×üLÂ÷¨{?gˆÀ!pă I{áÎÜLäCฤkäîÚ̃Ư˵'8Oa¨ă+pÚlªNœ8ÑúÜK2_8Ø5B̉^@ฟ¼DÜ$ÿ›¦‘fT‘¸^̣Á!p€À!pÜ@®ưq‡À-ØH‡À!p7zHÚ ×Vàdƒ6ö2˜CàR¿6(™·₫%Â&²&ͨڔ*Ÿ5‡À!p‡À’öÂØœú_̣̉5nÚŒM2àư—ü}º÷%/\&Ó‰ô“Q¨ÜØ]G%ǹ #8—²C“ô–\jMœYVƯ˜„ ¡*u›ƒn’N.H3ª"}ߤƒ¹Gà8CàFĂÜ=µí­‘§Dß`Ä·èçYÓĹ*SṆ ¨×,Wđ£bú̃«ÄY_§Ï$ \`Æ4œ\°¥´äs/ơP8@à8.µk‚¤½0§e²b­aJeÙj U3½îƠF­ ¬˜:ˆu“]}A×sóÛ œ„«wøø'ó7¼ç»»—kG²Äß¿ư3ÿå_U»/Iä+ƠzÉû†À‡À!pˆ¾-ƠvF×ÄiÎI¹À‰«’X%_¦ÜgmfñJe½Bö ¡h™Vtpïe?3₫rkÊçK7\ưµ°ø¿>/̣VØÿ`5‹ẃ ÿGW̉%̣&Q7i:Ơ ‡À!pÜH¯’öÂøœw“Đ²Y‹mÏ/˜H[Ư¸‚'` ‹ œ·ß¤>p­¦ÚK®È½Ùf…^›Pm:Ù#p‡ÀôZØ'ͧœ0§…æ½ivÔg=0=ï5§®îm»Đ­ÀMÂÁEàTڤߛDă$•H/ưß8@à8®?\̉̃³\ 0NW4£P .̣ÖpÓÛ \Á tX'pæ³Fó¤?\ÅM/»Ï:ó^ZJKG¡ÄÑ„À!p7’뀤½0^çn 93˜ d"k¡¾nE÷~̃]Îän[Ô¾mf=Í1·˜^ÖmùûÔo£eËûܺ+_ơ³_‘¼õvªNä8@à¸xy“ä½>½ô…CàCà¦\à*.iÁK0_uÓÜ@½E¸·üâï|gïáZÑÛNÉœæ7­ú%)¸)8‰ºi T7­‰ÚK?88nÊ®n2'TL¶ƒª9MsU•fÓ7₫óơŒÉ¼3ÛÉù8[…Ó‘¨̉&TCฮÿv 6%•°z@àªFàμn÷ƯÿÄM/jß8#y p\¼¼Ù‘¨’Ø—Q¨‡À!p]ÿíæc̣“ΘÚƯ«yNwÜ|ßg4i¯‰¶•œj?º¢¿MKư…À‡À‘®=®dÖ9’ö‡À—‹Î÷"–9çƒN1 pÜp¨›œï…ăœz8M#"ưàzMà‹À‡À!p±g¹vln©vç pĐ—ÀéKÓˆÈhTÈ€À!p‡À¥K$n;ü¤½ô%pZU¢p*s‡À!p\ªçùq-™€ÀAj'HN襤‡ÀÅăûDà8σTN"n’¼÷Úk¯í»‡ÀÅăg¤ •ó 8HEàNœ8ÑsŸ78kÏÜáÚ=KµG9ǃÔNJµùÔCà8ëS̃HÚ  Bà´˜½ ͨúA ‡À!p©œÛµd© œ}‰ÀéK2 p‡À!p½C̉^@à`(g£n‡À!p\ßçơQ‰Àqn8Éÿ&#RyÀ!p‡Àơ†KÚ{è p0p“—öc*‡À!p\_ç4I{ƒÁ œÖBơ¡ Cà8®çèÛN‰¾qN8; ƠCà8ëé|&i/ p0XKó…À‡ÀM»ÀQ2 8@à8¸ œKÚ{–s8@à8¸ŒI{CàËÀ¹¤½g(™ p\F¤½€À‡À!p€ÀeHà(™ô-p¿ùûg›ö+#á=} ›:#i/ pĐ¯ÜqÓ'ÿÙ‡ÿ¨ùư'#áCǾÚ<óçO!p€À!pS#p®dÖÎ@à Ÿ›ï‘÷đö‰½ñ"pdSà¾|ª:±תwºTÛÉù p!p>t_sÛ«_ƠÂNç₫}Í7¼qGs÷̃†.wi I{Cฉ8¥h{-Y³’&̉&B÷î÷Ü̉’8_î²"p.iïiJf×ϱß&Ç?«Üđ?Z™}ÅëÊđï0‚Ÿ¦À‰¨‰ ùM©"u™“Ïß<[o Ü‘û–2'p$ím/Å,ßw&€mÙ¸#ozs¡)Ç?‹ü̉¿Ùï₫¶wÜ4đâèY8³;-®™&¢æGÜ´)5Kç¢oç¦=i¯üåüÏêµ›eä~/÷}ƒ 8ư䤥˜TYó£r¡iă~¼"y{ byÚŸ9̣w”¿'÷á#÷{¸ÔN¤̀8íûÖNôÆùx‘´Cà€‡8DZGà&Vàt‚ôsÓæSéÿ¦|é'DàN?ơ¥̀¯=KµGç×đ̀Aà8à!Àq́¸‰8‰ ÉO‘êÏÓ Y8^$íEà8à!Àq́¸‰8¼É ¤é¨’ûös¼(™…À!pÀCăØ#pS!p“r¼HÚ‹À!pÀCăØ#S!pÚÏÍ6¥sÀBÊw†¤½<Ä8=7Ñ'̣¦e´d@ƒˆ›ZfÚ4— ZÁ 3fg7~~×"25äï.ud8à!Àq́¸±8m*‰³²6Ê₫oƯ/—´÷ô$—̀ûèƒG¸G€üƯ8à!Àűëï„ÀM¯ÀeùxMC̉^âÁ₫/BhŒNÓùI-àÿg>́B×\wHdE§4‹éqôû> ë8â|AàÂh₫·Nđ«4Œúxí=\+îYªƠ&ư™À!p€À­AnÆ*e¡¦Mê)Z‹ÜđÉßc/’&ÇGNô8ÚcÀ!pư‡m\nZ’ö"p pëMṇ̃`Bóăyê ÿc¯̣–eEàhB 5µËq’|păØ„:M%³8¸5Mj}‘›¤m–$pÚéïc/ѵ¤‘„2=)g›^Uí=Tü\₫)°‰aưmhäoÓ{À8¦™¶¤½܇¬/`~6öv8;Ïcïçn"cZbI¶¡Í®yưæÙźq̣YÖ—‡²¼÷›à8®›ă%)C$uÈ´<38¸5U‰¢ÅEÔl3©íÿ¦ËÉØv€GàÆóØ'Ix;“¨™¿®ˆ›=wÚ œFÛTø-Ñ”5‹^‹3æsQ¦yË̀ÛsĐ­SX0ÓfÜ4%?J“cä÷sµ}]G•Á?îx¹¤½gú¾Éß=püäxäüiæ}η¢w.èôE‡À!p©5«iöu¬hS›mNSó;7kgø¸?7>Ç̃ïăÖÀÅS+hí.$£́ô#pîÁ]÷æ̣°nxË­.½ª"n÷P¯»ẹ́¹́~t¹Q \̉hóQ^ÓqÇ+­¤½Ñ«¢ÇÄLkȱ1Ÿô;á«:Y+¸ơËæ\Đc]tçACà8n ơ¸›v/Ñn<½fÙ›/‘1‘öP“hwePàÊ.ºVơ®¢̣åÜó0/¶¡y+‚ÙqiB%¡ăµ÷Ú¶H̃Φ‘´×IÖ‚­[©sÂV7ÂW lC£rïX8CàRC›¯Bédm2Aà²́u°J\F}ƒ/p~¿Èn.Ô4?ªó¥O«Z 37oæUÜç’ÿ@÷Ù4ê¦Ë‰̀Zàä̃ 烗qHö:^i%íµâ¶‹¶åÜûª=R^pDŹS"p‡À /"cÚÜd{¸úÍ̃&¦±ÇQ@Ø₫kº₫àKö‘ÓóFG8Û}ë´¬œ¯†Fc̀ƯÊØŒûYơ‘2̉à \qÔ}à́±¶‰“Üâx¹’YgRºëz,Ư±-Ë;[tÇ'Ià*+ĐCà¸ÔIÊ foäÜd{ù)?%*fû7&G=́»L“íÊycçÛeôœ’ùºL–"p*fqÍfǸ*¶yÔ{đÏÛ¨L/M¦ƒ8¿˜½æ~Óc5Ê¡J?Z’OGªË|Ù†VY³£Ù}Óm¤‘CàÚ Íb¨6` f`ÉäëÑœJ‹f;₫²%nzNj%J‡çqâ•;núä¯|đ—9^Càw'»—Ÿ|ÎI~×ÿw»>đ̀ó{¿ŸæßK£$̣`ƠÅc-p˧NŒÛơƯ)»ï®ưR‡¿g+ ÷ú_øàDδÀÙÔRJFÉü&T=‡́ö́4Ư§DÖâ’Ûmª¬Ù¨œ8]?ˆæT®½ĐTM]À¢7Ü̃Ö ,8©[0 ¼ƒ7¼»0ȼ<ă.păI&ÔÁ{¹ jXÏ»>̣ÇƯÁç×̃:̉&ÔC­*IQÂƠ~pi'̣ Ơ=v3êM÷œêæx—Y~îEÇ÷X°_ Ü F¡Zy·M©Vàô\ĐÉÍ Ú~–TötZÜ{ÿ¦‚j.Ơi¡è7dó>[i+–/yơë¼ùilB•‹O/6 7ËçQçgCà̉=ö¶¯HRGä´$1lüG.t³ơ3ÚÜÓ& ·K”‘8µË»6´¾Q™9”<5MÓè…ßoHÓ4 kêO½“'?”h¥D×'áÙư.·Ë ¤ ƒÄà_ƒ¶)Ơ/©ç˽¢÷{6Â&Ëh₫GM ­9!“îƯ\¨j 7¼‡ZƯ4{ÚÚsSÂFÉ›¨]=¦ÀđÔ \¨Ÿ‚ˆ›^”Ó©™³ÿ ëqÖ½ƒ1˜VÅÛgf˜#Ö₫₫Ÿ¬Ë#æ)’¢'Ÿí&¡ïêÍv¹à™Η»aæûÿæ«í$îè$=û$ưñä"Ă8}†è3ĂFàBƠ{l…Đö4=_åCïWXĐÏ~ÅNÎö»Ä?²\wM¨U“Ư¼mÉÛä:Í—ôPň2.ưc¯CÿCƠAƠͺÀi$îmGNE"÷¤JÀç–O}jŒ£2/&%ñM[à’¢ộàî´KZÿă¯5ßZ '̣•fÇIzöÉhÔ]‡jÿ%)‰ï°Î6¥Ú{‰.kåIeÏ_ÆnË–Í󣽡hŸ±}ïÚ œ¶@…FÔ"pClBu™­ëI¨MXö>O­À…BÈÚQ4tq„Yå"Ơ¶ôọ²M™®ÿ9% 5×}jGéAHå¤ \»:¶̣·µÇ¹ƯñÏÚ8”:Bæk­î7î¶ÛW;ë6…@/å^k¡éy”ÀÉß5t}k.¸A4Ku¯́÷ÖGàî®íÄg`;†%pöº÷k"ëP¿ÿ›ưRÓˆèu«Ó́¹¦µ“ưsP§kz[)¢³Ïµ´ÓˆlÙ²¹çíW2ưàê^ê‚J™V¦ ơK«7¹È’ú½Y!³p}(Ú T;¬ú£́SqM¸~"P½ h}Å´ÿSd‹û/5íoâ{s³Eåă†îëù¤7ÉĐ1́d_I§ÿ(ø)ôAJ!ĐËùÀ}#ñ­c¿¥e˜Í©r¼~úƯ₫K42âY©;̣6“¿mܱ”{M»È¡¨¬Ló×óïóIơ¸e\Û^Ä₫¨ëY1 M‹ûîư ÜÏ₫́Ïô|î“ṇ„u ƒlÄb°P\¿“¹¬o£¡‘B6R̉ÉPs?tNjç¨Ätzc̉t¡ă¡èù̉í?´Cǰ“}Å œi·)¸ôN®sïv 3gW$pû"#p“Ư f¡ †"p₫_#6ª¢Óü!á*~Iáuû Ơ¡á₫ƒ=i¨ù KóL²ÀisD§-±Ç ´ŒF[“Î?†́+Nà´éE›fùœÔK7È8â/I2)£O8¸5Â÷ß±…̣=)í̉<Èvt±³ÍqIC͸₫ûÀ%5jd–N£½¡óFĐè7X“¿³ÿÏ—2ª4D{ b&Jà’ø̀œµn£nÚçÉ̃Ø;jÀơẃm”4î°ơ,CçĂ ®Ư¾âNå,iP7XÓä~·Qô{K:^­âïKµ³ p0Q§Q6`€DǻĂS›¬ü>GDà¬$Ä"LjÀơẃơØ…dI¦Ù>r¡ÑX:(A›aÓ¸Nö•4ˆ!$€íR péæÇ4C¡ă Üé¹¥ÚN8˜Ó‡¤¼ Í¥¾XéĂ^‡lër₫(ÔĐ>´oR¨)¯ƯPs®ÿcoSih6sư’rIlSÂ$5}úgG&ĂvûJ8éÈV=?ơ÷Aà/păXz/t¼"y»c̉rÁ!p p«C”„S–Ó4 ̣Đ´M 1÷G±*ICÍåó “‚NK)-=*E₫û¸ăéé÷o’Ï~6í Ơî&íË®:¿üö{…̉ pé¦U3i×÷‘“—́^ª­$%½Eà’ïrmʵ˜…zÙ¶o·üÅwFà`h7ÍL[1{@à̉ø»H· ›ïo”©C:9^{–jή@àº7›hÛ:„©$¦Nªö€ÀqcÀMu.nĂ8 bPö®#‰«!p¡9ưj"uÚE".‚Ÿ†x!p p¸,¯ƯKµsRkö“ I­ j¾lW²N£´ œ́/´Í¸}u"p²MY?IBeÛ½J*<Ä8=‡À¥'pË’ë,•4ÊØ'[„^#wv]nÉÙØ~6»ÎÓæƠNö•$p~ôØ₫¶ ~Ÿ^j(#pÀCăØ#pc)p:˜©9©›ă%¤2—ŒVpé´9S…J›Zư4T*Uv%+O~Δ×ơ:ƯWœÀi ?G+lúY“„Ë>z­½ÀqcÀ!p)¯Ư˵'vß]Û‹À%7qv“‚'Ôôé×+EôüzÈ!ó×ét_!S1ơGÑk%û»û#â8à!Àq́8PG)pKµư!pñøÉÔ{•=»^€ûŸ{Ù—8Íú'#íÊđGà8öÜX œŸrT5P;=^.'Üù¹¥“³\rT-©œ&tÏ’Àiº¸ú½3âÇ›hÓé¶K\Å•q:^‘À8ˆÀ%7‘û¥îM1¢‚gËßùRƠO ¾Đ:Ưî+TCÙ—3iZµ}ó8à!Àq́¸‰8ºÙQ„̣Sü*×Éñ[ªíˆn"é N›Q;ɧ}Ù¬́ùiH:8+ÿ¡uºƯ—?ˆA›Líú¶/<Ä8=7ÑçK}HjóÚ8/89.‘]MªÄ`£±¡:Ëœˆ”î+nn÷å œ:ơ××ßâÇ›x³9û”(Jî 4¥"p‰œöK¬êr¡œ¡̣j̣Ùϱf“ü&•dët_qµPµ¶rè÷I£Lkxå›>ùÏ>üGÍüë? :öƠæ™? Cà8®½đsxÙÇ87¡ .'ܹI.pŸ–À}̣ú}GNưæïŸm₫Ù_¬Œ„÷<ôµæOCà8®ơw‘¦&Û‘]›¤’F/Óñ’t"’V.pŸ:y®9ª×ÇBà8[ó·ÑNçڼߨC¸»k{%±/ p‡ÀMÀMÂñ’œp̉œÀ‡À!p/p’s+.!ê(úö pH‘{¸²g©öht¡5§njî€ô7Ê*;₫é}Í‹.É́÷—!·i2µ©%-U4̀ú§ưÜÜ=µíѽơ,i Üe—½¬ß{ÏI¸Ú̃õ±~ĐCà å8·÷Ú6₫“ß„ªåüôă1Ôg 7ZKë?Cà8J8­‹›;\; -< p‡À7µ'Í«£Ú“À½Tà~ẻrÂ!p‡À!p€À!p™ ×A'“H‡À!p€À!p8y¶È3Cà8@ฌœ;OÏʨT8CàCà²#pË’Cà8@ฌœ+pCà8@ฌ\ë\]®=!5R8@à8Cà8.+·TÛqCà8Cà2"p.'ܹI(pÀ!p‡À‡ÀM…À¹óơhÄÁ¬ï+®Øp8Ë5”³Îå—_öCà8¸! ÜÜRmGtÎᜱ¸n8Cà8ëøœ=#"Çy‡À!p .;wPR9oCà8ăoÀeDàæ–NÎJN¸I+p—»páBó©§ ‚À!p‡À%·ÉçܺÀƯÿưͻơóæ›o^}ươ×#p‡À!pIçíƯµ½’Ø—s8n$§Ñ6û^dCà8k{œp€À!p7=·\;"p₫‡À!p\FNÎ[99Cà†*pµZ­5Á=ưôÓ‡À!pÏ@à¸q8}}úÓŸnEà„gy†4"‡À!p2w¸v z₫<Ê97TÓѧ̉|úđĂ·>Ÿ8qCà8ëDà^*p¿BN8@ม œ›DßBR‡À!p‡ÀuøüY®›[ªƯÁy7³8CรpKµÑy|ó8nh8Á¾¤‰|8Càº>ÏÎƯSÛι7p“×m·ƯÖê§/‘7Ji!p‡Àu}/G<À¹7p ¥éơ…À‡ÀM³ÀIE9—̀7pÓº§6â&ưßB8n‡Àµ=—Ǵă|¸ÀI8¿Ïƒ8Càz:—÷‰Äq>‡À \à$ú&ˆ´i“*‡À!p×=.'Ü9 ܇À Eàä%?%'Đ„À!p×óù|4â ç pÜÀ.͇ÀµrÂíˆÎé3œS€À!p‡À—sçôiIîËy‡À!p p8)«%åµ8¯Cà"p2UùÖj5Cà8.5;9×çÉ 7°œÈ›Œ:•Á "tRJ Cà8ëû¼~,b?ç pÜ@ÎF•ѧ"s¤Aà8ëó¼¾»¶w÷rí Î-@ภ܉'V+3ØÚ¨‡À!pç6 pܘ œDƯDÚz-¡…À9‹9·—kGÎ/@à¸TN1<ưôÓ b@à8K9¯åüæüî'7¢Ï ïÿĂ3Ûç̃w00o* ½œ”Î̉RZ>‡À!pÁ@à’n³F¶–#\y啟߼yó™M›6>7} …ÂÏ[æßûƒ7¼éçŸơ§oٲ傿₫e—]öœl_ư9ö»ï°cZNF J¿7áÚk¯]}ï·Gà8Càz>¿÷ˈTÎ1ȬÀE¯Kœ Ư133ó1‘§‹.ºèÅK/½ôG*[‡zñ̃{ïm>úè£-¹8}úô@’Î?¾µ}Aö'̀ÏÏ?'ßᵯ}í³"y³³³ß¾ă“NîöFlŸ4³/8}1 Cà8.\ûó’ó 2!p"<·lÙrụ́Ë/ÿÈ̉­·̃úƒ£G¶äéùçŸoëë́Ù³ÍăÇ·äîúë¯_¹æk±ñŒäîw£÷ûDJ'EàlÔ Cà8K©Ê Ơ8Ï`,ÎEØö‰Üˆ°‰đ¼ï}ïûÑO<ѯô^+++Íw¾óÏnƯºơÓLC‚À!p pă-p.'Ü9iN圃\.—{ï[̣̃–ïltó’Nñ:’Ñgle~ ³ûÛ”¾bi¿₫à₫à…Hâ¾™Ö CàosçûËœsºÀmذá–o¼ñ¯{yˆËèE[’i˜wâĉ־5—™tƿ뮻ú̃n¯¥¥:yI¥‰«®ºª‘F$Cà8@àÆ_à$•ˆ¤ᜃTNFJnß¾ư¯z]ª—Æë™g‰÷ôÓO¯›&#'mÔ-ÖMÚgHà’¾[·¯Gyä…H⪇Àñ·@à&_àÜ9Z’ûr̃Aj'µ?¥|T¯¯NN„ÈOSaבmØ”·ƯvÛê<‰¨É²2]~ÚíøR%?»]]_öẩhXùë7ƯFèåê¯î@à8¸É8)«%åµ8ï ‹^Û¶lÙr¡Ÿ‡xRªô‹‹hYÑ’y¶Ï™|Ùy’åt;̣S>Ç%µM¨ïL×Ơï©̉§M¯úiTq´ßW¦ÙfY8iºí÷%£S%ŇÀM"Ñé1QŒăđ#v₫?>ư×ûcæïàoˆÀMÀœm¸''¤$p{¥hû(N%­“ưˆÔÅ œFÈ́g¿D”b(jh§Ùï+ïơ÷Kjíö%}á6mÚÔWŸc+öRƯCƒéü ¸, \ô*xŸó3{–jήĐie 9[ ç,XÛ'µLÓ¸¤W’Àµ[_"^Ú *‘0ùi Qó›]UÖüH™J6Ÿv"p̣̉ú=úx0­¾Îœ9ƯT®ø‡ÀMªÀ…®k½N埡„¼—Y“{GDĂXôªGT÷®#‰«¹i •²èUq”Üϲ‘·ª›^rÛá̃„À¥Û„ÚÀÙ¨›˜¿¾,/̣¥Í ¾ø©@麡‘§"~₫t¿ivÍĂôŸ³ßW¦Û¾ṿJc„*M¨Ü4œ\or=É5¤] äºÖ~±2M–Ñå8nN„kA%̀L«Ë{éÿ¹å5o:覜đU¼mTÜt™_̣ä°Ä¹‹ÀµfÄZA,²™Cà8€‰½FFäoø¼'H¹€ •mSdŸ—sѰ†Û_>°|ÅÍ«ÚæÚ«ûƒ LT¯n¨"p p©Fá–j;¢ë$3£gaBÎĐb ?\ĂJ©Îlơû´U½}¼fÜN#p æ½ï£ `@×É9₫0l[pѪbHàŒ°üŒ.h̉̀{BWđksfCN—±Û ô›ó¿_!´_7=?̉ƒˆÀ!pÀÄâr£À= ]àCàèëZyL̉đ·Èʵrwm¯$öåo­ëåü8ä„»úêM²0V‹pQ p€À!p™¸^"÷£₫"¿zïÍÏ~î0d̃ö›̣̀À™₫¹!ÉL~Ú.jCà&¹Vä™à91|äY?si=l²ÛÊ€÷WđJ`•¦á¢Fà8`:سT«í=\é} ›psùß*̃´F(¥È€ö_BàCà&‰¹Ăµ‘Ä=À!pƒ8¿|V>0¿ê•½*xÓ‹*1‘¶ª)Ÿ¥Åíóîs#æ{Ôc¢wºßªIä[rI€¦x½ư~ æ{„—¼åËø[ˆhBºüÔOưí¢ŸÛyh pc#p/¸_eN8n:PKF¤*FÆ´"‚&æ-!³̉V4âª/ÔM…;ƯVn(©8Ù}yßµn’ú=«Æ,7ă~\B%‡’D:‘#ª€Àô„Dà$‡À!pÇEÄ́̀ǃoø¢æm#Ià m.g¦We½r₫~=+…¾‡Ư+yR;M»À¢pKµÑµsCà%m!Q*yÍKŒ ẂFàLäk¾ADà8€1¿vÎÎƯSInzúÀMÎökñZôú´-º÷ófº]¾̉¡À•½ïSëƒæíw1AÀªæw(˜å’Ö¯k-W¿?‡Àôpí,K^8´Ä5¬¼¡«r$­™®2§eúÆÙˆ¼™́³‘$On[ºư†‘±Å€́)ùÀïc…´d¶Ûró@àúÁ¸?À!p¹³ƒ*ê)í—&S`×Ïñˆ}7Ẹ́¦iF ËøiM )í@àqứ‰Cà8 #¸œpç†]àCàCàú»†FDà8 #̀-ƠvD×ÑKĐˆÏPÂÜÀzƠaƠK`®£3"r.¿aĂËn ë™+gø3¯]óMo. •W\“kñre³đÆëæư½?Ư'?ûƯ‡0Èßă¾ß8œ‰D¾~úE¿À}`½:€À@ÇQ¸;ö,×uºǘ́ÆÏßñ̃M‰¢Áp‘¿ûÛ̃qÓØ ܺT^Ñz›7­â œÍéfäoÑÈaɲ/„Fzù×̣\èÀä ÜÉYÉ ×i{¸>x„&É ÷±¸€°­:¯‚¢Ẁ¾`«*¸é¶¶iĂTC¨uL%[!µ¼n€ÀŒáµôXÄ~KKàµt•‹†ÙT~t®ÑÀÅL·¥´¦öjÉ–â`¢®¥»k{w/×@ิ.gê€Z…À•´̉ px=ï$'‡Àu*qÚO­â‹ù\ô‹Ó®̃¥ÀƠµ̣‚È*€ÀĹơ´\;" p\ZWtѰ¼7=XºÊ¦1óT;¸ª•9³ ÊY p‹\KrM!p!ö,Ơj{×€Àd„¹Ăµ‘Ä=À!p@Vî¥÷ç%7‡À pAª2Hu@ಅ[ªíŒ®­Ó×.™oI“ø ·_̉† pÓxm»§¶Càz¨œKRvWf9+¿.j‡ë4¸đ8€ ¸¶–#@à¸^#`å€TimTÍơVäˆËk2_3mÆ‘÷Å̀É¢¿¼M\|?ùå¶8€I@*2Èơ*pŸ¶À~êKͺ¯yä¾¥æ‰Ç?ƒ¨M€Ài_IØ› E»\’Ư’Wœ¾d¦WLb̃’‰è•MÅ…¢&êuË—ÀÙé#‡u?*脳AÂ_ÈÑk_D3«üÜ;ÿ§æÅ—]™Ùï/BÎCăǴ”À‰¸í̃{CsÛ«_µ†7¼qG¦DNå[/qU'FkäÈ}±¦"勸²™^qrX̣ÊtŒÀͶSơ¦WtŸ4¡Bîˆ\Đüg;|>û¹O4¯¸bö ç!Œ±À퉄À}ól}UÖäZ°R'Ód¼Ïµ,ßơÎC‹\ƒF#_ëdÉ«aZôJhY³hKhUœ®J›ßÎlÇŸ^ •è@àƒ,ărÂó ܧ!pïÜ¿/V̉d̀“eüy™kụ̂©êºeBÓºƯn·'¿‡l3MÍJjƠy'KÀ5´} g®́=ófÚ¼[?×…À•8@àƒ Â8˜¶ÀÅ .ûY(ư¦Ö?̣[«ó¥)öƯï¹e5z§Ñ=Ñ“n ̣¾Ư:VäBr&ë :_¶«ëÛéwMú]'¹\Ù Ú¢•³67秊=Óyófù'‹ozœÀÍ›«Âg÷ÍE p0Q¸{jÛư”"ư œÈ™HO§Í"j²¼íg¦<=•0]F$LåI§É5g?ûëèv­ä…Næ'-#̣¦̣h¿‹Èâ4ơËyƒr6g̃Ϙ¦Ơ¼FÛÜûE7¿dR’øÛZđ§ûyà¼ưÍÇlgA €À“‚Œ̣îG͈)t¿ơUù/¼ÿ¾O4O}ăë=û"4"d6Y iÄ+.§2–$Z:Me+´6ßj¿¼nNåÔöëÓ₫¾z¸]»‹Ùê—ƒª„\ p@çH8'oÊæîúwÿï¥'›¿ó…Ó=û*IFàâ–µ"'kí.³ûëVàDÔ´©Ö§iM¸Ë.{YÏ2˜U[ôG¨ p}k†xẹ̈Éæç¾̣ÖNæ%ITZÚn?§}ơäs}›FÎđM´À‡À´GFŸJ1ûƯË­èÛC÷#ûâé¯÷|₫k¶ĐhÛ<jBµÓ{8~¿M¨qÍẲ´Ú«te² pÀNÙ/׋¾ ¿°üåæ×ÿóŸö|₫«(u’NäH>[)̉¦J‰Ú«ÀùÛU±´rfåQ$øg›bu¿VNu`0H‰ÛIÜ8é÷ççú»D†´oX»J *V*Gq̉Ô‹Àévơ½/₫2₫HU‘3ưü°qÛh³é9̀´œIçÑ·×¾é b@à8€N%îÚö=ë1¸ÜWR»Dl´XR3£4CJ3ÁO+óüÜqqÓ42¦‚'Û’m¬ÅE í|Yßßn(°ü.í~§I¸J ,Ö¢©Iª•l|‚ØÍØ´ €À!pɸ ß̣î¦ĂÙ(s•D(B7îd)‘o=]Ë+YÉ3ỹB·hrÅUL~¹KÊ[µÉ{ V ó̃~tƯùNófy¢}€ÀÙÄ-œ¤­±géÔߨÀ½í/ p\âĂÅ Û¡³%¯¼å 1·¦ —–éRárïL%†ª©‹Zđ*:T̀wj¸ùEtb·ÀÅ py‰“º¨‡jñ‚Ü-₫ừ_ƒÚ‹À æá"Q³rHˆ¼Ú¤91«t*p1Ó 昕j¡ª4Ú%÷]ê\ø€ÀÅ÷y‘>%¡BÏ̉Ǥ“‚Ơ~?`°·kéÉ/î>ôäßưkŸâ1.ñá¢EågÍ© +yN˜i œm ƠH›‰̃u"p%·;¢Ëâçx̉´Ăl₫‘L«à4“̀[ûöƯ¿ñ0B…Àµ}À¬ö5‹¸œ¸¢ÀÙe¬ÀUL_ºÓ„º`G¿2ê¸ợ&CíE’lÔṂ8ùy•:¸´›?:Ù'Đ1{˜Ó~fùÀÉ+ «ö!pU#ju#₫₫êeoz‹¸Ÿ$팋pĩ$oeJÖí&’4«¶[>4ä®Àɵ-ÿØÉ?biäHF×MẢI7©¸1|à-x©K5@à:è,l3«‡°ĐU¦tbó4I³«Ÿ!Ư&Í •Àñ›p5a¨îO“qvZd®7q“k×ïJJà›Vô?h½½7 û>.̃¼“¶R¨i[̃¬ÛI”DĐäæ¨Í­¾à©†êÚåưR;"ḶÙ̃ÈC̉H`p§uN;)¡•iưS†ÀMÆC/ç[ó\̀€Àµ§“¶´̃ưB×¶|Ư¦FøBQ=]&T‹P²/Ù0xóÿë´«…ÜÚ:uH8Ù_h›qûêDà´ËG’„ʶ{•TÆ.§3À…–·̉fßË _ÖƠi¶^¢nG>ÛÚ‰ b¾À%ơ…U¹±Ÿåơ›Yí22M₫óëª Ù®z}ë::O£̣́+Iàüfaû{j?_Ù‡~Ÿ^̉ !p0Të¥\(b'pzăÔz>º|R3 0Xayé´9S…J›Z%Rê:a—ñD…"p¶O­®×é¾âN#üz³Âf[´éX»vL¤À¹6]‡Í¯Öwó¥Ë7˜.£^‹\¤€À oªÜØăF¡v̉„·¼Ü$µI%®Wn¼IQ? ³Ư$zí»¦÷Đº¯øƯ%Bç¯Óé¾B§bê­×ASöw·±&Yà ^n·†'qơ~̣¬ù̀ṭ·7´‰ÔoÆ”›₫G¬}̃tƒp ëëM̉ YHưiz3µ{ëw‡À¤#pzMvK’=»Đöü~Hà́ç^öeïzọ»pºƯnåuâΛŸ÷§yó ¾ ™Á¹@I¬‚[Ïæ…Ëë:̃r…˜ï[ˆù v€©8?‡öY‘›üÇl›Wớ÷g³ÿ½úµĐ¶ưˆ›6Ó†¶©ÿE“F`0×I8™'×_–N»ˆÄuáĐœqÜOæCç•´ª˜Ä¼y“₫£jKb¹ée“¼·d¦×Í6ên™²W¸^·[6ßY÷¯ÑÂy.|˜v³̣"76¹ñ…:̣Ê O§k'¿ÿ\¨ITƒê ®¹V«8øÛÔ$ÀĂˆÂ!p0§ÿD…®1M1¢‚§ƒ BR¥ÓÓ¸^öe.NÎä~bûæM³À5PƠ€-Ö[ô>k ¬ª•(SkQ«8˜åJf•´E›óÍ%ô­˜æ]].o¤nÑFă¸đnj’qƒi8mFí$œöe³²ç§!éTàl×Đ:ƯîËï3«÷#»¾í‹7ơ8m¦ÔfĐ˜ơ^©«†ª¸"ô%/‚Wr«áQ ̀³Í¯é«"p€À¥ƒüW«iC̉¬…À ^àTf´X»J ¶;D¨"K''"¥û[§Û}ù§£Nươơ÷¡ µ³ơviWN8©Ë9I›±Ñ7·Ưo_‹ú» pư‹ü7eyCà`ÎJöóGp†– à uy°]0́rV¦âºItº¯¸Z¨Ú=$ôû¤Q&lñ­S67o¤mÑ5ÉÚ óFŒÀå¼m«¨éúE3½húÊé₫ª\ø€Àô#p7üĂŸoƯ?zAäo$yà:\/oRäm¾7'_e7ÍNÏkäÍ-SÔ¨›·íœÙ¶íOW4Ó‹^ä­ä÷Ë@àz¸èï¿"÷^‰îûû*p€À!p¬¸Ï§rÿçd@àúíϦe®âúÁ +¹.€À!p€À%`G|Ù¬å2b̀.§‰=8Cà`„*k%HíR?=Ȱ*# p—î&ß&ï[\i«|hÙ¸}pQ7<’ ÇKÄM3±kn%ifơeÏVsđ+*è²2ÏO •ú-*À‡P!pñ—ªW}Á¯„Đđ*3ŒÔƠ¢×ˆ@r´7äœDÚÚEÖlNmZµÛC5MUúdyM¦)ë„mÊO_₫8ëïÁ²`…ÍMóë—¼å«Àø œFÚTÎD¤$ÊÄà7¡¶+y£Ï5§ËÉ:~m™æ÷¹Cà8®«Û¦SÛÔé×uÓrư\HMpÁ́×~'丑léZöFLÄK̃Û,ê¡BÔ¡æO-:­ge04MûÜÙZ‡‡À¥óp±5F+^’\[kÔ/_p•üÚ¥±§Âè bѽŸ1’·ZRKë®rA—î࿵ \R=A].´Œˆ_wQI£>! pᇌVThØ f¾–®ª÷SÁ[0Ó^ÿ»†-½å–Y#•\gH³e\-S€C§b(̉¤5-4¡ p\z–urä•ȪÖiô(pu·Í†)¯¥ÂVđGººÈß|§ơY¸o¬ë{f£lé 'púY–±ëH¨6­†Nde4™úM¨²­Q$ FàƒIïW4Q8¿/ZÉô{[́#g›G+F̉Cëj_9mJ@àºCó½‰Ä©t "j2Ư ˆ™ >P!SÁÓ₫l:*U…0.J§£Ru=‘:;º@à¸ô%®aåÍÍËi³©¦12—Œ`͇ú«ùË:1+˜(`ƠáGq¹é¸Î$Î^Đ>j~j6•³ÓTÂtàƒ¦ 5ÚÔ"£”78˜>pcøĐ+0x¸ôÙ²#O»Y¯—¤£ê÷†ÀÜèx}+r!L£ÀƯñ̃­s†‹üƯ8@à8€®Ù°áe·È¹ £A₫₫‡À!p0÷₫ p€Àù˜Tª˜Y‹~ ®¸eÓ+nÔj̃¤©h‰/›+¦Yà4•ÇBŸÛ)éO}Ÿ°l#fú¢+«esÇ-Ú俜€ÀÜK9̃ ^̉b .ê¼™§’Îå’Óem-Ơ†ÙÎB'gJ}•ß/ç—ó¾§¢"¸øNEWưaQ÷ám¿äO@à8€¡ œ™¹¢‘™º¥[Đ:¥n~Á«ÜĐœ±/¸mTŒÀÙô’'“Và́4-¿•}?ïw›1ë•ÍöÊfß%¯JDĂIÜ‚ù}rZÇUÿ.H pÀ(ÎJ[É«˜P7•Fl5†²‘¯Àå-YjxߣÑNàüơ´¾ª¾Oø ¡ß%\ÓôëM¯˜ïµH’a@à8€‘œ)._54¼Ú§%/J—sËƠMß¹$ÓR\U/ –†À-ºm.øe½̀2=+øûêRতX=n0h«øƒ ¼æ̀œ–¼‘³ṛ̀k.Đ¯nMÎôGËÅ4—& œÙN5®IÓ¯ïêïÛ|Î'Ü¢™,úưí8`X·®X¼“åªz6ïĦä¢_Ë™A%•AO¼tú|§Èz̀ïW5ßuuƒ¤i­ø‘ĂÀ~ëÚ\L™/@à8€Q \¡ƯtÛçÍLËë@ưl×sëØèZÁ̀[ưiæǻ¶ư÷̃´œ÷ưJq9ç̀÷,Øïúüïíï×|ç‚ÿ÷@à8€¡ \Æ3v) pÙx0’“ 8@à@à¦^à̃ôæBS$†ËÛ̃qô$p;Dâ`d́ă<8€IăÿQSú‹i3₫‘IEND®B`‚nova-2014.1/doc/source/images/rpc/state.png0000664000175400017540000011321712323721476021642 0ustar jenkinsjenkins00000000000000‰PNG  IHDRÛˆ `JmsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYsĂĂÇo¨d•øIDATx^í½˜Eö÷Ÿ]`v‘ØDfâîBˆàƒ»[°Áƒ… IAƒ†¸NŒ$$Áƒ\qA–eq]Yvÿïó¼¿ß{₫ç[ƯƠ·ºnÛ̀ô¹sç„={çzßêoơ§Î©ªs₫Đ AbóưۦѶ ₫Àÿ9ÿsnƯÿăWăåäÜÜÚŸ%÷¥¤¤¤¤êS ü¿ÿưŸÀŸëĐ“!K»6nLcÆ̃B_|ù} û öµßÜçđ/¾ü̉±/üö9ß·/ø5)ØçüƠ°Ïø½Ùö9?–À>ă×TÙ>ă÷Û?øñDö~Û§YöúôSÇ₫₫÷Oé“ ûäïô·@û„ÿ„>₫›iăû}ô±mÓ‡ÙGôÁ‡Aö!mư Û¶lư€²m+m̃n›¶l¡M›ClÓfÚĶ1Đ6цá¶~ĂF· ü ´n}¼­]·’Úµë¨6,éñŽnƯúơÜ&°èvAÛE¶ñF>lçiÓ&>¯°àó¤‰Í¬[K[¶neÍÁüÚÛúÁ ̉ó‡}”¥ÿ¸?|ô±¶LÑ}(sk÷3§ï9–Ư?ûíßtÊ)§Đÿư¿ÿ—₫ç₫§F́¨±ï›xÙyô?5øÛ̉lĂÓ9€₫ưûï4z̀XÚeׯ´MĂF[µS«h´í¶tÛm·Óo½M÷?ø]3ê&º–íºQ£éºFÓÈÇ(Ăß׺Y=wÍơ7̉5#o «¯EWÁ®Ågî¸özçq×®ÆkÙôûđ̃kù3<Ă÷ƯbêX²Í÷~ă³ÔwĘ>óV+vå5ávÅƠ#)c×ñß]~ƠµvÙˆkvé•W{vÉẂâË+»l„g]z%]xé»ärºvñeÊ.(»”οȱó.¼DÙ¹”);û¼‹è́á*;ăœóéôsΣÓÎN§y|úÙtâ©g*;₫”Ó験N£cN(º÷₫4d¯ưhđû̉î{́Cƒ†íC» Ư[Ù€!{*ë?xê·û0ê7h(ơƯͱ>‡Pg¿AÊzôÛº÷HƯú PÖµ÷ể«?uîÑWY§î}”úÖ›­—gºö$Xû.=©]çµéØ`%º*kƯ®³ÏZµíD­ÚtTÖ²MjQ̉ÛSóÖíƠyÅyî­Î»ÖAWÖ¬[ï₫Ôủƒ5Ó“µÓ«ÿ ÖÓîÊúî6Di­?knkoÀà=ià½X“{±>÷V½B·Đ/t¼Ç¾²¶R­Ă ưưv́îrßĐv0÷—C¸ßÀå>t÷¥̉££Ă>^Ư¢¿yvÿÍvô '+;æÄS”{̉©êúܾc'5p{â©§Ùñ́I₫ûɧŸớ)₫[Ù3Ùöô³Ë)Êyö9‚½¿f-¸ê*5Xfùsộ́çĂí9~.Æ–?ÿ…Ùuëèá Π­«VĐê)+[3ơaZ;ͱ l]ÛÊ·°Ù>6í!ú„íïlŸ&° ×á1Øß”á3ÇÓGl°meÛäÚ¾]çÚÚ©ăé½)ăiËsOÓÉûïEソ†n¿ă.ZơÊkt+ó\ƠάƒÀ·Ư^N /qÁè@R€4 åɨT-`{• X´€*À0^wĂÍÊF²]Óu3l,Ư0z,Ư8ú–`»™°nâ÷Y6 Ÿ™À®¿q4™6̣F>&Ă0˜ˆ²0GmøH¹k í+î«Öl—¸VA9ÎW1¤çÊ.¾`¾R™ó%WĐ_îÙye—Đđ‹à‹éđ™ç^@§Ÿ èK'ŸÁÀ=íL:á”3踓àjĐ²ê"À=Œ/¡€=8°¸èàäö@ê© `¸â‚ĂÅMÁ•­¯́W Ø^ưw÷ 뀕/ l€«lÏ~>Èâ‚‹ oæ" ¸̣E™ €mÛ©»g²Åí»LCVÁƠ,àªÍ„¬¬†¬lă¢â@ÀpÅßIL Ó°Û?ưµ1Áâ^d bÀæư`·àA[3ÇviÎ fÛµ9Ă—MĂWà5áëد†/À«á« đ–tx»1x»+đ*ø̣@JƒZx»°F`]{ơóĐƠàí3p°̃=¾¼{zàÅ1 ¼\Bÿlî{Đ¡t^ ߃x€ªÁ«¡«Á è¢ïyv́ ºG’2€÷ơ7ߢvØ>₫äSlO+sÀ«¡ đđơÀ[Iø¶—_q%Ăöï ¾ÊºQ–ä¤Íyhøé´å¥èƯGî£Ơ®½Ï·k'Àî¥ ï¥l›Ù¶Nŕ#¶]û„o“Ù8~]¶}̀iûˆÿ̃ʶ…móÄqü½ăh=ÛZ¶5î§÷ÙV»¶ñé'èø}ö¤Ơッœ 8CsçÑíåwPC{-\̃7ø$–úVĂ3ă¡2ˆ]¯Ïç¹´–«ËĐ °¹`U@s Ư<ö6}k9¹­œÆ̃~ƯR~'ƯZ~ƯÊ£Ÿá± »·́–Ûï¤$6ö¶;È´18ĂFßz;[¶Ư|ËítwÆnå¿]Ă·f nÀ ‚MĐ&ÚĐF0dzǀÄñđđM6ÓÏ@û:†¶ăY_v`}5]̀^3¼e€đpïÙç±·{.C÷́sé”3Îq€Ë°=–=Û£àÑr'/eجöb•'ëBV{²/6²'뇬öbƒ kz±Ú“5AkBV{³ ´́ÉjSÀ €,€éɺ^¬̣dK2,@«M{µa-€ ƒ7«Íôjñ·íÙ.‰gUÔQàµçùêăÔĐ5‡®aÊóu¡k·ªĐl5p‹;Àăí¬<^Xtµ·«¡«=]íí†Cw˜‚î@¸ÀÓỠ.€]7 º®†.`k×]î‹èº¯¿ñ¦[×® [üm^oe½Ư÷Ö¬¡‹/¹TÁ°ÜèV¸€ígD›^|̃¼ÿNeï²­f{ÿÁ;i ÛZ¶ ƯI¾ƒ6³muí£ñwĐÇÊÊ铆×ưM½îÏœ÷ßI±}øđüÙw̉¶®mxè.Z˶†íưî¢ƠlﲽŶññ%tÜ^C<ظ°W^}§f›d`;†c̀÷Üÿ `Ok‡M•@ û[‡•Gk„MÈÂk½\V+àyû÷Đw£;ï¹îº÷~ºû¾Ô1Œ{ࡌƯÏ[vï}RƯĂÇÙƯă Ûîw?ù́^O°áxƒ¬ü®{)Èn¿ëRvçƯƯƃ ˜@ÜÂØX(dŒÜNcø¦¡ưnëß»†¹‚8›†7Âư5Bü8¯o_zÅƠTÆđ<ê~C÷ü‹”§{ ‡•Oậ±'qùø“¹sŸ¨<[À!c€ÈjĐ"d¦ĂgÑĂ“ơ¼Y+T Ȭ&đdáŬ.¶=Ù(ȶC¨˜-È“Ơáâ(u@ÛÁ¬ Û0¯Öönël“†œĂ¼ƯXè&đtn®Œ§kC×ôtáí†yº¯éé¸vˆY{¹ˆ² ¼ àĐ5ĂË€®^Ö!fô x¹ÚÓƯŸ§Y‚¼Ü0è¢*/×îk ¶ƠE}áâÇhácK|¶è±¥[lÚ’e´˜í1mK§Ç,[²́qŕ Ÿ½ưλtÁ…ñÚ‹iéăOdÙ²'d¢œ?éÂDvĂMåôø<8Ц ½»ú=ºÿÔ£iẶ§éƠ»ÆĐëlo²½u÷z—m5Ûû÷Œ¡µ®m¼w Á¶°m½w4}ÈöÛÇ®»́ >¦ <ĂưîMă8èüJ~ÏeªÏ‚¥ÍlÙ6°­uí}¾]}ÏXz‡í-ØƯcé ¶µ-¤c† Ê‚ím̀:̀á*ÏöÛ4T?°ô<$º¾Ö­ÛábxađĐི7ßr›̣^á¹*À̃3w¿ë}>L÷?ü=8~=ôÈ$?q2=2qJ¨Ÿ0™l{xÂ$Jb=2‘¿#ÚpaöçưÙx~<ÛđÛ`zđp/lÓƒsàß₫Üf0èhO˜¸̃ÿ-| ƒçèÎÎæ»ơ9ÆœñE,¸óË.£sp¹Ü¸˜·=’çlÑÁ5láÍpˆ37«çc½Y†¬.̣d“†‹MÈêùX´nØXÏÉú¼Xöd=È"d̀Ö†½Ø̀Dz»s²²6l[sè¦çf1?ë̀Ñf,ȳ5çiµGk†’ơ¼­ ̃¸ùÚ°yÛ¤s¶IÂÈA¯©®§ øfæw3¡å$áe ƯÀùƯ˜¹]g^—çƯ+^ótư¡å t1ơ¡½\3´¬×&àÓ)®†®örơœ®ZtƒBË º.pÛ¶í;Đ›“|Æß?%ÄplÚ&MA“¦NÏû$Ëđ{´M˜<•”MâÙ#ü7l<ÿvsà  ö€@Ăÿ‡'p»MÈÿÁñ40ϺăáßÅxáh{xÉôÜÀ!|„¨]xº˜ó=ŸÅ§€Ë ¨°p !è Î#j̀×\z´Ze.~r>9¬“ \ø”™—Å…)i¸Ø^ôä-|` È Ơs³6dMĐ²°ÖîÜldh1?èBÖ„­éƠâoÛ³pMĐÆÁ6Éâ¨4a›t7jqUeĂËt¹Ü¤sº•nfN·3‡˜ÍUx“„—íùܨ…TAó¹fhYC×ôrET™Đ²ééb.7h>!e½ ĐƠ°}iå*z˜e&̣µÎßQÎËdßơ×¢‰|M²m̉”©|-ƒe®i“§N£V¼D§vºOÅưÉ|ưÓ¦¯™€@›ä^;•¯¿Sgø ×ñ/¯¤;ß̃_²ˆ»æzm…k+¯»„V]w1½ÆöÆueô6Û;lï,£÷¯/£ulë•]D]»óÖN¾ˆđ:ç=xÿÅüYóg:¶í‘Ó[lo°½6̣z…mƠµ—̉K®½È·ïTL§̉¾=³`‹P2v«T ¶mĐ¿W^y…ÆuÜfx³đÆ&†W/€&3¸¿³*x„†QFbu-´,{$†‘Ùœ¤fîđ=¦Íæû¡æ1rÄ1j›Y1—möÉ6Cÿ6ü>˜9ˆ° h‡),>{à‡<ƒ~Êô,kx;gÏŸ à~püD^U>ÛÁËíó€ÂùX†đ̣<·«‹2V-c…2V>q̀‰lƯ0²Zé®06ĂÅzu1F÷•ñd£BÅldơÜl`moVĂV×\íz²²­ [Ó«5CÊæœ­½Ù %yºUY•µBÙöD“̀ÏVÆëMÓÓÅ C·²àÍZÉlyºA ©lo7ÉB*ÓÓƠĐżn§kÏçjOW‡–ơêå /ÀƠĐÅÊe¸X¹lÎç*ؾ₫†̣lŸqO§=ÀưÛ±q˜‚C´§áüÆÑCD­èm"ºèÚCăù­Œ£lËyá̉I'Ÿ¢ ̣đ# sAϰ7x…”5Œñœ<2‰†=ÿ‹tç!{̉{‹çÓ³—Ÿ¯́9¶ØV\y>½|åpe¯±½1b8½ÅöÎUĂi5Û¶µW;¶̃µu|{çđó²€ë-¯]Y{Ơ¹ê=úưk®>V»öß¾uƠyôÛk#Σ•l/³½tÅô"ÛólËÙ̃1™íƠ•Ûé=5WkZj°u²\Àرd¶ün´§ÂCƒ' ÏĐ„,B],X¸X…°"Ú³Eüw€Ùaˆ û ø³²Œ¿ߣm>‡BBÍ™̀[°ˆÑ±¹|¬æ†gæ̀ÏƯT̀]À€_à@}ß RÆ×æ{ƒ›mº‚ơle¨(€‚ôtƒÚôÀÊĐ¼đ”ïcè"T Oáf̀ư"´ ‹©°’yø…«ƠÊđn;ù45w‹ER•̣ö7|¼—»§:ldơåÁZ¬³…Ç1„µ7 ïU Y¬6Ö+u¸Ø…«†¬ Û0Èaä°ÅQa° ›¿­Œ— èÆmª H“¾6(tÔÓ5·©ßÊ.¬ºĐ [ÁœY¹́é†Íé ©¢<Ư •Ë&t5pơ|®oXhÙÏ5P™[…^eضi×A-TºưN¬}Ư̓imX s/Ưé3†â¾o¯E¹›§ª0¥§¦ơøú`9ÛSO?CÇaîVƯ»}klT0ûùçŸé—_~Qă1Ó́çü]{€Úđ›ÊL«CO]t–²gØ–³=ñYôâÅgĐ ¶Ul¯]r½ÁöÖ¥gĐ;lï±½»́ ZkØ₫ûN^jƒ‚̣³Ïá÷œî½ï…½ÇöÎeg*{vé™ôÛ+—œI/±½ÈöBÙÙôÛ³lO³½1ơ:¸{§ôa‹p³öl5h·Y°h1g‰.ü¯ Ú›…wy€G¨‹ó¤>Oà/]ö¤2{¢÷ă üD¦&ÿ s₫đúƒiĂn¢©KÅQæ,2¸Îâ÷u¯³à¶ÑoKèQkđLan ws¾Ïcs Í»aÊc7¼qí…̉ïÚđ¬µ7­À́xĐÓÊhg´7<^\ßă| ¬<†çsuHád́óÅ₫]¬R>•÷â»=a{ø1Ç«…QûTÊsµ‡©½…¥û÷É&kĐêùX2Ị̂b­9Ù ÈjV-€²æfM/V‡d]ĐbKö€íhÛä¾íhÛL¶Ù}Û̉Ü₫miAÿ6´¸ -PBO ,¡gØg{‘í%Øn~sèÁ¾cÔÇ9_a½÷Ÿg[Îö̀nmè ¶%ùû´¡G´¥yÚQE¿v4£_{Æ6…mrßöồÈ+iđÎÛÑjŸMͳÅÅYĂÖ e¯Ü-Àkz¶˜;„W…‹=.ú‹ÁV¸-¼R€«ăÙe?Å+̃¸ mÆÍ{ĐöM3Ü×+Hß?\AvÈM³øsykÓnʧ{Vă9«ó2¯]¼ä~:‹ĐYă–Ñ"†s ¹v@lxäü71€¦ÑuCø˜®Ÿ–ñ¦Mï™%Ø3Âê¼h/e:́­ĂÚ:¤m„¯á ĂëE{có:#Á»ơÂɼp ó·˜Ç*éÏ=çü2µ:ûo±çsEH^±/‡ºö>à`­“Âc¯¬o…±µO66…áÅ«‹mÈ€ỢfMÀzûgyÛˆ Zu߬ Z:6XàosÎÖLf[{ßmÜV ‚­½ 9)lĂæuƒ¶)Å­`Vóº!®½ *lë/›Đm®B̀¼’‹Ûp~]è&™ÓƠÚ3W.csXr ]½rÙIŒ‘YD6Ÿ«CËI¡ûêk¯S›¶í•—¹×~*Û‰5`ûDûx°2{PÔâ%̣ Ăj́>’A× ¡gï¾|[L¥GĂvt–á»AđKÎ$ˆU¾A€7Ÿ?‚÷ïĂl¸ßÅ‹@¯i¾­¸ëVz¨[+z„mB÷V4™mÛŒî-©¢gK׳-́Ùœ–ôjNK{7§§Ø–³=Ïö¢¶>ü7Û˜ƒTÇóùçÎñiĂñàXGóó/¸¯Åëñ÷r¶gØb[ƶ¸w-́UDó{µ¤9½ZÑ̀­hjÖ4™m"Û„î­é©«/¥Ai˜luv$¶€, Đ…´>ز àƠbÑôjNÅÜ,¹ĂË$Ú'°_̀2½q;èvÖè=¨Á°±4“—/Söû‡t΃ ́Ych˜áÙư ƒøAñđi)/Y÷™÷%ʳ~ÎfØ}¿)¼ö¸[ʶ2̉¯Y{ÄÎí º~Hׄ®ZF_23QièêT¸µçr1Ÿû ö¤m;âƯ“#M{óÔll3‚ñ ÀüôÓOô¯ư+ÖØ: ´4dE¦+6„¨Û…€íQØ àrö+Ăđ]H ûé§ŸªÛ Ăs0ÎÝ!vMÁ¶h{zéîÛh|÷b†X1옦ô,¦él3z¶¦^­ôönAKû´ e}[ĐSlËÙg{Ñ0€ÇöÉ'ÎwĂN8Ù¬¸/öă÷²½À¶œíY¶§Ø–±-æÏ\Ø»%ÍïƯæô.¦™½iZ¯Â6©g c =} Ăö¯ª[Ö^y¬Ak̃â5¼z‘”Bvæjç0$î¤Ó‚gụ@‡Ư8‹–1÷0C¾{¥Y:YÅØÀçfÙ“¸F‚:6|Îđ‡¦Ycß1 ߇i8Cwèè ZöÄĂt¿æœ±Ÿë!₫{8=€½]³ñ{̉¹ĂùsôwïÁïå=`ËxÈ-¯̉ơcH/a(/yüA+D=œÆ©ưiÎăgŸăxÖÊιŸ3iÔ°?¸mˆÇÏ¡{°?î^ç÷{vÖ½î|̣½t¦jŸ³½çœBó&^OƒƯןv'‰M¢«ÿv¿f¢o>s¿)Oåù\,ªz˜·La%ó=ÜA±…°Å¶ ‘¼-ÂÈz²K!Œœ™³=Jyµ{́{{´û:iƠÅ*ëS5]0̣}wĐ„₫hÂÀ4™m ÛŒƯ:Đ́Ah.Û|¶ElKÙg{rpzvp{znH{zqH;Ïp\~˜9&€vté¡ øúxq‹û/å÷±½0´=-g{fHzmÙîh Û"¶»w¤9l³ÙfêHSwëHSØ&²={Ă•4hçí«[ Z¬à@“@Vô-Œâ‹?ÿ(Ø*HM÷²×÷Ø̉•7:lô7Ïç\½ôüñœçs<‡çÆà9dI™c<Çpu=ÛYH[Æp~p¸ûZô°ç1T‘ÎlƯ< °Åßïtól₫›a;Ç8ĂÓ5ZƯ¦ (ă‡ÓưđzÙ#nĐ`Ư8Ë qg6;đĐ›g)Ø"ôÜ Á9t/BÏ÷Ă¥QÓùoÛ³z# áßuæ½1cÑÖ½Ü&3OuÿÆçœEw²G;aä`₫PL×N|”Æ_Ë÷w¿ÆÏŸH×́̃€v»f‚·¢Ú[1Íí¬çm1_ØbE8­!y²]!CU¶—̉YœGùdÎ(uó¥Ÿp:đ!êÇù£ÅĂ}Øq'!ăœcÇŸ̀ùƠOƤḶˆÈ¿OÆäf϶û8'ÿƠmv¦—¾‡&ïÙ›¦́Ơ‡¦±Í`›ÍV±Wo϶pß^´h¿´”í ¶gèAϲ=ÇöÛ‹®>êßqá>}töă/Èïc{m¹kOíϟ϶”m1¾w₫̃}hÛ́½û̉L¶élSÙ–aGh׫[:¶CéyZg®Ö1Ó£Ơ^-Gy°e – Û3îyŒ3pù¾sÔôryr^χÏăÇÎă…î-¯{R›~Œ_ïx²Ú ~:Û‡ø}x\ÁÖ¬÷·ăÙe€̃4 ¬c÷ŸË¿ç܇<Ø"Ç—²7«<Ưœ,*÷ Ïx¤øưj~xÙÎ<ï}Jæđ̣â¥÷Ó™|ÿL̀û2lG!Œ|Ă µÈj̣¨!Ô`È 4ÉƯà àNÉ ExĐî#';ÍÙ£Ư½Á`ºfÂ'„|çéÜ6§ÓmJVÛ’Ô*gwkæpgĂ³½NÔ^ó€KéNÈqåQ|̀GŒPûŸ±@ ¦ô~Ûá\Ä@­FfØb52’¢rÄÑœÈâölU ƯS-¢P@Xîâ´!kÏÇjÀêäj!”Îí.~±A‹û€­ Z Xó_ ÚªÂÖm]‡mu@[™B¡ƒ†o×^Á5¯¼W×-AU ‹ÜËAsºæ|®™₫Ñϵ3QÍç ῭\Ë€-æl'MÁ •ÎàLoئwª²#E¿åçü¸iÇœˆí|Èw–²ăN†ñ)X#]ë¹ÊN<:v̉içñ›‰4€³g=₫ijœiî|Ÿzæœ çε~aˆ]Ä;vúÙ;ăœ2̃f˜m=2•FvhF«&?HÓJ3Øf6Œ*ØæÎvÄ0ZÄöØ‘Ci)ÛlO3”=f½p̀îô±»Ó ¶—ÙVº·øÛ´•Çñ}¶—Ü[ü Ó¿ÈĂ–;DÙSüùO5”–±-f[tä0ZÀ6ÿˆ=¨¢t ;jz₫[iX“]*[s~Öôlí•Ǧk‡™ỡÚø"ä ˜³luù4₫°Óïv¶ú<¦<@„v*€%`«oêOxé°±†ªë騩.5z˜¨02«»sJ:€ƠQ́I k/|2·ïØs²aơ­2NYg^Î4@׆¬¾àúnz·AÛ€‚’]íĂ ›Ë ̣r£ `7É*åẾÅƠ°¬l"Œ$û{ơqÄ.¦ra‹đruC̀º̣PVV*-«ÁU äé†:À|®Ó5QÅỦÅ tƒ•¯¼Jºtåơ<^Đx™ Êá| @rbÓÎ÷́Ô3xwi ½S¿³±6õs.æ<éh_ª́,mĂ/ăH×e¼‹d: ¶/Wz¿¯– ¿Û¯äc#‚í"~ܵóË0]åØcQ¦ß&MM#»•Đë3'ÓÜ“£ylóO•̉¢S£ÇØ–²=~ú¡ôô™‡̉³lÏŸy0½pöÁổ9Ó˰s¦W\{•om8¿†íUËđØJ¿ïE₫,ØógJËÙa{âŒCiÙi‡Ñbלz8Á ?™–k×JÁ9èí³µAë‡møÊcäåÅ< Î…=]XŒ‡X 3q2oû™ænû©¸CÁäô»°í‡W#c› æ]yNÔYå„}ÊåçÎĂßOó¨ ºI=Ç̃'ƒt&@ªá ¡àa¼:™ĂÂ÷±—ê@f8 Uyz 醂g¦!đ̀®já“{ßY億ϺO/‚rW'³×zïÙü³1ËÛ•¦ßHƒùuđXñ;”'«à Ggàw²¿`¯F̀̃*‡‰ç3`çOÅ̃*¿ï:‹U{xïVm2è:Úü»èT₫ûÔ;œ=»\G»5ØFŒw@ƯvĂö4ºeöxºrĐhĐˆ‡½-?zîäiÓU–*$·ĐÛ~B¾…³I¡BÈXU®ækyqÔYĂ1BÎ!¡Ó9”Ä!ä#Ué÷äEC8 #¼Z\$PîÎ\üXæ.áÙ‚¬>6ĂÆ  É…BZ´BYï¿­lH¹6a«çq«;Ÿ[é̀Tls]œ'5ïƯ 4f…!{»Pü|nøV!³œŸéå"‚µÏ₫¼đç„y-Ætî¿×ÓYç]ÎÀ¼Ô3@Áιé+3Æ`<—á7ܵó|Ê|ç+øa±$Û%×*›:cí¹ÏÁôÜ +y?₫uTvùơYv1ƒ¶K®E¶]:ẩvÿíÙU7rÁ”ŒÍ¬X@7öåT”óf̉¢óN¦EçŸL"-½àDzœíÉ‹Nâ}·'ñ̃Ö“è…‹Oâ=·'̉Ë—H«.;‘^½üeo\~½iÙ[|?Ë®àḈ5~́µ+N Wø³V^Οɉ¼¯v-çïÄw?uáI´ vñiôäˆ èe.”đĐͼ³ăưỤ]öT70©Eh5lơ*csƠ±¹̣.âȃŒ\½wÜ57I»[ø‚„*k” %ß®`Ï Ûb¦EÓnbđ¡Ù¡£i:öÜ«dơ=w3Mă9g̃ôåqªçÜç$Øz#oñ9÷•x;³Ÿûxµ¹O¿‰A9”ó–g‘’æU^©'oëQɾÇe@ÊàÉ “ô{à5ïÎ[zœyWx́ Sµ¢ØơPïrVÏ»óLwîơLº½ªñ›O½ƒf*oµœNáÏ9ù6cKÏC×ĐÀƒèœ=´ÓÆÂï;…FO€.Ø€\ñ€j[J̉Ù_˫٫Ŗd‘R«9£Z\Ïu‰Q «‘» -”W{ª³ ™£àÅ_aÅ$VQb{@«kÊ{eĂ²=%¢¨Ê¢§¨ùØ̀¼l°[%Đº^N˜§k¯B¶H%ơlmàjO×®kg› ªåƯV&åc\è8-à†>ˆôvC<Ư¨Ùæ¼ne¶ UÖÓ +ë´ˆJ×ĐM²?×^µŒ…ŒÈ]Œb¥G©¦•–<₫4à—̣€~);/Ë[ {œ¯­-Ẓ„ß–>ÉÓ\Ú⿟âi0Ç–,{Ú1₫\ØA¼đjëóµøÇx†§ÖơÛ“|ߵǟ\ÎQ€=ŹöÄSÏñú׿[×nß½mzå%zsÆz›íĐ»3{íư™hÍlÇ6̀¯lÛf×¶đmmådzl.?`[ø±Íl]Ăw¬­˜@kgñ÷²­Ö6w-Ÿ6Ƽ†ëÖQƠ ÆöJ [íáfÁ^Nl‘a(hN6h5i¢¼å6'²JjÁ‹rJ†w;€LGH¼ ænuö(^V®>M%}ûSo¾5 …Yß~¨RÖ 'ÏHg´oN‡·-¢ĂÛđ-ÛmÙÚÑQíZĐQí[̉ÑZ̉1ZÑ1]éØ.%t\W¶nméøîméÄîíèÄí]ë@'ơèÀÖ3ó÷ñüø xÎz ÇŸq\÷ötl·vtL×¶t4ÏQlGv*¦#:¶¦̉­è°ö-”Ơ³=bZ₫ü \4₫nh5tÁVƒ6(rlá1¡ä.ê'›y‘½¹[7œ¬’[0`œ=·\q‚a¥S6éăR.: H»È£¿y0·’…̃§êK»È 0zÍD7¡„——Ûj@æeṣK8©ͼɘCÅ^W/?2IC£v\HâÂÅQÛwªëÉV²q̃®^¡,°m¢̉=Á6ÍĐrä¼® [7 ºƠñt3íàj ̣tĂc˜†ô"ª°âơđtÑ·Z¶ó-‡%Ä0kçÚ¨€F—đ³ ØåûT­\£^îQœz†ª_0$9ö¤Syợiʰ†Ê`0́LJ! ®#¦rÆÙªl' {÷mC̣m˜Â2í̀sÏçh[°am‰iH1k*˜%1$đ± ÓiAˆVÖLè†z¶&hMàF•ÓC¢«¹€ü5#¹–-Wy¸7ߢL¡®êmåwó®®₫Ăó¸ xdđÎÀ`¾PdÙeóbËä™eóŒryÙ%̣0·i™b¦4Y&ÏG³<ƒ̉ñ0Ù(¹̉§ETæÖÅơƠÀu=N]O“çRaH®êØ24501ÇZÎ…çafƯZU¯VGqymå*|ïÔ¯½EE°âZ^u‚PƯÅhXoñ9å ^îªSNi‘ø…á÷Ø™¢xAƒV­×^µTà@/ 2KøÙusÍ Tfa»’ Ưªе‹ûºAÀÅcaĐ­pߪN¸° mØcj~÷*Ç®¼z¤Jû§{íơ7©‹ư 7UÉVËó¸¨8s;Ă@¹[•‡ârP¨ú  È£.cp!ǿ¯Z˜e Àgc̀¹b`ƒh¶ï¨úÂnưáËù|àœ]Ê‹ŸP>  .Æ<³’ÛQ^.<\ÓËƠn—[ÈÀ„«âáfÁđ¬ l/q­[¸€îU®—{ ]„–‘DåG3\à•</¶£¾N(åœĐ¨‚™öø<ϯ 7 ;ÜÂ3ÔVÎ+£m»=m|¿2ÎÿiÚm|lÀn¹Ư1GYtA ϰTÀäß ÅÀR“s–0 H`&V;Àt¡é ¬†]zåƠj‹¬́²lẈ2ü+”§Ơ‰( Âk=—‚µ®§̣Â'U^Ơ©åïÇä…gOÖ-§ ë&­PÛ{´½8¬Ơ«!‹ CÈjoÖ“ơÂÅ)A¶²kÜëí9Û$àÍÅ®#h…²éƯÆy¹q ’T 2Aä‘F…–ÓÓÍ×Ư¥)íÀ¦CËq!æªC·˜uHƯ đ²™ÊL6Ÿ›$´UÜ@ïËƠÙ§]„•aa^n®ĂÊQ^nU<\x¿u!¬lÁö µh&1l´€­ Ü,O—½.x^đÄ­häΜ.¼6„;'x½Ø.ˆ•áoĂđ|˜á3´aR ¥W'Ä0C˺As¹I¼\3¬l{¹G̣¢I3´¬½Ü¸yÜ °2`[aå$!e¼&Wó¸ÿǿsÚ¦a#jđÇm̉ç_$„­Y Û [ ] „8¯º=^/¼8 _ /x|×ks=@<æ™BƠ¡Tó ´ioÑñu¨Ơ‹ï¿z$8Œañ¶?9[ 2æ„e¯S°¼ °d/Óó4˜XƠ{±ámÂăD’E çl"đ8•]À^'àÉ+€ag²÷ ;œÆE-YPÀ“@°€çq O¬@!vä-D‘Rñp^à˜¢“ Ó ,ŒÅvb¸îĂpÅêbTîÑ€Ec¬4Öó²đd{ôăm=.dmІAÖ^üäÛÊĂéK\«N¨8Î+­Êóq«“x¶Y¯I0‡W)ÈN„V„>l×̃“[EékÚÓơy»|Ọ́vƒĂËÙ®^D¥“cØeưª2ŸknJ²€*,†®&×,l`{¹¸$®^¬VNÛg–?¯öhyûµô¾-÷y:“³ïË4ÿçêÏQßñ8–¨ï|™÷˜e[fÚË+ùoðOí¥—[áÙJ₫{%½ǿezAÛ ₫{ÅK½ø={a…²ç^xQÙrop~ö¹Œ¡aO/~Ö±§Y®́ɧŸUpíq®l¤̉Rº…T-.| « !C–*r  Ús‚•Đ#S¸^«Wæd±r’møëáêíU*ϲQŒ^m‘2s-»E ô¶(sï0êå¯&ŸajµyÀÖ)ßjsÎ2†LciV¹×ˆ«à‘¼¥ª†½Öq¦·”9·Ó²WÓs’Ô2¶m¯¨¯Œa{ß&ó}¿©ưßqÆ‹ÇGYÜû+ù¼}Œê¾»›@߆¶Ădn#6_ÛMá¶ô™ÓææyĐç̀w̃ íAÏzŸ=ú€ê'³`¼/6Gm=DC?DT6—·Er?…!}«®i­ûµ“­.“c]å)à¤ó_—ó}e|½|îy¾~Úæ^Sk+®±{₫E¾î&4ï­¯Ư o_äë}–1 ÀÛV0+çkvĐªXØ¢®y=5nZ$&m  ˆD¢ Œ¸ê@àÆÂ$@µ¿VË””¶¶ ˆDuSÿçÿüụ́Ë/éÛo¿¥Ÿ~ú‰~₫ùgŸựË/ê>nMûơ×_é·ß~£~øvm̉\y¶w [ëØÖMÑHg—ó& ˆ*§4ak/œ ‡­»J`[¹“%â–ö ˆDuSiĂÖn6l±ÅÅXq,°­›¢‘Î.çM4  TN¹€­Nû˜[lÏÁV ܼ„mi9­X±Â±2™OFáûÊX÷2ª(/¥ÜeƯ+÷̃Ê|¼VÚV4 ¨C¨UØb{M^-(VTPYw0¥å+¨¼4lº—U(@'}}¥V‡ƠÀ…-Ú£&Ûçj…qî́ö{̃|=^[ ZƒĐaU?éûëjûDơ9é¿É®s{ƯªklZ°Å6#»A¨g«TÔlË*Ê©4¤aÑá|©Jzg5˜¨ăÏ‹€È{¶5Ñöï-«È ”‚Ú"îù$íWÛíŸäû³t\É IußƠI?ÉyÈÅkjC³¹ø̣™ù9pˆƒí¿ÿưoúÏ₫C¸Z Øê´‘addX ƒmY…¾đ2£l?ơkœPo68CŸW^«6nMï«´\_¬K©Ü}†¯ó¹ü|™f¶<)ƠYË̀ï±Ï Q[̃‡7².7?ßx‚ăG' üưú½ #çwñçzÇb·¡₫íგ°Î́x–U"{₫#ÚÏùí|~JÍö÷Ă7îùHÏ.ªư+Ѿæù)/uÛÚh#_̣ẵ!áùG;T–aïOâùúôÇç£Bÿ¶J(,́Ï0µe<§ú´§¿BÛ×m·œơ_5àÉ\Ẁk‰7Àú}î€)´}cT±×¼?¬%Ơw‚ă¯Ï(Øbk@Û«W¯,àÚ[LØêr}~Ïöó/¼|¿:¥a g«O¸îH|_B³=Os^5îyç‚ [/|ly¶Đmfî;‚ÎtîlO¹ÔçUăóLØ;ï÷Œ:₫Èßïv„̀…Èù́Ñ|lís£>3{@cÎ \*9ÊŒ8ÿ NfTÂn?o@äN¨¶q|qÏë A¬BÛ?AûúÏOh1ßí^8m=Åé7Éñ'¹ØÅÁ: Ʀ^جÁVu<[;2¡Ú' ¸nÿ3χÛêx"Ú7×ư×§W÷ø̀öû}v»µo|¨<âúƠ¿éÛ?°É:?•Œ°$Ñj]zMl5hKJJh·Ưv£ÓN;ÍÜ8ظ>Ø~[N{˜5gºƠ o¬æ]Ôă÷F†ñ°ơD[{̉„U¸́ß0º·aëûü€¶ˆ¼Ø-B_û}ÑI:œÎ”ñp²Ă¶ú‚P؆Î7Æ´Ÿ _í噃µ¨ó—V‘íƠ¾8vÛËÇÀÂ{ŒÛ7A ¬â`w{øó¦çyª|ÄDoˆgœỰ^gk3¾}sÚο¯ư¾øöƒmäơ%ª™ÇïNùúW¢ă¯äÀ»Àà[ ÚvíÚÑ¡‡J£F¢qă¸tëwxÀơÁ¶is•Ê×®ôÏ>ËTư±a‹äü+ó¶¾m\ƒæü’Ă6+ó¢^w`×Q́ AfJ îâî{>t<¾ưâÎOÜó5[ß8ùîÙfgß`ÂÑO’ÁB°^’µ ơ¬âß ÛxưE¾?d°•XÆ_’ö­:lc~_l"O0X¬Ôµ À¡ăN8FI3f̀ eË–ÑsÏ=G«V­¢åË—+àÁơÄMàÂöâË商­“Ó!B= Ălø.¸*d¶5Å¡Âa±Ju¶€0ẂÈÚnëø³abü₫ØÎ¢aZơ9[s¤[å‹jTd#`μ fŸ 0rÖgd{ZÑadĂc2Û?AûÚçÇf¯̣uÎ…ÿ7†|¿qaóLă.xqï{>K†¤¿3ªÿÅWÜ*hÿ4ŒÓvvXÛ5ñ·o®û¯Ư>ö´OÜïK̉¾U†­=°¯O ôwüqç·ĐỴ̈lƠ Ăb©0ØêJpNỤ̀lu©9†Ê9™0r°g䯄ƒBMYÛO|‹¬ mÀÅÙ¾Đ•ó"*sî¼™Đª{q4¾'è5˜ÛƠŸ…ïḤ~%ÆØă÷/PRÇo¶›»Ö^ˆ–ùƠƒ­W¶ñçßl#»ưôÖÿùñoă2ßăœC3ÔüưYaÊ öOÚ¾¶~y1œí ø¸ùA}₫¨·÷₫¸çíÅyÁaäHư&đd́öÑç'iÿ kß$ï̉_’÷Û×§ , ³ö¢‡ư>'*`/@L’Or|¡¿Ï\ôsư¨Î1ÖGØù‘åFvĂÈđlÍ‚ơl?gÀrtĂü° SÖ̀ó>ÁYs il)tA9°•R²ó,픬j¦ï×ô±ÄEjúxäûr«³¸­?I`Û¸2°-»́J̉ọ̈ªẈ+©EÄÈÚ¿ä^2KIǬ^Ç´· H{V¯=ëJûÉu¤~œç = l„®êJG–ă¬¿Yνœ{Ñ@~k fa{ÙÏ«…wụ̂ʺăÙó[Èr~êđù Ư6¢ç(“ÏMê° Üñ©Qتđñ¥Nù¢K¯ —V®ª3adéÄ̉‰E¢Ñ€h ªH ¶Ï¿ø}̃E ¤>û\VÙ% lE¸U®¼O´# Ô% ¤ ۳ϻĐnÖjdíÑ*ï–MÂÈ̉YêRg‘c½DUƠ@Z°E)sëOÀ>ÛϽđ±·Yæl¥eÏÓTµcÊûä¢.(, ¤ Ûs/¸8"ƒ”F¾CÈ0_Ùª8TÑG‹/×™JrưùµÑ‰ô₫á¬1[¿S¾³°.Pr>å|R…­›ÔB§lô…‘Q•àÂK.§ .¾LƯ‚æl«œÀ>¡‡Tù̀F…#öäE ç7JG•ß! Ôm ¤ ÛsÏ¿ˆ”e¥kô`뀶*°5³;…U†©N=ͨÏ÷<ðz³IêUÆ ́-R¯3»RN\Êó25! ä¡̉„íđ¬0̣çFƠ7Œ È^tiƠ`«GvaiÎ́Ç«ZO3êó£ ÄƠ«Œ™ÆƠ³tr«J½Î¸v”çë¶ çOÎ_!j -ؾ¸âel‡_˜1_=[3Œ|ÁÅ'W=ŒS4¾̃c’0rlCëAÆƠ«Œi%­)ơ:eÔ§%y^4"È; ¤ [=_ èfÁö‚²Ëèü²KƠ¼-lÅËÙI-́9Û yÆÄ ¼«XO3-Ø¢ÂIh!ô¬Î0)½±LêuPˆ€ü&Ñu!j W°uæl0²̣l±8«nÙ’,ª l“Ô{LRO³J° ¨·k׫ŒPÜ*h©×™ä"W"°ºÏ'9yMœÖåyÑH}Ó@Z°]ñ̉Ët₫E—Đy]́Y`ùBk‹̃ú“©Ưèxp¹®§ưùIêA&©W'0©×iÖ́¬JNÜêÂ4îưr‘ŒÓ°‚=ZÔ²u¬ĐçlE•¤´™´™h@4PˆH ¶/qÙ)UËb•$ê`Øf<[Àö #K9ï6ŸbG—ß$ Ô®RƒíÊU™Úđnø@ÏVĂ·R϶vO¾t>iÑ€h@4P3H¶£ ZÍS ¶_Đ¥W\Eó‹.áp2lå*ñlEè5#tigigÑ€h 65lᤂŸ`©æéç₫9[†í•WÑ%WŒP·°•¯¼Çad7¹YyÇ ùÆezªÍ*ß-Ñ€h@4H ¶pR5KÁSØç_ ¤pç̣«®¡ËF\M—¸FY~ĂÖÍZÛÚr’B µy|̣Ưù×ÉåœÈ9 Ô¾Rƒ-;©à'Xª- ¶W\u­ó¢+ñ¢ØIöW¬X‘Iâ¯+ƯTTP9?®ÊÜy¯ơ§ô3“*”—†{§â³*ï¨÷°«§«¿Å2¯5/ª^­á5ă·+ăïör9‡Ṭ#¨}AI§–s  ˆ²5:l™£Êqe'öó/¾̀lưÁ׌$WÛ*;Œ̀p+5VçƠ‡UpQ u f*đ'₫¯$hUîe·V¬Y>À³LC¨ú}|_1®^­ª¿[^ê­Îu€mS†oỤKç—Î/ ˆjSiÁܼ̣êë<âï/²a{=]]ÍÀe[ơêk₫9ÛïÍóǛz± %¶ơd”“†ƒÊá}¦ øĐ̉yaeơbëƠ&+±'°• Fm^0ä»E¢ªi 5Ø27•ăÊ hl¿4<[÷ªëFÑ•ü¢×T·¯¼úº[Û³ô{­ª¢á-&‚m,Å’kØÂsÜóÎ ØVMèrv ˆjSiÁöÀ–ªíªk¯·`Ëä½zä ¸Ú^}í lm0º`bÏ6 ¬ Ëf.¬„÷‡hƒßï *íỤ̀ñÅ­bÎ~̃9Vs^6I=̃Ú”|·\ĐD¢Ñ@îæl_}íuºÚå(na_~ùUfÎö ¾síơ7)à^3̣Fe¯¾₫¦/Œl.@Â\ey9æ,6éƠêEC»ó¢æB$$;T[Îó¥‰a«ç‚zªx¿»P)¾np=\{SX½Z-Nûù¬P¾Ed2+Z.́¢Ñ@]Đ@Zí«¯¿Á,u Ăß>ØâÎÈFÓu£nö́µ7ü°M¿Á’…fÓÿ^¿´©h@4  d4l_cؼ!ĂQ0ơ˯ ÏwFƯ4–F̃8Ú³×s[6¶ĐÈI—/ ˆDµ¥´` n^opôúÇ0l¿Î„‘qçÆÑciÔÍl7Qöú›oåq)em‰R¾W´' ̉„í £¸eûÊ„-îÜ4æ®cxño¾-°•ª?RơG4  ¼̉‚í́¤ÂqƠ,ÅíW_“ñl¿úúk=ö6ºIÛ˜[éÍ·̃ØJ'+øNVh#tù=âu*¯Ô`ûÖÛ̀Ñ[=–̃̀Lµ`û ¹¥œF+»]Ù›o lE´•­´™´™h@4P×4lÁMÍP‡§åôơ7†gû5»¹·Ü~'½íÏ̃~ç]ñlųÏV4  ¼̉‚í[̀M“£àê×ß|› #ƒ¼·–ßåÚ|{'½ưÎj­t²‚ïdum.Ç+^£h } ¤[8©KÁQ‡©ßøaû-Ư~ÇƯÊnsíwë'lă2I‰ĐÓº´©´©h@4P›H ¶à¦æ¨fê7ß-È{ÇƯăè»îUVÎöîê÷óγ•ÜẲ!k³CÊw‹₫D…©´`ûîê÷<*2W¿ùö»Lä½ëû”ƯyC—íƯ÷,ØÖf=Û„ơbưé3éǹ^Êÿé„₫̣xqơpÑÉ́dvY>鈅Ùå¼Êy ¶Rƒí{ï)†Â4S¿5a‹;÷Ü÷€²»ÇƯ¯lơûküm­Ö³uNt”g믗ëæR6r/;Àµ‹Ågç/+d¤­tÈÂîr~åü SiÁv5;©÷Œs8ª™úíw†g‹;÷=ø°²q®åXÄÛ Ổ‚íæ-[<†V̀ÏLOÿüçOØâÎüGѼ iî‚GiîüGië l¶[Ñ€h@4PđH ¶[¶~ ø© LưçO&lùΣ‹£ù 9ÆàƯú¡ÀVF™µ3Ê”v—v ˆjRiÁvë(~j[°p1ưôÓ¿2-î,Z²Ô±Ç–̉ÂÅKèĂ>ÏVF´?¢­É-ß% ä§̉‚í~D2?ÁP°ö¯°Å¥Ë %l-}œ[ö8}ôñß ¶ÎV£́tZøqÏ›$_ëƯ&©Z$=?;ºœ9/¢ÚƠ@Z°…“ºxé2æ(́qÅÔưëçŒgû¯Ÿ¦ÇŸ|íiZÆ·KŸx’>₫Û'[9.©EÜóI:C>ÔÛ K7™äøå5µÛá¥ư¥ưEµ£´`û1;©K‚–1C—=¦>E?3_·i؈üq›†êÎSÏùäïV‰=³́ ̣Rê4‰T®jÅr¾b/­¢¿„™\¢œKö©×'L2¡ß‹ïÍxqÆç‡ƠÛơ°g[ÊƠBêÙ*ØF<é9FƠÛ­¡öÑ4 ¶aơ~÷)+3µưù k§#ÈHÚ]4 È¥̉‚íߨIuú4=É·O2S₫å¶|çÙç§g–ĂSö÷O?Í»z¶^nd hly©+¨z»^^c#”¬ P`̃-É×Àz>̀²ëăª÷¹ÀUÇjP0KüùëñVn b0 ¶Iêưzm鯀V.p¹¼ÀÉg‹¾̣EiÁö“¿JÏ<û=ứru ¦₫̣˯Ø₫°}î…iùó/({ö¹èÓ|æ‡mÔ³¨B[ˆ º-`äÁÆơ†“×»u:Md½]c€°Â­½ë}>Ưöđå„^,lăêư|¿„£åB˜/B9Ñb®5lá¤ÂqCaàé/¿°å;/¾ô²²V¼¤́Ÿ}wơlĂa OĐ¿ÊeĐœ¬ß³¬N½ÛÀ6À VGB² °Ø$8\wù|¹‹Dii -ØÂI}₫ÅÊ4Kươ·Œgû+Ăö啯ĐK/¯rlå*ú́ó/̣®m(l0™a[oÎÖ #›d•ÂÈ!ơvÍăƒÇj{¶ ¸Ô é,ÏVÏ«†„«ùsÂĂÈqơ~ưÏg…°² J4 (P ¤[8©+^ZI+^v \ươ7¶|gå+¯*{yƠ+Ê>ÿâË<ªg\oÖ û ˜°ÍG×®ÅkôÖ=Û \â÷/2kÚZĐ ª·k†·Y÷5æB/ơ;́0x9ÏG'†m‚z¼1avûû+xÁ˜̀Ùç–ç Ÿ#ZÊg ¤ÛÏ>ÿ\9«/1dÁÑ•l¿™°ÅW_{ƒ^yíuzåUØkôÅ—~ئßP5[Ï6ưăÏuç©Ưö‘9Û\Ÿ_ùüº×'åœê9K ¶Ÿñ­b~ÂK™©¿ưûß™0̣o¿ư›^ă-zí7éµ×ߤW_ƒ¾üê«œí³­éz¶uM µƠ>R÷W.¦u­¯ÈñfÓĐ@Z°ưâ˯”ă †ÂÀÔû`Ëw̃xëmÇ̃|‹^gûꫯsÛ4G>C:™h@4  ¤¡´` '+ –Â₫ưïß3-Èûö;ï̉[oẴ¡7Ù¾₫úm.HCœ̣r‘ ˆ EiÁNê›́´*c‚©ÿ₫ƯÛßéƯƠïÑ;°wWÓÛlß|#°-!Éï‹¢h@4 ×@j°e'«2æ(xú»¶|°}÷½÷=è~óí·âÙg+[D¢Ñ@Ák -Ø~ÍNêÛï0d]ç\ưư÷ÿdÂÈ ï{ï¯ñl5C÷›o¿ØJ'+øN&£}ñøD¢´`ûÍ7ß:N«k`éïÿ±`û₫µ¤ àưö;­tB鄢рh đ5l9"¼Úp\ßc®₫Ç[¾³vưZ»n½²5lß}ÿ}^z¶¾m1\ÁÇÎg,£đ;†œc9Ç¢Ñ@H ¶ßrDxÍÚuc–ú`«’Z¸{‚^ă[lÄư2çI-ª –*æ Nó¤D}V>Ô³­©ß*ßSưÊ´„LKˆ̣RiÁösNs¬Z0Cu¢(_R d‹ºúºhĵ#é«®¥ËÙđ†ÆM‹2 V/¶†êµÚí »nD=[ʱœS ª÷麻–đĂê½zïwËùécɪéë}¶óâu dP" ä¿̉‚íÊU¯̉¥W^M—ÁF\«x ¾zÅă?øđ#ÚcßiÈ^ûÑî{́£lÁÂÅùWÏ6ʳ©gë3“ËØNGWï5«Ü^@¹?ñló¿SÉ…OΑh@4`k -ØÎ[° Ù“²í6t/fé¾´ơƒ3°ÅÁ{î«́¿û0ê7h(Íå7ù<Û|¨gÛ˜Dû‘°Œ+AçVÓñyªÛ¼ É…T.¤¢Ñ@e5lç̀[@½́®¬ïnCO·lưÀÛAĂö¦ƒ÷P í3pÍÿh₫Ơ³ …m|=[­tÀÊv@y½hF4P?4lçSÏ~»Q¯₫ƒ<àfÁV{µ qïƒiÎ<¶qơbkª^klă/g]\̃_uÇvv½h»ï3ÔrxƯYéÄơ£Ëy–ó,È ¤Û¹ó©Gßpû ́÷lA^íƠ´½úïΰ]Gơlñ’»ÈÉ-Â1GƠ³5ŸS¡`c1UÔ"'_ØØ¦æZ¸eÎb+pƒêÙÊêC 7‹D¢¼Ö@Z°=guï3@™öp·lƯ #¶ˆ-#| Øö́7ˆ*,ئ?:«Ưz­éÿü½Éo–s$ ˆ²5lg1l»öêGƯz÷÷€»y‹[̀ƠjĐöà˜3Üaß©GfµU¯UD&Ñ€h@4 ÈƠjäYs©KÏ~Ê\„”a‹đ1@Û]àÙsçå ¶"v»h@4  ä‹̣̉lgÎCº÷¡Î=ú*à"œ́ƒ-îh¯ íÊDF́9Wm¾4°‡tvÑ€h@4 H¶»ơ&˜î¦Í[2s¶¶=ú:^m—}¶)†Í¥3Kg ˆDù«´`;cÖjߥ§‚-<\x·Y°Å¢¨î_î“» 2bÏâÙæ¯8¤ăʹ ˆDéh -ØNŸUAí:÷đ7¶Ê«Øæơué\ét.iGiGÑ€h@k MضíÜÚuÉ7 ¶đj1WÛ™CÈpgÎÏV:£tFÑ€h@4PøH ¶3gS›NƯÈîÆM›3s¶›¶lqæjÙ«h;tíŰ“7ad»êNîÅôœ8£¢L¼\™» ˆD®t`[DÓf΢â]¨¤cW¸~Ø̣j)åỢ\-&v1Á;#`«3DƠlÉ:Iº‘ûAMᘥ å‹̣_©ÁvÆ,jƯ¾3•tèJm:ÂĂíAY°í̉Ë-¼ZXlk¹­*$PVFaơhíª?¶WQïVuëưå\²¯ÜüŒ˜Ï×é$‘¾1“̉ŸÙ—r²¢‚*Äs¡À=M₫ƒFÎQJ¶ÍZĐ´³Ù³íên¶g˰…W Đb5ƠŒÙyUÏÖç$îîˆ7»mæ9ư¼/ YïÖ®”F¶ ¨ă º~œ¯½qûxU-­ÀV`+ Ôº̉€m“æ­l[·ïê·‹¿5`ÛHíểƒçk»ơQ Åä.–0çS=ÛØyÇë)P÷ Ï2ª̃m@mZåéj¼E²ªú}ב\€‡yæ̉áj½ĂÉ_¼0Ñ@ưÔ@:°-æ9Û9 Ûî.p»©p̣†M›ô)¶j¾¶ko[Đxú¬ÙyUÏ6¶ âæWcêƯÆÁ6öó]FÂÖ1ÂÚâÙ `e% Ôº̉€m³miú̀ýƠöfØöàÛîlƯhĂF Û†l± ¹}ç.l-Ï6®^l Ô³†mBXÖ®/ëRă0µjÏÚãÈÏ×%¶Yơr[£D Œ¨ëçˆZλœwÑ@ík Ø6oÙÔ Ø~Tܾ—\¶Û4Ü–6mÚ¢¼Z¬BnÛ©»ZE5÷ ™aäĐz±æ¢%ÀĂ]ˆd.Ró–v(¶œç3³<;jơ/,JT–—]ó6ó9Qơn•Ø­T+p|ÖöŸđÏ·CÄN(Û\=ul̉Ùj¿³É9s ¨¿H¶E­:1ḷ¶Ÿ Û> ]·»ëÙnK láỤ̀|-` Đ–°ë;Í‚múBŒ ưÖߟ~[K[J›D¢0 ¤ÛÖ]¶‹¨¸Óî [önƯp²ăÙº°Ưèz¶XĐb5VUå*7²Ô³ÑË…O4  ä‹̉€m‹Ö]ØvÜÚZµsBÉY°U!d Ûv]r Û|i`9é́¢Ñ€h@4&l[wäÀ¶mOjÙ¦­÷{¶›2Ï×¶fЦr&Œ\y¶"n·h@4  ä‹̉€mQëÎ4mÖ£Ôªư†lo¶îÔ¢„a»Á #7R›nQ¥ MG^ª̀!äVí: le9~­/ÇÏ—(Ç!P ¶̉€mó–™›ó²}²=¨¨¸+[— lÿ¸[äpÄ|m+öj[¶íDS§‹g+¬°;˜œ_9¿¢Ñ4l›µlÇÜœKÍ‹{PóV]¨¯NnÖº#Ăvc&©Å†›•WëÀ¶3µhĂ„Øg'̃½h@4 ¨H¶M‹ÚĐ”i³©YK†,{¹ÍZu ¦ àuë}°Ư¤`Ûº}Z¶3eζˆLFö2² ˆê»̉€m“æ­ịÔ™Ô¤E{jÜ¢ ß¶¥¦|»nư†L=[,MÖ°EYÂÈ̉ùê{ç“ß/}@4P4 l›µ¤IS¦+ĐîÚ¼XYă¢âlØ¢,BÈ ¶âÙJèH¼zÑ€h@4PO4ls‰½‰“§Ñ.\ưGY³V ÜVÙ°EYÁaä’4Å#ëT‡åœÂĐ©vPñ&+]b&U¢™ÄBå/6S#åè2Ÿ‘縜|UןQµœk9×¢ÚƠ@*°mZD&M¥´¤›¶dØ̣-ÛÚơë3adlºU°e¯ -²` !8Àơç6ÿ#÷¯¯€UƠƮ窀k&â¬7[»'B:‚´¿h@4 (\ ¤ Û¿6nAm̉‚vjÚ‚aÛ‚Ö® ­̣lÛtÈZ [O6 ‚Mi¹YĐƯ_Y'« NT½Yñf%œ% ˆD9̉@:°mÎíúkă"†mQlu™A›Ø:̃±ª„“U^.¦̃lXFª…;R•s+çV4 Hª´aû—ÆÍ=àf{¶jq”ăƠẦ9[F6KƘ₫0²éÅâ$Uơq ôjÍr{®—ëû>®ŒjE¢Ñ€h Èl5pư°å ­ÚaË[{Î6Q=Ù„a`ơY!çØz³9hणyŒE¢Ñ@áj MØ₫e׿Đj«lEd…+29·rnE¢ú®´`ûÈÄÉ”¶đjƒV#×÷“!¿_.H¢Ñ€h 056lwܵY´g«S5 l SPr¡ó* ˆ²5&lwÜ¥)s›FFæ(ÀV<[éŒ̉E¢Ñ@}̉@Ú°Ưaç¦ ¶°@ØjĐ6/nŸµ¹>5¼üV¹ĐˆD¢ú£4a Đ*ÛÅîuëŒ R¼Ùôj¶ơGdrA‘s- Ôw ä ¶n(lZ­t¾ú̃ùä÷K Ô ¤ Û?ïÔÄñnÙÖ¬ đl5h¶ơGdrA‘s- Ôw 䶸°Åœ­x¶̉ñê{Ç“ß/}@4P¿4+ظ[ÉH%ißD¢Ñ€h€5 °• A4  ˆr¬mXBEơ+T$ç[ηh@4¤Z­$µ1ÊI4  Ô' lų•đ‘h@4  äX5 [I×(#Ùú4’•ß*z ˆ´̉‚íø “ỠZ¬BÖ–µÙ„­́³Ê…H4  Ô ¤ [´[¶̉±êKÇ’ß)Z ˆL Ô8l%©…P.B¢Ñ€h ¾i mØ₫é¯ êÙê•ÈRÏV:[}ëḷ{Eó¢ú«…­YơG`[E'9÷¢Ñ@}Ó@®` ï64]£́³•Vß:ü^Ѽh ~k@`›ă½ỦÁêw“ó/ç_4 €j¶²ÏVD'Ñ€h@4P5 °ÏV2LjD¢Ñ@5 °Íq'Áu/« +VPy©Œz“¶™¼N´" Ô lS†mYE9•Vñ3\­\<êÊÅCS´*H®Z-¶Á¦NŸE›eÂ¥åÊ»ÓVQÖƯy®{Uàñ †‘zæ½Ö·²̀ûËKK×W”E‡H’~~Øñ™Çh§ZZ9>Wÿ¦²îÎ S°-s«₫U·t‚ä@ÚJÚJ4 ȵ̣ ¶¥>¯àô<=ˆê¾‚YÓÄë=@7HZ ³Ÿß€ámz­¾ăs?'ʳU -/ơÀï„ư°µïg~t†\wù|јh@4+ älµ‡ix‡>Øj°u¡åÁïµ=X¼.Ϋ5aơù!̃«ö ‡-Ă?æX²ÂÈ|ü[éü¹êụ̈¹¢-Ñ@Íi -Ø>21SơG§l ­úF†'ṇ̃¼°ª^0dÂ4)lƒ–û|å)G_¬g+°•]s[ÚZÚZ4_ÈØÚ`4ĂºÚ«Œñ<ÍùOM…m³¼I7¼́†¡=AÆÁ6îø<Ø@6ÂƯúxüªs,Ú;Ï6¿:‡\¬ä|ˆDii `ëοfHñb¡rw;Œ¹hácw¡ÀåÛ2c‡¡ËËB·°5ßñùú»œc4ÏÜ®ă[D•½2Ù\Àe. 2?;3/í,¦’P²tø´:¼|hI4P;È+ئ/‚øĐmúßY;'R~‡´»h@4 È_ 䶺ˆ|%çlÓm${‹ˆ0Ưö•ö”ö ˆDÉ5P°°$´•´•h@4 È­̉„í»4£vnª LJ×+‘“ZHÉO* ˆD¨mT¡æv„*í+í+ TV[­Œ¢E¢Ñ€h ÇØæ¸+;ú‘×ˈY4  ̉‚í„ISè/»6'=o‹¹ÛZ],b-<±Ê9•s* ÔU Ô(l±(ª¨¤ƒªøSû ¤*Y¨@<` 3‰D¢Ñ@5Pa‹¢$½¨«£D9nñpD¢º¤ú[+£ªwkåNö§S̀¤[ổBr ÈLJI+£.2iÅ¡*”ê’ĐäXåÂ( Ôg ¤ Û¿6.̣æm1w›5g[»ad»jOvÙ_—;†U¢Ï®Àf̃b»‚z½WÂN2˜ ˆê½j¶˜¯m^Ü^ÍÛ¦LŸI›ỜIª kṾÁßFaw=+åbeƯidU€Z¼œ]Œ >îä·‹w# ÔG ä¶zUr–g[а•ùß4‰‡ í, ÔA Ôl×mب¼ZÓ‚=Ûz³^ăVơy¼ÏïeÚơní0°½€*®̃,>/¾^Üñ˨·>zå7‹îE…­Ô`;y*ưµI 5g«míºơ´MĂFÔàÛ4¤Ú‡­;«B»®¡̃-₫Öóª¡`³°»~_T½Y»^mvY`+•¾¨Èù•ó+ÈÖ@öYëv¤­Fçlë`ØA+-Ñ€h@4PH¶zE2¼[¿g»~ƒYmaˆG.rE¢Ñ@2 Ô(l›¶jK0¶ÓfÔÜjdñleQ…h@4  Ô’̉„íNM[̉NÏwđ˜†î¤|„-̣!ë}¸’׸̣á-ö2(=¦ ,*ß̉f̉f¢‚Đ@Âqf˜†î¤)yæÙª¤™\ÈÈ¥“ZÄü¼ª@¥¹!ÅK­>ïÂ6+ÛV/*˜qî́6ˆ{̃|}²L`ùwµ1XŒÏd–}üIß_WÛ§VûEơ/¿-ÿú£}N̉‚-¸ ‡u°Leï6˳ÍØ–U„ÀÅÆw‘ª¤wV€‰:₫¼èpˆ pA‡h û÷f§ÛôwÀ¸ç“´_m·’ïÏ̉q%/ôƠ}T;&9₫$çA^“ÿp‘sä?G5 [µ7qf×Ăȱg³êNuàeFÙ~8†Ơ›Ơ'6ôùª<¦ç©đ£S*f<çsÙë-3ëÙf¼`|¿L¼c̉»¢¶¼Øz¹ Çøûơ{+øøt%"ïX́ÁGƠÓI:̃£e•ÅÇÿˆös~;ŸR³ưưç'îùHÏ.ªư+ѾæùQơ”Ít¡ü|mÈmç ­Ăªx¶º…Á6‰çëÓŸˆT¨ĐJ̉ÈQPÿ6ÛÏ,évôµCD½éê¾?đúc₫₫˜OlÿÇûĂôŸTRo»VĂÑiĂvWL˺̃íÚu2¹‘áæ"y2LC׆­¬”î¤|_wȸz³qÏ;äpÏVĂÖ [­s!1̃¯Äk˜÷—äó{Ê¥Tjt:|y±‰«—wü‘¿ßíh™¼ÎÎqg{ °µÏơûơùĂo6KVj„q₫0œ¢ÚϹ%XÇ÷|l"Û?AûúÏOh2́C|ÉÆêz¦q©w»ĐGœ~ăt×~q…BâêM§ñ₫¸ßơcû”₫é/Û9zÛ5!¨1Ø®aØ₫Ơå‘ñÂ…îD®^UÏ6,tWo6îyrI`ëuÊØÚ#q³ƒÆuVçâï÷ülØú>? -B?î÷›µ{ƯP¯ç'gœÎñpü×ôªªÛP¯,¦ứÁ‹ưûâ¯6l"Bé¾ï7Û_¸p<ÏŸÛ7A I6–qP‹{øó™ˆPX-ç$Çx|±íWưzÓ‘ư7Q½êøßÛÈ₫¥ÿ¸₫èøkÉû“@˜Úl7„7ƯyQs!ZæwV¶:|\yØÆŸÿ¨öÓ[{üçÇ¿ËlsçađàïϪǴ[¤â‚:iûÚúE=å¬Á[ø4CôùOxü¡ uẫ÷¼½8ÏZß`†ÎĂÆ­k?ßó™ÅŒ&`#ëMWóưñµ¬Ă/æIú¨₫ÍE™1ư»:Ç7’ç£a]s°]»Îóh5p ̣lă:\Ÿ÷ ÚX¬’åçø8êªpØÆ‡́êêïK÷¸¥ª×̉~Ơk¿Üzrrl¹Ùúƒ4Ç(æÓ©Ư¹[¿g[G`&ÿ–†²Zÿ‹ëö…Ẫâ#ç³rçSÚ¯rí%úªưöJͳMÛviF¦å£g+¢¬}QÊ9s  ̉†mSTÑs½Û,Ï ưóÎM=à>21`”„gÅk Ô/ „nK I#ú¨_ú(ó]£°hÿ´S\Øø‰“¥êO©ĐF¡̣{ij ˆ̉Ô@°mÖº5ăy[x·°,ÏV`+âMS¼̣Y¢'Ñ€h ®h Fa»ĂÎF̃‰ĂÈ| “0²t”º̉Qä8E«¢Ñ@u4P³° ³mV$óJ ˆD¢‚Ö@ Á¶­ÁÖŸ]Ø£mî<Û&ÍZ8 lU´ÈJ&`1×™PrưùƠÉ{et- ˆể‚í”é3©yq{j̃º=ÏÛbî¶­Û°QçFlQˆ '¶héÙ#“¦R“æ­|£™*'°O8*¬|f£ºwR¥#Ê9 ˆDù¥taÛÁ…-—¡ëÁv›†Û̉®·÷—Æ%´căbuû—&%4ảtjZÔ:1lÍ́Na9N«SO3êóơsåœb/“®1¬¬¿öme’ñ‡Ơ;ơ¾ß­ĐS×êuJÇϯ/çC·h f5l‹hÊôYTTÜ‘½Û Z@·#­Wí¶Ô`›†ÛÑÚu¹m{.¯×NƯÂ&Nɰ-I [-°DèöăU­§ơùQ… |%ܡlj»ĐëuÆư~y¾f;¿´·´·h æ4*lK:S[óbÜvaØn¢mmǰm´½‚í.Í;ÓÎÍ`”Mœ2‹µh›lU _½Ǿ.IÂÈQ° ­7Po3®zOèơ ^§t́ëØ̉Ö̉Ö¢ü̉@:°mÁíljѦ+[7jÙ¶;µlד6lÜL ™³ 6úoºƯÄo{̉®E=غÓ.EƯ¶Ô¼e»HØf•ă¹ÙÄ«b=Í´`‹E_‰CÈA°-°z̉ùó«óËùó!¨9 ¤[^P<•aÛ²m†l/jƠ¾µîĐŸa»•nû'†í¶fØnæJ}¨qË̃ Ư^ ¼“¦̀aضO ¶IêIV§h\½Yûûưaáø“Zèơ:W¯ºÏÇ·³\`¤D¢Ö@:°mISgT0d{+ÈwÜJ:¦›> FÛíØîÀ°ƯBM[÷§&­úrá[¸“¦¶B¶₫dêz:¡Û\×ÓŒ₫ü$ơ&ízºÉ=[€¨€ëuf„]]˜Æ½_."5}‘ï͉â5l›4lç0hûQq§AÔ¦ójÛuO†í‡´ív¡Û [©YÉnp[²‡ëÁÖïÙ̉IKî*èm/¤ö‘ßßA¥¤D…¡´`;mæ\öh* mßm?Ú¸ù#Úvû¿¶;*Ø6/DM‹[x¶#gÏÙÖua¥U÷VêuF«ëz–ẳÑ@:°mEÓfÎs½Ú¡Ô®ë>Ô¡Ç´ióÇ ÛLØÂ³í§æm±Hjâ”ÙY«‘åĦsb¥¥E¢Ñ@₫h -ØNgضé¼;µí²GlF̃BͨER»²W»Kó®¼Ï[Út>L{₫ˆ]Î…œ Ñ€h ¶4láÙ–tİÊa佨C÷ư9Œ Ï–ĂÈÎjd,êË^m/öj»©=·AI-j«!ä{¥D¢Ñ@®4l[ry.•t ¼Û6J̃‹aë.röÙnæyÚÊ£UI-8ƒÔ„É3²̉5æê‡ÊçJ' ˆD¢Ú̉@°m̀«‘§ÍÄjä¾j‘”³"ÙØú“É å@v§¦í8mcÎ<-«Am5„|¯tBÑ€h@4 È•̉-'µPûl{QkNhQ̀[€J: ¤ ›¶R# ¹‘È₫…‹́¸k+RU˜Ô¹úq̣¹̉qD¢Ñ€h 4 l›¶È å¤jlÅ©̃ ·8é3UZ;åơviA;pm[_=Û„%̣̣¡Ñjắª?µq ̣rÑ ˆDUÓ@:°-ât³8/r׺*đ®ß¸‰aË…₫¸SÏvÇ]²nñø?ïÜŒÆOœL›Ơ)Ï6I!ƒ\‰1(OtÚßU›¿/íß"ŸWµ‹‚´›´›h } ¤[”ØkQ̉‰«ưÀ:óߪ?(±çÀv{³ÍèÏ;7ul§¦°µ“9åΪ'«ÓrzD§êWûAư7{ÍN²‰ *+3ëṆ̃ưîN£ÆÖ‹µS)ºƠ…|U€́×T"ûSÜñéc,/+£ ¯²‘UƠÈûÍNªK³Bl=̃$¿ÏkGJÓư₫í/7ưÎ+m*m*¨;H¶Í]϶“\®i[T¢ëÙ6l:°eoƠ¦<Û¦ÏV¶¼Ôót@d€˜•Øß¬êă^đüt˜̃ 4Pê=™ûq… ́(ÏϨă¯4p£Ïl¬t¥¥ê7ë諯ë (ü¿×®JưûüWí¬_‚ö— CƯ¹0ȹ’s%HWéÂÖlóâ Ünñx¶®gû§̀[N0&\̀ k!”–»06ËÑîkmØú₫ “^"N…¹-`ÛÇçó̀MÏÖ.>o†u]:lĂ_uÛ_:oºWÚSÚS4Pw4 Ø•p™­’­Óh¾ª9h•¨Â¤æăuº …Jsá`QÎaç̀+ î¾ÏÏ,¦̣×·ÉZ püÙaä(؆_’zºæk0·«+äư:4µM‡¿«Ù₫ra¨;9Wr®Déj V`«W$Û ¤r}rƒÂ´¹₫ÎÊ|~¾_e~‹¼6Ư*í)í)¨Û¨7°M«Îl®ŸïÇ—«ß-Ÿ[·/ r₫äü‰’i ̃ÀV‘L̉N̉N¢Ñ€h } l%MdÊà%ô/̉¦̉¦¢Ük Fa»ă®Í}Y¤jzÎV•{AIK‹D¢l lųÏV4  ˆr¬mXFx2Ê ˆD¢­ÀVF´¢Ñ€h@4c Ô lQư†z¶f!‚º>úó*÷¸•„̉ü=RÏVFÆiêI>Kô$¨Y lk»k.SH=Ûír1’ö ˆ̉̉@̃À6¶̃jPºF3pL=V/i„Q¹Æ«k|?]¤?£~ÎLi§cÔ°ơ§ǸNëhŸ@©g+:­N-Ÿ#Z äỴ̈¶‡¨đz«Iêņz¶qUkܼÆYyíJ>:7²~œï›Åü°‡¬Ù)’ÔÛ•z¶ù׉äÂ&çD4 ˆÓ@ÍÁvƯzúKă"̉{mƒæl#«̉$¬]üÜ_¦ºU5(ª^«<·kÈZ“êg\…r{RÏV:l\‡•çE#¢º©ºÛ„ơb£`ëw«₫.5 ̉'đ|•ÈÀ¶¼œ‹×z̉Î!ơlëf'Jz~åur~EơWu¶ÉêÅú€eƠ›(B*4QrËÏéY¯5±gëÖƒµ¿Ûó€¥­\pêïGνœûúª¼m̉z«v½Û,2ª̃¬ Eëâè€Q(=ª^®¥†$xç:»Úü°ÆăÎgz‹¯øµ₫ôR϶¾v6ùƯÑ@ưƠ@­Àó¶°G&Ö>Ûêv¤\nªî±ÉûëïEBνœ{Ñ@ơ5 °ÍqÖ¤"•z¶Ơs̉¶–×I[‹D5­mÀ¶¦O¼|Ÿ\lD¢Ñ@Íi@`+°•œ¨¢Ñ€h@4c lsÜÀ2r¬¹‘£´µ´µh@4¯Ø leD+ ˆD9Ö€À6Ç œ¯£,9.ñD¢Ñ@Íi@`+°•­h@4  äX5Ûµœù¯MZxù‘eŸmͨdô*m- ˆjWÛJfj»^®t˜Úí0̉₫̉₫¢Ñ@U4w°5Ó®à‚vV¥Àz³º"r«T\ƯÇKÛhTúA*Å2 Đé3é½zºn®d}^ªÅ˜z¹ªñí×T¡̣OUN¢¼G:¿h@4 Èo älàŒ2w3@hCëͺ S¹"fÙ¾$ơbÍ\ÇA~¢Køùs-«ăàÊ\P%£'rÑ̀œ9?UÑ@­Àuma|¹‘Ú²A§¸xx̃(计mĂÖS·`½~,²®{L‘Åéï¹rä«rå=̉ùE¢Ñ@~k ÁÖª̣“&lÖÛ•‘ßBΜÑ€h ¨QØîÔ´¥·"9Û³ ªW딣Ógd½Ù„­Ö5=Ux¶ö­¿<^ÿ²U³apûơ¹8ị™r1 ˆDuKy[ˆÇ®Wë û,RRÏ›cÎ×]đ™ Ÿẹ̈r̀gêÑúàèûǜbª¬ybïưÙ!âØz»2's¸¢Ñ€h ̃i ï`›ËÑÔ‹­[#Á\jA>[´  Ô¤RƒíŒYÔ²m'jѦ#•tP¶~ĂFÚ¦a#jđÇm’ZÄ…‘sùĂ¥^¬t¬\êK>[ô% Di V`‹LR° “§Ră¦Eơ.œ R:¥h@4 ¨_ØÊ܉ vD¢Ñ€h ǨQØîܬ•J϶~êd/ç[4 ¨ÏÈl1o ˳ØJg«ÏM~»è_4P5P+°ÅB)ØD™³•ĐMC7rq«¿79÷rîóI[¹Ø đE¢Ñ€h ǨQØî̉¼5éPrÚ­]µ§ú#'{Ue èc@̉Œ|Ë$•~ûȨ¹ú“6”6 Ô  lq² T{¤S!äó}i«} éuÆôÛ'ûؤ̃oz竾\„äwfêƒ̣¶₫䜫Ø*QUïVÁ¤Œ«ÿ„¥SŒ«7k=_^ml½[ª¡°ù~ưÛÍ4“ª6o`;ï ¯×ë F¢ÚÇ«́¤³4½sï÷—›ơ€cKRï7+§û₫ơˆëCg”ß(Đ ®̣ ¶6¤X ØÆƠ»µëßÚŸg§kô×›EØØ¬ ”FNR‚OC-(Œưư®È4đŒrvYÀ°™¤^¯Y8kPÀƒ ́ø<ó»öÍ6hP]ï·zơˆåBT¸"9·rn ]µ[̀ÛÂ&N™ferè™Æ‡t#aâyyđ`Èẻ¬$¦zûºÀÏJRï6ä3“ц£Z,„zp=ëØ÷+Ï5ÄO¡q’6×ÈE[4 ÈG äl-‘ÀËó<ÛjÂ6®̃l®a÷ư:T\-ØV§^¯íÙgÏ lå"–19&Ñe]Đ@ÍÁvưÚµ¨˜ôä Ï6«*`‹’y.ˆ²ëÅúëƯÆÁ º̃,>Ëï•Ùá$ơn£ÂȉêƯÆÂV{ÿ!åư¬9n»^¯/$m~—åÅë²…v9ôưî9̣C«̃ouë×…%Ç(~Ñ€h HyÛLY§æl|½X}ñ7·Ư¨ÇŒÅ>fH7²̃¬µ@h/̣mÿ‰¬wk‡Àơoñÿ†đï~ö|mlĂëơ&ió5˜ÛƠµq Ĩ¯ækCëüU³±\Ää"& ÔU älëj#æËqK½^¹å‹å8D‹¢¿¶ ¶ƠÔÑH½^¹¸ƠÊ1Në«j¶˜·…e¯F!ÖW!Êïí‹D…¬mx¶…,Rùmr ˆêºj ¶ëx5ră%̃dñl¥óÔơÎ#Ç/ ˆ’j@`+­Tû ˆD¢k V`‹ư¶°IS¦[¤d””t”$¯­ˆD¢º£mG3̉êNgs%çJ4 È•j¶MZ¶ñæmÓölÓ¯×ZXơls% ù\¹8‰D¢x  lq²Ó¯×Ÿ9HdùZÏV:D|‡6’6 ˆr¡¼ƒ­Ô³uÊĐẻ#&«g› qÈgÊEG4  ¤£¼‚­Ô³5r W¡­tt:…´£´£h@4¶j¶Øo ›4Ơ^,ơl‘È?¨đ|Ú'^>O.&¢Ñ€h æ4g°µ~¸Ô³•½o²Z\4  €j¶M[µ%½"9ȳ•z¶NY<ÛmÊÈ^ÚZ4 ¨ äl¥­SÇ7cÙơl¥cÔDÇï‰Dij ¯`›æ“Ï’" ˆDù¢m̀䋘ä8äÂ& ˆ‚5P+°Å¼-lrÖjdªU4  ˆ O[ñle¥£h@4  äX5 Ûf­Û‘^‘,máÜd4.çT4  äAY`+Q:¢h@4 ¨Ï6Ç¡ƒú(*ùÍr1 ˆD~ l¶2W# ˆD9Ö@­Àó¶°ÉÓfPă¦Es’ETÖ]Fµ2ª ˆD¢Œ ¶eµ[’.+ådGK"f¹ ‰D¢ü×@ÍÁvĂFj^Üô")Û³Ơơ[ËËËt…8»—Q…™ÎP—¡Đ́çÜ×ét‡^Ụ̈RÏ“.-wÓ"Ÿă«§»Âÿưú¹¨z³¶™z´øÚHG̀ÿ(çHΑh °57°…Đ@eÀd×·µ½Fơz¸ü¡-`l€V »´<öL}E|U‡\!à1€<¤̃¬¶Y¹€öDίœ_Ñ@2 äl}‰÷Í 8!«í5F…‘ơsÊCU°äú¹ `¬DS•ÇóŒ­A€2™ ¥¤D¢BÔ@Z°6cµj×™Z¶íD-ÚtT¶#ÇÛ4lD ₫¸MCZFÖm(lM0F̀ƒFÁÖñbÀª¿K o7EØ:¡pñj ±ĂÈoˆDUÑ@­Àó¶°)Öjd„…ĂaÛ€i…y ë 5«¯=¾ªP1<Ô ÿ÷e/n2<_ư]±­–¶¿[J̀ªóªt4y\ Eơ[y[sA‘®åùQsƠ¿€)`ñ‘ñ¾,ïR…¢ơ-ƒỖ¦ªÎÀ¯·ëí®đ ̀­?̃â+ëø¥ĂƠï'ç_οh ~j o`+¬Ÿ”ó.ç]4 ¨H¶m9[më7n ³ #ׇ—ß(Ñ€h@4Pÿ4*lƯR[™Ÿ•ùYÑ€h@4 04*lų­£5¡Ë9 ˆDñH¶âÙÆ7¸ˆRÚH4  Ô? ¤Û]›6'µÏV<Ûú' ¹hÈ9 ˆDñlß{ï=Z²d M™2%˦NªĂ­i‹/¦µk×̉?ü@‰`‹ ÈtQT̉AåH†M™>“7+œª?"¸xÁII‰DơQ€-@ûƠW_Ñÿû_Ï₫óŸÿ́§Ÿ~¢ü‰¡ú#}ÿưôÍ7ß̉gŸ}Në×o¤¥K—*Ø6Ömx¹‘J'¥ÓK¸0À¶‰ÀVÈBÑ€h@4Pàl'Mäƒ́o¿ư›~ùơWúùç_èË/¿f¸~Aÿô3úøă¿Ó†›éơ7̃¦M›¶Đ„‰ü° ##g#öµnßÅËéđNåØsÓæ-kIdn’ Éa\Kí/£ûú8º—ß,º¯¯аỚ¿ÿÍ ưåWú׿~¦₫ó'úûß?£>ú„¶~đv+½óîûôê«o*Ï6Û"gΖ=[Ó6è}¶Û4Ü–)½‰Út́A%ºSqûnʦϜMÍZƠâÅ> c®ê«ĐåwËE^4 ¨M ˜°ưư÷ßé×_ó@ûư÷?̉GB[¶|H6l¦5k6ĐÛo¿G¯¼̣­[·![Ocn¶îÀk{®kl6Ú6nÚLºơ¥ö]ûP;e½iǼ¹Ô¼UqÍÁÖJÇX^ Û°z¶Ơ®·+¯¹ó,m-m- ä™̉€m“æ-hú¬ÙTÜ™ÖN]=Û°‰3H5Ú–4Úv{Ú¸y uî½uê5À³YsæS‹â¶5$ ;rv9®mơvksd%ß-#{Ñ€h@4P;H¶-Z̉ô9Ô¦G‰»öđn7°3Ûp[†í¶Ûÿ‰6mù€z FƯû¥nư†(«˜÷(µjÓ¾f`T­n%êÙFV%JXoW„^;B—v—v ˆjSiÀ¶i«V4cî\jׇ£ĂÚz÷QÎlĂí¶£ÛưéÏ´yë‡Ôgđ>Ô{÷½©× =•Í}t1·ëT°MXo·6O¶|·\lD¢Ñ@íh Ø6/)¦Y æS§A©ă ³uÜmmܺ…m¿=`»máVư÷8€ú ƯúÙWÙ¼…ñ‚©.lu)»°âëU}ïó¦*ƒg¬F«g›F½Ư€²*Ơ'Åå¥Ó×N§—v—v Ô¼̉€mQ»¶4{ÑBê²×Œí9„6}°•ưùOÔ`û?ï¨`;`¯ƒ¸R¿aû+›·h ¯P®)ØrăújƯ2đ¸¼ŸJ¶jÖêz¶©ƠÛØÖL$#ÏGÈÅ­æ/n̉æ̉æù¤¶¿ÿ₫‚a V&ûí÷œđâú⋯èÿøBmÿ±W#·èÔ*–,¦î́EƯtÿ̃üÑ´íÎÀvà̃Ó€=b;PÙüÅK`+É'ȱˆE¢Ñ@ơ5`Ăö¿ÿưÿhØĐ¡4üÜséú‘#={èÁé‰Ç§¿ưíÓ,ض́̉‘æ<₫ơ*Ư—m?ÇÛ—6ü!m·ă~ØögÈjØVÿJ'6 ˆDù¯ Ø^p₫ùT1{6=ù䓽ụ̈Ë´zơê@ضêÖ‰æ>±„úqơ9’o{±¿Û¿0l·ó…‘ỹs·n¹¤Cg +JÈS4  ˆ Zi„‘lŸdØ´G¨nư°uH `ÈögÈúHƠÔjdrA YFöù?²—s$ç¨>k 0²ölXe‡ï¯BÊg»íöÎÖŸ¾Cö¡>¼ơ§÷ ½¨×n¼ơgÁbjƯ¶ƒ@@Ä—¡èÿ¤¤ŸˆDuXi„‘[vî@s–=F=̃‡zh;ho^ ơ!m»#/j´“Ô¢çÀ=¨‡—Ôb°JjѲ¤¨ (µ‘ªÀVúôÑ@k 0r‹íhöc ©ë>Ă2¶÷PÚô!¯FÆÖ¤kÜ´y+ué3(“²±çBºÆ¢V%"°Xb l¥H? °̉#7oÛ†f=º€:æÔÇÚvß6må}¶â¤N!‚-Ô±G?UŒÀ±>4³‚ ´¬ÁBIN¤¹WÊïU¾ó#mey©ÚÓ\QÖ=ùû¶ÉÛ*‰å5̉¢¼̉@lo½åµÍgåÊ•½ưöÛ\ùgCàjäfÅÅ4s̃ª»Yå¶̉]¹§#;‰ÀV`+đ °̉€mcçz¶­9ÍqkÎQ¡ŒÿVÅăQÏöÛ4Tw]ضlÛ‰`S¶x³ï"¬! çKù¾b\½Ù¸ç…{¶¶^øØ̣lïWËÜw€™p¶§\J¥†˜đy&́ăêåÆäïw«¾Oµ±sÜÙhlíscư~uƯ6Ë \Ķr¡-à m]ơÆä¸^¿h7Ø6eØÎœE­ÚwÎ8®ü·ÛFضn×EA¶E›Ê¦NgØ̣›mØ.¬Ñ o¬å]Ôăwß—¶^ơŸØÚs¸&¬âª5đNmØú>? Œzüq¿ß¬Ưë†z=o<Ñ<3 ́ $2Q¿g¯?çO`›^'• ´¥h îk Ø6WaDˆµÓ[[®ơælU¹ÀÖÅÈ|~Ï0¶Xéc¿>ÖQyÎa'öLèƯ %'^‘,­x¶ ¼N\?”çóU#©Â¶­¶ëmت02^TÏVÆö¤ø_‰z´NÖø #œjzea'K…‘­í@¦§ KÓ³ÄEŠ뺙d° ?₫ÈöÍÙV}ÎÖô”+½K`+°Ø X©ÂỌ̈lC`ÛI¦æl½0r°gä «Æ„aă´zN1ăyYó·Ö¤=§ ˜•ó"ª Ï-I½[ó5˜ÛƠŸ…ߘäưÉß¿HIµŸÙnîXüs!Z¦«[>؇‘¯†—h³64`Â5lùåWúç?¢~ø‘¾ûî{úàƒU Ûuë6̉{ï­¥7ßz—V®zïo  'đë~`^ºaäd-`똶ù!&ß‚¦́9ÊÚ8iùülư‡DÇ+­x5́Ơ$ệû ºhØ₫₫ûïh¿ÿ₫U4₫믿eĐnQ`}ïưµôöÛ«éµ×ߢ—W¾ ÛD-Wù öló¶‘!d½­E2K¥ß)¶é·©\¼¥MEy£ÀváÂ…ôƠW_ѯ¿₫Jÿú×ḮÙ₫“~üñŸÊ»ưûß?¥?₫„>úøoôá‡ÑV.̃³™Ó¿ûî{4₫|åÙîØ³íà,r`›Ÿ­Œ@kiĐ#°Í›‹‚ôZêÆ‚î€-R1¸ '5€Ó~•‚mIÇ®ÔI-̣8Œ,ZºĐl úB#ưª–ú•[G̃ˆC.r ˆDéh Ø&#kØ*à²M›1;;©…ÀV`+ ˆD¦4`ë­FNêÙ¶0m:#&yJ;D¢üÖ@°­œgËy¶ù- é´r~D¢Ñ@º¨Yت{]TAØ4.±—Uˆ ÀB"Øt+í)í) ÔE Ô(lÛvæÂñ \ÔµÅÊdÔ³m̉¬fëÙÖÅ“$Ç,Ñ€h@4P·5P3°å:{7m¦]{S»Î=•¼3fÏáâñ-e!€xó¢Ñ€h@4PĐ‚-¶ôüç?ÿ 5¤u4·₫ÄÎÙ6l´mÚ¼…:÷@º÷£ƯûR‡n}hǽ¹Ô¬E«‚n`ÖíѨœ?9¢Ñ@‚-@Û·o_êÔ©“²®]»̉{́A\p7NA8¶fy=üí"h´Ưö´iËVễ0uë;ˆºôÙ:÷@³ç̀§¢V%[ÑD¢Ñ@Ak ʳ=á„謳΢Q£F©ÔŒ«V­R  ólCa»íö¦-[? ¾ƒ÷¦̃ƒö¤^÷ ư‡RÅüG©EqÛ‚nà4FḌ2² ˆDu[as¶:”|íµ×̉¢E‹èư÷ß÷@‹LR>϶‰Sơ'¶ÛưiÚúÁG´Û^Ñ€=ö§₫C÷UàûèbjƠ¦½ÀVF´¢Ñ€h@4PĐаưî»ï¸Á¿|)áÁ“]²d‰´A°Eµ¼PØnÿçië‡ÓĐư§Ư÷9”¡{0 Üó@¿h ·ëXĐ ,£Ñº=•ó'çO4 HC¶?₫ø£Ê Ơ4”̃ûïÿK¸5‡ç «B́ÙFÂöO;ü…>øèo´çÁGѰ !û•*è.X¼ŒJx¿m?D>C:„h@4  ä«4láƠêĐ0@gmrØîøWú€kôíuè± Ü£i¨ ÜG{œÚp’‹|m9.鸢Ñ€h@4†4l,€ª½X Xó6¹gëÁö(†íá4xßRR°í(°MăDÊgÈA4  ä¯4lĂ€đ1àÛ K[#ïqĐ‘hí톑ųÏ^†ˆD¢×€†mLăO[½@jđ¾‡Ñ ½¡jỤî©N"²™Œ¶ów´-çFÎh f4 a hVƠbHm‡}¶|Hư‡íOưxÛO¿!û¨­?ă'M£ÓÎ<—Z–´7¬µ,n§öß*kƯÆgE|‰0·,ö[‹bÎFe>Ưá×µâ×·v> Ÿ›e%ü˜ûư­ÚtP[‘œûúµîq¸Ç‚ÏSßƯ¢55-j©̉M6ĩBåxnÜ´ˆ +đßüXÓ¢VÔ ¯Ă1èïw?Çâü|F+ơzçưÍƠj31iÑ€h@4 °5pÜ 'Ñ]ăîßúÓh»?q:©ÍÔk·=¨ç€a*¡E₫Cè́ .¡‡™Ló²=êÙ́y höÜ4kî|ÅY¦‚mÍªÈØL₫égÎæ[ưø~^¿Ÿ¥?Sưmó}Áß‹Ïp ßá~ÏôYª*a“1–cOîêôNŸÉÏÏ£l ïăcQV1—f¨ç*2ïç÷M™>“¦LÓ6ƒ&O ±©Óir„Mâç²l ?c§L#ŸMæû16ạTª´MB {„ÿNÅ&N¦GblŸƠWåeÖ¦Sy]ó₫ṽă|Go.€Â µéÔƒ+u§’]©5o[Bm̃Vœ›²{Å-JÆăVíø9~Mq~-¿§-§¶’=øñnêư­Úu¢–m:R¿¯yq{j̃Ö¹Ö´U[³&-Ûi[”PœíZTL¶í̉¼5EÙÎÍZ‘m;5mIqö×&-È´¿4.¢8Ûq׿TYÛa—fg̃¹)UÖ₫´Sª¬mÿׯgög~Ưºít›¢ươyÁùĂyƠçºĐúÑ̉·Jo®A¶µ`]æÂ‚¾Ë|̀<®°¿íß’ä~P?²ûNĐ}»/%é7A}%®ïÔf?Ỉ'*ÛªúzóX̀₫Ơô5m¬¯av?ˆê ĐOP_̉¿P¢¶ïïÈá4ö–[ơtljܤ)ÍáôŒºAPYou«©Œá© œ ;T R¥ú`m:u1ç5™×ñß^§àÏt>Ë6@’MƠà43fBV54.JÆÅ àmÙ¶£ ƯΔœk¥ ÛY½¯-âđr‘ Zû¢Z¿æy¯nħ6=Û«®Å\½CñƠƒ-₫h´-€{ÏΧĂ:Î+"Ÿ U@´ kÜÚ@´ïë÷"̀«¬}¸!”ë3„ TMó]tJN¾`0h½0„]\,\ùb¡Íó*TØØ±$¼&É"ÎÛ º@ąǶÉĂɹ‚mXXÙÙW6”NÖ0Ø:Ó3iơm²₫TYØ¢/˜ÀƠ¡å\M¯Ôl<́H^³4Wñ\5V”g–VƒÀpyÇŒK6nÊK[¿aÅÛF~M:¶?'U[¿ÖåÀỌ̈gfÙ:~̀gëù~ú¶†?3ă…XLPf´Iv›»ç%JºKKÓµñ9©ô¡”úM`_±ûOúN•úI]î‘ư@_‹œkWàu1äú›XẰ1Ô“­I=f¬â¨áÑú=[s?×·i¨VO‰IˆD¢Ñ€h ¹ÀÏ ưÑÿ?œ̉éú¹Â°₫IEND®B`‚nova-2014.1/doc/source/images/filteringWorkflow1.png0000664000175400017540000020266512323721476023543 0ustar jenkinsjenkins00000000000000‰PNG  IHDR&µ«³sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÜ;Ưo¶ß IDATxÚ́½gp\Yvçù{.½7đ,ºbùju«KƠѶ¤PKÑjV#íNÄF̀îhûm#6b¿(vFóe$…4=…´­ÑŒÔ¶Ô¶Ú—#‹E$áL™‰ô₫å3w?…*6YU$î₫"&€̀‡ûιïÏ=÷E!H$‰D"Ù¨r$‰D"‘Ha"‘H$‰D"…‰D"‘H$)L$‰D"‘H¤0‘H$‰D"…‰D"‘H$‰&‰D"‘H¤0‘H$‰D"‘ÂD"‘H$‰&‰D"‘H$R˜H$‰D"‘ÂD"‘H$‰D ‰D"‘H$R˜H$‰D"‘Ha"‘H$‰D ‰D"‘H$)L$‰D"‘H¤0‘H$‰D"…‰D"‘H$‰&‰D"‘H¤0‘H$‰D"‘ÂD"‘H$‰&‰D"‘H$R˜H$‰D"‘ÂD"‘H$‰D ‰D"‘H$R˜H$‰D"‘Ha"‘H$‰D ‰D"‘H$)L$‰D"‘Ha"‘H$‰D"…‰D"‘H$)L$‰D"‘H¤0‘H$‰D"‘ÂD"‘H$‰&‰D"‘H$ï‹~˜ÿx!BˆÍ¯ß¢( ((o-‘H6q…‹p®‹í8ô, !\ ƯÀĐuTUEQ”;₫I$‰&÷#µFƒV³I³Ù¤ƠíĐ1Mz–…í8(‚®ix ƒ€×GĐï' …ƒrr•j!_«×)—ËÔ ê­&íNÛ¶×ʆP¨ª‚ßë# ˆ'¤‰MÁ"‘H$÷B?*8€´»]kk¬•ËTuÚ¦‰â1Đ Ÿ?€f¨ªi Àu\×ÁîY˜6®e#,›€×K2'L’N%1tCZä@ă¸kÅ+¹åj•ƠCñxđ…‚øü<~†Çsïßµm¬®‰ÙíĐn4qLŸnøéO¦Âó¿+‘H¤09xªăP(®±¼£T¯c!D#Âa ¯ơí­X¹ !@\W¬O°µ:Fƒ ÇC2expd"!W€’ƒ%æ;–2̣åµN8L8Ăđù¶ñx{ÛÔ±lZ:R™€®“ŒD&LÊA—H$S˜8Cvy™å|J«‰/!­‹u{r}]×Ǻth”+8í©h”á₫~¤@‘́[„›‚d¹¸†¥@$™Ä ¢éÛ»ëëº.=Ó¤Y.cµZôÇŒ ̉—NË!‘Har0„‰‚́Ê ™•jƯ₫xŒP,†®ë;ú™¶eѬT0kuR‘(£ĂCô¥̉R Hö–e1¿°ÀR>‡­iDRIü¡Đ#±cË4i”+X‰$GÆÇ ?¢Ï–H$R˜́ˆ8¨7̀̀ÏS¬×đDÂD’)4]{¤×a[µµ"n«Í`*Åщ ~¿´0ÉÆ‚µâÓsó4m‹P*E0̃Q`™&•\­g11<̀ØØ῭ă’H¤0Ù_ضÍR6Ë\6ƒ¥ëô o{ÈùAéu»”Wsx]Á©cÇèëÛ¶-$‰d;1{=¦fgY-Q|>RCC»¥BĐªƠh•+D gOŸ&Ë›%‘Ha²÷ét»¼59I¥Ó&˜ˆÇ÷Ôơ•óyÜV›XœS'N`rå'Ù;Ô›M̃ºqƒºƠ#14ˆ/ØS×'„ ·°ˆÏœ˜˜`hpP |‰D “½K¹RáúíÛÔm‹Á#h¶'¯³×íR̀f‰{|<~á~ŸOZœd×ø+ù<Ó tpßÓ¹µb‘^­A4ʹÇ“âD"‘ÂdﱘÉ0·’ÅÖơ=z¾¯•ßüqŸ“G‘ˆÅ¤ƠIvÍoÏL“Y[lj¦’û"ÁÔ2Mró E£<ñø%™+‘Ha²w&Ơ[SS,̣’ Âñø¾™ „TótËf|pÑáa9¹J¹ ^}ë-²•‰ááGvâf»°m›Ơ™Y†bq.?¾G£¤‰äW&''Y(äIŒŒàí¿̉đBZƠ*Ưr…#CĂ˜âḌhüÇu¹vă:Kkkô™ÀăóíKÛs‡üÂ"é@ gÏʪ±‰&»7©̃b¡'>2¼ç’ôPĐªƠh—*œe|tTÉâ87oßf©¸FjlÏ>Ïs®Knq‘¸áåâÙ³øå‘|‰äÀ±§3É\×ejv†¥R‘ØđĐ₫%B0Å1“Y"³œå´*’́¦¨Ÿ™a¹\&9:²ïE €¢ª LLPµ{\¹~N§#o´D"…É£ .æX*ˆô÷ăƈ+ áD#ezi‰\>/­P²#₫3»0O¶T$:4€÷EEa`b‚mqụf¯'o¸D"…ÉÎOª‹Ù,³+Ë’Iü¡àøh2 “³3Ëei‰’íó`>“avy…`*¹ÿ#ïAÿøÓ䯭›Ø#o¼D"…ÉΑ/¹½°€7!‹ØÁOôăz=LNOÑj·¤5J¶…\¡À̀̉"₫xŒ`$rp'/U%=6J¡ÑàÖíÛr[T"‘Âdgèt»LÍÏ£…ÄA§ÑôÈ`̣ö®ëJ‹”<f¯Ḉ̉z(D4•<đ¯®ë$††Èט[X ‘Ha²ưL̃¾MËuH ›¡ĐlđÖơë̉"%ŵ7hX&ñ₫¾Có7{ü>‚é4K¹åjUD"…Éö „àêµk,WÊô®dªª̉76Êr¹ÄÔô´´JÉ–üçÍ«W×ưçCÅ¢àó2·°€#óM$)L¶cR]ÊfY.—èŸßơÁ»áơ’b¥´FE®ú$Ẹ̀ê*«µ*ƒGJÿQ…h…fƒ«×¯É|‰D “‡£Óí²°œ%”Ná=Äîü¡®ÇĂ­©),Û–Ö)¹?ÿét˜]ZÄŸˆcx½‡w2SUúÇÇ(Ôj,e2RœH$R˜l Ûq¸zư: Û"(Ä)w;ܼ}[&ĂJ>Çq¸vs’¦mM&}%aÍ0§Ó,®,Óî´¥H$R˜<B–2ª–ÉđÑ£²<;ë!éÁ#” ÖJ%i¡’÷ơŸ́Ê2•n—Á#²÷̉ÛcQõ“²¾‰D²ÙƠÍèz£Á|6K8DQï­‘\ÇEpˆB²T]Gx<Üœ"‰à;ÄáyÉ{Ólµ˜YXÄŸŒ£¾G·]«§Đm¨& Æ\¡¸°ÈÊêª́æ-‘Har¸®ËÍ™iº*$£÷.¢Ö®›̀_ŸÂl)ëÓí8t:Î>{‘ÔĐ«ss̀/,púäI9±Jî|ü ÁÔܦ¦’L$îù3Ư¦ÊÂj×1¾ÿØ=L³ÈÙe`¢_4ỀÂÉD‚à­~+‘Ha²d–—©´Û ™¸ç÷[U“…ºƠAb±ó₫F˜f‡Bé5jơB¬‡Ÿƒƒ,¯¬’J¥H'“̉Z%›dWVÈW+¤'ÆïùưNCcñF†fÑG2~E9ØQ“n·J>•fĂÄÚhÇX­T˜ŸçÂÙ³̉h$)L̃›V§Ălf 4‚vt³b²xs³$;sà£N“|₫2år ç×ï§îơ0»°@"»çXI=Ëb.›Á`x†ªl»i·KärרV;¨Ú;…E!=2L.“%Ë1xˆ6J$û™]YF-,.̉S6ÙƯ%Jz,MæèƠâD§üJ¯ƯnË]¦\.#Ä0(w>DT;m–²i­æhÙÖ=[6t:‹“Ë4‹ áđi4ÍsÀưgƠƠ·¨V»q÷x^/z0ÈÂrV&ÂJ$R˜Ü›J­Jv­@4¾+áµUí±ts³#>yVz r¹7©T*1À½X®LÄÉärtMSŹ!§Ùn‘)䉦Ө?â?ëÛ7YE…Hä ºî;à₫³F.wZ­‡)à̃‘Ơh_Z§C&#ŽD"…É „`~q ÅçĂ ̃9ÉÔ-'—1kQ¡ƒ/JÖ·o®P­–¢0̃ógC±Ça^6);ồ̀Îa©*pø×»Mu=§¤¤>Đ¢D±±}sjµ‡É÷%¦L$Èæó˜RÜK$R˜¼›|q\¥L¬/}G̃H§Ñc₫Ú2¾-qÈNÈ-ä‡OR¯Ïpÿ±©×—©Tz‘Æ;­ç ¨Ø9n߾ͅóçem ‰ä0 €ùÅEB‰₫ÎĂØuz´ªÏ“† ÓlS¯WpƯ‰T KQ¸19ÉÓO>)'ÖC‚ëºÜ¼uÅkÜÑ9X¸ ͪ‰ëöÑnüêÀBZ­öúéµ-øBjd˜Z~eáơx¤qI$‡U˜¬är¬5Œ ß]ÁTQ ăÈ!yÀÔÉ­¿ÁF]†ÊR†f«E8’|¨ÖjT{&}÷́'¥àơN`‡ÀLåöÖDÉÛ×KẮ299Éă/Jq/‘́Av<ÇÄvæ'“wo”lá†é:¶¦rkJv> 8®ËỒ ªÏ'ưgP…₫ñ1ª6ƯnWˆDr…I©\¦aơˆ§Sru²MkßÈơN—V[¶u?èÔêuªƯ©ÁAé?Û„æñжmfççBÈ‘H“0q‡Ùùy<Áà{v–lá¦i=æäÄz€q]—ùÅE„qgn‰äáÅ}jxˆµjEĐ‘H›0©ÔªÔ{&ñ~9̉Û;³’¤X­Ê¨É¦̃lR¬×HJÿÙv¼×eyuE{‰ä°×u™[\Bñxdó¹Àă÷ÑS9±P„d–—quưº%’í#œJ’]]¥×ëÉÁHƒ0©7”uưÛ»Ús¬"ËÙWéØö»gq́̃Ù́è9[}L !p]‡{?çµiV®‘ɾNÏÙưÄÓH*ɲ,³} iw:¬®ˆ¦RÛ́?–³¯̉µ;üÇêæÈd_ÁrÜơŸFù*™́X{À±¦¬•J̉à$’ƒ.L„,çráỮZ­Ê®^ù,ÅFơI¯¹ö._₫KJíîV/^ơ¦o₫ÛºkRus“ÿ‘×_ûc^¹üWÔº]¿yÁHKQ(‹̉’ùBGÓ„·÷Hx£ôW®ü'ÊíÆ»^u©¾Ëå7ÿ3•®µeÿé–¿ÏÔ­À¼ë´˜Àµë̀̃ø ^íyơÊßPß#Q =`iyGp“Hö ;’Q×5Mrk"}é]ûĂ\§E£¾‚åØhF”HdmăTƒpÚ4+ôl M £Ña1û& Ëüɳ öÅP•·çUÚÅËÔ:&ñÁh-^Û37Đ ²¼ºÊđà Ü2; 8ĂJ!?Ù=ÿ±4«XƒnÄG̃å?-êU,ÛBÓĂ„ÂCh¢ÁRö ‹¹"¡äỉgĐ7ưGĐ\{ƒZ×">đ™©=3Ö±t̉ÂƠj•d"!O²«¸BĐjµh·Ût;ƯíN‡eálD35UAÓ4|^/!¿Ÿ€ÏÏï' âóŒB‹;"L kk˜@âG: >²›Ûçæơ¿%Wo k:®cíÿÎü,º¨2uí/X©TP5 ×6ñ'?ÄéÑ£TK¯S©µYͽE8r”øÛeßđ'.q:ú$½êËd÷0‰$”æ(•Ëô¥Ó̉³kÅ"n—¾¡ÁƯFin^ÿ[ º¦ăØ=bƒ/p₫ôO¢»n]ûsrƠª¦âÚ&ÁôG818L¹ô•ÅJîáèQ¢oçÆ( äSœI íØa«›cêú_°âñnúO·1CO¬]È|“LÅæâÿt$Juơ‹¼víK¤û ¥.‘]aôâq´oNư¹JOè8Cƒç¨XgNÿó_ÀOCS)¬­qd|\¡dGBP©VÉ®®’+q4•@,J*Äđx¶́3¢¬/Pu×K0Áu]zƯ.kµ+·nöùîëgp`ß>8å·íÂ$—/ ;Ø K3ŒŸø4£ñ Â¥º̣VKŸ\,ÇAƠ½¼]ÓMQÏF–¾°¨”®3;÷C\‚Á…̀רÆ1‚#ø£Û—t*Ü­KÓ ÍçceuU “}JvyƯïG7Œ›œ´ưƒ¿s~Ó~’ <ª(D‡>ÅE× »ú µ›xü'¸x̣$^đ?Ă‘±5V ¯QÍ;̃4'Îưñ~,ăYÆË9Ọ̈ë₫“6¢FmR.¾ǺÂë¸8„‚a K/Q ĂÇo—÷ (-Œ-DÆc”KÇ‘Gï%[ƶm^¿|™²Ù!˜H0œLî©ëS…Ä@?ÂuY›çơko160À‘ñ‰=#N±MờÛƯß~åUăcx|÷73ôº].-ƒê~ôĐ»ø½^¿ûÏRP”»öư~ç½̃ÿ^¿{?˜fRé%,ëp÷ïèz₫Ñ.üÁȃÖ2›-¬R™{æÙ‰vŸ!„àå₫o:…?t÷̃¶n|/K³4a xÿq]“bñ%:á{UÍṛq?=wM{đ<×qÈÏÎqéôúú¤QJ˜µr‰¹ÅẸµĂÇm®ÙËóN»^§–/0qáܹ=!Ê·-b²ºĂVÀđ;zÁïu“ôơ÷3†û}­L[iuúÇ:œzbˆ@8¸¥÷0|>JƯÅr‰t2%g‰}D±\¦̃í2¼Ăá̃ƒé?M[åè9?'Ÿ8½%Q ª¾Pˆ|¡ …‰äÁD­ܺÍr¹Œ 0ṛľH¢V…`4×ïgyqë­·8ý±],îÛT’^A~mP""3Ú· Jj Œ·8ơäÉÁ¾-O⪦â YYÍÉÆ~û,Z’]^Æ Ê![%9&Îx8ơÄI¼₫‡X)ŒÅ¨Ôk8#‡Vr_ôl‹·®_c.·J0"–Nï;?Ö=†¥î:¼ys’åƠƠ]}†lËèµ»]ªí¡HTZé‹’*ămN=9Brà!WiB8‘ R¯Ia²p‡bµJ4•’[p[%§Ÿ:?ôđU.u¯‡V¯'ûOIî‹N·Ë›×®³\­’' í[V5äĐ Âïcrv†…¥¥]{<´0B°¼²‚£(h†.-ơDI…ñÎöˆ’ Ÿ—fÏdMN¬û†µR‰¶cáơyå`<€(QƠwDI ¼=E£Uų²Ë+FÉ~%®Ñ ÔiÓ?1w.û൭B,Æ›ˆ3“Í0¿¸ˆ» ~đĐÂÄb½a_2)W{(J'ºœ~jtÛDÉÛ†ed——åĺp… »²²đ*ưçDÉ2GÏœyzûDÉÛ₫I&(×äväư#%WoÜ bôíèIºƯ'‘D‚@*Éüê ‹‹¸¸ûöC “n·K³Û%—GTï{е*CG-N?5F¢?½íFK§)7êØ-{cÛ6åz]nă<(YâøEg>…?´ư«TƯă¡ë:”Êe9Ü’»°,‹«×¯Sîvé=°G˃Ñ(¾D‚ùƠñ¶ÎCí½!(‹8ªúÉ>‡ce¢(.ªÚađH˜SOKíL7SχéºÔjuR{́ ½äNªµ=án¹ø’ª LsÇ­|IâZ(J…ÓOq̣‰3m‡üt=긼²B_:-£d×uyăÊÖ:íÍăÀ™`4B0»œEÓ4ÆFG÷¾0q… W(|ˆ£EXNăŸ…QëºÂh:ÄÑócDâ;—(¬( ºÏ·ÙÊ]N¬{—|¡€áßÚª_Ó£§ˆ¦Ê@ûpøç"ưă}¨ª²£₫O§¨,¯`;ξêÊ*ÙAa,¯¾ö+µ*ă9đ¢dó`ÛÓKKƒư;_™ú¡<Îêơ¨·Z$Œoéáçñù8÷ü‡ÎÀUÙq±M&©‹Ø¶q€ö?=Ë¢X­̃bo)EhJ':\57…Îöøư˜®K£Ñ Kc•¢„ÉÛ·É5Œ>vˆÄêz̃U’ªă2»´D4!°Ăơ–jtK• „áß%ÿ¨ºÉÉ'‡„~\᥵5LÓ”Âä̉³,®ßºEW¡ÁC?®Ó?>ÎJ6Kl9ËèđȈ“-{[§ƯÆ´-b™„ºm“Åë+´ ü₫ƒo½^ƒ|₫ <ÁưăGđnĂ)È@8D­ZǺ™ü2²µ—èv»ÔÛm¢#Ă;&Joä¨ç ü₫£(ÊV\] t(¥Y(̃Æ“} qilµđu»U¥ ̉°¼êGŸÄí;ƒHŸB öƒf<"ÿéR̀¿I·[`́Lt[„‰¢i8ªJ¹Z% J£=d!˜™›£jv˜—²Çç#H2—ÉD‰î@_- “b¥cG2“{Ư‹7Vh—’D£§…œÂn IDAT|è̀4”ËóÔë©mzº×‹£@½̃ÂdQo6p6œ|»±LXœ\¡÷‰œDÓü3³…–y±ô}ú¯}“tf†x¥B¸ÙD·í»zc  çñPưr"IîäÓ/|åè ¨á!Pw.b×ëu©TnQo8x¼Û{bÀ R*•’§Û+¹™µ±Á÷}Î)˜({(ÆDh„ă1rµ×nÜàÙ§Úö[&ï„¡·a÷l®gi­%‰(i’Ë]¦Tj"Ä ƯÖ÷7å2ư}}rbƯCKet¿oÛï‰mÁüơê«>¢Ñ-ˆ!0 3t—¾ÅÈ·₫3Ùy†——Q? ¸’x{=ú ú NLO1wó¬œû&¹g~ăèÇQôí/¹ßëơÈå.S,7ü§²­ïï‡©æ ˜½>¯lpXèY³KK¡₫÷yÎÊ,½ê÷qz…C"L\L.JŒÁ#äææ˜_\äıcÛ:—mI˜tM“Z»µíah×,ÜX¢‘‹9đ̉^¯E>…R©ĆD¡9_0HµR“dž÷¶cS©×đmcT.̀_›¦º́'lK¢$xíKøßü¯œ¸ù=NNOß!H̃₫ªˆ’OFq6j‰$« BơªxÇ~uÇáäô4ă ÜX¼Æ̀ÏÖĐO₫4ø·¯B´eÙäó¯S*6ügû“|}?u×¥ÓnKarHBp{j¦m186̣?çU'Y›ÿQß’ñÎÁ_L nƯ b))¡ N¼€l>O:"Ư>ß̃’0i6›8BlkÚu ר.‡ˆÅ;¢$—{“R©¶±̉Û¼₫¥ünW “=B§Ó¥iÛºmç:0wmrÆ ‘¸°µHÉơ$ơOÂđ́$ư…Âæv@¡Ü7Hap˜ÂØ Jcg°"ưxŒ(–b£ÖVÑúç®3°8ÅÄǘ¦ ñZ_yƒ@ëÿbá'–è<óÏÑ¡m%oP,æqƯa`g¶„¢€¡Q®ƠˆËcÇ‚µr™l±H|ä½·ï¼Êu*™—‰ú®sîÜ ưlA>ï¡R1‡çéºc›¯{~ʪÂốO=₫ø¶0Ü’0)U+h¾í CÛ–ĂÂEªÙ ±ØyTơ`ßåuQr•R©‚ëö;'ÂTCÇƠTê‘pXÎ:{€z£ª₫ơîđŸ`îÚ<•¬‡Dẩ–rJ|3ß!ụ̀Ÿsṭ ±ZmÓ"ë±7Ï_béÙ_À¾€@ bppq„K¶¶Äí̉5^ư"#׿ÏѹtÇA‚“·oá5ÿŒ·‚1́§ÅØú¢æíHÉÚÚ*®;´c¢dó!R­VBÈíĐC-™_Zˆ„đî—gˆëTW¾AÄwƒÓ§r^”¬®z¹qCĂuçI§ ḍï|OQúFF(..±”É01¾=IÂ,L\!¨Öêx·©~IÏ´X¼¡ ‹;đ¢Ä4[äóoR*U7DÉÎטđ”+F††ä̀³(UÊ~ÿ¶<äz]Áâơ,Ơ‰Ä¹­%ºV2h“ŸghêÍ;D‰²#cLưÄgœú̃ÈỮ̃ÚyÛ‚ƠäI"ñ£F>Lîâ7¨|í/9}ơU¢:*0¾¸@ư«ÿ‰>¼ÇEpaÖë™äó—)s¢dçñzê2ÏäPˆ’[ÓS䫆O¿§ªÎMêùo\ăøñº~°;¸¯¬x™œTbDbÛ¾Û₫5]Ç1¿²L*•"´ ¹§́Ơn‡F§M4ùđaMËt˜»:GuÅC,6†m7ôM¶íkk·6rJ(YŸXưÔʲPÔ^Àq]ª¾m(zçØ‚…kÖ–:„籬.–Ơ} ÷P­.éb́Ơ/0º¼|§`†—æ(¼ñ5VRg!yê>ßÔ G^äæÏ©EÿK¯¼LºXD‚ó×̃ ư{fµÑwöÁE®C±xk#Ñuç¶oị̂Ÿ—ăĐ–y&v·Ër±Hrdø%ç…9C=ÿM̉Ñ·8~| M;¸¢DÈå¼LNj1G<¾ü¾µµÂñ8…Fƒ¹….œ=ûĐŸÿÀO©V³…-ÄC•¡›fU[h )ƒ¬­ÍxĂ·¬ år !FÙÉí›»'VË¢ƯéÈíœƯüÚmZ¦IÊÿđùYV¯Ka9ƠKS©lí4—¿4ÅÉWÿ Ggg7_3½^<¦‰DëuÿÎq­&“Ïÿ"Nüü¼ù í§~Ă´y₫;_Ág¨BpôÖ5fnüwĐï?̣ê8.µÚBd¢@Ơ4C§Z¯Ẹ́ôW&oƯ¤ăØ$ïÑ"ÂjÏÓ̀}“¡äeNœ( àbÊB@>ïåÆ ×%‘X₫À‚Ÿ¢ëëc5³̀P¹L*‘x´Â¤T­¢y½ÛR¿ÄµUT5×óôá0~wXy¤¢@7 \U¡^¯Ka²Ë4 „¢ mK"²@Ó’x‚Ú̉o+¶I´øCFgñZ]_ˆ«—¦eñÅ V¯óÔ¾…áz™úèœô³ Üç̀́}‚¹çD*9|ăRåg.›Ëă¿„“~ê¾₫XVM[Á̃…û̃`Jµ ²ÎÖ¤ÙlRnµ¿»!­Ù\¤™û£}¯pâDá@÷§z[”\¿îÅqfI&³÷ư÷zư~´`€Å¥%’ñøCmUëvÑ‚j­/ÜÆp¤Ẃ4‚á÷S©×–㱋”jU ŸoGûăÜ/Zk•XæUF²Ù ™o^¼ÈƠ₫éƠ9Ä·>ËÄ i4xâû_B·mn¾øo°ûå>'ª†=đa¦Ÿúe†² æ×3çF–æ¹½̣ øE„±÷«ªzü>…5,Ë’§ÛÜ‚ÑåæÔÖÆ"îïơrdoưŸ2›R¸}»ÿ@…i ̣y×#•Zz`M%),.Q®TH>DÔ䄉iơht:D2œ¹ßđÔk5y²`WW#‚Z­†/²7¢V¾̉$ưK7đöÖ{QuQVO½€6đ3ûZ¼¡yp¾ùç››E‚í6_y L~üq̉ÏßW´C1¢tG>Îü‰¯n “D¹D2s•Úé&Ê>&†ÇCͶiw:D¥09PÔ êf—Á‰»£%~Ï,}±ï01~óPṭ^]Æ4s -lÍO¼^<¡3ss$"j̣@¤Óî`¹î]ªR²„‰ÏKµ`̉év øưr@vc5̉ëÑêv‰í`ăËûWI.tWHó›Ñ’̀ØkÏ‚' jŒ̣¹Æº†øúŸrbf=,ĐépáƠ—°u[/₫!"ớưưíÉ3ä'Äúá·0lÍué[¾E¶:5°÷W¡a T…F£±#½A$»-™™Á‚{&¼Z–@UÛŒ̃>ăQ©¨¸nơ¡̃#Ö—&73K©\&•Lné=(\¯×Quí7P²·Ñ GYO¾”́ívûáâ]±‡v‰Èê5"ơúº0QUrC£:öN₫H`Ú™ßâơÿS'Nl₫n°Óáâ+/qüÛÿJ¯Ư×ç)‡Â±“x§!g²°‚kWöŽS?@uc¼$ƒr¥B­Û¡otDÆ6¡j₫h”™ÙY\wk=„H˜”ê5<€Ü ؇(ªjÔê59»D­^C3ôi|ùàØj9tÛ^_9* ÅÁxƠÔÛ3₫§“7>₫L?±Y»$̉lré_æØw₫ʯßÏl…¡ư®¢Uv£U§·/îŸ/\/'90Ñ’ù¥%„aÈ]€mñ±¾4•n‡b©´³ÂDA³ÑÜ‘Æ}B·•§Óû‘Z Â¥Û\¡mÙ́ÔÉr!\̀N‘fc…V«„ăºûÎXü¡•\ñíÚê¬VÇn‡f#·¹±ºhÎẓ¹PTÚ‘4ƯÀ=Öü4N}†Ëÿ}fßô±X½Îßÿ"Ǿưï üA‘A¨Ơ¡Ø7ºùû+đ×ó(ûD˜^/m³K×4¥1ªµåfƒDŸŒX{B!æ¶ô¬¼ï=™®ỉ6M»X`H¸5¦¯ÿ)Ưđó<~úăMÄ\»̀í«‚™₫E<ñ<Ú&~!lÙï F/’'îX4 ×$Ÿù Ó ¯bö:(—DÿsúÄÇñ{ö̉ö´ry™»K4 |}©ƯÚ¬}ŸË7¾Ë™ ¿ÁcÂEƯ˜4Ó¡kº¤÷8Đî ~ú7yÓqÑÄŸ217‹ Äk5ü₫An?ưë,; >³é›o‹’^k–êÔ †̃©¤º£×„}r2OÓuE¡Ư‘…Ö˹x=̣^îLÔ¤¿̉ü"­f“ÈæeƯwĤƯnă( írÚ́1-ó®Ơ˜ÙÎÓµÍÿ;vÓ¬c lǾăgïøm!ØƯe¦?ÏêÚ<Öü¼Ù˜dfæk„ú>ÂSÏ₫NyƠ…/Y[B́£ânеÖOH±Ưözt­̃îO‚¢K»UG e½I  꺈 ƒ®E¯×À4ëô¬Îúë₫*ư&W^øX˜8ÂÛë X­ÆSßÿ"'^₫÷t²ß¥Ư­á¾»+±Ófy₫ d²‹øÜw„¼«(غ—ưrÜAÓ4U¥ƠhJƒ̃ç´ÚmV‹EB²`̃ú‹£©,e³›óʶGL¾WöÇ?@DŨàöôשµ(F r†“g~‘¨Ï‹Ù¸ÁÍ[_¡̃®#_èG‚öêט_¹LDñè‚££O¢o¬úT=Îđ±_§oèY‚ƒˆ÷ fg¿Lgă=öḰAƠTĐTÚí6Á@@zÎ#¤ÙlbÁñUÇ£i¶½^«¤UÁí5>‹¥™¿'[˜Ævc`ô'96zÅŸâz8AáÜÓ|8²0Êz…Øç.¿B¯Ơâ₫ Ωß&±¹í«I>Ađâ ßûăÍkp4…n( ªgÜÄz@µf“Qỉû;Z²º­*îQåơ¡t¿ËTAwñèw¬oé™*ÂpñhÛÿ̀z]•Ư4ñø\´]|@Åû̉äWs}ÀÓ ÷-Lª̃=‘ø*èÔ§X^N¾k+§B˶Ña噾ù×Ô”Ç8}₫×Đ­ S7ÿ–ÛS:ÿIVæ¿@Ñ pîÜïâu ,f^§Ú(3܆X́(ư#Ÿbtèâ¦(Op‚#Á‰M ¨̃¤ăÄ‹öï«³íª¦¡è:ơzt*%g§Ge±BĐl6Q cOV¤˜¿BƠăÅ̃Jªërdå 7/SÊ\åÆÜ[=ơË %û),~›×ÿ ¡èÿNBÜææâe'ÿG®ô?‰øæŸsln7›¼0y•ˆÿ¸=|7đ(*æ#9đatû%úÖ ›“r+¥@h}s/ưÁ µJUơ>ÆqrÅ5‚±èö?ÏlÿöÙ1º£~íSüOX³åáï₫ăâlÏüD}KÏ ! 0Á¯ÿ‘@c=ä/ÿl”¹’¶)D|ư->ư™,OÛ»¶xöƒT…ÂÚcc; Lj5|©Ä^0+*Å+ÜnÏßñZ½œ¡ºÍ%̣•c—~’₫Ä0Ä`ñUnænе?¢zèơ´Z%‚©œ»pôÖ÷̀}>|ºñ–QÏ}‰›·¿F¼ÿgJ ²ß25¼µ¦ E?jª:¾€Oäöô‹,®|iCåC¡¡vEFV—™́̀P-\F<Æøè³ ßѱùªUAÀ®SéÖ™~ó'\ơ/9¹Qç$ØéđÄ/£x‚ÜzñqÓëuN´^ ½2¹™ÓPM  èÑû/o¿0|^Ú½¶ă ô~÷”üÚơN›Ááé¶a†äPX™c®m]ót ₫₫¯†™ø´ÅO>~çv¼k,duû¹8̃Û\Ä Ù»/æ#a²++Œ ƯwÙûú)Ûq0-‹à(̀¥3xäÓQ›çÈơ¯1´²²1e*ÆqĂû¬ùŒª̉.­VKZÛ§,¯®âFwu[µSđO_O2ñ€îp䱟üx…°vƯÇW¾’bjÉ‹«†×xáĂu¦¾ÓÏW~å¸wÍ̀óÏ4064½ƯÓ0u‡Ógœ9jí©ñ$k ”ÊeúûîïÔ} “f«IO¸{f\Q4TUG}[(ÚfäBÓ|h ×ëlKt°z5T-„¦*¸"‰³ÿ’£vzùS·ÿ‘™¹ÑÓg6&̀{‰›Ræ¹1÷&‰‰ßà±cOăÙ§«%Íë¡ÛëaÙ6yvÿ‘ „À́™„öPÅ]UƠ1SçX;ˉ©[èƒa[ O¿Jàȳ#\@CØ-,WÁ«{@ØD>ÁSC£Û^e5ó®Î×ñ?ư«Àç6ÅI¸Ùä̉¿ŒĐ4ư=Ộ-úVçP7’à*‰~ÖF/"<ûkKQUU4]§ƯnKa²iµÛ”ê5ăc;º0k},.úñm<&zM/M¼€èüưߌq­Úă£-£Ơü|ó¥a¶à·¦Êw₫a˜¯MĂO¬„·ăă—c¼îrv¤Gÿ É‰“5Nh£¿ẹ̈í®†í*\{-ÎôuŒHSçj<6n±ÛëgUÓĐ~V ùí&vE×÷Å Û&RÈ~tđET3C®8O²ïSø•Ù™ÿJKgtøĐo€¦c!Đаh52´Í1>ߦØé5o35ûm¼ñsdh‚^g {bø<¾ư噂£*´Z-<±˜œ©ÍV‹ắú‰¶»%ÍÚijäû¿ËđÊ púæ KFY6¯³¿E,N1ó]L}ˆxxFù-¦®14ñ"±@”HdKŸ§|́Ó¼ö ˆ¿æÄ̀̀fWâKßÿ"®ÛÁתptnnó£3£c¢ăhz€ư$ñß.TØh6QÇ}Çj.‡£ª̀kR¸úƒƠ©øfˆ¹íç¹O@5à•·||ä÷ùÔs°ë4VC|û?ÿ‰¦†©¤ºªsî áµñ› Ëø©&c çÛ…A6`|ÀbéJ’¯;Æïü₫"O³v=å ‹QZÉÑîtî+ ö…‰‚F£î1ö„züI„á¹Ë¼₫4hªw˜ă§~é¹—¹våÖú÷BÏp̣Ø hZ€Ph€•Åo³¶ú-EA÷ pdâ9|̃§™Ï|Ăđqúèóx4„C³2C­–ƒ̃÷y­̣ĂÏ4˜ø9NưĐ6néˆ?⣨*ºÇC»Ư&.…É#&±7üÅK BU@è~ăcéèK ®®¢ A°ƯæÙ́ ¹#nM–¬DUœ8ó+ F£ˆ̃ơe¦oü9 ¢(:éñO‘8OÙ[ă{O¯  ÁÑÙwêœ|ø[_Z÷˜*³•p”7†Ç¸V.1ÖjoŸ*́|±6Ăï£.ó´ö%…R‰P<²£Iè‚'_(đ/~¡tGÄä³ÿöøú|ĐÔi9.ƒÑ Ư¥?m̉ñ̉´O½X`úïúøë?;B8aṛl~´̀û=ÎN—ù×ÿGƒH̉$´ !₫ßÿûßy%Âùñ̉fîî=·ưØ ”Ëe÷Ñá₫¾.·̉hàÛ'r5ʉs¿0¢wˆUOpêñăéGUTbư?Æă±³˜½(:_ÏF̉Mjä§§Ÿ¡g™€á‰âơPœºø¯é¶Đ€̣€z,É2N¯—ñÉÉ&B0“HàúóHsɘ’ÅU~Z¶¯(Ptx"‘¯̀YVOCH$ĐËL„m`ZSËqP±Êv3¨g¤ù1<‘3„OQ£ Ä™JáH¥°•”ËM̉é`Êïc¢´–©̣M¤ ;±}M=˜`>øw´¬8²œ ¬ÖIËöƠ%ºÓI,5O _215‰%I9Ó¹|-1%£#×oRÖô,ªciî+··€©Ñ±{²ê½M*"è(^–®:l4ç†yrcl´4F¸ÜIKWĂª„on:Å—“ø̀l>v9½ Ûf.™\¶6EƠ(¬HÅÏ.ï©*Æ2w±¶0›L¡g2HB $ -I$]N ͬùpÊ08ÿoÉN.Á0 •‹ƒ«º·ªCÇ´l,ËúƒẸ́²:ÎÁøÄN'ï€})Û¥0<² Ü¿EEóIñ IDATT}éB₫ĂẢ0˜½ëX‡{j”eÛ˜–µlí{}…*›­̃@Û]ƒ¬8ñøV¿ôZw8˜IçÉ2eÛÄS)\>ï²<_Ó5¶5#́ dpeEÉ~0’„%â‰|^ÎaLÎ̀â)çă ƒ•₫í(̃ߦªåqmií—¬(HÆøÄ>¯wQÀxO`’Lfá-&Ià æ“/WÅăÓu2FÛ¶ó‹±\̃m“12øôåkè$+€²‘ ¹Â4]'‘L ó‡=G%•J‘1 ‚n÷}Ÿ7!$ cc°b¦©Ñ?°Pơ‹T·=¬,½-I¿ŸñXŒúÚÚÅï§{= L"å'Đ®Oó.ËX"[Î÷ø–G,ÛÊ2R«¨C1b¥{Íá •JåzËød,[&|ŸÎµi—01··µnˆơÊd4BƠ]Ôuîá N¬¹/ñø¼LööƯ•±W?m*úêUÛ²™Ÿ6ˆW/² Z¢Âù8E×H$ø¼^̣²̃Z!I«ÖœĐ¶!6'•HoH‚î‚⪕a0dU%•LæÈsƠœ ÁD,†Ă}ÿ# dGu[ĂHäÈØÂ Ë<ó[QỦ–Elj¢ÂÂ/L2éô2‡¾»“¾ }L*hZhƯÓL›¸@ zzß|f¶d8ïñ-—Ä ¤UJŒ´-¼4J¤×F‘ƯÙ6̣ëX 3ÁÄÄyt—̀.ÿ><¾åÿ½®‘J¥±…@É“œ“t:Ít@ÉÅ1Æû˜%¾u®? "‘Óó ¤W˜d+Û†aàt:ó‡>—ôϲ˜›Ăá+X–çËbŒé¡wñëĐÜ1†Ói­ëơŒÇ-ṆârÅI]"öEBÑu¦i´&ßƯĐY+Ö|Ë2,®éarȃÏÛ¹îA‰iD£§‰F‡1Í¢yP²̣¢ª*¦•&Ë,̉¦¬®€₫˜‚₫ QÆûT <딘f±±“D£±[@É*́±E&™Î'ç¤̉iâéô²t]–™ Öÿ>^ơ›#ë”$&§Nù˜œŒRZz IZ:Zu:™™¾c´Ă]5:É€$!-sR—eZô|z™éa/ÿVdy}÷M±m‹HäccĂXV °z–¢©XV^}¶1, EỸ™mÁ@÷8± oA#V°®×Ơ4ÓŒ~D4ŶKW ”,VM#•O Ï9I§Ó˜Â^ââ Ä £W>Ä«¾O[Û(N§¹Î×1ĂÉ“Ab±qJK/!ËKËê;=nfăq,ëvpwW«™L¥—9ïÀ2m®¹ỀˆŸPhûºOÀ´,“Hä8ccĂØv%ËÙÀæ !EA Ưq(̣²4ÀIJ,”edLl.FïWđÔ¡(®uƯPÍ4SD"‰D¢–\è«i™t&àsL¦fg–<ñU"ÎÀ…c„œï°iÓº¾¾:ĂHñÉ'EŒÇ¨¨èF–KíĂêNS‘èyw&éô²“ÈÀ(ƒ—&Đ4Áèèáu¯,™ŒA,6“ ²T´-e÷Ú›o²¶Ä—¨ ,ïDÓøt¾‹—°2~’‰Øº_SĂH09™̀P h™L˜ä0™Ááv/™³+‹ĂWr¾Åư”?&™¤¢âÜ’3% À̃¡cÚ‚T:}[̣»̃™te™+r̉‰4ÇC¨jñ†P–túB˜9JNSIåcäK.©tyYY@ÛY*Cw=´!ÖÔ0Î#Ä$¹4/GV2ét¾ä>‡Ä‚D"î_\+YŒ1Ñw˜°û›7®{P’Lœ0Q,[`ÛyoÉ€‰eaY6²œkÀ^;Ilnê3¯›L}̀D"ußc$-c’îOÈ`¤ï3ú#HLàô™’°½TƠ›—¥Ưá$‘HÜ›1±l –}NÎưˆme°…}‡Áµ­ô- DIMÊ$ƯYˆSw.̣Œæát¸HÏ\`¨ÿ8­ü¾b ¨@A|ê,că}Ô´₫µ%•$&ṕäß1Ưƒ¯ª‰µ́ôɲŒ-́|«³t–=[hó_ĂL+y»»n’ÇÚSܯϒœÔ‘ưw„KarÄ͉“>"º7CÇÖI65fPÖ€ÉFr6if‹&ĂÈY£ 6ÓѹØ_XpaÍ‹Ïà́Ô×®ü»`?[[ö££tŸưK®^ÿ%E₫ƒŒ½ËÅlïú&f:aÚ”•ï Đóe5_¡¦¬= @æ «ª j~3ç<ÅÔäu´ÀNÊ«×zˆü0É3&Kʘ؀,墙Œö½N2zËl*a2 ¢̉³—î¡|Ó¿¡µºÉÂNư1Ăçh¨n%ÆVk))}¯ËCYÅ(hÅ8„À¡PX²ƒPAè6À!I ²l雳Ưo’2 «_¢8f=¨+‚iåINœîù»kỞl™cï”î²Øµé&0±2*Ç̃*Åx"Ácí÷7ÄL©üôûïå‰-ÉÛtlvÔĂưË*bÔUd¼ä£^~÷êeS¥™óz¦( Ëœæ·8cb˜9 LFf¹ÙÁP DŒ‘Ä ¤â#ÄæRÔ·>‚¿ „Ÿ̉p=熻I[Ï£¹J0'ú8JIQå5Ïâpø ƯƒhºMVưÜLzÙ™AÉ)t½ !́5ϘdY1 +L–î„Ú6äl(G¥¤r{oaLÆ8̣?Ï{œÓ¤…×_œƠ/Å· ”̀ô0[§¨̣IÆ.¾É‰ăÿ7̃ZÂE]TVT!ŸwÎ4ÂåûØ^ĐL,z’ëCGèm¥±¼~Í÷ÏQÓ̀Wµå‚¤3idEÉù3e¦®t{éÑEUĂ-ơél¸Ô¹r̃G- Jkă´Ö¥¸öq!GN(W B[j2Y0ÓqÍqà…6WZ̀ơûùß₫]-{t:*̀œgMdYÁöBÉđ]C9RÎÆèÂرéy´yĂjQ>™½D °́–Đ4ç<`QµL3‚aËT4₫ –ú FÆNrnè]guÍ¿J¥ï^°…m ‚Ų£h7©™3œúø/¸ÚW϶Ö} ~M^¢d‘U>F¾´Œ‰@ä,¸×\%øư5·MPÙpÔü ±mƒỵ¾’'ÙÜÊôÔuÆ£§¹vñ¯ˆ§Ó´Uﶤ̀$MÂ…u CƒƠÄFÿ¢—¨)«G_9&V1É ‰§̉9ÑqÙ6e2 y¯f2 ơ¶Ä_Á;§ÜTפS*o₫¼ˆ}ßèçë{œø§ ¾ØMC] ÅTyÿ—!}n˜̉9èŒBaR!•–o&KPÚ:ÅoÖMătÚ¤Ó£CN,Í$°Ö«/)2–}3×qÑ4M YY›=L4Ơƒ&Ù¤’³a’JEQÔ ªœÍÚ.¯ư:Uơ_%9s‰îs? ·ïC;¶̀›áÏäZ“ÉÑĂôOĐÜúnUÁémÀét0—À•5oYóåK(Yöimæh9]…xƒ‰ÈUªA0Æ™˜́ÇíßSN0pí0r ‹̣’‡w`Æ{™œ"SBÂÏƯ¤y­°˜~ÈÉËçhëú—T†0“×H¦fpª.ÖC§$EQ°̣ŒINH2Z’9xỊ́ñåü¯Ÿ/„[„-ÑÙÉ®'!>́å—ï…èxé¿}p)©ñWßmàĂ£z(Åh §ù­ßÀ¯K\½àẠ̊¦¨pMQú÷…́z2ÂĂÍ©ÛB9²"p9á̀%üơß1—éØ7ÂÎô¸$y˜Ü‹1±L3K¿˜8¼5”2Ú÷sügPR׉^§¬́¸¥iz¯₫˜YJMÍ#¨V9ˮȔf:v©P9w~C4b?å$SQÖÉ́ø Fb³T•×/°6kƯăË“¥Ó4‘$yMµ ºÇ¹6ø÷|{¬)³úæGÑdÉx½}‡éuE†dZ¦²¾ §Äïusµû/‘ÍỏPµU–ARï$v3kØÔ¶O¡ü¬ÿóß9iëœfÓ¦¶T›¤£Ÿw» ;§yQ˜tŸór¾ÇËÉ+3<Ú–ûàäFNĐ$̣»” [H9ʘxüu¨NÏg@º®!©E4·ÿ&Wz̃¡çÂ@Öđ•~…æ¦Ç‘…’̉]L]û%çÏœG’T\̃6ZÇéP©¨|˜ë‘#ô»đ4́AWd$ wÓÙ>ɵO8=̣² ²ù[4UoZ̉Q’AQW¾₫^VäÛÚ߯Øë¨ºG’¤û̃[Ó2s3¿DöRß₫[PĐx[̀YVC4v₫.¶· ™Ú–oSXr…™x d7¾`3^— AsçoR»Èlr$ ¯€·Ytlư)Ă対pHh®¶vư>±‰Ë$4æ#lÆăô,iU,Çđ‡]èΕ>+̣}—Û' ƒá‘a6zQœ$AiI)́ØjJ{ƠO¨v;§qÍß°éYGR‘Å- eóM-Ó’°t>7È¿éœäÓ³^º/øøóCExy€g6ßưŒ¥æTbq‰̣’»K±k× ̣¿·ṕ¤—íMiÜj®ï¿„tK? Å;¿Ú¹9ĐM’ư4u₫sơỤ̂:d5DËÖ?DÈndIÂéë cKS6î+ÉÈe‘y»Ù́oÁ.eßST$ ›~jÓ@Rœ¨·3IvP\óu +Å6’¤ (%ÍüVƠŒâÊÂU9ÚÇÄ´mÎ^¸ÀøÄú˜Â©É [:; ¿ü¨sÛ¶ÉÅ:XIR)*x½r.ô–t|¡|¡;₫Iq,êâÎU‘pûÛ¨ñ·-zë¨BËYF+Bq%ÔuÔ¡9¤•^Ø…’û/k7û8uî,₫ÂB6²̀NN̉R7ÇæööröLĂ@Ws»¹?`Te®_u²§n̉*½ưNBe³øT™s'¼8Êă÷!₫¿¿¨çăª s'ư"Å·¶̀.„“–ê¬/ßƯ®’ʤïLD— ¯/QÔ¾à$-]ÅT5W¯–+½D-é— ‡Ëµæ‰¦ßœ:W“u JÊMZwÔQTé_µob °ä®†µÚ£Td›‡Œa–%PoùṇÈ3#Xu)$ÅæùW©8åăÚ©(Á7÷±¥5‰,Á3/:‘m”†ṇäW‡èÚ6‹G—øê7‡øø¢“ùüú VỊ̈Ï~§“§}ŒN)”µL±ÿ¥6µ¤—°*Gbf¦Ơ±<§ªéd2Æ=€‰-”¼a]1P²½„ª¦ªƠ»ˆ%齕¼Ü˶óŒÉJ€%J¸Ô¤eGÅ•ÁUü&ùÎÉ9LL[‚Ớ,%)6{»ó̉uX<úüèMüâ1Øñè;y†3”bïÔ¢'­íá Ú^Ü›*®ólm|ÙܵɩFfÓ/ª̃´<ÀDU1ç‰|wÆ$oX—ST5…/8MK×ê‚’ÀD䇸-÷œgL– (J”Â’ -Ûk)© ­₫7ÊuX}‡À²²Á´¼ê-9(‰Å™Ë¼L¨úëøĂËẮgûƯ£\ø~’¸̣̣Ūª§)đMѼ­ˆªæªƠ?vKü—[€‰äµgơG#ÎĐ̉Ơ@iM$JB&¹ wy‡zÉe|¼™¤ưM «_À[XµŒj$-ŒFQïÿóß2‰¦gp{M¶RƠ\™#€XÊƠ¥ôỤ̈ŒÉ²‰¢D(ª4nm¢´¶0GÔGʆṣÛ³ºuÁ¹Êë̃RÉØX)¾MqưsÊẂRïÄ$"‹ï‚3!l“Ù©i,!áöù1âÓ(..Ç—k‚655ÅÅ‹©®®¦¸¸u‘A} ÁêÀŹ {p¹’–02ZÎm”6îÇí+]qE²çÁ‰z7Ô’ï´Á<¾{„r&''ù·ÿöß222ÂÓO?ÍO:::(,,¼'Hqx‹¨© sá̉Ủû;pXsôơF)oÙ̀ÜÄ(“ |%N†{¯‘vWP]SÈdï>xï(ăÓ lKÂW̃ÀcŸ¦4 sừQ_ṭ̣¯>K²ÿ4ï½y˜C"PTÊ$Óf=ßúÆfF/ä퉌Ŝaö¾ürïi>9}ẀÆöRï›æĐû}<ù̉ Lœù'¯)Ô”:˜Ÿbv.CÓî́̃Ơl%9óîë||ê*ÓCqq€©Ø•[Ÿă±=Í|™VY'Nœà;ßùÍÍÍ<öØćƯ»—M›6QXXˆ¦i k¾ÔAIMVúF’6ÆÓ² ¬Ñœ«3åFO ;€‰mÛ+˜üzo±-H̀,cƒy t—‰«@]ñ¾c’Éd¸páï¿ÿ>¯½ömmḿƯ»—gy†]»v …¾ÔE,kBEa‚ÎÛDídŒ³G1ëƯξÍÙç¥F¯q¾û]º»Qß}éÀj|Gß|‡̃¡ ,Kà.,ç‘ç£Ê—áÈk?etÚ‰bÎPܱ—mµ6ï½u”ØtÖăñ•Ơ³çÙ§) ¹¾48‘e™w̃y‡?ưÓ?%PYYISS»ví¢¥¥…-[¶PXXˆaäÆ?Ó°ÇÈ$6„úÛFÑœ”Ö–£¬dƒÈ,er‡Í̀̀066ÆÈȇ¢´´”M›6±ÿ~{́1:;;±­;IsQƯĐÀÑ7¯06cRbŒ1KP¿wĂG̃a`d‚P˜Á+W 5tR¦yï×™rµđä7w£Î ñË×₫‘#ị̈µ¯>‚b|‹•œàÄ»o3ënçÙƒ8Ăû?{ÉPYVŒYæ$ƒ‡<ÀĂï¿úcNœ¸Ê7öµQ][IhÛ£lïj'Ùó.ăÑ +£û¢MëC/²ëÉçßú1ù„¶ö´Ø>Aó₫¯Óµ¹’øèƯ˶=}_Áµ|ÿư÷)**¢££ƒ½{÷²wï^ººº²#$¤¥ÍTuªîË£ïQ# æsµîÚÇdµSˆl /M1v=†m­ÿª[Ø̀ÎŒSV_À¦=[Vœ©¥îÙ IDAT1ÉétzÑ·“É$Édöb7 ƒ3gÎpæ̀¾÷½ïñĐCñÄOđäd2¾Đ`W!°, Ó´oó:æ&F™´Ó0ÿ$gi=~ÑBYŸ“‡öÄÍÙü!§¯J́ÿÚ‹”{œxóŨ}ÍÁË/ïf6rëÑr~₫qêª8÷OΈUÉ ßúJ|„Ó'.2<¥$X}OMA&“¹cMEÁ¶mb±±XŒ3gÎđꫯâñx¨¯¯§©©‰̣êj¾úë¿¶ªçÉ2múÎ19äÂ¡× ËKÀ ‘ULD6/é+!‰́9B^®Ơ4SŒÙÄ*Ă”VĐ ÂÀ@?ăĂĂ8ç§ăÚ¶Í¥K—n+£££Œ̣Î;ïPRR®]»¨kjdÿ /|FÊêq¥?f¨/*z™³ ©o¬Å¼êe¸g€T­Moÿ4ơëIG‡¸ruœêư{°âSXBÇëvqåbñƒ7Û„&§cŒŒÎQÿµmTW–"J¼\;₫!“7¸́¢¼±ƒ¶öT3NE…—Ó£“Hî:TIÂYàÅẳI~†-*.+bë¶F T‰ÊÚ~yaŒL&ÍLÿ ³j˜¶]Û yUºvnæô'ïâÄ~x„«×u;vÛZF£Q:Ä¡C‡…BlÛ¶–ÖVûÊóy¶r ;æYÆä.ɯ«]r% ^ǵÇƯ‚ÓY´¾A‰m3:zÙ™i¼Ó+ïƯ¦R)¿ù&o¼öÚ]/éîîî;^Çă?~œ3gÎđƒü€'Ÿ{–_ù½ßư¼ƯéÂq~ôïÇnÉè—΅ÚǶ.zZ}~’¤á/ !â1._¸¯æ1<`â&\RÁ™cW‰Íu!I:%µơl̃Ñf§PN梳 LĐĐĐÀS/·#«úç̉ÈƯ/̣₫ë?¿ĂH=ztÑ¿w»Ừ̀̀àv»Ơmô$„ ÷|“ƒ.ü₫6åór,-r…T:«ï$̣̀¦$°æ'p«–@V$+6a·¢”#<…+vA˜¦ÁÄÄqff4¼ǪÜKN§“ׇ{~N”mÛ¸Ưî;Jñư~?.—‹ÊÊJÂá0–i-’´)á*ª¥¦HæÚµk¨VÎ*‚ÁBª+K¹|®‡Áf{êª0æÎ2Đöc¦.g÷Ä6¡¨*DÊ·0h̉†„»`¾‚GÖ†0ru«¸Ữl%$¡h*Â₫ü†êô£Î¯¹¬* ,la“JesNœóCc´‚n¿ă®·’Çí&/ L<Ïkét:ñù| áTĂ0:‡® $FWFØ-/@…Œ]¹|A’éN`"IRv́ô*Öä^2v5Ç]Ó^÷ $ù”±±A„(FWü;¸œN>]Û}¿··—W_}•‹/¢ª*^¯MÓ¨««£µµ•íÛ·SߨÈL*ùB€Á&¶x¿~óoáJÜúç÷₫°̀4ÓăÓD2gx}ô|VYloQ†i¬àrûQ$;‘Äëosê¿ç˜­RÚĐÆ®ÏP[ZpÏÏikkă[Ÿ§¸¸ø¶× 8}ú4™LMÓ(**"sđàA¶mÛÆSO=ÅơÁ¦W±B ÷|/±~@ ă@‰ŸÄ9‰2đ ₫î÷©‰ Fq%“èé4L!I¤2ºÎœ×ËDaăÛ˜lÛ\¶¹¸¤åëébY&‘È)¢Ñ(B”¯₫ ¨¸˜G¶uẘüä'? àp8¨««£««‹íÛ·³uëVÚÛÛ¹64H_äÎÙ*²î¥¶¥w/œÅV')ß±§®®«E|pˆs§çĐĂuT»† Y9Û¿̣miφe,#…%ë84™ÉBÓĐUA*‘׃X,ư¥~çƯ9£;/§CCXi+û?͹)’Ówÿ¼ÍÛ¶²µ£3{ÿ,ÂÚ̃(n·{!”³k×.:;;Ù¹s'ÉTÓׯ®XƒP‰SC@̣éôúÏÊ4M›©iƠí;)?²,Œ„4A&«‰K.EíIăq7lPr†ÑÑl»IZ­qƯYVî:•SÓ餽½ÊÊJºººhiiaÛ¶mÔ××ăr¹’ÄûưBŸ¦iß¶mÑ“Ï3‹¢ă+ P¸ó_¢s₫-ƒŒ)ăR’\DBº%œ`âå±—~Ư©9Æ®ç½|‡cSöâ£8îÁjÜPÏ®Iaa!@]×Ù²e {ö́á‰' ³³sÁCîF˜«ăA]?wñë*~'â¸Ïƒi!>Âùé?¼t˜úËƯø§§Q-kQ?IK$ ‘ 85Eåà æ¹3D¼AoÛVFyQ³%Ô°  Äbĺ4‘È(¶]F6§UÔ'{b>s–””ĐÑÑÁ₫ưûÙ²e ;wî\Đ—ɯ̉¼‡x'2Q©jlÁzóÇ\ V²¹®E’đVR¤OsáB û¾C ””S_íặ‘(ñ́Æ#f8óñI|Íñ榛 ƒ/@I‘‹«'OQ_¤“ê;ÍĐđ~^èXF—m&F‰LÔ}A_Y!TY;ơ~‚cS9ƯŸœcx*Ií}.suu5?ü0]]]tuu±yófÀB•ÜÈØX¶Ÿ ËOøK$˜₫€é5· át®ï䨙…3g¼ φ¬0đȲ¨Ñ=I±®,2B0x9Êè•JÎ26Öe…}Ơ «°Å¢^Ê )++ă₫è…B´µµ‡ï¨È1–‘B•TÂJ%TSHMC%Ÿœ9ĂƠ¦Êü*WN}Ä´ZÁ®®Û×8=Éé·_'ám`óÖf¼¡"¼n¦eƯ7đnlläå—_fÛ¶ḿß¿ŸêêjÇ:´̉È^Ø‚̃ó½Œ÷ªøư›QU×}=GÀ¸₫ J¦³'(œG]¤bËVT„$# dܸ^%!ĐM“Êá!£†{Îså¡§́wp”íX2OÖ²,"‘ÓD"CXV  ¬₫{̃ ̃~¾óïđ•¯|…ÊÊJÜn÷+¾åÿÖÖSßVÉ”\OE؃h?Ơ-uôÎDhh¬Î:’®0{ÿ:Gá—ÿưo±x‹kh­(C‘@v…(.v¢º‹ØñäS¼÷ö̃₫Û> ËÊ ÖTK© A ¨ëfŸƯ¦HxôM›;9rêû}tV8). #ª'Lq‘çf®‘楤´đ×ṭÈ£×9ùÉ{ ^ R\́£¬"°OöedçÎüà? ¡¡`0ˆ®ëw°³²$Á #½Á”¸Å4· áơfÖơ]5=­ĐƯí$•ꥸx‰íˆ¸0‘çÉJÚUÛ ^gôjOư†aJÆÆú1Í0àXơït¯ên·›W^y完ʗÍå%¸ûåạ̈…đzt$I!TF‘ PTMEè#>zë(_`ëçI¾ơ ₫́ï°m ƠégÓ₫.\·/óM¤dƯGqY G>>ƵO"Ë2Î@-»ÙŒă>«6öîƯKgg'Á`đ®,¯l‹ÿl¢ëư:~ç}ƒ=zÎÿwÿˆ–îó¸nIüµ•©`ˆ‰âr&JÊIúBUG²L”tG|’₫‚“1üÓÓH€nÔöơ˜úÎÇF:đ/PëŸåÁ˜Á,SrHdp”h«ª;ÙÈÁí̀‡$I”••QVVvßןâ«ăùß₫C,IÇçùƒt]¿Mëă&ÿü'JkÚyú•ZR©  ƯåÆéĐAĂCÏR¼YÁçRÈøy虯STF•m>üáüE>´‚ré×PœÙü+ƠÍ–'^¢ÅĐÑd•mϽDÓ̃$²îÆí€p]¯ßKEøEêÓú<ûXÖ¶‡«,¼~"3G°¦“›'ès"¦{8OÀư¥ñ©ÏçcÏ=ŸcĂæêeT=‰ÓÇñđ&--ë”̀̀(œ=ëfvvpø*£c›—qmA&‹?ÔE z˜¬cb™‚¡K±,()¨ß‰®ccŸ2660Ï”¬>(á 4[ P"É:ö¤6e߯]A~₫LÅ‹Ç-óâo–â‡På_ûçÿ‚TFà †pj2O|ëW™›cZ6ºËKAI’xä…W°•‚l2¤Rÿđ“”¶ï •6$g—K¿oªWQÂáđçx»̣Ó°é»0̀Ô ‹@ Eq̃×sä¹ 2—ÿ‘æwÿmƯƯ(ó,‰©¨Œ•Wq­£‹HË.̉å(¾„·d`Hfyj₫ØUœư§(½p„Æî3„¦²Ù éiº>x ÇÜ$W^è ÏÜ—× `æ|øfÛ.™gW]–º¯×¸)î÷N₫E¶YsºÑœî;̀½¬à×A˜I†/à£OǨïlC‰ry¶<Ü€*ƒî |æy>4ç &ĉ/xóCư¬Ư’^|[ÙM₫ùǤ“Óty›qÂ46–¹zË_C]UhYB-7ÏỘèD‚Ù‘Cxxƒææ¼̃4ëYfg>ưÔĂÜ\”Ẹ̣̀Ú4iY<”ĂÍÙ+J/Æ»–Äă©Áá(Z×s°lÛbtô‘È0¶]¼ễ­ÚJU‘èn/ºûîGÓí¿Ùا°ø&Hơ ¹µùµ¢»đ̃É xü…w+?ÈJ6Î^©äqÛôb¢_Âç«%;(̣Ëw¨”4v÷Oi|ë/è8~á̉@OK;g™DÇ3xjÑœ¾;øJÚÛ0+wqiÓÓD?ü+ZN¦öúuTÛÆ•N³ùä1lưé}ɇT¾íKßä–e‰\"O×sG`Eæ‹=áW]´îÚ©dx$‚-;yäk/±u[å=C¹÷+»Ÿ>À™ÓE7̣ÔTº—Uï–Có$'>ö>å "x<ƺ%ñ¸̀éÓ>fg(.îA’V D&²°,Ë‹„rdY’°VÀ°F£\?U "Ë1’÷L~\û’HL‰Ä¢r©·® '‚­‘e9Û{™%•H1t­;SD2yî~oUü£çÙúÆŸÑqáÂmW«¸æ¦`f„™ÙS™/jŒUb›2YØHêđß̉zñ<ªe¡' ~—G~ËơåºK¦ÂÔT/BÔä (YĐŸå L–A₫¶?ñÜ2e |ö¦‘ Öv²¯¶se€×2Mô–DœDä-üÚëÔ×Oàr­ïD×x\æ“OẦ̀ôSVviEơ €¼h°w¥¨èd|D PL*µ₫/¬tzpå(™¿œäe,é܈ÀdE¨?ªR†ê~ô¾¡Ï â}‹ÁÁ…đÍ­U 5ưưG̃æ”»…éößÀv¿Ǿ‚d`£…ÍÄßú÷ç¤áÚUX'ß×ç$°+:©Âv¢á0EÑ(à™BIŰ,ăKUçäàª̃wIÈç#ät‘ÛĐ6¨@’‚́Ô¨†eäeí‰e8ç¥zwĂ{Œ‰&ă#c¹j(”/Ô< ;ÍøđLïJ}Áûô₫¶•ÙyfCa':†ín¦,T¾,‰VZlÛBQ ˜(²̀ÖæææÖ¢””Ü_µ˜¦ª£ṭtäCÎ^>N[ÓW¨OÍ¢Üâ€ôzK‰+!¼Ü,–$ QøWûd+Ă#oâN$n'’̀tû¯cÊ2£ÑQJË:P kâ0.º³ÆÇ²pÍŒ`ØÄ&²‘•ûk.,$üÈ#äeiDÓ5 Ó̀/Ät…eă¸c¢¨ v" «ˆÓwùǤ‚OSè/_¨$Ö ×»¿Gªâw(ö=z_]B„•¤ḉß 略¬qÑ !Ñë¯rüøĂÓüû¾†¾¦]Û–ª<ødcǃÇăÙđJ¦*JVÑ–,D¶´:4=Ơ‹!I(Vf˜Ø’DR÷̉\xoçD‚‡¹¸ÿ_!Y¶ô.îdrœˆw₫ '$‰~_˜K×#‹[pIê¿]ơ0YTqÓÎØ6ÄØkû"±,ë¾I^–VºN2LÖ0±m$)k;ï LTE]ă¡Ar®Ÿ¹Ä4B̉pTSạ̀,¼—`61\J Ü^â1ù~ü2BnÏÏ´ç¸6đ)£dƯ”×JYÊMSóÚ±D’ ‹‰¬²åè…%>s~%!ÄÖj#}¯Ñ?|´a¡9Ë©¨y–ê’=t?ñ¯v†íŸ¡ ²¥ÄBúS"›v‹&ùô\9MÍ_%ü*Y³Hvê³§XÛ‰ö–e¢8\ùƒŸâv8‰MO­¢ç}ƯP’¤¶Đºơú ¿Û‡Q>C}€eËĂ³2 ƯƯ„æ(÷¬½¶"Ë ÑÛHSƠ5œÙl3tí'\º₫!’âA&†å¡¾ă·i(«`¢ÿg|zå(²êD&:µßÂ1w‰Èä5¼j ±©6ü®V”[<>Ûœåâ¥7̃M4ºdFÖZƠT¼,Ø“e$¤N€µ˜›¸Œ)+X‚fÙiÀf ĂH29øKÎt¿KiíÓÔ…Jˆö¿ÉÙO„kÏ¿$àđóó²"âÛc÷é ÜHˆíéáiÀỤ̈,‰̉6.×gÎX‚©È*‡{oê”,‘qùA^۠ضlT5Ϙä0q:±&V‘11U~̣½:̉[Gøƒoă?Úé9÷çơ_ç¾:}_%¹vFæƯ(ÆÛ>ÅCm©;éñó¯ñ³Ÿ†9ø¯»ùƯg¦Q×H±¥mÛ(’´ë¸80ÑT„«Œ‰EtđM>_¸ÊiƧF T€¿JïƠ7q—¾ÂÖÖG‘Í(çOư }ưP]̣"ÓÑ0 ́̃ñrèèql‡âàcø{SÑđ2u¥-·!LÆ₫‰èœJG×K̀uw¯/m7)´¼,0™¯Đ°m›\\ƠốUF{΄ÇßwIªG.Đ×9BÿØq¤‚VP «ø‚‘Ăÿ…Øô>·IofkÅV4vŸ:Lhj hîéAâ N51¬€“Â…ÍLä—Df/°¾g €¡j$}¥ym÷1±,EÉ3¹ ]Ƕ¬U £Ú–Äb£²lûö×§Çub3*È6p†`ÁM2`fB'6­bKaÏ&zƯDZ”ÉUUiʽ7f̀i}?@Ú‘¦­&ÅZ£lËB‘e”{3&"g ‡3„?P¿€mkÙh©T”™´ ©´‡æµ„p¨á₫+¤,·¯Æ?ǻÙ¿¦¨¨Pp~o)"më'ËÚgæÆ̉3ç¹>x‰âªoPäq_gl‰$‘ïc²ÔÀ$‡»';¼MÔnư}́á }ê8DÙ¶©î¡O%‘˜Es¡)* ¡èatÙ"a$pø7ÑÜú×OñZ(D¦³ƒ}çÏS8™'M==Èâ?qB˜L·ư¸J0Rưô^9DhNà‰Çh́©`˜Œ»äµÍÖY–ªæI.ˆ¢©ÛÎ:9́l₫e1?{;HF€dK¨)^xeˆíơ}Ç‹ø₫?Í¿'$”‚ Ï%}Ñϱ Ô)¯LQ¼#¾p*.“ƯÏŒâđ ₫ă©Đ¼‡4E¹w‰®i+W‰Œ/¼“–ÖçÑæ)Ûˆ27ü)@Ø&BH(²:o%EĂ²SX¶DIĂ+l+hb,rÑ₫×¹~U¢¶ùש /~ˆ…g¸ÿ Ʀ'ñ]ăÊ•«ŒO1'JÿP5í mtעض=‘æ›C-Ù ŸĐËà^ơ”’ 40B*ÆÆđŒ~¦,#1¬$„Ä Ê*H2%5/®x’øl?×' ) »ÏœY'W{€ÿŸ½÷ ’+Kï;×ßô¶*+Ë( ®=Lws†cz†QCJ"G†¢(i¹±!÷°æAzÙØXmÄúXQ!­´Zy®Ä!9äÇÁ´o˜FĂWå½Ioñ{Ï>T5h Ñ0™•eî?@̣̃<ç|ßù₫ÿâCá’Ưÿ—©nSÍN0\X#¹¼|÷-fc­”‰`ló̃7®íxÄd‹@× $±ßEợè‡ ₫­e¢m§ªrsAe`­úùÁµá?0Ïßü¥Uä¼÷/{øÁcŒô,qåƯ$k¾ÿàòáw5̃{7‚# {)Cï÷£œúÊ<¯)̃¦‘AKg»¼=½nÍÆÔ»ḍ¡f²ª( ¶ç¼Ma(…Â2®X/%.æÑ̀vtÅ%ŸÆ=Âç~›ÿ[´ø\ff.`¹ ñ·¾Pé́Ê¥̉–U¢V+Rµ 8îöNÜs]w½ƒç1©/1Ù(­Ø ó]ưwƯ¾‰Ơö]ü!QŸ‰»É̉êV5ĂÊüT¥8±@+¥̀Ç\¿öGk¡è µĐ>~Ø:ÄÛG_g-½ûÙ}ccûÑï¹úoƯ<ßuư+óø6ú¦Í«{£Æû·}C>×qĐ5/Gk+À4 4$Ü&oØ5‰rI¡X\ÿS*ËỐơ“¾º`p{EâđË̉I›TO‘ƒ%¦Ç‚dk‚Hk™Êb€üY’Ñy™Ă¯.ó̉₫ †o}Δ/à`î0\«V1Mó®ü™}L>8e›Yzp/m{™ÿ#ÆÜ%k¹Ơ%:{¾„O*s{ê»̀Ủí‡QƯ5–C Ù‚ªø05ÁâÜi¢Á0©XÛú…­H÷~“tï'Op¸Sơeú÷¼Œ®loµºNLäÑe+MQ¶¨ÇDEÓüH€èd±ûùĐÛḌy$ wô2]û‰)Œ]ưçÜ‘„€î₫_¦=@”WqKWøèüEdIE_Ë—IPu¾ơ]ŸƠ76ü.:E´̉ ]S?o??Ó$ÓqU nûư®s·ÿ‚‡æÂĐutM[ï"jM{¡——ùí¿xỌk̃ <¡Ôj2¶+đûÜuR. |>‡ª¥S±áƠ_™†x‚/†øưăHÁ*_ưæ4ÇÚvî¾Y• ₫xâ-ơHŸX|ËÖÊé’‰§Çúôđ0I#~;FV"ôïÿkègY]¾€|tô}‹̃î—tíùöÄÛ,ͽ’F4ưº{_GסgïW˜\'“&M}æeíK%%¥ênéɲ…ªm®‚û$éÈëĂPÇ«_QĐg –ÜGZó û#Y"³çu&{¾ÇÈÇ!ƯS“=û'8¿ôßÑø¾j”¾‘¿}?¯‹½ƒ¿₫âzh?ƒ#ûúùư‰Î₫Ï{ …¶½z“WE©­Đ̉™ÜÔ5uœơ$1/ùµÎUÅÚ‚ÄD’ƒÄ}wÿn'qóù?GÏÄÂù<®\¦ùW\ưB'uœO×%*Z„H4̣ Ém}•›¯ư}‚ç>øÉ]ÏI×ôô}¿7:ø·_úuÜà¾:’’â­Đ»¿Ư·yÄÄuÖû/x9Z[@€Bqë–(Ä»K¼¸¿ÆÚF›¶„X đÓ IDAT₫ “N-“4~đƯ.nU*¼₫Æ*zY£\„#6êdn\0¶èksî¦[“¹u3@¹¤“s$́ÛA>₫Ø%Ñ^¢3á°•§p]$¦a~1‘eTeƯcâa3.²"¡X–#Iº{6÷ᮃ¦È(1©¯×DUׇ‰mq¸f’́/r{ïŸpø̉‡h¶Íó?£dª\­;ơØ-ăÔ)n½®`kG̃ư3¢÷””Q&_ÆM¾J}­)Êñ6›Á£{H÷n®•,\EV¼­-„p È̀êjÓß5P ư”Q" :̣ˆ°@̉küê·&ùĂ?Ṇƒo·ƒê²ÿÔ,¿ôæ /ŸXaæ{ ₫¿Û…¬Úöexók+DC¯œXăGÅx»¥B×W2wsM²‹~₫́Û¹9«Q‘]̣×büË›^úÊ,î3øëùª•®”¨ëzÙµê=9ŸML6\Ñ®ë ̣k<))Mæ<–¢c_Çæ[^®@W5Ïâ«71Ñ4œbe뿨$a·¼Èù¯üÿ˜C]BÂ…¯₫́û˜Å SÏưyÖö₫Jpdå‘Ë(® [*¦IÙ绘Ô4K‡2~èˆP/ơ0ădyD[•Áç{hënụ́9ƒêy·–ÇÄçñíơü¹Í̃ƠæW~ó¨íQ1¿ö7o#Ôơö t¿ø×‹Ø ª >W–Xă·öfp\‰uo @QABđæ_àmÁ½Íº£í~ûïƯzÈ]î¢Ơ‰”̀ÏïG ¾J 6T×%«Yºª̃—ÏúđY9²Œ®ªXǤÁ¤$O¬5Ïà±6Ú÷´7…ÇAƠ„j(U‘]—¼ßÀ(,¢®]Å¿p‘äć ^ÿˆÔÂÏ'æV ç̣₫.¤¿’\ùÉ’LWz¾‹Tw¢)Kç:ë0½äñ-${º¾·à8›NL$ 4ă!I hÆư÷©¢‡çpJ jơ!£dE`(®a4æ¾æ†pÔ7iø2’Ö[_roƠ05íó=&’$¡«ª7 iHÉб4é=é¦Ç®¡™̃œzĂ4 \{ûx…Áêù—̃°p”ÁĐơ+h¶ê8´./‘üÙ÷Yưè]fºöP '©éå@W–é(®â/åi¹MẸ̈¾R ơ¤l$ÎLJ_åú‰¿‰Ộ:¢-èe9O¢­ÄĐó¤º[·p‹®ªÇd A×5TI±×.ÏFJ†°å¯“î{Í?XªYøư₫ûdè3‰‰¦kØå²·3 !%¢É<ƒM&%µZ Ư+u¬;|†±}<&ŸXÿ4ÅÁ¿̀…@BäÿfđêD×ÖY’««$7b÷ȇB¸²L(ŸGyHitMƠ™ë́åÚ¡SLư˸ɗA}ö¼Y©K<ÚFkWks·ă`¨GL¶ ƯÀ¯ëÔªU Ÿé-ȳxJæ‡qÔ¯‘î{#8ØçTJeÉûåø3MM×q̣9owê E)ŒÊá›tÓC(v­†ĩÆ4Àc‚p?³Cú„&Ô‰œ˜1ªû¾ÉÇñ=,îùº¯₫„½·®(Qï©2’ànÏ}Ê ¨i«É6F‡25̣&…®“ˆÈ{~ă¾®\#^aàh m½Í—×±Ñ Ÿ ƯR†ŸLÀ`µ\&øê1GJææFpµ¯’îÿ z`°AϸVè§J»ƠG)V·ÖX‹O’À²FqÜƠƯ°ƠØÎ4PÁ£ưt́koº2“% Éq1MϪ¨;UU$>q'7¨$•<®s¥₫d'îg₫Å7™íïfôÖ;´OM̉²0Gba@±ˆâ8wûøI¢ªëd£QV̉,µµ3ƯÓO©ărt¡<û; ©H d3p$JǾî-AjV =ä]~[ ±H„ù©É¦óÛ®p]˜™9Œd~™Á_Dơ 5́Ye¡ỂwĐgjLŸi6ÜêéD7 8ö.I²•:1ư½´tlE&²Ă‹Ă6„ô)²‚ëØĐ bâ ú|¡D£ä4¼Œ́¼€[³˜˜™áΛ¸•*r6‹–É ™Z,!‡Ăhƒƒø zt q7Áµ>ï'0PÔˆ$¶¨Yºá…B·¡b£2Gñß=Á• 15}5đeº†~Inèóªå AŸÿ=z„ÇÄ\§N „/`àÛë…Ƕ‘eÉ‹7‚˜( ª4´û«$A¬uó?C==đê«!Å"N©„$ÉÈÁ̉=s.v $ÀµíûCyØ0MU–±- Å÷lÉưSS]”Ë;¿@ Ṭ“ÉtMí¥{ÿë  7ü™V©DKà ˆ‰¦ª ăxŒs‡Â¶m¯ëkƒ È2†¦m‹&kONˆ$¤`9ÜƠ{,K̉zYµ—£µå`&ĂÀªT0’˜t­äsẨίP:ĂÄ̉ƒ îÛ”gÖ*­©ŒÏ$&’,£lt¯ôˆÉ΄cÛ¨^©ccˆ‰¢`ªy«æ-Æ…ë¸È¬wùơ°ơ ƒ` ÀråYJ¡àPÿ®Y7!$6'´/®e ‡øÙgJ”¼añÙµºǵ̀Ch;˜î đkWÁ0MÖÊ¥æ’Ï„ëJ»hƯ]ÔMJù¨Ơ,Å#ö[Ñp„ÙɉgüÁ.Ê!ÚDUáÖjh²‚ÿ!-ơQŒÓ§Ôjͳø̣kEVf—pœƯauÖjÁ°ŸÎ₫îMº´j„ ƯëZÙ ¦Í4íù¥¬`úÖ嬵Kä§?¢Ów¤ Ưlü™®Yæơ0Ùª‡BЬÖô>•R¿Ï÷Đ½y¤Çħ딪ÍQj¹•“W¨Z0Í–¿IÅâ ‹‹ˆ§íM#&¶eaÆb^9]ƒà7}8M"öŬ`âÊ,•ŒÓ́D’v¶bÎçgX\ÇXốïBß„|T§fă3 ï̉Û¢đ™&º¢b•+˜C!\‹µ›F·tCéLʹmÁĐ“I’0}&öÚÚæ+™Ơ“WqJi"‘¾¿Ơ… kkT*~`óÚ˜[Ơ*†×äqÄÄïG4!ùµ”…‰+3T2ÂáAdygç@ärS¬®ÎS©D0ü›×­Úµ,LƯđˆư…aD²ù|Cˆ‰pJ¬NưɺɦÆ@„rYfv.̀đ‘4ÁÔW‘—ªÅ-{ö>T~ÔÏÛXÛÚ\I~µÂäỚbpxw’ùùóärU$) LoÚ³mËÂïÍÉiL]Gb}˜Ø&åñ”s2w.ß¡’ ‰́tR"Èå&™›»A±¨ D؈2gÇD¾«ë¢+2±èĂ'‚?̉é÷ùp7Ñ_­2yu‘Z¡•pxçgBçóË̀Í­“!̉›+´›ï÷yĤQeEQ°7A†„€rNé̉¥5HäÀ&%B2™;̀Î^§PĐ"ºéï`U+Çq‹#‹!;ëy&ơ;{.ó·ß"ª}‡ááOJ,ËåÂ…0™̀ ©¶Huđ²9i¬öXÄ$àóƒ³>ïc3HÉÔƠj…¡Đ¾/0¹Ü2óóÉç«ѶéÏwj6$y¥à &&†¦o 1©äÆ.Ư¢´¦‹B–wî¾ !Èfo37w‹bÑBMyZ¥ßïû­ Ó4ÑU•J©^Ơq‚…±·ˆkßæàÁÙOJj5‡ "¬¬,ĐÖv½nVT1“!‹}¶î|Ôÿ×4 Y¢á5¿RaâÊV!N(´oÇ'ê­“’KäóB¤hF|̉ªVÑuƯKÜk E!èóQ«VúœRVÚđ”hÄăGv¼§äRR*™¬·Í—ñ"(HëÆ›‡¦Ău]nƯºÅû|@å̃%¦…(f³uØr›ùÑ3DµÿÄ¡C“†³£×Ô¶m.\ˆ²°°J*uY®ƒÂq]ÜZd2ù™aPùó,>]ש5°2'·Rbâê,v1I(Ô· ª–YX¸D¡PEˆ–ÏÛ‚†¿éóˆI!IŸ«̉8bR̀ÂøÇ“T²~âñ£Ẹ̀Î{$„ —gnn”RÉhV̉a­Z]oNèy› Çqç?ø?øáYXX¸O§I’D"‘¤Z,>“ç_¸e–ïü˜¸ñ{9ŸG47’,©–Ë̃b́²)†¢ ½ÅØd‹Ẽÿà}Eah#ѵ§§‡¾¾Gw —$‰tK Ù¥åMéËåáAXƠ ²ë̉Ụ́ù³ï>×c"IÁ@j¹‚îu9ܨ•+DB!˜l1BÁ s ó×q‡ Z© iª—øºÙU¹̀¹s瘟_àµ×^£³³“?üH$‚ù9w“$Ittt0:3cÛ¨æ-èfËM¡@,Â÷ƯÆ?×c"I±Hسøv „À®V ynèÍ!&’D0À±¬­•häáél©L0èyK6uÍ«UÎ;ÇÔô4Ç_}•¾¾>ü~?¯¼̣ ###ơ~ŸˆßO)Ÿ÷´ Z5_ %‘|,ắ±º#Á Ókk[Ââ«”jß½sÍ…K¥´€«·àÓԺ׼áP..̣éæĂ¦¿ Ũ^V“»f =ë}“ §Ớưw+K|Ê=ûï:eJå,@ª!ç©å(Wïï³"iü†ÛÍeµ«±„w°7KçW*œ9s†Û·oṣäIúûûïöÀPŸ°/I*Ù™iBÑ(’×\rÓ`•+È® ¼RÿÇ åøA\ÛF¸Iibÿ 7Ë­Ëÿ”jèe }mƒ¸ö*7.₫¯X-ßàhÿ+÷)ÜÇ¿°mVfÎ Eƹ÷#jå1.¼ûwÔìøº<đWHG“ÛJ±J€kÙøư^EÁfÁïó¡+ ¶m£7¹Shv鮜eø…¿K[hcđpÈ̀ưˆó·.đÜKÿ -~ư)δ Vbniö®î#́BT™¹ó{|tưm dă³%]_cßëÊö¹ „ëâÖlB^(tSP.—9{ö,·nƯâä©S =S·ê¶TÑ©I,Ẹ̈0n"JÙ,ñpø±Â8í1 øưHƒ+\d«Dªå%*fơ¥X-ÍS±»ẃ c#$ E1Qơ₫Ÿ¹6‚ơŸ)‚]™åÎÍïàẹ̈Gî»@„“§X…=₫*íñ¶»W¼/ØvÖ‹©iù™ªH¢ÆêüÛÜ'̉2HØ₫ùÅ-¬ê2fô%₫:êÆ?Ëz]Ù^V«pv­öØ ÖĂ³yJ̃~ûmñ¼É‰'9pà™É`Àï'“Íd0ÚÚp>$.œă¦ ÙWå“ăíÔd.‹ăôdy¾·ÆÓ~ZYA2»2t/\[bb4Èè5Åfp$Ç´MÓú®K­X"ơåÜOMLü>¦¦a[Ö»ÎÂÎÖÎscôÏÈó ©"ûúaSÇ*\åÚơï“)®u2ĆëûE³?äÎ́yÂ"€¦¸́ë:v×ês¤ uá÷G@’‘%e[ZLåRĂ0!¿ÂÁ±‹ÈÆ~‚d@’$ĨvÄ^r/G«‘°,‹w̃}—kׯóêñă:t¨nŸƯjcáæ œḍéZÔ?̉đSøÉvP=:Ë=U|ÄÄ®hüè÷»¨ưBc½Ù§:÷NUá;ÿºƒøKK¼ö\ù>r#\‰K?nç?~/J¤ƠÂ*hœy/Â_ûíIÛœ¦ÊY~-ƒ©ªÆylbë-«å2fÓ-mA9w‹ÙÙ÷î å¬Q´@Ô¸uí_“e˜Á‘_C«Mqóú¿çÆÍ Ç~‰™Ûßa©êcd䯣»‹LL~ÀZn…Ô0Ñè^R_¦«ư¹{\Ñ×.ă¸eÆGÿ)w Io¡¥í8Ưm}(Û,ǤZ*“ ‡=Í·É“H(̀ÄÊÖè… „Å̉üP¢ƠÈ,Ưmw¸2ơ]®Œ]dïà¯ĐO±8ñ®}ü F₫kââ:·FB¢ÿoĐÛ&³pŵ[´Ä^' ^ôï}ƒØ½áàØe¬üG\ûh‚RƠ" gÏ >¶G®–+ºá ¿l Çáư÷ßçÊ•+¼̣̣Ë9|¸®Ÿß–J™¢ÍI4'WH¸07`jAÅ¡£·H{̉A–Ö– ~¦æu\Yê*̉•²¿˜àƒ Zä©´ÅP‹sWvK>¾ÿă('çùÍ?¿‚“ññ³·C(´̃ÇTj²¡˜É0ÔƠưÈ>3OMLâ‘(«+hv̉—ĂÚ̉y®—Æîû·Üê$©¨&YXËÑ}ä+´%z€̉+ïqm₫ û‹H²†e•(×&9xè94°n#¦¿Ÿªjm5††¢(´´%¿̣]ú§8̉ï°/½oûX}BàT«„SmöÛdƒA„m?ư ±zZ£…q¦Æ¾Íü=¤Úµ×¨¸1Àbméjx˜®—ñk2¦úƧÿ72ùYâÀÎS-Îa9¤{…´¨ªJÉôƒä¶̃WJ+„‹ª%Q4 %ĐOk`•ÙñÿÀjncGƒ€¦n›},‹±o0>üđC.]ºÄ‹/¼À‘#Gê₫ù²,Ó–Lrkn–p<̃æÿ°ïü4J0b#Ù ¹ªÍW}’/«̣Ñ÷:øßÙÈ®BÑvùâ×gÎú¹>éĂjơ3=«ÓŸ,ß é¬M™,:|q¤ÈA,Éåå_X$ØäÈq­REâ±z—<1‰„BÔæfq]·ÉÖ‚Jzï7yáÀ›÷xL–9ú¿¥ Øv [Șf`M Ăˆc;·±\…ξ_¥dÿ!7ÿc7tÂñƒ́Ù÷Ë$±Äq^ÇZñMѤǴ=p₫üy>üđC9‘#GFÚÓiÆgg(‹øë^ú-qñÇmü£ñ»ù®#sí¶Á¡_€̣|Ÿü …¾/Nđ[¿œA.™ü?ÿç^~v.ÆÉC‹L]‹!¥3üư¿;CH–¹|>‰ưûVè₫^„7~i–_x®|7¹E|ÆÇŸ|§ )cR,)„ºs|ë[3́MºMÛϵÅẺñ8¾'L4~¢Pä8¸Ót7¦$©(v7Œ"¹?/VEXVyĂ5íP³²ÈrE–"ÆÀÈßb_-Gvơ27o|‡[·£„‡†>Ùă™c(U DL|ÅDU „kÓ\?ÙÂuQ‘(A”‹óH₫ I$4=ˆ„»z»8ƒp‚AO~ .đî»ï222±cÇÏè3MÚIfV×@L-m;’C¿'Çdu|ưܬ­è̀W_8Tħj•Á¾? ¯¹¤÷eq₫4Ê?ù]…‘y ́ë±°–×=ù²Â ­¶-a•àÀá¾öj‘â\˜ÿåêæÇïäè|3{÷=6ơƯuéî́zb‚ùØ;đû1»VÛ̉]ó̀@;‰P€¥é·h ¼dM3¿|‡DË—đIy¦GŸ¢̉KWÇp73@̃©"Q¨Q,LS²ºñæ:Ư.…å÷¸tåtô‹öd'ù•÷X̀—iïè»ëµÙ¨Uª˜†¦ªlb‘Ë¥ÈHÑ–nߺÆüâ R‘KÓç¨*ib¡4…ƠËÜ¿L{ïDq"áîາlâ¸³ä ‹è¡Ô]ĂÁ±V˜ư÷,‹}è“SçĐB„ÍíÓ῭µmÖ›z¨§½ärụ̀ẽ~ûm†÷óâ‹/¢7x®”$I´·µ1³¼DͲê>Ǫc†¯¾¹ŒoCƠVó·N·RWBªºÑ×HUX¶ŒåÂѯOÚ“çÂGA®¼ÓÂ~ĐÊ—¿9Åkưpüñ ƒC%ü>OV‡ÙEËi1É,,bªêS%?ö ¥( >Ólz¬nÆqUư›L÷%‚lt²ođ×½ư3._¸†@B¼@ß(Ÿ@ •ÙÉŸ²4ûc$IBÑ[ÙÛû2¦¡-5ÈÉ?FS †ö¾²^Ê(É„Z^ »}ÉÛ¿ÇÄ- IÖié~“½ûëÜ–º±Öc©PđâăÍ$&á03ăÍmT(øüÉ,.iăß‘d’_¦¯T`zô?2…Œ¤˜ô “t$‚¨¶aJ?åæÇÿ $IRiéù-±vjb¿xŸ+W¾Í₫¿Nk$(z ]=oP¼ù§\úđ<®Đ| ư áºö’p$¥àZ¥ß4~iî&8Ă•«W9÷Ö[  ñÊ˯`l’G1‰…Y[\¤µ³sÓ¾s8T#¤H̀L鸽6X 3sáD™*qûfg_ÉP̀˜ü»ßƯĂû„9¶'Ôœ®?¢]%’zœñ “ƒEœ’F¶ ̣Û¨Ṃ–Ø¥C}ư(OÑ»é‰LçD´¹ °’¡äo#´è} Y3xèïămÈ’L,u‚ĂѪV !if}ĂKĐ̉ơ&á–±jUd4=aø‘ ₫¯è(PŒÚ=ư-Á̃áß$Ư»‚íØÈ‰ÏG©kHK ¨+# jú#µr™H[ÚÓ†MB(B8vSguDZóâ ûñ#÷–B´ư ¼9JЧ!K­ôíÿ-:ÊkØ®ƒª†đ™áơœ-³“áC¿C¹’Åq]dŇ鋡Ê2FË)^>Ù#dÁÈÏù$n9ÉÑèA*Ơâ:11â˜z=+r,4}‘¾8¾`c˜I¹P Ư#öu%%ׯ_ç·ßfhpăÇo)ơ$Ø=]]¬]¿¶©‘€pg‘ăÏ9ÿ£4f1 “¦T^ưj†°¬pæíV.-»=’G«ề =TÁo:ÄđÁ™$éĐ"Gú«wIG¼£À+ËüôûịóyJÓAÆƯ*¿q8Ñ„¹¥eüªF̣)¹Â“h$ÂèǗzI“:Xú‚é‡1|¡Îû(¤fÄĐŒØĂ|x¾Œú#IÈZ”°ư R¤á4*éM ËtîƒîÁ̃†<Á¶m$×!äÍøhº¤45*É>BᛃɟpØÏïŸỹe5@à!y’¤}†å)I¨zŒ kÀ·ª¡jóôÓ÷\?HBP«Tˆn¢e½“áº.·nƯâw̃a__'Nœh'*‹ơùY™¥­·§®¾²B-]½Ï+)+._]Æí´‘T‡oüú4ñ³1F'HªÍ¿9ʼnó(|á«‹Èg£Ü¹BR\;µÀñSk„L‰_|s·®ø˜_Đqû~̃hTñÙ|í7¦₫$µ´ù IDATɵ;~´P™oưæ/Zus º®LÍ "äG÷#¶C)“åđđđSyK˜˜ød!¶Dkí¦/̉Ù'ÓháD¨1ÄIJĐƠëøÚDèFÀç£Z®l~@;6:ÇÀáGúÑt·9µ²±¯É»5:ʹsçèîîæÄñăM ɲLÿ¾½|på m?sÅœ¤:|éWgøwÍ_ă+iêçº Zá _Ÿă 3`Ú |ư/zW¼üƠy^₫êĂŸm†-¾üY¾Ü=ƒ¥¥Aôà₫hÿ#·°ºJ"¤5ùôƠvOd[ü~‚†U©x̉U'¨ê]ư0p¤q¤ V©ôù·Eç̃Œx4JµXô¢>tY£ÿP„£#%Ÿ{SƠ¼Vôơ %·nqúôiÚÛÛ9qâĦ†o†h8BXÓ™»³ÿåáAR²¸8ˆ-¿Ajïבô$đŵ ===Ï”G÷DÄD–$‚ ƠRÙÛ­:@Qçè€#}„b¡†>«Z,F½Eo2b‘v¥‚ëº̃b<3)™§ÿPˆÁ£hzc“‰kå á@À#öψÑÑQNŸ>M[*ʼn'¶Ñ“$‰ưĂĂ˜cÛ̃&} ËËưTÅWiÙó ´à±G{KVVi‰DH>Aûùg&&ŸX|µRÉc–ÏJJ”9º$ơ5Ö=,\Q³‰z‰{MG0@Ù°À=<)é;dèùt³±ẻ±yÄ₫™066Æé3gH&“œ>Ι³g‰Åbœ:ujËyo%Ibdÿ~‚ºNÙ µ°¶ÖCÑú%Zz¿A06ø¹¿Ÿ[\"=Ѱ¾ÏÂû%>>]£Z© êu¨,iç3Ô»t´yºú í#ƯœD:»\!ä÷cn£»², G˜-ä űBEaă8Ù]±v®›GQçé{®›ÁcưèÆæ4h¨UªèÏk¬öT¤dfv–³gÏ 9ụ$ñ:\\1L̉ñ£Ó³}{QvqÔ.Ÿo'_ư:‰î_!”èûÜß/e2h¶Ẵ={ể£é‰—^Ó4"Á k¥"đ³¹âd„t‡é¿ÓHÊ"]ưQöŒn÷¢R,Œ%×ÔËĂ}ˆÇbL.-"\éj[ ŸBK—‹U¹´+ÖÍ/lz¢ưô ơ4<§ä>bR.Đ·pÇë­JJ8{æ º®ṣäI’É­;I’$úúẸ̀d––I¤“»nÏ$I¢\IQÏnÿUÂ-ûÇb œÉ²·=]·vOÅ ±8óuè`Ù¾·‹xj÷¸Í=˜¾º¹y N„Uóâă[¡`¨Y5tóé½X¦_càè BH»F‚d6“_’_̉‘n÷ˆưbiy™³gÏâº.¯½ö­­­[₫×›®usáÚU*?BÈ”Ê-K;¿=†ă ªVˆåµ“¤û¿J<ƯÿXg~un°nĐƠÙU·wy*b ‡Áqp癲Ô5]¯ûŒŸ²öªUdđú—l!øL“ iR)Ÿ‰˜Àº×±Ñ£ v3$!‡X$â-Æ`ee…3§OS*—yưµ×H§·OÇéÖ–:—[™_A(=\¼₫;́†|XI¸®KûÀAZ»‡ï?Yªí°o µ½ÍUø|>NµTBơ*=¶4ª…"AŸÓ4½ÅØ"P…x$ÊTfđ·{ØŸRU–½₫%O€µµ5NŸ>M.Ÿçơ×^£»»{Û}‡₫¾>VΟÇñHïưUoSFd€ÅéºZZ‰ÇêÛÑù©ˆ‰¦ªDĂạ1Ù̉( ´¥Ú<7ôC2gba¾áư\\[̃5ë*)E­Ÿy[)ˆ†Âh^~Éc!“Épæ̀2™ 'O¢··w[~]ÓØÓÙɵ;·©†Â>ϰû4Æ'0́mÀ?1‘$‰–D‚é[7{È—×XœXÂ*×vÅF[V…H‹Ÿ}‡ë£¤…@²º³YÏ`0ˆ*I Ö]̀Ô˜º1I)g³Â=–UÄ0plÓÿ́dLb=q<±·Ï#ö|>Ï[o½Åêê*'Ndß̃½ÛzƯ:ÚÓạ̈y¦æçIơöxgà^Y+)*ö6$)ü©D"á0ÔªU´”¡f–V™¹Á­́Á4S»@¨çYX8Oµ2W7bR-•Đ¿ç†̃r0 ƒH H>—o1)djL^™§’M ö"I;Ûk’ÍN°< #»Ä¾çẹ̈™®í ¸ơú—|> .9wî ‹‹ơƠmOJdIf`ß>̣— ̀“̃³ÇÛhÀ®ƠÈ/-Ó×ÙƠ°&yOML Ă ́óS̀ç‰Ö™˜d–V™¾ATzºvüFçós,.^§T̉‰R?a®ä DC!Ï ½%•D2‘`yj²!’É+ TsÂá~dygWär,-MP.0üơó •óyü†®{ư¹Nå2çÎcff†ă'NĐ×ׇ,ï "¬i#ĂĂ|pé"+óóÄS©]í9q‡…;tÆbtwv6l-úô(B2§œ/Ô—”,¯m’î]CJæç/Q(¸Q?ÏĐººHK"é¹ ·(±’ăÔu>G1k3qej.D(´;HÉÜÜ  ¨¯ơVÎåˆÇbu­6؉¤äôéÓŒṇ̃Ë/3Đß¿cHÉ' ơơ#Jeª¥̉îƯlÙùyR¡#4ô^y¦ÔL‚e!ê0LAn%»¾)wtïø}Îåæ˜›»D>ï"D}küZ ¼₫%[>Ÿ€aPÊçë ?PÊ9ŒƯđc¨*¥gœ- „ ˜-0ss §ÔI0¸HÉ<óó7<%­[_?2Y¦Ïë³…¡©*ÉXœB&ûŒ̣Ơ¢ĂËc”ׂD"C;”!Èf'˜›»E¡ ×Ÿ”•b CƠú½ùRCµZǻÙ³\»~“'ỌÜÁƒ;–”ÀzÁÇĐà 푳££»n q%—£–ÍÑÓÑAx†/>ÓIR•d$Jnyå©'2 !(åL]_¡–O ö́è BË-0?¡a¤!(ç̣¤Z[Îl=<ÚZ[q«ƠgŸuR2zé:Å•±ØA$ig“’LfœÙÙ1Eƒz‡o>YỐ̉2±pÅ ă<€Z­Æ[o½Åµk×8yâGÙábY’8vô(Ñ8s·ïàÖ!R°à–+TW×èio§£½}sÖúYYd:Ư†U~ú¸[1[dêÚ2V6E Đ»ă79Ÿ_daá<…‚½‘SRB —–¤ç†̃êLå)cו‚ĂØG£”V¢$Ïï‚ê›qææîP*é@cʬ…ÔÊ%̉é´—ŸơéKÊuyï½÷¸rå ¯¾̣ GÙukpôđaR¡ówÆŸÚ Ø.ªååÚ[Sôlb£¼gŸ‹Dñ)*ƠrÓÿde©Ål‘Û—Æ(gƒ>*•¹½É•J‘¥¥QE!̉ !%°´ç×t /Œ³å¡ª*ÉHŒ¹¥%L¿ÿ‰.B«â2zñksÑè¥̉ΖŸj5ĂÂÂ,å² ˜ “Dzđk:q/?ëṚ₫ûïóÑå˼ø̉K»ÆṢ0ƒüĐÎt‰ù;ă´íéƯ‘ë *UJ+«¤qöönîw|fb¢( ‰H„¥¥ERƯƯOộ«ó«¬ÎÑơ(Ù́Ú>̀B@¹qXÛª’Yª"D™LfǯUµ:M¹,€ÆöåÉ-¯D<ùù”^9₫</^äÈáĂ9|xW‡¹t]çđÈA.|ü1óă¤º»wĐzTó́l–¶D’===›. ÏLL$I¢«£“Ù/¯q‚ͱm ]@US»A´±,Xh)Ù0kP]èh÷¦¡nÄ¢ÑÙSe|Á'K¶T”†:²+ÖÉq\`±±RêºXÅ"½{<ù¹.^äƒ?äàÈGơz#¦irdd„Ë×®±49E¢£ux©sË˸ù"½íítwu5… ×å‰ÉD‚ n`U*OåIØÇæ1Ư Ïôº½n#ȲLkÛu]ñ¼É;ï¼ĂÀÀ'NœđÂ7)Ăíí9H̉ô1?v›b6·eåY‚å©)Ê++t¦R/$ụ̈̀l&‡$›Ëqst”̀Ä5Y"‘nCÙ$]­Jå\âê+Ø—n§·»]Ó¶l.¢\ïhK&)e³ b†Ësï°˜™ă>[KX,ÏüŒùÜOkƒ¹Në—₫-sc”ö ·ÄäÍõñó¨₫N )Çí[ÀBf™­`ó ÇÁ*ikmơ´Á6G[*…!I ¯î`Û•‡œ[Ç®Ü#e…r¹) ¥û½­P,̀®ÿ¬¸Œă \§ÄǛܾư.™Ü4νB$Vç~̀äÜ8ûüm^{í2Ô»§ºJm $ËK¬)kI$wm̉øíÛ·9sú4‰D‚“'O‡=a¬×%+ËÄ¢Q?z”CCC$M™©i–'&)¬­5$IVܪEqq‰•ñ ª+«tµ¦x₫đaûú0t}KŸơºS­­ŒMOQ.ño‡ª^k‰ù¹Éä—A2Åö“nÛ&K¸öó³ï³–_B Œ ’j 7û§L̀'("˜ºL{Ë̃»–\­4Îä́U:÷₫û÷A89–—oá3ư hh¿´ÇA9_ `˜Ävỷ̃N€i´Äâ,d²ød½»Ö,£×~¹µ¥uÛERH´‘á¾ă(n±kÿ/³+  I½Ao2ÈüÂY–V+Ü™x Ưü± ‹[¸E–—.£Å^ âØ©®7iWhJóóª…€Ö–Ư7[JÁää$§Ïœ!‹qêÔ)O4,ňE£E—–˜_ZbyiI×0CA ßúDxUUy\Ó^–$„ëR«Ơ°«•b»TF‚X8DªwñXl[(©»Vđù|´Æ̀e2 #&] RÉàlø{\;‹ó‰æ–¸}ưß0±¼J²e?Jm‘[¿M®ü×8°÷ ócÿ™+3S´¶îGq³LưUçÏ“U ¡i{¸† ’¿MÁ1hWlîŒư 5¡O>GÀôÓl̉)ål–̃Tª7 uG J1{ơ 5ËBk€2qj&Fÿ¬Ïÿ‰ „ÂÚ%l±~̃—¦~ÈØü"Ăÿ ©hœ•é?æ̉Í? –&)Ưaḅm₫{ZÛ(®^d>[Bö¢µe˜UËehà+„MóçDÇ.SÊÏaI~®]¾C¾° jœ_¥»µ©É̀¾˜ÉĐ–ˆc̃óλ…”̀ÍÍqö́YBÁ §ṆËm†Î–$BaĂ®. …+kk¬¬­Q̀äp„@V$MEƠuT]C’%$IB„À±ml«†kƠpí®ă «±`doh4ßçÛ–^À†˜+í©3ËK R¬6 Â[ËçîUµä–ÇIu‚Uezú2ÉÁ¿Ăs{#¹Y®_øŸ™œ}¾̃A*…;8j;Ư{¾LÈ0)åÇqÔ4AƠÄg|—–ô«¤¢m?'ÂŪ䰷™ÿ€®P-M19ưûŸû[´ÇSM%'ƠR ÉvHyaœƒDæKkØ®‹®È¸µ –+ăÓL„SD däđ+ص5¦¿ÏÇ×¾ÏbÛơ.’I«•U“@¤µê ®È8…@mnE8å2}ư»¦w‰‚••Μ>MµZå7̃đ:ƯzØzÆY£>8™LbJùµÍÇn1üªĂÚÊ8®açX]›ÀÀT-æ¦Î°Z’IµŸäÀ¡ß¦§¥•Ơ•q,W !¨¹V á>"F‰Åùó!°Ë·É•VñùZï–,7k ‹ s׳ëC×élk#¿²ºÉOÖ‰µĂÍß`bê²™›ŒưˆªÑO<ÚEvù?ügŒM_¢TÎăº.²b"I*²ÀvVY^ĂvîIƯ“C¤Ú"Ö~Âơÿ?{ïơ×yæk>{ïÚ•s@!rI00(Û•l·Ư¶»×ééî3gÎŹ˜µfÍuÿ 37³f­9gæ´ƯÇmÙ–%YJ¤ÄRb H9€*ç°÷ @)R%Q îçDUíđÅß÷~ï÷¾ï]:Éồ‡X<=8-?œ¥"c%|_E,ăØ±cd³YöîƯKmm­̃Ùt ‹ ¬&6j¬«ăúÜNï÷çåm°wjdb₫5ΤN#(̉9™P×>Œ‚D6q•é±÷˜¶W!Q".hèÄltărÚ˜û=Fñg4×ơ#‹" `´¶ÑR?ÀÈä¿“Z₫”es;mu°ŸP,jmƠ­CA ¶¦†™… ¹æûµU'Øñx[>×lÉÇÓ x~BYaná0+s*’)Hÿ†Ÿ´YĐ̀¨ö]gạÒ© ÉN;₫†jo-eĂ&ªæ¯3>₫>²)@ĐåFAÄUư=&ç³›³—¾—°ï礀pï×Ë'’t64>2‘Mc±Ç'•N³oï^ơ¦ó`Úw?>_(0tæ Öꪻ}œ'|­Y¾7S¢¦•Y?IÅ̉Dµ·á¦ƒ¦X;FÙ±‰Z·MÍ“ˆL¯€hÁééÂă¬BDC©¤ˆ­ “Ê%«³¿·ƒÙØEca, ÔøêosàS•<‰èebÉe$£¯¿§ƠyÏÛT¦‘Ë]!]BÓ°~¥¤¾ :qz¿: Ư§«½` JÏúù(tPQ¤£­ IQP*½@nWMzœ´mhÁlûê₫ h°43ƒÛáX÷y¥̣ù<Çcl|œ;w̉ÙÙ©‹]˜¬N¾]Ød™R¡ —øMV}JÚ:7·Ü“(P²9\+Í¡>È<"8́v­¢pæ̀®\fû¶í èÛ7:º0¹ŒF#u£ssXvjZBx«Ë =ª^À`1¾̃ ª–ÊäIZÚÛơÁæ§½µØ…ód’I=;{GgkG”dä¯-VSrñ8MMë̉·DUUÎ=Ë¥K—Ø´‰M›6é'öttạu5†XÆHF£xƒA NƯ‰ó«H­¬p¹êqKyL&ơUA®ÏÍbu80Ỳz¡|ÉÈ2›Úơ—FÓ4Î;ǹóçØĐ¿dYº¨ó/@¾w%$I4ƠƠQN¥)éA×¾’B&ƒ/ĐØĐ ïëĐØØˆÛj%YÖ ă+(åó¨¹<¡††u—SJUUÎ;Ç'Ÿ|Boo/[¶lY÷±YttạQS]MĐă!^ĐùrˆôJ”ú`Û­—‡ÎMqß̉؈ËQ̀çơù’₫“\\¢&Àïó­;QrñâEN:E__;¶ïÀd2éu®£ “o‡éÜ& IDAT ´65cRU2‰¤^ _@bq « ̉¤gƠùÁ@u~?ÑpX÷_@&Å"ë®ÿ¨ªÊđđ0§N¢¿¿ŸƯ»wë–]˜Üv;- dă1}`½ &AÀP©Đ̃̉¢::w¥¥© " }Kç̀’„P,ÑÖ܂ż~üp4Măúơ뜯çѹ˜¾v£ P¬«w»qăCCC477³k×.ƯïLG&÷I’ØĐÛ‹]4K¥ôÚX#±°ˆ èZçù@VU å ]˜ug6¯êÀ¢HOWNƒ¬;“¯ơ-Ÿ§­­ “qưôŸññq;†?`Ï=ØÖ"ÿêè¬G~đÍIAh¬o`yy…Å©ijZÙ b°89M•ÛÏëƠ[§Î=a2éé́äâèu¹æGt̉5Å©iNU~ÿº±&LNNŕØ1<{q9_ë÷±xœ±±1=¤ÎƒƠ_%‰–æfªªªîè«‚ö€,±¥g/]¢(K¸ị̈ ëH̀‡±K6lĐ#¼ê|-4MăÚè(ă‹ ››1‡iH…°I6ơ÷¯‹₫£isss9r‡ĂÁ¾ưûđy¿₫±çCC <‰ƯíÖ·~tŒ¶ ¤c16ôơñä“ÕáÀưÀ¸s›ŒFZC!.^'gIcû«‚‡|ë?Ưë¢ÿ|º}SÈçÙ»w/Á`Pttạ@ <&zz°!°8½¾Ä‰I2™Æ.èïîÆ IzKÔ¹¯‚@CC=Í5µb1 ™̀ºy7‹Á@dr›d ¯«iôŸh4Êñ'Èe³ R·¶¥ttÖ0°ÛlĺíŦÁ̉ồºØ/7K"SÓX‘ }}zFPï®s "Í¡UA²Ë+³Ù‡¿ÿˆ ăX$‰Mưưë"T"‘`hhˆt*Åàà ¡PHo¼:º0yq:ĺíĂ!DçæÑTơ¡-l£ ²89…EÙÔß¿®’‹é< \iij¢!PEjaq5ơĂC*đe ''qM lܸ.DI:fhhˆh4ÊîƯ»ijj̉­>n= ét8ØĐÓ‹K–Y™CyOëHªÊâÄ.óê ª[Jt¾Oq̉̃ÚJ¨º†Ld™T,₫ĐY…r™¥ÉI—‡çQ5|6_ÖÅäÈ©ăg¹qᗆèFrö§ORª¨¨å"…bùk_[-g¹̣ñ fRßûZæ¡éƯv›=½\¹6ÂÂÄÁ¦¦‡'XP©̀̉̀ —› }}ºC›Î÷?± í­­˜Íf&æçˆ—J¸ƒUE02%—'¹°H•ÇM_OﺨUU9uêçΟ£¹©™B¡ÀåË—?_iw©ÇÛ>¿åÿ` ÔÔÔ~½x.jK‡‘m=@s¨–Oặ©å,çß}́V;] ^øĂ–ZÎ3ôÊ_±öîaó†FÄo9ôE'Îrø½,]mXŒ‡oQ%eèƠ?q5ëaï“Mdç¯rêøu6ưä'œ÷h5×4´Ï׿Váäa}x•®­{¨X̣T4jX¸6Äá3N:z›ˆœùˆ…²‹íÀ(̃ëí4´b†Øâ"ª£…ºj'ßç¬ơP-;ŒF#ư/_fnb_}=f«ơè5M£˜J“[‰ôxéï]ƒªÎĂ+Nëë±Ù¬ŒNLŸ ¦¹i5ĐÑÚ’‘b¡H}0HÇ:9üé»ÉF#¡Æªª2<<Œ¢(·Y²TUE½eëZƒÛ¶²5M»ís“Ù̀àààwhNS+D秉,'ÑD#¾ºFªüDA@Sâái–" TÁ€§¦`•‹å‘O¸>|»bÇWí¡̃©!-![Ô67a·ÈwLz¦̀‚ÑJmK+N‹áfIä®OE©`¤®½—͈€F1evjBYĂâöSªĂdÑ4J.Î̀äùb“ĂK]S=£4•b:ÊÜt˜BIĂUÓ@mµQP‰L]£h¬Ă\°Í`´ûµ5 KâíϬi(¥<ó¤rE fuÍMØL"sĂç˜'t÷â¶[8ê—/LcªkÀ´m3“@.a~n‰R¼uMTW94•¹± j̣+sˆ̃VBuµûjdf¯suxƒ3@us3M̃2)­æ¶mløÏ] ªúñÖéî!ª ˳“¬Ä̉FuÍM8¬F”B‚ѱ%êœLO,ÑÜÓM]k®7Jf‰k3iBơnÂÓs”T‰ªæ6üN3OD˜™G•mÔ†jYŸ¤±§‹,ñM¦gĂĂ8¸ńïÇ|c”ùÈ2Y&Pÿày°‹‚@xr ›(ÑÚĐ@cCƒ>3ê<ø<^¶ntpá̉%"SÓ¸«ƒX°ˆ©A`zô.“‰®¶öu—ÔR’$ö̃&2¾R˜|Nˆ|ú›Ï ûwR—>x“'/bv8Ë%̉9Û^ø%»j™<ö6o~x«Ó¨•Èaàñƒ¸af‹=sDæÇ;tœÑp›ÅH)ŸÁPÓĂ‹û<^³xÛ½&OáÈû'¨ˆ&4MEđ·đ́/†—opâ@! [ÁÖµ›Ÿÿêy,±‹¼ñû×X*Z±e²É45ƒ<ûܤ́‘âÉÿü¿³±ÁNzaœ±p ÎxŒ˜µ‡¿ÿÏc‘Tοơoœ8q‚¾¶gÔ2W=₫-UV8ưïÿ'®Mr`?v³t‹5IÁ qpßOi®¶‘œ8ËË¿;Ä\â16 îcøô0}Ïp`[+3§£ÜX³ïÇOă7dxçè1ÊÁ-üí/ŸÄ$”úÓăÜñăll>€¨0ºxúFÀf¼¥”Dj7l§ïâED¥Ç~4ȹW.±¬̃>»úim=M¾…½ƒ[)ΜǻéËô¿ô¿đضʱ1₫ôÿüKFlĐJú7óă§¶Bn₫¦UHE4¥Bco?vtP\¸Äÿư₫;331\K˜Í;yñÿ_ä̀«¿çăh”o3åǽ÷ùرe £ăcÄæÂT º:´@¬e\œ™Aª(Ôùư4‡BÈz̉,uƠ.´67SđsơÚuâ3³l6^Ú÷,¤ ‚å2ñ…E¨Thmn!XU…¤'´ü̃F0O H[Fiµî•RLx5†T&'VéëjÁ$@̣ĐØ\ÏƠÓSdË|¡„#—yí·yÛ;hhi¦©!€L‚ b÷ùih¬bøƯWHM´ÓÜ̃FsO/vóícd>b%£ơñLFxBüäo…h41ÿñVg¦P ²AÂá÷" ÊÅá3¸Âï¶"ªÚ±j'‰¤r´6ÔÑTkcèåÿN¸½¦¶:z;0”–˜Ÿ&í03ôÖ«ïº#NÏD#ê|öƠ­"w•̉T–ªŸ ÉäÀí2ríØÛ WÔrh"I6[†*ñæä.k~A‚€(³Iæ§Âäküó @#M‘œM’̀—A2¬ áµ™ø|WaụÄ/r̃Äµï ˆ¢F4¼ÈR2‹â,‡/€V"™ÊP ÏQjñ`0yhhkÅ`¨|nƒM¶úih¬E’$Lv²¬RÊ¥‰̀.a© Qå·c0 tĺÂ;4₫íÆƒ‡½;™Ífúº{ˆÅbܘ˜ :=…ÑáÀîñÀ÷0¨ k…˜ÆHg³Øe#­¸NƯJ¢óP|§Ăɶ͛YX\drf†h:ÙåÂêvÁw܆%A@-IEc(…"~¯—¦P³É¤÷ŸïY˜øZ{Ø~àfĂj¹ẈQæO}DPUU>ơ­$I¢¢”©(Đºÿ ?­kăÆÈ f.Ÿäü±£l~æ%¶u|6y‹–û₫k¯^erbOư…“ÎV^ø»ŸRë₫̀*¦i*ªª!‰kοÈFăMç[A6¯m£¬N¸ÂŧRQeĂÍ&+H ¥ÑÓÄơ÷Œ _efjă¯~Œ­q+O<Ñ¢X́6,k T-Í}h3ăs˜™Dƒé6Ëz»eQÓˆăư¿¾Kpàư½!´Ä ckGó¿¸kªª‰X́ÖÏîß¾™` —EAÂ`4ߟn¸¶ơ'ÊF¬v³Xéß÷ÎúVd1Óªđ¼[ ‘d ŸzF¯*"44* É Ứ¯£Œhøvs¯a=t)Qñûư¸= aæÂ ¬$S˜\N,NçwvzG+—)¦3R)́&3­!‚UUë"íºÎ#f=‘$êjk „˜[\`9Çèt`u8‘M÷7fˆ¦(”r9©4Kø<ê[Zq¹\ze<€Xḿ²ẬBµÉå<+K¬j¬²ÊÂä ûpä÷¿åÚÅkô¶ö" QQ5ʹK‘­[÷ѵm7‘ñ³¼ü_ß$ú§MC©T(åódă (•đ8œ4„VÍÎzhy‡Üzb2i…¨­©aqiiµE§̀fœn7F«Ñ`@D´{́I¢ ¬wT”R‰T"I!“Áa2ôx¨Văr:ơ x…I°‘̃ MŒœ|ă…Ä́£³iú÷>‰]*qơÂq®G ­§¹’b9£âï`6ZpÙ`ồ LÉ ă®`µQ_í&µ8†äôcw:n»—Ñ kC;ÇÏ~È;•eLù®\Yboh æ/¤#mÛ¸ô—“9ôu>Ó—ÏáhÛ@¨̃Gbê ‡ßø˜Ú¾~‚n3‘É9¬₫._5Ư›7qèÈ'úk™j—ÄôÈ0bơF?Đs¯Kc\>/V%Ź#2o)[Ç k̀_&́ºí۲ɅpöÄ'lÛ¾^9Á{b¿Ucbx[ÛnÛƠxVí́V #W9w¶¾¶.zZÏrñƯW(„;QaƦâl|ú9Z,ßdĐ0PÓÑạ́Q¿ưu^™ùñI ̉·[œKỵ̈/ỵ̈/ëqơçv¹¨­®ÆërA¹D& RÊfT Y‘ÄƠcd¦Ư SÓ4 ƒ `Đ@+•(¥Ó¤#2Ñ(rY¡Êí¦£µ¦ÆFœ‡n%ÑYWnéCYÓÈ'’¤V¢Ó”Bµ\FDXƯQUEAUUDm5ó¯P©PÉå)§̉ä¢q2Ñ(Z¡ˆÛb¥¥¾öÖ6ªG¹ơ‡dllŒT.GMSñn‹'M¡+â¬n ®6€´æ¯ © …| O}ơµA‘µË‹K™Î{Ù¾½ƒ(ă¯rSÉ'Y /’É•©í̃̀ö=[±Û¬˜DHÅØë»èl’YYd%C5ºÙ´oƯm5·ÙQ¦ª¾‹T&º¸HIr°qï6ơ6P*äÁè&Ổ€Ù(¡– ™ºæVêÚÚ x-¤—‰Å3¸»Ùưø>‚n v_«Q#¶0O,GvÖ°ơ±4ƠûđÔ7áuˆ-΋¥pƠ·³e÷6|6‰|¾„3Đ@}½(æsHV?M­ơ ŸmkX<,F‘ØâeÁJó¶ư´6¸(æ‹8ü¬&#PU^V‡ I˓ΖñÔ†hïíÆi…èÂñxK[woÁả(ʸ«CÔT{ióỳ uơU(¥v ~Jù<’ÍOs[.»™R.MY´PÛ̉AWwJY–‹ä*Ú¶Ó×׌ («Fê›[pÚh•"ù¢F ¾CBm447a·Ê (5‚m„:Z±U‘%ÑBM—Hx™Îm{¨̣Ü}JÓ4"³s4èî¾3ß• ­‡4÷blSUR©Ñh”D:M>—£T)£ H"êÚêNDX * ¬6.‡ŸÏ‡ÓáĐ÷¿u94M#—Ï“N¥He2¤3̣ù<år™²RAY edIÂ`0`4™qØlØm6œN'N§sƠ‚¢ó½qèĐ!f——Ø¿ƒQwÆ×¹¿d—'¸pn’¦Í;¨ö™:₫z_₫¯ÿ…ÏtWUU¹4Jée"˹ôua¢££££s_'ËØÔ₫̣»?1N'wP )F†N²Ï}íg›¹t„¿üámV’…{ÿ•Räâ[à¿ÿ_ÿ•S'/‘I,3ÉƠ¡“¬$óh•"WOæèÑs”ƠN™è[9:::::k3°F©£P,#"F‹ £,!ÙT ÙbC-æ)UT F3ëg§.”R|¾ˆ&HT*%RÉÔ]#ƯhªB!—£\QDf› ƒ´ÁUUJä³yUC’MX¬fDÔb†LÙ„I(RT$ ‘qN>F¯#ˆĂь٠ ©erÙ<¢a0™±˜M«GU5r1G¡PF0QK9’Éü¼¿J!—¥TVD ³Ơ†lÈÇ»4‚«e'zH…¯ññû'Øî¯Ăf­Ç( ¨J‰\6ª‚l¶`6b."X œ£"ZpØä›áå|–’*a³™r6E¾bÀá´!PÉg)¨6«‘âÚs‰’ŒƠnE$‹̃»Ñ,µHÂjÙæ̉ ̀v•|ÉdµD2‘BU²©$ &›£,ă“³ÑUƒ£³‘Îí83d²©$F‹J1Oùnu^̀“Ë$‹ƠH6SÀît ~K¿w]˜èèèè耦±2~£œ –*‚(âªmăñçŒK]äư?ÿ•’À*åIÄ(7{^|‰Öj;•́2G_ƒ‰¹8&§—9KE½Û¼_æÆÉ8}n”B©¢LMçfz7²’ầ»‡¹1OEƒÑNÇÎưlß̉Âơă¯qêZ¯1GIôaWĂ\!ï>‚l”é 99ưÎÛŒN-R.k~{’öj̣‘ >øë;,%ؼ̀êæ¹Ëë«̀ûˆC—È+ˆ’L°}€½{70qú4W¯Í¢•ư\ü°‚exdíĂ‘ä§iơ œ:ôsQEẮ²ưégh©ùøĐ+̀¬È˜ÔîöA|ăj–­̀ä©÷9· ̣ăŸ=‹]ÈqôÿÊxÖÉOÿé7ø̀ çßyEªhª¸zñÙ| D3¡Ư îéÇPráè(Ơ{xr£Gq̣ôu0Û© zɦâ{ ¿ 4µÈµ£ïp6±D<‘Ăߺ‰û{9u”+WG(ù`öS™<Æp,D»•÷^ù+eC)O2G•½́yáEZªíT²>üËëŒÏűzüø½2‹…ư/¾DKƯ· ˜¨oåèèèèè U2̀¡:yü—¿âéí"{åC>>w‘ÄÜU"‰­;ç™çƾÁ™Ó×Q5±“Gøx$Ŧ§ŸăÉ'·# $“w†%/Fg9ưÑÌ­Ûxîï~Ă₫==ä—YXÊ0ỵGNNÓ¾çi^øÍßĐUgàèëo3±˜C+F¾4£yûŸÿ ¶öRÛØ̀æÁư´7WsăÈ|øÉụ̂üß>Oƒ-Á‡o¾ÏR<Å¥#ï0²bcÏK¿dßv´Ø2…âªI+F™¿£¡‡Ÿüú×́̃ÙẰÇpm.CÇ–-´47Đ:°ƒÁƒé̃ØKm¨•m{÷Ñ\çâêọñH O¿Äó¿x–*q#o&WÈÇf¸1§aÓ6oé₫́´`Àá³™˜"ÈSÉ,1½fq.Lx9‡’3=9I"æä‘S¸Û6rđ7¿bsog̃}›áÉ(éè"©t‰ôüÇœ¤~Ăn^øÅAÜ&…+Ÿ\![P(¥–(Z\́x₫ÜÈÄ'Ç™J˜ơtRÛØ̀–½ûik®¡œ°´œCEâ³WYIæhßùÏ|Cb”³gFQ5ÑđÉ[~ü"öö“_˜äÚÈÜ}Iª ÙNçÎưĺm$aq)EYÓ¯dP5 D+Ơ-Ư´µÖá«m &h%º§¢–X¸qWS;==­Ô´ö̉×׆Ëz—éE1he‹ó,­¤ tíâÙ¿ù ¡™¹ëĂØBlè!PÓ@ßîØK—£‚€¯ÊǦ]TœXDAÂáơbÔrŒ]¹‚)à§Ê!R(‹xkê(,M±07ÇüÄ }ưt·ÔRß»ÖÖf̀w‰3'˜üô?öcÚC>"ÓSÄc)”b†H<‡ÉéÆ$ ˜œ\.3v§ A0àôz In _ÇQSEÀªRPd<Á3Ä’YÁ@0ÔȦí}øÜ·pU·à’„Wâ¤æfP, ôÖYœ “‰FH¤5ärŒh΀¯*H1—ÇjÀ-&™›˜¡̣©ˆ¦›™%!øéƯ³ _Mˆ­;6Rëù,μÑꥥ+-¡:·ôáv*dY¬Nûê»x<˜%ásƠe%Ø̉CkK-¾ÚFª«-¬,Æ©¨EF¯ăm餷·†Íô÷µă4ߟØEúVZ9ÍÙC¯röZœê¦FÜv™r¹„T^]q#ÉX,¶µ‰U@”E´l´™t s•ưf8{‹Ăd¼3®ÉbÿÏ~Ê©ă§8̣̣oÁ`¥mÓøÑNR©æFçZæ`0˜í˜Ä ©| ™½˜î’µVSK$“y–*S¼÷çđêß4³ÛA¥“ 2Z IDAT”%›Sqýk¡Ñl.3‚¤ÜqµáÄ›dbª° …µà›ê—–›ªIÆ3̀ç¯óöÇÖ©‚ÍïAQ$̀7̉]æl³ËG°ÆÆüÄiS°‡îà Ï̀±D¢£js‘Äâ(gßyơ¦¨)hFLFơ‡W•\¾ˆh0b–W3@Ë6×g飇ƠÄjVfQVç—!ÉX­¶›Y%Y‚BeµÎ3,ơµ÷px]L÷GRèÂDGGGG‡Ổ—/LĐơü?̣ÄöVÔÜ ±áI~Ơä%ÈX-™́j6] r©,J±rơSÁ^×ÍÁØ@!g̣âï½₫₫P3‡‘™dzÍ P)d(ª"¶Oƒ` wà'ˆF\N3Í5;øû_́[6j…bIÅ ¥™2 äS«Ç_A#È£)Ÿ›ú4å±QÎ]Xæ™ỵ̈¿±©ÉMváÓ—/}ɱÙƠ ¢dÂåuĐÙ³Ÿ_>»uM'”)–Á"—™áÑNC} 3×®0!Ä©Ư¾›j·åü%FÓEüơ½ÔÂø[{ùÉ?ÿ#Ơh…\³ƯX®]IÄl’Q•2¥ÊêW2)ré·Fùb{Æ—¥äîZç³ÈR6·v́Z#›H£”*÷¥-ê[9:::::ˆ‚ˆ$‰”ri’+‹\>y’•xœRl‰LQùab¤º­•Ää ®_Ÿbqb„áá1’ù;'»dx’#¯¼ÆÅË”T ·ß‡lP4™ºÎṇ3c\# sơăÓlµÔ×î¼¥$#¨y–æĂdËF»»‰ sơú,éD”«'óÑáOÈ”dªC5̀^¹̀éæFÎ2>1M¡|ç³$ •l"I|aá󉥳dW"äÊ·[0Ñ”{AÄSWµáÚé Ä—¸pî ñüWW¼dDP ,…Ăḍʽ5ÁDu[ ñɌҲ86̀đƠ1R…ûsÄX·˜èèèèè`¯j`ó®^Î9̀ëWíT…ZÙ₫ô“ ]ạ̊6·Ë-¦z£Í‹ "m»ö³iáuNươ˜́¼/­í |ÎÜàđ zD.y‹ó*ˆ’ú]ÓÛUMs°7]âÚÑ·Ö@29ØûÜi Z5yđûl7×î6O-Í!7?z“É–ÇBªxˆËï¿ÎyEE2ÙèØq—ׯÇ"̣Ú!ÿ₫·X=́ÁêlîÛíx[ºÙºí2×̃ÿ3Sµ­í́Ø»™‘± Üèđb÷@^ư•Óß@¨ÚÄÙ>Àh|₫'Ÿ%[y—3oư‰ƒÅEÏàl³Ă‡S6}¡5Âîo¤̃ă bª!°!ÉƠÁZâˆ44øđû‚<öd3ç?æƠóÇA4hƯ@U•A‹csûQ¬2®†v́çÜ©÷˜v 8¨ªu""‚dÆđ̃vŒ×í¯ÂlqxëhjppáÈ¥§1X½øÖ|Sœ¾–[¶äŒ6/nÉ ‚@Ç®ưLͽαW₫€ÓÄiwârøö~&LvaG‘¯“]X-I§̉¨ˆX.Œ’B2–DvzP³Id›ë¦8)eăä*fÜ®ƠI¬œÏ’ÍæA”±9̀d’9œ>Ͼj¥D6¡\Q%V§Ù°ê¡)%2© eEC6[°Û¬Âj´ÖDNÆă±­ùh3)²ù2&§›Iú́·ƒÉƯ±ëM£˜M¯ÆÛÍ8l"É”‚Ûë¼=̃†¦¡”r¤Óy4Ñ€ƯéDP ¤R9,n/j*æđa7€F>• _T°¸¼XŒ"j¥@&•¥¢¨Èf6»Q(¤c”°át|‘8ÑÈÅ£”0áö8($cäÊnŸ QXơ™É§Ó«ñe$»Ë‰,­>G6C“Xä2săÓ¨f.»1æåÿö:₫Gö IÄs¸}›ïœˆ®`qz0É"…t’\¡‚ÙéAVR¤‹$Q@-ÄYkøƯFbѪ ᪠b‘EJ+SŒœ=MÚÑA°!HmÀ½ö”w›÷âo ·¿§ÙáÆí¶#|‡mM&:::::_¹ººr¨àe’ éùa>úë óËdReúôSöö’™»Ê±wÍ”QÊ*ª́fÇÁçÙĐægéú|í^·Å\Å/üˆÂø)NœºLEÓĐGu{Ÿ}†Ú[N¹£a¦®f|2ŒåüÔVj9Ă™÷¡f#¤Ó̀5Ư<û‹ºŒÄ&¯pô½‰e+¨eUö°ëùèkñƯ!NT¥À'‡̃B*®/–0ù[xâÅç¨sĂ•#ïqæ̣ªPƠ1ÀcḮG]ºÎûo&‘« ¨ `¤÷±ç©*Œ2°‘vƒJ*2Kmÿ́ߌ]Hr"» ¦ÍPí́|v?͵.¦Oæ­£ÇéÜ6€Q+,Óà)¶´₫ˆß½ü ³;÷Đ̃ÛG¨é†–=ܱ́aM”|F.¦¢” Ÿc>-sđ7¿¡Ê¢0~é,…JUă®ùΗÛK )–“Y¼₫jŒŸÎF‚DU}½=M8Ü~jC™ ™ø2Sc³X™¼ÁøTÁÈÊä‰\ ³ÍCSW§Ǿ “‹9¡̀ôµ–SZ™đÄ4åV“Å‚ˆÙjE@¶ziîéÇïuRỬ„Ă®QÈäÈ'£LÍ#HË“£LŒÏ¡‰F–ÇÇIäï /Ênz6đº©jë¦!è$fftŒHº‚’O1>|•X¶‚TI]@vù0¢\<~œ‰éµ=ÛØ:ĐÑbEEd“³éöÀa‚d£­¿›èø(±t‘td–¹H‰ö̃v¬6-}=hÉyÎ?ÁèréÉTqƠ`tÑĐÙƒ×íZ ·†ÍSMKgéÙQÎbv~™|j™L¦ X~ÚZ°ÛløêkÄ…BÑhÆ ŒfLFăJ«7€˜_áâñăLήPß·ƒÍ{Ưb¢££££ó½¢”V“ĂÍÖÏ¢¥ "²ù³́²’,!h*¥L.“§˜Za|$·öe~ k“™(Û°e@£T*QJ'ÌS‰¬Z2̀₫ª[kĐ¾<±/‚Á‚Ơ$³1W@WO”(J™|6‡’\f|$»öe7]›w_åËl6óaCÂ(K”+Erù¥\å©Qk/îoj§¦ÚEĂÆM~{˜²h¥{ïAöovÉ 4tö`?|™‰é¾åÊö:CA2 £|đê«h¾6Z[±J%Œñ³2-Ø̀w­[>Í{o|„«©‡Pc5¦b YXƯ’ù´ŒLi­ÊV#́ª÷́å+Ú₫ḮŒ\¹Æ©·®P‘́ôî?È̃íÍ÷%ü¼.Lttttt¾6¢AB’@)—V³ỗbŸc—-xün,wó̉“ ¥”%_6`·™ˆ¬¦Û]óó±ÙlØA6ưèçlht*ùtÁdÇl¼Ëħi_ @6ZpûƯ¸ọ̈üc}kÏ!_1b·̃Å:PÊHdR$“/b 8ñz5\Á»_ú^¦’'±8”2qªº¶Óºe¹ø'ß~3 ±©ïG€†ªƯư)ÍUÍ´5:˜º|¥ø Uíđ;$¦/O07đ›ÿô ƯVF†8¡ Ü5æ̉ĐJ„Ç®‘6VóâO_$`éÊvo'Œ4¾¢,5réƠ=;iÛº‡ll‘¡7_å̀±Ù´¹ —¬ ÉdĂm1“L¬PÑ:ø²Œ;f·Ÿ¶î&N ă”Ë@ƒOä̉©ăècß¾mwX<Ímt7™¸̣Á›˜w ħ9sf”¶Á§Ù²¡ù6 ‡([Q+&®ß dûâfOí]!>>q”"unK§#Ö°op ¶[|L4 ₫ÿöî´9®êÎăø÷®½ª»%uk³¤¶d-–-[²ñÎb;l¡2 3Cªæñ̀‹àUdj¦¦RS™„I 0‚7l#É’e[û¾[kï}ïmË’7ˆ –ÿ§Jºûö¹›¤ó»ç{•Yd¤ó —6™¡ú&34í©¥²$F¸¥‹ Ÿ|„ƯÔÈR_-­́|ú0öđyÚ,¶x˜|3M"Å—ïG×4\Lô18REuyxímƠCơæ´¼q ÅđóäÓUè‚ÇëFM&èḯAÍ›§§«‹åTÙ¡A–ƒw †/‡aàJ/ó™úGIX£}ƒ̣îÑä¤h¸t˜ígpdƠáÛoÏXqz?;EÇlÛ¿“"™±đ‡|+­_ßÈïÛ«¯¾úªüÙ !Ä÷SOO‹ñ8¥ë£¨v_e(Irº—+ƒKÔmÙŒG·˜™˜o1µơh ,ÎL°”2©nØHu] j|«m­\½Ôâ+aû}D.b Ó̀/C´¶–€ßD1üD£%̀ôÓùy+ƒĂ3„«izx cm7H·Kcirˆ₫ 4—C÷P±¡ü '½Èäø5Beµ”¯‹PBl’«m­twơ ÊhÚ¿B¿¹æi’Ôâ43q7.áËmô N³~û>ö́ßJ^~1eE~Æz¯Đq¡Ñ©•[w²½©‚ ‡k£½t]ø‚˽¨yé{ú)J Œ1Ôs•¥´IY´÷-ûáq«̀ôc¬Û̀ÎƯ[ñ˜*̃ü0V|–¾vÆgcmÚCM±ÎäØ$¦× Áº ơ†ÜØ©E¦&æ–Ơ±is±éQº;/q-ëw"b,3=·Œéó (ªêjÉóXñkLN-SRµ‘âH>¤c ÷\e!eP­Äcæ¶ÓNÎ399OA´‘º afGzéºĐJï•>Ô`9{Ÿ~‚â<ă¾ŸÊq‡©átĐnù½”Ù……â{́o™]ø^úZxưµ¿²ù¹Ÿ³ç¡ơ8Ù4Y'×À±³d2†iäÆ+±,,+‹ă€ªéh¢(8¶E&c¯,·rqÍ`Y6¹₫*:z§g3²™ ¶í é:VÖÂ0Í•r2©ªa¢]ïr·mX[IÚd̉Y S'›Îàܲ~Çq°²¹u¢(膱2k±meÉZöơđ¦¡ëzn–dÛ"“É¢¨º¡ßᆗC&ÆQ4ŒŸ;¶m‘ÍZ¹₫;†cYd- Íб2«÷5÷}U3ÑT°¬,–eçÖ§kØÙ – º®’Í̃<'¹}Í ›&êʹ¸};'W¾n˜¹qR®—ŸÛO]רw‰̀.,„â¢[iÚ̃CçÙÓ”—Qñ®™]XQùU}3UM»c ¢j˜®Ûß×tíKk$Ư¸¹Ö[¯´ ×ÚΡwÛ†5%**¦Ë¼ă÷sŸ¯]çªPuóÛ|·}\½†éº½ÈC±N’ñ¡[†íÇJ1:0@ƾǹ¹m?5û<××ʧòb2³öx9Ë£í|ôæ̀HOüôÇ”zi?×ʒ奪®†Ôàœ8ÑŃ<đ+-&B!¾Tr¦ŸÏŸaxlT“̉ÚÍ́>¸¿®`-qúă Ïâ ^_Oó̃팶|̀™ÏÛ(U¼¨™ÇÙ±£qå ÜÎ$H«&ë6ÔP }Å­°j;Ë©“§˜²"x‚ jÂÆ±œ:̣'Ɔp|a¶=z˜M5Å(8,^âÜé LÎ, ¦y;¶¯¸Í±ï¸À¹!öüä} WO~@ûƠŸyê?ă­'8ß“d×3™ºpŒ®KƯ$̉₫‚R6ï9@}4@ç©£ôϘ©)́¼ ́Ư[Çå3'é˜ kAh]5͇g¹ó$'N· •-árÙ<¼§¿ù͵¤Æ8ẃCSØNqu»?FĐ„ÁÖÓ´µ^ba)…á R»muIÎ}ü>3ø̃~Ÿ=§ª8p=fèimc.¿‰—~̣$~¢ë£̀.AĐ«¡xªÙ̉PÉÑóçÙ¶§"Ïư5I‹‰BצdtđÆÏ0±ë%Nf“oÿ—‡â4́~„­QÏ}À±Z°‹‹¥µgM{¡¹¹…á«t÷NQ-¦¨¬Œhư6jê7p³ußÁJ%±œ,ƯŸŸåĂ7ࣣ̃ŸĐ=0}Ï m…ậR"e¥”×4°ys-A—ĂpWËiÛöï»ÜDZN0Ë’˜àèf6ă¦ùÑǨ©œzçM:z§n¶ß(*¡ƒÁ‹íŒ/ádb \n§£ă2CcsØVá̃KŒÍeXlư÷ßm!¯r »Ù;6ÈÑ7̃et.Mr¶›Õ?GJPÓPĂDë ZZˆnÛË®}Ídfú¹Ôz™’̣%åeTÔn¡¾¡öǽĂ÷Åffdèæ9d|dâæ¾e—8÷̃[\èaĂư47×3Ơ₫¼}Œ¥‰^N¾û!©@»=NeX¥ëB+×ôR‚Å¥WVÑøP#%₫›k˦¸6<ˆ7hpñ/oó§_ÿ>üŒ*ª¢ ¨:ë·mŘ½J_ß÷Ûh"-&BñƒgÑßv–?\Z5È–ÅTÏ(u»`yb„ËWfØü³ ©9bƠ›èál{Ë·‘M&ÈàÁíÏ£¼¬Ê†m8º3£aêạ́(á ÷–Ơüj‚ÅÙIü¥̀ö_¤ơ|Oüâe¶Ôßåv‚+&ç!ë-¢´,„¢®¬`ßsO‘ïRp-ơpơø,Éd…«é›°9ü£Ư—x) 6Ñåwô]îgSuCUreV².FGFÙt3·¬PS]µÁa’ơ^Ʀ)ß±‡Ñ#¸£›Ùÿø^̣Ü*a_îÿ|ñÉk¨J¨¸=Ï>AÄ£ĐƠ"ÏKqtµu¤,7yî^·I ¨ŒâHơrI|f”³ï¾EǪpcgc̀grU{bv‚+]#Tü%»voBq2X×ú9r¦“™‡H%âx y…ÅTT½@C̣‚Á›ÁÄ̀b¨4Í@Sl̉©Lî6c“N&AÉ mîTóä?U°8;ĂhïeÎ}zœXFç™ÇÖqçùk4ÓÀëÉÍ]ă „ñû½L¦_r;çNÙäæu¹²ª5MƒPE-{ú2¥₫\u—Ídp̣ñ®>κê:>;r…^Ÿ‰§leU%´Ÿ?Fo›âPZbÈ­1O®lŸ•I’± ]½^Œ±²~3XÊ—₫‘¦ùkLöđùñO9¶á/ïÉeˆ[cÛ¤SIâ±Ø‚I†L6sÇ$O @^0¸Lby7o½hª¡A:‘¾¾6‡T2£˜èºNùǨز‹Ù‰1º[Ïŕ­wđFđ\/ëVªf(.@‰i׃‚ÇŸ‡ê¤I[Ö×÷»(B!î%¯ LIH§ÿbËü(ñIúúF(̃đ0=Açñă$ƒƠ4n®¤>ègâj'c×I;åhX,-.Jgq»ǹ c1ÑƠ‡mç¡§^¤a}> m OĨl,ĂpRŒ\éC+¬¤$́¿å¢[AUT’‰eâñÔ=̉N¤²¿ƠÁÔØUÛד]¢«ư e; øÜ+·– +«đ¨Çù¼ƯMÓÓ“_¢Đ»À…‹S”m:LĐă¥¼¾†Î¶«ŒŒoc]ÉĐ¥N̉î0e!–‡V… +Io˦2AjÚHƠ–‹ƒ]œé›'i¦8ÄcK$’iüĐL?[=̀Ö¯ñ¼yƒù”ùî¼Ä\m—µH÷å «ë1‡8y¼‡¦x}--AgpêÈƠIDATÛ{¤ ¼ªm%XẒWW 7µơ|ön'»·³±ÔCOG'¿˜HÀ—Û÷l‚¹e›üç¾…–`"„?ôÖÓ…®©wyŒP;ä̀éó¼ù__à86;Ê®ư»0 jÓ~́m.0Đp°UÛk à˧ª¦˜/>~‹Gö=”» ¢hmØHÅå^Nüßo8åX(N–¢Æ]́l®Ç^á́‘·0›^äÙÇ7­Í›²ÊrZ?<Ă{ï(ä[`¬ĐKƠ1]¹–‹üª­́̃3ÆùăGè=£â86îp%•M·Ʀ ‡Ê(Ï÷04gQ {ƯD´\ê¡¢¶]UiØÿ(ă3G8öúoPU Ë‚í‡R½.ÈÅvóúÄ9jbĐwú#.·CSÀ¶lö́#äÍ£²ºœă-ó±©sđĐñû©U —y[•óÜ( hy%4<ÈÉcgøó¯¯àØY¥˜=ÏÄpÚÛQç9}ô(ß$°Ÿ¦ºJdYÁăO¦”Ÿ‚U O’̀¯ô^%H©±d₫ÍẽÍB2‰Ó뽑N2¿Uæ̉ª)ă/Ëüa}µ+tS˜ô 3ŸÀWaÉ|5SLNÑß3Jư®ïĐXF‘$@¡jí3¼ZÓ‰Íådø̀§||à‘5M8ÈräÜYû̃bǺ ÿ₫·Œä=ÔW™î:C|:Ăæ6År™R©̀ÔĐR†ÜÂg/^¸cïĂD<'Ȳµ¯Ó#—ùƠ«Äç,™s™gnÊü±ÅÔ›2W§̀ûû§q¹®̀W¬ĐM!e>1¾82÷ûnÖj¸á×e®9́(+Læâ”²y²Eh‰T ß’—$·Ï‹QHqơÜEluyåÑE–Ï~ùz/w³vÍVfgq®Y˺q(;˜O›„ƒ áp|¨êh€X%TV>̣™îår™‰éiÚÍ6Kè\æ=L$Djk°;Öµ¯!›ydn’H\f|ü Á`‚ª*iƠÄv\»Vd`àÑÈ|Å =•Ép₫  P.15_5ªT,2=9‰ƯëY‘2Ÿ[X “Ï?đ–†iR(q²ª H‚B¾€@ Ư°®À4LŒRùD_k%*!c'T¤»/pذ{'GáßúψTÓ¾í"! !aw:qy½Ë#r™ÂL²Ç#f|b‚‹W®`w») [̣ d373K®XÄå|ÙÎr9Íùóg)&0 ‰ééƠSÂ¥’`bbPh›Íx$óV¤Đ a¢:Äjk—i±å#½0œ˜ư“KDd¡_îºÂ\>¢iô^²,“L§ 6_€hØÎp×ẻëjñØSâåÜ<NœÇWSƒ®+³9„I¡GVȲLƠº]¼Ó¶™Ää]'óÅ{àû‹×—˜¸kp‚¥‰@̉âÖ3ïÇñ¹×̣/ c1|á°UˆßPèÉ…$6Uy¬uƯ4KØí³lØ@UWWFenNef&Ưn<²ÏX¡ÏĐ%EÁáv-ߦ#ËƠY)—WôŒkDåôÜ>UA±¸¸”â°nûv₫đ‡#|ồ† mؤ×Î¥w¤À¾†vjk9uơ mU¸ŒY†g¨n}93͉C'ñÔ·S_¡º6Fÿè(eÓDU$’‰LÑvËç,L q­ë*“S ĐDkhî́Àç¶Ư×̣¸üü,¦Ư‡Ă¦aqoÄç¦Éy*jïºíèW—ºÀîrâô¸­Bü†íMÓuJ…üc¿EŸÏ@]e«IMÓxäŸa-Àµx̣»o’Bư¶½¼¢Ú9{̣~sI³ăW±÷íWi©Rđí']úŒÓ½‡@ÁS»‘»6âv™øƯ ]Ç?ăʪÙè|v±h”tk s—G(f̉7‚ÚtÏ)>øƯ§î bU¤r–Ë?¤§gˆ×̃} [!¦€[¶¼¼₫÷BˆÅ‘ử뢔ằG£Ôobë¶6ëf̃#W¯]峩3¼¾öy¶6¬G±æXXXB·xL½̉r‘d"A:“YÅíàơ¸å{ëʦ-ÏR·v …B $ƯáD×T$ *{û»ä²y„$csºĐ”ÅM(6¼đ:-Ïd)&²ªáp:QdXûükÆndyŒü<'¿ø‚rE o¼û:>’0™ê»À¹ £ä29Êr–®Ó§›˜EH:á†ÖoîÀ¦Àtÿ®\¹F&[Âî Đ²i3̉t§CŸÈâö»hi¨´*Å=PËSz‰÷&ÉŕnƯ®X™ KèËJ1=Ă©O?¡«gˆRÙDRT›‡ö{ؾcºroR—$ ƯáBwÜơ§( ·ïÎÍ$EÅé¹s̉›¬Úpù¼ä̉@Ÿ`dxuß̃FØçXyK ‘ǽ«é@Ơ$.ü^Nбe#z~–sŸ¾OQ²±­ÅÅÑ> l£½!ÊD/]]¬kp`s» D* †ü÷”6~YîSÊ‚ŒËà¼2Jnđ÷d 9öv<ƒÛæ´˜……%t‹e Äå>ư€3—§Ù¾ÿMZ›«=Ç?çâ‰ÄêjXSå#37C"‘DH ¾pŸÇ$Q̀a”ËxÁP̀ç) ÀĂ­SP%IÆæ°SLMÓ{¥Hç«́~~+‘!9ÖGOuk)fsÈQ₫ªzÖ´¶RBÇ£gđºDë‰=˜Fyå̃S!JNĐ?5„±LR¿6; (Ú]i~:ñÉR†ư{¹üÖdE ‹§IèB˜̀OŒQĐb»À ü‰ bz¶ÈĐ´AS³»úäÄ÷Ơ/t#Ç™ßcÖƯÎ[oíĂ®B0;p™÷w„—~ôiºï¹± Ÿ;IR ²vC+·̃w³œ§çØAN=Æt¹‚¿üŸÿ†¨Gçi#¿0Ï|Ffm}ửÎn‹(º“5ơù.>B̃ÛÂÛï¼€^œáÿøsΟí"²³†®s—ptîGȦS” PD–ÓáiÜÄÚöZd 2sóT¸ÜD"‘ûºN[®@R˜ =TI,ê ÷Â9:#x‹ÏjÓSœ8z…êÖF́•́ÂbC˜e2™,º­ Y2ñƠṿzË&2sÓ\<ü §|Auô…¥:³*Z%a÷¥™óÏ(0Êđë¹Ă¤.ey§åE+ë¾Rꢘå̉¡¥‰ï|?vUba¬›ßü÷_Ûơ6o½ù 0uơïưû^ú«¿¦¥&p—8RfôZ#©áÈlÚ]$XJsê“'ØÍŸ½¾Uº¹_B>1Îų}4íØAĐsû ³”ặáÏ9uäiÇ₫â?ư%!çưÏ0Ëyº~Ω£Ç™•üåù·YLṣƒ÷¹Ø3†¢È ơ[ŸăÅ·£­D§›&_ü>Á5ÅÎùënm±¡MögøÉOx÷ïbl«Wï1¶ zO¥ˆ »vºĐîR­©"ÿúÓI>‚ÿơ«fmÄú²R.(–/wĂÈçr‹‡n A:1ÅÔä,2¾p%>ä¥ÔïÔØ8éLƠî"ZS”çÜÑc$ơ*¼Ñ ê¢Å€"™ÉQ&&æđWÖ07˜~zs?â«FÏ‹k¼K…,Ó“óD÷5-¦ÙE%ƠU!.MÅÁ¹5µ\ºx”#óuÔ56Ñ´¶¯"—Nâuú‰Ô. }NƠ¨ †h¨¯¿¯ËŸ˜ạ̀È0 ¡:ClÙư ï¿÷¿ÿUöö5(å ×.œ#)GèØSIcsg/ærÄgh:OÓ̃&ʉ1~rO};uU>TMCƠ@’UlÄÄĐ5â-ƠDü+/ø È0,đûä)’]¾“‘ơ w•º¤;ˆÆÂœ?̃Ï\ºD¥Ocvx|1M|tt~;>›Éä@? Â璉Y`rK2.4BƠ:µêmó^„irêó$W‡Êh†̀“ÖOj¡ £L¹T¢´tîFù–£çøè½”47d’Í™lzù-6µ‡8÷áo9ß7‡Ûe£˜IáªßÄ–fă£CäÜ2ÓS³T…h 3RËöW£$z38ÔơÔÆ\»Ï‹×a068̀ú–£³\d¬ƯmgiÛ–ÛÓ’¦‰¤¹Ù₫Æw©êgx`€£qơê(¯¿±í‘^³$ÉÔmyo¹ü\Í^!Ư“åGH¬kh¿Cê’¤]Óˆöy7ñÉQ——‘á "mÛ)̀M3;—Æ4Œnx5?ÁÇïưÙ¬„¦²Ù2k÷½Î µô9Ĺ骣[8ú»ßĐÏàơûK³Œ̀Úx÷¯̃E`2p₫zÊÇüÜé¢}o¾Êl|˜ñ‰Iª&â¤ÛqhößĂ[Ă3¯Ơ0qá Æf'îúu‹éYN}̣)ĂÓÉÛ Á_ƠÂî};ñºôïçŒÖ³ưƠ³=Çí½ñÛîpϽư.ÁHU‘đúÜ(Ê ¬đ³MCP, Ki°bIÜèM÷eøÙ/æÈ© vYL ö¼bÿĂïỊ́ñÅ~D!càªwñÊ•₫¡<3`t¢HSµ]¹ÙÝÍṕJ‘M»=œ>}âÊ⩺0Ë\;ùÿï¹Ñ“-f̀fÀ4̣t?΂­ïưÅ›¸å,ŸÿË?rñôycÛÀÛø<¯½¸#5ÍÈTHCµ 5”+·±¡³ íFÎ}q¦µGƠxÚ7÷´ùb´¯kæÈ©Ï9]ᢳ½Å,pơäçœ<=ÊÎ7_#ñï$½±­0ĂøD‚5›¡ëR?±Nv4¶ñÊ|xpœL¾€, ̣ù<%ĂÄöưI²Juûb-0—ÖË‚,-.Ó=av¼ö-Œ²’„¢,>»“ißơ"-;ÊKËĐeuqäÔ±÷UZvH ÂÄâáI]ƠT Ó \.i[à›¿ä ƠñÉŒ NĐZa05•¦y÷3ÄO}Âđè ÊLΕX··Ñó'œ…×đ]*}2gÿø¯\>~ÖÂ,Q*̀ổÛ?Í®ïÿ˜Î7§ßûgºûf½hqVÔ²óoă.ÆùƠ?üŒñYƒ–V"ư°mÏN*<¶ÛGغ¦ñ§6°V^jÛÖXs{¦Qµûq:´Ûßo)Í~y$¯;ˆV93’“ưœ:ÙGUÛ*ö•Û\>²Àÿ>•çú´ƒB¦̀hR “Ó“Äÿå?Ủ¿ûÙ$‡§ÙÜè£ïjo£—¿íÅL—è3¨ỉik¶ xØ»Ơ‰ưzl‚bºÄ'Rø]́l—9sÆúăi÷²JåV¶=·Û̉äÙË$O÷c–óLÓ܆ÏeC–Tªjb\½8IYwÓĐÖʱ3‡ùíä5ªë×Đ²aº¶¸iˆ,ËÖ_Uæª/¼J¦øGNÿá_9÷±¢ÈHªƒÖ]ÏÑÚÚHH́bîÀ ~ÿ?F‘D ĂYÍ®­ë°É9¦ú.q₫ü9́6r>C]Çz‚‘¨ŸóÇàó9Ù¾¥ơÔ%UCù ‹È²‚¬+w¼.Iª¬ß¥₫)hK¿_.[B8‘* .¶äëx»ñyÖ7®E–î̃5§—º(û™¬Ê’njP†ô÷0I™‚ :ê¦ïô(Ó“óœúè=T̉ÓS,äó¤ 囩ë¹yÊ6/•U!4»FCkK ‹?Vl„«źH.·J1_@öÉ‹uG¹¿­UeY£²©åι’|Û•¯ ÉÜp?>DÉÛÀó/<³Ø1^¡“<$ ếƯ‹sÉfSưYæ>Ïb–MƆK„[]„½2ª ktV$¯*´¯ṣï‡Rüß“yílÚêÆa“Pddn›˜(„àôÁ$#Y™ḯq!Me !œÓà”»'ZCëºơ‹3…`RÍpấ²¼xdéơ*mKÏ_$½FeÛ8£ƒƒô_>ÅƠ®a¾ơƒW¬€úFé•́ưöX?9ÉüBIƠñ‡#dI¢²c;oD˜™™G(Áh ¯Û„—ç¿ó=¦â“ºÓK¤*MWxæÍïP;>‹3\…ju¦Z™Ç2n£ƒ×÷ĐÙĐö•2_t¦NvŸ§û|[ ’€ßƒÔXĂ¹ƒôdK¸+ëx(B0VCÇ–­ØU !¶€ê Âcc̣+%)n¢„rcÏ̉‡è ©N~̣)#Só·u"ưƠḿ~a>××O¼B¸È£G[yiÿs–¶3^És6}1[¶ºpk‹±}̀ạÁ¡́RGh1)v3¶ ̀ÅĂغ?H]g‘«½9.MóßÏåùÛÿ)t× W˜/röTÁ9™÷~9M!Y¦»;Çß›ÇûŸ¦˜úD<¸xêס˪hmŒ³ừ̀µă‘2Œ Mu¢—ç¹tº _Ckẃ¦Â+óÛß#“Í#Ké\†|¡„Ë®Ư<ÿË,‘Ï)ä‹a’ÏæÈ«›]*×̀*z*jîÖ»–q‡¢¸CÑ;F»6·ÚfßăđGḥGÚơI@vaé‘å)£l ¬Ø´»„&)øM'’¹<»µ•…AR¹¹¿¸,$ªܼbÛ̀«MÏ₫Éî·̃dơ¼æg\î™cí ß[œ”VƠ€-yˆ+S&_Ư‡Óf#\[…25…Ă¡ºÂÁĵn̉Â…|Ë›y>”Âă#“xëœô÷ Ê”¿T«¾| Â,’Éd1½öÛ–» £D>_ _("Lƒ\.G^Øl7O[ÔƯ~6l&Vº½î(6/.Çí÷B%̣…ë1ȸƒ¤B‚£ŸÂđ5°kị̈âÏt»Ơ¸²VVeêÖè\éË16ă¢B3éî-©uà4Ëû"ƒ¯ÁÉ=>jƒ2ÿçÏ’,¤MdI"›5ÈäM4§Œ„„ͧóÚ"<»Tç²L̀t¬s *Ò,„§BèƯ]Wï‰ÓåBVm´ïz–ø>ă“ù%²$r[wmÁi×ÈÍráâ%tMÅ,©é\O$&U]ÉƠ“'8 °k÷Fœº‚&½8|à8‰Ù)fâ |ôóŸkîdÏ₫çđ;< Ó´6Óxˆ„Ăa6¶w`˜Ë'Y»®£®ÀC…I¦Å_Ç÷“Ïbä—§¼úFùƒï29§fÊÔÏùyͳ—Û¥êkÖ ß*X‡·‚ê£=jk£È€Ó&q1>bR×P‰$Ë4lz†Öñ9ü»_¡È`˜Íϼˆ$¬9p84|5­´5_áôMo ˆVNbsëH€fw¢k7ï­îp¡©2._·”äЇP_{™º˜oqd, F»NsøóS̀ÍN2=“ă?ûÿ¨éØÄvă±)KYXÓ×?bÂd¼÷‡œd.1Å̀D’ÿÇO©jé¤1ªĐ×Ơ‹Îó₫Ïú³h̃0ϼ̣2 UÁ¯K<‘è—̣剂¢Êl{̃ÇÀôÿô“)I`J*/¿âÅïÉ̀–øüä4º&#Ê&]ÔWkäêu~œâ½O4̃zÙƒÏ.!)2­Î¥1£›ºT ­ÍËöàñX0 Iz0G¬z¡Kƒ-/‹’æÆ¦Ü¸ă„×ñÆ÷c„CN4¥WPIbfO(¼”ú́xă§§ÉÊ(6'¡H›®°n߄ۧQ=¡KP$I¦¢¶‘göûoÛSµ¹ñؼ¨Kù<.Ư†ßç{¢¥^Èåo{ù¨)>àéPªªR_S³üơrvÊ$I¢¹®‘Ɔeû̀Ï|Ás—ÑË íóã íboû3÷¼Kœ¤{xæí?§ẽ ².¼ø·6?{¾ưC:3‚ªö@Ïçû$¦g( ́̃¡E†¶/Í;q¸́´mÛCmYÆév“=ËøÂ(+À¶ưoah¡ÅçÚö»_ÙÁçVyûo~Lº‘ ÷-eªiha·½â–ˆ!¡9=¸tù>î‘L¸¶™/oAv7!¿ƒwÿ¾ó¶ßW Gü_#A!•¦2Ay’:¢²̀̃7Cl“\êÍØiṿăkĪƒ¿úød‰ Ÿ‚„àåwC¬Ÿ(‘Î 4›L4¦á²K<óJÊvªGÅc»{1ĐèäÏÿ\¥:ôpdÍê#hx -¯~¡K2₫hƠ£ ›‹êú›»xÙƯ~ªÜ₫;nœjs©¹s³æôRÓxç₫àº3@]sà¡R>MÀ¦µk©ŒFŸØ̣x<$æçY®C€ÓáxÀ:be<–3¨K’„³¨QŸ ñƯØ>v¶oÅcsƯ×û¸ƒ1ÜÁÛ_óFªđ~©ÍkvÑÚ;?Ăáá ÉIºOa^ø©­ö3|ùuk xí8ơÚ[C0Vwă_Áª:î6¶¹CÔ5‡̃¨ƠơƠ1èn±®Kû«^Ï'STClZ¿í :ÓT’$B•6¾\rª®ĐÔ|³:<*k<ê]b»BMĂuYs¨4·ưéï©è2¾:àº̀³Ù546¾I,Öù@ñÈÚË}P̀ç± Ø´¶“Öææ'V@²,Ó¹v-æ2ϘµÔ\½h†̀útßjƯÇ3mµṬH IDAT›±)×EƯfă®t]êev*AEë:¶l½¹Ỳ*áV™oß¼™` `u~jù̃.óææíẸ̀ƒ)Ùú ¹'_æ·JỬ«ÅĂ¢®ª?ÙXß"?é^I’©hX˳ơ7F{’$±\w]æ±@m›6Y2_™?ø+KèOº̀l^!2·°xØ4.=îz̉ê₫¢ÀWg{¼)óÛ7o& Z±çÈ<“YCSÓĂ“¹%ô'\æ+!Ínañ¨Åi±¼äS)*ư¶m²d₫(¸>2Ø2_ÑB·ô&WYÿR¾€ÓfcSg'­M–̀-,,–IæÉƠá0Û7m¢"z¬±gµ…öë#sIZL³·´́@’®‚W¤ĐYB6L&®ơ¯:Ù y9yÊÊ$Ѩ´ªbûøxry»Ư@–,»¹*„¾(óa.- jÑW¡̀ăƒ=äL‡ưÉŸ (©6$Ư±,Ÿ¥̣Ëw¯MS0<:FÉX>«kD]M²µgưÉüÂƠA®Œ¦QµhNkÉ7‘ùdÿfff1aæ“̀Ï19yˆhtuʼ«kIJàó=øcÔ/ô#ó¡yÔ@Ưª–96˜+o]­0 LÓXÏ'#+ʽGÙl†ĂHê1ḍÊ7E<Åq‚~/^¯×²̀}ÉÜä|÷]YÔ`=ĂcÉüke]’yÓQñXRDB˜Äăç–Fæ©U.ó<ÉäS.ô›2Ÿ[#óø0ñ¡%™ë+3˜—̉Œ^<Èôp…B ›¿pÓjÚÖ¡©÷>â4K&§đU5 Ëç^ª 9؈$=ú³„@̀&-Ă<ˆ̀»úèÈ£U4¢Úœ–̀¿‰̀ûÎ33;·82—e˻燂xüñøÓ!ó‡ơƠVlïN™V™̀‡n—ùJûnBPÎLĐưác ë*ÚÍ4lÙ‡Ç)èÿâ'ô?ƒa „01JÊÅ<år鯳p!¦QZ|½XÀ4M„0IäêÁ÷I¥R«pÛ_‹‡Ú™,œ»̉KW¼€n¶d₫ âN!—&̃wnQæÎ%™?†ëˆÇÏ21±(óÊÊƠ%ó±±G#ó;B¿Mæ₫ZtWđºCV₫ G0">t•œ©îY‘3¢&s×16aí[ÿ•ÚúêÅ×۷ᦠ8f‰™̃Ïî¹L±PFu©Ú°ŸªúZÊéQúN|̀B"Ü•k©mZĂè…ºÜVYGóöư] ’¬`˜À#D(̉Ư¨I)=ĂÂä0ù|E÷à‰Ôạ́ù‘ïë¾ ŒbY³Ỵy ™—9s±›É¶H’,c–‹VÁü©2+䙸Ä́Ü<¦3̉ă‘ùÄÄYâñ/¨¬L‹I7ÚÅÊ—9ŒåéîG–x½ù‡ÚW¤ĐÇâÓœ8ßaócSäR‰UÓ¨…3ñar¾be€Y"9v5ÔN¤ª̣†œ$ƠIåºB"?K÷áđ¶¼@ưZ¦/ư‘îÏ~ƒûƯ¿%×ưăĂ´<ûz9ÎÄàÙR;p5₫*ÊúỒÙ¬`¼PàÓ³ƒ´¨l ¬k®Á¡Ü.ó…₫Côû„L®ŒªëP.`*nj¶½CăÚ{–º‘dàÄ!ë^" X³Ûï7FLLq¦g Có w[̣ È¥̀gÇ&s€Db”K—>Çá˜'›•¸vmơ”o>o26–DÓ̀W¬Đ3éy-ˆ́ª$»Ê²®…|b© NÏÊ^«$Lʹ,Ư‹̣¥´$)H¤&®’5½¬Ûô~Ÿ ‡’bôWÿL2¹€Mµ!J’Ó£Dë[ĩµ»ÛKb̃¬e±ÛD.¾* j-ư©G[Vfr”HÀE]ÄsăµrrÏÿrh+›_ÿ3<Fn–¡¿!1t…XẮj‘¹Ñ^2é4²æÁ_ƯÛëL²3ƒ̀OS6À¨!X#qơ(ƒg?#«x°m}Ó†Å}´£B©¢ ›¿Æ*Œo–";p³\~l2H¥²øưTUåVa”)—s„BùGÚW¤Đ…¨̃JÔUÖX…”M3ă+ᱤ {}”Ç')•[&À ̀RR©D)ŸG̉¨º‚„„bó ‹Å’IUç+´:ñ¡³\î9ˆæ«§mïwn¯¼î0z`yê@¹|ç®bé‰Ë̀¥d6¼ú ₫` PµM{H.[® üc£Ó¸ƒQJÉ)/ŸfĂk?Ä–ë§ë“"ŸÎ¡*&« £}3ùñlv(N\ 3Fó¹ “ ëª„Ăé|àïQá÷‹U®˜t₫ÔÜ JÔøïñ…@H*BZ•»[?Ÿ ˱răkn••%jjVßă—KaxX<̉ĐnƠv‹Gƒ¬á¯íD\ú#ĂƯ—i^·EQ0 s û-¥†Ă ùẠÙ&ÇgqÚM$IÜ<¬FÂD’$TW”pû‹”gû¬̣5$½%ÓOöÚ{ḍYvµmÅ¡Zs ,,,¡[,+î%Ú±hûó·ŒnåǺ*;i®½>¬çúѰ;Fư·n¦Ö%i1-­Åh̃û—ĂÀâ:öùkŸÑñµÏư5kסª …¹~®ư€ÔÔ‘X„ầ5¦¯R,è̃‘¦ơ86̀R™¾ó,$æ@ÖñV¯%àS>û)×fP+ª©_»ơ®»X»+×QUû9ư‡₫ ÙüáÊJJ©QOüœÚHç®-xœ2ÓWÏto&;|†lÉNU0Bjô<ÓĂD«"·ô# r3ƒ̀Œ\%“J¡Ø|øªZ U×£̃× W‚RfÙáGy›đ!ËMÓ??¹LkDû“c BÎipV%=ü>©B†×îÆcwY ̀Ââiº‚RvSv`wØo¾nÉ%°û*îs½đWQaɧ“˜BBsxÑtư©^~$-Éø~&IHHw™£#!ÉK#fû/ Wl¤¾s#ú̉hÚj¡}%B¶c$º¹øÁ/1œUøưfΜ`jl‚/¾ÆÜ…÷é¾ÜG¨¶rĂLÓ´m†‘EH*¢~å4!Ù¢eßQN¼ÏĐáŸÓo(6îh;mÛ_Ạ̊̉ø̀+ \:Á¹÷N2•›^§ª®s>‹J £à¼!óDÏÇt9€©ùpú|˜ù>Æ. Ôùgt́|í¥näfèûâ=ü^'ZUùÀ÷Ñ&—¯uóÏW?$§——¥î”Í2¥¨ ”l‚îà4?ü€t)Ëk{ ¹_›m)¤¦z›][¼—Â$·0â¬@ו¥_+“[H {*¾¢ó$0̣óÊv.ÇW¶çbf¡xÑm÷̉æf¹@!“ZŒN¦=@̀˜å<…LS€æđ¡é:ÂÈ“K-ÜÑl¾đ™SñåØK$‰€çf—[&³ HE}Ø»I A!k°… å!»Ăú×—¿‘fàà?’q´³₫ÙưhÊ¢RC'¹xô-¯₫gÂ!Ï=ÍíÂ$=rœ ¢¦›uF`dă\;ô¦Æ'0LĐ¼u´́ư.á°µ¦ø‘Ü_³Da!îÛv›đ$i±3…0˜8ÍBVgÛ?$àw0sùß8{đ4É…’S”%Ñö=øü²óÓ8ƒƠ5 L'‹Tµn@×Êwï Öжÿ?RŸ£\*#«v́"#Iáµ/ă«ÛJ±P@ÖØ=~YFT´S»%BaºQ\É!z~ˆR¹›Ï½†Ëå@”³L\ø#“3“äsyd9C¼÷,Éùy$ƠC°a#U1$L’#˜ \6±êˆ6úùœsŸvtû«xúœ^7‹Œ“$¼…é̃ü_S…Ῐ=@ê|–7ÚŸ§6Tơ•j:ú Rj÷íGUdrÓ—9ưï?Ç»öÖíܤ‡r₫à1öÿˆÊÊđñ@˜%â]Ÿ’È„hß¹÷®Û‹̉<ư‡ÿ‘’{»v,vHoÄ…Y&ú6oÁnÓnÏ¢¤Gé=øfâÓ˜l&Z÷¾K0轘!(¥Fè=ô[æç’†@uFizöÛèé®ư€la±6›åù²‹Íïü=•U±•×øM“¿aP±ñ¾çÇ­-Æö‰̃ ?ùu×~as­z±]0Ù›e²¬°®Ă~[GGÁđ• ïÿqÁŒÂßư× 'ëøƯ§"å^LÍ'÷¥Z ˆcÅ^—QL“K§Èè.?ºÍ¶84 é¥âơ`í‡Â #g>&£¯Á¬Àå\ÜRRƒ™̃#Œ¥h̃ûC¼ö½Ÿ₫¿ œ=F`ÿ«÷<ÂZ©(¥4raî‘~F©œÁT É(ºỲ|iâ»@˜(“]˜Cö„GVH8ƠH¥/È— ܱ—™Ù÷¹̣Çÿ Ư!ܲú¥ đơ¡@’$$Ơ†Ó_ù?—±y*°yîü;YwƯ¸Ö́ÔU’‚uûŸĂí^Ú¢TwS½åmÂù"fĐwàçŒÇ³TÔ·QîâRïE:_ÿ[ụ̈]₫ %²¯Kf̣Ê e ¿d ÍæBƠlÀĂU Äc]Ư$dˆWäøơÜæ/¦øvËK´V5̃u„¤9q8u†®]!›ß‡Ç©‘¼Jr²‡¢·›bi;6Í$9ÚE® áryÀ(MÍc&ĂÍaG’4*êסeƒ¨„iÈ-$’Ưí!ŸJáp«Ó“”<…ä4åRÍÀf×I œ¢ïØ)p‡‰Ö®¹ñD˜e¦»Ÿ,Ñ₫ÂpÊ ṭS/6àÛû<êơï$ÄŸXØ!Ư¿0 fº06^dĂë?Â¥f¸úÉ?0pá [u¡–Å÷e&Nưñ„—/´bcMz¾̀Œ¦}i'˜Œ)Kœ¼IbÎÀạ̀ªx]̉Rl‡…¹2Ù‚@Ñ$©Pæđ§I†L˜F•±c¤ăyJ±¤fßÏJ¹?Æô BÜÜÿûÆ3@Aqî*Ư_ü–TºBB¶‡hzö{D¢^âgÇ@O/¦0AHøö –ï=NÁ>K n ơ›ÑoƠz:Û©¨©E¼AÙüS³ï¸×ăfc•†a<̉Ï™Đ2Œ™v$ņ'ÖÀàùË$f_ ö_.1Ư}ˆA$Eż¾< f1‹‰"ËèÖ½ñ÷äç'™í?Aß¡_#;BØ—êÆ2ƠNJ©LÍÓă¾í„$kØ*…™.&úúïù;:Ö·c¤8₫‹ÿƒé‘~œáÙdªíÔ46R».EYö¡•4®SDZ·áñ¸0ó «§¢Iù ulW”_¥£®å©K²†¿¶ ÎÿdbƯCblWíVŒÔ8éTƯkÄÛ….'¹vàߘÁ4Md-@ưîï« 2ÙưăóµøB{=₫+F†Ṕz‘TÖNç ï‚ù₫#t%O“›FvÖ̉¶ë%fû3Ñ[Ïiœ₫~Ÿ{éüu›Y{Pu’‘Áăw3#f,~£¸ÀøÅC¤̉™Û A÷5PÛ¹Û‰›‚r1ƒ¬{ñ†"Ø”"—l¾² §ßBŸ¾Ä́LªM¯âqé+<¸/†sÓ·‡v 3ç×ÿ2ÇЬ‰(v•—ß ²¥Iå̉ó¼$·(f5ëƯù çàƯ³x÷ ÔÊ—X·};¹©n àŒ6¬iÁ=KmëúÅ4₫̉h̀nűT«̉ă˜ỄØxŸ“V‡í›×?âû ç¯11l"É*áö½{ÿ]ÿŒüæ½x¼NR£g¼p–Íß%VÓzơ&z/˜è9ƒ-ÔˆÛ!¿đ©’—ªÖ‚µ­Œ^:‡Q* É6Ê…I’‰)l‘Ø—\"P%’ù€N2oüŸ¢ëHå¥Rié˜Ù›Qa” %p‡*G÷ö ‡l6…½r+k6mgôü¿1uÁ†;ÚBƯæư諽ÊI`ºd¦'çHfR˜ÂD‘”;~ÉjÆí0IÄG‰ú£,̀Îi‰T÷G$¦§đPb>‘%ÜÑ̀BÏçŒ ÏĐúâŸô* ₫GN}JèơocæÉ¥Cä&/3Üu‰êƯ?¢ºÆË࡟34:¾xAFS©¤jÇ÷pcœ}ÿ™ÛGhMÁ1‰5›öáóºnËà8£8Y|”—9Ëü¼Ix{Ă—&2JKÛ¾H·=̣¹s‰J°~ öç̉Gÿ‡Z$1#¨̃½U‘nd'ă—Rv¬¡º±ùæ|”•érú/¤øÙOŒơ=5S`&+¦É©O8—ø›GˆÙM~÷‹i>ú$EcÈĂ™iÔjó¦›ù±<=qAE­ÖV;Ÿ‹çw8qị̉ל uơ2צŸÜ]́º$¡hvt—ïÆ3‘›B–Ó˜å,óăxễ&"K!Â5u\í¤,=‹;cdè8WIQQÓBU[3v[ EQ@w¢~)Ưs½‘:NϱÏĐkv³f]ç7yb5Eu=ØÆÚ—ÿ3<̣K SÂæ‰Ûö.ơë6£I9Z6Î2̃ơ1Ó—=@˳¯áñ0!âçsià’¬ânÚCUc ̀eqi—ÑÎÈ1qñ ̀`'_yçÿgï=Ÿä¼ÎCÏßycçÜ=9f3`3)QEÉJÎZÛ÷úËnƠ~Ø¿ak«öăzw«¼¾×–%]Y²-ʦ(‘sA¤Af0¹{Bçđ†³zD!Đè§J%4ư¾Ư'<¿ó<ç èÍè[ÿ3ߦ}h5>S%?~"̃̃ÉW]êơVHçj?Ï<»7q$Ï¡“ó Á²@3.ÆhºÀv$¢°÷Û Z–8|´Âkÿ9Çk1/?₫ÓÈ=w=i„â%O25s–jí Q$;;…'܇æ˜?C k'©¡Ư,…}¯¾G!¿³¾ẃ̉u‘ª²”#©̀|ÊñßÆß¿—áí»ÑUé:+R ́n·ÔƯ‹G÷~Î ômÜuÁRWŒ mụ̀_ªzI m'ư₫û|úÛ4ºâŸ›¥uÍ×đ™:n­@%·ˆ§­ơzi~Â_¨âª9ô*P4…­»ƒ₫U–úÇ4~U23+¹ïñANÈsüµ©¸F)k‘́5I%uæ“:o¿›ă…>'öøñ›¢Îv¶ÄK¯?WåÜx_ư$M߀‡Ç ó̃ÂM7ÿŒ†ºP½tnû–‘ä̉¸4_ËZÖ>è'ôaÆïgc “Å™I\¡Ó“́#’lA0øÀ÷™›8MµRCíƯL´sÀ~Ïw0R§1¢±‹Á+F´o7C«/S4ú竸N…ƒOT0 ƒ»]T!p‹leeÆB–PDpTăJ TÑL̀«”C½ôïë&¿› &{èIt¬Ø<ÿ̃}“çËQ\Aÿ|”§Ă;Ù;¼‹Èơ•óf„₫₫œÈ|ÖÎv@ #LÏï û D=l| J5ÓsÉ<)ñU°1¹åkY`Fâr×7G*±5O²9:ÈbzW*´oê"ÖQ²“z€mÏ@d躬s¥–%̣Ư’ƒ·ÎPSØñp„!EĂ{‰G"Öåå{ß ¤Tb̃ ùcƒS£5,W°÷I“₫nMÀSÏÆé?Q%[p1|>ú=´EU"Gñ¶Wđ$5.µÁüA>mƯ&ÛîExĂ[@QÛV©T¢˜æÍ•4n|  hï–+ h¡cmËE7jj@jđÏ¡6ÚBW]đD{èö\ñ®pßvÂ}Ë0Bî<{ÖµÓy'¸Å̉Ư–à~§†”+q*Úăt¤¢wư¸ !0„¾‚7ÓÑèÊøṇ\{/1_ø†@êÜL¨órơéÙFä3¿Ïé¤í*­™ư­đVa‚©£ïâøh‰ªL=ƒ'̃ƒ7èÇ›Ø~Ñ&‰₫>ŸÚ}•œFtp·re E'Ô¾†Pû«8ñU»®›ƠÖ¤tvnZaè·ƠŹ]í¿B·{C:;ï½ø=SR+ç3j°uÇ•A0arß^ów&>|ë{ضÊÜ\ííOÓ̃̃Ûz£‹‚CXÎsßúv¶oZW°¿«¡¡€«¿’wß²gÿk³"qÆ®wØ̉Ñ\…Ơ I¾Ö¬Ư…ßđ~ơßÉ—"̃9ÀرCœ·Ñư­¬Úú^C¥Ñ®¤•ʰC½=¬C¡è$×>FlƠƒơ7ECƠ´†ƒƯE˜¯kÂ|™a¾aĂÔ[°¾›@¿ƯaÎ÷oè`ÛÆu7t§Ö”ÛWÂ~́Ù¶²kJQî(Å<ØƠÏ EÜ^k_Íđ4èÊ”(•Ö´MË|E`~ªzkPÜúm s‹‹<°¾“­×6ã ^]×›ñ%¦¬´e¾ókiK5a¾\0ïèx†ơë÷Ü2˜4wËm(ª´ˆ²ÈƒºØº© ó¦4¥)+pÀÔê|æw(̀ïX ]››À¶Ê 7á²°@T«²{ă [7¬iZ(MiÊ éps“ÈK÷4åKƬ”au«‡½;ÖÑ–E0LNú¨VOïåó Åb€5kö. ̀ïX wvtđ âÁvpSá#ä餷³µ ó¦4奣½ƒ1±ÜæX\3 ú7̉–Œ¿2˼½½Ăxh¼ƒ˜× --Z[‡—æw,Đ>ë:xkɦ«kIªƠ*¶m¯đÆó6Sw¸ø¼&ëZG,̃¾RƯc>::¶4îK±¬ă{‡ºÜ}c5aàº.oz˜_[8ÊÊ,Ơˆ[æ¯6w±ª¯‡æ™ễA͹»Cơhhư·Üë²á¢Ü] ³ùUÛiÈaª‚TÈ×´c+ĂOơ5ôÀ¼oUaŒØM?m#KƠv8vvœÅB‘†í-» ‡ë×dăĐà-)c}£„Je˪6äkÀ0â7åo( ;̃=5É‹'¦˜·Dcô¤Ä»0I›WåÙÇ¢/â½{” r…̣]¡Mi\˜¿yè?«2j¦pƠfæî—Z•Ơ2áñƒ́ôUXƠÛCĐk~ßB’Écĺ}¤̀5œ&Ÿ/37'Ø´é[ 5~æÿăx†ƒzÅpŒ†!ºt ΢œÓX[­đ”s7[́*z9p%R3±½!¤̉ô±6å`~ø$?;Wc$¼ Ëđ5åK­Lhê4§‹.~ïWäϨĂ|bâ ZZfik t)aq±̀yl[Áuo®ƒRCừe8h´QôÇi¤̀"7q–ÓŸ^q»ƒ¥ÄH"yè÷2“(¶‹k)ulcvĂ£TưëV¢œ!4~†Bïœf‘—††ù[‡Ọ³±*#¡Á&̀¯æçΤ9¡%ØKî+ùÜ\æñø,íí¢a†¥”d³èS./’JƯ|åÁ;è+y÷̀tƯ27Ú(ú s—À̀)̣g9îø(«¿;•‹”(…Ó´½óLµ—™A9Ä̀ŒÚÿ")ƠÏÄÖq…ƒV\@µm¤î£æ×׃”ˆZ½\D `û"8º́R>…@\KOS‰7*̀œä§M˜ß̀3U“+våơYàÍÏg|¼óÆ‚ùy˼X\$™,P.ßå@wä̀¥9¨7"̀O.ÁÜOAơ Ê»ùn×Å?ö¡‚‡Ñ'¾O.¯ëhƠp†@º%b‡~Clô¢^÷üÀ#̀¬Ûºp”öǨÖ@JéƠ; ½GôÜ ¬SĂÔ‚I¤̀X‚É\Ö]@̉Íh́ù)~6Ú„ù Á\K` U®¬gđR˜Çb óR©ó[•%{Çư¼e₫‹ciê­s×%0{9̀ïz‘6fæ,N°—Rø’~ØB¡Ú²ª”Óï‘ùˆÅM̀|O/₫“ÏÓqđ·ÚăÈÖ{ø¯©)yBcG‘FœbÇZJ³ÉÖ$‘âq iñó#’_ŸZXÖŸÓiJ₫f{/-ñXsn—æc4a~í0;Àl&Ă1½ó¯̉2Åfè́l\˜'·æw,Đë0ŸáÇ̉Đ[)ø“€hˆ AcÀܽsá^¾T äg7·”€‹9?®DÈ÷¬Ă x(toÁ=đRb¸›#¤öư|Ç[(Åøs&B¨xÉ™`'UÍddÆgÓâY₫¸X‚&Đ—Ej¶ĂÛGṆóÑ #Á,Ư²™ø…º§V!8vđ6„94‚r—êwæËó;èRÂÁ©~óÉQN‰8®*ñågfSỵiæ§'9îøîX˜g*6¯£pÓ̃$GçËơU*T¬H uv£R¡¬ùë.q)Q*s¥kƒP‘K»D*:Ơq)w?À˜‘ <~˜À™7HùÓ;ÿ„Ú…7 ̣Fª¶2c^²üM‚,£ŒN§yîÀ̉ˆ”7äZ`P˜çt¶ú•Á ŸŸæđá×ñù¦1 Á́lăÜIYV' T*Ëó;脱ôŸä$Ó^ ¹0ß8'd ©…1ÆlíÎÍ3/ffùÅǧ9©Æỏ[!IåËĐ bûf¬ĂÿHêÀ«LmÚ‹åơ &H}ô¯æ*æZ"¸VÏÂeOsá â§â1ñ̀@'Ế¶ï¡Çé~ùïLŸa1ª€´R^yr”nư¿…¡4ËƯAR*—ùƒÙÏY_{s0®Q†̣û™P¯ æss9lû,~…ùùÆß|̃fa¡BW×̣ÀüÎ´Đªœˆ¬bÔßÙX3.%›K‹T­;;øMcVƯäÇesm©IƒX©-Lo åđôO}Œåơ¡Tó ÇI¯ÙN!ª²86Bü“Ÿ8BÏNQêƯC1–À{úcZ~J,Ü++èJ„\²K×Ö4̀èÙ¹ô<Ó À»˜-@)5Dvàª~ÿ ˆ–O Û0›•}¯Crù<5Å&î‹\ß=ª”T/Y-ĐÄk¯¢ábå_ep°Bww©á†øÜ9—ÙYÉr¶‰h–IjÊ#AvÍ7)·mÆ—C³ll_’RªŸ?¦vÿé“èƠ*vÿ-8ºA~đœ@'Ü(: ëz)&;‘n;瀕]Rl.¾Ó¯ĐơÁKØÑA ©!°³OüĐÔ(çîÿ>UŸ ®‹nƯ ¨­w)ÁuÈzªPÀÊ‘øè9ÜÎH¯Úpe @S>WŒd_ö8Om̃Ë`¢§Ù´¨)Mi½)_íéßE-fđdgQ× S‰¶áÆ @]£ë§ë¿ú«¼ ̣}‰«¬t¥Î-\qîWüä{wS›ƯWwTgIz'µƒ±ƯßẬ˜€Ëb÷¢£c«†(-yÿüƒJë2«wà¨à{‡ØÙ´…íM]u?2»ŸäÑ×°sU\¯ÉbǪëà8Ît’Ó´;w›—”¯–ö³p¨È³ƒ°®sE4;áƯ~¾¼êÿnJèMi¨n<₫"©Ăï`Ô\UA8µø03ÛŸ¥ÜV_WÍăŸ+̃xoæ¢Ï^mÙÂLb=RØÄßÿ%‰é*™uà–ÇIú5è!̉m>RŸüR»™ïn!0₫ É,¤bX¡¬ä «íiªé,!»ÈO?Uñ›YÖßÓ¡;|móñxü]Bóѯ¹GÈ-ñỰĂÜ3¸MQ›{ë6EQ.xO@o½)ylGŸùˆ¶_ Úûăö`y Œ¹£´~ü<‘³‡)‡v!í¾̀(ZÍÆñÆ)%:q5¤ƒp*uU¹ÔƠ}ÓîX‰Z« ƒ/pùó„@jJ1Mxâ4¥ULfh;¸kñNJp̣8ó©M»¨•‘fœôæg‘ª‡ylĂK5̃‡å-q(¾[Ñx>“›w‹7·€§óÇxôy¤”,r¤3é[BéÅ90 °y¯ŕ©"Åj™û×́ÀÔŒæ» D¦i!Râ8z³ŒrèËa[H͸\ù;5„Đ‘·º ”àX(̉E ©êwot´´~ˆiô1¶ơ1ª¾zJX¥mă{;Pñ#k³´½óS¹*¶éA+.Péyˆñma{“àÔ!zô ¥¥>©¨×B±]j¦‰!QÅuØS\‡ ]áÁ¥Q̀ƒŒ]|”«ŒâTĐª•À’gA1°<~‚•<2ĐÍô=Ï’<₫>íoïÇ5¢d‡Ÿ Ó½́}5ƠX‘₫îR·°›˜ƒËgöó“Ó/ó×Vd 9̉¥́u@@ƠărHæ¿{R­̀Cëî%è |é~N„qq¯K‰°« ›úHa×ù9ûU‚k!\©ªŸ¿Îœ*½:yÍkQÖc2»‰©êơ8‹Öơ áØy₫yÊ…4OáXé"…Tµ›ÖOB Ă@mÛ¸îÊäûK)ql‰+†&.û÷ZMb·º Dº`YW‚ª 4ơöªöØØ@—#s˜Öƒ0¿åY Ñ%ÅêI|ü+ôÀZ¦×Üsºê‡ßô*­«pUơ²Ăƒ9ư É£ïáÉ-àrƒ‘X{wBƯµÑ¦°BÛ©™ÆeÖ®lĂ–ß©7ˆLg˜|è&›J8ñkº?~ßÀF´ô1*ÓÝÔza¤Ä;ñ6ññ<Ö†HMaÚß 8̣Æ )R\h˜ê„º(ÆDN½E¶5EÍë$Fú©‘ä{Öc›Z~á‚×Ëyls)k8á!Æ÷nG-Í;đïĽJ>ñµ%%+?÷Ày>ÀÎ=đ¼׋”T\‹™P‘…pmåß/À6$'óüÓ́Kd­"O¬½d0₫¹[Ô²Ä<‡©1µqR¨¹St¼ÿƠ^€₫”öû˜ßü-̣‰«Ä`¸¡¿Ă_J0³qîƠ ;G̣Ó_£z61³vẳQsIgØe|³ă”[/7"¤DT3ĽDhz ÅU¨¤Ö3»ñQj̃Ɉ`ç‰y™đø)4GPI®©?Ï£á}‹øÉư¥¿•ù5Om¿¹l!EQƒ”Ëå‰ ©Ï‰Ë[/,0©|ëÉ ~­̃³!}¦Ä¯_)²çékÛµëB)%…tŒ¥ĐÛ®_܆RbW̃y5˾#U UIªËĂ_ĐSo›íÚđº°sÏ&·á™KWÙTbÓă1@â:P©ºH º¡ kb©_“¤V•ØD(ÓÇåư—9í|ÿ{aÂ傺y?Çï̃+³ë₫-^—×_Xäׯư^S»=6[ó]ºxϽṂø>ôj WuPËüô·øçÓ¬p/™áíN¼J̣ä{ˆhîæ')F¢ơͯ…Y\ưu*m©y=”<%⣿A«”ĐƯ7¶B§ëÄ8~O¡D)Xrû¹™ă˜UåÂ\0­]g‰C‚jûFîÅ?{’ÀÄAÚßú'ÔƯũY–ï¬Pꜳ̃$ÑÓû œÛ‡ÔCûfap'5¿—Úæ?ó üû@ñ0¿ñ˜ëBb±Ø³Èä bÇÛÆôö¨†̀ßOjü,fvIqº5"ÿ•öĂÈ÷ßË́`¢’&rü :³‹Œ=đª^áTëJ¡âèú‰zjœbUR"U½•â$©Ÿ£ºêëd׳¬ ¯_ơ¶U`:^æ¹Å÷)®đ¡Géo»JZ›0)µ !N½'›§–đăŸ¥XÈc”*”ư.éÓÔâ먙’ÈáßEµ́`éMOQø§*´RHÅ œx‘ø™£`D¨LôBzư^ŒôAÚ̃=‚w1ƒffÍ6ÂÇ_%qân¼wă”CÁ¥ï§RI­g¢å!̣­`eñ¾…QÈ-z—~SÁ?~Ưº¼_¶k&É·÷_fơ;vf¶ö±0¸)+˜Sï^œCơ‘Ùø]±u§v–ȧgPk5¸   !đûư(B­V£Tº}rÈ­¢Íï_X`ä¬-!œ4ýkú’ £ó¼ôV‘lQ¢ «·8¼úF aĐÚ£óđn?½~•—êôđ́÷|lZk¢º.“‡ ́›s°\0›.÷•ÅÊ>ñ´Ù¥¦N _v5¶Ăi¹Ÿé ëđŒư–₫j´ gá}bgO’̃₫*F‰ÈÙDUÿÜù` ßü …₫û1Æ̃Á¿˜¡*lüó‹× a{ƒ–‘ƒ,¬’bP%vđ?hƯo2¶û ´Ü(}~„–ƒoPê’lK˜èáÿ y®ÆÜÚÁ-a–ódÖ>N¾eö^"ܺ¡®3Z*,öm£\¶Öªm›©:‚§ß&0} O-ÀB×ÀeWJ5‹̣́Âe?®_G9Ù…¥—¬ƯíT–Ă›«PêiÇu’ µc,œ 1v˜àÄ) ][©n¾iM(ÂëơbYóóóôô¬\+âôÙ2¯¿Ă«Ơ·]æ\™‚U7«÷¿¾ÈK[|ă™mÉKÿ9ϼ¨đ—ß đö+Yæ>ư¶Ÿ™Ó%ÎN×0vxéè1 }lÛèů]<´¤ú½$ɉO Œ«ptV²ư!̃Û(₫ïîz5‡oæê¢qÁÍåÉ/PFb̀ŸÅWŒ­y˜bnĂgë¬ÏµñÍ®Ưlè[ƒzƠ}&p¼)±₫©S±*fYc¦k₫ÅOñORİ}̀&ăøG^À°À6zÅÁƠ üSGÑk]¸®3æG1d€ÉƠ÷Q ˜P8MtæÀ̉1)¥Ö1?°Y›&~ôôb‘B8‚T½TĂ©+cv„‚° xÓÇNDhÑ+j4¸̃³;₫„ôU~Ÿül ŸP@J´…c´~üŸ(₫u¤‡6Ơßë:‹„ÎÆ,–È·ù.¹ë¿q‰F£„B!&''I§Ó8³"ơ$07kqø`‘ó^ïrÖ¢P‘¸–Ëé#eâ«‚́ÙîĂ0w¦È¿ï«·x< ¹t“c:ĂC~Ö„U¢~ûNX#V?“è"¶ĂøX…CGÊ…€O¹­lµ»èv éƯ?f!QÏÅNßưïx¨V!4C¯o͇«¸h–E¹g7“Û%‘±Ă´|°ô(éíß§̣¹«ËF­V¨´mc,µsfƯ¯ÿ+Ñöù¬º;ă„J©w/£­›0ss(®Ä1CTC ¤¦^fwü)Ù́L½̣›7J5EPx”jj=z¹BĂ ¶`y} wrö©6zJsu¨JßèH=Àü–‘Úˆ£©óÇhÙ÷"₫ÙscQỐY‚S§Đ,+ĐF¡c5¶©ƒSDØ+é&”(V ç³¥`—âÔ|†à́ ù?"ß6É8áoáO2Ÿ́ÇQ̃™#T¼›Èơ?ˆH"k£¸LakZănn ÁÉ–b'϶ïeÛĐF¼ú4ƠÑüÛú‰=Nè\áMR‰´AªàøAÇ vS đWJhƠ"‰ƒH!"L®«í²7Ơ¶ês§Ö=3¶?Œ«kÖ»ă ×çT¨ *ù¥œ¥D©AO0{ÏŸ1·!CË{?!yèu ÉïcŸ®S"8º£Zừa¥…\÷đg‚s%Ǽ'´í{ áíerÛÓTưpj¨¶C¡o/Åî{ñŸ}•®_"عl*uSSb&ñxœ©©)æææ(•J„BËÍ(€áíA₫ëă¬éÉ#9₫Ï¿_¨¸%>e)ÎÔïW©Ơl,MåÑïÄñ¼•gäĂï¾&i đ£g‚Ÿ;OƠ‹«ª<ôơ»¶yơ¹9^ùƯ"ë‡S´wè+j)JE»Â#åE‹ÈöpƯ2F>O1àA)¥QAÍô¢•°âï»-?JÇëÿÑSŸ2Ó£×-Fyù„뙣´zŸ́úgÈ%bÔB-HªhV‰»Z„ÀơÆ({cWß’—j¼—êU\öV¸+üÙèTTsKJ̀©8·ƯDfx+QŸçZb“÷·ƒêGÉ£ëÍÿ¢'©ú}„O¼Ixú~Îíx˜àñßY˜`ØŒ`):ÂuêVSEu¨CP¤ƒ¡*ơô¸ñI‡•¿°î¤[À̀/’/ ’²Ñ Y»¶T·ܦè8ºÇ®àû™ÜưCb§÷=̣< [’~t÷̣+PȪYY9¯SƠt¹4`KzÛ³”^jÁ8Â* Ù7Ÿ±`:tˆL&ĂâââÆ E ª -E¹«ª¸đï‰¤Êøt *™±đ5¼ËBv?ăá'%#æø§Ëszg½)Ög3ï\Çeßk œ¬h|ûé0~¿F"¢ƯoQ¶oU«Ưí ©%V“mIûô_Ñ̉½xfâÄÖ’O¶à™z‹–£G(u¬Áe4× á×Y ~ôḾơ{©ê­<_QÄW̉9óäŸS y ưƯŸ~€wÍV´Åqææ²5J ˆD ÿ́kD2Ù₫(¶ª2PçÛ>†[b74›̉±yñP–WØÑ~±@Ä IDAT±ă¯Sˆ=C%×Âæ5R§F™[½©c,¤¡³ae1JEjÑXYT%ÆôÎ?G©.ß÷SÇ̃'Û¶‰¼²sÜ-ƒ¹Ê@´‹ïfïĂqV¦Đ¹Åi~=FÙ瀄ö|û•5<¹j뺮µ ¬ÀvSñÚ$g§XØÚƒ`…º±Ä<±,̀µ÷#ƒBÏvb“/Óúñ¿SúđO Ú¾‡™µ[.<«– ́y‹äG¿Ä‹à:ú…+BàêA¨Íy›™u÷Só-uST<غ 5̣zn K):wüÀÓXúŵ́zd¶~̀U¯.Mƒ³ˆŒüèÄ8óÑƠÄF^ª_儺(ƒèói;G)–Àœ9Œ¤_«ºü‚ÿOĐÚÚJ0¤X,211AggçWZ{_Ñ6nó³ÿ7~ơÜqÍåÓ“[wÅđ9.¯½¶È¬«0Ôg0?^%×BA•G ¼½ßd÷F¦&BĐ/8ô‡ù‹„,3´.DÊûèö†ºăo'³₫a*̃K\r 7đ e_®§…©ƯJä̀~̀̉"µÔ2=Û©øˆî{ÉØ*₫…Y T×~ÅmØ¢È̀æ‡ñV,” 9—××Éäî?#zf?B;2̀ø†-ä’±[Âóˆ[!î3đk·ÿ¼ß*ªf—ơ^«LY÷"Qp5 a—/ †¥¨6Fvh¥æ÷×rÑ.¨}€n ̣}{˜Ÿó½A ¶“﹇¹ơØv Ï"d< l]£ÇcKk˜G“74¶m³ÿÔhưkyZ™Ùô8ïÿ'=¿Ÿ o;wnJçưÛ†ÑûÖ‘8ù"mÖ¢pSÄ™îFÍ#ơÑ‹8‘>*~̃|J´[÷c9₫•`r2yË­óƠ]ƒô¯`°Ư«¿É«•c(RĐ¾à)ß6ÜC_ªëº`!Íó¿®’MµƠ½v$s›¿EuQ’K¤@ªí»8·ÛOhâz±@©s‹›qUrûN2Ñ8VdÓ[¾Fxr ƒbÛj…q¤ê!×û ÙYw̃©^ µRIú˜̃”Æ´k(¶s)uÈ®{|ï˜9‡* æ6ÿ‹ư[/½ơ¸/ÿ¡+ÔÅB¿@T0«KĐ×#ØƯ;ßư#"£‡1*E*í»H÷l§ø̣VÍ­²H[ÀüBïT<§µµ•ăÇsæ̀Ö­[·¼nw!̃$®hè— U nđÈ#aZC ]]a₫ØĐ8|²J¡&¸ÿ©8Û·øđêđĐ£!>Ü_&=caFL¾{¿ŸÁ6àaJF‰JÑÅ‘½kwGø¯Æ¡cU5ÁöG¢lßÀ§‹[đSEå&ă­èB`{™Ùú¤zÈ­yê¢́fncwƯŸW¿üª{ÈŒ0ÙƠ‘åH„˜ßốƠß$¼äYÜ’»ó˜[b·È7ÖơÓ4oëaüüm3Ëö œv‹ü¢ÖI%ÑMüô¾üCĂÁ¥ô8 ÿ™÷0Dµ^–u øÂ® P‘B`%7pî‘ÀÅ cĐ̣₫/f÷*!qç‹Ñ)7R‘N|Æ Ü³—Ñ@'¡ñ#ơBD¾vfû!×9„«)̀mùvä#¼‹óÈ@“Ăß ß̉ 2Az}•à̀ôR‘r×ưäúîẠ́¤·|ƒĐlº~G¿,Vº‚G]¹’«¢bH•ÖL§Ă;ylí}´†’×où)ùÁ'Èra#L²Ă_'{̃̉•¶ÍTÚ6_±‡KƯR”Ê ₫ô8µÔr©$‘ƒ¿Âñ§°|CO\\(Z…5_»`HÏmùîçüH?ÙU]u t†j’_ư5̣«åU,yÓ²‘™–Wê§/đêt¸y¾txbĂ>óóCº½^/œ:u™™¦¦¦–Ơí.…M»C<çK¸Åäß0—~²`xK€á-˼ ©^/_ïơ^V5ZAë€ï÷û–ÖÈ%™ºÊú{B¬¿çb¥é[ñÛ„PH§c„ĂÑÖÖƯú ù‰>S§›K7ơ—ư;_Pbôs?ss0¿ÏSà¿ÜÓÇCëW¡)··û>ó́½›–×ó"áÅ#£ụ̈ØyËưDGÿw~Ềú½Tư¼““:̣!ùµße±uwôMBç‘K† ŸƯé£bJÂG_Æ$ÁBÏj²½›ˆ:ŒZ+á(•Æ̀/`G˰6Ujñ!2ñ¡«¯!#Lvè²Wœ(tƯ;(vï¸bY¢0°´¹ SuCsqí̃Å̃µ÷ơ†n\‰^ís_øoW×®ÄƠ$±ĂÏ?è"5?éơORó\¥̀óezf…t†Ÿÿ¬ëz—¤Ă-đí¤Ă_íbc߻Ѕôöö’J¥˜™™add„îîn¼^ï²­ñ9ó÷Ùèô/ú́•S&¾`øÄ­²Ñ.ƒy0ø7>†×{s)„ÍÂ2·¹ÄÜ{̀<³½G6 ãîv!@_f˜(’ i*_ÏÄ‘:ø*moÿ=Û'»æ›¤WoÁ¡À́|†ÈÈoˆW1³íëTưQ4¯Ÿè±7z ©¨T»î%Û9ó‹ØÎ!Z¼Îäö§WöÀyÍÇ+?̉H̉•hç₫§Ø:´€î»=¾”ægnó÷É®ZDu\#€åơ7X‹¤ĂÍóL̉å¯v³©ÿÚÊĂÆb1˜æ̀™3Œ2<<Ǘcÿ90Ïd.Â<̃ü̉lëí ọ́̀{ytăó¯nw¨T:vp.µ­RDHpu?¶ç|Q™0sÛ~H¶”Cq]3ˆcx@@qàaÆ:¶¡Z5¶7Œ«iàƯÍé§W£ Qó{ w‹¾js¶®Y{ ơvk—ªèØÁ$vCúy˜K₫z×0›ú®½Ö»ªª¬[·Ó§O399É₫ưûI¥RÄb±æb¾|‘ÉÄ `ăÆGo ̀›@¿Ưandù›m½<ºiSkö¾TJƯ¥û?_ ®Ñ+oÇ{å!Á̃ÚÀ2¿"Ym§W¤Û"XJ“»s•©¢4±_•e~½0?/Éd’ 60;;Ë©S§Ø·o{ö́YV×ûóPè 6l¸u0oưv…¹¬°Á¨đ×K0÷4ãÛXQxz Ị̂ËV‹₫3b*~ÂÁ`sđ›rM̉áæy¸ƠsĂ0?¿Îׯ_Ï̀̀ `ÿ₫ưèºÎÖ­[ñûư!îb¼ÂÜ\œ`đÖĂüº ø…KP85×BÔÖøÑÖaÛ¼̃áøÅb¨—ˆ]³f >ú(~¿ÿ*Ö¹K¥Au» ë:¶|^£;èMiJS̉”Ûù@%9tè¿ÿưï) Äb1†‡‡é́́¤µµ•P(Ô</ƒ4}ºMiJSî*q\ɹÙyœJ±9×(®U7èíhA¹ONṆÁP,‰Çắܹ“ơë×cFs0›@¿v±—³³`WïÔ‹Dh½­èM—|SrC0gd”9¸À¤íÇM›æKơcœ;ÊÖüƠw$èû‵jµÊ¾}û˜˜˜ ‹±k×.6lØpÓưÑ¥tÈd&)•j 9ÎâHt̃Tµ¸†ZÍ–ặ̣ÇÇùùH™œFÆp" #$µ*?₫Γ¬mñ75MSr0ÿÙEÑKÙi°ênËsÛ"´xˆ±E…¶ ̣¥É–RJFGG9~ü8>ŸU«V144tK`~úô>r¹wËh D.)ab¢Äؘ˶m?bxxmè5ÛååONđ“‘g½k°5Oằ¸kabAaUPĂr›¦)M¹~˜-Á¼›²mʗ¼F0}˜ùÙINÙq ÿ¥Ÿ©T*:tˆr¹Lgg'ĂĂĂø|7W²×uÎƯG>ÿ6ưưEÂáÆ9„I)™˜(Q,fñzUåæBÚ„­Ù/r‚©rÖ»ª!a>7=ÁH-‚Ơ {hJS®Ḱ%˜ÿüÀẦ›eH¯æ ³“³cT¸¶È́ééiÎ=‹¢(tttĐÑÑqSÁou˜B.÷6}} ódz(J–X́æ3vîx ×a~©rÆ3ˆ­5PyÁÏÀ¼Ú„ySrƯ0· ó›‚y•k ds‡“'OR,I$ ̃”«ƯuFG?!—{‹̃̃ƃùøøy˜/–nÉíÏ ôó0ÿéH•³AlÍ×8»ê30¯Ñ¬xƠ”¦Ü ̀KM˜/̣̀ùèçaÍÖ-óH¤q‚›/Â|EÉ̃R˜ß±@¯Ù./í?ÍÏF*œñô7 ̀™¼£`ơ\ƠwÎ,̣÷ïf9©v¯È;Ü ₫cíĂfIÖ¦\³SsüæưcLWø̀Y|åÙæ | sœËd9fÇ©^§̃q‡©©)lÛ&‘HJƯXùX)ÆÆê0ïé)4ãè@—™äùOPPR„­Ñ†ÚTFeÑLáƒù…Ă– %¸ֺ"ï Øåó4åΑB¡À[¥£JTăq-̉WbÜ\7̀jµ“““!ˆÇă7\ .“™àر7sLM ¦¦§—ăÔ8w.‡ad‰DÊËâQ¼ă€îJHç«|dw2®¶Bƒ5\ë/N3Vó5ï̀›̉ R­âŸáE\‡Fà’VăL©-ÍA¼FK)%Î`cßĐÇ‹Å"Ùl)%¡Pè†ƯíÅb™––)ÚÛË 7Äé´‹m[¤Råe»¼#]î®”¤ƠÓZªá6U«đâ4̉)Å­à›?₫4mc{[)Ä×P&n¬¨‡tĐ*lO˜¦½ñeÿÈF²gyb󴇛p¾]e~~|>×ë%™L¢(7æ*—b1›TÊj¸1²,‰¢ÈeơiæA5eùÄ)’8₫sS'±|­X†‰o₫0±Ñ×H¯₫Sæ[ú®êR¢/~Jjô(éµß¡fÔKP– y²ÙÅ㻦ø}¾f̃ HÎ.̣Ÿsï2¿?Ï7W?Ä`KïuYêMY ;DR,±, ¿ßO4Ú,ÚóUIèMY¦]îâI¿Mế~†ÿ‚™îM¸ªR™&yê·˜ÅY·µtđ̀aôZ ÇÓB®u;¯Ü"¡éđåf蔣kɇÂÄF_!9vh#Ư½‡²„ç̃áïÔpW Ów ₫hïVBf³₫JH:Qá…Ú>x¶̣›º×^Sƒ¦¬Œ¸®K.—CÏçk¶n½)tæ ¿†Lç&Ü¥À®§Ù5?BH Q9CÇÁŸ¢jmÂI|S¯›`tó÷0¦^¡í̀~̣©MHgøè+È̃Ç©ù°®¢"…³e“ßqP—ưgùƯ"½¹ăT»pJ¥¤bU)V®KY©\`1bñFá(ùc%¾_­°}`ºÚT_·ƒ8ĂÂÂRJÂá0¦i6¥ ô¦4е̉¤tñÏÀ_rÛñ#̣Á Hˆư/á+<Ơy4W£ßH!”@­.b{[p«=Xó:‹­q4ợ È¦U°¼—÷íă¹S¯S2Wæ³èV¨Å]P 8|X¥túyƠ2»‡·ă5̀/vÁK­8‰ĐX¦çÂÚ4̣S¸̃Vl})øÔ­af°ü¸Wíd(QªitÇKƠ¼zü†”h•i„Å2<ŸùY¿ FùüØ)Qjs–CÅŸº¹ơ,]ÔjÍ’TçŸ%ë1(å94»†£G°<›̃7RJÊåz›a¨ªÚÜ,M /›YVFQƒÔLÿÅÅë”ñ2TƒHEÜІñ›A¢Tç0«UÊÁö»6BÁƠ=ˆR!].%”ơ±“z% F„Ç B`ûÚpe ö™o{€Åüùï$µ…äf2=©koÜz9ƒf×å‰ăèæ ÎÁ5(â»ÇD'ç”8b!ü´°PơºĐ&)ÿ–\­À#kọ̈>ßÅk爟ü>e5£ëŸÂUzî}₫#¥®ïrnh7̀Ût}éE.’¼̣9®Epê-Ơ8Sƒ÷_úN–Ô±FỡÇøĐ.ä…#•"Ó'(´ïÀ2̀«­¨MÓ¾ÿÿ!lÇ8½ío){n°w¸[#0ơ&©3¯`ÊVÎ́ø[*¦Qÿ c¿%uîSTׯƠ"̀÷“ùÖÁ›ºeYH)QeÅ€.¥$7gQVZ¢ê…5àX.“S©vC»₫ˆ )%®z­ă:. s6ù’ÄRIDƠÛêú§ñîHÿ¦±±5Oàúæñ̀}HÏÑ7˜Ụ̈¿¯æ̃™0DœljƠU½¨ÍÑvàÿ&VT9½ă¥èópW‰Đ©DÑgZœe!̃¶4vÉ7đÚl¡]Eq@C±(h8k¶0½îB­ÍăË|BëÉ‘F‚¢X‚́çG-‘<ơá̀(k# ÛÓÎ\ÿ×XHơ_?Ô2¡ñ÷°£›(ăMà6[—Ïñ“ôËäk%¾¶öA¡ØƠ¡®ù©ú‚$&bÔ¥bꘋÇ1KçP£;»°T‰g₫(ôPơ„v£”Fu$¶'NÍ¡Sˆ¯Á­EqvOa! jÿ?{ïư\וƯ{~öI7ç„ 0ˆ”(‘”¨Ô’(µR'w²ÛÏök‡ªùẽTM¨ùuæx5So]Ïök·Ûí¶ŸƠêV»ƒØT$E9D÷7§sÎ.Ä R$àùV©D\‚ç̃»Ăú́µöÚk{B寵–AÓ*è…Q4³†éNRs¹ñO~@̣ü!„;Á|²ûÓYà²Fxh/ô0ª[½zŒKùÙă₫̣Ŧ”hù³§OƒêG-₫D+#9ô!¥ÖgI7¯&8ôñW)F:¨ºŒî)%–e!eăóƯh†ûơÛv›7~™f@uñĂïFđëï?u®Èûi–gÿ¬‰mÚu—á£E¦,•­[ùp QÏx™øàk”MTÿg_|×Üi\–‡‰–{¨y=d[ï'>öOx‹iª®æ›ö–?ùoÉ€T 9]~Êß’̀Í™Xvcñ_ÊYLÎ4~Æ4E€mJf¦êä6K!Ơ¤£VLö½eDÄZtV'<)™(²÷í[öÄØ¹Văă÷̣”ó¦ Æbî=t!-„m-,d%¶.†ĂôÜZN₫ƯR‘Hfû¾Í|4Jxà_HL`«*ªQï$̉̀E7*øç7Rơllx₫ GŸÿ˜è̀(ù–‡éÓw©ÉØîvÆûÿ„ø…×ÿ˜-©»“̀¯ú:é¶mXÉDwèÔG´̀~ˆ­G˜\÷eo+ØA0ư&M'O‚Đ¨Æ·“ĩ€U÷Rđ&2ú>Uo’Ëëïh…³„g‡˜ëûK̉-Y &7ü ̃|–ËÀ?ö*© ï#7ØulO'ăë¾IU+̉tâÇøU¤–äÚŸ¡Z?M(}ƠÓA!¾+rhzǬÔa.RăÈØY¶Mö‘$Ñ® ÷ L7øçGÈúñæÈµ>…ǵ7ø²Ó”©ă-–ɶwăx‹È\±DÉ£?ó#ẫ$₫Â* ×ªÙăD§Î‘^÷ç̀EƒÄO₫ˆØôlc¼É2̉h%Ư÷êÖ]ÿÑ"ŸXO)-˜íz˜Ûû©h̃‰¡¨G¶1ç/¸ĐQ êUƠe´ÂD^PÔưT5/úü勽Gj̀…Đl=‚E WuñJéỨviK, LÑ»uYéÈ́h™Ÿ₫s†™@P“‚GŸ±k½ÎW3üö£*†.°ê6ñ^?»×(;YbZ³8uÎKK̀‹GkH†Î–(û Ö¶©̀ÍÙôƯ$×Ñ'ä¾Ä07ñ¿NWe¹Đöje—YY%<´¯•àÂæ? ¦h>ú7ćߧè}€àỒÈ“ŒtßVÄ[2©„[)FºQ‘iÚĐÁ]\IÏ’¸đfh3騋à] tûâ&7t2S¯ ©èX{¶*ùö=›v£Ha«A-²™Ñ`/ªUG¢`k^¤ª‚{=Ă÷ư/(Lõ̀¥…Yq ÍöS wpù>ˆíJPpÅ•qbƒ{±Ă_a´÷ADñ4]‡~Ltj³A“à́ókÿÙD O檠î§úˆ¹öÇɇ[đÊ"î –Jï|œgÚv̉×Ùs ˜/ô¿¥JIŸÅ(ă²|̀ÄúÙđeÎá&ˆP †đ9‹»”%<öAFaO¥n—³iT5B!¶ ÓmM­%1s`à{¨„ú(âHÓ¦îÖĐj%¤ßhä•\ûW†Ú]V€ñÎíˆôë 6˾Zª\ënr×X8#¾Œ{øIÈ₫R̃D,ØC¹Sưö@Mgäù¯¥:êÂG(gkLæ%̉²9đN–³E¿úaœ¤Ëæÿ8ÍoæY×äÄ‘̣|€̣l•Óă6©.½kÜ$Ă~vßçųs—¶dn¢Îø°Éï₫}BÖ¤X…¿ăÉíî;¦6Â]t)Tj¾̣ÉMØ ÙÆ¼‚·<‚°KxæG¨&¾NÅF̉BpjEyœRd5ñé7i«Rˆö’OnÄ̉m¤¢ U[Q¯ µ¼†§æf¢÷dá£Æ´‘Ö]lv(ÖgíÑ Ûđc_c1 5/¦vơ붸ú÷¢#B¤×È0µ6§T"Ư»ºËZewq ;µb0Fxàgs}¢}äcmÈú­¹ÏuêÆß̣™}ó ¾™z˜kïÅïö}ÎtSŒ­!~öáɶ§…ª7 Ñ"ç Ök˜₫ƠTÜ>ü€é‰Q´c+P¶2¯†¨é̃‹B#!ö“¡ í2H lƠ}lÅçS¢”†ˆîĂ-ÚI₫ Z~_fŒÄÀ›Lt?BÍí^đâÓÄ‹¯˜½bnƠk™Yµ Sÿ¢=pS÷!¬qTË]C1sh¶‹ºîZÎÖ…hRgƯF/Sœ\˜©`›6Ăƒ5’=a:’*º¢̉×ăâÀÛ5ÊBçj§>ÊóÅ:k{Ư¬ßè%ä]U¸´+!]¯‚áÓyø™(«c‚×^áÍ×rlëw‘đ9@_̉n¯†×3Ûơ•†7-%îi•èôh¤P.…¬„hLZá!Ưû=Ê‰ÓøÓg ¿BtâĂ›½ö䬌Ư‡·#qúŸPÊcxçΓ8ÿ{ê=OPơzK| ûØôÅ1e_vœB pÉÈ|s£XÙàüeÆWÆvŒíjabăñ¥OâÏœ%qæÇæŸ`¢£ÍiÚOPÅ(K¸Fµ?å€Fª6[y¡í!vômÅĐŒ/ŒUĂ½˜Ö^¢SirßĂTUơ!Ëûˆ-²«ÅÔÜT-˜¥,ÅÄVÊ®ù“vK½dLwifqç©j^ü³çĐkơ/p*u«̃ˆß.ŒAÛ•b¶ï{¨VƸ(à+•©ú’XÚ%ó,5/•à*loưSчÖ§ÏăK a›Ûl8¶‰*Ơđjêâ ₫ÙA*Mø¦!Œeị̈®́–ẹ̀đècAüzö¼ûqcÁ¶A\–3¨°l‰­(́z6FÛº 'O•9̣î<ûö—ùáŸF?kˆ*„̉*Í:~7ôö¸xơp™l¾;£-îúsèRñR6?‡^ÛF]đeG©ù×aË,¡‰“T£›˜n"°êè»Ơ|ăXƒUAØV# ØF’Ù̃ï1o6ÎÍêój0ó IDAT>Ư0ºqW´§¡€O±ˆhæ’¼_Àºô>uÿrÑ$±Á_Qu»É…›ÀÊ|™èlñµOPq»ñ¦Pb)”âr‰R*…Z&™"Ÿz€|ê>bg₫–Df­µ°PÍ B̃Ưî¹"Ú})ÚLm~iˆ>UÎđAlˆÇ ñ’—V_íz-ƯưhÊ— 7 Lw %¿—ÀLb¤µ±Îó6SqC +ÈÇ:@hä[$8÷-G₫KUPke ­Ï6ƒĐ°•jxùФư5a_jÈ…ù-ư=m[èH¡` ,kæS¯0̃÷¥@¨±<̉‚d[w_t ÜZ™`±F¶iĂ@GơRhÙù% {v?©Áwq.àÉÎ̉~èÿ¥ÛÂt×̉M=ÄÏÿ„đaÁ\çÓ”W¨£¡h ­:g.T˜Íû‰ê6ç«D›]ø¤Å¡ưebƯö<祿;Ç₫»³ó&B@µfS·$º²LWÍ«=ˆ‹œ®qO»Êù˜Nè pÜ!wEo„K?5ÉmƠÅÍ|Ç£øNư†öCÿỢ1Û»SwúcĂï`n”z–r¼Ÿ/…áO{•”/Âtǽ"'ª|ó‹“Ó0l"™)r©~,}qZ̃Ñ6&4₫´=C̃:°$ïi+ T‹2Ư÷ ÔÓ/Óúñ¦I÷ ‘H-̀\×3bkQ:"9̣:]ùÀ,c6’I­EZŒí%:ú6–¦¢Örä’RsŨx\ÄÏưœºö-jñ$w«¡°¹{ºÖ.Ùá̃ƒo±¿:ŒÊúØ­màÙƯ¬mëFבM­…™̃đC ŹhËLăLơÿ%Ù äĂ ËßÇè–âÍ ZË„J¡V¤dÛ£Zbºc̀t¿ˆ»\ÄÖPá<‡­G˜í₫„ÖÚ˜§Z”é̃ï"Ư]T=.†îưK SPưœíj́^Æ.*Æ:‚¿ùÖv0%î¥eÄ1u?™5ߥœĨ”¨{[(›¶’äçZ¸Z!æƠ.îSß)R5~5a((½9ư³y₫ûßLăR$…²à‘g ?_â7oå úê%‹–^-)\³ÎÛ¯åx¹EçÙÇüƯ ¨wơû¹ÿX…_ühß¹Ơà¡=!¢̃Åi”ÅđV>Đéo¡jÑK™èBPnadS‚¢Ï­lgä<ùIƠ@UOLmøù́0YĂÖ”Ă]˜ºA¦çÛÔbĂX¶ËÂqWN¬zdcëb”Ư‹q]’EÚĂn¢;ó́”°±#Áº–đ’½gºXgô•cPl|€zp#÷tàÎ`T‹HƠG%رp Qëx–Jt3î̉jÁ+¾ ƠÈzªŸĶ;NÁ¿zñè¥(åQ"#¯£éä"6Á©3Ô=ÔÜ^LÿæµÛtñ§r|3å/€±tÅÉ»â75 mO+ÙÖÖÏøåèzÊ×awRj™§Ê|eÓj¼năNŒ<øt”MW»ôư“«½üà]M*~—?û ƒ¡‘:u)H´´$4$_ưvœ₫ 5²%Ă£̉̃é"́D÷ĈvWÑĂ>×¥çê>¾›`ó`•\bM-ê"$Ú¶J©D¿ÉHîʺP¨Fú®¦z„|̣̉̃‘ém&ïm¾z‚a‰«e»“ä?ß[“zˆBb19IEG›ê¼¸}-m¡;7‰EĐơ¥»Ë]ÓäU@êAʱ ×6ZN-¸úS†}!,{Í1ơ`7Ù…ß÷Y-áx’°z6̀WÚ¶óđºh$nûŶ»™\Óf¢ăG‰ bzº™è|²±/¿²b›¤Ô2{ÊüÅînذúºtEAS—‡¦O½®{46nº„¶@Ô ?j\5ß ¯ÆơW#ĐĐÙ¼ơÚ6̀đjônX\lÚ¶J:ƯF"±‡––è+[—`₫ĂGúxxC»s“‘£»FÍß́zŒ6ÜKļCH¢RLí¦”ØyÑiB]a¥¯„ùưẁW,K%“i#ÿ*7îÄ0nÎYs€~§Ă\Éóhê˜w8“ê3¤ –Ä ªNó/©Ö­YK}w̃ÍjB U}…¶úƠ0w®«½u0O$¾JÿN\.ÏM?Óúód>ÜÇnæ×”®Àj_=æÙË̃Â÷³*túmtç*ô¥Y¨©ªSmw‰åÀ|)a₫́̀ç®èw¨.Âü‘^v÷w:“ê3ôè|oW/ß2Í¥zGưîÛq—„¤VK38ø>¥̉øÊ—vJÅCOÏS¤R­Đ¥„ă¹/à]é"—lkdĐ­Ï<=…29BNVytăú;è““Sü_‡Ï3à‹.Éûùm“?ÔJ|sçvTƠ1Đ>æoÍđ/ƒ“œ6‘‹5­(qḰªYÇî8Y©ÓfƯ®ë›%µÚ,çν…¢œdơj²‚ê:U«5-09 ñøưĐ¥„c¹/à]Ǜ¶®f%ơ¸+=Ie|”ÅC|Ë„8Đ´fĨ/aUyfê°c}}!̀68Áé@̉ù—†ù12œ÷FyD½u?.Á\ˆ“tw t}åô[¥RăÔ©"¥̉©”릱µ́©ẁ¥›Ù–óÙIäùS Ö,&¼!g£Ø‘£‚ù´ó€yzb‚3¾(µÛrÍ•0ïéYy0?z´Àôt†x<¦Ư|FDzöĐ¥„£¹/ä½ s›IOU.Ói£2¸̉³(¦í R‰§°]ú OtaÚHUu8¾æ£ÓǘÂ$§ æ_æg‘œà́̀U{©mÏƯóX,‡¦Iª‹ë·l~%̀]̀¶¬ZQ0wÏN` œf°f3å 6Œ\–Öÿ‘ß“üà\Å*RQ@BµeS¾@)ºî‰®NŸ#rf„ùûÂt­Ô+,-̀'8L90¿A˜;ùâĂüÈ‘33âñ̀KËèR‘\™Ÿ_ó•“ åÀ:ÿ)˜/Ó̉G̣̉ê+ÔÖ<ÎàÎ]Ô½.Œ‰4½₫k"'QÙở,â™A«X¾(å¦lMÛDOáË‚¢Q·Qó*„ï#qx;ÖÄ|ï:Ç ;ú˜'ÉÆ€eº(^*Y&₫³G`s`¾̀`¾,.%œ-Vøùñ3¼g»˜ié[‚m®ˆwÏÍ\í™/ßå>₫Sûqi ?º‡J°q³P¹{;#‘VTüÈê M¿ù'3EL·­£¼öQÆ}ắ>Ö½öKB% ¤¤̉us«Û %TÈ>ü3^Ÿ!) œ¹0´(Yîm©$ljæ/cKÏñÊ¡cŒë>,Oÿä°Ó(_‘›IsƧ®̃4Ôë9NŸ~8AO@‰¹2L;¦iräHñ–Á|YƯFF998D=œ œ;´‚¦”Ä“™æâeÊ^₫áA»15N=¶•÷²cvBÁŒµcJ‰çø¯‰ L1ñµÿ‰ù8₫NÇ›¯3·±}äM¶`äÅÿ@Épƒ؆Á̀Wÿ‚YK"U©©d¿öµó·Sn²TH[vÿÛ´ÙڽʉÎ.c•³Y*^†‚)¨9åc¾ŒÚsYÆ]Ûs€ññ)×8rdeµ¯iÖ™˜(Đ̃~k`¾<=t oĂU›µ®¸Iµ©₫!ù\9{}¸VB”€‰kzáKQjiB•ö>dí\å:ÅÎ~̣u…ÁÖÿ’|Ü¢bÊ•wuărU¡\Ä’€Ëw}´¤d$ÑÆ`¼ƯiÄ/Ù^Á¹)¬̣íu‡m[̉ß_ ££¸âxlL’ÉØ· æËèW;ª†©é+nRÙBYˆC¬):µ¦6ôÏăΕ)E| ÀK}ê<î²h„µ¥}©V¬”)A ª«ï§d8º{úÔqNæ.đè¦]t†[œZâwt]¢¯À\WU•·ÜOSœáăèÖ.ÂÚíTäÍ{_Æ;9‰Z̀á9ÿ!m¿ø"g©Å›±Ë3øÆÆP*E¼ƒÇ̃$¯†ÿÔ‡ø†G>µ„7Ñg†y‡è78‚‘ÍƯxñx)Q*'YêUÎ*ñ«̀ûüÓá_qṛ<¶s«#G+ÏCw´$¨·lfü©I½û?9„Ôt¤¢PiÛÈ̀ö”=2CCDßú)a]G©Ö˜Ûñ¥xÿx¥4}̀k÷ÿÔ₫ư(èX.¥RWŒéÇ¿ĂüêÖëÛªuæ4ñƒ'™{p5¿Çé²;P3± {ëGÈŸ(ñÍÊWØÔ¹Í©ÁîÈ‘tGKÍtbÿă uƯƒ+=ƒbI,o˜j<‰­k€©=Lvz­jbbTb1P ¿B̃}à"|‘ƒ4¿ùåMÏ2¹su¯:7Bêơ—ñ_8G¾£ YIă<‹^ªbûcºú¨ûÜ`×qœÆ;=ƒ*Ơ¦nJñáCo‘øđ"œböíN}îúG’¯—˜+g‘K̉˜«ä@6Tg_ñ ų¾Y)qÿ-³ăÈ‘tGK u+§ˆ_Ó‹G÷Rií¹ú¯T ©¹hbâøƯhg臨½˜ñƠL<û'¨¦]¡åW?Â[P¨D#Óo9ƠÏđ³/¢ î£}ß›h¾8̉®"ΓÙ|/RƯï—OS)åÑ̀:ç*6®ùâMïwAgÀ‹¶B¶}-l=ʯνEE[ä©B½„™  ä·Ø¯] 7ô ùj‘GÖ?€×đ|aF)e˵`î¤ZÈ!Ưl}ÁÓ—Z!å !Ơku˜„ZÍÔ1=®Ï¬P¨”s x° ưËW1´ªhÅ̉/Ùà¥ÏvƯUC+^™T&=A,]mä¨Ô+¨Ơ*RƠ±<^§ØôeăR §Ÿ‡@ÅôyÑ%ên02Ăhr=j1‹0MlOËĐđœÿˆÔû™öÇɵµ^6°%Zaáïd́¹ç° ‰ÀŒÜh™Z‰Z˜B¸[öEL—†D`…› –!ùú/qkíL>ñÆĐ¼£çÑ»{¨{—aZ¹´9øv–Ó›ơ}.ü crn¼ÂK/ÍñN/ ÿơ T)%G̃̀2jë<ơDă²>q¾È¿½”eăv>„"ˆ–í†ùwƯ]é®]ă´ü´ơÉk%7AđôQ\ù2¶'BaÍfʱØu¼Gđ£HA5ƠC¾³•Đ¡×ÍÿƠcæ₫G¨<Cg ™^dzóe!dåî:L  x¨0EïÄÍyqBJj…YNÑÛ(ưÚ² ơÔ1|Ó²íÉ‹Gà\>Æ—K °L”…sïª!¤@* V¸z"‡T?/…÷à趯 c±"ÿ:¿́‘ßX÷‰Ö«µ ƒbWúît–ªÛox˜jûfDv #W Zø‡©¶ÜK]«{í—„F&PLË—dö‘ɧO½Oh¾•RÓNBï¿ĹÔylo˜Wâ*L<₫ îư4ç?Æ3;‹^Åäƒ8₫Ñǰڻ©öP.9Ơ¶¿‰j$Ö«R½rŒZàÑq+W¼nÛ˜ßĐÙÖD©¾ƠH [U±Ü^¤¦  ˜Î3óôN*± •èrªkyÂü²yv­©f̣¢-8UâÔù*u[lw±y£¯Ź:‡”˜™³Ñ½*k7z Vkü₫µcèDZ4¶¯wc,lÁÔ*6Áv/ß₫~œ¸O\ô:”;hË⮈ i£ÏÏ`xç»E½€Z_øs%Mó¿ÿoQ§ØÚ†gh‘Óg₫ú"§Đúê喝®£®VˆœA5ŸFÚÉÅŒí‹a5³†bY¸¦‰Aº#;û¨}wƠ­`-©&₫W—릟cÛ’³ ü@(×l'è#ó(>E)˜8Ẹí½˜«ajm5>$xêơµøO~„đ¦(½øN¿otZ»¯Œ¶”shåJcŸßíÇ̣¸=Åå"æ"uœă₫é ´ÆÑ>]úW@=ƠCƠó+üccä#I¼S3ä7íÆuüu|S3T0ñÍ(́^ƒçä$N0ưø7(FTâo₫3É}¿§ôüs(…i<™ úäqâ?"÷À·™ï {ó_)2ù`•Ь8ù­_%mMĐ₫Ë%0»ƒ̉ª5/Ø̀nƯE9ä¿r – x†öÓú‹qÔZZ²›Ù]{(‡/³f -?‡k>Å—JŲ.Ûo—¨¥îѳ´¼2‹Z­R­böÁ=Èô4z>MøĐ^ÂÅYTS!·ơI¦·Ưƒ\ÆC¾V´˜™1)-Đl6m.@^ráP–¿ÿ9’«=D Éo?È34åë»yí¥4¦aưjƒÉ¡"çÆLÚî¢lÚ(n®‰K¦@B­bQ7mN,`Y’d‹‹¾5.Œ;èÀÅ]tmvæW₫ÄÅ}/÷đi mO`ŒŸ"t~‚©?øßI÷4¡ û₫ÿø8åb£h’î»\[™ü ̉›BñôR?8ÅüÆíW”4uÛ.à½p‘ `̀’8ÔÎđ‹? º{D©ªB<[ Û¸Ư®‹ÆËw1₫Ơ?$ùÎïHưæoQl°¼!kv3½óajnÉôưcÄïÅT"573?O1C¯1Ư“—ÅmË„₫ØÇpạ̊ è˜sÛ¾BzÓ¦ÏHŒúüđŸkđ†ˆïêt`»̣Ø«3a^h «Ö¢^3̣"°}qÍqÎb4UpU\dV¯Ç:ˆï EQG·Z"xß9«X˜@Í€Z«ă:‹^­_´Æô8º‘Û°™JĐÅÜÚơÄ-¸knJëÉvw#«~j!=_ÄJøÆXẹ̀}$‚jÛf(‘_³»6C̣­_̉$] =ừŽz鉒~ø¤¯í²\ñçjË&f¶u_³Û'ñÖË4½©0Û*Đ *ÍkI¯ïÆwüŨ₫%¥öƠäS¡e9¤„ăäø&Ê—­},FæÁ6%XÀJyùÁÆđk’ßüd’·yx«Af¦+æă‡‚D<0•±èhÖèjƠ™‹zÙ̉çB¿lkÄ6ÅL• tÛfïoçÙüh”o<é¿́÷ ßr™ñ.¦ŸùS²M È3OÓÏÿ+è…,ªæ¡’hÔN·‚MXQ*“é¹—̀Đ0‰½Ò¦¸j#éû?5—.u¤]Íè·ÿ7loŒZЇ>vˆƠÿøßˆœÛÉÄÖ~Çó»éP‹B­u£_ïEÏçPl‰­»©_4’’ù_£Đ?‡Z7±]~ê~A­ă*µOªÑYø₫†–×ß&¿åI&ׯĂU‚ÿ䛿 I’ílBT èù<é`¹²›m -—A­Ơ‘º›z0•¢¼ÛXE-o•st˨»èÏ7ó|Ó.v­ÛGw}v9ÍK¡«›è»gÊ?E%D¶·:~’`ÍÄuQ ùđWk $Z1‹¢€ïe¶#‰¥]̣€ËEĂV`{½ÈOñ¬•Æv›üœD E£ĐÿÅ~u!̀n¢M¢åôŒê“Tæ‰ZĐ¡wñ®̀†¯‡:™Û¼åR¢¢R\÷(¥uŸ<ÏFIŸ¥ưà´–ơ˜¡f̣½›©&‚˜¶“|ïî|vÙ]X¿=ÈŸ~;Œo¡ &NøÛË!-›é)‹H¿Çh„Æ›› J'«Ôt• ̣̣ị̈üÍ)Kl{ H×e9̉‚+^v†ù?7„H6ëH^û·^Ù—g×NíAèK·*µh3ƠÄ‚×X÷a[Ó‘¶…R3Âæ•(Té‰1ưÔŸ.̀â:Fêíß¡âe¶ă3VÉR‚P1ư¾Æÿ£­X††V¯5öë/Î Ö=Ô£k÷¢b†â\óPƠ'ÅH*i"‡ß¡̃µ“‰GŸÄ̉^P%ÑL¹ûƠX5}†æW_Æ«¢1ûù– Á_&qô, Ê}37‰œüƯ“¡¸º›Lÿ¦å¸„K,M€-mê——B–ª¸¸¯²Úv³mÍ&Œ/*-*ík±jï=™¡´áyLCƒ¶>Ø÷S"“̉=€éöPM$©•`桯QơhéaŒº—º[¿Ø¦× µF¾DÅăÁ3:ŒZ¬}ÑÀi6n†”—ƯƠ`V|ü:.¥‰ô¦ÍH»Œ+›Ặİ.ßG·%ª#̀ú•ưa[WVI´ªø¾‰ÇŒ’¾g+¶¬àÏbyÂT›:¨zßÅ39F>@ŸŸBº±¼Ïó»ü*MM:~½aƒíŒ†*Mîơf‹v£Ù‘TÊB¨ mƒŸ¿́ơ15Qăà{9^úç ±Xü3c ơºÄPñ 5¥a}X¡zƯw—Ÿ¥ÔRí”}áĂïSÛ¼ïÉ÷Qơ8¥Xï™÷ g™ß|/åö5Tï¡V* ¸V÷Ôå ¯±%%úô9~ơ3êk#³¦÷ù÷pƠ¼dM̀ï˜Ơ¨…y<éùÍưX—?2ä×̃V•ø[¿%˜ơ2üüSUó4ÿûß“Øÿ.åGï#|t?vëăŒîº}̣¾9¨6¯¡Ø¹%ñ™ ưØ+°™"ÜQ,¯¡n- Đgjó|¡j4’X/Ø=¼°úú»Ö~Éq+ÔF9¤¼0ÇlGR€i£ê*Ÿ”L¯êB*:ùơ¾đ ­¿ú*£1Çû§’ØB … Ú̉K1üÉßü"1=ˆ¢i ΃rE$-wY™"µo/“=A%́[hT¥2Gü£wñŸƯ4ó¸gs̀ízºë̉w“0s»gî ¿ª†¨f‰~đ₫ó±í"î™Yæïÿ&¥Ö>æúV{ï_ñœK¢¥Ç¨­º—b2±"§ºª«t÷¹9t ÄáÓn ‹OVYƠÀ[7y}o½Ùæ^ƒ5=.öŸ(R7%º*ȤëL¤M:â*Bl[r|½ÇLz:LL³Øw DK·—„ÏI[:û­º)·´7\6Áë±6DÀ‹íạ‘gH9BÛ¯aë^fy‘|KUkBœ8Ló¯7<îp³[·Qơä)6ˆî‹Z F¾= BPO­an˽Ä́£ăØ^lĂḮ#_c¾«yQÂím£)*ú]ºW¤°ñü×Âe0R»Æđ—a–đ RYơŦ$RDÉwtĐ|æª̣•D3ÑóïÓ$óä»Ö0¿¾Ó]ÇVU0đ ̀äQ|ăăÚ™Û±–|W×Ù E#ß ŒÄºñ"¤ÆÜöçȯêFª éG¿K­ơ0ôè×=Ä5Ơ„B½©‡LÓƠ‹–J×}T%?Nđ̀Q÷’kI₫àêÑVêÁơÔC—5–‡\ÿẰn{â3ƠM±÷>½‹åº(­ÙFiͶk,lBä6í&w…́g)UÉó¢«Î¾5xî¤đ¼¢đÈóqjBàû¤£4ơøø³?s©hÆsßI/ØX<>·̃È^ß₫•(ë°¨ƠAƠ~¿‚ª 6íĐ¹9„b(=—HºøÖ§(åUđ¸”E0ï‚|>ˆaÜC4t€₫ù®c†"W̃ö…±/ÿÙľƂ@º|˜.ßUµ½!®é3 ËZÔ P «Î¶R¿ZÓÂ{6âRïsí¢đĐÆ ́0o~“ªhĂ[́¤/In]?M‡_#ÖÖD¦¯)lE$rs§ƒœz¤w¸\V­¥4ƠÓ̀s÷l$lèw×÷w¹p-™vl‰úÉea0·ư\óÿLâƠ¿%̣~[hå å®{Éöô¢¸Ä÷Ú´¿üwX¢k^!ưàư˜¢†ÿÔ;ø>ÚG5@ÍOQiï¡S‰DIxDS‚ô¦~gđ.‚¢¾0_ë|”GúwtûºÈ̃÷…!,‰Ô]X.×;Å’ªxÁ¨ñç›zؼª EqV©‹¼$!— ¡( ˜75µ;!÷•óm¥Y₫²§…ç¶̃}0¿…K{́`Ïư9ócxfgA1¨&;(µ´7’×<ÄH° ïÄÙ¦U”R)0ưä·ñ  •kHÏV½Ô>2~³e+»rŸÔÑ kSïúÅz ơûå ®ØvOU ¼ UùªNTæ‹ól6„¦í ·÷)R©¶›†¹ô;æfmeæ·ể¤Ô½…R÷µ₫^¥ÖÔCí{©V¨™ÜÆæ«_v2m•QlËiăE¦9&êvÀüù˜oYƯơ{Ư¨¤„\.„¦í¤¯¯óE›/Nó̃‰¹ÉÆê<ƠÓʳ[û˜;rähi`^+̣ˆ›̀»˜ß ˜g³at}k×>E2Ùº¸ àeê\¡Y&e®¸̃6l“­¥Y₫hĂj»g#!ĂYs-Ú¸aéÆÍU?-¹¶IÄ6†øRsC5k<¦”ù̃Æ~¶v¯B¹M07M¹»Í²Ù¬ŸPhëÖ=I"Ѻèï±́h¡­.‹cTJS+®ÓĂ”ØÔßÍS[˜/ê@ĐëÑùî̀Ydzi U·făS½ÇÛ2 ?«ŒP›văË.€ü’-ëúÙÚ³ú¶Á\×Ư ¯af¦¶âÚײ,ZZºX¿₫âñ–[³0“rù¹U[2W·X‰₫"%]Åp’ª]EÓ&oÙK6n4 nhN ÿÛ )%–åä1\W›zưÅMÊå2?ưéOæ̃{ïeÏ=—N”\w¿ÙXV°Wh+{Ñ´[WGdYº€.EĐär¼WG×'Ÿ¦àÓœ…̉Ư !„“P·,ûMAÓBNCÜM@wäÈ‘£÷̃a®X'_qöׯ§ÍÜ$ö,Êñ*GĐ¿ôÀ«T«ÈzlHÛív&•#G7hFf 8v¹b§¤ß—i3›Bf–¨‡çxûö•®ƠʘæÊL6UU‰®{n*A[i“uplăçF¨®ÀN/ÍMáui<öÈn¢Aci9ºn˜ç9pây‚„º:œ…ñȶm̉#§ÉV₫Bù¶ܘŸ```?–UXqy)¥R•LF²yóS¬Zuă—i+i²Msđ́$W DrŬ¾%’ÜÔ& ³ø Eê¶sÊ‘£†¹ôáOu!„“Oñ¹0·,2£g™¥¦‡A-̃V˜¿E4:J{»X1@—̣ù*Gä©V¡^䦧­”F¹ópÓYyK)ÉO 192HÉvă3œ̀]Gn æIæ_́™[¤GN196LM ‚j·èóó ½E(4JG‡X15奔 UËS(̀‘J¹nz¡¢¬„É:86³ba›ºÀÄđy–º×±4Ư ̀̀¿ ̀g‡/‡ùíÛ3ÿæÁàʃù'y6;G"Q@Qn>̣ª-÷É:8>ĂÁsTŒøƒyvrÉ‘ö'0·k³ˆc'+1›¯/Ù¹tCödĂ9:·´0?>è„Ù¿4̀mf‡O156LM 5ĂÁ3 04¯<˜P”.Đ< “Ê18‹×Æ6ÇŸàè”D,ÑM^J-Ïmí¬^ƠåtÀ̀¡‘ÙûR>üÉÙ¿̀O^ óÛ lvåĂ<—[\˜/[ K)O_s+¤tvæĂ”.‡ù2R>ŸÇ\âb̀¡Pèº{Ô,–Z‡b,ÍV†57„“ϸ4JgK¼wà(óuªj1ë4ÊçZ(̀5àn#̀¥”ärƒ 6`̃ƠơIỤ̈Ÿ8Ÿ$ÀƯ*˜/K K ³Y>øøE5„Çë¢Ï¬˜IUÉÍ29>LIº—å¹eY|øñ ³,ç+½åá-]tv´ßØ3–Êp9'¤–è3SŒ§ ¨ÁƠ©Q§A¾„J³ĂÔ?h·oϼTáØ±7q¹F™̀ÊY›fÓ§óäó’É·¢\₫̣:05=Ăä|-¢<=¾rVÉJéaJ¶\Ë7®l)˜±ơ(Æ̉œ•×r‹æXµåÜ<¶e£^<Á(ª¦̃ ‹%̉– §ûøj©€W»₫bJîæu¨áv§¿äدVJP¼½Ơóffæ(•Î V˜˜XYm\,̀ÎVho¿50_–@°¸Ö¢…ÛṼ¤* ́M»>{1Ú̃&7ô!ç¼Î|f)AÑ\Z7̉ưÀ3„Ă₫넺¤crà‰u÷ăv9wÚ߈:ιâ(oÜEÊw Á¬ø…ôơ•éè(­¸ï62b3;+¹•Ù9µÜƯú˜U£’¦R.#W †ÛçG¹Aă,mkÁë‹fEjéSœ|ígX‘Íô?ó]|~/åéSœ{ï× Mâßñ*5™)êuƠÀI ª RÚÔ ³”̣9@ÅJâvk̀œyŸóO ‚I»Ö8ᔫøÅÄ>2vçÖ=Fg´Åº#GĐƯ™ÅI>ø%ƒ˜–…PT4W˜–ÍỎƠ¿í:³W¥]gúØÛí%ÙÚ¶8̃9™™¯FضûkÄcAà Åñ„[¨Ø>+ÏÀ»ÿÊÄ說cƠë„{aƯö]T'q|ßo1m¤î«·́dnäcfƆ"˜lÇ©"p}#`2Qâ—¥)-óâÇèkYâd¬;räƯÑc«̀đûÿÊĐùVïü6Míí`™8üïŒyƒPS'ñDˆjvb.‹̃h ¯!Àª)¤'¨×LTOˆ@4E=s–¡ƒ{Q[óxB‚EÀ¤mRAw ø.†Ö…Pđ%{đII₫Â[ Ÿ:IçĂÿ‘öUm¤O¼ÂÑ_%Ơ½{äÙ‚àçÿ#>½̀̀àŒ@ñUë‰LûXµe7Ÿk~™÷§””¬ ™z¥Ê:ÎÖ H ­ñ»Üa²'‹|£̣[Wơ£*ª3É9r€îhI¼óüăg“Üüº6lFˆ±êÁï™Âö“x›“ï½­z²­†é}äûÄ# oư˜ÉÉ®bƠª„{'áÉ03z·ˆƯHÀ¿jÑ`%„rU&º”°(ÎS×cÄ:V£{\D:ûÑ̃yB±L,±r†S¯ư˜X{Ñöu„¢aæ¦u*ª®ƒ´AB©ù[œ#¡(à5ÔEOij°ùhà(¿=·:K“çQ(‘ ×2äƒ&ï”Î’=W¤T-³£w†¦QÇbÛ&í̉Yf)±-”«_ªö™!}i›ØRAU•ω ™H”ë>B)¥DÚVc*êMƯ¸uås-lËF]h§O¿Pçđ…ôå%Û2A|j’I‰e™(Ÿ3oba߂ɹÜTËe(U4Ú[»¹Ül¨F€X[»’á̀Á×°‚›¸ç±§Qk₫ÅÿÇđÉĂøû[™½p†Đæ?¢oC¥™³ª^BÉ&"M]„û£¹cƠâôPñĨQ,”1Â₫…âX’ZnœB±mÛ Bˆ…o¢ ±°¥M k[üÍ̀ dnô(G½KÏ£Œ¿1ø(FukH«Î˜¹¥íîÓ,vm^M2™\ôq=WÊqHưÿÙ{Ïç:Î,Íó—™×{Ü{\xï€̃H"%J”©’TRuwm›éíé5óe÷oÙˆư²nb7bwgº{ºËH*Ùeé ï½÷×{“™û E””$ó‰ĐÀ5'ßsẵs;sûçêv³d,2ưºe2 Îgx¾ơ¶¹"ç,÷₫‘œ±‰úî$Q _`âÛϰÖ>OmKÙeª·²#oPR깇äT¥ÀÖøg„S^z¢»Ï´?µ˜`±÷Cæj;ZïêQåñ5lj¤ï•™v2o°41@:™Áh¡öđ9,fĂÏ{\Jåë`3®̉túml™ÍQ†®’Œ'1yj΅~§Ó₫ÄÚ¹¨¢  “„»Îi¡¨¢Ó ܶ«ª\ÜY˜%JÂ=ÏR#ô=†*§Yºö>Yc5ơ]Çw¼ª’ZdzhˆÊ“ïàvZºƒ9[%§Ú°9wGBªB|©—ÅÑ^R‰$æ’Fj½ŒƯö,®;UoÙáïE¾*ª Å|‚x(ŒóT+«,AÜ¥%¬…–̀‡pWT³:đ;r x+[đƠ· Ă‚€¨3Ü5=JQAVF1ïH :ܵG°ôÿG¦.HóÉ—±Ù-äÂ3L~ư[Î.j‚^t¹~b›Ø*ư$Ö'Qt.lf±Å!̉²Ê×)oî¦ÿß₫bë˘Ưª’G.0:tF̣@~%.‹ÎËö́= z…¢₫1Ư `Pólñ¯}L,Ÿâ•¶3x¬®ûoQ§§˜Xai6N°ưƒDzsŒÅ̃÷±å›Đ‹*ñå~Öæ0€ª È»¹¤ÛÍÜè°zÊ)܈’€ªª(̣Î>uQ’PdQ•‰-÷‘s¨–‹wü½@jmÉo®Đđê¿Ăår̃ñYUrÛ#Œ~ơ; ₫J*KÙœíeƠ¤®µơ§OHSU —™½ö!|Ôx 9µÆÄ—ÿF̃T‰¿¶…đÔ5ƾ)Đóê¯0>ăˆUYạ́§ÖD¿8oĂ¢Û±í[ >ø"ÅÉ×Ü4tmÛÓ¡¡‚HĐ¯»Ë¶+E…Ëq®dˆç Pcâå—œGvO?¡«2ñåvuwzư™ëS}ø¼½C0²É# HºÛQµªª¨rUUv¢|Ir–•$©¯£åô9ô:é;åŒL2öÅo‘|]øë+Ùîge:Hă¡îçÍí5ôv7fcÈêÁª̉ÛFL)f‰,Ï Û@¾oˆUF08©?ûï)Y$´<Éj￱1¿Hç '¾#–è ‚R ˜O2´(2–â\¨¬l'Á¿ó₫æ@-Ï¿Á䯸ñÏ7Đ›Œ(Å&O-ơ‡Náq*”ÏO±xéÿeƯd¦QÚqO©—èØ æû̃c©ß…¨ÈéK)Ö`$ÄÂÉơi-'ơû3°CĐ=åWäu*3%₫¿Đç$R¼Ùö"~Wé=gIx*›˜™ºD<Ä\j!º<©¤bt‰t*‹ÓªYÁ\ÚˆÅ"±9ü)«óỌ́2&O 5G_Án•HlÎNø(­ ú‚…±0:±¹lä̉PƠu €́öăŸO‘ ‡°øÛ¨éèduàSæ‡J*h8ú .—ư¶} Í\'#VÓ~æX "₫ºTcÉ]d¢*yâ+Óä‹wŸqÑàÂU¼Ç¶S«̀ \Çà®Ç–Í*©µ‘<ío¿ßïÂẳsư“? Åï÷>‘ĂÊt†q=¼~‡™OéëMÑzν+»ˆ]$I¸ÍïDÛ*ˆ:ʵ?E™-øÍ_:±ê¿ûƯù8ÿü~‚ö6péóÿZùoÿ̉Q:¶]«¡£¢dĂ,Üü˜íµ5UÂRÚ@ƯÑ—±Z Ä®1?ÜK&A29đµœÅ.¬3×÷c=f›êÖô’€ª*Dæn’"ÀáS¯c3ëñƠt èÜ?ùÖMè*ÊZ™ü#v§•Ú:%ĂÚà™[¤ñÜ»ØƯ.bK“äêskD·¶±UŸ@ͬ³:=»₫0ơUØ­0̉¿@.߀B>“ cpøQ 3@æá"˜\V½Ưy.:J;^ÇY}˜ØæÅ¢Œ̃êÁQÄ`4 Đt₫ˆ¯/Íæ1ØJqúÊ‘$‰̉¶W0—6’ŒÇ@ĐcñTb÷x”=oYPSÛ÷8\@ƯMă‹¢A´ëX«¹"l”døfi€fg5^‡½¤»'eañ7aÖ}Fds•RG)Ñ­u<-gÉ̀]#a¥Hd3Œ»«™̀Â7Œ_¿‚¯ă,åNK}3~YG÷‹çɆ&ÙÚR¨3qù,Ơ/(w²>ô ó EÊ;N€œ&Ù$Đx§{“ÉkẤoÄVÀHâ¯íÀf·̃‘3.Ú˜CVœ,^úϤă1Œ:ê_¸› “Û¬~ÅöÖö]ßÍèÂä*Åj5Ư•j_éû”¬è§¶+ÀØơ¯AUHE6Q .¬N‚ `tU¢/ÆH$O(¡?@J>[ä«O¢ Ïä)(̃r#/¿æ¤Â%²:‘âÓ¯“„â z“Dû1;µÆ"Ÿ~cY0PR¡ă¥ÓVlú=z‹.¸xáyJv9ÅçKrE0₫̀g„ĐỦ›Ó¬Œ]̃½&¥’ZGVTPe6úßcvl…º¯b‘’̀^ûIÁJÇ‘v®ư‘´µ“†$–{‰®Năj®ÇZZ‰Ùu_U#·³UJ‘ôæ<Å¢È̉•ÿB&AïRsâơƯôó³e°ÉBơÉwÉ₫•Ù/ÿOæ/™EA²RÖư*₫êf,Å—˜¸₫ ưïÍ‚’C±ÖÑØ̃ƒNˆ[¸Æ̉øeôz=Å\’’úăX¥8¼6Æ?§¤­²Úă?i¹ª*R‘ïÙ~££ Ÿ£́¾#́¸«:î÷ØMØßÿ¹wuéÅ̃»ŒíöÔeV&HDB ³á,k"Øu·ÇơФ®ª*©µ G«å™HgP$ê¢.”£¥²Ư}»̃ô6?î'‘ÅỶ%9I‘ú“„#C„—qS 7QUVJxøOdd=6—Q/`u8XZ%›{₫–’“̃œ']°Đräe¼.º̀2ë«#;ú-p”·SÓu)¿ÎÚØ7dbI<$ử tw4Ơ©ªL>#“Đá<ƒ§<ÅB,t½p₫v4©·—Ñđ̉?̉pŸ‹xÇùWwSík+a‚§ÿkaü¶ ”墤¿Í‹’IR(Ÿ́AVá•W¯$±́²ÙÖ\†LqÇiü2Êûßæxå.ÊL Ÿ}åwªÈ?ü̉Ê—EX5™yëu ëÓig³4œ4¨0`¶[èn7aƠƯÊô›­”7í4f£×ªkơ‹>„®ª2‰ơ)–û¿›>$§7ÉæTÔbí¹Q,U/QƠ~‰™ơ!æ–&Èw·" PH…H§³”´œ'`°b21™ÍÈÎV»ư;#ªÊ’‰å,m¦´Zf©÷#&/éyåM ºg3Jo½đ¨ ­I$@gÂê)Çâp" ®Æst•6‘Œ„A2b-©Âl1#à¤ơÂ?ß^¥XPĐ™]8|èô /₫{J¶61ʉ'înôÿ‘Ë—qƠŸ úèIȇYư†¡­Mº^ÿ;œv3ªœG.î”$½ QÙé;Pó9UEơèôzä̀&s—₫€¡₫eêu£—LSQG[̀Ï[̃Óœi9†ËâøAgHĐÛđkY`{>b*Á^R(gjyŒm¥ˆ`¯Äá´KÆÉÄb¬~¾Ó)+8Á;Ö‡ªóY½a§>nrznYuQ‡Ñễ™&Hˆ:qg̉9½‚€ÎdÁnh¡¦ó:I¦™ajnœl₫6³xÛŒ-ßÓ!¼”kv;ïU”́ó½_’UJ²kl­̀O'-McR%9,«»ñG¢,¡7è`ÛkóY¾ưBåVƠ!—,N©(…ñá ®F;/¶bUâË~?!vÁ‚NHÇlÆ:è6‹¸­àvˆ¨n=ÏƯ5tAU•t8Ï{¿ ³¥7̣Wçl&Ư₫̀º èđu¼ÂÑó¿ÜơxUâ³_pí“QƠ¹t}µQƒÅN±°¢÷P÷Â…4ø-Ë7~ϼ,âª{–cƯ?đF"’É‚Í[EuÇ z 1ÏĐÀ8™ÜkẳƒÇ QoÁhĸ߳1»ƒ˜ƯÁ{#+«¯ỡT ÁYA©ÍOjñæ]‘I!µMl}T" ³`÷Uă( I?|5G-dQöđ>óΡn=9µÊÂÀר/Đñâkv{/Jƒơ¬-,# *ùÈ Ó×>#‹ƒ Ăh§áøK˜ CŸ°<3M¡PDgrè| }|ˆù¡o0§À́°SY×°·ºè "ºÂ₫±¢Nư.¹¥‚­` =à/Ê^äxsÖ?³3@$œÁfÄ›ÿẨDsùó˜MF„Fä¡Y‰°Ơ¼†ÙlÁ́pă¬̉₫úßc6JỌ́²«ÅDxW:ƒµ˜%Ÿ+ Z$̉áM¹Â]Rîî½½/°øªPăä‹2:QA.$ư]J1%4×G8¾»œPÚ½´‹eǶ(…,’ÙQɱ2üÅÄ:ñ­%ÂK³”û\H… Ñ6³—Lh–¢èÀns<Á¶ÚN:øÿуm—ÍVFüOÿGdwU©¥ZBwœ'»]"Ÿ+RĐéxù/̉— ®₫)ÊÅ<Ô´ÛøË_Ú~4[Ẹ̈ÛßFØVu¼ûWn|Ë~fj肨CÔé‘v»ÜÅƯZ› 1;¬D£[È@L,„ÎäB"O;u/ü=ơÅ$›#1zư"†ÛiÛ»ßD‡ÅW‰“+0è$ ¹‚d|&kèû祫¤×úûê}âɳAÉ“Ï+”´¾LËñçĐéî%uQo"·ư‹]T™èÂú̉z¬V3¨ º|”rŸ‡‡ ‚UXɇ•|d™X¤HÓÙ#tßyÿ¦’Fj¼ơ §™₫ê¿°sĐtêWˆ©y&.}¼=@m•…ù̃¯05ư‚ú2B³½¤Â[T”UâđWăn8AiEơÖáA¤ÂîăÜf;…ø₫¤iC©×K–ÉXdPÁ“5Ó•­äª³ḱ¾·f₫nˆÑU‹Ư”ei-Lûñ$Lîj̀ê«Û*‡^¨G’ôxêzXZºÈ́ơOq¹­„æG0–§¡û–/bñƠ`5|ÍÂƠHù„ç'ÈË꾿¨³¡ä·YïÅØy“Ù€°l”4ciæßỵ̈_qXÖV(iy“á;GSoơSöï¨Sï "ÄÛ©€̃QIë«ÿĂí„Brö ²E=ơ'/à6¥‰,°på_I•ù‰Î b«9†Ëă|²m»$ × èơ;¶]¯vª¢€Ç#²ºU  ƒNTÙ̃.`´J˜D•´"̣ʯ¼¼&+ _ñŸ̃søđN/Â=kU•\,Ï~!n0đ›wÜTzÅ×÷̣̀7Å : ¾Æ¶nö3}Ư„‰$ëümg‘ æ®ÿ‚Ñ7PF*Å`s¡3˜1˜Œ„ûX_¬'PY…$ ‚„§î(öñÿÄøÅÆå2±5=ƒ·₫ægm9Ç>s%bæ̉ïIRFç›ïàöx@N³6ø!+ËS$ă]8í÷”ê IDATzÂK£Ä#É„£¼ W …lx‘ĐÊù|ƒ=€·º‘́̉e¦†ob©1P̣U\6ô/Ÿ>„ÙđàŒ.Ë2ÓÏ: ̣(‚ƒÉt—|aḉ’a¶WVđ}cgö»RÎöÄ·„Wf©®îA§ImLsÙ)i~“Ư‹NÙD§Ócvù1 {*gI9TÛFm°zß¶SƯw™ùePÁŸ´rf̃¨?CWuÛCÍẁn*z^A\Íà++ß)gXJ©8ü ÆmŸß‡ ˆ8êÎĐ®XŸ›$´´ÑÛHEsz„µ¬‹r{ fo3Ç_fu~DTÄæ«Å]G ¸kS4ùwßÔHIưID[ ’ÎR± ²™,¦[ẁsÙaÚ^(°<5L<*èz“Êöcww®¯V₫£ÎĂíßS18+¨h9†Éh@4Yizá/X¹Jb{[íi‚g0è¥;J ?đªr³QÿDơhˆz‘+}¦xïC‰½ÂÉ]GÜX2~!¢ÓÑZo ´YÄêÔa6‹Ø,"}Si®8̃jÜmxV¾çR–c/›˜H2X\zº»̀˜uZ—û¾¥Û=ơǰîû­·—SÙy³Éˆ½ă´êÜl¯­@Gùá_QÑ̉ƒ^•'Y%´8Î́§éÜ1Ü^?RÇỵcC¤£!”ÊåŒ%í´½ø.˃$c |¿ Ø~âîÁ?ơ»ÈyLfưCÏ?ßo˜$]xA·w£"@a§'"eke‹ªW₫%>ß׬w<̣¦$&»™ƠÿÄ̀è46_5dĂ, ^¦éü?PâÈ1qñÿ!-”b³HN]'{ Ÿ%I:ÁP,́x뢈€^'axˆ;»²ÀnvF@o±¢#K2†2×í5qª*“KÆP y½År;ă£7˜(̉ˆöJ_ú–Ç®³Úÿ (i½@C[Ù¾>[½¨ĂcÜ¿ˆÎ¢3!æÊ#6^6uñZĂs4j:ă%ˆ&ʺß&pˆ i ™ ù5êÎÏv~Ï€§á4îú“;$·»HJ_Á« (¹mR‰̃¦( xY¿ù_Đ[K0Ú}³&nEæ·ÈüÏM­{#®ïû™;}#á{ÿ· ¿ÿÏïûû¢À¸\„Ă.̀æ—éèx›Í¦úSíŒÈÝJŒ3•;Ô²Sï:ÀP…‰‰ ¶¶·9~ü8&ẵg î2,Æ,[ó£ÊÛ]…Ä*+SSØJ܈ »ÈªŒ,v"&…àñßàkÛ$¶>ẶÀEÆ" ºÏÛ Ï{Ís~+ÀǼ0ñpŒ.ªOÄ_׆Á £âø_ sƯ ²µ†νˆ¿ª ™Ú#I6gHE#XËRÛt«ĂJÍñ_²¶´B!—}êÎ{s+-B fñà4 ¢Î„­´êéµ;Åô™÷<™Ë²Œ,Ë;s&´à&óPȅŲCæN§ëgËN#ôMæ9lr”Ó•ëjÅ ?ØKQ¹zíHû䱜5›;™́û=zI¦¢¶5f©÷CÂI ¯¼»ÔKhâñ€ %‹·ùî×yZ`45CpÀÉ\UUTUE’$ŒFíy=.2×ư€“¹Usº½’ăƯm8™‹Ez{{¹téÙl–$i² ‚h¢êôoÀø!K£³Ö—C4X±–ÔÑrîU<¾2 §ÅÔƠ‹ ø¿"†³Ô´´bPB¹u&/₫_  ˆz#UƯ¯asđVV±2ü›“ê†ÚG÷yTq…́$₫ÁÁ)ZD¤áA”3ø, çzêéh© ³•Ëå(‹èơzL&“&ć óÎÎWq8\L‡5B?J•ÇBÓ한èiĂxÀ'9år9nܸÁåË—I¥R8œÇ₫ ™¼ÔœúkÊ»ḅyIÁâD·{ßÛ<¡’&r™ ‚¨ÇhsíL×R4¿üßM%PÉ`ÁdƯYŸÚôÊOe*̃êE~îö2uw·ú^› @Ơt@NGQơVMx>É%ñ̉œ;ÜNGsưëo2™$›Í¢×ë÷´oæé"óWè́¼€Óé~¤¯₫ĺ$¨H(O—J ª̀…mNu5p¢§£á`ß_O¥R\»vk×®‘ÍîÔpN§sÿ»^E £ÍƒñIgr 39îqD½‹ë̃ic’Ñ͸óûÊÏXGjÑ)ˆ[Ă÷oÎÜèä$¢P÷L›MÛESI‚¼¢qȃUNj+h®¸E©Tl6‹ÉdÂnÿù»ƠUU‡¢myy9G¡··—L&ƒ^¯Çăñ́KsŒ€B1±‰ íư1ṾAưIçƠi·à´£aŸíÄA»’Íf¤¢¼œ`0x¥ö“”­­ÀÊétb±X~–³RYYƒÇó·Oí¹4 ö°Ñó‰L¹K’ôHR;~®Ñđz½Ô××333CYY±X dzç qfƒDO})‰L|ß¾¯ÓVQ§Ơ5<<̣ù<×®]chd¯ÇóÔ|¯B¡ÀÖÖ¢`µZvSœ(Ķ' Ă3×u¯5ÅiøÙ =11ßïç…^ ăt:÷|È„$ ´65́kJU´~ ?EGnܸÁ•+Wp¹Ư?;-}‰D‡Ă˜L&ÊËË1ÿhØíím.]¾DKs MMMÏÔY{ª–'«ªJ,#•NkVdŸä½°°Àúú:¸Ưnêëë)))Ù—¡ ́LƯƯ¯ÿ42×đ°e™₫₫~._¾¼S’̉é«]ªª²¾¾N"‘Àd2á÷û{o@<ç̉¥K,,.¡7¹ó&>M311ÁÇŸ~Ệ̣̣¾\zÖ‘Éd¢¬¬ŒªªªÛsîµk+4́ؤ¡¡!.]ºD2™ÜuB…Å>ª̀Ăââ"çñæM§Ó\ºt‰ÁÁÀ&&Ó³7俉O¹«ªJ6›¥¿¿Ÿ›7ob2›q»\5Ù¹OOO“H&9qâz½^ ßÓo¿ư–h4ºclu:, :ƯÓQé …B,--!Iµ¯)—ËqåÊñ¼‰,ËèuºgrÊ îIW­­-nܸÁàà ²,SS[ûXî@?kˆÆ¢ SWWGYY™& îC2¢(""¢ "‡ă±,1yÔP…™™b±.—‹`0¸o“!ï—)¸qă×®]£X,̃æĂ3˜r×=Éjzzk×®1;;‹ªªØl6Êg̣Aî·#51>¢ª´µ¶>Jƒ†G AhkkĂápđᇒËçQd³ÙüTèK4errUUñù|”••=– JUU&''¹zơ*¹\Øé”×ëơOM&ä©'tUU™åă?&ß₫¹ƠjÅï÷kÖd±¾¾ÎÄä$‡:;ñŸgbb‚@ @C}ưm‚y’‰FUU–——Bjjjhll|lßIêêêp:Äb±Û6Êf³=“¶é‰$tAđûưôôô°±±A&“AQ|>f³Y³${ˆååe–——9ỵ¤6̃Uƒ†!¾••"‘/vw?5éßh4ʵkר̃̃Æëở̉̉r †|mmm¡78ÿ̉KZÊưIC6›erj`0Hmm-‹‹‹­»Ç2¤¤¤„ÚÚZ-:× á Ë2“““x<ÀSá „B!._¾̀ØØ‹…C‡QWW÷Øí@>Ÿgjj ¿Ï‡ßï¿Ưœ§EèOEaxx˜í­-Î=Kuu5ơơơ˜L&döP¡çææ‡Ăœ{ñE­ñPƒ†ÁÆÆëëëœ>}ú‰ÖUUI§ÓŒŒŒ099ÉÜÜ’$ÑĐĐ@GGÇc’£ª*«««;véÜ9$Iz¦9@÷$°ååeÆÆÆhkk£²²A´Ùî{Œd2Éđđ0ƠƠƠ+*4ÇIƒ† 8¦¦¦°ÚlƒÁ'^W666øê«¯Èd2X,››9rän·û@Èzff—ÛM xæí̉Gèét¾₫~¼^/íîă³OLLÉdhmmƠd®AĂ  ±¸¸HOOÏSÑÓ#f³¯×Kkk+---¸Àđ.UUÙ̃̃feu•ăÇ=s‹XxB—e™bÑ(çÏŸjf"? jrr’ææf|>ŸkĐđ#$333ƒN§£ººú‰×Aƒüú׿Æd2a·ÛTŸ̉́́,&£ñ©È„a}}ù…ÚÛÚp:@4hø3A‡,Ë¢ûûQGê ‹‹‹¨ªªƯ¸ỷ½X,̉ÛÛK6›åpOV+Ù'äóy†††p:Ú ₫ ̉é4“““ÔÖÖˆ†±§Ùl–‰‰ *«ªđh²~r]UU¦¦¦˜¢ëĐ!JJJ´§¶Or_\\dmmööv­_Aƒ†?£/KKK¤34çwe½²²B*•¢±¡AËÖ>I„‡¤®®ææfMQö ™L†‘‘***¨©©Ñä®AĂ —Ë1>1AEy¹Ö8ºÇ(‹ŒSZZªíîx’=ŸÏÓ×ׇ(ôôôh;·÷Ñ"ÓÖÖöLPÔ áaôemmh$̣Xç?+ØØÜd;¢¥¥E³MO ¡ßºû¼¸´DWW׸÷ø¬ 311ACCƒv›@ƒ†Œ½^/ååå¾́!dYfjr«ƠJyy¹&'…Đ777¤¡¡ú§¬cô CQFGGÉçóÚm [[[lnn̉ÔÔ¤e÷‘H„¥åeZ›µ¾'…Đ³Ù,½}}˜-º»º´´Ê>áÖä¥ééiZZZp»Ư#¥AĂŸ‰'&&°Z­·ÇPkØ;û4;;‹$TUUiyưV„¸±±AOw·6£}ŸÓđđ0f³™––-:× á"Æ••´ƠÍ{Œd2É́́,ơơơ8Íy:è„~ë:Âđđ0ÍÍÍTUUim±²²Âüü<­­­Ú®s  ø˜BEí&È>pẲ̉¹|Úº:M O¡g2úúûq¹\ếÔ–€́#r¹Ă##øü~í­ €D"Á ÚèÑ}°O““+*(ñz5ûtĐ ưÖóh4JÏá,‹ötöÑû™™a}mövm×¹  3³³³äóyê´Ñ£{.ëµµ5¢Ñ(ơơơZ)đ ºªª,,,0:6F{{;åÚ¾íưD:fllŒmk‘ ¨3³³³·Ç¼j:³we™ÉÉIíZà“@說’H&éëëĂçóÑ®]•Úwù“J¥èèèĐnhĐđ:³¸´D<‘ ¾¾^+ î1¶C!666hllÔ®tBW…Á̉™ ‡{z´»…ûl˜"‘ăăă444PZZª Eƒ†?ƒ|>ÏôÔ•Á >ŸOÈóĂôÔF“‰*íZàÁ&ô[µÛ©éiº̉æ̣>eE§ÓÑ̃̃®eF4hx›µººÊÖÖ–ïâñ8‹KK464h}UĐ£Ñ(}}}+*´Å+Á0­¯¯3==Mss3‡C Åb‘ÉÉI|>Z¯Ï^Û¨Ù¹9…‚v-đ z¡P ¯¯EQèééÑ:«ƒaÅåri»Î5hx@lmo³ººJCCƒVÏƯcÜÙxèt:5TBWU•É©)8|ø0^¯W{û,ÿùùy–——ioo×RY4<nu[;œNª««5'xmỘ̣2ñxœºº:­x }{{›₫~êj먯¯×cŸ‘Íf¥¬¬L3L4< ¢Ñ(‹ Ô××kÍ»{ŒB¡Àôô4Ú~ùƒLè¹\›½½èơzººº´¦’ÇàùNOOFéèèĐ̉†4<Earj ½^¯mÜlnn²¹µI}]v•ö ºªªŒ±¾¶ÆáÇq:b́3âñ8###TWW4ùkĐđH¥R̀ÍÎRWW§í9ØcÜj¦(cbbEQèèèĐ²#4<` 25=M¡P ±±Q«çî1b±ËËËÔƠƠa45DBO§Óܼy«ÍÆ¡C‡42y Fik{{gˆLc#Gs¨4hxd³Yæ´në} :&''ÑétÚŒüƒJè¢022Âv(Äá-eơ˜elllg×ys³ehĐđ€đÜÜÑXŒ¦¦&-Ù‡ÀoqqQ+mTB¿uư`llŒö¶6*µñ}Å(-¯,3?7G[[v»] €B¡À̀́,U••”””hÙç)ÉĐĐĐ ‘ĐS©½½½x½^:::´‡ô˜Œ̉Èđ‡:­CWƒ†‡ F6wƒhÑù̃"ŸÏ3;;KMu5n·[ÈOÀ̃e™ÁA‰çÏŸ¿}wSUUṂ?CÈ·¼̃ÍÍMÎ=‹ÙlÖ¨AĂÚ¯ééiüÀ]k;5ûơèí×-çikk‹»?M̃.Ï=#ô[ÓȦ&'éî¬ A(‹¬¯¯S,µ'ñ`0œéH§Ó QQQA0Ô¨AĂbccƒååeNŸ9s×¼†B¡ÀÊÊ …BẢĂ1&£‘`0xư’e™é™ÊÊÊîºN«ª*Éd’ EÑdø=F*++oËsO]UUâñ8ưưư”WTĐÚÚzû­¯¯óÁ€^ j©ß‡"Ëè‘7ùËZÛ¨ª*SSS¤ÓiÎ́%UU …Bär9M 4v»»Ư~W¤#Ë2333¸\®{Öv.--ñáG¡7›5öPöKÁ(¼ûî»÷ÜØÚÚbyi鶺|{ù2f»Mâ÷ä)) ñq»D±'„.Ë2ưưưär9ïêºkñJ>ŸG•$ÁêĐ³±Pˆé›}äóùúưH$ÂÈÈ ·WÓ&“I>û́3"‰8:m!†gÙTCí<÷ÜswƠÈ#‘ssstuwßS¦* è-fÚNÀ¨•°‰H”ùÁ{"mEQ˜ÆérƯ3ZUU ….¿–cGµ₫Ÿ;ŒÆ˜¾Ù{×Ï9¡ß gff8q⥥¥÷> &#ṃCAo4Âç[×ÔZZ[o§d …©L†Ê–|U•P5<Ó˜$—ËƯU§U…™™L&Ó̃…ƒQ³am¿îƒx<Îüü<ííí?8#_”$ F#‚ÖT}‡<³÷ǘ‘z8f`pÚÚZ4ê1accƒ™™ºººp»\÷>xƒƒ6…IĂ3 UUu:¾ßr•H$˜¦¡¡›MKóîơ3˜™™AEmQ×#À#uẉù<}}}‚@ww·6Tÿ1¡X,244„Åb¡¡¡AS ‚`æææPUU» ½Èd2̀ÎÎRUU¥ÍÇ8H„®ª*ăăă,..̉ÓƯËå̉ˆä1¤Å¥%VWW9tè¶ë\ƒ†‡$˜©©)*++qƯ'³¥áÑÚª……’©MMMótP]UU677¤©©IK|Xk"yŒ¸µë¼¶¶– -:× á!°²²B8¢¥¥E#˜=Æ­›^¯÷öĐ1 ??«kMUUVVV¡¥¹™ÊÊJTU¥X,"Ë2ªª¢ª*f³Y{`û  är9Z[[5ƒ¤AĂCàÖ˜WÇC vRÂÅbEQ°X, {„…B,..rôèQŒFăm̃¸5AÔd2ị̃oBÏf³ôöơQ,Đëơ “I§‰F£$’I…N§“S§Náñx4iﱂLMMÑ̉̉‚×ë¥P( Ë2¢`45‚× áG°±±ÁÊÊ ÍÍÍ̀/,ÅØ…ˆE£x<N:¥ua?"Ü* êơz<‹‹‹„B!677‰F£ÔÔÔṕØ1Ífí'¡«ªJ,css“b¡ÀđÈ‹³É´3_6Äívăp8îó§áÑG###D¢2™ W¯^Ưqª $cGR]]­ Jƒ†û36·¶G"Œ#Jv»‡ƯNss3>ŸïgïæVU™ĐÜkI#-íuè%U)0?8@Æè§¥%ˆ((… SC˜ƒMTú÷D©ªª’ /1µ¦¹³“^º¯m®N°6̉̉^ƒî®ñ´*ùT ÉlEzLckÓé43³³lnmñùçŸS(°X­¸].Z[[)//ß32WU…äö:Ë K$’TQ·¬’ÊÚ ø s»PU…t*‹ÅjáA ªœc~lÉ]Ge¹›½H@üdB̉̉R̃zóM z=f³½^û ‚đØ̉&ùL‚ªĂjùnxªI%R˜íÇv˜÷Åb‘\>Édf}c«Å‚Ñd¢¶¤Çó@sß•ç]ȦÉå ¨‚ˆ̃hÂdÔˆÔY1—!Éa´Ø1îo,”BTVÀf3ÿ$eSU•l*h°₫à{<ñܧI&2X6Dán¢È& ·b $Ó2v»…L2ÎlÇ ï6ªñ–¤‡•••¼ùË_b±X°X,X­Ö{lÙÏ„–ÆùâÊ&¥Uÿ5—‰||¯₫đÏDlTÔü5N³Djk¯₫øoûú÷%˜l2F4œ$_PîKè¨2+cWøf̉E]sº;Îb1áúÇ_8r†ºªR‡jJ’D}]Á`€ßËåÂn·c4Eqḯ…ª’X™àăß~DVïÄí²’OÅèÿö2g.đÂsßs~îÿ*[¥·o™£¯¿ŒĂô`4ªä“ |ưƦ_,w³ßR÷s̀­áËèdøüVåR.¼q³NU%º8Á'Ÿ\¡û¿¦©ÂơU‰-ÏΙ¨®«à ùƒÓ§NQÚŸ¦½£îÏ+Ê}È1²0EBpPYøỴ–sq®üî__‡cç/ĐÙ^¹ûz*…TŒùé‚-¬ô_¤oNÏ¿z «éáUCÉ„øæƒ÷±Ô<Ç©ă ?ë3+ù4s£S”6µâ°”™û*‰µ1>₫¸Ÿ£̃¢¦Ây›”lŒ¾¯.BI•–¾írîåĂŒß¸³ö8‡ÚËÙCv”ăÖG¹|±êĂgiªợØư=AÀëñàÛílß }_e â磬¬Çđ;MÄ×–Hç%äô&á4r¡Åỷ‚“²²Rr±-æ&§‰%²˜œ¥Ôµ4ă°ê1˜,X¬*zI$Ûbrdœd¼?¹D”’ª&PUäbùá~b¡F—ŸÆ¶6‡npặU‚³ơ9\RÙ‰âÉ,«“ªæJ=6ọ̈‘˜L&?¾ïAŸªÊ¬ÍM³yç?ü† ÇŒZ̀2qơ2QA!_TH³01ÎÆFAgÄ_Û@U¥Äús«yŒJ’¬l 6{“›ü~ºÂPˆ2;1E$–Æ`ơPÛ̉ŒÛaFÎÆ™#Ëbw˜Éd {¸ ö©å–l’MwuTä[++äeP‘ 9R‰4 ‹ ³iÇ#WU…l2A._DôXív„b‚‘Kß²’÷àôyp[ơ¤ EÉ`Âj³|/bÙO{$<Öúª*,ö~Ăg]¡¬ó8çÏƠc ÇLÿU¾ùđ#LÎßĐTåE)dI&Ó¨ˆ-6LFƯ¼™L2A¾ #ê Xí6Ôl„Áo¾&j¬ÂYâÆaI'’eÉ`Æj3ßG̃*Å\†T*ƒˆÉjĂhĐYcrboÏ9*+}·•ª*¬N rå‹QN:œäSa67M;ÙTQoÂnÿ®JÎgI¥̉(ªˆÙnÇ “¾GF*±­5”̉,©x¹¨`²90u»ç-™H¡ªÂç ä|ṬÖ9´b6-LpåÓ¯è48im®F‡L*ùçΛœß‘1¢«Ư†$‰ªJ.“"“É(aµ;Đë”B–xJÁb„t:‹¨3bsXU•É$ä 2’΀ÍaCv̉†«äóYâ‘"ˆzl;¢ÑAmK3‚£Œüâ8ëk!D‹—º–flR ñ z¿ø±ª‡SÏwQ×ÚLù®Cp§¾ƯùƯTE&LP¸ă\́eD¿§Ä"€ÍWß ËóËj,a}qSu%©V—Ö©÷U²º°ˆµ¬—çËß¿G¨`ÂWbg~tˆé¹ ̃xûE¢+ă\₫zƒªÆ ¦.¾Çèb†Ê2¶†é\æ•¿ưï°¢°5;̀¬_@Ró,\ºD(ơ6ƠºÙbQQ I®}ôó)3•enÖç§XÙHđ̉kÏc7í-5<–!2‚ˆÅjȆ™ÆĐ^‡Ăa§ùô9D ưé\X¥¼®5¹ÈPï §ß₫5Æỡÿ×aÚºZ(¯k¤PHSQ@ÉÅøæưß±’ñû=DÇG™œ^æ_g₫Û¸̉¿FeC ±­Eæf7éjÓưѧäck\úè–·’¨ª€̃́æè…×h:Yêÿ†ËׯÉ‹‚„¿å0-‘‘›lÈ>|5>,éu¦¦WeQg îØ9nxèHô)H¢d£ŒÜ¸¹º›_ ›aGYË*Ë ŒÏáqÉF–øæ£OYgPU£½”¯¾JµßẾµ‹\ Ë¢DyÇ ê]Y†û{IYĂ”]H‘Efç7‘eIo¤éô+ƒÔT’³|ưÉE¶£YT̀®2=œí±æfÈz—Y]ƯÂå" ’‹l03t“‘á9,Ơ•xÅ ÙĐ&ß~ø>áM ª‰ăo¾KGƒLx‰KŸ^d#œBQÀæ«æ̀«/Sê0̃Eꪪ°8t̀üeÂá8Ö²F^yû5¬̣ß~ø +Û;„®·x8vá5*y¾ưèÖ¶(ªÁæ¡çôI"#} BY%v‡‰ÄÄU†'VwΛ̃@ư±—8ÖSwÁ©dĂË|ưѧ¬n%@̉ă«?Ä çO’]å«Ï¾%‘-‚ â ¶rîƠˆO^âÓ‹cx}>̣™™ŒLÓé íªdæÚÜ蛤 «ˆ’Ú3œ<ѾëØ$¸ù§̣q²y•ªĂÏqæh5#×.#” 4́–›‹É-®\¦¤Í„O]`¨cDÁnL°0±À!ƒŸ¶z'³7¿åfßä®m¤₫è®gîêEn ̀R”eQGđĐiΜî@ÿDꘀÎ́¦ª:@ÿü<©d=+ ›”7>;aj~‰t‹ƒ•å‡O_cz!Âé_ÿ Aë£ß̣Ñgƒlœ9P•LhéÉ_ư;?\ÅêÀ׌,²›|ÂR û•_PfSùêŸ₫7—Ă>W‡Û5BcW%f¸¾½…µæyºÎtc’̣Dâ2fưÓY.(k=ÊÉí8ƒ7/2uås,./Á†fÚÆ£K0̉;Féá·¸p¾ 5½Áïÿ÷ÿÈÔø,­.0Øt_xƒ:¿ia‰éÍ8]mäúŸ\£û­¿¡³̃Kx¶—̃¿ÎÜt-3#Sø»ßàÂË]dÖ¦XƯÓï¨{‰fsj„‹¿WØåR¡bÙ"(E¦®~ÍđbW̃yŸµÀ•~ËƠ¯®xë7o {:yăüQ’k3,l±úª©¨©Æjj¥¥ÊĂÅúב×9ƯUÅú̀(Ñb–BQ¹«^ơŒđ9¹x”ÍÍ4ƠZ°¾«éLN»º@)Đû₫LnH¼úίqII¾₫Ăï¸v©’ómŒ̃èEWyWŸï ²8ÁJ´€£¬j”ÀêưV>ùrœ~Å‘fËäó²A·ó^J!ËĐWYˆ™yơWob•Ă\üƯïépº½“ª›“´œ>ESCÙ. ]~*ê.é8râ(éÉmém¼‡9yÎ̀•ßÿg†ú&hª²3üåç̀GŒœó5̀ù-.¾÷!½7Êyå¥n¤;”j!‰b2Ñù̉9tÑ̃ÿƯ—̀ÍF¿ô5#ËE^}÷]¼¦—ßÿ-×¾¾ØddbzƒÓ¿₫kªœ “Ăc1l¬£¼z“î'(Ñe¸Ü;ŒûØ/8Ơdmz”X1C¡¨ í7U.0úí—̀„Œ\øƠkˆ±9®]›ae¹)ÇVщĂíäÖ§øä½/˜nk¥´bqqºçèi-côË÷¸t‰ºª $“YjºNÑÔXÁÂơ/¹rù2ơmX€B:©¤œ3§_ecø¾üú+jª̃!̃DpÀzGÆb{[A ¬¹̣ê*JŸ¤¥ÉÊÀ7×)È ÉY.yÿáó9TỊ́À×|ûÅ”¸ Œ̃èÅP÷<¯Ÿn%´0ÁZ"G.'£7?¡fKÔQ^_ÇƠ±AVçØHÈ®®Æ‹2đÅ,ëKBi‰ÖªÉù6WWøü=Æ$¹!_È“Îå0́Ê6ŸÍ)x}.QĬÀå6ƯF­RÜ6#¢TÀb7"‡swV08ß¾?ÈúF5²,ËæÀÓÔÈ HNQA’Ÿ9WE‘ñÆË8øÊë”ú­`ä VƠ`ü¢@!W(îQ-O>£í ô/k`‰Ô5óÂ[¯cß [¹ÍôÔÛ€A¾ #[Ôm†—]Ë£‹VÚ_ư ®̃^FG¹öî]”@ ¯¾yvÛ/;œzëç öơ1>̣áÛkđÊOaû¾ƯĐPl66‰¥Ù94³eKc7MƒÔ⨅‚ôˆ̃B‘̃¾†!;9̣ÚOñ÷ö2:4Æå¾.l±f^}íè6~ƠăÜÏ~Á@o#} ܼF¼å4/¾|ËVô´i4‹Eپ˲ŒVÈ£éÏ…")m·‰(IŨVS§PĐœÏf€DÓA\%ƠHOÜNQÂb±n¡BÑGlèä zq₫[˪¦åq&yågvï?`ôN·¯h́ñ5j¼;c–!μơsúú˜}ÀĐíÂơÇxùƠ“ØqûˆÖ :’ºsˆ;<ô\›ï¿ÇhÆEûÁlúc=÷‹Ê­¢¤"o)F‚$ƒ¡“¦ÿăPJÙ·¯Œœax:Í£ H*ªªlư­ æŸDăƯ‚EÓ4 ÓÄỘä2:¨œ9A,^B°̣gz{årÏM‰V^}ëù£¿›EơD) Û¸ÙÓMÙÑ7pYd%BÄip»¯—Êăoá¶©ˆ‰RÜRó“s„›ÊX{ÈlJ¥ƯÜÆfsyđ9F{ú‰Û«½{ŸÅdæ ¬"–ççYqä¹£gù>*Jâ”W&™£°UÜAÀ,áøJ¾#™{\ë]娋gHD}h™5&°xƒx#%~&î̃a&æ@_bfµ@M[)¹öU ¹uW GắóăÓ”økHÍ 1>¯Ñ̉^O(́f²¯™É‘^æ–Öñí ô¯x[‰*₫°é¹Y29 ‡¢±0;ƠÂ&ä™™˜'\ˆºö£̀=́ä÷¿¹ÎÂR ë¹t’¹ù jœ£ùh‡×̃çBç’gaSß7j¢¸‚T7Vq½ç:÷«"́«-A æïpá£.êN¿€/äetf–l¡+çqxKPÍ43“K”´§áĐq&ï]æß̃¾Ç̉j  iÙe–s4|‰ÖYzÎÿ‘̃¬ŸnÇâ´l b+₫€‹ùéYr…Tc“Å…œ¾¬øy×&LCC7Œ¢¼z† .+6‘xË9ọ̈Y,’ÁÂä¢+Âóèo‚dÁö17;C&§a— ,ÎÎcóÑ×ÈèN₫èu´ô ₫ùŸî&qÔƒ€¦̉Iæ6©;úÍÇ̣<¸ü.—n=`í̀Al^ûöă y&[hAÊ.s»³_"̀Ǜ"‰3/°ÿ`sưäµ<º¦ƒÙô K«ë„Ư «‹s`sC:Å̉†É+gÏRR¹;ÓK:_,R„ zn¥…%Œr›«óäE+»…¥/Öư(è†)n›…Ư^^›–#´Ô„Èo&™[X'à€Ù±eJÛN̉pø8w.ñÎ{÷YNĂưËí‚&Ê6Êëky0•§¢² ED¥u• ,˜TƠ”#‰̃²}œ<³̀Ữ[¼×Ó¨Z)o;†Ư&³©:‰D}XÀïUđ¢ˆb÷ î”ᶸøq`q)¯ˆ0Đu·ă4«@ÿµOèƠM$E¡ñäI¢ÁïfQ¶Pô$©ôEî]xŸ[† Ê8ưQÎưø4‘PëË?äÚÅ.₫₫7¢LiÛ Ú[«X}8A8\Œ— ÄÊ Xû¸y¹“3¯œăä §é¾ƯËûƒƯˆ²…’ƃ¸AöŸ=ËÚÇ×øè_'ñ<ÄêëqÚd¾®@÷ï¬@„gç3 ¢ˆ «Ốogøë|üûßăPtæ§7h:v »Tà̃½›L]é$̣‘MÎă”àñúØôz¸Û}‹k®©É1ô.~µ…9B¥å8¬–ï¥É]UOcqé߸úû¦7À"A*™ÂSÚHu]Yù“uñÑï²X„, ËMgZ±˜9†o_g±£‹PÀÍæÊ,̃x n¯×IWo'̉+ăcܾåÇë²°:»B´¼»ºĂ¾¢ÅAĂvf/öđáïS(ú& ›*­'±Ê…âº?ëÆdó@zkŸ^%,eÛc&RQÉâdßÁ\¸x÷³ŒUȳ´’¡ù́ úá„ÇGEDÉBmûFß»ÎG¿ÿv©ÀüL†¦§1“3t\è¦'Å.é,fD ́6 a“ÎO/ ·Uñ°ă:Ư·ºñ¹m$çç —Uâ°ª»LưVj÷·1ü₫ ₫í×IT}ƒT̃Æ™†"ñ #·¯̣ñB?h,c÷îà«1Èo¤è¿zén˜"Q’²²(§I÷‡ï0îVÑ7×p›ôßíÅ^-b:c=Ưd¦ûHNá©ØG<âeD‹A@Øb·è.HV¼+7¯à2j1·ö¦§¬ú>î~üòöøI¯.b¸Ê8uª‰¡[×Xî́"èw³±<ƒ¯¤—Ă₫¾W$j¿B¤ù4v·§Ô)(4œyÄÏÖg’…ºă? ¬ơ0ù¼¨¨[Ñÿm8ÊKu\N•œ?Æ¡—ʉFƒäĂîvRÛøñ ›"!M'_¥ZSq8TÎựW¤³¬Njs5ơÇ6Ñ4QV°;ß©Oîw«7ÎÉׯÍtѪ$Xlv,j1ăÆWÖÀ+¿('“É!H26‡Yq6ŸÂW.» xÊxëÿ(E3E\Bđ$ñ}ûÉå5Di‡‘Ú¼¯#—×Ṕ-ƒ 8¾&Kÿ÷ÿ÷ß$IWWW%R^†j±|m §ZlKJ ½Û‘Đ’¬âđúI”—ˆ–H„‘°8½Ô5E´¼ ùKt4D«Íö˜à%«ÍúX*¢ (ª«Í†Å¢n]P„âûVÓÈ3rû:]7î°4?Ç@ßÔP´`·Úv¹Ÿ·SuKhIƠfC–—j±nÿÆ×™z›ËdY™a_C6Ûó‡=ê²²¾N¸4ñ•à ¢„j-ÎÙjµ"Ë̉.¼’¬`±Ù¶ ƯÛ®%‹u‡‚ qX-Û¹ộ®µwÜ₫\‘%Ơ,5){ùl–¥É)öíÛ¦§`¦ùM ô‘‘>üô<-§Oáø’Béû É¥%ú¯wđú«?&‘H|)+++üî ¤±è^9Øï-˜¦ÁT÷;üö“E~ơ₫ Ç̣=¤ÉÀí;xe…_xY~>ƒåƒ¸ÔÑAÛ™SX́ö?ç(¤×b5•F²¹)­©+*=ßÂKvje•Á7ùéO~‚Ï÷|dĂ0è́́dhfæăǶ-?{ë«Iú¯]ç?ưé6=å=²́Á|?A¶y)-÷Zưe‚  8¼Ố?´G‹=Øè{°ß_Y ­?Ê* l6ËA¾“åéIR“xyÖ¯!Ç4MtƯ@–¥?Ëü–¦Ç‘\1œâ&³Ë:‰²đgÆ|™±ê¹Mf'§1,>‰à¶)ƯÔóLOLá‹•}©”f±¤$ư»-+â·‹M´BMÓù&Z¡À7ëxøüÅƠµ†a~K ­ ưIô2 M3₫"Ç₫é’Ưnư’‡ˆ‰¡k躱µÆ:Z¡È·_ ÿ>¿·X_’ÙIMöóoÿí¹vơ.ËÉ̀WÏ÷¦Irüw®w“)|ÓûÛÄȬrưư?Đu{„…‰Aôö³‘Ö>‡ܾÚE¦ ?÷¹5Ôñ1¿ươÿ¢ÿ₫™]9₫ùµ)Îÿîw /₫;éj’^œäöÅk¤̉ùïÎ Ư4M–†îpơÊmœ‰f>€ókË75IÍNa8ƒØe.}rƒÊƒg©*ûs70Ñ3«t~z {éAZ›K¿eæP“äd·f9ôƒs=Ÿ% LÖç¦Đ́A¼N™‘ÛW˜Hy8qj?åËëF!ËÜôá²’ç.±k:‹“¸KJÙœ¾Ç; ùÁYëwáÔ&5;‰á ăqZ¿Q̃5 iz¯_!m©äĐ2î_ú€₫±uÚ÷“]Çmư“ù×4 –''°GX…,w¯^¦àªăàÁª§̣ư¿mJîæÊ +膀+%̣¢o,19Ÿ§¢*$B69Ḉª@Y©™ñIœ/ë+Kä ™HY)…µVV7°yCÄb̀gâ}’†–gyväZQµÇqÈw‘8XSj:©Å9—’Hg1p̉"ƒ^`en†•ä‚l!/Áă´‚¡±27Ăjr$•@¬—’§ïÆ úFÓØ£aêªJÉ&w7¸5̃¯ñÓrtüñRJÑpÚeL£ÀêÜ +«ÆÇ¥êôƯ¼Á½¶h„úỤ́]%„M ™ æ¦i¥V—hIme₫{Ab¥%OX8L²™ ùLÉÁ5²%Êđź`ê¤çY\ZÅDÆă÷90H-α´´†„7ĂïR¼ƯEWÇ(‚?HsK=¤W™›]$¯Ø="±0Ês†Å{º–aøv3Iƒ3'J±)›2` #¢È"˜ÆvU$Q’‘$qëÖ¥#Ëbñ;AD–% ]Ă0LDYFz"BϦè₫èc¤êĂ´×Y¾Ÿ@Ăq´ByÇ´bÛ¸Qz¦YÄ444]@‹&A·ïoÏx4¶bD¥‰¡ë[7I–E0SC÷ñ9ö}³ô× h¦„hjÈȆ®k˜æÎø ›Ë<¼?Dëé3[sôLqMDQÄÈ­Óưñ'å9v¢‰P,NÁéF254]A–„]7f}+Rx‡NϤ³i²4̉ËƠOû9ưË·ˆøÅÆ&Zqm§í.íwi‚«oDÓkoâÜXäáưöŸ>I!ŸêÓ4Đ5Ó4·ùë©[¦aèˆ2’,bê:º®ƒ°E§m³œ¦oñ¤.ù´P@VÔ­Æ$&ZACV”í"4E>$y;Êv÷Øñ—MqëĂQêrôHăc›~7ß"ˆH²„¸E/ ÓØ§,o§–=9ñQ&¦áŒK–d+‘D 9Hve†{·±4œ$^VFƦ£|»pj˜ç#ˆÅeÛóDØÚ£KÎ̉ñû1Mµ1¢¥%lħæ/›ÎlƠxlï "’Rl†c&®Y¬l&Ỉ×…b’|ÀoŒ&Ù‘LAàĐ˯ă^ëæƒ++üơÿ₫×ø]“÷®đi¯ÄOßlåÓßưÍUG̀k2?1¦(/ ‘N­0¿˜çô/₫¸¸Ào„&9m ï4ƠF·÷†©çé»ô]wF°ºÜè™MpÅ9}æ«‹‹¬­&I..³±‘ǦÊÛÍp¦{¯sáÓ›’™ÏáH4óÊ瘹ơèµî IDAT ưXœnŒ\Ưä…7_£0̉Á…ë°;ù4†=Æñă,̀Œ2¿ 0?»ˆWÜàꟗ́È‚N&/pđå7h®‹|½åaM“¹[\êL+‹’zxO¯öau80ót[˜ă'ZYœe~Ac~ṿ̣RkQ@6¸đû?2±œÇa³^Ki>Fk¹…•ÅeR$—WÈk±Ç ‡™…Mî^»Æ¤]cmq)RÏ¿|̀XŸ~ÜV7’Q «){í-‚…1>øđ*’Ơ‰¨çÉ v:Ị̂Ü8³óó̀ÏÎQ¶Ñư₫;¬äU,2d̉9jNüc‡jK©•¿®Î́ƒznơ² †X˜@L̃gh4‰BG¼‘Cí¥Ü¿~…±ÉtCÂ)åàÙS¨#\¹v«ÅNnc…´&S]_Ăúâ ËK+8ă œ~áÖGÅô½ƯǗ́ÀºEƠ«ĐLƒñ»LßJ’ÚÔ(k9ÂÑă-È‚ÁLÿmî̃}ÀÆf‹+@ó‰3T%ü;ÊĐ™́¹Êí₫%œ6™Íµ$ä ớ‹T—x˜¸Ă­®^Ö7ó¨6UíGhiª °6ËÍKW™_ĂBåu9s„?ǽÑ4 ŒÜ¾@ïĐ:*9Üå­hÓưă“  ‘@Y-GNyJ »íCÓä g0ÎÁS'ÉwÓƠÑ2›ÆéQ°m1²hec2E’g~pU„…‡]tơ-rđ́´¹~îƯ`#Ăểṛ qß¶@É,ÏĐÛq…(ñ(ÇÏœDX¤ëÆ=R9«ƒÊ¶#´µ́4,Ñ6×xØu®›]lzTG Z†K³±²Hͧ_¤©6©exĐy•Áái²O¤ŒCgOpí4_1 iî]=ÏÄ\’Æ£4”[è¾|ÙùULQ%^ס£-H…Ư>e|z«ÇE) +q́săÊ=N¼DEÂÍúL?W® ̉væEB,·/_ejv…Hu#GO´c‘ ÆïvĐÓ;L:[ÀâôQè(êê7;:±/çqºí4ï«@‹JäÊX7;ï²¶ARí”·¢­!L÷Åó,­ËX•kÉPÇ_¯cè–Ƈɩ!~ü³×pYÆF¦ñGTÔU3¯ :º§Eܦáü@Ç’¼đ7ÿ‰º2/£7?à½ó7hjû[jj+Q”Jiz*Á4̣„+kxåå£l wđ/ÿÚÁÜô“×o`„xë­ Vy÷¿ÿ?ôÜé¥ÑµÀjÖÂO~ùsB“©‘1ܑֆ:"Sv?‚²ôÉ©eǘ?ÓZ`ej”´́~nEô[áC‘`YñrƠµÔ6Ö"åæé¾Ù‹âKP][Êx×:nOPÖz”ƒ‡›Htsở-̣¹uúñ$#Úi9rcy€O/táŒ×ÑPg¸ë*ăs;eûI&ˆÅ)¯o¢¢"™Ya=§QÑv˜Ê¨…î‹—™]J³>=È….'Á‘3Çqjó\xçcVÓ…Ư®Hr©º;ï‚+ÆSǰ䦹~₫*«óă\|÷Crjˆ#çÎu¸úÎûŒO/r÷“÷¸?ºAñӴ6•1̉u®î?“W ½̀ôBêC'hk«fæöez† Å#„KT74Qơ³<5ÄüâKƒ·¹đÉ \‰=†%=Yä´FnmîÎ{à̉~â(br˜›×{XăÁúC=yEß`zb–¯̃%/à+«"î¹ô›æĂwΓ*X øŸë'Áh E‘±»¼xœ.‚A²jĂ© d³¾̉*â"̃̃̃Âxoz}dJªJQg8ߥ°”Ln¥x ˆ̉ă–«B6Ị́̉áŔ…`e /₫ø¼V“ƠTxM9UÁˆ̣ÚXMm®j@Mñίÿ'W.ßFqp9,H¢X´H2̃̉*J—ó?ùàíó$óü~ßdµwQR‰V7`MOñî¯Íå‹·~ÜNuKÑß±nÙkY™_Ât†ˆÆȲB¸´)—"™Î#nI’¤§ S‰ª‡xY%v‹‚ÓïCu²›)–×UVà°©¨.?±X€ạ̈îD-!K₫åŸ8ÿáUr¢ ŸÇV´nY¾œÑª*ĂÜyï_yç·ï0µT ̣=Q‹ÿ[.ĐA@uzđ8mXƯ~BA¢(â„h9v˜h@ẹá ªföh¦ºµúÚ8³##¤óV»›Ê}M$ªª)‰EqxÔ5×QQ[‡ƯÜ`m3ÏîcÙêñb³(x‚ÜvYuR̃¸ŸÆ–F4"ê¤7Ó,Œ0»œÅă÷¢ià úY›aiuư …DÀẳØ̃B¢²–ÆÆZV&Fa6 Í'OSYWKÛ‰£X²‹L224MIÛa›ëh8r”ʨ‰áqr¦ Añ†#´8BÈĂ}1l.ª€dwáu&GÉî ns…â4´¶`5VVÖ1 —í¬O0²SüD(©oÀ–_`rj™lj‰ñ©*jYŸb~5×ç)̉9àcur˜•äÆc˜ÇïAVí„"!6ç§™^Öi>uªºÚNĂVXfv~i»ơ„ ˆ¸~ÙB0Å*‹8}Aö:Bmcu 6×’ä³›Œßï'ƒ·CÅ”¬¸*SƒClæhJ!Jå´̃Ư\g  ƠÀ"hX½>”Â:ăC#L bVÑz …úöĂT–ƶj¦?{cæ7Wº?Œạ̈a“ T·«™a|pŒ"’`²±²ÈzN áèiÁbUU<¡n»å±ư$ɹơ$+É4ñÆCœ8{ ¿Ç¢J¸¬}Í5T¶ 4`azt˜á¾~Ö5 Ó†!Zp»l̀ ²¶bb`OM3mZÙö‡¼üÚËÄĂîíºü®`‹"ăÄp9”-S{Ù¡AL_‚ö£‡Øwô,?üékTWD‰”W³¯©2k¬¥2h™ Ë)l^?¬àF±[Ư†4æGÉÚ"´?By]#­‡Zؘgu#‚ˆ'¢q ñ*ÊÊ}¬,¬¢ ‚Y ¹0¦x8ôƒĩW₫ƠûâG¤W₫Ă¯8÷Â1\R†koÿư[7ÀGü¨å Ûơđ„¢0,2¢Pt‰<ªÿIï_ñºå-¼ưè»´~Aî…GŸ™&¦iđ¹µEQ0ô­rǘr9 “-·Ï.Ă40ˆ·çÍ¿ûØGaeŒ÷ÿù7 Œ-m¿àˆṾ̣_ÿs/À­d¹₫Îïé¸qó•%Ѧ#üä?₫ ‡5¡¯Ṃ₫¿ü†₫ÑÏ.L,n¹¾­”iÅ₫_|h>¾§·º°‰»i¸å–4MđT4̣W¿ú§ND-¬páw¿ávÏXñw¶ÖOq†8ưÖà‡¯½@Ô§Đ{é=>ưø:9ưù‚¿ƠikƠ]́(edIoæ±T:‘„âAms8(äÈi‚bÅbQ¶´Q›Ơ$niV‚‰ñBR-8âfỤ́Ư†A&e#µÊdß]æeÀ0ˆW•¡ÈÂSL$[œÛƯ¯T›Cϰ±™Åd́vÉbG ÖÓ›dsw±l¨ ÈØlV²›i₫|ÁàªƠE0̣Éḳ<÷»n#‹—X‰Ó̀Üạ́ÇxUDCnAÀøœ Øü¥”Æ\Œ ÊæY×]¯³z³›Ô*ă}w˜‘泒ʲm_û3`>‡!ÊØíj‘¶ªE‚tîó#E%Ơµ]2UVe0 Sg#µÉúZ‡Ư]º•DEäi‹‰ a³»‘E¼V`3¹†1?AÏÍ0Áâ ØH/äQ|öâ­@”°;U„”đL“m1°©ÀF2ź4MïÍdq¬î¡¨ÅăÔk¯q÷Ö]n}ü.º RuàGÛ‚Ï> ,N¼̣c„.v^àîe“puç~Đ¢ŒÍáB„be;U!—ϰ¾¹ÉúZ†Á;]ˆL¢2©kd6sXvD³bå˜ù/²’Ù̀¡ØíHR±’V0Q¦Æƒ —¹|kœDM >g±™̀g̣ĩ̀!Û]¨JQŹNĐ²¤ó:@V]¨[.5Y•0uoy#g”á~Ï.ÿ[’ÍKÛ¹Whi(yîÛÎózç‡û™\̉¨oÙG¼¢ŒÍ¹ÿÎ̉ÜuDm”Ôú&Agfj‘Bá9˜E¼ÓË»đÎÿ¿,Í-R0@’ÂĂîöpJL<¦&bgsj˜åM–P‰ÍÏ8W„Bnf¬’y@g÷8-Gù¬L=¢±ÔC~aŒÅµe­nÆîv£9¢Ô´¤$ágöĂZr « R(dH§Ó¤ǘ\Шom ^QFz~¥Ù¥ñ~ÁZ–á;}d-!jZPR`î₫k+IÜ¢ŒVØ$ÎâP¹^$üñr× ¦Æçp”û˜@t º́ŸAÁϨáh€É¡!’-e(Ù¦fVU5°4ØK2k¥¾©…’̣8«ÓÿÄÊâ Á „aäØÜÜDL­20¸@M[3J+̉ËÜŸ]$§Ûnă¿X₫¨.¶ )¸½vÆ—–Ñ QĐX[]Eµ»·¢¦Ÿhø<ûƠ¤¨¶ơÂî̉´/§ÛA –àè_½EiĐÛ$™* {ŸB–Ϭ±‘ÍăsH¬'W-nü^'²–cm-C‰G%¿±JNñºÜd*©¥U ³A˲¶¶ƯSÅŸ³« ƒ†DIÅöc[yơơS("l$—Au“Ÿéxä@gvh€´%›o¼“5Rƒ],í̉$ơ'¤¡¤:¨®¯äăûÜY1p•Ơñ;ĐÜ.‚±R¿ö3â~+Zvƒµ `Èư¤Îf¿ÍnC6̣¬%Ó˜> ùÍU²8mÖg.¶±ëfôô¼¼Q{”—ùvU$›Z!kØđÙåÏäKEµâ ñ́?Á+§ö!˜:kË+¨N÷gî2¹¶FA7+KÅÀJIDÄ  o₫éµ…¬†¤Xñ†ø÷æ¯^lGÄ µ²Œ́ô£Y kÓo₫=½FÏå÷éî¸ImƠ [s3Ÿ‰ÈTÚ_zĂF–ñ>úđ&S % X_[¡`˜(Z–Í öˆ¿ÍC„^øÙ[¸m¹ơỦß#ặØ™ÙÚ{̉ ö<Ä“ˆ3ɸ¼rÓ+ạ̈:VÁ`¬¯\Æú`/?ÂK¯ŸEON0zó̉®4·'æ#H¸¼´ñ5̉Y ‡"³‘\ÆT8T í™kj’ÏlâŒ×ó£æCl®̀qơ¿ẵ{ÔÖİ•›L‘Đ¿s•»7“‚७¹†HH§Ôßǵwÿ€Çă&5pº­˜€ÍáÜơD›sÇ7®Ø˜„$¿»ƒWĂCkS q笲øJ8xê(7owñlj»˜F´ùơ%lNcw<]5N´¸i>u’¥¯̣‡ÿ6„`ø*Ûˆ–× Ÿ>IGç]̃₫§~L]ĂSÓFkK ‹w/sçF7÷®¨¦†½´²º8‹vå—Îw̉Xábü^÷¶è`zhk®Ạ́5ÚU›E$‡CGè\{·è¹¦"˜:–D-å• „¹%̀µ¹øñUνt† × „k[imœæ̃ù·¹¯Hh–Óg‰́L[¬XŸỸWÀîpl­"ˆØd‹‹–Ó§H~r÷ÿùŸLÑ[É‘#ûç{¸q·Ôb‡BgŒ¶ú |æ,6ư—>¼Èáö*†î0xÿ.²$ k: í 8³†À_DaA¶RƠǛĐÅ\½`Ă%f_¥fÿAœjîK8Z6‰±¾;D́Ÿa U5é¤ûÓOX­ˆ²46HÖ–à̀˧ñ:_äơåî]¾ÂbĐÂ@÷±ê#”ƠÖQQr‡ ‘«K°8Ô‡©¢º®×Ú7ûn̉aÍ!ǹ3³.Ñz¼ơ[§&YÔ4íăbg×.x”£#3T:CB1·Øá÷Âà8}7oÀæ2K9̉¹I¦öa·JŒß¿Ëh‰o—0‰Ô4`ùôư³"?øƠ_a‘$ÂƠ „º‡é:ÿ •åaÆ(8*8ử <ö:+ms‘{Ư½́oLPUê¡÷âGhóå,ÜG VPQúxD­(ÛIs¿»›*ÿ³[K ’JES3ưvsíü%Â^…‰ÁaüuG8v´U~ö¨îơMƠܹsNR(¹ƦR´{‘hM ƯtsơăOq‰iƦfѵ(v/!¯ÂĐ훨›a¦úGYÏ(uMµtövq]Ía7RŒŒ-²ïÔK”{²ÜüđJ¸ŒXÈE2•Åéơ¢Z¬8l£}wH”©Lø-“¢ïêy’¦‹̣ë +Xn, : cCܸp9»Èd̉äÀÉZ*T'ß¹ÎơO/ؘÂ]y€ăÇ›¨h¬gàâ=.|``É/12¶Æ‰7~üùV]Q&^߀üà2—̃û€€-ÏÀưI_ú!΀Ÿñ…qz:;ÙXc=o¢²ÔІE*đđN7[Û–T"VÛˆ·ç#:?ù„DÄÁè½~¢µ„¼f?C[_äVg‘Úz¼Vƒ´&฾r“» „jÛx5XB2¹ˆĂëÇçs!?üÛ¿ey%…d±ăq#¹nâ{øÁoá F‘DÓ!~iÄk“qràƠ71\Q|N…Wƒ ’ÉơÇñ Ó¹æè9Â5ͬ¯§-vü¡ EÆY¿Ÿù* 9Ơ§Æ­?Äëá VW×U;h‹"áh?I ¢µÔ&¢bĂ aUe'_$ZßÊÆfQRñ„B8LÏ ~î¯@“lDc!J+ª1̃¯ăLm~N¼ú¢#ŒC̣ø×mĂ{üµͬod%w0„ËaÅôáçÿ%AA´âsíôAm^¿₫ơ Kdr6—À‹$@ó¹Q%Ú±Æ_•T³–Jƒ áôđ¸¦Ÿ7ÿ‹—LA$\§¼¼Œ•å$ºV—Đ÷Üiºß¢æ,&…\G0B,ÄỘÈv?¥å1TYÆMàuH¬.,°™3)k>ÄĂM(hè‚•’r6™B6Í"^A0u4C TV‰ÏeƯid!©XU‰Íơ §ŸßO¼¼˺•¾¥PRQ?& M­²¼¸Œ́±ïÀ"~Ç.&5Ýg*i£ºÜOrqG¬†#gă÷ùˆ'"6“,/'±øâ:s†’°‡`¢ «T`e~‘œ©Rø-M•ˆè &x9Á'`¾¶æ,¦‰VÈ¡:C”–G‘%_¼·M`uaÔFHU-µ(h˜’ƒ̉Êr"ñ0b!Cre ›?FÛávd=‡Å%ó“ÙØ@qùñ{íØ<¥!T«É,`‹UĐÚ̃ŒÍ"£:}Äc2kË,/® º#4l'́Û‰H°ÚíPÈÉC¸¢–ºÚR´ôËË«((Ïœ¡4âyŒfņŒÆúF§?ˆ×¤¬² ‹*¢̣ˆ¥ ü±•Ổ«É ¼%Ơ4·7ă´)OđhG „XÜ$É„Ëʱ–æçIçÊöµP__/Å©¬.-aª.\Nµœ—ƒÇọ̈ÙI­®Îø¢%Äqå”ƠVăPt–ççÙÈè”Ô5³¯© ‡ÓM…ä̉+ËkX|1œ:I,́Ǫˆl¦6°¸ƒDBÅFD¢bÅíTÙH.±¼°Œ©¸i:~’ÊC=wQ}ƠøíÉTÊÖ#´í¯ẶÛY_^deew¬‚¦öÜvo¬—Ơde~Mv̉t́$ua´‚†+” r¢"á ¼v…|ÁÀ+§¢¶†€×ÂÚâé‚HuûZ[ë …}hIR뼉jÚö×bärxâåD¼66628aœv H‚̣ºba+Ë$×̉øÊ8zú‡‚VÈmŸ$PÈçPê[êQɱ<>/vÛNĂÅjÇăóár;Q-vÜn;‚(áôxP•¢{OR,¸<Îb– `uy±YäÏÄû,‹‘ƠáĽơ;²TL7e—Çừ†+p{ü~ÜWñ-\û#\®âíW(ZïlNwñy¯§Øl«QŒÓëĂív"âç÷«nÎ"6—«EFRm¸ƯÅsùé±*[ŸoƠăÚ¹Y?R$‡ÛƒÇçĂá°muÁPNö§é.ˆ.§˜N½¥X¹½-Ú×Ưíóáö¸Q•bºà#Úz¶èc³ª[|"bw{ñl½¯XlEúwåYnÇo{sÓ00·6L³HPlƒº³¸†ûhĂ˜f1ßTØÊ™-¾'l-˜‰aÏl¥jF1pA,æ[ ¢´ü8¾­ß,fûwwđè _ưW̃¿©óÿëÏpÛäÇ{úư]¹½ÛóÙ×,fŸøøz›³<¢÷îCmǵó‡wͧhṽ5a‡₫<ún‹¾ÅçvÖÄ4w¯Ư-M¿ˆÎÛæXc÷xØúÿIÚ>₫i˜ÛùÛÛcxǃøÄ¦ßÅ£}WÄóä:îâ1S§ïüÿạ̀`€ÿí¿¾†M)ÖOxôü³ùm‡æŸGŸƯ|, Â3Önçy3·Æ;ÿưÿBOüˆ×~Ô¸E„­Üđ'æ_<„„^5vÿ6[ë(}=‡Ưük> ̉zäÖsˬ¾5ÇGtDq+¨ËÜù{û<Ø¡Ëccxj ·ö¿@1ÈÉ(®K±¥ëẵó¿øæ,a°×œå«…o}s–Ưü³çg̣‚ HÂă₫Ma—æ%JŸíŸôƠ®ˆ§ñ _h2T;n ˆˆOD|öû;‡̉S¦¤?ƒÙưO¢÷®xAè.í|'íë®¿Å§Ă’‡ÎÏ¢ÍÓêñß{\Ă|ÎϵÖÏè«₫lEb‡ÇLĂDRx¶rr…­€´“ÿóÛg¾‹¿ày°9½èQỵlüB^•¤Å]wó½(>9Ÿ'_ºũßÍOÂăëö™óư¿€đLÚ́Á|Wa¯9ËW Ë[Ïà®·}œ{đ,%@¢öÈK„›UlÊŸï†!X<ûÑ[˜ª½k{°{ư/ ÷&<~̃mºÿw“ÈV!ë3íÁgóˆb÷ü3[gAÀé́-ḈÁw¾³ Ó4I/Mrưƒwé¸̃K6¿Ó)GÏ&¹}ơS³kÿîÊl¦©³¶¼úTêĐ́Á́Á́Á@ÿ»´ć ÑéºÊÍ®û˜’̣˜_OÏ®q÷ê¦çSÛÁ>;·ù]¸>ëss'lczˆkï~̀b2óØçÛÏíñǾÁ́Á|đor7MƒƠÉ!ô °)`u¨mkC]Ÿäî­Ö³.ôBM7oƯ)˜¬M q}¾‡ơMx] MM• ¥ºw‡É©E d‚¥U4¶Ö£’eđΦ¦Ñ‘$*©­̉×y•®Î‡ÁGO&?7̀ĐĐ8ÙœƯ¡á@;·uÏg¹{°{°{7ôÏç¤Çøøo3¹”Áđ±:r‡₫đ9ÙÓåÆíơá xQŸF2r)ÆÆ§ĐD æÆßư€©Åu†;>æâù.L‹ }î„IDAT»¢qû“wé́`ºç—/̃»· †îv3:“BµÊXœ®bÚ@jËï}ÀrVÆçw³8̉GχtcÓö`ö`ö`ï†₫9×s–F˜[xư¯Rq°³đ/ÿă)N‹I¢T×”>Ơ ^duMœ|é¹¹0#ÿđGVæç™é}ˆ«æg_9b¦ÑV¦y0@¨Z"“3đ†¢T•ï§v‹ËÇÇî\§ª¡55Fz#Çă§t_5ơ-Í;¸w?߃=ø.¹å‚3Œ=eưùkăßCp ÓDØ£÷ç̉ó/Üän°‘Ú» —«X—×î YR™Ïỏ!(v|ÁàVe- ’Z>Cj-«%ˆ,‚€Çç!3¾N áEö/¯Ó{é}î¡.¯åĐÙS»1âŒWqä́QîƯ»Á;÷:p‡â4Ÿ8ƒßçÜă¾=؃Df}ƒ₫›]H̉^ªêóB!ŸG/₫¤̀"AE‘•ù9ú®]‡=çå= y´Bá»$Ь6 f.K.¯a:$ ™MtAƪHd¿à]ñÉ¢(¢‚ͦ]ß(¶4u2é4²âGV´¿ôm…4 c¹üÁ%ºĂă,m9AeÛ1V¦é₫ô#:Î_%‘x—å[FjóÉ´¾=؃ïå5çO~%‹qöÔ)̣ùüư₫D°Ûí8?éÊ­²¼{Ö§Áf³át:¿#] ”Uà•ûé½Ñ…YeøÆ-,¡r¢~c":Ùâ ¼¶‚{è/÷aË/32•¤¼m?Kºx8¾Á¾-X́N¬e«^²#Ÿbbd Í¡q§ë>%M­„=Öb§£Mø6ÊÍƠÅÅbẵ=؃ï1l¬­á †₫¤wû÷ïßSˆ¿̀‘ư\!>  ÷ˆ÷ôùNƯĐ=‰ξ¼NOÏ ×&°8œ{ư!Êr8N\ó>]̉TTˆWVm7̃$ ¥ƠƠØívÊϼL+<́¼ŒL¬ù‡·#­O35y®ó!ˆªVjÄe,QSqŸá¾ûN&°2tó2 ›ËDZNà²|{êOÚívÊKK™›c)µ¾·#öà{ Ó$#ư »wí)ÄßF%à{M«oSs–/ ¦i åó膉()(J±¯·®ĐQù‰çṂ¹,jE‹rÙ,ªơÿoïîZÚÂ0 ?û1f% ưÿ?̀kAj»»̉Bă4b5Èuå`70¸gCÈ;́M̀sÆqL̉¦/%íï#ó4fœæ$MúR̉ơƯnRÙ¯‡̀ÛädX$ÛƯµµ&m×§”₫Ư6ă{ g©µf&__ÁŸ§¾?(èp´{ùkœàڔŧcè»r’î•ßb8Ư{=ü5ίíú,ưØ¥ÙƯ¯<»Ù₫{¿xíqvK)v>Àc: 耠‚‚: 耠€ ÇæĂÿ£´ìă”›«ëÜÿ¼ó àîö6Ûi¶|~ĐW«U¾åÇåw£êTkÍÅùyÖëµÅ`ÿù£§­ƠZ³ÙlLûz£¶m³\.àsƒü‡>K‚: 耠€ ‚: è 耠‚:: 耠‚‚: 耠€ ‚: è 耠‚ü³GƠ˜‹ ÀrIEND®B`‚nova-2014.1/doc/source/man/0000775000175400017540000000000012323722546016530 5ustar jenkinsjenkins00000000000000nova-2014.1/doc/source/man/nova-baremetal-deploy-helper.rst0000664000175400017540000000236412323721476024734 0ustar jenkinsjenkins00000000000000============================ nova-baremetal-deploy-helper ============================ ------------------------------------------------------------------ Writes images to a bare-metal node and switch it to instance-mode ------------------------------------------------------------------ :Author: openstack@lists.openstack.org :Date: 2012-10-17 :Copyright: OpenStack Foundation :Version: 2013.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-baremetal-deploy-helper DESCRIPTION =========== This is a service which should run on nova-compute host when using the baremetal driver. During a baremetal node's first boot, nova-baremetal-deploy-helper works in conjunction with diskimage-builder's "deploy" ramdisk to write an image from glance onto the baremetal node's disks using iSCSI. After that is complete, nova-baremetal-deploy-helper switches the PXE config to reference the kernel and ramdisk which correspond to the running image. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-rpc-zmq-receiver.rst0000664000175400017540000000165612323721510023414 0ustar jenkinsjenkins00000000000000======================= nova-rpc-zmq-receiver ======================= ----------------------------------- Receiver for 0MQ based nova RPC ----------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-rpc-zmq-receiver [options] DESCRIPTION =========== The nova-rpc-zmq-receiver is a daemon which receives messages from remote systems on behalf of the ZeroMQ-based rpc backend (nova.rpc.impl_zmq). Messages are pulled by individual services from the message receiver daemon in round-robin or fanout mode, depending on the queue type. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-console.rst0000664000175400017540000000136612323721476021674 0ustar jenkinsjenkins00000000000000============ nova-console ============ ---------------------------- Nova Console Server ---------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-console [options] DESCRIPTION =========== nova-console is a console Proxy to set up multi-tenant VM console access (i.e. with xvp) OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-consoleauth.rst0000664000175400017540000000140412323721476022547 0ustar jenkinsjenkins00000000000000================ nova-consoleauth ================ ------------------------------------------- Nova Console Authentication Server ------------------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-consoleauth [options] DESCRIPTION =========== Provides Authentication for nova consoles OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-spicehtml5proxy.rst0000664000175400017540000000154712323721476023412 0ustar jenkinsjenkins00000000000000==================== nova-spicehtml5proxy ==================== -------------------------------------------------------- Websocket Proxy for OpenStack Nova SPICE HTML5 consoles. -------------------------------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-spicehtml5proxy [options] DESCRIPTION =========== Websocket proxy that is compatible with OpenStack Nova SPICE HTML5 consoles. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-api.rst0000664000175400017540000000147612323721476021005 0ustar jenkinsjenkins00000000000000======== nova-api ======== ------------------------------------------- Server for the Nova EC2 and OpenStack APIs ------------------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-api [options] DESCRIPTION =========== nova-api is a server daemon that serves the nova EC2 and OpenStack APIs in separate greenthreads OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/api-paste.ini * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-cert.rst0000664000175400017540000000150612323721476021163 0ustar jenkinsjenkins00000000000000========== nova-cert ========== -------------------------------- Server for the Nova Cert -------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-cert [options] DESCRIPTION =========== nova-cert is a server daemon that serves the Nova Cert service for X509 certificates. Used to generate certificates for euca-bundle-image. Only needed for EC2 API. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-compute.rst0000664000175400017540000000162112323721476021700 0ustar jenkinsjenkins00000000000000============ nova-compute ============ --------------------- Nova Compute Server --------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-compute [options] DESCRIPTION =========== Handles all processes relating to instances (guest vms). nova-compute is responsible for building a disk image, launching it via the underlying virtualization driver, responding to calls to check its state, attaching persistent storage, and terminating it. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-rootwrap.rst0000664000175400017540000000221512323721476022101 0ustar jenkinsjenkins00000000000000============= nova-rootwrap ============= ----------------------- Root wrapper for Nova ----------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-rootwrap [options] DESCRIPTION =========== Filters which commands nova is allowed to run as another user. To use this, you should set the following in nova.conf: rootwrap_config=/etc/nova/rootwrap.conf You also need to let the nova user run nova-rootwrap as root in sudoers: nova ALL = (root) NOPASSWD: /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf * To make allowed commands node-specific, your packaging should only install {compute,network}.filters respectively on compute and network nodes (i.e. nova-api nodes should not have any of those files installed). OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-scheduler.rst0000664000175400017540000000127612323721476022210 0ustar jenkinsjenkins00000000000000============== nova-scheduler ============== -------------- Nova Scheduler -------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-scheduler [options] DESCRIPTION =========== Nova Scheduler picks a compute node to run a VM instance. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-dhcpbridge.rst0000664000175400017540000000164612323721476022326 0ustar jenkinsjenkins00000000000000=============== nova-dhcpbridge =============== -------------------------------------------------- Handles Lease Database updates from DHCP servers -------------------------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-dhcpbridge [options] DESCRIPTION =========== Handles lease database updates from DHCP servers. Used whenever nova is managing DHCP (vlan and flatDHCP). nova-dhcpbridge should not be run as a daemon. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/api-paste.ini * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-conductor.rst0000664000175400017540000000135712323721476022232 0ustar jenkinsjenkins00000000000000============== nova-conductor ============== ----------------------------- Server for the Nova Conductor ----------------------------- :Author: openstack@lists.openstack.org :Date: 2012-11-16 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-conductor [options] DESCRIPTION =========== nova-conductor is a server daemon that serves the Nova Conductor service, which provides coordination and database query support for Nova. OPTIONS ======= **General options** FILES ===== * /etc/nova/nova.conf SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-api-ec2.rst0000664000175400017540000000137512323721476021452 0ustar jenkinsjenkins00000000000000============ nova-api-ec2 ============ ---------------------------- Server for the Nova EC2 API ---------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-api-ec2 [options] DESCRIPTION =========== nova-api-ec2 is a server daemon that serves the Nova EC2 API OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/api-paste.ini * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-xvpvncproxy.rst0000664000175400017540000000132612323721476022654 0ustar jenkinsjenkins00000000000000================ nova-xvpvncproxy ================ ----------------------------- XVP VNC Console Proxy Server ----------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-xvpvncproxy [options] DESCRIPTION =========== XVP VNC Console Proxy Server OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-novncproxy.rst0000664000175400017540000000151512323721476022453 0ustar jenkinsjenkins00000000000000=============== nova-novncproxy =============== -------------------------------------------------------- Websocket novnc Proxy for OpenStack Nova noVNC consoles. -------------------------------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-novncproxy [options] DESCRIPTION =========== Websocket proxy that is compatible with OpenStack Nova noVNC consoles. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-api-metadata.rst0000664000175400017540000000145312323721476022556 0ustar jenkinsjenkins00000000000000================= nova-api-metadata ================= --------------------------------- Server for the Nova Metadata API --------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-api-metadata [options] DESCRIPTION =========== nova-api-metadata is a server daemon that serves the Nova Metadata API OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/api-paste.ini * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-api-os-compute.rst0000664000175400017540000000153512323721476023072 0ustar jenkinsjenkins00000000000000==================== nova-api-os-compute ==================== ------------------------------------------- Server for the Nova OpenStack Compute APIs ------------------------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-api-os-compute [options] DESCRIPTION =========== nova-api-os-compute is a server daemon that serves the Nova OpenStack Compute API OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/api-paste.ini * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-network.rst0000664000175400017540000000133412323721476021716 0ustar jenkinsjenkins00000000000000============= nova-network ============= --------------------- Nova Network Server --------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-network [options] DESCRIPTION =========== Nova Network is responsible for allocating IPs and setting up the network OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-baremetal-manage.rst0000664000175400017540000000277212323721476023416 0ustar jenkinsjenkins00000000000000===================== nova-baremetal-manage ===================== ------------------------------------------------------ Manage bare-metal DB in OpenStack Nova ------------------------------------------------------ :Author: openstack@lists.openstack.org :Date: 2012-10-17 :Copyright: OpenStack Foundation :Version: 2013.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-baremetal-manage [] DESCRIPTION =========== nova-baremetal-manage manages bare-metal DB schema. OPTIONS ======= The standard pattern for executing a nova-baremetal-manage command is: ``nova-baremetal-manage []`` Run without arguments to see a list of available command categories: ``nova-baremetal-manage`` Categories are db. Detailed descriptions are below. You can also run with a category argument such as "db" to see a list of all commands in that category: ``nova-baremetal-manage db`` These sections describe the available categories and arguments for nova-baremetal-manage. Bare-Metal DB ~~~~~~~~~~~~~ ``nova-baremetal-manage db version`` Print the current database version. ``nova-baremetal-manage db sync`` Sync the database up to the most recent version. This is the standard way to create the db as well. FILES ======== /etc/nova/nova.conf: get location of bare-metal DB SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-all.rst0000664000175400017540000000141712323721476020777 0ustar jenkinsjenkins00000000000000========= nova-all ========= ----------------------------- Server for all Nova services ----------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-all [options] DESCRIPTION =========== nova-all is a server daemon that serves all Nova services, each in a separate greenthread OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/api-paste.ini * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-manage.rst0000664000175400017540000001222212323721510021440 0ustar jenkinsjenkins00000000000000=========== nova-manage =========== ------------------------------------------------------ control and manage cloud computer instances and images ------------------------------------------------------ :Author: openstack@lists.openstack.org :Date: 2012-04-05 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-manage [] DESCRIPTION =========== nova-manage controls cloud computing instances by managing shell selection, vpn connections, and floating IP address configuration. More information about OpenStack Nova is at http://nova.openstack.org. OPTIONS ======= The standard pattern for executing a nova-manage command is: ``nova-manage []`` Run without arguments to see a list of available command categories: ``nova-manage`` Categories are project, shell, vpn, and floating. Detailed descriptions are below. You can also run with a category argument such as user to see a list of all commands in that category: ``nova-manage floating`` These sections describe the available categories and arguments for nova-manage. Nova Db ~~~~~~~ ``nova-manage db version`` Print the current database version. ``nova-manage db sync`` Sync the database up to the most recent version. This is the standard way to create the db as well. Nova Logs ~~~~~~~~~ ``nova-manage logs errors`` Displays nova errors from log files. ``nova-manage logs syslog `` Displays nova alerts from syslog. Nova Shell ~~~~~~~~~~ ``nova-manage shell bpython`` Starts a new bpython shell. ``nova-manage shell ipython`` Starts a new ipython shell. ``nova-manage shell python`` Starts a new python shell. ``nova-manage shell run`` Starts a new shell using python. ``nova-manage shell script `` Runs the named script from the specified path with flags set. Nova VPN ~~~~~~~~ ``nova-manage vpn list`` Displays a list of projects, their IP port numbers, and what state they're in. ``nova-manage vpn run `` Starts the VPN for the named project. ``nova-manage vpn spawn`` Runs all VPNs. Nova Floating IPs ~~~~~~~~~~~~~~~~~ ``nova-manage floating create [--pool ] [--interface ]`` Creates floating IP addresses for the given range, optionally specifying a floating pool and a network interface. ``nova-manage floating delete `` Deletes floating IP addresses in the range given. ``nova-manage floating list`` Displays a list of all floating IP addresses. Nova Flavor ~~~~~~~~~~~ ``nova-manage flavor list`` Outputs a list of all active flavors to the screen. ``nova-manage flavor list --all`` Outputs a list of all flavors (active and inactive) to the screen. ``nova-manage flavor create <(optional) swap> <(optional) RXTX Quota> <(optional) RXTX Cap>`` creates a flavor with the following positional arguments: * memory (expressed in megabytes) * vcpu(s) (integer) * local storage (expressed in gigabytes) * flavorid (unique integer) * swap space (expressed in megabytes, defaults to zero, optional) * RXTX quotas (expressed in gigabytes, defaults to zero, optional) * RXTX cap (expressed in gigabytes, defaults to zero, optional) ``nova-manage flavor delete `` Delete the flavor with the name . This marks the flavor as inactive and cannot be launched. However, the record stays in the database for archival and billing purposes. ``nova-manage flavor delete --purge`` Purges the flavor with the name . This removes this flavor from the database. Nova Instance_type ~~~~~~~~~~~~~~~~~~ The instance_type command is provided as an alias for the flavor command. All the same subcommands and arguments from nova-manage flavor can be used. Nova Images ~~~~~~~~~~~ ``nova-manage image image_register `` Registers an image with the image service. ``nova-manage image kernel_register `` Registers a kernel with the image service. ``nova-manage image ramdisk_register `` Registers a ramdisk with the image service. ``nova-manage image all_register `` Registers an image kernel and ramdisk with the image service. ``nova-manage image convert `` Converts all images in directory from the old (Bexar) format to the new format. Nova VM ~~~~~~~~~~~ ``nova-manage vm list [host]`` Show a list of all instances. Accepts optional hostname (to show only instances on specific host). ``nova-manage live-migration `` Live migrate instance from current host to destination host. Requires instance id (which comes from euca-describe-instance) and destination host name (which can be found from nova-manage service list). FILES ======== The nova-manage.conf file contains configuration information in the form of python-gflags. SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/doc/source/man/nova-objectstore.rst0000664000175400017540000000204612323721476022551 0ustar jenkinsjenkins00000000000000================ nova-objectstore ================ ----------------------------- Nova Objectstore Server ----------------------------- :Author: openstack@lists.openstack.org :Date: 2012-09-27 :Copyright: OpenStack Foundation :Version: 2012.1 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== nova-objectstore [options] DESCRIPTION =========== Implementation of an S3-like storage server based on local files. Useful to test features that will eventually run on S3, or if you want to run something locally that was once running on S3. We don't support all the features of S3, but it does work with the standard S3 client for the most basic semantics. Used for testing when do not have OpenStack Swift installed. OPTIONS ======= **General options** FILES ======== * /etc/nova/nova.conf * /etc/nova/policy.json * /etc/nova/rootwrap.conf * /etc/nova/rootwrap.d/ SEE ALSO ======== * `OpenStack Nova `__ BUGS ==== * Nova bugs are managed at Launchpad `Bugs : Nova `__ nova-2014.1/setup.cfg0000664000175400017540000002003712323722546015533 0ustar jenkinsjenkins00000000000000[metadata] name = nova version = 2014.1 summary = Cloud computing fabric controller description-file = README.rst author = OpenStack author-email = openstack-dev@lists.openstack.org home-page = http://www.openstack.org/ classifier = Environment :: OpenStack Intended Audience :: Information Technology Intended Audience :: System Administrators License :: OSI Approved :: Apache Software License Operating System :: POSIX :: Linux Programming Language :: Python Programming Language :: Python :: 2 Programming Language :: Python :: 2.7 Programming Language :: Python :: 2.6 [global] setup-hooks = pbr.hooks.setup_hook [files] packages = nova [entry_points] nova.image.download.modules = file = nova.image.download.file console_scripts = nova-all = nova.cmd.all:main nova-api = nova.cmd.api:main nova-api-ec2 = nova.cmd.api_ec2:main nova-api-metadata = nova.cmd.api_metadata:main nova-api-os-compute = nova.cmd.api_os_compute:main nova-baremetal-deploy-helper = nova.cmd.baremetal_deploy_helper:main nova-baremetal-manage = nova.cmd.baremetal_manage:main nova-cells = nova.cmd.cells:main nova-cert = nova.cmd.cert:main nova-clear-rabbit-queues = nova.cmd.clear_rabbit_queues:main nova-compute = nova.cmd.compute:main nova-conductor = nova.cmd.conductor:main nova-console = nova.cmd.console:main nova-consoleauth = nova.cmd.consoleauth:main nova-dhcpbridge = nova.cmd.dhcpbridge:main nova-manage = nova.cmd.manage:main nova-network = nova.cmd.network:main nova-novncproxy = nova.cmd.novncproxy:main nova-objectstore = nova.cmd.objectstore:main nova-rootwrap = oslo.rootwrap.cmd:main nova-scheduler = nova.cmd.scheduler:main nova-spicehtml5proxy = nova.cmd.spicehtml5proxy:main nova-xvpvncproxy = nova.cmd.xvpvncproxy:main nova.api.v3.extensions = access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs admin_actions = nova.api.openstack.compute.plugins.v3.admin_actions:AdminActions admin_password = nova.api.openstack.compute.plugins.v3.admin_password:AdminPassword agents = nova.api.openstack.compute.plugins.v3.agents:Agents aggregates = nova.api.openstack.compute.plugins.v3.aggregates:Aggregates attach_interfaces = nova.api.openstack.compute.plugins.v3.attach_interfaces:AttachInterfaces availability_zone = nova.api.openstack.compute.plugins.v3.availability_zone:AvailabilityZone block_device_mapping = nova.api.openstack.compute.plugins.v3.block_device_mapping:BlockDeviceMapping cells = nova.api.openstack.compute.plugins.v3.cells:Cells certificates = nova.api.openstack.compute.plugins.v3.certificates:Certificates config_drive = nova.api.openstack.compute.plugins.v3.config_drive:ConfigDrive console_auth_tokens = nova.api.openstack.compute.plugins.v3.console_auth_tokens:ConsoleAuthTokens console_output = nova.api.openstack.compute.plugins.v3.console_output:ConsoleOutput consoles = nova.api.openstack.compute.plugins.v3.consoles:Consoles create_backup = nova.api.openstack.compute.plugins.v3.create_backup:CreateBackup deferred_delete = nova.api.openstack.compute.plugins.v3.deferred_delete:DeferredDelete evacuate = nova.api.openstack.compute.plugins.v3.evacuate:Evacuate extended_availability_zone = nova.api.openstack.compute.plugins.v3.extended_availability_zone:ExtendedAvailabilityZone extended_server_attributes = nova.api.openstack.compute.plugins.v3.extended_server_attributes:ExtendedServerAttributes extended_status = nova.api.openstack.compute.plugins.v3.extended_status:ExtendedStatus extended_volumes = nova.api.openstack.compute.plugins.v3.extended_volumes:ExtendedVolumes extension_info = nova.api.openstack.compute.plugins.v3.extension_info:ExtensionInfo flavors = nova.api.openstack.compute.plugins.v3.flavors:Flavors flavors_extraspecs = nova.api.openstack.compute.plugins.v3.flavors_extraspecs:FlavorsExtraSpecs flavor_access = nova.api.openstack.compute.plugins.v3.flavor_access:FlavorAccess flavor_rxtx = nova.api.openstack.compute.plugins.v3.flavor_rxtx:FlavorRxtx flavor_manage = nova.api.openstack.compute.plugins.v3.flavor_manage:FlavorManage hide_server_addresses = nova.api.openstack.compute.plugins.v3.hide_server_addresses:HideServerAddresses hosts = nova.api.openstack.compute.plugins.v3.hosts:Hosts hypervisors = nova.api.openstack.compute.plugins.v3.hypervisors:Hypervisors instance_actions = nova.api.openstack.compute.plugins.v3.instance_actions:InstanceActions ips = nova.api.openstack.compute.plugins.v3.ips:IPs keypairs = nova.api.openstack.compute.plugins.v3.keypairs:Keypairs lock_server = nova.api.openstack.compute.plugins.v3.lock_server:LockServer migrate_server = nova.api.openstack.compute.plugins.v3.migrate_server:MigrateServer migrations = nova.api.openstack.compute.plugins.v3.migrations:Migrations multinic = nova.api.openstack.compute.plugins.v3.multinic:Multinic multiple_create = nova.api.openstack.compute.plugins.v3.multiple_create:MultipleCreate pause_server = nova.api.openstack.compute.plugins.v3.pause_server:PauseServer pci = nova.api.openstack.compute.plugins.v3.pci:Pci quota_sets = nova.api.openstack.compute.plugins.v3.quota_sets:QuotaSets remote_consoles = nova.api.openstack.compute.plugins.v3.remote_consoles:RemoteConsoles rescue = nova.api.openstack.compute.plugins.v3.rescue:Rescue scheduler_hints = nova.api.openstack.compute.plugins.v3.scheduler_hints:SchedulerHints security_groups = nova.api.openstack.compute.plugins.v3.security_groups:SecurityGroups server_diagnostics = nova.api.openstack.compute.plugins.v3.server_diagnostics:ServerDiagnostics server_external_events = nova.api.openstack.compute.plugins.v3.server_external_events:ServerExternalEvents server_metadata = nova.api.openstack.compute.plugins.v3.server_metadata:ServerMetadata server_password = nova.api.openstack.compute.plugins.v3.server_password:ServerPassword server_usage = nova.api.openstack.compute.plugins.v3.server_usage:ServerUsage servers = nova.api.openstack.compute.plugins.v3.servers:Servers services = nova.api.openstack.compute.plugins.v3.services:Services shelve = nova.api.openstack.compute.plugins.v3.shelve:Shelve suspend_server = nova.api.openstack.compute.plugins.v3.suspend_server:SuspendServer versions = nova.api.openstack.compute.plugins.v3.versions:Versions nova.api.v3.extensions.server.create = access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs availability_zone = nova.api.openstack.compute.plugins.v3.availability_zone:AvailabilityZone block_device_mapping = nova.api.openstack.compute.plugins.v3.block_device_mapping:BlockDeviceMapping config_drive = nova.api.openstack.compute.plugins.v3.config_drive:ConfigDrive keypairs_create = nova.api.openstack.compute.plugins.v3.keypairs:Keypairs multiple_create = nova.api.openstack.compute.plugins.v3.multiple_create:MultipleCreate scheduler_hints = nova.api.openstack.compute.plugins.v3.scheduler_hints:SchedulerHints security_groups = nova.api.openstack.compute.plugins.v3.security_groups:SecurityGroups user_data = nova.api.openstack.compute.plugins.v3.user_data:UserData nova.api.v3.extensions.server.rebuild = access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs nova.api.v3.extensions.server.update = access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs oslo.messaging.notify.drivers = nova.openstack.common.notifier.log_notifier = oslo.messaging.notify._impl_log:LogDriver nova.openstack.common.notifier.no_op_notifier = oslo.messaging.notify._impl_noop:NoOpDriver nova.openstack.common.notifier.rpc_notifier2 = oslo.messaging.notify._impl_messaging:MessagingV2Driver nova.openstack.common.notifier.rpc_notifier = oslo.messaging.notify._impl_messaging:MessagingDriver nova.openstack.common.notifier.test_notifier = oslo.messaging.notify._impl_test:TestDriver [build_sphinx] all_files = 1 build-dir = doc/build source-dir = doc/source [egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 [compile_catalog] directory = nova/locale domain = nova [update_catalog] domain = nova output_dir = nova/locale input_file = nova/locale/nova.pot [extract_messages] keywords = _ gettext ngettext l_ lazy_gettext mapping_file = babel.cfg output_file = nova/locale/nova.pot [wheel] universal = 1 nova-2014.1/nova.egg-info/0000775000175400017540000000000012323722546016345 5ustar jenkinsjenkins00000000000000nova-2014.1/nova.egg-info/dependency_links.txt0000664000175400017540000000000112323722545022412 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova.egg-info/not-zip-safe0000664000175400017540000000000112323722376020574 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova.egg-info/PKG-INFO0000664000175400017540000000632312323722545017445 0ustar jenkinsjenkins00000000000000Metadata-Version: 1.1 Name: nova Version: 2014.1 Summary: Cloud computing fabric controller Home-page: http://www.openstack.org/ Author: OpenStack Author-email: openstack-dev@lists.openstack.org License: UNKNOWN Description: OpenStack Nova README ===================== OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of virtualization technologies, including KVM, Xen, LXC, VMware, and more. In addition to its native API, it includes compatibility with the commonly encountered Amazon EC2 and S3 APIs. OpenStack Nova is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file. Nova primarily consists of a set of Python daemons, though it requires and integrates with a number of native system components for databases, messaging and virtualization capabilities. To keep updated with new developments in the OpenStack project follow `@openstack `_ on Twitter. To learn how to deploy OpenStack Nova, consult the documentation available online at: http://docs.openstack.org For information about the different compute (hypervisor) drivers supported by Nova, read this page on the wiki: https://wiki.openstack.org/wiki/HypervisorSupportMatrix In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at: http://bugs.launchpad.net/nova Developers wishing to work on the OpenStack Nova project should always base their work on the latest Nova code, available from the master GIT repository at: http://github.com/openstack/nova Developers should also join the discussion on the mailing list, at: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack Any new code must follow the development guidelines detailed in the HACKING.rst file, and pass all unit tests. Further developer focused documentation is available at: http://nova.openstack.org/ For information on how to contribute to Nova, please see the contents of the CONTRIBUTING.rst file. -- End of broadcast Platform: UNKNOWN Classifier: Environment :: OpenStack Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 2.6 nova-2014.1/nova.egg-info/entry_points.txt0000664000175400017540000001555312323722545021653 0ustar jenkinsjenkins00000000000000[console_scripts] nova-all = nova.cmd.all:main nova-api = nova.cmd.api:main nova-api-ec2 = nova.cmd.api_ec2:main nova-api-metadata = nova.cmd.api_metadata:main nova-api-os-compute = nova.cmd.api_os_compute:main nova-baremetal-deploy-helper = nova.cmd.baremetal_deploy_helper:main nova-baremetal-manage = nova.cmd.baremetal_manage:main nova-cells = nova.cmd.cells:main nova-cert = nova.cmd.cert:main nova-clear-rabbit-queues = nova.cmd.clear_rabbit_queues:main nova-compute = nova.cmd.compute:main nova-conductor = nova.cmd.conductor:main nova-console = nova.cmd.console:main nova-consoleauth = nova.cmd.consoleauth:main nova-dhcpbridge = nova.cmd.dhcpbridge:main nova-manage = nova.cmd.manage:main nova-network = nova.cmd.network:main nova-novncproxy = nova.cmd.novncproxy:main nova-objectstore = nova.cmd.objectstore:main nova-rootwrap = oslo.rootwrap.cmd:main nova-scheduler = nova.cmd.scheduler:main nova-spicehtml5proxy = nova.cmd.spicehtml5proxy:main nova-xvpvncproxy = nova.cmd.xvpvncproxy:main [nova.api.v3.extensions] access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs admin_actions = nova.api.openstack.compute.plugins.v3.admin_actions:AdminActions admin_password = nova.api.openstack.compute.plugins.v3.admin_password:AdminPassword agents = nova.api.openstack.compute.plugins.v3.agents:Agents aggregates = nova.api.openstack.compute.plugins.v3.aggregates:Aggregates attach_interfaces = nova.api.openstack.compute.plugins.v3.attach_interfaces:AttachInterfaces availability_zone = nova.api.openstack.compute.plugins.v3.availability_zone:AvailabilityZone block_device_mapping = nova.api.openstack.compute.plugins.v3.block_device_mapping:BlockDeviceMapping cells = nova.api.openstack.compute.plugins.v3.cells:Cells certificates = nova.api.openstack.compute.plugins.v3.certificates:Certificates config_drive = nova.api.openstack.compute.plugins.v3.config_drive:ConfigDrive console_auth_tokens = nova.api.openstack.compute.plugins.v3.console_auth_tokens:ConsoleAuthTokens console_output = nova.api.openstack.compute.plugins.v3.console_output:ConsoleOutput consoles = nova.api.openstack.compute.plugins.v3.consoles:Consoles create_backup = nova.api.openstack.compute.plugins.v3.create_backup:CreateBackup deferred_delete = nova.api.openstack.compute.plugins.v3.deferred_delete:DeferredDelete evacuate = nova.api.openstack.compute.plugins.v3.evacuate:Evacuate extended_availability_zone = nova.api.openstack.compute.plugins.v3.extended_availability_zone:ExtendedAvailabilityZone extended_server_attributes = nova.api.openstack.compute.plugins.v3.extended_server_attributes:ExtendedServerAttributes extended_status = nova.api.openstack.compute.plugins.v3.extended_status:ExtendedStatus extended_volumes = nova.api.openstack.compute.plugins.v3.extended_volumes:ExtendedVolumes extension_info = nova.api.openstack.compute.plugins.v3.extension_info:ExtensionInfo flavor_access = nova.api.openstack.compute.plugins.v3.flavor_access:FlavorAccess flavor_manage = nova.api.openstack.compute.plugins.v3.flavor_manage:FlavorManage flavor_rxtx = nova.api.openstack.compute.plugins.v3.flavor_rxtx:FlavorRxtx flavors = nova.api.openstack.compute.plugins.v3.flavors:Flavors flavors_extraspecs = nova.api.openstack.compute.plugins.v3.flavors_extraspecs:FlavorsExtraSpecs hide_server_addresses = nova.api.openstack.compute.plugins.v3.hide_server_addresses:HideServerAddresses hosts = nova.api.openstack.compute.plugins.v3.hosts:Hosts hypervisors = nova.api.openstack.compute.plugins.v3.hypervisors:Hypervisors instance_actions = nova.api.openstack.compute.plugins.v3.instance_actions:InstanceActions ips = nova.api.openstack.compute.plugins.v3.ips:IPs keypairs = nova.api.openstack.compute.plugins.v3.keypairs:Keypairs lock_server = nova.api.openstack.compute.plugins.v3.lock_server:LockServer migrate_server = nova.api.openstack.compute.plugins.v3.migrate_server:MigrateServer migrations = nova.api.openstack.compute.plugins.v3.migrations:Migrations multinic = nova.api.openstack.compute.plugins.v3.multinic:Multinic multiple_create = nova.api.openstack.compute.plugins.v3.multiple_create:MultipleCreate pause_server = nova.api.openstack.compute.plugins.v3.pause_server:PauseServer pci = nova.api.openstack.compute.plugins.v3.pci:Pci quota_sets = nova.api.openstack.compute.plugins.v3.quota_sets:QuotaSets remote_consoles = nova.api.openstack.compute.plugins.v3.remote_consoles:RemoteConsoles rescue = nova.api.openstack.compute.plugins.v3.rescue:Rescue scheduler_hints = nova.api.openstack.compute.plugins.v3.scheduler_hints:SchedulerHints security_groups = nova.api.openstack.compute.plugins.v3.security_groups:SecurityGroups server_diagnostics = nova.api.openstack.compute.plugins.v3.server_diagnostics:ServerDiagnostics server_external_events = nova.api.openstack.compute.plugins.v3.server_external_events:ServerExternalEvents server_metadata = nova.api.openstack.compute.plugins.v3.server_metadata:ServerMetadata server_password = nova.api.openstack.compute.plugins.v3.server_password:ServerPassword server_usage = nova.api.openstack.compute.plugins.v3.server_usage:ServerUsage servers = nova.api.openstack.compute.plugins.v3.servers:Servers services = nova.api.openstack.compute.plugins.v3.services:Services shelve = nova.api.openstack.compute.plugins.v3.shelve:Shelve suspend_server = nova.api.openstack.compute.plugins.v3.suspend_server:SuspendServer versions = nova.api.openstack.compute.plugins.v3.versions:Versions [nova.api.v3.extensions.server.create] access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs availability_zone = nova.api.openstack.compute.plugins.v3.availability_zone:AvailabilityZone block_device_mapping = nova.api.openstack.compute.plugins.v3.block_device_mapping:BlockDeviceMapping config_drive = nova.api.openstack.compute.plugins.v3.config_drive:ConfigDrive keypairs_create = nova.api.openstack.compute.plugins.v3.keypairs:Keypairs multiple_create = nova.api.openstack.compute.plugins.v3.multiple_create:MultipleCreate scheduler_hints = nova.api.openstack.compute.plugins.v3.scheduler_hints:SchedulerHints security_groups = nova.api.openstack.compute.plugins.v3.security_groups:SecurityGroups user_data = nova.api.openstack.compute.plugins.v3.user_data:UserData [nova.api.v3.extensions.server.rebuild] access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs [nova.api.v3.extensions.server.update] access_ips = nova.api.openstack.compute.plugins.v3.access_ips:AccessIPs [nova.image.download.modules] file = nova.image.download.file [oslo.messaging.notify.drivers] nova.openstack.common.notifier.log_notifier = oslo.messaging.notify._impl_log:LogDriver nova.openstack.common.notifier.no_op_notifier = oslo.messaging.notify._impl_noop:NoOpDriver nova.openstack.common.notifier.rpc_notifier = oslo.messaging.notify._impl_messaging:MessagingDriver nova.openstack.common.notifier.rpc_notifier2 = oslo.messaging.notify._impl_messaging:MessagingV2Driver nova.openstack.common.notifier.test_notifier = oslo.messaging.notify._impl_test:TestDriver nova-2014.1/nova.egg-info/top_level.txt0000664000175400017540000000000512323722545021071 0ustar jenkinsjenkins00000000000000nova nova-2014.1/nova.egg-info/requires.txt0000664000175400017540000000111712323722545020744 0ustar jenkinsjenkins00000000000000pbr>=0.6,<1.0 SQLAlchemy>=0.7.8,<=0.9.99 amqplib>=0.6.1 anyjson>=0.3.3 boto>=2.12.0,!=2.13.0 eventlet>=0.13.0 Jinja2 kombu>=2.4.8 lxml>=2.3 Routes>=1.12.3 WebOb>=1.2.3 greenlet>=0.3.2 PasteDeploy>=1.5.0 Paste sqlalchemy-migrate>=0.8.2,!=0.8.4 netaddr>=0.7.6 suds>=0.4 paramiko>=1.9.0 pyasn1 Babel>=1.3 iso8601>=0.1.9 jsonschema>=2.0.0,<3.0.0 python-cinderclient>=1.0.6 python-neutronclient>=2.3.4,<3 python-glanceclient>=0.9.0 python-keystoneclient>=0.7.0 six>=1.5.2 stevedore>=0.14 websockify>=0.5.1,<0.6 wsgiref>=0.1.2 oslo.config>=1.2.0 oslo.rootwrap pycadf>=0.4.1 oslo.messaging>=1.3.0a9nova-2014.1/nova.egg-info/SOURCES.txt0000664000175400017540000063441412323722545020244 0ustar jenkinsjenkins00000000000000.coveragerc .mailmap .testr.conf AUTHORS CONTRIBUTING.rst ChangeLog HACKING.rst LICENSE MANIFEST.in README.rst babel.cfg openstack-common.conf pylintrc requirements.txt run_tests.sh setup.cfg setup.py test-requirements.txt tox.ini contrib/profile_caching_scheduler.sh contrib/xen/vif-openstack doc/README.rst doc/api_samples/flavor-get-resp.json doc/api_samples/flavor-get-resp.xml doc/api_samples/flavors-list-resp.json doc/api_samples/flavors-list-resp.xml doc/api_samples/image-get-resp.json doc/api_samples/image-get-resp.xml doc/api_samples/image-meta-key-get.json doc/api_samples/image-meta-key-get.xml doc/api_samples/image-meta-key-put-req.json doc/api_samples/image-meta-key-put-req.xml doc/api_samples/image-meta-key-put-resp.json doc/api_samples/image-meta-key-put-resp.xml doc/api_samples/image-metadata-get-resp.json doc/api_samples/image-metadata-get-resp.xml doc/api_samples/image-metadata-post-req.json doc/api_samples/image-metadata-post-req.xml doc/api_samples/image-metadata-post-resp.json doc/api_samples/image-metadata-post-resp.xml doc/api_samples/image-metadata-put-req.json doc/api_samples/image-metadata-put-req.xml doc/api_samples/image-metadata-put-resp.json doc/api_samples/image-metadata-put-resp.xml doc/api_samples/image-metadata-resp.json doc/api_samples/images-details-get-resp.json doc/api_samples/images-details-get-resp.xml doc/api_samples/images-details-resp.json doc/api_samples/images-details-resp.xml doc/api_samples/images-list-get-resp.json doc/api_samples/images-list-get-resp.xml doc/api_samples/images-list-resp.json doc/api_samples/images-list-resp.xml doc/api_samples/limit-get-resp.json doc/api_samples/limit-get-resp.xml doc/api_samples/server-action-changepassword.json doc/api_samples/server-action-changepassword.xml doc/api_samples/server-action-confirmresize.json doc/api_samples/server-action-confirmresize.xml doc/api_samples/server-action-createimage.json doc/api_samples/server-action-createimage.xml doc/api_samples/server-action-reboot.json doc/api_samples/server-action-reboot.xml doc/api_samples/server-action-rebuild-resp.json doc/api_samples/server-action-rebuild-resp.xml doc/api_samples/server-action-rebuild.json doc/api_samples/server-action-rebuild.xml doc/api_samples/server-action-resize.json doc/api_samples/server-action-resize.xml doc/api_samples/server-action-revertresize.json doc/api_samples/server-action-revertresize.xml doc/api_samples/server-get-resp.json doc/api_samples/server-get-resp.xml doc/api_samples/server-ips-network-resp.json doc/api_samples/server-ips-network-resp.xml doc/api_samples/server-ips-resp.json doc/api_samples/server-ips-resp.xml doc/api_samples/server-metadata-all-req.json doc/api_samples/server-metadata-all-req.xml doc/api_samples/server-metadata-all-resp.json doc/api_samples/server-metadata-all-resp.xml doc/api_samples/server-metadata-req.json doc/api_samples/server-metadata-req.xml doc/api_samples/server-metadata-resp.json doc/api_samples/server-metadata-resp.xml doc/api_samples/server-post-req.json doc/api_samples/server-post-req.xml doc/api_samples/server-post-resp.json doc/api_samples/server-post-resp.xml doc/api_samples/servers-details-resp.json doc/api_samples/servers-details-resp.xml doc/api_samples/servers-list-resp.json doc/api_samples/servers-list-resp.xml doc/api_samples/versions-get-resp.json doc/api_samples/versions-get-resp.xml doc/api_samples/NMN/multinic-add-fixed-ip-req.json doc/api_samples/NMN/multinic-add-fixed-ip-req.xml doc/api_samples/NMN/multinic-remove-fixed-ip-req.json doc/api_samples/NMN/multinic-remove-fixed-ip-req.xml doc/api_samples/NMN/server-post-req.json doc/api_samples/NMN/server-post-req.xml doc/api_samples/NMN/server-post-resp.json doc/api_samples/NMN/server-post-resp.xml doc/api_samples/OS-DCF/image-get-resp.json doc/api_samples/OS-DCF/image-get-resp.xml doc/api_samples/OS-DCF/image-list-resp.json doc/api_samples/OS-DCF/image-list-resp.xml doc/api_samples/OS-DCF/list-servers-detail-get.json doc/api_samples/OS-DCF/list-servers-detail-get.xml doc/api_samples/OS-DCF/server-action-rebuild-req.json doc/api_samples/OS-DCF/server-action-rebuild-req.xml doc/api_samples/OS-DCF/server-action-rebuild-resp.json doc/api_samples/OS-DCF/server-action-rebuild-resp.xml doc/api_samples/OS-DCF/server-get-resp.json doc/api_samples/OS-DCF/server-get-resp.xml doc/api_samples/OS-DCF/server-post-req.json doc/api_samples/OS-DCF/server-post-req.xml doc/api_samples/OS-DCF/server-post-resp.json doc/api_samples/OS-DCF/server-post-resp.xml doc/api_samples/OS-DCF/server-resize-post-req.json doc/api_samples/OS-DCF/server-resize-post-req.xml doc/api_samples/OS-DCF/server-update-put-req.json doc/api_samples/OS-DCF/server-update-put-req.xml doc/api_samples/OS-DCF/server-update-put-resp.json doc/api_samples/OS-DCF/server-update-put-resp.xml doc/api_samples/OS-EXT-AZ/server-get-resp.json doc/api_samples/OS-EXT-AZ/server-get-resp.xml doc/api_samples/OS-EXT-AZ/server-post-req.json doc/api_samples/OS-EXT-AZ/server-post-req.xml doc/api_samples/OS-EXT-AZ/server-post-resp.json doc/api_samples/OS-EXT-AZ/server-post-resp.xml doc/api_samples/OS-EXT-AZ/servers-detail-resp.json doc/api_samples/OS-EXT-AZ/servers-detail-resp.xml doc/api_samples/OS-EXT-IMG-SIZE/image-get-resp.json doc/api_samples/OS-EXT-IMG-SIZE/image-get-resp.xml doc/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.json doc/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.xml doc/api_samples/OS-EXT-IPS/server-get-resp.json doc/api_samples/OS-EXT-IPS/server-get-resp.xml doc/api_samples/OS-EXT-IPS/server-post-req.json doc/api_samples/OS-EXT-IPS/server-post-req.xml doc/api_samples/OS-EXT-IPS/server-post-resp.json doc/api_samples/OS-EXT-IPS/server-post-resp.xml doc/api_samples/OS-EXT-IPS/servers-detail-resp.json doc/api_samples/OS-EXT-IPS/servers-detail-resp.xml doc/api_samples/OS-EXT-IPS-MAC/server-get-resp.json doc/api_samples/OS-EXT-IPS-MAC/server-get-resp.xml doc/api_samples/OS-EXT-IPS-MAC/server-post-req.json doc/api_samples/OS-EXT-IPS-MAC/server-post-req.xml doc/api_samples/OS-EXT-IPS-MAC/server-post-resp.json doc/api_samples/OS-EXT-IPS-MAC/server-post-resp.xml doc/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.json doc/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.xml doc/api_samples/OS-EXT-SRV-ATTR/server-get-resp.json doc/api_samples/OS-EXT-SRV-ATTR/server-get-resp.xml doc/api_samples/OS-EXT-SRV-ATTR/server-post-req.json doc/api_samples/OS-EXT-SRV-ATTR/server-post-req.xml doc/api_samples/OS-EXT-SRV-ATTR/server-post-resp.json doc/api_samples/OS-EXT-SRV-ATTR/server-post-resp.xml doc/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.json doc/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.xml doc/api_samples/OS-EXT-STS/server-get-resp.json doc/api_samples/OS-EXT-STS/server-get-resp.xml doc/api_samples/OS-EXT-STS/server-post-req.json doc/api_samples/OS-EXT-STS/server-post-req.xml doc/api_samples/OS-EXT-STS/server-post-resp.json doc/api_samples/OS-EXT-STS/server-post-resp.xml doc/api_samples/OS-EXT-STS/servers-detail-resp.json doc/api_samples/OS-EXT-STS/servers-detail-resp.xml doc/api_samples/OS-EXT-VIF-NET/server-post-req.json doc/api_samples/OS-EXT-VIF-NET/server-post-req.xml doc/api_samples/OS-EXT-VIF-NET/server-post-resp.json doc/api_samples/OS-EXT-VIF-NET/server-post-resp.xml doc/api_samples/OS-EXT-VIF-NET/vifs-list-resp.json doc/api_samples/OS-EXT-VIF-NET/vifs-list-resp.xml doc/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.json doc/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.xml doc/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.json doc/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.xml doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.json doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.xml doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.json doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.xml doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.json doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.xml doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.json doc/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.xml doc/api_samples/OS-SCH-HNT/scheduler-hints-post-req.json doc/api_samples/OS-SCH-HNT/scheduler-hints-post-req.xml doc/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.json doc/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.xml doc/api_samples/OS-SRV-USG/server-get-resp.json doc/api_samples/OS-SRV-USG/server-get-resp.xml doc/api_samples/OS-SRV-USG/server-post-req.json doc/api_samples/OS-SRV-USG/server-post-req.xml doc/api_samples/OS-SRV-USG/server-post-resp.json doc/api_samples/OS-SRV-USG/server-post-resp.xml doc/api_samples/OS-SRV-USG/servers-detail-resp.json doc/api_samples/OS-SRV-USG/servers-detail-resp.xml doc/api_samples/all_extensions/extensions-get-resp.json doc/api_samples/all_extensions/extensions-get-resp.xml doc/api_samples/all_extensions/flavor-get-resp.json doc/api_samples/all_extensions/flavor-get-resp.xml doc/api_samples/all_extensions/flavors-list-resp.json doc/api_samples/all_extensions/flavors-list-resp.xml doc/api_samples/all_extensions/server-action-changepassword.json doc/api_samples/all_extensions/server-action-changepassword.xml doc/api_samples/all_extensions/server-action-confirmresize.json doc/api_samples/all_extensions/server-action-confirmresize.xml doc/api_samples/all_extensions/server-action-createimage.json doc/api_samples/all_extensions/server-action-createimage.xml doc/api_samples/all_extensions/server-action-reboot.json doc/api_samples/all_extensions/server-action-reboot.xml doc/api_samples/all_extensions/server-action-rebuild-resp.json doc/api_samples/all_extensions/server-action-rebuild-resp.xml doc/api_samples/all_extensions/server-action-rebuild.json doc/api_samples/all_extensions/server-action-rebuild.xml doc/api_samples/all_extensions/server-action-resize.json doc/api_samples/all_extensions/server-action-resize.xml doc/api_samples/all_extensions/server-action-revertresize.json doc/api_samples/all_extensions/server-action-revertresize.xml doc/api_samples/all_extensions/server-get-resp.json doc/api_samples/all_extensions/server-get-resp.xml doc/api_samples/all_extensions/server-post-req.json doc/api_samples/all_extensions/server-post-req.xml doc/api_samples/all_extensions/server-post-resp.json doc/api_samples/all_extensions/server-post-resp.xml doc/api_samples/all_extensions/servers-details-resp.json doc/api_samples/all_extensions/servers-details-resp.xml doc/api_samples/all_extensions/servers-list-resp.json doc/api_samples/all_extensions/servers-list-resp.xml doc/api_samples/os-admin-actions/admin-actions-backup-server.json doc/api_samples/os-admin-actions/admin-actions-backup-server.xml doc/api_samples/os-admin-actions/admin-actions-inject-network-info.json doc/api_samples/os-admin-actions/admin-actions-inject-network-info.xml doc/api_samples/os-admin-actions/admin-actions-live-migrate.json doc/api_samples/os-admin-actions/admin-actions-live-migrate.xml doc/api_samples/os-admin-actions/admin-actions-lock-server.json doc/api_samples/os-admin-actions/admin-actions-lock-server.xml doc/api_samples/os-admin-actions/admin-actions-lock.json doc/api_samples/os-admin-actions/admin-actions-migrate.json doc/api_samples/os-admin-actions/admin-actions-migrate.xml doc/api_samples/os-admin-actions/admin-actions-pause.json doc/api_samples/os-admin-actions/admin-actions-pause.xml doc/api_samples/os-admin-actions/admin-actions-reset-network.json doc/api_samples/os-admin-actions/admin-actions-reset-network.xml doc/api_samples/os-admin-actions/admin-actions-reset-server-state.json doc/api_samples/os-admin-actions/admin-actions-reset-server-state.xml doc/api_samples/os-admin-actions/admin-actions-reset-state.json doc/api_samples/os-admin-actions/admin-actions-reset-state.xml doc/api_samples/os-admin-actions/admin-actions-resume.json doc/api_samples/os-admin-actions/admin-actions-resume.xml doc/api_samples/os-admin-actions/admin-actions-suspend.json doc/api_samples/os-admin-actions/admin-actions-suspend.xml doc/api_samples/os-admin-actions/admin-actions-unlock-server.json doc/api_samples/os-admin-actions/admin-actions-unlock-server.xml doc/api_samples/os-admin-actions/admin-actions-unlock.json doc/api_samples/os-admin-actions/admin-actions-unpause.json doc/api_samples/os-admin-actions/admin-actions-unpause.xml doc/api_samples/os-admin-actions/server-post-req.json doc/api_samples/os-admin-actions/server-post-req.xml doc/api_samples/os-admin-actions/server-post-resp.json doc/api_samples/os-admin-actions/server-post-resp.xml doc/api_samples/os-agents/agent-post-req.json doc/api_samples/os-agents/agent-post-req.xml doc/api_samples/os-agents/agent-post-resp.json doc/api_samples/os-agents/agent-post-resp.xml doc/api_samples/os-agents/agent-update-put-req.json doc/api_samples/os-agents/agent-update-put-req.xml doc/api_samples/os-agents/agent-update-put-resp.json doc/api_samples/os-agents/agent-update-put-resp.xml doc/api_samples/os-agents/agents-get-resp.json doc/api_samples/os-agents/agents-get-resp.xml doc/api_samples/os-aggregates/aggregate-add-host-post-req.json doc/api_samples/os-aggregates/aggregate-add-host-post-req.xml doc/api_samples/os-aggregates/aggregate-metadata-post-req.json doc/api_samples/os-aggregates/aggregate-metadata-post-req.xml doc/api_samples/os-aggregates/aggregate-post-req.json doc/api_samples/os-aggregates/aggregate-post-req.xml doc/api_samples/os-aggregates/aggregate-post-resp.json doc/api_samples/os-aggregates/aggregate-post-resp.xml doc/api_samples/os-aggregates/aggregate-remove-host-post-req.json doc/api_samples/os-aggregates/aggregate-remove-host-post-req.xml doc/api_samples/os-aggregates/aggregate-update-post-req.json doc/api_samples/os-aggregates/aggregate-update-post-req.xml doc/api_samples/os-aggregates/aggregate-update-post-resp.json doc/api_samples/os-aggregates/aggregate-update-post-resp.xml doc/api_samples/os-aggregates/aggregates-add-host-post-resp.json doc/api_samples/os-aggregates/aggregates-add-host-post-resp.xml doc/api_samples/os-aggregates/aggregates-get-resp.json doc/api_samples/os-aggregates/aggregates-get-resp.xml doc/api_samples/os-aggregates/aggregates-list-get-resp.json doc/api_samples/os-aggregates/aggregates-list-get-resp.xml doc/api_samples/os-aggregates/aggregates-metadata-post-resp.json doc/api_samples/os-aggregates/aggregates-metadata-post-resp.xml doc/api_samples/os-aggregates/aggregates-remove-host-post-resp.json doc/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml doc/api_samples/os-aggregates/server-post-req.json doc/api_samples/os-aggregates/server-post-resp.json doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.json doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.xml doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.json doc/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.xml doc/api_samples/os-attach-interfaces/attach-interfaces-create-req.json doc/api_samples/os-attach-interfaces/attach-interfaces-create-req.xml doc/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json doc/api_samples/os-attach-interfaces/attach-interfaces-create-resp.xml doc/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json doc/api_samples/os-attach-interfaces/attach-interfaces-list-resp.xml doc/api_samples/os-attach-interfaces/attach-interfaces-list.xml doc/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json doc/api_samples/os-attach-interfaces/attach-interfaces-show-resp.xml doc/api_samples/os-attach-interfaces/server-post-req.json doc/api_samples/os-attach-interfaces/server-post-req.xml doc/api_samples/os-attach-interfaces/server-post-resp.json doc/api_samples/os-attach-interfaces/server-post-resp.xml doc/api_samples/os-availability-zone/availability-zone-post-req.json doc/api_samples/os-availability-zone/availability-zone-post-req.xml doc/api_samples/os-availability-zone/availability-zone-post-resp.json doc/api_samples/os-availability-zone/availability-zone-post-resp.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.json doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.json doc/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-create-req.json doc/api_samples/os-baremetal-ext-status/baremetal-node-create-req.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.json doc/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.json doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.json doc/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.json doc/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.json doc/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.xml doc/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.json doc/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.xml doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.json doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.xml doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.json doc/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.xml doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.json doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml doc/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.json doc/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.xml doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml doc/api_samples/os-block-device-mapping-v2-boot/server-post-req.json doc/api_samples/os-block-device-mapping-v2-boot/server-post-req.xml doc/api_samples/os-block-device-mapping-v2-boot/server-post-resp.json doc/api_samples/os-block-device-mapping-v2-boot/server-post-resp.xml doc/api_samples/os-cell-capacities/cells-capacities-resp.json doc/api_samples/os-cell-capacities/cells-capacities-resp.xml doc/api_samples/os-cells/cells-get-resp.json doc/api_samples/os-cells/cells-get-resp.xml doc/api_samples/os-cells/cells-list-empty-resp.json doc/api_samples/os-cells/cells-list-empty-resp.xml doc/api_samples/os-cells/cells-list-resp.json doc/api_samples/os-cells/cells-list-resp.xml doc/api_samples/os-certificates/certificate-create-req.json doc/api_samples/os-certificates/certificate-create-req.xml doc/api_samples/os-certificates/certificate-create-resp.json doc/api_samples/os-certificates/certificate-create-resp.xml doc/api_samples/os-certificates/certificate-get-root-resp.json doc/api_samples/os-certificates/certificate-get-root-resp.xml doc/api_samples/os-cloudpipe/cloud-pipe-create-req.json doc/api_samples/os-cloudpipe/cloud-pipe-create-req.xml doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.json doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.json doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml doc/api_samples/os-cloudpipe-update/cloud-pipe-update-req.json doc/api_samples/os-cloudpipe-update/cloud-pipe-update-req.xml doc/api_samples/os-config-drive/server-config-drive-get-resp.json doc/api_samples/os-config-drive/server-config-drive-get-resp.xml doc/api_samples/os-config-drive/server-post-req.json doc/api_samples/os-config-drive/server-post-req.xml doc/api_samples/os-config-drive/server-post-resp.json doc/api_samples/os-config-drive/server-post-resp.xml doc/api_samples/os-config-drive/servers-config-drive-details-resp.json doc/api_samples/os-config-drive/servers-config-drive-details-resp.xml doc/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json doc/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.xml doc/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json doc/api_samples/os-console-auth-tokens/get-rdp-console-post-req.xml doc/api_samples/os-console-auth-tokens/server-post-req.json doc/api_samples/os-console-auth-tokens/server-post-req.xml doc/api_samples/os-console-auth-tokens/server-post-resp.json doc/api_samples/os-console-auth-tokens/server-post-resp.xml doc/api_samples/os-console-output/console-output-post-req.json doc/api_samples/os-console-output/console-output-post-req.xml doc/api_samples/os-console-output/console-output-post-resp.json doc/api_samples/os-console-output/console-output-post-resp.xml doc/api_samples/os-console-output/server-post-req.json doc/api_samples/os-console-output/server-post-req.xml doc/api_samples/os-console-output/server-post-resp.json doc/api_samples/os-console-output/server-post-resp.xml doc/api_samples/os-consoles/get-rdp-console-post-req.json doc/api_samples/os-consoles/get-rdp-console-post-req.xml doc/api_samples/os-consoles/get-rdp-console-post-resp.json doc/api_samples/os-consoles/get-rdp-console-post-resp.xml doc/api_samples/os-consoles/get-spice-console-post-req.json doc/api_samples/os-consoles/get-spice-console-post-req.xml doc/api_samples/os-consoles/get-spice-console-post-resp.json doc/api_samples/os-consoles/get-spice-console-post-resp.xml doc/api_samples/os-consoles/get-vnc-console-post-req.json doc/api_samples/os-consoles/get-vnc-console-post-req.xml doc/api_samples/os-consoles/get-vnc-console-post-resp.json doc/api_samples/os-consoles/get-vnc-console-post-resp.xml doc/api_samples/os-consoles/server-post-req.json doc/api_samples/os-consoles/server-post-req.xml doc/api_samples/os-consoles/server-post-resp.json doc/api_samples/os-consoles/server-post-resp.xml doc/api_samples/os-deferred-delete/force-delete-post-req.json doc/api_samples/os-deferred-delete/force-delete-post-req.xml doc/api_samples/os-deferred-delete/restore-post-req.json doc/api_samples/os-deferred-delete/restore-post-req.xml doc/api_samples/os-deferred-delete/server-post-req.json doc/api_samples/os-deferred-delete/server-post-req.xml doc/api_samples/os-deferred-delete/server-post-resp.json doc/api_samples/os-deferred-delete/server-post-resp.xml doc/api_samples/os-evacuate/server-evacuate-req.json doc/api_samples/os-evacuate/server-evacuate-req.xml doc/api_samples/os-evacuate/server-evacuate-resp.json doc/api_samples/os-evacuate/server-evacuate-resp.xml doc/api_samples/os-evacuate/server-post-req.json doc/api_samples/os-evacuate/server-post-req.xml doc/api_samples/os-evacuate/server-post-resp.json doc/api_samples/os-evacuate/server-post-resp.xml doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml doc/api_samples/os-extended-floating-ips/floating-ips-create-req.json doc/api_samples/os-extended-floating-ips/floating-ips-create-req.xml doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.json doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.json doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml doc/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.json doc/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.xml doc/api_samples/os-extended-quotas/quotas-update-post-req.json doc/api_samples/os-extended-quotas/quotas-update-post-req.xml doc/api_samples/os-extended-quotas/quotas-update-post-resp.json doc/api_samples/os-extended-quotas/quotas-update-post-resp.xml doc/api_samples/os-extended-services-delete/services-get-resp.json doc/api_samples/os-extended-services-delete/services-get-resp.xml doc/api_samples/os-extended-volumes/server-get-resp.json doc/api_samples/os-extended-volumes/server-get-resp.xml doc/api_samples/os-extended-volumes/server-post-req.json doc/api_samples/os-extended-volumes/server-post-req.xml doc/api_samples/os-extended-volumes/server-post-resp.json doc/api_samples/os-extended-volumes/server-post-resp.xml doc/api_samples/os-extended-volumes/servers-detail-resp.json doc/api_samples/os-extended-volumes/servers-detail-resp.xml doc/api_samples/os-fixed-ips/fixedip-post-req.json doc/api_samples/os-fixed-ips/fixedip-post-req.xml doc/api_samples/os-fixed-ips/fixedips-get-resp.json doc/api_samples/os-fixed-ips/fixedips-get-resp.xml doc/api_samples/os-flavor-access/flavor-access-add-tenant-req.json doc/api_samples/os-flavor-access/flavor-access-add-tenant-req.xml doc/api_samples/os-flavor-access/flavor-access-add-tenant-resp.json doc/api_samples/os-flavor-access/flavor-access-add-tenant-resp.xml doc/api_samples/os-flavor-access/flavor-access-create-req.json doc/api_samples/os-flavor-access/flavor-access-create-req.xml doc/api_samples/os-flavor-access/flavor-access-create-resp.json doc/api_samples/os-flavor-access/flavor-access-create-resp.xml doc/api_samples/os-flavor-access/flavor-access-detail-resp.json doc/api_samples/os-flavor-access/flavor-access-detail-resp.xml doc/api_samples/os-flavor-access/flavor-access-list-resp.json doc/api_samples/os-flavor-access/flavor-access-list-resp.xml doc/api_samples/os-flavor-access/flavor-access-remove-tenant-req.json doc/api_samples/os-flavor-access/flavor-access-remove-tenant-req.xml doc/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.json doc/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.xml doc/api_samples/os-flavor-access/flavor-access-show-resp.json doc/api_samples/os-flavor-access/flavor-access-show-resp.xml doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.json doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.xml doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.json doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.xml doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.json doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.xml doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.json doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.xml doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.json doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.xml doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.json doc/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.xml doc/api_samples/os-flavor-manage/flavor-create-post-req.json doc/api_samples/os-flavor-manage/flavor-create-post-req.xml doc/api_samples/os-flavor-manage/flavor-create-post-resp.json doc/api_samples/os-flavor-manage/flavor-create-post-resp.xml doc/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json doc/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.xml doc/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json doc/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.xml doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.xml doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json doc/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.xml doc/api_samples/os-flavor-swap/flavor-swap-get-resp.json doc/api_samples/os-flavor-swap/flavor-swap-get-resp.xml doc/api_samples/os-flavor-swap/flavor-swap-list-resp.json doc/api_samples/os-flavor-swap/flavor-swap-list-resp.xml doc/api_samples/os-flavor-swap/flavor-swap-post-req.json doc/api_samples/os-flavor-swap/flavor-swap-post-req.xml doc/api_samples/os-flavor-swap/flavor-swap-post-resp.json doc/api_samples/os-flavor-swap/flavor-swap-post-resp.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.xml doc/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.json doc/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.xml doc/api_samples/os-floating-ip-pools/floatingippools-list-resp.json doc/api_samples/os-floating-ip-pools/floatingippools-list-resp.xml doc/api_samples/os-floating-ips/floating-ips-create-nopool-req.json doc/api_samples/os-floating-ips/floating-ips-create-nopool-req.xml doc/api_samples/os-floating-ips/floating-ips-create-req.json doc/api_samples/os-floating-ips/floating-ips-create-req.xml doc/api_samples/os-floating-ips/floating-ips-create-resp.json doc/api_samples/os-floating-ips/floating-ips-create-resp.xml doc/api_samples/os-floating-ips/floating-ips-list-empty-resp.json doc/api_samples/os-floating-ips/floating-ips-list-empty-resp.xml doc/api_samples/os-floating-ips/floating-ips-list-resp.json doc/api_samples/os-floating-ips/floating-ips-list-resp.xml doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml doc/api_samples/os-fping/fping-get-details-resp.json doc/api_samples/os-fping/fping-get-details-resp.xml doc/api_samples/os-fping/fping-get-resp.json doc/api_samples/os-fping/fping-get-resp.xml doc/api_samples/os-fping/server-post-req.json doc/api_samples/os-fping/server-post-req.xml doc/api_samples/os-fping/server-post-resp.json doc/api_samples/os-fping/server-post-resp.xml doc/api_samples/os-hide-server-addresses/server-get-resp.json doc/api_samples/os-hide-server-addresses/server-get-resp.xml doc/api_samples/os-hide-server-addresses/server-post-req.json doc/api_samples/os-hide-server-addresses/server-post-req.xml doc/api_samples/os-hide-server-addresses/server-post-resp.json doc/api_samples/os-hide-server-addresses/server-post-resp.xml doc/api_samples/os-hide-server-addresses/servers-details-resp.json doc/api_samples/os-hide-server-addresses/servers-details-resp.xml doc/api_samples/os-hide-server-addresses/servers-list-resp.json doc/api_samples/os-hide-server-addresses/servers-list-resp.xml doc/api_samples/os-hosts/host-get-reboot.json doc/api_samples/os-hosts/host-get-reboot.xml doc/api_samples/os-hosts/host-get-resp.json doc/api_samples/os-hosts/host-get-resp.xml doc/api_samples/os-hosts/host-get-shutdown.json doc/api_samples/os-hosts/host-get-shutdown.xml doc/api_samples/os-hosts/host-get-startup.json doc/api_samples/os-hosts/host-get-startup.xml doc/api_samples/os-hosts/host-put-maintenance-req.json doc/api_samples/os-hosts/host-put-maintenance-req.xml doc/api_samples/os-hosts/host-put-maintenance-resp.json doc/api_samples/os-hosts/host-put-maintenance-resp.xml doc/api_samples/os-hosts/hosts-list-resp.json doc/api_samples/os-hosts/hosts-list-resp.xml doc/api_samples/os-hypervisors/hypervisors-detail-resp.json doc/api_samples/os-hypervisors/hypervisors-detail-resp.xml doc/api_samples/os-hypervisors/hypervisors-list-resp.json doc/api_samples/os-hypervisors/hypervisors-list-resp.xml doc/api_samples/os-hypervisors/hypervisors-search-resp.json doc/api_samples/os-hypervisors/hypervisors-search-resp.xml doc/api_samples/os-hypervisors/hypervisors-servers-resp.json doc/api_samples/os-hypervisors/hypervisors-servers-resp.xml doc/api_samples/os-hypervisors/hypervisors-show-resp.json doc/api_samples/os-hypervisors/hypervisors-show-resp.xml doc/api_samples/os-hypervisors/hypervisors-statistics-resp.json doc/api_samples/os-hypervisors/hypervisors-statistics-resp.xml doc/api_samples/os-hypervisors/hypervisors-uptime-resp.json doc/api_samples/os-hypervisors/hypervisors-uptime-resp.xml doc/api_samples/os-instance-actions/instance-action-get-resp.json doc/api_samples/os-instance-actions/instance-action-get-resp.xml doc/api_samples/os-instance-actions/instance-actions-list-resp.json doc/api_samples/os-instance-actions/instance-actions-list-resp.xml doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.json doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.xml doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.json doc/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.xml doc/api_samples/os-keypairs/keypairs-get-resp.json doc/api_samples/os-keypairs/keypairs-get-resp.xml doc/api_samples/os-keypairs/keypairs-import-post-req.json doc/api_samples/os-keypairs/keypairs-import-post-req.xml doc/api_samples/os-keypairs/keypairs-import-post-resp.json doc/api_samples/os-keypairs/keypairs-import-post-resp.xml doc/api_samples/os-keypairs/keypairs-post-req.json doc/api_samples/os-keypairs/keypairs-post-req.xml doc/api_samples/os-keypairs/keypairs-post-resp.json doc/api_samples/os-keypairs/keypairs-post-resp.xml doc/api_samples/os-migrations/migrations-get.json doc/api_samples/os-migrations/migrations-get.xml doc/api_samples/os-multiple-create/multiple-create-no-resv-post-req.json doc/api_samples/os-multiple-create/multiple-create-no-resv-post-req.xml doc/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.json doc/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.xml doc/api_samples/os-multiple-create/multiple-create-post-req.json doc/api_samples/os-multiple-create/multiple-create-post-req.xml doc/api_samples/os-multiple-create/multiple-create-post-resp.json doc/api_samples/os-multiple-create/multiple-create-post-resp.xml doc/api_samples/os-networks/network-add-req.json doc/api_samples/os-networks/network-add-req.xml doc/api_samples/os-networks/network-create-req.json doc/api_samples/os-networks/network-create-req.xml doc/api_samples/os-networks/network-create-resp.json doc/api_samples/os-networks/network-create-resp.xml doc/api_samples/os-networks/network-show-resp.json doc/api_samples/os-networks/network-show-resp.xml doc/api_samples/os-networks/networks-disassociate-req.json doc/api_samples/os-networks/networks-disassociate-req.xml doc/api_samples/os-networks/networks-list-resp.json doc/api_samples/os-networks/networks-list-resp.xml doc/api_samples/os-networks-associate/network-associate-host-req.json doc/api_samples/os-networks-associate/network-associate-host-req.xml doc/api_samples/os-networks-associate/network-disassociate-host-req.json doc/api_samples/os-networks-associate/network-disassociate-host-req.xml doc/api_samples/os-networks-associate/network-disassociate-project-req.json doc/api_samples/os-networks-associate/network-disassociate-project-req.xml doc/api_samples/os-networks-associate/network-disassociate-req.json doc/api_samples/os-networks-associate/network-disassociate-req.xml doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.xml doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.xml doc/api_samples/os-preserve-ephemeral-rebuild/server-post-req.json doc/api_samples/os-preserve-ephemeral-rebuild/server-post-req.xml doc/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.json doc/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.xml doc/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json doc/api_samples/os-quota-sets/quotas-show-defaults-get-resp.xml doc/api_samples/os-quota-sets/quotas-show-get-resp.json doc/api_samples/os-quota-sets/quotas-show-get-resp.xml doc/api_samples/os-quota-sets/quotas-update-post-req.json doc/api_samples/os-quota-sets/quotas-update-post-req.xml doc/api_samples/os-quota-sets/quotas-update-post-resp.json doc/api_samples/os-quota-sets/quotas-update-post-resp.xml doc/api_samples/os-rescue/server-get-resp-rescue.json doc/api_samples/os-rescue/server-get-resp-rescue.xml doc/api_samples/os-rescue/server-get-resp-unrescue.json doc/api_samples/os-rescue/server-get-resp-unrescue.xml doc/api_samples/os-rescue/server-post-req.json doc/api_samples/os-rescue/server-post-req.xml doc/api_samples/os-rescue/server-post-resp.json doc/api_samples/os-rescue/server-post-resp.xml doc/api_samples/os-rescue/server-rescue-req.json doc/api_samples/os-rescue/server-rescue-req.xml doc/api_samples/os-rescue/server-rescue.json doc/api_samples/os-rescue/server-rescue.xml doc/api_samples/os-rescue/server-unrescue-req.json doc/api_samples/os-rescue/server-unrescue-req.xml doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.json doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.xml doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.json doc/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.xml doc/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.json doc/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.xml doc/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.json doc/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.xml doc/api_samples/os-security-groups/security-group-add-post-req.json doc/api_samples/os-security-groups/security-group-add-post-req.xml doc/api_samples/os-security-groups/security-group-post-req.json doc/api_samples/os-security-groups/security-group-post-req.xml doc/api_samples/os-security-groups/security-group-remove-post-req.json doc/api_samples/os-security-groups/security-group-remove-post-req.xml doc/api_samples/os-security-groups/security-groups-create-resp.json doc/api_samples/os-security-groups/security-groups-create-resp.xml doc/api_samples/os-security-groups/security-groups-get-resp.json doc/api_samples/os-security-groups/security-groups-get-resp.xml doc/api_samples/os-security-groups/security-groups-list-get-resp.json doc/api_samples/os-security-groups/security-groups-list-get-resp.xml doc/api_samples/os-security-groups/server-post-req.json doc/api_samples/os-security-groups/server-post-req.xml doc/api_samples/os-security-groups/server-post-resp.json doc/api_samples/os-security-groups/server-post-resp.xml doc/api_samples/os-security-groups/server-security-groups-list-resp.json doc/api_samples/os-security-groups/server-security-groups-list-resp.xml doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json doc/api_samples/os-server-diagnostics/server-diagnostics-get-resp.xml doc/api_samples/os-server-diagnostics/server-post-req.json doc/api_samples/os-server-diagnostics/server-post-req.xml doc/api_samples/os-server-diagnostics/server-post-resp.json doc/api_samples/os-server-diagnostics/server-post-resp.xml doc/api_samples/os-server-external-events/event-create-req.json doc/api_samples/os-server-external-events/event-create-req.xml doc/api_samples/os-server-external-events/event-create-resp.json doc/api_samples/os-server-external-events/event-create-resp.xml doc/api_samples/os-server-external-events/server-post-req.json doc/api_samples/os-server-external-events/server-post-req.xml doc/api_samples/os-server-external-events/server-post-resp.json doc/api_samples/os-server-external-events/server-post-resp.xml doc/api_samples/os-server-groups/server-groups-get-resp.json doc/api_samples/os-server-groups/server-groups-get-resp.xml doc/api_samples/os-server-groups/server-groups-list-resp.json doc/api_samples/os-server-groups/server-groups-list-resp.xml doc/api_samples/os-server-groups/server-groups-post-req.json doc/api_samples/os-server-groups/server-groups-post-req.xml doc/api_samples/os-server-groups/server-groups-post-resp.json doc/api_samples/os-server-groups/server-groups-post-resp.xml doc/api_samples/os-server-password/get-password-resp.json doc/api_samples/os-server-password/get-password-resp.xml doc/api_samples/os-server-password/server-post-req.json doc/api_samples/os-server-password/server-post-req.xml doc/api_samples/os-server-password/server-post-resp.json doc/api_samples/os-server-password/server-post-resp.xml doc/api_samples/os-server-start-stop/server-post-req.json doc/api_samples/os-server-start-stop/server-post-req.xml doc/api_samples/os-server-start-stop/server-post-resp.json doc/api_samples/os-server-start-stop/server-post-resp.xml doc/api_samples/os-server-start-stop/server_start_stop.json doc/api_samples/os-server-start-stop/server_start_stop.xml doc/api_samples/os-services/service-disable-log-put-req.json doc/api_samples/os-services/service-disable-log-put-req.xml doc/api_samples/os-services/service-disable-log-put-resp.json doc/api_samples/os-services/service-disable-log-put-resp.xml doc/api_samples/os-services/service-disable-put-req.json doc/api_samples/os-services/service-disable-put-req.xml doc/api_samples/os-services/service-disable-put-resp.json doc/api_samples/os-services/service-disable-put-resp.xml doc/api_samples/os-services/service-enable-put-req.json doc/api_samples/os-services/service-enable-put-req.xml doc/api_samples/os-services/service-enable-put-resp.json doc/api_samples/os-services/service-enable-put-resp.xml doc/api_samples/os-services/services-get-resp.json doc/api_samples/os-services/services-get-resp.xml doc/api_samples/os-services/services-list-get-resp.json doc/api_samples/os-services/services-list-get-resp.xml doc/api_samples/os-shelve/os-shelve-offload.json doc/api_samples/os-shelve/os-shelve-offload.xml doc/api_samples/os-shelve/os-shelve.json doc/api_samples/os-shelve/os-shelve.xml doc/api_samples/os-shelve/os-unshelve.json doc/api_samples/os-shelve/os-unshelve.xml doc/api_samples/os-shelve/server-post-req.json doc/api_samples/os-shelve/server-post-req.xml doc/api_samples/os-shelve/server-post-resp.json doc/api_samples/os-shelve/server-post-resp.xml doc/api_samples/os-simple-tenant-usage/server-post-req.json doc/api_samples/os-simple-tenant-usage/server-post-req.xml doc/api_samples/os-simple-tenant-usage/server-post-resp.json doc/api_samples/os-simple-tenant-usage/server-post-resp.xml doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.json doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.xml doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.json doc/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.xml doc/api_samples/os-tenant-networks/networks-list-res.json doc/api_samples/os-tenant-networks/networks-list-res.xml doc/api_samples/os-tenant-networks/networks-post-req.json doc/api_samples/os-tenant-networks/networks-post-req.xml doc/api_samples/os-tenant-networks/networks-post-res.json doc/api_samples/os-tenant-networks/networks-post-res.xml doc/api_samples/os-used-limits/usedlimits-get-resp.json doc/api_samples/os-used-limits/usedlimits-get-resp.xml doc/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json doc/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml doc/api_samples/os-user-data/userdata-post-req.json doc/api_samples/os-user-data/userdata-post-req.xml doc/api_samples/os-user-data/userdata-post-resp.json doc/api_samples/os-user-data/userdata-post-resp.xml doc/api_samples/os-user-quotas/user-quotas-show-get-resp.json doc/api_samples/os-user-quotas/user-quotas-show-get-resp.xml doc/api_samples/os-user-quotas/user-quotas-update-post-req.json doc/api_samples/os-user-quotas/user-quotas-update-post-req.xml doc/api_samples/os-user-quotas/user-quotas-update-post-resp.json doc/api_samples/os-user-quotas/user-quotas-update-post-resp.xml doc/api_samples/os-virtual-interfaces/server-post-req.json doc/api_samples/os-virtual-interfaces/server-post-req.xml doc/api_samples/os-virtual-interfaces/server-post-resp.json doc/api_samples/os-virtual-interfaces/server-post-resp.xml doc/api_samples/os-virtual-interfaces/vifs-list-resp.json doc/api_samples/os-virtual-interfaces/vifs-list-resp.xml doc/api_samples/os-volume-attachment-update/server-post-req.json doc/api_samples/os-volume-attachment-update/server-post-req.xml doc/api_samples/os-volume-attachment-update/server-post-resp.json doc/api_samples/os-volume-attachment-update/server-post-resp.xml doc/api_samples/os-volume-attachment-update/update-volume-req.json doc/api_samples/os-volume-attachment-update/update-volume-req.xml doc/api_samples/os-volumes/attach-volume-to-server-req.json doc/api_samples/os-volumes/attach-volume-to-server-req.xml doc/api_samples/os-volumes/attach-volume-to-server-resp.json doc/api_samples/os-volumes/attach-volume-to-server-resp.xml doc/api_samples/os-volumes/list-volume-attachments-resp.json doc/api_samples/os-volumes/list-volume-attachments-resp.xml doc/api_samples/os-volumes/os-volumes-detail-resp.json doc/api_samples/os-volumes/os-volumes-detail-resp.xml doc/api_samples/os-volumes/os-volumes-get-resp.json doc/api_samples/os-volumes/os-volumes-get-resp.xml doc/api_samples/os-volumes/os-volumes-index-resp.json doc/api_samples/os-volumes/os-volumes-index-resp.xml doc/api_samples/os-volumes/os-volumes-post-req.json doc/api_samples/os-volumes/os-volumes-post-req.xml doc/api_samples/os-volumes/os-volumes-post-resp.json doc/api_samples/os-volumes/os-volumes-post-resp.xml doc/api_samples/os-volumes/server-post-req.json doc/api_samples/os-volumes/server-post-req.xml doc/api_samples/os-volumes/server-post-resp.json doc/api_samples/os-volumes/server-post-resp.xml doc/api_samples/os-volumes/snapshot-create-req.json doc/api_samples/os-volumes/snapshot-create-req.xml doc/api_samples/os-volumes/snapshot-create-resp.json doc/api_samples/os-volumes/snapshot-create-resp.xml doc/api_samples/os-volumes/snapshots-detail-resp.json doc/api_samples/os-volumes/snapshots-detail-resp.xml doc/api_samples/os-volumes/snapshots-list-resp.json doc/api_samples/os-volumes/snapshots-list-resp.xml doc/api_samples/os-volumes/snapshots-show-resp.json doc/api_samples/os-volumes/snapshots-show-resp.xml doc/api_samples/os-volumes/volume-attachment-detail-resp.json doc/api_samples/os-volumes/volume-attachment-detail-resp.xml doc/ext/__init__.py doc/ext/nova_todo.py doc/source/conf.py doc/source/index.rst doc/source/_ga/layout.html doc/source/devref/addmethod.openstackapi.rst doc/source/devref/aggregates.rst doc/source/devref/api.rst doc/source/devref/architecture.rst doc/source/devref/compute.rst doc/source/devref/database.rst doc/source/devref/development.environment.rst doc/source/devref/fakes.rst doc/source/devref/filter_scheduler.rst doc/source/devref/gerrit.rst doc/source/devref/glance.rst doc/source/devref/gmr.rst doc/source/devref/hooks.rst doc/source/devref/il8n.rst doc/source/devref/index.rst doc/source/devref/jenkins.rst doc/source/devref/launchpad.rst doc/source/devref/network.rst doc/source/devref/nova.rst doc/source/devref/objectstore.rst doc/source/devref/rc.local doc/source/devref/rpc.rst doc/source/devref/scheduler.rst doc/source/devref/services.rst doc/source/devref/threading.rst doc/source/devref/unit_tests.rst doc/source/devref/vmstates.rst doc/source/image_src/PowerStates.odp doc/source/images/PowerStates1.png doc/source/images/PowerStates2.png doc/source/images/filteringWorkflow1.png doc/source/images/filteringWorkflow2.png doc/source/images/run_instance_walkthrough.png doc/source/images/rpc/arch.png doc/source/images/rpc/arch.svg doc/source/images/rpc/flow1.png doc/source/images/rpc/flow1.svg doc/source/images/rpc/flow2.png doc/source/images/rpc/flow2.svg doc/source/images/rpc/rabt.png doc/source/images/rpc/rabt.svg doc/source/images/rpc/state.png doc/source/man/nova-all.rst doc/source/man/nova-api-ec2.rst doc/source/man/nova-api-metadata.rst doc/source/man/nova-api-os-compute.rst doc/source/man/nova-api.rst doc/source/man/nova-baremetal-deploy-helper.rst doc/source/man/nova-baremetal-manage.rst doc/source/man/nova-cert.rst doc/source/man/nova-compute.rst doc/source/man/nova-conductor.rst doc/source/man/nova-console.rst doc/source/man/nova-consoleauth.rst doc/source/man/nova-dhcpbridge.rst doc/source/man/nova-manage.rst doc/source/man/nova-network.rst doc/source/man/nova-novncproxy.rst doc/source/man/nova-objectstore.rst doc/source/man/nova-rootwrap.rst doc/source/man/nova-rpc-zmq-receiver.rst doc/source/man/nova-scheduler.rst doc/source/man/nova-spicehtml5proxy.rst doc/source/man/nova-xvpvncproxy.rst doc/v3/api_samples/all_extensions/server-get-resp.json doc/v3/api_samples/all_extensions/server-post-req.json doc/v3/api_samples/all_extensions/server-post-resp.json doc/v3/api_samples/all_extensions/servers-details-resp.json doc/v3/api_samples/all_extensions/servers-list-resp.json doc/v3/api_samples/consoles/consoles-create-req.json doc/v3/api_samples/consoles/consoles-get-resp.json doc/v3/api_samples/consoles/consoles-list-get-resp.json doc/v3/api_samples/consoles/server-post-req.json doc/v3/api_samples/consoles/server-post-resp.json doc/v3/api_samples/extension-info/extensions-get-resp.json doc/v3/api_samples/extension-info/extensions-list-resp.json doc/v3/api_samples/flavor-access/flavor-access-add-tenant-req.json doc/v3/api_samples/flavor-access/flavor-access-add-tenant-resp.json doc/v3/api_samples/flavor-access/flavor-access-create-req.json doc/v3/api_samples/flavor-access/flavor-access-create-resp.json doc/v3/api_samples/flavor-access/flavor-access-detail-resp.json doc/v3/api_samples/flavor-access/flavor-access-list-resp.json doc/v3/api_samples/flavor-access/flavor-access-remove-tenant-req.json doc/v3/api_samples/flavor-access/flavor-access-remove-tenant-resp.json doc/v3/api_samples/flavor-access/flavor-access-show-resp.json doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-req.json doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-resp.json doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-get-resp.json doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-list-resp.json doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-req.json doc/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-resp.json doc/v3/api_samples/flavor-manage/flavor-create-post-req.json doc/v3/api_samples/flavor-manage/flavor-create-post-resp.json doc/v3/api_samples/flavors/flavor-get-resp.json doc/v3/api_samples/flavors/flavors-detail-resp.json doc/v3/api_samples/flavors/flavors-list-resp.json doc/v3/api_samples/keypairs/keypairs-get-resp.json doc/v3/api_samples/keypairs/keypairs-import-post-req.json doc/v3/api_samples/keypairs/keypairs-import-post-resp.json doc/v3/api_samples/keypairs/keypairs-post-req.json doc/v3/api_samples/keypairs/keypairs-post-resp.json doc/v3/api_samples/os-access-ips/server-action-rebuild-resp.json doc/v3/api_samples/os-access-ips/server-action-rebuild.json doc/v3/api_samples/os-access-ips/server-get-resp.json doc/v3/api_samples/os-access-ips/server-post-req.json doc/v3/api_samples/os-access-ips/server-post-resp.json doc/v3/api_samples/os-access-ips/server-put-req.json doc/v3/api_samples/os-access-ips/server-put-resp.json doc/v3/api_samples/os-access-ips/servers-details-resp.json doc/v3/api_samples/os-admin-actions/admin-actions-inject-network-info.json doc/v3/api_samples/os-admin-actions/admin-actions-reset-network.json doc/v3/api_samples/os-admin-actions/admin-actions-reset-server-state.json doc/v3/api_samples/os-admin-actions/server-post-req.json doc/v3/api_samples/os-admin-actions/server-post-resp.json doc/v3/api_samples/os-admin-password/admin-password-change-password.json doc/v3/api_samples/os-admin-password/server-post-req.json doc/v3/api_samples/os-admin-password/server-post-resp.json doc/v3/api_samples/os-agents/agent-post-req.json doc/v3/api_samples/os-agents/agent-post-resp.json doc/v3/api_samples/os-agents/agent-update-put-req.json doc/v3/api_samples/os-agents/agent-update-put-resp.json doc/v3/api_samples/os-agents/agents-get-resp.json doc/v3/api_samples/os-aggregates/aggregate-add-host-post-req.json doc/v3/api_samples/os-aggregates/aggregate-metadata-post-req.json doc/v3/api_samples/os-aggregates/aggregate-post-req.json doc/v3/api_samples/os-aggregates/aggregate-post-resp.json doc/v3/api_samples/os-aggregates/aggregate-remove-host-post-req.json doc/v3/api_samples/os-aggregates/aggregate-update-post-req.json doc/v3/api_samples/os-aggregates/aggregate-update-post-resp.json doc/v3/api_samples/os-aggregates/aggregates-add-host-post-resp.json doc/v3/api_samples/os-aggregates/aggregates-get-resp.json doc/v3/api_samples/os-aggregates/aggregates-list-get-resp.json doc/v3/api_samples/os-aggregates/aggregates-metadata-post-resp.json doc/v3/api_samples/os-aggregates/aggregates-remove-host-post-resp.json doc/v3/api_samples/os-attach-interfaces/attach-interfaces-create-req.json doc/v3/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json doc/v3/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json doc/v3/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json doc/v3/api_samples/os-attach-interfaces/server-post-req.json doc/v3/api_samples/os-attach-interfaces/server-post-resp.json doc/v3/api_samples/os-availability-zone/availability-zone-detail-resp.json doc/v3/api_samples/os-availability-zone/availability-zone-list-resp.json doc/v3/api_samples/os-availability-zone/server-post-req.json doc/v3/api_samples/os-availability-zone/server-post-resp.json doc/v3/api_samples/os-cells/cells-capacities-resp.json doc/v3/api_samples/os-cells/cells-get-resp.json doc/v3/api_samples/os-cells/cells-list-empty-resp.json doc/v3/api_samples/os-cells/cells-list-resp.json doc/v3/api_samples/os-certificates/certificate-create-req.json doc/v3/api_samples/os-certificates/certificate-create-resp.json doc/v3/api_samples/os-certificates/certificate-get-root-resp.json doc/v3/api_samples/os-config-drive/server-config-drive-get-resp.json doc/v3/api_samples/os-config-drive/server-post-req.json doc/v3/api_samples/os-config-drive/server-post-resp.json doc/v3/api_samples/os-config-drive/servers-config-drive-details-resp.json doc/v3/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json doc/v3/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json doc/v3/api_samples/os-console-auth-tokens/server-post-req.json doc/v3/api_samples/os-console-auth-tokens/server-post-resp.json doc/v3/api_samples/os-console-output/console-output-post-req.json doc/v3/api_samples/os-console-output/console-output-post-resp.json doc/v3/api_samples/os-console-output/server-post-req.json doc/v3/api_samples/os-console-output/server-post-resp.json doc/v3/api_samples/os-create-backup/create-backup-req.json doc/v3/api_samples/os-create-backup/server-post-req.json doc/v3/api_samples/os-create-backup/server-post-resp.json doc/v3/api_samples/os-deferred-delete/force-delete-post-req.json doc/v3/api_samples/os-deferred-delete/restore-post-req.json doc/v3/api_samples/os-deferred-delete/server-post-req.json doc/v3/api_samples/os-deferred-delete/server-post-resp.json doc/v3/api_samples/os-evacuate/server-evacuate-req.json doc/v3/api_samples/os-evacuate/server-evacuate-resp.json doc/v3/api_samples/os-evacuate/server-post-req.json doc/v3/api_samples/os-evacuate/server-post-resp.json doc/v3/api_samples/os-extended-availability-zone/server-get-resp.json doc/v3/api_samples/os-extended-availability-zone/server-post-req.json doc/v3/api_samples/os-extended-availability-zone/server-post-resp.json doc/v3/api_samples/os-extended-availability-zone/servers-detail-resp.json doc/v3/api_samples/os-extended-server-attributes/server-get-resp.json doc/v3/api_samples/os-extended-server-attributes/server-post-req.json doc/v3/api_samples/os-extended-server-attributes/server-post-resp.json doc/v3/api_samples/os-extended-server-attributes/servers-detail-resp.json doc/v3/api_samples/os-extended-status/server-get-resp.json doc/v3/api_samples/os-extended-status/server-post-req.json doc/v3/api_samples/os-extended-status/server-post-resp.json doc/v3/api_samples/os-extended-status/servers-detail-resp.json doc/v3/api_samples/os-extended-volumes/attach-volume-req.json doc/v3/api_samples/os-extended-volumes/detach-volume-req.json doc/v3/api_samples/os-extended-volumes/server-get-resp.json doc/v3/api_samples/os-extended-volumes/server-post-req.json doc/v3/api_samples/os-extended-volumes/server-post-resp.json doc/v3/api_samples/os-extended-volumes/servers-detail-resp.json doc/v3/api_samples/os-extended-volumes/swap-volume-req.json doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json doc/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json doc/v3/api_samples/os-hide-server-addresses/server-get-resp.json doc/v3/api_samples/os-hide-server-addresses/server-post-req.json doc/v3/api_samples/os-hide-server-addresses/server-post-resp.json doc/v3/api_samples/os-hide-server-addresses/servers-details-resp.json doc/v3/api_samples/os-hide-server-addresses/servers-list-resp.json doc/v3/api_samples/os-hosts/host-get-reboot.json doc/v3/api_samples/os-hosts/host-get-resp.json doc/v3/api_samples/os-hosts/host-get-shutdown.json doc/v3/api_samples/os-hosts/host-get-startup.json doc/v3/api_samples/os-hosts/host-put-maintenance-req.json doc/v3/api_samples/os-hosts/host-put-maintenance-resp.json doc/v3/api_samples/os-hosts/hosts-list-compute-service-resp.json doc/v3/api_samples/os-hosts/hosts-list-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-detail-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-list-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-search-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-servers-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-show-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-statistics-resp.json doc/v3/api_samples/os-hypervisors/hypervisors-uptime-resp.json doc/v3/api_samples/os-instance-actions/instance-action-get-resp.json doc/v3/api_samples/os-instance-actions/instance-actions-list-resp.json doc/v3/api_samples/os-lock-server/lock-server.json doc/v3/api_samples/os-lock-server/server-post-req.json doc/v3/api_samples/os-lock-server/server-post-resp.json doc/v3/api_samples/os-lock-server/unlock-server.json doc/v3/api_samples/os-migrate-server/live-migrate-server.json doc/v3/api_samples/os-migrate-server/migrate-server.json doc/v3/api_samples/os-migrate-server/server-post-req.json doc/v3/api_samples/os-migrate-server/server-post-resp.json doc/v3/api_samples/os-migrations/migrations-get.json doc/v3/api_samples/os-multinic/multinic-add-fixed-ip-req.json doc/v3/api_samples/os-multinic/multinic-remove-fixed-ip-req.json doc/v3/api_samples/os-multinic/server-post-req.json doc/v3/api_samples/os-multinic/server-post-resp.json doc/v3/api_samples/os-pause-server/pause-server.json doc/v3/api_samples/os-pause-server/server-post-req.json doc/v3/api_samples/os-pause-server/server-post-resp.json doc/v3/api_samples/os-pause-server/unpause-server.json doc/v3/api_samples/os-pci/hypervisors-pci-detail-resp.json doc/v3/api_samples/os-pci/hypervisors-pci-show-resp.json doc/v3/api_samples/os-pci/pci-detail-resp.json doc/v3/api_samples/os-pci/pci-index-resp.json doc/v3/api_samples/os-pci/pci-show-resp.json doc/v3/api_samples/os-pci/server-get-resp.json doc/v3/api_samples/os-pci/server-post-req.json doc/v3/api_samples/os-pci/server-post-resp.json doc/v3/api_samples/os-pci/servers-detail-resp.json doc/v3/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json doc/v3/api_samples/os-quota-sets/quotas-show-get-resp.json doc/v3/api_samples/os-quota-sets/quotas-update-force-post-req.json doc/v3/api_samples/os-quota-sets/quotas-update-force-post-resp.json doc/v3/api_samples/os-quota-sets/quotas-update-post-req.json doc/v3/api_samples/os-quota-sets/quotas-update-post-resp.json doc/v3/api_samples/os-quota-sets/user-quotas-show-get-resp.json doc/v3/api_samples/os-quota-sets/user-quotas-update-post-req.json doc/v3/api_samples/os-quota-sets/user-quotas-update-post-resp.json doc/v3/api_samples/os-remote-consoles/get-rdp-console-post-req.json doc/v3/api_samples/os-remote-consoles/get-rdp-console-post-resp.json doc/v3/api_samples/os-remote-consoles/get-spice-console-post-req.json doc/v3/api_samples/os-remote-consoles/get-spice-console-post-resp.json doc/v3/api_samples/os-remote-consoles/get-vnc-console-post-req.json doc/v3/api_samples/os-remote-consoles/get-vnc-console-post-resp.json doc/v3/api_samples/os-remote-consoles/server-post-req.json doc/v3/api_samples/os-remote-consoles/server-post-resp.json doc/v3/api_samples/os-rescue/server-get-resp-rescue.json doc/v3/api_samples/os-rescue/server-get-resp-unrescue.json doc/v3/api_samples/os-rescue/server-post-req.json doc/v3/api_samples/os-rescue/server-post-resp.json doc/v3/api_samples/os-rescue/server-rescue-req.json doc/v3/api_samples/os-rescue/server-rescue.json doc/v3/api_samples/os-rescue/server-unrescue-req.json doc/v3/api_samples/os-scheduler-hints/scheduler-hints-post-req.json doc/v3/api_samples/os-scheduler-hints/scheduler-hints-post-resp.json doc/v3/api_samples/os-security-groups/server-get-resp.json doc/v3/api_samples/os-security-groups/server-post-req.json doc/v3/api_samples/os-security-groups/server-post-resp.json doc/v3/api_samples/os-security-groups/servers-detail-resp.json doc/v3/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json doc/v3/api_samples/os-server-diagnostics/server-post-req.json doc/v3/api_samples/os-server-diagnostics/server-post-resp.json doc/v3/api_samples/os-server-external-events/event-create-req.json doc/v3/api_samples/os-server-external-events/event-create-resp.json doc/v3/api_samples/os-server-external-events/server-post-req.json doc/v3/api_samples/os-server-external-events/server-post-resp.json doc/v3/api_samples/os-server-usage/server-get-resp.json doc/v3/api_samples/os-server-usage/server-post-req.json doc/v3/api_samples/os-server-usage/server-post-resp.json doc/v3/api_samples/os-server-usage/servers-detail-resp.json doc/v3/api_samples/os-services/service-disable-log-put-req.json doc/v3/api_samples/os-services/service-disable-log-put-resp.json doc/v3/api_samples/os-services/service-disable-put-req.json doc/v3/api_samples/os-services/service-disable-put-resp.json doc/v3/api_samples/os-services/service-enable-put-req.json doc/v3/api_samples/os-services/service-enable-put-resp.json doc/v3/api_samples/os-services/services-list-get-resp.json doc/v3/api_samples/os-shelve/os-shelve-offload.json doc/v3/api_samples/os-shelve/os-shelve.json doc/v3/api_samples/os-shelve/os-unshelve.json doc/v3/api_samples/os-shelve/server-post-req.json doc/v3/api_samples/os-shelve/server-post-resp.json doc/v3/api_samples/os-suspend-server/server-post-req.json doc/v3/api_samples/os-suspend-server/server-post-resp.json doc/v3/api_samples/os-suspend-server/server-resume.json doc/v3/api_samples/os-suspend-server/server-suspend.json doc/v3/api_samples/os-user-data/userdata-post-req.json doc/v3/api_samples/os-user-data/userdata-post-resp.json doc/v3/api_samples/server-ips/server-ips-network-resp.json doc/v3/api_samples/server-ips/server-ips-resp.json doc/v3/api_samples/server-ips/server-post-req.json doc/v3/api_samples/server-ips/server-post-resp.json doc/v3/api_samples/server-metadata/server-metadata-all-req.json doc/v3/api_samples/server-metadata/server-metadata-all-resp.json doc/v3/api_samples/server-metadata/server-metadata-req.json doc/v3/api_samples/server-metadata/server-metadata-resp.json doc/v3/api_samples/server-metadata/server-post-req.json doc/v3/api_samples/server-metadata/server-post-resp.json doc/v3/api_samples/servers/server-action-confirm-resize.json doc/v3/api_samples/servers/server-action-create-image.json doc/v3/api_samples/servers/server-action-reboot.json doc/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral.json doc/v3/api_samples/servers/server-action-rebuild-resp.json doc/v3/api_samples/servers/server-action-rebuild.json doc/v3/api_samples/servers/server-action-resize.json doc/v3/api_samples/servers/server-action-revert-resize.json doc/v3/api_samples/servers/server-get-resp.json doc/v3/api_samples/servers/server-post-req.json doc/v3/api_samples/servers/server-post-resp.json doc/v3/api_samples/servers/servers-details-resp.json doc/v3/api_samples/servers/servers-list-resp.json etc/nova/README-nova.conf.txt etc/nova/api-paste.ini etc/nova/cells.json etc/nova/logging_sample.conf etc/nova/policy.json etc/nova/release.sample etc/nova/rootwrap.conf etc/nova/rootwrap.d/api-metadata.filters etc/nova/rootwrap.d/baremetal-compute-ipmi.filters etc/nova/rootwrap.d/baremetal-deploy-helper.filters etc/nova/rootwrap.d/compute.filters etc/nova/rootwrap.d/network.filters nova/__init__.py nova/availability_zones.py nova/baserpc.py nova/block_device.py nova/config.py nova/context.py nova/crypto.py nova/debugger.py nova/exception.py nova/filters.py nova/hooks.py nova/loadables.py nova/manager.py nova/netconf.py nova/notifications.py nova/paths.py nova/policy.py nova/quota.py nova/rpc.py nova/safe_utils.py nova/service.py nova/test.py nova/utils.py nova/version.py nova/weights.py nova/wsgi.py nova.egg-info/PKG-INFO nova.egg-info/SOURCES.txt nova.egg-info/dependency_links.txt nova.egg-info/entry_points.txt nova.egg-info/not-zip-safe nova.egg-info/requires.txt nova.egg-info/top_level.txt nova/CA/.gitignore nova/CA/geninter.sh nova/CA/genrootca.sh nova/CA/openssl.cnf.tmpl nova/CA/newcerts/.placeholder nova/CA/private/.placeholder nova/CA/projects/.gitignore nova/CA/projects/.placeholder nova/CA/reqs/.gitignore nova/CA/reqs/.placeholder nova/api/__init__.py nova/api/auth.py nova/api/manager.py nova/api/sizelimit.py nova/api/validator.py nova/api/ec2/__init__.py nova/api/ec2/apirequest.py nova/api/ec2/cloud.py nova/api/ec2/ec2utils.py nova/api/ec2/faults.py nova/api/ec2/inst_state.py nova/api/metadata/__init__.py nova/api/metadata/base.py nova/api/metadata/handler.py nova/api/metadata/password.py nova/api/metadata/vendordata_json.py nova/api/openstack/__init__.py nova/api/openstack/auth.py nova/api/openstack/common.py nova/api/openstack/extensions.py nova/api/openstack/urlmap.py nova/api/openstack/wsgi.py nova/api/openstack/xmlutil.py nova/api/openstack/compute/__init__.py nova/api/openstack/compute/consoles.py nova/api/openstack/compute/extensions.py nova/api/openstack/compute/flavors.py nova/api/openstack/compute/image_metadata.py nova/api/openstack/compute/images.py nova/api/openstack/compute/ips.py nova/api/openstack/compute/limits.py nova/api/openstack/compute/server_metadata.py nova/api/openstack/compute/servers.py nova/api/openstack/compute/versions.py nova/api/openstack/compute/contrib/__init__.py nova/api/openstack/compute/contrib/admin_actions.py nova/api/openstack/compute/contrib/agents.py nova/api/openstack/compute/contrib/aggregates.py nova/api/openstack/compute/contrib/assisted_volume_snapshots.py nova/api/openstack/compute/contrib/attach_interfaces.py nova/api/openstack/compute/contrib/availability_zone.py nova/api/openstack/compute/contrib/baremetal_ext_status.py nova/api/openstack/compute/contrib/baremetal_nodes.py nova/api/openstack/compute/contrib/block_device_mapping_v2_boot.py nova/api/openstack/compute/contrib/cell_capacities.py nova/api/openstack/compute/contrib/cells.py nova/api/openstack/compute/contrib/certificates.py nova/api/openstack/compute/contrib/cloudpipe.py nova/api/openstack/compute/contrib/cloudpipe_update.py nova/api/openstack/compute/contrib/config_drive.py nova/api/openstack/compute/contrib/console_auth_tokens.py nova/api/openstack/compute/contrib/console_output.py nova/api/openstack/compute/contrib/consoles.py nova/api/openstack/compute/contrib/createserverext.py nova/api/openstack/compute/contrib/deferred_delete.py nova/api/openstack/compute/contrib/disk_config.py nova/api/openstack/compute/contrib/evacuate.py nova/api/openstack/compute/contrib/extended_availability_zone.py nova/api/openstack/compute/contrib/extended_floating_ips.py nova/api/openstack/compute/contrib/extended_hypervisors.py nova/api/openstack/compute/contrib/extended_ips.py nova/api/openstack/compute/contrib/extended_ips_mac.py nova/api/openstack/compute/contrib/extended_quotas.py nova/api/openstack/compute/contrib/extended_server_attributes.py nova/api/openstack/compute/contrib/extended_services.py nova/api/openstack/compute/contrib/extended_services_delete.py nova/api/openstack/compute/contrib/extended_status.py nova/api/openstack/compute/contrib/extended_virtual_interfaces_net.py nova/api/openstack/compute/contrib/extended_volumes.py nova/api/openstack/compute/contrib/fixed_ips.py nova/api/openstack/compute/contrib/flavor_access.py nova/api/openstack/compute/contrib/flavor_disabled.py nova/api/openstack/compute/contrib/flavor_rxtx.py nova/api/openstack/compute/contrib/flavor_swap.py nova/api/openstack/compute/contrib/flavorextradata.py nova/api/openstack/compute/contrib/flavorextraspecs.py nova/api/openstack/compute/contrib/flavormanage.py nova/api/openstack/compute/contrib/floating_ip_dns.py nova/api/openstack/compute/contrib/floating_ip_pools.py nova/api/openstack/compute/contrib/floating_ips.py nova/api/openstack/compute/contrib/floating_ips_bulk.py nova/api/openstack/compute/contrib/fping.py nova/api/openstack/compute/contrib/hide_server_addresses.py nova/api/openstack/compute/contrib/hosts.py nova/api/openstack/compute/contrib/hypervisors.py nova/api/openstack/compute/contrib/image_size.py nova/api/openstack/compute/contrib/instance_actions.py nova/api/openstack/compute/contrib/instance_usage_audit_log.py nova/api/openstack/compute/contrib/keypairs.py nova/api/openstack/compute/contrib/migrations.py nova/api/openstack/compute/contrib/multinic.py nova/api/openstack/compute/contrib/multiple_create.py nova/api/openstack/compute/contrib/networks_associate.py nova/api/openstack/compute/contrib/os_networks.py nova/api/openstack/compute/contrib/os_tenant_networks.py nova/api/openstack/compute/contrib/preserve_ephemeral_rebuild.py nova/api/openstack/compute/contrib/quotas.py nova/api/openstack/compute/contrib/rescue.py nova/api/openstack/compute/contrib/scheduler_hints.py nova/api/openstack/compute/contrib/security_group_default_rules.py nova/api/openstack/compute/contrib/security_groups.py nova/api/openstack/compute/contrib/server_diagnostics.py nova/api/openstack/compute/contrib/server_external_events.py nova/api/openstack/compute/contrib/server_groups.py nova/api/openstack/compute/contrib/server_password.py nova/api/openstack/compute/contrib/server_start_stop.py nova/api/openstack/compute/contrib/server_usage.py nova/api/openstack/compute/contrib/services.py nova/api/openstack/compute/contrib/shelve.py nova/api/openstack/compute/contrib/simple_tenant_usage.py nova/api/openstack/compute/contrib/used_limits.py nova/api/openstack/compute/contrib/used_limits_for_admin.py nova/api/openstack/compute/contrib/user_data.py nova/api/openstack/compute/contrib/user_quotas.py nova/api/openstack/compute/contrib/virtual_interfaces.py nova/api/openstack/compute/contrib/volume_attachment_update.py nova/api/openstack/compute/contrib/volumes.py nova/api/openstack/compute/plugins/__init__.py nova/api/openstack/compute/plugins/v3/__init__.py nova/api/openstack/compute/plugins/v3/access_ips.py nova/api/openstack/compute/plugins/v3/admin_actions.py nova/api/openstack/compute/plugins/v3/admin_password.py nova/api/openstack/compute/plugins/v3/agents.py nova/api/openstack/compute/plugins/v3/aggregates.py nova/api/openstack/compute/plugins/v3/attach_interfaces.py nova/api/openstack/compute/plugins/v3/availability_zone.py nova/api/openstack/compute/plugins/v3/block_device_mapping.py nova/api/openstack/compute/plugins/v3/cells.py nova/api/openstack/compute/plugins/v3/certificates.py nova/api/openstack/compute/plugins/v3/config_drive.py nova/api/openstack/compute/plugins/v3/console_auth_tokens.py nova/api/openstack/compute/plugins/v3/console_output.py nova/api/openstack/compute/plugins/v3/consoles.py nova/api/openstack/compute/plugins/v3/create_backup.py nova/api/openstack/compute/plugins/v3/deferred_delete.py nova/api/openstack/compute/plugins/v3/evacuate.py nova/api/openstack/compute/plugins/v3/extended_availability_zone.py nova/api/openstack/compute/plugins/v3/extended_server_attributes.py nova/api/openstack/compute/plugins/v3/extended_status.py nova/api/openstack/compute/plugins/v3/extended_volumes.py nova/api/openstack/compute/plugins/v3/extension_info.py nova/api/openstack/compute/plugins/v3/flavor_access.py nova/api/openstack/compute/plugins/v3/flavor_manage.py nova/api/openstack/compute/plugins/v3/flavor_rxtx.py nova/api/openstack/compute/plugins/v3/flavors.py nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py nova/api/openstack/compute/plugins/v3/hide_server_addresses.py nova/api/openstack/compute/plugins/v3/hosts.py nova/api/openstack/compute/plugins/v3/hypervisors.py nova/api/openstack/compute/plugins/v3/instance_actions.py nova/api/openstack/compute/plugins/v3/ips.py nova/api/openstack/compute/plugins/v3/keypairs.py nova/api/openstack/compute/plugins/v3/lock_server.py nova/api/openstack/compute/plugins/v3/migrate_server.py nova/api/openstack/compute/plugins/v3/migrations.py nova/api/openstack/compute/plugins/v3/multinic.py nova/api/openstack/compute/plugins/v3/multiple_create.py nova/api/openstack/compute/plugins/v3/pause_server.py nova/api/openstack/compute/plugins/v3/pci.py nova/api/openstack/compute/plugins/v3/quota_sets.py nova/api/openstack/compute/plugins/v3/remote_consoles.py nova/api/openstack/compute/plugins/v3/rescue.py nova/api/openstack/compute/plugins/v3/scheduler_hints.py nova/api/openstack/compute/plugins/v3/security_groups.py nova/api/openstack/compute/plugins/v3/server_diagnostics.py nova/api/openstack/compute/plugins/v3/server_external_events.py nova/api/openstack/compute/plugins/v3/server_metadata.py nova/api/openstack/compute/plugins/v3/server_password.py nova/api/openstack/compute/plugins/v3/server_usage.py nova/api/openstack/compute/plugins/v3/servers.py nova/api/openstack/compute/plugins/v3/services.py nova/api/openstack/compute/plugins/v3/shelve.py nova/api/openstack/compute/plugins/v3/suspend_server.py nova/api/openstack/compute/plugins/v3/user_data.py nova/api/openstack/compute/plugins/v3/versions.py nova/api/openstack/compute/schemas/__init__.py nova/api/openstack/compute/schemas/atom-link.rng nova/api/openstack/compute/schemas/atom.rng nova/api/openstack/compute/schemas/v1.1/addresses.rng nova/api/openstack/compute/schemas/v1.1/extension.rng nova/api/openstack/compute/schemas/v1.1/extensions.rng nova/api/openstack/compute/schemas/v1.1/flavor.rng nova/api/openstack/compute/schemas/v1.1/flavors.rng nova/api/openstack/compute/schemas/v1.1/flavors_index.rng nova/api/openstack/compute/schemas/v1.1/image.rng nova/api/openstack/compute/schemas/v1.1/images.rng nova/api/openstack/compute/schemas/v1.1/images_index.rng nova/api/openstack/compute/schemas/v1.1/limits.rng nova/api/openstack/compute/schemas/v1.1/metadata.rng nova/api/openstack/compute/schemas/v1.1/server.rng nova/api/openstack/compute/schemas/v1.1/servers.rng nova/api/openstack/compute/schemas/v1.1/servers_index.rng nova/api/openstack/compute/schemas/v1.1/version.rng nova/api/openstack/compute/schemas/v1.1/versions.rng nova/api/openstack/compute/schemas/v3/__init__.py nova/api/openstack/compute/schemas/v3/admin_password.py nova/api/openstack/compute/schemas/v3/agents.py nova/api/openstack/compute/schemas/v3/console_output.py nova/api/openstack/compute/schemas/v3/evacuate.py nova/api/openstack/compute/schemas/v3/extended_volumes.py nova/api/openstack/compute/schemas/v3/flavor_access.py nova/api/openstack/compute/schemas/v3/keypairs.py nova/api/openstack/compute/schemas/v3/multinic.py nova/api/openstack/compute/schemas/v3/rescue.py nova/api/openstack/compute/views/__init__.py nova/api/openstack/compute/views/addresses.py nova/api/openstack/compute/views/flavors.py nova/api/openstack/compute/views/images.py nova/api/openstack/compute/views/limits.py nova/api/openstack/compute/views/servers.py nova/api/openstack/compute/views/versions.py nova/api/validation/__init__.py nova/api/validation/parameter_types.py nova/api/validation/validators.py nova/cells/__init__.py nova/cells/driver.py nova/cells/manager.py nova/cells/messaging.py nova/cells/opts.py nova/cells/rpc_driver.py nova/cells/rpcapi.py nova/cells/scheduler.py nova/cells/state.py nova/cells/utils.py nova/cells/filters/__init__.py nova/cells/filters/image_properties.py nova/cells/filters/target_cell.py nova/cells/weights/__init__.py nova/cells/weights/mute_child.py nova/cells/weights/ram_by_instance_type.py nova/cells/weights/weight_offset.py nova/cert/__init__.py nova/cert/manager.py nova/cert/rpcapi.py nova/cloudpipe/__init__.py nova/cloudpipe/bootscript.template nova/cloudpipe/client.ovpn.template nova/cloudpipe/pipelib.py nova/cmd/__init__.py nova/cmd/all.py nova/cmd/api.py nova/cmd/api_ec2.py nova/cmd/api_metadata.py nova/cmd/api_os_compute.py nova/cmd/baremetal_deploy_helper.py nova/cmd/baremetal_manage.py nova/cmd/cells.py nova/cmd/cert.py nova/cmd/compute.py nova/cmd/conductor.py nova/cmd/console.py nova/cmd/consoleauth.py nova/cmd/dhcpbridge.py nova/cmd/manage.py nova/cmd/network.py nova/cmd/novnc.py nova/cmd/novncproxy.py nova/cmd/objectstore.py nova/cmd/scheduler.py nova/cmd/spicehtml5proxy.py nova/cmd/xvpvncproxy.py nova/compute/__init__.py nova/compute/api.py nova/compute/cells_api.py nova/compute/claims.py nova/compute/fakevirtinstance.xml nova/compute/flavors.py nova/compute/instance_actions.py nova/compute/manager.py nova/compute/power_state.py nova/compute/resource_tracker.py nova/compute/rpcapi.py nova/compute/stats.py nova/compute/task_states.py nova/compute/utils.py nova/compute/vm_mode.py nova/compute/vm_states.py nova/compute/monitors/__init__.py nova/compute/monitors/cpu_monitor.py nova/compute/monitors/virt/__init__.py nova/compute/monitors/virt/cpu_monitor.py nova/conductor/__init__.py nova/conductor/api.py nova/conductor/manager.py nova/conductor/rpcapi.py nova/conductor/tasks/__init__.py nova/conductor/tasks/live_migrate.py nova/console/__init__.py nova/console/api.py nova/console/fake.py nova/console/manager.py nova/console/rpcapi.py nova/console/vmrc.py nova/console/vmrc_manager.py nova/console/websocketproxy.py nova/console/xvp.conf.template nova/console/xvp.py nova/consoleauth/__init__.py nova/consoleauth/manager.py nova/consoleauth/rpcapi.py nova/db/__init__.py nova/db/api.py nova/db/base.py nova/db/migration.py nova/db/sqlalchemy/__init__.py nova/db/sqlalchemy/api.py nova/db/sqlalchemy/migration.py nova/db/sqlalchemy/models.py nova/db/sqlalchemy/types.py nova/db/sqlalchemy/utils.py nova/db/sqlalchemy/migrate_repo/README nova/db/sqlalchemy/migrate_repo/__init__.py nova/db/sqlalchemy/migrate_repo/manage.py nova/db/sqlalchemy/migrate_repo/migrate.cfg nova/db/sqlalchemy/migrate_repo/versions/216_havana.py nova/db/sqlalchemy/migrate_repo/versions/217_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/218_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/219_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/220_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/221_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/222_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/223_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/224_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/225_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/226_placeholder.py nova/db/sqlalchemy/migrate_repo/versions/227_fix_project_user_quotas_resource_length.py nova/db/sqlalchemy/migrate_repo/versions/228_add_metrics_in_compute_nodes.py nova/db/sqlalchemy/migrate_repo/versions/229_add_extra_resources_in_compute_nodes.py nova/db/sqlalchemy/migrate_repo/versions/230_add_details_column_to_instance_actions_events.py nova/db/sqlalchemy/migrate_repo/versions/231_add_ephemeral_key_uuid.py nova/db/sqlalchemy/migrate_repo/versions/232_drop_dump_tables.py nova/db/sqlalchemy/migrate_repo/versions/233_add_stats_in_compute_nodes.py nova/db/sqlalchemy/migrate_repo/versions/__init__.py nova/hacking/__init__.py nova/hacking/checks.py nova/image/__init__.py nova/image/glance.py nova/image/s3.py nova/image/download/__init__.py nova/image/download/base.py nova/image/download/file.py nova/ipv6/__init__.py nova/ipv6/account_identifier.py nova/ipv6/api.py nova/ipv6/rfc2462.py nova/keymgr/__init__.py nova/keymgr/conf_key_mgr.py nova/keymgr/key.py nova/keymgr/key_mgr.py nova/keymgr/mock_key_mgr.py nova/keymgr/not_implemented_key_mgr.py nova/keymgr/single_key_mgr.py nova/locale/nova.pot nova/locale/ar/LC_MESSAGES/nova.po nova/locale/bg_BG/LC_MESSAGES/nova.po nova/locale/bn_IN/LC_MESSAGES/nova.po nova/locale/bs/LC_MESSAGES/nova.po nova/locale/ca/LC_MESSAGES/nova.po nova/locale/cs/LC_MESSAGES/nova.po nova/locale/da/LC_MESSAGES/nova.po nova/locale/de/LC_MESSAGES/nova.po nova/locale/el/LC_MESSAGES/nova.po nova/locale/en_AU/LC_MESSAGES/nova.po nova/locale/en_GB/LC_MESSAGES/nova.po nova/locale/en_US/LC_MESSAGES/nova.po nova/locale/es/LC_MESSAGES/nova.po nova/locale/es_MX/LC_MESSAGES/nova.po nova/locale/eu/LC_MESSAGES/nova.po nova/locale/eu_ES/LC_MESSAGES/nova.po nova/locale/fa/LC_MESSAGES/nova.po nova/locale/fi_FI/LC_MESSAGES/nova.po nova/locale/fil/LC_MESSAGES/nova.po nova/locale/fr/LC_MESSAGES/nova.po nova/locale/gl/LC_MESSAGES/nova.po nova/locale/he/LC_MESSAGES/nova.po nova/locale/he_IL/LC_MESSAGES/nova.po nova/locale/hi/LC_MESSAGES/nova.po nova/locale/hr/LC_MESSAGES/nova.po nova/locale/hu/LC_MESSAGES/nova.po nova/locale/id/LC_MESSAGES/nova.po nova/locale/is_IS/LC_MESSAGES/nova.po nova/locale/it/LC_MESSAGES/nova.po nova/locale/it_IT/LC_MESSAGES/nova.po nova/locale/ja/LC_MESSAGES/nova.po nova/locale/ka_GE/LC_MESSAGES/nova.po nova/locale/km/LC_MESSAGES/nova.po nova/locale/kn/LC_MESSAGES/nova.po nova/locale/ko/LC_MESSAGES/nova.po nova/locale/ko_KR/LC_MESSAGES/nova.po nova/locale/ml_IN/LC_MESSAGES/nova.po nova/locale/mr_IN/LC_MESSAGES/nova.po nova/locale/ms/LC_MESSAGES/nova.po nova/locale/nb/LC_MESSAGES/nova.po nova/locale/ne/LC_MESSAGES/nova.po nova/locale/nl_NL/LC_MESSAGES/nova.po nova/locale/pa_IN/LC_MESSAGES/nova.po nova/locale/pl_PL/LC_MESSAGES/nova.po nova/locale/pt/LC_MESSAGES/nova.po nova/locale/pt_BR/LC_MESSAGES/nova.po nova/locale/ro/LC_MESSAGES/nova.po nova/locale/ru/LC_MESSAGES/nova.po nova/locale/ru_RU/LC_MESSAGES/nova.po nova/locale/sk/LC_MESSAGES/nova.po nova/locale/sl_SI/LC_MESSAGES/nova.po nova/locale/sq/LC_MESSAGES/nova.po nova/locale/sr/LC_MESSAGES/nova.po nova/locale/sv/LC_MESSAGES/nova.po nova/locale/sw_KE/LC_MESSAGES/nova.po nova/locale/ta/LC_MESSAGES/nova.po nova/locale/te_IN/LC_MESSAGES/nova.po nova/locale/tl/LC_MESSAGES/nova.po nova/locale/tl_PH/LC_MESSAGES/nova.po nova/locale/tr/LC_MESSAGES/nova.po nova/locale/tr_TR/LC_MESSAGES/nova.po nova/locale/uk/LC_MESSAGES/nova.po nova/locale/ur/LC_MESSAGES/nova.po nova/locale/vi_VN/LC_MESSAGES/nova.po nova/locale/zh_CN/LC_MESSAGES/nova.po nova/locale/zh_HK/LC_MESSAGES/nova.po nova/locale/zh_TW/LC_MESSAGES/nova.po nova/network/__init__.py nova/network/api.py nova/network/dns_driver.py nova/network/driver.py nova/network/floating_ips.py nova/network/l3.py nova/network/ldapdns.py nova/network/linux_net.py nova/network/manager.py nova/network/minidns.py nova/network/model.py nova/network/noop_dns_driver.py nova/network/nova_ipam_lib.py nova/network/rpcapi.py nova/network/neutronv2/__init__.py nova/network/neutronv2/api.py nova/network/neutronv2/constants.py nova/network/security_group/__init__.py nova/network/security_group/neutron_driver.py nova/network/security_group/openstack_driver.py nova/network/security_group/security_group_base.py nova/objects/__init__.py nova/objects/aggregate.py nova/objects/base.py nova/objects/block_device.py nova/objects/compute_node.py nova/objects/dns_domain.py nova/objects/external_event.py nova/objects/fields.py nova/objects/fixed_ip.py nova/objects/flavor.py nova/objects/floating_ip.py nova/objects/instance.py nova/objects/instance_action.py nova/objects/instance_fault.py nova/objects/instance_group.py nova/objects/instance_info_cache.py nova/objects/keypair.py nova/objects/migration.py nova/objects/network.py nova/objects/pci_device.py nova/objects/quotas.py nova/objects/security_group.py nova/objects/security_group_rule.py nova/objects/service.py nova/objects/utils.py nova/objects/virtual_interface.py nova/objectstore/__init__.py nova/objectstore/s3server.py nova/openstack/__init__.py nova/openstack/common/README nova/openstack/common/__init__.py nova/openstack/common/cliutils.py nova/openstack/common/context.py nova/openstack/common/eventlet_backdoor.py nova/openstack/common/excutils.py nova/openstack/common/fileutils.py nova/openstack/common/gettextutils.py nova/openstack/common/imageutils.py nova/openstack/common/importutils.py nova/openstack/common/jsonutils.py nova/openstack/common/local.py nova/openstack/common/lockutils.py nova/openstack/common/log.py nova/openstack/common/loopingcall.py nova/openstack/common/memorycache.py nova/openstack/common/network_utils.py nova/openstack/common/periodic_task.py nova/openstack/common/policy.py nova/openstack/common/processutils.py nova/openstack/common/service.py nova/openstack/common/sslutils.py nova/openstack/common/strutils.py nova/openstack/common/threadgroup.py nova/openstack/common/timeutils.py nova/openstack/common/units.py nova/openstack/common/uuidutils.py nova/openstack/common/versionutils.py nova/openstack/common/xmlutils.py nova/openstack/common/config/__init__.py nova/openstack/common/config/generator.py nova/openstack/common/db/__init__.py nova/openstack/common/db/api.py nova/openstack/common/db/exception.py nova/openstack/common/db/options.py nova/openstack/common/db/sqlalchemy/__init__.py nova/openstack/common/db/sqlalchemy/migration.py nova/openstack/common/db/sqlalchemy/models.py nova/openstack/common/db/sqlalchemy/provision.py nova/openstack/common/db/sqlalchemy/session.py nova/openstack/common/db/sqlalchemy/test_base.py nova/openstack/common/db/sqlalchemy/test_migrations.py nova/openstack/common/db/sqlalchemy/utils.py nova/openstack/common/fixture/__init__.py nova/openstack/common/fixture/config.py nova/openstack/common/fixture/lockutils.py nova/openstack/common/fixture/logging.py nova/openstack/common/fixture/mockpatch.py nova/openstack/common/fixture/moxstubout.py nova/openstack/common/middleware/__init__.py nova/openstack/common/middleware/base.py nova/openstack/common/middleware/request_id.py nova/openstack/common/report/__init__.py nova/openstack/common/report/guru_meditation_report.py nova/openstack/common/report/report.py nova/openstack/common/report/utils.py nova/openstack/common/report/generators/__init__.py nova/openstack/common/report/generators/conf.py nova/openstack/common/report/generators/threading.py nova/openstack/common/report/generators/version.py nova/openstack/common/report/models/__init__.py nova/openstack/common/report/models/base.py nova/openstack/common/report/models/conf.py nova/openstack/common/report/models/threading.py nova/openstack/common/report/models/version.py nova/openstack/common/report/models/with_default_views.py nova/openstack/common/report/views/__init__.py nova/openstack/common/report/views/jinja_view.py nova/openstack/common/report/views/json/__init__.py nova/openstack/common/report/views/json/generic.py nova/openstack/common/report/views/text/__init__.py nova/openstack/common/report/views/text/generic.py nova/openstack/common/report/views/text/header.py nova/openstack/common/report/views/text/threading.py nova/openstack/common/report/views/xml/__init__.py nova/openstack/common/report/views/xml/generic.py nova/pci/__init__.py nova/pci/pci_manager.py nova/pci/pci_request.py nova/pci/pci_stats.py nova/pci/pci_utils.py nova/pci/pci_whitelist.py nova/rdp/__init__.py nova/scheduler/__init__.py nova/scheduler/baremetal_host_manager.py nova/scheduler/caching_scheduler.py nova/scheduler/chance.py nova/scheduler/driver.py nova/scheduler/filter_scheduler.py nova/scheduler/host_manager.py nova/scheduler/manager.py nova/scheduler/rpcapi.py nova/scheduler/scheduler_options.py nova/scheduler/utils.py nova/scheduler/filters/__init__.py nova/scheduler/filters/affinity_filter.py nova/scheduler/filters/aggregate_image_properties_isolation.py nova/scheduler/filters/aggregate_instance_extra_specs.py nova/scheduler/filters/aggregate_multitenancy_isolation.py nova/scheduler/filters/all_hosts_filter.py nova/scheduler/filters/availability_zone_filter.py nova/scheduler/filters/compute_capabilities_filter.py nova/scheduler/filters/compute_filter.py nova/scheduler/filters/core_filter.py nova/scheduler/filters/disk_filter.py nova/scheduler/filters/extra_specs_ops.py nova/scheduler/filters/image_props_filter.py nova/scheduler/filters/io_ops_filter.py nova/scheduler/filters/isolated_hosts_filter.py nova/scheduler/filters/json_filter.py nova/scheduler/filters/metrics_filter.py nova/scheduler/filters/num_instances_filter.py nova/scheduler/filters/pci_passthrough_filter.py nova/scheduler/filters/ram_filter.py nova/scheduler/filters/retry_filter.py nova/scheduler/filters/trusted_filter.py nova/scheduler/filters/type_filter.py nova/scheduler/weights/__init__.py nova/scheduler/weights/metrics.py nova/scheduler/weights/ram.py nova/servicegroup/__init__.py nova/servicegroup/api.py nova/servicegroup/drivers/__init__.py nova/servicegroup/drivers/db.py nova/servicegroup/drivers/mc.py nova/servicegroup/drivers/zk.py nova/spice/__init__.py nova/storage/__init__.py nova/storage/linuxscsi.py nova/tests/README.rst nova/tests/__init__.py nova/tests/cast_as_call.py nova/tests/conf_fixture.py nova/tests/fake_block_device.py nova/tests/fake_crypto.py nova/tests/fake_hosts.py nova/tests/fake_instance.py nova/tests/fake_instance_actions.py nova/tests/fake_ldap.py nova/tests/fake_network.py nova/tests/fake_network_cache_model.py nova/tests/fake_notifier.py nova/tests/fake_policy.py nova/tests/fake_processutils.py nova/tests/fake_utils.py nova/tests/fake_volume.py nova/tests/fakeguestfs.py nova/tests/matchers.py nova/tests/policy_fixture.py nova/tests/test_api_validation.py nova/tests/test_availability_zones.py nova/tests/test_baserpc.py nova/tests/test_bdm.py nova/tests/test_block_device.py nova/tests/test_cinder.py nova/tests/test_configdrive2.py nova/tests/test_context.py nova/tests/test_crypto.py nova/tests/test_exception.py nova/tests/test_flavors.py nova/tests/test_hacking.py nova/tests/test_hooks.py nova/tests/test_instance_types_extra_specs.py nova/tests/test_iptables_network.py nova/tests/test_ipv6.py nova/tests/test_linuxscsi.py nova/tests/test_loadables.py nova/tests/test_matchers.py nova/tests/test_metadata.py nova/tests/test_notifications.py nova/tests/test_nova_manage.py nova/tests/test_objectstore.py nova/tests/test_pipelib.py nova/tests/test_policy.py nova/tests/test_quota.py nova/tests/test_safeutils.py nova/tests/test_service.py nova/tests/test_test.py nova/tests/test_test_utils.py nova/tests/test_utils.py nova/tests/test_versions.py nova/tests/test_weights.py nova/tests/test_wsgi.py nova/tests/utils.py nova/tests/CA/cacert.pem nova/tests/CA/private/cakey.pem nova/tests/api/__init__.py nova/tests/api/test_auth.py nova/tests/api/test_sizelimit.py nova/tests/api/test_validator.py nova/tests/api/test_wsgi.py nova/tests/api/ec2/__init__.py nova/tests/api/ec2/test_api.py nova/tests/api/ec2/test_cinder_cloud.py nova/tests/api/ec2/test_cloud.py nova/tests/api/ec2/test_ec2_validate.py nova/tests/api/ec2/test_error_response.py nova/tests/api/ec2/test_faults.py nova/tests/api/ec2/test_middleware.py nova/tests/api/ec2/public_key/dummy.fingerprint nova/tests/api/ec2/public_key/dummy.pub nova/tests/api/openstack/__init__.py nova/tests/api/openstack/common.py nova/tests/api/openstack/fakes.py nova/tests/api/openstack/test_common.py nova/tests/api/openstack/test_faults.py nova/tests/api/openstack/test_mapper.py nova/tests/api/openstack/test_wsgi.py nova/tests/api/openstack/test_xmlutil.py nova/tests/api/openstack/compute/__init__.py nova/tests/api/openstack/compute/test_api.py nova/tests/api/openstack/compute/test_auth.py nova/tests/api/openstack/compute/test_consoles.py nova/tests/api/openstack/compute/test_extensions.py nova/tests/api/openstack/compute/test_flavors.py nova/tests/api/openstack/compute/test_image_metadata.py nova/tests/api/openstack/compute/test_images.py nova/tests/api/openstack/compute/test_limits.py nova/tests/api/openstack/compute/test_server_actions.py nova/tests/api/openstack/compute/test_server_metadata.py nova/tests/api/openstack/compute/test_servers.py nova/tests/api/openstack/compute/test_urlmap.py nova/tests/api/openstack/compute/test_v3_auth.py nova/tests/api/openstack/compute/test_v3_extensions.py nova/tests/api/openstack/compute/test_versions.py nova/tests/api/openstack/compute/contrib/__init__.py nova/tests/api/openstack/compute/contrib/test_admin_actions.py nova/tests/api/openstack/compute/contrib/test_agents.py nova/tests/api/openstack/compute/contrib/test_aggregates.py nova/tests/api/openstack/compute/contrib/test_attach_interfaces.py nova/tests/api/openstack/compute/contrib/test_availability_zone.py nova/tests/api/openstack/compute/contrib/test_baremetal_nodes.py nova/tests/api/openstack/compute/contrib/test_cells.py nova/tests/api/openstack/compute/contrib/test_certificates.py nova/tests/api/openstack/compute/contrib/test_cloudpipe.py nova/tests/api/openstack/compute/contrib/test_cloudpipe_update.py nova/tests/api/openstack/compute/contrib/test_config_drive.py nova/tests/api/openstack/compute/contrib/test_console_auth_tokens.py nova/tests/api/openstack/compute/contrib/test_console_output.py nova/tests/api/openstack/compute/contrib/test_consoles.py nova/tests/api/openstack/compute/contrib/test_createserverext.py nova/tests/api/openstack/compute/contrib/test_deferred_delete.py nova/tests/api/openstack/compute/contrib/test_disk_config.py nova/tests/api/openstack/compute/contrib/test_evacuate.py nova/tests/api/openstack/compute/contrib/test_extended_availability_zone.py nova/tests/api/openstack/compute/contrib/test_extended_hypervisors.py nova/tests/api/openstack/compute/contrib/test_extended_ips.py nova/tests/api/openstack/compute/contrib/test_extended_ips_mac.py nova/tests/api/openstack/compute/contrib/test_extended_server_attributes.py nova/tests/api/openstack/compute/contrib/test_extended_status.py nova/tests/api/openstack/compute/contrib/test_extended_virtual_interfaces_net.py nova/tests/api/openstack/compute/contrib/test_extended_volumes.py nova/tests/api/openstack/compute/contrib/test_fixed_ips.py nova/tests/api/openstack/compute/contrib/test_flavor_access.py nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py nova/tests/api/openstack/compute/contrib/test_flavor_manage.py nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py nova/tests/api/openstack/compute/contrib/test_flavor_swap.py nova/tests/api/openstack/compute/contrib/test_flavorextradata.py nova/tests/api/openstack/compute/contrib/test_flavors_extra_specs.py nova/tests/api/openstack/compute/contrib/test_floating_ip_bulk.py nova/tests/api/openstack/compute/contrib/test_floating_ip_dns.py nova/tests/api/openstack/compute/contrib/test_floating_ip_pools.py nova/tests/api/openstack/compute/contrib/test_floating_ips.py nova/tests/api/openstack/compute/contrib/test_fping.py nova/tests/api/openstack/compute/contrib/test_hide_server_addresses.py nova/tests/api/openstack/compute/contrib/test_hosts.py nova/tests/api/openstack/compute/contrib/test_hypervisors.py nova/tests/api/openstack/compute/contrib/test_image_size.py nova/tests/api/openstack/compute/contrib/test_instance_actions.py nova/tests/api/openstack/compute/contrib/test_instance_usage_audit_log.py nova/tests/api/openstack/compute/contrib/test_keypairs.py nova/tests/api/openstack/compute/contrib/test_migrations.py nova/tests/api/openstack/compute/contrib/test_multinic_xs.py nova/tests/api/openstack/compute/contrib/test_networks.py nova/tests/api/openstack/compute/contrib/test_neutron_security_groups.py nova/tests/api/openstack/compute/contrib/test_quotas.py nova/tests/api/openstack/compute/contrib/test_rescue.py nova/tests/api/openstack/compute/contrib/test_scheduler_hints.py nova/tests/api/openstack/compute/contrib/test_security_group_default_rules.py nova/tests/api/openstack/compute/contrib/test_security_groups.py nova/tests/api/openstack/compute/contrib/test_server_diagnostics.py nova/tests/api/openstack/compute/contrib/test_server_external_events.py nova/tests/api/openstack/compute/contrib/test_server_groups.py nova/tests/api/openstack/compute/contrib/test_server_password.py nova/tests/api/openstack/compute/contrib/test_server_start_stop.py nova/tests/api/openstack/compute/contrib/test_server_usage.py nova/tests/api/openstack/compute/contrib/test_services.py nova/tests/api/openstack/compute/contrib/test_shelve.py nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py nova/tests/api/openstack/compute/contrib/test_snapshots.py nova/tests/api/openstack/compute/contrib/test_used_limits.py nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py nova/tests/api/openstack/compute/contrib/test_volumes.py nova/tests/api/openstack/compute/extensions/__init__.py nova/tests/api/openstack/compute/extensions/foxinsocks.py nova/tests/api/openstack/compute/plugins/__init__.py nova/tests/api/openstack/compute/plugins/v3/__init__.py nova/tests/api/openstack/compute/plugins/v3/admin_only_action_common.py nova/tests/api/openstack/compute/plugins/v3/test_access_ips.py nova/tests/api/openstack/compute/plugins/v3/test_admin_actions.py nova/tests/api/openstack/compute/plugins/v3/test_admin_password.py nova/tests/api/openstack/compute/plugins/v3/test_agents.py nova/tests/api/openstack/compute/plugins/v3/test_aggregates.py nova/tests/api/openstack/compute/plugins/v3/test_attach_interfaces.py nova/tests/api/openstack/compute/plugins/v3/test_availability_zone.py nova/tests/api/openstack/compute/plugins/v3/test_block_device_mapping.py nova/tests/api/openstack/compute/plugins/v3/test_cells.py nova/tests/api/openstack/compute/plugins/v3/test_certificates.py nova/tests/api/openstack/compute/plugins/v3/test_config_drive.py nova/tests/api/openstack/compute/plugins/v3/test_console_auth_tokens.py nova/tests/api/openstack/compute/plugins/v3/test_console_output.py nova/tests/api/openstack/compute/plugins/v3/test_consoles.py nova/tests/api/openstack/compute/plugins/v3/test_create_backup.py nova/tests/api/openstack/compute/plugins/v3/test_deferred_delete.py nova/tests/api/openstack/compute/plugins/v3/test_evacuate.py nova/tests/api/openstack/compute/plugins/v3/test_extended_availability_zone.py nova/tests/api/openstack/compute/plugins/v3/test_extended_server_attributes.py nova/tests/api/openstack/compute/plugins/v3/test_extended_status.py nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py nova/tests/api/openstack/compute/plugins/v3/test_extension_info.py nova/tests/api/openstack/compute/plugins/v3/test_flavor_access.py nova/tests/api/openstack/compute/plugins/v3/test_flavor_manage.py nova/tests/api/openstack/compute/plugins/v3/test_flavor_rxtx.py nova/tests/api/openstack/compute/plugins/v3/test_flavors.py nova/tests/api/openstack/compute/plugins/v3/test_flavors_extra_specs.py nova/tests/api/openstack/compute/plugins/v3/test_hide_server_addresses.py nova/tests/api/openstack/compute/plugins/v3/test_hosts.py nova/tests/api/openstack/compute/plugins/v3/test_hypervisors.py nova/tests/api/openstack/compute/plugins/v3/test_instance_actions.py nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py nova/tests/api/openstack/compute/plugins/v3/test_lock_server.py nova/tests/api/openstack/compute/plugins/v3/test_migrate_server.py nova/tests/api/openstack/compute/plugins/v3/test_migrations.py nova/tests/api/openstack/compute/plugins/v3/test_multinic.py nova/tests/api/openstack/compute/plugins/v3/test_multiple_create.py nova/tests/api/openstack/compute/plugins/v3/test_pause_server.py nova/tests/api/openstack/compute/plugins/v3/test_pci.py nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py nova/tests/api/openstack/compute/plugins/v3/test_remote_consoles.py nova/tests/api/openstack/compute/plugins/v3/test_rescue.py nova/tests/api/openstack/compute/plugins/v3/test_scheduler_hints.py nova/tests/api/openstack/compute/plugins/v3/test_security_groups.py nova/tests/api/openstack/compute/plugins/v3/test_server_actions.py nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py nova/tests/api/openstack/compute/plugins/v3/test_server_external_events.py nova/tests/api/openstack/compute/plugins/v3/test_server_metadata.py nova/tests/api/openstack/compute/plugins/v3/test_server_password.py nova/tests/api/openstack/compute/plugins/v3/test_server_usage.py nova/tests/api/openstack/compute/plugins/v3/test_servers.py nova/tests/api/openstack/compute/plugins/v3/test_services.py nova/tests/api/openstack/compute/plugins/v3/test_shelve.py nova/tests/api/openstack/compute/plugins/v3/test_suspend_server.py nova/tests/api/openstack/compute/plugins/v3/test_user_data.py nova/tests/api/openstack/compute/plugins/v3/test_versions.py nova/tests/bundle/1mb.manifest.xml nova/tests/bundle/1mb.no_kernel_or_ramdisk.manifest.xml nova/tests/bundle/1mb.part.0 nova/tests/bundle/1mb.part.1 nova/tests/cells/__init__.py nova/tests/cells/fakes.py nova/tests/cells/test_cells_filters.py nova/tests/cells/test_cells_manager.py nova/tests/cells/test_cells_messaging.py nova/tests/cells/test_cells_rpc_driver.py nova/tests/cells/test_cells_rpcapi.py nova/tests/cells/test_cells_scheduler.py nova/tests/cells/test_cells_state_manager.py nova/tests/cells/test_cells_utils.py nova/tests/cells/test_cells_weights.py nova/tests/cert/__init__.py nova/tests/cert/test_rpcapi.py nova/tests/compute/__init__.py nova/tests/compute/fake_resource_tracker.py nova/tests/compute/test_claims.py nova/tests/compute/test_compute.py nova/tests/compute/test_compute_api.py nova/tests/compute/test_compute_cells.py nova/tests/compute/test_compute_mgr.py nova/tests/compute/test_compute_utils.py nova/tests/compute/test_compute_xen.py nova/tests/compute/test_host_api.py nova/tests/compute/test_keypairs.py nova/tests/compute/test_multiple_nodes.py nova/tests/compute/test_resource_tracker.py nova/tests/compute/test_rpcapi.py nova/tests/compute/test_shelve.py nova/tests/compute/test_stats.py nova/tests/compute/test_virtapi.py nova/tests/compute/test_vmmode.py nova/tests/compute/monitors/__init__.py nova/tests/compute/monitors/test_cpu_monitor.py nova/tests/compute/monitors/test_monitors.py nova/tests/conductor/__init__.py nova/tests/conductor/test_conductor.py nova/tests/conductor/tasks/__init__.py nova/tests/conductor/tasks/test_live_migrate.py nova/tests/console/__init__.py nova/tests/console/test_console.py nova/tests/console/test_rpcapi.py nova/tests/consoleauth/__init__.py nova/tests/consoleauth/test_consoleauth.py nova/tests/consoleauth/test_rpcapi.py nova/tests/db/__init__.py nova/tests/db/fakes.py nova/tests/db/test_db_api.py nova/tests/db/test_migration_utils.py nova/tests/db/test_migrations.conf nova/tests/db/test_migrations.py nova/tests/db/test_sqlalchemy_utils.py nova/tests/db/test_sqlite.py nova/tests/fake_loadables/__init__.py nova/tests/fake_loadables/fake_loadable1.py nova/tests/fake_loadables/fake_loadable2.py nova/tests/glance/__init__.py nova/tests/glance/stubs.py nova/tests/image/__init__.py nova/tests/image/abs.tar.gz nova/tests/image/fake.py nova/tests/image/rel.tar.gz nova/tests/image/test_fake.py nova/tests/image/test_glance.py nova/tests/image/test_s3.py nova/tests/integrated/__init__.py nova/tests/integrated/api_samples_test_base.py nova/tests/integrated/integrated_helpers.py nova/tests/integrated/test_api_samples.py nova/tests/integrated/test_extensions.py nova/tests/integrated/test_login.py nova/tests/integrated/test_multiprocess_api.py nova/tests/integrated/test_servers.py nova/tests/integrated/test_xml.py nova/tests/integrated/api/__init__.py nova/tests/integrated/api/client.py nova/tests/integrated/api_samples/README.rst nova/tests/integrated/api_samples/flavor-get-resp.json.tpl nova/tests/integrated/api_samples/flavor-get-resp.xml.tpl nova/tests/integrated/api_samples/flavors-list-resp.json.tpl nova/tests/integrated/api_samples/flavors-list-resp.xml.tpl nova/tests/integrated/api_samples/image-get-resp.json.tpl nova/tests/integrated/api_samples/image-get-resp.xml.tpl nova/tests/integrated/api_samples/image-meta-key-get.json.tpl nova/tests/integrated/api_samples/image-meta-key-get.xml.tpl nova/tests/integrated/api_samples/image-meta-key-put-req.json.tpl nova/tests/integrated/api_samples/image-meta-key-put-req.xml.tpl nova/tests/integrated/api_samples/image-meta-key-put-resp.json.tpl nova/tests/integrated/api_samples/image-meta-key-put-resp.xml.tpl nova/tests/integrated/api_samples/image-metadata-get-resp.json.tpl nova/tests/integrated/api_samples/image-metadata-get-resp.xml.tpl nova/tests/integrated/api_samples/image-metadata-post-req.json.tpl nova/tests/integrated/api_samples/image-metadata-post-req.xml.tpl nova/tests/integrated/api_samples/image-metadata-post-resp.json.tpl nova/tests/integrated/api_samples/image-metadata-post-resp.xml.tpl nova/tests/integrated/api_samples/image-metadata-put-req.json.tpl nova/tests/integrated/api_samples/image-metadata-put-req.xml.tpl nova/tests/integrated/api_samples/image-metadata-put-resp.json.tpl nova/tests/integrated/api_samples/image-metadata-put-resp.xml.tpl nova/tests/integrated/api_samples/image-metadata-resp.json.tpl nova/tests/integrated/api_samples/images-details-get-resp.json.tpl nova/tests/integrated/api_samples/images-details-get-resp.xml.tpl nova/tests/integrated/api_samples/images-details-resp.json.tpl nova/tests/integrated/api_samples/images-details-resp.xml.tpl nova/tests/integrated/api_samples/images-list-get-resp.json.tpl nova/tests/integrated/api_samples/images-list-get-resp.xml.tpl nova/tests/integrated/api_samples/images-list-resp.json.tpl nova/tests/integrated/api_samples/images-list-resp.xml.tpl nova/tests/integrated/api_samples/limit-get-resp.json.tpl nova/tests/integrated/api_samples/limit-get-resp.xml.tpl nova/tests/integrated/api_samples/server-action-changepassword.json.tpl nova/tests/integrated/api_samples/server-action-changepassword.xml.tpl nova/tests/integrated/api_samples/server-action-confirmresize.json.tpl nova/tests/integrated/api_samples/server-action-confirmresize.xml.tpl nova/tests/integrated/api_samples/server-action-createimage.json.tpl nova/tests/integrated/api_samples/server-action-createimage.xml.tpl nova/tests/integrated/api_samples/server-action-reboot.json.tpl nova/tests/integrated/api_samples/server-action-reboot.xml.tpl nova/tests/integrated/api_samples/server-action-rebuild-resp.json.tpl nova/tests/integrated/api_samples/server-action-rebuild-resp.xml.tpl nova/tests/integrated/api_samples/server-action-rebuild.json.tpl nova/tests/integrated/api_samples/server-action-rebuild.xml.tpl nova/tests/integrated/api_samples/server-action-resize.json.tpl nova/tests/integrated/api_samples/server-action-resize.xml.tpl nova/tests/integrated/api_samples/server-action-revertresize.json.tpl nova/tests/integrated/api_samples/server-action-revertresize.xml.tpl nova/tests/integrated/api_samples/server-get-resp.json.tpl nova/tests/integrated/api_samples/server-get-resp.xml.tpl nova/tests/integrated/api_samples/server-ips-network-resp.json.tpl nova/tests/integrated/api_samples/server-ips-network-resp.xml.tpl nova/tests/integrated/api_samples/server-ips-resp.json.tpl nova/tests/integrated/api_samples/server-ips-resp.xml.tpl nova/tests/integrated/api_samples/server-metadata-all-req.json.tpl nova/tests/integrated/api_samples/server-metadata-all-req.xml.tpl nova/tests/integrated/api_samples/server-metadata-all-resp.json.tpl nova/tests/integrated/api_samples/server-metadata-all-resp.xml.tpl nova/tests/integrated/api_samples/server-metadata-req.json.tpl nova/tests/integrated/api_samples/server-metadata-req.xml.tpl nova/tests/integrated/api_samples/server-metadata-resp.json.tpl nova/tests/integrated/api_samples/server-metadata-resp.xml.tpl nova/tests/integrated/api_samples/server-post-req.json.tpl nova/tests/integrated/api_samples/server-post-req.xml.tpl nova/tests/integrated/api_samples/server-post-resp.json.tpl nova/tests/integrated/api_samples/server-post-resp.xml.tpl nova/tests/integrated/api_samples/servers-details-resp.json.tpl nova/tests/integrated/api_samples/servers-details-resp.xml.tpl nova/tests/integrated/api_samples/servers-list-resp.json.tpl nova/tests/integrated/api_samples/servers-list-resp.xml.tpl nova/tests/integrated/api_samples/versions-get-resp.json.tpl nova/tests/integrated/api_samples/versions-get-resp.xml.tpl nova/tests/integrated/api_samples/NMN/multinic-add-fixed-ip-req.json.tpl nova/tests/integrated/api_samples/NMN/multinic-add-fixed-ip-req.xml.tpl nova/tests/integrated/api_samples/NMN/multinic-remove-fixed-ip-req.json.tpl nova/tests/integrated/api_samples/NMN/multinic-remove-fixed-ip-req.xml.tpl nova/tests/integrated/api_samples/NMN/server-post-req.json.tpl nova/tests/integrated/api_samples/NMN/server-post-req.xml.tpl nova/tests/integrated/api_samples/NMN/server-post-resp.json.tpl nova/tests/integrated/api_samples/NMN/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-DCF/image-get-resp.json.tpl nova/tests/integrated/api_samples/OS-DCF/image-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-DCF/image-list-resp.json.tpl nova/tests/integrated/api_samples/OS-DCF/image-list-resp.xml.tpl nova/tests/integrated/api_samples/OS-DCF/list-servers-detail-get.json.tpl nova/tests/integrated/api_samples/OS-DCF/list-servers-detail-get.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-req.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-req.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-resp.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-resp.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-resize-post-req.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-resize-post-req.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-update-put-req.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-update-put-req.xml.tpl nova/tests/integrated/api_samples/OS-DCF/server-update-put-resp.json.tpl nova/tests/integrated/api_samples/OS-DCF/server-update-put-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-AZ/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/image-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/image-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-STS/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-STS/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-STS/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-EXT-STS/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-EXT-STS/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-STS/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-STS/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-STS/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-EXT-VIF-NET/vifs-list-resp.json.tpl nova/tests/integrated/api_samples/OS-EXT-VIF-NET/vifs-list-resp.xml.tpl nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.json.tpl nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.json.tpl nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.json.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.json.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.xml.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.json.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.xml.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.json.tpl nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-req.json.tpl nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-req.xml.tpl nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.json.tpl nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-SRV-USG/server-get-resp.json.tpl nova/tests/integrated/api_samples/OS-SRV-USG/server-get-resp.xml.tpl nova/tests/integrated/api_samples/OS-SRV-USG/server-post-req.json.tpl nova/tests/integrated/api_samples/OS-SRV-USG/server-post-req.xml.tpl nova/tests/integrated/api_samples/OS-SRV-USG/server-post-resp.json.tpl nova/tests/integrated/api_samples/OS-SRV-USG/server-post-resp.xml.tpl nova/tests/integrated/api_samples/OS-SRV-USG/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/OS-SRV-USG/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/flavor-get-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/flavor-get-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/flavors-list-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/flavors-list-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-changepassword.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-changepassword.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-confirmresize.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-confirmresize.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-createimage.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-createimage.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-reboot.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-reboot.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-rebuild-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-rebuild-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-rebuild.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-rebuild.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-resize.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-resize.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-action-revertresize.json.tpl nova/tests/integrated/api_samples/all_extensions/server-action-revertresize.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-get-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/server-get-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-post-req.json.tpl nova/tests/integrated/api_samples/all_extensions/server-post-req.xml.tpl nova/tests/integrated/api_samples/all_extensions/server-post-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/server-post-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/servers-details-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/servers-details-resp.xml.tpl nova/tests/integrated/api_samples/all_extensions/servers-list-resp.json.tpl nova/tests/integrated/api_samples/all_extensions/servers-list-resp.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-backup-server.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-backup-server.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-inject-network-info.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-inject-network-info.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-live-migrate.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-live-migrate.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-lock-server.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-lock-server.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-migrate.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-migrate.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-pause.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-pause.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-network.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-network.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-server-state.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-server-state.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-state.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-state.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-resume.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-resume.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-suspend.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-suspend.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unlock-server.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unlock-server.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unpause.json.tpl nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unpause.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/server-post-req.json.tpl nova/tests/integrated/api_samples/os-admin-actions/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-admin-actions/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-admin-actions/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-agents/agent-post-req.json.tpl nova/tests/integrated/api_samples/os-agents/agent-post-req.xml.tpl nova/tests/integrated/api_samples/os-agents/agent-post-resp.json.tpl nova/tests/integrated/api_samples/os-agents/agent-post-resp.xml.tpl nova/tests/integrated/api_samples/os-agents/agent-update-put-req.json.tpl nova/tests/integrated/api_samples/os-agents/agent-update-put-req.xml.tpl nova/tests/integrated/api_samples/os-agents/agent-update-put-resp.json.tpl nova/tests/integrated/api_samples/os-agents/agent-update-put-resp.xml.tpl nova/tests/integrated/api_samples/os-agents/agents-get-resp.json.tpl nova/tests/integrated/api_samples/os-agents/agents-get-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml.tpl nova/tests/integrated/api_samples/os-aggregates/server-post-req.json.tpl nova/tests/integrated/api_samples/os-aggregates/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-aggregates/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-aggregates/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.json.tpl nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.xml.tpl nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.json.tpl nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.xml.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-req.json.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-req.xml.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-resp.xml.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-list-resp.xml.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json.tpl nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-show-resp.xml.tpl nova/tests/integrated/api_samples/os-attach-interfaces/server-post-req.json.tpl nova/tests/integrated/api_samples/os-attach-interfaces/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-attach-interfaces/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-attach-interfaces/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-details-resp.json.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-details-resp.xml.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-get-resp.json.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-get-resp.xml.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-req.json.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-req.xml.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-resp.json.tpl nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.xml.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json.tpl nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml.tpl nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-req.json.tpl nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-cell-capacities/cells-capacities-resp.json.tpl nova/tests/integrated/api_samples/os-cell-capacities/cells-capacities-resp.xml.tpl nova/tests/integrated/api_samples/os-cells/cells-get-resp.json.tpl nova/tests/integrated/api_samples/os-cells/cells-get-resp.xml.tpl nova/tests/integrated/api_samples/os-cells/cells-list-empty-resp.json.tpl nova/tests/integrated/api_samples/os-cells/cells-list-empty-resp.xml.tpl nova/tests/integrated/api_samples/os-cells/cells-list-resp.json.tpl nova/tests/integrated/api_samples/os-cells/cells-list-resp.xml.tpl nova/tests/integrated/api_samples/os-certificates/certificate-create-req.json.tpl nova/tests/integrated/api_samples/os-certificates/certificate-create-req.xml.tpl nova/tests/integrated/api_samples/os-certificates/certificate-create-resp.json.tpl nova/tests/integrated/api_samples/os-certificates/certificate-create-resp.xml.tpl nova/tests/integrated/api_samples/os-certificates/certificate-get-root-resp.json.tpl nova/tests/integrated/api_samples/os-certificates/certificate-get-root-resp.xml.tpl nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl nova/tests/integrated/api_samples/os-cloudpipe-update/cloud-pipe-update-req.json.tpl nova/tests/integrated/api_samples/os-cloudpipe-update/cloud-pipe-update-req.xml.tpl nova/tests/integrated/api_samples/os-config-drive/server-config-drive-get-resp.json.tpl nova/tests/integrated/api_samples/os-config-drive/server-config-drive-get-resp.xml.tpl nova/tests/integrated/api_samples/os-config-drive/server-post-req.json.tpl nova/tests/integrated/api_samples/os-config-drive/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-config-drive/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-config-drive/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-config-drive/servers-config-drive-details-resp.json.tpl nova/tests/integrated/api_samples/os-config-drive/servers-config-drive-details-resp.xml.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.xml.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/get-rdp-console-post-req.xml.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-req.json.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-console-output/console-output-post-req.json.tpl nova/tests/integrated/api_samples/os-console-output/console-output-post-req.xml.tpl nova/tests/integrated/api_samples/os-console-output/console-output-post-resp.json.tpl nova/tests/integrated/api_samples/os-console-output/console-output-post-resp.xml.tpl nova/tests/integrated/api_samples/os-console-output/server-post-req.json.tpl nova/tests/integrated/api_samples/os-console-output/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-console-output/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-console-output/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-req.json.tpl nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-req.xml.tpl nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-resp.json.tpl nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-resp.xml.tpl nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-req.json.tpl nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-req.xml.tpl nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-resp.json.tpl nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-resp.xml.tpl nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-req.json.tpl nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-req.xml.tpl nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-resp.json.tpl nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-resp.xml.tpl nova/tests/integrated/api_samples/os-consoles/server-post-req.json.tpl nova/tests/integrated/api_samples/os-consoles/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-consoles/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-consoles/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-deferred-delete/force-delete-post-req.json.tpl nova/tests/integrated/api_samples/os-deferred-delete/force-delete-post-req.xml.tpl nova/tests/integrated/api_samples/os-deferred-delete/restore-post-req.json.tpl nova/tests/integrated/api_samples/os-deferred-delete/restore-post-req.xml.tpl nova/tests/integrated/api_samples/os-deferred-delete/server-post-req.json.tpl nova/tests/integrated/api_samples/os-deferred-delete/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-deferred-delete/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-deferred-delete/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-evacuate/server-evacuate-req.json.tpl nova/tests/integrated/api_samples/os-evacuate/server-evacuate-req.xml.tpl nova/tests/integrated/api_samples/os-evacuate/server-evacuate-resp.json.tpl nova/tests/integrated/api_samples/os-evacuate/server-evacuate-resp.xml.tpl nova/tests/integrated/api_samples/os-evacuate/server-post-req.json.tpl nova/tests/integrated/api_samples/os-evacuate/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-evacuate/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-evacuate/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.tpl nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.json.tpl nova/tests/integrated/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-req.json.tpl nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-req.xml.tpl nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-resp.json.tpl nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-services-delete/services-get-resp.json.tpl nova/tests/integrated/api_samples/os-extended-services-delete/services-get-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-volumes/server-get-resp.json.tpl nova/tests/integrated/api_samples/os-extended-volumes/server-get-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-volumes/server-post-req.json.tpl nova/tests/integrated/api_samples/os-extended-volumes/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-extended-volumes/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-extended-volumes/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-extended-volumes/servers-detail-resp.json.tpl nova/tests/integrated/api_samples/os-extended-volumes/servers-detail-resp.xml.tpl nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.json.tpl nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.xml.tpl nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.json.tpl nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-req.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-req.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-detail-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-detail-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-list-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-list-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-req.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-show-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-access/flavor-access-show-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.json.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.json.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-req.json.tpl nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-get-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-get-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-list-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-list-resp.xml.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-req.json.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-req.xml.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-resp.json.tpl nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ip-pools/floatingippools-list-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ip-pools/floatingippools-list-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-nopool-req.json.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-nopool-req.xml.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-req.json.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-req.xml.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-get-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-get-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-empty-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-empty-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json.tpl nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml.tpl nova/tests/integrated/api_samples/os-fping/fping-get-details-resp.json.tpl nova/tests/integrated/api_samples/os-fping/fping-get-details-resp.xml.tpl nova/tests/integrated/api_samples/os-fping/fping-get-resp.json.tpl nova/tests/integrated/api_samples/os-fping/fping-get-resp.xml.tpl nova/tests/integrated/api_samples/os-fping/server-post-req.json.tpl nova/tests/integrated/api_samples/os-fping/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-fping/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-fping/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/server-get-resp.json.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/server-get-resp.xml.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-req.json.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/servers-details-resp.json.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/servers-details-resp.xml.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/servers-list-resp.json.tpl nova/tests/integrated/api_samples/os-hide-server-addresses/servers-list-resp.xml.tpl nova/tests/integrated/api_samples/os-hosts/host-get-reboot.json.tpl nova/tests/integrated/api_samples/os-hosts/host-get-reboot.xml.tpl nova/tests/integrated/api_samples/os-hosts/host-get-resp.json.tpl nova/tests/integrated/api_samples/os-hosts/host-get-resp.xml.tpl nova/tests/integrated/api_samples/os-hosts/host-get-shutdown.json.tpl nova/tests/integrated/api_samples/os-hosts/host-get-shutdown.xml.tpl nova/tests/integrated/api_samples/os-hosts/host-get-startup.json.tpl nova/tests/integrated/api_samples/os-hosts/host-get-startup.xml.tpl nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-req.json.tpl nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-req.xml.tpl nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-resp.json.tpl nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-resp.xml.tpl nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-detail-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-detail-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-list-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-list-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-search-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-search-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-servers-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-servers-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-show-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-show-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-statistics-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-statistics-resp.xml.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-uptime-resp.json.tpl nova/tests/integrated/api_samples/os-hypervisors/hypervisors-uptime-resp.xml.tpl nova/tests/integrated/api_samples/os-instance-actions/instance-action-get-resp.json.tpl nova/tests/integrated/api_samples/os-instance-actions/instance-action-get-resp.xml.tpl nova/tests/integrated/api_samples/os-instance-actions/instance-actions-list-resp.json.tpl nova/tests/integrated/api_samples/os-instance-actions/instance-actions-list-resp.xml.tpl nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.json.tpl nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.xml.tpl nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.json.tpl nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.xml.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.json.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.xml.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.json.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.xml.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.json.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.xml.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.json.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.xml.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.json.tpl nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.xml.tpl nova/tests/integrated/api_samples/os-migrations/migrations-get.json.tpl nova/tests/integrated/api_samples/os-migrations/migrations-get.xml.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-req.json.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-req.xml.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.json.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.xml.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-req.json.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-req.xml.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-resp.json.tpl nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-resp.xml.tpl nova/tests/integrated/api_samples/os-networks/network-add-req.json.tpl nova/tests/integrated/api_samples/os-networks/network-add-req.xml.tpl nova/tests/integrated/api_samples/os-networks/network-create-req.json.tpl nova/tests/integrated/api_samples/os-networks/network-create-req.xml.tpl nova/tests/integrated/api_samples/os-networks/network-create-resp.json.tpl nova/tests/integrated/api_samples/os-networks/network-create-resp.xml.tpl nova/tests/integrated/api_samples/os-networks/network-show-resp.json.tpl nova/tests/integrated/api_samples/os-networks/network-show-resp.xml.tpl nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.json.tpl nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.xml.tpl nova/tests/integrated/api_samples/os-networks/networks-list-resp.json.tpl nova/tests/integrated/api_samples/os-networks/networks-list-resp.xml.tpl nova/tests/integrated/api_samples/os-networks-associate/network-associate-host-req.json.tpl nova/tests/integrated/api_samples/os-networks-associate/network-associate-host-req.xml.tpl nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.json.tpl nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.xml.tpl nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req.json.tpl nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req.xml.tpl nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-req.json.tpl nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-req.xml.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.xml.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.xml.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-req.json.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-show-defaults-get-resp.xml.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-show-get-resp.json.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-show-get-resp.xml.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-req.json.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-req.xml.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-resp.json.tpl nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-resp.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-get-resp-rescue.json.tpl nova/tests/integrated/api_samples/os-rescue/server-get-resp-rescue.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-get-resp-unrescue.json.tpl nova/tests/integrated/api_samples/os-rescue/server-get-resp-unrescue.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-post-req.json.tpl nova/tests/integrated/api_samples/os-rescue/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-rescue/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-rescue-req.json.tpl nova/tests/integrated/api_samples/os-rescue/server-rescue-req.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-rescue.json.tpl nova/tests/integrated/api_samples/os-rescue/server-rescue.xml.tpl nova/tests/integrated/api_samples/os-rescue/server-unrescue-req.json.tpl nova/tests/integrated/api_samples/os-rescue/server-unrescue-req.xml.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.json.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.xml.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.json.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.xml.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.json.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.xml.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.json.tpl nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.xml.tpl nova/tests/integrated/api_samples/os-security-groups/security-group-add-post-req.json.tpl nova/tests/integrated/api_samples/os-security-groups/security-group-add-post-req.xml.tpl nova/tests/integrated/api_samples/os-security-groups/security-group-post-req.json.tpl nova/tests/integrated/api_samples/os-security-groups/security-group-post-req.xml.tpl nova/tests/integrated/api_samples/os-security-groups/security-group-remove-post-req.json.tpl nova/tests/integrated/api_samples/os-security-groups/security-group-remove-post-req.xml.tpl nova/tests/integrated/api_samples/os-security-groups/security-groups-create-resp.json.tpl nova/tests/integrated/api_samples/os-security-groups/security-groups-create-resp.xml.tpl nova/tests/integrated/api_samples/os-security-groups/security-groups-get-resp.json.tpl nova/tests/integrated/api_samples/os-security-groups/security-groups-get-resp.xml.tpl nova/tests/integrated/api_samples/os-security-groups/security-groups-list-get-resp.json.tpl nova/tests/integrated/api_samples/os-security-groups/security-groups-list-get-resp.xml.tpl nova/tests/integrated/api_samples/os-security-groups/server-post-req.json.tpl nova/tests/integrated/api_samples/os-security-groups/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-security-groups/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-security-groups/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-security-groups/server-security-groups-list-resp.json.tpl nova/tests/integrated/api_samples/os-security-groups/server-security-groups-list-resp.xml.tpl nova/tests/integrated/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json.tpl nova/tests/integrated/api_samples/os-server-diagnostics/server-diagnostics-get-resp.xml.tpl nova/tests/integrated/api_samples/os-server-diagnostics/server-post-req.json.tpl nova/tests/integrated/api_samples/os-server-diagnostics/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-server-diagnostics/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-server-diagnostics/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-server-external-events/event-create-req.json.tpl nova/tests/integrated/api_samples/os-server-external-events/event-create-req.xml.tpl nova/tests/integrated/api_samples/os-server-external-events/event-create-resp.json.tpl nova/tests/integrated/api_samples/os-server-external-events/event-create-resp.xml.tpl nova/tests/integrated/api_samples/os-server-external-events/server-post-req.json.tpl nova/tests/integrated/api_samples/os-server-external-events/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-server-external-events/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-server-external-events/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-get-resp.json.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-get-resp.xml.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-list-resp.json.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-list-resp.xml.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-post-req.json.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-post-req.xml.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-post-resp.json.tpl nova/tests/integrated/api_samples/os-server-groups/server-groups-post-resp.xml.tpl nova/tests/integrated/api_samples/os-server-password/get-password-resp.json.tpl nova/tests/integrated/api_samples/os-server-password/get-password-resp.xml.tpl nova/tests/integrated/api_samples/os-server-password/server-post-req.json.tpl nova/tests/integrated/api_samples/os-server-password/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-server-password/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-server-password/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-server-start-stop/server-post-req.json.tpl nova/tests/integrated/api_samples/os-server-start-stop/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-server-start-stop/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-server-start-stop/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-server-start-stop/server_start_stop.json.tpl nova/tests/integrated/api_samples/os-server-start-stop/server_start_stop.xml.tpl nova/tests/integrated/api_samples/os-services/service-disable-log-put-req.json.tpl nova/tests/integrated/api_samples/os-services/service-disable-log-put-req.xml.tpl nova/tests/integrated/api_samples/os-services/service-disable-log-put-resp.json.tpl nova/tests/integrated/api_samples/os-services/service-disable-log-put-resp.xml.tpl nova/tests/integrated/api_samples/os-services/service-disable-put-req.json.tpl nova/tests/integrated/api_samples/os-services/service-disable-put-req.xml.tpl nova/tests/integrated/api_samples/os-services/service-disable-put-resp.json.tpl nova/tests/integrated/api_samples/os-services/service-disable-put-resp.xml.tpl nova/tests/integrated/api_samples/os-services/service-enable-put-req.json.tpl nova/tests/integrated/api_samples/os-services/service-enable-put-req.xml.tpl nova/tests/integrated/api_samples/os-services/service-enable-put-resp.json.tpl nova/tests/integrated/api_samples/os-services/service-enable-put-resp.xml.tpl nova/tests/integrated/api_samples/os-services/services-get-resp.json.tpl nova/tests/integrated/api_samples/os-services/services-get-resp.xml.tpl nova/tests/integrated/api_samples/os-services/services-list-get-resp.json.tpl nova/tests/integrated/api_samples/os-services/services-list-get-resp.xml.tpl nova/tests/integrated/api_samples/os-shelve/os-shelve-offload.json.tpl nova/tests/integrated/api_samples/os-shelve/os-shelve-offload.xml.tpl nova/tests/integrated/api_samples/os-shelve/os-shelve.json.tpl nova/tests/integrated/api_samples/os-shelve/os-shelve.xml.tpl nova/tests/integrated/api_samples/os-shelve/os-unshelve.json.tpl nova/tests/integrated/api_samples/os-shelve/os-unshelve.xml.tpl nova/tests/integrated/api_samples/os-shelve/server-post-req.json.tpl nova/tests/integrated/api_samples/os-shelve/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-shelve/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-shelve/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-req.json.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.json.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.xml.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.json.tpl nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.xml.tpl nova/tests/integrated/api_samples/os-tenant-networks/networks-list-res.json.tpl nova/tests/integrated/api_samples/os-tenant-networks/networks-list-res.xml.tpl nova/tests/integrated/api_samples/os-tenant-networks/networks-post-req.json.tpl nova/tests/integrated/api_samples/os-tenant-networks/networks-post-req.xml.tpl nova/tests/integrated/api_samples/os-tenant-networks/networks-post-res.json.tpl nova/tests/integrated/api_samples/os-tenant-networks/networks-post-res.xml.tpl nova/tests/integrated/api_samples/os-used-limits/usedlimits-get-resp.json.tpl nova/tests/integrated/api_samples/os-used-limits/usedlimits-get-resp.xml.tpl nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json.tpl nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml.tpl nova/tests/integrated/api_samples/os-user-data/userdata-post-req.json.tpl nova/tests/integrated/api_samples/os-user-data/userdata-post-req.xml.tpl nova/tests/integrated/api_samples/os-user-data/userdata-post-resp.json.tpl nova/tests/integrated/api_samples/os-user-data/userdata-post-resp.xml.tpl nova/tests/integrated/api_samples/os-user-quotas/user-quotas-show-get-resp.json.tpl nova/tests/integrated/api_samples/os-user-quotas/user-quotas-show-get-resp.xml.tpl nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-req.json.tpl nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-req.xml.tpl nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-resp.json.tpl nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-resp.xml.tpl nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-req.json.tpl nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-virtual-interfaces/vifs-list-resp.json.tpl nova/tests/integrated/api_samples/os-virtual-interfaces/vifs-list-resp.xml.tpl nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-req.json.tpl nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-volume-attachment-update/update-volume-req.json.tpl nova/tests/integrated/api_samples/os-volume-attachment-update/update-volume-req.xml.tpl nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-req.json.tpl nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-req.xml.tpl nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/list-volume-attachments-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/list-volume-attachments-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-detail-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-detail-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-get-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-get-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-index-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-index-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-post-req.json.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-post-req.xml.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-post-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/os-volumes-post-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/server-post-req.json.tpl nova/tests/integrated/api_samples/os-volumes/server-post-req.xml.tpl nova/tests/integrated/api_samples/os-volumes/server-post-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/server-post-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/snapshot-create-req.json.tpl nova/tests/integrated/api_samples/os-volumes/snapshot-create-req.xml.tpl nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/snapshots-detail-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/snapshots-detail-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/snapshots-list-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/snapshots-list-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/snapshots-show-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/snapshots-show-resp.xml.tpl nova/tests/integrated/api_samples/os-volumes/volume-attachment-detail-resp.json.tpl nova/tests/integrated/api_samples/os-volumes/volume-attachment-detail-resp.xml.tpl nova/tests/integrated/v3/__init__.py nova/tests/integrated/v3/api_sample_base.py nova/tests/integrated/v3/test_access_ips.py nova/tests/integrated/v3/test_admin_actions.py nova/tests/integrated/v3/test_admin_password.py nova/tests/integrated/v3/test_agents.py nova/tests/integrated/v3/test_aggregates.py nova/tests/integrated/v3/test_attach_interfaces.py nova/tests/integrated/v3/test_availability_zone.py nova/tests/integrated/v3/test_cells.py nova/tests/integrated/v3/test_certificates.py nova/tests/integrated/v3/test_config_drive.py nova/tests/integrated/v3/test_console_auth_tokens.py nova/tests/integrated/v3/test_console_output.py nova/tests/integrated/v3/test_consoles.py nova/tests/integrated/v3/test_create_backup.py nova/tests/integrated/v3/test_deferred_delete.py nova/tests/integrated/v3/test_evacuate.py nova/tests/integrated/v3/test_extended_availability_zone.py nova/tests/integrated/v3/test_extended_server_attributes.py nova/tests/integrated/v3/test_extended_status.py nova/tests/integrated/v3/test_extended_volumes.py nova/tests/integrated/v3/test_extension_info.py nova/tests/integrated/v3/test_flavor_access.py nova/tests/integrated/v3/test_flavor_extraspecs.py nova/tests/integrated/v3/test_flavor_manage.py nova/tests/integrated/v3/test_flavor_rxtx.py nova/tests/integrated/v3/test_flavors.py nova/tests/integrated/v3/test_hide_server_addresses.py nova/tests/integrated/v3/test_hosts.py nova/tests/integrated/v3/test_hypervisors.py nova/tests/integrated/v3/test_instance_actions.py nova/tests/integrated/v3/test_keypairs.py nova/tests/integrated/v3/test_lock_server.py nova/tests/integrated/v3/test_migrate_server.py nova/tests/integrated/v3/test_migrations.py nova/tests/integrated/v3/test_multinic.py nova/tests/integrated/v3/test_pause_server.py nova/tests/integrated/v3/test_pci.py nova/tests/integrated/v3/test_quota_sets.py nova/tests/integrated/v3/test_remote_consoles.py nova/tests/integrated/v3/test_rescue.py nova/tests/integrated/v3/test_scheduler_hints.py nova/tests/integrated/v3/test_security_groups.py nova/tests/integrated/v3/test_server_diagnostics.py nova/tests/integrated/v3/test_server_external_events.py nova/tests/integrated/v3/test_server_metadata.py nova/tests/integrated/v3/test_server_usage.py nova/tests/integrated/v3/test_servers.py nova/tests/integrated/v3/test_servers_ips.py nova/tests/integrated/v3/test_services.py nova/tests/integrated/v3/test_shelve.py nova/tests/integrated/v3/test_suspend_server.py nova/tests/integrated/v3/test_user_data.py nova/tests/integrated/v3/api_samples/all_extensions/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/all_extensions/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/all_extensions/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/all_extensions/servers-details-resp.json.tpl nova/tests/integrated/v3/api_samples/all_extensions/servers-list-resp.json.tpl nova/tests/integrated/v3/api_samples/consoles/consoles-create-req.json.tpl nova/tests/integrated/v3/api_samples/consoles/consoles-get-resp.json.tpl nova/tests/integrated/v3/api_samples/consoles/consoles-list-get-resp.json.tpl nova/tests/integrated/v3/api_samples/consoles/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/consoles/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/extension-info/extensions-get-resp.json.tpl nova/tests/integrated/v3/api_samples/extension-info/extensions-list-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-add-tenant-req.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-add-tenant-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-create-req.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-create-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-list-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-remove-tenant-req.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-remove-tenant-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-show-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-req.json.tpl nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-get-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-list-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-req.json.tpl nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-resp.json.tpl nova/tests/integrated/v3/api_samples/flavor-manage/flavor-create-post-req.json.tpl nova/tests/integrated/v3/api_samples/flavor-manage/flavor-create-post-resp.json.tpl nova/tests/integrated/v3/api_samples/flavors/flavor-get-resp.json.tpl nova/tests/integrated/v3/api_samples/flavors/flavors-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/flavors/flavors-list-resp.json.tpl nova/tests/integrated/v3/api_samples/keypairs/keypairs-get-resp.json.tpl nova/tests/integrated/v3/api_samples/keypairs/keypairs-import-post-req.json.tpl nova/tests/integrated/v3/api_samples/keypairs/keypairs-import-post-resp.json.tpl nova/tests/integrated/v3/api_samples/keypairs/keypairs-post-req.json.tpl nova/tests/integrated/v3/api_samples/keypairs/keypairs-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-action-rebuild-resp.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-action-rebuild.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-put-req.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/server-put-resp.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/servers-details-resp.json.tpl nova/tests/integrated/v3/api_samples/os-access-ips/servers-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-inject-network-info.json.tpl nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-network.json.tpl nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-server-state.json.tpl nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-state.json.tpl nova/tests/integrated/v3/api_samples/os-admin-actions/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-admin-actions/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-admin-password/admin-password-change-password.json.tpl nova/tests/integrated/v3/api_samples/os-admin-password/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-admin-password/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-agents/agent-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-agents/agent-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-agents/agent-update-put-req.json.tpl nova/tests/integrated/v3/api_samples/os-agents/agent-update-put-resp.json.tpl nova/tests/integrated/v3/api_samples/os-agents/agents-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-update-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-create-req.json.tpl nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json.tpl nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json.tpl nova/tests/integrated/v3/api_samples/os-attach-interfaces/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-attach-interfaces/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-availability-zone/availability-zone-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-availability-zone/availability-zone-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-availability-zone/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-availability-zone/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-cells/cells-capacities-resp.json.tpl nova/tests/integrated/v3/api_samples/os-cells/cells-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-cells/cells-list-empty-resp.json.tpl nova/tests/integrated/v3/api_samples/os-cells/cells-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-certificates/certificate-create-req.json.tpl nova/tests/integrated/v3/api_samples/os-certificates/certificate-create-resp.json.tpl nova/tests/integrated/v3/api_samples/os-certificates/certificate-get-root-resp.json.tpl nova/tests/integrated/v3/api_samples/os-config-drive/server-config-drive-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-config-drive/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-config-drive/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-config-drive/servers-config-drive-details-resp.json.tpl nova/tests/integrated/v3/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-console-auth-tokens/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-console-auth-tokens/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-console-output/console-output-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-console-output/console-output-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-console-output/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-console-output/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-create-backup/create-backup-req.json.tpl nova/tests/integrated/v3/api_samples/os-create-backup/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-create-backup/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-deferred-delete/force-delete-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-deferred-delete/restore-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-deferred-delete/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-deferred-delete/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-evacuate/server-evacuate-req.json.tpl nova/tests/integrated/v3/api_samples/os-evacuate/server-evacuate-resp.json.tpl nova/tests/integrated/v3/api_samples/os-evacuate/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-evacuate/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-availability-zone/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-server-attributes/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-status/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-status/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-extended-status/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-status/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/attach-volume-req.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/detach-volume-req.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-extended-volumes/swap-volume-req.json.tpl nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hide-server-addresses/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hide-server-addresses/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-hide-server-addresses/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hide-server-addresses/servers-details-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hide-server-addresses/servers-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/host-get-reboot.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/host-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/host-get-shutdown.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/host-get-startup.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/host-put-maintenance-req.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/host-put-maintenance-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/hosts-list-compute-service-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hosts/hosts-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-search-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-servers-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-show-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-statistics-resp.json.tpl nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-uptime-resp.json.tpl nova/tests/integrated/v3/api_samples/os-instance-actions/instance-action-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-instance-actions/instance-actions-list-resp.json.tpl nova/tests/integrated/v3/api_samples/os-lock-server/lock-server.json.tpl nova/tests/integrated/v3/api_samples/os-lock-server/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-lock-server/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-lock-server/unlock-server.json.tpl nova/tests/integrated/v3/api_samples/os-migrate-server/live-migrate-server.json.tpl nova/tests/integrated/v3/api_samples/os-migrate-server/migrate-server.json.tpl nova/tests/integrated/v3/api_samples/os-migrate-server/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-migrate-server/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-migrations/migrations-get.json.tpl nova/tests/integrated/v3/api_samples/os-multinic/multinic-add-fixed-ip-req.json.tpl nova/tests/integrated/v3/api_samples/os-multinic/multinic-remove-fixed-ip-req.json.tpl nova/tests/integrated/v3/api_samples/os-multinic/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-multinic/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pause-server/pause-server.json.tpl nova/tests/integrated/v3/api_samples/os-pause-server/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-pause-server/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pause-server/unpause-server.json.tpl nova/tests/integrated/v3/api_samples/os-pci/hypervisors-pci-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/hypervisors-pci-show-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/pci-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/pci-index-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/pci-show-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-pci/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-pci/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-show-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/user-quotas-show-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/user-quotas-update-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-quota-sets/user-quotas-update-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/get-rdp-console-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/get-rdp-console-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/get-spice-console-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/get-spice-console-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/get-vnc-console-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/get-vnc-console-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-remote-consoles/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-get-resp-rescue.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-get-resp-unrescue.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-rescue-req.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-rescue.json.tpl nova/tests/integrated/v3/api_samples/os-rescue/server-unrescue-req.json.tpl nova/tests/integrated/v3/api_samples/os-scheduler-hints/scheduler-hints-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-scheduler-hints/scheduler-hints-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-security-groups/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-security-groups/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-security-groups/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-security-groups/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-external-events/event-create-req.json.tpl nova/tests/integrated/v3/api_samples/os-server-external-events/event-create-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-external-events/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-server-external-events/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-usage/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-usage/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-server-usage/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-server-usage/servers-detail-resp.json.tpl nova/tests/integrated/v3/api_samples/os-services/service-disable-log-put-req.json.tpl nova/tests/integrated/v3/api_samples/os-services/service-disable-log-put-resp.json.tpl nova/tests/integrated/v3/api_samples/os-services/service-disable-put-req.json.tpl nova/tests/integrated/v3/api_samples/os-services/service-disable-put-resp.json.tpl nova/tests/integrated/v3/api_samples/os-services/service-enable-put-req.json.tpl nova/tests/integrated/v3/api_samples/os-services/service-enable-put-resp.json.tpl nova/tests/integrated/v3/api_samples/os-services/services-list-get-resp.json.tpl nova/tests/integrated/v3/api_samples/os-shelve/os-shelve-offload.json.tpl nova/tests/integrated/v3/api_samples/os-shelve/os-shelve.json.tpl nova/tests/integrated/v3/api_samples/os-shelve/os-unshelve.json.tpl nova/tests/integrated/v3/api_samples/os-shelve/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-shelve/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-suspend-server/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-suspend-server/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/os-suspend-server/server-resume.json.tpl nova/tests/integrated/v3/api_samples/os-suspend-server/server-suspend.json.tpl nova/tests/integrated/v3/api_samples/os-user-data/userdata-post-req.json.tpl nova/tests/integrated/v3/api_samples/os-user-data/userdata-post-resp.json.tpl nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.json.tpl nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.json.tpl nova/tests/integrated/v3/api_samples/server-ips/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.json.tpl nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.json.tpl nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.json.tpl nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.json.tpl nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-confirm-resize.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-create-image.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-reboot.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral-resp.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-resp.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-rebuild.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-resize.json.tpl nova/tests/integrated/v3/api_samples/servers/server-action-revert-resize.json.tpl nova/tests/integrated/v3/api_samples/servers/server-get-resp.json.tpl nova/tests/integrated/v3/api_samples/servers/server-post-req.json.tpl nova/tests/integrated/v3/api_samples/servers/server-post-resp.json.tpl nova/tests/integrated/v3/api_samples/servers/servers-details-resp.json.tpl nova/tests/integrated/v3/api_samples/servers/servers-list-resp.json.tpl nova/tests/keymgr/__init__.py nova/tests/keymgr/fake.py nova/tests/keymgr/test_conf_key_mgr.py nova/tests/keymgr/test_key.py nova/tests/keymgr/test_key_mgr.py nova/tests/keymgr/test_mock_key_mgr.py nova/tests/keymgr/test_not_implemented_key_mgr.py nova/tests/keymgr/test_single_key_mgr.py nova/tests/monkey_patch_example/__init__.py nova/tests/monkey_patch_example/example_a.py nova/tests/monkey_patch_example/example_b.py nova/tests/network/__init__.py nova/tests/network/test_api.py nova/tests/network/test_ipam_lib.py nova/tests/network/test_linux_net.py nova/tests/network/test_manager.py nova/tests/network/test_network_info.py nova/tests/network/test_neutronv2.py nova/tests/network/test_rpcapi.py nova/tests/network/security_group/__init__.py nova/tests/network/security_group/test_neutron_driver.py nova/tests/objects/__init__.py nova/tests/objects/test_aggregate.py nova/tests/objects/test_block_device.py nova/tests/objects/test_compute_node.py nova/tests/objects/test_dns_domain.py nova/tests/objects/test_external_event.py nova/tests/objects/test_fields.py nova/tests/objects/test_fixed_ip.py nova/tests/objects/test_flavor.py nova/tests/objects/test_floating_ip.py nova/tests/objects/test_instance.py nova/tests/objects/test_instance_action.py nova/tests/objects/test_instance_fault.py nova/tests/objects/test_instance_group.py nova/tests/objects/test_instance_info_cache.py nova/tests/objects/test_keypair.py nova/tests/objects/test_migration.py nova/tests/objects/test_network.py nova/tests/objects/test_objects.py nova/tests/objects/test_pci_device.py nova/tests/objects/test_quotas.py nova/tests/objects/test_security_group.py nova/tests/objects/test_security_group_rule.py nova/tests/objects/test_service.py nova/tests/objects/test_virtual_interface.py nova/tests/pci/__init__.py nova/tests/pci/test_pci_manager.py nova/tests/pci/test_pci_request.py nova/tests/pci/test_pci_stats.py nova/tests/pci/test_pci_utils.py nova/tests/pci/test_pci_whitelist.py nova/tests/scheduler/__init__.py nova/tests/scheduler/fakes.py nova/tests/scheduler/test_caching_scheduler.py nova/tests/scheduler/test_chance_scheduler.py nova/tests/scheduler/test_filter_scheduler.py nova/tests/scheduler/test_filters.py nova/tests/scheduler/test_host_filters.py nova/tests/scheduler/test_host_manager.py nova/tests/scheduler/test_rpcapi.py nova/tests/scheduler/test_scheduler.py nova/tests/scheduler/test_scheduler_options.py nova/tests/scheduler/test_scheduler_utils.py nova/tests/scheduler/test_weights.py nova/tests/servicegroup/__init__.py nova/tests/servicegroup/test_db_servicegroup.py nova/tests/servicegroup/test_mc_servicegroup.py nova/tests/servicegroup/test_zk_driver.py nova/tests/ssl_cert/ca.crt nova/tests/ssl_cert/certificate.crt nova/tests/ssl_cert/privatekey.key nova/tests/virt/__init__.py nova/tests/virt/test_block_device.py nova/tests/virt/test_cpu.py nova/tests/virt/test_driver.py nova/tests/virt/test_imagecache.py nova/tests/virt/test_images.py nova/tests/virt/test_virt.py nova/tests/virt/test_virt_disk.py nova/tests/virt/test_virt_disk_vfs_guestfs.py nova/tests/virt/test_virt_disk_vfs_localfs.py nova/tests/virt/test_virt_drivers.py nova/tests/virt/test_volumeutils.py nova/tests/virt/baremetal/__init__.py nova/tests/virt/baremetal/test_baremetal_migrations.conf nova/tests/virt/baremetal/test_driver.py nova/tests/virt/baremetal/test_iboot_pdu.py nova/tests/virt/baremetal/test_ipmi.py nova/tests/virt/baremetal/test_nova_baremetal_deploy_helper.py nova/tests/virt/baremetal/test_nova_baremetal_manage.py nova/tests/virt/baremetal/test_pxe.py nova/tests/virt/baremetal/test_tilera.py nova/tests/virt/baremetal/test_tilera_pdu.py nova/tests/virt/baremetal/test_utils.py nova/tests/virt/baremetal/test_virtual_power_driver.py nova/tests/virt/baremetal/test_volume_driver.py nova/tests/virt/baremetal/db/__init__.py nova/tests/virt/baremetal/db/base.py nova/tests/virt/baremetal/db/test_bm_interface.py nova/tests/virt/baremetal/db/test_bm_node.py nova/tests/virt/baremetal/db/utils.py nova/tests/virt/disk/__init__.py nova/tests/virt/disk/test_api.py nova/tests/virt/disk/test_loop.py nova/tests/virt/disk/test_nbd.py nova/tests/virt/hyperv/__init__.py nova/tests/virt/hyperv/db_fakes.py nova/tests/virt/hyperv/fake.py nova/tests/virt/hyperv/test_hypervapi.py nova/tests/virt/hyperv/test_networkutilsv2.py nova/tests/virt/hyperv/test_rdpconsoleutils.py nova/tests/virt/hyperv/test_rdpconsoleutilsv2.py nova/tests/virt/hyperv/test_vhdutils.py nova/tests/virt/hyperv/test_vhdutilsv2.py nova/tests/virt/hyperv/test_vmutils.py nova/tests/virt/hyperv/test_vmutilsv2.py nova/tests/virt/libvirt/__init__.py nova/tests/virt/libvirt/fake_imagebackend.py nova/tests/virt/libvirt/fake_libvirt_utils.py nova/tests/virt/libvirt/fakelibvirt.py nova/tests/virt/libvirt/test_designer.py nova/tests/virt/libvirt/test_dmcrypt.py nova/tests/virt/libvirt/test_fakelibvirt.py nova/tests/virt/libvirt/test_image_utils.py nova/tests/virt/libvirt/test_imagebackend.py nova/tests/virt/libvirt/test_imagecache.py nova/tests/virt/libvirt/test_libvirt.py nova/tests/virt/libvirt/test_libvirt_blockinfo.py nova/tests/virt/libvirt/test_libvirt_config.py nova/tests/virt/libvirt/test_libvirt_utils.py nova/tests/virt/libvirt/test_libvirt_vif.py nova/tests/virt/libvirt/test_libvirt_volume.py nova/tests/virt/vmwareapi/__init__.py nova/tests/virt/vmwareapi/stubs.py nova/tests/virt/vmwareapi/test_configdrive.py nova/tests/virt/vmwareapi/test_driver_api.py nova/tests/virt/vmwareapi/test_ds_util.py nova/tests/virt/vmwareapi/test_error_util.py nova/tests/virt/vmwareapi/test_imagecache.py nova/tests/virt/vmwareapi/test_read_write_util.py nova/tests/virt/vmwareapi/test_vif.py nova/tests/virt/vmwareapi/test_vim_util.py nova/tests/virt/vmwareapi/test_vm_util.py nova/tests/virt/vmwareapi/test_vm_util_datastore_selection.py nova/tests/virt/vmwareapi/test_vmops.py nova/tests/virt/vmwareapi/test_volumeops.py nova/tests/virt/xenapi/__init__.py nova/tests/virt/xenapi/stubs.py nova/tests/virt/xenapi/test_agent.py nova/tests/virt/xenapi/test_driver.py nova/tests/virt/xenapi/test_vm_utils.py nova/tests/virt/xenapi/test_vmops.py nova/tests/virt/xenapi/test_volume_utils.py nova/tests/virt/xenapi/test_volumeops.py nova/tests/virt/xenapi/test_xenapi.py nova/tests/virt/xenapi/vm_rrd.xml nova/tests/virt/xenapi/client/__init__.py nova/tests/virt/xenapi/client/test_objects.py nova/tests/virt/xenapi/client/test_session.py nova/tests/virt/xenapi/image/__init__.py nova/tests/virt/xenapi/image/test_bittorrent.py nova/tests/virt/xenapi/image/test_glance.py nova/tests/virt/xenapi/image/test_utils.py nova/tests/virt/xenapi/image/test_vdi_through_dev.py nova/tests/volume/__init__.py nova/tests/volume/test_cinder.py nova/tests/volume/encryptors/__init__.py nova/tests/volume/encryptors/test_base.py nova/tests/volume/encryptors/test_cryptsetup.py nova/tests/volume/encryptors/test_luks.py nova/tests/volume/encryptors/test_nop.py nova/virt/__init__.py nova/virt/block_device.py nova/virt/configdrive.py nova/virt/cpu.py nova/virt/driver.py nova/virt/event.py nova/virt/fake.py nova/virt/firewall.py nova/virt/imagecache.py nova/virt/images.py nova/virt/interfaces.template nova/virt/netutils.py nova/virt/storage_users.py nova/virt/virtapi.py nova/virt/volumeutils.py nova/virt/watchdog_actions.py nova/virt/baremetal/__init__.py nova/virt/baremetal/baremetal_states.py nova/virt/baremetal/base.py nova/virt/baremetal/common.py nova/virt/baremetal/driver.py nova/virt/baremetal/fake.py nova/virt/baremetal/iboot_pdu.py nova/virt/baremetal/ipmi.py nova/virt/baremetal/net-dhcp.ubuntu.template nova/virt/baremetal/net-static.ubuntu.template nova/virt/baremetal/pxe.py nova/virt/baremetal/pxe_config.template nova/virt/baremetal/tilera.py nova/virt/baremetal/tilera_pdu.py nova/virt/baremetal/utils.py nova/virt/baremetal/vif_driver.py nova/virt/baremetal/virtual_power_driver.py nova/virt/baremetal/virtual_power_driver_settings.py nova/virt/baremetal/volume_driver.py nova/virt/baremetal/db/__init__.py nova/virt/baremetal/db/api.py nova/virt/baremetal/db/migration.py nova/virt/baremetal/db/sqlalchemy/__init__.py nova/virt/baremetal/db/sqlalchemy/api.py nova/virt/baremetal/db/sqlalchemy/migration.py nova/virt/baremetal/db/sqlalchemy/models.py nova/virt/baremetal/db/sqlalchemy/session.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/__init__.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/migrate.cfg nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/002_drop_bm_deployments.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/003_add_uuid_to_bm_nodes.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/004_add_instance_name_to_bm_nodes.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/005_drop_unused_columns_from_nodes.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/006_move_prov_mac_address.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/007_drop_prov_mac_address.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/008_remove_bm_pxe_ips_table.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/009_add_ephemeral_mb_to_bm_nodes.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/010_add_preserve_ephemeral.py nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/__init__.py nova/virt/baremetal/doc/README.rst nova/virt/disk/__init__.py nova/virt/disk/api.py nova/virt/disk/mount/__init__.py nova/virt/disk/mount/api.py nova/virt/disk/mount/loop.py nova/virt/disk/mount/nbd.py nova/virt/disk/vfs/__init__.py nova/virt/disk/vfs/api.py nova/virt/disk/vfs/guestfs.py nova/virt/disk/vfs/localfs.py nova/virt/hyperv/README.rst nova/virt/hyperv/__init__.py nova/virt/hyperv/basevolumeutils.py nova/virt/hyperv/constants.py nova/virt/hyperv/driver.py nova/virt/hyperv/hostops.py nova/virt/hyperv/hostutils.py nova/virt/hyperv/imagecache.py nova/virt/hyperv/livemigrationops.py nova/virt/hyperv/livemigrationutils.py nova/virt/hyperv/migrationops.py nova/virt/hyperv/networkutils.py nova/virt/hyperv/networkutilsv2.py nova/virt/hyperv/pathutils.py nova/virt/hyperv/rdpconsoleops.py nova/virt/hyperv/rdpconsoleutils.py nova/virt/hyperv/rdpconsoleutilsv2.py nova/virt/hyperv/snapshotops.py nova/virt/hyperv/utilsfactory.py nova/virt/hyperv/vhdutils.py nova/virt/hyperv/vhdutilsv2.py nova/virt/hyperv/vif.py nova/virt/hyperv/vmops.py nova/virt/hyperv/vmutils.py nova/virt/hyperv/vmutilsv2.py nova/virt/hyperv/volumeops.py nova/virt/hyperv/volumeutils.py nova/virt/hyperv/volumeutilsv2.py nova/virt/imagehandler/__init__.py nova/virt/libvirt/__init__.py nova/virt/libvirt/blockinfo.py nova/virt/libvirt/config.py nova/virt/libvirt/designer.py nova/virt/libvirt/dmcrypt.py nova/virt/libvirt/driver.py nova/virt/libvirt/firewall.py nova/virt/libvirt/imagebackend.py nova/virt/libvirt/imagecache.py nova/virt/libvirt/utils.py nova/virt/libvirt/vif.py nova/virt/libvirt/volume.py nova/virt/vmwareapi/__init__.py nova/virt/vmwareapi/driver.py nova/virt/vmwareapi/ds_util.py nova/virt/vmwareapi/error_util.py nova/virt/vmwareapi/fake.py nova/virt/vmwareapi/host.py nova/virt/vmwareapi/imagecache.py nova/virt/vmwareapi/io_util.py nova/virt/vmwareapi/network_util.py nova/virt/vmwareapi/read_write_util.py nova/virt/vmwareapi/vif.py nova/virt/vmwareapi/vim.py nova/virt/vmwareapi/vim_util.py nova/virt/vmwareapi/vm_util.py nova/virt/vmwareapi/vmops.py nova/virt/vmwareapi/vmware_images.py nova/virt/vmwareapi/volume_util.py nova/virt/vmwareapi/volumeops.py nova/virt/xenapi/__init__.py nova/virt/xenapi/agent.py nova/virt/xenapi/driver.py nova/virt/xenapi/fake.py nova/virt/xenapi/firewall.py nova/virt/xenapi/host.py nova/virt/xenapi/network_utils.py nova/virt/xenapi/pool.py nova/virt/xenapi/pool_states.py nova/virt/xenapi/vif.py nova/virt/xenapi/vm_utils.py nova/virt/xenapi/vmops.py nova/virt/xenapi/volume_utils.py nova/virt/xenapi/volumeops.py nova/virt/xenapi/client/__init__.py nova/virt/xenapi/client/objects.py nova/virt/xenapi/client/session.py nova/virt/xenapi/image/__init__.py nova/virt/xenapi/image/bittorrent.py nova/virt/xenapi/image/glance.py nova/virt/xenapi/image/utils.py nova/virt/xenapi/image/vdi_through_dev.py nova/vnc/__init__.py nova/vnc/xvp_proxy.py nova/volume/__init__.py nova/volume/cinder.py nova/volume/encryptors/__init__.py nova/volume/encryptors/base.py nova/volume/encryptors/cryptsetup.py nova/volume/encryptors/luks.py nova/volume/encryptors/nop.py plugins/xenserver/doc/networking.rst plugins/xenserver/networking/etc/init.d/host-rules plugins/xenserver/networking/etc/init.d/openvswitch-nova plugins/xenserver/networking/etc/sysconfig/openvswitch-nova plugins/xenserver/networking/etc/udev/rules.d/xen-openvswitch-nova.rules plugins/xenserver/networking/etc/xensource/scripts/novalib.py plugins/xenserver/networking/etc/xensource/scripts/ovs_configure_base_flows.py plugins/xenserver/networking/etc/xensource/scripts/ovs_configure_vif_flows.py plugins/xenserver/networking/etc/xensource/scripts/vif_5.6-fp1.patch plugins/xenserver/networking/etc/xensource/scripts/vif_rules.py plugins/xenserver/xenapi/README plugins/xenserver/xenapi/etc/xapi.d/plugins/_bittorrent_seeder plugins/xenserver/xenapi/etc/xapi.d/plugins/agent plugins/xenserver/xenapi/etc/xapi.d/plugins/bandwidth plugins/xenserver/xenapi/etc/xapi.d/plugins/bittorrent plugins/xenserver/xenapi/etc/xapi.d/plugins/config_file plugins/xenserver/xenapi/etc/xapi.d/plugins/console plugins/xenserver/xenapi/etc/xapi.d/plugins/glance plugins/xenserver/xenapi/etc/xapi.d/plugins/ipxe plugins/xenserver/xenapi/etc/xapi.d/plugins/kernel plugins/xenserver/xenapi/etc/xapi.d/plugins/migration plugins/xenserver/xenapi/etc/xapi.d/plugins/nova_plugin_version plugins/xenserver/xenapi/etc/xapi.d/plugins/pluginlib_nova.py plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py plugins/xenserver/xenapi/etc/xapi.d/plugins/workarounds plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost plugins/xenserver/xenapi/etc/xapi.d/plugins/xenstore.py tools/clean-vlans tools/colorizer.py tools/enable-pre-commit-hook.sh tools/install_venv.py tools/install_venv_common.py tools/lintstack.py tools/lintstack.sh tools/nova-manage.bash_completion tools/regression_tester.py tools/with_venv.sh tools/config/README tools/config/analyze_opts.py tools/config/check_uptodate.sh tools/config/generate_sample.sh tools/config/oslo.config.generator.rc tools/db/schema_diff.py tools/esx/guest_tool.py tools/vmwareapi/README.firewall tools/xenserver/cleanup_sm_locks.py tools/xenserver/destroy_cached_images.py tools/xenserver/populate_other_config.py tools/xenserver/rotate_xen_guest_logs.sh tools/xenserver/stress_test.py tools/xenserver/vdi_chain_cleanup.py tools/xenserver/vm_vdi_cleaner.pynova-2014.1/setup.py0000664000175400017540000000141512323721477015425 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # 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. # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT import setuptools setuptools.setup( setup_requires=['pbr'], pbr=True) nova-2014.1/tools/0000775000175400017540000000000012323722546015050 5ustar jenkinsjenkins00000000000000nova-2014.1/tools/lintstack.py0000775000175400017540000001473312323721477017433 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012, AT&T Labs, Yun Mao # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """pylint error checking.""" from __future__ import print_function import cStringIO as StringIO import json import re import sys from pylint import lint from pylint.reporters import text # Note(maoy): E1103 is error code related to partial type inference ignore_codes = ["E1103"] # Note(maoy): the error message is the pattern of E0202. It should be ignored # for nova.tests modules ignore_messages = ["An attribute affected in nova.tests"] # Note(maoy): we ignore all errors in openstack.common because it should be # checked elsewhere. We also ignore nova.tests for now due to high false # positive rate. # Note(danms): we ignore all errors in nova.objects because the false # positive rate should be very high. ignore_modules = ["nova/openstack/common/", "nova/tests/", "nova/objects/"] KNOWN_PYLINT_EXCEPTIONS_FILE = "tools/pylint_exceptions" class LintOutput(object): _cached_filename = None _cached_content = None def __init__(self, filename, lineno, line_content, code, message, lintoutput): self.filename = filename self.lineno = lineno self.line_content = line_content self.code = code self.message = message self.lintoutput = lintoutput @classmethod def from_line(cls, line): m = re.search(r"(\S+):(\d+): \[(\S+)(, \S+)?] (.*)", line) matched = m.groups() filename, lineno, code, message = (matched[0], int(matched[1]), matched[2], matched[-1]) if cls._cached_filename != filename: with open(filename) as f: cls._cached_content = list(f.readlines()) cls._cached_filename = filename line_content = cls._cached_content[lineno - 1].rstrip() return cls(filename, lineno, line_content, code, message, line.rstrip()) @classmethod def from_msg_to_dict(cls, msg): """From the output of pylint msg, to a dict, where each key is a unique error identifier, value is a list of LintOutput """ result = {} for line in msg.splitlines(): obj = cls.from_line(line) if obj.is_ignored(): continue key = obj.key() if key not in result: result[key] = [] result[key].append(obj) return result def is_ignored(self): if self.code in ignore_codes: return True if any(self.filename.startswith(name) for name in ignore_modules): return True if any(msg in self.message for msg in ignore_messages): return True return False def key(self): if self.code in ["E1101", "E1103"]: # These two types of errors are like Foo class has no member bar. # We discard the source code so that the error will be ignored # next time another Foo.bar is encountered. return self.message, "" return self.message, self.line_content.strip() def json(self): return json.dumps(self.__dict__) def review_str(self): return ("File %(filename)s\nLine %(lineno)d:%(line_content)s\n" "%(code)s: %(message)s" % self.__dict__) class ErrorKeys(object): @classmethod def print_json(cls, errors, output=sys.stdout): print("# automatically generated by tools/lintstack.py", file=output) for i in sorted(errors.keys()): print(json.dumps(i), file=output) @classmethod def from_file(cls, filename): keys = set() for line in open(filename): if line and line[0] != "#": d = json.loads(line) keys.add(tuple(d)) return keys def run_pylint(): buff = StringIO.StringIO() reporter = text.ParseableTextReporter(output=buff) args = ["--include-ids=y", "-E", "nova"] lint.Run(args, reporter=reporter, exit=False) val = buff.getvalue() buff.close() return val def generate_error_keys(msg=None): print("Generating", KNOWN_PYLINT_EXCEPTIONS_FILE) if msg is None: msg = run_pylint() errors = LintOutput.from_msg_to_dict(msg) with open(KNOWN_PYLINT_EXCEPTIONS_FILE, "w") as f: ErrorKeys.print_json(errors, output=f) def validate(newmsg=None): print("Loading", KNOWN_PYLINT_EXCEPTIONS_FILE) known = ErrorKeys.from_file(KNOWN_PYLINT_EXCEPTIONS_FILE) if newmsg is None: print("Running pylint. Be patient...") newmsg = run_pylint() errors = LintOutput.from_msg_to_dict(newmsg) print("Unique errors reported by pylint: was %d, now %d." % (len(known), len(errors))) passed = True for err_key, err_list in errors.items(): for err in err_list: if err_key not in known: print(err.lintoutput) print() passed = False if passed: print("Congrats! pylint check passed.") redundant = known - set(errors.keys()) if redundant: print("Extra credit: some known pylint exceptions disappeared.") for i in sorted(redundant): print(json.dumps(i)) print("Consider regenerating the exception file if you will.") else: print ("Please fix the errors above. If you believe they are false" " positives, run 'tools/lintstack.py generate' to overwrite.") sys.exit(1) def usage(): print("""Usage: tools/lintstack.py [generate|validate] To generate pylint_exceptions file: tools/lintstack.py generate To validate the current commit: tools/lintstack.py """) def main(): option = "validate" if len(sys.argv) > 1: option = sys.argv[1] if option == "generate": generate_error_keys() elif option == "validate": validate() else: usage() if __name__ == "__main__": main() nova-2014.1/tools/clean-vlans0000775000175400017540000000214012323721477017200 0ustar jenkinsjenkins00000000000000#!/usr/bin/env bash # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. export LC_ALL=C sudo ifconfig -a | grep br | grep -v bridge | cut -f1 -d" " | xargs -n1 -ifoo ifconfig foo down sudo ifconfig -a | grep br | grep -v bridge | cut -f1 -d" " | xargs -n1 -ifoo brctl delbr foo sudo ifconfig -a | grep vlan | cut -f1 -d" " | xargs -n1 -ifoo ifconfig foo down sudo ifconfig -a | grep vlan | cut -f1 -d" " | xargs -n1 -ifoo ip link del foo nova-2014.1/tools/config/0000775000175400017540000000000012323722546016315 5ustar jenkinsjenkins00000000000000nova-2014.1/tools/config/generate_sample.sh0000775000175400017540000000651512323721477022020 0ustar jenkinsjenkins00000000000000#!/usr/bin/env bash print_hint() { echo "Try \`${0##*/} --help' for more information." >&2 } PARSED_OPTIONS=$(getopt -n "${0##*/}" -o hb:p:m:l:o: \ --long help,base-dir:,package-name:,output-dir:,module:,library: -- "$@") if [ $? != 0 ] ; then print_hint ; exit 1 ; fi eval set -- "$PARSED_OPTIONS" while true; do case "$1" in -h|--help) echo "${0##*/} [options]" echo "" echo "options:" echo "-h, --help show brief help" echo "-b, --base-dir=DIR project base directory" echo "-p, --package-name=NAME project package name" echo "-o, --output-dir=DIR file output directory" echo "-m, --module=MOD extra python module to interrogate for options" echo "-l, --library=LIB extra library that registers options for discovery" exit 0 ;; -b|--base-dir) shift BASEDIR=`echo $1 | sed -e 's/\/*$//g'` shift ;; -p|--package-name) shift PACKAGENAME=`echo $1` shift ;; -o|--output-dir) shift OUTPUTDIR=`echo $1 | sed -e 's/\/*$//g'` shift ;; -m|--module) shift MODULES="$MODULES -m $1" shift ;; -l|--library) shift LIBRARIES="$LIBRARIES -l $1" shift ;; --) break ;; esac done BASEDIR=${BASEDIR:-`pwd`} if ! [ -d $BASEDIR ] then echo "${0##*/}: missing project base directory" >&2 ; print_hint ; exit 1 elif [[ $BASEDIR != /* ]] then BASEDIR=$(cd "$BASEDIR" && pwd) fi PACKAGENAME=${PACKAGENAME:-${BASEDIR##*/}} TARGETDIR=$BASEDIR/$PACKAGENAME if ! [ -d $TARGETDIR ] then echo "${0##*/}: invalid project package name" >&2 ; print_hint ; exit 1 fi OUTPUTDIR=${OUTPUTDIR:-$BASEDIR/etc} # NOTE(bnemec): Some projects put their sample config in etc/, # some in etc/$PACKAGENAME/ if [ -d $OUTPUTDIR/$PACKAGENAME ] then OUTPUTDIR=$OUTPUTDIR/$PACKAGENAME elif ! [ -d $OUTPUTDIR ] then echo "${0##*/}: cannot access \`$OUTPUTDIR': No such file or directory" >&2 exit 1 fi BASEDIRESC=`echo $BASEDIR | sed -e 's/\//\\\\\//g'` find $TARGETDIR -type f -name "*.pyc" -delete FILES=$(find $TARGETDIR -type f -name "*.py" ! -path "*/tests/*" \ -exec grep -l "Opt(" {} + | sed -e "s/^$BASEDIRESC\///g" | sort -u) RC_FILE="`dirname $0`/oslo.config.generator.rc" if test -r "$RC_FILE" then source "$RC_FILE" fi for mod in ${NOVA_CONFIG_GENERATOR_EXTRA_MODULES}; do MODULES="$MODULES -m $mod" done for lib in ${NOVA_CONFIG_GENERATOR_EXTRA_LIBRARIES}; do LIBRARIES="$LIBRARIES -l $lib" done export EVENTLET_NO_GREENDNS=yes OS_VARS=$(set | sed -n '/^OS_/s/=[^=]*$//gp' | xargs) [ "$OS_VARS" ] && eval "unset \$OS_VARS" DEFAULT_MODULEPATH=nova.openstack.common.config.generator MODULEPATH=${MODULEPATH:-$DEFAULT_MODULEPATH} OUTPUTFILE=$OUTPUTDIR/$PACKAGENAME.conf.sample python -m $MODULEPATH $MODULES $LIBRARIES $FILES > $OUTPUTFILE # Hook to allow projects to append custom config file snippets CONCAT_FILES=$(ls $BASEDIR/tools/config/*.conf.sample 2>/dev/null) for CONCAT_FILE in $CONCAT_FILES; do cat $CONCAT_FILE >> $OUTPUTFILE done nova-2014.1/tools/config/README0000664000175400017540000000134712323721477017204 0ustar jenkinsjenkins00000000000000This generate_sample.sh tool is used to generate etc/nova/nova.conf.sample Run it from the top-level working directory i.e. $> ./tools/config/generate_sample.sh -b ./ -p nova -o etc/nova Watch out for warnings about modules like libvirt, qpid and zmq not being found - these warnings are significant because they result in options not appearing in the generated config file. The analyze_opts.py tool is used to find options which appear in /etc/nova/nova.conf but not in etc/nova/nova.conf.sample This helps identify options in the nova.conf file which are not used by nova. The tool also identifies any options which are set to the default value. Run it from the top-level working directory i.e. $> ./tools/config/analyze_opts.py nova-2014.1/tools/config/oslo.config.generator.rc0000664000175400017540000000017612323721477023056 0ustar jenkinsjenkins00000000000000NOVA_CONFIG_GENERATOR_EXTRA_LIBRARIES=oslo.messaging NOVA_CONFIG_GENERATOR_EXTRA_MODULES=keystoneclient.middleware.auth_token nova-2014.1/tools/config/check_uptodate.sh0000775000175400017540000000125412323721477021642 0ustar jenkinsjenkins00000000000000#!/usr/bin/env bash PROJECT_NAME=${PROJECT_NAME:-nova} CFGFILE_NAME=${PROJECT_NAME}.conf.sample if [ -e etc/${PROJECT_NAME}/${CFGFILE_NAME} ]; then CFGFILE=etc/${PROJECT_NAME}/${CFGFILE_NAME} elif [ -e etc/${CFGFILE_NAME} ]; then CFGFILE=etc/${CFGFILE_NAME} else echo "${0##*/}: can not find config file" exit 1 fi TEMPDIR=`mktemp -d /tmp/${PROJECT_NAME}.XXXXXX` trap "rm -rf $TEMPDIR" EXIT tools/config/generate_sample.sh -b ./ -p ${PROJECT_NAME} -o ${TEMPDIR} if ! diff -u ${TEMPDIR}/${CFGFILE_NAME} ${CFGFILE} then echo "${0##*/}: ${PROJECT_NAME}.conf.sample is not up to date." echo "${0##*/}: Please run ${0%%${0##*/}}generate_sample.sh." exit 1 fi nova-2014.1/tools/config/analyze_opts.py0000775000175400017540000000535212323721477021411 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012, Cloudscaling # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. ''' find_unused_options.py Compare the nova.conf file with the nova.conf.sample file to find any unused options or default values in nova.conf ''' from __future__ import print_function import argparse import os import sys sys.path.append(os.getcwd()) from oslo.config import iniparser class PropertyCollecter(iniparser.BaseParser): def __init__(self): super(PropertyCollecter, self).__init__() self.key_value_pairs = {} def assignment(self, key, value): self.key_value_pairs[key] = value def new_section(self, section): pass @classmethod def collect_properties(cls, lineiter, sample_format=False): def clean_sample(f): for line in f: if line.startswith("#") and not line.startswith("# "): line = line[1:] yield line pc = cls() if sample_format: lineiter = clean_sample(lineiter) pc.parse(lineiter) return pc.key_value_pairs if __name__ == '__main__': parser = argparse.ArgumentParser(description='''Compare the nova.conf file with the nova.conf.sample file to find any unused options or default values in nova.conf''') parser.add_argument('-c', action='store', default='/etc/nova/nova.conf', help='path to nova.conf\ (defaults to /etc/nova/nova.conf)') parser.add_argument('-s', default='./etc/nova/nova.conf.sample', help='path to nova.conf.sample\ (defaults to ./etc/nova/nova.conf.sample') options = parser.parse_args() conf_file_options = PropertyCollecter.collect_properties(open(options.c)) sample_conf_file_options = PropertyCollecter.collect_properties( open(options.s), sample_format=True) for k, v in sorted(conf_file_options.items()): if k not in sample_conf_file_options: print("Unused:", k) for k, v in sorted(conf_file_options.items()): if k in sample_conf_file_options and v == sample_conf_file_options[k]: print("Default valued:", k) nova-2014.1/tools/nova-manage.bash_completion0000664000175400017540000000214012323721477022330 0ustar jenkinsjenkins00000000000000# bash completion for openstack nova-manage _nova_manage_opts="" # lazy init _nova_manage_opts_exp="" # lazy init # dict hack for bash 3 _set_nova_manage_subopts () { eval _nova_manage_subopts_"$1"='$2' } _get_nova_manage_subopts () { eval echo '${_nova_manage_subopts_'"$1"'#_nova_manage_subopts_}' } _nova_manage() { local cur prev subopts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "x$_nova_manage_opts" == "x" ] ; then _nova_manage_opts="`nova-manage bash-completion 2>/dev/null`" _nova_manage_opts_exp="`echo $_nova_manage_opts | sed -e "s/\s/|/g"`" fi if [[ " `echo $_nova_manage_opts` " =~ " $prev " ]] ; then if [ "x$(_get_nova_manage_subopts "$prev")" == "x" ] ; then subopts="`nova-manage bash-completion $prev 2>/dev/null`" _set_nova_manage_subopts "$prev" "$subopts" fi COMPREPLY=($(compgen -W "$(_get_nova_manage_subopts "$prev")" -- ${cur})) elif [[ ! " ${COMP_WORDS[@]} " =~ " "($_nova_manage_opts_exp)" " ]] ; then COMPREPLY=($(compgen -W "${_nova_manage_opts}" -- ${cur})) fi return 0 } complete -F _nova_manage nova-manage nova-2014.1/tools/install_venv.py0000664000175400017540000000454212323721477020135 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2010 OpenStack Foundation # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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 __future__ import print_function import os import sys import install_venv_common as install_venv def print_help(venv, root): help = """ Nova development environment setup is complete. Nova development uses virtualenv to track and manage Python dependencies while in development and testing. To activate the Nova virtualenv for the extent of your current shell session you can run: $ source %s/bin/activate Or, if you prefer, you can run commands in the virtualenv on a case by case basis by running: $ %s/tools/with_venv.sh Also, make test will automatically use the virtualenv. """ print(help % (venv, root)) def main(argv): root = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) if os.environ.get('tools_path'): root = os.environ['tools_path'] venv = os.path.join(root, '.venv') if os.environ.get('venv'): venv = os.environ['venv'] pip_requires = os.path.join(root, 'requirements.txt') test_requires = os.path.join(root, 'test-requirements.txt') py_version = "python%s.%s" % (sys.version_info[0], sys.version_info[1]) project = 'Nova' install = install_venv.InstallVenv(root, venv, pip_requires, test_requires, py_version, project) options = install.parse_args(argv) install.check_python_version() install.check_dependencies() install.create_virtualenv(no_site_packages=options.no_site_packages) install.install_dependencies() print_help(venv, root) if __name__ == '__main__': main(sys.argv) nova-2014.1/tools/with_venv.sh0000775000175400017540000000033212323721477017420 0ustar jenkinsjenkins00000000000000#!/bin/bash tools_path=${tools_path:-$(dirname $0)} venv_path=${venv_path:-${tools_path}} venv_dir=${venv_name:-/../.venv} TOOLS=${tools_path} VENV=${venv:-${venv_path}/${venv_dir}} source ${VENV}/bin/activate && "$@" nova-2014.1/tools/colorizer.py0000775000175400017540000002706412323721477017450 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2013, Nebula, Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # Colorizer Code is borrowed from Twisted: # Copyright (c) 2001-2010 Twisted Matrix Laboratories. # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """Display a subunit stream through a colorized unittest test runner.""" import heapq import subunit import sys import unittest import testtools class _AnsiColorizer(object): """ A colorizer is an object that loosely wraps around a stream, allowing callers to write text to the stream in a particular color. Colorizer classes must implement C{supported()} and C{write(text, color)}. """ _colors = dict(black=30, red=31, green=32, yellow=33, blue=34, magenta=35, cyan=36, white=37) def __init__(self, stream): self.stream = stream def supported(cls, stream=sys.stdout): """ A class method that returns True if the current platform supports coloring terminal output using this method. Returns False otherwise. """ if not stream.isatty(): return False # auto color only on TTYs try: import curses except ImportError: return False else: try: try: return curses.tigetnum("colors") > 2 except curses.error: curses.setupterm() return curses.tigetnum("colors") > 2 except Exception: # guess false in case of error return False supported = classmethod(supported) def write(self, text, color): """ Write the given text to the stream in the given color. @param text: Text to be written to the stream. @param color: A string label for a color. e.g. 'red', 'white'. """ color = self._colors[color] self.stream.write('\x1b[%s;1m%s\x1b[0m' % (color, text)) class _Win32Colorizer(object): """ See _AnsiColorizer docstring. """ def __init__(self, stream): import win32console red, green, blue, bold = (win32console.FOREGROUND_RED, win32console.FOREGROUND_GREEN, win32console.FOREGROUND_BLUE, win32console.FOREGROUND_INTENSITY) self.stream = stream self.screenBuffer = win32console.GetStdHandle( win32console.STD_OUT_HANDLE) self._colors = { 'normal': red | green | blue, 'red': red | bold, 'green': green | bold, 'blue': blue | bold, 'yellow': red | green | bold, 'magenta': red | blue | bold, 'cyan': green | blue | bold, 'white': red | green | blue | bold } def supported(cls, stream=sys.stdout): try: import win32console screenBuffer = win32console.GetStdHandle( win32console.STD_OUT_HANDLE) except ImportError: return False import pywintypes try: screenBuffer.SetConsoleTextAttribute( win32console.FOREGROUND_RED | win32console.FOREGROUND_GREEN | win32console.FOREGROUND_BLUE) except pywintypes.error: return False else: return True supported = classmethod(supported) def write(self, text, color): color = self._colors[color] self.screenBuffer.SetConsoleTextAttribute(color) self.stream.write(text) self.screenBuffer.SetConsoleTextAttribute(self._colors['normal']) class _NullColorizer(object): """ See _AnsiColorizer docstring. """ def __init__(self, stream): self.stream = stream def supported(cls, stream=sys.stdout): return True supported = classmethod(supported) def write(self, text, color): self.stream.write(text) def get_elapsed_time_color(elapsed_time): if elapsed_time > 1.0: return 'red' elif elapsed_time > 0.25: return 'yellow' else: return 'green' class NovaTestResult(testtools.TestResult): def __init__(self, stream, descriptions, verbosity): super(NovaTestResult, self).__init__() self.stream = stream self.showAll = verbosity > 1 self.num_slow_tests = 10 self.slow_tests = [] # this is a fixed-sized heap self.colorizer = None # NOTE(vish): reset stdout for the terminal check stdout = sys.stdout sys.stdout = sys.__stdout__ for colorizer in [_Win32Colorizer, _AnsiColorizer, _NullColorizer]: if colorizer.supported(): self.colorizer = colorizer(self.stream) break sys.stdout = stdout self.start_time = None self.last_time = {} self.results = {} self.last_written = None def _writeElapsedTime(self, elapsed): color = get_elapsed_time_color(elapsed) self.colorizer.write(" %.2f" % elapsed, color) def _addResult(self, test, *args): try: name = test.id() except AttributeError: name = 'Unknown.unknown' test_class, test_name = name.rsplit('.', 1) elapsed = (self._now() - self.start_time).total_seconds() item = (elapsed, test_class, test_name) if len(self.slow_tests) >= self.num_slow_tests: heapq.heappushpop(self.slow_tests, item) else: heapq.heappush(self.slow_tests, item) self.results.setdefault(test_class, []) self.results[test_class].append((test_name, elapsed) + args) self.last_time[test_class] = self._now() self.writeTests() def _writeResult(self, test_name, elapsed, long_result, color, short_result, success): if self.showAll: self.stream.write(' %s' % str(test_name).ljust(66)) self.colorizer.write(long_result, color) if success: self._writeElapsedTime(elapsed) self.stream.writeln() else: self.colorizer.write(short_result, color) def addSuccess(self, test): super(NovaTestResult, self).addSuccess(test) self._addResult(test, 'OK', 'green', '.', True) def addFailure(self, test, err): if test.id() == 'process-returncode': return super(NovaTestResult, self).addFailure(test, err) self._addResult(test, 'FAIL', 'red', 'F', False) def addError(self, test, err): super(NovaTestResult, self).addFailure(test, err) self._addResult(test, 'ERROR', 'red', 'E', False) def addSkip(self, test, reason=None, details=None): super(NovaTestResult, self).addSkip(test, reason, details) self._addResult(test, 'SKIP', 'blue', 'S', True) def startTest(self, test): self.start_time = self._now() super(NovaTestResult, self).startTest(test) def writeTestCase(self, cls): if not self.results.get(cls): return if cls != self.last_written: self.colorizer.write(cls, 'white') self.stream.writeln() for result in self.results[cls]: self._writeResult(*result) del self.results[cls] self.stream.flush() self.last_written = cls def writeTests(self): time = self.last_time.get(self.last_written, self._now()) if not self.last_written or (self._now() - time).total_seconds() > 2.0: diff = 3.0 while diff > 2.0: classes = self.results.keys() oldest = min(classes, key=lambda x: self.last_time[x]) diff = (self._now() - self.last_time[oldest]).total_seconds() self.writeTestCase(oldest) else: self.writeTestCase(self.last_written) def done(self): self.stopTestRun() def stopTestRun(self): for cls in list(self.results.iterkeys()): self.writeTestCase(cls) self.stream.writeln() self.writeSlowTests() def writeSlowTests(self): # Pare out 'fast' tests slow_tests = [item for item in self.slow_tests if get_elapsed_time_color(item[0]) != 'green'] if slow_tests: slow_total_time = sum(item[0] for item in slow_tests) slow = ("Slowest %i tests took %.2f secs:" % (len(slow_tests), slow_total_time)) self.colorizer.write(slow, 'yellow') self.stream.writeln() last_cls = None # sort by name for elapsed, cls, name in sorted(slow_tests, key=lambda x: x[1] + x[2]): if cls != last_cls: self.colorizer.write(cls, 'white') self.stream.writeln() last_cls = cls self.stream.write(' %s' % str(name).ljust(68)) self._writeElapsedTime(elapsed) self.stream.writeln() def printErrors(self): if self.showAll: self.stream.writeln() self.printErrorList('ERROR', self.errors) self.printErrorList('FAIL', self.failures) def printErrorList(self, flavor, errors): for test, err in errors: self.colorizer.write("=" * 70, 'red') self.stream.writeln() self.colorizer.write(flavor, 'red') self.stream.writeln(": %s" % test.id()) self.colorizer.write("-" * 70, 'red') self.stream.writeln() self.stream.writeln("%s" % err) test = subunit.ProtocolTestCase(sys.stdin, passthrough=None) if sys.version_info[0:2] <= (2, 6): runner = unittest.TextTestRunner(verbosity=2) else: runner = unittest.TextTestRunner(verbosity=2, resultclass=NovaTestResult) if runner.run(test).wasSuccessful(): exit_code = 0 else: exit_code = 1 sys.exit(exit_code) nova-2014.1/tools/install_venv_common.py0000664000175400017540000001350612323721477021505 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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. """Provides methods needed by installation script for OpenStack development virtual environments. Since this script is used to bootstrap a virtualenv from the system's Python environment, it should be kept strictly compatible with Python 2.6. Synced in from openstack-common """ from __future__ import print_function import optparse import os import subprocess import sys class InstallVenv(object): def __init__(self, root, venv, requirements, test_requirements, py_version, project): self.root = root self.venv = venv self.requirements = requirements self.test_requirements = test_requirements self.py_version = py_version self.project = project def die(self, message, *args): print(message % args, file=sys.stderr) sys.exit(1) def check_python_version(self): if sys.version_info < (2, 6): self.die("Need Python Version >= 2.6") def run_command_with_code(self, cmd, redirect_output=True, check_exit_code=True): """Runs a command in an out-of-process shell. Returns the output of that command. Working directory is self.root. """ if redirect_output: stdout = subprocess.PIPE else: stdout = None proc = subprocess.Popen(cmd, cwd=self.root, stdout=stdout) output = proc.communicate()[0] if check_exit_code and proc.returncode != 0: self.die('Command "%s" failed.\n%s', ' '.join(cmd), output) return (output, proc.returncode) def run_command(self, cmd, redirect_output=True, check_exit_code=True): return self.run_command_with_code(cmd, redirect_output, check_exit_code)[0] def get_distro(self): if (os.path.exists('/etc/fedora-release') or os.path.exists('/etc/redhat-release')): return Fedora( self.root, self.venv, self.requirements, self.test_requirements, self.py_version, self.project) else: return Distro( self.root, self.venv, self.requirements, self.test_requirements, self.py_version, self.project) def check_dependencies(self): self.get_distro().install_virtualenv() def create_virtualenv(self, no_site_packages=True): """Creates the virtual environment and installs PIP. Creates the virtual environment and installs PIP only into the virtual environment. """ if not os.path.isdir(self.venv): print('Creating venv...', end=' ') if no_site_packages: self.run_command(['virtualenv', '-q', '--no-site-packages', self.venv]) else: self.run_command(['virtualenv', '-q', self.venv]) print('done.') else: print("venv already exists...") pass def pip_install(self, *args): self.run_command(['tools/with_venv.sh', 'pip', 'install', '--upgrade'] + list(args), redirect_output=False) def install_dependencies(self): print('Installing dependencies with pip (this can take a while)...') # First things first, make sure our venv has the latest pip and # setuptools and pbr self.pip_install('pip>=1.4') self.pip_install('setuptools') self.pip_install('pbr') self.pip_install('-r', self.requirements, '-r', self.test_requirements) def parse_args(self, argv): """Parses command-line arguments.""" parser = optparse.OptionParser() parser.add_option('-n', '--no-site-packages', action='store_true', help="Do not inherit packages from global Python " "install") return parser.parse_args(argv[1:])[0] class Distro(InstallVenv): def check_cmd(self, cmd): return bool(self.run_command(['which', cmd], check_exit_code=False).strip()) def install_virtualenv(self): if self.check_cmd('virtualenv'): return if self.check_cmd('easy_install'): print('Installing virtualenv via easy_install...', end=' ') if self.run_command(['easy_install', 'virtualenv']): print('Succeeded') return else: print('Failed') self.die('ERROR: virtualenv not found.\n\n%s development' ' requires virtualenv, please install it using your' ' favorite package management tool' % self.project) class Fedora(Distro): """This covers all Fedora-based distributions. Includes: Fedora, RHEL, CentOS, Scientific Linux """ def check_pkg(self, pkg): return self.run_command_with_code(['rpm', '-q', pkg], check_exit_code=False)[1] == 0 def install_virtualenv(self): if self.check_cmd('virtualenv'): return if not self.check_pkg('python-virtualenv'): self.die("Please install 'python-virtualenv'.") super(Fedora, self).install_virtualenv() nova-2014.1/tools/xenserver/0000775000175400017540000000000012323722546017071 5ustar jenkinsjenkins00000000000000nova-2014.1/tools/xenserver/destroy_cached_images.py0000664000175400017540000000355112323721477023756 0ustar jenkinsjenkins00000000000000""" destroy_cached_images.py This script is used to clean up Glance images that are cached in the SR. By default, this script will only cleanup unused cached images. Options: --dry_run - Don't actually destroy the VDIs --all_cached - Destroy all cached images instead of just unused cached images. """ import eventlet eventlet.monkey_patch() import os import sys from oslo.config import cfg # If ../nova/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir, os.pardir)) if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'nova', '__init__.py')): sys.path.insert(0, POSSIBLE_TOPDIR) from nova import config from nova import utils from nova.virt.xenapi import driver as xenapi_driver from nova.virt.xenapi import vm_utils destroy_opts = [ cfg.BoolOpt('all_cached', default=False, help='Destroy all cached images instead of just unused cached' ' images.'), cfg.BoolOpt('dry_run', default=False, help='Don\'t actually delete the VDIs.') ] CONF = cfg.CONF CONF.register_cli_opts(destroy_opts) def main(): config.parse_args(sys.argv) utils.monkey_patch() xenapi = xenapi_driver.XenAPIDriver() session = xenapi._session sr_ref = vm_utils.safe_find_sr(session) destroyed = vm_utils.destroy_cached_images( session, sr_ref, all_cached=CONF.all_cached, dry_run=CONF.dry_run) if '--verbose' in sys.argv: print '\n'.join(destroyed) print "Destroyed %d cached VDIs" % len(destroyed) if __name__ == "__main__": main() nova-2014.1/tools/xenserver/cleanup_sm_locks.py0000775000175400017540000000753512323721477023003 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Script to cleanup old XenServer /var/lock/sm locks. XenServer 5.6 and 6.0 do not appear to always cleanup locks when using a FileSR. ext3 has a limit of 32K inode links, so when we have 32K-2 (31998) locks laying around, builds will begin to fail because we can't create any additional locks. This cleanup script is something we can run periodically as a stop-gap measure until this is fixed upstream. This script should be run on the dom0 of the affected machine. """ import errno import optparse import os import sys import time BASE = '/var/lock/sm' def _get_age_days(secs): return float(time.time() - secs) / 86400 def _parse_args(): parser = optparse.OptionParser() parser.add_option("-d", "--dry-run", action="store_true", dest="dry_run", default=False, help="don't actually remove locks") parser.add_option("-l", "--limit", action="store", type='int', dest="limit", default=sys.maxint, help="max number of locks to delete (default: no limit)") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="don't print status messages to stdout") options, args = parser.parse_args() try: days_old = int(args[0]) except (IndexError, ValueError): parser.print_help() sys.exit(1) return options, days_old def main(): options, days_old = _parse_args() if not os.path.exists(BASE): print >> sys.stderr, "error: '%s' doesn't exist. Make sure you're"\ " running this on the dom0." % BASE sys.exit(1) lockpaths_removed = 0 nspaths_removed = 0 for nsname in os.listdir(BASE)[:options.limit]: nspath = os.path.join(BASE, nsname) if not os.path.isdir(nspath): continue # Remove old lockfiles removed = 0 locknames = os.listdir(nspath) for lockname in locknames: lockpath = os.path.join(nspath, lockname) lock_age_days = _get_age_days(os.path.getmtime(lockpath)) if lock_age_days > days_old: lockpaths_removed += 1 removed += 1 if options.verbose: print 'Removing old lock: %03d %s' % (lock_age_days, lockpath) if not options.dry_run: os.unlink(lockpath) # Remove empty namespace paths if len(locknames) == removed: nspaths_removed += 1 if options.verbose: print 'Removing empty namespace: %s' % nspath if not options.dry_run: try: os.rmdir(nspath) except OSError, e: if e.errno == errno.ENOTEMPTY: print >> sys.stderr, "warning: directory '%s'"\ " not empty" % nspath else: raise if options.dry_run: print "** Dry Run **" print "Total locks removed: ", lockpaths_removed print "Total namespaces removed: ", nspaths_removed if __name__ == '__main__': main() nova-2014.1/tools/xenserver/populate_other_config.py0000664000175400017540000000617312323721477024033 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ One-time script to populate VDI.other_config. We use metadata stored in VDI.other_config to associate a VDI with a given instance so that we may safely cleanup orphaned VDIs. We had a bug in the code that meant that the vast majority of VDIs created would not have the other_config populated. After deploying the fixed code, this script is intended to be run against all compute-workers in a cluster so that existing VDIs can have their other_configs populated. Run on compute-worker (not Dom0): python ./tools/xenserver/populate_other_config.py [--dry-run|--verbose] """ import os import sys possible_topdir = os.getcwd() if os.path.exists(os.path.join(possible_topdir, "nova", "__init__.py")): sys.path.insert(0, possible_topdir) from nova import config from nova.openstack.common import uuidutils from nova.virt import virtapi from nova.virt.xenapi import driver as xenapi_driver from nova.virt.xenapi import vm_utils from oslo.config import cfg cli_opts = [ cfg.BoolOpt('dry-run', default=False, help='Whether to actually update other_config.'), ] CONF = cfg.CONF CONF.register_cli_opts(cli_opts) def main(): config.parse_args(sys.argv) xenapi = xenapi_driver.XenAPIDriver(virtapi.VirtAPI()) session = xenapi._session vdi_refs = session.call_xenapi('VDI.get_all') for vdi_ref in vdi_refs: vdi_rec = session.call_xenapi('VDI.get_record', vdi_ref) other_config = vdi_rec['other_config'] # Already set... if 'nova_instance_uuid' in other_config: continue name_label = vdi_rec['name_label'] # We only want name-labels of form instance--[optional-suffix] if not name_label.startswith('instance-'): continue # Parse out UUID instance_uuid = name_label.replace('instance-', '')[:36] if not uuidutils.is_uuid_like(instance_uuid): print "error: name label '%s' wasn't UUID-like" % name_label continue vdi_type = vdi_rec['name_description'] # We don't need a full instance record, just the UUID instance = {'uuid': instance_uuid} if not CONF.dry_run: vm_utils._set_vdi_info(session, vdi_ref, vdi_type, name_label, vdi_type, instance) if CONF.verbose: print "Setting other_config for instance_uuid=%s vdi_uuid=%s" % ( instance_uuid, vdi_rec['uuid']) if CONF.dry_run: print "Dry run completed" if __name__ == "__main__": main() nova-2014.1/tools/xenserver/vm_vdi_cleaner.py0000775000175400017540000002543412323721477022435 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """vm_vdi_cleaner.py - List or clean orphaned VDIs/instances on XenServer.""" import doctest import os import sys from oslo.config import cfg import XenAPI possible_topdir = os.getcwd() if os.path.exists(os.path.join(possible_topdir, "nova", "__init__.py")): sys.path.insert(0, possible_topdir) from nova import config from nova import context from nova import db from nova import exception from nova.openstack.common import timeutils from nova.virt import virtapi from nova.virt.xenapi import driver as xenapi_driver cleaner_opts = [ cfg.IntOpt('zombie_instance_updated_at_window', default=172800, help='Number of seconds zombie instances are cleaned up.'), ] cli_opt = cfg.StrOpt('command', help='Cleaner command') CONF = cfg.CONF CONF.register_opts(cleaner_opts) CONF.register_cli_opt(cli_opt) CONF.import_opt('verbose', 'nova.openstack.common.log') CONF.import_opt("resize_confirm_window", "nova.compute.manager") ALLOWED_COMMANDS = ["list-vdis", "clean-vdis", "list-instances", "clean-instances", "test"] def call_xenapi(xenapi, method, *args): """Make a call to xapi.""" return xenapi._session.call_xenapi(method, *args) def find_orphaned_instances(xenapi): """Find and return a list of orphaned instances.""" ctxt = context.get_admin_context(read_deleted="only") orphaned_instances = [] for vm_ref, vm_rec in _get_applicable_vm_recs(xenapi): try: uuid = vm_rec['other_config']['nova_uuid'] instance = db.instance_get_by_uuid(ctxt, uuid) except (KeyError, exception.InstanceNotFound): # NOTE(jk0): Err on the side of caution here. If we don't know # anything about the particular instance, ignore it. print_xen_object("INFO: Ignoring VM", vm_rec, indent_level=0) continue # NOTE(jk0): This would be triggered if a VM was deleted but the # actual deletion process failed somewhere along the line. is_active_and_deleting = (instance.vm_state == "active" and instance.task_state == "deleting") # NOTE(jk0): A zombie VM is an instance that is not active and hasn't # been updated in over the specified period. is_zombie_vm = (instance.vm_state != "active" and timeutils.is_older_than(instance.updated_at, CONF.zombie_instance_updated_at_window)) if is_active_and_deleting or is_zombie_vm: orphaned_instances.append((vm_ref, vm_rec, instance)) return orphaned_instances def cleanup_instance(xenapi, instance, vm_ref, vm_rec): """Delete orphaned instances.""" xenapi._vmops._destroy(instance, vm_ref) def _get_applicable_vm_recs(xenapi): """An 'applicable' VM is one that is not a template and not the control domain. """ for vm_ref in call_xenapi(xenapi, 'VM.get_all'): try: vm_rec = call_xenapi(xenapi, 'VM.get_record', vm_ref) except XenAPI.Failure, e: if e.details[0] != 'HANDLE_INVALID': raise continue if vm_rec["is_a_template"] or vm_rec["is_control_domain"]: continue yield vm_ref, vm_rec def print_xen_object(obj_type, obj, indent_level=0, spaces_per_indent=4): """Pretty-print a Xen object. Looks like: VM (abcd-abcd-abcd): 'name label here' """ if not CONF.verbose: return uuid = obj["uuid"] try: name_label = obj["name_label"] except KeyError: name_label = "" msg = "%(obj_type)s (%(uuid)s) '%(name_label)s'" % locals() indent = " " * spaces_per_indent * indent_level print "".join([indent, msg]) def _find_vdis_connected_to_vm(xenapi, connected_vdi_uuids): """Find VDIs which are connected to VBDs which are connected to VMs.""" def _is_null_ref(ref): return ref == "OpaqueRef:NULL" def _add_vdi_and_parents_to_connected(vdi_rec, indent_level): indent_level += 1 vdi_and_parent_uuids = [] cur_vdi_rec = vdi_rec while True: cur_vdi_uuid = cur_vdi_rec["uuid"] print_xen_object("VDI", vdi_rec, indent_level=indent_level) connected_vdi_uuids.add(cur_vdi_uuid) vdi_and_parent_uuids.append(cur_vdi_uuid) try: parent_vdi_uuid = vdi_rec["sm_config"]["vhd-parent"] except KeyError: parent_vdi_uuid = None # NOTE(sirp): VDI's can have themselves as a parent?! if parent_vdi_uuid and parent_vdi_uuid != cur_vdi_uuid: indent_level += 1 cur_vdi_ref = call_xenapi(xenapi, 'VDI.get_by_uuid', parent_vdi_uuid) try: cur_vdi_rec = call_xenapi(xenapi, 'VDI.get_record', cur_vdi_ref) except XenAPI.Failure, e: if e.details[0] != 'HANDLE_INVALID': raise break else: break for vm_ref, vm_rec in _get_applicable_vm_recs(xenapi): indent_level = 0 print_xen_object("VM", vm_rec, indent_level=indent_level) vbd_refs = vm_rec["VBDs"] for vbd_ref in vbd_refs: try: vbd_rec = call_xenapi(xenapi, 'VBD.get_record', vbd_ref) except XenAPI.Failure, e: if e.details[0] != 'HANDLE_INVALID': raise continue indent_level = 1 print_xen_object("VBD", vbd_rec, indent_level=indent_level) vbd_vdi_ref = vbd_rec["VDI"] if _is_null_ref(vbd_vdi_ref): continue try: vdi_rec = call_xenapi(xenapi, 'VDI.get_record', vbd_vdi_ref) except XenAPI.Failure, e: if e.details[0] != 'HANDLE_INVALID': raise continue _add_vdi_and_parents_to_connected(vdi_rec, indent_level) def _find_all_vdis_and_system_vdis(xenapi, all_vdi_uuids, connected_vdi_uuids): """Collects all VDIs and adds system VDIs to the connected set.""" def _system_owned(vdi_rec): vdi_name = vdi_rec["name_label"] return (vdi_name.startswith("USB") or vdi_name.endswith(".iso") or vdi_rec["type"] == "system") for vdi_ref in call_xenapi(xenapi, 'VDI.get_all'): try: vdi_rec = call_xenapi(xenapi, 'VDI.get_record', vdi_ref) except XenAPI.Failure, e: if e.details[0] != 'HANDLE_INVALID': raise continue vdi_uuid = vdi_rec["uuid"] all_vdi_uuids.add(vdi_uuid) # System owned and non-managed VDIs should be considered 'connected' # for our purposes. if _system_owned(vdi_rec): print_xen_object("SYSTEM VDI", vdi_rec, indent_level=0) connected_vdi_uuids.add(vdi_uuid) elif not vdi_rec["managed"]: print_xen_object("UNMANAGED VDI", vdi_rec, indent_level=0) connected_vdi_uuids.add(vdi_uuid) def find_orphaned_vdi_uuids(xenapi): """Walk VM -> VBD -> VDI change and accumulate connected VDIs.""" connected_vdi_uuids = set() _find_vdis_connected_to_vm(xenapi, connected_vdi_uuids) all_vdi_uuids = set() _find_all_vdis_and_system_vdis(xenapi, all_vdi_uuids, connected_vdi_uuids) orphaned_vdi_uuids = all_vdi_uuids - connected_vdi_uuids return orphaned_vdi_uuids def list_orphaned_vdis(vdi_uuids): """List orphaned VDIs.""" for vdi_uuid in vdi_uuids: if CONF.verbose: print "ORPHANED VDI (%s)" % vdi_uuid else: print vdi_uuid def clean_orphaned_vdis(xenapi, vdi_uuids): """Clean orphaned VDIs.""" for vdi_uuid in vdi_uuids: if CONF.verbose: print "CLEANING VDI (%s)" % vdi_uuid vdi_ref = call_xenapi(xenapi, 'VDI.get_by_uuid', vdi_uuid) try: call_xenapi(xenapi, 'VDI.destroy', vdi_ref) except XenAPI.Failure, exc: print >> sys.stderr, "Skipping %s: %s" % (vdi_uuid, exc) def list_orphaned_instances(orphaned_instances): """List orphaned instances.""" for vm_ref, vm_rec, orphaned_instance in orphaned_instances: if CONF.verbose: print "ORPHANED INSTANCE (%s)" % orphaned_instance.name else: print orphaned_instance.name def clean_orphaned_instances(xenapi, orphaned_instances): """Clean orphaned instances.""" for vm_ref, vm_rec, instance in orphaned_instances: if CONF.verbose: print "CLEANING INSTANCE (%s)" % instance.name cleanup_instance(xenapi, instance, vm_ref, vm_rec) def main(): """Main loop.""" config.parse_args(sys.argv) args = CONF(args=sys.argv[1:], usage='%(prog)s [options] --command={' + '|'.join(ALLOWED_COMMANDS) + '}') command = CONF.command if not command or command not in ALLOWED_COMMANDS: CONF.print_usage() sys.exit(1) if CONF.zombie_instance_updated_at_window < CONF.resize_confirm_window: raise Exception("`zombie_instance_updated_at_window` has to be longer" " than `resize_confirm_window`.") # NOTE(blamar) This tool does not require DB access, so passing in the # 'abstract' VirtAPI class is acceptable xenapi = xenapi_driver.XenAPIDriver(virtapi.VirtAPI()) if command == "list-vdis": if CONF.verbose: print "Connected VDIs:\n" orphaned_vdi_uuids = find_orphaned_vdi_uuids(xenapi) if CONF.verbose: print "\nOrphaned VDIs:\n" list_orphaned_vdis(orphaned_vdi_uuids) elif command == "clean-vdis": orphaned_vdi_uuids = find_orphaned_vdi_uuids(xenapi) clean_orphaned_vdis(xenapi, orphaned_vdi_uuids) elif command == "list-instances": orphaned_instances = find_orphaned_instances(xenapi) list_orphaned_instances(orphaned_instances) elif command == "clean-instances": orphaned_instances = find_orphaned_instances(xenapi) clean_orphaned_instances(xenapi, orphaned_instances) elif command == "test": doctest.testmod() else: print "Unknown command '%s'" % command sys.exit(1) if __name__ == "__main__": main() nova-2014.1/tools/xenserver/vdi_chain_cleanup.py0000664000175400017540000000713612323721477023107 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ This script is designed to cleanup any VHDs (and their descendents) which have a bad parent pointer. The script needs to be run in the dom0 of the affected host. The available actions are: - print: display the filenames of the affected VHDs - delete: remove the affected VHDs - move: move the affected VHDs out of the SR into another directory """ import glob import os import subprocess import sys class ExecutionFailed(Exception): def __init__(self, returncode, stdout, stderr, max_stream_length=32): self.returncode = returncode self.stdout = stdout[:max_stream_length] self.stderr = stderr[:max_stream_length] self.max_stream_length = max_stream_length def __repr__(self): return "" % ( self.returncode, self.stdout, self.stderr) __str__ = __repr__ def execute(cmd, ok_exit_codes=None): if ok_exit_codes is None: ok_exit_codes = [0] proc = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = proc.communicate() if proc.returncode not in ok_exit_codes: raise ExecutionFailed(proc.returncode, stdout, stderr) return proc.returncode, stdout, stderr def usage(): print "usage: %s " % sys.argv[0] sys.exit(1) def main(): if len(sys.argv) < 3: usage() sr_path = sys.argv[1] action = sys.argv[2] if action not in ('print', 'delete', 'move'): usage() if action == 'move': if len(sys.argv) < 4: print "error: must specify where to move bad VHDs" sys.exit(1) bad_vhd_path = sys.argv[3] if not os.path.exists(bad_vhd_path): os.makedirs(bad_vhd_path) bad_leaves = [] descendents = {} for fname in glob.glob(os.path.join(sr_path, "*.vhd")): (returncode, stdout, stderr) = execute( ['vhd-util', 'query', '-n', fname, '-p'], ok_exit_codes=[0, 22]) stdout = stdout.strip() if stdout.endswith('.vhd'): try: descendents[stdout].append(fname) except KeyError: descendents[stdout] = [fname] elif 'query failed' in stdout: bad_leaves.append(fname) def walk_vhds(root): yield root if root in descendents: for child in descendents[root]: for vhd in walk_vhds(child): yield vhd for bad_leaf in bad_leaves: for bad_vhd in walk_vhds(bad_leaf): print bad_vhd if action == "print": pass elif action == "delete": os.unlink(bad_vhd) elif action == "move": new_path = os.path.join(bad_vhd_path, os.path.basename(bad_vhd)) os.rename(bad_vhd, new_path) else: raise Exception("invalid action %s" % action) if __name__ == '__main__': main() nova-2014.1/tools/xenserver/stress_test.py0000664000175400017540000001206212323721477022030 0ustar jenkinsjenkins00000000000000""" This script concurrently builds and migrates instances. This can be useful when troubleshooting race-conditions in virt-layer code. Expects: novarc to be sourced in the environment Helper Script for Xen Dom0: # cat /tmp/destroy_cache_vdis #!/bin/bash xe vdi-list | grep "Glance Image" -C1 | grep "^uuid" | awk '{print $5}' | xargs -n1 -I{} xe vdi-destroy uuid={} """ import argparse import contextlib import multiprocessing import subprocess import sys import time DOM0_CLEANUP_SCRIPT = "/tmp/destroy_cache_vdis" def run(cmd): ret = subprocess.call(cmd, shell=True) if ret != 0: print >> sys.stderr, "Command exited non-zero: %s" % cmd @contextlib.contextmanager def server_built(server_name, image_name, flavor=1, cleanup=True): run("nova boot --image=%(image_name)s --flavor=%(flavor)s" " --poll %(server_name)s" % locals()) try: yield finally: if cleanup: run("nova delete %(server_name)s" % locals()) @contextlib.contextmanager def snapshot_taken(server_name, snapshot_name, cleanup=True): run("nova image-create %(server_name)s %(snapshot_name)s" " --poll" % locals()) try: yield finally: if cleanup: run("nova image-delete %(snapshot_name)s" % locals()) def migrate_server(server_name): run("nova migrate %(server_name)s --poll" % locals()) cmd = "nova list | grep %(server_name)s | awk '{print $6}'" % locals() proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) stdout, stderr = proc.communicate() status = stdout.strip() if status.upper() != 'VERIFY_RESIZE': print >> sys.stderr, "Server %(server_name)s failed to rebuild"\ % locals() return False # Confirm the resize run("nova resize-confirm %(server_name)s" % locals()) return True def test_migrate(context): count, args = context server_name = "server%d" % count cleanup = args.cleanup with server_built(server_name, args.image, cleanup=cleanup): # Migrate A -> B result = migrate_server(server_name) if not result: return False # Migrate B -> A return migrate_server(server_name) def rebuild_server(server_name, snapshot_name): run("nova rebuild %(server_name)s %(snapshot_name)s --poll" % locals()) cmd = "nova list | grep %(server_name)s | awk '{print $6}'" % locals() proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) stdout, stderr = proc.communicate() status = stdout.strip() if status != 'ACTIVE': print >> sys.stderr, "Server %(server_name)s failed to rebuild"\ % locals() return False return True def test_rebuild(context): count, args = context server_name = "server%d" % count snapshot_name = "snap%d" % count cleanup = args.cleanup with server_built(server_name, args.image, cleanup=cleanup): with snapshot_taken(server_name, snapshot_name, cleanup=cleanup): return rebuild_server(server_name, snapshot_name) def _parse_args(): parser = argparse.ArgumentParser( description='Test Nova for Race Conditions.') parser.add_argument('tests', metavar='TESTS', type=str, nargs='*', default=['rebuild', 'migrate'], help='tests to run: [rebuilt|migrate]') parser.add_argument('-i', '--image', help="image to build from", required=True) parser.add_argument('-n', '--num-runs', type=int, help="number of runs", default=1) parser.add_argument('-c', '--concurrency', type=int, default=5, help="number of concurrent processes") parser.add_argument('--no-cleanup', action='store_false', dest="cleanup", default=True) parser.add_argument('-d', '--dom0-ips', help="IP of dom0's to run cleanup script") return parser.parse_args() def main(): dom0_cleanup_script = DOM0_CLEANUP_SCRIPT args = _parse_args() if args.dom0_ips: dom0_ips = args.dom0_ips.split(',') else: dom0_ips = [] start_time = time.time() batch_size = min(args.num_runs, args.concurrency) pool = multiprocessing.Pool(processes=args.concurrency) results = [] for test in args.tests: test_func = globals().get("test_%s" % test) if not test_func: print >> sys.stderr, "test '%s' not found" % test sys.exit(1) contexts = [(x, args) for x in range(args.num_runs)] try: results += pool.map(test_func, contexts) finally: if args.cleanup: for dom0_ip in dom0_ips: run("ssh root@%(dom0_ip)s %(dom0_cleanup_script)s" % locals()) success = all(results) result = "SUCCESS" if success else "FAILED" duration = time.time() - start_time print "%s, finished in %.2f secs" % (result, duration) sys.exit(0 if success else 1) if __name__ == "__main__": main() nova-2014.1/tools/xenserver/rotate_xen_guest_logs.sh0000775000175400017540000000335412323721477024042 0ustar jenkinsjenkins00000000000000#!/bin/bash set -eux # Script to rotate console logs # # Should be run on Dom0, with cron, every minute: # * * * * * /root/rotate_xen_guest_logs.sh # # Should clear out the guest logs on every boot # because the domain ids may get re-used for a # different tenant after the reboot # # /var/log/xen/guest should be mounted into a # small loopback device to stop any guest being # able to fill dom0 file system log_dir="/var/log/xen/guest" kb=1024 max_size_bytes=$(($kb*$kb)) truncated_size_bytes=$((5*$kb)) list_domains=/opt/xensource/bin/list_domains log_file_base="${log_dir}/console." tmp_file_base="${log_dir}/tmp.console." # Ensure logging is setup correctly for all domains xenstore-write /local/logconsole/@ "${log_file_base}%d" # Move logs we want to keep domains=$($list_domains | sed '/^id*/d' | sed 's/|.*|.*$//g' | xargs) for i in $domains; do log="${log_file_base}$i" tmp="${tmp_file_base}$i" mv $log $tmp || true done # Delete all console logs, # mostly to remove logs from recently killed domains rm -f ${log_dir}/console.* # Reload domain list, in case it changed # (note we may have just deleted a new console log) domains=$($list_domains | sed '/^id*/d' | sed 's/|.*|.*$//g' | xargs) for i in $domains; do log="${log_file_base}$i" tmp="${tmp_file_base}$i" if [ -e "$tmp" ]; then size=$(stat -c%s "$tmp") # Trim the log if required if [ "$size" -gt "$max_size_bytes" ]; then tail -c $truncated_size_bytes $tmp > $log || true else mv $tmp $log || true fi fi # Notify xen that it needs to reload the file xenstore-write /local/logconsole/$i $log xenstore-rm /local/logconsole/$i done # Delete all the tmp files rm -f ${tmp_file_base}* || true nova-2014.1/tools/esx/0000775000175400017540000000000012323722546015647 5ustar jenkinsjenkins00000000000000nova-2014.1/tools/esx/guest_tool.py0000664000175400017540000003755612323721477020427 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Guest tools for ESX to set up network in the guest. On Windows we require pyWin32 installed on Python. """ import array import logging import os import platform import socket import struct import subprocess import sys import time from nova.openstack.common.gettextutils import _ PLATFORM_WIN = 'win32' PLATFORM_LINUX = 'linux2' ARCH_32_BIT = '32bit' ARCH_64_BIT = '64bit' NO_MACHINE_ID = 'No machine id' # Logging FORMAT = "%(asctime)s - %(levelname)s - %(message)s" if sys.platform == PLATFORM_WIN: LOG_DIR = os.path.join(os.environ.get('ALLUSERSPROFILE'), 'openstack') elif sys.platform == PLATFORM_LINUX: LOG_DIR = '/var/log/openstack' else: LOG_DIR = 'logs' if not os.path.exists(LOG_DIR): os.mkdir(LOG_DIR) LOG_FILENAME = os.path.join(LOG_DIR, 'openstack-guest-tools.log') logging.basicConfig(filename=LOG_FILENAME, format=FORMAT) if sys.hexversion < 0x3000000: _byte = ord # 2.x chr to integer else: _byte = int # 3.x byte to integer class ProcessExecutionError: """Process Execution Error Class.""" def __init__(self, exit_code, stdout, stderr, cmd): self.exit_code = exit_code self.stdout = stdout self.stderr = stderr self.cmd = cmd def __str__(self): return str(self.exit_code) def _bytes2int(bytes): """Convert bytes to int.""" intgr = 0 for byt in bytes: intgr = (intgr << 8) + _byte(byt) return intgr def _parse_network_details(machine_id): """ Parse the machine_id to get MAC, IP, Netmask and Gateway fields per NIC. machine_id is of the form ('NIC_record#NIC_record#', '') Each of the NIC will have record NIC_record in the form 'MAC;IP;Netmask;Gateway;Broadcast;DNS' where ';' is field separator. Each record is separated by '#' from next record. """ logging.debug(_("Received machine_id from vmtools : %s") % machine_id[0]) network_details = [] if machine_id[1].strip() == "1": pass else: for machine_id_str in machine_id[0].split('#'): network_info_list = machine_id_str.split(';') if len(network_info_list) % 6 != 0: break no_grps = len(network_info_list) / 6 i = 0 while i < no_grps: k = i * 6 network_details.append(( network_info_list[k].strip().lower(), network_info_list[k + 1].strip(), network_info_list[k + 2].strip(), network_info_list[k + 3].strip(), network_info_list[k + 4].strip(), network_info_list[k + 5].strip().split(','))) i += 1 logging.debug(_("NIC information from vmtools : %s") % network_details) return network_details def _get_windows_network_adapters(): """Get the list of windows network adapters.""" import win32com.client wbem_locator = win32com.client.Dispatch('WbemScripting.SWbemLocator') wbem_service = wbem_locator.ConnectServer('.', 'root\cimv2') wbem_network_adapters = wbem_service.InstancesOf('Win32_NetworkAdapter') network_adapters = [] for adapter in wbem_network_adapters: if (adapter.NetConnectionStatus == 2 or adapter.NetConnectionStatus == 7): adapter_name = adapter.NetConnectionID mac_address = adapter.MacAddress.lower() config = adapter.associators_( 'Win32_NetworkAdapterSetting', 'Win32_NetworkAdapterConfiguration')[0] ip_address = '' subnet_mask = '' if config.IPEnabled: ip_address = config.IPAddress[0] subnet_mask = config.IPSubnet[0] #config.DefaultIPGateway[0] network_adapters.append({'name': adapter_name, 'mac-address': mac_address, 'ip-address': ip_address, 'subnet-mask': subnet_mask}) return network_adapters def _get_linux_network_adapters(): """Get the list of Linux network adapters.""" import fcntl max_bytes = 8096 arch = platform.architecture()[0] if arch == ARCH_32_BIT: offset1 = 32 offset2 = 32 elif arch == ARCH_64_BIT: offset1 = 16 offset2 = 40 else: raise OSError(_("Unknown architecture: %s") % arch) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) names = array.array('B', '\0' * max_bytes) outbytes = struct.unpack('iL', fcntl.ioctl( sock.fileno(), 0x8912, struct.pack('iL', max_bytes, names.buffer_info()[0])))[0] adapter_names = [names.tostring()[n_cnt:n_cnt + offset1].split('\0', 1)[0] for n_cnt in xrange(0, outbytes, offset2)] network_adapters = [] for adapter_name in adapter_names: ip_address = socket.inet_ntoa(fcntl.ioctl( sock.fileno(), 0x8915, struct.pack('256s', adapter_name))[20:24]) subnet_mask = socket.inet_ntoa(fcntl.ioctl( sock.fileno(), 0x891b, struct.pack('256s', adapter_name))[20:24]) raw_mac_address = '%012x' % _bytes2int(fcntl.ioctl( sock.fileno(), 0x8927, struct.pack('256s', adapter_name))[18:24]) mac_address = ":".join([raw_mac_address[m_counter:m_counter + 2] for m_counter in range(0, len(raw_mac_address), 2)]).lower() network_adapters.append({'name': adapter_name, 'mac-address': mac_address, 'ip-address': ip_address, 'subnet-mask': subnet_mask}) return network_adapters def _get_adapter_name_and_ip_address(network_adapters, mac_address): """Get the adapter name based on the MAC address.""" adapter_name = None ip_address = None for network_adapter in network_adapters: if network_adapter['mac-address'] == mac_address.lower(): adapter_name = network_adapter['name'] ip_address = network_adapter['ip-address'] break return adapter_name, ip_address def _get_win_adapter_name_and_ip_address(mac_address): """Get Windows network adapter name.""" network_adapters = _get_windows_network_adapters() return _get_adapter_name_and_ip_address(network_adapters, mac_address) def _get_linux_adapter_name_and_ip_address(mac_address): """Get Linux network adapter name.""" network_adapters = _get_linux_network_adapters() return _get_adapter_name_and_ip_address(network_adapters, mac_address) def _execute(cmd_list, process_input=None, check_exit_code=True): """Executes the command with the list of arguments specified.""" cmd = ' '.join(cmd_list) logging.debug(_("Executing command: '%s'") % cmd) env = os.environ.copy() obj = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) result = None if process_input is not None: result = obj.communicate(process_input) else: result = obj.communicate() obj.stdin.close() if obj.returncode: logging.debug(_("Result was %s") % obj.returncode) if check_exit_code and obj.returncode != 0: (stdout, stderr) = result raise ProcessExecutionError(exit_code=obj.returncode, stdout=stdout, stderr=stderr, cmd=cmd) time.sleep(0.1) return result def _windows_set_networking(): """Set IP address for the windows VM.""" program_files = os.environ.get('PROGRAMFILES') program_files_x86 = os.environ.get('PROGRAMFILES(X86)') vmware_tools_bin = None if os.path.exists(os.path.join(program_files, 'VMware', 'VMware Tools', 'vmtoolsd.exe')): vmware_tools_bin = os.path.join(program_files, 'VMware', 'VMware Tools', 'vmtoolsd.exe') elif os.path.exists(os.path.join(program_files, 'VMware', 'VMware Tools', 'VMwareService.exe')): vmware_tools_bin = os.path.join(program_files, 'VMware', 'VMware Tools', 'VMwareService.exe') elif program_files_x86 and os.path.exists(os.path.join(program_files_x86, 'VMware', 'VMware Tools', 'VMwareService.exe')): vmware_tools_bin = os.path.join(program_files_x86, 'VMware', 'VMware Tools', 'VMwareService.exe') if vmware_tools_bin: cmd = ['"' + vmware_tools_bin + '"', '--cmd', 'machine.id.get'] for network_detail in _parse_network_details(_execute(cmd, check_exit_code=False)): (mac_address, ip_address, subnet_mask, gateway, broadcast, dns_servers) = network_detail name_and_ip = _get_win_adapter_name_and_ip_address(mac_address) adapter_name, current_ip_address = name_and_ip if adapter_name and not ip_address == current_ip_address: cmd = ['netsh', 'interface', 'ip', 'set', 'address', 'name="%s"' % adapter_name, 'source=static', ip_address, subnet_mask, gateway, '1'] _execute(cmd) # Windows doesn't let you manually set the broadcast address for dns_server in dns_servers: if dns_server: cmd = ['netsh', 'interface', 'ip', 'add', 'dns', 'name="%s"' % adapter_name, dns_server] _execute(cmd) else: logging.warn(_("VMware Tools is not installed")) def _filter_duplicates(all_entries): final_list = [] for entry in all_entries: if entry and entry not in final_list: final_list.append(entry) return final_list def _set_rhel_networking(network_details=None): """Set IPv4 network settings for RHEL distros.""" network_details = network_details or [] all_dns_servers = [] for network_detail in network_details: (mac_address, ip_address, subnet_mask, gateway, broadcast, dns_servers) = network_detail all_dns_servers.extend(dns_servers) name_and_ip = _get_linux_adapter_name_and_ip_address(mac_address) adapter_name, current_ip_address = name_and_ip if adapter_name and not ip_address == current_ip_address: interface_file_name = ('/etc/sysconfig/network-scripts/ifcfg-%s' % adapter_name) # Remove file os.remove(interface_file_name) # Touch file _execute(['touch', interface_file_name]) interface_file = open(interface_file_name, 'w') interface_file.write('\nDEVICE=%s' % adapter_name) interface_file.write('\nUSERCTL=yes') interface_file.write('\nONBOOT=yes') interface_file.write('\nBOOTPROTO=static') interface_file.write('\nBROADCAST=%s' % broadcast) interface_file.write('\nNETWORK=') interface_file.write('\nGATEWAY=%s' % gateway) interface_file.write('\nNETMASK=%s' % subnet_mask) interface_file.write('\nIPADDR=%s' % ip_address) interface_file.write('\nMACADDR=%s' % mac_address) interface_file.close() if all_dns_servers: dns_file_name = "/etc/resolv.conf" os.remove(dns_file_name) _execute(['touch', dns_file_name]) dns_file = open(dns_file_name, 'w') dns_file.write("; generated by OpenStack guest tools") unique_entries = _filter_duplicates(all_dns_servers) for dns_server in unique_entries: dns_file.write("\nnameserver %s" % dns_server) dns_file.close() _execute(['/sbin/service', 'network', 'restart']) def _set_ubuntu_networking(network_details=None): """Set IPv4 network settings for Ubuntu.""" network_details = network_details or [] all_dns_servers = [] interface_file_name = '/etc/network/interfaces' # Remove file os.remove(interface_file_name) # Touch file _execute(['touch', interface_file_name]) interface_file = open(interface_file_name, 'w') for device, network_detail in enumerate(network_details): (mac_address, ip_address, subnet_mask, gateway, broadcast, dns_servers) = network_detail all_dns_servers.extend(dns_servers) name_and_ip = _get_linux_adapter_name_and_ip_address(mac_address) adapter_name, current_ip_address = name_and_ip if adapter_name: interface_file.write('\nauto %s' % adapter_name) interface_file.write('\niface %s inet static' % adapter_name) interface_file.write('\nbroadcast %s' % broadcast) interface_file.write('\ngateway %s' % gateway) interface_file.write('\nnetmask %s' % subnet_mask) interface_file.write('\naddress %s\n' % ip_address) logging.debug(_("Successfully configured NIC %(device)d with " "NIC info %(detail)s"), {'device': device, 'detail': network_detail}) interface_file.close() if all_dns_servers: dns_file_name = "/etc/resolv.conf" os.remove(dns_file_name) _execute(['touch', dns_file_name]) dns_file = open(dns_file_name, 'w') dns_file.write("; generated by OpenStack guest tools") unique_entries = _filter_duplicates(all_dns_servers) for dns_server in unique_entries: dns_file.write("\nnameserver %s" % dns_server) dns_file.close() logging.debug(_("Restarting networking....\n")) _execute(['/etc/init.d/networking', 'restart']) def _linux_set_networking(): """Set IP address for the Linux VM.""" vmware_tools_bin = None if os.path.exists('/usr/sbin/vmtoolsd'): vmware_tools_bin = '/usr/sbin/vmtoolsd' elif os.path.exists('/usr/bin/vmtoolsd'): vmware_tools_bin = '/usr/bin/vmtoolsd' elif os.path.exists('/usr/sbin/vmware-guestd'): vmware_tools_bin = '/usr/sbin/vmware-guestd' elif os.path.exists('/usr/bin/vmware-guestd'): vmware_tools_bin = '/usr/bin/vmware-guestd' if vmware_tools_bin: cmd = [vmware_tools_bin, '--cmd', 'machine.id.get'] network_details = _parse_network_details(_execute(cmd, check_exit_code=False)) # TODO(sateesh): For other distros like suse, debian, BSD, etc. if(platform.dist()[0] == 'Ubuntu'): _set_ubuntu_networking(network_details) elif (platform.dist()[0] == 'redhat'): _set_rhel_networking(network_details) else: logging.warn(_("Distro '%s' not supported") % platform.dist()[0]) else: logging.warn(_("VMware Tools is not installed")) if __name__ == '__main__': pltfrm = sys.platform if pltfrm == PLATFORM_WIN: _windows_set_networking() elif pltfrm == PLATFORM_LINUX: _linux_set_networking() else: raise NotImplementedError(_("Platform not implemented: '%s'") % pltfrm) nova-2014.1/tools/enable-pre-commit-hook.sh0000775000175400017540000000232512323721477021651 0ustar jenkinsjenkins00000000000000#!/bin/sh # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. PRE_COMMIT_SCRIPT=.git/hooks/pre-commit make_hook() { echo "exec ./run_tests.sh -N -p" >> $PRE_COMMIT_SCRIPT chmod +x $PRE_COMMIT_SCRIPT if [ -w $PRE_COMMIT_SCRIPT -a -x $PRE_COMMIT_SCRIPT ]; then echo "pre-commit hook was created successfully" else echo "unable to create pre-commit hook" fi } # NOTE(jk0): Make sure we are in nova's root directory before adding the hook. if [ ! -d ".git" ]; then echo "unable to find .git; moving up a directory" cd .. if [ -d ".git" ]; then make_hook else echo "still unable to find .git; hook not created" fi else make_hook fi nova-2014.1/tools/vmwareapi/0000775000175400017540000000000012323722546017043 5ustar jenkinsjenkins00000000000000nova-2014.1/tools/vmwareapi/README.firewall0000664000175400017540000000025212323721477021530 0ustar jenkinsjenkins00000000000000To open VNC ports on your ESX host, use the openstackvncfirewall.zip file from the following github repo git clone https://github.com/openstack-vmwareapi-team/Tools.git nova-2014.1/tools/lintstack.sh0000775000175400017540000000420612323721477017407 0ustar jenkinsjenkins00000000000000#!/usr/bin/env bash # Copyright (c) 2012-2013, AT&T Labs, Yun Mao # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # Use lintstack.py to compare pylint errors. # We run pylint twice, once on HEAD, once on the code before the latest # commit for review. set -e TOOLS_DIR=$(cd $(dirname "$0") && pwd) # Get the current branch name. GITHEAD=`git rev-parse --abbrev-ref HEAD` if [[ "$GITHEAD" == "HEAD" ]]; then # In detached head mode, get revision number instead GITHEAD=`git rev-parse HEAD` echo "Currently we are at commit $GITHEAD" else echo "Currently we are at branch $GITHEAD" fi cp -f $TOOLS_DIR/lintstack.py $TOOLS_DIR/lintstack.head.py if git rev-parse HEAD^2 2>/dev/null; then # The HEAD is a Merge commit. Here, the patch to review is # HEAD^2, the master branch is at HEAD^1, and the patch was # written based on HEAD^2~1. PREV_COMMIT=`git rev-parse HEAD^2~1` git checkout HEAD~1 # The git merge is necessary for reviews with a series of patches. # If not, this is a no-op so won't hurt either. git merge $PREV_COMMIT else # The HEAD is not a merge commit. This won't happen on gerrit. # Most likely you are running against your own patch locally. # We assume the patch to examine is HEAD, and we compare it against # HEAD~1 git checkout HEAD~1 fi # First generate tools/pylint_exceptions from HEAD~1 $TOOLS_DIR/lintstack.head.py generate # Then use that as a reference to compare against HEAD git checkout $GITHEAD $TOOLS_DIR/lintstack.head.py echo "Check passed. FYI: the pylint exceptions are:" cat $TOOLS_DIR/pylint_exceptions nova-2014.1/tools/regression_tester.py0000775000175400017540000000672212323721477021204 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tool for checking if patch contains a regression test. By default runs against current patch but can be set to use any gerrit review as specified by change number (uses 'git review -d'). Idea: take tests from patch to check, and run against code from previous patch. If new tests pass, then no regression test, if new tests fails against old code then either * new tests depend on new code and cannot confirm regression test is valid (false positive) * new tests detects the bug being fixed (detect valid regression test) Due to the risk of false positives, the results from this need some human interpretation. """ from __future__ import print_function import optparse import string import subprocess import sys def run(cmd, fail_ok=False): print("running: %s" % cmd) obj = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) obj.wait() if obj.returncode != 0 and not fail_ok: print("The above command terminated with an error.") sys.exit(obj.returncode) return obj.stdout.read() def main(): usage = """ Tool for checking if a patch includes a regression test. Usage: %prog [options]""" parser = optparse.OptionParser(usage) parser.add_option("-r", "--review", dest="review", help="gerrit review number to test") (options, args) = parser.parse_args() if options.review: original_branch = run("git rev-parse --abbrev-ref HEAD") run("git review -d %s" % options.review) else: print ("no gerrit review number specified, running on latest commit" "on current branch.") test_works = False # run new tests with old code run("git checkout HEAD^ nova") run("git checkout HEAD nova/tests") # identify which tests have changed tests = run("git whatchanged --format=oneline -1 | grep \"nova/tests\" " "| cut -f2").split() test_list = [] for test in tests: test_list.append(string.replace(test[0:-3], '/', '.')) if test_list == []: test_works = False expect_failure = "" else: # run new tests, expect them to fail expect_failure = run(("tox -epy27 %s 2>&1" % string.join(test_list)), fail_ok=True) if "FAILED (id=" in expect_failure: test_works = True # cleanup run("git checkout HEAD nova") if options.review: new_branch = run("git status | head -1 | cut -d ' ' -f 4") run("git checkout %s" % original_branch) run("git branch -D %s" % new_branch) print(expect_failure) print("") print("*******************************") if test_works: print("FOUND a regression test") else: print("NO regression test") sys.exit(1) if __name__ == "__main__": main() nova-2014.1/tools/db/0000775000175400017540000000000012323722546015435 5ustar jenkinsjenkins00000000000000nova-2014.1/tools/db/schema_diff.py0000775000175400017540000001573112323721477020253 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Utility for diff'ing two versions of the DB schema. Each release cycle the plan is to compact all of the migrations from that release into a single file. This is a manual and, unfortunately, error-prone process. To ensure that the schema doesn't change, this tool can be used to diff the compacted DB schema to the original, uncompacted form. The schema versions are specified by providing a git ref (a branch name or commit hash) and a SQLAlchemy-Migrate version number: Run like: ./tools/db/schema_diff.py mysql master:latest my_branch:82 """ from __future__ import print_function import datetime import glob import os import subprocess import sys from nova.openstack.common.gettextutils import _ ### Dump def dump_db(db_driver, db_name, migration_version, dump_filename): db_driver.create(db_name) try: migrate(db_driver, db_name, migration_version) db_driver.dump(db_name, dump_filename) finally: db_driver.drop(db_name) ### Diff def diff_files(filename1, filename2): pipeline = ['diff -U 3 %(filename1)s %(filename2)s' % locals()] # Use colordiff if available if subprocess.call(['which', 'colordiff']) == 0: pipeline.append('colordiff') pipeline.append('less -R') cmd = ' | '.join(pipeline) subprocess.check_call(cmd, shell=True) ### Database class MySQL(object): def create(self, name): subprocess.check_call(['mysqladmin', '-u', 'root', 'create', name]) def drop(self, name): subprocess.check_call(['mysqladmin', '-f', '-u', 'root', 'drop', name]) def dump(self, name, dump_filename): subprocess.check_call( 'mysqldump -u root %(name)s > %(dump_filename)s' % locals(), shell=True) def url(self, name): return 'mysql://root@localhost/%s' % name class Postgres(object): def create(self, name): subprocess.check_call(['createdb', name]) def drop(self, name): subprocess.check_call(['dropdb', name]) def dump(self, name, dump_filename): subprocess.check_call( 'pg_dump %(name)s > %(dump_filename)s' % locals(), shell=True) def url(self, name): return 'postgresql://localhost/%s' % name def _get_db_driver_class(db_type): if db_type == "mysql": return MySQL elif db_type == "postgres": return Postgres else: raise Exception(_("database %s not supported") % db_type) ### Migrate MIGRATE_REPO = os.path.join(os.getcwd(), "nova/db/sqlalchemy/migrate_repo") def migrate(db_driver, db_name, migration_version): earliest_version = _migrate_get_earliest_version() # NOTE(sirp): sqlalchemy-migrate currently cannot handle the skipping of # migration numbers. _migrate_cmd( db_driver, db_name, 'version_control', str(earliest_version - 1)) upgrade_cmd = ['upgrade'] if migration_version != 'latest': upgrade_cmd.append(str(migration_version)) _migrate_cmd(db_driver, db_name, *upgrade_cmd) def _migrate_cmd(db_driver, db_name, *cmd): manage_py = os.path.join(MIGRATE_REPO, 'manage.py') args = ['python', manage_py] args += cmd args += ['--repository=%s' % MIGRATE_REPO, '--url=%s' % db_driver.url(db_name)] subprocess.check_call(args) def _migrate_get_earliest_version(): versions_glob = os.path.join(MIGRATE_REPO, 'versions', '???_*.py') versions = [] for path in glob.iglob(versions_glob): filename = os.path.basename(path) prefix = filename.split('_', 1)[0] try: version = int(prefix) except ValueError: pass versions.append(version) versions.sort() return versions[0] ### Git def git_current_branch_name(): ref_name = git_symbolic_ref('HEAD', quiet=True) current_branch_name = ref_name.replace('refs/heads/', '') return current_branch_name def git_symbolic_ref(ref, quiet=False): args = ['git', 'symbolic-ref', ref] if quiet: args.append('-q') proc = subprocess.Popen(args, stdout=subprocess.PIPE) stdout, stderr = proc.communicate() return stdout.strip() def git_checkout(branch_name): subprocess.check_call(['git', 'checkout', branch_name]) def git_has_uncommited_changes(): return subprocess.call(['git', 'diff', '--quiet', '--exit-code']) == 1 ### Command def die(msg): print("ERROR: %s" % msg, file=sys.stderr) sys.exit(1) def usage(msg=None): if msg: print("ERROR: %s" % msg, file=sys.stderr) prog = "schema_diff.py" args = ["", "", ""] print("usage: %s %s" % (prog, ' '.join(args)), file=sys.stderr) sys.exit(1) def parse_options(): try: db_type = sys.argv[1] except IndexError: usage("must specify DB type") try: orig_branch, orig_version = sys.argv[2].split(':') except IndexError: usage('original branch and version required (e.g. master:82)') try: new_branch, new_version = sys.argv[3].split(':') except IndexError: usage('new branch and version required (e.g. master:82)') return db_type, orig_branch, orig_version, new_branch, new_version def main(): timestamp = datetime.datetime.utcnow().strftime("%Y%m%d_%H%M%S") ORIG_DB = 'orig_db_%s' % timestamp NEW_DB = 'new_db_%s' % timestamp ORIG_DUMP = ORIG_DB + ".dump" NEW_DUMP = NEW_DB + ".dump" options = parse_options() db_type, orig_branch, orig_version, new_branch, new_version = options # Since we're going to be switching branches, ensure user doesn't have any # uncommited changes if git_has_uncommited_changes(): die("You have uncommited changes. Please commit them before running " "this command.") db_driver = _get_db_driver_class(db_type)() users_branch = git_current_branch_name() git_checkout(orig_branch) try: # Dump Original Schema dump_db(db_driver, ORIG_DB, orig_version, ORIG_DUMP) # Dump New Schema git_checkout(new_branch) dump_db(db_driver, NEW_DB, new_version, NEW_DUMP) diff_files(ORIG_DUMP, NEW_DUMP) finally: git_checkout(users_branch) if os.path.exists(ORIG_DUMP): os.unlink(ORIG_DUMP) if os.path.exists(NEW_DUMP): os.unlink(NEW_DUMP) if __name__ == "__main__": main() nova-2014.1/README.rst0000664000175400017540000000405512323721476015404 0ustar jenkinsjenkins00000000000000OpenStack Nova README ===================== OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of virtualization technologies, including KVM, Xen, LXC, VMware, and more. In addition to its native API, it includes compatibility with the commonly encountered Amazon EC2 and S3 APIs. OpenStack Nova is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file. Nova primarily consists of a set of Python daemons, though it requires and integrates with a number of native system components for databases, messaging and virtualization capabilities. To keep updated with new developments in the OpenStack project follow `@openstack `_ on Twitter. To learn how to deploy OpenStack Nova, consult the documentation available online at: http://docs.openstack.org For information about the different compute (hypervisor) drivers supported by Nova, read this page on the wiki: https://wiki.openstack.org/wiki/HypervisorSupportMatrix In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at: http://bugs.launchpad.net/nova Developers wishing to work on the OpenStack Nova project should always base their work on the latest Nova code, available from the master GIT repository at: http://github.com/openstack/nova Developers should also join the discussion on the mailing list, at: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack Any new code must follow the development guidelines detailed in the HACKING.rst file, and pass all unit tests. Further developer focused documentation is available at: http://nova.openstack.org/ For information on how to contribute to Nova, please see the contents of the CONTRIBUTING.rst file. -- End of broadcast nova-2014.1/nova/0000775000175400017540000000000012323722546014653 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/hacking/0000775000175400017540000000000012323722546016257 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/hacking/checks.py0000664000175400017540000001600212323721476020071 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012, Cloudscaling # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import re """ Guidelines for writing new hacking checks - Use only for Nova specific tests. OpenStack general tests should be submitted to the common 'hacking' module. - Pick numbers in the range N3xx. Find the current test with the highest allocated number and then pick the next value. - Keep the test method code in the source file ordered based on the N3xx value. - List the new rule in the top level HACKING.rst file - Add test cases for each new rule to nova/tests/test_hacking.py """ session_check = re.compile(r"\w*def [a-zA-Z0-9].*[(].*session.*[)]") cfg_re = re.compile(r".*\scfg\.") vi_header_re = re.compile(r"^#\s+vim?:.+") virt_file_re = re.compile(r"\./nova/(?:tests/)?virt/(\w+)/") virt_import_re = re.compile( r"^\s*(?:import|from) nova\.(?:tests\.)?virt\.(\w+)") virt_config_re = re.compile( r"CONF\.import_opt\('.*?', 'nova\.virt\.(\w+)('|.)") author_tag_re = re.compile("^\s*#\s*@?(a|A)uthor:") asse_trueinst_re = re.compile( r"(.)*assertTrue\(isinstance\((\w|\.|\'|\"|\[|\])+, " "(\w|\.|\'|\"|\[|\])+\)\)") asse_equal_type_re = re.compile( r"(.)*assertEqual\(type\((\w|\.|\'|\"|\[|\])+\), " "(\w|\.|\'|\"|\[|\])+\)") asse_equal_end_with_none_re = re.compile( r"(.)*assertEqual\((\w|\.|\'|\"|\[|\])+, None\)") asse_equal_start_with_none_re = re.compile( r"(.)*assertEqual\(None, (\w|\.|\'|\"|\[|\])+\)") def import_no_db_in_virt(logical_line, filename): """Check for db calls from nova/virt As of grizzly-2 all the database calls have been removed from nova/virt, and we want to keep it that way. N307 """ if "nova/virt" in filename and not filename.endswith("fake.py"): if logical_line.startswith("from nova import db"): yield (0, "N307: nova.db import not allowed in nova/virt/*") def no_db_session_in_public_api(logical_line, filename): if "db/api.py" in filename or "db/sqlalchemy/api.py" in filename: if session_check.match(logical_line): yield (0, "N309: public db api methods may not accept session") def use_timeutils_utcnow(logical_line): msg = "N310: timeutils.utcnow() must be used instead of datetime.%s()" datetime_funcs = ['now', 'utcnow'] for f in datetime_funcs: pos = logical_line.find('datetime.%s' % f) if pos != -1: yield (pos, msg % f) def _get_virt_name(regex, data): m = regex.match(data) if m is None: return None driver = m.group(1) # Ignore things we mis-detect as virt drivers in the regex if driver in ["test_virt_drivers", "driver", "firewall", "disk", "api", "imagecache", "cpu"]: return None # TODO(berrange): remove once bugs 1261826 and 126182 are # fixed, or baremetal driver is removed, which is first. if driver == "baremetal": return None return driver def import_no_virt_driver_import_deps(physical_line, filename): """Check virt drivers' modules aren't imported by other drivers Modules under each virt driver's directory are considered private to that virt driver. Other drivers in Nova must not access those drivers. Any code that is to be shared should be refactored into a common module N311 """ thisdriver = _get_virt_name(virt_file_re, filename) thatdriver = _get_virt_name(virt_import_re, physical_line) if (thatdriver is not None and thisdriver is not None and thisdriver != thatdriver): return (0, "N311: importing code from other virt drivers forbidden") def import_no_virt_driver_config_deps(physical_line, filename): """Check virt drivers' config vars aren't used by other drivers Modules under each virt driver's directory are considered private to that virt driver. Other drivers in Nova must not use their config vars. Any config vars that are to be shared should be moved into a common module N312 """ thisdriver = _get_virt_name(virt_file_re, filename) thatdriver = _get_virt_name(virt_config_re, physical_line) if (thatdriver is not None and thisdriver is not None and thisdriver != thatdriver): return (0, "N312: using config vars from other virt drivers forbidden") def capital_cfg_help(logical_line, tokens): msg = "N313: capitalize help string" if cfg_re.match(logical_line): for t in range(len(tokens)): if tokens[t][1] == "help": txt = tokens[t + 2][1] if len(txt) > 1 and txt[1].islower(): yield(0, msg) def no_vi_headers(physical_line, line_number, lines): """Check for vi editor configuration in source files. By default vi modelines can only appear in the first or last 5 lines of a source file. N314 """ # NOTE(gilliard): line_number is 1-indexed if line_number <= 5 or line_number > len(lines) - 5: if vi_header_re.match(physical_line): return 0, "N314: Don't put vi configuration in source files" def no_author_tags(physical_line): if author_tag_re.match(physical_line): pos = physical_line.find('author') return pos, "N315: Don't use author tags" def assert_true_instance(logical_line): """Check for assertTrue(isinstance(a, b)) sentences N316 """ if asse_trueinst_re.match(logical_line): yield (0, "N316: assertTrue(isinstance(a, b)) sentences not allowed") def assert_equal_type(logical_line): """Check for assertEqual(type(A), B) sentences N317 """ if asse_equal_type_re.match(logical_line): yield (0, "N317: assertEqual(type(A), B) sentences not allowed") def assert_equal_none(logical_line): """Check for assertEqual(A, None) or assertEqual(None, A) sentences N318 """ res = (asse_equal_start_with_none_re.match(logical_line) or asse_equal_end_with_none_re.match(logical_line)) if res: yield (0, "N318: assertEqual(A, None) or assertEqual(None, A) " "sentences not allowed") def factory(register): register(import_no_db_in_virt) register(no_db_session_in_public_api) register(use_timeutils_utcnow) register(import_no_virt_driver_import_deps) register(import_no_virt_driver_config_deps) register(capital_cfg_help) register(no_vi_headers) register(no_author_tags) register(assert_true_instance) register(assert_equal_type) register(assert_equal_none) nova-2014.1/nova/hacking/__init__.py0000664000175400017540000000000012323721476020357 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/cells/0000775000175400017540000000000012323722546015755 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/cells/driver.py0000664000175400017540000000256112323721476017627 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Base Cells Communication Driver """ class BaseCellsDriver(object): """The base class for cells communication. One instance of this class will be created for every neighbor cell that we find in the DB and it will be associated with the cell in its CellState. One instance is also created by the cells manager for setting up the consumers. """ def start_servers(self, msg_runner): """Start any messaging servers the driver may need.""" raise NotImplementedError() def stop_servers(self): """Stop accepting messages.""" raise NotImplementedError() def send_message_to_cell(self, cell_state, message): """Send a message to a cell.""" raise NotImplementedError() nova-2014.1/nova/cells/weights/0000775000175400017540000000000012323722546017427 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/cells/weights/weight_offset.py0000664000175400017540000000300312323721476022633 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Weigh cells by their weight_offset in the DB. Cells with higher weight_offsets in the DB will be preferred. """ from oslo.config import cfg from nova.cells import weights weigher_opts = [ cfg.FloatOpt('offset_weight_multiplier', default=1.0, help='Multiplier used to weigh offset weigher.'), ] CONF = cfg.CONF CONF.register_opts(weigher_opts, group='cells') class WeightOffsetWeigher(weights.BaseCellWeigher): """Weight cell by weight_offset db field. Originally designed so you can set a default cell by putting its weight_offset to 999999999999999 (highest weight wins) """ def weight_multiplier(self): return CONF.cells.offset_weight_multiplier def _weigh_object(self, cell, weight_properties): """Returns whatever was in the DB for weight_offset.""" return cell.db_info.get('weight_offset', 0) nova-2014.1/nova/cells/weights/ram_by_instance_type.py0000664000175400017540000000366312323721476024210 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Weigh cells by memory needed in a way that spreads instances. """ from oslo.config import cfg from nova.cells import weights ram_weigher_opts = [ cfg.FloatOpt('ram_weight_multiplier', default=10.0, help='Multiplier used for weighing ram. Negative ' 'numbers mean to stack vs spread.'), ] CONF = cfg.CONF CONF.register_opts(ram_weigher_opts, group='cells') class RamByInstanceTypeWeigher(weights.BaseCellWeigher): """Weigh cells by instance_type requested.""" def weight_multiplier(self): return CONF.cells.ram_weight_multiplier def _weigh_object(self, cell, weight_properties): """Use the 'ram_free' for a particular instance_type advertised from a child cell's capacity to compute a weight. We want to direct the build to a cell with a higher capacity. Since higher weights win, we just return the number of units available for the instance_type. """ request_spec = weight_properties['request_spec'] instance_type = request_spec['instance_type'] memory_needed = instance_type['memory_mb'] ram_free = cell.capacities.get('ram_free', {}) units_by_mb = ram_free.get('units_by_mb', {}) return units_by_mb.get(str(memory_needed), 0) nova-2014.1/nova/cells/weights/mute_child.py0000664000175400017540000000503712323721476022124 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ If a child cell hasn't sent capacity or capability updates in a while, downgrade its likelihood of being chosen for scheduling requests. """ from oslo.config import cfg from nova.cells import weights from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import timeutils LOG = logging.getLogger(__name__) mute_weigher_opts = [ cfg.FloatOpt('mute_weight_multiplier', default=-10.0, help='Multiplier used to weigh mute children. (The value ' 'should be negative.)'), cfg.FloatOpt('mute_weight_value', default=1000.0, help='Weight value assigned to mute children. (The value ' 'should be positive.)'), ] CONF = cfg.CONF CONF.import_opt('mute_child_interval', 'nova.cells.opts', group='cells') CONF.register_opts(mute_weigher_opts, group='cells') class MuteChildWeigher(weights.BaseCellWeigher): """If a child cell hasn't been heard from, greatly lower its selection weight. """ def weight_multiplier(self): # negative multiplier => lower weight return CONF.cells.mute_weight_multiplier def _weigh_object(self, cell, weight_properties): """Check cell against the last_seen timestamp that indicates the time that the most recent capability or capacity update was received from the given cell. """ last_seen = cell.last_seen secs = CONF.cells.mute_child_interval if timeutils.is_older_than(last_seen, secs): # yep, that's a mute child; recommend highly that it be skipped! LOG.warn(_("%(cell)s has not been seen since %(last_seen)s and is " "being treated as mute."), {'cell': cell, 'last_seen': last_seen}) return CONF.cells.mute_weight_value else: return 0 nova-2014.1/nova/cells/weights/__init__.py0000664000175400017540000000240412323721476021541 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Cell Scheduler weights """ from nova import weights class WeightedCell(weights.WeighedObject): def __repr__(self): return "WeightedCell [cell: %s, weight: %s]" % ( self.obj.name, self.weight) class BaseCellWeigher(weights.BaseWeigher): """Base class for cell weights.""" pass class CellWeightHandler(weights.BaseWeightHandler): object_class = WeightedCell def __init__(self): super(CellWeightHandler, self).__init__(BaseCellWeigher) def all_weighers(): """Return a list of weight plugin classes found in this directory.""" return CellWeightHandler().get_all_classes() nova-2014.1/nova/cells/manager.py0000664000175400017540000006000512323721476017743 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Cells Service Manager """ import datetime import time from oslo.config import cfg from oslo import messaging as oslo_messaging from nova.cells import messaging from nova.cells import state as cells_state from nova.cells import utils as cells_utils from nova import context from nova import exception from nova import manager from nova.objects import instance as instance_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import periodic_task from nova.openstack.common import timeutils cell_manager_opts = [ cfg.StrOpt('driver', default='nova.cells.rpc_driver.CellsRPCDriver', help='Cells communication driver to use'), cfg.IntOpt("instance_updated_at_threshold", default=3600, help="Number of seconds after an instance was updated " "or deleted to continue to update cells"), cfg.IntOpt("instance_update_num_instances", default=1, help="Number of instances to update per periodic task run") ] CONF = cfg.CONF CONF.import_opt('name', 'nova.cells.opts', group='cells') CONF.register_opts(cell_manager_opts, group='cells') LOG = logging.getLogger(__name__) class CellsManager(manager.Manager): """The nova-cells manager class. This class defines RPC methods that the local cell may call. This class is NOT used for messages coming from other cells. That communication is driver-specific. Communication to other cells happens via the nova.cells.messaging module. The MessageRunner from that module will handle routing the message to the correct cell via the communications driver. Most methods below create 'targeted' (where we want to route a message to a specific cell) or 'broadcast' (where we want a message to go to multiple cells) messages. Scheduling requests get passed to the scheduler class. """ target = oslo_messaging.Target(version='1.27') def __init__(self, *args, **kwargs): LOG.warn(_('The cells feature of Nova is considered experimental ' 'by the OpenStack project because it receives much ' 'less testing than the rest of Nova. This may change ' 'in the future, but current deployers should be aware ' 'that the use of it in production right now may be ' 'risky.')) # Mostly for tests. cell_state_manager = kwargs.pop('cell_state_manager', None) super(CellsManager, self).__init__(service_name='cells', *args, **kwargs) if cell_state_manager is None: cell_state_manager = cells_state.CellStateManager self.state_manager = cell_state_manager() self.msg_runner = messaging.MessageRunner(self.state_manager) cells_driver_cls = importutils.import_class( CONF.cells.driver) self.driver = cells_driver_cls() self.instances_to_heal = iter([]) def post_start_hook(self): """Have the driver start its servers for inter-cell communication. Also ask our child cells for their capacities and capabilities so we get them more quickly than just waiting for the next periodic update. Receiving the updates from the children will cause us to update our parents. If we don't have any children, just update our parents immediately. """ # FIXME(comstud): There's currently no hooks when services are # stopping, so we have no way to stop servers cleanly. self.driver.start_servers(self.msg_runner) ctxt = context.get_admin_context() if self.state_manager.get_child_cells(): self.msg_runner.ask_children_for_capabilities(ctxt) self.msg_runner.ask_children_for_capacities(ctxt) else: self._update_our_parents(ctxt) @periodic_task.periodic_task def _update_our_parents(self, ctxt): """Update our parent cells with our capabilities and capacity if we're at the bottom of the tree. """ self.msg_runner.tell_parents_our_capabilities(ctxt) self.msg_runner.tell_parents_our_capacities(ctxt) @periodic_task.periodic_task def _heal_instances(self, ctxt): """Periodic task to send updates for a number of instances to parent cells. On every run of the periodic task, we will attempt to sync 'CONF.cells.instance_update_num_instances' number of instances. When we get the list of instances, we shuffle them so that multiple nova-cells services aren't attempting to sync the same instances in lockstep. If CONF.cells.instance_update_at_threshold is set, only attempt to sync instances that have been updated recently. The CONF setting defines the maximum number of seconds old the updated_at can be. Ie, a threshold of 3600 means to only update instances that have modified in the last hour. """ if not self.state_manager.get_parent_cells(): # No need to sync up if we have no parents. return info = {'updated_list': False} def _next_instance(): try: instance = self.instances_to_heal.next() except StopIteration: if info['updated_list']: return threshold = CONF.cells.instance_updated_at_threshold updated_since = None if threshold > 0: updated_since = timeutils.utcnow() - datetime.timedelta( seconds=threshold) self.instances_to_heal = cells_utils.get_instances_to_sync( ctxt, updated_since=updated_since, shuffle=True, uuids_only=True) info['updated_list'] = True try: instance = self.instances_to_heal.next() except StopIteration: return return instance rd_context = ctxt.elevated(read_deleted='yes') for i in xrange(CONF.cells.instance_update_num_instances): while True: # Yield to other greenthreads time.sleep(0) instance_uuid = _next_instance() if not instance_uuid: return try: instance = self.db.instance_get_by_uuid(rd_context, instance_uuid) except exception.InstanceNotFound: continue self._sync_instance(ctxt, instance) break def _sync_instance(self, ctxt, instance): """Broadcast an instance_update or instance_destroy message up to parent cells. """ if instance['deleted']: self.instance_destroy_at_top(ctxt, instance) else: self.instance_update_at_top(ctxt, instance) def schedule_run_instance(self, ctxt, host_sched_kwargs): """Pick a cell (possibly ourselves) to build new instance(s) and forward the request accordingly. """ # Target is ourselves first. our_cell = self.state_manager.get_my_state() self.msg_runner.schedule_run_instance(ctxt, our_cell, host_sched_kwargs) def build_instances(self, ctxt, build_inst_kwargs): """Pick a cell (possibly ourselves) to build new instance(s) and forward the request accordingly. """ # Target is ourselves first. our_cell = self.state_manager.get_my_state() self.msg_runner.build_instances(ctxt, our_cell, build_inst_kwargs) def get_cell_info_for_neighbors(self, _ctxt): """Return cell information for our neighbor cells.""" return self.state_manager.get_cell_info_for_neighbors() def run_compute_api_method(self, ctxt, cell_name, method_info, call): """Call a compute API method in a specific cell.""" response = self.msg_runner.run_compute_api_method(ctxt, cell_name, method_info, call) if call: return response.value_or_raise() def instance_update_at_top(self, ctxt, instance): """Update an instance at the top level cell.""" self.msg_runner.instance_update_at_top(ctxt, instance) def instance_destroy_at_top(self, ctxt, instance): """Destroy an instance at the top level cell.""" self.msg_runner.instance_destroy_at_top(ctxt, instance) def instance_delete_everywhere(self, ctxt, instance, delete_type): """This is used by API cell when it didn't know what cell an instance was in, but the instance was requested to be deleted or soft_deleted. So, we'll broadcast this everywhere. """ if isinstance(instance, dict): instance = instance_obj.Instance._from_db_object(ctxt, instance_obj.Instance(), instance) self.msg_runner.instance_delete_everywhere(ctxt, instance, delete_type) def instance_fault_create_at_top(self, ctxt, instance_fault): """Create an instance fault at the top level cell.""" self.msg_runner.instance_fault_create_at_top(ctxt, instance_fault) def bw_usage_update_at_top(self, ctxt, bw_update_info): """Update bandwidth usage at top level cell.""" self.msg_runner.bw_usage_update_at_top(ctxt, bw_update_info) def sync_instances(self, ctxt, project_id, updated_since, deleted): """Force a sync of all instances, potentially by project_id, and potentially since a certain date/time. """ self.msg_runner.sync_instances(ctxt, project_id, updated_since, deleted) def service_get_all(self, ctxt, filters): """Return services in this cell and in all child cells.""" responses = self.msg_runner.service_get_all(ctxt, filters) ret_services = [] # 1 response per cell. Each response is a list of services. for response in responses: services = response.value_or_raise() for service in services: cells_utils.add_cell_to_service(service, response.cell_name) ret_services.append(service) return ret_services def service_get_by_compute_host(self, ctxt, host_name): """Return a service entry for a compute host in a certain cell.""" cell_name, host_name = cells_utils.split_cell_and_item(host_name) response = self.msg_runner.service_get_by_compute_host(ctxt, cell_name, host_name) service = response.value_or_raise() cells_utils.add_cell_to_service(service, response.cell_name) return service def get_host_uptime(self, ctxt, host_name): """Return host uptime for a compute host in a certain cell :param host_name: fully qualified hostname. It should be in format of parent!child@host_id """ cell_name, host_name = cells_utils.split_cell_and_item(host_name) response = self.msg_runner.get_host_uptime(ctxt, cell_name, host_name) return response.value_or_raise() def service_update(self, ctxt, host_name, binary, params_to_update): """Used to enable/disable a service. For compute services, setting to disabled stops new builds arriving on that host. :param host_name: the name of the host machine that the service is running :param binary: The name of the executable that the service runs as :param params_to_update: eg. {'disabled': True} :returns: the service reference """ cell_name, host_name = cells_utils.split_cell_and_item(host_name) response = self.msg_runner.service_update( ctxt, cell_name, host_name, binary, params_to_update) service = response.value_or_raise() cells_utils.add_cell_to_service(service, response.cell_name) return service def service_delete(self, ctxt, cell_service_id): """Deletes the specified service.""" cell_name, service_id = cells_utils.split_cell_and_item( cell_service_id) self.msg_runner.service_delete(ctxt, cell_name, service_id) def proxy_rpc_to_manager(self, ctxt, topic, rpc_message, call, timeout): """Proxy an RPC message as-is to a manager.""" compute_topic = CONF.compute_topic cell_and_host = topic[len(compute_topic) + 1:] cell_name, host_name = cells_utils.split_cell_and_item(cell_and_host) response = self.msg_runner.proxy_rpc_to_manager(ctxt, cell_name, host_name, topic, rpc_message, call, timeout) return response.value_or_raise() def task_log_get_all(self, ctxt, task_name, period_beginning, period_ending, host=None, state=None): """Get task logs from the DB from all cells or a particular cell. If 'host' is not None, host will be of the format 'cell!name@host', with '@host' being optional. The query will be directed to the appropriate cell and return all task logs, or task logs matching the host if specified. 'state' also may be None. If it's not, filter by the state as well. """ if host is None: cell_name = None else: cell_name, host = cells_utils.split_cell_and_item(host) # If no cell name was given, assume that the host name is the # cell_name and that the target is all hosts if cell_name is None: cell_name, host = host, cell_name responses = self.msg_runner.task_log_get_all(ctxt, cell_name, task_name, period_beginning, period_ending, host=host, state=state) # 1 response per cell. Each response is a list of task log # entries. ret_task_logs = [] for response in responses: task_logs = response.value_or_raise() for task_log in task_logs: cells_utils.add_cell_to_task_log(task_log, response.cell_name) ret_task_logs.append(task_log) return ret_task_logs def compute_node_get(self, ctxt, compute_id): """Get a compute node by ID in a specific cell.""" cell_name, compute_id = cells_utils.split_cell_and_item( compute_id) response = self.msg_runner.compute_node_get(ctxt, cell_name, compute_id) node = response.value_or_raise() cells_utils.add_cell_to_compute_node(node, cell_name) return node def compute_node_get_all(self, ctxt, hypervisor_match=None): """Return list of compute nodes in all cells.""" responses = self.msg_runner.compute_node_get_all(ctxt, hypervisor_match=hypervisor_match) # 1 response per cell. Each response is a list of compute_node # entries. ret_nodes = [] for response in responses: nodes = response.value_or_raise() for node in nodes: cells_utils.add_cell_to_compute_node(node, response.cell_name) ret_nodes.append(node) return ret_nodes def compute_node_stats(self, ctxt): """Return compute node stats totals from all cells.""" responses = self.msg_runner.compute_node_stats(ctxt) totals = {} for response in responses: data = response.value_or_raise() for key, val in data.iteritems(): totals.setdefault(key, 0) totals[key] += val return totals def actions_get(self, ctxt, cell_name, instance_uuid): response = self.msg_runner.actions_get(ctxt, cell_name, instance_uuid) return response.value_or_raise() def action_get_by_request_id(self, ctxt, cell_name, instance_uuid, request_id): response = self.msg_runner.action_get_by_request_id(ctxt, cell_name, instance_uuid, request_id) return response.value_or_raise() def action_events_get(self, ctxt, cell_name, action_id): response = self.msg_runner.action_events_get(ctxt, cell_name, action_id) return response.value_or_raise() def consoleauth_delete_tokens(self, ctxt, instance_uuid): """Delete consoleauth tokens for an instance in API cells.""" self.msg_runner.consoleauth_delete_tokens(ctxt, instance_uuid) def validate_console_port(self, ctxt, instance_uuid, console_port, console_type): """Validate console port with child cell compute node.""" instance = self.db.instance_get_by_uuid(ctxt, instance_uuid) if not instance['cell_name']: raise exception.InstanceUnknownCell(instance_uuid=instance_uuid) response = self.msg_runner.validate_console_port(ctxt, instance['cell_name'], instance_uuid, console_port, console_type) return response.value_or_raise() def get_capacities(self, ctxt, cell_name): return self.state_manager.get_capacities(cell_name) def bdm_update_or_create_at_top(self, ctxt, bdm, create=None): """BDM was created/updated in this cell. Tell the API cells.""" self.msg_runner.bdm_update_or_create_at_top(ctxt, bdm, create=create) def bdm_destroy_at_top(self, ctxt, instance_uuid, device_name=None, volume_id=None): """BDM was destroyed for instance in this cell. Tell the API cells.""" self.msg_runner.bdm_destroy_at_top(ctxt, instance_uuid, device_name=device_name, volume_id=volume_id) def get_migrations(self, ctxt, filters): """Fetch migrations applying the filters.""" target_cell = None if "cell_name" in filters: _path_cell_sep = cells_utils.PATH_CELL_SEP target_cell = '%s%s%s' % (CONF.cells.name, _path_cell_sep, filters['cell_name']) responses = self.msg_runner.get_migrations(ctxt, target_cell, False, filters) migrations = [] for response in responses: migrations += response.value_or_raise() return migrations def instance_update_from_api(self, ctxt, instance, expected_vm_state, expected_task_state, admin_state_reset): """Update an instance in its cell.""" self.msg_runner.instance_update_from_api(ctxt, instance, expected_vm_state, expected_task_state, admin_state_reset) def start_instance(self, ctxt, instance): """Start an instance in its cell.""" self.msg_runner.start_instance(ctxt, instance) def stop_instance(self, ctxt, instance, do_cast=True): """Stop an instance in its cell.""" response = self.msg_runner.stop_instance(ctxt, instance, do_cast=do_cast) if not do_cast: return response.value_or_raise() def cell_create(self, ctxt, values): return self.state_manager.cell_create(ctxt, values) def cell_update(self, ctxt, cell_name, values): return self.state_manager.cell_update(ctxt, cell_name, values) def cell_delete(self, ctxt, cell_name): return self.state_manager.cell_delete(ctxt, cell_name) def cell_get(self, ctxt, cell_name): return self.state_manager.cell_get(ctxt, cell_name) def reboot_instance(self, ctxt, instance, reboot_type): """Reboot an instance in its cell.""" self.msg_runner.reboot_instance(ctxt, instance, reboot_type) def pause_instance(self, ctxt, instance): """Pause an instance in its cell.""" self.msg_runner.pause_instance(ctxt, instance) def unpause_instance(self, ctxt, instance): """Unpause an instance in its cell.""" self.msg_runner.unpause_instance(ctxt, instance) def suspend_instance(self, ctxt, instance): """Suspend an instance in its cell.""" self.msg_runner.suspend_instance(ctxt, instance) def resume_instance(self, ctxt, instance): """Resume an instance in its cell.""" self.msg_runner.resume_instance(ctxt, instance) def terminate_instance(self, ctxt, instance): """Delete an instance in its cell.""" self.msg_runner.terminate_instance(ctxt, instance) def soft_delete_instance(self, ctxt, instance): """Soft-delete an instance in its cell.""" self.msg_runner.soft_delete_instance(ctxt, instance) def resize_instance(self, ctxt, instance, flavor, extra_instance_updates): """Resize an instance in its cell.""" self.msg_runner.resize_instance(ctxt, instance, flavor, extra_instance_updates) def live_migrate_instance(self, ctxt, instance, block_migration, disk_over_commit, host_name): """Live migrate an instance in its cell.""" self.msg_runner.live_migrate_instance(ctxt, instance, block_migration, disk_over_commit, host_name) def revert_resize(self, ctxt, instance): """Revert a resize for an instance in its cell.""" self.msg_runner.revert_resize(ctxt, instance) def confirm_resize(self, ctxt, instance): """Confirm a resize for an instance in its cell.""" self.msg_runner.confirm_resize(ctxt, instance) def reset_network(self, ctxt, instance): """Reset networking for an instance in its cell.""" self.msg_runner.reset_network(ctxt, instance) def inject_network_info(self, ctxt, instance): """Inject networking for an instance in its cell.""" self.msg_runner.inject_network_info(ctxt, instance) def snapshot_instance(self, ctxt, instance, image_id): """Snapshot an instance in its cell.""" self.msg_runner.snapshot_instance(ctxt, instance, image_id) def backup_instance(self, ctxt, instance, image_id, backup_type, rotation): """Backup an instance in its cell.""" self.msg_runner.backup_instance(ctxt, instance, image_id, backup_type, rotation) def rebuild_instance(self, ctxt, instance, image_href, admin_password, files_to_inject, preserve_ephemeral, kwargs): self.msg_runner.rebuild_instance(ctxt, instance, image_href, admin_password, files_to_inject, preserve_ephemeral, kwargs) nova-2014.1/nova/cells/opts.py0000664000175400017540000000460712323721476017324 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # # 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. """ Global cells config options """ from oslo.config import cfg cells_opts = [ cfg.BoolOpt('enable', default=False, help='Enable cell functionality'), cfg.StrOpt('topic', default='cells', help='The topic cells nodes listen on'), cfg.StrOpt('manager', default='nova.cells.manager.CellsManager', help='Manager for cells'), cfg.StrOpt('name', default='nova', help='Name of this cell'), cfg.ListOpt('capabilities', default=['hypervisor=xenserver;kvm', 'os=linux;windows'], help='Key/Multi-value list with the capabilities of the cell'), cfg.IntOpt('call_timeout', default=60, help='Seconds to wait for response from a call to a cell.'), cfg.FloatOpt('reserve_percent', default=10.0, help='Percentage of cell capacity to hold in reserve. ' 'Affects both memory and disk utilization'), cfg.StrOpt('cell_type', default='compute', help='Type of cell: api or compute'), cfg.IntOpt("mute_child_interval", default=300, help='Number of seconds after which a lack of capability and ' 'capacity updates signals the child cell is to be ' 'treated as a mute.'), cfg.IntOpt('bandwidth_update_interval', default=600, help='Seconds between bandwidth updates for cells.'), ] CONF = cfg.CONF CONF.register_opts(cells_opts, group='cells') def get_cell_type(): """Return the cell type, 'api', 'compute', or None (if cells is disabled). """ if not CONF.cells.enable: return return CONF.cells.cell_type nova-2014.1/nova/cells/filters/0000775000175400017540000000000012323722546017425 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/cells/filters/target_cell.py0000664000175400017540000000545612323721476022277 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Target cell filter. A scheduler hint of 'target_cell' with a value of a full cell name may be specified to route a build to a particular cell. No error handling is done as there's no way to know whether the full path is a valid. """ from nova.cells import filters from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) class TargetCellFilter(filters.BaseCellFilter): """Target cell filter. Works by specifying a scheduler hint of 'target_cell'. The value should be the full cell path. """ def filter_all(self, cells, filter_properties): """Override filter_all() which operates on the full list of cells... """ scheduler_hints = filter_properties.get('scheduler_hints') if not scheduler_hints: return cells # This filter only makes sense at the top level, as a full # cell name is specified. So we pop 'target_cell' out of the # hints dict. cell_name = scheduler_hints.pop('target_cell', None) if not cell_name: return cells # This authorization is after popping off target_cell, so # that in case this fails, 'target_cell' is not left in the # dict when child cells go to schedule. if not self.authorized(filter_properties['context']): # No filtering, if not authorized. return cells LOG.info(_("Forcing direct route to %(cell_name)s because " "of 'target_cell' scheduler hint"), {'cell_name': cell_name}) scheduler = filter_properties['scheduler'] if cell_name == filter_properties['routing_path']: return [scheduler.state_manager.get_my_state()] ctxt = filter_properties['context'] # NOTE(belliott) Remove after deprecated schedule_run_instance # code goes away: schedule = filter_properties['cell_scheduler_method'] schedule = getattr(scheduler.msg_runner, schedule) schedule(ctxt, cell_name, filter_properties['host_sched_kwargs']) # Returning None means to skip further scheduling, because we # handled it. nova-2014.1/nova/cells/filters/image_properties.py0000664000175400017540000000467612323721476023353 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Image properties filter. Image metadata named 'hypervisor_version_requires' with a version specification may be specified to ensure the build goes to a cell which has hypervisors of the required version. If either the version requirement on the image or the hypervisor capability of the cell is not present, this filter returns without filtering out the cells. """ from distutils import versionpredicate from nova.cells import filters from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) class ImagePropertiesFilter(filters.BaseCellFilter): """Image properties filter. Works by specifying the hypervisor required in the image metadata and the supported hypervisor version in cell capabilities. """ def filter_all(self, cells, filter_properties): """Override filter_all() which operates on the full list of cells... """ request_spec = filter_properties.get('request_spec', {}) image_properties = request_spec.get('image', {}).get('properties', {}) hypervisor_version_requires = image_properties.get( 'hypervisor_version_requires') if hypervisor_version_requires is None: return cells filtered_cells = [] for cell in cells: version = cell.capabilities.get('prominent_hypervisor_version') version = version and str(version.pop()) if version is None or self._matches_version(version, hypervisor_version_requires): filtered_cells.append(cell) return filtered_cells def _matches_version(self, version, version_requires): predicate = versionpredicate.VersionPredicate( 'prop (%s)' % version_requires) return predicate.satisfied_by(version) nova-2014.1/nova/cells/filters/__init__.py0000664000175400017540000000410512323721476021537 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Cell scheduler filters """ from nova import filters from nova.openstack.common import log as logging from nova import policy LOG = logging.getLogger(__name__) class BaseCellFilter(filters.BaseFilter): """Base class for cell filters.""" def authorized(self, ctxt): """Return whether or not the context is authorized for this filter based on policy. The policy action is "cells_scheduler_filter:" where is the name of the filter class. """ name = 'cells_scheduler_filter:' + self.__class__.__name__ target = {'project_id': ctxt.project_id, 'user_id': ctxt.user_id} return policy.enforce(ctxt, name, target, do_raise=False) def _filter_one(self, cell, filter_properties): return self.cell_passes(cell, filter_properties) def cell_passes(self, cell, filter_properties): """Return True if the CellState passes the filter, otherwise False. Override this in a subclass. """ raise NotImplementedError() class CellFilterHandler(filters.BaseFilterHandler): def __init__(self): super(CellFilterHandler, self).__init__(BaseCellFilter) def all_filters(): """Return a list of filter classes found in this directory. This method is used as the default for available scheduler filters and should return a list of all filter classes available. """ return CellFilterHandler().get_all_classes() nova-2014.1/nova/cells/rpc_driver.py0000664000175400017540000001470612323721476020477 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # Copyright 2013 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. """ Cells RPC Communication Driver """ from oslo.config import cfg from oslo import messaging from nova.cells import driver from nova import rpc cell_rpc_driver_opts = [ cfg.StrOpt('rpc_driver_queue_base', default='cells.intercell', help="Base queue name to use when communicating between " "cells. Various topics by message type will be " "appended to this.")] CONF = cfg.CONF CONF.register_opts(cell_rpc_driver_opts, group='cells') CONF.import_opt('call_timeout', 'nova.cells.opts', group='cells') rpcapi_cap_opt = cfg.StrOpt('intercell', help='Set a version cap for messages sent between cells services') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') class CellsRPCDriver(driver.BaseCellsDriver): """Driver for cell<->cell communication via RPC. This is used to setup the RPC consumers as well as to send a message to another cell. One instance of this class will be created for every neighbor cell that we find in the DB and it will be associated with the cell in its CellState. One instance is also created by the cells manager for setting up the consumers. """ def __init__(self, *args, **kwargs): super(CellsRPCDriver, self).__init__(*args, **kwargs) self.rpc_servers = [] self.intercell_rpcapi = InterCellRPCAPI() def start_servers(self, msg_runner): """Start RPC servers. Start up 2 separate servers for handling inter-cell communication via RPC. Both handle the same types of messages, but requests/replies are separated to solve potential deadlocks. (If we used the same queue for both, it's possible to exhaust the RPC thread pool while we wait for replies.. such that we'd never consume a reply.) """ topic_base = CONF.cells.rpc_driver_queue_base proxy_manager = InterCellRPCDispatcher(msg_runner) for msg_type in msg_runner.get_message_types(): target = messaging.Target(topic='%s.%s' % (topic_base, msg_type), server=CONF.host) # NOTE(comstud): We do not need to use the object serializer # on this because object serialization is taken care for us in # the nova.cells.messaging module. server = rpc.get_server(target, endpoints=[proxy_manager]) server.start() self.rpc_servers.append(server) def stop_servers(self): """Stop RPC servers. NOTE: Currently there's no hooks when stopping services to have managers cleanup, so this is not currently called. """ for server in self.rpc_servers: server.stop() def send_message_to_cell(self, cell_state, message): """Use the IntercellRPCAPI to send a message to a cell.""" self.intercell_rpcapi.send_message_to_cell(cell_state, message) class InterCellRPCAPI(object): """Client side of the Cell<->Cell RPC API. The CellsRPCDriver uses this to make calls to another cell. API version history: 1.0 - Initial version. ... Grizzly supports message version 1.0. So, any changes to existing methods in 2.x after that point should be done such that they can handle the version_cap being set to 1.0. """ VERSION_ALIASES = { 'grizzly': '1.0', } def __init__(self): super(InterCellRPCAPI, self).__init__() self.version_cap = ( self.VERSION_ALIASES.get(CONF.upgrade_levels.intercell, CONF.upgrade_levels.intercell)) def _get_client(self, next_hop, topic): """Turn the DB information for a cell into a messaging.RPCClient.""" transport_url = next_hop.db_info['transport_url'] transport = messaging.get_transport(cfg.CONF, transport_url, rpc.TRANSPORT_ALIASES) target = messaging.Target(topic=topic, version='1.0') serializer = rpc.RequestContextSerializer(None) return messaging.RPCClient(transport, target, version_cap=self.version_cap, serializer=serializer) def send_message_to_cell(self, cell_state, message): """Send a message to another cell by JSON-ifying the message and making an RPC cast to 'process_message'. If the message says to fanout, do it. The topic that is used will be 'CONF.rpc_driver_queue_base.'. """ topic_base = CONF.cells.rpc_driver_queue_base topic = '%s.%s' % (topic_base, message.message_type) cctxt = self._get_client(cell_state, topic) if message.fanout: cctxt = cctxt.prepare(fanout=message.fanout) return cctxt.cast(message.ctxt, 'process_message', message=message.to_json()) class InterCellRPCDispatcher(object): """RPC Dispatcher to handle messages received from other cells. All messages received here have come from a sibling cell. Depending on the ultimate target and type of message, we may process the message in this cell, relay the message to another sibling cell, or both. This logic is defined by the message class in the nova.cells.messaging module. """ target = messaging.Target(version='1.0') def __init__(self, msg_runner): """Init the Intercell RPC Dispatcher.""" self.msg_runner = msg_runner def process_message(self, _ctxt, message): """We received a message from another cell. Use the MessageRunner to turn this from JSON back into an instance of the correct Message class. Then process it! """ message = self.msg_runner.message_from_json(message) message.process() nova-2014.1/nova/cells/utils.py0000664000175400017540000000702012323721476017467 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Cells Utility Methods """ import random from nova import db # Separator used between cell names for the 'full cell name' and routing # path PATH_CELL_SEP = '!' # Separator used between cell name and item _CELL_ITEM_SEP = '@' def get_instances_to_sync(context, updated_since=None, project_id=None, deleted=True, shuffle=False, uuids_only=False): """Return a generator that will return a list of active and deleted instances to sync with parent cells. The list may optionally be shuffled for periodic updates so that multiple cells services aren't self-healing the same instances in nearly lockstep. """ filters = {} if updated_since is not None: filters['changes-since'] = updated_since if project_id is not None: filters['project_id'] = project_id if not deleted: filters['deleted'] = False # Active instances first. instances = db.instance_get_all_by_filters( context, filters, 'deleted', 'asc') if shuffle: random.shuffle(instances) for instance in instances: if uuids_only: yield instance['uuid'] else: yield instance def cell_with_item(cell_name, item): """Turn cell_name and item into @.""" if cell_name is None: return item return cell_name + _CELL_ITEM_SEP + str(item) def split_cell_and_item(cell_and_item): """Split a combined cell@item and return them.""" result = cell_and_item.rsplit(_CELL_ITEM_SEP, 1) if len(result) == 1: return (None, cell_and_item) else: return result def _add_cell_to_service(service, cell_name): service['id'] = cell_with_item(cell_name, service['id']) service['host'] = cell_with_item(cell_name, service['host']) def add_cell_to_compute_node(compute_node, cell_name): """Fix compute_node attributes that should be unique. Allows API cell to query the 'id' by cell@id. """ compute_node['id'] = cell_with_item(cell_name, compute_node['id']) # Might have a 'service' backref. But if is_primitive() was used # on this and it recursed too deep, 'service' may be "?". service = compute_node.get('service') if isinstance(service, dict): _add_cell_to_service(service, cell_name) def add_cell_to_service(service, cell_name): """Fix service attributes that should be unique. Allows API cell to query the 'id' or 'host' by cell@id/host. """ _add_cell_to_service(service, cell_name) compute_node = service.get('compute_node') if compute_node: add_cell_to_compute_node(compute_node[0], cell_name) def add_cell_to_task_log(task_log, cell_name): """Fix task_log attributes that should be unique. In particular, the 'id' and 'host' fields should be prepended with cell name. """ task_log['id'] = cell_with_item(cell_name, task_log['id']) task_log['host'] = cell_with_item(cell_name, task_log['host']) nova-2014.1/nova/cells/state.py0000664000175400017540000004334412323721476017460 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ CellState Manager """ import copy import datetime import functools from oslo.config import cfg from nova.cells import rpc_driver from nova import context from nova.db import base from nova import exception from nova.openstack.common import fileutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova.openstack.common import units from nova import rpc from nova import utils cell_state_manager_opts = [ cfg.IntOpt('db_check_interval', default=60, help='Interval, in seconds, for getting fresh cell ' 'information from the database.'), cfg.StrOpt('cells_config', help='Configuration file from which to read cells ' 'configuration. If given, overrides reading cells ' 'from the database.'), ] LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt('name', 'nova.cells.opts', group='cells') CONF.import_opt('reserve_percent', 'nova.cells.opts', group='cells') CONF.import_opt('mute_child_interval', 'nova.cells.opts', group='cells') #CONF.import_opt('capabilities', 'nova.cells.opts', group='cells') CONF.register_opts(cell_state_manager_opts, group='cells') class CellState(object): """Holds information for a particular cell.""" def __init__(self, cell_name, is_me=False): self.name = cell_name self.is_me = is_me self.last_seen = datetime.datetime.min self.capabilities = {} self.capacities = {} self.db_info = {} # TODO(comstud): The DB will specify the driver to use to talk # to this cell, but there's no column for this yet. The only # available driver is the rpc driver. self.driver = rpc_driver.CellsRPCDriver() def update_db_info(self, cell_db_info): """Update cell credentials from db.""" self.db_info = dict( [(k, v) for k, v in cell_db_info.iteritems() if k != 'name']) def update_capabilities(self, cell_metadata): """Update cell capabilities for a cell.""" self.last_seen = timeutils.utcnow() self.capabilities = cell_metadata def update_capacities(self, capacities): """Update capacity information for a cell.""" self.last_seen = timeutils.utcnow() self.capacities = capacities def get_cell_info(self): """Return subset of cell information for OS API use.""" db_fields_to_return = ['is_parent', 'weight_scale', 'weight_offset'] url_fields_to_return = { 'username': 'username', 'hostname': 'rpc_host', 'port': 'rpc_port', } cell_info = dict(name=self.name, capabilities=self.capabilities) if self.db_info: for field in db_fields_to_return: cell_info[field] = self.db_info[field] url = rpc.get_transport_url(self.db_info['transport_url']) if url.hosts: for field, canonical in url_fields_to_return.items(): cell_info[canonical] = getattr(url.hosts[0], field) return cell_info def send_message(self, message): """Send a message to a cell. Just forward this to the driver, passing ourselves and the message as arguments. """ self.driver.send_message_to_cell(self, message) def __repr__(self): me = "me" if self.is_me else "not_me" return "Cell '%s' (%s)" % (self.name, me) def sync_before(f): """Use as a decorator to wrap methods that use cell information to make sure they sync the latest information from the DB periodically. """ @functools.wraps(f) def wrapper(self, *args, **kwargs): self._cell_data_sync() return f(self, *args, **kwargs) return wrapper def sync_after(f): """Use as a decorator to wrap methods that update cell information in the database to make sure the data is synchronized immediately. """ @functools.wraps(f) def wrapper(self, *args, **kwargs): result = f(self, *args, **kwargs) self._cell_data_sync(force=True) return result return wrapper _unset = object() class CellStateManager(base.Base): def __new__(cls, cell_state_cls=None, cells_config=_unset): if cls is not CellStateManager: return super(CellStateManager, cls).__new__(cls) if cells_config is _unset: cells_config = CONF.cells.cells_config if cells_config: config_path = CONF.find_file(cells_config) if not config_path: raise cfg.ConfigFilesNotFoundError(config_files=[cells_config]) return CellStateManagerFile(cell_state_cls, config_path) return CellStateManagerDB(cell_state_cls) def __init__(self, cell_state_cls=None): super(CellStateManager, self).__init__() if not cell_state_cls: cell_state_cls = CellState self.cell_state_cls = cell_state_cls self.my_cell_state = cell_state_cls(CONF.cells.name, is_me=True) self.parent_cells = {} self.child_cells = {} self.last_cell_db_check = datetime.datetime.min self._cell_data_sync(force=True) my_cell_capabs = {} for cap in CONF.cells.capabilities: name, value = cap.split('=', 1) if ';' in value: values = set(value.split(';')) else: values = set([value]) my_cell_capabs[name] = values self.my_cell_state.update_capabilities(my_cell_capabs) def _refresh_cells_from_dict(self, db_cells_dict): """Make our cell info map match the db.""" # Update current cells. Delete ones that disappeared for cells_dict in (self.parent_cells, self.child_cells): for cell_name, cell_info in cells_dict.items(): is_parent = cell_info.db_info['is_parent'] db_dict = db_cells_dict.get(cell_name) if db_dict and is_parent == db_dict['is_parent']: cell_info.update_db_info(db_dict) else: del cells_dict[cell_name] # Add new cells for cell_name, db_info in db_cells_dict.items(): if db_info['is_parent']: cells_dict = self.parent_cells else: cells_dict = self.child_cells if cell_name not in cells_dict: cells_dict[cell_name] = self.cell_state_cls(cell_name) cells_dict[cell_name].update_db_info(db_info) def _time_to_sync(self): """Is it time to sync the DB against our memory cache?""" diff = timeutils.utcnow() - self.last_cell_db_check return diff.seconds >= CONF.cells.db_check_interval def _update_our_capacity(self, ctxt=None): """Update our capacity in the self.my_cell_state CellState. This will add/update 2 entries in our CellState.capacities, 'ram_free' and 'disk_free'. The values of these are both dictionaries with the following format: {'total_mb': , 'units_by_mb: } contains the number of units that we can build for every distinct memory or disk requirement that we have based on instance types. This number is computed by looking at room available on every compute_node. Take the following instance_types as an example: [{'memory_mb': 1024, 'root_gb': 10, 'ephemeral_gb': 100}, {'memory_mb': 2048, 'root_gb': 20, 'ephemeral_gb': 200}] capacities['ram_free']['units_by_mb'] would contain the following: {'1024': , '2048': } capacities['disk_free']['units_by_mb'] would contain the following: {'122880': , '225280': } Units are in MB, so 122880 = (10 + 100) * 1024. NOTE(comstud): Perhaps we should only report a single number available per instance_type. """ if not ctxt: ctxt = context.get_admin_context() reserve_level = CONF.cells.reserve_percent / 100.0 compute_hosts = {} def _get_compute_hosts(): compute_nodes = self.db.compute_node_get_all(ctxt) for compute in compute_nodes: service = compute['service'] if not service or service['disabled']: continue host = service['host'] compute_hosts[host] = { 'free_ram_mb': compute['free_ram_mb'], 'free_disk_mb': compute['free_disk_gb'] * 1024, 'total_ram_mb': compute['memory_mb'], 'total_disk_mb': compute['local_gb'] * 1024} _get_compute_hosts() if not compute_hosts: self.my_cell_state.update_capacities({}) return ram_mb_free_units = {} disk_mb_free_units = {} total_ram_mb_free = 0 total_disk_mb_free = 0 def _free_units(total, free, per_inst): if per_inst: min_free = total * reserve_level free = max(0, free - min_free) return int(free / per_inst) else: return 0 instance_types = self.db.flavor_get_all(ctxt) memory_mb_slots = frozenset( [inst_type['memory_mb'] for inst_type in instance_types]) disk_mb_slots = frozenset( [(inst_type['root_gb'] + inst_type['ephemeral_gb']) * units.Ki for inst_type in instance_types]) for compute_values in compute_hosts.values(): total_ram_mb_free += compute_values['free_ram_mb'] total_disk_mb_free += compute_values['free_disk_mb'] for memory_mb_slot in memory_mb_slots: ram_mb_free_units.setdefault(str(memory_mb_slot), 0) free_units = _free_units(compute_values['total_ram_mb'], compute_values['free_ram_mb'], memory_mb_slot) ram_mb_free_units[str(memory_mb_slot)] += free_units for disk_mb_slot in disk_mb_slots: disk_mb_free_units.setdefault(str(disk_mb_slot), 0) free_units = _free_units(compute_values['total_disk_mb'], compute_values['free_disk_mb'], disk_mb_slot) disk_mb_free_units[str(disk_mb_slot)] += free_units capacities = {'ram_free': {'total_mb': total_ram_mb_free, 'units_by_mb': ram_mb_free_units}, 'disk_free': {'total_mb': total_disk_mb_free, 'units_by_mb': disk_mb_free_units}} self.my_cell_state.update_capacities(capacities) @sync_before def get_cell_info_for_neighbors(self): """Return cell information for all neighbor cells.""" cell_list = [cell.get_cell_info() for cell in self.child_cells.itervalues()] cell_list.extend([cell.get_cell_info() for cell in self.parent_cells.itervalues()]) return cell_list @sync_before def get_my_state(self): """Return information for my (this) cell.""" return self.my_cell_state @sync_before def get_child_cells(self): """Return list of child cell_infos.""" return self.child_cells.values() @sync_before def get_parent_cells(self): """Return list of parent cell_infos.""" return self.parent_cells.values() @sync_before def get_parent_cell(self, cell_name): return self.parent_cells.get(cell_name) @sync_before def get_child_cell(self, cell_name): return self.child_cells.get(cell_name) @sync_before def update_cell_capabilities(self, cell_name, capabilities): """Update capabilities for a cell.""" cell = (self.child_cells.get(cell_name) or self.parent_cells.get(cell_name)) if not cell: LOG.error(_("Unknown cell '%(cell_name)s' when trying to " "update capabilities"), {'cell_name': cell_name}) return # Make sure capabilities are sets. for capab_name, values in capabilities.items(): capabilities[capab_name] = set(values) cell.update_capabilities(capabilities) @sync_before def update_cell_capacities(self, cell_name, capacities): """Update capacities for a cell.""" cell = (self.child_cells.get(cell_name) or self.parent_cells.get(cell_name)) if not cell: LOG.error(_("Unknown cell '%(cell_name)s' when trying to " "update capacities"), {'cell_name': cell_name}) return cell.update_capacities(capacities) @sync_before def get_our_capabilities(self, include_children=True): capabs = copy.deepcopy(self.my_cell_state.capabilities) if include_children: for cell in self.child_cells.values(): if timeutils.is_older_than(cell.last_seen, CONF.cells.mute_child_interval): continue for capab_name, values in cell.capabilities.items(): if capab_name not in capabs: capabs[capab_name] = set([]) capabs[capab_name] |= values return capabs def _add_to_dict(self, target, src): for key, value in src.items(): if isinstance(value, dict): target.setdefault(key, {}) self._add_to_dict(target[key], value) continue target.setdefault(key, 0) target[key] += value @sync_before def get_our_capacities(self, include_children=True): capacities = copy.deepcopy(self.my_cell_state.capacities) if include_children: for cell in self.child_cells.values(): self._add_to_dict(capacities, cell.capacities) return capacities @sync_before def get_capacities(self, cell_name=None): if not cell_name or cell_name == self.my_cell_state.name: return self.get_our_capacities() if cell_name in self.child_cells: return self.child_cells[cell_name].capacities raise exception.CellNotFound(cell_name=cell_name) @sync_before def cell_get(self, ctxt, cell_name): for cells_dict in (self.parent_cells, self.child_cells): if cell_name in cells_dict: return cells_dict[cell_name] raise exception.CellNotFound(cell_name=cell_name) class CellStateManagerDB(CellStateManager): @utils.synchronized('cell-db-sync') def _cell_data_sync(self, force=False): """Update cell status for all cells from the backing data store when necessary. :param force: If True, cell status will be updated regardless of whether it's time to do so. """ if force or self._time_to_sync(): LOG.debug(_("Updating cell cache from db.")) self.last_cell_db_check = timeutils.utcnow() ctxt = context.get_admin_context() db_cells = self.db.cell_get_all(ctxt) db_cells_dict = dict((cell['name'], cell) for cell in db_cells) self._refresh_cells_from_dict(db_cells_dict) self._update_our_capacity(ctxt) @sync_after def cell_create(self, ctxt, values): return self.db.cell_create(ctxt, values) @sync_after def cell_update(self, ctxt, cell_name, values): return self.db.cell_update(ctxt, cell_name, values) @sync_after def cell_delete(self, ctxt, cell_name): return self.db.cell_delete(ctxt, cell_name) class CellStateManagerFile(CellStateManager): def __init__(self, cell_state_cls, cells_config_path): self.cells_config_path = cells_config_path super(CellStateManagerFile, self).__init__(cell_state_cls) def _cell_data_sync(self, force=False): """Update cell status for all cells from the backing data store when necessary. :param force: If True, cell status will be updated regardless of whether it's time to do so. """ reloaded, data = fileutils.read_cached_file(self.cells_config_path, force_reload=force) if reloaded: LOG.debug(_("Updating cell cache from config file.")) self.cells_config_data = jsonutils.loads(data) self._refresh_cells_from_dict(self.cells_config_data) if force or self._time_to_sync(): self.last_cell_db_check = timeutils.utcnow() self._update_our_capacity() def cell_create(self, ctxt, values): raise exception.CellsUpdateProhibited() def cell_update(self, ctxt, cell_name, values): raise exception.CellsUpdateProhibited() def cell_delete(self, ctxt, cell_name): raise exception.CellsUpdateProhibited() nova-2014.1/nova/cells/messaging.py0000664000175400017540000024561512323721476020322 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2013 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. """ Cell messaging module. This module defines the different message types that are passed between cells and the methods that they can call when the target cell has been reached. The interface into this module is the MessageRunner class. """ import sys import traceback from eventlet import queue from oslo.config import cfg from oslo import messaging import six from nova.cells import state as cells_state from nova.cells import utils as cells_utils from nova import compute from nova.compute import rpcapi as compute_rpcapi from nova.compute import task_states from nova.compute import vm_states from nova.consoleauth import rpcapi as consoleauth_rpcapi from nova import context from nova.db import base from nova import exception from nova.network import model as network_model from nova.objects import base as objects_base from nova.objects import instance as instance_obj from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import rpc from nova import utils cell_messaging_opts = [ cfg.IntOpt('max_hop_count', default=10, help='Maximum number of hops for cells routing.'), cfg.StrOpt('scheduler', default='nova.cells.scheduler.CellsScheduler', help='Cells scheduler to use')] CONF = cfg.CONF CONF.import_opt('name', 'nova.cells.opts', group='cells') CONF.import_opt('call_timeout', 'nova.cells.opts', group='cells') CONF.register_opts(cell_messaging_opts, group='cells') LOG = logging.getLogger(__name__) # Separator used between cell names for the 'full cell name' and routing # path. _PATH_CELL_SEP = cells_utils.PATH_CELL_SEP def _reverse_path(path): """Reverse a path. Used for sending responses upstream.""" path_parts = path.split(_PATH_CELL_SEP) path_parts.reverse() return _PATH_CELL_SEP.join(path_parts) def _response_cell_name_from_path(routing_path, neighbor_only=False): """Reverse the routing_path. If we only want to send to our parent, set neighbor_only to True. """ path = _reverse_path(routing_path) if not neighbor_only or len(path) == 1: return path return _PATH_CELL_SEP.join(path.split(_PATH_CELL_SEP)[:2]) # # Message classes. # class _BaseMessage(object): """Base message class. It defines data that is passed with every single message through every cell. Messages are JSON-ified before sending and turned back into a class instance when being received. Every message has a unique ID. This is used to route responses back to callers. In the future, this might be used to detect receiving the same message more than once. routing_path is updated on every hop through a cell. The current cell name is appended to it (cells are separated by _PATH_CELL_SEP ('!')). This is used to tell if we've reached the target cell and also to determine the source of a message for responses by reversing it. hop_count is incremented and compared against max_hop_count. The only current usefulness of this is to break out of a routing loop if someone has a broken config. fanout means to send to all nova-cells services running in a cell. This is useful for capacity and capability broadcasting as well as making sure responses get back to the nova-cells service that is waiting. """ # Override message_type in a subclass message_type = None base_attrs_to_json = ['message_type', 'ctxt', 'method_name', 'method_kwargs', 'direction', 'need_response', 'fanout', 'uuid', 'routing_path', 'hop_count', 'max_hop_count'] def __init__(self, msg_runner, ctxt, method_name, method_kwargs, direction, need_response=False, fanout=False, uuid=None, routing_path=None, hop_count=0, max_hop_count=None, **kwargs): self.ctxt = ctxt self.resp_queue = None self.msg_runner = msg_runner self.state_manager = msg_runner.state_manager # Copy these. self.base_attrs_to_json = self.base_attrs_to_json[:] # Normally this would just be CONF.cells.name, but going through # the msg_runner allows us to stub it more easily. self.our_path_part = self.msg_runner.our_name self.uuid = uuid if self.uuid is None: self.uuid = uuidutils.generate_uuid() self.method_name = method_name self.method_kwargs = method_kwargs self.direction = direction self.need_response = need_response self.fanout = fanout self.routing_path = routing_path self.hop_count = hop_count if max_hop_count is None: max_hop_count = CONF.cells.max_hop_count self.max_hop_count = max_hop_count self.is_broadcast = False self._append_hop() # Each sub-class should set this when the message is inited self.next_hops = [] self.resp_queue = None self.serializer = objects_base.NovaObjectSerializer() def __repr__(self): _dict = self._to_dict() _dict.pop('method_kwargs') return "<%s: %s>" % (self.__class__.__name__, _dict) def _append_hop(self): """Add our hop to the routing_path.""" routing_path = (self.routing_path and self.routing_path + _PATH_CELL_SEP or '') self.routing_path = routing_path + self.our_path_part self.hop_count += 1 def _process_locally(self): """Its been determined that we should process this message in this cell. Go through the MessageRunner to call the appropriate method for this message. Catch the response and/or exception and encode it within a Response instance. Return it so the caller can potentially return it to another cell... or return it to a caller waiting in this cell. """ try: resp_value = self.msg_runner._process_message_locally(self) failure = False except Exception as exc: resp_value = sys.exc_info() failure = True LOG.exception(_("Error processing message locally: %(exc)s"), {'exc': exc}) return Response(self.routing_path, resp_value, failure) def _setup_response_queue(self): """Shortcut to creating a response queue in the MessageRunner.""" self.resp_queue = self.msg_runner._setup_response_queue(self) def _cleanup_response_queue(self): """Shortcut to deleting a response queue in the MessageRunner.""" if self.resp_queue: self.msg_runner._cleanup_response_queue(self) self.resp_queue = None def _wait_for_json_responses(self, num_responses=1): """Wait for response(s) to be put into the eventlet queue. Since each queue entry actually contains a list of JSON-ified responses, combine them all into a single list to return. Destroy the eventlet queue when done. """ if not self.resp_queue: # Source is not actually expecting a response return responses = [] wait_time = CONF.cells.call_timeout try: for x in xrange(num_responses): json_responses = self.resp_queue.get(timeout=wait_time) responses.extend(json_responses) except queue.Empty: raise exception.CellTimeout() finally: self._cleanup_response_queue() return responses def _send_json_responses(self, json_responses, neighbor_only=False, fanout=False): """Send list of responses to this message. Responses passed here are JSON-ified. Targeted messages have a single response while Broadcast messages may have multiple responses. If this cell was the source of the message, these responses will be returned from self.process(). Otherwise, we will route the response to the source of the request. If 'neighbor_only' is True, the response will be sent to the neighbor cell, not the original requester. Broadcast messages get aggregated at each hop, so neighbor_only will be True for those messages. """ if not self.need_response: return if self.source_is_us(): responses = [] for json_response in json_responses: responses.append(Response.from_json(json_response)) return responses direction = self.direction == 'up' and 'down' or 'up' response_kwargs = {'orig_message': self.to_json(), 'responses': json_responses} target_cell = _response_cell_name_from_path(self.routing_path, neighbor_only=neighbor_only) response = self.msg_runner._create_response_message(self.ctxt, direction, target_cell, self.uuid, response_kwargs, fanout=fanout) response.process() def _send_response(self, response, neighbor_only=False): """Send a response to this message. If the source of the request was ourselves, just return the response. It'll be passed back to the caller of self.process(). See DocString for _send_json_responses() as it handles most of the real work for this method. 'response' is an instance of Response class. """ if not self.need_response: return if self.source_is_us(): return response self._send_json_responses([response.to_json()], neighbor_only=neighbor_only) def _send_response_from_exception(self, exc_info): """Take an exception as returned from sys.exc_info(), encode it in a Response, and send it. """ response = Response(self.routing_path, exc_info, True) return self._send_response(response) def _to_dict(self): """Convert a message to a dictionary. Only used internally.""" _dict = {} for key in self.base_attrs_to_json: _dict[key] = getattr(self, key) return _dict def to_json(self): """Convert a message into JSON for sending to a sibling cell.""" _dict = self._to_dict() # Convert context to dict. _dict['ctxt'] = _dict['ctxt'].to_dict() # NOTE(comstud): 'method_kwargs' needs special serialization # because it may contain objects. method_kwargs = _dict['method_kwargs'] for k, v in method_kwargs.items(): method_kwargs[k] = self.serializer.serialize_entity(self.ctxt, v) return jsonutils.dumps(_dict) def source_is_us(self): """Did this cell create this message?""" return self.routing_path == self.our_path_part def process(self): """Process a message. Deal with it locally and/or forward it to a sibling cell. Override in a subclass. """ raise NotImplementedError() class _TargetedMessage(_BaseMessage): """A targeted message is a message that is destined for a specific single cell. 'target_cell' can be a full cell name like 'api!child-cell' or it can be an instance of the CellState class if the target is a neighbor cell. """ message_type = 'targeted' def __init__(self, msg_runner, ctxt, method_name, method_kwargs, direction, target_cell, **kwargs): super(_TargetedMessage, self).__init__(msg_runner, ctxt, method_name, method_kwargs, direction, **kwargs) if isinstance(target_cell, cells_state.CellState): # Neighbor cell or ourselves. Convert it to a 'full path'. if target_cell.is_me: target_cell = self.our_path_part else: target_cell = '%s%s%s' % (self.our_path_part, _PATH_CELL_SEP, target_cell.name) self.target_cell = target_cell self.base_attrs_to_json.append('target_cell') def _get_next_hop(self): """Return the cell name for the next hop. If the next hop is the current cell, return None. """ if self.target_cell == self.routing_path: return self.state_manager.my_cell_state target_cell = self.target_cell routing_path = self.routing_path current_hops = routing_path.count(_PATH_CELL_SEP) next_hop_num = current_hops + 1 dest_hops = target_cell.count(_PATH_CELL_SEP) if dest_hops < current_hops: reason_args = {'target_cell': target_cell, 'routing_path': routing_path} reason = _("destination is %(target_cell)s but routing_path " "is %(routing_path)s") % reason_args raise exception.CellRoutingInconsistency(reason=reason) dest_name_parts = target_cell.split(_PATH_CELL_SEP) if (_PATH_CELL_SEP.join(dest_name_parts[:next_hop_num]) != routing_path): reason_args = {'target_cell': target_cell, 'routing_path': routing_path} reason = _("destination is %(target_cell)s but routing_path " "is %(routing_path)s") % reason_args raise exception.CellRoutingInconsistency(reason=reason) next_hop_name = dest_name_parts[next_hop_num] if self.direction == 'up': next_hop = self.state_manager.get_parent_cell(next_hop_name) else: next_hop = self.state_manager.get_child_cell(next_hop_name) if not next_hop: cell_type = 'parent' if self.direction == 'up' else 'child' reason_args = {'cell_type': cell_type, 'target_cell': target_cell} reason = _("Unknown %(cell_type)s when routing to " "%(target_cell)s") % reason_args raise exception.CellRoutingInconsistency(reason=reason) return next_hop def process(self): """Process a targeted message. This is called for all cells that touch this message. If the local cell is the one that created this message, we reply directly with a Response instance. If the local cell is not the target, an eventlet queue is created and we wait for the response to show up via another thread receiving the Response back. Responses to targeted messages are routed directly back to the source. No eventlet queues are created in intermediate hops. All exceptions for processing the message across the whole routing path are caught and encoded within the Response and returned to the caller. """ try: next_hop = self._get_next_hop() except Exception as exc: exc_info = sys.exc_info() LOG.exception(_("Error locating next hop for message: %(exc)s"), {'exc': exc}) return self._send_response_from_exception(exc_info) if next_hop.is_me: # Final destination. response = self._process_locally() return self._send_response(response) # Need to forward via neighbor cell. if self.need_response and self.source_is_us(): # A response is needed and the source of the message is # this cell. Create the eventlet queue. self._setup_response_queue() wait_for_response = True else: wait_for_response = False try: # This is inside the try block, so we can encode the # exception and return it to the caller. if self.hop_count >= self.max_hop_count: raise exception.CellMaxHopCountReached( hop_count=self.hop_count) next_hop.send_message(self) except Exception as exc: exc_info = sys.exc_info() err_str = _("Failed to send message to cell: %(next_hop)s: " "%(exc)s") LOG.exception(err_str, {'exc': exc, 'next_hop': next_hop}) self._cleanup_response_queue() return self._send_response_from_exception(exc_info) if wait_for_response: # Targeted messages only have 1 response. remote_response = self._wait_for_json_responses()[0] return Response.from_json(remote_response) class _BroadcastMessage(_BaseMessage): """A broadcast message. This means to call a method in every single cell going in a certain direction. """ message_type = 'broadcast' def __init__(self, msg_runner, ctxt, method_name, method_kwargs, direction, run_locally=True, **kwargs): super(_BroadcastMessage, self).__init__(msg_runner, ctxt, method_name, method_kwargs, direction, **kwargs) # The local cell creating this message has the option # to be able to process the message locally or not. self.run_locally = run_locally self.is_broadcast = True def _get_next_hops(self): """Set the next hops and return the number of hops. The next hops may include ourself. """ if self.hop_count >= self.max_hop_count: return [] if self.direction == 'down': return self.state_manager.get_child_cells() else: return self.state_manager.get_parent_cells() def _send_to_cells(self, target_cells): """Send a message to multiple cells.""" for cell in target_cells: cell.send_message(self) def _send_json_responses(self, json_responses): """Responses to broadcast messages always need to go to the neighbor cell from which we received this message. That cell aggregates the responses and makes sure to forward them to the correct source. """ return super(_BroadcastMessage, self)._send_json_responses( json_responses, neighbor_only=True, fanout=True) def process(self): """Process a broadcast message. This is called for all cells that touch this message. The message is sent to all cells in the certain direction and the creator of this message has the option of whether or not to process it locally as well. If responses from all cells are required, each hop creates an eventlet queue and waits for responses from its immediate neighbor cells. All responses are then aggregated into a single list and are returned to the neighbor cell until the source is reached. When the source is reached, a list of Response instances are returned to the caller. All exceptions for processing the message across the whole routing path are caught and encoded within the Response and returned to the caller. It is possible to get a mix of successful responses and failure responses. The caller is responsible for dealing with this. """ try: next_hops = self._get_next_hops() except Exception as exc: exc_info = sys.exc_info() LOG.exception(_("Error locating next hops for message: %(exc)s"), {'exc': exc}) return self._send_response_from_exception(exc_info) # Short circuit if we don't need to respond if not self.need_response: if self.run_locally: self._process_locally() self._send_to_cells(next_hops) return # We'll need to aggregate all of the responses (from ourself # and our sibling cells) into 1 response try: self._setup_response_queue() self._send_to_cells(next_hops) except Exception as exc: # Error just trying to send to cells. Send a single response # with the failure. exc_info = sys.exc_info() LOG.exception(_("Error sending message to next hops: %(exc)s"), {'exc': exc}) self._cleanup_response_queue() return self._send_response_from_exception(exc_info) if self.run_locally: # Run locally and store the Response. local_response = self._process_locally() else: local_response = None try: remote_responses = self._wait_for_json_responses( num_responses=len(next_hops)) except Exception as exc: # Error waiting for responses, most likely a timeout. # Send a single response back with the failure. exc_info = sys.exc_info() err_str = _("Error waiting for responses from neighbor cells: " "%(exc)s") LOG.exception(err_str, {'exc': exc}) return self._send_response_from_exception(exc_info) if local_response: remote_responses.append(local_response.to_json()) return self._send_json_responses(remote_responses) class _ResponseMessage(_TargetedMessage): """A response message is really just a special targeted message, saying to call 'parse_responses' when we reach the source of a 'call'. The 'fanout' attribute on this message may be true if we're responding to a broadcast or if we're about to respond to the source of an original target message. Because multiple nova-cells services may be running within a cell, we need to make sure the response gets back to the correct one, so we have to fanout. """ message_type = 'response' def __init__(self, msg_runner, ctxt, method_name, method_kwargs, direction, target_cell, response_uuid, **kwargs): super(_ResponseMessage, self).__init__(msg_runner, ctxt, method_name, method_kwargs, direction, target_cell, **kwargs) self.response_uuid = response_uuid self.base_attrs_to_json.append('response_uuid') def process(self): """Process a response. If the target is the local cell, process the response here. Otherwise, forward it to where it needs to go. """ next_hop = self._get_next_hop() if next_hop.is_me: self._process_locally() return if self.fanout is False: # Really there's 1 more hop on each of these below, but # it doesn't matter for this logic. target_hops = self.target_cell.count(_PATH_CELL_SEP) current_hops = self.routing_path.count(_PATH_CELL_SEP) if current_hops + 1 == target_hops: # Next hop is the target.. so we must fanout. See # DocString above. self.fanout = True next_hop.send_message(self) # # Methods that may be called when processing messages after reaching # a target cell. # class _BaseMessageMethods(base.Base): """Base class for defining methods by message types.""" def __init__(self, msg_runner): super(_BaseMessageMethods, self).__init__() self.msg_runner = msg_runner self.state_manager = msg_runner.state_manager self.compute_api = compute.API() self.compute_rpcapi = compute_rpcapi.ComputeAPI() self.consoleauth_rpcapi = consoleauth_rpcapi.ConsoleAuthAPI() self.host_api = compute.HostAPI() def task_log_get_all(self, message, task_name, period_beginning, period_ending, host, state): """Get task logs from the DB. The message could have directly targeted this cell, or it could have been a broadcast message. If 'host' is not None, filter by host. If 'state' is not None, filter by state. """ task_logs = self.db.task_log_get_all(message.ctxt, task_name, period_beginning, period_ending, host=host, state=state) return jsonutils.to_primitive(task_logs) class _ResponseMessageMethods(_BaseMessageMethods): """Methods that are called from a ResponseMessage. There's only 1 method (parse_responses) and it is called when the message reaches the source of a 'call'. All we do is stuff the response into the eventlet queue to signal the caller that's waiting. """ def parse_responses(self, message, orig_message, responses): self.msg_runner._put_response(message.response_uuid, responses) class _TargetedMessageMethods(_BaseMessageMethods): """These are the methods that can be called when routing a message to a specific cell. """ def __init__(self, *args, **kwargs): super(_TargetedMessageMethods, self).__init__(*args, **kwargs) def schedule_run_instance(self, message, host_sched_kwargs): """Parent cell told us to schedule new instance creation.""" self.msg_runner.scheduler.run_instance(message, host_sched_kwargs) def build_instances(self, message, build_inst_kwargs): """Parent cell told us to schedule new instance creation.""" self.msg_runner.scheduler.build_instances(message, build_inst_kwargs) def run_compute_api_method(self, message, method_info): """Run a method in the compute api class.""" method = method_info['method'] fn = getattr(self.compute_api, method, None) if not fn: detail = _("Unknown method '%(method)s' in compute API") raise exception.CellServiceAPIMethodNotFound( detail=detail % {'method': method}) args = list(method_info['method_args']) # 1st arg is instance_uuid that we need to turn into the # instance object. instance_uuid = args[0] try: instance = self.db.instance_get_by_uuid(message.ctxt, instance_uuid) except exception.InstanceNotFound: with excutils.save_and_reraise_exception(): # Must be a race condition. Let's try to resolve it by # telling the top level cells that this instance doesn't # exist. instance = {'uuid': instance_uuid} self.msg_runner.instance_destroy_at_top(message.ctxt, instance) # FIXME(comstud): This is temporary/transitional until I can # work out a better way to pass full objects down. EXPECTS_OBJECTS = ['start', 'stop', 'delete_instance_metadata', 'update_instance_metadata'] if method in EXPECTS_OBJECTS: inst_obj = instance_obj.Instance() inst_obj._from_db_object(message.ctxt, inst_obj, instance) instance = inst_obj args[0] = instance return fn(message.ctxt, *args, **method_info['method_kwargs']) def update_capabilities(self, message, cell_name, capabilities): """A child cell told us about their capabilities.""" LOG.debug(_("Received capabilities from child cell " "%(cell_name)s: %(capabilities)s"), {'cell_name': cell_name, 'capabilities': capabilities}) self.state_manager.update_cell_capabilities(cell_name, capabilities) # Go ahead and update our parents now that a child updated us self.msg_runner.tell_parents_our_capabilities(message.ctxt) def update_capacities(self, message, cell_name, capacities): """A child cell told us about their capacity.""" LOG.debug(_("Received capacities from child cell " "%(cell_name)s: %(capacities)s"), {'cell_name': cell_name, 'capacities': capacities}) self.state_manager.update_cell_capacities(cell_name, capacities) # Go ahead and update our parents now that a child updated us self.msg_runner.tell_parents_our_capacities(message.ctxt) def announce_capabilities(self, message): """A parent cell has told us to send our capabilities, so let's do so. """ self.msg_runner.tell_parents_our_capabilities(message.ctxt) def announce_capacities(self, message): """A parent cell has told us to send our capacity, so let's do so. """ self.msg_runner.tell_parents_our_capacities(message.ctxt) def service_get_by_compute_host(self, message, host_name): """Return the service entry for a compute host.""" service = self.db.service_get_by_compute_host(message.ctxt, host_name) return jsonutils.to_primitive(service) def service_update(self, message, host_name, binary, params_to_update): """Used to enable/disable a service. For compute services, setting to disabled stops new builds arriving on that host. :param host_name: the name of the host machine that the service is running :param binary: The name of the executable that the service runs as :param params_to_update: eg. {'disabled': True} """ return jsonutils.to_primitive( self.host_api.service_update(message.ctxt, host_name, binary, params_to_update)) def service_delete(self, message, service_id): """Deletes the specified service.""" self.host_api.service_delete(message.ctxt, service_id) def proxy_rpc_to_manager(self, message, host_name, rpc_message, topic, timeout): """Proxy RPC to the given compute topic.""" # Check that the host exists. self.db.service_get_by_compute_host(message.ctxt, host_name) topic, _sep, server = topic.partition('.') cctxt = rpc.get_client(messaging.Target(topic=topic, server=server or None)) method = rpc_message['method'] kwargs = rpc_message['args'] if message.need_response: cctxt = cctxt.prepare(timeout=timeout) return cctxt.call(message.ctxt, method, **kwargs) else: cctxt.cast(message.ctxt, method, **kwargs) def compute_node_get(self, message, compute_id): """Get compute node by ID.""" compute_node = self.db.compute_node_get(message.ctxt, compute_id) return jsonutils.to_primitive(compute_node) def actions_get(self, message, instance_uuid): actions = self.db.actions_get(message.ctxt, instance_uuid) return jsonutils.to_primitive(actions) def action_get_by_request_id(self, message, instance_uuid, request_id): action = self.db.action_get_by_request_id(message.ctxt, instance_uuid, request_id) return jsonutils.to_primitive(action) def action_events_get(self, message, action_id): action_events = self.db.action_events_get(message.ctxt, action_id) return jsonutils.to_primitive(action_events) def validate_console_port(self, message, instance_uuid, console_port, console_type): """Validate console port with child cell compute node.""" # 1st arg is instance_uuid that we need to turn into the # instance object. try: instance = self.db.instance_get_by_uuid(message.ctxt, instance_uuid) except exception.InstanceNotFound: with excutils.save_and_reraise_exception(): # Must be a race condition. Let's try to resolve it by # telling the top level cells that this instance doesn't # exist. instance = {'uuid': instance_uuid} self.msg_runner.instance_destroy_at_top(message.ctxt, instance) return self.compute_rpcapi.validate_console_port(message.ctxt, instance, console_port, console_type) def get_migrations(self, message, filters): return self.compute_api.get_migrations(message.ctxt, filters) def instance_update_from_api(self, message, instance, expected_vm_state, expected_task_state, admin_state_reset): """Update an instance in this cell.""" if not admin_state_reset: # NOTE(comstud): We don't want to nuke this cell's view # of vm_state and task_state unless it's a forced reset # via admin API. instance.obj_reset_changes(['vm_state', 'task_state']) # NOTE(alaski): A cell should be authoritative for its system_metadata # and metadata so we don't want to sync it down from the api. instance.obj_reset_changes(['metadata', 'system_metadata']) instance.save(message.ctxt, expected_vm_state=expected_vm_state, expected_task_state=expected_task_state) def _call_compute_api_with_obj(self, ctxt, instance, method, *args, **kwargs): try: # NOTE(comstud): We need to refresh the instance from this # cell's view in the DB. instance.refresh(ctxt) except exception.InstanceNotFound: with excutils.save_and_reraise_exception(): # Must be a race condition. Let's try to resolve it by # telling the top level cells that this instance doesn't # exist. instance = {'uuid': instance.uuid} self.msg_runner.instance_destroy_at_top(ctxt, instance) fn = getattr(self.compute_api, method, None) return fn(ctxt, instance, *args, **kwargs) def start_instance(self, message, instance): """Start an instance via compute_api.start().""" self._call_compute_api_with_obj(message.ctxt, instance, 'start') def stop_instance(self, message, instance): """Stop an instance via compute_api.stop().""" do_cast = not message.need_response return self._call_compute_api_with_obj(message.ctxt, instance, 'stop', do_cast=do_cast) def reboot_instance(self, message, instance, reboot_type): """Reboot an instance via compute_api.reboot().""" self._call_compute_api_with_obj(message.ctxt, instance, 'reboot', reboot_type=reboot_type) def suspend_instance(self, message, instance): """Suspend an instance via compute_api.suspend().""" self._call_compute_api_with_obj(message.ctxt, instance, 'suspend') def resume_instance(self, message, instance): """Resume an instance via compute_api.suspend().""" self._call_compute_api_with_obj(message.ctxt, instance, 'resume') def get_host_uptime(self, message, host_name): return self.host_api.get_host_uptime(message.ctxt, host_name) def terminate_instance(self, message, instance): self._call_compute_api_with_obj(message.ctxt, instance, 'delete') def soft_delete_instance(self, message, instance): self._call_compute_api_with_obj(message.ctxt, instance, 'soft_delete') def pause_instance(self, message, instance): """Pause an instance via compute_api.pause().""" self._call_compute_api_with_obj(message.ctxt, instance, 'pause') def unpause_instance(self, message, instance): """Unpause an instance via compute_api.pause().""" self._call_compute_api_with_obj(message.ctxt, instance, 'unpause') def resize_instance(self, message, instance, flavor, extra_instance_updates): """Resize an instance via compute_api.resize().""" self._call_compute_api_with_obj(message.ctxt, instance, 'resize', flavor_id=flavor['flavorid'], **extra_instance_updates) def live_migrate_instance(self, message, instance, block_migration, disk_over_commit, host_name): """Live migrate an instance via compute_api.live_migrate().""" self._call_compute_api_with_obj(message.ctxt, instance, 'live_migrate', block_migration, disk_over_commit, host_name) def revert_resize(self, message, instance): """Revert a resize for an instance in its cell.""" self._call_compute_api_with_obj(message.ctxt, instance, 'revert_resize') def confirm_resize(self, message, instance): """Confirm a resize for an instance in its cell.""" self._call_compute_api_with_obj(message.ctxt, instance, 'confirm_resize') def reset_network(self, message, instance): """Reset networking for an instance in its cell.""" self._call_compute_api_with_obj(message.ctxt, instance, 'reset_network') def inject_network_info(self, message, instance): """Inject networking for an instance in its cell.""" self._call_compute_api_with_obj(message.ctxt, instance, 'inject_network_info') def snapshot_instance(self, message, instance, image_id): """Snapshot an instance in its cell.""" instance.refresh() instance.task_state = task_states.IMAGE_SNAPSHOT_PENDING instance.save(expected_task_state=[None]) self.compute_rpcapi.snapshot_instance(message.ctxt, instance, image_id) def backup_instance(self, message, instance, image_id, backup_type, rotation): """Backup an instance in its cell.""" instance.refresh() instance.task_state = task_states.IMAGE_BACKUP instance.save(expected_task_state=[None]) self.compute_rpcapi.backup_instance(message.ctxt, instance, image_id, backup_type, rotation) def rebuild_instance(self, message, instance, image_href, admin_password, files_to_inject, preserve_ephemeral, kwargs): kwargs['preserve_ephemeral'] = preserve_ephemeral self._call_compute_api_with_obj(message.ctxt, instance, 'rebuild', image_href, admin_password, files_to_inject, **kwargs) class _BroadcastMessageMethods(_BaseMessageMethods): """These are the methods that can be called as a part of a broadcast message. """ def _at_the_top(self): """Are we the API level?""" return not self.state_manager.get_parent_cells() def _apply_expected_states(self, instance_info): """To attempt to address out-of-order messages, do some sanity checking on the VM and task states. Add some requirements for vm_state and task_state to the instance_update() DB call if necessary. """ expected_vm_state_map = { # For updates containing 'vm_state' of 'building', # only allow them to occur if the DB already says # 'building' or if the vm_state is None. None # really shouldn't be possible as instances always # start out in 'building' anyway.. but just in case. vm_states.BUILDING: [vm_states.BUILDING, None]} expected_task_state_map = { # Always allow updates when task_state doesn't change, # but also make sure we don't set resize/rebuild task # states for old messages when we've potentially already # processed the ACTIVE/None messages. Ie, these checks # will prevent stomping on any ACTIVE/None messages # we already processed. task_states.REBUILD_BLOCK_DEVICE_MAPPING: [task_states.REBUILD_BLOCK_DEVICE_MAPPING, task_states.REBUILDING], task_states.REBUILD_SPAWNING: [task_states.REBUILD_SPAWNING, task_states.REBUILD_BLOCK_DEVICE_MAPPING, task_states.REBUILDING], task_states.RESIZE_MIGRATING: [task_states.RESIZE_MIGRATING, task_states.RESIZE_PREP], task_states.RESIZE_MIGRATED: [task_states.RESIZE_MIGRATED, task_states.RESIZE_MIGRATING, task_states.RESIZE_PREP], task_states.RESIZE_FINISH: [task_states.RESIZE_FINISH, task_states.RESIZE_MIGRATED, task_states.RESIZE_MIGRATING, task_states.RESIZE_PREP]} if 'vm_state' in instance_info: expected = expected_vm_state_map.get(instance_info['vm_state']) if expected is not None: instance_info['expected_vm_state'] = expected if 'task_state' in instance_info: expected = expected_task_state_map.get(instance_info['task_state']) if expected is not None: instance_info['expected_task_state'] = expected def instance_update_at_top(self, message, instance, **kwargs): """Update an instance in the DB if we're a top level cell.""" if not self._at_the_top(): return instance_uuid = instance['uuid'] # Remove things that we can't update in the top level cells. # 'metadata' is only updated in the API cell, so don't overwrite # it based on what child cells say. Make sure to update # 'cell_name' based on the routing path. items_to_remove = ['id', 'security_groups', 'volumes', 'cell_name', 'name', 'metadata'] for key in items_to_remove: instance.pop(key, None) instance['cell_name'] = _reverse_path(message.routing_path) # Fixup info_cache. We'll have to update this separately if # it exists. info_cache = instance.pop('info_cache', None) if info_cache is not None: info_cache.pop('id', None) info_cache.pop('instance', None) if 'system_metadata' in instance: # Make sure we have the dict form that we need for # instance_update. instance['system_metadata'] = utils.instance_sys_meta(instance) LOG.debug(_("Got update for instance: %(instance)s"), {'instance': instance}, instance_uuid=instance_uuid) self._apply_expected_states(instance) # It's possible due to some weird condition that the instance # was already set as deleted... so we'll attempt to update # it with permissions that allows us to read deleted. with utils.temporary_mutation(message.ctxt, read_deleted="yes"): try: self.db.instance_update(message.ctxt, instance_uuid, instance, update_cells=False) except exception.NotFound: # FIXME(comstud): Strange. Need to handle quotas here, # if we actually want this code to remain.. self.db.instance_create(message.ctxt, instance) if info_cache: network_info = info_cache.get('network_info') if isinstance(network_info, list): if not isinstance(network_info, network_model.NetworkInfo): network_info = network_model.NetworkInfo.hydrate( network_info) info_cache['network_info'] = network_info.json() try: self.db.instance_info_cache_update( message.ctxt, instance_uuid, info_cache) except exception.InstanceInfoCacheNotFound: # Can happen if we try to update a deleted instance's # network information. pass def instance_destroy_at_top(self, message, instance, **kwargs): """Destroy an instance from the DB if we're a top level cell.""" if not self._at_the_top(): return instance_uuid = instance['uuid'] LOG.debug(_("Got update to delete instance"), instance_uuid=instance_uuid) try: self.db.instance_destroy(message.ctxt, instance_uuid, update_cells=False) except exception.InstanceNotFound: pass def instance_delete_everywhere(self, message, instance, delete_type, **kwargs): """Call compute API delete() or soft_delete() in every cell. This is used when the API cell doesn't know what cell an instance belongs to but the instance was requested to be deleted or soft-deleted. So, we'll run it everywhere. """ LOG.debug(_("Got broadcast to %(delete_type)s delete instance"), {'delete_type': delete_type}, instance=instance) if delete_type == 'soft': self.compute_api.soft_delete(message.ctxt, instance) else: self.compute_api.delete(message.ctxt, instance) def instance_fault_create_at_top(self, message, instance_fault, **kwargs): """Destroy an instance from the DB if we're a top level cell.""" if not self._at_the_top(): return items_to_remove = ['id'] for key in items_to_remove: instance_fault.pop(key, None) log_str = _("Got message to create instance fault: " "%(instance_fault)s") LOG.debug(log_str, {'instance_fault': instance_fault}) self.db.instance_fault_create(message.ctxt, instance_fault) def bw_usage_update_at_top(self, message, bw_update_info, **kwargs): """Update Bandwidth usage in the DB if we're a top level cell.""" if not self._at_the_top(): return self.db.bw_usage_update(message.ctxt, **bw_update_info) def _sync_instance(self, ctxt, instance): if instance['deleted']: self.msg_runner.instance_destroy_at_top(ctxt, instance) else: self.msg_runner.instance_update_at_top(ctxt, instance) def sync_instances(self, message, project_id, updated_since, deleted, **kwargs): projid_str = project_id is None and "" or project_id since_str = updated_since is None and "" or updated_since LOG.info(_("Forcing a sync of instances, project_id=" "%(projid_str)s, updated_since=%(since_str)s"), {'projid_str': projid_str, 'since_str': since_str}) if updated_since is not None: updated_since = timeutils.parse_isotime(updated_since) instances = cells_utils.get_instances_to_sync(message.ctxt, updated_since=updated_since, project_id=project_id, deleted=deleted) for instance in instances: self._sync_instance(message.ctxt, instance) def service_get_all(self, message, filters): if filters is None: filters = {} disabled = filters.pop('disabled', None) services = self.db.service_get_all(message.ctxt, disabled=disabled) ret_services = [] for service in services: service = jsonutils.to_primitive(service) for key, val in filters.iteritems(): if service[key] != val: break else: ret_services.append(service) return ret_services def compute_node_get_all(self, message, hypervisor_match): """Return compute nodes in this cell.""" if hypervisor_match is not None: nodes = self.db.compute_node_search_by_hypervisor(message.ctxt, hypervisor_match) else: nodes = self.db.compute_node_get_all(message.ctxt) return jsonutils.to_primitive(nodes) def compute_node_stats(self, message): """Return compute node stats from this cell.""" return self.db.compute_node_statistics(message.ctxt) def consoleauth_delete_tokens(self, message, instance_uuid): """Delete consoleauth tokens for an instance in API cells.""" if not self._at_the_top(): return self.consoleauth_rpcapi.delete_tokens_for_instance(message.ctxt, instance_uuid) def bdm_update_or_create_at_top(self, message, bdm, create): """Create or update a block device mapping in API cells. If create is True, only try to create. If create is None, try to update but fall back to create. If create is False, only attempt to update. This maps to nova-conductor's behavior. """ if not self._at_the_top(): return items_to_remove = ['id'] for key in items_to_remove: bdm.pop(key, None) if create is None: self.db.block_device_mapping_update_or_create(message.ctxt, bdm, legacy=False) return elif create is True: self.db.block_device_mapping_create(message.ctxt, bdm, legacy=False) return # Unfortunately this update call wants BDM ID... but we don't know # what it is in this cell. Search for it.. try matching either # device_name or volume_id. dev_name = bdm['device_name'] vol_id = bdm['volume_id'] instance_bdms = self.db.block_device_mapping_get_all_by_instance( message.ctxt, bdm['instance_uuid']) for instance_bdm in instance_bdms: if dev_name and instance_bdm['device_name'] == dev_name: break if vol_id and instance_bdm['volume_id'] == vol_id: break else: LOG.warn(_("No match when trying to update BDM: %(bdm)s"), dict(bdm=bdm)) return self.db.block_device_mapping_update(message.ctxt, instance_bdm['id'], bdm, legacy=False) def bdm_destroy_at_top(self, message, instance_uuid, device_name, volume_id): """Destroy a block device mapping in API cells by device name or volume_id. device_name or volume_id can be None, but not both. """ if not self._at_the_top(): return if device_name: self.db.block_device_mapping_destroy_by_instance_and_device( message.ctxt, instance_uuid, device_name) elif volume_id: self.db.block_device_mapping_destroy_by_instance_and_volume( message.ctxt, instance_uuid, volume_id) def get_migrations(self, message, filters): context = message.ctxt return self.compute_api.get_migrations(context, filters) _CELL_MESSAGE_TYPE_TO_MESSAGE_CLS = {'targeted': _TargetedMessage, 'broadcast': _BroadcastMessage, 'response': _ResponseMessage} _CELL_MESSAGE_TYPE_TO_METHODS_CLS = {'targeted': _TargetedMessageMethods, 'broadcast': _BroadcastMessageMethods, 'response': _ResponseMessageMethods} # # Below are the public interfaces into this module. # class MessageRunner(object): """This class is the main interface into creating messages and processing them. Public methods in this class are typically called by the CellsManager to create a new message and process it with the exception of 'message_from_json' which should be used by CellsDrivers to convert a JSONified message it has received back into the appropriate Message class. Private methods are used internally when we need to keep some 'global' state. For instance, eventlet queues used for responses are held in this class. Also, when a Message is process()ed above and it's determined we should take action locally, _process_message_locally() will be called. When needing to add a new method to call in a Cell2Cell message, define the new method below and also add it to the appropriate MessageMethods class where the real work will be done. """ def __init__(self, state_manager): self.state_manager = state_manager cells_scheduler_cls = importutils.import_class( CONF.cells.scheduler) self.scheduler = cells_scheduler_cls(self) self.response_queues = {} self.methods_by_type = {} self.our_name = CONF.cells.name for msg_type, cls in _CELL_MESSAGE_TYPE_TO_METHODS_CLS.iteritems(): self.methods_by_type[msg_type] = cls(self) self.serializer = objects_base.NovaObjectSerializer() def _process_message_locally(self, message): """Message processing will call this when its determined that the message should be processed within this cell. Find the method to call based on the message type, and call it. The caller is responsible for catching exceptions and returning results to cells, if needed. """ methods = self.methods_by_type[message.message_type] fn = getattr(methods, message.method_name) return fn(message, **message.method_kwargs) def _put_response(self, response_uuid, response): """Put a response into a response queue. This is called when a _ResponseMessage is processed in the cell that initiated a 'call' to another cell. """ resp_queue = self.response_queues.get(response_uuid) if not resp_queue: # Response queue is gone. We must have restarted or we # received a response after our timeout period. return resp_queue.put(response) def _setup_response_queue(self, message): """Set up an eventlet queue to use to wait for replies. Replies come back from the target cell as a _ResponseMessage being sent back to the source. """ resp_queue = queue.Queue() self.response_queues[message.uuid] = resp_queue return resp_queue def _cleanup_response_queue(self, message): """Stop tracking the response queue either because we're done receiving responses, or we've timed out. """ try: del self.response_queues[message.uuid] except KeyError: # Ignore if queue is gone already somehow. pass def _create_response_message(self, ctxt, direction, target_cell, response_uuid, response_kwargs, **kwargs): """Create a ResponseMessage. This is used internally within the nova.cells.messaging module. """ return _ResponseMessage(self, ctxt, 'parse_responses', response_kwargs, direction, target_cell, response_uuid, **kwargs) def _get_migrations_for_cell(self, ctxt, cell_name, filters): method_kwargs = dict(filters=filters) message = _TargetedMessage(self, ctxt, 'get_migrations', method_kwargs, 'down', cell_name, need_response=True) response = message.process() if response.failure and isinstance(response.value[1], exception.CellRoutingInconsistency): return [] return [response] def message_from_json(self, json_message): """Turns a message in JSON format into an appropriate Message instance. This is called when cells receive a message from another cell. """ message_dict = jsonutils.loads(json_message) # Need to convert context back. ctxt = message_dict['ctxt'] message_dict['ctxt'] = context.RequestContext.from_dict(ctxt) # NOTE(comstud): We also need to re-serialize any objects that # exist in 'method_kwargs'. method_kwargs = message_dict['method_kwargs'] for k, v in method_kwargs.items(): method_kwargs[k] = self.serializer.deserialize_entity( message_dict['ctxt'], v) message_type = message_dict.pop('message_type') message_cls = _CELL_MESSAGE_TYPE_TO_MESSAGE_CLS[message_type] return message_cls(self, **message_dict) def ask_children_for_capabilities(self, ctxt): """Tell child cells to send us capabilities. This is typically called on startup of the nova-cells service. """ child_cells = self.state_manager.get_child_cells() for child_cell in child_cells: message = _TargetedMessage(self, ctxt, 'announce_capabilities', dict(), 'down', child_cell) message.process() def ask_children_for_capacities(self, ctxt): """Tell child cells to send us capacities. This is typically called on startup of the nova-cells service. """ child_cells = self.state_manager.get_child_cells() for child_cell in child_cells: message = _TargetedMessage(self, ctxt, 'announce_capacities', dict(), 'down', child_cell) message.process() def tell_parents_our_capabilities(self, ctxt): """Send our capabilities to parent cells.""" parent_cells = self.state_manager.get_parent_cells() if not parent_cells: return my_cell_info = self.state_manager.get_my_state() capabs = self.state_manager.get_our_capabilities() LOG.debug(_("Updating parents with our capabilities: %(capabs)s"), {'capabs': capabs}) # We have to turn the sets into lists so they can potentially # be json encoded when the raw message is sent. for key, values in capabs.items(): capabs[key] = list(values) method_kwargs = {'cell_name': my_cell_info.name, 'capabilities': capabs} for cell in parent_cells: message = _TargetedMessage(self, ctxt, 'update_capabilities', method_kwargs, 'up', cell, fanout=True) message.process() def tell_parents_our_capacities(self, ctxt): """Send our capacities to parent cells.""" parent_cells = self.state_manager.get_parent_cells() if not parent_cells: return my_cell_info = self.state_manager.get_my_state() capacities = self.state_manager.get_our_capacities() LOG.debug(_("Updating parents with our capacities: %(capacities)s"), {'capacities': capacities}) method_kwargs = {'cell_name': my_cell_info.name, 'capacities': capacities} for cell in parent_cells: message = _TargetedMessage(self, ctxt, 'update_capacities', method_kwargs, 'up', cell, fanout=True) message.process() def schedule_run_instance(self, ctxt, target_cell, host_sched_kwargs): """Called by the scheduler to tell a child cell to schedule a new instance for build. """ method_kwargs = dict(host_sched_kwargs=host_sched_kwargs) message = _TargetedMessage(self, ctxt, 'schedule_run_instance', method_kwargs, 'down', target_cell) message.process() def build_instances(self, ctxt, target_cell, build_inst_kwargs): """Called by the cell scheduler to tell a child cell to build instance(s). """ method_kwargs = dict(build_inst_kwargs=build_inst_kwargs) message = _TargetedMessage(self, ctxt, 'build_instances', method_kwargs, 'down', target_cell) message.process() def run_compute_api_method(self, ctxt, cell_name, method_info, call): """Call a compute API method in a specific cell.""" message = _TargetedMessage(self, ctxt, 'run_compute_api_method', dict(method_info=method_info), 'down', cell_name, need_response=call) return message.process() def instance_update_at_top(self, ctxt, instance): """Update an instance at the top level cell.""" message = _BroadcastMessage(self, ctxt, 'instance_update_at_top', dict(instance=instance), 'up', run_locally=False) message.process() def instance_destroy_at_top(self, ctxt, instance): """Destroy an instance at the top level cell.""" message = _BroadcastMessage(self, ctxt, 'instance_destroy_at_top', dict(instance=instance), 'up', run_locally=False) message.process() def instance_delete_everywhere(self, ctxt, instance, delete_type): """This is used by API cell when it didn't know what cell an instance was in, but the instance was requested to be deleted or soft_deleted. So, we'll broadcast this everywhere. """ method_kwargs = dict(instance=instance, delete_type=delete_type) message = _BroadcastMessage(self, ctxt, 'instance_delete_everywhere', method_kwargs, 'down', run_locally=False) message.process() def instance_fault_create_at_top(self, ctxt, instance_fault): """Create an instance fault at the top level cell.""" message = _BroadcastMessage(self, ctxt, 'instance_fault_create_at_top', dict(instance_fault=instance_fault), 'up', run_locally=False) message.process() def bw_usage_update_at_top(self, ctxt, bw_update_info): """Update bandwidth usage at top level cell.""" message = _BroadcastMessage(self, ctxt, 'bw_usage_update_at_top', dict(bw_update_info=bw_update_info), 'up', run_locally=False) message.process() def sync_instances(self, ctxt, project_id, updated_since, deleted): """Force a sync of all instances, potentially by project_id, and potentially since a certain date/time. """ method_kwargs = dict(project_id=project_id, updated_since=updated_since, deleted=deleted) message = _BroadcastMessage(self, ctxt, 'sync_instances', method_kwargs, 'down', run_locally=False) message.process() def service_get_all(self, ctxt, filters=None): method_kwargs = dict(filters=filters) message = _BroadcastMessage(self, ctxt, 'service_get_all', method_kwargs, 'down', run_locally=True, need_response=True) return message.process() def service_get_by_compute_host(self, ctxt, cell_name, host_name): method_kwargs = dict(host_name=host_name) message = _TargetedMessage(self, ctxt, 'service_get_by_compute_host', method_kwargs, 'down', cell_name, need_response=True) return message.process() def get_host_uptime(self, ctxt, cell_name, host_name): method_kwargs = dict(host_name=host_name) message = _TargetedMessage(self, ctxt, 'get_host_uptime', method_kwargs, 'down', cell_name, need_response=True) return message.process() def service_update(self, ctxt, cell_name, host_name, binary, params_to_update): """Used to enable/disable a service. For compute services, setting to disabled stops new builds arriving on that host. :param host_name: the name of the host machine that the service is running :param binary: The name of the executable that the service runs as :param params_to_update: eg. {'disabled': True} :returns: the update service object """ method_kwargs = dict(host_name=host_name, binary=binary, params_to_update=params_to_update) message = _TargetedMessage(self, ctxt, 'service_update', method_kwargs, 'down', cell_name, need_response=True) return message.process() def service_delete(self, ctxt, cell_name, service_id): """Deletes the specified service.""" method_kwargs = {'service_id': service_id} message = _TargetedMessage(self, ctxt, 'service_delete', method_kwargs, 'down', cell_name, need_response=True) message.process() def proxy_rpc_to_manager(self, ctxt, cell_name, host_name, topic, rpc_message, call, timeout): method_kwargs = {'host_name': host_name, 'topic': topic, 'rpc_message': rpc_message, 'timeout': timeout} message = _TargetedMessage(self, ctxt, 'proxy_rpc_to_manager', method_kwargs, 'down', cell_name, need_response=call) return message.process() def task_log_get_all(self, ctxt, cell_name, task_name, period_beginning, period_ending, host=None, state=None): """Get task logs from the DB from all cells or a particular cell. If 'cell_name' is None or '', get responses from all cells. If 'host' is not None, filter by host. If 'state' is not None, filter by state. Return a list of Response objects. """ method_kwargs = dict(task_name=task_name, period_beginning=period_beginning, period_ending=period_ending, host=host, state=state) if cell_name: message = _TargetedMessage(self, ctxt, 'task_log_get_all', method_kwargs, 'down', cell_name, need_response=True) # Caller should get a list of Responses. return [message.process()] message = _BroadcastMessage(self, ctxt, 'task_log_get_all', method_kwargs, 'down', run_locally=True, need_response=True) return message.process() def compute_node_get_all(self, ctxt, hypervisor_match=None): """Return list of compute nodes in all child cells.""" method_kwargs = dict(hypervisor_match=hypervisor_match) message = _BroadcastMessage(self, ctxt, 'compute_node_get_all', method_kwargs, 'down', run_locally=True, need_response=True) return message.process() def compute_node_stats(self, ctxt): """Return compute node stats from all child cells.""" method_kwargs = dict() message = _BroadcastMessage(self, ctxt, 'compute_node_stats', method_kwargs, 'down', run_locally=True, need_response=True) return message.process() def compute_node_get(self, ctxt, cell_name, compute_id): """Return compute node entry from a specific cell by ID.""" method_kwargs = dict(compute_id=compute_id) message = _TargetedMessage(self, ctxt, 'compute_node_get', method_kwargs, 'down', cell_name, need_response=True) return message.process() def actions_get(self, ctxt, cell_name, instance_uuid): method_kwargs = dict(instance_uuid=instance_uuid) message = _TargetedMessage(self, ctxt, 'actions_get', method_kwargs, 'down', cell_name, need_response=True) return message.process() def action_get_by_request_id(self, ctxt, cell_name, instance_uuid, request_id): method_kwargs = dict(instance_uuid=instance_uuid, request_id=request_id) message = _TargetedMessage(self, ctxt, 'action_get_by_request_id', method_kwargs, 'down', cell_name, need_response=True) return message.process() def action_events_get(self, ctxt, cell_name, action_id): method_kwargs = dict(action_id=action_id) message = _TargetedMessage(self, ctxt, 'action_events_get', method_kwargs, 'down', cell_name, need_response=True) return message.process() def consoleauth_delete_tokens(self, ctxt, instance_uuid): """Delete consoleauth tokens for an instance in API cells.""" message = _BroadcastMessage(self, ctxt, 'consoleauth_delete_tokens', dict(instance_uuid=instance_uuid), 'up', run_locally=False) message.process() def validate_console_port(self, ctxt, cell_name, instance_uuid, console_port, console_type): """Validate console port with child cell compute node.""" method_kwargs = {'instance_uuid': instance_uuid, 'console_port': console_port, 'console_type': console_type} message = _TargetedMessage(self, ctxt, 'validate_console_port', method_kwargs, 'down', cell_name, need_response=True) return message.process() def bdm_update_or_create_at_top(self, ctxt, bdm, create=None): """Update/Create a BDM at top level cell.""" message = _BroadcastMessage(self, ctxt, 'bdm_update_or_create_at_top', dict(bdm=bdm, create=create), 'up', run_locally=False) message.process() def bdm_destroy_at_top(self, ctxt, instance_uuid, device_name=None, volume_id=None): """Destroy a BDM at top level cell.""" method_kwargs = dict(instance_uuid=instance_uuid, device_name=device_name, volume_id=volume_id) message = _BroadcastMessage(self, ctxt, 'bdm_destroy_at_top', method_kwargs, 'up', run_locally=False) message.process() def get_migrations(self, ctxt, cell_name, run_locally, filters): """Fetch all migrations applying the filters for a given cell or all cells. """ method_kwargs = dict(filters=filters) if cell_name: return self._get_migrations_for_cell(ctxt, cell_name, filters) message = _BroadcastMessage(self, ctxt, 'get_migrations', method_kwargs, 'down', run_locally=run_locally, need_response=True) return message.process() def _instance_action(self, ctxt, instance, method, extra_kwargs=None, need_response=False): """Call instance_ in correct cell for instance.""" cell_name = instance.cell_name if not cell_name: LOG.warn(_("No cell_name for %(method)s() from API"), dict(method=method), instance=instance) return method_kwargs = {'instance': instance} if extra_kwargs: method_kwargs.update(extra_kwargs) message = _TargetedMessage(self, ctxt, method, method_kwargs, 'down', cell_name, need_response=need_response) return message.process() def instance_update_from_api(self, ctxt, instance, expected_vm_state, expected_task_state, admin_state_reset): """Update an instance object in its cell.""" cell_name = instance.cell_name if not cell_name: LOG.warn(_("No cell_name for instance update from API"), instance=instance) return method_kwargs = {'instance': instance, 'expected_vm_state': expected_vm_state, 'expected_task_state': expected_task_state, 'admin_state_reset': admin_state_reset} message = _TargetedMessage(self, ctxt, 'instance_update_from_api', method_kwargs, 'down', cell_name) message.process() def start_instance(self, ctxt, instance): """Start an instance in its cell.""" self._instance_action(ctxt, instance, 'start_instance') def stop_instance(self, ctxt, instance, do_cast=True): """Stop an instance in its cell.""" if do_cast: self._instance_action(ctxt, instance, 'stop_instance') else: return self._instance_action(ctxt, instance, 'stop_instance', need_response=True) def reboot_instance(self, ctxt, instance, reboot_type): """Reboot an instance in its cell.""" extra_kwargs = dict(reboot_type=reboot_type) self._instance_action(ctxt, instance, 'reboot_instance', extra_kwargs=extra_kwargs) def suspend_instance(self, ctxt, instance): """Suspend an instance in its cell.""" self._instance_action(ctxt, instance, 'suspend_instance') def resume_instance(self, ctxt, instance): """Resume an instance in its cell.""" self._instance_action(ctxt, instance, 'resume_instance') def terminate_instance(self, ctxt, instance): self._instance_action(ctxt, instance, 'terminate_instance') def soft_delete_instance(self, ctxt, instance): self._instance_action(ctxt, instance, 'soft_delete_instance') def pause_instance(self, ctxt, instance): """Pause an instance in its cell.""" self._instance_action(ctxt, instance, 'pause_instance') def unpause_instance(self, ctxt, instance): """Unpause an instance in its cell.""" self._instance_action(ctxt, instance, 'unpause_instance') def resize_instance(self, ctxt, instance, flavor, extra_instance_updates): """Resize an instance in its cell.""" extra_kwargs = dict(flavor=flavor, extra_instance_updates=extra_instance_updates) self._instance_action(ctxt, instance, 'resize_instance', extra_kwargs=extra_kwargs) def live_migrate_instance(self, ctxt, instance, block_migration, disk_over_commit, host_name): """Live migrate an instance in its cell.""" extra_kwargs = dict(block_migration=block_migration, disk_over_commit=disk_over_commit, host_name=host_name) self._instance_action(ctxt, instance, 'live_migrate_instance', extra_kwargs=extra_kwargs) def revert_resize(self, ctxt, instance): """Revert a resize for an instance in its cell.""" self._instance_action(ctxt, instance, 'revert_resize') def confirm_resize(self, ctxt, instance): """Confirm a resize for an instance in its cell.""" self._instance_action(ctxt, instance, 'confirm_resize') def reset_network(self, ctxt, instance): """Reset networking for an instance in its cell.""" self._instance_action(ctxt, instance, 'reset_network') def inject_network_info(self, ctxt, instance): """Inject networking for an instance in its cell.""" self._instance_action(ctxt, instance, 'inject_network_info') def snapshot_instance(self, ctxt, instance, image_id): """Snapshot an instance in its cell.""" extra_kwargs = dict(image_id=image_id) self._instance_action(ctxt, instance, 'snapshot_instance', extra_kwargs=extra_kwargs) def backup_instance(self, ctxt, instance, image_id, backup_type, rotation): """Backup an instance in its cell.""" extra_kwargs = dict(image_id=image_id, backup_type=backup_type, rotation=rotation) self._instance_action(ctxt, instance, 'backup_instance', extra_kwargs=extra_kwargs) def rebuild_instance(self, ctxt, instance, image_href, admin_password, files_to_inject, preserve_ephemeral, kwargs): extra_kwargs = dict(image_href=image_href, admin_password=admin_password, files_to_inject=files_to_inject, preserve_ephemeral=preserve_ephemeral, kwargs=kwargs) self._instance_action(ctxt, instance, 'rebuild_instance', extra_kwargs=extra_kwargs) @staticmethod def get_message_types(): return _CELL_MESSAGE_TYPE_TO_MESSAGE_CLS.keys() class Response(object): """Holds a response from a cell. If there was a failure, 'failure' will be True and 'response' will contain an encoded Exception. """ def __init__(self, cell_name, value, failure): self.failure = failure self.cell_name = cell_name self.value = value def to_json(self): resp_value = self.value if self.failure: resp_value = serialize_remote_exception(resp_value, log_failure=False) _dict = {'cell_name': self.cell_name, 'value': resp_value, 'failure': self.failure} return jsonutils.dumps(_dict) @classmethod def from_json(cls, json_message): _dict = jsonutils.loads(json_message) if _dict['failure']: resp_value = deserialize_remote_exception(_dict['value'], rpc.get_allowed_exmods()) _dict['value'] = resp_value return cls(**_dict) def value_or_raise(self): if self.failure: if isinstance(self.value, (tuple, list)): raise self.value[0], self.value[1], self.value[2] else: raise self.value return self.value _REMOTE_POSTFIX = '_Remote' def serialize_remote_exception(failure_info, log_failure=True): """Prepares exception data to be sent over rpc. Failure_info should be a sys.exc_info() tuple. """ tb = traceback.format_exception(*failure_info) failure = failure_info[1] if log_failure: LOG.error(_("Returning exception %s to caller"), six.text_type(failure)) LOG.error(tb) kwargs = {} if hasattr(failure, 'kwargs'): kwargs = failure.kwargs # NOTE(matiu): With cells, it's possible to re-raise remote, remote # exceptions. Lets turn it back into the original exception type. cls_name = str(failure.__class__.__name__) mod_name = str(failure.__class__.__module__) if (cls_name.endswith(_REMOTE_POSTFIX) and mod_name.endswith(_REMOTE_POSTFIX)): cls_name = cls_name[:-len(_REMOTE_POSTFIX)] mod_name = mod_name[:-len(_REMOTE_POSTFIX)] data = { 'class': cls_name, 'module': mod_name, 'message': six.text_type(failure), 'tb': tb, 'args': failure.args, 'kwargs': kwargs } json_data = jsonutils.dumps(data) return json_data def deserialize_remote_exception(data, allowed_remote_exmods): failure = jsonutils.loads(str(data)) trace = failure.get('tb', []) message = failure.get('message', "") + "\n" + "\n".join(trace) name = failure.get('class') module = failure.get('module') # NOTE(ameade): We DO NOT want to allow just any module to be imported, in # order to prevent arbitrary code execution. if module != 'exceptions' and module not in allowed_remote_exmods: return messaging.RemoteError(name, failure.get('message'), trace) try: mod = importutils.import_module(module) klass = getattr(mod, name) if not issubclass(klass, Exception): raise TypeError("Can only deserialize Exceptions") failure = klass(*failure.get('args', []), **failure.get('kwargs', {})) except (AttributeError, TypeError, ImportError): return messaging.RemoteError(name, failure.get('message'), trace) ex_type = type(failure) str_override = lambda self: message new_ex_type = type(ex_type.__name__ + _REMOTE_POSTFIX, (ex_type,), {'__str__': str_override, '__unicode__': str_override}) new_ex_type.__module__ = '%s%s' % (module, _REMOTE_POSTFIX) try: # NOTE(ameade): Dynamically create a new exception type and swap it in # as the new type for the exception. This only works on user defined # Exceptions and not core python exceptions. This is important because # we cannot necessarily change an exception message so we must override # the __str__ method. failure.__class__ = new_ex_type except TypeError: # NOTE(ameade): If a core exception then just add the traceback to the # first exception argument. failure.args = (message,) + failure.args[1:] return failure nova-2014.1/nova/cells/scheduler.py0000664000175400017540000003407312323721476020315 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Cells Scheduler """ import copy import time from oslo.config import cfg from nova.cells import filters from nova.cells import weights from nova import compute from nova.compute import flavors from nova.compute import instance_actions from nova.compute import vm_states from nova import conductor from nova.db import base from nova import exception from nova.objects import base as obj_base from nova.objects import instance as instance_obj from nova.objects import instance_action as instance_action_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.scheduler import rpcapi as scheduler_rpcapi from nova.scheduler import utils as scheduler_utils from nova import utils cell_scheduler_opts = [ cfg.ListOpt('scheduler_filter_classes', default=['nova.cells.filters.all_filters'], help='Filter classes the cells scheduler should use. ' 'An entry of "nova.cells.filters.all_filters" ' 'maps to all cells filters included with nova.'), cfg.ListOpt('scheduler_weight_classes', default=['nova.cells.weights.all_weighers'], help='Weigher classes the cells scheduler should use. ' 'An entry of "nova.cells.weights.all_weighers" ' 'maps to all cell weighers included with nova.'), cfg.IntOpt('scheduler_retries', default=10, help='How many retries when no cells are available.'), cfg.IntOpt('scheduler_retry_delay', default=2, help='How often to retry in seconds when no cells are ' 'available.') ] LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.register_opts(cell_scheduler_opts, group='cells') class CellsScheduler(base.Base): """The cells scheduler.""" def __init__(self, msg_runner): super(CellsScheduler, self).__init__() self.msg_runner = msg_runner self.state_manager = msg_runner.state_manager self.compute_api = compute.API() self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() self.compute_task_api = conductor.ComputeTaskAPI() self.filter_handler = filters.CellFilterHandler() self.filter_classes = self.filter_handler.get_matching_classes( CONF.cells.scheduler_filter_classes) self.weight_handler = weights.CellWeightHandler() self.weigher_classes = self.weight_handler.get_matching_classes( CONF.cells.scheduler_weight_classes) def _create_instances_here(self, ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping): instance_values = copy.copy(instance_properties) # The parent may pass these metadata values as lists, and the # create call expects it to be a dict. instance_values['metadata'] = utils.instance_meta(instance_values) sys_metadata = utils.instance_sys_meta(instance_values) # Make sure the flavor info is set. It may not have been passed # down. sys_metadata = flavors.save_flavor_info(sys_metadata, instance_type) instance_values['system_metadata'] = sys_metadata # Pop out things that will get set properly when re-creating the # instance record. instance_values.pop('id') instance_values.pop('name') instance_values.pop('info_cache') instance_values.pop('security_groups') num_instances = len(instance_uuids) for i, instance_uuid in enumerate(instance_uuids): instance = instance_obj.Instance() instance.update(instance_values) instance.uuid = instance_uuid instance = self.compute_api.create_db_entry_for_new_instance( ctxt, instance_type, image, instance, security_groups, block_device_mapping, num_instances, i) instance = obj_base.obj_to_primitive(instance) self.msg_runner.instance_update_at_top(ctxt, instance) def _create_action_here(self, ctxt, instance_uuids): for instance_uuid in instance_uuids: instance_action_obj.InstanceAction.action_start( ctxt, instance_uuid, instance_actions.CREATE, want_result=False) def _get_possible_cells(self): cells = self.state_manager.get_child_cells() our_cell = self.state_manager.get_my_state() # Include our cell in the list, if we have any capacity info if not cells or our_cell.capacities: cells.append(our_cell) return cells def _grab_target_cells(self, filter_properties): cells = self._get_possible_cells() cells = self.filter_handler.get_filtered_objects(self.filter_classes, cells, filter_properties) # NOTE(comstud): I know this reads weird, but the 'if's are nested # this way to optimize for the common case where 'cells' is a list # containing at least 1 entry. if not cells: if cells is None: # None means to bypass further scheduling as a filter # took care of everything. return raise exception.NoCellsAvailable() weighted_cells = self.weight_handler.get_weighed_objects( self.weigher_classes, cells, filter_properties) LOG.debug(_("Weighted cells: %(weighted_cells)s"), {'weighted_cells': weighted_cells}) target_cells = [cell.obj for cell in weighted_cells] return target_cells def _run_instance(self, message, target_cells, instance_uuids, host_sched_kwargs): """Attempt to schedule instance(s).""" ctxt = message.ctxt request_spec = host_sched_kwargs['request_spec'] instance_properties = request_spec['instance_properties'] instance_type = request_spec['instance_type'] image = request_spec['image'] security_groups = request_spec['security_group'] block_device_mapping = request_spec['block_device_mapping'] LOG.debug(_("Scheduling with routing_path=%(routing_path)s"), {'routing_path': message.routing_path}) for target_cell in target_cells: try: if target_cell.is_me: # Need to create instance DB entries as the host scheduler # expects that the instance(s) already exists. self._create_instances_here(ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping) # Need to record the create action in the db as the # scheduler expects it to already exist. self._create_action_here(ctxt, instance_uuids) self.scheduler_rpcapi.run_instance(ctxt, **host_sched_kwargs) return self.msg_runner.schedule_run_instance(ctxt, target_cell, host_sched_kwargs) return except Exception: LOG.exception(_("Couldn't communicate with cell '%s'") % target_cell.name) # FIXME(comstud): Would be nice to kick this back up so that # the parent cell could retry, if we had a parent. msg = _("Couldn't communicate with any cells") LOG.error(msg) raise exception.NoCellsAvailable() def _build_instances(self, message, target_cells, instance_uuids, build_inst_kwargs): """Attempt to build instance(s) or send msg to child cell.""" ctxt = message.ctxt instance_properties = build_inst_kwargs['instances'][0] filter_properties = build_inst_kwargs['filter_properties'] instance_type = filter_properties['instance_type'] image = build_inst_kwargs['image'] security_groups = build_inst_kwargs['security_groups'] block_device_mapping = build_inst_kwargs['block_device_mapping'] LOG.debug(_("Building instances with routing_path=%(routing_path)s"), {'routing_path': message.routing_path}) for target_cell in target_cells: try: if target_cell.is_me: # Need to create instance DB entries as the conductor # expects that the instance(s) already exists. self._create_instances_here(ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping) # Need to record the create action in the db as the # conductor expects it to already exist. self._create_action_here(ctxt, instance_uuids) self.compute_task_api.build_instances(ctxt, **build_inst_kwargs) return self.msg_runner.build_instances(ctxt, target_cell, build_inst_kwargs) return except Exception: LOG.exception(_("Couldn't communicate with cell '%s'") % target_cell.name) # FIXME(comstud): Would be nice to kick this back up so that # the parent cell could retry, if we had a parent. msg = _("Couldn't communicate with any cells") LOG.error(msg) raise exception.NoCellsAvailable() def build_instances(self, message, build_inst_kwargs): image = build_inst_kwargs['image'] instance_uuids = [inst['uuid'] for inst in build_inst_kwargs['instances']] instances = build_inst_kwargs['instances'] request_spec = scheduler_utils.build_request_spec(message.ctxt, image, instances) filter_properties = copy.copy(build_inst_kwargs['filter_properties']) filter_properties.update({'context': message.ctxt, 'scheduler': self, 'routing_path': message.routing_path, 'host_sched_kwargs': build_inst_kwargs, 'request_spec': request_spec}) # NOTE(belliott) remove when deprecated schedule_run_instance # code gets removed. filter_properties['cell_scheduler_method'] = 'build_instances' self._schedule_build_to_cells(message, instance_uuids, filter_properties, self._build_instances, build_inst_kwargs) def run_instance(self, message, host_sched_kwargs): request_spec = host_sched_kwargs['request_spec'] instance_uuids = request_spec['instance_uuids'] filter_properties = copy.copy(host_sched_kwargs['filter_properties']) filter_properties.update({'context': message.ctxt, 'scheduler': self, 'routing_path': message.routing_path, 'host_sched_kwargs': host_sched_kwargs, 'request_spec': request_spec}) # NOTE(belliott) remove when deprecated schedule_run_instance # code gets removed. filter_properties['cell_scheduler_method'] = 'schedule_run_instance' self._schedule_build_to_cells(message, instance_uuids, filter_properties, self._run_instance, host_sched_kwargs) def _schedule_build_to_cells(self, message, instance_uuids, filter_properties, method, method_kwargs): """Pick a cell where we should create a new instance(s).""" try: for i in xrange(max(0, CONF.cells.scheduler_retries) + 1): try: target_cells = self._grab_target_cells(filter_properties) if target_cells is None: # a filter took care of scheduling. skip. return return method(message, target_cells, instance_uuids, method_kwargs) except exception.NoCellsAvailable: if i == max(0, CONF.cells.scheduler_retries): raise sleep_time = max(1, CONF.cells.scheduler_retry_delay) LOG.info(_("No cells available when scheduling. Will " "retry in %(sleep_time)s second(s)"), {'sleep_time': sleep_time}) time.sleep(sleep_time) continue except Exception: LOG.exception(_("Error scheduling instances %(instance_uuids)s"), {'instance_uuids': instance_uuids}) ctxt = message.ctxt for instance_uuid in instance_uuids: self.msg_runner.instance_update_at_top(ctxt, {'uuid': instance_uuid, 'vm_state': vm_states.ERROR}) try: self.db.instance_update(ctxt, instance_uuid, {'vm_state': vm_states.ERROR}) except Exception: pass nova-2014.1/nova/cells/__init__.py0000664000175400017540000000116412323721476020071 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # # 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. """ Cells """ nova-2014.1/nova/cells/rpcapi.py0000664000175400017540000006136712323721476017623 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # Copyright 2013 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. """ Client side of nova-cells RPC API (for talking to the nova-cells service within a cell). This is different than communication between child and parent nova-cells services. That communication is handled by the cells driver via the messging module. """ from oslo.config import cfg from oslo import messaging from nova import exception from nova.objects import base as objects_base from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova import rpc LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt('enable', 'nova.cells.opts', group='cells') CONF.import_opt('topic', 'nova.cells.opts', group='cells') rpcapi_cap_opt = cfg.StrOpt('cells', help='Set a version cap for messages sent to local cells services') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') class CellsAPI(object): '''Cells client-side RPC API API version history: 1.0 - Initial version. 1.1 - Adds get_cell_info_for_neighbors() and sync_instances() 1.2 - Adds service_get_all(), service_get_by_compute_host(), and proxy_rpc_to_compute_manager() 1.3 - Adds task_log_get_all() 1.4 - Adds compute_node_get(), compute_node_get_all(), and compute_node_stats() 1.5 - Adds actions_get(), action_get_by_request_id(), and action_events_get() 1.6 - Adds consoleauth_delete_tokens() and validate_console_port() ... Grizzly supports message version 1.6. So, any changes to existing methods in 2.x after that point should be done such that they can handle the version_cap being set to 1.6. 1.7 - Adds service_update() 1.8 - Adds build_instances(), deprecates schedule_run_instance() 1.9 - Adds get_capacities() 1.10 - Adds bdm_update_or_create_at_top(), and bdm_destroy_at_top() 1.11 - Adds get_migrations() 1.12 - Adds instance_start() and instance_stop() 1.13 - Adds cell_create(), cell_update(), cell_delete(), and cell_get() 1.14 - Adds reboot_instance() 1.15 - Adds suspend_instance() and resume_instance() 1.16 - Adds instance_update_from_api() 1.17 - Adds get_host_uptime() 1.18 - Adds terminate_instance() and soft_delete_instance() 1.19 - Adds pause_instance() and unpause_instance() 1.20 - Adds resize_instance() and live_migrate_instance() 1.21 - Adds revert_resize() and confirm_resize() 1.22 - Adds reset_network() 1.23 - Adds inject_network_info() 1.24 - Adds backup_instance() and snapshot_instance() ... Havana supports message version 1.24. So, any changes to existing methods in 1.x after that point should be done such that they can handle the version_cap being set to 1.24. 1.25 - Adds rebuild_instance() 1.26 - Adds service_delete() 1.27 - Updates instance_delete_everywhere() for instance objects ''' VERSION_ALIASES = { 'grizzly': '1.6', 'havana': '1.24', } def __init__(self): super(CellsAPI, self).__init__() target = messaging.Target(topic=CONF.cells.topic, version='1.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.cells, CONF.upgrade_levels.cells) serializer = objects_base.NovaObjectSerializer() self.client = rpc.get_client(target, version_cap=version_cap, serializer=serializer) def cast_compute_api_method(self, ctxt, cell_name, method, *args, **kwargs): """Make a cast to a compute API method in a certain cell.""" method_info = {'method': method, 'method_args': args, 'method_kwargs': kwargs} self.client.cast(ctxt, 'run_compute_api_method', cell_name=cell_name, method_info=method_info, call=False) def call_compute_api_method(self, ctxt, cell_name, method, *args, **kwargs): """Make a call to a compute API method in a certain cell.""" method_info = {'method': method, 'method_args': args, 'method_kwargs': kwargs} return self.client.call(ctxt, 'run_compute_api_method', cell_name=cell_name, method_info=method_info, call=True) # NOTE(alaski): Deprecated and should be removed later. def schedule_run_instance(self, ctxt, **kwargs): """Schedule a new instance for creation.""" self.client.cast(ctxt, 'schedule_run_instance', host_sched_kwargs=kwargs) def build_instances(self, ctxt, **kwargs): """Build instances.""" build_inst_kwargs = kwargs instances = build_inst_kwargs['instances'] instances_p = [jsonutils.to_primitive(inst) for inst in instances] build_inst_kwargs['instances'] = instances_p build_inst_kwargs['image'] = jsonutils.to_primitive( build_inst_kwargs['image']) cctxt = self.client.prepare(version='1.8') cctxt.cast(ctxt, 'build_instances', build_inst_kwargs=build_inst_kwargs) def instance_update_at_top(self, ctxt, instance): """Update instance at API level.""" if not CONF.cells.enable: return # Make sure we have a dict, not a SQLAlchemy model instance_p = jsonutils.to_primitive(instance) self.client.cast(ctxt, 'instance_update_at_top', instance=instance_p) def instance_destroy_at_top(self, ctxt, instance): """Destroy instance at API level.""" if not CONF.cells.enable: return instance_p = jsonutils.to_primitive(instance) self.client.cast(ctxt, 'instance_destroy_at_top', instance=instance_p) def instance_delete_everywhere(self, ctxt, instance, delete_type): """Delete instance everywhere. delete_type may be 'soft' or 'hard'. This is generally only used to resolve races when API cell doesn't know to what cell an instance belongs. """ if not CONF.cells.enable: return if self.client.can_send_version('1.27'): version = '1.27' else: version = '1.0' instance = jsonutils.to_primitive(instance) cctxt = self.client.prepare(version=version) cctxt.cast(ctxt, 'instance_delete_everywhere', instance=instance, delete_type=delete_type) def instance_fault_create_at_top(self, ctxt, instance_fault): """Create an instance fault at the top.""" if not CONF.cells.enable: return instance_fault_p = jsonutils.to_primitive(instance_fault) self.client.cast(ctxt, 'instance_fault_create_at_top', instance_fault=instance_fault_p) def bw_usage_update_at_top(self, ctxt, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed=None): """Broadcast upwards that bw_usage was updated.""" if not CONF.cells.enable: return bw_update_info = {'uuid': uuid, 'mac': mac, 'start_period': start_period, 'bw_in': bw_in, 'bw_out': bw_out, 'last_ctr_in': last_ctr_in, 'last_ctr_out': last_ctr_out, 'last_refreshed': last_refreshed} self.client.cast(ctxt, 'bw_usage_update_at_top', bw_update_info=bw_update_info) def instance_info_cache_update_at_top(self, ctxt, instance_info_cache): """Broadcast up that an instance's info_cache has changed.""" if not CONF.cells.enable: return iicache = jsonutils.to_primitive(instance_info_cache) instance = {'uuid': iicache['instance_uuid'], 'info_cache': iicache} self.client.cast(ctxt, 'instance_update_at_top', instance=instance) def get_cell_info_for_neighbors(self, ctxt): """Get information about our neighbor cells from the manager.""" if not CONF.cells.enable: return [] cctxt = self.client.prepare(version='1.1') return cctxt.call(ctxt, 'get_cell_info_for_neighbors') def sync_instances(self, ctxt, project_id=None, updated_since=None, deleted=False): """Ask all cells to sync instance data.""" if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.1') return cctxt.cast(ctxt, 'sync_instances', project_id=project_id, updated_since=updated_since, deleted=deleted) def service_get_all(self, ctxt, filters=None): """Ask all cells for their list of services.""" cctxt = self.client.prepare(version='1.2') return cctxt.call(ctxt, 'service_get_all', filters=filters) def service_get_by_compute_host(self, ctxt, host_name): """Get the service entry for a host in a particular cell. The cell name should be encoded within the host_name. """ cctxt = self.client.prepare(version='1.2') return cctxt.call(ctxt, 'service_get_by_compute_host', host_name=host_name) def get_host_uptime(self, context, host_name): """Gets the host uptime in a particular cell. The cell name should be encoded within the host_name """ cctxt = self.client.prepare(version='1.17') return cctxt.call(context, 'get_host_uptime', host_name=host_name) def service_update(self, ctxt, host_name, binary, params_to_update): """Used to enable/disable a service. For compute services, setting to disabled stops new builds arriving on that host. :param host_name: the name of the host machine that the service is running :param binary: The name of the executable that the service runs as :param params_to_update: eg. {'disabled': True} """ cctxt = self.client.prepare(version='1.7') return cctxt.call(ctxt, 'service_update', host_name=host_name, binary=binary, params_to_update=params_to_update) def service_delete(self, ctxt, cell_service_id): """Deletes the specified service.""" cctxt = self.client.prepare(version='1.26') cctxt.call(ctxt, 'service_delete', cell_service_id=cell_service_id) def proxy_rpc_to_manager(self, ctxt, rpc_message, topic, call=False, timeout=None): """Proxy RPC to a compute manager. The host in the topic should be encoded with the target cell name. """ cctxt = self.client.prepare(version='1.2', timeout=timeout) return cctxt.call(ctxt, 'proxy_rpc_to_manager', topic=topic, rpc_message=rpc_message, call=call, timeout=timeout) def task_log_get_all(self, ctxt, task_name, period_beginning, period_ending, host=None, state=None): """Get the task logs from the DB in child cells.""" cctxt = self.client.prepare(version='1.3') return cctxt.call(ctxt, 'task_log_get_all', task_name=task_name, period_beginning=period_beginning, period_ending=period_ending, host=host, state=state) def compute_node_get(self, ctxt, compute_id): """Get a compute node by ID in a specific cell.""" cctxt = self.client.prepare(version='1.4') return cctxt.call(ctxt, 'compute_node_get', compute_id=compute_id) def compute_node_get_all(self, ctxt, hypervisor_match=None): """Return list of compute nodes in all cells, optionally filtering by hypervisor host. """ cctxt = self.client.prepare(version='1.4') return cctxt.call(ctxt, 'compute_node_get_all', hypervisor_match=hypervisor_match) def compute_node_stats(self, ctxt): """Return compute node stats from all cells.""" cctxt = self.client.prepare(version='1.4') return cctxt.call(ctxt, 'compute_node_stats') def actions_get(self, ctxt, instance): if not instance['cell_name']: raise exception.InstanceUnknownCell(instance_uuid=instance['uuid']) cctxt = self.client.prepare(version='1.5') return cctxt.call(ctxt, 'actions_get', cell_name=instance['cell_name'], instance_uuid=instance['uuid']) def action_get_by_request_id(self, ctxt, instance, request_id): if not instance['cell_name']: raise exception.InstanceUnknownCell(instance_uuid=instance['uuid']) cctxt = self.client.prepare(version='1.5') return cctxt.call(ctxt, 'action_get_by_request_id', cell_name=instance['cell_name'], instance_uuid=instance['uuid'], request_id=request_id) def action_events_get(self, ctxt, instance, action_id): if not instance['cell_name']: raise exception.InstanceUnknownCell(instance_uuid=instance['uuid']) cctxt = self.client.prepare(version='1.5') return cctxt.call(ctxt, 'action_events_get', cell_name=instance['cell_name'], action_id=action_id) def consoleauth_delete_tokens(self, ctxt, instance_uuid): """Delete consoleauth tokens for an instance in API cells.""" cctxt = self.client.prepare(version='1.6') cctxt.cast(ctxt, 'consoleauth_delete_tokens', instance_uuid=instance_uuid) def validate_console_port(self, ctxt, instance_uuid, console_port, console_type): """Validate console port with child cell compute node.""" cctxt = self.client.prepare(version='1.6') return cctxt.call(ctxt, 'validate_console_port', instance_uuid=instance_uuid, console_port=console_port, console_type=console_type) def get_capacities(self, ctxt, cell_name=None): cctxt = self.client.prepare(version='1.9') return cctxt.call(ctxt, 'get_capacities', cell_name=cell_name) def bdm_update_or_create_at_top(self, ctxt, bdm, create=None): """Create or update a block device mapping in API cells. If create is True, only try to create. If create is None, try to update but fall back to create. If create is False, only attempt to update. This maps to nova-conductor's behavior. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.10') try: cctxt.cast(ctxt, 'bdm_update_or_create_at_top', bdm=bdm, create=create) except Exception: LOG.exception(_("Failed to notify cells of BDM update/create.")) def bdm_destroy_at_top(self, ctxt, instance_uuid, device_name=None, volume_id=None): """Broadcast upwards that a block device mapping was destroyed. One of device_name or volume_id should be specified. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.10') try: cctxt.cast(ctxt, 'bdm_destroy_at_top', instance_uuid=instance_uuid, device_name=device_name, volume_id=volume_id) except Exception: LOG.exception(_("Failed to notify cells of BDM destroy.")) def get_migrations(self, ctxt, filters): """Get all migrations applying the filters.""" cctxt = self.client.prepare(version='1.11') return cctxt.call(ctxt, 'get_migrations', filters=filters) def instance_update_from_api(self, ctxt, instance, expected_vm_state, expected_task_state, admin_state_reset): """Update an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.16') cctxt.cast(ctxt, 'instance_update_from_api', instance=instance, expected_vm_state=expected_vm_state, expected_task_state=expected_task_state, admin_state_reset=admin_state_reset) def start_instance(self, ctxt, instance): """Start an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.12') cctxt.cast(ctxt, 'start_instance', instance=instance) def stop_instance(self, ctxt, instance, do_cast=True): """Stop an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.12') method = do_cast and cctxt.cast or cctxt.call return method(ctxt, 'stop_instance', instance=instance, do_cast=do_cast) def cell_create(self, ctxt, values): cctxt = self.client.prepare(version='1.13') return cctxt.call(ctxt, 'cell_create', values=values) def cell_update(self, ctxt, cell_name, values): cctxt = self.client.prepare(version='1.13') return cctxt.call(ctxt, 'cell_update', cell_name=cell_name, values=values) def cell_delete(self, ctxt, cell_name): cctxt = self.client.prepare(version='1.13') return cctxt.call(ctxt, 'cell_delete', cell_name=cell_name) def cell_get(self, ctxt, cell_name): cctxt = self.client.prepare(version='1.13') return cctxt.call(ctxt, 'cell_get', cell_name=cell_name) def reboot_instance(self, ctxt, instance, block_device_info, reboot_type): """Reboot an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.14') cctxt.cast(ctxt, 'reboot_instance', instance=instance, reboot_type=reboot_type) def pause_instance(self, ctxt, instance): """Pause an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.19') cctxt.cast(ctxt, 'pause_instance', instance=instance) def unpause_instance(self, ctxt, instance): """Unpause an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.19') cctxt.cast(ctxt, 'unpause_instance', instance=instance) def suspend_instance(self, ctxt, instance): """Suspend an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.15') cctxt.cast(ctxt, 'suspend_instance', instance=instance) def resume_instance(self, ctxt, instance): """Resume an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.15') cctxt.cast(ctxt, 'resume_instance', instance=instance) def terminate_instance(self, ctxt, instance, bdms, reservations=None): """Delete an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.18') cctxt.cast(ctxt, 'terminate_instance', instance=instance) def soft_delete_instance(self, ctxt, instance, reservations=None): """Soft-delete an instance in its cell. This method takes a new-world instance object. """ if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.18') cctxt.cast(ctxt, 'soft_delete_instance', instance=instance) def resize_instance(self, ctxt, instance, extra_instance_updates, scheduler_hint, flavor, reservations): if not CONF.cells.enable: return flavor_p = jsonutils.to_primitive(flavor) cctxt = self.client.prepare(version='1.20') cctxt.cast(ctxt, 'resize_instance', instance=instance, flavor=flavor_p, extra_instance_updates=extra_instance_updates) def live_migrate_instance(self, ctxt, instance, host_name, block_migration, disk_over_commit): if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.20') cctxt.cast(ctxt, 'live_migrate_instance', instance=instance, block_migration=block_migration, disk_over_commit=disk_over_commit, host_name=host_name) def revert_resize(self, ctxt, instance, migration, host, reservations): if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.21') cctxt.cast(ctxt, 'revert_resize', instance=instance) def confirm_resize(self, ctxt, instance, migration, host, reservations, cast=True): if not CONF.cells.enable: return # NOTE(comstud): This is only used in the API cell where we should # always cast and ignore the 'cast' kwarg. # Also, the compute api method normally takes an optional # 'migration_ref' argument. But this is only used from the manager # back to the API... which would happen in the child cell. cctxt = self.client.prepare(version='1.21') cctxt.cast(ctxt, 'confirm_resize', instance=instance) def reset_network(self, ctxt, instance): """Reset networking for an instance.""" if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.22') cctxt.cast(ctxt, 'reset_network', instance=instance) def inject_network_info(self, ctxt, instance): """Inject networking for an instance.""" if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.23') cctxt.cast(ctxt, 'inject_network_info', instance=instance) def snapshot_instance(self, ctxt, instance, image_id): if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.24') cctxt.cast(ctxt, 'snapshot_instance', instance=instance, image_id=image_id) def backup_instance(self, ctxt, instance, image_id, backup_type, rotation): if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.24') cctxt.cast(ctxt, 'backup_instance', instance=instance, image_id=image_id, backup_type=backup_type, rotation=rotation) def rebuild_instance(self, ctxt, instance, new_pass, injected_files, image_ref, orig_image_ref, orig_sys_metadata, bdms, recreate=False, on_shared_storage=False, host=None, preserve_ephemeral=False, kwargs=None): if not CONF.cells.enable: return cctxt = self.client.prepare(version='1.25') cctxt.cast(ctxt, 'rebuild_instance', instance=instance, image_href=image_ref, admin_password=new_pass, files_to_inject=injected_files, preserve_ephemeral=preserve_ephemeral, kwargs=kwargs) nova-2014.1/nova/cert/0000775000175400017540000000000012323722546015610 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/cert/manager.py0000664000175400017540000000464112323721476017602 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Cert manager manages x509 certificates. **Related Flags** :cert_topic: What :mod:`rpc` topic to listen to (default: `cert`). :cert_manager: The module name of a class derived from :class:`manager.Manager` (default: :class:`nova.cert.manager.Manager`). """ import base64 from oslo import messaging from nova import crypto from nova import manager class CertManager(manager.Manager): target = messaging.Target(version='2.0') def __init__(self, *args, **kwargs): super(CertManager, self).__init__(service_name='cert', *args, **kwargs) def init_host(self): crypto.ensure_ca_filesystem() def revoke_certs_by_user(self, context, user_id): """Revoke all user certs.""" return crypto.revoke_certs_by_user(user_id) def revoke_certs_by_project(self, context, project_id): """Revoke all project certs.""" return crypto.revoke_certs_by_project(project_id) def revoke_certs_by_user_and_project(self, context, user_id, project_id): """Revoke certs for user in project.""" return crypto.revoke_certs_by_user_and_project(user_id, project_id) def generate_x509_cert(self, context, user_id, project_id): """Generate and sign a cert for user in project.""" return crypto.generate_x509_cert(user_id, project_id) def fetch_ca(self, context, project_id): """Get root ca for a project.""" return crypto.fetch_ca(project_id) def fetch_crl(self, context, project_id): """Get crl for a project.""" return crypto.fetch_crl(project_id) def decrypt_text(self, context, project_id, text): """Decrypt base64 encoded text using the projects private key.""" return crypto.decrypt_text(project_id, base64.b64decode(text)) nova-2014.1/nova/cert/__init__.py0000664000175400017540000000114412323721476017722 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/cert/rpcapi.py0000664000175400017540000001025312323721476017442 0ustar jenkinsjenkins00000000000000# Copyright 2013, 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. """ Client side of the cert manager RPC API. """ from oslo.config import cfg from oslo import messaging from nova import rpc rpcapi_opts = [ cfg.StrOpt('cert_topic', default='cert', help='The topic cert nodes listen on'), ] CONF = cfg.CONF CONF.register_opts(rpcapi_opts) rpcapi_cap_opt = cfg.StrOpt('cert', help='Set a version cap for messages sent to cert services') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') class CertAPI(object): '''Client side of the cert rpc API. API version history: 1.0 - Initial version. 1.1 - Added get_backdoor_port() ... Grizzly and Havana support message version 1.1. So, any changes to existing methods in 1.x after that point should be done such that they can handle the version_cap being set to 1.1. 2.0 - Major API rev for Icehouse ''' VERSION_ALIASES = { 'grizzly': '1.1', 'havana': '1.1', } def __init__(self): super(CertAPI, self).__init__() target = messaging.Target(topic=CONF.cert_topic, version='2.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.cert, CONF.upgrade_levels.cert) self.client = rpc.get_client(target, version_cap=version_cap) def _get_compat_version(self, current, havana_compat): if not self.client.can_send_version(current): return havana_compat return current def revoke_certs_by_user(self, ctxt, user_id): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'revoke_certs_by_user', user_id=user_id) def revoke_certs_by_project(self, ctxt, project_id): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'revoke_certs_by_project', project_id=project_id) def revoke_certs_by_user_and_project(self, ctxt, user_id, project_id): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'revoke_certs_by_user_and_project', user_id=user_id, project_id=project_id) def generate_x509_cert(self, ctxt, user_id, project_id): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'generate_x509_cert', user_id=user_id, project_id=project_id) def fetch_ca(self, ctxt, project_id): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'fetch_ca', project_id=project_id) def fetch_crl(self, ctxt, project_id): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'fetch_crl', project_id=project_id) def decrypt_text(self, ctxt, project_id, text): # NOTE(russellb) Havana compat version = self._get_compat_version('2.0', '1.0') cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'decrypt_text', project_id=project_id, text=text) nova-2014.1/nova/network/0000775000175400017540000000000012323722546016344 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/network/security_group/0000775000175400017540000000000012323722546021427 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/network/security_group/neutron_driver.py0000664000175400017540000005407312323721477025061 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nicira, Inc. # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import sys from neutronclient.common import exceptions as n_exc from neutronclient.neutron import v2_0 as neutronv20 from oslo.config import cfg import six from webob import exc from nova.compute import api as compute_api from nova import exception from nova.network import neutronv2 from nova.network.security_group import security_group_base from nova.objects import security_group from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import uuidutils from nova import utils wrap_check_security_groups_policy = compute_api.policy_decorator( scope='compute:security_groups') CONF = cfg.CONF LOG = logging.getLogger(__name__) # NOTE: Neutron client has a max URL length of 8192, so we have # to limit the number of IDs we include in any single search. Really # doesn't seem to be any point in making this a config value. MAX_SEARCH_IDS = 150 class SecurityGroupAPI(security_group_base.SecurityGroupBase): id_is_uuid = True def create_security_group(self, context, name, description): neutron = neutronv2.get_client(context) body = self._make_neutron_security_group_dict(name, description) try: security_group = neutron.create_security_group( body).get('security_group') except n_exc.NeutronClientException as e: exc_info = sys.exc_info() LOG.exception(_("Neutron Error creating security group %s"), name) if e.status_code == 401: # TODO(arosen) Cannot raise generic response from neutron here # as this error code could be related to bad input or over # quota raise exc.HTTPBadRequest() elif e.status_code == 409: self.raise_over_quota(unicode(e)) raise exc_info[0], exc_info[1], exc_info[2] return self._convert_to_nova_security_group_format(security_group) def update_security_group(self, context, security_group, name, description): neutron = neutronv2.get_client(context) body = self._make_neutron_security_group_dict(name, description) try: security_group = neutron.update_security_group( security_group['id'], body).get('security_group') except n_exc.NeutronClientException as e: exc_info = sys.exc_info() LOG.exception(_("Neutron Error updating security group %s"), name) if e.status_code == 401: # TODO(arosen) Cannot raise generic response from neutron here # as this error code could be related to bad input or over # quota raise exc.HTTPBadRequest() raise exc_info[0], exc_info[1], exc_info[2] return self._convert_to_nova_security_group_format(security_group) def _convert_to_nova_security_group_format(self, security_group): nova_group = {} nova_group['id'] = security_group['id'] nova_group['description'] = security_group['description'] nova_group['name'] = security_group['name'] nova_group['project_id'] = security_group['tenant_id'] nova_group['rules'] = [] for rule in security_group.get('security_group_rules', []): if rule['direction'] == 'ingress': nova_group['rules'].append( self._convert_to_nova_security_group_rule_format(rule)) return nova_group def _convert_to_nova_security_group_rule_format(self, rule): nova_rule = {} nova_rule['id'] = rule['id'] nova_rule['parent_group_id'] = rule['security_group_id'] nova_rule['protocol'] = rule['protocol'] if (nova_rule['protocol'] and rule.get('port_range_min') is None and rule.get('port_range_max') is None): if rule['protocol'].upper() in ['TCP', 'UDP']: nova_rule['from_port'] = 1 nova_rule['to_port'] = 65535 else: nova_rule['from_port'] = -1 nova_rule['to_port'] = -1 else: nova_rule['from_port'] = rule.get('port_range_min') nova_rule['to_port'] = rule.get('port_range_max') nova_rule['group_id'] = rule['remote_group_id'] nova_rule['cidr'] = self.parse_cidr(rule.get('remote_ip_prefix')) return nova_rule def get(self, context, name=None, id=None, map_exception=False): neutron = neutronv2.get_client(context) try: if not id and name: id = neutronv20.find_resourceid_by_name_or_id( neutron, 'security_group', name) group = neutron.show_security_group(id).get('security_group') except n_exc.NeutronClientNoUniqueMatch as e: raise exception.NoUniqueMatch(six.text_type(e)) except n_exc.NeutronClientException as e: exc_info = sys.exc_info() if e.status_code == 404: LOG.debug(_("Neutron security group %s not found"), name) self.raise_not_found(unicode(e)) else: LOG.error(_("Neutron Error: %s"), e) raise exc_info[0], exc_info[1], exc_info[2] return self._convert_to_nova_security_group_format(group) def list(self, context, names=None, ids=None, project=None, search_opts=None): """Returns list of security group rules owned by tenant.""" neutron = neutronv2.get_client(context) search_opts = {} if names: search_opts['name'] = names if ids: search_opts['id'] = ids if project: search_opts['tenant_id'] = project try: security_groups = neutron.list_security_groups(**search_opts).get( 'security_groups') except n_exc.NeutronClientException: with excutils.save_and_reraise_exception(): LOG.exception(_("Neutron Error getting security groups")) converted_rules = [] for security_group in security_groups: converted_rules.append( self._convert_to_nova_security_group_format(security_group)) return converted_rules def validate_id(self, id): if not uuidutils.is_uuid_like(id): msg = _("Security group id should be uuid") self.raise_invalid_property(msg) return id def destroy(self, context, security_group): """This function deletes a security group.""" neutron = neutronv2.get_client(context) try: neutron.delete_security_group(security_group['id']) except n_exc.NeutronClientException as e: exc_info = sys.exc_info() if e.status_code == 404: self.raise_not_found(unicode(e)) elif e.status_code == 409: self.raise_invalid_property(unicode(e)) else: LOG.error(_("Neutron Error: %s"), e) raise exc_info[0], exc_info[1], exc_info[2] def add_rules(self, context, id, name, vals): """Add security group rule(s) to security group. Note: the Nova security group API doesn't support adding muliple security group rules at once but the EC2 one does. Therefore, this function is written to support both. Multiple rules are installed to a security group in neutron using bulk support. """ neutron = neutronv2.get_client(context) body = self._make_neutron_security_group_rules_list(vals) try: rules = neutron.create_security_group_rule( body).get('security_group_rules') except n_exc.NeutronClientException as e: exc_info = sys.exc_info() if e.status_code == 404: LOG.exception(_("Neutron Error getting security group %s"), name) self.raise_not_found(unicode(e)) elif e.status_code == 409: LOG.exception(_("Neutron Error adding rules to security " "group %s"), name) self.raise_over_quota(unicode(e)) else: LOG.exception(_("Neutron Error:")) raise exc_info[0], exc_info[1], exc_info[2] converted_rules = [] for rule in rules: converted_rules.append( self._convert_to_nova_security_group_rule_format(rule)) return converted_rules def _make_neutron_security_group_dict(self, name, description): return {'security_group': {'name': name, 'description': description}} def _make_neutron_security_group_rules_list(self, rules): new_rules = [] for rule in rules: new_rule = {} # nova only supports ingress rules so all rules are ingress. new_rule['direction'] = "ingress" new_rule['protocol'] = rule.get('protocol') # FIXME(arosen) Nova does not expose ethertype on security group # rules. Therefore, in the case of self referential rules we # should probably assume they want to allow both IPv4 and IPv6. # Unfortunately, this would require adding two rules in neutron. # The reason we do not do this is because when the user using the # nova api wants to remove the rule we'd have to have some way to # know that we should delete both of these rules in neutron. # For now, self referential rules only support IPv4. if not rule.get('cidr'): new_rule['ethertype'] = 'IPv4' else: new_rule['ethertype'] = utils.get_ip_version(rule.get('cidr')) new_rule['remote_ip_prefix'] = rule.get('cidr') new_rule['security_group_id'] = rule.get('parent_group_id') new_rule['remote_group_id'] = rule.get('group_id') if 'from_port' in rule and rule['from_port'] != -1: new_rule['port_range_min'] = rule['from_port'] if 'to_port' in rule and rule['to_port'] != -1: new_rule['port_range_max'] = rule['to_port'] new_rules.append(new_rule) return {'security_group_rules': new_rules} def remove_rules(self, context, security_group, rule_ids): neutron = neutronv2.get_client(context) rule_ids = set(rule_ids) try: # The ec2 api allows one to delete multiple security group rules # at once. Since there is no bulk delete for neutron the best # thing we can do is delete the rules one by one and hope this # works.... :/ for rule_id in range(0, len(rule_ids)): neutron.delete_security_group_rule(rule_ids.pop()) except n_exc.NeutronClientException as e: with excutils.save_and_reraise_exception(): LOG.exception(_("Neutron Error unable to delete %s"), rule_ids) def get_rule(self, context, id): neutron = neutronv2.get_client(context) try: rule = neutron.show_security_group_rule( id).get('security_group_rule') except n_exc.NeutronClientException as e: exc_info = sys.exc_info() if e.status_code == 404: LOG.debug(_("Neutron security group rule %s not found"), id) self.raise_not_found(unicode(e)) else: LOG.error(_("Neutron Error: %s"), e) raise exc_info[0], exc_info[1], exc_info[2] return self._convert_to_nova_security_group_rule_format(rule) def _get_ports_from_server_list(self, servers, neutron): """Returns a list of ports used by the servers.""" def _chunk_by_ids(servers, limit): ids = [] for server in servers: ids.append(server['id']) if len(ids) >= limit: yield ids ids = [] if ids: yield ids # Note: Have to split the query up as the search criteria # form part of the URL, which has a fixed max size ports = [] for ids in _chunk_by_ids(servers, MAX_SEARCH_IDS): search_opts = {'device_id': ids} ports.extend(neutron.list_ports(**search_opts).get('ports')) return ports def _get_secgroups_from_port_list(self, ports, neutron): """Returns a dict of security groups keyed by their ids.""" def _chunk_by_ids(sg_ids, limit): sg_id_list = [] for sg_id in sg_ids: sg_id_list.append(sg_id) if len(sg_id_list) >= limit: yield sg_id_list sg_id_list = [] if sg_id_list: yield sg_id_list # Find the set of unique SecGroup IDs to search for sg_ids = set() for port in ports: sg_ids.update(port.get('security_groups', [])) # Note: Have to split the query up as the search criteria # form part of the URL, which has a fixed max size security_groups = {} for sg_id_list in _chunk_by_ids(sg_ids, MAX_SEARCH_IDS): sg_search_opts = {'id': sg_id_list} search_results = neutron.list_security_groups(**sg_search_opts) for sg in search_results.get('security_groups'): security_groups[sg['id']] = sg return security_groups def get_instances_security_groups_bindings(self, context, servers, detailed=False): """Returns a dict(instance_id, [security_groups]) to allow obtaining all of the instances and their security groups in one shot. """ neutron = neutronv2.get_client(context) ports = self._get_ports_from_server_list(servers, neutron) security_groups = self._get_secgroups_from_port_list(ports, neutron) instances_security_group_bindings = {} for port in ports: for port_sg_id in port.get('security_groups', []): # Note: have to check we found port_sg as its possible # the port has an SG that this user doesn't have access to port_sg = security_groups.get(port_sg_id) if port_sg: if detailed: sg_entry = self._convert_to_nova_security_group_format( port_sg) instances_security_group_bindings.setdefault( port['device_id'], []).append(sg_entry) else: # name is optional in neutron so if not specified # return id name = port_sg.get('name') if not name: name = port_sg.get('id') sg_entry = {'name': name} instances_security_group_bindings.setdefault( port['device_id'], []).append(sg_entry) return instances_security_group_bindings def get_instance_security_groups(self, context, instance_uuid, detailed=False): """Returns the security groups that are associated with an instance. If detailed is True then it also returns the full details of the security groups associated with an instance. """ servers = [{'id': instance_uuid}] sg_bindings = self.get_instances_security_groups_bindings( context, servers, detailed) return sg_bindings.get(instance_uuid) def _has_security_group_requirements(self, port): port_security_enabled = port.get('port_security_enabled', True) has_ip = port.get('fixed_ips') if has_ip: return port_security_enabled return False @wrap_check_security_groups_policy def add_to_instance(self, context, instance, security_group_name): """Add security group to the instance.""" neutron = neutronv2.get_client(context) try: security_group_id = neutronv20.find_resourceid_by_name_or_id( neutron, 'security_group', security_group_name) except n_exc.NeutronClientNoUniqueMatch as e: raise exception.NoUniqueMatch(six.text_type(e)) except n_exc.NeutronClientException as e: exc_info = sys.exc_info() if e.status_code == 404: msg = (_("Security group %(name)s is not found for " "project %(project)s") % {'name': security_group_name, 'project': context.project_id}) self.raise_not_found(msg) else: LOG.exception(_("Neutron Error:")) raise exc_info[0], exc_info[1], exc_info[2] params = {'device_id': instance['uuid']} try: ports = neutron.list_ports(**params).get('ports') except n_exc.NeutronClientException: with excutils.save_and_reraise_exception(): LOG.exception(_("Neutron Error:")) if not ports: msg = (_("instance_id %s could not be found as device id on" " any ports") % instance['uuid']) self.raise_not_found(msg) for port in ports: if not self._has_security_group_requirements(port): LOG.warn(_("Cannot add security group %(name)s to %(instance)s" " since the port %(port_id)s does not meet security" " requirements"), {'name': security_group_name, 'instance': instance['uuid'], 'port_id': port['id']}) raise exception.SecurityGroupCannotBeApplied() if 'security_groups' not in port: port['security_groups'] = [] port['security_groups'].append(security_group_id) updated_port = {'security_groups': port['security_groups']} try: LOG.info(_("Adding security group %(security_group_id)s to " "port %(port_id)s"), {'security_group_id': security_group_id, 'port_id': port['id']}) neutron.update_port(port['id'], {'port': updated_port}) except Exception: with excutils.save_and_reraise_exception(): LOG.exception(_("Neutron Error:")) @wrap_check_security_groups_policy def remove_from_instance(self, context, instance, security_group_name): """Remove the security group associated with the instance.""" neutron = neutronv2.get_client(context) try: security_group_id = neutronv20.find_resourceid_by_name_or_id( neutron, 'security_group', security_group_name) except n_exc.NeutronClientException as e: exc_info = sys.exc_info() if e.status_code == 404: msg = (_("Security group %(name)s is not found for " "project %(project)s") % {'name': security_group_name, 'project': context.project_id}) self.raise_not_found(msg) else: LOG.exception(_("Neutron Error:")) raise exc_info[0], exc_info[1], exc_info[2] params = {'device_id': instance['uuid']} try: ports = neutron.list_ports(**params).get('ports') except n_exc.NeutronClientException: with excutils.save_and_reraise_exception(): LOG.exception(_("Neutron Error:")) if not ports: msg = (_("instance_id %s could not be found as device id on" " any ports") % instance['uuid']) self.raise_not_found(msg) found_security_group = False for port in ports: try: port.get('security_groups', []).remove(security_group_id) except ValueError: # When removing a security group from an instance the security # group should be on both ports since it was added this way if # done through the nova api. In case it is not a 404 is only # raised if the security group is not found on any of the # ports on the instance. continue updated_port = {'security_groups': port['security_groups']} try: LOG.info(_("Adding security group %(security_group_id)s to " "port %(port_id)s"), {'security_group_id': security_group_id, 'port_id': port['id']}) neutron.update_port(port['id'], {'port': updated_port}) found_security_group = True except Exception: with excutils.save_and_reraise_exception(): LOG.exception(_("Neutron Error:")) if not found_security_group: msg = (_("Security group %(security_group_name)s not associated " "with the instance %(instance)s") % {'security_group_name': security_group_name, 'instance': instance['uuid']}) self.raise_not_found(msg) def populate_security_groups(self, instance, security_groups): # Setting to emply list since we do not want to populate this field # in the nova database if using the neutron driver instance['security_groups'] = security_group.SecurityGroupList() instance['security_groups'].objects = [] nova-2014.1/nova/network/security_group/security_group_base.py0000664000175400017540000002050312323721477026060 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Piston Cloud Computing, Inc. # Copyright 2012 Red Hat, Inc. # Copyright 2013 Nicira, Inc. # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import urllib from oslo.config import cfg from nova import exception from nova.openstack.common.gettextutils import _ from nova import utils CONF = cfg.CONF class SecurityGroupBase(object): def parse_cidr(self, cidr): if cidr: try: cidr = urllib.unquote(cidr).decode() except Exception as e: self.raise_invalid_cidr(cidr, e) if not utils.is_valid_cidr(cidr): self.raise_invalid_cidr(cidr) return cidr else: return '0.0.0.0/0' @staticmethod def new_group_ingress_rule(grantee_group_id, protocol, from_port, to_port): return SecurityGroupBase._new_ingress_rule( protocol, from_port, to_port, group_id=grantee_group_id) @staticmethod def new_cidr_ingress_rule(grantee_cidr, protocol, from_port, to_port): return SecurityGroupBase._new_ingress_rule( protocol, from_port, to_port, cidr=grantee_cidr) @staticmethod def _new_ingress_rule(ip_protocol, from_port, to_port, group_id=None, cidr=None): values = {} if group_id: values['group_id'] = group_id # Open everything if an explicit port range or type/code are not # specified, but only if a source group was specified. ip_proto_upper = ip_protocol.upper() if ip_protocol else '' if (ip_proto_upper == 'ICMP' and from_port is None and to_port is None): from_port = -1 to_port = -1 elif (ip_proto_upper in ['TCP', 'UDP'] and from_port is None and to_port is None): from_port = 1 to_port = 65535 elif cidr: values['cidr'] = cidr if ip_protocol and from_port is not None and to_port is not None: ip_protocol = str(ip_protocol) try: # Verify integer conversions from_port = int(from_port) to_port = int(to_port) except ValueError: if ip_protocol.upper() == 'ICMP': raise exception.InvalidInput(reason="Type and" " Code must be integers for ICMP protocol type") else: raise exception.InvalidInput(reason="To and From ports " "must be integers") if ip_protocol.upper() not in ['TCP', 'UDP', 'ICMP']: raise exception.InvalidIpProtocol(protocol=ip_protocol) # Verify that from_port must always be less than # or equal to to_port if (ip_protocol.upper() in ['TCP', 'UDP'] and (from_port > to_port)): raise exception.InvalidPortRange(from_port=from_port, to_port=to_port, msg="Former value cannot" " be greater than the later") # Verify valid TCP, UDP port ranges if (ip_protocol.upper() in ['TCP', 'UDP'] and (from_port < 1 or to_port > 65535)): raise exception.InvalidPortRange(from_port=from_port, to_port=to_port, msg="Valid TCP ports should" " be between 1-65535") # Verify ICMP type and code if (ip_protocol.upper() == "ICMP" and (from_port < -1 or from_port > 255 or to_port < -1 or to_port > 255)): raise exception.InvalidPortRange(from_port=from_port, to_port=to_port, msg="For ICMP, the" " type:code must be valid") values['protocol'] = ip_protocol values['from_port'] = from_port values['to_port'] = to_port else: # If cidr based filtering, protocol and ports are mandatory if cidr: return None return values def create_security_group_rule(self, context, security_group, new_rule): if self.rule_exists(security_group, new_rule): msg = (_('This rule already exists in group %s') % new_rule['parent_group_id']) self.raise_group_already_exists(msg) return self.add_rules(context, new_rule['parent_group_id'], security_group['name'], [new_rule])[0] def rule_exists(self, security_group, new_rule): """Indicates whether the specified rule is already defined in the given security group. """ for rule in security_group['rules']: is_duplicate = True keys = ('group_id', 'cidr', 'from_port', 'to_port', 'protocol') for key in keys: if rule.get(key) != new_rule.get(key): is_duplicate = False break if is_duplicate: return rule.get('id') or True return False def validate_property(self, value, property, allowed): pass def ensure_default(self, context): pass def trigger_handler(self, event, *args): pass def trigger_rules_refresh(self, context, id): """Called when a rule is added to or removed from a security_group.""" pass def trigger_members_refresh(self, context, group_ids): """Called when a security group gains a new or loses a member. Sends an update request to each compute node for each instance for which this is relevant. """ pass def populate_security_groups(self, instance, security_groups): """Called when populating the database for an instances security groups. """ raise NotImplementedError() def create_security_group(self, context, name, description): raise NotImplementedError() def update_security_group(self, context, security_group, name, description): raise NotImplementedError() def get(self, context, name=None, id=None, map_exception=False): raise NotImplementedError() def list(self, context, names=None, ids=None, project=None, search_opts=None): raise NotImplementedError() def destroy(self, context, security_group): raise NotImplementedError() def add_rules(self, context, id, name, vals): raise NotImplementedError() def remove_rules(self, context, security_group, rule_ids): raise NotImplementedError() def get_rule(self, context, id): raise NotImplementedError() def get_instance_security_groups(self, context, instance_uuid, detailed=False): raise NotImplementedError() def add_to_instance(self, context, instance, security_group_name): raise NotImplementedError() def remove_from_instance(self, context, instance, security_group_name): raise NotImplementedError() @staticmethod def raise_invalid_property(msg): raise NotImplementedError() @staticmethod def raise_group_already_exists(msg): raise NotImplementedError() @staticmethod def raise_invalid_group(msg): raise NotImplementedError() @staticmethod def raise_invalid_cidr(cidr, decoding_exception=None): raise NotImplementedError() @staticmethod def raise_over_quota(msg): raise NotImplementedError() @staticmethod def raise_not_found(msg): raise NotImplementedError() nova-2014.1/nova/network/security_group/openstack_driver.py0000664000175400017540000000312112323721477025342 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nicira, Inc. # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova.openstack.common import importutils security_group_opts = [ cfg.StrOpt('security_group_api', default='nova', help='The full class name of the security API class'), ] CONF = cfg.CONF CONF.register_opts(security_group_opts) NOVA_DRIVER = ('nova.api.openstack.compute.contrib.security_groups.' 'NativeNovaSecurityGroupAPI') NEUTRON_DRIVER = ('nova.api.openstack.compute.contrib.security_groups.' 'NativeNeutronSecurityGroupAPI') def get_openstack_security_group_driver(): if CONF.security_group_api.lower() == 'nova': return importutils.import_object(NOVA_DRIVER) elif CONF.security_group_api.lower() in ('neutron', 'quantum'): return importutils.import_object(NEUTRON_DRIVER) else: return importutils.import_object(CONF.security_group_api) def is_neutron_security_groups(): return CONF.security_group_api.lower() in ('neutron', 'quantum') nova-2014.1/nova/network/security_group/__init__.py0000664000175400017540000000000012323721477023530 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/network/driver.py0000664000175400017540000000256312323721477020221 0ustar jenkinsjenkins00000000000000# 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. import sys from oslo.config import cfg from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import log as logging driver_opts = [ cfg.StrOpt('network_driver', default='nova.network.linux_net', help='Driver to use for network creation'), ] CONF = cfg.CONF CONF.register_opts(driver_opts) LOG = logging.getLogger(__name__) def load_network_driver(network_driver=None): if not network_driver: network_driver = CONF.network_driver if not network_driver: LOG.error(_("Network driver option required, but not specified")) sys.exit(1) LOG.info(_("Loading network driver '%s'") % network_driver) return importutils.import_module(network_driver) nova-2014.1/nova/network/dns_driver.py0000664000175400017540000000262712323721477021066 0ustar jenkinsjenkins00000000000000# Copyright 2011 Andrew Bogott for the Wikimedia Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. class DNSDriver(object): """Defines the DNS manager interface. Does nothing.""" def __init__(self): pass def get_domains(self): raise NotImplementedError() def create_entry(self, _name, _address, _type, _domain): raise NotImplementedError() def delete_entry(self, _name, _domain): raise NotImplementedError() def modify_address(self, _name, _address, _domain): raise NotImplementedError() def get_entries_by_address(self, _address, _domain): raise NotImplementedError() def get_entries_by_name(self, _name, _domain): raise NotImplementedError() def create_domain(self, _fqdomain): raise NotImplementedError() def delete_domain(self, _fqdomain): raise NotImplementedError() nova-2014.1/nova/network/l3.py0000664000175400017540000001311412323721477017236 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nicira Networks, Inc # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.network import linux_net from nova.openstack.common import log as logging from nova import utils LOG = logging.getLogger(__name__) class L3Driver(object): """Abstract class that defines a generic L3 API.""" def __init__(self, l3_lib=None): raise NotImplementedError() def initialize(self, **kwargs): """Set up basic L3 networking functionality.""" raise NotImplementedError() def initialize_network(self, network): """Enable rules for a specific network.""" raise NotImplementedError() def initialize_gateway(self, network): """Set up a gateway on this network.""" raise NotImplementedError() def remove_gateway(self, network_ref): """Remove an existing gateway on this network.""" raise NotImplementedError() def is_initialized(self): """:returns: True/False (whether the driver is initialized).""" raise NotImplementedError() def add_floating_ip(self, floating_ip, fixed_ip, l3_interface_id, network=None): """Add a floating IP bound to the fixed IP with an optional l3_interface_id. Some drivers won't care about the l3_interface_id so just pass None in that case. Network is also an optional parameter. """ raise NotImplementedError() def remove_floating_ip(self, floating_ip, fixed_ip, l3_interface_id, network=None): raise NotImplementedError() def add_vpn(self, public_ip, port, private_ip): raise NotImplementedError() def remove_vpn(self, public_ip, port, private_ip): raise NotImplementedError() def clean_conntrack(self, fixed_ip): raise NotImplementedError() def teardown(self): raise NotImplementedError() class LinuxNetL3(L3Driver): """L3 driver that uses linux_net as the backend.""" def __init__(self): self.initialized = False def initialize(self, **kwargs): if self.initialized: return LOG.debug("Initializing linux_net L3 driver") fixed_range = kwargs.get('fixed_range', False) networks = kwargs.get('networks', None) if not fixed_range and networks is not None: for network in networks: self.initialize_network(network['cidr']) else: linux_net.init_host() linux_net.ensure_metadata_ip() linux_net.metadata_forward() self.initialized = True def is_initialized(self): return self.initialized def initialize_network(self, cidr): linux_net.init_host(cidr) def initialize_gateway(self, network_ref): mac_address = utils.generate_mac_address() dev = linux_net.plug(network_ref, mac_address, gateway=(network_ref['gateway'] is not None)) linux_net.initialize_gateway_device(dev, network_ref) def remove_gateway(self, network_ref): linux_net.unplug(network_ref) def add_floating_ip(self, floating_ip, fixed_ip, l3_interface_id, network=None): linux_net.ensure_floating_forward(floating_ip, fixed_ip, l3_interface_id, network) linux_net.bind_floating_ip(floating_ip, l3_interface_id) def remove_floating_ip(self, floating_ip, fixed_ip, l3_interface_id, network=None): linux_net.unbind_floating_ip(floating_ip, l3_interface_id) linux_net.remove_floating_forward(floating_ip, fixed_ip, l3_interface_id, network) def add_vpn(self, public_ip, port, private_ip): linux_net.ensure_vpn_forward(public_ip, port, private_ip) def remove_vpn(self, public_ip, port, private_ip): # Linux net currently doesn't implement any way of removing # the VPN forwarding rules pass def clean_conntrack(self, fixed_ip): linux_net.clean_conntrack(fixed_ip) def teardown(self): pass class NullL3(L3Driver): """The L3 driver that doesn't do anything. This class can be used when nova-network should not manipulate L3 forwarding at all (e.g., in a Flat or FlatDHCP scenario). """ def __init__(self): pass def initialize(self, **kwargs): pass def is_initialized(self): return True def initialize_network(self, cidr): pass def initialize_gateway(self, network_ref): pass def remove_gateway(self, network_ref): pass def add_floating_ip(self, floating_ip, fixed_ip, l3_interface_id, network=None): pass def remove_floating_ip(self, floating_ip, fixed_ip, l3_interface_id, network=None): pass def add_vpn(self, public_ip, port, private_ip): pass def remove_vpn(self, public_ip, port, private_ip): pass def clean_conntrack(self, fixed_ip): pass def teardown(self): pass nova-2014.1/nova/network/manager.py0000664000175400017540000025061412323721477020342 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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. """Network Hosts are responsible for allocating ips and setting up network. There are multiple backend drivers that handle specific types of networking topologies. All of the network commands are issued to a subclass of :class:`NetworkManager`. **Related Flags** :network_driver: Driver to use for network creation :flat_network_bridge: Bridge device for simple network instances :flat_interface: FlatDhcp will bridge into this interface if set :flat_network_dns: Dns for simple network :vlan_start: First VLAN for private networks :vpn_ip: Public IP for the cloudpipe VPN servers :vpn_start: First Vpn port for private networks :cnt_vpn_clients: Number of addresses reserved for vpn clients :network_size: Number of addresses in each private subnet :fixed_range: Fixed IP address block :fixed_ip_disassociate_timeout: Seconds after which a deallocated ip is disassociated :create_unique_mac_address_attempts: Number of times to attempt creating a unique mac address """ import datetime import itertools import math import re import uuid import eventlet import netaddr from oslo.config import cfg from oslo import messaging from nova import conductor from nova import context from nova import exception from nova import ipv6 from nova import manager from nova.network import api as network_api from nova.network import driver from nova.network import floating_ips from nova.network import model as network_model from nova.network import rpcapi as network_rpcapi from nova.objects import base as obj_base from nova.objects import dns_domain as dns_domain_obj from nova.objects import fixed_ip as fixed_ip_obj from nova.objects import instance as instance_obj from nova.objects import instance_info_cache as info_cache_obj from nova.objects import network as network_obj from nova.objects import quotas as quotas_obj from nova.objects import service as service_obj from nova.objects import virtual_interface as vif_obj from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import periodic_task from nova.openstack.common import strutils from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import servicegroup from nova import utils LOG = logging.getLogger(__name__) network_opts = [ cfg.StrOpt('flat_network_bridge', help='Bridge for simple network instances'), cfg.StrOpt('flat_network_dns', default='8.8.4.4', help='DNS server for simple network'), cfg.BoolOpt('flat_injected', default=False, help='Whether to attempt to inject network setup into guest'), cfg.StrOpt('flat_interface', help='FlatDhcp will bridge into this interface if set'), cfg.IntOpt('vlan_start', default=100, help='First VLAN for private networks'), cfg.StrOpt('vlan_interface', help='VLANs will bridge into this interface if set'), cfg.IntOpt('num_networks', default=1, help='Number of networks to support'), cfg.StrOpt('vpn_ip', default='$my_ip', help='Public IP for the cloudpipe VPN servers'), cfg.IntOpt('vpn_start', default=1000, help='First Vpn port for private networks'), cfg.IntOpt('network_size', default=256, help='Number of addresses in each private subnet'), cfg.StrOpt('fixed_range_v6', default='fd00::/48', help='Fixed IPv6 address block'), cfg.StrOpt('gateway', help='Default IPv4 gateway'), cfg.StrOpt('gateway_v6', help='Default IPv6 gateway'), cfg.IntOpt('cnt_vpn_clients', default=0, help='Number of addresses reserved for vpn clients'), cfg.IntOpt('fixed_ip_disassociate_timeout', default=600, help='Seconds after which a deallocated IP is disassociated'), cfg.IntOpt('create_unique_mac_address_attempts', default=5, help='Number of attempts to create unique mac address'), cfg.BoolOpt('fake_call', default=False, help='If True, skip using the queue and make local calls'), cfg.BoolOpt('teardown_unused_network_gateway', default=False, help='If True, unused gateway devices (VLAN and bridge) are ' 'deleted in VLAN network mode with multi hosted ' 'networks'), cfg.BoolOpt('force_dhcp_release', default=True, help='If True, send a dhcp release on instance termination'), cfg.BoolOpt('share_dhcp_address', default=False, help='If True in multi_host mode, all compute hosts share ' 'the same dhcp address. The same IP address used for ' 'DHCP will be added on each nova-network node which ' 'is only visible to the vms on the same host.'), cfg.BoolOpt('update_dns_entries', default=False, help='If True, when a DNS entry must be updated, it sends a ' 'fanout cast to all network hosts to update their DNS ' 'entries in multi host mode'), cfg.IntOpt("dns_update_periodic_interval", default=-1, help='Number of seconds to wait between runs of updates to DNS ' 'entries.'), cfg.StrOpt('dhcp_domain', default='novalocal', help='Domain to use for building the hostnames'), cfg.StrOpt('l3_lib', default='nova.network.l3.LinuxNetL3', help="Indicates underlying L3 management library"), ] CONF = cfg.CONF CONF.register_opts(network_opts) CONF.import_opt('use_ipv6', 'nova.netconf') CONF.import_opt('my_ip', 'nova.netconf') CONF.import_opt('network_topic', 'nova.network.rpcapi') CONF.import_opt('fake_network', 'nova.network.linux_net') class RPCAllocateFixedIP(object): """Mixin class originally for FlatDCHP and VLAN network managers. used since they share code to RPC.call allocate_fixed_ip on the correct network host to configure dnsmasq """ servicegroup_api = None def _allocate_fixed_ips(self, context, instance_id, host, networks, **kwargs): """Calls allocate_fixed_ip once for each network.""" green_threads = [] vpn = kwargs.get('vpn') requested_networks = kwargs.get('requested_networks') for network in networks: address = None if requested_networks is not None: for address in (fixed_ip for (uuid, fixed_ip) in requested_networks if network['uuid'] == uuid): break # NOTE(vish): if we are not multi_host pass to the network host # NOTE(tr3buchet): but if we are, host came from instance['host'] if not network['multi_host']: host = network['host'] # NOTE(vish): if there is no network host, set one if host is None: network_p = obj_base.obj_to_primitive(network) host = self.network_rpcapi.set_network_host(context, network_p) if host != self.host: # need to call allocate_fixed_ip to correct network host green_threads.append(eventlet.spawn( self.network_rpcapi._rpc_allocate_fixed_ip, context, instance_id, network['id'], address, vpn, host)) else: # i am the correct host, run here self.allocate_fixed_ip(context, instance_id, network, vpn=vpn, address=address) # wait for all of the allocates (if any) to finish for gt in green_threads: gt.wait() def _rpc_allocate_fixed_ip(self, context, instance_id, network_id, **kwargs): """Sits in between _allocate_fixed_ips and allocate_fixed_ip to perform network lookup on the far side of rpc. """ network = self._get_network_by_id(context, network_id) return self.allocate_fixed_ip(context, instance_id, network, **kwargs) def deallocate_fixed_ip(self, context, address, host=None, teardown=True, instance=None): """Call the superclass deallocate_fixed_ip if i'm the correct host otherwise call to the correct host """ fixed_ip = fixed_ip_obj.FixedIP.get_by_address( context, address, expected_attrs=['network']) network = fixed_ip.network # NOTE(vish): if we are not multi_host pass to the network host # NOTE(tr3buchet): but if we are, host came from instance['host'] if not network.multi_host: host = network.host if host == self.host: # NOTE(vish): deallocate the fixed ip locally return super(RPCAllocateFixedIP, self).deallocate_fixed_ip(context, address, instance=instance) if network.multi_host: service = service_obj.Service.get_by_host_and_topic( context, host, CONF.network_topic) if not service or not self.servicegroup_api.service_is_up(service): # NOTE(vish): deallocate the fixed ip locally but don't # teardown network devices return super(RPCAllocateFixedIP, self).deallocate_fixed_ip( context, address, teardown=False, instance=instance) self.network_rpcapi.deallocate_fixed_ip(context, address, host, instance) class NetworkManager(manager.Manager): """Implements common network manager functionality. This class must be subclassed to support specific topologies. host management: hosts configure themselves for networks they are assigned to in the table upon startup. If there are networks in the table which do not have hosts, those will be filled in and have hosts configured as the hosts pick them up one at time during their periodic task. The one at a time part is to flatten the layout to help scale """ target = messaging.Target(version='1.12') # If True, this manager requires VIF to create a bridge. SHOULD_CREATE_BRIDGE = False # If True, this manager requires VIF to create VLAN tag. SHOULD_CREATE_VLAN = False # if True, this manager leverages DHCP DHCP = False timeout_fixed_ips = True required_create_args = [] def __init__(self, network_driver=None, *args, **kwargs): self.driver = driver.load_network_driver(network_driver) self.instance_dns_manager = importutils.import_object( CONF.instance_dns_manager) self.instance_dns_domain = CONF.instance_dns_domain self.floating_dns_manager = importutils.import_object( CONF.floating_ip_dns_manager) self.network_api = network_api.API() self.network_rpcapi = network_rpcapi.NetworkAPI() self.conductor_api = conductor.API() self.servicegroup_api = servicegroup.API() # NOTE(tr3buchet: unless manager subclassing NetworkManager has # already imported ipam, import nova ipam here if not hasattr(self, 'ipam'): self._import_ipam_lib('nova.network.nova_ipam_lib') l3_lib = kwargs.get("l3_lib", CONF.l3_lib) self.l3driver = importutils.import_object(l3_lib) self.quotas_cls = quotas_obj.Quotas super(NetworkManager, self).__init__(service_name='network', *args, **kwargs) def _import_ipam_lib(self, ipam_lib): self.ipam = importutils.import_module(ipam_lib).get_ipam_lib(self) @utils.synchronized('get_dhcp') def _get_dhcp_ip(self, context, network_ref, host=None): """Get the proper dhcp address to listen on.""" # NOTE(vish): this is for compatibility if not network_ref.get('multi_host') or CONF.share_dhcp_address: return network_ref['gateway'] if not host: host = self.host network_id = network_ref['id'] try: fip = fixed_ip_obj.FixedIP.get_by_network_and_host(context, network_id, host) return fip.address except exception.FixedIpNotFoundForNetworkHost: elevated = context.elevated() fip = fixed_ip_obj.FixedIP.associate_pool(elevated, network_id, host=host) return fip.address def get_dhcp_leases(self, ctxt, network_ref): """Broker the request to the driver to fetch the dhcp leases.""" return self.driver.get_dhcp_leases(ctxt, network_ref) def init_host(self): """Do any initialization that needs to be run if this is a standalone service. """ # NOTE(vish): Set up networks for which this host already has # an ip address. ctxt = context.get_admin_context() for network in network_obj.NetworkList.get_by_host(ctxt, self.host): self._setup_network_on_host(ctxt, network) if CONF.update_dns_entries: dev = self.driver.get_dev(network) self.driver.update_dns(ctxt, dev, network) @periodic_task.periodic_task def _disassociate_stale_fixed_ips(self, context): if self.timeout_fixed_ips: now = timeutils.utcnow() timeout = CONF.fixed_ip_disassociate_timeout time = now - datetime.timedelta(seconds=timeout) num = fixed_ip_obj.FixedIP.disassociate_all_by_timeout(context, self.host, time) if num: LOG.debug(_('Disassociated %s stale fixed ip(s)'), num) def set_network_host(self, context, network_ref): """Safely sets the host of the network.""" if not isinstance(network_ref, network_obj.Network): network_ref = network_obj.Network._from_db_object( context, network_obj.Network(), network_ref) LOG.debug(_('setting network host'), context=context) network_ref.host = self.host network_ref.save() return self.host def _do_trigger_security_group_members_refresh_for_instance(self, instance_id): # NOTE(francois.charlier): the instance may have been deleted already # thus enabling `read_deleted` admin_context = context.get_admin_context(read_deleted='yes') instance = instance_obj.Instance.get_by_uuid(admin_context, instance_id) try: # NOTE(vish): We need to make sure the instance info cache has been # updated with new ip info before we trigger the # security group refresh. This is somewhat ineffecient # but avoids doing some dangerous refactoring for a # bug fix. nw_info = self.get_instance_nw_info(admin_context, instance_id, None, None) ic = info_cache_obj.InstanceInfoCache.new(admin_context, instance_id) ic.network_info = nw_info ic.save(update_cells=False) except exception.InstanceInfoCacheNotFound: pass groups = instance.security_groups group_ids = [group.id for group in groups] self.conductor_api.security_groups_trigger_members_refresh( admin_context, group_ids) def get_floating_ips_by_fixed_address(self, context, fixed_address): # NOTE(jkoelker) This is just a stub function. Managers supporting # floating ips MUST override this or use the Mixin return [] def get_instance_uuids_by_ip_filter(self, context, filters): fixed_ip_filter = filters.get('fixed_ip') ip_filter = re.compile(str(filters.get('ip'))) ipv6_filter = re.compile(str(filters.get('ip6'))) # NOTE(jkoelker) Should probably figure out a better way to do # this. But for now it "works", this could suck on # large installs. vifs = vif_obj.VirtualInterfaceList.get_all(context) results = [] for vif in vifs: if vif.instance_uuid is None: continue network = self._get_network_by_id(context, vif.network_id) fixed_ipv6 = None if network['cidr_v6'] is not None: fixed_ipv6 = ipv6.to_global(network['cidr_v6'], vif.address, context.project_id) if fixed_ipv6 and ipv6_filter.match(fixed_ipv6): results.append({'instance_uuid': vif.instance_uuid, 'ip': fixed_ipv6}) fixed_ips = fixed_ip_obj.FixedIPList.get_by_virtual_interface_id( context, vif.id) for fixed_ip in fixed_ips: if not fixed_ip or not fixed_ip.address: continue if str(fixed_ip.address) == fixed_ip_filter: results.append({'instance_uuid': vif.instance_uuid, 'ip': fixed_ip.address}) continue if ip_filter.match(str(fixed_ip.address)): results.append({'instance_uuid': vif.instance_uuid, 'ip': fixed_ip.address}) continue for floating_ip in fixed_ip.floating_ips: if not floating_ip or not floating_ip.address: continue if ip_filter.match(str(floating_ip.address)): results.append({'instance_uuid': vif.instance_uuid, 'ip': floating_ip.address}) continue return results def _get_networks_for_instance(self, context, instance_id, project_id, requested_networks=None): """Determine & return which networks an instance should connect to.""" # TODO(tr3buchet) maybe this needs to be updated in the future if # there is a better way to determine which networks # a non-vlan instance should connect to if requested_networks is not None and len(requested_networks) != 0: network_uuids = [uuid for (uuid, fixed_ip) in requested_networks] networks = self._get_networks_by_uuids(context, network_uuids) else: try: networks = network_obj.NetworkList.get_all(context) except exception.NoNetworksFound: return [] # return only networks which are not vlan networks return [network for network in networks if not network.vlan] def allocate_for_instance(self, context, **kwargs): """Handles allocating the various network resources for an instance. rpc.called by network_api """ instance_uuid = kwargs['instance_id'] if not uuidutils.is_uuid_like(instance_uuid): instance_uuid = kwargs.get('instance_uuid') host = kwargs['host'] project_id = kwargs['project_id'] rxtx_factor = kwargs['rxtx_factor'] requested_networks = kwargs.get('requested_networks') vpn = kwargs['vpn'] macs = kwargs['macs'] admin_context = context.elevated() LOG.debug(_("network allocations"), instance_uuid=instance_uuid, context=context) networks = self._get_networks_for_instance(admin_context, instance_uuid, project_id, requested_networks=requested_networks) networks_list = [self._get_network_dict(network) for network in networks] LOG.debug(_('networks retrieved for instance: |%s|'), networks_list, context=context, instance_uuid=instance_uuid) try: self._allocate_mac_addresses(context, instance_uuid, networks, macs) except Exception as e: with excutils.save_and_reraise_exception(): # If we fail to allocate any one mac address, clean up all # allocated VIFs vif_obj.VirtualInterface.delete_by_instance_uuid(context, instance_uuid) self._allocate_fixed_ips(admin_context, instance_uuid, host, networks, vpn=vpn, requested_networks=requested_networks) if CONF.update_dns_entries: network_ids = [network['id'] for network in networks] self.network_rpcapi.update_dns(context, network_ids) return self.get_instance_nw_info(context, instance_uuid, rxtx_factor, host) def deallocate_for_instance(self, context, **kwargs): """Handles deallocating various network resources for an instance. rpc.called by network_api kwargs can contain fixed_ips to circumvent another db lookup """ # NOTE(francois.charlier): in some cases the instance might be # deleted before the IPs are released, so we need to get deleted # instances too read_deleted_context = context.elevated(read_deleted='yes') if 'instance' in kwargs: instance = kwargs['instance'] instance_uuid = instance.uuid host = instance.host else: instance_id = kwargs['instance_id'] if uuidutils.is_uuid_like(instance_id): instance = instance_obj.Instance.get_by_uuid( read_deleted_context, instance_id) else: instance = instance_obj.Instance.get_by_id( read_deleted_context, instance_id) # NOTE(russellb) in case instance_id was an ID and not UUID instance_uuid = instance.uuid host = kwargs.get('host') try: if 'fixed_ips' in kwargs: fixed_ips = kwargs['fixed_ips'] else: fixed_ips = fixed_ip_obj.FixedIPList.get_by_instance_uuid( read_deleted_context, instance_uuid) except exception.FixedIpNotFoundForInstance: fixed_ips = [] LOG.debug(_("network deallocation for instance"), context=context, instance_uuid=instance_uuid) # deallocate fixed ips for fixed_ip in fixed_ips: self.deallocate_fixed_ip(context, str(fixed_ip.address), host=host, instance=instance) if CONF.update_dns_entries: network_ids = [fixed_ip.network_id for fixed_ip in fixed_ips] self.network_rpcapi.update_dns(context, network_ids) # deallocate vifs (mac addresses) vif_obj.VirtualInterface.delete_by_instance_uuid(read_deleted_context, instance_uuid) @messaging.expected_exceptions(exception.InstanceNotFound) def get_instance_nw_info(self, context, instance_id, rxtx_factor, host, instance_uuid=None, **kwargs): """Creates network info list for instance. called by allocate_for_instance and network_api context needs to be elevated :returns: network info list [(network,info),(network,info)...] where network = dict containing pertinent data from a network db object and info = dict containing pertinent networking data """ use_slave = kwargs.get('use_slave') or False if not uuidutils.is_uuid_like(instance_id): instance_id = instance_uuid instance_uuid = instance_id vifs = vif_obj.VirtualInterfaceList.get_by_instance_uuid(context, instance_uuid, use_slave=use_slave) networks = {} for vif in vifs: if vif.network_id is not None: network = self._get_network_by_id(context, vif.network_id) networks[vif.uuid] = network nw_info = self.build_network_info_model(context, vifs, networks, rxtx_factor, host) return nw_info def build_network_info_model(self, context, vifs, networks, rxtx_factor, instance_host): """Builds a NetworkInfo object containing all network information for an instance. """ nw_info = network_model.NetworkInfo() for vif in vifs: vif_dict = {'id': vif.uuid, 'type': network_model.VIF_TYPE_BRIDGE, 'address': vif.address} # handle case where vif doesn't have a network if not networks.get(vif.uuid): vif = network_model.VIF(**vif_dict) nw_info.append(vif) continue # get network dict for vif from args and build the subnets network = networks[vif.uuid] subnets = self._get_subnets_from_network(context, network, vif, instance_host) # if rxtx_cap data are not set everywhere, set to none try: rxtx_cap = network['rxtx_base'] * rxtx_factor except (TypeError, KeyError): rxtx_cap = None # get fixed_ips v4_IPs = self.ipam.get_v4_ips_by_interface(context, network['uuid'], vif.uuid, network['project_id']) v6_IPs = self.ipam.get_v6_ips_by_interface(context, network['uuid'], vif.uuid, network['project_id']) # create model FixedIPs from these fixed_ips network_IPs = [network_model.FixedIP(address=ip_address) for ip_address in v4_IPs + v6_IPs] # get floating_ips for each fixed_ip # add them to the fixed ip for fixed_ip in network_IPs: if fixed_ip['version'] == 6: continue gfipbfa = self.ipam.get_floating_ips_by_fixed_address floating_ips = gfipbfa(context, fixed_ip['address']) floating_ips = [network_model.IP(address=str(ip['address']), type='floating') for ip in floating_ips] for ip in floating_ips: fixed_ip.add_floating_ip(ip) # add ips to subnets they belong to for subnet in subnets: subnet['ips'] = [fixed_ip for fixed_ip in network_IPs if fixed_ip.is_in_subnet(subnet)] # convert network into a Network model object network = network_model.Network(**self._get_network_dict(network)) # since network currently has no subnets, easily add them all network['subnets'] = subnets # add network and rxtx cap to vif_dict vif_dict['network'] = network if rxtx_cap: vif_dict['rxtx_cap'] = rxtx_cap # create the vif model and add to network_info vif = network_model.VIF(**vif_dict) nw_info.append(vif) return nw_info def _get_network_dict(self, network): """Returns the dict representing necessary and meta network fields.""" # get generic network fields network_dict = {'id': network['uuid'], 'bridge': network['bridge'], 'label': network['label'], 'tenant_id': network['project_id']} # get extra information if network.get('injected'): network_dict['injected'] = network['injected'] return network_dict def _get_subnets_from_network(self, context, network, vif, instance_host=None): """Returns the 1 or 2 possible subnets for a nova network.""" # get subnets ipam_subnets = self.ipam.get_subnets_by_net_id(context, network['project_id'], network['uuid'], vif.uuid) subnets = [] for subnet in ipam_subnets: subnet_dict = {'cidr': subnet['cidr'], 'gateway': network_model.IP( address=subnet['gateway'], type='gateway')} # deal with dhcp if self.DHCP: if network.get('multi_host'): dhcp_server = self._get_dhcp_ip(context, network, instance_host) else: dhcp_server = self._get_dhcp_ip(context, subnet) subnet_dict['dhcp_server'] = dhcp_server subnet_object = network_model.Subnet(**subnet_dict) # add dns info for k in ['dns1', 'dns2']: if subnet.get(k): subnet_object.add_dns( network_model.IP(address=subnet[k], type='dns')) # get the routes for this subnet # NOTE(tr3buchet): default route comes from subnet gateway if subnet.get('id'): routes = self.ipam.get_routes_by_ip_block(context, subnet['id'], network['project_id']) for route in routes: cidr = netaddr.IPNetwork('%s/%s' % (route['destination'], route['netmask'])).cidr subnet_object.add_route( network_model.Route(cidr=str(cidr), gateway=network_model.IP( address=route['gateway'], type='gateway'))) subnets.append(subnet_object) return subnets def _allocate_mac_addresses(self, context, instance_uuid, networks, macs): """Generates mac addresses and creates vif rows in db for them.""" # make a copy we can mutate if macs is not None: available_macs = set(macs) for network in networks: if macs is None: self._add_virtual_interface(context, instance_uuid, network['id']) else: try: mac = available_macs.pop() except KeyError: raise exception.VirtualInterfaceCreateException() self._add_virtual_interface(context, instance_uuid, network['id'], mac) def _add_virtual_interface(self, context, instance_uuid, network_id, mac=None): attempts = 1 if mac else CONF.create_unique_mac_address_attempts for i in range(attempts): try: vif = vif_obj.VirtualInterface() vif.address = mac or utils.generate_mac_address() vif.instance_uuid = instance_uuid vif.network_id = network_id vif.uuid = str(uuid.uuid4()) vif.create(context) return vif except exception.VirtualInterfaceCreateException: # Try again up to max number of attempts pass raise exception.VirtualInterfaceMacAddressException() def add_fixed_ip_to_instance(self, context, instance_id, host, network_id, rxtx_factor=None): """Adds a fixed ip to an instance from specified network.""" if uuidutils.is_uuid_like(network_id): network = self.get_network(context, network_id) else: network = self._get_network_by_id(context, network_id) self._allocate_fixed_ips(context, instance_id, host, [network]) return self.get_instance_nw_info(context, instance_id, rxtx_factor, host) # NOTE(russellb) This method can be removed in 2.0 of this API. It is # deprecated in favor of the method in the base API. def get_backdoor_port(self, context): """Return backdoor port for eventlet_backdoor.""" return self.backdoor_port def remove_fixed_ip_from_instance(self, context, instance_id, host, address, rxtx_factor=None): """Removes a fixed ip from an instance from specified network.""" fixed_ips = fixed_ip_obj.FixedIPList.get_by_instance_uuid(context, instance_id) for fixed_ip in fixed_ips: if str(fixed_ip.address) == address: self.deallocate_fixed_ip(context, address, host) # NOTE(vish): this probably isn't a dhcp ip so just # deallocate it now. In the extremely rare # case that this is a race condition, we # will just get a warn in lease or release. if not fixed_ip.leased: fixed_ip.disassociate() return self.get_instance_nw_info(context, instance_id, rxtx_factor, host) raise exception.FixedIpNotFoundForSpecificInstance( instance_uuid=instance_id, ip=address) def _validate_instance_zone_for_dns_domain(self, context, instance): if not self.instance_dns_domain: return True instance_domain = self.instance_dns_domain domainref = dns_domain_obj.DNSDomain.get_by_domain(context, instance_domain) if domainref is None: LOG.warn(_('instance-dns-zone not found |%s|.'), instance_domain, instance=instance) return True dns_zone = domainref.availability_zone instance_zone = instance.get('availability_zone') if dns_zone and (dns_zone != instance_zone): LOG.warn(_('instance-dns-zone is |%(domain)s|, ' 'which is in availability zone |%(zone)s|. ' 'Instance is in zone |%(zone2)s|. ' 'No DNS record will be created.'), {'domain': instance_domain, 'zone': dns_zone, 'zone2': instance_zone}, instance=instance) return False else: return True def allocate_fixed_ip(self, context, instance_id, network, **kwargs): """Gets a fixed ip from the pool.""" # TODO(vish): when this is called by compute, we can associate compute # with a network, or a cluster of computes with a network # and use that network here with a method like # network_get_by_compute_host address = None # NOTE(vish) This db query could be removed if we pass az and name # (or the whole instance object). instance = instance_obj.Instance.get_by_uuid(context, instance_id) # Check the quota; can't put this in the API because we get # called into from other places quotas = self.quotas_cls() quota_project, quota_user = quotas_obj.ids_from_instance(context, instance) try: quotas.reserve(context, fixed_ips=1, project_id=quota_project, user_id=quota_user) except exception.OverQuota: LOG.warn(_("Quota exceeded for %s, tried to allocate " "fixed IP"), context.project_id) raise exception.FixedIpLimitExceeded() try: if network['cidr']: address = kwargs.get('address', None) if address: fip = fixed_ip_obj.FixedIP.associate(context, address, instance_id, network['id']) else: fip = fixed_ip_obj.FixedIP.associate_pool( context.elevated(), network['id'], instance_id) vif = vif_obj.VirtualInterface.get_by_instance_and_network( context, instance_id, network['id']) fip.allocated = True fip.virtual_interface_id = vif.id fip.save() self._do_trigger_security_group_members_refresh_for_instance( instance_id) name = instance.display_name if self._validate_instance_zone_for_dns_domain(context, instance): self.instance_dns_manager.create_entry( name, str(fip.address), "A", self.instance_dns_domain) self.instance_dns_manager.create_entry( instance_id, str(fip.address), "A", self.instance_dns_domain) self._setup_network_on_host(context, network) quotas.commit(context) return address except Exception: with excutils.save_and_reraise_exception(): quotas.rollback(context) def deallocate_fixed_ip(self, context, address, host=None, teardown=True, instance=None): """Returns a fixed ip to the pool.""" fixed_ip_ref = fixed_ip_obj.FixedIP.get_by_address( context, address, expected_attrs=['network']) instance_uuid = fixed_ip_ref.instance_uuid vif_id = fixed_ip_ref.virtual_interface_id if not instance: # NOTE(vish) This db query could be removed if we pass az and name # (or the whole instance object). # NOTE(danms) We can't use fixed_ip_ref.instance because # instance may be deleted and the relationship # doesn't extend to deleted instances instance = instance_obj.Instance.get_by_uuid( context.elevated(read_deleted='yes'), instance_uuid) quotas = self.quotas_cls() quota_project, quota_user = quotas_obj.ids_from_instance(context, instance) try: quotas.reserve(context, fixed_ips=-1, project_id=quota_project, user_id=quota_user) except Exception: LOG.exception(_("Failed to update usages deallocating " "fixed IP")) self._do_trigger_security_group_members_refresh_for_instance( instance_uuid) if self._validate_instance_zone_for_dns_domain(context, instance): for n in self.instance_dns_manager.get_entries_by_address(address, self.instance_dns_domain): self.instance_dns_manager.delete_entry(n, self.instance_dns_domain) fixed_ip_ref.allocated = False fixed_ip_ref.virtual_interface_id = None fixed_ip_ref.save() if teardown: network = fixed_ip_ref.network if CONF.force_dhcp_release: dev = self.driver.get_dev(network) # NOTE(vish): The below errors should never happen, but there # may be a race condition that is causing them per # https://code.launchpad.net/bugs/968457, so we log # an error to help track down the possible race. msg = _("Unable to release %s because vif doesn't exist.") if not vif_id: LOG.error(msg % address) return vif = vif_obj.VirtualInterface.get_by_id(context, vif_id) if not vif: LOG.error(msg % address) return # NOTE(cfb): Call teardown before release_dhcp to ensure # that the IP can't be re-leased after a release # packet is sent. self._teardown_network_on_host(context, network) # NOTE(vish): This forces a packet so that the release_fixed_ip # callback will get called by nova-dhcpbridge. self.driver.release_dhcp(dev, address, vif.address) # NOTE(yufang521247): This is probably a failed dhcp fixed ip. # DHCPRELEASE packet sent to dnsmasq would not trigger # dhcp-bridge to run. Thus it is better to disassociate such # fixed ip here. fixed_ip_ref = fixed_ip_obj.FixedIP.get_by_address( context, address) if (instance_uuid == fixed_ip_ref.instance_uuid and not fixed_ip_ref.leased): fixed_ip_ref.disassociate() else: # We can't try to free the IP address so just call teardown self._teardown_network_on_host(context, network) # Commit the reservations quotas.commit(context) def lease_fixed_ip(self, context, address): """Called by dhcp-bridge when ip is leased.""" LOG.debug(_('Leased IP |%s|'), address, context=context) fixed_ip = fixed_ip_obj.FixedIP.get_by_address(context, address) if fixed_ip.instance_uuid is None: LOG.warn(_('IP %s leased that is not associated'), address, context=context) return fixed_ip.leased = True fixed_ip.save() if not fixed_ip.allocated: LOG.warn(_('IP |%s| leased that isn\'t allocated'), address, context=context) def release_fixed_ip(self, context, address): """Called by dhcp-bridge when ip is released.""" LOG.debug(_('Released IP |%s|'), address, context=context) fixed_ip = fixed_ip_obj.FixedIP.get_by_address(context, address) if fixed_ip.instance_uuid is None: LOG.warn(_('IP %s released that is not associated'), address, context=context) return if not fixed_ip.leased: LOG.warn(_('IP %s released that was not leased'), address, context=context) fixed_ip.leased = False fixed_ip.save() if not fixed_ip.allocated: fixed_ip.disassociate() @staticmethod def _convert_int_args(kwargs): int_args = ("network_size", "num_networks", "vlan_start", "vpn_start") for key in int_args: try: value = kwargs.get(key) if value is None: continue kwargs[key] = int(value) except ValueError: raise ValueError(_("%s must be an integer") % key) def create_networks(self, context, label, cidr=None, multi_host=None, num_networks=None, network_size=None, cidr_v6=None, gateway=None, gateway_v6=None, bridge=None, bridge_interface=None, dns1=None, dns2=None, fixed_cidr=None, **kwargs): arg_names = ("label", "cidr", "multi_host", "num_networks", "network_size", "cidr_v6", "gateway", "gateway_v6", "bridge", "bridge_interface", "dns1", "dns2", "fixed_cidr") for name in arg_names: kwargs[name] = locals()[name] self._convert_int_args(kwargs) # check for certain required inputs label = kwargs["label"] if not label: raise exception.NetworkNotCreated(req="label") # Size of "label" column in nova.networks is 255, hence the restriction if len(label) > 255: raise ValueError(_("Maximum allowed length for 'label' is 255.")) if not (kwargs["cidr"] or kwargs["cidr_v6"]): raise exception.NetworkNotCreated(req="cidr or cidr_v6") kwargs["bridge"] = kwargs["bridge"] or CONF.flat_network_bridge kwargs["bridge_interface"] = (kwargs["bridge_interface"] or CONF.flat_interface) for fld in self.required_create_args: if not kwargs[fld]: raise exception.NetworkNotCreated(req=fld) kwargs["num_networks"] = kwargs["num_networks"] or CONF.num_networks if not kwargs["network_size"]: if kwargs["cidr"]: fixnet = netaddr.IPNetwork(kwargs["cidr"]) each_subnet_size = fixnet.size / kwargs["num_networks"] if each_subnet_size > CONF.network_size: subnet = 32 - int(math.log(CONF.network_size, 2)) oversize_msg = _( 'Subnet(s) too large, defaulting to /%s.' ' To override, specify network_size flag.') % subnet LOG.warn(oversize_msg) kwargs["network_size"] = CONF.network_size else: kwargs["network_size"] = fixnet.size else: kwargs["network_size"] = CONF.network_size kwargs["multi_host"] = ( CONF.multi_host if kwargs["multi_host"] is None else strutils.bool_from_string(kwargs["multi_host"])) kwargs["vlan_start"] = kwargs.get("vlan_start") or CONF.vlan_start kwargs["vpn_start"] = kwargs.get("vpn_start") or CONF.vpn_start kwargs["dns1"] = kwargs["dns1"] or CONF.flat_network_dns if kwargs["fixed_cidr"]: kwargs["fixed_cidr"] = netaddr.IPNetwork(kwargs["fixed_cidr"]) return self._do_create_networks(context, **kwargs) def _do_create_networks(self, context, label, cidr, multi_host, num_networks, network_size, cidr_v6, gateway, gateway_v6, bridge, bridge_interface, dns1=None, dns2=None, fixed_cidr=None, **kwargs): """Create networks based on parameters.""" # NOTE(jkoelker): these are dummy values to make sure iter works # TODO(tr3buchet): disallow carving up networks fixed_net_v4 = netaddr.IPNetwork('0/32') fixed_net_v6 = netaddr.IPNetwork('::0/128') subnets_v4 = [] subnets_v6 = [] if kwargs.get('ipam'): if cidr_v6: subnets_v6 = [netaddr.IPNetwork(cidr_v6)] if cidr: subnets_v4 = [netaddr.IPNetwork(cidr)] else: subnet_bits = int(math.ceil(math.log(network_size, 2))) if cidr_v6: fixed_net_v6 = netaddr.IPNetwork(cidr_v6) prefixlen_v6 = 128 - subnet_bits # smallest subnet in IPv6 ethernet network is /64 if prefixlen_v6 > 64: prefixlen_v6 = 64 subnets_v6 = fixed_net_v6.subnet(prefixlen_v6, count=num_networks) if cidr: fixed_net_v4 = netaddr.IPNetwork(cidr) prefixlen_v4 = 32 - subnet_bits subnets_v4 = list(fixed_net_v4.subnet(prefixlen_v4, count=num_networks)) if cidr: # NOTE(jkoelker): This replaces the _validate_cidrs call and # prevents looping multiple times try: nets = network_obj.NetworkList.get_all(context) except exception.NoNetworksFound: nets = [] num_used_nets = len(nets) used_subnets = [net.cidr for net in nets] def find_next(subnet): next_subnet = subnet.next() while next_subnet in subnets_v4: next_subnet = next_subnet.next() if next_subnet in fixed_net_v4: return next_subnet for subnet in list(subnets_v4): if subnet in used_subnets: next_subnet = find_next(subnet) if next_subnet: subnets_v4.remove(subnet) subnets_v4.append(next_subnet) subnet = next_subnet else: raise exception.CidrConflict(_('cidr already in use')) for used_subnet in used_subnets: if subnet in used_subnet: msg = _('requested cidr (%(cidr)s) conflicts with ' 'existing supernet (%(super)s)') raise exception.CidrConflict( msg % {'cidr': subnet, 'super': used_subnet}) if used_subnet in subnet: next_subnet = find_next(subnet) if next_subnet: subnets_v4.remove(subnet) subnets_v4.append(next_subnet) subnet = next_subnet else: msg = _('requested cidr (%(cidr)s) conflicts ' 'with existing smaller cidr ' '(%(smaller)s)') raise exception.CidrConflict( msg % {'cidr': subnet, 'smaller': used_subnet}) networks = network_obj.NetworkList(context=context, objects=[]) subnets = itertools.izip_longest(subnets_v4, subnets_v6) for index, (subnet_v4, subnet_v6) in enumerate(subnets): net = network_obj.Network(context=context) net.bridge = bridge net.bridge_interface = bridge_interface net.multi_host = multi_host net.dns1 = dns1 net.dns2 = dns2 net.project_id = kwargs.get('project_id') if num_networks > 1: net.label = '%s_%d' % (label, index) else: net.label = label if cidr and subnet_v4: net.cidr = str(subnet_v4) net.netmask = str(subnet_v4.netmask) net.gateway = gateway or str(subnet_v4[1]) net.broadcast = str(subnet_v4.broadcast) net.dhcp_start = str(subnet_v4[2]) if cidr_v6 and subnet_v6: net.cidr_v6 = str(subnet_v6) if gateway_v6: # use a pre-defined gateway if one is provided net.gateway_v6 = str(gateway_v6) else: net.gateway_v6 = str(subnet_v6[1]) net.netmask_v6 = str(subnet_v6.netmask) if CONF.network_manager == 'nova.network.manager.VlanManager': vlan = kwargs.get('vlan', None) if not vlan: index_vlan = index + num_used_nets vlan = kwargs['vlan_start'] + index_vlan used_vlans = [x.vlan for x in nets] if vlan in used_vlans: # That vlan is used, try to get another one used_vlans.sort() vlan = used_vlans[-1] + 1 net.vpn_private_address = str(subnet_v4[2]) net.dhcp_start = str(subnet_v4[3]) net.vlan = vlan net.bridge = 'br%s' % vlan # NOTE(vish): This makes ports unique across the cloud, a more # robust solution would be to make them uniq per ip index_vpn = index + num_used_nets net.vpn_public_port = kwargs['vpn_start'] + index_vpn net.create() networks.objects.append(net) if cidr and subnet_v4: self._create_fixed_ips(context, net.id, fixed_cidr) # NOTE(danms): Remove this in RPC API v2.0 return obj_base.obj_to_primitive(networks) def delete_network(self, context, fixed_range, uuid, require_disassociated=True): # Prefer uuid but we'll also take cidr for backwards compatibility elevated = context.elevated() if uuid: network = network_obj.Network.get_by_uuid(elevated, uuid) elif fixed_range: network = network_obj.Network.get_by_cidr(elevated, fixed_range) if require_disassociated and network.project_id is not None: raise ValueError(_('Network must be disassociated from project %s' ' before delete') % network.project_id) network.destroy() @property def _bottom_reserved_ips(self): # pylint: disable=R0201 """Number of reserved ips at the bottom of the range.""" return 2 # network, gateway @property def _top_reserved_ips(self): # pylint: disable=R0201 """Number of reserved ips at the top of the range.""" return 1 # broadcast def _create_fixed_ips(self, context, network_id, fixed_cidr=None): """Create all fixed ips for network.""" network = self._get_network_by_id(context, network_id) # NOTE(vish): Should these be properties of the network as opposed # to properties of the manager class? bottom_reserved = self._bottom_reserved_ips top_reserved = self._top_reserved_ips if not fixed_cidr: fixed_cidr = netaddr.IPNetwork(network['cidr']) num_ips = len(fixed_cidr) ips = [] for index in range(num_ips): address = str(fixed_cidr[index]) if index < bottom_reserved or num_ips - index <= top_reserved: reserved = True else: reserved = False ips.append({'network_id': network_id, 'address': address, 'reserved': reserved}) fixed_ip_obj.FixedIPList.bulk_create(context, ips) def _allocate_fixed_ips(self, context, instance_id, host, networks, **kwargs): """Calls allocate_fixed_ip once for each network.""" raise NotImplementedError() def setup_networks_on_host(self, context, instance_id, host, teardown=False): """calls setup/teardown on network hosts for an instance.""" green_threads = [] if teardown: call_func = self._teardown_network_on_host else: call_func = self._setup_network_on_host instance = instance_obj.Instance.get_by_id(context, instance_id) vifs = vif_obj.VirtualInterfaceList.get_by_instance_uuid(context, instance['uuid']) for vif in vifs: network = network_obj.Network.get_by_id(context, vif.network_id) if not network.multi_host: #NOTE (tr3buchet): if using multi_host, host is instance[host] host = network['host'] if self.host == host or host is None: # at this point i am the correct host, or host doesn't # matter -> FlatManager call_func(context, network) else: # i'm not the right host, run call on correct host green_threads.append(eventlet.spawn( self.network_rpcapi.rpc_setup_network_on_host, context, network.id, teardown, host)) # wait for all of the setups (if any) to finish for gt in green_threads: gt.wait() def rpc_setup_network_on_host(self, context, network_id, teardown): if teardown: call_func = self._teardown_network_on_host else: call_func = self._setup_network_on_host # subcall from original setup_networks_on_host network = network_obj.Network.get_by_id(context, network_id) call_func(context, network) def _setup_network_on_host(self, context, network): """Sets up network on this host.""" raise NotImplementedError() def _teardown_network_on_host(self, context, network): """Sets up network on this host.""" raise NotImplementedError() def validate_networks(self, context, networks): """check if the networks exists and host is set to each network. """ if networks is None or len(networks) == 0: return network_uuids = [uuid for (uuid, fixed_ip) in networks] self._get_networks_by_uuids(context, network_uuids) for network_uuid, address in networks: # check if the fixed IP address is valid and # it actually belongs to the network if address is not None: if not utils.is_valid_ip_address(address): raise exception.FixedIpInvalid(address=address) fixed_ip_ref = fixed_ip_obj.FixedIP.get_by_address( context, address, expected_attrs=['network']) network = fixed_ip_ref.network if network.uuid != network_uuid: raise exception.FixedIpNotFoundForNetwork( address=address, network_uuid=network_uuid) if fixed_ip_ref.instance_uuid is not None: raise exception.FixedIpAlreadyInUse( address=address, instance_uuid=fixed_ip_ref.instance_uuid) def _get_network_by_id(self, context, network_id): return network_obj.Network.get_by_id(context, network_id, project_only='allow_none') def _get_networks_by_uuids(self, context, network_uuids): networks = network_obj.NetworkList.get_by_uuids( context, network_uuids, project_only="allow_none") networks.sort(key=lambda x: network_uuids.index(x.uuid)) return networks def get_vifs_by_instance(self, context, instance_id): """Returns the vifs associated with an instance.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. instance = instance_obj.Instance.get_by_id(context, instance_id) # NOTE(russellb) No need to object-ify this since # get_vifs_by_instance() is unused and set to be removed. vifs = vif_obj.VirtualInterfaceList.get_by_instance_uuid(context, instance.uuid) for vif in vifs: if vif.network_id is not None: network = self._get_network_by_id(context, vif.network_id) vif.net_uuid = network.uuid return [dict(vif.iteritems()) for vif in vifs] def get_instance_id_by_floating_address(self, context, address): """Returns the instance id a floating ip's fixed ip is allocated to.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. fixed_ip = fixed_ip_obj.FixedIP.get_by_floating_address(context, address) if fixed_ip is None: return None else: return fixed_ip.instance_uuid def get_network(self, context, network_uuid): # NOTE(vish): used locally return network_obj.Network.get_by_uuid(context.elevated(), network_uuid) def get_all_networks(self, context): # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. try: return obj_base.obj_to_primitive( network_obj.NetworkList.get_all(context)) except exception.NoNetworksFound: return [] def disassociate_network(self, context, network_uuid): # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. network = self.get_network(context, network_uuid) network.disassociate(context, network.id) def get_fixed_ip(self, context, id): """Return a fixed ip.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return fixed_ip_obj.FixedIP.get_by_id(context, id) def get_fixed_ip_by_address(self, context, address): # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return fixed_ip_obj.FixedIP.get_by_address(context, address) def get_vif_by_mac_address(self, context, mac_address): """Returns the vifs record for the mac_address.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. # NOTE(russellb) No need to object-ify this since # get_vifs_by_instance() is unused and set to be removed. vif = vif_obj.VirtualInterface.get_by_address(context, mac_address) if vif.network_id is not None: network = self._get_network_by_id(context, vif.network_id) vif.net_uuid = network.uuid return vif @periodic_task.periodic_task( spacing=CONF.dns_update_periodic_interval) def _periodic_update_dns(self, context): """Update local DNS entries of all networks on this host.""" networks = network_obj.NetworkList.get_by_host(context, self.host) for network in networks: dev = self.driver.get_dev(network) self.driver.update_dns(context, dev, network) def update_dns(self, context, network_ids): """Called when fixed IP is allocated or deallocated.""" if CONF.fake_network: return networks = [network for network in network_obj.NetworkList.get_by_host(context, self.host) if network.multi_host and network.id in network_ids] for network in networks: dev = self.driver.get_dev(network) self.driver.update_dns(context, dev, network) def add_network_to_project(self, ctxt, project_id, network_uuid): raise NotImplementedError() class FlatManager(NetworkManager): """Basic network where no vlans are used. FlatManager does not do any bridge or vlan creation. The user is responsible for setting up whatever bridges are specified when creating networks through nova-manage. This bridge needs to be created on all compute hosts. The idea is to create a single network for the host with a command like: nova-manage network create 192.168.0.0/24 1 256. Creating multiple networks for for one manager is currently not supported, but could be added by modifying allocate_fixed_ip and get_network to get the network with new logic. Arbitrary lists of addresses in a single network can be accomplished with manual db editing. If flat_injected is True, the compute host will attempt to inject network config into the guest. It attempts to modify /etc/network/interfaces and currently only works on debian based systems. To support a wider range of OSes, some other method may need to be devised to let the guest know which ip it should be using so that it can configure itself. Perhaps an attached disk or serial device with configuration info. Metadata forwarding must be handled by the gateway, and since nova does not do any setup in this mode, it must be done manually. Requests to 169.254.169.254 port 80 will need to be forwarded to the api server. """ timeout_fixed_ips = False required_create_args = ['bridge'] def _allocate_fixed_ips(self, context, instance_id, host, networks, **kwargs): """Calls allocate_fixed_ip once for each network.""" requested_networks = kwargs.get('requested_networks') for network in networks: address = None if requested_networks is not None: for address in (fixed_ip for (uuid, fixed_ip) in requested_networks if network['uuid'] == uuid): break self.allocate_fixed_ip(context, instance_id, network, address=address) def deallocate_fixed_ip(self, context, address, host=None, teardown=True, instance=None): """Returns a fixed ip to the pool.""" super(FlatManager, self).deallocate_fixed_ip(context, address, host, teardown, instance=instance) fixed_ip_obj.FixedIP.disassociate_by_address(context, address) def _setup_network_on_host(self, context, network): """Setup Network on this host.""" # NOTE(tr3buchet): this does not need to happen on every ip # allocation, this functionality makes more sense in create_network # but we'd have to move the flat_injected flag to compute network.injected = CONF.flat_injected network.save() def _teardown_network_on_host(self, context, network): """Tear down network on this host.""" pass # NOTE(justinsb): The floating ip functions are stub-implemented. # We were throwing an exception, but this was messing up horizon. # Timing makes it difficult to implement floating ips here, in Essex. def get_floating_ip(self, context, id): """Returns a floating IP as a dict.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return None def get_floating_pools(self, context): """Returns list of floating pools.""" # NOTE(maurosr) This method should be removed in future, replaced by # get_floating_ip_pools. See bug #1091668 return {} def get_floating_ip_pools(self, context): """Returns list of floating ip pools.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return {} def get_floating_ip_by_address(self, context, address): """Returns a floating IP as a dict.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return None def get_floating_ips_by_project(self, context): """Returns the floating IPs allocated to a project.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return [] def get_floating_ips_by_fixed_address(self, context, fixed_address): """Returns the floating IPs associated with a fixed_address.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. return [] @network_api.wrap_check_policy def allocate_floating_ip(self, context, project_id, pool): """Gets a floating ip from the pool.""" return None @network_api.wrap_check_policy def deallocate_floating_ip(self, context, address, affect_auto_assigned): """Returns a floating ip to the pool.""" return None @network_api.wrap_check_policy def associate_floating_ip(self, context, floating_address, fixed_address, affect_auto_assigned=False): """Associates a floating ip with a fixed ip. Makes sure everything makes sense then calls _associate_floating_ip, rpc'ing to correct host if i'm not it. """ return None @network_api.wrap_check_policy def disassociate_floating_ip(self, context, address, affect_auto_assigned=False): """Disassociates a floating ip from its fixed ip. Makes sure everything makes sense then calls _disassociate_floating_ip, rpc'ing to correct host if i'm not it. """ return None def migrate_instance_start(self, context, instance_uuid, floating_addresses, rxtx_factor=None, project_id=None, source=None, dest=None): pass def migrate_instance_finish(self, context, instance_uuid, floating_addresses, host=None, rxtx_factor=None, project_id=None, source=None, dest=None): pass def update_dns(self, context, network_ids): """Called when fixed IP is allocated or deallocated.""" pass class FlatDHCPManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager): """Flat networking with dhcp. FlatDHCPManager will start up one dhcp server to give out addresses. It never injects network settings into the guest. It also manages bridges. Otherwise it behaves like FlatManager. """ SHOULD_CREATE_BRIDGE = True DHCP = True required_create_args = ['bridge'] def init_host(self): """Do any initialization that needs to be run if this is a standalone service. """ ctxt = context.get_admin_context() networks = network_obj.NetworkList.get_by_host(ctxt, self.host) self.l3driver.initialize(fixed_range=False, networks=networks) super(FlatDHCPManager, self).init_host() self.init_host_floating_ips() def _setup_network_on_host(self, context, network): """Sets up network on this host.""" network['dhcp_server'] = self._get_dhcp_ip(context, network) self.l3driver.initialize_network(network.get('cidr')) self.l3driver.initialize_gateway(network) if not CONF.fake_network: dev = self.driver.get_dev(network) # NOTE(dprince): dhcp DB queries require elevated context elevated = context.elevated() self.driver.update_dhcp(elevated, dev, network) if CONF.use_ipv6: self.driver.update_ra(context, dev, network) gateway = utils.get_my_linklocal(dev) network.gateway_v6 = gateway network.save() def _teardown_network_on_host(self, context, network): if not CONF.fake_network: network['dhcp_server'] = self._get_dhcp_ip(context, network) dev = self.driver.get_dev(network) # NOTE(dprince): dhcp DB queries require elevated context elevated = context.elevated() self.driver.update_dhcp(elevated, dev, network) def _get_network_dict(self, network): """Returns the dict representing necessary and meta network fields.""" # get generic network fields network_dict = super(FlatDHCPManager, self)._get_network_dict(network) # get flat dhcp specific fields if self.SHOULD_CREATE_BRIDGE: network_dict['should_create_bridge'] = self.SHOULD_CREATE_BRIDGE if network.get('bridge_interface'): network_dict['bridge_interface'] = network['bridge_interface'] if network.get('multi_host'): network_dict['multi_host'] = network['multi_host'] return network_dict class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager): """Vlan network with dhcp. VlanManager is the most complicated. It will create a host-managed vlan for each project. Each project gets its own subnet. The networks and associated subnets are created with nova-manage using a command like: nova-manage network create 10.0.0.0/8 3 16. This will create 3 networks of 16 addresses from the beginning of the 10.0.0.0 range. A dhcp server is run for each subnet, so each project will have its own. For this mode to be useful, each project will need a vpn to access the instances in its subnet. """ SHOULD_CREATE_BRIDGE = True SHOULD_CREATE_VLAN = True DHCP = True required_create_args = ['bridge_interface'] def __init__(self, network_driver=None, *args, **kwargs): super(VlanManager, self).__init__(network_driver=network_driver, *args, **kwargs) # NOTE(cfb) VlanManager doesn't enforce quotas on fixed IP addresses # because a project is assigned an entire network. self.quotas_cls = quotas_obj.QuotasNoOp def init_host(self): """Do any initialization that needs to be run if this is a standalone service. """ ctxt = context.get_admin_context() networks = network_obj.NetworkList.get_by_host(ctxt, self.host) self.l3driver.initialize(fixed_range=False, networks=networks) NetworkManager.init_host(self) self.init_host_floating_ips() def allocate_fixed_ip(self, context, instance_id, network, **kwargs): """Gets a fixed ip from the pool.""" if kwargs.get('vpn', None): address = network['vpn_private_address'] fip = fixed_ip_obj.FixedIP.associate(context, address, instance_id, network['id'], reserved=True) else: address = kwargs.get('address', None) if address: fip = fixed_ip_obj.FixedIP.associate(context, address, instance_id, network['id']) else: fip = fixed_ip_obj.FixedIP.associate_pool(context, network['id'], instance_id) address = fip.address vif = vif_obj.VirtualInterface.get_by_instance_and_network( context, instance_id, network['id']) fip.allocated = True fip.virtual_interface_id = vif.id fip.save() if not kwargs.get('vpn', None): self._do_trigger_security_group_members_refresh_for_instance( instance_id) # NOTE(vish) This db query could be removed if we pass az and name # (or the whole instance object). instance = instance_obj.Instance.get_by_uuid(context, instance_id) name = instance.display_name if self._validate_instance_zone_for_dns_domain(context, instance): self.instance_dns_manager.create_entry(name, address, "A", self.instance_dns_domain) self.instance_dns_manager.create_entry(instance_id, address, "A", self.instance_dns_domain) self._setup_network_on_host(context, network) return address def add_network_to_project(self, context, project_id, network_uuid=None): """Force adds another network to a project.""" if network_uuid is not None: network_id = self.get_network(context, network_uuid).id else: network_id = None network_obj.Network.associate(context, project_id, network_id, force=True) def associate(self, context, network_uuid, associations): """Associate or disassociate host or project to network.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi to 2.0. network = self.get_network(context, network_uuid) network_id = network.id if 'host' in associations: host = associations['host'] if host is None: network.disassociate(context, network_id, host=True, project=False) else: network.host = self.host network.save() if 'project' in associations: project = associations['project'] if project is None: network.disassociate(context, network_id, host=False, project=True) else: network.associate(context, project, network_id, force=True) def _get_network_by_id(self, context, network_id): # NOTE(vish): Don't allow access to networks with project_id=None as # these are networks that haven't been allocated to a # project yet. return network_obj.Network.get_by_id(context, network_id, project_only=True) def _get_networks_by_uuids(self, context, network_uuids): # NOTE(vish): Don't allow access to networks with project_id=None as # these are networks that haven't been allocated to a # project yet. networks = network_obj.NetworkList.get_by_uuids( context, network_uuids, project_only=True) networks.sort(key=lambda x: network_uuids.index(x.uuid)) return networks def _get_networks_for_instance(self, context, instance_id, project_id, requested_networks=None): """Determine which networks an instance should connect to.""" # get networks associated with project if requested_networks is not None and len(requested_networks) != 0: network_uuids = [uuid for (uuid, fixed_ip) in requested_networks] networks = self._get_networks_by_uuids(context, network_uuids) else: networks = network_obj.NetworkList.get_by_project(context, project_id) return networks def create_networks(self, context, **kwargs): """Create networks based on parameters.""" self._convert_int_args(kwargs) kwargs["vlan_start"] = kwargs.get("vlan_start") or CONF.vlan_start kwargs["num_networks"] = (kwargs.get("num_networks") or CONF.num_networks) kwargs["network_size"] = (kwargs.get("network_size") or CONF.network_size) # Check that num_networks + vlan_start is not > 4094, fixes lp708025 if kwargs["num_networks"] + kwargs["vlan_start"] > 4094: raise ValueError(_('The sum between the number of networks and' ' the vlan start cannot be greater' ' than 4094')) # check that num networks and network size fits in fixed_net fixed_net = netaddr.IPNetwork(kwargs['cidr']) if fixed_net.size < kwargs['num_networks'] * kwargs['network_size']: raise ValueError(_('The network range is not ' 'big enough to fit %(num_networks)s networks. Network ' 'size is %(network_size)s') % kwargs) kwargs['bridge_interface'] = (kwargs.get('bridge_interface') or CONF.vlan_interface) return NetworkManager.create_networks( self, context, vpn=True, **kwargs) @utils.synchronized('setup_network', external=True) def _setup_network_on_host(self, context, network): """Sets up network on this host.""" if not network.vpn_public_address: address = CONF.vpn_ip network.vpn_public_address = address network.save() else: address = network.vpn_public_address network.dhcp_server = self._get_dhcp_ip(context, network) self.l3driver.initialize_network(network.get('cidr')) self.l3driver.initialize_gateway(network) # NOTE(vish): only ensure this forward if the address hasn't been set # manually. if address == CONF.vpn_ip and hasattr(self.driver, "ensure_vpn_forward"): self.l3driver.add_vpn(CONF.vpn_ip, network.vpn_public_port, network.vpn_private_address) if not CONF.fake_network: dev = self.driver.get_dev(network) # NOTE(dprince): dhcp DB queries require elevated context elevated = context.elevated() self.driver.update_dhcp(elevated, dev, network) if CONF.use_ipv6: self.driver.update_ra(context, dev, network) gateway = utils.get_my_linklocal(dev) network.gateway_v6 = gateway network.save() @utils.synchronized('setup_network', external=True) def _teardown_network_on_host(self, context, network): if not CONF.fake_network: network['dhcp_server'] = self._get_dhcp_ip(context, network) dev = self.driver.get_dev(network) # NOTE(dprince): dhcp DB queries require elevated context elevated = context.elevated() self.driver.update_dhcp(elevated, dev, network) # NOTE(ethuleau): For multi hosted networks, if the network is no # more used on this host and if VPN forwarding rule aren't handed # by the host, we delete the network gateway. vpn_address = network['vpn_public_address'] if (CONF.teardown_unused_network_gateway and network['multi_host'] and vpn_address != CONF.vpn_ip and not network_obj.Network.in_use_on_host(context, network['id'], self.host)): LOG.debug(_("Remove unused gateway %s"), network['bridge']) self.driver.kill_dhcp(dev) self.l3driver.remove_gateway(network) if not CONF.share_dhcp_address: fip = fixed_ip_obj.FixedIP.get_by_address( context, network.dhcp_server) fip.allocated = False fip.host = None fip.save() else: self.driver.update_dhcp(elevated, dev, network) def _get_network_dict(self, network): """Returns the dict representing necessary and meta network fields.""" # get generic network fields network_dict = super(VlanManager, self)._get_network_dict(network) # get vlan specific network fields if self.SHOULD_CREATE_BRIDGE: network_dict['should_create_bridge'] = self.SHOULD_CREATE_BRIDGE if self.SHOULD_CREATE_VLAN: network_dict['should_create_vlan'] = self.SHOULD_CREATE_VLAN for k in ['vlan', 'bridge_interface', 'multi_host']: if network.get(k): network_dict[k] = network[k] return network_dict @property def _bottom_reserved_ips(self): """Number of reserved ips at the bottom of the range.""" return super(VlanManager, self)._bottom_reserved_ips + 1 # vpn server @property def _top_reserved_ips(self): """Number of reserved ips at the top of the range.""" parent_reserved = super(VlanManager, self)._top_reserved_ips return parent_reserved + CONF.cnt_vpn_clients nova-2014.1/nova/network/floating_ips.py0000664000175400017540000007715212323721477021412 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from oslo import messaging from nova import context from nova.db import base from nova import exception from nova.network import rpcapi as network_rpcapi from nova.objects import dns_domain as dns_domain_obj from nova.objects import fixed_ip as fixed_ip_obj from nova.objects import floating_ip as floating_ip_obj from nova.objects import instance as instance_obj from nova.objects import network as network_obj from nova.objects import service as service_obj from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova.openstack.common import uuidutils from nova import quota from nova import rpc from nova import servicegroup from nova import utils LOG = logging.getLogger(__name__) QUOTAS = quota.QUOTAS floating_opts = [ cfg.StrOpt('default_floating_pool', default='nova', help='Default pool for floating IPs'), cfg.BoolOpt('auto_assign_floating_ip', default=False, help='Autoassigning floating IP to VM'), cfg.StrOpt('floating_ip_dns_manager', default='nova.network.noop_dns_driver.NoopDNSDriver', help='Full class name for the DNS Manager for floating IPs'), cfg.StrOpt('instance_dns_manager', default='nova.network.noop_dns_driver.NoopDNSDriver', help='Full class name for the DNS Manager for instance IPs'), cfg.StrOpt('instance_dns_domain', default='', help='Full class name for the DNS Zone for instance IPs'), ] CONF = cfg.CONF CONF.register_opts(floating_opts) CONF.import_opt('public_interface', 'nova.network.linux_net') CONF.import_opt('network_topic', 'nova.network.rpcapi') class FloatingIP(object): """Mixin class for adding floating IP functionality to a manager.""" servicegroup_api = None def init_host_floating_ips(self): """Configures floating ips owned by host.""" admin_context = context.get_admin_context() try: floating_ips = floating_ip_obj.FloatingIPList.get_by_host( admin_context, self.host) except exception.NotFound: return for floating_ip in floating_ips: if floating_ip.fixed_ip_id: try: fixed_ip = floating_ip.fixed_ip except exception.FixedIpNotFound: msg = _('Fixed ip %s not found') % floating_ip.fixed_ip_id LOG.debug(msg) continue interface = CONF.public_interface or floating_ip.interface try: self.l3driver.add_floating_ip(floating_ip.address, fixed_ip.address, interface, fixed_ip.network) except processutils.ProcessExecutionError: LOG.debug(_('Interface %s not found'), interface) raise exception.NoFloatingIpInterface(interface=interface) def allocate_for_instance(self, context, **kwargs): """Handles allocating the floating IP resources for an instance. calls super class allocate_for_instance() as well rpc.called by network_api """ instance_uuid = kwargs.get('instance_id') if not uuidutils.is_uuid_like(instance_uuid): instance_uuid = kwargs.get('instance_uuid') project_id = kwargs.get('project_id') requested_networks = kwargs.get('requested_networks') # call the next inherited class's allocate_for_instance() # which is currently the NetworkManager version # do this first so fixed ip is already allocated nw_info = super(FloatingIP, self).allocate_for_instance(context, **kwargs) if CONF.auto_assign_floating_ip: # allocate a floating ip floating_address = self.allocate_floating_ip(context, project_id, True) LOG.debug(_("floating IP allocation for instance " "|%s|"), floating_address, instance_uuid=instance_uuid, context=context) # get the first fixed address belonging to the instance fixed_ips = nw_info.fixed_ips() fixed_address = fixed_ips[0]['address'] # associate the floating ip to fixed_ip self.associate_floating_ip(context, floating_address, fixed_address, affect_auto_assigned=True) # create a fresh set of network info that contains the floating ip nw_info = self.get_instance_nw_info(context, **kwargs) return nw_info def deallocate_for_instance(self, context, **kwargs): """Handles deallocating floating IP resources for an instance. calls super class deallocate_for_instance() as well. rpc.called by network_api """ if 'instance' in kwargs: instance_uuid = kwargs['instance'].uuid else: instance_uuid = kwargs['instance_id'] if not uuidutils.is_uuid_like(instance_uuid): # NOTE(francois.charlier): in some cases the instance might be # deleted before the IPs are released, so we need to get # deleted instances too instance = instance_obj.Instance.get_by_id( context.elevated(read_deleted='yes'), instance_uuid) instance_uuid = instance.uuid try: fixed_ips = fixed_ip_obj.FixedIPList.get_by_instance_uuid( context, instance_uuid) except exception.FixedIpNotFoundForInstance: fixed_ips = [] # add to kwargs so we can pass to super to save a db lookup there kwargs['fixed_ips'] = fixed_ips for fixed_ip in fixed_ips: fixed_id = fixed_ip.id floating_ips = floating_ip_obj.FloatingIPList.get_by_fixed_ip_id( context, fixed_id) # disassociate floating ips related to fixed_ip for floating_ip in floating_ips: address = str(floating_ip.address) try: self.disassociate_floating_ip(context, address, affect_auto_assigned=True) except exception.FloatingIpNotAssociated: LOG.info(_("Floating IP %s is not associated. Ignore."), address) # deallocate if auto_assigned if floating_ip.auto_assigned: self.deallocate_floating_ip(context, address, affect_auto_assigned=True) # call the next inherited class's deallocate_for_instance() # which is currently the NetworkManager version # call this after so floating IPs are handled first super(FloatingIP, self).deallocate_for_instance(context, **kwargs) def _floating_ip_owned_by_project(self, context, floating_ip): """Raises if floating ip does not belong to project.""" if context.is_admin: return if floating_ip.project_id != context.project_id: if floating_ip.project_id is None: LOG.warn(_('Address |%(address)s| is not allocated'), {'address': floating_ip.address}) raise exception.NotAuthorized() else: LOG.warn(_('Address |%(address)s| is not allocated to your ' 'project |%(project)s|'), {'address': floating_ip.address, 'project': context.project_id}) raise exception.NotAuthorized() def allocate_floating_ip(self, context, project_id, auto_assigned=False, pool=None): """Gets a floating ip from the pool.""" # NOTE(tr3buchet): all network hosts in zone now use the same pool pool = pool or CONF.default_floating_pool use_quota = not auto_assigned # Check the quota; can't put this in the API because we get # called into from other places try: if use_quota: reservations = QUOTAS.reserve(context, floating_ips=1, project_id=project_id) except exception.OverQuota: LOG.warn(_("Quota exceeded for %s, tried to allocate " "floating IP"), context.project_id) raise exception.FloatingIpLimitExceeded() try: floating_ip = floating_ip_obj.FloatingIP.allocate_address( context, project_id, pool, auto_assigned=auto_assigned) payload = dict(project_id=project_id, floating_ip=floating_ip) self.notifier.info(context, 'network.floating_ip.allocate', payload) # Commit the reservations if use_quota: QUOTAS.commit(context, reservations, project_id=project_id) except Exception: with excutils.save_and_reraise_exception(): if use_quota: QUOTAS.rollback(context, reservations, project_id=project_id) return floating_ip @messaging.expected_exceptions(exception.FloatingIpNotFoundForAddress) def deallocate_floating_ip(self, context, address, affect_auto_assigned=False): """Returns a floating ip to the pool.""" floating_ip = floating_ip_obj.FloatingIP.get_by_address(context, address) # handle auto_assigned if not affect_auto_assigned and floating_ip.auto_assigned: return use_quota = not floating_ip.auto_assigned # make sure project owns this floating ip (allocated) self._floating_ip_owned_by_project(context, floating_ip) # make sure floating ip is not associated if floating_ip.fixed_ip_id: floating_address = floating_ip.address raise exception.FloatingIpAssociated(address=floating_address) # clean up any associated DNS entries self._delete_all_entries_for_ip(context, floating_ip.address) payload = dict(project_id=floating_ip.project_id, floating_ip=str(floating_ip.address)) self.notifier.info(context, 'network.floating_ip.deallocate', payload) project_id = floating_ip.project_id # Get reservations... try: if use_quota: reservations = QUOTAS.reserve(context, project_id=project_id, floating_ips=-1) else: reservations = None except Exception: reservations = None LOG.exception(_("Failed to update usages deallocating " "floating IP")) floating_ip_obj.FloatingIP.deallocate(context, address) # Commit the reservations if reservations: QUOTAS.commit(context, reservations, project_id=project_id) @messaging.expected_exceptions(exception.FloatingIpNotFoundForAddress) def associate_floating_ip(self, context, floating_address, fixed_address, affect_auto_assigned=False): """Associates a floating ip with a fixed ip. Makes sure everything makes sense then calls _associate_floating_ip, rpc'ing to correct host if i'm not it. Access to the floating_address is verified but access to the fixed_address is not verified. This assumes that that the calling side has already verified that the fixed_address is legal by checking access to the instance. """ floating_ip = floating_ip_obj.FloatingIP.get_by_address( context, floating_address) # handle auto_assigned if not affect_auto_assigned and floating_ip.auto_assigned: return # make sure project owns this floating ip (allocated) self._floating_ip_owned_by_project(context, floating_ip) # disassociate any already associated orig_instance_uuid = None if floating_ip.fixed_ip_id: # find previously associated instance fixed_ip = floating_ip.fixed_ip if str(fixed_ip.address) == fixed_address: # NOTE(vish): already associated to this address return orig_instance_uuid = fixed_ip.instance_uuid self.disassociate_floating_ip(context, floating_address) fixed_ip = fixed_ip_obj.FixedIP.get_by_address(context, fixed_address) # send to correct host, unless i'm the correct host network = network_obj.Network.get_by_id(context.elevated(), fixed_ip.network_id) if network.multi_host: instance = instance_obj.Instance.get_by_uuid( context, fixed_ip.instance_uuid) host = instance.host else: host = network.host interface = floating_ip.interface if host == self.host: # i'm the correct host self._associate_floating_ip(context, floating_address, fixed_address, interface, fixed_ip.instance_uuid) else: # send to correct host self.network_rpcapi._associate_floating_ip(context, floating_address, fixed_address, interface, host, fixed_ip.instance_uuid) return orig_instance_uuid def _associate_floating_ip(self, context, floating_address, fixed_address, interface, instance_uuid): """Performs db and driver calls to associate floating ip & fixed ip.""" interface = CONF.public_interface or interface @utils.synchronized(unicode(floating_address)) def do_associate(): # associate floating ip floating = floating_ip_obj.FloatingIP.associate(context, floating_address, fixed_address, self.host) fixed = floating.fixed_ip if not fixed: # NOTE(vish): ip was already associated return try: # gogo driver time self.l3driver.add_floating_ip(floating_address, fixed_address, interface, fixed['network']) except processutils.ProcessExecutionError as e: with excutils.save_and_reraise_exception() as exc_ctxt: try: floating_ip_obj.FloatingIP.disassociate( context, floating_address) except Exception: LOG.warn(_('Failed to disassociated floating ' 'address: %s'), floating_address) pass if "Cannot find device" in str(e): try: LOG.error(_('Interface %s not found'), interface) except Exception: pass raise exception.NoFloatingIpInterface( interface=interface) payload = dict(project_id=context.project_id, instance_id=instance_uuid, floating_ip=floating_address) self.notifier.info(context, 'network.floating_ip.associate', payload) do_associate() @messaging.expected_exceptions(exception.FloatingIpNotFoundForAddress) def disassociate_floating_ip(self, context, address, affect_auto_assigned=False): """Disassociates a floating ip from its fixed ip. Makes sure everything makes sense then calls _disassociate_floating_ip, rpc'ing to correct host if i'm not it. """ floating_ip = floating_ip_obj.FloatingIP.get_by_address(context, address) # handle auto assigned if not affect_auto_assigned and floating_ip.auto_assigned: raise exception.CannotDisassociateAutoAssignedFloatingIP() # make sure project owns this floating ip (allocated) self._floating_ip_owned_by_project(context, floating_ip) # make sure floating ip is associated if not floating_ip.fixed_ip_id: floating_address = floating_ip.address raise exception.FloatingIpNotAssociated(address=floating_address) fixed_ip = fixed_ip_obj.FixedIP.get_by_id(context, floating_ip.fixed_ip_id) # send to correct host, unless i'm the correct host network = network_obj.Network.get_by_id(context.elevated(), fixed_ip.network_id) interface = floating_ip.interface if network.multi_host: instance = instance_obj.Instance.get_by_uuid( context, fixed_ip.instance_uuid) service = service_obj.Service.get_by_host_and_topic( context.elevated(), instance.host, CONF.network_topic) if service and self.servicegroup_api.service_is_up(service): host = instance.host else: # NOTE(vish): if the service is down just deallocate the data # locally. Set the host to local so the call will # not go over rpc and set interface to None so the # teardown in the driver does not happen. host = self.host interface = None else: host = network.host if host == self.host: # i'm the correct host self._disassociate_floating_ip(context, address, interface, fixed_ip.instance_uuid) else: # send to correct host self.network_rpcapi._disassociate_floating_ip(context, address, interface, host, fixed_ip.instance_uuid) def _disassociate_floating_ip(self, context, address, interface, instance_uuid): """Performs db and driver calls to disassociate floating ip.""" interface = CONF.public_interface or interface @utils.synchronized(unicode(address)) def do_disassociate(): # NOTE(vish): Note that we are disassociating in the db before we # actually remove the ip address on the host. We are # safe from races on this host due to the decorator, # but another host might grab the ip right away. We # don't worry about this case because the minuscule # window where the ip is on both hosts shouldn't cause # any problems. floating = floating_ip_obj.FloatingIP.disassociate(context, address) fixed = floating.fixed_ip if not fixed: # NOTE(vish): ip was already disassociated return if interface: # go go driver time self.l3driver.remove_floating_ip(address, fixed.address, interface, fixed.network) payload = dict(project_id=context.project_id, instance_id=instance_uuid, floating_ip=address) self.notifier.info(context, 'network.floating_ip.disassociate', payload) do_disassociate() @messaging.expected_exceptions(exception.FloatingIpNotFound) def get_floating_ip(self, context, id): """Returns a floating IP as a dict.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi. return dict(floating_ip_obj.FloatingIP.get_by_id( context, id).iteritems()) def get_floating_pools(self, context): """Returns list of floating pools.""" # NOTE(maurosr) This method should be removed in future, replaced by # get_floating_ip_pools. See bug #1091668 return self.get_floating_ip_pools(context) def get_floating_ip_pools(self, context): """Returns list of floating ip pools.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi. pools = floating_ip_obj.FloatingIP.get_pool_names(context) return [dict(name=name) for name in pools] def get_floating_ip_by_address(self, context, address): """Returns a floating IP as a dict.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi. # NOTE(danms): Not converting to objects since it's not used return dict(self.db.floating_ip_get_by_address(context, address).iteritems()) def get_floating_ips_by_project(self, context): """Returns the floating IPs allocated to a project.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi. # NOTE(danms): Not converting to objects since it's not used ips = self.db.floating_ip_get_all_by_project(context, context.project_id) return [dict(ip.iteritems()) for ip in ips] def get_floating_ips_by_fixed_address(self, context, fixed_address): """Returns the floating IPs associated with a fixed_address.""" # NOTE(vish): This is no longer used but can't be removed until # we major version the network_rpcapi. # NOTE(danms): Not converting to objects since it's not used floating_ips = self.db.floating_ip_get_by_fixed_address(context, fixed_address) return [floating_ip['address'] for floating_ip in floating_ips] def _is_stale_floating_ip_address(self, context, floating_ip): try: self._floating_ip_owned_by_project(context, floating_ip) except exception.NotAuthorized: return True return False if floating_ip.get('fixed_ip_id') else True def migrate_instance_start(self, context, instance_uuid, floating_addresses, rxtx_factor=None, project_id=None, source=None, dest=None): # We only care if floating_addresses are provided and we're # switching hosts if not floating_addresses or (source and source == dest): return LOG.info(_("Starting migration network for instance %s"), instance_uuid) for address in floating_addresses: floating_ip = floating_ip_obj.FloatingIP.get_by_address(context, address) if self._is_stale_floating_ip_address(context, floating_ip): LOG.warn(_("Floating ip address |%(address)s| no longer " "belongs to instance %(instance_uuid)s. Will not " "migrate it "), {'address': address, 'instance_uuid': instance_uuid}) continue interface = CONF.public_interface or floating_ip.interface fixed_ip = floating_ip.fixed_ip self.l3driver.remove_floating_ip(floating_ip.address, fixed_ip.address, interface, fixed_ip.network) # NOTE(ivoks): Destroy conntrack entries on source compute # host. self.l3driver.clean_conntrack(fixed_ip.address) # NOTE(wenjianhn): Make this address will not be bound to public # interface when restarts nova-network on dest compute node floating_ip.host = None floating_ip.save() def migrate_instance_finish(self, context, instance_uuid, floating_addresses, host=None, rxtx_factor=None, project_id=None, source=None, dest=None): # We only care if floating_addresses are provided and we're # switching hosts if host and not dest: dest = host if not floating_addresses or (source and source == dest): return LOG.info(_("Finishing migration network for instance %s"), instance_uuid) for address in floating_addresses: floating_ip = floating_ip_obj.FloatingIP.get_by_address(context, address) if self._is_stale_floating_ip_address(context, floating_ip): LOG.warn(_("Floating ip address |%(address)s| no longer " "belongs to instance %(instance_uuid)s. Will not" "setup it."), {'address': address, 'instance_uuid': instance_uuid}) continue floating_ip.host = dest floating_ip.save() interface = CONF.public_interface or floating_ip.interface fixed_ip = floating_ip.fixed_ip self.l3driver.add_floating_ip(floating_ip.address, fixed_ip.address, interface, fixed_ip.network) def _prepare_domain_entry(self, context, domainref): scope = domainref.scope if scope == 'private': this_domain = {'domain': domainref.domain, 'scope': scope, 'availability_zone': domainref.availability_zone} else: this_domain = {'domain': domainref.domain, 'scope': scope, 'project': domainref.project_id} return this_domain def get_dns_domains(self, context): domains = [] domain_list = dns_domain_obj.DNSDomainList.get_all(context) floating_driver_domain_list = self.floating_dns_manager.get_domains() instance_driver_domain_list = self.instance_dns_manager.get_domains() for dns_domain in domain_list: if (dns_domain.domain in floating_driver_domain_list or dns_domain.domain in instance_driver_domain_list): domain_entry = self._prepare_domain_entry(context, dns_domain) if domain_entry: domains.append(domain_entry) else: LOG.warn(_('Database inconsistency: DNS domain |%s| is ' 'registered in the Nova db but not visible to ' 'either the floating or instance DNS driver. It ' 'will be ignored.'), dns_domain.domain) return domains def add_dns_entry(self, context, address, name, dns_type, domain): self.floating_dns_manager.create_entry(name, address, dns_type, domain) def modify_dns_entry(self, context, address, name, domain): self.floating_dns_manager.modify_address(name, address, domain) def delete_dns_entry(self, context, name, domain): self.floating_dns_manager.delete_entry(name, domain) def _delete_all_entries_for_ip(self, context, address): domain_list = self.get_dns_domains(context) for domain in domain_list: names = self.get_dns_entries_by_address(context, address, domain['domain']) for name in names: self.delete_dns_entry(context, name, domain['domain']) def get_dns_entries_by_address(self, context, address, domain): return self.floating_dns_manager.get_entries_by_address(address, domain) def get_dns_entries_by_name(self, context, name, domain): return self.floating_dns_manager.get_entries_by_name(name, domain) def create_private_dns_domain(self, context, domain, av_zone): dns_domain_obj.DNSDomain.register_for_zone(context, domain, av_zone) try: self.instance_dns_manager.create_domain(domain) except exception.FloatingIpDNSExists: LOG.warn(_('Domain |%(domain)s| already exists, ' 'changing zone to |%(av_zone)s|.'), {'domain': domain, 'av_zone': av_zone}) def create_public_dns_domain(self, context, domain, project): dns_domain_obj.DNSDomain.register_for_project(context, domain, project) try: self.floating_dns_manager.create_domain(domain) except exception.FloatingIpDNSExists: LOG.warn(_('Domain |%(domain)s| already exists, ' 'changing project to |%(project)s|.'), {'domain': domain, 'project': project}) def delete_dns_domain(self, context, domain): dns_domain_obj.DNSDomain.delete_by_domain(context, domain) self.floating_dns_manager.delete_domain(domain) class LocalManager(base.Base, FloatingIP): def __init__(self): super(LocalManager, self).__init__() # NOTE(vish): setting the host to none ensures that the actual # l3driver commands for l3 are done via rpc. self.host = None self.servicegroup_api = servicegroup.API() self.network_rpcapi = network_rpcapi.NetworkAPI() self.floating_dns_manager = importutils.import_object( CONF.floating_ip_dns_manager) self.instance_dns_manager = importutils.import_object( CONF.instance_dns_manager) self.notifier = rpc.get_notifier('network', CONF.host) nova-2014.1/nova/network/ldapdns.py0000664000175400017540000003161512323721477020353 0ustar jenkinsjenkins00000000000000# Copyright 2012 Andrew Bogott for the Wikimedia Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. try: import ldap except ImportError: # This module needs to be importable despite ldap not being a requirement ldap = None import time from oslo.config import cfg from nova import exception from nova.network import dns_driver from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova import utils CONF = cfg.CONF LOG = logging.getLogger(__name__) ldap_dns_opts = [ cfg.StrOpt('ldap_dns_url', default='ldap://ldap.example.com:389', help='URL for LDAP server which will store DNS entries'), cfg.StrOpt('ldap_dns_user', default='uid=admin,ou=people,dc=example,dc=org', help='User for LDAP DNS'), cfg.StrOpt('ldap_dns_password', default='password', help='Password for LDAP DNS', secret=True), cfg.StrOpt('ldap_dns_soa_hostmaster', default='hostmaster@example.org', help='Hostmaster for LDAP DNS driver Statement of Authority'), cfg.MultiStrOpt('ldap_dns_servers', default=['dns.example.org'], help='DNS Servers for LDAP DNS driver'), cfg.StrOpt('ldap_dns_base_dn', default='ou=hosts,dc=example,dc=org', help='Base DN for DNS entries in LDAP'), cfg.StrOpt('ldap_dns_soa_refresh', default='1800', help='Refresh interval (in seconds) for LDAP DNS driver ' 'Statement of Authority'), cfg.StrOpt('ldap_dns_soa_retry', default='3600', help='Retry interval (in seconds) for LDAP DNS driver ' 'Statement of Authority'), cfg.StrOpt('ldap_dns_soa_expiry', default='86400', help='Expiry interval (in seconds) for LDAP DNS driver ' 'Statement of Authority'), cfg.StrOpt('ldap_dns_soa_minimum', default='7200', help='Minimum interval (in seconds) for LDAP DNS driver ' 'Statement of Authority'), ] CONF.register_opts(ldap_dns_opts) # Importing ldap.modlist breaks the tests for some reason, # so this is an abbreviated version of a function from # there. def create_modlist(newattrs): modlist = [] for attrtype in newattrs.keys(): utf8_vals = [] for val in newattrs[attrtype]: utf8_vals.append(utils.utf8(val)) newattrs[attrtype] = utf8_vals modlist.append((attrtype, newattrs[attrtype])) return modlist class DNSEntry(object): def __init__(self, ldap_object): """ldap_object is an instance of ldap.LDAPObject. It should already be initialized and bound before getting passed in here. """ self.lobj = ldap_object self.ldap_tuple = None self.qualified_domain = None @classmethod def _get_tuple_for_domain(cls, lobj, domain): entry = lobj.search_s(CONF.ldap_dns_base_dn, ldap.SCOPE_SUBTREE, '(associatedDomain=%s)' % utils.utf8(domain)) if not entry: return None if len(entry) > 1: LOG.warn(_("Found multiple matches for domain " "%(domain)s.\n%(entry)s") % (domain, entry)) return entry[0] @classmethod def _get_all_domains(cls, lobj): entries = lobj.search_s(CONF.ldap_dns_base_dn, ldap.SCOPE_SUBTREE, '(sOARecord=*)') domains = [] for entry in entries: domain = entry[1].get('associatedDomain') if domain: domains.append(domain[0]) return domains def _set_tuple(self, tuple): self.ldap_tuple = tuple def _qualify(self, name): return '%s.%s' % (name, self.qualified_domain) def _dequalify(self, name): z = ".%s" % self.qualified_domain if name.endswith(z): dequalified = name[0:name.rfind(z)] else: LOG.warn(_("Unable to dequalify. %(name)s is not in " "%(domain)s.\n") % {'name': name, 'domain': self.qualified_domain}) dequalified = None return dequalified def _dn(self): return self.ldap_tuple[0] dn = property(_dn) def _rdn(self): return self.dn.partition(',')[0] rdn = property(_rdn) class DomainEntry(DNSEntry): @classmethod def _soa(cls): date = time.strftime('%Y%m%d%H%M%S') soa = '%s %s %s %s %s %s %s' % ( CONF.ldap_dns_servers[0], CONF.ldap_dns_soa_hostmaster, date, CONF.ldap_dns_soa_refresh, CONF.ldap_dns_soa_retry, CONF.ldap_dns_soa_expiry, CONF.ldap_dns_soa_minimum) return utils.utf8(soa) @classmethod def create_domain(cls, lobj, domain): """Create a new domain entry, and return an object that wraps it.""" entry = cls._get_tuple_for_domain(lobj, domain) if entry: raise exception.FloatingIpDNSExists(name=domain, domain='') newdn = 'dc=%s,%s' % (domain, CONF.ldap_dns_base_dn) attrs = {'objectClass': ['domainrelatedobject', 'dnsdomain', 'domain', 'dcobject', 'top'], 'sOARecord': [cls._soa()], 'associatedDomain': [domain], 'dc': [domain]} lobj.add_s(newdn, create_modlist(attrs)) return DomainEntry(lobj, domain) def __init__(self, ldap_object, domain): super(DomainEntry, self).__init__(ldap_object) entry = self._get_tuple_for_domain(self.lobj, domain) if not entry: raise exception.NotFound() self._set_tuple(entry) assert(entry[1]['associatedDomain'][0] == domain) self.qualified_domain = domain def delete(self): """Delete the domain that this entry refers to.""" entries = self.lobj.search_s(self.dn, ldap.SCOPE_SUBTREE, '(aRecord=*)') for entry in entries: self.lobj.delete_s(entry[0]) self.lobj.delete_s(self.dn) def update_soa(self): mlist = [(ldap.MOD_REPLACE, 'sOARecord', self._soa())] self.lobj.modify_s(self.dn, mlist) def subentry_with_name(self, name): entry = self.lobj.search_s(self.dn, ldap.SCOPE_SUBTREE, '(associatedDomain=%s.%s)' % (utils.utf8(name), utils.utf8(self.qualified_domain))) if entry: return HostEntry(self, entry[0]) else: return None def subentries_with_ip(self, ip): entries = self.lobj.search_s(self.dn, ldap.SCOPE_SUBTREE, '(aRecord=%s)' % utils.utf8(ip)) objs = [] for entry in entries: if 'associatedDomain' in entry[1]: objs.append(HostEntry(self, entry)) return objs def add_entry(self, name, address): if self.subentry_with_name(name): raise exception.FloatingIpDNSExists(name=name, domain=self.qualified_domain) entries = self.subentries_with_ip(address) if entries: # We already have an ldap entry for this IP, so we just # need to add the new name. existingdn = entries[0].dn self.lobj.modify_s(existingdn, [(ldap.MOD_ADD, 'associatedDomain', utils.utf8(self._qualify(name)))]) return self.subentry_with_name(name) else: # We need to create an entirely new entry. newdn = 'dc=%s,%s' % (name, self.dn) attrs = {'objectClass': ['domainrelatedobject', 'dnsdomain', 'domain', 'dcobject', 'top'], 'aRecord': [address], 'associatedDomain': [self._qualify(name)], 'dc': [name]} self.lobj.add_s(newdn, create_modlist(attrs)) return self.subentry_with_name(name) def remove_entry(self, name): entry = self.subentry_with_name(name) if not entry: raise exception.NotFound() entry.remove_name(name) self.update_soa() class HostEntry(DNSEntry): def __init__(self, parent, tuple): super(HostEntry, self).__init__(parent.lobj) self.parent_entry = parent self._set_tuple(tuple) self.qualified_domain = parent.qualified_domain def remove_name(self, name): names = self.ldap_tuple[1]['associatedDomain'] if not names: raise exception.NotFound() if len(names) > 1: # We just have to remove the requested domain. self.lobj.modify_s(self.dn, [(ldap.MOD_DELETE, 'associatedDomain', self._qualify(utils.utf8(name)))]) if (self.rdn[1] == name): # We just removed the rdn, so we need to move this entry. names.remove(self._qualify(name)) newrdn = 'dc=%s' % self._dequalify(names[0]) self.lobj.modrdn_s(self.dn, [newrdn]) else: # We should delete the entire record. self.lobj.delete_s(self.dn) def modify_address(self, name, address): names = self.ldap_tuple[1]['associatedDomain'] if not names: raise exception.NotFound() if len(names) == 1: self.lobj.modify_s(self.dn, [(ldap.MOD_REPLACE, 'aRecord', [utils.utf8(address)])]) else: self.remove_name(name) self.parent.add_entry(name, address) def _names(self): names = [] for domain in self.ldap_tuple[1]['associatedDomain']: names.append(self._dequalify(domain)) return names names = property(_names) def _ip(self): ip = self.ldap_tuple[1]['aRecord'][0] return ip ip = property(_ip) def _parent(self): return self.parent_entry parent = property(_parent) class LdapDNS(dns_driver.DNSDriver): """Driver for PowerDNS using ldap as a back end. This driver assumes ldap-method=strict, with all domains in the top-level, aRecords only. """ def __init__(self): if not ldap: raise ImportError(_('ldap not installed')) self.lobj = ldap.initialize(CONF.ldap_dns_url) self.lobj.simple_bind_s(CONF.ldap_dns_user, CONF.ldap_dns_password) def get_domains(self): return DomainEntry._get_all_domains(self.lobj) def create_entry(self, name, address, type, domain): if type.lower() != 'a': raise exception.InvalidInput(_("This driver only supports " "type 'a' entries.")) dEntry = DomainEntry(self.lobj, domain) dEntry.add_entry(name, address) def delete_entry(self, name, domain): dEntry = DomainEntry(self.lobj, domain) dEntry.remove_entry(name) def get_entries_by_address(self, address, domain): try: dEntry = DomainEntry(self.lobj, domain) except exception.NotFound: return [] entries = dEntry.subentries_with_ip(address) names = [] for entry in entries: names.extend(entry.names) return names def get_entries_by_name(self, name, domain): try: dEntry = DomainEntry(self.lobj, domain) except exception.NotFound: return [] nEntry = dEntry.subentry_with_name(name) if nEntry: return [nEntry.ip] def modify_address(self, name, address, domain): dEntry = DomainEntry(self.lobj, domain) nEntry = dEntry.subentry_with_name(name) nEntry.modify_address(name, address) def create_domain(self, domain): DomainEntry.create_domain(self.lobj, domain) def delete_domain(self, domain): dEntry = DomainEntry(self.lobj, domain) dEntry.delete() def delete_dns_file(self): LOG.warn(_("This shouldn't be getting called except during testing.")) pass nova-2014.1/nova/network/model.py0000664000175400017540000003461212323721477020026 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import functools import eventlet import netaddr import six from nova import exception from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils def ensure_string_keys(d): # http://bugs.python.org/issue4978 return dict([(str(k), v) for k, v in d.iteritems()]) # Constants for the 'vif_type' field in VIF class VIF_TYPE_OVS = 'ovs' VIF_TYPE_IVS = 'ivs' VIF_TYPE_IOVISOR = 'iovisor' VIF_TYPE_BRIDGE = 'bridge' VIF_TYPE_802_QBG = '802.1qbg' VIF_TYPE_802_QBH = '802.1qbh' VIF_TYPE_MLNX_DIRECT = 'mlnx_direct' VIF_TYPE_MIDONET = 'midonet' VIF_TYPE_OTHER = 'other' # Constants for dictionary keys in the 'vif_details' field in the VIF # class VIF_DETAIL_PORT_FILTER = 'port_filter' VIF_DETAIL_OVS_HYBRID_PLUG = 'ovs_hybrid_plug' # Constant for max length of network interface names # eg 'bridge' in the Network class or 'devname' in # the VIF class NIC_NAME_LEN = 14 class Model(dict): """Defines some necessary structures for most of the network models.""" def __repr__(self): return self.__class__.__name__ + '(' + dict.__repr__(self) + ')' def _set_meta(self, kwargs): # pull meta out of kwargs if it's there self['meta'] = kwargs.pop('meta', {}) # update meta with any additional kwargs that may exist self['meta'].update(kwargs) def get_meta(self, key, default=None): """calls get(key, default) on self['meta'].""" return self['meta'].get(key, default) class IP(Model): """Represents an IP address in Nova.""" def __init__(self, address=None, type=None, **kwargs): super(IP, self).__init__() self['address'] = address self['type'] = type self['version'] = kwargs.pop('version', None) self._set_meta(kwargs) # determine version from address if not passed in if self['address'] and not self['version']: try: self['version'] = netaddr.IPAddress(self['address']).version except netaddr.AddrFormatError: msg = _("Invalid IP format %s") % self['address'] raise exception.InvalidIpAddressError(msg) def __eq__(self, other): keys = ['address', 'type', 'version'] return all(self[k] == other[k] for k in keys) def __ne__(self, other): return not self.__eq__(other) def is_in_subnet(self, subnet): if self['address'] and subnet['cidr']: return (netaddr.IPAddress(self['address']) in netaddr.IPNetwork(subnet['cidr'])) else: return False @classmethod def hydrate(cls, ip): if ip: return cls(**ensure_string_keys(ip)) return None class FixedIP(IP): """Represents a Fixed IP address in Nova.""" def __init__(self, floating_ips=None, **kwargs): super(FixedIP, self).__init__(**kwargs) self['floating_ips'] = floating_ips or [] if not self['type']: self['type'] = 'fixed' def add_floating_ip(self, floating_ip): if floating_ip not in self['floating_ips']: self['floating_ips'].append(floating_ip) def floating_ip_addresses(self): return [ip['address'] for ip in self['floating_ips']] @staticmethod def hydrate(fixed_ip): fixed_ip = FixedIP(**ensure_string_keys(fixed_ip)) fixed_ip['floating_ips'] = [IP.hydrate(floating_ip) for floating_ip in fixed_ip['floating_ips']] return fixed_ip def __eq__(self, other): keys = ['address', 'type', 'version', 'floating_ips'] return all(self[k] == other[k] for k in keys) def __ne__(self, other): return not self.__eq__(other) class Route(Model): """Represents an IP Route in Nova.""" def __init__(self, cidr=None, gateway=None, interface=None, **kwargs): super(Route, self).__init__() self['cidr'] = cidr self['gateway'] = gateway self['interface'] = interface self._set_meta(kwargs) @classmethod def hydrate(cls, route): route = cls(**ensure_string_keys(route)) route['gateway'] = IP.hydrate(route['gateway']) return route class Subnet(Model): """Represents a Subnet in Nova.""" def __init__(self, cidr=None, dns=None, gateway=None, ips=None, routes=None, **kwargs): super(Subnet, self).__init__() self['cidr'] = cidr self['dns'] = dns or [] self['gateway'] = gateway self['ips'] = ips or [] self['routes'] = routes or [] self['version'] = kwargs.pop('version', None) self._set_meta(kwargs) if self['cidr'] and not self['version']: self['version'] = netaddr.IPNetwork(self['cidr']).version def __eq__(self, other): keys = ['cidr', 'dns', 'gateway', 'ips', 'routes', 'version'] return all(self[k] == other[k] for k in keys) def __ne__(self, other): return not self.__eq__(other) def add_route(self, new_route): if new_route not in self['routes']: self['routes'].append(new_route) def add_dns(self, dns): if dns not in self['dns']: self['dns'].append(dns) def add_ip(self, ip): if ip not in self['ips']: self['ips'].append(ip) def as_netaddr(self): """Convience function to get cidr as a netaddr object.""" return netaddr.IPNetwork(self['cidr']) @classmethod def hydrate(cls, subnet): subnet = cls(**ensure_string_keys(subnet)) subnet['dns'] = [IP.hydrate(dns) for dns in subnet['dns']] subnet['ips'] = [FixedIP.hydrate(ip) for ip in subnet['ips']] subnet['routes'] = [Route.hydrate(route) for route in subnet['routes']] subnet['gateway'] = IP.hydrate(subnet['gateway']) return subnet class Network(Model): """Represents a Network in Nova.""" def __init__(self, id=None, bridge=None, label=None, subnets=None, **kwargs): super(Network, self).__init__() self['id'] = id self['bridge'] = bridge self['label'] = label self['subnets'] = subnets or [] self._set_meta(kwargs) def add_subnet(self, subnet): if subnet not in self['subnets']: self['subnets'].append(subnet) @classmethod def hydrate(cls, network): if network: network = cls(**ensure_string_keys(network)) network['subnets'] = [Subnet.hydrate(subnet) for subnet in network['subnets']] return network def __eq__(self, other): keys = ['id', 'bridge', 'label', 'subnets'] return all(self[k] == other[k] for k in keys) def __ne__(self, other): return not self.__eq__(other) class VIF8021QbgParams(Model): """Represents the parameters for a 802.1qbg VIF.""" def __init__(self, managerid, typeid, typeidversion, instanceid): self['managerid'] = managerid self['typeid'] = typeid self['typeidversion'] = typeidversion self['instanceid'] = instanceid class VIF8021QbhParams(Model): """Represents the parameters for a 802.1qbh VIF.""" def __init__(self, profileid): self['profileid'] = profileid class VIF(Model): """Represents a Virtual Interface in Nova.""" def __init__(self, id=None, address=None, network=None, type=None, details=None, devname=None, ovs_interfaceid=None, qbh_params=None, qbg_params=None, active=False, **kwargs): super(VIF, self).__init__() self['id'] = id self['address'] = address self['network'] = network or None self['type'] = type self['details'] = details or {} self['devname'] = devname self['ovs_interfaceid'] = ovs_interfaceid self['qbh_params'] = qbh_params self['qbg_params'] = qbg_params self['active'] = active self._set_meta(kwargs) def __eq__(self, other): keys = ['id', 'address', 'network', 'type', 'details', 'devname', 'ovs_interfaceid', 'qbh_params', 'qbg_params', 'active'] return all(self[k] == other[k] for k in keys) def __ne__(self, other): return not self.__eq__(other) def fixed_ips(self): return [fixed_ip for subnet in self['network']['subnets'] for fixed_ip in subnet['ips']] def floating_ips(self): return [floating_ip for fixed_ip in self.fixed_ips() for floating_ip in fixed_ip['floating_ips']] def labeled_ips(self): """Returns the list of all IPs The return value looks like this flat structure:: {'network_label': 'my_network', 'network_id': 'n8v29837fn234782f08fjxk3ofhb84', 'ips': [{'address': '123.123.123.123', 'version': 4, 'type: 'fixed', 'meta': {...}}, {'address': '124.124.124.124', 'version': 4, 'type': 'floating', 'meta': {...}}, {'address': 'fe80::4', 'version': 6, 'type': 'fixed', 'meta': {...}}] """ if self['network']: # remove unnecessary fields on fixed_ips ips = [IP(**ensure_string_keys(ip)) for ip in self.fixed_ips()] for ip in ips: # remove floating ips from IP, since this is a flat structure # of all IPs del ip['meta']['floating_ips'] # add floating ips to list (if any) ips.extend(self.floating_ips()) return {'network_label': self['network']['label'], 'network_id': self['network']['id'], 'ips': ips} return [] def is_hybrid_plug_enabled(self): return self['details'].get(VIF_DETAIL_OVS_HYBRID_PLUG, False) def is_neutron_filtering_enabled(self): return self['details'].get(VIF_DETAIL_PORT_FILTER, False) @classmethod def hydrate(cls, vif): vif = cls(**ensure_string_keys(vif)) vif['network'] = Network.hydrate(vif['network']) return vif def get_netmask(ip, subnet): """Returns the netmask appropriate for injection into a guest.""" if ip['version'] == 4: return str(subnet.as_netaddr().netmask) return subnet.as_netaddr()._prefixlen class NetworkInfo(list): """Stores and manipulates network information for a Nova instance.""" # NetworkInfo is a list of VIFs def fixed_ips(self): """Returns all fixed_ips without floating_ips attached.""" return [ip for vif in self for ip in vif.fixed_ips()] def floating_ips(self): """Returns all floating_ips.""" return [ip for vif in self for ip in vif.floating_ips()] @classmethod def hydrate(cls, network_info): if isinstance(network_info, six.string_types): network_info = jsonutils.loads(network_info) return cls([VIF.hydrate(vif) for vif in network_info]) def json(self): return jsonutils.dumps(self) class NetworkInfoAsyncWrapper(NetworkInfo): """Wrapper around NetworkInfo that allows retrieving NetworkInfo in an async manner. This allows one to start querying for network information before you know you will need it. If you have a long-running operation, this allows the network model retrieval to occur in the background. When you need the data, it will ensure the async operation has completed. As an example: def allocate_net_info(arg1, arg2) return call_neutron_to_allocate(arg1, arg2) network_info = NetworkInfoAsyncWrapper(allocate_net_info, arg1, arg2) [do a long running operation -- real network_info will be retrieved in the background] [do something with network_info] """ def __init__(self, async_method, *args, **kwargs): self._gt = eventlet.spawn(async_method, *args, **kwargs) methods = ['json', 'fixed_ips', 'floating_ips'] for method in methods: fn = getattr(self, method) wrapper = functools.partial(self._sync_wrapper, fn) functools.update_wrapper(wrapper, fn) setattr(self, method, wrapper) def _sync_wrapper(self, wrapped, *args, **kwargs): """Synchronize the model before running a method.""" self.wait() return wrapped(*args, **kwargs) def __getitem__(self, *args, **kwargs): fn = super(NetworkInfoAsyncWrapper, self).__getitem__ return self._sync_wrapper(fn, *args, **kwargs) def __iter__(self, *args, **kwargs): fn = super(NetworkInfoAsyncWrapper, self).__iter__ return self._sync_wrapper(fn, *args, **kwargs) def __len__(self, *args, **kwargs): fn = super(NetworkInfoAsyncWrapper, self).__len__ return self._sync_wrapper(fn, *args, **kwargs) def __str__(self, *args, **kwargs): fn = super(NetworkInfoAsyncWrapper, self).__str__ return self._sync_wrapper(fn, *args, **kwargs) def __repr__(self, *args, **kwargs): fn = super(NetworkInfoAsyncWrapper, self).__repr__ return self._sync_wrapper(fn, *args, **kwargs) def wait(self, do_raise=True): """Wait for async call to finish.""" if self._gt is not None: try: # NOTE(comstud): This looks funky, but this object is # subclassed from list. In other words, 'self' is really # just a list with a bunch of extra methods. So this # line just replaces the current list (which should be # empty) with the result. self[:] = self._gt.wait() except Exception: if do_raise: raise finally: self._gt = None nova-2014.1/nova/network/noop_dns_driver.py0000664000175400017540000000233012323721477022110 0ustar jenkinsjenkins00000000000000# 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.network import dns_driver class NoopDNSDriver(dns_driver.DNSDriver): """No-op DNS manager. Does nothing.""" def __init__(self): pass def get_domains(self): return [] def create_entry(self, _name, _address, _type, _domain): pass def delete_entry(self, _name, _domain): pass def modify_address(self, _name, _address, _domain): pass def get_entries_by_address(self, _address, _domain): return [] def get_entries_by_name(self, _name, _domain): return [] def create_domain(self, _fqdomain): pass def delete_domain(self, _fqdomain): pass nova-2014.1/nova/network/minidns.py0000664000175400017540000001572412323721477020372 0ustar jenkinsjenkins00000000000000# Copyright 2011 Andrew Bogott for the Wikimedia Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import shutil import tempfile from oslo.config import cfg from nova import exception from nova.network import dns_driver from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) class MiniDNS(dns_driver.DNSDriver): """Trivial DNS driver. This will read/write to a local, flat file and have no effect on your actual DNS system. This class is strictly for testing purposes, and should keep you out of dependency hell. Note that there is almost certainly a race condition here that will manifest anytime instances are rapidly created and deleted. A proper implementation will need some manner of locking. """ def __init__(self): if CONF.log_dir: self.filename = os.path.join(CONF.log_dir, "dnstest.txt") self.tempdir = None else: self.tempdir = tempfile.mkdtemp() self.filename = os.path.join(self.tempdir, "dnstest.txt") LOG.debug(_('minidns file is |%s|'), self.filename) if not os.path.exists(self.filename): f = open(self.filename, "w+") f.write("# minidns\n\n\n") f.close() def get_domains(self): entries = [] infile = open(self.filename, 'r') for line in infile: entry = self.parse_line(line) if entry and entry['address'] == 'domain': entries.append(entry['name']) infile.close() return entries def qualify(self, name, domain): if domain: qualified = "%s.%s" % (name, domain) else: qualified = name return qualified.lower() def create_entry(self, name, address, type, domain): if name is None: raise exception.InvalidInput(_("Invalid name")) if type.lower() != 'a': raise exception.InvalidInput(_("This driver only supports " "type 'a'")) if self.get_entries_by_name(name, domain): raise exception.FloatingIpDNSExists(name=name, domain=domain) outfile = open(self.filename, 'a+') outfile.write("%s %s %s\n" % (address, self.qualify(name, domain), type)) outfile.close() def parse_line(self, line): vals = line.split() if len(vals) < 3: return None else: entry = {} entry['address'] = vals[0].lower() entry['name'] = vals[1].lower() entry['type'] = vals[2].lower() if entry['address'] == 'domain': entry['domain'] = entry['name'] else: entry['domain'] = entry['name'].partition('.')[2] return entry def delete_entry(self, name, domain): if name is None: raise exception.InvalidInput(_("Invalid name")) deleted = False infile = open(self.filename, 'r') outfile = tempfile.NamedTemporaryFile('w', delete=False) for line in infile: entry = self.parse_line(line) if ((not entry) or entry['name'] != self.qualify(name, domain)): outfile.write(line) else: deleted = True infile.close() outfile.close() shutil.move(outfile.name, self.filename) if not deleted: LOG.warn(_('Cannot delete entry |%s|'), self.qualify(name, domain)) raise exception.NotFound def modify_address(self, name, address, domain): if not self.get_entries_by_name(name, domain): raise exception.NotFound infile = open(self.filename, 'r') outfile = tempfile.NamedTemporaryFile('w', delete=False) for line in infile: entry = self.parse_line(line) if (entry and entry['name'] == self.qualify(name, domain)): outfile.write("%s %s %s\n" % (address, self.qualify(name, domain), entry['type'])) else: outfile.write(line) infile.close() outfile.close() shutil.move(outfile.name, self.filename) def get_entries_by_address(self, address, domain): entries = [] infile = open(self.filename, 'r') for line in infile: entry = self.parse_line(line) if entry and entry['address'] == address.lower(): if entry['name'].endswith(domain.lower()): name = entry['name'].split(".")[0] if name not in entries: entries.append(name) infile.close() return entries def get_entries_by_name(self, name, domain): entries = [] infile = open(self.filename, 'r') for line in infile: entry = self.parse_line(line) if (entry and entry['name'] == self.qualify(name, domain)): entries.append(entry['address']) infile.close() return entries def delete_dns_file(self): if os.path.exists(self.filename): try: os.remove(self.filename) except OSError: pass if self.tempdir and os.path.exists(self.tempdir): try: shutil.rmtree(self.tempdir) except OSError: pass def create_domain(self, fqdomain): if self.get_entries_by_name(fqdomain, ''): raise exception.FloatingIpDNSExists(name=fqdomain, domain='') outfile = open(self.filename, 'a+') outfile.write("%s %s %s\n" % ('domain', fqdomain, 'domain')) outfile.close() def delete_domain(self, fqdomain): deleted = False infile = open(self.filename, 'r') outfile = tempfile.NamedTemporaryFile('w', delete=False) for line in infile: entry = self.parse_line(line) if ((not entry) or entry['domain'] != fqdomain.lower()): outfile.write(line) else: LOG.info(_("deleted %s"), entry) deleted = True infile.close() outfile.close() shutil.move(outfile.name, self.filename) if not deleted: LOG.warn(_('Cannot delete domain |%s|'), fqdomain) raise exception.NotFound nova-2014.1/nova/network/neutronv2/0000775000175400017540000000000012323722546020306 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/network/neutronv2/constants.py0000664000175400017540000000127212323721477022700 0ustar jenkinsjenkins00000000000000# Copyright 2013 UnitedStack Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. NET_EXTERNAL = 'router:external' PORTBINDING_EXT = 'Port Binding' nova-2014.1/nova/network/neutronv2/api.py0000664000175400017540000015664112323721510021434 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved # Copyright (c) 2012 NEC Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # import time from neutronclient.common import exceptions as neutron_client_exc from oslo.config import cfg import six from nova.compute import flavors from nova import conductor from nova.db import base from nova import exception from nova.network import api as network_api from nova.network import model as network_model from nova.network import neutronv2 from nova.network.neutronv2 import constants from nova.network.security_group import openstack_driver from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import uuidutils neutron_opts = [ cfg.StrOpt('neutron_url', default='http://127.0.0.1:9696', help='URL for connecting to neutron'), cfg.IntOpt('neutron_url_timeout', default=30, help='Timeout value for connecting to neutron in seconds'), cfg.StrOpt('neutron_admin_username', help='Username for connecting to neutron in admin context'), cfg.StrOpt('neutron_admin_password', help='Password for connecting to neutron in admin context', secret=True), cfg.StrOpt('neutron_admin_tenant_id', help='Tenant id for connecting to neutron in admin context'), cfg.StrOpt('neutron_admin_tenant_name', help='Tenant name for connecting to neutron in admin context. ' 'This option is mutually exclusive with ' 'neutron_admin_tenant_id. Note that with Keystone V3 ' 'tenant names are only unique within a domain.'), cfg.StrOpt('neutron_region_name', help='Region name for connecting to neutron in admin context'), cfg.StrOpt('neutron_admin_auth_url', default='http://localhost:5000/v2.0', help='Authorization URL for connecting to neutron in admin ' 'context'), cfg.BoolOpt('neutron_api_insecure', default=False, help='If set, ignore any SSL validation issues'), cfg.StrOpt('neutron_auth_strategy', default='keystone', help='Authorization strategy for connecting to ' 'neutron in admin context'), # TODO(berrange) temporary hack until Neutron can pass over the # name of the OVS bridge it is configured with cfg.StrOpt('neutron_ovs_bridge', default='br-int', help='Name of Integration Bridge used by Open vSwitch'), cfg.IntOpt('neutron_extension_sync_interval', default=600, help='Number of seconds before querying neutron for' ' extensions'), cfg.StrOpt('neutron_ca_certificates_file', help='Location of CA certificates file to use for ' 'neutron client requests.'), ] CONF = cfg.CONF CONF.register_opts(neutron_opts) CONF.import_opt('default_floating_pool', 'nova.network.floating_ips') CONF.import_opt('flat_injected', 'nova.network.manager') LOG = logging.getLogger(__name__) refresh_cache = network_api.refresh_cache update_instance_info_cache = network_api.update_instance_cache_with_nw_info class API(base.Base): """API for interacting with the neutron 2.x API.""" _sentinel = object() def __init__(self): super(API, self).__init__() self.last_neutron_extension_sync = None self.extensions = {} self.conductor_api = conductor.API() self.security_group_api = ( openstack_driver.get_openstack_security_group_driver()) def setup_networks_on_host(self, context, instance, host=None, teardown=False): """Setup or teardown the network structures.""" def _get_available_networks(self, context, project_id, net_ids=None, neutron=None): """Return a network list available for the tenant. The list contains networks owned by the tenant and public networks. If net_ids specified, it searches networks with requested IDs only. """ if not neutron: neutron = neutronv2.get_client(context) if net_ids: # If user has specified to attach instance only to specific # networks then only add these to **search_opts. This search will # also include 'shared' networks. search_opts = {'id': net_ids} nets = neutron.list_networks(**search_opts).get('networks', []) else: # (1) Retrieve non-public network list owned by the tenant. search_opts = {'tenant_id': project_id, 'shared': False} nets = neutron.list_networks(**search_opts).get('networks', []) # (2) Retrieve public network list. search_opts = {'shared': True} nets += neutron.list_networks(**search_opts).get('networks', []) _ensure_requested_network_ordering( lambda x: x['id'], nets, net_ids) if not context.is_admin: for net in nets: # Perform this check here rather than in validate_networks to # ensure the check is performed everytime allocate_for_instance # is invoked if net.get('router:external'): raise exception.ExternalNetworkAttachForbidden( network_uuid=net['id']) return nets def _create_port(self, port_client, instance, network_id, port_req_body, fixed_ip=None, security_group_ids=None, available_macs=None, dhcp_opts=None): """Attempts to create a port for the instance on the given network. :param port_client: The client to use to create the port. :param instance: Create the port for the given instance. :param network_id: Create the port on the given network. :param port_req_body: Pre-populated port request. Should have the device_id, device_owner, and any required neutron extension values. :param fixed_ip: Optional fixed IP to use from the given network. :param security_group_ids: Optional list of security group IDs to apply to the port. :param available_macs: Optional set of available MAC addresses to use. :param dhcp_opts: Optional DHCP options. :returns: ID of the created port. :raises PortLimitExceeded: If neutron fails with an OverQuota error. """ try: if fixed_ip: port_req_body['port']['fixed_ips'] = [{'ip_address': fixed_ip}] port_req_body['port']['network_id'] = network_id port_req_body['port']['admin_state_up'] = True port_req_body['port']['tenant_id'] = instance['project_id'] if security_group_ids: port_req_body['port']['security_groups'] = security_group_ids if available_macs is not None: if not available_macs: raise exception.PortNotFree( instance=instance['display_name']) mac_address = available_macs.pop() port_req_body['port']['mac_address'] = mac_address if dhcp_opts is not None: port_req_body['port']['extra_dhcp_opts'] = dhcp_opts port_id = port_client.create_port(port_req_body)['port']['id'] LOG.debug(_('Successfully created port: %s') % port_id, instance=instance) return port_id except neutron_client_exc.NeutronClientException as e: # NOTE(mriedem): OverQuota in neutron is a 409 if e.status_code == 409: LOG.warning(_('Neutron error: quota exceeded')) raise exception.PortLimitExceeded() with excutils.save_and_reraise_exception(): LOG.exception(_('Neutron error creating port on network %s'), network_id, instance=instance) def allocate_for_instance(self, context, instance, **kwargs): """Allocate network resources for the instance. :param requested_networks: optional value containing network_id, fixed_ip, and port_id :param security_groups: security groups to allocate for instance :param macs: None or a set of MAC addresses that the instance should use. macs is supplied by the hypervisor driver (contrast with requested_networks which is user supplied). NB: NeutronV2 currently assigns hypervisor supplied MAC addresses to arbitrary networks, which requires openflow switches to function correctly if more than one network is being used with the bare metal hypervisor (which is the only one known to limit MAC addresses). :param dhcp_options: None or a set of key/value pairs that should determine the DHCP BOOTP response, eg. for PXE booting an instance configured with the baremetal hypervisor. It is expected that these are already formatted for the neutron v2 api. See nova/virt/driver.py:dhcp_options_for_instance for an example. """ hypervisor_macs = kwargs.get('macs', None) available_macs = None if hypervisor_macs is not None: # Make a copy we can mutate: records macs that have not been used # to create a port on a network. If we find a mac with a # pre-allocated port we also remove it from this set. available_macs = set(hypervisor_macs) neutron = neutronv2.get_client(context) LOG.debug(_('allocate_for_instance() for %s'), instance['display_name']) if not instance['project_id']: msg = _('empty project id for instance %s') raise exception.InvalidInput( reason=msg % instance['display_name']) requested_networks = kwargs.get('requested_networks') dhcp_opts = kwargs.get('dhcp_options', None) ports = {} fixed_ips = {} net_ids = [] if requested_networks: for network_id, fixed_ip, port_id in requested_networks: if port_id: port = neutron.show_port(port_id)['port'] if port.get('device_id'): raise exception.PortInUse(port_id=port_id) if hypervisor_macs is not None: if port['mac_address'] not in hypervisor_macs: raise exception.PortNotUsable(port_id=port_id, instance=instance['display_name']) else: # Don't try to use this MAC if we need to create a # port on the fly later. Identical MACs may be # configured by users into multiple ports so we # discard rather than popping. available_macs.discard(port['mac_address']) network_id = port['network_id'] ports[network_id] = port elif fixed_ip and network_id: fixed_ips[network_id] = fixed_ip if network_id: net_ids.append(network_id) nets = self._get_available_networks(context, instance['project_id'], net_ids) if not nets: LOG.warn(_("No network configured!"), instance=instance) return network_model.NetworkInfo([]) security_groups = kwargs.get('security_groups', []) security_group_ids = [] # TODO(arosen) Should optimize more to do direct query for security # group if len(security_groups) == 1 if len(security_groups): search_opts = {'tenant_id': instance['project_id']} user_security_groups = neutron.list_security_groups( **search_opts).get('security_groups') for security_group in security_groups: name_match = None uuid_match = None for user_security_group in user_security_groups: if user_security_group['name'] == security_group: if name_match: raise exception.NoUniqueMatch( _("Multiple security groups found matching" " '%s'. Use an ID to be more specific.") % security_group) name_match = user_security_group['id'] if user_security_group['id'] == security_group: uuid_match = user_security_group['id'] # If a user names the security group the same as # another's security groups uuid, the name takes priority. if not name_match and not uuid_match: raise exception.SecurityGroupNotFound( security_group_id=security_group) elif name_match: security_group_ids.append(name_match) elif uuid_match: security_group_ids.append(uuid_match) touched_port_ids = [] created_port_ids = [] ports_in_requested_order = [] for network in nets: # If security groups are requested on an instance then the # network must has a subnet associated with it. Some plugins # implement the port-security extension which requires # 'port_security_enabled' to be True for security groups. # That is why True is returned if 'port_security_enabled' # is not found. if (security_groups and not ( network['subnets'] and network.get('port_security_enabled', True))): raise exception.SecurityGroupCannotBeApplied() network_id = network['id'] zone = 'compute:%s' % instance['availability_zone'] port_req_body = {'port': {'device_id': instance['uuid'], 'device_owner': zone}} try: port = ports.get(network_id) self._populate_neutron_extension_values(context, instance, port_req_body) # Requires admin creds to set port bindings port_client = (neutron if not self._has_port_binding_extension(context) else neutronv2.get_client(context, admin=True)) if port: port_client.update_port(port['id'], port_req_body) touched_port_ids.append(port['id']) ports_in_requested_order.append(port['id']) else: created_port = self._create_port( port_client, instance, network_id, port_req_body, fixed_ips.get(network_id), security_group_ids, available_macs, dhcp_opts) created_port_ids.append(created_port) ports_in_requested_order.append(created_port) except Exception: with excutils.save_and_reraise_exception(): for port_id in touched_port_ids: try: port_req_body = {'port': {'device_id': None}} # Requires admin creds to set port bindings if self._has_port_binding_extension(context): port_req_body['port']['binding:host_id'] = None port_client = neutronv2.get_client( context, admin=True) else: port_client = neutron port_client.update_port(port_id, port_req_body) except Exception: msg = _("Failed to update port %s") LOG.exception(msg, port_id) for port_id in created_port_ids: try: neutron.delete_port(port_id) except Exception: msg = _("Failed to delete port %s") LOG.exception(msg, port_id) nw_info = self.get_instance_nw_info(context, instance, networks=nets, port_ids=ports_in_requested_order) # NOTE(danms): Only return info about ports we created in this run. # In the initial allocation case, this will be everything we created, # and in later runs will only be what was created that time. Thus, # this only affects the attach case, not the original use for this # method. return network_model.NetworkInfo([port for port in nw_info if port['id'] in created_port_ids + touched_port_ids]) def _refresh_neutron_extensions_cache(self, context): """Refresh the neutron extensions cache when necessary.""" if (not self.last_neutron_extension_sync or ((time.time() - self.last_neutron_extension_sync) >= CONF.neutron_extension_sync_interval)): neutron = neutronv2.get_client(context) extensions_list = neutron.list_extensions()['extensions'] self.last_neutron_extension_sync = time.time() self.extensions.clear() self.extensions = dict((ext['name'], ext) for ext in extensions_list) def _has_port_binding_extension(self, context, refresh_cache=False): if refresh_cache: self._refresh_neutron_extensions_cache(context) return constants.PORTBINDING_EXT in self.extensions def _populate_neutron_extension_values(self, context, instance, port_req_body): """Populate neutron extension values for the instance. If the extension contains nvp-qos then get the rxtx_factor. """ self._refresh_neutron_extensions_cache(context) if 'nvp-qos' in self.extensions: flavor = flavors.extract_flavor(instance) rxtx_factor = flavor.get('rxtx_factor') port_req_body['port']['rxtx_factor'] = rxtx_factor if self._has_port_binding_extension(context): port_req_body['port']['binding:host_id'] = instance.get('host') def deallocate_for_instance(self, context, instance, **kwargs): """Deallocate all network resources related to the instance.""" LOG.debug(_('deallocate_for_instance() for %s'), instance['display_name']) search_opts = {'device_id': instance['uuid']} neutron = neutronv2.get_client(context) data = neutron.list_ports(**search_opts) ports = [port['id'] for port in data.get('ports', [])] requested_networks = kwargs.get('requested_networks') or {} ports_to_skip = [port_id for nets, fips, port_id in requested_networks] ports = set(ports) - set(ports_to_skip) for port in ports: try: neutron.delete_port(port) except neutronv2.exceptions.NeutronClientException as e: if e.status_code == 404: LOG.warning(_("Port %s does not exist"), port) else: with excutils.save_and_reraise_exception(): LOG.exception(_("Failed to delete neutron port %s"), port) # NOTE(arosen): This clears out the network_cache only if the instance # hasn't already been deleted. This is needed when an instance fails to # launch and is rescheduled onto another compute node. If the instance # has already been deleted this call does nothing. update_instance_info_cache(self, context, instance, network_model.NetworkInfo([])) def allocate_port_for_instance(self, context, instance, port_id, network_id=None, requested_ip=None): """Allocate a port for the instance.""" return self.allocate_for_instance(context, instance, requested_networks=[(network_id, requested_ip, port_id)]) def deallocate_port_for_instance(self, context, instance, port_id): """Remove a specified port from the instance. Return network information for the instance """ try: neutronv2.get_client(context).delete_port(port_id) except Exception: LOG.exception(_("Failed to delete neutron port %s") % port_id) return self.get_instance_nw_info(context, instance) def list_ports(self, context, **search_opts): """List ports for the client based on search options.""" return neutronv2.get_client(context).list_ports(**search_opts) def show_port(self, context, port_id): """Return the port for the client given the port id.""" return neutronv2.get_client(context).show_port(port_id) @refresh_cache def get_instance_nw_info(self, context, instance, networks=None, port_ids=None, use_slave=False): """Return network information for specified instance and update cache. """ # NOTE(geekinutah): It would be nice if use_slave had us call # special APIs that pummeled slaves instead of # the master. For now we just ignore this arg. result = self._get_instance_nw_info(context, instance, networks, port_ids) return result def _get_instance_nw_info(self, context, instance, networks=None, port_ids=None): # keep this caching-free version of the get_instance_nw_info method # because it is used by the caching logic itself. LOG.debug(_('get_instance_nw_info() for %s'), instance['display_name']) nw_info = self._build_network_info_model(context, instance, networks, port_ids) return network_model.NetworkInfo.hydrate(nw_info) def _gather_port_ids_and_networks(self, context, instance, networks=None, port_ids=None): """Return an instance's complete list of port_ids and networks.""" if ((networks is None and port_ids is not None) or (port_ids is None and networks is not None)): message = ("This method needs to be called with either " "networks=None and port_ids=None or port_ids and " " networks as not none.") raise exception.NovaException(message=message) # Unfortunately, this is sometimes in unicode and sometimes not if isinstance(instance['info_cache']['network_info'], six.text_type): ifaces = jsonutils.loads(instance['info_cache']['network_info']) else: ifaces = instance['info_cache']['network_info'] # This code path is only done when refreshing the network_cache if port_ids is None: port_ids = [iface['id'] for iface in ifaces] net_ids = [iface['network']['id'] for iface in ifaces] if networks is None: networks = self._get_available_networks(context, instance['project_id'], net_ids) # an interface was added/removed from instance. else: # Since networks does not contain the existing networks on the # instance we use their values from the cache and add it. networks = networks + [ {'id': iface['network']['id'], 'name': iface['network']['label'], 'tenant_id': iface['network']['meta']['tenant_id']} for iface in ifaces] # Include existing interfaces so they are not removed from the db. port_ids = [iface['id'] for iface in ifaces] + port_ids return networks, port_ids @refresh_cache def add_fixed_ip_to_instance(self, context, instance, network_id): """Add a fixed ip to the instance from specified network.""" search_opts = {'network_id': network_id} data = neutronv2.get_client(context).list_subnets(**search_opts) ipam_subnets = data.get('subnets', []) if not ipam_subnets: raise exception.NetworkNotFoundForInstance( instance_id=instance['uuid']) zone = 'compute:%s' % instance['availability_zone'] search_opts = {'device_id': instance['uuid'], 'device_owner': zone, 'network_id': network_id} data = neutronv2.get_client(context).list_ports(**search_opts) ports = data['ports'] for p in ports: for subnet in ipam_subnets: fixed_ips = p['fixed_ips'] fixed_ips.append({'subnet_id': subnet['id']}) port_req_body = {'port': {'fixed_ips': fixed_ips}} try: neutronv2.get_client(context).update_port(p['id'], port_req_body) return except Exception as ex: msg = _("Unable to update port %(portid)s on subnet " "%(subnet_id)s with failure: %(exception)s") LOG.debug(msg, {'portid': p['id'], 'subnet_id': subnet['id'], 'exception': ex}) raise exception.NetworkNotFoundForInstance( instance_id=instance['uuid']) @refresh_cache def remove_fixed_ip_from_instance(self, context, instance, address): """Remove a fixed ip from the instance.""" zone = 'compute:%s' % instance['availability_zone'] search_opts = {'device_id': instance['uuid'], 'device_owner': zone, 'fixed_ips': 'ip_address=%s' % address} data = neutronv2.get_client(context).list_ports(**search_opts) ports = data['ports'] for p in ports: fixed_ips = p['fixed_ips'] new_fixed_ips = [] for fixed_ip in fixed_ips: if fixed_ip['ip_address'] != address: new_fixed_ips.append(fixed_ip) port_req_body = {'port': {'fixed_ips': new_fixed_ips}} try: neutronv2.get_client(context).update_port(p['id'], port_req_body) except Exception as ex: msg = _("Unable to update port %(portid)s with" " failure: %(exception)s") LOG.debug(msg, {'portid': p['id'], 'exception': ex}) return raise exception.FixedIpNotFoundForSpecificInstance( instance_uuid=instance['uuid'], ip=address) def validate_networks(self, context, requested_networks, num_instances): """Validate that the tenant can use the requested networks. Return the number of instances than can be successfully allocated with the requested network configuration. """ LOG.debug(_('validate_networks() for %s'), requested_networks) neutron = neutronv2.get_client(context) ports_needed_per_instance = 0 if not requested_networks: nets = self._get_available_networks(context, context.project_id, neutron=neutron) if len(nets) > 1: # Attaching to more than one network by default doesn't # make sense, as the order will be arbitrary and the guest OS # won't know which to configure msg = _("Multiple possible networks found, use a Network " "ID to be more specific.") raise exception.NetworkAmbiguous(msg) else: ports_needed_per_instance = 1 else: net_ids = [] for (net_id, _i, port_id) in requested_networks: if port_id: try: port = neutron.show_port(port_id).get('port') except neutronv2.exceptions.NeutronClientException as e: if e.status_code == 404: port = None else: with excutils.save_and_reraise_exception(): LOG.exception(_("Failed to access port %s"), port_id) if not port: raise exception.PortNotFound(port_id=port_id) if port.get('device_id', None): raise exception.PortInUse(port_id=port_id) if not port.get('fixed_ips'): raise exception.PortRequiresFixedIP(port_id=port_id) net_id = port['network_id'] else: ports_needed_per_instance += 1 if net_id in net_ids: raise exception.NetworkDuplicated(network_id=net_id) net_ids.append(net_id) # Now check to see if all requested networks exist nets = self._get_available_networks(context, context.project_id, net_ids, neutron=neutron) for net in nets: if not net.get('subnets'): raise exception.NetworkRequiresSubnet( network_uuid=net['id']) if len(nets) != len(net_ids): requsted_netid_set = set(net_ids) returned_netid_set = set([net['id'] for net in nets]) lostid_set = requsted_netid_set - returned_netid_set id_str = '' for _id in lostid_set: id_str = id_str and id_str + ', ' + _id or _id raise exception.NetworkNotFound(network_id=id_str) # Note(PhilD): Ideally Nova would create all required ports as part of # network validation, but port creation requires some details # from the hypervisor. So we just check the quota and return # how many of the requested number of instances can be created ports = neutron.list_ports(tenant_id=context.project_id)['ports'] quotas = neutron.show_quota(tenant_id=context.project_id)['quota'] if quotas.get('port') == -1: # Unlimited Port Quota return num_instances else: free_ports = quotas.get('port') - len(ports) ports_needed = ports_needed_per_instance * num_instances if free_ports >= ports_needed: return num_instances else: return free_ports // ports_needed_per_instance def _get_instance_uuids_by_ip(self, context, address): """Retrieve instance uuids associated with the given ip address. :returns: A list of dicts containing the uuids keyed by 'instance_uuid' e.g. [{'instance_uuid': uuid}, ...] """ search_opts = {"fixed_ips": 'ip_address=%s' % address} data = neutronv2.get_client(context).list_ports(**search_opts) ports = data.get('ports', []) return [{'instance_uuid': port['device_id']} for port in ports if port['device_id']] def get_instance_uuids_by_ip_filter(self, context, filters): """Return a list of dicts in the form of [{'instance_uuid': uuid}] that matched the ip filter. """ # filters['ip'] is composed as '^%s$' % fixed_ip.replace('.', '\\.') ip = filters.get('ip') # we remove ^$\ in the ip filer if ip[0] == '^': ip = ip[1:] if ip[-1] == '$': ip = ip[:-1] ip = ip.replace('\\.', '.') return self._get_instance_uuids_by_ip(context, ip) def _get_port_id_by_fixed_address(self, client, instance, address): """Return port_id from a fixed address.""" zone = 'compute:%s' % instance['availability_zone'] search_opts = {'device_id': instance['uuid'], 'device_owner': zone} data = client.list_ports(**search_opts) ports = data['ports'] port_id = None for p in ports: for ip in p['fixed_ips']: if ip['ip_address'] == address: port_id = p['id'] break if not port_id: raise exception.FixedIpNotFoundForAddress(address=address) return port_id @refresh_cache def associate_floating_ip(self, context, instance, floating_address, fixed_address, affect_auto_assigned=False): """Associate a floating ip with a fixed ip.""" # Note(amotoki): 'affect_auto_assigned' is not respected # since it is not used anywhere in nova code and I could # find why this parameter exists. client = neutronv2.get_client(context) port_id = self._get_port_id_by_fixed_address(client, instance, fixed_address) fip = self._get_floating_ip_by_address(client, floating_address) param = {'port_id': port_id, 'fixed_ip_address': fixed_address} client.update_floatingip(fip['id'], {'floatingip': param}) if fip['port_id']: port = client.show_port(fip['port_id'])['port'] orig_instance_uuid = port['device_id'] msg_dict = dict(address=floating_address, instance_id=orig_instance_uuid) LOG.info(_('re-assign floating IP %(address)s from ' 'instance %(instance_id)s') % msg_dict) orig_instance = self.db.instance_get_by_uuid(context, orig_instance_uuid) # purge cached nw info for the original instance update_instance_info_cache(self, context, orig_instance) def get_all(self, context): """Get all networks for client.""" client = neutronv2.get_client(context) networks = client.list_networks().get('networks') for network in networks: network['label'] = network['name'] return networks def get(self, context, network_uuid): """Get specific network for client.""" client = neutronv2.get_client(context) network = client.show_network(network_uuid).get('network') or {} network['label'] = network['name'] return network def delete(self, context, network_uuid): """Delete a network for client.""" raise NotImplementedError() def disassociate(self, context, network_uuid): """Disassociate a network for client.""" raise NotImplementedError() def associate(self, context, network_uuid, host=_sentinel, project=_sentinel): """Associate a network for client.""" raise NotImplementedError() def get_fixed_ip(self, context, id): """Get a fixed ip from the id.""" raise NotImplementedError() def get_fixed_ip_by_address(self, context, address): """Return instance uuids given an address.""" uuid_maps = self._get_instance_uuids_by_ip(context, address) if len(uuid_maps) == 1: return uuid_maps[0] elif not uuid_maps: raise exception.FixedIpNotFoundForAddress(address=address) else: raise exception.FixedIpAssociatedWithMultipleInstances( address=address) def _setup_net_dict(self, client, network_id): if not network_id: return {} pool = client.show_network(network_id)['network'] return {pool['id']: pool} def _setup_port_dict(self, client, port_id): if not port_id: return {} port = client.show_port(port_id)['port'] return {port['id']: port} def _setup_pools_dict(self, client): pools = self._get_floating_ip_pools(client) return dict([(i['id'], i) for i in pools]) def _setup_ports_dict(self, client, project_id=None): search_opts = {'tenant_id': project_id} if project_id else {} ports = client.list_ports(**search_opts)['ports'] return dict([(p['id'], p) for p in ports]) def get_floating_ip(self, context, id): """Return floating ip object given the floating ip id.""" client = neutronv2.get_client(context) try: fip = client.show_floatingip(id)['floatingip'] except neutronv2.exceptions.NeutronClientException as e: if e.status_code == 404: raise exception.FloatingIpNotFound(id=id) else: with excutils.save_and_reraise_exception(): LOG.exception(_('Unable to access floating IP %s'), id) pool_dict = self._setup_net_dict(client, fip['floating_network_id']) port_dict = self._setup_port_dict(client, fip['port_id']) return self._format_floating_ip_model(fip, pool_dict, port_dict) def _get_floating_ip_pools(self, client, project_id=None): search_opts = {constants.NET_EXTERNAL: True} if project_id: search_opts.update({'tenant_id': project_id}) data = client.list_networks(**search_opts) return data['networks'] def get_floating_ip_pools(self, context): """Return floating ip pools.""" client = neutronv2.get_client(context) pools = self._get_floating_ip_pools(client) return [{'name': n['name'] or n['id']} for n in pools] def _format_floating_ip_model(self, fip, pool_dict, port_dict): pool = pool_dict[fip['floating_network_id']] result = {'id': fip['id'], 'address': fip['floating_ip_address'], 'pool': pool['name'] or pool['id'], 'project_id': fip['tenant_id'], # In Neutron v2, an exact fixed_ip_id does not exist. 'fixed_ip_id': fip['port_id'], } # In Neutron v2 API fixed_ip_address and instance uuid # (= device_id) are known here, so pass it as a result. result['fixed_ip'] = {'address': fip['fixed_ip_address']} if fip['port_id']: instance_uuid = port_dict[fip['port_id']]['device_id'] result['instance'] = {'uuid': instance_uuid} else: result['instance'] = None return result def get_floating_ip_by_address(self, context, address): """Return a floating ip given an address.""" client = neutronv2.get_client(context) fip = self._get_floating_ip_by_address(client, address) pool_dict = self._setup_net_dict(client, fip['floating_network_id']) port_dict = self._setup_port_dict(client, fip['port_id']) return self._format_floating_ip_model(fip, pool_dict, port_dict) def get_floating_ips_by_project(self, context): client = neutronv2.get_client(context) project_id = context.project_id fips = client.list_floatingips(tenant_id=project_id)['floatingips'] pool_dict = self._setup_pools_dict(client) port_dict = self._setup_ports_dict(client, project_id) return [self._format_floating_ip_model(fip, pool_dict, port_dict) for fip in fips] def get_floating_ips_by_fixed_address(self, context, fixed_address): raise NotImplementedError() def get_instance_id_by_floating_address(self, context, address): """Return the instance id a floating ip's fixed ip is allocated to.""" client = neutronv2.get_client(context) fip = self._get_floating_ip_by_address(client, address) if not fip['port_id']: return None port = client.show_port(fip['port_id'])['port'] return port['device_id'] def get_vifs_by_instance(self, context, instance): raise NotImplementedError() def get_vif_by_mac_address(self, context, mac_address): raise NotImplementedError() def _get_floating_ip_pool_id_by_name_or_id(self, client, name_or_id): search_opts = {constants.NET_EXTERNAL: True, 'fields': 'id'} if uuidutils.is_uuid_like(name_or_id): search_opts.update({'id': name_or_id}) else: search_opts.update({'name': name_or_id}) data = client.list_networks(**search_opts) nets = data['networks'] if len(nets) == 1: return nets[0]['id'] elif len(nets) == 0: raise exception.FloatingIpPoolNotFound() else: msg = (_("Multiple floating IP pools matches found for name '%s'") % name_or_id) raise exception.NovaException(message=msg) def allocate_floating_ip(self, context, pool=None): """Add a floating ip to a project from a pool.""" client = neutronv2.get_client(context) pool = pool or CONF.default_floating_pool pool_id = self._get_floating_ip_pool_id_by_name_or_id(client, pool) # TODO(amotoki): handle exception during create_floatingip() # At this timing it is ensured that a network for pool exists. # quota error may be returned. param = {'floatingip': {'floating_network_id': pool_id}} try: fip = client.create_floatingip(param) except (neutron_client_exc.IpAddressGenerationFailureClient, neutron_client_exc.ExternalIpAddressExhaustedClient) as e: raise exception.NoMoreFloatingIps(unicode(e)) return fip['floatingip']['floating_ip_address'] def _get_floating_ip_by_address(self, client, address): """Get floatingip from floating ip address.""" if not address: raise exception.FloatingIpNotFoundForAddress(address=address) data = client.list_floatingips(floating_ip_address=address) fips = data['floatingips'] if len(fips) == 0: raise exception.FloatingIpNotFoundForAddress(address=address) elif len(fips) > 1: raise exception.FloatingIpMultipleFoundForAddress(address=address) return fips[0] def _get_floating_ips_by_fixed_and_port(self, client, fixed_ip, port): """Get floatingips from fixed ip and port.""" try: data = client.list_floatingips(fixed_ip_address=fixed_ip, port_id=port) # If a neutron plugin does not implement the L3 API a 404 from # list_floatingips will be raised. except neutronv2.exceptions.NeutronClientException as e: if e.status_code == 404: return [] with excutils.save_and_reraise_exception(): LOG.exception(_('Unable to access floating IP %(fixed_ip)s ' 'for port %(port_id)s'), {'fixed_ip': fixed_ip, 'port_id': port}) return data['floatingips'] def release_floating_ip(self, context, address, affect_auto_assigned=False): """Remove a floating ip with the given address from a project.""" # Note(amotoki): We cannot handle a case where multiple pools # have overlapping IP address range. In this case we cannot use # 'address' as a unique key. # This is a limitation of the current nova. # Note(amotoki): 'affect_auto_assigned' is not respected # since it is not used anywhere in nova code and I could # find why this parameter exists. client = neutronv2.get_client(context) fip = self._get_floating_ip_by_address(client, address) if fip['port_id']: raise exception.FloatingIpAssociated(address=address) client.delete_floatingip(fip['id']) @refresh_cache def disassociate_floating_ip(self, context, instance, address, affect_auto_assigned=False): """Disassociate a floating ip from the instance.""" # Note(amotoki): 'affect_auto_assigned' is not respected # since it is not used anywhere in nova code and I could # find why this parameter exists. client = neutronv2.get_client(context) fip = self._get_floating_ip_by_address(client, address) client.update_floatingip(fip['id'], {'floatingip': {'port_id': None}}) def migrate_instance_start(self, context, instance, migration): """Start to migrate the network of an instance.""" # NOTE(wenjianhn): just pass to make migrate instance doesn't # raise for now. pass def migrate_instance_finish(self, context, instance, migration): """Finish migrating the network of an instance.""" if not self._has_port_binding_extension(context, refresh_cache=True): return neutron = neutronv2.get_client(context, admin=True) search_opts = {'device_id': instance['uuid'], 'tenant_id': instance['project_id']} data = neutron.list_ports(**search_opts) ports = data['ports'] for p in ports: port_req_body = {'port': {'binding:host_id': migration['dest_compute']}} try: neutron.update_port(p['id'], port_req_body) except Exception: with excutils.save_and_reraise_exception(): msg = _("Unable to update host of port %s") LOG.exception(msg, p['id']) def add_network_to_project(self, context, project_id, network_uuid=None): """Force add a network to the project.""" raise NotImplementedError() def _nw_info_get_ips(self, client, port): network_IPs = [] for fixed_ip in port['fixed_ips']: fixed = network_model.FixedIP(address=fixed_ip['ip_address']) floats = self._get_floating_ips_by_fixed_and_port( client, fixed_ip['ip_address'], port['id']) for ip in floats: fip = network_model.IP(address=ip['floating_ip_address'], type='floating') fixed.add_floating_ip(fip) network_IPs.append(fixed) return network_IPs def _nw_info_get_subnets(self, context, port, network_IPs): subnets = self._get_subnets_from_port(context, port) for subnet in subnets: subnet['ips'] = [fixed_ip for fixed_ip in network_IPs if fixed_ip.is_in_subnet(subnet)] return subnets def _nw_info_build_network(self, port, networks, subnets): network_name = None for net in networks: if port['network_id'] == net['id']: network_name = net['name'] tenant_id = net['tenant_id'] break else: tenant_id = port['tenant_id'] LOG.warning(_("Network %(id)s not matched with the tenants " "network! The ports tenant %(tenant_id)s will be " "used."), {'id': port['network_id'], 'tenant_id': tenant_id}) bridge = None ovs_interfaceid = None # Network model metadata should_create_bridge = None vif_type = port.get('binding:vif_type') # TODO(berrange) Neutron should pass the bridge name # in another binding metadata field if vif_type == network_model.VIF_TYPE_OVS: bridge = CONF.neutron_ovs_bridge ovs_interfaceid = port['id'] elif vif_type == network_model.VIF_TYPE_BRIDGE: bridge = "brq" + port['network_id'] should_create_bridge = True if bridge is not None: bridge = bridge[:network_model.NIC_NAME_LEN] network = network_model.Network( id=port['network_id'], bridge=bridge, injected=CONF.flat_injected, label=network_name, tenant_id=tenant_id ) network['subnets'] = subnets port_profile = port.get('binding:profile') if port_profile: physical_network = port_profile.get('physical_network') if physical_network: network['physical_network'] = physical_network if should_create_bridge is not None: network['should_create_bridge'] = should_create_bridge return network, ovs_interfaceid def _build_network_info_model(self, context, instance, networks=None, port_ids=None): """Return list of ordered VIFs attached to instance. :param context - request context. :param instance - instance we are returning network info for. :param networks - List of networks being attached to an instance. If value is None this value will be populated from the existing cached value. :param port_ids - List of port_ids that are being attached to an instance in order of attachment. If value is None this value will be populated from the existing cached value. """ search_opts = {'tenant_id': instance['project_id'], 'device_id': instance['uuid'], } client = neutronv2.get_client(context, admin=True) data = client.list_ports(**search_opts) current_neutron_ports = data.get('ports', []) networks, port_ids = self._gather_port_ids_and_networks( context, instance, networks, port_ids) nw_info = network_model.NetworkInfo() current_neutron_port_map = {} for current_neutron_port in current_neutron_ports: current_neutron_port_map[current_neutron_port['id']] = ( current_neutron_port) for port_id in port_ids: current_neutron_port = current_neutron_port_map.get(port_id) if current_neutron_port: vif_active = False if (current_neutron_port['admin_state_up'] is False or current_neutron_port['status'] == 'ACTIVE'): vif_active = True network_IPs = self._nw_info_get_ips(client, current_neutron_port) subnets = self._nw_info_get_subnets(context, current_neutron_port, network_IPs) devname = "tap" + current_neutron_port['id'] devname = devname[:network_model.NIC_NAME_LEN] network, ovs_interfaceid = ( self._nw_info_build_network(current_neutron_port, networks, subnets)) nw_info.append(network_model.VIF( id=current_neutron_port['id'], address=current_neutron_port['mac_address'], network=network, type=current_neutron_port.get('binding:vif_type'), details=current_neutron_port.get('binding:vif_details'), ovs_interfaceid=ovs_interfaceid, devname=devname, active=vif_active)) return nw_info def _get_subnets_from_port(self, context, port): """Return the subnets for a given port.""" fixed_ips = port['fixed_ips'] # No fixed_ips for the port means there is no subnet associated # with the network the port is created on. # Since list_subnets(id=[]) returns all subnets visible for the # current tenant, returned subnets may contain subnets which is not # related to the port. To avoid this, the method returns here. if not fixed_ips: return [] search_opts = {'id': [ip['subnet_id'] for ip in fixed_ips]} data = neutronv2.get_client(context).list_subnets(**search_opts) ipam_subnets = data.get('subnets', []) subnets = [] for subnet in ipam_subnets: subnet_dict = {'cidr': subnet['cidr'], 'gateway': network_model.IP( address=subnet['gateway_ip'], type='gateway'), } # attempt to populate DHCP server field search_opts = {'network_id': subnet['network_id'], 'device_owner': 'network:dhcp'} data = neutronv2.get_client(context).list_ports(**search_opts) dhcp_ports = data.get('ports', []) for p in dhcp_ports: for ip_pair in p['fixed_ips']: if ip_pair['subnet_id'] == subnet['id']: subnet_dict['dhcp_server'] = ip_pair['ip_address'] break subnet_object = network_model.Subnet(**subnet_dict) for dns in subnet.get('dns_nameservers', []): subnet_object.add_dns( network_model.IP(address=dns, type='dns')) # TODO(gongysh) get the routes for this subnet subnets.append(subnet_object) return subnets def get_dns_domains(self, context): """Return a list of available dns domains. These can be used to create DNS entries for floating ips. """ raise NotImplementedError() def add_dns_entry(self, context, address, name, dns_type, domain): """Create specified DNS entry for address.""" raise NotImplementedError() def modify_dns_entry(self, context, name, address, domain): """Create specified DNS entry for address.""" raise NotImplementedError() def delete_dns_entry(self, context, name, domain): """Delete the specified dns entry.""" raise NotImplementedError() def delete_dns_domain(self, context, domain): """Delete the specified dns domain.""" raise NotImplementedError() def get_dns_entries_by_address(self, context, address, domain): """Get entries for address and domain.""" raise NotImplementedError() def get_dns_entries_by_name(self, context, name, domain): """Get entries for name and domain.""" raise NotImplementedError() def create_private_dns_domain(self, context, domain, availability_zone): """Create a private DNS domain with nova availability zone.""" raise NotImplementedError() def create_public_dns_domain(self, context, domain, project=None): """Create a private DNS domain with optional nova project.""" raise NotImplementedError() def _ensure_requested_network_ordering(accessor, unordered, preferred): """Sort a list with respect to the preferred network ordering.""" if preferred: unordered.sort(key=lambda i: preferred.index(accessor(i))) nova-2014.1/nova/network/neutronv2/__init__.py0000664000175400017540000000556712323721477022436 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from neutronclient.common import exceptions from neutronclient.v2_0 import client as clientv20 from oslo.config import cfg from nova.openstack.common import local from nova.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) def _get_client(token=None): params = { 'endpoint_url': CONF.neutron_url, 'timeout': CONF.neutron_url_timeout, 'insecure': CONF.neutron_api_insecure, 'ca_cert': CONF.neutron_ca_certificates_file, } if token: params['token'] = token params['auth_strategy'] = None else: params['username'] = CONF.neutron_admin_username if CONF.neutron_admin_tenant_id: params['tenant_id'] = CONF.neutron_admin_tenant_id else: params['tenant_name'] = CONF.neutron_admin_tenant_name params['password'] = CONF.neutron_admin_password params['auth_url'] = CONF.neutron_admin_auth_url params['auth_strategy'] = CONF.neutron_auth_strategy return clientv20.Client(**params) def get_client(context, admin=False): # NOTE(dprince): In the case where no auth_token is present # we allow use of neutron admin tenant credentials if # it is an admin context. # This is to support some services (metadata API) where # an admin context is used without an auth token. if admin or (context.is_admin and not context.auth_token): # NOTE(dims): We need to use admin token, let us cache a # thread local copy for re-using this client # multiple times and to avoid excessive calls # to neutron to fetch tokens. Some of the hackiness in this code # will go away once BP auth-plugins is implemented. # That blue print will ensure that tokens can be shared # across clients as well if not hasattr(local.strong_store, 'neutron_client'): local.strong_store.neutron_client = _get_client(token=None) return local.strong_store.neutron_client # We got a user token that we can use that as-is if context.auth_token: token = context.auth_token return _get_client(token=token) # We did not get a user token and we should not be using # an admin token so log an error raise exceptions.Unauthorized() nova-2014.1/nova/network/linux_net.py0000664000175400017540000021504312323721477020732 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Implements vlans, bridges, and iptables rules using linux utilities.""" import calendar import inspect import os import re import netaddr from oslo.config import cfg import six from nova import exception from nova.objects import fixed_ip as fixed_ip_obj from nova.objects import virtual_interface as vif_obj from nova.openstack.common import excutils from nova.openstack.common import fileutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova.openstack.common import timeutils from nova import paths from nova import utils LOG = logging.getLogger(__name__) linux_net_opts = [ cfg.MultiStrOpt('dhcpbridge_flagfile', default=['/etc/nova/nova-dhcpbridge.conf'], help='Location of flagfiles for dhcpbridge'), cfg.StrOpt('networks_path', default=paths.state_path_def('networks'), help='Location to keep network config files'), cfg.StrOpt('public_interface', default='eth0', help='Interface for public IP addresses'), cfg.IntOpt('network_device_mtu', help='MTU setting for network interface'), cfg.StrOpt('dhcpbridge', default=paths.bindir_def('nova-dhcpbridge'), help='Location of nova-dhcpbridge'), cfg.StrOpt('routing_source_ip', default='$my_ip', help='Public IP of network host'), cfg.IntOpt('dhcp_lease_time', default=120, help='Lifetime of a DHCP lease in seconds'), cfg.MultiStrOpt('dns_server', default=[], help='If set, uses specific DNS server for dnsmasq. Can' ' be specified multiple times.'), cfg.BoolOpt('use_network_dns_servers', default=False, help='If set, uses the dns1 and dns2 from the network ref.' ' as dns servers.'), cfg.ListOpt('dmz_cidr', default=[], help='A list of dmz range that should be accepted'), cfg.MultiStrOpt('force_snat_range', default=[], help='Traffic to this range will always be snatted to the ' 'fallback ip, even if it would normally be bridged out ' 'of the node. Can be specified multiple times.'), cfg.StrOpt('dnsmasq_config_file', default='', help='Override the default dnsmasq settings with this file'), cfg.StrOpt('linuxnet_interface_driver', default='nova.network.linux_net.LinuxBridgeInterfaceDriver', help='Driver used to create ethernet devices.'), cfg.StrOpt('linuxnet_ovs_integration_bridge', default='br-int', help='Name of Open vSwitch bridge used with linuxnet'), cfg.BoolOpt('send_arp_for_ha', default=False, help='Send gratuitous ARPs for HA setup'), cfg.IntOpt('send_arp_for_ha_count', default=3, help='Send this many gratuitous ARPs for HA setup'), cfg.BoolOpt('use_single_default_gateway', default=False, help='Use single default gateway. Only first nic of vm will ' 'get default gateway from dhcp server'), cfg.MultiStrOpt('forward_bridge_interface', default=['all'], help='An interface that bridges can forward to. If this ' 'is set to all then all traffic will be forwarded. ' 'Can be specified multiple times.'), cfg.StrOpt('metadata_host', default='$my_ip', help='The IP address for the metadata API server'), cfg.IntOpt('metadata_port', default=8775, help='The port for the metadata API port'), cfg.StrOpt('iptables_top_regex', default='', help='Regular expression to match iptables rule that should ' 'always be on the top.'), cfg.StrOpt('iptables_bottom_regex', default='', help='Regular expression to match iptables rule that should ' 'always be on the bottom.'), cfg.StrOpt('iptables_drop_action', default='DROP', help=('The table that iptables to jump to when a packet is ' 'to be dropped.')), cfg.IntOpt('ovs_vsctl_timeout', default=120, help='Amount of time, in seconds, that ovs_vsctl should wait ' 'for a response from the database. 0 is to wait forever.'), cfg.BoolOpt('fake_network', default=False, help='If passed, use fake network devices and addresses'), ] CONF = cfg.CONF CONF.register_opts(linux_net_opts) CONF.import_opt('host', 'nova.netconf') CONF.import_opt('use_ipv6', 'nova.netconf') CONF.import_opt('my_ip', 'nova.netconf') # NOTE(vish): Iptables supports chain names of up to 28 characters, and we # add up to 12 characters to binary_name which is used as a prefix, # so we limit it to 16 characters. # (max_chain_name_length - len('-POSTROUTING') == 16) def get_binary_name(): """Grab the name of the binary we're running in.""" return os.path.basename(inspect.stack()[-1][1])[:16] binary_name = get_binary_name() class IptablesRule(object): """An iptables rule. You shouldn't need to use this class directly, it's only used by IptablesManager. """ def __init__(self, chain, rule, wrap=True, top=False): self.chain = chain self.rule = rule self.wrap = wrap self.top = top def __eq__(self, other): return ((self.chain == other.chain) and (self.rule == other.rule) and (self.top == other.top) and (self.wrap == other.wrap)) def __ne__(self, other): return not self == other def __str__(self): if self.wrap: chain = '%s-%s' % (binary_name, self.chain) else: chain = self.chain # new rules should have a zero [packet: byte] count return '[0:0] -A %s %s' % (chain, self.rule) class IptablesTable(object): """An iptables table.""" def __init__(self): self.rules = [] self.remove_rules = [] self.chains = set() self.unwrapped_chains = set() self.remove_chains = set() self.dirty = True def add_chain(self, name, wrap=True): """Adds a named chain to the table. The chain name is wrapped to be unique for the component creating it, so different components of Nova can safely create identically named chains without interfering with one another. At the moment, its wrapped name is -, so if nova-compute creates a chain named 'OUTPUT', it'll actually end up named 'nova-compute-OUTPUT'. """ if wrap: self.chains.add(name) else: self.unwrapped_chains.add(name) self.dirty = True def remove_chain(self, name, wrap=True): """Remove named chain. This removal "cascades". All rule in the chain are removed, as are all rules in other chains that jump to it. If the chain is not found, this is merely logged. """ if wrap: chain_set = self.chains else: chain_set = self.unwrapped_chains if name not in chain_set: LOG.warn(_('Attempted to remove chain %s which does not exist'), name) return self.dirty = True # non-wrapped chains and rules need to be dealt with specially, # so we keep a list of them to be iterated over in apply() if not wrap: self.remove_chains.add(name) chain_set.remove(name) if not wrap: self.remove_rules += filter(lambda r: r.chain == name, self.rules) self.rules = filter(lambda r: r.chain != name, self.rules) if wrap: jump_snippet = '-j %s-%s' % (binary_name, name) else: jump_snippet = '-j %s' % (name,) if not wrap: self.remove_rules += filter(lambda r: jump_snippet in r.rule, self.rules) self.rules = filter(lambda r: jump_snippet not in r.rule, self.rules) def add_rule(self, chain, rule, wrap=True, top=False): """Add a rule to the table. This is just like what you'd feed to iptables, just without the '-A ' bit at the start. However, if you need to jump to one of your wrapped chains, prepend its name with a '$' which will ensure the wrapping is applied correctly. """ if wrap and chain not in self.chains: raise ValueError(_('Unknown chain: %r') % chain) if '$' in rule: rule = ' '.join(map(self._wrap_target_chain, rule.split(' '))) rule_obj = IptablesRule(chain, rule, wrap, top) if rule_obj in self.rules: LOG.debug(_("Skipping duplicate iptables rule addition")) else: self.rules.append(IptablesRule(chain, rule, wrap, top)) self.dirty = True def _wrap_target_chain(self, s): if s.startswith('$'): return '%s-%s' % (binary_name, s[1:]) return s def remove_rule(self, chain, rule, wrap=True, top=False): """Remove a rule from a chain. Note: The rule must be exactly identical to the one that was added. You cannot switch arguments around like you can with the iptables CLI tool. """ try: self.rules.remove(IptablesRule(chain, rule, wrap, top)) if not wrap: self.remove_rules.append(IptablesRule(chain, rule, wrap, top)) self.dirty = True except ValueError: LOG.warn(_('Tried to remove rule that was not there:' ' %(chain)r %(rule)r %(wrap)r %(top)r'), {'chain': chain, 'rule': rule, 'top': top, 'wrap': wrap}) def remove_rules_regex(self, regex): """Remove all rules matching regex.""" if isinstance(regex, six.string_types): regex = re.compile(regex) num_rules = len(self.rules) self.rules = filter(lambda r: not regex.match(str(r)), self.rules) removed = num_rules - len(self.rules) if removed > 0: self.dirty = True return removed def empty_chain(self, chain, wrap=True): """Remove all rules from a chain.""" chained_rules = [rule for rule in self.rules if rule.chain == chain and rule.wrap == wrap] if chained_rules: self.dirty = True for rule in chained_rules: self.rules.remove(rule) class IptablesManager(object): """Wrapper for iptables. See IptablesTable for some usage docs A number of chains are set up to begin with. First, nova-filter-top. It's added at the top of FORWARD and OUTPUT. Its name is not wrapped, so it's shared between the various nova workers. It's intended for rules that need to live at the top of the FORWARD and OUTPUT chains. It's in both the ipv4 and ipv6 set of tables. For ipv4 and ipv6, the built-in INPUT, OUTPUT, and FORWARD filter chains are wrapped, meaning that the "real" INPUT chain has a rule that jumps to the wrapped INPUT chain, etc. Additionally, there's a wrapped chain named "local" which is jumped to from nova-filter-top. For ipv4, the built-in PREROUTING, OUTPUT, and POSTROUTING nat chains are wrapped in the same was as the built-in filter chains. Additionally, there's a snat chain that is applied after the POSTROUTING chain. """ def __init__(self, execute=None): if not execute: self.execute = _execute else: self.execute = execute self.ipv4 = {'filter': IptablesTable(), 'nat': IptablesTable(), 'mangle': IptablesTable()} self.ipv6 = {'filter': IptablesTable()} self.iptables_apply_deferred = False # Add a nova-filter-top chain. It's intended to be shared # among the various nova components. It sits at the very top # of FORWARD and OUTPUT. for tables in [self.ipv4, self.ipv6]: tables['filter'].add_chain('nova-filter-top', wrap=False) tables['filter'].add_rule('FORWARD', '-j nova-filter-top', wrap=False, top=True) tables['filter'].add_rule('OUTPUT', '-j nova-filter-top', wrap=False, top=True) tables['filter'].add_chain('local') tables['filter'].add_rule('nova-filter-top', '-j $local', wrap=False) # Wrap the built-in chains builtin_chains = {4: {'filter': ['INPUT', 'OUTPUT', 'FORWARD'], 'nat': ['PREROUTING', 'OUTPUT', 'POSTROUTING'], 'mangle': ['POSTROUTING']}, 6: {'filter': ['INPUT', 'OUTPUT', 'FORWARD']}} for ip_version in builtin_chains: if ip_version == 4: tables = self.ipv4 elif ip_version == 6: tables = self.ipv6 for table, chains in builtin_chains[ip_version].iteritems(): for chain in chains: tables[table].add_chain(chain) tables[table].add_rule(chain, '-j $%s' % (chain,), wrap=False) # Add a nova-postrouting-bottom chain. It's intended to be shared # among the various nova components. We set it as the last chain # of POSTROUTING chain. self.ipv4['nat'].add_chain('nova-postrouting-bottom', wrap=False) self.ipv4['nat'].add_rule('POSTROUTING', '-j nova-postrouting-bottom', wrap=False) # We add a snat chain to the shared nova-postrouting-bottom chain # so that it's applied last. self.ipv4['nat'].add_chain('snat') self.ipv4['nat'].add_rule('nova-postrouting-bottom', '-j $snat', wrap=False) # And then we add a float-snat chain and jump to first thing in # the snat chain. self.ipv4['nat'].add_chain('float-snat') self.ipv4['nat'].add_rule('snat', '-j $float-snat') def defer_apply_on(self): self.iptables_apply_deferred = True def defer_apply_off(self): self.iptables_apply_deferred = False self.apply() def dirty(self): for table in self.ipv4.itervalues(): if table.dirty: return True if CONF.use_ipv6: for table in self.ipv6.itervalues(): if table.dirty: return True return False def apply(self): if self.iptables_apply_deferred: return if self.dirty(): self._apply() else: LOG.debug(_("Skipping apply due to lack of new rules")) @utils.synchronized('iptables', external=True) def _apply(self): """Apply the current in-memory set of iptables rules. This will blow away any rules left over from previous runs of the same component of Nova, and replace them with our current set of rules. This happens atomically, thanks to iptables-restore. """ s = [('iptables', self.ipv4)] if CONF.use_ipv6: s += [('ip6tables', self.ipv6)] for cmd, tables in s: all_tables, _err = self.execute('%s-save' % (cmd,), '-c', run_as_root=True, attempts=5) all_lines = all_tables.split('\n') for table_name, table in tables.iteritems(): start, end = self._find_table(all_lines, table_name) all_lines[start:end] = self._modify_rules( all_lines[start:end], table, table_name) table.dirty = False self.execute('%s-restore' % (cmd,), '-c', run_as_root=True, process_input='\n'.join(all_lines), attempts=5) LOG.debug(_("IPTablesManager.apply completed with success")) def _find_table(self, lines, table_name): if len(lines) < 3: # length only <2 when fake iptables return (0, 0) try: start = lines.index('*%s' % table_name) - 1 except ValueError: # Couldn't find table_name return (0, 0) end = lines[start:].index('COMMIT') + start + 2 return (start, end) def _modify_rules(self, current_lines, table, table_name): unwrapped_chains = table.unwrapped_chains chains = table.chains remove_chains = table.remove_chains rules = table.rules remove_rules = table.remove_rules if not current_lines: fake_table = ['#Generated by nova', '*' + table_name, 'COMMIT', '#Completed by nova'] current_lines = fake_table # Remove any trace of our rules new_filter = filter(lambda line: binary_name not in line, current_lines) top_rules = [] bottom_rules = [] if CONF.iptables_top_regex: regex = re.compile(CONF.iptables_top_regex) temp_filter = filter(lambda line: regex.search(line), new_filter) for rule_str in temp_filter: new_filter = filter(lambda s: s.strip() != rule_str.strip(), new_filter) top_rules = temp_filter if CONF.iptables_bottom_regex: regex = re.compile(CONF.iptables_bottom_regex) temp_filter = filter(lambda line: regex.search(line), new_filter) for rule_str in temp_filter: new_filter = filter(lambda s: s.strip() != rule_str.strip(), new_filter) bottom_rules = temp_filter seen_chains = False rules_index = 0 for rules_index, rule in enumerate(new_filter): if not seen_chains: if rule.startswith(':'): seen_chains = True else: if not rule.startswith(':'): break if not seen_chains: rules_index = 2 our_rules = top_rules bot_rules = [] for rule in rules: rule_str = str(rule) if rule.top: # rule.top == True means we want this rule to be at the top. # Further down, we weed out duplicates from the bottom of the # list, so here we remove the dupes ahead of time. # We don't want to remove an entry if it has non-zero # [packet:byte] counts and replace it with [0:0], so let's # go look for a duplicate, and over-ride our table rule if # found. # ignore [packet:byte] counts at beginning of line if rule_str.startswith('['): rule_str = rule_str.split(']', 1)[1] dup_filter = filter(lambda s: rule_str.strip() in s.strip(), new_filter) new_filter = filter(lambda s: rule_str.strip() not in s.strip(), new_filter) # if no duplicates, use original rule if dup_filter: # grab the last entry, if there is one dup = dup_filter[-1] rule_str = str(dup) else: rule_str = str(rule) rule_str.strip() our_rules += [rule_str] else: bot_rules += [rule_str] our_rules += bot_rules new_filter[rules_index:rules_index] = our_rules new_filter[rules_index:rules_index] = [':%s - [0:0]' % (name,) for name in unwrapped_chains] new_filter[rules_index:rules_index] = [':%s-%s - [0:0]' % (binary_name, name,) for name in chains] commit_index = new_filter.index('COMMIT') new_filter[commit_index:commit_index] = bottom_rules seen_lines = set() def _weed_out_duplicates(line): # ignore [packet:byte] counts at beginning of lines if line.startswith('['): line = line.split(']', 1)[1] line = line.strip() if line in seen_lines: return False else: seen_lines.add(line) return True def _weed_out_removes(line): # We need to find exact matches here if line.startswith(':'): # it's a chain, for example, ":nova-billing - [0:0]" # strip off everything except the chain name line = line.split(':')[1] line = line.split('- [')[0] line = line.strip() for chain in remove_chains: if chain == line: remove_chains.remove(chain) return False elif line.startswith('['): # it's a rule # ignore [packet:byte] counts at beginning of lines line = line.split(']', 1)[1] line = line.strip() for rule in remove_rules: # ignore [packet:byte] counts at beginning of rules rule_str = str(rule) rule_str = rule_str.split(' ', 1)[1] rule_str = rule_str.strip() if rule_str == line: remove_rules.remove(rule) return False # Leave it alone return True # We filter duplicates, letting the *last* occurrence take # precendence. We also filter out anything in the "remove" # lists. new_filter.reverse() new_filter = filter(_weed_out_duplicates, new_filter) new_filter = filter(_weed_out_removes, new_filter) new_filter.reverse() # flush lists, just in case we didn't find something remove_chains.clear() for rule in remove_rules: remove_rules.remove(rule) return new_filter # NOTE(jkoelker) This is just a nice little stub point since mocking # builtins with mox is a nightmare def write_to_file(file, data, mode='w'): with open(file, mode) as f: f.write(data) def metadata_forward(): """Create forwarding rule for metadata.""" if CONF.metadata_host != '127.0.0.1': iptables_manager.ipv4['nat'].add_rule('PREROUTING', '-s 0.0.0.0/0 -d 169.254.169.254/32 ' '-p tcp -m tcp --dport 80 -j DNAT ' '--to-destination %s:%s' % (CONF.metadata_host, CONF.metadata_port)) else: iptables_manager.ipv4['nat'].add_rule('PREROUTING', '-s 0.0.0.0/0 -d 169.254.169.254/32 ' '-p tcp -m tcp --dport 80 ' '-j REDIRECT --to-ports %s' % CONF.metadata_port) iptables_manager.apply() def metadata_accept(): """Create the filter accept rule for metadata.""" rule = '-s 0.0.0.0/0 -p tcp -m tcp --dport %s' % CONF.metadata_port if CONF.metadata_host != '127.0.0.1': rule += ' -d %s -j ACCEPT' % CONF.metadata_host else: rule += ' -m addrtype --dst-type LOCAL -j ACCEPT' iptables_manager.ipv4['filter'].add_rule('INPUT', rule) iptables_manager.apply() def add_snat_rule(ip_range): if CONF.routing_source_ip: for dest_range in CONF.force_snat_range or ['0.0.0.0/0']: rule = ('-s %s -d %s -j SNAT --to-source %s' % (ip_range, dest_range, CONF.routing_source_ip)) if CONF.public_interface: rule += ' -o %s' % CONF.public_interface iptables_manager.ipv4['nat'].add_rule('snat', rule) iptables_manager.apply() def init_host(ip_range): """Basic networking setup goes here.""" # NOTE(devcamcar): Cloud public SNAT entries and the default # SNAT rule for outbound traffic. add_snat_rule(ip_range) rules = [] for snat_range in CONF.force_snat_range: rules.append('PREROUTING -p ipv4 --ip-src %s --ip-dst %s ' '-j redirect --redirect-target ACCEPT' % (ip_range, snat_range)) if rules: ensure_ebtables_rules(rules, 'nat') iptables_manager.ipv4['nat'].add_rule('POSTROUTING', '-s %s -d %s/32 -j ACCEPT' % (ip_range, CONF.metadata_host)) for dmz in CONF.dmz_cidr: iptables_manager.ipv4['nat'].add_rule('POSTROUTING', '-s %s -d %s -j ACCEPT' % (ip_range, dmz)) iptables_manager.ipv4['nat'].add_rule('POSTROUTING', '-s %(range)s -d %(range)s ' '-m conntrack ! --ctstate DNAT ' '-j ACCEPT' % {'range': ip_range}) iptables_manager.apply() def send_arp_for_ip(ip, device, count): out, err = _execute('arping', '-U', ip, '-A', '-I', device, '-c', str(count), run_as_root=True, check_exit_code=False) if err: LOG.debug(_('arping error for ip %s'), ip) def bind_floating_ip(floating_ip, device): """Bind ip to public interface.""" _execute('ip', 'addr', 'add', str(floating_ip) + '/32', 'dev', device, run_as_root=True, check_exit_code=[0, 2, 254]) if CONF.send_arp_for_ha and CONF.send_arp_for_ha_count > 0: send_arp_for_ip(floating_ip, device, CONF.send_arp_for_ha_count) def unbind_floating_ip(floating_ip, device): """Unbind a public ip from public interface.""" _execute('ip', 'addr', 'del', str(floating_ip) + '/32', 'dev', device, run_as_root=True, check_exit_code=[0, 2, 254]) def ensure_metadata_ip(): """Sets up local metadata ip.""" _execute('ip', 'addr', 'add', '169.254.169.254/32', 'scope', 'link', 'dev', 'lo', run_as_root=True, check_exit_code=[0, 2, 254]) def ensure_vpn_forward(public_ip, port, private_ip): """Sets up forwarding rules for vlan.""" iptables_manager.ipv4['filter'].add_rule('FORWARD', '-d %s -p udp ' '--dport 1194 ' '-j ACCEPT' % private_ip) iptables_manager.ipv4['nat'].add_rule('PREROUTING', '-d %s -p udp ' '--dport %s -j DNAT --to %s:1194' % (public_ip, port, private_ip)) iptables_manager.ipv4['nat'].add_rule('OUTPUT', '-d %s -p udp ' '--dport %s -j DNAT --to %s:1194' % (public_ip, port, private_ip)) iptables_manager.apply() def ensure_floating_forward(floating_ip, fixed_ip, device, network): """Ensure floating ip forwarding rule.""" # NOTE(vish): Make sure we never have duplicate rules for the same ip regex = '.*\s+%s(/32|\s+|$)' % floating_ip num_rules = iptables_manager.ipv4['nat'].remove_rules_regex(regex) if num_rules: msg = _('Removed %(num)d duplicate rules for floating ip %(float)s') LOG.warn(msg % {'num': num_rules, 'float': floating_ip}) for chain, rule in floating_forward_rules(floating_ip, fixed_ip, device): iptables_manager.ipv4['nat'].add_rule(chain, rule) iptables_manager.apply() if device != network['bridge']: ensure_ebtables_rules(*floating_ebtables_rules(fixed_ip, network)) def remove_floating_forward(floating_ip, fixed_ip, device, network): """Remove forwarding for floating ip.""" for chain, rule in floating_forward_rules(floating_ip, fixed_ip, device): iptables_manager.ipv4['nat'].remove_rule(chain, rule) iptables_manager.apply() if device != network['bridge']: remove_ebtables_rules(*floating_ebtables_rules(fixed_ip, network)) def floating_ebtables_rules(fixed_ip, network): """Makes sure only in-network traffic is bridged.""" return (['PREROUTING --logical-in %s -p ipv4 --ip-src %s ' '! --ip-dst %s -j redirect --redirect-target ACCEPT' % (network['bridge'], fixed_ip, network['cidr'])], 'nat') def floating_forward_rules(floating_ip, fixed_ip, device): rules = [] rule = '-s %s -j SNAT --to %s' % (fixed_ip, floating_ip) if device: rules.append(('float-snat', rule + ' -d %s' % fixed_ip)) rules.append(('float-snat', rule + ' -o %s' % device)) else: rules.append(('float-snat', rule)) rules.append( ('PREROUTING', '-d %s -j DNAT --to %s' % (floating_ip, fixed_ip))) rules.append( ('OUTPUT', '-d %s -j DNAT --to %s' % (floating_ip, fixed_ip))) rules.append(('POSTROUTING', '-s %s -m conntrack --ctstate DNAT -j SNAT ' '--to-source %s' % (fixed_ip, floating_ip))) return rules def clean_conntrack(fixed_ip): try: _execute('conntrack', '-D', '-r', fixed_ip, run_as_root=True, check_exit_code=[0, 1]) except processutils.ProcessExecutionError: LOG.exception(_('Error deleting conntrack entries for %s'), fixed_ip) def _enable_ipv4_forwarding(): sysctl_key = 'net.ipv4.ip_forward' stdout, stderr = _execute('sysctl', '-n', sysctl_key) if stdout.strip() is not '1': _execute('sysctl', '-w', '%s=1' % sysctl_key, run_as_root=True) @utils.synchronized('lock_gateway', external=True) def initialize_gateway_device(dev, network_ref): if not network_ref: return _enable_ipv4_forwarding() # NOTE(vish): The ip for dnsmasq has to be the first address on the # bridge for it to respond to reqests properly try: prefix = network_ref.cidr.prefixlen except AttributeError: prefix = network_ref['cidr'].rpartition('/')[2] full_ip = '%s/%s' % (network_ref['dhcp_server'], prefix) new_ip_params = [[full_ip, 'brd', network_ref['broadcast']]] old_ip_params = [] out, err = _execute('ip', 'addr', 'show', 'dev', dev, 'scope', 'global') for line in out.split('\n'): fields = line.split() if fields and fields[0] == 'inet': ip_params = fields[1:-1] old_ip_params.append(ip_params) if ip_params[0] != full_ip: new_ip_params.append(ip_params) if not old_ip_params or old_ip_params[0][0] != full_ip: old_routes = [] result = _execute('ip', 'route', 'show', 'dev', dev) if result: out, err = result for line in out.split('\n'): fields = line.split() if fields and 'via' in fields: old_routes.append(fields) _execute('ip', 'route', 'del', fields[0], 'dev', dev, run_as_root=True) for ip_params in old_ip_params: _execute(*_ip_bridge_cmd('del', ip_params, dev), run_as_root=True, check_exit_code=[0, 2, 254]) for ip_params in new_ip_params: _execute(*_ip_bridge_cmd('add', ip_params, dev), run_as_root=True, check_exit_code=[0, 2, 254]) for fields in old_routes: _execute('ip', 'route', 'add', *fields, run_as_root=True) if CONF.send_arp_for_ha and CONF.send_arp_for_ha_count > 0: send_arp_for_ip(network_ref['dhcp_server'], dev, CONF.send_arp_for_ha_count) if CONF.use_ipv6: _execute('ip', '-f', 'inet6', 'addr', 'change', network_ref['cidr_v6'], 'dev', dev, run_as_root=True) def get_dhcp_leases(context, network_ref): """Return a network's hosts config in dnsmasq leasefile format.""" hosts = [] host = None if network_ref['multi_host']: host = CONF.host for fixedip in fixed_ip_obj.FixedIPList.get_by_network(context, network_ref, host=host): # NOTE(cfb): Don't return a lease entry if the IP isn't # already leased if fixedip.allocated and fixedip.leased: hosts.append(_host_lease(fixedip)) return '\n'.join(hosts) def get_dhcp_hosts(context, network_ref): """Get network's hosts config in dhcp-host format.""" hosts = [] host = None if network_ref['multi_host']: host = CONF.host macs = set() for fixedip in fixed_ip_obj.FixedIPList.get_by_network(context, network_ref, host=host): if fixedip.virtual_interface.address not in macs: hosts.append(_host_dhcp(fixedip)) macs.add(fixedip.virtual_interface.address) return '\n'.join(hosts) def get_dns_hosts(context, network_ref): """Get network's DNS hosts in hosts format.""" hosts = [] for fixedip in fixed_ip_obj.FixedIPList.get_by_network(context, network_ref): hosts.append(_host_dns(fixedip)) return '\n'.join(hosts) def _add_dnsmasq_accept_rules(dev): """Allow DHCP and DNS traffic through to dnsmasq.""" table = iptables_manager.ipv4['filter'] for port in [67, 53]: for proto in ['udp', 'tcp']: args = {'dev': dev, 'port': port, 'proto': proto} table.add_rule('INPUT', '-i %(dev)s -p %(proto)s -m %(proto)s ' '--dport %(port)s -j ACCEPT' % args) iptables_manager.apply() def _remove_dnsmasq_accept_rules(dev): """Remove DHCP and DNS traffic allowed through to dnsmasq.""" table = iptables_manager.ipv4['filter'] for port in [67, 53]: for proto in ['udp', 'tcp']: args = {'dev': dev, 'port': port, 'proto': proto} table.remove_rule('INPUT', '-i %(dev)s -p %(proto)s -m %(proto)s ' '--dport %(port)s -j ACCEPT' % args) iptables_manager.apply() # NOTE(russellb) Curious why this is needed? Check out this explanation from # markmc: https://bugzilla.redhat.com/show_bug.cgi?id=910619#c6 def _add_dhcp_mangle_rule(dev): if not os.path.exists('/dev/vhost-net'): return table = iptables_manager.ipv4['mangle'] table.add_rule('POSTROUTING', '-o %s -p udp -m udp --dport 68 -j CHECKSUM ' '--checksum-fill' % dev) iptables_manager.apply() def _remove_dhcp_mangle_rule(dev): table = iptables_manager.ipv4['mangle'] table.remove_rule('POSTROUTING', '-o %s -p udp -m udp --dport 68 -j CHECKSUM ' '--checksum-fill' % dev) iptables_manager.apply() def get_dhcp_opts(context, network_ref): """Get network's hosts config in dhcp-opts format.""" hosts = [] host = None if network_ref['multi_host']: host = CONF.host fixedips = fixed_ip_obj.FixedIPList.get_by_network(context, network_ref, host=host) if fixedips: instance_set = set([fixedip.instance_uuid for fixedip in fixedips]) default_gw_vif = {} for instance_uuid in instance_set: vifs = vif_obj.VirtualInterfaceList.get_by_instance_uuid(context, instance_uuid) if vifs: #offer a default gateway to the first virtual interface default_gw_vif[instance_uuid] = vifs[0].id for fixedip in fixedips: instance_uuid = fixedip.instance_uuid if instance_uuid in default_gw_vif: # we don't want default gateway for this fixed ip if (default_gw_vif[instance_uuid] != fixedip.virtual_interface_id): hosts.append(_host_dhcp_opts(fixedip)) return '\n'.join(hosts) def release_dhcp(dev, address, mac_address): utils.execute('dhcp_release', dev, address, mac_address, run_as_root=True) def update_dhcp(context, dev, network_ref): conffile = _dhcp_file(dev, 'conf') write_to_file(conffile, get_dhcp_hosts(context, network_ref)) restart_dhcp(context, dev, network_ref) def update_dns(context, dev, network_ref): hostsfile = _dhcp_file(dev, 'hosts') write_to_file(hostsfile, get_dns_hosts(context, network_ref)) restart_dhcp(context, dev, network_ref) def update_dhcp_hostfile_with_text(dev, hosts_text): conffile = _dhcp_file(dev, 'conf') write_to_file(conffile, hosts_text) def kill_dhcp(dev): pid = _dnsmasq_pid_for(dev) if pid: # Check that the process exists and looks like a dnsmasq process conffile = _dhcp_file(dev, 'conf') out, _err = _execute('cat', '/proc/%d/cmdline' % pid, check_exit_code=False) if conffile.split('/')[-1] in out: _execute('kill', '-9', pid, run_as_root=True) else: LOG.debug(_('Pid %d is stale, skip killing dnsmasq'), pid) _remove_dnsmasq_accept_rules(dev) _remove_dhcp_mangle_rule(dev) # NOTE(ja): Sending a HUP only reloads the hostfile, so any # configuration options (like dchp-range, vlan, ...) # aren't reloaded. @utils.synchronized('dnsmasq_start') def restart_dhcp(context, dev, network_ref): """(Re)starts a dnsmasq server for a given network. If a dnsmasq instance is already running then send a HUP signal causing it to reload, otherwise spawn a new instance. """ conffile = _dhcp_file(dev, 'conf') if CONF.use_single_default_gateway: # NOTE(vish): this will have serious performance implications if we # are not in multi_host mode. optsfile = _dhcp_file(dev, 'opts') write_to_file(optsfile, get_dhcp_opts(context, network_ref)) os.chmod(optsfile, 0o644) _add_dhcp_mangle_rule(dev) # Make sure dnsmasq can actually read it (it setuid()s to "nobody") os.chmod(conffile, 0o644) pid = _dnsmasq_pid_for(dev) # if dnsmasq is already running, then tell it to reload if pid: out, _err = _execute('cat', '/proc/%d/cmdline' % pid, check_exit_code=False) # Using symlinks can cause problems here so just compare the name # of the file itself if conffile.split('/')[-1] in out: try: _execute('kill', '-HUP', pid, run_as_root=True) _add_dnsmasq_accept_rules(dev) return except Exception as exc: # pylint: disable=W0703 LOG.error(_('Hupping dnsmasq threw %s'), exc) else: LOG.debug(_('Pid %d is stale, relaunching dnsmasq'), pid) cmd = ['env', 'CONFIG_FILE=%s' % jsonutils.dumps(CONF.dhcpbridge_flagfile), 'NETWORK_ID=%s' % str(network_ref['id']), 'dnsmasq', '--strict-order', '--bind-interfaces', '--conf-file=%s' % CONF.dnsmasq_config_file, '--pid-file=%s' % _dhcp_file(dev, 'pid'), '--listen-address=%s' % network_ref['dhcp_server'], '--except-interface=lo', '--dhcp-range=set:%s,%s,static,%s,%ss' % (network_ref['label'], network_ref['dhcp_start'], network_ref['netmask'], CONF.dhcp_lease_time), '--dhcp-lease-max=%s' % len(netaddr.IPNetwork(network_ref['cidr'])), '--dhcp-hostsfile=%s' % _dhcp_file(dev, 'conf'), '--dhcp-script=%s' % CONF.dhcpbridge, '--leasefile-ro'] # dnsmasq currently gives an error for an empty domain, # rather than ignoring. So only specify it if defined. if CONF.dhcp_domain: cmd.append('--domain=%s' % CONF.dhcp_domain) dns_servers = set(CONF.dns_server) if CONF.use_network_dns_servers: if network_ref.get('dns1'): dns_servers.add(network_ref.get('dns1')) if network_ref.get('dns2'): dns_servers.add(network_ref.get('dns2')) if network_ref['multi_host'] or dns_servers: cmd.append('--no-hosts') if network_ref['multi_host']: cmd.append('--addn-hosts=%s' % _dhcp_file(dev, 'hosts')) if dns_servers: cmd.append('--no-resolv') for dns_server in dns_servers: cmd.append('--server=%s' % dns_server) if CONF.use_single_default_gateway: cmd += ['--dhcp-optsfile=%s' % _dhcp_file(dev, 'opts')] _execute(*cmd, run_as_root=True) _add_dnsmasq_accept_rules(dev) @utils.synchronized('radvd_start') def update_ra(context, dev, network_ref): conffile = _ra_file(dev, 'conf') conf_str = """ interface %s { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix %s { AdvOnLink on; AdvAutonomous on; }; }; """ % (dev, network_ref['cidr_v6']) write_to_file(conffile, conf_str) # Make sure radvd can actually read it (it setuid()s to "nobody") os.chmod(conffile, 0o644) pid = _ra_pid_for(dev) # if radvd is already running, then tell it to reload if pid: out, _err = _execute('cat', '/proc/%d/cmdline' % pid, check_exit_code=False) if conffile in out: try: _execute('kill', pid, run_as_root=True) except Exception as exc: # pylint: disable=W0703 LOG.error(_('killing radvd threw %s'), exc) else: LOG.debug(_('Pid %d is stale, relaunching radvd'), pid) cmd = ['radvd', '-C', '%s' % _ra_file(dev, 'conf'), '-p', '%s' % _ra_file(dev, 'pid')] _execute(*cmd, run_as_root=True) def _host_lease(fixedip): """Return a host string for an address in leasefile format.""" timestamp = timeutils.utcnow() seconds_since_epoch = calendar.timegm(timestamp.utctimetuple()) return '%d %s %s %s *' % (seconds_since_epoch + CONF.dhcp_lease_time, fixedip.virtual_interface.address, fixedip.address, fixedip.instance.hostname or '*') def _host_dhcp_network(data): return 'NW-%s' % data.virtual_interface_id def _host_dhcp(fixedip): """Return a host string for an address in dhcp-host format.""" if CONF.use_single_default_gateway: return '%s,%s.%s,%s,%s' % (fixedip.virtual_interface.address, fixedip.instance.hostname, CONF.dhcp_domain, fixedip.address, 'net:' + _host_dhcp_network(fixedip)) else: return '%s,%s.%s,%s' % (fixedip.virtual_interface.address, fixedip.instance.hostname, CONF.dhcp_domain, fixedip.address) def _host_dns(fixedip): return '%s\t%s.%s' % (fixedip.address, fixedip.instance.hostname, CONF.dhcp_domain) def _host_dhcp_opts(fixedip): """Return an empty gateway option.""" return '%s,%s' % (_host_dhcp_network(fixedip), 3) def _execute(*cmd, **kwargs): """Wrapper around utils._execute for fake_network.""" if CONF.fake_network: LOG.debug('FAKE NET: %s', ' '.join(map(str, cmd))) return 'fake', 0 else: return utils.execute(*cmd, **kwargs) def device_exists(device): """Check if ethernet device exists.""" return os.path.exists('/sys/class/net/%s' % device) def _dhcp_file(dev, kind): """Return path to a pid, leases, hosts or conf file for a bridge/device.""" fileutils.ensure_tree(CONF.networks_path) return os.path.abspath('%s/nova-%s.%s' % (CONF.networks_path, dev, kind)) def _ra_file(dev, kind): """Return path to a pid or conf file for a bridge/device.""" fileutils.ensure_tree(CONF.networks_path) return os.path.abspath('%s/nova-ra-%s.%s' % (CONF.networks_path, dev, kind)) def _dnsmasq_pid_for(dev): """Returns the pid for prior dnsmasq instance for a bridge/device. Returns None if no pid file exists. If machine has rebooted pid might be incorrect (caller should check). """ pid_file = _dhcp_file(dev, 'pid') if os.path.exists(pid_file): try: with open(pid_file, 'r') as f: return int(f.read()) except (ValueError, IOError): return None def _ra_pid_for(dev): """Returns the pid for prior radvd instance for a bridge/device. Returns None if no pid file exists. If machine has rebooted pid might be incorrect (caller should check). """ pid_file = _ra_file(dev, 'pid') if os.path.exists(pid_file): with open(pid_file, 'r') as f: return int(f.read()) def _ip_bridge_cmd(action, params, device): """Build commands to add/del ips to bridges/devices.""" cmd = ['ip', 'addr', action] cmd.extend(params) cmd.extend(['dev', device]) return cmd def _set_device_mtu(dev): """Set the device MTU.""" if CONF.network_device_mtu: utils.execute('ip', 'link', 'set', dev, 'mtu', CONF.network_device_mtu, run_as_root=True, check_exit_code=[0, 2, 254]) def _create_veth_pair(dev1_name, dev2_name): """Create a pair of veth devices with the specified names, deleting any previous devices with those names. """ for dev in [dev1_name, dev2_name]: delete_net_dev(dev) utils.execute('ip', 'link', 'add', dev1_name, 'type', 'veth', 'peer', 'name', dev2_name, run_as_root=True) for dev in [dev1_name, dev2_name]: utils.execute('ip', 'link', 'set', dev, 'up', run_as_root=True) utils.execute('ip', 'link', 'set', dev, 'promisc', 'on', run_as_root=True) _set_device_mtu(dev) def _ovs_vsctl(args): full_args = ['ovs-vsctl', '--timeout=%s' % CONF.ovs_vsctl_timeout] + args try: return utils.execute(*full_args, run_as_root=True) except Exception as e: LOG.error(_("Unable to execute %(cmd)s. Exception: %(exception)s"), {'cmd': full_args, 'exception': e}) raise exception.AgentError(method=full_args) def create_ovs_vif_port(bridge, dev, iface_id, mac, instance_id): _ovs_vsctl(['--', '--if-exists', 'del-port', dev, '--', 'add-port', bridge, dev, '--', 'set', 'Interface', dev, 'external-ids:iface-id=%s' % iface_id, 'external-ids:iface-status=active', 'external-ids:attached-mac=%s' % mac, 'external-ids:vm-uuid=%s' % instance_id]) _set_device_mtu(dev) def delete_ovs_vif_port(bridge, dev): _ovs_vsctl(['del-port', bridge, dev]) delete_net_dev(dev) def create_ivs_vif_port(dev, iface_id, mac, instance_id): utils.execute('ivs-ctl', 'add-port', dev, run_as_root=True) def delete_ivs_vif_port(dev): utils.execute('ivs-ctl', 'del-port', dev, run_as_root=True) utils.execute('ip', 'link', 'delete', dev, run_as_root=True) def create_tap_dev(dev, mac_address=None): if not device_exists(dev): try: # First, try with 'ip' utils.execute('ip', 'tuntap', 'add', dev, 'mode', 'tap', run_as_root=True, check_exit_code=[0, 2, 254]) except processutils.ProcessExecutionError: # Second option: tunctl utils.execute('tunctl', '-b', '-t', dev, run_as_root=True) if mac_address: utils.execute('ip', 'link', 'set', dev, 'address', mac_address, run_as_root=True, check_exit_code=[0, 2, 254]) utils.execute('ip', 'link', 'set', dev, 'up', run_as_root=True, check_exit_code=[0, 2, 254]) def delete_net_dev(dev): """Delete a network device only if it exists.""" if device_exists(dev): try: utils.execute('ip', 'link', 'delete', dev, run_as_root=True, check_exit_code=[0, 2, 254]) LOG.debug(_("Net device removed: '%s'"), dev) except processutils.ProcessExecutionError: with excutils.save_and_reraise_exception(): LOG.error(_("Failed removing net device: '%s'"), dev) # Similar to compute virt layers, the Linux network node # code uses a flexible driver model to support different ways # of creating ethernet interfaces and attaching them to the network. # In the case of a network host, these interfaces # act as gateway/dhcp/vpn/etc. endpoints not VM interfaces. interface_driver = None def _get_interface_driver(): global interface_driver if not interface_driver: interface_driver = importutils.import_object( CONF.linuxnet_interface_driver) return interface_driver def plug(network, mac_address, gateway=True): return _get_interface_driver().plug(network, mac_address, gateway) def unplug(network): return _get_interface_driver().unplug(network) def get_dev(network): return _get_interface_driver().get_dev(network) class LinuxNetInterfaceDriver(object): """Abstract class that defines generic network host API for for all Linux interface drivers. """ def plug(self, network, mac_address): """Create Linux device, return device name.""" raise NotImplementedError() def unplug(self, network): """Destroy Linux device, return device name.""" raise NotImplementedError() def get_dev(self, network): """Get device name.""" raise NotImplementedError() # plugs interfaces using Linux Bridge class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver): def plug(self, network, mac_address, gateway=True): vlan = network.get('vlan') if vlan is not None: iface = CONF.vlan_interface or network['bridge_interface'] LinuxBridgeInterfaceDriver.ensure_vlan_bridge( vlan, network['bridge'], iface, network, mac_address) iface = 'vlan%s' % vlan else: iface = CONF.flat_interface or network['bridge_interface'] LinuxBridgeInterfaceDriver.ensure_bridge( network['bridge'], iface, network, gateway) if CONF.share_dhcp_address: isolate_dhcp_address(iface, network['dhcp_server']) # NOTE(vish): applying here so we don't get a lock conflict iptables_manager.apply() return network['bridge'] def unplug(self, network, gateway=True): vlan = network.get('vlan') if vlan is not None: iface = 'vlan%s' % vlan LinuxBridgeInterfaceDriver.remove_vlan_bridge(vlan, network['bridge']) else: iface = CONF.flat_interface or network['bridge_interface'] LinuxBridgeInterfaceDriver.remove_bridge(network['bridge'], gateway) if CONF.share_dhcp_address: remove_isolate_dhcp_address(iface, network['dhcp_server']) iptables_manager.apply() return self.get_dev(network) def get_dev(self, network): return network['bridge'] @staticmethod def ensure_vlan_bridge(vlan_num, bridge, bridge_interface, net_attrs=None, mac_address=None): """Create a vlan and bridge unless they already exist.""" interface = LinuxBridgeInterfaceDriver.ensure_vlan(vlan_num, bridge_interface, mac_address) LinuxBridgeInterfaceDriver.ensure_bridge(bridge, interface, net_attrs) return interface @staticmethod def remove_vlan_bridge(vlan_num, bridge): """Delete a bridge and vlan.""" LinuxBridgeInterfaceDriver.remove_bridge(bridge) LinuxBridgeInterfaceDriver.remove_vlan(vlan_num) @staticmethod @utils.synchronized('lock_vlan', external=True) def ensure_vlan(vlan_num, bridge_interface, mac_address=None): """Create a vlan unless it already exists.""" interface = 'vlan%s' % vlan_num if not device_exists(interface): LOG.debug(_('Starting VLAN interface %s'), interface) _execute('ip', 'link', 'add', 'link', bridge_interface, 'name', interface, 'type', 'vlan', 'id', vlan_num, run_as_root=True, check_exit_code=[0, 2, 254]) # (danwent) the bridge will inherit this address, so we want to # make sure it is the value set from the NetworkManager if mac_address: _execute('ip', 'link', 'set', interface, 'address', mac_address, run_as_root=True, check_exit_code=[0, 2, 254]) _execute('ip', 'link', 'set', interface, 'up', run_as_root=True, check_exit_code=[0, 2, 254]) _set_device_mtu(interface) return interface @staticmethod @utils.synchronized('lock_vlan', external=True) def remove_vlan(vlan_num): """Delete a vlan.""" vlan_interface = 'vlan%s' % vlan_num delete_net_dev(vlan_interface) @staticmethod @utils.synchronized('lock_bridge', external=True) def ensure_bridge(bridge, interface, net_attrs=None, gateway=True, filtering=True): """Create a bridge unless it already exists. :param interface: the interface to create the bridge on. :param net_attrs: dictionary with attributes used to create bridge. :param gateway: whether or not the bridge is a gateway. :param filtering: whether or not to create filters on the bridge. If net_attrs is set, it will add the net_attrs['gateway'] to the bridge using net_attrs['broadcast'] and net_attrs['cidr']. It will also add the ip_v6 address specified in net_attrs['cidr_v6'] if use_ipv6 is set. The code will attempt to move any ips that already exist on the interface onto the bridge and reset the default gateway if necessary. """ if not device_exists(bridge): LOG.debug(_('Starting Bridge %s'), bridge) _execute('brctl', 'addbr', bridge, run_as_root=True) _execute('brctl', 'setfd', bridge, 0, run_as_root=True) # _execute('brctl setageing %s 10' % bridge, run_as_root=True) _execute('brctl', 'stp', bridge, 'off', run_as_root=True) # (danwent) bridge device MAC address can't be set directly. # instead it inherits the MAC address of the first device on the # bridge, which will either be the vlan interface, or a # physical NIC. _execute('ip', 'link', 'set', bridge, 'up', run_as_root=True) if interface: msg = _('Adding interface %(interface)s to bridge %(bridge)s') LOG.debug(msg, {'interface': interface, 'bridge': bridge}) out, err = _execute('brctl', 'addif', bridge, interface, check_exit_code=False, run_as_root=True) out, err = _execute('ip', 'link', 'set', interface, 'up', check_exit_code=False, run_as_root=True) # NOTE(vish): This will break if there is already an ip on the # interface, so we move any ips to the bridge # NOTE(danms): We also need to copy routes to the bridge so as # not to break existing connectivity on the interface old_routes = [] out, err = _execute('ip', 'route', 'show', 'dev', interface) for line in out.split('\n'): fields = line.split() if fields and 'via' in fields: old_routes.append(fields) _execute('ip', 'route', 'del', *fields, run_as_root=True) out, err = _execute('ip', 'addr', 'show', 'dev', interface, 'scope', 'global') for line in out.split('\n'): fields = line.split() if fields and fields[0] == 'inet': if fields[-2] in ('secondary', 'dynamic', ): params = fields[1:-2] else: params = fields[1:-1] _execute(*_ip_bridge_cmd('del', params, fields[-1]), run_as_root=True, check_exit_code=[0, 2, 254]) _execute(*_ip_bridge_cmd('add', params, bridge), run_as_root=True, check_exit_code=[0, 2, 254]) for fields in old_routes: _execute('ip', 'route', 'add', *fields, run_as_root=True) if (err and err != "device %s is already a member of a bridge;" "can't enslave it to bridge %s.\n" % (interface, bridge)): msg = _('Failed to add interface: %s') % err raise exception.NovaException(msg) if filtering: # Don't forward traffic unless we were told to be a gateway ipv4_filter = iptables_manager.ipv4['filter'] if gateway: for rule in get_gateway_rules(bridge): ipv4_filter.add_rule(*rule) else: ipv4_filter.add_rule('FORWARD', ('--in-interface %s -j %s' % (bridge, CONF.iptables_drop_action))) ipv4_filter.add_rule('FORWARD', ('--out-interface %s -j %s' % (bridge, CONF.iptables_drop_action))) @staticmethod @utils.synchronized('lock_bridge', external=True) def remove_bridge(bridge, gateway=True, filtering=True): """Delete a bridge.""" if not device_exists(bridge): return else: if filtering: ipv4_filter = iptables_manager.ipv4['filter'] if gateway: for rule in get_gateway_rules(bridge): ipv4_filter.remove_rule(*rule) else: drop_actions = ['DROP'] if CONF.iptables_drop_action != 'DROP': drop_actions.append(CONF.iptables_drop_action) for drop_action in drop_actions: ipv4_filter.remove_rule('FORWARD', ('--in-interface %s -j %s' % (bridge, drop_action))) ipv4_filter.remove_rule('FORWARD', ('--out-interface %s -j %s' % (bridge, drop_action))) delete_net_dev(bridge) @utils.synchronized('ebtables', external=True) def ensure_ebtables_rules(rules, table='filter'): for rule in rules: cmd = ['ebtables', '-t', table, '-D'] + rule.split() _execute(*cmd, check_exit_code=False, run_as_root=True) cmd[3] = '-I' _execute(*cmd, run_as_root=True) @utils.synchronized('ebtables', external=True) def remove_ebtables_rules(rules, table='filter'): for rule in rules: cmd = ['ebtables', '-t', table, '-D'] + rule.split() _execute(*cmd, check_exit_code=False, run_as_root=True) def isolate_dhcp_address(interface, address): # block arp traffic to address across the interface rules = [] rules.append('INPUT -p ARP -i %s --arp-ip-dst %s -j DROP' % (interface, address)) rules.append('OUTPUT -p ARP -o %s --arp-ip-src %s -j DROP' % (interface, address)) # NOTE(vish): the above is not possible with iptables/arptables ensure_ebtables_rules(rules) # block dhcp broadcast traffic across the interface ipv4_filter = iptables_manager.ipv4['filter'] ipv4_filter.add_rule('FORWARD', ('-m physdev --physdev-in %s -d 255.255.255.255 ' '-p udp --dport 67 -j %s' % (interface, CONF.iptables_drop_action)), top=True) ipv4_filter.add_rule('FORWARD', ('-m physdev --physdev-out %s -d 255.255.255.255 ' '-p udp --dport 67 -j %s' % (interface, CONF.iptables_drop_action)), top=True) # block ip traffic to address across the interface ipv4_filter.add_rule('FORWARD', ('-m physdev --physdev-in %s -d %s -j %s' % (interface, address, CONF.iptables_drop_action)), top=True) ipv4_filter.add_rule('FORWARD', ('-m physdev --physdev-out %s -s %s -j %s' % (interface, address, CONF.iptables_drop_action)), top=True) def remove_isolate_dhcp_address(interface, address): # block arp traffic to address across the interface rules = [] rules.append('INPUT -p ARP -i %s --arp-ip-dst %s -j DROP' % (interface, address)) rules.append('OUTPUT -p ARP -o %s --arp-ip-src %s -j DROP' % (interface, address)) remove_ebtables_rules(rules) # NOTE(vish): the above is not possible with iptables/arptables # block dhcp broadcast traffic across the interface ipv4_filter = iptables_manager.ipv4['filter'] drop_actions = ['DROP'] if CONF.iptables_drop_action != 'DROP': drop_actions.append(CONF.iptables_drop_action) for drop_action in drop_actions: ipv4_filter.remove_rule('FORWARD', ('-m physdev --physdev-in %s ' '-d 255.255.255.255 ' '-p udp --dport 67 -j %s' % (interface, drop_action)), top=True) ipv4_filter.remove_rule('FORWARD', ('-m physdev --physdev-out %s ' '-d 255.255.255.255 ' '-p udp --dport 67 -j %s' % (interface, drop_action)), top=True) # block ip traffic to address across the interface ipv4_filter.remove_rule('FORWARD', ('-m physdev --physdev-in %s -d %s -j %s' % (interface, address, drop_action)), top=True) ipv4_filter.remove_rule('FORWARD', ('-m physdev --physdev-out %s -s %s -j %s' % (interface, address, drop_action)), top=True) def get_gateway_rules(bridge): interfaces = CONF.forward_bridge_interface if 'all' in interfaces: return [('FORWARD', '-i %s -j ACCEPT' % bridge), ('FORWARD', '-o %s -j ACCEPT' % bridge)] rules = [] for iface in CONF.forward_bridge_interface: if iface: rules.append(('FORWARD', '-i %s -o %s -j ACCEPT' % (bridge, iface))) rules.append(('FORWARD', '-i %s -o %s -j ACCEPT' % (iface, bridge))) rules.append(('FORWARD', '-i %s -o %s -j ACCEPT' % (bridge, bridge))) rules.append(('FORWARD', '-i %s -j %s' % (bridge, CONF.iptables_drop_action))) rules.append(('FORWARD', '-o %s -j %s' % (bridge, CONF.iptables_drop_action))) return rules # plugs interfaces using Open vSwitch class LinuxOVSInterfaceDriver(LinuxNetInterfaceDriver): def plug(self, network, mac_address, gateway=True): dev = self.get_dev(network) if not device_exists(dev): bridge = CONF.linuxnet_ovs_integration_bridge _ovs_vsctl(['--', '--may-exist', 'add-port', bridge, dev, '--', 'set', 'Interface', dev, 'type=internal', '--', 'set', 'Interface', dev, 'external-ids:iface-id=%s' % dev, '--', 'set', 'Interface', dev, 'external-ids:iface-status=active', '--', 'set', 'Interface', dev, 'external-ids:attached-mac=%s' % mac_address]) _execute('ip', 'link', 'set', dev, 'address', mac_address, run_as_root=True) _set_device_mtu(dev) _execute('ip', 'link', 'set', dev, 'up', run_as_root=True) if not gateway: # If we weren't instructed to act as a gateway then add the # appropriate flows to block all non-dhcp traffic. _execute('ovs-ofctl', 'add-flow', bridge, 'priority=1,actions=drop', run_as_root=True) _execute('ovs-ofctl', 'add-flow', bridge, 'udp,tp_dst=67,dl_dst=%s,priority=2,actions=normal' % mac_address, run_as_root=True) # .. and make sure iptbles won't forward it as well. iptables_manager.ipv4['filter'].add_rule('FORWARD', '--in-interface %s -j %s' % (bridge, CONF.iptables_drop_action)) iptables_manager.ipv4['filter'].add_rule('FORWARD', '--out-interface %s -j %s' % (bridge, CONF.iptables_drop_action)) else: for rule in get_gateway_rules(bridge): iptables_manager.ipv4['filter'].add_rule(*rule) return dev def unplug(self, network): dev = self.get_dev(network) bridge = CONF.linuxnet_ovs_integration_bridge _ovs_vsctl(['--', '--if-exists', 'del-port', bridge, dev]) return dev def get_dev(self, network): dev = 'gw-' + str(network['uuid'][0:11]) return dev # plugs interfaces using Linux Bridge when using NeutronManager class NeutronLinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver): BRIDGE_NAME_PREFIX = 'brq' GATEWAY_INTERFACE_PREFIX = 'gw-' def plug(self, network, mac_address, gateway=True): dev = self.get_dev(network) bridge = self.get_bridge(network) if not gateway: # If we weren't instructed to act as a gateway then add the # appropriate flows to block all non-dhcp traffic. # .. and make sure iptbles won't forward it as well. iptables_manager.ipv4['filter'].add_rule('FORWARD', ('--in-interface %s -j %s' % (bridge, CONF.iptables_drop_action))) iptables_manager.ipv4['filter'].add_rule('FORWARD', ('--out-interface %s -j %s' % (bridge, CONF.iptables_drop_action))) return bridge else: for rule in get_gateway_rules(bridge): iptables_manager.ipv4['filter'].add_rule(*rule) create_tap_dev(dev, mac_address) if not device_exists(bridge): LOG.debug(_("Starting bridge %s "), bridge) utils.execute('brctl', 'addbr', bridge, run_as_root=True) utils.execute('brctl', 'setfd', bridge, str(0), run_as_root=True) utils.execute('brctl', 'stp', bridge, 'off', run_as_root=True) utils.execute('ip', 'link', 'set', bridge, 'address', mac_address, run_as_root=True, check_exit_code=[0, 2, 254]) utils.execute('ip', 'link', 'set', bridge, 'up', run_as_root=True, check_exit_code=[0, 2, 254]) LOG.debug(_("Done starting bridge %s"), bridge) full_ip = '%s/%s' % (network['dhcp_server'], network['cidr'].rpartition('/')[2]) utils.execute('ip', 'address', 'add', full_ip, 'dev', bridge, run_as_root=True, check_exit_code=[0, 2, 254]) return dev def unplug(self, network): dev = self.get_dev(network) if not device_exists(dev): return None else: delete_net_dev(dev) return dev def get_dev(self, network): dev = self.GATEWAY_INTERFACE_PREFIX + str(network['uuid'][0:11]) return dev def get_bridge(self, network): bridge = self.BRIDGE_NAME_PREFIX + str(network['uuid'][0:11]) return bridge # provide compatibility with existing configs QuantumLinuxBridgeInterfaceDriver = NeutronLinuxBridgeInterfaceDriver iptables_manager = IptablesManager() nova-2014.1/nova/network/api.py0000664000175400017540000005630212323721510017463 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import functools import inspect from nova.compute import flavors from nova.db import base from nova import exception from nova.network import floating_ips from nova.network import model as network_model from nova.network import rpcapi as network_rpcapi from nova.objects import instance as instance_obj from nova.objects import instance_info_cache as info_cache_obj from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova import policy from nova import utils LOG = logging.getLogger(__name__) def refresh_cache(f): """Decorator to update the instance_info_cache Requires context and instance as function args """ argspec = inspect.getargspec(f) @functools.wraps(f) def wrapper(self, context, *args, **kwargs): res = f(self, context, *args, **kwargs) try: # get the instance from arguments (or raise ValueError) instance = kwargs.get('instance') if not instance: instance = args[argspec.args.index('instance') - 2] except ValueError: msg = _('instance is a required argument to use @refresh_cache') raise Exception(msg) update_instance_cache_with_nw_info(self, context, instance, nw_info=res) # return the original function's return value return res return wrapper def update_instance_cache_with_nw_info(api, context, instance, nw_info=None, update_cells=True): try: if not isinstance(nw_info, network_model.NetworkInfo): nw_info = None if nw_info is None: nw_info = api._get_instance_nw_info(context, instance) LOG.debug(_('Updating cache with info: %s'), nw_info) # NOTE(comstud): The save() method actually handles updating or # creating the instance. We don't need to retrieve the object # from the DB first. ic = info_cache_obj.InstanceInfoCache.new(context, instance['uuid']) ic.network_info = nw_info ic.save(update_cells=update_cells) except Exception: with excutils.save_and_reraise_exception(): LOG.exception(_('Failed storing info cache'), instance=instance) def wrap_check_policy(func): """Check policy corresponding to the wrapped methods prior to execution.""" @functools.wraps(func) def wrapped(self, context, *args, **kwargs): action = func.__name__ check_policy(context, action) return func(self, context, *args, **kwargs) return wrapped def check_policy(context, action): target = { 'project_id': context.project_id, 'user_id': context.user_id, } _action = 'network:%s' % action policy.enforce(context, _action, target) class API(base.Base): """API for doing networking via the nova-network network manager. This is a pluggable module - other implementations do networking via other services (such as Neutron). """ _sentinel = object() def __init__(self, **kwargs): self.network_rpcapi = network_rpcapi.NetworkAPI() helper = utils.ExceptionHelper # NOTE(vish): this local version of floating_manager has to convert # ClientExceptions back since they aren't going over rpc. self.floating_manager = helper(floating_ips.LocalManager()) super(API, self).__init__(**kwargs) @wrap_check_policy def get_all(self, context): """Get all the networks. If it is an admin user, api will return all the networks, if it is a normal user, api will only return the networks which belong to the user's project. """ try: return self.db.network_get_all(context, project_only=True) except exception.NoNetworksFound: return [] @wrap_check_policy def get(self, context, network_uuid): return self.db.network_get_by_uuid(context.elevated(), network_uuid) @wrap_check_policy def create(self, context, **kwargs): return self.network_rpcapi.create_networks(context, **kwargs) @wrap_check_policy def delete(self, context, network_uuid): return self.network_rpcapi.delete_network(context, network_uuid, None) @wrap_check_policy def disassociate(self, context, network_uuid): network = self.get(context, network_uuid) self.db.network_disassociate(context, network['id']) @wrap_check_policy def get_fixed_ip(self, context, id): return self.db.fixed_ip_get(context, id) @wrap_check_policy def get_fixed_ip_by_address(self, context, address): return self.db.fixed_ip_get_by_address(context, address) @wrap_check_policy def get_floating_ip(self, context, id): if not utils.is_int_like(id): raise exception.InvalidID(id=id) return self.db.floating_ip_get(context, id) @wrap_check_policy def get_floating_ip_pools(self, context): return self.db.floating_ip_get_pools(context) @wrap_check_policy def get_floating_ip_by_address(self, context, address): return self.db.floating_ip_get_by_address(context, address) @wrap_check_policy def get_floating_ips_by_project(self, context): return self.db.floating_ip_get_all_by_project(context, context.project_id) @wrap_check_policy def get_floating_ips_by_fixed_address(self, context, fixed_address): floating_ips = self.db.floating_ip_get_by_fixed_address(context, fixed_address) return [floating_ip['address'] for floating_ip in floating_ips] @wrap_check_policy def get_instance_id_by_floating_address(self, context, address): fixed_ip = self.db.fixed_ip_get_by_floating_address(context, address) if fixed_ip is None: return None else: return fixed_ip['instance_uuid'] @wrap_check_policy def get_vifs_by_instance(self, context, instance): vifs = self.db.virtual_interface_get_by_instance(context, instance['uuid']) for vif in vifs: if vif.get('network_id') is not None: network = self.db.network_get(context, vif['network_id'], project_only="allow_none") vif['net_uuid'] = network['uuid'] return vifs @wrap_check_policy def get_vif_by_mac_address(self, context, mac_address): vif = self.db.virtual_interface_get_by_address(context, mac_address) if vif.get('network_id') is not None: network = self.db.network_get(context, vif['network_id'], project_only="allow_none") vif['net_uuid'] = network['uuid'] return vif @wrap_check_policy def allocate_floating_ip(self, context, pool=None): """Adds (allocates) a floating ip to a project from a pool.""" return self.floating_manager.allocate_floating_ip(context, context.project_id, False, pool) @wrap_check_policy def release_floating_ip(self, context, address, affect_auto_assigned=False): """Removes (deallocates) a floating ip with address from a project.""" return self.floating_manager.deallocate_floating_ip(context, address, affect_auto_assigned) @wrap_check_policy @refresh_cache def associate_floating_ip(self, context, instance, floating_address, fixed_address, affect_auto_assigned=False): """Associates a floating ip with a fixed ip. Ensures floating ip is allocated to the project in context. Does not verify ownership of the fixed ip. Caller is assumed to have checked that the instance is properly owned. """ orig_instance_uuid = self.floating_manager.associate_floating_ip( context, floating_address, fixed_address, affect_auto_assigned) if orig_instance_uuid: msg_dict = dict(address=floating_address, instance_id=orig_instance_uuid) LOG.info(_('re-assign floating IP %(address)s from ' 'instance %(instance_id)s') % msg_dict) orig_instance = self.db.instance_get_by_uuid(context, orig_instance_uuid) # purge cached nw info for the original instance update_instance_cache_with_nw_info(self, context, orig_instance) @wrap_check_policy @refresh_cache def disassociate_floating_ip(self, context, instance, address, affect_auto_assigned=False): """Disassociates a floating ip from fixed ip it is associated with.""" return self.floating_manager.disassociate_floating_ip(context, address, affect_auto_assigned) @wrap_check_policy @refresh_cache def allocate_for_instance(self, context, instance, vpn, requested_networks, macs=None, security_groups=None, dhcp_options=None): """Allocates all network structures for an instance. :param context: The request context. :param instance: An Instance dict. :param vpn: A boolean, if True, indicate a vpn to access the instance. :param requested_networks: A dictionary of requested_networks, Optional value containing network_id, fixed_ip, and port_id. :param macs: None or a set of MAC addresses that the instance should use. macs is supplied by the hypervisor driver (contrast with requested_networks which is user supplied). :param security_groups: None or security groups to allocate for instance. :param dhcp_options: None or a set of key/value pairs that should determine the DHCP BOOTP response, eg. for PXE booting an instance configured with the baremetal hypervisor. It is expected that these are already formatted for the neutron v2 api. See nova/virt/driver.py:dhcp_options_for_instance for an example. :returns: network info as from get_instance_nw_info() below """ # NOTE(vish): We can't do the floating ip allocation here because # this is called from compute.manager which shouldn't # have db access so we do it on the other side of the # rpc. flavor = flavors.extract_flavor(instance) args = {} args['vpn'] = vpn args['requested_networks'] = requested_networks args['instance_id'] = instance['uuid'] args['project_id'] = instance['project_id'] args['host'] = instance['host'] args['rxtx_factor'] = flavor['rxtx_factor'] args['macs'] = macs args['dhcp_options'] = dhcp_options nw_info = self.network_rpcapi.allocate_for_instance(context, **args) return network_model.NetworkInfo.hydrate(nw_info) @wrap_check_policy def deallocate_for_instance(self, context, instance, requested_networks=None): """Deallocates all network structures related to instance.""" # NOTE(vish): We can't do the floating ip deallocation here because # this is called from compute.manager which shouldn't # have db access so we do it on the other side of the # rpc. if not isinstance(instance, instance_obj.Instance): instance = instance_obj.Instance._from_db_object(context, instance_obj.Instance(), instance) self.network_rpcapi.deallocate_for_instance(context, instance=instance, requested_networks=requested_networks) # NOTE(danms): Here for neutron compatibility def allocate_port_for_instance(self, context, instance, port_id, network_id=None, requested_ip=None): raise NotImplementedError() # NOTE(danms): Here for neutron compatibility def deallocate_port_for_instance(self, context, instance, port_id): raise NotImplementedError() # NOTE(danms): Here for neutron compatibility def list_ports(self, *args, **kwargs): raise NotImplementedError() # NOTE(danms): Here for neutron compatibility def show_port(self, *args, **kwargs): raise NotImplementedError() @wrap_check_policy @refresh_cache def add_fixed_ip_to_instance(self, context, instance, network_id): """Adds a fixed ip to instance from specified network.""" flavor = flavors.extract_flavor(instance) args = {'instance_id': instance['uuid'], 'rxtx_factor': flavor['rxtx_factor'], 'host': instance['host'], 'network_id': network_id} self.network_rpcapi.add_fixed_ip_to_instance(context, **args) @wrap_check_policy @refresh_cache def remove_fixed_ip_from_instance(self, context, instance, address): """Removes a fixed ip from instance from specified network.""" flavor = flavors.extract_flavor(instance) args = {'instance_id': instance['uuid'], 'rxtx_factor': flavor['rxtx_factor'], 'host': instance['host'], 'address': address} self.network_rpcapi.remove_fixed_ip_from_instance(context, **args) @wrap_check_policy def add_network_to_project(self, context, project_id, network_uuid=None): """Force adds another network to a project.""" self.network_rpcapi.add_network_to_project(context, project_id, network_uuid) @wrap_check_policy def associate(self, context, network_uuid, host=_sentinel, project=_sentinel): """Associate or disassociate host or project to network.""" network_id = self.get(context, network_uuid)['id'] if host is not API._sentinel: if host is None: self.db.network_disassociate(context, network_id, disassociate_host=True, disassociate_project=False) else: self.db.network_set_host(context, network_id, host) if project is not API._sentinel: if project is None: self.db.network_disassociate(context, network_id, disassociate_host=False, disassociate_project=True) else: self.db.network_associate(context, project, network_id, True) @wrap_check_policy def get_instance_nw_info(self, context, instance): """Returns all network info related to an instance.""" result = self._get_instance_nw_info(context, instance) # NOTE(comstud): Don't update API cell with new info_cache every # time we pull network info for an instance. The periodic healing # of info_cache causes too many cells messages. Healing the API # will happen separately. update_instance_cache_with_nw_info(self, context, instance, result, update_cells=False) return result def _get_instance_nw_info(self, context, instance): """Returns all network info related to an instance.""" flavor = flavors.extract_flavor(instance) args = {'instance_id': instance['uuid'], 'rxtx_factor': flavor['rxtx_factor'], 'host': instance['host'], 'project_id': instance['project_id']} nw_info = self.network_rpcapi.get_instance_nw_info(context, **args) return network_model.NetworkInfo.hydrate(nw_info) @wrap_check_policy def validate_networks(self, context, requested_networks, num_instances): """validate the networks passed at the time of creating the server. Return the number of instances that can be successfully allocated with the requested network configuration. """ if requested_networks: self.network_rpcapi.validate_networks(context, requested_networks) # Neutron validation checks and returns how many of num_instances # instances can be supported by the quota. For Nova network # this is part of the subsequent quota check, so we just return # the requested number in this case. return num_instances @wrap_check_policy def get_instance_uuids_by_ip_filter(self, context, filters): """Returns a list of dicts in the form of {'instance_uuid': uuid, 'ip': ip} that matched the ip_filter """ return self.network_rpcapi.get_instance_uuids_by_ip_filter(context, filters) @wrap_check_policy def get_dns_domains(self, context): """Returns a list of available dns domains. These can be used to create DNS entries for floating ips. """ return self.network_rpcapi.get_dns_domains(context) @wrap_check_policy def add_dns_entry(self, context, address, name, dns_type, domain): """Create specified DNS entry for address.""" args = {'address': address, 'name': name, 'dns_type': dns_type, 'domain': domain} return self.network_rpcapi.add_dns_entry(context, **args) @wrap_check_policy def modify_dns_entry(self, context, name, address, domain): """Create specified DNS entry for address.""" args = {'address': address, 'name': name, 'domain': domain} return self.network_rpcapi.modify_dns_entry(context, **args) @wrap_check_policy def delete_dns_entry(self, context, name, domain): """Delete the specified dns entry.""" args = {'name': name, 'domain': domain} return self.network_rpcapi.delete_dns_entry(context, **args) @wrap_check_policy def delete_dns_domain(self, context, domain): """Delete the specified dns domain.""" return self.network_rpcapi.delete_dns_domain(context, domain=domain) @wrap_check_policy def get_dns_entries_by_address(self, context, address, domain): """Get entries for address and domain.""" args = {'address': address, 'domain': domain} return self.network_rpcapi.get_dns_entries_by_address(context, **args) @wrap_check_policy def get_dns_entries_by_name(self, context, name, domain): """Get entries for name and domain.""" args = {'name': name, 'domain': domain} return self.network_rpcapi.get_dns_entries_by_name(context, **args) @wrap_check_policy def create_private_dns_domain(self, context, domain, availability_zone): """Create a private DNS domain with nova availability zone.""" args = {'domain': domain, 'av_zone': availability_zone} return self.network_rpcapi.create_private_dns_domain(context, **args) @wrap_check_policy def create_public_dns_domain(self, context, domain, project=None): """Create a public DNS domain with optional nova project.""" args = {'domain': domain, 'project': project} return self.network_rpcapi.create_public_dns_domain(context, **args) @wrap_check_policy def setup_networks_on_host(self, context, instance, host=None, teardown=False): """Setup or teardown the network structures on hosts related to instance. """ host = host or instance['host'] # NOTE(tr3buchet): host is passed in cases where we need to setup # or teardown the networks on a host which has been migrated to/from # and instance['host'] is not yet or is no longer equal to args = {'instance_id': instance['id'], 'host': host, 'teardown': teardown} self.network_rpcapi.setup_networks_on_host(context, **args) def _is_multi_host(self, context, instance): try: fixed_ips = self.db.fixed_ip_get_by_instance(context, instance['uuid']) except exception.FixedIpNotFoundForInstance: return False network = self.db.network_get(context, fixed_ips[0]['network_id'], project_only='allow_none') return network['multi_host'] def _get_floating_ip_addresses(self, context, instance): floating_ips = self.db.instance_floating_address_get_all(context, instance['uuid']) return floating_ips @wrap_check_policy def migrate_instance_start(self, context, instance, migration): """Start to migrate the network of an instance.""" flavor = flavors.extract_flavor(instance) args = dict( instance_uuid=instance['uuid'], rxtx_factor=flavor['rxtx_factor'], project_id=instance['project_id'], source_compute=migration['source_compute'], dest_compute=migration['dest_compute'], floating_addresses=None, ) if self._is_multi_host(context, instance): args['floating_addresses'] = \ self._get_floating_ip_addresses(context, instance) args['host'] = migration['source_compute'] self.network_rpcapi.migrate_instance_start(context, **args) @wrap_check_policy def migrate_instance_finish(self, context, instance, migration): """Finish migrating the network of an instance.""" flavor = flavors.extract_flavor(instance) args = dict( instance_uuid=instance['uuid'], rxtx_factor=flavor['rxtx_factor'], project_id=instance['project_id'], source_compute=migration['source_compute'], dest_compute=migration['dest_compute'], floating_addresses=None, ) if self._is_multi_host(context, instance): args['floating_addresses'] = \ self._get_floating_ip_addresses(context, instance) args['host'] = migration['dest_compute'] self.network_rpcapi.migrate_instance_finish(context, **args) nova-2014.1/nova/network/nova_ipam_lib.py0000664000175400017540000001026512323721477021523 0ustar jenkinsjenkins00000000000000# Copyright 2011 Nicira Networks, Inc # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import netaddr from nova import ipv6 from nova.objects import fixed_ip as fixed_ip_obj from nova.objects import floating_ip as floating_ip_obj from nova.objects import network as network_obj from nova.objects import virtual_interface as vif_obj def get_ipam_lib(net_man): return NeutronNovaIPAMLib(net_man) class NeutronNovaIPAMLib(object): """Implements Neutron IP Address Management (IPAM) interface using the local Nova database. This implementation is inline with how IPAM is used by other NetworkManagers. """ def __init__(self, net_manager): """Holds a reference to the "parent" network manager, used to take advantage of various FlatManager methods to avoid code duplication. """ self.net_manager = net_manager def get_subnets_by_net_id(self, context, tenant_id, net_id, _vif_id=None): """Returns information about the IPv4 and IPv6 subnets associated with a Neutron Network UUID. """ n = network_obj.Network.get_by_uuid(context.elevated(), net_id) subnet_v4 = { 'network_id': n.uuid, 'cidr': n.cidr, 'gateway': n.gateway, 'broadcast': n.broadcast, 'netmask': n.netmask, 'version': 4, 'dns1': n.dns1, 'dns2': n.dns2} #TODO(tr3buchet): I'm noticing we've assumed here that all dns is v4. # this is probably bad as there is no way to add v6 # dns to nova subnet_v6 = { 'network_id': n.uuid, 'cidr': n.cidr_v6, 'gateway': n.gateway_v6, 'broadcast': None, 'netmask': n.netmask_v6, 'version': 6, 'dns1': None, 'dns2': None} def ips_to_strs(net): for key, value in net.items(): if isinstance(value, netaddr.ip.BaseIP): net[key] = str(value) return net return [ips_to_strs(subnet_v4), ips_to_strs(subnet_v6)] def get_routes_by_ip_block(self, context, block_id, project_id): """Returns the list of routes for the IP block.""" return [] def get_v4_ips_by_interface(self, context, net_id, vif_id, project_id): """Returns a list of IPv4 address strings associated with the specified virtual interface, based on the fixed_ips table. """ # TODO(tr3buchet): link fixed_ips to vif by uuid so only 1 db call vif_rec = vif_obj.VirtualInterface.get_by_uuid(context, vif_id) if not vif_rec: return [] fixed_ips = fixed_ip_obj.FixedIPList.get_by_virtual_interface_id( context, vif_rec.id) return [str(fixed_ip.address) for fixed_ip in fixed_ips] def get_v6_ips_by_interface(self, context, net_id, vif_id, project_id): """Returns a list containing a single IPv6 address strings associated with the specified virtual interface. """ admin_context = context.elevated() network = network_obj.Network.get_by_uuid(admin_context, net_id) vif_rec = vif_obj.VirtualInterface.get_by_uuid(context, vif_id) if network.cidr_v6 and vif_rec and vif_rec.address: ip = ipv6.to_global(network.cidr_v6, vif_rec.address, project_id) return [ip] return [] def get_floating_ips_by_fixed_address(self, context, fixed_address): return floating_ip_obj.FloatingIPList.get_by_fixed_address( context, fixed_address) nova-2014.1/nova/network/__init__.py0000664000175400017540000000302712323721477020461 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import oslo.config.cfg # Importing full names to not pollute the namespace and cause possible # collisions with use of 'from nova.network import ' elsewhere. import nova.openstack.common.importutils _network_opts = [ oslo.config.cfg.StrOpt('network_api_class', default='nova.network.api.API', help='The full class name of the ' 'network API class to use'), ] oslo.config.cfg.CONF.register_opts(_network_opts) def API(): importutils = nova.openstack.common.importutils network_api_class = oslo.config.cfg.CONF.network_api_class if 'quantumv2' in network_api_class: network_api_class = network_api_class.replace('quantumv2', 'neutronv2') cls = importutils.import_class(network_api_class) return cls() nova-2014.1/nova/network/rpcapi.py0000664000175400017540000004064712323721477020211 0ustar jenkinsjenkins00000000000000# Copyright 2013, 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. """ Client side of the network RPC API. """ from oslo.config import cfg from oslo import messaging from nova.objects import base as objects_base from nova.openstack.common import jsonutils from nova import rpc rpcapi_opts = [ cfg.StrOpt('network_topic', default='network', help='The topic network nodes listen on'), cfg.BoolOpt('multi_host', default=False, help='Default value for multi_host in networks. Also, if set, ' 'some rpc network calls will be sent directly to host.'), ] CONF = cfg.CONF CONF.register_opts(rpcapi_opts) rpcapi_cap_opt = cfg.StrOpt('network', help='Set a version cap for messages sent to network services') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') class NetworkAPI(object): '''Client side of the network rpc API. API version history: 1.0 - Initial version. 1.1 - Adds migrate_instance_[start|finish] 1.2 - Make migrate_instance_[start|finish] a little more flexible 1.3 - Adds fanout cast update_dns for multi_host networks 1.4 - Add get_backdoor_port() 1.5 - Adds associate 1.6 - Adds instance_uuid to _{dis,}associate_floating_ip 1.7 - Adds method get_floating_ip_pools to replace get_floating_pools 1.8 - Adds macs to allocate_for_instance 1.9 - Adds rxtx_factor to [add|remove]_fixed_ip, removes instance_uuid from allocate_for_instance and instance_get_nw_info ... Grizzly supports message version 1.9. So, any changes to existing methods in 1.x after that point should be done such that they can handle the version_cap being set to 1.9. 1.10- Adds (optional) requested_networks to deallocate_for_instance ... Havana supports message version 1.10. So, any changes to existing methods in 1.x after that point should be done such that they can handle the version_cap being set to 1.10. NOTE: remove unused method get_vifs_by_instance() NOTE: remove unused method get_vif_by_mac_address() NOTE: remove unused method get_network() NOTE: remove unused method get_all_networks() 1.11 - Add instance to deallocate_for_instance(). Remove instance_id, project_id, and host. 1.12 - Add instance to deallocate_fixed_ip() ''' VERSION_ALIASES = { 'grizzly': '1.9', 'havana': '1.10', } def __init__(self, topic=None): super(NetworkAPI, self).__init__() topic = topic or CONF.network_topic target = messaging.Target(topic=topic, version='1.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.network, CONF.upgrade_levels.network) serializer = objects_base.NovaObjectSerializer() self.client = rpc.get_client(target, version_cap, serializer) # TODO(russellb): Convert this to named arguments. It's a pretty large # list, so unwinding it all is probably best done in its own patch so it's # easier to review. def create_networks(self, ctxt, **kwargs): return self.client.call(ctxt, 'create_networks', **kwargs) def delete_network(self, ctxt, uuid, fixed_range): return self.client.call(ctxt, 'delete_network', uuid=uuid, fixed_range=fixed_range) def disassociate_network(self, ctxt, network_uuid): return self.client.call(ctxt, 'disassociate_network', network_uuid=network_uuid) def get_fixed_ip(self, ctxt, id): return self.client.call(ctxt, 'get_fixed_ip', id=id) def get_fixed_ip_by_address(self, ctxt, address): return self.client.call(ctxt, 'get_fixed_ip_by_address', address=address) def get_floating_ip(self, ctxt, id): return self.client.call(ctxt, 'get_floating_ip', id=id) def get_floating_ip_pools(self, ctxt): cctxt = self.client.prepare(version="1.7") return cctxt.call(ctxt, 'get_floating_ip_pools') def get_floating_ip_by_address(self, ctxt, address): return self.client.call(ctxt, 'get_floating_ip_by_address', address=address) def get_floating_ips_by_project(self, ctxt): return self.client.call(ctxt, 'get_floating_ips_by_project') def get_floating_ips_by_fixed_address(self, ctxt, fixed_address): return self.client.call(ctxt, 'get_floating_ips_by_fixed_address', fixed_address=fixed_address) def get_instance_id_by_floating_address(self, ctxt, address): return self.client.call(ctxt, 'get_instance_id_by_floating_address', address=address) def allocate_floating_ip(self, ctxt, project_id, pool, auto_assigned): return self.client.call(ctxt, 'allocate_floating_ip', project_id=project_id, pool=pool, auto_assigned=auto_assigned) def deallocate_floating_ip(self, ctxt, address, affect_auto_assigned): return self.client.call(ctxt, 'deallocate_floating_ip', address=address, affect_auto_assigned=affect_auto_assigned) def associate_floating_ip(self, ctxt, floating_address, fixed_address, affect_auto_assigned): return self.client.call(ctxt, 'associate_floating_ip', floating_address=floating_address, fixed_address=fixed_address, affect_auto_assigned=affect_auto_assigned) def disassociate_floating_ip(self, ctxt, address, affect_auto_assigned): return self.client.call(ctxt, 'disassociate_floating_ip', address=address, affect_auto_assigned=affect_auto_assigned) def allocate_for_instance(self, ctxt, instance_id, project_id, host, rxtx_factor, vpn, requested_networks, macs=None, dhcp_options=None): if CONF.multi_host: cctxt = self.client.prepare(version='1.9', server=host) else: cctxt = self.client.prepare(version='1.9') return cctxt.call(ctxt, 'allocate_for_instance', instance_id=instance_id, project_id=project_id, host=host, rxtx_factor=rxtx_factor, vpn=vpn, requested_networks=requested_networks, macs=jsonutils.to_primitive(macs)) def deallocate_for_instance(self, ctxt, instance, requested_networks=None): cctxt = self.client kwargs = {} if self.client.can_send_version('1.11'): version = '1.11' kwargs['instance'] = instance kwargs['requested_networks'] = requested_networks else: if self.client.can_send_version('1.10'): version = '1.10' kwargs['requested_networks'] = requested_networks else: version = '1.0' kwargs['host'] = instance['host'] kwargs['instance_id'] = instance.uuid kwargs['project_id'] = instance.project_id if CONF.multi_host: cctxt = cctxt.prepare(server=instance['host'], version=version) return cctxt.call(ctxt, 'deallocate_for_instance', **kwargs) def add_fixed_ip_to_instance(self, ctxt, instance_id, rxtx_factor, host, network_id): cctxt = self.client.prepare(version='1.9') return cctxt.call(ctxt, 'add_fixed_ip_to_instance', instance_id=instance_id, rxtx_factor=rxtx_factor, host=host, network_id=network_id) def remove_fixed_ip_from_instance(self, ctxt, instance_id, rxtx_factor, host, address): cctxt = self.client.prepare(version='1.9') return cctxt.call(ctxt, 'remove_fixed_ip_from_instance', instance_id=instance_id, rxtx_factor=rxtx_factor, host=host, address=address) def add_network_to_project(self, ctxt, project_id, network_uuid): return self.client.call(ctxt, 'add_network_to_project', project_id=project_id, network_uuid=network_uuid) def associate(self, ctxt, network_uuid, associations): cctxt = self.client.prepare(version='1.5') return cctxt.call(ctxt, 'associate', network_uuid=network_uuid, associations=associations) def get_instance_nw_info(self, ctxt, instance_id, rxtx_factor, host, project_id): cctxt = self.client.prepare(version='1.9') return cctxt.call(ctxt, 'get_instance_nw_info', instance_id=instance_id, rxtx_factor=rxtx_factor, host=host, project_id=project_id) def validate_networks(self, ctxt, networks): return self.client.call(ctxt, 'validate_networks', networks=networks) def get_instance_uuids_by_ip_filter(self, ctxt, filters): return self.client.call(ctxt, 'get_instance_uuids_by_ip_filter', filters=filters) def get_dns_domains(self, ctxt): return self.client.call(ctxt, 'get_dns_domains') def add_dns_entry(self, ctxt, address, name, dns_type, domain): return self.client.call(ctxt, 'add_dns_entry', address=address, name=name, dns_type=dns_type, domain=domain) def modify_dns_entry(self, ctxt, address, name, domain): return self.client.call(ctxt, 'modify_dns_entry', address=address, name=name, domain=domain) def delete_dns_entry(self, ctxt, name, domain): return self.client.call(ctxt, 'delete_dns_entry', name=name, domain=domain) def delete_dns_domain(self, ctxt, domain): return self.client.call(ctxt, 'delete_dns_domain', domain=domain) def get_dns_entries_by_address(self, ctxt, address, domain): return self.client.call(ctxt, 'get_dns_entries_by_address', address=address, domain=domain) def get_dns_entries_by_name(self, ctxt, name, domain): return self.client.call(ctxt, 'get_dns_entries_by_name', name=name, domain=domain) def create_private_dns_domain(self, ctxt, domain, av_zone): return self.client.call(ctxt, 'create_private_dns_domain', domain=domain, av_zone=av_zone) def create_public_dns_domain(self, ctxt, domain, project): return self.client.call(ctxt, 'create_public_dns_domain', domain=domain, project=project) def setup_networks_on_host(self, ctxt, instance_id, host, teardown): # NOTE(tr3buchet): the call is just to wait for completion return self.client.call(ctxt, 'setup_networks_on_host', instance_id=instance_id, host=host, teardown=teardown) def set_network_host(self, ctxt, network_ref): network_ref_p = jsonutils.to_primitive(network_ref) return self.client.call(ctxt, 'set_network_host', network_ref=network_ref_p) def rpc_setup_network_on_host(self, ctxt, network_id, teardown, host): # NOTE(tr3buchet): the call is just to wait for completion cctxt = self.client.prepare(server=host) return cctxt.call(ctxt, 'rpc_setup_network_on_host', network_id=network_id, teardown=teardown) # NOTE(russellb): Ideally this would not have a prefix of '_' since it is # a part of the rpc API. However, this is how it was being called when the # 1.0 API was being documented using this client proxy class. It should be # changed if there was ever a 2.0. def _rpc_allocate_fixed_ip(self, ctxt, instance_id, network_id, address, vpn, host): cctxt = self.client.prepare(server=host) return cctxt.call(ctxt, '_rpc_allocate_fixed_ip', instance_id=instance_id, network_id=network_id, address=address, vpn=vpn) def deallocate_fixed_ip(self, ctxt, address, host, instance): kwargs = {} if self.client.can_send_version('1.12'): version = '1.12' kwargs['instance'] = instance else: version = '1.0' cctxt = self.client.prepare(server=host, version=version) return cctxt.call(ctxt, 'deallocate_fixed_ip', address=address, host=host, **kwargs) def update_dns(self, ctxt, network_ids): cctxt = self.client.prepare(fanout=True, version='1.3') cctxt.cast(ctxt, 'update_dns', network_ids=network_ids) # NOTE(russellb): Ideally this would not have a prefix of '_' since it is # a part of the rpc API. However, this is how it was being called when the # 1.0 API was being documented using this client proxy class. It should be # changed if there was ever a 2.0. def _associate_floating_ip(self, ctxt, floating_address, fixed_address, interface, host, instance_uuid=None): cctxt = self.client.prepare(server=host, version='1.6') return cctxt.call(ctxt, '_associate_floating_ip', floating_address=floating_address, fixed_address=fixed_address, interface=interface, instance_uuid=instance_uuid) # NOTE(russellb): Ideally this would not have a prefix of '_' since it is # a part of the rpc API. However, this is how it was being called when the # 1.0 API was being documented using this client proxy class. It should be # changed if there was ever a 2.0. def _disassociate_floating_ip(self, ctxt, address, interface, host, instance_uuid=None): cctxt = self.client.prepare(server=host, version='1.6') return cctxt.call(ctxt, '_disassociate_floating_ip', address=address, interface=interface, instance_uuid=instance_uuid) def lease_fixed_ip(self, ctxt, address, host): cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'lease_fixed_ip', address=address) def release_fixed_ip(self, ctxt, address, host): cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'release_fixed_ip', address=address) def migrate_instance_start(self, ctxt, instance_uuid, rxtx_factor, project_id, source_compute, dest_compute, floating_addresses, host=None): cctxt = self.client.prepare(server=host, version='1.2') return cctxt.call(ctxt, 'migrate_instance_start', instance_uuid=instance_uuid, rxtx_factor=rxtx_factor, project_id=project_id, source=source_compute, dest=dest_compute, floating_addresses=floating_addresses) def migrate_instance_finish(self, ctxt, instance_uuid, rxtx_factor, project_id, source_compute, dest_compute, floating_addresses, host=None): cctxt = self.client.prepare(server=host, version='1.2') return cctxt.call(ctxt, 'migrate_instance_finish', instance_uuid=instance_uuid, rxtx_factor=rxtx_factor, project_id=project_id, source=source_compute, dest=dest_compute, floating_addresses=floating_addresses) nova-2014.1/nova/CA/0000775000175400017540000000000012323722546015136 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/reqs/0000775000175400017540000000000012323722546016110 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/reqs/.placeholder0000664000175400017540000000000012323721476020362 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/reqs/.gitignore0000664000175400017540000000000212323721476020071 0ustar jenkinsjenkins00000000000000* nova-2014.1/nova/CA/genrootca.sh0000775000175400017540000000226012323721476017457 0ustar jenkinsjenkins00000000000000#!/bin/bash # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. if [ -f "cacert.pem" ]; then echo "Not installing, it's already done." else cp "$(dirname $0)/openssl.cnf.tmpl" openssl.cnf sed -i -e s/%USERNAME%/ROOT/g openssl.cnf mkdir -p certs crl newcerts private openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 365 -config ./openssl.cnf -batch -nodes touch index.txt echo "10" > serial openssl ca -gencrl -config ./openssl.cnf -out crl.pem fi nova-2014.1/nova/CA/.gitignore0000664000175400017540000000017112323721476017126 0ustar jenkinsjenkins00000000000000index.txt index.txt.old index.txt.attr index.txt.attr.old cacert.pem serial serial.old openssl.cnf private/* newcerts/* nova-2014.1/nova/CA/projects/0000775000175400017540000000000012323722546016767 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/projects/.placeholder0000664000175400017540000000000012323721476021241 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/projects/.gitignore0000664000175400017540000000000212323721476020750 0ustar jenkinsjenkins00000000000000* nova-2014.1/nova/CA/openssl.cnf.tmpl0000664000175400017540000000552512323721476020274 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/index.txt new_certs_dir = $dir/newcerts certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem unique_subject = no default_crl_days = 365 default_days = 365 default_md = md5 preserve = no email_in_dn = no nameopt = default_ca certopt = default_ca policy = policy_match # NOTE(dprince): stateOrProvinceName must be 'supplied' or 'optional' to # work around a stateOrProvince printable string UTF8 mismatch on # RHEL 6 and Fedora 14 (using openssl-1.0.0-4.el6.x86_64 or # openssl-1.0.0d-1.fc14.x86_64) [ policy_match ] countryName = supplied stateOrProvinceName = supplied organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 # Size of keys default_keyfile = key.pem # name of generated keys default_md = md5 # message digest algorithm string_mask = nombstr # permitted characters distinguished_name = req_distinguished_name [ req_distinguished_name ] # Variable name Prompt string #---------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #------------------------------ ------------------------------ 0.organizationName_default = NOVA %USERNAME% localityName_default = Mountain View stateOrProvinceName_default = California countryName_default = US [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash nova-2014.1/nova/CA/geninter.sh0000775000175400017540000000337312323721476017317 0ustar jenkinsjenkins00000000000000#!/bin/bash # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # $1 is the id of the project and $2 is the subject of the cert NAME=$1 SUBJ=$2 mkdir -p projects/$NAME cd projects/$NAME cp "$(dirname $0)/openssl.cnf.tmpl" openssl.cnf sed -i -e s/%USERNAME%/$NAME/g openssl.cnf mkdir -p certs crl newcerts private openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 365 -config ./openssl.cnf -batch -nodes echo "10" > serial touch index.txt # NOTE(vish): Disabling intermediate ca's because we don't actually need them. # It makes more sense to have each project have its own root ca. # openssl genrsa -out private/cakey.pem 1024 -config ./openssl.cnf -batch -nodes # openssl req -new -sha256 -key private/cakey.pem -out ../../reqs/inter$NAME.csr -batch -subj "$SUBJ" openssl ca -gencrl -config ./openssl.cnf -out crl.pem if [ "`id -u`" != "`grep nova /etc/passwd | cut -d':' -f3`" ]; then sudo chown -R nova:nogroup . fi # cd ../../ # openssl ca -extensions v3_ca -days 365 -out INTER/$NAME/cacert.pem -in reqs/inter$NAME.csr -config openssl.cnf -batch nova-2014.1/nova/CA/newcerts/0000775000175400017540000000000012323722546016770 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/newcerts/.placeholder0000664000175400017540000000000012323721476021242 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/private/0000775000175400017540000000000012323722546016610 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/CA/private/.placeholder0000664000175400017540000000000012323721476021062 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/baserpc.py0000664000175400017540000000500512323721476016645 0ustar jenkinsjenkins00000000000000# # Copyright 2013 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. # """ Base RPC client and server common to all services. """ from oslo.config import cfg from oslo import messaging from nova.openstack.common import jsonutils from nova import rpc CONF = cfg.CONF rpcapi_cap_opt = cfg.StrOpt('baseapi', help='Set a version cap for messages sent to the base api in any ' 'service') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') _NAMESPACE = 'baseapi' class BaseAPI(object): """Client side of the base rpc API. API version history: 1.0 - Initial version. 1.1 - Add get_backdoor_port """ VERSION_ALIASES = { # baseapi was added in havana } def __init__(self, topic): super(BaseAPI, self).__init__() target = messaging.Target(topic=topic, namespace=_NAMESPACE, version='1.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.baseapi, CONF.upgrade_levels.baseapi) self.client = rpc.get_client(target, version_cap=version_cap) def ping(self, context, arg, timeout=None): arg_p = jsonutils.to_primitive(arg) cctxt = self.client.prepare(timeout=timeout) return cctxt.call(context, 'ping', arg=arg_p) def get_backdoor_port(self, context, host): cctxt = self.client.prepare(server=host, version='1.1') return cctxt.call(context, 'get_backdoor_port') class BaseRPCAPI(object): """Server side of the base RPC API.""" target = messaging.Target(namespace=_NAMESPACE, version='1.1') def __init__(self, service_name, backdoor_port): self.service_name = service_name self.backdoor_port = backdoor_port def ping(self, context, arg): resp = {'service': self.service_name, 'arg': arg} return jsonutils.to_primitive(resp) def get_backdoor_port(self, context): return self.backdoor_port nova-2014.1/nova/availability_zones.py0000664000175400017540000001171112323721476021117 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Availability zone helper functions.""" from oslo.config import cfg from nova import db from nova.openstack.common import memorycache # NOTE(vish): azs don't change that often, so cache them for an hour to # avoid hitting the db multiple times on every request. AZ_CACHE_SECONDS = 60 * 60 MC = None availability_zone_opts = [ cfg.StrOpt('internal_service_availability_zone', default='internal', help='The availability_zone to show internal services under'), cfg.StrOpt('default_availability_zone', default='nova', help='Default compute node availability_zone'), ] CONF = cfg.CONF CONF.register_opts(availability_zone_opts) def _get_cache(): global MC if MC is None: MC = memorycache.get_client() return MC def reset_cache(): """Reset the cache, mainly for testing purposes and update availability_zone for host aggregate """ global MC MC = None def _make_cache_key(host): return "azcache-%s" % host.encode('utf-8') def set_availability_zones(context, services): # Makes sure services isn't a sqlalchemy object services = [dict(service.iteritems()) for service in services] metadata = db.aggregate_host_get_by_metadata_key(context, key='availability_zone') for service in services: az = CONF.internal_service_availability_zone if service['topic'] == "compute": if metadata.get(service['host']): az = u','.join(list(metadata[service['host']])) else: az = CONF.default_availability_zone # update the cache update_host_availability_zone_cache(context, service['host'], az) service['availability_zone'] = az return services def get_host_availability_zone(context, host, conductor_api=None): if conductor_api: metadata = conductor_api.aggregate_metadata_get_by_host( context, host, key='availability_zone') else: metadata = db.aggregate_metadata_get_by_host( context, host, key='availability_zone') if 'availability_zone' in metadata: az = list(metadata['availability_zone'])[0] else: az = CONF.default_availability_zone return az def update_host_availability_zone_cache(context, host, availability_zone=None): if not availability_zone: availability_zone = get_host_availability_zone(context, host) cache = _get_cache() cache_key = _make_cache_key(host) cache.delete(cache_key) cache.set(cache_key, availability_zone, AZ_CACHE_SECONDS) def get_availability_zones(context, get_only_available=False): """Return available and unavailable zones on demand. :param get_only_available: flag to determine whether to return available zones only, default False indicates return both available zones and not available zones, True indicates return available zones only """ enabled_services = db.service_get_all(context, False) enabled_services = set_availability_zones(context, enabled_services) available_zones = [] for zone in [service['availability_zone'] for service in enabled_services]: if zone not in available_zones: available_zones.append(zone) if not get_only_available: disabled_services = db.service_get_all(context, True) disabled_services = set_availability_zones(context, disabled_services) not_available_zones = [] zones = [service['availability_zone'] for service in disabled_services if service['availability_zone'] not in available_zones] for zone in zones: if zone not in not_available_zones: not_available_zones.append(zone) return (available_zones, not_available_zones) else: return available_zones def get_instance_availability_zone(context, instance): """Return availability zone of specified instance.""" host = str(instance.get('host')) if not host: return None cache_key = _make_cache_key(host) cache = _get_cache() az = cache.get(cache_key) if not az: elevated = context.elevated() az = get_host_availability_zone(elevated, host) cache.set(cache_key, az, AZ_CACHE_SECONDS) return az nova-2014.1/nova/safe_utils.py0000664000175400017540000000401212323721477017362 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Utilities and helper functions that won't produce circular imports.""" import inspect def getcallargs(function, *args, **kwargs): """This is a simplified inspect.getcallargs (2.7+). It should be replaced when python >= 2.7 is standard. """ keyed_args = {} argnames, varargs, keywords, defaults = inspect.getargspec(function) keyed_args.update(kwargs) #NOTE(alaski) the implicit 'self' or 'cls' argument shows up in # argnames but not in args or kwargs. Uses 'in' rather than '==' because # some tests use 'self2'. if 'self' in argnames[0] or 'cls' == argnames[0]: # The function may not actually be a method or have im_self. # Typically seen when it's stubbed with mox. if inspect.ismethod(function) and hasattr(function, 'im_self'): keyed_args[argnames[0]] = function.im_self else: keyed_args[argnames[0]] = None remaining_argnames = filter(lambda x: x not in keyed_args, argnames) keyed_args.update(dict(zip(remaining_argnames, args))) if defaults: num_defaults = len(defaults) for argname, value in zip(argnames[-num_defaults:], defaults): if argname not in keyed_args: keyed_args[argname] = value return keyed_args nova-2014.1/nova/context.py0000664000175400017540000001763412323721476016725 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """RequestContext: context for requests that persist through all of nova.""" import copy import uuid import six from nova import exception from nova.openstack.common.gettextutils import _ from nova.openstack.common import local from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova import policy LOG = logging.getLogger(__name__) def generate_request_id(): return 'req-' + str(uuid.uuid4()) class RequestContext(object): """Security context and request information. Represents the user taking a given action within the system. """ def __init__(self, user_id, project_id, is_admin=None, read_deleted="no", roles=None, remote_address=None, timestamp=None, request_id=None, auth_token=None, overwrite=True, quota_class=None, user_name=None, project_name=None, service_catalog=None, instance_lock_checked=False, **kwargs): """:param read_deleted: 'no' indicates deleted records are hidden, 'yes' indicates deleted records are visible, 'only' indicates that *only* deleted records are visible. :param overwrite: Set to False to ensure that the greenthread local copy of the index is not overwritten. :param kwargs: Extra arguments that might be present, but we ignore because they possibly came in from older rpc messages. """ if kwargs: LOG.warn(_('Arguments dropped when creating context: %s') % str(kwargs)) self.user_id = user_id self.project_id = project_id self.roles = roles or [] self.read_deleted = read_deleted self.remote_address = remote_address if not timestamp: timestamp = timeutils.utcnow() if isinstance(timestamp, six.string_types): timestamp = timeutils.parse_strtime(timestamp) self.timestamp = timestamp if not request_id: request_id = generate_request_id() self.request_id = request_id self.auth_token = auth_token if service_catalog: # Only include required parts of service_catalog self.service_catalog = [s for s in service_catalog if s.get('type') in ('volume',)] else: # if list is empty or none self.service_catalog = [] self.instance_lock_checked = instance_lock_checked # NOTE(markmc): this attribute is currently only used by the # rs_limits turnstile pre-processor. # See https://lists.launchpad.net/openstack/msg12200.html self.quota_class = quota_class self.user_name = user_name self.project_name = project_name self.is_admin = is_admin if self.is_admin is None: self.is_admin = policy.check_is_admin(self) if overwrite or not hasattr(local.store, 'context'): self.update_store() def _get_read_deleted(self): return self._read_deleted def _set_read_deleted(self, read_deleted): if read_deleted not in ('no', 'yes', 'only'): raise ValueError(_("read_deleted can only be one of 'no', " "'yes' or 'only', not %r") % read_deleted) self._read_deleted = read_deleted def _del_read_deleted(self): del self._read_deleted read_deleted = property(_get_read_deleted, _set_read_deleted, _del_read_deleted) def update_store(self): local.store.context = self def to_dict(self): return {'user_id': self.user_id, 'project_id': self.project_id, 'is_admin': self.is_admin, 'read_deleted': self.read_deleted, 'roles': self.roles, 'remote_address': self.remote_address, 'timestamp': timeutils.strtime(self.timestamp), 'request_id': self.request_id, 'auth_token': self.auth_token, 'quota_class': self.quota_class, 'user_name': self.user_name, 'service_catalog': self.service_catalog, 'project_name': self.project_name, 'instance_lock_checked': self.instance_lock_checked, 'tenant': self.tenant, 'user': self.user} @classmethod def from_dict(cls, values): values.pop('user', None) values.pop('tenant', None) return cls(**values) def elevated(self, read_deleted=None, overwrite=False): """Return a version of this context with admin flag set.""" context = copy.copy(self) context.is_admin = True if 'admin' not in context.roles: context.roles.append('admin') if read_deleted is not None: context.read_deleted = read_deleted return context # NOTE(sirp): the openstack/common version of RequestContext uses # tenant/user whereas the Nova version uses project_id/user_id. We need # this shim in order to use context-aware code from openstack/common, like # logging, until we make the switch to using openstack/common's version of # RequestContext. @property def tenant(self): return self.project_id @property def user(self): return self.user_id def get_admin_context(read_deleted="no"): return RequestContext(user_id=None, project_id=None, is_admin=True, read_deleted=read_deleted, overwrite=False) def is_user_context(context): """Indicates if the request context is a normal user.""" if not context: return False if context.is_admin: return False if not context.user_id or not context.project_id: return False return True def require_admin_context(ctxt): """Raise exception.AdminRequired() if context is an admin context.""" if not ctxt.is_admin: raise exception.AdminRequired() def require_context(ctxt): """Raise exception.NotAuthorized() if context is not a user or an admin context. """ if not ctxt.is_admin and not is_user_context(ctxt): raise exception.NotAuthorized() def authorize_project_context(context, project_id): """Ensures a request has permission to access the given project.""" if is_user_context(context): if not context.project_id: raise exception.NotAuthorized() elif context.project_id != project_id: raise exception.NotAuthorized() def authorize_user_context(context, user_id): """Ensures a request has permission to access the given user.""" if is_user_context(context): if not context.user_id: raise exception.NotAuthorized() elif context.user_id != user_id: raise exception.NotAuthorized() def authorize_quota_class_context(context, class_name): """Ensures a request has permission to access the given quota class.""" if is_user_context(context): if not context.quota_class: raise exception.NotAuthorized() elif context.quota_class != class_name: raise exception.NotAuthorized() nova-2014.1/nova/cloudpipe/0000775000175400017540000000000012323722546016637 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/cloudpipe/pipelib.py0000664000175400017540000001544012323721476020642 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ CloudPipe - Build a user-data payload zip file, and launch an instance with it. """ import os import string import zipfile from oslo.config import cfg from nova import compute from nova.compute import flavors from nova import crypto from nova import db from nova import exception from nova.openstack.common import fileutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova import paths from nova import utils cloudpipe_opts = [ cfg.StrOpt('vpn_image_id', default='0', help='Image ID used when starting up a cloudpipe vpn server'), cfg.StrOpt('vpn_flavor', default='m1.tiny', help=_('Flavor for vpn instances')), cfg.StrOpt('boot_script_template', default=paths.basedir_def('nova/cloudpipe/bootscript.template'), help=_('Template for cloudpipe instance boot script')), cfg.StrOpt('dmz_net', default='10.0.0.0', help=_('Network to push into openvpn config')), cfg.StrOpt('dmz_mask', default='255.255.255.0', help=_('Netmask to push into openvpn config')), cfg.StrOpt('vpn_key_suffix', default='-vpn', help='Suffix to add to project name for vpn key and secgroups'), ] CONF = cfg.CONF CONF.register_opts(cloudpipe_opts) LOG = logging.getLogger(__name__) def is_vpn_image(image_id): return image_id == CONF.vpn_image_id def _load_boot_script(): shellfile = open(CONF.boot_script_template, "r") try: s = string.Template(shellfile.read()) finally: shellfile.close() CONF.import_opt('ec2_dmz_host', 'nova.api.ec2.cloud') CONF.import_opt('ec2_port', 'nova.api.ec2.cloud') CONF.import_opt('cnt_vpn_clients', 'nova.network.manager') return s.substitute(cc_dmz=CONF.ec2_dmz_host, cc_port=CONF.ec2_port, dmz_net=CONF.dmz_net, dmz_mask=CONF.dmz_mask, num_vpn=CONF.cnt_vpn_clients) class CloudPipe(object): def __init__(self): self.compute_api = compute.API() def get_encoded_zip(self, project_id): # Make a payload.zip with utils.tempdir() as tmpdir: filename = "payload.zip" zippath = os.path.join(tmpdir, filename) z = zipfile.ZipFile(zippath, "w", zipfile.ZIP_DEFLATED) boot_script = _load_boot_script() # genvpn, sign csr crypto.generate_vpn_files(project_id) z.writestr('autorun.sh', boot_script) crl = os.path.join(crypto.ca_folder(project_id), 'crl.pem') z.write(crl, 'crl.pem') server_key = os.path.join(crypto.ca_folder(project_id), 'server.key') z.write(server_key, 'server.key') ca_crt = os.path.join(crypto.ca_path(project_id)) z.write(ca_crt, 'ca.crt') server_crt = os.path.join(crypto.ca_folder(project_id), 'server.crt') z.write(server_crt, 'server.crt') z.close() zippy = open(zippath, "r") # NOTE(vish): run instances expects encoded userdata, it is decoded # in the get_metadata_call. autorun.sh also decodes the zip file, # hence the double encoding. encoded = zippy.read().encode("base64").encode("base64") zippy.close() return encoded def launch_vpn_instance(self, context): LOG.debug(_("Launching VPN for %s") % (context.project_id)) key_name = self.setup_key_pair(context) group_name = self.setup_security_group(context) flavor = flavors.get_flavor_by_name(CONF.vpn_flavor) instance_name = '%s%s' % (context.project_id, CONF.vpn_key_suffix) user_data = self.get_encoded_zip(context.project_id) return self.compute_api.create(context, flavor, CONF.vpn_image_id, display_name=instance_name, user_data=user_data, key_name=key_name, security_group=[group_name]) def setup_security_group(self, context): group_name = '%s%s' % (context.project_id, CONF.vpn_key_suffix) group = {'user_id': context.user_id, 'project_id': context.project_id, 'name': group_name, 'description': 'Group for vpn'} try: group_ref = db.security_group_create(context, group) except exception.SecurityGroupExists: return group_name rule = {'parent_group_id': group_ref['id'], 'cidr': '0.0.0.0/0', 'protocol': 'udp', 'from_port': 1194, 'to_port': 1194} db.security_group_rule_create(context, rule) rule = {'parent_group_id': group_ref['id'], 'cidr': '0.0.0.0/0', 'protocol': 'icmp', 'from_port': -1, 'to_port': -1} db.security_group_rule_create(context, rule) # NOTE(vish): No need to trigger the group since the instance # has not been run yet. return group_name def setup_key_pair(self, context): key_name = '%s%s' % (context.project_id, CONF.vpn_key_suffix) try: keypair_api = compute.api.KeypairAPI() result, private_key = keypair_api.create_key_pair(context, context.user_id, key_name) key_dir = os.path.join(CONF.keys_path, context.user_id) fileutils.ensure_tree(key_dir) key_path = os.path.join(key_dir, '%s.pem' % key_name) with open(key_path, 'w') as f: f.write(private_key) except (exception.KeyPairExists, os.error, IOError): pass return key_name nova-2014.1/nova/cloudpipe/client.ovpn.template0000664000175400017540000000216112323721476022634 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # NOVA user connection # Edit the following lines to point to your cert files: cert {{ certfile }} key {{ keyfile }} ca cacert.pem client dev tap proto udp remote {{ ip }} {{ port }} resolv-retry infinite nobind # Downgrade privileges after initialization (non-Windows only) user nobody group nogroup comp-lzo # Set log file verbosity. verb 2 keepalive 10 120 ping-timer-rem persist-tun persist-key nova-2014.1/nova/cloudpipe/__init__.py0000664000175400017540000000166112323721476020755 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ :mod:`nova.cloudpipe` -- VPN Server Management ===================================================== .. automodule:: nova.cloudpipe :platform: Unix :synopsis: An OpenVPN server for every nova user. """ nova-2014.1/nova/cloudpipe/bootscript.template0000775000175400017540000000461412323721476022575 0ustar jenkinsjenkins00000000000000#!/bin/bash # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # This gets zipped and run on the cloudpipe-managed OpenVPN server export LC_ALL=C export VPN_IP=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $$1}'` export BROADCAST=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f3 | awk '{print $$1}'` export DHCP_MASK=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f4 | awk '{print $$1}'` export GATEWAY=`netstat -r | grep default | cut -d' ' -f10` # Need a higher valued MAC address than eth0, to prevent the TAP MAC address # from becoming the bridge MAC address. Since Essex eth0 MAC starts with # FA:16:3E, we'll thus generate a MAC starting with FA:17:3E to be higher than eth0. export RANDOM_TAP_MAC=`openssl rand -hex 8 | sed 's/\(..\)/\1:/g' | cut -b-8 | awk '{print "FA:17:3E:"$$1}'` DHCP_LOWER=`echo $$BROADCAST | awk -F. '{print $$1"."$$2"."$$3"." $$4 - ${num_vpn} }'` DHCP_UPPER=`echo $$BROADCAST | awk -F. '{print $$1"."$$2"."$$3"." $$4 - 1 }'` # generate a server DH openssl dhparam -out /etc/openvpn/dh1024.pem 1024 cp crl.pem /etc/openvpn/ cp server.key /etc/openvpn/ cp ca.crt /etc/openvpn/ cp server.crt /etc/openvpn/ # Customize the server.conf.template cd /etc/openvpn sed -e s/VPN_IP/$$VPN_IP/g server.conf.template > server.conf sed -i -e s/DHCP_SUBNET/$$DHCP_MASK/g server.conf sed -i -e s/DHCP_LOWER/$$DHCP_LOWER/g server.conf sed -i -e s/DHCP_UPPER/$$DHCP_UPPER/g server.conf sed -i -e s/max-clients\ 1/max-clients\ 10/g server.conf echo "push \"route ${dmz_net} ${dmz_mask} $$GATEWAY\"" >> server.conf echo "duplicate-cn" >> server.conf echo "crl-verify /etc/openvpn/crl.pem" >> server.conf echo "lladdr $$RANDOM_TAP_MAC" >> server.conf /etc/init.d/openvpn start nova-2014.1/nova/spice/0000775000175400017540000000000012323722546015756 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/spice/__init__.py0000664000175400017540000000325112323721477020072 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 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. """Module for SPICE Proxying.""" from oslo.config import cfg spice_opts = [ cfg.StrOpt('html5proxy_base_url', default='http://127.0.0.1:6082/spice_auto.html', help='Location of spice HTML5 console proxy, in the form ' '"http://127.0.0.1:6082/spice_auto.html"'), cfg.StrOpt('server_listen', default='127.0.0.1', help='IP address on which instance spice server should listen'), cfg.StrOpt('server_proxyclient_address', default='127.0.0.1', help='The address to which proxy clients ' '(like nova-spicehtml5proxy) should connect'), cfg.BoolOpt('enabled', default=False, help='Enable spice related features'), cfg.BoolOpt('agent_enabled', default=True, help='Enable spice guest agent support'), cfg.StrOpt('keymap', default='en-us', help='Keymap for spice'), ] CONF = cfg.CONF CONF.register_opts(spice_opts, group='spice') nova-2014.1/nova/consoleauth/0000775000175400017540000000000012323722546017177 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/consoleauth/manager.py0000664000175400017540000001130312323721476021162 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Auth Components for Consoles.""" import time from oslo.config import cfg from oslo import messaging from nova.cells import rpcapi as cells_rpcapi from nova.compute import rpcapi as compute_rpcapi from nova import manager from nova.objects import instance as instance_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import memorycache LOG = logging.getLogger(__name__) consoleauth_opts = [ cfg.IntOpt('console_token_ttl', default=600, help='How many seconds before deleting tokens') ] CONF = cfg.CONF CONF.register_opts(consoleauth_opts) CONF.import_opt('enable', 'nova.cells.opts', group='cells') class ConsoleAuthManager(manager.Manager): """Manages token based authentication.""" target = messaging.Target(version='2.0') def __init__(self, scheduler_driver=None, *args, **kwargs): super(ConsoleAuthManager, self).__init__(service_name='consoleauth', *args, **kwargs) self.mc = memorycache.get_client() self.compute_rpcapi = compute_rpcapi.ComputeAPI() self.cells_rpcapi = cells_rpcapi.CellsAPI() def _get_tokens_for_instance(self, instance_uuid): tokens_str = self.mc.get(instance_uuid.encode('UTF-8')) if not tokens_str: tokens = [] else: tokens = jsonutils.loads(tokens_str) return tokens def authorize_console(self, context, token, console_type, host, port, internal_access_path, instance_uuid): token_dict = {'token': token, 'instance_uuid': instance_uuid, 'console_type': console_type, 'host': host, 'port': port, 'internal_access_path': internal_access_path, 'last_activity_at': time.time()} data = jsonutils.dumps(token_dict) self.mc.set(token.encode('UTF-8'), data, CONF.console_token_ttl) tokens = self._get_tokens_for_instance(instance_uuid) # Remove the expired tokens from cache. for tok in tokens: token_str = self.mc.get(tok.encode('UTF-8')) if not token_str: tokens.remove(tok) tokens.append(token) self.mc.set(instance_uuid.encode('UTF-8'), jsonutils.dumps(tokens)) LOG.audit(_("Received Token: %(token)s, %(token_dict)s"), {'token': token, 'token_dict': token_dict}) def _validate_token(self, context, token): instance_uuid = token['instance_uuid'] if instance_uuid is None: return False # NOTE(comstud): consoleauth was meant to run in API cells. So, # if cells is enabled, we must call down to the child cell for # the instance. if CONF.cells.enable: return self.cells_rpcapi.validate_console_port(context, instance_uuid, token['port'], token['console_type']) instance = instance_obj.Instance.get_by_uuid(context, instance_uuid) return self.compute_rpcapi.validate_console_port(context, instance, token['port'], token['console_type']) def check_token(self, context, token): token_str = self.mc.get(token.encode('UTF-8')) token_valid = (token_str is not None) LOG.audit(_("Checking Token: %(token)s, %(token_valid)s"), {'token': token, 'token_valid': token_valid}) if token_valid: token = jsonutils.loads(token_str) if self._validate_token(context, token): return token def delete_tokens_for_instance(self, context, instance_uuid): tokens = self._get_tokens_for_instance(instance_uuid) for token in tokens: self.mc.delete(token.encode('UTF-8')) self.mc.delete(instance_uuid.encode('UTF-8')) nova-2014.1/nova/consoleauth/__init__.py0000664000175400017540000000165112323721476021314 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Module to authenticate Consoles.""" from oslo.config import cfg consoleauth_topic_opt = cfg.StrOpt('consoleauth_topic', default='consoleauth', help='The topic console auth proxy nodes listen on') CONF = cfg.CONF CONF.register_opt(consoleauth_topic_opt) nova-2014.1/nova/consoleauth/rpcapi.py0000664000175400017540000000647512323721476021044 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """ Client side of the consoleauth RPC API. """ from oslo.config import cfg from oslo import messaging from nova import rpc CONF = cfg.CONF rpcapi_cap_opt = cfg.StrOpt('consoleauth', help='Set a version cap for messages sent to consoleauth services') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') class ConsoleAuthAPI(object): '''Client side of the consoleauth rpc API. API version history: 1.0 - Initial version. 1.1 - Added get_backdoor_port() 1.2 - Added instance_uuid to authorize_console, and delete_tokens_for_instance ... Grizzly and Havana support message version 1.2. So, any changes to existing methods in 2.x after that point should be done such that they can handle the version_cap being set to 1.2. 2.0 - Major API rev for Icehouse ''' VERSION_ALIASES = { 'grizzly': '1.2', 'havana': '1.2', } def __init__(self): super(ConsoleAuthAPI, self).__init__() target = messaging.Target(topic=CONF.consoleauth_topic, version='2.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.consoleauth, CONF.upgrade_levels.consoleauth) self.client = rpc.get_client(target, version_cap=version_cap) def authorize_console(self, ctxt, token, console_type, host, port, internal_access_path, instance_uuid): # The remote side doesn't return anything, but we want to block # until it completes.' version = '2.0' if not self.client.can_send_version('2.0'): # NOTE(russellb) Havana compat version = '1.2' cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'authorize_console', token=token, console_type=console_type, host=host, port=port, internal_access_path=internal_access_path, instance_uuid=instance_uuid) def check_token(self, ctxt, token): version = '2.0' if not self.client.can_send_version('2.0'): # NOTE(russellb) Havana compat version = '1.0' cctxt = self.client.prepare(version=version) return cctxt.call(ctxt, 'check_token', token=token) def delete_tokens_for_instance(self, ctxt, instance_uuid): version = '2.0' if not self.client.can_send_version('2.0'): # NOTE(russellb) Havana compat version = '1.2' cctxt = self.client.prepare(version=version) return cctxt.cast(ctxt, 'delete_tokens_for_instance', instance_uuid=instance_uuid) nova-2014.1/nova/manager.py0000664000175400017540000001035712323721477016647 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Base Manager class. Managers are responsible for a certain aspect of the system. It is a logical grouping of code relating to a portion of the system. In general other components should be using the manager to make changes to the components that it is responsible for. For example, other components that need to deal with volumes in some way, should do so by calling methods on the VolumeManager instead of directly changing fields in the database. This allows us to keep all of the code relating to volumes in the same place. We have adopted a basic strategy of Smart managers and dumb data, which means rather than attaching methods to data objects, components should call manager methods that act on the data. Methods on managers that can be executed locally should be called directly. If a particular method must execute on a remote host, this should be done via rpc to the service that wraps the manager Managers should be responsible for most of the db access, and non-implementation specific data. Anything implementation specific that can't be generalized should be done by the Driver. In general, we prefer to have one manager with multiple drivers for different implementations, but sometimes it makes sense to have multiple managers. You can think of it this way: Abstract different overall strategies at the manager level(FlatNetwork vs VlanNetwork), and different implementations at the driver level(LinuxNetDriver vs CiscoNetDriver). Managers will often provide methods for initial setup of a host or periodic tasks to a wrapping service. This module provides Manager, a base class for managers. """ from oslo.config import cfg from nova.db import base from nova.openstack.common import log as logging from nova.openstack.common import periodic_task from nova import rpc CONF = cfg.CONF CONF.import_opt('host', 'nova.netconf') LOG = logging.getLogger(__name__) class Manager(base.Base, periodic_task.PeriodicTasks): def __init__(self, host=None, db_driver=None, service_name='undefined'): if not host: host = CONF.host self.host = host self.backdoor_port = None self.service_name = service_name self.notifier = rpc.get_notifier(self.service_name, self.host) self.additional_endpoints = [] super(Manager, self).__init__(db_driver) def periodic_tasks(self, context, raise_on_error=False): """Tasks to be run at a periodic interval.""" return self.run_periodic_tasks(context, raise_on_error=raise_on_error) def init_host(self): """Hook to do additional manager initialization when one requests the service be started. This is called before any service record is created. Child classes should override this method. """ pass def cleanup_host(self): """Hook to do cleanup work when the service shuts down. Child classes should override this method. """ pass def pre_start_hook(self): """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 record is created. Child classes should override this method. """ pass def post_start_hook(self): """Hook to provide the manager the ability to do additional start-up work immediately after a service creates RPC consumers and starts 'running'. Child classes should override this method. """ pass nova-2014.1/nova/objectstore/0000775000175400017540000000000012323722546017176 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/objectstore/s3server.py0000664000175400017540000003245312323721477021335 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010 OpenStack Foundation # Copyright 2009 Facebook # # 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. """Implementation of an S3-like storage server based on local files. Useful to test features that will eventually run on S3, or if you want to run something locally that was once running on S3. We don't support all the features of S3, but it does work with the standard S3 client for the most basic semantics. To use the standard S3 client with this module:: c = S3.AWSAuthConnection("", "", server="localhost", port=8888, is_secure=False) c.create_bucket("mybucket") c.put("mybucket", "mykey", "a value") print c.get("mybucket", "mykey").body """ import bisect import datetime import os import os.path import urllib from oslo.config import cfg import routes import six import webob from nova.openstack.common import fileutils from nova import paths from nova import utils from nova import wsgi s3_opts = [ cfg.StrOpt('buckets_path', default=paths.state_path_def('buckets'), help='Path to S3 buckets'), cfg.StrOpt('s3_listen', default="0.0.0.0", help='IP address for S3 API to listen'), cfg.IntOpt('s3_listen_port', default=3333, help='Port for S3 API to listen'), ] CONF = cfg.CONF CONF.register_opts(s3_opts) def get_wsgi_server(): return wsgi.Server("S3 Objectstore", S3Application(CONF.buckets_path), port=CONF.s3_listen_port, host=CONF.s3_listen) class S3Application(wsgi.Router): """Implementation of an S3-like storage server based on local files. If bucket depth is given, we break files up into multiple directories to prevent hitting file system limits for number of files in each directories. 1 means one level of directories, 2 means 2, etc. """ def __init__(self, root_directory, bucket_depth=0, mapper=None): if mapper is None: mapper = routes.Mapper() mapper.connect('/', controller=lambda *a, **kw: RootHandler(self)(*a, **kw)) mapper.connect('/{bucket}/{object_name}', controller=lambda *a, **kw: ObjectHandler(self)(*a, **kw)) mapper.connect('/{bucket_name}/', controller=lambda *a, **kw: BucketHandler(self)(*a, **kw)) self.directory = os.path.abspath(root_directory) fileutils.ensure_tree(self.directory) self.bucket_depth = bucket_depth super(S3Application, self).__init__(mapper) class BaseRequestHandler(object): """Base class emulating Tornado's web framework pattern in WSGI. This is a direct port of Tornado's implementation, so some key decisions about how the code interacts have already been chosen. The two most common ways of designing web frameworks can be classified as async object-oriented and sync functional. Tornado's is on the OO side because a response is built up in and using the shared state of an object and one of the object's methods will eventually trigger the "finishing" of the response asynchronously. Most WSGI stuff is in the functional side, we pass a request object to every call down a chain and the eventual return value will be a response. Part of the function of the routing code in S3Application as well as the code in BaseRequestHandler's __call__ method is to merge those two styles together enough that the Tornado code can work without extensive modifications. To do that it needs to give the Tornado-style code clean objects that it can modify the state of for each request that is processed, so we use a very simple factory lambda to create new state for each request, that's the stuff in the router, and when we let the Tornado code modify that object to handle the request, then we return the response it generated. This wouldn't work the same if Tornado was being more async'y and doing other callbacks throughout the process, but since Tornado is being relatively simple here we can be satisfied that the response will be complete by the end of the get/post method. """ def __init__(self, application): self.application = application @webob.dec.wsgify def __call__(self, request): method = request.method.lower() f = getattr(self, method, self.invalid) self.request = request self.response = webob.Response() params = request.environ['wsgiorg.routing_args'][1] del params['controller'] f(**params) return self.response def get_argument(self, arg, default): return self.request.params.get(arg, default) def set_header(self, header, value): self.response.headers[header] = value def set_status(self, status_code): self.response.status = status_code def set_404(self): self.render_xml({"Error": { "Code": "NoSuchKey", "Message": "The resource you requested does not exist" }}) self.set_status(404) def finish(self, body=''): self.response.body = utils.utf8(body) def invalid(self, **kwargs): pass def render_xml(self, value): assert isinstance(value, dict) and len(value) == 1 self.set_header("Content-Type", "application/xml; charset=UTF-8") name = value.keys()[0] parts = [] parts.append('<' + utils.utf8(name) + ' xmlns="http://doc.s3.amazonaws.com/2006-03-01">') self._render_parts(value.values()[0], parts) parts.append('') self.finish('\n' + ''.join(parts)) def _render_parts(self, value, parts=None): if not parts: parts = [] if isinstance(value, six.string_types): parts.append(utils.xhtml_escape(value)) elif isinstance(value, int) or isinstance(value, long): parts.append(str(value)) elif isinstance(value, datetime.datetime): parts.append(value.strftime("%Y-%m-%dT%H:%M:%S.000Z")) elif isinstance(value, dict): for name, subvalue in value.iteritems(): if not isinstance(subvalue, list): subvalue = [subvalue] for subsubvalue in subvalue: parts.append('<' + utils.utf8(name) + '>') self._render_parts(subsubvalue, parts) parts.append('') else: raise Exception("Unknown S3 value type %r", value) def _object_path(self, bucket, object_name): if self.application.bucket_depth < 1: return os.path.abspath(os.path.join( self.application.directory, bucket, object_name)) hash = utils.get_hash_str(object_name) path = os.path.abspath(os.path.join( self.application.directory, bucket)) for i in range(self.application.bucket_depth): path = os.path.join(path, hash[:2 * (i + 1)]) return os.path.join(path, object_name) class RootHandler(BaseRequestHandler): def get(self): names = os.listdir(self.application.directory) buckets = [] for name in names: path = os.path.join(self.application.directory, name) info = os.stat(path) buckets.append({ "Name": name, "CreationDate": datetime.datetime.utcfromtimestamp( info.st_ctime), }) self.render_xml({"ListAllMyBucketsResult": { "Buckets": {"Bucket": buckets}, }}) class BucketHandler(BaseRequestHandler): def get(self, bucket_name): prefix = self.get_argument("prefix", u"") marker = self.get_argument("marker", u"") max_keys = int(self.get_argument("max-keys", 50000)) path = os.path.abspath(os.path.join(self.application.directory, bucket_name)) terse = int(self.get_argument("terse", 0)) if (not path.startswith(self.application.directory) or not os.path.isdir(path)): self.set_404() return object_names = [] for root, dirs, files in os.walk(path): for file_name in files: object_names.append(os.path.join(root, file_name)) skip = len(path) + 1 for i in range(self.application.bucket_depth): skip += 2 * (i + 1) + 1 object_names = [n[skip:] for n in object_names] object_names.sort() contents = [] start_pos = 0 if marker: start_pos = bisect.bisect_right(object_names, marker, start_pos) if prefix: start_pos = bisect.bisect_left(object_names, prefix, start_pos) truncated = False for object_name in object_names[start_pos:]: if not object_name.startswith(prefix): break if len(contents) >= max_keys: truncated = True break object_path = self._object_path(bucket_name, object_name) c = {"Key": object_name} if not terse: info = os.stat(object_path) c.update({ "LastModified": datetime.datetime.utcfromtimestamp( info.st_mtime), "Size": info.st_size, }) contents.append(c) marker = object_name self.render_xml({"ListBucketResult": { "Name": bucket_name, "Prefix": prefix, "Marker": marker, "MaxKeys": max_keys, "IsTruncated": truncated, "Contents": contents, }}) def put(self, bucket_name): path = os.path.abspath(os.path.join( self.application.directory, bucket_name)) if (not path.startswith(self.application.directory) or os.path.exists(path)): self.set_status(403) return fileutils.ensure_tree(path) self.finish() def delete(self, bucket_name): path = os.path.abspath(os.path.join( self.application.directory, bucket_name)) if (not path.startswith(self.application.directory) or not os.path.isdir(path)): self.set_404() return if len(os.listdir(path)) > 0: self.set_status(403) return os.rmdir(path) self.set_status(204) self.finish() def head(self, bucket_name): path = os.path.abspath(os.path.join(self.application.directory, bucket_name)) if (not path.startswith(self.application.directory) or not os.path.isdir(path)): self.set_404() return self.set_status(200) self.finish() class ObjectHandler(BaseRequestHandler): def get(self, bucket, object_name): object_name = urllib.unquote(object_name) path = self._object_path(bucket, object_name) if (not path.startswith(self.application.directory) or not os.path.isfile(path)): self.set_404() return info = os.stat(path) self.set_header("Content-Type", "application/unknown") self.set_header("Last-Modified", datetime.datetime.utcfromtimestamp( info.st_mtime)) object_file = open(path, "r") try: self.finish(object_file.read()) finally: object_file.close() def put(self, bucket, object_name): object_name = urllib.unquote(object_name) bucket_dir = os.path.abspath(os.path.join( self.application.directory, bucket)) if (not bucket_dir.startswith(self.application.directory) or not os.path.isdir(bucket_dir)): self.set_404() return path = self._object_path(bucket, object_name) if not path.startswith(bucket_dir) or os.path.isdir(path): self.set_status(403) return directory = os.path.dirname(path) fileutils.ensure_tree(directory) object_file = open(path, "w") object_file.write(self.request.body) object_file.close() self.set_header('ETag', '"%s"' % utils.get_hash_str(self.request.body)) self.finish() def delete(self, bucket, object_name): object_name = urllib.unquote(object_name) path = self._object_path(bucket, object_name) if (not path.startswith(self.application.directory) or not os.path.isfile(path)): self.set_404() return os.unlink(path) self.set_status(204) self.finish() nova-2014.1/nova/objectstore/__init__.py0000664000175400017540000000171712323721477021317 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ :mod:`nova.objectstore` -- S3-type object store ===================================================== .. automodule:: nova.objectstore :platform: Unix :synopsis: Currently a trivial file-based system, getting extended w/ swift. """ nova-2014.1/nova/notifications.py0000664000175400017540000003501012323721510020063 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # Copyright 2013 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. """Functionality related to notifications common to multiple layers of the system. """ import datetime from oslo.config import cfg from nova.compute import flavors import nova.context from nova import db from nova.image import glance from nova import network from nova.network import model as network_model from nova.openstack.common import context as common_context from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import log from nova.openstack.common import timeutils from nova import rpc from nova import utils LOG = log.getLogger(__name__) notify_opts = [ cfg.StrOpt('notify_on_state_change', help='If set, send compute.instance.update notifications on instance ' 'state changes. Valid values are None for no notifications, ' '"vm_state" for notifications on VM state changes, or ' '"vm_and_task_state" for notifications on VM and task state ' 'changes.'), cfg.BoolOpt('notify_api_faults', default=False, help='If set, send api.fault notifications on caught exceptions ' 'in the API service.'), cfg.StrOpt('default_notification_level', default='INFO', help='Default notification level for outgoing notifications'), cfg.StrOpt('default_publisher_id', help='Default publisher_id for outgoing notifications'), ] CONF = cfg.CONF CONF.register_opts(notify_opts) def notify_decorator(name, fn): """Decorator for notify which is used from utils.monkey_patch(). :param name: name of the function :param function: - object of the function :returns: function -- decorated function """ def wrapped_func(*args, **kwarg): body = {} body['args'] = [] body['kwarg'] = {} for arg in args: body['args'].append(arg) for key in kwarg: body['kwarg'][key] = kwarg[key] ctxt = common_context.get_context_from_function_and_args( fn, args, kwarg) notifier = rpc.get_notifier(publisher_id=(CONF.default_publisher_id or CONF.host)) method = notifier.getattr(CONF.default_notification_level.lower(), 'info') method(ctxt, name, body) return fn(*args, **kwarg) return wrapped_func def send_api_fault(url, status, exception): """Send an api.fault notification.""" if not CONF.notify_api_faults: return payload = {'url': url, 'exception': str(exception), 'status': status} rpc.get_notifier('api').error(None, 'api.fault', payload) def send_update(context, old_instance, new_instance, service=None, host=None): """Send compute.instance.update notification to report any changes occurred in that instance """ if not CONF.notify_on_state_change: # skip all this if updates are disabled return update_with_state_change = False old_vm_state = old_instance["vm_state"] new_vm_state = new_instance["vm_state"] old_task_state = old_instance["task_state"] new_task_state = new_instance["task_state"] # we should check if we need to send a state change or a regular # notification if old_vm_state != new_vm_state: # yes, the vm state is changing: update_with_state_change = True elif CONF.notify_on_state_change: if (CONF.notify_on_state_change.lower() == "vm_and_task_state" and old_task_state != new_task_state): # yes, the task state is changing: update_with_state_change = True if update_with_state_change: # send a notification with state changes # value of verify_states need not be True as the check for states is # already done here send_update_with_states(context, new_instance, old_vm_state, new_vm_state, old_task_state, new_task_state, service, host) else: try: old_display_name = None if new_instance["display_name"] != old_instance["display_name"]: old_display_name = old_instance["display_name"] _send_instance_update_notification(context, new_instance, service=service, host=host, old_display_name=old_display_name) except Exception: LOG.exception(_("Failed to send state update notification"), instance=new_instance) def send_update_with_states(context, instance, old_vm_state, new_vm_state, old_task_state, new_task_state, service="compute", host=None, verify_states=False): """Send compute.instance.update notification to report changes if there are any, in the instance """ if not CONF.notify_on_state_change: # skip all this if updates are disabled return fire_update = True # send update notification by default if verify_states: # check whether we need to send notification related to state changes fire_update = False # do not send notification if the conditions for vm and(or) task state # are not satisfied if old_vm_state != new_vm_state: # yes, the vm state is changing: fire_update = True elif CONF.notify_on_state_change: if (CONF.notify_on_state_change.lower() == "vm_and_task_state" and old_task_state != new_task_state): # yes, the task state is changing: fire_update = True if fire_update: # send either a state change or a regular notification try: _send_instance_update_notification(context, instance, old_vm_state=old_vm_state, old_task_state=old_task_state, new_vm_state=new_vm_state, new_task_state=new_task_state, service=service, host=host) except Exception: LOG.exception(_("Failed to send state update notification"), instance=instance) def _send_instance_update_notification(context, instance, old_vm_state=None, old_task_state=None, new_vm_state=None, new_task_state=None, service="compute", host=None, old_display_name=None): """Send 'compute.instance.update' notification to inform observers about instance state changes. """ payload = info_from_instance(context, instance, None, None) if not new_vm_state: new_vm_state = instance["vm_state"] if not new_task_state: new_task_state = instance["task_state"] states_payload = { "old_state": old_vm_state, "state": new_vm_state, "old_task_state": old_task_state, "new_task_state": new_task_state, } payload.update(states_payload) # add audit fields: (audit_start, audit_end) = audit_period_bounds(current_period=True) payload["audit_period_beginning"] = audit_start payload["audit_period_ending"] = audit_end # add bw usage info: bw = bandwidth_usage(instance, audit_start) payload["bandwidth"] = bw # add old display name if it is changed if old_display_name: payload["old_display_name"] = old_display_name rpc.get_notifier(service, host).info(context, 'compute.instance.update', payload) def audit_period_bounds(current_period=False): """Get the start and end of the relevant audit usage period :param current_period: if True, this will generate a usage for the current usage period; if False, this will generate a usage for the previous audit period. """ begin, end = utils.last_completed_audit_period() if current_period: audit_start = end audit_end = timeutils.utcnow() else: audit_start = begin audit_end = end return (audit_start, audit_end) def bandwidth_usage(instance_ref, audit_start, ignore_missing_network_data=True): """Get bandwidth usage information for the instance for the specified audit period. """ admin_context = nova.context.get_admin_context(read_deleted='yes') def _get_nwinfo_old_skool(): """Support for getting network info without objects.""" if (instance_ref.get('info_cache') and instance_ref['info_cache'].get('network_info') is not None): cached_info = instance_ref['info_cache']['network_info'] if isinstance(cached_info, network_model.NetworkInfo): return cached_info return network_model.NetworkInfo.hydrate(cached_info) try: return network.API().get_instance_nw_info(admin_context, instance_ref) except Exception: try: with excutils.save_and_reraise_exception(): LOG.exception(_('Failed to get nw_info'), instance=instance_ref) except Exception: if ignore_missing_network_data: return raise # FIXME(comstud): Temporary as we transition to objects. This import # is here to avoid circular imports. from nova.objects import instance as instance_obj if isinstance(instance_ref, instance_obj.Instance): nw_info = instance_ref.info_cache.network_info if nw_info is None: nw_info = network_model.NetworkInfo() else: nw_info = _get_nwinfo_old_skool() macs = [vif['address'] for vif in nw_info] uuids = [instance_ref["uuid"]] bw_usages = db.bw_usage_get_by_uuids(admin_context, uuids, audit_start) bw_usages = [b for b in bw_usages if b.mac in macs] bw = {} for b in bw_usages: label = 'net-name-not-found-%s' % b['mac'] for vif in nw_info: if vif['address'] == b['mac']: label = vif['network']['label'] break bw[label] = dict(bw_in=b.bw_in, bw_out=b.bw_out) return bw def image_meta(system_metadata): """Format image metadata for use in notifications from the instance system metadata. """ image_meta = {} for md_key, md_value in system_metadata.iteritems(): if md_key.startswith('image_'): image_meta[md_key[6:]] = md_value return image_meta def info_from_instance(context, instance_ref, network_info, system_metadata, **kw): """Get detailed instance information for an instance which is common to all notifications. :param network_info: network_info provided if not None :param system_metadata: system_metadata DB entries for the instance, if not None. *NOTE*: Currently unused here in trunk, but needed for potential custom modifications. """ def null_safe_str(s): return str(s) if s else '' def null_safe_isotime(s): if isinstance(s, datetime.datetime): return timeutils.strtime(s) else: return str(s) if s else '' image_ref_url = glance.generate_image_url(instance_ref['image_ref']) instance_type = flavors.extract_flavor(instance_ref) instance_type_name = instance_type.get('name', '') instance_flavorid = instance_type.get('flavorid', '') if system_metadata is None: system_metadata = utils.instance_sys_meta(instance_ref) instance_info = dict( # Owner properties tenant_id=instance_ref['project_id'], user_id=instance_ref['user_id'], # Identity properties 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, instance_type_id=instance_ref['instance_type_id'], instance_flavor_id=instance_flavorid, architecture=instance_ref['architecture'], # Capacity properties memory_mb=instance_ref['memory_mb'], disk_gb=instance_ref['root_gb'] + instance_ref['ephemeral_gb'], vcpus=instance_ref['vcpus'], # Note(dhellmann): This makes the disk_gb value redundant, but # we are keeping it for backwards-compatibility with existing # users of notifications. root_gb=instance_ref['root_gb'], ephemeral_gb=instance_ref['ephemeral_gb'], # Location properties host=instance_ref['host'], node=instance_ref['node'], availability_zone=instance_ref['availability_zone'], # Date properties created_at=str(instance_ref['created_at']), # Terminated and Deleted are slightly different (although being # terminated and not deleted is a transient state), so include # both and let the recipient decide which they want to use. terminated_at=null_safe_isotime(instance_ref.get('terminated_at')), deleted_at=null_safe_isotime(instance_ref.get('deleted_at')), launched_at=null_safe_isotime(instance_ref.get('launched_at')), # Image properties image_ref_url=image_ref_url, os_type=instance_ref['os_type'], kernel_id=instance_ref['kernel_id'], ramdisk_id=instance_ref['ramdisk_id'], # Status properties state=instance_ref['vm_state'], state_description=null_safe_str(instance_ref.get('task_state')), # accessIPs access_ip_v4=instance_ref['access_ip_v4'], access_ip_v6=instance_ref['access_ip_v6'], ) if network_info is not None: fixed_ips = [] for vif in network_info: for ip in vif.fixed_ips(): ip["label"] = vif["network"]["label"] fixed_ips.append(ip) instance_info['fixed_ips'] = fixed_ips # add image metadata image_meta_props = image_meta(system_metadata) instance_info["image_meta"] = image_meta_props # add instance metadata instance_info['metadata'] = utils.instance_meta(instance_ref) instance_info.update(kw) return instance_info nova-2014.1/nova/rpc.py0000664000175400017540000001035012323721477016012 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. __all__ = [ 'init', 'cleanup', 'set_defaults', 'add_extra_exmods', 'clear_extra_exmods', 'get_allowed_exmods', 'RequestContextSerializer', 'get_client', 'get_server', 'get_notifier', 'TRANSPORT_ALIASES', ] from oslo.config import cfg from oslo import messaging import nova.context import nova.exception from nova.openstack.common import jsonutils CONF = cfg.CONF TRANSPORT = None NOTIFIER = None ALLOWED_EXMODS = [ nova.exception.__name__, ] EXTRA_EXMODS = [] # NOTE(markmc): The nova.openstack.common.rpc entries are for backwards compat # with Havana rpc_backend configuration values. The nova.rpc entries are for # compat with Essex values. TRANSPORT_ALIASES = { 'nova.openstack.common.rpc.impl_kombu': 'rabbit', 'nova.openstack.common.rpc.impl_qpid': 'qpid', 'nova.openstack.common.rpc.impl_zmq': 'zmq', 'nova.rpc.impl_kombu': 'rabbit', 'nova.rpc.impl_qpid': 'qpid', 'nova.rpc.impl_zmq': 'zmq', } def init(conf): global TRANSPORT, NOTIFIER exmods = get_allowed_exmods() TRANSPORT = messaging.get_transport(conf, allowed_remote_exmods=exmods, aliases=TRANSPORT_ALIASES) serializer = RequestContextSerializer(JsonPayloadSerializer()) NOTIFIER = messaging.Notifier(TRANSPORT, serializer=serializer) def cleanup(): global TRANSPORT, NOTIFIER assert TRANSPORT is not None assert NOTIFIER is not None TRANSPORT.cleanup() TRANSPORT = NOTIFIER = None def set_defaults(control_exchange): messaging.set_transport_defaults(control_exchange) def add_extra_exmods(*args): EXTRA_EXMODS.extend(args) def clear_extra_exmods(): del EXTRA_EXMODS[:] def get_allowed_exmods(): return ALLOWED_EXMODS + EXTRA_EXMODS class JsonPayloadSerializer(messaging.NoOpSerializer): @staticmethod def serialize_entity(context, entity): return jsonutils.to_primitive(entity, convert_instances=True) class RequestContextSerializer(messaging.Serializer): def __init__(self, base): self._base = base def serialize_entity(self, context, entity): if not self._base: return entity return self._base.serialize_entity(context, entity) def deserialize_entity(self, context, entity): if not self._base: return entity return self._base.deserialize_entity(context, entity) def serialize_context(self, context): return context.to_dict() def deserialize_context(self, context): return nova.context.RequestContext.from_dict(context) def get_transport_url(url_str=None): return messaging.TransportURL.parse(CONF, url_str, TRANSPORT_ALIASES) def get_client(target, version_cap=None, serializer=None): assert TRANSPORT is not None serializer = RequestContextSerializer(serializer) return messaging.RPCClient(TRANSPORT, target, version_cap=version_cap, serializer=serializer) def get_server(target, endpoints, serializer=None): assert TRANSPORT is not None serializer = RequestContextSerializer(serializer) return messaging.get_rpc_server(TRANSPORT, target, endpoints, executor='eventlet', serializer=serializer) def get_notifier(service=None, host=None, publisher_id=None): assert NOTIFIER is not None if not publisher_id: publisher_id = "%s.%s" % (service, host or CONF.host) return NOTIFIER.prepare(publisher_id=publisher_id) nova-2014.1/nova/wsgi.py0000664000175400017540000004263312323721477016210 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Utility methods for working with WSGI servers.""" from __future__ import print_function import os.path import socket import sys import eventlet import eventlet.wsgi import greenlet from oslo.config import cfg from paste import deploy import routes.middleware import ssl import webob.dec import webob.exc from nova import exception from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging wsgi_opts = [ cfg.StrOpt('api_paste_config', default="api-paste.ini", help='File name for the paste.deploy config for nova-api'), cfg.StrOpt('wsgi_log_format', default='%(client_ip)s "%(request_line)s" status: %(status_code)s' ' len: %(body_length)s time: %(wall_seconds).7f', help='A python format string that is used as the template to ' 'generate log lines. The following values can be formatted ' 'into it: client_ip, date_time, request_line, status_code, ' 'body_length, wall_seconds.'), cfg.StrOpt('ssl_ca_file', help="CA certificate file to use to verify " "connecting clients"), cfg.StrOpt('ssl_cert_file', help="SSL certificate of API server"), cfg.StrOpt('ssl_key_file', help="SSL private key of API server"), cfg.IntOpt('tcp_keepidle', default=600, help="Sets the value of TCP_KEEPIDLE in seconds for each " "server socket. Not supported on OS X."), cfg.IntOpt('wsgi_default_pool_size', default=1000, help="Size of the pool of greenthreads used by wsgi"), cfg.IntOpt('max_header_line', default=16384, help="Maximum line size of message headers to be accepted. " "max_header_line may need to be increased when using " "large tokens (typically those generated by the " "Keystone v3 API with big service catalogs)."), ] CONF = cfg.CONF CONF.register_opts(wsgi_opts) LOG = logging.getLogger(__name__) class Server(object): """Server class to manage a WSGI server, serving a WSGI application.""" default_pool_size = CONF.wsgi_default_pool_size def __init__(self, name, app, host='0.0.0.0', port=0, pool_size=None, protocol=eventlet.wsgi.HttpProtocol, backlog=128, use_ssl=False, max_url_len=None): """Initialize, but do not start, a WSGI server. :param name: Pretty name for logging. :param app: The WSGI application to serve. :param host: IP address to serve the application. :param port: Port number to server the application. :param pool_size: Maximum number of eventlets to spawn concurrently. :param backlog: Maximum number of queued connections. :param max_url_len: Maximum length of permitted URLs. :returns: None :raises: nova.exception.InvalidInput """ # Allow operators to customize http requests max header line size. eventlet.wsgi.MAX_HEADER_LINE = CONF.max_header_line self.name = name self.app = app self._server = None self._protocol = protocol self._pool = eventlet.GreenPool(pool_size or self.default_pool_size) self._logger = logging.getLogger("nova.%s.wsgi.server" % self.name) self._wsgi_logger = logging.WritableLogger(self._logger) self._use_ssl = use_ssl self._max_url_len = max_url_len if backlog < 1: raise exception.InvalidInput( reason='The backlog must be more than 1') bind_addr = (host, port) # TODO(dims): eventlet's green dns/socket module does not actually # support IPv6 in getaddrinfo(). We need to get around this in the # future or monitor upstream for a fix try: info = socket.getaddrinfo(bind_addr[0], bind_addr[1], socket.AF_UNSPEC, socket.SOCK_STREAM)[0] family = info[0] bind_addr = info[-1] except Exception: family = socket.AF_INET try: self._socket = eventlet.listen(bind_addr, family, backlog=backlog) except EnvironmentError: LOG.error(_("Could not bind to %(host)s:%(port)s"), {'host': host, 'port': port}) raise (self.host, self.port) = self._socket.getsockname()[0:2] LOG.info(_("%(name)s listening on %(host)s:%(port)s") % self.__dict__) def start(self): """Start serving a WSGI application. :returns: None """ if self._use_ssl: try: ca_file = CONF.ssl_ca_file cert_file = CONF.ssl_cert_file key_file = CONF.ssl_key_file if cert_file and not os.path.exists(cert_file): raise RuntimeError( _("Unable to find cert_file : %s") % cert_file) if ca_file and not os.path.exists(ca_file): raise RuntimeError( _("Unable to find ca_file : %s") % ca_file) if key_file and not os.path.exists(key_file): raise RuntimeError( _("Unable to find key_file : %s") % key_file) if self._use_ssl and (not cert_file or not key_file): raise RuntimeError( _("When running server in SSL mode, you must " "specify both a cert_file and key_file " "option value in your configuration file")) ssl_kwargs = { 'server_side': True, 'certfile': cert_file, 'keyfile': key_file, 'cert_reqs': ssl.CERT_NONE, } if CONF.ssl_ca_file: ssl_kwargs['ca_certs'] = ca_file ssl_kwargs['cert_reqs'] = ssl.CERT_REQUIRED self._socket = eventlet.wrap_ssl(self._socket, **ssl_kwargs) self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # sockets can hang around forever without keepalive self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # This option isn't available in the OS X version of eventlet if hasattr(socket, 'TCP_KEEPIDLE'): self._socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, CONF.tcp_keepidle) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Failed to start %(name)s on %(host)s" ":%(port)s with SSL support") % self.__dict__) wsgi_kwargs = { 'func': eventlet.wsgi.server, 'sock': self._socket, 'site': self.app, 'protocol': self._protocol, 'custom_pool': self._pool, 'log': self._wsgi_logger, 'log_format': CONF.wsgi_log_format, 'debug': False } if self._max_url_len: wsgi_kwargs['url_length_limit'] = self._max_url_len self._server = eventlet.spawn(**wsgi_kwargs) def stop(self): """Stop this server. This is not a very nice action, as currently the method by which a server is stopped is by killing its eventlet. :returns: None """ LOG.info(_("Stopping WSGI server.")) if self._server is not None: # Resize pool to stop new requests from being processed self._pool.resize(0) self._server.kill() def wait(self): """Block, until the server has stopped. Waits on the server's eventlet to finish, then returns. :returns: None """ try: if self._server is not None: self._server.wait() except greenlet.GreenletExit: LOG.info(_("WSGI server has stopped.")) class Request(webob.Request): pass class Application(object): """Base WSGI application wrapper. Subclasses need to implement __call__.""" @classmethod def factory(cls, global_config, **local_config): """Used for paste app factories in paste.deploy config files. Any local configuration (that is, values under the [app:APPNAME] section of the paste config) will be passed into the `__init__` method as kwargs. A hypothetical configuration would look like: [app:wadl] latest_version = 1.3 paste.app_factory = nova.api.fancy_api:Wadl.factory which would result in a call to the `Wadl` class as import nova.api.fancy_api fancy_api.Wadl(latest_version='1.3') You could of course re-implement the `factory` method in subclasses, but using the kwarg passing it shouldn't be necessary. """ return cls(**local_config) def __call__(self, environ, start_response): r"""Subclasses will probably want to implement __call__ like this: @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): # Any of the following objects work as responses: # Option 1: simple string res = 'message\n' # Option 2: a nicely formatted HTTP exception page res = exc.HTTPForbidden(explanation='Nice try') # Option 3: a webob Response object (in case you need to play with # headers, or you want to be treated like an iterable, or or or) res = Response(); res.app_iter = open('somefile') # Option 4: any wsgi app to be run next res = self.application # Option 5: you can get a Response object for a wsgi app, too, to # play with headers etc res = req.get_response(self.application) # You can then just return your response... return res # ... or set req.response and return None. req.response = res See the end of http://pythonpaste.org/webob/modules/dec.html for more info. """ raise NotImplementedError(_('You must implement __call__')) class Middleware(Application): """Base WSGI middleware. These classes require an application to be initialized that will be called next. By default the middleware will simply call its wrapped app, or you can override __call__ to customize its behavior. """ @classmethod def factory(cls, global_config, **local_config): """Used for paste app factories in paste.deploy config files. Any local configuration (that is, values under the [filter:APPNAME] section of the paste config) will be passed into the `__init__` method as kwargs. A hypothetical configuration would look like: [filter:analytics] redis_host = 127.0.0.1 paste.filter_factory = nova.api.analytics:Analytics.factory which would result in a call to the `Analytics` class as import nova.api.analytics analytics.Analytics(app_from_paste, redis_host='127.0.0.1') You could of course re-implement the `factory` method in subclasses, but using the kwarg passing it shouldn't be necessary. """ def _factory(app): return cls(app, **local_config) return _factory def __init__(self, application): self.application = application def process_request(self, req): """Called on each request. If this returns None, the next application down the stack will be executed. If it returns a response then that response will be returned and execution will stop here. """ return None def process_response(self, response): """Do whatever you'd like to the response.""" return response @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): response = self.process_request(req) if response: return response response = req.get_response(self.application) return self.process_response(response) class Debug(Middleware): """Helper class for debugging a WSGI application. Can be inserted into any WSGI application chain to get information about the request and response. """ @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): print(('*' * 40) + ' REQUEST ENVIRON') for key, value in req.environ.items(): print(key, '=', value) print() resp = req.get_response(self.application) print(('*' * 40) + ' RESPONSE HEADERS') for (key, value) in resp.headers.iteritems(): print(key, '=', value) print() resp.app_iter = self.print_generator(resp.app_iter) return resp @staticmethod def print_generator(app_iter): """Iterator that prints the contents of a wrapper string.""" print(('*' * 40) + ' BODY') for part in app_iter: sys.stdout.write(part) sys.stdout.flush() yield part print() class Router(object): """WSGI middleware that maps incoming requests to WSGI apps.""" def __init__(self, mapper): """Create a router for the given routes.Mapper. Each route in `mapper` must specify a 'controller', which is a WSGI app to call. You'll probably want to specify an 'action' as well and have your controller be an object that can route the request to the action-specific method. Examples: mapper = routes.Mapper() sc = ServerController() # Explicit mapping of one route to a controller+action mapper.connect(None, '/svrlist', controller=sc, action='list') # Actions are all implicitly defined mapper.resource('server', 'servers', controller=sc) # Pointing to an arbitrary WSGI app. You can specify the # {path_info:.*} parameter so the target app can be handed just that # section of the URL. mapper.connect(None, '/v1.0/{path_info:.*}', controller=BlogApp()) """ self.map = mapper self._router = routes.middleware.RoutesMiddleware(self._dispatch, self.map) @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): """Route the incoming request to a controller based on self.map. If no match, return a 404. """ return self._router @staticmethod @webob.dec.wsgify(RequestClass=Request) def _dispatch(req): """Dispatch the request to the appropriate controller. Called by self._router after matching the incoming request to a route and putting the information into req.environ. Either returns 404 or the routed WSGI app's response. """ match = req.environ['wsgiorg.routing_args'][1] if not match: return webob.exc.HTTPNotFound() app = match['controller'] return app class Loader(object): """Used to load WSGI applications from paste configurations.""" def __init__(self, config_path=None): """Initialize the loader, and attempt to find the config. :param config_path: Full or relative path to the paste config. :returns: None """ self.config_path = None config_path = config_path or CONF.api_paste_config if not os.path.isabs(config_path): self.config_path = CONF.find_file(config_path) elif os.path.exists(config_path): self.config_path = config_path if not self.config_path: raise exception.ConfigNotFound(path=config_path) def load_app(self, name): """Return the paste URLMap wrapped WSGI application. :param name: Name of the application to load. :returns: Paste URLMap object wrapping the requested application. :raises: `nova.exception.PasteAppNotFound` """ try: LOG.debug(_("Loading app %(name)s from %(path)s") % {'name': name, 'path': self.config_path}) return deploy.loadapp("config:%s" % self.config_path, name=name) except LookupError as err: LOG.error(err) raise exception.PasteAppNotFound(name=name, path=self.config_path) nova-2014.1/nova/hooks.py0000664000175400017540000000662112323721476016356 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Decorator and config option definitions for adding custom code (hooks) around callables. Any method may have the 'add_hook' decorator applied, which yields the ability to invoke Hook objects before or after the method. (i.e. pre and post) Hook objects are loaded by HookLoaders. Each named hook may invoke multiple Hooks. Example Hook object: class MyHook(object): def pre(self, *args, **kwargs): # do stuff before wrapped callable runs def post(self, rv, *args, **kwargs): # do stuff after wrapped callable runs Example Hook object with function parameters: class MyHookWithFunction(object): def pre(self, f, *args, **kwargs): # do stuff with wrapped function info def post(self, f, *args, **kwards): # do stuff with wrapped function info """ import functools import stevedore from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) NS = 'nova.hooks' _HOOKS = {} # hook name => hook manager class HookManager(stevedore.hook.HookManager): def __init__(self, name): # invoke_on_load creates an instance of the Hook class super(HookManager, self).__init__(NS, name, invoke_on_load=True) def run_pre(self, name, args, kwargs, f=None): for e in self.extensions: obj = e.obj pre = getattr(obj, 'pre', None) if pre: LOG.debug(_("Running %(name)s pre-hook: %(obj)s"), {'name': name, 'obj': obj}) if f: pre(f, *args, **kwargs) else: pre(*args, **kwargs) def run_post(self, name, rv, args, kwargs, f=None): for e in reversed(self.extensions): obj = e.obj post = getattr(obj, 'post', None) if post: LOG.debug(_("Running %(name)s post-hook: %(obj)s"), {'name': name, 'obj': obj}) if f: post(f, rv, *args, **kwargs) else: post(rv, *args, **kwargs) def add_hook(name, pass_function=False): """Execute optional pre and post methods around the decorated function. This is useful for customization around callables. """ def outer(f): @functools.wraps(f) def inner(*args, **kwargs): manager = _HOOKS.setdefault(name, HookManager(name)) function = None if pass_function: function = f manager.run_pre(name, args, kwargs, f=function) rv = f(*args, **kwargs) manager.run_post(name, rv, args, kwargs, f=function) return rv return inner return outer def reset(): """Clear loaded hooks.""" _HOOKS.clear() nova-2014.1/nova/debugger.py0000664000175400017540000000565612323721476017026 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # NOTE(markmc): this is imported before monkey patching in nova.cmd # so we avoid extra imports here import sys def enabled(): return ('--remote_debug-host' in sys.argv and '--remote_debug-port' in sys.argv) def register_cli_opts(): from oslo.config import cfg cli_opts = [ cfg.StrOpt('host', help='Debug host (IP or name) to connect. Note ' 'that using the remote debug option changes how ' 'Nova uses the eventlet library to support async IO. ' 'This could result in failures that do not occur ' 'under normal operation. Use at your own risk.'), cfg.IntOpt('port', help='Debug port to connect. Note ' 'that using the remote debug option changes how ' 'Nova uses the eventlet library to support async IO. ' 'This could result in failures that do not occur ' 'under normal operation. Use at your own risk.') ] cfg.CONF.register_cli_opts(cli_opts, 'remote_debug') def init(): from oslo.config import cfg CONF = cfg.CONF # NOTE(markmc): gracefully handle the CLI options not being registered if 'remote_debug' not in CONF: return if not (CONF.remote_debug.host and CONF.remote_debug.port): return from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) LOG.debug(_('Listening on %(host)s:%(port)s for debug connection'), {'host': CONF.remote_debug.host, 'port': CONF.remote_debug.port}) from pydev import pydevd pydevd.settrace(host=CONF.remote_debug.host, port=CONF.remote_debug.port, stdoutToServer=False, stderrToServer=False) LOG.warn(_('WARNING: Using the remote debug option changes how ' 'Nova uses the eventlet library to support async IO. This ' 'could result in failures that do not occur under normal ' 'operation. Use at your own risk.')) nova-2014.1/nova/storage/0000775000175400017540000000000012323722546016317 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/storage/linuxscsi.py0000664000175400017540000001116712323721477020722 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # 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. """Generic linux scsi subsystem utilities.""" from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import loopingcall from nova.openstack.common import processutils from nova import utils LOG = logging.getLogger(__name__) def echo_scsi_command(path, content): """Used to echo strings to scsi subsystem.""" args = ["-a", path] kwargs = dict(process_input=content, run_as_root=True) utils.execute('tee', *args, **kwargs) def rescan_hosts(hbas): for hba in hbas: echo_scsi_command("/sys/class/scsi_host/%s/scan" % hba['host_device'], "- - -") def get_device_list(): (out, err) = utils.execute('sginfo', '-r', run_as_root=True) devices = [] if out: line = out.strip() devices = line.split(" ") return devices def get_device_info(device): (out, err) = utils.execute('sg_scan', device, run_as_root=True) dev_info = {'device': device, 'host': None, 'channel': None, 'id': None, 'lun': None} if out: line = out.strip() line = line.replace(device + ": ", "") info = line.split(" ") for item in info: if '=' in item: pair = item.split('=') dev_info[pair[0]] = pair[1] elif 'scsi' in item: dev_info['host'] = item.replace('scsi', '') return dev_info def _wait_for_remove(device, tries): tries = tries + 1 LOG.debug(_("Trying (%(tries)s) to remove device %(device)s") % {'tries': tries, 'device': device["device"]}) path = "/sys/bus/scsi/drivers/sd/%s:%s:%s:%s/delete" echo_scsi_command(path % (device["host"], device["channel"], device["id"], device["lun"]), "1") devices = get_device_list() if device["device"] not in devices: raise loopingcall.LoopingCallDone() def remove_device(device): tries = 0 timer = loopingcall.FixedIntervalLoopingCall(_wait_for_remove, device, tries) timer.start(interval=2).wait() timer.stop() def find_multipath_device(device): """Try and discover the multipath device for a volume.""" mdev = None devices = [] out = None try: (out, err) = utils.execute('multipath', '-l', device, run_as_root=True) except processutils.ProcessExecutionError as exc: LOG.warn(_("Multipath call failed exit (%(code)s)") % {'code': exc.exit_code}) return None if out: lines = out.strip() lines = lines.split("\n") if lines: line = lines[0] info = line.split(" ") # device line output is different depending # on /etc/multipath.conf settings. if info[1][:2] == "dm": mdev = "/dev/%s" % info[1] mdev_id = info[0] elif info[2][:2] == "dm": mdev = "/dev/%s" % info[2] mdev_id = info[1].replace('(', '') mdev_id = mdev_id.replace(')', '') if mdev is None: LOG.warn(_("Couldn't find multipath device %s"), line) return None LOG.debug(_("Found multipath device = %s"), mdev) device_lines = lines[3:] for dev_line in device_lines: if dev_line.find("policy") != -1: continue dev_line = dev_line.lstrip(' |-`') dev_info = dev_line.split() address = dev_info[0].split(":") dev = {'device': '/dev/%s' % dev_info[1], 'host': address[0], 'channel': address[1], 'id': address[2], 'lun': address[3] } devices.append(dev) if mdev is not None: info = {"device": mdev, "id": mdev_id, "devices": devices} return info return None nova-2014.1/nova/storage/__init__.py0000664000175400017540000000115112323721477020430 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Hewlett-Packard, 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. nova-2014.1/nova/tests/0000775000175400017540000000000012323722546016015 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/test_versions.py0000664000175400017540000000402612323721477021302 0ustar jenkinsjenkins00000000000000# Copyright 2011 Ken Pepple # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import __builtin__ import StringIO from oslo.config import cfg from nova import test from nova import version class VersionTestCase(test.NoDBTestCase): """Test cases for Versions code.""" def test_version_string_with_package_is_good(self): """Ensure uninstalled code get version string.""" self.stubs.Set(version.version_info, 'version', '5.5.5.5') self.stubs.Set(version, 'NOVA_PACKAGE', 'g9ec3421') self.assertEqual("5.5.5.5-g9ec3421", version.version_string_with_package()) def test_release_file(self): version.loaded = False real_open = __builtin__.open real_find_file = cfg.CONF.find_file def fake_find_file(self, name): if name == "release": return "/etc/nova/release" return real_find_file(self, name) def fake_open(path, *args, **kwargs): if path == "/etc/nova/release": data = """[Nova] vendor = ACME Corporation product = ACME Nova package = 1337""" return StringIO.StringIO(data) return real_open(path, *args, **kwargs) self.stubs.Set(__builtin__, 'open', fake_open) self.stubs.Set(cfg.ConfigOpts, 'find_file', fake_find_file) self.assertEqual(version.vendor_string(), "ACME Corporation") self.assertEqual(version.product_string(), "ACME Nova") self.assertEqual(version.package_string(), "1337") nova-2014.1/nova/tests/test_cinder.py0000664000175400017540000001676712323721477020715 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import six.moves.urllib.parse as urlparse from cinderclient import exceptions as cinder_exception from nova import context from nova import exception from nova.volume import cinder from nova import test def _stub_volume(**kwargs): volume = { 'display_name': None, 'display_description': None, "attachments": [], "availability_zone": "cinder", "created_at": "2012-09-10T00:00:00.000000", "id": '00000000-0000-0000-0000-000000000000', "metadata": {}, "size": 1, "snapshot_id": None, "status": "available", "volume_type": "None", } volume.update(kwargs) return volume _image_metadata = { 'kernel_id': 'fake', 'ramdisk_id': 'fake' } class FakeHTTPClient(cinder.cinder_client.client.HTTPClient): def _cs_request(self, url, method, **kwargs): # Check that certain things are called correctly if method in ['GET', 'DELETE']: assert 'body' not in kwargs elif method == 'PUT': assert 'body' in kwargs # Call the method args = urlparse.parse_qsl(urlparse.urlparse(url)[4]) kwargs.update(args) munged_url = url.rsplit('?', 1)[0] munged_url = munged_url.strip('/').replace('/', '_').replace('.', '_') munged_url = munged_url.replace('-', '_') callback = "%s_%s" % (method.lower(), munged_url) if not hasattr(self, callback): raise AssertionError('Called unknown API method: %s %s, ' 'expected fakes method name: %s' % (method, url, callback)) # Note the call self.callstack.append((method, url, kwargs.get('body', None))) status, body = getattr(self, callback)(**kwargs) if hasattr(status, 'items'): return status, body else: return {"status": status}, body def get_volumes_1234(self, **kw): volume = {'volume': _stub_volume(id='1234')} return (200, volume) def get_volumes_nonexisting(self, **kw): raise cinder_exception.NotFound(code=404, message='Resource not found') def get_volumes_5678(self, **kw): """Volume with image metadata.""" volume = {'volume': _stub_volume(id='1234', volume_image_metadata=_image_metadata) } return (200, volume) class FakeCinderClient(cinder.cinder_client.Client): def __init__(self, username, password, project_id=None, auth_url=None, insecure=False, retries=None, cacert=None): super(FakeCinderClient, self).__init__(username, password, project_id=project_id, auth_url=auth_url, insecure=insecure, retries=retries, cacert=cacert) self.client = FakeHTTPClient(username, password, project_id, auth_url, insecure=insecure, retries=retries, cacert=cacert) # keep a ref to the clients callstack for factory's assert_called self.callstack = self.client.callstack = [] class FakeClientFactory(object): """Keep a ref to the FakeClient since volume.api.cinder throws it away.""" def __call__(self, *args, **kwargs): self.client = FakeCinderClient(*args, **kwargs) return self.client def assert_called(self, method, url, body=None, pos=-1): expected = (method, url) called = self.client.callstack[pos][0:2] assert self.client.callstack, ("Expected %s %s but no calls " "were made." % expected) assert expected == called, 'Expected %s %s; got %s %s' % (expected + called) if body is not None: assert self.client.callstack[pos][2] == body class CinderTestCase(test.NoDBTestCase): """Test case for cinder volume api.""" def setUp(self): super(CinderTestCase, self).setUp() self.fake_client_factory = FakeClientFactory() self.stubs.Set(cinder.cinder_client, "Client", self.fake_client_factory) self.api = cinder.API() catalog = [{ "type": "volume", "name": "cinder", "endpoints": [{"publicURL": "http://localhost:8776/v1/project_id"}] }] self.context = context.RequestContext('username', 'project_id', service_catalog=catalog) def assert_called(self, *args, **kwargs): self.fake_client_factory.assert_called(*args, **kwargs) def test_context_with_catalog(self): self.api.get(self.context, '1234') self.assert_called('GET', '/volumes/1234') self.assertEqual( self.fake_client_factory.client.client.management_url, 'http://localhost:8776/v1/project_id') def test_cinder_endpoint_template(self): self.flags( cinder_endpoint_template='http://other_host:8776/v1/%(project_id)s' ) self.api.get(self.context, '1234') self.assert_called('GET', '/volumes/1234') self.assertEqual( self.fake_client_factory.client.client.management_url, 'http://other_host:8776/v1/project_id') def test_get_non_existing_volume(self): self.assertRaises(exception.VolumeNotFound, self.api.get, self.context, 'nonexisting') def test_volume_with_image_metadata(self): volume = self.api.get(self.context, '5678') self.assert_called('GET', '/volumes/5678') self.assertIn('volume_image_metadata', volume) self.assertEqual(volume['volume_image_metadata'], _image_metadata) def test_cinder_api_insecure(self): # The True/False negation is awkward, but better for the client # to pass us insecure=True and we check verify_cert == False self.flags(cinder_api_insecure=True) self.api.get(self.context, '1234') self.assert_called('GET', '/volumes/1234') self.assertEqual( self.fake_client_factory.client.client.verify_cert, False) def test_cinder_api_cacert_file(self): cacert = "/etc/ssl/certs/ca-certificates.crt" self.flags(cinder_ca_certificates_file=cacert) self.api.get(self.context, '1234') self.assert_called('GET', '/volumes/1234') self.assertEqual( self.fake_client_factory.client.client.verify_cert, cacert) def test_cinder_http_retries(self): retries = 42 self.flags(cinder_http_retries=retries) self.api.get(self.context, '1234') self.assert_called('GET', '/volumes/1234') self.assertEqual( self.fake_client_factory.client.client.retries, retries) nova-2014.1/nova/tests/test_objectstore.py0000664000175400017540000001326212323721477021757 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Unittets for S3 objectstore clone. """ import boto import os import shutil import tempfile from boto import exception as boto_exception from boto.s3 import connection as s3 from oslo.config import cfg from nova.objectstore import s3server from nova import test from nova import wsgi CONF = cfg.CONF CONF.import_opt('s3_host', 'nova.image.s3') # Create a unique temporary directory. We don't delete after test to # allow checking the contents after running tests. Users and/or tools # running the tests need to remove the tests directories. OSS_TEMPDIR = tempfile.mkdtemp(prefix='test_oss-') # Create bucket/images path os.makedirs(os.path.join(OSS_TEMPDIR, 'images')) os.makedirs(os.path.join(OSS_TEMPDIR, 'buckets')) class S3APITestCase(test.NoDBTestCase): """Test objectstore through S3 API.""" def setUp(self): """Setup users, projects, and start a test server.""" super(S3APITestCase, self).setUp() self.flags(buckets_path=os.path.join(OSS_TEMPDIR, 'buckets'), s3_host='127.0.0.1') shutil.rmtree(CONF.buckets_path) os.mkdir(CONF.buckets_path) router = s3server.S3Application(CONF.buckets_path) self.server = wsgi.Server("S3 Objectstore", router, host=CONF.s3_host, port=0) self.server.start() if not boto.config.has_section('Boto'): boto.config.add_section('Boto') boto.config.set('Boto', 'num_retries', '0') conn = s3.S3Connection(aws_access_key_id='fake', aws_secret_access_key='fake', host=CONF.s3_host, port=self.server.port, is_secure=False, calling_format=s3.OrdinaryCallingFormat()) self.conn = conn def get_http_connection(*args): """Get a new S3 connection, don't attempt to reuse connections.""" return self.conn.new_http_connection(*args) self.conn.get_http_connection = get_http_connection def _ensure_no_buckets(self, buckets): # pylint: disable=C0111 self.assertEqual(len(buckets), 0, "Bucket list was not empty") return True def _ensure_one_bucket(self, buckets, name): # pylint: disable=C0111 self.assertEqual(len(buckets), 1, "Bucket list didn't have exactly one element in it") self.assertEqual(buckets[0].name, name, "Wrong name") return True def test_list_buckets(self): # Make sure we are starting with no buckets. self._ensure_no_buckets(self.conn.get_all_buckets()) def test_create_and_delete_bucket(self): # Test bucket creation and deletion. bucket_name = 'testbucket' self.conn.create_bucket(bucket_name) self._ensure_one_bucket(self.conn.get_all_buckets(), bucket_name) self.conn.delete_bucket(bucket_name) self._ensure_no_buckets(self.conn.get_all_buckets()) def test_create_bucket_and_key_and_delete_key_again(self): # Test key operations on buckets. bucket_name = 'testbucket' key_name = 'somekey' key_contents = 'somekey' b = self.conn.create_bucket(bucket_name) k = b.new_key(key_name) k.set_contents_from_string(key_contents) bucket = self.conn.get_bucket(bucket_name) # make sure the contents are correct key = bucket.get_key(key_name) self.assertEqual(key.get_contents_as_string(), key_contents, "Bad contents") # delete the key key.delete() self._ensure_no_buckets(bucket.get_all_keys()) def test_unknown_bucket(self): # NOTE(unicell): Since Boto v2.25.0, the underlying implementation # of get_bucket method changed from GET to HEAD. # # Prior to v2.25.0, default validate=True fetched a list of keys in the # bucket and raises S3ResponseError. As a side effect of switching to # HEAD request, get_bucket call now generates less error message. # # To keep original semantics, additional get_all_keys call is # suggestted per Boto document. This case tests both validate=False and # validate=True case for completeness. # # http://docs.pythonboto.org/en/latest/releasenotes/v2.25.0.html # http://docs.pythonboto.org/en/latest/s3_tut.html#accessing-a-bucket bucket_name = 'falalala' self.assertRaises(boto_exception.S3ResponseError, self.conn.get_bucket, bucket_name) bucket = self.conn.get_bucket(bucket_name, validate=False) self.assertRaises(boto_exception.S3ResponseError, bucket.get_all_keys, maxkeys=0) def tearDown(self): """Tear down test server.""" self.server.stop() super(S3APITestCase, self).tearDown() nova-2014.1/nova/tests/test_quota.py0000664000175400017540000030154512323721510020555 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from oslo.config import cfg from nova import compute from nova.compute import flavors from nova import context from nova import db from nova.db.sqlalchemy import api as sqa_api from nova.db.sqlalchemy import models as sqa_models from nova import exception from nova.openstack.common import timeutils from nova import quota from nova.scheduler import driver as scheduler_driver from nova.scheduler import rpcapi as scheduler_rpcapi from nova import test import nova.tests.image.fake CONF = cfg.CONF CONF.import_opt('compute_driver', 'nova.virt.driver') class QuotaIntegrationTestCase(test.TestCase): def setUp(self): super(QuotaIntegrationTestCase, self).setUp() self.flags(compute_driver='nova.virt.fake.FakeDriver', quota_instances=2, quota_cores=4, quota_floating_ips=1, network_manager='nova.network.manager.FlatDHCPManager') # Apparently needed by the RPC tests... self.network = self.start_service('network') self.user_id = 'admin' self.project_id = 'admin' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) nova.tests.image.fake.stub_out_image_service(self.stubs) self.compute_api = compute.API() def fake_run_instance(self, ctxt, request_spec, *args): """Stub out the scheduler creating the instance entry.""" instance = scheduler_driver.Scheduler().create_instance_db_entry( context, request_spec, None) return [scheduler_driver.encode_instance(instance)] self.stubs.Set(scheduler_rpcapi.SchedulerAPI, 'run_instance', fake_run_instance) def tearDown(self): super(QuotaIntegrationTestCase, self).tearDown() nova.tests.image.fake.FakeImageService_reset() def _create_instance(self, cores=2): """Create a test instance.""" inst = {} inst['image_id'] = 'cedef40a-ed67-4d10-800e-17455edce175' inst['reservation_id'] = 'r-fakeres' inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['instance_type_id'] = '3' # m1.large inst['vcpus'] = cores return db.instance_create(self.context, inst) def test_too_many_instances(self): instance_uuids = [] for i in range(CONF.quota_instances): instance = self._create_instance() instance_uuids.append(instance['uuid']) inst_type = flavors.get_flavor_by_name('m1.small') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' try: self.compute_api.create(self.context, min_count=1, max_count=1, instance_type=inst_type, image_href=image_uuid) except exception.QuotaError as e: expected_kwargs = {'code': 413, 'resource': 'cores', 'req': 1, 'used': 4, 'allowed': 4, 'overs': 'cores,instances'} self.assertEqual(e.kwargs, expected_kwargs) else: self.fail('Expected QuotaError exception') for instance_uuid in instance_uuids: db.instance_destroy(self.context, instance_uuid) def test_too_many_cores(self): instance = self._create_instance(cores=4) inst_type = flavors.get_flavor_by_name('m1.small') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' try: self.compute_api.create(self.context, min_count=1, max_count=1, instance_type=inst_type, image_href=image_uuid) except exception.QuotaError as e: expected_kwargs = {'code': 413, 'resource': 'cores', 'req': 1, 'used': 4, 'allowed': 4, 'overs': 'cores'} self.assertEqual(e.kwargs, expected_kwargs) else: self.fail('Expected QuotaError exception') db.instance_destroy(self.context, instance['uuid']) def test_many_cores_with_unlimited_quota(self): # Setting cores quota to unlimited: self.flags(quota_cores=-1) instance = self._create_instance(cores=4) inst_type = flavors.get_flavor_by_name('m1.small') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' db.instance_destroy(self.context, instance['uuid']) def test_too_many_addresses(self): address = '192.168.0.100' db.floating_ip_create(context.get_admin_context(), {'address': address, 'project_id': self.project_id}) self.assertRaises(exception.QuotaError, self.network.allocate_floating_ip, self.context, self.project_id) db.floating_ip_destroy(context.get_admin_context(), address) def test_auto_assigned(self): address = '192.168.0.100' db.floating_ip_create(context.get_admin_context(), {'address': address, 'project_id': self.project_id}) # auto allocated addresses should not be counted self.assertRaises(exception.NoMoreFloatingIps, self.network.allocate_floating_ip, self.context, self.project_id, True) db.floating_ip_destroy(context.get_admin_context(), address) def test_too_many_metadata_items(self): metadata = {} for i in range(CONF.quota_metadata_items + 1): metadata['key%s' % i] = 'value%s' % i inst_type = flavors.get_flavor_by_name('m1.small') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' self.assertRaises(exception.QuotaError, self.compute_api.create, self.context, min_count=1, max_count=1, instance_type=inst_type, image_href=image_uuid, metadata=metadata) def _create_with_injected_files(self, files): api = self.compute_api inst_type = flavors.get_flavor_by_name('m1.small') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' api.create(self.context, min_count=1, max_count=1, instance_type=inst_type, image_href=image_uuid, injected_files=files) def test_no_injected_files(self): api = self.compute_api inst_type = flavors.get_flavor_by_name('m1.small') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' api.create(self.context, instance_type=inst_type, image_href=image_uuid) def test_max_injected_files(self): files = [] for i in xrange(CONF.quota_injected_files): files.append(('/my/path%d' % i, 'config = test\n')) self._create_with_injected_files(files) # no QuotaError def test_too_many_injected_files(self): files = [] for i in xrange(CONF.quota_injected_files + 1): files.append(('/my/path%d' % i, 'my\ncontent%d\n' % i)) self.assertRaises(exception.QuotaError, self._create_with_injected_files, files) def test_max_injected_file_content_bytes(self): max = CONF.quota_injected_file_content_bytes content = ''.join(['a' for i in xrange(max)]) files = [('/test/path', content)] self._create_with_injected_files(files) # no QuotaError def test_too_many_injected_file_content_bytes(self): max = CONF.quota_injected_file_content_bytes content = ''.join(['a' for i in xrange(max + 1)]) files = [('/test/path', content)] self.assertRaises(exception.QuotaError, self._create_with_injected_files, files) def test_max_injected_file_path_bytes(self): max = CONF.quota_injected_file_path_bytes path = ''.join(['a' for i in xrange(max)]) files = [(path, 'config = quotatest')] self._create_with_injected_files(files) # no QuotaError def test_too_many_injected_file_path_bytes(self): max = CONF.quota_injected_file_path_bytes path = ''.join(['a' for i in xrange(max + 1)]) files = [(path, 'config = quotatest')] self.assertRaises(exception.QuotaError, self._create_with_injected_files, files) def test_reservation_expire(self): self.useFixture(test.TimeOverride()) def assertInstancesReserved(reserved): result = quota.QUOTAS.get_project_quotas(self.context, self.context.project_id) self.assertEqual(result['instances']['reserved'], reserved) quota.QUOTAS.reserve(self.context, expire=60, instances=2) assertInstancesReserved(2) timeutils.advance_time_seconds(80) quota.QUOTAS.expire(self.context) assertInstancesReserved(0) class FakeContext(object): def __init__(self, project_id, quota_class): self.is_admin = False self.user_id = 'fake_user' self.project_id = project_id self.quota_class = quota_class self.read_deleted = 'no' def elevated(self): elevated = self.__class__(self.project_id, self.quota_class) elevated.is_admin = True return elevated class FakeDriver(object): def __init__(self, by_project=None, by_user=None, by_class=None, reservations=None): self.called = [] self.by_project = by_project or {} self.by_user = by_user or {} self.by_class = by_class or {} self.reservations = reservations or [] def get_by_project_and_user(self, context, project_id, user_id, resource): self.called.append(('get_by_project_and_user', context, project_id, user_id, resource)) try: return self.by_user[user_id][resource] except KeyError: raise exception.ProjectUserQuotaNotFound(project_id=project_id, user_id=user_id) def get_by_project(self, context, project_id, resource): self.called.append(('get_by_project', context, project_id, resource)) try: return self.by_project[project_id][resource] except KeyError: raise exception.ProjectQuotaNotFound(project_id=project_id) def get_by_class(self, context, quota_class, resource): self.called.append(('get_by_class', context, quota_class, resource)) try: return self.by_class[quota_class][resource] except KeyError: raise exception.QuotaClassNotFound(class_name=quota_class) def get_defaults(self, context, resources): self.called.append(('get_defaults', context, resources)) return resources def get_class_quotas(self, context, resources, quota_class, defaults=True): self.called.append(('get_class_quotas', context, resources, quota_class, defaults)) return resources def get_user_quotas(self, context, resources, project_id, user_id, quota_class=None, defaults=True, usages=True): self.called.append(('get_user_quotas', context, resources, project_id, user_id, quota_class, defaults, usages)) return resources def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=True, remains=False): self.called.append(('get_project_quotas', context, resources, project_id, quota_class, defaults, usages, remains)) return resources def limit_check(self, context, resources, values, project_id=None, user_id=None): self.called.append(('limit_check', context, resources, values, project_id, user_id)) def reserve(self, context, resources, deltas, expire=None, project_id=None, user_id=None): self.called.append(('reserve', context, resources, deltas, expire, project_id, user_id)) return self.reservations def commit(self, context, reservations, project_id=None, user_id=None): self.called.append(('commit', context, reservations, project_id, user_id)) def rollback(self, context, reservations, project_id=None, user_id=None): self.called.append(('rollback', context, reservations, project_id, user_id)) def usage_reset(self, context, resources): self.called.append(('usage_reset', context, resources)) def destroy_all_by_project_and_user(self, context, project_id, user_id): self.called.append(('destroy_all_by_project_and_user', context, project_id, user_id)) def destroy_all_by_project(self, context, project_id): self.called.append(('destroy_all_by_project', context, project_id)) def expire(self, context): self.called.append(('expire', context)) class BaseResourceTestCase(test.TestCase): def test_no_flag(self): resource = quota.BaseResource('test_resource') self.assertEqual(resource.name, 'test_resource') self.assertIsNone(resource.flag) self.assertEqual(resource.default, -1) def test_with_flag(self): # We know this flag exists, so use it... self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') self.assertEqual(resource.name, 'test_resource') self.assertEqual(resource.flag, 'quota_instances') self.assertEqual(resource.default, 10) def test_with_flag_no_quota(self): self.flags(quota_instances=-1) resource = quota.BaseResource('test_resource', 'quota_instances') self.assertEqual(resource.name, 'test_resource') self.assertEqual(resource.flag, 'quota_instances') self.assertEqual(resource.default, -1) def test_quota_no_project_no_class(self): self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') driver = FakeDriver() context = FakeContext(None, None) quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 10) def test_quota_with_project_no_class(self): self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') driver = FakeDriver(by_project=dict( test_project=dict(test_resource=15), )) context = FakeContext('test_project', None) quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 15) def test_quota_no_project_with_class(self): self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') driver = FakeDriver(by_class=dict( test_class=dict(test_resource=20), )) context = FakeContext(None, 'test_class') quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 20) def test_quota_with_project_with_class(self): self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') driver = FakeDriver(by_project=dict( test_project=dict(test_resource=15), ), by_class=dict( test_class=dict(test_resource=20), )) context = FakeContext('test_project', 'test_class') quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 15) def test_quota_override_project_with_class(self): self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') driver = FakeDriver(by_project=dict( test_project=dict(test_resource=15), override_project=dict(test_resource=20), )) context = FakeContext('test_project', 'test_class') quota_value = resource.quota(driver, context, project_id='override_project') self.assertEqual(quota_value, 20) def test_quota_with_project_override_class(self): self.flags(quota_instances=10) resource = quota.BaseResource('test_resource', 'quota_instances') driver = FakeDriver(by_class=dict( test_class=dict(test_resource=15), override_class=dict(test_resource=20), )) context = FakeContext('test_project', 'test_class') quota_value = resource.quota(driver, context, quota_class='override_class') self.assertEqual(quota_value, 20) class QuotaEngineTestCase(test.TestCase): def test_init(self): quota_obj = quota.QuotaEngine() self.assertEqual(quota_obj._resources, {}) self.assertIsInstance(quota_obj._driver, quota.DbQuotaDriver) def test_init_override_string(self): quota_obj = quota.QuotaEngine( quota_driver_class='nova.tests.test_quota.FakeDriver') self.assertEqual(quota_obj._resources, {}) self.assertIsInstance(quota_obj._driver, FakeDriver) def test_init_override_obj(self): quota_obj = quota.QuotaEngine(quota_driver_class=FakeDriver) self.assertEqual(quota_obj._resources, {}) self.assertEqual(quota_obj._driver, FakeDriver) def test_register_resource(self): quota_obj = quota.QuotaEngine() resource = quota.AbsoluteResource('test_resource') quota_obj.register_resource(resource) self.assertEqual(quota_obj._resources, dict(test_resource=resource)) def test_register_resources(self): quota_obj = quota.QuotaEngine() resources = [ quota.AbsoluteResource('test_resource1'), quota.AbsoluteResource('test_resource2'), quota.AbsoluteResource('test_resource3'), ] quota_obj.register_resources(resources) self.assertEqual(quota_obj._resources, dict( test_resource1=resources[0], test_resource2=resources[1], test_resource3=resources[2], )) def test_get_by_project_and_user(self): context = FakeContext('test_project', 'test_class') driver = FakeDriver(by_user=dict( fake_user=dict(test_resource=42))) quota_obj = quota.QuotaEngine(quota_driver_class=driver) result = quota_obj.get_by_project_and_user(context, 'test_project', 'fake_user', 'test_resource') self.assertEqual(driver.called, [ ('get_by_project_and_user', context, 'test_project', 'fake_user', 'test_resource'), ]) self.assertEqual(result, 42) def test_get_by_project(self): context = FakeContext('test_project', 'test_class') driver = FakeDriver(by_project=dict( test_project=dict(test_resource=42))) quota_obj = quota.QuotaEngine(quota_driver_class=driver) result = quota_obj.get_by_project(context, 'test_project', 'test_resource') self.assertEqual(driver.called, [ ('get_by_project', context, 'test_project', 'test_resource'), ]) self.assertEqual(result, 42) def test_get_by_class(self): context = FakeContext('test_project', 'test_class') driver = FakeDriver(by_class=dict( test_class=dict(test_resource=42))) quota_obj = quota.QuotaEngine(quota_driver_class=driver) result = quota_obj.get_by_class(context, 'test_class', 'test_resource') self.assertEqual(driver.called, [ ('get_by_class', context, 'test_class', 'test_resource'), ]) self.assertEqual(result, 42) def _make_quota_obj(self, driver): quota_obj = quota.QuotaEngine(quota_driver_class=driver) resources = [ quota.AbsoluteResource('test_resource4'), quota.AbsoluteResource('test_resource3'), quota.AbsoluteResource('test_resource2'), quota.AbsoluteResource('test_resource1'), ] quota_obj.register_resources(resources) return quota_obj def test_get_defaults(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result = quota_obj.get_defaults(context) self.assertEqual(driver.called, [ ('get_defaults', context, quota_obj._resources), ]) self.assertEqual(result, quota_obj._resources) def test_get_class_quotas(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result1 = quota_obj.get_class_quotas(context, 'test_class') result2 = quota_obj.get_class_quotas(context, 'test_class', False) self.assertEqual(driver.called, [ ('get_class_quotas', context, quota_obj._resources, 'test_class', True), ('get_class_quotas', context, quota_obj._resources, 'test_class', False), ]) self.assertEqual(result1, quota_obj._resources) self.assertEqual(result2, quota_obj._resources) def test_get_user_quotas(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result1 = quota_obj.get_user_quotas(context, 'test_project', 'fake_user') result2 = quota_obj.get_user_quotas(context, 'test_project', 'fake_user', quota_class='test_class', defaults=False, usages=False) self.assertEqual(driver.called, [ ('get_user_quotas', context, quota_obj._resources, 'test_project', 'fake_user', None, True, True), ('get_user_quotas', context, quota_obj._resources, 'test_project', 'fake_user', 'test_class', False, False), ]) self.assertEqual(result1, quota_obj._resources) self.assertEqual(result2, quota_obj._resources) def test_get_project_quotas(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result1 = quota_obj.get_project_quotas(context, 'test_project') result2 = quota_obj.get_project_quotas(context, 'test_project', quota_class='test_class', defaults=False, usages=False) self.assertEqual(driver.called, [ ('get_project_quotas', context, quota_obj._resources, 'test_project', None, True, True, False), ('get_project_quotas', context, quota_obj._resources, 'test_project', 'test_class', False, False, False), ]) self.assertEqual(result1, quota_obj._resources) self.assertEqual(result2, quota_obj._resources) def test_count_no_resource(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) self.assertRaises(exception.QuotaResourceUnknown, quota_obj.count, context, 'test_resource5', True, foo='bar') def test_count_wrong_resource(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) self.assertRaises(exception.QuotaResourceUnknown, quota_obj.count, context, 'test_resource1', True, foo='bar') def test_count(self): def fake_count(context, *args, **kwargs): self.assertEqual(args, (True,)) self.assertEqual(kwargs, dict(foo='bar')) return 5 context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.register_resource(quota.CountableResource('test_resource5', fake_count)) result = quota_obj.count(context, 'test_resource5', True, foo='bar') self.assertEqual(result, 5) def test_limit_check(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.limit_check(context, test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1) self.assertEqual(driver.called, [ ('limit_check', context, quota_obj._resources, dict( test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1, ), None, None), ]) def test_reserve(self): context = FakeContext(None, None) driver = FakeDriver(reservations=[ 'resv-01', 'resv-02', 'resv-03', 'resv-04', ]) quota_obj = self._make_quota_obj(driver) result1 = quota_obj.reserve(context, test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1) result2 = quota_obj.reserve(context, expire=3600, test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4) result3 = quota_obj.reserve(context, project_id='fake_project', test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4) self.assertEqual(driver.called, [ ('reserve', context, quota_obj._resources, dict( test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1, ), None, None, None), ('reserve', context, quota_obj._resources, dict( test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4, ), 3600, None, None), ('reserve', context, quota_obj._resources, dict( test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4, ), None, 'fake_project', None), ]) self.assertEqual(result1, [ 'resv-01', 'resv-02', 'resv-03', 'resv-04', ]) self.assertEqual(result2, [ 'resv-01', 'resv-02', 'resv-03', 'resv-04', ]) self.assertEqual(result3, [ 'resv-01', 'resv-02', 'resv-03', 'resv-04', ]) def test_commit(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.commit(context, ['resv-01', 'resv-02', 'resv-03']) self.assertEqual(driver.called, [ ('commit', context, ['resv-01', 'resv-02', 'resv-03'], None, None), ]) def test_rollback(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.rollback(context, ['resv-01', 'resv-02', 'resv-03']) self.assertEqual(driver.called, [ ('rollback', context, ['resv-01', 'resv-02', 'resv-03'], None, None), ]) def test_usage_reset(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.usage_reset(context, ['res1', 'res2', 'res3']) self.assertEqual(driver.called, [ ('usage_reset', context, ['res1', 'res2', 'res3']), ]) def test_destroy_all_by_project_and_user(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.destroy_all_by_project_and_user(context, 'test_project', 'fake_user') self.assertEqual(driver.called, [ ('destroy_all_by_project_and_user', context, 'test_project', 'fake_user'), ]) def test_destroy_all_by_project(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.destroy_all_by_project(context, 'test_project') self.assertEqual(driver.called, [ ('destroy_all_by_project', context, 'test_project'), ]) def test_expire(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.expire(context) self.assertEqual(driver.called, [ ('expire', context), ]) def test_resources(self): quota_obj = self._make_quota_obj(None) self.assertEqual(quota_obj.resources, ['test_resource1', 'test_resource2', 'test_resource3', 'test_resource4']) class DbQuotaDriverTestCase(test.TestCase): def setUp(self): super(DbQuotaDriverTestCase, self).setUp() self.flags(quota_instances=10, quota_cores=20, quota_ram=50 * 1024, quota_floating_ips=10, quota_fixed_ips=10, quota_metadata_items=128, quota_injected_files=5, quota_injected_file_content_bytes=10 * 1024, quota_injected_file_path_bytes=255, quota_security_groups=10, quota_security_group_rules=20, reservation_expire=86400, until_refresh=0, max_age=0, ) self.driver = quota.DbQuotaDriver() self.calls = [] self.useFixture(test.TimeOverride()) def test_get_defaults(self): # Use our pre-defined resources self._stub_quota_class_get_default() result = self.driver.get_defaults(None, quota.QUOTAS._resources) self.assertEqual(result, dict( instances=5, cores=20, ram=25 * 1024, floating_ips=10, fixed_ips=10, metadata_items=64, injected_files=5, injected_file_content_bytes=5 * 1024, injected_file_path_bytes=255, security_groups=10, security_group_rules=20, key_pairs=100, )) def _stub_quota_class_get_default(self): # Stub out quota_class_get_default def fake_qcgd(context): self.calls.append('quota_class_get_default') return dict( instances=5, ram=25 * 1024, metadata_items=64, injected_file_content_bytes=5 * 1024, ) self.stubs.Set(db, 'quota_class_get_default', fake_qcgd) def _stub_quota_class_get_all_by_name(self): # Stub out quota_class_get_all_by_name def fake_qcgabn(context, quota_class): self.calls.append('quota_class_get_all_by_name') self.assertEqual(quota_class, 'test_class') return dict( instances=5, ram=25 * 1024, metadata_items=64, injected_file_content_bytes=5 * 1024, ) self.stubs.Set(db, 'quota_class_get_all_by_name', fake_qcgabn) def test_get_class_quotas(self): self._stub_quota_class_get_all_by_name() result = self.driver.get_class_quotas(None, quota.QUOTAS._resources, 'test_class') self.assertEqual(self.calls, ['quota_class_get_all_by_name']) self.assertEqual(result, dict( instances=5, cores=20, ram=25 * 1024, floating_ips=10, fixed_ips=10, metadata_items=64, injected_files=5, injected_file_content_bytes=5 * 1024, injected_file_path_bytes=255, security_groups=10, security_group_rules=20, key_pairs=100, )) def test_get_class_quotas_no_defaults(self): self._stub_quota_class_get_all_by_name() result = self.driver.get_class_quotas(None, quota.QUOTAS._resources, 'test_class', False) self.assertEqual(self.calls, ['quota_class_get_all_by_name']) self.assertEqual(result, dict( instances=5, ram=25 * 1024, metadata_items=64, injected_file_content_bytes=5 * 1024, )) def _stub_get_by_project_and_user(self): def fake_qgabpau(context, project_id, user_id): self.calls.append('quota_get_all_by_project_and_user') self.assertEqual(project_id, 'test_project') self.assertEqual(user_id, 'fake_user') return dict( cores=10, injected_files=2, injected_file_path_bytes=127, ) def fake_qgabp(context, project_id): self.calls.append('quota_get_all_by_project') self.assertEqual(project_id, 'test_project') return { 'cores': 10, 'injected_files': 2, 'injected_file_path_bytes': 127, } def fake_qugabpau(context, project_id, user_id): self.calls.append('quota_usage_get_all_by_project_and_user') self.assertEqual(project_id, 'test_project') self.assertEqual(user_id, 'fake_user') return dict( instances=dict(in_use=2, reserved=2), cores=dict(in_use=4, reserved=4), ram=dict(in_use=10 * 1024, reserved=0), floating_ips=dict(in_use=2, reserved=0), metadata_items=dict(in_use=0, reserved=0), injected_files=dict(in_use=0, reserved=0), injected_file_content_bytes=dict(in_use=0, reserved=0), injected_file_path_bytes=dict(in_use=0, reserved=0), ) self.stubs.Set(db, 'quota_get_all_by_project_and_user', fake_qgabpau) self.stubs.Set(db, 'quota_get_all_by_project', fake_qgabp) self.stubs.Set(db, 'quota_usage_get_all_by_project_and_user', fake_qugabpau) self._stub_quota_class_get_all_by_name() def test_get_user_quotas(self): self.maxDiff = None self._stub_get_by_project_and_user() result = self.driver.get_user_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', 'fake_user') self.assertEqual(self.calls, [ 'quota_get_all_by_project_and_user', 'quota_get_all_by_project', 'quota_usage_get_all_by_project_and_user', 'quota_class_get_all_by_name', ]) self.assertEqual(result, dict( instances=dict( limit=5, in_use=2, reserved=2, ), cores=dict( limit=10, in_use=4, reserved=4, ), ram=dict( limit=25 * 1024, in_use=10 * 1024, reserved=0, ), floating_ips=dict( limit=10, in_use=2, reserved=0, ), fixed_ips=dict( limit=10, in_use=0, reserved=0, ), metadata_items=dict( limit=64, in_use=0, reserved=0, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_content_bytes=dict( limit=5 * 1024, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), security_groups=dict( limit=10, in_use=0, reserved=0, ), security_group_rules=dict( limit=20, in_use=0, reserved=0, ), key_pairs=dict( limit=100, in_use=0, reserved=0, ), )) def _stub_get_by_project_and_user_specific(self): def fake_quota_get(context, project_id, resource, user_id=None): self.calls.append('quota_get') self.assertEqual(project_id, 'test_project') self.assertEqual(user_id, 'fake_user') self.assertEqual(resource, 'test_resource') return dict( test_resource=dict(in_use=20, reserved=10), ) self.stubs.Set(db, 'quota_get', fake_quota_get) def test_get_by_project_and_user(self): self._stub_get_by_project_and_user_specific() result = self.driver.get_by_project_and_user( FakeContext('test_project', 'test_class'), 'test_project', 'fake_user', 'test_resource') self.assertEqual(self.calls, ['quota_get']) self.assertEqual(result, dict( test_resource=dict(in_use=20, reserved=10), )) def _stub_get_by_project(self): def fake_qgabp(context, project_id): self.calls.append('quota_get_all_by_project') self.assertEqual(project_id, 'test_project') return dict( cores=10, injected_files=2, injected_file_path_bytes=127, ) def fake_qugabp(context, project_id): self.calls.append('quota_usage_get_all_by_project') self.assertEqual(project_id, 'test_project') return dict( instances=dict(in_use=2, reserved=2), cores=dict(in_use=4, reserved=4), ram=dict(in_use=10 * 1024, reserved=0), floating_ips=dict(in_use=2, reserved=0), metadata_items=dict(in_use=0, reserved=0), injected_files=dict(in_use=0, reserved=0), injected_file_content_bytes=dict(in_use=0, reserved=0), injected_file_path_bytes=dict(in_use=0, reserved=0), ) self.stubs.Set(db, 'quota_get_all_by_project', fake_qgabp) self.stubs.Set(db, 'quota_usage_get_all_by_project', fake_qugabp) self._stub_quota_class_get_all_by_name() self._stub_quota_class_get_default() def test_get_project_quotas(self): self.maxDiff = None self._stub_get_by_project() result = self.driver.get_project_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project') self.assertEqual(self.calls, [ 'quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict( instances=dict( limit=5, in_use=2, reserved=2, ), cores=dict( limit=10, in_use=4, reserved=4, ), ram=dict( limit=25 * 1024, in_use=10 * 1024, reserved=0, ), floating_ips=dict( limit=10, in_use=2, reserved=0, ), fixed_ips=dict( limit=10, in_use=0, reserved=0, ), metadata_items=dict( limit=64, in_use=0, reserved=0, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_content_bytes=dict( limit=5 * 1024, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), security_groups=dict( limit=10, in_use=0, reserved=0, ), security_group_rules=dict( limit=20, in_use=0, reserved=0, ), key_pairs=dict( limit=100, in_use=0, reserved=0, ), )) def test_get_user_quotas_alt_context_no_class(self): self.maxDiff = None self._stub_get_by_project_and_user() result = self.driver.get_user_quotas( FakeContext('test_project', None), quota.QUOTAS._resources, 'test_project', 'fake_user') self.assertEqual(self.calls, [ 'quota_get_all_by_project_and_user', 'quota_get_all_by_project', 'quota_usage_get_all_by_project_and_user', ]) self.assertEqual(result, dict( instances=dict( limit=10, in_use=2, reserved=2, ), cores=dict( limit=10, in_use=4, reserved=4, ), ram=dict( limit=50 * 1024, in_use=10 * 1024, reserved=0, ), floating_ips=dict( limit=10, in_use=2, reserved=0, ), fixed_ips=dict( limit=10, in_use=0, reserved=0, ), metadata_items=dict( limit=128, in_use=0, reserved=0, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_content_bytes=dict( limit=10 * 1024, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), security_groups=dict( limit=10, in_use=0, reserved=0, ), security_group_rules=dict( limit=20, in_use=0, reserved=0, ), key_pairs=dict( limit=100, in_use=0, reserved=0, ), )) def test_get_project_quotas_alt_context_no_class(self): self.maxDiff = None self._stub_get_by_project() result = self.driver.get_project_quotas( FakeContext('other_project', 'other_class'), quota.QUOTAS._resources, 'test_project') self.assertEqual(self.calls, [ 'quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_default', ]) self.assertEqual(result, dict( instances=dict( limit=5, in_use=2, reserved=2, ), cores=dict( limit=10, in_use=4, reserved=4, ), ram=dict( limit=25 * 1024, in_use=10 * 1024, reserved=0, ), floating_ips=dict( limit=10, in_use=2, reserved=0, ), fixed_ips=dict( limit=10, in_use=0, reserved=0, ), metadata_items=dict( limit=64, in_use=0, reserved=0, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_content_bytes=dict( limit=5 * 1024, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), security_groups=dict( limit=10, in_use=0, reserved=0, ), security_group_rules=dict( limit=20, in_use=0, reserved=0, ), key_pairs=dict( limit=100, in_use=0, reserved=0, ), )) def test_get_user_quotas_alt_context_with_class(self): self.maxDiff = None self._stub_get_by_project_and_user() result = self.driver.get_user_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', 'fake_user', quota_class='test_class') self.assertEqual(self.calls, [ 'quota_get_all_by_project_and_user', 'quota_get_all_by_project', 'quota_usage_get_all_by_project_and_user', 'quota_class_get_all_by_name', ]) self.assertEqual(result, dict( instances=dict( limit=5, in_use=2, reserved=2, ), cores=dict( limit=10, in_use=4, reserved=4, ), ram=dict( limit=25 * 1024, in_use=10 * 1024, reserved=0, ), floating_ips=dict( limit=10, in_use=2, reserved=0, ), fixed_ips=dict( limit=10, in_use=0, reserved=0, ), metadata_items=dict( limit=64, in_use=0, reserved=0, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_content_bytes=dict( limit=5 * 1024, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), security_groups=dict( limit=10, in_use=0, reserved=0, ), security_group_rules=dict( limit=20, in_use=0, reserved=0, ), key_pairs=dict( limit=100, in_use=0, reserved=0, ), )) def test_get_project_quotas_alt_context_with_class(self): self.maxDiff = None self._stub_get_by_project() result = self.driver.get_project_quotas( FakeContext('other_project', 'other_class'), quota.QUOTAS._resources, 'test_project', quota_class='test_class') self.assertEqual(self.calls, [ 'quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict( instances=dict( limit=5, in_use=2, reserved=2, ), cores=dict( limit=10, in_use=4, reserved=4, ), ram=dict( limit=25 * 1024, in_use=10 * 1024, reserved=0, ), floating_ips=dict( limit=10, in_use=2, reserved=0, ), fixed_ips=dict( limit=10, in_use=0, reserved=0, ), metadata_items=dict( limit=64, in_use=0, reserved=0, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_content_bytes=dict( limit=5 * 1024, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), security_groups=dict( limit=10, in_use=0, reserved=0, ), security_group_rules=dict( limit=20, in_use=0, reserved=0, ), key_pairs=dict( limit=100, in_use=0, reserved=0, ), )) def test_get_user_quotas_no_defaults(self): self._stub_get_by_project_and_user() result = self.driver.get_user_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', 'fake_user', defaults=False) self.assertEqual(self.calls, [ 'quota_get_all_by_project_and_user', 'quota_get_all_by_project', 'quota_usage_get_all_by_project_and_user', 'quota_class_get_all_by_name', ]) self.assertEqual(result, dict( cores=dict( limit=10, in_use=4, reserved=4, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), )) def test_get_project_quotas_no_defaults(self): self._stub_get_by_project() result = self.driver.get_project_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', defaults=False) self.assertEqual(self.calls, [ 'quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict( cores=dict( limit=10, in_use=4, reserved=4, ), injected_files=dict( limit=2, in_use=0, reserved=0, ), injected_file_path_bytes=dict( limit=127, in_use=0, reserved=0, ), )) def test_get_user_quotas_no_usages(self): self._stub_get_by_project_and_user() result = self.driver.get_user_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', 'fake_user', usages=False) self.assertEqual(self.calls, [ 'quota_get_all_by_project_and_user', 'quota_get_all_by_project', 'quota_class_get_all_by_name', ]) self.assertEqual(result, dict( instances=dict( limit=5, ), cores=dict( limit=10, ), ram=dict( limit=25 * 1024, ), floating_ips=dict( limit=10, ), fixed_ips=dict( limit=10, ), metadata_items=dict( limit=64, ), injected_files=dict( limit=2, ), injected_file_content_bytes=dict( limit=5 * 1024, ), injected_file_path_bytes=dict( limit=127, ), security_groups=dict( limit=10, ), security_group_rules=dict( limit=20, ), key_pairs=dict( limit=100, ), )) def test_get_project_quotas_no_usages(self): self._stub_get_by_project() result = self.driver.get_project_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', usages=False) self.assertEqual(self.calls, [ 'quota_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict( instances=dict( limit=5, ), cores=dict( limit=10, ), ram=dict( limit=25 * 1024, ), floating_ips=dict( limit=10, ), fixed_ips=dict( limit=10, ), metadata_items=dict( limit=64, ), injected_files=dict( limit=2, ), injected_file_content_bytes=dict( limit=5 * 1024, ), injected_file_path_bytes=dict( limit=127, ), security_groups=dict( limit=10, ), security_group_rules=dict( limit=20, ), key_pairs=dict( limit=100, ), )) def _stub_get_settable_quotas(self): def fake_get_project_quotas(context, resources, project_id, quota_class=None, defaults=True, usages=True, remains=False, project_quotas=None): self.calls.append('get_project_quotas') result = {} for k, v in resources.items(): if k == 'instances': remains = v.default - 5 in_use = 1 else: remains = v.default in_use = 0 result[k] = {'limit': v.default, 'in_use': in_use, 'reserved': 0, 'remains': remains} return result def fake_get_user_quotas(context, resources, project_id, user_id, quota_class=None, defaults=True, usages=True, project_quotas=None, user_quotas=None): self.calls.append('get_user_quotas') result = {} for k, v in resources.items(): if k == 'instances': in_use = 1 else: in_use = 0 result[k] = {'limit': v.default, 'in_use': in_use, 'reserved': 0} return result def fake_qgabpau(context, project_id, user_id): self.calls.append('quota_get_all_by_project_and_user') return {'instances': 2} self.stubs.Set(self.driver, 'get_project_quotas', fake_get_project_quotas) self.stubs.Set(self.driver, 'get_user_quotas', fake_get_user_quotas) self.stubs.Set(db, 'quota_get_all_by_project_and_user', fake_qgabpau) def test_get_settable_quotas_with_user(self): self._stub_get_settable_quotas() result = self.driver.get_settable_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project', user_id='test_user') self.assertEqual(self.calls, [ 'get_project_quotas', 'quota_get_all_by_project_and_user', 'get_user_quotas', ]) self.assertEqual(result, { 'instances': { 'minimum': 1, 'maximum': 7, }, 'cores': { 'minimum': 0, 'maximum': 20, }, 'ram': { 'minimum': 0, 'maximum': 50 * 1024, }, 'floating_ips': { 'minimum': 0, 'maximum': 10, }, 'fixed_ips': { 'minimum': 0, 'maximum': 10, }, 'metadata_items': { 'minimum': 0, 'maximum': 128, }, 'injected_files': { 'minimum': 0, 'maximum': 5, }, 'injected_file_content_bytes': { 'minimum': 0, 'maximum': 10 * 1024, }, 'injected_file_path_bytes': { 'minimum': 0, 'maximum': 255, }, 'security_groups': { 'minimum': 0, 'maximum': 10, }, 'security_group_rules': { 'minimum': 0, 'maximum': 20, }, 'key_pairs': { 'minimum': 0, 'maximum': 100, }, }) def test_get_settable_quotas_without_user(self): self._stub_get_settable_quotas() result = self.driver.get_settable_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, 'test_project') self.assertEqual(self.calls, [ 'get_project_quotas', ]) self.assertEqual(result, { 'instances': { 'minimum': 5, 'maximum': -1, }, 'cores': { 'minimum': 0, 'maximum': -1, }, 'ram': { 'minimum': 0, 'maximum': -1, }, 'floating_ips': { 'minimum': 0, 'maximum': -1, }, 'fixed_ips': { 'minimum': 0, 'maximum': -1, }, 'metadata_items': { 'minimum': 0, 'maximum': -1, }, 'injected_files': { 'minimum': 0, 'maximum': -1, }, 'injected_file_content_bytes': { 'minimum': 0, 'maximum': -1, }, 'injected_file_path_bytes': { 'minimum': 0, 'maximum': -1, }, 'security_groups': { 'minimum': 0, 'maximum': -1, }, 'security_group_rules': { 'minimum': 0, 'maximum': -1, }, 'key_pairs': { 'minimum': 0, 'maximum': -1, }, }) def _stub_get_project_quotas(self): def fake_get_project_quotas(context, resources, project_id, quota_class=None, defaults=True, usages=True, remains=False, project_quotas=None): self.calls.append('get_project_quotas') return dict((k, dict(limit=v.default)) for k, v in resources.items()) self.stubs.Set(self.driver, 'get_project_quotas', fake_get_project_quotas) def test_get_quotas_has_sync_unknown(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS._resources, ['unknown'], True) self.assertEqual(self.calls, []) def test_get_quotas_no_sync_unknown(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS._resources, ['unknown'], False) self.assertEqual(self.calls, []) def test_get_quotas_has_sync_no_sync_resource(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS._resources, ['metadata_items'], True) self.assertEqual(self.calls, []) def test_get_quotas_no_sync_has_sync_resource(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS._resources, ['instances'], False) self.assertEqual(self.calls, []) def test_get_quotas_has_sync(self): self._stub_get_project_quotas() result = self.driver._get_quotas(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, ['instances', 'cores', 'ram', 'floating_ips', 'security_groups'], True, project_id='test_project') self.assertEqual(self.calls, ['get_project_quotas']) self.assertEqual(result, dict( instances=10, cores=20, ram=50 * 1024, floating_ips=10, security_groups=10, )) def test_get_quotas_no_sync(self): self._stub_get_project_quotas() result = self.driver._get_quotas(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, ['metadata_items', 'injected_files', 'injected_file_content_bytes', 'injected_file_path_bytes', 'security_group_rules'], False, project_id='test_project') self.assertEqual(self.calls, ['get_project_quotas']) self.assertEqual(result, dict( metadata_items=128, injected_files=5, injected_file_content_bytes=10 * 1024, injected_file_path_bytes=255, security_group_rules=20, )) def test_limit_check_under(self): self._stub_get_project_quotas() self.assertRaises(exception.InvalidQuotaValue, self.driver.limit_check, FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(metadata_items=-1)) def test_limit_check_over(self): self._stub_get_project_quotas() self.assertRaises(exception.OverQuota, self.driver.limit_check, FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(metadata_items=129)) def test_limit_check_unlimited(self): self.flags(quota_metadata_items=-1) self._stub_get_project_quotas() self.driver.limit_check(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(metadata_items=32767)) def test_limit_check(self): self._stub_get_project_quotas() self.driver.limit_check(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(metadata_items=128)) def _stub_quota_reserve(self): def fake_quota_reserve(context, resources, quotas, user_quotas, deltas, expire, until_refresh, max_age, project_id=None, user_id=None): self.calls.append(('quota_reserve', expire, until_refresh, max_age)) return ['resv-1', 'resv-2', 'resv-3'] self.stubs.Set(db, 'quota_reserve', fake_quota_reserve) def test_reserve_bad_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() self.assertRaises(exception.InvalidReservationExpiration, self.driver.reserve, FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2), expire='invalid') self.assertEqual(self.calls, []) def test_reserve_default_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2)) expire = timeutils.utcnow() + datetime.timedelta(seconds=86400) self.assertEqual(self.calls, [ 'get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_int_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2), expire=3600) expire = timeutils.utcnow() + datetime.timedelta(seconds=3600) self.assertEqual(self.calls, [ 'get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_timedelta_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() expire_delta = datetime.timedelta(seconds=60) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2), expire=expire_delta) expire = timeutils.utcnow() + expire_delta self.assertEqual(self.calls, [ 'get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_datetime_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() expire = timeutils.utcnow() + datetime.timedelta(seconds=120) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2), expire=expire) self.assertEqual(self.calls, [ 'get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_until_refresh(self): self._stub_get_project_quotas() self._stub_quota_reserve() self.flags(until_refresh=500) expire = timeutils.utcnow() + datetime.timedelta(seconds=120) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2), expire=expire) self.assertEqual(self.calls, [ 'get_project_quotas', ('quota_reserve', expire, 500, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_max_age(self): self._stub_get_project_quotas() self._stub_quota_reserve() self.flags(max_age=86400) expire = timeutils.utcnow() + datetime.timedelta(seconds=120) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS._resources, dict(instances=2), expire=expire) self.assertEqual(self.calls, [ 'get_project_quotas', ('quota_reserve', expire, 0, 86400), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_usage_reset(self): calls = [] def fake_quota_usage_update(context, project_id, user_id, resource, **kwargs): calls.append(('quota_usage_update', context, project_id, user_id, resource, kwargs)) if resource == 'nonexist': raise exception.QuotaUsageNotFound(project_id=project_id) self.stubs.Set(db, 'quota_usage_update', fake_quota_usage_update) ctx = FakeContext('test_project', 'test_class') resources = ['res1', 'res2', 'nonexist', 'res4'] self.driver.usage_reset(ctx, resources) # Make sure we had some calls self.assertEqual(len(calls), len(resources)) # Extract the elevated context that was used and do some # sanity checks elevated = calls[0][1] self.assertEqual(elevated.project_id, ctx.project_id) self.assertEqual(elevated.quota_class, ctx.quota_class) self.assertEqual(elevated.is_admin, True) # Now check that all the expected calls were made exemplar = [('quota_usage_update', elevated, 'test_project', 'fake_user', res, dict(in_use=-1)) for res in resources] self.assertEqual(calls, exemplar) class FakeSession(object): def begin(self): return self def add(self, instance): pass def __enter__(self): return self def __exit__(self, exc_type, exc_value, exc_traceback): return False class FakeUsage(sqa_models.QuotaUsage): def save(self, *args, **kwargs): pass class QuotaReserveSqlAlchemyTestCase(test.TestCase): # nova.db.sqlalchemy.api.quota_reserve is so complex it needs its # own test case, and since it's a quota manipulator, this is the # best place to put it... def setUp(self): super(QuotaReserveSqlAlchemyTestCase, self).setUp() self.sync_called = set() self.quotas = dict( instances=5, cores=10, ram=10 * 1024, fixed_ips=5, ) self.deltas = dict( instances=2, cores=4, ram=2 * 1024, fixed_ips=2, ) def make_sync(res_name): def sync(context, project_id, user_id, session): self.sync_called.add(res_name) if res_name in self.usages: if self.usages[res_name].in_use < 0: return {res_name: 2} else: return {res_name: self.usages[res_name].in_use - 1} return {res_name: 0} return sync self.resources = {} for res_name in ('instances', 'cores', 'ram', 'fixed_ips'): method_name = '_sync_%s' % res_name sqa_api.QUOTA_SYNC_FUNCTIONS[method_name] = make_sync(res_name) res = quota.ReservableResource(res_name, '_sync_%s' % res_name) self.resources[res_name] = res self.expire = timeutils.utcnow() + datetime.timedelta(seconds=3600) self.usages = {} self.usages_created = {} self.reservations_created = {} self.usages_list = [ dict(resource='instances', project_id='test_project', user_id='fake_user', in_use=2, reserved=2, until_refresh=None), dict(resource='cores', project_id='test_project', user_id='fake_user', in_use=2, reserved=4, until_refresh=None), dict(resource='ram', project_id='test_project', user_id='fake_user', in_use=2, reserved=2 * 1024, until_refresh=None), dict(resource='fixed_ips', project_id='test_project', user_id=None, in_use=2, reserved=2, until_refresh=None), ] def fake_get_session(): return FakeSession() def fake_get_project_quota_usages(context, session, project_id): return self.usages.copy() def fake_get_user_quota_usages(context, session, project_id, user_id): return self.usages.copy() def fake_quota_usage_create(context, project_id, user_id, resource, in_use, reserved, until_refresh, session=None, save=True): quota_usage_ref = self._make_quota_usage( project_id, user_id, resource, in_use, reserved, until_refresh, timeutils.utcnow(), timeutils.utcnow()) self.usages_created[resource] = quota_usage_ref return quota_usage_ref def fake_reservation_create(context, uuid, usage_id, project_id, user_id, resource, delta, expire, session=None): reservation_ref = self._make_reservation( uuid, usage_id, project_id, user_id, resource, delta, expire, timeutils.utcnow(), timeutils.utcnow()) self.reservations_created[resource] = reservation_ref return reservation_ref self.stubs.Set(sqa_api, 'get_session', fake_get_session) self.stubs.Set(sqa_api, '_get_project_quota_usages', fake_get_project_quota_usages) self.stubs.Set(sqa_api, '_get_user_quota_usages', fake_get_user_quota_usages) self.stubs.Set(sqa_api, '_quota_usage_create', fake_quota_usage_create) self.stubs.Set(sqa_api, '_reservation_create', fake_reservation_create) self.useFixture(test.TimeOverride()) def _make_quota_usage(self, project_id, user_id, resource, in_use, reserved, until_refresh, created_at, updated_at): quota_usage_ref = FakeUsage() quota_usage_ref.id = len(self.usages) + len(self.usages_created) quota_usage_ref.project_id = project_id quota_usage_ref.user_id = user_id quota_usage_ref.resource = resource quota_usage_ref.in_use = in_use quota_usage_ref.reserved = reserved quota_usage_ref.until_refresh = until_refresh quota_usage_ref.created_at = created_at quota_usage_ref.updated_at = updated_at quota_usage_ref.deleted_at = None quota_usage_ref.deleted = False return quota_usage_ref def init_usage(self, project_id, user_id, resource, in_use, reserved=0, until_refresh=None, created_at=None, updated_at=None): if created_at is None: created_at = timeutils.utcnow() if updated_at is None: updated_at = timeutils.utcnow() if resource == 'fixed_ips': user_id = None quota_usage_ref = self._make_quota_usage(project_id, user_id, resource, in_use, reserved, until_refresh, created_at, updated_at) self.usages[resource] = quota_usage_ref def compare_usage(self, usage_dict, expected): for usage in expected: resource = usage['resource'] for key, value in usage.items(): actual = getattr(usage_dict[resource], key) self.assertEqual(actual, value, "%s != %s on usage for resource %s" % (actual, value, resource)) def _make_reservation(self, uuid, usage_id, project_id, user_id, resource, delta, expire, created_at, updated_at): reservation_ref = sqa_models.Reservation() reservation_ref.id = len(self.reservations_created) reservation_ref.uuid = uuid reservation_ref.usage_id = usage_id reservation_ref.project_id = project_id reservation_ref.user_id = user_id reservation_ref.resource = resource reservation_ref.delta = delta reservation_ref.expire = expire reservation_ref.created_at = created_at reservation_ref.updated_at = updated_at reservation_ref.deleted_at = None reservation_ref.deleted = False return reservation_ref def compare_reservation(self, reservations, expected): reservations = set(reservations) for resv in expected: resource = resv['resource'] resv_obj = self.reservations_created[resource] self.assertIn(resv_obj.uuid, reservations) reservations.discard(resv_obj.uuid) for key, value in resv.items(): actual = getattr(resv_obj, key) self.assertEqual(actual, value, "%s != %s on reservation for resource %s" % (actual, value, resource)) self.assertEqual(len(reservations), 0) def _update_reservations_list(self, usage_id_change=False, delta_change=False): reservations_list = [ dict(resource='instances', project_id='test_project', delta=2), dict(resource='cores', project_id='test_project', delta=4), dict(resource='ram', delta=2 * 1024), dict(resource='fixed_ips', project_id='test_project', delta=2), ] if usage_id_change: reservations_list[0]["usage_id"] = self.usages_created['instances'] reservations_list[1]["usage_id"] = self.usages_created['cores'] reservations_list[2]["usage_id"] = self.usages_created['ram'] reservations_list[3]["usage_id"] = self.usages_created['fixed_ips'] else: reservations_list[0]["usage_id"] = self.usages['instances'] reservations_list[1]["usage_id"] = self.usages['cores'] reservations_list[2]["usage_id"] = self.usages['ram'] reservations_list[3]["usage_id"] = self.usages['fixed_ips'] if delta_change: reservations_list[0]["delta"] = -2 reservations_list[1]["delta"] = -4 reservations_list[2]["delta"] = -2 * 1024 reservations_list[3]["delta"] = -2 return reservations_list def _init_usages(self, *in_use, **kwargs): for i, option in enumerate(('instances', 'cores', 'ram', 'fixed_ips')): self.init_usage('test_project', 'fake_user', option, in_use[i], **kwargs) return FakeContext('test_project', 'test_class') def test_quota_reserve_create_usages(self): context = FakeContext('test_project', 'test_class') result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set(['instances', 'cores', 'ram', 'fixed_ips'])) self.usages_list[0]["in_use"] = 0 self.usages_list[1]["in_use"] = 0 self.usages_list[2]["in_use"] = 0 self.usages_list[3]["in_use"] = 0 self.compare_usage(self.usages_created, self.usages_list) reservations_list = self._update_reservations_list(True) self.compare_reservation(result, reservations_list) def test_quota_reserve_negative_in_use(self): context = self._init_usages(-1, -1, -1, -1, until_refresh=1) result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 5, 0) self.assertEqual(self.sync_called, set(['instances', 'cores', 'ram', 'fixed_ips'])) self.usages_list[0]["until_refresh"] = 5 self.usages_list[1]["until_refresh"] = 5 self.usages_list[2]["until_refresh"] = 5 self.usages_list[3]["until_refresh"] = 5 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, self._update_reservations_list()) def test_quota_reserve_until_refresh(self): context = self._init_usages(3, 3, 3, 3, until_refresh=1) result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 5, 0) self.assertEqual(self.sync_called, set(['instances', 'cores', 'ram', 'fixed_ips'])) self.usages_list[0]["until_refresh"] = 5 self.usages_list[1]["until_refresh"] = 5 self.usages_list[2]["until_refresh"] = 5 self.usages_list[3]["until_refresh"] = 5 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, self._update_reservations_list()) def test_quota_reserve_max_age(self): max_age = 3600 record_created = (timeutils.utcnow() - datetime.timedelta(seconds=max_age)) context = self._init_usages(3, 3, 3, 3, created_at=record_created, updated_at=record_created) result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 0, max_age) self.assertEqual(self.sync_called, set(['instances', 'cores', 'ram', 'fixed_ips'])) self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, self._update_reservations_list()) def test_quota_reserve_no_refresh(self): context = self._init_usages(3, 3, 3, 3) result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.usages_list[0]["in_use"] = 3 self.usages_list[1]["in_use"] = 3 self.usages_list[2]["in_use"] = 3 self.usages_list[3]["in_use"] = 3 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, self._update_reservations_list()) def test_quota_reserve_unders(self): context = self._init_usages(1, 3, 1 * 1024, 1) self.deltas["instances"] = -2 self.deltas["cores"] = -4 self.deltas["ram"] = -2 * 1024 self.deltas["fixed_ips"] = -2 result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.usages_list[0]["in_use"] = 1 self.usages_list[0]["reserved"] = 0 self.usages_list[1]["in_use"] = 3 self.usages_list[1]["reserved"] = 0 self.usages_list[2]["in_use"] = 1 * 1024 self.usages_list[2]["reserved"] = 0 self.usages_list[3]["in_use"] = 1 self.usages_list[3]["reserved"] = 0 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) reservations_list = self._update_reservations_list(False, True) self.compare_reservation(result, reservations_list) def test_quota_reserve_overs(self): context = self._init_usages(4, 8, 10 * 1024, 4) try: sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 0, 0) except exception.OverQuota as e: expected_kwargs = {'code': 500, 'usages': {'instances': {'reserved': 0, 'in_use': 4}, 'ram': {'reserved': 0, 'in_use': 10240}, 'fixed_ips': {'reserved': 0, 'in_use': 4}, 'cores': {'reserved': 0, 'in_use': 8}}, 'headroom': {'cores': 2, 'ram': 0, 'fixed_ips': 1, 'instances': 1}, 'overs': ['cores', 'fixed_ips', 'instances', 'ram'], 'quotas': {'cores': 10, 'ram': 10240, 'fixed_ips': 5, 'instances': 5}} self.assertEqual(e.kwargs, expected_kwargs) else: self.fail('Expected OverQuota failure') self.assertEqual(self.sync_called, set([])) self.usages_list[0]["in_use"] = 4 self.usages_list[0]["reserved"] = 0 self.usages_list[1]["in_use"] = 8 self.usages_list[1]["reserved"] = 0 self.usages_list[2]["in_use"] = 10 * 1024 self.usages_list[2]["reserved"] = 0 self.usages_list[3]["in_use"] = 4 self.usages_list[3]["reserved"] = 0 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.assertEqual(self.reservations_created, {}) def test_quota_reserve_cores_unlimited(self): # Requesting 8 cores, quota_cores set to unlimited: self.flags(quota_cores=-1) context = self._init_usages(1, 8, 1 * 1024, 1) self.assertEqual(self.sync_called, set([])) self.usages_list[0]["in_use"] = 1 self.usages_list[0]["reserved"] = 0 self.usages_list[1]["in_use"] = 8 self.usages_list[1]["reserved"] = 0 self.usages_list[2]["in_use"] = 1 * 1024 self.usages_list[2]["reserved"] = 0 self.usages_list[3]["in_use"] = 1 self.usages_list[3]["reserved"] = 0 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.assertEqual(self.reservations_created, {}) def test_quota_reserve_ram_unlimited(self): # Requesting 10*1024 ram, quota_ram set to unlimited: self.flags(quota_ram=-1) context = self._init_usages(1, 1, 10 * 1024, 1) self.assertEqual(self.sync_called, set([])) self.usages_list[0]["in_use"] = 1 self.usages_list[0]["reserved"] = 0 self.usages_list[1]["in_use"] = 1 self.usages_list[1]["reserved"] = 0 self.usages_list[2]["in_use"] = 10 * 1024 self.usages_list[2]["reserved"] = 0 self.usages_list[3]["in_use"] = 1 self.usages_list[3]["reserved"] = 0 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) self.assertEqual(self.reservations_created, {}) def test_quota_reserve_reduction(self): context = self._init_usages(10, 20, 20 * 1024, 10) self.deltas["instances"] = -2 self.deltas["cores"] = -4 self.deltas["ram"] = -2 * 1024 self.deltas["fixed_ips"] = -2 result = sqa_api.quota_reserve(context, self.resources, self.quotas, self.quotas, self.deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.usages_list[0]["in_use"] = 10 self.usages_list[0]["reserved"] = 0 self.usages_list[1]["in_use"] = 20 self.usages_list[1]["reserved"] = 0 self.usages_list[2]["in_use"] = 20 * 1024 self.usages_list[2]["reserved"] = 0 self.usages_list[3]["in_use"] = 10 self.usages_list[3]["reserved"] = 0 self.compare_usage(self.usages, self.usages_list) self.assertEqual(self.usages_created, {}) reservations_list = self._update_reservations_list(False, True) self.compare_reservation(result, reservations_list) class NoopQuotaDriverTestCase(test.TestCase): def setUp(self): super(NoopQuotaDriverTestCase, self).setUp() self.flags(quota_instances=10, quota_cores=20, quota_ram=50 * 1024, quota_floating_ips=10, quota_metadata_items=128, quota_injected_files=5, quota_injected_file_content_bytes=10 * 1024, quota_injected_file_path_bytes=255, quota_security_groups=10, quota_security_group_rules=20, reservation_expire=86400, until_refresh=0, max_age=0, ) self.expected_with_usages = {} self.expected_without_usages = {} self.expected_without_dict = {} for r in quota.QUOTAS._resources: self.expected_with_usages[r] = dict(limit=-1, in_use=-1, reserved=-1) self.expected_without_usages[r] = dict(limit=-1) self.expected_without_dict[r] = -1 self.driver = quota.NoopQuotaDriver() def test_get_defaults(self): # Use our pre-defined resources result = self.driver.get_defaults(None, quota.QUOTAS._resources) self.assertEqual(self.expected_without_dict, result) def test_get_class_quotas(self): result = self.driver.get_class_quotas(None, quota.QUOTAS._resources, 'test_class') self.assertEqual(self.expected_without_dict, result) def test_get_class_quotas_no_defaults(self): result = self.driver.get_class_quotas(None, quota.QUOTAS._resources, 'test_class', False) self.assertEqual(self.expected_without_dict, result) def test_get_project_quotas(self): result = self.driver.get_project_quotas(None, quota.QUOTAS._resources, 'test_project') self.assertEqual(self.expected_with_usages, result) def test_get_user_quotas(self): result = self.driver.get_user_quotas(None, quota.QUOTAS._resources, 'test_project', 'fake_user') self.assertEqual(self.expected_with_usages, result) def test_get_project_quotas_no_defaults(self): result = self.driver.get_project_quotas(None, quota.QUOTAS._resources, 'test_project', defaults=False) self.assertEqual(self.expected_with_usages, result) def test_get_user_quotas_no_defaults(self): result = self.driver.get_user_quotas(None, quota.QUOTAS._resources, 'test_project', 'fake_user', defaults=False) self.assertEqual(self.expected_with_usages, result) def test_get_project_quotas_no_usages(self): result = self.driver.get_project_quotas(None, quota.QUOTAS._resources, 'test_project', usages=False) self.assertEqual(self.expected_without_usages, result) def test_get_user_quotas_no_usages(self): result = self.driver.get_user_quotas(None, quota.QUOTAS._resources, 'test_project', 'fake_user', usages=False) self.assertEqual(self.expected_without_usages, result) nova-2014.1/nova/tests/fake_instance.py0000664000175400017540000000671612323721477021175 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import uuid from nova.objects import fields from nova.objects import instance as instance_obj from nova.objects import instance_fault as inst_fault_obj def fake_db_secgroups(instance, names): secgroups = [] for i, name in enumerate(names): group_name = 'secgroup-%i' % i if isinstance(name, dict) and name.get('name'): group_name = name.get('name') secgroups.append( {'id': i, 'instance_uuid': instance['uuid'], 'name': group_name, 'description': 'Fake secgroup', 'user_id': instance['user_id'], 'project_id': instance['project_id'], 'deleted': False, 'deleted_at': None, 'created_at': None, 'updated_at': None, }) return secgroups def fake_db_instance(**updates): db_instance = { 'id': 1, 'deleted': False, 'uuid': str(uuid.uuid4()), 'user_id': 'fake-user', 'project_id': 'fake-project', 'host': 'fake-host', 'created_at': datetime.datetime(1955, 11, 5), 'pci_devices': [], 'security_groups': [], 'metadata': {}, 'system_metadata': {}, 'root_gb': 0, 'ephemeral_gb': 0 } for name, field in instance_obj.Instance.fields.items(): if name in db_instance: continue if field.nullable: db_instance[name] = None elif field.default != fields.UnspecifiedDefault: db_instance[name] = field.default else: raise Exception('fake_db_instance needs help with %s' % name) if updates: db_instance.update(updates) if db_instance.get('security_groups'): db_instance['security_groups'] = fake_db_secgroups( db_instance, db_instance['security_groups']) return db_instance def fake_instance_obj(context, **updates): expected_attrs = updates.pop('expected_attrs', None) return instance_obj.Instance._from_db_object(context, instance_obj.Instance(), fake_db_instance(**updates), expected_attrs=expected_attrs) def fake_fault_obj(context, instance_uuid, code=404, message='HTTPNotFound', details='Stock details for test', **updates): fault = { 'id': 1, 'instance_uuid': instance_uuid, 'code': code, 'message': message, 'details': details, 'host': 'fake_host', 'deleted': False, 'created_at': datetime.datetime(2010, 10, 10, 12, 0, 0), 'updated_at': None, 'deleted_at': None } if updates: fault.update(updates) return inst_fault_obj.InstanceFault._from_db_object(context, inst_fault_obj.InstanceFault(), fault) nova-2014.1/nova/tests/cells/0000775000175400017540000000000012323722546017117 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/cells/test_cells_manager.py0000664000175400017540000011161112323721477023327 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For CellsManager """ import copy import datetime import mock from oslo.config import cfg from nova.cells import messaging from nova.cells import utils as cells_utils from nova import context from nova.openstack.common import timeutils from nova import test from nova.tests.cells import fakes from nova.tests import fake_instance_actions CONF = cfg.CONF CONF.import_opt('compute_topic', 'nova.compute.rpcapi') FAKE_COMPUTE_NODES = [dict(id=1), dict(id=2)] FAKE_SERVICES = [dict(id=1, host='host1', compute_node=[FAKE_COMPUTE_NODES[0]]), dict(id=2, host='host2', compute_node=[FAKE_COMPUTE_NODES[1]]), dict(id=3, host='host3', compute_node=[])] FAKE_TASK_LOGS = [dict(id=1, host='host1'), dict(id=2, host='host2')] class CellsManagerClassTestCase(test.NoDBTestCase): """Test case for CellsManager class.""" def setUp(self): super(CellsManagerClassTestCase, self).setUp() fakes.init(self) # pick a child cell to use for tests. self.our_cell = 'grandchild-cell1' self.cells_manager = fakes.get_cells_manager(self.our_cell) self.msg_runner = self.cells_manager.msg_runner self.state_manager = fakes.get_state_manager(self.our_cell) self.driver = self.cells_manager.driver self.ctxt = 'fake_context' def _get_fake_response(self, raw_response=None, exc=False): if exc: return messaging.Response('fake', test.TestingException(), True) if raw_response is None: raw_response = 'fake-response' return messaging.Response('fake', raw_response, False) def test_get_cell_info_for_neighbors(self): self.mox.StubOutWithMock(self.cells_manager.state_manager, 'get_cell_info_for_neighbors') self.cells_manager.state_manager.get_cell_info_for_neighbors() self.mox.ReplayAll() self.cells_manager.get_cell_info_for_neighbors(self.ctxt) def test_post_start_hook_child_cell(self): self.mox.StubOutWithMock(self.driver, 'start_servers') self.mox.StubOutWithMock(context, 'get_admin_context') self.mox.StubOutWithMock(self.cells_manager, '_update_our_parents') self.driver.start_servers(self.msg_runner) context.get_admin_context().AndReturn(self.ctxt) self.cells_manager._update_our_parents(self.ctxt) self.mox.ReplayAll() self.cells_manager.post_start_hook() def test_post_start_hook_middle_cell(self): cells_manager = fakes.get_cells_manager('child-cell2') msg_runner = cells_manager.msg_runner driver = cells_manager.driver self.mox.StubOutWithMock(driver, 'start_servers') self.mox.StubOutWithMock(context, 'get_admin_context') self.mox.StubOutWithMock(msg_runner, 'ask_children_for_capabilities') self.mox.StubOutWithMock(msg_runner, 'ask_children_for_capacities') driver.start_servers(msg_runner) context.get_admin_context().AndReturn(self.ctxt) msg_runner.ask_children_for_capabilities(self.ctxt) msg_runner.ask_children_for_capacities(self.ctxt) self.mox.ReplayAll() cells_manager.post_start_hook() def test_update_our_parents(self): self.mox.StubOutWithMock(self.msg_runner, 'tell_parents_our_capabilities') self.mox.StubOutWithMock(self.msg_runner, 'tell_parents_our_capacities') self.msg_runner.tell_parents_our_capabilities(self.ctxt) self.msg_runner.tell_parents_our_capacities(self.ctxt) self.mox.ReplayAll() self.cells_manager._update_our_parents(self.ctxt) def test_schedule_run_instance(self): host_sched_kwargs = 'fake_host_sched_kwargs_silently_passed' self.mox.StubOutWithMock(self.msg_runner, 'schedule_run_instance') our_cell = self.msg_runner.state_manager.get_my_state() self.msg_runner.schedule_run_instance(self.ctxt, our_cell, host_sched_kwargs) self.mox.ReplayAll() self.cells_manager.schedule_run_instance(self.ctxt, host_sched_kwargs=host_sched_kwargs) def test_build_instances(self): build_inst_kwargs = {'instances': [1, 2]} self.mox.StubOutWithMock(self.msg_runner, 'build_instances') our_cell = self.msg_runner.state_manager.get_my_state() self.msg_runner.build_instances(self.ctxt, our_cell, build_inst_kwargs) self.mox.ReplayAll() self.cells_manager.build_instances(self.ctxt, build_inst_kwargs=build_inst_kwargs) def test_run_compute_api_method(self): # Args should just be silently passed through cell_name = 'fake-cell-name' method_info = 'fake-method-info' self.mox.StubOutWithMock(self.msg_runner, 'run_compute_api_method') fake_response = self._get_fake_response() self.msg_runner.run_compute_api_method(self.ctxt, cell_name, method_info, True).AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.run_compute_api_method( self.ctxt, cell_name=cell_name, method_info=method_info, call=True) self.assertEqual('fake-response', response) def test_instance_update_at_top(self): self.mox.StubOutWithMock(self.msg_runner, 'instance_update_at_top') self.msg_runner.instance_update_at_top(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.instance_update_at_top(self.ctxt, instance='fake-instance') def test_instance_destroy_at_top(self): self.mox.StubOutWithMock(self.msg_runner, 'instance_destroy_at_top') self.msg_runner.instance_destroy_at_top(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.instance_destroy_at_top(self.ctxt, instance='fake-instance') def test_instance_delete_everywhere(self): self.mox.StubOutWithMock(self.msg_runner, 'instance_delete_everywhere') self.msg_runner.instance_delete_everywhere(self.ctxt, 'fake-instance', 'fake-type') self.mox.ReplayAll() self.cells_manager.instance_delete_everywhere( self.ctxt, instance='fake-instance', delete_type='fake-type') def test_instance_fault_create_at_top(self): self.mox.StubOutWithMock(self.msg_runner, 'instance_fault_create_at_top') self.msg_runner.instance_fault_create_at_top(self.ctxt, 'fake-fault') self.mox.ReplayAll() self.cells_manager.instance_fault_create_at_top( self.ctxt, instance_fault='fake-fault') def test_bw_usage_update_at_top(self): self.mox.StubOutWithMock(self.msg_runner, 'bw_usage_update_at_top') self.msg_runner.bw_usage_update_at_top(self.ctxt, 'fake-bw-info') self.mox.ReplayAll() self.cells_manager.bw_usage_update_at_top( self.ctxt, bw_update_info='fake-bw-info') def test_heal_instances(self): self.flags(instance_updated_at_threshold=1000, instance_update_num_instances=2, group='cells') fake_context = context.RequestContext('fake', 'fake') stalled_time = timeutils.utcnow() updated_since = stalled_time - datetime.timedelta(seconds=1000) def utcnow(): return stalled_time call_info = {'get_instances': 0, 'sync_instances': []} instances = ['instance1', 'instance2', 'instance3'] def get_instances_to_sync(context, **kwargs): self.assertEqual(context, fake_context) call_info['shuffle'] = kwargs.get('shuffle') call_info['project_id'] = kwargs.get('project_id') call_info['updated_since'] = kwargs.get('updated_since') call_info['get_instances'] += 1 return iter(instances) def instance_get_by_uuid(context, uuid): return instances[int(uuid[-1]) - 1] def sync_instance(context, instance): self.assertEqual(context, fake_context) call_info['sync_instances'].append(instance) self.stubs.Set(cells_utils, 'get_instances_to_sync', get_instances_to_sync) self.stubs.Set(self.cells_manager.db, 'instance_get_by_uuid', instance_get_by_uuid) self.stubs.Set(self.cells_manager, '_sync_instance', sync_instance) self.stubs.Set(timeutils, 'utcnow', utcnow) self.cells_manager._heal_instances(fake_context) self.assertEqual(call_info['shuffle'], True) self.assertIsNone(call_info['project_id']) self.assertEqual(call_info['updated_since'], updated_since) self.assertEqual(call_info['get_instances'], 1) # Only first 2 self.assertEqual(call_info['sync_instances'], instances[:2]) call_info['sync_instances'] = [] self.cells_manager._heal_instances(fake_context) self.assertEqual(call_info['shuffle'], True) self.assertIsNone(call_info['project_id']) self.assertEqual(call_info['updated_since'], updated_since) self.assertEqual(call_info['get_instances'], 2) # Now the last 1 and the first 1 self.assertEqual(call_info['sync_instances'], [instances[-1], instances[0]]) def test_sync_instances(self): self.mox.StubOutWithMock(self.msg_runner, 'sync_instances') self.msg_runner.sync_instances(self.ctxt, 'fake-project', 'fake-time', 'fake-deleted') self.mox.ReplayAll() self.cells_manager.sync_instances(self.ctxt, project_id='fake-project', updated_since='fake-time', deleted='fake-deleted') def test_service_get_all(self): responses = [] expected_response = [] # 3 cells... so 3 responses. Each response is a list of services. # Manager should turn these into a single list of responses. for i in xrange(3): cell_name = 'path!to!cell%i' % i services = [] for service in FAKE_SERVICES: services.append(copy.deepcopy(service)) expected_service = copy.deepcopy(service) cells_utils.add_cell_to_service(expected_service, cell_name) expected_response.append(expected_service) response = messaging.Response(cell_name, services, False) responses.append(response) self.mox.StubOutWithMock(self.msg_runner, 'service_get_all') self.msg_runner.service_get_all(self.ctxt, 'fake-filters').AndReturn(responses) self.mox.ReplayAll() response = self.cells_manager.service_get_all(self.ctxt, filters='fake-filters') self.assertEqual(expected_response, response) def test_service_get_by_compute_host(self): self.mox.StubOutWithMock(self.msg_runner, 'service_get_by_compute_host') fake_cell = 'fake-cell' fake_response = messaging.Response(fake_cell, FAKE_SERVICES[0], False) expected_response = copy.deepcopy(FAKE_SERVICES[0]) cells_utils.add_cell_to_service(expected_response, fake_cell) cell_and_host = cells_utils.cell_with_item('fake-cell', 'fake-host') self.msg_runner.service_get_by_compute_host(self.ctxt, fake_cell, 'fake-host').AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.service_get_by_compute_host(self.ctxt, host_name=cell_and_host) self.assertEqual(expected_response, response) def test_get_host_uptime(self): fake_cell = 'parent!fake-cell' fake_host = 'fake-host' fake_cell_and_host = cells_utils.cell_with_item(fake_cell, fake_host) host_uptime = (" 08:32:11 up 93 days, 18:25, 12 users, load average:" " 0.20, 0.12, 0.14") fake_response = messaging.Response(fake_cell, host_uptime, False) self.mox.StubOutWithMock(self.msg_runner, 'get_host_uptime') self.msg_runner.get_host_uptime(self.ctxt, fake_cell, fake_host).\ AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.get_host_uptime(self.ctxt, fake_cell_and_host) self.assertEqual(host_uptime, response) def test_service_update(self): fake_cell = 'fake-cell' fake_response = messaging.Response( fake_cell, FAKE_SERVICES[0], False) expected_response = copy.deepcopy(FAKE_SERVICES[0]) cells_utils.add_cell_to_service(expected_response, fake_cell) cell_and_host = cells_utils.cell_with_item('fake-cell', 'fake-host') params_to_update = {'disabled': True} self.mox.StubOutWithMock(self.msg_runner, 'service_update') self.msg_runner.service_update(self.ctxt, fake_cell, 'fake-host', 'nova-api', params_to_update).AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.service_update( self.ctxt, host_name=cell_and_host, binary='nova-api', params_to_update=params_to_update) self.assertEqual(expected_response, response) def test_service_delete(self): fake_cell = 'fake-cell' service_id = '1' cell_service_id = cells_utils.cell_with_item(fake_cell, service_id) with mock.patch.object(self.msg_runner, 'service_delete') as service_delete: self.cells_manager.service_delete(self.ctxt, cell_service_id) service_delete.assert_called_once_with( self.ctxt, fake_cell, service_id) def test_proxy_rpc_to_manager(self): self.mox.StubOutWithMock(self.msg_runner, 'proxy_rpc_to_manager') fake_response = self._get_fake_response() cell_and_host = cells_utils.cell_with_item('fake-cell', 'fake-host') topic = "%s.%s" % (CONF.compute_topic, cell_and_host) self.msg_runner.proxy_rpc_to_manager(self.ctxt, 'fake-cell', 'fake-host', topic, 'fake-rpc-msg', True, -1).AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.proxy_rpc_to_manager(self.ctxt, topic=topic, rpc_message='fake-rpc-msg', call=True, timeout=-1) self.assertEqual('fake-response', response) def _build_task_log_responses(self, num): responses = [] expected_response = [] # 3 cells... so 3 responses. Each response is a list of task log # entries. Manager should turn these into a single list of # task log entries. for i in xrange(num): cell_name = 'path!to!cell%i' % i task_logs = [] for task_log in FAKE_TASK_LOGS: task_logs.append(copy.deepcopy(task_log)) expected_task_log = copy.deepcopy(task_log) cells_utils.add_cell_to_task_log(expected_task_log, cell_name) expected_response.append(expected_task_log) response = messaging.Response(cell_name, task_logs, False) responses.append(response) return expected_response, responses def test_task_log_get_all(self): expected_response, responses = self._build_task_log_responses(3) self.mox.StubOutWithMock(self.msg_runner, 'task_log_get_all') self.msg_runner.task_log_get_all(self.ctxt, None, 'fake-name', 'fake-begin', 'fake-end', host=None, state=None).AndReturn(responses) self.mox.ReplayAll() response = self.cells_manager.task_log_get_all(self.ctxt, task_name='fake-name', period_beginning='fake-begin', period_ending='fake-end') self.assertEqual(expected_response, response) def test_task_log_get_all_with_filters(self): expected_response, responses = self._build_task_log_responses(1) cell_and_host = cells_utils.cell_with_item('fake-cell', 'fake-host') self.mox.StubOutWithMock(self.msg_runner, 'task_log_get_all') self.msg_runner.task_log_get_all(self.ctxt, 'fake-cell', 'fake-name', 'fake-begin', 'fake-end', host='fake-host', state='fake-state').AndReturn(responses) self.mox.ReplayAll() response = self.cells_manager.task_log_get_all(self.ctxt, task_name='fake-name', period_beginning='fake-begin', period_ending='fake-end', host=cell_and_host, state='fake-state') self.assertEqual(expected_response, response) def test_task_log_get_all_with_cell_but_no_host_filters(self): expected_response, responses = self._build_task_log_responses(1) # Host filter only has cell name. cell_and_host = 'fake-cell' self.mox.StubOutWithMock(self.msg_runner, 'task_log_get_all') self.msg_runner.task_log_get_all(self.ctxt, 'fake-cell', 'fake-name', 'fake-begin', 'fake-end', host=None, state='fake-state').AndReturn(responses) self.mox.ReplayAll() response = self.cells_manager.task_log_get_all(self.ctxt, task_name='fake-name', period_beginning='fake-begin', period_ending='fake-end', host=cell_and_host, state='fake-state') self.assertEqual(expected_response, response) def test_compute_node_get_all(self): responses = [] expected_response = [] # 3 cells... so 3 responses. Each response is a list of computes. # Manager should turn these into a single list of responses. for i in xrange(3): cell_name = 'path!to!cell%i' % i compute_nodes = [] for compute_node in FAKE_COMPUTE_NODES: compute_nodes.append(copy.deepcopy(compute_node)) expected_compute_node = copy.deepcopy(compute_node) cells_utils.add_cell_to_compute_node(expected_compute_node, cell_name) expected_response.append(expected_compute_node) response = messaging.Response(cell_name, compute_nodes, False) responses.append(response) self.mox.StubOutWithMock(self.msg_runner, 'compute_node_get_all') self.msg_runner.compute_node_get_all(self.ctxt, hypervisor_match='fake-match').AndReturn(responses) self.mox.ReplayAll() response = self.cells_manager.compute_node_get_all(self.ctxt, hypervisor_match='fake-match') self.assertEqual(expected_response, response) def test_compute_node_stats(self): raw_resp1 = {'key1': 1, 'key2': 2} raw_resp2 = {'key2': 1, 'key3': 2} raw_resp3 = {'key3': 1, 'key4': 2} responses = [messaging.Response('cell1', raw_resp1, False), messaging.Response('cell2', raw_resp2, False), messaging.Response('cell2', raw_resp3, False)] expected_resp = {'key1': 1, 'key2': 3, 'key3': 3, 'key4': 2} self.mox.StubOutWithMock(self.msg_runner, 'compute_node_stats') self.msg_runner.compute_node_stats(self.ctxt).AndReturn(responses) self.mox.ReplayAll() response = self.cells_manager.compute_node_stats(self.ctxt) self.assertEqual(expected_resp, response) def test_compute_node_get(self): fake_cell = 'fake-cell' fake_response = messaging.Response(fake_cell, FAKE_COMPUTE_NODES[0], False) expected_response = copy.deepcopy(FAKE_COMPUTE_NODES[0]) cells_utils.add_cell_to_compute_node(expected_response, fake_cell) cell_and_id = cells_utils.cell_with_item(fake_cell, 'fake-id') self.mox.StubOutWithMock(self.msg_runner, 'compute_node_get') self.msg_runner.compute_node_get(self.ctxt, 'fake-cell', 'fake-id').AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.compute_node_get(self.ctxt, compute_id=cell_and_id) self.assertEqual(expected_response, response) def test_actions_get(self): fake_uuid = fake_instance_actions.FAKE_UUID fake_req_id = fake_instance_actions.FAKE_REQUEST_ID1 fake_act = fake_instance_actions.FAKE_ACTIONS[fake_uuid][fake_req_id] fake_response = messaging.Response('fake-cell', [fake_act], False) expected_response = [fake_act] self.mox.StubOutWithMock(self.msg_runner, 'actions_get') self.msg_runner.actions_get(self.ctxt, 'fake-cell', 'fake-uuid').AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.actions_get(self.ctxt, 'fake-cell', 'fake-uuid') self.assertEqual(expected_response, response) def test_action_get_by_request_id(self): fake_uuid = fake_instance_actions.FAKE_UUID fake_req_id = fake_instance_actions.FAKE_REQUEST_ID1 fake_act = fake_instance_actions.FAKE_ACTIONS[fake_uuid][fake_req_id] fake_response = messaging.Response('fake-cell', fake_act, False) expected_response = fake_act self.mox.StubOutWithMock(self.msg_runner, 'action_get_by_request_id') self.msg_runner.action_get_by_request_id(self.ctxt, 'fake-cell', 'fake-uuid', 'req-fake').AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.action_get_by_request_id(self.ctxt, 'fake-cell', 'fake-uuid', 'req-fake') self.assertEqual(expected_response, response) def test_action_events_get(self): fake_action_id = fake_instance_actions.FAKE_ACTION_ID1 fake_events = fake_instance_actions.FAKE_EVENTS[fake_action_id] fake_response = messaging.Response('fake-cell', fake_events, False) expected_response = fake_events self.mox.StubOutWithMock(self.msg_runner, 'action_events_get') self.msg_runner.action_events_get(self.ctxt, 'fake-cell', 'fake-action').AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.action_events_get(self.ctxt, 'fake-cell', 'fake-action') self.assertEqual(expected_response, response) def test_consoleauth_delete_tokens(self): instance_uuid = 'fake-instance-uuid' self.mox.StubOutWithMock(self.msg_runner, 'consoleauth_delete_tokens') self.msg_runner.consoleauth_delete_tokens(self.ctxt, instance_uuid) self.mox.ReplayAll() self.cells_manager.consoleauth_delete_tokens(self.ctxt, instance_uuid=instance_uuid) def test_get_capacities(self): cell_name = 'cell_name' response = {"ram_free": {"units_by_mb": {"64": 20, "128": 10}, "total_mb": 1491}} self.mox.StubOutWithMock(self.state_manager, 'get_capacities') self.state_manager.get_capacities(cell_name).AndReturn(response) self.mox.ReplayAll() self.assertEqual(response, self.cells_manager.get_capacities(self.ctxt, cell_name)) def test_validate_console_port(self): instance_uuid = 'fake-instance-uuid' cell_name = 'fake-cell-name' instance = {'cell_name': cell_name} console_port = 'fake-console-port' console_type = 'fake-console-type' self.mox.StubOutWithMock(self.msg_runner, 'validate_console_port') self.mox.StubOutWithMock(self.cells_manager.db, 'instance_get_by_uuid') fake_response = self._get_fake_response() self.cells_manager.db.instance_get_by_uuid(self.ctxt, instance_uuid).AndReturn(instance) self.msg_runner.validate_console_port(self.ctxt, cell_name, instance_uuid, console_port, console_type).AndReturn(fake_response) self.mox.ReplayAll() response = self.cells_manager.validate_console_port(self.ctxt, instance_uuid=instance_uuid, console_port=console_port, console_type=console_type) self.assertEqual('fake-response', response) def test_bdm_update_or_create_at_top(self): self.mox.StubOutWithMock(self.msg_runner, 'bdm_update_or_create_at_top') self.msg_runner.bdm_update_or_create_at_top(self.ctxt, 'fake-bdm', create='foo') self.mox.ReplayAll() self.cells_manager.bdm_update_or_create_at_top(self.ctxt, 'fake-bdm', create='foo') def test_bdm_destroy_at_top(self): self.mox.StubOutWithMock(self.msg_runner, 'bdm_destroy_at_top') self.msg_runner.bdm_destroy_at_top(self.ctxt, 'fake_instance_uuid', device_name='fake_device_name', volume_id='fake_volume_id') self.mox.ReplayAll() self.cells_manager.bdm_destroy_at_top(self.ctxt, 'fake_instance_uuid', device_name='fake_device_name', volume_id='fake_volume_id') def test_get_migrations(self): filters = {'status': 'confirmed'} cell1_migrations = [{'id': 123}] cell2_migrations = [{'id': 456}] fake_responses = [self._get_fake_response(cell1_migrations), self._get_fake_response(cell2_migrations)] self.mox.StubOutWithMock(self.msg_runner, 'get_migrations') self.msg_runner.get_migrations(self.ctxt, None, False, filters).\ AndReturn(fake_responses) self.mox.ReplayAll() response = self.cells_manager.get_migrations(self.ctxt, filters) self.assertEqual([cell1_migrations[0], cell2_migrations[0]], response) def test_get_migrations_for_a_given_cell(self): filters = {'status': 'confirmed', 'cell_name': 'ChildCell1'} target_cell = '%s%s%s' % (CONF.cells.name, '!', filters['cell_name']) migrations = [{'id': 123}] fake_responses = [self._get_fake_response(migrations)] self.mox.StubOutWithMock(self.msg_runner, 'get_migrations') self.msg_runner.get_migrations(self.ctxt, target_cell, False, filters).AndReturn(fake_responses) self.mox.ReplayAll() response = self.cells_manager.get_migrations(self.ctxt, filters) self.assertEqual(migrations, response) def test_instance_update_from_api(self): self.mox.StubOutWithMock(self.msg_runner, 'instance_update_from_api') self.msg_runner.instance_update_from_api(self.ctxt, 'fake-instance', 'exp_vm', 'exp_task', 'admin_reset') self.mox.ReplayAll() self.cells_manager.instance_update_from_api( self.ctxt, instance='fake-instance', expected_vm_state='exp_vm', expected_task_state='exp_task', admin_state_reset='admin_reset') def test_start_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'start_instance') self.msg_runner.start_instance(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.start_instance(self.ctxt, instance='fake-instance') def test_stop_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'stop_instance') self.msg_runner.stop_instance(self.ctxt, 'fake-instance', do_cast='meow') self.mox.ReplayAll() self.cells_manager.stop_instance(self.ctxt, instance='fake-instance', do_cast='meow') def test_cell_create(self): values = 'values' response = 'created_cell' self.mox.StubOutWithMock(self.state_manager, 'cell_create') self.state_manager.cell_create(self.ctxt, values).\ AndReturn(response) self.mox.ReplayAll() self.assertEqual(response, self.cells_manager.cell_create(self.ctxt, values)) def test_cell_update(self): cell_name = 'cell_name' values = 'values' response = 'updated_cell' self.mox.StubOutWithMock(self.state_manager, 'cell_update') self.state_manager.cell_update(self.ctxt, cell_name, values).\ AndReturn(response) self.mox.ReplayAll() self.assertEqual(response, self.cells_manager.cell_update(self.ctxt, cell_name, values)) def test_cell_delete(self): cell_name = 'cell_name' response = 1 self.mox.StubOutWithMock(self.state_manager, 'cell_delete') self.state_manager.cell_delete(self.ctxt, cell_name).\ AndReturn(response) self.mox.ReplayAll() self.assertEqual(response, self.cells_manager.cell_delete(self.ctxt, cell_name)) def test_cell_get(self): cell_name = 'cell_name' response = 'cell_info' self.mox.StubOutWithMock(self.state_manager, 'cell_get') self.state_manager.cell_get(self.ctxt, cell_name).\ AndReturn(response) self.mox.ReplayAll() self.assertEqual(response, self.cells_manager.cell_get(self.ctxt, cell_name)) def test_reboot_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'reboot_instance') self.msg_runner.reboot_instance(self.ctxt, 'fake-instance', 'HARD') self.mox.ReplayAll() self.cells_manager.reboot_instance(self.ctxt, instance='fake-instance', reboot_type='HARD') def test_suspend_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'suspend_instance') self.msg_runner.suspend_instance(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.suspend_instance(self.ctxt, instance='fake-instance') def test_resume_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'resume_instance') self.msg_runner.resume_instance(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.resume_instance(self.ctxt, instance='fake-instance') def test_terminate_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'terminate_instance') self.msg_runner.terminate_instance(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.terminate_instance(self.ctxt, instance='fake-instance') def test_soft_delete_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'soft_delete_instance') self.msg_runner.soft_delete_instance(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.soft_delete_instance(self.ctxt, instance='fake-instance') def test_resize_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'resize_instance') self.msg_runner.resize_instance(self.ctxt, 'fake-instance', 'fake-flavor', 'fake-updates') self.mox.ReplayAll() self.cells_manager.resize_instance( self.ctxt, instance='fake-instance', flavor='fake-flavor', extra_instance_updates='fake-updates') def test_live_migrate_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'live_migrate_instance') self.msg_runner.live_migrate_instance(self.ctxt, 'fake-instance', 'fake-block', 'fake-commit', 'fake-host') self.mox.ReplayAll() self.cells_manager.live_migrate_instance( self.ctxt, instance='fake-instance', block_migration='fake-block', disk_over_commit='fake-commit', host_name='fake-host') def test_revert_resize(self): self.mox.StubOutWithMock(self.msg_runner, 'revert_resize') self.msg_runner.revert_resize(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.revert_resize(self.ctxt, instance='fake-instance') def test_confirm_resize(self): self.mox.StubOutWithMock(self.msg_runner, 'confirm_resize') self.msg_runner.confirm_resize(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.confirm_resize(self.ctxt, instance='fake-instance') def test_reset_network(self): self.mox.StubOutWithMock(self.msg_runner, 'reset_network') self.msg_runner.reset_network(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.reset_network(self.ctxt, instance='fake-instance') def test_inject_network_info(self): self.mox.StubOutWithMock(self.msg_runner, 'inject_network_info') self.msg_runner.inject_network_info(self.ctxt, 'fake-instance') self.mox.ReplayAll() self.cells_manager.inject_network_info(self.ctxt, instance='fake-instance') def test_snapshot_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'snapshot_instance') self.msg_runner.snapshot_instance(self.ctxt, 'fake-instance', 'fake-id') self.mox.ReplayAll() self.cells_manager.snapshot_instance(self.ctxt, instance='fake-instance', image_id='fake-id') def test_backup_instance(self): self.mox.StubOutWithMock(self.msg_runner, 'backup_instance') self.msg_runner.backup_instance(self.ctxt, 'fake-instance', 'fake-id', 'backup-type', 'rotation') self.mox.ReplayAll() self.cells_manager.backup_instance(self.ctxt, instance='fake-instance', image_id='fake-id', backup_type='backup-type', rotation='rotation') nova-2014.1/nova/tests/cells/test_cells_weights.py0000664000175400017540000002152512323721477023373 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Unit Tests for testing the cells weight algorithms. Cells with higher weights should be given priority for new builds. """ import datetime from nova.cells import state from nova.cells import weights from nova.openstack.common import timeutils from nova import test class FakeCellState(state.CellState): def __init__(self, cell_name): super(FakeCellState, self).__init__(cell_name) self.capacities['ram_free'] = {'total_mb': 0, 'units_by_mb': {}} self.db_info = {} def _update_ram_free(self, *args): ram_free = self.capacities['ram_free'] for ram_size, units in args: ram_free['total_mb'] += units * ram_size ram_free['units_by_mb'][str(ram_size)] = units def _get_fake_cells(): cell1 = FakeCellState('cell1') cell1._update_ram_free((512, 1), (1024, 4), (2048, 3)) cell1.db_info['weight_offset'] = -200.0 cell2 = FakeCellState('cell2') cell2._update_ram_free((512, 2), (1024, 3), (2048, 4)) cell2.db_info['weight_offset'] = -200.1 cell3 = FakeCellState('cell3') cell3._update_ram_free((512, 3), (1024, 2), (2048, 1)) cell3.db_info['weight_offset'] = 400.0 cell4 = FakeCellState('cell4') cell4._update_ram_free((512, 4), (1024, 1), (2048, 2)) cell4.db_info['weight_offset'] = 300.0 return [cell1, cell2, cell3, cell4] class CellsWeightsTestCase(test.NoDBTestCase): """Makes sure the proper weighers are in the directory.""" def test_all_weighers(self): weighers = weights.all_weighers() # Check at least a couple that we expect are there self.assertTrue(len(weighers) >= 2) class_names = [cls.__name__ for cls in weighers] self.assertIn('WeightOffsetWeigher', class_names) self.assertIn('RamByInstanceTypeWeigher', class_names) class _WeigherTestClass(test.NoDBTestCase): """Base class for testing individual weigher plugins.""" weigher_cls_name = None def setUp(self): super(_WeigherTestClass, self).setUp() self.weight_handler = weights.CellWeightHandler() self.weight_classes = self.weight_handler.get_matching_classes( [self.weigher_cls_name]) def _get_weighed_cells(self, cells, weight_properties): return self.weight_handler.get_weighed_objects(self.weight_classes, cells, weight_properties) class RAMByInstanceTypeWeigherTestClass(_WeigherTestClass): weigher_cls_name = ('nova.cells.weights.ram_by_instance_type.' 'RamByInstanceTypeWeigher') def test_default_spreading(self): """Test that cells with more ram available return a higher weight.""" cells = _get_fake_cells() # Simulate building a new 512MB instance. instance_type = {'memory_mb': 512} weight_properties = {'request_spec': {'instance_type': instance_type}} weighed_cells = self._get_weighed_cells(cells, weight_properties) self.assertEqual(len(weighed_cells), 4) resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] expected_cells = [cells[3], cells[2], cells[1], cells[0]] self.assertEqual(expected_cells, resulting_cells) # Simulate building a new 1024MB instance. instance_type = {'memory_mb': 1024} weight_properties = {'request_spec': {'instance_type': instance_type}} weighed_cells = self._get_weighed_cells(cells, weight_properties) self.assertEqual(len(weighed_cells), 4) resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] expected_cells = [cells[0], cells[1], cells[2], cells[3]] self.assertEqual(expected_cells, resulting_cells) # Simulate building a new 2048MB instance. instance_type = {'memory_mb': 2048} weight_properties = {'request_spec': {'instance_type': instance_type}} weighed_cells = self._get_weighed_cells(cells, weight_properties) self.assertEqual(len(weighed_cells), 4) resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] expected_cells = [cells[1], cells[0], cells[3], cells[2]] self.assertEqual(expected_cells, resulting_cells) def test_negative_multiplier(self): """Test that cells with less ram available return a higher weight.""" self.flags(ram_weight_multiplier=-1.0, group='cells') cells = _get_fake_cells() # Simulate building a new 512MB instance. instance_type = {'memory_mb': 512} weight_properties = {'request_spec': {'instance_type': instance_type}} weighed_cells = self._get_weighed_cells(cells, weight_properties) self.assertEqual(len(weighed_cells), 4) resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] expected_cells = [cells[0], cells[1], cells[2], cells[3]] self.assertEqual(expected_cells, resulting_cells) # Simulate building a new 1024MB instance. instance_type = {'memory_mb': 1024} weight_properties = {'request_spec': {'instance_type': instance_type}} weighed_cells = self._get_weighed_cells(cells, weight_properties) self.assertEqual(len(weighed_cells), 4) resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] expected_cells = [cells[3], cells[2], cells[1], cells[0]] self.assertEqual(expected_cells, resulting_cells) # Simulate building a new 2048MB instance. instance_type = {'memory_mb': 2048} weight_properties = {'request_spec': {'instance_type': instance_type}} weighed_cells = self._get_weighed_cells(cells, weight_properties) self.assertEqual(len(weighed_cells), 4) resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] expected_cells = [cells[2], cells[3], cells[0], cells[1]] self.assertEqual(expected_cells, resulting_cells) class WeightOffsetWeigherTestClass(_WeigherTestClass): """Test the RAMWeigher class.""" weigher_cls_name = 'nova.cells.weights.weight_offset.WeightOffsetWeigher' def test_weight_offset(self): """Test that cells with higher weight_offsets return higher weights. """ cells = _get_fake_cells() weighed_cells = self._get_weighed_cells(cells, {}) self.assertEqual(len(weighed_cells), 4) expected_cells = [cells[2], cells[3], cells[0], cells[1]] resulting_cells = [weighed_cell.obj for weighed_cell in weighed_cells] self.assertEqual(expected_cells, resulting_cells) class MuteWeigherTestClass(_WeigherTestClass): weigher_cls_name = 'nova.cells.weights.mute_child.MuteChildWeigher' def setUp(self): super(MuteWeigherTestClass, self).setUp() self.flags(mute_weight_multiplier=-10.0, mute_child_interval=100, mute_weight_value=1000.0, group='cells') self.now = timeutils.utcnow() timeutils.set_time_override(self.now) self.cells = _get_fake_cells() for cell in self.cells: cell.last_seen = self.now def tearDown(self): super(MuteWeigherTestClass, self).tearDown() timeutils.clear_time_override() def test_non_mute(self): weight_properties = {} weighed_cells = self._get_weighed_cells(self.cells, weight_properties) self.assertEqual(len(weighed_cells), 4) for weighed_cell in weighed_cells: self.assertEqual(0, weighed_cell.weight) def test_mutes(self): # make 2 of them mute: self.cells[0].last_seen = (self.cells[0].last_seen - datetime.timedelta(seconds=200)) self.cells[1].last_seen = (self.cells[1].last_seen - datetime.timedelta(seconds=200)) weight_properties = {} weighed_cells = self._get_weighed_cells(self.cells, weight_properties) self.assertEqual(len(weighed_cells), 4) for i in range(2): weighed_cell = weighed_cells.pop(0) self.assertEqual(0, weighed_cell.weight) self.assertIn(weighed_cell.obj.name, ['cell3', 'cell4']) for i in range(2): weighed_cell = weighed_cells.pop(0) self.assertEqual(-10.0, weighed_cell.weight) self.assertIn(weighed_cell.obj.name, ['cell1', 'cell2']) nova-2014.1/nova/tests/cells/fakes.py0000664000175400017540000001555212323721477020574 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Fakes For Cells tests. """ from oslo.config import cfg from nova.cells import driver from nova.cells import manager as cells_manager from nova.cells import state as cells_state from nova.cells import utils as cells_utils import nova.db from nova.db import base from nova import exception CONF = cfg.CONF CONF.import_opt('name', 'nova.cells.opts', group='cells') # Fake Cell Hierarchy FAKE_TOP_LEVEL_CELL_NAME = 'api-cell' FAKE_CELL_LAYOUT = [{'child-cell1': []}, {'child-cell2': [{'grandchild-cell1': []}]}, {'child-cell3': [{'grandchild-cell2': []}, {'grandchild-cell3': []}]}, {'child-cell4': []}] # build_cell_stub_infos() below will take the above layout and create # a fake view of the DB from the perspective of each of the cells. # For each cell, a CellStubInfo will be created with this info. CELL_NAME_TO_STUB_INFO = {} class FakeDBApi(object): """Cells uses a different DB in each cell. This means in order to stub out things differently per cell, I need to create a fake DBApi object that is instantiated by each fake cell. """ def __init__(self, cell_db_entries): self.cell_db_entries = cell_db_entries def __getattr__(self, key): return getattr(nova.db, key) def cell_get_all(self, ctxt): return self.cell_db_entries def compute_node_get_all(self, ctxt): return [] def instance_get_all_by_filters(self, ctxt, *args, **kwargs): return [] def instance_get_by_uuid(self, ctxt, instance_uuid): raise exception.InstanceNotFound(instance_id=instance_uuid) class FakeCellsDriver(driver.BaseCellsDriver): pass class FakeCellState(cells_state.CellState): def send_message(self, message): message_runner = get_message_runner(self.name) orig_ctxt = message.ctxt json_message = message.to_json() message = message_runner.message_from_json(json_message) # Restore this so we can use mox and verify same context message.ctxt = orig_ctxt message.process() class FakeCellStateManager(cells_state.CellStateManagerDB): def __init__(self, *args, **kwargs): super(FakeCellStateManager, self).__init__(*args, cell_state_cls=FakeCellState, **kwargs) class FakeCellsManager(cells_manager.CellsManager): def __init__(self, *args, **kwargs): super(FakeCellsManager, self).__init__(*args, cell_state_manager=FakeCellStateManager, **kwargs) class CellStubInfo(object): def __init__(self, test_case, cell_name, db_entries): self.test_case = test_case self.cell_name = cell_name self.db_entries = db_entries def fake_base_init(_self, *args, **kwargs): _self.db = FakeDBApi(db_entries) test_case.stubs.Set(base.Base, '__init__', fake_base_init) self.cells_manager = FakeCellsManager() # Fix the cell name, as it normally uses CONF.cells.name msg_runner = self.cells_manager.msg_runner msg_runner.our_name = self.cell_name self.cells_manager.state_manager.my_cell_state.name = self.cell_name def _build_cell_transport_url(cur_db_id): username = 'username%s' % cur_db_id password = 'password%s' % cur_db_id hostname = 'rpc_host%s' % cur_db_id port = 3090 + cur_db_id virtual_host = 'rpc_vhost%s' % cur_db_id return 'rabbit://%s:%s@%s:%s/%s' % (username, password, hostname, port, virtual_host) def _build_cell_stub_info(test_case, our_name, parent_path, children): cell_db_entries = [] cur_db_id = 1 sep_char = cells_utils.PATH_CELL_SEP if parent_path: cell_db_entries.append( dict(id=cur_db_id, name=parent_path.split(sep_char)[-1], is_parent=True, transport_url=_build_cell_transport_url(cur_db_id))) cur_db_id += 1 our_path = parent_path + sep_char + our_name else: our_path = our_name for child in children: for child_name, grandchildren in child.items(): _build_cell_stub_info(test_case, child_name, our_path, grandchildren) cell_entry = dict(id=cur_db_id, name=child_name, transport_url=_build_cell_transport_url( cur_db_id), is_parent=False) cell_db_entries.append(cell_entry) cur_db_id += 1 stub_info = CellStubInfo(test_case, our_name, cell_db_entries) CELL_NAME_TO_STUB_INFO[our_name] = stub_info def _build_cell_stub_infos(test_case): _build_cell_stub_info(test_case, FAKE_TOP_LEVEL_CELL_NAME, '', FAKE_CELL_LAYOUT) def init(test_case): global CELL_NAME_TO_STUB_INFO test_case.flags(driver='nova.tests.cells.fakes.FakeCellsDriver', group='cells') CELL_NAME_TO_STUB_INFO = {} _build_cell_stub_infos(test_case) def _get_cell_stub_info(cell_name): return CELL_NAME_TO_STUB_INFO[cell_name] def get_state_manager(cell_name): return _get_cell_stub_info(cell_name).cells_manager.state_manager def get_cell_state(cur_cell_name, tgt_cell_name): state_manager = get_state_manager(cur_cell_name) cell = state_manager.child_cells.get(tgt_cell_name) if cell is None: cell = state_manager.parent_cells.get(tgt_cell_name) return cell def get_cells_manager(cell_name): return _get_cell_stub_info(cell_name).cells_manager def get_message_runner(cell_name): return _get_cell_stub_info(cell_name).cells_manager.msg_runner def stub_tgt_method(test_case, cell_name, method_name, method): msg_runner = get_message_runner(cell_name) tgt_msg_methods = msg_runner.methods_by_type['targeted'] setattr(tgt_msg_methods, method_name, method) def stub_bcast_method(test_case, cell_name, method_name, method): msg_runner = get_message_runner(cell_name) tgt_msg_methods = msg_runner.methods_by_type['broadcast'] setattr(tgt_msg_methods, method_name, method) def stub_bcast_methods(test_case, method_name, method): for cell_name in CELL_NAME_TO_STUB_INFO.keys(): stub_bcast_method(test_case, cell_name, method_name, method) nova-2014.1/nova/tests/cells/test_cells_rpc_driver.py0000664000175400017540000001764712323721477024072 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # Copyright 2013 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. """ Tests For Cells RPC Communication Driver """ import mox from oslo.config import cfg from oslo import messaging as oslo_messaging from nova.cells import messaging from nova.cells import rpc_driver from nova import context from nova import rpc from nova import test from nova.tests.cells import fakes CONF = cfg.CONF CONF.import_opt('rpc_driver_queue_base', 'nova.cells.rpc_driver', group='cells') class CellsRPCDriverTestCase(test.NoDBTestCase): """Test case for Cells communication via RPC.""" def setUp(self): super(CellsRPCDriverTestCase, self).setUp() fakes.init(self) self.ctxt = context.RequestContext('fake', 'fake') self.driver = rpc_driver.CellsRPCDriver() def test_start_servers(self): self.flags(rpc_driver_queue_base='cells.intercell42', group='cells') fake_msg_runner = fakes.get_message_runner('api-cell') class FakeInterCellRPCDispatcher(object): def __init__(_self, msg_runner): self.assertEqual(fake_msg_runner, msg_runner) self.stubs.Set(rpc_driver, 'InterCellRPCDispatcher', FakeInterCellRPCDispatcher) self.mox.StubOutWithMock(rpc, 'get_server') for message_type in messaging.MessageRunner.get_message_types(): topic = 'cells.intercell42.' + message_type target = oslo_messaging.Target(topic=topic, server=CONF.host) endpoints = [mox.IsA(FakeInterCellRPCDispatcher)] rpcserver = self.mox.CreateMockAnything() rpc.get_server(target, endpoints=endpoints).AndReturn(rpcserver) rpcserver.start() self.mox.ReplayAll() self.driver.start_servers(fake_msg_runner) def test_stop_servers(self): call_info = {'stopped': []} class FakeRPCServer(object): def stop(self): call_info['stopped'].append(self) fake_servers = [FakeRPCServer() for x in xrange(5)] self.driver.rpc_servers = fake_servers self.driver.stop_servers() self.assertEqual(fake_servers, call_info['stopped']) def test_send_message_to_cell_cast(self): msg_runner = fakes.get_message_runner('api-cell') cell_state = fakes.get_cell_state('api-cell', 'child-cell2') message = messaging._TargetedMessage(msg_runner, self.ctxt, 'fake', {}, 'down', cell_state, fanout=False) expected_server_params = {'hostname': 'rpc_host2', 'password': 'password2', 'port': 3092, 'username': 'username2', 'virtual_host': 'rpc_vhost2'} expected_url = ('rabbit://%(username)s:%(password)s@' '%(hostname)s:%(port)d/%(virtual_host)s' % expected_server_params) def check_transport_url(cell_state): return cell_state.db_info['transport_url'] == expected_url rpcapi = self.driver.intercell_rpcapi rpcclient = self.mox.CreateMockAnything() self.mox.StubOutWithMock(rpcapi, '_get_client') rpcapi._get_client( mox.Func(check_transport_url), 'cells.intercell.targeted').AndReturn(rpcclient) rpcclient.cast(mox.IgnoreArg(), 'process_message', message=message.to_json()) self.mox.ReplayAll() self.driver.send_message_to_cell(cell_state, message) def test_send_message_to_cell_fanout_cast(self): msg_runner = fakes.get_message_runner('api-cell') cell_state = fakes.get_cell_state('api-cell', 'child-cell2') message = messaging._TargetedMessage(msg_runner, self.ctxt, 'fake', {}, 'down', cell_state, fanout=True) expected_server_params = {'hostname': 'rpc_host2', 'password': 'password2', 'port': 3092, 'username': 'username2', 'virtual_host': 'rpc_vhost2'} expected_url = ('rabbit://%(username)s:%(password)s@' '%(hostname)s:%(port)d/%(virtual_host)s' % expected_server_params) def check_transport_url(cell_state): return cell_state.db_info['transport_url'] == expected_url rpcapi = self.driver.intercell_rpcapi rpcclient = self.mox.CreateMockAnything() self.mox.StubOutWithMock(rpcapi, '_get_client') rpcapi._get_client( mox.Func(check_transport_url), 'cells.intercell.targeted').AndReturn(rpcclient) rpcclient.prepare(fanout=True).AndReturn(rpcclient) rpcclient.cast(mox.IgnoreArg(), 'process_message', message=message.to_json()) self.mox.ReplayAll() self.driver.send_message_to_cell(cell_state, message) def test_rpc_topic_uses_message_type(self): self.flags(rpc_driver_queue_base='cells.intercell42', group='cells') msg_runner = fakes.get_message_runner('api-cell') cell_state = fakes.get_cell_state('api-cell', 'child-cell2') message = messaging._BroadcastMessage(msg_runner, self.ctxt, 'fake', {}, 'down', fanout=True) message.message_type = 'fake-message-type' expected_server_params = {'hostname': 'rpc_host2', 'password': 'password2', 'port': 3092, 'username': 'username2', 'virtual_host': 'rpc_vhost2'} expected_url = ('rabbit://%(username)s:%(password)s@' '%(hostname)s:%(port)d/%(virtual_host)s' % expected_server_params) def check_transport_url(cell_state): return cell_state.db_info['transport_url'] == expected_url rpcapi = self.driver.intercell_rpcapi rpcclient = self.mox.CreateMockAnything() self.mox.StubOutWithMock(rpcapi, '_get_client') rpcapi._get_client( mox.Func(check_transport_url), 'cells.intercell42.fake-message-type').AndReturn(rpcclient) rpcclient.prepare(fanout=True).AndReturn(rpcclient) rpcclient.cast(mox.IgnoreArg(), 'process_message', message=message.to_json()) self.mox.ReplayAll() self.driver.send_message_to_cell(cell_state, message) def test_process_message(self): msg_runner = fakes.get_message_runner('api-cell') dispatcher = rpc_driver.InterCellRPCDispatcher(msg_runner) message = messaging._BroadcastMessage(msg_runner, self.ctxt, 'fake', {}, 'down', fanout=True) call_info = {} def _fake_message_from_json(json_message): call_info['json_message'] = json_message self.assertEqual(message.to_json(), json_message) return message def _fake_process(): call_info['process_called'] = True self.stubs.Set(msg_runner, 'message_from_json', _fake_message_from_json) self.stubs.Set(message, 'process', _fake_process) dispatcher.process_message(self.ctxt, message.to_json()) self.assertEqual(message.to_json(), call_info['json_message']) self.assertTrue(call_info['process_called']) nova-2014.1/nova/tests/cells/test_cells_state_manager.py0000664000175400017540000001756212323721477024541 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For CellStateManager """ from oslo.config import cfg from nova.cells import state from nova import db from nova.db.sqlalchemy import models from nova import exception from nova import test FAKE_COMPUTES = [ ('host1', 1024, 100, 0, 0), ('host2', 1024, 100, -1, -1), ('host3', 1024, 100, 1024, 100), ('host4', 1024, 100, 300, 30), ] # NOTE(alaski): It's important to have multiple types that end up having the # same memory and disk requirements. So two types need the same first value, # and two need the second and third values to add up to the same thing. FAKE_ITYPES = [ (0, 0, 0), (50, 12, 13), (50, 2, 4), (10, 20, 5), ] def _fake_compute_node_get_all(context): def _node(host, total_mem, total_disk, free_mem, free_disk): service = {'host': host, 'disabled': False} return {'service': service, 'memory_mb': total_mem, 'local_gb': total_disk, 'free_ram_mb': free_mem, 'free_disk_gb': free_disk} return [_node(*fake) for fake in FAKE_COMPUTES] def _fake_instance_type_all(context): def _type(mem, root, eph): return {'root_gb': root, 'ephemeral_gb': eph, 'memory_mb': mem} return [_type(*fake) for fake in FAKE_ITYPES] class TestCellsStateManager(test.TestCase): def setUp(self): super(TestCellsStateManager, self).setUp() self.stubs.Set(db, 'compute_node_get_all', _fake_compute_node_get_all) self.stubs.Set(db, 'flavor_get_all', _fake_instance_type_all) def test_cells_config_not_found(self): self.flags(cells_config='no_such_file_exists.conf', group='cells') e = self.assertRaises(cfg.ConfigFilesNotFoundError, state.CellStateManager) self.assertEqual(['no_such_file_exists.conf'], e.config_files) def test_capacity_no_reserve(self): # utilize entire cell cap = self._capacity(0.0) cell_free_ram = sum(compute[3] for compute in FAKE_COMPUTES) self.assertEqual(cell_free_ram, cap['ram_free']['total_mb']) cell_free_disk = 1024 * sum(compute[4] for compute in FAKE_COMPUTES) self.assertEqual(cell_free_disk, cap['disk_free']['total_mb']) self.assertEqual(0, cap['ram_free']['units_by_mb']['0']) self.assertEqual(0, cap['disk_free']['units_by_mb']['0']) units = cell_free_ram / 50 self.assertEqual(units, cap['ram_free']['units_by_mb']['50']) sz = 25 * 1024 units = 5 # 4 on host 3, 1 on host4 self.assertEqual(units, cap['disk_free']['units_by_mb'][str(sz)]) def test_capacity_full_reserve(self): # reserve the entire cell. (utilize zero percent) cap = self._capacity(100.0) cell_free_ram = sum(compute[3] for compute in FAKE_COMPUTES) self.assertEqual(cell_free_ram, cap['ram_free']['total_mb']) cell_free_disk = 1024 * sum(compute[4] for compute in FAKE_COMPUTES) self.assertEqual(cell_free_disk, cap['disk_free']['total_mb']) self.assertEqual(0, cap['ram_free']['units_by_mb']['0']) self.assertEqual(0, cap['disk_free']['units_by_mb']['0']) self.assertEqual(0, cap['ram_free']['units_by_mb']['50']) sz = 25 * 1024 self.assertEqual(0, cap['disk_free']['units_by_mb'][str(sz)]) def test_capacity_part_reserve(self): # utilize half the cell's free capacity cap = self._capacity(50.0) cell_free_ram = sum(compute[3] for compute in FAKE_COMPUTES) self.assertEqual(cell_free_ram, cap['ram_free']['total_mb']) cell_free_disk = 1024 * sum(compute[4] for compute in FAKE_COMPUTES) self.assertEqual(cell_free_disk, cap['disk_free']['total_mb']) self.assertEqual(0, cap['ram_free']['units_by_mb']['0']) self.assertEqual(0, cap['disk_free']['units_by_mb']['0']) units = 10 # 10 from host 3 self.assertEqual(units, cap['ram_free']['units_by_mb']['50']) sz = 25 * 1024 units = 2 # 2 on host 3 self.assertEqual(units, cap['disk_free']['units_by_mb'][str(sz)]) def _get_state_manager(self, reserve_percent=0.0): self.flags(reserve_percent=reserve_percent, group='cells') return state.CellStateManager() def _capacity(self, reserve_percent): state_manager = self._get_state_manager(reserve_percent) my_state = state_manager.get_my_state() return my_state.capacities class TestCellsGetCapacity(TestCellsStateManager): def setUp(self): super(TestCellsGetCapacity, self).setUp() self.capacities = {"ram_free": 1234} self.state_manager = self._get_state_manager() cell = models.Cell(name="cell_name") other_cell = models.Cell(name="other_cell_name") cell.capacities = self.capacities other_cell.capacities = self.capacities self.stubs.Set(self.state_manager, 'child_cells', {"cell_name": cell, "other_cell_name": other_cell}) def test_get_cell_capacity_for_all_cells(self): self.stubs.Set(self.state_manager.my_cell_state, 'capacities', self.capacities) capacities = self.state_manager.get_capacities() self.assertEqual({"ram_free": 3702}, capacities) def test_get_cell_capacity_for_the_parent_cell(self): self.stubs.Set(self.state_manager.my_cell_state, 'capacities', self.capacities) capacities = self.state_manager.\ get_capacities(self.state_manager.my_cell_state.name) self.assertEqual({"ram_free": 3702}, capacities) def test_get_cell_capacity_for_a_cell(self): self.assertEqual(self.capacities, self.state_manager.get_capacities(cell_name="cell_name")) def test_get_cell_capacity_for_non_existing_cell(self): self.assertRaises(exception.CellNotFound, self.state_manager.get_capacities, cell_name="invalid_cell_name") class FakeCellStateManager(object): def __init__(self): self.called = [] def _cell_data_sync(self, force=False): self.called.append(('_cell_data_sync', force)) class TestSyncDecorators(test.TestCase): def test_sync_before(self): manager = FakeCellStateManager() def test(inst, *args, **kwargs): self.assertEqual(inst, manager) self.assertEqual(args, (1, 2, 3)) self.assertEqual(kwargs, dict(a=4, b=5, c=6)) return 'result' wrapper = state.sync_before(test) result = wrapper(manager, 1, 2, 3, a=4, b=5, c=6) self.assertEqual(result, 'result') self.assertEqual(manager.called, [('_cell_data_sync', False)]) def test_sync_after(self): manager = FakeCellStateManager() def test(inst, *args, **kwargs): self.assertEqual(inst, manager) self.assertEqual(args, (1, 2, 3)) self.assertEqual(kwargs, dict(a=4, b=5, c=6)) return 'result' wrapper = state.sync_after(test) result = wrapper(manager, 1, 2, 3, a=4, b=5, c=6) self.assertEqual(result, 'result') self.assertEqual(manager.called, [('_cell_data_sync', True)]) nova-2014.1/nova/tests/cells/test_cells_scheduler.py0000664000175400017540000006422712323721477023705 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For CellsScheduler """ import time from oslo.config import cfg from nova import block_device from nova.cells import filters from nova.cells import weights from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.openstack.common import uuidutils from nova.scheduler import utils as scheduler_utils from nova import test from nova.tests.cells import fakes from nova import utils CONF = cfg.CONF CONF.import_opt('scheduler_retries', 'nova.cells.scheduler', group='cells') CONF.import_opt('scheduler_filter_classes', 'nova.cells.scheduler', group='cells') CONF.import_opt('scheduler_weight_classes', 'nova.cells.scheduler', group='cells') class FakeFilterClass1(filters.BaseCellFilter): pass class FakeFilterClass2(filters.BaseCellFilter): pass class FakeWeightClass1(weights.BaseCellWeigher): pass class FakeWeightClass2(weights.BaseCellWeigher): pass class CellsSchedulerTestCase(test.TestCase): """Test case for CellsScheduler class.""" def setUp(self): super(CellsSchedulerTestCase, self).setUp() self.flags(scheduler_filter_classes=[], scheduler_weight_classes=[], group='cells') self._init_cells_scheduler() def _init_cells_scheduler(self): fakes.init(self) self.msg_runner = fakes.get_message_runner('api-cell') self.scheduler = self.msg_runner.scheduler self.state_manager = self.msg_runner.state_manager self.my_cell_state = self.state_manager.get_my_state() self.ctxt = context.RequestContext('fake', 'fake') instance_uuids = [] for x in xrange(3): instance_uuids.append(uuidutils.generate_uuid()) self.instance_uuids = instance_uuids self.instances = [{'uuid': uuid} for uuid in instance_uuids] self.request_spec = { 'instance_uuids': instance_uuids, 'instance_properties': 'fake_properties', 'instance_type': 'fake_type', 'image': 'fake_image', 'security_group': 'fake_sec_groups', 'block_device_mapping': 'fake_bdm'} self.build_inst_kwargs = { 'instances': self.instances, 'image': 'fake_image', 'filter_properties': {'instance_type': 'fake_type'}, 'security_groups': 'fake_sec_groups', 'block_device_mapping': 'fake_bdm'} def test_create_instances_here(self): # Just grab the first instance type inst_type = db.flavor_get(self.ctxt, 1) image = {'properties': {}} instance_uuids = self.instance_uuids instance_props = {'id': 'removed', 'security_groups': 'removed', 'info_cache': 'removed', 'name': 'instance-00000001', 'hostname': 'meow', 'display_name': 'moo', 'image_ref': 'fake_image_ref', 'user_id': self.ctxt.user_id, # Test these as lists 'metadata': [{'key': 'moo', 'value': 'cow'}], 'system_metadata': [{'key': 'meow', 'value': 'cat'}], 'project_id': self.ctxt.project_id} call_info = {'uuids': []} block_device_mapping = [block_device.create_image_bdm( 'fake_image_ref')] def _fake_instance_update_at_top(_ctxt, instance): call_info['uuids'].append(instance['uuid']) self.stubs.Set(self.msg_runner, 'instance_update_at_top', _fake_instance_update_at_top) self.scheduler._create_instances_here(self.ctxt, instance_uuids, instance_props, inst_type, image, ['default'], block_device_mapping) self.assertEqual(instance_uuids, call_info['uuids']) for instance_uuid in instance_uuids: instance = db.instance_get_by_uuid(self.ctxt, instance_uuid) meta = utils.instance_meta(instance) self.assertEqual('cow', meta['moo']) sys_meta = utils.instance_sys_meta(instance) self.assertEqual('cat', sys_meta['meow']) self.assertEqual('meow', instance['hostname']) self.assertEqual('moo-%s' % instance['uuid'], instance['display_name']) self.assertEqual('fake_image_ref', instance['image_ref']) def test_run_instance_selects_child_cell(self): # Make sure there's no capacity info so we're sure to # select a child cell our_cell_info = self.state_manager.get_my_state() our_cell_info.capacities = {} call_info = {'times': 0} orig_fn = self.msg_runner.schedule_run_instance def msg_runner_schedule_run_instance(ctxt, target_cell, host_sched_kwargs): # This gets called twice. Once for our running it # in this cell.. and then it'll get called when the # child cell is picked. So, first time.. just run it # like normal. if not call_info['times']: call_info['times'] += 1 return orig_fn(ctxt, target_cell, host_sched_kwargs) call_info['ctxt'] = ctxt call_info['target_cell'] = target_cell call_info['host_sched_kwargs'] = host_sched_kwargs self.stubs.Set(self.msg_runner, 'schedule_run_instance', msg_runner_schedule_run_instance) host_sched_kwargs = {'request_spec': self.request_spec, 'filter_properties': {}} self.msg_runner.schedule_run_instance(self.ctxt, self.my_cell_state, host_sched_kwargs) self.assertEqual(self.ctxt, call_info['ctxt']) self.assertEqual(host_sched_kwargs, call_info['host_sched_kwargs']) child_cells = self.state_manager.get_child_cells() self.assertIn(call_info['target_cell'], child_cells) def test_build_instances_selects_child_cell(self): # Make sure there's no capacity info so we're sure to # select a child cell our_cell_info = self.state_manager.get_my_state() our_cell_info.capacities = {} call_info = {'times': 0} orig_fn = self.msg_runner.build_instances def msg_runner_build_instances(ctxt, target_cell, build_inst_kwargs): # This gets called twice. Once for our running it # in this cell.. and then it'll get called when the # child cell is picked. So, first time.. just run it # like normal. if not call_info['times']: call_info['times'] += 1 return orig_fn(ctxt, target_cell, build_inst_kwargs) call_info['ctxt'] = ctxt call_info['target_cell'] = target_cell call_info['build_inst_kwargs'] = build_inst_kwargs def fake_build_request_spec(ctxt, image, instances): request_spec = { 'instance_uuids': [inst['uuid'] for inst in instances], 'image': image} return request_spec self.stubs.Set(self.msg_runner, 'build_instances', msg_runner_build_instances) self.stubs.Set(scheduler_utils, 'build_request_spec', fake_build_request_spec) self.msg_runner.build_instances(self.ctxt, self.my_cell_state, self.build_inst_kwargs) self.assertEqual(self.ctxt, call_info['ctxt']) self.assertEqual(self.build_inst_kwargs, call_info['build_inst_kwargs']) child_cells = self.state_manager.get_child_cells() self.assertIn(call_info['target_cell'], child_cells) def test_run_instance_selects_current_cell(self): # Make sure there's no child cells so that we will be # selected self.state_manager.child_cells = {} call_info = {} def fake_create_instances_here(ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping): call_info['ctxt'] = ctxt call_info['instance_uuids'] = instance_uuids call_info['instance_properties'] = instance_properties call_info['instance_type'] = instance_type call_info['image'] = image call_info['security_groups'] = security_groups call_info['block_device_mapping'] = block_device_mapping def fake_rpc_run_instance(ctxt, **host_sched_kwargs): call_info['host_sched_kwargs'] = host_sched_kwargs self.stubs.Set(self.scheduler, '_create_instances_here', fake_create_instances_here) self.stubs.Set(self.scheduler.scheduler_rpcapi, 'run_instance', fake_rpc_run_instance) host_sched_kwargs = {'request_spec': self.request_spec, 'filter_properties': {}, 'other': 'stuff'} self.msg_runner.schedule_run_instance(self.ctxt, self.my_cell_state, host_sched_kwargs) self.assertEqual(self.ctxt, call_info['ctxt']) self.assertEqual(host_sched_kwargs, call_info['host_sched_kwargs']) self.assertEqual(self.instance_uuids, call_info['instance_uuids']) self.assertEqual(self.request_spec['instance_properties'], call_info['instance_properties']) self.assertEqual(self.request_spec['instance_type'], call_info['instance_type']) self.assertEqual(self.request_spec['image'], call_info['image']) self.assertEqual(self.request_spec['security_group'], call_info['security_groups']) self.assertEqual(self.request_spec['block_device_mapping'], call_info['block_device_mapping']) def test_build_instances_selects_current_cell(self): # Make sure there's no child cells so that we will be # selected self.state_manager.child_cells = {} call_info = {} def fake_create_instances_here(ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping): call_info['ctxt'] = ctxt call_info['instance_uuids'] = instance_uuids call_info['instance_properties'] = instance_properties call_info['instance_type'] = instance_type call_info['image'] = image call_info['security_groups'] = security_groups call_info['block_device_mapping'] = block_device_mapping def fake_rpc_build_instances(ctxt, **build_inst_kwargs): call_info['build_inst_kwargs'] = build_inst_kwargs def fake_build_request_spec(ctxt, image, instances): request_spec = { 'instance_uuids': [inst['uuid'] for inst in instances], 'image': image} return request_spec self.stubs.Set(self.scheduler, '_create_instances_here', fake_create_instances_here) self.stubs.Set(self.scheduler.compute_task_api, 'build_instances', fake_rpc_build_instances) self.stubs.Set(scheduler_utils, 'build_request_spec', fake_build_request_spec) self.msg_runner.build_instances(self.ctxt, self.my_cell_state, self.build_inst_kwargs) self.assertEqual(self.ctxt, call_info['ctxt']) self.assertEqual(self.instance_uuids, call_info['instance_uuids']) self.assertEqual(self.build_inst_kwargs['instances'][0], call_info['instance_properties']) self.assertEqual( self.build_inst_kwargs['filter_properties']['instance_type'], call_info['instance_type']) self.assertEqual(self.build_inst_kwargs['image'], call_info['image']) self.assertEqual(self.build_inst_kwargs['security_groups'], call_info['security_groups']) self.assertEqual(self.build_inst_kwargs['block_device_mapping'], call_info['block_device_mapping']) self.assertEqual(self.build_inst_kwargs, call_info['build_inst_kwargs']) self.assertEqual(self.instance_uuids, call_info['instance_uuids']) def test_run_instance_retries_when_no_cells_avail(self): self.flags(scheduler_retries=7, group='cells') host_sched_kwargs = {'request_spec': self.request_spec, 'filter_properties': {}} call_info = {'num_tries': 0, 'errored_uuids': []} def fake_grab_target_cells(filter_properties): call_info['num_tries'] += 1 raise exception.NoCellsAvailable() def fake_sleep(_secs): return def fake_instance_update(ctxt, instance_uuid, values): self.assertEqual(vm_states.ERROR, values['vm_state']) call_info['errored_uuids'].append(instance_uuid) self.stubs.Set(self.scheduler, '_grab_target_cells', fake_grab_target_cells) self.stubs.Set(time, 'sleep', fake_sleep) self.stubs.Set(db, 'instance_update', fake_instance_update) self.msg_runner.schedule_run_instance(self.ctxt, self.my_cell_state, host_sched_kwargs) self.assertEqual(8, call_info['num_tries']) self.assertEqual(self.instance_uuids, call_info['errored_uuids']) def test_build_instances_retries_when_no_cells_avail(self): self.flags(scheduler_retries=7, group='cells') call_info = {'num_tries': 0, 'errored_uuids': []} def fake_grab_target_cells(filter_properties): call_info['num_tries'] += 1 raise exception.NoCellsAvailable() def fake_sleep(_secs): return def fake_instance_update(ctxt, instance_uuid, values): self.assertEqual(vm_states.ERROR, values['vm_state']) call_info['errored_uuids'].append(instance_uuid) def fake_build_request_spec(ctxt, image, instances): request_spec = { 'instance_uuids': [inst['uuid'] for inst in instances], 'image': image} return request_spec self.stubs.Set(self.scheduler, '_grab_target_cells', fake_grab_target_cells) self.stubs.Set(time, 'sleep', fake_sleep) self.stubs.Set(db, 'instance_update', fake_instance_update) self.stubs.Set(scheduler_utils, 'build_request_spec', fake_build_request_spec) self.msg_runner.build_instances(self.ctxt, self.my_cell_state, self.build_inst_kwargs) self.assertEqual(8, call_info['num_tries']) self.assertEqual(self.instance_uuids, call_info['errored_uuids']) def test_schedule_method_on_random_exception(self): self.flags(scheduler_retries=7, group='cells') instances = [{'uuid': uuid} for uuid in self.instance_uuids] method_kwargs = { 'image': 'fake_image', 'instances': instances, 'filter_properties': {}} call_info = {'num_tries': 0, 'errored_uuids1': [], 'errored_uuids2': []} def fake_grab_target_cells(filter_properties): call_info['num_tries'] += 1 raise test.TestingException() def fake_instance_update(ctxt, instance_uuid, values): self.assertEqual(vm_states.ERROR, values['vm_state']) call_info['errored_uuids1'].append(instance_uuid) def fake_instance_update_at_top(ctxt, instance): self.assertEqual(vm_states.ERROR, instance['vm_state']) call_info['errored_uuids2'].append(instance['uuid']) def fake_build_request_spec(ctxt, image, instances): request_spec = { 'instance_uuids': [inst['uuid'] for inst in instances], 'image': image} return request_spec self.stubs.Set(self.scheduler, '_grab_target_cells', fake_grab_target_cells) self.stubs.Set(db, 'instance_update', fake_instance_update) self.stubs.Set(self.msg_runner, 'instance_update_at_top', fake_instance_update_at_top) self.stubs.Set(scheduler_utils, 'build_request_spec', fake_build_request_spec) self.msg_runner.build_instances(self.ctxt, self.my_cell_state, method_kwargs) # Shouldn't retry self.assertEqual(1, call_info['num_tries']) self.assertEqual(self.instance_uuids, call_info['errored_uuids1']) self.assertEqual(self.instance_uuids, call_info['errored_uuids2']) def test_filter_schedule_skipping(self): # if a filter handles scheduling, short circuit def _grab(filter_properties): return None self.stubs.Set(self.scheduler, '_grab_target_cells', _grab) def _test(self, *args): raise test.TestingException("shouldn't be called") try: self.scheduler._schedule_build_to_cells(None, None, None, _test, None) except test.TestingException: self.fail("Scheduling did not properly short circuit") def test_cells_filter_args_correct(self): # Re-init our fakes with some filters. our_path = 'nova.tests.cells.test_cells_scheduler' cls_names = [our_path + '.' + 'FakeFilterClass1', our_path + '.' + 'FakeFilterClass2'] self.flags(scheduler_filter_classes=cls_names, group='cells') self._init_cells_scheduler() # Make sure there's no child cells so that we will be # selected. Makes stubbing easier. self.state_manager.child_cells = {} call_info = {} def fake_create_instances_here(ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping): call_info['ctxt'] = ctxt call_info['instance_uuids'] = instance_uuids call_info['instance_properties'] = instance_properties call_info['instance_type'] = instance_type call_info['image'] = image call_info['security_groups'] = security_groups call_info['block_device_mapping'] = block_device_mapping def fake_rpc_run_instance(ctxt, **host_sched_kwargs): call_info['host_sched_kwargs'] = host_sched_kwargs def fake_get_filtered_objs(filter_classes, cells, filt_properties): call_info['filt_classes'] = filter_classes call_info['filt_cells'] = cells call_info['filt_props'] = filt_properties return cells self.stubs.Set(self.scheduler, '_create_instances_here', fake_create_instances_here) self.stubs.Set(self.scheduler.scheduler_rpcapi, 'run_instance', fake_rpc_run_instance) filter_handler = self.scheduler.filter_handler self.stubs.Set(filter_handler, 'get_filtered_objects', fake_get_filtered_objs) host_sched_kwargs = {'request_spec': self.request_spec, 'filter_properties': {}, 'other': 'stuff'} self.msg_runner.schedule_run_instance(self.ctxt, self.my_cell_state, host_sched_kwargs) # Our cell was selected. self.assertEqual(self.ctxt, call_info['ctxt']) self.assertEqual(self.instance_uuids, call_info['instance_uuids']) self.assertEqual(self.request_spec['instance_properties'], call_info['instance_properties']) self.assertEqual(self.request_spec['instance_type'], call_info['instance_type']) self.assertEqual(self.request_spec['image'], call_info['image']) self.assertEqual(self.request_spec['security_group'], call_info['security_groups']) self.assertEqual(self.request_spec['block_device_mapping'], call_info['block_device_mapping']) self.assertEqual(host_sched_kwargs, call_info['host_sched_kwargs']) # Filter args are correct expected_filt_props = {'context': self.ctxt, 'scheduler': self.scheduler, 'routing_path': self.my_cell_state.name, 'host_sched_kwargs': host_sched_kwargs, 'request_spec': self.request_spec, 'cell_scheduler_method': 'schedule_run_instance'} self.assertEqual(expected_filt_props, call_info['filt_props']) self.assertEqual([FakeFilterClass1, FakeFilterClass2], call_info['filt_classes']) self.assertEqual([self.my_cell_state], call_info['filt_cells']) def test_cells_filter_returning_none(self): # Re-init our fakes with some filters. our_path = 'nova.tests.cells.test_cells_scheduler' cls_names = [our_path + '.' + 'FakeFilterClass1', our_path + '.' + 'FakeFilterClass2'] self.flags(scheduler_filter_classes=cls_names, group='cells') self._init_cells_scheduler() # Make sure there's no child cells so that we will be # selected. Makes stubbing easier. self.state_manager.child_cells = {} call_info = {'scheduled': False} def fake_create_instances_here(ctxt, request_spec): # Should not be called call_info['scheduled'] = True def fake_get_filtered_objs(filter_classes, cells, filt_properties): # Should cause scheduling to be skipped. Means that the # filter did it. return None self.stubs.Set(self.scheduler, '_create_instances_here', fake_create_instances_here) filter_handler = self.scheduler.filter_handler self.stubs.Set(filter_handler, 'get_filtered_objects', fake_get_filtered_objs) self.msg_runner.schedule_run_instance(self.ctxt, self.my_cell_state, {}) self.assertFalse(call_info['scheduled']) def test_cells_weight_args_correct(self): # Re-init our fakes with some filters. our_path = 'nova.tests.cells.test_cells_scheduler' cls_names = [our_path + '.' + 'FakeWeightClass1', our_path + '.' + 'FakeWeightClass2'] self.flags(scheduler_weight_classes=cls_names, group='cells') self._init_cells_scheduler() # Make sure there's no child cells so that we will be # selected. Makes stubbing easier. self.state_manager.child_cells = {} call_info = {} def fake_create_instances_here(ctxt, instance_uuids, instance_properties, instance_type, image, security_groups, block_device_mapping): call_info['ctxt'] = ctxt call_info['instance_uuids'] = instance_uuids call_info['instance_properties'] = instance_properties call_info['instance_type'] = instance_type call_info['image'] = image call_info['security_groups'] = security_groups call_info['block_device_mapping'] = block_device_mapping def fake_rpc_run_instance(ctxt, **host_sched_kwargs): call_info['host_sched_kwargs'] = host_sched_kwargs def fake_get_weighed_objs(weight_classes, cells, filt_properties): call_info['weight_classes'] = weight_classes call_info['weight_cells'] = cells call_info['weight_props'] = filt_properties return [weights.WeightedCell(cells[0], 0.0)] self.stubs.Set(self.scheduler, '_create_instances_here', fake_create_instances_here) self.stubs.Set(self.scheduler.scheduler_rpcapi, 'run_instance', fake_rpc_run_instance) weight_handler = self.scheduler.weight_handler self.stubs.Set(weight_handler, 'get_weighed_objects', fake_get_weighed_objs) host_sched_kwargs = {'request_spec': self.request_spec, 'filter_properties': {}, 'other': 'stuff'} self.msg_runner.schedule_run_instance(self.ctxt, self.my_cell_state, host_sched_kwargs) # Our cell was selected. self.assertEqual(self.ctxt, call_info['ctxt']) self.assertEqual(self.instance_uuids, call_info['instance_uuids']) self.assertEqual(self.request_spec['instance_properties'], call_info['instance_properties']) self.assertEqual(self.request_spec['instance_type'], call_info['instance_type']) self.assertEqual(self.request_spec['image'], call_info['image']) self.assertEqual(self.request_spec['security_group'], call_info['security_groups']) self.assertEqual(self.request_spec['block_device_mapping'], call_info['block_device_mapping']) self.assertEqual(host_sched_kwargs, call_info['host_sched_kwargs']) # Weight args are correct expected_filt_props = {'context': self.ctxt, 'scheduler': self.scheduler, 'routing_path': self.my_cell_state.name, 'host_sched_kwargs': host_sched_kwargs, 'request_spec': self.request_spec, 'cell_scheduler_method': 'schedule_run_instance'} self.assertEqual(expected_filt_props, call_info['weight_props']) self.assertEqual([FakeWeightClass1, FakeWeightClass2], call_info['weight_classes']) self.assertEqual([self.my_cell_state], call_info['weight_cells']) nova-2014.1/nova/tests/cells/test_cells_filters.py0000664000175400017540000001536412323721477023375 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012-2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Unit Tests for cells scheduler filters. """ from nova.cells import filters from nova import context from nova.db.sqlalchemy import models from nova import test from nova.tests.cells import fakes class FiltersTestCase(test.NoDBTestCase): """Makes sure the proper filters are in the directory.""" def test_all_filters(self): filter_classes = filters.all_filters() class_names = [cls.__name__ for cls in filter_classes] self.assertIn("TargetCellFilter", class_names) class _FilterTestClass(test.NoDBTestCase): """Base class for testing individual filter plugins.""" filter_cls_name = None def setUp(self): super(_FilterTestClass, self).setUp() fakes.init(self) self.msg_runner = fakes.get_message_runner('api-cell') self.scheduler = self.msg_runner.scheduler self.my_cell_state = self.msg_runner.state_manager.get_my_state() self.filter_handler = filters.CellFilterHandler() self.filter_classes = self.filter_handler.get_matching_classes( [self.filter_cls_name]) self.context = context.RequestContext('fake', 'fake', is_admin=True) def _filter_cells(self, cells, filter_properties): return self.filter_handler.get_filtered_objects(self.filter_classes, cells, filter_properties) class ImagePropertiesFilter(_FilterTestClass): filter_cls_name = \ 'nova.cells.filters.image_properties.ImagePropertiesFilter' def setUp(self): super(ImagePropertiesFilter, self).setUp() self.cell1 = models.Cell() self.cell2 = models.Cell() self.cell3 = models.Cell() self.cells = [self.cell1, self.cell2, self.cell3] for cell in self.cells: cell.capabilities = {} self.filter_props = {'context': self.context, 'request_spec': {}} def test_missing_image_properties(self): self.assertEqual(self.cells, self._filter_cells(self.cells, self.filter_props)) def test_missing_hypervisor_version_requires(self): self.filter_props['request_spec'] = {'image': {'properties': {}}} for cell in self.cells: cell.capabilities = {"prominent_hypervisor_version": [u"6.2"]} self.assertEqual(self.cells, self._filter_cells(self.cells, self.filter_props)) def test_missing_hypervisor_version_in_cells(self): image = {'properties': {'hypervisor_version_requires': '>6.2.1'}} self.filter_props['request_spec'] = {'image': image} self.assertEqual(self.cells, self._filter_cells(self.cells, self.filter_props)) def test_cells_matching_hypervisor_version(self): image = {'properties': {'hypervisor_version_requires': '>6.0, <=6.3'}} self.filter_props['request_spec'] = {'image': image} self.cell1.capabilities = {"prominent_hypervisor_version": [u"6.2"]} self.cell2.capabilities = {"prominent_hypervisor_version": [u"6.3"]} self.cell3.capabilities = {"prominent_hypervisor_version": [u"6.0"]} self.assertEqual([self.cell1, self.cell2], self._filter_cells(self.cells, self.filter_props)) class TestTargetCellFilter(_FilterTestClass): filter_cls_name = 'nova.cells.filters.target_cell.TargetCellFilter' def test_missing_scheduler_hints(self): cells = [1, 2, 3] # No filtering filter_props = {'context': self.context} self.assertEqual(cells, self._filter_cells(cells, filter_props)) def test_no_target_cell_hint(self): cells = [1, 2, 3] filter_props = {'scheduler_hints': {}, 'context': self.context} # No filtering self.assertEqual(cells, self._filter_cells(cells, filter_props)) def test_target_cell_specified_me(self): cells = [1, 2, 3] target_cell = 'fake!cell!path' current_cell = 'fake!cell!path' filter_props = {'scheduler_hints': {'target_cell': target_cell}, 'routing_path': current_cell, 'scheduler': self.scheduler, 'context': self.context} # Only myself in the list. self.assertEqual([self.my_cell_state], self._filter_cells(cells, filter_props)) def test_target_cell_specified_me_but_not_admin(self): ctxt = context.RequestContext('fake', 'fake') cells = [1, 2, 3] target_cell = 'fake!cell!path' current_cell = 'fake!cell!path' filter_props = {'scheduler_hints': {'target_cell': target_cell}, 'routing_path': current_cell, 'scheduler': self.scheduler, 'context': ctxt} # No filtering, because not an admin. self.assertEqual(cells, self._filter_cells(cells, filter_props)) def test_target_cell_specified_not_me(self): info = {} def _fake_sched_run_instance(ctxt, cell, sched_kwargs): info['ctxt'] = ctxt info['cell'] = cell info['sched_kwargs'] = sched_kwargs self.stubs.Set(self.msg_runner, 'schedule_run_instance', _fake_sched_run_instance) cells = [1, 2, 3] target_cell = 'fake!cell!path' current_cell = 'not!the!same' filter_props = {'scheduler_hints': {'target_cell': target_cell}, 'routing_path': current_cell, 'scheduler': self.scheduler, 'context': self.context, 'host_sched_kwargs': 'meow', 'cell_scheduler_method': 'schedule_run_instance'} # None is returned to bypass further scheduling. self.assertIsNone(self._filter_cells(cells, filter_props)) # The filter should have re-scheduled to the child cell itself. expected_info = {'ctxt': self.context, 'cell': 'fake!cell!path', 'sched_kwargs': 'meow'} self.assertEqual(expected_info, info) nova-2014.1/nova/tests/cells/test_cells_utils.py0000664000175400017540000001021112323721477023047 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Cells Utility methods """ import inspect import random from nova.cells import utils as cells_utils from nova import db from nova import test class CellsUtilsTestCase(test.NoDBTestCase): """Test case for Cells utility methods.""" def test_get_instances_to_sync(self): fake_context = 'fake_context' call_info = {'get_all': 0, 'shuffle': 0} def random_shuffle(_list): call_info['shuffle'] += 1 def instance_get_all_by_filters(context, filters, sort_key, sort_order): self.assertEqual(context, fake_context) self.assertEqual(sort_key, 'deleted') self.assertEqual(sort_order, 'asc') call_info['got_filters'] = filters call_info['get_all'] += 1 return ['fake_instance1', 'fake_instance2', 'fake_instance3'] self.stubs.Set(db, 'instance_get_all_by_filters', instance_get_all_by_filters) self.stubs.Set(random, 'shuffle', random_shuffle) instances = cells_utils.get_instances_to_sync(fake_context) self.assertTrue(inspect.isgenerator(instances)) self.assertEqual(len([x for x in instances]), 3) self.assertEqual(call_info['get_all'], 1) self.assertEqual(call_info['got_filters'], {}) self.assertEqual(call_info['shuffle'], 0) instances = cells_utils.get_instances_to_sync(fake_context, shuffle=True) self.assertTrue(inspect.isgenerator(instances)) self.assertEqual(len([x for x in instances]), 3) self.assertEqual(call_info['get_all'], 2) self.assertEqual(call_info['got_filters'], {}) self.assertEqual(call_info['shuffle'], 1) instances = cells_utils.get_instances_to_sync(fake_context, updated_since='fake-updated-since') self.assertTrue(inspect.isgenerator(instances)) self.assertEqual(len([x for x in instances]), 3) self.assertEqual(call_info['get_all'], 3) self.assertEqual(call_info['got_filters'], {'changes-since': 'fake-updated-since'}) self.assertEqual(call_info['shuffle'], 1) instances = cells_utils.get_instances_to_sync(fake_context, project_id='fake-project', updated_since='fake-updated-since', shuffle=True) self.assertTrue(inspect.isgenerator(instances)) self.assertEqual(len([x for x in instances]), 3) self.assertEqual(call_info['get_all'], 4) self.assertEqual(call_info['got_filters'], {'changes-since': 'fake-updated-since', 'project_id': 'fake-project'}) self.assertEqual(call_info['shuffle'], 2) def test_split_cell_and_item(self): path = 'australia', 'queensland', 'gold_coast' cell = cells_utils.PATH_CELL_SEP.join(path) item = 'host_5' together = cells_utils.cell_with_item(cell, item) self.assertEqual(cells_utils._CELL_ITEM_SEP.join([cell, item]), together) # Test normal usage result_cell, result_item = cells_utils.split_cell_and_item(together) self.assertEqual(cell, result_cell) self.assertEqual(item, result_item) # Test with no cell cell = None together = cells_utils.cell_with_item(cell, item) self.assertEqual(item, together) result_cell, result_item = cells_utils.split_cell_and_item(together) self.assertEqual(cell, result_cell) self.assertEqual(item, result_item) nova-2014.1/nova/tests/cells/test_cells_rpcapi.py0000664000175400017540000007731512323721477023207 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Cells RPCAPI """ from oslo.config import cfg import six from nova.cells import rpcapi as cells_rpcapi from nova import exception from nova import test from nova.tests import fake_instance CONF = cfg.CONF CONF.import_opt('topic', 'nova.cells.opts', group='cells') class CellsAPITestCase(test.NoDBTestCase): """Test case for cells.api interfaces.""" def setUp(self): super(CellsAPITestCase, self).setUp() self.fake_topic = 'fake_topic' self.fake_context = 'fake_context' self.flags(topic=self.fake_topic, enable=True, group='cells') self.cells_rpcapi = cells_rpcapi.CellsAPI() def _stub_rpc_method(self, rpc_method, result): call_info = {} orig_prepare = self.cells_rpcapi.client.prepare def fake_rpc_prepare(**kwargs): if 'version' in kwargs: call_info['version'] = kwargs.pop('version') return self.cells_rpcapi.client def fake_csv(version): return orig_prepare(version).can_send_version() def fake_rpc_method(ctxt, method, **kwargs): call_info['context'] = ctxt call_info['method'] = method call_info['args'] = kwargs return result self.stubs.Set(self.cells_rpcapi.client, 'prepare', fake_rpc_prepare) self.stubs.Set(self.cells_rpcapi.client, 'can_send_version', fake_csv) self.stubs.Set(self.cells_rpcapi.client, rpc_method, fake_rpc_method) return call_info def _check_result(self, call_info, method, args, version=None): self.assertEqual(self.cells_rpcapi.client.target.topic, self.fake_topic) self.assertEqual(self.fake_context, call_info['context']) self.assertEqual(method, call_info['method']) self.assertEqual(args, call_info['args']) if version is not None: self.assertIn('version', call_info) self.assertIsInstance(call_info['version'], six.string_types, msg="Message version %s is not a string" % call_info['version']) self.assertEqual(version, call_info['version']) else: self.assertNotIn('version', call_info) def test_cast_compute_api_method(self): fake_cell_name = 'fake_cell_name' fake_method = 'fake_method' fake_method_args = (1, 2) fake_method_kwargs = {'kwarg1': 10, 'kwarg2': 20} expected_method_info = {'method': fake_method, 'method_args': fake_method_args, 'method_kwargs': fake_method_kwargs} expected_args = {'method_info': expected_method_info, 'cell_name': fake_cell_name, 'call': False} call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.cast_compute_api_method(self.fake_context, fake_cell_name, fake_method, *fake_method_args, **fake_method_kwargs) self._check_result(call_info, 'run_compute_api_method', expected_args) def test_call_compute_api_method(self): fake_cell_name = 'fake_cell_name' fake_method = 'fake_method' fake_method_args = (1, 2) fake_method_kwargs = {'kwarg1': 10, 'kwarg2': 20} fake_response = 'fake_response' expected_method_info = {'method': fake_method, 'method_args': fake_method_args, 'method_kwargs': fake_method_kwargs} expected_args = {'method_info': expected_method_info, 'cell_name': fake_cell_name, 'call': True} call_info = self._stub_rpc_method('call', fake_response) result = self.cells_rpcapi.call_compute_api_method(self.fake_context, fake_cell_name, fake_method, *fake_method_args, **fake_method_kwargs) self._check_result(call_info, 'run_compute_api_method', expected_args) self.assertEqual(fake_response, result) def test_schedule_run_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.schedule_run_instance( self.fake_context, arg1=1, arg2=2, arg3=3) expected_args = {'host_sched_kwargs': {'arg1': 1, 'arg2': 2, 'arg3': 3}} self._check_result(call_info, 'schedule_run_instance', expected_args) def test_build_instances(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.build_instances( self.fake_context, instances=['1', '2'], image={'fake': 'image'}, arg1=1, arg2=2, arg3=3) expected_args = {'build_inst_kwargs': {'instances': ['1', '2'], 'image': {'fake': 'image'}, 'arg1': 1, 'arg2': 2, 'arg3': 3}} self._check_result(call_info, 'build_instances', expected_args, version='1.8') def test_get_capacities(self): capacity_info = {"capacity": "info"} call_info = self._stub_rpc_method('call', result=capacity_info) result = self.cells_rpcapi.get_capacities(self.fake_context, cell_name="name") self._check_result(call_info, 'get_capacities', {'cell_name': 'name'}, version='1.9') self.assertEqual(capacity_info, result) def test_instance_update_at_top(self): fake_info_cache = {'id': 1, 'instance': 'fake_instance', 'other': 'moo'} fake_sys_metadata = [{'id': 1, 'key': 'key1', 'value': 'value1'}, {'id': 2, 'key': 'key2', 'value': 'value2'}] fake_instance = {'id': 2, 'security_groups': 'fake', 'instance_type': 'fake', 'volumes': 'fake', 'cell_name': 'fake', 'name': 'fake', 'metadata': 'fake', 'info_cache': fake_info_cache, 'system_metadata': fake_sys_metadata, 'other': 'meow'} call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.instance_update_at_top( self.fake_context, fake_instance) expected_args = {'instance': fake_instance} self._check_result(call_info, 'instance_update_at_top', expected_args) def test_instance_destroy_at_top(self): fake_instance = {'uuid': 'fake-uuid'} call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.instance_destroy_at_top( self.fake_context, fake_instance) expected_args = {'instance': fake_instance} self._check_result(call_info, 'instance_destroy_at_top', expected_args) def test_instance_delete_everywhere(self): instance = fake_instance.fake_instance_obj(self.fake_context) call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.instance_delete_everywhere( self.fake_context, instance, 'fake-type') expected_args = {'instance': instance, 'delete_type': 'fake-type'} self._check_result(call_info, 'instance_delete_everywhere', expected_args, version='1.27') def test_instance_fault_create_at_top(self): fake_instance_fault = {'id': 2, 'other': 'meow'} call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.instance_fault_create_at_top( self.fake_context, fake_instance_fault) expected_args = {'instance_fault': fake_instance_fault} self._check_result(call_info, 'instance_fault_create_at_top', expected_args) def test_bw_usage_update_at_top(self): update_args = ('fake_uuid', 'fake_mac', 'fake_start_period', 'fake_bw_in', 'fake_bw_out', 'fake_ctr_in', 'fake_ctr_out') update_kwargs = {'last_refreshed': 'fake_refreshed'} call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.bw_usage_update_at_top( self.fake_context, *update_args, **update_kwargs) bw_update_info = {'uuid': 'fake_uuid', 'mac': 'fake_mac', 'start_period': 'fake_start_period', 'bw_in': 'fake_bw_in', 'bw_out': 'fake_bw_out', 'last_ctr_in': 'fake_ctr_in', 'last_ctr_out': 'fake_ctr_out', 'last_refreshed': 'fake_refreshed'} expected_args = {'bw_update_info': bw_update_info} self._check_result(call_info, 'bw_usage_update_at_top', expected_args) def test_get_cell_info_for_neighbors(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.get_cell_info_for_neighbors( self.fake_context) self._check_result(call_info, 'get_cell_info_for_neighbors', {}, version='1.1') self.assertEqual(result, 'fake_response') def test_sync_instances(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.sync_instances(self.fake_context, project_id='fake_project', updated_since='fake_time', deleted=True) expected_args = {'project_id': 'fake_project', 'updated_since': 'fake_time', 'deleted': True} self._check_result(call_info, 'sync_instances', expected_args, version='1.1') def test_service_get_all(self): call_info = self._stub_rpc_method('call', 'fake_response') fake_filters = {'key1': 'val1', 'key2': 'val2'} result = self.cells_rpcapi.service_get_all(self.fake_context, filters=fake_filters) expected_args = {'filters': fake_filters} self._check_result(call_info, 'service_get_all', expected_args, version='1.2') self.assertEqual(result, 'fake_response') def test_service_get_by_compute_host(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.service_get_by_compute_host( self.fake_context, host_name='fake-host-name') expected_args = {'host_name': 'fake-host-name'} self._check_result(call_info, 'service_get_by_compute_host', expected_args, version='1.2') self.assertEqual(result, 'fake_response') def test_get_host_uptime(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.get_host_uptime( self.fake_context, host_name='fake-host-name') expected_args = {'host_name': 'fake-host-name'} self._check_result(call_info, 'get_host_uptime', expected_args, version='1.17') self.assertEqual(result, 'fake_response') def test_service_update(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.service_update( self.fake_context, host_name='fake-host-name', binary='nova-api', params_to_update={'disabled': True}) expected_args = { 'host_name': 'fake-host-name', 'binary': 'nova-api', 'params_to_update': {'disabled': True}} self._check_result(call_info, 'service_update', expected_args, version='1.7') self.assertEqual(result, 'fake_response') def test_service_delete(self): call_info = self._stub_rpc_method('call', None) cell_service_id = 'cell@id' result = self.cells_rpcapi.service_delete( self.fake_context, cell_service_id=cell_service_id) expected_args = {'cell_service_id': cell_service_id} self._check_result(call_info, 'service_delete', expected_args, version='1.26') self.assertIsNone(result) def test_proxy_rpc_to_manager(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.proxy_rpc_to_manager( self.fake_context, rpc_message='fake-msg', topic='fake-topic', call=True, timeout=-1) expected_args = {'rpc_message': 'fake-msg', 'topic': 'fake-topic', 'call': True, 'timeout': -1} self._check_result(call_info, 'proxy_rpc_to_manager', expected_args, version='1.2') self.assertEqual(result, 'fake_response') def test_task_log_get_all(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.task_log_get_all(self.fake_context, task_name='fake_name', period_beginning='fake_begin', period_ending='fake_end', host='fake_host', state='fake_state') expected_args = {'task_name': 'fake_name', 'period_beginning': 'fake_begin', 'period_ending': 'fake_end', 'host': 'fake_host', 'state': 'fake_state'} self._check_result(call_info, 'task_log_get_all', expected_args, version='1.3') self.assertEqual(result, 'fake_response') def test_compute_node_get_all(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.compute_node_get_all(self.fake_context, hypervisor_match='fake-match') expected_args = {'hypervisor_match': 'fake-match'} self._check_result(call_info, 'compute_node_get_all', expected_args, version='1.4') self.assertEqual(result, 'fake_response') def test_compute_node_stats(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.compute_node_stats(self.fake_context) expected_args = {} self._check_result(call_info, 'compute_node_stats', expected_args, version='1.4') self.assertEqual(result, 'fake_response') def test_compute_node_get(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.compute_node_get(self.fake_context, 'fake_compute_id') expected_args = {'compute_id': 'fake_compute_id'} self._check_result(call_info, 'compute_node_get', expected_args, version='1.4') self.assertEqual(result, 'fake_response') def test_actions_get(self): fake_instance = {'uuid': 'fake-uuid', 'cell_name': 'region!child'} call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.actions_get(self.fake_context, fake_instance) expected_args = {'cell_name': 'region!child', 'instance_uuid': fake_instance['uuid']} self._check_result(call_info, 'actions_get', expected_args, version='1.5') self.assertEqual(result, 'fake_response') def test_actions_get_no_cell(self): fake_instance = {'uuid': 'fake-uuid', 'cell_name': None} self.assertRaises(exception.InstanceUnknownCell, self.cells_rpcapi.actions_get, self.fake_context, fake_instance) def test_action_get_by_request_id(self): fake_instance = {'uuid': 'fake-uuid', 'cell_name': 'region!child'} call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.action_get_by_request_id(self.fake_context, fake_instance, 'req-fake') expected_args = {'cell_name': 'region!child', 'instance_uuid': fake_instance['uuid'], 'request_id': 'req-fake'} self._check_result(call_info, 'action_get_by_request_id', expected_args, version='1.5') self.assertEqual(result, 'fake_response') def test_action_get_by_request_id_no_cell(self): fake_instance = {'uuid': 'fake-uuid', 'cell_name': None} self.assertRaises(exception.InstanceUnknownCell, self.cells_rpcapi.action_get_by_request_id, self.fake_context, fake_instance, 'req-fake') def test_action_events_get(self): fake_instance = {'uuid': 'fake-uuid', 'cell_name': 'region!child'} call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.action_events_get(self.fake_context, fake_instance, 'fake-action') expected_args = {'cell_name': 'region!child', 'action_id': 'fake-action'} self._check_result(call_info, 'action_events_get', expected_args, version='1.5') self.assertEqual(result, 'fake_response') def test_action_events_get_no_cell(self): fake_instance = {'uuid': 'fake-uuid', 'cell_name': None} self.assertRaises(exception.InstanceUnknownCell, self.cells_rpcapi.action_events_get, self.fake_context, fake_instance, 'fake-action') def test_consoleauth_delete_tokens(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.consoleauth_delete_tokens(self.fake_context, 'fake-uuid') expected_args = {'instance_uuid': 'fake-uuid'} self._check_result(call_info, 'consoleauth_delete_tokens', expected_args, version='1.6') def test_validate_console_port(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.validate_console_port(self.fake_context, 'fake-uuid', 'fake-port', 'fake-type') expected_args = {'instance_uuid': 'fake-uuid', 'console_port': 'fake-port', 'console_type': 'fake-type'} self._check_result(call_info, 'validate_console_port', expected_args, version='1.6') self.assertEqual(result, 'fake_response') def test_bdm_update_or_create_at_top(self): fake_bdm = {'id': 2, 'other': 'meow'} call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.bdm_update_or_create_at_top( self.fake_context, fake_bdm, create='fake-create') expected_args = {'bdm': fake_bdm, 'create': 'fake-create'} self._check_result(call_info, 'bdm_update_or_create_at_top', expected_args, version='1.10') def test_bdm_destroy_at_top(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.bdm_destroy_at_top(self.fake_context, 'fake-uuid', device_name='fake-device', volume_id='fake-vol') expected_args = {'instance_uuid': 'fake-uuid', 'device_name': 'fake-device', 'volume_id': 'fake-vol'} self._check_result(call_info, 'bdm_destroy_at_top', expected_args, version='1.10') def test_get_migrations(self): call_info = self._stub_rpc_method('call', None) filters = {'cell_name': 'ChildCell', 'status': 'confirmed'} self.cells_rpcapi.get_migrations(self.fake_context, filters) expected_args = {'filters': filters} self._check_result(call_info, 'get_migrations', expected_args, version="1.11") def test_instance_update_from_api(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.instance_update_from_api( self.fake_context, 'fake-instance', expected_vm_state='exp_vm', expected_task_state='exp_task', admin_state_reset='admin_reset') expected_args = {'instance': 'fake-instance', 'expected_vm_state': 'exp_vm', 'expected_task_state': 'exp_task', 'admin_state_reset': 'admin_reset'} self._check_result(call_info, 'instance_update_from_api', expected_args, version='1.16') def test_start_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.start_instance( self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'start_instance', expected_args, version='1.12') def test_stop_instance_cast(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.stop_instance( self.fake_context, 'fake-instance', do_cast=True) expected_args = {'instance': 'fake-instance', 'do_cast': True} self._check_result(call_info, 'stop_instance', expected_args, version='1.12') def test_stop_instance_call(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.stop_instance( self.fake_context, 'fake-instance', do_cast=False) expected_args = {'instance': 'fake-instance', 'do_cast': False} self._check_result(call_info, 'stop_instance', expected_args, version='1.12') self.assertEqual(result, 'fake_response') def test_cell_create(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.cell_create(self.fake_context, 'values') expected_args = {'values': 'values'} self._check_result(call_info, 'cell_create', expected_args, version='1.13') self.assertEqual(result, 'fake_response') def test_cell_update(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.cell_update(self.fake_context, 'cell_name', 'values') expected_args = {'cell_name': 'cell_name', 'values': 'values'} self._check_result(call_info, 'cell_update', expected_args, version='1.13') self.assertEqual(result, 'fake_response') def test_cell_delete(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.cell_delete(self.fake_context, 'cell_name') expected_args = {'cell_name': 'cell_name'} self._check_result(call_info, 'cell_delete', expected_args, version='1.13') self.assertEqual(result, 'fake_response') def test_cell_get(self): call_info = self._stub_rpc_method('call', 'fake_response') result = self.cells_rpcapi.cell_get(self.fake_context, 'cell_name') expected_args = {'cell_name': 'cell_name'} self._check_result(call_info, 'cell_get', expected_args, version='1.13') self.assertEqual(result, 'fake_response') def test_reboot_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.reboot_instance( self.fake_context, 'fake-instance', block_device_info='ignored', reboot_type='HARD') expected_args = {'instance': 'fake-instance', 'reboot_type': 'HARD'} self._check_result(call_info, 'reboot_instance', expected_args, version='1.14') def test_pause_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.pause_instance( self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'pause_instance', expected_args, version='1.19') def test_unpause_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.unpause_instance( self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'unpause_instance', expected_args, version='1.19') def test_suspend_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.suspend_instance( self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'suspend_instance', expected_args, version='1.15') def test_resume_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.resume_instance( self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'resume_instance', expected_args, version='1.15') def test_terminate_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.terminate_instance(self.fake_context, 'fake-instance', []) expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'terminate_instance', expected_args, version='1.18') def test_soft_delete_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.soft_delete_instance(self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'soft_delete_instance', expected_args, version='1.18') def test_resize_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.resize_instance(self.fake_context, 'fake-instance', dict(cow='moo'), 'fake-hint', 'fake-flavor', 'fake-reservations') expected_args = {'instance': 'fake-instance', 'flavor': 'fake-flavor', 'extra_instance_updates': dict(cow='moo')} self._check_result(call_info, 'resize_instance', expected_args, version='1.20') def test_live_migrate_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.live_migrate_instance(self.fake_context, 'fake-instance', 'fake-host', 'fake-block', 'fake-commit') expected_args = {'instance': 'fake-instance', 'block_migration': 'fake-block', 'disk_over_commit': 'fake-commit', 'host_name': 'fake-host'} self._check_result(call_info, 'live_migrate_instance', expected_args, version='1.20') def test_revert_resize(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.revert_resize(self.fake_context, 'fake-instance', 'fake-migration', 'fake-dest', 'resvs') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'revert_resize', expected_args, version='1.21') def test_confirm_resize(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.confirm_resize(self.fake_context, 'fake-instance', 'fake-migration', 'fake-source', 'resvs') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'confirm_resize', expected_args, version='1.21') def test_reset_network(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.reset_network(self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'reset_network', expected_args, version='1.22') def test_inject_network_info(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.inject_network_info(self.fake_context, 'fake-instance') expected_args = {'instance': 'fake-instance'} self._check_result(call_info, 'inject_network_info', expected_args, version='1.23') def test_snapshot_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.snapshot_instance(self.fake_context, 'fake-instance', 'image-id') expected_args = {'instance': 'fake-instance', 'image_id': 'image-id'} self._check_result(call_info, 'snapshot_instance', expected_args, version='1.24') def test_backup_instance(self): call_info = self._stub_rpc_method('cast', None) self.cells_rpcapi.backup_instance(self.fake_context, 'fake-instance', 'image-id', 'backup-type', 'rotation') expected_args = {'instance': 'fake-instance', 'image_id': 'image-id', 'backup_type': 'backup-type', 'rotation': 'rotation'} self._check_result(call_info, 'backup_instance', expected_args, version='1.24') nova-2014.1/nova/tests/cells/test_cells_messaging.py0000664000175400017540000025621012323721477023677 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # Copyright 2013 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. """ Tests For Cells Messaging module """ import mox from oslo.config import cfg from oslo import messaging as oslo_messaging from nova.cells import messaging from nova.cells import utils as cells_utils from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.network import model as network_model from nova.objects import base as objects_base from nova.objects import fields as objects_fields from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import rpc from nova import test from nova.tests.cells import fakes from nova.tests import fake_instance_actions CONF = cfg.CONF CONF.import_opt('name', 'nova.cells.opts', group='cells') class CellsMessageClassesTestCase(test.TestCase): """Test case for the main Cells Message classes.""" def setUp(self): super(CellsMessageClassesTestCase, self).setUp() fakes.init(self) self.ctxt = context.RequestContext('fake', 'fake') self.our_name = 'api-cell' self.msg_runner = fakes.get_message_runner(self.our_name) self.state_manager = self.msg_runner.state_manager def test_reverse_path(self): path = 'a!b!c!d' expected = 'd!c!b!a' rev_path = messaging._reverse_path(path) self.assertEqual(rev_path, expected) def test_response_cell_name_from_path(self): # test array with tuples of inputs/expected outputs test_paths = [('cell1', 'cell1'), ('cell1!cell2', 'cell2!cell1'), ('cell1!cell2!cell3', 'cell3!cell2!cell1')] for test_input, expected_output in test_paths: self.assertEqual(expected_output, messaging._response_cell_name_from_path(test_input)) def test_response_cell_name_from_path_neighbor_only(self): # test array with tuples of inputs/expected outputs test_paths = [('cell1', 'cell1'), ('cell1!cell2', 'cell2!cell1'), ('cell1!cell2!cell3', 'cell3!cell2')] for test_input, expected_output in test_paths: self.assertEqual(expected_output, messaging._response_cell_name_from_path(test_input, neighbor_only=True)) def test_targeted_message(self): self.flags(max_hop_count=99, group='cells') target_cell = 'api-cell!child-cell2!grandchild-cell1' method = 'fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) self.assertEqual(self.ctxt, tgt_message.ctxt) self.assertEqual(method, tgt_message.method_name) self.assertEqual(method_kwargs, tgt_message.method_kwargs) self.assertEqual(direction, tgt_message.direction) self.assertEqual(target_cell, target_cell) self.assertFalse(tgt_message.fanout) self.assertFalse(tgt_message.need_response) self.assertEqual(self.our_name, tgt_message.routing_path) self.assertEqual(1, tgt_message.hop_count) self.assertEqual(99, tgt_message.max_hop_count) self.assertFalse(tgt_message.is_broadcast) # Correct next hop? next_hop = tgt_message._get_next_hop() child_cell = self.state_manager.get_child_cell('child-cell2') self.assertEqual(child_cell, next_hop) def test_create_targeted_message_with_response(self): self.flags(max_hop_count=99, group='cells') our_name = 'child-cell1' target_cell = 'child-cell1!api-cell' msg_runner = fakes.get_message_runner(our_name) method = 'fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'up' tgt_message = messaging._TargetedMessage(msg_runner, self.ctxt, method, method_kwargs, direction, target_cell, need_response=True) self.assertEqual(self.ctxt, tgt_message.ctxt) self.assertEqual(method, tgt_message.method_name) self.assertEqual(method_kwargs, tgt_message.method_kwargs) self.assertEqual(direction, tgt_message.direction) self.assertEqual(target_cell, target_cell) self.assertFalse(tgt_message.fanout) self.assertTrue(tgt_message.need_response) self.assertEqual(our_name, tgt_message.routing_path) self.assertEqual(1, tgt_message.hop_count) self.assertEqual(99, tgt_message.max_hop_count) self.assertFalse(tgt_message.is_broadcast) # Correct next hop? next_hop = tgt_message._get_next_hop() parent_cell = msg_runner.state_manager.get_parent_cell('api-cell') self.assertEqual(parent_cell, next_hop) def test_targeted_message_when_target_is_cell_state(self): method = 'fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' target_cell = self.state_manager.get_child_cell('child-cell2') tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) self.assertEqual('api-cell!child-cell2', tgt_message.target_cell) # Correct next hop? next_hop = tgt_message._get_next_hop() self.assertEqual(target_cell, next_hop) def test_targeted_message_when_target_cell_state_is_me(self): method = 'fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' target_cell = self.state_manager.get_my_state() tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) self.assertEqual('api-cell', tgt_message.target_cell) # Correct next hop? next_hop = tgt_message._get_next_hop() self.assertEqual(target_cell, next_hop) def test_create_broadcast_message(self): self.flags(max_hop_count=99, group='cells') self.flags(name='api-cell', max_hop_count=99, group='cells') method = 'fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction) self.assertEqual(self.ctxt, bcast_message.ctxt) self.assertEqual(method, bcast_message.method_name) self.assertEqual(method_kwargs, bcast_message.method_kwargs) self.assertEqual(direction, bcast_message.direction) self.assertFalse(bcast_message.fanout) self.assertFalse(bcast_message.need_response) self.assertEqual(self.our_name, bcast_message.routing_path) self.assertEqual(1, bcast_message.hop_count) self.assertEqual(99, bcast_message.max_hop_count) self.assertTrue(bcast_message.is_broadcast) # Correct next hops? next_hops = bcast_message._get_next_hops() child_cells = self.state_manager.get_child_cells() self.assertEqual(child_cells, next_hops) def test_create_broadcast_message_with_response(self): self.flags(max_hop_count=99, group='cells') our_name = 'child-cell1' msg_runner = fakes.get_message_runner(our_name) method = 'fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'up' bcast_message = messaging._BroadcastMessage(msg_runner, self.ctxt, method, method_kwargs, direction, need_response=True) self.assertEqual(self.ctxt, bcast_message.ctxt) self.assertEqual(method, bcast_message.method_name) self.assertEqual(method_kwargs, bcast_message.method_kwargs) self.assertEqual(direction, bcast_message.direction) self.assertFalse(bcast_message.fanout) self.assertTrue(bcast_message.need_response) self.assertEqual(our_name, bcast_message.routing_path) self.assertEqual(1, bcast_message.hop_count) self.assertEqual(99, bcast_message.max_hop_count) self.assertTrue(bcast_message.is_broadcast) # Correct next hops? next_hops = bcast_message._get_next_hops() parent_cells = msg_runner.state_manager.get_parent_cells() self.assertEqual(parent_cells, next_hops) def test_self_targeted_message(self): target_cell = 'api-cell' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' call_info = {} def our_fake_method(message, **kwargs): call_info['context'] = message.ctxt call_info['routing_path'] = message.routing_path call_info['kwargs'] = kwargs fakes.stub_tgt_method(self, 'api-cell', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) tgt_message.process() self.assertEqual(self.ctxt, call_info['context']) self.assertEqual(method_kwargs, call_info['kwargs']) self.assertEqual(target_cell, call_info['routing_path']) def test_child_targeted_message(self): target_cell = 'api-cell!child-cell1' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' call_info = {} def our_fake_method(message, **kwargs): call_info['context'] = message.ctxt call_info['routing_path'] = message.routing_path call_info['kwargs'] = kwargs fakes.stub_tgt_method(self, 'child-cell1', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) tgt_message.process() self.assertEqual(self.ctxt, call_info['context']) self.assertEqual(method_kwargs, call_info['kwargs']) self.assertEqual(target_cell, call_info['routing_path']) def test_child_targeted_message_with_object(self): target_cell = 'api-cell!child-cell1' method = 'our_fake_method' direction = 'down' call_info = {} class CellsMsgingTestObject(objects_base.NovaObject): """Test object. We just need 1 field in order to test that this gets serialized properly. """ fields = {'test': objects_fields.StringField()} test_obj = CellsMsgingTestObject() test_obj.test = 'meow' method_kwargs = dict(obj=test_obj, arg1=1, arg2=2) def our_fake_method(message, **kwargs): call_info['context'] = message.ctxt call_info['routing_path'] = message.routing_path call_info['kwargs'] = kwargs fakes.stub_tgt_method(self, 'child-cell1', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) tgt_message.process() self.assertEqual(self.ctxt, call_info['context']) self.assertEqual(target_cell, call_info['routing_path']) self.assertEqual(3, len(call_info['kwargs'])) self.assertEqual(1, call_info['kwargs']['arg1']) self.assertEqual(2, call_info['kwargs']['arg2']) # Verify we get a new object with what we expect. obj = call_info['kwargs']['obj'] self.assertIsInstance(obj, CellsMsgingTestObject) self.assertNotEqual(id(test_obj), id(obj)) self.assertEqual(test_obj.test, obj.test) def test_grandchild_targeted_message(self): target_cell = 'api-cell!child-cell2!grandchild-cell1' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' call_info = {} def our_fake_method(message, **kwargs): call_info['context'] = message.ctxt call_info['routing_path'] = message.routing_path call_info['kwargs'] = kwargs fakes.stub_tgt_method(self, 'grandchild-cell1', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell) tgt_message.process() self.assertEqual(self.ctxt, call_info['context']) self.assertEqual(method_kwargs, call_info['kwargs']) self.assertEqual(target_cell, call_info['routing_path']) def test_grandchild_targeted_message_with_response(self): target_cell = 'api-cell!child-cell2!grandchild-cell1' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' call_info = {} def our_fake_method(message, **kwargs): call_info['context'] = message.ctxt call_info['routing_path'] = message.routing_path call_info['kwargs'] = kwargs return 'our_fake_response' fakes.stub_tgt_method(self, 'grandchild-cell1', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell, need_response=True) response = tgt_message.process() self.assertEqual(self.ctxt, call_info['context']) self.assertEqual(method_kwargs, call_info['kwargs']) self.assertEqual(target_cell, call_info['routing_path']) self.assertFalse(response.failure) self.assertEqual(response.value_or_raise(), 'our_fake_response') def test_grandchild_targeted_message_with_error(self): target_cell = 'api-cell!child-cell2!grandchild-cell1' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' def our_fake_method(message, **kwargs): raise test.TestingException('this should be returned') fakes.stub_tgt_method(self, 'grandchild-cell1', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell, need_response=True) response = tgt_message.process() self.assertTrue(response.failure) self.assertRaises(test.TestingException, response.value_or_raise) def test_grandchild_targeted_message_max_hops(self): self.flags(max_hop_count=2, group='cells') target_cell = 'api-cell!child-cell2!grandchild-cell1' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' def our_fake_method(message, **kwargs): raise test.TestingException('should not be reached') fakes.stub_tgt_method(self, 'grandchild-cell1', 'our_fake_method', our_fake_method) tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell, need_response=True) response = tgt_message.process() self.assertTrue(response.failure) self.assertRaises(exception.CellMaxHopCountReached, response.value_or_raise) def test_targeted_message_invalid_cell(self): target_cell = 'api-cell!child-cell2!grandchild-cell4' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell, need_response=True) response = tgt_message.process() self.assertTrue(response.failure) self.assertRaises(exception.CellRoutingInconsistency, response.value_or_raise) def test_targeted_message_invalid_cell2(self): target_cell = 'unknown-cell!child-cell2' method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' tgt_message = messaging._TargetedMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, target_cell, need_response=True) response = tgt_message.process() self.assertTrue(response.failure) self.assertRaises(exception.CellRoutingInconsistency, response.value_or_raise) def test_broadcast_routing(self): method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' cells = set() def our_fake_method(message, **kwargs): cells.add(message.routing_path) fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=True) bcast_message.process() # fakes creates 8 cells (including ourself). self.assertEqual(len(cells), 8) def test_broadcast_routing_up(self): method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'up' msg_runner = fakes.get_message_runner('grandchild-cell3') cells = set() def our_fake_method(message, **kwargs): cells.add(message.routing_path) fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) bcast_message = messaging._BroadcastMessage(msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=True) bcast_message.process() # Paths are reversed, since going 'up' expected = set(['grandchild-cell3', 'grandchild-cell3!child-cell3', 'grandchild-cell3!child-cell3!api-cell']) self.assertEqual(expected, cells) def test_broadcast_routing_without_ourselves(self): method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' cells = set() def our_fake_method(message, **kwargs): cells.add(message.routing_path) fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=False) bcast_message.process() # fakes creates 8 cells (including ourself). So we should see # only 7 here. self.assertEqual(len(cells), 7) def test_broadcast_routing_with_response(self): method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' def our_fake_method(message, **kwargs): return 'response-%s' % message.routing_path fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=True, need_response=True) responses = bcast_message.process() self.assertEqual(len(responses), 8) for response in responses: self.assertFalse(response.failure) self.assertEqual('response-%s' % response.cell_name, response.value_or_raise()) def test_broadcast_routing_with_response_max_hops(self): self.flags(max_hop_count=2, group='cells') method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' def our_fake_method(message, **kwargs): return 'response-%s' % message.routing_path fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=True, need_response=True) responses = bcast_message.process() # Should only get responses from our immediate children (and # ourselves) self.assertEqual(len(responses), 5) for response in responses: self.assertFalse(response.failure) self.assertEqual('response-%s' % response.cell_name, response.value_or_raise()) def test_broadcast_routing_with_all_erroring(self): method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' def our_fake_method(message, **kwargs): raise test.TestingException('fake failure') fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=True, need_response=True) responses = bcast_message.process() self.assertEqual(len(responses), 8) for response in responses: self.assertTrue(response.failure) self.assertRaises(test.TestingException, response.value_or_raise) def test_broadcast_routing_with_two_erroring(self): method = 'our_fake_method' method_kwargs = dict(arg1=1, arg2=2) direction = 'down' def our_fake_method_failing(message, **kwargs): raise test.TestingException('fake failure') def our_fake_method(message, **kwargs): return 'response-%s' % message.routing_path fakes.stub_bcast_methods(self, 'our_fake_method', our_fake_method) fakes.stub_bcast_method(self, 'child-cell2', 'our_fake_method', our_fake_method_failing) fakes.stub_bcast_method(self, 'grandchild-cell3', 'our_fake_method', our_fake_method_failing) bcast_message = messaging._BroadcastMessage(self.msg_runner, self.ctxt, method, method_kwargs, direction, run_locally=True, need_response=True) responses = bcast_message.process() self.assertEqual(len(responses), 8) failure_responses = [resp for resp in responses if resp.failure] success_responses = [resp for resp in responses if not resp.failure] self.assertEqual(len(failure_responses), 2) self.assertEqual(len(success_responses), 6) for response in success_responses: self.assertFalse(response.failure) self.assertEqual('response-%s' % response.cell_name, response.value_or_raise()) for response in failure_responses: self.assertIn(response.cell_name, ['api-cell!child-cell2', 'api-cell!child-cell3!grandchild-cell3']) self.assertTrue(response.failure) self.assertRaises(test.TestingException, response.value_or_raise) class CellsTargetedMethodsTestCase(test.TestCase): """Test case for _TargetedMessageMethods class. Most of these tests actually test the full path from the MessageRunner through to the functionality of the message method. Hits 2 birds with 1 stone, even though it's a little more than a unit test. """ def setUp(self): super(CellsTargetedMethodsTestCase, self).setUp() fakes.init(self) self.ctxt = context.RequestContext('fake', 'fake') self._setup_attrs('api-cell', 'api-cell!child-cell2') def _setup_attrs(self, source_cell, target_cell): self.tgt_cell_name = target_cell self.src_msg_runner = fakes.get_message_runner(source_cell) self.src_state_manager = self.src_msg_runner.state_manager tgt_shortname = target_cell.split('!')[-1] self.tgt_cell_mgr = fakes.get_cells_manager(tgt_shortname) self.tgt_msg_runner = self.tgt_cell_mgr.msg_runner self.tgt_scheduler = self.tgt_msg_runner.scheduler self.tgt_state_manager = self.tgt_msg_runner.state_manager methods_cls = self.tgt_msg_runner.methods_by_type['targeted'] self.tgt_methods_cls = methods_cls self.tgt_compute_api = methods_cls.compute_api self.tgt_host_api = methods_cls.host_api self.tgt_db_inst = methods_cls.db self.tgt_c_rpcapi = methods_cls.compute_rpcapi def test_schedule_run_instance(self): host_sched_kwargs = {'filter_properties': {}, 'key1': 'value1', 'key2': 'value2'} self.mox.StubOutWithMock(self.tgt_scheduler, 'run_instance') self.tgt_scheduler.run_instance(self.ctxt, host_sched_kwargs) self.mox.ReplayAll() self.src_msg_runner.schedule_run_instance(self.ctxt, self.tgt_cell_name, host_sched_kwargs) def test_build_instances(self): build_inst_kwargs = {'filter_properties': {}, 'key1': 'value1', 'key2': 'value2'} self.mox.StubOutWithMock(self.tgt_scheduler, 'build_instances') self.tgt_scheduler.build_instances(self.ctxt, build_inst_kwargs) self.mox.ReplayAll() self.src_msg_runner.build_instances(self.ctxt, self.tgt_cell_name, build_inst_kwargs) def test_run_compute_api_method(self): instance_uuid = 'fake_instance_uuid' method_info = {'method': 'backup', 'method_args': (instance_uuid, 2, 3), 'method_kwargs': {'arg1': 'val1', 'arg2': 'val2'}} self.mox.StubOutWithMock(self.tgt_compute_api, 'backup') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_get_by_uuid') self.tgt_db_inst.instance_get_by_uuid(self.ctxt, instance_uuid).AndReturn('fake_instance') self.tgt_compute_api.backup(self.ctxt, 'fake_instance', 2, 3, arg1='val1', arg2='val2').AndReturn('fake_result') self.mox.ReplayAll() response = self.src_msg_runner.run_compute_api_method( self.ctxt, self.tgt_cell_name, method_info, True) result = response.value_or_raise() self.assertEqual('fake_result', result) def test_run_compute_api_method_expects_obj(self): instance_uuid = 'fake_instance_uuid' method_info = {'method': 'start', 'method_args': (instance_uuid, 2, 3), 'method_kwargs': {'arg1': 'val1', 'arg2': 'val2'}} self.mox.StubOutWithMock(self.tgt_compute_api, 'start') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_get_by_uuid') self.tgt_db_inst.instance_get_by_uuid(self.ctxt, instance_uuid).AndReturn('fake_instance') def get_instance_mock(): # NOTE(comstud): This block of code simulates the following # mox code: # # self.mox.StubOutWithMock(instance_obj, 'Instance', # use_mock_anything=True) # self.mox.StubOutWithMock(instance_obj.Instance, # '_from_db_object') # instance_mock = self.mox.CreateMock(instance_obj.Instance) # instance_obj.Instance().AndReturn(instance_mock) # # Unfortunately, the above code fails on py27 do to some # issue with the Mock object do to similar issue as this: # https://code.google.com/p/pymox/issues/detail?id=35 # class FakeInstance(object): @classmethod def _from_db_object(cls, ctxt, obj, db_obj): pass instance_mock = FakeInstance() def fake_instance(): return instance_mock self.stubs.Set(instance_obj, 'Instance', fake_instance) self.mox.StubOutWithMock(instance_mock, '_from_db_object') return instance_mock instance = get_instance_mock() instance._from_db_object( self.ctxt, instance, 'fake_instance').AndReturn(instance) self.tgt_compute_api.start(self.ctxt, instance, 2, 3, arg1='val1', arg2='val2').AndReturn('fake_result') self.mox.ReplayAll() response = self.src_msg_runner.run_compute_api_method( self.ctxt, self.tgt_cell_name, method_info, True) result = response.value_or_raise() self.assertEqual('fake_result', result) def test_run_compute_api_method_unknown_instance(self): # Unknown instance should send a broadcast up that instance # is gone. instance_uuid = 'fake_instance_uuid' instance = {'uuid': instance_uuid} method_info = {'method': 'reboot', 'method_args': (instance_uuid, 2, 3), 'method_kwargs': {'arg1': 'val1', 'arg2': 'val2'}} self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_get_by_uuid') self.mox.StubOutWithMock(self.tgt_msg_runner, 'instance_destroy_at_top') self.tgt_db_inst.instance_get_by_uuid(self.ctxt, 'fake_instance_uuid').AndRaise( exception.InstanceNotFound(instance_id=instance_uuid)) self.tgt_msg_runner.instance_destroy_at_top(self.ctxt, instance) self.mox.ReplayAll() response = self.src_msg_runner.run_compute_api_method( self.ctxt, self.tgt_cell_name, method_info, True) self.assertRaises(exception.InstanceNotFound, response.value_or_raise) def test_update_capabilities(self): # Route up to API self._setup_attrs('child-cell2', 'child-cell2!api-cell') capabs = {'cap1': set(['val1', 'val2']), 'cap2': set(['val3'])} # The list(set([])) seems silly, but we can't assume the order # of the list... This behavior should match the code we're # testing... which is check that a set was converted to a list. expected_capabs = {'cap1': list(set(['val1', 'val2'])), 'cap2': ['val3']} self.mox.StubOutWithMock(self.src_state_manager, 'get_our_capabilities') self.mox.StubOutWithMock(self.tgt_state_manager, 'update_cell_capabilities') self.mox.StubOutWithMock(self.tgt_msg_runner, 'tell_parents_our_capabilities') self.src_state_manager.get_our_capabilities().AndReturn(capabs) self.tgt_state_manager.update_cell_capabilities('child-cell2', expected_capabs) self.tgt_msg_runner.tell_parents_our_capabilities(self.ctxt) self.mox.ReplayAll() self.src_msg_runner.tell_parents_our_capabilities(self.ctxt) def test_update_capacities(self): self._setup_attrs('child-cell2', 'child-cell2!api-cell') capacs = 'fake_capacs' self.mox.StubOutWithMock(self.src_state_manager, 'get_our_capacities') self.mox.StubOutWithMock(self.tgt_state_manager, 'update_cell_capacities') self.mox.StubOutWithMock(self.tgt_msg_runner, 'tell_parents_our_capacities') self.src_state_manager.get_our_capacities().AndReturn(capacs) self.tgt_state_manager.update_cell_capacities('child-cell2', capacs) self.tgt_msg_runner.tell_parents_our_capacities(self.ctxt) self.mox.ReplayAll() self.src_msg_runner.tell_parents_our_capacities(self.ctxt) def test_announce_capabilities(self): self._setup_attrs('api-cell', 'api-cell!child-cell1') # To make this easier to test, make us only have 1 child cell. cell_state = self.src_state_manager.child_cells['child-cell1'] self.src_state_manager.child_cells = {'child-cell1': cell_state} self.mox.StubOutWithMock(self.tgt_msg_runner, 'tell_parents_our_capabilities') self.tgt_msg_runner.tell_parents_our_capabilities(self.ctxt) self.mox.ReplayAll() self.src_msg_runner.ask_children_for_capabilities(self.ctxt) def test_announce_capacities(self): self._setup_attrs('api-cell', 'api-cell!child-cell1') # To make this easier to test, make us only have 1 child cell. cell_state = self.src_state_manager.child_cells['child-cell1'] self.src_state_manager.child_cells = {'child-cell1': cell_state} self.mox.StubOutWithMock(self.tgt_msg_runner, 'tell_parents_our_capacities') self.tgt_msg_runner.tell_parents_our_capacities(self.ctxt) self.mox.ReplayAll() self.src_msg_runner.ask_children_for_capacities(self.ctxt) def test_service_get_by_compute_host(self): fake_host_name = 'fake-host-name' self.mox.StubOutWithMock(self.tgt_db_inst, 'service_get_by_compute_host') self.tgt_db_inst.service_get_by_compute_host(self.ctxt, fake_host_name).AndReturn('fake-service') self.mox.ReplayAll() response = self.src_msg_runner.service_get_by_compute_host( self.ctxt, self.tgt_cell_name, fake_host_name) result = response.value_or_raise() self.assertEqual('fake-service', result) def test_service_update(self): binary = 'nova-compute' fake_service = dict(id=42, host='fake_host', binary='nova-compute', topic='compute') fake_compute = dict( id=7116, service_id=42, host='fake_host', vcpus=0, memory_mb=0, local_gb=0, vcpus_used=0, memory_mb_used=0, local_gb_used=0, hypervisor_type=0, hypervisor_version=0, hypervisor_hostname=0, free_ram_mb=0, free_disk_gb=0, current_workload=0, running_vms=0, cpu_info='HAL', disk_available_least=0) params_to_update = {'disabled': True, 'report_count': 13} ctxt = context.RequestContext('fake_user', 'fake_project', is_admin=True) # We use the real DB for this test, as it's too hard to reach the # host_api to mock out its DB methods db.service_create(ctxt, fake_service) db.compute_node_create(ctxt, fake_compute) self.mox.ReplayAll() response = self.src_msg_runner.service_update( ctxt, self.tgt_cell_name, 'fake_host', binary, params_to_update) result = response.value_or_raise() result.pop('created_at', None) result.pop('updated_at', None) result.pop('disabled_reason', None) expected_result = dict( deleted=0, deleted_at=None, binary=fake_service['binary'], disabled=True, # We just updated this.. report_count=13, # ..and this host='fake_host', id=42, topic='compute') self.assertEqual(expected_result, result) def test_service_delete(self): fake_service = dict(id=42, host='fake_host', binary='nova-compute', topic='compute') ctxt = self.ctxt.elevated() db.service_create(ctxt, fake_service) self.src_msg_runner.service_delete( ctxt, self.tgt_cell_name, fake_service['id']) self.assertRaises(exception.ServiceNotFound, db.service_get, ctxt, fake_service['id']) def test_proxy_rpc_to_manager_call(self): fake_topic = 'fake-topic' fake_rpc_message = {'method': 'fake_rpc_method', 'args': {}} fake_host_name = 'fake-host-name' self.mox.StubOutWithMock(self.tgt_db_inst, 'service_get_by_compute_host') self.tgt_db_inst.service_get_by_compute_host(self.ctxt, fake_host_name) target = oslo_messaging.Target(topic='fake-topic') rpcclient = self.mox.CreateMockAnything() self.mox.StubOutWithMock(rpc, 'get_client') rpc.get_client(target).AndReturn(rpcclient) rpcclient.prepare(timeout=5).AndReturn(rpcclient) rpcclient.call(mox.IgnoreArg(), 'fake_rpc_method').AndReturn('fake_result') self.mox.ReplayAll() response = self.src_msg_runner.proxy_rpc_to_manager( self.ctxt, self.tgt_cell_name, fake_host_name, fake_topic, fake_rpc_message, True, timeout=5) result = response.value_or_raise() self.assertEqual('fake_result', result) def test_proxy_rpc_to_manager_cast(self): fake_topic = 'fake-topic' fake_rpc_message = {'method': 'fake_rpc_method', 'args': {}} fake_host_name = 'fake-host-name' self.mox.StubOutWithMock(self.tgt_db_inst, 'service_get_by_compute_host') self.tgt_db_inst.service_get_by_compute_host(self.ctxt, fake_host_name) target = oslo_messaging.Target(topic='fake-topic') rpcclient = self.mox.CreateMockAnything() self.mox.StubOutWithMock(rpc, 'get_client') rpc.get_client(target).AndReturn(rpcclient) rpcclient.cast(mox.IgnoreArg(), 'fake_rpc_method') self.mox.ReplayAll() self.src_msg_runner.proxy_rpc_to_manager( self.ctxt, self.tgt_cell_name, fake_host_name, fake_topic, fake_rpc_message, False, timeout=None) def test_task_log_get_all_targetted(self): task_name = 'fake_task_name' begin = 'fake_begin' end = 'fake_end' host = 'fake_host' state = 'fake_state' self.mox.StubOutWithMock(self.tgt_db_inst, 'task_log_get_all') self.tgt_db_inst.task_log_get_all(self.ctxt, task_name, begin, end, host=host, state=state).AndReturn(['fake_result']) self.mox.ReplayAll() response = self.src_msg_runner.task_log_get_all(self.ctxt, self.tgt_cell_name, task_name, begin, end, host=host, state=state) self.assertIsInstance(response, list) self.assertEqual(1, len(response)) result = response[0].value_or_raise() self.assertEqual(['fake_result'], result) def test_compute_node_get(self): compute_id = 'fake-id' self.mox.StubOutWithMock(self.tgt_db_inst, 'compute_node_get') self.tgt_db_inst.compute_node_get(self.ctxt, compute_id).AndReturn('fake_result') self.mox.ReplayAll() response = self.src_msg_runner.compute_node_get(self.ctxt, self.tgt_cell_name, compute_id) result = response.value_or_raise() self.assertEqual('fake_result', result) def test_actions_get(self): fake_uuid = fake_instance_actions.FAKE_UUID fake_req_id = fake_instance_actions.FAKE_REQUEST_ID1 fake_act = fake_instance_actions.FAKE_ACTIONS[fake_uuid][fake_req_id] self.mox.StubOutWithMock(self.tgt_db_inst, 'actions_get') self.tgt_db_inst.actions_get(self.ctxt, 'fake-uuid').AndReturn([fake_act]) self.mox.ReplayAll() response = self.src_msg_runner.actions_get(self.ctxt, self.tgt_cell_name, 'fake-uuid') result = response.value_or_raise() self.assertEqual([jsonutils.to_primitive(fake_act)], result) def test_action_get_by_request_id(self): fake_uuid = fake_instance_actions.FAKE_UUID fake_req_id = fake_instance_actions.FAKE_REQUEST_ID1 fake_act = fake_instance_actions.FAKE_ACTIONS[fake_uuid][fake_req_id] self.mox.StubOutWithMock(self.tgt_db_inst, 'action_get_by_request_id') self.tgt_db_inst.action_get_by_request_id(self.ctxt, 'fake-uuid', 'req-fake').AndReturn(fake_act) self.mox.ReplayAll() response = self.src_msg_runner.action_get_by_request_id(self.ctxt, self.tgt_cell_name, 'fake-uuid', 'req-fake') result = response.value_or_raise() self.assertEqual(jsonutils.to_primitive(fake_act), result) def test_action_events_get(self): fake_action_id = fake_instance_actions.FAKE_ACTION_ID1 fake_events = fake_instance_actions.FAKE_EVENTS[fake_action_id] self.mox.StubOutWithMock(self.tgt_db_inst, 'action_events_get') self.tgt_db_inst.action_events_get(self.ctxt, 'fake-action').AndReturn(fake_events) self.mox.ReplayAll() response = self.src_msg_runner.action_events_get(self.ctxt, self.tgt_cell_name, 'fake-action') result = response.value_or_raise() self.assertEqual(jsonutils.to_primitive(fake_events), result) def test_validate_console_port(self): instance_uuid = 'fake_instance_uuid' instance = {'uuid': instance_uuid} console_port = 'fake-port' console_type = 'fake-type' self.mox.StubOutWithMock(self.tgt_c_rpcapi, 'validate_console_port') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_get_by_uuid') self.tgt_db_inst.instance_get_by_uuid(self.ctxt, instance_uuid).AndReturn(instance) self.tgt_c_rpcapi.validate_console_port(self.ctxt, instance, console_port, console_type).AndReturn('fake_result') self.mox.ReplayAll() response = self.src_msg_runner.validate_console_port(self.ctxt, self.tgt_cell_name, instance_uuid, console_port, console_type) result = response.value_or_raise() self.assertEqual('fake_result', result) def test_get_migrations_for_a_given_cell(self): filters = {'cell_name': 'child-cell2', 'status': 'confirmed'} migrations_in_progress = [{'id': 123}] self.mox.StubOutWithMock(self.tgt_compute_api, 'get_migrations') self.tgt_compute_api.get_migrations(self.ctxt, filters).\ AndReturn(migrations_in_progress) self.mox.ReplayAll() responses = self.src_msg_runner.get_migrations( self.ctxt, self.tgt_cell_name, False, filters) result = responses[0].value_or_raise() self.assertEqual(migrations_in_progress, result) def test_get_migrations_for_an_invalid_cell(self): filters = {'cell_name': 'invalid_Cell', 'status': 'confirmed'} responses = self.src_msg_runner.get_migrations( self.ctxt, 'api_cell!invalid_cell', False, filters) self.assertEqual(0, len(responses)) def test_call_compute_api_with_obj(self): instance = instance_obj.Instance() instance.uuid = uuidutils.generate_uuid() self.mox.StubOutWithMock(instance, 'refresh') # Using 'snapshot' for this test, because it # takes args and kwargs. self.mox.StubOutWithMock(self.tgt_compute_api, 'snapshot') instance.refresh(self.ctxt) self.tgt_compute_api.snapshot( self.ctxt, instance, 'name', extra_properties='props').AndReturn('foo') self.mox.ReplayAll() result = self.tgt_methods_cls._call_compute_api_with_obj( self.ctxt, instance, 'snapshot', 'name', extra_properties='props') self.assertEqual('foo', result) def test_call_compute_with_obj_unknown_instance(self): instance = instance_obj.Instance() instance.uuid = uuidutils.generate_uuid() instance.vm_state = vm_states.ACTIVE instance.task_state = None self.mox.StubOutWithMock(instance, 'refresh') self.mox.StubOutWithMock(self.tgt_msg_runner, 'instance_destroy_at_top') instance.refresh(self.ctxt).AndRaise( exception.InstanceNotFound(instance_id=instance.uuid)) self.tgt_msg_runner.instance_destroy_at_top(self.ctxt, {'uuid': instance.uuid}) self.mox.ReplayAll() self.assertRaises(exception.InstanceNotFound, self.tgt_methods_cls._call_compute_api_with_obj, self.ctxt, instance, 'snapshot', 'name') def _instance_update_helper(self, admin_state_reset): class FakeMessage(object): pass message = FakeMessage() message.ctxt = self.ctxt instance = instance_obj.Instance() instance.cell_name = self.tgt_cell_name instance.obj_reset_changes() instance.task_state = 'meow' instance.vm_state = 'wuff' instance.user_data = 'foo' instance.metadata = {'meta': 'data'} instance.system_metadata = {'system': 'metadata'} self.assertEqual(set(['user_data', 'vm_state', 'task_state', 'metadata', 'system_metadata']), instance.obj_what_changed()) self.mox.StubOutWithMock(instance, 'save') def _check_object(*args, **kwargs): # task_state and vm_state changes should have been cleared # before calling save() if admin_state_reset: self.assertEqual( set(['user_data', 'vm_state', 'task_state']), instance.obj_what_changed()) else: self.assertEqual(set(['user_data']), instance.obj_what_changed()) instance.save(self.ctxt, expected_task_state='exp_task', expected_vm_state='exp_vm').WithSideEffects( _check_object) self.mox.ReplayAll() self.tgt_methods_cls.instance_update_from_api( message, instance, expected_vm_state='exp_vm', expected_task_state='exp_task', admin_state_reset=admin_state_reset) def test_instance_update_from_api(self): self._instance_update_helper(False) def test_instance_update_from_api_admin_state_reset(self): self._instance_update_helper(True) def _test_instance_action_method(self, method, args, kwargs, expected_args, expected_kwargs, expect_result): class FakeMessage(object): pass message = FakeMessage() message.ctxt = self.ctxt message.need_response = expect_result meth_cls = self.tgt_methods_cls self.mox.StubOutWithMock(meth_cls, '_call_compute_api_with_obj') method_corrections = { 'terminate': 'delete', } api_method = method_corrections.get(method, method) meth_cls._call_compute_api_with_obj( self.ctxt, 'fake-instance', api_method, *expected_args, **expected_kwargs).AndReturn('meow') self.mox.ReplayAll() method_translations = {'revert_resize': 'revert_resize', 'confirm_resize': 'confirm_resize', 'reset_network': 'reset_network', 'inject_network_info': 'inject_network_info', } tgt_method = method_translations.get(method, '%s_instance' % method) result = getattr(meth_cls, tgt_method)( message, 'fake-instance', *args, **kwargs) if expect_result: self.assertEqual('meow', result) def test_start_instance(self): self._test_instance_action_method('start', (), {}, (), {}, False) def test_stop_instance_cast(self): self._test_instance_action_method('stop', (), {}, (), {'do_cast': True}, False) def test_stop_instance_call(self): self._test_instance_action_method('stop', (), {}, (), {'do_cast': False}, True) def test_reboot_instance(self): kwargs = dict(reboot_type='HARD') self._test_instance_action_method('reboot', (), kwargs, (), kwargs, False) def test_suspend_instance(self): self._test_instance_action_method('suspend', (), {}, (), {}, False) def test_resume_instance(self): self._test_instance_action_method('resume', (), {}, (), {}, False) def test_get_host_uptime(self): host_name = "fake-host" host_uptime = (" 08:32:11 up 93 days, 18:25, 12 users, load average:" " 0.20, 0.12, 0.14") self.mox.StubOutWithMock(self.tgt_host_api, 'get_host_uptime') self.tgt_host_api.get_host_uptime(self.ctxt, host_name).\ AndReturn(host_uptime) self.mox.ReplayAll() response = self.src_msg_runner.get_host_uptime(self.ctxt, self.tgt_cell_name, host_name) expected_host_uptime = response.value_or_raise() self.assertEqual(host_uptime, expected_host_uptime) def test_terminate_instance(self): self._test_instance_action_method('terminate', (), {}, (), {}, False) def test_soft_delete_instance(self): self._test_instance_action_method('soft_delete', (), {}, (), {}, False) def test_pause_instance(self): self._test_instance_action_method('pause', (), {}, (), {}, False) def test_unpause_instance(self): self._test_instance_action_method('unpause', (), {}, (), {}, False) def test_resize_instance(self): kwargs = dict(flavor=dict(id=42, flavorid='orangemocchafrappuccino'), extra_instance_updates=dict(cow='moo')) expected_kwargs = dict(flavor_id='orangemocchafrappuccino', cow='moo') self._test_instance_action_method('resize', (), kwargs, (), expected_kwargs, False) def test_live_migrate_instance(self): kwargs = dict(block_migration='fake-block-mig', disk_over_commit='fake-commit', host_name='fake-host') expected_args = ('fake-block-mig', 'fake-commit', 'fake-host') self._test_instance_action_method('live_migrate', (), kwargs, expected_args, {}, False) def test_revert_resize(self): self._test_instance_action_method('revert_resize', (), {}, (), {}, False) def test_confirm_resize(self): self._test_instance_action_method('confirm_resize', (), {}, (), {}, False) def test_reset_network(self): self._test_instance_action_method('reset_network', (), {}, (), {}, False) def test_inject_network_info(self): self._test_instance_action_method('inject_network_info', (), {}, (), {}, False) def test_snapshot_instance(self): inst = instance_obj.Instance() meth_cls = self.tgt_methods_cls self.mox.StubOutWithMock(inst, 'refresh') self.mox.StubOutWithMock(inst, 'save') self.mox.StubOutWithMock(meth_cls.compute_rpcapi, 'snapshot_instance') def check_state(expected_task_state=None): self.assertEqual(task_states.IMAGE_SNAPSHOT_PENDING, inst.task_state) inst.refresh() inst.save(expected_task_state=[None]).WithSideEffects(check_state) meth_cls.compute_rpcapi.snapshot_instance(self.ctxt, inst, 'image-id') self.mox.ReplayAll() class FakeMessage(object): pass message = FakeMessage() message.ctxt = self.ctxt message.need_response = False meth_cls.snapshot_instance(message, inst, image_id='image-id') def test_backup_instance(self): inst = instance_obj.Instance() meth_cls = self.tgt_methods_cls self.mox.StubOutWithMock(inst, 'refresh') self.mox.StubOutWithMock(inst, 'save') self.mox.StubOutWithMock(meth_cls.compute_rpcapi, 'backup_instance') def check_state(expected_task_state=None): self.assertEqual(task_states.IMAGE_BACKUP, inst.task_state) inst.refresh() inst.save(expected_task_state=[None]).WithSideEffects(check_state) meth_cls.compute_rpcapi.backup_instance(self.ctxt, inst, 'image-id', 'backup-type', 'rotation') self.mox.ReplayAll() class FakeMessage(object): pass message = FakeMessage() message.ctxt = self.ctxt message.need_response = False meth_cls.backup_instance(message, inst, image_id='image-id', backup_type='backup-type', rotation='rotation') class CellsBroadcastMethodsTestCase(test.TestCase): """Test case for _BroadcastMessageMethods class. Most of these tests actually test the full path from the MessageRunner through to the functionality of the message method. Hits 2 birds with 1 stone, even though it's a little more than a unit test. """ def setUp(self): super(CellsBroadcastMethodsTestCase, self).setUp() fakes.init(self) self.ctxt = context.RequestContext('fake', 'fake') self._setup_attrs() def _setup_attrs(self, up=True): mid_cell = 'child-cell2' if up: src_cell = 'grandchild-cell1' tgt_cell = 'api-cell' else: src_cell = 'api-cell' tgt_cell = 'grandchild-cell1' self.src_msg_runner = fakes.get_message_runner(src_cell) methods_cls = self.src_msg_runner.methods_by_type['broadcast'] self.src_methods_cls = methods_cls self.src_db_inst = methods_cls.db self.src_compute_api = methods_cls.compute_api self.src_ca_rpcapi = methods_cls.consoleauth_rpcapi if not up: # fudge things so we only have 1 child to broadcast to state_manager = self.src_msg_runner.state_manager for cell in state_manager.get_child_cells(): if cell.name != 'child-cell2': del state_manager.child_cells[cell.name] self.mid_msg_runner = fakes.get_message_runner(mid_cell) methods_cls = self.mid_msg_runner.methods_by_type['broadcast'] self.mid_methods_cls = methods_cls self.mid_db_inst = methods_cls.db self.mid_compute_api = methods_cls.compute_api self.mid_ca_rpcapi = methods_cls.consoleauth_rpcapi self.tgt_msg_runner = fakes.get_message_runner(tgt_cell) methods_cls = self.tgt_msg_runner.methods_by_type['broadcast'] self.tgt_methods_cls = methods_cls self.tgt_db_inst = methods_cls.db self.tgt_compute_api = methods_cls.compute_api self.tgt_ca_rpcapi = methods_cls.consoleauth_rpcapi def test_at_the_top(self): self.assertTrue(self.tgt_methods_cls._at_the_top()) self.assertFalse(self.mid_methods_cls._at_the_top()) self.assertFalse(self.src_methods_cls._at_the_top()) def test_apply_expected_states_building(self): instance_info = {'vm_state': vm_states.BUILDING} expected = dict(instance_info, expected_vm_state=[vm_states.BUILDING, None]) self.src_methods_cls._apply_expected_states(instance_info) self.assertEqual(expected, instance_info) def test_apply_expected_states_resize_finish(self): instance_info = {'task_state': task_states.RESIZE_FINISH} exp_states = [task_states.RESIZE_FINISH, task_states.RESIZE_MIGRATED, task_states.RESIZE_MIGRATING, task_states.RESIZE_PREP] expected = dict(instance_info, expected_task_state=exp_states) self.src_methods_cls._apply_expected_states(instance_info) self.assertEqual(expected, instance_info) def _test_instance_update_at_top(self, net_info, exists=True): fake_info_cache = {'id': 1, 'instance': 'fake_instance', 'network_info': net_info} fake_sys_metadata = [{'id': 1, 'key': 'key1', 'value': 'value1'}, {'id': 2, 'key': 'key2', 'value': 'value2'}] fake_instance = {'id': 2, 'uuid': 'fake_uuid', 'security_groups': 'fake', 'volumes': 'fake', 'cell_name': 'fake', 'name': 'fake', 'metadata': 'fake', 'info_cache': fake_info_cache, 'system_metadata': fake_sys_metadata, 'other': 'meow'} expected_sys_metadata = {'key1': 'value1', 'key2': 'value2'} expected_info_cache = {'network_info': "[]"} expected_cell_name = 'api-cell!child-cell2!grandchild-cell1' expected_instance = {'system_metadata': expected_sys_metadata, 'cell_name': expected_cell_name, 'other': 'meow', 'uuid': 'fake_uuid'} # To show these should not be called in src/mid-level cell self.mox.StubOutWithMock(self.src_db_inst, 'instance_update') self.mox.StubOutWithMock(self.src_db_inst, 'instance_info_cache_update') self.mox.StubOutWithMock(self.mid_db_inst, 'instance_update') self.mox.StubOutWithMock(self.mid_db_inst, 'instance_info_cache_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_create') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_info_cache_update') mock = self.tgt_db_inst.instance_update(self.ctxt, 'fake_uuid', expected_instance, update_cells=False) if not exists: mock.AndRaise(exception.InstanceNotFound(instance_id='fake_uuid')) self.tgt_db_inst.instance_create(self.ctxt, expected_instance) self.tgt_db_inst.instance_info_cache_update(self.ctxt, 'fake_uuid', expected_info_cache) self.mox.ReplayAll() self.src_msg_runner.instance_update_at_top(self.ctxt, fake_instance) def test_instance_update_at_top(self): self._test_instance_update_at_top("[]") def test_instance_update_at_top_netinfo_list(self): self._test_instance_update_at_top([]) def test_instance_update_at_top_netinfo_model(self): self._test_instance_update_at_top(network_model.NetworkInfo()) def test_instance_update_at_top_doesnt_already_exist(self): self._test_instance_update_at_top([], exists=False) def test_instance_update_at_top_with_building_state(self): fake_info_cache = {'id': 1, 'instance': 'fake_instance', 'other': 'moo'} fake_sys_metadata = [{'id': 1, 'key': 'key1', 'value': 'value1'}, {'id': 2, 'key': 'key2', 'value': 'value2'}] fake_instance = {'id': 2, 'uuid': 'fake_uuid', 'security_groups': 'fake', 'volumes': 'fake', 'cell_name': 'fake', 'name': 'fake', 'metadata': 'fake', 'info_cache': fake_info_cache, 'system_metadata': fake_sys_metadata, 'vm_state': vm_states.BUILDING, 'other': 'meow'} expected_sys_metadata = {'key1': 'value1', 'key2': 'value2'} expected_info_cache = {'other': 'moo'} expected_cell_name = 'api-cell!child-cell2!grandchild-cell1' expected_instance = {'system_metadata': expected_sys_metadata, 'cell_name': expected_cell_name, 'other': 'meow', 'vm_state': vm_states.BUILDING, 'expected_vm_state': [vm_states.BUILDING, None], 'uuid': 'fake_uuid'} # To show these should not be called in src/mid-level cell self.mox.StubOutWithMock(self.src_db_inst, 'instance_update') self.mox.StubOutWithMock(self.src_db_inst, 'instance_info_cache_update') self.mox.StubOutWithMock(self.mid_db_inst, 'instance_update') self.mox.StubOutWithMock(self.mid_db_inst, 'instance_info_cache_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_info_cache_update') self.tgt_db_inst.instance_update(self.ctxt, 'fake_uuid', expected_instance, update_cells=False) self.tgt_db_inst.instance_info_cache_update(self.ctxt, 'fake_uuid', expected_info_cache) self.mox.ReplayAll() self.src_msg_runner.instance_update_at_top(self.ctxt, fake_instance) def test_instance_destroy_at_top(self): fake_instance = {'uuid': 'fake_uuid'} # To show these should not be called in src/mid-level cell self.mox.StubOutWithMock(self.src_db_inst, 'instance_destroy') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_destroy') self.tgt_db_inst.instance_destroy(self.ctxt, 'fake_uuid', update_cells=False) self.mox.ReplayAll() self.src_msg_runner.instance_destroy_at_top(self.ctxt, fake_instance) def test_instance_hard_delete_everywhere(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) instance = {'uuid': 'meow'} # Should not be called in src (API cell) self.mox.StubOutWithMock(self.src_compute_api, 'delete') self.mox.StubOutWithMock(self.mid_compute_api, 'delete') self.mox.StubOutWithMock(self.tgt_compute_api, 'delete') self.mid_compute_api.delete(self.ctxt, instance) self.tgt_compute_api.delete(self.ctxt, instance) self.mox.ReplayAll() self.src_msg_runner.instance_delete_everywhere(self.ctxt, instance, 'hard') def test_instance_soft_delete_everywhere(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) instance = {'uuid': 'meow'} # Should not be called in src (API cell) self.mox.StubOutWithMock(self.src_compute_api, 'soft_delete') self.mox.StubOutWithMock(self.mid_compute_api, 'soft_delete') self.mox.StubOutWithMock(self.tgt_compute_api, 'soft_delete') self.mid_compute_api.soft_delete(self.ctxt, instance) self.tgt_compute_api.soft_delete(self.ctxt, instance) self.mox.ReplayAll() self.src_msg_runner.instance_delete_everywhere(self.ctxt, instance, 'soft') def test_instance_fault_create_at_top(self): fake_instance_fault = {'id': 1, 'other stuff': 2, 'more stuff': 3} expected_instance_fault = {'other stuff': 2, 'more stuff': 3} # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'instance_fault_create') self.mox.StubOutWithMock(self.mid_db_inst, 'instance_fault_create') self.mox.StubOutWithMock(self.tgt_db_inst, 'instance_fault_create') self.tgt_db_inst.instance_fault_create(self.ctxt, expected_instance_fault) self.mox.ReplayAll() self.src_msg_runner.instance_fault_create_at_top(self.ctxt, fake_instance_fault) def test_bw_usage_update_at_top(self): fake_bw_update_info = {'uuid': 'fake_uuid', 'mac': 'fake_mac', 'start_period': 'fake_start_period', 'bw_in': 'fake_bw_in', 'bw_out': 'fake_bw_out', 'last_ctr_in': 'fake_last_ctr_in', 'last_ctr_out': 'fake_last_ctr_out', 'last_refreshed': 'fake_last_refreshed'} # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'bw_usage_update') self.mox.StubOutWithMock(self.mid_db_inst, 'bw_usage_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'bw_usage_update') self.tgt_db_inst.bw_usage_update(self.ctxt, **fake_bw_update_info) self.mox.ReplayAll() self.src_msg_runner.bw_usage_update_at_top(self.ctxt, fake_bw_update_info) def test_sync_instances(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) project_id = 'fake_project_id' updated_since_raw = 'fake_updated_since_raw' updated_since_parsed = 'fake_updated_since_parsed' deleted = 'fake_deleted' instance1 = dict(uuid='fake_uuid1', deleted=False) instance2 = dict(uuid='fake_uuid2', deleted=True) fake_instances = [instance1, instance2] self.mox.StubOutWithMock(self.tgt_msg_runner, 'instance_update_at_top') self.mox.StubOutWithMock(self.tgt_msg_runner, 'instance_destroy_at_top') self.mox.StubOutWithMock(timeutils, 'parse_isotime') self.mox.StubOutWithMock(cells_utils, 'get_instances_to_sync') # Middle cell. timeutils.parse_isotime(updated_since_raw).AndReturn( updated_since_parsed) cells_utils.get_instances_to_sync(self.ctxt, updated_since=updated_since_parsed, project_id=project_id, deleted=deleted).AndReturn([]) # Bottom/Target cell timeutils.parse_isotime(updated_since_raw).AndReturn( updated_since_parsed) cells_utils.get_instances_to_sync(self.ctxt, updated_since=updated_since_parsed, project_id=project_id, deleted=deleted).AndReturn(fake_instances) self.tgt_msg_runner.instance_update_at_top(self.ctxt, instance1) self.tgt_msg_runner.instance_destroy_at_top(self.ctxt, instance2) self.mox.ReplayAll() self.src_msg_runner.sync_instances(self.ctxt, project_id, updated_since_raw, deleted) def test_service_get_all_with_disabled(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) ctxt = self.ctxt.elevated() self.mox.StubOutWithMock(self.src_db_inst, 'service_get_all') self.mox.StubOutWithMock(self.mid_db_inst, 'service_get_all') self.mox.StubOutWithMock(self.tgt_db_inst, 'service_get_all') self.src_db_inst.service_get_all(ctxt, disabled=None).AndReturn([1, 2]) self.mid_db_inst.service_get_all(ctxt, disabled=None).AndReturn([3]) self.tgt_db_inst.service_get_all(ctxt, disabled=None).AndReturn([4, 5]) self.mox.ReplayAll() responses = self.src_msg_runner.service_get_all(ctxt, filters={}) response_values = [(resp.cell_name, resp.value_or_raise()) for resp in responses] expected = [('api-cell!child-cell2!grandchild-cell1', [4, 5]), ('api-cell!child-cell2', [3]), ('api-cell', [1, 2])] self.assertEqual(expected, response_values) def test_service_get_all_without_disabled(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) disabled = False filters = {'disabled': disabled} ctxt = self.ctxt.elevated() self.mox.StubOutWithMock(self.src_db_inst, 'service_get_all') self.mox.StubOutWithMock(self.mid_db_inst, 'service_get_all') self.mox.StubOutWithMock(self.tgt_db_inst, 'service_get_all') self.src_db_inst.service_get_all(ctxt, disabled=disabled).AndReturn([1, 2]) self.mid_db_inst.service_get_all(ctxt, disabled=disabled).AndReturn([3]) self.tgt_db_inst.service_get_all(ctxt, disabled=disabled).AndReturn([4, 5]) self.mox.ReplayAll() responses = self.src_msg_runner.service_get_all(ctxt, filters=filters) response_values = [(resp.cell_name, resp.value_or_raise()) for resp in responses] expected = [('api-cell!child-cell2!grandchild-cell1', [4, 5]), ('api-cell!child-cell2', [3]), ('api-cell', [1, 2])] self.assertEqual(expected, response_values) def test_task_log_get_all_broadcast(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) task_name = 'fake_task_name' begin = 'fake_begin' end = 'fake_end' host = 'fake_host' state = 'fake_state' ctxt = self.ctxt.elevated() self.mox.StubOutWithMock(self.src_db_inst, 'task_log_get_all') self.mox.StubOutWithMock(self.mid_db_inst, 'task_log_get_all') self.mox.StubOutWithMock(self.tgt_db_inst, 'task_log_get_all') self.src_db_inst.task_log_get_all(ctxt, task_name, begin, end, host=host, state=state).AndReturn([1, 2]) self.mid_db_inst.task_log_get_all(ctxt, task_name, begin, end, host=host, state=state).AndReturn([3]) self.tgt_db_inst.task_log_get_all(ctxt, task_name, begin, end, host=host, state=state).AndReturn([4, 5]) self.mox.ReplayAll() responses = self.src_msg_runner.task_log_get_all(ctxt, None, task_name, begin, end, host=host, state=state) response_values = [(resp.cell_name, resp.value_or_raise()) for resp in responses] expected = [('api-cell!child-cell2!grandchild-cell1', [4, 5]), ('api-cell!child-cell2', [3]), ('api-cell', [1, 2])] self.assertEqual(expected, response_values) def test_compute_node_get_all(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) ctxt = self.ctxt.elevated() self.mox.StubOutWithMock(self.src_db_inst, 'compute_node_get_all') self.mox.StubOutWithMock(self.mid_db_inst, 'compute_node_get_all') self.mox.StubOutWithMock(self.tgt_db_inst, 'compute_node_get_all') self.src_db_inst.compute_node_get_all(ctxt).AndReturn([1, 2]) self.mid_db_inst.compute_node_get_all(ctxt).AndReturn([3]) self.tgt_db_inst.compute_node_get_all(ctxt).AndReturn([4, 5]) self.mox.ReplayAll() responses = self.src_msg_runner.compute_node_get_all(ctxt) response_values = [(resp.cell_name, resp.value_or_raise()) for resp in responses] expected = [('api-cell!child-cell2!grandchild-cell1', [4, 5]), ('api-cell!child-cell2', [3]), ('api-cell', [1, 2])] self.assertEqual(expected, response_values) def test_compute_node_get_all_with_hyp_match(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) hypervisor_match = 'meow' ctxt = self.ctxt.elevated() self.mox.StubOutWithMock(self.src_db_inst, 'compute_node_search_by_hypervisor') self.mox.StubOutWithMock(self.mid_db_inst, 'compute_node_search_by_hypervisor') self.mox.StubOutWithMock(self.tgt_db_inst, 'compute_node_search_by_hypervisor') self.src_db_inst.compute_node_search_by_hypervisor(ctxt, hypervisor_match).AndReturn([1, 2]) self.mid_db_inst.compute_node_search_by_hypervisor(ctxt, hypervisor_match).AndReturn([3]) self.tgt_db_inst.compute_node_search_by_hypervisor(ctxt, hypervisor_match).AndReturn([4, 5]) self.mox.ReplayAll() responses = self.src_msg_runner.compute_node_get_all(ctxt, hypervisor_match=hypervisor_match) response_values = [(resp.cell_name, resp.value_or_raise()) for resp in responses] expected = [('api-cell!child-cell2!grandchild-cell1', [4, 5]), ('api-cell!child-cell2', [3]), ('api-cell', [1, 2])] self.assertEqual(expected, response_values) def test_compute_node_stats(self): # Reset this, as this is a broadcast down. self._setup_attrs(up=False) ctxt = self.ctxt.elevated() self.mox.StubOutWithMock(self.src_db_inst, 'compute_node_statistics') self.mox.StubOutWithMock(self.mid_db_inst, 'compute_node_statistics') self.mox.StubOutWithMock(self.tgt_db_inst, 'compute_node_statistics') self.src_db_inst.compute_node_statistics(ctxt).AndReturn([1, 2]) self.mid_db_inst.compute_node_statistics(ctxt).AndReturn([3]) self.tgt_db_inst.compute_node_statistics(ctxt).AndReturn([4, 5]) self.mox.ReplayAll() responses = self.src_msg_runner.compute_node_stats(ctxt) response_values = [(resp.cell_name, resp.value_or_raise()) for resp in responses] expected = [('api-cell!child-cell2!grandchild-cell1', [4, 5]), ('api-cell!child-cell2', [3]), ('api-cell', [1, 2])] self.assertEqual(expected, response_values) def test_consoleauth_delete_tokens(self): fake_uuid = 'fake-instance-uuid' # To show these should not be called in src/mid-level cell self.mox.StubOutWithMock(self.src_ca_rpcapi, 'delete_tokens_for_instance') self.mox.StubOutWithMock(self.mid_ca_rpcapi, 'delete_tokens_for_instance') self.mox.StubOutWithMock(self.tgt_ca_rpcapi, 'delete_tokens_for_instance') self.tgt_ca_rpcapi.delete_tokens_for_instance(self.ctxt, fake_uuid) self.mox.ReplayAll() self.src_msg_runner.consoleauth_delete_tokens(self.ctxt, fake_uuid) def test_bdm_update_or_create_with_none_create(self): fake_bdm = {'id': 'fake_id', 'volume_id': 'fake_volume_id'} expected_bdm = fake_bdm.copy() expected_bdm.pop('id') # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'block_device_mapping_update_or_create') self.mox.StubOutWithMock(self.mid_db_inst, 'block_device_mapping_update_or_create') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_update_or_create') self.tgt_db_inst.block_device_mapping_update_or_create( self.ctxt, expected_bdm, legacy=False) self.mox.ReplayAll() self.src_msg_runner.bdm_update_or_create_at_top(self.ctxt, fake_bdm, create=None) def test_bdm_update_or_create_with_true_create(self): fake_bdm = {'id': 'fake_id', 'volume_id': 'fake_volume_id'} expected_bdm = fake_bdm.copy() expected_bdm.pop('id') # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'block_device_mapping_create') self.mox.StubOutWithMock(self.mid_db_inst, 'block_device_mapping_create') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_create') self.tgt_db_inst.block_device_mapping_create( self.ctxt, fake_bdm, legacy=False) self.mox.ReplayAll() self.src_msg_runner.bdm_update_or_create_at_top(self.ctxt, fake_bdm, create=True) def test_bdm_update_or_create_with_false_create_vol_id(self): fake_bdm = {'id': 'fake_id', 'instance_uuid': 'fake_instance_uuid', 'device_name': 'fake_device_name', 'volume_id': 'fake_volume_id'} expected_bdm = fake_bdm.copy() expected_bdm.pop('id') fake_inst_bdms = [{'id': 1, 'volume_id': 'not-a-match', 'device_name': 'not-a-match'}, {'id': 2, 'volume_id': 'fake_volume_id', 'device_name': 'not-a-match'}, {'id': 3, 'volume_id': 'not-a-match', 'device_name': 'not-a-match'}] # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'block_device_mapping_update') self.mox.StubOutWithMock(self.mid_db_inst, 'block_device_mapping_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_get_all_by_instance') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_update') self.tgt_db_inst.block_device_mapping_get_all_by_instance( self.ctxt, 'fake_instance_uuid').AndReturn( fake_inst_bdms) # Should try to update ID 2. self.tgt_db_inst.block_device_mapping_update( self.ctxt, 2, expected_bdm, legacy=False) self.mox.ReplayAll() self.src_msg_runner.bdm_update_or_create_at_top(self.ctxt, fake_bdm, create=False) def test_bdm_update_or_create_with_false_create_dev_name(self): fake_bdm = {'id': 'fake_id', 'instance_uuid': 'fake_instance_uuid', 'device_name': 'fake_device_name', 'volume_id': 'fake_volume_id'} expected_bdm = fake_bdm.copy() expected_bdm.pop('id') fake_inst_bdms = [{'id': 1, 'volume_id': 'not-a-match', 'device_name': 'not-a-match'}, {'id': 2, 'volume_id': 'not-a-match', 'device_name': 'fake_device_name'}, {'id': 3, 'volume_id': 'not-a-match', 'device_name': 'not-a-match'}] # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'block_device_mapping_update') self.mox.StubOutWithMock(self.mid_db_inst, 'block_device_mapping_update') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_get_all_by_instance') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_update') self.tgt_db_inst.block_device_mapping_get_all_by_instance( self.ctxt, 'fake_instance_uuid').AndReturn( fake_inst_bdms) # Should try to update ID 2. self.tgt_db_inst.block_device_mapping_update( self.ctxt, 2, expected_bdm, legacy=False) self.mox.ReplayAll() self.src_msg_runner.bdm_update_or_create_at_top(self.ctxt, fake_bdm, create=False) def test_bdm_destroy_by_volume(self): fake_instance_uuid = 'fake-instance-uuid' fake_volume_id = 'fake-volume-name' # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'block_device_mapping_destroy_by_instance_and_volume') self.mox.StubOutWithMock(self.mid_db_inst, 'block_device_mapping_destroy_by_instance_and_volume') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_destroy_by_instance_and_volume') self.tgt_db_inst.block_device_mapping_destroy_by_instance_and_volume( self.ctxt, fake_instance_uuid, fake_volume_id) self.mox.ReplayAll() self.src_msg_runner.bdm_destroy_at_top(self.ctxt, fake_instance_uuid, volume_id=fake_volume_id) def test_bdm_destroy_by_device(self): fake_instance_uuid = 'fake-instance-uuid' fake_device_name = 'fake-device-name' # Shouldn't be called for these 2 cells self.mox.StubOutWithMock(self.src_db_inst, 'block_device_mapping_destroy_by_instance_and_device') self.mox.StubOutWithMock(self.mid_db_inst, 'block_device_mapping_destroy_by_instance_and_device') self.mox.StubOutWithMock(self.tgt_db_inst, 'block_device_mapping_destroy_by_instance_and_device') self.tgt_db_inst.block_device_mapping_destroy_by_instance_and_device( self.ctxt, fake_instance_uuid, fake_device_name) self.mox.ReplayAll() self.src_msg_runner.bdm_destroy_at_top(self.ctxt, fake_instance_uuid, device_name=fake_device_name) def test_get_migrations(self): self._setup_attrs(up=False) filters = {'status': 'confirmed'} migrations_from_cell1 = [{'id': 123}] migrations_from_cell2 = [{'id': 456}] self.mox.StubOutWithMock(self.mid_compute_api, 'get_migrations') self.mid_compute_api.get_migrations(self.ctxt, filters).\ AndReturn(migrations_from_cell1) self.mox.StubOutWithMock(self.tgt_compute_api, 'get_migrations') self.tgt_compute_api.get_migrations(self.ctxt, filters).\ AndReturn(migrations_from_cell2) self.mox.ReplayAll() responses = self.src_msg_runner.get_migrations( self.ctxt, None, False, filters) self.assertEqual(2, len(responses)) for response in responses: self.assertIn(response.value_or_raise(), [migrations_from_cell1, migrations_from_cell2]) nova-2014.1/nova/tests/cells/__init__.py0000664000175400017540000000117412323721477021235 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/cert/0000775000175400017540000000000012323722546016752 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/cert/test_rpcapi.py0000664000175400017540000001114512323721477021645 0ustar jenkinsjenkins00000000000000# 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. """ Unit Tests for nova.cert.rpcapi """ import contextlib import mock from oslo.config import cfg from nova.cert import rpcapi as cert_rpcapi from nova import context from nova import test CONF = cfg.CONF class CertRpcAPITestCase(test.NoDBTestCase): def _test_cert_api(self, method, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = cert_rpcapi.CertAPI() self.assertIsNotNone(rpcapi.client) self.assertEqual(rpcapi.client.target.topic, CONF.cert_topic) orig_prepare = rpcapi.client.prepare expected_version = kwargs.pop('version', rpcapi.client.target.version) with contextlib.nested( mock.patch.object(rpcapi.client, 'call'), mock.patch.object(rpcapi.client, 'prepare'), mock.patch.object(rpcapi.client, 'can_send_version'), ) as ( rpc_mock, prepare_mock, csv_mock ): prepare_mock.return_value = rpcapi.client rpc_mock.return_value = 'foo' csv_mock.side_effect = ( lambda v: orig_prepare(version=v).can_send_version()) retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, rpc_mock.return_value) prepare_mock.assert_called_once_with(version=expected_version) rpc_mock.assert_called_once_with(ctxt, method, **kwargs) def test_revoke_certs_by_user(self): self._test_cert_api('revoke_certs_by_user', user_id='fake_user_id') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('revoke_certs_by_user', user_id='fake_user_id', version='1.0') def test_revoke_certs_by_project(self): self._test_cert_api('revoke_certs_by_project', project_id='fake_project_id') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('revoke_certs_by_project', project_id='fake_project_id', version='1.0') def test_revoke_certs_by_user_and_project(self): self._test_cert_api('revoke_certs_by_user_and_project', user_id='fake_user_id', project_id='fake_project_id') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('revoke_certs_by_user_and_project', user_id='fake_user_id', project_id='fake_project_id', version='1.0') def test_generate_x509_cert(self): self._test_cert_api('generate_x509_cert', user_id='fake_user_id', project_id='fake_project_id') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('generate_x509_cert', user_id='fake_user_id', project_id='fake_project_id', version='1.0') def test_fetch_ca(self): self._test_cert_api('fetch_ca', project_id='fake_project_id') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('fetch_ca', project_id='fake_project_id', version='1.0') def test_fetch_crl(self): self._test_cert_api('fetch_crl', project_id='fake_project_id') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('fetch_crl', project_id='fake_project_id', version='1.0') def test_decrypt_text(self): self._test_cert_api('decrypt_text', project_id='fake_project_id', text='blah') # NOTE(russellb) Havana compat self.flags(cert='havana', group='upgrade_levels') self._test_cert_api('decrypt_text', project_id='fake_project_id', text='blah', version='1.0') nova-2014.1/nova/tests/cert/__init__.py0000664000175400017540000000117312323721477021067 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/fake_utils.py0000664000175400017540000000172312323721477020522 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Rackspace Hosting # # 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. """This modules stubs out functions in nova.utils.""" from nova import utils def stub_out_utils_spawn_n(stubs): """Stubs out spawn_n with a blocking version. This aids testing async processes by blocking until they're done. """ def no_spawn(func, *args, **kwargs): return func(*args, **kwargs) stubs.Set(utils, 'spawn_n', no_spawn) nova-2014.1/nova/tests/network/0000775000175400017540000000000012323722546017506 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/network/security_group/0000775000175400017540000000000012323722546022571 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/network/security_group/test_neutron_driver.py0000664000175400017540000002256712323721477027265 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # import mox from neutronclient.common import exceptions as n_exc from neutronclient.v2_0 import client from nova.api.openstack.compute.contrib import security_groups from nova import context from nova import exception from nova.network import neutronv2 from nova.network.security_group import neutron_driver from nova import test class TestNeutronDriver(test.NoDBTestCase): def setUp(self): super(TestNeutronDriver, self).setUp() self.mox.StubOutWithMock(neutronv2, 'get_client') self.moxed_client = self.mox.CreateMock(client.Client) neutronv2.get_client(mox.IgnoreArg()).MultipleTimes().AndReturn( self.moxed_client) self.context = context.RequestContext('userid', 'my_tenantid') setattr(self.context, 'auth_token', 'bff4a5a6b9eb4ea2a6efec6eefb77936') def test_list_with_project(self): project_id = '0af70a4d22cf4652824ddc1f2435dd85' security_groups_list = {'security_groups': []} self.moxed_client.list_security_groups(tenant_id=project_id).AndReturn( security_groups_list) self.mox.ReplayAll() sg_api = neutron_driver.SecurityGroupAPI() sg_api.list(self.context, project=project_id) def test_create_security_group_exceed_quota(self): name = 'test-security-group' description = 'test-security-group' body = {'security_group': {'name': name, 'description': description}} message = "Quota exceeded for resources: ['security_group']" self.moxed_client.create_security_group( body).AndRaise(n_exc.NeutronClientException(status_code=409, message=message)) self.mox.ReplayAll() sg_api = security_groups.NativeNeutronSecurityGroupAPI() self.assertRaises(exception.SecurityGroupLimitExceeded, sg_api.create_security_group, self.context, name, description) def test_create_security_group_rules_exceed_quota(self): vals = {'protocol': 'tcp', 'cidr': '0.0.0.0/0', 'parent_group_id': '7ae75663-277e-4a0e-8f87-56ea4e70cb47', 'group_id': None, 'from_port': 1025, 'to_port': 1025} body = {'security_group_rules': [{'remote_group_id': None, 'direction': 'ingress', 'protocol': 'tcp', 'ethertype': 'IPv4', 'port_range_max': 1025, 'port_range_min': 1025, 'security_group_id': '7ae75663-277e-4a0e-8f87-56ea4e70cb47', 'remote_ip_prefix': '0.0.0.0/0'}]} name = 'test-security-group' message = "Quota exceeded for resources: ['security_group_rule']" self.moxed_client.create_security_group_rule( body).AndRaise(n_exc.NeutronClientException(status_code=409, message=message)) self.mox.ReplayAll() sg_api = security_groups.NativeNeutronSecurityGroupAPI() self.assertRaises(exception.SecurityGroupLimitExceeded, sg_api.add_rules, self.context, None, name, [vals]) def test_list_security_group_with_no_port_range_and_not_tcp_udp_icmp(self): sg1 = {'description': 'default', 'id': '07f1362f-34f6-4136-819a-2dcde112269e', 'name': 'default', 'tenant_id': 'c166d9316f814891bcb66b96c4c891d6', 'security_group_rules': [{'direction': 'ingress', 'ethertype': 'IPv4', 'id': '0a4647f1-e1aa-488d-90e1-97a7d0293beb', 'port_range_max': None, 'port_range_min': None, 'protocol': '51', 'remote_group_id': None, 'remote_ip_prefix': None, 'security_group_id': '07f1362f-34f6-4136-819a-2dcde112269e', 'tenant_id': 'c166d9316f814891bcb66b96c4c891d6'}]} self.moxed_client.list_security_groups().AndReturn( {'security_groups': [sg1]}) self.mox.ReplayAll() sg_api = neutron_driver.SecurityGroupAPI() result = sg_api.list(self.context) expected = [{'rules': [{'from_port': -1, 'protocol': '51', 'to_port': -1, 'parent_group_id': '07f1362f-34f6-4136-819a-2dcde112269e', 'cidr': '0.0.0.0/0', 'group_id': None, 'id': '0a4647f1-e1aa-488d-90e1-97a7d0293beb'}], 'project_id': 'c166d9316f814891bcb66b96c4c891d6', 'id': '07f1362f-34f6-4136-819a-2dcde112269e', 'name': 'default', 'description': 'default'}] self.assertEqual(expected, result) def test_instances_security_group_bindings(self): server_id = 'c5a20e8d-c4b0-47cf-9dca-ebe4f758acb1' port1_id = '4c505aec-09aa-47bc-bcc0-940477e84dc0' port2_id = 'b3b31a53-6e29-479f-ae5c-00b7b71a6d44' sg1_id = '2f7ce969-1a73-4ef9-bbd6-c9a91780ecd4' sg2_id = '20c89ce5-9388-4046-896e-64ffbd3eb584' servers = [{'id': server_id}] ports = [{'id': port1_id, 'device_id': server_id, 'security_groups': [sg1_id]}, {'id': port2_id, 'device_id': server_id, 'security_groups': [sg2_id]}] port_list = {'ports': ports} sg1 = {'id': sg1_id, 'name': 'wol'} sg2 = {'id': sg2_id, 'name': 'eor'} security_groups_list = {'security_groups': [sg1, sg2]} sg_bindings = {server_id: [{'name': 'wol'}, {'name': 'eor'}]} self.moxed_client.list_ports(device_id=[server_id]).AndReturn( port_list) self.moxed_client.list_security_groups(id=[sg2_id, sg1_id]).AndReturn( security_groups_list) self.mox.ReplayAll() sg_api = neutron_driver.SecurityGroupAPI() result = sg_api.get_instances_security_groups_bindings( self.context, servers) self.assertEqual(result, sg_bindings) def _test_instances_security_group_bindings_scale(self, num_servers): max_query = 150 sg1_id = '2f7ce969-1a73-4ef9-bbd6-c9a91780ecd4' sg2_id = '20c89ce5-9388-4046-896e-64ffbd3eb584' sg1 = {'id': sg1_id, 'name': 'wol'} sg2 = {'id': sg2_id, 'name': 'eor'} security_groups_list = {'security_groups': [sg1, sg2]} servers = [] device_ids = [] ports = [] sg_bindings = {} for i in xrange(0, num_servers): server_id = "server-%d" % i port_id = "port-%d" % i servers.append({'id': server_id}) device_ids.append(server_id) ports.append({'id': port_id, 'device_id': server_id, 'security_groups': [sg1_id, sg2_id]}) sg_bindings[server_id] = [{'name': 'wol'}, {'name': 'eor'}] for x in xrange(0, num_servers, max_query): self.moxed_client.list_ports( device_id=device_ids[x:x + max_query]).\ AndReturn({'ports': ports[x:x + max_query]}) self.moxed_client.list_security_groups(id=[sg2_id, sg1_id]).AndReturn( security_groups_list) self.mox.ReplayAll() sg_api = neutron_driver.SecurityGroupAPI() result = sg_api.get_instances_security_groups_bindings( self.context, servers) self.assertEqual(result, sg_bindings) def test_instances_security_group_bindings_less_than_max(self): self._test_instances_security_group_bindings_scale(100) def test_instances_security_group_bindings_max(self): self._test_instances_security_group_bindings_scale(150) def test_instances_security_group_bindings_more_then_max(self): self._test_instances_security_group_bindings_scale(300) def test_instances_security_group_bindings_with_hidden_sg(self): servers = [{'id': 'server_1'}] ports = [{'id': '1', 'device_id': 'dev_1', 'security_groups': ['1']}, {'id': '2', 'device_id': 'dev_1', 'security_groups': ['2']}] port_list = {'ports': ports} sg1 = {'id': '1', 'name': 'wol'} sg2 = {'id': '2', 'name': 'eor'} # User doesn't have access to sg2 security_groups_list = {'security_groups': [sg1]} sg_bindings = {'dev_1': [{'name': 'wol'}]} self.moxed_client.list_ports(device_id=['server_1']).AndReturn( port_list) self.moxed_client.list_security_groups(id=['1', '2']).AndReturn( security_groups_list) self.mox.ReplayAll() sg_api = neutron_driver.SecurityGroupAPI() result = sg_api.get_instances_security_groups_bindings( self.context, servers) self.assertEqual(result, sg_bindings) nova-2014.1/nova/tests/network/security_group/__init__.py0000664000175400017540000000000012323721477024672 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/network/test_linux_net.py0000664000175400017540000013115212323721477023131 0ustar jenkinsjenkins00000000000000# Copyright 2011 NTT # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import calendar import contextlib import datetime import os import mock import mox from oslo.config import cfg from nova import context from nova import db from nova import exception from nova.network import driver from nova.network import linux_net from nova.objects import fixed_ip as fixed_ip_obj from nova.openstack.common import fileutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova.openstack.common import timeutils from nova import test from nova import utils LOG = logging.getLogger(__name__) CONF = cfg.CONF HOST = "testhost" instances = {'00000000-0000-0000-0000-0000000000000000': {'id': 0, 'uuid': '00000000-0000-0000-0000-0000000000000000', 'host': 'fake_instance00', 'created_at': datetime.datetime(1955, 11, 5, 0, 0, 0), 'updated_at': datetime.datetime(1985, 10, 26, 1, 35, 0), 'hostname': 'fake_instance00'}, '00000000-0000-0000-0000-0000000000000001': {'id': 1, 'uuid': '00000000-0000-0000-0000-0000000000000001', 'host': 'fake_instance01', 'created_at': datetime.datetime(1955, 11, 5, 0, 0, 0), 'updated_at': datetime.datetime(1985, 10, 26, 1, 35, 0), 'hostname': 'fake_instance01'}} addresses = [{"address": "10.0.0.1"}, {"address": "10.0.0.2"}, {"address": "10.0.0.3"}, {"address": "10.0.0.4"}, {"address": "10.0.0.5"}, {"address": "10.0.0.6"}] networks = [{'id': 0, 'uuid': "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", 'label': 'test0', 'injected': False, 'multi_host': False, 'cidr': '192.168.0.0/24', 'cidr_v6': '2001:db8::/64', 'gateway_v6': '2001:db8::1', 'netmask_v6': '64', 'netmask': '255.255.255.0', 'bridge': 'fa0', 'bridge_interface': 'fake_fa0', 'gateway': '192.168.0.1', 'broadcast': '192.168.0.255', 'dns1': '192.168.0.1', 'dns2': '192.168.0.2', 'dhcp_server': '0.0.0.0', 'dhcp_start': '192.168.100.1', 'vlan': None, 'host': None, 'project_id': 'fake_project', 'vpn_public_address': '192.168.0.2'}, {'id': 1, 'uuid': "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", 'label': 'test1', 'injected': False, 'multi_host': True, 'cidr': '192.168.1.0/24', 'cidr_v6': '2001:db9::/64', 'gateway_v6': '2001:db9::1', 'netmask_v6': '64', 'netmask': '255.255.255.0', 'bridge': 'fa1', 'bridge_interface': 'fake_fa1', 'gateway': '192.168.1.1', 'broadcast': '192.168.1.255', 'dns1': '192.168.0.1', 'dns2': '192.168.0.2', 'dhcp_server': '0.0.0.0', 'dhcp_start': '192.168.100.1', 'vlan': None, 'host': None, 'project_id': 'fake_project', 'vpn_public_address': '192.168.1.2'}] fixed_ips = [{'id': 0, 'network_id': 0, 'address': '192.168.0.100', 'instance_id': 0, 'allocated': True, 'leased': True, 'virtual_interface_id': 0, 'instance_uuid': '00000000-0000-0000-0000-0000000000000000', 'floating_ips': []}, {'id': 1, 'network_id': 1, 'address': '192.168.1.100', 'instance_id': 0, 'allocated': True, 'leased': True, 'virtual_interface_id': 1, 'instance_uuid': '00000000-0000-0000-0000-0000000000000000', 'floating_ips': []}, {'id': 2, 'network_id': 1, 'address': '192.168.0.101', 'instance_id': 1, 'allocated': True, 'leased': True, 'virtual_interface_id': 2, 'instance_uuid': '00000000-0000-0000-0000-0000000000000001', 'floating_ips': []}, {'id': 3, 'network_id': 0, 'address': '192.168.1.101', 'instance_id': 1, 'allocated': True, 'leased': True, 'virtual_interface_id': 3, 'instance_uuid': '00000000-0000-0000-0000-0000000000000001', 'floating_ips': []}, {'id': 4, 'network_id': 0, 'address': '192.168.0.102', 'instance_id': 0, 'allocated': True, 'leased': False, 'virtual_interface_id': 4, 'instance_uuid': '00000000-0000-0000-0000-0000000000000000', 'floating_ips': []}, {'id': 5, 'network_id': 1, 'address': '192.168.1.102', 'instance_id': 1, 'allocated': True, 'leased': False, 'virtual_interface_id': 5, 'instance_uuid': '00000000-0000-0000-0000-0000000000000001', 'floating_ips': []}] vifs = [{'id': 0, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:00', 'uuid': '00000000-0000-0000-0000-0000000000000000', 'network_id': 0, 'instance_uuid': '00000000-0000-0000-0000-0000000000000000'}, {'id': 1, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:01', 'uuid': '00000000-0000-0000-0000-0000000000000001', 'network_id': 1, 'instance_uuid': '00000000-0000-0000-0000-0000000000000000'}, {'id': 2, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:02', 'uuid': '00000000-0000-0000-0000-0000000000000002', 'network_id': 1, 'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}, {'id': 3, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:03', 'uuid': '00000000-0000-0000-0000-0000000000000003', 'network_id': 0, 'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}, {'id': 4, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:04', 'uuid': '00000000-0000-0000-0000-0000000000000004', 'network_id': 0, 'instance_uuid': '00000000-0000-0000-0000-0000000000000000'}, {'id': 5, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:05', 'uuid': '00000000-0000-0000-0000-0000000000000005', 'network_id': 1, 'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}] def get_associated(context, network_id, host=None, address=None): result = [] for datum in fixed_ips: if (datum['network_id'] == network_id and datum['allocated'] and datum['instance_uuid'] is not None and datum['virtual_interface_id'] is not None): instance = instances[datum['instance_uuid']] if host and host != instance['host']: continue if address and address != datum['address']: continue cleaned = {} cleaned['address'] = datum['address'] cleaned['instance_uuid'] = datum['instance_uuid'] cleaned['network_id'] = datum['network_id'] cleaned['vif_id'] = datum['virtual_interface_id'] vif = vifs[datum['virtual_interface_id']] cleaned['vif_address'] = vif['address'] cleaned['instance_hostname'] = instance['hostname'] cleaned['instance_updated'] = instance['updated_at'] cleaned['instance_created'] = instance['created_at'] cleaned['allocated'] = datum['allocated'] cleaned['leased'] = datum['leased'] result.append(cleaned) return result class LinuxNetworkTestCase(test.NoDBTestCase): def setUp(self): super(LinuxNetworkTestCase, self).setUp() self.driver = driver.load_network_driver() self.driver.db = db self.context = context.RequestContext('testuser', 'testproject', is_admin=True) def get_vifs(_context, instance_uuid, use_slave): return [vif for vif in vifs if vif['instance_uuid'] == instance_uuid] def get_instance(_context, instance_id): return instances[instance_id] self.stubs.Set(db, 'virtual_interface_get_by_instance', get_vifs) self.stubs.Set(db, 'instance_get', get_instance) self.stubs.Set(db, 'network_get_associated_fixed_ips', get_associated) def _test_add_snat_rule(self, expected): def verify_add_rule(chain, rule): self.assertEqual(chain, 'snat') self.assertEqual(rule, expected) self.stubs.Set(linux_net.iptables_manager.ipv4['nat'], 'add_rule', verify_add_rule) linux_net.add_snat_rule('10.0.0.0/24') def test_add_snat_rule(self): self.flags(routing_source_ip='10.10.10.1') expected = ('-s 10.0.0.0/24 -d 0.0.0.0/0 ' '-j SNAT --to-source 10.10.10.1 -o eth0') self._test_add_snat_rule(expected) def test_add_snat_rule_snat_range(self): self.flags(routing_source_ip='10.10.10.1', force_snat_range=['10.10.10.0/24']) expected = ('-s 10.0.0.0/24 -d 10.10.10.0/24 ' '-j SNAT --to-source 10.10.10.1 -o eth0') self._test_add_snat_rule(expected) def test_update_dhcp_for_nw00(self): self.flags(use_single_default_gateway=True) self.mox.StubOutWithMock(self.driver, 'write_to_file') self.mox.StubOutWithMock(fileutils, 'ensure_tree') self.mox.StubOutWithMock(os, 'chmod') self.driver.write_to_file(mox.IgnoreArg(), mox.IgnoreArg()) self.driver.write_to_file(mox.IgnoreArg(), mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) os.chmod(mox.IgnoreArg(), mox.IgnoreArg()) os.chmod(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.driver.update_dhcp(self.context, "eth0", networks[0]) def test_update_dhcp_for_nw01(self): self.flags(use_single_default_gateway=True) self.mox.StubOutWithMock(self.driver, 'write_to_file') self.mox.StubOutWithMock(fileutils, 'ensure_tree') self.mox.StubOutWithMock(os, 'chmod') self.driver.write_to_file(mox.IgnoreArg(), mox.IgnoreArg()) self.driver.write_to_file(mox.IgnoreArg(), mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) fileutils.ensure_tree(mox.IgnoreArg()) os.chmod(mox.IgnoreArg(), mox.IgnoreArg()) os.chmod(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.driver.update_dhcp(self.context, "eth0", networks[0]) def test_get_dhcp_hosts_for_nw00(self): self.flags(use_single_default_gateway=True) expected = ( "DE:AD:BE:EF:00:00,fake_instance00.novalocal," "192.168.0.100,net:NW-0\n" "DE:AD:BE:EF:00:03,fake_instance01.novalocal," "192.168.1.101,net:NW-3\n" "DE:AD:BE:EF:00:04,fake_instance00.novalocal," "192.168.0.102,net:NW-4" ) actual_hosts = self.driver.get_dhcp_hosts(self.context, networks[0]) self.assertEqual(actual_hosts, expected) def test_get_dhcp_hosts_for_nw01(self): self.flags(use_single_default_gateway=True) self.flags(host='fake_instance01') expected = ( "DE:AD:BE:EF:00:02,fake_instance01.novalocal," "192.168.0.101,net:NW-2\n" "DE:AD:BE:EF:00:05,fake_instance01.novalocal," "192.168.1.102,net:NW-5" ) actual_hosts = self.driver.get_dhcp_hosts(self.context, networks[1]) self.assertEqual(actual_hosts, expected) def test_get_dns_hosts_for_nw00(self): expected = ( "192.168.0.100\tfake_instance00.novalocal\n" "192.168.1.101\tfake_instance01.novalocal\n" "192.168.0.102\tfake_instance00.novalocal" ) actual_hosts = self.driver.get_dns_hosts(self.context, networks[0]) self.assertEqual(actual_hosts, expected) def test_get_dns_hosts_for_nw01(self): expected = ( "192.168.1.100\tfake_instance00.novalocal\n" "192.168.0.101\tfake_instance01.novalocal\n" "192.168.1.102\tfake_instance01.novalocal" ) actual_hosts = self.driver.get_dns_hosts(self.context, networks[1]) self.assertEqual(actual_hosts, expected) def test_get_dhcp_opts_for_nw00(self): expected_opts = 'NW-3,3\nNW-4,3' actual_opts = self.driver.get_dhcp_opts(self.context, networks[0]) self.assertEqual(actual_opts, expected_opts) def test_get_dhcp_opts_for_nw01(self): self.flags(host='fake_instance01') expected_opts = "NW-5,3" actual_opts = self.driver.get_dhcp_opts(self.context, networks[1]) self.assertEqual(actual_opts, expected_opts) def test_get_dhcp_leases_for_nw00(self): timestamp = timeutils.utcnow() seconds_since_epoch = calendar.timegm(timestamp.utctimetuple()) leases = self.driver.get_dhcp_leases(self.context, networks[0]) leases = leases.split('\n') for lease in leases: lease = lease.split(' ') data = get_associated(self.context, 0, address=lease[2])[0] self.assertTrue(data['allocated']) self.assertTrue(data['leased']) self.assertTrue(lease[0] > seconds_since_epoch) self.assertTrue(lease[1] == data['vif_address']) self.assertTrue(lease[2] == data['address']) self.assertTrue(lease[3] == data['instance_hostname']) self.assertTrue(lease[4] == '*') def test_get_dhcp_leases_for_nw01(self): self.flags(host='fake_instance01') timestamp = timeutils.utcnow() seconds_since_epoch = calendar.timegm(timestamp.utctimetuple()) leases = self.driver.get_dhcp_leases(self.context, networks[1]) leases = leases.split('\n') for lease in leases: lease = lease.split(' ') data = get_associated(self.context, 1, address=lease[2])[0] self.assertTrue(data['allocated']) self.assertTrue(data['leased']) self.assertTrue(lease[0] > seconds_since_epoch) self.assertTrue(lease[1] == data['vif_address']) self.assertTrue(lease[2] == data['address']) self.assertTrue(lease[3] == data['instance_hostname']) self.assertTrue(lease[4] == '*') def test_dhcp_opts_not_default_gateway_network(self): expected = "NW-0,3" fixedip = fixed_ip_obj.FixedIPList.get_by_network(self.context, {'id': 0})[0] actual = self.driver._host_dhcp_opts(fixedip) self.assertEqual(actual, expected) def test_host_dhcp_without_default_gateway_network(self): expected = ','.join(['DE:AD:BE:EF:00:00', 'fake_instance00.novalocal', '192.168.0.100']) fixedip = fixed_ip_obj.FixedIPList.get_by_network(self.context, {'id': 0})[0] actual = self.driver._host_dhcp(fixedip) self.assertEqual(actual, expected) def test_host_dns_without_default_gateway_network(self): expected = "192.168.0.100\tfake_instance00.novalocal" fixedip = fixed_ip_obj.FixedIPList.get_by_network(self.context, {'id': 0})[0] actual = self.driver._host_dns(fixedip) self.assertEqual(actual, expected) def test_linux_bridge_driver_plug(self): """Makes sure plug doesn't drop FORWARD by default. Ensures bug 890195 doesn't reappear. """ def fake_execute(*args, **kwargs): return "", "" self.stubs.Set(utils, 'execute', fake_execute) def verify_add_rule(chain, rule): self.assertEqual(chain, 'FORWARD') self.assertIn('ACCEPT', rule) self.stubs.Set(linux_net.iptables_manager.ipv4['filter'], 'add_rule', verify_add_rule) driver = linux_net.LinuxBridgeInterfaceDriver() driver.plug({"bridge": "br100", "bridge_interface": "eth0"}, "fakemac") def test_linux_ovs_driver_plug_exception(self): self.flags(fake_network=False) def fake_execute(*args, **kwargs): raise processutils.ProcessExecutionError('error') def fake_device_exists(*args, **kwargs): return False self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(linux_net, 'device_exists', fake_device_exists) driver = linux_net.LinuxOVSInterfaceDriver() self.assertRaises(exception.AgentError, driver.plug, {'uuid': 'fake_network_uuid'}, 'fake_mac') def test_vlan_override(self): """Makes sure vlan_interface flag overrides network bridge_interface. Allows heterogeneous networks a la bug 833426 """ driver = linux_net.LinuxBridgeInterfaceDriver() info = {} @staticmethod def test_ensure(vlan, bridge, interface, network, mac_address): info['passed_interface'] = interface self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver, 'ensure_vlan_bridge', test_ensure) network = { "bridge": "br100", "bridge_interface": "base_interface", "vlan": "fake" } self.flags(vlan_interface="") driver.plug(network, "fakemac") self.assertEqual(info['passed_interface'], "base_interface") self.flags(vlan_interface="override_interface") driver.plug(network, "fakemac") self.assertEqual(info['passed_interface'], "override_interface") driver.plug(network, "fakemac") def test_flat_override(self): """Makes sure flat_interface flag overrides network bridge_interface. Allows heterogeneous networks a la bug 833426 """ driver = linux_net.LinuxBridgeInterfaceDriver() info = {} @staticmethod def test_ensure(bridge, interface, network, gateway): info['passed_interface'] = interface self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver, 'ensure_bridge', test_ensure) network = { "bridge": "br100", "bridge_interface": "base_interface", } driver.plug(network, "fakemac") self.assertEqual(info['passed_interface'], "base_interface") self.flags(flat_interface="override_interface") driver.plug(network, "fakemac") self.assertEqual(info['passed_interface'], "override_interface") def _test_dnsmasq_execute(self, extra_expected=None): network_ref = {'id': 'fake', 'label': 'fake', 'multi_host': False, 'cidr': '10.0.0.0/24', 'netmask': '255.255.255.0', 'dns1': '8.8.4.4', 'dhcp_start': '1.0.0.2', 'dhcp_server': '10.0.0.1'} def fake_execute(*args, **kwargs): executes.append(args) return "", "" def fake_add_dhcp_mangle_rule(*args, **kwargs): executes.append(args) self.stubs.Set(linux_net, '_execute', fake_execute) self.stubs.Set(linux_net, '_add_dhcp_mangle_rule', fake_add_dhcp_mangle_rule) self.stubs.Set(os, 'chmod', lambda *a, **kw: None) self.stubs.Set(linux_net, 'write_to_file', lambda *a, **kw: None) self.stubs.Set(linux_net, '_dnsmasq_pid_for', lambda *a, **kw: None) dev = 'br100' default_domain = CONF.dhcp_domain for domain in ('', default_domain): executes = [] CONF.dhcp_domain = domain linux_net.restart_dhcp(self.context, dev, network_ref) expected = ['env', 'CONFIG_FILE=%s' % jsonutils.dumps(CONF.dhcpbridge_flagfile), 'NETWORK_ID=fake', 'dnsmasq', '--strict-order', '--bind-interfaces', '--conf-file=%s' % CONF.dnsmasq_config_file, '--pid-file=%s' % linux_net._dhcp_file(dev, 'pid'), '--listen-address=%s' % network_ref['dhcp_server'], '--except-interface=lo', "--dhcp-range=set:%s,%s,static,%s,%ss" % (network_ref['label'], network_ref['dhcp_start'], network_ref['netmask'], CONF.dhcp_lease_time), '--dhcp-lease-max=256', '--dhcp-hostsfile=%s' % linux_net._dhcp_file(dev, 'conf'), '--dhcp-script=%s' % CONF.dhcpbridge, '--leasefile-ro'] if CONF.dhcp_domain: expected.append('--domain=%s' % CONF.dhcp_domain) if extra_expected: expected += extra_expected self.assertEqual([(dev,), tuple(expected)], executes) def test_dnsmasq_execute(self): self._test_dnsmasq_execute() def test_dnsmasq_execute_dns_servers(self): self.flags(dns_server=['1.1.1.1', '2.2.2.2']) expected = [ '--no-hosts', '--no-resolv', '--server=1.1.1.1', '--server=2.2.2.2', ] self._test_dnsmasq_execute(expected) def test_dnsmasq_execute_use_network_dns_servers(self): self.flags(use_network_dns_servers=True) expected = [ '--no-hosts', '--no-resolv', '--server=8.8.4.4', ] self._test_dnsmasq_execute(expected) def test_isolated_host(self): self.flags(fake_network=False, share_dhcp_address=True) # NOTE(vish): use a fresh copy of the manager for each test self.stubs.Set(linux_net, 'iptables_manager', linux_net.IptablesManager()) self.stubs.Set(linux_net, 'binary_name', 'test') executes = [] inputs = [] def fake_execute(*args, **kwargs): executes.append(args) process_input = kwargs.get('process_input') if process_input: inputs.append(process_input) return "", "" self.stubs.Set(utils, 'execute', fake_execute) driver = linux_net.LinuxBridgeInterfaceDriver() @staticmethod def fake_ensure(bridge, interface, network, gateway): return bridge self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver, 'ensure_bridge', fake_ensure) iface = 'eth0' dhcp = '192.168.1.1' network = {'dhcp_server': dhcp, 'bridge': 'br100', 'bridge_interface': iface} driver.plug(network, 'fakemac') expected = [ ('ebtables', '-t', 'filter', '-D', 'INPUT', '-p', 'ARP', '-i', iface, '--arp-ip-dst', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-I', 'INPUT', '-p', 'ARP', '-i', iface, '--arp-ip-dst', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-D', 'OUTPUT', '-p', 'ARP', '-o', iface, '--arp-ip-src', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-I', 'OUTPUT', '-p', 'ARP', '-o', iface, '--arp-ip-src', dhcp, '-j', 'DROP'), ('iptables-save', '-c'), ('iptables-restore', '-c'), ('ip6tables-save', '-c'), ('ip6tables-restore', '-c'), ] self.assertEqual(executes, expected) expected_inputs = [ '-A test-FORWARD -m physdev --physdev-in %s ' '-d 255.255.255.255 -p udp --dport 67 -j DROP' % iface, '-A test-FORWARD -m physdev --physdev-out %s ' '-d 255.255.255.255 -p udp --dport 67 -j DROP' % iface, '-A test-FORWARD -m physdev --physdev-in %s ' '-d 192.168.1.1 -j DROP' % iface, '-A test-FORWARD -m physdev --physdev-out %s ' '-s 192.168.1.1 -j DROP' % iface, ] for inp in expected_inputs: self.assertIn(inp, inputs[0]) executes = [] inputs = [] @staticmethod def fake_remove(bridge, gateway): return self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver, 'remove_bridge', fake_remove) driver.unplug(network) expected = [ ('ebtables', '-t', 'filter', '-D', 'INPUT', '-p', 'ARP', '-i', iface, '--arp-ip-dst', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-D', 'OUTPUT', '-p', 'ARP', '-o', iface, '--arp-ip-src', dhcp, '-j', 'DROP'), ('iptables-save', '-c'), ('iptables-restore', '-c'), ('ip6tables-save', '-c'), ('ip6tables-restore', '-c'), ] self.assertEqual(executes, expected) for inp in expected_inputs: self.assertNotIn(inp, inputs[0]) def test_isolated_host_iptables_logdrop(self): # Ensure that a different drop action for iptables doesn't change # the drop action for ebtables. self.flags(fake_network=False, share_dhcp_address=True, iptables_drop_action='LOGDROP') # NOTE(vish): use a fresh copy of the manager for each test self.stubs.Set(linux_net, 'iptables_manager', linux_net.IptablesManager()) self.stubs.Set(linux_net, 'binary_name', 'test') executes = [] inputs = [] def fake_execute(*args, **kwargs): executes.append(args) process_input = kwargs.get('process_input') if process_input: inputs.append(process_input) return "", "" self.stubs.Set(utils, 'execute', fake_execute) driver = linux_net.LinuxBridgeInterfaceDriver() @staticmethod def fake_ensure(bridge, interface, network, gateway): return bridge self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver, 'ensure_bridge', fake_ensure) iface = 'eth0' dhcp = '192.168.1.1' network = {'dhcp_server': dhcp, 'bridge': 'br100', 'bridge_interface': iface} driver.plug(network, 'fakemac') expected = [ ('ebtables', '-t', 'filter', '-D', 'INPUT', '-p', 'ARP', '-i', iface, '--arp-ip-dst', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-I', 'INPUT', '-p', 'ARP', '-i', iface, '--arp-ip-dst', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-D', 'OUTPUT', '-p', 'ARP', '-o', iface, '--arp-ip-src', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-I', 'OUTPUT', '-p', 'ARP', '-o', iface, '--arp-ip-src', dhcp, '-j', 'DROP'), ('iptables-save', '-c'), ('iptables-restore', '-c'), ('ip6tables-save', '-c'), ('ip6tables-restore', '-c'), ] self.assertEqual(executes, expected) expected_inputs = [ ('-A test-FORWARD -m physdev --physdev-in %s ' '-d 255.255.255.255 -p udp --dport 67 -j LOGDROP' % iface), ('-A test-FORWARD -m physdev --physdev-out %s ' '-d 255.255.255.255 -p udp --dport 67 -j LOGDROP' % iface), ('-A test-FORWARD -m physdev --physdev-in %s ' '-d 192.168.1.1 -j LOGDROP' % iface), ('-A test-FORWARD -m physdev --physdev-out %s ' '-s 192.168.1.1 -j LOGDROP' % iface), ] for inp in expected_inputs: self.assertIn(inp, inputs[0]) executes = [] inputs = [] @staticmethod def fake_remove(bridge, gateway): return self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver, 'remove_bridge', fake_remove) driver.unplug(network) expected = [ ('ebtables', '-t', 'filter', '-D', 'INPUT', '-p', 'ARP', '-i', iface, '--arp-ip-dst', dhcp, '-j', 'DROP'), ('ebtables', '-t', 'filter', '-D', 'OUTPUT', '-p', 'ARP', '-o', iface, '--arp-ip-src', dhcp, '-j', 'DROP'), ('iptables-save', '-c'), ('iptables-restore', '-c'), ('ip6tables-save', '-c'), ('ip6tables-restore', '-c'), ] self.assertEqual(executes, expected) for inp in expected_inputs: self.assertNotIn(inp, inputs[0]) def _test_initialize_gateway(self, existing, expected, routes=''): self.flags(fake_network=False) executes = [] def fake_execute(*args, **kwargs): executes.append(args) if args[0] == 'ip' and args[1] == 'addr' and args[2] == 'show': return existing, "" if args[0] == 'ip' and args[1] == 'route' and args[2] == 'show': return routes, "" if args[0] == 'sysctl': return '1\n', '' self.stubs.Set(utils, 'execute', fake_execute) network = {'dhcp_server': '192.168.1.1', 'cidr': '192.168.1.0/24', 'broadcast': '192.168.1.255', 'cidr_v6': '2001:db8::/64'} self.driver.initialize_gateway_device('eth0', network) self.assertEqual(executes, expected) def test_initialize_gateway_moves_wrong_ip(self): existing = ("2: eth0: " " mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000\n" " link/ether de:ad:be:ef:be:ef brd ff:ff:ff:ff:ff:ff\n" " inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0\n" " inet6 dead::beef:dead:beef:dead/64 scope link\n" " valid_lft forever preferred_lft forever\n") expected = [ ('sysctl', '-n', 'net.ipv4.ip_forward'), ('ip', 'addr', 'show', 'dev', 'eth0', 'scope', 'global'), ('ip', 'route', 'show', 'dev', 'eth0'), ('ip', 'addr', 'del', '192.168.0.1/24', 'brd', '192.168.0.255', 'scope', 'global', 'dev', 'eth0'), ('ip', 'addr', 'add', '192.168.1.1/24', 'brd', '192.168.1.255', 'dev', 'eth0'), ('ip', 'addr', 'add', '192.168.0.1/24', 'brd', '192.168.0.255', 'scope', 'global', 'dev', 'eth0'), ('ip', '-f', 'inet6', 'addr', 'change', '2001:db8::/64', 'dev', 'eth0'), ] self._test_initialize_gateway(existing, expected) def test_initialize_gateway_resets_route(self): routes = ("default via 192.168.0.1 dev eth0\n" "192.168.100.0/24 via 192.168.0.254 dev eth0 proto static\n") existing = ("2: eth0: " " mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000\n" " link/ether de:ad:be:ef:be:ef brd ff:ff:ff:ff:ff:ff\n" " inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0\n" " inet6 dead::beef:dead:beef:dead/64 scope link\n" " valid_lft forever preferred_lft forever\n") expected = [ ('sysctl', '-n', 'net.ipv4.ip_forward'), ('ip', 'addr', 'show', 'dev', 'eth0', 'scope', 'global'), ('ip', 'route', 'show', 'dev', 'eth0'), ('ip', 'route', 'del', 'default', 'dev', 'eth0'), ('ip', 'route', 'del', '192.168.100.0/24', 'dev', 'eth0'), ('ip', 'addr', 'del', '192.168.0.1/24', 'brd', '192.168.0.255', 'scope', 'global', 'dev', 'eth0'), ('ip', 'addr', 'add', '192.168.1.1/24', 'brd', '192.168.1.255', 'dev', 'eth0'), ('ip', 'addr', 'add', '192.168.0.1/24', 'brd', '192.168.0.255', 'scope', 'global', 'dev', 'eth0'), ('ip', 'route', 'add', 'default', 'via', '192.168.0.1', 'dev', 'eth0'), ('ip', 'route', 'add', '192.168.100.0/24', 'via', '192.168.0.254', 'dev', 'eth0', 'proto', 'static'), ('ip', '-f', 'inet6', 'addr', 'change', '2001:db8::/64', 'dev', 'eth0'), ] self._test_initialize_gateway(existing, expected, routes) def test_initialize_gateway_no_move_right_ip(self): existing = ("2: eth0: " " mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000\n" " link/ether de:ad:be:ef:be:ef brd ff:ff:ff:ff:ff:ff\n" " inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0\n" " inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0\n" " inet6 dead::beef:dead:beef:dead/64 scope link\n" " valid_lft forever preferred_lft forever\n") expected = [ ('sysctl', '-n', 'net.ipv4.ip_forward'), ('ip', 'addr', 'show', 'dev', 'eth0', 'scope', 'global'), ('ip', '-f', 'inet6', 'addr', 'change', '2001:db8::/64', 'dev', 'eth0'), ] self._test_initialize_gateway(existing, expected) def test_initialize_gateway_add_if_blank(self): existing = ("2: eth0: " " mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000\n" " link/ether de:ad:be:ef:be:ef brd ff:ff:ff:ff:ff:ff\n" " inet6 dead::beef:dead:beef:dead/64 scope link\n" " valid_lft forever preferred_lft forever\n") expected = [ ('sysctl', '-n', 'net.ipv4.ip_forward'), ('ip', 'addr', 'show', 'dev', 'eth0', 'scope', 'global'), ('ip', 'route', 'show', 'dev', 'eth0'), ('ip', 'addr', 'add', '192.168.1.1/24', 'brd', '192.168.1.255', 'dev', 'eth0'), ('ip', '-f', 'inet6', 'addr', 'change', '2001:db8::/64', 'dev', 'eth0'), ] self._test_initialize_gateway(existing, expected) def test_ensure_floating_no_duplicate_forwards(self): ln = linux_net self.stubs.Set(ln.iptables_manager, 'apply', lambda: None) self.stubs.Set(ln, 'ensure_ebtables_rules', lambda *a, **kw: None) net = {'bridge': 'br100', 'cidr': '10.0.0.0/24'} ln.ensure_floating_forward('10.10.10.10', '10.0.0.1', 'eth0', net) ln.ensure_floating_forward('10.10.10.11', '10.0.0.10', 'eth0', net) two_forward_rules = len(linux_net.iptables_manager.ipv4['nat'].rules) ln.ensure_floating_forward('10.10.10.10', '10.0.0.3', 'eth0', net) dup_forward_rules = len(linux_net.iptables_manager.ipv4['nat'].rules) self.assertEqual(two_forward_rules, dup_forward_rules) def test_apply_ran(self): manager = linux_net.IptablesManager() manager.iptables_apply_deferred = False self.mox.StubOutWithMock(manager, '_apply') manager._apply() self.mox.ReplayAll() empty_ret = manager.apply() self.assertIsNone(empty_ret) def test_apply_not_run(self): manager = linux_net.IptablesManager() manager.iptables_apply_deferred = True self.mox.StubOutWithMock(manager, '_apply') self.mox.ReplayAll() manager.apply() def test_deferred_unset_apply_ran(self): manager = linux_net.IptablesManager() manager.iptables_apply_deferred = True self.mox.StubOutWithMock(manager, '_apply') manager._apply() self.mox.ReplayAll() manager.defer_apply_off() self.assertFalse(manager.iptables_apply_deferred) def _test_add_metadata_accept_rule(self, expected): def verify_add_rule(chain, rule): self.assertEqual(chain, 'INPUT') self.assertEqual(expected, rule) self.stubs.Set(linux_net.iptables_manager.ipv4['filter'], 'add_rule', verify_add_rule) linux_net.metadata_accept() def test_metadata_accept(self): self.flags(metadata_port='8775') self.flags(metadata_host='10.10.10.1') expected = ('-s 0.0.0.0/0 -p tcp -m tcp --dport 8775 ' '-d 10.10.10.1 -j ACCEPT') self._test_add_metadata_accept_rule(expected) def test_metadata_accept_localhost(self): self.flags(metadata_port='8775') self.flags(metadata_host='127.0.0.1') expected = ('-s 0.0.0.0/0 -p tcp -m tcp --dport 8775 ' '-m addrtype --dst-type LOCAL -j ACCEPT') self._test_add_metadata_accept_rule(expected) def _test_add_metadata_forward_rule(self, expected): def verify_add_rule(chain, rule): self.assertEqual(chain, 'PREROUTING') self.assertEqual(expected, rule) self.stubs.Set(linux_net.iptables_manager.ipv4['nat'], 'add_rule', verify_add_rule) linux_net.metadata_forward() def test_metadata_forward(self): self.flags(metadata_port='8775') self.flags(metadata_host='10.10.10.1') expected = ('-s 0.0.0.0/0 -d 169.254.169.254/32 -p tcp -m tcp ' '--dport 80 -j DNAT --to-destination 10.10.10.1:8775') self._test_add_metadata_forward_rule(expected) def test_metadata_forward_localhost(self): self.flags(metadata_port='8775') self.flags(metadata_host='127.0.0.1') expected = ('-s 0.0.0.0/0 -d 169.254.169.254/32 -p tcp -m tcp ' '--dport 80 -j REDIRECT --to-ports 8775') self._test_add_metadata_forward_rule(expected) def test_ensure_bridge_brings_up_interface(self): calls = { 'device_exists': [mock.call('bridge')], '_execute': [ mock.call('brctl', 'addif', 'bridge', 'eth0', run_as_root=True, check_exit_code=False), mock.call('ip', 'link', 'set', 'eth0', 'up', run_as_root=True, check_exit_code=False), mock.call('ip', 'route', 'show', 'dev', 'eth0'), mock.call('ip', 'addr', 'show', 'dev', 'eth0', 'scope', 'global'), ] } with contextlib.nested( mock.patch.object(linux_net, 'device_exists', return_value=True), mock.patch.object(linux_net, '_execute', return_value=('', '')) ) as (device_exists, _execute): driver = linux_net.LinuxBridgeInterfaceDriver() driver.ensure_bridge('bridge', 'eth0') device_exists.assert_has_calls(calls['device_exists']) _execute.assert_has_calls(calls['_execute']) def test_set_device_mtu_configured(self): self.flags(network_device_mtu=10000) calls = [ mock.call('ip', 'link', 'set', 'fake-dev', 'mtu', 10000, run_as_root=True, check_exit_code=[0, 2, 254]) ] with mock.patch.object(utils, 'execute', return_value=('', '')) as ex: linux_net._set_device_mtu('fake-dev') ex.assert_has_calls(calls) def test_set_device_mtu_default(self): calls = [] with mock.patch.object(utils, 'execute', return_value=('', '')) as ex: linux_net._set_device_mtu('fake-dev') ex.assert_has_calls(calls) def _ovs_vif_port(self, calls): with mock.patch.object(utils, 'execute', return_value=('', '')) as ex: linux_net.create_ovs_vif_port('fake-bridge', 'fake-dev', 'fake-iface-id', 'fake-mac', 'fake-instance-uuid') ex.assert_has_calls(calls) def test_ovs_vif_port(self): calls = [ mock.call('ovs-vsctl', '--timeout=120', '--', '--if-exists', 'del-port', 'fake-dev', '--', 'add-port', 'fake-bridge', 'fake-dev', '--', 'set', 'Interface', 'fake-dev', 'external-ids:iface-id=fake-iface-id', 'external-ids:iface-status=active', 'external-ids:attached-mac=fake-mac', 'external-ids:vm-uuid=fake-instance-uuid', run_as_root=True) ] self._ovs_vif_port(calls) def test_ovs_vif_port_with_mtu(self): self.flags(network_device_mtu=10000) calls = [ mock.call('ovs-vsctl', '--timeout=120', '--', '--if-exists', 'del-port', 'fake-dev', '--', 'add-port', 'fake-bridge', 'fake-dev', '--', 'set', 'Interface', 'fake-dev', 'external-ids:iface-id=fake-iface-id', 'external-ids:iface-status=active', 'external-ids:attached-mac=fake-mac', 'external-ids:vm-uuid=fake-instance-uuid', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev', 'mtu', 10000, run_as_root=True, check_exit_code=[0, 2, 254]) ] self._ovs_vif_port(calls) def _create_veth_pair(self, calls): with mock.patch.object(utils, 'execute', return_value=('', '')) as ex: linux_net._create_veth_pair('fake-dev1', 'fake-dev2') ex.assert_has_calls(calls) def test_create_veth_pair(self): calls = [ mock.call('ip', 'link', 'add', 'fake-dev1', 'type', 'veth', 'peer', 'name', 'fake-dev2', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev1', 'up', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev1', 'promisc', 'on', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev2', 'up', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev2', 'promisc', 'on', run_as_root=True) ] self._create_veth_pair(calls) def test_create_veth_pair_with_mtu(self): self.flags(network_device_mtu=10000) calls = [ mock.call('ip', 'link', 'add', 'fake-dev1', 'type', 'veth', 'peer', 'name', 'fake-dev2', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev1', 'up', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev1', 'promisc', 'on', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev1', 'mtu', 10000, run_as_root=True, check_exit_code=[0, 2, 254]), mock.call('ip', 'link', 'set', 'fake-dev2', 'up', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev2', 'promisc', 'on', run_as_root=True), mock.call('ip', 'link', 'set', 'fake-dev2', 'mtu', 10000, run_as_root=True, check_exit_code=[0, 2, 254]) ] self._create_veth_pair(calls) nova-2014.1/nova/tests/network/test_network_info.py0000664000175400017540000006155112323721477023635 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import exception from nova.network import model from nova import test from nova.tests import fake_network_cache_model from nova.virt import netutils class RouteTests(test.NoDBTestCase): def test_create_route_with_attrs(self): route = fake_network_cache_model.new_route() ip = fake_network_cache_model.new_ip(dict(address='192.168.1.1')) self.assertEqual(route['cidr'], '0.0.0.0/24') self.assertEqual(route['gateway']['address'], '192.168.1.1') self.assertEqual(route['interface'], 'eth0') def test_routes_equal(self): route1 = model.Route() route2 = model.Route() self.assertEqual(route1, route2) def test_routes_not_equal(self): route1 = model.Route(cidr='1.1.1.0/24') route2 = model.Route(cidr='2.2.2.0/24') self.assertNotEqual(route1, route2) route1 = model.Route(cidr='1.1.1.1/24', gateway='1.1.1.1') route2 = model.Route(cidr='1.1.1.1/24', gateway='1.1.1.2') self.assertNotEqual(route1, route2) route1 = model.Route(cidr='1.1.1.1/24', interface='tap0') route2 = model.Route(cidr='1.1.1.1/24', interface='tap1') self.assertNotEqual(route1, route2) def test_hydrate(self): route = model.Route.hydrate( {'gateway': fake_network_cache_model.new_ip( dict(address='192.168.1.1'))}) self.assertIsNone(route['cidr']) self.assertEqual(route['gateway']['address'], '192.168.1.1') self.assertIsNone(route['interface']) class IPTests(test.NoDBTestCase): def test_ip_equal(self): ip1 = model.IP(address='127.0.0.1') ip2 = model.IP(address='127.0.0.1') self.assertEqual(ip1, ip2) def test_ip_not_equal(self): ip1 = model.IP(address='127.0.0.1') ip2 = model.IP(address='172.0.0.3') self.assertNotEqual(ip1, ip2) ip1 = model.IP(address='127.0.0.1', type=1) ip2 = model.IP(address='172.0.0.1', type=2) self.assertNotEqual(ip1, ip2) ip1 = model.IP(address='127.0.0.1', version=4) ip2 = model.IP(address='172.0.0.1', version=6) self.assertNotEqual(ip1, ip2) class FixedIPTests(test.NoDBTestCase): def test_createnew_fixed_ip_with_attrs(self): fixed_ip = model.FixedIP(address='192.168.1.100') self.assertEqual(fixed_ip['address'], '192.168.1.100') self.assertEqual(fixed_ip['floating_ips'], []) self.assertEqual(fixed_ip['type'], 'fixed') self.assertEqual(fixed_ip['version'], 4) def test_create_fixed_ipv6(self): fixed_ip = model.FixedIP(address='::1') self.assertEqual(fixed_ip['address'], '::1') self.assertEqual(fixed_ip['floating_ips'], []) self.assertEqual(fixed_ip['type'], 'fixed') self.assertEqual(fixed_ip['version'], 6) def test_create_fixed_bad_ip_fails(self): self.assertRaises(exception.InvalidIpAddressError, model.FixedIP, address='picklespicklespickles') def test_equate_two_fixed_ips(self): fixed_ip = model.FixedIP(address='::1') fixed_ip2 = model.FixedIP(address='::1') self.assertEqual(fixed_ip, fixed_ip2) def test_equate_two_dissimilar_fixed_ips_fails(self): fixed_ip = model.FixedIP(address='::1') fixed_ip2 = model.FixedIP(address='::2') self.assertNotEqual(fixed_ip, fixed_ip2) fixed_ip = model.FixedIP(address='::1', type='1') fixed_ip2 = model.FixedIP(address='::1', type='2') self.assertNotEqual(fixed_ip, fixed_ip2) fixed_ip = model.FixedIP(address='::1', version='6') fixed_ip2 = model.FixedIP(address='::1', version='4') self.assertNotEqual(fixed_ip, fixed_ip2) fixed_ip = model.FixedIP(address='::1', floating_ips='1.1.1.1') fixed_ip2 = model.FixedIP(address='::1', floating_ips='8.8.8.8') self.assertNotEqual(fixed_ip, fixed_ip2) def test_hydrate(self): fixed_ip = model.FixedIP.hydrate({}) self.assertEqual(fixed_ip['floating_ips'], []) self.assertIsNone(fixed_ip['address']) self.assertEqual(fixed_ip['type'], 'fixed') self.assertIsNone(fixed_ip['version']) def test_add_floating_ip(self): fixed_ip = model.FixedIP(address='192.168.1.100') fixed_ip.add_floating_ip('192.168.1.101') self.assertEqual(fixed_ip['floating_ips'], ['192.168.1.101']) def test_add_floating_ip_repeatedly_only_one_instance(self): fixed_ip = model.FixedIP(address='192.168.1.100') for i in xrange(10): fixed_ip.add_floating_ip('192.168.1.101') self.assertEqual(fixed_ip['floating_ips'], ['192.168.1.101']) class SubnetTests(test.NoDBTestCase): def test_create_subnet_with_attrs(self): subnet = fake_network_cache_model.new_subnet() route1 = fake_network_cache_model.new_route() self.assertEqual(subnet['cidr'], '10.10.0.0/24') self.assertEqual(subnet['dns'], [fake_network_cache_model.new_ip(dict(address='1.2.3.4')), fake_network_cache_model.new_ip(dict(address='2.3.4.5'))]) self.assertEqual(subnet['gateway']['address'], '10.10.0.1') self.assertEqual(subnet['ips'], [fake_network_cache_model.new_fixed_ip( dict(address='10.10.0.2')), fake_network_cache_model.new_fixed_ip( dict(address='10.10.0.3'))]) self.assertEqual(subnet['routes'], [route1]) self.assertEqual(subnet['version'], 4) def test_subnet_equal(self): subnet1 = fake_network_cache_model.new_subnet() subnet2 = fake_network_cache_model.new_subnet() self.assertEqual(subnet1, subnet2) def test_subnet_not_equal(self): subnet1 = model.Subnet(cidr='1.1.1.0/24') subnet2 = model.Subnet(cidr='2.2.2.0/24') self.assertNotEqual(subnet1, subnet2) subnet1 = model.Subnet(dns='1.1.1.0/24') subnet2 = model.Subnet(dns='2.2.2.0/24') self.assertNotEqual(subnet1, subnet2) subnet1 = model.Subnet(gateway='1.1.1.1/24') subnet2 = model.Subnet(gateway='2.2.2.1/24') self.assertNotEqual(subnet1, subnet2) subnet1 = model.Subnet(ips='1.1.1.0/24') subnet2 = model.Subnet(ips='2.2.2.0/24') self.assertNotEqual(subnet1, subnet2) subnet1 = model.Subnet(routes='1.1.1.0/24') subnet2 = model.Subnet(routes='2.2.2.0/24') self.assertNotEqual(subnet1, subnet2) subnet1 = model.Subnet(version='4') subnet2 = model.Subnet(version='6') self.assertNotEqual(subnet1, subnet2) def test_add_route(self): subnet = fake_network_cache_model.new_subnet() route1 = fake_network_cache_model.new_route() route2 = fake_network_cache_model.new_route({'cidr': '1.1.1.1/24'}) subnet.add_route(route2) self.assertEqual(subnet['routes'], [route1, route2]) def test_add_route_a_lot(self): subnet = fake_network_cache_model.new_subnet() route1 = fake_network_cache_model.new_route() route2 = fake_network_cache_model.new_route({'cidr': '1.1.1.1/24'}) for i in xrange(10): subnet.add_route(route2) self.assertEqual(subnet['routes'], [route1, route2]) def test_add_dns(self): subnet = fake_network_cache_model.new_subnet() dns = fake_network_cache_model.new_ip(dict(address='9.9.9.9')) subnet.add_dns(dns) self.assertEqual(subnet['dns'], [fake_network_cache_model.new_ip(dict(address='1.2.3.4')), fake_network_cache_model.new_ip(dict(address='2.3.4.5')), fake_network_cache_model.new_ip(dict(address='9.9.9.9'))]) def test_add_dns_a_lot(self): subnet = fake_network_cache_model.new_subnet() for i in xrange(10): subnet.add_dns(fake_network_cache_model.new_ip( dict(address='9.9.9.9'))) self.assertEqual(subnet['dns'], [fake_network_cache_model.new_ip(dict(address='1.2.3.4')), fake_network_cache_model.new_ip(dict(address='2.3.4.5')), fake_network_cache_model.new_ip(dict(address='9.9.9.9'))]) def test_add_ip(self): subnet = fake_network_cache_model.new_subnet() subnet.add_ip(fake_network_cache_model.new_ip( dict(address='192.168.1.102'))) self.assertEqual(subnet['ips'], [fake_network_cache_model.new_fixed_ip( dict(address='10.10.0.2')), fake_network_cache_model.new_fixed_ip( dict(address='10.10.0.3')), fake_network_cache_model.new_ip( dict(address='192.168.1.102'))]) def test_add_ip_a_lot(self): subnet = fake_network_cache_model.new_subnet() for i in xrange(10): subnet.add_ip(fake_network_cache_model.new_fixed_ip( dict(address='192.168.1.102'))) self.assertEqual(subnet['ips'], [fake_network_cache_model.new_fixed_ip( dict(address='10.10.0.2')), fake_network_cache_model.new_fixed_ip( dict(address='10.10.0.3')), fake_network_cache_model.new_fixed_ip( dict(address='192.168.1.102'))]) def test_hydrate(self): subnet_dict = { 'cidr': '255.255.255.0', 'dns': [fake_network_cache_model.new_ip(dict(address='1.1.1.1'))], 'ips': [fake_network_cache_model.new_fixed_ip( dict(address='2.2.2.2'))], 'routes': [fake_network_cache_model.new_route()], 'version': 4, 'gateway': fake_network_cache_model.new_ip( dict(address='3.3.3.3'))} subnet = model.Subnet.hydrate(subnet_dict) self.assertEqual(subnet['cidr'], '255.255.255.0') self.assertEqual(subnet['dns'], [fake_network_cache_model.new_ip( dict(address='1.1.1.1'))]) self.assertEqual(subnet['gateway']['address'], '3.3.3.3') self.assertEqual(subnet['ips'], [fake_network_cache_model.new_fixed_ip( dict(address='2.2.2.2'))]) self.assertEqual(subnet['routes'], [ fake_network_cache_model.new_route()]) self.assertEqual(subnet['version'], 4) class NetworkTests(test.NoDBTestCase): def test_create_network(self): network = fake_network_cache_model.new_network() self.assertEqual(network['id'], 1) self.assertEqual(network['bridge'], 'br0') self.assertEqual(network['label'], 'public') self.assertEqual(network['subnets'], [fake_network_cache_model.new_subnet(), fake_network_cache_model.new_subnet( dict(cidr='255.255.255.255'))]) def test_add_subnet(self): network = fake_network_cache_model.new_network() network.add_subnet(fake_network_cache_model.new_subnet( dict(cidr='0.0.0.0'))) self.assertEqual(network['subnets'], [fake_network_cache_model.new_subnet(), fake_network_cache_model.new_subnet( dict(cidr='255.255.255.255')), fake_network_cache_model.new_subnet(dict(cidr='0.0.0.0'))]) def test_add_subnet_a_lot(self): network = fake_network_cache_model.new_network() for i in xrange(10): network.add_subnet(fake_network_cache_model.new_subnet( dict(cidr='0.0.0.0'))) self.assertEqual(network['subnets'], [fake_network_cache_model.new_subnet(), fake_network_cache_model.new_subnet( dict(cidr='255.255.255.255')), fake_network_cache_model.new_subnet(dict(cidr='0.0.0.0'))]) def test_network_equal(self): network1 = model.Network() network2 = model.Network() self.assertEqual(network1, network2) def test_network_not_equal(self): network1 = model.Network(id='1') network2 = model.Network(id='2') self.assertNotEqual(network1, network2) network1 = model.Network(bridge='br-int') network2 = model.Network(bridge='br0') self.assertNotEqual(network1, network2) network1 = model.Network(label='net1') network2 = model.Network(label='net2') self.assertNotEqual(network1, network2) network1 = model.Network(subnets='1.1.1.0/24') network2 = model.Network(subnets='2.2.2.0/24') self.assertNotEqual(network1, network2) def test_hydrate(self): new_network = dict( id=1, bridge='br0', label='public', subnets=[fake_network_cache_model.new_subnet(), fake_network_cache_model.new_subnet( dict(cidr='255.255.255.255'))]) network = model.Network.hydrate(fake_network_cache_model.new_network()) self.assertEqual(network['id'], 1) self.assertEqual(network['bridge'], 'br0') self.assertEqual(network['label'], 'public') self.assertEqual(network['subnets'], [fake_network_cache_model.new_subnet(), fake_network_cache_model.new_subnet( dict(cidr='255.255.255.255'))]) class VIFTests(test.NoDBTestCase): def test_create_vif(self): vif = fake_network_cache_model.new_vif() self.assertEqual(vif['id'], 1) self.assertEqual(vif['address'], 'aa:aa:aa:aa:aa:aa') self.assertEqual(vif['network'], fake_network_cache_model.new_network()) def test_vif_equal(self): vif1 = model.VIF() vif2 = model.VIF() self.assertEqual(vif1, vif2) def test_vif_not_equal(self): vif1 = model.VIF(id=1) vif2 = model.VIF(id=2) self.assertNotEqual(vif1, vif2) vif1 = model.VIF(address='00:00:00:00:00:11') vif2 = model.VIF(address='00:00:00:00:00:22') self.assertNotEqual(vif1, vif2) vif1 = model.VIF(network='net1') vif2 = model.VIF(network='net2') self.assertNotEqual(vif1, vif2) vif1 = model.VIF(type='ovs') vif2 = model.VIF(type='linuxbridge') self.assertNotEqual(vif1, vif2) vif1 = model.VIF(devname='ovs1234') vif2 = model.VIF(devname='linuxbridge1234') self.assertNotEqual(vif1, vif2) vif1 = model.VIF(qbh_params=1) vif2 = model.VIF(qbh_params=None) self.assertNotEqual(vif1, vif2) vif1 = model.VIF(qbg_params=1) vif2 = model.VIF(qbg_params=None) self.assertNotEqual(vif1, vif2) vif1 = model.VIF(active=True) vif2 = model.VIF(active=False) self.assertNotEqual(vif1, vif2) def test_create_vif_with_type(self): vif_dict = dict( id=1, address='aa:aa:aa:aa:aa:aa', network=fake_network_cache_model.new_network(), type='bridge') vif = fake_network_cache_model.new_vif(vif_dict) self.assertEqual(vif['id'], 1) self.assertEqual(vif['address'], 'aa:aa:aa:aa:aa:aa') self.assertEqual(vif['type'], 'bridge') self.assertEqual(vif['network'], fake_network_cache_model.new_network()) def test_vif_get_fixed_ips(self): vif = fake_network_cache_model.new_vif() fixed_ips = vif.fixed_ips() ips = [ fake_network_cache_model.new_fixed_ip(dict(address='10.10.0.2')), fake_network_cache_model.new_fixed_ip(dict(address='10.10.0.3')) ] * 2 self.assertEqual(fixed_ips, ips) def test_vif_get_floating_ips(self): vif = fake_network_cache_model.new_vif() vif['network']['subnets'][0]['ips'][0].add_floating_ip('192.168.1.1') floating_ips = vif.floating_ips() self.assertEqual(floating_ips, ['192.168.1.1']) def test_vif_get_labeled_ips(self): vif = fake_network_cache_model.new_vif() labeled_ips = vif.labeled_ips() ip_dict = { 'network_id': 1, 'ips': [fake_network_cache_model.new_ip( {'address': '10.10.0.2', 'type': 'fixed'}), fake_network_cache_model.new_ip( {'address': '10.10.0.3', 'type': 'fixed'})] * 2, 'network_label': 'public'} self.assertEqual(labeled_ips, ip_dict) def test_hydrate(self): new_vif = dict( id=1, address='127.0.0.1', network=fake_network_cache_model.new_network()) vif = model.VIF.hydrate(fake_network_cache_model.new_vif()) self.assertEqual(vif['id'], 1) self.assertEqual(vif['address'], 'aa:aa:aa:aa:aa:aa') self.assertEqual(vif['network'], fake_network_cache_model.new_network()) def test_hydrate_vif_with_type(self): vif_dict = dict( id=1, address='aa:aa:aa:aa:aa:aa', network=fake_network_cache_model.new_network(), type='bridge') vif = model.VIF.hydrate(fake_network_cache_model.new_vif(vif_dict)) self.assertEqual(vif['id'], 1) self.assertEqual(vif['address'], 'aa:aa:aa:aa:aa:aa') self.assertEqual(vif['type'], 'bridge') self.assertEqual(vif['network'], fake_network_cache_model.new_network()) class NetworkInfoTests(test.NoDBTestCase): def test_create_model(self): ninfo = model.NetworkInfo([fake_network_cache_model.new_vif(), fake_network_cache_model.new_vif( {'address': 'bb:bb:bb:bb:bb:bb'})]) self.assertEqual(ninfo.fixed_ips(), [fake_network_cache_model.new_fixed_ip( {'address': '10.10.0.2'}), fake_network_cache_model.new_fixed_ip( {'address': '10.10.0.3'})] * 4) def test_create_async_model(self): def async_wrapper(): return model.NetworkInfo( [fake_network_cache_model.new_vif(), fake_network_cache_model.new_vif( {'address': 'bb:bb:bb:bb:bb:bb'})]) ninfo = model.NetworkInfoAsyncWrapper(async_wrapper) self.assertEqual(ninfo.fixed_ips(), [fake_network_cache_model.new_fixed_ip( {'address': '10.10.0.2'}), fake_network_cache_model.new_fixed_ip( {'address': '10.10.0.3'})] * 4) def test_create_async_model_exceptions(self): def async_wrapper(): raise test.TestingException() ninfo = model.NetworkInfoAsyncWrapper(async_wrapper) self.assertRaises(test.TestingException, ninfo.wait) # 2nd one doesn't raise self.assertIsNone(ninfo.wait()) # Test that do_raise=False works on .wait() ninfo = model.NetworkInfoAsyncWrapper(async_wrapper) self.assertIsNone(ninfo.wait(do_raise=False)) # Test we also raise calling a method ninfo = model.NetworkInfoAsyncWrapper(async_wrapper) self.assertRaises(test.TestingException, ninfo.fixed_ips) def test_get_floating_ips(self): vif = fake_network_cache_model.new_vif() vif['network']['subnets'][0]['ips'][0].add_floating_ip('192.168.1.1') ninfo = model.NetworkInfo([vif, fake_network_cache_model.new_vif( {'address': 'bb:bb:bb:bb:bb:bb'})]) self.assertEqual(ninfo.floating_ips(), ['192.168.1.1']) def test_hydrate(self): ninfo = model.NetworkInfo([fake_network_cache_model.new_vif(), fake_network_cache_model.new_vif( {'address': 'bb:bb:bb:bb:bb:bb'})]) model.NetworkInfo.hydrate(ninfo) self.assertEqual(ninfo.fixed_ips(), [fake_network_cache_model.new_fixed_ip( {'address': '10.10.0.2'}), fake_network_cache_model.new_fixed_ip( {'address': '10.10.0.3'})] * 4) def _test_injected_network_template(self, should_inject, use_ipv4=True, use_ipv6=False, gateway=True): """Check that netutils properly decides whether to inject based on whether the supplied subnet is static or dynamic. """ network = fake_network_cache_model.new_network({'subnets': []}) subnet_dict = {} if not gateway: subnet_dict['gateway'] = None if not should_inject: subnet_dict['dhcp_server'] = '10.10.0.1' if use_ipv4: network.add_subnet( fake_network_cache_model.new_subnet(subnet_dict)) if should_inject and use_ipv6: gateway_ip = fake_network_cache_model.new_ip(dict( address='1234:567::1')) ip = fake_network_cache_model.new_ip(dict( address='1234:567::2')) ipv6_subnet_dict = dict( cidr='1234:567::/48', gateway=gateway_ip, ips=[ip]) if not gateway: ipv6_subnet_dict['gateway'] = None network.add_subnet(fake_network_cache_model.new_subnet( ipv6_subnet_dict)) # Behave as though CONF.flat_injected is True network['meta']['injected'] = True vif = fake_network_cache_model.new_vif({'network': network}) ninfo = model.NetworkInfo([vif]) template = netutils.get_injected_network_template(ninfo, use_ipv6=use_ipv6) # will just ignore the improper behavior. if not should_inject: self.assertIsNone(template) else: if use_ipv4: self.assertIn('auto eth0', template) self.assertIn('iface eth0 inet static', template) self.assertIn('address 10.10.0.2', template) self.assertIn('netmask 255.255.255.0', template) self.assertIn('broadcast 10.10.0.255', template) if gateway: self.assertIn('gateway 10.10.0.1', template) else: self.assertNotIn('gateway', template) self.assertIn('dns-nameservers 1.2.3.4 2.3.4.5', template) if use_ipv6: self.assertIn('iface eth0 inet6 static', template) self.assertIn('address 1234:567::2', template) self.assertIn('netmask 48', template) if gateway: self.assertIn('gateway 1234:567::1', template) if not use_ipv4 and not use_ipv6: self.assertIsNone(template) def test_injection_static(self): self._test_injected_network_template(should_inject=True) def test_injection_static_nogateway(self): self._test_injected_network_template(should_inject=True, gateway=False) def test_injection_static_ipv6(self): self._test_injected_network_template(should_inject=True, use_ipv6=True) def test_injection_static_ipv6_nogateway(self): self._test_injected_network_template(should_inject=True, use_ipv6=True, gateway=False) def test_injection_dynamic(self): self._test_injected_network_template(should_inject=False) def test_injection_dynamic_nogateway(self): self._test_injected_network_template(should_inject=False, gateway=False) def test_injection_static_with_ipv4_off(self): self._test_injected_network_template(should_inject=True, use_ipv4=False) def test_injection_static_ipv6_with_ipv4_off(self): self._test_injected_network_template(should_inject=True, use_ipv6=True, use_ipv4=False) def test_injection_static_ipv6_nogateway_with_ipv4_off(self): self._test_injected_network_template(should_inject=True, use_ipv6=True, use_ipv4=False, gateway=False) def test_injection_dynamic_with_ipv4_off(self): self._test_injected_network_template(should_inject=False, use_ipv4=False) nova-2014.1/nova/tests/network/test_rpcapi.py0000664000175400017540000003517412323721477022411 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """ Unit Tests for nova.network.rpcapi """ import collections import mox from oslo.config import cfg from nova import context from nova.network import rpcapi as network_rpcapi from nova import test from nova.tests import fake_instance CONF = cfg.CONF class NetworkRpcAPITestCase(test.NoDBTestCase): def setUp(self): super(NetworkRpcAPITestCase, self).setUp() self.flags(multi_host=True) # Used to specify the default value expected if no real value is passed DefaultArg = collections.namedtuple('DefaultArg', ['value']) def _test_network_api(self, method, rpc_method, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = network_rpcapi.NetworkAPI() self.assertIsNotNone(rpcapi.client) self.assertEqual(rpcapi.client.target.topic, CONF.network_topic) expected_retval = 'foo' if rpc_method == 'call' else None expected_version = kwargs.pop('version', None) expected_fanout = kwargs.pop('fanout', None) expected_kwargs = kwargs.copy() for k, v in expected_kwargs.items(): if isinstance(v, self.DefaultArg): expected_kwargs[k] = v.value kwargs.pop(k) prepare_kwargs = {} if expected_version: prepare_kwargs['version'] = expected_version if expected_fanout: prepare_kwargs['fanout'] = True if 'source_compute' in expected_kwargs: # Fix up for migrate_instance_* calls. expected_kwargs['source'] = expected_kwargs.pop('source_compute') expected_kwargs['dest'] = expected_kwargs.pop('dest_compute') targeted_methods = [ 'lease_fixed_ip', 'release_fixed_ip', 'rpc_setup_network_on_host', '_rpc_allocate_fixed_ip', 'deallocate_fixed_ip', 'update_dns', '_associate_floating_ip', '_disassociate_floating_ip', 'lease_fixed_ip', 'release_fixed_ip', 'migrate_instance_start', 'migrate_instance_finish', 'allocate_for_instance', 'deallocate_for_instance', ] targeted_by_instance = ['deallocate_for_instance'] if method in targeted_methods and ('host' in expected_kwargs or 'instance' in expected_kwargs): if method in targeted_by_instance: host = expected_kwargs['instance']['host'] else: host = expected_kwargs['host'] if method not in ['allocate_for_instance', 'deallocate_fixed_ip']: expected_kwargs.pop('host') if CONF.multi_host: prepare_kwargs['server'] = host self.mox.StubOutWithMock(rpcapi, 'client') version_check = [ 'deallocate_for_instance', 'deallocate_fixed_ip' ] if method in version_check: rpcapi.client.can_send_version(mox.IgnoreArg()).AndReturn(True) if prepare_kwargs: rpcapi.client.prepare(**prepare_kwargs).AndReturn(rpcapi.client) rpc_method = getattr(rpcapi.client, rpc_method) rpc_method(ctxt, method, **expected_kwargs).AndReturn('foo') self.mox.ReplayAll() retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, expected_retval) def test_create_networks(self): self._test_network_api('create_networks', rpc_method='call', arg1='arg', arg2='arg') def test_delete_network(self): self._test_network_api('delete_network', rpc_method='call', uuid='fake_uuid', fixed_range='range') def test_disassociate_network(self): self._test_network_api('disassociate_network', rpc_method='call', network_uuid='fake_uuid') def test_associate_host_and_project(self): self._test_network_api('associate', rpc_method='call', network_uuid='fake_uuid', associations={'host': "testHost", 'project': 'testProject'}, version="1.5") def test_get_fixed_ip(self): self._test_network_api('get_fixed_ip', rpc_method='call', id='id') def test_get_fixed_ip_by_address(self): self._test_network_api('get_fixed_ip_by_address', rpc_method='call', address='a.b.c.d') def test_get_floating_ip(self): self._test_network_api('get_floating_ip', rpc_method='call', id='id') def test_get_floating_ip_pools(self): self._test_network_api('get_floating_ip_pools', rpc_method='call', version="1.7") def test_get_floating_ip_by_address(self): self._test_network_api('get_floating_ip_by_address', rpc_method='call', address='a.b.c.d') def test_get_floating_ips_by_project(self): self._test_network_api('get_floating_ips_by_project', rpc_method='call') def test_get_floating_ips_by_fixed_address(self): self._test_network_api('get_floating_ips_by_fixed_address', rpc_method='call', fixed_address='w.x.y.z') def test_get_instance_id_by_floating_address(self): self._test_network_api('get_instance_id_by_floating_address', rpc_method='call', address='w.x.y.z') def test_allocate_floating_ip(self): self._test_network_api('allocate_floating_ip', rpc_method='call', project_id='fake_id', pool='fake_pool', auto_assigned=False) def test_deallocate_floating_ip(self): self._test_network_api('deallocate_floating_ip', rpc_method='call', address='addr', affect_auto_assigned=True) def test_allocate_floating_ip_no_multi(self): self.flags(multi_host=False) self._test_network_api('allocate_floating_ip', rpc_method='call', project_id='fake_id', pool='fake_pool', auto_assigned=False) def test_deallocate_floating_ip_no_multi(self): self.flags(multi_host=False) self._test_network_api('deallocate_floating_ip', rpc_method='call', address='addr', affect_auto_assigned=True) def test_associate_floating_ip(self): self._test_network_api('associate_floating_ip', rpc_method='call', floating_address='blah', fixed_address='foo', affect_auto_assigned=True) def test_disassociate_floating_ip(self): self._test_network_api('disassociate_floating_ip', rpc_method='call', address='addr', affect_auto_assigned=True) def test_allocate_for_instance(self): self._test_network_api('allocate_for_instance', rpc_method='call', instance_id='fake_id', project_id='fake_id', host='fake_host', rxtx_factor='fake_factor', vpn=False, requested_networks={}, macs=[], version='1.9') def test_deallocate_for_instance(self): instance = fake_instance.fake_instance_obj(context.get_admin_context()) self._test_network_api('deallocate_for_instance', rpc_method='call', requested_networks=self.DefaultArg(None), instance=instance, version='1.11') def test_deallocate_for_instance_with_expected_networks(self): instance = fake_instance.fake_instance_obj(context.get_admin_context()) self._test_network_api('deallocate_for_instance', rpc_method='call', instance=instance, requested_networks={}, version='1.11') def test_add_fixed_ip_to_instance(self): self._test_network_api('add_fixed_ip_to_instance', rpc_method='call', instance_id='fake_id', rxtx_factor='fake_factor', host='fake_host', network_id='fake_id', version='1.9') def test_remove_fixed_ip_from_instance(self): self._test_network_api('remove_fixed_ip_from_instance', rpc_method='call', instance_id='fake_id', rxtx_factor='fake_factor', host='fake_host', address='fake_address', version='1.9') def test_add_network_to_project(self): self._test_network_api('add_network_to_project', rpc_method='call', project_id='fake_id', network_uuid='fake_uuid') def test_get_instance_nw_info(self): self._test_network_api('get_instance_nw_info', rpc_method='call', instance_id='fake_id', rxtx_factor='fake_factor', host='fake_host', project_id='fake_id', version='1.9') def test_validate_networks(self): self._test_network_api('validate_networks', rpc_method='call', networks={}) def test_get_instance_uuids_by_ip_filter(self): self._test_network_api('get_instance_uuids_by_ip_filter', rpc_method='call', filters={}) def test_get_dns_domains(self): self._test_network_api('get_dns_domains', rpc_method='call') def test_add_dns_entry(self): self._test_network_api('add_dns_entry', rpc_method='call', address='addr', name='name', dns_type='foo', domain='domain') def test_modify_dns_entry(self): self._test_network_api('modify_dns_entry', rpc_method='call', address='addr', name='name', domain='domain') def test_delete_dns_entry(self): self._test_network_api('delete_dns_entry', rpc_method='call', name='name', domain='domain') def test_delete_dns_domain(self): self._test_network_api('delete_dns_domain', rpc_method='call', domain='fake_domain') def test_get_dns_entries_by_address(self): self._test_network_api('get_dns_entries_by_address', rpc_method='call', address='fake_address', domain='fake_domain') def test_get_dns_entries_by_name(self): self._test_network_api('get_dns_entries_by_name', rpc_method='call', name='fake_name', domain='fake_domain') def test_create_private_dns_domain(self): self._test_network_api('create_private_dns_domain', rpc_method='call', domain='fake_domain', av_zone='fake_zone') def test_create_public_dns_domain(self): self._test_network_api('create_public_dns_domain', rpc_method='call', domain='fake_domain', project='fake_project') def test_setup_networks_on_host(self): self._test_network_api('setup_networks_on_host', rpc_method='call', instance_id='fake_id', host='fake_host', teardown=False) def test_lease_fixed_ip(self): self._test_network_api('lease_fixed_ip', rpc_method='cast', host='fake_host', address='fake_addr') def test_release_fixed_ip(self): self._test_network_api('release_fixed_ip', rpc_method='cast', host='fake_host', address='fake_addr') def test_set_network_host(self): self._test_network_api('set_network_host', rpc_method='call', network_ref={}) def test_rpc_setup_network_on_host(self): self._test_network_api('rpc_setup_network_on_host', rpc_method='call', network_id='fake_id', teardown=False, host='fake_host') def test_rpc_allocate_fixed_ip(self): self._test_network_api('_rpc_allocate_fixed_ip', rpc_method='call', instance_id='fake_id', network_id='fake_id', address='addr', vpn=True, host='fake_host') def test_deallocate_fixed_ip(self): instance = fake_instance.fake_db_instance() self._test_network_api('deallocate_fixed_ip', rpc_method='call', address='fake_addr', host='fake_host', instance=instance, version='1.12') def test_update_dns(self): self._test_network_api('update_dns', rpc_method='cast', fanout=True, network_ids='fake_id', version='1.3') def test__associate_floating_ip(self): self._test_network_api('_associate_floating_ip', rpc_method='call', floating_address='fake_addr', fixed_address='fixed_address', interface='fake_interface', host='fake_host', instance_uuid='fake_uuid', version='1.6') def test__disassociate_floating_ip(self): self._test_network_api('_disassociate_floating_ip', rpc_method='call', address='fake_addr', interface='fake_interface', host='fake_host', instance_uuid='fake_uuid', version='1.6') def test_migrate_instance_start(self): self._test_network_api('migrate_instance_start', rpc_method='call', instance_uuid='fake_instance_uuid', rxtx_factor='fake_factor', project_id='fake_project', source_compute='fake_src_compute', dest_compute='fake_dest_compute', floating_addresses='fake_floating_addresses', host=self.DefaultArg(None), version='1.2') def test_migrate_instance_start_multi_host(self): self._test_network_api('migrate_instance_start', rpc_method='call', instance_uuid='fake_instance_uuid', rxtx_factor='fake_factor', project_id='fake_project', source_compute='fake_src_compute', dest_compute='fake_dest_compute', floating_addresses='fake_floating_addresses', host='fake_host', version='1.2') def test_migrate_instance_finish(self): self._test_network_api('migrate_instance_finish', rpc_method='call', instance_uuid='fake_instance_uuid', rxtx_factor='fake_factor', project_id='fake_project', source_compute='fake_src_compute', dest_compute='fake_dest_compute', floating_addresses='fake_floating_addresses', host=self.DefaultArg(None), version='1.2') def test_migrate_instance_finish_multi_host(self): self._test_network_api('migrate_instance_finish', rpc_method='call', instance_uuid='fake_instance_uuid', rxtx_factor='fake_factor', project_id='fake_project', source_compute='fake_src_compute', dest_compute='fake_dest_compute', floating_addresses='fake_floating_addresses', host='fake_host', version='1.2') nova-2014.1/nova/tests/network/test_neutronv2.py0000664000175400017540000031334512323721477023074 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # import copy import uuid import mox from neutronclient.common import exceptions from neutronclient.v2_0 import client from oslo.config import cfg import six from nova.compute import flavors from nova.conductor import api as conductor_api from nova import context from nova import exception from nova.network import model from nova.network import neutronv2 from nova.network.neutronv2 import api as neutronapi from nova.network.neutronv2 import constants from nova.openstack.common import jsonutils from nova.openstack.common import local from nova import test from nova import utils CONF = cfg.CONF #NOTE: Neutron client raises Exception which is discouraged by HACKING. # We set this variable here and use it for assertions below to avoid # the hacking checks until we can make neutron client throw a custom # exception class instead. NEUTRON_CLIENT_EXCEPTION = Exception class MyComparator(mox.Comparator): def __init__(self, lhs): self.lhs = lhs def _com_dict(self, lhs, rhs): if len(lhs) != len(rhs): return False for key, value in lhs.iteritems(): if key not in rhs: return False rhs_value = rhs[key] if not self._com(value, rhs_value): return False return True def _com_list(self, lhs, rhs): if len(lhs) != len(rhs): return False for lhs_value in lhs: if lhs_value not in rhs: return False return True def _com(self, lhs, rhs): if lhs is None: return rhs is None if isinstance(lhs, dict): if not isinstance(rhs, dict): return False return self._com_dict(lhs, rhs) if isinstance(lhs, list): if not isinstance(rhs, list): return False return self._com_list(lhs, rhs) if isinstance(lhs, tuple): if not isinstance(rhs, tuple): return False return self._com_list(lhs, rhs) return lhs == rhs def equals(self, rhs): return self._com(self.lhs, rhs) def __repr__(self): return str(self.lhs) class TestNeutronClient(test.TestCase): def test_withtoken(self): self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) my_context = context.RequestContext('userid', 'my_tenantid', auth_token='token') self.mox.StubOutWithMock(client.Client, "__init__") client.Client.__init__( auth_strategy=None, endpoint_url=CONF.neutron_url, token=my_context.auth_token, timeout=CONF.neutron_url_timeout, insecure=False, ca_cert=None).AndReturn(None) self.mox.ReplayAll() neutronv2.get_client(my_context) def test_withouttoken(self): my_context = context.RequestContext('userid', 'my_tenantid') self.assertRaises(exceptions.Unauthorized, neutronv2.get_client, my_context) def test_withtoken_context_is_admin(self): self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) my_context = context.RequestContext('userid', 'my_tenantid', auth_token='token', is_admin=True) self.mox.StubOutWithMock(client.Client, "__init__") client.Client.__init__( auth_strategy=None, endpoint_url=CONF.neutron_url, token=my_context.auth_token, timeout=CONF.neutron_url_timeout, insecure=False, ca_cert=None).AndReturn(None) self.mox.ReplayAll() # Note that although we have admin set in the context we # are not asking for an admin client, and so we auth with # our own token neutronv2.get_client(my_context) def test_withouttoken_keystone_connection_error(self): self.flags(neutron_auth_strategy='keystone') self.flags(neutron_url='http://anyhost/') my_context = context.RequestContext('userid', 'my_tenantid') self.assertRaises(NEUTRON_CLIENT_EXCEPTION, neutronv2.get_client, my_context) class TestNeutronv2Base(test.TestCase): def setUp(self): super(TestNeutronv2Base, self).setUp() self.context = context.RequestContext('userid', 'my_tenantid') setattr(self.context, 'auth_token', 'bff4a5a6b9eb4ea2a6efec6eefb77936') self.instance = {'project_id': '9d049e4b60b64716978ab415e6fbd5c0', 'uuid': str(uuid.uuid4()), 'display_name': 'test_instance', 'availability_zone': 'nova', 'host': 'some_host', 'security_groups': []} self.instance2 = {'project_id': '9d049e4b60b64716978ab415e6fbd5c0', 'uuid': str(uuid.uuid4()), 'display_name': 'test_instance2', 'availability_zone': 'nova', 'security_groups': []} self.nets1 = [{'id': 'my_netid1', 'name': 'my_netname1', 'subnets': ['mysubnid1'], 'tenant_id': 'my_tenantid'}] self.nets2 = [] self.nets2.append(self.nets1[0]) self.nets2.append({'id': 'my_netid2', 'name': 'my_netname2', 'subnets': ['mysubnid2'], 'tenant_id': 'my_tenantid'}) self.nets3 = self.nets2 + [{'id': 'my_netid3', 'name': 'my_netname3', 'tenant_id': 'my_tenantid'}] self.nets4 = [{'id': 'his_netid4', 'name': 'his_netname4', 'tenant_id': 'his_tenantid'}] # A network request with external networks self.nets5 = self.nets1 + [{'id': 'the-external-one', 'name': 'out-of-this-world', 'router:external': True, 'tenant_id': 'should-be-an-admin'}] self.nets = [self.nets1, self.nets2, self.nets3, self.nets4, self.nets5] self.port_address = '10.0.1.2' self.port_data1 = [{'network_id': 'my_netid1', 'device_id': self.instance2['uuid'], 'device_owner': 'compute:nova', 'id': 'my_portid1', 'status': 'DOWN', 'admin_state_up': True, 'fixed_ips': [{'ip_address': self.port_address, 'subnet_id': 'my_subid1'}], 'mac_address': 'my_mac1', }] self.float_data1 = [{'port_id': 'my_portid1', 'fixed_ip_address': self.port_address, 'floating_ip_address': '172.0.1.2'}] self.dhcp_port_data1 = [{'fixed_ips': [{'ip_address': '10.0.1.9', 'subnet_id': 'my_subid1'}], 'status': 'ACTIVE', 'admin_state_up': True}] self.port_address2 = '10.0.2.2' self.port_data2 = [] self.port_data2.append(self.port_data1[0]) self.port_data2.append({'network_id': 'my_netid2', 'device_id': self.instance['uuid'], 'admin_state_up': True, 'status': 'ACTIVE', 'device_owner': 'compute:nova', 'id': 'my_portid2', 'fixed_ips': [{'ip_address': self.port_address2, 'subnet_id': 'my_subid2'}], 'mac_address': 'my_mac2', }) self.float_data2 = [] self.float_data2.append(self.float_data1[0]) self.float_data2.append({'port_id': 'my_portid2', 'fixed_ip_address': '10.0.2.2', 'floating_ip_address': '172.0.2.2'}) self.port_data3 = [{'network_id': 'my_netid1', 'device_id': 'device_id3', 'status': 'DOWN', 'admin_state_up': True, 'device_owner': 'compute:nova', 'id': 'my_portid3', 'fixed_ips': [], # no fixed ip 'mac_address': 'my_mac3', }] self.subnet_data1 = [{'id': 'my_subid1', 'cidr': '10.0.1.0/24', 'network_id': 'my_netid1', 'gateway_ip': '10.0.1.1', 'dns_nameservers': ['8.8.1.1', '8.8.1.2']}] self.subnet_data2 = [] self.subnet_data_n = [{'id': 'my_subid1', 'cidr': '10.0.1.0/24', 'network_id': 'my_netid1', 'gateway_ip': '10.0.1.1', 'dns_nameservers': ['8.8.1.1', '8.8.1.2']}, {'id': 'my_subid2', 'cidr': '20.0.1.0/24', 'network_id': 'my_netid2', 'gateway_ip': '20.0.1.1', 'dns_nameservers': ['8.8.1.1', '8.8.1.2']}] self.subnet_data2.append({'id': 'my_subid2', 'cidr': '10.0.2.0/24', 'network_id': 'my_netid2', 'gateway_ip': '10.0.2.1', 'dns_nameservers': ['8.8.2.1', '8.8.2.2']}) self.fip_pool = {'id': '4fdbfd74-eaf8-4884-90d9-00bd6f10c2d3', 'name': 'ext_net', 'router:external': True, 'tenant_id': 'admin_tenantid'} self.fip_pool_nova = {'id': '435e20c3-d9f1-4f1b-bee5-4611a1dd07db', 'name': 'nova', 'router:external': True, 'tenant_id': 'admin_tenantid'} self.fip_unassociated = {'tenant_id': 'my_tenantid', 'id': 'fip_id1', 'floating_ip_address': '172.24.4.227', 'floating_network_id': self.fip_pool['id'], 'port_id': None, 'fixed_ip_address': None, 'router_id': None} fixed_ip_address = self.port_data2[1]['fixed_ips'][0]['ip_address'] self.fip_associated = {'tenant_id': 'my_tenantid', 'id': 'fip_id2', 'floating_ip_address': '172.24.4.228', 'floating_network_id': self.fip_pool['id'], 'port_id': self.port_data2[1]['id'], 'fixed_ip_address': fixed_ip_address, 'router_id': 'router_id1'} self._returned_nw_info = [] self.mox.StubOutWithMock(neutronv2, 'get_client') self.moxed_client = self.mox.CreateMock(client.Client) self.addCleanup(CONF.reset) self.addCleanup(self.mox.VerifyAll) self.addCleanup(self.mox.UnsetStubs) self.addCleanup(self.stubs.UnsetAll) def _stub_allocate_for_instance(self, net_idx=1, **kwargs): api = neutronapi.API() self.mox.StubOutWithMock(api, 'get_instance_nw_info') has_portbinding = False has_extra_dhcp_opts = False dhcp_options = kwargs.get('dhcp_options') if dhcp_options is not None: has_extra_dhcp_opts = True if kwargs.get('portbinding'): has_portbinding = True api.extensions[constants.PORTBINDING_EXT] = 1 self.mox.StubOutWithMock(api, '_refresh_neutron_extensions_cache') neutronv2.get_client(mox.IgnoreArg()).MultipleTimes().AndReturn( self.moxed_client) neutronv2.get_client( mox.IgnoreArg(), admin=True).MultipleTimes().AndReturn( self.moxed_client) api._refresh_neutron_extensions_cache(mox.IgnoreArg()) else: self.mox.StubOutWithMock(api, '_populate_neutron_extension_values') self.mox.StubOutWithMock(api, '_has_port_binding_extension') # Net idx is 1-based for compatibility with existing unit tests nets = self.nets[net_idx - 1] ports = {} fixed_ips = {} macs = kwargs.get('macs') if macs: macs = set(macs) req_net_ids = [] if 'requested_networks' in kwargs: for id, fixed_ip, port_id in kwargs['requested_networks']: if port_id: self.moxed_client.show_port(port_id).AndReturn( {'port': {'id': 'my_portid1', 'network_id': 'my_netid1', 'mac_address': 'my_mac1', 'device_id': kwargs.get('_device') and self.instance2['uuid'] or ''}}) ports['my_netid1'] = self.port_data1[0] id = 'my_netid1' if macs is not None: macs.discard('my_mac1') else: fixed_ips[id] = fixed_ip req_net_ids.append(id) expected_network_order = req_net_ids else: expected_network_order = [n['id'] for n in nets] if kwargs.get('_break') == 'pre_list_networks': self.mox.ReplayAll() return api search_ids = [net['id'] for net in nets if net['id'] in req_net_ids] if search_ids: mox_list_params = {'id': mox.SameElementsAs(search_ids)} self.moxed_client.list_networks( **mox_list_params).AndReturn({'networks': nets}) else: mox_list_params = {'tenant_id': self.instance['project_id'], 'shared': False} self.moxed_client.list_networks( **mox_list_params).AndReturn({'networks': nets}) mox_list_params = {'shared': True} self.moxed_client.list_networks( **mox_list_params).AndReturn({'networks': []}) ports_in_requested_net_order = [] for net_id in expected_network_order: port_req_body = { 'port': { 'device_id': self.instance['uuid'], 'device_owner': 'compute:nova', }, } if has_portbinding: port_req_body['port']['binding:host_id'] = ( self.instance.get('host')) port = ports.get(net_id, None) if not has_portbinding: api._populate_neutron_extension_values(mox.IgnoreArg(), self.instance, mox.IgnoreArg()).AndReturn(None) else: # since _populate_neutron_extension_values() will call # _has_port_binding_extension() api._has_port_binding_extension(mox.IgnoreArg()).\ AndReturn(has_portbinding) api._has_port_binding_extension(mox.IgnoreArg()).\ AndReturn(has_portbinding) if port: port_id = port['id'] self.moxed_client.update_port(port_id, MyComparator(port_req_body) ).AndReturn( {'port': port}) ports_in_requested_net_order.append(port_id) else: fixed_ip = fixed_ips.get(net_id) if fixed_ip: port_req_body['port']['fixed_ips'] = [{'ip_address': fixed_ip}] port_req_body['port']['network_id'] = net_id port_req_body['port']['admin_state_up'] = True port_req_body['port']['tenant_id'] = \ self.instance['project_id'] if macs: port_req_body['port']['mac_address'] = macs.pop() if has_portbinding: port_req_body['port']['binding:host_id'] = ( self.instance.get('host')) res_port = {'port': {'id': 'fake'}} if has_extra_dhcp_opts: port_req_body['port']['extra_dhcp_opts'] = dhcp_options if kwargs.get('_break') == 'mac' + net_id: self.mox.ReplayAll() return api self.moxed_client.create_port( MyComparator(port_req_body)).AndReturn(res_port) ports_in_requested_net_order.append(res_port['port']['id']) api.get_instance_nw_info(mox.IgnoreArg(), self.instance, networks=nets, port_ids=ports_in_requested_net_order ).AndReturn(self._returned_nw_info) self.mox.ReplayAll() return api def _verify_nw_info(self, nw_inf, index=0): id_suffix = index + 1 self.assertEqual('10.0.%s.2' % id_suffix, nw_inf.fixed_ips()[index]['address']) self.assertEqual('172.0.%s.2' % id_suffix, nw_inf.fixed_ips()[index].floating_ip_addresses()[0]) self.assertEqual('my_netname%s' % id_suffix, nw_inf[index]['network']['label']) self.assertEqual('my_portid%s' % id_suffix, nw_inf[index]['id']) self.assertEqual('my_mac%s' % id_suffix, nw_inf[index]['address']) self.assertEqual('10.0.%s.0/24' % id_suffix, nw_inf[index]['network']['subnets'][0]['cidr']) self.assertTrue(model.IP(address='8.8.%s.1' % id_suffix, version=4, type='dns') in nw_inf[index]['network']['subnets'][0]['dns']) def _get_instance_nw_info(self, number): api = neutronapi.API() self.mox.StubOutWithMock(api.db, 'instance_info_cache_update') api.db.instance_info_cache_update(mox.IgnoreArg(), self.instance['uuid'], mox.IgnoreArg()) port_data = number == 1 and self.port_data1 or self.port_data2 nets = number == 1 and self.nets1 or self.nets2 net_info_cache = [] for port in port_data: net_info_cache.append({"network": {"id": port['network_id']}, "id": port['id']}) instance = copy.copy(self.instance) # This line here does not wrap net_info_cache in jsonutils.dumps() # intentionally to test the other code path when it's not unicode. instance['info_cache'] = {'network_info': net_info_cache} self.moxed_client.list_ports( tenant_id=self.instance['project_id'], device_id=self.instance['uuid']).AndReturn( {'ports': port_data}) net_ids = [port['network_id'] for port in port_data] nets = number == 1 and self.nets1 or self.nets2 self.moxed_client.list_networks( id=net_ids).AndReturn({'networks': nets}) for i in xrange(1, number + 1): float_data = number == 1 and self.float_data1 or self.float_data2 for ip in port_data[i - 1]['fixed_ips']: float_data = [x for x in float_data if x['fixed_ip_address'] == ip['ip_address']] self.moxed_client.list_floatingips( fixed_ip_address=ip['ip_address'], port_id=port_data[i - 1]['id']).AndReturn( {'floatingips': float_data}) subnet_data = i == 1 and self.subnet_data1 or self.subnet_data2 self.moxed_client.list_subnets( id=mox.SameElementsAs(['my_subid%s' % i])).AndReturn( {'subnets': subnet_data}) self.moxed_client.list_ports( network_id=subnet_data[0]['network_id'], device_owner='network:dhcp').AndReturn( {'ports': []}) self.mox.ReplayAll() nw_inf = api.get_instance_nw_info(self.context, instance) for i in xrange(0, number): self._verify_nw_info(nw_inf, i) def _allocate_for_instance(self, net_idx=1, **kwargs): api = self._stub_allocate_for_instance(net_idx, **kwargs) return api.allocate_for_instance(self.context, self.instance, **kwargs) class TestNeutronv2(TestNeutronv2Base): def setUp(self): super(TestNeutronv2, self).setUp() neutronv2.get_client(mox.IgnoreArg()).MultipleTimes().AndReturn( self.moxed_client) def test_get_instance_nw_info_1(self): # Test to get one port in one network and subnet. neutronv2.get_client(mox.IgnoreArg(), admin=True).MultipleTimes().AndReturn( self.moxed_client) self._get_instance_nw_info(1) def test_get_instance_nw_info_2(self): # Test to get one port in each of two networks and subnets. neutronv2.get_client(mox.IgnoreArg(), admin=True).MultipleTimes().AndReturn( self.moxed_client) self._get_instance_nw_info(2) def test_get_instance_nw_info_with_nets_add_interface(self): # This tests that adding an interface to an instance does not # remove the first instance from the instance. network_model = model.Network(id='network_id', bridge='br-int', injected='injected', label='fake_network', tenant_id='fake_tenant') network_cache = {'info_cache': { 'network_info': [{'id': self.port_data2[0]['id'], 'address': 'mac_address', 'network': network_model, 'type': 'ovs', 'ovs_interfaceid': 'ovs_interfaceid', 'devname': 'devname'}]}} self._fake_get_instance_nw_info_helper(network_cache, self.port_data2, self.nets2, [self.port_data2[1]['id']]) def test_get_instance_nw_info_remove_ports_from_neutron(self): # This tests that when a port is removed in neutron it # is also removed from the nova. network_model = model.Network(id=self.port_data2[0]['network_id'], bridge='br-int', injected='injected', label='fake_network', tenant_id='fake_tenant') network_cache = {'info_cache': { 'network_info': [{'id': 'network_id', 'address': 'mac_address', 'network': network_model, 'type': 'ovs', 'ovs_interfaceid': 'ovs_interfaceid', 'devname': 'devname'}]}} self._fake_get_instance_nw_info_helper(network_cache, self.port_data2, None, None) def test_get_instance_nw_info_ignores_neturon_ports(self): # Tests that only ports in the network_cache are updated # and ports returned from neutron that match the same # instance_id/device_id are ignored. port_data2 = copy.copy(self.port_data2) # set device_id on the ports to be the same. port_data2[1]['device_id'] = port_data2[0]['device_id'] network_model = model.Network(id='network_id', bridge='br-int', injected='injected', label='fake_network', tenant_id='fake_tenant') network_cache = {'info_cache': { 'network_info': [{'id': 'network_id', 'address': 'mac_address', 'network': network_model, 'type': 'ovs', 'ovs_interfaceid': 'ovs_interfaceid', 'devname': 'devname'}]}} self._fake_get_instance_nw_info_helper(network_cache, port_data2, None, None) def _fake_get_instance_nw_info_helper(self, network_cache, current_neutron_ports, networks=None, port_ids=None): """Helper function to test get_instance_nw_info. :param network_cache - data already in the nova network cache. :param current_neutron_ports - updated list of ports from neutron. :param networks - networks of ports being added to instance. :param port_ids - new ports being added to instance. """ # keep a copy of the original ports/networks to pass to # get_instance_nw_info() as the code below changes them. original_port_ids = copy.copy(port_ids) original_networks = copy.copy(networks) api = neutronapi.API() self.mox.StubOutWithMock(api.db, 'instance_info_cache_update') api.db.instance_info_cache_update( mox.IgnoreArg(), self.instance['uuid'], mox.IgnoreArg()) neutronv2.get_client(mox.IgnoreArg(), admin=True).MultipleTimes().AndReturn( self.moxed_client) self.moxed_client.list_ports( tenant_id=self.instance['project_id'], device_id=self.instance['uuid']).AndReturn( {'ports': current_neutron_ports}) ifaces = network_cache['info_cache']['network_info'] if port_ids is None: port_ids = [iface['id'] for iface in ifaces] net_ids = [iface['network']['id'] for iface in ifaces] nets = [{'id': iface['network']['id'], 'name': iface['network']['label'], 'tenant_id': iface['network']['meta']['tenant_id']} for iface in ifaces] if networks is None: self.moxed_client.list_networks( id=net_ids).AndReturn({'networks': nets}) else: networks = networks + [ dict(id=iface['network']['id'], name=iface['network']['label'], tenant_id=iface['network']['meta']['tenant_id']) for iface in ifaces] port_ids = [iface['id'] for iface in ifaces] + port_ids index = 0 current_neutron_port_map = {} for current_neutron_port in current_neutron_ports: current_neutron_port_map[current_neutron_port['id']] = ( current_neutron_port) for port_id in port_ids: current_neutron_port = current_neutron_port_map.get(port_id) if current_neutron_port: for ip in current_neutron_port['fixed_ips']: self.moxed_client.list_floatingips( fixed_ip_address=ip['ip_address'], port_id=current_neutron_port['id']).AndReturn( {'floatingips': [self.float_data2[index]]}) self.moxed_client.list_subnets( id=mox.SameElementsAs([ip['subnet_id']]) ).AndReturn( {'subnets': [self.subnet_data_n[index]]}) self.moxed_client.list_ports( network_id=current_neutron_port['network_id'], device_owner='network:dhcp').AndReturn( {'ports': self.dhcp_port_data1}) index += 1 self.mox.ReplayAll() self.instance['info_cache'] = network_cache instance = copy.copy(self.instance) instance['info_cache'] = network_cache['info_cache'] nw_infs = api.get_instance_nw_info(self.context, instance, networks=original_networks, port_ids=original_port_ids) self.assertEqual(index, len(nw_infs)) # ensure that nic ordering is preserved for iface_index in range(index): self.assertEqual(nw_infs[iface_index]['id'], port_ids[iface_index]) def test_get_instance_nw_info_without_subnet(self): # Test get instance_nw_info for a port without subnet. api = neutronapi.API() self.mox.StubOutWithMock(api.db, 'instance_info_cache_update') api.db.instance_info_cache_update( mox.IgnoreArg(), self.instance['uuid'], mox.IgnoreArg()) self.moxed_client.list_ports( tenant_id=self.instance['project_id'], device_id=self.instance['uuid']).AndReturn( {'ports': self.port_data3}) self.moxed_client.list_networks( id=[self.port_data1[0]['network_id']]).AndReturn( {'networks': self.nets1}) neutronv2.get_client(mox.IgnoreArg(), admin=True).MultipleTimes().AndReturn( self.moxed_client) self.mox.StubOutWithMock(conductor_api.API, 'instance_get_by_uuid') net_info_cache = [] for port in self.port_data3: net_info_cache.append({"network": {"id": port['network_id']}, "id": port['id']}) instance = copy.copy(self.instance) instance['info_cache'] = {'network_info': six.text_type( jsonutils.dumps(net_info_cache))} self.mox.ReplayAll() nw_inf = api.get_instance_nw_info(self.context, instance) id_suffix = 3 self.assertEqual(0, len(nw_inf.fixed_ips())) self.assertEqual('my_netname1', nw_inf[0]['network']['label']) self.assertEqual('my_portid%s' % id_suffix, nw_inf[0]['id']) self.assertEqual('my_mac%s' % id_suffix, nw_inf[0]['address']) self.assertEqual(0, len(nw_inf[0]['network']['subnets'])) def test_refresh_neutron_extensions_cache(self): api = neutronapi.API() # Note: Don't want the default get_client from setUp() self.mox.ResetAll() neutronv2.get_client(mox.IgnoreArg()).AndReturn( self.moxed_client) self.moxed_client.list_extensions().AndReturn( {'extensions': [{'name': 'nvp-qos'}]}) self.mox.ReplayAll() api._refresh_neutron_extensions_cache(mox.IgnoreArg()) self.assertEqual({'nvp-qos': {'name': 'nvp-qos'}}, api.extensions) def test_populate_neutron_extension_values_rxtx_factor(self): api = neutronapi.API() # Note: Don't want the default get_client from setUp() self.mox.ResetAll() neutronv2.get_client(mox.IgnoreArg()).AndReturn( self.moxed_client) self.moxed_client.list_extensions().AndReturn( {'extensions': [{'name': 'nvp-qos'}]}) self.mox.ReplayAll() flavor = flavors.get_default_flavor() flavor['rxtx_factor'] = 1 sys_meta = utils.dict_to_metadata( flavors.save_flavor_info({}, flavor)) instance = {'system_metadata': sys_meta} port_req_body = {'port': {}} api._populate_neutron_extension_values(self.context, instance, port_req_body) self.assertEqual(port_req_body['port']['rxtx_factor'], 1) def test_allocate_for_instance_1(self): # Allocate one port in one network env. self._allocate_for_instance(1) def test_allocate_for_instance_2(self): # Allocate one port in two networks env. self._allocate_for_instance(2) def test_allocate_for_instance_accepts_macs_kwargs_None(self): # The macs kwarg should be accepted as None. self._allocate_for_instance(1, macs=None) def test_allocate_for_instance_accepts_macs_kwargs_set(self): # The macs kwarg should be accepted, as a set, the # _allocate_for_instance helper checks that the mac is used to create a # port. self._allocate_for_instance(1, macs=set(['ab:cd:ef:01:23:45'])) def test_allocate_for_instance_accepts_only_portid(self): # Make sure allocate_for_instance works when only a portid is provided self._returned_nw_info = self.port_data1 result = self._allocate_for_instance( requested_networks=[(None, None, 'my_portid1')]) self.assertEqual(self.port_data1, result) def test_allocate_for_instance_not_enough_macs_via_ports(self): # using a hypervisor MAC via a pre-created port will stop it being # used to dynamically create a port on a network. We put the network # first in requested_networks so that if the code were to not pre-check # requested ports, it would incorrectly assign the mac and not fail. requested_networks = [ (self.nets2[1]['id'], None, None), (None, None, 'my_portid1')] api = self._stub_allocate_for_instance( net_idx=2, requested_networks=requested_networks, macs=set(['my_mac1']), _break='mac' + self.nets2[1]['id']) self.assertRaises(exception.PortNotFree, api.allocate_for_instance, self.context, self.instance, requested_networks=requested_networks, macs=set(['my_mac1'])) def test_allocate_for_instance_not_enough_macs(self): # If not enough MAC addresses are available to allocate to networks, an # error should be raised. # We could pass in macs=set(), but that wouldn't tell us that # allocate_for_instance tracks used macs properly, so we pass in one # mac, and ask for two networks. requested_networks = [ (self.nets2[1]['id'], None, None), (self.nets2[0]['id'], None, None)] api = self._stub_allocate_for_instance( net_idx=2, requested_networks=requested_networks, macs=set(['my_mac2']), _break='mac' + self.nets2[0]['id']) self.assertRaises(exception.PortNotFree, api.allocate_for_instance, self.context, self.instance, requested_networks=requested_networks, macs=set(['my_mac2'])) def test_allocate_for_instance_two_macs_two_networks(self): # If two MACs are available and two networks requested, two new ports # get made and no exceptions raised. requested_networks = [ (self.nets2[1]['id'], None, None), (self.nets2[0]['id'], None, None)] self._allocate_for_instance( net_idx=2, requested_networks=requested_networks, macs=set(['my_mac2', 'my_mac1'])) def test_allocate_for_instance_mac_conflicting_requested_port(self): # specify only first and last network requested_networks = [(None, None, 'my_portid1')] api = self._stub_allocate_for_instance( net_idx=1, requested_networks=requested_networks, macs=set(['unknown:mac']), _break='pre_list_networks') self.assertRaises(exception.PortNotUsable, api.allocate_for_instance, self.context, self.instance, requested_networks=requested_networks, macs=set(['unknown:mac'])) def test_allocate_for_instance_with_requested_networks(self): # specify only first and last network requested_networks = [ (net['id'], None, None) for net in (self.nets3[1], self.nets3[0], self.nets3[2])] self._allocate_for_instance(net_idx=3, requested_networks=requested_networks) def test_allocate_for_instance_with_requested_networks_with_fixedip(self): # specify only first and last network requested_networks = [(self.nets1[0]['id'], '10.0.1.0/24', None)] self._allocate_for_instance(net_idx=1, requested_networks=requested_networks) def test_allocate_for_instance_with_requested_networks_with_port(self): requested_networks = [(None, None, 'myportid1')] self._allocate_for_instance(net_idx=1, requested_networks=requested_networks) def test_allocate_for_instance_no_networks(self): """verify the exception thrown when there are no networks defined.""" api = neutronapi.API() self.moxed_client.list_networks( tenant_id=self.instance['project_id'], shared=False).AndReturn( {'networks': model.NetworkInfo([])}) self.moxed_client.list_networks(shared=True).AndReturn( {'networks': model.NetworkInfo([])}) self.mox.ReplayAll() nwinfo = api.allocate_for_instance(self.context, self.instance) self.assertEqual(len(nwinfo), 0) def test_allocate_for_instance_ex1(self): """verify we will delete created ports if we fail to allocate all net resources. Mox to raise exception when creating a second port. In this case, the code should delete the first created port. """ api = neutronapi.API() self.mox.StubOutWithMock(api, '_populate_neutron_extension_values') self.mox.StubOutWithMock(api, '_has_port_binding_extension') api._has_port_binding_extension(mox.IgnoreArg()).MultipleTimes().\ AndReturn(False) self.moxed_client.list_networks( tenant_id=self.instance['project_id'], shared=False).AndReturn( {'networks': self.nets2}) self.moxed_client.list_networks(shared=True).AndReturn( {'networks': []}) index = 0 for network in self.nets2: binding_port_req_body = { 'port': { 'device_id': self.instance['uuid'], 'device_owner': 'compute:nova', }, } port_req_body = { 'port': { 'network_id': network['id'], 'admin_state_up': True, 'tenant_id': self.instance['project_id'], }, } port_req_body['port'].update(binding_port_req_body['port']) port = {'id': 'portid_' + network['id']} api._populate_neutron_extension_values(self.context, self.instance, binding_port_req_body).AndReturn(None) if index == 0: self.moxed_client.create_port( MyComparator(port_req_body)).AndReturn({'port': port}) else: NeutronOverQuota = exceptions.NeutronClientException( message="Quota exceeded for resources: ['port']", status_code=409) self.moxed_client.create_port( MyComparator(port_req_body)).AndRaise(NeutronOverQuota) index += 1 self.moxed_client.delete_port('portid_' + self.nets2[0]['id']) self.mox.ReplayAll() self.assertRaises(exception.PortLimitExceeded, api.allocate_for_instance, self.context, self.instance) def test_allocate_for_instance_ex2(self): """verify we have no port to delete if we fail to allocate the first net resource. Mox to raise exception when creating the first port. In this case, the code should not delete any ports. """ api = neutronapi.API() self.mox.StubOutWithMock(api, '_populate_neutron_extension_values') self.mox.StubOutWithMock(api, '_has_port_binding_extension') api._has_port_binding_extension(mox.IgnoreArg()).MultipleTimes().\ AndReturn(False) self.moxed_client.list_networks( tenant_id=self.instance['project_id'], shared=False).AndReturn( {'networks': self.nets2}) self.moxed_client.list_networks(shared=True).AndReturn( {'networks': []}) binding_port_req_body = { 'port': { 'device_id': self.instance['uuid'], 'device_owner': 'compute:nova', }, } port_req_body = { 'port': { 'network_id': self.nets2[0]['id'], 'admin_state_up': True, 'device_id': self.instance['uuid'], 'tenant_id': self.instance['project_id'], }, } api._populate_neutron_extension_values(self.context, self.instance, binding_port_req_body).AndReturn(None) self.moxed_client.create_port( MyComparator(port_req_body)).AndRaise( Exception("fail to create port")) self.mox.ReplayAll() self.assertRaises(NEUTRON_CLIENT_EXCEPTION, api.allocate_for_instance, self.context, self.instance) def test_allocate_for_instance_no_port_or_network(self): class BailOutEarly(Exception): pass api = neutronapi.API() self.mox.StubOutWithMock(api, '_get_available_networks') # Make sure we get an empty list and then bail out of the rest # of the function api._get_available_networks(self.context, self.instance['project_id'], []).AndRaise(BailOutEarly) self.mox.ReplayAll() self.assertRaises(BailOutEarly, api.allocate_for_instance, self.context, self.instance, requested_networks=[(None, None, None)]) def test_allocate_for_instance_second_time(self): # Make sure that allocate_for_instance only returns ports that it # allocated during _that_ run. new_port = {'id': 'fake'} self._returned_nw_info = self.port_data1 + [new_port] nw_info = self._allocate_for_instance() self.assertEqual(nw_info, [new_port]) def test_allocate_for_instance_port_in_use(self): # If a port is already in use, an exception should be raised. requested_networks = [(None, None, 'my_portid1')] api = self._stub_allocate_for_instance( requested_networks=requested_networks, _break='pre_list_networks', _device=True) self.assertRaises(exception.PortInUse, api.allocate_for_instance, self.context, self.instance, requested_networks=requested_networks) def _deallocate_for_instance(self, number): api = neutronapi.API() port_data = number == 1 and self.port_data1 or self.port_data2 self.moxed_client.list_ports( device_id=self.instance['uuid']).AndReturn( {'ports': port_data}) for port in reversed(port_data): self.moxed_client.delete_port(port['id']) self.mox.StubOutWithMock(api.db, 'instance_info_cache_update') api.db.instance_info_cache_update(self.context, self.instance['uuid'], {'network_info': '[]'}) self.mox.ReplayAll() api = neutronapi.API() api.deallocate_for_instance(self.context, self.instance) def test_deallocate_for_instance_1(self): # Test to deallocate in one port env. self._deallocate_for_instance(1) def test_deallocate_for_instance_2(self): # Test to deallocate in two ports env. self._deallocate_for_instance(2) def test_deallocate_for_instance_port_not_found(self): port_data = self.port_data1 self.moxed_client.list_ports( device_id=self.instance['uuid']).AndReturn( {'ports': port_data}) NeutronNotFound = neutronv2.exceptions.NeutronClientException( status_code=404) for port in reversed(port_data): self.moxed_client.delete_port(port['id']).AndRaise( NeutronNotFound) self.mox.ReplayAll() api = neutronapi.API() api.deallocate_for_instance(self.context, self.instance) def _test_deallocate_port_for_instance(self, number): port_data = number == 1 and self.port_data1 or self.port_data2 nets = number == 1 and self.nets1 or self.nets2 self.moxed_client.delete_port(port_data[0]['id']) net_info_cache = [] for port in port_data: net_info_cache.append({"network": {"id": port['network_id']}, "id": port['id']}) instance = copy.copy(self.instance) instance['info_cache'] = {'network_info': six.text_type( jsonutils.dumps(net_info_cache))} api = neutronapi.API() neutronv2.get_client(mox.IgnoreArg(), admin=True).AndReturn( self.moxed_client) self.moxed_client.list_ports( tenant_id=self.instance['project_id'], device_id=self.instance['uuid']).AndReturn( {'ports': port_data[1:]}) neutronv2.get_client(mox.IgnoreArg()).MultipleTimes().AndReturn( self.moxed_client) net_ids = [port['network_id'] for port in port_data] self.moxed_client.list_networks(id=net_ids).AndReturn( {'networks': nets}) float_data = number == 1 and self.float_data1 or self.float_data2 for data in port_data[1:]: for ip in data['fixed_ips']: self.moxed_client.list_floatingips( fixed_ip_address=ip['ip_address'], port_id=data['id']).AndReturn( {'floatingips': float_data[1:]}) for port in port_data[1:]: self.moxed_client.list_subnets(id=['my_subid2']).AndReturn({}) self.mox.ReplayAll() nwinfo = api.deallocate_port_for_instance(self.context, instance, port_data[0]['id']) self.assertEqual(len(nwinfo), len(port_data[1:])) if len(port_data) > 1: self.assertEqual(nwinfo[0]['network']['id'], 'my_netid2') def test_deallocate_port_for_instance_1(self): # Test to deallocate the first and only port self._test_deallocate_port_for_instance(1) def test_deallocate_port_for_instance_2(self): # Test to deallocate the first port of two self._test_deallocate_port_for_instance(2) def test_list_ports(self): search_opts = {'parm': 'value'} self.moxed_client.list_ports(**search_opts) self.mox.ReplayAll() neutronapi.API().list_ports(self.context, **search_opts) def test_show_port(self): self.moxed_client.show_port('foo') self.mox.ReplayAll() neutronapi.API().show_port(self.context, 'foo') def test_validate_networks(self): requested_networks = [('my_netid1', 'test', None), ('my_netid2', 'test2', None)] ids = ['my_netid1', 'my_netid2'] self.moxed_client.list_networks( id=mox.SameElementsAs(ids)).AndReturn( {'networks': self.nets2}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': []}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': 50}}) self.mox.ReplayAll() api = neutronapi.API() api.validate_networks(self.context, requested_networks, 1) def test_validate_networks_ex_1(self): requested_networks = [('my_netid1', 'test', None)] self.moxed_client.list_networks( id=mox.SameElementsAs(['my_netid1'])).AndReturn( {'networks': self.nets1}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': []}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': 50}}) self.mox.ReplayAll() api = neutronapi.API() try: api.validate_networks(self.context, requested_networks, 1) except exception.NetworkNotFound as ex: self.assertIn("my_netid2", str(ex)) def test_validate_networks_ex_2(self): requested_networks = [('my_netid1', 'test', None), ('my_netid2', 'test2', None), ('my_netid3', 'test3', None)] ids = ['my_netid1', 'my_netid2', 'my_netid3'] self.moxed_client.list_networks( id=mox.SameElementsAs(ids)).AndReturn( {'networks': self.nets1}) self.mox.ReplayAll() api = neutronapi.API() try: api.validate_networks(self.context, requested_networks, 1) except exception.NetworkNotFound as ex: self.assertIn("my_netid2, my_netid3", str(ex)) def test_validate_networks_duplicate(self): """Verify that the correct exception is thrown when duplicate network ids are passed to validate_networks. """ requested_networks = [('my_netid1', None, None), ('my_netid1', None, None)] self.mox.ReplayAll() # Expected call from setUp. neutronv2.get_client(None) api = neutronapi.API() self.assertRaises(exception.NetworkDuplicated, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_not_specified(self): requested_networks = [] self.moxed_client.list_networks( tenant_id=self.context.project_id, shared=False).AndReturn( {'networks': self.nets1}) self.moxed_client.list_networks( shared=True).AndReturn( {'networks': self.nets2}) self.mox.ReplayAll() api = neutronapi.API() self.assertRaises(exception.NetworkAmbiguous, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_port_not_found(self): # Verify that the correct exception is thrown when a non existent # port is passed to validate_networks. requested_networks = [('my_netid1', None, '3123-ad34-bc43-32332ca33e')] NeutronNotFound = neutronv2.exceptions.NeutronClientException( status_code=404) self.moxed_client.show_port(requested_networks[0][2]).AndRaise( NeutronNotFound) self.mox.ReplayAll() # Expected call from setUp. neutronv2.get_client(None) api = neutronapi.API() self.assertRaises(exception.PortNotFound, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_port_show_rasies_non404(self): # Verify that the correct exception is thrown when a non existent # port is passed to validate_networks. requested_networks = [('my_netid1', None, '3123-ad34-bc43-32332ca33e')] NeutronNotFound = neutronv2.exceptions.NeutronClientException( status_code=0) self.moxed_client.show_port(requested_networks[0][2]).AndRaise( NeutronNotFound) self.mox.ReplayAll() # Expected call from setUp. neutronv2.get_client(None) api = neutronapi.API() self.assertRaises(neutronv2.exceptions.NeutronClientException, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_port_in_use(self): requested_networks = [(None, None, self.port_data3[0]['id'])] self.moxed_client.show_port(self.port_data3[0]['id']).\ AndReturn({'port': self.port_data3[0]}) self.mox.ReplayAll() api = neutronapi.API() self.assertRaises(exception.PortInUse, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_port_no_subnet_id(self): port_a = self.port_data3[0] port_a['device_id'] = None port_a['device_owner'] = None requested_networks = [(None, None, port_a['id'])] self.moxed_client.show_port(port_a['id']).AndReturn({'port': port_a}) self.mox.ReplayAll() api = neutronapi.API() self.assertRaises(exception.PortRequiresFixedIP, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_no_subnet_id(self): requested_networks = [('his_netid4', None, None)] ids = ['his_netid4'] self.moxed_client.list_networks( id=mox.SameElementsAs(ids)).AndReturn( {'networks': self.nets4}) self.mox.ReplayAll() api = neutronapi.API() self.assertRaises(exception.NetworkRequiresSubnet, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_ports_in_same_network(self): port_a = self.port_data3[0] port_a['fixed_ips'] = {'ip_address': '10.0.0.2', 'subnet_id': 'subnet_id'} port_b = self.port_data1[0] self.assertEqual(port_a['network_id'], port_b['network_id']) for port in [port_a, port_b]: port['device_id'] = None port['device_owner'] = None requested_networks = [(None, None, port_a['id']), (None, None, port_b['id'])] self.moxed_client.show_port(port_a['id']).AndReturn({'port': port_a}) self.moxed_client.show_port(port_b['id']).AndReturn({'port': port_b}) self.mox.ReplayAll() api = neutronapi.API() self.assertRaises(exception.NetworkDuplicated, api.validate_networks, self.context, requested_networks, 1) def test_validate_networks_ports_not_in_same_network(self): port_a = self.port_data3[0] port_a['fixed_ips'] = {'ip_address': '10.0.0.2', 'subnet_id': 'subnet_id'} port_b = self.port_data2[1] self.assertNotEqual(port_a['network_id'], port_b['network_id']) for port in [port_a, port_b]: port['device_id'] = None port['device_owner'] = None requested_networks = [(None, None, port_a['id']), (None, None, port_b['id'])] self.moxed_client.show_port(port_a['id']).AndReturn({'port': port_a}) self.moxed_client.show_port(port_b['id']).AndReturn({'port': port_b}) search_opts = {'id': [port_a['network_id'], port_b['network_id']]} self.moxed_client.list_networks( **search_opts).AndReturn({'networks': self.nets2}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': []}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': 50}}) self.mox.ReplayAll() api = neutronapi.API() api.validate_networks(self.context, requested_networks, 1) def test_validate_networks_no_quota(self): # Test validation for a request for one instance needing # two ports, where the quota is 2 and 2 ports are in use # => instances which can be created = 0 requested_networks = [('my_netid1', 'test', None), ('my_netid2', 'test2', None)] ids = ['my_netid1', 'my_netid2'] self.moxed_client.list_networks( id=mox.SameElementsAs(ids)).AndReturn( {'networks': self.nets2}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': self.port_data2}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': 2}}) self.mox.ReplayAll() api = neutronapi.API() max_count = api.validate_networks(self.context, requested_networks, 1) self.assertEqual(max_count, 0) def test_validate_networks_some_quota(self): # Test validation for a request for two instance needing # two ports each, where the quota is 5 and 2 ports are in use # => instances which can be created = 1 requested_networks = [('my_netid1', 'test', None), ('my_netid2', 'test2', None)] ids = ['my_netid1', 'my_netid2'] self.moxed_client.list_networks( id=mox.SameElementsAs(ids)).AndReturn( {'networks': self.nets2}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': self.port_data2}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': 5}}) self.mox.ReplayAll() api = neutronapi.API() max_count = api.validate_networks(self.context, requested_networks, 2) self.assertEqual(max_count, 1) def test_validate_networks_unlimited_quota(self): # Test validation for a request for two instance needing # two ports each, where the quota is -1 (unlimited) # => instances which can be created = 1 requested_networks = [('my_netid1', 'test', None), ('my_netid2', 'test2', None)] ids = ['my_netid1', 'my_netid2'] self.moxed_client.list_networks( id=mox.SameElementsAs(ids)).AndReturn( {'networks': self.nets2}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': self.port_data2}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': -1}}) self.mox.ReplayAll() api = neutronapi.API() max_count = api.validate_networks(self.context, requested_networks, 2) self.assertEqual(max_count, 2) def test_validate_networks_no_quota_but_ports_supplied(self): # Test validation for a request for one instance needing # two ports, where the quota is 2 and 2 ports are in use # but the request includes a port to be used # => instances which can be created = 1 port_a = self.port_data3[0] port_a['fixed_ips'] = {'ip_address': '10.0.0.2', 'subnet_id': 'subnet_id'} port_b = self.port_data2[1] self.assertNotEqual(port_a['network_id'], port_b['network_id']) for port in [port_a, port_b]: port['device_id'] = None port['device_owner'] = None requested_networks = [(None, None, port_a['id']), (None, None, port_b['id'])] self.moxed_client.show_port(port_a['id']).AndReturn({'port': port_a}) self.moxed_client.show_port(port_b['id']).AndReturn({'port': port_b}) search_opts = {'id': [port_a['network_id'], port_b['network_id']]} self.moxed_client.list_networks( **search_opts).AndReturn({'networks': self.nets2}) self.moxed_client.list_ports(tenant_id='my_tenantid').AndReturn( {'ports': self.port_data2}) self.moxed_client.show_quota( tenant_id='my_tenantid').AndReturn( {'quota': {'port': 2}}) self.mox.ReplayAll() api = neutronapi.API() max_count = api.validate_networks(self.context, requested_networks, 1) self.assertEqual(max_count, 1) def _mock_list_ports(self, port_data=None): if port_data is None: port_data = self.port_data2 address = self.port_address self.moxed_client.list_ports( fixed_ips=MyComparator('ip_address=%s' % address)).AndReturn( {'ports': port_data}) self.mox.ReplayAll() return address def test_get_instance_uuids_by_ip_filter(self): self._mock_list_ports() filters = {'ip': '^10\\.0\\.1\\.2$'} api = neutronapi.API() result = api.get_instance_uuids_by_ip_filter(self.context, filters) self.assertEqual(self.instance2['uuid'], result[0]['instance_uuid']) self.assertEqual(self.instance['uuid'], result[1]['instance_uuid']) def test_get_fixed_ip_by_address_fails_for_no_ports(self): address = self._mock_list_ports(port_data=[]) api = neutronapi.API() self.assertRaises(exception.FixedIpNotFoundForAddress, api.get_fixed_ip_by_address, self.context, address) def test_get_fixed_ip_by_address_succeeds_for_1_port(self): address = self._mock_list_ports(port_data=self.port_data1) api = neutronapi.API() result = api.get_fixed_ip_by_address(self.context, address) self.assertEqual(self.instance2['uuid'], result['instance_uuid']) def test_get_fixed_ip_by_address_fails_for_more_than_1_port(self): address = self._mock_list_ports() api = neutronapi.API() self.assertRaises(exception.FixedIpAssociatedWithMultipleInstances, api.get_fixed_ip_by_address, self.context, address) def _get_available_networks(self, prv_nets, pub_nets, req_ids=None, context=None): api = neutronapi.API() nets = prv_nets + pub_nets if req_ids: mox_list_params = {'id': req_ids} self.moxed_client.list_networks( **mox_list_params).AndReturn({'networks': nets}) else: mox_list_params = {'tenant_id': self.instance['project_id'], 'shared': False} self.moxed_client.list_networks( **mox_list_params).AndReturn({'networks': prv_nets}) mox_list_params = {'shared': True} self.moxed_client.list_networks( **mox_list_params).AndReturn({'networks': pub_nets}) self.mox.ReplayAll() rets = api._get_available_networks( context if context else self.context, self.instance['project_id'], req_ids) self.assertEqual(rets, nets) def test_get_available_networks_all_private(self): self._get_available_networks(prv_nets=self.nets2, pub_nets=[]) def test_get_available_networks_all_public(self): self._get_available_networks(prv_nets=[], pub_nets=self.nets2) def test_get_available_networks_private_and_public(self): self._get_available_networks(prv_nets=self.nets1, pub_nets=self.nets4) def test_get_available_networks_with_network_ids(self): prv_nets = [self.nets3[0]] pub_nets = [self.nets3[-1]] # specify only first and last network req_ids = [net['id'] for net in (self.nets3[0], self.nets3[-1])] self._get_available_networks(prv_nets, pub_nets, req_ids) def test_get_available_networks_with_externalnet_fails(self): req_ids = [net['id'] for net in self.nets5] self.assertRaises( exception.ExternalNetworkAttachForbidden, self._get_available_networks, self.nets5, pub_nets=[], req_ids=req_ids) def test_get_available_networks_with_externalnet_admin_ctx(self): admin_ctx = context.RequestContext('userid', 'my_tenantid', is_admin=True) req_ids = [net['id'] for net in self.nets5] self._get_available_networks(self.nets5, pub_nets=[], req_ids=req_ids, context=admin_ctx) def test_get_floating_ip_pools(self): api = neutronapi.API() search_opts = {'router:external': True} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool, self.fip_pool_nova]}) self.mox.ReplayAll() pools = api.get_floating_ip_pools(self.context) expected = [{'name': self.fip_pool['name']}, {'name': self.fip_pool_nova['name']}] self.assertEqual(expected, pools) def _get_expected_fip_model(self, fip_data, idx=0): expected = {'id': fip_data['id'], 'address': fip_data['floating_ip_address'], 'pool': self.fip_pool['name'], 'project_id': fip_data['tenant_id'], 'fixed_ip_id': fip_data['port_id'], 'fixed_ip': {'address': fip_data['fixed_ip_address']}, 'instance': ({'uuid': self.port_data2[idx]['device_id']} if fip_data['port_id'] else None)} return expected def _test_get_floating_ip(self, fip_data, idx=0, by_address=False): api = neutronapi.API() fip_id = fip_data['id'] net_id = fip_data['floating_network_id'] address = fip_data['floating_ip_address'] if by_address: self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [fip_data]}) else: self.moxed_client.show_floatingip(fip_id).\ AndReturn({'floatingip': fip_data}) self.moxed_client.show_network(net_id).\ AndReturn({'network': self.fip_pool}) if fip_data['port_id']: self.moxed_client.show_port(fip_data['port_id']).\ AndReturn({'port': self.port_data2[idx]}) self.mox.ReplayAll() expected = self._get_expected_fip_model(fip_data, idx) if by_address: fip = api.get_floating_ip_by_address(self.context, address) else: fip = api.get_floating_ip(self.context, fip_id) self.assertEqual(expected, fip) def test_get_floating_ip_unassociated(self): self._test_get_floating_ip(self.fip_unassociated, idx=0) def test_get_floating_ip_associated(self): self._test_get_floating_ip(self.fip_associated, idx=1) def test_get_floating_ip_by_address(self): self._test_get_floating_ip(self.fip_unassociated, idx=0, by_address=True) def test_get_floating_ip_by_address_associated(self): self._test_get_floating_ip(self.fip_associated, idx=1, by_address=True) def test_get_floating_ip_by_address_not_found(self): api = neutronapi.API() address = self.fip_unassociated['floating_ip_address'] self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': []}) self.mox.ReplayAll() self.assertRaises(exception.FloatingIpNotFoundForAddress, api.get_floating_ip_by_address, self.context, address) def test_get_floating_ip_by_id_not_found(self): api = neutronapi.API() NeutronNotFound = neutronv2.exceptions.NeutronClientException( status_code=404) floating_ip_id = self.fip_unassociated['id'] self.moxed_client.show_floatingip(floating_ip_id).\ AndRaise(NeutronNotFound) self.mox.ReplayAll() self.assertRaises(exception.FloatingIpNotFound, api.get_floating_ip, self.context, floating_ip_id) def test_get_floating_ip_raises_non404(self): api = neutronapi.API() NeutronNotFound = neutronv2.exceptions.NeutronClientException( status_code=0) floating_ip_id = self.fip_unassociated['id'] self.moxed_client.show_floatingip(floating_ip_id).\ AndRaise(NeutronNotFound) self.mox.ReplayAll() self.assertRaises(neutronv2.exceptions.NeutronClientException, api.get_floating_ip, self.context, floating_ip_id) def test_get_floating_ip_by_address_multiple_found(self): api = neutronapi.API() address = self.fip_unassociated['floating_ip_address'] self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [self.fip_unassociated] * 2}) self.mox.ReplayAll() self.assertRaises(exception.FloatingIpMultipleFoundForAddress, api.get_floating_ip_by_address, self.context, address) def test_get_floating_ips_by_project(self): api = neutronapi.API() project_id = self.context.project_id self.moxed_client.list_floatingips(tenant_id=project_id).\ AndReturn({'floatingips': [self.fip_unassociated, self.fip_associated]}) search_opts = {'router:external': True} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool, self.fip_pool_nova]}) self.moxed_client.list_ports(tenant_id=project_id).\ AndReturn({'ports': self.port_data2}) self.mox.ReplayAll() expected = [self._get_expected_fip_model(self.fip_unassociated), self._get_expected_fip_model(self.fip_associated, idx=1)] fips = api.get_floating_ips_by_project(self.context) self.assertEqual(expected, fips) def _test_get_instance_id_by_floating_address(self, fip_data, associated=False): api = neutronapi.API() address = fip_data['floating_ip_address'] self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [fip_data]}) if associated: self.moxed_client.show_port(fip_data['port_id']).\ AndReturn({'port': self.port_data2[1]}) self.mox.ReplayAll() if associated: expected = self.port_data2[1]['device_id'] else: expected = None fip = api.get_instance_id_by_floating_address(self.context, address) self.assertEqual(expected, fip) def test_get_instance_id_by_floating_address(self): self._test_get_instance_id_by_floating_address(self.fip_unassociated) def test_get_instance_id_by_floating_address_associated(self): self._test_get_instance_id_by_floating_address(self.fip_associated, associated=True) def test_allocate_floating_ip(self): api = neutronapi.API() pool_name = self.fip_pool['name'] pool_id = self.fip_pool['id'] search_opts = {'router:external': True, 'fields': 'id', 'name': pool_name} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool]}) self.moxed_client.create_floatingip( {'floatingip': {'floating_network_id': pool_id}}).\ AndReturn({'floatingip': self.fip_unassociated}) self.mox.ReplayAll() fip = api.allocate_floating_ip(self.context, 'ext_net') self.assertEqual(fip, self.fip_unassociated['floating_ip_address']) def test_allocate_floating_ip_addr_gen_fail(self): api = neutronapi.API() pool_name = self.fip_pool['name'] pool_id = self.fip_pool['id'] search_opts = {'router:external': True, 'fields': 'id', 'name': pool_name} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool]}) self.moxed_client.create_floatingip( {'floatingip': {'floating_network_id': pool_id}}).\ AndRaise(exceptions.IpAddressGenerationFailureClient) self.mox.ReplayAll() self.assertRaises(exception.NoMoreFloatingIps, api.allocate_floating_ip, self.context, 'ext_net') def test_allocate_floating_ip_exhausted_fail(self): api = neutronapi.API() pool_name = self.fip_pool['name'] pool_id = self.fip_pool['id'] search_opts = {'router:external': True, 'fields': 'id', 'name': pool_name} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool]}) self.moxed_client.create_floatingip( {'floatingip': {'floating_network_id': pool_id}}).\ AndRaise(exceptions.ExternalIpAddressExhaustedClient) self.mox.ReplayAll() self.assertRaises(exception.NoMoreFloatingIps, api.allocate_floating_ip, self.context, 'ext_net') def test_allocate_floating_ip_with_pool_id(self): api = neutronapi.API() pool_id = self.fip_pool['id'] search_opts = {'router:external': True, 'fields': 'id', 'id': pool_id} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool]}) self.moxed_client.create_floatingip( {'floatingip': {'floating_network_id': pool_id}}).\ AndReturn({'floatingip': self.fip_unassociated}) self.mox.ReplayAll() fip = api.allocate_floating_ip(self.context, pool_id) self.assertEqual(fip, self.fip_unassociated['floating_ip_address']) def test_allocate_floating_ip_with_default_pool(self): api = neutronapi.API() pool_name = self.fip_pool_nova['name'] pool_id = self.fip_pool_nova['id'] search_opts = {'router:external': True, 'fields': 'id', 'name': pool_name} self.moxed_client.list_networks(**search_opts).\ AndReturn({'networks': [self.fip_pool_nova]}) self.moxed_client.create_floatingip( {'floatingip': {'floating_network_id': pool_id}}).\ AndReturn({'floatingip': self.fip_unassociated}) self.mox.ReplayAll() fip = api.allocate_floating_ip(self.context) self.assertEqual(fip, self.fip_unassociated['floating_ip_address']) def test_release_floating_ip(self): api = neutronapi.API() address = self.fip_unassociated['floating_ip_address'] fip_id = self.fip_unassociated['id'] self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [self.fip_unassociated]}) self.moxed_client.delete_floatingip(fip_id) self.mox.ReplayAll() api.release_floating_ip(self.context, address) def test_release_floating_ip_associated(self): api = neutronapi.API() address = self.fip_associated['floating_ip_address'] self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [self.fip_associated]}) self.mox.ReplayAll() self.assertRaises(exception.FloatingIpAssociated, api.release_floating_ip, self.context, address) def _setup_mock_for_refresh_cache(self, api, instances): nw_info = self.mox.CreateMock(model.NetworkInfo) self.mox.StubOutWithMock(api, '_get_instance_nw_info') self.mox.StubOutWithMock(api.db, 'instance_info_cache_update') for instance in instances: nw_info.json() api._get_instance_nw_info(mox.IgnoreArg(), instance).\ AndReturn(nw_info) api.db.instance_info_cache_update(mox.IgnoreArg(), instance['uuid'], mox.IgnoreArg()) def test_associate_floating_ip(self): api = neutronapi.API() address = self.fip_unassociated['floating_ip_address'] fixed_address = self.port_address2 fip_id = self.fip_unassociated['id'] search_opts = {'device_owner': 'compute:nova', 'device_id': self.instance['uuid']} self.moxed_client.list_ports(**search_opts).\ AndReturn({'ports': [self.port_data2[1]]}) self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [self.fip_unassociated]}) self.moxed_client.update_floatingip( fip_id, {'floatingip': {'port_id': self.fip_associated['port_id'], 'fixed_ip_address': fixed_address}}) self._setup_mock_for_refresh_cache(api, [self.instance]) self.mox.ReplayAll() api.associate_floating_ip(self.context, self.instance, address, fixed_address) def test_reassociate_floating_ip(self): api = neutronapi.API() address = self.fip_associated['floating_ip_address'] new_fixed_address = self.port_address fip_id = self.fip_associated['id'] search_opts = {'device_owner': 'compute:nova', 'device_id': self.instance2['uuid']} self.moxed_client.list_ports(**search_opts).\ AndReturn({'ports': [self.port_data2[0]]}) self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [self.fip_associated]}) self.moxed_client.update_floatingip( fip_id, {'floatingip': {'port_id': 'my_portid1', 'fixed_ip_address': new_fixed_address}}) self.moxed_client.show_port(self.fip_associated['port_id']).\ AndReturn({'port': self.port_data2[1]}) self.mox.StubOutWithMock(api.db, 'instance_get_by_uuid') api.db.instance_get_by_uuid(mox.IgnoreArg(), self.instance['uuid']).\ AndReturn(self.instance) self._setup_mock_for_refresh_cache(api, [self.instance, self.instance2]) self.mox.ReplayAll() api.associate_floating_ip(self.context, self.instance2, address, new_fixed_address) def test_associate_floating_ip_not_found_fixed_ip(self): api = neutronapi.API() address = self.fip_associated['floating_ip_address'] fixed_address = self.fip_associated['fixed_ip_address'] search_opts = {'device_owner': 'compute:nova', 'device_id': self.instance['uuid']} self.moxed_client.list_ports(**search_opts).\ AndReturn({'ports': [self.port_data2[0]]}) self.mox.ReplayAll() self.assertRaises(exception.FixedIpNotFoundForAddress, api.associate_floating_ip, self.context, self.instance, address, fixed_address) def test_disassociate_floating_ip(self): api = neutronapi.API() address = self.fip_associated['floating_ip_address'] fip_id = self.fip_associated['id'] self.moxed_client.list_floatingips(floating_ip_address=address).\ AndReturn({'floatingips': [self.fip_associated]}) self.moxed_client.update_floatingip( fip_id, {'floatingip': {'port_id': None}}) self._setup_mock_for_refresh_cache(api, [self.instance]) self.mox.ReplayAll() api.disassociate_floating_ip(self.context, self.instance, address) def test_add_fixed_ip_to_instance(self): api = neutronapi.API() self._setup_mock_for_refresh_cache(api, [self.instance]) network_id = 'my_netid1' search_opts = {'network_id': network_id} self.moxed_client.list_subnets( **search_opts).AndReturn({'subnets': self.subnet_data_n}) search_opts = {'device_id': self.instance['uuid'], 'device_owner': 'compute:nova', 'network_id': network_id} self.moxed_client.list_ports( **search_opts).AndReturn({'ports': self.port_data1}) port_req_body = { 'port': { 'fixed_ips': [{'subnet_id': 'my_subid1'}, {'subnet_id': 'my_subid1'}], }, } port = self.port_data1[0] port['fixed_ips'] = [{'subnet_id': 'my_subid1'}] self.moxed_client.update_port('my_portid1', MyComparator(port_req_body)).AndReturn({'port': port}) self.mox.ReplayAll() api.add_fixed_ip_to_instance(self.context, self.instance, network_id) def test_remove_fixed_ip_from_instance(self): api = neutronapi.API() self._setup_mock_for_refresh_cache(api, [self.instance]) address = '10.0.0.3' zone = 'compute:%s' % self.instance['availability_zone'] search_opts = {'device_id': self.instance['uuid'], 'device_owner': zone, 'fixed_ips': 'ip_address=%s' % address} self.moxed_client.list_ports( **search_opts).AndReturn({'ports': self.port_data1}) port_req_body = { 'port': { 'fixed_ips': [], }, } port = self.port_data1[0] port['fixed_ips'] = [] self.moxed_client.update_port('my_portid1', MyComparator(port_req_body)).AndReturn({'port': port}) self.mox.ReplayAll() api.remove_fixed_ip_from_instance(self.context, self.instance, address) def test_list_floating_ips_without_l3_support(self): api = neutronapi.API() NeutronNotFound = exceptions.NeutronClientException( status_code=404) self.moxed_client.list_floatingips( fixed_ip_address='1.1.1.1', port_id=1).AndRaise(NeutronNotFound) self.mox.ReplayAll() neutronv2.get_client('fake') floatingips = api._get_floating_ips_by_fixed_and_port( self.moxed_client, '1.1.1.1', 1) self.assertEqual(floatingips, []) def test_nw_info_get_ips(self): fake_port = { 'fixed_ips': [ {'ip_address': '1.1.1.1'}], 'id': 'port-id', } api = neutronapi.API() self.mox.StubOutWithMock(api, '_get_floating_ips_by_fixed_and_port') api._get_floating_ips_by_fixed_and_port( self.moxed_client, '1.1.1.1', 'port-id').AndReturn( [{'floating_ip_address': '10.0.0.1'}]) self.mox.ReplayAll() neutronv2.get_client('fake') result = api._nw_info_get_ips(self.moxed_client, fake_port) self.assertEqual(len(result), 1) self.assertEqual(result[0]['address'], '1.1.1.1') self.assertEqual(result[0]['floating_ips'][0]['address'], '10.0.0.1') def test_nw_info_get_subnets(self): fake_port = { 'fixed_ips': [ {'ip_address': '1.1.1.1'}, {'ip_address': '2.2.2.2'}], 'id': 'port-id', } fake_subnet = model.Subnet(cidr='1.0.0.0/8') fake_ips = [model.IP(x['ip_address']) for x in fake_port['fixed_ips']] api = neutronapi.API() self.mox.StubOutWithMock(api, '_get_subnets_from_port') api._get_subnets_from_port(self.context, fake_port).AndReturn( [fake_subnet]) self.mox.ReplayAll() neutronv2.get_client('fake') subnets = api._nw_info_get_subnets(self.context, fake_port, fake_ips) self.assertEqual(len(subnets), 1) self.assertEqual(len(subnets[0]['ips']), 1) self.assertEqual(subnets[0]['ips'][0]['address'], '1.1.1.1') def _test_nw_info_build_network(self, vif_type): fake_port = { 'fixed_ips': [{'ip_address': '1.1.1.1'}], 'id': 'port-id', 'network_id': 'net-id', 'binding:vif_type': vif_type, } fake_subnets = [model.Subnet(cidr='1.0.0.0/8')] fake_nets = [{'id': 'net-id', 'name': 'foo', 'tenant_id': 'tenant'}] api = neutronapi.API() self.mox.ReplayAll() neutronv2.get_client('fake') net, iid = api._nw_info_build_network(fake_port, fake_nets, fake_subnets) self.assertEqual(net['subnets'], fake_subnets) self.assertEqual(net['id'], 'net-id') self.assertEqual(net['label'], 'foo') self.assertEqual(net.get_meta('tenant_id'), 'tenant') self.assertEqual(net.get_meta('injected'), CONF.flat_injected) return net, iid def test_nw_info_build_network_ovs(self): net, iid = self._test_nw_info_build_network(model.VIF_TYPE_OVS) self.assertEqual(net['bridge'], CONF.neutron_ovs_bridge) self.assertNotIn('should_create_bridge', net) self.assertEqual(iid, 'port-id') def test_nw_info_build_network_bridge(self): net, iid = self._test_nw_info_build_network(model.VIF_TYPE_BRIDGE) self.assertEqual(net['bridge'], 'brqnet-id') self.assertTrue(net['should_create_bridge']) self.assertIsNone(iid) def test_nw_info_build_network_other(self): net, iid = self._test_nw_info_build_network(None) self.assertIsNone(net['bridge']) self.assertNotIn('should_create_bridge', net) self.assertIsNone(iid) def test_nw_info_build_no_match(self): fake_port = { 'fixed_ips': [{'ip_address': '1.1.1.1'}], 'id': 'port-id', 'network_id': 'net-id1', 'tenant_id': 'tenant', 'binding:vif_type': model.VIF_TYPE_OVS, } fake_subnets = [model.Subnet(cidr='1.0.0.0/8')] fake_nets = [{'id': 'net-id2', 'name': 'foo', 'tenant_id': 'tenant'}] api = neutronapi.API() self.mox.ReplayAll() neutronv2.get_client('fake') net, iid = api._nw_info_build_network(fake_port, fake_nets, fake_subnets) self.assertEqual(fake_subnets, net['subnets']) self.assertEqual('net-id1', net['id']) self.assertEqual('net-id1', net['id']) self.assertEqual('tenant', net['meta']['tenant_id']) def test_build_network_info_model(self): api = neutronapi.API() fake_inst = {'project_id': 'fake', 'uuid': 'uuid', 'info_cache': {'network_info': []}} fake_ports = [ # admin_state_up=True and status='ACTIVE' thus vif.active=True {'id': 'port1', 'network_id': 'net-id', 'admin_state_up': True, 'status': 'ACTIVE', 'fixed_ips': [{'ip_address': '1.1.1.1'}], 'mac_address': 'de:ad:be:ef:00:01', 'binding:vif_type': model.VIF_TYPE_BRIDGE, }, # admin_state_up=False and status='DOWN' thus vif.active=True {'id': 'port2', 'network_id': 'net-id', 'admin_state_up': False, 'status': 'DOWN', 'fixed_ips': [{'ip_address': '1.1.1.1'}], 'mac_address': 'de:ad:be:ef:00:02', 'binding:vif_type': model.VIF_TYPE_BRIDGE, }, # admin_state_up=True and status='DOWN' thus vif.active=False {'id': 'port0', 'network_id': 'net-id', 'admin_state_up': True, 'status': 'DOWN', 'fixed_ips': [{'ip_address': '1.1.1.1'}], 'mac_address': 'de:ad:be:ef:00:03', 'binding:vif_type': model.VIF_TYPE_BRIDGE, }, # This does not match the networks we provide below, # so it should be ignored (and is here to verify that) {'id': 'port3', 'network_id': 'other-net-id', 'admin_state_up': True, 'status': 'DOWN', }, ] fake_subnets = [model.Subnet(cidr='1.0.0.0/8')] fake_nets = [ {'id': 'net-id', 'name': 'foo', 'tenant_id': 'fake', } ] neutronv2.get_client(mox.IgnoreArg(), admin=True).MultipleTimes( ).AndReturn(self.moxed_client) self.moxed_client.list_ports( tenant_id='fake', device_id='uuid').AndReturn( {'ports': fake_ports}) self.mox.StubOutWithMock(api, '_get_floating_ips_by_fixed_and_port') self.mox.StubOutWithMock(api, '_get_subnets_from_port') requested_ports = [fake_ports[2], fake_ports[0], fake_ports[1]] for requested_port in requested_ports: api._get_floating_ips_by_fixed_and_port( self.moxed_client, '1.1.1.1', requested_port['id']).AndReturn( [{'floating_ip_address': '10.0.0.1'}]) for requested_port in requested_ports: api._get_subnets_from_port(self.context, requested_port ).AndReturn(fake_subnets) self.mox.ReplayAll() neutronv2.get_client('fake') nw_infos = api._build_network_info_model(self.context, fake_inst, fake_nets, [fake_ports[2]['id'], fake_ports[0]['id'], fake_ports[1]['id']]) self.assertEqual(len(nw_infos), 3) index = 0 for nw_info in nw_infos: self.assertEqual(nw_info['address'], requested_ports[index]['mac_address']) self.assertEqual(nw_info['devname'], 'tapport' + str(index)) self.assertIsNone(nw_info['ovs_interfaceid']) self.assertEqual(nw_info['type'], model.VIF_TYPE_BRIDGE) self.assertEqual(nw_info['network']['bridge'], 'brqnet-id') index += 1 self.assertEqual(nw_infos[0]['active'], False) self.assertEqual(nw_infos[1]['active'], True) self.assertEqual(nw_infos[2]['active'], True) self.assertEqual(nw_infos[0]['id'], 'port0') self.assertEqual(nw_infos[1]['id'], 'port1') self.assertEqual(nw_infos[2]['id'], 'port2') def test_get_all_empty_list_networks(self): api = neutronapi.API() self.moxed_client.list_networks().AndReturn({'networks': []}) self.mox.ReplayAll() networks = api.get_all(self.context) self.assertEqual(networks, []) def test_get_floating_ips_by_fixed_address(self): # NOTE(lbragstad): We need to reset the mocks in order to assert # a NotImplementedError is raised when calling the method under test. self.mox.ResetAll() fake_fixed = '192.168.1.4' api = neutronapi.API() self.assertRaises(NotImplementedError, api.get_floating_ips_by_fixed_address, self.context, fake_fixed) class TestNeutronv2ModuleMethods(test.TestCase): def test_gather_port_ids_and_networks_wrong_params(self): api = neutronapi.API() # Test with networks not None and port_ids is None self.assertRaises(exception.NovaException, api._gather_port_ids_and_networks, 'fake_context', 'fake_instance', [{'network': {'name': 'foo'}}], None) # Test with networks is None and port_ids not None self.assertRaises(exception.NovaException, api._gather_port_ids_and_networks, 'fake_context', 'fake_instance', None, ['list', 'of', 'port_ids']) def test_ensure_requested_network_ordering_no_preference_ids(self): l = [1, 2, 3] neutronapi._ensure_requested_network_ordering( lambda x: x, l, None) def test_ensure_requested_network_ordering_no_preference_hashes(self): l = [{'id': 3}, {'id': 1}, {'id': 2}] neutronapi._ensure_requested_network_ordering( lambda x: x['id'], l, None) self.assertEqual(l, [{'id': 3}, {'id': 1}, {'id': 2}]) def test_ensure_requested_network_ordering_with_preference(self): l = [{'id': 3}, {'id': 1}, {'id': 2}] neutronapi._ensure_requested_network_ordering( lambda x: x['id'], l, [1, 2, 3]) self.assertEqual(l, [{'id': 1}, {'id': 2}, {'id': 3}]) class TestNeutronv2Portbinding(TestNeutronv2Base): def test_allocate_for_instance_portbinding(self): self._allocate_for_instance(1, portbinding=True) def test_populate_neutron_extension_values_binding(self): api = neutronapi.API() neutronv2.get_client(mox.IgnoreArg()).AndReturn( self.moxed_client) self.moxed_client.list_extensions().AndReturn( {'extensions': [{'name': constants.PORTBINDING_EXT}]}) self.mox.ReplayAll() host_id = 'my_host_id' instance = {'host': host_id} port_req_body = {'port': {}} api._populate_neutron_extension_values(self.context, instance, port_req_body) self.assertEqual(port_req_body['port']['binding:host_id'], host_id) def test_migrate_instance_finish_binding_false(self): api = neutronapi.API() self.mox.StubOutWithMock(api, '_has_port_binding_extension') api._has_port_binding_extension(mox.IgnoreArg(), refresh_cache=True).AndReturn(False) self.mox.ReplayAll() api.migrate_instance_finish(self.context, None, None) def test_migrate_instance_finish_binding_true(self): api = neutronapi.API() self.mox.StubOutWithMock(api, '_has_port_binding_extension') api._has_port_binding_extension(mox.IgnoreArg(), refresh_cache=True).AndReturn(True) neutronv2.get_client(mox.IgnoreArg(), admin=True).AndReturn( self.moxed_client) search_opts = {'device_id': self.instance['uuid'], 'tenant_id': self.instance['project_id']} ports = {'ports': [{'id': 'test1'}]} self.moxed_client.list_ports(**search_opts).AndReturn(ports) migration = {'source_compute': self.instance.get('host'), 'dest_compute': 'dest_host', } port_req_body = {'port': {'binding:host_id': migration['dest_compute']}} self.moxed_client.update_port('test1', port_req_body).AndReturn(None) self.mox.ReplayAll() api.migrate_instance_finish(self.context, self.instance, migration) def test_migrate_instance_finish_binding_true_exception(self): api = neutronapi.API() self.mox.StubOutWithMock(api, '_has_port_binding_extension') api._has_port_binding_extension(mox.IgnoreArg(), refresh_cache=True).AndReturn(True) neutronv2.get_client(mox.IgnoreArg(), admin=True).AndReturn( self.moxed_client) search_opts = {'device_id': self.instance['uuid'], 'tenant_id': self.instance['project_id']} ports = {'ports': [{'id': 'test1'}]} self.moxed_client.list_ports(**search_opts).AndReturn(ports) migration = {'source_compute': self.instance.get('host'), 'dest_compute': 'dest_host', } port_req_body = {'port': {'binding:host_id': migration['dest_compute']}} self.moxed_client.update_port('test1', port_req_body).AndRaise( Exception("fail to update port")) self.mox.ReplayAll() self.assertRaises(NEUTRON_CLIENT_EXCEPTION, api.migrate_instance_finish, self.context, self.instance, migration) def test_associate_not_implemented(self): api = neutronapi.API() self.assertRaises(NotImplementedError, api.associate, self.context, 'id') class TestNeutronv2ExtraDhcpOpts(TestNeutronv2Base): def setUp(self): super(TestNeutronv2ExtraDhcpOpts, self).setUp() neutronv2.get_client(mox.IgnoreArg()).MultipleTimes().AndReturn( self.moxed_client) def test_allocate_for_instance_1_with_extra_dhcp_opts_turned_off(self): self._allocate_for_instance(1, extra_dhcp_opts=False) def test_allocate_for_instance_extradhcpopts(self): dhcp_opts = [{'opt_name': 'bootfile-name', 'opt_value': 'pxelinux.0'}, {'opt_name': 'tftp-server', 'opt_value': '123.123.123.123'}, {'opt_name': 'server-ip-address', 'opt_value': '123.123.123.456'}] self._allocate_for_instance(1, dhcp_options=dhcp_opts) class TestNeutronClientForAdminScenarios(test.TestCase): def test_get_cached_neutron_client_for_admin(self): self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) my_context = context.RequestContext('userid', 'my_tenantid', auth_token='token') # Make multiple calls and ensure we get the same # client back again and again client = neutronv2.get_client(my_context, True) client2 = neutronv2.get_client(my_context, True) client3 = neutronv2.get_client(my_context, True) self.assertEqual(client, client2) self.assertEqual(client, client3) # clear the cache local.strong_store.neutron_client = None # A new client should be created now client4 = neutronv2.get_client(my_context, True) self.assertNotEqual(client, client4) def test_get_neutron_client_for_non_admin(self): self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) my_context = context.RequestContext('userid', 'my_tenantid', auth_token='token') # Multiple calls should return different clients client = neutronv2.get_client(my_context) client2 = neutronv2.get_client(my_context) self.assertNotEqual(client, client2) def test_get_neutron_client_for_non_admin_and_no_token(self): self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) my_context = context.RequestContext('userid', 'my_tenantid') self.assertRaises(exceptions.Unauthorized, neutronv2.get_client, my_context) def _test_get_client_for_admin(self, use_id=False, admin_context=False): self.flags(neutron_auth_strategy=None) self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) if use_id: self.flags(neutron_admin_tenant_id='admin_tenant_id') if admin_context: my_context = context.get_admin_context() else: my_context = context.RequestContext('userid', 'my_tenantid', auth_token='token') self.mox.StubOutWithMock(client.Client, "__init__") kwargs = { 'auth_url': CONF.neutron_admin_auth_url, 'password': CONF.neutron_admin_password, 'username': CONF.neutron_admin_username, 'endpoint_url': CONF.neutron_url, 'auth_strategy': None, 'timeout': CONF.neutron_url_timeout, 'insecure': False, 'ca_cert': None} if use_id: kwargs['tenant_id'] = CONF.neutron_admin_tenant_id else: kwargs['tenant_name'] = CONF.neutron_admin_tenant_name client.Client.__init__(**kwargs).AndReturn(None) self.mox.ReplayAll() # clear the cache if hasattr(local.strong_store, 'neutron_client'): delattr(local.strong_store, 'neutron_client') if admin_context: # Note that the context does not contain a token but is # an admin context which will force an elevation to admin # credentials. neutronv2.get_client(my_context) else: # Note that the context is not elevated, but the True is passed in # which will force an elevation to admin credentials even though # the context has an auth_token. neutronv2.get_client(my_context, True) def test_get_client_for_admin(self): self._test_get_client_for_admin() def test_get_client_for_admin_with_id(self): self._test_get_client_for_admin(use_id=True) def test_get_client_for_admin_context(self): self._test_get_client_for_admin(admin_context=True) def test_get_client_for_admin_context_with_id(self): self._test_get_client_for_admin(use_id=True, admin_context=True) nova-2014.1/nova/tests/network/test_manager.py0000664000175400017540000040111212323721477022532 0ustar jenkinsjenkins00000000000000# Copyright 2011 Rackspace # Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures import mock import mox import netaddr from oslo.config import cfg from oslo import messaging from nova import context from nova import db from nova.db.sqlalchemy import models from nova import exception from nova import ipv6 from nova.network import floating_ips from nova.network import linux_net from nova.network import manager as network_manager from nova.network import model as net_model from nova.objects import fixed_ip as fixed_ip_obj from nova.objects import floating_ip as floating_ip_obj from nova.objects import instance as instance_obj from nova.objects import network as network_obj from nova.objects import quotas as quotas_obj from nova.openstack.common.db import exception as db_exc from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova import test from nova.tests import fake_instance from nova.tests import fake_ldap from nova.tests import fake_network from nova.tests import matchers from nova.tests.objects import test_fixed_ip from nova.tests.objects import test_floating_ip from nova.tests.objects import test_network from nova.tests.objects import test_service from nova import utils CONF = cfg.CONF LOG = logging.getLogger(__name__) HOST = "testhost" FAKEUUID = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" fake_inst = fake_instance.fake_db_instance networks = [{'id': 0, 'uuid': FAKEUUID, 'label': 'test0', 'injected': False, 'multi_host': False, 'cidr': '192.168.0.0/24', 'cidr_v6': '2001:db8::/64', 'gateway_v6': '2001:db8::1', 'netmask_v6': '64', 'netmask': '255.255.255.0', 'bridge': 'fa0', 'bridge_interface': 'fake_fa0', 'gateway': '192.168.0.1', 'broadcast': '192.168.0.255', 'dns1': '192.168.0.1', 'dns2': '192.168.0.2', 'vlan': None, 'host': HOST, 'project_id': 'fake_project', 'vpn_public_address': '192.168.0.2', 'vpn_public_port': '22', 'vpn_private_address': '10.0.0.2'}, {'id': 1, 'uuid': 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'label': 'test1', 'injected': False, 'multi_host': False, 'cidr': '192.168.1.0/24', 'cidr_v6': '2001:db9::/64', 'gateway_v6': '2001:db9::1', 'netmask_v6': '64', 'netmask': '255.255.255.0', 'bridge': 'fa1', 'bridge_interface': 'fake_fa1', 'gateway': '192.168.1.1', 'broadcast': '192.168.1.255', 'dns1': '192.168.0.1', 'dns2': '192.168.0.2', 'vlan': None, 'host': HOST, 'project_id': 'fake_project', 'vpn_public_address': '192.168.1.2', 'vpn_public_port': '22', 'vpn_private_address': '10.0.0.2'}] fixed_ips = [{'id': 0, 'network_id': 0, 'address': '192.168.0.100', 'instance_uuid': 0, 'allocated': False, 'virtual_interface_id': 0, 'floating_ips': []}, {'id': 0, 'network_id': 1, 'address': '192.168.1.100', 'instance_uuid': 0, 'allocated': False, 'virtual_interface_id': 0, 'floating_ips': []}, {'id': 0, 'network_id': 1, 'address': '2001:db9:0:1::10', 'instance_uuid': 0, 'allocated': False, 'virtual_interface_id': 0, 'floating_ips': []}] flavor = {'id': 0, 'rxtx_cap': 3} floating_ip_fields = {'id': 0, 'address': '192.168.10.100', 'pool': 'nova', 'interface': 'eth0', 'fixed_ip_id': 0, 'project_id': None, 'auto_assigned': False} vifs = [{'id': 0, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:00', 'uuid': '00000000-0000-0000-0000-0000000000000000', 'network_id': 0, 'instance_uuid': 0}, {'id': 1, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:01', 'uuid': '00000000-0000-0000-0000-0000000000000001', 'network_id': 1, 'instance_uuid': 0}, {'id': 2, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:02', 'uuid': '00000000-0000-0000-0000-0000000000000002', 'network_id': 2, 'instance_uuid': 0}] class FlatNetworkTestCase(test.TestCase): def setUp(self): super(FlatNetworkTestCase, self).setUp() self.tempdir = self.useFixture(fixtures.TempDir()).path self.flags(log_dir=self.tempdir) self.flags(use_local=True, group='conductor') self.network = network_manager.FlatManager(host=HOST) self.network.instance_dns_domain = '' self.network.db = db self.context = context.RequestContext('testuser', 'testproject', is_admin=False) def test_get_instance_nw_info(self): fake_get_instance_nw_info = fake_network.fake_get_instance_nw_info nw_info = fake_get_instance_nw_info(self.stubs, 0, 2) self.assertFalse(nw_info) nw_info = fake_get_instance_nw_info(self.stubs, 1, 2) for i, vif in enumerate(nw_info): nid = i + 1 check = {'bridge': 'fake_br%d' % nid, 'cidr': '192.168.%s.0/24' % nid, 'cidr_v6': '2001:db8:0:%x::/64' % nid, 'id': '00000000-0000-0000-0000-00000000000000%02d' % nid, 'multi_host': False, 'injected': False, 'bridge_interface': None, 'vlan': None, 'broadcast': '192.168.%d.255' % nid, 'dhcp_server': '192.168.1.1', 'dns': ['192.168.%d.3' % nid, '192.168.%d.4' % nid], 'gateway': '192.168.%d.1' % nid, 'gateway_v6': '2001:db8:0:1::1', 'label': 'test%d' % nid, 'mac': 'DE:AD:BE:EF:00:%02x' % nid, 'rxtx_cap': 30, 'vif_type': net_model.VIF_TYPE_BRIDGE, 'vif_devname': None, 'vif_uuid': '00000000-0000-0000-0000-00000000000000%02d' % nid, 'ovs_interfaceid': None, 'qbh_params': None, 'qbg_params': None, 'should_create_vlan': False, 'should_create_bridge': False, 'ip': '192.168.%d.%03d' % (nid, nid + 99), 'ip_v6': '2001:db8:0:1::%x' % nid, 'netmask': '255.255.255.0', 'netmask_v6': 64, 'physical_network': None, } network = vif['network'] net_v4 = vif['network']['subnets'][0] net_v6 = vif['network']['subnets'][1] vif_dict = dict(bridge=network['bridge'], cidr=net_v4['cidr'], cidr_v6=net_v6['cidr'], id=vif['id'], multi_host=network.get_meta('multi_host', False), injected=network.get_meta('injected', False), bridge_interface= network.get_meta('bridge_interface'), vlan=network.get_meta('vlan'), broadcast=str(net_v4.as_netaddr().broadcast), dhcp_server=network.get_meta('dhcp_server', net_v4['gateway']['address']), dns=[ip['address'] for ip in net_v4['dns']], gateway=net_v4['gateway']['address'], gateway_v6=net_v6['gateway']['address'], label=network['label'], mac=vif['address'], rxtx_cap=vif.get_meta('rxtx_cap'), vif_type=vif['type'], vif_devname=vif.get('devname'), vif_uuid=vif['id'], ovs_interfaceid=vif.get('ovs_interfaceid'), qbh_params=vif.get('qbh_params'), qbg_params=vif.get('qbg_params'), should_create_vlan= network.get_meta('should_create_vlan', False), should_create_bridge= network.get_meta('should_create_bridge', False), ip=net_v4['ips'][i]['address'], ip_v6=net_v6['ips'][i]['address'], netmask=str(net_v4.as_netaddr().netmask), netmask_v6=net_v6.as_netaddr()._prefixlen, physical_network= network.get_meta('physical_network', None)) self.assertThat(vif_dict, matchers.DictMatches(check)) def test_validate_networks(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') self.mox.StubOutWithMock(db, 'fixed_ip_get_by_address') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '192.168.1.100'), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '192.168.0.100')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) ip = dict(test_fixed_ip.fake_fixed_ip, **fixed_ips[1]) ip['network'] = dict(test_network.fake_network, **networks[1]) ip['instance_uuid'] = None db.fixed_ip_get_by_address(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=mox.IgnoreArg() ).AndReturn(ip) ip = dict(test_fixed_ip.fake_fixed_ip, **fixed_ips[0]) ip['network'] = dict(test_network.fake_network, **networks[0]) ip['instance_uuid'] = None db.fixed_ip_get_by_address(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=mox.IgnoreArg() ).AndReturn(ip) self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) def test_validate_networks_valid_fixed_ipv6(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') self.mox.StubOutWithMock(db, 'fixed_ip_get_by_address') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '2001:db9:0:1::10')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **networks[1])]) ip = dict(test_fixed_ip.fake_fixed_ip, **fixed_ips[2]) ip['network'] = dict(test_network.fake_network, **networks[1]) ip['instance_uuid'] = None db.fixed_ip_get_by_address(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=mox.IgnoreArg() ).AndReturn(ip) self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) def test_validate_reserved(self): context_admin = context.RequestContext('testuser', 'testproject', is_admin=True) nets = self.network.create_networks(context_admin, 'fake', '192.168.0.0/24', False, 1, 256, None, None, None, None, None) self.assertEqual(1, len(nets)) network = nets[0] self.assertEqual(3, db.network_count_reserved_ips(context_admin, network['id'])) def test_validate_networks_none_requested_networks(self): self.network.validate_networks(self.context, None) def test_validate_networks_empty_requested_networks(self): requested_networks = [] self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) def test_validate_networks_invalid_fixed_ip(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '192.168.1.100.1'), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '192.168.0.100.1')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() self.assertRaises(exception.FixedIpInvalid, self.network.validate_networks, self.context, requested_networks) def test_validate_networks_empty_fixed_ip(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', ''), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() self.assertRaises(exception.FixedIpInvalid, self.network.validate_networks, self.context, requested_networks) def test_validate_networks_none_fixed_ip(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', None), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', None)] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) @mock.patch('nova.objects.quotas.Quotas.reserve') def test_add_fixed_ip_instance_using_id_without_vpn(self, reserve): self.stubs.Set(self.network, '_do_trigger_security_group_members_refresh_for_instance', lambda *a, **kw: None) self.mox.StubOutWithMock(db, 'network_get') self.mox.StubOutWithMock(db, 'network_update') self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(self.network, 'get_instance_nw_info') fixed = dict(test_fixed_ip.fake_fixed_ip, address='192.168.0.101') db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), instance_uuid=mox.IgnoreArg(), host=None).AndReturn(fixed) db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(vifs[0]) db.fixed_ip_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) inst = fake_inst(display_name=HOST, uuid=FAKEUUID) db.instance_get_by_uuid(self.context, mox.IgnoreArg(), use_slave=False, columns_to_join=['info_cache', 'security_groups'] ).AndReturn(inst) db.network_get(mox.IgnoreArg(), mox.IgnoreArg(), project_only=mox.IgnoreArg() ).AndReturn(dict(test_network.fake_network, **networks[0])) db.network_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.network.get_instance_nw_info(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.network.add_fixed_ip_to_instance(self.context, FAKEUUID, HOST, networks[0]['id']) exp_project, exp_user = quotas_obj.ids_from_instance(self.context, inst) reserve.assert_called_once_with(self.context, fixed_ips=1, project_id=exp_project, user_id=exp_user) @mock.patch('nova.objects.quotas.Quotas.reserve') def test_add_fixed_ip_instance_using_uuid_without_vpn(self, reserve): self.stubs.Set(self.network, '_do_trigger_security_group_members_refresh_for_instance', lambda *a, **kw: None) self.mox.StubOutWithMock(db, 'network_get_by_uuid') self.mox.StubOutWithMock(db, 'network_update') self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(self.network, 'get_instance_nw_info') fixed = dict(test_fixed_ip.fake_fixed_ip, address='192.168.0.101') db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), instance_uuid=mox.IgnoreArg(), host=None).AndReturn(fixed) db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(vifs[0]) db.fixed_ip_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) inst = fake_inst(display_name=HOST, uuid=FAKEUUID) db.instance_get_by_uuid(self.context, mox.IgnoreArg(), use_slave=False, columns_to_join=['info_cache', 'security_groups'] ).AndReturn(inst) db.network_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg() ).AndReturn(dict(test_network.fake_network, **networks[0])) db.network_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.network.get_instance_nw_info(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.network.add_fixed_ip_to_instance(self.context, FAKEUUID, HOST, networks[0]['uuid']) exp_project, exp_user = quotas_obj.ids_from_instance(self.context, inst) reserve.assert_called_once_with(self.context, fixed_ips=1, project_id=exp_project, user_id=exp_user) def test_mini_dns_driver(self): zone1 = "example.org" zone2 = "example.com" driver = self.network.instance_dns_manager driver.create_entry("hostone", "10.0.0.1", "A", zone1) driver.create_entry("hosttwo", "10.0.0.2", "A", zone1) driver.create_entry("hostthree", "10.0.0.3", "A", zone1) driver.create_entry("hostfour", "10.0.0.4", "A", zone1) driver.create_entry("hostfive", "10.0.0.5", "A", zone2) driver.delete_entry("hostone", zone1) driver.modify_address("hostfour", "10.0.0.1", zone1) driver.modify_address("hostthree", "10.0.0.1", zone1) names = driver.get_entries_by_address("10.0.0.1", zone1) self.assertEqual(len(names), 2) self.assertIn('hostthree', names) self.assertIn('hostfour', names) names = driver.get_entries_by_address("10.0.0.5", zone2) self.assertEqual(len(names), 1) self.assertIn('hostfive', names) addresses = driver.get_entries_by_name("hosttwo", zone1) self.assertEqual(len(addresses), 1) self.assertIn('10.0.0.2', addresses) self.assertRaises(exception.InvalidInput, driver.create_entry, "hostname", "10.10.10.10", "invalidtype", zone1) def test_mini_dns_driver_with_mixed_case(self): zone1 = "example.org" driver = self.network.instance_dns_manager driver.create_entry("HostTen", "10.0.0.10", "A", zone1) addresses = driver.get_entries_by_address("10.0.0.10", zone1) self.assertEqual(len(addresses), 1) for n in addresses: driver.delete_entry(n, zone1) addresses = driver.get_entries_by_address("10.0.0.10", zone1) self.assertEqual(len(addresses), 0) @mock.patch('nova.objects.quotas.Quotas.reserve') def test_instance_dns(self, reserve): self.stubs.Set(self.network, '_do_trigger_security_group_members_refresh_for_instance', lambda *a, **kw: None) fixedip = dict(test_fixed_ip.fake_fixed_ip, address='192.168.0.101') self.mox.StubOutWithMock(db, 'network_get_by_uuid') self.mox.StubOutWithMock(db, 'network_update') self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(self.network, 'get_instance_nw_info') db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), instance_uuid=mox.IgnoreArg(), host=None ).AndReturn(fixedip) db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(vifs[0]) db.fixed_ip_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) inst = fake_inst(display_name=HOST, uuid=FAKEUUID) db.instance_get_by_uuid(self.context, mox.IgnoreArg(), use_slave=False, columns_to_join=['info_cache', 'security_groups'] ).AndReturn(inst) db.network_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg() ).AndReturn(dict(test_network.fake_network, **networks[0])) db.network_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.network.get_instance_nw_info(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.network.add_fixed_ip_to_instance(self.context, FAKEUUID, HOST, networks[0]['uuid']) instance_manager = self.network.instance_dns_manager addresses = instance_manager.get_entries_by_name(HOST, self.network.instance_dns_domain) self.assertEqual(len(addresses), 1) self.assertEqual(addresses[0], fixedip['address']) addresses = instance_manager.get_entries_by_name(FAKEUUID, self.network.instance_dns_domain) self.assertEqual(len(addresses), 1) self.assertEqual(addresses[0], fixedip['address']) exp_project, exp_user = quotas_obj.ids_from_instance(self.context, inst) reserve.assert_called_once_with(self.context, fixed_ips=1, project_id=exp_project, user_id=exp_user) def test_allocate_floating_ip(self): self.assertIsNone(self.network.allocate_floating_ip(self.context, 1, None)) def test_deallocate_floating_ip(self): self.assertIsNone(self.network.deallocate_floating_ip(self.context, 1, None)) def test_associate_floating_ip(self): self.assertIsNone(self.network.associate_floating_ip(self.context, None, None)) def test_disassociate_floating_ip(self): self.assertIsNone(self.network.disassociate_floating_ip(self.context, None, None)) def test_get_networks_by_uuids_ordering(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = ['bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() res = self.network._get_networks_by_uuids(self.context, requested_networks) self.assertEqual(res[0]['id'], 1) self.assertEqual(res[1]['id'], 0) @mock.patch('nova.objects.instance.Instance.get_by_uuid') @mock.patch('nova.objects.quotas.Quotas.reserve') @mock.patch('nova.objects.quotas.ids_from_instance') def test_allocate_calculates_quota_auth(self, util_method, reserve, get_by_uuid): inst = instance_obj.Instance() get_by_uuid.return_value = inst reserve.side_effect = exception.OverQuota(overs='testing') util_method.return_value = ('foo', 'bar') self.assertRaises(exception.FixedIpLimitExceeded, self.network.allocate_fixed_ip, self.context, 123, None) util_method.assert_called_once_with(self.context, inst) @mock.patch('nova.objects.fixed_ip.FixedIP.get_by_address') @mock.patch('nova.objects.quotas.Quotas.reserve') @mock.patch('nova.objects.quotas.ids_from_instance') def test_deallocate_calculates_quota_auth(self, util_method, reserve, get_by_address): inst = instance_obj.Instance(uuid='fake-uuid') fip = fixed_ip_obj.FixedIP(instance_uuid='fake-uuid', virtual_interface_id=1) get_by_address.return_value = fip util_method.return_value = ('foo', 'bar') # This will fail right after the reserve call when it tries # to look up the fake instance we created above self.assertRaises(exception.InstanceNotFound, self.network.deallocate_fixed_ip, self.context, '1.2.3.4', instance=inst) util_method.assert_called_once_with(self.context, inst) class VlanNetworkTestCase(test.TestCase): def setUp(self): super(VlanNetworkTestCase, self).setUp() self.useFixture(test.SampleNetworks()) self.flags(use_local=True, group='conductor') self.network = network_manager.VlanManager(host=HOST) self.network.db = db self.context = context.RequestContext('testuser', 'testproject', is_admin=False) self.context_admin = context.RequestContext('testuser', 'testproject', is_admin=True) def test_quota_driver_type(self): self.assertEqual(quotas_obj.QuotasNoOp, self.network.quotas_cls) def test_vpn_allocate_fixed_ip(self): self.mox.StubOutWithMock(db, 'fixed_ip_associate') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') fixed = dict(test_fixed_ip.fake_fixed_ip, address='192.168.0.1') db.fixed_ip_associate(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), network_id=mox.IgnoreArg(), reserved=True).AndReturn(fixed) db.fixed_ip_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(vifs[0]) db.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(), use_slave=False, columns_to_join=['info_cache', 'security_groups'] ).AndReturn(fake_inst(display_name=HOST, uuid=FAKEUUID)) self.mox.ReplayAll() network = network_obj.Network._from_db_object( self.context, network_obj.Network(), dict(test_network.fake_network, **networks[0])) network.vpn_private_address = '192.168.0.2' self.network.allocate_fixed_ip(self.context, FAKEUUID, network, vpn=True) def test_vpn_allocate_fixed_ip_no_network_id(self): network = dict(networks[0]) network['vpn_private_address'] = '192.168.0.2' network['id'] = None instance = db.instance_create(self.context, {}) self.assertRaises(exception.FixedIpNotFoundForNetwork, self.network.allocate_fixed_ip, self.context_admin, instance['uuid'], network, vpn=True) def test_allocate_fixed_ip(self): self.stubs.Set(self.network, '_do_trigger_security_group_members_refresh_for_instance', lambda *a, **kw: None) self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') fixed = dict(test_fixed_ip.fake_fixed_ip, address='192.168.0.1') db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), instance_uuid=mox.IgnoreArg(), host=None).AndReturn(fixed) db.fixed_ip_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(vifs[0]) db.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(), use_slave=False, columns_to_join=['info_cache', 'security_groups'] ).AndReturn(fake_inst(display_name=HOST, uuid=FAKEUUID)) self.mox.ReplayAll() network = network_obj.Network._from_db_object( self.context, network_obj.Network(), dict(test_network.fake_network, **networks[0])) network.vpn_private_address = '192.168.0.2' self.network.allocate_fixed_ip(self.context, FAKEUUID, network) def test_create_networks_too_big(self): self.assertRaises(ValueError, self.network.create_networks, None, num_networks=4094, vlan_start=1) def test_create_networks_too_many(self): self.assertRaises(ValueError, self.network.create_networks, None, num_networks=100, vlan_start=1, cidr='192.168.0.1/24', network_size=100) def test_duplicate_vlan_raises(self): # VLAN 100 is already used and we force the network to be created # in that vlan (vlan=100). self.assertRaises(exception.DuplicateVlan, self.network.create_networks, self.context_admin, label="fake", num_networks=1, vlan=100, cidr='192.168.0.1/24', network_size=100) def test_vlan_start(self): # VLAN 100 and 101 are used, so this network shoud be created in 102 networks = self.network.create_networks( self.context_admin, label="fake", num_networks=1, vlan_start=100, cidr='192.168.3.1/24', network_size=100) self.assertEqual(networks[0]["vlan"], 102) def test_vlan_start_multiple(self): # VLAN 100 and 101 are used, so these networks shoud be created in 102 # and 103 networks = self.network.create_networks( self.context_admin, label="fake", num_networks=2, vlan_start=100, cidr='192.168.3.1/24', network_size=100) self.assertEqual(networks[0]["vlan"], 102) self.assertEqual(networks[1]["vlan"], 103) def test_vlan_start_used(self): # VLAN 100 and 101 are used, but vlan_start=99. networks = self.network.create_networks( self.context_admin, label="fake", num_networks=1, vlan_start=99, cidr='192.168.3.1/24', network_size=100) self.assertEqual(networks[0]["vlan"], 102) @mock.patch('nova.db.network_get') def test_validate_networks(self, net_get): def network_get(_context, network_id, project_only='allow_none'): return dict(test_network.fake_network, **networks[network_id]) net_get.side_effect = network_get self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') self.mox.StubOutWithMock(db, "fixed_ip_get_by_address") requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '192.168.1.100'), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '192.168.0.100')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) db_fixed1 = dict(test_fixed_ip.fake_fixed_ip, network_id=networks[1]['id'], network=dict(test_network.fake_network, **networks[1]), instance_uuid=None) db.fixed_ip_get_by_address(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=mox.IgnoreArg() ).AndReturn(db_fixed1) db_fixed2 = dict(test_fixed_ip.fake_fixed_ip, network_id=networks[0]['id'], network=dict(test_network.fake_network, **networks[0]), instance_uuid=None) db.fixed_ip_get_by_address(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=mox.IgnoreArg() ).AndReturn(db_fixed2) self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) def test_validate_networks_none_requested_networks(self): self.network.validate_networks(self.context, None) def test_validate_networks_empty_requested_networks(self): requested_networks = [] self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) def test_validate_networks_invalid_fixed_ip(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '192.168.1.100.1'), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '192.168.0.100.1')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() self.assertRaises(exception.FixedIpInvalid, self.network.validate_networks, self.context, requested_networks) def test_validate_networks_empty_fixed_ip(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', ''), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '')] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() self.assertRaises(exception.FixedIpInvalid, self.network.validate_networks, self.context, requested_networks) def test_validate_networks_none_fixed_ip(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = [('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', None), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', None)] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() self.network.validate_networks(self.context, requested_networks) def test_floating_ip_owned_by_project(self): ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) # raises because floating_ip project_id is None floating_ip = floating_ip_obj.FloatingIP(address='10.0.0.1', project_id=None) self.assertRaises(exception.NotAuthorized, self.network._floating_ip_owned_by_project, ctxt, floating_ip) # raises because floating_ip project_id is not equal to ctxt project_id floating_ip = floating_ip_obj.FloatingIP( address='10.0.0.1', project_id=ctxt.project_id + '1') self.assertRaises(exception.NotAuthorized, self.network._floating_ip_owned_by_project, ctxt, floating_ip) # does not raise (floating ip is owned by ctxt project) floating_ip = floating_ip_obj.FloatingIP(address='10.0.0.1', project_id=ctxt.project_id) self.network._floating_ip_owned_by_project(ctxt, floating_ip) ctxt = context.RequestContext(None, None, is_admin=True) # does not raise (ctxt is admin) floating_ip = floating_ip_obj.FloatingIP(address='10.0.0.1', project_id=None) self.network._floating_ip_owned_by_project(ctxt, floating_ip) # does not raise (ctxt is admin) floating_ip = floating_ip_obj.FloatingIP(address='10.0.0.1', project_id='testproject') self.network._floating_ip_owned_by_project(ctxt, floating_ip) def test_allocate_floating_ip(self): ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) def fake_allocate_address(*args, **kwargs): return {'address': '10.0.0.1', 'project_id': ctxt.project_id} self.stubs.Set(self.network.db, 'floating_ip_allocate_address', fake_allocate_address) self.network.allocate_floating_ip(ctxt, ctxt.project_id) def test_deallocate_floating_ip(self): ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) def fake1(*args, **kwargs): pass def fake2(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', fixed_ip_id=1) def fake3(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', fixed_ip_id=None, project_id=ctxt.project_id) self.stubs.Set(self.network.db, 'floating_ip_deallocate', fake1) self.stubs.Set(self.network, '_floating_ip_owned_by_project', fake1) # this time should raise because floating ip is associated to fixed_ip self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake2) self.assertRaises(exception.FloatingIpAssociated, self.network.deallocate_floating_ip, ctxt, mox.IgnoreArg()) # this time should not raise self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake3) self.network.deallocate_floating_ip(ctxt, ctxt.project_id) @mock.patch('nova.db.fixed_ip_get') def test_associate_floating_ip(self, fixed_get): ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) def fake1(*args, **kwargs): return dict(test_fixed_ip.fake_fixed_ip, address='10.0.0.1', network=test_network.fake_network) # floating ip that's already associated def fake2(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', pool='nova', interface='eth0', fixed_ip_id=1) # floating ip that isn't associated def fake3(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', pool='nova', interface='eth0', fixed_ip_id=None) # fixed ip with remote host def fake4(*args, **kwargs): return dict(test_fixed_ip.fake_fixed_ip, address='10.0.0.1', pool='nova', instance_uuid=FAKEUUID, interface='eth0', network_id=123) def fake4_network(*args, **kwargs): return dict(test_network.fake_network, multi_host=False, host='jibberjabber') # fixed ip with local host def fake5(*args, **kwargs): return dict(test_fixed_ip.fake_fixed_ip, address='10.0.0.1', pool='nova', instance_uuid=FAKEUUID, interface='eth0', network_id=1234) def fake5_network(*args, **kwargs): return dict(test_network.fake_network, multi_host=False, host='testhost') def fake6(ctxt, method, **kwargs): self.local = False def fake7(*args, **kwargs): self.local = True def fake8(*args, **kwargs): raise processutils.ProcessExecutionError('', 'Cannot find device "em0"\n') def fake9(*args, **kwargs): raise test.TestingException() # raises because interface doesn't exist self.stubs.Set(self.network.db, 'floating_ip_fixed_ip_associate', fake1) self.stubs.Set(self.network.db, 'floating_ip_disassociate', fake1) self.stubs.Set(self.network.driver, 'ensure_floating_forward', fake8) self.assertRaises(exception.NoFloatingIpInterface, self.network._associate_floating_ip, ctxt, '1.2.3.4', '1.2.3.5', mox.IgnoreArg(), mox.IgnoreArg()) self.stubs.Set(self.network, '_floating_ip_owned_by_project', fake1) # raises because floating_ip is already associated to a fixed_ip self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake2) self.stubs.Set(self.network, 'disassociate_floating_ip', fake9) fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, address='1.2.3.4', instance_uuid='fake_uuid', network=test_network.fake_network) # doesn't raise because we exit early if the address is the same self.network.associate_floating_ip(ctxt, mox.IgnoreArg(), '1.2.3.4') # raises because we call disassociate which is mocked self.assertRaises(test.TestingException, self.network.associate_floating_ip, ctxt, mox.IgnoreArg(), 'new') self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake3) # does not raise and makes call remotely self.local = True self.stubs.Set(self.network.db, 'fixed_ip_get_by_address', fake4) self.stubs.Set(self.network.db, 'network_get', fake4_network) self.stubs.Set(self.network.network_rpcapi.client, 'prepare', lambda **kw: self.network.network_rpcapi.client) self.stubs.Set(self.network.network_rpcapi.client, 'call', fake6) self.network.associate_floating_ip(ctxt, mox.IgnoreArg(), mox.IgnoreArg()) self.assertFalse(self.local) # does not raise and makes call locally self.local = False self.stubs.Set(self.network.db, 'fixed_ip_get_by_address', fake5) self.stubs.Set(self.network.db, 'network_get', fake5_network) self.stubs.Set(self.network, '_associate_floating_ip', fake7) self.network.associate_floating_ip(ctxt, mox.IgnoreArg(), mox.IgnoreArg()) self.assertTrue(self.local) def test_add_floating_ip_nat_before_bind(self): # Tried to verify order with documented mox record/verify # functionality, but it doesn't seem to work since I can't make it # fail. I'm using stubs and a flag for now, but if this mox feature # can be made to work, it would be a better way to test this. # # self.mox.StubOutWithMock(self.network.driver, # 'ensure_floating_forward') # self.mox.StubOutWithMock(self.network.driver, 'bind_floating_ip') # # self.network.driver.ensure_floating_forward(mox.IgnoreArg(), # mox.IgnoreArg(), # mox.IgnoreArg(), # mox.IgnoreArg()) # self.network.driver.bind_floating_ip(mox.IgnoreArg(), # mox.IgnoreArg()) # self.mox.ReplayAll() nat_called = [False] def fake_nat(*args, **kwargs): nat_called[0] = True def fake_bind(*args, **kwargs): self.assertTrue(nat_called[0]) self.stubs.Set(self.network.driver, 'ensure_floating_forward', fake_nat) self.stubs.Set(self.network.driver, 'bind_floating_ip', fake_bind) self.network.l3driver.add_floating_ip('fakefloat', 'fakefixed', 'fakeiface', 'fakenet') @mock.patch('nova.db.floating_ip_get_all_by_host') @mock.patch('nova.db.fixed_ip_get') def _test_floating_ip_init_host(self, fixed_get, floating_get, public_interface, expected_arg): floating_get.return_value = [ dict(test_floating_ip.fake_floating_ip, interface='foo', address='1.2.3.4'), dict(test_floating_ip.fake_floating_ip, interface='fakeiface', address='1.2.3.5', fixed_ip_id=1), dict(test_floating_ip.fake_floating_ip, interface='bar', address='1.2.3.6', fixed_ip_id=2), ] def fixed_ip_get(_context, fixed_ip_id, get_network): if fixed_ip_id == 1: return dict(test_fixed_ip.fake_fixed_ip, address='1.2.3.4', network=test_network.fake_network) raise exception.FixedIpNotFound(id=fixed_ip_id) fixed_get.side_effect = fixed_ip_get self.mox.StubOutWithMock(self.network.l3driver, 'add_floating_ip') self.flags(public_interface=public_interface) self.network.l3driver.add_floating_ip(netaddr.IPAddress('1.2.3.5'), netaddr.IPAddress('1.2.3.4'), expected_arg, mox.IsA(network_obj.Network)) self.mox.ReplayAll() self.network.init_host_floating_ips() self.mox.UnsetStubs() self.mox.VerifyAll() def test_floating_ip_init_host_without_public_interface(self): self._test_floating_ip_init_host(public_interface=False, expected_arg='fakeiface') def test_floating_ip_init_host_with_public_interface(self): self._test_floating_ip_init_host(public_interface='fooiface', expected_arg='fooiface') def test_disassociate_floating_ip(self): ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) def fake1(*args, **kwargs): pass # floating ip that isn't associated def fake2(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', pool='nova', interface='eth0', fixed_ip_id=None) # floating ip that is associated def fake3(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', pool='nova', interface='eth0', fixed_ip_id=1, project_id=ctxt.project_id) # fixed ip with remote host def fake4(*args, **kwargs): return dict(test_fixed_ip.fake_fixed_ip, address='10.0.0.1', pool='nova', instance_uuid=FAKEUUID, interface='eth0', network_id=123) def fake4_network(*args, **kwargs): return dict(test_network.fake_network, multi_host=False, host='jibberjabber') # fixed ip with local host def fake5(*args, **kwargs): return dict(test_fixed_ip.fake_fixed_ip, address='10.0.0.1', pool='nova', instance_uuid=FAKEUUID, interface='eth0', network_id=1234) def fake5_network(*args, **kwargs): return dict(test_network.fake_network, multi_host=False, host='testhost') def fake6(ctxt, method, **kwargs): self.local = False def fake7(*args, **kwargs): self.local = True def fake8(*args, **kwargs): return dict(test_floating_ip.fake_floating_ip, address='10.0.0.1', pool='nova', interface='eth0', fixed_ip_id=1, auto_assigned=True, project_id=ctxt.project_id) self.stubs.Set(self.network, '_floating_ip_owned_by_project', fake1) # raises because floating_ip is not associated to a fixed_ip self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake2) self.assertRaises(exception.FloatingIpNotAssociated, self.network.disassociate_floating_ip, ctxt, mox.IgnoreArg()) self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake3) # does not raise and makes call remotely self.local = True self.stubs.Set(self.network.db, 'fixed_ip_get', fake4) self.stubs.Set(self.network.db, 'network_get', fake4_network) self.stubs.Set(self.network.network_rpcapi.client, 'prepare', lambda **kw: self.network.network_rpcapi.client) self.stubs.Set(self.network.network_rpcapi.client, 'call', fake6) self.network.disassociate_floating_ip(ctxt, mox.IgnoreArg()) self.assertFalse(self.local) # does not raise and makes call locally self.local = False self.stubs.Set(self.network.db, 'fixed_ip_get', fake5) self.stubs.Set(self.network.db, 'network_get', fake5_network) self.stubs.Set(self.network, '_disassociate_floating_ip', fake7) self.network.disassociate_floating_ip(ctxt, mox.IgnoreArg()) self.assertTrue(self.local) # raises because auto_assigned floating IP cannot be disassociated self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake8) self.assertRaises(exception.CannotDisassociateAutoAssignedFloatingIP, self.network.disassociate_floating_ip, ctxt, mox.IgnoreArg()) def test_add_fixed_ip_instance_without_vpn_requested_networks(self): self.stubs.Set(self.network, '_do_trigger_security_group_members_refresh_for_instance', lambda *a, **kw: None) self.mox.StubOutWithMock(db, 'network_get') self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool') self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance_and_network') self.mox.StubOutWithMock(db, 'fixed_ip_update') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(self.network, 'get_instance_nw_info') db.fixed_ip_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(vifs[0]) fixed = dict(test_fixed_ip.fake_fixed_ip, address='192.168.0.101') db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), instance_uuid=mox.IgnoreArg(), host=None).AndReturn(fixed) db.network_get(mox.IgnoreArg(), mox.IgnoreArg(), project_only=mox.IgnoreArg() ).AndReturn(dict(test_network.fake_network, **networks[0])) db.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(), use_slave=False, columns_to_join=['info_cache', 'security_groups'] ).AndReturn(fake_inst(display_name=HOST, uuid=FAKEUUID)) self.network.get_instance_nw_info(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.network.add_fixed_ip_to_instance(self.context, FAKEUUID, HOST, networks[0]['id']) @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') def test_ip_association_and_allocation_of_other_project(self, net_get, fixed_get): """Makes sure that we cannot deallocaate or disassociate a public ip of other project. """ net_get.return_value = dict(test_network.fake_network, **networks[1]) context1 = context.RequestContext('user', 'project1') context2 = context.RequestContext('user', 'project2') float_ip = db.floating_ip_create(context1.elevated(), {'address': '1.2.3.4', 'project_id': context1.project_id}) float_addr = float_ip['address'] instance = db.instance_create(context1, {'project_id': 'project1'}) fix_addr = db.fixed_ip_associate_pool(context1.elevated(), 1, instance['uuid']).address fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, address=fix_addr, instance_uuid=instance.uuid, network=dict(test_network.fake_network, **networks[1])) # Associate the IP with non-admin user context self.assertRaises(exception.NotAuthorized, self.network.associate_floating_ip, context2, float_addr, fix_addr) # Deallocate address from other project self.assertRaises(exception.NotAuthorized, self.network.deallocate_floating_ip, context2, float_addr) # Now Associates the address to the actual project self.network.associate_floating_ip(context1, float_addr, fix_addr) # Now try dis-associating from other project self.assertRaises(exception.NotAuthorized, self.network.disassociate_floating_ip, context2, float_addr) # Clean up the ip addresses self.network.disassociate_floating_ip(context1, float_addr) self.network.deallocate_floating_ip(context1, float_addr) self.network.deallocate_fixed_ip(context1, fix_addr, 'fake') db.floating_ip_destroy(context1.elevated(), float_addr) db.fixed_ip_disassociate(context1.elevated(), fix_addr) @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') @mock.patch('nova.db.fixed_ip_update') def test_deallocate_fixed(self, fixed_update, net_get, fixed_get): """Verify that release is called properly. Ensures https://bugs.launchpad.net/nova/+bug/973442 doesn't return """ net_get.return_value = dict(test_network.fake_network, **networks[1]) def vif_get(_context, _vif_id): return vifs[0] self.stubs.Set(db, 'virtual_interface_get', vif_get) context1 = context.RequestContext('user', 'project1') instance = db.instance_create(context1, {'project_id': 'project1'}) elevated = context1.elevated() fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['uuid']) fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, address=fix_addr.address, instance_uuid=instance.uuid, allocated=True, virtual_interface_id=3, network=dict(test_network.fake_network, **networks[1])) self.flags(force_dhcp_release=True) self.mox.StubOutWithMock(linux_net, 'release_dhcp') linux_net.release_dhcp(networks[1]['bridge'], fix_addr.address, 'DE:AD:BE:EF:00:00') self.mox.ReplayAll() self.network.deallocate_fixed_ip(context1, fix_addr.address, 'fake') fixed_update.assert_called_once_with(context1, fix_addr.address, {'allocated': False, 'virtual_interface_id': None}) def test_deallocate_fixed_deleted(self): # Verify doesn't deallocate deleted fixed_ip from deleted network. def teardown_network_on_host(_context, network): if network['id'] == 0: raise test.TestingException() self.stubs.Set(self.network, '_teardown_network_on_host', teardown_network_on_host) context1 = context.RequestContext('user', 'project1') elevated = context1.elevated() instance = db.instance_create(context1, {'project_id': 'project1'}) network = db.network_create_safe(elevated, networks[0]) _fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['uuid']) fix_addr = _fix_addr.address db.fixed_ip_update(elevated, fix_addr, {'deleted': 1}) elevated.read_deleted = 'yes' delfixed = db.fixed_ip_get_by_address(elevated, fix_addr) values = {'address': fix_addr, 'network_id': network.id, 'instance_uuid': delfixed['instance_uuid']} db.fixed_ip_create(elevated, values) elevated.read_deleted = 'no' elevated.read_deleted = 'yes' deallocate = self.network.deallocate_fixed_ip self.assertRaises(test.TestingException, deallocate, context1, fix_addr, 'fake') @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') @mock.patch('nova.db.fixed_ip_update') def test_deallocate_fixed_no_vif(self, fixed_update, net_get, fixed_get): """Verify that deallocate doesn't raise when no vif is returned. Ensures https://bugs.launchpad.net/nova/+bug/968457 doesn't return """ net_get.return_value = dict(test_network.fake_network, **networks[1]) def vif_get(_context, _vif_id): return None self.stubs.Set(db, 'virtual_interface_get', vif_get) context1 = context.RequestContext('user', 'project1') instance = db.instance_create(context1, {'project_id': 'project1'}) elevated = context1.elevated() fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['uuid']) fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, address=fix_addr.address, allocated=True, virtual_interface_id=3, instance_uuid=instance.uuid, network=dict(test_network.fake_network, **networks[1])) self.flags(force_dhcp_release=True) fixed_update.return_value = fixed_get.return_value self.network.deallocate_fixed_ip(context1, fix_addr.address, 'fake') fixed_update.assert_called_once_with(context1, fix_addr.address, {'allocated': False, 'virtual_interface_id': None}) @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') @mock.patch('nova.db.fixed_ip_update') def test_fixed_ip_cleanup_fail(self, fixed_update, net_get, fixed_get): # Verify IP is not deallocated if the security group refresh fails. net_get.return_value = dict(test_network.fake_network, **networks[1]) context1 = context.RequestContext('user', 'project1') instance = db.instance_create(context1, {'project_id': 'project1'}) elevated = context1.elevated() fix_addr = fixed_ip_obj.FixedIP.associate_pool(elevated, 1, instance['uuid']) def fake_refresh(instance_uuid): raise test.TestingException() self.stubs.Set(self.network, '_do_trigger_security_group_members_refresh_for_instance', fake_refresh) fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, address=fix_addr.address, allocated=True, virtual_interface_id=3, instance_uuid=instance.uuid, network=dict(test_network.fake_network, **networks[1])) self.assertRaises(test.TestingException, self.network.deallocate_fixed_ip, context1, str(fix_addr.address), 'fake') self.assertFalse(fixed_update.called) def test_get_networks_by_uuids_ordering(self): self.mox.StubOutWithMock(db, 'network_get_all_by_uuids') requested_networks = ['bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'] db.network_get_all_by_uuids(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [dict(test_network.fake_network, **net) for net in networks]) self.mox.ReplayAll() res = self.network._get_networks_by_uuids(self.context, requested_networks) self.assertEqual(res[0]['id'], 1) self.assertEqual(res[1]['id'], 0) class _TestDomainObject(object): def __init__(self, **kwargs): for k, v in kwargs.iteritems(): self.__setattr__(k, v) class FakeNetwork(object): def __init__(self, **kwargs): self.vlan = None for k, v in kwargs.iteritems(): self.__setattr__(k, v) def __getitem__(self, item): return getattr(self, item) class CommonNetworkTestCase(test.TestCase): def setUp(self): super(CommonNetworkTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.flags(ipv6_backend='rfc2462') self.flags(use_local=True, group='conductor') ipv6.reset_backend() def test_validate_instance_zone_for_dns_domain(self): domain = 'example.com' az = 'test_az' domains = { domain: _TestDomainObject( domain=domain, availability_zone=az)} def dnsdomain_get(context, instance_domain): return domains.get(instance_domain) self.stubs.Set(db, 'dnsdomain_get', dnsdomain_get) fake_instance = {'uuid': FAKEUUID, 'availability_zone': az} manager = network_manager.NetworkManager() res = manager._validate_instance_zone_for_dns_domain(self.context, fake_instance) self.assertTrue(res) def fake_create_fixed_ips(self, context, network_id, fixed_cidr=None): return None def test_get_instance_nw_info_client_exceptions(self): manager = network_manager.NetworkManager() self.mox.StubOutWithMock(manager.db, 'virtual_interface_get_by_instance') manager.db.virtual_interface_get_by_instance( self.context, FAKEUUID, use_slave=False).AndRaise(exception.InstanceNotFound( instance_id=FAKEUUID)) self.mox.ReplayAll() self.assertRaises(messaging.ExpectedException, manager.get_instance_nw_info, self.context, FAKEUUID, 'fake_rxtx_factor', HOST) @mock.patch('nova.db.instance_get') @mock.patch('nova.db.fixed_ip_get_by_instance') def test_deallocate_for_instance_passes_host_info(self, fixed_get, instance_get): manager = fake_network.FakeNetworkManager() db = manager.db instance_get.return_value = fake_inst(uuid='ignoreduuid') db.virtual_interface_delete_by_instance = lambda _x, _y: None ctx = context.RequestContext('igonre', 'igonre') fixed_get.return_value = [dict(test_fixed_ip.fake_fixed_ip, address='1.2.3.4', network_id=123)] manager.deallocate_for_instance( ctx, instance=instance_obj.Instance._from_db_object(self.context, instance_obj.Instance(), instance_get.return_value)) self.assertEqual([ (ctx, '1.2.3.4', 'fake-host') ], manager.deallocate_fixed_ip_calls) @mock.patch('nova.db.fixed_ip_get_by_instance') @mock.patch('nova.db.fixed_ip_disassociate') def test_remove_fixed_ip_from_instance(self, disassociate, get): manager = fake_network.FakeNetworkManager() get.return_value = [ dict(test_fixed_ip.fake_fixed_ip, **x) for x in manager.db.fixed_ip_get_by_instance(None, FAKEUUID)] manager.remove_fixed_ip_from_instance(self.context, FAKEUUID, HOST, '10.0.0.1') self.assertEqual(manager.deallocate_called, '10.0.0.1') disassociate.assert_called_once_with(self.context, '10.0.0.1') @mock.patch('nova.db.fixed_ip_get_by_instance') def test_remove_fixed_ip_from_instance_bad_input(self, get): manager = fake_network.FakeNetworkManager() get.return_value = [] self.assertRaises(exception.FixedIpNotFoundForSpecificInstance, manager.remove_fixed_ip_from_instance, self.context, 99, HOST, 'bad input') def test_validate_cidrs(self): manager = fake_network.FakeNetworkManager() nets = manager.create_networks(self.context.elevated(), 'fake', '192.168.0.0/24', False, 1, 256, None, None, None, None, None) self.assertEqual(1, len(nets)) cidrs = [str(net['cidr']) for net in nets] self.assertIn('192.168.0.0/24', cidrs) def test_validate_cidrs_split_exact_in_half(self): manager = fake_network.FakeNetworkManager() nets = manager.create_networks(self.context.elevated(), 'fake', '192.168.0.0/24', False, 2, 128, None, None, None, None, None) self.assertEqual(2, len(nets)) cidrs = [str(net['cidr']) for net in nets] self.assertIn('192.168.0.0/25', cidrs) self.assertIn('192.168.0.128/25', cidrs) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_split_cidr_in_use_middle_of_range(self, get_all): manager = fake_network.FakeNetworkManager() get_all.return_value = [dict(test_network.fake_network, id=1, cidr='192.168.2.0/24')] nets = manager.create_networks(self.context.elevated(), 'fake', '192.168.0.0/16', False, 4, 256, None, None, None, None, None) self.assertEqual(4, len(nets)) cidrs = [str(net['cidr']) for net in nets] exp_cidrs = ['192.168.0.0/24', '192.168.1.0/24', '192.168.3.0/24', '192.168.4.0/24'] for exp_cidr in exp_cidrs: self.assertIn(exp_cidr, cidrs) self.assertNotIn('192.168.2.0/24', cidrs) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_smaller_subnet_in_use(self, get_all): manager = fake_network.FakeNetworkManager() get_all.return_value = [dict(test_network.fake_network, id=1, cidr='192.168.2.9/25')] # CidrConflict: requested cidr (192.168.2.0/24) conflicts with # existing smaller cidr args = (self.context.elevated(), 'fake', '192.168.2.0/24', False, 1, 256, None, None, None, None, None) self.assertRaises(exception.CidrConflict, manager.create_networks, *args) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_split_smaller_cidr_in_use(self, get_all): manager = fake_network.FakeNetworkManager() get_all.return_value = [dict(test_network.fake_network, id=1, cidr='192.168.2.0/25')] nets = manager.create_networks(self.context.elevated(), 'fake', '192.168.0.0/16', False, 4, 256, None, None, None, None, None) self.assertEqual(4, len(nets)) cidrs = [str(net['cidr']) for net in nets] exp_cidrs = ['192.168.0.0/24', '192.168.1.0/24', '192.168.3.0/24', '192.168.4.0/24'] for exp_cidr in exp_cidrs: self.assertIn(exp_cidr, cidrs) self.assertNotIn('192.168.2.0/24', cidrs) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_split_smaller_cidr_in_use2(self, get_all): manager = fake_network.FakeNetworkManager() self.mox.StubOutWithMock(manager.db, 'network_get_all') get_all.return_value = [dict(test_network.fake_network, id=1, cidr='192.168.2.9/29')] nets = manager.create_networks(self.context.elevated(), 'fake', '192.168.2.0/24', False, 3, 32, None, None, None, None, None) self.assertEqual(3, len(nets)) cidrs = [str(net['cidr']) for net in nets] exp_cidrs = ['192.168.2.32/27', '192.168.2.64/27', '192.168.2.96/27'] for exp_cidr in exp_cidrs: self.assertIn(exp_cidr, cidrs) self.assertNotIn('192.168.2.0/27', cidrs) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_split_all_in_use(self, get_all): manager = fake_network.FakeNetworkManager() in_use = [dict(test_network.fake_network, **values) for values in [{'id': 1, 'cidr': '192.168.2.9/29'}, {'id': 2, 'cidr': '192.168.2.64/26'}, {'id': 3, 'cidr': '192.168.2.128/26'}]] get_all.return_value = in_use args = (self.context.elevated(), 'fake', '192.168.2.0/24', False, 3, 64, None, None, None, None, None) # CidrConflict: Not enough subnets avail to satisfy requested num_ # networks - some subnets in requested range already # in use self.assertRaises(exception.CidrConflict, manager.create_networks, *args) def test_validate_cidrs_one_in_use(self): manager = fake_network.FakeNetworkManager() args = (None, 'fake', '192.168.0.0/24', False, 2, 256, None, None, None, None, None) # ValueError: network_size * num_networks exceeds cidr size self.assertRaises(ValueError, manager.create_networks, *args) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_already_used(self, get_all): manager = fake_network.FakeNetworkManager() get_all.return_value = [dict(test_network.fake_network, cidr='192.168.0.0/24')] # CidrConflict: cidr already in use args = (self.context.elevated(), 'fake', '192.168.0.0/24', False, 1, 256, None, None, None, None, None) self.assertRaises(exception.CidrConflict, manager.create_networks, *args) def test_validate_cidrs_too_many(self): manager = fake_network.FakeNetworkManager() args = (None, 'fake', '192.168.0.0/24', False, 200, 256, None, None, None, None, None) # ValueError: Not enough subnets avail to satisfy requested # num_networks self.assertRaises(ValueError, manager.create_networks, *args) def test_validate_cidrs_split_partial(self): manager = fake_network.FakeNetworkManager() nets = manager.create_networks(self.context.elevated(), 'fake', '192.168.0.0/16', False, 2, 256, None, None, None, None, None) returned_cidrs = [str(net['cidr']) for net in nets] self.assertIn('192.168.0.0/24', returned_cidrs) self.assertIn('192.168.1.0/24', returned_cidrs) @mock.patch('nova.db.network_get_all') def test_validate_cidrs_conflict_existing_supernet(self, get_all): manager = fake_network.FakeNetworkManager() get_all.return_value = [dict(test_network.fake_network, id=1, cidr='192.168.0.0/8')] args = (self.context.elevated(), 'fake', '192.168.0.0/24', False, 1, 256, None, None, None, None, None) # CidrConflict: requested cidr (192.168.0.0/24) conflicts # with existing supernet self.assertRaises(exception.CidrConflict, manager.create_networks, *args) def test_create_networks(self): cidr = '192.168.0.0/24' manager = fake_network.FakeNetworkManager() self.stubs.Set(manager, '_create_fixed_ips', self.fake_create_fixed_ips) args = [self.context.elevated(), 'foo', cidr, None, 1, 256, 'fd00::/48', None, None, None, None, None] self.assertTrue(manager.create_networks(*args)) @mock.patch('nova.db.network_get_all') def test_create_networks_cidr_already_used(self, get_all): manager = fake_network.FakeNetworkManager() get_all.return_value = [dict(test_network.fake_network, id=1, cidr='192.168.0.0/24')] args = [self.context.elevated(), 'foo', '192.168.0.0/24', None, 1, 256, 'fd00::/48', None, None, None, None, None] self.assertRaises(exception.CidrConflict, manager.create_networks, *args) def test_create_networks_many(self): cidr = '192.168.0.0/16' manager = fake_network.FakeNetworkManager() self.stubs.Set(manager, '_create_fixed_ips', self.fake_create_fixed_ips) args = [self.context.elevated(), 'foo', cidr, None, 10, 256, 'fd00::/48', None, None, None, None, None] self.assertTrue(manager.create_networks(*args)) @mock.patch('nova.db.network_get') @mock.patch('nova.db.fixed_ips_by_virtual_interface') def test_get_instance_uuids_by_ip_regex(self, fixed_get, network_get): manager = fake_network.FakeNetworkManager(self.stubs) fixed_get.side_effect = manager.db.fixed_ips_by_virtual_interface _vifs = manager.db.virtual_interface_get_all(None) fake_context = context.RequestContext('user', 'project') network_get.return_value = dict(test_network.fake_network, **manager.db.network_get(None, 1)) # Greedy get eveything res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '.*'}) self.assertEqual(len(res), len(_vifs)) # Doesn't exist res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '10.0.0.1'}) self.assertFalse(res) # Get instance 1 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '172.16.0.2'}) self.assertTrue(res) self.assertEqual(len(res), 1) self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 2 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '173.16.0.2'}) self.assertTrue(res) self.assertEqual(len(res), 1) self.assertEqual(res[0]['instance_uuid'], _vifs[2]['instance_uuid']) # Get instance 0 and 1 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '172.16.0.*'}) self.assertTrue(res) self.assertEqual(len(res), 2) self.assertEqual(res[0]['instance_uuid'], _vifs[0]['instance_uuid']) self.assertEqual(res[1]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 1 and 2 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip': '17..16.0.2'}) self.assertTrue(res) self.assertEqual(len(res), 2) self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) self.assertEqual(res[1]['instance_uuid'], _vifs[2]['instance_uuid']) @mock.patch('nova.db.network_get') def test_get_instance_uuids_by_ipv6_regex(self, network_get): manager = fake_network.FakeNetworkManager(self.stubs) _vifs = manager.db.virtual_interface_get_all(None) fake_context = context.RequestContext('user', 'project') def _network_get(context, network_id, **args): return dict(test_network.fake_network, **manager.db.network_get(context, network_id)) network_get.side_effect = _network_get # Greedy get eveything res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': '.*'}) self.assertEqual(len(res), len(_vifs)) # Doesn't exist res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': '.*1034.*'}) self.assertFalse(res) # Get instance 1 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': '2001:.*2'}) self.assertTrue(res) self.assertEqual(len(res), 1) self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 2 ip6 = '2001:db8:69:1f:dead:beff:feff:ef03' res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': ip6}) self.assertTrue(res) self.assertEqual(len(res), 1) self.assertEqual(res[0]['instance_uuid'], _vifs[2]['instance_uuid']) # Get instance 0 and 1 res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': '.*ef0[1,2]'}) self.assertTrue(res) self.assertEqual(len(res), 2) self.assertEqual(res[0]['instance_uuid'], _vifs[0]['instance_uuid']) self.assertEqual(res[1]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 1 and 2 ip6 = '2001:db8:69:1.:dead:beff:feff:ef0.' res = manager.get_instance_uuids_by_ip_filter(fake_context, {'ip6': ip6}) self.assertTrue(res) self.assertEqual(len(res), 2) self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) self.assertEqual(res[1]['instance_uuid'], _vifs[2]['instance_uuid']) @mock.patch('nova.db.network_get') @mock.patch('nova.db.fixed_ips_by_virtual_interface') def test_get_instance_uuids_by_ip(self, fixed_get, network_get): manager = fake_network.FakeNetworkManager(self.stubs) fixed_get.side_effect = manager.db.fixed_ips_by_virtual_interface _vifs = manager.db.virtual_interface_get_all(None) fake_context = context.RequestContext('user', 'project') network_get.return_value = dict(test_network.fake_network, **manager.db.network_get(None, 1)) # No regex for you! res = manager.get_instance_uuids_by_ip_filter(fake_context, {'fixed_ip': '.*'}) self.assertFalse(res) # Doesn't exist ip = '10.0.0.1' res = manager.get_instance_uuids_by_ip_filter(fake_context, {'fixed_ip': ip}) self.assertFalse(res) # Get instance 1 ip = '172.16.0.2' res = manager.get_instance_uuids_by_ip_filter(fake_context, {'fixed_ip': ip}) self.assertTrue(res) self.assertEqual(len(res), 1) self.assertEqual(res[0]['instance_uuid'], _vifs[1]['instance_uuid']) # Get instance 2 ip = '173.16.0.2' res = manager.get_instance_uuids_by_ip_filter(fake_context, {'fixed_ip': ip}) self.assertTrue(res) self.assertEqual(len(res), 1) self.assertEqual(res[0]['instance_uuid'], _vifs[2]['instance_uuid']) @mock.patch('nova.db.network_get_by_uuid') def test_get_network(self, get): manager = fake_network.FakeNetworkManager() fake_context = context.RequestContext('user', 'project') get.return_value = dict(test_network.fake_network, **networks[0]) uuid = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' network = manager.get_network(fake_context, uuid) self.assertEqual(network['uuid'], uuid) @mock.patch('nova.db.network_get_by_uuid') def test_get_network_not_found(self, get): manager = fake_network.FakeNetworkManager() fake_context = context.RequestContext('user', 'project') get.side_effect = exception.NetworkNotFoundForUUID(uuid='foo') uuid = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' self.assertRaises(exception.NetworkNotFound, manager.get_network, fake_context, uuid) @mock.patch('nova.db.network_get_all') def test_get_all_networks(self, get_all): manager = fake_network.FakeNetworkManager() fake_context = context.RequestContext('user', 'project') get_all.return_value = [dict(test_network.fake_network, **net) for net in networks] output = manager.get_all_networks(fake_context) self.assertEqual(len(networks), 2) self.assertEqual(output[0]['uuid'], 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa') self.assertEqual(output[1]['uuid'], 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb') @mock.patch('nova.db.network_get_by_uuid') @mock.patch('nova.db.network_disassociate') def test_disassociate_network(self, disassociate, get): manager = fake_network.FakeNetworkManager() disassociate.return_value = True fake_context = context.RequestContext('user', 'project') get.return_value = dict(test_network.fake_network, **networks[0]) uuid = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' manager.disassociate_network(fake_context, uuid) @mock.patch('nova.db.network_get_by_uuid') def test_disassociate_network_not_found(self, get): manager = fake_network.FakeNetworkManager() fake_context = context.RequestContext('user', 'project') get.side_effect = exception.NetworkNotFoundForUUID(uuid='fake') uuid = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' self.assertRaises(exception.NetworkNotFound, manager.disassociate_network, fake_context, uuid) def _test_init_host_dynamic_fixed_range(self, net_manager): self.flags(fake_network=True, routing_source_ip='172.16.0.1', metadata_host='172.16.0.1', public_interface='eth1', dmz_cidr=['10.0.3.0/24']) binary_name = linux_net.get_binary_name() # Stub out calls we don't want to really run, mock the db self.stubs.Set(linux_net.iptables_manager, '_apply', lambda: None) self.stubs.Set(floating_ips.FloatingIP, 'init_host_floating_ips', lambda *args: None) self.stubs.Set(net_manager.l3driver, 'initialize_gateway', lambda *args: None) self.mox.StubOutWithMock(db, 'network_get_all_by_host') fake_networks = [dict(test_network.fake_network, **n) for n in networks] db.network_get_all_by_host(mox.IgnoreArg(), mox.IgnoreArg() ).MultipleTimes().AndReturn(fake_networks) self.mox.ReplayAll() net_manager.init_host() # Get the iptables rules that got created current_lines = [] new_lines = linux_net.iptables_manager._modify_rules(current_lines, linux_net.iptables_manager.ipv4['nat'], table_name='nat') expected_lines = ['[0:0] -A %s-snat -s %s -d 0.0.0.0/0 ' '-j SNAT --to-source %s -o %s' % (binary_name, networks[0]['cidr'], CONF.routing_source_ip, CONF.public_interface), '[0:0] -A %s-POSTROUTING -s %s -d %s/32 -j ACCEPT' % (binary_name, networks[0]['cidr'], CONF.metadata_host), '[0:0] -A %s-POSTROUTING -s %s -d %s -j ACCEPT' % (binary_name, networks[0]['cidr'], CONF.dmz_cidr[0]), '[0:0] -A %s-POSTROUTING -s %s -d %s -m conntrack ! ' '--ctstate DNAT -j ACCEPT' % (binary_name, networks[0]['cidr'], networks[0]['cidr']), '[0:0] -A %s-snat -s %s -d 0.0.0.0/0 ' '-j SNAT --to-source %s -o %s' % (binary_name, networks[1]['cidr'], CONF.routing_source_ip, CONF.public_interface), '[0:0] -A %s-POSTROUTING -s %s -d %s/32 -j ACCEPT' % (binary_name, networks[1]['cidr'], CONF.metadata_host), '[0:0] -A %s-POSTROUTING -s %s -d %s -j ACCEPT' % (binary_name, networks[1]['cidr'], CONF.dmz_cidr[0]), '[0:0] -A %s-POSTROUTING -s %s -d %s -m conntrack ! ' '--ctstate DNAT -j ACCEPT' % (binary_name, networks[1]['cidr'], networks[1]['cidr'])] # Compare the expected rules against the actual ones for line in expected_lines: self.assertIn(line, new_lines) # Add an additional network and ensure the rules get configured new_network = {'id': 2, 'uuid': 'cccccccc-cccc-cccc-cccc-cccccccc', 'label': 'test2', 'injected': False, 'multi_host': False, 'cidr': '192.168.2.0/24', 'cidr_v6': '2001:dba::/64', 'gateway_v6': '2001:dba::1', 'netmask_v6': '64', 'netmask': '255.255.255.0', 'bridge': 'fa1', 'bridge_interface': 'fake_fa1', 'gateway': '192.168.2.1', 'broadcast': '192.168.2.255', 'dns1': '192.168.2.1', 'dns2': '192.168.2.2', 'vlan': None, 'host': HOST, 'project_id': 'fake_project', 'vpn_public_address': '192.168.2.2', 'vpn_public_port': '22', 'vpn_private_address': '10.0.0.2'} new_network_obj = network_obj.Network._from_db_object( self.context, network_obj.Network(), dict(test_network.fake_network, **new_network)) ctxt = context.get_admin_context() net_manager._setup_network_on_host(ctxt, new_network_obj) # Get the new iptables rules that got created from adding a new network current_lines = [] new_lines = linux_net.iptables_manager._modify_rules(current_lines, linux_net.iptables_manager.ipv4['nat'], table_name='nat') # Add the new expected rules to the old ones expected_lines += ['[0:0] -A %s-snat -s %s -d 0.0.0.0/0 ' '-j SNAT --to-source %s -o %s' % (binary_name, new_network['cidr'], CONF.routing_source_ip, CONF.public_interface), '[0:0] -A %s-POSTROUTING -s %s -d %s/32 -j ACCEPT' % (binary_name, new_network['cidr'], CONF.metadata_host), '[0:0] -A %s-POSTROUTING -s %s -d %s -j ACCEPT' % (binary_name, new_network['cidr'], CONF.dmz_cidr[0]), '[0:0] -A %s-POSTROUTING -s %s -d %s -m conntrack ' '! --ctstate DNAT -j ACCEPT' % (binary_name, new_network['cidr'], new_network['cidr'])] # Compare the expected rules (with new network) against the actual ones for line in expected_lines: self.assertIn(line, new_lines) def test_flatdhcpmanager_dynamic_fixed_range(self): """Test FlatDHCPManager NAT rules for fixed_range.""" # Set the network manager self.network = network_manager.FlatDHCPManager(host=HOST) self.network.db = db # Test new behavior: # CONF.fixed_range is not set, defaults to None # Determine networks to NAT based on lookup self._test_init_host_dynamic_fixed_range(self.network) def test_vlanmanager_dynamic_fixed_range(self): """Test VlanManager NAT rules for fixed_range.""" # Set the network manager self.network = network_manager.VlanManager(host=HOST) self.network.db = db # Test new behavior: # CONF.fixed_range is not set, defaults to None # Determine networks to NAT based on lookup self._test_init_host_dynamic_fixed_range(self.network) class TestRPCFixedManager(network_manager.RPCAllocateFixedIP, network_manager.NetworkManager): """Dummy manager that implements RPCAllocateFixedIP.""" class RPCAllocateTestCase(test.TestCase): """Tests nova.network.manager.RPCAllocateFixedIP.""" def setUp(self): super(RPCAllocateTestCase, self).setUp() self.flags(use_local=True, group='conductor') self.rpc_fixed = TestRPCFixedManager() self.context = context.RequestContext('fake', 'fake') def test_rpc_allocate(self): """Test to verify bug 855030 doesn't resurface. Mekes sure _rpc_allocate_fixed_ip returns a value so the call returns properly and the greenpool completes. """ address = '10.10.10.10' def fake_allocate(*args, **kwargs): return address def fake_network_get(*args, **kwargs): return test_network.fake_network self.stubs.Set(self.rpc_fixed, 'allocate_fixed_ip', fake_allocate) self.stubs.Set(self.rpc_fixed.db, 'network_get', fake_network_get) rval = self.rpc_fixed._rpc_allocate_fixed_ip(self.context, 'fake_instance', 'fake_network') self.assertEqual(rval, address) class TestFloatingIPManager(floating_ips.FloatingIP, network_manager.NetworkManager): """Dummy manager that implements FloatingIP.""" class AllocateTestCase(test.TestCase): def setUp(self): super(AllocateTestCase, self).setUp() self.useFixture(test.SampleNetworks()) self.conductor = self.start_service( 'conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute') self.network = self.start_service('network') self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) def test_allocate_for_instance(self): address = "10.10.10.10" self.flags(auto_assign_floating_ip=True) db.floating_ip_create(self.context, {'address': address, 'pool': 'nova'}) inst = instance_obj.Instance() inst.host = self.compute.host inst.display_name = HOST inst.instance_type_id = 1 inst.uuid = FAKEUUID inst.create(self.context) networks = db.network_get_all(self.context) for network in networks: db.network_update(self.context, network['id'], {'host': self.network.host}) project_id = self.context.project_id nw_info = self.network.allocate_for_instance(self.context, instance_id=inst['id'], instance_uuid=inst['uuid'], host=inst['host'], vpn=None, rxtx_factor=3, project_id=project_id, macs=None) self.assertEqual(1, len(nw_info)) fixed_ip = nw_info.fixed_ips()[0]['address'] self.assertTrue(utils.is_valid_ipv4(fixed_ip)) self.network.deallocate_for_instance(self.context, instance=inst) def test_allocate_for_instance_with_mac(self): available_macs = set(['ca:fe:de:ad:be:ef']) inst = db.instance_create(self.context, {'host': self.compute.host, 'display_name': HOST, 'instance_type_id': 1}) networks = db.network_get_all(self.context) for network in networks: db.network_update(self.context, network['id'], {'host': self.network.host}) project_id = self.context.project_id nw_info = self.network.allocate_for_instance(self.context, instance_id=inst['id'], instance_uuid=inst['uuid'], host=inst['host'], vpn=None, rxtx_factor=3, project_id=project_id, macs=available_macs) assigned_macs = [vif['address'] for vif in nw_info] self.assertEqual(1, len(assigned_macs)) self.assertEqual(available_macs.pop(), assigned_macs[0]) self.network.deallocate_for_instance(self.context, instance_id=inst['id'], host=self.network.host, project_id=project_id) def test_allocate_for_instance_not_enough_macs(self): available_macs = set() inst = db.instance_create(self.context, {'host': self.compute.host, 'display_name': HOST, 'instance_type_id': 1}) networks = db.network_get_all(self.context) for network in networks: db.network_update(self.context, network['id'], {'host': self.network.host}) project_id = self.context.project_id self.assertRaises(exception.VirtualInterfaceCreateException, self.network.allocate_for_instance, self.context, instance_id=inst['id'], instance_uuid=inst['uuid'], host=inst['host'], vpn=None, rxtx_factor=3, project_id=project_id, macs=available_macs) class FloatingIPTestCase(test.TestCase): """Tests nova.network.manager.FloatingIP.""" def setUp(self): super(FloatingIPTestCase, self).setUp() self.tempdir = self.useFixture(fixtures.TempDir()).path self.flags(log_dir=self.tempdir) self.flags(use_local=True, group='conductor') self.network = TestFloatingIPManager() self.network.db = db self.project_id = 'testproject' self.context = context.RequestContext('testuser', self.project_id, is_admin=False) @mock.patch('nova.db.fixed_ip_get') @mock.patch('nova.db.network_get') @mock.patch('nova.db.instance_get_by_uuid') @mock.patch('nova.db.service_get_by_host_and_topic') @mock.patch('nova.db.floating_ip_get_by_address') def test_disassociate_floating_ip_multi_host_calls(self, floating_get, service_get, inst_get, net_get, fixed_get): floating_ip = dict(test_floating_ip.fake_floating_ip, fixed_ip_id=12) fixed_ip = dict(test_fixed_ip.fake_fixed_ip, network_id=None, instance_uuid='instance-uuid') network = dict(test_network.fake_network, multi_host=True) instance = dict(fake_instance.fake_db_instance(host='some-other-host')) ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) self.stubs.Set(self.network, '_floating_ip_owned_by_project', lambda _x, _y: True) floating_get.return_value = floating_ip fixed_get.return_value = fixed_ip net_get.return_value = network inst_get.return_value = instance service_get.return_value = test_service.fake_service self.stubs.Set(self.network.servicegroup_api, 'service_is_up', lambda _x: True) self.mox.StubOutWithMock( self.network.network_rpcapi, '_disassociate_floating_ip') self.network.network_rpcapi._disassociate_floating_ip( ctxt, 'fl_ip', mox.IgnoreArg(), 'some-other-host', 'instance-uuid') self.mox.ReplayAll() self.network.disassociate_floating_ip(ctxt, 'fl_ip', True) @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') @mock.patch('nova.db.instance_get_by_uuid') @mock.patch('nova.db.floating_ip_get_by_address') def test_associate_floating_ip_multi_host_calls(self, floating_get, inst_get, net_get, fixed_get): floating_ip = dict(test_floating_ip.fake_floating_ip, fixed_ip_id=None) fixed_ip = dict(test_fixed_ip.fake_fixed_ip, network_id=None, instance_uuid='instance-uuid') network = dict(test_network.fake_network, multi_host=True) instance = dict(fake_instance.fake_db_instance(host='some-other-host')) ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) self.stubs.Set(self.network, '_floating_ip_owned_by_project', lambda _x, _y: True) floating_get.return_value = floating_ip fixed_get.return_value = fixed_ip net_get.return_value = network inst_get.return_value = instance self.mox.StubOutWithMock( self.network.network_rpcapi, '_associate_floating_ip') self.network.network_rpcapi._associate_floating_ip( ctxt, 'fl_ip', 'fix_ip', mox.IgnoreArg(), 'some-other-host', 'instance-uuid') self.mox.ReplayAll() self.network.associate_floating_ip(ctxt, 'fl_ip', 'fix_ip', True) def test_double_deallocation(self): instance_ref = db.instance_create(self.context, {"project_id": self.project_id}) # Run it twice to make it fault if it does not handle # instances without fixed networks # If this fails in either, it does not handle having no addresses self.network.deallocate_for_instance(self.context, instance_id=instance_ref['id']) self.network.deallocate_for_instance(self.context, instance_id=instance_ref['id']) def test_deallocation_deleted_instance(self): self.stubs.Set(self.network, '_teardown_network_on_host', lambda *args, **kwargs: None) instance = instance_obj.Instance() instance.project_id = self.project_id instance.deleted = True instance.create(self.context) network = db.network_create_safe(self.context.elevated(), { 'project_id': self.project_id, 'host': CONF.host, 'label': 'foo'}) fixed = db.fixed_ip_create(self.context, {'allocated': True, 'instance_uuid': instance.uuid, 'address': '10.1.1.1', 'network_id': network['id']}) db.floating_ip_create(self.context, { 'address': '10.10.10.10', 'instance_uuid': instance.uuid, 'fixed_ip_id': fixed['id'], 'project_id': self.project_id}) self.network.deallocate_for_instance(self.context, instance=instance) def test_deallocation_duplicate_floating_ip(self): self.stubs.Set(self.network, '_teardown_network_on_host', lambda *args, **kwargs: None) instance = instance_obj.Instance() instance.project_id = self.project_id instance.create(self.context) network = db.network_create_safe(self.context.elevated(), { 'project_id': self.project_id, 'host': CONF.host, 'label': 'foo'}) fixed = db.fixed_ip_create(self.context, {'allocated': True, 'instance_uuid': instance.uuid, 'address': '10.1.1.1', 'network_id': network['id']}) db.floating_ip_create(self.context, { 'address': '10.10.10.10', 'deleted': True}) db.floating_ip_create(self.context, { 'address': '10.10.10.10', 'instance_uuid': instance.uuid, 'fixed_ip_id': fixed['id'], 'project_id': self.project_id}) self.network.deallocate_for_instance(self.context, instance=instance) @mock.patch('nova.db.fixed_ip_get') @mock.patch('nova.db.floating_ip_get_by_address') @mock.patch('nova.db.floating_ip_update') def test_migrate_instance_start(self, floating_update, floating_get, fixed_get): called = {'count': 0} def fake_floating_ip_get_by_address(context, address): return dict(test_floating_ip.fake_floating_ip, address=address, fixed_ip_id=0) def fake_is_stale_floating_ip_address(context, floating_ip): return str(floating_ip.address) == '172.24.4.23' floating_get.side_effect = fake_floating_ip_get_by_address fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, instance_uuid='fake_uuid', address='10.0.0.2', network=test_network.fake_network) floating_update.return_value = fake_floating_ip_get_by_address( None, '1.2.3.4') def fake_remove_floating_ip(floating_addr, fixed_addr, interface, network): called['count'] += 1 def fake_clean_conntrack(fixed_ip): if not str(fixed_ip) == "10.0.0.2": raise exception.FixedIpInvalid(address=fixed_ip) self.stubs.Set(self.network, '_is_stale_floating_ip_address', fake_is_stale_floating_ip_address) self.stubs.Set(self.network.l3driver, 'remove_floating_ip', fake_remove_floating_ip) self.stubs.Set(self.network.l3driver, 'clean_conntrack', fake_clean_conntrack) self.mox.ReplayAll() addresses = ['172.24.4.23', '172.24.4.24', '172.24.4.25'] self.network.migrate_instance_start(self.context, instance_uuid=FAKEUUID, floating_addresses=addresses, rxtx_factor=3, project_id=self.project_id, source='fake_source', dest='fake_dest') self.assertEqual(called['count'], 2) @mock.patch('nova.db.fixed_ip_get') @mock.patch('nova.db.floating_ip_update') def test_migrate_instance_finish(self, floating_update, fixed_get): called = {'count': 0} def fake_floating_ip_get_by_address(context, address): return dict(test_floating_ip.fake_floating_ip, address=address, fixed_ip_id=0) def fake_is_stale_floating_ip_address(context, floating_ip): return str(floating_ip.address) == '172.24.4.23' fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip, instance_uuid='fake_uuid', address='10.0.0.2', network=test_network.fake_network) floating_update.return_value = fake_floating_ip_get_by_address( None, '1.2.3.4') def fake_add_floating_ip(floating_addr, fixed_addr, interface, network): called['count'] += 1 self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake_floating_ip_get_by_address) self.stubs.Set(self.network, '_is_stale_floating_ip_address', fake_is_stale_floating_ip_address) self.stubs.Set(self.network.l3driver, 'add_floating_ip', fake_add_floating_ip) self.mox.ReplayAll() addresses = ['172.24.4.23', '172.24.4.24', '172.24.4.25'] self.network.migrate_instance_finish(self.context, instance_uuid=FAKEUUID, floating_addresses=addresses, host='fake_dest', rxtx_factor=3, project_id=self.project_id, source='fake_source') self.assertEqual(called['count'], 2) def test_floating_dns_create_conflict(self): zone = "example.org" address1 = "10.10.10.11" name1 = "foo" self.network.add_dns_entry(self.context, address1, name1, "A", zone) self.assertRaises(exception.FloatingIpDNSExists, self.network.add_dns_entry, self.context, address1, name1, "A", zone) def test_floating_create_and_get(self): zone = "example.org" address1 = "10.10.10.11" name1 = "foo" name2 = "bar" entries = self.network.get_dns_entries_by_address(self.context, address1, zone) self.assertFalse(entries) self.network.add_dns_entry(self.context, address1, name1, "A", zone) self.network.add_dns_entry(self.context, address1, name2, "A", zone) entries = self.network.get_dns_entries_by_address(self.context, address1, zone) self.assertEqual(len(entries), 2) self.assertEqual(entries[0], name1) self.assertEqual(entries[1], name2) entries = self.network.get_dns_entries_by_name(self.context, name1, zone) self.assertEqual(len(entries), 1) self.assertEqual(entries[0], address1) def test_floating_dns_delete(self): zone = "example.org" address1 = "10.10.10.11" name1 = "foo" name2 = "bar" self.network.add_dns_entry(self.context, address1, name1, "A", zone) self.network.add_dns_entry(self.context, address1, name2, "A", zone) self.network.delete_dns_entry(self.context, name1, zone) entries = self.network.get_dns_entries_by_address(self.context, address1, zone) self.assertEqual(len(entries), 1) self.assertEqual(entries[0], name2) self.assertRaises(exception.NotFound, self.network.delete_dns_entry, self.context, name1, zone) def test_floating_dns_domains_public(self): zone1 = "testzone" domain1 = "example.org" domain2 = "example.com" address1 = '10.10.10.10' entryname = 'testentry' context_admin = context.RequestContext('testuser', 'testproject', is_admin=True) self.assertRaises(exception.AdminRequired, self.network.create_public_dns_domain, self.context, domain1, zone1) self.network.create_public_dns_domain(context_admin, domain1, 'testproject') self.network.create_public_dns_domain(context_admin, domain2, 'fakeproject') domains = self.network.get_dns_domains(self.context) self.assertEqual(len(domains), 2) self.assertEqual(domains[0]['domain'], domain1) self.assertEqual(domains[1]['domain'], domain2) self.assertEqual(domains[0]['project'], 'testproject') self.assertEqual(domains[1]['project'], 'fakeproject') self.network.add_dns_entry(self.context, address1, entryname, 'A', domain1) entries = self.network.get_dns_entries_by_name(self.context, entryname, domain1) self.assertEqual(len(entries), 1) self.assertEqual(entries[0], address1) self.assertRaises(exception.AdminRequired, self.network.delete_dns_domain, self.context, domain1) self.network.delete_dns_domain(context_admin, domain1) self.network.delete_dns_domain(context_admin, domain2) # Verify that deleting the domain deleted the associated entry entries = self.network.get_dns_entries_by_name(self.context, entryname, domain1) self.assertFalse(entries) def test_delete_all_by_ip(self): domain1 = "example.org" domain2 = "example.com" address = "10.10.10.10" name1 = "foo" name2 = "bar" def fake_domains(context): return [{'domain': 'example.org', 'scope': 'public'}, {'domain': 'example.com', 'scope': 'public'}, {'domain': 'test.example.org', 'scope': 'public'}] self.stubs.Set(self.network, 'get_dns_domains', fake_domains) context_admin = context.RequestContext('testuser', 'testproject', is_admin=True) self.network.create_public_dns_domain(context_admin, domain1, 'testproject') self.network.create_public_dns_domain(context_admin, domain2, 'fakeproject') domains = self.network.get_dns_domains(self.context) for domain in domains: self.network.add_dns_entry(self.context, address, name1, "A", domain['domain']) self.network.add_dns_entry(self.context, address, name2, "A", domain['domain']) entries = self.network.get_dns_entries_by_address(self.context, address, domain['domain']) self.assertEqual(len(entries), 2) self.network._delete_all_entries_for_ip(self.context, address) for domain in domains: entries = self.network.get_dns_entries_by_address(self.context, address, domain['domain']) self.assertFalse(entries) self.network.delete_dns_domain(context_admin, domain1) self.network.delete_dns_domain(context_admin, domain2) def test_mac_conflicts(self): # Make sure MAC collisions are retried. self.flags(create_unique_mac_address_attempts=3) ctxt = context.RequestContext('testuser', 'testproject', is_admin=True) macs = ['bb:bb:bb:bb:bb:bb', 'aa:aa:aa:aa:aa:aa'] # Create a VIF with aa:aa:aa:aa:aa:aa crash_test_dummy_vif = { 'address': macs[1], 'instance_uuid': 'fake_uuid', 'network_id': 123, 'uuid': 'fake_uuid', } self.network.db.virtual_interface_create(ctxt, crash_test_dummy_vif) # Hand out a collision first, then a legit MAC def fake_gen_mac(): return macs.pop() self.stubs.Set(utils, 'generate_mac_address', fake_gen_mac) # SQLite doesn't seem to honor the uniqueness constraint on the # address column, so fake the collision-avoidance here def fake_vif_save(vif): if vif.address == crash_test_dummy_vif['address']: raise db_exc.DBError("If you're smart, you'll retry!") # NOTE(russellb) The VirtualInterface object requires an ID to be # set, and we expect it to get set automatically when we do the # save. vif.id = 1 self.stubs.Set(models.VirtualInterface, 'save', fake_vif_save) # Attempt to add another and make sure that both MACs are consumed # by the retry loop self.network._add_virtual_interface(ctxt, 'fake_uuid', 123) self.assertEqual(macs, []) def test_deallocate_client_exceptions(self): # Ensure that FloatingIpNotFoundForAddress is wrapped. self.mox.StubOutWithMock(self.network.db, 'floating_ip_get_by_address') self.network.db.floating_ip_get_by_address( self.context, '1.2.3.4').AndRaise( exception.FloatingIpNotFoundForAddress(address='fake')) self.mox.ReplayAll() self.assertRaises(messaging.ExpectedException, self.network.deallocate_floating_ip, self.context, '1.2.3.4') def test_associate_client_exceptions(self): # Ensure that FloatingIpNotFoundForAddress is wrapped. self.mox.StubOutWithMock(self.network.db, 'floating_ip_get_by_address') self.network.db.floating_ip_get_by_address( self.context, '1.2.3.4').AndRaise( exception.FloatingIpNotFoundForAddress(address='fake')) self.mox.ReplayAll() self.assertRaises(messaging.ExpectedException, self.network.associate_floating_ip, self.context, '1.2.3.4', '10.0.0.1') def test_disassociate_client_exceptions(self): # Ensure that FloatingIpNotFoundForAddress is wrapped. self.mox.StubOutWithMock(self.network.db, 'floating_ip_get_by_address') self.network.db.floating_ip_get_by_address( self.context, '1.2.3.4').AndRaise( exception.FloatingIpNotFoundForAddress(address='fake')) self.mox.ReplayAll() self.assertRaises(messaging.ExpectedException, self.network.disassociate_floating_ip, self.context, '1.2.3.4') def test_get_floating_ip_client_exceptions(self): # Ensure that FloatingIpNotFoundForAddress is wrapped. self.mox.StubOutWithMock(self.network.db, 'floating_ip_get') self.network.db.floating_ip_get(self.context, 'fake-id').AndRaise( exception.FloatingIpNotFound(id='fake')) self.mox.ReplayAll() self.assertRaises(messaging.ExpectedException, self.network.get_floating_ip, self.context, 'fake-id') def _test_associate_floating_ip_failure(self, stdout, expected_exception): def _fake_catchall(*args, **kwargs): return dict(test_fixed_ip.fake_fixed_ip, network=test_network.fake_network) def _fake_add_floating_ip(*args, **kwargs): raise processutils.ProcessExecutionError(stdout) self.stubs.Set(self.network.db, 'floating_ip_fixed_ip_associate', _fake_catchall) self.stubs.Set(self.network.db, 'floating_ip_disassociate', _fake_catchall) self.stubs.Set(self.network.l3driver, 'add_floating_ip', _fake_add_floating_ip) self.assertRaises(expected_exception, self.network._associate_floating_ip, self.context, '1.2.3.4', '1.2.3.5', '', '') def test_associate_floating_ip_failure(self): self._test_associate_floating_ip_failure(None, processutils.ProcessExecutionError) def test_associate_floating_ip_failure_interface_not_found(self): self._test_associate_floating_ip_failure('Cannot find device', exception.NoFloatingIpInterface) class InstanceDNSTestCase(test.TestCase): """Tests nova.network.manager instance DNS.""" def setUp(self): super(InstanceDNSTestCase, self).setUp() self.tempdir = self.useFixture(fixtures.TempDir()).path self.flags(log_dir=self.tempdir) self.flags(use_local=True, group='conductor') self.network = TestFloatingIPManager() self.network.db = db self.project_id = 'testproject' self.context = context.RequestContext('testuser', self.project_id, is_admin=False) def test_dns_domains_private(self): zone1 = 'testzone' domain1 = 'example.org' context_admin = context.RequestContext('testuser', 'testproject', is_admin=True) self.assertRaises(exception.AdminRequired, self.network.create_private_dns_domain, self.context, domain1, zone1) self.network.create_private_dns_domain(context_admin, domain1, zone1) domains = self.network.get_dns_domains(self.context) self.assertEqual(len(domains), 1) self.assertEqual(domains[0]['domain'], domain1) self.assertEqual(domains[0]['availability_zone'], zone1) self.assertRaises(exception.AdminRequired, self.network.delete_dns_domain, self.context, domain1) self.network.delete_dns_domain(context_admin, domain1) domain1 = "example.org" domain2 = "example.com" class LdapDNSTestCase(test.TestCase): """Tests nova.network.ldapdns.LdapDNS.""" def setUp(self): super(LdapDNSTestCase, self).setUp() self.useFixture(test.ReplaceModule('ldap', fake_ldap)) dns_class = 'nova.network.ldapdns.LdapDNS' self.driver = importutils.import_object(dns_class) attrs = {'objectClass': ['domainrelatedobject', 'dnsdomain', 'domain', 'dcobject', 'top'], 'associateddomain': ['root'], 'dc': ['root']} self.driver.lobj.add_s("ou=hosts,dc=example,dc=org", attrs.items()) self.driver.create_domain(domain1) self.driver.create_domain(domain2) def tearDown(self): self.driver.delete_domain(domain1) self.driver.delete_domain(domain2) super(LdapDNSTestCase, self).tearDown() def test_ldap_dns_domains(self): domains = self.driver.get_domains() self.assertEqual(len(domains), 2) self.assertIn(domain1, domains) self.assertIn(domain2, domains) def test_ldap_dns_create_conflict(self): address1 = "10.10.10.11" name1 = "foo" self.driver.create_entry(name1, address1, "A", domain1) self.assertRaises(exception.FloatingIpDNSExists, self.driver.create_entry, name1, address1, "A", domain1) def test_ldap_dns_create_and_get(self): address1 = "10.10.10.11" name1 = "foo" name2 = "bar" entries = self.driver.get_entries_by_address(address1, domain1) self.assertFalse(entries) self.driver.create_entry(name1, address1, "A", domain1) self.driver.create_entry(name2, address1, "A", domain1) entries = self.driver.get_entries_by_address(address1, domain1) self.assertEqual(len(entries), 2) self.assertEqual(entries[0], name1) self.assertEqual(entries[1], name2) entries = self.driver.get_entries_by_name(name1, domain1) self.assertEqual(len(entries), 1) self.assertEqual(entries[0], address1) def test_ldap_dns_delete(self): address1 = "10.10.10.11" name1 = "foo" name2 = "bar" self.driver.create_entry(name1, address1, "A", domain1) self.driver.create_entry(name2, address1, "A", domain1) entries = self.driver.get_entries_by_address(address1, domain1) self.assertEqual(len(entries), 2) self.driver.delete_entry(name1, domain1) entries = self.driver.get_entries_by_address(address1, domain1) LOG.debug("entries: %s" % entries) self.assertEqual(len(entries), 1) self.assertEqual(entries[0], name2) self.assertRaises(exception.NotFound, self.driver.delete_entry, name1, domain1) nova-2014.1/nova/tests/network/test_api.py0000664000175400017540000003353312323721510021665 0ustar jenkinsjenkins00000000000000# Copyright 2012 Red Hat, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for network API.""" import itertools import random import mox from nova.compute import flavors from nova import context from nova import db from nova import exception from nova import network from nova.network import api from nova.network import floating_ips from nova.network import model as network_model from nova.network import rpcapi as network_rpcapi from nova import policy from nova import test from nova import utils FAKE_UUID = 'a47ae74e-ab08-547f-9eee-ffd23fc46c16' class NetworkPolicyTestCase(test.TestCase): def setUp(self): super(NetworkPolicyTestCase, self).setUp() policy.reset() policy.init() self.context = context.get_admin_context() def tearDown(self): super(NetworkPolicyTestCase, self).tearDown() policy.reset() def test_check_policy(self): self.mox.StubOutWithMock(policy, 'enforce') target = { 'project_id': self.context.project_id, 'user_id': self.context.user_id, } policy.enforce(self.context, 'network:get_all', target) self.mox.ReplayAll() api.check_policy(self.context, 'get_all') class ApiTestCase(test.TestCase): def setUp(self): super(ApiTestCase, self).setUp() self.network_api = network.API() self.context = context.RequestContext('fake-user', 'fake-project') def test_allocate_for_instance_handles_macs_passed(self): # If a macs argument is supplied to the 'nova-network' API, it is just # ignored. This test checks that the call down to the rpcapi layer # doesn't pass macs down: nova-network doesn't support hypervisor # mac address limits (today anyhow). macs = set(['ab:cd:ef:01:23:34']) self.mox.StubOutWithMock( self.network_api.network_rpcapi, "allocate_for_instance") kwargs = dict(zip(['host', 'instance_id', 'project_id', 'requested_networks', 'rxtx_factor', 'vpn', 'macs', 'dhcp_options'], itertools.repeat(mox.IgnoreArg()))) self.network_api.network_rpcapi.allocate_for_instance( mox.IgnoreArg(), **kwargs).AndReturn([]) self.mox.ReplayAll() flavor = flavors.get_default_flavor() flavor['rxtx_factor'] = 0 sys_meta = flavors.save_flavor_info({}, flavor) instance = dict(id='id', uuid='uuid', project_id='project_id', host='host', system_metadata=utils.dict_to_metadata(sys_meta)) self.network_api.allocate_for_instance( self.context, instance, 'vpn', 'requested_networks', macs=macs) def _do_test_associate_floating_ip(self, orig_instance_uuid): """Test post-association logic.""" new_instance = {'uuid': 'new-uuid'} def fake_associate(*args, **kwargs): return orig_instance_uuid self.stubs.Set(floating_ips.FloatingIP, 'associate_floating_ip', fake_associate) def fake_instance_get_by_uuid(context, instance_uuid): return {'uuid': instance_uuid} self.stubs.Set(self.network_api.db, 'instance_get_by_uuid', fake_instance_get_by_uuid) def fake_get_nw_info(ctxt, instance): class FakeNWInfo(object): def json(self): pass return FakeNWInfo() self.stubs.Set(self.network_api, '_get_instance_nw_info', fake_get_nw_info) if orig_instance_uuid: expected_updated_instances = [new_instance['uuid'], orig_instance_uuid] else: expected_updated_instances = [new_instance['uuid']] def fake_instance_info_cache_update(context, instance_uuid, cache): self.assertEqual(instance_uuid, expected_updated_instances.pop()) self.stubs.Set(self.network_api.db, 'instance_info_cache_update', fake_instance_info_cache_update) def fake_update_instance_cache_with_nw_info(api, context, instance, nw_info=None, update_cells=True): return self.stubs.Set(api, "update_instance_cache_with_nw_info", fake_update_instance_cache_with_nw_info) self.network_api.associate_floating_ip(self.context, new_instance, '172.24.4.225', '10.0.0.2') def test_associate_preassociated_floating_ip(self): self._do_test_associate_floating_ip('orig-uuid') def test_associate_unassociated_floating_ip(self): self._do_test_associate_floating_ip(None) def test_get_floating_ip_invalid_id(self): self.assertRaises(exception.InvalidID, self.network_api.get_floating_ip, self.context, '123zzz') def _stub_migrate_instance_calls(self, method, multi_host, info): fake_flavor = flavors.get_default_flavor() fake_flavor['rxtx_factor'] = 1.21 sys_meta = utils.dict_to_metadata( flavors.save_flavor_info({}, fake_flavor)) fake_instance = {'uuid': 'fake_uuid', 'instance_type_id': fake_flavor['id'], 'project_id': 'fake_project_id', 'system_metadata': sys_meta} fake_migration = {'source_compute': 'fake_compute_source', 'dest_compute': 'fake_compute_dest'} def fake_mig_inst_method(*args, **kwargs): info['kwargs'] = kwargs def fake_is_multi_host(*args, **kwargs): return multi_host def fake_get_floaters(*args, **kwargs): return ['fake_float1', 'fake_float2'] self.stubs.Set(network_rpcapi.NetworkAPI, method, fake_mig_inst_method) self.stubs.Set(self.network_api, '_is_multi_host', fake_is_multi_host) self.stubs.Set(self.network_api, '_get_floating_ip_addresses', fake_get_floaters) expected = {'instance_uuid': 'fake_uuid', 'source_compute': 'fake_compute_source', 'dest_compute': 'fake_compute_dest', 'rxtx_factor': 1.21, 'project_id': 'fake_project_id', 'floating_addresses': None} if multi_host: expected['floating_addresses'] = ['fake_float1', 'fake_float2'] return fake_instance, fake_migration, expected def test_migrate_instance_start_with_multhost(self): info = {'kwargs': {}} arg1, arg2, expected = self._stub_migrate_instance_calls( 'migrate_instance_start', True, info) expected['host'] = 'fake_compute_source' self.network_api.migrate_instance_start(self.context, arg1, arg2) self.assertEqual(info['kwargs'], expected) def test_migrate_instance_start_without_multhost(self): info = {'kwargs': {}} arg1, arg2, expected = self._stub_migrate_instance_calls( 'migrate_instance_start', False, info) self.network_api.migrate_instance_start(self.context, arg1, arg2) self.assertEqual(info['kwargs'], expected) def test_migrate_instance_finish_with_multhost(self): info = {'kwargs': {}} arg1, arg2, expected = self._stub_migrate_instance_calls( 'migrate_instance_finish', True, info) expected['host'] = 'fake_compute_dest' self.network_api.migrate_instance_finish(self.context, arg1, arg2) self.assertEqual(info['kwargs'], expected) def test_migrate_instance_finish_without_multhost(self): info = {'kwargs': {}} arg1, arg2, expected = self._stub_migrate_instance_calls( 'migrate_instance_finish', False, info) self.network_api.migrate_instance_finish(self.context, arg1, arg2) self.assertEqual(info['kwargs'], expected) def test_is_multi_host_instance_has_no_fixed_ip(self): def fake_fixed_ip_get_by_instance(ctxt, uuid): raise exception.FixedIpNotFoundForInstance(instance_uuid=uuid) self.stubs.Set(self.network_api.db, 'fixed_ip_get_by_instance', fake_fixed_ip_get_by_instance) instance = {'uuid': FAKE_UUID} self.assertFalse(self.network_api._is_multi_host(self.context, instance)) def test_is_multi_host_network_has_no_project_id(self): is_multi_host = random.choice([True, False]) network = {'project_id': None, 'multi_host': is_multi_host, } network_ref = self.network_api.db.network_create_safe( self.context.elevated(), network) def fake_fixed_ip_get_by_instance(ctxt, uuid): fixed_ip = [{'network_id': network_ref['id'], 'instance_uuid': FAKE_UUID, }] return fixed_ip self.stubs.Set(self.network_api.db, 'fixed_ip_get_by_instance', fake_fixed_ip_get_by_instance) instance = {'uuid': FAKE_UUID} result = self.network_api._is_multi_host(self.context, instance) self.assertEqual(is_multi_host, result) def test_is_multi_host_network_has_project_id(self): is_multi_host = random.choice([True, False]) network = {'project_id': self.context.project_id, 'multi_host': is_multi_host, } network_ref = self.network_api.db.network_create_safe( self.context.elevated(), network) def fake_fixed_ip_get_by_instance(ctxt, uuid): fixed_ip = [{'network_id': network_ref['id'], 'instance_uuid': FAKE_UUID, }] return fixed_ip self.stubs.Set(self.network_api.db, 'fixed_ip_get_by_instance', fake_fixed_ip_get_by_instance) instance = {'uuid': FAKE_UUID} result = self.network_api._is_multi_host(self.context, instance) self.assertEqual(is_multi_host, result) def test_network_disassociate_project(self): def fake_network_disassociate(ctx, network_id, disassociate_host, disassociate_project): self.assertEqual(network_id, 1) self.assertEqual(disassociate_host, False) self.assertEqual(disassociate_project, True) def fake_get(context, network_uuid): return {'id': 1} self.stubs.Set(self.network_api.db, 'network_disassociate', fake_network_disassociate) self.stubs.Set(self.network_api, 'get', fake_get) self.network_api.associate(self.context, FAKE_UUID, project=None) class TestUpdateInstanceCache(test.TestCase): def setUp(self): super(TestUpdateInstanceCache, self).setUp() self.context = context.get_admin_context() self.instance = {'uuid': FAKE_UUID} self.impl = self.mox.CreateMock(api.API) vifs = [network_model.VIF(id='super_vif')] self.nw_info = network_model.NetworkInfo(vifs) self.is_nw_info = mox.Func(lambda d: 'super_vif' in d['network_info']) def expect_cache_update(self, nw_info): self.mox.StubOutWithMock(db, 'instance_info_cache_update') db.instance_info_cache_update(self.context, self.instance['uuid'], nw_info) def test_update_nw_info_none(self): self.impl._get_instance_nw_info(self.context, self.instance)\ .AndReturn(self.nw_info) self.expect_cache_update(self.is_nw_info) self.mox.ReplayAll() api.update_instance_cache_with_nw_info(self.impl, self.context, self.instance, None) def test_update_nw_info_one_network(self): self.expect_cache_update(self.is_nw_info) self.mox.ReplayAll() api.update_instance_cache_with_nw_info(self.impl, self.context, self.instance, self.nw_info) def test_update_nw_info_empty_list(self): self.expect_cache_update({'network_info': '[]'}) self.mox.ReplayAll() api.update_instance_cache_with_nw_info(self.impl, self.context, self.instance, network_model.NetworkInfo([])) def test_decorator_return_object(self): @api.refresh_cache def func(self, context, instance): return network_model.NetworkInfo([]) self.expect_cache_update({'network_info': '[]'}) self.mox.ReplayAll() func(self.impl, self.context, self.instance) def test_decorator_return_none(self): @api.refresh_cache def func(self, context, instance): pass self.impl._get_instance_nw_info(self.context, self.instance)\ .AndReturn(self.nw_info) self.expect_cache_update(self.is_nw_info) self.mox.ReplayAll() func(self.impl, self.context, self.instance) nova-2014.1/nova/tests/network/test_ipam_lib.py0000664000175400017540000001067412323721477022705 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import mock from nova import context from nova import db from nova.network import nova_ipam_lib from nova import test from nova.tests.objects import test_fixed_ip from nova.tests.objects import test_network fake_vif = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'id': 1, 'address': '00:00:00:00:00:00', 'network_id': 123, 'instance_uuid': 'fake-uuid', 'uuid': 'fake-uuid-2', } class NeutronNovaIPAMTestCase(test.NoDBTestCase): def test_get_v4_ips_by_interface(self): fake_ips = [dict(test_fixed_ip.fake_fixed_ip, address='192.168.1.101'), dict(test_fixed_ip.fake_fixed_ip, address='192.168.1.102')] with contextlib.nested( mock.patch.object(db, 'virtual_interface_get_by_uuid', return_value=fake_vif), mock.patch.object(db, 'fixed_ips_by_virtual_interface', return_value=fake_ips) ): ipam_lib = nova_ipam_lib.NeutronNovaIPAMLib(None) v4_IPs = ipam_lib.get_v4_ips_by_interface(None, 'net_id', 'vif_id', 'project_id') self.assertEqual(['192.168.1.101', '192.168.1.102'], v4_IPs) def test_get_v4_ips_by_interface_bad_id(self): with contextlib.nested( mock.patch.object(db, 'virtual_interface_get_by_uuid', return_value=None), ): ipam_lib = nova_ipam_lib.NeutronNovaIPAMLib(None) v4_IPs = ipam_lib.get_v4_ips_by_interface(None, 'net_id', 'vif_id', 'project_id') self.assertEqual([], v4_IPs) def test_get_v6_ips_by_interface(self): class FakeContext(context.RequestContext): def elevated(self): pass net = dict(test_network.fake_network, cidr_v6='2001:db8::') with contextlib.nested( mock.patch.object(db, 'network_get_by_uuid', return_value=net), mock.patch.object(db, 'virtual_interface_get_by_uuid', return_value=fake_vif) ): ipam_lib = nova_ipam_lib.NeutronNovaIPAMLib(None) ctx = FakeContext('user_id', 'project_id') v6_IPs = ipam_lib.get_v6_ips_by_interface(ctx, 'net_id', 'vif_id', 'project_id') self.assertEqual(['2001:db8::200:ff:fe00:0'], v6_IPs) def test_get_v6_ips_by_interface_bad_id(self): class FakeContext(context.RequestContext): def elevated(self): pass net = dict(test_network.fake_network, cidr_v6='2001:db8::') with contextlib.nested( mock.patch.object(db, 'network_get_by_uuid', return_value=net), mock.patch.object(db, 'virtual_interface_get_by_uuid', return_value=None) ): ipam_lib = nova_ipam_lib.NeutronNovaIPAMLib(None) ctx = FakeContext('user_id', 'project_id') v6_IPs = ipam_lib.get_v6_ips_by_interface(ctx, 'net_id', 'vif_id', 'project_id') self.assertEqual([], v6_IPs) nova-2014.1/nova/tests/network/__init__.py0000664000175400017540000000117312323721477021623 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/CA/0000775000175400017540000000000012323722546016300 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/CA/cacert.pem0000664000175400017540000000200512323721477020243 0ustar jenkinsjenkins00000000000000-----BEGIN CERTIFICATE----- MIICyzCCAjSgAwIBAgIJANiqHZUcbScCMA0GCSqGSIb3DQEBBAUAME4xEjAQBgNV BAoTCU5PVkEgUk9PVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMK Q2FsaWZvcm5pYTELMAkGA1UEBhMCVVMwHhcNMTAwNTI4MDExOTI1WhcNMTEwNTI4 MDExOTI1WjBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWlu IFZpZXcxEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqG SIb3DQEBAQUAA4GNADCBiQKBgQDobUnq8rpXA/HQZ2Uu9Me3SlqCayz3ws2wtvFQ koWPUzpriIYPkpprz2EaVu07Zb9uJHvjcoY07nYntl4jR8S7PH4XZhlVFn8AQWzs iThU4KJF71UfVM00dDrarSgVpyOIcFXO3iUvLoJj7+RUPjrWdLuJoMqnhicgLeHZ LAZ8ewIDAQABo4GwMIGtMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFMh1RMlTVtt8 EdESYpsTU08r0FnpMH4GA1UdIwR3MHWAFMh1RMlTVtt8EdESYpsTU08r0FnpoVKk UDBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcx EzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTggkA2KodlRxtJwIwDQYJ KoZIhvcNAQEEBQADgYEAq+YCgflK36HCdodNu2ya3O6UDRUE2dW8n96tAOmvHqmR v38k8GIW0pjWDo+lZYnFmeJYd+QGcJl9fLzXxffV5k+rNCfr/gEYtznWLNUX7AZB b/VC7L+yK9qz08C8n51TslXaf3fUGkfkQxsvEP7+hi0qavdd/8eTbdheWahYwWg= -----END CERTIFICATE----- nova-2014.1/nova/tests/CA/private/0000775000175400017540000000000012323722546017752 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/CA/private/cakey.pem0000664000175400017540000000156712323721477021564 0ustar jenkinsjenkins00000000000000-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDobUnq8rpXA/HQZ2Uu9Me3SlqCayz3ws2wtvFQkoWPUzpriIYP kpprz2EaVu07Zb9uJHvjcoY07nYntl4jR8S7PH4XZhlVFn8AQWzsiThU4KJF71Uf VM00dDrarSgVpyOIcFXO3iUvLoJj7+RUPjrWdLuJoMqnhicgLeHZLAZ8ewIDAQAB AoGBANQonmZ2Nh2jniFrn/LiwULP/ho6Fov6J6N8+n1focaYZCUwM58XZRmv7KUM X/PuBnVVnDibm2HJodTSJM/zfODnGO15kdmJ9X23FkkdTyuvphO5tYF0ONARXdfX 9LbPcLYA14VSCZCKCye6mbv/xi0C/s7q6ZBoMl7XaeD9hgUxAkEA9lxQY/ZxcLV0 Ae5I2spBbtuXEGns11YnKnppc59RrAono1gaDeYY2WZRwztIcD6VtUv7qkzH6ubo shAG4fvnPQJBAPGFaDODs2ckPvxnILEbjpnZXGQqDCpQ3sVJ6nfu+qdAWS92ESNo Y6DC8zFjFaQFbKy6Jxr1VsvYDXhF8cmy7hcCQHkLElSLGWGPRdhNA268QTn+mlJu OPf0VHoCex1cAfzNYHxZJTP/AeaO501NK2I63cOd+aDK6M75dQtH5JnT8uECQQCg jVydkhk6oV+1jiCvW3BKWbIPa9w2bRgJ8n8JRzYc5Kvk3wm5jfVcsvvTgtip9mkt 0XmZdCpEy9T4dRasTGP1AkBMhShiVP7+P+SIQlZtSn8ckTt9G6cefEjxsv0kVFZe SjkUO0ZifahF8r3Q1eEUSzdXEvicEwONvcpc7MLwfSD7 -----END RSA PRIVATE KEY----- nova-2014.1/nova/tests/test_nova_manage.py0000664000175400017540000004106412323721477021710 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2011 Ilya Alekseyev # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures import StringIO import sys from nova.cmd import manage from nova import context from nova import db from nova import exception from nova.openstack.common.gettextutils import _ from nova import test from nova.tests.db import fakes as db_fakes from nova.tests.objects import test_network class FixedIpCommandsTestCase(test.TestCase): def setUp(self): super(FixedIpCommandsTestCase, self).setUp() db_fakes.stub_out_db_network_api(self.stubs) self.commands = manage.FixedIpCommands() def test_reserve(self): self.commands.reserve('192.168.0.100') address = db.fixed_ip_get_by_address(context.get_admin_context(), '192.168.0.100') self.assertEqual(address['reserved'], True) def test_reserve_nonexistent_address(self): self.assertEqual(2, self.commands.reserve('55.55.55.55')) def test_unreserve(self): self.commands.unreserve('192.168.0.100') address = db.fixed_ip_get_by_address(context.get_admin_context(), '192.168.0.100') self.assertEqual(address['reserved'], False) def test_unreserve_nonexistent_address(self): self.assertEqual(2, self.commands.unreserve('55.55.55.55')) def test_list(self): self.useFixture(fixtures.MonkeyPatch('sys.stdout', StringIO.StringIO())) self.commands.list() self.assertTrue(sys.stdout.getvalue().find('192.168.0.100') != -1) def test_list_just_one_host(self): def fake_fixed_ip_get_by_host(*args, **kwargs): return [db_fakes.fixed_ip_fields] self.useFixture(fixtures.MonkeyPatch( 'nova.db.fixed_ip_get_by_host', fake_fixed_ip_get_by_host)) self.useFixture(fixtures.MonkeyPatch('sys.stdout', StringIO.StringIO())) self.commands.list('banana') self.assertTrue(sys.stdout.getvalue().find('192.168.0.100') != -1) class FloatingIpCommandsTestCase(test.TestCase): def setUp(self): super(FloatingIpCommandsTestCase, self).setUp() db_fakes.stub_out_db_network_api(self.stubs) self.commands = manage.FloatingIpCommands() def test_address_to_hosts(self): def assert_loop(result, expected): for ip in result: self.assertIn(str(ip), expected) address_to_hosts = self.commands.address_to_hosts # /32 and /31 self.assertRaises(exception.InvalidInput, address_to_hosts, '192.168.100.1/32') self.assertRaises(exception.InvalidInput, address_to_hosts, '192.168.100.1/31') # /30 expected = ["192.168.100.%s" % i for i in range(1, 3)] result = address_to_hosts('192.168.100.0/30') self.assertTrue(len(list(result)) == 2) assert_loop(result, expected) # /29 expected = ["192.168.100.%s" % i for i in range(1, 7)] result = address_to_hosts('192.168.100.0/29') self.assertTrue(len(list(result)) == 6) assert_loop(result, expected) # /28 expected = ["192.168.100.%s" % i for i in range(1, 15)] result = address_to_hosts('192.168.100.0/28') self.assertTrue(len(list(result)) == 14) assert_loop(result, expected) # /16 result = address_to_hosts('192.168.100.0/16') self.assertTrue(len(list(result)) == 65534) # NOTE(dripton): I don't test /13 because it makes the test take 3s. # /12 gives over a million IPs, which is ridiculous. self.assertRaises(exception.InvalidInput, address_to_hosts, '192.168.100.1/12') class NetworkCommandsTestCase(test.TestCase): def setUp(self): super(NetworkCommandsTestCase, self).setUp() self.commands = manage.NetworkCommands() self.net = {'id': 0, 'label': 'fake', 'injected': False, 'cidr': '192.168.0.0/24', 'cidr_v6': 'dead:beef::/64', 'multi_host': False, 'gateway_v6': 'dead:beef::1', 'netmask_v6': '64', 'netmask': '255.255.255.0', 'bridge': 'fa0', 'bridge_interface': 'fake_fa0', 'gateway': '192.168.0.1', 'broadcast': '192.168.0.255', 'dns1': '8.8.8.8', 'dns2': '8.8.4.4', 'vlan': 200, 'vpn_public_address': '10.0.0.2', 'vpn_public_port': '2222', 'vpn_private_address': '192.168.0.2', 'dhcp_start': '192.168.0.3', 'project_id': 'fake_project', 'host': 'fake_host', 'uuid': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'} def fake_network_get_by_cidr(context, cidr): self.assertTrue(context.to_dict()['is_admin']) self.assertEqual(cidr, self.fake_net['cidr']) return db_fakes.FakeModel(dict(test_network.fake_network, **self.fake_net)) def fake_network_get_by_uuid(context, uuid): self.assertTrue(context.to_dict()['is_admin']) self.assertEqual(uuid, self.fake_net['uuid']) return db_fakes.FakeModel(dict(test_network.fake_network, **self.fake_net)) def fake_network_update(context, network_id, values): self.assertTrue(context.to_dict()['is_admin']) self.assertEqual(network_id, self.fake_net['id']) self.assertEqual(values, self.fake_update_value) self.fake_network_get_by_cidr = fake_network_get_by_cidr self.fake_network_get_by_uuid = fake_network_get_by_uuid self.fake_network_update = fake_network_update def test_create(self): def fake_create_networks(obj, context, **kwargs): self.assertTrue(context.to_dict()['is_admin']) self.assertEqual(kwargs['label'], 'Test') self.assertEqual(kwargs['cidr'], '10.2.0.0/24') self.assertEqual(kwargs['multi_host'], False) self.assertEqual(kwargs['num_networks'], 1) self.assertEqual(kwargs['network_size'], 256) self.assertEqual(kwargs['vlan_start'], 200) self.assertEqual(kwargs['vpn_start'], 2000) self.assertEqual(kwargs['cidr_v6'], 'fd00:2::/120') self.assertEqual(kwargs['gateway'], '10.2.0.1') self.assertEqual(kwargs['gateway_v6'], 'fd00:2::22') self.assertEqual(kwargs['bridge'], 'br200') self.assertEqual(kwargs['bridge_interface'], 'eth0') self.assertEqual(kwargs['dns1'], '8.8.8.8') self.assertEqual(kwargs['dns2'], '8.8.4.4') self.flags(network_manager='nova.network.manager.VlanManager') from nova.network import manager as net_manager self.stubs.Set(net_manager.VlanManager, 'create_networks', fake_create_networks) self.commands.create( label='Test', cidr='10.2.0.0/24', num_networks=1, network_size=256, multi_host='F', vlan_start=200, vpn_start=2000, cidr_v6='fd00:2::/120', gateway='10.2.0.1', gateway_v6='fd00:2::22', bridge='br200', bridge_interface='eth0', dns1='8.8.8.8', dns2='8.8.4.4', uuid='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa') def test_list(self): def fake_network_get_all(context): return [db_fakes.FakeModel(self.net)] self.stubs.Set(db, 'network_get_all', fake_network_get_all) output = StringIO.StringIO() sys.stdout = output self.commands.list() sys.stdout = sys.__stdout__ result = output.getvalue() _fmt = "\t".join(["%(id)-5s", "%(cidr)-18s", "%(cidr_v6)-15s", "%(dhcp_start)-15s", "%(dns1)-15s", "%(dns2)-15s", "%(vlan)-15s", "%(project_id)-15s", "%(uuid)-15s"]) head = _fmt % {'id': _('id'), 'cidr': _('IPv4'), 'cidr_v6': _('IPv6'), 'dhcp_start': _('start address'), 'dns1': _('DNS1'), 'dns2': _('DNS2'), 'vlan': _('VlanID'), 'project_id': _('project'), 'uuid': _("uuid")} body = _fmt % {'id': self.net['id'], 'cidr': self.net['cidr'], 'cidr_v6': self.net['cidr_v6'], 'dhcp_start': self.net['dhcp_start'], 'dns1': self.net['dns1'], 'dns2': self.net['dns2'], 'vlan': self.net['vlan'], 'project_id': self.net['project_id'], 'uuid': self.net['uuid']} answer = '%s\n%s\n' % (head, body) self.assertEqual(result, answer) def test_delete(self): self.fake_net = self.net self.fake_net['project_id'] = None self.fake_net['host'] = None self.stubs.Set(db, 'network_get_by_uuid', self.fake_network_get_by_uuid) def fake_network_delete_safe(context, network_id): self.assertTrue(context.to_dict()['is_admin']) self.assertEqual(network_id, self.fake_net['id']) self.stubs.Set(db, 'network_delete_safe', fake_network_delete_safe) self.commands.delete(uuid=self.fake_net['uuid']) def test_delete_by_cidr(self): self.fake_net = self.net self.fake_net['project_id'] = None self.fake_net['host'] = None self.stubs.Set(db, 'network_get_by_cidr', self.fake_network_get_by_cidr) def fake_network_delete_safe(context, network_id): self.assertTrue(context.to_dict()['is_admin']) self.assertEqual(network_id, self.fake_net['id']) self.stubs.Set(db, 'network_delete_safe', fake_network_delete_safe) self.commands.delete(fixed_range=self.fake_net['cidr']) def _test_modify_base(self, update_value, project, host, dis_project=None, dis_host=None): self.fake_net = self.net self.fake_update_value = update_value self.stubs.Set(db, 'network_get_by_cidr', self.fake_network_get_by_cidr) self.stubs.Set(db, 'network_update', self.fake_network_update) self.commands.modify(self.fake_net['cidr'], project=project, host=host, dis_project=dis_project, dis_host=dis_host) def test_modify_associate(self): self._test_modify_base(update_value={'project_id': 'test_project', 'host': 'test_host'}, project='test_project', host='test_host') def test_modify_unchanged(self): self._test_modify_base(update_value={}, project=None, host=None) def test_modify_disassociate(self): self._test_modify_base(update_value={'project_id': None, 'host': None}, project=None, host=None, dis_project=True, dis_host=True) class FlavorCommandsTestCase(test.TestCase): def setUp(self): super(FlavorCommandsTestCase, self).setUp() values = dict(name="test.small", memory_mb=220, vcpus=1, root_gb=16, ephemeral_gb=32, flavorid=105) ref = db.flavor_create(context.get_admin_context(), values) self.instance_type_name = ref["name"] self.instance_type_id = ref["id"] self.instance_type_flavorid = ref["flavorid"] self.set_key = manage.FlavorCommands().set_key self.unset_key = manage.FlavorCommands().unset_key def tearDown(self): db.flavor_destroy(context.get_admin_context(), "test.small") super(FlavorCommandsTestCase, self).tearDown() def _test_extra_specs_empty(self): empty_specs = {} actual_specs = db.flavor_extra_specs_get( context.get_admin_context(), self.instance_type_id) self.assertEqual(empty_specs, actual_specs) def test_extra_specs_set_unset(self): expected_specs = {'k1': 'v1'} self._test_extra_specs_empty() self.set_key(self.instance_type_name, "k1", "v1") actual_specs = db.flavor_extra_specs_get( context.get_admin_context(), self.instance_type_flavorid) self.assertEqual(expected_specs, actual_specs) self.unset_key(self.instance_type_name, "k1") self._test_extra_specs_empty() def test_extra_specs_update(self): expected_specs = {'k1': 'v1'} updated_specs = {'k1': 'v2'} self._test_extra_specs_empty() self.set_key(self.instance_type_name, "k1", "v1") actual_specs = db.flavor_extra_specs_get( context.get_admin_context(), self.instance_type_flavorid) self.assertEqual(expected_specs, actual_specs) self.set_key(self.instance_type_name, "k1", "v2") actual_specs = db.flavor_extra_specs_get( context.get_admin_context(), self.instance_type_flavorid) self.assertEqual(updated_specs, actual_specs) self.unset_key(self.instance_type_name, "k1") def test_extra_specs_multiple(self): two_items_extra_specs = {'k1': 'v1', 'k3': 'v3'} self._test_extra_specs_empty() self.set_key(self.instance_type_name, "k1", "v1") self.set_key(self.instance_type_name, "k3", "v3") actual_specs = db.flavor_extra_specs_get( context.get_admin_context(), self.instance_type_flavorid) self.assertEqual(two_items_extra_specs, actual_specs) self.unset_key(self.instance_type_name, "k1") self.unset_key(self.instance_type_name, "k3") class ProjectCommandsTestCase(test.TestCase): def setUp(self): super(ProjectCommandsTestCase, self).setUp() self.commands = manage.ProjectCommands() def test_quota(self): output = StringIO.StringIO() sys.stdout = output self.commands.quota(project_id='admin', key='instances', value='unlimited', ) sys.stdout = sys.__stdout__ result = output.getvalue() print_format = "%-36s %-10s" % ('instances', 'unlimited') self.assertEqual((print_format in result), True) def test_quota_update_invalid_key(self): self.assertEqual(2, self.commands.quota('admin', 'volumes1', '10')) class DBCommandsTestCase(test.TestCase): def setUp(self): super(DBCommandsTestCase, self).setUp() self.commands = manage.DbCommands() def test_archive_deleted_rows_negative(self): self.assertEqual(1, self.commands.archive_deleted_rows(-1)) class ServiceCommandsTestCase(test.TestCase): def setUp(self): super(ServiceCommandsTestCase, self).setUp() self.commands = manage.ServiceCommands() def test_service_enable_invalid_params(self): self.assertEqual(2, self.commands.enable('nohost', 'noservice')) def test_service_disable_invalid_params(self): self.assertEqual(2, self.commands.disable('nohost', 'noservice')) nova-2014.1/nova/tests/fakeguestfs.py0000664000175400017540000001067612323721510020676 0ustar jenkinsjenkins00000000000000# 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. class GuestFS(object): SUPPORT_CLOSE_ON_EXIT = True def __init__(self, **kwargs): if not self.SUPPORT_CLOSE_ON_EXIT and 'close_on_exit' in kwargs: raise TypeError('close_on_exit') self.kwargs = kwargs self.drives = [] self.running = False self.closed = False self.mounts = [] self.files = {} self.auginit = False self.root_mounted = False def launch(self): self.running = True def shutdown(self): self.running = False self.mounts = [] self.drives = [] def close(self): self.closed = True def add_drive_opts(self, file, *args, **kwargs): self.drives.append((file, kwargs['format'])) def inspect_os(self): return ["/dev/guestvgf/lv_root"] def inspect_get_mountpoints(self, dev): return [["/home", "/dev/mapper/guestvgf-lv_home"], ["/", "/dev/mapper/guestvgf-lv_root"], ["/boot", "/dev/vda1"]] def mount_options(self, options, device, mntpoint): if mntpoint == "/": self.root_mounted = True else: if not self.root_mounted: raise RuntimeError( "mount: %s: No such file or directory" % mntpoint) self.mounts.append((options, device, mntpoint)) def mkdir_p(self, path): if path not in self.files: self.files[path] = { "isdir": True, "gid": 100, "uid": 100, "mode": 0o700 } def read_file(self, path): if path not in self.files: self.files[path] = { "isdir": False, "content": "Hello World", "gid": 100, "uid": 100, "mode": 0o700 } return self.files[path]["content"] def write(self, path, content): if path not in self.files: self.files[path] = { "isdir": False, "content": "Hello World", "gid": 100, "uid": 100, "mode": 0o700 } self.files[path]["content"] = content def write_append(self, path, content): if path not in self.files: self.files[path] = { "isdir": False, "content": "Hello World", "gid": 100, "uid": 100, "mode": 0o700 } self.files[path]["content"] = self.files[path]["content"] + content def stat(self, path): if path not in self.files: raise RuntimeError("No such file: " + path) return self.files[path]["mode"] def chown(self, uid, gid, path): if path not in self.files: raise RuntimeError("No such file: " + path) if uid != -1: self.files[path]["uid"] = uid if gid != -1: self.files[path]["gid"] = gid def chmod(self, mode, path): if path not in self.files: raise RuntimeError("No such file: " + path) self.files[path]["mode"] = mode def aug_init(self, root, flags): self.auginit = True def aug_close(self): self.auginit = False def aug_get(self, cfgpath): if not self.auginit: raise RuntimeError("Augeus not initialized") if cfgpath == "/files/etc/passwd/root/uid": return 0 elif cfgpath == "/files/etc/passwd/fred/uid": return 105 elif cfgpath == "/files/etc/passwd/joe/uid": return 110 elif cfgpath == "/files/etc/group/root/gid": return 0 elif cfgpath == "/files/etc/group/users/gid": return 500 elif cfgpath == "/files/etc/group/admins/gid": return 600 raise RuntimeError("Unknown path %s", cfgpath) nova-2014.1/nova/tests/integrated/0000775000175400017540000000000012323722546020143 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/0000775000175400017540000000000012323722546020473 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_sample_base.py0000664000175400017540000000567412323721477024167 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os from oslo.config import cfg from nova.api.openstack import API_V3_CORE_EXTENSIONS # noqa from nova import test from nova.tests import fake_network from nova.tests import fake_utils from nova.tests.integrated import api_samples_test_base CONF = cfg.CONF class ApiSampleTestBaseV3(api_samples_test_base.ApiSampleTestBase): _api_version = 'v3' sample_dir = None extra_extensions_to_load = None def setUp(self): extends = [] self.flags(use_ipv6=False, osapi_compute_link_prefix=self._get_host(), osapi_glance_link_prefix=self._get_glance_host()) if not self.all_extensions: # Set the whitelist to ensure only the extensions we are # interested in are loaded so the api samples don't include # data from extensions we are not interested in whitelist = API_V3_CORE_EXTENSIONS.copy() if self.extension_name: whitelist.add(self.extension_name) if self.extra_extensions_to_load: whitelist.update(set(self.extra_extensions_to_load)) CONF.set_override('extensions_whitelist', whitelist, 'osapi_v3') super(ApiSampleTestBaseV3, self).setUp() self.useFixture(test.SampleNetworks(host=self.network.host)) fake_network.stub_compute_with_ips(self.stubs) fake_utils.stub_out_utils_spawn_n(self.stubs) self.generate_samples = os.getenv('GENERATE_SAMPLES') is not None @classmethod def _get_sample_path(cls, name, dirname, suffix=''): parts = [dirname] parts.append('api_samples') if cls.all_extensions: parts.append('all_extensions') elif cls.sample_dir: parts.append(cls.sample_dir) elif cls.extension_name: parts.append(cls.extension_name) parts.append(name + "." + cls.ctype + suffix) return os.path.join(*parts) @classmethod def _get_sample(cls, name): dirname = os.path.dirname(os.path.abspath(__file__)) dirname = os.path.normpath(os.path.join(dirname, "../../../../doc/v3")) return cls._get_sample_path(name, dirname) @classmethod def _get_template(cls, name): dirname = os.path.dirname(os.path.abspath(__file__)) return cls._get_sample_path(name, dirname, suffix='.tpl') nova-2014.1/nova/tests/integrated/v3/test_attach_interfaces.py0000664000175400017540000001570612323721477025566 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.compute import api as compute_api from nova import exception from nova.network import api as network_api from nova.tests import fake_network_cache_model from nova.tests.integrated.v3 import test_servers class AttachInterfacesSampleJsonTest(test_servers.ServersSampleBase): extension_name = 'os-attach-interfaces' def setUp(self): super(AttachInterfacesSampleJsonTest, self).setUp() def fake_list_ports(self, *args, **kwargs): uuid = kwargs.get('device_id', None) if not uuid: raise exception.InstanceNotFound(instance_id=None) port_data = { "id": "ce531f90-199f-48c0-816c-13e38010b442", "network_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "admin_state_up": True, "status": "ACTIVE", "mac_address": "fa:16:3e:4c:2c:30", "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "device_id": uuid, } ports = {'ports': [port_data]} return ports def fake_show_port(self, context, port_id=None): if not port_id: raise exception.PortNotFound(port_id=None) port_data = { "id": port_id, "network_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "admin_state_up": True, "status": "ACTIVE", "mac_address": "fa:16:3e:4c:2c:30", "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "device_id": 'bece68a3-2f8b-4e66-9092-244493d6aba7', } port = {'port': port_data} return port def fake_attach_interface(self, context, instance, network_id, port_id, requested_ip='192.168.1.3'): if not network_id: network_id = "fake_net_uuid" if not port_id: port_id = "fake_port_uuid" vif = fake_network_cache_model.new_vif() vif['id'] = port_id vif['network']['id'] = network_id vif['network']['subnets'][0]['ips'][0] = requested_ip return vif def fake_detach_interface(self, context, instance, port_id): pass self.stubs.Set(network_api.API, 'list_ports', fake_list_ports) self.stubs.Set(network_api.API, 'show_port', fake_show_port) self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) self.flags(neutron_auth_strategy=None) self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) def generalize_subs(self, subs, vanilla_regexes): subs['subnet_id'] = vanilla_regexes['uuid'] subs['net_id'] = vanilla_regexes['uuid'] subs['port_id'] = vanilla_regexes['uuid'] subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' subs['ip_address'] = vanilla_regexes['ip'] return subs def test_list_interfaces(self): instance_uuid = self._post_server() response = self._do_get('servers/%s/os-attach-interfaces' % instance_uuid) subs = { 'ip_address': '192.168.1.3', 'subnet_id': 'f8a6e8f8-c2ec-497c-9f23-da9616de54ef', 'mac_addr': 'fa:16:3e:4c:2c:30', 'net_id': '3cb9bc59-5699-4588-a4b1-b87f96708bc6', 'port_id': 'ce531f90-199f-48c0-816c-13e38010b442', 'port_state': 'ACTIVE' } self._verify_response('attach-interfaces-list-resp', subs, response, 200) def _stub_show_for_instance(self, instance_uuid, port_id): show_port = network_api.API().show_port(None, port_id) show_port['port']['device_id'] = instance_uuid self.stubs.Set(network_api.API, 'show_port', lambda *a, **k: show_port) def test_show_interfaces(self): instance_uuid = self._post_server() port_id = 'ce531f90-199f-48c0-816c-13e38010b442' self._stub_show_for_instance(instance_uuid, port_id) response = self._do_get('servers/%s/os-attach-interfaces/%s' % (instance_uuid, port_id)) subs = { 'ip_address': '192.168.1.3', 'subnet_id': 'f8a6e8f8-c2ec-497c-9f23-da9616de54ef', 'mac_addr': 'fa:16:3e:4c:2c:30', 'net_id': '3cb9bc59-5699-4588-a4b1-b87f96708bc6', 'port_id': port_id, 'port_state': 'ACTIVE' } self._verify_response('attach-interfaces-show-resp', subs, response, 200) def test_create_interfaces(self, instance_uuid=None): if instance_uuid is None: instance_uuid = self._post_server() subs = { 'net_id': '3cb9bc59-5699-4588-a4b1-b87f96708bc6', 'port_id': 'ce531f90-199f-48c0-816c-13e38010b442', 'subnet_id': 'f8a6e8f8-c2ec-497c-9f23-da9616de54ef', 'ip_address': '192.168.1.3', 'port_state': 'ACTIVE', 'mac_addr': 'fa:16:3e:4c:2c:30', } self._stub_show_for_instance(instance_uuid, subs['port_id']) response = self._do_post('servers/%s/os-attach-interfaces' % instance_uuid, 'attach-interfaces-create-req', subs) subs.update(self._get_regexes()) self._verify_response('attach-interfaces-create-resp', subs, response, 200) def test_delete_interfaces(self): instance_uuid = self._post_server() port_id = 'ce531f90-199f-48c0-816c-13e38010b442' response = self._do_delete('servers/%s/os-attach-interfaces/%s' % (instance_uuid, port_id)) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') nova-2014.1/nova/tests/integrated/v3/test_lock_server.py0000664000175400017540000000307612323721477024432 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class LockServerSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-lock-server" def setUp(self): """setUp Method for LockServer api samples extension This method creates the server that will be used in each tests """ super(LockServerSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_post_lock_server(self): # Get api samples to lock server request. response = self._do_post('servers/%s/action' % self.uuid, 'lock-server', {}) self.assertEqual(202, response.status) def test_post_unlock_server(self): # Get api samples to unlock server request. self.test_post_lock_server() response = self._do_post('servers/%s/action' % self.uuid, 'unlock-server', {}) self.assertEqual(202, response.status) nova-2014.1/nova/tests/integrated/v3/test_admin_actions.py0000664000175400017540000000356512323721477024727 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class AdminActionsSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-admin-actions" def setUp(self): """setUp Method for AdminActions api samples extension This method creates the server that will be used in each tests """ super(AdminActionsSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_post_reset_network(self): # Get api samples to reset server network request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-reset-network', {}) self.assertEqual(response.status, 202) def test_post_inject_network_info(self): # Get api samples to inject network info request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-inject-network-info', {}) self.assertEqual(response.status, 202) def test_post_reset_state(self): # get api samples to server reset state request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-reset-server-state', {}) self.assertEqual(response.status, 202) nova-2014.1/nova/tests/integrated/v3/test_extended_server_attributes.py0000664000175400017540000000305212323721477027542 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ExtendedServerAttributesJsonTest(test_servers.ServersSampleBase): extension_name = "os-extended-server-attributes" def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['instance_name'] = 'instance-\d{8}' subs['hypervisor_hostname'] = r'[\w\.\-]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['instance_name'] = 'instance-\d{8}' subs['hypervisor_hostname'] = r'[\w\.\-]+' self._verify_response('servers-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_flavor_rxtx.py0000664000175400017540000000326612323721477024473 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class FlavorRxtxJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = 'os-flavor-rxtx' def test_flavor_rxtx_get(self): flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = { 'flavor_id': flavor_id, 'flavor_name': 'm1.tiny' } subs.update(self._get_regexes()) self._verify_response('flavor-rxtx-get-resp', subs, response, 200) def test_flavors_rxtx_detail(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavor-rxtx-list-resp', subs, response, 200) def test_flavors_rxtx_create(self): subs = { 'flavor_id': 100, 'flavor_name': 'flavortest' } response = self._do_post('flavors', 'flavor-rxtx-post-req', subs) subs.update(self._get_regexes()) self._verify_response('flavor-rxtx-post-resp', subs, response, 201) nova-2014.1/nova/tests/integrated/v3/test_evacuate.py0000664000175400017540000000447212323721477023712 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.compute import api as compute_api from nova.compute import manager as compute_manager from nova.servicegroup import api as service_group_api from nova.tests.integrated.v3 import test_servers class EvacuateJsonTest(test_servers.ServersSampleBase): extension_name = "os-evacuate" def test_server_evacuate(self): uuid = self._post_server() req_subs = { 'host': self.compute.host, "adminPass": "MySecretPass", "onSharedStorage": 'False' } def fake_service_is_up(self, service): """Simulate validation of instance host is down.""" return False def fake_service_get_by_compute_host(self, context, host): """Simulate that given host is a valid host.""" return { 'host_name': host, 'service': 'compute', 'zone': 'nova' } def fake_check_instance_exists(self, context, instance): """Simulate validation of instance does not exist.""" return False self.stubs.Set(service_group_api.API, 'service_is_up', fake_service_is_up) self.stubs.Set(compute_api.HostAPI, 'service_get_by_compute_host', fake_service_get_by_compute_host) self.stubs.Set(compute_manager.ComputeManager, '_check_instance_exists', fake_check_instance_exists) response = self._do_post('servers/%s/action' % uuid, 'server-evacuate-req', req_subs) subs = self._get_regexes() self._verify_response('server-evacuate-resp', subs, response, 202) nova-2014.1/nova/tests/integrated/v3/test_security_groups.py0000664000175400017540000000427112323721477025360 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.network.security_group import neutron_driver from nova.tests.integrated.v3 import test_servers def fake_get(*args, **kwargs): nova_group = {} nova_group['id'] = 'fake' nova_group['description'] = '' nova_group['name'] = 'test' nova_group['project_id'] = 'fake' nova_group['rules'] = [] return nova_group def fake_get_instances_security_groups_bindings(self, context, servers): result = {} for s in servers: result[s.get('id')] = [{'name': 'test'}] return result class SecurityGroupsJsonTest(test_servers.ServersSampleBase): extension_name = 'os-security-groups' def setUp(self): self.flags(security_group_api=('neutron')) super(SecurityGroupsJsonTest, self).setUp() self.stubs.Set(neutron_driver.SecurityGroupAPI, 'get', fake_get) self.stubs.Set(neutron_driver.SecurityGroupAPI, 'get_instances_security_groups_bindings', fake_get_instances_security_groups_bindings) def test_server_create(self): self._post_server() def test_server_get(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_server_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_availability_zone.py0000664000175400017540000000375012323721510025604 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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 oslo.config import cfg from nova.tests.integrated.v3 import test_servers CONF = cfg.CONF CONF.import_opt('manager', 'nova.cells.opts', group='cells') class AvailabilityZoneJsonTest(test_servers.ServersSampleBase): extension_name = "os-availability-zone" def _setup_services(self): self.conductor = self.start_service('conductor', host='conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute', host='compute') self.cert = self.start_service('cert', host='cert') self.consoleauth = self.start_service('consoleauth', host='consoleauth') self.network = self.start_service('network', host='network') self.scheduler = self.start_service('scheduler', host='scheduler') self.cells = self.start_service('cells', host='cells', manager=CONF.cells.manager) def test_availability_zone_list(self): response = self._do_get('os-availability-zone') self._verify_response('availability-zone-list-resp', {}, response, 200) def test_availability_zone_detail(self): response = self._do_get('os-availability-zone/detail') self._verify_response('availability-zone-detail-resp', {}, response, 200) def test_availability_zone_post(self): self._post_server() nova-2014.1/nova/tests/integrated/v3/test_pci.py0000664000175400017540000001515512323721477022670 0ustar jenkinsjenkins00000000000000# Copyright 2013 Intel. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova.openstack.common import jsonutils from nova.tests.integrated.v3 import api_sample_base from nova.tests.integrated.v3 import test_servers fake_db_dev_1 = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 1, 'compute_node_id': 1, 'address': '0000:04:10.0', 'vendor_id': '8086', 'product_id': '1520', 'dev_type': 'type-VF', 'status': 'available', 'dev_id': 'pci_0000_04_10_0', 'label': 'label_8086_1520', 'instance_uuid': '69ba1044-0766-4ec0-b60d-09595de034a1', 'extra_info': '{"key1": "value1", "key2": "value2"}' } fake_db_dev_2 = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 2, 'compute_node_id': 1, 'address': '0000:04:10.1', 'vendor_id': '8086', 'product_id': '1520', 'dev_type': 'type-VF', 'status': 'available', 'dev_id': 'pci_0000_04_10_1', 'label': 'label_8086_1520', 'instance_uuid': 'd5b446a6-a1b4-4d01-b4f0-eac37b3a62fc', 'extra_info': '{"key3": "value3", "key4": "value4"}' } class ExtendedServerPciSampleJsonTest(test_servers.ServersSampleBase): extension_name = "os-pci" def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedHyervisorPciSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extra_extensions_to_load = ['os-hypervisors'] extension_name = 'os-pci' def setUp(self): super(ExtendedHyervisorPciSampleJsonTest, self).setUp() self.fake_compute_node = {"cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "1.1.1.1", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": {"host": '043b3cacf6f34c90a724' '5151fc8ebcda'}, "vcpus": 1, "vcpus_used": 0, "service_id": 2, "pci_stats": [ {"count": 5, "vendor_id": "8086", "product_id": "1520", "keya": "valuea", "extra_info": { "phys_function": '[["0x0000", ' '"0x04", "0x00",' ' "0x1"]]', "key1": "value1"}}]} def test_pci_show(self): def fake_compute_node_get(context, id): self.fake_compute_node['pci_stats'] = jsonutils.dumps( self.fake_compute_node['pci_stats']) return self.fake_compute_node self.stubs.Set(db, 'compute_node_get', fake_compute_node_get) hypervisor_id = 1 response = self._do_get('os-hypervisors/%s' % hypervisor_id) subs = { 'hypervisor_id': hypervisor_id, } subs.update(self._get_regexes()) self._verify_response('hypervisors-pci-show-resp', subs, response, 200) def test_pci_detail(self): def fake_compute_node_get_all(context): self.fake_compute_node['pci_stats'] = jsonutils.dumps( self.fake_compute_node['pci_stats']) return [self.fake_compute_node] self.stubs.Set(db, 'compute_node_get_all', fake_compute_node_get_all) hypervisor_id = 1 subs = { 'hypervisor_id': hypervisor_id } response = self._do_get('os-hypervisors/detail') subs.update(self._get_regexes()) self._verify_response('hypervisors-pci-detail-resp', subs, response, 200) class PciSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-pci" def _fake_pci_device_get_by_id(self, context, id): return fake_db_dev_1 def _fake_pci_device_get_all_by_node(self, context, id): return [fake_db_dev_1, fake_db_dev_2] def test_pci_show(self): self.stubs.Set(db, 'pci_device_get_by_id', self._fake_pci_device_get_by_id) response = self._do_get('os-pci/1') subs = self._get_regexes() self._verify_response('pci-show-resp', subs, response, 200) def test_pci_index(self): self.stubs.Set(db, 'pci_device_get_all_by_node', self._fake_pci_device_get_all_by_node) response = self._do_get('os-pci') subs = self._get_regexes() self._verify_response('pci-index-resp', subs, response, 200) def test_pci_detail(self): self.stubs.Set(db, 'pci_device_get_all_by_node', self._fake_pci_device_get_all_by_node) response = self._do_get('os-pci/detail') subs = self._get_regexes() self._verify_response('pci-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_hypervisors.py0000664000175400017540000000530012323721477024501 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.compute import api as compute_api from nova.tests.integrated.v3 import api_sample_base class HypervisorsSampleJsonTests(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-hypervisors" def test_hypervisors_list(self): response = self._do_get('os-hypervisors') self._verify_response('hypervisors-list-resp', {}, response, 200) def test_hypervisors_search(self): response = self._do_get('os-hypervisors/search?query=fake') self._verify_response('hypervisors-search-resp', {}, response, 200) def test_hypervisors_servers(self): response = self._do_get('os-hypervisors/1/servers') self._verify_response('hypervisors-servers-resp', {}, response, 200) def test_hypervisors_detail(self): hypervisor_id = 1 subs = { 'hypervisor_id': hypervisor_id } response = self._do_get('os-hypervisors/detail') subs.update(self._get_regexes()) self._verify_response('hypervisors-detail-resp', subs, response, 200) def test_hypervisors_show(self): hypervisor_id = 1 subs = { 'hypervisor_id': hypervisor_id } response = self._do_get('os-hypervisors/%s' % hypervisor_id) subs.update(self._get_regexes()) self._verify_response('hypervisors-show-resp', subs, response, 200) def test_hypervisors_statistics(self): response = self._do_get('os-hypervisors/statistics') self._verify_response('hypervisors-statistics-resp', {}, response, 200) def test_hypervisors_uptime(self): def fake_get_host_uptime(self, context, hyp): return (" 08:32:11 up 93 days, 18:25, 12 users, load average:" " 0.20, 0.12, 0.14") self.stubs.Set(compute_api.HostAPI, 'get_host_uptime', fake_get_host_uptime) hypervisor_id = 1 response = self._do_get('os-hypervisors/%s/uptime' % hypervisor_id) subs = { 'hypervisor_id': hypervisor_id, } self._verify_response('hypervisors-uptime-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_migrate_server.py0000664000175400017540000000524012323721477025125 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.conductor import manager as conductor_manager from nova import db from nova.tests.integrated.v3 import test_servers class MigrateServerSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-migrate-server" ctype = 'json' def setUp(self): """setUp Method for MigrateServer api samples extension This method creates the server that will be used in each tests """ super(MigrateServerSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_post_migrate(self): # Get api samples to migrate server request. response = self._do_post('servers/%s/action' % self.uuid, 'migrate-server', {}) self.assertEqual(202, response.status) def test_post_live_migrate_server(self): # Get api samples to server live migrate request. def fake_live_migrate(_self, context, instance, scheduler_hint, block_migration, disk_over_commit): self.assertEqual(self.uuid, instance["uuid"]) host = scheduler_hint["host"] self.assertEqual(self.compute.host, host) self.stubs.Set(conductor_manager.ComputeTaskManager, '_live_migrate', fake_live_migrate) def fake_get_compute(context, host): service = dict(host=host, binary='nova-compute', topic='compute', report_count=1, updated_at='foo', hypervisor_type='bar', hypervisor_version='1', disabled=False) return {'compute_node': [service]} self.stubs.Set(db, "service_get_by_compute_host", fake_get_compute) response = self._do_post('servers/%s/action' % self.uuid, 'live-migrate-server', {'hostname': self.compute.host}) self.assertEqual(202, response.status) nova-2014.1/nova/tests/integrated/v3/test_flavor_manage.py0000664000175400017540000000305212323721477024707 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class FlavorManageSampleJsonTests(api_sample_base.ApiSampleTestBaseV3): extension_name = 'flavor-manage' def _create_flavor(self): """Create a flavor.""" subs = { 'flavor_id': 10, 'flavor_name': "test_flavor" } response = self._do_post("flavors", "flavor-create-post-req", subs) subs.update(self._get_regexes()) self._verify_response("flavor-create-post-resp", subs, response, 201) def test_create_flavor(self): # Get api sample to create a flavor. self._create_flavor() def test_delete_flavor(self): # Get api sample to delete a flavor. self._create_flavor() response = self._do_delete("flavors/10") self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') nova-2014.1/nova/tests/integrated/v3/test_servers.py0000664000175400017540000001364412323721477023607 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.compute import api as compute_api from nova.tests.image import fake from nova.tests.integrated.v3 import api_sample_base class ServersSampleBase(api_sample_base.ApiSampleTestBaseV3): def _post_server(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'glance_host': self._get_glance_host() } response = self._do_post('servers', 'server-post-req', subs) subs = self._get_regexes() return self._verify_response('server-post-resp', subs, response, 202) class ServersSampleJsonTest(ServersSampleBase): sample_dir = 'servers' def test_servers_post(self): return self._post_server() def test_servers_get(self): uuid = self.test_servers_post() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['hypervisor_hostname'] = r'[\w\.\-]+' subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('server-get-resp', subs, response, 200) def test_servers_list(self): uuid = self._post_server() response = self._do_get('servers') subs = self._get_regexes() subs['id'] = uuid self._verify_response('servers-list-resp', subs, response, 200) def test_servers_details(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['hypervisor_hostname'] = r'[\w\.\-]+' subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('servers-details-resp', subs, response, 200) class ServersSampleAllExtensionJsonTest(ServersSampleJsonTest): all_extensions = True class ServersActionsJsonTest(ServersSampleBase): sample_dir = 'servers' def _test_server_action(self, uuid, action, subs={}, resp_tpl=None, code=202): subs.update({'action': action, 'glance_host': self._get_glance_host()}) response = self._do_post('servers/%s/action' % uuid, 'server-action-%s' % action.replace('_', '-'), subs) if resp_tpl: subs.update(self._get_regexes()) self._verify_response(resp_tpl, subs, response, code) else: self.assertEqual(response.status, code) self.assertEqual(response.read(), "") def test_server_reboot_hard(self): uuid = self._post_server() self._test_server_action(uuid, "reboot", {"type": "HARD"}) def test_server_reboot_soft(self): uuid = self._post_server() self._test_server_action(uuid, "reboot", {"type": "SOFT"}) def test_server_rebuild(self): uuid = self._post_server() image = fake.get_valid_image_id() subs = {'host': self._get_host(), 'uuid': image, 'name': 'foobar', 'pass': 'seekr3t', 'hostid': '[a-f0-9]+', } self._test_server_action(uuid, 'rebuild', subs, 'server-action-rebuild-resp') def _test_server_rebuild_preserve_ephemeral(self, value): uuid = self._post_server() image = fake.get_valid_image_id() subs = {'host': self._get_host(), 'uuid': image, 'name': 'foobar', 'pass': 'seekr3t', 'hostid': '[a-f0-9]+', 'preserve_ephemeral': str(value).lower(), 'action': 'rebuild', 'glance_host': self._get_glance_host(), } def fake_rebuild(self_, context, instance, image_href, admin_password, files_to_inject=None, **kwargs): self.assertEqual(kwargs['preserve_ephemeral'], value) self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild) response = self._do_post('servers/%s/action' % uuid, 'server-action-rebuild-preserve-ephemeral', subs) self.assertEqual(response.status, 202) def test_server_rebuild_preserve_ephemeral_true(self): self._test_server_rebuild_preserve_ephemeral(True) def test_server_rebuild_preserve_ephemeral_false(self): self._test_server_rebuild_preserve_ephemeral(False) def test_server_resize(self): self.flags(allow_resize_to_same_host=True) uuid = self._post_server() self._test_server_action(uuid, "resize", {"id": 2, "host": self._get_host()}) return uuid def test_server_revert_resize(self): uuid = self.test_server_resize() self._test_server_action(uuid, "revert_resize") def test_server_confirm_resize(self): uuid = self.test_server_resize() self._test_server_action(uuid, "confirm_resize") def test_server_create_image(self): uuid = self._post_server() self._test_server_action(uuid, 'create_image', {'name': 'foo-image'}) nova-2014.1/nova/tests/integrated/v3/test_remote_consoles.py0000664000175400017540000000465712323721477025322 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ConsolesSampleJsonTests(test_servers.ServersSampleBase): extension_name = "os-remote-consoles" def setUp(self): super(ConsolesSampleJsonTests, self).setUp() self.flags(vnc_enabled=True) self.flags(enabled=True, group='spice') self.flags(enabled=True, group='rdp') def test_get_vnc_console(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'get-vnc-console-post-req', {'action': 'os-getVNCConsole'}) subs = self._get_regexes() subs["url"] = \ "((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)" self._verify_response('get-vnc-console-post-resp', subs, response, 200) def test_get_spice_console(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'get-spice-console-post-req', {'action': 'os-getSPICEConsole'}) subs = self._get_regexes() subs["url"] = \ "((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)" self._verify_response('get-spice-console-post-resp', subs, response, 200) def test_get_rdp_console(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'get-rdp-console-post-req', {'action': 'os-getRDPConsole'}) subs = self._get_regexes() subs["url"] = \ "((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)" self._verify_response('get-rdp-console-post-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_hosts.py0000664000175400017540000000446112323721477023253 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class HostsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-hosts" def test_host_startup(self): response = self._do_get('os-hosts/%s/startup' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-startup', subs, response, 200) def test_host_reboot(self): response = self._do_get('os-hosts/%s/reboot' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-reboot', subs, response, 200) def test_host_shutdown(self): response = self._do_get('os-hosts/%s/shutdown' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-shutdown', subs, response, 200) def test_host_maintenance(self): response = self._do_put('os-hosts/%s' % self.compute.host, 'host-put-maintenance-req', {}) subs = self._get_regexes() self._verify_response('host-put-maintenance-resp', subs, response, 200) def test_host_get(self): response = self._do_get('os-hosts/%s' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-resp', subs, response, 200) def test_hosts_list(self): response = self._do_get('os-hosts') subs = self._get_regexes() self._verify_response('hosts-list-resp', subs, response, 200) def test_hosts_list_compute_service(self): response = self._do_get('os-hosts?service=compute') subs = self._get_regexes() self._verify_response('hosts-list-compute-service-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_config_drive.py0000664000175400017540000000357012323721477024551 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.api.openstack import fakes from nova.tests.image import fake from nova.tests.integrated.v3 import test_servers class ConfigDriveSampleJsonTest(test_servers.ServersSampleBase): extension_name = 'os-config-drive' def setUp(self): super(ConfigDriveSampleJsonTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) fake.stub_out_image_service(self.stubs) def test_config_drive_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' # config drive can be a string for True or empty value for False subs['cdrive'] = '.*' self._verify_response('server-config-drive-get-resp', subs, response, 200) def test_config_drive_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' # config drive can be a string for True or empty value for False subs['cdrive'] = '.*' self._verify_response('servers-config-drive-details-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_servers_ips.py0000664000175400017540000000255412323721477024460 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ServersIpsJsonTest(test_servers.ServersSampleBase): extends_name = 'core_only' sample_dir = 'server-ips' def test_get(self): # Test getting a server's IP information. uuid = self._post_server() response = self._do_get('servers/%s/ips' % uuid) subs = self._get_regexes() self._verify_response('server-ips-resp', subs, response, 200) def test_get_by_network(self): # Test getting a server's IP information by network id. uuid = self._post_server() response = self._do_get('servers/%s/ips/private' % uuid) subs = self._get_regexes() self._verify_response('server-ips-network-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_extended_volumes.py0000664000175400017540000001515312323721477025465 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.compute import api as compute_api from nova.compute import manager as compute_manager from nova import context from nova import db from nova.objects import block_device as block_device_obj from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests.integrated.v3 import test_servers from nova.volume import cinder class ExtendedVolumesSampleJsonTests(test_servers.ServersSampleBase): extension_name = "os-extended-volumes" def _stub_compute_api_get_instance_bdms(self, server_id): def fake_bdms_get_all_by_instance(context, instance_uuid, use_slave=False): bdms = [ fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'volume_id': 'a26887c6-c47b-4654-abb5-dfadf7d3f803', 'instance_uuid': server_id, 'source_type': 'volume', 'destination_type': 'volume', 'device_name': '/dev/sdd'}), fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'volume_id': 'a26887c6-c47b-4654-abb5-dfadf7d3f804', 'instance_uuid': server_id, 'source_type': 'volume', 'destination_type': 'volume', 'device_name': '/dev/sdc'}) ] return bdms self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_bdms_get_all_by_instance) def _stub_compute_api_get(self): def fake_compute_api_get(self, context, instance_id, **kwargs): want_objects = kwargs.get('want_objects') if want_objects: return fake_instance.fake_instance_obj( context, **{'uuid': instance_id}) else: return {'uuid': instance_id} self.stubs.Set(compute_api.API, 'get', fake_compute_api_get) def test_show(self): uuid = self._post_server() self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fakes.stub_bdm_get_all_by_instance) response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fakes.stub_bdm_get_all_by_instance) response = self._do_get('servers/detail') subs = self._get_regexes() subs['id'] = uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) def test_attach_volume(self): device_name = '/dev/vdd' disk_bus = 'ide' device_type = 'cdrom' self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) self.stubs.Set(cinder.API, 'check_attach', lambda *a, **k: None) self.stubs.Set(cinder.API, 'reserve_volume', lambda *a, **k: None) self.stubs.Set(compute_manager.ComputeManager, "reserve_block_device_name", lambda *a, **k: device_name) self.stubs.Set(compute_manager.ComputeManager, 'attach_volume', lambda *a, **k: None) self.stubs.Set(block_device_obj.BlockDeviceMapping, 'get_by_volume_id', classmethod(lambda *a, **k: None)) volume = fakes.stub_volume_get(None, context.get_admin_context(), 'a26887c6-c47b-4654-abb5-dfadf7d3f803') subs = { 'volume_id': volume['id'], 'device': device_name, 'disk_bus': 'ide', 'device_type': 'cdrom' } server_id = self._post_server() response = self._do_post('servers/%s/action' % server_id, 'attach-volume-req', subs) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_detach_volume(self): server_id = self._post_server() attach_id = "a26887c6-c47b-4654-abb5-dfadf7d3f803" self._stub_compute_api_get_instance_bdms(server_id) self._stub_compute_api_get() self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) self.stubs.Set(compute_api.API, 'detach_volume', lambda *a, **k: None) subs = { 'volume_id': attach_id, } response = self._do_post('servers/%s/action' % server_id, 'detach-volume-req', subs) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_swap_volume(self): server_id = self._post_server() old_volume_id = "a26887c6-c47b-4654-abb5-dfadf7d3f803" old_new_volume = 'a26887c6-c47b-4654-abb5-dfadf7d3f805' self._stub_compute_api_get_instance_bdms(server_id) def stub_volume_get(self, context, volume_id): if volume_id == old_volume_id: return fakes.stub_volume(volume_id, instance_uuid=server_id) else: return fakes.stub_volume(volume_id, instance_uuid=None, attach_status='detached') self.stubs.Set(cinder.API, 'get', stub_volume_get) self.stubs.Set(cinder.API, 'begin_detaching', lambda *a, **k: None) self.stubs.Set(cinder.API, 'check_attach', lambda *a, **k: None) self.stubs.Set(cinder.API, 'check_detach', lambda *a, **k: None) self.stubs.Set(cinder.API, 'reserve_volume', lambda *a, **k: None) self.stubs.Set(compute_manager.ComputeManager, 'swap_volume', lambda *a, **k: None) subs = { 'old_volume_id': old_volume_id, 'new_volume_id': old_new_volume } response = self._do_post('servers/%s/action' % server_id, 'swap-volume-req', subs) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') nova-2014.1/nova/tests/integrated/v3/test_extended_availability_zone.py0000664000175400017540000000244612323721477027501 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ExtendedAvailabilityZoneJsonTests(test_servers.ServersSampleBase): extension_name = "os-extended-availability-zone" def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_extended_status.py0000664000175400017540000000247012323721477025314 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ExtendedStatusSampleJsonTests(test_servers.ServersSampleBase): extension_name = "os-extended-status" def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['id'] = uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_flavor_access.py0000664000175400017540000000614512323721477024726 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class FlavorAccessSampleJsonTests(api_sample_base.ApiSampleTestBaseV3): extension_name = 'flavor-access' def _add_tenant(self): subs = { 'tenant_id': 'fake_tenant', 'flavor_id': 10, } response = self._do_post('flavors/10/action', 'flavor-access-add-tenant-req', subs) self._verify_response('flavor-access-add-tenant-resp', subs, response, 200) def _create_flavor(self): subs = { 'flavor_id': 10, 'flavor_name': 'test_flavor' } response = self._do_post("flavors", "flavor-access-create-req", subs) subs.update(self._get_regexes()) self._verify_response("flavor-access-create-resp", subs, response, 201) def test_flavor_access_create(self): self._create_flavor() def test_flavor_access_detail(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavor-access-detail-resp', subs, response, 200) def test_flavor_access_list(self): self._create_flavor() self._add_tenant() flavor_id = 10 response = self._do_get('flavors/%s/flavor-access' % flavor_id) subs = { 'flavor_id': flavor_id, 'tenant_id': 'fake_tenant', } self._verify_response('flavor-access-list-resp', subs, response, 200) def test_flavor_access_show(self): flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = { 'flavor_id': flavor_id } subs.update(self._get_regexes()) self._verify_response('flavor-access-show-resp', subs, response, 200) def test_flavor_access_add_tenant(self): self._create_flavor() self._add_tenant() def test_flavor_access_remove_tenant(self): self._create_flavor() self._add_tenant() subs = { 'tenant_id': 'fake_tenant', } response = self._do_post('flavors/10/action', "flavor-access-remove-tenant-req", subs) exp_subs = { "tenant_id": self.api.project_id, "flavor_id": "10" } self._verify_response('flavor-access-remove-tenant-resp', exp_subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_aggregates.py0000664000175400017540000000633612323721477024227 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class AggregatesSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-aggregates" def test_aggregate_create(self): subs = { "aggregate_id": '(?P\d+)' } response = self._do_post('os-aggregates', 'aggregate-post-req', subs) subs.update(self._get_regexes()) return self._verify_response('aggregate-post-resp', subs, response, 201) def test_list_aggregates(self): self.test_aggregate_create() response = self._do_get('os-aggregates') subs = self._get_regexes() self._verify_response('aggregates-list-get-resp', subs, response, 200) def test_aggregate_get(self): agg_id = self.test_aggregate_create() response = self._do_get('os-aggregates/%s' % agg_id) subs = self._get_regexes() self._verify_response('aggregates-get-resp', subs, response, 200) def test_add_metadata(self): agg_id = self.test_aggregate_create() response = self._do_post('os-aggregates/%s/action' % agg_id, 'aggregate-metadata-post-req', {'action': 'set_metadata'}) subs = self._get_regexes() self._verify_response('aggregates-metadata-post-resp', subs, response, 200) def test_add_host(self): aggregate_id = self.test_aggregate_create() subs = { "host_name": self.compute.host, } response = self._do_post('os-aggregates/%s/action' % aggregate_id, 'aggregate-add-host-post-req', subs) subs.update(self._get_regexes()) self._verify_response('aggregates-add-host-post-resp', subs, response, 202) def test_remove_host(self): self.test_add_host() subs = { "host_name": self.compute.host, } response = self._do_post('os-aggregates/1/action', 'aggregate-remove-host-post-req', subs) subs.update(self._get_regexes()) self._verify_response('aggregates-remove-host-post-resp', subs, response, 202) def test_update_aggregate(self): aggregate_id = self.test_aggregate_create() response = self._do_put('os-aggregates/%s' % aggregate_id, 'aggregate-update-post-req', {}) subs = self._get_regexes() self._verify_response('aggregate-update-post-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_scheduler_hints.py0000664000175400017540000000240312323721477025270 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from nova.tests.image import fake from nova.tests.integrated.v3 import api_sample_base class SchedulerHintsJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-scheduler-hints" def test_scheduler_hints_post(self): # Get api sample of scheduler hint post request. subs = self._get_regexes() subs.update({'image_id': fake.get_valid_image_id(), 'image_near': str(uuid.uuid4())}) response = self._do_post('servers', 'scheduler-hints-post-req', subs) self._verify_response('scheduler-hints-post-resp', subs, response, 202) nova-2014.1/nova/tests/integrated/v3/test_user_data.py0000664000175400017540000000247612323721477024066 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 from nova.tests.image import fake from nova.tests.integrated.v3 import api_sample_base class UserDataJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-user-data" def test_user_data_post(self): user_data_contents = '#!/bin/bash\n/bin/su\necho "I am in you!"\n' user_data = base64.b64encode(user_data_contents) subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'user_data': user_data } response = self._do_post('servers', 'userdata-post-req', subs) subs.update(self._get_regexes()) self._verify_response('userdata-post-resp', subs, response, 202) nova-2014.1/nova/tests/integrated/v3/test_cells.py0000664000175400017540000001015112323721477023206 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.cells import rpcapi as cells_rpcapi from nova.cells import state from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.tests.integrated.v3 import api_sample_base class CellsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-cells" def setUp(self): # db_check_interval < 0 makes cells manager always hit the DB self.flags(enable=True, db_check_interval=-1, group='cells') super(CellsSampleJsonTest, self).setUp() self._stub_cells() def _stub_cells(self, num_cells=5): self.cell_list = [] self.cells_next_id = 1 def _fake_cell_get_all(context): return self.cell_list def _fake_cell_get(inst, context, cell_name): for cell in self.cell_list: if cell['name'] == cell_name: return cell raise exception.CellNotFound(cell_name=cell_name) for x in xrange(num_cells): cell = models.Cell() our_id = self.cells_next_id self.cells_next_id += 1 cell.update({'id': our_id, 'name': 'cell%s' % our_id, 'transport_url': 'rabbit://username%s@/' % our_id, 'is_parent': our_id % 2 == 0}) self.cell_list.append(cell) self.stubs.Set(db, 'cell_get_all', _fake_cell_get_all) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_get', _fake_cell_get) def test_cells_empty_list(self): # Override this self._stub_cells(num_cells=0) response = self._do_get('os-cells') subs = self._get_regexes() self._verify_response('cells-list-empty-resp', subs, response, 200) def test_cells_list(self): response = self._do_get('os-cells') subs = self._get_regexes() self._verify_response('cells-list-resp', subs, response, 200) def test_cells_get(self): response = self._do_get('os-cells/cell3') subs = self._get_regexes() self._verify_response('cells-get-resp', subs, response, 200) def test_get_cell_capacity(self): self._mock_cell_capacity() state_manager = state.CellStateManager() my_state = state_manager.get_my_state() response = self._do_get('os-cells/%s/capacities' % my_state.name) subs = self._get_regexes() return self._verify_response('cells-capacities-resp', subs, response, 200) def test_get_all_cells_capacity(self): self._mock_cell_capacity() response = self._do_get('os-cells/capacities') subs = self._get_regexes() return self._verify_response('cells-capacities-resp', subs, response, 200) def _mock_cell_capacity(self): self.mox.StubOutWithMock(self.cells.manager.state_manager, 'get_our_capacities') response = {"ram_free": {"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0}, "total_mb": 7680}, "disk_free": {"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0}, "total_mb": 1052672} } self.cells.manager.state_manager.get_our_capacities(). \ AndReturn(response) self.mox.ReplayAll() nova-2014.1/nova/tests/integrated/v3/test_hide_server_addresses.py0000664000175400017540000000301012323721477026434 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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 oslo.config import cfg from nova.compute import vm_states from nova.tests.integrated.v3 import test_servers CONF = cfg.CONF CONF.import_opt('osapi_hide_server_address_states', 'nova.api.openstack.compute.plugins.v3.hide_server_addresses') class ServersSampleHideAddressesJsonTest(test_servers.ServersSampleJsonTest): extension_name = 'os-hide-server-addresses' # Override the sample dirname because # test_servers.ServersSampleJsonTest does and so it won't default # to the extension name sample_dir = extension_name def setUp(self): # We override osapi_hide_server_address_states in order # to have an example of in the json samples of the # addresses being hidden CONF.set_override("osapi_hide_server_address_states", [vm_states.ACTIVE]) super(ServersSampleHideAddressesJsonTest, self).setUp() nova-2014.1/nova/tests/integrated/v3/test_shelve.py0000664000175400017540000000352212323721477023376 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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 oslo.config import cfg from nova.tests.integrated.v3 import test_servers CONF = cfg.CONF CONF.import_opt('shelved_offload_time', 'nova.compute.manager') class ShelveJsonTest(test_servers.ServersSampleBase): extension_name = "os-shelve" def setUp(self): super(ShelveJsonTest, self).setUp() # Don't offload instance, so we can test the offload call. CONF.set_override('shelved_offload_time', -1) def _test_server_action(self, uuid, template, action): response = self._do_post('servers/%s/action' % uuid, template, {'action': action}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), "") def test_shelve(self): uuid = self._post_server() self._test_server_action(uuid, 'os-shelve', 'shelve') def test_shelve_offload(self): uuid = self._post_server() self._test_server_action(uuid, 'os-shelve', 'shelve') self._test_server_action(uuid, 'os-shelve-offload', 'shelve_offload') def test_unshelve(self): uuid = self._post_server() self._test_server_action(uuid, 'os-shelve', 'shelve') self._test_server_action(uuid, 'os-unshelve', 'unshelve') nova-2014.1/nova/tests/integrated/v3/test_server_metadata.py0000664000175400017540000000633412323721477025262 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ServersMetadataJsonTest(test_servers.ServersSampleBase): extends_name = 'core_only' sample_dir = 'server-metadata' def _create_and_set(self, subs): uuid = self._post_server() response = self._do_put('servers/%s/metadata' % uuid, 'server-metadata-all-req', subs) self._verify_response('server-metadata-all-resp', subs, response, 200) return uuid def generalize_subs(self, subs, vanilla_regexes): subs['value'] = '(Foo|Bar) Value' return subs def test_metadata_put_all(self): # Test setting all metadata for a server. subs = {'value': 'Foo Value'} self._create_and_set(subs) def test_metadata_post_all(self): # Test updating all metadata for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) subs['value'] = 'Bar Value' response = self._do_post('servers/%s/metadata' % uuid, 'server-metadata-all-req', subs) self._verify_response('server-metadata-all-resp', subs, response, 201) def test_metadata_get_all(self): # Test getting all metadata for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) response = self._do_get('servers/%s/metadata' % uuid) self._verify_response('server-metadata-all-resp', subs, response, 200) def test_metadata_put(self): # Test putting an individual metadata item for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) subs['value'] = 'Bar Value' response = self._do_put('servers/%s/metadata/foo' % uuid, 'server-metadata-req', subs) self._verify_response('server-metadata-resp', subs, response, 200) def test_metadata_get(self): # Test getting an individual metadata item for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) response = self._do_get('servers/%s/metadata/foo' % uuid) self._verify_response('server-metadata-resp', subs, response, 200) def test_metadata_delete(self): # Test deleting an individual metadata item for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) response = self._do_delete('servers/%s/metadata/foo' % uuid) self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') nova-2014.1/nova/tests/integrated/v3/test_agents.py0000664000175400017540000001016112323721477023366 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova.db.sqlalchemy import models from nova.tests.integrated.v3 import api_sample_base class AgentsJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-agents" def setUp(self): super(AgentsJsonTest, self).setUp() fake_agents_list = [{'url': 'xxxxxxxxxxxx', 'hypervisor': 'hypervisor', 'architecture': 'x86', 'os': 'os', 'version': '8.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'id': '1'}] def fake_agent_build_create(context, values): values['id'] = '1' agent_build_ref = models.AgentBuild() agent_build_ref.update(values) return agent_build_ref def fake_agent_build_get_all(context, hypervisor): agent_build_all = [] for agent in fake_agents_list: if hypervisor and hypervisor != agent['hypervisor']: continue agent_build_ref = models.AgentBuild() agent_build_ref.update(agent) agent_build_all.append(agent_build_ref) return agent_build_all def fake_agent_build_update(context, agent_build_id, values): pass def fake_agent_build_destroy(context, agent_update_id): pass self.stubs.Set(db, "agent_build_create", fake_agent_build_create) self.stubs.Set(db, "agent_build_get_all", fake_agent_build_get_all) self.stubs.Set(db, "agent_build_update", fake_agent_build_update) self.stubs.Set(db, "agent_build_destroy", fake_agent_build_destroy) def test_agent_create(self): # Creates a new agent build. project = {'url': 'xxxxxxxxxxxx', 'hypervisor': 'hypervisor', 'architecture': 'x86', 'os': 'os', 'version': '8.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545' } response = self._do_post('os-agents', 'agent-post-req', project) project['agent_id'] = 1 self._verify_response('agent-post-resp', project, response, 201) return project def test_agent_list(self): # Return a list of all agent builds. response = self._do_get('os-agents') project = {'url': 'xxxxxxxxxxxx', 'hypervisor': 'hypervisor', 'architecture': 'x86', 'os': 'os', 'version': '8.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1 } self._verify_response('agents-get-resp', project, response, 200) def test_agent_update(self): # Update an existing agent build. agent_id = 1 subs = {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'} response = self._do_put('os-agents/%s' % agent_id, 'agent-update-put-req', subs) subs['agent_id'] = 1 self._verify_response('agent-update-put-resp', subs, response, 200) def test_agent_delete(self): # Deletes an existing agent build. agent_id = 1 response = self._do_delete('os-agents/%s' % agent_id) self.assertEqual(response.status, 204) nova-2014.1/nova/tests/integrated/v3/test_rescue.py0000664000175400017540000000416612323721477023403 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class RescueJsonTest(test_servers.ServersSampleBase): extension_name = "os-rescue" def _rescue(self, uuid): req_subs = { 'password': 'MySecretPass' } response = self._do_post('servers/%s/action' % uuid, 'server-rescue-req', req_subs) self._verify_response('server-rescue', req_subs, response, 202) def _unrescue(self, uuid): response = self._do_post('servers/%s/action' % uuid, 'server-unrescue-req', {}) self.assertEqual(response.status, 202) def test_server_rescue(self): uuid = self._post_server() self._rescue(uuid) # Do a server get to make sure that the 'RESCUE' state is set response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['status'] = 'RESCUE' self._verify_response('server-get-resp-rescue', subs, response, 200) def test_server_unrescue(self): uuid = self._post_server() self._rescue(uuid) self._unrescue(uuid) # Do a server get to make sure that the 'ACTIVE' state is back response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['status'] = 'ACTIVE' self._verify_response('server-get-resp-unrescue', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_services.py0000664000175400017540000000702512323721477023735 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova.openstack.common import timeutils from nova.tests.api.openstack.compute.plugins.v3 import test_services from nova.tests.integrated.v3 import api_sample_base class ServicesJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-services" def setUp(self): super(ServicesJsonTest, self).setUp() self.stubs.Set(db, "service_get_all", test_services.fake_db_api_service_get_all) self.stubs.Set(timeutils, "utcnow", test_services.fake_utcnow) self.stubs.Set(timeutils, "utcnow_ts", test_services.fake_utcnow_ts) self.stubs.Set(db, "service_get_by_args", test_services.fake_service_get_by_host_binary) self.stubs.Set(db, "service_update", test_services.fake_service_update) def tearDown(self): super(ServicesJsonTest, self).tearDown() timeutils.clear_time_override() def test_services_list(self): """Return a list of all agent builds.""" response = self._do_get('os-services') subs = {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up'} subs.update(self._get_regexes()) self._verify_response('services-list-get-resp', subs, response, 200) def test_service_enable(self): """Enable an existing agent build.""" subs = {"host": "host1", 'binary': 'nova-compute'} response = self._do_put('os-services/enable', 'service-enable-put-req', subs) subs = {"host": "host1", "binary": "nova-compute"} self._verify_response('service-enable-put-resp', subs, response, 200) def test_service_disable(self): """Disable an existing agent build.""" subs = {"host": "host1", 'binary': 'nova-compute'} response = self._do_put('os-services/disable', 'service-disable-put-req', subs) subs = {"host": "host1", "binary": "nova-compute"} self._verify_response('service-disable-put-resp', subs, response, 200) def test_service_disable_log_reason(self): """Disable an existing service and log the reason.""" subs = {"host": "host1", 'binary': 'nova-compute', 'disabled_reason': 'test2'} response = self._do_put('os-services/disable-log-reason', 'service-disable-log-put-req', subs) return self._verify_response('service-disable-log-put-resp', subs, response, 200) def test_service_delete(self): """Delete an existing service.""" response = self._do_delete('os-services/1') self.assertEqual(response.status, 204) self.assertEqual(response.read(), "") nova-2014.1/nova/tests/integrated/v3/test_access_ips.py0000664000175400017540000000654112323721477024230 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.image import fake from nova.tests.integrated.v3 import api_sample_base class AccessIPsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = 'os-access-ips' def _servers_post(self, subs): response = self._do_post('servers', 'server-post-req', subs) subs.update(self._get_regexes()) return self._verify_response('server-post-resp', subs, response, 202) def test_servers_post(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fe80::' } self._servers_post(subs) def test_servers_get(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fe80::' } uuid = self._servers_post(subs) response = self._do_get('servers/%s' % uuid) subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid self._verify_response('server-get-resp', subs, response, 200) def test_servers_details(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fe80::' } uuid = self._servers_post(subs) response = self._do_get('servers/detail') subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid self._verify_response('servers-details-resp', subs, response, 200) def test_servers_rebuild(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fe80::' } uuid = self._servers_post(subs) subs['access_ip_v4'] = "4.3.2.1" subs['access_ip_v6'] = '80fe::' response = self._do_post('servers/%s/action' % uuid, 'server-action-rebuild', subs) subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid self._verify_response('server-action-rebuild-resp', subs, response, 202) def test_servers_update(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fe80::' } uuid = self._servers_post(subs) subs['access_ip_v4'] = "4.3.2.1" subs['access_ip_v6'] = '80fe::' response = self._do_put('servers/%s' % uuid, 'server-put-req', subs) subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid self._verify_response('server-put-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_extension_info.py0000664000175400017540000000224212323721477025135 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class ExtensionInfoSamplesJsonTest(api_sample_base.ApiSampleTestBaseV3): sample_dir = "extension-info" def test_list_extensions(self): response = self._do_get('extensions') subs = self._get_regexes() self._verify_response('extensions-list-resp', subs, response, 200) def test_get_extensions(self): response = self._do_get('extensions/flavors') subs = self._get_regexes() self._verify_response('extensions-get-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_multinic.py0000664000175400017540000000351412323721477023735 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class MultinicSampleJsonTest(test_servers.ServersSampleBase): extension_name = "os-multinic" def _disable_instance_dns_manager(self): # NOTE(markmc): it looks like multinic and instance_dns_manager are # incompatible. See: # https://bugs.launchpad.net/nova/+bug/1213251 self.flags( instance_dns_manager='nova.network.noop_dns_driver.NoopDNSDriver') def setUp(self): self._disable_instance_dns_manager() super(MultinicSampleJsonTest, self).setUp() self.uuid = self._post_server() def _add_fixed_ip(self): subs = {"networkId": 1} response = self._do_post('servers/%s/action' % (self.uuid), 'multinic-add-fixed-ip-req', subs) self.assertEqual(response.status, 202) def test_add_fixed_ip(self): self._add_fixed_ip() def test_remove_fixed_ip(self): self._add_fixed_ip() subs = {"ip": "10.0.0.4"} response = self._do_post('servers/%s/action' % (self.uuid), 'multinic-remove-fixed-ip-req', subs) self.assertEqual(response.status, 202) nova-2014.1/nova/tests/integrated/v3/test_console_output.py0000664000175400017540000000212212323721477025165 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ConsoleOutputSampleJsonTest(test_servers.ServersSampleBase): extension_name = "os-console-output" def test_get_console_output(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'console-output-post-req', {}) subs = self._get_regexes() self._verify_response('console-output-post-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_quota_sets.py0000664000175400017540000000573012323721477024302 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class QuotaSetsSampleJsonTests(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-quota-sets" def test_show_quotas(self): # Get api sample to show quotas. response = self._do_get('os-quota-sets/fake_tenant') self._verify_response('quotas-show-get-resp', {}, response, 200) def test_show_quotas_defaults(self): # Get api sample to show quotas defaults. response = self._do_get('os-quota-sets/fake_tenant/defaults') self._verify_response('quotas-show-defaults-get-resp', {}, response, 200) def test_update_quotas(self): # Get api sample to update quotas. response = self._do_put('os-quota-sets/fake_tenant', 'quotas-update-post-req', {}) self._verify_response('quotas-update-post-resp', {}, response, 200) def test_delete_quotas(self): # Get api sample to delete quota. response = self._do_delete('os-quota-sets/fake_tenant') self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') def test_update_quotas_force(self): # Get api sample to update quotas. response = self._do_put('os-quota-sets/fake_tenant', 'quotas-update-force-post-req', {}) return self._verify_response('quotas-update-force-post-resp', {}, response, 200) def test_show_quotas_for_user(self): # Get api sample to show quotas for user. response = self._do_get('os-quota-sets/fake_tenant?user_id=1') self._verify_response('user-quotas-show-get-resp', {}, response, 200) def test_delete_quotas_for_user(self): response = self._do_delete('os-quota-sets/fake_tenant?user_id=1') self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') def test_update_quotas_for_user(self): # Get api sample to update quotas for user. response = self._do_put('os-quota-sets/fake_tenant?user_id=1', 'user-quotas-update-post-req', {}) return self._verify_response('user-quotas-update-post-resp', {}, response, 200) nova-2014.1/nova/tests/integrated/v3/test_server_external_events.py0000664000175400017540000000275712323721477026715 0ustar jenkinsjenkins00000000000000# Copyright 2014 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.tests.integrated.v3 import test_servers class ServerExternalEventsSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-server-external-events" def setUp(self): """setUp Method for AdminActions api samples extension This method creates the server that will be used in each tests """ super(ServerExternalEventsSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_create_event(self): subs = { 'uuid': self.uuid, 'name': 'network-changed', 'status': 'completed', 'tag': 'foo', } response = self._do_post('os-server-external-events', 'event-create-req', subs) subs.update(self._get_regexes()) self._verify_response('event-create-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_console_auth_tokens.py0000664000175400017540000000345112323721477026157 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import json import re from nova.tests.integrated.v3 import test_servers class ConsoleAuthTokensSampleJsonTests(test_servers.ServersSampleBase): extension_name = "os-console-auth-tokens" extra_extensions_to_load = ["os-remote-consoles"] def _get_console_url(self, data): return json.loads(data)["console"]["url"] def _get_console_token(self, uuid): response = self._do_post('servers/%s/action' % uuid, 'get-rdp-console-post-req', {'action': 'os-getRDPConsole'}) url = self._get_console_url(response.read()) return re.match('.+?token=([^&]+)', url).groups()[0] def test_get_console_connect_info(self): self.flags(enabled=True, group='rdp') uuid = self._post_server() token = self._get_console_token(uuid) response = self._do_get('os-console-auth-tokens/%s' % token) subs = self._get_regexes() subs["uuid"] = uuid subs["host"] = r"[\w\.\-]+" subs["port"] = "[0-9]+" subs["internal_access_path"] = ".*" self._verify_response('get-console-connect-info-get-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_flavors.py0000664000175400017540000000247612323721477023573 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class FlavorsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): sample_dir = 'flavors' def test_flavors_get(self): response = self._do_get('flavors/1') subs = self._get_regexes() self._verify_response('flavor-get-resp', subs, response, 200) def test_flavors_list(self): response = self._do_get('flavors') subs = self._get_regexes() self._verify_response('flavors-list-resp', subs, response, 200) def test_flavors_detail(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavors-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_pause_server.py0000664000175400017540000000306312323721477024613 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class PauseServerSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-pause-server" def setUp(self): """setUp Method for PauseServer api samples extension This method creates the server that will be used in each test """ super(PauseServerSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_post_pause(self): # Get api samples to pause server request. response = self._do_post('servers/%s/action' % self.uuid, 'pause-server', {}) self.assertEqual(202, response.status) def test_post_unpause(self): # Get api samples to unpause server request. self.test_post_pause() response = self._do_post('servers/%s/action' % self.uuid, 'unpause-server', {}) self.assertEqual(202, response.status) nova-2014.1/nova/tests/integrated/v3/test_certificates.py0000664000175400017540000000240012323721477024547 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class CertificatesSamplesJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-certificates" def test_create_certificates(self): response = self._do_post('os-certificates', 'certificate-create-req', {}) subs = self._get_regexes() self._verify_response('certificate-create-resp', subs, response, 201) def test_get_root_certificate(self): response = self._do_get('os-certificates/root') subs = self._get_regexes() self._verify_response('certificate-get-root-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_keypairs.py0000664000175400017540000000535212323721510023726 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from nova.tests.integrated.v3 import api_sample_base class KeyPairsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): sample_dir = "keypairs" def generalize_subs(self, subs, vanilla_regexes): subs['keypair_name'] = 'keypair-[0-9a-f-]+' return subs def test_keypairs_post(self, public_key=None): """Get api sample of key pairs post request.""" key_name = 'keypair-' + str(uuid.uuid4()) response = self._do_post('keypairs', 'keypairs-post-req', {'keypair_name': key_name}) subs = self._get_regexes() subs['keypair_name'] = '(%s)' % key_name self._verify_response('keypairs-post-resp', subs, response, 201) # NOTE(maurosr): return the key_name is necessary cause the # verification returns the label of the last compared information in # the response, not necessarily the key name. return key_name def test_keypairs_import_key_post(self): # Get api sample of key pairs post to import user's key. key_name = 'keypair-' + str(uuid.uuid4()) subs = { 'keypair_name': key_name, 'public_key': "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGg" "B4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0l" "RE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv" "9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYc" "pSxsIbECHw== Generated by Nova" } response = self._do_post('keypairs', 'keypairs-import-post-req', subs) subs = self._get_regexes() subs['keypair_name'] = '(%s)' % key_name self._verify_response('keypairs-import-post-resp', subs, response, 201) def test_keypairs_get(self): # Get api sample of key pairs get request. key_name = self.test_keypairs_post() response = self._do_get('keypairs') subs = self._get_regexes() subs['keypair_name'] = '(%s)' % key_name self._verify_response('keypairs-get-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_deferred_delete.py0000664000175400017540000000307612323721477025216 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class DeferredDeleteSampleJsonTests(test_servers.ServersSampleBase): extension_name = "os-deferred-delete" def setUp(self): super(DeferredDeleteSampleJsonTests, self).setUp() self.flags(reclaim_instance_interval=1) def test_restore(self): uuid = self._post_server() response = self._do_delete('servers/%s' % uuid) response = self._do_post('servers/%s/action' % uuid, 'restore-post-req', {}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_force_delete(self): uuid = self._post_server() response = self._do_delete('servers/%s' % uuid) response = self._do_post('servers/%s/action' % uuid, 'force-delete-post-req', {}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') nova-2014.1/nova/tests/integrated/v3/test_suspend_server.py0000664000175400017540000000306612323721477025162 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class SuspendServerSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-suspend-server" ctype = 'json' def setUp(self): """setUp Method for SuspendServer api samples extension This method creates the server that will be used in each tests """ super(SuspendServerSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_post_suspend(self): # Get api samples to suspend server request. response = self._do_post('servers/%s/action' % self.uuid, 'server-suspend', {}) self.assertEqual(response.status, 202) def test_post_resume(self): # Get api samples to server resume request. self.test_post_suspend() response = self._do_post('servers/%s/action' % self.uuid, 'server-resume', {}) self.assertEqual(response.status, 202) nova-2014.1/nova/tests/integrated/v3/test_create_backup.py0000664000175400017540000000265512323721477024706 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova.tests.image import fake from nova.tests.integrated.v3 import test_servers class CreateBackupSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-create-backup" def setUp(self): """setUp Method for PauseServer api samples extension This method creates the server that will be used in each tests """ super(CreateBackupSamplesJsonTest, self).setUp() self.uuid = self._post_server() @mock.patch.object(fake._FakeImageService, 'detail', return_value=[]) def test_post_backup_server(self, mock_method): # Get api samples to backup server request. response = self._do_post('servers/%s/action' % self.uuid, 'create-backup-req', {}) self.assertEqual(202, response.status) nova-2014.1/nova/tests/integrated/v3/test_admin_password.py0000664000175400017540000000220112323721477025113 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class AdminPasswordJsonTest(test_servers.ServersSampleBase): extension_name = 'os-admin-password' def test_server_password(self): uuid = self._post_server() subs = {"password": "foo"} response = self._do_post('servers/%s/action' % uuid, 'admin-password-change-password', subs) self.assertEqual(response.status, 204) self.assertEqual(response.read(), "") nova-2014.1/nova/tests/integrated/v3/api_samples/0000775000175400017540000000000012323722546022770 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/0000775000175400017540000000000012323722546026515 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-req.js0000664000175400017540000000013212323721477034624 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "%(value1)s", "key2": "%(value2)s" } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-req.js0000664000175400017540000000003512323721477034645 0ustar jenkinsjenkins00000000000000{ "key1": "%(value1)s" } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-update-resp.j0000664000175400017540000000003512323721477034644 0ustar jenkinsjenkins00000000000000{ "key1": "%(value1)s" } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-list-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-list-resp.jso0000664000175400017540000000013212323721477034675 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "%(value1)s", "key2": "%(value2)s" } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-create-resp.j0000664000175400017540000000013212323721477034623 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "%(value1)s", "key2": "%(value2)s" } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-extra-specs/flavor-extra-specs-get-resp.json0000664000175400017540000000003512323721477034661 0ustar jenkinsjenkins00000000000000{ "key1": "%(value1)s" } nova-2014.1/nova/tests/integrated/v3/api_samples/consoles/0000775000175400017540000000000012323722546024615 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/consoles/consoles-create-req.json.tpl0000664000175400017540000000000012323721477032151 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/consoles/consoles-list-get-resp.json.tpl0000664000175400017540000000006112323721477032627 0ustar jenkinsjenkins00000000000000{"consoles": [{"console_type": "fake", "id": 1}]}nova-2014.1/nova/tests/integrated/v3/api_samples/consoles/server-post-req.json.tpl0000664000175400017540000000036312323721477031370 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/consoles/consoles-get-resp.json.tpl0000664000175400017540000000021612323721477031660 0ustar jenkinsjenkins00000000000000{"console": {"console_type": "fake", "port": 5999, "instance_name": "instance-00000001", "host": "fake", "password": "%(password)s", "id": 1}}nova-2014.1/nova/tests/integrated/v3/api_samples/consoles/server-post-resp.json.tpl0000664000175400017540000000060712323721477031553 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-evacuate/0000775000175400017540000000000012323722546025204 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-evacuate/server-evacuate-req.json.tpl0000664000175400017540000000022612323721477032565 0ustar jenkinsjenkins00000000000000{ "evacuate": { "host": "%(host)s", "admin_password": "%(adminPass)s", "on_shared_storage": "%(onSharedStorage)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-evacuate/server-post-req.json.tpl0000664000175400017540000000036312323721477031757 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-evacuate/server-evacuate-resp.json.tpl0000664000175400017540000000005112323721477032743 0ustar jenkinsjenkins00000000000000{ "admin_password": "%(password)s" } nova-2014.1/nova/tests/integrated/v3/api_samples/os-evacuate/server-post-resp.json.tpl0000664000175400017540000000053712323721477032144 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/0000775000175400017540000000000012323722546025763 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/server-post-req.json.tpl0000664000175400017540000000036312323721477032536 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/servers-config-drive-details-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/servers-config-drive-details-resp.j0000664000175400017540000000317412323721477034602 0ustar jenkinsjenkins00000000000000{ "servers": [ { "os-config-drive:config_drive": "%(cdrive)s", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "key_name": null } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/server-post-resp.json.tpl0000664000175400017540000000060712323721477032721 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/server-config-drive-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-config-drive/server-config-drive-get-resp.json.t0000664000175400017540000000263112323721477034530 0ustar jenkinsjenkins00000000000000{ "server": { "os-config-drive:config_drive": "%(cdrive)s", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/0000775000175400017540000000000012323722546025520 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tp0000664000175400017540000000053112323721477034657 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova", "key": "value" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl0000664000175400017540000000021312323721477034463 0ustar jenkinsjenkins00000000000000{ "set_metadata": { "metadata": { "key": "value" } } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tp0000664000175400017540000000054512323721477034607 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "hosts": [ "%(compute_host)s" ], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl0000664000175400017540000000051512323721477034354 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova2", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova2" }, "name": "newname", "updated_at": "%(timestamp)s" } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-remove-host-post-resp.json0000664000175400017540000000047512323721477034734 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-update-post-req.json.tpl0000664000175400017540000000014112323721477034165 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "newname", "availability_zone": "nova2" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl0000664000175400017540000000057612323721477034031 0ustar jenkinsjenkins00000000000000{ "aggregates": [ { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-post-resp.json.tpl0000664000175400017540000000035612323721477033077 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "id": %(aggregate_id)s, "name": "name", "updated_at": null } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-remove-host-post-req.json.t0000664000175400017540000000007712323721477034627 0ustar jenkinsjenkins00000000000000{ "remove_host": { "host": "%(host_name)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregates-get-resp.json.tpl0000664000175400017540000000047512323721477033056 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": 0, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl0000664000175400017540000000007412323721477034413 0ustar jenkinsjenkins00000000000000{ "add_host": { "host": "%(host_name)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-aggregates/aggregate-post-req.json.tpl0000664000175400017540000000013512323721477032710 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "name", "availability_zone": "nova" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-suspend-server/0000775000175400017540000000000012323722546026374 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-suspend-server/server-post-req.json.tpl0000664000175400017540000000036312323721477033147 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-suspend-server/server-resume.json.tpl0000664000175400017540000000002712323721477032672 0ustar jenkinsjenkins00000000000000{ "resume": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-suspend-server/server-post-resp.json.tpl0000664000175400017540000000053712323721477033334 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-suspend-server/server-suspend.json.tpl0000664000175400017540000000003012323721477033045 0ustar jenkinsjenkins00000000000000{ "suspend": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrations/0000775000175400017540000000000012323722546025563 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrations/migrations-get.json.tpl0000664000175400017540000000201012323721477032200 0ustar jenkinsjenkins00000000000000{ "migrations": [ { "created_at": "2012-10-29T13:42:02.000000", "dest_compute": "compute2", "dest_host": "1.2.3.4", "dest_node": "node2", "id": 1234, "instance_uuid": "instance_id_123", "new_instance_type_id": 2, "old_instance_type_id": 1, "source_compute": "compute1", "source_node": "node1", "status": "Done", "updated_at": "2012-10-29T13:42:02.000000" }, { "created_at": "2013-10-22T13:42:02.000000", "dest_compute": "compute20", "dest_host": "5.6.7.8", "dest_node": "node20", "id": 5678, "instance_uuid": "instance_id_456", "new_instance_type_id": 6, "old_instance_type_id": 5, "source_compute": "compute10", "source_node": "node10", "status": "Done", "updated_at": "2013-10-22T13:42:02.000000" } ] }nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/0000775000175400017540000000000012323722546026054 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.json.tpl0000664000175400017540000000006712323721477033605 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "%(value)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.json.tpl0000664000175400017540000000006712323721477034171 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "%(value)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.json.tpl0000664000175400017540000000006712323721477033423 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "%(value)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.json.tpl0000664000175400017540000000006712323721477034353 0ustar jenkinsjenkins00000000000000{ "metadata": { "foo": "%(value)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.json.tpl0000664000175400017540000000036312323721477032627 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.json.tpl0000664000175400017540000000060712323721477033012 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-certificates/0000775000175400017540000000000012323722546026054 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-certificates/certificate-get-root-resp.json.tpl0000664000175400017540000000012712323721477034536 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "%(text)s", "private_key": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-certificates/certificate-create-req.json.tpl0000664000175400017540000000000012323721477034045 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-certificates/certificate-create-resp.json.tpl0000664000175400017540000000013512323721477034240 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "%(text)s", "private_key": "%(text)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/extension-info/0000775000175400017540000000000012323722546025735 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/extension-info/extensions-get-resp.json.tpl0000664000175400017540000000022612323721477033353 0ustar jenkinsjenkins00000000000000{ "extension": { "alias": "flavors", "description": "Flavors Extension.", "name": "flavors", "version": 1 } } nova-2014.1/nova/tests/integrated/v3/api_samples/extension-info/extensions-list-resp.json.tpl0000664000175400017540000000054312323721477033551 0ustar jenkinsjenkins00000000000000{ "extensions": [ { "alias": "extensions", "description": "Extension information.", "name": "extensions", "version": 1 }, { "alias": "flavors", "description": "Flavors Extension.", "name": "flavors", "version": 1 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/0000775000175400017540000000000012323722546027032 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/availability-zone-list-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/availability-zone-list-resp.js0000664000175400017540000000030612323721477034734 0ustar jenkinsjenkins00000000000000{ "availability_zone_info": [ { "hosts": null, "zone_name": "nova", "zone_state": { "available": true } } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/server-post-req.json.tpl0000664000175400017540000000154712323721477033612 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(host)s/openstack/images/%(image_id)s", "flavor_ref" : "%(host)s/openstack/flavors/1", "os-availability-zone:availability_zone": "nova", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/server-post-resp.json.tpl0000664000175400017540000000060712323721477033770 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/availability-zone-detail-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-availability-zone/availability-zone-detail-resp.0000664000175400017540000000374712323721510034666 0ustar jenkinsjenkins00000000000000{ "availability_zone_info": [ { "hosts": { "consoleauth": { "nova-consoleauth": { "active": true, "available": true, "updated_at": null } }, "cert": { "nova-cert": { "active": true, "available": true, "updated_at": null } }, "conductor": { "nova-conductor": { "active": true, "available": true, "updated_at": null } }, "cells": { "nova-cells": { "active": true, "available": true, "updated_at": null } }, "scheduler": { "nova-scheduler": { "active": true, "available": true, "updated_at": null } }, "network": { "nova-network": { "active": true, "available": true, "updated_at": null } } }, "zone_name": "internal", "zone_state": { "available": true } }, { "hosts": { "compute": { "nova-compute": { "active": true, "available": true, "updated_at": null } } }, "zone_name": "nova", "zone_state": { "available": true } } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrate-server/0000775000175400017540000000000012323722546026343 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrate-server/migrate-server.json.tpl0000664000175400017540000000003012323721477032763 0ustar jenkinsjenkins00000000000000{ "migrate": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrate-server/live-migrate-server.json.tpl0000664000175400017540000000020412323721477033723 0ustar jenkinsjenkins00000000000000{ "migrate_live": { "host": "%(hostname)s", "block_migration": false, "disk_over_commit": false } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrate-server/server-post-req.json.tpl0000664000175400017540000000036312323721477033116 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-migrate-server/server-post-resp.json.tpl0000664000175400017540000000053712323721477033303 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-scheduler-hints/0000775000175400017540000000000012323722546026510 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-scheduler-hints/scheduler-hints-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-scheduler-hints/scheduler-hints-post-req.json.tp0000664000175400017540000000043312323721477034700 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/openstack/images/%(image_id)s", "flavor_ref" : "%(host)s/openstack/flavors/1", "os-scheduler-hints:scheduler_hints": { "same_host": "%(uuid)s" } } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-scheduler-hints/scheduler-hints-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-scheduler-hints/scheduler-hints-post-resp.json.t0000664000175400017540000000060712323721477034705 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/flavors/0000775000175400017540000000000012323722546024444 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavors/flavors-list-resp.json.tpl0000664000175400017540000000345012323721477031535 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "id": "1", "links": [ { "href": "%(host)s/v3/flavors/1", "rel": "self" }, { "href": "%(host)s/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny" }, { "id": "2", "links": [ { "href": "%(host)s/v3/flavors/2", "rel": "self" }, { "href": "%(host)s/flavors/2", "rel": "bookmark" } ], "name": "m1.small" }, { "id": "3", "links": [ { "href": "%(host)s/v3/flavors/3", "rel": "self" }, { "href": "%(host)s/flavors/3", "rel": "bookmark" } ], "name": "m1.medium" }, { "id": "4", "links": [ { "href": "%(host)s/v3/flavors/4", "rel": "self" }, { "href": "%(host)s/flavors/4", "rel": "bookmark" } ], "name": "m1.large" }, { "id": "5", "links": [ { "href": "%(host)s/v3/flavors/5", "rel": "self" }, { "href": "%(host)s/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/flavors/flavor-get-resp.json.tpl0000664000175400017540000000074712323721477031164 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "1", "links": [ { "href": "%(host)s/v3/flavors/1", "rel": "self" }, { "href": "%(host)s/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "flavor-access:is_public": true, "ram": 512, "vcpus": 1, "disabled": false, "ephemeral": 0, "swap": 0 } } nova-2014.1/nova/tests/integrated/v3/api_samples/flavors/flavors-detail-resp.json.tpl0000664000175400017540000000542012323721477032023 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disabled": false, "disk": 1, "ephemeral": 0, "id": "1", "links": [ { "href": "%(host)s/v3/flavors/1", "rel": "self" }, { "href": "%(host)s/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "flavor-access:is_public": true, "ram": 512, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 20, "ephemeral": 0, "id": "2", "links": [ { "href": "%(host)s/v3/flavors/2", "rel": "self" }, { "href": "%(host)s/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "flavor-access:is_public": true, "ram": 2048, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 40, "ephemeral": 0, "id": "3", "links": [ { "href": "%(host)s/v3/flavors/3", "rel": "self" }, { "href": "%(host)s/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "flavor-access:is_public": true, "ram": 4096, "swap": 0, "vcpus": 2 }, { "disabled": false, "disk": 80, "ephemeral": 0, "id": "4", "links": [ { "href": "%(host)s/v3/flavors/4", "rel": "self" }, { "href": "%(host)s/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "flavor-access:is_public": true, "ram": 8192, "swap": 0, "vcpus": 4 }, { "disabled": false, "disk": 160, "ephemeral": 0, "id": "5", "links": [ { "href": "%(host)s/v3/flavors/5", "rel": "self" }, { "href": "%(host)s/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "flavor-access:is_public": true, "ram": 16384, "swap": 0, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/keypairs/0000775000175400017540000000000012323722546024617 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/keypairs/keypairs-import-post-resp.json.tpl0000664000175400017540000000025312323721477033403 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "%(fingerprint)s", "name": "%(keypair_name)s", "public_key": "%(public_key)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/keypairs/keypairs-post-req.json.tpl0000664000175400017540000000007612323721477031714 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "%(keypair_name)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/keypairs/keypairs-get-resp.json.tpl0000664000175400017540000000034412323721510031652 0ustar jenkinsjenkins00000000000000{ "keypairs": [ { "keypair": { "fingerprint": "%(fingerprint)s", "name": "%(keypair_name)s", "public_key": "%(public_key)s" } } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/keypairs/keypairs-import-post-req.json.tpl0000664000175400017540000000014612323721477033222 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "%(keypair_name)s", "public_key": "%(public_key)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/keypairs/keypairs-post-resp.json.tpl0000664000175400017540000000032512323721477032073 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "%(fingerprint)s", "name": "%(keypair_name)s", "private_key": "%(private_key)s", "public_key": "%(public_key)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/0000775000175400017540000000000012323722546025232 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/service-disable-log-put-req.json.tpl0000664000175400017540000000021412323721477034135 0ustar jenkinsjenkins00000000000000{ "service": { "host": "%(host)s", "binary": "%(binary)s", "disabled_reason": "%(disabled_reason)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/service-enable-put-req.json.tpl0000664000175400017540000000013212323721477033200 0ustar jenkinsjenkins00000000000000{ "service": { "host": "%(host)s", "binary": "%(binary)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/service-enable-put-resp.json.tpl0000664000175400017540000000016112323721477033364 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "host": "host1", "status": "enabled" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/service-disable-put-req.json.tpl0000664000175400017540000000013212323721477033355 0ustar jenkinsjenkins00000000000000{ "service": { "host": "%(host)s", "binary": "%(binary)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/services-list-get-resp.json.tpl0000664000175400017540000000220512323721477033244 0ustar jenkinsjenkins00000000000000{ "services": [ { "binary": "nova-scheduler", "disabled_reason": "test1", "host": "host1", "id": 1, "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "binary": "nova-compute", "disabled_reason": "test2", "host": "host1", "id": 2, "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" }, { "binary": "nova-scheduler", "disabled_reason": "", "host": "host2", "id": 3, "state": "down", "status": "enabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "binary": "nova-compute", "disabled_reason": "test4", "host": "host2", "id": 4, "state": "down", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/service-disable-log-put-resp.json.tpl0000664000175400017540000000022612323721477034322 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "disabled_reason": "test2", "host": "host1", "status": "disabled" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-services/service-disable-put-resp.json.tpl0000664000175400017540000000016212323721477033542 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "nova-compute", "host": "host1", "status": "disabled" } }nova-2014.1/nova/tests/integrated/v3/api_samples/servers/0000775000175400017540000000000012323722546024461 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-rebuild.json.tpl0000664000175400017540000000142312323721477032361 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "image_ref" : "%(glance_host)s/images/%(uuid)s", "name" : "%(name)s", "admin_password" : "%(pass)s", "metadata" : { "meta_var" : "meta_val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral-re0000664000175400017540000000255112323721477035013 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "admin_password": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "meta_var": "meta_val" }, "name": "%(name)s", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/servers-details-resp.json.tpl0000664000175400017540000000310212323721477032233 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-revert-resize.json.tpl0000664000175400017540000000003712323721477033541 0ustar jenkinsjenkins00000000000000{ "revert_resize" : null } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/servers-list-resp.json.tpl0000664000175400017540000000063112323721477031565 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-resize.json.tpl0000664000175400017540000000007312323721477032234 0ustar jenkinsjenkins00000000000000{ "resize" : { "flavor_ref" : "%(id)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-resp.json.tpl0000664000175400017540000000255112323721477033333 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "admin_password": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "meta_var": "meta_val" }, "name": "%(name)s", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-post-req.json.tpl0000664000175400017540000000036312323721477031234 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-create-image.json.tpl0000664000175400017540000000020212323721477033250 0ustar jenkinsjenkins00000000000000{ "create_image" : { "name" : "%(name)s", "metadata": { "meta_var": "meta_val" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-post-resp.json.tpl0000664000175400017540000000060712323721477031417 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-reboot.json.tpl0000664000175400017540000000006712323721477032230 0ustar jenkinsjenkins00000000000000{ "reboot" : { "type" : "%(type)s" } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-rebuild-preserve-ephemeral.js0000664000175400017540000000151112323721477035015 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "image_ref" : "%(glance_host)s/images/%(uuid)s", "name" : "%(name)s", "admin_password" : "%(pass)s", "metadata" : { "meta_var" : "meta_val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ], "preserve_ephemeral": %(preserve_ephemeral)s } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-get-resp.json.tpl0000664000175400017540000000254312323721477031212 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/servers/server-action-confirm-resize.json.tpl0000664000175400017540000000004012323721477033661 0ustar jenkinsjenkins00000000000000{ "confirm_resize" : null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/0000775000175400017540000000000012323722546030630 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-post-req.json.0000664000175400017540000000036312323721477034663 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-post-resp.json0000664000175400017540000000053712323721477034772 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/servers-detail-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/servers-detail-resp.j0000664000175400017540000000321112323721477034702 0ustar jenkinsjenkins00000000000000{ "servers": [ { "updated": "%(timestamp)s", "created": "%(timestamp)s", "os-extended-availability-zone:availability_zone": "nova", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "key_name": null } ] } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-availability-zone/server-get-resp.json.0000664000175400017540000000265012323721477034640 0ustar jenkinsjenkins00000000000000{ "server": { "updated": "%(timestamp)s", "created": "%(timestamp)s", "os-extended-availability-zone:availability_zone": "nova", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-diagnostics/0000775000175400017540000000000012323722546027222 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-post-req.json.tpl0000664000175400017540000000036312323721477033775 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-post-resp.json.tpl0000664000175400017540000000053712323721477034162 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-server-diagnostics/server-diagnostics-get-resp.j0000664000175400017540000000060212323721477034734 0ustar jenkinsjenkins00000000000000{ "cpu0_time": 17300000000, "memory": 524288, "vda_errors": -1, "vda_read": 262144, "vda_read_req": 112, "vda_write": 5778432, "vda_write_req": 488, "vnet1_rx": 2070139, "vnet1_rx_drop": 0, "vnet1_rx_errors": 0, "vnet1_rx_packets": 26701, "vnet1_tx": 140208, "vnet1_tx_drop": 0, "vnet1_tx_errors": 0, "vnet1_tx_packets": 662 }nova-2014.1/nova/tests/integrated/v3/api_samples/os-shelve/0000775000175400017540000000000012323722546024675 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-shelve/os-shelve.json.tpl0000664000175400017540000000003312323721477030271 0ustar jenkinsjenkins00000000000000{ "%(action)s": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-shelve/server-post-req.json.tpl0000664000175400017540000000146412323721477031453 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/openstack/images/%(image_id)s", "flavor_ref" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-shelve/server-post-resp.json.tpl0000664000175400017540000000060712323721477031633 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-shelve/os-shelve-offload.json.tpl0000664000175400017540000000003312323721477031701 0ustar jenkinsjenkins00000000000000{ "%(action)s": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-shelve/os-unshelve.json.tpl0000664000175400017540000000003312323721477030634 0ustar jenkinsjenkins00000000000000{ "%(action)s": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-output/0000775000175400017540000000000012323722546026407 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-output/server-post-req.json.tpl0000664000175400017540000000036312323721477033162 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-output/server-post-resp.json.tpl0000664000175400017540000000060712323721477033345 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-output/console-output-post-req.json.tpl0000664000175400017540000000007312323721477034652 0ustar jenkinsjenkins00000000000000{ "get_console_output": { "length": 50 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-output/console-output-post-resp.json.tpl0000664000175400017540000000007312323721477035034 0ustar jenkinsjenkins00000000000000{ "output": "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE" }nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/0000775000175400017540000000000012323722546025520 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-create-req.json.tpl0000664000175400017540000000030212323721477033764 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s", "flavor-access:is_public": false } } nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-detail-resp.json.tpl0000664000175400017540000000542012323721477034153 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disabled": false, "disk": 1, "ephemeral": 0, "id": "1", "links": [ { "href": "%(host)s/v3/flavors/1", "rel": "self" }, { "href": "%(host)s/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "flavor-access:is_public": true, "ram": 512, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 20, "ephemeral": 0, "id": "2", "links": [ { "href": "%(host)s/v3/flavors/2", "rel": "self" }, { "href": "%(host)s/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "flavor-access:is_public": true, "ram": 2048, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 40, "ephemeral": 0, "id": "3", "links": [ { "href": "%(host)s/v3/flavors/3", "rel": "self" }, { "href": "%(host)s/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "flavor-access:is_public": true, "ram": 4096, "swap": 0, "vcpus": 2 }, { "disabled": false, "disk": 80, "ephemeral": 0, "id": "4", "links": [ { "href": "%(host)s/v3/flavors/4", "rel": "self" }, { "href": "%(host)s/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "flavor-access:is_public": true, "ram": 8192, "swap": 0, "vcpus": 4 }, { "disabled": false, "disk": 160, "ephemeral": 0, "id": "5", "links": [ { "href": "%(host)s/v3/flavors/5", "rel": "self" }, { "href": "%(host)s/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "flavor-access:is_public": true, "ram": 16384, "swap": 0, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-list-resp.json.tpl0000664000175400017540000000035212323721477033663 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "%(flavor_id)s", "tenant_id": "fake_tenant" }, { "flavor_id": "%(flavor_id)s", "tenant_id": "openstack" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-add-tenant-req.json.tpl0000664000175400017540000000011212323721477034537 0ustar jenkinsjenkins00000000000000{ "add_tenant_access": { "tenant_id": "%(tenant_id)s" } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-add-tenant-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-add-tenant-resp.json.tp0000664000175400017540000000035412323721477034555 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "%(flavor_id)s", "tenant_id": "openstack" }, { "flavor_id": "%(flavor_id)s", "tenant_id": "%(tenant_id)s" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-create-resp.json.tpl0000664000175400017540000000102612323721477034152 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v3/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "flavor-access:is_public": false, "ram": 1024, "vcpus": 2, "disabled": false, "ephemeral": 0, "swap": 0 } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-remove-tenant-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-remove-tenant-resp.json0000664000175400017540000000015112323721477034673 0ustar jenkinsjenkins00000000000000{ "flavor_access": [{ "tenant_id": "openstack", "flavor_id": "%(flavor_id)s" }] }nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-show-resp.json.tpl0000664000175400017540000000101312323721477033663 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v3/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "m1.tiny", "flavor-access:is_public": true, "ram": 512, "vcpus": 1, "disabled": false, "ephemeral": 0, "swap": 0 } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-remove-tenant-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/flavor-access/flavor-access-remove-tenant-req.json.0000664000175400017540000000011512323721477034567 0ustar jenkinsjenkins00000000000000{ "remove_tenant_access": { "tenant_id": "%(tenant_id)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-security-groups/0000775000175400017540000000000012323722546026573 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-security-groups/server-post-req.json.tpl0000664000175400017540000000051112323721477033341 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/openstack/images/%(image_id)s", "flavor_ref" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "os-security-groups:security_groups": [{"name": "test"}] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-security-groups/server-post-resp.json.tpl0000664000175400017540000000071112323721477033525 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ], "os-security-groups:security_groups": [{"name": "test"}] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-security-groups/servers-detail-resp.json.tpl0000664000175400017540000000317312323721477034172 0ustar jenkinsjenkins00000000000000{ "servers": [ { "updated": "%(timestamp)s", "created": "%(timestamp)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "os-security-groups:security_groups": [{"name": "test"}], "key_name": null }] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-security-groups/server-get-resp.json.tpl0000664000175400017540000000264512323721477033327 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "os-security-groups:security_groups": [{"name": "test"}], "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/0000775000175400017540000000000012323722546025441 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-put-resp.json.tpl0000664000175400017540000000267512323721477032231 0ustar jenkinsjenkins00000000000000{ "server": { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-action-rebuild.json.tpl0000664000175400017540000000155312323721477033345 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s", "image_ref" : "%(glance_host)s/images/%(image_id)s", "name" : "new-server-test", "metadata" : { "meta_var" : "meta_val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/servers-details-resp.json.tpl0000664000175400017540000000326612323721477033226 0ustar jenkinsjenkins00000000000000{ "servers": [ { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "key_name": null } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/servers-list-resp.json.tpl0000664000175400017540000000063112323721477032545 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-action-rebuild-resp.json.tpl0000664000175400017540000000275412323721477034320 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "admin_password": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(image_id)s", "links": [ { "href": "%(glance_host)s/images/%(image_id)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "meta_var": "meta_val" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-post-req.json.tpl0000664000175400017540000000164112323721477032214 0ustar jenkinsjenkins00000000000000{ "server" : { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s", "name" : "new-server-test", "image_ref" : "%(host)s/openstack/images/%(image_id)s", "flavor_ref" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-post-resp.json.tpl0000664000175400017540000000077312323721477032403 0ustar jenkinsjenkins00000000000000{ "server": { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s", "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-put-req.json.tpl0000664000175400017540000000021512323721477032033 0ustar jenkinsjenkins00000000000000{ "server": { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-access-ips/server-get-resp.json.tpl0000664000175400017540000000272712323721477032176 0ustar jenkinsjenkins00000000000000{ "server": { "os-access-ips:access_ip_v4": "%(access_ip_v4)s", "os-access-ips:access_ip_v6": "%(access_ip_v6)s", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/0000775000175400017540000000000012323722546026677 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/detach-volume-req.json.tpl0000664000175400017540000000007712323721477033720 0ustar jenkinsjenkins00000000000000{ "detach": { "volume_id": "%(volume_id)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/attach-volume-req.json.tpl0000664000175400017540000000025512323721477033732 0ustar jenkinsjenkins00000000000000{ "attach": { "volume_id": "%(volume_id)s", "device": "%(device)s", "disk_bus": "%(disk_bus)s", "device_type": "%(device_type)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/server-post-req.json.tpl0000664000175400017540000000036312323721477033452 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/server-post-resp.json.tpl0000664000175400017540000000053712323721477033637 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/swap-volume-req.json.tpl0000664000175400017540000000020512323721477033433 0ustar jenkinsjenkins00000000000000{ "swap_volume_attachment": { "old_volume_id": "%(old_volume_id)s", "new_volume_id": "%(new_volume_id)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/servers-detail-resp.json.tpl0000664000175400017540000000330512323721477034273 0ustar jenkinsjenkins00000000000000{ "servers": [ { "updated": "%(timestamp)s", "created": "%(timestamp)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "os-extended-volumes:volumes_attached": [ {"id": "volume_id1"}, {"id": "volume_id2"} ], "key_name": null }] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-volumes/server-get-resp.json.tpl0000664000175400017540000000274312323721477033432 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "os-extended-volumes:volumes_attached": [ {"id": "volume_id1"}, {"id": "volume_id2"} ], "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-agents/0000775000175400017540000000000012323722546024670 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-agents/agent-post-req.json.tpl0000664000175400017540000000034212323721477031230 0ustar jenkinsjenkins00000000000000{ "agent": { "hypervisor": "%(hypervisor)s", "os": "%(os)s", "architecture": "%(architecture)s", "version": "%(version)s", "md5hash": "%(md5hash)s", "url": "%(url)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-agents/agents-get-resp.json.tpl0000664000175400017540000000045012323721477031367 0ustar jenkinsjenkins00000000000000{ "agents": [ { "agent_id": "1", "architecture": "x86", "hypervisor": "hypervisor", "md5hash": "add6bb58e139be103324d04d82d8f545", "os": "os", "url": "xxxxxxxxxxxx", "version": "8.0" } ] }nova-2014.1/nova/tests/integrated/v3/api_samples/os-agents/agent-update-put-resp.json.tpl0000664000175400017540000000024612323721477032520 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "1", "md5hash": "add6bb58e139be103324d04d82d8f545", "url": "xxx://xxxx/xxx/xxx", "version": "7.0" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-agents/agent-update-put-req.json.tpl0000664000175400017540000000016612323721477032337 0ustar jenkinsjenkins00000000000000{ "agent": { "url": "%(url)s", "md5hash": "%(md5hash)s", "version": "%(version)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-agents/agent-post-resp.json.tpl0000664000175400017540000000036712323721477031421 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "1", "architecture": "x86", "hypervisor": "hypervisor", "md5hash": "add6bb58e139be103324d04d82d8f545", "os": "os", "url": "xxxxxxxxxxxx", "version": "8.0" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-status/0000775000175400017540000000000012323722546026530 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-status/server-post-req.json.tpl0000664000175400017540000000036312323721477033303 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-status/server-post-resp.json.tpl0000664000175400017540000000053712323721477033470 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-status/servers-detail-resp.json.tpl0000664000175400017540000000340012323721477034120 0ustar jenkinsjenkins00000000000000{ "servers": [ { "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "os-extended-status:power_state": 1, "os-extended-status:locked_by": null, "updated": "%(timestamp)s", "created": "%(timestamp)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "key_name": null }] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-status/server-get-resp.json.tpl0000664000175400017540000000304112323721477033253 0ustar jenkinsjenkins00000000000000{ "server": { "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "os-extended-status:power_state": 1, "os-extended-status:locked_by": null, "updated": "%(timestamp)s", "created": "%(timestamp)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-lock-server/0000775000175400017540000000000012323722546025643 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-lock-server/unlock-server.json.tpl0000664000175400017540000000002712323721477032134 0ustar jenkinsjenkins00000000000000{ "unlock": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-lock-server/server-post-req.json.tpl0000664000175400017540000000144012323721477032413 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-lock-server/lock-server.json.tpl0000664000175400017540000000002512323721477031567 0ustar jenkinsjenkins00000000000000{ "lock": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-lock-server/server-post-resp.json.tpl0000664000175400017540000000053712323721477032603 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-manage/0000775000175400017540000000000012323722546025507 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-manage/flavor-create-post-resp.json.tpl0000664000175400017540000000102512323721477033664 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v3/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "flavor-access:is_public": true, "ram": 1024, "vcpus": 2, "disabled": false, "ephemeral": 0, "swap": 0 } } nova-2014.1/nova/tests/integrated/v3/api_samples/flavor-manage/flavor-create-post-req.json.tpl0000664000175400017540000000023012323721477033477 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-ips/0000775000175400017540000000000012323722546025067 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.json.tpl0000664000175400017540000000036312323721477031642 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.json.tpl0000664000175400017540000000060712323721477032025 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.json.tpl0000664000175400017540000000035112323721477031627 0ustar jenkinsjenkins00000000000000{ "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.json.tpl0000664000175400017540000000026012323721477033315 0ustar jenkinsjenkins00000000000000{ "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/0000775000175400017540000000000012323722546026004 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-statistics-resp.json.tpl0000664000175400017540000000055712323721477035242 0ustar jenkinsjenkins00000000000000{ "hypervisor_statistics": { "count": 1, "current_workload": 0, "disk_available_least": 0, "free_disk_gb": 1028, "free_ram_mb": 7680, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "vcpus": 1, "vcpus_used": 0 } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-servers-resp.json.tpl0000664000175400017540000000016012323721477034527 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "hypervisor_hostname": "fake-mini", "id": 1, "servers": [] } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-search-resp.json.tpl0000664000175400017540000000016612323721477034311 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-uptime-resp.json.tpl0000664000175400017540000000030612323721477034343 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "hypervisor_hostname": "fake-mini", "id": %(hypervisor_id)s, "uptime": " 08:32:11 up 93 days, 18:25, 12 users, load average: 0.20, 0.12, 0.14" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-detail-resp.json.tpl0000664000175400017540000000133212323721477034302 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "%(ip)s", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": %(hypervisor_id)s, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "%(host_name)s", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-list-resp.json.tpl0000664000175400017540000000016612323721477034017 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/nova/tests/integrated/v3/api_samples/os-hypervisors/hypervisors-show-resp.json.tpl0000664000175400017540000000116112323721477034020 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "%(ip)s", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": %(hypervisor_id)s, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "%(host_name)s", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-instance-actions/0000775000175400017540000000000012323722546026651 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-instance-actions/instance-actions-list-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-instance-actions/instance-actions-list-resp.json0000664000175400017540000000116312323721477034731 0ustar jenkinsjenkins00000000000000{ "instance_actions": [ { "action": "%(action)s", "instance_uuid": "%(uuid)s", "request_id": "%(request_id)s", "user_id": "%(integer_id)s", "project_id": "%(integer_id)s", "start_time": "%(timestamp)s", "message": "" }, { "action": "%(action)s", "instance_uuid": "%(uuid)s", "request_id": "%(request_id)s", "user_id": "%(integer_id)s", "project_id": "%(integer_id)s", "start_time": "%(timestamp)s", "message": "" } ] } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-instance-actions/instance-action-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-instance-actions/instance-action-get-resp.json.t0000664000175400017540000000156112323721477034616 0ustar jenkinsjenkins00000000000000{ "instance_action": { "action": "%(action)s", "instance_uuid": "%(instance_uuid)s", "request_id": "%(request_id)s", "user_id": "%(integer_id)s", "project_id": "%(integer_id)s", "start_time": "%(timestamp)s", "message": "", "events": [ { "event": "%(event)s", "start_time": "%(timestamp)s", "finish_time": "%(timestamp)s", "result": "%(result)s", "traceback": "" }, { "event": "%(event)s", "start_time": "%(timestamp)s", "finish_time": "%(timestamp)s", "result": "%(result)s", "traceback": "" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-deferred-delete/0000775000175400017540000000000012323722546026427 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-deferred-delete/force-delete-post-req.json.tpl0000664000175400017540000000003512323721477034226 0ustar jenkinsjenkins00000000000000{ "force_delete": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-deferred-delete/restore-post-req.json.tpl0000664000175400017540000000003012323721477033346 0ustar jenkinsjenkins00000000000000{ "restore": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-deferred-delete/server-post-req.json.tpl0000664000175400017540000000036312323721477033202 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-deferred-delete/server-post-resp.json.tpl0000664000175400017540000000053712323721477033367 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-flavor-rxtx/0000775000175400017540000000000012323722546025703 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json.tpl0000664000175400017540000000030312323721477033436 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s", "os-flavor-rxtx:rxtx_factor": 2.0 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json.tpl0000664000175400017540000000107212323721477033416 0ustar jenkinsjenkins00000000000000{ "flavor": { "disabled": false, "disk": 1, "ephemeral": 0, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "flavor-access:is_public": true, "ram": 512, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 1 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json.tpl0000664000175400017540000000630312323721477033614 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disabled": false, "disk": 1, "ephemeral": 0, "id": "1", "links": [ { "href": "http://openstack.example.com/v3/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "flavor-access:is_public": true, "ram": 512, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 20, "ephemeral": 0, "id": "2", "links": [ { "href": "http://openstack.example.com/v3/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "flavor-access:is_public": true, "ram": 2048, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 1 }, { "disabled": false, "disk": 40, "ephemeral": 0, "id": "3", "links": [ { "href": "http://openstack.example.com/v3/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "flavor-access:is_public": true, "ram": 4096, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 2 }, { "disabled": false, "disk": 80, "ephemeral": 0, "id": "4", "links": [ { "href": "http://openstack.example.com/v3/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "flavor-access:is_public": true, "ram": 8192, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 4 }, { "disabled": false, "disk": 160, "ephemeral": 0, "id": "5", "links": [ { "href": "http://openstack.example.com/v3/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "flavor-access:is_public": true, "ram": 16384, "os-flavor-rxtx:rxtx_factor": 1.0, "swap": 0, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json.tpl0000664000175400017540000000110012323721477033614 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v3/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "flavor-access:is_public": true, "ram": 1024, "os-flavor-rxtx:rxtx_factor": 2.0, "vcpus": 2, "disabled": false, "ephemeral": 0, "swap": 0 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/0000775000175400017540000000000012323722546027577 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/servers-details-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/servers-details-resp.json.0000664000175400017540000000245112323721477034637 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": {}, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/servers-list-resp.json.tpl0000664000175400017540000000063112323721477034703 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/server-post-req.json.tpl0000664000175400017540000000036312323721477034352 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/server-post-resp.json.tpl0000664000175400017540000000060712323721477034535 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hide-server-addresses/server-get-resp.json.tpl0000664000175400017540000000216712323721477034332 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-multinic/0000775000175400017540000000000012323722546025233 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-multinic/multinic-remove-fixed-ip-req.json.tpl0000664000175400017540000000010212323721477034326 0ustar jenkinsjenkins00000000000000{ "remove_fixed_ip":{ "address": "%(ip)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-multinic/server-post-req.json.tpl0000664000175400017540000000036312323721477032006 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-multinic/server-post-resp.json.tpl0000664000175400017540000000060712323721477032171 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-multinic/multinic-add-fixed-ip-req.json.tpl0000664000175400017540000000010712323721477033566 0ustar jenkinsjenkins00000000000000{ "add_fixed_ip":{ "network_id": %(networkId)s } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/0000775000175400017540000000000012323722546026774 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-list-resp.js0000664000175400017540000000072012323721477034640 0ustar jenkinsjenkins00000000000000{ "interface_attachments": [ { "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } ] }nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/server-post-req.json.tpl0000664000175400017540000000036312323721477033547 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-create-resp.0000664000175400017540000000062312323721477034575 0ustar jenkinsjenkins00000000000000{ "interface_attachment": { "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/server-post-resp.json.tpl0000664000175400017540000000060712323721477033732 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-create-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-create-req.j0000664000175400017540000000014212323721477034561 0ustar jenkinsjenkins00000000000000{ "interface_attachment": { "port_id": "ce531f90-199f-48c0-816c-13e38010b442" } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-attach-interfaces/attach-interfaces-show-resp.js0000664000175400017540000000062312323721477034647 0ustar jenkinsjenkins00000000000000{ "interface_attachment": { "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "port_state": "ACTIVE" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/0000775000175400017540000000000012323722546024162 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/hypervisors-pci-detail-resp.json.tpl0000664000175400017540000000220612323721477033232 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "%(ip)s", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "os-pci:pci_stats": [ { "count": 5, "extra_info": { "key1": "value1", "phys_function": "[[\"0x0000\", \"0x04\", \"0x00\", \"0x1\"]]" }, "keya": "valuea", "product_id": "1520", "vendor_id": "8086" } ], "running_vms": 0, "service": { "host": "043b3cacf6f34c90a7245151fc8ebcda", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/server-post-req.json.tpl0000664000175400017540000000144012323721477030732 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/hypervisors-pci-show-resp.json.tpl0000664000175400017540000000175512323721477032760 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "%(ip)s", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "os-pci:pci_stats": [ { "count": 5, "extra_info": { "key1": "value1", "phys_function": "[[\"0x0000\", \"0x04\", \"0x00\", \"0x1\"]]" }, "keya": "valuea", "product_id": "1520", "vendor_id": "8086" } ], "running_vms": 0, "service": { "host": "043b3cacf6f34c90a7245151fc8ebcda", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/server-post-resp.json.tpl0000664000175400017540000000053712323721477031122 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/pci-show-resp.json.tpl0000664000175400017540000000071712323721477030362 0ustar jenkinsjenkins00000000000000{ "pci_device": { "address": "0000:04:10.0", "compute_node_id": 1, "dev_id": "pci_0000_04_10_0", "dev_type": "type-VF", "extra_info": { "key1": "value1", "key2": "value2" }, "id": 1, "server_uuid": "69ba1044-0766-4ec0-b60d-09595de034a1", "label": "label_8086_1520", "product_id": "1520", "status": "available", "vendor_id": "8086" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/servers-detail-resp.json.tpl0000664000175400017540000000326712323721477031565 0ustar jenkinsjenkins00000000000000{ "servers": [ { "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-pci:pci_devices": [ { "id": 1 } ], "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/server-get-resp.json.tpl0000664000175400017540000000270512323721477030713 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-pci:pci_devices": [ { "id": 1 } ], "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/pci-detail-resp.json.tpl0000664000175400017540000000203212323721477030634 0ustar jenkinsjenkins00000000000000{ "pci_devices": [ { "address": "0000:04:10.0", "compute_node_id": 1, "dev_id": "pci_0000_04_10_0", "dev_type": "type-VF", "extra_info": { "key1": "value1", "key2": "value2" }, "id": 1, "server_uuid": "69ba1044-0766-4ec0-b60d-09595de034a1", "label": "label_8086_1520", "product_id": "1520", "status": "available", "vendor_id": "8086" }, { "address": "0000:04:10.1", "compute_node_id": 1, "dev_id": "pci_0000_04_10_1", "dev_type": "type-VF", "extra_info": { "key3": "value3", "key4": "value4" }, "id": 2, "server_uuid": "d5b446a6-a1b4-4d01-b4f0-eac37b3a62fc", "label": "label_8086_1520", "product_id": "1520", "status": "available", "vendor_id": "8086" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pci/pci-index-resp.json.tpl0000664000175400017540000000071512323721477030507 0ustar jenkinsjenkins00000000000000{ "pci_devices": [ { "address": "0000:04:10.0", "compute_node_id": 1, "id": 1, "product_id": "1520", "status": "available", "vendor_id": "8086" }, { "address": "0000:04:10.1", "compute_node_id": 1, "id": 2, "product_id": "1520", "status": "available", "vendor_id": "8086" } ] }nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/0000775000175400017540000000000012323722546027311 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/server-post-req.json.tpl0000664000175400017540000000036312323721477034064 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/get-rdp-console-post-req.jso0000664000175400017540000000007712323721477034606 0ustar jenkinsjenkins00000000000000{ "get_rdp_console": { "type": "rdp-html5" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/server-post-resp.json.tpl0000664000175400017540000000053712323721477034251 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000016300000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-console-auth-tokens/get-console-connect-info-get0000664000175400017540000000025712323721477034616 0ustar jenkinsjenkins00000000000000{ "console": { "instance_uuid": "%(id)s", "host": "%(host)s", "port": %(port)s, "internal_access_path": "%(internal_access_path)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-user-data/0000775000175400017540000000000012323722546025274 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-user-data/userdata-post-req.json.tpl0000664000175400017540000000044712323721477032354 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(host)s/openstack/images/%(image_id)s", "flavor_ref" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "user_data" : "%(user_data)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-user-data/userdata-post-resp.json.tpl0000664000175400017540000000053712323721477032536 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-create-backup/0000775000175400017540000000000012323722546026115 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-create-backup/server-post-req.json.tpl0000664000175400017540000000144012323721477032665 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-create-backup/server-post-resp.json.tpl0000664000175400017540000000053712323721477033055 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-create-backup/create-backup-req.json.tpl0000664000175400017540000000016312323721477033103 0ustar jenkinsjenkins00000000000000{ "create_backup": { "name": "Backup 1", "backup_type": "daily", "rotation": 1 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/0000775000175400017540000000000012323722546026525 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-spice-console-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-spice-console-post-resp.json0000664000175400017540000000020012323721477034664 0ustar jenkinsjenkins00000000000000{ "console": { "type": "spice-html5", "url": "http://127.0.0.1:6082/spice_auto.html?token=%(uuid)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/server-post-req.json.tpl0000664000175400017540000000036312323721477033300 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-rdp-console-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-rdp-console-post-resp.json.t0000664000175400017540000000015712323721477034623 0ustar jenkinsjenkins00000000000000{ "console": { "type": "rdp-html5", "url": "http://127.0.0.1:6083/?token=%(uuid)s" } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-rdp-console-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-rdp-console-post-req.json.tp0000664000175400017540000000007712323721477034622 0ustar jenkinsjenkins00000000000000{ "get_rdp_console": { "type": "rdp-html5" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/server-post-resp.json.tpl0000664000175400017540000000053712323721477033465 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-vnc-console-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-vnc-console-post-req.json.tp0000664000175400017540000000007312323721477034617 0ustar jenkinsjenkins00000000000000{ "get_vnc_console": { "type": "novnc" } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-spice-console-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-spice-console-post-req.json.0000664000175400017540000000010312323721477034562 0ustar jenkinsjenkins00000000000000{ "get_spice_console": { "type": "spice-html5" } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-vnc-console-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-remote-consoles/get-vnc-console-post-resp.json.t0000664000175400017540000000017012323721477034617 0ustar jenkinsjenkins00000000000000{ "console": { "type": "novnc", "url": "http://127.0.0.1:6080/vnc_auto.html?token=%(uuid)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pause-server/0000775000175400017540000000000012323722546026030 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-pause-server/server-post-req.json.tpl0000664000175400017540000000144012323721477032600 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pause-server/server-post-resp.json.tpl0000664000175400017540000000053712323721477032770 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pause-server/unpause-server.json.tpl0000664000175400017540000000003012323721477032500 0ustar jenkinsjenkins00000000000000{ "unpause": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-pause-server/pause-server.json.tpl0000664000175400017540000000002612323721477032142 0ustar jenkinsjenkins00000000000000{ "pause": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/0000775000175400017540000000000012323722546025514 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/user-quotas-show-get-resp.json.tpl0000664000175400017540000000045612323721477034206 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-show-get-resp.json.tpl0000664000175400017540000000045612323721477033232 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-post-req.json.tpl0000664000175400017540000000011612323721477034645 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 45 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-post-resp.json.tpl0000664000175400017540000000045612323721477033742 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 45, "id": "fake_tenant" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/user-quotas-update-post-resp.json.tpl0000664000175400017540000000045512323721477034715 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "instances": 9, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10, "id": "fake_tenant" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/user-quotas-update-post-req.json.tpl0000664000175400017540000000011512323721477034524 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 9 } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-post-resp.json.tp0000664000175400017540000000045612323721477034662 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "fixed_ips": -1, "floating_ips": 10, "id": "fake_tenant", "instances": 45, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json.tp0000664000175400017540000000045612323721477034663 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "id": "fake_tenant", "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-force-resp.json.tpl0000664000175400017540000000064212323721477034050 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 45, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10, "id": "fake_tenant" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-quota-sets/quotas-update-post-req.json.tpl0000664000175400017540000000007312323721477033553 0ustar jenkinsjenkins00000000000000{ "quota_set": { "security_groups": 45 } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/0000775000175400017540000000000012323722546026135 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-network.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-network.json.t0000664000175400017540000000003612323721477034630 0ustar jenkinsjenkins00000000000000{ "reset_network": null } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-server-state.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-server-state.j0000664000175400017540000000007112323721477034600 0ustar jenkinsjenkins00000000000000{ "reset_state": { "state": "active" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/server-post-req.json.tpl0000664000175400017540000000036312323721477032710 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-inject-network-info.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-inject-network-info.0000664000175400017540000000004412323721477034556 0ustar jenkinsjenkins00000000000000{ "inject_network_info": null } nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/server-post-resp.json.tpl0000664000175400017540000000053712323721477033075 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-actions/admin-actions-reset-state.json.tpl0000664000175400017540000000007112323721477034612 0ustar jenkinsjenkins00000000000000{ 'reset_state': { 'state': 'active' } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-usage/0000775000175400017540000000000012323722546026017 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-usage/server-post-req.json.tpl0000664000175400017540000000036312323721477032572 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-usage/server-post-resp.json.tpl0000664000175400017540000000060712323721477032755 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-usage/servers-detail-resp.json.tpl0000664000175400017540000000324612323721477033417 0ustar jenkinsjenkins00000000000000{ "servers": [ { "status": "ACTIVE", "updated": "%(timestamp)s", "os-server-usage:launched_at": "%(timestamp)s", "user_id": "fake", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "created": "%(timestamp)s", "name": "new-server-test", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "id": "%(uuid)s", "os-server-usage:terminated_at": null, "tenant_id": "openstack", "progress": 0, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "metadata": { "My Server Name": "Apache1" } }] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-usage/server-get-resp.json.tpl0000664000175400017540000000271212323721477032546 0ustar jenkinsjenkins00000000000000{ "server": { "os-server-usage:launched_at": "%(timestamp)s", "os-server-usage:terminated_at": null, "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/all_extensions/0000775000175400017540000000000012323722546026017 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/all_extensions/servers-details-resp.json.tpl0000664000175400017540000000506712323721477033605 0ustar jenkinsjenkins00000000000000{ "servers": [ { "os-access-ips:access_ip_v4": "", "os-access-ips:access_ip_v6": "", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-config-drive:config_drive": "", "os-extended-availability-zone:availability_zone": "nova", "os-extended-server-attributes:host": "%(compute_host)s", "os-extended-server-attributes:hypervisor_hostname": "%(hypervisor_hostname)s", "os-extended-server-attributes:instance_name": "instance-00000001", "os-extended-status:locked_by": null, "os-extended-status:power_state": 1, "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "os-extended-volumes:volumes_attached": [], "os-pci:pci_devices": [{"id": 1}], "os-server-usage:launched_at": "%(timestamp)s", "os-server-usage:terminated_at": null, "progress": 0, "os-security-groups:security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/all_extensions/servers-list-resp.json.tpl0000664000175400017540000000063712323721477033131 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(uuid)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/all_extensions/server-post-req.json.tpl0000664000175400017540000000036312323721477032572 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/all_extensions/server-post-resp.json.tpl0000664000175400017540000000105412323721477032752 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "os-security-groups:security_groups": [ { "name": "default" } ], "os-access-ips:access_ip_v4": "", "os-access-ips:access_ip_v6": "" } } nova-2014.1/nova/tests/integrated/v3/api_samples/all_extensions/server-get-resp.json.tpl0000664000175400017540000000440612323721477032550 0ustar jenkinsjenkins00000000000000{ "server": { "os-access-ips:access_ip_v4": "", "os-access-ips:access_ip_v6": "", "addresses": { "private": [ { "addr": "%(ip)s", "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-config-drive:config_drive": "", "os-extended-availability-zone:availability_zone": "nova", "os-extended-server-attributes:host": "%(compute_host)s", "os-extended-server-attributes:hypervisor_hostname": "%(hypervisor_hostname)s", "os-extended-server-attributes:instance_name": "instance-00000001", "os-extended-status:locked_by": null, "os-extended-status:power_state": 1, "os-extended-status:task_state": null, "os-extended-status:vm_state": "active", "os-extended-volumes:volumes_attached": [], "os-pci:pci_devices": [{"id": 1}], "os-server-usage:launched_at": "%(timestamp)s", "os-server-usage:terminated_at": null, "progress": 0, "os-security-groups:security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-external-events/0000775000175400017540000000000012323722546030037 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-external-events/event-create-req.json.tpl0000664000175400017540000000024012323721477034675 0ustar jenkinsjenkins00000000000000{ "events": [ { "name": "%(name)s", "tag": "%(tag)s", "status": "%(status)s", "server_uuid": "%(uuid)s" } ] } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-external-events/event-create-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-server-external-events/event-create-resp.json.tp0000664000175400017540000000031712323721477034710 0ustar jenkinsjenkins00000000000000{ "events": [ { "code": 200, "name": "%(name)s", "server_uuid": "%(uuid)s", "status": "%(status)s", "tag": "%(tag)s" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-external-events/server-post-req.json.tpl0000664000175400017540000000036312323721477034612 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-server-external-events/server-post-resp.json.tpl0000664000175400017540000000053712323721477034777 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/0000775000175400017540000000000012323722546024675 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-unrescue-req.json.tpl0000664000175400017540000000003012323721477032303 0ustar jenkinsjenkins00000000000000{ "unrescue": null }nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-rescue-req.json.tpl0000664000175400017540000000010312323721477031741 0ustar jenkinsjenkins00000000000000{ "rescue": { "admin_password": "%(password)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-post-req.json.tpl0000664000175400017540000000036312323721477031450 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-post-resp.json.tpl0000664000175400017540000000053712323721477031635 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-get-resp-unrescue.json.tpl0000664000175400017540000000254312323721477033255 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "%(status)s", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-get-resp-rescue.json.tpl0000664000175400017540000000251412323721477032710 0ustar jenkinsjenkins00000000000000{ "server": { "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "status": "%(status)s", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "key_name": null } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-rescue/server-rescue.json.tpl0000664000175400017540000000005112323721477031156 0ustar jenkinsjenkins00000000000000{ "admin_password": "%(password)s" } nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-password/0000775000175400017540000000000012323722546026337 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-password/server-post-req.json.tpl0000664000175400017540000000036312323721477033112 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-password/server-post-resp.json.tpl0000664000175400017540000000060712323721477033275 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "http://openstack.example.com/v3/servers/%(uuid)s", "rel": "self" }, { "href": "http://openstack.example.com/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-password/admin-password-change-password.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-admin-password/admin-password-change-password.js0000664000175400017540000000011612323721477034710 0ustar jenkinsjenkins00000000000000{ "change_password" : { "admin_password" : "%(password)s" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/0000775000175400017540000000000012323722546024547 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/hosts-list-resp.json.tpl0000664000175400017540000000162712323721477031330 0ustar jenkinsjenkins00000000000000{ "hosts": [ { "host_name": "%(host_name)s", "service": "conductor", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "compute", "zone": "nova" }, { "host_name": "%(host_name)s", "service": "cert", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "consoleauth", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "network", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "scheduler", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "cells", "zone": "internal" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/hosts-list-compute-service-resp.json.tpl0000664000175400017540000000022412323721477034430 0ustar jenkinsjenkins00000000000000{ "hosts": [ { "host_name": "%(host_name)s", "service": "compute", "zone": "nova" } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/host-get-shutdown.json.tpl0000664000175400017540000000013412323721477031643 0ustar jenkinsjenkins00000000000000{ "host": { "host": "%(host_name)s", "power_action": "shutdown" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/host-put-maintenance-resp.json.tpl0000664000175400017540000000020412323721477033250 0ustar jenkinsjenkins00000000000000{ "host": { "host": "%(host_name)s", "maintenance_mode": "off_maintenance", "status": "enabled" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/host-get-resp.json.tpl0000664000175400017540000000131612323721477030744 0ustar jenkinsjenkins00000000000000{ "host": [ { "resource": { "cpu": 1, "disk_gb": 1028, "host": "%(host_name)s", "memory_mb": 8192, "project": "(total)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "%(host_name)s", "memory_mb": 512, "project": "(used_now)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "%(host_name)s", "memory_mb": 0, "project": "(used_max)" } } ] } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/host-get-reboot.json.tpl0000664000175400017540000000013212323721477031260 0ustar jenkinsjenkins00000000000000{ "host": { "host": "%(host_name)s", "power_action": "reboot" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/host-get-startup.json.tpl0000664000175400017540000000013312323721477031471 0ustar jenkinsjenkins00000000000000{ "host": { "host": "%(host_name)s", "power_action": "startup" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-hosts/host-put-maintenance-req.json.tpl0000664000175400017540000000013212323721477033066 0ustar jenkinsjenkins00000000000000{ "host": { "status": "enable", "maintenance_mode": "disable" } } nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/0000775000175400017540000000000012323722546030677 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-post-req.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-post-req.json.0000664000175400017540000000036312323721477034732 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "image_ref" : "%(glance_host)s/images/%(image_id)s", "flavor_ref" : "%(host)s/flavors/1", "metadata" : { "My Server Name" : "Apache1" } } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-post-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-post-resp.json0000664000175400017540000000053712323721477035041 0ustar jenkinsjenkins00000000000000{ "server": { "admin_password": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/servers-detail-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/servers-detail-resp.j0000664000175400017540000000346312323721477034762 0ustar jenkinsjenkins00000000000000{ "servers": [ { "os-extended-server-attributes:host": "%(compute_host)s", "os-extended-server-attributes:hypervisor_hostname": "%(hypervisor_hostname)s", "os-extended-server-attributes:instance_name": "%(instance_name)s", "updated": "%(timestamp)s", "created": "%(timestamp)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "key_name": null } ] }././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-get-resp.json.tplnova-2014.1/nova/tests/integrated/v3/api_samples/os-extended-server-attributes/server-get-resp.json.0000664000175400017540000000311212323721477034701 0ustar jenkinsjenkins00000000000000{ "server": { "os-extended-server-attributes:host": "%(compute_host)s", "os-extended-server-attributes:hypervisor_hostname": "%(hypervisor_hostname)s", "os-extended-server-attributes:instance_name": "%(instance_name)s", "updated": "%(timestamp)s", "created": "%(timestamp)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "mac_addr": "aa:bb:cc:dd:ee:ff", "type": "fixed" } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/flavors/1", "rel": "bookmark" } ] }, "host_id": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(glance_host)s/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v3/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake", "key_name": null } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-cells/0000775000175400017540000000000012323722546024511 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/api_samples/os-cells/cells-get-resp.json.tpl0000664000175400017540000000023512323721477031032 0ustar jenkinsjenkins00000000000000{ "cell": { "name": "cell3", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username3" } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-cells/cells-list-empty-resp.json.tpl0000664000175400017540000000002312323721477032355 0ustar jenkinsjenkins00000000000000{ "cells": [] }nova-2014.1/nova/tests/integrated/v3/api_samples/os-cells/cells-capacities-resp.json.tpl0000664000175400017540000000116212323721477032360 0ustar jenkinsjenkins00000000000000{ "cell": { "capacities": { "disk_free": { "total_mb": 1052672, "units_by_mb": { "0": 0, "163840": 5, "20480": 46, "40960": 23, "81920": 11 } }, "ram_free": { "total_mb": 7680, "units_by_mb": { "16384": 0, "2048": 3, "4096": 1, "512": 13, "8192": 0 } } } } }nova-2014.1/nova/tests/integrated/v3/api_samples/os-cells/cells-list-resp.json.tpl0000664000175400017540000000160412323721477031227 0ustar jenkinsjenkins00000000000000{ "cells": [ { "name": "cell1", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username1" }, { "name": "cell3", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username3" }, { "name": "cell5", "rpc_host": null, "rpc_port": null, "type": "child", "username": "username5" }, { "name": "cell2", "rpc_host": null, "rpc_port": null, "type": "parent", "username": "username2" }, { "name": "cell4", "rpc_host": null, "rpc_port": null, "type": "parent", "username": "username4" } ] }nova-2014.1/nova/tests/integrated/v3/test_instance_actions.py0000664000175400017540000000703612323721477025440 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from nova.compute import api as compute_api from nova import db from nova.tests import fake_instance_actions from nova.tests.integrated.v3 import api_sample_base from nova.tests import utils as test_utils class InstanceActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = 'os-instance-actions' def setUp(self): super(InstanceActionsSampleJsonTest, self).setUp() self.actions = fake_instance_actions.FAKE_ACTIONS self.events = fake_instance_actions.FAKE_EVENTS self.instance = test_utils.get_test_instance() def fake_instance_action_get_by_request_id(context, uuid, request_id): return copy.deepcopy(self.actions[uuid][request_id]) def fake_instance_actions_get(context, uuid): return [copy.deepcopy(value) for value in self.actions[uuid].itervalues()] def fake_instance_action_events_get(context, action_id): return copy.deepcopy(self.events[action_id]) def fake_instance_get_by_uuid(context, instance_id): return self.instance def fake_get(self, context, instance_uuid, **kwargs): return {'uuid': instance_uuid} self.stubs.Set(db, 'action_get_by_request_id', fake_instance_action_get_by_request_id) self.stubs.Set(db, 'actions_get', fake_instance_actions_get) self.stubs.Set(db, 'action_events_get', fake_instance_action_events_get) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(compute_api.API, 'get', fake_get) def test_instance_action_get(self): fake_uuid = fake_instance_actions.FAKE_UUID fake_request_id = fake_instance_actions.FAKE_REQUEST_ID1 fake_action = self.actions[fake_uuid][fake_request_id] response = self._do_get('servers/%s/os-instance-actions/%s' % (fake_uuid, fake_request_id)) subs = self._get_regexes() subs['action'] = '(reboot)|(resize)' subs['instance_uuid'] = fake_uuid subs['integer_id'] = '[0-9]+' subs['request_id'] = fake_action['request_id'] subs['start_time'] = fake_action['start_time'] subs['result'] = '(Success)|(Error)' subs['event'] = '(schedule)|(compute_create)' self._verify_response('instance-action-get-resp', subs, response, 200) def test_instance_actions_list(self): fake_uuid = fake_instance_actions.FAKE_UUID response = self._do_get('servers/%s/os-instance-actions' % (fake_uuid)) subs = self._get_regexes() subs['action'] = '(reboot)|(resize)' subs['integer_id'] = '[0-9]+' subs['request_id'] = ('req-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}' '-[0-9a-f]{4}-[0-9a-f]{12}') self._verify_response('instance-actions-list-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_server_diagnostics.py0000664000175400017540000000211612323721477026003 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ServerDiagnosticsSamplesJsonTest(test_servers.ServersSampleBase): extension_name = "os-server-diagnostics" def test_server_diagnostics_get(self): uuid = self._post_server() response = self._do_get('servers/%s/os-server-diagnostics' % uuid) subs = self._get_regexes() self._verify_response('server-diagnostics-get-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_consoles.py0000664000175400017540000000414512323721477023737 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ConsolesSamplesJsonTest(test_servers.ServersSampleBase): sample_dir = "consoles" def setUp(self): super(ConsolesSamplesJsonTest, self).setUp() self.flags(console_public_hostname='fake') self.flags(console_host='fake') self.flags(console_driver='nova.console.fake.FakeConsoleProxy') self.console = self.start_service('console', host='fake') def _create_consoles(self, server_uuid): response = self._do_post('servers/%s/consoles' % server_uuid, 'consoles-create-req', {}) self.assertEqual(response.status, 201) def test_create_consoles(self): uuid = self._post_server() self._create_consoles(uuid) def test_list_consoles(self): uuid = self._post_server() self._create_consoles(uuid) response = self._do_get('servers/%s/consoles' % uuid) self._verify_response('consoles-list-get-resp', {}, response, 200) def test_console_get(self): uuid = self._post_server() self._create_consoles(uuid) response = self._do_get('servers/%s/consoles/1' % uuid) subs = self._get_regexes() self._verify_response('consoles-get-resp', subs, response, 200) def test_console_delete(self): uuid = self._post_server() self._create_consoles(uuid) response = self._do_delete('servers/%s/consoles/1' % uuid) self.assertEqual(response.status, 202) nova-2014.1/nova/tests/integrated/v3/test_migrations.py0000664000175400017540000000522012323721477024261 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from nova.compute import api as compute_api from nova.tests.integrated.v3 import api_sample_base class MigrationsSamplesJsonTest(api_sample_base.ApiSampleTestBaseV3): extension_name = "os-migrations" def _stub_migrations(self, context, filters): fake_migrations = [ { 'id': 1234, 'source_node': 'node1', 'dest_node': 'node2', 'source_compute': 'compute1', 'dest_compute': 'compute2', 'dest_host': '1.2.3.4', 'status': 'Done', 'instance_uuid': 'instance_id_123', 'old_instance_type_id': 1, 'new_instance_type_id': 2, 'created_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'deleted_at': None, 'deleted': False }, { 'id': 5678, 'source_node': 'node10', 'dest_node': 'node20', 'source_compute': 'compute10', 'dest_compute': 'compute20', 'dest_host': '5.6.7.8', 'status': 'Done', 'instance_uuid': 'instance_id_456', 'old_instance_type_id': 5, 'new_instance_type_id': 6, 'created_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'updated_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'deleted_at': None, 'deleted': False } ] return fake_migrations def setUp(self): super(MigrationsSamplesJsonTest, self).setUp() self.stubs.Set(compute_api.API, 'get_migrations', self._stub_migrations) def test_get_migrations(self): response = self._do_get('os-migrations') subs = self._get_regexes() self.assertEqual(response.status, 200) self._verify_response('migrations-get', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/__init__.py0000664000175400017540000000000012323721477022574 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/v3/test_server_usage.py0000664000175400017540000000266712323721477024613 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import test_servers class ServerUsageSampleJsonTest(test_servers.ServersSampleBase): extension_name = 'os-server-usage' def setUp(self): """setUp method for server usage.""" super(ServerUsageSampleJsonTest, self).setUp() self.uuid = self._post_server() def test_show(self): response = self._do_get('servers/%s' % self.uuid) subs = self._get_regexes() subs['id'] = self.uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_details(self): response = self._do_get('servers/detail') subs = self._get_regexes() subs['id'] = self.uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) nova-2014.1/nova/tests/integrated/v3/test_flavor_extraspecs.py0000664000175400017540000000477412323721477025654 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.tests.integrated.v3 import api_sample_base class FlavorExtraSpecsSampleJsonTests(api_sample_base.ApiSampleTestBaseV3): extension_name = 'flavor-extra-specs' def _flavor_extra_specs_create(self): subs = {'value1': 'value1', 'value2': 'value2' } response = self._do_post('flavors/1/flavor-extra-specs', 'flavor-extra-specs-create-req', subs) self._verify_response('flavor-extra-specs-create-resp', subs, response, 201) def test_flavor_extra_specs_get(self): subs = {'value1': 'value1'} self._flavor_extra_specs_create() response = self._do_get('flavors/1/flavor-extra-specs/key1') self._verify_response('flavor-extra-specs-get-resp', subs, response, 200) def test_flavor_extra_specs_list(self): subs = {'value1': 'value1', 'value2': 'value2' } self._flavor_extra_specs_create() response = self._do_get('flavors/1/flavor-extra-specs') self._verify_response('flavor-extra-specs-list-resp', subs, response, 200) def test_flavor_extra_specs_create(self): self._flavor_extra_specs_create() def test_flavor_extra_specs_update(self): subs = {'value1': 'new_value1'} self._flavor_extra_specs_create() response = self._do_put('flavors/1/flavor-extra-specs/key1', 'flavor-extra-specs-update-req', subs) self._verify_response('flavor-extra-specs-update-resp', subs, response, 200) def test_flavor_extra_specs_delete(self): self._flavor_extra_specs_create() response = self._do_delete('flavors/1/flavor-extra-specs/key1') self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') nova-2014.1/nova/tests/integrated/test_multiprocess_api.py0000664000175400017540000001674312323721477025153 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Intel, LLC # Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test multiprocess enabled API service. """ import errno import fixtures import os import signal import time import traceback from nova.openstack.common import log as logging from nova import service from nova.tests.integrated.api import client from nova.tests.integrated import integrated_helpers LOG = logging.getLogger(__name__) class MultiprocessWSGITest(integrated_helpers._IntegratedTestBase): _api_version = 'v2' def _start_api_service(self): # Process will be started in _spawn() self.osapi = service.WSGIService("osapi_compute") self.auth_url = 'http://%(host)s:%(port)s/%(api_version)s' % ({ 'host': self.osapi.host, 'port': self.osapi.port, 'api_version': self._api_version}) LOG.info('auth_url = %s' % self.auth_url) def _get_flags(self): self.workers = 2 f = super(MultiprocessWSGITest, self)._get_flags() f['osapi_compute_workers'] = self.workers return f def _spawn(self): pid = os.fork() if pid == 0: # NOTE(johannes): We can't let the child processes exit back # into the unit test framework since then we'll have multiple # processes running the same tests (and possibly forking more # processes that end up in the same situation). So we need # to catch all exceptions and make sure nothing leaks out, in # particlar SystemExit, which is raised by sys.exit(). We use # os._exit() which doesn't have this problem. status = 0 try: launcher = service.process_launcher() launcher.launch_service(self.osapi, workers=self.osapi.workers) launcher.wait() except SystemExit as exc: status = exc.code except BaseException: # We need to be defensive here too try: traceback.print_exc() except BaseException: LOG.error("Couldn't print traceback") status = 2 # Really exit os._exit(status) self.pid = pid # Wait at most 10 seconds to spawn workers cond = lambda: self.workers == len(self._get_workers()) timeout = 10 self._wait(cond, timeout) workers = self._get_workers() self.assertEqual(len(workers), self.workers) return workers def _wait(self, cond, timeout): start = time.time() while True: if cond(): break if time.time() - start > timeout: break time.sleep(.1) def tearDown(self): if self.pid: # Make sure all processes are stopped os.kill(self.pid, signal.SIGTERM) try: # Make sure we reap our test process self._reap_test() except fixtures.TimeoutException: # If the child gets stuck or is too slow in existing # after receiving the SIGTERM, gracefully handle the # timeout exception and try harder to kill it. We need # to do this otherwise the child process can hold up # the test run os.kill(self.pid, signal.SIGKILL) super(MultiprocessWSGITest, self).tearDown() def _reap_test(self): pid, status = os.waitpid(self.pid, 0) self.pid = None return status def _get_workers(self): # NOTE(hartsocks): use of ps checks the process table for child pid # entries these processes may be ended but not reaped so ps may # show processes that are still being cleaned out of the table. f = os.popen('ps ax -o pid,ppid,command') # Skip ps header f.readline() processes = [tuple(int(p) for p in l.strip().split()[:2]) for l in f.readlines()] return [p for p, pp in processes if pp == self.pid] def wait_on_process_until_end(self, worker_pid): # NOTE: the testing framework itself has a # built in test timeout function so a test # stuck in an infinite loop will eventually # be killed by the test framework. LOG.info('waiting on process %r to exit' % worker_pid) while True: # poll the process until it isn't there to poll try: os.kill(worker_pid, 0) time.sleep(0.1) except OSError as err: # by watching specifically for errno.ESRCH # we guarantee this loop continues until # the process table has cleared the pid. # Child process table entries hang around # for several cycles in case a parent process # needs to check their exit state. if err.errno == errno.ESRCH: break LOG.info('process %r has exited' % worker_pid) def test_killed_worker_recover(self): start_workers = self._spawn() worker_pid = start_workers[0] # kill one worker and check if new worker can come up LOG.info('pid of first child is %s' % worker_pid) # signal child os.kill(worker_pid, signal.SIGTERM) self.wait_on_process_until_end(worker_pid) # Make sure worker pids don't match end_workers = self._get_workers() LOG.info('workers: %r' % end_workers) self.assertNotEqual(start_workers, end_workers) # check if api service still works flavors = self.api.get_flavors() self.assertTrue(len(flavors) > 0, 'Num of flavors > 0.') def _terminate_with_signal(self, sig): self._spawn() # check if api service is working flavors = self.api.get_flavors() self.assertTrue(len(flavors) > 0, 'Num of flavors > 0.') worker_pids = self._get_workers() LOG.info("sent launcher_process pid: %r signal: %r" % (self.pid, sig)) os.kill(self.pid, sig) # did you know the test framework has a timeout of its own? # if a test takes too long, the test will be killed. for pid in worker_pids: self.wait_on_process_until_end(pid) workers = self._get_workers() self.assertFalse(workers, 'OS processes left %r' % workers) def test_terminate_sigkill(self): self._terminate_with_signal(signal.SIGKILL) status = self._reap_test() self.assertTrue(os.WIFSIGNALED(status)) self.assertEqual(os.WTERMSIG(status), signal.SIGKILL) def test_terminate_sigterm(self): self._terminate_with_signal(signal.SIGTERM) status = self._reap_test() self.assertTrue(os.WIFEXITED(status)) self.assertEqual(os.WEXITSTATUS(status), 0) class MultiprocessWSGITestV3(client.TestOpenStackClientV3Mixin, MultiprocessWSGITest): _api_version = 'v3' nova-2014.1/nova/tests/integrated/test_servers.py0000664000175400017540000004702012323721477023252 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import time import zlib from nova import context from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova.tests import fake_network from nova.tests.integrated.api import client from nova.tests.integrated import integrated_helpers import nova.virt.fake LOG = logging.getLogger(__name__) class ServersTest(integrated_helpers._IntegratedTestBase): _api_version = 'v2' _force_delete_parameter = 'forceDelete' _image_ref_parameter = 'imageRef' _flavor_ref_parameter = 'flavorRef' _access_ipv4_parameter = 'accessIPv4' _access_ipv6_parameter = 'accessIPv6' _return_resv_id_parameter = 'return_reservation_id' _min_count_parameter = 'min_count' def setUp(self): super(ServersTest, self).setUp() self.conductor = self.start_service( 'conductor', manager='nova.conductor.manager.ConductorManager') def _wait_for_state_change(self, server, from_status): for i in xrange(0, 50): server = self.api.get_server(server['id']) if server['status'] != from_status: break time.sleep(.1) return server def _restart_compute_service(self, *args, **kwargs): """restart compute service. NOTE: fake driver forgets all instances.""" self.compute.kill() self.compute = self.start_service('compute', *args, **kwargs) def test_get_servers(self): # Simple check that listing servers works. servers = self.api.get_servers() for server in servers: LOG.debug("server: %s" % server) def test_create_server_with_error(self): # Create a server which will enter error state. fake_network.set_stub_network_methods(self.stubs) def throw_error(*_): raise Exception() self.stubs.Set(nova.virt.fake.FakeDriver, 'spawn', throw_error) server = self._build_minimal_create_server_request() created_server = self.api.post_server({"server": server}) created_server_id = created_server['id'] found_server = self.api.get_server(created_server_id) self.assertEqual(created_server_id, found_server['id']) found_server = self._wait_for_state_change(found_server, 'BUILD') self.assertEqual('ERROR', found_server['status']) self._delete_server(created_server_id) def test_create_and_delete_server(self): # Creates and deletes a server. fake_network.set_stub_network_methods(self.stubs) # Create server # Build the server data gradually, checking errors along the way server = {} good_server = self._build_minimal_create_server_request() post = {'server': server} # Without an imageRef, this throws 500. # TODO(justinsb): Check whatever the spec says should be thrown here self.assertRaises(client.OpenStackApiException, self.api.post_server, post) # With an invalid imageRef, this throws 500. server[self._image_ref_parameter] = self.get_invalid_image() # TODO(justinsb): Check whatever the spec says should be thrown here self.assertRaises(client.OpenStackApiException, self.api.post_server, post) # Add a valid imageRef server[self._image_ref_parameter] = good_server.get( self._image_ref_parameter) # Without flavorRef, this throws 500 # TODO(justinsb): Check whatever the spec says should be thrown here self.assertRaises(client.OpenStackApiException, self.api.post_server, post) server[self._flavor_ref_parameter] = good_server.get( self._flavor_ref_parameter) # Without a name, this throws 500 # TODO(justinsb): Check whatever the spec says should be thrown here self.assertRaises(client.OpenStackApiException, self.api.post_server, post) # Set a valid server name server['name'] = good_server['name'] created_server = self.api.post_server(post) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] # Check it's there found_server = self.api.get_server(created_server_id) self.assertEqual(created_server_id, found_server['id']) # It should also be in the all-servers list servers = self.api.get_servers() server_ids = [s['id'] for s in servers] self.assertIn(created_server_id, server_ids) found_server = self._wait_for_state_change(found_server, 'BUILD') # It should be available... # TODO(justinsb): Mock doesn't yet do this... self.assertEqual('ACTIVE', found_server['status']) servers = self.api.get_servers(detail=True) for server in servers: self.assertIn("image", server) self.assertIn("flavor", server) self._delete_server(created_server_id) def _force_reclaim(self): # Make sure that compute manager thinks the instance is # old enough to be expired the_past = timeutils.utcnow() + datetime.timedelta(hours=1) timeutils.set_time_override(override_time=the_past) ctxt = context.get_admin_context() self.compute._reclaim_queued_deletes(ctxt) def test_deferred_delete(self): # Creates, deletes and waits for server to be reclaimed. self.flags(reclaim_instance_interval=1) fake_network.set_stub_network_methods(self.stubs) # Create server server = self._build_minimal_create_server_request() created_server = self.api.post_server({'server': server}) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] # Wait for it to finish being created found_server = self._wait_for_state_change(created_server, 'BUILD') # It should be available... self.assertEqual('ACTIVE', found_server['status']) # Cannot restore unless instance is deleted self.assertRaises(client.OpenStackApiException, self.api.post_server_action, created_server_id, {'restore': {}}) # Cannot forceDelete unless instance is deleted self.assertRaises(client.OpenStackApiException, self.api.post_server_action, created_server_id, {'forceDelete': {}}) # Delete the server self.api.delete_server(created_server_id) # Wait for queued deletion found_server = self._wait_for_state_change(found_server, 'ACTIVE') self.assertEqual('SOFT_DELETED', found_server['status']) self._force_reclaim() # Wait for real deletion self._wait_for_deletion(created_server_id) def test_deferred_delete_restore(self): # Creates, deletes and restores a server. self.flags(reclaim_instance_interval=3600) fake_network.set_stub_network_methods(self.stubs) # Create server server = self._build_minimal_create_server_request() created_server = self.api.post_server({'server': server}) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] # Wait for it to finish being created found_server = self._wait_for_state_change(created_server, 'BUILD') # It should be available... self.assertEqual('ACTIVE', found_server['status']) # Delete the server self.api.delete_server(created_server_id) # Wait for queued deletion found_server = self._wait_for_state_change(found_server, 'ACTIVE') self.assertEqual('SOFT_DELETED', found_server['status']) # Restore server self.api.post_server_action(created_server_id, {'restore': {}}) # Wait for server to become active again found_server = self._wait_for_state_change(found_server, 'DELETED') self.assertEqual('ACTIVE', found_server['status']) def test_deferred_delete_force(self): # Creates, deletes and force deletes a server. self.flags(reclaim_instance_interval=3600) fake_network.set_stub_network_methods(self.stubs) # Create server server = self._build_minimal_create_server_request() created_server = self.api.post_server({'server': server}) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] # Wait for it to finish being created found_server = self._wait_for_state_change(created_server, 'BUILD') # It should be available... self.assertEqual('ACTIVE', found_server['status']) # Delete the server self.api.delete_server(created_server_id) # Wait for queued deletion found_server = self._wait_for_state_change(found_server, 'ACTIVE') self.assertEqual('SOFT_DELETED', found_server['status']) # Force delete server self.api.post_server_action(created_server_id, {self._force_delete_parameter: {}}) # Wait for real deletion self._wait_for_deletion(created_server_id) def _wait_for_deletion(self, server_id): # Wait (briefly) for deletion for _retries in range(50): try: found_server = self.api.get_server(server_id) except client.OpenStackApiNotFoundException: found_server = None LOG.debug("Got 404, proceeding") break LOG.debug("Found_server=%s" % found_server) # TODO(justinsb): Mock doesn't yet do accurate state changes #if found_server['status'] != 'deleting': # break time.sleep(.1) # Should be gone self.assertFalse(found_server) def _delete_server(self, server_id): # Delete the server self.api.delete_server(server_id) self._wait_for_deletion(server_id) def test_create_server_with_metadata(self): # Creates a server with metadata. fake_network.set_stub_network_methods(self.stubs) # Build the server data gradually, checking errors along the way server = self._build_minimal_create_server_request() metadata = {} for i in range(30): metadata['key_%s' % i] = 'value_%s' % i server['metadata'] = metadata post = {'server': server} created_server = self.api.post_server(post) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] found_server = self.api.get_server(created_server_id) self.assertEqual(created_server_id, found_server['id']) self.assertEqual(metadata, found_server.get('metadata')) # The server should also be in the all-servers details list servers = self.api.get_servers(detail=True) server_map = dict((server['id'], server) for server in servers) found_server = server_map.get(created_server_id) self.assertTrue(found_server) # Details do include metadata self.assertEqual(metadata, found_server.get('metadata')) # The server should also be in the all-servers summary list servers = self.api.get_servers(detail=False) server_map = dict((server['id'], server) for server in servers) found_server = server_map.get(created_server_id) self.assertTrue(found_server) # Summary should not include metadata self.assertFalse(found_server.get('metadata')) # Cleanup self._delete_server(created_server_id) def test_create_and_rebuild_server(self): # Rebuild a server with metadata. fake_network.set_stub_network_methods(self.stubs) # create a server with initially has no metadata server = self._build_minimal_create_server_request() server_post = {'server': server} metadata = {} for i in range(30): metadata['key_%s' % i] = 'value_%s' % i server_post['server']['metadata'] = metadata created_server = self.api.post_server(server_post) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] created_server = self._wait_for_state_change(created_server, 'BUILD') # rebuild the server with metadata and other server attributes post = {} post['rebuild'] = { self._image_ref_parameter: "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "name": "blah", self._access_ipv4_parameter: "172.19.0.2", self._access_ipv6_parameter: "fe80::2", "metadata": {'some': 'thing'}, } post['rebuild'].update(self._get_access_ips_params()) self.api.post_server_action(created_server_id, post) LOG.debug("rebuilt server: %s" % created_server) self.assertTrue(created_server['id']) found_server = self.api.get_server(created_server_id) self.assertEqual(created_server_id, found_server['id']) self.assertEqual({'some': 'thing'}, found_server.get('metadata')) self.assertEqual('blah', found_server.get('name')) self.assertEqual(post['rebuild'][self._image_ref_parameter], found_server.get('image')['id']) self._verify_access_ips(found_server) # rebuild the server with empty metadata and nothing else post = {} post['rebuild'] = { self._image_ref_parameter: "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "metadata": {}, } self.api.post_server_action(created_server_id, post) LOG.debug("rebuilt server: %s" % created_server) self.assertTrue(created_server['id']) found_server = self.api.get_server(created_server_id) self.assertEqual(created_server_id, found_server['id']) self.assertEqual({}, found_server.get('metadata')) self.assertEqual('blah', found_server.get('name')) self.assertEqual(post['rebuild'][self._image_ref_parameter], found_server.get('image')['id']) self._verify_access_ips(found_server) # Cleanup self._delete_server(created_server_id) def _get_access_ips_params(self): return {self._access_ipv4_parameter: "172.19.0.2", self._access_ipv6_parameter: "fe80::2"} def _verify_access_ips(self, server): self.assertEqual('172.19.0.2', server[self._access_ipv4_parameter]) self.assertEqual('fe80::2', server[self._access_ipv6_parameter]) def test_rename_server(self): # Test building and renaming a server. fake_network.set_stub_network_methods(self.stubs) # Create a server server = self._build_minimal_create_server_request() created_server = self.api.post_server({'server': server}) LOG.debug("created_server: %s" % created_server) server_id = created_server['id'] self.assertTrue(server_id) # Rename the server to 'new-name' self.api.put_server(server_id, {'server': {'name': 'new-name'}}) # Check the name of the server created_server = self.api.get_server(server_id) self.assertEqual(created_server['name'], 'new-name') # Cleanup self._delete_server(server_id) def test_create_multiple_servers(self): # Creates multiple servers and checks for reservation_id. # Create 2 servers, setting 'return_reservation_id, which should # return a reservation_id server = self._build_minimal_create_server_request() server[self._min_count_parameter] = 2 server[self._return_resv_id_parameter] = True post = {'server': server} response = self.api.post_server(post) self.assertIn('reservation_id', response) reservation_id = response['reservation_id'] self.assertNotIn(reservation_id, ['', None]) # Create 1 more server, which should not return a reservation_id server = self._build_minimal_create_server_request() post = {'server': server} created_server = self.api.post_server(post) self.assertTrue(created_server['id']) created_server_id = created_server['id'] # lookup servers created by the first request. servers = self.api.get_servers(detail=True, search_opts={'reservation_id': reservation_id}) server_map = dict((server['id'], server) for server in servers) found_server = server_map.get(created_server_id) # The server from the 2nd request should not be there. self.assertIsNone(found_server) # Should have found 2 servers. self.assertEqual(len(server_map), 2) # Cleanup self._delete_server(created_server_id) for server_id in server_map.iterkeys(): self._delete_server(server_id) def test_create_server_with_injected_files(self): # Creates a server with injected_files. fake_network.set_stub_network_methods(self.stubs) personality = [] # Inject a text file data = 'Hello, World!' personality.append({ 'path': '/helloworld.txt', 'contents': data.encode('base64'), }) # Inject a binary file data = zlib.compress('Hello, World!') personality.append({ 'path': '/helloworld.zip', 'contents': data.encode('base64'), }) # Create server server = self._build_minimal_create_server_request() server['personality'] = personality post = {'server': server} created_server = self.api.post_server(post) LOG.debug("created_server: %s" % created_server) self.assertTrue(created_server['id']) created_server_id = created_server['id'] # Check it's there found_server = self.api.get_server(created_server_id) self.assertEqual(created_server_id, found_server['id']) found_server = self._wait_for_state_change(found_server, 'BUILD') self.assertEqual('ACTIVE', found_server['status']) # Cleanup self._delete_server(created_server_id) class ServersTestV3(client.TestOpenStackClientV3Mixin, ServersTest): _force_delete_parameter = 'force_delete' _api_version = 'v3' _image_ref_parameter = 'image_ref' _flavor_ref_parameter = 'flavor_ref' _return_resv_id_parameter = 'os-multiple-create:return_reservation_id' _min_count_parameter = 'os-multiple-create:min_count' _access_ipv4_parameter = None _access_ipv6_parameter = None def _get_access_ips_params(self): return {} def _verify_access_ips(self, server): # NOTE(alexxu): access_ips was demoted as extensions in v3 api. # So skips verifying access_ips pass nova-2014.1/nova/tests/integrated/api_samples_test_base.py0000664000175400017540000003130212323721510025030 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import re from lxml import etree import six from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova import test from nova.tests.integrated import integrated_helpers class NoMatch(test.TestingException): pass class ApiSampleTestBase(integrated_helpers._IntegratedTestBase): ctype = 'json' all_extensions = False extension_name = None def _pretty_data(self, data): if self.ctype == 'json': data = jsonutils.dumps(jsonutils.loads(data), sort_keys=True, indent=4) else: if data is None: # Likely from missing XML file. return "" xml = etree.XML(data) data = etree.tostring(xml, encoding="UTF-8", xml_declaration=True, pretty_print=True) return '\n'.join(line.rstrip() for line in data.split('\n')).strip() def _objectify(self, data): if not data: return {} if self.ctype == 'json': # NOTE(vish): allow non-quoted replacements to survive json data = re.sub(r'([^"])%\((.+)\)s([^"])', r'\1"%(int:\2)s"\3', data) return jsonutils.loads(data) else: def to_dict(node): ret = {} if node.items(): ret.update(dict(node.items())) if node.text: ret['__content__'] = node.text if node.tag: ret['__tag__'] = node.tag if node.nsmap: ret['__nsmap__'] = node.nsmap for element in node: ret.setdefault(node.tag, []) ret[node.tag].append(to_dict(element)) return ret return to_dict(etree.fromstring(data)) @classmethod def _get_sample_path(cls, name, dirname, suffix=''): parts = [dirname] parts.append('api_samples') if cls.all_extensions: parts.append('all_extensions') if cls.extension_name: alias = importutils.import_class(cls.extension_name).alias parts.append(alias) parts.append(name + "." + cls.ctype + suffix) return os.path.join(*parts) @classmethod def _get_sample(cls, name): dirname = os.path.dirname(os.path.abspath(__file__)) dirname = os.path.normpath(os.path.join(dirname, "../../../doc")) return cls._get_sample_path(name, dirname) @classmethod def _get_template(cls, name): dirname = os.path.dirname(os.path.abspath(__file__)) return cls._get_sample_path(name, dirname, suffix='.tpl') def _read_template(self, name): template = self._get_template(name) with open(template) as inf: return inf.read().strip() def _write_template(self, name, data): with open(self._get_template(name), 'w') as outf: outf.write(data) def _write_sample(self, name, data): with open(self._get_sample(name), 'w') as outf: outf.write(data) def _compare_result(self, subs, expected, result, result_str): matched_value = None if isinstance(expected, dict): if not isinstance(result, dict): raise NoMatch(_('%(result_str)s: %(result)s is not a dict.') % {'result_str': result_str, 'result': result}) ex_keys = sorted(expected.keys()) res_keys = sorted(result.keys()) if ex_keys != res_keys: ex_delta = [] res_delta = [] for key in ex_keys: if key not in res_keys: ex_delta.append(key) for key in res_keys: if key not in ex_keys: res_delta.append(key) raise NoMatch( _('Dictionary key mismatch:\n' 'Extra key(s) in template:\n%(ex_delta)s\n' 'Extra key(s) in %(result_str)s:\n%(res_delta)s\n') % {'ex_delta': ex_delta, 'result_str': result_str, 'res_delta': res_delta}) for key in ex_keys: res = self._compare_result(subs, expected[key], result[key], result_str) matched_value = res or matched_value elif isinstance(expected, list): if not isinstance(result, list): raise NoMatch( _('%(result_str)s: %(result)s is not a list.') % {'result_str': result_str, 'result': result}) expected = expected[:] extra = [] for res_obj in result: for i, ex_obj in enumerate(expected): try: matched_value = self._compare_result(subs, ex_obj, res_obj, result_str) del expected[i] break except NoMatch: pass else: extra.append(res_obj) error = [] if expected: error.append(_('Extra list items in template:')) error.extend([repr(o) for o in expected]) if extra: error.append(_('Extra list items in %(result_str)s:') % {'result_str': result_str}) error.extend([repr(o) for o in extra]) if error: raise NoMatch('\n'.join(error)) elif isinstance(expected, six.string_types) and '%' in expected: # NOTE(vish): escape stuff for regex for char in '[]<>?': expected = expected.replace(char, '\\%s' % char) # NOTE(vish): special handling of subs that are not quoted. We are # expecting an int but we had to pass in a string # so the json would parse properly. if expected.startswith("%(int:"): result = str(result) expected = expected.replace('int:', '') expected = expected % subs expected = '^%s$' % expected match = re.match(expected, result) if not match: raise NoMatch( _('Values do not match:\n' 'Template: %(expected)s\n%(result_str)s: %(result)s') % {'expected': expected, 'result_str': result_str, 'result': result}) try: matched_value = match.group('id') except IndexError: if match.groups(): matched_value = match.groups()[0] else: if isinstance(expected, six.string_types): # NOTE(danms): Ignore whitespace in this comparison expected = expected.strip() result = result.strip() if expected != result: raise NoMatch( _('Values do not match:\n' 'Template: %(expected)s\n%(result_str)s: ' '%(result)s') % {'expected': expected, 'result_str': result_str, 'result': result}) return matched_value def generalize_subs(self, subs, vanilla_regexes): """Give the test a chance to modify subs after the server response was verified, and before the on-disk doc/api_samples file is checked. This may be needed by some tests to convert exact matches expected from the server into pattern matches to verify what is in the sample file. If there are no changes to be made, subs is returned unharmed. """ return subs def _verify_response(self, name, subs, response, exp_code): self.assertEqual(response.status, exp_code) response_data = response.read() response_data = self._pretty_data(response_data) if not os.path.exists(self._get_template(name)): self._write_template(name, response_data) template_data = response_data else: template_data = self._read_template(name) if (self.generate_samples and not os.path.exists(self._get_sample(name))): self._write_sample(name, response_data) sample_data = response_data else: with file(self._get_sample(name)) as sample: sample_data = sample.read() try: template_data = self._objectify(template_data) response_data = self._objectify(response_data) response_result = self._compare_result(subs, template_data, response_data, "Response") # NOTE(danms): replace some of the subs with patterns for the # doc/api_samples check, which won't have things like the # correct compute host name. Also let the test do some of its # own generalization, if necessary vanilla_regexes = self._get_regexes() subs['compute_host'] = vanilla_regexes['host_name'] subs['id'] = vanilla_regexes['id'] subs = self.generalize_subs(subs, vanilla_regexes) sample_data = self._objectify(sample_data) self._compare_result(subs, template_data, sample_data, "Sample") return response_result except NoMatch: raise def _get_host(self): return 'http://openstack.example.com' def _get_glance_host(self): return 'http://glance.openstack.example.com' def _get_regexes(self): if self.ctype == 'json': text = r'(\\"|[^"])*' else: text = r'[^<]*' return { # NOTE(treinish): Could result in a false positive, but it # shouldn't be an issue for this case. 'timestamp': '\d{4}-[0,1]\d-[0-3]\d[ ,T]' '\d{2}:\d{2}:\d{2}' '(Z|(\+|-)\d{2}:\d{2}|\.\d{6}|)', 'password': '[0-9a-zA-Z]{1,12}', 'ip': '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}', 'ip6': '([0-9a-zA-Z]{1,4}:){1,7}:?[0-9a-zA-Z]{1,4}', 'id': '(?P[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}' '-[0-9a-f]{4}-[0-9a-f]{12})', 'uuid': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}' '-[0-9a-f]{4}-[0-9a-f]{12}', 'reservation_id': 'r-[0-9a-zA-Z]{8}', 'private_key': '-----BEGIN RSA PRIVATE KEY-----' '[a-zA-Z0-9\n/+=]*' '-----END RSA PRIVATE KEY-----', 'public_key': 'ssh-rsa[ a-zA-Z0-9/+=]*' 'Generated by Nova', 'fingerprint': '([0-9a-f]{2}:){15}[0-9a-f]{2}', 'host': self._get_host(), 'host_name': '[0-9a-z]{32}', 'glance_host': self._get_glance_host(), 'compute_host': self.compute.host, 'text': text, 'int': '[0-9]+', } def _get_response(self, url, method, body=None, strip_version=False): headers = {} headers['Content-Type'] = 'application/' + self.ctype headers['Accept'] = 'application/' + self.ctype return self.api.api_request(url, body=body, method=method, headers=headers, strip_version=strip_version) def _do_get(self, url, strip_version=False): return self._get_response(url, 'GET', strip_version=strip_version) def _do_post(self, url, name, subs, method='POST'): body = self._read_template(name) % subs sample = self._get_sample(name) if self.generate_samples and not os.path.exists(sample): self._write_sample(name, body) return self._get_response(url, method, body) def _do_put(self, url, name, subs): return self._do_post(url, name, subs, method='PUT') def _do_delete(self, url): return self._get_response(url, 'DELETE') nova-2014.1/nova/tests/integrated/test_api_samples.py0000664000175400017540000047072612323721510024057 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 import copy import datetime import inspect import json import os import re import urllib import uuid as uuid_lib from lxml import etree import mock from oslo.config import cfg from nova.api.metadata import password from nova.api.openstack.compute.contrib import fping from nova.api.openstack.compute import extensions # Import extensions to pull in osapi_compute_extension CONF option used below. from nova.cells import rpcapi as cells_rpcapi from nova.cells import state from nova.cloudpipe import pipelib from nova.compute import api as compute_api from nova.compute import cells_api as cells_api from nova.compute import manager as compute_manager from nova.conductor import manager as conductor_manager from nova import context from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.network import api as network_api from nova.objects import block_device as block_device_obj from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import timeutils import nova.quota from nova.servicegroup import api as service_group_api from nova import test from nova.tests.api.openstack.compute.contrib import test_fping from nova.tests.api.openstack.compute.contrib import test_networks from nova.tests.api.openstack.compute.contrib import test_services from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests import fake_instance_actions from nova.tests import fake_network from nova.tests import fake_network_cache_model from nova.tests import fake_utils from nova.tests.image import fake from nova.tests.integrated import api_samples_test_base from nova.tests.integrated import integrated_helpers from nova.tests import utils as test_utils from nova.tests.virt.baremetal.db import base as bm_db_base from nova import utils from nova.volume import cinder CONF = cfg.CONF CONF.import_opt('allow_resize_to_same_host', 'nova.compute.api') CONF.import_opt('shelved_offload_time', 'nova.compute.manager') CONF.import_opt('enable_network_quota', 'nova.api.openstack.compute.contrib.os_tenant_networks') CONF.import_opt('osapi_compute_extension', 'nova.api.openstack.compute.extensions') CONF.import_opt('vpn_image_id', 'nova.cloudpipe.pipelib') CONF.import_opt('osapi_compute_link_prefix', 'nova.api.openstack.common') CONF.import_opt('osapi_glance_link_prefix', 'nova.api.openstack.common') CONF.import_opt('enable', 'nova.cells.opts', group='cells') CONF.import_opt('cell_type', 'nova.cells.opts', group='cells') CONF.import_opt('db_check_interval', 'nova.cells.state', group='cells') LOG = logging.getLogger(__name__) class ApiSampleTestBaseV2(api_samples_test_base.ApiSampleTestBase): _api_version = 'v2' def setUp(self): extends = [] self.flags(use_ipv6=False, osapi_compute_link_prefix=self._get_host(), osapi_glance_link_prefix=self._get_glance_host()) if not self.all_extensions: if hasattr(self, 'extends_name'): extends = [self.extends_name] ext = [self.extension_name] if self.extension_name else [] self.flags(osapi_compute_extension=ext + extends) super(ApiSampleTestBaseV2, self).setUp() self.useFixture(test.SampleNetworks(host=self.network.host)) fake_network.stub_compute_with_ips(self.stubs) fake_utils.stub_out_utils_spawn_n(self.stubs) self.generate_samples = os.getenv('GENERATE_SAMPLES') is not None class ApiSamplesTrap(ApiSampleTestBaseV2): """Make sure extensions don't get added without tests.""" all_extensions = True def _get_extensions_tested(self): tests = [] for attr in globals().values(): if not inspect.isclass(attr): continue # Skip non-class objects if not issubclass(attr, integrated_helpers._IntegratedTestBase): continue # Skip non-test classes if attr.extension_name is None: continue # Skip base tests cls = importutils.import_class(attr.extension_name) tests.append(cls.alias) return tests def _get_extensions(self): extensions = [] response = self._do_get('extensions') for extension in jsonutils.loads(response.read())['extensions']: extensions.append(str(extension['alias'])) return extensions def test_all_extensions_have_samples(self): # NOTE(danms): This is a list of extensions which are currently # in the tree but that don't (yet) have tests. This list should # NOT be allowed to grow, and should shrink to zero (and be # removed) soon. do_not_approve_additions = [] do_not_approve_additions.append('os-create-server-ext') tests = self._get_extensions_tested() extensions = self._get_extensions() missing_tests = [] for extension in extensions: # NOTE(danms): if you add tests, remove it from the # exclusions list self.assertFalse(extension in do_not_approve_additions and extension in tests) # NOTE(danms): if you add an extension, it must come with # api_samples tests! if (extension not in tests and extension not in do_not_approve_additions): missing_tests.append(extension) if missing_tests: LOG.error("Extensions are missing tests: %s" % missing_tests) self.assertEqual(missing_tests, []) class VersionsSampleJsonTest(ApiSampleTestBaseV2): def test_versions_get(self): response = self._do_get('', strip_version=True) subs = self._get_regexes() self._verify_response('versions-get-resp', subs, response, 200) class VersionsSampleXmlTest(VersionsSampleJsonTest): ctype = 'xml' class ServersSampleBase(ApiSampleTestBaseV2): def _post_server(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), } response = self._do_post('servers', 'server-post-req', subs) subs = self._get_regexes() return self._verify_response('server-post-resp', subs, response, 202) class ServersSampleJsonTest(ServersSampleBase): def test_servers_post(self): return self._post_server() def test_servers_get(self): uuid = self.test_servers_post() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['hypervisor_hostname'] = r'[\w\.\-]+' subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('server-get-resp', subs, response, 200) def test_servers_list(self): uuid = self._post_server() response = self._do_get('servers') subs = self._get_regexes() subs['id'] = uuid self._verify_response('servers-list-resp', subs, response, 200) def test_servers_details(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['hypervisor_hostname'] = r'[\w\.\-]+' subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('servers-details-resp', subs, response, 200) class ServersSampleXmlTest(ServersSampleJsonTest): ctype = 'xml' class ServersSampleAllExtensionJsonTest(ServersSampleJsonTest): all_extensions = True class ServersSampleAllExtensionXmlTest(ServersSampleXmlTest): all_extensions = True class ServersSampleHideAddressesJsonTest(ServersSampleJsonTest): extension_name = '.'.join(('nova.api.openstack.compute.contrib', 'hide_server_addresses', 'Hide_server_addresses')) class ServersSampleHideAddressesXMLTest(ServersSampleHideAddressesJsonTest): ctype = 'xml' class ServersMetadataJsonTest(ServersSampleBase): def _create_and_set(self, subs): uuid = self._post_server() response = self._do_put('servers/%s/metadata' % uuid, 'server-metadata-all-req', subs) self._verify_response('server-metadata-all-resp', subs, response, 200) return uuid def generalize_subs(self, subs, vanilla_regexes): subs['value'] = '(Foo|Bar) Value' return subs def test_metadata_put_all(self): # Test setting all metadata for a server. subs = {'value': 'Foo Value'} self._create_and_set(subs) def test_metadata_post_all(self): # Test updating all metadata for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) subs['value'] = 'Bar Value' response = self._do_post('servers/%s/metadata' % uuid, 'server-metadata-all-req', subs) self._verify_response('server-metadata-all-resp', subs, response, 200) def test_metadata_get_all(self): # Test getting all metadata for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) response = self._do_get('servers/%s/metadata' % uuid) self._verify_response('server-metadata-all-resp', subs, response, 200) def test_metadata_put(self): # Test putting an individual metadata item for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) subs['value'] = 'Bar Value' response = self._do_put('servers/%s/metadata/foo' % uuid, 'server-metadata-req', subs) self._verify_response('server-metadata-resp', subs, response, 200) def test_metadata_get(self): # Test getting an individual metadata item for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) response = self._do_get('servers/%s/metadata/foo' % uuid) self._verify_response('server-metadata-resp', subs, response, 200) def test_metadata_delete(self): # Test deleting an individual metadata item for a server. subs = {'value': 'Foo Value'} uuid = self._create_and_set(subs) response = self._do_delete('servers/%s/metadata/foo' % uuid) self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') class ServersMetadataXmlTest(ServersMetadataJsonTest): ctype = 'xml' class ServersIpsJsonTest(ServersSampleBase): def test_get(self): # Test getting a server's IP information. uuid = self._post_server() response = self._do_get('servers/%s/ips' % uuid) subs = self._get_regexes() self._verify_response('server-ips-resp', subs, response, 200) def test_get_by_network(self): # Test getting a server's IP information by network id. uuid = self._post_server() response = self._do_get('servers/%s/ips/private' % uuid) subs = self._get_regexes() self._verify_response('server-ips-network-resp', subs, response, 200) class ServersIpsXmlTest(ServersIpsJsonTest): ctype = 'xml' class ExtensionsSampleJsonTest(ApiSampleTestBaseV2): all_extensions = True def test_extensions_get(self): response = self._do_get('extensions') subs = self._get_regexes() self._verify_response('extensions-get-resp', subs, response, 200) class ExtensionsSampleXmlTest(ExtensionsSampleJsonTest): ctype = 'xml' class FlavorsSampleJsonTest(ApiSampleTestBaseV2): def test_flavors_get(self): response = self._do_get('flavors/1') subs = self._get_regexes() self._verify_response('flavor-get-resp', subs, response, 200) def test_flavors_list(self): response = self._do_get('flavors') subs = self._get_regexes() self._verify_response('flavors-list-resp', subs, response, 200) class FlavorsSampleXmlTest(FlavorsSampleJsonTest): ctype = 'xml' class HostsSampleJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.hosts.Hosts" def test_host_startup(self): response = self._do_get('os-hosts/%s/startup' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-startup', subs, response, 200) def test_host_reboot(self): response = self._do_get('os-hosts/%s/reboot' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-reboot', subs, response, 200) def test_host_shutdown(self): response = self._do_get('os-hosts/%s/shutdown' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-shutdown', subs, response, 200) def test_host_maintenance(self): response = self._do_put('os-hosts/%s' % self.compute.host, 'host-put-maintenance-req', {}) subs = self._get_regexes() self._verify_response('host-put-maintenance-resp', subs, response, 200) def test_host_get(self): response = self._do_get('os-hosts/%s' % self.compute.host) subs = self._get_regexes() self._verify_response('host-get-resp', subs, response, 200) def test_hosts_list(self): response = self._do_get('os-hosts') subs = self._get_regexes() self._verify_response('hosts-list-resp', subs, response, 200) class HostsSampleXmlTest(HostsSampleJsonTest): ctype = 'xml' class FlavorsSampleAllExtensionJsonTest(FlavorsSampleJsonTest): all_extensions = True class FlavorsSampleAllExtensionXmlTest(FlavorsSampleXmlTest): all_extensions = True class ImagesSampleJsonTest(ApiSampleTestBaseV2): def test_images_list(self): # Get api sample of images get list request. response = self._do_get('images') subs = self._get_regexes() self._verify_response('images-list-get-resp', subs, response, 200) def test_image_get(self): # Get api sample of one single image details request. image_id = fake.get_valid_image_id() response = self._do_get('images/%s' % image_id) subs = self._get_regexes() subs['image_id'] = image_id self._verify_response('image-get-resp', subs, response, 200) def test_images_details(self): # Get api sample of all images details request. response = self._do_get('images/detail') subs = self._get_regexes() self._verify_response('images-details-get-resp', subs, response, 200) def test_image_metadata_get(self): # Get api sample of an image metadata request. image_id = fake.get_valid_image_id() response = self._do_get('images/%s/metadata' % image_id) subs = self._get_regexes() subs['image_id'] = image_id self._verify_response('image-metadata-get-resp', subs, response, 200) def test_image_metadata_post(self): # Get api sample to update metadata of an image metadata request. image_id = fake.get_valid_image_id() response = self._do_post( 'images/%s/metadata' % image_id, 'image-metadata-post-req', {}) subs = self._get_regexes() self._verify_response('image-metadata-post-resp', subs, response, 200) def test_image_metadata_put(self): # Get api sample of image metadata put request. image_id = fake.get_valid_image_id() response = self._do_put('images/%s/metadata' % image_id, 'image-metadata-put-req', {}) subs = self._get_regexes() self._verify_response('image-metadata-put-resp', subs, response, 200) def test_image_meta_key_get(self): # Get api sample of an image metadata key request. image_id = fake.get_valid_image_id() key = "kernel_id" response = self._do_get('images/%s/metadata/%s' % (image_id, key)) subs = self._get_regexes() self._verify_response('image-meta-key-get', subs, response, 200) def test_image_meta_key_put(self): # Get api sample of image metadata key put request. image_id = fake.get_valid_image_id() key = "auto_disk_config" response = self._do_put('images/%s/metadata/%s' % (image_id, key), 'image-meta-key-put-req', {}) subs = self._get_regexes() self._verify_response('image-meta-key-put-resp', subs, response, 200) class ImagesSampleXmlTest(ImagesSampleJsonTest): ctype = 'xml' class LimitsSampleJsonTest(ApiSampleTestBaseV2): def test_limits_get(self): response = self._do_get('limits') subs = self._get_regexes() self._verify_response('limit-get-resp', subs, response, 200) class LimitsSampleXmlTest(LimitsSampleJsonTest): ctype = 'xml' class ServersActionsJsonTest(ServersSampleBase): def _test_server_action(self, uuid, action, subs={}, resp_tpl=None, code=202): subs.update({'action': action}) response = self._do_post('servers/%s/action' % uuid, 'server-action-%s' % action.lower(), subs) if resp_tpl: subs.update(self._get_regexes()) self._verify_response(resp_tpl, subs, response, code) else: self.assertEqual(response.status, code) self.assertEqual(response.read(), "") def test_server_password(self): uuid = self._post_server() self._test_server_action(uuid, "changePassword", {"password": "foo"}) def test_server_reboot_hard(self): uuid = self._post_server() self._test_server_action(uuid, "reboot", {"type": "HARD"}) def test_server_reboot_soft(self): uuid = self._post_server() self._test_server_action(uuid, "reboot", {"type": "SOFT"}) def test_server_rebuild(self): uuid = self._post_server() image = self.api.get_images()[0]['id'] subs = {'host': self._get_host(), 'uuid': image, 'name': 'foobar', 'pass': 'seekr3t', 'ip': '1.2.3.4', 'ip6': 'fe80::100', 'hostid': '[a-f0-9]+', } self._test_server_action(uuid, 'rebuild', subs, 'server-action-rebuild-resp') def test_server_resize(self): self.flags(allow_resize_to_same_host=True) uuid = self._post_server() self._test_server_action(uuid, "resize", {"id": 2, "host": self._get_host()}) return uuid def test_server_revert_resize(self): uuid = self.test_server_resize() self._test_server_action(uuid, "revertResize") def test_server_confirm_resize(self): uuid = self.test_server_resize() self._test_server_action(uuid, "confirmResize", code=204) def test_server_create_image(self): uuid = self._post_server() self._test_server_action(uuid, 'createImage', {'name': 'foo-image', 'meta_var': 'myvar', 'meta_val': 'foobar'}) class ServersActionsXmlTest(ServersActionsJsonTest): ctype = 'xml' class ServersActionsAllJsonTest(ServersActionsJsonTest): all_extensions = True class ServersActionsAllXmlTest(ServersActionsXmlTest): all_extensions = True class ServerStartStopJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib" + \ ".server_start_stop.Server_start_stop" def _test_server_action(self, uuid, action): response = self._do_post('servers/%s/action' % uuid, 'server_start_stop', {'action': action}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), "") def test_server_start(self): uuid = self._post_server() self._test_server_action(uuid, 'os-stop') self._test_server_action(uuid, 'os-start') def test_server_stop(self): uuid = self._post_server() self._test_server_action(uuid, 'os-stop') class ServerStartStopXmlTest(ServerStartStopJsonTest): ctype = 'xml' class UserDataJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.user_data.User_data" def test_user_data_post(self): user_data_contents = '#!/bin/bash\n/bin/su\necho "I am in you!"\n' user_data = base64.b64encode(user_data_contents) subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'user_data': user_data } response = self._do_post('servers', 'userdata-post-req', subs) subs.update(self._get_regexes()) self._verify_response('userdata-post-resp', subs, response, 202) class UserDataXmlTest(UserDataJsonTest): ctype = 'xml' class FlavorsExtraDataJsonTest(ApiSampleTestBaseV2): extension_name = ('nova.api.openstack.compute.contrib.flavorextradata.' 'Flavorextradata') def _get_flags(self): f = super(FlavorsExtraDataJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # Flavorextradata extension also needs Flavormanage to be loaded. f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.flavormanage.Flavormanage') return f def test_flavors_extra_data_get(self): flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = { 'flavor_id': flavor_id, 'flavor_name': 'm1.tiny' } subs.update(self._get_regexes()) self._verify_response('flavors-extra-data-get-resp', subs, response, 200) def test_flavors_extra_data_list(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavors-extra-data-list-resp', subs, response, 200) def test_flavors_extra_data_create(self): subs = { 'flavor_id': 666, 'flavor_name': 'flavortest' } response = self._do_post('flavors', 'flavors-extra-data-post-req', subs) subs.update(self._get_regexes()) self._verify_response('flavors-extra-data-post-resp', subs, response, 200) class FlavorsExtraDataXmlTest(FlavorsExtraDataJsonTest): ctype = 'xml' class FlavorRxtxJsonTest(ApiSampleTestBaseV2): extension_name = ('nova.api.openstack.compute.contrib.flavor_rxtx.' 'Flavor_rxtx') def _get_flags(self): f = super(FlavorRxtxJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # FlavorRxtx extension also needs Flavormanage to be loaded. f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.flavormanage.Flavormanage') return f def test_flavor_rxtx_get(self): flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = { 'flavor_id': flavor_id, 'flavor_name': 'm1.tiny' } subs.update(self._get_regexes()) self._verify_response('flavor-rxtx-get-resp', subs, response, 200) def test_flavors_rxtx_list(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavor-rxtx-list-resp', subs, response, 200) def test_flavors_rxtx_create(self): subs = { 'flavor_id': 100, 'flavor_name': 'flavortest' } response = self._do_post('flavors', 'flavor-rxtx-post-req', subs) subs.update(self._get_regexes()) self._verify_response('flavor-rxtx-post-resp', subs, response, 200) class FlavorRxtxXmlTest(FlavorRxtxJsonTest): ctype = 'xml' class FlavorSwapJsonTest(ApiSampleTestBaseV2): extension_name = ('nova.api.openstack.compute.contrib.flavor_swap.' 'Flavor_swap') def _get_flags(self): f = super(FlavorSwapJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # FlavorSwap extension also needs Flavormanage to be loaded. f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.flavormanage.Flavormanage') return f def test_flavor_swap_get(self): flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = { 'flavor_id': flavor_id, 'flavor_name': 'm1.tiny' } subs.update(self._get_regexes()) self._verify_response('flavor-swap-get-resp', subs, response, 200) def test_flavor_swap_list(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavor-swap-list-resp', subs, response, 200) def test_flavor_swap_create(self): subs = { 'flavor_id': 100, 'flavor_name': 'flavortest' } response = self._do_post('flavors', 'flavor-swap-post-req', subs) subs.update(self._get_regexes()) self._verify_response('flavor-swap-post-resp', subs, response, 200) class FlavorSwapXmlTest(FlavorSwapJsonTest): ctype = 'xml' class SecurityGroupsSampleJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib" + \ ".security_groups.Security_groups" def _get_create_subs(self): return { 'group_name': 'test', "description": "description", } def _create_security_group(self): subs = self._get_create_subs() return self._do_post('os-security-groups', 'security-group-post-req', subs) def _add_group(self, uuid): subs = { 'group_name': 'test' } return self._do_post('servers/%s/action' % uuid, 'security-group-add-post-req', subs) def test_security_group_create(self): response = self._create_security_group() subs = self._get_create_subs() self._verify_response('security-groups-create-resp', subs, response, 200) def test_security_groups_list(self): # Get api sample of security groups get list request. response = self._do_get('os-security-groups') subs = self._get_regexes() self._verify_response('security-groups-list-get-resp', subs, response, 200) def test_security_groups_get(self): # Get api sample of security groups get request. security_group_id = '1' response = self._do_get('os-security-groups/%s' % security_group_id) subs = self._get_regexes() self._verify_response('security-groups-get-resp', subs, response, 200) def test_security_groups_list_server(self): # Get api sample of security groups for a specific server. uuid = self._post_server() response = self._do_get('servers/%s/os-security-groups' % uuid) subs = self._get_regexes() self._verify_response('server-security-groups-list-resp', subs, response, 200) def test_security_groups_add(self): self._create_security_group() uuid = self._post_server() response = self._add_group(uuid) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_security_groups_remove(self): self._create_security_group() uuid = self._post_server() self._add_group(uuid) subs = { 'group_name': 'test' } response = self._do_post('servers/%s/action' % uuid, 'security-group-remove-post-req', subs) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class SecurityGroupsSampleXmlTest(SecurityGroupsSampleJsonTest): ctype = 'xml' class SecurityGroupDefaultRulesSampleJsonTest(ServersSampleBase): extension_name = ('nova.api.openstack.compute.contrib' '.security_group_default_rules' '.Security_group_default_rules') def test_security_group_default_rules_create(self): response = self._do_post('os-security-group-default-rules', 'security-group-default-rules-create-req', {}) self._verify_response('security-group-default-rules-create-resp', {}, response, 200) def test_security_group_default_rules_list(self): self.test_security_group_default_rules_create() response = self._do_get('os-security-group-default-rules') self._verify_response('security-group-default-rules-list-resp', {}, response, 200) def test_security_group_default_rules_show(self): self.test_security_group_default_rules_create() rule_id = '1' response = self._do_get('os-security-group-default-rules/%s' % rule_id) self._verify_response('security-group-default-rules-show-resp', {}, response, 200) class SecurityGroupDefaultRulesSampleXmlTest( SecurityGroupDefaultRulesSampleJsonTest): ctype = 'xml' class SchedulerHintsJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.scheduler_hints." "Scheduler_hints") def test_scheduler_hints_post(self): # Get api sample of scheduler hint post request. hints = {'image_id': fake.get_valid_image_id(), 'image_near': str(uuid_lib.uuid4()) } response = self._do_post('servers', 'scheduler-hints-post-req', hints) subs = self._get_regexes() self._verify_response('scheduler-hints-post-resp', subs, response, 202) class SchedulerHintsXmlTest(SchedulerHintsJsonTest): ctype = 'xml' class ConsoleOutputSampleJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib" + \ ".console_output.Console_output" def test_get_console_output(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'console-output-post-req', {'action': 'os-getConsoleOutput'}) subs = self._get_regexes() self._verify_response('console-output-post-resp', subs, response, 200) class ConsoleOutputSampleXmlTest(ConsoleOutputSampleJsonTest): ctype = 'xml' class ExtendedServerAttributesJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib" + \ ".extended_server_attributes" + \ ".Extended_server_attributes" def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['instance_name'] = 'instance-\d{8}' subs['hypervisor_hostname'] = r'[\w\.\-]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['instance_name'] = 'instance-\d{8}' subs['hypervisor_hostname'] = r'[\w\.\-]+' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedServerAttributesXmlTest(ExtendedServerAttributesJsonTest): ctype = 'xml' class FloatingIpsJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib." \ "floating_ips.Floating_ips" def setUp(self): super(FloatingIpsJsonTest, self).setUp() pool = CONF.default_floating_pool interface = CONF.public_interface self.ip_pool = [ { 'address': "10.10.10.1", 'pool': pool, 'interface': interface }, { 'address': "10.10.10.2", 'pool': pool, 'interface': interface }, { 'address': "10.10.10.3", 'pool': pool, 'interface': interface }, ] self.compute.db.floating_ip_bulk_create( context.get_admin_context(), self.ip_pool) def tearDown(self): self.compute.db.floating_ip_bulk_destroy( context.get_admin_context(), self.ip_pool) super(FloatingIpsJsonTest, self).tearDown() def test_floating_ips_list_empty(self): response = self._do_get('os-floating-ips') subs = self._get_regexes() self._verify_response('floating-ips-list-empty-resp', subs, response, 200) def test_floating_ips_list(self): self._do_post('os-floating-ips', 'floating-ips-create-nopool-req', {}) self._do_post('os-floating-ips', 'floating-ips-create-nopool-req', {}) response = self._do_get('os-floating-ips') subs = self._get_regexes() self._verify_response('floating-ips-list-resp', subs, response, 200) def test_floating_ips_create_nopool(self): response = self._do_post('os-floating-ips', 'floating-ips-create-nopool-req', {}) subs = self._get_regexes() self._verify_response('floating-ips-create-resp', subs, response, 200) def test_floating_ips_create(self): response = self._do_post('os-floating-ips', 'floating-ips-create-req', {"pool": CONF.default_floating_pool}) subs = self._get_regexes() self._verify_response('floating-ips-create-resp', subs, response, 200) def test_floating_ips_get(self): self.test_floating_ips_create() # NOTE(sdague): the first floating ip will always have 1 as an id, # but it would be better if we could get this from the create response = self._do_get('os-floating-ips/%d' % 1) subs = self._get_regexes() self._verify_response('floating-ips-create-resp', subs, response, 200) def test_floating_ips_delete(self): self.test_floating_ips_create() response = self._do_delete('os-floating-ips/%d' % 1) self.assertEqual(response.status, 202) class ExtendedFloatingIpsJsonTest(FloatingIpsJsonTest): extends_name = ("nova.api.openstack.compute.contrib." "floating_ips.Floating_ips") extension_name = ("nova.api.openstack.compute.contrib." "extended_floating_ips.Extended_floating_ips") class FloatingIpsXmlTest(FloatingIpsJsonTest): ctype = 'xml' class ExtendedFloatingIpsXmlTest(ExtendedFloatingIpsJsonTest): ctype = 'xml' class FloatingIpsBulkJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib." \ "floating_ips_bulk.Floating_ips_bulk" def setUp(self): super(FloatingIpsBulkJsonTest, self).setUp() pool = CONF.default_floating_pool interface = CONF.public_interface self.ip_pool = [ { 'address': "10.10.10.1", 'pool': pool, 'interface': interface }, { 'address': "10.10.10.2", 'pool': pool, 'interface': interface }, { 'address': "10.10.10.3", 'pool': pool, 'interface': interface, 'host': "testHost" }, ] self.compute.db.floating_ip_bulk_create( context.get_admin_context(), self.ip_pool) def tearDown(self): self.compute.db.floating_ip_bulk_destroy( context.get_admin_context(), self.ip_pool) super(FloatingIpsBulkJsonTest, self).tearDown() def test_floating_ips_bulk_list(self): response = self._do_get('os-floating-ips-bulk') subs = self._get_regexes() self._verify_response('floating-ips-bulk-list-resp', subs, response, 200) def test_floating_ips_bulk_list_by_host(self): response = self._do_get('os-floating-ips-bulk/testHost') subs = self._get_regexes() self._verify_response('floating-ips-bulk-list-by-host-resp', subs, response, 200) def test_floating_ips_bulk_create(self): response = self._do_post('os-floating-ips-bulk', 'floating-ips-bulk-create-req', {"ip_range": "192.168.1.0/24", "pool": CONF.default_floating_pool, "interface": CONF.public_interface}) subs = self._get_regexes() self._verify_response('floating-ips-bulk-create-resp', subs, response, 200) def test_floating_ips_bulk_delete(self): response = self._do_put('os-floating-ips-bulk/delete', 'floating-ips-bulk-delete-req', {"ip_range": "192.168.1.0/24"}) subs = self._get_regexes() self._verify_response('floating-ips-bulk-delete-resp', subs, response, 200) class FloatingIpsBulkXmlTest(FloatingIpsBulkJsonTest): ctype = 'xml' class KeyPairsSampleJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.keypairs.Keypairs" def generalize_subs(self, subs, vanilla_regexes): subs['keypair_name'] = 'keypair-[0-9a-f-]+' return subs def test_keypairs_post(self, public_key=None): """Get api sample of key pairs post request.""" key_name = 'keypair-' + str(uuid_lib.uuid4()) response = self._do_post('os-keypairs', 'keypairs-post-req', {'keypair_name': key_name}) subs = self._get_regexes() subs['keypair_name'] = '(%s)' % key_name self._verify_response('keypairs-post-resp', subs, response, 200) # NOTE(maurosr): return the key_name is necessary cause the # verification returns the label of the last compared information in # the response, not necessarily the key name. return key_name def test_keypairs_import_key_post(self): # Get api sample of key pairs post to import user's key. key_name = 'keypair-' + str(uuid_lib.uuid4()) subs = { 'keypair_name': key_name, 'public_key': "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGg" "B4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0l" "RE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv" "9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYc" "pSxsIbECHw== Generated by Nova" } response = self._do_post('os-keypairs', 'keypairs-import-post-req', subs) subs = self._get_regexes() subs['keypair_name'] = '(%s)' % key_name self._verify_response('keypairs-import-post-resp', subs, response, 200) def test_keypairs_get(self): # Get api sample of key pairs get request. key_name = self.test_keypairs_post() response = self._do_get('os-keypairs') subs = self._get_regexes() subs['keypair_name'] = '(%s)' % key_name self._verify_response('keypairs-get-resp', subs, response, 200) class KeyPairsSampleXmlTest(KeyPairsSampleJsonTest): ctype = 'xml' class RescueJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".rescue.Rescue") def _rescue(self, uuid): req_subs = { 'password': 'MySecretPass' } response = self._do_post('servers/%s/action' % uuid, 'server-rescue-req', req_subs) self._verify_response('server-rescue', req_subs, response, 200) def _unrescue(self, uuid): response = self._do_post('servers/%s/action' % uuid, 'server-unrescue-req', {}) self.assertEqual(response.status, 202) def test_server_rescue(self): uuid = self._post_server() self._rescue(uuid) # Do a server get to make sure that the 'RESCUE' state is set response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['status'] = 'RESCUE' self._verify_response('server-get-resp-rescue', subs, response, 200) def test_server_unrescue(self): uuid = self._post_server() self._rescue(uuid) self._unrescue(uuid) # Do a server get to make sure that the 'ACTIVE' state is back response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['status'] = 'ACTIVE' self._verify_response('server-get-resp-unrescue', subs, response, 200) class RescueXmlTest(RescueJsonTest): ctype = 'xml' class ShelveJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib.shelve.Shelve" def setUp(self): super(ShelveJsonTest, self).setUp() # Don't offload instance, so we can test the offload call. CONF.set_override('shelved_offload_time', -1) def _test_server_action(self, uuid, template, action): response = self._do_post('servers/%s/action' % uuid, template, {'action': action}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), "") def test_shelve(self): uuid = self._post_server() self._test_server_action(uuid, 'os-shelve', 'shelve') def test_shelve_offload(self): uuid = self._post_server() self._test_server_action(uuid, 'os-shelve', 'shelve') self._test_server_action(uuid, 'os-shelve-offload', 'shelveOffload') def test_unshelve(self): uuid = self._post_server() self._test_server_action(uuid, 'os-shelve', 'shelve') self._test_server_action(uuid, 'os-unshelve', 'unshelve') class ShelveXmlTest(ShelveJsonTest): ctype = 'xml' class VirtualInterfacesJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".virtual_interfaces.Virtual_interfaces") def test_vifs_list(self): uuid = self._post_server() response = self._do_get('servers/%s/os-virtual-interfaces' % uuid) subs = self._get_regexes() subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('vifs-list-resp', subs, response, 200) class VirtualInterfacesXmlTest(VirtualInterfacesJsonTest): ctype = 'xml' class CloudPipeSampleJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.cloudpipe.Cloudpipe" def setUp(self): super(CloudPipeSampleJsonTest, self).setUp() def get_user_data(self, project_id): """Stub method to generate user data for cloudpipe tests.""" return "VVNFUiBEQVRB\n" def network_api_get(self, context, network_uuid): """Stub to get a valid network and its information.""" return {'vpn_public_address': '127.0.0.1', 'vpn_public_port': 22} self.stubs.Set(pipelib.CloudPipe, 'get_encoded_zip', get_user_data) self.stubs.Set(network_api.API, "get", network_api_get) def generalize_subs(self, subs, vanilla_regexes): subs['project_id'] = 'cloudpipe-[0-9a-f-]+' return subs def test_cloud_pipe_create(self): # Get api samples of cloud pipe extension creation. self.flags(vpn_image_id=fake.get_valid_image_id()) project = {'project_id': 'cloudpipe-' + str(uuid_lib.uuid4())} response = self._do_post('os-cloudpipe', 'cloud-pipe-create-req', project) subs = self._get_regexes() subs.update(project) subs['image_id'] = CONF.vpn_image_id self._verify_response('cloud-pipe-create-resp', subs, response, 200) return project def test_cloud_pipe_list(self): # Get api samples of cloud pipe extension get request. project = self.test_cloud_pipe_create() response = self._do_get('os-cloudpipe') subs = self._get_regexes() subs.update(project) subs['image_id'] = CONF.vpn_image_id self._verify_response('cloud-pipe-get-resp', subs, response, 200) class CloudPipeSampleXmlTest(CloudPipeSampleJsonTest): ctype = "xml" class CloudPipeUpdateJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib" ".cloudpipe_update.Cloudpipe_update") def _get_flags(self): f = super(CloudPipeUpdateJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # Cloudpipe_update also needs cloudpipe to be loaded f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.cloudpipe.Cloudpipe') return f def test_cloud_pipe_update(self): subs = {'vpn_ip': '192.168.1.1', 'vpn_port': 2000} response = self._do_put('os-cloudpipe/configure-project', 'cloud-pipe-update-req', subs) self.assertEqual(response.status, 202) class CloudPipeUpdateXmlTest(CloudPipeUpdateJsonTest): ctype = "xml" class AgentsJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.agents.Agents" def _get_flags(self): f = super(AgentsJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] return f def setUp(self): super(AgentsJsonTest, self).setUp() fake_agents_list = [{'url': 'xxxxxxxxxxxx', 'hypervisor': 'hypervisor', 'architecture': 'x86', 'os': 'os', 'version': '8.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'id': '1'}] def fake_agent_build_create(context, values): values['id'] = '1' agent_build_ref = models.AgentBuild() agent_build_ref.update(values) return agent_build_ref def fake_agent_build_get_all(context, hypervisor): agent_build_all = [] for agent in fake_agents_list: if hypervisor and hypervisor != agent['hypervisor']: continue agent_build_ref = models.AgentBuild() agent_build_ref.update(agent) agent_build_all.append(agent_build_ref) return agent_build_all def fake_agent_build_update(context, agent_build_id, values): pass def fake_agent_build_destroy(context, agent_update_id): pass self.stubs.Set(db, "agent_build_create", fake_agent_build_create) self.stubs.Set(db, "agent_build_get_all", fake_agent_build_get_all) self.stubs.Set(db, "agent_build_update", fake_agent_build_update) self.stubs.Set(db, "agent_build_destroy", fake_agent_build_destroy) def test_agent_create(self): # Creates a new agent build. project = {'url': 'xxxxxxxxxxxx', 'hypervisor': 'hypervisor', 'architecture': 'x86', 'os': 'os', 'version': '8.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545' } response = self._do_post('os-agents', 'agent-post-req', project) project['agent_id'] = 1 self._verify_response('agent-post-resp', project, response, 200) return project def test_agent_list(self): # Return a list of all agent builds. response = self._do_get('os-agents') project = {'url': 'xxxxxxxxxxxx', 'hypervisor': 'hypervisor', 'architecture': 'x86', 'os': 'os', 'version': '8.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1 } self._verify_response('agents-get-resp', project, response, 200) def test_agent_update(self): # Update an existing agent build. agent_id = 1 subs = {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'} response = self._do_put('os-agents/%s' % agent_id, 'agent-update-put-req', subs) subs['agent_id'] = 1 self._verify_response('agent-update-put-resp', subs, response, 200) def test_agent_delete(self): # Deletes an existing agent build. agent_id = 1 response = self._do_delete('os-agents/%s' % agent_id) self.assertEqual(response.status, 200) class AgentsXmlTest(AgentsJsonTest): ctype = "xml" class FixedIpJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.fixed_ips.Fixed_ips" def _get_flags(self): f = super(FixedIpJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] return f def setUp(self): super(FixedIpJsonTest, self).setUp() fake_fixed_ips = [{'id': 1, 'address': '192.168.1.1', 'network_id': 1, 'virtual_interface_id': 1, 'instance_uuid': '1', 'allocated': False, 'leased': False, 'reserved': False, 'host': None}, {'id': 2, 'address': '192.168.1.2', 'network_id': 1, 'virtual_interface_id': 2, 'instance_uuid': '2', 'allocated': False, 'leased': False, 'reserved': False, 'host': None}, ] def fake_fixed_ip_get_by_address(context, address): for fixed_ip in fake_fixed_ips: if fixed_ip['address'] == address: return fixed_ip raise exception.FixedIpNotFoundForAddress(address=address) def fake_fixed_ip_get_by_address_detailed(context, address): network = {'id': 1, 'cidr': "192.168.1.0/24"} host = {'host': "host", 'hostname': 'openstack'} for fixed_ip in fake_fixed_ips: if fixed_ip['address'] == address: return (fixed_ip, network, host) raise exception.FixedIpNotFoundForAddress(address=address) def fake_fixed_ip_update(context, address, values): fixed_ip = fake_fixed_ip_get_by_address(context, address) if fixed_ip is None: raise exception.FixedIpNotFoundForAddress(address=address) else: for key in values: fixed_ip[key] = values[key] self.stubs.Set(db, "fixed_ip_get_by_address", fake_fixed_ip_get_by_address) self.stubs.Set(db, "fixed_ip_get_by_address_detailed", fake_fixed_ip_get_by_address_detailed) self.stubs.Set(db, "fixed_ip_update", fake_fixed_ip_update) def test_fixed_ip_reserve(self): # Reserve a Fixed IP. project = {'reserve': None} response = self._do_post('os-fixed-ips/192.168.1.1/action', 'fixedip-post-req', project) self.assertEqual(response.status, 202) def test_get_fixed_ip(self): # Return data about the given fixed ip. response = self._do_get('os-fixed-ips/192.168.1.1') project = {'cidr': '192.168.1.0/24', 'hostname': 'openstack', 'host': 'host', 'address': '192.168.1.1'} self._verify_response('fixedips-get-resp', project, response, 200) class FixedIpXmlTest(FixedIpJsonTest): ctype = "xml" class AggregatesSampleJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib" + \ ".aggregates.Aggregates" def test_aggregate_create(self): subs = { "aggregate_id": '(?P\d+)' } response = self._do_post('os-aggregates', 'aggregate-post-req', subs) subs.update(self._get_regexes()) return self._verify_response('aggregate-post-resp', subs, response, 200) def test_list_aggregates(self): self.test_aggregate_create() response = self._do_get('os-aggregates') subs = self._get_regexes() self._verify_response('aggregates-list-get-resp', subs, response, 200) def test_aggregate_get(self): agg_id = self.test_aggregate_create() response = self._do_get('os-aggregates/%s' % agg_id) subs = self._get_regexes() self._verify_response('aggregates-get-resp', subs, response, 200) def test_add_metadata(self): agg_id = self.test_aggregate_create() response = self._do_post('os-aggregates/%s/action' % agg_id, 'aggregate-metadata-post-req', {'action': 'set_metadata'}) subs = self._get_regexes() self._verify_response('aggregates-metadata-post-resp', subs, response, 200) def test_add_host(self): aggregate_id = self.test_aggregate_create() subs = { "host_name": self.compute.host, } response = self._do_post('os-aggregates/%s/action' % aggregate_id, 'aggregate-add-host-post-req', subs) subs.update(self._get_regexes()) self._verify_response('aggregates-add-host-post-resp', subs, response, 200) def test_remove_host(self): self.test_add_host() subs = { "host_name": self.compute.host, } response = self._do_post('os-aggregates/1/action', 'aggregate-remove-host-post-req', subs) subs.update(self._get_regexes()) self._verify_response('aggregates-remove-host-post-resp', subs, response, 200) def test_update_aggregate(self): aggregate_id = self.test_aggregate_create() response = self._do_put('os-aggregates/%s' % aggregate_id, 'aggregate-update-post-req', {}) subs = self._get_regexes() self._verify_response('aggregate-update-post-resp', subs, response, 200) class AggregatesSampleXmlTest(AggregatesSampleJsonTest): ctype = 'xml' class CertificatesSamplesJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.certificates." "Certificates") def test_create_certificates(self): response = self._do_post('os-certificates', 'certificate-create-req', {}) subs = self._get_regexes() self._verify_response('certificate-create-resp', subs, response, 200) def test_get_root_certificate(self): response = self._do_get('os-certificates/root') subs = self._get_regexes() self._verify_response('certificate-get-root-resp', subs, response, 200) class CertificatesSamplesXmlTest(CertificatesSamplesJsonTest): ctype = 'xml' class UsedLimitsSamplesJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.used_limits." "Used_limits") def test_get_used_limits(self): # Get api sample to used limits. response = self._do_get('limits') subs = self._get_regexes() self._verify_response('usedlimits-get-resp', subs, response, 200) class UsedLimitsSamplesXmlTest(UsedLimitsSamplesJsonTest): ctype = "xml" class UsedLimitsForAdminSamplesJsonTest(ApiSampleTestBaseV2): extends_name = ("nova.api.openstack.compute.contrib.used_limits." "Used_limits") extension_name = ( "nova.api.openstack.compute.contrib.used_limits_for_admin." "Used_limits_for_admin") def test_get_used_limits_for_admin(self): tenant_id = 'openstack' response = self._do_get('limits?tenant_id=%s' % tenant_id) subs = self._get_regexes() return self._verify_response('usedlimitsforadmin-get-resp', subs, response, 200) class UsedLimitsForAdminSamplesXmlTest(UsedLimitsForAdminSamplesJsonTest): ctype = "xml" class MultipleCreateJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.multiple_create." "Multiple_create") def test_multiple_create(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'min_count': "2", 'max_count': "3" } response = self._do_post('servers', 'multiple-create-post-req', subs) subs.update(self._get_regexes()) self._verify_response('multiple-create-post-resp', subs, response, 202) def test_multiple_create_without_reservation_id(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), 'min_count': "2", 'max_count': "3" } response = self._do_post('servers', 'multiple-create-no-resv-post-req', subs) subs.update(self._get_regexes()) self._verify_response('multiple-create-no-resv-post-resp', subs, response, 202) class MultipleCreateXmlTest(MultipleCreateJsonTest): ctype = 'xml' class ServicesJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.services.Services" def setUp(self): super(ServicesJsonTest, self).setUp() self.stubs.Set(db, "service_get_all", test_services.fake_db_api_service_get_all) self.stubs.Set(timeutils, "utcnow", test_services.fake_utcnow) self.stubs.Set(timeutils, "utcnow_ts", test_services.fake_utcnow_ts) self.stubs.Set(db, "service_get_by_args", test_services.fake_service_get_by_host_binary) self.stubs.Set(db, "service_update", test_services.fake_service_update) def tearDown(self): super(ServicesJsonTest, self).tearDown() timeutils.clear_time_override() def fake_load(self, service_name): return service_name == 'os-extended-services' def test_services_list(self): """Return a list of all agent builds.""" response = self._do_get('os-services') subs = {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up'} subs.update(self._get_regexes()) self._verify_response('services-list-get-resp', subs, response, 200) def test_service_enable(self): """Enable an existing agent build.""" subs = {"host": "host1", 'binary': 'nova-compute'} response = self._do_put('os-services/enable', 'service-enable-put-req', subs) subs = {"host": "host1", "binary": "nova-compute"} self._verify_response('service-enable-put-resp', subs, response, 200) def test_service_disable(self): """Disable an existing agent build.""" subs = {"host": "host1", 'binary': 'nova-compute'} response = self._do_put('os-services/disable', 'service-disable-put-req', subs) subs = {"host": "host1", "binary": "nova-compute"} self._verify_response('service-disable-put-resp', subs, response, 200) def test_service_detail(self): """Return a list of all running services with the disable reason information if that exists. """ self.stubs.Set(extensions.ExtensionManager, "is_loaded", self.fake_load) response = self._do_get('os-services') self.assertEqual(response.status, 200) subs = {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up'} subs.update(self._get_regexes()) return self._verify_response('services-get-resp', subs, response, 200) def test_service_disable_log_reason(self): """Disable an existing service and log the reason.""" self.stubs.Set(extensions.ExtensionManager, "is_loaded", self.fake_load) subs = {"host": "host1", 'binary': 'nova-compute', 'disabled_reason': 'test2'} response = self._do_put('os-services/disable-log-reason', 'service-disable-log-put-req', subs) return self._verify_response('service-disable-log-put-resp', subs, response, 200) class ServicesXmlTest(ServicesJsonTest): ctype = 'xml' class ExtendedServicesJsonTest(ApiSampleTestBaseV2): """This extension is extending the functionalities of the Services extension so the funcionalities introduced by this extension are tested in the ServicesJsonTest and ServicesXmlTest classes. """ extension_name = ("nova.api.openstack.compute.contrib." "extended_services.Extended_services") class ExtendedServicesXmlTest(ExtendedServicesJsonTest): """This extension is tested in the ServicesXmlTest class.""" ctype = 'xml' @mock.patch.object(db, 'service_get_all', side_effect=test_services.fake_db_api_service_get_all) @mock.patch.object(db, 'service_get_by_args', side_effect=test_services.fake_service_get_by_host_binary) class ExtendedServicesDeleteJsonTest(ApiSampleTestBaseV2): extends_name = ("nova.api.openstack.compute.contrib.services.Services") extension_name = ("nova.api.openstack.compute.contrib." "extended_services_delete.Extended_services_delete") def setUp(self): super(ExtendedServicesDeleteJsonTest, self).setUp() timeutils.set_time_override(test_services.fake_utcnow()) def tearDown(self): super(ExtendedServicesDeleteJsonTest, self).tearDown() timeutils.clear_time_override() def test_service_detail(self, *mocks): """Return a list of all running services with the disable reason information if that exists. """ response = self._do_get('os-services') self.assertEqual(response.status, 200) subs = {'id': 1, 'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up'} subs.update(self._get_regexes()) return self._verify_response('services-get-resp', subs, response, 200) def test_service_delete(self, *mocks): response = self._do_delete('os-services/1') self.assertEqual(response.status, 204) self.assertEqual(response.read(), "") class ExtendedServicesDeleteXmlTest(ExtendedServicesDeleteJsonTest): """This extension is tested in the ExtendedServicesDeleteJsonTest class.""" ctype = 'xml' class SimpleTenantUsageSampleJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.simple_tenant_usage." "Simple_tenant_usage") def setUp(self): """setUp method for simple tenant usage.""" super(SimpleTenantUsageSampleJsonTest, self).setUp() started = timeutils.utcnow() now = started + datetime.timedelta(hours=1) timeutils.set_time_override(started) self._post_server() timeutils.set_time_override(now) self.query = { 'start': str(started), 'end': str(now) } def tearDown(self): """tearDown method for simple tenant usage.""" super(SimpleTenantUsageSampleJsonTest, self).tearDown() timeutils.clear_time_override() def test_get_tenants_usage(self): # Get api sample to get all tenants usage request. response = self._do_get('os-simple-tenant-usage?%s' % ( urllib.urlencode(self.query))) subs = self._get_regexes() self._verify_response('simple-tenant-usage-get', subs, response, 200) def test_get_tenant_usage_details(self): # Get api sample to get specific tenant usage request. tenant_id = 'openstack' response = self._do_get('os-simple-tenant-usage/%s?%s' % (tenant_id, urllib.urlencode(self.query))) subs = self._get_regexes() self._verify_response('simple-tenant-usage-get-specific', subs, response, 200) class SimpleTenantUsageSampleXmlTest(SimpleTenantUsageSampleJsonTest): ctype = "xml" class ServerDiagnosticsSamplesJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.server_diagnostics." "Server_diagnostics") def test_server_diagnostics_get(self): uuid = self._post_server() response = self._do_get('servers/%s/diagnostics' % uuid) subs = self._get_regexes() self._verify_response('server-diagnostics-get-resp', subs, response, 200) class ServerDiagnosticsSamplesXmlTest(ServerDiagnosticsSamplesJsonTest): ctype = "xml" class AvailabilityZoneJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.availability_zone." "Availability_zone") def test_create_availability_zone(self): subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), "availability_zone": "nova" } response = self._do_post('servers', 'availability-zone-post-req', subs) subs.update(self._get_regexes()) self._verify_response('availability-zone-post-resp', subs, response, 202) class AvailabilityZoneXmlTest(AvailabilityZoneJsonTest): ctype = "xml" class AdminActionsSamplesJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.admin_actions." "Admin_actions") def setUp(self): """setUp Method for AdminActions api samples extension This method creates the server that will be used in each tests """ super(AdminActionsSamplesJsonTest, self).setUp() self.uuid = self._post_server() def test_post_pause(self): # Get api samples to pause server request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-pause', {}) self.assertEqual(response.status, 202) def test_post_unpause(self): # Get api samples to unpause server request. self.test_post_pause() response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-unpause', {}) self.assertEqual(response.status, 202) def test_post_suspend(self): # Get api samples to suspend server request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-suspend', {}) self.assertEqual(response.status, 202) def test_post_resume(self): # Get api samples to server resume request. self.test_post_suspend() response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-resume', {}) self.assertEqual(response.status, 202) def test_post_migrate(self): # Get api samples to migrate server request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-migrate', {}) self.assertEqual(response.status, 202) def test_post_reset_network(self): # Get api samples to reset server network request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-reset-network', {}) self.assertEqual(response.status, 202) def test_post_inject_network_info(self): # Get api samples to inject network info request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-inject-network-info', {}) self.assertEqual(response.status, 202) def test_post_lock_server(self): # Get api samples to lock server request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-lock-server', {}) self.assertEqual(response.status, 202) def test_post_unlock_server(self): # Get api samples to unlock server request. self.test_post_lock_server() response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-unlock-server', {}) self.assertEqual(response.status, 202) def test_post_backup_server(self): # Get api samples to backup server request. def image_details(self, context, **kwargs): """This stub is specifically used on the backup action.""" # NOTE(maurosr): I've added this simple stub cause backup action # was trapped in infinite loop during fetch image phase since the # fake Image Service always returns the same set of images return [] self.stubs.Set(fake._FakeImageService, 'detail', image_details) response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-backup-server', {}) self.assertEqual(response.status, 202) def test_post_live_migrate_server(self): # Get api samples to server live migrate request. def fake_live_migrate(_self, context, instance, scheduler_hint, block_migration, disk_over_commit): self.assertEqual(self.uuid, instance["uuid"]) host = scheduler_hint["host"] self.assertEqual(self.compute.host, host) self.stubs.Set(conductor_manager.ComputeTaskManager, '_live_migrate', fake_live_migrate) def fake_get_compute(context, host): service = dict(host=host, binary='nova-compute', topic='compute', report_count=1, updated_at='foo', hypervisor_type='bar', hypervisor_version='1', disabled=False) return {'compute_node': [service]} self.stubs.Set(db, "service_get_by_compute_host", fake_get_compute) response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-live-migrate', {'hostname': self.compute.host}) self.assertEqual(response.status, 202) def test_post_reset_state(self): # get api samples to server reset state request. response = self._do_post('servers/%s/action' % self.uuid, 'admin-actions-reset-server-state', {}) self.assertEqual(response.status, 202) class AdminActionsSamplesXmlTest(AdminActionsSamplesJsonTest): ctype = 'xml' class ConsolesSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".consoles.Consoles") def setUp(self): super(ConsolesSampleJsonTests, self).setUp() self.flags(vnc_enabled=True) self.flags(enabled=True, group='spice') self.flags(enabled=True, group='rdp') def test_get_vnc_console(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'get-vnc-console-post-req', {'action': 'os-getVNCConsole'}) subs = self._get_regexes() subs["url"] = \ "((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)" self._verify_response('get-vnc-console-post-resp', subs, response, 200) def test_get_spice_console(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'get-spice-console-post-req', {'action': 'os-getSPICEConsole'}) subs = self._get_regexes() subs["url"] = \ "((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)" self._verify_response('get-spice-console-post-resp', subs, response, 200) def test_get_rdp_console(self): uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'get-rdp-console-post-req', {'action': 'os-getRDPConsole'}) subs = self._get_regexes() subs["url"] = \ "((https?):((//)|(\\\\))+([\w\d:#@%/;$()~_?\+-=\\\.&](#!)?)*)" self._verify_response('get-rdp-console-post-resp', subs, response, 200) class ConsolesSampleXmlTests(ConsolesSampleJsonTests): ctype = 'xml' class ConsoleAuthTokensSampleJsonTests(ServersSampleBase): extends_name = ("nova.api.openstack.compute.contrib.consoles.Consoles") extension_name = ("nova.api.openstack.compute.contrib.console_auth_tokens." "Console_auth_tokens") def _get_console_url(self, data): return json.loads(data)["console"]["url"] def _get_console_token(self, uuid): response = self._do_post('servers/%s/action' % uuid, 'get-rdp-console-post-req', {'action': 'os-getRDPConsole'}) url = self._get_console_url(response.read()) return re.match('.+?token=([^&]+)', url).groups()[0] def test_get_console_connect_info(self): self.flags(enabled=True, group='rdp') uuid = self._post_server() token = self._get_console_token(uuid) response = self._do_get('os-console-auth-tokens/%s' % token) subs = self._get_regexes() subs["uuid"] = uuid subs["host"] = r"[\w\.\-]+" subs["port"] = "[0-9]+" subs["internal_access_path"] = ".*" self._verify_response('get-console-connect-info-get-resp', subs, response, 200) class ConsoleAuthTokensSampleXmlTests(ConsoleAuthTokensSampleJsonTests): ctype = 'xml' def _get_console_url(self, data): return etree.fromstring(data).find('url').text class DeferredDeleteSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".deferred_delete.Deferred_delete") def setUp(self): super(DeferredDeleteSampleJsonTests, self).setUp() self.flags(reclaim_instance_interval=1) def test_restore(self): uuid = self._post_server() response = self._do_delete('servers/%s' % uuid) response = self._do_post('servers/%s/action' % uuid, 'restore-post-req', {}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_force_delete(self): uuid = self._post_server() response = self._do_delete('servers/%s' % uuid) response = self._do_post('servers/%s/action' % uuid, 'force-delete-post-req', {}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class DeferredDeleteSampleXmlTests(DeferredDeleteSampleJsonTests): ctype = 'xml' class QuotasSampleJsonTests(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.quotas.Quotas" def test_show_quotas(self): # Get api sample to show quotas. response = self._do_get('os-quota-sets/fake_tenant') self._verify_response('quotas-show-get-resp', {}, response, 200) def test_show_quotas_defaults(self): # Get api sample to show quotas defaults. response = self._do_get('os-quota-sets/fake_tenant/defaults') self._verify_response('quotas-show-defaults-get-resp', {}, response, 200) def test_update_quotas(self): # Get api sample to update quotas. response = self._do_put('os-quota-sets/fake_tenant', 'quotas-update-post-req', {}) self._verify_response('quotas-update-post-resp', {}, response, 200) class QuotasSampleXmlTests(QuotasSampleJsonTests): ctype = "xml" class ExtendedQuotasSampleJsonTests(ApiSampleTestBaseV2): extends_name = "nova.api.openstack.compute.contrib.quotas.Quotas" extension_name = ("nova.api.openstack.compute.contrib" ".extended_quotas.Extended_quotas") def test_delete_quotas(self): # Get api sample to delete quota. response = self._do_delete('os-quota-sets/fake_tenant') self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_update_quotas(self): # Get api sample to update quotas. response = self._do_put('os-quota-sets/fake_tenant', 'quotas-update-post-req', {}) return self._verify_response('quotas-update-post-resp', {}, response, 200) class ExtendedQuotasSampleXmlTests(ExtendedQuotasSampleJsonTests): ctype = "xml" class UserQuotasSampleJsonTests(ApiSampleTestBaseV2): extends_name = "nova.api.openstack.compute.contrib.quotas.Quotas" extension_name = ("nova.api.openstack.compute.contrib" ".user_quotas.User_quotas") def fake_load(self, *args): return True def test_show_quotas_for_user(self): # Get api sample to show quotas for user. response = self._do_get('os-quota-sets/fake_tenant?user_id=1') self._verify_response('user-quotas-show-get-resp', {}, response, 200) def test_delete_quotas_for_user(self): # Get api sample to delete quota for user. self.stubs.Set(extensions.ExtensionManager, "is_loaded", self.fake_load) response = self._do_delete('os-quota-sets/fake_tenant?user_id=1') self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_update_quotas_for_user(self): # Get api sample to update quotas for user. response = self._do_put('os-quota-sets/fake_tenant?user_id=1', 'user-quotas-update-post-req', {}) return self._verify_response('user-quotas-update-post-resp', {}, response, 200) class UserQuotasSampleXmlTests(UserQuotasSampleJsonTests): ctype = "xml" class ExtendedIpsSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".extended_ips.Extended_ips") def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['hypervisor_hostname'] = r'[\w\.\-]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['id'] = uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedIpsSampleXmlTests(ExtendedIpsSampleJsonTests): ctype = 'xml' class ExtendedIpsMacSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".extended_ips_mac.Extended_ips_mac") def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) self.assertEqual(response.status, 200) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid subs['hypervisor_hostname'] = r'[\w\.\-]+' subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') self.assertEqual(response.status, 200) subs = self._get_regexes() subs['id'] = uuid subs['hostid'] = '[a-f0-9]+' subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedIpsMacSampleXmlTests(ExtendedIpsMacSampleJsonTests): ctype = 'xml' class ExtendedStatusSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".extended_status.Extended_status") def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['id'] = uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedStatusSampleXmlTests(ExtendedStatusSampleJsonTests): ctype = 'xml' class ExtendedVolumesSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".extended_volumes.Extended_volumes") def test_show(self): uuid = self._post_server() self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fakes.stub_bdm_get_all_by_instance) response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): uuid = self._post_server() self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fakes.stub_bdm_get_all_by_instance) response = self._do_get('servers/detail') subs = self._get_regexes() subs['id'] = uuid subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedVolumesSampleXmlTests(ExtendedVolumesSampleJsonTests): ctype = 'xml' class ServerUsageSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".server_usage.Server_usage") def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' return self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' return self._verify_response('servers-detail-resp', subs, response, 200) class ServerUsageSampleXmlTests(ServerUsageSampleJsonTests): ctype = 'xml' class ExtendedVIFNetSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".extended_virtual_interfaces_net.Extended_virtual_interfaces_net") def _get_flags(self): f = super(ExtendedVIFNetSampleJsonTests, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # extended_virtual_interfaces_net_update also # needs virtual_interfaces to be loaded f['osapi_compute_extension'].append( ('nova.api.openstack.compute.contrib' '.virtual_interfaces.Virtual_interfaces')) return f def test_vifs_list(self): uuid = self._post_server() response = self._do_get('servers/%s/os-virtual-interfaces' % uuid) self.assertEqual(response.status, 200) subs = self._get_regexes() subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' self._verify_response('vifs-list-resp', subs, response, 200) class ExtendedVIFNetSampleXmlTests(ExtendedIpsSampleJsonTests): ctype = 'xml' class FlavorManageSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.flavormanage." "Flavormanage") def _create_flavor(self): """Create a flavor.""" subs = { 'flavor_id': 10, 'flavor_name': "test_flavor" } response = self._do_post("flavors", "flavor-create-post-req", subs) subs.update(self._get_regexes()) self._verify_response("flavor-create-post-resp", subs, response, 200) def test_create_flavor(self): # Get api sample to create a flavor. self._create_flavor() def test_delete_flavor(self): # Get api sample to delete a flavor. self._create_flavor() response = self._do_delete("flavors/10") self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class FlavorManageSampleXmlTests(FlavorManageSampleJsonTests): ctype = "xml" class ServerPasswordSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.server_password." "Server_password") def test_get_password(self): # Mock password since there is no api to set it def fake_ext_password(*args, **kwargs): return ("xlozO3wLCBRWAa2yDjCCVx8vwNPypxnypmRYDa/zErlQ+EzPe1S/" "Gz6nfmC52mOlOSCRuUOmG7kqqgejPof6M7bOezS387zjq4LSvvwp" "28zUknzy4YzfFGhnHAdai3TxUJ26pfQCYrq8UTzmKF2Bq8ioSEtV" "VzM0A96pDh8W2i7BOz6MdoiVyiev/I1K2LsuipfxSJR7Wdke4zNX" "JjHHP2RfYsVbZ/k9ANu+Nz4iIH8/7Cacud/pphH7EjrY6a4RZNrj" "QskrhKYed0YERpotyjYk1eDtRe72GrSiXteqCM4biaQ5w3ruS+Ac" "X//PXk3uJ5kC7d67fPXaVz4WaQRYMg==") self.stubs.Set(password, "extract_password", fake_ext_password) uuid = self._post_server() response = self._do_get('servers/%s/os-server-password' % uuid) subs = self._get_regexes() subs['encrypted_password'] = fake_ext_password().replace('+', '\\+') self._verify_response('get-password-resp', subs, response, 200) def test_reset_password(self): uuid = self._post_server() response = self._do_delete('servers/%s/os-server-password' % uuid) self.assertEqual(response.status, 204) class ServerPasswordSampleXmlTests(ServerPasswordSampleJsonTests): ctype = "xml" class DiskConfigJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.disk_config." "Disk_config") def test_list_servers_detail(self): uuid = self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' subs['id'] = uuid self._verify_response('list-servers-detail-get', subs, response, 200) def test_get_server(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_update_server(self): uuid = self._post_server() response = self._do_put('servers/%s' % uuid, 'server-update-put-req', {}) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-update-put-resp', subs, response, 200) def test_resize_server(self): self.flags(allow_resize_to_same_host=True) uuid = self._post_server() response = self._do_post('servers/%s/action' % uuid, 'server-resize-post-req', {}) self.assertEqual(response.status, 202) # NOTE(tmello): Resize does not return response body # Bug #1085213. self.assertEqual(response.read(), "") def test_rebuild_server(self): uuid = self._post_server() subs = { 'image_id': fake.get_valid_image_id(), 'host': self._get_host(), } response = self._do_post('servers/%s/action' % uuid, 'server-action-rebuild-req', subs) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-action-rebuild-resp', subs, response, 202) def test_get_image(self): image_id = fake.get_valid_image_id() response = self._do_get('images/%s' % image_id) subs = self._get_regexes() subs['image_id'] = image_id self._verify_response('image-get-resp', subs, response, 200) def test_list_images(self): response = self._do_get('images/detail') subs = self._get_regexes() self._verify_response('image-list-resp', subs, response, 200) class DiskConfigXmlTest(DiskConfigJsonTest): ctype = 'xml' class OsNetworksJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.os_tenant_networks" ".Os_tenant_networks") def setUp(self): super(OsNetworksJsonTests, self).setUp() CONF.set_override("enable_network_quota", True) def fake(*args, **kwargs): pass self.stubs.Set(nova.quota.QUOTAS, "reserve", fake) self.stubs.Set(nova.quota.QUOTAS, "commit", fake) self.stubs.Set(nova.quota.QUOTAS, "rollback", fake) self.stubs.Set(nova.quota.QuotaEngine, "reserve", fake) self.stubs.Set(nova.quota.QuotaEngine, "commit", fake) self.stubs.Set(nova.quota.QuotaEngine, "rollback", fake) def test_list_networks(self): response = self._do_get('os-tenant-networks') subs = self._get_regexes() self._verify_response('networks-list-res', subs, response, 200) def test_create_network(self): response = self._do_post('os-tenant-networks', "networks-post-req", {}) subs = self._get_regexes() self._verify_response('networks-post-res', subs, response, 200) def test_delete_network(self): response = self._do_post('os-tenant-networks', "networks-post-req", {}) net = json.loads(response.read()) response = self._do_delete('os-tenant-networks/%s' % net["network"]["id"]) self.assertEqual(response.status, 202) class OsNetworksXmlTests(OsNetworksJsonTests): ctype = 'xml' def test_delete_network(self): response = self._do_post('os-tenant-networks', "networks-post-req", {}) net = etree.fromstring(response.read()) network_id = net.find('id').text response = self._do_delete('os-tenant-networks/%s' % network_id) self.assertEqual(response.status, 202) class NetworksJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib" ".os_networks.Os_networks") def setUp(self): super(NetworksJsonTests, self).setUp() fake_network_api = test_networks.FakeNetworkAPI() self.stubs.Set(network_api.API, "get_all", fake_network_api.get_all) self.stubs.Set(network_api.API, "get", fake_network_api.get) self.stubs.Set(network_api.API, "associate", fake_network_api.associate) self.stubs.Set(network_api.API, "delete", fake_network_api.delete) self.stubs.Set(network_api.API, "create", fake_network_api.create) self.stubs.Set(network_api.API, "add_network_to_project", fake_network_api.add_network_to_project) def test_network_list(self): response = self._do_get('os-networks') subs = self._get_regexes() self._verify_response('networks-list-resp', subs, response, 200) def test_network_disassociate(self): uuid = test_networks.FAKE_NETWORKS[0]['uuid'] response = self._do_post('os-networks/%s/action' % uuid, 'networks-disassociate-req', {}) self.assertEqual(response.status, 202) def test_network_show(self): uuid = test_networks.FAKE_NETWORKS[0]['uuid'] response = self._do_get('os-networks/%s' % uuid) subs = self._get_regexes() self._verify_response('network-show-resp', subs, response, 200) def test_network_create(self): response = self._do_post("os-networks", 'network-create-req', {}) subs = self._get_regexes() self._verify_response('network-create-resp', subs, response, 200) def test_network_add(self): response = self._do_post("os-networks/add", 'network-add-req', {}) self.assertEqual(response.status, 202) class NetworksXmlTests(NetworksJsonTests): ctype = 'xml' class NetworksAssociateJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib" ".networks_associate.Networks_associate") _sentinel = object() def _get_flags(self): f = super(NetworksAssociateJsonTests, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # Networks_associate requires Networks to be update f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.os_networks.Os_networks') return f def setUp(self): super(NetworksAssociateJsonTests, self).setUp() def fake_associate(self, context, network_id, host=NetworksAssociateJsonTests._sentinel, project=NetworksAssociateJsonTests._sentinel): return True self.stubs.Set(network_api.API, "associate", fake_associate) def test_disassociate(self): response = self._do_post('os-networks/1/action', 'network-disassociate-req', {}) self.assertEqual(response.status, 202) def test_disassociate_host(self): response = self._do_post('os-networks/1/action', 'network-disassociate-host-req', {}) self.assertEqual(response.status, 202) def test_disassociate_project(self): response = self._do_post('os-networks/1/action', 'network-disassociate-project-req', {}) self.assertEqual(response.status, 202) def test_associate_host(self): response = self._do_post('os-networks/1/action', 'network-associate-host-req', {"host": "testHost"}) self.assertEqual(response.status, 202) class NetworksAssociateXmlTests(NetworksAssociateJsonTests): ctype = 'xml' class FlavorDisabledSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.flavor_disabled." "Flavor_disabled") def test_show_flavor(self): # Get api sample to show flavor_disabled attr. of a flavor. flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = self._get_regexes() subs['flavor_id'] = flavor_id self._verify_response('flavor-show-get-resp', subs, response, 200) def test_detail_flavor(self): # Get api sample to show details of a flavor. response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavor-detail-get-resp', subs, response, 200) class FlavorDisabledSampleXmlTests(FlavorDisabledSampleJsonTests): ctype = "xml" class CellsSampleJsonTest(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.cells.Cells" def setUp(self): # db_check_interval < 0 makes cells manager always hit the DB self.flags(enable=True, db_check_interval=-1, group='cells') super(CellsSampleJsonTest, self).setUp() self._stub_cells() def _stub_cells(self, num_cells=5): self.cells = [] self.cells_next_id = 1 def _fake_cell_get_all(context): return self.cells def _fake_cell_get(inst, context, cell_name): for cell in self.cells: if cell['name'] == cell_name: return cell raise exception.CellNotFound(cell_name=cell_name) for x in xrange(num_cells): cell = models.Cell() our_id = self.cells_next_id self.cells_next_id += 1 cell.update({'id': our_id, 'name': 'cell%s' % our_id, 'transport_url': 'rabbit://username%s@/' % our_id, 'is_parent': our_id % 2 == 0}) self.cells.append(cell) self.stubs.Set(db, 'cell_get_all', _fake_cell_get_all) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_get', _fake_cell_get) def test_cells_empty_list(self): # Override this self._stub_cells(num_cells=0) response = self._do_get('os-cells') subs = self._get_regexes() self._verify_response('cells-list-empty-resp', subs, response, 200) def test_cells_list(self): response = self._do_get('os-cells') subs = self._get_regexes() self._verify_response('cells-list-resp', subs, response, 200) def test_cells_get(self): response = self._do_get('os-cells/cell3') subs = self._get_regexes() self._verify_response('cells-get-resp', subs, response, 200) class CellsSampleXmlTest(CellsSampleJsonTest): ctype = 'xml' class CellsCapacitySampleJsonTest(ApiSampleTestBaseV2): extends_name = ("nova.api.openstack.compute.contrib.cells.Cells") extension_name = ("nova.api.openstack.compute.contrib." "cell_capacities.Cell_capacities") def setUp(self): self.flags(enable=True, db_check_interval=-1, group='cells') super(CellsCapacitySampleJsonTest, self).setUp() # (navneetk/kaushikc) : Mock cell capacity to avoid the capacity # being calculated from the compute nodes in the environment self._mock_cell_capacity() def test_get_cell_capacity(self): state_manager = state.CellStateManager() my_state = state_manager.get_my_state() response = self._do_get('os-cells/%s/capacities' % my_state.name) subs = self._get_regexes() return self._verify_response('cells-capacities-resp', subs, response, 200) def test_get_all_cells_capacity(self): response = self._do_get('os-cells/capacities') subs = self._get_regexes() return self._verify_response('cells-capacities-resp', subs, response, 200) def _mock_cell_capacity(self): self.mox.StubOutWithMock(self.cells.manager.state_manager, 'get_our_capacities') response = {"ram_free": {"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0}, "total_mb": 7680}, "disk_free": {"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0}, "total_mb": 1052672} } self.cells.manager.state_manager.get_our_capacities(). \ AndReturn(response) self.mox.ReplayAll() class CellsCapacitySampleXmlTest(CellsCapacitySampleJsonTest): ctype = 'xml' class BareMetalNodesJsonTest(ApiSampleTestBaseV2, bm_db_base.BMDBTestCase): extension_name = ('nova.api.openstack.compute.contrib.baremetal_nodes.' 'Baremetal_nodes') def _get_subs(self): subs = {} return subs def _create_node(self): response = self._do_post("os-baremetal-nodes", "baremetal-node-create-req", {}) subs = self._get_subs() subs.update({'node_id': '(?P\d+)'}) return self._verify_response("baremetal-node-create-resp", subs, response, 200) def _create_node_with_address(self): address = '12:34:56:78:90:ab' req_subs = {'address': address} response = self._do_post("os-baremetal-nodes", "baremetal-node-create-with-address-req", req_subs) subs = self._get_subs() subs.update({'node_id': '(?P\d+)', 'interface_id': '\d+', 'address': address, }) self._verify_response("baremetal-node-create-with-address-resp", subs, response, 200) def test_create_node(self): self._create_node() def test_create_node_with_address(self): self._create_node_with_address() def test_list_nodes(self): node_id = self._create_node() interface_id = self._add_interface(node_id) response = self._do_get('os-baremetal-nodes') subs = self._get_subs() subs.update({'node_id': node_id, 'interface_id': interface_id, 'address': 'aa:aa:aa:aa:aa:aa', }) self._verify_response('baremetal-node-list-resp', subs, response, 200) def test_show_node(self): node_id = self._create_node() interface_id = self._add_interface(node_id) response = self._do_get('os-baremetal-nodes/%s' % node_id) subs = self._get_subs() subs.update({'node_id': node_id, 'interface_id': interface_id, 'address': 'aa:aa:aa:aa:aa:aa', }) self._verify_response('baremetal-node-show-resp', subs, response, 200) def test_delete_node(self): node_id = self._create_node() response = self._do_delete("os-baremetal-nodes/%s" % node_id) self.assertEqual(response.status, 202) def _add_interface(self, node_id): response = self._do_post("os-baremetal-nodes/%s/action" % node_id, "baremetal-node-add-interface-req", {'address': 'aa:aa:aa:aa:aa:aa'}) subs = {'interface_id': r'(?P\d+)'} return self._verify_response("baremetal-node-add-interface-resp", subs, response, 200) def test_add_interface(self): node_id = self._create_node() self._add_interface(node_id) def test_remove_interface(self): node_id = self._create_node() self._add_interface(node_id) response = self._do_post("os-baremetal-nodes/%s/action" % node_id, "baremetal-node-remove-interface-req", {'address': 'aa:aa:aa:aa:aa:aa'}) self.assertEqual(response.status, 202) self.assertEqual(response.read(), "") class BareMetalNodesXmlTest(BareMetalNodesJsonTest): ctype = 'xml' class BareMetalExtStatusJsonTest(BareMetalNodesJsonTest): extension_name = ('nova.api.openstack.compute.contrib.' 'baremetal_ext_status.Baremetal_ext_status') def _get_flags(self): f = super(BareMetalExtStatusJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # BareMetalExtStatus extension also needs BareMetalNodes to be loaded. f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.baremetal_nodes.' 'Baremetal_nodes') return f def _get_subs(self): vanilla_regexes = self._get_regexes() subs = {'node_uuid': vanilla_regexes['uuid']} return subs class BareMetalExtStatusXmlTest(BareMetalExtStatusJsonTest): ctype = 'xml' class BlockDeviceMappingV2BootJsonTest(ServersSampleBase): extension_name = ('nova.api.openstack.compute.contrib.' 'block_device_mapping_v2_boot.' 'Block_device_mapping_v2_boot') def _get_flags(self): f = super(BlockDeviceMappingV2BootJsonTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # We need the volumes extension as well f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.volumes.Volumes') return f def test_servers_post_with_bdm_v2(self): self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) self.stubs.Set(cinder.API, 'check_attach', fakes.stub_volume_check_attach) return self._post_server() class BlockDeviceMappingV2BootXmlTest(BlockDeviceMappingV2BootJsonTest): ctype = 'xml' class FloatingIPPoolsSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.floating_ip_pools." "Floating_ip_pools") def test_list_floatingippools(self): pool_list = ["pool1", "pool2"] def fake_get_floating_ip_pools(self, context): return [{'name': pool_list[0]}, {'name': pool_list[1]}] self.stubs.Set(network_api.API, "get_floating_ip_pools", fake_get_floating_ip_pools) response = self._do_get('os-floating-ip-pools') subs = { 'pool1': pool_list[0], 'pool2': pool_list[1] } self._verify_response('floatingippools-list-resp', subs, response, 200) class FloatingIPPoolsSampleXmlTests(FloatingIPPoolsSampleJsonTests): ctype = 'xml' class MultinicSampleJsonTest(ServersSampleBase): extension_name = "nova.api.openstack.compute.contrib.multinic.Multinic" def _disable_instance_dns_manager(self): # NOTE(markmc): it looks like multinic and instance_dns_manager are # incompatible. See: # https://bugs.launchpad.net/nova/+bug/1213251 self.flags( instance_dns_manager='nova.network.noop_dns_driver.NoopDNSDriver') def setUp(self): self._disable_instance_dns_manager() super(MultinicSampleJsonTest, self).setUp() self.uuid = self._post_server() def _add_fixed_ip(self): subs = {"networkId": 1} response = self._do_post('servers/%s/action' % (self.uuid), 'multinic-add-fixed-ip-req', subs) self.assertEqual(response.status, 202) def test_add_fixed_ip(self): self._add_fixed_ip() def test_remove_fixed_ip(self): self._add_fixed_ip() subs = {"ip": "10.0.0.4"} response = self._do_post('servers/%s/action' % (self.uuid), 'multinic-remove-fixed-ip-req', subs) self.assertEqual(response.status, 202) class MultinicSampleXmlTest(MultinicSampleJsonTest): ctype = "xml" class InstanceUsageAuditLogJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib." "instance_usage_audit_log.Instance_usage_audit_log") def test_show_instance_usage_audit_log(self): response = self._do_get('os-instance_usage_audit_log/%s' % urllib.quote('2012-07-05 10:00:00')) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('inst-usage-audit-log-show-get-resp', subs, response, 200) def test_index_instance_usage_audit_log(self): response = self._do_get('os-instance_usage_audit_log') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('inst-usage-audit-log-index-get-resp', subs, response, 200) class InstanceUsageAuditLogXmlTest(InstanceUsageAuditLogJsonTest): ctype = "xml" class FlavorExtraSpecsSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.flavorextraspecs." "Flavorextraspecs") def _flavor_extra_specs_create(self): subs = {'value1': 'value1', 'value2': 'value2' } response = self._do_post('flavors/1/os-extra_specs', 'flavor-extra-specs-create-req', subs) self._verify_response('flavor-extra-specs-create-resp', subs, response, 200) def test_flavor_extra_specs_get(self): subs = {'value1': 'value1'} self._flavor_extra_specs_create() response = self._do_get('flavors/1/os-extra_specs/key1') self._verify_response('flavor-extra-specs-get-resp', subs, response, 200) def test_flavor_extra_specs_list(self): subs = {'value1': 'value1', 'value2': 'value2' } self._flavor_extra_specs_create() response = self._do_get('flavors/1/os-extra_specs') self._verify_response('flavor-extra-specs-list-resp', subs, response, 200) def test_flavor_extra_specs_create(self): self._flavor_extra_specs_create() def test_flavor_extra_specs_update(self): subs = {'value1': 'new_value1'} self._flavor_extra_specs_create() response = self._do_put('flavors/1/os-extra_specs/key1', 'flavor-extra-specs-update-req', subs) self._verify_response('flavor-extra-specs-update-resp', subs, response, 200) def test_flavor_extra_specs_delete(self): self._flavor_extra_specs_create() response = self._do_delete('flavors/1/os-extra_specs/key1') self.assertEqual(response.status, 200) self.assertEqual(response.read(), '') class FlavorExtraSpecsSampleXmlTests(FlavorExtraSpecsSampleJsonTests): ctype = 'xml' class FpingSampleJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.fping.Fping") def setUp(self): super(FpingSampleJsonTests, self).setUp() def fake_check_fping(self): pass self.stubs.Set(utils, "execute", test_fping.execute) self.stubs.Set(fping.FpingController, "check_fping", fake_check_fping) def test_get_fping(self): self._post_server() response = self._do_get('os-fping') subs = self._get_regexes() self._verify_response('fping-get-resp', subs, response, 200) def test_get_fping_details(self): uuid = self._post_server() response = self._do_get('os-fping/%s' % (uuid)) subs = self._get_regexes() self._verify_response('fping-get-details-resp', subs, response, 200) class FpingSampleXmlTests(FpingSampleJsonTests): ctype = 'xml' class ExtendedAvailabilityZoneJsonTests(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".extended_availability_zone" ".Extended_availability_zone") def test_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('server-get-resp', subs, response, 200) def test_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' self._verify_response('servers-detail-resp', subs, response, 200) class ExtendedAvailabilityZoneXmlTests(ExtendedAvailabilityZoneJsonTests): ctype = 'xml' class EvacuateJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".evacuate.Evacuate") def test_server_evacuate(self): uuid = self._post_server() req_subs = { 'host': self.compute.host, "adminPass": "MySecretPass", "onSharedStorage": 'False' } def fake_service_is_up(self, service): """Simulate validation of instance host is down.""" return False def fake_service_get_by_compute_host(self, context, host): """Simulate that given host is a valid host.""" return { 'host_name': host, 'service': 'compute', 'zone': 'nova' } def fake_check_instance_exists(self, context, instance): """Simulate validation of instance does not exist.""" return False self.stubs.Set(service_group_api.API, 'service_is_up', fake_service_is_up) self.stubs.Set(compute_api.HostAPI, 'service_get_by_compute_host', fake_service_get_by_compute_host) self.stubs.Set(compute_manager.ComputeManager, '_check_instance_exists', fake_check_instance_exists) response = self._do_post('servers/%s/action' % uuid, 'server-evacuate-req', req_subs) subs = self._get_regexes() self._verify_response('server-evacuate-resp', subs, response, 200) class EvacuateXmlTest(EvacuateJsonTest): ctype = 'xml' class FloatingIpDNSJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.floating_ip_dns." "Floating_ip_dns") domain = 'domain1.example.org' name = 'instance1' scope = 'public' project = 'project1' dns_type = 'A' ip = '192.168.1.1' def _create_or_update(self): subs = {'domain': self.domain, 'project': self.project, 'scope': self.scope} response = self._do_put('os-floating-ip-dns/%s' % self.domain, 'floating-ip-dns-create-or-update-req', subs) self._verify_response('floating-ip-dns-create-or-update-resp', subs, response, 200) def _create_or_update_entry(self): subs = {'ip': self.ip, 'dns_type': self.dns_type} response = self._do_put('os-floating-ip-dns/%s/entries/%s' % (self.domain, self.name), 'floating-ip-dns-create-or-update-entry-req', subs) subs.update({'name': self.name, 'domain': self.domain}) self._verify_response('floating-ip-dns-create-or-update-entry-resp', subs, response, 200) def test_floating_ip_dns_list(self): self._create_or_update() response = self._do_get('os-floating-ip-dns') subs = {'domain': self.domain, 'project': self.project, 'scope': self.scope} self._verify_response('floating-ip-dns-list-resp', subs, response, 200) def test_floating_ip_dns_create_or_update(self): self._create_or_update() def test_floating_ip_dns_delete(self): self._create_or_update() response = self._do_delete('os-floating-ip-dns/%s' % self.domain) self.assertEqual(response.status, 202) def test_floating_ip_dns_create_or_update_entry(self): self._create_or_update_entry() def test_floating_ip_dns_entry_get(self): self._create_or_update_entry() response = self._do_get('os-floating-ip-dns/%s/entries/%s' % (self.domain, self.name)) subs = {'domain': self.domain, 'ip': self.ip, 'name': self.name} self._verify_response('floating-ip-dns-entry-get-resp', subs, response, 200) def test_floating_ip_dns_entry_delete(self): self._create_or_update_entry() response = self._do_delete('os-floating-ip-dns/%s/entries/%s' % (self.domain, self.name)) self.assertEqual(response.status, 202) def test_floating_ip_dns_entry_list(self): self._create_or_update_entry() response = self._do_get('os-floating-ip-dns/%s/entries/%s' % (self.domain, self.ip)) subs = {'domain': self.domain, 'ip': self.ip, 'name': self.name} self._verify_response('floating-ip-dns-entry-list-resp', subs, response, 200) class FloatingIpDNSXmlTest(FloatingIpDNSJsonTest): ctype = 'xml' class InstanceActionsSampleJsonTest(ApiSampleTestBaseV2): extension_name = ('nova.api.openstack.compute.contrib.instance_actions.' 'Instance_actions') def setUp(self): super(InstanceActionsSampleJsonTest, self).setUp() self.actions = fake_instance_actions.FAKE_ACTIONS self.events = fake_instance_actions.FAKE_EVENTS self.instance = test_utils.get_test_instance() def fake_instance_action_get_by_request_id(context, uuid, request_id): return copy.deepcopy(self.actions[uuid][request_id]) def fake_instance_actions_get(context, uuid): return [copy.deepcopy(value) for value in self.actions[uuid].itervalues()] def fake_instance_action_events_get(context, action_id): return copy.deepcopy(self.events[action_id]) def fake_instance_get_by_uuid(context, instance_id): return self.instance def fake_get(self, context, instance_uuid): return {'uuid': instance_uuid} self.stubs.Set(db, 'action_get_by_request_id', fake_instance_action_get_by_request_id) self.stubs.Set(db, 'actions_get', fake_instance_actions_get) self.stubs.Set(db, 'action_events_get', fake_instance_action_events_get) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(compute_api.API, 'get', fake_get) def test_instance_action_get(self): fake_uuid = fake_instance_actions.FAKE_UUID fake_request_id = fake_instance_actions.FAKE_REQUEST_ID1 fake_action = self.actions[fake_uuid][fake_request_id] response = self._do_get('servers/%s/os-instance-actions/%s' % (fake_uuid, fake_request_id)) subs = self._get_regexes() subs['action'] = '(reboot)|(resize)' subs['instance_uuid'] = fake_uuid subs['integer_id'] = '[0-9]+' subs['request_id'] = fake_action['request_id'] subs['start_time'] = fake_action['start_time'] subs['result'] = '(Success)|(Error)' subs['event'] = '(schedule)|(compute_create)' self._verify_response('instance-action-get-resp', subs, response, 200) def test_instance_actions_list(self): fake_uuid = fake_instance_actions.FAKE_UUID response = self._do_get('servers/%s/os-instance-actions' % (fake_uuid)) subs = self._get_regexes() subs['action'] = '(reboot)|(resize)' subs['integer_id'] = '[0-9]+' subs['request_id'] = ('req-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}' '-[0-9a-f]{4}-[0-9a-f]{12}') self._verify_response('instance-actions-list-resp', subs, response, 200) class InstanceActionsSampleXmlTest(InstanceActionsSampleJsonTest): ctype = 'xml' class ImageSizeSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib" ".image_size.Image_size") def test_show(self): # Get api sample of one single image details request. image_id = fake.get_valid_image_id() response = self._do_get('images/%s' % image_id) subs = self._get_regexes() subs['image_id'] = image_id self._verify_response('image-get-resp', subs, response, 200) def test_detail(self): # Get api sample of all images details request. response = self._do_get('images/detail') subs = self._get_regexes() self._verify_response('images-details-get-resp', subs, response, 200) class ImageSizeSampleXmlTests(ImageSizeSampleJsonTests): ctype = 'xml' class ConfigDriveSampleJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.config_drive." "Config_drive") def setUp(self): super(ConfigDriveSampleJsonTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) fake.stub_out_image_service(self.stubs) def test_config_drive_show(self): uuid = self._post_server() response = self._do_get('servers/%s' % uuid) subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' # config drive can be a string for True or empty value for False subs['cdrive'] = '.*' self._verify_response('server-config-drive-get-resp', subs, response, 200) def test_config_drive_detail(self): self._post_server() response = self._do_get('servers/detail') subs = self._get_regexes() subs['hostid'] = '[a-f0-9]+' # config drive can be a string for True or empty value for False subs['cdrive'] = '.*' self._verify_response('servers-config-drive-details-resp', subs, response, 200) class ConfigDriveSampleXmlTest(ConfigDriveSampleJsonTest): ctype = 'xml' class FlavorAccessSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.flavor_access." "Flavor_access") def _get_flags(self): f = super(FlavorAccessSampleJsonTests, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] # FlavorAccess extension also needs Flavormanage to be loaded. f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.flavormanage.Flavormanage') return f def _add_tenant(self): subs = { 'tenant_id': 'fake_tenant', 'flavor_id': 10 } response = self._do_post('flavors/10/action', 'flavor-access-add-tenant-req', subs) self._verify_response('flavor-access-add-tenant-resp', subs, response, 200) def _create_flavor(self): subs = { 'flavor_id': 10, 'flavor_name': 'test_flavor' } response = self._do_post("flavors", "flavor-access-create-req", subs) subs.update(self._get_regexes()) self._verify_response("flavor-access-create-resp", subs, response, 200) def test_flavor_access_create(self): self._create_flavor() def test_flavor_access_detail(self): response = self._do_get('flavors/detail') subs = self._get_regexes() self._verify_response('flavor-access-detail-resp', subs, response, 200) def test_flavor_access_list(self): self._create_flavor() self._add_tenant() flavor_id = 10 response = self._do_get('flavors/%s/os-flavor-access' % flavor_id) subs = { 'flavor_id': flavor_id, 'tenant_id': 'fake_tenant', } self._verify_response('flavor-access-list-resp', subs, response, 200) def test_flavor_access_show(self): flavor_id = 1 response = self._do_get('flavors/%s' % flavor_id) subs = { 'flavor_id': flavor_id } subs.update(self._get_regexes()) self._verify_response('flavor-access-show-resp', subs, response, 200) def test_flavor_access_add_tenant(self): self._create_flavor() self._add_tenant() def test_flavor_access_remove_tenant(self): self._create_flavor() self._add_tenant() subs = { 'tenant_id': 'fake_tenant', } response = self._do_post('flavors/10/action', "flavor-access-remove-tenant-req", subs) exp_subs = { "tenant_id": self.api.project_id, "flavor_id": "10" } self._verify_response('flavor-access-remove-tenant-resp', exp_subs, response, 200) class FlavorAccessSampleXmlTests(FlavorAccessSampleJsonTests): ctype = 'xml' class HypervisorsSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.hypervisors." "Hypervisors") def test_hypervisors_list(self): response = self._do_get('os-hypervisors') self._verify_response('hypervisors-list-resp', {}, response, 200) def test_hypervisors_search(self): response = self._do_get('os-hypervisors/fake/search') self._verify_response('hypervisors-search-resp', {}, response, 200) def test_hypervisors_servers(self): response = self._do_get('os-hypervisors/fake/servers') self._verify_response('hypervisors-servers-resp', {}, response, 200) def test_hypervisors_show(self): hypervisor_id = 1 subs = { 'hypervisor_id': hypervisor_id } response = self._do_get('os-hypervisors/%s' % hypervisor_id) subs.update(self._get_regexes()) self._verify_response('hypervisors-show-resp', subs, response, 200) def test_hypervisors_statistics(self): response = self._do_get('os-hypervisors/statistics') self._verify_response('hypervisors-statistics-resp', {}, response, 200) def test_hypervisors_uptime(self): def fake_get_host_uptime(self, context, hyp): return (" 08:32:11 up 93 days, 18:25, 12 users, load average:" " 0.20, 0.12, 0.14") self.stubs.Set(compute_api.HostAPI, 'get_host_uptime', fake_get_host_uptime) hypervisor_id = 1 response = self._do_get('os-hypervisors/%s/uptime' % hypervisor_id) subs = { 'hypervisor_id': hypervisor_id, } self._verify_response('hypervisors-uptime-resp', subs, response, 200) class HypervisorsSampleXmlTests(HypervisorsSampleJsonTests): ctype = "xml" class ExtendedHypervisorsJsonTest(ApiSampleTestBaseV2): extends_name = ("nova.api.openstack.compute.contrib." "hypervisors.Hypervisors") extension_name = ("nova.api.openstack.compute.contrib." "extended_hypervisors.Extended_hypervisors") def test_hypervisors_show_with_ip(self): hypervisor_id = 1 subs = { 'hypervisor_id': hypervisor_id } response = self._do_get('os-hypervisors/%s' % hypervisor_id) subs.update(self._get_regexes()) self._verify_response('hypervisors-show-with-ip-resp', subs, response, 200) class ExtendedHypervisorsXmlTest(ExtendedHypervisorsJsonTest): ctype = 'xml' class HypervisorsCellsSampleJsonTests(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.hypervisors." "Hypervisors") def setUp(self): self.flags(enable=True, cell_type='api', group='cells') super(HypervisorsCellsSampleJsonTests, self).setUp() def test_hypervisor_uptime(self): fake_hypervisor = {'service': {'host': 'fake-mini'}, 'id': 1, 'hypervisor_hostname': 'fake-mini'} def fake_get_host_uptime(self, context, hyp): return (" 08:32:11 up 93 days, 18:25, 12 users, load average:" " 0.20, 0.12, 0.14") def fake_compute_node_get(self, context, hyp): return fake_hypervisor self.stubs.Set(cells_api.HostAPI, 'compute_node_get', fake_compute_node_get) self.stubs.Set(cells_api.HostAPI, 'get_host_uptime', fake_get_host_uptime) hypervisor_id = fake_hypervisor['id'] response = self._do_get('os-hypervisors/%s/uptime' % hypervisor_id) subs = {'hypervisor_id': hypervisor_id} self._verify_response('hypervisors-uptime-resp', subs, response, 200) class HypervisorsCellsSampleXmlTests(HypervisorsCellsSampleJsonTests): ctype = "xml" class AttachInterfacesSampleJsonTest(ServersSampleBase): extension_name = ('nova.api.openstack.compute.contrib.attach_interfaces.' 'Attach_interfaces') def setUp(self): super(AttachInterfacesSampleJsonTest, self).setUp() def fake_list_ports(self, *args, **kwargs): uuid = kwargs.get('device_id', None) if not uuid: raise exception.InstanceNotFound(instance_id=None) port_data = { "id": "ce531f90-199f-48c0-816c-13e38010b442", "network_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "admin_state_up": True, "status": "ACTIVE", "mac_address": "fa:16:3e:4c:2c:30", "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "device_id": uuid, } ports = {'ports': [port_data]} return ports def fake_show_port(self, context, port_id=None): if not port_id: raise exception.PortNotFound(port_id=None) port_data = { "id": port_id, "network_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "admin_state_up": True, "status": "ACTIVE", "mac_address": "fa:16:3e:4c:2c:30", "fixed_ips": [ { "ip_address": "192.168.1.3", "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "device_id": 'bece68a3-2f8b-4e66-9092-244493d6aba7', } port = {'port': port_data} return port def fake_attach_interface(self, context, instance, network_id, port_id, requested_ip='192.168.1.3'): if not network_id: network_id = "fake_net_uuid" if not port_id: port_id = "fake_port_uuid" vif = fake_network_cache_model.new_vif() vif['id'] = port_id vif['network']['id'] = network_id vif['network']['subnets'][0]['ips'][0] = requested_ip return vif def fake_detach_interface(self, context, instance, port_id): pass self.stubs.Set(network_api.API, 'list_ports', fake_list_ports) self.stubs.Set(network_api.API, 'show_port', fake_show_port) self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) self.flags(neutron_auth_strategy=None) self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) def generalize_subs(self, subs, vanilla_regexes): subs['subnet_id'] = vanilla_regexes['uuid'] subs['net_id'] = vanilla_regexes['uuid'] subs['port_id'] = vanilla_regexes['uuid'] subs['mac_addr'] = '(?:[a-f0-9]{2}:){5}[a-f0-9]{2}' subs['ip_address'] = vanilla_regexes['ip'] return subs def test_list_interfaces(self): instance_uuid = self._post_server() response = self._do_get('servers/%s/os-interface' % instance_uuid) subs = { 'ip_address': '192.168.1.3', 'subnet_id': 'f8a6e8f8-c2ec-497c-9f23-da9616de54ef', 'mac_addr': 'fa:16:3e:4c:2c:30', 'net_id': '3cb9bc59-5699-4588-a4b1-b87f96708bc6', 'port_id': 'ce531f90-199f-48c0-816c-13e38010b442', 'port_state': 'ACTIVE' } self._verify_response('attach-interfaces-list-resp', subs, response, 200) def _stub_show_for_instance(self, instance_uuid, port_id): show_port = network_api.API().show_port(None, port_id) show_port['port']['device_id'] = instance_uuid self.stubs.Set(network_api.API, 'show_port', lambda *a, **k: show_port) def test_show_interfaces(self): instance_uuid = self._post_server() port_id = 'ce531f90-199f-48c0-816c-13e38010b442' self._stub_show_for_instance(instance_uuid, port_id) response = self._do_get('servers/%s/os-interface/%s' % (instance_uuid, port_id)) subs = { 'ip_address': '192.168.1.3', 'subnet_id': 'f8a6e8f8-c2ec-497c-9f23-da9616de54ef', 'mac_addr': 'fa:16:3e:4c:2c:30', 'net_id': '3cb9bc59-5699-4588-a4b1-b87f96708bc6', 'port_id': port_id, 'port_state': 'ACTIVE' } self._verify_response('attach-interfaces-show-resp', subs, response, 200) def test_create_interfaces(self, instance_uuid=None): if instance_uuid is None: instance_uuid = self._post_server() subs = { 'net_id': '3cb9bc59-5699-4588-a4b1-b87f96708bc6', 'port_id': 'ce531f90-199f-48c0-816c-13e38010b442', 'subnet_id': 'f8a6e8f8-c2ec-497c-9f23-da9616de54ef', 'ip_address': '192.168.1.3', 'port_state': 'ACTIVE', 'mac_addr': 'fa:16:3e:4c:2c:30', } self._stub_show_for_instance(instance_uuid, subs['port_id']) response = self._do_post('servers/%s/os-interface' % instance_uuid, 'attach-interfaces-create-req', subs) subs.update(self._get_regexes()) self._verify_response('attach-interfaces-create-resp', subs, response, 200) def test_delete_interfaces(self): instance_uuid = self._post_server() port_id = 'ce531f90-199f-48c0-816c-13e38010b442' response = self._do_delete('servers/%s/os-interface/%s' % (instance_uuid, port_id)) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class AttachInterfacesSampleXmlTest(AttachInterfacesSampleJsonTest): ctype = 'xml' class SnapshotsSampleJsonTests(ApiSampleTestBaseV2): extension_name = "nova.api.openstack.compute.contrib.volumes.Volumes" create_subs = { 'snapshot_name': 'snap-001', 'description': 'Daily backup', 'volume_id': '521752a6-acf6-4b2d-bc7a-119f9148cd8c' } def setUp(self): super(SnapshotsSampleJsonTests, self).setUp() self.stubs.Set(cinder.API, "get_all_snapshots", fakes.stub_snapshot_get_all) self.stubs.Set(cinder.API, "get_snapshot", fakes.stub_snapshot_get) def _create_snapshot(self): self.stubs.Set(cinder.API, "create_snapshot", fakes.stub_snapshot_create) response = self._do_post("os-snapshots", "snapshot-create-req", self.create_subs) return response def test_snapshots_create(self): response = self._create_snapshot() self.create_subs.update(self._get_regexes()) self._verify_response("snapshot-create-resp", self.create_subs, response, 200) def test_snapshots_delete(self): self.stubs.Set(cinder.API, "delete_snapshot", fakes.stub_snapshot_delete) self._create_snapshot() response = self._do_delete('os-snapshots/100') self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') def test_snapshots_detail(self): response = self._do_get('os-snapshots/detail') subs = self._get_regexes() self._verify_response('snapshots-detail-resp', subs, response, 200) def test_snapshots_list(self): response = self._do_get('os-snapshots') subs = self._get_regexes() self._verify_response('snapshots-list-resp', subs, response, 200) def test_snapshots_show(self): response = self._do_get('os-snapshots/100') subs = { 'snapshot_name': 'Default name', 'description': 'Default description' } subs.update(self._get_regexes()) self._verify_response('snapshots-show-resp', subs, response, 200) class SnapshotsSampleXmlTests(SnapshotsSampleJsonTests): ctype = "xml" class AssistedVolumeSnapshotsJsonTest(ApiSampleTestBaseV2): """Assisted volume snapshots.""" extension_name = ("nova.api.openstack.compute.contrib." "assisted_volume_snapshots.Assisted_volume_snapshots") def _create_assisted_snapshot(self, subs): self.stubs.Set(compute_api.API, 'volume_snapshot_create', fakes.stub_compute_volume_snapshot_create) response = self._do_post("os-assisted-volume-snapshots", "snapshot-create-assisted-req", subs) return response def test_snapshots_create_assisted(self): subs = { 'snapshot_name': 'snap-001', 'description': 'Daily backup', 'volume_id': '521752a6-acf6-4b2d-bc7a-119f9148cd8c', 'snapshot_id': '421752a6-acf6-4b2d-bc7a-119f9148cd8c', 'type': 'qcow', 'new_file': 'new_file_name' } subs.update(self._get_regexes()) response = self._create_assisted_snapshot(subs) self._verify_response("snapshot-create-assisted-resp", subs, response, 200) def test_snapshots_delete_assisted(self): self.stubs.Set(compute_api.API, 'volume_snapshot_delete', fakes.stub_compute_volume_snapshot_delete) snapshot_id = '100' response = self._do_delete( 'os-assisted-volume-snapshots/%s?delete_info=' '{"volume_id":"521752a6-acf6-4b2d-bc7a-119f9148cd8c"}' % snapshot_id) self.assertEqual(response.status, 204) self.assertEqual(response.read(), '') class AssistedVolumeSnapshotsXmlTest(AssistedVolumeSnapshotsJsonTest): ctype = "xml" class VolumeAttachmentsSampleBase(ServersSampleBase): def _stub_db_bdms_get_all_by_instance(self, server_id): def fake_bdms_get_all_by_instance(context, instance_uuid, use_slave=False): bdms = [ fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'volume_id': 'a26887c6-c47b-4654-abb5-dfadf7d3f803', 'instance_uuid': server_id, 'source_type': 'volume', 'destination_type': 'volume', 'device_name': '/dev/sdd'}), fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'volume_id': 'a26887c6-c47b-4654-abb5-dfadf7d3f804', 'instance_uuid': server_id, 'source_type': 'volume', 'destination_type': 'volume', 'device_name': '/dev/sdc'}) ] return bdms self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_bdms_get_all_by_instance) def _stub_compute_api_get(self): def fake_compute_api_get(self, context, instance_id, want_objects=False): if want_objects: return fake_instance.fake_instance_obj( context, **{'uuid': instance_id}) else: return {'uuid': instance_id} self.stubs.Set(compute_api.API, 'get', fake_compute_api_get) class VolumeAttachmentsSampleJsonTest(VolumeAttachmentsSampleBase): extension_name = ("nova.api.openstack.compute.contrib.volumes.Volumes") def test_attach_volume_to_server(self): device_name = '/dev/vdd' self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) self.stubs.Set(cinder.API, 'check_attach', lambda *a, **k: None) self.stubs.Set(cinder.API, 'reserve_volume', lambda *a, **k: None) self.stubs.Set(compute_manager.ComputeManager, "reserve_block_device_name", lambda *a, **k: device_name) self.stubs.Set(compute_manager.ComputeManager, 'attach_volume', lambda *a, **k: None) self.stubs.Set(block_device_obj.BlockDeviceMapping, 'get_by_volume_id', classmethod(lambda *a, **k: None)) volume = fakes.stub_volume_get(None, context.get_admin_context(), 'a26887c6-c47b-4654-abb5-dfadf7d3f803') subs = { 'volume_id': volume['id'], 'device': device_name } server_id = self._post_server() response = self._do_post('servers/%s/os-volume_attachments' % server_id, 'attach-volume-to-server-req', subs) subs.update(self._get_regexes()) self._verify_response('attach-volume-to-server-resp', subs, response, 200) def test_list_volume_attachments(self): server_id = self._post_server() self._stub_db_bdms_get_all_by_instance(server_id) response = self._do_get('servers/%s/os-volume_attachments' % server_id) subs = self._get_regexes() self._verify_response('list-volume-attachments-resp', subs, response, 200) def test_volume_attachment_detail(self): server_id = self._post_server() attach_id = "a26887c6-c47b-4654-abb5-dfadf7d3f803" self._stub_db_bdms_get_all_by_instance(server_id) self._stub_compute_api_get() response = self._do_get('servers/%s/os-volume_attachments/%s' % (server_id, attach_id)) subs = self._get_regexes() self._verify_response('volume-attachment-detail-resp', subs, response, 200) def test_volume_attachment_delete(self): server_id = self._post_server() attach_id = "a26887c6-c47b-4654-abb5-dfadf7d3f803" self._stub_db_bdms_get_all_by_instance(server_id) self._stub_compute_api_get() self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) self.stubs.Set(compute_api.API, 'detach_volume', lambda *a, **k: None) response = self._do_delete('servers/%s/os-volume_attachments/%s' % (server_id, attach_id)) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class VolumeAttachmentsSampleXmlTest(VolumeAttachmentsSampleJsonTest): ctype = 'xml' class VolumeAttachUpdateSampleJsonTest(VolumeAttachmentsSampleBase): extends_name = ("nova.api.openstack.compute.contrib.volumes.Volumes") extension_name = ("nova.api.openstack.compute.contrib." "volume_attachment_update.Volume_attachment_update") def test_volume_attachment_update(self): self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) subs = { 'volume_id': 'a26887c6-c47b-4654-abb5-dfadf7d3f805', 'device': '/dev/sdd' } server_id = self._post_server() attach_id = 'a26887c6-c47b-4654-abb5-dfadf7d3f803' self._stub_db_bdms_get_all_by_instance(server_id) self._stub_compute_api_get() self.stubs.Set(cinder.API, 'get', fakes.stub_volume_get) self.stubs.Set(compute_api.API, 'swap_volume', lambda *a, **k: None) response = self._do_put('servers/%s/os-volume_attachments/%s' % (server_id, attach_id), 'update-volume-req', subs) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class VolumeAttachUpdateSampleXmlTest(VolumeAttachUpdateSampleJsonTest): ctype = 'xml' class VolumesSampleJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.volumes.Volumes") def _get_volume_id(self): return 'a26887c6-c47b-4654-abb5-dfadf7d3f803' def _stub_volume(self, id, displayname="Volume Name", displaydesc="Volume Description", size=100): volume = { 'id': id, 'size': size, 'availability_zone': 'zone1:host1', 'instance_uuid': '3912f2b4-c5ba-4aec-9165-872876fe202e', 'mountpoint': '/', 'status': 'in-use', 'attach_status': 'attached', 'name': 'vol name', 'display_name': displayname, 'display_description': displaydesc, 'created_at': "2008-12-01T11:01:55", 'snapshot_id': None, 'volume_type_id': 'fakevoltype', 'volume_metadata': [], 'volume_type': {'name': 'Backup'} } return volume def _stub_volume_get(self, context, volume_id): return self._stub_volume(volume_id) def _stub_volume_delete(self, context, *args, **param): pass def _stub_volume_get_all(self, context, search_opts=None): id = self._get_volume_id() return [self._stub_volume(id)] def _stub_volume_create(self, context, size, name, description, snapshot, **param): id = self._get_volume_id() return self._stub_volume(id) def setUp(self): super(VolumesSampleJsonTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(cinder.API, "delete", self._stub_volume_delete) self.stubs.Set(cinder.API, "get", self._stub_volume_get) self.stubs.Set(cinder.API, "get_all", self._stub_volume_get_all) def _post_volume(self): subs_req = { 'volume_name': "Volume Name", 'volume_desc': "Volume Description", } self.stubs.Set(cinder.API, "create", self._stub_volume_create) response = self._do_post('os-volumes', 'os-volumes-post-req', subs_req) subs = self._get_regexes() subs.update(subs_req) self._verify_response('os-volumes-post-resp', subs, response, 200) def test_volumes_show(self): subs = { 'volume_name': "Volume Name", 'volume_desc': "Volume Description", } vol_id = self._get_volume_id() response = self._do_get('os-volumes/%s' % vol_id) subs.update(self._get_regexes()) self._verify_response('os-volumes-get-resp', subs, response, 200) def test_volumes_index(self): subs = { 'volume_name': "Volume Name", 'volume_desc': "Volume Description", } response = self._do_get('os-volumes') subs.update(self._get_regexes()) self._verify_response('os-volumes-index-resp', subs, response, 200) def test_volumes_detail(self): # For now, index and detail are the same. # See the volumes api subs = { 'volume_name': "Volume Name", 'volume_desc': "Volume Description", } response = self._do_get('os-volumes/detail') subs.update(self._get_regexes()) self._verify_response('os-volumes-detail-resp', subs, response, 200) def test_volumes_create(self): self._post_volume() def test_volumes_delete(self): self._post_volume() vol_id = self._get_volume_id() response = self._do_delete('os-volumes/%s' % vol_id) self.assertEqual(response.status, 202) self.assertEqual(response.read(), '') class VolumesSampleXmlTest(VolumesSampleJsonTest): ctype = 'xml' class MigrationsSamplesJsonTest(ApiSampleTestBaseV2): extension_name = ("nova.api.openstack.compute.contrib.migrations." "Migrations") def _stub_migrations(self, context, filters): fake_migrations = [ { 'id': 1234, 'source_node': 'node1', 'dest_node': 'node2', 'source_compute': 'compute1', 'dest_compute': 'compute2', 'dest_host': '1.2.3.4', 'status': 'Done', 'instance_uuid': 'instance_id_123', 'old_instance_type_id': 1, 'new_instance_type_id': 2, 'created_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'deleted_at': None, 'deleted': False }, { 'id': 5678, 'source_node': 'node10', 'dest_node': 'node20', 'source_compute': 'compute10', 'dest_compute': 'compute20', 'dest_host': '5.6.7.8', 'status': 'Done', 'instance_uuid': 'instance_id_456', 'old_instance_type_id': 5, 'new_instance_type_id': 6, 'created_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'updated_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'deleted_at': None, 'deleted': False } ] return fake_migrations def setUp(self): super(MigrationsSamplesJsonTest, self).setUp() self.stubs.Set(compute_api.API, 'get_migrations', self._stub_migrations) def test_get_migrations(self): response = self._do_get('os-migrations') subs = self._get_regexes() self.assertEqual(response.status, 200) self._verify_response('migrations-get', subs, response, 200) class MigrationsSamplesXmlTest(MigrationsSamplesJsonTest): ctype = 'xml' class PreserveEphemeralOnRebuildJsonTest(ServersSampleBase): extension_name = ('nova.api.openstack.compute.contrib.' 'preserve_ephemeral_rebuild.' 'Preserve_ephemeral_rebuild') def _test_server_action(self, uuid, action, subs={}, resp_tpl=None, code=202): subs.update({'action': action}) response = self._do_post('servers/%s/action' % uuid, 'server-action-%s' % action.lower(), subs) if resp_tpl: subs.update(self._get_regexes()) self._verify_response(resp_tpl, subs, response, code) else: self.assertEqual(response.status, code) self.assertEqual(response.read(), "") def test_rebuild_server_preserve_ephemeral_false(self): uuid = self._post_server() image = self.api.get_images()[0]['id'] subs = {'host': self._get_host(), 'uuid': image, 'name': 'foobar', 'pass': 'seekr3t', 'ip': '1.2.3.4', 'ip6': 'fe80::100', 'hostid': '[a-f0-9]+', 'preserve_ephemeral': 'false'} self._test_server_action(uuid, 'rebuild', subs, 'server-action-rebuild-resp') def test_rebuild_server_preserve_ephemeral_true(self): image = self.api.get_images()[0]['id'] subs = {'host': self._get_host(), 'uuid': image, 'name': 'new-server-test', 'pass': 'seekr3t', 'ip': '1.2.3.4', 'ip6': 'fe80::100', 'hostid': '[a-f0-9]+', 'preserve_ephemeral': 'true'} def fake_rebuild(self_, context, instance, image_href, admin_password, **kwargs): self.assertTrue(kwargs['preserve_ephemeral']) self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild) instance_uuid = self._post_server() response = self._do_post('servers/%s/action' % instance_uuid, 'server-action-rebuild', subs) self.assertEqual(response.status, 202) class PreserveEphemeralOnRebuildXmlTest(PreserveEphemeralOnRebuildJsonTest): ctype = 'xml' class ServerExternalEventsJsonTest(ServersSampleBase): extension_name = ('nova.api.openstack.compute.contrib.' 'server_external_events.Server_external_events') def test_create_event(self): instance_uuid = self._post_server() subs = { 'uuid': instance_uuid, 'name': 'network-changed', 'status': 'completed', 'tag': 'foo', } response = self._do_post('os-server-external-events', 'event-create-req', subs) subs.update(self._get_regexes()) self._verify_response('event-create-resp', subs, response, 200) class ServerExternalEventsXmlTest(ServerExternalEventsJsonTest): ctype = 'xml' class ServerGroupsSampleJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib" ".server_groups.Server_groups") def _get_create_subs(self): return {'name': 'test'} def _post_server_group(self): """Verify the response status and returns the UUID of the newly created server group. """ subs = self._get_create_subs() response = self._do_post('os-server-groups', 'server-groups-post-req', subs) subs = self._get_regexes() subs['name'] = 'test' return self._verify_response('server-groups-post-resp', subs, response, 200) def _create_server_group(self): subs = self._get_create_subs() return self._do_post('os-server-groups', 'server-groups-post-req', subs) def test_server_groups_post(self): return self._post_server_group() def test_server_groups_list(self): subs = self._get_create_subs() uuid = self._post_server_group() response = self._do_get('os-server-groups') subs.update(self._get_regexes()) subs['id'] = uuid self._verify_response('server-groups-list-resp', subs, response, 200) def test_server_groups_get(self): # Get api sample of server groups get request. subs = {'name': 'test'} uuid = self._post_server_group() subs['id'] = uuid response = self._do_get('os-server-groups/%s' % uuid) self._verify_response('server-groups-get-resp', subs, response, 200) def test_server_groups_delete(self): uuid = self._post_server_group() response = self._do_delete('os-server-groups/%s' % uuid) self.assertEqual(response.status, 204) class ServerGroupsSampleXmlTest(ServerGroupsSampleJsonTest): ctype = 'xml' nova-2014.1/nova/tests/integrated/test_extensions.py0000664000175400017540000000306112323721477023755 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg # Import extensions to pull in osapi_compute_extension CONF option used below. from nova.openstack.common import log as logging from nova.tests.integrated import integrated_helpers CONF = cfg.CONF LOG = logging.getLogger(__name__) class ExtensionsTest(integrated_helpers._IntegratedTestBase): _api_version = 'v2' def _get_flags(self): f = super(ExtensionsTest, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] f['osapi_compute_extension'].append( 'nova.tests.api.openstack.compute.extensions.' 'foxinsocks.Foxinsocks') return f def test_get_foxnsocks(self): # Simple check that fox-n-socks works. response = self.api.api_request('/foxnsocks') foxnsocks = response.read() LOG.debug("foxnsocks: %s" % foxnsocks) self.assertEqual('Try to say this Mr. Knox, sir...', foxnsocks) nova-2014.1/nova/tests/integrated/test_login.py0000664000175400017540000000235512323721477022673 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.tests.integrated.api import client from nova.tests.integrated import integrated_helpers LOG = logging.getLogger(__name__) class LoginTest(integrated_helpers._IntegratedTestBase): _api_version = 'v2' def test_login(self): # Simple check - we list flavors - so we know we're logged in. flavors = self.api.get_flavors() for flavor in flavors: LOG.debug(_("flavor: %s") % flavor) class LoginTestV3(client.TestOpenStackClientV3Mixin, LoginTest): _api_version = 'v3' nova-2014.1/nova/tests/integrated/api/0000775000175400017540000000000012323722546020714 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api/client.py0000664000175400017540000002767312323721477022565 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Justin Santa Barbara # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import httplib import urllib import six.moves.urllib.parse as urlparse from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.tests.image import fake LOG = logging.getLogger(__name__) class OpenStackApiException(Exception): def __init__(self, message=None, response=None): self.response = response if not message: message = 'Unspecified error' if response: _status = response.status _body = response.read() message = (_('%(message)s\nStatus Code: %(_status)s\n' 'Body: %(_body)s') % {'message': message, '_status': _status, '_body': _body}) super(OpenStackApiException, self).__init__(message) class OpenStackApiAuthenticationException(OpenStackApiException): def __init__(self, response=None, message=None): if not message: message = _("Authentication error") super(OpenStackApiAuthenticationException, self).__init__(message, response) class OpenStackApiAuthorizationException(OpenStackApiException): def __init__(self, response=None, message=None): if not message: message = _("Authorization error") super(OpenStackApiAuthorizationException, self).__init__(message, response) class OpenStackApiNotFoundException(OpenStackApiException): def __init__(self, response=None, message=None): if not message: message = _("Item not found") super(OpenStackApiNotFoundException, self).__init__(message, response) class TestOpenStackClient(object): """Simple OpenStack API Client. This is a really basic OpenStack API client that is under our control, so we can make changes / insert hooks for testing """ def __init__(self, auth_user, auth_key, auth_uri): super(TestOpenStackClient, self).__init__() self.auth_result = None self.auth_user = auth_user self.auth_key = auth_key self.auth_uri = auth_uri # default project_id self.project_id = 'openstack' def request(self, url, method='GET', body=None, headers=None): _headers = {'Content-Type': 'application/json'} _headers.update(headers or {}) parsed_url = urlparse.urlparse(url) port = parsed_url.port hostname = parsed_url.hostname scheme = parsed_url.scheme if scheme == 'http': conn = httplib.HTTPConnection(hostname, port=port) elif scheme == 'https': conn = httplib.HTTPSConnection(hostname, port=port) else: raise OpenStackApiException("Unknown scheme: %s" % url) relative_url = parsed_url.path if parsed_url.query: relative_url = relative_url + "?" + parsed_url.query LOG.info(_("Doing %(method)s on %(relative_url)s") % {'method': method, 'relative_url': relative_url}) if body: LOG.info(_("Body: %s") % body) conn.request(method, relative_url, body, _headers) response = conn.getresponse() return response def _authenticate(self): if self.auth_result: return self.auth_result auth_uri = self.auth_uri headers = {'X-Auth-User': self.auth_user, 'X-Auth-Key': self.auth_key, 'X-Auth-Project-Id': self.project_id} response = self.request(auth_uri, headers=headers) http_status = response.status LOG.debug(_("%(auth_uri)s => code %(http_status)s") % {'auth_uri': auth_uri, 'http_status': http_status}) if http_status == 401: raise OpenStackApiAuthenticationException(response=response) auth_headers = {} for k, v in response.getheaders(): auth_headers[k] = v self.auth_result = auth_headers return self.auth_result def api_request(self, relative_uri, check_response_status=None, strip_version=False, **kwargs): auth_result = self._authenticate() # NOTE(justinsb): httplib 'helpfully' converts headers to lower case base_uri = auth_result['x-server-management-url'] if strip_version: # NOTE(vish): cut out version number and tenant_id base_uri = '/'.join(base_uri.split('/', 3)[:-1]) full_uri = '%s/%s' % (base_uri, relative_uri) headers = kwargs.setdefault('headers', {}) headers['X-Auth-Token'] = auth_result['x-auth-token'] response = self.request(full_uri, **kwargs) http_status = response.status LOG.debug(_("%(relative_uri)s => code %(http_status)s") % {'relative_uri': relative_uri, 'http_status': http_status}) if check_response_status: if http_status not in check_response_status: if http_status == 404: raise OpenStackApiNotFoundException(response=response) elif http_status == 401: raise OpenStackApiAuthorizationException(response=response) else: raise OpenStackApiException( message=_("Unexpected status code"), response=response) return response def _decode_json(self, response): body = response.read() LOG.debug(_("Decoding JSON: %s") % (body)) if body: return jsonutils.loads(body) else: return "" def api_get(self, relative_uri, **kwargs): kwargs.setdefault('check_response_status', [200]) response = self.api_request(relative_uri, **kwargs) return self._decode_json(response) def api_post(self, relative_uri, body, **kwargs): kwargs['method'] = 'POST' if body: headers = kwargs.setdefault('headers', {}) headers['Content-Type'] = 'application/json' kwargs['body'] = jsonutils.dumps(body) kwargs.setdefault('check_response_status', [200, 202]) response = self.api_request(relative_uri, **kwargs) return self._decode_json(response) def api_put(self, relative_uri, body, **kwargs): kwargs['method'] = 'PUT' if body: headers = kwargs.setdefault('headers', {}) headers['Content-Type'] = 'application/json' kwargs['body'] = jsonutils.dumps(body) kwargs.setdefault('check_response_status', [200, 202, 204]) response = self.api_request(relative_uri, **kwargs) return self._decode_json(response) def api_delete(self, relative_uri, **kwargs): kwargs['method'] = 'DELETE' kwargs.setdefault('check_response_status', [200, 202, 204]) return self.api_request(relative_uri, **kwargs) def get_server(self, server_id): return self.api_get('/servers/%s' % server_id)['server'] def get_servers(self, detail=True, search_opts=None): rel_url = '/servers/detail' if detail else '/servers' if search_opts is not None: qparams = {} for opt, val in search_opts.iteritems(): qparams[opt] = val if qparams: query_string = "?%s" % urllib.urlencode(qparams) rel_url += query_string return self.api_get(rel_url)['servers'] def post_server(self, server): response = self.api_post('/servers', server) if 'reservation_id' in response: return response else: return response['server'] def put_server(self, server_id, server): return self.api_put('/servers/%s' % server_id, server) def post_server_action(self, server_id, data): return self.api_post('/servers/%s/action' % server_id, data) def delete_server(self, server_id): return self.api_delete('/servers/%s' % server_id) def get_image(self, image_id): return self.api_get('/images/%s' % image_id)['image'] def get_images(self, detail=True): rel_url = '/images/detail' if detail else '/images' return self.api_get(rel_url)['images'] def post_image(self, image): return self.api_post('/images', image)['image'] def delete_image(self, image_id): return self.api_delete('/images/%s' % image_id) def get_flavor(self, flavor_id): return self.api_get('/flavors/%s' % flavor_id)['flavor'] def get_flavors(self, detail=True): rel_url = '/flavors/detail' if detail else '/flavors' return self.api_get(rel_url)['flavors'] def post_flavor(self, flavor): return self.api_post('/flavors', flavor)['flavor'] def delete_flavor(self, flavor_id): return self.api_delete('/flavors/%s' % flavor_id) def get_volume(self, volume_id): return self.api_get('/volumes/%s' % volume_id)['volume'] def get_volumes(self, detail=True): rel_url = '/volumes/detail' if detail else '/volumes' return self.api_get(rel_url)['volumes'] def post_volume(self, volume): return self.api_post('/volumes', volume)['volume'] def delete_volume(self, volume_id): return self.api_delete('/volumes/%s' % volume_id) def get_server_volume(self, server_id, attachment_id): return self.api_get('/servers/%s/os-volume_attachments/%s' % (server_id, attachment_id))['volumeAttachment'] def get_server_volumes(self, server_id): return self.api_get('/servers/%s/os-volume_attachments' % (server_id))['volumeAttachments'] def post_server_volume(self, server_id, volume_attachment): return self.api_post('/servers/%s/os-volume_attachments' % (server_id), volume_attachment )['volumeAttachment'] def delete_server_volume(self, server_id, attachment_id): return self.api_delete('/servers/%s/os-volume_attachments/%s' % (server_id, attachment_id)) class TestOpenStackClientV3(TestOpenStackClient): """Simple OpenStack v3 API Client. This is a really basic OpenStack API client that is under our control, so we can make changes / insert hooks for testing. Note that the V3 API does not have an image API and so it is not possible to query the api for the image information. So instead we just access the fake image service used by the unittests directly. """ def get_image(self, image_id): return fake._fakeImageService.show(None, image_id) def get_images(self, detail=True): return fake._fakeImageService.detail(None) def post_image(self, image): raise NotImplementedError def delete_image(self, image_id): return fake._fakeImageService.delete(None, image_id) def post_server(self, server): response = self.api_post('/servers', server) if 'servers_reservation' in response: return response['servers_reservation'] else: return response['server'] class TestOpenStackClientV3Mixin(object): def _get_test_client(self): return TestOpenStackClientV3('fake', 'fake', self.auth_url) nova-2014.1/nova/tests/integrated/api/__init__.py0000664000175400017540000000133512323721477023031 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Justin Santa Barbara # # 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. """ :mod:`api` -- OpenStack API client, for testing rather than production ================================= """ nova-2014.1/nova/tests/integrated/integrated_helpers.py0000664000175400017540000001242612323721477024374 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Provides common functionality for integrated unit tests """ import random import string import uuid from oslo.config import cfg import nova.image.glance from nova.openstack.common import log as logging from nova import service from nova import test from nova.tests import cast_as_call from nova.tests import fake_crypto import nova.tests.image.fake from nova.tests.integrated.api import client CONF = cfg.CONF LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt('manager', 'nova.cells.opts', group='cells') def generate_random_alphanumeric(length): """Creates a random alphanumeric string of specified length.""" return ''.join(random.choice(string.ascii_uppercase + string.digits) for _x in range(length)) def generate_random_numeric(length): """Creates a random numeric string of specified length.""" return ''.join(random.choice(string.digits) for _x in range(length)) def generate_new_element(items, prefix, numeric=False): """Creates a random string with prefix, that is not in 'items' list.""" while True: if numeric: candidate = prefix + generate_random_numeric(8) else: candidate = prefix + generate_random_alphanumeric(8) if candidate not in items: return candidate LOG.debug("Random collision on %s" % candidate) class _IntegratedTestBase(test.TestCase): def setUp(self): super(_IntegratedTestBase, self).setUp() f = self._get_flags() self.flags(**f) self.flags(verbose=True) self.flags(periodic_enable=False) self.useFixture(test.ReplaceModule('crypto', fake_crypto)) nova.tests.image.fake.stub_out_image_service(self.stubs) self.flags(scheduler_driver='nova.scheduler.' 'chance.ChanceScheduler') self._setup_services() self._start_api_service() self.api = self._get_test_client() self.useFixture(cast_as_call.CastAsCall(self.stubs)) def _setup_services(self): self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute') self.cert = self.start_service('cert') self.consoleauth = self.start_service('consoleauth') self.network = self.start_service('network') self.scheduler = self.start_service('scheduler') self.cells = self.start_service('cells', manager=CONF.cells.manager) def tearDown(self): self.osapi.stop() nova.tests.image.fake.FakeImageService_reset() super(_IntegratedTestBase, self).tearDown() def _get_test_client(self): return client.TestOpenStackClient('fake', 'fake', self.auth_url) def _start_api_service(self): self.osapi = service.WSGIService("osapi_compute") self.osapi.start() self.auth_url = 'http://%(host)s:%(port)s/%(api_version)s' % ({ 'host': self.osapi.host, 'port': self.osapi.port, 'api_version': self._api_version}) def _get_flags(self): """An opportunity to setup flags, before the services are started.""" f = {} # Ensure tests only listen on localhost f['ec2_listen'] = '127.0.0.1' f['osapi_compute_listen'] = '127.0.0.1' f['metadata_listen'] = '127.0.0.1' # Auto-assign ports to allow concurrent tests f['ec2_listen_port'] = 0 f['osapi_compute_listen_port'] = 0 f['metadata_listen_port'] = 0 f['fake_network'] = True return f def get_unused_server_name(self): servers = self.api.get_servers() server_names = [server['name'] for server in servers] return generate_new_element(server_names, 'server') def get_invalid_image(self): return str(uuid.uuid4()) def _build_minimal_create_server_request(self): server = {} image = self.api.get_images()[0] LOG.debug("Image: %s" % image) if self._image_ref_parameter in image: image_href = image[self._image_ref_parameter] else: image_href = image['id'] image_href = 'http://fake.server/%s' % image_href # We now have a valid imageId server[self._image_ref_parameter] = image_href # Set a valid flavorId flavor = self.api.get_flavors()[0] LOG.debug("Using flavor: %s" % flavor) server[self._flavor_ref_parameter] = ('http://fake.server/%s' % flavor['id']) # Set a valid server name server_name = self.get_unused_server_name() server['name'] = server_name return server nova-2014.1/nova/tests/integrated/test_xml.py0000664000175400017540000000333212323721477022357 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree from nova.api.openstack import common from nova.api.openstack import xmlutil from nova.openstack.common import log as logging from nova.tests.integrated import integrated_helpers LOG = logging.getLogger(__name__) class XmlTests(integrated_helpers._IntegratedTestBase): """"Some basic XML sanity checks.""" _api_version = 'v2' def test_namespace_limits(self): headers = {} headers['Accept'] = 'application/xml' response = self.api.api_request('/limits', headers=headers) data = response.read() LOG.debug("data: %s" % data) root = etree.XML(data) self.assertEqual(root.nsmap.get(None), xmlutil.XMLNS_COMMON_V10) def test_namespace_servers(self): # /servers should have v1.1 namespace (has changed in 1.1). headers = {} headers['Accept'] = 'application/xml' response = self.api.api_request('/servers', headers=headers) data = response.read() LOG.debug("data: %s" % data) root = etree.XML(data) self.assertEqual(root.nsmap.get(None), common.XML_NS_V11) nova-2014.1/nova/tests/integrated/api_samples/0000775000175400017540000000000012323722546022440 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-consoles/0000775000175400017540000000000012323722546024704 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-consoles/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031466 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-resp.xml.tpl0000664000175400017540000000014412323721477033162 0ustar jenkinsjenkins00000000000000 novnc %(url)s nova-2014.1/nova/tests/integrated/api_samples/os-consoles/server-post-req.xml.tpl0000664000175400017540000000155012323721477031305 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-resp.json.tpl0000664000175400017540000000010012323721477033640 0ustar jenkinsjenkins00000000000000{ "console": { "type": "spice-html5", "url":"%(url)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-req.xml.tpl0000664000175400017540000000014312323721477032777 0ustar jenkinsjenkins00000000000000 novnc nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-req.xml.tpl0000664000175400017540000000014712323721477033002 0ustar jenkinsjenkins00000000000000 rdp-html5 nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-req.xml.tpl0000664000175400017540000000015512323721477033317 0ustar jenkinsjenkins00000000000000 spice-html5 nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-resp.xml.tpl0000664000175400017540000000015212323721477033160 0ustar jenkinsjenkins00000000000000 rdp-html5 %(url)s nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-resp.xml.tpl0000664000175400017540000000015212323721477033476 0ustar jenkinsjenkins00000000000000 spice-html5 %(url)s nova-2014.1/nova/tests/integrated/api_samples/os-consoles/server-post-req.json.tpl0000664000175400017540000000145312323721477031460 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-resp.json.tpl0000664000175400017540000000012012323721477033324 0ustar jenkinsjenkins00000000000000{ "console": { "type": "rdp-html5", "url":"%(url)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-rdp-console-post-req.json.tpl0000664000175400017540000000010012323721477033140 0ustar jenkinsjenkins00000000000000{ "os-getRDPConsole": { "type": "rdp-html5" } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/server-post-resp.json.tpl0000664000175400017540000000055612323721477031645 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-req.json.tpl0000664000175400017540000000007412323721477033153 0ustar jenkinsjenkins00000000000000{ "os-getVNCConsole": { "type": "novnc" } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-spice-console-post-req.json.tpl0000664000175400017540000000010412323721477033462 0ustar jenkinsjenkins00000000000000{ "os-getSPICEConsole": { "type": "spice-html5" } } nova-2014.1/nova/tests/integrated/api_samples/os-consoles/get-vnc-console-post-resp.json.tpl0000664000175400017540000000007212323721477033333 0ustar jenkinsjenkins00000000000000{ "console": { "type": "novnc", "url":"%(url)s" } } nova-2014.1/nova/tests/integrated/api_samples/server-post-resp.xml.tpl0000664000175400017540000000053212323721477027222 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/image-meta-key-put-resp.xml.tpl0000664000175400017540000000020312323721477030326 0ustar jenkinsjenkins00000000000000 Falsenova-2014.1/nova/tests/integrated/api_samples/image-metadata-post-resp.xml.tpl0000664000175400017540000000047212323721477030557 0ustar jenkinsjenkins00000000000000 False nokernel UpdatedImage x86_64 True nova-2014.1/nova/tests/integrated/api_samples/server-get-resp.xml.tpl0000664000175400017540000000155312323721477027020 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/0000775000175400017540000000000012323722546026666 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033450 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-req.xml.tpl0000664000175400017540000000155012323721477033267 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/vifs-list-resp.xml.tpl0000664000175400017540000000030212323721477033072 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-req.json.tpl0000664000175400017540000000145312323721477033442 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/vifs-list-resp.json.tpl0000664000175400017540000000017712323721477033255 0ustar jenkinsjenkins00000000000000{ "virtual_interfaces": [ { "id": "%(id)s", "mac_address": "%(mac_addr)s" } ] }nova-2014.1/nova/tests/integrated/api_samples/os-virtual-interfaces/server-post-resp.json.tpl0000664000175400017540000000055612323721477033627 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-fping/0000775000175400017540000000000012323722546024162 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-fping/server-post-resp.xml.tpl0000664000175400017540000000053212323721477030744 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-fping/server-post-req.xml.tpl0000664000175400017540000000155012323721477030563 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-fping/fping-get-resp.xml.tpl0000664000175400017540000000025112323721477030331 0ustar jenkinsjenkins00000000000000 openstack %(uuid)s False nova-2014.1/nova/tests/integrated/api_samples/os-fping/fping-get-resp.json.tpl0000664000175400017540000000021712323721477030504 0ustar jenkinsjenkins00000000000000{ "servers": [ { "alive": false, "id": "%(uuid)s", "project_id": "openstack" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-fping/server-post-req.json.tpl0000664000175400017540000000145312323721477030736 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-fping/fping-get-details-resp.json.tpl0000664000175400017540000000015612323721477032131 0ustar jenkinsjenkins00000000000000{ "server": { "alive": false, "id": "%(uuid)s", "project_id": "openstack" } } nova-2014.1/nova/tests/integrated/api_samples/os-fping/server-post-resp.json.tpl0000664000175400017540000000055612323721477031123 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-fping/fping-get-details-resp.xml.tpl0000664000175400017540000000021212323721477031751 0ustar jenkinsjenkins00000000000000 openstack %(uuid)s False nova-2014.1/nova/tests/integrated/api_samples/image-metadata-put-resp.json.tpl0000664000175400017540000000013212323721477030544 0ustar jenkinsjenkins00000000000000{ "metadata": { "Label": "Changed", "auto_disk_config": "True" } }nova-2014.1/nova/tests/integrated/api_samples/os-server-password/0000775000175400017540000000000012323722546026225 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-password/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033007 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-server-password/server-post-req.xml.tpl0000664000175400017540000000155012323721477032626 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-server-password/server-post-req.json.tpl0000664000175400017540000000145312323721477033001 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-password/server-post-resp.json.tpl0000664000175400017540000000055612323721477033166 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-password/get-password-resp.json.tpl0000664000175400017540000000005512323721477033306 0ustar jenkinsjenkins00000000000000{ "password": "%(encrypted_password)s" } nova-2014.1/nova/tests/integrated/api_samples/os-server-password/get-password-resp.xml.tpl0000664000175400017540000000012312323721477033131 0ustar jenkinsjenkins00000000000000 %(encrypted_password)s nova-2014.1/nova/tests/integrated/api_samples/server-action-reboot.xml.tpl0000664000175400017540000000017412323721477030035 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/servers-details-resp.xml.tpl0000664000175400017540000000164412323721477030052 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/server-metadata-resp.json.tpl0000664000175400017540000000006312323721477030165 0ustar jenkinsjenkins00000000000000{ "meta": { "foo": "%(value)s" } } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-post-req.json.tpl0000664000175400017540000000013212323721477030537 0ustar jenkinsjenkins00000000000000{ "metadata": { "kernel_id": "False", "Label": "UpdatedImage" } } nova-2014.1/nova/tests/integrated/api_samples/limit-get-resp.xml.tpl0000664000175400017540000000302612323721477026625 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/images-details-resp.json.tpl0000664000175400017540000001677012323721477030005 0ustar jenkinsjenkins00000000000000{ "images": [ { "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "%(host)s/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "%(host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "%(host)s/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "%(host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "%(host)s/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "%(host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "%(host)s/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "%(host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "%(host)s/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "%(host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "%(host)s/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "%(host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "%(host)s/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "%(host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-put-resp.xml.tpl0000664000175400017540000000027612323721477030404 0ustar jenkinsjenkins00000000000000 True Changed nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/0000775000175400017540000000000012323722546024654 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031436 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-evacuate-req.json.tpl0000664000175400017540000000021712323721477032235 0ustar jenkinsjenkins00000000000000{ "evacuate": { "host": "%(host)s", "adminPass": "%(adminPass)s", "onSharedStorage": "%(onSharedStorage)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-post-req.xml.tpl0000664000175400017540000000155012323721477031255 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-evacuate-req.xml.tpl0000664000175400017540000000027512323721477032070 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-post-req.json.tpl0000664000175400017540000000145312323721477031430 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-evacuate-resp.json.tpl0000664000175400017540000000004412323721477032415 0ustar jenkinsjenkins00000000000000{ "adminPass": "%(password)s" } nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-post-resp.json.tpl0000664000175400017540000000055612323721477031615 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-evacuate/server-evacuate-resp.xml.tpl0000664000175400017540000000004312323721477032243 0ustar jenkinsjenkins00000000000000%(password)snova-2014.1/nova/tests/integrated/api_samples/os-config-drive/0000775000175400017540000000000012323722546025433 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/server-post-resp.xml.tpl0000664000175400017540000000053212323721477032215 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/server-post-req.xml.tpl0000664000175400017540000000155012323721477032034 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/server-config-drive-get-resp.xml.tpl0000664000175400017540000000160512323721477034363 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/server-post-req.json.tpl0000664000175400017540000000145312323721477032207 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/servers-config-drive-details-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-config-drive/servers-config-drive-details-resp.json0000664000175400017540000000310612323721477034765 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "config_drive": "%(cdrive)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/server-post-resp.json.tpl0000664000175400017540000000055612323721477032374 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/server-config-drive-get-resp.json.tpl0000664000175400017540000000254512323721477034540 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "config_drive": "%(cdrive)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-config-drive/servers-config-drive-details-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-config-drive/servers-config-drive-details-resp.xml.0000664000175400017540000000167612323721477034704 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/server-metadata-all-resp.xml.tpl0000664000175400017540000000022712323721477030564 0ustar jenkinsjenkins00000000000000 %(value)s nova-2014.1/nova/tests/integrated/api_samples/OS-SCH-HNT/0000775000175400017540000000000012323722546024023 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-req.json.tpl0000664000175400017540000000033312323721477032366 0ustar jenkinsjenkins00000000000000{ "server": { "name": "new-server-test", "imageRef": "%(image_id)s", "flavorRef": "1" }, "os:scheduler_hints": { "hypervisor": "xen", "near": "%(image_near)s" } } nova-2014.1/nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.xml.tpl0000664000175400017540000000052612323721477032403 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-req.xml.tpl0000664000175400017540000000064012323721477032216 0ustar jenkinsjenkins00000000000000 xen %(image_near)s nova-2014.1/nova/tests/integrated/api_samples/OS-SCH-HNT/scheduler-hints-post-resp.json.tpl0000664000175400017540000000055612323721477032557 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/0000775000175400017540000000000012323722546025170 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031752 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.xml.tpl0000664000175400017540000000013212323721477032204 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.xml.tpl0000664000175400017540000000057612323721477034343 0ustar jenkinsjenkins00000000000000 name nova False %(timestamp)s None None 1 value nova nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.xml.tpl0000664000175400017540000000062512323721477034261 0ustar jenkinsjenkins00000000000000 name nova False %(timestamp)s None %(compute_host)s None 1 nova nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl0000664000175400017540000000053512323721477034507 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova", "key": "value" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/server-post-req.xml.tpl0000664000175400017540000000155012323721477031571 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.xml.tpl0000664000175400017540000000055112323721477032350 0ustar jenkinsjenkins00000000000000 name nova False %(timestamp)s None None 1 nova nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml.tpl0000664000175400017540000000055112323721477035024 0ustar jenkinsjenkins00000000000000 name nova False %(timestamp)s None None 1 nova nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl0000664000175400017540000000021312323721477034133 0ustar jenkinsjenkins00000000000000{ "set_metadata": { "metadata": { "key": "value" } } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl0000664000175400017540000000055112323721477034430 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "hosts": [ "%(compute_host)s" ], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.xml.tpl0000664000175400017540000000063612323721477033325 0ustar jenkinsjenkins00000000000000 name nova False %(timestamp)s None None 1 nova nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl0000664000175400017540000000052112323721477034021 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova2", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova2" }, "name": "newname", "updated_at": "%(timestamp)s" } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tp0000664000175400017540000000050112323721477035014 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.xml.tpl0000664000175400017540000000011412323721477034452 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/server-post-req.json.tpl0000664000175400017540000000145312323721477031744 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.json.tpl0000664000175400017540000000014112323721477033635 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "newname", "availability_zone": "nova2" } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.xml.tpl0000664000175400017540000000011112323721477033702 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/server-post-resp.json.tpl0000664000175400017540000000055612323721477032131 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.xml.tpl0000664000175400017540000000017612323721477033772 0ustar jenkinsjenkins00000000000000 value nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl0000664000175400017540000000060212323721477033467 0ustar jenkinsjenkins00000000000000{ "aggregates": [ { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } ] } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.xml.tpl0000664000175400017540000000056712323721477033662 0ustar jenkinsjenkins00000000000000 newname nova2 False %(timestamp)s %(timestamp)s None 1 nova2 nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.json.tpl0000664000175400017540000000036212323721477032544 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "id": %(aggregate_id)s, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.xml.tpl0000664000175400017540000000044212323721477032372 0ustar jenkinsjenkins00000000000000 name nova False %(timestamp)s None None %(aggregate_id)s nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl0000664000175400017540000000007712323721477034633 0ustar jenkinsjenkins00000000000000{ "remove_host": { "host": "%(host_name)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.json.tpl0000664000175400017540000000050112323721477032514 0ustar jenkinsjenkins00000000000000{ "aggregate": { "availability_zone": "nova", "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "hosts": [], "id": 1, "metadata": { "availability_zone": "nova" }, "name": "name", "updated_at": null } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.xml.tpl0000664000175400017540000000013612323721477033470 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl0000664000175400017540000000007412323721477034063 0ustar jenkinsjenkins00000000000000{ "add_host": { "host": "%(host_name)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.json.tpl0000664000175400017540000000013512323721477032360 0ustar jenkinsjenkins00000000000000{ "aggregate": { "name": "name", "availability_zone": "nova" } } nova-2014.1/nova/tests/integrated/api_samples/os-migrations/0000775000175400017540000000000012323722546025233 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-migrations/migrations-get.xml.tpl0000664000175400017540000000122312323721477031504 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-migrations/migrations-get.json.tpl0000664000175400017540000000201012323721477031650 0ustar jenkinsjenkins00000000000000{ "migrations": [ { "created_at": "2012-10-29T13:42:02.000000", "dest_compute": "compute2", "dest_host": "1.2.3.4", "dest_node": "node2", "id": 1234, "instance_uuid": "instance_id_123", "new_instance_type_id": 2, "old_instance_type_id": 1, "source_compute": "compute1", "source_node": "node1", "status": "Done", "updated_at": "2012-10-29T13:42:02.000000" }, { "created_at": "2013-10-22T13:42:02.000000", "dest_compute": "compute20", "dest_host": "5.6.7.8", "dest_node": "node20", "id": 5678, "instance_uuid": "instance_id_456", "new_instance_type_id": 6, "old_instance_type_id": 5, "source_compute": "compute10", "source_node": "node10", "status": "Done", "updated_at": "2013-10-22T13:42:02.000000" } ] }nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-pools/0000775000175400017540000000000012323722546026422 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-pools/floatingippools-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-pools/floatingippools-list-resp.json.tp0000664000175400017540000000021612323721477035071 0ustar jenkinsjenkins00000000000000{ "floating_ip_pools": [ { "name": "%(pool1)s" }, { "name": "%(pool2)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-pools/floatingippools-list-resp.xml.tpl0000664000175400017540000000016712323721477035101 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-post-req.xml.tpl0000664000175400017540000000155012323721477027041 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/NMN/0000775000175400017540000000000012323722546023070 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/NMN/server-post-resp.xml.tpl0000664000175400017540000000053212323721477027652 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/NMN/server-post-req.xml.tpl0000664000175400017540000000155012323721477027471 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/NMN/multinic-remove-fixed-ip-req.json.tpl0000664000175400017540000000010012323721477032161 0ustar jenkinsjenkins00000000000000{ "removeFixedIp":{ "address": "%(ip)s" } } nova-2014.1/nova/tests/integrated/api_samples/NMN/multinic-remove-fixed-ip-req.xml.tpl0000664000175400017540000000007712323721477032025 0ustar jenkinsjenkins00000000000000

%(ip)s
nova-2014.1/nova/tests/integrated/api_samples/NMN/server-post-req.json.tpl0000664000175400017540000000145312323721477027644 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/NMN/server-post-resp.json.tpl0000664000175400017540000000055612323721477030031 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/NMN/multinic-add-fixed-ip-req.json.tpl0000664000175400017540000000010412323721477031420 0ustar jenkinsjenkins00000000000000{ "addFixedIp":{ "networkId": %(networkId)s } } nova-2014.1/nova/tests/integrated/api_samples/NMN/multinic-add-fixed-ip-req.xml.tpl0000664000175400017540000000010412323721477031247 0ustar jenkinsjenkins00000000000000 %(networkId)s nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/0000775000175400017540000000000012323722546026052 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.jso0000664000175400017540000000030412323721477034640 0ustar jenkinsjenkins00000000000000{ "dns_entries": [ { "domain": "%(domain)s", "id": null, "ip": "%(ip)s", "name": "%(name)s", "type": null } ] } ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-re0000664000175400017540000000024012323721477034531 0ustar jenkinsjenkins00000000000000 %(domain)s %(scope)s %(project)s nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.json.tpl0000664000175400017540000000031012323721477034452 0ustar jenkinsjenkins00000000000000{ "domain_entries": [ { "availability_zone": null, "domain": "%(domain)s", "project": "%(project)s", "scope": "%(scope)s" } ] } ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-re0000664000175400017540000000021412323721477034532 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.xml.0000664000175400017540000000017212323721477034532 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-list-resp.xml.tpl0000664000175400017540000000026112323721477034306 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-en0000664000175400017540000000020212323721477034523 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-en0000664000175400017540000000024412323721477034531 0ustar jenkinsjenkins00000000000000{ "dns_entry": { "domain": "%(domain)s", "id": null, "ip": "%(ip)s", "name": "%(name)s", "type": "%(dns_type)s" } } ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-en0000664000175400017540000000016612323721477034534 0ustar jenkinsjenkins00000000000000 %(ip)s %(dns_type)s ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-list-resp.xml0000664000175400017540000000023112323721477034644 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-entry-get-resp.json0000664000175400017540000000023212323721477034622 0ustar jenkinsjenkins00000000000000{ "dns_entry": { "domain": "%(domain)s", "id": null, "ip": "%(ip)s", "name": "%(name)s", "type": null } } ././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-entry-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-en0000664000175400017540000000012712323721477034531 0ustar jenkinsjenkins00000000000000{ "dns_entry" : { "ip": "%(ip)s", "dns_type": "%(dns_type)s" } } ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-re0000664000175400017540000000017212323721477034535 0ustar jenkinsjenkins00000000000000{ "domain_entry" : { "domain": "%(domain)s", "scope": "%(scope)s", "project": "%(project)s" } } ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ip-dns/floating-ip-dns-create-or-update-re0000664000175400017540000000024212323721477034533 0ustar jenkinsjenkins00000000000000{ "domain_entry": { "availability_zone": null, "domain": "%(domain)s", "project": "%(project)s", "scope": "%(scope)s" } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/0000775000175400017540000000000012323722546024446 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031230 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-get-resp.xml.tpl0000664000175400017540000000175112323721477031026 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-req.xml.tpl0000664000175400017540000000155012323721477031047 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.xml.tpl0000664000175400017540000000232512323721477031672 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-req.json.tpl0000664000175400017540000000145312323721477031222 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-post-resp.json.tpl0000664000175400017540000000055612323721477031407 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/servers-detail-resp.json.tpl0000664000175400017540000000312412323721477032041 0ustar jenkinsjenkins00000000000000{ "servers": [ { "status": "ACTIVE", "updated": "%(timestamp)s", "user_id": "fake", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "%(mac_addr)s" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "created": "%(timestamp)s", "name": "new-server-test", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "id": "%(uuid)s", "accessIPv4": "", "accessIPv6": "", "tenant_id": "openstack", "progress": 0, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "metadata": { "My Server Name": "Apache1" } }] } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS-MAC/server-get-resp.json.tpl0000664000175400017540000000257612323721477031205 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "%(mac_addr)s" } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/0000775000175400017540000000000012323722546026121 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json.tpl0000664000175400017540000000070312323721477034420 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, "interfaces": [{ "id": %(interface_id)s, "address": "%(address)s", "datapath_id": null, "port_no": null }] } } ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-0000664000175400017540000000066612323721477034647 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json.tpl0000664000175400017540000000070612323721477034416 0ustar jenkinsjenkins00000000000000{ "nodes": [{ "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, "interfaces": [{ "id": %(interface_id)s, "address": "%(address)s", "datapath_id": null, "port_no": null }] }] } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.js0000664000175400017540000000010212323721477034602 0ustar jenkinsjenkins00000000000000{ "add_interface": { "address": "%(address)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml.tpl0000664000175400017540000000062212323721477034242 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req0000664000175400017540000000012612323721477034742 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.json.tpl0000664000175400017540000000037712323721477034530 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "terminal_port": 8000 } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-req.xm0000664000175400017540000000012312323721477034615 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-remove-interface-req0000664000175400017540000000010512323721477034737 0ustar jenkinsjenkins00000000000000{ "remove_interface": { "address": "%(address)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml.tpl0000664000175400017540000000060112323721477034244 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-0000664000175400017540000000070312323721477034637 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, "interfaces": [{ "id": %(interface_id)s, "address": "%(address)s", "datapath_id": null, "port_no": null }] } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.j0000664000175400017540000000023212323721477034605 0ustar jenkinsjenkins00000000000000{ "interface": { "id": %(interface_id)s, "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "port_no": null } } ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-0000664000175400017540000000045212323721477034640 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "prov_mac_address": "%(address)s", "terminal_port": 8000 } } nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json.tpl0000664000175400017540000000046112323721477034704 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, "interfaces": [] } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-add-interface-resp.x0000664000175400017540000000023112323721477034622 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-0000664000175400017540000000035112323721477034636 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml.tpl0000664000175400017540000000030612323721477034347 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml.tpl0000664000175400017540000000041412323721477034531 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/0000775000175400017540000000000012323722546030325 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-resp.xml.t0000664000175400017540000000053212323721477034553 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-req.xml.tp0000664000175400017540000000230512323721477034551 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-req.json.t0000664000175400017540000000254212323721477034545 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ], "block_device_mapping_v2": [ { "device_name": "/dev/sdb1", "source_type": "blank", "destination_type": "local", "delete_on_termination": "True", "guest_format": "swap", "boot_index": "-1" }, { "device_name": "/dev/sda1", "source_type": "volume", "destination_type": "volume", "uuid": "fake-volume-id-1", "boot_index": "0" } ] } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-block-device-mapping-v2-boot/server-post-resp.json.0000664000175400017540000000055612323721477034546 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-certificates/0000775000175400017540000000000012323722546025524 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-certificates/certificate-get-root-resp.json.tpl0000664000175400017540000000012712323721477034206 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "%(text)s", "private_key": null } } nova-2014.1/nova/tests/integrated/api_samples/os-certificates/certificate-get-root-resp.xml.tpl0000664000175400017540000000013112323721477034030 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-certificates/certificate-create-req.json.tpl0000664000175400017540000000000012323721477033515 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-certificates/certificate-create-resp.xml.tpl0000664000175400017540000000013512323721477033537 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-certificates/certificate-create-resp.json.tpl0000664000175400017540000000013512323721477033710 0ustar jenkinsjenkins00000000000000{ "certificate": { "data": "%(text)s", "private_key": "%(text)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-certificates/certificate-create-req.xml.tpl0000664000175400017540000000000012323721477033344 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/server-action-rebuild.json.tpl0000664000175400017540000000152212323721477030340 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "imageRef" : "%(host)s/v2/32278/images/%(uuid)s", "name" : "%(name)s", "adminPass" : "%(pass)s", "accessIPv4" : "%(ip)s", "accessIPv6" : "%(ip6)s", "metadata" : { "meta var" : "meta val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/images-list-resp.json.tpl0000664000175400017540000001201412323721477027316 0ustar jenkinsjenkins00000000000000{ "images": [ { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "%(host)s/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "%(host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage7" }, { "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "%(host)s/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "%(host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "%(host)s/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "%(host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "%(host)s/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "%(host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage6" }, { "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "%(host)s/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "%(host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "%(host)s/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "%(host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "%(host)s/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "%(host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" } ] } nova-2014.1/nova/tests/integrated/api_samples/server-action-rebuild.xml.tpl0000664000175400017540000000161612323721477030173 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/servers-details-resp.json.tpl0000664000175400017540000000303412323721477030216 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/api_samples/image-meta-key-get.xml.tpl0000664000175400017540000000017712323721477027340 0ustar jenkinsjenkins00000000000000 nokernelnova-2014.1/nova/tests/integrated/api_samples/os-cell-capacities/0000775000175400017540000000000012323722546026101 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-cell-capacities/cells-capacities-resp.xml.tpl0000664000175400017540000000132212323721477033575 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-cell-capacities/cells-capacities-resp.json.tpl0000664000175400017540000000072312323721477033752 0ustar jenkinsjenkins00000000000000{ "cell": { "capacities": { "ram_free": { "units_by_mb": { "8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0 }, "total_mb": 7680 }, "disk_free": { "units_by_mb": { "81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0 }, "total_mb": 1052672 } } } } nova-2014.1/nova/tests/integrated/api_samples/server-metadata-all-req.json.tpl0000664000175400017540000000006112323721477030547 0ustar jenkinsjenkins00000000000000{ "metadata" : { "foo" : "%(value)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/0000775000175400017540000000000012323722546026502 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-get-resp.xml.tp0000664000175400017540000000064312323721477035022 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-req.xml.tp0000664000175400017540000000166212323721477035050 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-resp.xml.t0000664000175400017540000000055212323721477035047 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-req.json.t0000664000175400017540000000154112323721477035035 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "availability_zone": "%(availability_zone)s", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-post-resp.json.0000664000175400017540000000055612323721477035040 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-details-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-details-resp.js0000664000175400017540000000244512323721477035064 0ustar jenkinsjenkins00000000000000{ "availabilityZoneInfo": [ { "zoneName": "zone-1", "zoneState": { "available": true }, "hosts": { "fake_host-1": { "nova-compute": { "active": true, "available": true, "updated_at": "2012-12-26T14:45:25.000000" } } } }, { "zoneName": "internal", "zoneState": { "available": true }, "hosts": { "fake_host-1": { "nova-sched": { "active": true, "available": true, "updated_at": "2012-12-26T14:45:25.000000" } }, "fake_host-2": { "nova-network": { "active": true, "available": false, "updated_at": "2012-12-26T14:45:24.000000" } } } }, { "zoneName": "zone-2", "zoneState": { "available": false }, "hosts": null } ] }././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-get-resp.json.t0000664000175400017540000000054112323721477035010 0ustar jenkinsjenkins00000000000000{ "availabilityZoneInfo": [ { "zoneName": "zone-1", "zoneState": { "available": true }, "hosts": null }, { "zoneName": "zone-2", "zoneState": { "available": false }, "hosts": null } ] }././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-details-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-availability-zone/availability-zone-details-resp.xm0000664000175400017540000000306412323721477035072 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/servers-list-resp.xml.tpl0000664000175400017540000000054312323721477027375 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-action-createimage.json.tpl0000664000175400017540000000021112323721477031152 0ustar jenkinsjenkins00000000000000{ "createImage" : { "name" : "%(name)s", "metadata": { "%(meta_var)s": "%(meta_val)s" } } } nova-2014.1/nova/tests/integrated/api_samples/images-details-get-resp.json.tpl0000664000175400017540000001677012323721477030562 0ustar jenkinsjenkins00000000000000{ "images": [ { "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "%(host)s/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "%(host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "%(host)s/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "%(host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "%(host)s/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "%(host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "%(host)s/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "%(host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "%(host)s/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "%(host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "%(host)s/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "%(host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "%(host)s/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "%(host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] } nova-2014.1/nova/tests/integrated/api_samples/server-metadata-req.json.tpl0000664000175400017540000000005512323721477030004 0ustar jenkinsjenkins00000000000000{ "meta" : { "foo" : "%(value)s" } } nova-2014.1/nova/tests/integrated/api_samples/versions-get-resp.json.tpl0000664000175400017540000000116412323721477027531 0ustar jenkinsjenkins00000000000000{ "versions": [ { "id": "v2.0", "links": [ { "href": "http://openstack.example.com/v2/", "rel": "self" } ], "status": "CURRENT", "updated": "2011-01-21T11:33:21Z" }, { "id": "v3.0", "links": [ { "href": "http://openstack.example.com/v3/", "rel": "self" } ], "status": "EXPERIMENTAL", "updated": "2013-07-23T11:33:21Z" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-used-limits/0000775000175400017540000000000012323722546025316 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-used-limits/usedlimits-get-resp.xml.tpl0000664000175400017540000000353212323721477032551 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-used-limits/usedlimits-get-resp.json.tpl0000664000175400017540000000543612323721477032727 0ustar jenkinsjenkins00000000000000{ "limits": { "absolute": { "maxImageMeta": 128, "maxPersonality": 5, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxSecurityGroups": 10, "maxServerMeta": 128, "maxTotalCores": 20, "maxTotalFloatingIps": 10, "maxTotalInstances": 10, "maxTotalKeypairs": 100, "maxTotalRAMSize": 51200, "totalCoresUsed": 0, "totalInstancesUsed": 0, "totalRAMUsed": 0, "totalSecurityGroupsUsed": 0, "totalFloatingIpsUsed": 0 }, "rate": [ { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" }, { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "PUT" }, { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "DELETE" } ], "regex": ".*", "uri": "*" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" } ], "regex": "^/servers", "uri": "*/servers" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "GET" } ], "regex": ".*changes-since.*", "uri": "*changes-since*" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 12, "unit": "MINUTE", "value": 12, "verb": "GET" } ], "regex": "^/os-fping", "uri": "*/os-fping" } ] } } nova-2014.1/nova/tests/integrated/api_samples/server-ips-resp.xml.tpl0000664000175400017540000000027512323721477027034 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-action-rebuild-resp.xml.tpl0000664000175400017540000000204412323721477031136 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-manage/0000775000175400017540000000000012323722546025576 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-req.xml.tpl0000664000175400017540000000026312323721477033423 0ustar jenkinsjenkins00000000000000 %(flavor_name)s 1024 2 10 %(flavor_id)s nova-2014.1/nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-resp.xml.tpl0000664000175400017540000000057212323721477033610 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-resp.json.tpl0000664000175400017540000000067212323721477033762 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2 } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-manage/flavor-create-post-req.json.tpl0000664000175400017540000000023012323721477033566 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s" } } nova-2014.1/nova/tests/integrated/api_samples/server-metadata-req.xml.tpl0000664000175400017540000000017412323721477027635 0ustar jenkinsjenkins00000000000000 %(value)s nova-2014.1/nova/tests/integrated/api_samples/server-metadata-all-req.xml.tpl0000664000175400017540000000022712323721477030402 0ustar jenkinsjenkins00000000000000 %(value)s nova-2014.1/nova/tests/integrated/api_samples/images-list-resp.xml.tpl0000664000175400017540000000620612323721477027153 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/0000775000175400017540000000000012323722546024702 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-log-put-req.json.tpl0000664000175400017540000000014512323721477033610 0ustar jenkinsjenkins00000000000000{ "host": "%(host)s", "binary": "%(binary)s", "disabled_reason": "%(disabled_reason)s" } nova-2014.1/nova/tests/integrated/api_samples/os-services/service-enable-put-req.json.tpl0000664000175400017540000000006712323721477032657 0ustar jenkinsjenkins00000000000000{ "host": "%(host)s", "binary": "%(binary)s" } nova-2014.1/nova/tests/integrated/api_samples/os-services/service-enable-put-resp.json.tpl0000664000175400017540000000016112323721477033034 0ustar jenkinsjenkins00000000000000{ "service": { "host": "%(host)s", "binary": "%(binary)s", "status": "enabled" } } nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-put-req.json.tpl0000664000175400017540000000006712323721477033034 0ustar jenkinsjenkins00000000000000{ "host": "%(host)s", "binary": "%(binary)s" } nova-2014.1/nova/tests/integrated/api_samples/os-services/service-enable-put-req.xml.tpl0000664000175400017540000000012712323721477032503 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-put-req.xml.tpl0000664000175400017540000000012712323721477032660 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/services-list-get-resp.json.tpl0000664000175400017540000000162612323721477032722 0ustar jenkinsjenkins00000000000000{ "services": [ { "binary": "nova-scheduler", "host": "host1", "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "binary": "nova-compute", "host": "host1", "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" }, { "binary": "nova-scheduler", "host": "host2", "state": "down", "status": "enabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "binary": "nova-compute", "host": "host2", "state": "down", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-services/services-list-get-resp.xml.tpl0000664000175400017540000000077712323721477032557 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/service-enable-put-resp.xml.tpl0000664000175400017540000000015012323721477032661 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/services-get-resp.xml.tpl0000664000175400017540000000117012323721477031572 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-log-put-resp.json.tpl0000664000175400017540000000024612323721477033774 0ustar jenkinsjenkins00000000000000{ "service": { "binary": "%(binary)s", "host": "%(host)s", "disabled_reason": "%(disabled_reason)s", "status": "disabled" } } nova-2014.1/nova/tests/integrated/api_samples/os-services/services-get-resp.json.tpl0000664000175400017540000000206112323721477031743 0ustar jenkinsjenkins00000000000000{ "services": [ { "binary": "nova-scheduler", "host": "host1", "disabled_reason": "test1", "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "binary": "nova-compute", "host": "host1", "disabled_reason": "test2", "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" }, { "binary": "nova-scheduler", "host": "host2", "disabled_reason": "", "state": "down", "status": "enabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "binary": "nova-compute", "host": "host2", "disabled_reason": "test4", "state": "down", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-put-resp.xml.tpl0000664000175400017540000000015112323721477033037 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-log-put-resp.xml.tpl0000664000175400017540000000021612323721477033620 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-log-put-req.xml.tpl0000664000175400017540000000017412323721477033441 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-services/service-disable-put-resp.json.tpl0000664000175400017540000000016112323721477033211 0ustar jenkinsjenkins00000000000000{ "service": { "host": "%(host)s", "binary": "%(binary)s", "status": "disabled" } } nova-2014.1/nova/tests/integrated/api_samples/server-metadata-all-resp.json.tpl0000664000175400017540000000006112323721477030731 0ustar jenkinsjenkins00000000000000{ "metadata" : { "foo" : "%(value)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe-update/0000775000175400017540000000000012323722546026323 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe-update/cloud-pipe-update-req.json.tpl0000664000175400017540000000015012323721477034120 0ustar jenkinsjenkins00000000000000{ "configure_project": { "vpn_ip": "%(vpn_ip)s", "vpn_port": "%(vpn_port)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe-update/cloud-pipe-update-req.xml.tpl0000664000175400017540000000022212323721477033747 0ustar jenkinsjenkins00000000000000 %(vpn_ip)s %(vpn_port)s nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/0000775000175400017540000000000012323722546026604 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.js0000664000175400017540000000013212323721477034713 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "%(value1)s", "key2": "%(value2)s" } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-req.xm0000664000175400017540000000017512323721477034732 0ustar jenkinsjenkins00000000000000 %(value1)s %(value2)s ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.js0000664000175400017540000000003512323721477034734 0ustar jenkinsjenkins00000000000000{ "key1": "%(value1)s" } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.xml0000664000175400017540000000017012323721477034773 0ustar jenkinsjenkins00000000000000 %(value2)s %(value1)s ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.j0000664000175400017540000000003512323721477034733 0ustar jenkinsjenkins00000000000000{ "key1": "%(value1)s" } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.x0000664000175400017540000000017012323721477034732 0ustar jenkinsjenkins00000000000000 %(value2)s %(value1)s ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-list-resp.jso0000664000175400017540000000013212323721477034764 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "%(value1)s", "key2": "%(value2)s" } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-resp.x0000664000175400017540000000012612323721477034752 0ustar jenkinsjenkins00000000000000 %(value1)s ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.xml.0000664000175400017540000000012612323721477034656 0ustar jenkinsjenkins00000000000000 %(value1)s ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-create-resp.j0000664000175400017540000000013212323721477034712 0ustar jenkinsjenkins00000000000000{ "extra_specs": { "key1": "%(value1)s", "key2": "%(value2)s" } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-get-resp.json0000664000175400017540000000003512323721477034750 0ustar jenkinsjenkins00000000000000{ "key1": "%(value1)s" } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-extra-specs/flavor-extra-specs-update-req.xm0000664000175400017540000000010312323721477034740 0ustar jenkinsjenkins00000000000000 %(value1)s nova-2014.1/nova/tests/integrated/api_samples/image-metadata-get-resp.xml.tpl0000664000175400017540000000042512323721477030347 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/0000775000175400017540000000000012323722546026222 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/networks-post-req.json.tpl0000664000175400017540000000024612323721477033343 0ustar jenkinsjenkins00000000000000{ "network": { "label": "public", "cidr": "172.0.0.0/24", "vlan_start": 1, "num_networks": 1, "network_size": 255 } } nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/networks-list-res.xml.tpl0000664000175400017540000000040612323721477033160 0ustar jenkinsjenkins00000000000000 10.0.0.0/29 %(id)s 10.0.0.8/29 %(id)s nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/networks-post-res.xml.tpl0000664000175400017540000000013312323721477033167 0ustar jenkinsjenkins00000000000000 172.0.0.0/24 %(id)s nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/networks-list-res.json.tpl0000664000175400017540000000037712323721477033340 0ustar jenkinsjenkins00000000000000{ "networks": [ { "cidr": "10.0.0.0/29", "id": "%(id)s", "label": "test_0" }, { "cidr": "10.0.0.8/29", "id": "%(id)s", "label": "test_1" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/networks-post-req.xml.tpl0000664000175400017540000000025212323721477033167 0ustar jenkinsjenkins00000000000000 172.0.0.0/24 1 1 255 nova-2014.1/nova/tests/integrated/api_samples/os-tenant-networks/networks-post-res.json.tpl0000664000175400017540000000015512323721477033344 0ustar jenkinsjenkins00000000000000{ "network": { "cidr": "172.0.0.0/24", "id": "%(id)s", "label": "public" } } nova-2014.1/nova/tests/integrated/api_samples/servers-list-resp.json.tpl0000664000175400017540000000065512323721477027552 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/0000775000175400017540000000000012323722546026672 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033454 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-post-req.xml.tpl0000664000175400017540000000155012323721477033273 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-post-req.json.tpl0000664000175400017540000000145312323721477033446 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-post-resp.json.tpl0000664000175400017540000000055612323721477033633 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-diagnostics-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-diagnostics-get-resp.xml.0000664000175400017540000000120312323721477035027 0ustar jenkinsjenkins00000000000000 524288 5778432 26701 0 0 2070139 262144 488 140208 0 662 0 17300000000 112 -1 ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-server-diagnostics/server-diagnostics-get-resp.json0000664000175400017540000000060312323721477035125 0ustar jenkinsjenkins00000000000000{ "cpu0_time": 17300000000, "memory": 524288, "vda_errors": -1, "vda_read": 262144, "vda_read_req": 112, "vda_write": 5778432, "vda_write_req": 488, "vnet1_rx": 2070139, "vnet1_rx_drop": 0, "vnet1_rx_errors": 0, "vnet1_rx_packets": 26701, "vnet1_tx": 140208, "vnet1_tx_drop": 0, "vnet1_tx_errors": 0, "vnet1_tx_packets": 662 } nova-2014.1/nova/tests/integrated/api_samples/flavors-list-resp.xml.tpl0000664000175400017540000000235112323721477027357 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-shelve/0000775000175400017540000000000012323722546024345 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-shelve/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031127 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-shelve/os-unshelve.xml.tpl0000664000175400017540000000007112323721477030135 0ustar jenkinsjenkins00000000000000 <%(action)s/> nova-2014.1/nova/tests/integrated/api_samples/os-shelve/os-shelve-offload.xml.tpl0000664000175400017540000000007112323721477031202 0ustar jenkinsjenkins00000000000000 <%(action)s/> nova-2014.1/nova/tests/integrated/api_samples/os-shelve/server-post-req.xml.tpl0000664000175400017540000000155012323721477030746 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-shelve/os-shelve.json.tpl0000664000175400017540000000003312323721477027741 0ustar jenkinsjenkins00000000000000{ "%(action)s": null } nova-2014.1/nova/tests/integrated/api_samples/os-shelve/server-post-req.json.tpl0000664000175400017540000000145312323721477031121 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-shelve/server-post-resp.json.tpl0000664000175400017540000000055612323721477031306 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-shelve/os-shelve-offload.json.tpl0000664000175400017540000000003312323721477031351 0ustar jenkinsjenkins00000000000000{ "%(action)s": null } nova-2014.1/nova/tests/integrated/api_samples/os-shelve/os-unshelve.json.tpl0000664000175400017540000000003312323721477030304 0ustar jenkinsjenkins00000000000000{ "%(action)s": null } nova-2014.1/nova/tests/integrated/api_samples/os-shelve/os-shelve.xml.tpl0000664000175400017540000000007112323721477027572 0ustar jenkinsjenkins00000000000000 <%(action)s/> nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/0000775000175400017540000000000012323722546030632 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000032512323721477035202 0ustar jenkinsjenkins00000000000000 TCP 80 80 10.10.10.0/24 ././@LongLink0000000000000000000000000000017700000000000011222 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000045512323721477035206 0ustar jenkinsjenkins00000000000000 TCP 80 80 10.10.10.0/24 ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000040212323721477035176 0ustar jenkinsjenkins00000000000000{ "security_group_default_rules": [ { "from_port": 80, "id": 1, "ip_protocol": "TCP", "ip_range": { "cidr": "10.10.10.0/24" }, "to_port": 80 } ] }././@LongLink0000000000000000000000000000017500000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000057312323721477035207 0ustar jenkinsjenkins00000000000000 TCP 80 80 10.10.10.0/24 ././@LongLink0000000000000000000000000000017700000000000011222 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000024012323721477035176 0ustar jenkinsjenkins00000000000000{ "security_group_default_rule": { "ip_protocol": "TCP", "from_port": "80", "to_port": "80", "cidr": "10.10.10.0/24" } }././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000032012323721477035175 0ustar jenkinsjenkins00000000000000{ "security_group_default_rule": { "from_port": 80, "id": 1, "ip_protocol": "TCP", "ip_range":{ "cidr": "10.10.10.0/24" }, "to_port": 80 } }././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000032112323721477035176 0ustar jenkinsjenkins00000000000000{ "security_group_default_rule": { "id": 1, "from_port": 80, "to_port": 80, "ip_protocol": "TCP", "ip_range": { "cidr": "10.10.10.0/24" } } }././@LongLink0000000000000000000000000000017500000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default-rules-show-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-group-default-rules/security-group-default0000664000175400017540000000045412323721477035205 0ustar jenkinsjenkins00000000000000 80 80 TCP 10.10.10.0/24 nova-2014.1/nova/tests/integrated/api_samples/os-console-output/0000775000175400017540000000000012323722546026057 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-console-output/server-post-resp.xml.tpl0000664000175400017540000000053212323721477032641 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-console-output/server-post-req.xml.tpl0000664000175400017540000000155012323721477032460 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-console-output/console-output-post-req.xml.tpl0000664000175400017540000000011312323721477034144 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-console-output/server-post-req.json.tpl0000664000175400017540000000145312323721477032633 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-console-output/console-output-post-resp.xml.tpl0000664000175400017540000000013612323721477034333 0ustar jenkinsjenkins00000000000000 FAKE CONSOLE OUTPUT ANOTHER LAST LINE nova-2014.1/nova/tests/integrated/api_samples/os-console-output/server-post-resp.json.tpl0000664000175400017540000000055612323721477033020 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-console-output/console-output-post-req.json.tpl0000664000175400017540000000007412323721477034323 0ustar jenkinsjenkins00000000000000{ "os-getConsoleOutput": { "length": 50 } } nova-2014.1/nova/tests/integrated/api_samples/os-console-output/console-output-post-resp.json.tpl0000664000175400017540000000010012323721477034473 0ustar jenkinsjenkins00000000000000{ "output": "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE" } nova-2014.1/nova/tests/integrated/api_samples/server-action-revertresize.xml.tpl0000664000175400017540000000015612323721477031274 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-networks/0000775000175400017540000000000012323722546024733 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-create-resp.json.tpl0000664000175400017540000000145612323721477032335 0ustar jenkinsjenkins00000000000000{ "network": { "bridge": null, "vpn_public_port": null, "dhcp_start": "%(ip)s", "bridge_interface": null, "updated_at": null, "id": "%(id)s", "cidr_v6": null, "deleted_at": null, "gateway": "%(ip)s", "rxtx_base": null, "label": "new net 111", "priority": null, "project_id": null, "vpn_private_address": null, "deleted": null, "vlan": null, "broadcast": "%(ip)s", "netmask": "%(ip)s", "injected": null, "cidr": "10.20.105.0/24", "vpn_public_address": null, "multi_host": null, "dns2": null, "created_at": null, "host": null, "gateway_v6": null, "netmask_v6": null, "dns1": null } } nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-show-resp.xml.tpl0000664000175400017540000000174312323721477031700 0ustar jenkinsjenkins00000000000000 br100 1000 %(ip)s eth0 %(timestamp)s %(id)s None None %(ip)s None None 1234 %(ip)s False 100 %(ip)s %(ip)s False 10.0.0.0/29 %(ip)s False None %(timestamp)s nsokolov-desktop None None None nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-create-req.xml.tpl0000664000175400017540000000012412323721477031771 0ustar jenkinsjenkins00000000000000 10.20.105.0/24 nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-add-req.xml.tpl0000664000175400017540000000001312323721477031253 0ustar jenkinsjenkins000000000000001 nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-show-resp.json.tpl0000664000175400017540000000173012323721477032045 0ustar jenkinsjenkins00000000000000{ "network": { "bridge": "br100", "bridge_interface": "eth0", "broadcast": "%(ip)s", "cidr": "10.0.0.0/29", "cidr_v6": null, "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "dhcp_start": "%(ip)s", "dns1": null, "dns2": null, "gateway": "%(ip)s", "gateway_v6": null, "host": "nsokolov-desktop", "id": "%(id)s", "injected": false, "label": "mynet_0", "multi_host": false, "netmask": "%(ip)s", "netmask_v6": null, "priority": null, "project_id": "1234", "rxtx_base": null, "updated_at": "%(timestamp)s", "vlan": 100, "vpn_private_address": "%(ip)s", "vpn_public_address": "%(ip)s", "vpn_public_port": 1000 } } nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-create-resp.xml.tpl0000664000175400017540000000163712323721477032165 0ustar jenkinsjenkins00000000000000 None None %(ip)s None None %(id)s None None %(ip)s None None None None False None %(ip)s %(ip)s None 10.20.105.0/24 None None None None None None None None nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-add-req.json.tpl0000664000175400017540000000001412323721477031425 0ustar jenkinsjenkins00000000000000{"id": "1"} nova-2014.1/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.json.tpl0000664000175400017540000000002712323721477033537 0ustar jenkinsjenkins00000000000000{"disassociate": null} nova-2014.1/nova/tests/integrated/api_samples/os-networks/network-create-req.json.tpl0000664000175400017540000000013412323721477032143 0ustar jenkinsjenkins00000000000000{ "network": { "label": "new net 111", "cidr": "10.20.105.0/24" } } nova-2014.1/nova/tests/integrated/api_samples/os-networks/networks-list-resp.xml.tpl0000664000175400017540000000422112323721477032050 0ustar jenkinsjenkins00000000000000 br100 1000 %(ip)s eth0 %(timestamp)s %(id)s None None %(ip)s None None 1234 %(ip)s False 100 %(ip)s %(ip)s False 10.0.0.0/29 %(ip)s False None %(timestamp)s nsokolov-desktop None None None br101 1001 %(ip)s eth0 None %(id)s None None %(ip)s None None None %(ip)s False 101 %(ip)s %(ip)s False 10.0.0.10/29 None False None %(timestamp)s None None None None nova-2014.1/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.xml.tpl0000664000175400017540000000004212323721477033363 0ustar jenkinsjenkins00000000000000None nova-2014.1/nova/tests/integrated/api_samples/os-networks/networks-list-resp.json.tpl0000664000175400017540000000361112323721477032223 0ustar jenkinsjenkins00000000000000{ "networks": [ { "bridge": "br100", "bridge_interface": "eth0", "broadcast": "%(ip)s", "cidr": "10.0.0.0/29", "cidr_v6": null, "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "dhcp_start": "%(ip)s", "dns1": null, "dns2": null, "gateway": "%(ip)s", "gateway_v6": null, "host": "nsokolov-desktop", "id": "%(id)s", "injected": false, "label": "mynet_0", "multi_host": false, "netmask": "%(ip)s", "netmask_v6": null, "priority": null, "project_id": "1234", "rxtx_base": null, "updated_at": "%(timestamp)s", "vlan": 100, "vpn_private_address": "%(ip)s", "vpn_public_address": "%(ip)s", "vpn_public_port": 1000 }, { "bridge": "br101", "bridge_interface": "eth0", "broadcast": "%(ip)s", "cidr": "10.0.0.10/29", "cidr_v6": null, "created_at": "%(timestamp)s", "deleted": false, "deleted_at": null, "dhcp_start": "%(ip)s", "dns1": null, "dns2": null, "gateway": "%(ip)s", "gateway_v6": null, "host": null, "id": "%(id)s", "injected": false, "label": "mynet_1", "multi_host": false, "netmask": "%(ip)s", "netmask_v6": null, "priority": null, "project_id": null, "rxtx_base": null, "updated_at": null, "vlan": 101, "vpn_private_address": "%(ip)s", "vpn_public_address": null, "vpn_public_port": 1001 } ] } nova-2014.1/nova/tests/integrated/api_samples/server-action-changepassword.json.tpl0000664000175400017540000000011012323721477031712 0ustar jenkinsjenkins00000000000000{ "changePassword" : { "adminPass" : "%(password)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/0000775000175400017540000000000012323722546026243 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-post-resp.xml.tpl0000664000175400017540000000065012323721477033026 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-post-req.xml.tpl0000664000175400017540000000016212323721477034335 0ustar jenkinsjenkins00000000000000 description nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-add-post-req.xml.tpl0000664000175400017540000000015412323721477035064 0ustar jenkinsjenkins00000000000000 %(group_name)s nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-post-req.xml.tpl0000664000175400017540000000156212323721477032647 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-list-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-list-get-resp.xml.t0000664000175400017540000000040612323721477035112 0ustar jenkinsjenkins00000000000000 default ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-add-post-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-add-post-req.json.tp0000664000175400017540000000010712323721477035057 0ustar jenkinsjenkins00000000000000{ "addSecurityGroup" : { "name" : "%(group_name)s" } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-create-resp.json.tp0000664000175400017540000000026112323721477035155 0ustar jenkinsjenkins00000000000000{ "security_group": { "description": "description", "id": 2, "name": "%(group_name)s", "rules": [], "tenant_id": "openstack" } } nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-post-req.json.tpl0000664000175400017540000000145312323721477033017 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-get-resp.json.tpl0000664000175400017540000000024612323721477034650 0ustar jenkinsjenkins00000000000000{ "security_group": { "description": "default", "id": 1, "name": "default", "rules": [], "tenant_id": "openstack" } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-remove-post-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-remove-post-req.xml.0000664000175400017540000000016212323721477035110 0ustar jenkinsjenkins00000000000000 %(group_name)s nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-create-resp.xml.tpl0000664000175400017540000000036212323721477035162 0ustar jenkinsjenkins00000000000000 description nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-post-resp.json.tpl0000664000175400017540000000072412323721477033201 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "security_groups": [ { "name": "default" } ] } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-security-groups-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-security-groups-list-resp.xm0000664000175400017540000000040612323721477035223 0ustar jenkinsjenkins00000000000000 default ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-security-groups-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/server-security-groups-list-resp.js0000664000175400017540000000031712323721477035214 0ustar jenkinsjenkins00000000000000{ "security_groups": [ { "description": "default", "id": 1, "name": "default", "rules": [], "tenant_id": "openstack" } ] } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-remove-post-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-remove-post-req.json0000664000175400017540000000011212323721477035176 0ustar jenkinsjenkins00000000000000{ "removeSecurityGroup" : { "name" : "%(group_name)s" } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-list-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-list-get-resp.json.0000664000175400017540000000031712323721477035100 0ustar jenkinsjenkins00000000000000{ "security_groups": [ { "description": "default", "id": 1, "name": "default", "rules": [], "tenant_id": "openstack" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-group-post-req.json.tpl0000664000175400017540000000015112323721477034504 0ustar jenkinsjenkins00000000000000{ "security_group": { "name": "%(group_name)s", "description": "description" } } nova-2014.1/nova/tests/integrated/api_samples/os-security-groups/security-groups-get-resp.xml.tpl0000664000175400017540000000034612323721477034500 0ustar jenkinsjenkins00000000000000 default nova-2014.1/nova/tests/integrated/api_samples/server-action-changepassword.xml.tpl0000664000175400017540000000021512323721477031547 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-action-resize.json.tpl0000664000175400017540000000007212323721477030212 0ustar jenkinsjenkins00000000000000{ "resize" : { "flavorRef" : "%(id)s" } } nova-2014.1/nova/tests/integrated/api_samples/image-meta-key-put-req.json.tpl0000664000175400017540000000010612323721477030317 0ustar jenkinsjenkins00000000000000{ "meta" : { "auto_disk_config" : "False" } } nova-2014.1/nova/tests/integrated/api_samples/images-details-get-resp.xml.tpl0000664000175400017540000001177012323721477030404 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/0000775000175400017540000000000012323722546026347 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033131 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/server-get-resp.xml.tpl0000664000175400017540000000207112323721477032723 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/server-post-req.xml.tpl0000664000175400017540000000155012323721477032750 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/servers-detail-resp.xml.tpl0000664000175400017540000000245712323721477033601 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/server-post-req.json.tpl0000664000175400017540000000145312323721477033123 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/server-post-resp.json.tpl0000664000175400017540000000055612323721477033310 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/servers-detail-resp.json.tpl0000664000175400017540000000324112323721477033742 0ustar jenkinsjenkins00000000000000{ "servers": [ { "status": "ACTIVE", "updated": "%(timestamp)s", "user_id": "fake", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "created": "%(timestamp)s", "name": "new-server-test", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "id": "%(uuid)s", "accessIPv4": "", "accessIPv6": "", "tenant_id": "openstack", "progress": 0, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "metadata": { "My Server Name": "Apache1" }, "os-extended-volumes:volumes_attached": [ {"id": "volume_id1"}, {"id": "volume_id2"} ] }] } nova-2014.1/nova/tests/integrated/api_samples/os-extended-volumes/server-get-resp.json.tpl0000664000175400017540000000267712323721477033110 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "os-extended-volumes:volumes_attached": [ {"id": "volume_id1"}, {"id": "volume_id2"} ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/0000775000175400017540000000000012323722546024465 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031247 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-req.xml.tpl0000664000175400017540000000155012323721477031066 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/vifs-list-resp.xml.tpl0000664000175400017540000000060212323721477030674 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-req.json.tpl0000664000175400017540000000145312323721477031241 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/vifs-list-resp.json.tpl0000664000175400017540000000025712323721477031053 0ustar jenkinsjenkins00000000000000{ "virtual_interfaces": [ { "id": "%(id)s", "mac_address": "%(mac_addr)s", "OS-EXT-VIF-NET:net_id": "%(id)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-VIF-NET/server-post-resp.json.tpl0000664000175400017540000000055612323721477031426 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/server-action-rebuild-resp.json.tpl0000664000175400017540000000255312323721477031314 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "%(ip)s", "accessIPv6": "%(ip6)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "adminPass": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "meta var": "meta val" }, "name": "%(name)s", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/server-post-req.json.tpl0000664000175400017540000000145312323721477027214 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/image-meta-key-put-resp.json.tpl0000664000175400017540000000007312323721477030504 0ustar jenkinsjenkins00000000000000{ "meta": { "auto_disk_config": "False" } }nova-2014.1/nova/tests/integrated/api_samples/README.rst0000664000175400017540000000202112323721477024124 0ustar jenkinsjenkins00000000000000Api Samples =========== This part of the tree contains templates for API samples. The documentation in doc/api_samples is completely autogenerated from the tests in this directory. To add a new api sample, add tests for the common passing and failing cases in this directory for your extension, and modify test_samples.py for your tests. There should be both JSON and XML tests included. Then run the following command: GENERATE_SAMPLES=True tox -epy27 nova.tests.integrated Which will create the files on doc/api_samples. If new tests are added or the .tpl files are changed due to bug fixes, the samples must be regenerated so they are in sync with the templates, as there is an additional test which reloads the documentation and ensures that it's in sync. Debugging sample generation --------------------------- If a .tpl is changed, its matching .xml and .json must be removed else the samples won't be generated. If an entirely new extension is added, a directory for it must be created before its samples will be generated. nova-2014.1/nova/tests/integrated/api_samples/images-list-get-resp.json.tpl0000664000175400017540000001201412323721477030073 0ustar jenkinsjenkins00000000000000{ "images": [ { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "%(host)s/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "%(host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage7" }, { "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "%(host)s/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "%(host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "%(host)s/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "%(host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "%(host)s/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "%(host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage6" }, { "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "%(host)s/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "%(host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "%(host)s/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "%(host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" }, { "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "%(host)s/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "%(host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "name": "fakeimage123456" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/0000775000175400017540000000000012323722546026153 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-resp.json.tpl0000664000175400017540000000005712323721477034676 0ustar jenkinsjenkins00000000000000{ "reservation_id": "%(reservation_id)s" } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-req.js0000664000175400017540000000156712323721477034757 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "min_count": "%(min_count)s", "max_count": "%(max_count)s", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-req.xm0000664000175400017540000000170412323721477034760 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-resp.xml.tpl0000664000175400017540000000026112323721477034522 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-req.xml.tpl0000664000175400017540000000175112323721477034345 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-post-req.json.tpl0000664000175400017540000000164012323721477034513 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "return_reservation_id": "True", "min_count": "%(min_count)s", "max_count": "%(max_count)s", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.j0000664000175400017540000000055612323721477034753 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-multiple-create/multiple-create-no-resv-post-resp.x0000664000175400017540000000055212323721477034765 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/image-get-resp.json.tpl0000664000175400017540000000163612323721477026747 0ustar jenkinsjenkins00000000000000{ "image": { "created": "2011-01-01T01:02:03Z", "id": "%(image_id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(image_id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(image_id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(image_id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/0000775000175400017540000000000012323722546024066 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/server-post-resp.xml.tpl0000664000175400017540000000053212323721477030650 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/server-get-resp.xml.tpl0000664000175400017540000000202212323721477030436 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/server-post-req.xml.tpl0000664000175400017540000000155012323721477030467 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/servers-detail-resp.xml.tpl0000664000175400017540000000237212323721477031314 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/server-post-req.json.tpl0000664000175400017540000000145312323721477030642 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/server-post-resp.json.tpl0000664000175400017540000000055612323721477031027 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/servers-detail-resp.json.tpl0000664000175400017540000000322212323721477031460 0ustar jenkinsjenkins00000000000000{ "servers": [ { "status": "ACTIVE", "updated": "%(timestamp)s", "OS-EXT-STS:task_state": null, "user_id": "fake", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "created": "%(timestamp)s", "name": "new-server-test", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "id": "%(uuid)s", "accessIPv4": "", "accessIPv6": "", "OS-EXT-STS:vm_state": "active", "tenant_id": "openstack", "progress": 0, "OS-EXT-STS:power_state": 1, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "metadata": { "My Server Name": "Apache1" } }] } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-STS/server-get-resp.json.tpl0000664000175400017540000000266412323721477030623 0ustar jenkinsjenkins00000000000000{ "server": { "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-EXT-STS:power_state": 1, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/flavor-get-resp.xml.tpl0000664000175400017540000000056412323721477027004 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/0000775000175400017540000000000012323722546026406 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml.t0000664000175400017540000000115412323721477034644 0ustar jenkinsjenkins00000000000000 eth0 None None nova
10.10.10.1
eth0 None None nova
10.10.10.2
eth0 None None nova
10.10.10.3
././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.jso0000664000175400017540000000020512323721477034661 0ustar jenkinsjenkins00000000000000{ "floating_ips_bulk_create": { "interface": "eth0", "ip_range": "192.168.1.0/24", "pool": "nova" } }././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml0000664000175400017540000000026512323721477034674 0ustar jenkinsjenkins00000000000000 eth0 192.168.1.0/24 nova ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json.0000664000175400017540000000111512323721477034626 0ustar jenkinsjenkins00000000000000{ "floating_ip_info": [ { "address": "10.10.10.1", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null }, { "address": "10.10.10.2", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null }, { "address": "10.10.10.3", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null } ] }././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml.0000664000175400017540000000011112323721477034555 0ustar jenkinsjenkins00000000000000 %(ip_range)s ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-re0000664000175400017540000000040212323721477034616 0ustar jenkinsjenkins00000000000000 eth0 None None nova
10.10.10.3
././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml0000664000175400017540000000015212323721477034666 0ustar jenkinsjenkins00000000000000 192.168.1.0/24././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json0000664000175400017540000000020212323721477034652 0ustar jenkinsjenkins00000000000000{ "floating_ips_bulk_create" : { "ip_range": "%(ip_range)s", "pool": "%(pool)s", "interface": "%(interface)s" } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.jso0000664000175400017540000000006412323721477034663 0ustar jenkinsjenkins00000000000000{ "floating_ips_bulk_delete": "192.168.1.0/24" }././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json0000664000175400017540000000004312323721477034654 0ustar jenkinsjenkins00000000000000{ "ip_range": "%(ip_range)s" } ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-re0000664000175400017540000000033312323721477034621 0ustar jenkinsjenkins00000000000000{ "floating_ip_info": [ { "address": "10.10.10.3", "instance_uuid": null, "interface": "eth0", "pool": "nova", "project_id": null } ] }././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml.0000664000175400017540000000027312323721477034567 0ustar jenkinsjenkins00000000000000 %(ip_range)s %(pool)s %(interface)s nova-2014.1/nova/tests/integrated/api_samples/flavors-list-resp.json.tpl0000664000175400017540000000412412323721477027530 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny" }, { "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small" }, { "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium" }, { "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large" }, { "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/0000775000175400017540000000000012323722546030276 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.xml.tpl0000664000175400017540000000053212323721477035060 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-req.xml.tpl0000664000175400017540000000155012323721477034677 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.js0000664000175400017540000000161012323721477035041 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "imageRef" : "%(host)s/v2/32278/images/%(uuid)s", "name" : "%(name)s", "adminPass" : "%(pass)s", "accessIPv4" : "%(ip)s", "accessIPv6" : "%(ip6)s", "metadata" : { "meta var" : "meta val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ], "preserve_ephemeral": %(preserve_ephemeral)s } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.xm0000664000175400017540000000167612323721477035065 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-re0000664000175400017540000000204412323721477035034 0ustar jenkinsjenkins00000000000000 Apache1 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-re0000664000175400017540000000255312323721477035041 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "%(ip)s", "accessIPv6": "%(ip6)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "adminPass": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "meta var": "meta val" }, "name": "%(name)s", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-req.json.tpl0000664000175400017540000000145312323721477035052 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-preserve-ephemeral-rebuild/server-post-resp.json.tp0000664000175400017540000000055612323721477035063 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-agents/0000775000175400017540000000000012323722546024340 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-post-req.xml.tpl0000664000175400017540000000037312323721477030533 0ustar jenkinsjenkins00000000000000 %(hypervisor)s %(os)s %(architecture)s %(version)s %(md5hash)s %(url)s nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-post-req.json.tpl0000664000175400017540000000034212323721477030700 0ustar jenkinsjenkins00000000000000{ "agent": { "hypervisor": "%(hypervisor)s", "os": "%(os)s", "architecture": "%(architecture)s", "version": "%(version)s", "md5hash": "%(md5hash)s", "url": "%(url)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-agents/agents-get-resp.json.tpl0000664000175400017540000000047012323721477031041 0ustar jenkinsjenkins00000000000000{ "agents": [ { "hypervisor": "%(hypervisor)s", "os": "%(os)s", "architecture": "%(architecture)s", "version": "%(version)s", "md5hash": "%(md5hash)s", "url": "%(url)s", "agent_id": "%(agent_id)d" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-update-put-req.xml.tpl0000664000175400017540000000021512323721477031631 0ustar jenkinsjenkins00000000000000 %(version)s %(url)s %(md5hash)s nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-update-put-resp.json.tpl0000664000175400017540000000023312323721477032164 0ustar jenkinsjenkins00000000000000{ "agent": { "agent_id": "%(agent_id)d", "url": "%(url)s", "md5hash": "%(md5hash)s", "version": "%(version)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-update-put-req.json.tpl0000664000175400017540000000016512323721477032006 0ustar jenkinsjenkins00000000000000{ "para": { "url": "%(url)s", "md5hash": "%(md5hash)s", "version": "%(version)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-post-resp.xml.tpl0000664000175400017540000000043712323721477030716 0ustar jenkinsjenkins00000000000000 %(url)s %(hypervisor)s %(md5hash)s %(version)s %(architecture)s %(os)s %(agent_id)d nova-2014.1/nova/tests/integrated/api_samples/os-agents/agents-get-resp.xml.tpl0000664000175400017540000000034112323721477030665 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-update-put-resp.xml.tpl0000664000175400017540000000026312323721477032016 0ustar jenkinsjenkins00000000000000 %(agent_id)d %(version)s %(url)s %(md5hash)s nova-2014.1/nova/tests/integrated/api_samples/os-agents/agent-post-resp.json.tpl0000664000175400017540000000040712323721477031064 0ustar jenkinsjenkins00000000000000{ "agent": { "hypervisor": "%(hypervisor)s", "os": "%(os)s", "architecture": "%(architecture)s", "version": "%(version)s", "md5hash": "%(md5hash)s", "url": "%(url)s", "agent_id": "%(agent_id)d" } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/0000775000175400017540000000000012323722546024601 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.json.tpl0000664000175400017540000001746312323721477032723 0ustar jenkinsjenkins00000000000000{ "images": [ { "created": "2011-01-01T01:02:03Z", "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "%(host)s/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "self" }, { "href": "%(host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "links": [ { "href": "%(host)s/v2/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "self" }, { "href": "%(host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/155d900f-4e14-4e4c-a73d-069cbf4541e6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "OS-EXT-IMG-SIZE:size": %(int)s, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a2459075-d96c-40d5-893e-577ff92e721c", "links": [ { "href": "%(host)s/v2/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "self" }, { "href": "%(host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a2459075-d96c-40d5-893e-577ff92e721c", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "a440c04b-79fa-479c-bed1-0b816eaec379", "links": [ { "href": "%(host)s/v2/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "self" }, { "href": "%(host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/a440c04b-79fa-479c-bed1-0b816eaec379", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77", "links": [ { "href": "%(host)s/v2/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "self" }, { "href": "%(host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "cedef40a-ed67-4d10-800e-17455edce175", "links": [ { "href": "%(host)s/v2/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "self" }, { "href": "%(host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/cedef40a-ed67-4d10-800e-17455edce175", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" }, { "created": "2011-01-01T01:02:03Z", "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "links": [ { "href": "%(host)s/v2/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "self" }, { "href": "%(host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "2011-01-01T01:02:03Z" } ] } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/images-details-get-resp.xml.tpl0000664000175400017540000001256512323721477032550 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/image-get-resp.json.tpl0000664000175400017540000000170712323721477031107 0ustar jenkinsjenkins00000000000000{ "image": { "created": "2011-01-01T01:02:03Z", "id": "%(image_id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(image_id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(image_id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(image_id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "OS-EXT-IMG-SIZE:size": %(int)s, "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IMG-SIZE/image-get-resp.xml.tpl0000664000175400017540000000156712323721477030742 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/nova/tests/integrated/api_samples/os-used-limits-for-admin/0000775000175400017540000000000012323722546027170 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.j0000664000175400017540000000543612323721477035003 0ustar jenkinsjenkins00000000000000{ "limits": { "absolute": { "maxImageMeta": 128, "maxPersonality": 5, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxSecurityGroups": 10, "maxServerMeta": 128, "maxTotalCores": 20, "maxTotalFloatingIps": 10, "maxTotalInstances": 10, "maxTotalKeypairs": 100, "maxTotalRAMSize": 51200, "totalCoresUsed": 0, "totalInstancesUsed": 0, "totalRAMUsed": 0, "totalSecurityGroupsUsed": 0, "totalFloatingIpsUsed": 0 }, "rate": [ { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" }, { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "PUT" }, { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "DELETE" } ], "regex": ".*", "uri": "*" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" } ], "regex": "^/servers", "uri": "*/servers" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "GET" } ], "regex": ".*changes-since.*", "uri": "*changes-since*" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 12, "unit": "MINUTE", "value": 12, "verb": "GET" } ], "regex": "^/os-fping", "uri": "*/os-fping" } ] } } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.x0000664000175400017540000000353212323721477035014 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/image-metadata-put-req.json.tpl0000664000175400017540000000013312323721477030363 0ustar jenkinsjenkins00000000000000{ "metadata": { "auto_disk_config": "True", "Label": "Changed" } } nova-2014.1/nova/tests/integrated/api_samples/limit-get-resp.json.tpl0000664000175400017540000000515012323721477026776 0ustar jenkinsjenkins00000000000000{ "limits": { "absolute": { "maxImageMeta": 128, "maxPersonality": 5, "maxPersonalitySize": 10240, "maxServerMeta": 128, "maxTotalCores": 20, "maxTotalFloatingIps": 10, "maxTotalInstances": 10, "maxTotalKeypairs": 100, "maxTotalRAMSize": 51200, "maxSecurityGroups": 10, "maxSecurityGroupRules": 20 }, "rate": [ { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" }, { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "PUT" }, { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "DELETE" } ], "regex": ".*", "uri": "*" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "POST" } ], "regex": "^/servers", "uri": "*/servers" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 120, "unit": "MINUTE", "value": 120, "verb": "GET" } ], "regex": ".*changes-since.*", "uri": "*changes-since*" }, { "limit": [ { "next-available": "%(timestamp)s", "remaining": 12, "unit": "MINUTE", "value": 12, "verb": "GET" } ], "regex": "^/os-fping", "uri": "*/os-fping" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/0000775000175400017540000000000012323722546027251 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tp0000664000175400017540000000023212323721477034705 0ustar jenkinsjenkins00000000000000{ "floating_ip": { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.0000664000175400017540000000003212323721477034641 0ustar jenkinsjenkins00000000000000{ "pool": "%(pool)s" }././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-re0000664000175400017540000000000012323721477034731 0ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.0000664000175400017540000000017312323721477034660 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.t0000664000175400017540000000055012323721477034724 0ustar jenkinsjenkins00000000000000{ "floating_ips": [ { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" }, { "fixed_ip": null, "id": 2, "instance_id": null, "ip": "10.10.10.2", "pool": "nova" } ] } ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.0000664000175400017540000000003312323721477034720 0ustar jenkinsjenkins00000000000000{ "floating_ips": [] } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tp0000664000175400017540000000036412323721477034736 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.xml.tpl0000664000175400017540000000017312323721477034714 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.0000664000175400017540000000006612323721477034726 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.t0000664000175400017540000000007412323721477034662 0ustar jenkinsjenkins00000000000000 %(pool)s././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-re0000664000175400017540000000000012323721477034731 0ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json0000664000175400017540000000023212323721477034747 0ustar jenkinsjenkins00000000000000{ "floating_ip": { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" } } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-resp.json.tpl0000664000175400017540000000013512323721477027741 0ustar jenkinsjenkins00000000000000{ "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" } }nova-2014.1/nova/tests/integrated/api_samples/server-post-resp.json.tpl0000664000175400017540000000055612323721477027401 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/versions-get-resp.xml.tpl0000664000175400017540000000071412323721477027360 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/images-list-get-resp.xml.tpl0000664000175400017540000000620612323721477027730 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/0000775000175400017540000000000012323722546025320 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-resp.xml.tpl0000664000175400017540000000060312323721477033034 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-req.json.tpl0000664000175400017540000000025312323721477033024 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s", "swap": 5 } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-req.xml.tpl0000664000175400017540000000045412323721477032656 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-list-resp.json.tpl0000664000175400017540000000456112323721477033202 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disk": 1, "id": "1", "links": [ { "href": "%(host)s/v2/openstack/flavors/1", "rel": "self" }, { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": "", "vcpus": 1 }, { "disk": 20, "id": "2", "links": [ { "href": "%(host)s/v2/openstack/flavors/2", "rel": "self" }, { "href": "%(host)s/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "swap": "", "vcpus": 1 }, { "disk": 40, "id": "3", "links": [ { "href": "%(host)s/v2/openstack/flavors/3", "rel": "self" }, { "href": "%(host)s/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "swap": "", "vcpus": 2 }, { "disk": 80, "id": "4", "links": [ { "href": "%(host)s/v2/openstack/flavors/4", "rel": "self" }, { "href": "%(host)s/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "swap": "", "vcpus": 4 }, { "disk": 160, "id": "5", "links": [ { "href": "%(host)s/v2/openstack/flavors/5", "rel": "self" }, { "href": "%(host)s/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "swap": "", "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-get-resp.json.tpl0000664000175400017540000000071412323721477033002 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 512, "swap": "", "vcpus": 1 } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-list-resp.xml.tpl0000664000175400017540000000234512323721477033027 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-get-resp.xml.tpl0000664000175400017540000000060012323721477032623 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-swap/flavor-swap-post-resp.json.tpl0000664000175400017540000000071512323721477033211 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 1024, "swap": 5, "vcpus": 2 } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/0000775000175400017540000000000012323722546024637 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031421 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-get-resp.xml.tpl0000664000175400017540000000213112323721477031210 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-req.xml.tpl0000664000175400017540000000155012323721477031240 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.xml.tpl0000664000175400017540000000250512323721477032063 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-req.json.tpl0000664000175400017540000000145312323721477031413 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-post-resp.json.tpl0000664000175400017540000000055612323721477031600 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/servers-detail-resp.json.tpl0000664000175400017540000000334312323721477032235 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-EXT-SRV-ATTR:host": "%(compute_host)s", "OS-EXT-SRV-ATTR:hypervisor_hostname": "%(hypervisor_hostname)s", "OS-EXT-SRV-ATTR:instance_name": "%(instance_name)s", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] }nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-SRV-ATTR/server-get-resp.json.tpl0000664000175400017540000000277212323721477031374 0ustar jenkinsjenkins00000000000000{ "server": { "OS-EXT-SRV-ATTR:host": "%(compute_host)s", "OS-EXT-SRV-ATTR:hypervisor_hostname": "%(hypervisor_hostname)s", "OS-EXT-SRV-ATTR:instance_name": "%(instance_name)s", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } }nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/0000775000175400017540000000000012323722546025454 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-statistics-resp.json.tpl0000664000175400017540000000055712323721477034712 0ustar jenkinsjenkins00000000000000{ "hypervisor_statistics": { "count": 1, "current_workload": 0, "disk_available_least": 0, "free_disk_gb": 1028, "free_ram_mb": 7680, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "vcpus": 1, "vcpus_used": 0 } }nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-show-resp.xml.tpl0000664000175400017540000000064312323721477033323 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-servers-resp.json.tpl0000664000175400017540000000016612323721477034205 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-servers-resp.xml.tpl0000664000175400017540000000023112323721477034025 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-search-resp.json.tpl0000664000175400017540000000016612323721477033761 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-uptime-resp.json.tpl0000664000175400017540000000030612323721477034013 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "hypervisor_hostname": "fake-mini", "id": %(hypervisor_id)s, "uptime": " 08:32:11 up 93 days, 18:25, 12 users, load average: 0.20, 0.12, 0.14" } } nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-search-resp.xml.tpl0000664000175400017540000000017312323721477033606 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-detail-resp.xml.tpl0000664000175400017540000000071212323721477033602 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-list-resp.xml.tpl0000664000175400017540000000017312323721477033314 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-detail-resp.json.tpl0000664000175400017540000000131512323721477033753 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "cpu_info": "?", "current_workload": 0, "disk_available_least": null, "host_ip": "%(ip)s", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": 1, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "%(host_name)s", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-statistics-resp.xml.tpl0000664000175400017540000000041712323721477034534 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-uptime-resp.xml.tpl0000664000175400017540000000027412323721477033646 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-list-resp.json.tpl0000664000175400017540000000016612323721477033467 0ustar jenkinsjenkins00000000000000{ "hypervisors": [ { "hypervisor_hostname": "fake-mini", "id": 1 } ] }nova-2014.1/nova/tests/integrated/api_samples/os-hypervisors/hypervisors-show-resp.json.tpl0000664000175400017540000000112412323721477033467 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": %(hypervisor_id)s, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "%(host_name)s", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/0000775000175400017540000000000012323722546026741 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033523 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.json.tp0000664000175400017540000000050012323721477034712 0ustar jenkinsjenkins00000000000000{ "tenant_usages": [ { "start": "%(timestamp)s", "stop": "%(timestamp)s", "tenant_id": "openstack", "total_hours": 1.0, "total_local_gb_usage": 1.0, "total_memory_mb_usage": 512.0, "total_vcpus_usage": 1.0 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-req.xml.tpl0000664000175400017540000000155012323721477033342 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specifi0000664000175400017540000000145712323721477034754 0ustar jenkinsjenkins00000000000000 openstack 1.0 1.0 512.0 1.0 %(timestamp)s %(timestamp)s %(uuid)s new-server-test 1.0 512 1 1 openstack m1.tiny %(timestamp)s None active 3600 ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specific.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get-specifi0000664000175400017540000000140412323721477034744 0ustar jenkinsjenkins00000000000000{ "tenant_usage": { "server_usages": [ { "ended_at": null, "flavor": "m1.tiny", "hours": 1.0, "instance_id": "%(uuid)s", "local_gb": 1, "memory_mb": 512, "name": "new-server-test", "started_at": "%(timestamp)s", "state": "active", "tenant_id": "openstack", "uptime": 3600, "vcpus": 1 } ], "start": "%(timestamp)s", "stop": "%(timestamp)s", "tenant_id": "openstack", "total_hours": 1.0, "total_local_gb_usage": 1.0, "total_memory_mb_usage": 512.0, "total_vcpus_usage": 1.0 } } nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/simple-tenant-usage-get.xml.tpl0000664000175400017540000000064512323721477034727 0ustar jenkinsjenkins00000000000000 openstack 1.0 1.0 512.0 1.0 %(timestamp)s %(timestamp)s nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-req.json.tpl0000664000175400017540000000145312323721477033515 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-simple-tenant-usage/server-post-resp.json.tpl0000664000175400017540000000055612323721477033702 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-instance-actions/0000775000175400017540000000000012323722546026321 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-instance-actions/instance-actions-list-resp.xml.tpl0000664000175400017540000000070012323721477035022 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-instance-actions/instance-actions-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-instance-actions/instance-actions-list-resp.json.tp0000664000175400017540000000116212323721477035022 0ustar jenkinsjenkins00000000000000{ "instanceActions": [ { "action": "%(action)s", "instance_uuid": "%(uuid)s", "request_id": "%(request_id)s", "user_id": "%(integer_id)s", "project_id": "%(integer_id)s", "start_time": "%(timestamp)s", "message": "" }, { "action": "%(action)s", "instance_uuid": "%(uuid)s", "request_id": "%(request_id)s", "user_id": "%(integer_id)s", "project_id": "%(integer_id)s", "start_time": "%(timestamp)s", "message": "" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-instance-actions/instance-action-get-resp.json.tpl0000664000175400017540000000156012323721477034621 0ustar jenkinsjenkins00000000000000{ "instanceAction": { "action": "%(action)s", "instance_uuid": "%(instance_uuid)s", "request_id": "%(request_id)s", "user_id": "%(integer_id)s", "project_id": "%(integer_id)s", "start_time": "%(timestamp)s", "message": "", "events": [ { "event": "%(event)s", "start_time": "%(timestamp)s", "finish_time": "%(timestamp)s", "result": "%(result)s", "traceback": "" }, { "event": "%(event)s", "start_time": "%(timestamp)s", "finish_time": "%(timestamp)s", "result": "%(result)s", "traceback": "" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-instance-actions/instance-action-get-resp.xml.tpl0000664000175400017540000000074712323721477034456 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-action-createimage.xml.tpl0000664000175400017540000000034312323721477031007 0ustar jenkinsjenkins00000000000000 %(meta_val)s nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/0000775000175400017540000000000012323722546024553 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.json.tpl0000664000175400017540000000074012323721477033477 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 1, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 512, "vcpus": 1 } } nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-get-resp.xml.tpl0000664000175400017540000000075712323721477033336 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.json.tpl0000664000175400017540000000036012323721477033521 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s", "rxtx_factor": 2.0, "OS-FLV-EXT-DATA:ephemeral": 30, "swap": 5 } } nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-req.xml.tpl0000664000175400017540000000054512323721477033355 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.json.tpl0000664000175400017540000000074312323721477033710 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-EXT-DATA:ephemeral": 30, "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2 } } nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-post-resp.xml.tpl0000664000175400017540000000076212323721477033540 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.xml.tpl0000664000175400017540000000265412323721477033530 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-EXT-DATA/flavors-extra-data-list-resp.json.tpl0000664000175400017540000000472512323721477033702 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 1, "id": "1", "links": [ { "href": "%(host)s/v2/openstack/flavors/1", "rel": "self" }, { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 20, "id": "2", "links": [ { "href": "%(host)s/v2/openstack/flavors/2", "rel": "self" }, { "href": "%(host)s/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "vcpus": 1 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 40, "id": "3", "links": [ { "href": "%(host)s/v2/openstack/flavors/3", "rel": "self" }, { "href": "%(host)s/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "vcpus": 2 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 80, "id": "4", "links": [ { "href": "%(host)s/v2/openstack/flavors/4", "rel": "self" }, { "href": "%(host)s/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "vcpus": 4 }, { "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 160, "id": "5", "links": [ { "href": "%(host)s/v2/openstack/flavors/5", "rel": "self" }, { "href": "%(host)s/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/0000775000175400017540000000000012323722546026077 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/server-post-resp.xml.tpl0000664000175400017540000000053212323721477032661 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/force-delete-post-req.xml.tpl0000664000175400017540000000006712323721477033532 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/server-post-req.xml.tpl0000664000175400017540000000155012323721477032500 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/force-delete-post-req.json.tpl0000664000175400017540000000003412323721477033675 0ustar jenkinsjenkins00000000000000{ "forceDelete": null } nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/restore-post-req.json.tpl0000664000175400017540000000003012323721477033016 0ustar jenkinsjenkins00000000000000{ "restore": null } nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/server-post-req.json.tpl0000664000175400017540000000145312323721477032653 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/restore-post-req.xml.tpl0000664000175400017540000000006312323721477032653 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-deferred-delete/server-post-resp.json.tpl0000664000175400017540000000055612323721477033040 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-post-resp.json.tpl0000664000175400017540000000030112323721477030717 0ustar jenkinsjenkins00000000000000{ "metadata": { "Label": "UpdatedImage", "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "False", "ramdisk_id": "nokernel" } }nova-2014.1/nova/tests/integrated/api_samples/images-details-resp.xml.tpl0000664000175400017540000001177012323721477027627 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 155d900f-4e14-4e4c-a73d-069cbf4541e6 None nokernel nokernel nokernel nokernel nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/0000775000175400017540000000000012323722546025353 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.xml.tpl0000664000175400017540000000046512323721477032746 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-req.json.tpl0000664000175400017540000000026412323721477033114 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s", "rxtx_factor": 2.0 } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.json.tpl0000664000175400017540000000072412323721477033071 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 512, "rxtx_factor": 1.0, "vcpus": 1 } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.json.tpl0000664000175400017540000000463112323721477033266 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disk": 1, "id": "1", "links": [ { "href": "%(host)s/v2/openstack/flavors/1", "rel": "self" }, { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "rxtx_factor": 1.0, "vcpus": 1 }, { "disk": 20, "id": "2", "links": [ { "href": "%(host)s/v2/openstack/flavors/2", "rel": "self" }, { "href": "%(host)s/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "rxtx_factor": 1.0, "vcpus": 1 }, { "disk": 40, "id": "3", "links": [ { "href": "%(host)s/v2/openstack/flavors/3", "rel": "self" }, { "href": "%(host)s/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "rxtx_factor": 1.0, "vcpus": 2 }, { "disk": 80, "id": "4", "links": [ { "href": "%(host)s/v2/openstack/flavors/4", "rel": "self" }, { "href": "%(host)s/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "rxtx_factor": 1.0, "vcpus": 4 }, { "disk": 160, "id": "5", "links": [ { "href": "%(host)s/v2/openstack/flavors/5", "rel": "self" }, { "href": "%(host)s/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "rxtx_factor": 1.0, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.json.tpl0000664000175400017540000000072612323721477033301 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "ram": 1024, "rxtx_factor": 2.0, "vcpus": 2 } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-post-resp.xml.tpl0000664000175400017540000000061412323721477033124 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-list-resp.xml.tpl0000664000175400017540000000242712323721477033116 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-rxtx/flavor-rxtx-get-resp.xml.tpl0000664000175400017540000000053612323721477032721 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-action-revertresize.json.tpl0000664000175400017540000000003612323721477031442 0ustar jenkinsjenkins00000000000000{ "revertResize" : null } nova-2014.1/nova/tests/integrated/api_samples/flavor-get-resp.json.tpl0000664000175400017540000000066412323721477027156 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 } } nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/0000775000175400017540000000000012323722546027247 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-resp.xml.tpl0000664000175400017540000000053212323721477034031 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/server-get-resp.xml.tpl0000664000175400017540000000155312323721477033627 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/servers-details-resp.xml.tpl0000664000175400017540000000164412323721477034661 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-req.xml.tpl0000664000175400017540000000155012323721477033650 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/servers-details-resp.json.tpl0000664000175400017540000000303412323721477035025 0ustar jenkinsjenkins00000000000000{ "servers": [ { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/servers-list-resp.xml.tpl0000664000175400017540000000054312323721477034204 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/servers-list-resp.json.tpl0000664000175400017540000000065512323721477034361 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-req.json.tpl0000664000175400017540000000145312323721477034023 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/server-post-resp.json.tpl0000664000175400017540000000055612323721477034210 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-hide-server-addresses/server-get-resp.json.tpl0000664000175400017540000000247712323721477034006 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/0000775000175400017540000000000012323722546024706 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.json.tpl0000664000175400017540000000025312323721477033472 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "%(fingerprint)s", "name": "%(keypair_name)s", "public_key": "%(public_key)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.xml.tpl0000664000175400017540000000014312323721477033135 0ustar jenkinsjenkins00000000000000 %(keypair_name)s %(public_key)s nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.xml.tpl0000664000175400017540000000006712323721477031632 0ustar jenkinsjenkins00000000000000 %(keypair_name)s nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.xml.tpl0000664000175400017540000000032512323721510031567 0ustar jenkinsjenkins00000000000000 %(public_key)s %(keypair_name)s %(fingerprint)s nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-req.json.tpl0000664000175400017540000000007612323721477032003 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "%(keypair_name)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-resp.xml.tpl0000664000175400017540000000031512323721477033320 0ustar jenkinsjenkins00000000000000 %(public_key)s fake %(keypair_name)s %(fingerprint)s nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-get-resp.json.tpl0000664000175400017540000000034412323721510031741 0ustar jenkinsjenkins00000000000000{ "keypairs": [ { "keypair": { "fingerprint": "%(fingerprint)s", "name": "%(keypair_name)s", "public_key": "%(public_key)s" } } ] } nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.xml.tpl0000664000175400017540000000037312323721477032014 0ustar jenkinsjenkins00000000000000 %(public_key)s %(private_key)s fake %(keypair_name)s %(fingerprint)s nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-import-post-req.json.tpl0000664000175400017540000000014612323721477033311 0ustar jenkinsjenkins00000000000000{ "keypair": { "name": "%(keypair_name)s", "public_key": "%(public_key)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-keypairs/keypairs-post-resp.json.tpl0000664000175400017540000000032512323721477032162 0ustar jenkinsjenkins00000000000000{ "keypair": { "fingerprint": "%(fingerprint)s", "name": "%(keypair_name)s", "private_key": "%(private_key)s", "public_key": "%(public_key)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/server-ips-resp.json.tpl0000664000175400017540000000022712323721477027202 0ustar jenkinsjenkins00000000000000{ "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-DISABLED/0000775000175400017540000000000012323722546024553 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.xml.tpl0000664000175400017540000000267112323721477032360 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.json.tpl0000664000175400017540000000073312323721477032244 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-DISABLED:disabled": false, "disk": 1, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 } } nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-detail-get-resp.json.tpl0000664000175400017540000000474412323721477032534 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "OS-FLV-DISABLED:disabled": false, "disk": 1, "id": "1", "links": [ { "href": "%(host)s/v2/openstack/flavors/1", "rel": "self" }, { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "vcpus": 1 }, { "OS-FLV-DISABLED:disabled": false, "disk": 20, "id": "2", "links": [ { "href": "%(host)s/v2/openstack/flavors/2", "rel": "self" }, { "href": "%(host)s/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "ram": 2048, "vcpus": 1 }, { "OS-FLV-DISABLED:disabled": false, "disk": 40, "id": "3", "links": [ { "href": "%(host)s/v2/openstack/flavors/3", "rel": "self" }, { "href": "%(host)s/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "ram": 4096, "vcpus": 2 }, { "OS-FLV-DISABLED:disabled": false, "disk": 80, "id": "4", "links": [ { "href": "%(host)s/v2/openstack/flavors/4", "rel": "self" }, { "href": "%(host)s/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "ram": 8192, "vcpus": 4 }, { "OS-FLV-DISABLED:disabled": false, "disk": 160, "id": "5", "links": [ { "href": "%(host)s/v2/openstack/flavors/5", "rel": "self" }, { "href": "%(host)s/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "ram": 16384, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/api_samples/OS-FLV-DISABLED/flavor-show-get-resp.xml.tpl0000664000175400017540000000075012323721477032072 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-extended-hypervisors/0000775000175400017540000000000012323722546027252 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.0000664000175400017540000000066412323721477035164 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-extended-hypervisors/hypervisors-show-with-ip-resp.0000664000175400017540000000116112323721477035155 0ustar jenkinsjenkins00000000000000{ "hypervisor": { "cpu_info": "?", "current_workload": 0, "disk_available_least": 0, "host_ip": "%(ip)s", "free_disk_gb": 1028, "free_ram_mb": 7680, "hypervisor_hostname": "fake-mini", "hypervisor_type": "fake", "hypervisor_version": 1, "id": %(hypervisor_id)s, "local_gb": 1028, "local_gb_used": 0, "memory_mb": 8192, "memory_mb_used": 512, "running_vms": 0, "service": { "host": "%(host_name)s", "id": 2 }, "vcpus": 1, "vcpus_used": 0 } } nova-2014.1/nova/tests/integrated/api_samples/server-ips-network-resp.json.tpl0000664000175400017540000000014612323721477030671 0ustar jenkinsjenkins00000000000000{ "private": [ { "addr": "%(ip)s", "version": 4 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/0000775000175400017540000000000012323722546026444 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033226 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/server-post-req.xml.tpl0000664000175400017540000000155012323721477033045 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-show-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-show-resp.xml.t0000664000175400017540000000056612323721477034753 0ustar jenkinsjenkins00000000000000 %(port_state)s %(subnet_id)s %(ip_address)s %(port_id)s %(net_id)s %(mac_addr)s ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-list-resp.json.0000664000175400017540000000061412323721477034725 0ustar jenkinsjenkins00000000000000{ "interfaceAttachments": [ { "port_state": "%(port_state)s", "fixed_ips": [ { "subnet_id": "%(subnet_id)s", "ip_address": "%(ip_address)s" } ], "net_id": "%(net_id)s", "port_id": "%(port_id)s", "mac_addr": "%(mac_addr)s" } ] } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-resp.xml0000664000175400017540000000051712323721477034770 0ustar jenkinsjenkins00000000000000 %(net_id)s %(port_id)s %(subnet_id)s %(ip_address)s %(port_state)s %(mac_addr)s ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-req.xml.0000664000175400017540000000016612323721477034664 0ustar jenkinsjenkins00000000000000 %(port_id)s nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/server-post-req.json.tpl0000664000175400017540000000145312323721477033220 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-resp.jso0000664000175400017540000000044412323721477034762 0ustar jenkinsjenkins00000000000000{ "interfaceAttachment": { "fixed_ips": [{ "subnet_id": "%(subnet_id)s", "ip_address": "%(ip_address)s" }], "mac_addr": "fa:16:3e:4c:2c:30", "net_id": "%(net_id)s", "port_id": "%(port_id)s", "port_state": "%(port_state)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/server-post-resp.json.tpl0000664000175400017540000000055612323721477033405 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-list-resp.xml.t0000664000175400017540000000065612323721477034746 0ustar jenkinsjenkins00000000000000 %(port_state)s %(subnet_id)s %(ip_address)s %(port_id)s %(net_id)s %(mac_addr)s ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-create-req.json0000664000175400017540000000014112323721477034750 0ustar jenkinsjenkins00000000000000{ "interfaceAttachment": { "port_id": "ce531f90-199f-48c0-816c-13e38010b442" } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-attach-interfaces/attach-interfaces-show-resp.json.0000664000175400017540000000051712323721477034734 0ustar jenkinsjenkins00000000000000{ "interfaceAttachment": { "port_state": "%(port_state)s", "fixed_ips": [ { "subnet_id": "%(subnet_id)s", "ip_address": "%(ip_address)s" } ], "net_id": "%(net_id)s", "port_id": "%(port_id)s", "mac_addr": "%(mac_addr)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/0000775000175400017540000000000012323722546026503 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033265 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/server-post-req.xml.tpl0000664000175400017540000000155012323721477033104 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/server_start_stop.xml.tpl0000664000175400017540000000006512323721477033616 0ustar jenkinsjenkins00000000000000 <%(action)s/> nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/server-post-req.json.tpl0000664000175400017540000000145312323721477033257 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/server_start_stop.json.tpl0000664000175400017540000000003212323721477033761 0ustar jenkinsjenkins00000000000000{ "%(action)s" : null } nova-2014.1/nova/tests/integrated/api_samples/os-server-start-stop/server-post-resp.json.tpl0000664000175400017540000000055612323721477033444 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/server-action-reboot.json.tpl0000664000175400017540000000006712323721477030207 0ustar jenkinsjenkins00000000000000{ "reboot" : { "type" : "%(type)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/0000775000175400017540000000000012323722546030223 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-0000664000175400017540000000015412323721477035142 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-0000664000175400017540000000040512323721477035141 0ustar jenkinsjenkins00000000000000 %(volume_id)s %(snapshot_id)s %(type)s %(new_file)s ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-0000664000175400017540000000032212323721477035137 0ustar jenkinsjenkins00000000000000{ "snapshot": { "volume_id": "%(volume_id)s", "create_info": { "snapshot_id": "%(snapshot_id)s", "type": "%(type)s", "new_file": "%(new_file)s"} } } ././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-assisted-volume-snapshots/snapshot-create-assisted-0000664000175400017540000000011612323721477035140 0ustar jenkinsjenkins00000000000000{ "snapshot": { "id": 100, "volumeId": "%(uuid)s" } } nova-2014.1/nova/tests/integrated/api_samples/server-action-confirmresize.json.tpl0000664000175400017540000000003712323721477031571 0ustar jenkinsjenkins00000000000000{ "confirmResize" : null } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-put-req.xml.tpl0000664000175400017540000000030412323721477030212 0ustar jenkinsjenkins00000000000000 True Changed nova-2014.1/nova/tests/integrated/api_samples/image-meta-key-put-req.xml.tpl0000664000175400017540000000021412323721477030146 0ustar jenkinsjenkins00000000000000 False nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/0000775000175400017540000000000012323722546025607 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-resp.xml.tpl0000664000175400017540000000021012323721477034636 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-list-resp.xml.tpl0000664000175400017540000000017212323721477033601 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-req.json.tpl0000664000175400017540000000030512323721477034056 0ustar jenkinsjenkins00000000000000{ "flavor": { "name": "%(flavor_name)s", "ram": 1024, "vcpus": 2, "disk": 10, "id": "%(flavor_id)s", "os-flavor-access:is_public": false } } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-req.xml.tpl0000664000175400017540000000015612323721477034465 0ustar jenkinsjenkins00000000000000 %(tenant_id)s nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-detail-resp.json.tpl0000664000175400017540000000475112323721477034250 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "disk": 1, "id": "1", "links": [ { "href": "%(host)s/v2/openstack/flavors/1", "rel": "self" }, { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "os-flavor-access:is_public": true, "ram": 512, "vcpus": 1 }, { "disk": 20, "id": "2", "links": [ { "href": "%(host)s/v2/openstack/flavors/2", "rel": "self" }, { "href": "%(host)s/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small", "os-flavor-access:is_public": true, "ram": 2048, "vcpus": 1 }, { "disk": 40, "id": "3", "links": [ { "href": "%(host)s/v2/openstack/flavors/3", "rel": "self" }, { "href": "%(host)s/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium", "os-flavor-access:is_public": true, "ram": 4096, "vcpus": 2 }, { "disk": 80, "id": "4", "links": [ { "href": "%(host)s/v2/openstack/flavors/4", "rel": "self" }, { "href": "%(host)s/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large", "os-flavor-access:is_public": true, "ram": 8192, "vcpus": 4 }, { "disk": 160, "id": "5", "links": [ { "href": "%(host)s/v2/openstack/flavors/5", "rel": "self" }, { "href": "%(host)s/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge", "os-flavor-access:is_public": true, "ram": 16384, "vcpus": 8 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-list-resp.json.tpl0000664000175400017540000000020612323721477033750 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "%(flavor_id)s", "tenant_id": "fake_tenant" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-detail-resp.xml.tpl0000664000175400017540000000267312323721477034100 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-resp.xml.tpl0000664000175400017540000000076112323721477034075 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-req.json.tpl0000664000175400017540000000010512323721477034630 0ustar jenkinsjenkins00000000000000{ "addTenantAccess": { "tenant": "%(tenant_id)s" } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-add-tenant-resp.json.tp0000664000175400017540000000021012323721477034633 0ustar jenkinsjenkins00000000000000{ "flavor_access": [ { "flavor_id": "%(flavor_id)s", "tenant_id": "%(tenant_id)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-show-resp.xml.tpl0000664000175400017540000000074612323721477033615 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-req.xml.tpl0000664000175400017540000000047412323721477033714 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-create-resp.json.tpl0000664000175400017540000000074712323721477034252 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 10, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "%(flavor_name)s", "os-flavor-access:is_public": false, "ram": 1024, "vcpus": 2 } } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.json0000664000175400017540000000003312323721477034761 0ustar jenkinsjenkins00000000000000{ "flavor_access": [] }././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-req.xml.t0000664000175400017540000000016412323721477034675 0ustar jenkinsjenkins00000000000000 %(tenant_id)s nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-show-resp.json.tpl0000664000175400017540000000073412323721477033763 0ustar jenkinsjenkins00000000000000{ "flavor": { "disk": 1, "id": "%(flavor_id)s", "links": [ { "href": "%(host)s/v2/openstack/flavors/%(flavor_id)s", "rel": "self" }, { "href": "%(host)s/openstack/flavors/%(flavor_id)s", "rel": "bookmark" } ], "name": "m1.tiny", "os-flavor-access:is_public": true, "ram": 512, "vcpus": 1 } } ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-resp.xml.0000664000175400017540000000007012323721477034667 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-flavor-access/flavor-access-remove-tenant-req.json.0000664000175400017540000000011012323721477034651 0ustar jenkinsjenkins00000000000000{ "removeTenantAccess": { "tenant": "%(tenant_id)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/0000775000175400017540000000000012323722546026761 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-resp.xml.tpl0000664000175400017540000000053212323721477033543 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-req.xml.tpl0000664000175400017540000000155012323721477033362 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-rdp-console-post-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-rdp-console-post-req.xml.tp0000664000175400017540000000014712323721477034703 0ustar jenkinsjenkins00000000000000 rdp-html5 nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-req.json.tpl0000664000175400017540000000145312323721477033535 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-console-connect-info-get-re0000664000175400017540000000034412323721477034667 0ustar jenkinsjenkins00000000000000 %(id)s %(host)s %(port)s %(internal_access_path)s ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-rdp-console-post-req.json.t0000664000175400017540000000010012323721477034661 0ustar jenkinsjenkins00000000000000{ "os-getRDPConsole": { "type": "rdp-html5" } } nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/server-post-resp.json.tpl0000664000175400017540000000055612323721477033722 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-console-connect-info-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-console-auth-tokens/get-console-connect-info-get-re0000664000175400017540000000025712323721477034672 0ustar jenkinsjenkins00000000000000{ "console": { "instance_uuid": "%(id)s", "host": "%(host)s", "port": %(port)s, "internal_access_path": "%(internal_access_path)s" } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/0000775000175400017540000000000012323722546024050 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-resp.xml.tpl0000664000175400017540000000053212323721477030632 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/server-get-resp.xml.tpl0000664000175400017540000000172212323721477030426 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-req.xml.tpl0000664000175400017540000000155012323721477030451 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/servers-detail-resp.xml.tpl0000664000175400017540000000226612323721477031300 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-req.json.tpl0000664000175400017540000000145312323721477030624 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/server-post-resp.json.tpl0000664000175400017540000000055612323721477031011 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/servers-detail-resp.json.tpl0000664000175400017540000000310512323721477031442 0ustar jenkinsjenkins00000000000000{ "servers": [ { "status": "ACTIVE", "updated": "%(timestamp)s", "user_id": "fake", "addresses": { "private": [ { "OS-EXT-IPS:type": "fixed", "addr": "%(ip)s", "version": 4 } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "created": "%(timestamp)s", "name": "new-server-test", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "id": "%(uuid)s", "accessIPv4": "", "accessIPv6": "", "tenant_id": "openstack", "progress": 0, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "metadata": { "My Server Name": "Apache1" } }] } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-IPS/server-get-resp.json.tpl0000664000175400017540000000255712323721477030606 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS:type": "fixed", "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/0000775000175400017540000000000012323722546025453 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-get-resp.json.tpl0000664000175400017540000000023212323721477033263 0ustar jenkinsjenkins00000000000000{ "floating_ip": { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" } } nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-req.json.tpl0000664000175400017540000000003212323721477033563 0ustar jenkinsjenkins00000000000000{ "pool": "%(pool)s" }nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-nopool-req.xml.tpl0000664000175400017540000000000012323721477034711 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-resp.xml.tpl0000664000175400017540000000017312323721477033602 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-resp.json.tpl0000664000175400017540000000055012323721477033462 0ustar jenkinsjenkins00000000000000{ "floating_ips": [ { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" }, { "fixed_ip": null, "id": 2, "instance_id": null, "ip": "10.10.10.2", "pool": "nova" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-empty-resp.json.tpl0000664000175400017540000000003312323721477034612 0ustar jenkinsjenkins00000000000000{ "floating_ips": [] } nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-resp.xml.tpl0000664000175400017540000000036412323721477033314 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-get-resp.xml.tpl0000664000175400017540000000017312323721477033116 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-list-empty-resp.xml.tpl0000664000175400017540000000006612323721477034447 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-req.xml.tpl0000664000175400017540000000007412323721477033420 0ustar jenkinsjenkins00000000000000 %(pool)s././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-nopool-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-nopool-req.json.tp0000664000175400017540000000000012323721477034706 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-floating-ips/floating-ips-create-resp.json.tpl0000664000175400017540000000023212323721477033747 0ustar jenkinsjenkins00000000000000{ "floating_ip": { "fixed_ip": null, "id": 1, "instance_id": null, "ip": "10.10.10.1", "pool": "nova" } } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-get-resp.json.tpl0000664000175400017540000000024312323721477030516 0ustar jenkinsjenkins00000000000000{ "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" } }nova-2014.1/nova/tests/integrated/api_samples/os-user-data/0000775000175400017540000000000012323722546024744 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-user-data/userdata-post-req.json.tpl0000664000175400017540000000152212323721477032017 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "user_data" : "%(user_data)s", "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-user-data/userdata-post-req.xml.tpl0000664000175400017540000000165712323721477031657 0ustar jenkinsjenkins00000000000000 %(user_data)s Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-user-data/userdata-post-resp.xml.tpl0000664000175400017540000000055212323721477032032 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-user-data/userdata-post-resp.json.tpl0000664000175400017540000000055612323721477032207 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/0000775000175400017540000000000012323722546025347 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/user-quotas-show-get-resp.json.tpl0000664000175400017540000000064212323721477034036 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "id": "fake_tenant", "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-resp.json.tpl0000664000175400017540000000060412323721477034544 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 9, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-req.json.tpl0000664000175400017540000000011512323721477034357 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 9 } } nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-req.xml.tpl0000664000175400017540000000020212323721477034203 0ustar jenkinsjenkins00000000000000 True 9 nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/user-quotas-update-post-resp.xml.tpl0000664000175400017540000000100112323721477034363 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 9 100 128 51200 20 10 nova-2014.1/nova/tests/integrated/api_samples/os-user-quotas/user-quotas-show-get-resp.xml.tpl0000664000175400017540000000102312323721477033657 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 10 100 128 51200 20 10 nova-2014.1/nova/tests/integrated/api_samples/image-get-resp.xml.tpl0000664000175400017540000000140612323721477026571 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/nova/tests/integrated/api_samples/server-get-resp.json.tpl0000664000175400017540000000247712323721477027177 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/0000775000175400017540000000000012323722546027774 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-resp.xml.tpl0000664000175400017540000000053212323721477034556 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-req.xml.tpl0000664000175400017540000000155012323721477034375 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/update-volume-req.xml.tpl0000664000175400017540000000015112323721477034667 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-req.json.tpl0000664000175400017540000000145312323721477034550 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/server-post-resp.json.tpl0000664000175400017540000000055612323721477034735 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-volume-attachment-update/update-volume-req.json.tpl0000664000175400017540000000015012323721477035037 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "volumeId": "%(volume_id)s", "device": "%(device)s" } } nova-2014.1/nova/tests/integrated/api_samples/image-metadata-post-req.xml.tpl0000664000175400017540000000030212323721477030365 0ustar jenkinsjenkins00000000000000 False UpdatedImage nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/0000775000175400017540000000000012323722546023353 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-resize-post-req.json.tpl0000664000175400017540000000013012323721477031415 0ustar jenkinsjenkins00000000000000{ "resize": { "flavorRef": "3", "OS-DCF:diskConfig": "AUTO" } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-post-resp.xml.tpl0000664000175400017540000000067512323721477030145 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-get-resp.xml.tpl0000664000175400017540000000171612323721477027734 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/list-servers-detail-get.xml.tpl0000664000175400017540000000200712323721477031353 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-update-put-resp.xml.tpl0000664000175400017540000000176612323721477031252 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-update-put-resp.json.tpl0000664000175400017540000000254412323721477031416 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-req.json.tpl0000664000175400017540000000017612323721477032044 0ustar jenkinsjenkins00000000000000{ "rebuild": { "imageRef" : "%(host)s/openstack/images/%(image_id)s", "OS-DCF:diskConfig": "AUTO" } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-post-req.xml.tpl0000664000175400017540000000171312323721477027755 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-update-put-req.xml.tpl0000664000175400017540000000041112323721477031052 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/list-servers-detail-get.json.tpl0000664000175400017540000000310512323721477031524 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-req.xml.tpl0000664000175400017540000000051012323721477031663 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-resp.xml.tpl0000664000175400017540000000174712323721477032062 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-resize-post-req.xml.tpl0000664000175400017540000000043712323721477031256 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/image-list-resp.json.tpl0000664000175400017540000001522412323721477030054 0ustar jenkinsjenkins00000000000000{ "images": [ { "OS-DCF:diskConfig": "AUTO", "created": "%(timestamp)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" }, { "created": "%(timestamp)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" }, { "created": "%(timestamp)s", "id": "%(uuid)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(uuid)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" }, { "OS-DCF:diskConfig": "MANUAL", "created": "%(timestamp)s", "id": "%(uuid)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(uuid)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "False", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage6", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" }, { "created": "%(timestamp)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "%(id)s", "ramdisk_id": null }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" }, { "created": "%(timestamp)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" }, { "created": "%(timestamp)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage123456", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/image-list-resp.xml.tpl0000664000175400017540000001025612323721477027703 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nokernel nokernel x86_64 nokernel nokernel nokernel False nokernel x86_64 %(id)s None nokernel nokernel nokernel nokernel nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-action-rebuild-resp.json.tpl0000664000175400017540000000261112323721477032222 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "adminPass": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-post-req.json.tpl0000664000175400017540000000152012323721477030122 0ustar jenkinsjenkins00000000000000{ "server" : { "OS-DCF:diskConfig": "AUTO", "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/image-get-resp.json.tpl0000664000175400017540000000167412323721477027664 0ustar jenkinsjenkins00000000000000{ "image": { "OS-DCF:diskConfig": "AUTO", "created": "%(timestamp)s", "id": "%(image_id)s", "links": [ { "href": "%(host)s/v2/openstack/images/%(image_id)s", "rel": "self" }, { "href": "%(host)s/openstack/images/%(image_id)s", "rel": "bookmark" }, { "href": "%(glance_host)s/openstack/images/%(image_id)s", "rel": "alternate", "type": "application/vnd.openstack.image" } ], "metadata": { "architecture": "x86_64", "auto_disk_config": "True", "kernel_id": "nokernel", "ramdisk_id": "nokernel" }, "minDisk": 0, "minRam": 0, "name": "fakeimage7", "progress": 100, "status": "ACTIVE", "updated": "%(timestamp)s" } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-post-resp.json.tpl0000664000175400017540000000062312323721477030307 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/image-get-resp.xml.tpl0000664000175400017540000000155112323721477027505 0ustar jenkinsjenkins00000000000000 nokernel True nokernel x86_64 nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-get-resp.json.tpl0000664000175400017540000000254412323721477030105 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/OS-DCF/server-update-put-req.json.tpl0000664000175400017540000000007612323721477031232 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO" } } nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/0000775000175400017540000000000012323722546025164 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-show-get-resp.xml.tpl0000664000175400017540000000102312323721477032520 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 10 100 128 51200 20 10 nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-show-get-resp.json.tpl0000664000175400017540000000064212323721477032677 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "id": "fake_tenant", "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-show-defaults-get-resp.xml.tpl0000664000175400017540000000102312323721477034325 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 10 100 128 51200 20 10 nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-req.xml.tpl0000664000175400017540000000017112323721477033051 0ustar jenkinsjenkins00000000000000 45 nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-resp.json.tpl0000664000175400017540000000060512323721477033406 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 45 } } nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-resp.xml.tpl0000664000175400017540000000100212323721477033225 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 10 100 128 51200 20 45 nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json.tpl0000664000175400017540000000064212323721477034504 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "id": "fake_tenant", "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 10, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/api_samples/os-quota-sets/quotas-update-post-req.json.tpl0000664000175400017540000000007312323721477033223 0ustar jenkinsjenkins00000000000000{ "quota_set": { "security_groups": 45 } } nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/0000775000175400017540000000000012323722546026704 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-associate-host-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-associate-host-req.xml.t0000664000175400017540000000012112323721477035066 0ustar jenkinsjenkins00000000000000 %(host)s ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req0000664000175400017540000000004512323721477035223 0ustar jenkinsjenkins00000000000000{ "disassociate_project": null } ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.js0000664000175400017540000000004212323721477035142 0ustar jenkinsjenkins00000000000000{ "disassociate_host": null } nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-req.xml.tpl0000664000175400017540000000002012323721477035145 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req0000664000175400017540000000003012323721477035215 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.xm0000664000175400017540000000002512323721477035153 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-associate-host-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-associate-host-req.json.0000664000175400017540000000004512323721477035060 0ustar jenkinsjenkins00000000000000{ "associate_host": "%(host)s" } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-req.json.tp0000664000175400017540000000003512323721477035150 0ustar jenkinsjenkins00000000000000{ "disassociate": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/0000775000175400017540000000000012323722546025605 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/server-post-resp.xml.tpl0000664000175400017540000000053212323721477032367 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unpause.xml.tpl0000664000175400017540000000006712323721477033336 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-backup-server.json.tpl0000664000175400017540000000016212323721477034574 0ustar jenkinsjenkins00000000000000{ "createBackup": { "name": "Backup 1", "backup_type": "daily", "rotation": 1 } } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-network.json.tpl0000664000175400017540000000003512323721477034633 0ustar jenkinsjenkins00000000000000{ "resetNetwork": null } ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-server-state.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-server-state.json0000664000175400017540000000007312323721477034772 0ustar jenkinsjenkins00000000000000{ "os-resetState": { "state": "active" } } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-pause.json.tpl0000664000175400017540000000002612323721477033137 0ustar jenkinsjenkins00000000000000{ "pause": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-resume.xml.tpl0000664000175400017540000000006612323721477033155 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/server-post-req.xml.tpl0000664000175400017540000000155012323721477032206 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-server-state.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-server-state.xml.0000664000175400017540000000015612323721477034701 0ustar jenkinsjenkins00000000000000 active nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-pause.xml.tpl0000664000175400017540000000006412323721477032770 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-network.xml.tpl0000664000175400017540000000007412323721477034465 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-lock-server.xml.tpl0000664000175400017540000000006412323721477034107 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-lock-server.json.tpl0000664000175400017540000000002512323721477034255 0ustar jenkinsjenkins00000000000000{ "lock": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/server-post-req.json.tpl0000664000175400017540000000145312323721477032361 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-suspend.xml.tpl0000664000175400017540000000006712323721477033337 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-inject-network-info.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-inject-network-info.xml0000664000175400017540000000010112323721477034741 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-inject-network-info.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-inject-network-info.jso0000664000175400017540000000004212323721477034740 0ustar jenkinsjenkins00000000000000{ "injectNetworkInfo": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unlock-server.json.tpl0000664000175400017540000000002712323721477034622 0ustar jenkinsjenkins00000000000000{ "unlock": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unpause.json.tpl0000664000175400017540000000003012323721477033475 0ustar jenkinsjenkins00000000000000{ "unpause": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/server-post-resp.json.tpl0000664000175400017540000000055612323721477032546 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-migrate.xml.tpl0000664000175400017540000000006712323721477033306 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-suspend.json.tpl0000664000175400017540000000003012323721477033476 0ustar jenkinsjenkins00000000000000{ "suspend": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-migrate.json.tpl0000664000175400017540000000003012323721477033445 0ustar jenkinsjenkins00000000000000{ "migrate": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-resume.json.tpl0000664000175400017540000000002712323721477033323 0ustar jenkinsjenkins00000000000000{ "resume": null } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-live-migrate.json.tpl0000664000175400017540000000020612323721477034407 0ustar jenkinsjenkins00000000000000{ "os-migrateLive": { "host": "%(hostname)s", "block_migration": false, "disk_over_commit": false } } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-live-migrate.xml.tpl0000664000175400017540000000033112323721477034235 0ustar jenkinsjenkins00000000000000 %(hostname)s false false nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-state.json.tpl0000664000175400017540000000007312323721477034264 0ustar jenkinsjenkins00000000000000{ 'os-resetState': { 'state': 'active' } } nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-reset-state.xml.tpl0000664000175400017540000000015612323721477034115 0ustar jenkinsjenkins00000000000000 active nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-unlock-server.xml.tpl0000664000175400017540000000006612323721477034454 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-admin-actions/admin-actions-backup-server.xml.tpl0000664000175400017540000000026412323721477034426 0ustar jenkinsjenkins00000000000000 Backup 1 daily 1 nova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/0000775000175400017540000000000012323722546030076 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000016700000000000011221 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index0000664000175400017540000000067512323721477035102 0ustar jenkinsjenkins00000000000000{ "instance_usage_audit_logs": { "hosts_not_run": [ "%(hostid)s" ], "log": {}, "num_hosts": 1, "num_hosts_done": 0, "num_hosts_not_run": 1, "num_hosts_running": 0, "overall_status": "0 of 1 hosts done. 0 errors.", "period_beginning": "%(timestamp)s", "period_ending": "%(timestamp)s", "total_errors": 0, "total_instances": 0 } } ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-0000664000175400017540000000067412323721477035027 0ustar jenkinsjenkins00000000000000{ "instance_usage_audit_log": { "hosts_not_run": [ "%(hostid)s" ], "log": {}, "num_hosts": 1, "num_hosts_done": 0, "num_hosts_not_run": 1, "num_hosts_running": 0, "overall_status": "0 of 1 hosts done. 0 errors.", "period_beginning": "%(timestamp)s", "period_ending": "%(timestamp)s", "total_errors": 0, "total_instances": 0 } } ././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-show-0000664000175400017540000000105212323721477035016 0ustar jenkinsjenkins00000000000000 0 0 0 0 1 %(hostid)s 0 of 1 hosts done. 0 errors. %(timestamp)s %(timestamp)s 1 ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index-get-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-instance_usage_audit_log/inst-usage-audit-log-index0000664000175400017540000000105412323721477035072 0ustar jenkinsjenkins00000000000000 0 0 0 0 1 %(hostid)s 0 of 1 hosts done. 0 errors. %(timestamp)s %(timestamp)s 1 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/0000775000175400017540000000000012323722546024551 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-volumes/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031333 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshots-detail-resp.xml.tpl0000664000175400017540000000076612323721477032335 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-index-resp.json.tpl0000664000175400017540000000122112323721477032425 0ustar jenkinsjenkins00000000000000{ "volumes": [ { "attachments": [ { "device": "/", "id": "%(uuid)s", "serverId": "%(uuid)s", "volumeId": "%(uuid)s" } ], "availabilityZone": "zone1:host1", "createdAt": "%(timestamp)s", "displayDescription": "%(volume_desc)s", "displayName": "%(volume_name)s", "id": "%(uuid)s", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl0000664000175400017540000000035112323721477032141 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshots-detail-resp.json.tpl0000664000175400017540000000151712323721477032501 0ustar jenkinsjenkins00000000000000{ "snapshots": [ { "createdAt": "%(timestamp)s", "displayDescription": "Default description", "displayName": "Default name", "id": 100, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "%(timestamp)s", "displayDescription": "Default description", "displayName": "Default name", "id": 101, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "%(timestamp)s", "displayDescription": "Default description", "displayName": "Default name", "id": 102, "size": 100, "status": "available", "volumeId": 12 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/volume-attachment-detail-resp.json.tpl0000664000175400017540000000032312323721477034106 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "device": "/dev/sdd", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "%(uuid)s", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/volume-attachment-detail-resp.xml.tpl0000664000175400017540000000027312323721477033741 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/server-post-req.xml.tpl0000664000175400017540000000155012323721477031152 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshots-list-resp.json.tpl0000664000175400017540000000144212323721477032207 0ustar jenkinsjenkins00000000000000{ "snapshots": [ { "createdAt": "%(timestamp)s", "displayDescription": "%(text)s", "displayName": "%(text)s", "id": 100, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "%(timestamp)s", "displayDescription": "%(text)s", "displayName": "%(text)s", "id": 101, "size": 100, "status": "available", "volumeId": 12 }, { "createdAt": "%(timestamp)s", "displayDescription": "%(text)s", "displayName": "%(text)s", "id": 102, "size": 100, "status": "available", "volumeId": 12 } ] } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-req.json.tpl0000664000175400017540000000015012323721477033522 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "volumeId": "%(volume_id)s", "device": "%(device)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/list-volume-attachments-resp.xml.tpl0000664000175400017540000000057412323721477033641 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-resp.json.tpl0000664000175400017540000000024712323721477033713 0ustar jenkinsjenkins00000000000000{ "volumeAttachment": { "device": "%(device)s", "id": "%(volume_id)s", "serverId": "%(uuid)s", "volumeId": "%(volume_id)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-post-req.xml.tpl0000664000175400017540000000024012323721477031750 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-req.xml.tpl0000664000175400017540000000015112323721477033352 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl0000664000175400017540000000040512323721477032312 0ustar jenkinsjenkins00000000000000{ "snapshot": { "createdAt": "%(timestamp)s", "displayDescription": "%(description)s", "displayName": "%(snapshot_name)s", "id": 100, "size": 100, "status": "available", "volumeId": "%(uuid)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshots-list-resp.xml.tpl0000664000175400017540000000076612323721477032046 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/server-post-req.json.tpl0000664000175400017540000000145312323721477031325 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshots-show-resp.xml.tpl0000664000175400017540000000030712323721477032042 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-detail-resp.xml.tpl0000664000175400017540000000065012323721477032414 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/server-post-resp.json.tpl0000664000175400017540000000055612323721477031512 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-get-resp.xml.tpl0000664000175400017540000000060712323721477031733 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-post-req.json.tpl0000664000175400017540000000027312323721477032127 0ustar jenkinsjenkins00000000000000{ "volume": { "availability_zone": "zone1:host1", "display_name": "%(volume_name)s", "display_description": "%(volume_desc)s", "size": 100 } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/list-volume-attachments-resp.json.tpl0000664000175400017540000000071412323721477034006 0ustar jenkinsjenkins00000000000000{ "volumeAttachments": [ { "device": "/dev/sdd", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "%(uuid)s", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" }, { "device": "/dev/sdc", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f804", "serverId": "%(uuid)s", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f804" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-index-resp.xml.tpl0000664000175400017540000000065012323721477032261 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-post-resp.json.tpl0000664000175400017540000000101512323721477032304 0ustar jenkinsjenkins00000000000000{ "volume": { "status": "in-use", "displayDescription": "%(volume_desc)s", "availabilityZone": "zone1:host1", "displayName": "%(volume_name)s", "attachments": [ { "device": "/", "serverId": "%(uuid)s", "id": "%(uuid)s", "volumeId": "%(uuid)s" } ], "volumeType": "Backup", "snapshotId": null, "metadata": {}, "id": "%(uuid)s", "createdAt": "%(timestamp)s", "size": 100 } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshots-show-resp.json.tpl0000664000175400017540000000037712323721477032222 0ustar jenkinsjenkins00000000000000{ "snapshot": { "createdAt": "%(timestamp)s", "displayDescription": "%(description)s", "displayName": "%(snapshot_name)s", "id": "100", "size": 100, "status": "available", "volumeId": 12 } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-post-resp.xml.tpl0000664000175400017540000000060712323721477032141 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-get-resp.json.tpl0000664000175400017540000000106412323721477032102 0ustar jenkinsjenkins00000000000000{ "volume": { "attachments": [ { "device": "/", "id": "%(uuid)s", "serverId": "%(uuid)s", "volumeId": "%(uuid)s" } ], "availabilityZone": "zone1:host1", "createdAt": "%(timestamp)s", "displayDescription": "%(volume_desc)s", "displayName": "%(volume_name)s", "id": "%(uuid)s", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/os-volumes-detail-resp.json.tpl0000664000175400017540000000122112323721477032560 0ustar jenkinsjenkins00000000000000{ "volumes": [ { "attachments": [ { "device": "/", "id": "%(uuid)s", "serverId": "%(uuid)s", "volumeId": "%(uuid)s" } ], "availabilityZone": "zone1:host1", "createdAt": "%(timestamp)s", "displayDescription": "%(volume_desc)s", "displayName": "%(volume_name)s", "id": "%(uuid)s", "metadata": {}, "size": 100, "snapshotId": null, "status": "in-use", "volumeType": "Backup" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/attach-volume-to-server-resp.xml.tpl0000664000175400017540000000021712323721477033537 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshot-create-req.json.tpl0000664000175400017540000000027112323721477032131 0ustar jenkinsjenkins00000000000000{ "snapshot": { "display_name": "%(snapshot_name)s", "display_description": "%(description)s", "volume_id": "%(volume_id)s", "force": false } } nova-2014.1/nova/tests/integrated/api_samples/os-volumes/snapshot-create-req.xml.tpl0000664000175400017540000000036612323721477031765 0ustar jenkinsjenkins00000000000000 %(snapshot_name)s %(description)s %(volume_id)s false nova-2014.1/nova/tests/integrated/api_samples/image-meta-key-get.json.tpl0000664000175400017540000000006712323721477027507 0ustar jenkinsjenkins00000000000000{ "meta": { "kernel_id": "nokernel" } }nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/0000775000175400017540000000000012323722546027132 5ustar jenkinsjenkins00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.json.0000664000175400017540000000114712323721477034714 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": %(node_id)s, "instance_uuid": null, "interfaces": [ { "address": "%(address)s", "datapath_id": null, "id": %(interface_id)s, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "%(node_uuid)s" } } ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-add0000664000175400017540000000064412323721477034702 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.json.0000664000175400017540000000132012323721477034700 0ustar jenkinsjenkins00000000000000{ "nodes": [ { "cpus": 8, "id": %(node_id)s, "instance_uuid": null, "interfaces": [ { "address": "%(address)s", "datapath_id": null, "id": %(interface_id)s, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "%(node_uuid)s" } ] } ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-r0000664000175400017540000000010212323721477034652 0ustar jenkinsjenkins00000000000000{ "add_interface": { "address": "%(address)s" } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-list-resp.xml.t0000664000175400017540000000067712323721477034731 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-remove-interfac0000664000175400017540000000012612323721477035021 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-req.json0000664000175400017540000000037712323721477034743 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "terminal_port": 8000 } } ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-r0000664000175400017540000000012312323721477034655 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016300000000000011215 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-remove-interface-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-remove-interfac0000664000175400017540000000010512323721477035016 0ustar jenkinsjenkins00000000000000{ "remove_interface": { "address": "%(address)s" } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-show-resp.xml.t0000664000175400017540000000064412323721477034730 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016700000000000011221 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-add0000664000175400017540000000114712323721477034701 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": %(node_id)s, "instance_uuid": null, "interfaces": [ { "address": "%(address)s", "datapath_id": null, "id": %(interface_id)s, "port_no": null } ], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "%(node_uuid)s" } } ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-r0000664000175400017540000000023212323721477034656 0ustar jenkinsjenkins00000000000000{ "interface": { "id": %(interface_id)s, "address": "aa:aa:aa:aa:aa:aa", "datapath_id": null, "port_no": null } } ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-add0000664000175400017540000000045212323721477034677 0ustar jenkinsjenkins00000000000000{ "node": { "service_host": "host", "cpus": 8, "memory_mb": 8192, "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", "prov_mac_address": "%(address)s", "terminal_port": 8000 } } ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.json.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.jso0000664000175400017540000000065312323721477034744 0ustar jenkinsjenkins00000000000000{ "node": { "cpus": 8, "id": %(node_id)s, "instance_uuid": null, "interfaces": [], "local_gb": 128, "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", "pxe_config_path": null, "service_host": "host", "task_state": null, "terminal_port": 8000, "updated_at": null, "uuid": "%(node_uuid)s" } } ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-add-interface-r0000664000175400017540000000023112323721477034655 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-address-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-with-add0000664000175400017540000000035112323721477034675 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-req.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-req.xml.0000664000175400017540000000030612323721477034640 0ustar jenkinsjenkins00000000000000 ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.xml.tplnova-2014.1/nova/tests/integrated/api_samples/os-baremetal-ext-status/baremetal-node-create-resp.xml0000664000175400017540000000046612323721477034753 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/server-action-resize.xml.tpl0000664000175400017540000000017712323721477030047 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/0000775000175400017540000000000012323722546025702 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-post-req.xml.tpl0000664000175400017540000000014712323721477033621 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-post-resp.json.tpl0000664000175400017540000000025212323721477034151 0ustar jenkinsjenkins00000000000000{ "server_group": { "id": "%(id)s", "name": "%(name)s", "policies": ["anti-affinity"], "members": [], "metadata": {} } } nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-get-resp.xml.tpl0000664000175400017540000000042112323721477033570 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-post-req.json.tpl0000664000175400017540000000014212323721477033765 0ustar jenkinsjenkins00000000000000{ "server_group": { "name": "%(name)s", "policies": ["anti-affinity"] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-get-resp.json.tpl0000664000175400017540000000025112323721477033742 0ustar jenkinsjenkins00000000000000{ "server_group": { "id": "%(id)s", "name": "%(name)s", "policies": ["anti-affinity"], "members": [], "metadata": {} } } nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-post-resp.xml.tpl0000664000175400017540000000042112323721477033776 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-list-resp.json.tpl0000664000175400017540000000031512323721477034137 0ustar jenkinsjenkins00000000000000{ "server_groups": [ { "id": "%(id)s", "name": "test", "policies": ["anti-affinity"], "members": [], "metadata": {} } ] } nova-2014.1/nova/tests/integrated/api_samples/os-server-groups/server-groups-list-resp.xml.tpl0000664000175400017540000000046412323721477033773 0ustar jenkinsjenkins00000000000000 anti-affinity nova-2014.1/nova/tests/integrated/api_samples/os-extended-services-delete/0000775000175400017540000000000012323722546027740 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-services-delete/services-get-resp.xml.tpl0000664000175400017540000000107112323721477034630 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-extended-services-delete/services-get-resp.json.tpl0000664000175400017540000000175212323721477035007 0ustar jenkinsjenkins00000000000000{ "services": [ { "id": 1, "binary": "nova-scheduler", "host": "host1", "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "id": 2, "binary": "nova-compute", "host": "host1", "state": "up", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" }, { "id": 3, "binary": "nova-scheduler", "host": "host2", "state": "down", "status": "enabled", "updated_at": "%(timestamp)s", "zone": "internal" }, { "id": 4, "binary": "nova-compute", "host": "host2", "state": "down", "status": "disabled", "updated_at": "%(timestamp)s", "zone": "nova" } ] } nova-2014.1/nova/tests/integrated/api_samples/server-metadata-resp.xml.tpl0000664000175400017540000000017412323721477030017 0ustar jenkinsjenkins00000000000000 %(value)s nova-2014.1/nova/tests/integrated/api_samples/all_extensions/0000775000175400017540000000000012323722546025467 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-post-resp.xml.tpl0000664000175400017540000000101312323721477032244 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-get-resp.xml.tpl0000664000175400017540000000407712323721477032053 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-reboot.xml.tpl0000664000175400017540000000017412323721477033064 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/servers-details-resp.xml.tpl0000664000175400017540000000532512323721477033101 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl0000664000175400017540000004264012323721477032742 0ustar jenkinsjenkins00000000000000 %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s Attach interface support. %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s Fixed IPs support. %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s Support hiding server addresses in certain states. %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s %(text)s nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-post-req.xml.tpl0000664000175400017540000000155012323721477032070 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-rebuild.json.tpl0000664000175400017540000000152212323721477033367 0ustar jenkinsjenkins00000000000000{ "rebuild" : { "imageRef" : "%(host)s/v2/32278/images/%(uuid)s", "name" : "%(name)s", "adminPass" : "%(pass)s", "accessIPv4" : "%(ip)s", "accessIPv6" : "%(ip6)s", "metadata" : { "meta var" : "meta val" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-rebuild.xml.tpl0000664000175400017540000000161512323721477033221 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/all_extensions/servers-details-resp.json.tpl0000664000175400017540000000461512323721477033253 0ustar jenkinsjenkins00000000000000{ "servers": [ { "OS-DCF:diskConfig": "AUTO", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "%(compute_host)s", "OS-EXT-SRV-ATTR:hypervisor_hostname": "%(hypervisor_hostname)s", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "%(timestamp)s", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS:type": "fixed", "addr": "%(ip)s", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "%(mac_addr)s" } ] }, "config_drive": "", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "os-extended-volumes:volumes_attached": [] } ] } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/servers-list-resp.xml.tpl0000664000175400017540000000054312323721477032424 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-createimage.json.tpl0000664000175400017540000000021112323721477034201 0ustar jenkinsjenkins00000000000000{ "createImage" : { "name" : "%(name)s", "metadata": { "%(meta_var)s": "%(meta_val)s" } } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-rebuild-resp.xml.tpl0000664000175400017540000000222712323721477034170 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/servers-list-resp.json.tpl0000664000175400017540000000065512323721477032601 0ustar jenkinsjenkins00000000000000{ "servers": [ { "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "name": "new-server-test" } ] } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/flavors-list-resp.xml.tpl0000664000175400017540000000235112323721477032406 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-revertresize.xml.tpl0000664000175400017540000000015612323721477034323 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-changepassword.json.tpl0000664000175400017540000000011012323721477034741 0ustar jenkinsjenkins00000000000000{ "changePassword" : { "adminPass" : "%(password)s" } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-changepassword.xml.tpl0000664000175400017540000000021512323721477034576 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-resize.json.tpl0000664000175400017540000000007212323721477033241 0ustar jenkinsjenkins00000000000000{ "resize" : { "flavorRef" : "%(id)s" } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-rebuild-resp.json.tpl0000664000175400017540000000262012323721477034336 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "accessIPv4": "%(ip)s", "accessIPv6": "%(ip6)s", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "adminPass": "%(password)s", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "meta var": "meta val" }, "name": "%(name)s", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-post-req.json.tpl0000664000175400017540000000145312323721477032243 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl0000664000175400017540000005715712323721477033124 0ustar jenkinsjenkins00000000000000{ "extensions": [ { "alias": "NMN", "description": "%(text)s", "links": [], "name": "Multinic", "namespace": "http://docs.openstack.org/compute/ext/multinic/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-DCF", "description": "%(text)s", "links": [], "name": "DiskConfig", "namespace": "http://docs.openstack.org/compute/ext/disk_config/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-AZ", "description": "%(text)s", "links": [], "name": "ExtendedAvailabilityZone", "namespace": "http://docs.openstack.org/compute/ext/extended_availability_zone/api/v2", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-IPS", "description": "%(text)s", "links": [], "name": "ExtendedIps", "namespace": "http://docs.openstack.org/compute/ext/extended_ips/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-IPS-MAC", "description": "%(text)s", "links": [], "name": "ExtendedIpsMac", "namespace": "http://docs.openstack.org/compute/ext/extended_ips_mac/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-IMG-SIZE", "description": "%(text)s", "links": [], "name": "ImageSize", "namespace": "http://docs.openstack.org/compute/ext/image_size/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-SRV-ATTR", "description": "%(text)s", "links": [], "name": "ExtendedServerAttributes", "namespace": "http://docs.openstack.org/compute/ext/extended_status/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-STS", "description": "%(text)s", "links": [], "name": "ExtendedStatus", "namespace": "http://docs.openstack.org/compute/ext/extended_status/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-extended-volumes", "description": "%(text)s", "links": [], "name": "ExtendedVolumes", "namespace": "http://docs.openstack.org/compute/ext/extended_volumes/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-EXT-VIF-NET", "description": "%(text)s", "links": [], "name": "ExtendedVIFNet", "namespace": "http://docs.openstack.org/compute/ext/extended-virtual-interfaces-net/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-FLV-DISABLED", "description": "%(text)s", "links": [], "name": "FlavorDisabled", "namespace": "http://docs.openstack.org/compute/ext/flavor_disabled/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-FLV-EXT-DATA", "description": "%(text)s", "links": [], "name": "FlavorExtraData", "namespace": "http://docs.openstack.org/compute/ext/flavor_extra_data/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "OS-SRV-USG", "description": "%(text)s", "links": [], "name": "ServerUsage", "namespace": "http://docs.openstack.org/compute/ext/server_usage/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-console-auth-tokens", "description": "%(text)s", "links": [], "name": "ConsoleAuthTokens", "namespace": "http://docs.openstack.org/compute/ext/consoles-auth-tokens/api/v2", "updated": "%(timestamp)s" }, { "alias": "OS-SCH-HNT", "description": "%(text)s", "links": [], "name": "SchedulerHints", "namespace": "http://docs.openstack.org/compute/ext/scheduler-hints/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-admin-actions", "description": "%(text)s", "links": [], "name": "AdminActions", "namespace": "http://docs.openstack.org/compute/ext/admin-actions/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-aggregates", "description": "%(text)s", "links": [], "name": "Aggregates", "namespace": "http://docs.openstack.org/compute/ext/aggregates/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-agents", "description": "%(text)s", "links": [], "name": "Agents", "namespace": "http://docs.openstack.org/compute/ext/agents/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-assisted-volume-snapshots", "description": "%(text)s", "links": [], "name": "AssistedVolumeSnapshots", "namespace": "http://docs.openstack.org/compute/ext/assisted-volume-snapshots/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-attach-interfaces", "description": "Attach interface support.", "links": [], "name": "AttachInterfaces", "namespace": "http://docs.openstack.org/compute/ext/interfaces/api/v1.1", "updated": "2012-07-22T00:00:00+00:00" }, { "alias": "os-availability-zone", "description": "%(text)s", "links": [], "name": "AvailabilityZone", "namespace": "http://docs.openstack.org/compute/ext/availabilityzone/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-baremetal-nodes", "description": "%(text)s", "links": [], "name": "BareMetalNodes", "namespace": "http://docs.openstack.org/compute/ext/baremetal_nodes/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-block-device-mapping-v2-boot", "description": "%(text)s", "links": [], "name": "BlockDeviceMappingV2Boot", "namespace": "http://docs.openstack.org/compute/ext/block_device_mapping_v2_boot/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-cells", "description": "%(text)s", "links": [], "name": "Cells", "namespace": "http://docs.openstack.org/compute/ext/cells/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-cell-capacities", "description": "%(text)s", "links": [], "name": "CellCapacities", "namespace": "http://docs.openstack.org/compute/ext/cell_capacities/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-certificates", "description": "%(text)s", "links": [], "name": "Certificates", "namespace": "http://docs.openstack.org/compute/ext/certificates/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-cloudpipe", "description": "%(text)s", "links": [], "name": "Cloudpipe", "namespace": "http://docs.openstack.org/compute/ext/cloudpipe/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-cloudpipe-update", "description": "%(text)s", "links": [], "name": "CloudpipeUpdate", "namespace": "http://docs.openstack.org/compute/ext/cloudpipe-update/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-config-drive", "description": "%(text)s", "links": [], "name": "ConfigDrive", "namespace": "http://docs.openstack.org/compute/ext/config_drive/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-console-output", "description": "%(text)s", "links": [], "name": "ConsoleOutput", "namespace": "http://docs.openstack.org/compute/ext/os-console-output/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-consoles", "description": "%(text)s", "links": [], "name": "Consoles", "namespace": "http://docs.openstack.org/compute/ext/os-consoles/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-create-server-ext", "description": "%(text)s", "links": [], "name": "Createserverext", "namespace": "http://docs.openstack.org/compute/ext/createserverext/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-deferred-delete", "description": "%(text)s", "links": [], "name": "DeferredDelete", "namespace": "http://docs.openstack.org/compute/ext/deferred-delete/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-evacuate", "description": "%(text)s", "links": [], "name": "Evacuate", "namespace": "http://docs.openstack.org/compute/ext/evacuate/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-extended-floating-ips", "description": "%(text)s", "links": [], "name": "ExtendedFloatingIps", "namespace": "http://docs.openstack.org/compute/ext/extended_floating_ips/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-fixed-ips", "description": "Fixed IPs support.", "links": [], "name": "FixedIPs", "namespace": "http://docs.openstack.org/compute/ext/fixed_ips/api/v2", "updated": "2012-10-18T13:25:27-06:00" }, { "alias": "os-flavor-access", "description": "%(text)s", "links": [], "name": "FlavorAccess", "namespace": "http://docs.openstack.org/compute/ext/flavor_access/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-flavor-extra-specs", "description": "%(text)s", "links": [], "name": "FlavorExtraSpecs", "namespace": "http://docs.openstack.org/compute/ext/flavor_extra_specs/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-flavor-manage", "description": "%(text)s", "links": [], "name": "FlavorManage", "namespace": "http://docs.openstack.org/compute/ext/flavor_manage/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-flavor-rxtx", "description": "%(text)s", "links": [], "name": "FlavorRxtx", "namespace": "http://docs.openstack.org/compute/ext/flavor_rxtx/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-flavor-swap", "description": "%(text)s", "links": [], "name": "FlavorSwap", "namespace": "http://docs.openstack.org/compute/ext/flavor_swap/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-floating-ip-dns", "description": "%(text)s", "links": [], "name": "FloatingIpDns", "namespace": "http://docs.openstack.org/ext/floating_ip_dns/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-floating-ip-pools", "description": "%(text)s", "links": [], "name": "FloatingIpPools", "namespace": "http://docs.openstack.org/compute/ext/floating_ip_pools/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-floating-ips", "description": "%(text)s", "links": [], "name": "FloatingIps", "namespace": "http://docs.openstack.org/compute/ext/floating_ips/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-floating-ips-bulk", "description": "%(text)s", "links": [], "name": "FloatingIpsBulk", "namespace": "http://docs.openstack.org/compute/ext/floating_ips_bulk/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-hide-server-addresses", "description": "Support hiding server addresses in certain states.", "links": [], "name": "HideServerAddresses", "namespace": "http://docs.openstack.org/compute/ext/hide_server_addresses/api/v1.1", "updated": "2012-12-11T00:00:00+00:00" }, { "alias": "os-hosts", "description": "%(text)s", "links": [], "name": "Hosts", "namespace": "http://docs.openstack.org/compute/ext/hosts/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-services", "description": "%(text)s", "links": [], "name": "Services", "namespace": "http://docs.openstack.org/compute/ext/services/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-extended-services", "description": "%(text)s", "links": [], "name": "ExtendedServices", "namespace": "http://docs.openstack.org/compute/ext/extended_services/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-fping", "description": "%(text)s", "links": [], "name": "Fping", "namespace": "http://docs.openstack.org/compute/ext/fping/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-hypervisors", "description": "%(text)s", "links": [], "name": "Hypervisors", "namespace": "http://docs.openstack.org/compute/ext/hypervisors/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-extended-hypervisors", "description": "%(text)s", "links": [], "name": "ExtendedHypervisors", "namespace": "http://docs.openstack.org/compute/ext/extended_hypervisors/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-server-external-events", "description": "%(text)s", "links": [], "name": "ServerExternalEvents", "namespace": "http://docs.openstack.org/compute/ext/server-external-events/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-instance_usage_audit_log", "description": "%(text)s", "links": [], "name": "OSInstanceUsageAuditLog", "namespace": "http://docs.openstack.org/ext/services/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-keypairs", "description": "%(text)s", "links": [], "name": "Keypairs", "namespace": "http://docs.openstack.org/compute/ext/keypairs/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-multiple-create", "description": "%(text)s", "links": [], "name": "MultipleCreate", "namespace": "http://docs.openstack.org/compute/ext/multiplecreate/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-networks", "description": "%(text)s", "links": [], "name": "Networks", "namespace": "http://docs.openstack.org/compute/ext/os-networks/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-tenant-networks", "description": "%(text)s", "links": [], "name": "OSTenantNetworks", "namespace": "http://docs.openstack.org/compute/ext/os-tenant-networks/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-networks-associate", "description": "%(text)s", "links": [], "name": "NetworkAssociationSupport", "namespace": "http://docs.openstack.org/compute/ext/networks_associate/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-extended-quotas", "description": "%(text)s", "links": [], "name": "ExtendedQuotas", "namespace": "http://docs.openstack.org/compute/ext/extended_quotas/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-quota-sets", "description": "%(text)s", "links": [], "name": "Quotas", "namespace": "http://docs.openstack.org/compute/ext/quotas-sets/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-user-quotas", "description": "%(text)s", "links": [], "name": "UserQuotas", "namespace": "http://docs.openstack.org/compute/ext/user_quotas/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-rescue", "description": "%(text)s", "links": [], "name": "Rescue", "namespace": "http://docs.openstack.org/compute/ext/rescue/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-security-group-default-rules", "description": "%(text)s", "links": [], "name": "SecurityGroupDefaultRules", "namespace": "http://docs.openstack.org/compute/ext/securitygroupdefaultrules/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-security-groups", "description": "%(text)s", "links": [], "name": "SecurityGroups", "namespace": "http://docs.openstack.org/compute/ext/securitygroups/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-server-diagnostics", "description": "%(text)s", "links": [], "name": "ServerDiagnostics", "namespace": "http://docs.openstack.org/compute/ext/server-diagnostics/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-server-password", "description": "%(text)s", "links": [], "name": "ServerPassword", "namespace": "http://docs.openstack.org/compute/ext/server-password/api/v2", "updated": "2012-11-29T00:00:00+00:00" }, { "alias": "os-server-start-stop", "description": "%(text)s", "links": [], "name": "ServerStartStop", "namespace": "http://docs.openstack.org/compute/ext/servers/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-shelve", "description": "%(text)s", "links": [], "name": "Shelve", "namespace": "http://docs.openstack.org/compute/ext/shelve/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-simple-tenant-usage", "description": "%(text)s", "links": [], "name": "SimpleTenantUsage", "namespace": "http://docs.openstack.org/compute/ext/os-simple-tenant-usage/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-used-limits", "description": "%(text)s", "links": [], "name": "UsedLimits", "namespace": "http://docs.openstack.org/compute/ext/used_limits/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-used-limits-for-admin", "description": "%(text)s", "links": [], "name": "UsedLimitsForAdmin", "namespace": "http://docs.openstack.org/compute/ext/used_limits_for_admin/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-user-data", "description": "%(text)s", "links": [], "name": "UserData", "namespace": "http://docs.openstack.org/compute/ext/userdata/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-virtual-interfaces", "description": "%(text)s", "links": [], "name": "VirtualInterfaces", "namespace": "http://docs.openstack.org/compute/ext/virtual_interfaces/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-volume-attachment-update", "description": "%(text)s", "links": [], "name": "VolumeAttachmentUpdate", "namespace": "http://docs.openstack.org/compute/ext/os-volume-attachment-update/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-volumes", "description": "%(text)s", "links": [], "name": "Volumes", "namespace": "http://docs.openstack.org/compute/ext/volumes/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-instance-actions", "description": "%(text)s", "links": [], "name": "InstanceActions", "namespace": "http://docs.openstack.org/compute/ext/instance-actions/api/v1.1", "updated": "%(timestamp)s" }, { "alias": "os-migrations", "description": "%(text)s", "links": [], "name": "Migrations", "namespace": "http://docs.openstack.org/compute/ext/migrations/api/v2.0", "updated": "%(timestamp)s" }, { "alias": "os-baremetal-ext-status", "description": "%(text)s", "links": [], "name": "BareMetalExtStatus", "namespace": "http://docs.openstack.org/compute/ext/baremetal_ext_status/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-preserve-ephemeral-rebuild", "description": "%(text)s", "links": [], "name": "PreserveEphemeralOnRebuild", "namespace": "http://docs.openstack.org/compute/ext/preserve_ephemeral_rebuild/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-extended-services-delete", "description": "%(text)s", "links": [], "name": "ExtendedServicesDelete", "namespace": "http://docs.openstack.org/compute/ext/extended_services_delete/api/v2", "updated": "%(timestamp)s" }, { "alias": "os-server-groups", "description": "%(text)s", "links": [], "name": "ServerGroups", "namespace": "http://docs.openstack.org/compute/ext/servergroups/api/v2", "updated": "%(timestamp)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/flavor-get-resp.xml.tpl0000664000175400017540000000136312323721477032031 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/flavors-list-resp.json.tpl0000664000175400017540000000412312323721477032556 0ustar jenkinsjenkins00000000000000{ "flavors": [ { "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny" }, { "id": "2", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/2", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/2", "rel": "bookmark" } ], "name": "m1.small" }, { "id": "3", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/3", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/3", "rel": "bookmark" } ], "name": "m1.medium" }, { "id": "4", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/4", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/4", "rel": "bookmark" } ], "name": "m1.large" }, { "id": "5", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/5", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/5", "rel": "bookmark" } ], "name": "m1.xlarge" } ] }nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-post-resp.json.tpl0000664000175400017540000000077112323721477032427 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "security_groups": [ { "name": "default" } ] } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-createimage.xml.tpl0000664000175400017540000000034312323721477034036 0ustar jenkinsjenkins00000000000000 %(meta_val)s nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-revertresize.json.tpl0000664000175400017540000000003612323721477034471 0ustar jenkinsjenkins00000000000000{ "revertResize" : null } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/flavor-get-resp.json.tpl0000664000175400017540000000114312323721477032176 0ustar jenkinsjenkins00000000000000{ "flavor": { "OS-FLV-DISABLED:disabled": false, "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 1, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/openstack/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/openstack/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "os-flavor-access:is_public": true, "ram": 512, "rxtx_factor": 1.0, "swap": "", "vcpus": 1 } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-reboot.json.tpl0000664000175400017540000000006712323721477033236 0ustar jenkinsjenkins00000000000000{ "reboot" : { "type" : "%(type)s" } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-confirmresize.json.tpl0000664000175400017540000000003712323721477034620 0ustar jenkinsjenkins00000000000000{ "confirmResize" : null } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-get-resp.json.tpl0000664000175400017540000000414012323721477032213 0ustar jenkinsjenkins00000000000000{ "server": { "OS-DCF:diskConfig": "AUTO", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "%(compute_host)s", "OS-EXT-SRV-ATTR:hypervisor_hostname": "%(hypervisor_hostname)s", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "%(timestamp)s", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "OS-EXT-IPS:type": "fixed", "addr": "%(ip)s", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "%(mac_addr)s" } ] }, "config_drive": "", "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake", "os-extended-volumes:volumes_attached": [] } } nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-resize.xml.tpl0000664000175400017540000000017712323721477033076 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/all_extensions/server-action-confirmresize.xml.tpl0000664000175400017540000000015712323721477034452 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/0000775000175400017540000000000012323722546024065 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/server-post-resp.xml.tpl0000664000175400017540000000053212323721477030647 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/server-get-resp.xml.tpl0000664000175400017540000000200512323721477030436 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/server-post-req.xml.tpl0000664000175400017540000000155012323721477030466 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/servers-detail-resp.xml.tpl0000664000175400017540000000235212323721477031311 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/server-post-req.json.tpl0000664000175400017540000000145312323721477030641 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/server-post-resp.json.tpl0000664000175400017540000000055612323721477031026 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/servers-detail-resp.json.tpl0000664000175400017540000000317212323721477031463 0ustar jenkinsjenkins00000000000000{ "servers": [ { "status": "ACTIVE", "updated": "%(timestamp)s", "OS-SRV-USG:launched_at": "%(timestamp)s", "user_id": "fake", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "created": "%(timestamp)s", "name": "new-server-test", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "id": "%(uuid)s", "accessIPv4": "", "accessIPv6": "", "OS-SRV-USG:terminated_at": null, "tenant_id": "openstack", "progress": 0, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "metadata": { "My Server Name": "Apache1" } }] } nova-2014.1/nova/tests/integrated/api_samples/OS-SRV-USG/server-get-resp.json.tpl0000664000175400017540000000264012323721477030614 0ustar jenkinsjenkins00000000000000{ "server": { "OS-SRV-USG:launched_at": "%(timestamp)s", "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/0000775000175400017540000000000012323722546027507 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/server-post-resp.xml.tpl0000664000175400017540000000053212323721477034271 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/event-create-req.json.tpl0000664000175400017540000000024012323721477034345 0ustar jenkinsjenkins00000000000000{ "events": [ { "name": "%(name)s", "tag": "%(tag)s", "status": "%(status)s", "server_uuid": "%(uuid)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/server-post-req.xml.tpl0000664000175400017540000000155012323721477034110 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/event-create-resp.json.tpl0000664000175400017540000000031712323721477034534 0ustar jenkinsjenkins00000000000000{ "events": [ { "code": 200, "name": "%(name)s", "server_uuid": "%(uuid)s", "status": "%(status)s", "tag": "%(tag)s" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/event-create-resp.xml.tpl0000664000175400017540000000033512323721477034363 0ustar jenkinsjenkins00000000000000 %(status)s %(tag)s %(name)s %(uuid)s 200 nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/server-post-req.json.tpl0000664000175400017540000000145312323721477034263 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/server-post-resp.json.tpl0000664000175400017540000000055612323721477034450 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-server-external-events/event-create-req.xml.tpl0000664000175400017540000000033012323721477034174 0ustar jenkinsjenkins00000000000000 %(name)s %(tag)s %(status)s %(uuid)s nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/0000775000175400017540000000000012323722546023727 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-resp.xml.tpl0000664000175400017540000000053212323721477030511 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/server-get-resp.xml.tpl0000664000175400017540000000175612323721477030314 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-req.xml.tpl0000664000175400017540000000155012323721477030330 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/servers-detail-resp.xml.tpl0000664000175400017540000000204312323721477031150 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-req.json.tpl0000664000175400017540000000145312323721477030503 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/server-post-resp.json.tpl0000664000175400017540000000055612323721477030670 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/servers-detail-resp.json.tpl0000664000175400017540000000312112323721477031317 0ustar jenkinsjenkins00000000000000{ "servers": [ { "updated": "%(timestamp)s", "created": "%(timestamp)s", "OS-EXT-AZ:availability_zone": "nova", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake" } ] } nova-2014.1/nova/tests/integrated/api_samples/OS-EXT-AZ/server-get-resp.json.tpl0000664000175400017540000000256412323721477030463 0ustar jenkinsjenkins00000000000000{ "server": { "updated": "%(timestamp)s", "created": "%(timestamp)s", "OS-EXT-AZ:availability_zone": "nova", "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(uuid)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "ACTIVE", "tenant_id": "openstack", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-rescue/0000775000175400017540000000000012323722546024345 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-post-resp.xml.tpl0000664000175400017540000000053212323721477031127 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-get-resp-rescue.xml.tpl0000664000175400017540000000154112323721477032206 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-post-req.xml.tpl0000664000175400017540000000155012323721477030746 0ustar jenkinsjenkins00000000000000 Apache1 ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-unrescue-req.json.tpl0000664000175400017540000000003012323721477031753 0ustar jenkinsjenkins00000000000000{ "unrescue": null }nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-rescue-req.json.tpl0000664000175400017540000000007512323721477031421 0ustar jenkinsjenkins00000000000000{ "rescue": { "adminPass": "%(password)s" } }nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-rescue-req.xml.tpl0000664000175400017540000000020012323721477031236 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-get-resp-unrescue.xml.tpl0000664000175400017540000000155612323721477032557 0ustar jenkinsjenkins00000000000000 Apache1 nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-rescue.xml.tpl0000664000175400017540000000011212323721477030453 0ustar jenkinsjenkins00000000000000 %(password)snova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-post-req.json.tpl0000664000175400017540000000145312323721477031121 0ustar jenkinsjenkins00000000000000{ "server" : { "name" : "new-server-test", "imageRef" : "%(host)s/openstack/images/%(image_id)s", "flavorRef" : "%(host)s/openstack/flavors/1", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-post-resp.json.tpl0000664000175400017540000000055612323721477031306 0ustar jenkinsjenkins00000000000000{ "server": { "adminPass": "%(password)s", "id": "%(id)s", "links": [ { "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ] } } nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-get-resp-unrescue.json.tpl0000664000175400017540000000250312323721477032721 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "progress": 0, "status": "%(status)s", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-get-resp-rescue.json.tpl0000664000175400017540000000245412323721477032363 0ustar jenkinsjenkins00000000000000{ "server": { "accessIPv4": "", "accessIPv6": "", "addresses": { "private": [ { "addr": "%(ip)s", "version": 4 } ] }, "created": "%(timestamp)s", "flavor": { "id": "1", "links": [ { "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] }, "hostId": "%(hostid)s", "id": "%(id)s", "image": { "id": "%(uuid)s", "links": [ { "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { "href": "%(host)s/v2/openstack/servers/%(id)s", "rel": "self" }, { "href": "%(host)s/openstack/servers/%(id)s", "rel": "bookmark" } ], "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "status": "%(status)s", "tenant_id": "openstack", "updated": "%(timestamp)s", "user_id": "fake" } } nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-rescue.json.tpl0000664000175400017540000000004312323721477030627 0ustar jenkinsjenkins00000000000000{ "adminPass": "%(password)s" }nova-2014.1/nova/tests/integrated/api_samples/os-rescue/server-unrescue-req.xml.tpl0000664000175400017540000000014512323721477031611 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hosts/0000775000175400017540000000000012323722546024217 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl0000664000175400017540000000162712323721477031000 0ustar jenkinsjenkins00000000000000{ "hosts": [ { "host_name": "%(host_name)s", "service": "compute", "zone": "nova" }, { "host_name": "%(host_name)s", "service": "cert", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "network", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "scheduler", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "conductor", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "cells", "zone": "internal" }, { "host_name": "%(host_name)s", "service": "consoleauth", "zone": "internal" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-shutdown.json.tpl0000664000175400017540000000010012323721477031304 0ustar jenkinsjenkins00000000000000{ "host": "%(host_name)s", "power_action": "shutdown" } nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-req.xml.tpl0000664000175400017540000000021212323721477032364 0ustar jenkinsjenkins00000000000000 enable disable nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-startup.xml.tpl0000664000175400017540000000013312323721477030770 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-resp.json.tpl0000664000175400017540000000014412323721477032723 0ustar jenkinsjenkins00000000000000{ "host": "%(host_name)s", "maintenance_mode": "off_maintenance", "status": "enabled" } nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-resp.json.tpl0000664000175400017540000000131612323721477030414 0ustar jenkinsjenkins00000000000000{ "host": [ { "resource": { "cpu": 1, "disk_gb": 1028, "host": "%(host_name)s", "memory_mb": 8192, "project": "(total)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "%(host_name)s", "memory_mb": 512, "project": "(used_now)" } }, { "resource": { "cpu": 0, "disk_gb": 0, "host": "%(host_name)s", "memory_mb": 0, "project": "(used_max)" } } ] } nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-reboot.xml.tpl0000664000175400017540000000013212323721477030557 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-reboot.json.tpl0000664000175400017540000000007612323721477030737 0ustar jenkinsjenkins00000000000000{ "host": "%(host_name)s", "power_action": "reboot" } nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-resp.xml.tpl0000664000175400017540000000017012323721477032551 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-resp.xml.tpl0000664000175400017540000000104412323721477030241 0ustar jenkinsjenkins00000000000000 (total) 8192 %(host_name)s 1 1028 (used_now) 512 %(host_name)s 0 0 (used_max) 0 %(host_name)s 0 0 nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-startup.json.tpl0000664000175400017540000000007712323721477031150 0ustar jenkinsjenkins00000000000000{ "host": "%(host_name)s", "power_action": "startup" } nova-2014.1/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl0000664000175400017540000000104112323721477030615 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-put-maintenance-req.json.tpl0000664000175400017540000000007512323721477032544 0ustar jenkinsjenkins00000000000000{ "status": "enable", "maintenance_mode": "disable" }nova-2014.1/nova/tests/integrated/api_samples/os-hosts/host-get-shutdown.xml.tpl0000664000175400017540000000013412323721477031142 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-fixed-ips/0000775000175400017540000000000012323722546024747 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.xml.tpl0000664000175400017540000000025712323721477031634 0ustar jenkinsjenkins00000000000000 %(cidr)s %(hostname)s %(host)s
%(address)s
nova-2014.1/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.json.tpl0000664000175400017540000000004112323721477031635 0ustar jenkinsjenkins00000000000000{ "reserve": "%(reserve)s" } nova-2014.1/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.xml.tpl0000664000175400017540000000010612323721477031466 0ustar jenkinsjenkins00000000000000 %(reserve)s nova-2014.1/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.json.tpl0000664000175400017540000000023112323721477031775 0ustar jenkinsjenkins00000000000000{ "fixed_ip": { "cidr": "%(cidr)s", "hostname": "%(hostname)s", "host": "%(host)s", "address": "%(address)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/0000775000175400017540000000000012323722546025043 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl0000664000175400017540000000046312323721477032326 0ustar jenkinsjenkins00000000000000{ "cloudpipes": [ { "created_at": "%(timestamp)s", "instance_id": "%(uuid)s", "internal_ip": "%(ip)s", "project_id": "%(project_id)s", "public_ip": "%(ip)s", "public_port": 22, "state": "down" } ] } nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl0000664000175400017540000000054012323721477032151 0ustar jenkinsjenkins00000000000000 %(ip)s %(timestamp)s 22 down %(uuid)s %(ip)s %(project_id)s nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl0000664000175400017540000000010112323721477032626 0ustar jenkinsjenkins00000000000000 %(uuid)s nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl0000664000175400017540000000005612323721477032455 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl0000664000175400017540000000010412323721477032620 0ustar jenkinsjenkins00000000000000{ "cloudpipe": { "project_id": "%(project_id)s" } } nova-2014.1/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl0000664000175400017540000000004012323721477033001 0ustar jenkinsjenkins00000000000000{ "instance_id": "%(id)s" } nova-2014.1/nova/tests/integrated/api_samples/os-extended-quotas/0000775000175400017540000000000012323722546026171 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-req.xml.tpl0000664000175400017540000000020212323721477034051 0ustar jenkinsjenkins00000000000000 True 45 nova-2014.1/nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-resp.json.tpl0000664000175400017540000000060512323721477034413 0ustar jenkinsjenkins00000000000000{ "quota_set": { "cores": 20, "floating_ips": 10, "fixed_ips": -1, "injected_file_content_bytes": 10240, "injected_file_path_bytes": 255, "injected_files": 5, "instances": 45, "key_pairs": 100, "metadata_items": 128, "ram": 51200, "security_group_rules": 20, "security_groups": 10 } } nova-2014.1/nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-resp.xml.tpl0000664000175400017540000000100212323721477034232 0ustar jenkinsjenkins00000000000000 20 10 -1 10240 255 5 45 100 128 51200 20 10 nova-2014.1/nova/tests/integrated/api_samples/os-extended-quotas/quotas-update-post-req.json.tpl0000664000175400017540000000011612323721477034226 0ustar jenkinsjenkins00000000000000{ "quota_set": { "force": "True", "instances": 45 } } nova-2014.1/nova/tests/integrated/api_samples/server-action-confirmresize.xml.tpl0000664000175400017540000000015712323721477031423 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-cells/0000775000175400017540000000000012323722546024161 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/integrated/api_samples/os-cells/cells-list-empty-resp.xml.tpl0000664000175400017540000000015012323721477031655 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-cells/cells-get-resp.json.tpl0000664000175400017540000000030612323721477030501 0ustar jenkinsjenkins00000000000000{ "cell": { "name": "cell3", "username": "username3", "rpc_host": null, "rpc_port": null, "type": "child" } } nova-2014.1/nova/tests/integrated/api_samples/os-cells/cells-list-empty-resp.json.tpl0000664000175400017540000000002512323721477032027 0ustar jenkinsjenkins00000000000000{ "cells": [] } nova-2014.1/nova/tests/integrated/api_samples/os-cells/cells-get-resp.xml.tpl0000664000175400017540000000026612323721477030335 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-cells/cells-list-resp.xml.tpl0000664000175400017540000000105712323721477030530 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/api_samples/os-cells/cells-list-resp.json.tpl0000664000175400017540000000160512323721477030700 0ustar jenkinsjenkins00000000000000{ "cells": [ { "name": "cell1", "username": "username1", "rpc_host": null, "rpc_port": null, "type": "child" }, { "name": "cell2", "username": "username2", "rpc_host": null, "rpc_port": null, "type": "parent" }, { "name": "cell3", "username": "username3", "rpc_host": null, "rpc_port": null, "type": "child" }, { "name": "cell4", "username": "username4", "rpc_host": null, "rpc_port": null, "type": "parent" }, { "name": "cell5", "username": "username5", "rpc_host": null, "rpc_port": null, "type": "child" } ] } nova-2014.1/nova/tests/integrated/api_samples/server-ips-network-resp.xml.tpl0000664000175400017540000000023612323721477030520 0ustar jenkinsjenkins00000000000000 nova-2014.1/nova/tests/integrated/__init__.py0000664000175400017540000000134112323721477022255 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Justin Santa Barbara # # 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. """ :mod:`integrated` -- Tests whole systems, using mock services where needed ================================= """ nova-2014.1/nova/tests/test_baserpc.py0000664000175400017540000000312312323721477021046 0ustar jenkinsjenkins00000000000000# # Copyright 2013 - 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. # """ Test the base rpc API. """ from oslo.config import cfg from nova import baserpc from nova import context from nova import test CONF = cfg.CONF class BaseAPITestCase(test.TestCase): def setUp(self): super(BaseAPITestCase, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.conductor = self.start_service( 'conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute') self.base_rpcapi = baserpc.BaseAPI(CONF.compute_topic) def test_ping(self): res = self.base_rpcapi.ping(self.context, 'foo') self.assertEqual(res, {'service': 'compute', 'arg': 'foo'}) def test_get_backdoor_port(self): res = self.base_rpcapi.get_backdoor_port(self.context, self.compute.host) self.assertEqual(res, self.compute.backdoor_port) nova-2014.1/nova/tests/test_crypto.py0000664000175400017540000002363112323721477020755 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests for Crypto module. """ import os import mox from nova import crypto from nova import db from nova import exception from nova.openstack.common import processutils from nova import test from nova import utils class X509Test(test.TestCase): def test_can_generate_x509(self): with utils.tempdir() as tmpdir: self.flags(ca_path=tmpdir) crypto.ensure_ca_filesystem() _key, cert_str = crypto.generate_x509_cert('fake', 'fake') project_cert = crypto.fetch_ca(project_id='fake') signed_cert_file = os.path.join(tmpdir, "signed") with open(signed_cert_file, 'w') as keyfile: keyfile.write(cert_str) project_cert_file = os.path.join(tmpdir, "project") with open(project_cert_file, 'w') as keyfile: keyfile.write(project_cert) enc, err = utils.execute('openssl', 'verify', '-CAfile', project_cert_file, '-verbose', signed_cert_file) self.assertFalse(err) def test_encrypt_decrypt_x509(self): with utils.tempdir() as tmpdir: self.flags(ca_path=tmpdir) project_id = "fake" crypto.ensure_ca_filesystem() cert = crypto.fetch_ca(project_id) public_key = os.path.join(tmpdir, "public.pem") with open(public_key, 'w') as keyfile: keyfile.write(cert) text = "some @#!%^* test text" enc, _err = utils.execute('openssl', 'rsautl', '-certin', '-encrypt', '-inkey', '%s' % public_key, process_input=text) dec = crypto.decrypt_text(project_id, enc) self.assertEqual(text, dec) class RevokeCertsTest(test.TestCase): def test_revoke_certs_by_user_and_project(self): user_id = 'test_user' project_id = 2 file_name = 'test_file' def mock_certificate_get_all_by_user_and_project(context, user_id, project_id): return [{"user_id": user_id, "project_id": project_id, "file_name": file_name}] self.stubs.Set(db, 'certificate_get_all_by_user_and_project', mock_certificate_get_all_by_user_and_project) self.mox.StubOutWithMock(crypto, 'revoke_cert') crypto.revoke_cert(project_id, file_name) self.mox.ReplayAll() crypto.revoke_certs_by_user_and_project(user_id, project_id) def test_revoke_certs_by_user(self): user_id = 'test_user' project_id = 2 file_name = 'test_file' def mock_certificate_get_all_by_user(context, user_id): return [{"user_id": user_id, "project_id": project_id, "file_name": file_name}] self.stubs.Set(db, 'certificate_get_all_by_user', mock_certificate_get_all_by_user) self.mox.StubOutWithMock(crypto, 'revoke_cert') crypto.revoke_cert(project_id, mox.IgnoreArg()) self.mox.ReplayAll() crypto.revoke_certs_by_user(user_id) def test_revoke_certs_by_project(self): user_id = 'test_user' project_id = 2 file_name = 'test_file' def mock_certificate_get_all_by_project(context, project_id): return [{"user_id": user_id, "project_id": project_id, "file_name": file_name}] self.stubs.Set(db, 'certificate_get_all_by_project', mock_certificate_get_all_by_project) self.mox.StubOutWithMock(crypto, 'revoke_cert') crypto.revoke_cert(project_id, mox.IgnoreArg()) self.mox.ReplayAll() crypto.revoke_certs_by_project(project_id) class CertExceptionTests(test.TestCase): def test_fetch_ca_file_not_found(self): with utils.tempdir() as tmpdir: self.flags(ca_path=tmpdir) self.flags(use_project_ca=True) self.assertRaises(exception.CryptoCAFileNotFound, crypto.fetch_ca, project_id='fake') def test_fetch_crl_file_not_found(self): with utils.tempdir() as tmpdir: self.flags(ca_path=tmpdir) self.flags(use_project_ca=True) self.assertRaises(exception.CryptoCRLFileNotFound, crypto.fetch_crl, project_id='fake') class EncryptionTests(test.TestCase): pubkey = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDArtgrfBu/g2o28o+H2ng/crv" "zgES91i/NNPPFTOutXelrJ9QiPTPTm+B8yspLsXifmbsmXztNOlBQgQXs6usxb4" "fnJKNUZ84Vkp5esbqK/L7eyRqwPvqo7btKBMoAMVX/kUyojMpxb7Ssh6M6Y8cpi" "goi+MSDPD7+5yRJ9z4mH9h7MCY6Ejv8KTcNYmVHvRhsFUcVhWcIISlNWUGiG7rf" "oki060F5myQN3AXcL8gHG5/Qb1RVkQFUKZ5geQ39/wSyYA1Q65QTba/5G2QNbl2" "0eAIBTyKZhN6g88ak+yARa6BLLDkrlP7L4WctHQMLsuXHohQsUO9AcOlVMARgrg" "uF test@test") prikey = """-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAwK7YK3wbv4NqNvKPh9p4P3K784BEvdYvzTTzxUzrrV3payfU Ij0z05vgfMrKS7F4n5m7Jl87TTpQUIEF7OrrMW+H5ySjVGfOFZKeXrG6ivy+3ska sD76qO27SgTKADFV/5FMqIzKcW+0rIejOmPHKYoKIvjEgzw+/uckSfc+Jh/YezAm OhI7/Ck3DWJlR70YbBVHFYVnCCEpTVlBohu636JItOtBeZskDdwF3C/IBxuf0G9U VZEBVCmeYHkN/f8EsmANUOuUE22v+RtkDW5dtHgCAU8imYTeoPPGpPsgEWugSyw5 K5T+y+FnLR0DC7Llx6IULFDvQHDpVTAEYK4LhQIDAQABAoIBAF9ibrrgHnBpItx+ qVUMbriiGK8LUXxUmqdQTljeolDZi6KzPc2RVKWtpazBSvG7skX3+XCediHd+0JP DNri1HlNiA6B0aUIGjoNsf6YpwsE4YwyK9cR5k5YGX4j7se3pKX2jOdngxQyw1Mh dkmCeWZz4l67nbSFz32qeQlwrsB56THJjgHB7elDoGCXTX/9VJyjFlCbfxVCsIng inrNgT0uMSYMNpAjTNOjguJt/DtXpwzei5eVpsERe0TRRVH23ycS0fuq/ancYwI/ MDr9KSB8r+OVGeVGj3popCxECxYLBxhqS1dAQyJjhQXKwajJdHFzidjXO09hLBBz FiutpYUCgYEA6OFikTrPlCMGMJjSj+R9woDAOPfvCDbVZWfNo8iupiECvei88W28 RYFnvUQRjSC0pHe//mfUSmiEaE+SjkNCdnNR+vsq9q+htfrADm84jl1mfeWatg/g zuGz2hAcZnux3kQMI7ufOwZNNpM2bf5B4yKamvG8tZRRxSkkAL1NV48CgYEA08/Z Ty9g9XPKoLnUWStDh1zwG+c0q14l2giegxzaUAG5DOgOXbXcw0VQ++uOWD5ARELG g9wZcbBsXxJrRpUqx+GAlv2Y1bkgiPQS1JIyhsWEUtwfAC/G+uZhCX53aI3Pbsjh QmkPCSp5DuOuW2PybMaw+wVe+CaI/gwAWMYDAasCgYEA4Fzkvc7PVoU33XIeywr0 LoQkrb4QyPUrOvt7H6SkvuFm5thn0KJMlRpLfAksb69m2l2U1+HooZd4mZawN+eN DNmlzgxWJDypq83dYwq8jkxmBj1DhMxfZnIE+L403nelseIVYAfPLOqxUTcbZXVk vRQFp+nmSXqQHUe5rAy1ivkCgYEAqLu7cclchCxqDv/6mc5NTVhMLu5QlvO5U6fq HqitgW7d69oxF5X499YQXZ+ZFdMBf19ypTiBTIAu1M3nh6LtIa4SsjXzus5vjKpj FdQhTBus/hU83Pkymk1MoDOPDEtsI+UDDdSDldmv9pyKGWPVi7H86vusXCLWnwsQ e6fCXWECgYEAqgpGvva5kJ1ISgNwnJbwiNw0sOT9BMOsdNZBElf0kJIIy6FMPvap 6S1ziw+XWfdQ83VIUOCL5DrwmcYzLIogS0agmnx/monfDx0Nl9+OZRxy6+AI9vkK 86A1+DXdo+IgX3grFK1l1gPhAZPRWJZ+anrEkyR4iLq6ZoPZ3BQn97U= -----END RSA PRIVATE KEY-----""" text = "Some text! %$*" def _ssh_decrypt_text(self, ssh_private_key, text): with utils.tempdir() as tmpdir: sshkey = os.path.abspath(os.path.join(tmpdir, 'ssh.key')) with open(sshkey, 'w') as f: f.write(ssh_private_key) try: dec, _err = utils.execute('openssl', 'rsautl', '-decrypt', '-inkey', sshkey, process_input=text) return dec except processutils.ProcessExecutionError as exc: raise exception.DecryptionFailure(reason=exc.stderr) def test_ssh_encrypt_decrypt_text(self): enc = crypto.ssh_encrypt_text(self.pubkey, self.text) self.assertNotEqual(enc, self.text) result = self._ssh_decrypt_text(self.prikey, enc) self.assertEqual(result, self.text) def test_ssh_encrypt_failure(self): self.assertRaises(exception.EncryptionFailure, crypto.ssh_encrypt_text, '', self.text) class ConversionTests(test.TestCase): k1 = ("ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4CqmrxfU7x4sJrubpMNxeglul+d" "ByrsicnvQcHDEjPzdvoz+BaoAG9bjCA5mCeTBIISsVTVXz/hxNeiuBV6LH/UR/c" "27yl53ypN+821ImoexQZcKItdnjJ3gVZlDob1f9+1qDVy63NJ1c+TstkrCTRVeo" "9VyE7RpdSS4UCiBe8Xwk3RkedioFxePrI0Ktc2uASw2G0G2Rl7RN7KZOJbCivfF" "LQMAOu6e+7fYvuE1gxGHHj7dxaBY/ioGOm1W4JmQ1V7AKt19zTBlZKduN8FQMSF" "r35CDlvoWs0+OP8nwlebKNCi/5sdL8qiSLrAcPB4LqdkAf/blNSVA2Yl83/c4lQ" "== test@test") k2 = ("-----BEGIN PUBLIC KEY-----\n" "MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA4CqmrxfU7x4sJrubpMNx\n" "eglul+dByrsicnvQcHDEjPzdvoz+BaoAG9bjCA5mCeTBIISsVTVXz/hxNeiuBV6L\n" "H/UR/c27yl53ypN+821ImoexQZcKItdnjJ3gVZlDob1f9+1qDVy63NJ1c+TstkrC\n" "TRVeo9VyE7RpdSS4UCiBe8Xwk3RkedioFxePrI0Ktc2uASw2G0G2Rl7RN7KZOJbC\n" "ivfFLQMAOu6e+7fYvuE1gxGHHj7dxaBY/ioGOm1W4JmQ1V7AKt19zTBlZKduN8FQ\n" "MSFr35CDlvoWs0+OP8nwlebKNCi/5sdL8qiSLrAcPB4LqdkAf/blNSVA2Yl83/c4\n" "lQIBIw==\n" "-----END PUBLIC KEY-----\n") def test_convert_keys(self): result = crypto.convert_from_sshrsa_to_pkcs8(self.k1) self.assertEqual(result, self.k2) def test_convert_failure(self): self.assertRaises(exception.EncryptionFailure, crypto.convert_from_sshrsa_to_pkcs8, '') nova-2014.1/nova/tests/test_bdm.py0000664000175400017540000002207612323721477020201 0ustar jenkinsjenkins00000000000000# Copyright 2011 Isaku Yamahata # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests for Block Device Mapping Code. """ from nova.api.ec2 import cloud from nova.api.ec2 import ec2utils from nova import test from nova.tests import matchers class BlockDeviceMappingEc2CloudTestCase(test.NoDBTestCase): """Test Case for Block Device Mapping.""" def fake_ec2_vol_id_to_uuid(obj, ec2_id): if ec2_id == 'vol-87654321': return '22222222-3333-4444-5555-666666666666' elif ec2_id == 'vol-98765432': return '77777777-8888-9999-0000-aaaaaaaaaaaa' else: return 'OhNoooo' def fake_ec2_snap_id_to_uuid(obj, ec2_id): if ec2_id == 'snap-12345678': return '00000000-1111-2222-3333-444444444444' elif ec2_id == 'snap-23456789': return '11111111-2222-3333-4444-555555555555' else: return 'OhNoooo' def _assertApply(self, action, bdm_list): for bdm, expected_result in bdm_list: self.assertThat(action(bdm), matchers.DictMatches(expected_result)) def test_parse_block_device_mapping(self): self.stubs.Set(ec2utils, 'ec2_vol_id_to_uuid', self.fake_ec2_vol_id_to_uuid) self.stubs.Set(ec2utils, 'ec2_snap_id_to_uuid', self.fake_ec2_snap_id_to_uuid) bdm_list = [ ({'device_name': '/dev/fake0', 'ebs': {'snapshot_id': 'snap-12345678', 'volume_size': 1}}, {'device_name': '/dev/fake0', 'snapshot_id': '00000000-1111-2222-3333-444444444444', 'volume_size': 1, 'delete_on_termination': True}), ({'device_name': '/dev/fake1', 'ebs': {'snapshot_id': 'snap-23456789', 'delete_on_termination': False}}, {'device_name': '/dev/fake1', 'snapshot_id': '11111111-2222-3333-4444-555555555555', 'delete_on_termination': False}), ({'device_name': '/dev/fake2', 'ebs': {'snapshot_id': 'vol-87654321', 'volume_size': 2}}, {'device_name': '/dev/fake2', 'volume_id': '22222222-3333-4444-5555-666666666666', 'volume_size': 2, 'delete_on_termination': True}), ({'device_name': '/dev/fake3', 'ebs': {'snapshot_id': 'vol-98765432', 'delete_on_termination': False}}, {'device_name': '/dev/fake3', 'volume_id': '77777777-8888-9999-0000-aaaaaaaaaaaa', 'delete_on_termination': False}), ({'device_name': '/dev/fake4', 'ebs': {'no_device': True}}, {'device_name': '/dev/fake4', 'no_device': True}), ({'device_name': '/dev/fake5', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/fake5', 'virtual_name': 'ephemeral0'}), ({'device_name': '/dev/fake6', 'virtual_name': 'swap'}, {'device_name': '/dev/fake6', 'virtual_name': 'swap'}), ] self._assertApply(cloud._parse_block_device_mapping, bdm_list) def test_format_block_device_mapping(self): bdm_list = [ ({'device_name': '/dev/fake0', 'snapshot_id': 0x12345678, 'volume_size': 1, 'delete_on_termination': True}, {'deviceName': '/dev/fake0', 'ebs': {'snapshotId': 'snap-12345678', 'volumeSize': 1, 'deleteOnTermination': True}}), ({'device_name': '/dev/fake1', 'snapshot_id': 0x23456789}, {'deviceName': '/dev/fake1', 'ebs': {'snapshotId': 'snap-23456789'}}), ({'device_name': '/dev/fake2', 'snapshot_id': 0x23456789, 'delete_on_termination': False}, {'deviceName': '/dev/fake2', 'ebs': {'snapshotId': 'snap-23456789', 'deleteOnTermination': False}}), ({'device_name': '/dev/fake3', 'volume_id': 0x12345678, 'volume_size': 1, 'delete_on_termination': True}, {'deviceName': '/dev/fake3', 'ebs': {'snapshotId': 'vol-12345678', 'volumeSize': 1, 'deleteOnTermination': True}}), ({'device_name': '/dev/fake4', 'volume_id': 0x23456789}, {'deviceName': '/dev/fake4', 'ebs': {'snapshotId': 'vol-23456789'}}), ({'device_name': '/dev/fake5', 'volume_id': 0x23456789, 'delete_on_termination': False}, {'deviceName': '/dev/fake5', 'ebs': {'snapshotId': 'vol-23456789', 'deleteOnTermination': False}}), ] self._assertApply(cloud._format_block_device_mapping, bdm_list) def test_format_mapping(self): properties = { 'mappings': [ {'virtual': 'ami', 'device': 'sda1'}, {'virtual': 'root', 'device': '/dev/sda1'}, {'virtual': 'swap', 'device': 'sdb1'}, {'virtual': 'swap', 'device': 'sdb2'}, {'virtual': 'swap', 'device': 'sdb3'}, {'virtual': 'swap', 'device': 'sdb4'}, {'virtual': 'ephemeral0', 'device': 'sdc1'}, {'virtual': 'ephemeral1', 'device': 'sdc2'}, {'virtual': 'ephemeral2', 'device': 'sdc3'}, ], 'block_device_mapping': [ # root {'device_name': '/dev/sda1', 'snapshot_id': 0x12345678, 'delete_on_termination': False}, # overwrite swap {'device_name': '/dev/sdb2', 'snapshot_id': 0x23456789, 'delete_on_termination': False}, {'device_name': '/dev/sdb3', 'snapshot_id': 0x3456789A}, {'device_name': '/dev/sdb4', 'no_device': True}, # overwrite ephemeral {'device_name': '/dev/sdc2', 'snapshot_id': 0x3456789A, 'delete_on_termination': False}, {'device_name': '/dev/sdc3', 'snapshot_id': 0x456789AB}, {'device_name': '/dev/sdc4', 'no_device': True}, # volume {'device_name': '/dev/sdd1', 'snapshot_id': 0x87654321, 'delete_on_termination': False}, {'device_name': '/dev/sdd2', 'snapshot_id': 0x98765432}, {'device_name': '/dev/sdd3', 'snapshot_id': 0xA9875463}, {'device_name': '/dev/sdd4', 'no_device': True}]} expected_result = { 'blockDeviceMapping': [ # root {'deviceName': '/dev/sda1', 'ebs': {'snapshotId': 'snap-12345678', 'deleteOnTermination': False}}, # swap {'deviceName': '/dev/sdb1', 'virtualName': 'swap'}, {'deviceName': '/dev/sdb2', 'ebs': {'snapshotId': 'snap-23456789', 'deleteOnTermination': False}}, {'deviceName': '/dev/sdb3', 'ebs': {'snapshotId': 'snap-3456789a'}}, # ephemeral {'deviceName': '/dev/sdc1', 'virtualName': 'ephemeral0'}, {'deviceName': '/dev/sdc2', 'ebs': {'snapshotId': 'snap-3456789a', 'deleteOnTermination': False}}, {'deviceName': '/dev/sdc3', 'ebs': {'snapshotId': 'snap-456789ab'}}, # volume {'deviceName': '/dev/sdd1', 'ebs': {'snapshotId': 'snap-87654321', 'deleteOnTermination': False}}, {'deviceName': '/dev/sdd2', 'ebs': {'snapshotId': 'snap-98765432'}}, {'deviceName': '/dev/sdd3', 'ebs': {'snapshotId': 'snap-a9875463'}}]} result = {} cloud._format_mappings(properties, result) self.assertEqual(result['blockDeviceMapping'].sort(), expected_result['blockDeviceMapping'].sort()) nova-2014.1/nova/tests/fake_volume.py0000664000175400017540000002373412323721477020677 0ustar jenkinsjenkins00000000000000# 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. """Implementation of a fake volume API.""" import uuid from oslo.config import cfg from nova import exception from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import timeutils LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt('cinder_cross_az_attach', 'nova.volume.cinder') class fake_volume(): user_uuid = '4a3cd440-b9c2-11e1-afa6-0800200c9a66' instance_uuid = '4a3cd441-b9c2-11e1-afa6-0800200c9a66' def __init__(self, size, name, description, volume_id, snapshot, volume_type, metadata, availability_zone): snapshot_id = None if snapshot is not None: snapshot_id = snapshot['id'] if volume_id is None: volume_id = str(uuid.uuid4()) self.vol = { 'created_at': timeutils.utcnow(), 'deleted_at': None, 'updated_at': timeutils.utcnow(), 'uuid': 'WTF', 'deleted': False, 'id': volume_id, 'user_id': self.user_uuid, 'project_id': 'fake-project-id', 'snapshot_id': snapshot_id, 'host': None, 'size': size, 'availability_zone': availability_zone, 'instance_uuid': None, 'mountpoint': None, 'attach_time': timeutils.utcnow(), 'status': 'available', 'attach_status': 'detached', 'scheduled_at': None, 'launched_at': None, 'terminated_at': None, 'display_name': name, 'display_description': description, 'provider_location': 'fake-location', 'provider_auth': 'fake-auth', 'volume_type_id': 99 } def get(self, key, default=None): return self.vol[key] def __setitem__(self, key, value): self.vol[key] = value def __getitem__(self, key): self.vol[key] class fake_snapshot(): user_uuid = '4a3cd440-b9c2-11e1-afa6-0800200c9a66' instance_uuid = '4a3cd441-b9c2-11e1-afa6-0800200c9a66' def __init__(self, volume_id, size, name, desc, id=None): if id is None: id = str(uuid.uuid4()) self.snap = { 'created_at': timeutils.utcnow(), 'deleted_at': None, 'updated_at': timeutils.utcnow(), 'uuid': 'WTF', 'deleted': False, 'id': str(id), 'volume_id': volume_id, 'status': 'creating', 'progress': '0%', 'volume_size': 1, 'display_name': name, 'display_description': desc, 'user_id': self.user_uuid, 'project_id': 'fake-project-id' } def get(self, key, default=None): return self.snap[key] def __setitem__(self, key, value): self.snap[key] = value def __getitem__(self, key): self.snap[key] class API(object): volume_list = [] snapshot_list = [] _instance = None class Singleton: def __init__(self): self.API = None def __init__(self): if API._instance is None: API._instance = API.Singleton() self._EventHandler_instance = API._instance def create(self, context, size, name, description, snapshot=None, volume_type=None, metadata=None, availability_zone=None): v = fake_volume(size, name, description, None, snapshot, volume_type, metadata, availability_zone) self.volume_list.append(v.vol) LOG.info('creating volume %s', v.vol['id']) return v.vol def create_with_kwargs(self, context, **kwargs): volume_id = kwargs.get('volume_id', None) v = fake_volume(kwargs['size'], kwargs['name'], kwargs['description'], str(volume_id), None, None, None, None) if kwargs.get('status', None) is not None: v.vol['status'] = kwargs['status'] if kwargs['host'] is not None: v.vol['host'] = kwargs['host'] if kwargs['attach_status'] is not None: v.vol['attach_status'] = kwargs['attach_status'] if kwargs.get('snapshot_id', None) is not None: v.vol['snapshot_id'] = kwargs['snapshot_id'] self.volume_list.append(v.vol) return v.vol def get(self, context, volume_id): if volume_id == 87654321: return {'id': volume_id, 'attach_time': '13:56:24', 'attach_status': 'attached', 'status': 'in-use'} for v in self.volume_list: if v['id'] == str(volume_id): return v raise exception.VolumeNotFound(volume_id=volume_id) def get_all(self, context): return self.volume_list def delete(self, context, volume_id): LOG.info('deleting volume %s', volume_id) self.volume_list = [v for v in self.volume_list if v['id'] != volume_id] def check_attach(self, context, volume, instance=None): if volume['status'] != 'available': msg = _("status must be available") msg = "%s" % volume raise exception.InvalidVolume(reason=msg) if volume['attach_status'] == 'attached': msg = _("already attached") raise exception.InvalidVolume(reason=msg) if instance and not CONF.cinder_cross_az_attach: if instance['availability_zone'] != volume['availability_zone']: msg = _("Instance and volume not in same availability_zone") raise exception.InvalidVolume(reason=msg) def check_detach(self, context, volume): if volume['status'] == "available": msg = _("already detached") raise exception.InvalidVolume(reason=msg) def attach(self, context, volume_id, instance_uuid, mountpoint): LOG.info('attaching volume %s', volume_id) volume = self.get(context, volume_id) volume['status'] = 'in-use' volume['mountpoint'] = mountpoint volume['attach_status'] = 'attached' volume['instance_uuid'] = instance_uuid volume['attach_time'] = timeutils.utcnow() def fake_set_snapshot_id(self, context, volume, snapshot_id): volume['snapshot_id'] = snapshot_id def reset_fake_api(self, context): del self.volume_list[:] del self.snapshot_list[:] def detach(self, context, volume_id): LOG.info('detaching volume %s', volume_id) volume = self.get(context, volume_id) volume['status'] = 'available' volume['mountpoint'] = None volume['attach_status'] = 'detached' volume['instance_uuid'] = None def initialize_connection(self, context, volume_id, connector): return {'driver_volume_type': 'iscsi', 'data': {}} def terminate_connection(self, context, volume_id, connector): return None def get_snapshot(self, context, snapshot_id): for snap in self.snapshot_list: if snap['id'] == str(snapshot_id): return snap def get_all_snapshots(self, context): return self.snapshot_list def create_snapshot(self, context, volume_id, name, description, id=None): volume = self.get(context, volume_id) snapshot = fake_snapshot(volume['id'], volume['size'], name, description, id) self.snapshot_list.append(snapshot.snap) return snapshot.snap def create_snapshot_with_kwargs(self, context, **kwargs): snapshot = fake_snapshot(kwargs.get('volume_id'), kwargs.get('volume_size'), kwargs.get('name'), kwargs.get('description'), kwargs.get('snap_id')) status = kwargs.get('status', None) snapshot.snap['status'] = status self.snapshot_list.append(snapshot.snap) return snapshot.snap def create_snapshot_force(self, context, volume_id, name, description, id=None): volume = self.get(context, volume_id) snapshot = fake_snapshot(volume['id'], volume['size'], name, description, id) self.snapshot_list.append(snapshot.snap) return snapshot.snap def delete_snapshot(self, context, snapshot_id): self.snapshot_list = [s for s in self.snapshot_list if s['id'] != snapshot_id] def reserve_volume(self, context, volume_id): LOG.info('reserving volume %s', volume_id) volume = self.get(context, volume_id) volume['status'] = 'attaching' def unreserve_volume(self, context, volume_id): LOG.info('unreserving volume %s', volume_id) volume = self.get(context, volume_id) volume['status'] = 'available' def begin_detaching(self, context, volume_id): LOG.info('beging detaching volume %s', volume_id) volume = self.get(context, volume_id) volume['status'] = 'detaching' def roll_detaching(self, context, volume_id): LOG.info('roll detaching volume %s', volume_id) volume = self.get(context, volume_id) volume['status'] = 'in-use' nova-2014.1/nova/tests/matchers.py0000664000175400017540000003525612323721477020212 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2012 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # 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. """Matcher classes to be used inside of the testtools assertThat framework.""" import pprint from testtools import content from lxml import etree class DictKeysMismatch(object): def __init__(self, d1only, d2only): self.d1only = d1only self.d2only = d2only def describe(self): return ('Keys in d1 and not d2: %(d1only)s.' ' Keys in d2 and not d1: %(d2only)s' % self.__dict__) def get_details(self): return {} class DictMismatch(object): def __init__(self, key, d1_value, d2_value): self.key = key self.d1_value = d1_value self.d2_value = d2_value def describe(self): return ("Dictionaries do not match at %(key)s." " d1: %(d1_value)s d2: %(d2_value)s" % self.__dict__) def get_details(self): return {} class DictMatches(object): def __init__(self, d1, approx_equal=False, tolerance=0.001): self.d1 = d1 self.approx_equal = approx_equal self.tolerance = tolerance def __str__(self): return 'DictMatches(%s)' % (pprint.pformat(self.d1)) # Useful assertions def match(self, d2): """Assert two dicts are equivalent. This is a 'deep' match in the sense that it handles nested dictionaries appropriately. NOTE: If you don't care (or don't know) a given value, you can specify the string DONTCARE as the value. This will cause that dict-item to be skipped. """ d1keys = set(self.d1.keys()) d2keys = set(d2.keys()) if d1keys != d2keys: d1only = d1keys - d2keys d2only = d2keys - d1keys return DictKeysMismatch(d1only, d2only) for key in d1keys: d1value = self.d1[key] d2value = d2[key] try: error = abs(float(d1value) - float(d2value)) within_tolerance = error <= self.tolerance except (ValueError, TypeError): # If both values aren't convertible to float, just ignore # ValueError if arg is a str, TypeError if it's something else # (like None) within_tolerance = False if hasattr(d1value, 'keys') and hasattr(d2value, 'keys'): matcher = DictMatches(d1value) did_match = matcher.match(d2value) if did_match is not None: return did_match elif 'DONTCARE' in (d1value, d2value): continue elif self.approx_equal and within_tolerance: continue elif d1value != d2value: return DictMismatch(key, d1value, d2value) class ListLengthMismatch(object): def __init__(self, len1, len2): self.len1 = len1 self.len2 = len2 def describe(self): return ('Length mismatch: len(L1)=%(len1)d != ' 'len(L2)=%(len2)d' % self.__dict__) def get_details(self): return {} class DictListMatches(object): def __init__(self, l1, approx_equal=False, tolerance=0.001): self.l1 = l1 self.approx_equal = approx_equal self.tolerance = tolerance def __str__(self): return 'DictListMatches(%s)' % (pprint.pformat(self.l1)) # Useful assertions def match(self, l2): """Assert a list of dicts are equivalent.""" l1count = len(self.l1) l2count = len(l2) if l1count != l2count: return ListLengthMismatch(l1count, l2count) for d1, d2 in zip(self.l1, l2): matcher = DictMatches(d2, approx_equal=self.approx_equal, tolerance=self.tolerance) did_match = matcher.match(d1) if did_match: return did_match class SubDictMismatch(object): def __init__(self, key=None, sub_value=None, super_value=None, keys=False): self.key = key self.sub_value = sub_value self.super_value = super_value self.keys = keys def describe(self): if self.keys: return "Keys between dictionaries did not match" else: return("Dictionaries do not match at %s. d1: %s d2: %s" % (self.key, self.super_value, self.sub_value)) def get_details(self): return {} class IsSubDictOf(object): def __init__(self, super_dict): self.super_dict = super_dict def __str__(self): return 'IsSubDictOf(%s)' % (self.super_dict) def match(self, sub_dict): """Assert a sub_dict is subset of super_dict.""" if not set(sub_dict.keys()).issubset(set(self.super_dict.keys())): return SubDictMismatch(keys=True) for k, sub_value in sub_dict.items(): super_value = self.super_dict[k] if isinstance(sub_value, dict): matcher = IsSubDictOf(super_value) did_match = matcher.match(sub_value) if did_match is not None: return did_match elif 'DONTCARE' in (sub_value, super_value): continue else: if sub_value != super_value: return SubDictMismatch(k, sub_value, super_value) class FunctionCallMatcher(object): def __init__(self, expected_func_calls): self.expected_func_calls = expected_func_calls self.actual_func_calls = [] def call(self, *args, **kwargs): func_call = {'args': args, 'kwargs': kwargs} self.actual_func_calls.append(func_call) def match(self): dict_list_matcher = DictListMatches(self.expected_func_calls) return dict_list_matcher.match(self.actual_func_calls) class XMLMismatch(object): """Superclass for XML mismatch.""" def __init__(self, state): self.path = str(state) self.expected = state.expected self.actual = state.actual def describe(self): return "%(path)s: XML does not match" % self.__dict__ def get_details(self): return { 'expected': content.text_content(self.expected), 'actual': content.text_content(self.actual), } class XMLTagMismatch(XMLMismatch): """XML tags don't match.""" def __init__(self, state, idx, expected_tag, actual_tag): super(XMLTagMismatch, self).__init__(state) self.idx = idx self.expected_tag = expected_tag self.actual_tag = actual_tag def describe(self): return ("%(path)s: XML tag mismatch at index %(idx)d: " "expected tag <%(expected_tag)s>; " "actual tag <%(actual_tag)s>" % self.__dict__) class XMLAttrKeysMismatch(XMLMismatch): """XML attribute keys don't match.""" def __init__(self, state, expected_only, actual_only): super(XMLAttrKeysMismatch, self).__init__(state) self.expected_only = ', '.join(sorted(expected_only)) self.actual_only = ', '.join(sorted(actual_only)) def describe(self): return ("%(path)s: XML attributes mismatch: " "keys only in expected: %(expected_only)s; " "keys only in actual: %(actual_only)s" % self.__dict__) class XMLAttrValueMismatch(XMLMismatch): """XML attribute values don't match.""" def __init__(self, state, key, expected_value, actual_value): super(XMLAttrValueMismatch, self).__init__(state) self.key = key self.expected_value = expected_value self.actual_value = actual_value def describe(self): return ("%(path)s: XML attribute value mismatch: " "expected value of attribute %(key)s: %(expected_value)r; " "actual value: %(actual_value)r" % self.__dict__) class XMLTextValueMismatch(XMLMismatch): """XML text values don't match.""" def __init__(self, state, expected_text, actual_text): super(XMLTextValueMismatch, self).__init__(state) self.expected_text = expected_text self.actual_text = actual_text def describe(self): return ("%(path)s: XML text value mismatch: " "expected text value: %(expected_text)r; " "actual value: %(actual_text)r" % self.__dict__) class XMLUnexpectedChild(XMLMismatch): """Unexpected child present in XML.""" def __init__(self, state, tag, idx): super(XMLUnexpectedChild, self).__init__(state) self.tag = tag self.idx = idx def describe(self): return ("%(path)s: XML unexpected child element <%(tag)s> " "present at index %(idx)d" % self.__dict__) class XMLExpectedChild(XMLMismatch): """Expected child not present in XML.""" def __init__(self, state, tag, idx): super(XMLExpectedChild, self).__init__(state) self.tag = tag self.idx = idx def describe(self): return ("%(path)s: XML expected child element <%(tag)s> " "not present at index %(idx)d" % self.__dict__) class XMLMatchState(object): """Maintain some state for matching. Tracks the XML node path and saves the expected and actual full XML text, for use by the XMLMismatch subclasses. """ def __init__(self, expected, actual): self.path = [] self.expected = expected self.actual = actual def __enter__(self): pass def __exit__(self, exc_type, exc_value, exc_tb): self.path.pop() return False def __str__(self): return '/' + '/'.join(self.path) def node(self, tag, idx): """Adds tag and index to the path; they will be popped off when the corresponding 'with' statement exits. :param tag: The element tag :param idx: If not None, the integer index of the element within its parent. Not included in the path element if None. """ if idx is not None: self.path.append("%s[%d]" % (tag, idx)) else: self.path.append(tag) return self class XMLMatches(object): """Compare XML strings. More complete than string comparison.""" def __init__(self, expected): self.expected_xml = expected self.expected = etree.fromstring(expected) def __str__(self): return 'XMLMatches(%r)' % self.expected_xml def match(self, actual_xml): actual = etree.fromstring(actual_xml) state = XMLMatchState(self.expected_xml, actual_xml) result = self._compare_node(self.expected, actual, state, None) if result is False: return XMLMismatch(state) elif result is not True: return result def _compare_node(self, expected, actual, state, idx): """Recursively compares nodes within the XML tree.""" # Start by comparing the tags if expected.tag != actual.tag: return XMLTagMismatch(state, idx, expected.tag, actual.tag) with state.node(expected.tag, idx): # Compare the attribute keys expected_attrs = set(expected.attrib.keys()) actual_attrs = set(actual.attrib.keys()) if expected_attrs != actual_attrs: expected_only = expected_attrs - actual_attrs actual_only = actual_attrs - expected_attrs return XMLAttrKeysMismatch(state, expected_only, actual_only) # Compare the attribute values for key in expected_attrs: expected_value = expected.attrib[key] actual_value = actual.attrib[key] if 'DONTCARE' in (expected_value, actual_value): continue elif expected_value != actual_value: return XMLAttrValueMismatch(state, key, expected_value, actual_value) # Compare the contents of the node if len(expected) == 0 and len(actual) == 0: # No children, compare text values if ('DONTCARE' not in (expected.text, actual.text) and expected.text != actual.text): return XMLTextValueMismatch(state, expected.text, actual.text) else: expected_idx = 0 actual_idx = 0 while (expected_idx < len(expected) and actual_idx < len(actual)): # Ignore comments and processing instructions # TODO(Vek): may interpret PIs in the future, to # allow for, say, arbitrary ordering of some # elements if (expected[expected_idx].tag in (etree.Comment, etree.ProcessingInstruction)): expected_idx += 1 continue # Compare the nodes result = self._compare_node(expected[expected_idx], actual[actual_idx], state, actual_idx) if result is not True: return result # Step on to comparing the next nodes... expected_idx += 1 actual_idx += 1 # Make sure we consumed all nodes in actual if actual_idx < len(actual): return XMLUnexpectedChild(state, actual[actual_idx].tag, actual_idx) # Make sure we consumed all nodes in expected if expected_idx < len(expected): for node in expected[expected_idx:]: if (node.tag in (etree.Comment, etree.ProcessingInstruction)): continue return XMLExpectedChild(state, node.tag, actual_idx) # The nodes match return True nova-2014.1/nova/tests/consoleauth/0000775000175400017540000000000012323722546020341 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/consoleauth/test_consoleauth.py0000664000175400017540000001571512323721477024311 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests for Consoleauth Code. """ import mox from nova.consoleauth import manager from nova import context from nova import db from nova.openstack.common import timeutils from nova import test class ConsoleauthTestCase(test.TestCase): """Test Case for consoleauth.""" def setUp(self): super(ConsoleauthTestCase, self).setUp() self.manager_api = self.manager = manager.ConsoleAuthManager() self.context = context.get_admin_context() self.instance = db.instance_create(self.context, {}) def test_tokens_expire(self): # Test that tokens expire correctly. self.useFixture(test.TimeOverride()) token = u'mytok' self.flags(console_token_ttl=1) self._stub_validate_console_port(True) self.manager_api.authorize_console(self.context, token, 'novnc', '127.0.0.1', '8080', 'host', self.instance['uuid']) self.assertTrue(self.manager_api.check_token(self.context, token)) timeutils.advance_time_seconds(1) self.assertFalse(self.manager_api.check_token(self.context, token)) def _stub_validate_console_port(self, result): def fake_validate_console_port(ctxt, instance, port, console_type): return result self.stubs.Set(self.manager.compute_rpcapi, 'validate_console_port', fake_validate_console_port) def test_multiple_tokens_for_instance(self): tokens = [u"token" + str(i) for i in xrange(10)] self._stub_validate_console_port(True) for token in tokens: self.manager_api.authorize_console(self.context, token, 'novnc', '127.0.0.1', '8080', 'host', self.instance['uuid']) for token in tokens: self.assertTrue(self.manager_api.check_token(self.context, token)) def test_delete_tokens_for_instance(self): tokens = [u"token" + str(i) for i in xrange(10)] for token in tokens: self.manager_api.authorize_console(self.context, token, 'novnc', '127.0.0.1', '8080', 'host', self.instance['uuid']) self.manager_api.delete_tokens_for_instance(self.context, self.instance['uuid']) stored_tokens = self.manager._get_tokens_for_instance( self.instance['uuid']) self.assertEqual(len(stored_tokens), 0) for token in tokens: self.assertFalse(self.manager_api.check_token(self.context, token)) def test_wrong_token_has_port(self): token = u'mytok' self._stub_validate_console_port(False) self.manager_api.authorize_console(self.context, token, 'novnc', '127.0.0.1', '8080', 'host', instance_uuid=self.instance['uuid']) self.assertFalse(self.manager_api.check_token(self.context, token)) def test_delete_expired_tokens(self): self.useFixture(test.TimeOverride()) token = u'mytok' self.flags(console_token_ttl=1) self._stub_validate_console_port(True) self.manager_api.authorize_console(self.context, token, 'novnc', '127.0.0.1', '8080', 'host', self.instance['uuid']) timeutils.advance_time_seconds(1) self.assertFalse(self.manager_api.check_token(self.context, token)) token1 = u'mytok2' self.manager_api.authorize_console(self.context, token1, 'novnc', '127.0.0.1', '8080', 'host', self.instance['uuid']) stored_tokens = self.manager._get_tokens_for_instance( self.instance['uuid']) # when trying to store token1, expired token is removed fist. self.assertEqual(len(stored_tokens), 1) self.assertEqual(stored_tokens[0], token1) class ControlauthMemcacheEncodingTestCase(test.TestCase): def setUp(self): super(ControlauthMemcacheEncodingTestCase, self).setUp() self.manager = manager.ConsoleAuthManager() self.context = context.get_admin_context() self.u_token = u"token" self.u_instance = u"instance" def test_authorize_console_encoding(self): self.mox.StubOutWithMock(self.manager.mc, "set") self.mox.StubOutWithMock(self.manager.mc, "get") self.manager.mc.set(mox.IsA(str), mox.IgnoreArg(), mox.IgnoreArg() ).AndReturn(True) self.manager.mc.get(mox.IsA(str)).AndReturn(None) self.manager.mc.set(mox.IsA(str), mox.IgnoreArg()).AndReturn(True) self.mox.ReplayAll() self.manager.authorize_console(self.context, self.u_token, 'novnc', '127.0.0.1', '8080', 'host', self.u_instance) def test_check_token_encoding(self): self.mox.StubOutWithMock(self.manager.mc, "get") self.manager.mc.get(mox.IsA(str)).AndReturn(None) self.mox.ReplayAll() self.manager.check_token(self.context, self.u_token) def test_delete_tokens_for_instance_encoding(self): self.mox.StubOutWithMock(self.manager.mc, "delete") self.mox.StubOutWithMock(self.manager.mc, "get") self.manager.mc.get(mox.IsA(str)).AndReturn('["token"]') self.manager.mc.delete(mox.IsA(str)).AndReturn(True) self.manager.mc.delete(mox.IsA(str)).AndReturn(True) self.mox.ReplayAll() self.manager.delete_tokens_for_instance(self.context, self.u_instance) class CellsConsoleauthTestCase(ConsoleauthTestCase): """Test Case for consoleauth w/ cells enabled.""" def setUp(self): super(CellsConsoleauthTestCase, self).setUp() self.flags(enable=True, group='cells') def _stub_validate_console_port(self, result): def fake_validate_console_port(ctxt, instance_uuid, console_port, console_type): return result self.stubs.Set(self.manager.cells_rpcapi, 'validate_console_port', fake_validate_console_port) nova-2014.1/nova/tests/consoleauth/test_rpcapi.py0000664000175400017540000000674712323721477023250 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """ Unit Tests for nova.consoleauth.rpcapi """ import contextlib import mock from oslo.config import cfg from nova.consoleauth import rpcapi as consoleauth_rpcapi from nova import context from nova import test CONF = cfg.CONF class ConsoleAuthRpcAPITestCase(test.NoDBTestCase): def _test_consoleauth_api(self, method, **kwargs): do_cast = kwargs.pop('_do_cast', False) ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = consoleauth_rpcapi.ConsoleAuthAPI() self.assertIsNotNone(rpcapi.client) self.assertEqual(rpcapi.client.target.topic, CONF.consoleauth_topic) orig_prepare = rpcapi.client.prepare expected_version = kwargs.pop('version', rpcapi.client.target.version) with contextlib.nested( mock.patch.object(rpcapi.client, 'cast' if do_cast else 'call'), mock.patch.object(rpcapi.client, 'prepare'), mock.patch.object(rpcapi.client, 'can_send_version'), ) as ( rpc_mock, prepare_mock, csv_mock ): prepare_mock.return_value = rpcapi.client rpc_mock.return_value = None if do_cast else 'foo' csv_mock.side_effect = ( lambda v: orig_prepare(version=v).can_send_version()) retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, rpc_mock.return_value) prepare_mock.assert_called_once_with(version=expected_version) rpc_mock.assert_called_once_with(ctxt, method, **kwargs) def test_authorize_console(self): self._test_consoleauth_api('authorize_console', token='token', console_type='ctype', host='h', port='p', internal_access_path='iap', instance_uuid="instance") # NOTE(russellb) Havana compat self.flags(consoleauth='havana', group='upgrade_levels') self._test_consoleauth_api('authorize_console', token='token', console_type='ctype', host='h', port='p', internal_access_path='iap', instance_uuid="instance", version='1.2') def test_check_token(self): self._test_consoleauth_api('check_token', token='t') # NOTE(russellb) Havana compat self.flags(consoleauth='havana', group='upgrade_levels') self._test_consoleauth_api('check_token', token='t', version='1.0') def test_delete_tokens_for_instnace(self): self._test_consoleauth_api('delete_tokens_for_instance', _do_cast=True, instance_uuid="instance") # NOTE(russellb) Havana compat self.flags(consoleauth='havana', group='upgrade_levels') self._test_consoleauth_api('delete_tokens_for_instance', _do_cast=True, instance_uuid="instance", version='1.2') nova-2014.1/nova/tests/consoleauth/__init__.py0000664000175400017540000000117312323721477022456 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/fake_instance_actions.py0000664000175400017540000001061612323721477022707 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from nova import db FAKE_UUID = 'b48316c5-71e8-45e4-9884-6c78055b9b13' FAKE_REQUEST_ID1 = 'req-3293a3f1-b44c-4609-b8d2-d81b105636b8' FAKE_REQUEST_ID2 = 'req-25517360-b757-47d3-be45-0e8d2a01b36a' FAKE_ACTION_ID1 = 123 FAKE_ACTION_ID2 = 456 FAKE_ACTIONS = { FAKE_UUID: { FAKE_REQUEST_ID1: {'id': FAKE_ACTION_ID1, 'action': 'reboot', 'instance_uuid': FAKE_UUID, 'request_id': FAKE_REQUEST_ID1, 'project_id': '147', 'user_id': '789', 'start_time': datetime.datetime( 2012, 12, 5, 0, 0, 0, 0), 'finish_time': None, 'message': '', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, }, FAKE_REQUEST_ID2: {'id': FAKE_ACTION_ID2, 'action': 'resize', 'instance_uuid': FAKE_UUID, 'request_id': FAKE_REQUEST_ID2, 'user_id': '789', 'project_id': '842', 'start_time': datetime.datetime( 2012, 12, 5, 1, 0, 0, 0), 'finish_time': None, 'message': '', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, } } } FAKE_EVENTS = { FAKE_ACTION_ID1: [{'id': 1, 'action_id': FAKE_ACTION_ID1, 'event': 'schedule', 'start_time': datetime.datetime( 2012, 12, 5, 1, 0, 2, 0), 'finish_time': datetime.datetime( 2012, 12, 5, 1, 2, 0, 0), 'result': 'Success', 'traceback': '', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, }, {'id': 2, 'action_id': FAKE_ACTION_ID1, 'event': 'compute_create', 'start_time': datetime.datetime( 2012, 12, 5, 1, 3, 0, 0), 'finish_time': datetime.datetime( 2012, 12, 5, 1, 4, 0, 0), 'result': 'Success', 'traceback': '', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, } ], FAKE_ACTION_ID2: [{'id': 3, 'action_id': FAKE_ACTION_ID2, 'event': 'schedule', 'start_time': datetime.datetime( 2012, 12, 5, 3, 0, 0, 0), 'finish_time': datetime.datetime( 2012, 12, 5, 3, 2, 0, 0), 'result': 'Error', 'traceback': '', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, } ] } def fake_action_event_start(*args): pass def fake_action_event_finish(*args): pass def stub_out_action_events(stubs): stubs.Set(db, 'action_event_start', fake_action_event_start) stubs.Set(db, 'action_event_finish', fake_action_event_finish) nova-2014.1/nova/tests/fake_policy.py0000664000175400017540000003614512323721477020667 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. policy_data = """ { "admin_api": "is_admin:True", "cells_scheduler_filter:TargetCellFilter": "is_admin:True", "context_is_admin": "role:admin or role:administrator", "compute:create": "", "compute:create:attach_network": "", "compute:create:attach_volume": "", "compute:get": "", "compute:get_all": "", "compute:get_all_tenants": "", "compute:update": "", "compute:get_instance_metadata": "", "compute:get_all_instance_metadata": "", "compute:get_all_instance_system_metadata": "", "compute:update_instance_metadata": "", "compute:delete_instance_metadata": "", "compute:get_instance_faults": "", "compute:get_diagnostics": "", "compute:get_lock": "", "compute:lock": "", "compute:unlock": "", "compute:unlock_override": "is_admin:True", "compute:get_vnc_console": "", "compute:get_spice_console": "", "compute:get_rdp_console": "", "compute:get_console_output": "", "compute:associate_floating_ip": "", "compute:reset_network": "", "compute:inject_network_info": "", "compute:add_fixed_ip": "", "compute:remove_fixed_ip": "", "compute:attach_volume": "", "compute:detach_volume": "", "compute:set_admin_password": "", "compute:rescue": "", "compute:unrescue": "", "compute:suspend": "", "compute:resume": "", "compute:pause": "", "compute:unpause": "", "compute:start": "", "compute:stop": "", "compute:resize": "", "compute:confirm_resize": "", "compute:revert_resize": "", "compute:rebuild": "", "compute:reboot": "", "compute:snapshot": "", "compute:backup": "", "compute:shelve": "", "compute:shelve_offload": "", "compute:unshelve": "", "compute:security_groups:add_to_instance": "", "compute:security_groups:remove_from_instance": "", "compute:delete": "", "compute:soft_delete": "", "compute:force_delete": "", "compute:restore": "", "compute:swap_volume": "", "compute:volume_snapshot_create": "", "compute:volume_snapshot_delete": "", "compute:v3:servers:start": "", "compute:v3:servers:stop": "", "compute_extension:v3:os-access-ips": "", "compute_extension:accounts": "", "compute_extension:admin_actions:pause": "", "compute_extension:admin_actions:unpause": "", "compute_extension:admin_actions:suspend": "", "compute_extension:admin_actions:resume": "", "compute_extension:admin_actions:lock": "", "compute_extension:admin_actions:unlock": "", "compute_extension:admin_actions:resetNetwork": "", "compute_extension:admin_actions:injectNetworkInfo": "", "compute_extension:admin_actions:createBackup": "", "compute_extension:admin_actions:migrateLive": "", "compute_extension:admin_actions:resetState": "", "compute_extension:admin_actions:migrate": "", "compute_extension:v3:os-admin-actions:reset_network": "", "compute_extension:v3:os-admin-actions:inject_network_info": "", "compute_extension:v3:os-admin-actions:reset_state": "", "compute_extension:v3:os-admin-password": "", "compute_extension:aggregates": "rule:admin_api", "compute_extension:v3:os-aggregates:index": "rule:admin_api", "compute_extension:v3:os-aggregates:create": "rule:admin_api", "compute_extension:v3:os-aggregates:show": "rule:admin_api", "compute_extension:v3:os-aggregates:update": "rule:admin_api", "compute_extension:v3:os-aggregates:delete": "rule:admin_api", "compute_extension:v3:os-aggregates:add_host": "rule:admin_api", "compute_extension:v3:os-aggregates:remove_host": "rule:admin_api", "compute_extension:v3:os-aggregates:set_metadata": "rule:admin_api", "compute_extension:agents": "", "compute_extension:v3:os-agents": "", "compute_extension:attach_interfaces": "", "compute_extension:v3:os-attach-interfaces": "", "compute_extension:baremetal_nodes": "", "compute_extension:cells": "", "compute_extension:v3:os-cells": "", "compute_extension:certificates": "", "compute_extension:v3:os-certificates:create": "", "compute_extension:v3:os-certificates:show": "", "compute_extension:cloudpipe": "", "compute_extension:cloudpipe_update": "", "compute_extension:config_drive": "", "compute_extension:v3:os-config-drive": "", "compute_extension:console_output": "", "compute_extension:v3:os-console-output": "", "compute_extension:consoles": "", "compute_extension:v3:os-remote-consoles": "", "compute_extension:createserverext": "", "compute_extension:v3:os-create-backup": "", "compute_extension:deferred_delete": "", "compute_extension:v3:os-deferred-delete": "", "compute_extension:disk_config": "", "compute_extension:evacuate": "is_admin:True", "compute_extension:v3:os-evacuate": "is_admin:True", "compute_extension:extended_server_attributes": "", "compute_extension:v3:os-extended-server-attributes": "", "compute_extension:extended_status": "", "compute_extension:v3:os-extended-status": "", "compute_extension:extended_availability_zone": "", "compute_extension:v3:os-extended-availability-zone": "", "compute_extension:extended_ips": "", "compute_extension:extended_ips_mac": "", "compute_extension:extended_vif_net": "", "compute_extension:extended_volumes": "", "compute_extension:v3:os-extended-volumes": "", "compute_extension:v3:os-extended-volumes:swap": "", "compute_extension:v3:os-extended-volumes:attach": "", "compute_extension:v3:os-extended-volumes:detach": "", "compute_extension:v3:extensions:discoverable": "", "compute_extension:fixed_ips": "", "compute_extension:flavor_access": "", "compute_extension:flavor_access:addTenantAccess": "rule:admin_api", "compute_extension:flavor_access:removeTenantAccess": "rule:admin_api", "compute_extension:v3:flavor-access": "", "compute_extension:v3:flavor-access:remove_tenant_access": "rule:admin_api", "compute_extension:v3:flavor-access:add_tenant_access": "rule:admin_api", "compute_extension:flavor_disabled": "", "compute_extension:v3:os-flavor-disabled": "", "compute_extension:flavor_rxtx": "", "compute_extension:v3:os-flavor-rxtx": "", "compute_extension:flavor_swap": "", "compute_extension:flavorextradata": "", "compute_extension:flavorextraspecs:index": "", "compute_extension:flavorextraspecs:show": "", "compute_extension:flavorextraspecs:create": "is_admin:True", "compute_extension:flavorextraspecs:update": "is_admin:True", "compute_extension:flavorextraspecs:delete": "is_admin:True", "compute_extension:v3:flavor-extra-specs:index": "", "compute_extension:v3:flavor-extra-specs:show": "", "compute_extension:v3:flavor-extra-specs:create": "is_admin:True", "compute_extension:v3:flavor-extra-specs:update": "is_admin:True", "compute_extension:v3:flavor-extra-specs:delete": "is_admin:True", "compute_extension:flavormanage": "", "compute_extension:v3:flavor-manage": "", "compute_extension:v3:flavors:discoverable": "", "compute_extension:floating_ip_dns": "", "compute_extension:floating_ip_pools": "", "compute_extension:floating_ips": "", "compute_extension:floating_ips_bulk": "", "compute_extension:fping": "", "compute_extension:fping:all_tenants": "is_admin:True", "compute_extension:hide_server_addresses": "", "compute_extension:v3:os-hide-server-addresses": "", "compute_extension:hosts": "", "compute_extension:v3:os-hosts": "rule:admin_api", "compute_extension:hypervisors": "", "compute_extension:v3:os-hypervisors": "rule:admin_api", "compute_extension:image_size": "", "compute_extension:instance_actions": "", "compute_extension:v3:os-instance-actions": "", "compute_extension:instance_actions:events": "is_admin:True", "compute_extension:v3:os-instance-actions:events": "is_admin:True", "compute_extension:instance_usage_audit_log": "", "compute_extension:keypairs": "", "compute_extension:keypairs:index": "", "compute_extension:keypairs:show": "", "compute_extension:keypairs:create": "", "compute_extension:keypairs:delete": "", "compute_extension:v3:keypairs": "", "compute_extension:v3:keypairs:index": "", "compute_extension:v3:keypairs:show": "", "compute_extension:v3:keypairs:create": "", "compute_extension:v3:keypairs:delete": "", "compute_extension:v3:os-lock-server:lock": "", "compute_extension:v3:os-lock-server:unlock": "", "compute_extension:v3:os-migrate-server:migrate": "", "compute_extension:v3:os-migrate-server:migrate_live": "", "compute_extension:multinic": "", "compute_extension:v3:os-multinic": "", "compute_extension:networks": "", "compute_extension:networks:view": "", "compute_extension:networks_associate": "", "compute_extension:os-tenant-networks": "", "compute_extension:v3:os-pause-server:pause": "", "compute_extension:v3:os-pause-server:unpause": "", "compute_extension:v3:os-pci:pci_servers": "", "compute_extension:v3:os-pci:index": "", "compute_extension:v3:os-pci:detail": "", "compute_extension:v3:os-pci:show": "", "compute_extension:quotas:show": "", "compute_extension:quotas:update": "", "compute_extension:quotas:delete": "", "compute_extension:v3:os-quota-sets:show": "", "compute_extension:v3:os-quota-sets:update": "", "compute_extension:v3:os-quota-sets:delete": "", "compute_extension:v3:os-quota-sets:detail": "", "compute_extension:rescue": "", "compute_extension:v3:os-rescue": "", "compute_extension:security_group_default_rules": "", "compute_extension:security_groups": "", "compute_extension:v3:os-security-groups": "", "compute_extension:server_diagnostics": "", "compute_extension:v3:os-server-diagnostics": "", "compute_extension:server_groups": "", "compute_extension:server_password": "", "compute_extension:v3:os-server-password": "", "compute_extension:server_usage": "", "compute_extension:v3:os-server-usage": "", "compute_extension:services": "", "compute_extension:v3:os-services": "", "compute_extension:shelve": "", "compute_extension:shelveOffload": "", "compute_extension:v3:os-shelve:shelve": "", "compute_extension:v3:os-shelve:shelve_offload": "", "compute_extension:simple_tenant_usage:show": "", "compute_extension:simple_tenant_usage:list": "", "compute_extension:unshelve": "", "compute_extension:v3:os-shelve:unshelve": "", "compute_extension:v3:os-suspend-server:suspend": "", "compute_extension:v3:os-suspend-server:resume": "", "compute_extension:users": "", "compute_extension:virtual_interfaces": "", "compute_extension:virtual_storage_arrays": "", "compute_extension:volumes": "", "compute_extension:volume_attachments:index": "", "compute_extension:volume_attachments:show": "", "compute_extension:volume_attachments:create": "", "compute_extension:volume_attachments:update": "", "compute_extension:volume_attachments:delete": "", "compute_extension:volumetypes": "", "compute_extension:zones": "", "compute_extension:availability_zone:list": "", "compute_extension:v3:os-availability-zone:list": "", "compute_extension:availability_zone:detail": "is_admin:True", "compute_extension:v3:os-availability-zone:detail": "is_admin:True", "compute_extension:used_limits_for_admin": "is_admin:True", "compute_extension:migrations:index": "is_admin:True", "compute_extension:v3:os-migrations:index": "is_admin:True", "compute_extension:os-assisted-volume-snapshots:create": "", "compute_extension:os-assisted-volume-snapshots:delete": "", "compute_extension:console_auth_tokens": "is_admin:True", "compute_extension:v3:os-console-auth-tokens": "is_admin:True", "compute_extension:os-server-external-events:create": "rule:admin_api", "compute_extension:v3:os-server-external-events:create": "rule:admin_api", "volume:create": "", "volume:get": "", "volume:get_all": "", "volume:get_volume_metadata": "", "volume:delete": "", "volume:update": "", "volume:delete_volume_metadata": "", "volume:update_volume_metadata": "", "volume:attach": "", "volume:detach": "", "volume:reserve_volume": "", "volume:unreserve_volume": "", "volume:begin_detaching": "", "volume:roll_detaching": "", "volume:check_attach": "", "volume:check_detach": "", "volume:initialize_connection": "", "volume:terminate_connection": "", "volume:create_snapshot": "", "volume:delete_snapshot": "", "volume:get_snapshot": "", "volume:get_all_snapshots": "", "volume_extension:volume_admin_actions:reset_status": "rule:admin_api", "volume_extension:snapshot_admin_actions:reset_status": "rule:admin_api", "volume_extension:volume_admin_actions:force_delete": "rule:admin_api", "volume_extension:volume_actions:upload_image": "", "volume_extension:types_manage": "", "volume_extension:types_extra_specs": "", "network:get_all": "", "network:get": "", "network:create": "", "network:delete": "", "network:associate": "", "network:disassociate": "", "network:get_vifs_by_instance": "", "network:get_vif_by_mac_address": "", "network:allocate_for_instance": "", "network:deallocate_for_instance": "", "network:validate_networks": "", "network:get_instance_uuids_by_ip_filter": "", "network:get_instance_id_by_floating_address": "", "network:setup_networks_on_host": "", "network:get_floating_ip": "", "network:get_floating_ip_pools": "", "network:get_floating_ip_by_address": "", "network:get_floating_ips_by_project": "", "network:get_floating_ips_by_fixed_address": "", "network:allocate_floating_ip": "", "network:deallocate_floating_ip": "", "network:associate_floating_ip": "", "network:disassociate_floating_ip": "", "network:release_floating_ip": "", "network:migrate_instance_start": "", "network:migrate_instance_finish": "", "network:get_fixed_ip": "", "network:get_fixed_ip_by_address": "", "network:add_fixed_ip_to_instance": "", "network:remove_fixed_ip_from_instance": "", "network:add_network_to_project": "", "network:get_instance_nw_info": "", "network:get_dns_domains": "", "network:add_dns_entry": "", "network:modify_dns_entry": "", "network:delete_dns_entry": "", "network:get_dns_entries_by_address": "", "network:get_dns_entries_by_name": "", "network:create_private_dns_domain": "", "network:create_public_dns_domain": "", "network:delete_dns_domain": "" } """ nova-2014.1/nova/tests/test_ipv6.py0000664000175400017540000000657412323721477020330 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test suite for IPv6.""" from nova import ipv6 from nova import test class IPv6RFC2462TestCase(test.NoDBTestCase): """Unit tests for IPv6 rfc2462 backend operations.""" def setUp(self): super(IPv6RFC2462TestCase, self).setUp() self.flags(ipv6_backend='rfc2462') ipv6.reset_backend() def test_to_global(self): addr = ipv6.to_global('2001:db8::', '02:16:3e:33:44:55', 'test') self.assertEqual(addr, '2001:db8::16:3eff:fe33:4455') def test_to_mac(self): mac = ipv6.to_mac('2001:db8::216:3eff:fe33:4455') self.assertEqual(mac, '00:16:3e:33:44:55') def test_to_global_with_bad_mac(self): bad_mac = '02:16:3e:33:44:5Z' self.assertRaises(TypeError, ipv6.to_global, '2001:db8::', bad_mac, 'test') def test_to_global_with_bad_prefix(self): bad_prefix = '82' self.assertRaises(TypeError, ipv6.to_global, bad_prefix, '2001:db8::216:3eff:fe33:4455', 'test') def test_to_global_with_bad_project(self): bad_project = 'non-existent-project-name' self.assertRaises(TypeError, ipv6.to_global, '2001:db8::', '2001:db8::a94a:8fe5:ff33:4455', bad_project) class IPv6AccountIdentiferTestCase(test.NoDBTestCase): """Unit tests for IPv6 account_identifier backend operations.""" def setUp(self): super(IPv6AccountIdentiferTestCase, self).setUp() self.flags(ipv6_backend='account_identifier') ipv6.reset_backend() def test_to_global(self): addr = ipv6.to_global('2001:db8::', '02:16:3e:33:44:55', 'test') self.assertEqual(addr, '2001:db8::a94a:8fe5:ff33:4455') def test_to_mac(self): mac = ipv6.to_mac('2001:db8::a94a:8fe5:ff33:4455') self.assertEqual(mac, '02:16:3e:33:44:55') def test_to_global_with_bad_mac(self): bad_mac = '02:16:3e:33:44:5X' self.assertRaises(TypeError, ipv6.to_global, '2001:db8::', bad_mac, 'test') def test_to_global_with_bad_prefix(self): bad_prefix = '78' self.assertRaises(TypeError, ipv6.to_global, bad_prefix, '2001:db8::a94a:8fe5:ff33:4455', 'test') def test_to_global_with_bad_project(self): bad_project = 'non-existent-project-name' self.assertRaises(TypeError, ipv6.to_global, '2001:db8::', '2001:db8::a94a:8fe5:ff33:4455', bad_project) nova-2014.1/nova/tests/fake_crypto.py0000664000175400017540000001224412323721477020702 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. def ensure_ca_filesystem(): pass def fetch_ca(project_id=None): rootca = """-----BEGIN CERTIFICATE----- MIICyzCCAjSgAwIBAgIJAIJ/UoFWKoOUMA0GCSqGSIb3DQEBBAUAME4xEjAQBgNV BAoTCU5PVkEgUk9PVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMK Q2FsaWZvcm5pYTELMAkGA1UEBhMCVVMwHhcNMTIxMDAyMTg1NzQ1WhcNMTMxMDAy MTg1NzQ1WjBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWlu IFZpZXcxEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqG SIb3DQEBAQUAA4GNADCBiQKBgQCg0Bn8WSqbJF3QNTZUxo1TzmFBxuqvhjZLKbnQ IiShdVIWUK7RC8frq8FJI7dgJNmvkIBn9njABWDoZmurQRCzD65yCSbUc4R2ea5H IK4wQIui0CJykvMBNjAe3bzztVVs8/ccDTsjtqq3F/KeQkKzQVfSWBrJSmYtG5tO G+dOSwIDAQABo4GwMIGtMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFCljRfaNOsA/ 9mHuq0io7Lt83FtaMH4GA1UdIwR3MHWAFCljRfaNOsA/9mHuq0io7Lt83FtaoVKk UDBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcx EzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTggkAgn9SgVYqg5QwDQYJ KoZIhvcNAQEEBQADgYEAEbpJOOlpKCh5omwfAwAfFg1ml4h/FJiCH3PETmOCc+3l CtWTBd4MG8AoH7A3PU2JKAGVQ5XWo6+ihpW1RgfQpCnloI6vIeGcws+rSLnlzULt IvfCJpRg7iQdR3jZGt3295behtP1GsCqipJEulOkOaEIs8iLlXgSOG94Mkwlb4Q= -----END CERTIFICATE----- """ return rootca def generate_x509_cert(user_id, project_id, bits=1024): pk = """-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC4h2d63ijt9l0fIBRY37D3Yj2FYajCMUlftSoHNA4lEw0uTXnH Jjbd0j7HNlSADWeAMuaoSDNp7CIsXMt6iA/ASN5nFFTZlLRqIzYoI0RHiiSJjvSG d1n4Yrar1eC8tK3Rld1Zo6rj6tOuIxfFVJajJVZykCAHjGNNvulgfhBXFwIDAQAB AoGBAIjfxx4YU/vO1lwUC4OwyS92q3OYcPk6XdakJryZHDTb4NcLmNzjt6bqIK7b 2enyB2fMWdNRWvGiueZ2HmiRLDyOGsAVdEsHvL4qbr9EZGTqC8Qxx+zTevWWf6pB F1zxzbXNQDFZDf9kVsSLCkbMHITnW1k4MrM++9gfCO3WrfehAkEA4nd8TyCCZazq KMOQwFLTNaiVLeTXCtvGopl4ZNiKYZ1qI3KDXb2wbAyArFuERlotxFlylXpwtlMo SlI/C/sYqwJBANCX1sdfRJq8DpdP44ThWqOkWFLB9rBiwyyBt8746fX8amwr8eyz H44/z5GT/Vyp8qFsjkuDzeP93eeDnr2qE0UCP1zipRnPO6x4P5J4o+Y+EmLvwkAQ nCLYAaCvUbILHrbq2Z2wWjEYnEO03RHUd2xjkGH4TgcBMTmW4e+ZzEIduwJACnIw LVfWBbG5QVac3EC021EVoz9XbUnk4Eu2usS4Yrs7USN6QBJQWD1V1cKFg6h3ICJh leKJ4wsJm9h5kKH9yQJBAN8CaX223MlTSuBOVuIOwNA+09iLfx4UCLiH1fGMKDpe xVcmkM3qCnTqNxrAPSFdT9IyB3IXiaLWbvzl7MfiOwQ= -----END RSA PRIVATE KEY----- """ csr = """Certificate: Data: Version: 1 (0x0) Serial Number: 23 (0x17) Signature Algorithm: md5WithRSAEncryption Issuer: O=NOVA ROOT, L=Mountain View, ST=California, C=US Validity Not Before: Oct 2 19:31:45 2012 GMT Not After : Oct 2 19:31:45 2013 GMT Subject: C=US, ST=California, O=OpenStack, OU=NovaDev, """ """CN=openstack-fake-2012-10-02T19:31:45Z Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:b8:87:67:7a:de:28:ed:f6:5d:1f:20:14:58:df: b0:f7:62:3d:85:61:a8:c2:31:49:5f:b5:2a:07:34: 0e:25:13:0d:2e:4d:79:c7:26:36:dd:d2:3e:c7:36: 54:80:0d:67:80:32:e6:a8:48:33:69:ec:22:2c:5c: cb:7a:88:0f:c0:48:de:67:14:54:d9:94:b4:6a:23: 36:28:23:44:47:8a:24:89:8e:f4:86:77:59:f8:62: b6:ab:d5:e0:bc:b4:ad:d1:95:dd:59:a3:aa:e3:ea: d3:ae:23:17:c5:54:96:a3:25:56:72:90:20:07:8c: 63:4d:be:e9:60:7e:10:57:17 Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption 32:82:ff:8b:92:0e:8d:9c:6b:ce:7e:fe:34:16:2a:4c:47:4f: c7:28:a2:33:1e:48:56:2e:4b:e8:e8:e3:48:b1:3d:a3:43:21: ef:83:e7:df:e2:10:91:7e:9a:c0:4d:1e:96:68:2b:b9:f7:84: 7f:ec:84:8a:bf:bc:5e:50:05:d9:ce:4a:1a:bf:d2:bf:0c:d1: 7e:ec:64:c3:a5:37:78:a3:a6:2b:a1:b7:1c:cc:c8:b9:78:61: 98:50:3c:e6:28:34:f1:0e:62:bb:b5:d7:a1:dd:1f:38:c6:0d: 58:9f:81:67:ff:9c:32:fc:52:7e:6d:8c:91:43:49:fe:e3:48: bb:40 -----BEGIN CERTIFICATE----- MIICMzCCAZwCARcwDQYJKoZIhvcNAQEEBQAwTjESMBAGA1UEChMJTk9WQSBST09U MRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQIEwpDYWxpZm9ybmlhMQsw CQYDVQQGEwJVUzAeFw0xMjEwMDIxOTMxNDVaFw0xMzEwMDIxOTMxNDVaMHYxCzAJ BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQKEwlPcGVuU3Rh Y2sxEDAOBgNVBAsTB05vdmFEZXYxLDAqBgNVBAMTI29wZW5zdGFjay1mYWtlLTIw MTItMTAtMDJUMTk6MzE6NDVaMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4 h2d63ijt9l0fIBRY37D3Yj2FYajCMUlftSoHNA4lEw0uTXnHJjbd0j7HNlSADWeA MuaoSDNp7CIsXMt6iA/ASN5nFFTZlLRqIzYoI0RHiiSJjvSGd1n4Yrar1eC8tK3R ld1Zo6rj6tOuIxfFVJajJVZykCAHjGNNvulgfhBXFwIDAQABMA0GCSqGSIb3DQEB BAUAA4GBADKC/4uSDo2ca85+/jQWKkxHT8coojMeSFYuS+jo40ixPaNDIe+D59/i EJF+msBNHpZoK7n3hH/shIq/vF5QBdnOShq/0r8M0X7sZMOlN3ijpiuhtxzMyLl4 YZhQPOYoNPEOYru116HdHzjGDVifgWf/nDL8Un5tjJFDSf7jSLtA -----END CERTIFICATE----- """ return pk, csr nova-2014.1/nova/tests/test_matchers.py0000664000175400017540000002461412323721477021245 0ustar jenkinsjenkins00000000000000# Copyright 2012 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import testtools from testtools.tests.matchers import helpers from nova.tests import matchers class TestDictMatches(testtools.TestCase, helpers.TestMatchersInterface): matches_matcher = matchers.DictMatches( {'foo': 'bar', 'baz': 'DONTCARE', 'cat': {'tabby': True, 'fluffy': False}} ) matches_matches = [ {'foo': 'bar', 'baz': 'noox', 'cat': {'tabby': True, 'fluffy': False}}, {'foo': 'bar', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': False}}, ] matches_mismatches = [ {}, {'foo': 'bar', 'baz': 'qux'}, {'foo': 'bop', 'baz': 'qux', 'cat': {'tabby': True, 'fluffy': False}}, {'foo': 'bar', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': True}}, {'foo': 'bar', 'cat': {'tabby': True, 'fluffy': False}}, ] str_examples = [ ("DictMatches({'baz': 'DONTCARE', 'cat':" " {'fluffy': False, 'tabby': True}, 'foo': 'bar'})", matches_matcher), ] describe_examples = [ ("Keys in d1 and not d2: set(['foo', 'baz', 'cat'])." " Keys in d2 and not d1: set([])", {}, matches_matcher), ("Dictionaries do not match at fluffy. d1: False d2: True", {'foo': 'bar', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': True}}, matches_matcher), ("Dictionaries do not match at foo. d1: bar d2: bop", {'foo': 'bop', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': False}}, matches_matcher), ] class TestDictListMatches(testtools.TestCase, helpers.TestMatchersInterface): matches_matcher = matchers.DictListMatches( [{'foo': 'bar', 'baz': 'DONTCARE', 'cat': {'tabby': True, 'fluffy': False}}, {'dog': 'yorkie'}, ]) matches_matches = [ [{'foo': 'bar', 'baz': 'qoox', 'cat': {'tabby': True, 'fluffy': False}}, {'dog': 'yorkie'}], [{'foo': 'bar', 'baz': False, 'cat': {'tabby': True, 'fluffy': False}}, {'dog': 'yorkie'}], ] matches_mismatches = [ [], {}, [{'foo': 'bar', 'baz': 'qoox', 'cat': {'tabby': True, 'fluffy': True}}, {'dog': 'yorkie'}], [{'foo': 'bar', 'baz': False, 'cat': {'tabby': True, 'fluffy': False}}, {'cat': 'yorkie'}], [{'foo': 'bop', 'baz': False, 'cat': {'tabby': True, 'fluffy': False}}, {'dog': 'yorkie'}], ] str_examples = [ ("DictListMatches([{'baz': 'DONTCARE', 'cat':" " {'fluffy': False, 'tabby': True}, 'foo': 'bar'},\n" " {'dog': 'yorkie'}])", matches_matcher), ] describe_examples = [ ("Length mismatch: len(L1)=2 != len(L2)=0", {}, matches_matcher), ("Dictionaries do not match at fluffy. d1: True d2: False", [{'foo': 'bar', 'baz': 'qoox', 'cat': {'tabby': True, 'fluffy': True}}, {'dog': 'yorkie'}], matches_matcher), ] class TestIsSubDictOf(testtools.TestCase, helpers.TestMatchersInterface): matches_matcher = matchers.IsSubDictOf( {'foo': 'bar', 'baz': 'DONTCARE', 'cat': {'tabby': True, 'fluffy': False}} ) matches_matches = [ {'foo': 'bar', 'baz': 'noox', 'cat': {'tabby': True, 'fluffy': False}}, {'foo': 'bar', 'baz': 'quux'} ] matches_mismatches = [ {'foo': 'bop', 'baz': 'qux', 'cat': {'tabby': True, 'fluffy': False}}, {'foo': 'bar', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': True}}, {'foo': 'bar', 'cat': {'tabby': True, 'fluffy': False}, 'dog': None}, ] str_examples = [ ("IsSubDictOf({'foo': 'bar', 'baz': 'DONTCARE'," " 'cat': {'fluffy': False, 'tabby': True}})", matches_matcher), ] describe_examples = [ ("Dictionaries do not match at fluffy. d1: False d2: True", {'foo': 'bar', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': True}}, matches_matcher), ("Dictionaries do not match at foo. d1: bar d2: bop", {'foo': 'bop', 'baz': 'quux', 'cat': {'tabby': True, 'fluffy': False}}, matches_matcher), ] class TestXMLMatches(testtools.TestCase, helpers.TestMatchersInterface): matches_matcher = matchers.XMLMatches(""" some text here some other text here child 1 child 2 DONTCARE """) matches_matches = [""" some text here some other text here child 1 child 2 child 3 """, """ some text here some other text here child 1 child 2 blah """, ] matches_mismatches = [""" some text here mismatch text child 1 child 2 child 3 """, """ some text here some other text here child 1 child 2 child 3 """, """ some text here some other text here child 1 child 2 child 3 """, """ some text here some other text here child 1 child 4 child 2 child 3 """, """ some text here some other text here child 1 child 2 """, """ some text here some other text here child 1 child 2 child 3 child 4 """, ] str_examples = [ ("XMLMatches('\\n" "\\n" " some text here\\n" " some other text here\\n" " \\n" " \\n" " \\n" " child 1\\n" " child 2\\n" " DONTCARE\\n" " \\n" " \\n" "')", matches_matcher), ] describe_examples = [ ("/root/text[1]: XML text value mismatch: expected text value: " "'some other text here'; actual value: 'mismatch text'", """ some text here mismatch text child 1 child 2 child 3 """, matches_matcher), ("/root/attrs[2]: XML attributes mismatch: keys only in expected: " "key2; keys only in actual: key3", """ some text here some other text here child 1 child 2 child 3 """, matches_matcher), ("/root/attrs[2]: XML attribute value mismatch: expected value of " "attribute key1: 'spam'; actual value: 'quux'", """ some text here some other text here child 1 child 2 child 3 """, matches_matcher), ("/root/children[3]: XML tag mismatch at index 1: expected tag " "; actual tag ", """ some text here some other text here child 1 child 4 child 2 child 3 """, matches_matcher), ("/root/children[3]: XML expected child element not " "present at index 2", """ some text here some other text here child 1 child 2 """, matches_matcher), ("/root/children[3]: XML unexpected child element " "present at index 3", """ some text here some other text here child 1 child 2 child 3 child 4 """, matches_matcher), ] nova-2014.1/nova/tests/test_pipelib.py0000664000175400017540000000523012323721477021054 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova.cloudpipe import pipelib from nova import context from nova import crypto from nova import test from nova import utils CONF = cfg.CONF class PipelibTest(test.TestCase): def setUp(self): super(PipelibTest, self).setUp() self.cloudpipe = pipelib.CloudPipe() self.project = "222" self.user = "111" self.context = context.RequestContext(self.user, self.project) def test_get_encoded_zip(self): with utils.tempdir() as tmpdir: self.flags(ca_path=tmpdir) crypto.ensure_ca_filesystem() ret = self.cloudpipe.get_encoded_zip(self.project) self.assertTrue(ret) def test_launch_vpn_instance(self): self.stubs.Set(self.cloudpipe.compute_api, "create", lambda *a, **kw: (None, "r-fakeres")) with utils.tempdir() as tmpdir: self.flags(ca_path=tmpdir, keys_path=tmpdir) crypto.ensure_ca_filesystem() self.cloudpipe.launch_vpn_instance(self.context) def test_setup_security_group(self): group_name = "%s%s" % (self.project, CONF.vpn_key_suffix) # First attempt, does not exist (thus its created) res1_group = self.cloudpipe.setup_security_group(self.context) self.assertEqual(res1_group, group_name) # Second attempt, it exists in the DB res2_group = self.cloudpipe.setup_security_group(self.context) self.assertEqual(res1_group, res2_group) def test_setup_key_pair(self): key_name = "%s%s" % (self.project, CONF.vpn_key_suffix) with utils.tempdir() as tmpdir: self.flags(keys_path=tmpdir) # First attempt, key does not exist (thus it is generated) res1_key = self.cloudpipe.setup_key_pair(self.context) self.assertEqual(res1_key, key_name) # Second attempt, it exists in the DB res2_key = self.cloudpipe.setup_key_pair(self.context) self.assertEqual(res2_key, res1_key) nova-2014.1/nova/tests/test_wsgi.py0000664000175400017540000001734412323721477020412 0ustar jenkinsjenkins00000000000000# Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Unit tests for `nova.wsgi`.""" import os.path import tempfile import testtools import eventlet import eventlet.wsgi import requests import nova.exception from nova import test from nova.tests import utils import nova.wsgi from oslo.config import cfg import urllib2 import webob SSL_CERT_DIR = os.path.normpath(os.path.join( os.path.dirname(os.path.abspath(__file__)), 'ssl_cert')) CONF = cfg.CONF class TestLoaderNothingExists(test.NoDBTestCase): """Loader tests where os.path.exists always returns False.""" def setUp(self): super(TestLoaderNothingExists, self).setUp() self.stubs.Set(os.path, 'exists', lambda _: False) def test_relpath_config_not_found(self): self.flags(api_paste_config='api-paste.ini') self.assertRaises( nova.exception.ConfigNotFound, nova.wsgi.Loader, ) def test_asbpath_config_not_found(self): self.flags(api_paste_config='/etc/nova/api-paste.ini') self.assertRaises( nova.exception.ConfigNotFound, nova.wsgi.Loader, ) class TestLoaderNormalFilesystem(test.NoDBTestCase): """Loader tests with normal filesystem (unmodified os.path module).""" _paste_config = """ [app:test_app] use = egg:Paste#static document_root = /tmp """ def setUp(self): super(TestLoaderNormalFilesystem, self).setUp() self.config = tempfile.NamedTemporaryFile(mode="w+t") self.config.write(self._paste_config.lstrip()) self.config.seek(0) self.config.flush() self.loader = nova.wsgi.Loader(self.config.name) def test_config_found(self): self.assertEqual(self.config.name, self.loader.config_path) def test_app_not_found(self): self.assertRaises( nova.exception.PasteAppNotFound, self.loader.load_app, "nonexistent app", ) def test_app_found(self): url_parser = self.loader.load_app("test_app") self.assertEqual("/tmp", url_parser.directory) def tearDown(self): self.config.close() super(TestLoaderNormalFilesystem, self).tearDown() class TestWSGIServer(test.NoDBTestCase): """WSGI server tests.""" def test_no_app(self): server = nova.wsgi.Server("test_app", None) self.assertEqual("test_app", server.name) def test_custom_max_header_line(self): CONF.max_header_line = 4096 # Default value is 16384. server = nova.wsgi.Server("test_custom_max_header_line", None) self.assertEqual(CONF.max_header_line, eventlet.wsgi.MAX_HEADER_LINE) def test_start_random_port(self): server = nova.wsgi.Server("test_random_port", None, host="127.0.0.1", port=0) server.start() self.assertNotEqual(0, server.port) server.stop() server.wait() @testtools.skipIf(not utils.is_ipv6_supported(), "no ipv6 support") def test_start_random_port_with_ipv6(self): server = nova.wsgi.Server("test_random_port", None, host="::1", port=0) server.start() self.assertEqual("::1", server.host) self.assertNotEqual(0, server.port) server.stop() server.wait() def test_uri_length_limit(self): server = nova.wsgi.Server("test_uri_length_limit", None, host="127.0.0.1", max_url_len=16384) server.start() uri = "http://127.0.0.1:%d/%s" % (server.port, 10000 * 'x') resp = requests.get(uri) eventlet.sleep(0) self.assertNotEqual(resp.status_code, requests.codes.REQUEST_URI_TOO_LARGE) uri = "http://127.0.0.1:%d/%s" % (server.port, 20000 * 'x') resp = requests.get(uri) eventlet.sleep(0) self.assertEqual(resp.status_code, requests.codes.REQUEST_URI_TOO_LARGE) server.stop() server.wait() class TestWSGIServerWithSSL(test.NoDBTestCase): """WSGI server with SSL tests.""" def setUp(self): super(TestWSGIServerWithSSL, self).setUp() self.flags(enabled_ssl_apis=['fake_ssl'], ssl_cert_file=os.path.join(SSL_CERT_DIR, 'certificate.crt'), ssl_key_file=os.path.join(SSL_CERT_DIR, 'privatekey.key')) def test_ssl_server(self): def test_app(env, start_response): start_response('200 OK', {}) return ['PONG'] fake_ssl_server = nova.wsgi.Server("fake_ssl", test_app, host="127.0.0.1", port=0, use_ssl=True) fake_ssl_server.start() self.assertNotEqual(0, fake_ssl_server.port) cli = eventlet.connect(("localhost", fake_ssl_server.port)) cli = eventlet.wrap_ssl(cli, ca_certs=os.path.join(SSL_CERT_DIR, 'ca.crt')) cli.write('POST / HTTP/1.1\r\nHost: localhost\r\n' 'Connection: close\r\nContent-length:4\r\n\r\nPING') response = cli.read(8192) self.assertEqual(response[-4:], "PONG") fake_ssl_server.stop() fake_ssl_server.wait() def test_two_servers(self): def test_app(env, start_response): start_response('200 OK', {}) return ['PONG'] fake_ssl_server = nova.wsgi.Server("fake_ssl", test_app, host="127.0.0.1", port=0, use_ssl=True) fake_ssl_server.start() self.assertNotEqual(0, fake_ssl_server.port) fake_server = nova.wsgi.Server("fake", test_app, host="127.0.0.1", port=0) fake_server.start() self.assertNotEqual(0, fake_server.port) cli = eventlet.connect(("localhost", fake_ssl_server.port)) cli = eventlet.wrap_ssl(cli, ca_certs=os.path.join(SSL_CERT_DIR, 'ca.crt')) cli.write('POST / HTTP/1.1\r\nHost: localhost\r\n' 'Connection: close\r\nContent-length:4\r\n\r\nPING') response = cli.read(8192) self.assertEqual(response[-4:], "PONG") cli = eventlet.connect(("localhost", fake_server.port)) cli.sendall('POST / HTTP/1.1\r\nHost: localhost\r\n' 'Connection: close\r\nContent-length:4\r\n\r\nPING') response = cli.recv(8192) self.assertEqual(response[-4:], "PONG") fake_ssl_server.stop() fake_ssl_server.wait() @testtools.skipIf(not utils.is_ipv6_supported(), "no ipv6 support") def test_app_using_ipv6_and_ssl(self): greetings = 'Hello, World!!!' @webob.dec.wsgify def hello_world(req): return greetings server = nova.wsgi.Server("fake_ssl", hello_world, host="::1", port=0, use_ssl=True) server.start() response = urllib2.urlopen('https://[::1]:%d/' % server.port) self.assertEqual(greetings, response.read()) server.stop() server.wait() nova-2014.1/nova/tests/monkey_patch_example/0000775000175400017540000000000012323722546022211 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/monkey_patch_example/example_b.py0000664000175400017540000000162012323721477024520 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Example Module B for testing utils.monkey_patch().""" def example_function_b(): return 'Example function' class ExampleClassB(): def example_method(self): return 'Example method' def example_method_add(self, arg1, arg2): return arg1 + arg2 nova-2014.1/nova/tests/monkey_patch_example/example_a.py0000664000175400017540000000161712323721477024525 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Example Module A for testing utils.monkey_patch().""" def example_function_a(): return 'Example function' class ExampleClassA(): def example_method(self): return 'Example method' def example_method_add(self, arg1, arg2): return arg1 + arg2 nova-2014.1/nova/tests/monkey_patch_example/__init__.py0000664000175400017540000000212712323721477024326 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Example Module for testing utils.monkey_patch().""" CALLED_FUNCTION = [] def example_decorator(name, function): """decorator for notify which is used from utils.monkey_patch() :param name: name of the function :param function: - object of the function :returns: function -- decorated function """ def wrapped_func(*args, **kwarg): CALLED_FUNCTION.append(name) return function(*args, **kwarg) return wrapped_func nova-2014.1/nova/tests/test_availability_zones.py0000664000175400017540000002435212323721477023326 0ustar jenkinsjenkins00000000000000# Copyright 2013 Netease Corporation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests for availability zones """ from oslo.config import cfg from nova import availability_zones as az from nova import context from nova import db from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('internal_service_availability_zone', 'nova.availability_zones') CONF.import_opt('default_availability_zone', 'nova.availability_zones') class AvailabilityZoneTestCases(test.TestCase): """Test case for aggregate based availability zone.""" def setUp(self): super(AvailabilityZoneTestCases, self).setUp() self.host = 'me' self.availability_zone = 'nova-test' self.default_az = CONF.default_availability_zone self.default_in_az = CONF.internal_service_availability_zone self.context = context.get_admin_context() self.agg = self._create_az('az_agg', self.availability_zone) def tearDown(self): db.aggregate_delete(self.context, self.agg['id']) super(AvailabilityZoneTestCases, self).tearDown() def _create_az(self, agg_name, az_name): agg_meta = {'name': agg_name} agg = db.aggregate_create(self.context, agg_meta) metadata = {'availability_zone': az_name} db.aggregate_metadata_add(self.context, agg['id'], metadata) return agg def _update_az(self, aggregate, az_name): metadata = {'availability_zone': az_name} db.aggregate_update(self.context, aggregate['id'], metadata) def _create_service_with_topic(self, topic, host, disabled=False): values = { 'binary': 'bin', 'host': host, 'topic': topic, 'disabled': disabled, } return db.service_create(self.context, values) def _destroy_service(self, service): return db.service_destroy(self.context, service['id']) def _add_to_aggregate(self, service, aggregate): return db.aggregate_host_add(self.context, aggregate['id'], service['host']) def _delete_from_aggregate(self, service, aggregate): return db.aggregate_host_delete(self.context, aggregate['id'], service['host']) def test_rest_availability_zone_reset_cache(self): az._get_cache().add('cache', 'fake_value') az.reset_cache() self.assertIsNone(az._get_cache().get('cache')) def test_update_host_availability_zone_cache(self): """Test availability zone cache could be update.""" service = self._create_service_with_topic('compute', self.host) # Create a new aggregate with an AZ and add the host to the AZ az_name = 'az1' cache_key = az._make_cache_key(self.host) agg_az1 = self._create_az('agg-az1', az_name) self._add_to_aggregate(service, agg_az1) az.update_host_availability_zone_cache(self.context, self.host) self.assertEqual(az._get_cache().get(cache_key), 'az1') az.update_host_availability_zone_cache(self.context, self.host, 'az2') self.assertEqual(az._get_cache().get(cache_key), 'az2') def test_set_availability_zone_compute_service(self): """Test for compute service get right availability zone.""" service = self._create_service_with_topic('compute', self.host) services = db.service_get_all(self.context) # The service is not add into aggregate, so confirm it is default # availability zone. new_service = az.set_availability_zones(self.context, services)[0] self.assertEqual(new_service['availability_zone'], self.default_az) # The service is added into aggregate, confirm return the aggregate # availability zone. self._add_to_aggregate(service, self.agg) new_service = az.set_availability_zones(self.context, services)[0] self.assertEqual(new_service['availability_zone'], self.availability_zone) self._destroy_service(service) def test_set_availability_zone_unicode_key(self): """Test set availability zone cache key is unicode.""" service = self._create_service_with_topic('network', self.host) services = db.service_get_all(self.context) new_service = az.set_availability_zones(self.context, services)[0] self.assertIsInstance(services[0]['host'], unicode) cached_key = az._make_cache_key(services[0]['host']) self.assertIsInstance(cached_key, str) self._destroy_service(service) def test_set_availability_zone_not_compute_service(self): """Test not compute service get right availability zone.""" service = self._create_service_with_topic('network', self.host) services = db.service_get_all(self.context) new_service = az.set_availability_zones(self.context, services)[0] self.assertEqual(new_service['availability_zone'], self.default_in_az) self._destroy_service(service) def test_get_host_availability_zone(self): """Test get right availability zone by given host.""" self.assertEqual(self.default_az, az.get_host_availability_zone(self.context, self.host)) service = self._create_service_with_topic('compute', self.host) self._add_to_aggregate(service, self.agg) self.assertEqual(self.availability_zone, az.get_host_availability_zone(self.context, self.host)) def test_update_host_availability_zone(self): """Test availability zone could be update by given host.""" service = self._create_service_with_topic('compute', self.host) # Create a new aggregate with an AZ and add the host to the AZ az_name = 'az1' agg_az1 = self._create_az('agg-az1', az_name) self._add_to_aggregate(service, agg_az1) self.assertEqual(az_name, az.get_host_availability_zone(self.context, self.host)) # Update AZ new_az_name = 'az2' self._update_az(agg_az1, new_az_name) self.assertEqual(new_az_name, az.get_host_availability_zone(self.context, self.host)) def test_delete_host_availability_zone(self): """Test availability zone could be deleted successfully.""" service = self._create_service_with_topic('compute', self.host) # Create a new aggregate with an AZ and add the host to the AZ az_name = 'az1' agg_az1 = self._create_az('agg-az1', az_name) self._add_to_aggregate(service, agg_az1) self.assertEqual(az_name, az.get_host_availability_zone(self.context, self.host)) # Delete the AZ via deleting the aggregate self._delete_from_aggregate(service, agg_az1) self.assertEqual(self.default_az, az.get_host_availability_zone(self.context, self.host)) def test_get_availability_zones(self): """Test get_availability_zones.""" # When the param get_only_available of get_availability_zones is set # to default False, it returns two lists, zones with at least one # enabled services, and zones with no enabled services, # when get_only_available is set to True, only return a list of zones # with at least one enabled servies. # Use the following test data: # # zone host enabled # nova-test host1 Yes # nova-test host2 No # nova-test2 host3 Yes # nova-test3 host4 No # host5 No agg2 = self._create_az('agg-az2', 'nova-test2') agg3 = self._create_az('agg-az3', 'nova-test3') service1 = self._create_service_with_topic('compute', 'host1', disabled=False) service2 = self._create_service_with_topic('compute', 'host2', disabled=True) service3 = self._create_service_with_topic('compute', 'host3', disabled=False) service4 = self._create_service_with_topic('compute', 'host4', disabled=True) self._create_service_with_topic('compute', 'host5', disabled=True) self._add_to_aggregate(service1, self.agg) self._add_to_aggregate(service2, self.agg) self._add_to_aggregate(service3, agg2) self._add_to_aggregate(service4, agg3) zones, not_zones = az.get_availability_zones(self.context) self.assertEqual(zones, ['nova-test', 'nova-test2']) self.assertEqual(not_zones, ['nova-test3', 'nova']) zones = az.get_availability_zones(self.context, True) self.assertEqual(zones, ['nova-test', 'nova-test2']) def test_get_instance_availability_zone_default_value(self): """Test get right availability zone by given an instance.""" fake_inst_id = 162 fake_inst = fakes.stub_instance(fake_inst_id, host=self.host) self.assertEqual(self.default_az, az.get_instance_availability_zone(self.context, fake_inst)) def test_get_instance_availability_zone_from_aggregate(self): """Test get availability zone from aggregate by given an instance.""" host = 'host170' service = self._create_service_with_topic('compute', host) self._add_to_aggregate(service, self.agg) fake_inst_id = 174 fake_inst = fakes.stub_instance(fake_inst_id, host=host) self.assertEqual(self.availability_zone, az.get_instance_availability_zone(self.context, fake_inst)) nova-2014.1/nova/tests/pci/0000775000175400017540000000000012323722546016570 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/pci/test_pci_whitelist.py0000664000175400017540000000745512323721477023065 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import exception from nova.objects import pci_device from nova.pci import pci_whitelist from nova import test dev_dict = { 'compute_node_id': 1, 'address': 'a', 'product_id': '0001', 'vendor_id': '8086', 'status': 'available', } class PciHostDevicesWhiteListTestCase(test.NoDBTestCase): def setUp(self): super(PciHostDevicesWhiteListTestCase, self).setUp() def test_whitelist_wrong_format(self): white_list = '[{"vendor_x_id":"8086", "product_id":"0001"}]' self.assertRaises( exception.PciConfigInvalidWhitelist, pci_whitelist.PciHostDevicesWhiteList, white_list ) white_list = '[{"vendor_id":"80863", "product_id":"0001"}]' self.assertRaises( exception.PciConfigInvalidWhitelist, pci_whitelist.PciHostDevicesWhiteList, white_list ) def test_whitelist_missed_fields(self): white_list = '[{"vendor_id":"80863"}]' self.assertRaises( exception.PciConfigInvalidWhitelist, pci_whitelist.PciHostDevicesWhiteList, white_list ) def test_whitelist(self): white_list = '[{"product_id":"0001", "vendor_id":"8086"}]' parsed = pci_whitelist.PciHostDevicesWhiteList([white_list]) self.assertEqual(parsed.spec, [{'vendor_id': '8086', 'product_id': '0001'}]) def test_whitelist_empty(self): dev = pci_device.PciDevice.create(dev_dict) parsed = pci_whitelist.PciHostDevicesWhiteList() self.assertEqual(parsed.device_assignable(dev), False) def test_whitelist_multiple(self): white_list_1 = '[{"product_id":"0001", "vendor_id":"8086"}]' white_list_2 = '[{"product_id":"0002", "vendor_id":"8087"}]' parsed = pci_whitelist.PciHostDevicesWhiteList( [white_list_1, white_list_2]) self.assertEqual(parsed.spec, [{'vendor_id': '8086', 'product_id': '0001'}, {'vendor_id': '8087', 'product_id': '0002'}]) def test_device_assignable(self): dev = pci_device.PciDevice.create(dev_dict) white_list = '[{"product_id":"0001", "vendor_id":"8086"}]' parsed = pci_whitelist.PciHostDevicesWhiteList([white_list]) self.assertEqual(parsed.device_assignable(dev), True) def test_device_assignable_multiple(self): dev = pci_device.PciDevice.create(dev_dict) white_list_1 = '[{"product_id":"0001", "vendor_id":"8086"}]' white_list_2 = '[{"product_id":"0002", "vendor_id":"8087"}]' parsed = pci_whitelist.PciHostDevicesWhiteList( [white_list_1, white_list_2]) self.assertEqual(parsed.device_assignable(dev), True) dev.vendor_id = '8087' dev.product_id = '0002' self.assertEqual(parsed.device_assignable(dev), True) def test_get_pci_devices_filter(self): white_list_1 = '[{"product_id":"0001", "vendor_id":"8086"}]' self.flags(pci_passthrough_whitelist=[white_list_1]) pci_filter = pci_whitelist.get_pci_devices_filter() dev = pci_device.PciDevice.create(dev_dict) self.assertEqual(pci_filter.device_assignable(dev), True) nova-2014.1/nova/tests/pci/test_pci_utils.py0000664000175400017540000000447112323721477022204 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Intel, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import exception from nova.pci import pci_utils from nova import test class PciDeviceMatchTestCase(test.NoDBTestCase): def setUp(self): super(PciDeviceMatchTestCase, self).setUp() self.fake_pci_1 = {'vendor_id': 'v1', 'device_id': 'd1'} def test_single_spec_match(self): self.assertTrue(pci_utils.pci_device_prop_match( self.fake_pci_1, [{'vendor_id': 'v1', 'device_id': 'd1'}])) def test_multiple_spec_match(self): self.assertTrue(pci_utils.pci_device_prop_match( self.fake_pci_1, [{'vendor_id': 'v1', 'device_id': 'd1'}, {'vendor_id': 'v3', 'device_id': 'd3'}])) def test_spec_dismatch(self): self.assertFalse(pci_utils.pci_device_prop_match( self.fake_pci_1, [{'vendor_id': 'v4', 'device_id': 'd4'}, {'vendor_id': 'v3', 'device_id': 'd3'}])) def test_spec_extra_key(self): self.assertFalse(pci_utils.pci_device_prop_match( self.fake_pci_1, [{'vendor_id': 'v1', 'device_id': 'd1', 'wrong_key': 'k1'}])) class PciDeviceAddressParserTestCase(test.NoDBTestCase): def test_parse_address(self): self.parse_result = pci_utils.parse_address("0000:04:12.6") self.assertEqual(self.parse_result, ('0000', '04', '12', '6')) def test_parse_address_wrong(self): self.assertRaises(exception.PciDeviceWrongAddressFormat, pci_utils.parse_address, "0000:04.12:6") def test_parse_address_invalid_character(self): self.assertRaises(exception.PciDeviceWrongAddressFormat, pci_utils.parse_address, "0000:h4.12:6") nova-2014.1/nova/tests/pci/test_pci_stats.py0000664000175400017540000001036512323721477022201 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import exception from nova.objects import pci_device from nova.openstack.common import jsonutils from nova.pci import pci_stats as pci from nova import test fake_pci_1 = { 'compute_node_id': 1, 'address': '0000:00:00.1', 'product_id': 'p1', 'vendor_id': 'v1', 'status': 'available', 'extra_k1': 'v1', } fake_pci_2 = dict(fake_pci_1, vendor_id='v2', product_id='p2', address='0000:00:00.2') fake_pci_3 = dict(fake_pci_1, address='0000:00:00.3') pci_requests = [{'count': 1, 'spec': [{'vendor_id': 'v1'}]}, {'count': 1, 'spec': [{'vendor_id': 'v2'}]}] pci_requests_multiple = [{'count': 1, 'spec': [{'vendor_id': 'v1'}]}, {'count': 3, 'spec': [{'vendor_id': 'v2'}]}] class PciDeviceStatsTestCase(test.NoDBTestCase): def _create_fake_devs(self): self.fake_dev_1 = pci_device.PciDevice.create(fake_pci_1) self.fake_dev_2 = pci_device.PciDevice.create(fake_pci_2) self.fake_dev_3 = pci_device.PciDevice.create(fake_pci_3) map(self.pci_stats.add_device, [self.fake_dev_1, self.fake_dev_2, self.fake_dev_3]) def setUp(self): super(PciDeviceStatsTestCase, self).setUp() self.pci_stats = pci.PciDeviceStats() self._create_fake_devs() def test_add_device(self): self.assertEqual(len(self.pci_stats.pools), 2) self.assertEqual(set([d['vendor_id'] for d in self.pci_stats]), set(['v1', 'v2'])) self.assertEqual(set([d['count'] for d in self.pci_stats]), set([1, 2])) def test_remove_device(self): self.pci_stats.consume_device(self.fake_dev_2) self.assertEqual(len(self.pci_stats.pools), 1) self.assertEqual(self.pci_stats.pools[0]['count'], 2) self.assertEqual(self.pci_stats.pools[0]['vendor_id'], 'v1') def test_remove_device_exception(self): self.pci_stats.consume_device(self.fake_dev_2) self.assertRaises(exception.PciDevicePoolEmpty, self.pci_stats.consume_device, self.fake_dev_2) def test_json_creat(self): m = jsonutils.dumps(self.pci_stats) new_stats = pci.PciDeviceStats(m) self.assertEqual(len(new_stats.pools), 2) self.assertEqual(set([d['count'] for d in new_stats]), set([1, 2])) self.assertEqual(set([d['vendor_id'] for d in new_stats]), set(['v1', 'v2'])) def test_support_requests(self): self.assertEqual(self.pci_stats.support_requests(pci_requests), True) self.assertEqual(len(self.pci_stats.pools), 2) self.assertEqual(set([d['count'] for d in self.pci_stats]), set((1, 2))) def test_support_requests_failed(self): self.assertEqual( self.pci_stats.support_requests(pci_requests_multiple), False) self.assertEqual(len(self.pci_stats.pools), 2) self.assertEqual(set([d['count'] for d in self.pci_stats]), set([1, 2])) def test_apply_requests(self): self.pci_stats.apply_requests(pci_requests) self.assertEqual(len(self.pci_stats.pools), 1) self.assertEqual(self.pci_stats.pools[0]['vendor_id'], 'v1') self.assertEqual(self.pci_stats.pools[0]['count'], 1) def test_apply_requests_failed(self): self.assertRaises(exception.PciDeviceRequestFailed, self.pci_stats.apply_requests, pci_requests_multiple) nova-2014.1/nova/tests/pci/test_pci_manager.py0000664000175400017540000003521012323721510022435 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.objects import instance from nova.objects import pci_device from nova.pci import pci_manager from nova.pci import pci_request from nova import test from nova.tests.api.openstack import fakes fake_pci = { 'compute_node_id': 1, 'address': '0000:00:00.1', 'product_id': 'p', 'vendor_id': 'v', 'status': 'available'} fake_pci_1 = dict(fake_pci, address='0000:00:00.2', product_id='p1', vendor_id='v1') fake_pci_2 = dict(fake_pci, address='0000:00:00.3') fake_db_dev = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 1, 'compute_node_id': 1, 'address': '0000:00:00.1', 'vendor_id': 'v', 'product_id': 'p', 'dev_type': 't', 'status': 'available', 'dev_id': 'i', 'label': 'l', 'instance_uuid': None, 'extra_info': '{}', } fake_db_dev_1 = dict(fake_db_dev, vendor_id='v1', product_id='p1', id=2, address='0000:00:00.2') fake_db_dev_2 = dict(fake_db_dev, id=3, address='0000:00:00.3') fake_db_devs = [fake_db_dev, fake_db_dev_1, fake_db_dev_2] fake_pci_requests = [ {'count': 1, 'spec': [{'vendor_id': 'v'}]}, {'count': 1, 'spec': [{'vendor_id': 'v1'}]}] class PciDevTrackerTestCase(test.TestCase): def _create_fake_instance(self): self.inst = instance.Instance() self.inst.uuid = 'fake-inst-uuid' self.inst.pci_devices = pci_device.PciDeviceList() self.inst.vm_state = vm_states.ACTIVE self.inst.task_state = None def _fake_get_pci_devices(self, ctxt, node_id): return fake_db_devs[:] def _fake_pci_device_update(self, ctxt, node_id, address, value): self.update_called += 1 self.called_values = value fake_return = copy.deepcopy(fake_db_dev) return fake_return def _fake_pci_device_destroy(self, ctxt, node_id, address): self.destroy_called += 1 def _fake_get_instance_pci_requests(self, instance, prefix=''): return self.pci_requests def setUp(self): super(PciDevTrackerTestCase, self).setUp() self.stubs.Set(db, 'pci_device_get_all_by_node', self._fake_get_pci_devices) self.stubs.Set(pci_request, 'get_instance_pci_requests', self._fake_get_instance_pci_requests) self._create_fake_instance() self.tracker = pci_manager.PciDevTracker(1) def test_pcidev_tracker_create(self): self.assertEqual(len(self.tracker.pci_devs), 3) self.assertEqual(len(self.tracker.free_devs), 3) self.assertEqual(self.tracker.stale.keys(), []) self.assertEqual(len(self.tracker.stats.pools), 2) self.assertEqual(self.tracker.node_id, 1) def test_pcidev_tracker_create_no_nodeid(self): self.tracker = pci_manager.PciDevTracker() self.assertEqual(len(self.tracker.pci_devs), 0) def test_get_free_devices_for_requests(self): devs = self.tracker.get_free_devices_for_requests(fake_pci_requests) self.assertEqual(len(devs), 2) self.assertEqual(set([dev['vendor_id'] for dev in devs]), set(['v1', 'v'])) def test_get_free_devices_for_requests_empty(self): devs = self.tracker.get_free_devices_for_requests([]) self.assertEqual(len(devs), 0) def test_get_free_devices_for_requests_meet_partial(self): requests = copy.deepcopy(fake_pci_requests) requests[1]['count'] = 2 requests[1]['spec'][0]['vendor_id'] = 'v' devs = self.tracker.get_free_devices_for_requests(requests) self.assertEqual(len(devs), 0) def test_set_hvdev_new_dev(self): fake_pci_3 = dict(fake_pci, address='0000:00:00.4', vendor_id='v2') fake_pci_devs = [copy.deepcopy(fake_pci), copy.deepcopy(fake_pci_1), copy.deepcopy(fake_pci_2), copy.deepcopy(fake_pci_3)] self.tracker.set_hvdevs(fake_pci_devs) self.assertEqual(len(self.tracker.pci_devs), 4) self.assertEqual(set([dev['address'] for dev in self.tracker.pci_devs]), set(['0000:00:00.1', '0000:00:00.2', '0000:00:00.3', '0000:00:00.4'])) self.assertEqual(set([dev['vendor_id'] for dev in self.tracker.pci_devs]), set(['v', 'v1', 'v2'])) def test_set_hvdev_changed(self): fake_pci_v2 = dict(fake_pci, address='0000:00:00.2', vendor_id='v1') fake_pci_devs = [copy.deepcopy(fake_pci), copy.deepcopy(fake_pci_2), copy.deepcopy(fake_pci_v2)] self.tracker.set_hvdevs(fake_pci_devs) self.assertEqual(set([dev['vendor_id'] for dev in self.tracker.pci_devs]), set(['v', 'v1'])) def test_set_hvdev_remove(self): self.tracker.set_hvdevs([fake_pci]) self.assertEqual(len([dev for dev in self.tracker.pci_devs if dev['status'] == 'removed']), 2) def test_set_hvdev_changed_stal(self): self.pci_requests = [{'count': 1, 'spec': [{'vendor_id': 'v1'}]}] self.tracker._claim_instance(self.inst) fake_pci_3 = dict(fake_pci, address='0000:00:00.2', vendor_id='v2') fake_pci_devs = [copy.deepcopy(fake_pci), copy.deepcopy(fake_pci_2), copy.deepcopy(fake_pci_3)] self.tracker.set_hvdevs(fake_pci_devs) self.assertEqual(len(self.tracker.stale), 1) self.assertEqual(self.tracker.stale['0000:00:00.2']['vendor_id'], 'v2') def test_update_pci_for_instance_active(self): self.pci_requests = fake_pci_requests self.tracker.update_pci_for_instance(self.inst) self.assertEqual(len(self.tracker.free_devs), 1) self.assertEqual(self.tracker.free_devs[0]['vendor_id'], 'v') def test_update_pci_for_instance_fail(self): self.pci_requests = copy.deepcopy(fake_pci_requests) self.pci_requests[0]['count'] = 4 self.assertRaises(exception.PciDeviceRequestFailed, self.tracker.update_pci_for_instance, self.inst) def test_update_pci_for_instance_deleted(self): self.pci_requests = fake_pci_requests self.tracker.update_pci_for_instance(self.inst) self.assertEqual(len(self.tracker.free_devs), 1) self.inst.vm_state = vm_states.DELETED self.tracker.update_pci_for_instance(self.inst) self.assertEqual(len(self.tracker.free_devs), 3) self.assertEqual(set([dev['vendor_id'] for dev in self.tracker.pci_devs]), set(['v', 'v1'])) def test_update_pci_for_instance_resize_source(self): self.pci_requests = fake_pci_requests self.tracker.update_pci_for_instance(self.inst) self.assertEqual(len(self.tracker.free_devs), 1) self.inst.task_state = task_states.RESIZE_MIGRATED self.tracker.update_pci_for_instance(self.inst) self.assertEqual(len(self.tracker.free_devs), 3) def test_update_pci_for_instance_resize_dest(self): self.pci_requests = fake_pci_requests self.tracker.update_pci_for_migration(self.inst) self.assertEqual(len(self.tracker.free_devs), 1) self.assertEqual(len(self.tracker.claims['fake-inst-uuid']), 2) self.assertNotIn('fake-inst-uuid', self.tracker.allocations) self.inst.task_state = task_states.RESIZE_FINISH self.tracker.update_pci_for_instance(self.inst) self.assertEqual(len(self.tracker.allocations['fake-inst-uuid']), 2) self.assertNotIn('fake-inst-uuid', self.tracker.claims) def test_update_pci_for_migration_in(self): self.pci_requests = fake_pci_requests self.tracker.update_pci_for_migration(self.inst) self.assertEqual(len(self.tracker.free_devs), 1) self.assertEqual(self.tracker.free_devs[0]['vendor_id'], 'v') def test_update_pci_for_migration_out(self): self.pci_requests = fake_pci_requests self.tracker.update_pci_for_migration(self.inst) self.tracker.update_pci_for_migration(self.inst, sign=-1) self.assertEqual(len(self.tracker.free_devs), 3) self.assertEqual(set([dev['vendor_id'] for dev in self.tracker.pci_devs]), set(['v', 'v1'])) def test_save(self): self.stubs.Set(db, "pci_device_update", self._fake_pci_device_update) ctxt = context.get_admin_context() fake_pci_v3 = dict(fake_pci, address='0000:00:00.2', vendor_id='v3') fake_pci_devs = [copy.deepcopy(fake_pci), copy.deepcopy(fake_pci_2), copy.deepcopy(fake_pci_v3)] self.tracker.set_hvdevs(fake_pci_devs) self.update_called = 0 self.tracker.save(ctxt) self.assertEqual(self.update_called, 3) def test_save_removed(self): self.stubs.Set(db, "pci_device_update", self._fake_pci_device_update) self.stubs.Set(db, "pci_device_destroy", self._fake_pci_device_destroy) self.destroy_called = 0 ctxt = context.get_admin_context() self.assertEqual(len(self.tracker.pci_devs), 3) dev = self.tracker.pci_devs.objects[0] self.update_called = 0 dev.remove() self.tracker.save(ctxt) self.assertEqual(len(self.tracker.pci_devs), 2) self.assertEqual(self.destroy_called, 1) def test_set_compute_node_id(self): self.tracker = pci_manager.PciDevTracker() fake_pci_devs = [copy.deepcopy(fake_pci), copy.deepcopy(fake_pci_1), copy.deepcopy(fake_pci_2)] self.tracker.set_hvdevs(fake_pci_devs) self.tracker.set_compute_node_id(1) self.assertEqual(self.tracker.node_id, 1) self.assertEqual(self.tracker.pci_devs[0].compute_node_id, 1) fake_pci_3 = dict(fake_pci, address='0000:00:00.4', vendor_id='v2') fake_pci_devs = [copy.deepcopy(fake_pci), copy.deepcopy(fake_pci_1), copy.deepcopy(fake_pci_3), copy.deepcopy(fake_pci_3)] self.tracker.set_hvdevs(fake_pci_devs) for dev in self.tracker.pci_devs: self.assertEqual(dev.compute_node_id, 1) def test_clean_usage(self): inst_2 = copy.copy(self.inst) inst_2.uuid = 'uuid5' inst = {'uuid': 'uuid1', 'vm_state': vm_states.BUILDING} migr = {'instance_uuid': 'uuid2', 'vm_state': vm_states.BUILDING} orph = {'uuid': 'uuid3', 'vm_state': vm_states.BUILDING} self.pci_requests = [{'count': 1, 'spec': [{'vendor_id': 'v'}]}] self.tracker.update_pci_for_instance(self.inst) self.pci_requests = [{'count': 1, 'spec': [{'vendor_id': 'v1'}]}] self.tracker.update_pci_for_instance(inst_2) self.assertEqual(len(self.tracker.free_devs), 1) self.assertEqual(self.tracker.free_devs[0]['vendor_id'], 'v') self.tracker.clean_usage([self.inst], [migr], [orph]) self.assertEqual(len(self.tracker.free_devs), 2) self.assertEqual( set([dev['vendor_id'] for dev in self.tracker.free_devs]), set(['v', 'v1'])) def test_clean_usage_claims(self): inst_2 = copy.copy(self.inst) inst_2.uuid = 'uuid5' inst = {'uuid': 'uuid1', 'vm_state': vm_states.BUILDING} migr = {'instance_uuid': 'uuid2', 'vm_state': vm_states.BUILDING} orph = {'uuid': 'uuid3', 'vm_state': vm_states.BUILDING} self.pci_requests = [{'count': 1, 'spec': [{'vendor_id': 'v'}]}] self.tracker.update_pci_for_instance(self.inst) self.pci_requests = [{'count': 1, 'spec': [{'vendor_id': 'v1'}]}] self.tracker.update_pci_for_migration(inst_2) self.assertEqual(len(self.tracker.free_devs), 1) self.tracker.clean_usage([self.inst], [migr], [orph]) self.assertEqual(len(self.tracker.free_devs), 2) self.assertEqual( set([dev['vendor_id'] for dev in self.tracker.free_devs]), set(['v', 'v1'])) def test_clean_usage_no_request_match_no_claims(self): # Tests the case that there is no match for the request so the # claims mapping is set to None for the instance when the tracker # calls clean_usage. self.pci_requests = None self.tracker.update_pci_for_migration(instance=self.inst, sign=1) self.assertEqual(3, len(self.tracker.free_devs)) self.tracker.clean_usage([], [], []) self.assertEqual(3, len(self.tracker.free_devs)) self.assertEqual( set([dev['address'] for dev in self.tracker.free_devs]), set(['0000:00:00.1', '0000:00:00.2', '0000:00:00.3'])) class PciGetInstanceDevs(test.TestCase): def test_get_devs_non_object(self): def _fake_pci_device_get_by_instance_uuid(context, uuid): self._get_by_uuid = True return [] instance = fakes.stub_instance(id=1) self.stubs.Set(db, 'pci_device_get_all_by_instance_uuid', _fake_pci_device_get_by_instance_uuid) self._get_by_uuid = False devices = pci_manager.get_instance_pci_devs(instance) self.assertEqual(self._get_by_uuid, True) def test_get_devs_object(self): def _fake_obj_load_attr(foo, attrname): if attrname == 'pci_devices': self.load_attr_called = True foo.pci_devices = pci_device.PciDeviceList() inst = fakes.stub_instance(id='1') ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_get') db.instance_get(ctxt, '1', columns_to_join=[] ).AndReturn(inst) self.mox.ReplayAll() inst = instance.Instance.get_by_id(ctxt, '1', expected_attrs=[]) self.stubs.Set(instance.Instance, 'obj_load_attr', _fake_obj_load_attr) self.load_attr_called = False devices = pci_manager.get_instance_pci_devs(inst) self.assertEqual(self.load_attr_called, True) nova-2014.1/nova/tests/pci/__init__.py0000664000175400017540000000000012323721477020671 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/pci/test_pci_request.py0000664000175400017540000002505612323721477022536 0ustar jenkinsjenkins00000000000000# Copyright 2013 Intel Corporation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for PCI request.""" from nova import exception from nova.openstack.common import jsonutils from nova.pci import pci_request as pci_request from nova import test _fake_alias1 = """{ "name": "QuicAssist", "capability_type": "pci", "product_id": "4443", "vendor_id": "8086", "device_type": "ACCEL" }""" _fake_alias11 = """{ "name": "QuicAssist", "capability_type": "pci", "product_id": "4444", "vendor_id": "8086", "device_type": "ACCEL" }""" _fake_alias2 = """{ "name": "xxx", "capability_type": "pci", "product_id": "1111", "vendor_id": "1111", "device_type": "N" }""" _fake_alias3 = """{ "name": "IntelNIC", "capability_type": "pci", "product_id": "1111", "vendor_id": "8086", "device_type": "NIC" }""" class AliasTestCase(test.NoDBTestCase): def setUp(self): super(AliasTestCase, self).setUp() def test_good_alias(self): self.flags(pci_alias=[_fake_alias1]) als = pci_request._get_alias_from_config() self.assertIsInstance(als['QuicAssist'], list) expect_dict = { "capability_type": "pci", "product_id": "4443", "vendor_id": "8086", "device_type": "ACCEL" } self.assertEqual(expect_dict, als['QuicAssist'][0]) def test_multispec_alias(self): self.flags(pci_alias=[_fake_alias1, _fake_alias11]) als = pci_request._get_alias_from_config() self.assertIsInstance(als['QuicAssist'], list) expect_dict1 = { "capability_type": "pci", "product_id": "4443", "vendor_id": "8086", "device_type": "ACCEL" } expect_dict2 = { "capability_type": "pci", "product_id": "4444", "vendor_id": "8086", "device_type": "ACCEL" } self.assertEqual(expect_dict1, als['QuicAssist'][0]) self.assertEqual(expect_dict2, als['QuicAssist'][1]) def test_wrong_type_aliase(self): self.flags(pci_alias=[_fake_alias2]) self.assertRaises(exception.PciInvalidAlias, pci_request._get_alias_from_config) def test_wrong_product_id_aliase(self): self.flags(pci_alias=[ """{ "name": "xxx", "capability_type": "pci", "product_id": "g111", "vendor_id": "1111", "device_type": "NIC" }"""]) self.assertRaises(exception.PciInvalidAlias, pci_request._get_alias_from_config) def test_wrong_vendor_id_aliase(self): self.flags(pci_alias=[ """{ "name": "xxx", "capability_type": "pci", "product_id": "1111", "vendor_id": "0xg111", "device_type": "NIC" }"""]) self.assertRaises(exception.PciInvalidAlias, pci_request._get_alias_from_config) def test_wrong_cap_type_aliase(self): self.flags(pci_alias=[ """{ "name": "xxx", "capability_type": "usb", "product_id": "1111", "vendor_id": "8086", "device_type": "NIC" }"""]) self.assertRaises(exception.PciInvalidAlias, pci_request._get_alias_from_config) def test_dup_aliase(self): self.flags(pci_alias=[ """{ "name": "xxx", "capability_type": "pci", "product_id": "1111", "vendor_id": "8086", "device_type": "NIC" }""", """{ "name": "xxx", "capability_type": "pci", "product_id": "1111", "vendor_id": "8086", "device_type": "ACCEL" }"""]) self.assertRaises( exception.PciInvalidAlias, pci_request._get_alias_from_config) def test_aliase_2_request(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [ {'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': 'ACCEL', 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}, {'count': 1, 'spec': [{'vendor_id': '8086', 'product_id': '1111', 'device_type': "NIC", 'capability_type': 'pci'}], 'alias_name': 'IntelNIC'}, ] requests = pci_request._translate_alias_to_requests( "QuicAssist : 3, IntelNIC: 1") self.assertEqual(set([p['count'] for p in requests]), set([1, 3])) exp_real = zip(expect_request, requests) for exp, real in exp_real: self.assertEqual(real, exp) def test_aliase_2_request_invalid(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) self.assertRaises(exception.PciRequestAliasNotDefined, pci_request._translate_alias_to_requests, "QuicAssistX : 3") def test_get_pci_requests_from_flavor(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [ {'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': "ACCEL", 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}, {'count': 1, 'spec': [{'vendor_id': '8086', 'product_id': '1111', 'device_type': "NIC", 'capability_type': 'pci'}], 'alias_name': 'IntelNIC'}, ] flavor = {'extra_specs': {"pci_passthrough:alias": "QuicAssist:3, IntelNIC: 1"}} requests = pci_request.get_pci_requests_from_flavor(flavor) self.assertEqual(set([p['count'] for p in requests]), set([1, 3])) exp_real = zip(expect_request, requests) for exp, real in exp_real: self.assertEqual(real, exp) def test_get_pci_requests_from_flavor_no_extra_spec(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) flavor = {} requests = pci_request.get_pci_requests_from_flavor(flavor) self.assertEqual([], requests) def test_get_instance_pci_requests_no_meta(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) instance = {} requests = pci_request.get_instance_pci_requests(instance) self.assertEqual([], requests) def test_get_instance_pci_requests_no_request(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) instance = {'system_metadata': {'a': 'b'}} requests = pci_request.get_instance_pci_requests(instance) self.assertEqual([], requests) def test_get_instance_pci_requests(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [{ 'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': "ACCEL", 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}] instance = {"system_metadata": {"pci_requests": jsonutils.dumps(expect_request)}} requests = pci_request.get_instance_pci_requests(instance) exp_real = zip(expect_request, requests) for exp, real in exp_real: self.assertEqual(real, exp) def test_get_instance_pci_requests_prefix(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [{ 'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': "ACCEL", 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}] instance = {"system_metadata": {"new_pci_requests": jsonutils.dumps(expect_request)}} requests = pci_request.get_instance_pci_requests(instance, 'new_') exp_real = zip(expect_request, requests) for exp, real in exp_real: self.assertEqual(real, exp) def test_save_flavor_pci_info(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [ {'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': "ACCEL", 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}, {'count': 1, 'spec': [{'vendor_id': '8086', 'product_id': '1111', 'device_type': "NIC", 'capability_type': 'pci'}], 'alias_name': 'IntelNIC'}, ] flavor = {'extra_specs': {"pci_passthrough:alias": "QuicAssist:3, IntelNIC: 1"}} meta = {} pci_request.save_flavor_pci_info(meta, flavor) real = jsonutils.loads(meta['pci_requests']) exp_real = zip(expect_request, real) for exp, real in exp_real: self.assertEqual(real, exp) meta = {} pci_request.save_flavor_pci_info(meta, flavor, "old_") real = jsonutils.loads(meta['old_pci_requests']) exp_real = zip(expect_request, real) for exp, real in exp_real: self.assertEqual(real, exp) def test_delete_flavor_pci_info(self): meta = {"pci_requests": "fake", "old_pci_requests": "fake"} pci_request.delete_flavor_pci_info(meta, '') self.assertNotIn('pci_requests', meta) pci_request.delete_flavor_pci_info(meta, 'old_') self.assertNotIn('old_pci_requests', meta) nova-2014.1/nova/tests/conductor/0000775000175400017540000000000012323722546020015 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/conductor/tasks/0000775000175400017540000000000012323722546021142 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/conductor/tasks/__init__.py0000664000175400017540000000107412323721477023257 0ustar jenkinsjenkins00000000000000# 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. nova-2014.1/nova/tests/conductor/tasks/test_live_migrate.py0000664000175400017540000004225512323721477025234 0ustar jenkinsjenkins00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mox from nova.compute import power_state from nova.compute import utils as compute_utils from nova.conductor.tasks import live_migrate from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.scheduler import utils as scheduler_utils from nova import test from nova.tests import fake_instance class LiveMigrationTaskTestCase(test.NoDBTestCase): def setUp(self): super(LiveMigrationTaskTestCase, self).setUp() self.context = "context" self.instance_host = "host" self.instance_uuid = "uuid" self.instance_image = "image_ref" db_instance = fake_instance.fake_db_instance( host=self.instance_host, uuid=self.instance_uuid, power_state=power_state.RUNNING, memory_mb=512, image_ref=self.instance_image) self.instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), db_instance) self.destination = "destination" self.block_migration = "bm" self.disk_over_commit = "doc" self._generate_task() def _generate_task(self): self.task = live_migrate.LiveMigrationTask(self.context, self.instance, self.destination, self.block_migration, self.disk_over_commit) def test_execute_with_destination(self): self.mox.StubOutWithMock(self.task, '_check_host_is_up') self.mox.StubOutWithMock(self.task, '_check_requested_destination') self.mox.StubOutWithMock(self.task.compute_rpcapi, 'live_migration') self.task._check_host_is_up(self.instance_host) self.task._check_requested_destination() self.task.compute_rpcapi.live_migration(self.context, host=self.instance_host, instance=self.instance, dest=self.destination, block_migration=self.block_migration, migrate_data=None).AndReturn("bob") self.mox.ReplayAll() self.assertEqual("bob", self.task.execute()) def test_execute_without_destination(self): self.destination = None self._generate_task() self.assertIsNone(self.task.destination) self.mox.StubOutWithMock(self.task, '_check_host_is_up') self.mox.StubOutWithMock(self.task, '_find_destination') self.mox.StubOutWithMock(self.task.compute_rpcapi, 'live_migration') self.task._check_host_is_up(self.instance_host) self.task._find_destination().AndReturn("found_host") self.task.compute_rpcapi.live_migration(self.context, host=self.instance_host, instance=self.instance, dest="found_host", block_migration=self.block_migration, migrate_data=None).AndReturn("bob") self.mox.ReplayAll() self.assertEqual("bob", self.task.execute()) def test_check_instance_is_running_passes(self): self.task._check_instance_is_running() def test_check_instance_is_running_fails_when_shutdown(self): self.task.instance['power_state'] = power_state.SHUTDOWN self.assertRaises(exception.InstanceNotRunning, self.task._check_instance_is_running) def test_check_instance_host_is_up(self): self.mox.StubOutWithMock(db, 'service_get_by_compute_host') self.mox.StubOutWithMock(self.task.servicegroup_api, 'service_is_up') db.service_get_by_compute_host(self.context, "host").AndReturn("service") self.task.servicegroup_api.service_is_up("service").AndReturn(True) self.mox.ReplayAll() self.task._check_host_is_up("host") def test_check_instance_host_is_up_fails_if_not_up(self): self.mox.StubOutWithMock(db, 'service_get_by_compute_host') self.mox.StubOutWithMock(self.task.servicegroup_api, 'service_is_up') db.service_get_by_compute_host(self.context, "host").AndReturn("service") self.task.servicegroup_api.service_is_up("service").AndReturn(False) self.mox.ReplayAll() self.assertRaises(exception.ComputeServiceUnavailable, self.task._check_host_is_up, "host") def test_check_instance_host_is_up_fails_if_not_found(self): self.mox.StubOutWithMock(db, 'service_get_by_compute_host') db.service_get_by_compute_host(self.context, "host").AndRaise(exception.NotFound) self.mox.ReplayAll() self.assertRaises(exception.ComputeServiceUnavailable, self.task._check_host_is_up, "host") def test_check_requested_destination(self): self.mox.StubOutWithMock(db, 'service_get_by_compute_host') self.mox.StubOutWithMock(self.task, '_get_compute_info') self.mox.StubOutWithMock(self.task.servicegroup_api, 'service_is_up') self.mox.StubOutWithMock(self.task.compute_rpcapi, 'check_can_live_migrate_destination') db.service_get_by_compute_host(self.context, self.destination).AndReturn("service") self.task.servicegroup_api.service_is_up("service").AndReturn(True) hypervisor_details = { "hypervisor_type": "a", "hypervisor_version": 6.1, "free_ram_mb": 513 } self.task._get_compute_info(self.destination)\ .AndReturn(hypervisor_details) self.task._get_compute_info(self.instance_host)\ .AndReturn(hypervisor_details) self.task._get_compute_info(self.destination)\ .AndReturn(hypervisor_details) self.task.compute_rpcapi.check_can_live_migrate_destination( self.context, self.instance, self.destination, self.block_migration, self.disk_over_commit).AndReturn( "migrate_data") self.mox.ReplayAll() self.task._check_requested_destination() self.assertEqual("migrate_data", self.task.migrate_data) def test_check_requested_destination_fails_with_same_dest(self): self.task.destination = "same" self.task.source = "same" self.assertRaises(exception.UnableToMigrateToSelf, self.task._check_requested_destination) def test_check_requested_destination_fails_when_destination_is_up(self): self.mox.StubOutWithMock(db, 'service_get_by_compute_host') db.service_get_by_compute_host(self.context, self.destination).AndRaise(exception.NotFound) self.mox.ReplayAll() self.assertRaises(exception.ComputeServiceUnavailable, self.task._check_requested_destination) def test_check_requested_destination_fails_with_not_enough_memory(self): self.mox.StubOutWithMock(self.task, '_check_host_is_up') self.mox.StubOutWithMock(db, 'service_get_by_compute_host') self.task._check_host_is_up(self.destination) db.service_get_by_compute_host(self.context, self.destination).AndReturn({ "compute_node": [{"free_ram_mb": 511}] }) self.mox.ReplayAll() self.assertRaises(exception.MigrationPreCheckError, self.task._check_requested_destination) def test_check_requested_destination_fails_with_hypervisor_diff(self): self.mox.StubOutWithMock(self.task, '_check_host_is_up') self.mox.StubOutWithMock(self.task, '_check_destination_has_enough_memory') self.mox.StubOutWithMock(self.task, '_get_compute_info') self.task._check_host_is_up(self.destination) self.task._check_destination_has_enough_memory() self.task._get_compute_info(self.instance_host).AndReturn({ "hypervisor_type": "b" }) self.task._get_compute_info(self.destination).AndReturn({ "hypervisor_type": "a" }) self.mox.ReplayAll() self.assertRaises(exception.InvalidHypervisorType, self.task._check_requested_destination) def test_check_requested_destination_fails_with_hypervisor_too_old(self): self.mox.StubOutWithMock(self.task, '_check_host_is_up') self.mox.StubOutWithMock(self.task, '_check_destination_has_enough_memory') self.mox.StubOutWithMock(self.task, '_get_compute_info') self.task._check_host_is_up(self.destination) self.task._check_destination_has_enough_memory() self.task._get_compute_info(self.instance_host).AndReturn({ "hypervisor_type": "a", "hypervisor_version": 7 }) self.task._get_compute_info(self.destination).AndReturn({ "hypervisor_type": "a", "hypervisor_version": 6 }) self.mox.ReplayAll() self.assertRaises(exception.DestinationHypervisorTooOld, self.task._check_requested_destination) def test_find_destination_works(self): self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.task.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.task, '_check_compatible_with_source_hypervisor') self.mox.StubOutWithMock(self.task, '_call_livem_checks_on_host') compute_utils.get_image_metadata(self.context, self.task.image_service, self.instance_image, self.instance).AndReturn("image") scheduler_utils.build_request_spec(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({}) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host1'}]) self.task._check_compatible_with_source_hypervisor("host1") self.task._call_livem_checks_on_host("host1") self.mox.ReplayAll() self.assertEqual("host1", self.task._find_destination()) def test_find_destination_no_image_works(self): self.instance['image_ref'] = '' self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.task.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.task, '_check_compatible_with_source_hypervisor') self.mox.StubOutWithMock(self.task, '_call_livem_checks_on_host') scheduler_utils.build_request_spec(self.context, None, mox.IgnoreArg()).AndReturn({}) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host1'}]) self.task._check_compatible_with_source_hypervisor("host1") self.task._call_livem_checks_on_host("host1") self.mox.ReplayAll() self.assertEqual("host1", self.task._find_destination()) def _test_find_destination_retry_hypervisor_raises(self, error): self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.task.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.task, '_check_compatible_with_source_hypervisor') self.mox.StubOutWithMock(self.task, '_call_livem_checks_on_host') compute_utils.get_image_metadata(self.context, self.task.image_service, self.instance_image, self.instance).AndReturn("image") scheduler_utils.build_request_spec(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({}) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host1'}]) self.task._check_compatible_with_source_hypervisor("host1")\ .AndRaise(error) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host2'}]) self.task._check_compatible_with_source_hypervisor("host2") self.task._call_livem_checks_on_host("host2") self.mox.ReplayAll() self.assertEqual("host2", self.task._find_destination()) def test_find_destination_retry_with_old_hypervisor(self): self._test_find_destination_retry_hypervisor_raises( exception.DestinationHypervisorTooOld) def test_find_destination_retry_with_invalid_hypervisor_type(self): self._test_find_destination_retry_hypervisor_raises( exception.InvalidHypervisorType) def test_find_destination_retry_with_invalid_livem_checks(self): self.flags(migrate_max_retries=1) self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.task.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.task, '_check_compatible_with_source_hypervisor') self.mox.StubOutWithMock(self.task, '_call_livem_checks_on_host') compute_utils.get_image_metadata(self.context, self.task.image_service, self.instance_image, self.instance).AndReturn("image") scheduler_utils.build_request_spec(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({}) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host1'}]) self.task._check_compatible_with_source_hypervisor("host1") self.task._call_livem_checks_on_host("host1")\ .AndRaise(exception.Invalid) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host2'}]) self.task._check_compatible_with_source_hypervisor("host2") self.task._call_livem_checks_on_host("host2") self.mox.ReplayAll() self.assertEqual("host2", self.task._find_destination()) def test_find_destination_retry_exceeds_max(self): self.flags(migrate_max_retries=0) self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.task.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.task, '_check_compatible_with_source_hypervisor') compute_utils.get_image_metadata(self.context, self.task.image_service, self.instance_image, self.instance).AndReturn("image") scheduler_utils.build_request_spec(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({}) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( [{'host': 'host1'}]) self.task._check_compatible_with_source_hypervisor("host1")\ .AndRaise(exception.DestinationHypervisorTooOld) self.mox.ReplayAll() self.assertRaises(exception.NoValidHost, self.task._find_destination) def test_find_destination_when_runs_out_of_hosts(self): self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.task.scheduler_rpcapi, 'select_destinations') compute_utils.get_image_metadata(self.context, self.task.image_service, self.instance_image, self.instance).AndReturn("image") scheduler_utils.build_request_spec(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({}) self.task.scheduler_rpcapi.select_destinations(self.context, mox.IgnoreArg(), mox.IgnoreArg()).AndRaise( exception.NoValidHost(reason="")) self.mox.ReplayAll() self.assertRaises(exception.NoValidHost, self.task._find_destination) def test_not_implemented_rollback(self): self.assertRaises(NotImplementedError, self.task.rollback) nova-2014.1/nova/tests/conductor/test_conductor.py0000664000175400017540000024104112323721510023416 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # Copyright 2013 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. """Tests for the conductor service.""" import contextlib import mock import mox from oslo import messaging from nova.api.ec2 import ec2utils from nova.compute import flavors from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova import conductor from nova.conductor import api as conductor_api from nova.conductor import manager as conductor_manager from nova.conductor import rpcapi as conductor_rpcapi from nova.conductor.tasks import live_migrate from nova import context from nova import db from nova.db.sqlalchemy import models from nova import exception as exc from nova import notifications from nova.objects import base as obj_base from nova.objects import fields from nova.objects import instance as instance_obj from nova.objects import migration as migration_obj from nova.objects import quotas as quotas_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import quota from nova import rpc from nova.scheduler import utils as scheduler_utils from nova import test from nova.tests import cast_as_call from nova.tests.compute import test_compute from nova.tests import fake_instance from nova.tests import fake_instance_actions from nova.tests import fake_notifier from nova.tests.objects import test_migration from nova import utils FAKE_IMAGE_REF = 'fake-image-ref' class FakeContext(context.RequestContext): def elevated(self): """Return a consistent elevated context so we can detect it.""" if not hasattr(self, '_elevated'): self._elevated = super(FakeContext, self).elevated() return self._elevated class _BaseTestCase(object): def setUp(self): super(_BaseTestCase, self).setUp() self.db = None self.user_id = 'fake' self.project_id = 'fake' self.context = FakeContext(self.user_id, self.project_id) fake_notifier.stub_notifier(self.stubs) self.addCleanup(fake_notifier.reset) def fake_deserialize_context(serializer, ctxt_dict): self.assertEqual(self.context.user_id, ctxt_dict['user_id']) self.assertEqual(self.context.project_id, ctxt_dict['project_id']) return self.context self.stubs.Set(rpc.RequestContextSerializer, 'deserialize_context', fake_deserialize_context) def _create_fake_instance(self, params=None, type_name='m1.tiny'): if not params: params = {} inst = {} inst['vm_state'] = vm_states.ACTIVE inst['image_ref'] = FAKE_IMAGE_REF inst['reservation_id'] = 'r-fakeres' inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['host'] = 'fake_host' type_id = flavors.get_flavor_by_name(type_name)['id'] inst['instance_type_id'] = type_id inst['ami_launch_index'] = 0 inst['memory_mb'] = 0 inst['vcpus'] = 0 inst['root_gb'] = 0 inst['ephemeral_gb'] = 0 inst['architecture'] = 'x86_64' inst['os_type'] = 'Linux' inst['availability_zone'] = 'fake-az' inst.update(params) return db.instance_create(self.context, inst) def _do_update(self, instance_uuid, **updates): return self.conductor.instance_update(self.context, instance_uuid, updates) def test_instance_update(self): instance = self._create_fake_instance() new_inst = self._do_update(instance['uuid'], vm_state=vm_states.STOPPED) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(instance['vm_state'], vm_states.STOPPED) self.assertEqual(new_inst['vm_state'], instance['vm_state']) def test_action_event_start(self): self.mox.StubOutWithMock(db, 'action_event_start') db.action_event_start(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.conductor.action_event_start(self.context, {}) def test_action_event_finish(self): self.mox.StubOutWithMock(db, 'action_event_finish') db.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.conductor.action_event_finish(self.context, {}) def test_instance_update_invalid_key(self): # NOTE(danms): the real DB API call ignores invalid keys if self.db == None: self.conductor = utils.ExceptionHelper(self.conductor) self.assertRaises(KeyError, self._do_update, 'any-uuid', foobar=1) def test_migration_get_in_progress_by_host_and_node(self): self.mox.StubOutWithMock(db, 'migration_get_in_progress_by_host_and_node') db.migration_get_in_progress_by_host_and_node( self.context, 'fake-host', 'fake-node').AndReturn('fake-result') self.mox.ReplayAll() result = self.conductor.migration_get_in_progress_by_host_and_node( self.context, 'fake-host', 'fake-node') self.assertEqual(result, 'fake-result') def test_instance_get_by_uuid(self): orig_instance = self._create_fake_instance() copy_instance = self.conductor.instance_get_by_uuid( self.context, orig_instance['uuid']) self.assertEqual(orig_instance['name'], copy_instance['name']) def _setup_aggregate_with_host(self): aggregate_ref = db.aggregate_create(self.context.elevated(), {'name': 'foo'}, metadata={'availability_zone': 'foo'}) self.conductor.aggregate_host_add(self.context, aggregate_ref, 'bar') aggregate_ref = db.aggregate_get(self.context.elevated(), aggregate_ref['id']) return aggregate_ref def test_aggregate_host_add(self): aggregate_ref = self._setup_aggregate_with_host() self.assertTrue(any([host == 'bar' for host in aggregate_ref['hosts']])) db.aggregate_delete(self.context.elevated(), aggregate_ref['id']) def test_aggregate_host_delete(self): aggregate_ref = self._setup_aggregate_with_host() self.conductor.aggregate_host_delete(self.context, aggregate_ref, 'bar') aggregate_ref = db.aggregate_get(self.context.elevated(), aggregate_ref['id']) self.assertFalse(any([host == 'bar' for host in aggregate_ref['hosts']])) db.aggregate_delete(self.context.elevated(), aggregate_ref['id']) def test_aggregate_metadata_get_by_host(self): self.mox.StubOutWithMock(db, 'aggregate_metadata_get_by_host') db.aggregate_metadata_get_by_host(self.context, 'host', 'key').AndReturn('result') self.mox.ReplayAll() result = self.conductor.aggregate_metadata_get_by_host(self.context, 'host', 'key') self.assertEqual(result, 'result') def test_bw_usage_update(self): self.mox.StubOutWithMock(db, 'bw_usage_update') self.mox.StubOutWithMock(db, 'bw_usage_get') update_args = (self.context, 'uuid', 'mac', 0, 10, 20, 5, 10, 20) get_args = (self.context, 'uuid', 0, 'mac') db.bw_usage_update(*update_args, update_cells=True) db.bw_usage_get(*get_args).AndReturn('foo') self.mox.ReplayAll() result = self.conductor.bw_usage_update(*update_args) self.assertEqual(result, 'foo') def test_provider_fw_rule_get_all(self): fake_rules = ['a', 'b', 'c'] self.mox.StubOutWithMock(db, 'provider_fw_rule_get_all') db.provider_fw_rule_get_all(self.context).AndReturn(fake_rules) self.mox.ReplayAll() result = self.conductor.provider_fw_rule_get_all(self.context) self.assertEqual(result, fake_rules) def test_agent_build_get_by_triple(self): self.mox.StubOutWithMock(db, 'agent_build_get_by_triple') db.agent_build_get_by_triple(self.context, 'fake-hv', 'fake-os', 'fake-arch').AndReturn('it worked') self.mox.ReplayAll() result = self.conductor.agent_build_get_by_triple(self.context, 'fake-hv', 'fake-os', 'fake-arch') self.assertEqual(result, 'it worked') def test_block_device_mapping_get_all_by_instance(self): fake_inst = {'uuid': 'fake-uuid'} self.mox.StubOutWithMock(db, 'block_device_mapping_get_all_by_instance') db.block_device_mapping_get_all_by_instance( self.context, fake_inst['uuid']).AndReturn('fake-result') self.mox.ReplayAll() result = self.conductor.block_device_mapping_get_all_by_instance( self.context, fake_inst, legacy=False) self.assertEqual(result, 'fake-result') def test_instance_get_active_by_window_joined(self): self.mox.StubOutWithMock(db, 'instance_get_active_by_window_joined') db.instance_get_active_by_window_joined(self.context, 'fake-begin', 'fake-end', 'fake-proj', 'fake-host') self.mox.ReplayAll() self.conductor.instance_get_active_by_window_joined( self.context, 'fake-begin', 'fake-end', 'fake-proj', 'fake-host') def test_instance_destroy(self): self.mox.StubOutWithMock(db, 'instance_destroy') db.instance_destroy(self.context, 'fake-uuid').AndReturn('fake-result') self.mox.ReplayAll() result = self.conductor.instance_destroy(self.context, {'uuid': 'fake-uuid'}) self.assertEqual(result, 'fake-result') def test_instance_info_cache_delete(self): self.mox.StubOutWithMock(db, 'instance_info_cache_delete') db.instance_info_cache_delete(self.context, 'fake-uuid') self.mox.ReplayAll() self.conductor.instance_info_cache_delete(self.context, {'uuid': 'fake-uuid'}) def test_vol_get_usage_by_time(self): self.mox.StubOutWithMock(db, 'vol_get_usage_by_time') db.vol_get_usage_by_time(self.context, 'fake-time').AndReturn( 'fake-usage') self.mox.ReplayAll() result = self.conductor.vol_get_usage_by_time(self.context, 'fake-time') self.assertEqual(result, 'fake-usage') def test_vol_usage_update(self): self.mox.StubOutWithMock(db, 'vol_usage_update') self.mox.StubOutWithMock(compute_utils, 'usage_volume_info') fake_inst = {'uuid': 'fake-uuid', 'project_id': 'fake-project', 'user_id': 'fake-user', 'availability_zone': 'fake-az', } db.vol_usage_update(self.context, 'fake-vol', 22, 33, 44, 55, fake_inst['uuid'], fake_inst['project_id'], fake_inst['user_id'], fake_inst['availability_zone'], False).AndReturn('fake-usage') compute_utils.usage_volume_info('fake-usage').AndReturn('fake-info') self.mox.ReplayAll() self.conductor.vol_usage_update(self.context, 'fake-vol', 22, 33, 44, 55, fake_inst, 'fake-update-time', False) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual('conductor.%s' % self.conductor_manager.host, msg.publisher_id) self.assertEqual('volume.usage', msg.event_type) self.assertEqual('INFO', msg.priority) self.assertEqual('fake-info', msg.payload) def test_compute_node_create(self): self.mox.StubOutWithMock(db, 'compute_node_create') db.compute_node_create(self.context, 'fake-values').AndReturn( 'fake-result') self.mox.ReplayAll() result = self.conductor.compute_node_create(self.context, 'fake-values') self.assertEqual(result, 'fake-result') def test_compute_node_update(self): node = {'id': 'fake-id'} self.mox.StubOutWithMock(db, 'compute_node_update') db.compute_node_update(self.context, node['id'], {'fake': 'values'}).\ AndReturn('fake-result') self.mox.ReplayAll() result = self.conductor.compute_node_update(self.context, node, {'fake': 'values'}) self.assertEqual(result, 'fake-result') def test_compute_node_update_with_non_json_stats(self): node = {'id': 'fake-id'} fake_input = {'stats': {'a': 'b'}} fake_vals = {'stats': jsonutils.dumps(fake_input['stats'])} self.mox.StubOutWithMock(db, 'compute_node_update') db.compute_node_update(self.context, node['id'], fake_vals ).AndReturn('fake-result') self.mox.ReplayAll() self.conductor.compute_node_update(self.context, node, fake_input) def test_compute_node_delete(self): node = {'id': 'fake-id'} self.mox.StubOutWithMock(db, 'compute_node_delete') db.compute_node_delete(self.context, node['id']).AndReturn(None) self.mox.ReplayAll() result = self.conductor.compute_node_delete(self.context, node) self.assertIsNone(result) def test_instance_fault_create(self): self.mox.StubOutWithMock(db, 'instance_fault_create') db.instance_fault_create(self.context, 'fake-values').AndReturn( 'fake-result') self.mox.ReplayAll() result = self.conductor.instance_fault_create(self.context, 'fake-values') self.assertEqual(result, 'fake-result') def test_task_log_get(self): self.mox.StubOutWithMock(db, 'task_log_get') db.task_log_get(self.context, 'task', 'begin', 'end', 'host', 'state').AndReturn('result') self.mox.ReplayAll() result = self.conductor.task_log_get(self.context, 'task', 'begin', 'end', 'host', 'state') self.assertEqual(result, 'result') def test_task_log_get_with_no_state(self): self.mox.StubOutWithMock(db, 'task_log_get') db.task_log_get(self.context, 'task', 'begin', 'end', 'host', None).AndReturn('result') self.mox.ReplayAll() result = self.conductor.task_log_get(self.context, 'task', 'begin', 'end', 'host') self.assertEqual(result, 'result') def test_task_log_begin_task(self): self.mox.StubOutWithMock(db, 'task_log_begin_task') db.task_log_begin_task(self.context.elevated(), 'task', 'begin', 'end', 'host', 'items', 'message').AndReturn('result') self.mox.ReplayAll() result = self.conductor.task_log_begin_task( self.context, 'task', 'begin', 'end', 'host', 'items', 'message') self.assertEqual(result, 'result') def test_task_log_end_task(self): self.mox.StubOutWithMock(db, 'task_log_end_task') db.task_log_end_task(self.context.elevated(), 'task', 'begin', 'end', 'host', 'errors', 'message').AndReturn('result') self.mox.ReplayAll() result = self.conductor.task_log_end_task( self.context, 'task', 'begin', 'end', 'host', 'errors', 'message') self.assertEqual(result, 'result') def test_notify_usage_exists(self): info = { 'audit_period_beginning': 'start', 'audit_period_ending': 'end', 'bandwidth': 'bw_usage', 'image_meta': {}, 'extra': 'info', } instance = { 'system_metadata': [], } self.mox.StubOutWithMock(notifications, 'audit_period_bounds') self.mox.StubOutWithMock(notifications, 'bandwidth_usage') self.mox.StubOutWithMock(compute_utils, 'notify_about_instance_usage') notifications.audit_period_bounds(False).AndReturn(('start', 'end')) notifications.bandwidth_usage(instance, 'start', True).AndReturn( 'bw_usage') notifier = self.conductor_manager.notifier compute_utils.notify_about_instance_usage(notifier, self.context, instance, 'exists', system_metadata={}, extra_usage_info=info) self.mox.ReplayAll() self.conductor.notify_usage_exists(self.context, instance, system_metadata={}, extra_usage_info=dict(extra='info')) def test_security_groups_trigger_members_refresh(self): self.mox.StubOutWithMock(self.conductor_manager.security_group_api, 'trigger_members_refresh') self.conductor_manager.security_group_api.trigger_members_refresh( self.context, [1, 2, 3]) self.mox.ReplayAll() self.conductor.security_groups_trigger_members_refresh(self.context, [1, 2, 3]) def test_network_migrate_instance_start(self): self.mox.StubOutWithMock(self.conductor_manager.network_api, 'migrate_instance_start') self.conductor_manager.network_api.migrate_instance_start(self.context, 'instance', 'migration') self.mox.ReplayAll() self.conductor.network_migrate_instance_start(self.context, 'instance', 'migration') def test_network_migrate_instance_finish(self): self.mox.StubOutWithMock(self.conductor_manager.network_api, 'migrate_instance_finish') self.conductor_manager.network_api.migrate_instance_finish( self.context, 'instance', 'migration') self.mox.ReplayAll() self.conductor.network_migrate_instance_finish(self.context, 'instance', 'migration') def test_quota_commit(self): self.mox.StubOutWithMock(quota.QUOTAS, 'commit') quota.QUOTAS.commit(self.context, 'reservations', project_id=None, user_id=None) quota.QUOTAS.commit(self.context, 'reservations', project_id='proj', user_id='user') self.mox.ReplayAll() self.conductor.quota_commit(self.context, 'reservations') self.conductor.quota_commit(self.context, 'reservations', 'proj', 'user') def test_quota_rollback(self): self.mox.StubOutWithMock(quota.QUOTAS, 'rollback') quota.QUOTAS.rollback(self.context, 'reservations', project_id=None, user_id=None) quota.QUOTAS.rollback(self.context, 'reservations', project_id='proj', user_id='user') self.mox.ReplayAll() self.conductor.quota_rollback(self.context, 'reservations') self.conductor.quota_rollback(self.context, 'reservations', 'proj', 'user') def test_get_ec2_ids(self): expected = { 'instance-id': 'ec2-inst-id', 'ami-id': 'ec2-ami-id', 'kernel-id': 'ami-kernel-ec2-kernelid', 'ramdisk-id': 'ami-ramdisk-ec2-ramdiskid', } inst = { 'uuid': 'fake-uuid', 'kernel_id': 'ec2-kernelid', 'ramdisk_id': 'ec2-ramdiskid', 'image_ref': 'fake-image', } self.mox.StubOutWithMock(ec2utils, 'id_to_ec2_inst_id') self.mox.StubOutWithMock(ec2utils, 'glance_id_to_ec2_id') self.mox.StubOutWithMock(ec2utils, 'image_type') ec2utils.id_to_ec2_inst_id(inst['uuid']).AndReturn( expected['instance-id']) ec2utils.glance_id_to_ec2_id(self.context, inst['image_ref']).AndReturn( expected['ami-id']) for image_type in ['kernel', 'ramdisk']: image_id = inst['%s_id' % image_type] ec2utils.image_type(image_type).AndReturn('ami-' + image_type) ec2utils.glance_id_to_ec2_id(self.context, image_id, 'ami-' + image_type).AndReturn( 'ami-%s-ec2-%sid' % (image_type, image_type)) self.mox.ReplayAll() result = self.conductor.get_ec2_ids(self.context, inst) self.assertEqual(result, expected) def test_compute_unrescue(self): self.mox.StubOutWithMock(self.conductor_manager.compute_api, 'unrescue') self.conductor_manager.compute_api.unrescue(self.context, 'instance') self.mox.ReplayAll() self.conductor.compute_unrescue(self.context, 'instance') class ConductorTestCase(_BaseTestCase, test.TestCase): """Conductor Manager Tests.""" def setUp(self): super(ConductorTestCase, self).setUp() self.conductor = conductor_manager.ConductorManager() self.conductor_manager = self.conductor def test_instance_info_cache_update(self): fake_values = {'key1': 'val1', 'key2': 'val2'} fake_inst = {'uuid': 'fake-uuid'} self.mox.StubOutWithMock(db, 'instance_info_cache_update') db.instance_info_cache_update(self.context, 'fake-uuid', fake_values) self.mox.ReplayAll() self.conductor.instance_info_cache_update(self.context, fake_inst, fake_values) def test_migration_get(self): migration = db.migration_create(self.context.elevated(), {'instance_uuid': 'fake-uuid', 'status': 'migrating'}) self.assertEqual(jsonutils.to_primitive(migration), self.conductor.migration_get(self.context, migration['id'])) def test_migration_get_unconfirmed_by_dest_compute(self): self.mox.StubOutWithMock(db, 'migration_get_unconfirmed_by_dest_compute') db.migration_get_unconfirmed_by_dest_compute(self.context, 'fake-window', 'fake-host') self.mox.ReplayAll() self.conductor.migration_get_unconfirmed_by_dest_compute(self.context, 'fake-window', 'fake-host') def test_compute_confirm_resize(self): self.mox.StubOutWithMock(self.conductor_manager.compute_api, 'confirm_resize') self.conductor_manager.compute_api.confirm_resize( self.context, 'instance', migration='migration') self.mox.ReplayAll() self.conductor.compute_confirm_resize(self.context, 'instance', 'migration') def test_migration_create(self): inst = {'uuid': 'fake-uuid', 'host': 'fake-host', 'node': 'fake-node'} self.mox.StubOutWithMock(db, 'migration_create') db.migration_create(self.context.elevated(), {'instance_uuid': inst['uuid'], 'source_compute': inst['host'], 'source_node': inst['node'], 'fake-key': 'fake-value'}).AndReturn('result') self.mox.ReplayAll() result = self.conductor.migration_create(self.context, inst, {'fake-key': 'fake-value'}) self.assertEqual(result, 'result') def test_block_device_mapping_update_or_create(self): fake_bdm = {'id': 'fake-id', 'device_name': 'foo'} fake_bdm2 = {'id': 'fake-id', 'device_name': 'foo2'} cells_rpcapi = self.conductor.cells_rpcapi self.mox.StubOutWithMock(db, 'block_device_mapping_create') self.mox.StubOutWithMock(db, 'block_device_mapping_update') self.mox.StubOutWithMock(db, 'block_device_mapping_update_or_create') self.mox.StubOutWithMock(cells_rpcapi, 'bdm_update_or_create_at_top') db.block_device_mapping_create(self.context, fake_bdm).AndReturn(fake_bdm2) cells_rpcapi.bdm_update_or_create_at_top(self.context, fake_bdm2, create=True) db.block_device_mapping_update(self.context, fake_bdm['id'], fake_bdm).AndReturn(fake_bdm2) cells_rpcapi.bdm_update_or_create_at_top(self.context, fake_bdm2, create=False) db.block_device_mapping_update_or_create( self.context, fake_bdm).AndReturn(fake_bdm2) cells_rpcapi.bdm_update_or_create_at_top(self.context, fake_bdm2, create=None) self.mox.ReplayAll() self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm, create=True) self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm, create=False) self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm) def test_instance_get_all_by_filters(self): filters = {'foo': 'bar'} self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') db.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort', columns_to_join=None, use_slave=False) self.mox.ReplayAll() self.conductor.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort') def test_instance_get_all_by_filters_use_slave(self): filters = {'foo': 'bar'} self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') db.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort', columns_to_join=None, use_slave=True) self.mox.ReplayAll() self.conductor.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort', use_slave=True) def test_instance_get_all_by_host(self): self.mox.StubOutWithMock(db, 'instance_get_all_by_host') self.mox.StubOutWithMock(db, 'instance_get_all_by_host_and_node') db.instance_get_all_by_host(self.context.elevated(), 'host', None).AndReturn('result') db.instance_get_all_by_host_and_node(self.context.elevated(), 'host', 'node').AndReturn('result') self.mox.ReplayAll() result = self.conductor.instance_get_all_by_host(self.context, 'host') self.assertEqual(result, 'result') result = self.conductor.instance_get_all_by_host(self.context, 'host', 'node') self.assertEqual(result, 'result') def _test_stubbed(self, name, dbargs, condargs, db_result_listified=False, db_exception=None): self.mox.StubOutWithMock(db, name) if db_exception: getattr(db, name)(self.context, *dbargs).AndRaise(db_exception) getattr(db, name)(self.context, *dbargs).AndRaise(db_exception) else: getattr(db, name)(self.context, *dbargs).AndReturn('fake-result') self.mox.ReplayAll() if db_exception: self.assertRaises(messaging.ExpectedException, self.conductor.service_get_all_by, self.context, **condargs) self.conductor = utils.ExceptionHelper(self.conductor) self.assertRaises(db_exception.__class__, self.conductor.service_get_all_by, self.context, **condargs) else: result = self.conductor.service_get_all_by(self.context, **condargs) if db_result_listified: self.assertEqual(['fake-result'], result) else: self.assertEqual('fake-result', result) def test_service_get_all(self): self._test_stubbed('service_get_all', (), {}) def test_service_get_by_host_and_topic(self): self._test_stubbed('service_get_by_host_and_topic', ('host', 'topic'), dict(topic='topic', host='host')) def test_service_get_all_by_topic(self): self._test_stubbed('service_get_all_by_topic', ('topic',), dict(topic='topic')) def test_service_get_all_by_host(self): self._test_stubbed('service_get_all_by_host', ('host',), dict(host='host')) def test_service_get_by_compute_host(self): self._test_stubbed('service_get_by_compute_host', ('host',), dict(topic='compute', host='host'), db_result_listified=True) def test_service_get_by_args(self): self._test_stubbed('service_get_by_args', ('host', 'binary'), dict(host='host', binary='binary')) def test_service_get_by_compute_host_not_found(self): self._test_stubbed('service_get_by_compute_host', ('host',), dict(topic='compute', host='host'), db_exception=exc.ComputeHostNotFound(host='host')) def test_service_get_by_args_not_found(self): self._test_stubbed('service_get_by_args', ('host', 'binary'), dict(host='host', binary='binary'), db_exception=exc.HostBinaryNotFound(binary='binary', host='host')) def test_security_groups_trigger_handler(self): self.mox.StubOutWithMock(self.conductor_manager.security_group_api, 'trigger_handler') self.conductor_manager.security_group_api.trigger_handler('event', self.context, 'args') self.mox.ReplayAll() self.conductor.security_groups_trigger_handler(self.context, 'event', ['args']) def test_compute_confirm_resize_with_objects(self): # use an instance object rather than a dict instance = self._create_fake_instance() inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance) migration = test_migration.fake_db_migration() mig_obj = migration_obj.Migration._from_db_object( self.context.elevated(), migration_obj.Migration(), migration) self.mox.StubOutWithMock(self.conductor_manager.compute_api, 'confirm_resize') self.conductor_manager.compute_api.confirm_resize( self.context, inst_obj, migration=mig_obj) self.mox.ReplayAll() self.conductor.compute_confirm_resize(self.context, inst_obj, mig_obj) def _test_object_action(self, is_classmethod, raise_exception): class TestObject(obj_base.NovaObject): def foo(self, context, raise_exception=False): if raise_exception: raise Exception('test') else: return 'test' @classmethod def bar(cls, context, raise_exception=False): if raise_exception: raise Exception('test') else: return 'test' obj = TestObject() if is_classmethod: result = self.conductor.object_class_action( self.context, TestObject.obj_name(), 'bar', '1.0', tuple(), {'raise_exception': raise_exception}) else: updates, result = self.conductor.object_action( self.context, obj, 'foo', tuple(), {'raise_exception': raise_exception}) self.assertEqual('test', result) def test_object_action(self): self._test_object_action(False, False) def test_object_action_on_raise(self): self.assertRaises(messaging.ExpectedException, self._test_object_action, False, True) def test_object_class_action(self): self._test_object_action(True, False) def test_object_class_action_on_raise(self): self.assertRaises(messaging.ExpectedException, self._test_object_action, True, True) def test_object_action_copies_object(self): class TestObject(obj_base.NovaObject): fields = {'dict': fields.DictOfStringsField()} def touch_dict(self, context): self.dict['foo'] = 'bar' self.obj_reset_changes() obj = TestObject() obj.dict = {} obj.obj_reset_changes() updates, result = self.conductor.object_action( self.context, obj, 'touch_dict', tuple(), {}) # NOTE(danms): If conductor did not properly copy the object, then # the new and reference copies of the nested dict object will be # the same, and thus 'dict' will not be reported as changed self.assertIn('dict', updates) self.assertEqual({'foo': 'bar'}, updates['dict']) def test_aggregate_metadata_add(self): aggregate = {'name': 'fake aggregate', 'id': 'fake-id'} metadata = {'foo': 'bar'} self.mox.StubOutWithMock(db, 'aggregate_metadata_add') db.aggregate_metadata_add( mox.IgnoreArg(), aggregate['id'], metadata, False).AndReturn( metadata) self.mox.ReplayAll() result = self.conductor.aggregate_metadata_add(self.context, aggregate, metadata) self.assertEqual(result, metadata) def test_aggregate_metadata_delete(self): aggregate = {'name': 'fake aggregate', 'id': 'fake-id'} self.mox.StubOutWithMock(db, 'aggregate_metadata_delete') db.aggregate_metadata_delete(mox.IgnoreArg(), aggregate['id'], 'fake') self.mox.ReplayAll() self.conductor.aggregate_metadata_delete(self.context, aggregate, 'fake') def test_security_group_get_by_instance(self): fake_inst = {'uuid': 'fake-instance'} self.mox.StubOutWithMock(db, 'security_group_get_by_instance') db.security_group_get_by_instance( self.context, fake_inst['uuid']).AndReturn('it worked') self.mox.ReplayAll() result = self.conductor.security_group_get_by_instance(self.context, fake_inst) self.assertEqual(result, 'it worked') def test_security_group_rule_get_by_security_group(self): fake_secgroup = {'id': 'fake-secgroup'} self.mox.StubOutWithMock(db, 'security_group_rule_get_by_security_group') db.security_group_rule_get_by_security_group( self.context, fake_secgroup['id']).AndReturn('it worked') self.mox.ReplayAll() result = self.conductor.security_group_rule_get_by_security_group( self.context, fake_secgroup) self.assertEqual(result, 'it worked') def _test_action_event_expected_exceptions(self, db_method, conductor_method, error): # Tests that expected exceptions are handled properly. with mock.patch.object(db, db_method, side_effect=error): self.assertRaises(messaging.ExpectedException, conductor_method, self.context, {'foo': 'bar'}) def test_action_event_start_expected_exceptions(self): error = exc.InstanceActionNotFound(request_id='1', instance_uuid='2') self._test_action_event_expected_exceptions( 'action_event_start', self.conductor.action_event_start, error) def test_action_event_finish_expected_exceptions(self): errors = (exc.InstanceActionNotFound(request_id='1', instance_uuid='2'), exc.InstanceActionEventNotFound(event='1', action_id='2')) for error in errors: self._test_action_event_expected_exceptions( 'action_event_finish', self.conductor.action_event_finish, error) class ConductorRPCAPITestCase(_BaseTestCase, test.TestCase): """Conductor RPC API Tests.""" def setUp(self): super(ConductorRPCAPITestCase, self).setUp() self.conductor_service = self.start_service( 'conductor', manager='nova.conductor.manager.ConductorManager') self.conductor_manager = self.conductor_service.manager self.conductor = conductor_rpcapi.ConductorAPI() def test_block_device_mapping_update_or_create(self): fake_bdm = {'id': 'fake-id'} self.mox.StubOutWithMock(db, 'block_device_mapping_create') self.mox.StubOutWithMock(db, 'block_device_mapping_update') self.mox.StubOutWithMock(db, 'block_device_mapping_update_or_create') db.block_device_mapping_create(self.context, fake_bdm) db.block_device_mapping_update(self.context, fake_bdm['id'], fake_bdm) db.block_device_mapping_update_or_create(self.context, fake_bdm) self.mox.ReplayAll() self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm, create=True) self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm, create=False) self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm) def test_instance_get_all_by_filters(self): filters = {'foo': 'bar'} self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') db.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort', columns_to_join=None, use_slave=False) self.mox.ReplayAll() self.conductor.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort') def test_instance_get_all_by_filters_use_slave(self): filters = {'foo': 'bar'} self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') db.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort', columns_to_join=None, use_slave=True) self.mox.ReplayAll() self.conductor.instance_get_all_by_filters(self.context, filters, 'fake-key', 'fake-sort', use_slave=True) def _test_stubbed(self, name, dbargs, condargs, db_result_listified=False, db_exception=None): self.mox.StubOutWithMock(db, name) if db_exception: getattr(db, name)(self.context, *dbargs).AndRaise(db_exception) else: getattr(db, name)(self.context, *dbargs).AndReturn('fake-result') self.mox.ReplayAll() if db_exception: self.assertRaises(db_exception.__class__, self.conductor.service_get_all_by, self.context, **condargs) else: result = self.conductor.service_get_all_by(self.context, **condargs) if db_result_listified: self.assertEqual(['fake-result'], result) else: self.assertEqual('fake-result', result) def test_service_get_all(self): self._test_stubbed('service_get_all', (), {}) def test_service_get_by_host_and_topic(self): self._test_stubbed('service_get_by_host_and_topic', ('host', 'topic'), dict(topic='topic', host='host')) def test_service_get_all_by_topic(self): self._test_stubbed('service_get_all_by_topic', ('topic',), dict(topic='topic')) def test_service_get_all_by_host(self): self._test_stubbed('service_get_all_by_host', ('host',), dict(host='host')) def test_service_get_by_compute_host(self): self._test_stubbed('service_get_by_compute_host', ('host',), dict(topic='compute', host='host'), db_result_listified=True) def test_service_get_by_args(self): self._test_stubbed('service_get_by_args', ('host', 'binary'), dict(host='host', binary='binary')) def test_service_get_by_compute_host_not_found(self): self._test_stubbed('service_get_by_compute_host', ('host',), dict(topic='compute', host='host'), db_exception=exc.ComputeHostNotFound(host='host')) def test_service_get_by_args_not_found(self): self._test_stubbed('service_get_by_args', ('host', 'binary'), dict(host='host', binary='binary'), db_exception=exc.HostBinaryNotFound(binary='binary', host='host')) def test_security_groups_trigger_handler(self): self.mox.StubOutWithMock(self.conductor_manager.security_group_api, 'trigger_handler') self.conductor_manager.security_group_api.trigger_handler('event', self.context, 'arg') self.mox.ReplayAll() self.conductor.security_groups_trigger_handler(self.context, 'event', ['arg']) class ConductorAPITestCase(_BaseTestCase, test.TestCase): """Conductor API Tests.""" def setUp(self): super(ConductorAPITestCase, self).setUp() self.conductor_service = self.start_service( 'conductor', manager='nova.conductor.manager.ConductorManager') self.conductor = conductor_api.API() self.conductor_manager = self.conductor_service.manager self.db = None def _do_update(self, instance_uuid, **updates): # NOTE(danms): the public API takes actual keyword arguments, # so override the base class here to make the call correctly return self.conductor.instance_update(self.context, instance_uuid, **updates) def test_bw_usage_get(self): self.mox.StubOutWithMock(db, 'bw_usage_update') self.mox.StubOutWithMock(db, 'bw_usage_get') get_args = (self.context, 'uuid', 0, 'mac') db.bw_usage_get(*get_args).AndReturn('foo') self.mox.ReplayAll() result = self.conductor.bw_usage_get(*get_args) self.assertEqual(result, 'foo') def test_block_device_mapping_update_or_create(self): self.mox.StubOutWithMock(db, 'block_device_mapping_create') self.mox.StubOutWithMock(db, 'block_device_mapping_update') self.mox.StubOutWithMock(db, 'block_device_mapping_update_or_create') db.block_device_mapping_create(self.context, 'fake-bdm') db.block_device_mapping_update(self.context, 'fake-id', {'id': 'fake-id'}) db.block_device_mapping_update_or_create(self.context, 'fake-bdm') self.mox.ReplayAll() self.conductor.block_device_mapping_create(self.context, 'fake-bdm') self.conductor.block_device_mapping_update(self.context, 'fake-id', {}) self.conductor.block_device_mapping_update_or_create(self.context, 'fake-bdm') def _test_stubbed(self, name, *args, **kwargs): if args and isinstance(args[0], FakeContext): ctxt = args[0] args = args[1:] else: ctxt = self.context db_exception = kwargs.get('db_exception') self.mox.StubOutWithMock(db, name) if db_exception: getattr(db, name)(ctxt, *args).AndRaise(db_exception) else: getattr(db, name)(ctxt, *args).AndReturn('fake-result') if name == 'service_destroy': # TODO(russellb) This is a hack ... SetUp() starts the conductor() # service. There is a cleanup step that runs after this test which # also deletes the associated service record. This involves a call # to db.service_destroy(), which we have stubbed out. db.service_destroy(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() if db_exception: self.assertRaises(db_exception.__class__, getattr(self.conductor, name), self.context, *args) else: result = getattr(self.conductor, name)(self.context, *args) self.assertEqual( result, 'fake-result' if kwargs.get('returns', True) else None) def test_service_get_all(self): self._test_stubbed('service_get_all') def test_service_get_by_host_and_topic(self): self._test_stubbed('service_get_by_host_and_topic', 'host', 'topic') def test_service_get_all_by_topic(self): self._test_stubbed('service_get_all_by_topic', 'topic') def test_service_get_all_by_host(self): self._test_stubbed('service_get_all_by_host', 'host') def test_service_get_by_compute_host(self): self._test_stubbed('service_get_by_compute_host', 'host') def test_service_get_by_args(self): self._test_stubbed('service_get_by_args', 'host', 'binary') def test_service_get_by_compute_host_not_found(self): self._test_stubbed('service_get_by_compute_host', 'host', db_exception=exc.ComputeHostNotFound(host='host')) def test_service_get_by_args_not_found(self): self._test_stubbed('service_get_by_args', 'host', 'binary', db_exception=exc.HostBinaryNotFound(binary='binary', host='host')) def test_service_create(self): self._test_stubbed('service_create', {}) def test_service_destroy(self): self._test_stubbed('service_destroy', '', returns=False) def test_service_update(self): ctxt = self.context self.mox.StubOutWithMock(db, 'service_update') db.service_update(ctxt, '', {}).AndReturn('fake-result') self.mox.ReplayAll() result = self.conductor.service_update(self.context, {'id': ''}, {}) self.assertEqual(result, 'fake-result') def test_instance_get_all_by_host_and_node(self): self._test_stubbed('instance_get_all_by_host_and_node', self.context.elevated(), 'host', 'node') def test_instance_get_all_by_host(self): self.mox.StubOutWithMock(db, 'instance_get_all_by_host') self.mox.StubOutWithMock(db, 'instance_get_all_by_host_and_node') db.instance_get_all_by_host(self.context.elevated(), 'host', None).AndReturn('fake-result') self.mox.ReplayAll() result = self.conductor.instance_get_all_by_host(self.context, 'host') self.assertEqual(result, 'fake-result') def test_wait_until_ready(self): timeouts = [] calls = dict(count=0) def fake_ping(context, message, timeout): timeouts.append(timeout) calls['count'] += 1 if calls['count'] < 15: raise messaging.MessagingTimeout("fake") self.stubs.Set(self.conductor.base_rpcapi, 'ping', fake_ping) self.conductor.wait_until_ready(self.context) self.assertEqual(timeouts.count(10), 10) self.assertIn(None, timeouts) def test_security_groups_trigger_handler(self): self.mox.StubOutWithMock(self.conductor_manager.security_group_api, 'trigger_handler') self.conductor_manager.security_group_api.trigger_handler('event', self.context, 'arg') self.mox.ReplayAll() self.conductor.security_groups_trigger_handler(self.context, 'event', 'arg') class ConductorLocalAPITestCase(ConductorAPITestCase): """Conductor LocalAPI Tests.""" def setUp(self): super(ConductorLocalAPITestCase, self).setUp() self.conductor = conductor_api.LocalAPI() self.conductor_manager = self.conductor._manager._target self.db = db def test_client_exceptions(self): instance = self._create_fake_instance() # NOTE(danms): The LocalAPI should not raise exceptions wrapped # in ClientException. KeyError should be raised if an invalid # update key is passed, so use that to validate. self.assertRaises(KeyError, self._do_update, instance['uuid'], foo='bar') def test_wait_until_ready(self): # Override test in ConductorAPITestCase pass class ConductorImportTest(test.TestCase): def test_import_conductor_local(self): self.flags(use_local=True, group='conductor') self.assertIsInstance(conductor.API(), conductor_api.LocalAPI) self.assertIsInstance(conductor.ComputeTaskAPI(), conductor_api.LocalComputeTaskAPI) def test_import_conductor_rpc(self): self.flags(use_local=False, group='conductor') self.assertIsInstance(conductor.API(), conductor_api.API) self.assertIsInstance(conductor.ComputeTaskAPI(), conductor_api.ComputeTaskAPI) def test_import_conductor_override_to_local(self): self.flags(use_local=False, group='conductor') self.assertIsInstance(conductor.API(use_local=True), conductor_api.LocalAPI) self.assertIsInstance(conductor.ComputeTaskAPI(use_local=True), conductor_api.LocalComputeTaskAPI) class ConductorPolicyTest(test.TestCase): def test_all_allowed_keys(self): def fake_db_instance_update(self, *args, **kwargs): return None, None self.stubs.Set(db, 'instance_update_and_get_original', fake_db_instance_update) ctxt = context.RequestContext('fake-user', 'fake-project') conductor = conductor_api.LocalAPI() updates = {} for key in conductor_manager.allowed_updates: if key in conductor_manager.datetime_fields: updates[key] = timeutils.utcnow() else: updates[key] = 'foo' conductor.instance_update(ctxt, 'fake-instance', **updates) def test_allowed_keys_are_real(self): instance = models.Instance() keys = list(conductor_manager.allowed_updates) # NOTE(danms): expected_task_state is a parameter that gets # passed to the db layer, but is not actually an instance attribute del keys[keys.index('expected_task_state')] for key in keys: self.assertTrue(hasattr(instance, key)) class _BaseTaskTestCase(object): def setUp(self): super(_BaseTaskTestCase, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = FakeContext(self.user_id, self.project_id) fake_instance_actions.stub_out_action_events(self.stubs) def fake_deserialize_context(serializer, ctxt_dict): self.assertEqual(self.context.user_id, ctxt_dict['user_id']) self.assertEqual(self.context.project_id, ctxt_dict['project_id']) return self.context self.stubs.Set(rpc.RequestContextSerializer, 'deserialize_context', fake_deserialize_context) def test_live_migrate(self): inst = fake_instance.fake_db_instance() inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), inst, []) self.mox.StubOutWithMock(live_migrate, 'execute') live_migrate.execute(self.context, mox.IsA(instance_obj.Instance), 'destination', 'block_migration', 'disk_over_commit') self.mox.ReplayAll() if isinstance(self.conductor, (conductor_api.ComputeTaskAPI, conductor_api.LocalComputeTaskAPI)): # The API method is actually 'live_migrate_instance'. It gets # converted into 'migrate_server' when doing RPC. self.conductor.live_migrate_instance(self.context, inst_obj, 'destination', 'block_migration', 'disk_over_commit') else: self.conductor.migrate_server(self.context, inst_obj, {'host': 'destination'}, True, False, None, 'block_migration', 'disk_over_commit') def test_cold_migrate(self): self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock( self.conductor_manager.compute_rpcapi, 'prep_resize') self.mox.StubOutWithMock(self.conductor_manager.scheduler_rpcapi, 'select_destinations') inst = fake_instance.fake_db_instance(image_ref='image_ref') inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), inst, []) flavor = flavors.get_default_flavor() flavor['extra_specs'] = 'extra_specs' request_spec = {'instance_type': flavor} compute_utils.get_image_metadata( self.context, self.conductor_manager.image_service, 'image_ref', mox.IsA(instance_obj.Instance)).AndReturn('image') scheduler_utils.build_request_spec( self.context, 'image', [mox.IsA(instance_obj.Instance)], instance_type=flavor).AndReturn(request_spec) hosts = [dict(host='host1', nodename=None, limits={})] self.conductor_manager.scheduler_rpcapi.select_destinations( self.context, request_spec, {}).AndReturn(hosts) filter_properties = {'limits': {}} self.conductor_manager.compute_rpcapi.prep_resize( self.context, 'image', mox.IsA(instance_obj.Instance), mox.IsA(dict), 'host1', [], request_spec=request_spec, filter_properties=filter_properties, node=None) self.mox.ReplayAll() scheduler_hint = {'filter_properties': {}} if isinstance(self.conductor, (conductor_api.ComputeTaskAPI, conductor_api.LocalComputeTaskAPI)): # The API method is actually 'resize_instance'. It gets # converted into 'migrate_server' when doing RPC. self.conductor.resize_instance( self.context, inst_obj, {}, scheduler_hint, flavor, []) else: self.conductor.migrate_server( self.context, inst_obj, scheduler_hint, False, False, flavor, None, None, []) def test_build_instances(self): instance_type = flavors.get_default_flavor() system_metadata = flavors.save_flavor_info({}, instance_type) # NOTE(alaski): instance_type -> system_metadata -> instance_type # loses some data (extra_specs). This build process is using # scheduler/utils:build_request_spec() which extracts flavor from # system_metadata and will re-query the DB for extra_specs.. so # we need to test this properly expected_instance_type = flavors.extract_flavor( {'system_metadata': system_metadata}) expected_instance_type['extra_specs'] = 'fake-specs' self.mox.StubOutWithMock(db, 'flavor_extra_specs_get') self.mox.StubOutWithMock(self.conductor_manager.scheduler_rpcapi, 'run_instance') db.flavor_extra_specs_get( self.context, instance_type['flavorid']).AndReturn('fake-specs') self.conductor_manager.scheduler_rpcapi.run_instance(self.context, request_spec={ 'image': {'fake_data': 'should_pass_silently'}, 'instance_properties': {'system_metadata': system_metadata, 'uuid': 'fakeuuid'}, 'instance_type': expected_instance_type, 'instance_uuids': ['fakeuuid', 'fakeuuid2'], 'block_device_mapping': 'block_device_mapping', 'security_group': 'security_groups', 'num_instances': 2}, admin_password='admin_password', injected_files='injected_files', requested_networks='requested_networks', is_first_time=True, filter_properties={}, legacy_bdm_in_spec=False) self.mox.ReplayAll() # build_instances() is a cast, we need to wait for it to complete self.useFixture(cast_as_call.CastAsCall(self.stubs)) self.conductor.build_instances(self.context, instances=[{'uuid': 'fakeuuid', 'system_metadata': system_metadata}, {'uuid': 'fakeuuid2'}], image={'fake_data': 'should_pass_silently'}, filter_properties={}, admin_password='admin_password', injected_files='injected_files', requested_networks='requested_networks', security_groups='security_groups', block_device_mapping='block_device_mapping', legacy_bdm=False) def test_unshelve_instance_on_host(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) instance = instance_obj.Instance.get_by_uuid(self.context, db_instance['uuid'], expected_attrs=['system_metadata']) instance.vm_state = vm_states.SHELVED instance.task_state = task_states.UNSHELVING instance.save() system_metadata = instance.system_metadata self.mox.StubOutWithMock(self.conductor_manager.compute_rpcapi, 'start_instance') self.mox.StubOutWithMock(self.conductor_manager, '_delete_image') self.mox.StubOutWithMock(self.conductor_manager.compute_rpcapi, 'unshelve_instance') self.conductor_manager.compute_rpcapi.start_instance(self.context, instance) self.conductor_manager._delete_image(self.context, 'fake_image_id') self.mox.ReplayAll() system_metadata['shelved_at'] = timeutils.utcnow() system_metadata['shelved_image_id'] = 'fake_image_id' system_metadata['shelved_host'] = 'fake-mini' self.conductor_manager.unshelve_instance(self.context, instance) def test_unshelve_instance_schedule_and_rebuild(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) instance = instance_obj.Instance.get_by_uuid(self.context, db_instance['uuid'], expected_attrs=['system_metadata']) instance.vm_state = vm_states.SHELVED_OFFLOADED instance.save() filter_properties = {} system_metadata = instance.system_metadata self.mox.StubOutWithMock(self.conductor_manager, '_get_image') self.mox.StubOutWithMock(self.conductor_manager, '_schedule_instances') self.mox.StubOutWithMock(self.conductor_manager.compute_rpcapi, 'unshelve_instance') self.conductor_manager._get_image(self.context, 'fake_image_id').AndReturn('fake_image') self.conductor_manager._schedule_instances(self.context, 'fake_image', filter_properties, instance).AndReturn( [{'host': 'fake_host', 'nodename': 'fake_node', 'limits': {}}]) self.conductor_manager.compute_rpcapi.unshelve_instance(self.context, instance, 'fake_host', image='fake_image', filter_properties={'limits': {}}, node='fake_node') self.mox.ReplayAll() system_metadata['shelved_at'] = timeutils.utcnow() system_metadata['shelved_image_id'] = 'fake_image_id' system_metadata['shelved_host'] = 'fake-mini' self.conductor_manager.unshelve_instance(self.context, instance) def test_unshelve_instance_schedule_and_rebuild_novalid_host(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) instance = instance_obj.Instance.get_by_uuid(self.context, db_instance['uuid'], expected_attrs=['system_metadata']) instance.vm_state = vm_states.SHELVED_OFFLOADED instance.save() system_metadata = instance.system_metadata def fake_schedule_instances(context, image, filter_properties, *instances): raise exc.NoValidHost(reason='') with contextlib.nested( mock.patch.object(self.conductor_manager, '_get_image', return_value='fake_image'), mock.patch.object(self.conductor_manager, '_schedule_instances', fake_schedule_instances) ) as (_get_image, _schedule_instances): system_metadata['shelved_at'] = timeutils.utcnow() system_metadata['shelved_image_id'] = 'fake_image_id' system_metadata['shelved_host'] = 'fake-mini' self.conductor_manager.unshelve_instance(self.context, instance) _get_image.assert_has_calls([mock.call(self.context, system_metadata['shelved_image_id'])]) self.assertEqual(vm_states.SHELVED_OFFLOADED, instance.vm_state) def test_unshelve_instance_schedule_and_rebuild_volume_backed(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) instance = instance_obj.Instance.get_by_uuid(self.context, db_instance['uuid'], expected_attrs=['system_metadata']) instance.vm_state = vm_states.SHELVED_OFFLOADED instance.save() filter_properties = {} system_metadata = instance.system_metadata self.mox.StubOutWithMock(self.conductor_manager, '_get_image') self.mox.StubOutWithMock(self.conductor_manager, '_schedule_instances') self.mox.StubOutWithMock(self.conductor_manager.compute_rpcapi, 'unshelve_instance') self.conductor_manager._get_image(self.context, 'fake_image_id').AndReturn(None) self.conductor_manager._schedule_instances(self.context, None, filter_properties, instance).AndReturn( [{'host': 'fake_host', 'nodename': 'fake_node', 'limits': {}}]) self.conductor_manager.compute_rpcapi.unshelve_instance(self.context, instance, 'fake_host', image=None, filter_properties={'limits': {}}, node='fake_node') self.mox.ReplayAll() system_metadata['shelved_at'] = timeutils.utcnow() system_metadata['shelved_image_id'] = 'fake_image_id' system_metadata['shelved_host'] = 'fake-mini' self.conductor_manager.unshelve_instance(self.context, instance) class ConductorTaskTestCase(_BaseTaskTestCase, test_compute.BaseTestCase): """ComputeTaskManager Tests.""" def setUp(self): super(ConductorTaskTestCase, self).setUp() self.conductor = conductor_manager.ComputeTaskManager() self.conductor_manager = self.conductor def test_migrate_server_fails_with_rebuild(self): self.assertRaises(NotImplementedError, self.conductor.migrate_server, self.context, None, None, True, True, None, None, None) def test_migrate_server_fails_with_flavor(self): self.assertRaises(NotImplementedError, self.conductor.migrate_server, self.context, None, None, True, False, "dummy", None, None) def _build_request_spec(self, instance): return { 'instance_properties': { 'uuid': instance['uuid'], }, } def test_migrate_server_deals_with_expected_exceptions(self): instance = fake_instance.fake_db_instance(uuid='uuid', vm_state=vm_states.ACTIVE) inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance, []) self.mox.StubOutWithMock(live_migrate, 'execute') self.mox.StubOutWithMock(scheduler_utils, 'set_vm_state_and_notify') ex = exc.DestinationHypervisorTooOld() live_migrate.execute(self.context, mox.IsA(instance_obj.Instance), 'destination', 'block_migration', 'disk_over_commit').AndRaise(ex) scheduler_utils.set_vm_state_and_notify(self.context, 'compute_task', 'migrate_server', {'vm_state': vm_states.ACTIVE, 'task_state': None, 'expected_task_state': task_states.MIGRATING}, ex, self._build_request_spec(inst_obj), self.conductor_manager.db) self.mox.ReplayAll() self.conductor = utils.ExceptionHelper(self.conductor) self.assertRaises(exc.DestinationHypervisorTooOld, self.conductor.migrate_server, self.context, inst_obj, {'host': 'destination'}, True, False, None, 'block_migration', 'disk_over_commit') def test_migrate_server_deals_with_unexpected_exceptions(self): instance = fake_instance.fake_db_instance() inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance, []) self.mox.StubOutWithMock(live_migrate, 'execute') self.mox.StubOutWithMock(scheduler_utils, 'set_vm_state_and_notify') ex = IOError() live_migrate.execute(self.context, mox.IsA(instance_obj.Instance), 'destination', 'block_migration', 'disk_over_commit').AndRaise(ex) self.mox.ReplayAll() self.conductor = utils.ExceptionHelper(self.conductor) self.assertRaises(exc.MigrationError, self.conductor.migrate_server, self.context, inst_obj, {'host': 'destination'}, True, False, None, 'block_migration', 'disk_over_commit') def test_set_vm_state_and_notify(self): self.mox.StubOutWithMock(scheduler_utils, 'set_vm_state_and_notify') scheduler_utils.set_vm_state_and_notify( self.context, 'compute_task', 'method', 'updates', 'ex', 'request_spec', self.conductor.db) self.mox.ReplayAll() self.conductor._set_vm_state_and_notify( self.context, 'method', 'updates', 'ex', 'request_spec') def test_cold_migrate_no_valid_host_back_in_active_state(self): inst = fake_instance.fake_db_instance(image_ref='fake-image_ref') inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), inst, expected_attrs=[]) request_spec = dict(instance_type=dict(extra_specs=dict())) filter_props = dict(context=None) resvs = 'fake-resvs' image = 'fake-image' self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.conductor.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.conductor, '_set_vm_state_and_notify') self.mox.StubOutWithMock(quotas_obj.Quotas, 'rollback') compute_utils.get_image_metadata( self.context, self.conductor_manager.image_service, 'fake-image_ref', mox.IsA(instance_obj.Instance)).AndReturn(image) scheduler_utils.build_request_spec( self.context, image, [inst_obj], instance_type='flavor').AndReturn(request_spec) exc_info = exc.NoValidHost(reason="") self.conductor.scheduler_rpcapi.select_destinations( self.context, request_spec, filter_props).AndRaise(exc_info) updates = {'vm_state': vm_states.ACTIVE, 'task_state': None} self.conductor._set_vm_state_and_notify(self.context, 'migrate_server', updates, exc_info, request_spec) quotas_obj.Quotas.rollback() self.mox.ReplayAll() self.conductor._cold_migrate(self.context, inst_obj, 'flavor', filter_props, [resvs]) def test_cold_migrate_no_valid_host_back_in_stopped_state(self): inst = fake_instance.fake_db_instance(image_ref='fake-image_ref', vm_state=vm_states.STOPPED) inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), inst, expected_attrs=[]) request_spec = dict(instance_type=dict(extra_specs=dict())) filter_props = dict(context=None) resvs = 'fake-resvs' image = 'fake-image' self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.conductor.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(self.conductor, '_set_vm_state_and_notify') self.mox.StubOutWithMock(quotas_obj.Quotas, 'rollback') compute_utils.get_image_metadata( self.context, self.conductor_manager.image_service, 'fake-image_ref', mox.IsA(instance_obj.Instance)).AndReturn(image) scheduler_utils.build_request_spec( self.context, image, [inst_obj], instance_type='flavor').AndReturn(request_spec) exc_info = exc.NoValidHost(reason="") self.conductor.scheduler_rpcapi.select_destinations( self.context, request_spec, filter_props).AndRaise(exc_info) updates = {'vm_state': vm_states.STOPPED, 'task_state': None} self.conductor._set_vm_state_and_notify(self.context, 'migrate_server', updates, exc_info, request_spec) quotas_obj.Quotas.rollback() self.mox.ReplayAll() self.conductor._cold_migrate(self.context, inst_obj, 'flavor', filter_props, [resvs]) def test_cold_migrate_exception_host_in_error_state_and_raise(self): inst = fake_instance.fake_db_instance(image_ref='fake-image_ref', vm_state=vm_states.STOPPED) inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), inst, expected_attrs=[]) request_spec = dict(instance_type=dict(extra_specs=dict())) filter_props = dict(context=None) resvs = 'fake-resvs' image = 'fake-image' hosts = [dict(host='host1', nodename=None, limits={})] self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(scheduler_utils, 'build_request_spec') self.mox.StubOutWithMock(self.conductor.scheduler_rpcapi, 'select_destinations') self.mox.StubOutWithMock(scheduler_utils, 'populate_filter_properties') self.mox.StubOutWithMock(self.conductor.compute_rpcapi, 'prep_resize') self.mox.StubOutWithMock(self.conductor, '_set_vm_state_and_notify') self.mox.StubOutWithMock(quotas_obj.Quotas, 'rollback') compute_utils.get_image_metadata( self.context, self.conductor_manager.image_service, 'fake-image_ref', mox.IsA(instance_obj.Instance)).AndReturn(image) scheduler_utils.build_request_spec( self.context, image, [inst_obj], instance_type='flavor').AndReturn(request_spec) self.conductor.scheduler_rpcapi.select_destinations( self.context, request_spec, filter_props).AndReturn(hosts) scheduler_utils.populate_filter_properties(filter_props, hosts[0]) # context popped expected_filter_props = dict() # extra_specs popped expected_request_spec = dict(instance_type=dict()) exc_info = test.TestingException('something happened') self.conductor.compute_rpcapi.prep_resize( self.context, image, inst_obj, 'flavor', hosts[0]['host'], [resvs], request_spec=expected_request_spec, filter_properties=expected_filter_props, node=hosts[0]['nodename']).AndRaise(exc_info) updates = {'vm_state': vm_states.STOPPED, 'task_state': None} self.conductor._set_vm_state_and_notify(self.context, 'migrate_server', updates, exc_info, expected_request_spec) quotas_obj.Quotas.rollback() self.mox.ReplayAll() self.assertRaises(test.TestingException, self.conductor._cold_migrate, self.context, inst_obj, 'flavor', filter_props, [resvs]) class ConductorTaskRPCAPITestCase(_BaseTaskTestCase, test_compute.BaseTestCase): """Conductor compute_task RPC namespace Tests.""" def setUp(self): super(ConductorTaskRPCAPITestCase, self).setUp() self.conductor_service = self.start_service( 'conductor', manager='nova.conductor.manager.ConductorManager') self.conductor = conductor_rpcapi.ComputeTaskAPI() service_manager = self.conductor_service.manager self.conductor_manager = service_manager.compute_task_mgr class ConductorTaskAPITestCase(_BaseTaskTestCase, test_compute.BaseTestCase): """Compute task API Tests.""" def setUp(self): super(ConductorTaskAPITestCase, self).setUp() self.conductor_service = self.start_service( 'conductor', manager='nova.conductor.manager.ConductorManager') self.conductor = conductor_api.ComputeTaskAPI() service_manager = self.conductor_service.manager self.conductor_manager = service_manager.compute_task_mgr class ConductorLocalComputeTaskAPITestCase(ConductorTaskAPITestCase): """Conductor LocalComputeTaskAPI Tests.""" def setUp(self): super(ConductorLocalComputeTaskAPITestCase, self).setUp() self.conductor = conductor_api.LocalComputeTaskAPI() self.conductor_manager = self.conductor._manager._target class ConductorV2ManagerProxyTestCase(test.NoDBTestCase): def test_v2_manager_proxy(self): manager = conductor_manager.ConductorManager() proxy = conductor_manager._ConductorManagerV2Proxy(manager) ctxt = context.get_admin_context() methods = [ # (method, number_of_args) ('instance_update', 3), ('instance_get_by_uuid', 2), ('migration_get_in_progress_by_host_and_node', 2), ('aggregate_host_add', 2), ('aggregate_host_delete', 2), ('aggregate_metadata_get_by_host', 2), ('bw_usage_update', 9), ('provider_fw_rule_get_all', 0), ('agent_build_get_by_triple', 3), ('block_device_mapping_update_or_create', 2), ('block_device_mapping_get_all_by_instance', 2), ('instance_get_all_by_filters', 5), ('instance_get_active_by_window_joined', 4), ('instance_destroy', 1), ('instance_info_cache_delete', 1), ('vol_get_usage_by_time', 1), ('vol_usage_update', 8), ('service_get_all_by', 3), ('instance_get_all_by_host', 3), ('instance_fault_create', 1), ('action_event_start', 1), ('action_event_finish', 1), ('service_create', 1), ('service_destroy', 1), ('compute_node_create', 1), ('compute_node_update', 2), ('compute_node_delete', 1), ('service_update', 2), ('task_log_get', 5), ('task_log_begin_task', 6), ('task_log_end_task', 6), ('notify_usage_exists', 5), ('security_groups_trigger_handler', 2), ('security_groups_trigger_members_refresh', 1), ('network_migrate_instance_start', 2), ('network_migrate_instance_finish', 2), ('quota_commit', 3), ('quota_rollback', 3), ('get_ec2_ids', 1), ('compute_unrescue', 1), ('object_class_action', 5), ('object_action', 4), ('object_backport', 2), ] for method, num_args in methods: args = [] for _i in xrange(num_args): args.append(None) with mock.patch.object(manager, method) as mock_method: getattr(proxy, method)(ctxt, *args) mock_method.assert_called_once() nova-2014.1/nova/tests/conductor/__init__.py0000664000175400017540000000000012323721477022116 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/policy_fixture.py0000664000175400017540000000511112323721477021434 0ustar jenkinsjenkins00000000000000# Copyright 2012 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import json import os import fixtures from oslo.config import cfg from nova.openstack.common import policy as common_policy import nova.policy from nova.tests import fake_policy CONF = cfg.CONF class PolicyFixture(fixtures.Fixture): def setUp(self): super(PolicyFixture, self).setUp() self.policy_dir = self.useFixture(fixtures.TempDir()) self.policy_file_name = os.path.join(self.policy_dir.path, 'policy.json') with open(self.policy_file_name, 'w') as policy_file: policy_file.write(fake_policy.policy_data) CONF.set_override('policy_file', self.policy_file_name) nova.policy.reset() nova.policy.init() self.addCleanup(nova.policy.reset) def set_rules(self, rules): common_policy.set_rules(common_policy.Rules( dict((k, common_policy.parse_rule(v)) for k, v in rules.items()))) class RoleBasedPolicyFixture(fixtures.Fixture): def __init__(self, role="admin", *args, **kwargs): super(RoleBasedPolicyFixture, self).__init__(*args, **kwargs) self.role = role def setUp(self): """Copy live policy.json file and convert all actions to allow users of the specified role only """ super(RoleBasedPolicyFixture, self).setUp() policy = json.load(open(CONF.policy_file)) # Convert all actions to require specified role for action, rule in policy.iteritems(): policy[action] = 'role:%s' % self.role self.policy_dir = self.useFixture(fixtures.TempDir()) self.policy_file_name = os.path.join(self.policy_dir.path, 'policy.json') with open(self.policy_file_name, 'w') as policy_file: json.dump(policy, policy_file) CONF.set_override('policy_file', self.policy_file_name) nova.policy.reset() nova.policy.init() self.addCleanup(nova.policy.reset) nova-2014.1/nova/tests/test_iptables_network.py0000664000175400017540000003176712323721477023022 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Unit Tests for network code.""" from nova.network import linux_net from nova import test class IptablesManagerTestCase(test.NoDBTestCase): binary_name = linux_net.get_binary_name() sample_filter = ['#Generated by iptables-save on Fri Feb 18 15:17:05 2011', '*filter', ':INPUT ACCEPT [2223527:305688874]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [2172501:140856656]', ':iptables-top-rule - [0:0]', ':iptables-bottom-rule - [0:0]', ':%s-FORWARD - [0:0]' % (binary_name), ':%s-INPUT - [0:0]' % (binary_name), ':%s-local - [0:0]' % (binary_name), ':%s-OUTPUT - [0:0]' % (binary_name), ':nova-filter-top - [0:0]', '[0:0] -A FORWARD -j nova-filter-top', '[0:0] -A OUTPUT -j nova-filter-top', '[0:0] -A nova-filter-top -j %s-local' % (binary_name), '[0:0] -A INPUT -j %s-INPUT' % (binary_name), '[0:0] -A OUTPUT -j %s-OUTPUT' % (binary_name), '[0:0] -A FORWARD -j %s-FORWARD' % (binary_name), '[0:0] -A INPUT -i virbr0 -p udp -m udp --dport 53 ' '-j ACCEPT', '[0:0] -A INPUT -i virbr0 -p tcp -m tcp --dport 53 ' '-j ACCEPT', '[0:0] -A INPUT -i virbr0 -p udp -m udp --dport 67 ' '-j ACCEPT', '[0:0] -A INPUT -i virbr0 -p tcp -m tcp --dport 67 ' '-j ACCEPT', '[0:0] -A FORWARD -s 192.168.122.0/24 -i virbr0 ' '-j ACCEPT', '[0:0] -A FORWARD -i virbr0 -o virbr0 -j ACCEPT', '[0:0] -A FORWARD -o virbr0 -j REJECT --reject-with ' 'icmp-port-unreachable', '[0:0] -A FORWARD -i virbr0 -j REJECT --reject-with ' 'icmp-port-unreachable', 'COMMIT', '# Completed on Fri Feb 18 15:17:05 2011'] sample_nat = ['# Generated by iptables-save on Fri Feb 18 15:17:05 2011', '*nat', ':PREROUTING ACCEPT [3936:762355]', ':INPUT ACCEPT [2447:225266]', ':OUTPUT ACCEPT [63491:4191863]', ':POSTROUTING ACCEPT [63112:4108641]', ':%s-OUTPUT - [0:0]' % (binary_name), ':%s-snat - [0:0]' % (binary_name), ':%s-PREROUTING - [0:0]' % (binary_name), ':%s-float-snat - [0:0]' % (binary_name), ':%s-POSTROUTING - [0:0]' % (binary_name), ':nova-postrouting-bottom - [0:0]', '[0:0] -A PREROUTING -j %s-PREROUTING' % (binary_name), '[0:0] -A OUTPUT -j %s-OUTPUT' % (binary_name), '[0:0] -A POSTROUTING -j %s-POSTROUTING' % (binary_name), '[0:0] -A nova-postrouting-bottom ' '-j %s-snat' % (binary_name), '[0:0] -A %s-snat ' '-j %s-float-snat' % (binary_name, binary_name), '[0:0] -A POSTROUTING -j nova-postrouting-bottom', 'COMMIT', '# Completed on Fri Feb 18 15:17:05 2011'] def setUp(self): super(IptablesManagerTestCase, self).setUp() self.manager = linux_net.IptablesManager() def test_duplicate_rules_no_dirty(self): table = self.manager.ipv4['filter'] table.dirty = False num_rules = len(table.rules) table.add_rule('FORWARD', '-s 1.2.3.4/5 -j DROP') self.assertEqual(len(table.rules), num_rules + 1) self.assertTrue(table.dirty) table.dirty = False num_rules = len(table.rules) table.add_rule('FORWARD', '-s 1.2.3.4/5 -j DROP') self.assertEqual(len(table.rules), num_rules) self.assertFalse(table.dirty) def test_clean_tables_no_apply(self): for table in self.manager.ipv4.itervalues(): table.dirty = False for table in self.manager.ipv6.itervalues(): table.dirty = False def error_apply(): raise test.TestingException() self.stubs.Set(self.manager, '_apply', error_apply) self.manager.apply() def test_filter_rules_are_wrapped(self): current_lines = self.sample_filter table = self.manager.ipv4['filter'] table.add_rule('FORWARD', '-s 1.2.3.4/5 -j DROP') new_lines = self.manager._modify_rules(current_lines, table, 'filter') self.assertTrue('[0:0] -A %s-FORWARD ' '-s 1.2.3.4/5 -j DROP' % self.binary_name in new_lines) table.remove_rule('FORWARD', '-s 1.2.3.4/5 -j DROP') new_lines = self.manager._modify_rules(current_lines, table, 'filter') self.assertTrue('[0:0] -A %s-FORWARD ' '-s 1.2.3.4/5 -j DROP' % self.binary_name not in new_lines) def test_remove_rules_regex(self): current_lines = self.sample_nat table = self.manager.ipv4['nat'] table.add_rule('float-snat', '-s 10.0.0.1 -j SNAT --to 10.10.10.10' ' -d 10.0.0.1') table.add_rule('float-snat', '-s 10.0.0.1 -j SNAT --to 10.10.10.10' ' -o eth0') table.add_rule('PREROUTING', '-d 10.10.10.10 -j DNAT --to 10.0.0.1') table.add_rule('OUTPUT', '-d 10.10.10.10 -j DNAT --to 10.0.0.1') table.add_rule('float-snat', '-s 10.0.0.10 -j SNAT --to 10.10.10.11' ' -d 10.0.0.10') table.add_rule('float-snat', '-s 10.0.0.10 -j SNAT --to 10.10.10.11' ' -o eth0') table.add_rule('PREROUTING', '-d 10.10.10.11 -j DNAT --to 10.0.0.10') table.add_rule('OUTPUT', '-d 10.10.10.11 -j DNAT --to 10.0.0.10') new_lines = self.manager._modify_rules(current_lines, table, 'nat') self.assertEqual(len(new_lines) - len(current_lines), 8) regex = '.*\s+%s(/32|\s+|$)' num_removed = table.remove_rules_regex(regex % '10.10.10.10') self.assertEqual(num_removed, 4) new_lines = self.manager._modify_rules(current_lines, table, 'nat') self.assertEqual(len(new_lines) - len(current_lines), 4) num_removed = table.remove_rules_regex(regex % '10.10.10.11') self.assertEqual(num_removed, 4) new_lines = self.manager._modify_rules(current_lines, table, 'nat') self.assertEqual(new_lines, current_lines) def test_nat_rules(self): current_lines = self.sample_nat new_lines = self.manager._modify_rules(current_lines, self.manager.ipv4['nat'], 'nat') for line in [':%s-OUTPUT - [0:0]' % (self.binary_name), ':%s-float-snat - [0:0]' % (self.binary_name), ':%s-snat - [0:0]' % (self.binary_name), ':%s-PREROUTING - [0:0]' % (self.binary_name), ':%s-POSTROUTING - [0:0]' % (self.binary_name)]: self.assertTrue(line in new_lines, "One of our chains went" " missing.") seen_lines = set() for line in new_lines: line = line.strip() self.assertTrue(line not in seen_lines, "Duplicate line: %s" % line) seen_lines.add(line) last_postrouting_line = '' for line in new_lines: if line.startswith('[0:0] -A POSTROUTING'): last_postrouting_line = line self.assertTrue('-j nova-postrouting-bottom' in last_postrouting_line, "Last POSTROUTING rule does not jump to " "nova-postouting-bottom: %s" % last_postrouting_line) for chain in ['POSTROUTING', 'PREROUTING', 'OUTPUT']: self.assertTrue('[0:0] -A %s -j %s-%s' % (chain, self.binary_name, chain) in new_lines, "Built-in chain %s not wrapped" % (chain,)) def test_filter_rules(self): current_lines = self.sample_filter new_lines = self.manager._modify_rules(current_lines, self.manager.ipv4['filter'], 'nat') for line in [':%s-FORWARD - [0:0]' % (self.binary_name), ':%s-INPUT - [0:0]' % (self.binary_name), ':%s-local - [0:0]' % (self.binary_name), ':%s-OUTPUT - [0:0]' % (self.binary_name)]: self.assertTrue(line in new_lines, "One of our chains went" " missing.") seen_lines = set() for line in new_lines: line = line.strip() self.assertTrue(line not in seen_lines, "Duplicate line: %s" % line) seen_lines.add(line) for chain in ['FORWARD', 'OUTPUT']: for line in new_lines: if line.startswith('[0:0] -A %s' % chain): self.assertTrue('-j nova-filter-top' in line, "First %s rule does not " "jump to nova-filter-top" % chain) break self.assertTrue('[0:0] -A nova-filter-top ' '-j %s-local' % self.binary_name in new_lines, "nova-filter-top does not jump to wrapped local chain") for chain in ['INPUT', 'OUTPUT', 'FORWARD']: self.assertTrue('[0:0] -A %s -j %s-%s' % (chain, self.binary_name, chain) in new_lines, "Built-in chain %s not wrapped" % (chain,)) def test_missing_table(self): current_lines = [] new_lines = self.manager._modify_rules(current_lines, self.manager.ipv4['filter'], 'filter') for line in ['*filter', 'COMMIT']: self.assertTrue(line in new_lines, "One of iptables key lines" "went missing.") self.assertTrue(len(new_lines) > 4, "No iptables rules added") self.assertTrue("#Generated by nova" == new_lines[0] and "*filter" == new_lines[1] and "COMMIT" == new_lines[-2] and "#Completed by nova" == new_lines[-1], "iptables rules not generated in the correct order") def test_iptables_top_order(self): # Test iptables_top_regex current_lines = list(self.sample_filter) current_lines[12:12] = ['[0:0] -A FORWARD -j iptables-top-rule'] self.flags(iptables_top_regex='-j iptables-top-rule') new_lines = self.manager._modify_rules(current_lines, self.manager.ipv4['filter'], 'filter') self.assertEqual(current_lines, new_lines) def test_iptables_bottom_order(self): # Test iptables_bottom_regex current_lines = list(self.sample_filter) current_lines[26:26] = ['[0:0] -A FORWARD -j iptables-bottom-rule'] self.flags(iptables_bottom_regex='-j iptables-bottom-rule') new_lines = self.manager._modify_rules(current_lines, self.manager.ipv4['filter'], 'filter') self.assertEqual(current_lines, new_lines) def test_iptables_preserve_order(self): # Test both iptables_top_regex and iptables_bottom_regex current_lines = list(self.sample_filter) current_lines[12:12] = ['[0:0] -A FORWARD -j iptables-top-rule'] current_lines[27:27] = ['[0:0] -A FORWARD -j iptables-bottom-rule'] self.flags(iptables_top_regex='-j iptables-top-rule') self.flags(iptables_bottom_regex='-j iptables-bottom-rule') new_lines = self.manager._modify_rules(current_lines, self.manager.ipv4['filter'], 'filter') self.assertEqual(current_lines, new_lines) nova-2014.1/nova/tests/test_service.py0000664000175400017540000002772512323721477021105 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Unit Tests for remote procedure calls using queue """ import sys import testtools import mock import mox from oslo.config import cfg from nova import context from nova import db from nova import exception from nova import manager from nova import rpc from nova import service from nova import test from nova.tests import utils from nova import wsgi from nova.openstack.common import service as _service test_service_opts = [ cfg.StrOpt("fake_manager", default="nova.tests.test_service.FakeManager", help="Manager for testing"), cfg.StrOpt("test_service_listen", default='127.0.0.1', help="Host to bind test service to"), cfg.IntOpt("test_service_listen_port", default=0, help="Port number to bind test service to"), ] CONF = cfg.CONF CONF.register_opts(test_service_opts) class FakeManager(manager.Manager): """Fake manager for tests.""" def test_method(self): return 'manager' class ExtendedService(service.Service): def test_method(self): return 'service' class ServiceManagerTestCase(test.TestCase): """Test cases for Services.""" def test_message_gets_to_manager(self): serv = service.Service('test', 'test', 'test', 'nova.tests.test_service.FakeManager') serv.start() self.assertEqual(serv.test_method(), 'manager') def test_override_manager_method(self): serv = ExtendedService('test', 'test', 'test', 'nova.tests.test_service.FakeManager') serv.start() self.assertEqual(serv.test_method(), 'service') def test_service_with_min_down_time(self): CONF.set_override('service_down_time', 10) CONF.set_override('report_interval', 10) serv = service.Service('test', 'test', 'test', 'nova.tests.test_service.FakeManager') serv.start() self.assertEqual(CONF.service_down_time, 25) class ServiceFlagsTestCase(test.TestCase): def test_service_enabled_on_create_based_on_flag(self): self.flags(enable_new_services=True) host = 'foo' binary = 'nova-fake' app = service.Service.create(host=host, binary=binary) app.start() app.stop() ref = db.service_get(context.get_admin_context(), app.service_id) db.service_destroy(context.get_admin_context(), app.service_id) self.assertTrue(not ref['disabled']) def test_service_disabled_on_create_based_on_flag(self): self.flags(enable_new_services=False) host = 'foo' binary = 'nova-fake' app = service.Service.create(host=host, binary=binary) app.start() app.stop() ref = db.service_get(context.get_admin_context(), app.service_id) db.service_destroy(context.get_admin_context(), app.service_id) self.assertTrue(ref['disabled']) class ServiceTestCase(test.TestCase): """Test cases for Services.""" def setUp(self): super(ServiceTestCase, self).setUp() self.host = 'foo' self.binary = 'nova-fake' self.topic = 'fake' self.mox.StubOutWithMock(db, 'service_create') self.mox.StubOutWithMock(db, 'service_get_by_args') self.flags(use_local=True, group='conductor') def test_create(self): # NOTE(vish): Create was moved out of mox replay to make sure that # the looping calls are created in StartService. app = service.Service.create(host=self.host, binary=self.binary, topic=self.topic) self.assertTrue(app) def _service_start_mocks(self): service_create = {'host': self.host, 'binary': self.binary, 'topic': self.topic, 'report_count': 0} service_ref = {'host': self.host, 'binary': self.binary, 'topic': self.topic, 'report_count': 0, 'id': 1} db.service_get_by_args(mox.IgnoreArg(), self.host, self.binary).AndRaise(exception.NotFound()) db.service_create(mox.IgnoreArg(), service_create).AndReturn(service_ref) return service_ref def test_init_and_start_hooks(self): self.manager_mock = self.mox.CreateMock(FakeManager) self.mox.StubOutWithMock(sys.modules[__name__], 'FakeManager', use_mock_anything=True) self.mox.StubOutWithMock(self.manager_mock, 'init_host') self.mox.StubOutWithMock(self.manager_mock, 'pre_start_hook') self.mox.StubOutWithMock(self.manager_mock, 'post_start_hook') FakeManager(host=self.host).AndReturn(self.manager_mock) self.manager_mock.service_name = self.topic self.manager_mock.additional_endpoints = [] # init_host is called before any service record is created self.manager_mock.init_host() 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() # post_start_hook is called after RPC consumer is created. self.manager_mock.post_start_hook() self.mox.ReplayAll() serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager') serv.start() def test_service_check_create_race(self): self.manager_mock = self.mox.CreateMock(FakeManager) self.mox.StubOutWithMock(sys.modules[__name__], 'FakeManager', use_mock_anything=True) self.mox.StubOutWithMock(self.manager_mock, 'init_host') self.mox.StubOutWithMock(self.manager_mock, 'pre_start_hook') self.mox.StubOutWithMock(self.manager_mock, 'post_start_hook') FakeManager(host=self.host).AndReturn(self.manager_mock) # init_host is called before any service record is created self.manager_mock.init_host() db.service_get_by_args(mox.IgnoreArg(), self.host, self.binary ).AndRaise(exception.NotFound) ex = exception.ServiceTopicExists(host='foo', topic='bar') db.service_create(mox.IgnoreArg(), mox.IgnoreArg() ).AndRaise(ex) class TestException(Exception): pass db.service_get_by_args(mox.IgnoreArg(), self.host, self.binary ).AndRaise(TestException) self.mox.ReplayAll() serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager') self.assertRaises(TestException, serv.start) def test_parent_graceful_shutdown(self): self.manager_mock = self.mox.CreateMock(FakeManager) self.mox.StubOutWithMock(sys.modules[__name__], 'FakeManager', use_mock_anything=True) self.mox.StubOutWithMock(self.manager_mock, 'init_host') self.mox.StubOutWithMock(self.manager_mock, 'pre_start_hook') self.mox.StubOutWithMock(self.manager_mock, 'post_start_hook') self.mox.StubOutWithMock(_service.Service, 'stop') FakeManager(host=self.host).AndReturn(self.manager_mock) self.manager_mock.service_name = self.topic self.manager_mock.additional_endpoints = [] # init_host is called before any service record is created self.manager_mock.init_host() 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() # post_start_hook is called after RPC consumer is created. self.manager_mock.post_start_hook() _service.Service.stop() self.mox.ReplayAll() serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager') serv.start() serv.stop() @mock.patch('nova.servicegroup.API') @mock.patch('nova.conductor.api.LocalAPI.service_get_by_args') def test_parent_graceful_shutdown_with_cleanup_host(self, mock_svc_get_by_args, mock_API): mock_svc_get_by_args.return_value = {'id': 'some_value'} mock_manager = mock.Mock() serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager') serv.manager = mock_manager serv.manager.additional_endpoints = [] serv.start() serv.manager.init_host.assert_called_with() serv.stop() serv.manager.cleanup_host.assert_called_with() @mock.patch('nova.servicegroup.API') @mock.patch('nova.conductor.api.LocalAPI.service_get_by_args') @mock.patch.object(rpc, 'get_server') def test_service_stop_waits_for_rpcserver( self, mock_rpc, mock_svc_get_by_args, mock_API): mock_svc_get_by_args.return_value = {'id': 'some_value'} serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager') serv.start() serv.stop() serv.rpcserver.start.assert_called_once_with() serv.rpcserver.stop.assert_called_once_with() serv.rpcserver.wait.assert_called_once_with() class TestWSGIService(test.TestCase): def setUp(self): super(TestWSGIService, self).setUp() self.stubs.Set(wsgi.Loader, "load_app", mox.MockAnything()) def test_service_random_port(self): test_service = service.WSGIService("test_service") test_service.start() self.assertNotEqual(0, test_service.port) test_service.stop() def test_service_start_with_illegal_workers(self): CONF.set_override("osapi_compute_workers", -1) self.assertRaises(exception.InvalidInput, service.WSGIService, "osapi_compute") @testtools.skipIf(not utils.is_ipv6_supported(), "no ipv6 support") def test_service_random_port_with_ipv6(self): CONF.set_default("test_service_listen", "::1") test_service = service.WSGIService("test_service") test_service.start() self.assertEqual("::1", test_service.host) self.assertNotEqual(0, test_service.port) test_service.stop() class TestLauncher(test.TestCase): def setUp(self): super(TestLauncher, self).setUp() self.stubs.Set(wsgi.Loader, "load_app", mox.MockAnything()) self.service = service.WSGIService("test_service") def test_launch_app(self): service.serve(self.service) self.assertNotEqual(0, self.service.port) service._launcher.stop() nova-2014.1/nova/tests/README.rst0000664000175400017540000000535512323721477017516 0ustar jenkinsjenkins00000000000000===================================== OpenStack Nova Testing Infrastructure ===================================== This README file attempts to provide current and prospective contributors with everything they need to know in order to start creating unit tests for nova. Note: the content for the rest of this file will be added as the work items in the following blueprint are completed: https://blueprints.launchpad.net/nova/+spec/consolidate-testing-infrastructure Test Types: Unit vs. Functional vs. Integration ----------------------------------------------- TBD Writing Unit Tests ------------------ TBD Using Fakes ~~~~~~~~~~~ TBD test.TestCase ------------- The TestCase class from nova.test (generally imported as test) will automatically manage self.stubs using the stubout module and self.mox using the mox module during the setUp step. They will automatically verify and clean up during the tearDown step. If using test.TestCase, calling the super class setUp is required and calling the super class tearDown is required to be last if tearDown is overriden. Writing Functional Tests ------------------------ TBD Writing Integration Tests ------------------------- TBD Tests and Exceptions -------------------- A properly written test asserts that particular behavior occurs. This can be a success condition or a failure condition, including an exception. When asserting that a particular exception is raised, the most specific exception possible should be used. In particular, testing for Exception being raised is almost always a mistake since it will match (almost) every exception, even those unrelated to the exception intended to be tested. This applies to catching exceptions manually with a try/except block, or using assertRaises(). Example:: self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, elevated, instance_uuid) If a stubbed function/method needs a generic exception for testing purposes, test.TestingException is available. Example:: def stubbed_method(self): raise test.TestingException() self.stubs.Set(cls, 'inner_method', stubbed_method) obj = cls() self.assertRaises(test.TestingException, obj.outer_method) Stubbing and Mocking -------------------- Whenever possible, tests SHOULD NOT stub and mock out the same function. If it's unavoidable, tests SHOULD define stubs before mocks since the `TestCase` cleanup routine will un-mock before un-stubbing. Doing otherwise results in a test that leaks stubbed functions, causing hard-to-debug interference between tests [1]_. If a mock must take place before a stub, any stubs after the mock call MUST be manually unset using `self.cleanUp` calls within the test. .. [1] https://bugs.launchpad.net/nova/+bug/1180671 nova-2014.1/nova/tests/fake_hosts.py0000664000175400017540000000244212323721477020521 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Provides some fake hosts to test host and service related functions """ from nova.tests.objects import test_service HOST_LIST = [ {"host_name": "host_c1", "service": "compute", "zone": "nova"}, {"host_name": "host_c2", "service": "compute", "zone": "nova"}] OS_API_HOST_LIST = {"hosts": HOST_LIST} HOST_LIST_NOVA_ZONE = [ {"host_name": "host_c1", "service": "compute", "zone": "nova"}, {"host_name": "host_c2", "service": "compute", "zone": "nova"}] service_base = test_service.fake_service SERVICES_LIST = [ dict(service_base, host='host_c1', topic='compute'), dict(service_base, host='host_c2', topic='compute')] nova-2014.1/nova/tests/utils.py0000664000175400017540000001504212323721477017533 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import errno import platform import socket import sys from oslo.config import cfg from nova.compute import flavors import nova.context import nova.db from nova import exception from nova.image import glance from nova.network import minidns from nova.network import model as network_model from nova.objects import instance as instance_obj CONF = cfg.CONF CONF.import_opt('use_ipv6', 'nova.netconf') def get_test_admin_context(): return nova.context.get_admin_context() def get_test_image_info(context, instance_ref): if not context: context = get_test_admin_context() image_ref = instance_ref['image_ref'] image_service, image_id = glance.get_remote_image_service(context, image_ref) return image_service.show(context, image_id) def get_test_flavor(context=None, options=None): options = options or {} if not context: context = get_test_admin_context() test_flavor = {'name': 'kinda.big', 'flavorid': 'someid', 'memory_mb': 2048, 'vcpus': 4, 'root_gb': 40, 'ephemeral_gb': 80, 'swap': 1024} test_flavor.update(options) try: flavor_ref = nova.db.flavor_create(context, test_flavor) except (exception.FlavorExists, exception.FlavorIdExists): flavor_ref = nova.db.flavor_get_by_name(context, 'kinda.big') return flavor_ref def get_test_instance(context=None, flavor=None, obj=False): if not context: context = get_test_admin_context() if not flavor: flavor = get_test_flavor(context) metadata = {} flavors.save_flavor_info(metadata, flavor, '') test_instance = {'memory_kb': '2048000', 'basepath': '/some/path', 'bridge_name': 'br100', 'vcpus': 4, 'root_gb': 40, 'project_id': 'fake', 'bridge': 'br101', 'image_ref': 'cedef40a-ed67-4d10-800e-17455edce175', 'instance_type_id': '5', 'system_metadata': metadata, 'extra_specs': {}, 'user_id': context.user_id, 'project_id': context.project_id, } if obj: instance = instance_obj.Instance(context, **test_instance) instance.create() else: instance = nova.db.instance_create(context, test_instance) return instance def get_test_network_info(count=1): ipv6 = CONF.use_ipv6 fake = 'fake' fake_ip = '0.0.0.0' fake_netmask = '255.255.255.255' fake_vlan = 100 fake_bridge_interface = 'eth0' def current(): subnet_4 = network_model.Subnet(cidr=fake_ip, dns=[network_model.IP(fake_ip), network_model.IP(fake_ip)], gateway=network_model.IP(fake_ip), ips=[network_model.IP(fake_ip), network_model.IP(fake_ip)], routes=None, dhcp_server=fake_ip) subnet_6 = network_model.Subnet(cidr=fake_ip, gateway=network_model.IP(fake_ip), ips=[network_model.IP(fake_ip), network_model.IP(fake_ip), network_model.IP(fake_ip)], routes=None, version=6) subnets = [subnet_4] if ipv6: subnets.append(subnet_6) network = network_model.Network(id=None, bridge=fake, label=None, subnets=subnets, vlan=fake_vlan, bridge_interface=fake_bridge_interface, injected=False) vif = network_model.VIF(id='vif-xxx-yyy-zzz', address=fake, network=network, type=network_model.VIF_TYPE_BRIDGE, devname=None, ovs_interfaceid=None) return vif return network_model.NetworkInfo([current() for x in xrange(0, count)]) def is_osx(): return platform.mac_ver()[0] != '' test_dns_managers = [] def dns_manager(): global test_dns_managers manager = minidns.MiniDNS() test_dns_managers.append(manager) return manager def cleanup_dns_managers(): global test_dns_managers for manager in test_dns_managers: manager.delete_dns_file() test_dns_managers = [] def killer_xml_body(): return ((""" ]> %(d)s """) % { 'a': 'A' * 10, 'b': '&a;' * 10, 'c': '&b;' * 10, 'd': '&c;' * 9999, }).strip() def is_ipv6_supported(): has_ipv6_support = socket.has_ipv6 try: s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) s.close() except socket.error as e: if e.errno == errno.EAFNOSUPPORT: has_ipv6_support = False else: raise # check if there is at least one interface with ipv6 if has_ipv6_support and sys.platform.startswith('linux'): try: with open('/proc/net/if_inet6') as f: if not f.read(): has_ipv6_support = False except IOError: has_ipv6_support = False return has_ipv6_support nova-2014.1/nova/tests/fake_block_device.py0000664000175400017540000000271412323721477021774 0ustar jenkinsjenkins00000000000000# Copyright 2013 Red Hat Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from nova import block_device from nova.openstack.common import timeutils class FakeDbBlockDeviceDict(block_device.BlockDeviceDict): """Defaults db fields - useful for mocking database calls.""" def __init__(self, bdm_dict=None, **kwargs): bdm_dict = bdm_dict or {} db_id = bdm_dict.pop('id', 1) instance_uuid = bdm_dict.pop('instance_uuid', str(uuid.uuid4())) super(FakeDbBlockDeviceDict, self).__init__(bdm_dict=bdm_dict, **kwargs) fake_db_fields = {'id': db_id, 'instance_uuid': instance_uuid, 'created_at': timeutils.utcnow(), 'updated_at': timeutils.utcnow(), 'deleted_at': None, 'deleted': 0} self.update(fake_db_fields) nova-2014.1/nova/tests/test_metadata.py0000664000175400017540000007576312323721510021216 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for metadata service.""" import base64 import hashlib import hmac import json import re try: import cPickle as pickle except ImportError: import pickle import mox from oslo.config import cfg import webob from nova.api.metadata import base from nova.api.metadata import handler from nova.api.metadata import password from nova import block_device from nova.compute import flavors from nova.conductor import api as conductor_api from nova import context from nova import db from nova.db.sqlalchemy import api from nova import exception from nova.network import api as network_api from nova.objects import instance as instance_obj from nova import test from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests import fake_network from nova.tests.objects import test_security_group from nova.virt import netutils CONF = cfg.CONF USER_DATA_STRING = ("This is an encoded string") ENCODE_USER_DATA_STRING = base64.b64encode(USER_DATA_STRING) INSTANCE = fake_instance.fake_db_instance(** {'id': 1, 'uuid': 'b65cee2f-8c69-4aeb-be2f-f79742548fc2', 'name': 'fake', 'project_id': 'test', 'key_name': "mykey", 'key_data': "ssh-rsa AAAAB3Nzai....N3NtHw== someuser@somehost", 'host': 'test', 'launch_index': 1, 'instance_type': {'name': 'm1.tiny'}, 'reservation_id': 'r-xxxxxxxx', 'user_data': ENCODE_USER_DATA_STRING, 'image_ref': 7, 'vcpus': 1, 'fixed_ips': [], 'root_device_name': '/dev/sda1', 'info_cache': {'network_info': []}, 'hostname': 'test.novadomain', 'display_name': 'my_displayname', 'metadata': {}, 'system_metadata': {}, }) def fake_inst_obj(context): return instance_obj.Instance._from_db_object( context, instance_obj.Instance(), INSTANCE, expected_attrs=['metadata', 'system_metadata']) def get_default_sys_meta(): return flavors.save_flavor_info( {}, flavors.get_default_flavor()) def return_non_existing_address(*args, **kwarg): raise exception.NotFound() def fake_InstanceMetadata(stubs, inst_data, address=None, sgroups=None, content=[], extra_md={}, vd_driver=None, network_info=None): if sgroups is None: sgroups = [dict(test_security_group.fake_secgroup, name='default')] def sg_get(*args, **kwargs): return sgroups stubs.Set(api, 'security_group_get_by_instance', sg_get) return base.InstanceMetadata(inst_data, address=address, content=content, extra_md=extra_md, vd_driver=vd_driver, network_info=network_info) def fake_request(stubs, mdinst, relpath, address="127.0.0.1", fake_get_metadata=None, headers=None, fake_get_metadata_by_instance_id=None): def get_metadata_by_remote_address(address): return mdinst app = handler.MetadataRequestHandler() if fake_get_metadata is None: fake_get_metadata = get_metadata_by_remote_address if stubs: stubs.Set(app, 'get_metadata_by_remote_address', fake_get_metadata) if fake_get_metadata_by_instance_id: stubs.Set(app, 'get_metadata_by_instance_id', fake_get_metadata_by_instance_id) request = webob.Request.blank(relpath) request.remote_addr = address if headers is not None: request.headers.update(headers) response = request.get_response(app) return response class MetadataTestCase(test.TestCase): def setUp(self): super(MetadataTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.instance = fake_inst_obj(self.context) self.instance.system_metadata = get_default_sys_meta() self.flags(use_local=True, group='conductor') fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) def test_can_pickle_metadata(self): # Make sure that InstanceMetadata is possible to pickle. This is # required for memcache backend to work correctly. md = fake_InstanceMetadata(self.stubs, self.instance.obj_clone()) pickle.dumps(md, protocol=0) def test_user_data(self): inst = self.instance.obj_clone() inst['user_data'] = base64.b64encode("happy") md = fake_InstanceMetadata(self.stubs, inst) self.assertEqual( md.get_ec2_metadata(version='2009-04-04')['user-data'], "happy") def test_no_user_data(self): inst = self.instance.obj_clone() inst.user_data = None md = fake_InstanceMetadata(self.stubs, inst) obj = object() self.assertEqual( md.get_ec2_metadata(version='2009-04-04').get('user-data', obj), obj) def test_security_groups(self): inst = self.instance.obj_clone() sgroups = [dict(test_security_group.fake_secgroup, name='default'), dict(test_security_group.fake_secgroup, name='other')] expected = ['default', 'other'] md = fake_InstanceMetadata(self.stubs, inst, sgroups=sgroups) data = md.get_ec2_metadata(version='2009-04-04') self.assertEqual(data['meta-data']['security-groups'], expected) def test_local_hostname_fqdn(self): md = fake_InstanceMetadata(self.stubs, self.instance.obj_clone()) data = md.get_ec2_metadata(version='2009-04-04') self.assertEqual(data['meta-data']['local-hostname'], "%s.%s" % (self.instance['hostname'], CONF.dhcp_domain)) def test_format_instance_mapping(self): # Make sure that _format_instance_mappings works. ctxt = None instance_ref0 = instance_obj.Instance(**{'id': 0, 'uuid': 'e5fe5518-0288-4fa3-b0c4-c79764101b85', 'root_device_name': None, 'default_ephemeral_device': None, 'default_swap_device': None}) instance_ref1 = instance_obj.Instance(**{'id': 0, 'uuid': 'b65cee2f-8c69-4aeb-be2f-f79742548fc2', 'root_device_name': '/dev/sda1', 'default_ephemeral_device': None, 'default_swap_device': None}) def fake_bdm_get(ctxt, uuid, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': 87654321, 'snapshot_id': None, 'no_device': None, 'source_type': 'volume', 'destination_type': 'volume', 'delete_on_termination': True, 'device_name': '/dev/sdh'}), fake_block_device.FakeDbBlockDeviceDict( {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': 'swap', 'delete_on_termination': None, 'device_name': '/dev/sdc'}), fake_block_device.FakeDbBlockDeviceDict( {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': None, 'delete_on_termination': None, 'device_name': '/dev/sdb'})] self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_bdm_get) expected = {'ami': 'sda1', 'root': '/dev/sda1', 'ephemeral0': '/dev/sdb', 'swap': '/dev/sdc', 'ebs0': '/dev/sdh'} capi = conductor_api.LocalAPI() self.assertEqual(base._format_instance_mapping(ctxt, instance_ref0), block_device._DEFAULT_MAPPINGS) self.assertEqual(base._format_instance_mapping(ctxt, instance_ref1), expected) def test_pubkey(self): md = fake_InstanceMetadata(self.stubs, self.instance.obj_clone()) pubkey_ent = md.lookup("/2009-04-04/meta-data/public-keys") self.assertEqual(base.ec2_md_print(pubkey_ent), "0=%s" % self.instance['key_name']) self.assertEqual(base.ec2_md_print(pubkey_ent['0']['openssh-key']), self.instance['key_data']) def test_image_type_ramdisk(self): inst = self.instance.obj_clone() inst['ramdisk_id'] = 'ari-853667c0' md = fake_InstanceMetadata(self.stubs, inst) data = md.lookup("/latest/meta-data/ramdisk-id") self.assertIsNotNone(data) self.assertTrue(re.match('ari-[0-9a-f]{8}', data)) def test_image_type_kernel(self): inst = self.instance.obj_clone() inst['kernel_id'] = 'aki-c2e26ff2' md = fake_InstanceMetadata(self.stubs, inst) data = md.lookup("/2009-04-04/meta-data/kernel-id") self.assertTrue(re.match('aki-[0-9a-f]{8}', data)) self.assertEqual( md.lookup("/ec2/2009-04-04/meta-data/kernel-id"), data) inst.kernel_id = None md = fake_InstanceMetadata(self.stubs, inst) self.assertRaises(base.InvalidMetadataPath, md.lookup, "/2009-04-04/meta-data/kernel-id") def test_check_version(self): inst = self.instance.obj_clone() md = fake_InstanceMetadata(self.stubs, inst) self.assertTrue(md._check_version('1.0', '2009-04-04')) self.assertFalse(md._check_version('2009-04-04', '1.0')) self.assertFalse(md._check_version('2009-04-04', '2008-09-01')) self.assertTrue(md._check_version('2008-09-01', '2009-04-04')) self.assertTrue(md._check_version('2009-04-04', '2009-04-04')) def test_InstanceMetadata_uses_passed_network_info(self): network_info = [] self.mox.StubOutWithMock(netutils, "get_injected_network_template") netutils.get_injected_network_template(network_info).AndReturn(False) self.mox.ReplayAll() base.InstanceMetadata(fake_inst_obj(self.context), network_info=network_info) def test_InstanceMetadata_invoke_metadata_for_config_drive(self): inst = self.instance.obj_clone() inst_md = base.InstanceMetadata(inst) for (path, value) in inst_md.metadata_for_config_drive(): self.assertIsNotNone(path) def test_InstanceMetadata_queries_network_API_when_needed(self): network_info_from_api = [] self.mox.StubOutWithMock(network_api.API, "get_instance_nw_info") network_api.API.get_instance_nw_info( mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(network_info_from_api) self.mox.StubOutWithMock(netutils, "get_injected_network_template") netutils.get_injected_network_template( network_info_from_api).AndReturn(False) self.mox.ReplayAll() base.InstanceMetadata(fake_inst_obj(self.context)) def test_local_ipv4_from_nw_info(self): nw_info = fake_network.fake_get_instance_nw_info(self.stubs, num_networks=2) expected_local = "192.168.1.100" md = fake_InstanceMetadata(self.stubs, self.instance, network_info=nw_info) data = md.get_ec2_metadata(version='2009-04-04') self.assertEqual(data['meta-data']['local-ipv4'], expected_local) def test_local_ipv4_from_address(self): nw_info = fake_network.fake_get_instance_nw_info(self.stubs, num_networks=2) expected_local = "fake" md = fake_InstanceMetadata(self.stubs, self.instance, network_info=nw_info, address="fake") data = md.get_ec2_metadata(version='2009-04-04') self.assertEqual(data['meta-data']['local-ipv4'], expected_local) def test_local_ipv4_from_nw_none(self): md = fake_InstanceMetadata(self.stubs, self.instance, network_info=[]) data = md.get_ec2_metadata(version='2009-04-04') self.assertEqual(data['meta-data']['local-ipv4'], '') class OpenStackMetadataTestCase(test.TestCase): def setUp(self): super(OpenStackMetadataTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.instance = fake_inst_obj(self.context) self.instance['system_metadata'] = get_default_sys_meta() self.flags(use_local=True, group='conductor') fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) def test_with_primitive_instance(self): mdinst = fake_InstanceMetadata(self.stubs, INSTANCE) result = mdinst.lookup('/openstack') self.assertIn('latest', result) def test_top_level_listing(self): # request for /openstack// should show metadata.json inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) result = mdinst.lookup("/openstack") # trailing / should not affect anything self.assertEqual(result, mdinst.lookup("/openstack/")) # the 'content' should not show up in directory listing self.assertNotIn(base.CONTENT_DIR, result) self.assertIn('2012-08-10', result) self.assertIn('latest', result) def test_version_content_listing(self): # request for /openstack// should show metadata.json inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) listing = mdinst.lookup("/openstack/2012-08-10") self.assertIn("meta_data.json", listing) def test_returns_apis_supported_in_havana_version(self): mdinst = fake_InstanceMetadata(self.stubs, self.instance) havana_supported_apis = mdinst.lookup("/openstack/2013-10-17") self.assertEqual([base.MD_JSON_NAME, base.UD_NAME, base.PASS_NAME, base.VD_JSON_NAME], havana_supported_apis) def test_returns_apis_supported_in_folsom_version(self): mdinst = fake_InstanceMetadata(self.stubs, self.instance) folsom_supported_apis = mdinst.lookup("/openstack/2012-08-10") self.assertEqual([base.MD_JSON_NAME, base.UD_NAME], folsom_supported_apis) def test_returns_apis_supported_in_grizzly_version(self): mdinst = fake_InstanceMetadata(self.stubs, self.instance) grizzly_supported_apis = mdinst.lookup("/openstack/2013-04-04") self.assertEqual([base.MD_JSON_NAME, base.UD_NAME, base.PASS_NAME], grizzly_supported_apis) def test_metadata_json(self): inst = self.instance.obj_clone() content = [ ('/etc/my.conf', "content of my.conf"), ('/root/hello', "content of /root/hello"), ] mdinst = fake_InstanceMetadata(self.stubs, inst, content=content) mdjson = mdinst.lookup("/openstack/2012-08-10/meta_data.json") mdjson = mdinst.lookup("/openstack/latest/meta_data.json") mddict = json.loads(mdjson) self.assertEqual(mddict['uuid'], self.instance['uuid']) self.assertIn('files', mddict) self.assertIn('public_keys', mddict) self.assertEqual(mddict['public_keys'][self.instance['key_name']], self.instance['key_data']) self.assertIn('launch_index', mddict) self.assertEqual(mddict['launch_index'], self.instance['launch_index']) # verify that each of the things we put in content # resulted in an entry in 'files', that their content # there is as expected, and that /content lists them. for (path, content) in content: fent = [f for f in mddict['files'] if f['path'] == path] self.assertTrue((len(fent) == 1)) fent = fent[0] found = mdinst.lookup("/openstack%s" % fent['content_path']) self.assertEqual(found, content) def test_extra_md(self): # make sure extra_md makes it through to metadata inst = self.instance.obj_clone() extra = {'foo': 'bar', 'mylist': [1, 2, 3], 'mydict': {"one": 1, "two": 2}} mdinst = fake_InstanceMetadata(self.stubs, inst, extra_md=extra) mdjson = mdinst.lookup("/openstack/2012-08-10/meta_data.json") mddict = json.loads(mdjson) for key, val in extra.iteritems(): self.assertEqual(mddict[key], val) def test_password(self): # make sure extra_md makes it through to metadata inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) result = mdinst.lookup("/openstack/latest/password") self.assertEqual(result, password.handle_password) def test_userdata(self): inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) userdata_found = mdinst.lookup("/openstack/2012-08-10/user_data") self.assertEqual(USER_DATA_STRING, userdata_found) # since we had user-data in this instance, it should be in listing self.assertIn('user_data', mdinst.lookup("/openstack/2012-08-10")) inst.user_data = None mdinst = fake_InstanceMetadata(self.stubs, inst) # since this instance had no user-data it should not be there. self.assertNotIn('user_data', mdinst.lookup("/openstack/2012-08-10")) self.assertRaises(base.InvalidMetadataPath, mdinst.lookup, "/openstack/2012-08-10/user_data") def test_random_seed(self): inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) # verify that 2013-04-04 has the 'random' field mdjson = mdinst.lookup("/openstack/2013-04-04/meta_data.json") mddict = json.loads(mdjson) self.assertIn("random_seed", mddict) self.assertEqual(len(base64.b64decode(mddict["random_seed"])), 512) # verify that older version do not have it mdjson = mdinst.lookup("/openstack/2012-08-10/meta_data.json") self.assertNotIn("random_seed", json.loads(mdjson)) def test_no_dashes_in_metadata(self): # top level entries in meta_data should not contain '-' in their name inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) mdjson = json.loads(mdinst.lookup("/openstack/latest/meta_data.json")) self.assertEqual([], [k for k in mdjson.keys() if k.find("-") != -1]) def test_vendor_data_presense(self): inst = self.instance.obj_clone() mdinst = fake_InstanceMetadata(self.stubs, inst) # verify that 2013-10-17 has the vendor_data.json file result = mdinst.lookup("/openstack/2013-10-17") self.assertIn('vendor_data.json', result) # verify that older version do not have it result = mdinst.lookup("/openstack/2013-04-04") self.assertNotIn('vendor_data.json', result) def test_vendor_data_response(self): inst = self.instance.obj_clone() mydata = {'mykey1': 'value1', 'mykey2': 'value2'} class myVdriver(base.VendorDataDriver): def __init__(self, *args, **kwargs): super(myVdriver, self).__init__(*args, **kwargs) data = mydata.copy() uuid = kwargs['instance']['uuid'] data.update({'inst_uuid': uuid}) self.data = data def get(self): return self.data mdinst = fake_InstanceMetadata(self.stubs, inst, vd_driver=myVdriver) # verify that 2013-10-17 has the vendor_data.json file vdpath = "/openstack/2013-10-17/vendor_data.json" vd = json.loads(mdinst.lookup(vdpath)) # the instance should be passed through, and our class copies the # uuid through to 'inst_uuid'. self.assertEqual(vd['inst_uuid'], inst['uuid']) # check the other expected values for k, v in mydata.items(): self.assertEqual(vd[k], v) class MetadataHandlerTestCase(test.TestCase): """Test that metadata is returning proper values.""" def setUp(self): super(MetadataHandlerTestCase, self).setUp() fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) self.context = context.RequestContext('fake', 'fake') self.instance = fake_inst_obj(self.context) self.instance.system_metadata = get_default_sys_meta() self.flags(use_local=True, group='conductor') self.mdinst = fake_InstanceMetadata(self.stubs, self.instance, address=None, sgroups=None) def test_callable(self): def verify(req, meta_data): self.assertIsInstance(meta_data, CallableMD) return "foo" class CallableMD(object): def lookup(self, path_info): return verify response = fake_request(self.stubs, CallableMD(), "/bar") self.assertEqual(response.status_int, 200) self.assertEqual(response.body, "foo") def test_root(self): expected = "\n".join(base.VERSIONS) + "\nlatest" response = fake_request(self.stubs, self.mdinst, "/") self.assertEqual(response.body, expected) response = fake_request(self.stubs, self.mdinst, "/foo/../") self.assertEqual(response.body, expected) def test_root_metadata_proxy_enabled(self): CONF.set_override("service_neutron_metadata_proxy", True) expected = "\n".join(base.VERSIONS) + "\nlatest" response = fake_request(self.stubs, self.mdinst, "/") self.assertEqual(response.body, expected) response = fake_request(self.stubs, self.mdinst, "/foo/../") self.assertEqual(response.body, expected) def test_version_root(self): response = fake_request(self.stubs, self.mdinst, "/2009-04-04") self.assertEqual(response.body, 'meta-data/\nuser-data') response = fake_request(self.stubs, self.mdinst, "/9999-99-99") self.assertEqual(response.status_int, 404) def test_user_data_non_existing_fixed_address(self): self.stubs.Set(network_api.API, 'get_fixed_ip_by_address', return_non_existing_address) response = fake_request(None, self.mdinst, "/2009-04-04/user-data", "127.1.1.1") self.assertEqual(response.status_int, 404) def test_fixed_address_none(self): response = fake_request(None, self.mdinst, relpath="/2009-04-04/user-data", address=None) self.assertEqual(response.status_int, 500) def test_invalid_path_is_404(self): response = fake_request(self.stubs, self.mdinst, relpath="/2009-04-04/user-data-invalid") self.assertEqual(response.status_int, 404) def test_user_data_with_use_forwarded_header(self): expected_addr = "192.192.192.2" def fake_get_metadata(address): if address == expected_addr: return self.mdinst else: raise Exception("Expected addr of %s, got %s" % (expected_addr, address)) self.flags(use_forwarded_for=True) response = fake_request(self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="168.168.168.1", fake_get_metadata=fake_get_metadata, headers={'X-Forwarded-For': expected_addr}) self.assertEqual(response.status_int, 200) self.assertEqual(response.body, base64.b64decode(self.instance['user_data'])) response = fake_request(self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="168.168.168.1", fake_get_metadata=fake_get_metadata, headers=None) self.assertEqual(response.status_int, 500) def test_user_data_with_neutron_instance_id(self): expected_instance_id = 'a-b-c-d' def fake_get_metadata(instance_id, remote_address): if remote_address is None: raise Exception('Expected X-Forwared-For header') elif instance_id == expected_instance_id: return self.mdinst else: # raise the exception to aid with 500 response code test raise Exception("Expected instance_id of %s, got %s" % (expected_instance_id, instance_id)) signed = hmac.new( CONF.neutron_metadata_proxy_shared_secret, expected_instance_id, hashlib.sha256).hexdigest() # try a request with service disabled response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", headers={'X-Instance-ID': 'a-b-c-d', 'X-Tenant-ID': 'test', 'X-Instance-ID-Signature': signed}) self.assertEqual(response.status_int, 200) # now enable the service self.flags(service_neutron_metadata_proxy=True) response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", fake_get_metadata_by_instance_id=fake_get_metadata, headers={'X-Forwarded-For': '192.192.192.2', 'X-Instance-ID': 'a-b-c-d', 'X-Tenant-ID': 'test', 'X-Instance-ID-Signature': signed}) self.assertEqual(response.status_int, 200) self.assertEqual(response.body, base64.b64decode(self.instance['user_data'])) # mismatched signature response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", fake_get_metadata_by_instance_id=fake_get_metadata, headers={'X-Forwarded-For': '192.192.192.2', 'X-Instance-ID': 'a-b-c-d', 'X-Tenant-ID': 'test', 'X-Instance-ID-Signature': ''}) self.assertEqual(response.status_int, 403) # missing X-Tenant-ID from request response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", fake_get_metadata_by_instance_id=fake_get_metadata, headers={'X-Forwarded-For': '192.192.192.2', 'X-Instance-ID': 'a-b-c-d', 'X-Instance-ID-Signature': signed}) self.assertEqual(response.status_int, 400) # mismatched X-Tenant-ID response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", fake_get_metadata_by_instance_id=fake_get_metadata, headers={'X-Forwarded-For': '192.192.192.2', 'X-Instance-ID': 'a-b-c-d', 'X-Tenant-ID': 'FAKE', 'X-Instance-ID-Signature': signed}) self.assertEqual(response.status_int, 404) # without X-Forwarded-For response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", fake_get_metadata_by_instance_id=fake_get_metadata, headers={'X-Instance-ID': 'a-b-c-d', 'X-Tenant-ID': 'test', 'X-Instance-ID-Signature': signed}) self.assertEqual(response.status_int, 500) # unexpected Instance-ID signed = hmac.new( CONF.neutron_metadata_proxy_shared_secret, 'z-z-z-z', hashlib.sha256).hexdigest() response = fake_request( self.stubs, self.mdinst, relpath="/2009-04-04/user-data", address="192.192.192.2", fake_get_metadata_by_instance_id=fake_get_metadata, headers={'X-Forwarded-For': '192.192.192.2', 'X-Instance-ID': 'z-z-z-z', 'X-Tenant-ID': 'test', 'X-Instance-ID-Signature': signed}) self.assertEqual(response.status_int, 500) class MetadataPasswordTestCase(test.TestCase): def setUp(self): super(MetadataPasswordTestCase, self).setUp() fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) self.context = context.RequestContext('fake', 'fake') self.instance = fake_inst_obj(self.context) self.instance.system_metadata = get_default_sys_meta() self.flags(use_local=True, group='conductor') self.mdinst = fake_InstanceMetadata(self.stubs, self.instance, address=None, sgroups=None) self.flags(use_local=True, group='conductor') def test_get_password(self): request = webob.Request.blank('') self.mdinst.password = 'foo' result = password.handle_password(request, self.mdinst) self.assertEqual(result, 'foo') def test_bad_method(self): request = webob.Request.blank('') request.method = 'PUT' self.assertRaises(webob.exc.HTTPBadRequest, password.handle_password, request, self.mdinst) def _try_set_password(self, val='bar'): request = webob.Request.blank('') request.method = 'POST' request.body = val self.stubs.Set(db, 'instance_get_by_uuid', lambda *a, **kw: {'system_metadata': []}) def fake_instance_update(context, uuid, updates): self.assertIn('system_metadata', updates) self.assertIn('password_0', updates['system_metadata']) return self.instance, self.instance self.stubs.Set(db, 'instance_update_and_get_original', fake_instance_update) password.handle_password(request, self.mdinst) def test_set_password(self): self.mdinst.password = '' self._try_set_password() def test_conflict(self): self.mdinst.password = 'foo' self.assertRaises(webob.exc.HTTPConflict, self._try_set_password) def test_too_large(self): self.mdinst.password = '' self.assertRaises(webob.exc.HTTPBadRequest, self._try_set_password, 'a' * (password.MAX_SIZE + 1)) nova-2014.1/nova/tests/test_loadables.py0000664000175400017540000001244712323721477021366 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Loadable class handling. """ from nova import exception from nova import test from nova.tests import fake_loadables class LoadablesTestCase(test.NoDBTestCase): def setUp(self): super(LoadablesTestCase, self).setUp() self.fake_loader = fake_loadables.FakeLoader() # The name that we imported above for testing self.test_package = 'nova.tests.fake_loadables' def test_loader_init(self): self.assertEqual(self.fake_loader.package, self.test_package) # Test the path of the module ending_path = '/' + self.test_package.replace('.', '/') self.assertTrue(self.fake_loader.path.endswith(ending_path)) self.assertEqual(self.fake_loader.loadable_cls_type, fake_loadables.FakeLoadable) def _compare_classes(self, classes, expected): class_names = [cls.__name__ for cls in classes] self.assertEqual(set(class_names), set(expected)) def test_get_all_classes(self): classes = self.fake_loader.get_all_classes() expected_class_names = ['FakeLoadableSubClass1', 'FakeLoadableSubClass2', 'FakeLoadableSubClass5', 'FakeLoadableSubClass6'] self._compare_classes(classes, expected_class_names) def test_get_matching_classes(self): prefix = self.test_package test_classes = [prefix + '.fake_loadable1.FakeLoadableSubClass1', prefix + '.fake_loadable2.FakeLoadableSubClass5'] classes = self.fake_loader.get_matching_classes(test_classes) expected_class_names = ['FakeLoadableSubClass1', 'FakeLoadableSubClass5'] self._compare_classes(classes, expected_class_names) def test_get_matching_classes_with_underscore(self): prefix = self.test_package test_classes = [prefix + '.fake_loadable1.FakeLoadableSubClass1', prefix + '.fake_loadable2._FakeLoadableSubClass7'] self.assertRaises(exception.ClassNotFound, self.fake_loader.get_matching_classes, test_classes) def test_get_matching_classes_with_wrong_type1(self): prefix = self.test_package test_classes = [prefix + '.fake_loadable1.FakeLoadableSubClass4', prefix + '.fake_loadable2.FakeLoadableSubClass5'] self.assertRaises(exception.ClassNotFound, self.fake_loader.get_matching_classes, test_classes) def test_get_matching_classes_with_wrong_type2(self): prefix = self.test_package test_classes = [prefix + '.fake_loadable1.FakeLoadableSubClass1', prefix + '.fake_loadable2.FakeLoadableSubClass8'] self.assertRaises(exception.ClassNotFound, self.fake_loader.get_matching_classes, test_classes) def test_get_matching_classes_with_one_function(self): prefix = self.test_package test_classes = [prefix + '.fake_loadable1.return_valid_classes', prefix + '.fake_loadable2.FakeLoadableSubClass5'] classes = self.fake_loader.get_matching_classes(test_classes) expected_class_names = ['FakeLoadableSubClass1', 'FakeLoadableSubClass2', 'FakeLoadableSubClass5'] self._compare_classes(classes, expected_class_names) def test_get_matching_classes_with_two_functions(self): prefix = self.test_package test_classes = [prefix + '.fake_loadable1.return_valid_classes', prefix + '.fake_loadable2.return_valid_class'] classes = self.fake_loader.get_matching_classes(test_classes) expected_class_names = ['FakeLoadableSubClass1', 'FakeLoadableSubClass2', 'FakeLoadableSubClass6'] self._compare_classes(classes, expected_class_names) def test_get_matching_classes_with_function_including_invalids(self): # When using a method, no checking is done on valid classes. prefix = self.test_package test_classes = [prefix + '.fake_loadable1.return_invalid_classes', prefix + '.fake_loadable2.return_valid_class'] classes = self.fake_loader.get_matching_classes(test_classes) expected_class_names = ['FakeLoadableSubClass1', '_FakeLoadableSubClass3', 'FakeLoadableSubClass4', 'FakeLoadableSubClass6'] self._compare_classes(classes, expected_class_names) nova-2014.1/nova/tests/test_configdrive2.py0000664000175400017540000000614212323721477022014 0ustar jenkinsjenkins00000000000000# Copyright 2012 Michael Still and Canonical Inc # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mox import os import tempfile from nova import test from nova.openstack.common import fileutils from nova import utils from nova.virt import configdrive class ConfigDriveTestCase(test.NoDBTestCase): def test_create_configdrive_iso(self): imagefile = None try: self.mox.StubOutWithMock(utils, 'execute') utils.execute('genisoimage', '-o', mox.IgnoreArg(), '-ldots', '-allow-lowercase', '-allow-multidot', '-l', '-publisher', mox.IgnoreArg(), '-quiet', '-J', '-r', '-V', 'config-2', mox.IgnoreArg(), attempts=1, run_as_root=False).AndReturn(None) self.mox.ReplayAll() with configdrive.ConfigDriveBuilder() as c: c._add_file('this/is/a/path/hello', 'This is some content') (fd, imagefile) = tempfile.mkstemp(prefix='cd_iso_') os.close(fd) c._make_iso9660(imagefile) # Check cleanup self.assertFalse(os.path.exists(c.tempdir)) finally: if imagefile: fileutils.delete_if_exists(imagefile) def test_create_configdrive_vfat(self): imagefile = None try: self.mox.StubOutWithMock(utils, 'mkfs') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(utils, 'trycmd') utils.mkfs('vfat', mox.IgnoreArg(), label='config-2').AndReturn(None) utils.trycmd('mount', '-o', mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), run_as_root=True).AndReturn((None, None)) utils.execute('umount', mox.IgnoreArg(), run_as_root=True).AndReturn(None) self.mox.ReplayAll() with configdrive.ConfigDriveBuilder() as c: c._add_file('this/is/a/path/hello', 'This is some content') (fd, imagefile) = tempfile.mkstemp(prefix='cd_vfat_') os.close(fd) c._make_vfat(imagefile) # Check cleanup self.assertFalse(os.path.exists(c.tempdir)) # NOTE(mikal): we can't check for a VFAT output here because the # filesystem creation stuff has been mocked out because it # requires root permissions finally: if imagefile: fileutils.delete_if_exists(imagefile) nova-2014.1/nova/tests/conf_fixture.py0000664000175400017540000000540412323721510021053 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova import config from nova import ipv6 from nova.openstack.common.fixture import config as config_fixture from nova import paths from nova.tests import utils CONF = cfg.CONF CONF.import_opt('use_ipv6', 'nova.netconf') CONF.import_opt('host', 'nova.netconf') CONF.import_opt('scheduler_driver', 'nova.scheduler.manager') CONF.import_opt('fake_network', 'nova.network.linux_net') CONF.import_opt('network_size', 'nova.network.manager') CONF.import_opt('num_networks', 'nova.network.manager') CONF.import_opt('floating_ip_dns_manager', 'nova.network.floating_ips') CONF.import_opt('instance_dns_manager', 'nova.network.floating_ips') CONF.import_opt('policy_file', 'nova.policy') CONF.import_opt('compute_driver', 'nova.virt.driver') CONF.import_opt('api_paste_config', 'nova.wsgi') class ConfFixture(config_fixture.Config): """Fixture to manage global conf settings.""" def setUp(self): super(ConfFixture, self).setUp() self.conf.set_default('api_paste_config', paths.state_path_def('etc/nova/api-paste.ini')) self.conf.set_default('host', 'fake-mini') self.conf.set_default('compute_driver', 'nova.virt.fake.FakeDriver') self.conf.set_default('fake_network', True) self.conf.set_default('flat_network_bridge', 'br100') self.conf.set_default('floating_ip_dns_manager', 'nova.tests.utils.dns_manager') self.conf.set_default('instance_dns_manager', 'nova.tests.utils.dns_manager') self.conf.set_default('network_size', 8) self.conf.set_default('num_networks', 2) self.conf.set_default('connection', "sqlite://", group='database') self.conf.set_default('sqlite_synchronous', False, group='database') self.conf.set_default('use_ipv6', True) self.conf.set_default('vlan_interface', 'eth0') config.parse_args([], default_config_files=[]) self.addCleanup(utils.cleanup_dns_managers) self.addCleanup(ipv6.api.reset_backend) nova-2014.1/nova/tests/scheduler/0000775000175400017540000000000012323722546017773 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/scheduler/test_filter_scheduler.py0000664000175400017540000005763112323721477024745 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Filter Scheduler. """ import contextlib import mock import uuid import mox from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import api as conductor_api from nova import context from nova import db from nova import exception from nova.objects import instance_group as instance_group_obj from nova.pci import pci_request from nova.scheduler import driver from nova.scheduler import filter_scheduler from nova.scheduler import host_manager from nova.scheduler import utils as scheduler_utils from nova.scheduler import weights from nova.tests import fake_instance from nova.tests.scheduler import fakes from nova.tests.scheduler import test_scheduler def fake_get_filtered_hosts(hosts, filter_properties, index): return list(hosts) def fake_get_group_filtered_hosts(hosts, filter_properties, index): group_hosts = filter_properties.get('group_hosts') or [] if group_hosts: hosts = list(hosts) hosts.pop(0) return hosts else: return list(hosts) def fake_get_group_filtered_affinity_hosts(hosts, filter_properties, index): group_hosts = filter_properties.get('group_hosts') or [] if group_hosts: affinity_host = hosts.pop(0) return [affinity_host] else: return list(hosts) class FilterSchedulerTestCase(test_scheduler.SchedulerTestCase): """Test case for Filter Scheduler.""" driver_cls = filter_scheduler.FilterScheduler def test_run_instance_no_hosts(self): def _fake_empty_call_zone_method(*args, **kwargs): return [] sched = fakes.FakeFilterScheduler() uuid = 'fake-uuid1' fake_context = context.RequestContext('user', 'project') instance_properties = {'project_id': 1, 'os_type': 'Linux'} request_spec = {'instance_type': {'memory_mb': 1, 'root_gb': 1, 'ephemeral_gb': 0}, 'instance_properties': instance_properties, 'instance_uuids': [uuid]} self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') old_ref, new_ref = db.instance_update_and_get_original(fake_context, uuid, {'vm_state': vm_states.ERROR, 'task_state': None}).AndReturn(({}, {})) compute_utils.add_instance_fault_from_exc(fake_context, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() sched.schedule_run_instance( fake_context, request_spec, None, None, None, None, {}, False) def test_run_instance_non_admin(self): self.was_admin = False def fake_get(context, *args, **kwargs): # make sure this is called with admin context, even though # we're using user context below self.was_admin = context.is_admin return {} sched = fakes.FakeFilterScheduler() self.stubs.Set(sched.host_manager, 'get_all_host_states', fake_get) fake_context = context.RequestContext('user', 'project') uuid = 'fake-uuid1' instance_properties = {'project_id': 1, 'os_type': 'Linux'} request_spec = {'instance_type': {'memory_mb': 1, 'local_gb': 1}, 'instance_properties': instance_properties, 'instance_uuids': [uuid]} self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') old_ref, new_ref = db.instance_update_and_get_original(fake_context, uuid, {'vm_state': vm_states.ERROR, 'task_state': None}).AndReturn(({}, {})) compute_utils.add_instance_fault_from_exc(fake_context, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.ReplayAll() sched.schedule_run_instance( fake_context, request_spec, None, None, None, None, {}, False) self.assertTrue(self.was_admin) def test_scheduler_includes_launch_index(self): fake_context = context.RequestContext('user', 'project') instance_opts = {'fake_opt1': 'meow'} request_spec = {'instance_uuids': ['fake-uuid1', 'fake-uuid2'], 'instance_properties': instance_opts} instance1 = {'uuid': 'fake-uuid1'} instance2 = {'uuid': 'fake-uuid2'} def _has_launch_index(expected_index): """Return a function that verifies the expected index.""" def _check_launch_index(value): if 'instance_properties' in value: if 'launch_index' in value['instance_properties']: index = value['instance_properties']['launch_index'] if index == expected_index: return True return False return _check_launch_index self.mox.StubOutWithMock(self.driver, '_schedule') self.mox.StubOutWithMock(self.driver, '_provision_resource') self.driver._schedule(fake_context, request_spec, {}, ['fake-uuid1', 'fake-uuid2']).AndReturn(['host1', 'host2']) # instance 1 self.driver._provision_resource( fake_context, 'host1', mox.Func(_has_launch_index(0)), {}, None, None, None, None, instance_uuid='fake-uuid1', legacy_bdm_in_spec=False).AndReturn(instance1) # instance 2 self.driver._provision_resource( fake_context, 'host2', mox.Func(_has_launch_index(1)), {}, None, None, None, None, instance_uuid='fake-uuid2', legacy_bdm_in_spec=False).AndReturn(instance2) self.mox.ReplayAll() self.driver.schedule_run_instance(fake_context, request_spec, None, None, None, None, {}, False) def test_schedule_happy_day(self): """Make sure there's nothing glaringly wrong with _schedule() by doing a happy day pass through. """ self.next_weight = 1.0 def _fake_weigh_objects(_self, functions, hosts, options): self.next_weight += 2.0 host_state = hosts[0] return [weights.WeighedHost(host_state, self.next_weight)] sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project', is_admin=True) self.stubs.Set(sched.host_manager, 'get_filtered_hosts', fake_get_filtered_hosts) self.stubs.Set(weights.HostWeightHandler, 'get_weighed_objects', _fake_weigh_objects) fakes.mox_host_manager_db_calls(self.mox, fake_context) request_spec = {'num_instances': 10, 'instance_type': {'memory_mb': 512, 'root_gb': 512, 'ephemeral_gb': 0, 'vcpus': 1}, 'instance_properties': {'project_id': 1, 'root_gb': 512, 'memory_mb': 512, 'ephemeral_gb': 0, 'vcpus': 1, 'os_type': 'Linux'}} self.mox.ReplayAll() weighed_hosts = sched._schedule(fake_context, request_spec, {}) self.assertEqual(len(weighed_hosts), 10) for weighed_host in weighed_hosts: self.assertIsNotNone(weighed_host.obj) def test_max_attempts(self): self.flags(scheduler_max_attempts=4) sched = fakes.FakeFilterScheduler() self.assertEqual(4, sched._max_attempts()) def test_invalid_max_attempts(self): self.flags(scheduler_max_attempts=0) sched = fakes.FakeFilterScheduler() self.assertRaises(exception.NovaException, sched._max_attempts) def test_retry_disabled(self): # Retry info should not get populated when re-scheduling is off. self.flags(scheduler_max_attempts=1) sched = fakes.FakeFilterScheduler() instance_properties = {'project_id': '12345', 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties, instance_type={}) filter_properties = {} self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() sched._schedule(self.context, request_spec, filter_properties=filter_properties) # should not have retry info in the populated filter properties: self.assertNotIn("retry", filter_properties) def test_retry_force_hosts(self): # Retry info should not get populated when re-scheduling is off. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() instance_properties = {'project_id': '12345', 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties) filter_properties = dict(force_hosts=['force_host']) self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() sched._schedule(self.context, request_spec, filter_properties=filter_properties) # should not have retry info in the populated filter properties: self.assertNotIn("retry", filter_properties) def test_retry_force_nodes(self): # Retry info should not get populated when re-scheduling is off. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() instance_properties = {'project_id': '12345', 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties) filter_properties = dict(force_nodes=['force_node']) self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() sched._schedule(self.context, request_spec, filter_properties=filter_properties) # should not have retry info in the populated filter properties: self.assertNotIn("retry", filter_properties) def test_retry_attempt_one(self): # Test retry logic on initial scheduling attempt. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() instance_properties = {'project_id': '12345', 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties, instance_type={}) filter_properties = {} self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() sched._schedule(self.context, request_spec, filter_properties=filter_properties) num_attempts = filter_properties['retry']['num_attempts'] self.assertEqual(1, num_attempts) def test_retry_attempt_two(self): # Test retry logic when re-scheduling. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() instance_properties = {'project_id': '12345', 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties, instance_type={}) retry = dict(num_attempts=1) filter_properties = dict(retry=retry) self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() sched._schedule(self.context, request_spec, filter_properties=filter_properties) num_attempts = filter_properties['retry']['num_attempts'] self.assertEqual(2, num_attempts) def test_retry_exceeded_max_attempts(self): # Test for necessary explosion when max retries is exceeded and that # the information needed in request_spec is still present for error # handling self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() instance_properties = {'project_id': '12345', 'os_type': 'Linux'} instance_uuids = ['fake-id'] request_spec = dict(instance_properties=instance_properties, instance_uuids=instance_uuids) retry = dict(num_attempts=2) filter_properties = dict(retry=retry) self.assertRaises(exception.NoValidHost, sched.schedule_run_instance, self.context, request_spec, admin_password=None, injected_files=None, requested_networks=None, is_first_time=False, filter_properties=filter_properties, legacy_bdm_in_spec=False) uuids = request_spec.get('instance_uuids') self.assertEqual(uuids, instance_uuids) def test_add_retry_host(self): retry = dict(num_attempts=1, hosts=[]) filter_properties = dict(retry=retry) host = "fakehost" node = "fakenode" scheduler_utils._add_retry_host(filter_properties, host, node) hosts = filter_properties['retry']['hosts'] self.assertEqual(1, len(hosts)) self.assertEqual([host, node], hosts[0]) def test_post_select_populate(self): # Test addition of certain filter props after a node is selected. retry = {'hosts': [], 'num_attempts': 1} filter_properties = {'retry': retry} host_state = host_manager.HostState('host', 'node') host_state.limits['vcpus'] = 5 scheduler_utils.populate_filter_properties(filter_properties, host_state) self.assertEqual(['host', 'node'], filter_properties['retry']['hosts'][0]) self.assertEqual({'vcpus': 5}, host_state.limits) def test_group_details_in_filter_properties(self): sched = fakes.FakeFilterScheduler() instance = fake_instance.fake_instance_obj(self.context, params={'host': 'hostA'}) group = instance_group_obj.InstanceGroup() group.uuid = str(uuid.uuid4()) group.members = [instance.uuid] group.policies = ['anti-affinity'] filter_properties = { 'scheduler_hints': { 'group': group.uuid, }, 'group_hosts': ['hostB'], } with contextlib.nested( mock.patch.object(instance_group_obj.InstanceGroup, 'get_by_uuid', return_value=group), mock.patch.object(instance_group_obj.InstanceGroup, 'get_hosts', return_value=['hostA']), ) as (get_group, get_hosts): update_group_hosts = sched._setup_instance_group(self.context, filter_properties) self.assertTrue(update_group_hosts) self.assertEqual(set(['hostA', 'hostB']), filter_properties['group_hosts']) self.assertEqual(['anti-affinity'], filter_properties['group_policies']) def test_schedule_host_pool(self): """Make sure the scheduler_host_subset_size property works properly.""" self.flags(scheduler_host_subset_size=2) sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project', is_admin=True) self.stubs.Set(sched.host_manager, 'get_filtered_hosts', fake_get_filtered_hosts) fakes.mox_host_manager_db_calls(self.mox, fake_context) instance_properties = {'project_id': 1, 'root_gb': 512, 'memory_mb': 512, 'ephemeral_gb': 0, 'vcpus': 1, 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties, instance_type={}) filter_properties = {} self.mox.ReplayAll() hosts = sched._schedule(self.context, request_spec, filter_properties=filter_properties) # one host should be chosen self.assertEqual(len(hosts), 1) def test_schedule_large_host_pool(self): """Hosts should still be chosen if pool size is larger than number of filtered hosts. """ sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project', is_admin=True) self.flags(scheduler_host_subset_size=20) self.stubs.Set(sched.host_manager, 'get_filtered_hosts', fake_get_filtered_hosts) fakes.mox_host_manager_db_calls(self.mox, fake_context) instance_properties = {'project_id': 1, 'root_gb': 512, 'memory_mb': 512, 'ephemeral_gb': 0, 'vcpus': 1, 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties, instance_type={}) filter_properties = {} self.mox.ReplayAll() hosts = sched._schedule(self.context, request_spec, filter_properties=filter_properties) # one host should be chose self.assertEqual(len(hosts), 1) def test_schedule_chooses_best_host(self): """If scheduler_host_subset_size is 1, the largest host with greatest weight should be returned. """ self.flags(scheduler_host_subset_size=1) sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project', is_admin=True) self.stubs.Set(sched.host_manager, 'get_filtered_hosts', fake_get_filtered_hosts) fakes.mox_host_manager_db_calls(self.mox, fake_context) self.next_weight = 50 def _fake_weigh_objects(_self, functions, hosts, options): this_weight = self.next_weight self.next_weight = 0 host_state = hosts[0] return [weights.WeighedHost(host_state, this_weight)] instance_properties = {'project_id': 1, 'root_gb': 512, 'memory_mb': 512, 'ephemeral_gb': 0, 'vcpus': 1, 'os_type': 'Linux'} request_spec = dict(instance_properties=instance_properties, instance_type={}) self.stubs.Set(weights.HostWeightHandler, 'get_weighed_objects', _fake_weigh_objects) filter_properties = {} self.mox.ReplayAll() hosts = sched._schedule(self.context, request_spec, filter_properties=filter_properties) # one host should be chosen self.assertEqual(1, len(hosts)) self.assertEqual(50, hosts[0].weight) def test_select_destinations(self): """select_destinations is basically a wrapper around _schedule(). Similar to the _schedule tests, this just does a happy path test to ensure there is nothing glaringly wrong. """ self.next_weight = 1.0 selected_hosts = [] selected_nodes = [] def _fake_weigh_objects(_self, functions, hosts, options): self.next_weight += 2.0 host_state = hosts[0] selected_hosts.append(host_state.host) selected_nodes.append(host_state.nodename) return [weights.WeighedHost(host_state, self.next_weight)] sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project', is_admin=True) self.stubs.Set(sched.host_manager, 'get_filtered_hosts', fake_get_filtered_hosts) self.stubs.Set(weights.HostWeightHandler, 'get_weighed_objects', _fake_weigh_objects) fakes.mox_host_manager_db_calls(self.mox, fake_context) request_spec = {'instance_type': {'memory_mb': 512, 'root_gb': 512, 'ephemeral_gb': 0, 'vcpus': 1}, 'instance_properties': {'project_id': 1, 'root_gb': 512, 'memory_mb': 512, 'ephemeral_gb': 0, 'vcpus': 1, 'os_type': 'Linux'}, 'num_instances': 1} self.mox.ReplayAll() dests = sched.select_destinations(fake_context, request_spec, {}) (host, node) = (dests[0]['host'], dests[0]['nodename']) self.assertEqual(host, selected_hosts[0]) self.assertEqual(node, selected_nodes[0]) def test_select_destinations_no_valid_host(self): def _return_no_host(*args, **kwargs): return [] self.stubs.Set(self.driver, '_schedule', _return_no_host) self.assertRaises(exception.NoValidHost, self.driver.select_destinations, self.context, {'num_instances': 1}, {}) def test_handles_deleted_instance(self): """Test instance deletion while being scheduled.""" def _raise_instance_not_found(*args, **kwargs): raise exception.InstanceNotFound(instance_id='123') self.stubs.Set(driver, 'instance_update_db', _raise_instance_not_found) sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project') host_state = host_manager.HostState('host2', 'node2') weighted_host = weights.WeighedHost(host_state, 1.42) filter_properties = {} uuid = 'fake-uuid1' instance_properties = {'project_id': 1, 'os_type': 'Linux'} request_spec = {'instance_type': {'memory_mb': 1, 'local_gb': 1}, 'instance_properties': instance_properties, 'instance_uuids': [uuid]} sched._provision_resource(fake_context, weighted_host, request_spec, filter_properties, None, None, None, None) def test_pci_request_in_filter_properties(self): instance_type = {} request_spec = {'instance_type': instance_type, 'instance_properties': {'project_id': 1, 'os_type': 'Linux'}} filter_properties = {} requests = [{'count': 1, 'spec': [{'vendor_id': '8086'}]}] self.mox.StubOutWithMock(pci_request, 'get_pci_requests_from_flavor') pci_request.get_pci_requests_from_flavor( instance_type).AndReturn(requests) self.mox.ReplayAll() self.driver.populate_filter_properties( request_spec, filter_properties) self.assertEqual(filter_properties.get('pci_requests'), requests) nova-2014.1/nova/tests/scheduler/test_host_filters.py0000664000175400017540000024125312323721510024106 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Scheduler Host Filters. """ import httplib from oslo.config import cfg import stubout from nova import context from nova import db from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.pci import pci_stats from nova.scheduler import filters from nova.scheduler.filters import extra_specs_ops from nova.scheduler.filters import trusted_filter from nova import servicegroup from nova import test from nova.tests.scheduler import fakes from nova import utils CONF = cfg.CONF CONF.import_opt('my_ip', 'nova.netconf') class TestFilter(filters.BaseHostFilter): pass class TestBogusFilter(object): """Class that doesn't inherit from BaseHostFilter.""" pass class ExtraSpecsOpsTestCase(test.NoDBTestCase): def _do_extra_specs_ops_test(self, value, req, matches): assertion = self.assertTrue if matches else self.assertFalse assertion(extra_specs_ops.match(value, req)) def test_extra_specs_matches_simple(self): self._do_extra_specs_ops_test( value='1', req='1', matches=True) def test_extra_specs_fails_simple(self): self._do_extra_specs_ops_test( value='', req='1', matches=False) def test_extra_specs_fails_simple2(self): self._do_extra_specs_ops_test( value='3', req='1', matches=False) def test_extra_specs_fails_simple3(self): self._do_extra_specs_ops_test( value='222', req='2', matches=False) def test_extra_specs_fails_with_bogus_ops(self): self._do_extra_specs_ops_test( value='4', req='> 2', matches=False) def test_extra_specs_matches_with_op_eq(self): self._do_extra_specs_ops_test( value='123', req='= 123', matches=True) def test_extra_specs_matches_with_op_eq2(self): self._do_extra_specs_ops_test( value='124', req='= 123', matches=True) def test_extra_specs_fails_with_op_eq(self): self._do_extra_specs_ops_test( value='34', req='= 234', matches=False) def test_extra_specs_fails_with_op_eq3(self): self._do_extra_specs_ops_test( value='34', req='=', matches=False) def test_extra_specs_matches_with_op_seq(self): self._do_extra_specs_ops_test( value='123', req='s== 123', matches=True) def test_extra_specs_fails_with_op_seq(self): self._do_extra_specs_ops_test( value='1234', req='s== 123', matches=False) def test_extra_specs_matches_with_op_sneq(self): self._do_extra_specs_ops_test( value='1234', req='s!= 123', matches=True) def test_extra_specs_fails_with_op_sneq(self): self._do_extra_specs_ops_test( value='123', req='s!= 123', matches=False) def test_extra_specs_fails_with_op_sge(self): self._do_extra_specs_ops_test( value='1000', req='s>= 234', matches=False) def test_extra_specs_fails_with_op_sle(self): self._do_extra_specs_ops_test( value='1234', req='s<= 1000', matches=False) def test_extra_specs_fails_with_op_sl(self): self._do_extra_specs_ops_test( value='2', req='s< 12', matches=False) def test_extra_specs_fails_with_op_sg(self): self._do_extra_specs_ops_test( value='12', req='s> 2', matches=False) def test_extra_specs_matches_with_op_in(self): self._do_extra_specs_ops_test( value='12311321', req=' 11', matches=True) def test_extra_specs_matches_with_op_in2(self): self._do_extra_specs_ops_test( value='12311321', req=' 12311321', matches=True) def test_extra_specs_matches_with_op_in3(self): self._do_extra_specs_ops_test( value='12311321', req=' 12311321 ', matches=True) def test_extra_specs_fails_with_op_in(self): self._do_extra_specs_ops_test( value='12310321', req=' 11', matches=False) def test_extra_specs_fails_with_op_in2(self): self._do_extra_specs_ops_test( value='12310321', req=' 11 ', matches=False) def test_extra_specs_matches_with_op_or(self): self._do_extra_specs_ops_test( value='12', req=' 11 12', matches=True) def test_extra_specs_matches_with_op_or2(self): self._do_extra_specs_ops_test( value='12', req=' 11 12 ', matches=True) def test_extra_specs_fails_with_op_or(self): self._do_extra_specs_ops_test( value='13', req=' 11 12', matches=False) def test_extra_specs_fails_with_op_or2(self): self._do_extra_specs_ops_test( value='13', req=' 11 12 ', matches=False) def test_extra_specs_matches_with_op_le(self): self._do_extra_specs_ops_test( value='2', req='<= 10', matches=True) def test_extra_specs_fails_with_op_le(self): self._do_extra_specs_ops_test( value='3', req='<= 2', matches=False) def test_extra_specs_matches_with_op_ge(self): self._do_extra_specs_ops_test( value='3', req='>= 1', matches=True) def test_extra_specs_fails_with_op_ge(self): self._do_extra_specs_ops_test( value='2', req='>= 3', matches=False) class HostFiltersTestCase(test.NoDBTestCase): """Test case for host filters.""" # FIXME(sirp): These tests still require DB access until we can separate # the testing of the DB API code from the host-filter code. USES_DB = True def fake_oat_request(self, *args, **kwargs): """Stubs out the response from OAT service.""" self.oat_attested = True return httplib.OK, self.oat_data def setUp(self): super(HostFiltersTestCase, self).setUp() self.oat_data = '' self.oat_attested = False self.stubs = stubout.StubOutForTesting() self.stubs.Set(trusted_filter.AttestationService, '_request', self.fake_oat_request) self.context = context.RequestContext('fake', 'fake') self.json_query = jsonutils.dumps( ['and', ['>=', '$free_ram_mb', 1024], ['>=', '$free_disk_mb', 200 * 1024]]) filter_handler = filters.HostFilterHandler() classes = filter_handler.get_matching_classes( ['nova.scheduler.filters.all_filters']) self.class_map = {} for cls in classes: self.class_map[cls.__name__] = cls def test_all_filters(self): # Double check at least a couple of known filters exist self.assertIn('AllHostsFilter', self.class_map) self.assertIn('ComputeFilter', self.class_map) def test_all_host_filter(self): filt_cls = self.class_map['AllHostsFilter']() host = fakes.FakeHostState('host1', 'node1', {}) self.assertTrue(filt_cls.host_passes(host, {})) def _stub_service_is_up(self, ret_value): def fake_service_is_up(self, service): return ret_value self.stubs.Set(servicegroup.API, 'service_is_up', fake_service_is_up) def test_affinity_different_filter_passes(self): filt_cls = self.class_map['DifferentHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host2'}) instance_uuid = instance.uuid filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'different_host': [instance_uuid], }} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_different_filter_no_list_passes(self): filt_cls = self.class_map['DifferentHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host2'}) instance_uuid = instance.uuid filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'different_host': instance_uuid}} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_different_filter_fails(self): filt_cls = self.class_map['DifferentHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host1'}) instance_uuid = instance.uuid filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'different_host': [instance_uuid], }} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_affinity_different_filter_handles_none(self): filt_cls = self.class_map['DifferentHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {'context': self.context.elevated(), 'scheduler_hints': None} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_different_filter_handles_deleted_instance(self): filt_cls = self.class_map['DifferentHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host1'}) instance_uuid = instance.uuid db.instance_destroy(self.context, instance_uuid) filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'different_host': [instance_uuid], }} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_same_filter_no_list_passes(self): filt_cls = self.class_map['SameHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host1'}) instance_uuid = instance.uuid filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'same_host': instance_uuid}} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_same_filter_passes(self): filt_cls = self.class_map['SameHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host1'}) instance_uuid = instance.uuid filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'same_host': [instance_uuid], }} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_same_filter_fails(self): filt_cls = self.class_map['SameHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host2'}) instance_uuid = instance.uuid filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'same_host': [instance_uuid], }} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_affinity_same_filter_handles_none(self): filt_cls = self.class_map['SameHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {'context': self.context.elevated(), 'scheduler_hints': None} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_same_filter_handles_deleted_instance(self): filt_cls = self.class_map['SameHostFilter']() host = fakes.FakeHostState('host1', 'node1', {}) instance = fakes.FakeInstance(context=self.context, params={'host': 'host1'}) instance_uuid = instance.uuid db.instance_destroy(self.context, instance_uuid) filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'same_host': [instance_uuid], }} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_affinity_simple_cidr_filter_passes(self): filt_cls = self.class_map['SimpleCIDRAffinityFilter']() host = fakes.FakeHostState('host1', 'node1', {}) host.host_ip = '10.8.1.1' affinity_ip = "10.8.1.100" filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'cidr': '/24', 'build_near_host_ip': affinity_ip}} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_affinity_simple_cidr_filter_fails(self): filt_cls = self.class_map['SimpleCIDRAffinityFilter']() host = fakes.FakeHostState('host1', 'node1', {}) host.host_ip = '10.8.1.1' affinity_ip = "10.8.1.100" filter_properties = {'context': self.context.elevated(), 'scheduler_hints': { 'cidr': '/32', 'build_near_host_ip': affinity_ip}} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_affinity_simple_cidr_filter_handles_none(self): filt_cls = self.class_map['SimpleCIDRAffinityFilter']() host = fakes.FakeHostState('host1', 'node1', {}) affinity_ip = CONF.my_ip.split('.')[0:3] affinity_ip.append('100') affinity_ip = str.join('.', affinity_ip) filter_properties = {'context': self.context.elevated(), 'scheduler_hints': None} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_compute_filter_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['ComputeFilter']() filter_properties = {'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_type_filter(self): self._stub_service_is_up(True) filt_cls = self.class_map['TypeAffinityFilter']() filter_properties = {'context': self.context, 'instance_type': {'id': 1}} filter2_properties = {'context': self.context, 'instance_type': {'id': 2}} service = {'disabled': False} host = fakes.FakeHostState('fake_host', 'fake_node', {'service': service}) #True since empty self.assertTrue(filt_cls.host_passes(host, filter_properties)) fakes.FakeInstance(context=self.context, params={'host': 'fake_host', 'instance_type_id': 1}) #True since same type self.assertTrue(filt_cls.host_passes(host, filter_properties)) #False since different type self.assertFalse(filt_cls.host_passes(host, filter2_properties)) #False since node not homogeneous fakes.FakeInstance(context=self.context, params={'host': 'fake_host', 'instance_type_id': 2}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_aggregate_type_filter(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateTypeAffinityFilter']() filter_properties = {'context': self.context, 'instance_type': {'name': 'fake1'}} filter2_properties = {'context': self.context, 'instance_type': {'name': 'fake2'}} service = {'disabled': False} host = fakes.FakeHostState('fake_host', 'fake_node', {'service': service}) #True since no aggregates self.assertTrue(filt_cls.host_passes(host, filter_properties)) #True since type matches aggregate, metadata self._create_aggregate_with_host(name='fake_aggregate', hosts=['fake_host'], metadata={'instance_type': 'fake1'}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) #False since type matches aggregate, metadata self.assertFalse(filt_cls.host_passes(host, filter2_properties)) def test_ram_filter_fails_on_memory(self): self._stub_service_is_up(True) filt_cls = self.class_map['RamFilter']() self.flags(ram_allocation_ratio=1.0) filter_properties = {'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1023, 'total_usable_ram_mb': 1024, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_ram_filter_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['RamFilter']() self.flags(ram_allocation_ratio=1.0) filter_properties = {'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'total_usable_ram_mb': 1024, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_ram_filter_oversubscribe(self): self._stub_service_is_up(True) filt_cls = self.class_map['RamFilter']() self.flags(ram_allocation_ratio=2.0) filter_properties = {'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': -1024, 'total_usable_ram_mb': 2048, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(2048 * 2.0, host.limits['memory_mb']) def test_aggregate_ram_filter_value_error(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateRamFilter']() self.flags(ram_allocation_ratio=1.0) filter_properties = {'context': self.context, 'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'total_usable_ram_mb': 1024, 'service': service}) self._create_aggregate_with_host(name='fake_aggregate', hosts=['host1'], metadata={'ram_allocation_ratio': 'XXX'}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(1024 * 1.0, host.limits['memory_mb']) def test_aggregate_ram_filter_default_value(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateRamFilter']() self.flags(ram_allocation_ratio=1.0) filter_properties = {'context': self.context, 'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1023, 'total_usable_ram_mb': 1024, 'service': service}) # False: fallback to default flag w/o aggregates self.assertFalse(filt_cls.host_passes(host, filter_properties)) self._create_aggregate_with_host(name='fake_aggregate', hosts=['host1'], metadata={'ram_allocation_ratio': '2.0'}) # True: use ratio from aggregates self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(1024 * 2.0, host.limits['memory_mb']) def test_aggregate_ram_filter_conflict_values(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateRamFilter']() self.flags(ram_allocation_ratio=1.0) filter_properties = {'context': self.context, 'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1023, 'total_usable_ram_mb': 1024, 'service': service}) self._create_aggregate_with_host(name='fake_aggregate1', hosts=['host1'], metadata={'ram_allocation_ratio': '1.5'}) self._create_aggregate_with_host(name='fake_aggregate2', hosts=['host1'], metadata={'ram_allocation_ratio': '2.0'}) # use the minimum ratio from aggregates self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(1024 * 1.5, host.limits['memory_mb']) def test_disk_filter_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['DiskFilter']() self.flags(disk_allocation_ratio=1.0) filter_properties = {'instance_type': {'root_gb': 1, 'ephemeral_gb': 1, 'swap': 512}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_disk_mb': 11 * 1024, 'total_usable_disk_gb': 13, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_disk_filter_fails(self): self._stub_service_is_up(True) filt_cls = self.class_map['DiskFilter']() self.flags(disk_allocation_ratio=1.0) filter_properties = {'instance_type': {'root_gb': 10, 'ephemeral_gb': 1, 'swap': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_disk_mb': 11 * 1024, 'total_usable_disk_gb': 13, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_disk_filter_oversubscribe(self): self._stub_service_is_up(True) filt_cls = self.class_map['DiskFilter']() self.flags(disk_allocation_ratio=10.0) filter_properties = {'instance_type': {'root_gb': 100, 'ephemeral_gb': 18, 'swap': 1024}} service = {'disabled': False} # 1GB used... so 119GB allowed... host = fakes.FakeHostState('host1', 'node1', {'free_disk_mb': 11 * 1024, 'total_usable_disk_gb': 12, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(12 * 10.0, host.limits['disk_gb']) def test_disk_filter_oversubscribe_fail(self): self._stub_service_is_up(True) filt_cls = self.class_map['DiskFilter']() self.flags(disk_allocation_ratio=10.0) filter_properties = {'instance_type': {'root_gb': 100, 'ephemeral_gb': 19, 'swap': 1024}} service = {'disabled': False} # 1GB used... so 119GB allowed... host = fakes.FakeHostState('host1', 'node1', {'free_disk_mb': 11 * 1024, 'total_usable_disk_gb': 12, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def _test_compute_filter_fails_on_service_disabled(self, reason=None): self._stub_service_is_up(True) filt_cls = self.class_map['ComputeFilter']() filter_properties = {'instance_type': {'memory_mb': 1024}} service = {'disabled': True} if reason: service['disabled_reason'] = reason host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_compute_filter_fails_on_service_disabled_no_reason(self): self._test_compute_filter_fails_on_service_disabled() def test_compute_filter_fails_on_service_disabled(self): self._test_compute_filter_fails_on_service_disabled(reason='Test') def test_compute_filter_fails_on_service_down(self): self._stub_service_is_up(False) filt_cls = self.class_map['ComputeFilter']() filter_properties = {'instance_type': {'memory_mb': 1024}} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_passes_same_inst_props_and_version(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'_architecture': 'x86_64', 'hypervisor_type': 'kvm', 'vm_mode': 'hvm', 'hypervisor_version_requires': '>=6.0,<6.2' }} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_fails_different_inst_props(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'arm', 'hypervisor_type': 'qemu', 'vm_mode': 'hvm'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_fails_different_hyper_version(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'x86_64', 'hypervisor_type': 'kvm', 'vm_mode': 'hvm', 'hypervisor_version_requires': '>=6.2'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'enabled': True, 'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_passes_partial_inst_props(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'x86_64', 'vm_mode': 'hvm'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_fails_partial_inst_props(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'x86_64', 'vm_mode': 'hvm'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'xen', 'xen')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_passes_without_inst_props(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() filter_properties = {'request_spec': {}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_fails_without_host_props(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'x86_64', 'hypervisor_type': 'kvm', 'vm_mode': 'hvm'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'enabled': True, 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_passes_without_hyper_version(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'x86_64', 'hypervisor_type': 'kvm', 'vm_mode': 'hvm', 'hypervisor_version_requires': '>=6.0'}} filter_properties = {'request_spec': {'image': img_props}} capabilities = {'enabled': True, 'supported_instances': [('x86_64', 'kvm', 'hvm')]} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_fails_with_unsupported_hyper_ver(self): self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'architecture': 'x86_64', 'hypervisor_type': 'kvm', 'vm_mode': 'hvm', 'hypervisor_version_requires': '>=6.0'}} filter_properties = {'request_spec': {'image': img_props}} capabilities = {'enabled': True, 'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': 5000} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_pv_mode_compat(self): # if an old image has 'pv' for a vm_mode it should be treated as xen self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'vm_mode': 'pv'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'xapi', 'xen')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_image_properties_filter_hvm_mode_compat(self): # if an old image has 'hv' for a vm_mode it should be treated as xen self._stub_service_is_up(True) filt_cls = self.class_map['ImagePropertiesFilter']() img_props = {'properties': {'vm_mode': 'hv'}} filter_properties = {'request_spec': {'image': img_props}} hypervisor_version = utils.convert_version_to_int('6.0.0') capabilities = {'supported_instances': [('x86_64', 'kvm', 'hvm')], 'hypervisor_version': hypervisor_version} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def _do_test_compute_filter_extra_specs(self, ecaps, especs, passes): """In real OpenStack runtime environment,compute capabilities value may be number, so we should use number to do unit test. """ self._stub_service_is_up(True) filt_cls = self.class_map['ComputeCapabilitiesFilter']() capabilities = {} capabilities.update(ecaps) service = {'disabled': False} filter_properties = {'instance_type': {'memory_mb': 1024, 'extra_specs': especs}} host_state = {'free_ram_mb': 1024, 'service': service} host_state.update(capabilities) host = fakes.FakeHostState('host1', 'node1', host_state) assertion = self.assertTrue if passes else self.assertFalse assertion(filt_cls.host_passes(host, filter_properties)) def test_compute_filter_passes_extra_specs_simple(self): self._do_test_compute_filter_extra_specs( ecaps={'stats': {'opt1': 1, 'opt2': 2}}, especs={'opt1': '1', 'opt2': '2', 'trust:trusted_host': 'true'}, passes=True) def test_compute_filter_fails_extra_specs_simple(self): self._do_test_compute_filter_extra_specs( ecaps={'stats': {'opt1': 1, 'opt2': 2}}, 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={'stats': {'opt1': 1, 'opt2': 2}}, especs={'capabilities:opt1': '1', 'trust:trusted_host': 'true'}, passes=True) def test_compute_filter_pass_extra_specs_same_as_scope(self): # Make sure this still works even if the key is the same as the scope self._do_test_compute_filter_extra_specs( ecaps={'capabilities': 1}, especs={'capabilities': '1'}, 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={'stats': {'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']() capabilities = {'opt1': 1, 'opt2': 2} filter_properties = {'context': self.context, 'instance_type': {'memory_mb': 1024}} host = fakes.FakeHostState('host1', 'node1', capabilities) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def _create_aggregate_with_host(self, name='fake_aggregate', metadata=None, hosts=['host1']): values = {'name': name} if metadata: metadata['availability_zone'] = 'fake_avail_zone' else: metadata = {'availability_zone': 'fake_avail_zone'} result = db.aggregate_create(self.context.elevated(), values, metadata) for host in hosts: db.aggregate_host_add(self.context.elevated(), result['id'], host) return result def _do_test_aggregate_filter_extra_specs(self, emeta, especs, passes): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateInstanceExtraSpecsFilter']() self._create_aggregate_with_host(name='fake2', metadata=emeta) filter_properties = {'context': self.context, 'instance_type': {'memory_mb': 1024, 'extra_specs': especs}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024}) assertion = self.assertTrue if passes else self.assertFalse assertion(filt_cls.host_passes(host, filter_properties)) def test_aggregate_filter_fails_extra_specs_deleted_host(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateInstanceExtraSpecsFilter']() extra_specs = {'opt1': 's== 1', 'opt2': 's== 2', 'trust:trusted_host': 'true'} self._create_aggregate_with_host(metadata={'opt1': '1'}) agg2 = self._create_aggregate_with_host(name='fake2', metadata={'opt2': '2'}) filter_properties = {'context': self.context, 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024}) db.aggregate_host_delete(self.context.elevated(), agg2['id'], 'host1') self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_aggregate_filter_passes_extra_specs_simple(self): especs = { # Un-scoped extra spec 'opt1': '1', # Scoped extra spec that applies to this filter 'aggregate_instance_extra_specs:opt2': '2', # Scoped extra spec that does not apply to this filter 'trust:trusted_host': 'true', } self._do_test_aggregate_filter_extra_specs( emeta={'opt1': '1', 'opt2': '2'}, especs=especs, passes=True) def test_aggregate_filter_passes_with_key_same_as_scope(self): especs = { # Un-scoped extra spec, make sure we don't blow up if it # happens to match our scope. 'aggregate_instance_extra_specs': '1', } self._do_test_aggregate_filter_extra_specs( emeta={'aggregate_instance_extra_specs': '1'}, especs=especs, passes=True) def test_aggregate_filter_fails_extra_specs_simple(self): self._do_test_aggregate_filter_extra_specs( emeta={'opt1': '1', 'opt2': '2'}, especs={'opt1': '1', 'opt2': '222', 'trust:trusted_host': 'true'}, passes=False) def _do_test_isolated_hosts(self, host_in_list, image_in_list, set_flags=True, restrict_isolated_hosts_to_isolated_images=True): if set_flags: self.flags(isolated_images=['isolated_image'], isolated_hosts=['isolated_host'], restrict_isolated_hosts_to_isolated_images= restrict_isolated_hosts_to_isolated_images) host_name = 'isolated_host' if host_in_list else 'free_host' image_ref = 'isolated_image' if image_in_list else 'free_image' filter_properties = { 'request_spec': { 'instance_properties': {'image_ref': image_ref} } } filt_cls = self.class_map['IsolatedHostsFilter']() host = fakes.FakeHostState(host_name, 'node', {}) return filt_cls.host_passes(host, filter_properties) def test_isolated_hosts_fails_isolated_on_non_isolated(self): self.assertFalse(self._do_test_isolated_hosts(False, True)) def test_isolated_hosts_fails_non_isolated_on_isolated(self): self.assertFalse(self._do_test_isolated_hosts(True, False)) def test_isolated_hosts_passes_isolated_on_isolated(self): self.assertTrue(self._do_test_isolated_hosts(True, True)) def test_isolated_hosts_passes_non_isolated_on_non_isolated(self): self.assertTrue(self._do_test_isolated_hosts(False, False)) def test_isolated_hosts_no_config(self): # If there are no hosts nor isolated images in the config, it should # not filter at all. This is the default config. self.assertTrue(self._do_test_isolated_hosts(False, True, False)) self.assertTrue(self._do_test_isolated_hosts(True, False, False)) self.assertTrue(self._do_test_isolated_hosts(True, True, False)) self.assertTrue(self._do_test_isolated_hosts(False, False, False)) def test_isolated_hosts_no_hosts_config(self): self.flags(isolated_images=['isolated_image']) # If there are no hosts in the config, it should only filter out # images that are listed self.assertFalse(self._do_test_isolated_hosts(False, True, False)) self.assertTrue(self._do_test_isolated_hosts(True, False, False)) self.assertFalse(self._do_test_isolated_hosts(True, True, False)) self.assertTrue(self._do_test_isolated_hosts(False, False, False)) def test_isolated_hosts_no_images_config(self): self.flags(isolated_hosts=['isolated_host']) # If there are no images in the config, it should only filter out # isolated_hosts self.assertTrue(self._do_test_isolated_hosts(False, True, False)) self.assertFalse(self._do_test_isolated_hosts(True, False, False)) self.assertFalse(self._do_test_isolated_hosts(True, True, False)) self.assertTrue(self._do_test_isolated_hosts(False, False, False)) def test_isolated_hosts_less_restrictive(self): # If there are isolated hosts and non isolated images self.assertTrue(self._do_test_isolated_hosts(True, False, True, False)) # If there are isolated hosts and isolated images self.assertTrue(self._do_test_isolated_hosts(True, True, True, False)) # If there are non isolated hosts and non isolated images self.assertTrue(self._do_test_isolated_hosts(False, False, True, False)) # If there are non isolated hosts and isolated images self.assertFalse(self._do_test_isolated_hosts(False, True, True, False)) def test_json_filter_passes(self): filt_cls = self.class_map['JsonFilter']() filter_properties = {'instance_type': {'memory_mb': 1024, 'root_gb': 200, 'ephemeral_gb': 0}, 'scheduler_hints': {'query': self.json_query}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'free_disk_mb': 200 * 1024}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_json_filter_passes_with_no_query(self): filt_cls = self.class_map['JsonFilter']() filter_properties = {'instance_type': {'memory_mb': 1024, 'root_gb': 200, 'ephemeral_gb': 0}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 0, 'free_disk_mb': 0}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_json_filter_fails_on_memory(self): filt_cls = self.class_map['JsonFilter']() filter_properties = {'instance_type': {'memory_mb': 1024, 'root_gb': 200, 'ephemeral_gb': 0}, 'scheduler_hints': {'query': self.json_query}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1023, 'free_disk_mb': 200 * 1024}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_json_filter_fails_on_disk(self): filt_cls = self.class_map['JsonFilter']() filter_properties = {'instance_type': {'memory_mb': 1024, 'root_gb': 200, 'ephemeral_gb': 0}, 'scheduler_hints': {'query': self.json_query}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'free_disk_mb': (200 * 1024) - 1}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_json_filter_fails_on_service_disabled(self): filt_cls = self.class_map['JsonFilter']() json_query = jsonutils.dumps( ['and', ['>=', '$free_ram_mb', 1024], ['>=', '$free_disk_mb', 200 * 1024], ['not', '$service.disabled']]) filter_properties = {'instance_type': {'memory_mb': 1024, 'local_gb': 200}, 'scheduler_hints': {'query': json_query}} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 1024, 'free_disk_mb': 200 * 1024}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_json_filter_happy_day(self): # Test json filter more thoroughly. filt_cls = self.class_map['JsonFilter']() raw = ['and', '$capabilities.enabled', ['=', '$capabilities.opt1', 'match'], ['or', ['and', ['<', '$free_ram_mb', 30], ['<', '$free_disk_mb', 300]], ['and', ['>', '$free_ram_mb', 30], ['>', '$free_disk_mb', 300]]]] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } # Passes capabilities = {'opt1': 'match'} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 10, 'free_disk_mb': 200, 'capabilities': capabilities, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) # Passes capabilities = {'opt1': 'match'} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 40, 'free_disk_mb': 400, 'capabilities': capabilities, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) # Fails due to capabilities being disabled capabilities = {'enabled': False, 'opt1': 'match'} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 40, 'free_disk_mb': 400, 'capabilities': capabilities, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) # Fails due to being exact memory/disk we don't want capabilities = {'enabled': True, 'opt1': 'match'} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 30, 'free_disk_mb': 300, 'capabilities': capabilities, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) # Fails due to memory lower but disk higher capabilities = {'enabled': True, 'opt1': 'match'} service = {'disabled': False} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 20, 'free_disk_mb': 400, 'capabilities': capabilities, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) # Fails due to capabilities 'opt1' not equal capabilities = {'enabled': True, 'opt1': 'no-match'} service = {'enabled': True} host = fakes.FakeHostState('host1', 'node1', {'free_ram_mb': 20, 'free_disk_mb': 400, 'capabilities': capabilities, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_json_filter_basic_operators(self): filt_cls = self.class_map['JsonFilter']() host = fakes.FakeHostState('host1', 'node1', {}) # (operator, arguments, expected_result) ops_to_test = [ ['=', [1, 1], True], ['=', [1, 2], False], ['<', [1, 2], True], ['<', [1, 1], False], ['<', [2, 1], False], ['>', [2, 1], True], ['>', [2, 2], False], ['>', [2, 3], False], ['<=', [1, 2], True], ['<=', [1, 1], True], ['<=', [2, 1], False], ['>=', [2, 1], True], ['>=', [2, 2], True], ['>=', [2, 3], False], ['in', [1, 1], True], ['in', [1, 1, 2, 3], True], ['in', [4, 1, 2, 3], False], ['not', [True], False], ['not', [False], True], ['or', [True, False], True], ['or', [False, False], False], ['and', [True, True], True], ['and', [False, False], False], ['and', [True, False], False], # Nested ((True or False) and (2 > 1)) == Passes ['and', [['or', True, False], ['>', 2, 1]], True]] for (op, args, expected) in ops_to_test: raw = [op] + args filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertEqual(expected, filt_cls.host_passes(host, filter_properties)) # This results in [False, True, False, True] and if any are True # then it passes... raw = ['not', True, False, True, False] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertTrue(filt_cls.host_passes(host, filter_properties)) # This results in [False, False, False] and if any are True # then it passes...which this doesn't raw = ['not', True, True, True] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_json_filter_unknown_operator_raises(self): filt_cls = self.class_map['JsonFilter']() raw = ['!=', 1, 2] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } host = fakes.FakeHostState('host1', 'node1', {}) self.assertRaises(KeyError, filt_cls.host_passes, host, filter_properties) def test_json_filter_empty_filters_pass(self): filt_cls = self.class_map['JsonFilter']() host = fakes.FakeHostState('host1', 'node1', {}) raw = [] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertTrue(filt_cls.host_passes(host, filter_properties)) raw = {} filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_json_filter_invalid_num_arguments_fails(self): filt_cls = self.class_map['JsonFilter']() host = fakes.FakeHostState('host1', 'node1', {}) raw = ['>', ['and', ['or', ['not', ['<', ['>=', ['<=', ['in', ]]]]]]]] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertFalse(filt_cls.host_passes(host, filter_properties)) raw = ['>', 1] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_json_filter_unknown_variable_ignored(self): filt_cls = self.class_map['JsonFilter']() host = fakes.FakeHostState('host1', 'node1', {}) raw = ['=', '$........', 1, 1] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertTrue(filt_cls.host_passes(host, filter_properties)) raw = ['=', '$foo', 2, 2] filter_properties = { 'scheduler_hints': { 'query': jsonutils.dumps(raw), }, } self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_trusted_filter_default_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['TrustedFilter']() filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024}} host = fakes.FakeHostState('host1', 'node1', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_trusted_filter_trusted_and_trusted_passes(self): self.oat_data = {"hosts": [{"host_name": "host1", "trust_lvl": "trusted", "vtime": timeutils.isotime()}]} self._stub_service_is_up(True) filt_cls = self.class_map['TrustedFilter']() extra_specs = {'trust:trusted_host': 'trusted'} filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_trusted_filter_trusted_and_untrusted_fails(self): self.oat_data = {"hosts": [{"host_name": "host1", "trust_lvl": "untrusted", "vtime": timeutils.isotime()}]} self._stub_service_is_up(True) filt_cls = self.class_map['TrustedFilter']() extra_specs = {'trust:trusted_host': 'trusted'} filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_trusted_filter_untrusted_and_trusted_fails(self): self.oat_data = {"hosts": [{"host_name": "host1", "trust_lvl": "trusted", "vtime": timeutils.isotime()}]} self._stub_service_is_up(True) filt_cls = self.class_map['TrustedFilter']() extra_specs = {'trust:trusted_host': 'untrusted'} filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_trusted_filter_untrusted_and_untrusted_passes(self): self.oat_data = {"hosts": [{"host_name": "host1", "trust_lvl": "untrusted", "vtime": timeutils.isotime()}]} self._stub_service_is_up(True) filt_cls = self.class_map['TrustedFilter']() extra_specs = {'trust:trusted_host': 'untrusted'} filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_trusted_filter_update_cache(self): self.oat_data = {"hosts": [{"host_name": "host1", "trust_lvl": "untrusted", "vtime": timeutils.isotime()}]} filt_cls = self.class_map['TrustedFilter']() extra_specs = {'trust:trusted_host': 'untrusted'} filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {}) filt_cls.host_passes(host, filter_properties) # Fill the caches self.oat_attested = False filt_cls.host_passes(host, filter_properties) self.assertFalse(self.oat_attested) self.oat_attested = False timeutils.set_time_override(timeutils.utcnow()) timeutils.advance_time_seconds( CONF.trusted_computing.attestation_auth_timeout + 80) filt_cls.host_passes(host, filter_properties) self.assertTrue(self.oat_attested) timeutils.clear_time_override() def test_trusted_filter_update_cache_timezone(self): self.oat_data = {"hosts": [{"host_name": "host1", "trust_lvl": "untrusted", "vtime": "2012-09-09T05:10:40-04:00"}]} filt_cls = self.class_map['TrustedFilter']() extra_specs = {'trust:trusted_host': 'untrusted'} filter_properties = {'context': self.context.elevated(), 'instance_type': {'memory_mb': 1024, 'extra_specs': extra_specs}} host = fakes.FakeHostState('host1', 'node1', {}) timeutils.set_time_override( timeutils.normalize_time( timeutils.parse_isotime("2012-09-09T09:10:40Z"))) filt_cls.host_passes(host, filter_properties) # Fill the caches self.oat_attested = False filt_cls.host_passes(host, filter_properties) self.assertFalse(self.oat_attested) self.oat_attested = False timeutils.advance_time_seconds( CONF.trusted_computing.attestation_auth_timeout - 10) filt_cls.host_passes(host, filter_properties) self.assertFalse(self.oat_attested) timeutils.clear_time_override() def test_core_filter_passes(self): filt_cls = self.class_map['CoreFilter']() filter_properties = {'instance_type': {'vcpus': 1}} self.flags(cpu_allocation_ratio=2) host = fakes.FakeHostState('host1', 'node1', {'vcpus_total': 4, 'vcpus_used': 7}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_core_filter_fails_safe(self): filt_cls = self.class_map['CoreFilter']() filter_properties = {'instance_type': {'vcpus': 1}} host = fakes.FakeHostState('host1', 'node1', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_core_filter_fails(self): filt_cls = self.class_map['CoreFilter']() filter_properties = {'instance_type': {'vcpus': 1}} self.flags(cpu_allocation_ratio=2) host = fakes.FakeHostState('host1', 'node1', {'vcpus_total': 4, 'vcpus_used': 8}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_aggregate_core_filter_value_error(self): filt_cls = self.class_map['AggregateCoreFilter']() filter_properties = {'context': self.context, 'instance_type': {'vcpus': 1}} self.flags(cpu_allocation_ratio=2) host = fakes.FakeHostState('host1', 'node1', {'vcpus_total': 4, 'vcpus_used': 7}) self._create_aggregate_with_host(name='fake_aggregate', hosts=['host1'], metadata={'cpu_allocation_ratio': 'XXX'}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(4 * 2, host.limits['vcpu']) def test_aggregate_core_filter_default_value(self): filt_cls = self.class_map['AggregateCoreFilter']() filter_properties = {'context': self.context, 'instance_type': {'vcpus': 1}} self.flags(cpu_allocation_ratio=2) host = fakes.FakeHostState('host1', 'node1', {'vcpus_total': 4, 'vcpus_used': 8}) # False: fallback to default flag w/o aggregates self.assertFalse(filt_cls.host_passes(host, filter_properties)) self._create_aggregate_with_host(name='fake_aggregate', hosts=['host1'], metadata={'cpu_allocation_ratio': '3'}) # True: use ratio from aggregates self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(4 * 3, host.limits['vcpu']) def test_aggregate_core_filter_conflict_values(self): filt_cls = self.class_map['AggregateCoreFilter']() filter_properties = {'context': self.context, 'instance_type': {'vcpus': 1}} self.flags(cpu_allocation_ratio=1) host = fakes.FakeHostState('host1', 'node1', {'vcpus_total': 4, 'vcpus_used': 8}) self._create_aggregate_with_host(name='fake_aggregate1', hosts=['host1'], metadata={'cpu_allocation_ratio': '2'}) self._create_aggregate_with_host(name='fake_aggregate2', hosts=['host1'], metadata={'cpu_allocation_ratio': '3'}) # use the minimum ratio from aggregates self.assertFalse(filt_cls.host_passes(host, filter_properties)) self.assertEqual(4 * 2, host.limits['vcpu']) @staticmethod def _make_zone_request(zone, is_admin=False): ctxt = context.RequestContext('fake', 'fake', is_admin=is_admin) return { 'context': ctxt, 'request_spec': { 'instance_properties': { 'availability_zone': zone } } } def test_availability_zone_filter_same(self): filt_cls = self.class_map['AvailabilityZoneFilter']() service = {'availability_zone': 'nova'} request = self._make_zone_request('nova') host = fakes.FakeHostState('host1', 'node1', {'service': service}) self.assertTrue(filt_cls.host_passes(host, request)) def test_availability_zone_filter_different(self): filt_cls = self.class_map['AvailabilityZoneFilter']() service = {'availability_zone': 'nova'} request = self._make_zone_request('bad') host = fakes.FakeHostState('host1', 'node1', {'service': service}) self.assertFalse(filt_cls.host_passes(host, request)) def test_retry_filter_disabled(self): # Test case where retry/re-scheduling is disabled. filt_cls = self.class_map['RetryFilter']() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_retry_filter_pass(self): # Node not previously tried. filt_cls = self.class_map['RetryFilter']() host = fakes.FakeHostState('host1', 'nodeX', {}) retry = dict(num_attempts=2, hosts=[['host1', 'node1'], # same host, different node ['host2', 'node2'], # different host and node ]) filter_properties = dict(retry=retry) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_retry_filter_fail(self): # Node was already tried. filt_cls = self.class_map['RetryFilter']() host = fakes.FakeHostState('host1', 'node1', {}) retry = dict(num_attempts=1, hosts=[['host1', 'node1']]) filter_properties = dict(retry=retry) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_filter_num_iops_passes(self): self.flags(max_io_ops_per_host=8) filt_cls = self.class_map['IoOpsFilter']() host = fakes.FakeHostState('host1', 'node1', {'num_io_ops': 7}) filter_properties = {} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_filter_num_iops_fails(self): self.flags(max_io_ops_per_host=8) filt_cls = self.class_map['IoOpsFilter']() host = fakes.FakeHostState('host1', 'node1', {'num_io_ops': 8}) filter_properties = {} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_filter_num_instances_passes(self): self.flags(max_instances_per_host=5) filt_cls = self.class_map['NumInstancesFilter']() host = fakes.FakeHostState('host1', 'node1', {'num_instances': 4}) filter_properties = {} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_filter_num_instances_fails(self): self.flags(max_instances_per_host=5) filt_cls = self.class_map['NumInstancesFilter']() host = fakes.FakeHostState('host1', 'node1', {'num_instances': 5}) filter_properties = {} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def _test_group_anti_affinity_filter_passes(self, cls, policy): filt_cls = self.class_map[cls]() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {} self.assertTrue(filt_cls.host_passes(host, filter_properties)) filter_properties = {'group_policies': ['affinity']} self.assertTrue(filt_cls.host_passes(host, filter_properties)) filter_properties = {'group_policies': [policy]} filter_properties['group_hosts'] = [] self.assertTrue(filt_cls.host_passes(host, filter_properties)) filter_properties['group_hosts'] = ['host2'] self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_group_anti_affinity_filter_passes(self): self._test_group_anti_affinity_filter_passes( 'ServerGroupAntiAffinityFilter', 'anti-affinity') def test_group_anti_affinity_filter_passes_legacy(self): self._test_group_anti_affinity_filter_passes( 'GroupAntiAffinityFilter', 'legacy') def _test_group_anti_affinity_filter_fails(self, cls, policy): filt_cls = self.class_map[cls]() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {'group_policies': [policy], 'group_hosts': ['host1']} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_group_anti_affinity_filter_fails(self): self._test_group_anti_affinity_filter_fails( 'ServerGroupAntiAffinityFilter', 'anti-affinity') def test_group_anti_affinity_filter_fails_legacy(self): self._test_group_anti_affinity_filter_fails( 'GroupAntiAffinityFilter', 'legacy') def _test_group_affinity_filter_passes(self, cls, policy): filt_cls = self.class_map['ServerGroupAffinityFilter']() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {} self.assertTrue(filt_cls.host_passes(host, filter_properties)) filter_properties = {'group_policies': ['anti-affinity']} self.assertTrue(filt_cls.host_passes(host, filter_properties)) filter_properties = {'group_policies': ['affinity'], 'group_hosts': ['host1']} self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_group_affinity_filter_passes(self): self._test_group_affinity_filter_passes( 'ServerGroupAffinityFilter', 'affinity') def test_group_affinity_filter_passes_legacy(self): self._test_group_affinity_filter_passes( 'GroupAffinityFilter', 'legacy') def _test_group_affinity_filter_fails(self, cls, policy): filt_cls = self.class_map[cls]() host = fakes.FakeHostState('host1', 'node1', {}) filter_properties = {'group_policies': [policy], 'group_hosts': ['host2']} self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_group_affinity_filter_fails(self): self._test_group_affinity_filter_fails( 'ServerGroupAffinityFilter', 'affinity') def test_group_affinity_filter_fails_legacy(self): self._test_group_affinity_filter_fails( 'GroupAffinityFilter', 'legacy') def test_aggregate_multi_tenancy_isolation_with_meta_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateMultiTenancyIsolation']() aggr_meta = {'filter_tenant_id': 'my_tenantid'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'instance_properties': { 'project_id': 'my_tenantid'}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_aggregate_multi_tenancy_isolation_fails(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateMultiTenancyIsolation']() aggr_meta = {'filter_tenant_id': 'other_tenantid'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'instance_properties': { 'project_id': 'my_tenantid'}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_aggregate_multi_tenancy_isolation_no_meta_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateMultiTenancyIsolation']() aggr_meta = {} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'instance_properties': { 'project_id': 'my_tenantid'}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def _fake_pci_support_requests(self, pci_requests): self.pci_requests = pci_requests return self.pci_request_result def test_pci_passthrough_pass(self): filt_cls = self.class_map['PciPassthroughFilter']() requests = [{'count': 1, 'spec': [{'vendor_id': '8086'}]}] filter_properties = {'pci_requests': requests} self.stubs.Set(pci_stats.PciDeviceStats, 'support_requests', self._fake_pci_support_requests) host = fakes.FakeHostState( 'host1', 'node1', attribute_dict={'pci_stats': pci_stats.PciDeviceStats()}) self.pci_request_result = True self.assertTrue(filt_cls.host_passes(host, filter_properties)) self.assertEqual(self.pci_requests, requests) def test_pci_passthrough_fail(self): filt_cls = self.class_map['PciPassthroughFilter']() requests = [{'count': 1, 'spec': [{'vendor_id': '8086'}]}] filter_properties = {'pci_requests': requests} self.stubs.Set(pci_stats.PciDeviceStats, 'support_requests', self._fake_pci_support_requests) host = fakes.FakeHostState( 'host1', 'node1', attribute_dict={'pci_stats': pci_stats.PciDeviceStats()}) self.pci_request_result = False self.assertFalse(filt_cls.host_passes(host, filter_properties)) self.assertEqual(self.pci_requests, requests) def test_pci_passthrough_no_pci_request(self): filt_cls = self.class_map['PciPassthroughFilter']() filter_properties = {} host = fakes.FakeHostState('h1', 'n1', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_pci_passthrough_comopute_stats(self): filt_cls = self.class_map['PciPassthroughFilter']() requests = [{'count': 1, 'spec': [{'vendor_id': '8086'}]}] filter_properties = {'pci_requests': requests} self.stubs.Set(pci_stats.PciDeviceStats, 'support_requests', self._fake_pci_support_requests) host = fakes.FakeHostState( 'host1', 'node1', attribute_dict={}) self.pci_request_result = True self.assertRaises(AttributeError, filt_cls.host_passes, host, filter_properties) def test_aggregate_image_properties_isolation_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() aggr_meta = {'foo': 'bar'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {'foo': 'bar'}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_aggregate_image_properties_isolation_multi_props_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() aggr_meta = {'foo': 'bar', 'foo2': 'bar2'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {'foo': 'bar', 'foo2': 'bar2'}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_aggregate_image_properties_isolation_props_with_meta_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() aggr_meta = {'foo': 'bar'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_aggregate_image_properties_isolation_props_imgprops_passes(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() aggr_meta = {} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {'foo': 'bar'}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_aggregate_image_properties_isolation_props_not_match_fails(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() aggr_meta = {'foo': 'bar'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {'foo': 'no-bar'}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_aggregate_image_properties_isolation_props_not_match2_fails(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() aggr_meta = {'foo': 'bar', 'foo2': 'bar2'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {'foo': 'bar', 'foo2': 'bar3'}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) def test_aggregate_image_properties_isolation_props_namespace(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateImagePropertiesIsolation']() self.flags(aggregate_image_properties_isolation_namespace="np") aggr_meta = {'np.foo': 'bar', 'foo2': 'bar2'} self._create_aggregate_with_host(name='fake1', metadata=aggr_meta, hosts=['host1']) filter_properties = {'context': self.context, 'request_spec': { 'image': { 'properties': {'np.foo': 'bar', 'foo2': 'bar3'}}}} host = fakes.FakeHostState('host1', 'compute', {}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) def test_metrics_filter_pass(self): self.flags(weight_setting=['foo=1', 'bar=2'], group='metrics') metrics = dict(foo=1, bar=2) host = fakes.FakeHostState('host1', 'node1', attribute_dict={'metrics': metrics}) filt_cls = self.class_map['MetricsFilter']() self.assertTrue(filt_cls.host_passes(host, None)) def test_metrics_filter_missing_metrics(self): self.flags(weight_setting=['foo=1', 'bar=2'], group='metrics') metrics = dict(foo=1) host = fakes.FakeHostState('host1', 'node1', attribute_dict={'metrics': metrics}) filt_cls = self.class_map['MetricsFilter']() self.assertFalse(filt_cls.host_passes(host, None)) nova-2014.1/nova/tests/scheduler/test_scheduler_utils.py0000664000175400017540000002150212323721477024604 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Scheduler Utils """ import mock import mox from oslo.config import cfg from nova.compute import flavors from nova.compute import utils as compute_utils from nova.conductor import api as conductor_api from nova import db from nova import notifications from nova import rpc from nova.scheduler import utils as scheduler_utils from nova import test from nova.tests import fake_instance CONF = cfg.CONF class SchedulerUtilsTestCase(test.NoDBTestCase): """Test case for scheduler utils methods.""" def setUp(self): super(SchedulerUtilsTestCase, self).setUp() self.context = 'fake-context' def test_build_request_spec_without_image(self): image = None instance = {'uuid': 'fake-uuid'} instance_type = {'flavorid': 'fake-id'} self.mox.StubOutWithMock(flavors, 'extract_flavor') self.mox.StubOutWithMock(db, 'flavor_extra_specs_get') flavors.extract_flavor(mox.IgnoreArg()).AndReturn(instance_type) db.flavor_extra_specs_get(self.context, mox.IgnoreArg()).AndReturn([]) self.mox.ReplayAll() request_spec = scheduler_utils.build_request_spec(self.context, image, [instance]) self.assertEqual({}, request_spec['image']) @mock.patch.object(flavors, 'extract_flavor') @mock.patch.object(db, 'flavor_extra_specs_get') def test_build_request_spec_with_object(self, flavor_extra_specs_get, extract_flavor): instance_type = {'flavorid': 'fake-id'} instance = fake_instance.fake_instance_obj(self.context) extract_flavor.return_value = instance_type flavor_extra_specs_get.return_value = [] request_spec = scheduler_utils.build_request_spec(self.context, None, [instance]) self.assertIsInstance(request_spec['instance_properties'], dict) def _test_set_vm_state_and_notify(self, request_spec, expected_uuids): updates = dict(vm_state='fake-vm-state') service = 'fake-service' method = 'fake-method' exc_info = 'exc_info' self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(notifications, 'send_update') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(rpc, 'get_notifier') notifier = self.mox.CreateMockAnything() rpc.get_notifier('conductor', CONF.host).AndReturn(notifier) rpc.get_notifier(service).AndReturn(notifier) old_ref = 'old_ref' new_ref = 'new_ref' for uuid in expected_uuids: db.instance_update_and_get_original( self.context, uuid, updates).AndReturn((old_ref, new_ref)) notifications.send_update(self.context, old_ref, new_ref, service=service) compute_utils.add_instance_fault_from_exc( self.context, mox.IsA(conductor_api.LocalAPI), new_ref, exc_info, mox.IsA(tuple)) payload = dict(request_spec=request_spec, instance_properties=request_spec.get( 'instance_properties', {}), instance_id=uuid, state='fake-vm-state', method=method, reason=exc_info) event_type = '%s.%s' % (service, method) notifier.error(self.context, event_type, payload) self.mox.ReplayAll() scheduler_utils.set_vm_state_and_notify(self.context, service, method, updates, exc_info, request_spec, db) def test_set_vm_state_and_notify_rs_uuids(self): expected_uuids = ['1', '2', '3'] request_spec = dict(instance_uuids=expected_uuids) self._test_set_vm_state_and_notify(request_spec, expected_uuids) def test_set_vm_state_and_notify_uuid_from_instance_props(self): expected_uuids = ['fake-uuid'] request_spec = dict(instance_properties=dict(uuid='fake-uuid')) self._test_set_vm_state_and_notify(request_spec, expected_uuids) def _test_populate_filter_props(self, host_state_obj=True, with_retry=True, force_hosts=None, force_nodes=None): if force_hosts is None: force_hosts = [] if force_nodes is None: force_nodes = [] if with_retry: if not force_hosts and not force_nodes: filter_properties = dict(retry=dict(hosts=[])) else: filter_properties = dict(force_hosts=force_hosts, force_nodes=force_nodes) else: filter_properties = dict() if host_state_obj: class host_state(object): host = 'fake-host' nodename = 'fake-node' limits = 'fake-limits' else: host_state = dict(host='fake-host', nodename='fake-node', limits='fake-limits') scheduler_utils.populate_filter_properties(filter_properties, host_state) if with_retry and not force_hosts and not force_nodes: # So we can check for 2 hosts scheduler_utils.populate_filter_properties(filter_properties, host_state) if force_hosts: expected_limits = None else: expected_limits = 'fake-limits' self.assertEqual(expected_limits, filter_properties.get('limits')) if with_retry and not force_hosts and not force_nodes: self.assertEqual([['fake-host', 'fake-node'], ['fake-host', 'fake-node']], filter_properties['retry']['hosts']) else: self.assertNotIn('retry', filter_properties) def test_populate_filter_props(self): self._test_populate_filter_props() def test_populate_filter_props_host_dict(self): self._test_populate_filter_props(host_state_obj=False) def test_populate_filter_props_no_retry(self): self._test_populate_filter_props(with_retry=False) def test_populate_filter_props_force_hosts_no_retry(self): self._test_populate_filter_props(force_hosts=['force-host']) def test_populate_filter_props_force_nodes_no_retry(self): self._test_populate_filter_props(force_nodes=['force-node']) def _check_parse_options(self, opts, sep, converter, expected): good = scheduler_utils.parse_options(opts, sep=sep, converter=converter) for item in expected: self.assertIn(item, good) def test_parse_options(self): # check normal self._check_parse_options(['foo=1', 'bar=-2.1'], '=', float, [('foo', 1.0), ('bar', -2.1)]) # check convert error self._check_parse_options(['foo=a1', 'bar=-2.1'], '=', float, [('bar', -2.1)]) # check separator missing self._check_parse_options(['foo', 'bar=-2.1'], '=', float, [('bar', -2.1)]) # check key missing self._check_parse_options(['=5', 'bar=-2.1'], '=', float, [('bar', -2.1)]) nova-2014.1/nova/tests/scheduler/test_filters.py0000664000175400017540000002101012323721477023050 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Scheduler Host Filters. """ import inspect import sys from nova import filters from nova import loadables from nova import test class Filter1(filters.BaseFilter): """Test Filter class #1.""" pass class Filter2(filters.BaseFilter): """Test Filter class #2.""" pass class FiltersTestCase(test.NoDBTestCase): def test_filter_all(self): filter_obj_list = ['obj1', 'obj2', 'obj3'] filter_properties = 'fake_filter_properties' base_filter = filters.BaseFilter() self.mox.StubOutWithMock(base_filter, '_filter_one') base_filter._filter_one('obj1', filter_properties).AndReturn(True) base_filter._filter_one('obj2', filter_properties).AndReturn(False) base_filter._filter_one('obj3', filter_properties).AndReturn(True) self.mox.ReplayAll() result = base_filter.filter_all(filter_obj_list, filter_properties) self.assertTrue(inspect.isgenerator(result)) self.assertEqual(['obj1', 'obj3'], list(result)) def test_filter_all_recursive_yields(self): # Test filter_all() allows generators from previous filter_all()s. # filter_all() yields results. We want to make sure that we can # call filter_all() with generators returned from previous calls # to filter_all(). filter_obj_list = ['obj1', 'obj2', 'obj3'] filter_properties = 'fake_filter_properties' base_filter = filters.BaseFilter() self.mox.StubOutWithMock(base_filter, '_filter_one') total_iterations = 200 # The order that _filter_one is going to get called gets # confusing because we will be recursively yielding things.. # We are going to simulate the first call to filter_all() # returning False for 'obj2'. So, 'obj1' will get yielded # 'total_iterations' number of times before the first filter_all() # call gets to processing 'obj2'. We then return 'False' for it. # After that, 'obj3' gets yielded 'total_iterations' number of # times. for x in xrange(total_iterations): base_filter._filter_one('obj1', filter_properties).AndReturn(True) base_filter._filter_one('obj2', filter_properties).AndReturn(False) for x in xrange(total_iterations): base_filter._filter_one('obj3', filter_properties).AndReturn(True) self.mox.ReplayAll() objs = iter(filter_obj_list) for x in xrange(total_iterations): # Pass in generators returned from previous calls. objs = base_filter.filter_all(objs, filter_properties) self.assertTrue(inspect.isgenerator(objs)) self.assertEqual(['obj1', 'obj3'], list(objs)) def test_get_filtered_objects(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_objs_second = ['second', 'filter2', 'objects2'] filter_objs_last = ['last', 'filter3', 'objects3'] filter_properties = 'fake_filter_properties' def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt1_mock, 'filter_all') self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt2_mock, 'filter_all') Filter1().AndReturn(filt1_mock) filt1_mock.run_filter_for_index(0).AndReturn(True) filt1_mock.filter_all(filter_objs_initial, filter_properties).AndReturn(filter_objs_second) Filter2().AndReturn(filt2_mock) filt2_mock.run_filter_for_index(0).AndReturn(True) filt2_mock.filter_all(filter_objs_second, filter_properties).AndReturn(filter_objs_last) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_classes = [Filter1, Filter2] result = filter_handler.get_filtered_objects(filter_classes, filter_objs_initial, filter_properties) self.assertEqual(filter_objs_last, result) def test_get_filtered_objects_for_index(self): """Test that we don't call a filter when its run_filter_for_index() method returns false """ filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_objs_second = ['second', 'filter2', 'objects2'] filter_properties = 'fake_filter_properties' def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt1_mock, 'filter_all') self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt2_mock, 'filter_all') Filter1().AndReturn(filt1_mock) filt1_mock.run_filter_for_index(0).AndReturn(True) filt1_mock.filter_all(filter_objs_initial, filter_properties).AndReturn(filter_objs_second) Filter2().AndReturn(filt2_mock) # return false so filter_all will not be called filt2_mock.run_filter_for_index(0).AndReturn(False) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_classes = [Filter1, Filter2] result = filter_handler.get_filtered_objects(filter_classes, filter_objs_initial, filter_properties) def test_get_filtered_objects_none_response(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_properties = 'fake_filter_properties' def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt1_mock, 'filter_all') # Shouldn't be called. self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'filter_all') Filter1().AndReturn(filt1_mock) filt1_mock.run_filter_for_index(0).AndReturn(True) filt1_mock.filter_all(filter_objs_initial, filter_properties).AndReturn(None) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_classes = [Filter1, Filter2] result = filter_handler.get_filtered_objects(filter_classes, filter_objs_initial, filter_properties) self.assertIsNone(result) nova-2014.1/nova/tests/scheduler/fakes.py0000664000175400017540000002633612323721477021452 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Fakes For Scheduler tests. """ import mox from nova.compute import vm_states from nova import db from nova.openstack.common import jsonutils from nova.scheduler import filter_scheduler from nova.scheduler import host_manager COMPUTE_NODES = [ dict(id=1, local_gb=1024, memory_mb=1024, vcpus=1, disk_available_least=None, free_ram_mb=512, vcpus_used=1, free_disk_gb=512, local_gb_used=0, updated_at=None, service=dict(host='host1', disabled=False), hypervisor_hostname='node1', host_ip='127.0.0.1', hypervisor_version=0), dict(id=2, local_gb=2048, memory_mb=2048, vcpus=2, disk_available_least=1024, free_ram_mb=1024, vcpus_used=2, free_disk_gb=1024, local_gb_used=0, updated_at=None, service=dict(host='host2', disabled=True), hypervisor_hostname='node2', host_ip='127.0.0.1', hypervisor_version=0), dict(id=3, local_gb=4096, memory_mb=4096, vcpus=4, disk_available_least=3333, free_ram_mb=3072, vcpus_used=1, free_disk_gb=3072, local_gb_used=0, updated_at=None, service=dict(host='host3', disabled=False), hypervisor_hostname='node3', host_ip='127.0.0.1', hypervisor_version=0), dict(id=4, local_gb=8192, memory_mb=8192, vcpus=8, disk_available_least=8192, free_ram_mb=8192, vcpus_used=0, free_disk_gb=8888, local_gb_used=0, updated_at=None, service=dict(host='host4', disabled=False), hypervisor_hostname='node4', host_ip='127.0.0.1', hypervisor_version=0), # Broken entry dict(id=5, local_gb=1024, memory_mb=1024, vcpus=1, service=None), ] COMPUTE_NODES_METRICS = [ dict(id=1, local_gb=1024, memory_mb=1024, vcpus=1, disk_available_least=512, free_ram_mb=512, vcpus_used=1, free_disk_gb=512, local_gb_used=0, updated_at=None, service=dict(host='host1', disabled=False), hypervisor_hostname='node1', host_ip='127.0.0.1', hypervisor_version=0, metrics=jsonutils.dumps([{'name': 'foo', 'value': 512, 'timestamp': None, 'source': 'host1' }, {'name': 'bar', 'value': 1.0, 'timestamp': None, 'source': 'host1' }, ])), dict(id=2, local_gb=2048, memory_mb=2048, vcpus=2, disk_available_least=1024, free_ram_mb=1024, vcpus_used=2, free_disk_gb=1024, local_gb_used=0, updated_at=None, service=dict(host='host2', disabled=True), hypervisor_hostname='node2', host_ip='127.0.0.1', hypervisor_version=0, metrics=jsonutils.dumps([{'name': 'foo', 'value': 1024, 'timestamp': None, 'source': 'host2' }, {'name': 'bar', 'value': 2.0, 'timestamp': None, 'source': 'host2' }, ])), dict(id=3, local_gb=4096, memory_mb=4096, vcpus=4, disk_available_least=3072, free_ram_mb=3072, vcpus_used=1, free_disk_gb=3072, local_gb_used=0, updated_at=None, service=dict(host='host3', disabled=False), hypervisor_hostname='node3', host_ip='127.0.0.1', hypervisor_version=0, metrics=jsonutils.dumps([{'name': 'foo', 'value': 3072, 'timestamp': None, 'source': 'host3' }, {'name': 'bar', 'value': 1.0, 'timestamp': None, 'source': 'host3' }, ])), dict(id=4, local_gb=8192, memory_mb=8192, vcpus=8, disk_available_least=8192, free_ram_mb=8192, vcpus_used=0, free_disk_gb=8192, local_gb_used=0, updated_at=None, service=dict(host='host4', disabled=False), hypervisor_hostname='node4', host_ip='127.0.0.1', hypervisor_version=0, metrics=jsonutils.dumps([{'name': 'foo', 'value': 8192, 'timestamp': None, 'source': 'host4' }, {'name': 'bar', 'value': 0, 'timestamp': None, 'source': 'host4' }, ])), dict(id=5, local_gb=768, memory_mb=768, vcpus=8, disk_available_least=768, free_ram_mb=768, vcpus_used=0, free_disk_gb=768, local_gb_used=0, updated_at=None, service=dict(host='host5', disabled=False), hypervisor_hostname='node5', host_ip='127.0.0.1', hypervisor_version=0, metrics=jsonutils.dumps([{'name': 'foo', 'value': 768, 'timestamp': None, 'source': 'host5' }, {'name': 'bar', 'value': 0, 'timestamp': None, 'source': 'host5' }, {'name': 'zot', 'value': 1, 'timestamp': None, 'source': 'host5' }, ])), dict(id=6, local_gb=2048, memory_mb=2048, vcpus=8, disk_available_least=2048, free_ram_mb=2048, vcpus_used=0, free_disk_gb=2048, local_gb_used=0, updated_at=None, service=dict(host='host6', disabled=False), hypervisor_hostname='node6', host_ip='127.0.0.1', hypervisor_version=0, metrics=jsonutils.dumps([{'name': 'foo', 'value': 2048, 'timestamp': None, 'source': 'host6' }, {'name': 'bar', 'value': 0, 'timestamp': None, 'source': 'host6' }, {'name': 'zot', 'value': 2, 'timestamp': None, 'source': 'host6' }, ])), ] INSTANCES = [ dict(root_gb=512, ephemeral_gb=0, memory_mb=512, vcpus=1, host='host1', node='node1'), dict(root_gb=512, ephemeral_gb=0, memory_mb=512, vcpus=1, host='host2', node='node2'), dict(root_gb=512, ephemeral_gb=0, memory_mb=512, vcpus=1, host='host2', node='node2'), dict(root_gb=1024, ephemeral_gb=0, memory_mb=1024, vcpus=1, host='host3', node='node3'), # Broken host dict(root_gb=1024, ephemeral_gb=0, memory_mb=1024, vcpus=1, host=None), # No matching host dict(root_gb=1024, ephemeral_gb=0, memory_mb=1024, vcpus=1, host='host5', node='node5'), ] class FakeFilterScheduler(filter_scheduler.FilterScheduler): def __init__(self, *args, **kwargs): super(FakeFilterScheduler, self).__init__(*args, **kwargs) self.host_manager = host_manager.HostManager() class FakeHostManager(host_manager.HostManager): """host1: free_ram_mb=1024-512-512=0, free_disk_gb=1024-512-512=0 host2: free_ram_mb=2048-512=1536 free_disk_gb=2048-512=1536 host3: free_ram_mb=4096-1024=3072 free_disk_gb=4096-1024=3072 host4: free_ram_mb=8192 free_disk_gb=8192 """ def __init__(self): super(FakeHostManager, self).__init__() self.service_states = { 'host1': { 'compute': {'host_memory_free': 1073741824}, }, 'host2': { 'compute': {'host_memory_free': 2147483648}, }, 'host3': { 'compute': {'host_memory_free': 3221225472}, }, 'host4': { 'compute': {'host_memory_free': 999999999}, }, } class FakeHostState(host_manager.HostState): def __init__(self, host, node, attribute_dict): super(FakeHostState, self).__init__(host, node) for (key, val) in attribute_dict.iteritems(): setattr(self, key, val) class FakeInstance(object): def __init__(self, context=None, params=None): """Create a test instance. Returns uuid.""" self.context = context i = self._create_fake_instance(params=params) self.uuid = i['uuid'] def _create_fake_instance(self, params=None): """Create a test instance.""" if not params: params = {} inst = {} inst['vm_state'] = vm_states.ACTIVE inst['image_ref'] = 1 inst['reservation_id'] = 'r-fakeres' inst['user_id'] = 'fake' inst['project_id'] = 'fake' inst['instance_type_id'] = 2 inst['ami_launch_index'] = 0 inst.update(params) return db.instance_create(self.context, inst) class FakeComputeAPI(object): def create_db_entry_for_new_instance(self, *args, **kwargs): pass def mox_host_manager_db_calls(mock, context): mock.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(mox.IgnoreArg()).AndReturn(COMPUTE_NODES) nova-2014.1/nova/tests/scheduler/test_rpcapi.py0000664000175400017540000000610712323721477022670 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """ Unit Tests for nova.scheduler.rpcapi """ import mox from oslo.config import cfg from nova import context from nova.scheduler import rpcapi as scheduler_rpcapi from nova import test CONF = cfg.CONF class SchedulerRpcAPITestCase(test.NoDBTestCase): def _test_scheduler_api(self, method, rpc_method, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = scheduler_rpcapi.SchedulerAPI() self.assertIsNotNone(rpcapi.client) self.assertEqual(rpcapi.client.target.topic, CONF.scheduler_topic) expected_retval = 'foo' if rpc_method == 'call' else None expected_version = kwargs.pop('version', None) expected_fanout = kwargs.pop('fanout', None) expected_kwargs = kwargs.copy() self.mox.StubOutWithMock(rpcapi, 'client') rpcapi.client.can_send_version( mox.IsA(str)).MultipleTimes().AndReturn(True) prepare_kwargs = {} if expected_fanout: prepare_kwargs['fanout'] = True if expected_version: prepare_kwargs['version'] = expected_version rpcapi.client.prepare(**prepare_kwargs).AndReturn(rpcapi.client) rpc_method = getattr(rpcapi.client, rpc_method) rpc_method(ctxt, method, **expected_kwargs).AndReturn('foo') self.mox.ReplayAll() # NOTE(markmc): MultipleTimes() is OnceOrMore() not ZeroOrMore() rpcapi.client.can_send_version('I fool you mox') retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, expected_retval) def test_run_instance(self): self._test_scheduler_api('run_instance', rpc_method='cast', request_spec='fake_request_spec', admin_password='pw', injected_files='fake_injected_files', requested_networks='fake_requested_networks', is_first_time=True, filter_properties='fake_filter_properties', legacy_bdm_in_spec=False) def test_prep_resize(self): self._test_scheduler_api('prep_resize', rpc_method='cast', instance='fake_instance', instance_type='fake_type', image='fake_image', request_spec='fake_request_spec', filter_properties='fake_props', reservations=list('fake_res')) def test_select_destinations(self): self._test_scheduler_api('select_destinations', rpc_method='call', request_spec='fake_request_spec', filter_properties='fake_prop') nova-2014.1/nova/tests/scheduler/test_chance_scheduler.py0000664000175400017540000001700712323721477024672 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Chance Scheduler. """ import random import mox from nova.compute import rpcapi as compute_rpcapi from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import api as conductor_api from nova import context from nova import db from nova import exception from nova.scheduler import chance from nova.scheduler import driver from nova.tests.scheduler import test_scheduler class ChanceSchedulerTestCase(test_scheduler.SchedulerTestCase): """Test case for Chance Scheduler.""" driver_cls = chance.ChanceScheduler def test_filter_hosts_avoid(self): """Test to make sure _filter_hosts() filters original hosts if avoid_original_host is True. """ hosts = ['host1', 'host2', 'host3'] request_spec = dict(instance_properties=dict(host='host2')) filter_properties = {'ignore_hosts': ['host2']} filtered = self.driver._filter_hosts(request_spec, hosts, filter_properties=filter_properties) self.assertEqual(filtered, ['host1', 'host3']) def test_filter_hosts_no_avoid(self): """Test to make sure _filter_hosts() does not filter original hosts if avoid_original_host is False. """ hosts = ['host1', 'host2', 'host3'] request_spec = dict(instance_properties=dict(host='host2')) filter_properties = {'ignore_hosts': []} filtered = self.driver._filter_hosts(request_spec, hosts, filter_properties=filter_properties) self.assertEqual(filtered, hosts) def test_basic_schedule_run_instance(self): ctxt = context.RequestContext('fake', 'fake', False) ctxt_elevated = 'fake-context-elevated' instance_opts = {'fake_opt1': 'meow', 'launch_index': -1} instance1 = {'uuid': 'fake-uuid1'} instance2 = {'uuid': 'fake-uuid2'} request_spec = {'instance_uuids': ['fake-uuid1', 'fake-uuid2'], 'instance_properties': instance_opts} def inc_launch_index(*args): request_spec['instance_properties']['launch_index'] = ( request_spec['instance_properties']['launch_index'] + 1) self.mox.StubOutWithMock(ctxt, 'elevated') self.mox.StubOutWithMock(self.driver, 'hosts_up') self.mox.StubOutWithMock(random, 'choice') self.mox.StubOutWithMock(driver, 'instance_update_db') self.mox.StubOutWithMock(compute_rpcapi.ComputeAPI, 'run_instance') ctxt.elevated().AndReturn(ctxt_elevated) # instance 1 hosts_full = ['host1', 'host2', 'host3', 'host4'] self.driver.hosts_up(ctxt_elevated, 'compute').AndReturn(hosts_full) random.choice(hosts_full).AndReturn('host3') driver.instance_update_db(ctxt, instance1['uuid']).WithSideEffects( inc_launch_index).AndReturn(instance1) compute_rpcapi.ComputeAPI.run_instance(ctxt, host='host3', instance=instance1, requested_networks=None, injected_files=None, admin_password=None, is_first_time=None, request_spec=request_spec, filter_properties={}, legacy_bdm_in_spec=False) # instance 2 ctxt.elevated().AndReturn(ctxt_elevated) self.driver.hosts_up(ctxt_elevated, 'compute').AndReturn(hosts_full) random.choice(hosts_full).AndReturn('host1') driver.instance_update_db(ctxt, instance2['uuid']).WithSideEffects( inc_launch_index).AndReturn(instance2) compute_rpcapi.ComputeAPI.run_instance(ctxt, host='host1', instance=instance2, requested_networks=None, injected_files=None, admin_password=None, is_first_time=None, request_spec=request_spec, filter_properties={}, legacy_bdm_in_spec=False) self.mox.ReplayAll() self.driver.schedule_run_instance(ctxt, request_spec, None, None, None, None, {}, False) def test_basic_schedule_run_instance_no_hosts(self): ctxt = context.RequestContext('fake', 'fake', False) ctxt_elevated = 'fake-context-elevated' uuid = 'fake-uuid1' instance_opts = {'fake_opt1': 'meow', 'launch_index': -1} request_spec = {'instance_uuids': [uuid], 'instance_properties': instance_opts} self.mox.StubOutWithMock(ctxt, 'elevated') self.mox.StubOutWithMock(self.driver, 'hosts_up') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') # instance 1 ctxt.elevated().AndReturn(ctxt_elevated) self.driver.hosts_up(ctxt_elevated, 'compute').AndReturn([]) old_ref, new_ref = db.instance_update_and_get_original(ctxt, uuid, {'vm_state': vm_states.ERROR, 'task_state': None}).AndReturn(({}, {})) compute_utils.add_instance_fault_from_exc(ctxt, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.ReplayAll() self.driver.schedule_run_instance( ctxt, request_spec, None, None, None, None, {}, False) def test_select_destinations(self): ctxt = context.RequestContext('fake', 'fake', False) ctxt_elevated = 'fake-context-elevated' request_spec = {'num_instances': 2} self.mox.StubOutWithMock(ctxt, 'elevated') self.mox.StubOutWithMock(self.driver, 'hosts_up') self.mox.StubOutWithMock(random, 'choice') hosts_full = ['host1', 'host2', 'host3', 'host4'] ctxt.elevated().AndReturn(ctxt_elevated) self.driver.hosts_up(ctxt_elevated, 'compute').AndReturn(hosts_full) random.choice(hosts_full).AndReturn('host3') ctxt.elevated().AndReturn(ctxt_elevated) self.driver.hosts_up(ctxt_elevated, 'compute').AndReturn(hosts_full) random.choice(hosts_full).AndReturn('host2') self.mox.ReplayAll() dests = self.driver.select_destinations(ctxt, request_spec, {}) self.assertEqual(2, len(dests)) (host, node) = (dests[0]['host'], dests[0]['nodename']) self.assertEqual('host3', host) self.assertIsNone(node) (host, node) = (dests[1]['host'], dests[1]['nodename']) self.assertEqual('host2', host) self.assertIsNone(node) def test_select_destinations_no_valid_host(self): def _return_no_host(*args, **kwargs): return [] self.mox.StubOutWithMock(self.driver, 'hosts_up') self.driver.hosts_up(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn([1, 2]) self.stubs.Set(self.driver, '_filter_hosts', _return_no_host) self.mox.ReplayAll() request_spec = {'num_instances': 1} self.assertRaises(exception.NoValidHost, self.driver.select_destinations, self.context, request_spec, {}) nova-2014.1/nova/tests/scheduler/test_scheduler.py0000664000175400017540000006073512323721477023377 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Scheduler """ import mock import mox from oslo.config import cfg from oslo import messaging from nova.compute import api as compute_api from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import api as conductor_api from nova.conductor.tasks import live_migrate from nova import context from nova import db from nova import exception from nova.image import glance from nova.objects import instance as instance_obj from nova import rpc from nova.scheduler import driver from nova.scheduler import manager from nova import servicegroup from nova import test from nova.tests import fake_instance from nova.tests import fake_instance_actions from nova.tests.image import fake as fake_image from nova.tests import matchers from nova.tests.scheduler import fakes from nova import utils CONF = cfg.CONF class SchedulerManagerTestCase(test.NoDBTestCase): """Test case for scheduler manager.""" manager_cls = manager.SchedulerManager driver_cls = driver.Scheduler driver_cls_name = 'nova.scheduler.driver.Scheduler' def setUp(self): super(SchedulerManagerTestCase, self).setUp() self.flags(scheduler_driver=self.driver_cls_name) self.stubs.Set(compute_api, 'API', fakes.FakeComputeAPI) self.manager = self.manager_cls() self.context = context.RequestContext('fake_user', 'fake_project') self.topic = 'fake_topic' self.fake_args = (1, 2, 3) self.fake_kwargs = {'cat': 'meow', 'dog': 'woof'} fake_instance_actions.stub_out_action_events(self.stubs) def test_1_correct_init(self): # Correct scheduler driver manager = self.manager self.assertIsInstance(manager.driver, self.driver_cls) def test_show_host_resources(self): host = 'fake_host' compute_node = {'host': host, 'compute_node': [{'vcpus': 4, 'vcpus_used': 2, 'memory_mb': 1024, 'memory_mb_used': 512, 'local_gb': 1024, 'local_gb_used': 512}]} instances = [{'project_id': 'project1', 'vcpus': 1, 'memory_mb': 128, 'root_gb': 128, 'ephemeral_gb': 0}, {'project_id': 'project1', 'vcpus': 2, 'memory_mb': 256, 'root_gb': 384, 'ephemeral_gb': 0}, {'project_id': 'project2', 'vcpus': 2, 'memory_mb': 256, 'root_gb': 256, 'ephemeral_gb': 0}] self.mox.StubOutWithMock(db, 'service_get_by_compute_host') self.mox.StubOutWithMock(db, 'instance_get_all_by_host') db.service_get_by_compute_host(self.context, host).AndReturn( compute_node) db.instance_get_all_by_host(self.context, host).AndReturn(instances) self.mox.ReplayAll() result = self.manager.show_host_resources(self.context, host) expected = {'usage': {'project1': {'memory_mb': 384, 'vcpus': 3, 'root_gb': 512, 'ephemeral_gb': 0}, 'project2': {'memory_mb': 256, 'vcpus': 2, 'root_gb': 256, 'ephemeral_gb': 0}}, 'resource': {'vcpus': 4, 'vcpus_used': 2, 'local_gb': 1024, 'local_gb_used': 512, 'memory_mb': 1024, 'memory_mb_used': 512}} self.assertThat(result, matchers.DictMatches(expected)) def _mox_schedule_method_helper(self, method_name): # Make sure the method exists that we're going to test call def stub_method(*args, **kwargs): pass setattr(self.manager.driver, method_name, stub_method) self.mox.StubOutWithMock(self.manager.driver, method_name) def test_run_instance_exception_puts_instance_in_error_state(self): fake_instance_uuid = 'fake-instance-id' inst = {"vm_state": "", "task_state": ""} self._mox_schedule_method_helper('schedule_run_instance') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') request_spec = {'instance_properties': inst, 'instance_uuids': [fake_instance_uuid]} self.manager.driver.schedule_run_instance(self.context, request_spec, None, None, None, None, {}, False).AndRaise( exception.NoValidHost(reason="")) old, new_ref = db.instance_update_and_get_original(self.context, fake_instance_uuid, {"vm_state": vm_states.ERROR, "task_state": None}).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.ReplayAll() self.manager.run_instance(self.context, request_spec, None, None, None, None, {}, False) def test_live_migration_schedule_novalidhost(self): inst = {"uuid": "fake-instance-id", "vm_state": vm_states.ACTIVE, "task_state": task_states.MIGRATING, } dest = None block_migration = False disk_over_commit = False self.mox.StubOutWithMock(self.manager, '_schedule_live_migration') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.manager._schedule_live_migration(self.context, inst, dest, block_migration, disk_over_commit).AndRaise( exception.NoValidHost(reason="")) db.instance_update_and_get_original(self.context, inst["uuid"], {"vm_state": inst['vm_state'], "task_state": None, "expected_task_state": task_states.MIGRATING, }).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), inst, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.ReplayAll() self.manager = utils.ExceptionHelper(self.manager) self.assertRaises(exception.NoValidHost, self.manager.live_migration, self.context, inst, dest, block_migration, disk_over_commit) def test_live_migration_compute_service_notavailable(self): inst = {"uuid": "fake-instance-id", "vm_state": vm_states.ACTIVE, "task_state": task_states.MIGRATING, } dest = 'fake_host' block_migration = False disk_over_commit = False self.mox.StubOutWithMock(self.manager, '_schedule_live_migration') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.manager._schedule_live_migration(self.context, inst, dest, block_migration, disk_over_commit).AndRaise( exception.ComputeServiceUnavailable(host="src")) db.instance_update_and_get_original(self.context, inst["uuid"], {"vm_state": inst['vm_state'], "task_state": None, "expected_task_state": task_states.MIGRATING, }).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), inst, mox.IsA(exception.ComputeServiceUnavailable), mox.IgnoreArg()) self.mox.ReplayAll() self.manager = utils.ExceptionHelper(self.manager) self.assertRaises(exception.ComputeServiceUnavailable, self.manager.live_migration, self.context, inst, dest, block_migration, disk_over_commit) def test_live_migrate(self): instance = {'host': 'h'} self.mox.StubOutClassWithMocks(live_migrate, "LiveMigrationTask") task = live_migrate.LiveMigrationTask(self.context, instance, "dest", "bm", "doc") task.execute() self.mox.ReplayAll() self.manager.live_migration(self.context, instance, "dest", "bm", "doc") def test_live_migration_set_vmstate_error(self): inst = {"uuid": "fake-instance-id", "vm_state": vm_states.ACTIVE, } dest = 'fake_host' block_migration = False disk_over_commit = False self.mox.StubOutWithMock(self.manager, '_schedule_live_migration') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.manager._schedule_live_migration(self.context, inst, dest, block_migration, disk_over_commit).AndRaise( ValueError) db.instance_update_and_get_original(self.context, inst["uuid"], {"vm_state": vm_states.ERROR, }).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), inst, mox.IsA(ValueError), mox.IgnoreArg()) self.mox.ReplayAll() self.manager = utils.ExceptionHelper(self.manager) self.assertRaises(ValueError, self.manager.live_migration, self.context, inst, dest, block_migration, disk_over_commit) def test_prep_resize_no_valid_host_back_in_active_state(self): fake_instance_uuid = 'fake-instance-id' fake_instance = {'uuid': fake_instance_uuid} inst = {"vm_state": "", "task_state": ""} self._mox_schedule_method_helper('select_destinations') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') request_spec = {'instance_type': 'fake_type', 'instance_uuids': [fake_instance_uuid], 'instance_properties': {'uuid': fake_instance_uuid}} kwargs = { 'context': self.context, 'image': 'fake_image', 'request_spec': request_spec, 'filter_properties': 'fake_props', 'instance': fake_instance, 'instance_type': 'fake_type', 'reservations': list('fake_res'), } self.manager.driver.select_destinations( self.context, request_spec, 'fake_props').AndRaise( exception.NoValidHost(reason="")) old_ref, new_ref = db.instance_update_and_get_original(self.context, fake_instance_uuid, {"vm_state": vm_states.ACTIVE, "task_state": None}).AndReturn( (inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.ReplayAll() self.manager.prep_resize(**kwargs) def test_prep_resize_no_valid_host_back_in_shutoff_state(self): fake_instance_uuid = 'fake-instance-id' fake_instance = {'uuid': fake_instance_uuid, "vm_state": "stopped"} inst = {"vm_state": "stopped", "task_state": ""} self._mox_schedule_method_helper('select_destinations') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') request_spec = {'instance_type': 'fake_type', 'instance_uuids': [fake_instance_uuid], 'instance_properties': {'uuid': fake_instance_uuid}} kwargs = { 'context': self.context, 'image': 'fake_image', 'request_spec': request_spec, 'filter_properties': 'fake_props', 'instance': fake_instance, 'instance_type': 'fake_type', 'reservations': list('fake_res'), } self.manager.driver.select_destinations( self.context, request_spec, 'fake_props').AndRaise( exception.NoValidHost(reason="")) old_ref, new_ref = db.instance_update_and_get_original(self.context, fake_instance_uuid, {"vm_state": vm_states.STOPPED, "task_state": None}).AndReturn( (inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(exception.NoValidHost), mox.IgnoreArg()) self.mox.ReplayAll() self.manager.prep_resize(**kwargs) def test_prep_resize_exception_host_in_error_state_and_raise(self): fake_instance_uuid = 'fake-instance-id' fake_instance = {'uuid': fake_instance_uuid} self._mox_schedule_method_helper('select_destinations') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') request_spec = { 'instance_properties': {'uuid': fake_instance_uuid}, 'instance_uuids': [fake_instance_uuid] } kwargs = { 'context': self.context, 'image': 'fake_image', 'request_spec': request_spec, 'filter_properties': 'fake_props', 'instance': fake_instance, 'instance_type': 'fake_type', 'reservations': list('fake_res'), } self.manager.driver.select_destinations( self.context, request_spec, 'fake_props').AndRaise( test.TestingException('something happened')) inst = { "vm_state": "", "task_state": "", } old_ref, new_ref = db.instance_update_and_get_original(self.context, fake_instance_uuid, {"vm_state": vm_states.ERROR, "task_state": None}).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc(self.context, mox.IsA(conductor_api.LocalAPI), new_ref, mox.IsA(test.TestingException), mox.IgnoreArg()) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.manager.prep_resize, **kwargs) def test_set_vm_state_and_notify_adds_instance_fault(self): request = {'instance_properties': {'uuid': 'fake-uuid'}} updates = {'vm_state': 'foo'} fake_inst = {'uuid': 'fake-uuid'} self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(db, 'instance_fault_create') self.mox.StubOutWithMock(rpc, 'get_notifier') notifier = self.mox.CreateMockAnything() rpc.get_notifier('conductor', CONF.host).AndReturn(notifier) rpc.get_notifier('scheduler').AndReturn(notifier) db.instance_update_and_get_original(self.context, 'fake-uuid', updates).AndReturn((None, fake_inst)) db.instance_fault_create(self.context, mox.IgnoreArg()) notifier.error(self.context, 'scheduler.foo', mox.IgnoreArg()) self.mox.ReplayAll() self.manager._set_vm_state_and_notify('foo', {'vm_state': 'foo'}, self.context, None, request) def test_select_hosts_throws_rpc_clientexception(self): self.mox.StubOutWithMock(self.manager.driver, 'select_destinations') self.manager.driver.select_destinations(self.context, {}, {}).AndRaise( exception.NoValidHost(reason="")) self.mox.ReplayAll() self.assertRaises(messaging.ExpectedException, self.manager.select_hosts, self.context, {}, {}) def test_prep_resize_post_populates_retry(self): self.manager.driver = fakes.FakeFilterScheduler() image = 'image' instance_uuid = 'fake-instance-id' instance = fake_instance.fake_db_instance(uuid=instance_uuid) instance_properties = {'project_id': 'fake', 'os_type': 'Linux'} instance_type = "m1.tiny" request_spec = {'instance_properties': instance_properties, 'instance_type': instance_type, 'instance_uuids': [instance_uuid]} retry = {'hosts': [], 'num_attempts': 1} filter_properties = {'retry': retry} reservations = None hosts = [dict(host='host', nodename='node', limits={})] self._mox_schedule_method_helper('select_destinations') self.manager.driver.select_destinations( self.context, request_spec, filter_properties).AndReturn(hosts) self.mox.StubOutWithMock(self.manager.compute_rpcapi, 'prep_resize') self.manager.compute_rpcapi.prep_resize(self.context, image, mox.IsA(instance_obj.Instance), instance_type, 'host', reservations, request_spec=request_spec, filter_properties=filter_properties, node='node') self.mox.ReplayAll() self.manager.prep_resize(self.context, image, request_spec, filter_properties, instance, instance_type, reservations) self.assertEqual([['host', 'node']], filter_properties['retry']['hosts']) class SchedulerTestCase(test.NoDBTestCase): """Test case for base scheduler driver class.""" # So we can subclass this test and re-use tests if we need. driver_cls = driver.Scheduler def setUp(self): super(SchedulerTestCase, self).setUp() self.stubs.Set(compute_api, 'API', fakes.FakeComputeAPI) def fake_show(meh, context, id): if id: return {'id': id, 'min_disk': None, 'min_ram': None, 'name': 'fake_name', 'status': 'active', 'properties': {'kernel_id': 'fake_kernel_id', 'ramdisk_id': 'fake_ramdisk_id', 'something_else': 'meow'}} else: raise exception.ImageNotFound(image_id=id) fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, 'show', fake_show) self.image_service = glance.get_default_image_service() self.driver = self.driver_cls() self.context = context.RequestContext('fake_user', 'fake_project') self.topic = 'fake_topic' self.servicegroup_api = servicegroup.API() def test_hosts_up(self): service1 = {'host': 'host1'} service2 = {'host': 'host2'} services = [service1, service2] self.mox.StubOutWithMock(db, 'service_get_all_by_topic') self.mox.StubOutWithMock(servicegroup.API, 'service_is_up') db.service_get_all_by_topic(self.context, self.topic).AndReturn(services) self.servicegroup_api.service_is_up(service1).AndReturn(False) self.servicegroup_api.service_is_up(service2).AndReturn(True) self.mox.ReplayAll() result = self.driver.hosts_up(self.context, self.topic) self.assertEqual(result, ['host2']) def test_handle_schedule_error_adds_instance_fault(self): instance = {'uuid': 'fake-uuid'} self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(db, 'instance_fault_create') db.instance_update_and_get_original(self.context, instance['uuid'], mox.IgnoreArg()).AndReturn( (None, instance)) db.instance_fault_create(self.context, mox.IgnoreArg()) self.mox.StubOutWithMock(rpc, 'get_notifier') notifier = self.mox.CreateMockAnything() rpc.get_notifier('conductor', CONF.host).AndReturn(notifier) rpc.get_notifier('scheduler').AndReturn(notifier) notifier.error(self.context, 'scheduler.run_instance', mox.IgnoreArg()) self.mox.ReplayAll() driver.handle_schedule_error(self.context, exception.NoValidHost('test'), instance['uuid'], {}) class SchedulerDriverBaseTestCase(SchedulerTestCase): """Test cases for base scheduler driver class methods that will fail if the driver is changed. """ def test_unimplemented_schedule_run_instance(self): fake_request_spec = {'instance_properties': {'uuid': 'uuid'}} self.assertRaises(NotImplementedError, self.driver.schedule_run_instance, self.context, fake_request_spec, None, None, None, None, None, False) def test_unimplemented_select_destinations(self): self.assertRaises(NotImplementedError, self.driver.select_destinations, self.context, {}, {}) class SchedulerInstanceGroupData(test.TestCase): driver_cls = driver.Scheduler def setUp(self): super(SchedulerInstanceGroupData, self).setUp() self.user_id = 'fake_user' self.project_id = 'fake_project' self.context = context.RequestContext(self.user_id, self.project_id) self.driver = self.driver_cls() def _get_default_values(self): return {'name': 'fake_name', 'user_id': self.user_id, 'project_id': self.project_id} def _create_instance_group(self, context, values, policies=None, metadata=None, members=None): return db.instance_group_create(context, values, policies=policies, metadata=metadata, members=members) class SchedulerV3PassthroughTestCase(test.TestCase): def setUp(self): super(SchedulerV3PassthroughTestCase, self).setUp() self.manager = manager.SchedulerManager() self.proxy = manager._SchedulerManagerV3Proxy(self.manager) def test_select_destination(self): with mock.patch.object(self.manager, 'select_destinations' ) as select_destinations: self.proxy.select_destinations(None, None, None) select_destinations.assert_called_once() def test_run_instance(self): with mock.patch.object(self.manager, 'run_instance' ) as run_instance: self.proxy.run_instance(None, None, None, None, None, None, None, None) run_instance.assert_called_once() def test_prep_resize(self): with mock.patch.object(self.manager, 'prep_resize' ) as prep_resize: self.proxy.prep_resize(None, None, None, None, None, None, None) prep_resize.assert_called_once() nova-2014.1/nova/tests/scheduler/test_scheduler_options.py0000664000175400017540000001216312323721477025142 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For PickledScheduler. """ import datetime import StringIO from nova.openstack.common import jsonutils from nova.scheduler import scheduler_options from nova import test class FakeSchedulerOptions(scheduler_options.SchedulerOptions): def __init__(self, last_checked, now, file_old, file_now, data, filedata): super(FakeSchedulerOptions, self).__init__() # Change internals ... self.last_modified = file_old self.last_checked = last_checked self.data = data # For overrides ... self._time_now = now self._file_now = file_now self._file_data = filedata self.file_was_loaded = False def _get_file_timestamp(self, filename): return self._file_now def _get_file_handle(self, filename): self.file_was_loaded = True return StringIO.StringIO(self._file_data) def _get_time_now(self): return self._time_now class SchedulerOptionsTestCase(test.NoDBTestCase): def test_get_configuration_first_time_no_flag(self): last_checked = None now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = None file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, {}, jdata) self.assertEqual({}, fake.get_configuration()) self.assertFalse(fake.file_was_loaded) def test_get_configuration_first_time_empty_file(self): last_checked = None now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = None file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) jdata = "" fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, {}, jdata) self.assertEqual({}, fake.get_configuration('foo.json')) self.assertTrue(fake.file_was_loaded) def test_get_configuration_first_time_happy_day(self): last_checked = None now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = None file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, {}, jdata) self.assertEqual(data, fake.get_configuration('foo.json')) self.assertTrue(fake.file_was_loaded) def test_get_configuration_second_time_no_change(self): last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1) now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = datetime.datetime(2012, 1, 1, 1, 1, 1) file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, data, jdata) self.assertEqual(data, fake.get_configuration('foo.json')) self.assertFalse(fake.file_was_loaded) def test_get_configuration_second_time_too_fast(self): last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1) now = datetime.datetime(2011, 1, 1, 1, 1, 2) file_old = datetime.datetime(2012, 1, 1, 1, 1, 1) file_now = datetime.datetime(2013, 1, 1, 1, 1, 1) old_data = dict(a=1, b=2, c=3) data = dict(a=11, b=12, c=13) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, old_data, jdata) self.assertEqual(old_data, fake.get_configuration('foo.json')) self.assertFalse(fake.file_was_loaded) def test_get_configuration_second_time_change(self): last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1) now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = datetime.datetime(2012, 1, 1, 1, 1, 1) file_now = datetime.datetime(2013, 1, 1, 1, 1, 1) old_data = dict(a=1, b=2, c=3) data = dict(a=11, b=12, c=13) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, old_data, jdata) self.assertEqual(data, fake.get_configuration('foo.json')) self.assertTrue(fake.file_was_loaded) nova-2014.1/nova/tests/scheduler/test_host_manager.py0000664000175400017540000005014612323721477024063 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For HostManager """ from nova.compute import task_states from nova.compute import vm_states from nova import db from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.scheduler import filters from nova.scheduler import host_manager from nova import test from nova.tests.scheduler import fakes from nova import utils class FakeFilterClass1(filters.BaseHostFilter): def host_passes(self, host_state, filter_properties): pass class FakeFilterClass2(filters.BaseHostFilter): def host_passes(self, host_state, filter_properties): pass class HostManagerTestCase(test.NoDBTestCase): """Test case for HostManager class.""" def setUp(self): super(HostManagerTestCase, self).setUp() self.host_manager = host_manager.HostManager() self.fake_hosts = [host_manager.HostState('fake_host%s' % x, 'fake-node') for x in xrange(1, 5)] self.fake_hosts += [host_manager.HostState('fake_multihost', 'fake-node%s' % x) for x in xrange(1, 5)] self.addCleanup(timeutils.clear_time_override) def test_choose_host_filters_not_found(self): self.flags(scheduler_default_filters='FakeFilterClass3') self.host_manager.filter_classes = [FakeFilterClass1, FakeFilterClass2] self.assertRaises(exception.SchedulerHostFilterNotFound, self.host_manager._choose_host_filters, None) def test_choose_host_filters(self): self.flags(scheduler_default_filters=['FakeFilterClass2']) self.host_manager.filter_classes = [FakeFilterClass1, FakeFilterClass2] # Test we returns 1 correct function filter_classes = self.host_manager._choose_host_filters(None) self.assertEqual(len(filter_classes), 1) self.assertEqual(filter_classes[0].__name__, 'FakeFilterClass2') def _mock_get_filtered_hosts(self, info, specified_filters=None): self.mox.StubOutWithMock(self.host_manager, '_choose_host_filters') info['got_objs'] = [] info['got_fprops'] = [] def fake_filter_one(_self, obj, filter_props): info['got_objs'].append(obj) info['got_fprops'].append(filter_props) return True self.stubs.Set(FakeFilterClass1, '_filter_one', fake_filter_one) self.host_manager._choose_host_filters(specified_filters).AndReturn( [FakeFilterClass1]) def _verify_result(self, info, result, filters=True): for x in info['got_fprops']: self.assertEqual(x, info['expected_fprops']) if filters: self.assertEqual(set(info['expected_objs']), set(info['got_objs'])) self.assertEqual(set(info['expected_objs']), set(result)) def test_get_filtered_hosts(self): fake_properties = {'moo': 1, 'cow': 2} info = {'expected_objs': self.fake_hosts, 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result) def test_get_filtered_hosts_with_specified_filters(self): fake_properties = {'moo': 1, 'cow': 2} specified_filters = ['FakeFilterClass1', 'FakeFilterClass2'] info = {'expected_objs': self.fake_hosts, 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info, specified_filters) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties, filter_class_names=specified_filters) self._verify_result(info, result) def test_get_filtered_hosts_with_ignore(self): fake_properties = {'ignore_hosts': ['fake_host1', 'fake_host3', 'fake_host5', 'fake_multihost']} # [1] and [3] are host2 and host4 info = {'expected_objs': [self.fake_hosts[1], self.fake_hosts[3]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result) def test_get_filtered_hosts_with_force_hosts(self): fake_properties = {'force_hosts': ['fake_host1', 'fake_host3', 'fake_host5']} # [0] and [2] are host1 and host3 info = {'expected_objs': [self.fake_hosts[0], self.fake_hosts[2]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_no_matching_force_hosts(self): fake_properties = {'force_hosts': ['fake_host5', 'fake_host6']} info = {'expected_objs': [], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_ignore_and_force_hosts(self): # Ensure ignore_hosts processed before force_hosts in host filters. fake_properties = {'force_hosts': ['fake_host3', 'fake_host1'], 'ignore_hosts': ['fake_host1']} # only fake_host3 should be left. info = {'expected_objs': [self.fake_hosts[2]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_force_host_and_many_nodes(self): # Ensure all nodes returned for a host with many nodes fake_properties = {'force_hosts': ['fake_multihost']} info = {'expected_objs': [self.fake_hosts[4], self.fake_hosts[5], self.fake_hosts[6], self.fake_hosts[7]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_force_nodes(self): fake_properties = {'force_nodes': ['fake-node2', 'fake-node4', 'fake-node9']} # [5] is fake-node2, [7] is fake-node4 info = {'expected_objs': [self.fake_hosts[5], self.fake_hosts[7]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_force_hosts_and_nodes(self): # Ensure only overlapping results if both force host and node fake_properties = {'force_hosts': ['fake_host1', 'fake_multihost'], 'force_nodes': ['fake-node2', 'fake-node9']} # [5] is fake-node2 info = {'expected_objs': [self.fake_hosts[5]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_force_hosts_and_wrong_nodes(self): # Ensure non-overlapping force_node and force_host yield no result fake_properties = {'force_hosts': ['fake_multihost'], 'force_nodes': ['fake-node']} info = {'expected_objs': [], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_ignore_hosts_and_force_nodes(self): # Ensure ignore_hosts can coexist with force_nodes fake_properties = {'force_nodes': ['fake-node4', 'fake-node2'], 'ignore_hosts': ['fake_host1', 'fake_host2']} info = {'expected_objs': [self.fake_hosts[5], self.fake_hosts[7]], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_filtered_hosts_with_ignore_hosts_and_force_same_nodes(self): # Ensure ignore_hosts is processed before force_nodes fake_properties = {'force_nodes': ['fake_node4', 'fake_node2'], 'ignore_hosts': ['fake_multihost']} info = {'expected_objs': [], 'expected_fprops': fake_properties} self._mock_get_filtered_hosts(info) self.mox.ReplayAll() result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self._verify_result(info, result, False) def test_get_all_host_states(self): context = 'fake_context' self.mox.StubOutWithMock(db, 'compute_node_get_all') self.mox.StubOutWithMock(host_manager.LOG, 'warn') db.compute_node_get_all(context).AndReturn(fakes.COMPUTE_NODES) # node 3 host physical disk space is greater than database host_manager.LOG.warn("Host has more disk space than database expected" " (3333gb > 3072gb)") # Invalid service host_manager.LOG.warn("No service for compute ID 5") self.mox.ReplayAll() self.host_manager.get_all_host_states(context) host_states_map = self.host_manager.host_state_map self.assertEqual(len(host_states_map), 4) # Check that .service is set properly for i in xrange(4): compute_node = fakes.COMPUTE_NODES[i] host = compute_node['service']['host'] node = compute_node['hypervisor_hostname'] state_key = (host, node) self.assertEqual(host_states_map[state_key].service, compute_node['service']) self.assertEqual(host_states_map[('host1', 'node1')].free_ram_mb, 512) # 511GB self.assertEqual(host_states_map[('host1', 'node1')].free_disk_mb, 524288) self.assertEqual(host_states_map[('host2', 'node2')].free_ram_mb, 1024) # 1023GB self.assertEqual(host_states_map[('host2', 'node2')].free_disk_mb, 1048576) self.assertEqual(host_states_map[('host3', 'node3')].free_ram_mb, 3072) # 3071GB self.assertEqual(host_states_map[('host3', 'node3')].free_disk_mb, 3145728) self.assertEqual(host_states_map[('host4', 'node4')].free_ram_mb, 8192) # 8191GB self.assertEqual(host_states_map[('host4', 'node4')].free_disk_mb, 8388608) class HostManagerChangedNodesTestCase(test.NoDBTestCase): """Test case for HostManager class.""" def setUp(self): super(HostManagerChangedNodesTestCase, self).setUp() self.host_manager = host_manager.HostManager() self.fake_hosts = [ host_manager.HostState('host1', 'node1'), host_manager.HostState('host2', 'node2'), host_manager.HostState('host3', 'node3'), host_manager.HostState('host4', 'node4') ] self.addCleanup(timeutils.clear_time_override) def test_get_all_host_states(self): context = 'fake_context' self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(context).AndReturn(fakes.COMPUTE_NODES) self.mox.ReplayAll() self.host_manager.get_all_host_states(context) host_states_map = self.host_manager.host_state_map self.assertEqual(len(host_states_map), 4) def test_get_all_host_states_after_delete_one(self): context = 'fake_context' self.mox.StubOutWithMock(db, 'compute_node_get_all') # all nodes active for first call db.compute_node_get_all(context).AndReturn(fakes.COMPUTE_NODES) # remove node4 for second call running_nodes = [n for n in fakes.COMPUTE_NODES if n.get('hypervisor_hostname') != 'node4'] db.compute_node_get_all(context).AndReturn(running_nodes) self.mox.ReplayAll() self.host_manager.get_all_host_states(context) self.host_manager.get_all_host_states(context) host_states_map = self.host_manager.host_state_map self.assertEqual(len(host_states_map), 3) def test_get_all_host_states_after_delete_all(self): context = 'fake_context' self.mox.StubOutWithMock(db, 'compute_node_get_all') # all nodes active for first call db.compute_node_get_all(context).AndReturn(fakes.COMPUTE_NODES) # remove all nodes for second call db.compute_node_get_all(context).AndReturn([]) self.mox.ReplayAll() self.host_manager.get_all_host_states(context) self.host_manager.get_all_host_states(context) host_states_map = self.host_manager.host_state_map self.assertEqual(len(host_states_map), 0) class HostStateTestCase(test.NoDBTestCase): """Test case for HostState class.""" # update_from_compute_node() and consume_from_instance() are tested # in HostManagerTestCase.test_get_all_host_states() def test_stat_consumption_from_compute_node(self): stats = { 'num_instances': '5', 'num_proj_12345': '3', 'num_proj_23456': '1', 'num_vm_%s' % vm_states.BUILDING: '2', 'num_vm_%s' % vm_states.SUSPENDED: '1', 'num_task_%s' % task_states.RESIZE_MIGRATING: '1', 'num_task_%s' % task_states.MIGRATING: '2', 'num_os_type_linux': '4', 'num_os_type_windoze': '1', 'io_workload': '42', } stats = jsonutils.dumps(stats) hyper_ver_int = utils.convert_version_to_int('6.0.0') compute = dict(stats=stats, memory_mb=1, free_disk_gb=0, local_gb=0, local_gb_used=0, free_ram_mb=0, vcpus=0, vcpus_used=0, updated_at=None, host_ip='127.0.0.1', hypervisor_type='htype', hypervisor_hostname='hostname', cpu_info='cpu_info', supported_instances='{}', hypervisor_version=hyper_ver_int) host = host_manager.HostState("fakehost", "fakenode") host.update_from_compute_node(compute) self.assertEqual(5, host.num_instances) self.assertEqual(3, host.num_instances_by_project['12345']) self.assertEqual(1, host.num_instances_by_project['23456']) self.assertEqual(2, host.vm_states[vm_states.BUILDING]) self.assertEqual(1, host.vm_states[vm_states.SUSPENDED]) self.assertEqual(1, host.task_states[task_states.RESIZE_MIGRATING]) self.assertEqual(2, host.task_states[task_states.MIGRATING]) self.assertEqual(4, host.num_instances_by_os_type['linux']) self.assertEqual(1, host.num_instances_by_os_type['windoze']) self.assertEqual(42, host.num_io_ops) self.assertEqual(10, len(host.stats)) self.assertEqual('127.0.0.1', host.host_ip) self.assertEqual('htype', host.hypervisor_type) self.assertEqual('hostname', host.hypervisor_hostname) self.assertEqual('cpu_info', host.cpu_info) self.assertEqual({}, host.supported_instances) self.assertEqual(hyper_ver_int, host.hypervisor_version) def test_stat_consumption_from_compute_node_non_pci(self): stats = { 'num_instances': '5', 'num_proj_12345': '3', 'num_proj_23456': '1', 'num_vm_%s' % vm_states.BUILDING: '2', 'num_vm_%s' % vm_states.SUSPENDED: '1', 'num_task_%s' % task_states.RESIZE_MIGRATING: '1', 'num_task_%s' % task_states.MIGRATING: '2', 'num_os_type_linux': '4', 'num_os_type_windoze': '1', 'io_workload': '42', } stats = jsonutils.dumps(stats) hyper_ver_int = utils.convert_version_to_int('6.0.0') compute = dict(stats=stats, memory_mb=0, free_disk_gb=0, local_gb=0, local_gb_used=0, free_ram_mb=0, vcpus=0, vcpus_used=0, updated_at=None, host_ip='127.0.0.1', hypervisor_version=hyper_ver_int) host = host_manager.HostState("fakehost", "fakenode") host.update_from_compute_node(compute) self.assertIsNone(host.pci_stats) self.assertEqual(hyper_ver_int, host.hypervisor_version) def test_stat_consumption_from_instance(self): host = host_manager.HostState("fakehost", "fakenode") instance = dict(root_gb=0, ephemeral_gb=0, memory_mb=0, vcpus=0, project_id='12345', vm_state=vm_states.BUILDING, task_state=task_states.SCHEDULING, os_type='Linux') host.consume_from_instance(instance) instance = dict(root_gb=0, ephemeral_gb=0, memory_mb=0, vcpus=0, project_id='12345', vm_state=vm_states.PAUSED, task_state=None, os_type='Linux') host.consume_from_instance(instance) self.assertEqual(2, host.num_instances) self.assertEqual(2, host.num_instances_by_project['12345']) self.assertEqual(1, host.vm_states[vm_states.BUILDING]) self.assertEqual(1, host.vm_states[vm_states.PAUSED]) self.assertEqual(1, host.task_states[task_states.SCHEDULING]) self.assertEqual(1, host.task_states[None]) self.assertEqual(2, host.num_instances_by_os_type['Linux']) self.assertEqual(1, host.num_io_ops) def test_resources_consumption_from_compute_node(self): metrics = [ dict(name='res1', value=1.0, source='source1', timestamp=None), dict(name='res2', value="string2", source='source2', timestamp=None), ] hyper_ver_int = utils.convert_version_to_int('6.0.0') compute = dict(metrics=jsonutils.dumps(metrics), memory_mb=0, free_disk_gb=0, local_gb=0, local_gb_used=0, free_ram_mb=0, vcpus=0, vcpus_used=0, updated_at=None, host_ip='127.0.0.1', hypervisor_version=hyper_ver_int) host = host_manager.HostState("fakehost", "fakenode") host.update_from_compute_node(compute) self.assertEqual(len(host.metrics), 2) self.assertEqual(set(['res1', 'res2']), set(host.metrics.keys())) self.assertEqual(1.0, host.metrics['res1'].value) self.assertEqual('source1', host.metrics['res1'].source) self.assertEqual('string2', host.metrics['res2'].value) self.assertEqual('source2', host.metrics['res2'].source) nova-2014.1/nova/tests/scheduler/test_caching_scheduler.py0000664000175400017540000001463212323721477025046 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import exception from nova.openstack.common import timeutils from nova.scheduler import caching_scheduler from nova.scheduler import host_manager from nova.tests.scheduler import test_scheduler ENABLE_PROFILER = False class CachingSchedulerTestCase(test_scheduler.SchedulerTestCase): """Test case for Caching Scheduler.""" driver_cls = caching_scheduler.CachingScheduler @mock.patch.object(caching_scheduler.CachingScheduler, "_get_up_hosts") def test_run_periodic_tasks_loads_hosts(self, mock_up_hosts): mock_up_hosts.return_value = [] context = mock.Mock() self.driver.run_periodic_tasks(context) self.assertTrue(mock_up_hosts.called) self.assertEqual([], self.driver.all_host_states) context.elevated.assert_called_with() @mock.patch.object(caching_scheduler.CachingScheduler, "_get_up_hosts") def test_get_all_host_states_returns_cached_value(self, mock_up_hosts): self.driver.all_host_states = [] result = self.driver._get_all_host_states(self.context) self.assertFalse(mock_up_hosts.called) self.assertEqual([], self.driver.all_host_states) @mock.patch.object(caching_scheduler.CachingScheduler, "_get_up_hosts") def test_get_all_host_states_loads_hosts(self, mock_up_hosts): mock_up_hosts.return_value = ["asdf"] result = self.driver._get_all_host_states(self.context) self.assertTrue(mock_up_hosts.called) self.assertEqual(["asdf"], self.driver.all_host_states) self.assertEqual(["asdf"], result) def test_get_up_hosts(self): with mock.patch.object(self.driver.host_manager, "get_all_host_states") as mock_get_hosts: mock_get_hosts.return_value = ["asdf"] result = self.driver._get_up_hosts(self.context) self.assertTrue(mock_get_hosts.called) self.assertEqual(mock_get_hosts.return_value, result) def test_select_destination_raises_with_no_hosts(self): fake_request_spec = self._get_fake_request_spec() self.driver.all_host_states = [] self.assertRaises(exception.NoValidHost, self.driver.select_destinations, self.context, fake_request_spec, {}) def test_select_destination_works(self): fake_request_spec = self._get_fake_request_spec() fake_host = self._get_fake_host_state() self.driver.all_host_states = [fake_host] result = self._test_select_destinations(fake_request_spec) self.assertEqual(1, len(result)) self.assertEqual(result[0]["host"], fake_host.host) def _test_select_destinations(self, request_spec): return self.driver.select_destinations( self.context, request_spec, {}) def _get_fake_request_spec(self): flavor = { "flavorid": "small", "memory_mb": 512, "root_gb": 1, "ephemeral_gb": 1, "vcpus": 1, } instance_properties = { "os_type": "linux", "project_id": "1234", "memory_mb": 512, "root_gb": 1, "ephemeral_gb": 1, "vcpus": 1, } request_spec = { "instance_type": flavor, "instance_properties": instance_properties, "num_instances": 1, } return request_spec def _get_fake_host_state(self, index=0): host_state = host_manager.HostState( 'host_%s' % index, 'node_%s' % index) host_state.free_ram_mb = 50000 host_state.service = { "disabled": False, "updated_at": timeutils.utcnow(), "created_at": timeutils.utcnow(), } return host_state def test_performance_check_select_destination(self): hosts = 2 requests = 1 self.flags(service_down_time=240) request_spec = self._get_fake_request_spec() host_states = [] for x in xrange(hosts): host_state = self._get_fake_host_state(x) host_states.append(host_state) self.driver.all_host_states = host_states def run_test(): a = timeutils.utcnow() for x in xrange(requests): self.driver.select_destinations( self.context, request_spec, {}) b = timeutils.utcnow() c = b - a seconds = (c.days * 24 * 60 * 60 + c.seconds) microseconds = seconds * 1000 + c.microseconds / 1000.0 per_request_ms = microseconds / requests return per_request_ms per_request_ms = None if ENABLE_PROFILER: import pycallgraph from pycallgraph import output config = pycallgraph.Config(max_depth=10) config.trace_filter = pycallgraph.GlobbingFilter(exclude=[ 'pycallgraph.*', 'unittest.*', 'nova.tests.*', ]) graphviz = output.GraphvizOutput(output_file='scheduler.png') with pycallgraph.PyCallGraph(output=graphviz): per_request_ms = run_test() else: per_request_ms = run_test() # This has proved to be around 1 ms on a random dev box # But this is here so you can do simply performance testing easily. self.assertTrue(per_request_ms < 1000) if __name__ == '__main__': # A handy tool to help profile the schedulers performance ENABLE_PROFILER = True import unittest suite = unittest.TestSuite() test = "test_performance_check_select_destination" test_case = CachingSchedulerTestCase(test) suite.addTest(test_case) runner = unittest.TextTestRunner() runner.run(suite) nova-2014.1/nova/tests/scheduler/test_weights.py0000664000175400017540000002222412323721477023062 0ustar jenkinsjenkins00000000000000# Copyright 2011-2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Scheduler weights. """ from nova import context from nova import exception from nova.openstack.common.fixture import mockpatch from nova.scheduler import weights from nova import test from nova.tests import matchers from nova.tests.scheduler import fakes class TestWeighedHost(test.NoDBTestCase): def test_dict_conversion(self): host_state = fakes.FakeHostState('somehost', None, {}) host = weights.WeighedHost(host_state, 'someweight') expected = {'weight': 'someweight', 'host': 'somehost'} self.assertThat(host.to_dict(), matchers.DictMatches(expected)) def test_all_weighers(self): classes = weights.all_weighers() class_names = [cls.__name__ for cls in classes] self.assertEqual(len(classes), 2) self.assertIn('RAMWeigher', class_names) self.assertIn('MetricsWeigher', class_names) class RamWeigherTestCase(test.NoDBTestCase): def setUp(self): super(RamWeigherTestCase, self).setUp() self.useFixture(mockpatch.Patch( 'nova.db.compute_node_get_all', return_value=fakes.COMPUTE_NODES)) self.host_manager = fakes.FakeHostManager() self.weight_handler = weights.HostWeightHandler() self.weight_classes = self.weight_handler.get_matching_classes( ['nova.scheduler.weights.ram.RAMWeigher']) def _get_weighed_host(self, hosts, weight_properties=None): if weight_properties is None: weight_properties = {} return self.weight_handler.get_weighed_objects(self.weight_classes, hosts, weight_properties)[0] def _get_all_hosts(self): ctxt = context.get_admin_context() return self.host_manager.get_all_host_states(ctxt) def test_default_of_spreading_first(self): hostinfo_list = self._get_all_hosts() # host1: free_ram_mb=512 # host2: free_ram_mb=1024 # host3: free_ram_mb=3072 # host4: free_ram_mb=8192 # so, host4 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 1.0) self.assertEqual(weighed_host.obj.host, 'host4') def test_ram_filter_multiplier1(self): self.flags(ram_weight_multiplier=0.0) hostinfo_list = self._get_all_hosts() # host1: free_ram_mb=512 # host2: free_ram_mb=1024 # host3: free_ram_mb=3072 # host4: free_ram_mb=8192 # We do not know the host, all have same weight. weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 0.0) def test_ram_filter_multiplier2(self): self.flags(ram_weight_multiplier=2.0) hostinfo_list = self._get_all_hosts() # host1: free_ram_mb=512 # host2: free_ram_mb=1024 # host3: free_ram_mb=3072 # host4: free_ram_mb=8192 # so, host4 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 1.0 * 2) self.assertEqual(weighed_host.obj.host, 'host4') def test_ram_filter_negative(self): self.flags(ram_weight_multiplier=1.0) hostinfo_list = self._get_all_hosts() host_attr = {'id': 100, 'memory_mb': 8192, 'free_ram_mb': -512} host_state = fakes.FakeHostState('negative', 'negative', host_attr) hostinfo_list = list(hostinfo_list) + [host_state] # host1: free_ram_mb=512 # host2: free_ram_mb=1024 # host3: free_ram_mb=3072 # host4: free_ram_mb=8192 # negativehost: free_ram_mb=-512 # so, host4 should win weights = self.weight_handler.get_weighed_objects(self.weight_classes, hostinfo_list, {}) weighed_host = weights[0] self.assertEqual(weighed_host.weight, 1) self.assertEqual(weighed_host.obj.host, "host4") # and negativehost should lose weighed_host = weights[-1] self.assertEqual(weighed_host.weight, 0) self.assertEqual(weighed_host.obj.host, "negative") class MetricsWeigherTestCase(test.NoDBTestCase): def setUp(self): super(MetricsWeigherTestCase, self).setUp() self.useFixture(mockpatch.Patch( 'nova.db.compute_node_get_all', return_value=fakes.COMPUTE_NODES_METRICS)) self.host_manager = fakes.FakeHostManager() self.weight_handler = weights.HostWeightHandler() self.weight_classes = self.weight_handler.get_matching_classes( ['nova.scheduler.weights.metrics.MetricsWeigher']) def _get_weighed_host(self, hosts, setting, weight_properties=None): if not weight_properties: weight_properties = {} self.flags(weight_setting=setting, group='metrics') return self.weight_handler.get_weighed_objects(self.weight_classes, hosts, weight_properties)[0] def _get_all_hosts(self): ctxt = context.get_admin_context() return self.host_manager.get_all_host_states(ctxt) def _do_test(self, settings, expected_weight, expected_host): hostinfo_list = self._get_all_hosts() weighed_host = self._get_weighed_host(hostinfo_list, settings) self.assertEqual(weighed_host.weight, expected_weight) self.assertEqual(weighed_host.obj.host, expected_host) def test_single_resource(self): # host1: foo=512 # host2: foo=1024 # host3: foo=3072 # host4: foo=8192 # so, host4 should win: setting = ['foo=1'] self._do_test(setting, 1.0, 'host4') def test_multiple_resource(self): # host1: foo=512, bar=1 # host2: foo=1024, bar=2 # host3: foo=3072, bar=1 # host4: foo=8192, bar=0 # so, host2 should win: setting = ['foo=0.0001', 'bar=1'] self._do_test(setting, 1.0, 'host2') def test_single_resourcenegtive_ratio(self): # host1: foo=512 # host2: foo=1024 # host3: foo=3072 # host4: foo=8192 # so, host1 should win: setting = ['foo=-1'] self._do_test(setting, 1.0, 'host1') def test_multiple_resource_missing_ratio(self): # host1: foo=512, bar=1 # host2: foo=1024, bar=2 # host3: foo=3072, bar=1 # host4: foo=8192, bar=0 # so, host4 should win: setting = ['foo=0.0001', 'bar'] self._do_test(setting, 1.0, 'host4') def test_multiple_resource_wrong_ratio(self): # host1: foo=512, bar=1 # host2: foo=1024, bar=2 # host3: foo=3072, bar=1 # host4: foo=8192, bar=0 # so, host4 should win: setting = ['foo=0.0001', 'bar = 2.0t'] self._do_test(setting, 1.0, 'host4') def _check_parsing_result(self, weigher, setting, results): self.flags(weight_setting=setting, group='metrics') weigher._parse_setting() self.assertTrue(len(results) == len(weigher.setting)) for item in results: self.assertTrue(item in weigher.setting) def test_parse_setting(self): weigher = self.weight_classes[0]() self._check_parsing_result(weigher, ['foo=1'], [('foo', 1.0)]) self._check_parsing_result(weigher, ['foo=1', 'bar=-2.1'], [('foo', 1.0), ('bar', -2.1)]) self._check_parsing_result(weigher, ['foo=a1', 'bar=-2.1'], [('bar', -2.1)]) self._check_parsing_result(weigher, ['foo', 'bar=-2.1'], [('bar', -2.1)]) self._check_parsing_result(weigher, ['=5', 'bar=-2.1'], [('bar', -2.1)]) def test_metric_not_found_required(self): setting = ['foo=1', 'zot=2'] self.assertRaises(exception.ComputeHostMetricNotFound, self._do_test, setting, 8192, 'host4') def test_metric_not_found_non_required(self): # host1: foo=512, bar=1 # host2: foo=1024, bar=2 # host3: foo=3072, bar=1 # host4: foo=8192, bar=0 # host5: foo=768, bar=0, zot=1 # host6: foo=2048, bar=0, zot=2 # so, host5 should win: self.flags(required=False, group='metrics') setting = ['foo=0.0001', 'zot=-1'] self._do_test(setting, 1.0, 'host5') nova-2014.1/nova/tests/scheduler/__init__.py0000664000175400017540000000117312323721477022110 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/test_hacking.py0000664000175400017540000000652612323721477021045 0ustar jenkinsjenkins00000000000000# Copyright 2014 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.hacking import checks from nova import test class HackingTestCase(test.NoDBTestCase): def test_virt_driver_imports(self): self.assertTrue(checks.import_no_virt_driver_import_deps( "from nova.virt.libvirt import utils as libvirt_utils", "./nova/virt/xenapi/driver.py")) self.assertIsNone(checks.import_no_virt_driver_import_deps( "from nova.virt.libvirt import utils as libvirt_utils", "./nova/virt/libvirt/driver.py")) self.assertTrue(checks.import_no_virt_driver_import_deps( "import nova.virt.libvirt.utils as libvirt_utils", "./nova/virt/xenapi/driver.py")) self.assertTrue(checks.import_no_virt_driver_import_deps( "import nova.virt.libvirt.utils as libvirt_utils", "./nova/virt/xenapi/driver.py")) self.assertIsNone(checks.import_no_virt_driver_import_deps( "import nova.virt.firewall", "./nova/virt/libvirt/firewall.py")) def test_virt_driver_config_vars(self): self.assertTrue(checks.import_no_virt_driver_config_deps( "CONF.import_opt('volume_drivers', " "'nova.virt.libvirt.driver', group='libvirt')", "./nova/virt/xenapi/driver.py")) self.assertIsNone(checks.import_no_virt_driver_config_deps( "CONF.import_opt('volume_drivers', " "'nova.virt.libvirt.driver', group='libvirt')", "./nova/virt/libvirt/volume.py")) def test_virt_driver_imports(self): self.assertTrue(checks.no_author_tags("# author: jogo")) self.assertTrue(checks.no_author_tags("# @author: jogo")) self.assertTrue(checks.no_author_tags("# @Author: jogo")) self.assertTrue(checks.no_author_tags("# Author: jogo")) self.assertFalse(checks.no_author_tags("# authorization of this")) def test_assert_true_instance(self): self.assertEqual(len(list(checks.assert_true_instance( "self.assertTrue(isinstance(e, " "exception.BuildAbortException))"))), 1) self.assertEqual( len(list(checks.assert_true_instance("self.assertTrue()"))), 0) def test_assert_equal_type(self): self.assertEqual(len(list(checks.assert_equal_type( "self.assertEqual(type(als['QuicAssist']), list)"))), 1) self.assertEqual( len(list(checks.assert_equal_type("self.assertTrue()"))), 0) def test_assert_equal_none(self): self.assertEqual(len(list(checks.assert_equal_none( "self.assertEqual(A, None)"))), 1) self.assertEqual(len(list(checks.assert_equal_none( "self.assertEqual(None, A)"))), 1) self.assertEqual( len(list(checks.assert_equal_none("self.assertIsNone()"))), 0) nova-2014.1/nova/tests/fake_network.py0000664000175400017540000004552112323721477021057 0ustar jenkinsjenkins00000000000000# Copyright 2011 Rackspace # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova.compute import api as compute_api from nova.compute import manager as compute_manager import nova.context from nova import db from nova import exception from nova.network import api as network_api from nova.network import manager as network_manager from nova.network import model as network_model from nova.network import nova_ipam_lib from nova.network import rpcapi as network_rpcapi from nova.objects import base as obj_base from nova.objects import instance_info_cache from nova.objects import pci_device from nova.objects import virtual_interface as vif_obj from nova.openstack.common import jsonutils from nova.tests.objects import test_fixed_ip from nova.tests.objects import test_instance_info_cache from nova.tests.objects import test_pci_device from nova.virt.libvirt import config as libvirt_config HOST = "testhost" CONF = cfg.CONF CONF.import_opt('use_ipv6', 'nova.netconf') class FakeIptablesFirewallDriver(object): def __init__(self, **kwargs): pass def setattr(self, key, val): self.__setattr__(key, val) def apply_instance_filter(self, instance, network_info): pass class FakeVIFDriver(object): def __init__(self, *args, **kwargs): pass def setattr(self, key, val): self.__setattr__(key, val) def get_config(self, instance, vif, image_meta, inst_type): conf = libvirt_config.LibvirtConfigGuestInterface() for attr, val in conf.__dict__.iteritems(): if val is None: setattr(conf, attr, 'fake') return conf def plug(self, instance, vif): pass def unplug(self, instance, vif): pass class FakeModel(dict): """Represent a model from the db.""" def __init__(self, *args, **kwargs): self.update(kwargs) class FakeNetworkManager(network_manager.NetworkManager): """This NetworkManager doesn't call the base class so we can bypass all inherited service cruft and just perform unit tests. """ class FakeDB: vifs = [{'id': 0, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'instance_uuid': '00000000-0000-0000-0000-000000000010', 'network_id': 1, 'uuid': 'fake-uuid', 'address': 'DC:AD:BE:FF:EF:01'}, {'id': 1, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'instance_uuid': '00000000-0000-0000-0000-000000000020', 'network_id': 21, 'uuid': 'fake-uuid2', 'address': 'DC:AD:BE:FF:EF:02'}, {'id': 2, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'instance_uuid': '00000000-0000-0000-0000-000000000030', 'network_id': 31, 'uuid': 'fake-uuid3', 'address': 'DC:AD:BE:FF:EF:03'}] floating_ips = [dict(address='172.16.1.1', fixed_ip_id=100), dict(address='172.16.1.2', fixed_ip_id=200), dict(address='173.16.1.2', fixed_ip_id=210)] fixed_ips = [dict(test_fixed_ip.fake_fixed_ip, id=100, address='172.16.0.1', virtual_interface_id=0), dict(test_fixed_ip.fake_fixed_ip, id=200, address='172.16.0.2', virtual_interface_id=1), dict(test_fixed_ip.fake_fixed_ip, id=210, address='173.16.0.2', virtual_interface_id=2)] def fixed_ip_get_by_instance(self, context, instance_uuid): return [dict(address='10.0.0.0'), dict(address='10.0.0.1'), dict(address='10.0.0.2')] def network_get_by_cidr(self, context, cidr): raise exception.NetworkNotFoundForCidr(cidr=cidr) def network_create_safe(self, context, net): fakenet = dict(net) fakenet['id'] = 999 return fakenet def network_get(self, context, network_id, project_only="allow_none"): return {'cidr_v6': '2001:db8:69:%x::/64' % network_id} def network_get_by_uuid(self, context, network_uuid): raise exception.NetworkNotFoundForUUID(uuid=network_uuid) def network_get_all(self, context): raise exception.NoNetworksFound() def network_get_all_by_uuids(self, context, project_only="allow_none"): raise exception.NoNetworksFound() def network_disassociate(self, context, network_id): return True def virtual_interface_get_all(self, context): return self.vifs def fixed_ips_by_virtual_interface(self, context, vif_id): return [ip for ip in self.fixed_ips if ip['virtual_interface_id'] == vif_id] def fixed_ip_disassociate(self, context, address): return True def __init__(self, stubs=None): self.db = self.FakeDB() if stubs: stubs.Set(vif_obj, 'db', self.db) self.deallocate_called = None self.deallocate_fixed_ip_calls = [] self.network_rpcapi = network_rpcapi.NetworkAPI() # TODO(matelakat) method signature should align with the faked one's def deallocate_fixed_ip(self, context, address=None, host=None, instance=None): self.deallocate_fixed_ip_calls.append((context, address, host)) # TODO(matelakat) use the deallocate_fixed_ip_calls instead self.deallocate_called = address def _create_fixed_ips(self, context, network_id, fixed_cidr=None): pass def get_instance_nw_info(context, instance_id, rxtx_factor, host, instance_uuid=None, **kwargs): pass def fake_network(network_id, ipv6=None): if ipv6 is None: ipv6 = CONF.use_ipv6 fake_network = {'id': network_id, 'uuid': '00000000-0000-0000-0000-00000000000000%02d' % network_id, 'label': 'test%d' % network_id, 'injected': False, 'multi_host': False, 'cidr': '192.168.%d.0/24' % network_id, 'cidr_v6': None, 'netmask': '255.255.255.0', 'netmask_v6': None, 'bridge': 'fake_br%d' % network_id, 'bridge_interface': 'fake_eth%d' % network_id, 'gateway': '192.168.%d.1' % network_id, 'gateway_v6': None, 'broadcast': '192.168.%d.255' % network_id, 'dns1': '192.168.%d.3' % network_id, 'dns2': '192.168.%d.4' % network_id, 'dns3': '192.168.%d.3' % network_id, 'vlan': None, 'host': None, 'project_id': 'fake_project', 'vpn_public_address': '192.168.%d.2' % network_id, 'vpn_public_port': None, 'vpn_private_address': None, 'dhcp_start': None, 'rxtx_base': network_id * 10, 'priority': None, 'deleted': False, 'created_at': None, 'updated_at': None, 'deleted_at': None} if ipv6: fake_network['cidr_v6'] = '2001:db8:0:%x::/64' % network_id fake_network['gateway_v6'] = '2001:db8:0:%x::1' % network_id fake_network['netmask_v6'] = '64' if CONF.flat_injected: fake_network['injected'] = True return fake_network def vifs(n): for x in xrange(1, n + 1): yield {'id': x, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'address': 'DE:AD:BE:EF:00:%02x' % x, 'uuid': '00000000-0000-0000-0000-00000000000000%02d' % x, 'network_id': x, 'instance_uuid': 'fake-uuid'} def floating_ip_ids(): for i in xrange(1, 100): yield i def fixed_ip_ids(): for i in xrange(1, 100): yield i floating_ip_id = floating_ip_ids() fixed_ip_id = fixed_ip_ids() def next_fixed_ip(network_id, num_floating_ips=0): next_id = fixed_ip_id.next() f_ips = [FakeModel(**next_floating_ip(next_id)) for i in xrange(num_floating_ips)] return {'id': next_id, 'network_id': network_id, 'address': '192.168.%d.%03d' % (network_id, (next_id + 99)), 'instance_uuid': 1, 'allocated': False, # and since network_id and vif_id happen to be equivalent 'virtual_interface_id': network_id, 'floating_ips': f_ips} def next_floating_ip(fixed_ip_id): next_id = floating_ip_id.next() return {'id': next_id, 'address': '10.10.10.%03d' % (next_id + 99), 'fixed_ip_id': fixed_ip_id, 'project_id': None, 'auto_assigned': False} def ipv4_like(ip, match_string): ip = ip.split('.') match_octets = match_string.split('.') for i, octet in enumerate(match_octets): if octet == '*': continue if octet != ip[i]: return False return True def fake_get_instance_nw_info(stubs, num_networks=1, ips_per_vif=2, floating_ips_per_fixed_ip=0): # stubs is the self.stubs from the test # ips_per_vif is the number of ips each vif will have # num_floating_ips is number of float ips for each fixed ip network = network_manager.FlatManager(host=HOST) network.db = db # reset the fixed and floating ip generators global floating_ip_id, fixed_ip_id, fixed_ips floating_ip_id = floating_ip_ids() fixed_ip_id = fixed_ip_ids() fixed_ips = [] networks = [fake_network(x) for x in xrange(1, num_networks + 1)] def fixed_ips_fake(*args, **kwargs): global fixed_ips ips = [next_fixed_ip(i, floating_ips_per_fixed_ip) for i in xrange(1, num_networks + 1) for j in xrange(ips_per_vif)] fixed_ips = ips return ips def floating_ips_fake(context, address): for ip in fixed_ips: if address == ip['address']: return ip['floating_ips'] return [] def fixed_ips_v6_fake(): return ['2001:db8:0:%x::1' % i for i in xrange(1, num_networks + 1)] def virtual_interfaces_fake(*args, **kwargs): return [vif for vif in vifs(num_networks)] def vif_by_uuid_fake(context, uuid): return {'id': 1, 'address': 'DE:AD:BE:EF:00:01', 'uuid': uuid, 'network_id': 1, 'network': None, 'instance_uuid': 'fake-uuid'} def network_get_fake(context, network_id, project_only='allow_none'): nets = [n for n in networks if n['id'] == network_id] if not nets: raise exception.NetworkNotFound(network_id=network_id) return nets[0] def update_cache_fake(*args, **kwargs): pass def get_subnets_by_net_id(self, context, project_id, network_uuid, vif_uuid): i = int(network_uuid[-2:]) subnet_v4 = dict( cidr='192.168.%d.0/24' % i, dns1='192.168.%d.3' % i, dns2='192.168.%d.4' % i, gateway='192.168.%d.1' % i) subnet_v6 = dict( cidr='2001:db8:0:%x::/64' % i, gateway='2001:db8:0:%x::1' % i) return [subnet_v4, subnet_v6] def get_network_by_uuid(context, uuid): return dict(id=1, cidr_v6='fe80::/64', bridge='br0', label='public') def get_v4_fake(*args, **kwargs): ips = fixed_ips_fake(*args, **kwargs) return [ip['address'] for ip in ips] def get_v6_fake(*args, **kwargs): return fixed_ips_v6_fake() stubs.Set(db, 'fixed_ip_get_by_instance', fixed_ips_fake) stubs.Set(db, 'floating_ip_get_by_fixed_address', floating_ips_fake) stubs.Set(db, 'virtual_interface_get_by_uuid', vif_by_uuid_fake) stubs.Set(db, 'network_get_by_uuid', get_network_by_uuid) stubs.Set(db, 'virtual_interface_get_by_instance', virtual_interfaces_fake) stubs.Set(db, 'network_get', network_get_fake) stubs.Set(db, 'instance_info_cache_update', update_cache_fake) stubs.Set(nova_ipam_lib.NeutronNovaIPAMLib, 'get_subnets_by_net_id', get_subnets_by_net_id) stubs.Set(nova_ipam_lib.NeutronNovaIPAMLib, 'get_v4_ips_by_interface', get_v4_fake) stubs.Set(nova_ipam_lib.NeutronNovaIPAMLib, 'get_v6_ips_by_interface', get_v6_fake) class FakeContext(nova.context.RequestContext): def is_admin(self): return True nw_model = network.get_instance_nw_info( FakeContext('fakeuser', 'fake_project'), 0, 3, None) return nw_model def stub_out_nw_api_get_instance_nw_info(stubs, func=None, num_networks=1, ips_per_vif=1, floating_ips_per_fixed_ip=0): def get_instance_nw_info(self, context, instance, conductor_api=None): return fake_get_instance_nw_info(stubs, num_networks=num_networks, ips_per_vif=ips_per_vif, floating_ips_per_fixed_ip=floating_ips_per_fixed_ip) if func is None: func = get_instance_nw_info stubs.Set(network_api.API, 'get_instance_nw_info', func) def stub_out_network_cleanup(stubs): stubs.Set(network_api.API, 'deallocate_for_instance', lambda *args, **kwargs: None) _real_functions = {} def set_stub_network_methods(stubs): global _real_functions cm = compute_manager.ComputeManager if not _real_functions: _real_functions = { '_get_instance_nw_info': cm._get_instance_nw_info, '_allocate_network': cm._allocate_network, '_deallocate_network': cm._deallocate_network} def fake_networkinfo(*args, **kwargs): return network_model.NetworkInfo() def fake_async_networkinfo(*args, **kwargs): return network_model.NetworkInfoAsyncWrapper(fake_networkinfo) stubs.Set(cm, '_get_instance_nw_info', fake_networkinfo) stubs.Set(cm, '_allocate_network', fake_async_networkinfo) stubs.Set(cm, '_deallocate_network', lambda *args, **kwargs: None) def unset_stub_network_methods(stubs): global _real_functions if _real_functions: cm = compute_manager.ComputeManager for name in _real_functions: stubs.Set(cm, name, _real_functions[name]) def stub_compute_with_ips(stubs): orig_get = compute_api.API.get orig_get_all = compute_api.API.get_all orig_create = compute_api.API.create def fake_get(*args, **kwargs): return _get_instances_with_cached_ips(orig_get, *args, **kwargs) def fake_get_all(*args, **kwargs): return _get_instances_with_cached_ips(orig_get_all, *args, **kwargs) def fake_create(*args, **kwargs): return _create_instances_with_cached_ips(orig_create, *args, **kwargs) def fake_pci_device_get_by_addr(context, node_id, dev_addr): return test_pci_device.fake_db_dev stubs.Set(db, 'pci_device_get_by_addr', fake_pci_device_get_by_addr) stubs.Set(compute_api.API, 'get', fake_get) stubs.Set(compute_api.API, 'get_all', fake_get_all) stubs.Set(compute_api.API, 'create', fake_create) def _get_fake_cache(): def _ip(ip, fixed=True, floats=None): ip_dict = {'address': ip, 'type': 'fixed'} if not fixed: ip_dict['type'] = 'floating' if fixed and floats: ip_dict['floating_ips'] = [_ip(f, fixed=False) for f in floats] return ip_dict info = [{'address': 'aa:bb:cc:dd:ee:ff', 'id': 1, 'network': {'bridge': 'br0', 'id': 1, 'label': 'private', 'subnets': [{'cidr': '192.168.0.0/24', 'ips': [_ip('192.168.0.3')]}]}}] if CONF.use_ipv6: ipv6_addr = 'fe80:b33f::a8bb:ccff:fedd:eeff' info[0]['network']['subnets'].append({'cidr': 'fe80:b33f::/64', 'ips': [_ip(ipv6_addr)]}) return jsonutils.dumps(info) def _get_instances_with_cached_ips(orig_func, *args, **kwargs): """Kludge the cache into instance(s) without having to create DB entries """ instances = orig_func(*args, **kwargs) context = args[0] fake_device = pci_device.PciDevice.get_by_dev_addr(context, 1, 'a') def _info_cache_for(instance): info_cache = dict(test_instance_info_cache.fake_info_cache, network_info=_get_fake_cache(), instance_uuid=instance['uuid']) if isinstance(instance, obj_base.NovaObject): _info_cache = instance_info_cache.InstanceInfoCache() instance_info_cache.InstanceInfoCache._from_db_object(context, _info_cache, info_cache) info_cache = _info_cache instance['info_cache'] = info_cache if isinstance(instances, (list, obj_base.ObjectListBase)): for instance in instances: _info_cache_for(instance) fake_device.claim(instance) fake_device.allocate(instance) else: _info_cache_for(instances) fake_device.claim(instances) fake_device.allocate(instances) return instances def _create_instances_with_cached_ips(orig_func, *args, **kwargs): """Kludge the above kludge so that the database doesn't get out of sync with the actual instance. """ instances, reservation_id = orig_func(*args, **kwargs) fake_cache = _get_fake_cache() for instance in instances: instance['info_cache']['network_info'] = fake_cache db.instance_info_cache_update(args[1], instance['uuid'], {'network_info': fake_cache}) return (instances, reservation_id) nova-2014.1/nova/tests/compute/0000775000175400017540000000000012323722546017471 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/compute/test_claims.py0000664000175400017540000002122112323721477022352 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for resource tracker claims.""" import re import uuid from nova.compute import claims from nova import exception from nova.openstack.common import jsonutils from nova.pci import pci_manager from nova import test class DummyTracker(object): icalled = False rcalled = False pci_tracker = pci_manager.PciDevTracker() def abort_instance_claim(self, *args, **kwargs): self.icalled = True def drop_resize_claim(self, *args, **kwargs): self.rcalled = True def new_pci_tracker(self): self.pci_tracker = pci_manager.PciDevTracker() class ClaimTestCase(test.NoDBTestCase): def setUp(self): super(ClaimTestCase, self).setUp() self.resources = self._fake_resources() self.tracker = DummyTracker() def _claim(self, limits=None, overhead=None, **kwargs): instance = self._fake_instance(**kwargs) if overhead is None: overhead = {'memory_mb': 0} return claims.Claim(instance, self.tracker, self.resources, overhead=overhead, limits=limits) def _fake_instance(self, **kwargs): instance = { 'uuid': str(uuid.uuid1()), 'memory_mb': 1024, 'root_gb': 10, 'ephemeral_gb': 5, 'vcpus': 1, 'system_metadata': {} } instance.update(**kwargs) return instance def _fake_instance_type(self, **kwargs): instance_type = { 'id': 1, 'name': 'fakeitype', 'memory_mb': 1, 'vcpus': 1, 'root_gb': 1, 'ephemeral_gb': 2 } instance_type.update(**kwargs) return instance_type def _fake_resources(self, values=None): resources = { 'memory_mb': 2048, 'memory_mb_used': 0, 'free_ram_mb': 2048, 'local_gb': 20, 'local_gb_used': 0, 'free_disk_gb': 20, 'vcpus': 2, 'vcpus_used': 0 } if values: resources.update(values) return resources # TODO(lxsli): Remove once Py2.6 is deprecated def assertRaisesRegexp(self, re_obj, e, fn, *a, **kw): try: fn(*a, **kw) self.fail("Expected exception not raised") except e as ee: self.assertTrue(re.search(re_obj, str(ee))) def test_cpu_unlimited(self): claim = self._claim(vcpus=100000) def test_memory_unlimited(self): claim = self._claim(memory_mb=99999999) def test_disk_unlimited_root(self): claim = self._claim(root_gb=999999) def test_disk_unlimited_ephemeral(self): claim = self._claim(ephemeral_gb=999999) def test_cpu_oversubscription(self): limits = {'vcpu': 16} claim = self._claim(limits, vcpus=8) def test_memory_with_overhead(self): overhead = {'memory_mb': 8} limits = {'memory_mb': 2048} claim = self._claim(memory_mb=2040, limits=limits, overhead=overhead) def test_memory_with_overhead_insufficient(self): overhead = {'memory_mb': 9} limits = {'memory_mb': 2048} self.assertRaises(exception.ComputeResourcesUnavailable, self._claim, limits=limits, overhead=overhead, memory_mb=2040) def test_cpu_insufficient(self): limits = {'vcpu': 16} self.assertRaises(exception.ComputeResourcesUnavailable, self._claim, limits=limits, vcpus=17) def test_memory_oversubscription(self): limits = {'memory_mb': 8192} claim = self._claim(memory_mb=4096) def test_memory_insufficient(self): limits = {'memory_mb': 8192} self.assertRaises(exception.ComputeResourcesUnavailable, self._claim, limits=limits, memory_mb=16384) def test_disk_oversubscription(self): limits = {'disk_gb': 60} claim = self._claim(root_gb=10, ephemeral_gb=40, limits=limits) def test_disk_insufficient(self): limits = {'disk_gb': 45} self.assertRaisesRegexp(re.compile("disk", re.IGNORECASE), exception.ComputeResourcesUnavailable, self._claim, limits=limits, root_gb=10, ephemeral_gb=40) def test_disk_and_memory_insufficient(self): limits = {'disk_gb': 45, 'memory_mb': 8192} self.assertRaisesRegexp(re.compile("memory.*disk", re.IGNORECASE), exception.ComputeResourcesUnavailable, self._claim, limits=limits, root_gb=10, ephemeral_gb=40, memory_mb=16384) def test_disk_and_cpu_insufficient(self): limits = {'disk_gb': 45, 'vcpu': 16} self.assertRaisesRegexp(re.compile("disk.*vcpus", re.IGNORECASE), exception.ComputeResourcesUnavailable, self._claim, limits=limits, root_gb=10, ephemeral_gb=40, vcpus=17) def test_disk_and_cpu_and_memory_insufficient(self): limits = {'disk_gb': 45, 'vcpu': 16, 'memory_mb': 8192} pat = "memory.*disk.*vcpus" self.assertRaisesRegexp(re.compile(pat, re.IGNORECASE), exception.ComputeResourcesUnavailable, self._claim, limits=limits, root_gb=10, ephemeral_gb=40, vcpus=17, memory_mb=16384) def test_pci_pass(self): dev_dict = { 'compute_node_id': 1, 'address': 'a', 'product_id': 'p', 'vendor_id': 'v', 'status': 'available'} self.tracker.new_pci_tracker() self.tracker.pci_tracker.set_hvdevs([dev_dict]) claim = self._claim() self._set_pci_request(claim) claim._test_pci() def _set_pci_request(self, claim): request = [{'count': 1, 'spec': [{'vendor_id': 'v', 'product_id': 'p'}], }] claim.instance.update( system_metadata={'pci_requests': jsonutils.dumps(request)}) def test_pci_fail(self): dev_dict = { 'compute_node_id': 1, 'address': 'a', 'product_id': 'p', 'vendor_id': 'v1', 'status': 'available'} self.tracker.new_pci_tracker() self.tracker.pci_tracker.set_hvdevs([dev_dict]) claim = self._claim() self._set_pci_request(claim) self.assertEqual("Claim pci failed.", claim._test_pci()) def test_pci_pass_no_requests(self): dev_dict = { 'compute_node_id': 1, 'address': 'a', 'product_id': 'p', 'vendor_id': 'v', 'status': 'available'} self.tracker.new_pci_tracker() self.tracker.pci_tracker.set_hvdevs([dev_dict]) claim = self._claim() self._set_pci_request(claim) claim._test_pci() def test_abort(self): claim = self._abort() self.assertTrue(claim.tracker.icalled) def _abort(self): claim = None try: with self._claim(memory_mb=4096) as claim: raise test.TestingException("abort") except test.TestingException: pass return claim class ResizeClaimTestCase(ClaimTestCase): def setUp(self): super(ResizeClaimTestCase, self).setUp() self.instance = self._fake_instance() def _claim(self, limits=None, overhead=None, **kwargs): instance_type = self._fake_instance_type(**kwargs) if overhead is None: overhead = {'memory_mb': 0} return claims.ResizeClaim(self.instance, instance_type, self.tracker, self.resources, overhead=overhead, limits=limits) def _set_pci_request(self, claim): request = [{'count': 1, 'spec': [{'vendor_id': 'v', 'product_id': 'p'}], }] claim.instance.update( system_metadata={'new_pci_requests': jsonutils.dumps(request)}) def test_abort(self): claim = self._abort() self.assertTrue(claim.tracker.rcalled) nova-2014.1/nova/tests/compute/test_compute_api.py0000664000175400017540000024406012323721510023403 0ustar jenkinsjenkins00000000000000# # 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. """Unit tests for compute API.""" import copy import datetime import iso8601 import mock import mox from nova.compute import api as compute_api from nova.compute import cells_api as compute_cells_api from nova.compute import flavors from nova.compute import instance_actions from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_mode from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.objects import base as obj_base from nova.objects import block_device as block_device_obj from nova.objects import external_event as external_event_obj from nova.objects import instance as instance_obj from nova.objects import instance_info_cache from nova.objects import migration as migration_obj from nova.objects import quotas as quotas_obj from nova.objects import service as service_obj from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import quota from nova import test from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests.image import fake as fake_image from nova.tests import matchers from nova.tests.objects import test_flavor from nova.tests.objects import test_migration from nova.tests.objects import test_service FAKE_IMAGE_REF = 'fake-image-ref' NODENAME = 'fakenode1' SHELVED_IMAGE = 'fake-shelved-image' SHELVED_IMAGE_NOT_FOUND = 'fake-shelved-image-notfound' SHELVED_IMAGE_NOT_AUTHORIZED = 'fake-shelved-image-not-authorized' SHELVED_IMAGE_EXCEPTION = 'fake-shelved-image-exception' class _ComputeAPIUnitTestMixIn(object): def setUp(self): super(_ComputeAPIUnitTestMixIn, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) def _create_flavor(self, params=None): flavor = {'id': 1, 'flavorid': 1, 'name': 'm1.tiny', 'memory_mb': 512, 'vcpus': 1, 'vcpu_weight': None, 'root_gb': 1, 'ephemeral_gb': 0, 'rxtx_factor': 1, 'swap': 0, 'deleted': 0, 'disabled': False, 'is_public': True, } if params: flavor.update(params) return flavor def _create_instance_obj(self, params=None, flavor=None): """Create a test instance.""" if not params: params = {} if flavor is None: flavor = self._create_flavor() def make_fake_sys_meta(): sys_meta = params.pop("system_metadata", {}) for key in flavors.system_metadata_flavor_props: sys_meta['instance_type_%s' % key] = flavor[key] return sys_meta now = timeutils.utcnow() instance = instance_obj.Instance() instance.metadata = {} instance.metadata.update(params.pop('metadata', {})) instance.system_metadata = make_fake_sys_meta() instance.system_metadata.update(params.pop('system_metadata', {})) instance._context = self.context instance.id = 1 instance.uuid = uuidutils.generate_uuid() instance.cell_name = 'api!child' instance.vm_state = vm_states.ACTIVE instance.task_state = None instance.image_ref = FAKE_IMAGE_REF instance.reservation_id = 'r-fakeres' instance.user_id = self.user_id instance.project_id = self.project_id instance.host = 'fake_host' instance.node = NODENAME instance.instance_type_id = flavor['id'] instance.ami_launch_index = 0 instance.memory_mb = 0 instance.vcpus = 0 instance.root_gb = 0 instance.ephemeral_gb = 0 instance.architecture = 'x86_64' instance.os_type = 'Linux' instance.locked = False instance.created_at = now instance.updated_at = now instance.launched_at = now instance.disable_terminate = False instance.info_cache = instance_info_cache.InstanceInfoCache() if params: instance.update(params) instance.obj_reset_changes() return instance def test_create_quota_exceeded_messages(self): image_href = "image_href" image_id = 0 instance_type = self._create_flavor() self.mox.StubOutWithMock(self.compute_api, "_get_image") self.mox.StubOutWithMock(quota.QUOTAS, "limit_check") self.mox.StubOutWithMock(quota.QUOTAS, "reserve") quotas = {'instances': 1, 'cores': 1, 'ram': 1} usages = dict((r, {'in_use': 1, 'reserved': 1}) for r in ['instances', 'cores', 'ram']) headroom = dict((res, quotas[res] - (usages[res]['in_use'] + usages[res]['reserved'])) for res in quotas.keys()) quota_exception = exception.OverQuota(quotas=quotas, usages=usages, overs=['instances'], headroom=headroom) for _unused in range(2): self.compute_api._get_image(self.context, image_href).AndReturn( (image_id, {})) quota.QUOTAS.limit_check(self.context, metadata_items=mox.IsA(int)) quota.QUOTAS.reserve(self.context, instances=40, cores=mox.IsA(int), ram=mox.IsA(int)).AndRaise(quota_exception) self.mox.ReplayAll() for min_count, message in [(20, '20-40'), (40, '40')]: try: self.compute_api.create(self.context, instance_type, "image_href", min_count=min_count, max_count=40) except exception.TooManyInstances as e: self.assertEqual(message, e.kwargs['req']) else: self.fail("Exception not raised") def test_suspend(self): # Ensure instance can be suspended. instance = self._create_instance_obj() self.assertEqual(instance.vm_state, vm_states.ACTIVE) self.assertIsNone(instance.task_state) self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'suspend_instance') instance.save(expected_task_state=[None]) self.compute_api._record_action_start(self.context, instance, instance_actions.SUSPEND) rpcapi.suspend_instance(self.context, instance) self.mox.ReplayAll() self.compute_api.suspend(self.context, instance) self.assertEqual(vm_states.ACTIVE, instance.vm_state) self.assertEqual(task_states.SUSPENDING, instance.task_state) def test_resume(self): # Ensure instance can be resumed (if suspended). instance = self._create_instance_obj( params=dict(vm_state=vm_states.SUSPENDED)) self.assertEqual(instance.vm_state, vm_states.SUSPENDED) self.assertIsNone(instance.task_state) self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'resume_instance') instance.save(expected_task_state=[None]) self.compute_api._record_action_start(self.context, instance, instance_actions.RESUME) rpcapi.resume_instance(self.context, instance) self.mox.ReplayAll() self.compute_api.resume(self.context, instance) self.assertEqual(vm_states.SUSPENDED, instance.vm_state) self.assertEqual(task_states.RESUMING, instance.task_state) def test_start(self): params = dict(vm_state=vm_states.STOPPED) instance = self._create_instance_obj(params=params) self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') instance.save(expected_task_state=[None]) self.compute_api._record_action_start(self.context, instance, instance_actions.START) if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'start_instance') rpcapi.start_instance(self.context, instance) self.mox.ReplayAll() self.compute_api.start(self.context, instance) self.assertEqual(task_states.POWERING_ON, instance.task_state) def test_start_invalid_state(self): instance = self._create_instance_obj() self.assertEqual(instance.vm_state, vm_states.ACTIVE) self.assertRaises(exception.InstanceInvalidState, self.compute_api.start, self.context, instance) def test_start_no_host(self): params = dict(vm_state=vm_states.STOPPED, host='') instance = self._create_instance_obj(params=params) self.assertRaises(exception.InstanceNotReady, self.compute_api.start, self.context, instance) def _test_stop(self, vm_state, force=False): # Make sure 'progress' gets reset params = dict(task_state=None, progress=99, vm_state=vm_state) instance = self._create_instance_obj(params=params) self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') instance.save(expected_task_state=[None]) self.compute_api._record_action_start(self.context, instance, instance_actions.STOP) if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'stop_instance') rpcapi.stop_instance(self.context, instance, do_cast=True) self.mox.ReplayAll() if force: self.compute_api.force_stop(self.context, instance) else: self.compute_api.stop(self.context, instance) self.assertEqual(task_states.POWERING_OFF, instance.task_state) self.assertEqual(0, instance.progress) def test_stop(self): self._test_stop(vm_states.ACTIVE) def test_stop_stopped_instance_with_bypass(self): self._test_stop(vm_states.STOPPED, force=True) def test_stop_invalid_state(self): params = dict(vm_state=vm_states.PAUSED) instance = self._create_instance_obj(params=params) self.assertRaises(exception.InstanceInvalidState, self.compute_api.stop, self.context, instance) def test_stop_a_stopped_inst(self): params = {'vm_state': vm_states.STOPPED} instance = self._create_instance_obj(params=params) self.assertRaises(exception.InstanceInvalidState, self.compute_api.stop, self.context, instance) def test_stop_no_host(self): params = {'host': ''} instance = self._create_instance_obj(params=params) self.assertRaises(exception.InstanceNotReady, self.compute_api.stop, self.context, instance) def _test_reboot_type(self, vm_state, reboot_type, task_state=None): # Ensure instance can be soft rebooted. inst = self._create_instance_obj() inst.vm_state = vm_state inst.task_state = task_state self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api, 'update') self.mox.StubOutWithMock(inst, 'save') inst.save(expected_task_state=[None, task_states.REBOOTING]) self.compute_api._record_action_start(self.context, inst, instance_actions.REBOOT) if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'reboot_instance') rpcapi.reboot_instance(self.context, instance=inst, block_device_info=None, reboot_type=reboot_type) self.mox.ReplayAll() self.compute_api.reboot(self.context, inst, reboot_type) def _test_reboot_type_fails(self, reboot_type, **updates): inst = self._create_instance_obj() inst.update(updates) self.assertRaises(exception.InstanceInvalidState, self.compute_api.reboot, self.context, inst, reboot_type) def test_reboot_hard_active(self): self._test_reboot_type(vm_states.ACTIVE, 'HARD') def test_reboot_hard_error(self): self._test_reboot_type(vm_states.ERROR, 'HARD') def test_reboot_hard_rebooting(self): self._test_reboot_type(vm_states.ACTIVE, 'HARD', task_state=task_states.REBOOTING) def test_reboot_hard_rescued(self): self._test_reboot_type_fails('HARD', vm_state=vm_states.RESCUED) def test_reboot_hard_error_not_launched(self): self._test_reboot_type_fails('HARD', vm_state=vm_states.ERROR, launched_at=None) def test_reboot_soft(self): self._test_reboot_type(vm_states.ACTIVE, 'SOFT') def test_reboot_soft_error(self): self._test_reboot_type_fails('SOFT', vm_state=vm_states.ERROR) def test_reboot_soft_paused(self): self._test_reboot_type_fails('SOFT', vm_state=vm_states.PAUSED) def test_reboot_soft_stopped(self): self._test_reboot_type_fails('SOFT', vm_state=vm_states.STOPPED) def test_reboot_soft_suspended(self): self._test_reboot_type_fails('SOFT', vm_state=vm_states.SUSPENDED) def test_reboot_soft_rebooting(self): self._test_reboot_type_fails('SOFT', task_state=task_states.REBOOTING) def test_reboot_soft_rebooting_hard(self): self._test_reboot_type_fails('SOFT', task_state=task_states.REBOOTING_HARD) def test_reboot_soft_rescued(self): self._test_reboot_type_fails('SOFT', vm_state=vm_states.RESCUED) def test_reboot_soft_error_not_launched(self): self._test_reboot_type_fails('SOFT', vm_state=vm_states.ERROR, launched_at=None) def _test_delete_resized_part(self, inst): migration = migration_obj.Migration._from_db_object( self.context, migration_obj.Migration(), test_migration.fake_db_migration()) self.mox.StubOutWithMock(migration_obj.Migration, 'get_by_instance_and_status') self.context.elevated().AndReturn(self.context) migration_obj.Migration.get_by_instance_and_status( self.context, inst.uuid, 'finished').AndReturn(migration) self.compute_api._downsize_quota_delta(self.context, inst ).AndReturn('deltas') fake_quotas = quotas_obj.Quotas.from_reservations(self.context, ['rsvs']) self.compute_api._reserve_quota_delta(self.context, 'deltas' ).AndReturn(fake_quotas) self.compute_api._record_action_start( self.context, inst, instance_actions.CONFIRM_RESIZE) self.compute_api.compute_rpcapi.confirm_resize( self.context, inst, migration, migration['source_compute'], fake_quotas.reservations, cast=False) def _test_delete_shelved_part(self, inst): image_service = self.compute_api.image_service self.mox.StubOutWithMock(image_service, 'delete') snapshot_id = inst.system_metadata.get('shelved_image_id') if snapshot_id == SHELVED_IMAGE: image_service.delete(self.context, snapshot_id).AndReturn(True) elif snapshot_id == SHELVED_IMAGE_NOT_FOUND: image_service.delete(self.context, snapshot_id).AndRaise( exception.ImageNotFound(image_id=snapshot_id)) elif snapshot_id == SHELVED_IMAGE_NOT_AUTHORIZED: image_service.delete(self.context, snapshot_id).AndRaise( exception.ImageNotAuthorized(image_id=snapshot_id)) elif snapshot_id == SHELVED_IMAGE_EXCEPTION: image_service.delete(self.context, snapshot_id).AndRaise( test.TestingException("Unexpected error")) def _test_downed_host_part(self, inst, updates, delete_time, delete_type): inst.info_cache.delete() compute_utils.notify_about_instance_usage( self.compute_api.notifier, self.context, inst, '%s.start' % delete_type) self.context.elevated().AndReturn(self.context) self.compute_api.network_api.deallocate_for_instance( self.context, inst) state = ('soft' in delete_type and vm_states.SOFT_DELETED or vm_states.DELETED) updates.update({'vm_state': state, 'task_state': None, 'terminated_at': delete_time}) inst.save() updates.update({'deleted_at': delete_time, 'deleted': True}) fake_inst = fake_instance.fake_db_instance(**updates) db.instance_destroy(self.context, inst.uuid, constraint=None).AndReturn(fake_inst) compute_utils.notify_about_instance_usage( self.compute_api.notifier, self.context, inst, '%s.end' % delete_type, system_metadata=inst.system_metadata) def _test_delete(self, delete_type, **attrs): reservations = 'fake-resv' inst = self._create_instance_obj() inst.update(attrs) inst._context = self.context delete_time = datetime.datetime(1955, 11, 5, 9, 30, tzinfo=iso8601.iso8601.Utc()) timeutils.set_time_override(delete_time) task_state = (delete_type == 'soft_delete' and task_states.SOFT_DELETING or task_states.DELETING) updates = {'progress': 0, 'task_state': task_state} if delete_type == 'soft_delete': updates['deleted_at'] = delete_time self.mox.StubOutWithMock(inst, 'save') self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute_api, '_create_reservations') self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(db, 'service_get_by_compute_host') self.mox.StubOutWithMock(self.compute_api.servicegroup_api, 'service_is_up') self.mox.StubOutWithMock(db, 'migration_get_by_instance_and_status') self.mox.StubOutWithMock(self.compute_api, '_downsize_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(inst.info_cache, 'delete') self.mox.StubOutWithMock(self.compute_api.network_api, 'deallocate_for_instance') self.mox.StubOutWithMock(db, 'instance_system_metadata_get') self.mox.StubOutWithMock(db, 'instance_destroy') self.mox.StubOutWithMock(compute_utils, 'notify_about_instance_usage') self.mox.StubOutWithMock(quota.QUOTAS, 'commit') rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'confirm_resize') if (inst.vm_state in (vm_states.SHELVED, vm_states.SHELVED_OFFLOADED)): self._test_delete_shelved_part(inst) if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi self.mox.StubOutWithMock(rpcapi, 'terminate_instance') self.mox.StubOutWithMock(rpcapi, 'soft_delete_instance') block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, inst.uuid).AndReturn([]) inst.save() self.compute_api._create_reservations( self.context, inst, inst.instance_type_id, inst.project_id, inst.user_id).AndReturn(reservations) # NOTE(comstud): This is getting messy. But what we are wanting # to test is: # If cells is enabled and we're the API cell: # * Cast to cells_rpcapi. with reservations=None # * Commit reservations # Otherwise: # * Check for downed host # * If downed host: # * Clean up instance, destroying it, sending notifications. # (Tested in _test_downed_host_part()) # * Commit reservations # * If not downed host: # * Record the action start. # * Cast to compute_rpcapi. with the reservations cast = True commit_quotas = True if self.cell_type != 'api': if inst.vm_state == vm_states.RESIZED: self._test_delete_resized_part(inst) self.context.elevated().AndReturn(self.context) db.service_get_by_compute_host( self.context, inst.host).AndReturn( test_service.fake_service) self.compute_api.servicegroup_api.service_is_up( mox.IsA(service_obj.Service)).AndReturn( inst.host != 'down-host') if inst.host == 'down-host': self._test_downed_host_part(inst, updates, delete_time, delete_type) cast = False else: # Happens on the manager side commit_quotas = False if cast: if self.cell_type != 'api': self.compute_api._record_action_start(self.context, inst, instance_actions.DELETE) if commit_quotas: cast_reservations = None else: cast_reservations = reservations if delete_type == 'soft_delete': rpcapi.soft_delete_instance(self.context, inst, reservations=cast_reservations) elif delete_type in ['delete', 'force_delete']: rpcapi.terminate_instance(self.context, inst, [], reservations=cast_reservations) if commit_quotas: # Local delete or when we're testing API cell. quota.QUOTAS.commit(self.context, reservations, project_id=inst.project_id, user_id=inst.user_id) self.mox.ReplayAll() getattr(self.compute_api, delete_type)(self.context, inst) for k, v in updates.items(): self.assertEqual(inst[k], v) def test_delete(self): self._test_delete('delete') def test_delete_if_not_launched(self): self._test_delete('delete', launched_at=None) def test_delete_in_resizing(self): self._test_delete('delete', task_state=task_states.RESIZE_FINISH) def test_delete_in_resized(self): self._test_delete('delete', vm_state=vm_states.RESIZED) def test_delete_shelved(self): fake_sys_meta = {'shelved_image_id': SHELVED_IMAGE} self._test_delete('delete', vm_state=vm_states.SHELVED, system_metadata=fake_sys_meta) def test_delete_shelved_offloaded(self): fake_sys_meta = {'shelved_image_id': SHELVED_IMAGE} self._test_delete('delete', vm_state=vm_states.SHELVED_OFFLOADED, system_metadata=fake_sys_meta) def test_delete_shelved_image_not_found(self): fake_sys_meta = {'shelved_image_id': SHELVED_IMAGE_NOT_FOUND} self._test_delete('delete', vm_state=vm_states.SHELVED_OFFLOADED, system_metadata=fake_sys_meta) def test_delete_shelved_image_not_authorized(self): fake_sys_meta = {'shelved_image_id': SHELVED_IMAGE_NOT_AUTHORIZED} self._test_delete('delete', vm_state=vm_states.SHELVED_OFFLOADED, system_metadata=fake_sys_meta) def test_delete_shelved_exception(self): fake_sys_meta = {'shelved_image_id': SHELVED_IMAGE_EXCEPTION} self._test_delete('delete', vm_state=vm_states.SHELVED, system_metadata=fake_sys_meta) def test_delete_with_down_host(self): self._test_delete('delete', host='down-host') def test_delete_soft_with_down_host(self): self._test_delete('soft_delete', host='down-host') def test_delete_soft(self): self._test_delete('soft_delete') def test_delete_forced(self): self._test_delete('force_delete', vm_state=vm_states.SOFT_DELETED) def test_delete_fast_if_host_not_set(self): inst = self._create_instance_obj() inst.host = '' updates = {'progress': 0, 'task_state': task_states.DELETING} self.mox.StubOutWithMock(inst, 'save') self.mox.StubOutWithMock(db, 'block_device_mapping_get_all_by_instance') self.mox.StubOutWithMock(db, 'constraint') self.mox.StubOutWithMock(db, 'instance_destroy') self.mox.StubOutWithMock(self.compute_api, '_create_reservations') self.mox.StubOutWithMock(compute_utils, 'notify_about_instance_usage') if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'terminate_instance') db.block_device_mapping_get_all_by_instance(self.context, inst.uuid, use_slave=False).AndReturn([]) inst.save() self.compute_api._create_reservations(self.context, inst, inst.instance_type_id, inst.project_id, inst.user_id ).AndReturn(None) if self.cell_type == 'api': rpcapi.terminate_instance( self.context, inst, mox.IsA(block_device_obj.BlockDeviceMappingList), reservations=None) else: compute_utils.notify_about_instance_usage( self.compute_api.notifier, self.context, inst, 'delete.start') db.constraint(host=mox.IgnoreArg()).AndReturn('constraint') delete_time = datetime.datetime(1955, 11, 5, 9, 30, tzinfo=iso8601.iso8601.Utc()) updates['deleted_at'] = delete_time updates['deleted'] = True fake_inst = fake_instance.fake_db_instance(**updates) db.instance_destroy(self.context, inst.uuid, constraint='constraint').AndReturn(fake_inst) compute_utils.notify_about_instance_usage( self.compute_api.notifier, self.context, inst, 'delete.end', system_metadata=inst.system_metadata) self.mox.ReplayAll() self.compute_api.delete(self.context, inst) for k, v in updates.items(): self.assertEqual(inst[k], v) def test_local_delete_with_deleted_volume(self): bdms = [block_device_obj.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( {'id': 42, 'volume_id': 'volume_id', 'source_type': 'volume', 'destination_type': 'volume', 'delete_on_termination': False}))] def _fake_do_delete(context, instance, bdms, rservations=None, local=False): pass inst = self._create_instance_obj() inst._context = self.context self.mox.StubOutWithMock(inst, 'destroy') self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(inst.info_cache, 'delete') self.mox.StubOutWithMock(self.compute_api.network_api, 'deallocate_for_instance') self.mox.StubOutWithMock(db, 'instance_system_metadata_get') self.mox.StubOutWithMock(compute_utils, 'notify_about_instance_usage') self.mox.StubOutWithMock(self.compute_api.volume_api, 'terminate_connection') self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'destroy') inst.info_cache.delete() compute_utils.notify_about_instance_usage( self.compute_api.notifier, self.context, inst, 'delete.start') self.context.elevated().MultipleTimes().AndReturn(self.context) if self.cell_type != 'api': self.compute_api.network_api.deallocate_for_instance( self.context, inst) self.compute_api.volume_api.terminate_connection( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).\ AndRaise(exception. VolumeNotFound('volume_id')) bdms[0].destroy(self.context) inst.destroy() compute_utils.notify_about_instance_usage( self.compute_api.notifier, self.context, inst, 'delete.end', system_metadata=inst.system_metadata) self.mox.ReplayAll() self.compute_api._local_delete(self.context, inst, bdms, 'delete', _fake_do_delete) def test_delete_disabled(self): inst = self._create_instance_obj() inst.disable_terminate = True self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.ReplayAll() self.compute_api.delete(self.context, inst) def test_delete_soft_rollback(self): inst = self._create_instance_obj() self.mox.StubOutWithMock(db, 'block_device_mapping_get_all_by_instance') self.mox.StubOutWithMock(inst, 'save') delete_time = datetime.datetime(1955, 11, 5) timeutils.set_time_override(delete_time) db.block_device_mapping_get_all_by_instance( self.context, inst.uuid, use_slave=False).AndReturn([]) inst.save().AndRaise(test.TestingException) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.compute_api.soft_delete, self.context, inst) def _test_confirm_resize(self, mig_ref_passed=False): params = dict(vm_state=vm_states.RESIZED) fake_inst = self._create_instance_obj(params=params) fake_mig = migration_obj.Migration._from_db_object( self.context, migration_obj.Migration(), test_migration.fake_db_migration()) self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(migration_obj.Migration, 'get_by_instance_and_status') self.mox.StubOutWithMock(self.compute_api, '_downsize_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(fake_mig, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'confirm_resize') self.context.elevated().AndReturn(self.context) if not mig_ref_passed: migration_obj.Migration.get_by_instance_and_status( self.context, fake_inst['uuid'], 'finished').AndReturn( fake_mig) self.compute_api._downsize_quota_delta(self.context, fake_inst).AndReturn('deltas') resvs = ['resvs'] fake_quotas = quotas_obj.Quotas.from_reservations(self.context, resvs) self.compute_api._reserve_quota_delta(self.context, 'deltas').AndReturn(fake_quotas) def _check_mig(expected_task_state=None): self.assertEqual('confirming', fake_mig.status) fake_mig.save().WithSideEffects(_check_mig) if self.cell_type: fake_quotas.commit(self.context) self.compute_api._record_action_start(self.context, fake_inst, 'confirmResize') self.compute_api.compute_rpcapi.confirm_resize( self.context, fake_inst, fake_mig, 'compute-source', [] if self.cell_type else fake_quotas.reservations) self.mox.ReplayAll() if mig_ref_passed: self.compute_api.confirm_resize(self.context, fake_inst, migration=fake_mig) else: self.compute_api.confirm_resize(self.context, fake_inst) def test_confirm_resize(self): self._test_confirm_resize() def test_confirm_resize_with_migration_ref(self): self._test_confirm_resize(mig_ref_passed=True) def _test_revert_resize(self): params = dict(vm_state=vm_states.RESIZED) fake_inst = self._create_instance_obj(params=params) fake_mig = migration_obj.Migration._from_db_object( self.context, migration_obj.Migration(), test_migration.fake_db_migration()) self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(migration_obj.Migration, 'get_by_instance_and_status') self.mox.StubOutWithMock(self.compute_api, '_reverse_upsize_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(fake_inst, 'save') self.mox.StubOutWithMock(fake_mig, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'revert_resize') self.context.elevated().AndReturn(self.context) migration_obj.Migration.get_by_instance_and_status( self.context, fake_inst['uuid'], 'finished').AndReturn( fake_mig) self.compute_api._reverse_upsize_quota_delta( self.context, fake_mig).AndReturn('deltas') resvs = ['resvs'] fake_quotas = quotas_obj.Quotas.from_reservations(self.context, resvs) self.compute_api._reserve_quota_delta(self.context, 'deltas').AndReturn(fake_quotas) def _check_state(expected_task_state=None): self.assertEqual(task_states.RESIZE_REVERTING, fake_inst.task_state) fake_inst.save(expected_task_state=[None]).WithSideEffects( _check_state) def _check_mig(expected_task_state=None): self.assertEqual('reverting', fake_mig.status) fake_mig.save().WithSideEffects(_check_mig) if self.cell_type: fake_quotas.commit(self.context) self.compute_api._record_action_start(self.context, fake_inst, 'revertResize') self.compute_api.compute_rpcapi.revert_resize( self.context, fake_inst, fake_mig, 'compute-dest', [] if self.cell_type else fake_quotas.reservations) self.mox.ReplayAll() self.compute_api.revert_resize(self.context, fake_inst) def test_revert_resize(self): self._test_revert_resize() def test_revert_resize_concurent_fail(self): params = dict(vm_state=vm_states.RESIZED) fake_inst = self._create_instance_obj(params=params) fake_mig = migration_obj.Migration._from_db_object( self.context, migration_obj.Migration(), test_migration.fake_db_migration()) self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(migration_obj.Migration, 'get_by_instance_and_status') self.mox.StubOutWithMock(self.compute_api, '_reverse_upsize_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(fake_inst, 'save') self.context.elevated().AndReturn(self.context) migration_obj.Migration.get_by_instance_and_status( self.context, fake_inst['uuid'], 'finished').AndReturn(fake_mig) delta = ['delta'] self.compute_api._reverse_upsize_quota_delta( self.context, fake_mig).AndReturn(delta) resvs = ['resvs'] fake_quotas = quotas_obj.Quotas.from_reservations(self.context, resvs) self.compute_api._reserve_quota_delta( self.context, delta).AndReturn(fake_quotas) exc = exception.UnexpectedTaskStateError( actual=task_states.RESIZE_REVERTING, expected=None) fake_inst.save(expected_task_state=[None]).AndRaise(exc) fake_quotas.rollback(self.context) self.mox.ReplayAll() self.assertRaises(exception.UnexpectedTaskStateError, self.compute_api.revert_resize, self.context, fake_inst) def _test_resize(self, flavor_id_passed=True, same_host=False, allow_same_host=False, allow_mig_same_host=False, project_id=None, extra_kwargs=None, same_flavor=False): if extra_kwargs is None: extra_kwargs = {} self.flags(allow_resize_to_same_host=allow_same_host, allow_migrate_to_same_host=allow_mig_same_host) params = {} if project_id is not None: # To test instance w/ different project id than context (admin) params['project_id'] = project_id fake_inst = self._create_instance_obj(params=params) self.mox.StubOutWithMock(flavors, 'get_flavor_by_flavor_id') self.mox.StubOutWithMock(self.compute_api, '_upsize_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(fake_inst, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api.compute_task_api, 'resize_instance') current_flavor = flavors.extract_flavor(fake_inst) if flavor_id_passed: new_flavor = dict(id=200, flavorid='new-flavor-id', name='new_flavor', disabled=False) if same_flavor: cur_flavor = flavors.extract_flavor(fake_inst) new_flavor['id'] = cur_flavor['id'] flavors.get_flavor_by_flavor_id( 'new-flavor-id', read_deleted='no').AndReturn(new_flavor) else: new_flavor = current_flavor if (self.cell_type == 'compute' or not (flavor_id_passed and same_flavor)): resvs = ['resvs'] project_id, user_id = quotas_obj.ids_from_instance(self.context, fake_inst) fake_quotas = quotas_obj.Quotas.from_reservations(self.context, resvs) self.compute_api._upsize_quota_delta( self.context, new_flavor, current_flavor).AndReturn('deltas') self.compute_api._reserve_quota_delta(self.context, 'deltas', project_id=project_id).AndReturn(fake_quotas) def _check_state(expected_task_state=None): self.assertEqual(task_states.RESIZE_PREP, fake_inst.task_state) self.assertEqual(fake_inst.progress, 0) for key, value in extra_kwargs.items(): self.assertEqual(value, getattr(fake_inst, key)) fake_inst.save(expected_task_state=[None]).WithSideEffects( _check_state) if allow_same_host: filter_properties = {'ignore_hosts': []} else: filter_properties = {'ignore_hosts': [fake_inst['host']]} if not flavor_id_passed and not allow_mig_same_host: filter_properties['ignore_hosts'].append(fake_inst['host']) expected_reservations = fake_quotas.reservations if self.cell_type == 'api': fake_quotas.commit(self.context) expected_reservations = [] mig = migration_obj.Migration() def _get_migration(): return mig def _check_mig(ctxt): self.assertEqual(fake_inst.uuid, mig.instance_uuid) self.assertEqual(current_flavor['id'], mig.old_instance_type_id) self.assertEqual(new_flavor['id'], mig.new_instance_type_id) self.assertEqual('finished', mig.status) self.stubs.Set(migration_obj, 'Migration', _get_migration) self.mox.StubOutWithMock(self.context, 'elevated') self.mox.StubOutWithMock(mig, 'create') self.context.elevated().AndReturn(self.context) mig.create(self.context).WithSideEffects(_check_mig) self.compute_api._record_action_start(self.context, fake_inst, 'resize') scheduler_hint = {'filter_properties': filter_properties} self.compute_api.compute_task_api.resize_instance( self.context, fake_inst, extra_kwargs, scheduler_hint=scheduler_hint, flavor=new_flavor, reservations=expected_reservations) self.mox.ReplayAll() if flavor_id_passed: self.compute_api.resize(self.context, fake_inst, flavor_id='new-flavor-id', **extra_kwargs) else: self.compute_api.resize(self.context, fake_inst, **extra_kwargs) def _test_migrate(self, *args, **kwargs): self._test_resize(*args, flavor_id_passed=False, **kwargs) def test_resize(self): self._test_resize() def test_resize_with_kwargs(self): self._test_resize(extra_kwargs=dict(cow='moo')) def test_resize_same_host_and_allowed(self): self._test_resize(same_host=True, allow_same_host=True) def test_resize_same_host_and_not_allowed(self): self._test_resize(same_host=True, allow_same_host=False) def test_resize_different_project_id(self): self._test_resize(project_id='different') def test_migrate(self): self._test_migrate() def test_migrate_with_kwargs(self): self._test_migrate(extra_kwargs=dict(cow='moo')) def test_migrate_same_host_and_allowed(self): self._test_migrate(same_host=True, allow_same_host=True) def test_migrate_same_host_and_not_allowed(self): self._test_migrate(same_host=True, allow_same_host=False) def test_migrate_different_project_id(self): self._test_migrate(project_id='different') def test_resize_invalid_flavor_fails(self): self.mox.StubOutWithMock(flavors, 'get_flavor_by_flavor_id') # Should never reach these. self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(self.compute_api, 'update') self.mox.StubOutWithMock(quota.QUOTAS, 'commit') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api.compute_task_api, 'resize_instance') fake_inst = obj_base.obj_to_primitive(self._create_instance_obj()) exc = exception.FlavorNotFound(flavor_id='flavor-id') flavors.get_flavor_by_flavor_id('flavor-id', read_deleted='no').AndRaise(exc) self.mox.ReplayAll() self.assertRaises(exception.FlavorNotFound, self.compute_api.resize, self.context, fake_inst, flavor_id='flavor-id') def test_resize_disabled_flavor_fails(self): self.mox.StubOutWithMock(flavors, 'get_flavor_by_flavor_id') # Should never reach these. self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') self.mox.StubOutWithMock(self.compute_api, 'update') self.mox.StubOutWithMock(quota.QUOTAS, 'commit') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api.compute_task_api, 'resize_instance') fake_inst = obj_base.obj_to_primitive(self._create_instance_obj()) fake_flavor = dict(id=200, flavorid='flavor-id', name='foo', disabled=True) flavors.get_flavor_by_flavor_id( 'flavor-id', read_deleted='no').AndReturn(fake_flavor) self.mox.ReplayAll() self.assertRaises(exception.FlavorNotFound, self.compute_api.resize, self.context, fake_inst, flavor_id='flavor-id') def test_resize_quota_exceeds_fails(self): self.mox.StubOutWithMock(flavors, 'get_flavor_by_flavor_id') self.mox.StubOutWithMock(self.compute_api, '_upsize_quota_delta') self.mox.StubOutWithMock(self.compute_api, '_reserve_quota_delta') # Should never reach these. self.mox.StubOutWithMock(self.compute_api, 'update') self.mox.StubOutWithMock(quota.QUOTAS, 'commit') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') self.mox.StubOutWithMock(self.compute_api.compute_task_api, 'resize_instance') fake_inst = obj_base.obj_to_primitive(self._create_instance_obj()) current_flavor = flavors.extract_flavor(fake_inst) fake_flavor = dict(id=200, flavorid='flavor-id', name='foo', disabled=False) flavors.get_flavor_by_flavor_id( 'flavor-id', read_deleted='no').AndReturn(fake_flavor) deltas = dict(resource=0) self.compute_api._upsize_quota_delta( self.context, fake_flavor, current_flavor).AndReturn(deltas) usage = dict(in_use=0, reserved=0) quotas = {'resource': 0} usages = {'resource': usage} overs = ['resource'] headroom = {'resource': quotas['resource'] - (usages['resource']['in_use'] + usages['resource']['reserved'])} over_quota_args = dict(quotas=quotas, usages=usages, overs=overs, headroom=headroom) self.compute_api._reserve_quota_delta(self.context, deltas, project_id=fake_inst['project_id']).AndRaise( exception.OverQuota(**over_quota_args)) self.mox.ReplayAll() self.assertRaises(exception.TooManyInstances, self.compute_api.resize, self.context, fake_inst, flavor_id='flavor-id') def test_pause(self): # Ensure instance can be paused. instance = self._create_instance_obj() self.assertEqual(instance.vm_state, vm_states.ACTIVE) self.assertIsNone(instance.task_state) self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'pause_instance') instance.save(expected_task_state=[None]) self.compute_api._record_action_start(self.context, instance, instance_actions.PAUSE) rpcapi.pause_instance(self.context, instance) self.mox.ReplayAll() self.compute_api.pause(self.context, instance) self.assertEqual(vm_states.ACTIVE, instance.vm_state) self.assertEqual(task_states.PAUSING, instance.task_state) def test_unpause(self): # Ensure instance can be unpaused. params = dict(vm_state=vm_states.PAUSED) instance = self._create_instance_obj(params=params) self.assertEqual(instance.vm_state, vm_states.PAUSED) self.assertIsNone(instance.task_state) self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, '_record_action_start') if self.cell_type == 'api': rpcapi = self.compute_api.cells_rpcapi else: rpcapi = self.compute_api.compute_rpcapi self.mox.StubOutWithMock(rpcapi, 'unpause_instance') instance.save(expected_task_state=[None]) self.compute_api._record_action_start(self.context, instance, instance_actions.UNPAUSE) rpcapi.unpause_instance(self.context, instance) self.mox.ReplayAll() self.compute_api.unpause(self.context, instance) self.assertEqual(vm_states.PAUSED, instance.vm_state) self.assertEqual(task_states.UNPAUSING, instance.task_state) def test_swap_volume_volume_api_usage(self): # This test ensures that volume_id arguments are passed to volume_api # and that volumes return to previous states in case of error. def fake_vol_api_begin_detaching(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) volumes[volume_id]['status'] = 'detaching' def fake_vol_api_roll_detaching(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) if volumes[volume_id]['status'] == 'detaching': volumes[volume_id]['status'] = 'in-use' def fake_vol_api_reserve(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) self.assertEqual(volumes[volume_id]['status'], 'available') volumes[volume_id]['status'] = 'attaching' def fake_vol_api_unreserve(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) if volumes[volume_id]['status'] == 'attaching': volumes[volume_id]['status'] = 'available' def fake_swap_volume_exc(context, instance, old_volume_id, new_volume_id): raise AttributeError # Random exception # Should fail if VM state is not valid instance = {'vm_state': vm_states.BUILDING, 'launched_at': timeutils.utcnow(), 'locked': False, 'availability_zone': 'fake_az', 'uuid': 'fake'} volumes = {} old_volume_id = uuidutils.generate_uuid() volumes[old_volume_id] = {'id': old_volume_id, 'display_name': 'old_volume', 'attach_status': 'attached', 'instance_uuid': 'fake', 'size': 5, 'status': 'in-use'} new_volume_id = uuidutils.generate_uuid() volumes[new_volume_id] = {'id': new_volume_id, 'display_name': 'new_volume', 'attach_status': 'detached', 'instance_uuid': None, 'size': 5, 'status': 'available'} self.assertRaises(exception.InstanceInvalidState, self.compute_api.swap_volume, self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) instance['vm_state'] = vm_states.ACTIVE instance['task_state'] = None # Should fail if old volume is not attached volumes[old_volume_id]['attach_status'] = 'detached' self.assertRaises(exception.VolumeUnattached, self.compute_api.swap_volume, self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') volumes[old_volume_id]['attach_status'] = 'attached' # Should fail if old volume's instance_uuid is not that of the instance volumes[old_volume_id]['instance_uuid'] = 'fake2' self.assertRaises(exception.InvalidVolume, self.compute_api.swap_volume, self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') volumes[old_volume_id]['instance_uuid'] = 'fake' # Should fail if new volume is attached volumes[new_volume_id]['attach_status'] = 'attached' self.assertRaises(exception.InvalidVolume, self.compute_api.swap_volume, self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') volumes[new_volume_id]['attach_status'] = 'detached' # Should fail if new volume is smaller than the old volume volumes[new_volume_id]['size'] = 4 self.assertRaises(exception.InvalidVolume, self.compute_api.swap_volume, self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') volumes[new_volume_id]['size'] = 5 # Fail call to swap_volume self.stubs.Set(self.compute_api.volume_api, 'begin_detaching', fake_vol_api_begin_detaching) self.stubs.Set(self.compute_api.volume_api, 'roll_detaching', fake_vol_api_roll_detaching) self.stubs.Set(self.compute_api.volume_api, 'reserve_volume', fake_vol_api_reserve) self.stubs.Set(self.compute_api.volume_api, 'unreserve_volume', fake_vol_api_unreserve) self.stubs.Set(self.compute_api.compute_rpcapi, 'swap_volume', fake_swap_volume_exc) self.assertRaises(AttributeError, self.compute_api.swap_volume, self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') # Should succeed self.stubs.Set(self.compute_api.compute_rpcapi, 'swap_volume', lambda c, instance, old_volume_id, new_volume_id: True) self.compute_api.swap_volume(self.context, instance, volumes[old_volume_id], volumes[new_volume_id]) def _test_snapshot_and_backup(self, is_snapshot=True, with_base_ref=False, min_ram=None, min_disk=None, create_fails=False): # 'cache_in_nova' is for testing non-inheritable properties # 'user_id' should also not be carried from sys_meta into # image property...since it should be set explicitly by # _create_image() in compute api. fake_sys_meta = dict(image_foo='bar', blah='bug?', image_cache_in_nova='dropped', cache_in_nova='dropped', user_id='meow') if with_base_ref: fake_sys_meta['image_base_image_ref'] = 'fake-base-ref' params = dict(system_metadata=fake_sys_meta) instance = self._create_instance_obj(params=params) fake_sys_meta.update(instance.system_metadata) extra_props = dict(cow='moo', cat='meow') self.mox.StubOutWithMock(compute_utils, 'get_image_metadata') self.mox.StubOutWithMock(self.compute_api.image_service, 'create') self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'snapshot_instance') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'backup_instance') image_type = is_snapshot and 'snapshot' or 'backup' expected_sys_meta = dict(fake_sys_meta) expected_sys_meta.pop('cache_in_nova') expected_sys_meta.pop('image_cache_in_nova') expected_sys_meta.pop('user_id') expected_sys_meta['foo'] = expected_sys_meta.pop('image_foo') if with_base_ref: expected_sys_meta['base_image_ref'] = expected_sys_meta.pop( 'image_base_image_ref') expected_props = {'instance_uuid': instance.uuid, 'user_id': self.context.user_id, 'image_type': image_type} expected_props.update(extra_props) expected_props.update(expected_sys_meta) expected_meta = {'name': 'fake-name', 'is_public': False, 'properties': expected_props} if is_snapshot: if min_ram is not None: expected_meta['min_ram'] = min_ram if min_disk is not None: expected_meta['min_disk'] = min_disk else: expected_props['backup_type'] = 'fake-backup-type' compute_utils.get_image_metadata( self.context, self.compute_api.image_service, FAKE_IMAGE_REF, instance).AndReturn(expected_meta) fake_image = dict(id='fake-image-id') mock_method = self.compute_api.image_service.create( self.context, expected_meta) if create_fails: mock_method.AndRaise(test.TestingException()) else: mock_method.AndReturn(fake_image) def check_state(expected_task_state=None): expected_state = (is_snapshot and task_states.IMAGE_SNAPSHOT_PENDING or task_states.IMAGE_BACKUP) self.assertEqual(expected_state, instance.task_state) if not create_fails: instance.save(expected_task_state=[None]).WithSideEffects( check_state) if is_snapshot: self.compute_api.compute_rpcapi.snapshot_instance( self.context, instance, fake_image['id']) else: self.compute_api.compute_rpcapi.backup_instance( self.context, instance, fake_image['id'], 'fake-backup-type', 'fake-rotation') self.mox.ReplayAll() got_exc = False try: if is_snapshot: res = self.compute_api.snapshot(self.context, instance, 'fake-name', extra_properties=extra_props) else: res = self.compute_api.backup(self.context, instance, 'fake-name', 'fake-backup-type', 'fake-rotation', extra_properties=extra_props) self.assertEqual(fake_image, res) except test.TestingException: got_exc = True self.assertEqual(create_fails, got_exc) def test_snapshot(self): self._test_snapshot_and_backup() def test_snapshot_fails(self): self._test_snapshot_and_backup(create_fails=True) def test_snapshot_invalid_state(self): instance = self._create_instance_obj() instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_SNAPSHOT self.assertRaises(exception.InstanceInvalidState, self.compute_api.snapshot, self.context, instance, 'fake-name') instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_BACKUP self.assertRaises(exception.InstanceInvalidState, self.compute_api.snapshot, self.context, instance, 'fake-name') instance.vm_state = vm_states.BUILDING instance.task_state = None self.assertRaises(exception.InstanceInvalidState, self.compute_api.snapshot, self.context, instance, 'fake-name') def test_snapshot_with_base_image_ref(self): self._test_snapshot_and_backup(with_base_ref=True) def test_snapshot_min_ram(self): self._test_snapshot_and_backup(min_ram=42) def test_snapshot_min_disk(self): self._test_snapshot_and_backup(min_disk=42) def test_backup(self): self._test_snapshot_and_backup(is_snapshot=False) def test_backup_fails(self): self._test_snapshot_and_backup(is_snapshot=False, create_fails=True) def test_backup_invalid_state(self): instance = self._create_instance_obj() instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_SNAPSHOT self.assertRaises(exception.InstanceInvalidState, self.compute_api.snapshot, self.context, instance, 'fake-name', 'fake', 'fake') instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_BACKUP self.assertRaises(exception.InstanceInvalidState, self.compute_api.backup, self.context, instance, 'fake-name', 'fake', 'fake') instance.vm_state = vm_states.BUILDING instance.task_state = None self.assertRaises(exception.InstanceInvalidState, self.compute_api.snapshot, self.context, instance, 'fake-name', 'fake', 'fake') def test_backup_with_base_image_ref(self): self._test_snapshot_and_backup(is_snapshot=False, with_base_ref=True) def test_snapshot_volume_backed(self): instance = self._create_instance_obj() instance['root_device_name'] = 'vda' instance_bdms = [] image_meta = { 'id': 'fake-image-id', 'properties': {'mappings': []}, 'status': 'fake-status', 'location': 'far-away', } expect_meta = { 'name': 'test-snapshot', 'properties': {'root_device_name': 'vda', 'mappings': 'DONTCARE'}, 'size': 0, 'is_public': False } def fake_get_all_by_instance(context, instance, use_slave=False): return copy.deepcopy(instance_bdms) def fake_image_create(context, image_meta, data): self.assertThat(image_meta, matchers.DictMatches(expect_meta)) def fake_volume_get(context, volume_id): return {'id': volume_id, 'display_description': ''} def fake_volume_create_snapshot(context, volume_id, name, description): return {'id': '%s-snapshot' % volume_id} self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_get_all_by_instance) self.stubs.Set(self.compute_api.image_service, 'create', fake_image_create) self.stubs.Set(self.compute_api.volume_api, 'get', fake_volume_get) self.stubs.Set(self.compute_api.volume_api, 'create_snapshot_force', fake_volume_create_snapshot) # No block devices defined self.compute_api.snapshot_volume_backed( self.context, instance, copy.deepcopy(image_meta), 'test-snapshot') bdm = fake_block_device.FakeDbBlockDeviceDict( {'no_device': False, 'volume_id': '1', 'boot_index': 0, 'connection_info': 'inf', 'device_name': '/dev/vda', 'source_type': 'volume', 'destination_type': 'volume'}) instance_bdms.append(bdm) expect_meta['properties']['bdm_v2'] = True expect_meta['properties']['block_device_mapping'] = [] expect_meta['properties']['block_device_mapping'].append( {'guest_format': None, 'boot_index': 0, 'no_device': None, 'image_id': None, 'volume_id': None, 'disk_bus': None, 'volume_size': None, 'source_type': 'snapshot', 'device_type': None, 'snapshot_id': '1-snapshot', 'destination_type': 'volume', 'delete_on_termination': None}) # All the db_only fields and the volume ones are removed self.compute_api.snapshot_volume_backed( self.context, instance, copy.deepcopy(image_meta), 'test-snapshot') image_mappings = [{'virtual': 'ami', 'device': 'vda'}, {'device': 'vda', 'virtual': 'ephemeral0'}, {'device': 'vdb', 'virtual': 'swap'}, {'device': 'vdc', 'virtual': 'ephemeral1'}] image_meta['properties']['mappings'] = image_mappings expect_meta['properties']['mappings'] = [ {'virtual': 'ami', 'device': 'vda'}] # Check that the mappgins from the image properties are included self.compute_api.snapshot_volume_backed( self.context, instance, copy.deepcopy(image_meta), 'test-snapshot') def test_volume_snapshot_create(self): volume_id = '1' create_info = {'id': 'eyedee'} fake_bdm = fake_block_device.FakeDbBlockDeviceDict({ 'id': 123, 'device_name': '/dev/sda2', 'source_type': 'volume', 'destination_type': 'volume', 'connection_info': "{'fake': 'connection_info'}", 'volume_id': 1, 'boot_index': -1}) fake_bdm['instance'] = fake_instance.fake_db_instance() fake_bdm['instance_uuid'] = fake_bdm['instance']['uuid'] fake_bdm = block_device_obj.BlockDeviceMapping._from_db_object( self.context, block_device_obj.BlockDeviceMapping(), fake_bdm, expected_attrs=['instance']) self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'get_by_volume_id') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'volume_snapshot_create') block_device_obj.BlockDeviceMapping.get_by_volume_id( self.context, volume_id, expected_attrs=['instance']).AndReturn(fake_bdm) self.compute_api.compute_rpcapi.volume_snapshot_create(self.context, fake_bdm['instance'], volume_id, create_info) self.mox.ReplayAll() snapshot = self.compute_api.volume_snapshot_create(self.context, volume_id, create_info) expected_snapshot = { 'snapshot': { 'id': create_info['id'], 'volumeId': volume_id, }, } self.assertEqual(snapshot, expected_snapshot) def test_volume_snapshot_delete(self): volume_id = '1' snapshot_id = '2' fake_bdm = fake_block_device.FakeDbBlockDeviceDict({ 'id': 123, 'device_name': '/dev/sda2', 'source_type': 'volume', 'destination_type': 'volume', 'connection_info': "{'fake': 'connection_info'}", 'volume_id': 1, 'boot_index': -1}) fake_bdm['instance'] = fake_instance.fake_db_instance() fake_bdm['instance_uuid'] = fake_bdm['instance']['uuid'] fake_bdm = block_device_obj.BlockDeviceMapping._from_db_object( self.context, block_device_obj.BlockDeviceMapping(), fake_bdm, expected_attrs=['instance']) self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'get_by_volume_id') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'volume_snapshot_delete') block_device_obj.BlockDeviceMapping.get_by_volume_id( self.context, volume_id, expected_attrs=['instance']).AndReturn(fake_bdm) self.compute_api.compute_rpcapi.volume_snapshot_delete(self.context, fake_bdm['instance'], volume_id, snapshot_id, {}) self.mox.ReplayAll() self.compute_api.volume_snapshot_delete(self.context, volume_id, snapshot_id, {}) def _create_instance_with_disabled_disk_config(self, object=False): sys_meta = {"image_auto_disk_config": "Disabled"} params = {"system_metadata": sys_meta} instance = self._create_instance_obj(params=params) if object: return instance return obj_base.obj_to_primitive(instance) def _setup_fake_image_with_disabled_disk_config(self): self.fake_image = { 'id': 1, 'name': 'fake_name', 'status': 'active', 'properties': {"auto_disk_config": "Disabled"}, } def fake_show(obj, context, image_id): return self.fake_image fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, 'show', fake_show) return self.fake_image['id'] def test_resize_with_disabled_auto_disk_config_fails(self): fake_inst = self._create_instance_with_disabled_disk_config() self.assertRaises(exception.AutoDiskConfigDisabledByImage, self.compute_api.resize, self.context, fake_inst, auto_disk_config=True) def test_create_with_disabled_auto_disk_config_fails(self): image_id = self._setup_fake_image_with_disabled_disk_config() self.assertRaises(exception.AutoDiskConfigDisabledByImage, self.compute_api.create, self.context, "fake_flavor", image_id, auto_disk_config=True) def test_rebuild_with_disabled_auto_disk_config_fails(self): fake_inst = self._create_instance_with_disabled_disk_config( object=True) image_id = self._setup_fake_image_with_disabled_disk_config() self.assertRaises(exception.AutoDiskConfigDisabledByImage, self.compute_api.rebuild, self.context, fake_inst, image_id, "new password", auto_disk_config=True) @mock.patch.object(instance_obj.Instance, 'save') @mock.patch.object(instance_obj.Instance, 'get_flavor') @mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(compute_api.API, '_get_image') @mock.patch.object(compute_api.API, '_check_auto_disk_config') @mock.patch.object(compute_api.API, '_checks_for_create_and_rebuild') @mock.patch.object(compute_api.API, '_record_action_start') def test_rebuild(self, _record_action_start, _checks_for_create_and_rebuild, _check_auto_disk_config, _get_image, bdm_get_by_instance_uuid, get_flavor, instance_save): orig_system_metadata = {} instance = fake_instance.fake_instance_obj(self.context, vm_state=vm_states.ACTIVE, cell_name='fake-cell', launched_at=timeutils.utcnow(), system_metadata=orig_system_metadata, expected_attrs=['system_metadata']) get_flavor.return_value = test_flavor.fake_flavor flavor = instance.get_flavor() image_href = '' image = {"min_ram": 10, "min_disk": 1, "properties": {'architecture': 'x86_64'}} admin_pass = '' files_to_inject = [] bdms = [] _get_image.return_value = (None, image) bdm_get_by_instance_uuid.return_value = bdms with mock.patch.object(self.compute_api.compute_rpcapi, 'rebuild_instance') as rebuild_instance: self.compute_api.rebuild(self.context, instance, image_href, admin_pass, files_to_inject) rebuild_instance.assert_called_once_with(self.context, instance=instance, new_pass=admin_pass, injected_files=files_to_inject, image_ref=image_href, orig_image_ref=image_href, orig_sys_metadata=orig_system_metadata, bdms=bdms, preserve_ephemeral=False, kwargs={}) _check_auto_disk_config.assert_called_once_with(image=image) _checks_for_create_and_rebuild.assert_called_once_with(self.context, None, image, flavor, {}, []) self.assertNotEqual(orig_system_metadata, instance.system_metadata) @mock.patch.object(instance_obj.Instance, 'save') @mock.patch.object(instance_obj.Instance, 'get_flavor') @mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(compute_api.API, '_get_image') @mock.patch.object(compute_api.API, '_check_auto_disk_config') @mock.patch.object(compute_api.API, '_checks_for_create_and_rebuild') @mock.patch.object(compute_api.API, '_record_action_start') def test_rebuild_change_image(self, _record_action_start, _checks_for_create_and_rebuild, _check_auto_disk_config, _get_image, bdm_get_by_instance_uuid, get_flavor, instance_save): orig_system_metadata = {} get_flavor.return_value = test_flavor.fake_flavor orig_image_href = 'orig_image' orig_image = {"min_ram": 10, "min_disk": 1, "properties": {'architecture': 'x86_64', 'vm_mode': 'hvm'}} new_image_href = 'new_image' new_image = {"min_ram": 10, "min_disk": 1, "properties": {'architecture': 'x86_64', 'vm_mode': 'xen'}} admin_pass = '' files_to_inject = [] bdms = [] instance = fake_instance.fake_instance_obj(self.context, vm_state=vm_states.ACTIVE, cell_name='fake-cell', launched_at=timeutils.utcnow(), system_metadata=orig_system_metadata, expected_attrs=['system_metadata'], image_ref=orig_image_href, vm_mode=vm_mode.HVM) flavor = instance.get_flavor() def get_image(context, image_href): if image_href == new_image_href: return (None, new_image) if image_href == orig_image_href: return (None, orig_image) _get_image.side_effect = get_image bdm_get_by_instance_uuid.return_value = bdms with mock.patch.object(self.compute_api.compute_rpcapi, 'rebuild_instance') as rebuild_instance: self.compute_api.rebuild(self.context, instance, new_image_href, admin_pass, files_to_inject) rebuild_instance.assert_called_once_with(self.context, instance=instance, new_pass=admin_pass, injected_files=files_to_inject, image_ref=new_image_href, orig_image_ref=orig_image_href, orig_sys_metadata=orig_system_metadata, bdms=bdms, preserve_ephemeral=False, kwargs={}) _check_auto_disk_config.assert_called_once_with(image=new_image) _checks_for_create_and_rebuild.assert_called_once_with(self.context, None, new_image, flavor, {}, []) self.assertEqual(vm_mode.XEN, instance.vm_mode) @mock.patch('nova.quota.QUOTAS.commit') @mock.patch('nova.quota.QUOTAS.reserve') @mock.patch('nova.objects.instance.Instance.save') @mock.patch('nova.objects.instance_action.InstanceAction.action_start') def test_restore(self, action_start, instance_save, quota_reserve, quota_commit): instance = self._create_instance_obj() instance.vm_state = vm_states.SOFT_DELETED instance.task_state = None instance.save() with mock.patch.object(self.compute_api, 'compute_rpcapi') as rpc: self.compute_api.restore(self.context, instance) rpc.restore_instance.assert_called_once_with(self.context, instance) self.assertEqual(instance.task_state, task_states.RESTORING) self.assertEqual(1, quota_commit.call_count) def test_external_instance_event(self): instances = [ instance_obj.Instance(uuid='uuid1', host='host1'), instance_obj.Instance(uuid='uuid2', host='host1'), instance_obj.Instance(uuid='uuid3', host='host2'), ] events = [ external_event_obj.InstanceExternalEvent(instance_uuid='uuid1'), external_event_obj.InstanceExternalEvent(instance_uuid='uuid2'), external_event_obj.InstanceExternalEvent(instance_uuid='uuid3'), ] self.compute_api.compute_rpcapi = mock.MagicMock() self.compute_api.external_instance_event(self.context, instances, events) method = self.compute_api.compute_rpcapi.external_instance_event method.assert_any_call(self.context, instances[0:2], events[0:2]) method.assert_any_call(self.context, instances[2:], events[2:]) self.assertEqual(2, method.call_count) def test_volume_ops_invalid_task_state(self): instance = self._create_instance_obj() self.assertEqual(instance.vm_state, vm_states.ACTIVE) instance.task_state = 'Any' volume_id = uuidutils.generate_uuid() self.assertRaises(exception.InstanceInvalidState, self.compute_api.attach_volume, self.context, instance, volume_id) self.assertRaises(exception.InstanceInvalidState, self.compute_api.detach_volume, self.context, instance, volume_id) new_volume_id = uuidutils.generate_uuid() self.assertRaises(exception.InstanceInvalidState, self.compute_api.swap_volume, self.context, instance, volume_id, new_volume_id) class ComputeAPIUnitTestCase(_ComputeAPIUnitTestMixIn, test.NoDBTestCase): def setUp(self): super(ComputeAPIUnitTestCase, self).setUp() self.compute_api = compute_api.API() self.cell_type = None def test_resize_same_flavor_fails(self): self.assertRaises(exception.CannotResizeToSameFlavor, self._test_resize, same_flavor=True) class ComputeAPIAPICellUnitTestCase(_ComputeAPIUnitTestMixIn, test.NoDBTestCase): def setUp(self): super(ComputeAPIAPICellUnitTestCase, self).setUp() self.flags(cell_type='api', enable=True, group='cells') self.compute_api = compute_cells_api.ComputeCellsAPI() self.cell_type = 'api' def test_resize_same_flavor_fails(self): self.assertRaises(exception.CannotResizeToSameFlavor, self._test_resize, same_flavor=True) class ComputeAPIComputeCellUnitTestCase(_ComputeAPIUnitTestMixIn, test.NoDBTestCase): def setUp(self): super(ComputeAPIComputeCellUnitTestCase, self).setUp() self.flags(cell_type='compute', enable=True, group='cells') self.compute_api = compute_api.API() self.cell_type = 'compute' def test_resize_same_flavor_passes(self): self._test_resize(same_flavor=True) class DiffDictTestCase(test.NoDBTestCase): """Unit tests for _diff_dict().""" def test_no_change(self): old = dict(a=1, b=2, c=3) new = dict(a=1, b=2, c=3) diff = compute_api._diff_dict(old, new) self.assertEqual(diff, {}) def test_new_key(self): old = dict(a=1, b=2, c=3) new = dict(a=1, b=2, c=3, d=4) diff = compute_api._diff_dict(old, new) self.assertEqual(diff, dict(d=['+', 4])) def test_changed_key(self): old = dict(a=1, b=2, c=3) new = dict(a=1, b=4, c=3) diff = compute_api._diff_dict(old, new) self.assertEqual(diff, dict(b=['+', 4])) def test_removed_key(self): old = dict(a=1, b=2, c=3) new = dict(a=1, c=3) diff = compute_api._diff_dict(old, new) self.assertEqual(diff, dict(b=['-'])) nova-2014.1/nova/tests/compute/test_stats.py0000664000175400017540000001703412323721477022247 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for compute node stats.""" from nova.compute import stats from nova.compute import task_states from nova.compute import vm_states from nova import test class StatsTestCase(test.NoDBTestCase): def setUp(self): super(StatsTestCase, self).setUp() self.stats = stats.Stats() def _create_instance(self, values=None): instance = { "os_type": "Linux", "project_id": "1234", "task_state": None, "vm_state": vm_states.BUILDING, "vcpus": 1, "uuid": "12-34-56-78-90", } if values: instance.update(values) return instance def test_os_type_count(self): os_type = "Linux" self.assertEqual(0, self.stats.num_os_type(os_type)) self.stats._increment("num_os_type_" + os_type) self.stats._increment("num_os_type_" + os_type) self.stats._increment("num_os_type_Vax") self.assertEqual(2, self.stats.num_os_type(os_type)) self.stats["num_os_type_" + os_type] -= 1 self.assertEqual(1, self.stats.num_os_type(os_type)) def test_update_project_count(self): proj_id = "1234" def _get(): return self.stats.num_instances_for_project(proj_id) self.assertEqual(0, _get()) self.stats._increment("num_proj_" + proj_id) self.assertEqual(1, _get()) self.stats["num_proj_" + proj_id] -= 1 self.assertEqual(0, _get()) def test_instance_count(self): self.assertEqual(0, self.stats.num_instances) for i in range(5): self.stats._increment("num_instances") self.stats["num_instances"] -= 1 self.assertEqual(4, self.stats.num_instances) def test_add_stats_for_instance(self): instance = { "os_type": "Linux", "project_id": "1234", "task_state": None, "vm_state": vm_states.BUILDING, "vcpus": 3, "uuid": "12-34-56-78-90", } self.stats.update_stats_for_instance(instance) instance = { "os_type": "FreeBSD", "project_id": "1234", "task_state": task_states.SCHEDULING, "vm_state": None, "vcpus": 1, "uuid": "23-45-67-89-01", } self.stats.update_stats_for_instance(instance) instance = { "os_type": "Linux", "project_id": "2345", "task_state": task_states.SCHEDULING, "vm_state": vm_states.BUILDING, "vcpus": 2, "uuid": "34-56-78-90-12", } self.stats.update_stats_for_instance(instance) self.assertEqual(2, self.stats.num_os_type("Linux")) self.assertEqual(1, self.stats.num_os_type("FreeBSD")) self.assertEqual(2, self.stats.num_instances_for_project("1234")) self.assertEqual(1, self.stats.num_instances_for_project("2345")) self.assertEqual(1, self.stats["num_task_None"]) self.assertEqual(2, self.stats["num_task_" + task_states.SCHEDULING]) self.assertEqual(1, self.stats["num_vm_None"]) self.assertEqual(2, self.stats["num_vm_" + vm_states.BUILDING]) self.assertEqual(6, self.stats.num_vcpus_used) def test_calculate_workload(self): self.stats._increment("num_task_None") self.stats._increment("num_task_" + task_states.SCHEDULING) self.stats._increment("num_task_" + task_states.SCHEDULING) self.assertEqual(2, self.stats.calculate_workload()) def test_update_stats_for_instance_no_change(self): instance = self._create_instance() self.stats.update_stats_for_instance(instance) self.stats.update_stats_for_instance(instance) # no change self.assertEqual(1, self.stats.num_instances) self.assertEqual(1, self.stats.num_instances_for_project("1234")) self.assertEqual(1, self.stats["num_os_type_Linux"]) self.assertEqual(1, self.stats["num_task_None"]) self.assertEqual(1, self.stats["num_vm_" + vm_states.BUILDING]) def test_update_stats_for_instance_vm_change(self): instance = self._create_instance() self.stats.update_stats_for_instance(instance) instance["vm_state"] = vm_states.PAUSED self.stats.update_stats_for_instance(instance) self.assertEqual(1, self.stats.num_instances) self.assertEqual(1, self.stats.num_instances_for_project(1234)) self.assertEqual(1, self.stats["num_os_type_Linux"]) self.assertEqual(0, self.stats["num_vm_%s" % vm_states.BUILDING]) self.assertEqual(1, self.stats["num_vm_%s" % vm_states.PAUSED]) def test_update_stats_for_instance_task_change(self): instance = self._create_instance() self.stats.update_stats_for_instance(instance) instance["task_state"] = task_states.REBUILDING self.stats.update_stats_for_instance(instance) self.assertEqual(1, self.stats.num_instances) self.assertEqual(1, self.stats.num_instances_for_project("1234")) self.assertEqual(1, self.stats["num_os_type_Linux"]) self.assertEqual(0, self.stats["num_task_None"]) self.assertEqual(1, self.stats["num_task_%s" % task_states.REBUILDING]) def test_update_stats_for_instance_deleted(self): instance = self._create_instance() self.stats.update_stats_for_instance(instance) self.assertEqual(1, self.stats["num_proj_1234"]) instance["vm_state"] = vm_states.DELETED self.stats.update_stats_for_instance(instance) self.assertEqual(0, self.stats.num_instances) self.assertEqual(0, self.stats.num_instances_for_project("1234")) self.assertEqual(0, self.stats.num_os_type("Linux")) self.assertEqual(0, self.stats["num_vm_" + vm_states.BUILDING]) self.assertEqual(0, self.stats.num_vcpus_used) def test_io_workload(self): vms = [vm_states.ACTIVE, vm_states.BUILDING, vm_states.PAUSED] tasks = [task_states.RESIZE_MIGRATING, task_states.REBUILDING, task_states.RESIZE_PREP, task_states.IMAGE_SNAPSHOT, task_states.IMAGE_BACKUP, task_states.RESCUING] for state in vms: self.stats._increment("num_vm_" + state) for state in tasks: self.stats._increment("num_task_" + state) self.assertEqual(6, self.stats.io_workload) def test_io_workload_saved_to_stats(self): values = {'task_state': task_states.RESIZE_MIGRATING} instance = self._create_instance(values) self.stats.update_stats_for_instance(instance) self.assertEqual(2, self.stats["io_workload"]) def test_clear(self): instance = self._create_instance() self.stats.update_stats_for_instance(instance) self.assertNotEqual(0, len(self.stats)) self.assertEqual(1, len(self.stats.states)) self.stats.clear() self.assertEqual(0, len(self.stats)) self.assertEqual(0, len(self.stats.states)) nova-2014.1/nova/tests/compute/test_compute_xen.py0000664000175400017540000000505212323721477023434 0ustar jenkinsjenkins00000000000000# 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. """Tests for expectations of behaviour from the Xen driver.""" from oslo.config import cfg from nova.compute import power_state from nova import context from nova.objects import instance as instance_obj from nova.openstack.common import importutils from nova.tests import fake_instance from nova.tests.virt.xenapi import stubs from nova.virt.xenapi import vm_utils CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('compute_driver', 'nova.virt.driver') class ComputeXenTestCase(stubs.XenAPITestBaseNoDB): def setUp(self): super(ComputeXenTestCase, self).setUp() self.flags(compute_driver='xenapi.XenAPIDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.compute = importutils.import_object(CONF.compute_manager) def test_sync_power_states_instance_not_found(self): db_instance = fake_instance.fake_db_instance() ctxt = context.get_admin_context() instance_list = instance_obj._make_instance_list(ctxt, instance_obj.InstanceList(), [db_instance], None) instance = instance_list[0] self.mox.StubOutWithMock(instance_obj.InstanceList, 'get_by_host') self.mox.StubOutWithMock(self.compute.driver, 'get_num_instances') self.mox.StubOutWithMock(vm_utils, 'lookup') self.mox.StubOutWithMock(self.compute, '_sync_instance_power_state') instance_obj.InstanceList.get_by_host(ctxt, self.compute.host, use_slave=True).AndReturn(instance_list) self.compute.driver.get_num_instances().AndReturn(1) vm_utils.lookup(self.compute.driver._session, instance['name'], False).AndReturn(None) self.compute._sync_instance_power_state(ctxt, instance, power_state.NOSTATE) self.mox.ReplayAll() self.compute._sync_power_states(ctxt) nova-2014.1/nova/tests/compute/test_virtapi.py0000664000175400017540000001640112323721477022564 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock import mox from nova.compute import manager as compute_manager from nova import context from nova import db from nova import exception from nova.objects import external_event as external_event_obj from nova import test from nova.virt import fake from nova.virt import virtapi class VirtAPIBaseTest(test.NoDBTestCase, test.APICoverage): cover_api = virtapi.VirtAPI def setUp(self): super(VirtAPIBaseTest, self).setUp() self.context = context.RequestContext('fake-user', 'fake-project') self.set_up_virtapi() def set_up_virtapi(self): self.virtapi = virtapi.VirtAPI() def assertExpected(self, method, *args, **kwargs): self.assertRaises(NotImplementedError, getattr(self.virtapi, method), self.context, *args, **kwargs) def test_instance_update(self): self.assertExpected('instance_update', 'fake-uuid', dict(host='foohost')) def test_provider_fw_rule_get_all(self): self.assertExpected('provider_fw_rule_get_all') def test_agent_build_get_by_triple(self): self.assertExpected('agent_build_get_by_triple', 'fake-hv', 'gnu/hurd', 'fake-arch') def test_wait_for_instance_event(self): self.assertExpected('wait_for_instance_event', 'instance', ['event']) class FakeVirtAPITest(VirtAPIBaseTest): cover_api = fake.FakeVirtAPI def set_up_virtapi(self): self.virtapi = fake.FakeVirtAPI() def assertExpected(self, method, *args, **kwargs): if method == 'wait_for_instance_event': run = False with self.virtapi.wait_for_instance_event(*args, **kwargs): run = True self.assertTrue(run) return if method == 'instance_update': # NOTE(danms): instance_update actually becomes the other variant # in FakeVirtAPI db_method = 'instance_update_and_get_original' else: db_method = method self.mox.StubOutWithMock(db, db_method) if method in ('aggregate_metadata_add', 'aggregate_metadata_delete', 'security_group_rule_get_by_security_group'): # NOTE(danms): FakeVirtAPI will convert the first argument to # argument['id'], so expect that in the actual db call e_args = tuple([args[0]['id']] + list(args[1:])) elif method == 'security_group_get_by_instance': e_args = tuple([args[0]['uuid']] + list(args[1:])) else: e_args = args getattr(db, db_method)(self.context, *e_args, **kwargs).AndReturn( 'it worked') self.mox.ReplayAll() result = getattr(self.virtapi, method)(self.context, *args, **kwargs) self.assertEqual(result, 'it worked') class FakeCompute(object): def __init__(self): self.conductor_api = mox.MockAnything() self.db = mox.MockAnything() self._events = [] self.instance_events = mock.MagicMock() self.instance_events.prepare_for_instance_event.side_effect = \ self._prepare_for_instance_event def _instance_update(self, context, instance_uuid, **kwargs): # NOTE(danms): Fake this behavior from compute/manager::ComputeManager return self.conductor_api.instance_update(context, instance_uuid, kwargs) def _event_waiter(self): event = mock.MagicMock() event.status = 'completed' return event def _prepare_for_instance_event(self, instance, event_name): m = mock.MagicMock() m.instance = instance m.event_name = event_name m.wait.side_effect = self._event_waiter self._events.append(m) return m class ComputeVirtAPITest(VirtAPIBaseTest): cover_api = compute_manager.ComputeVirtAPI def set_up_virtapi(self): self.compute = FakeCompute() self.virtapi = compute_manager.ComputeVirtAPI(self.compute) def assertExpected(self, method, *args, **kwargs): self.mox.StubOutWithMock(self.compute.conductor_api, method) getattr(self.compute.conductor_api, method)( self.context, *args, **kwargs).AndReturn('it worked') self.mox.ReplayAll() result = getattr(self.virtapi, method)(self.context, *args, **kwargs) self.assertEqual(result, 'it worked') def test_wait_for_instance_event(self): and_i_ran = '' event_1_tag = external_event_obj.InstanceExternalEvent.make_key( 'event1') event_2_tag = external_event_obj.InstanceExternalEvent.make_key( 'event2', 'tag') events = { 'event1': event_1_tag, ('event2', 'tag'): event_2_tag, } with self.virtapi.wait_for_instance_event('instance', events.keys()): and_i_ran = 'I ran so far a-waa-y' self.assertEqual('I ran so far a-waa-y', and_i_ran) self.assertEqual(2, len(self.compute._events)) for event in self.compute._events: self.assertEqual('instance', event.instance) self.assertIn(event.event_name, events.values()) event.wait.assert_called_once_with() def test_wait_for_instance_event_failed(self): def _failer(): event = mock.MagicMock() event.status = 'failed' return event @mock.patch.object(self.virtapi._compute, '_event_waiter', _failer) def do_test(): with self.virtapi.wait_for_instance_event('instance', ['foo']): pass self.assertRaises(exception.NovaException, do_test) def test_wait_for_instance_event_failed_callback(self): def _failer(): event = mock.MagicMock() event.status = 'failed' return event @mock.patch.object(self.virtapi._compute, '_event_waiter', _failer) def do_test(): callback = mock.MagicMock() with self.virtapi.wait_for_instance_event('instance', ['foo'], error_callback=callback): pass callback.assert_called_with('foo', 'instance') do_test() def test_wait_for_instance_event_timeout(self): class TestException(Exception): pass def _failer(): raise TestException() @mock.patch.object(self.virtapi._compute, '_event_waiter', _failer) @mock.patch('eventlet.timeout.Timeout') def do_test(timeout): with self.virtapi.wait_for_instance_event('instance', ['foo']): pass self.assertRaises(TestException, do_test) nova-2014.1/nova/tests/compute/test_vmmode.py0000664000175400017540000000402312323721477022372 0ustar jenkinsjenkins00000000000000# Copyright (C) 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 import exception from nova import test from nova.compute import vm_mode class ComputeVMModeTest(test.NoDBTestCase): def test_case(self): inst = dict(vm_mode="HVM") mode = vm_mode.get_from_instance(inst) self.assertEqual(mode, "hvm") def test_legacy_pv(self): inst = dict(vm_mode="pv") mode = vm_mode.get_from_instance(inst) self.assertEqual(mode, "xen") def test_legacy_hv(self): inst = dict(vm_mode="hv") mode = vm_mode.get_from_instance(inst) self.assertEqual(mode, "hvm") def test_bogus(self): inst = dict(vm_mode="wibble") self.assertRaises(exception.Invalid, vm_mode.get_from_instance, inst) def test_good(self): inst = dict(vm_mode="hvm") mode = vm_mode.get_from_instance(inst) self.assertEqual(mode, "hvm") def test_name_pv_compat(self): mode = vm_mode.name('pv') self.assertEqual(vm_mode.XEN, mode) def test_name_hv_compat(self): mode = vm_mode.name('hv') self.assertEqual(vm_mode.HVM, mode) def test_name_hvm(self): mode = vm_mode.name('hvm') self.assertEqual(vm_mode.HVM, mode) def test_name_none(self): mode = vm_mode.name(None) self.assertIsNone(mode) def test_name_invalid(self): self.assertRaises(exception.Invalid, vm_mode.name, 'invalid') nova-2014.1/nova/tests/compute/test_shelve.py0000664000175400017540000004606412323721477022404 0ustar jenkinsjenkins00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import iso8601 import mox from oslo.config import cfg from nova.compute import claims from nova.compute import task_states from nova.compute import vm_states from nova import db from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.tests.compute import test_compute from nova.tests.image import fake as fake_image from nova import utils CONF = cfg.CONF CONF.import_opt('shelved_offload_time', 'nova.compute.manager') def _fake_resources(): resources = { 'memory_mb': 2048, 'memory_mb_used': 0, 'free_ram_mb': 2048, 'local_gb': 20, 'local_gb_used': 0, 'free_disk_gb': 20, 'vcpus': 2, 'vcpus_used': 0 } return resources class ShelveComputeManagerTestCase(test_compute.BaseTestCase): def _shelve_instance(self, shelved_offload_time): CONF.set_override('shelved_offload_time', shelved_offload_time) db_instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, db_instance, {}, {}, [], None, None, True, None, False) instance = instance_obj.Instance.get_by_uuid( self.context, db_instance['uuid'], expected_attrs=['metadata', 'system_metadata']) image_id = 'fake_image_id' host = 'fake-mini' cur_time = timeutils.utcnow() timeutils.set_time_override(cur_time) instance.task_state = task_states.SHELVING instance.save() sys_meta = dict(instance.system_metadata) sys_meta['shelved_at'] = timeutils.strtime(at=cur_time) sys_meta['shelved_image_id'] = image_id sys_meta['shelved_host'] = host db_instance['system_metadata'] = utils.dict_to_metadata(sys_meta) self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.mox.StubOutWithMock(self.compute.driver, 'snapshot') self.mox.StubOutWithMock(self.compute.driver, 'power_off') self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.compute._notify_about_instance_usage(self.context, instance, 'shelve.start') self.compute.driver.power_off(instance) self.compute._get_power_state(self.context, instance).AndReturn(123) self.compute.driver.snapshot(self.context, instance, 'fake_image_id', mox.IgnoreArg()) update_values = {'power_state': 123, 'vm_state': vm_states.SHELVED, 'task_state': None, 'expected_task_state': [task_states.SHELVING, task_states.SHELVING_IMAGE_UPLOADING], 'system_metadata': sys_meta} if CONF.shelved_offload_time == 0: update_values['task_state'] = task_states.SHELVING_OFFLOADING db.instance_update_and_get_original(self.context, instance['uuid'], update_values, update_cells=False, columns_to_join=['metadata', 'system_metadata'], ).AndReturn((db_instance, db_instance)) self.compute._notify_about_instance_usage(self.context, instance, 'shelve.end') if CONF.shelved_offload_time == 0: self.compute._notify_about_instance_usage(self.context, instance, 'shelve_offload.start') self.compute.driver.power_off(instance) self.compute._get_power_state(self.context, instance).AndReturn(123) db.instance_update_and_get_original(self.context, instance['uuid'], {'power_state': 123, 'host': None, 'node': None, 'vm_state': vm_states.SHELVED_OFFLOADED, 'task_state': None, 'expected_task_state': [task_states.SHELVING, task_states.SHELVING_OFFLOADING]}, update_cells=False, columns_to_join=['metadata', 'system_metadata'], ).AndReturn((db_instance, db_instance)) self.compute._notify_about_instance_usage(self.context, instance, 'shelve_offload.end') self.mox.ReplayAll() self.compute.shelve_instance(self.context, instance, image_id=image_id) def test_shelve(self): self._shelve_instance(-1) def test_shelve_offload(self): self._shelve_instance(0) def test_shelve_volume_backed(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, db_instance, {}, {}, [], None, None, True, None, False) instance = instance_obj.Instance.get_by_uuid( self.context, db_instance['uuid'], expected_attrs=['metadata', 'system_metadata']) instance.task_state = task_states.SHELVING instance.save() host = 'fake-mini' cur_time = timeutils.utcnow() timeutils.set_time_override(cur_time) sys_meta = dict(instance.system_metadata) sys_meta['shelved_at'] = timeutils.strtime(at=cur_time) sys_meta['shelved_image_id'] = None sys_meta['shelved_host'] = host db_instance['system_metadata'] = utils.dict_to_metadata(sys_meta) self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.mox.StubOutWithMock(self.compute.driver, 'power_off') self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.compute._notify_about_instance_usage(self.context, instance, 'shelve_offload.start') self.compute.driver.power_off(instance) self.compute._get_power_state(self.context, instance).AndReturn(123) db.instance_update_and_get_original(self.context, instance['uuid'], {'power_state': 123, 'host': None, 'node': None, 'vm_state': vm_states.SHELVED_OFFLOADED, 'task_state': None, 'expected_task_state': [task_states.SHELVING, task_states.SHELVING_OFFLOADING]}, update_cells=False, columns_to_join=['metadata', 'system_metadata'], ).AndReturn((db_instance, db_instance)) self.compute._notify_about_instance_usage(self.context, instance, 'shelve_offload.end') self.mox.ReplayAll() self.compute.shelve_offload_instance(self.context, instance) def test_unshelve(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, db_instance, {}, {}, [], None, None, True, None, False) instance = instance_obj.Instance.get_by_uuid( self.context, db_instance['uuid'], expected_attrs=['metadata', 'system_metadata']) instance.task_state = task_states.UNSHELVING instance.save() image = {'id': 'fake_id'} host = 'fake-mini' node = test_compute.NODENAME limits = {} filter_properties = {'limits': limits} cur_time = timeutils.utcnow() cur_time_tz = cur_time.replace(tzinfo=iso8601.iso8601.Utc()) timeutils.set_time_override(cur_time) sys_meta = dict(instance.system_metadata) sys_meta['shelved_at'] = timeutils.strtime(at=cur_time) sys_meta['shelved_image_id'] = image['id'] sys_meta['shelved_host'] = host self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.mox.StubOutWithMock(self.compute, '_prep_block_device') self.mox.StubOutWithMock(self.compute.driver, 'spawn') self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(self.rt, 'instance_claim') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.deleted_image_id = None def fake_delete(self2, ctxt, image_id): self.deleted_image_id = image_id fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, 'delete', fake_delete) self.compute._notify_about_instance_usage(self.context, instance, 'unshelve.start') db.instance_update_and_get_original(self.context, instance['uuid'], {'task_state': task_states.SPAWNING}, update_cells=False, columns_to_join=['metadata', 'system_metadata'], ).AndReturn((db_instance, db_instance)) self.compute._prep_block_device(self.context, instance, mox.IgnoreArg()).AndReturn('fake_bdm') db_instance['key_data'] = None db_instance['auto_disk_config'] = None self.rt.instance_claim(self.context, instance, limits).AndReturn( claims.Claim(db_instance, self.rt, _fake_resources())) self.compute.driver.spawn(self.context, instance, image, injected_files=[], admin_password=None, network_info=[], block_device_info='fake_bdm') self.compute._get_power_state(self.context, instance).AndReturn(123) db.instance_update_and_get_original(self.context, instance['uuid'], {'power_state': 123, 'vm_state': vm_states.ACTIVE, 'task_state': None, 'image_ref': instance['image_ref'], 'key_data': None, 'auto_disk_config': False, 'expected_task_state': task_states.SPAWNING, 'launched_at': cur_time_tz}, update_cells=False, columns_to_join=['metadata', 'system_metadata'] ).AndReturn((db_instance, db_instance)) self.compute._notify_about_instance_usage(self.context, instance, 'unshelve.end') self.mox.ReplayAll() self.compute.unshelve_instance(self.context, instance, image=image, filter_properties=filter_properties, node=node) self.assertEqual(image['id'], self.deleted_image_id) self.assertEqual(instance.host, self.compute.host) def test_unshelve_volume_backed(self): db_instance = jsonutils.to_primitive(self._create_fake_instance()) host = 'fake-mini' node = test_compute.NODENAME limits = {} filter_properties = {'limits': limits} cur_time = timeutils.utcnow() cur_time_tz = cur_time.replace(tzinfo=iso8601.iso8601.Utc()) timeutils.set_time_override(cur_time) self.compute.run_instance(self.context, db_instance, {}, {}, [], None, None, True, None, False) instance = instance_obj.Instance.get_by_uuid( self.context, db_instance['uuid'], expected_attrs=['metadata', 'system_metadata']) instance.task_state = task_states.UNSHELVING instance.save() sys_meta = dict(instance.system_metadata) sys_meta['shelved_at'] = timeutils.strtime(at=cur_time) sys_meta['shelved_image_id'] = None sys_meta['shelved_host'] = host self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.mox.StubOutWithMock(self.compute, '_prep_block_device') self.mox.StubOutWithMock(self.compute.driver, 'spawn') self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(self.rt, 'instance_claim') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.compute._notify_about_instance_usage(self.context, instance, 'unshelve.start') db.instance_update_and_get_original(self.context, instance['uuid'], {'task_state': task_states.SPAWNING}, update_cells=False, columns_to_join=['metadata', 'system_metadata'] ).AndReturn((db_instance, db_instance)) self.compute._prep_block_device(self.context, instance, mox.IgnoreArg()).AndReturn('fake_bdm') db_instance['key_data'] = None db_instance['auto_disk_config'] = None self.rt.instance_claim(self.context, instance, limits).AndReturn( claims.Claim(db_instance, self.rt, _fake_resources())) self.compute.driver.spawn(self.context, instance, None, injected_files=[], admin_password=None, network_info=[], block_device_info='fake_bdm') self.compute._get_power_state(self.context, instance).AndReturn(123) db.instance_update_and_get_original(self.context, instance['uuid'], {'power_state': 123, 'vm_state': vm_states.ACTIVE, 'task_state': None, 'key_data': None, 'auto_disk_config': False, 'expected_task_state': task_states.SPAWNING, 'launched_at': cur_time_tz}, update_cells=False, columns_to_join=['metadata', 'system_metadata'] ).AndReturn((db_instance, db_instance)) self.compute._notify_about_instance_usage(self.context, instance, 'unshelve.end') self.mox.ReplayAll() self.compute.unshelve_instance(self.context, instance, image=None, filter_properties=filter_properties, node=node) def test_shelved_poll_none_exist(self): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.mox.StubOutWithMock(timeutils, 'is_older_than') self.mox.ReplayAll() self.compute._poll_shelved_instances(self.context) def test_shelved_poll_not_timedout(self): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) sys_meta = utils.metadata_to_dict(instance['system_metadata']) shelved_time = timeutils.utcnow() timeutils.set_time_override(shelved_time) timeutils.advance_time_seconds(CONF.shelved_offload_time - 1) sys_meta['shelved_at'] = timeutils.strtime(at=shelved_time) db.instance_update_and_get_original(self.context, instance['uuid'], {'vm_state': vm_states.SHELVED, 'system_metadata': sys_meta}) self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.mox.ReplayAll() self.compute._poll_shelved_instances(self.context) def test_shelved_poll_timedout(self): active_instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, active_instance, {}, {}, [], None, None, True, None, False) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) sys_meta = utils.metadata_to_dict(instance['system_metadata']) shelved_time = timeutils.utcnow() timeutils.set_time_override(shelved_time) timeutils.advance_time_seconds(CONF.shelved_offload_time + 1) sys_meta['shelved_at'] = timeutils.strtime(at=shelved_time) (old, instance) = db.instance_update_and_get_original(self.context, instance['uuid'], {'vm_state': vm_states.SHELVED, 'system_metadata': sys_meta}) def fake_destroy(inst, nw_info, bdm): # NOTE(alaski) There are too many differences between an instance # as returned by instance_update_and_get_original and # instance_get_all_by_filters so just compare the uuid. self.assertEqual(instance['uuid'], inst['uuid']) self.stubs.Set(self.compute.driver, 'destroy', fake_destroy) self.compute._poll_shelved_instances(self.context) class ShelveComputeAPITestCase(test_compute.BaseTestCase): def test_shelve(self): # Ensure instance can be shelved. fake_instance = self._create_fake_instance({'display_name': 'vm01'}) instance = jsonutils.to_primitive(fake_instance) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertIsNone(instance['task_state']) def fake_init(self2): # In original _FakeImageService.__init__(), some fake images are # created. To verify the snapshot name of this test only, here # sets a fake method. self2.images = {} def fake_create(self2, ctxt, metadata): self.assertEqual(metadata['name'], 'vm01-shelved') metadata['id'] = '8b24ed3f-ee57-43bc-bc2e-fb2e9482bc42' return metadata fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, '__init__', fake_init) self.stubs.Set(fake_image._FakeImageService, 'create', fake_create) inst_obj = instance_obj.Instance.get_by_uuid(self.context, instance_uuid) self.compute_api.shelve(self.context, inst_obj) inst_obj.refresh() self.assertEqual(inst_obj.task_state, task_states.SHELVING) db.instance_destroy(self.context, instance['uuid']) def test_unshelve(self): # Ensure instance can be unshelved. instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertIsNone(instance['task_state']) inst_obj = instance_obj.Instance.get_by_uuid(self.context, instance_uuid) self.compute_api.shelve(self.context, inst_obj) inst_obj.refresh() inst_obj.task_state = None inst_obj.vm_state = vm_states.SHELVED inst_obj.save() self.compute_api.unshelve(self.context, inst_obj) inst_obj.refresh() self.assertEqual(inst_obj.task_state, task_states.UNSHELVING) db.instance_destroy(self.context, instance['uuid']) nova-2014.1/nova/tests/compute/test_multiple_nodes.py0000664000175400017540000001571412323721510024123 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for compute service with multiple compute nodes.""" from oslo.config import cfg from nova import context from nova.openstack.common import importutils from nova import test from nova.virt import fake CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('compute_driver', 'nova.virt.driver') class BaseTestCase(test.TestCase): def tearDown(self): fake.restore_nodes() super(BaseTestCase, self).tearDown() class FakeDriverSingleNodeTestCase(BaseTestCase): def setUp(self): super(FakeDriverSingleNodeTestCase, self).setUp() self.driver = fake.FakeDriver(virtapi=None) fake.set_nodes(['xyz']) def test_get_host_stats(self): stats = self.driver.get_host_stats() self.assertIsInstance(stats, dict) self.assertEqual(stats['hypervisor_hostname'], 'xyz') def test_get_available_resource(self): res = self.driver.get_available_resource('xyz') self.assertEqual(res['hypervisor_hostname'], 'xyz') class FakeDriverMultiNodeTestCase(BaseTestCase): def setUp(self): super(FakeDriverMultiNodeTestCase, self).setUp() self.driver = fake.FakeDriver(virtapi=None) fake.set_nodes(['aaa', 'bbb']) def test_get_host_stats(self): stats = self.driver.get_host_stats() self.assertIsInstance(stats, list) self.assertEqual(len(stats), 2) self.assertEqual(stats[0]['hypervisor_hostname'], 'aaa') self.assertEqual(stats[1]['hypervisor_hostname'], 'bbb') def test_get_available_resource(self): res_a = self.driver.get_available_resource('aaa') self.assertEqual(res_a['hypervisor_hostname'], 'aaa') res_b = self.driver.get_available_resource('bbb') self.assertEqual(res_b['hypervisor_hostname'], 'bbb') res_x = self.driver.get_available_resource('xxx') self.assertEqual(res_x, {}) class MultiNodeComputeTestCase(BaseTestCase): def setUp(self): super(MultiNodeComputeTestCase, self).setUp() self.flags(compute_driver='nova.virt.fake.FakeDriver') self.compute = importutils.import_object(CONF.compute_manager) self.flags(use_local=True, group='conductor') self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) def fake_get_compute_nodes_in_db(context): fake_compute_nodes = [{'local_gb': 259, 'vcpus_used': 0, 'deleted': 0, 'hypervisor_type': 'powervm', 'created_at': '2013-04-01T00:27:06.000000', 'local_gb_used': 0, 'updated_at': '2013-04-03T00:35:41.000000', 'hypervisor_hostname': 'fake_phyp1', 'memory_mb_used': 512, 'memory_mb': 131072, 'current_workload': 0, 'vcpus': 16, 'cpu_info': 'ppc64,powervm,3940', 'running_vms': 0, 'free_disk_gb': 259, 'service_id': 7, 'hypervisor_version': 7, 'disk_available_least': 265856, 'deleted_at': None, 'free_ram_mb': 130560, 'id': 2}] return fake_compute_nodes def fake_compute_node_delete(context, compute_node): self.assertEqual(compute_node.get('hypervisor_hostname'), 'fake_phyp1') self.stubs.Set(self.compute, '_get_compute_nodes_in_db', fake_get_compute_nodes_in_db) self.stubs.Set(self.compute.conductor_api, 'compute_node_delete', fake_compute_node_delete) def test_update_available_resource_add_remove_node(self): ctx = context.get_admin_context() fake.set_nodes(['A', 'B', 'C']) self.compute.update_available_resource(ctx) self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), ['A', 'B', 'C']) fake.set_nodes(['A', 'B']) self.compute.update_available_resource(ctx) self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), ['A', 'B']) fake.set_nodes(['A', 'B', 'C']) self.compute.update_available_resource(ctx) self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), ['A', 'B', 'C']) def test_compute_manager_removes_deleted_node(self): ctx = context.get_admin_context() fake.set_nodes(['A', 'B']) fake_compute_nodes = [{'hypervisor_hostname': 'A', 'id': 2}, {'hypervisor_hostname': 'B', 'id': 3}] def fake_get_compute_nodes_in_db(context): return fake_compute_nodes def fake_compute_node_delete(context, compute_node): for cn in fake_compute_nodes: if (compute_node['hypervisor_hostname'] == cn['hypervisor_hostname']): fake_compute_nodes.remove(cn) return self.stubs.Set(self.compute, '_get_compute_nodes_in_db', fake_get_compute_nodes_in_db) self.stubs.Set(self.compute.conductor_api, 'compute_node_delete', fake_compute_node_delete) self.compute.update_available_resource(ctx) # Verify nothing is deleted if driver and db compute nodes match self.assertEqual(len(fake_compute_nodes), 2) self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), ['A', 'B']) fake.set_nodes(['A']) self.compute.update_available_resource(ctx) # Verify B gets deleted since now only A is reported by driver self.assertEqual(len(fake_compute_nodes), 1) self.assertEqual(fake_compute_nodes[0]['hypervisor_hostname'], 'A') self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), ['A']) nova-2014.1/nova/tests/compute/test_rpcapi.py0000664000175400017540000010676212323721510022362 0ustar jenkinsjenkins00000000000000# 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. """ Unit Tests for nova.compute.rpcapi """ import contextlib import mock from oslo.config import cfg from nova.compute import rpcapi as compute_rpcapi from nova import context from nova import db from nova.openstack.common import jsonutils from nova import test from nova.tests import fake_block_device CONF = cfg.CONF class ComputeRpcAPITestCase(test.TestCase): def setUp(self): super(ComputeRpcAPITestCase, self).setUp() self.context = context.get_admin_context() inst = db.instance_create(self.context, {'host': 'fake_host', 'instance_type_id': 1}) self.fake_instance = jsonutils.to_primitive(inst) self.fake_volume_bdm = jsonutils.to_primitive( fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'destination_type': 'volume', 'instance_uuid': self.fake_instance['uuid'], 'volume_id': 'fake-volume-id'})) def test_serialized_instance_has_name(self): self.assertIn('name', self.fake_instance) def _test_compute_api(self, method, rpc_method, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = kwargs.pop('rpcapi_class', compute_rpcapi.ComputeAPI)() self.assertIsNotNone(rpcapi.client) self.assertEqual(rpcapi.client.target.topic, CONF.compute_topic) orig_prepare = rpcapi.client.prepare expected_version = kwargs.pop('version', rpcapi.client.target.version) expected_kwargs = kwargs.copy() if 'host_param' in expected_kwargs: expected_kwargs['host'] = expected_kwargs.pop('host_param') else: expected_kwargs.pop('host', None) expected_kwargs.pop('destination', None) cast_and_call = ['confirm_resize', 'stop_instance'] if rpc_method == 'call' and method in cast_and_call: if method == 'confirm_resize': kwargs['cast'] = False else: kwargs['do_cast'] = False if 'host' in kwargs: host = kwargs['host'] elif 'destination' in kwargs: host = kwargs['destination'] elif 'instances' in kwargs: host = kwargs['instances'][0]['host'] else: host = kwargs['instance']['host'] with contextlib.nested( mock.patch.object(rpcapi.client, rpc_method), mock.patch.object(rpcapi.client, 'prepare'), mock.patch.object(rpcapi.client, 'can_send_version'), ) as ( rpc_mock, prepare_mock, csv_mock ): prepare_mock.return_value = rpcapi.client rpc_mock.return_value = 'foo' if rpc_method == 'call' else None csv_mock.side_effect = ( lambda v: orig_prepare(version=v).can_send_version()) retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, rpc_mock.return_value) prepare_mock.assert_called_once_with(version=expected_version, server=host) rpc_mock.assert_called_once_with(ctxt, method, **expected_kwargs) def test_add_aggregate_host(self): self._test_compute_api('add_aggregate_host', 'cast', aggregate={'id': 'fake_id'}, host_param='host', host='host', slave_info={}) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('add_aggregate_host', 'cast', aggregate={'id': 'fake_id'}, host_param='host', host='host', slave_info={}, version='2.14') def test_add_fixed_ip_to_instance(self): self._test_compute_api('add_fixed_ip_to_instance', 'cast', instance=self.fake_instance, network_id='id', version='3.12') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('add_fixed_ip_to_instance', 'cast', instance=self.fake_instance, network_id='id', version='2.0') def test_attach_interface(self): self._test_compute_api('attach_interface', 'call', instance=self.fake_instance, network_id='id', port_id='id2', version='3.17', requested_ip='192.168.1.50') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('attach_interface', 'call', instance=self.fake_instance, network_id='id', port_id='id2', requested_ip='192.168.1.50', version='2.25') def test_attach_volume(self): self._test_compute_api('attach_volume', 'cast', instance=self.fake_instance, volume_id='id', mountpoint='mp', bdm=self.fake_volume_bdm, version='3.16') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('attach_volume', 'cast', instance=self.fake_instance, volume_id='id', mountpoint='mp', version='2.0') def test_change_instance_metadata(self): self._test_compute_api('change_instance_metadata', 'cast', instance=self.fake_instance, diff={}, version='3.7') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('change_instance_metadata', 'cast', instance=self.fake_instance, diff={}, version='2.0') def test_check_can_live_migrate_destination(self): self._test_compute_api('check_can_live_migrate_destination', 'call', instance=self.fake_instance, destination='dest', block_migration=True, disk_over_commit=True) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('check_can_live_migrate_destination', 'call', instance=self.fake_instance, destination='dest', block_migration=True, disk_over_commit=True, version='2.38') def test_check_can_live_migrate_source(self): self._test_compute_api('check_can_live_migrate_source', 'call', instance=self.fake_instance, dest_check_data={"test": "data"}) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('check_can_live_migrate_source', 'call', instance=self.fake_instance, dest_check_data={"test": "data"}, version='2.38') def test_check_instance_shared_storage(self): self._test_compute_api('check_instance_shared_storage', 'call', instance=self.fake_instance, data='foo') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('check_instance_shared_storage', 'call', instance=self.fake_instance, data='foo', version='2.28') def test_confirm_resize_cast(self): self._test_compute_api('confirm_resize', 'cast', instance=self.fake_instance, migration={'id': 'foo'}, host='host', reservations=list('fake_res')) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('confirm_resize', 'cast', instance=self.fake_instance, migration={'id': 'foo'}, host='host', reservations=list('fake_res'), version='2.39') def test_confirm_resize_call(self): self._test_compute_api('confirm_resize', 'call', instance=self.fake_instance, migration={'id': 'foo'}, host='host', reservations=list('fake_res')) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('confirm_resize', 'cast', instance=self.fake_instance, migration={'id': 'foo'}, host='host', reservations=list('fake_res'), version='2.39') def test_detach_interface(self): self._test_compute_api('detach_interface', 'cast', version='3.17', instance=self.fake_instance, port_id='fake_id') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('detach_interface', 'cast', instance=self.fake_instance, port_id='fake_id', version='2.25') def test_detach_volume(self): self._test_compute_api('detach_volume', 'cast', instance=self.fake_instance, volume_id='id') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('detach_volume', 'cast', instance=self.fake_instance, volume_id='id', version='2.0') def test_finish_resize(self): self._test_compute_api('finish_resize', 'cast', instance=self.fake_instance, migration={'id': 'foo'}, image='image', disk_info='disk_info', host='host', reservations=list('fake_res')) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('finish_resize', 'cast', instance=self.fake_instance, migration={'id': 'foo'}, image='image', disk_info='disk_info', host='host', reservations=list('fake_res'), version='2.46') def test_finish_revert_resize(self): self._test_compute_api('finish_revert_resize', 'cast', instance=self.fake_instance, migration={'id': 'fake_id'}, host='host', reservations=list('fake_res')) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('finish_revert_resize', 'cast', instance=self.fake_instance, migration={'id': 'fake_id'}, host='host', reservations=list('fake_res'), version='2.47') def test_get_console_output(self): self._test_compute_api('get_console_output', 'call', instance=self.fake_instance, tail_length='tl') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_console_output', 'call', instance=self.fake_instance, tail_length='tl', version='2.0') def test_get_console_pool_info(self): self._test_compute_api('get_console_pool_info', 'call', console_type='type', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_console_pool_info', 'call', console_type='type', host='host', version='2.0') def test_get_console_topic(self): self._test_compute_api('get_console_topic', 'call', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_console_topic', 'call', host='host', version='2.0') def test_get_diagnostics(self): self._test_compute_api('get_diagnostics', 'call', instance=self.fake_instance, version='3.18') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_diagnostics', 'call', instance=self.fake_instance, version='2.0') def test_get_vnc_console(self): self._test_compute_api('get_vnc_console', 'call', instance=self.fake_instance, console_type='type', version='3.2') self.flags(compute='3.0', group='upgrade_levels') self._test_compute_api('get_vnc_console', 'call', instance=self.fake_instance, console_type='type', version='3.0') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_vnc_console', 'call', instance=self.fake_instance, console_type='type', version='2.0') def test_get_spice_console(self): self._test_compute_api('get_spice_console', 'call', instance=self.fake_instance, console_type='type', version='3.1') self.flags(compute='3.0', group='upgrade_levels') self._test_compute_api('get_spice_console', 'call', instance=self.fake_instance, console_type='type', version='3.0') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_spice_console', 'call', instance=self.fake_instance, console_type='type', version='2.24') def test_get_rdp_console(self): self._test_compute_api('get_rdp_console', 'call', instance=self.fake_instance, console_type='type', version='3.10') def test_validate_console_port(self): self._test_compute_api('validate_console_port', 'call', instance=self.fake_instance, port="5900", console_type="novnc", version='3.3') self.flags(compute='3.0', group='upgrade_levels') self._test_compute_api('validate_console_port', 'call', instance=self.fake_instance, port="5900", console_type="novnc", version='3.0') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('validate_console_port', 'call', instance=self.fake_instance, port="5900", console_type="novnc", version='2.26') def test_host_maintenance_mode(self): self._test_compute_api('host_maintenance_mode', 'call', host_param='param', mode='mode', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('host_maintenance_mode', 'call', host_param='param', mode='mode', host='host', version='2.0') def test_host_power_action(self): self._test_compute_api('host_power_action', 'call', action='action', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('host_power_action', 'call', action='action', host='host', version='2.0') def test_inject_network_info(self): self._test_compute_api('inject_network_info', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('inject_network_info', 'cast', instance=self.fake_instance, version='2.41') def test_live_migration(self): self._test_compute_api('live_migration', 'cast', instance=self.fake_instance, dest='dest', block_migration='blockity_block', host='tsoh', migrate_data={}) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('live_migration', 'cast', instance=self.fake_instance, dest='dest', block_migration='blockity_block', host='tsoh', migrate_data={}, version='2.0') def test_post_live_migration_at_destination(self): self._test_compute_api('post_live_migration_at_destination', 'cast', instance=self.fake_instance, block_migration='block_migration', host='host', version='3.14') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('post_live_migration_at_destination', 'cast', instance=self.fake_instance, block_migration='block_migration', host='host', version='2.0') def test_pause_instance(self): self._test_compute_api('pause_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('pause_instance', 'cast', instance=self.fake_instance, version='2.36') def test_soft_delete_instance(self): self._test_compute_api('soft_delete_instance', 'cast', instance=self.fake_instance, reservations=['uuid1', 'uuid2']) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('soft_delete_instance', 'cast', instance=self.fake_instance, reservations=['uuid1', 'uuid2'], version='2.35') def test_swap_volume(self): self._test_compute_api('swap_volume', 'cast', instance=self.fake_instance, old_volume_id='oldid', new_volume_id='newid') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('swap_volume', 'cast', instance=self.fake_instance, old_volume_id='oldid', new_volume_id='newid', version='2.34') def test_restore_instance(self): self._test_compute_api('restore_instance', 'cast', instance=self.fake_instance, version='3.20') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('restore_instance', 'cast', instance=self.fake_instance, version='2.0') def test_pre_live_migration(self): self._test_compute_api('pre_live_migration', 'call', instance=self.fake_instance, block_migration='block_migration', disk='disk', host='host', migrate_data=None, version='3.19') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('pre_live_migration', 'call', instance=self.fake_instance, block_migration='block_migration', disk='disk', host='host', migrate_data=None, version='2.21') def test_prep_resize(self): self._test_compute_api('prep_resize', 'cast', instance=self.fake_instance, instance_type='fake_type', image='fake_image', host='host', reservations=list('fake_res'), request_spec='fake_spec', filter_properties={'fakeprop': 'fakeval'}, node='node') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('prep_resize', 'cast', instance=self.fake_instance, instance_type='fake_type', image='fake_image', host='host', reservations=list('fake_res'), request_spec='fake_spec', filter_properties={'fakeprop': 'fakeval'}, node='node', version='2.43') def test_reboot_instance(self): self.maxDiff = None self._test_compute_api('reboot_instance', 'cast', instance=self.fake_instance, block_device_info={}, reboot_type='type') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('reboot_instance', 'cast', instance=self.fake_instance, block_device_info={}, reboot_type='type', version='2.32') def test_rebuild_instance(self): self._test_compute_api('rebuild_instance', 'cast', new_pass='None', injected_files='None', image_ref='None', orig_image_ref='None', bdms=[], instance=self.fake_instance, host='new_host', orig_sys_metadata=None, recreate=True, on_shared_storage=True, preserve_ephemeral=True, version='3.21') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('rebuild_instance', 'cast', new_pass='None', injected_files='None', image_ref='None', orig_image_ref='None', bdms=[], instance=self.fake_instance, host='new_host', orig_sys_metadata=None, recreate=True, on_shared_storage=True, version='2.22') def test_rebuild_instance_preserve_ephemeral(self): self.flags(compute='3.5', group='upgrade_levels') self._test_compute_api('rebuild_instance', 'cast', new_pass='None', injected_files='None', image_ref='None', orig_image_ref='None', bdms=[], instance=self.fake_instance, host='new_host', orig_sys_metadata=None, recreate=True, on_shared_storage=True, preserve_ephemeral=True, version='3.5') def test_reserve_block_device_name(self): self._test_compute_api('reserve_block_device_name', 'call', instance=self.fake_instance, device='device', volume_id='id', disk_bus='ide', device_type='cdrom', version='3.16') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('reserve_block_device_name', 'call', instance=self.fake_instance, device='device', volume_id='id', version='2.3') def refresh_provider_fw_rules(self): self._test_compute_api('refresh_provider_fw_rules', 'cast', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('refresh_provider_fw_rules', 'cast', host='host', version='2.0') def test_refresh_security_group_rules(self): self._test_compute_api('refresh_security_group_rules', 'cast', rpcapi_class=compute_rpcapi.SecurityGroupAPI, security_group_id='id', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('refresh_security_group_rules', 'cast', rpcapi_class=compute_rpcapi.SecurityGroupAPI, security_group_id='id', host='host', version='2.0') def test_refresh_security_group_members(self): self._test_compute_api('refresh_security_group_members', 'cast', rpcapi_class=compute_rpcapi.SecurityGroupAPI, security_group_id='id', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('refresh_security_group_members', 'cast', rpcapi_class=compute_rpcapi.SecurityGroupAPI, security_group_id='id', host='host', version='2.0') def test_remove_aggregate_host(self): self._test_compute_api('remove_aggregate_host', 'cast', aggregate={'id': 'fake_id'}, host_param='host', host='host', slave_info={}) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('remove_aggregate_host', 'cast', aggregate={'id': 'fake_id'}, host_param='host', host='host', slave_info={}, version='2.15') def test_remove_fixed_ip_from_instance(self): self._test_compute_api('remove_fixed_ip_from_instance', 'cast', instance=self.fake_instance, address='addr', version='3.13') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('remove_fixed_ip_from_instance', 'cast', instance=self.fake_instance, address='addr', version='2.0') def test_remove_volume_connection(self): self._test_compute_api('remove_volume_connection', 'call', instance=self.fake_instance, volume_id='id', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('remove_volume_connection', 'call', instance=self.fake_instance, volume_id='id', host='host', version='2.0') def test_rescue_instance(self): self._test_compute_api('rescue_instance', 'cast', instance=self.fake_instance, rescue_password='pw', version='3.9') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('rescue_instance', 'cast', instance=self.fake_instance, rescue_password='pw', version='2.44') def test_reset_network(self): self._test_compute_api('reset_network', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('reset_network', 'cast', instance=self.fake_instance, version='2.40') def test_resize_instance(self): self._test_compute_api('resize_instance', 'cast', instance=self.fake_instance, migration={'id': 'fake_id'}, image='image', instance_type={'id': 1}, reservations=list('fake_res')) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('resize_instance', 'cast', instance=self.fake_instance, migration={'id': 'fake_id'}, image='image', instance_type={'id': 1}, reservations=list('fake_res'), version='2.45') def test_resume_instance(self): self._test_compute_api('resume_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('resume_instance', 'cast', instance=self.fake_instance, version='2.33') def test_revert_resize(self): self._test_compute_api('revert_resize', 'cast', instance=self.fake_instance, migration={'id': 'fake_id'}, host='host', reservations=list('fake_res')) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('revert_resize', 'cast', instance=self.fake_instance, migration={'id': 'fake_id'}, host='host', reservations=list('fake_res'), version='2.39') def test_rollback_live_migration_at_destination(self): self._test_compute_api('rollback_live_migration_at_destination', 'cast', instance=self.fake_instance, host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('rollback_live_migration_at_destination', 'cast', instance=self.fake_instance, host='host', version='2.0') def test_run_instance(self): self._test_compute_api('run_instance', 'cast', instance=self.fake_instance, host='fake_host', request_spec='fake_spec', filter_properties={}, requested_networks='networks', injected_files='files', admin_password='pw', is_first_time=True, node='node', legacy_bdm_in_spec=False) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('run_instance', 'cast', instance=self.fake_instance, host='fake_host', request_spec='fake_spec', filter_properties={}, requested_networks='networks', injected_files='files', admin_password='pw', is_first_time=True, node='node', legacy_bdm_in_spec=False, version='2.37') def test_set_admin_password(self): self._test_compute_api('set_admin_password', 'call', instance=self.fake_instance, new_pass='pw', version='3.8') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('set_admin_password', 'call', instance=self.fake_instance, new_pass='pw', version='2.0') def test_set_host_enabled(self): self._test_compute_api('set_host_enabled', 'call', enabled='enabled', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('set_host_enabled', 'call', enabled='enabled', host='host', version='2.0') def test_get_host_uptime(self): self._test_compute_api('get_host_uptime', 'call', host='host') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('get_host_uptime', 'call', host='host', version='2.0') def test_backup_instance(self): self._test_compute_api('backup_instance', 'cast', instance=self.fake_instance, image_id='id', backup_type='type', rotation='rotation') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('backup_instance', 'cast', instance=self.fake_instance, image_id='id', backup_type='type', rotation='rotation', version='2.42') def test_snapshot_instance(self): self._test_compute_api('snapshot_instance', 'cast', instance=self.fake_instance, image_id='id') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('snapshot_instance', 'cast', instance=self.fake_instance, image_id='id', version='2.42') def test_start_instance(self): self._test_compute_api('start_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('start_instance', 'cast', instance=self.fake_instance, version='2.29') def test_stop_instance_cast(self): self._test_compute_api('stop_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('stop_instance', 'cast', instance=self.fake_instance, version='2.29') def test_stop_instance_call(self): self._test_compute_api('stop_instance', 'call', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('stop_instance', 'call', instance=self.fake_instance, version='2.29') def test_suspend_instance(self): self._test_compute_api('suspend_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('suspend_instance', 'cast', instance=self.fake_instance, version='2.33') def test_terminate_instance(self): self._test_compute_api('terminate_instance', 'cast', instance=self.fake_instance, bdms=[], reservations=['uuid1', 'uuid2'], version='3.22') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('terminate_instance', 'cast', instance=self.fake_instance, bdms=[], reservations=['uuid1', 'uuid2'], version='2.35') def test_unpause_instance(self): self._test_compute_api('unpause_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('unpause_instance', 'cast', instance=self.fake_instance, version='2.36') def test_unrescue_instance(self): self._test_compute_api('unrescue_instance', 'cast', instance=self.fake_instance, version='3.11') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('unrescue_instance', 'cast', instance=self.fake_instance, version='2.0') def test_shelve_instance(self): self._test_compute_api('shelve_instance', 'cast', instance=self.fake_instance, image_id='image_id') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('shelve_instance', 'cast', instance=self.fake_instance, image_id='image_id', version='2.31') def test_shelve_offload_instance(self): self._test_compute_api('shelve_offload_instance', 'cast', instance=self.fake_instance) # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('shelve_offload_instance', 'cast', instance=self.fake_instance, version='2.31') def test_unshelve_instance(self): self._test_compute_api('unshelve_instance', 'cast', instance=self.fake_instance, host='host', image='image', filter_properties={'fakeprop': 'fakeval'}, node='node', version='3.15') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('unshelve_instance', 'cast', instance=self.fake_instance, host='host', image='image', version='2.31') def test_volume_snapshot_create(self): self._test_compute_api('volume_snapshot_create', 'cast', instance=self.fake_instance, volume_id='fake_id', create_info={}, version='3.6') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('volume_snapshot_create', 'cast', instance=self.fake_instance, volume_id='fake_id', create_info={}, version='2.44') def test_volume_snapshot_delete(self): self._test_compute_api('volume_snapshot_delete', 'cast', instance=self.fake_instance, volume_id='fake_id', snapshot_id='fake_id2', delete_info={}, version='3.6') # NOTE(russellb) Havana compat self.flags(compute='havana', group='upgrade_levels') self._test_compute_api('volume_snapshot_delete', 'cast', instance=self.fake_instance, volume_id='fake_id', snapshot_id='fake_id2', delete_info={}, version='2.44') def test_external_instance_event(self): self._test_compute_api('external_instance_event', 'cast', instances=[self.fake_instance], events=['event'], version='3.23') nova-2014.1/nova/tests/compute/test_compute.py0000664000175400017540000164531112323721510022557 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # Copyright 2013 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. """Tests for compute service.""" import base64 import contextlib import datetime import operator import sys import testtools import time import traceback import uuid import mock import mox from oslo.config import cfg from oslo import messaging import six from testtools import matchers as testtools_matchers import nova from nova import availability_zones from nova import block_device from nova import compute from nova.compute import api as compute_api from nova.compute import flavors from nova.compute import manager as compute_manager from nova.compute import power_state from nova.compute import rpcapi as compute_rpcapi from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import manager as conductor_manager from nova import context from nova import db from nova import exception from nova.image import glance from nova.network import api as network_api from nova.network import model as network_model from nova.network.security_group import openstack_driver from nova.objects import base as obj_base from nova.objects import block_device as block_device_obj from nova.objects import instance as instance_obj from nova.objects import instance_group as instance_group_obj from nova.objects import migration as migration_obj from nova.objects import quotas as quotas_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import policy from nova import quota from nova import test from nova.tests.compute import fake_resource_tracker from nova.tests.db import fakes as db_fakes from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests import fake_instance_actions from nova.tests import fake_network from nova.tests import fake_network_cache_model from nova.tests import fake_notifier from nova.tests.image import fake as fake_image from nova.tests import matchers from nova.tests.objects import test_flavor from nova.tests.objects import test_migration from nova.tests.objects import test_network from nova import utils from nova.virt import block_device as driver_block_device from nova.virt import event from nova.virt import fake from nova.volume import cinder QUOTAS = quota.QUOTAS LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('host', 'nova.netconf') CONF.import_opt('live_migration_retry_count', 'nova.compute.manager') CONF.import_opt('default_ephemeral_format', 'nova.virt.driver') FAKE_IMAGE_REF = 'fake-image-ref' NODENAME = 'fakenode1' def fake_not_implemented(*args, **kwargs): raise NotImplementedError() def get_primitive_instance_by_uuid(context, instance_uuid): """Helper method to get an instance and then convert it to a primitive form using jsonutils. """ instance = db.instance_get_by_uuid(context, instance_uuid) return jsonutils.to_primitive(instance) def unify_instance(instance): """Return a dict-like instance for both object-initiated and model-initiated sources that can reasonably be compared. """ newdict = dict() for k, v in instance.iteritems(): if isinstance(v, datetime.datetime): # NOTE(danms): DB models and Instance objects have different # timezone expectations v = v.replace(tzinfo=None) elif k == 'fault': # NOTE(danms): DB models don't have 'fault' continue elif k == 'pci_devices': # NOTE(yonlig.he) pci devices need lazy loading # fake db does not support it yet. continue newdict[k] = v return newdict class FakeSchedulerAPI(object): def run_instance(self, ctxt, request_spec, admin_password, injected_files, requested_networks, is_first_time, filter_properties): pass def live_migration(self, ctxt, block_migration, disk_over_commit, instance, dest): pass def prep_resize(self, ctxt, instance, instance_type, image, request_spec, filter_properties, reservations): pass class BaseTestCase(test.TestCase): def setUp(self): super(BaseTestCase, self).setUp() self.flags(compute_driver='nova.virt.fake.FakeDriver', network_manager='nova.network.manager.FlatManager') fake.set_nodes([NODENAME]) self.flags(use_local=True, group='conductor') fake_notifier.stub_notifier(self.stubs) self.addCleanup(fake_notifier.reset) self.compute = importutils.import_object(CONF.compute_manager) # override tracker with a version that doesn't need the database: fake_rt = fake_resource_tracker.FakeResourceTracker(self.compute.host, self.compute.driver, NODENAME) self.compute._resource_tracker_dict[NODENAME] = fake_rt def fake_get_compute_nodes_in_db(context): fake_compute_nodes = [{'local_gb': 259, 'vcpus_used': 0, 'deleted': 0, 'hypervisor_type': 'powervm', 'created_at': '2013-04-01T00:27:06.000000', 'local_gb_used': 0, 'updated_at': '2013-04-03T00:35:41.000000', 'hypervisor_hostname': 'fake_phyp1', 'memory_mb_used': 512, 'memory_mb': 131072, 'current_workload': 0, 'vcpus': 16, 'cpu_info': 'ppc64,powervm,3940', 'running_vms': 0, 'free_disk_gb': 259, 'service_id': 7, 'hypervisor_version': 7, 'disk_available_least': 265856, 'deleted_at': None, 'free_ram_mb': 130560, 'id': 2}] return fake_compute_nodes def fake_compute_node_delete(context, compute_node): self.assertEqual(compute_node.get('hypervisor_hostname'), 'fake_phyp1') self.stubs.Set(self.compute, '_get_compute_nodes_in_db', fake_get_compute_nodes_in_db) self.stubs.Set(self.compute.conductor_api, 'compute_node_delete', fake_compute_node_delete) self.compute.update_available_resource( context.get_admin_context()) self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) def fake_show(meh, context, id): if id: return {'id': id, 'min_disk': None, 'min_ram': None, 'name': 'fake_name', 'status': 'active', 'properties': {'kernel_id': 'fake_kernel_id', 'ramdisk_id': 'fake_ramdisk_id', 'something_else': 'meow'}} else: raise exception.ImageNotFound(image_id=id) fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, 'show', fake_show) fake_rpcapi = FakeSchedulerAPI() self.stubs.Set(self.compute, 'scheduler_rpcapi', fake_rpcapi) fake_network.set_stub_network_methods(self.stubs) fake_instance_actions.stub_out_action_events(self.stubs) def fake_get_nw_info(cls, ctxt, instance, *args, **kwargs): self.assertTrue(ctxt.is_admin) return fake_network.fake_get_instance_nw_info(self.stubs, 1, 1) self.stubs.Set(network_api.API, 'get_instance_nw_info', fake_get_nw_info) self.stubs.Set(network_api.API, 'allocate_for_instance', fake_get_nw_info) self.compute_api = compute.API() # Just to make long lines short self.rt = self.compute._get_resource_tracker(NODENAME) def tearDown(self): timeutils.clear_time_override() ctxt = context.get_admin_context() fake_image.FakeImageService_reset() instances = db.instance_get_all(ctxt) for instance in instances: db.instance_destroy(ctxt, instance['uuid']) fake.restore_nodes() super(BaseTestCase, self).tearDown() def _create_fake_instance(self, params=None, type_name='m1.tiny', services=False): """Create a test instance.""" if not params: params = {} def make_fake_sys_meta(): sys_meta = params.pop("system_metadata", {}) inst_type = flavors.get_flavor_by_name(type_name) for key in flavors.system_metadata_flavor_props: sys_meta['instance_type_%s' % key] = inst_type[key] return sys_meta inst = {} inst['vm_state'] = vm_states.ACTIVE inst['task_state'] = None inst['image_ref'] = FAKE_IMAGE_REF inst['reservation_id'] = 'r-fakeres' inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['host'] = 'fake_host' inst['node'] = NODENAME type_id = flavors.get_flavor_by_name(type_name)['id'] inst['instance_type_id'] = type_id inst['ami_launch_index'] = 0 inst['memory_mb'] = 0 inst['vcpus'] = 0 inst['root_gb'] = 0 inst['ephemeral_gb'] = 0 inst['architecture'] = 'x86_64' inst['os_type'] = 'Linux' inst['system_metadata'] = make_fake_sys_meta() inst['locked'] = False inst['created_at'] = timeutils.utcnow() inst['updated_at'] = timeutils.utcnow() inst['launched_at'] = timeutils.utcnow() inst['security_groups'] = [] inst.update(params) if services: _create_service_entries(self.context.elevated(), {'fake_zone': [inst['host']]}) return db.instance_create(self.context, inst) def _objectify(self, db_inst): return instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), db_inst, expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS) def _create_fake_instance_obj(self, params=None, type_name='m1.tiny'): db_inst = self._create_fake_instance(params, type_name=type_name) return self._objectify(db_inst) def _create_instance_type(self, params=None): """Create a test instance type.""" if not params: params = {} context = self.context.elevated() inst = {} inst['name'] = 'm1.small' inst['memory_mb'] = 1024 inst['vcpus'] = 1 inst['root_gb'] = 20 inst['ephemeral_gb'] = 10 inst['flavorid'] = '1' inst['swap'] = 2048 inst['rxtx_factor'] = 1 inst.update(params) return db.flavor_create(context, inst)['id'] def _create_group(self): values = {'name': 'testgroup', 'description': 'testgroup', 'user_id': self.user_id, 'project_id': self.project_id} return db.security_group_create(self.context, values) def _stub_migrate_server(self): def _fake_migrate_server(*args, **kwargs): pass self.stubs.Set(conductor_manager.ComputeTaskManager, 'migrate_server', _fake_migrate_server) def _init_aggregate_with_host(self, aggr, aggr_name, zone, host): if not aggr: aggr = self.api.create_aggregate(self.context, aggr_name, zone) aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], host) return aggr class ComputeVolumeTestCase(BaseTestCase): def setUp(self): super(ComputeVolumeTestCase, self).setUp() self.volume_id = 'fake' self.fetched_attempts = 0 self.instance = { 'id': 'fake', 'uuid': 'fake', 'name': 'fake', 'root_device_name': '/dev/vda', } self.fake_volume = fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'destination_type': 'volume', 'volume_id': self.volume_id, 'device_name': '/dev/vdb'}) self.instance_object = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), fake_instance.fake_db_instance()) self.stubs.Set(self.compute.volume_api, 'get', lambda *a, **kw: {'id': self.volume_id}) self.stubs.Set(self.compute.driver, 'get_volume_connector', lambda *a, **kw: None) self.stubs.Set(self.compute.volume_api, 'initialize_connection', lambda *a, **kw: {}) self.stubs.Set(self.compute.volume_api, 'terminate_connection', lambda *a, **kw: None) self.stubs.Set(self.compute.volume_api, 'attach', lambda *a, **kw: None) self.stubs.Set(self.compute.volume_api, 'detach', lambda *a, **kw: None) self.stubs.Set(self.compute.volume_api, 'check_attach', lambda *a, **kw: None) def store_cinfo(context, *args, **kwargs): self.cinfo = jsonutils.loads(args[-1].get('connection_info')) return self.fake_volume self.stubs.Set(self.compute.conductor_api, 'block_device_mapping_update', store_cinfo) self.stubs.Set(self.compute.conductor_api, 'block_device_mapping_update_or_create', store_cinfo) self.stubs.Set(db, 'block_device_mapping_create', store_cinfo) self.stubs.Set(db, 'block_device_mapping_update', store_cinfo) def test_attach_volume_serial(self): fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) with (mock.patch.object(cinder.API, 'get_volume_encryption_metadata', return_value={}) ) as mock_get_vol_enc: instance = self._create_fake_instance() self.compute.attach_volume(self.context, self.volume_id, '/dev/vdb', instance, bdm=fake_bdm) self.assertEqual(self.cinfo.get('serial'), self.volume_id) def test_attach_volume_raises(self): fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) instance = self._create_fake_instance() def fake_attach(*args, **kwargs): raise test.TestingException with contextlib.nested( mock.patch.object(driver_block_device.DriverVolumeBlockDevice, 'attach'), mock.patch.object(cinder.API, 'unreserve_volume'), mock.patch.object(block_device_obj.BlockDeviceMapping, 'destroy') ) as (mock_attach, mock_unreserve, mock_destroy): mock_attach.side_effect = fake_attach self.assertRaises( test.TestingException, self.compute.attach_volume, self.context, 'fake', '/dev/vdb', instance, bdm=fake_bdm) self.assertTrue(mock_unreserve.called) self.assertTrue(mock_destroy.called) def test_attach_volume_no_bdm(self): fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) instance = self._create_fake_instance() with contextlib.nested( mock.patch.object(block_device_obj.BlockDeviceMapping, 'get_by_volume_id', return_value=fake_bdm), mock.patch.object(self.compute, '_attach_volume') ) as (mock_get_by_id, mock_attach): self.compute.attach_volume(self.context, 'fake', '/dev/vdb', instance, bdm=None) mock_get_by_id.assert_called_once_with(self.context, 'fake') self.assertTrue(mock_attach.called) def test_await_block_device_created_to_slow(self): def never_get(context, vol_id): return { 'status': 'creating', 'id': 'blah', } self.stubs.Set(self.compute.volume_api, 'get', never_get) self.assertRaises(exception.VolumeNotCreated, self.compute._await_block_device_map_created, self.context, '1', max_tries=2, wait_between=0.1) def test_await_block_device_created_slow(self): c = self.compute def slow_get(context, vol_id): while self.fetched_attempts < 2: self.fetched_attempts += 1 return { 'status': 'creating', 'id': 'blah', } return { 'status': 'available', 'id': 'blah', } self.stubs.Set(c.volume_api, 'get', slow_get) attempts = c._await_block_device_map_created(self.context, '1', max_tries=4, wait_between=0.1) self.assertEqual(attempts, 3) def test_boot_volume_serial(self): with ( mock.patch.object(block_device_obj.BlockDeviceMapping, 'save') ) as mock_save: block_device_mapping = [ block_device.BlockDeviceDict({ 'id': 1, 'no_device': None, 'source_type': 'volume', 'destination_type': 'volume', 'snapshot_id': None, 'volume_id': self.volume_id, 'device_name': '/dev/vdb', 'delete_on_termination': False, })] prepped_bdm = self.compute._prep_block_device( self.context, self.instance, block_device_mapping) mock_save.assert_called_once_with(self.context) volume_driver_bdm = prepped_bdm['block_device_mapping'][0] self.assertEqual(volume_driver_bdm['connection_info']['serial'], self.volume_id) def test_boot_volume_metadata(self, metadata=True): def volume_api_get(*args, **kwargs): if metadata: return { 'volume_image_metadata': {'vol_test_key': 'vol_test_value'} } else: return {} self.stubs.Set(self.compute_api.volume_api, 'get', volume_api_get) block_device_mapping = [{ 'id': 1, 'device_name': 'vda', 'no_device': None, 'virtual_name': None, 'snapshot_id': None, 'volume_id': self.volume_id, 'delete_on_termination': False, }] image_meta = self.compute_api._get_bdm_image_metadata( self.context, block_device_mapping) if metadata: self.assertEqual(image_meta['vol_test_key'], 'vol_test_value') else: self.assertEqual(image_meta, {}) # Test it with new-style BDMs block_device_mapping = [{ 'boot_index': 0, 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': self.volume_id, 'delete_on_termination': False, }] image_meta = self.compute_api._get_bdm_image_metadata( self.context, block_device_mapping, legacy_bdm=False) if metadata: self.assertEqual(image_meta['vol_test_key'], 'vol_test_value') else: self.assertEqual(image_meta, {}) def test_boot_volume_no_metadata(self): self.test_boot_volume_metadata(metadata=False) def test_boot_image_metadata(self, metadata=True): def image_api_show(*args, **kwargs): if metadata: return { 'properties': {'img_test_key': 'img_test_value'} } else: return {} self.stubs.Set(self.compute_api.image_service, 'show', image_api_show) block_device_mapping = [{ 'boot_index': 0, 'source_type': 'image', 'destination_type': 'local', 'image_id': "fake-image", 'delete_on_termination': True, }] image_meta = self.compute_api._get_bdm_image_metadata( self.context, block_device_mapping, legacy_bdm=False) if metadata: self.assertEqual(image_meta['img_test_key'], 'img_test_value') else: self.assertEqual(image_meta, {}) def test_boot_image_no_metadata(self): self.test_boot_image_metadata(metadata=False) def test_poll_bandwidth_usage_disabled(self): ctxt = 'MockContext' self.mox.StubOutWithMock(utils, 'last_completed_audit_period') # None of the mocks should be called. self.mox.ReplayAll() CONF.bandwidth_poll_interval = 0 self.compute._poll_bandwidth_usage(ctxt) self.mox.UnsetStubs() def test_poll_bandwidth_usage_not_implemented(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(self.compute.driver, 'get_all_bw_counters') self.mox.StubOutWithMock(utils, 'last_completed_audit_period') self.mox.StubOutWithMock(time, 'time') self.mox.StubOutWithMock(instance_obj.InstanceList, 'get_by_host') # Following methods will be called utils.last_completed_audit_period().AndReturn((0, 0)) time.time().AndReturn(10) # Note - time called two more times from Log time.time().AndReturn(20) time.time().AndReturn(21) instance_obj.InstanceList.get_by_host(ctxt, 'fake-mini', use_slave=True).AndReturn([]) self.compute.driver.get_all_bw_counters([]).AndRaise( NotImplementedError) self.mox.ReplayAll() CONF.bandwidth_poll_interval = 1 self.compute._poll_bandwidth_usage(ctxt) # A second call won't call the stubs again as the bandwidth # poll is now disabled self.compute._poll_bandwidth_usage(ctxt) self.mox.UnsetStubs() @mock.patch.object(instance_obj.InstanceList, 'get_by_host') @mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') def test_get_host_volume_bdms(self, mock_get_by_inst, mock_get_by_host): fake_instance = mock.Mock(uuid='fake-instance-uuid') mock_get_by_host.return_value = [fake_instance] volume_bdm = mock.Mock(id=1, is_volume=True) not_volume_bdm = mock.Mock(id=2, is_volume=False) mock_get_by_inst.return_value = [volume_bdm, not_volume_bdm] expected_host_bdms = [{'instance': fake_instance, 'instance_bdms': [volume_bdm]}] got_host_bdms = self.compute._get_host_volume_bdms('fake-context') mock_get_by_host.assert_called_once_with('fake-context', self.compute.host) mock_get_by_inst.assert_called_once_with('fake-context', 'fake-instance-uuid') self.assertEqual(expected_host_bdms, got_host_bdms) def test_poll_volume_usage_disabled(self): ctxt = 'MockContext' self.mox.StubOutWithMock(self.compute, '_get_host_volume_bdms') self.mox.StubOutWithMock(utils, 'last_completed_audit_period') # None of the mocks should be called. self.mox.ReplayAll() CONF.volume_usage_poll_interval = 0 self.compute._poll_volume_usage(ctxt) self.mox.UnsetStubs() def test_poll_volume_usage_returns_no_vols(self): ctxt = 'MockContext' self.mox.StubOutWithMock(self.compute, '_get_host_volume_bdms') self.mox.StubOutWithMock(utils, 'last_completed_audit_period') self.mox.StubOutWithMock(self.compute.driver, 'get_all_volume_usage') # Following methods are called. utils.last_completed_audit_period().AndReturn((0, 0)) self.compute._get_host_volume_bdms(ctxt).AndReturn([]) self.mox.ReplayAll() CONF.volume_usage_poll_interval = 10 self.compute._poll_volume_usage(ctxt) self.mox.UnsetStubs() def test_poll_volume_usage_with_data(self): ctxt = 'MockContext' self.mox.StubOutWithMock(utils, 'last_completed_audit_period') self.mox.StubOutWithMock(self.compute, '_get_host_volume_bdms') self.mox.StubOutWithMock(self.compute, '_update_volume_usage_cache') self.stubs.Set(self.compute.driver, 'get_all_volume_usage', lambda x, y: [3, 4]) # All the mocks are called utils.last_completed_audit_period().AndReturn((10, 20)) self.compute._get_host_volume_bdms(ctxt).AndReturn([1, 2]) self.compute._update_volume_usage_cache(ctxt, [3, 4]) self.mox.ReplayAll() CONF.volume_usage_poll_interval = 10 self.compute._poll_volume_usage(ctxt) self.mox.UnsetStubs() def test_detach_volume_usage(self): # Test that detach volume update the volume usage cache table correctly instance = self._create_fake_instance() bdm = fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'device_name': '/dev/vdb', 'connection_info': '{}', 'instance_uuid': instance['uuid'], 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 1}) host_volume_bdms = {'id': 1, 'device_name': '/dev/vdb', 'connection_info': '{}', 'instance_uuid': instance['uuid'], 'volume_id': 1} self.mox.StubOutWithMock(db, 'block_device_mapping_get_by_volume_id') self.mox.StubOutWithMock(self.compute.driver, 'block_stats') self.mox.StubOutWithMock(self.compute, '_get_host_volume_bdms') self.mox.StubOutWithMock(self.compute.driver, 'get_all_volume_usage') # The following methods will be called db.block_device_mapping_get_by_volume_id(self.context, 1, []).\ AndReturn(bdm) self.compute.driver.block_stats(instance['name'], 'vdb').\ AndReturn([1L, 30L, 1L, 20L, None]) self.compute._get_host_volume_bdms(self.context).AndReturn( host_volume_bdms) self.compute.driver.get_all_volume_usage( self.context, host_volume_bdms).AndReturn( [{'volume': 1, 'rd_req': 1, 'rd_bytes': 10, 'wr_req': 1, 'wr_bytes': 5, 'instance': instance}]) db.block_device_mapping_get_by_volume_id(self.context, 1, []).\ AndReturn(bdm) self.mox.ReplayAll() def fake_get_volume_encryption_metadata(self, context, volume_id): return {} self.stubs.Set(cinder.API, 'get_volume_encryption_metadata', fake_get_volume_encryption_metadata) self.compute.attach_volume(self.context, 1, '/dev/vdb', instance) # Poll volume usage & then detach the volume. This will update the # total fields in the volume usage cache. CONF.volume_usage_poll_interval = 10 self.compute._poll_volume_usage(self.context) # Check that a volume.usage and volume.attach notification was sent self.assertEqual(2, len(fake_notifier.NOTIFICATIONS)) self.compute.detach_volume(self.context, 1, instance) # Check that volume.attach, 2 volume.usage, and volume.detach # notifications were sent self.assertEqual(4, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual('compute.instance.volume.attach', msg.event_type) msg = fake_notifier.NOTIFICATIONS[2] self.assertEqual('volume.usage', msg.event_type) payload = msg.payload self.assertEqual(instance['uuid'], payload['instance_id']) self.assertEqual('fake', payload['user_id']) self.assertEqual('fake', payload['tenant_id']) self.assertEqual(1, payload['reads']) self.assertEqual(30, payload['read_bytes']) self.assertEqual(1, payload['writes']) self.assertEqual(20, payload['write_bytes']) self.assertIsNone(payload['availability_zone']) msg = fake_notifier.NOTIFICATIONS[3] self.assertEqual('compute.instance.volume.detach', msg.event_type) # Check the database for the volume_usages = db.vol_get_usage_by_time(self.context, 0) self.assertEqual(1, len(volume_usages)) volume_usage = volume_usages[0] self.assertEqual(0, volume_usage['curr_reads']) self.assertEqual(0, volume_usage['curr_read_bytes']) self.assertEqual(0, volume_usage['curr_writes']) self.assertEqual(0, volume_usage['curr_write_bytes']) self.assertEqual(1, volume_usage['tot_reads']) self.assertEqual(30, volume_usage['tot_read_bytes']) self.assertEqual(1, volume_usage['tot_writes']) self.assertEqual(20, volume_usage['tot_write_bytes']) def test_prepare_image_mapping(self): swap_size = 1 ephemeral_size = 1 instance_type = {'swap': swap_size, 'ephemeral_gb': ephemeral_size} instance = self._create_fake_instance() mappings = [ {'virtual': 'ami', 'device': 'sda1'}, {'virtual': 'root', 'device': '/dev/sda1'}, {'virtual': 'swap', 'device': 'sdb4'}, {'virtual': 'ephemeral0', 'device': 'sdc1'}, {'virtual': 'ephemeral1', 'device': 'sdc2'}, ] preped_bdm = self.compute_api._prepare_image_mapping( instance_type, instance['uuid'], mappings) expected_result = [ { 'device_name': '/dev/sdb4', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'guest_format': 'swap', 'boot_index': -1, 'volume_size': swap_size }, { 'device_name': '/dev/sdc1', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'guest_format': CONF.default_ephemeral_format, 'boot_index': -1, 'volume_size': ephemeral_size }, { 'device_name': '/dev/sdc2', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'guest_format': CONF.default_ephemeral_format, 'boot_index': -1, 'volume_size': ephemeral_size } ] for expected, got in zip(expected_result, preped_bdm): self.assertThat(expected, matchers.IsSubDictOf(got)) def test_validate_bdm(self): def fake_get(self, context, res_id): return {'id': res_id} def fake_check_attach(*args, **kwargs): pass self.stubs.Set(cinder.API, 'get', fake_get) self.stubs.Set(cinder.API, 'get_snapshot', fake_get) self.stubs.Set(cinder.API, 'check_attach', fake_check_attach) volume_id = '55555555-aaaa-bbbb-cccc-555555555555' snapshot_id = '66666666-aaaa-bbbb-cccc-555555555555' image_id = '77777777-aaaa-bbbb-cccc-555555555555' instance = self._create_fake_instance() instance_type = {'swap': 1, 'ephemeral_gb': 2} mappings = [ { 'device_name': '/dev/sdb4', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'guest_format': 'swap', 'boot_index': -1, 'volume_size': 1 }, { 'device_name': '/dev/sda1', 'source_type': 'volume', 'destination_type': 'volume', 'device_type': 'disk', 'volume_id': volume_id, 'guest_format': None, 'boot_index': 1, 'volume_size': 6 }, { 'device_name': '/dev/sda2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': snapshot_id, 'device_type': 'disk', 'guest_format': None, 'boot_index': 0, 'volume_size': 4 }, { 'device_name': '/dev/sda3', 'source_type': 'image', 'destination_type': 'local', 'device_type': 'disk', 'guest_format': None, 'boot_index': 2, 'volume_size': 1 } ] # Make sure it passes at first self.compute_api._validate_bdm(self.context, instance, instance_type, mappings) # Boot sequence mappings[2]['boot_index'] = 2 self.assertRaises(exception.InvalidBDMBootSequence, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings) mappings[2]['boot_index'] = 0 # number of local block_devices self.flags(max_local_block_devices=1) self.assertRaises(exception.InvalidBDMLocalsLimit, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings) ephemerals = [ { 'device_name': '/dev/vdb', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'volume_id': volume_id, 'guest_format': None, 'boot_index': -1, 'volume_size': 1 }, { 'device_name': '/dev/vdc', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'volume_id': volume_id, 'guest_format': None, 'boot_index': -1, 'volume_size': 1 }] self.flags(max_local_block_devices=4) # More ephemerals are OK as long as they are not over the size limit self.compute_api._validate_bdm(self.context, instance, instance_type, mappings + ephemerals) # Ephemerals over the size limit ephemerals[0]['volume_size'] = 3 self.assertRaises(exception.InvalidBDMEphemeralSize, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings + ephemerals) self.assertRaises(exception.InvalidBDMEphemeralSize, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings + [ephemerals[0]]) # Swap over the size limit mappings[0]['volume_size'] = 3 self.assertRaises(exception.InvalidBDMSwapSize, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings) mappings[0]['volume_size'] = 1 additional_swap = [ { 'device_name': '/dev/vdb', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'guest_format': 'swap', 'boot_index': -1, 'volume_size': 1 }] # More than one swap self.assertRaises(exception.InvalidBDMFormat, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings + additional_swap) image_no_size = [ { 'device_name': '/dev/sda4', 'source_type': 'image', 'image_id': image_id, 'destination_type': 'volume', 'boot_index': -1, 'volume_size': None, }] self.assertRaises(exception.InvalidBDM, self.compute_api._validate_bdm, self.context, instance, instance_type, mappings + image_no_size) def test_validate_bdm_media_service_exceptions(self): instance_type = {'swap': 1, 'ephemeral_gb': 1} all_mappings = [{'id': 1, 'no_device': None, 'source_type': 'volume', 'destination_type': 'volume', 'snapshot_id': None, 'volume_id': self.volume_id, 'device_name': 'vda', 'boot_index': 0, 'delete_on_termination': False}] # Check that the volume status is 'available' and reject if not def fake_volume_get_1(self, context, volume_id): return {'id': volume_id, 'status': 'creating', 'attach_status': 'detached'} self.stubs.Set(cinder.API, 'get', fake_volume_get_1) self.assertRaises(exception.InvalidBDMVolume, self.compute_api._validate_bdm, self.context, self.instance, instance_type, all_mappings) # Check that the volume attach_status is 'detached' and reject if not def fake_volume_get_2(self, context, volume_id): return {'id': volume_id, 'status': 'available', 'attach_status': 'attached'} self.stubs.Set(cinder.API, 'get', fake_volume_get_2) self.assertRaises(exception.InvalidBDMVolume, self.compute_api._validate_bdm, self.context, self.instance, instance_type, all_mappings) # Check that the volume status is 'available' and attach_status is # 'detached' and accept the request if so def fake_volume_get_3(self, context, volume_id): return {'id': volume_id, 'status': 'available', 'attach_status': 'detached'} self.stubs.Set(cinder.API, 'get', fake_volume_get_3) self.compute_api._validate_bdm(self.context, self.instance, instance_type, all_mappings) def test_volume_snapshot_create(self): self.assertRaises(messaging.ExpectedException, self.compute.volume_snapshot_create, self.context, self.instance_object, 'fake_id', {}) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(NotImplementedError, self.compute.volume_snapshot_create, self.context, self.instance_object, 'fake_id', {}) def test_volume_snapshot_delete(self): self.assertRaises(messaging.ExpectedException, self.compute.volume_snapshot_delete, self.context, self.instance_object, 'fake_id', 'fake_id2', {}) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(NotImplementedError, self.compute.volume_snapshot_delete, self.context, self.instance_object, 'fake_id', 'fake_id2', {}) class ComputeTestCase(BaseTestCase): def test_wrap_instance_fault(self): inst = {"uuid": "fake_uuid"} called = {'fault_added': False} def did_it_add_fault(*args): called['fault_added'] = True self.stubs.Set(compute_utils, 'add_instance_fault_from_exc', did_it_add_fault) @compute_manager.wrap_instance_fault def failer(self2, context, instance): raise NotImplementedError() self.assertRaises(NotImplementedError, failer, self.compute, self.context, instance=inst) self.assertTrue(called['fault_added']) def test_wrap_instance_fault_instance_in_args(self): inst = {"uuid": "fake_uuid"} called = {'fault_added': False} def did_it_add_fault(*args): called['fault_added'] = True self.stubs.Set(compute_utils, 'add_instance_fault_from_exc', did_it_add_fault) @compute_manager.wrap_instance_fault def failer(self2, context, instance): raise NotImplementedError() self.assertRaises(NotImplementedError, failer, self.compute, self.context, inst) self.assertTrue(called['fault_added']) def test_wrap_instance_fault_no_instance(self): inst = {"uuid": "fake_uuid"} called = {'fault_added': False} def did_it_add_fault(*args): called['fault_added'] = True self.stubs.Set(compute_utils, 'add_instance_fault_from_exc', did_it_add_fault) @compute_manager.wrap_instance_fault def failer(self2, context, instance): raise exception.InstanceNotFound(instance_id=instance['uuid']) self.assertRaises(exception.InstanceNotFound, failer, self.compute, self.context, inst) self.assertFalse(called['fault_added']) def test_wrap_instance_event(self): inst = {"uuid": "fake_uuid"} called = {'started': False, 'finished': False} def did_it_update_start(self2, context, values): called['started'] = True def did_it_update_finish(self2, context, values): called['finished'] = True self.stubs.Set(conductor_manager.ConductorManager, 'action_event_start', did_it_update_start) self.stubs.Set(conductor_manager.ConductorManager, 'action_event_finish', did_it_update_finish) @compute_manager.wrap_instance_event def fake_event(self, context, instance): pass fake_event(self.compute, self.context, instance=inst) self.assertTrue(called['started']) self.assertTrue(called['finished']) def test_wrap_instance_event_log_exception(self): inst = {"uuid": "fake_uuid"} called = {'started': False, 'finished': False, 'message': ''} def did_it_update_start(self2, context, values): called['started'] = True def did_it_update_finish(self2, context, values): called['finished'] = True called['message'] = values['message'] self.stubs.Set(conductor_manager.ConductorManager, 'action_event_start', did_it_update_start) self.stubs.Set(conductor_manager.ConductorManager, 'action_event_finish', did_it_update_finish) @compute_manager.wrap_instance_event def fake_event(self2, context, instance): raise exception.NovaException() self.assertRaises(exception.NovaException, fake_event, self.compute, self.context, instance=inst) self.assertTrue(called['started']) self.assertTrue(called['finished']) self.assertEqual('An unknown exception occurred.', called['message']) def test_object_compat(self): db_inst = fake_instance.fake_db_instance() @compute_manager.object_compat def test_fn(_self, context, instance): self.assertIsInstance(instance, instance_obj.Instance) self.assertEqual(instance.uuid, db_inst['uuid']) test_fn(None, self.context, instance=db_inst) def test_object_compat_more_positional_args(self): db_inst = fake_instance.fake_db_instance() @compute_manager.object_compat def test_fn(_self, context, instance, pos_arg_1, pos_arg_2): self.assertIsInstance(instance, instance_obj.Instance) self.assertEqual(instance.uuid, db_inst['uuid']) self.assertEqual(pos_arg_1, 'fake_pos_arg1') self.assertEqual(pos_arg_2, 'fake_pos_arg2') test_fn(None, self.context, db_inst, 'fake_pos_arg1', 'fake_pos_arg2') def test_create_instance_with_img_ref_associates_config_drive(self): # Make sure create associates a config drive. instance = jsonutils.to_primitive(self._create_fake_instance( params={'config_drive': '1234', })) try: self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) instance = instances[0] self.assertTrue(instance['config_drive']) finally: db.instance_destroy(self.context, instance['uuid']) def test_create_instance_associates_config_drive(self): # Make sure create associates a config drive. instance = jsonutils.to_primitive(self._create_fake_instance( params={'config_drive': '1234', })) try: self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) instance = instances[0] self.assertTrue(instance['config_drive']) finally: db.instance_destroy(self.context, instance['uuid']) def test_create_instance_unlimited_memory(self): # Default of memory limit=None is unlimited. self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) params = {"memory_mb": 999999999999} filter_properties = {'limits': {'memory_mb': None}} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(999999999999, self.rt.compute_node['memory_mb_used']) def test_create_instance_unlimited_disk(self): self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) params = {"root_gb": 999999999999, "ephemeral_gb": 99999999999} filter_properties = {'limits': {'disk_gb': None}} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) def test_create_multiple_instances_then_starve(self): self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) filter_properties = {'limits': {'memory_mb': 4096, 'disk_gb': 1000}} params = {"memory_mb": 1024, "root_gb": 128, "ephemeral_gb": 128} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(1024, self.rt.compute_node['memory_mb_used']) self.assertEqual(256, self.rt.compute_node['local_gb_used']) params = {"memory_mb": 2048, "root_gb": 256, "ephemeral_gb": 256} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(3072, self.rt.compute_node['memory_mb_used']) self.assertEqual(768, self.rt.compute_node['local_gb_used']) params = {"memory_mb": 8192, "root_gb": 8192, "ephemeral_gb": 8192} instance = self._create_fake_instance_obj(params) self.assertRaises(exception.ComputeResourcesUnavailable, self.compute.run_instance, self.context, instance, {}, filter_properties, [], None, None, True, None, False) def test_create_multiple_instance_with_neutron_port(self): instance_type = flavors.get_default_flavor() def fake_is_neutron(): return True self.stubs.Set(utils, 'is_neutron', fake_is_neutron) self.assertRaises(exception.MultiplePortsNotApplicable, self.compute_api.create, self.context, instance_type=instance_type, image_href=None, max_count=2, requested_networks=[(None, None, 'adadds')]) def test_create_instance_with_oversubscribed_ram(self): # Test passing of oversubscribed ram policy from the scheduler. self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) # get total memory as reported by virt driver: resources = self.compute.driver.get_available_resource(NODENAME) total_mem_mb = resources['memory_mb'] oversub_limit_mb = total_mem_mb * 1.5 instance_mb = int(total_mem_mb * 1.45) # build an instance, specifying an amount of memory that exceeds # total_mem_mb, but is less than the oversubscribed limit: params = {"memory_mb": instance_mb, "root_gb": 128, "ephemeral_gb": 128} instance = self._create_fake_instance_obj(params) limits = {'memory_mb': oversub_limit_mb} filter_properties = {'limits': limits} self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(instance_mb, self.rt.compute_node['memory_mb_used']) def test_create_instance_with_oversubscribed_ram_fail(self): """Test passing of oversubscribed ram policy from the scheduler, but with insufficient memory. """ self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) # get total memory as reported by virt driver: resources = self.compute.driver.get_available_resource(NODENAME) total_mem_mb = resources['memory_mb'] oversub_limit_mb = total_mem_mb * 1.5 instance_mb = int(total_mem_mb * 1.55) # build an instance, specifying an amount of memory that exceeds # total_mem_mb, but is less than the oversubscribed limit: params = {"memory_mb": instance_mb, "root_gb": 128, "ephemeral_gb": 128} instance = self._create_fake_instance(params) filter_properties = {'limits': {'memory_mb': oversub_limit_mb}} self.assertRaises(exception.ComputeResourcesUnavailable, self.compute.run_instance, self.context, instance, {}, filter_properties, [], None, None, True, None, False) def test_create_instance_with_oversubscribed_cpu(self): # Test passing of oversubscribed cpu policy from the scheduler. self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) limits = {'vcpu': 3} filter_properties = {'limits': limits} # get total memory as reported by virt driver: resources = self.compute.driver.get_available_resource(NODENAME) self.assertEqual(1, resources['vcpus']) # build an instance, specifying an amount of memory that exceeds # total_mem_mb, but is less than the oversubscribed limit: params = {"memory_mb": 10, "root_gb": 1, "ephemeral_gb": 1, "vcpus": 2} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(2, self.rt.compute_node['vcpus_used']) # create one more instance: params = {"memory_mb": 10, "root_gb": 1, "ephemeral_gb": 1, "vcpus": 1} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(3, self.rt.compute_node['vcpus_used']) # delete the instance: instance['vm_state'] = vm_states.DELETED self.rt.update_usage(self.context, instance=instance) self.assertEqual(2, self.rt.compute_node['vcpus_used']) # now oversubscribe vcpus and fail: params = {"memory_mb": 10, "root_gb": 1, "ephemeral_gb": 1, "vcpus": 2} instance = self._create_fake_instance_obj(params) limits = {'vcpu': 3} filter_properties = {'limits': limits} self.assertRaises(exception.ComputeResourcesUnavailable, self.compute.run_instance, self.context, instance, {}, filter_properties, [], None, None, True, None, False) def test_create_instance_with_oversubscribed_disk(self): # Test passing of oversubscribed disk policy from the scheduler. self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) # get total memory as reported by virt driver: resources = self.compute.driver.get_available_resource(NODENAME) total_disk_gb = resources['local_gb'] oversub_limit_gb = total_disk_gb * 1.5 instance_gb = int(total_disk_gb * 1.45) # build an instance, specifying an amount of disk that exceeds # total_disk_gb, but is less than the oversubscribed limit: params = {"root_gb": instance_gb, "memory_mb": 10} instance = self._create_fake_instance_obj(params) limits = {'disk_gb': oversub_limit_gb} filter_properties = {'limits': limits} self.compute.run_instance(self.context, instance, {}, filter_properties, [], None, None, True, None, False) self.assertEqual(instance_gb, self.rt.compute_node['local_gb_used']) def test_create_instance_with_oversubscribed_disk_fail(self): """Test passing of oversubscribed disk policy from the scheduler, but with insufficient disk. """ self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.rt.update_available_resource(self.context.elevated()) # get total memory as reported by virt driver: resources = self.compute.driver.get_available_resource(NODENAME) total_disk_gb = resources['local_gb'] oversub_limit_gb = total_disk_gb * 1.5 instance_gb = int(total_disk_gb * 1.55) # build an instance, specifying an amount of disk that exceeds # total_disk_gb, but is less than the oversubscribed limit: params = {"root_gb": instance_gb, "memory_mb": 10} instance = self._create_fake_instance(params) limits = {'disk_gb': oversub_limit_gb} filter_properties = {'limits': limits} self.assertRaises(exception.ComputeResourcesUnavailable, self.compute.run_instance, self.context, instance, {}, filter_properties, [], None, None, True, None, False) def test_create_instance_without_node_param(self): instance = self._create_fake_instance_obj({'node': None}) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) instance = instances[0] self.assertEqual(NODENAME, instance['node']) def test_create_instance_no_image(self): # Create instance with no image provided. params = {'image_ref': ''} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self._assert_state({'vm_state': vm_states.ACTIVE, 'task_state': None}) def test_default_access_ip(self): self.flags(default_access_ip_network_name='test1') fake_network.unset_stub_network_methods(self.stubs) instance = jsonutils.to_primitive(self._create_fake_instance()) orig_update = self.compute._instance_update # Make sure the access_ip_* updates happen in the same DB # update as the set to ACTIVE. def _instance_update(ctxt, instance_uuid, **kwargs): if kwargs.get('vm_state', None) == vm_states.ACTIVE: self.assertEqual(kwargs['access_ip_v4'], '192.168.1.100') self.assertEqual(kwargs['access_ip_v6'], '2001:db8:0:1::1') return orig_update(ctxt, instance_uuid, **kwargs) self.stubs.Set(self.compute, '_instance_update', _instance_update) try: self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) instance = instances[0] self.assertEqual(instance['access_ip_v4'], '192.168.1.100') self.assertEqual(instance['access_ip_v6'], '2001:db8:0:1::1') finally: db.instance_destroy(self.context, instance['uuid']) def test_no_default_access_ip(self): instance = jsonutils.to_primitive(self._create_fake_instance()) try: self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) instance = instances[0] self.assertFalse(instance['access_ip_v4']) self.assertFalse(instance['access_ip_v6']) finally: db.instance_destroy(self.context, instance['uuid']) def test_fail_to_schedule_persists(self): # check the persistence of the ERROR(scheduling) state. params = {'vm_state': vm_states.ERROR, 'task_state': task_states.SCHEDULING} self._create_fake_instance(params=params) #check state is failed even after the periodic poll self.compute.periodic_tasks(context.get_admin_context()) self._assert_state({'vm_state': vm_states.ERROR, 'task_state': task_states.SCHEDULING}) def test_run_instance_setup_block_device_mapping_fail(self): """block device mapping failure test. Make sure that when there is a block device mapping problem, the instance goes to ERROR state, keeping the task state """ def fake(*args, **kwargs): raise exception.InvalidBDM() self.stubs.Set(nova.compute.manager.ComputeManager, '_prep_block_device', fake) instance = self._create_fake_instance() self.assertRaises(exception.InvalidBDM, self.compute.run_instance, self.context, instance=instance, request_spec={}, filter_properties={}, requested_networks=[], injected_files=None, admin_password=None, is_first_time=True, node=None, legacy_bdm_in_spec=False) #check state is failed even after the periodic poll self._assert_state({'vm_state': vm_states.ERROR, 'task_state': None}) self.compute.periodic_tasks(context.get_admin_context()) self._assert_state({'vm_state': vm_states.ERROR, 'task_state': None}) def test_run_instance_spawn_fail(self): """spawn failure test. Make sure that when there is a spawning problem, the instance goes to ERROR state, keeping the task state. """ def fake(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.compute.driver, 'spawn', fake) instance = self._create_fake_instance_obj() self.assertRaises(test.TestingException, self.compute.run_instance, self.context, instance=instance, request_spec={}, filter_properties={}, requested_networks=[], injected_files=None, admin_password=None, is_first_time=True, node=None, legacy_bdm_in_spec=False) #check state is failed even after the periodic poll self._assert_state({'vm_state': vm_states.ERROR, 'task_state': None}) self.compute.periodic_tasks(context.get_admin_context()) self._assert_state({'vm_state': vm_states.ERROR, 'task_state': None}) def test_run_instance_dealloc_network_instance_not_found(self): """spawn network deallocate test. Make sure that when an instance is not found during spawn that the network is deallocated """ instance = self._create_fake_instance_obj() def fake(*args, **kwargs): raise exception.InstanceNotFound(instance_id="fake") self.stubs.Set(self.compute.driver, 'spawn', fake) self.mox.StubOutWithMock(self.compute, '_deallocate_network') self.compute._deallocate_network(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) def test_run_instance_bails_on_missing_instance(self): # Make sure that run_instance() will quickly ignore a deleted instance called = {} instance = self._create_fake_instance() def fake_instance_update(self, *a, **args): called['instance_update'] = True raise exception.InstanceNotFound(instance_id='foo') self.stubs.Set(self.compute, '_instance_update', fake_instance_update) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertIn('instance_update', called) def test_run_instance_bails_on_deleting_instance(self): # Make sure that run_instance() will quickly ignore a deleting instance called = {} instance = self._create_fake_instance() def fake_instance_update(self, *a, **args): called['instance_update'] = True raise exception.UnexpectedDeletingTaskStateError( expected='scheduling', actual='deleting') self.stubs.Set(self.compute, '_instance_update', fake_instance_update) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertIn('instance_update', called) def test_run_instance_bails_on_missing_instance_2(self): # Make sure that run_instance() will quickly ignore a deleted instance called = {} instance = self._create_fake_instance() def fake_default_block_device_names(self, *a, **args): called['default_block_device_names'] = True raise exception.InstanceNotFound(instance_id='foo') self.stubs.Set(self.compute, '_default_block_device_names', fake_default_block_device_names) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertIn('default_block_device_names', called) def test_can_terminate_on_error_state(self): # Make sure that the instance can be terminated in ERROR state. #check failed to schedule --> terminate params = {'vm_state': vm_states.ERROR} instance = self._create_fake_instance_obj(params=params) self.compute.terminate_instance(self.context, instance, [], []) self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, self.context, instance['uuid']) # Double check it's not there for admins, either. self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, self.context.elevated(), instance['uuid']) def test_run_terminate(self): # Make sure it is possible to run and terminate instance. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) LOG.info(_("Running instances: %s"), instances) self.assertEqual(len(instances), 1) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) instances = db.instance_get_all(self.context) LOG.info(_("After terminating instances: %s"), instances) self.assertEqual(len(instances), 0) admin_deleted_context = context.get_admin_context( read_deleted="only") instance = db.instance_get_by_uuid(admin_deleted_context, instance['uuid']) self.assertEqual(instance['vm_state'], vm_states.DELETED) self.assertIsNone(instance['task_state']) def test_run_terminate_with_vol_attached(self): """Make sure it is possible to run and terminate instance with volume attached """ instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) LOG.info(_("Running instances: %s"), instances) self.assertEqual(len(instances), 1) def fake_check_attach(*args, **kwargs): pass def fake_reserve_volume(*args, **kwargs): pass def fake_volume_get(self, context, volume_id): return {'id': volume_id} def fake_terminate_connection(self, context, volume_id, connector): pass def fake_detach(self, context, volume_id): pass bdms = [] def fake_rpc_reserve_block_device_name(self, context, **kwargs): bdm = block_device_obj.BlockDeviceMapping( **{'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 1, 'instance_uuid': instance['uuid'], 'device_name': '/dev/vdc'}) bdm.create(context) bdms.append(bdm) self.stubs.Set(cinder.API, 'get', fake_volume_get) self.stubs.Set(cinder.API, 'check_attach', fake_check_attach) self.stubs.Set(cinder.API, 'reserve_volume', fake_reserve_volume) self.stubs.Set(cinder.API, 'terminate_connection', fake_terminate_connection) self.stubs.Set(cinder.API, 'detach', fake_detach) self.stubs.Set(compute_rpcapi.ComputeAPI, 'reserve_block_device_name', fake_rpc_reserve_block_device_name) self.compute_api.attach_volume(self.context, instance, 1, '/dev/vdc') self.compute.terminate_instance(self.context, self._objectify(instance), bdms, []) instances = db.instance_get_all(self.context) LOG.info(_("After terminating instances: %s"), instances) self.assertEqual(len(instances), 0) bdms = db.block_device_mapping_get_all_by_instance(self.context, instance['uuid']) self.assertEqual(len(bdms), 0) def test_run_terminate_no_image(self): """Make sure instance started without image (from volume) can be termintad without issues """ params = {'image_ref': ''} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self._assert_state({'vm_state': vm_states.ACTIVE, 'task_state': None}) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) instances = db.instance_get_all(self.context) self.assertEqual(len(instances), 0) def test_terminate_no_network(self): # This is as reported in LP bug 1008875 instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) LOG.info(_("Running instances: %s"), instances) self.assertEqual(len(instances), 1) # Make it look like this is no instance self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.compute._get_instance_nw_info( mox.IgnoreArg(), mox.IgnoreArg()).AndRaise( exception.NetworkNotFound(network_id='fake') ) self.mox.ReplayAll() self.compute.terminate_instance(self.context, self._objectify(instance), [], []) instances = db.instance_get_all(self.context) LOG.info(_("After terminating instances: %s"), instances) self.assertEqual(len(instances), 0) def test_terminate_no_fixed_ips(self): # This is as reported in LP bug 1192893 instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) LOG.info(_("Running instances: %s"), instances) self.assertEqual(len(instances), 1) self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.compute._get_instance_nw_info( mox.IgnoreArg(), mox.IgnoreArg()).AndRaise( exception.NoMoreFixedIps() ) self.mox.ReplayAll() self.compute.terminate_instance(self.context, self._objectify(instance), [], []) instances = db.instance_get_all(self.context) LOG.info(_("After terminating instances: %s"), instances) self.assertEqual(len(instances), 0) def test_run_terminate_timestamps(self): # Make sure timestamps are set for launched and destroyed. instance = jsonutils.to_primitive(self._create_fake_instance()) instance['launched_at'] = None self.assertIsNone(instance['launched_at']) self.assertIsNone(instance['deleted_at']) launch = timeutils.utcnow() self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertTrue(instance['launched_at'] > launch) self.assertIsNone(instance['deleted_at']) terminate = timeutils.utcnow() self.compute.terminate_instance(self.context, self._objectify(instance), [], []) with utils.temporary_mutation(self.context, read_deleted='only'): instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertTrue(instance['launched_at'] < terminate) self.assertTrue(instance['deleted_at'] > terminate) def test_run_terminate_deallocate_net_failure_sets_error_state(self): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instances = db.instance_get_all(self.context) LOG.info(_("Running instances: %s"), instances) self.assertEqual(len(instances), 1) def _fake_deallocate_network(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.compute, '_deallocate_network', _fake_deallocate_network) try: self.compute.terminate_instance(self.context, self._objectify(instance), [], []) except test.TestingException: pass instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(instance['vm_state'], vm_states.ERROR) def test_stop(self): # Ensure instance can be stopped. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.POWERING_OFF}) inst_uuid = instance['uuid'] extra = ['system_metadata', 'metadata'] inst_obj = instance_obj.Instance.get_by_uuid(self.context, inst_uuid, expected_attrs=extra) self.compute.stop_instance(self.context, instance=inst_obj) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_start(self): # Ensure instance can be started. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.POWERING_OFF}) extra = ['system_metadata', 'metadata'] inst_uuid = instance['uuid'] inst_obj = instance_obj.Instance.get_by_uuid(self.context, inst_uuid, expected_attrs=extra) self.compute.stop_instance(self.context, instance=inst_obj) inst_obj.task_state = task_states.POWERING_ON inst_obj.save(self.context) self.compute.start_instance(self.context, instance=inst_obj) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_stop_start_no_image(self): params = {'image_ref': ''} instance = self._create_fake_instance_obj(params) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.POWERING_OFF}) extra = ['system_metadata', 'metadata'] inst_uuid = instance['uuid'] inst_obj = instance_obj.Instance.get_by_uuid(self.context, inst_uuid, expected_attrs=extra) self.compute.stop_instance(self.context, instance=inst_obj) inst_obj.task_state = task_states.POWERING_ON inst_obj.save(self.context) self.compute.start_instance(self.context, instance=inst_obj) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rescue(self): # Ensure instance can be rescued and unrescued. called = {'rescued': False, 'unrescued': False} def fake_rescue(self, context, instance_ref, network_info, image_meta, rescue_password): called['rescued'] = True self.stubs.Set(nova.virt.fake.FakeDriver, 'rescue', fake_rescue) def fake_unrescue(self, instance_ref, network_info): called['unrescued'] = True self.stubs.Set(nova.virt.fake.FakeDriver, 'unrescue', fake_unrescue) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance_uuid, {"task_state": task_states.RESCUING}) self.compute.rescue_instance(self.context, self._objectify(instance), None) self.assertTrue(called['rescued']) db.instance_update(self.context, instance_uuid, {"task_state": task_states.UNRESCUING}) self.compute.unrescue_instance(self.context, instance=self._objectify(instance)) self.assertTrue(called['unrescued']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rescue_notifications(self): # Ensure notifications on instance rescue. def fake_rescue(self, context, instance_ref, network_info, image_meta, rescue_password): pass self.stubs.Set(nova.virt.fake.FakeDriver, 'rescue', fake_rescue) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) fake_notifier.NOTIFICATIONS = [] db.instance_update(self.context, instance_uuid, {"task_state": task_states.RESCUING}) self.compute.rescue_instance(self.context, self._objectify(instance), None) expected_notifications = ['compute.instance.rescue.start', 'compute.instance.exists', 'compute.instance.rescue.end'] self.assertEqual([m.event_type for m in fake_notifier.NOTIFICATIONS], expected_notifications) for n, msg in enumerate(fake_notifier.NOTIFICATIONS): self.assertEqual(msg.event_type, expected_notifications[n]) self.assertEqual(msg.priority, 'INFO') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance_uuid) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) image_ref_url = glance.generate_image_url(FAKE_IMAGE_REF) self.assertEqual(payload['image_ref_url'], image_ref_url) msg = fake_notifier.NOTIFICATIONS[0] self.assertIn('rescue_image_name', msg.payload) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_unrescue_notifications(self): # Ensure notifications on instance rescue. def fake_unrescue(self, instance_ref, network_info): pass self.stubs.Set(nova.virt.fake.FakeDriver, 'unrescue', fake_unrescue) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) fake_notifier.NOTIFICATIONS = [] db.instance_update(self.context, instance_uuid, {"task_state": task_states.UNRESCUING}) self.compute.unrescue_instance(self.context, instance=self._objectify(instance)) expected_notifications = ['compute.instance.unrescue.start', 'compute.instance.unrescue.end'] self.assertEqual([m.event_type for m in fake_notifier.NOTIFICATIONS], expected_notifications) for n, msg in enumerate(fake_notifier.NOTIFICATIONS): self.assertEqual(msg.event_type, expected_notifications[n]) self.assertEqual(msg.priority, 'INFO') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance_uuid) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) image_ref_url = glance.generate_image_url(FAKE_IMAGE_REF) self.assertEqual(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rescue_handle_err(self): # If the driver fails to rescue, instance state should remain the same # and the exception should be converted to InstanceNotRescuable instance = jsonutils.to_primitive(self._create_fake_instance()) inst_obj = self._objectify(instance) self.mox.StubOutWithMock(self.compute, '_get_rescue_image') self.mox.StubOutWithMock(nova.virt.fake.FakeDriver, 'rescue') self.compute._get_rescue_image( mox.IgnoreArg(), inst_obj).AndReturn({}) nova.virt.fake.FakeDriver.rescue( mox.IgnoreArg(), inst_obj, [], mox.IgnoreArg(), 'password' ).AndRaise(RuntimeError("Try again later")) self.mox.ReplayAll() expected_message = ('Instance %s cannot be rescued: ' 'Driver Error: Try again later' % inst_obj['uuid']) inst_obj['vm_state'] = 'some_random_state' with testtools.ExpectedException( exception.InstanceNotRescuable, expected_message): self.compute.rescue_instance( self.context, instance=inst_obj, rescue_password='password') self.assertEqual('some_random_state', inst_obj['vm_state']) def test_power_on(self): # Ensure instance can be powered on. called = {'power_on': False} def fake_driver_power_on(self, context, instance, network_info, block_device_info): called['power_on'] = True self.stubs.Set(nova.virt.fake.FakeDriver, 'power_on', fake_driver_power_on) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) extra = ['system_metadata', 'metadata'] inst_obj = instance_obj.Instance.get_by_uuid(self.context, instance['uuid'], expected_attrs=extra) inst_obj.task_state = task_states.POWERING_ON inst_obj.save(self.context) self.compute.start_instance(self.context, instance=inst_obj) self.assertTrue(called['power_on']) self.compute.terminate_instance(self.context, self._objectify(inst_obj), [], []) def test_power_off(self): # Ensure instance can be powered off. called = {'power_off': False} def fake_driver_power_off(self, instance): called['power_off'] = True self.stubs.Set(nova.virt.fake.FakeDriver, 'power_off', fake_driver_power_off) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) extra = ['system_metadata', 'metadata'] inst_obj = instance_obj.Instance.get_by_uuid(self.context, instance['uuid'], expected_attrs=extra) inst_obj.task_state = task_states.POWERING_OFF inst_obj.save(self.context) self.compute.stop_instance(self.context, instance=inst_obj) self.assertTrue(called['power_off']) self.compute.terminate_instance(self.context, self._objectify(inst_obj), [], []) def test_pause(self): # Ensure instance can be paused and unpaused. instance = self._create_fake_instance() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) instance = self._objectify(instance) instance.task_state = task_states.PAUSING instance.save() fake_notifier.NOTIFICATIONS = [] self.compute.pause_instance(self.context, instance=instance) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.pause.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.pause.end') instance.task_state = task_states.UNPAUSING instance.save() fake_notifier.NOTIFICATIONS = [] self.compute.unpause_instance(self.context, instance=instance) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.unpause.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.unpause.end') self.compute.terminate_instance(self.context, instance, [], []) def test_suspend(self): # ensure instance can be suspended and resumed. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instance = self._objectify(instance) instance.task_state = task_states.SUSPENDING instance.save() self.compute.suspend_instance(self.context, instance) instance.task_state = task_states.RESUMING instance.save() self.compute.resume_instance(self.context, instance) self.compute.terminate_instance(self.context, instance, [], []) def test_suspend_error(self): # Ensure vm_state is ERROR when suspend error occurs. def fake(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.compute.driver, 'suspend', fake) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertRaises(test.TestingException, self.compute.suspend_instance, self.context, instance=instance) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['vm_state'], vm_states.ERROR) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_suspend_not_implemented(self): # Ensure expected exception is raised and the vm_state of instance # restore to original value if suspend is not implemented by driver def fake(*args, **kwargs): raise NotImplementedError('suspend test') self.stubs.Set(self.compute.driver, 'suspend', fake) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_state = instance['vm_state'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertRaises(NotImplementedError, self.compute.suspend_instance, self.context, instance=instance) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(instance_state, instance['vm_state']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rebuild(self): # Ensure instance can be rebuilt. instance = jsonutils.to_primitive(self._create_fake_instance()) image_ref = instance['image_ref'] sys_metadata = db.instance_system_metadata_get(self.context, instance['uuid']) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.REBUILDING}) self.compute.rebuild_instance(self.context, self._objectify(instance), image_ref, image_ref, injected_files=[], new_pass="new_password", orig_sys_metadata=sys_metadata, bdms=[], recreate=False, on_shared_storage=False) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rebuild_driver(self): # Make sure virt drivers can override default rebuild called = {'rebuild': False} def fake(**kwargs): instance = kwargs['instance'] instance.task_state = task_states.REBUILD_BLOCK_DEVICE_MAPPING instance.save(expected_task_state=[task_states.REBUILDING]) instance.task_state = task_states.REBUILD_SPAWNING instance.save( expected_task_state=[task_states.REBUILD_BLOCK_DEVICE_MAPPING]) called['rebuild'] = True self.stubs.Set(self.compute.driver, 'rebuild', fake) instance = jsonutils.to_primitive(self._create_fake_instance()) image_ref = instance['image_ref'] sys_metadata = db.instance_system_metadata_get(self.context, instance['uuid']) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.REBUILDING}) self.compute.rebuild_instance(self.context, self._objectify(instance), image_ref, image_ref, injected_files=[], new_pass="new_password", orig_sys_metadata=sys_metadata, bdms=[], recreate=False, on_shared_storage=False) self.assertTrue(called['rebuild']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rebuild_no_image(self): # Ensure instance can be rebuilt when started with no image. params = {'image_ref': ''} instance = self._create_fake_instance_obj(params) sys_metadata = db.instance_system_metadata_get(self.context, instance['uuid']) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.REBUILDING}) self.compute.rebuild_instance(self.context, self._objectify(instance), '', '', injected_files=[], new_pass="new_password", orig_sys_metadata=sys_metadata, bdms=[], recreate=False, on_shared_storage=False) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rebuild_launched_at_time(self): # Ensure instance can be rebuilt. old_time = datetime.datetime(2012, 4, 1) cur_time = datetime.datetime(2012, 12, 21, 12, 21) timeutils.set_time_override(old_time) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] image_ref = instance['image_ref'] self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) timeutils.set_time_override(cur_time) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.REBUILDING}) self.compute.rebuild_instance(self.context, self._objectify(instance), image_ref, image_ref, injected_files=[], new_pass="new_password", orig_sys_metadata={}, bdms=[], recreate=False, on_shared_storage=False) instance = db.instance_get_by_uuid(self.context, instance_uuid,) self.assertEqual(cur_time, instance['launched_at']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_rebuild_with_injected_files(self): # Ensure instance can be rebuilt with injected files. injected_files = [ ('/a/b/c', base64.b64encode('foobarbaz')), ] self.decoded_files = [ ('/a/b/c', 'foobarbaz'), ] def _spawn(context, instance, image_meta, injected_files, admin_password, network_info, block_device_info): self.assertEqual(self.decoded_files, injected_files) self.stubs.Set(self.compute.driver, 'spawn', _spawn) instance = jsonutils.to_primitive(self._create_fake_instance()) image_ref = instance['image_ref'] sys_metadata = db.instance_system_metadata_get(self.context, instance['uuid']) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.REBUILDING}) self.compute.rebuild_instance(self.context, self._objectify(instance), image_ref, image_ref, injected_files=injected_files, new_pass="new_password", orig_sys_metadata=sys_metadata, bdms=[], recreate=False, on_shared_storage=False) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _test_reboot(self, soft, test_delete=False, test_unrescue=False, fail_reboot=False, fail_running=False): reboot_type = soft and 'SOFT' or 'HARD' task_pending = (soft and task_states.REBOOT_PENDING or task_states.REBOOT_PENDING_HARD) task_started = (soft and task_states.REBOOT_STARTED or task_states.REBOOT_STARTED_HARD) expected_task = (soft and task_states.REBOOTING or task_states.REBOOTING_HARD) expected_tasks = (soft and (task_states.REBOOTING, task_states.REBOOT_PENDING, task_states.REBOOT_STARTED) or (task_states.REBOOTING_HARD, task_states.REBOOT_PENDING_HARD, task_states.REBOOT_STARTED_HARD)) # This is a true unit test, so we don't need the network stubs. fake_network.unset_stub_network_methods(self.stubs) self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(self.compute.driver, 'reboot') # FIXME(comstud): I don't feel like the context needs to # be elevated at all. Hopefully remove elevated from # reboot_instance and remove the stub here in a future patch. # econtext would just become self.context below then. econtext = self.context.elevated() db_instance = fake_instance.fake_db_instance( **dict(uuid='fake-instance', power_state=power_state.NOSTATE, vm_state=vm_states.ACTIVE, task_state=expected_task, launched_at=timeutils.utcnow())) instance = instance_obj.Instance._from_db_object( econtext, instance_obj.Instance(), db_instance) updated_dbinstance1 = fake_instance.fake_db_instance( **dict(uuid='updated-instance1', power_state=10003, vm_state=vm_states.ACTIVE, task_state=expected_task, launched_at=timeutils.utcnow())) updated_dbinstance2 = fake_instance.fake_db_instance( **dict(uuid='updated-instance2', power_state=10003, vm_state=vm_states.ACTIVE, task_state=expected_task, launched_at=timeutils.utcnow())) if test_unrescue: instance['vm_state'] = vm_states.RESCUED instance.obj_reset_changes() fake_nw_model = network_model.NetworkInfo() fake_block_dev_info = 'fake_block_dev_info' fake_power_state1 = 10001 fake_power_state2 = power_state.RUNNING fake_power_state3 = 10002 # Beginning of calls we expect. self.mox.StubOutWithMock(self.context, 'elevated') self.context.elevated().AndReturn(econtext) self.compute._get_instance_volume_block_device_info( econtext, instance).AndReturn(fake_block_dev_info) self.compute._get_instance_nw_info(econtext, instance).AndReturn( fake_nw_model) self.compute._notify_about_instance_usage(econtext, instance, 'reboot.start') self.compute._get_power_state(econtext, instance).AndReturn(fake_power_state1) db.instance_update_and_get_original(econtext, instance['uuid'], {'task_state': task_pending, 'expected_task_state': expected_tasks, 'power_state': fake_power_state1}, update_cells=False, columns_to_join=['system_metadata'] ).AndReturn((None, updated_dbinstance1)) expected_nw_info = fake_nw_model db.instance_update_and_get_original(econtext, updated_dbinstance1['uuid'], {'task_state': task_started, 'expected_task_state': task_pending}, update_cells=False, columns_to_join=['system_metadata'] ).AndReturn((None, updated_dbinstance1)) # Annoying. driver.reboot is wrapped in a try/except, and # doesn't re-raise. It eats exception generated by mox if # this is called with the wrong args, so we have to hack # around it. reboot_call_info = {} expected_call_info = { 'args': (econtext, instance, expected_nw_info, reboot_type), 'kwargs': {'block_device_info': fake_block_dev_info}} fault = exception.InstanceNotFound(instance_id='instance-0000') def fake_reboot(*args, **kwargs): reboot_call_info['args'] = args reboot_call_info['kwargs'] = kwargs # NOTE(sirp): Since `bad_volumes_callback` is a function defined # within `reboot_instance`, we don't have access to its value and # can't stub it out, thus we skip that comparison. kwargs.pop('bad_volumes_callback') if fail_reboot: raise fault self.stubs.Set(self.compute.driver, 'reboot', fake_reboot) # Power state should be updated again if not fail_reboot or fail_running: new_power_state = fake_power_state2 self.compute._get_power_state(econtext, instance).AndReturn(fake_power_state2) else: new_power_state = fake_power_state3 self.compute._get_power_state(econtext, instance).AndReturn(fake_power_state3) if test_delete: fault = exception.InstanceNotFound( instance_id=instance['uuid']) db.instance_update_and_get_original( econtext, updated_dbinstance1['uuid'], {'power_state': new_power_state, 'task_state': None, 'vm_state': vm_states.ACTIVE}, update_cells=False, columns_to_join=['system_metadata'], ).AndRaise(fault) self.compute._notify_about_instance_usage( econtext, instance, 'reboot.end') elif fail_reboot and not fail_running: db.instance_update_and_get_original( econtext, updated_dbinstance1['uuid'], {'vm_state': vm_states.ERROR}, update_cells=False, columns_to_join=['system_metadata'], ).AndRaise(fault) else: db.instance_update_and_get_original( econtext, updated_dbinstance1['uuid'], {'power_state': new_power_state, 'task_state': None, 'vm_state': vm_states.ACTIVE}, update_cells=False, columns_to_join=['system_metadata'], ).AndReturn((None, updated_dbinstance2)) if fail_running: self.compute._notify_about_instance_usage(econtext, instance, 'reboot.error', fault=fault) self.compute._notify_about_instance_usage( econtext, instance, 'reboot.end') self.mox.ReplayAll() if not fail_reboot or fail_running: self.compute.reboot_instance(self.context, instance=instance, block_device_info=None, reboot_type=reboot_type) else: self.assertRaises(exception.InstanceNotFound, self.compute.reboot_instance, self.context, instance=instance, block_device_info=None, reboot_type=reboot_type) self.assertEqual(expected_call_info, reboot_call_info) def test_reboot_soft(self): self._test_reboot(True) def test_reboot_soft_and_delete(self): self._test_reboot(True, True) def test_reboot_soft_and_rescued(self): self._test_reboot(True, False, True) def test_reboot_soft_and_delete_and_rescued(self): self._test_reboot(True, True, True) def test_reboot_hard(self): self._test_reboot(False) def test_reboot_hard_and_delete(self): self._test_reboot(False, True) def test_reboot_hard_and_rescued(self): self._test_reboot(False, False, True) def test_reboot_hard_and_delete_and_rescued(self): self._test_reboot(False, True, True) def test_reboot_fail(self): self._test_reboot(False, fail_reboot=True) def test_reboot_fail_running(self): self._test_reboot(False, fail_reboot=True, fail_running=True) def test_get_instance_volume_block_device_info_source_image(self): bdms = block_device_obj.block_device_make_list(self.context, [fake_block_device.FakeDbBlockDeviceDict({ 'id': 3, 'volume_id': u'4cbc9e62-6ba0-45dd-b647-934942ead7d6', 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', 'connection_info': '{"driver_volume_type": "rbd"}', 'source_type': 'image', 'destination_type': 'volume', 'image_id': 'fake-image-id-1', 'boot_index': 0 })]) with (mock.patch.object( block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=bdms) ) as mock_get_by_instance: block_device_info = ( self.compute._get_instance_volume_block_device_info( self.context, self._create_fake_instance()) ) expected = { 'block_device_mapping': [{ 'connection_info': { 'driver_volume_type': 'rbd' }, 'mount_device': '/dev/vda', 'delete_on_termination': False }] } self.assertTrue(mock_get_by_instance.called) self.assertEqual(block_device_info, expected) def test_get_instance_volume_block_device_info_passed_bdms(self): bdms = block_device_obj.block_device_make_list(self.context, [fake_block_device.FakeDbBlockDeviceDict({ 'id': 3, 'volume_id': u'4cbc9e62-6ba0-45dd-b647-934942ead7d6', 'device_name': '/dev/vdd', 'connection_info': '{"driver_volume_type": "rbd"}', 'source_type': 'volume', 'destination_type': 'volume'}) ]) with (mock.patch.object( block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid')) as mock_get_by_instance: block_device_info = ( self.compute._get_instance_volume_block_device_info( self.context, self._create_fake_instance(), bdms=bdms) ) expected = { 'block_device_mapping': [{ 'connection_info': { 'driver_volume_type': 'rbd' }, 'mount_device': '/dev/vdd', 'delete_on_termination': False }] } self.assertFalse(mock_get_by_instance.called) self.assertEqual(block_device_info, expected) def test_set_admin_password(self): # Ensure instance can have its admin password set. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {'task_state': task_states.UPDATING_PASSWORD}) inst_ref = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) self.assertEqual(inst_ref['task_state'], task_states.UPDATING_PASSWORD) self.compute.set_admin_password(self.context, instance, None) inst_ref = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) self.assertIsNone(inst_ref['task_state']) self.compute.terminate_instance(self.context, self._objectify(inst_ref), [], []) def test_set_admin_password_bad_state(self): # Test setting password while instance is rebuilding. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], { "power_state": power_state.NOSTATE, }) instance = jsonutils.to_primitive(db.instance_get_by_uuid( self.context, instance['uuid'])) self.assertEqual(instance['power_state'], power_state.NOSTATE) def fake_driver_get_info(self2, _instance): return {'state': power_state.NOSTATE, 'max_mem': 0, 'mem': 0, 'num_cpu': 2, 'cpu_time': 0} self.stubs.Set(nova.virt.fake.FakeDriver, 'get_info', fake_driver_get_info) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.UPDATING_PASSWORD}) self.assertRaises(exception.InstancePasswordSetFailed, self.compute.set_admin_password, self.context, instance, None) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _do_test_set_admin_password_driver_error(self, exc, expected_vm_state, expected_task_state, expected_exception): """Ensure expected exception is raised if set_admin_password fails.""" def fake_sleep(_time): pass self.stubs.Set(time, 'sleep', fake_sleep) def fake_driver_set_pass(self2, _instance, _pwd): raise exc self.stubs.Set(nova.virt.fake.FakeDriver, 'set_admin_password', fake_driver_set_pass) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {'task_state': task_states.UPDATING_PASSWORD}) inst_ref = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) self.assertEqual(inst_ref['task_state'], task_states.UPDATING_PASSWORD) #error raised from the driver should not reveal internal information #so a new error is raised self.assertRaises(expected_exception, self.compute.set_admin_password, self.context, instance=jsonutils.to_primitive(inst_ref), new_pass=None) inst_ref = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(inst_ref['vm_state'], expected_vm_state) self.assertEqual(inst_ref['task_state'], expected_task_state) self.compute.terminate_instance(self.context, self._objectify(inst_ref), [], []) def test_set_admin_password_driver_not_authorized(self): """Ensure expected exception is raised if set_admin_password not authorized. """ exc = exception.NotAuthorized(_('Internal error')) expected_exception = exception.InstancePasswordSetFailed self._do_test_set_admin_password_driver_error(exc, vm_states.ERROR, None, expected_exception) def test_set_admin_password_driver_not_implemented(self): """Ensure expected exception is raised if set_admin_password not implemented by driver. """ exc = NotImplementedError() expected_exception = NotImplementedError self._do_test_set_admin_password_driver_error(exc, vm_states.ACTIVE, None, expected_exception) def test_inject_network_info(self): # Ensure we can inject network info. called = {'inject': False} def fake_driver_inject_network(self, instance, network_info): called['inject'] = True self.stubs.Set(nova.virt.fake.FakeDriver, 'inject_network_info', fake_driver_inject_network) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) inst_obj = self._objectify(instance) self.compute.inject_network_info(self.context, instance=inst_obj) self.assertTrue(called['inject']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_reset_network(self): # Ensure we can reset networking on an instance. called = {'count': 0} def fake_driver_reset_network(self, instance): called['count'] += 1 self.stubs.Set(nova.virt.fake.FakeDriver, 'reset_network', fake_driver_reset_network) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.compute.reset_network(self.context, instance=self._objectify(instance)) self.assertEqual(called['count'], 1) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _get_snapshotting_instance(self): # Ensure instance can be snapshotted. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) instance = db.instance_update( self.context, instance['uuid'], {"task_state": task_states.IMAGE_SNAPSHOT_PENDING}) return self._objectify(instance) def test_snapshot(self): inst_obj = self._get_snapshotting_instance() self.compute.snapshot_instance(self.context, image_id='fakesnap', instance=inst_obj) def test_snapshot_no_image(self): inst_obj = self._get_snapshotting_instance() inst_obj.image_ref = '' inst_obj.save() self.compute.snapshot_instance(self.context, image_id='fakesnap', instance=inst_obj) def _test_snapshot_fails(self, raise_during_cleanup): def fake_snapshot(*args, **kwargs): raise test.TestingException() self.fake_image_delete_called = False def fake_delete(self_, context, image_id): self.fake_image_delete_called = True if raise_during_cleanup: raise Exception() self.stubs.Set(self.compute.driver, 'snapshot', fake_snapshot) fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, 'delete', fake_delete) inst_obj = self._get_snapshotting_instance() self.assertRaises(test.TestingException, self.compute.snapshot_instance, self.context, image_id='fakesnap', instance=inst_obj) self.assertTrue(self.fake_image_delete_called) self._assert_state({'task_state': None}) def test_snapshot_fails(self): self._test_snapshot_fails(False) def test_snapshot_fails_cleanup_ignores_exception(self): self._test_snapshot_fails(True) def test_snapshot_fails_with_glance_error(self): def fake_snapshot(*args, **kwargs): raise exception.ImageNotFound(image_id='xxx') self.stubs.Set(self.compute.driver, 'snapshot', fake_snapshot) fake_image.stub_out_image_service(self.stubs) inst_obj = self._get_snapshotting_instance() self.compute.snapshot_instance( self.context, image_id='fakesnap', instance=inst_obj) self._assert_state({'task_state': None}) def test_snapshot_handles_cases_when_instance_is_deleted(self): inst_obj = self._get_snapshotting_instance() inst_obj.task_state = task_states.DELETING inst_obj.save() self.compute.snapshot_instance(self.context, image_id='fakesnap', instance=inst_obj) def test_snapshot_handles_cases_when_instance_is_not_found(self): inst_obj = self._get_snapshotting_instance() inst_obj2 = instance_obj.Instance.get_by_uuid(self.context, inst_obj.uuid) inst_obj2.destroy() self.compute.snapshot_instance(self.context, image_id='fakesnap', instance=inst_obj) def _assert_state(self, state_dict): """Assert state of VM is equal to state passed as parameter.""" instances = db.instance_get_all(self.context) self.assertEqual(len(instances), 1) if 'vm_state' in state_dict: self.assertEqual(state_dict['vm_state'], instances[0]['vm_state']) if 'task_state' in state_dict: self.assertEqual(state_dict['task_state'], instances[0]['task_state']) if 'power_state' in state_dict: self.assertEqual(state_dict['power_state'], instances[0]['power_state']) def test_console_output(self): # Make sure we can get console output from instance. instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) output = self.compute.get_console_output(self.context, instance=instance, tail_length=None) self.assertEqual(output, 'FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE') self.compute.terminate_instance(self.context, instance, [], []) def test_console_output_tail(self): # Make sure we can get console output from instance. instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) output = self.compute.get_console_output(self.context, instance=instance, tail_length=2) self.assertEqual(output, 'ANOTHER\nLAST LINE') self.compute.terminate_instance(self.context, instance, [], []) def test_console_output_not_implemented(self): def fake_not_implemented(*args, **kwargs): raise NotImplementedError() self.stubs.Set(self.compute.driver, 'get_console_output', fake_not_implemented) instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_console_output, self.context, instance, 0) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(NotImplementedError, self.compute.get_console_output, self.context, instance, 0) self.compute.terminate_instance(self.context, instance, [], []) def test_novnc_vnc_console(self): # Make sure we can a vnc console for an instance. self.flags(vnc_enabled=True) self.flags(enabled=False, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) # Try with the full instance console = self.compute.get_vnc_console(self.context, 'novnc', instance=instance) self.assertTrue(console) self.compute.terminate_instance(self.context, instance, [], []) def test_validate_console_port_vnc(self): self.flags(vnc_enabled=True) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj() def fake_driver_get_console(*args, **kwargs): return {'host': "fake_host", 'port': "5900", 'internal_access_path': None} self.stubs.Set(self.compute.driver, "get_vnc_console", fake_driver_get_console) self.assertTrue(self.compute.validate_console_port( context=self.context, instance=instance, port="5900", console_type="novnc")) def test_validate_console_port_spice(self): self.flags(vnc_enabled=True) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj() def fake_driver_get_console(*args, **kwargs): return {'host': "fake_host", 'port': "5900", 'internal_access_path': None} self.stubs.Set(self.compute.driver, "get_spice_console", fake_driver_get_console) self.assertTrue(self.compute.validate_console_port( context=self.context, instance=instance, port="5900", console_type="spice-html5")) def test_validate_console_port_rdp(self): self.flags(enabled=True, group='rdp') instance = self._create_fake_instance_obj() def fake_driver_get_console(*args, **kwargs): return {'host': "fake_host", 'port': "5900", 'internal_access_path': None} self.stubs.Set(self.compute.driver, "get_rdp_console", fake_driver_get_console) self.assertTrue(self.compute.validate_console_port( context=self.context, instance=instance, port="5900", console_type="rdp-html5")) def test_validate_console_port_wrong_port(self): self.flags(vnc_enabled=True) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj() def fake_driver_get_console(*args, **kwargs): return {'host': "fake_host", 'port': "5900", 'internal_access_path': None} self.stubs.Set(self.compute.driver, "get_vnc_console", fake_driver_get_console) self.assertFalse(self.compute.validate_console_port( context=self.context, instance=instance, port="wrongport", console_type="spice-html5")) def test_xvpvnc_vnc_console(self): # Make sure we can a vnc console for an instance. self.flags(vnc_enabled=True) self.flags(enabled=False, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) console = self.compute.get_vnc_console(self.context, 'xvpvnc', instance=instance) self.assertTrue(console) self.compute.terminate_instance(self.context, instance, [], []) def test_invalid_vnc_console_type(self): # Raise useful error if console type is an unrecognised string. self.flags(vnc_enabled=True) self.flags(enabled=False, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_vnc_console, self.context, 'invalid', instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_vnc_console, self.context, 'invalid', instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_missing_vnc_console_type(self): # Raise useful error is console type is None. self.flags(vnc_enabled=True) self.flags(enabled=False, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_vnc_console, self.context, None, instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_vnc_console, self.context, None, instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_get_vnc_console_not_implemented(self): self.stubs.Set(self.compute.driver, 'get_vnc_console', fake_not_implemented) instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_vnc_console, self.context, 'novnc', instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(NotImplementedError, self.compute.get_vnc_console, self.context, 'novnc', instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_spicehtml5_spice_console(self): # Make sure we can a spice console for an instance. self.flags(vnc_enabled=False) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) # Try with the full instance console = self.compute.get_spice_console(self.context, 'spice-html5', instance=instance) self.assertTrue(console) self.compute.terminate_instance(self.context, instance, [], []) def test_invalid_spice_console_type(self): # Raise useful error if console type is an unrecognised string self.flags(vnc_enabled=False) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_spice_console, self.context, 'invalid', instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_spice_console, self.context, 'invalid', instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_missing_spice_console_type(self): # Raise useful error is console type is None self.flags(vnc_enabled=False) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_spice_console, self.context, None, instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_spice_console, self.context, None, instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_rdphtml5_rdp_console(self): # Make sure we can a rdp console for an instance. self.flags(vnc_enabled=False) self.flags(enabled=True, group='rdp') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) # Try with the full instance console = self.compute.get_rdp_console(self.context, 'rdp-html5', instance=instance) self.assertTrue(console) self.compute.terminate_instance(self.context, instance, [], []) def test_invalid_rdp_console_type(self): # Raise useful error if console type is an unrecognised string self.flags(vnc_enabled=False) self.flags(enabled=True, group='rdp') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_rdp_console, self.context, 'invalid', instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_rdp_console, self.context, 'invalid', instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_missing_rdp_console_type(self): # Raise useful error is console type is None self.flags(vnc_enabled=False) self.flags(enabled=True, group='rdp') instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) self.assertRaises(messaging.ExpectedException, self.compute.get_rdp_console, self.context, None, instance=instance) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_rdp_console, self.context, None, instance=instance) self.compute.terminate_instance(self.context, instance, [], []) def test_vnc_console_instance_not_ready(self): self.flags(vnc_enabled=True) self.flags(enabled=False, group='spice') instance = self._create_fake_instance_obj( params={'vm_state': vm_states.BUILDING}) def fake_driver_get_console(*args, **kwargs): raise exception.InstanceNotFound(instance_id=instance['uuid']) self.stubs.Set(self.compute.driver, "get_vnc_console", fake_driver_get_console) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.InstanceNotReady, self.compute.get_vnc_console, self.context, 'novnc', instance=instance) def test_spice_console_instance_not_ready(self): self.flags(vnc_enabled=False) self.flags(enabled=True, group='spice') instance = self._create_fake_instance_obj( params={'vm_state': vm_states.BUILDING}) def fake_driver_get_console(*args, **kwargs): raise exception.InstanceNotFound(instance_id=instance['uuid']) self.stubs.Set(self.compute.driver, "get_spice_console", fake_driver_get_console) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.InstanceNotReady, self.compute.get_spice_console, self.context, 'spice-html5', instance=instance) def test_rdp_console_instance_not_ready(self): self.flags(vnc_enabled=False) self.flags(enabled=True, group='rdp') instance = self._create_fake_instance_obj( params={'vm_state': vm_states.BUILDING}) def fake_driver_get_console(*args, **kwargs): raise exception.InstanceNotFound(instance_id=instance['uuid']) self.stubs.Set(self.compute.driver, "get_rdp_console", fake_driver_get_console) self.compute = utils.ExceptionHelper(self.compute) self.assertRaises(exception.InstanceNotReady, self.compute.get_rdp_console, self.context, 'rdp-html5', instance=instance) def test_diagnostics(self): # Make sure we can get diagnostics for an instance. expected_diagnostic = {'cpu0_time': 17300000000, 'memory': 524288, 'vda_errors': -1, 'vda_read': 262144, 'vda_read_req': 112, 'vda_write': 5778432, 'vda_write_req': 488, 'vnet1_rx': 2070139, 'vnet1_rx_drop': 0, 'vnet1_rx_errors': 0, 'vnet1_rx_packets': 26701, 'vnet1_tx': 140208, 'vnet1_tx_drop': 0, 'vnet1_tx_errors': 0, 'vnet1_tx_packets': 662, } instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, [], None, None, True, None, False) diagnostics = self.compute.get_diagnostics(self.context, instance=instance) self.assertEqual(diagnostics, expected_diagnostic) self.compute.terminate_instance(self.context, instance, [], []) def test_add_fixed_ip_usage_notification(self): def dummy(*args, **kwargs): pass self.stubs.Set(network_api.API, 'add_fixed_ip_to_instance', dummy) self.stubs.Set(nova.compute.manager.ComputeManager, 'inject_network_info', dummy) self.stubs.Set(nova.compute.manager.ComputeManager, 'reset_network', dummy) instance = jsonutils.to_primitive(self._create_fake_instance()) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.compute.add_fixed_ip_to_instance(self.context, network_id=1, instance=self._objectify(instance)) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_remove_fixed_ip_usage_notification(self): def dummy(*args, **kwargs): pass self.stubs.Set(network_api.API, 'remove_fixed_ip_from_instance', dummy) self.stubs.Set(nova.compute.manager.ComputeManager, 'inject_network_info', dummy) self.stubs.Set(nova.compute.manager.ComputeManager, 'reset_network', dummy) instance = jsonutils.to_primitive(self._create_fake_instance()) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.compute.remove_fixed_ip_from_instance(self.context, 1, instance=instance) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_run_instance_usage_notification(self, request_spec={}): # Ensure run instance generates appropriate usage notification. instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] expected_image_name = request_spec.get('image', {}).get('name', '') self.compute.run_instance(self.context, instance, request_spec, {}, [], None, None, True, None, False) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) inst_ref = db.instance_get_by_uuid(self.context, instance_uuid) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.create.start') # The last event is the one with the sugar in it. msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.create.end') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(expected_image_name, payload['image_name']) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], inst_ref['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) self.assertEqual(payload['state'], 'active') self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) self.assertIn('fixed_ips', payload) self.assertTrue(payload['launched_at']) image_ref_url = glance.generate_image_url(FAKE_IMAGE_REF) self.assertEqual(payload['image_ref_url'], image_ref_url) self.assertEqual('Success', payload['message']) self.compute.terminate_instance(self.context, self._objectify(inst_ref), [], []) def test_run_instance_image_usage_notification(self): request_spec = {'image': {'name': 'fake_name', 'key': 'value'}} self.test_run_instance_usage_notification(request_spec=request_spec) def test_run_instance_usage_notification_volume_meta(self): # Volume's image metadata won't contain the image name request_spec = {'image': {'key': 'value'}} self.test_run_instance_usage_notification(request_spec=request_spec) def test_run_instance_end_notification_on_abort(self): # Test that an end notif is sent if the build is aborted instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] def build_inst_abort(*args, **kwargs): raise exception.BuildAbortException(reason="already deleted", instance_uuid=instance_uuid) self.stubs.Set(self.compute, '_build_instance', build_inst_abort) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.create.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.create.end') self.assertEqual('INFO', msg.priority) payload = msg.payload message = payload['message'] self.assertTrue(message.find("already deleted") != -1) def test_run_instance_error_notification_on_reschedule(self): # Test that error notif is sent if the build got rescheduled instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] def build_inst_fail(*args, **kwargs): raise exception.RescheduledException(instance_uuid=instance_uuid, reason="something bad happened") self.stubs.Set(self.compute, '_build_instance', build_inst_fail) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertTrue(len(fake_notifier.NOTIFICATIONS) >= 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.create.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.create.error') self.assertEqual('ERROR', msg.priority) payload = msg.payload message = payload['message'] self.assertTrue(message.find("something bad happened") != -1) def test_run_instance_error_notification_on_failure(self): # Test that error notif is sent if build fails hard instance = jsonutils.to_primitive(self._create_fake_instance()) def build_inst_fail(*args, **kwargs): raise test.TestingException("i'm dying") self.stubs.Set(self.compute, '_build_instance', build_inst_fail) self.assertRaises(test.TestingException, self.compute.run_instance, self.context, instance, {}, {}, [], None, None, True, None, False) self.assertTrue(len(fake_notifier.NOTIFICATIONS) >= 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.create.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.create.error') self.assertEqual('ERROR', msg.priority) payload = msg.payload message = payload['message'] self.assertTrue(message.find("i'm dying") != -1) def test_terminate_usage_notification(self): # Ensure terminate_instance generates correct usage notification. old_time = datetime.datetime(2012, 4, 1) cur_time = datetime.datetime(2012, 12, 21, 12, 21) timeutils.set_time_override(old_time) instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) fake_notifier.NOTIFICATIONS = [] timeutils.set_time_override(cur_time) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 4) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.delete.start') msg1 = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg1.event_type, 'compute.instance.shutdown.start') msg1 = fake_notifier.NOTIFICATIONS[2] self.assertEqual(msg1.event_type, 'compute.instance.shutdown.end') msg1 = fake_notifier.NOTIFICATIONS[3] self.assertEqual(msg1.event_type, 'compute.instance.delete.end') payload = msg1.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) self.assertIn('terminated_at', payload) self.assertIn('deleted_at', payload) self.assertEqual(payload['terminated_at'], timeutils.strtime(cur_time)) self.assertEqual(payload['deleted_at'], timeutils.strtime(cur_time)) image_ref_url = glance.generate_image_url(FAKE_IMAGE_REF) self.assertEqual(payload['image_ref_url'], image_ref_url) def test_run_instance_existing(self): # Ensure failure when running an instance that already exists. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, [], None, None, True, None, False) self.assertRaises(exception.InstanceExists, self.compute.run_instance, self.context, instance, {}, {}, [], None, None, True, None, False) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_run_instance_queries_macs(self): # run_instance should ask the driver for node mac addresses and pass # that to the network_api in use. fake_network.unset_stub_network_methods(self.stubs) instance = jsonutils.to_primitive(self._create_fake_instance()) macs = set(['01:23:45:67:89:ab']) self.mox.StubOutWithMock(self.compute.network_api, "allocate_for_instance") self.compute.network_api.allocate_for_instance( mox.IgnoreArg(), mox.IgnoreArg(), requested_networks=None, vpn=False, macs=macs, security_groups=[], dhcp_options=None).AndReturn( fake_network.fake_get_instance_nw_info(self.stubs, 1, 1)) self.mox.StubOutWithMock(self.compute.driver, "macs_for_instance") self.compute.driver.macs_for_instance(instance).AndReturn(macs) self.mox.ReplayAll() self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) def test_run_instance_reschedules_on_anti_affinity_violation(self): group_instance = self._create_fake_instance_obj( params=dict(host=self.compute.host)) instance_group = instance_group_obj.InstanceGroup(self.context) instance_group.uuid = str(uuid.uuid4()) instance_group.members = [group_instance.uuid] instance_group.policies = ['anti-affinity'] instance_group.create() instance = jsonutils.to_primitive(self._create_fake_instance()) filter_properties = {'scheduler_hints': {'group': instance_group.uuid}} self.assertRaises(exception.RescheduledException, self.compute._build_instance, self.context, {}, filter_properties, [], None, None, True, None, instance, None, False) def test_instance_set_to_error_on_uncaught_exception(self): # Test that instance is set to error state when exception is raised. instance = jsonutils.to_primitive(self._create_fake_instance()) self.mox.StubOutWithMock(self.compute.network_api, "allocate_for_instance") self.mox.StubOutWithMock(self.compute.network_api, "deallocate_for_instance") self.compute.network_api.allocate_for_instance( mox.IgnoreArg(), mox.IgnoreArg(), requested_networks=None, vpn=False, macs=None, security_groups=[], dhcp_options=None ).AndRaise(messaging.RemoteError()) self.compute.network_api.deallocate_for_instance( mox.IgnoreArg(), mox.IgnoreArg(), requested_networks=None).MultipleTimes() fake_network.unset_stub_network_methods(self.stubs) self.mox.ReplayAll() self.assertRaises(messaging.RemoteError, self.compute.run_instance, self.context, instance, {}, {}, None, None, None, True, None, False) instance = db.instance_get_by_uuid(context.get_admin_context(), instance['uuid']) self.assertEqual(vm_states.ERROR, instance['vm_state']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_delete_instance_succedes_on_volume_fail(self): instance = self._create_fake_instance_obj() def fake_cleanup_volumes(context, instance): raise test.TestingException() self.stubs.Set(self.compute, '_cleanup_volumes', fake_cleanup_volumes) self.compute._delete_instance(self.context, instance=instance, bdms={}) def test_delete_instance_keeps_net_on_power_off_fail(self): self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.mox.StubOutWithMock(self.compute, '_deallocate_network') exp = exception.InstancePowerOffFailure(reason='') self.compute.driver.destroy(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(exp) # mox will detect if _deallocate_network gets called unexpectedly self.mox.ReplayAll() instance = self._create_fake_instance_obj() self.assertRaises(exception.InstancePowerOffFailure, self.compute._delete_instance, self.context, instance=instance, bdms={}) def test_delete_instance_loses_net_on_other_fail(self): self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.mox.StubOutWithMock(self.compute, '_deallocate_network') exp = test.TestingException() self.compute.driver.destroy(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(exp) self.compute._deallocate_network(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() instance = self._create_fake_instance_obj() self.assertRaises(test.TestingException, self.compute._delete_instance, self.context, instance=instance, bdms={}) def test_delete_instance_deletes_console_auth_tokens(self): instance = self._create_fake_instance_obj() self.flags(vnc_enabled=True) self.tokens_deleted = False def fake_delete_tokens(*args, **kwargs): self.tokens_deleted = True cauth_rpcapi = self.compute.consoleauth_rpcapi self.stubs.Set(cauth_rpcapi, 'delete_tokens_for_instance', fake_delete_tokens) self.compute._delete_instance(self.context, instance=instance, bdms={}) self.assertTrue(self.tokens_deleted) def test_delete_instance_deletes_console_auth_tokens_cells(self): instance = self._create_fake_instance_obj() self.flags(vnc_enabled=True) self.flags(enable=True, group='cells') self.tokens_deleted = False def fake_delete_tokens(*args, **kwargs): self.tokens_deleted = True cells_rpcapi = self.compute.cells_rpcapi self.stubs.Set(cells_rpcapi, 'consoleauth_delete_tokens', fake_delete_tokens) self.compute._delete_instance(self.context, instance=instance, bdms={}) self.assertTrue(self.tokens_deleted) def test_instance_termination_exception_sets_error(self): """Test that we handle InstanceTerminationFailure which is propagated up from the underlying driver. """ instance = self._create_fake_instance_obj() def fake_delete_instance(context, instance, bdms, reservations=None): raise exception.InstanceTerminationFailure(reason='') self.stubs.Set(self.compute, '_delete_instance', fake_delete_instance) self.assertRaises(exception.InstanceTerminationFailure, self.compute.terminate_instance, self.context, self._objectify(instance), [], []) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(instance['vm_state'], vm_states.ERROR) def test_network_is_deallocated_on_spawn_failure(self): # When a spawn fails the network must be deallocated. instance = jsonutils.to_primitive(self._create_fake_instance()) self.mox.StubOutWithMock(self.compute, "_prep_block_device") self.compute._prep_block_device( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(messaging.RemoteError('', '', '')) self.mox.ReplayAll() self.assertRaises(messaging.RemoteError, self.compute.run_instance, self.context, instance, {}, {}, None, None, None, True, None, False) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_lock(self): # FIXME(comstud): This test is such crap. This is testing # compute API lock functionality in a test class for the compute # manager by running an instance. Hello? We should just have # unit tests in test_compute_api that test the check_instance_lock # decorator and make sure that appropriate compute_api methods # have the decorator. instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) non_admin_context = context.RequestContext(None, None, is_admin=False) def check_task_state(task_state): instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['task_state'], task_state) # should fail with locked nonadmin context inst_obj = instance_obj.Instance.get_by_uuid(self.context, instance['uuid']) self.compute_api.lock(self.context, inst_obj) self.assertRaises(exception.InstanceIsLocked, self.compute_api.reboot, non_admin_context, inst_obj, 'SOFT') check_task_state(None) # should fail with invalid task state self.compute_api.unlock(self.context, inst_obj) instance = db.instance_update(self.context, instance_uuid, {'task_state': task_states.REBOOTING}) inst_obj.refresh() self.assertRaises(exception.InstanceInvalidState, self.compute_api.reboot, non_admin_context, inst_obj, 'SOFT') check_task_state(task_states.REBOOTING) # should succeed with admin context instance = db.instance_update(self.context, instance_uuid, {'task_state': None}) inst_obj.refresh() self.compute_api.reboot(self.context, inst_obj, 'SOFT') check_task_state(task_states.REBOOTING) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _check_locked_by(self, instance_uuid, locked_by): instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['locked'], locked_by != None) self.assertEqual(instance['locked_by'], locked_by) return instance def test_override_owner_lock(self): # FIXME(comstud): This test is such crap. This is testing # compute API lock functionality in a test class for the compute # manager by running an instance. Hello? We should just have # unit tests in test_compute_api that test the check_instance_lock # decorator and make sure that appropriate compute_api methods # have the decorator. admin_context = context.RequestContext('admin-user', 'admin-project', is_admin=True) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) # Ensure that an admin can override the owner lock inst_obj = self._objectify(instance) self.compute_api.lock(self.context, inst_obj) self._check_locked_by(instance_uuid, 'owner') self.compute_api.unlock(admin_context, inst_obj) self._check_locked_by(instance_uuid, None) def test_upgrade_owner_lock(self): # FIXME(comstud): This test is such crap. This is testing # compute API lock functionality in a test class for the compute # manager by running an instance. Hello? We should just have # unit tests in test_compute_api that test the check_instance_lock # decorator and make sure that appropriate compute_api methods # have the decorator. admin_context = context.RequestContext('admin-user', 'admin-project', is_admin=True) instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) # Ensure that an admin can upgrade the lock and that # the owner can no longer unlock inst_obj = self._objectify(instance) self.compute_api.lock(self.context, inst_obj) self.compute_api.lock(admin_context, inst_obj) self._check_locked_by(instance_uuid, 'admin') inst_obj.refresh() self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.unlock, self.context, inst_obj) self._check_locked_by(instance_uuid, 'admin') self.compute_api.unlock(admin_context, inst_obj) self._check_locked_by(instance_uuid, None) def _test_state_revert(self, instance, operation, pre_task_state, kwargs=None): if kwargs is None: kwargs = {} # The API would have set task_state, so do that here to test # that the state gets reverted on failure db.instance_update(self.context, instance['uuid'], {"task_state": pre_task_state}) orig_elevated = self.context.elevated orig_notify = self.compute._notify_about_instance_usage def _get_an_exception(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.context, 'elevated', _get_an_exception) self.stubs.Set(self.compute, '_notify_about_instance_usage', _get_an_exception) func = getattr(self.compute, operation) self.assertRaises(test.TestingException, func, self.context, instance=instance, **kwargs) # self.context.elevated() is called in tearDown() self.stubs.Set(self.context, 'elevated', orig_elevated) self.stubs.Set(self.compute, '_notify_about_instance_usage', orig_notify) # Fetch the instance's task_state and make sure it reverted to None. instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertIsNone(instance["task_state"]) def test_state_revert(self): # ensure that task_state is reverted after a failed operation. migration = migration_obj.Migration() migration.new_instance_type_id = '1' actions = [ ("reboot_instance", task_states.REBOOTING, {'block_device_info': [], 'reboot_type': 'SOFT'}), ("stop_instance", task_states.POWERING_OFF), ("start_instance", task_states.POWERING_ON), ("soft_delete_instance", task_states.SOFT_DELETING, {'reservations': []}), ("restore_instance", task_states.RESTORING), ("rebuild_instance", task_states.REBUILDING, {'orig_image_ref': None, 'image_ref': None, 'injected_files': [], 'new_pass': '', 'orig_sys_metadata': {}, 'bdms': [], 'recreate': False, 'on_shared_storage': False}), ("set_admin_password", task_states.UPDATING_PASSWORD, {'new_pass': None}), ("rescue_instance", task_states.RESCUING, {'rescue_password': None}), ("unrescue_instance", task_states.UNRESCUING), ("revert_resize", task_states.RESIZE_REVERTING, {'migration': migration, 'reservations': []}), ("prep_resize", task_states.RESIZE_PREP, {'image': {}, 'instance_type': {}, 'reservations': [], 'request_spec': {}, 'filter_properties': {}, 'node': None}), ("resize_instance", task_states.RESIZE_PREP, {'migration': migration, 'image': {}, 'reservations': [], 'instance_type': {}}), ("pause_instance", task_states.PAUSING), ("unpause_instance", task_states.UNPAUSING), ("suspend_instance", task_states.SUSPENDING), ("resume_instance", task_states.RESUMING), ] want_objects = ['stop_instance', 'start_instance', 'terminate_instance', 'soft_delete_instance', 'revert_resize', 'confirm_resize' ] self._stub_out_resize_network_methods() instance = self._create_fake_instance() inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance, expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS) for operation in actions: if operation[0] in want_objects: self._test_state_revert(inst_obj, *operation) else: self._test_state_revert(instance, *operation) def _ensure_quota_reservations_committed(self, expect_project=False, expect_user=False): """Mock up commit of quota reservations.""" reservations = list('fake_res') self.mox.StubOutWithMock(nova.quota.QUOTAS, 'commit') nova.quota.QUOTAS.commit(mox.IgnoreArg(), reservations, project_id=(expect_project and self.context.project_id or None), user_id=(expect_user and self.context.user_id or None)) self.mox.ReplayAll() return reservations def _ensure_quota_reservations_rolledback(self, expect_project=False, expect_user=False): """Mock up rollback of quota reservations.""" reservations = list('fake_res') self.mox.StubOutWithMock(nova.quota.QUOTAS, 'rollback') nova.quota.QUOTAS.rollback(mox.IgnoreArg(), reservations, project_id=(expect_project and self.context.project_id or None), user_id=(expect_user and self.context.user_id or None)) self.mox.ReplayAll() return reservations def test_quotas_successful_delete(self): instance = jsonutils.to_primitive(self._create_fake_instance()) resvs = self._ensure_quota_reservations_committed(True, True) self.compute.terminate_instance(self.context, self._objectify(instance), bdms=[], reservations=resvs) def test_quotas_failed_delete(self): instance = jsonutils.to_primitive(self._create_fake_instance()) def fake_shutdown_instance(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.compute, '_shutdown_instance', fake_shutdown_instance) resvs = self._ensure_quota_reservations_rolledback(True, True) self.assertRaises(test.TestingException, self.compute.terminate_instance, self.context, self._objectify(instance), bdms=[], reservations=resvs) def test_quotas_successful_soft_delete(self): instance = self._objectify(self._create_fake_instance( params=dict(task_state=task_states.SOFT_DELETING))) resvs = self._ensure_quota_reservations_committed(True, True) self.compute.soft_delete_instance(self.context, instance, reservations=resvs) def test_quotas_failed_soft_delete(self): instance = jsonutils.to_primitive(self._create_fake_instance( params=dict(task_state=task_states.SOFT_DELETING))) def fake_soft_delete(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.compute.driver, 'soft_delete', fake_soft_delete) resvs = self._ensure_quota_reservations_rolledback(True, True) self.assertRaises(test.TestingException, self.compute.soft_delete_instance, self.context, instance, reservations=resvs) def test_quotas_destroy_of_soft_deleted_instance(self): instance = jsonutils.to_primitive(self._create_fake_instance( params=dict(vm_state=vm_states.SOFT_DELETED))) # Termination should be successful, but quota reservations # rolled back because the instance was in SOFT_DELETED state. resvs = self._ensure_quota_reservations_rolledback() self.compute.terminate_instance(self.context, self._objectify(instance), bdms=[], reservations=resvs) def _stub_out_resize_network_methods(self): def fake(cls, ctxt, instance, *args, **kwargs): pass self.stubs.Set(network_api.API, 'setup_networks_on_host', fake) self.stubs.Set(network_api.API, 'migrate_instance_start', fake) self.stubs.Set(network_api.API, 'migrate_instance_finish', fake) def _test_finish_resize(self, power_on): # Contrived test to ensure finish_resize doesn't raise anything and # also tests resize from ACTIVE or STOPPED state which determines # if the resized instance is powered on or not. vm_state = None if power_on: vm_state = vm_states.ACTIVE else: vm_state = vm_states.STOPPED params = {'vm_state': vm_state} instance = self._create_fake_instance_obj(params) image = 'fake-image' disk_info = 'fake-disk-info' instance_type = flavors.get_default_flavor() instance.task_state = task_states.RESIZE_PREP instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=[], request_spec={}, filter_properties={}, node=None) instance.task_state = task_states.RESIZE_MIGRATED instance.save() # NOTE(mriedem): make sure prep_resize set old_vm_state correctly sys_meta = instance.system_metadata self.assertIn('old_vm_state', sys_meta) if power_on: self.assertEqual(vm_states.ACTIVE, sys_meta['old_vm_state']) else: self.assertEqual(vm_states.STOPPED, sys_meta['old_vm_state']) migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') orig_mig_save = migration.save orig_inst_save = instance.save network_api = self.compute.network_api conductor_api = self.compute.conductor_api self.mox.StubOutWithMock(network_api, 'setup_networks_on_host') self.mox.StubOutWithMock(conductor_api, 'network_migrate_instance_finish') self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.mox.StubOutWithMock(self.compute.driver, 'finish_migration') self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(migration, 'save') self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.context, 'elevated') def _mig_save(context): self.assertEqual(migration.status, 'finished') self.assertEqual(vm_state, instance.vm_state) self.assertEqual(task_states.RESIZE_FINISH, instance.task_state) orig_mig_save() def _instance_save1(): self.assertEqual(instance_type['id'], instance.instance_type_id) orig_inst_save() def _instance_save2(expected_task_state=None): self.assertEqual(task_states.RESIZE_MIGRATED, expected_task_state) self.assertEqual(task_states.RESIZE_FINISH, instance.task_state) orig_inst_save(expected_task_state=expected_task_state) def _instance_save3(expected_task_state=None): self.assertEqual(task_states.RESIZE_FINISH, expected_task_state) self.assertEqual(vm_states.RESIZED, instance.vm_state) self.assertIsNone(instance.task_state) self.assertIn('launched_at', instance.obj_what_changed()) orig_inst_save(expected_task_state=expected_task_state) # First save to update flavor instance.save().WithSideEffects(_instance_save1) network_api.setup_networks_on_host(self.context, instance, 'fake-mini') conductor_api.network_migrate_instance_finish(self.context, mox.IsA(dict), mox.IsA(dict)) self.compute._get_instance_nw_info( self.context, instance).AndReturn('fake-nwinfo1') # 2nd save to update task state exp_kwargs = dict(expected_task_state=task_states.RESIZE_MIGRATED) instance.save(**exp_kwargs).WithSideEffects(_instance_save2) self.compute._notify_about_instance_usage( self.context, instance, 'finish_resize.start', network_info='fake-nwinfo1') self.compute._get_instance_volume_block_device_info( self.context, instance, refresh_conn_info=True).AndReturn('fake-bdminfo') # nova.conf sets the default flavor to m1.small and the test # sets the default flavor to m1.tiny so they should be different # which makes this a resize self.compute.driver.finish_migration(self.context, migration, instance, disk_info, 'fake-nwinfo1', image, True, 'fake-bdminfo', power_on) # Ensure instance status updates is after the migration finish self.context.elevated().AndReturn(self.context) migration.save(self.context).WithSideEffects(_mig_save) exp_kwargs = dict(expected_task_state=task_states.RESIZE_FINISH) instance.save(**exp_kwargs).WithSideEffects(_instance_save3) self.compute._notify_about_instance_usage( self.context, instance, 'finish_resize.end', network_info='fake-nwinfo1') # NOTE(comstud): This actually does the mox.ReplayAll() reservations = self._ensure_quota_reservations_committed() self.compute.finish_resize(self.context, migration=migration, disk_info=disk_info, image=image, instance=instance, reservations=reservations) def test_finish_resize_from_active(self): self._test_finish_resize(power_on=True) def test_finish_resize_from_stopped(self): self._test_finish_resize(power_on=False) def test_finish_resize_with_volumes(self): """Contrived test to ensure finish_resize doesn't raise anything.""" # create instance instance = self._create_fake_instance_obj() # create volume volume_id = 'fake' volume = {'instance_uuid': None, 'device_name': None, 'id': volume_id} bdm = block_device_obj.BlockDeviceMapping( **{'source_type': 'volume', 'destination_type': 'volume', 'volume_id': volume_id, 'instance_uuid': instance['uuid'], 'device_name': '/dev/vdc'}) bdm.create(self.context) # stub out volume attach def fake_volume_get(self, context, volume_id): return volume self.stubs.Set(cinder.API, "get", fake_volume_get) def fake_volume_check_attach(self, context, volume_id, instance): pass self.stubs.Set(cinder.API, "check_attach", fake_volume_check_attach) def fake_get_volume_encryption_metadata(self, context, volume_id): return {} self.stubs.Set(cinder.API, 'get_volume_encryption_metadata', fake_get_volume_encryption_metadata) orig_connection_data = { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:%s.1' % volume_id, 'target_portal': '127.0.0.0.1:3260', 'volume_id': volume_id, } connection_info = { 'driver_volume_type': 'iscsi', 'data': orig_connection_data, } def fake_init_conn(self, context, volume_id, session): return connection_info self.stubs.Set(cinder.API, "initialize_connection", fake_init_conn) def fake_attach(self, context, volume_id, instance_uuid, device_name): volume['instance_uuid'] = instance_uuid volume['device_name'] = device_name self.stubs.Set(cinder.API, "attach", fake_attach) # stub out virt driver attach def fake_get_volume_connector(*args, **kwargs): return {} self.stubs.Set(self.compute.driver, 'get_volume_connector', fake_get_volume_connector) def fake_attach_volume(*args, **kwargs): pass self.stubs.Set(self.compute.driver, 'attach_volume', fake_attach_volume) # attach volume to instance instance_p = obj_base.obj_to_primitive(instance) self.compute.attach_volume(self.context, volume['id'], '/dev/vdc', instance_p, bdm=bdm) # assert volume attached correctly self.assertEqual(volume['device_name'], '/dev/vdc') disk_info = db.block_device_mapping_get_all_by_instance( self.context, instance.uuid) self.assertEqual(len(disk_info), 1) for bdm in disk_info: self.assertEqual(bdm['device_name'], volume['device_name']) self.assertEqual(bdm['connection_info'], jsonutils.dumps(connection_info)) # begin resize instance_type = flavors.get_default_flavor() instance.task_state = task_states.RESIZE_PREP instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=[], request_spec={}, filter_properties={}, node=None) # fake out detach for prep_resize (and later terminate) def fake_terminate_connection(self, context, volume, connector): connection_info['data'] = None self.stubs.Set(cinder.API, "terminate_connection", fake_terminate_connection) self._stub_out_resize_network_methods() migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') self.compute.resize_instance(self.context, instance=instance, migration=migration, image={}, reservations=[], instance_type=jsonutils.to_primitive(instance_type)) # assert bdm is unchanged disk_info = db.block_device_mapping_get_all_by_instance( self.context, instance.uuid) self.assertEqual(len(disk_info), 1) for bdm in disk_info: self.assertEqual(bdm['device_name'], volume['device_name']) cached_connection_info = jsonutils.loads(bdm['connection_info']) self.assertEqual(cached_connection_info['data'], orig_connection_data) # but connection was terminated self.assertIsNone(connection_info['data']) # stub out virt driver finish_migration def fake(*args, **kwargs): pass self.stubs.Set(self.compute.driver, 'finish_migration', fake) instance.task_state = task_states.RESIZE_MIGRATED instance.save() reservations = self._ensure_quota_reservations_committed() # new initialize connection new_connection_data = dict(orig_connection_data) new_iqn = 'iqn.2010-10.org.openstack:%s.2' % volume_id, new_connection_data['target_iqn'] = new_iqn def fake_init_conn_with_data(self, context, volume, session): connection_info['data'] = new_connection_data return connection_info self.stubs.Set(cinder.API, "initialize_connection", fake_init_conn_with_data) self.compute.finish_resize(self.context, migration=migration, disk_info={}, image={}, instance=instance, reservations=reservations) # assert volume attached correctly disk_info = db.block_device_mapping_get_all_by_instance( self.context, instance['uuid']) self.assertEqual(len(disk_info), 1) for bdm in disk_info: self.assertEqual(bdm['connection_info'], jsonutils.dumps(connection_info)) # stub out detach def fake_detach(self, context, volume_uuid): volume['device_path'] = None volume['instance_uuid'] = None self.stubs.Set(cinder.API, "detach", fake_detach) # clean up self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_finish_resize_handles_error(self): # Make sure we don't leave the instance in RESIZE on error. def throw_up(*args, **kwargs): raise test.TestingException() def fake(*args, **kwargs): pass self.stubs.Set(self.compute.driver, 'finish_migration', throw_up) self._stub_out_resize_network_methods() reservations = self._ensure_quota_reservations_rolledback() instance = self._create_fake_instance_obj() instance_type = flavors.get_default_flavor() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') instance.refresh() instance.task_state = task_states.RESIZE_MIGRATED instance.save() self.assertRaises(test.TestingException, self.compute.finish_resize, self.context, migration=migration, disk_info={}, image={}, instance=instance, reservations=reservations) # NOTE(comstud): error path doesn't use objects, so our object # is not updated. Refresh and compare against the DB. instance.refresh() self.assertEqual(vm_states.ERROR, instance.vm_state) def test_rebuild_instance_notification(self): # Ensure notifications on instance migrate/resize. old_time = datetime.datetime(2012, 4, 1) cur_time = datetime.datetime(2012, 12, 21, 12, 21) timeutils.set_time_override(old_time) inst_ref = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, inst_ref, {}, {}, None, None, None, True, None, False) timeutils.set_time_override(cur_time) fake_notifier.NOTIFICATIONS = [] instance = db.instance_get_by_uuid(self.context, inst_ref['uuid']) orig_sys_metadata = db.instance_system_metadata_get(self.context, inst_ref['uuid']) image_ref = instance["image_ref"] new_image_ref = image_ref + '-new_image_ref' db.instance_update(self.context, inst_ref['uuid'], {'image_ref': new_image_ref}) password = "new_password" instance = db.instance_get_by_uuid(self.context, inst_ref['uuid']) db.instance_update(self.context, instance['uuid'], {"task_state": task_states.REBUILDING}) self.compute.rebuild_instance(self.context, self._objectify(instance), image_ref, new_image_ref, injected_files=[], new_pass=password, orig_sys_metadata=orig_sys_metadata, bdms=[], recreate=False, on_shared_storage=False) instance = db.instance_get_by_uuid(self.context, inst_ref['uuid']) image_ref_url = glance.generate_image_url(image_ref) new_image_ref_url = glance.generate_image_url(new_image_ref) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 3) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.exists') self.assertEqual(msg.payload['image_ref_url'], image_ref_url) msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.rebuild.start') self.assertEqual(msg.payload['image_ref_url'], new_image_ref_url) self.assertEqual(msg.payload['image_name'], 'fake_name') msg = fake_notifier.NOTIFICATIONS[2] self.assertEqual(msg.event_type, 'compute.instance.rebuild.end') self.assertEqual(msg.priority, 'INFO') payload = msg.payload self.assertEqual(payload['image_name'], 'fake_name') self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], inst_ref['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) self.assertEqual(payload['launched_at'], timeutils.strtime(cur_time)) self.assertEqual(payload['image_ref_url'], new_image_ref_url) self.compute.terminate_instance(self.context, self._objectify(inst_ref), [], []) def test_finish_resize_instance_notification(self): # Ensure notifications on instance migrate/resize. old_time = datetime.datetime(2012, 4, 1) cur_time = datetime.datetime(2012, 12, 21, 12, 21) timeutils.set_time_override(old_time) instance = self._create_fake_instance_obj() new_type = flavors.get_flavor_by_name('m1.small') new_type = jsonutils.to_primitive(new_type) new_type_id = new_type['id'] flavor_id = new_type['flavorid'] instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = 'foo' instance.task_state = task_states.RESIZE_PREP instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=new_type, image={}, reservations=[], request_spec={}, filter_properties={}, node=None) self._stub_out_resize_network_methods() migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') self.compute.resize_instance(self.context, instance=instance, migration=migration, image={}, instance_type=new_type, reservations=[]) timeutils.set_time_override(cur_time) fake_notifier.NOTIFICATIONS = [] self.compute.finish_resize(self.context, migration=migration, reservations=[], disk_info={}, image={}, instance=instance) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.finish_resize.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.finish_resize.end') self.assertEqual(msg.priority, 'INFO') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance.uuid) self.assertEqual(payload['instance_type'], 'm1.small') self.assertEqual(str(payload['instance_type_id']), str(new_type_id)) self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) self.assertEqual(payload['launched_at'], timeutils.strtime(cur_time)) image_ref_url = glance.generate_image_url(FAKE_IMAGE_REF) self.assertEqual(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_resize_instance_notification(self): # Ensure notifications on instance migrate/resize. old_time = datetime.datetime(2012, 4, 1) cur_time = datetime.datetime(2012, 12, 21, 12, 21) timeutils.set_time_override(old_time) instance = self._create_fake_instance_obj() self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) timeutils.set_time_override(cur_time) fake_notifier.NOTIFICATIONS = [] instance.host = 'foo' instance.task_state = task_states.RESIZE_PREP instance.save() instance_type = flavors.get_default_flavor() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=[], request_spec={}, filter_properties={}, node=None) db.migration_get_by_instance_and_status(self.context.elevated(), instance.uuid, 'pre-migrating') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 3) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.exists') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.resize.prep.start') msg = fake_notifier.NOTIFICATIONS[2] self.assertEqual(msg.event_type, 'compute.instance.resize.prep.end') self.assertEqual(msg.priority, 'INFO') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance.uuid) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) self.assertIn('display_name', payload) self.assertIn('created_at', payload) self.assertIn('launched_at', payload) image_ref_url = glance.generate_image_url(FAKE_IMAGE_REF) self.assertEqual(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_prep_resize_instance_migration_error_on_same_host(self): """Ensure prep_resize raise a migration error if destination is set on the same source host and allow_resize_to_same_host is false """ self.flags(host="foo", allow_resize_to_same_host=False) instance = self._create_fake_instance_obj() reservations = self._ensure_quota_reservations_rolledback() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = self.compute.host instance.save() instance_type = flavors.get_default_flavor() self.assertRaises(exception.MigrationError, self.compute.prep_resize, self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_prep_resize_instance_migration_error_on_none_host(self): """Ensure prep_resize raises a migration error if destination host is not defined """ instance = self._create_fake_instance_obj() reservations = self._ensure_quota_reservations_rolledback() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = None instance.save() instance_type = flavors.get_default_flavor() self.assertRaises(exception.MigrationError, self.compute.prep_resize, self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_resize_instance_driver_error(self): # Ensure instance status set to Error on resize error. def throw_up(*args, **kwargs): raise test.TestingException() self.stubs.Set(self.compute.driver, 'migrate_disk_and_power_off', throw_up) instance = self._create_fake_instance_obj() instance_type = flavors.get_default_flavor() reservations = self._ensure_quota_reservations_rolledback() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = 'foo' instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) instance.task_state = task_states.RESIZE_PREP instance.save() migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') #verify self.assertRaises(test.TestingException, self.compute.resize_instance, self.context, instance=instance, migration=migration, image={}, reservations=reservations, instance_type=jsonutils.to_primitive(instance_type)) # NOTE(comstud): error path doesn't use objects, so our object # is not updated. Refresh and compare against the DB. instance.refresh() self.assertEqual(instance.vm_state, vm_states.ERROR) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_resize_instance_driver_rollback(self): # Ensure instance status set to Running after rollback. def throw_up(*args, **kwargs): raise exception.InstanceFaultRollback(test.TestingException()) self.stubs.Set(self.compute.driver, 'migrate_disk_and_power_off', throw_up) instance = self._create_fake_instance_obj() instance_type = flavors.get_default_flavor() reservations = self._ensure_quota_reservations_rolledback() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = 'foo' instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) instance.task_state = task_states.RESIZE_PREP instance.save() migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') self.assertRaises(test.TestingException, self.compute.resize_instance, self.context, instance=instance, migration=migration, image={}, reservations=reservations, instance_type=jsonutils.to_primitive(instance_type)) # NOTE(comstud): error path doesn't use objects, so our object # is not updated. Refresh and compare against the DB. instance.refresh() self.assertEqual(instance.vm_state, vm_states.ACTIVE) self.assertIsNone(instance.task_state) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_resize_instance(self): # Ensure instance can be migrated/resized. instance = self._create_fake_instance_obj() instance_type = flavors.get_default_flavor() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = 'foo' instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=[], request_spec={}, filter_properties={}, node=None) # verify 'old_vm_state' was set on system_metadata instance.refresh() sys_meta = instance.system_metadata self.assertEqual(vm_states.ACTIVE, sys_meta['old_vm_state']) self._stub_out_resize_network_methods() instance.task_state = task_states.RESIZE_PREP instance.save() migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') with contextlib.nested( mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid', return_value='fake_bdms'), mock.patch.object( self.compute, '_get_instance_volume_block_device_info', return_value='fake_bdinfo'), mock.patch.object(self.compute, '_terminate_volume_connections') ) as (mock_get_by_inst_uuid, mock_get_instance_vol_bdinfo, mock_terminate_vol_conn): self.compute.resize_instance(self.context, instance=instance, migration=migration, image={}, reservations=[], instance_type=jsonutils.to_primitive(instance_type)) mock_get_instance_vol_bdinfo.assert_called_once_with( self.context, instance, bdms='fake_bdms') mock_terminate_vol_conn.assert_called_once_with(self.context, instance, 'fake_bdms') self.assertEqual(migration.dest_compute, instance.host) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _test_confirm_resize(self, power_on): # Common test case method for confirm_resize def fake(*args, **kwargs): pass def fake_confirm_migration_driver(*args, **kwargs): # Confirm the instance uses the new type in finish_resize inst = args[1] sys_meta = inst['system_metadata'] self.assertEqual(sys_meta['instance_type_flavorid'], '3') old_vm_state = None p_state = None if power_on: old_vm_state = vm_states.ACTIVE p_state = power_state.RUNNING else: old_vm_state = vm_states.STOPPED p_state = power_state.SHUTDOWN params = {'vm_state': old_vm_state, 'power_state': p_state} instance = self._create_fake_instance_obj(params) self.flags(allow_resize_to_same_host=True) self.stubs.Set(self.compute.driver, 'finish_migration', fake) self.stubs.Set(self.compute.driver, 'confirm_migration', fake_confirm_migration_driver) self._stub_out_resize_network_methods() reservations = self._ensure_quota_reservations_committed() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) # Confirm the instance size before the resize starts instance.refresh() instance_type_ref = db.flavor_get(self.context, instance.instance_type_id) self.assertEqual(instance_type_ref['flavorid'], '1') instance.vm_state = old_vm_state instance.power_state = p_state instance.save() new_instance_type_ref = db.flavor_get_by_flavor_id( self.context, 3) new_instance_type_p = jsonutils.to_primitive(new_instance_type_ref) self.compute.prep_resize(self.context, instance=instance, instance_type=new_instance_type_p, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') # NOTE(mriedem): ensure prep_resize set old_vm_state in system_metadata sys_meta = instance.system_metadata self.assertEqual(old_vm_state, sys_meta['old_vm_state']) instance.task_state = task_states.RESIZE_PREP instance.save() self.compute.resize_instance(self.context, instance=instance, migration=migration, image={}, reservations=[], instance_type=new_instance_type_p) self.compute.finish_resize(self.context, migration=migration, reservations=[], disk_info={}, image={}, instance=instance) # Prove that the instance size is now the new size instance_type_ref = db.flavor_get(self.context, instance.instance_type_id) self.assertEqual(instance_type_ref['flavorid'], '3') # Finally, confirm the resize and verify the new flavor is applied instance.task_state = None instance.save() self.compute.confirm_resize(self.context, instance=instance, reservations=reservations, migration=migration) instance.refresh() instance_type_ref = db.flavor_get(self.context, instance.instance_type_id) self.assertEqual(instance_type_ref['flavorid'], '3') self.assertEqual('fake-mini', migration.source_compute) self.assertEqual(old_vm_state, instance.vm_state) self.assertIsNone(instance.task_state) self.assertEqual(p_state, instance.power_state) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_confirm_resize_from_active(self): self._test_confirm_resize(power_on=True) def test_confirm_resize_from_stopped(self): self._test_confirm_resize(power_on=False) def _test_finish_revert_resize(self, power_on, remove_old_vm_state=False): """Convenience method that does most of the work for the test_finish_revert_resize tests. :param power_on -- True if testing resize from ACTIVE state, False if testing resize from STOPPED state. :param remove_old_vm_state -- True if testing a case where the 'old_vm_state' system_metadata is not present when the finish_revert_resize method is called. """ def fake(*args, **kwargs): pass def fake_finish_revert_migration_driver(*args, **kwargs): # Confirm the instance uses the old type in finish_revert_resize inst = args[1] sys_meta = inst.system_metadata self.assertEqual(sys_meta['instance_type_flavorid'], '1') old_vm_state = None if power_on: old_vm_state = vm_states.ACTIVE else: old_vm_state = vm_states.STOPPED params = {'vm_state': old_vm_state} instance = self._create_fake_instance_obj(params) self.stubs.Set(self.compute.driver, 'finish_migration', fake) self.stubs.Set(self.compute.driver, 'finish_revert_migration', fake_finish_revert_migration_driver) self._stub_out_resize_network_methods() reservations = self._ensure_quota_reservations_committed() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.refresh() instance_type_ref = db.flavor_get(self.context, instance.instance_type_id) self.assertEqual(instance_type_ref['flavorid'], '1') old_vm_state = instance['vm_state'] instance.host = 'foo' instance.vm_state = old_vm_state instance.save() new_instance_type_ref = db.flavor_get_by_flavor_id( self.context, 3) new_instance_type_p = jsonutils.to_primitive(new_instance_type_ref) self.compute.prep_resize(self.context, instance=instance, instance_type=new_instance_type_p, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') # NOTE(mriedem): ensure prep_resize set old_vm_state in system_metadata sys_meta = instance.system_metadata self.assertEqual(old_vm_state, sys_meta['old_vm_state']) instance.task_state = task_states.RESIZE_PREP instance.save() self.compute.resize_instance(self.context, instance=instance, migration=migration, image={}, reservations=[], instance_type=new_instance_type_p) self.compute.finish_resize(self.context, migration=migration, reservations=[], disk_info={}, image={}, instance=instance) # Prove that the instance size is now the new size instance_type_ref = db.flavor_get(self.context, instance['instance_type_id']) self.assertEqual(instance_type_ref['flavorid'], '3') instance.task_state = task_states.RESIZE_REVERTING instance.save() self.compute.revert_resize(self.context, migration=migration, instance=instance, reservations=reservations) instance.refresh() if remove_old_vm_state: # need to wipe out the old_vm_state from system_metadata # before calling finish_revert_resize sys_meta = instance.system_metadata sys_meta.pop('old_vm_state') # Have to reset for save() to work instance.system_metadata = sys_meta instance.save() self.compute.finish_revert_resize(self.context, migration=migration, instance=instance, reservations=reservations) self.assertIsNone(instance.task_state) instance_type_ref = db.flavor_get(self.context, instance['instance_type_id']) self.assertEqual(instance_type_ref['flavorid'], '1') self.assertEqual(instance.host, migration.source_compute) if remove_old_vm_state: self.assertEqual(vm_states.ACTIVE, instance.vm_state) else: self.assertEqual(old_vm_state, instance.vm_state) def test_finish_revert_resize_from_active(self): self._test_finish_revert_resize(power_on=True) def test_finish_revert_resize_from_stopped(self): self._test_finish_revert_resize(power_on=False) def test_finish_revert_resize_from_stopped_remove_old_vm_state(self): # in this case we resize from STOPPED but end up with ACTIVE # because the old_vm_state value is not present in # finish_revert_resize self._test_finish_revert_resize(power_on=False, remove_old_vm_state=True) def _test_cleanup_stored_instance_types(self, old, new, revert=False): instance = self._create_fake_instance_obj() migration = dict(old_instance_type_id=old, new_instance_type_id=new) instance.system_metadata = dict(instance_type_id=old) sys_meta = dict(instance.system_metadata) self.mox.StubOutWithMock(flavors, 'extract_flavor') self.mox.StubOutWithMock(flavors, 'delete_flavor_info') self.mox.StubOutWithMock(flavors, 'save_flavor_info') if revert: flavors.extract_flavor(instance, 'old_').AndReturn( {'instance_type_id': old}) flavors.save_flavor_info( sys_meta, {'instance_type_id': old}).AndReturn(sys_meta) else: flavors.extract_flavor(instance).AndReturn( {'instance_type_id': new}) flavors.delete_flavor_info( sys_meta, 'old_').AndReturn(sys_meta) flavors.delete_flavor_info( sys_meta, 'new_').AndReturn(sys_meta) self.mox.ReplayAll() res = self.compute._cleanup_stored_instance_types(migration, instance, revert) self.assertEqual(res, (sys_meta, {'instance_type_id': revert and old or new})) def test_cleanup_stored_instance_types_for_resize(self): self._test_cleanup_stored_instance_types('1', '2') def test_cleanup_stored_instance_types_for_resize_with_update(self): self._test_cleanup_stored_instance_types('1', '2', True) def test_cleanup_stored_instance_types_for_migration(self): self._test_cleanup_stored_instance_types('1', '1') def test_cleanup_stored_instance_types_for_migration_with_update(self): self._test_cleanup_stored_instance_types('1', '1', True) def test_get_by_flavor_id(self): type = flavors.get_flavor_by_flavor_id(1) self.assertEqual(type['name'], 'm1.tiny') def test_resize_same_source_fails(self): """Ensure instance fails to migrate when source and destination are the same host. """ reservations = self._ensure_quota_reservations_rolledback() instance = self._create_fake_instance_obj() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.refresh() instance_type = flavors.get_default_flavor() self.assertRaises(exception.MigrationError, self.compute.prep_resize, self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_resize_instance_handles_migration_error(self): # Ensure vm_state is ERROR when error occurs. def raise_migration_failure(*args): raise test.TestingException() self.stubs.Set(self.compute.driver, 'migrate_disk_and_power_off', raise_migration_failure) reservations = self._ensure_quota_reservations_rolledback() instance = self._create_fake_instance_obj() instance_type = flavors.get_default_flavor() instance_p = obj_base.obj_to_primitive(instance) self.compute.run_instance(self.context, instance_p, {}, {}, None, None, None, True, None, False) instance.host = 'foo' instance.save() self.compute.prep_resize(self.context, instance=instance, instance_type=instance_type, image={}, reservations=reservations, request_spec={}, filter_properties={}, node=None) migration = migration_obj.Migration.get_by_instance_and_status( self.context.elevated(), instance.uuid, 'pre-migrating') instance.task_state = task_states.RESIZE_PREP instance.save() self.assertRaises(test.TestingException, self.compute.resize_instance, self.context, instance=instance, migration=migration, image={}, reservations=reservations, instance_type=jsonutils.to_primitive(instance_type)) # NOTE(comstud): error path doesn't use objects, so our object # is not updated. Refresh and compare against the DB. instance.refresh() self.assertEqual(instance.vm_state, vm_states.ERROR) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def test_pre_live_migration_instance_has_no_fixed_ip(self): # Confirm that no exception is raised if there is no fixed ip on # pre_live_migration instance = self._create_fake_instance_obj() c = context.get_admin_context() self.mox.ReplayAll() self.compute.driver.pre_live_migration(mox.IsA(c), mox.IsA(instance), {'block_device_mapping': []}, mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) def test_pre_live_migration_works_correctly(self): # Confirm setup_compute_volume is called when volume is mounted. def stupid(*args, **kwargs): return fake_network.fake_get_instance_nw_info(self.stubs) self.stubs.Set(nova.compute.manager.ComputeManager, '_get_instance_nw_info', stupid) # creating instance testdata instance = self._create_fake_instance_obj({'host': 'dummy'}) c = context.get_admin_context() nw_info = fake_network.fake_get_instance_nw_info(self.stubs) # creating mocks self.mox.StubOutWithMock(self.compute.driver, 'pre_live_migration') self.compute.driver.pre_live_migration(mox.IsA(c), mox.IsA(instance), {'block_device_mapping': []}, mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.StubOutWithMock(self.compute.driver, 'ensure_filtering_rules_for_instance') self.compute.driver.ensure_filtering_rules_for_instance( mox.IsA(instance), nw_info) self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') self.compute.network_api.setup_networks_on_host(c, instance, self.compute.host) fake_notifier.NOTIFICATIONS = [] # start test self.mox.ReplayAll() migrate_data = {'is_shared_storage': False} ret = self.compute.pre_live_migration(c, instance=instance, block_migration=False, disk=None, migrate_data=migrate_data) self.assertIsNone(ret) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.live_migration.pre.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.live_migration.pre.end') # cleanup db.instance_destroy(c, instance['uuid']) def test_live_migration_exception_rolls_back(self): # Confirm exception when pre_live_migration fails. c = context.get_admin_context() src_host = 'fake-src-host' instance = dict(uuid='fake_instance', host=src_host, name='fake-name') updated_instance = self._create_fake_instance_obj( {'host': 'fake-dest-host'}) dest_host = updated_instance['host'] fake_bdms = [ block_device_obj.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( {'volume_id': 'vol1-id', 'source_type': 'volume', 'destination_type': 'volume'})), block_device_obj.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( {'volume_id': 'vol2-id', 'source_type': 'volume', 'destination_type': 'volume'})) ] # creating mocks self.mox.StubOutWithMock(self.compute.driver, 'get_instance_disk_info') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'pre_live_migration') self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'remove_volume_connection') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'rollback_live_migration_at_destination') self.compute.driver.get_instance_disk_info( instance['name']).AndReturn('fake_disk') self.compute.compute_rpcapi.pre_live_migration(c, instance, True, 'fake_disk', dest_host, {}).AndRaise(test.TestingException()) self.compute._instance_update(c, instance['uuid'], host=src_host, vm_state=vm_states.ACTIVE, task_state=None, expected_task_state=task_states.MIGRATING).AndReturn( updated_instance) self.compute.network_api.setup_networks_on_host(c, updated_instance, self.compute.host) block_device_obj.BlockDeviceMappingList.get_by_instance_uuid(c, updated_instance['uuid']).AndReturn(fake_bdms) self.compute.compute_rpcapi.remove_volume_connection( c, updated_instance, 'vol1-id', dest_host) self.compute.compute_rpcapi.remove_volume_connection( c, updated_instance, 'vol2-id', dest_host) self.compute.compute_rpcapi.rollback_live_migration_at_destination( c, updated_instance, dest_host) # start test self.mox.ReplayAll() self.assertRaises(test.TestingException, self.compute.live_migration, c, dest=dest_host, block_migration=True, instance=instance, migrate_data={}) def test_live_migration_works_correctly(self): # Confirm live_migration() works as expected correctly. # creating instance testdata c = context.get_admin_context() instance = self._objectify(self._create_fake_instance_obj()) instance.host = self.compute.host dest = 'desthost' migrate_data = {'is_shared_storage': False} self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'pre_live_migration') self.compute.compute_rpcapi.pre_live_migration( c, instance, False, None, dest, migrate_data) self.mox.StubOutWithMock(self.compute.conductor_api, 'network_migrate_instance_start') migration = {'source_compute': instance['host'], 'dest_compute': dest} self.compute.conductor_api.network_migrate_instance_start(c, instance, migration) self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'post_live_migration_at_destination') self.compute.compute_rpcapi.post_live_migration_at_destination( c, instance, False, dest) self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') self.compute.network_api.setup_networks_on_host(c, instance, instance['host'], teardown=True) self.mox.StubOutWithMock(self.compute.instance_events, 'clear_events_for_instance') self.compute.instance_events.clear_events_for_instance( mox.IgnoreArg()) # start test self.mox.ReplayAll() ret = self.compute.live_migration(c, dest=dest, instance=instance, block_migration=False, migrate_data=migrate_data) self.assertIsNone(ret) # cleanup instance.destroy(c) def test_post_live_migration_no_shared_storage_working_correctly(self): """Confirm post_live_migration() works correctly as expected for non shared storage migration. """ # Create stubs result = {} # No share storage live migration don't need to destroy at source # server because instance has been migrated to destination, but a # cleanup for block device and network are needed. def fakecleanup(*args, **kwargs): result['cleanup'] = True self.stubs.Set(self.compute.driver, 'cleanup', fakecleanup) dest = 'desthost' srchost = self.compute.host # creating testdata c = context.get_admin_context() inst_ref = jsonutils.to_primitive(self._create_fake_instance({ 'host': srchost, 'state_description': 'migrating', 'state': power_state.PAUSED})) inst_uuid = inst_ref['uuid'] db.instance_update(c, inst_uuid, {'task_state': task_states.MIGRATING, 'power_state': power_state.PAUSED}) # creating mocks self.mox.StubOutWithMock(self.compute.driver, 'unfilter_instance') self.compute.driver.unfilter_instance(inst_ref, []) self.mox.StubOutWithMock(self.compute.conductor_api, 'network_migrate_instance_start') migration = {'source_compute': srchost, 'dest_compute': dest, } self.compute.conductor_api.network_migrate_instance_start(c, inst_ref, migration) self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'post_live_migration_at_destination') self.compute.compute_rpcapi.post_live_migration_at_destination( c, inst_ref, False, dest) self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') self.compute.network_api.setup_networks_on_host(c, inst_ref, self.compute.host, teardown=True) self.mox.StubOutWithMock(self.compute.instance_events, 'clear_events_for_instance') self.compute.instance_events.clear_events_for_instance( mox.IgnoreArg()) # start test self.mox.ReplayAll() migrate_data = {'is_shared_storage': False} self.compute._post_live_migration(c, inst_ref, dest, migrate_data=migrate_data) self.assertIn('cleanup', result) self.assertEqual(result['cleanup'], True) def test_post_live_migration_working_correctly(self): # Confirm post_live_migration() works as expected correctly. dest = 'desthost' srchost = self.compute.host # creating testdata c = context.get_admin_context() instance = self._objectify(self._create_fake_instance({ 'host': srchost, 'state_description': 'migrating', 'state': power_state.PAUSED})) instance.update({'task_state': task_states.MIGRATING, 'power_state': power_state.PAUSED}) instance.save(c) # creating mocks with contextlib.nested( mock.patch.object(self.compute.driver, 'post_live_migration'), mock.patch.object(self.compute.driver, 'unfilter_instance'), mock.patch.object(self.compute.conductor_api, 'network_migrate_instance_start'), mock.patch.object(self.compute.compute_rpcapi, 'post_live_migration_at_destination'), mock.patch.object(self.compute.driver, 'unplug_vifs'), mock.patch.object(self.compute.network_api, 'setup_networks_on_host'), mock.patch.object(self.compute.instance_events, 'clear_events_for_instance') ) as ( post_live_migration, unfilter_instance, network_migrate_instance_start, post_live_migration_at_destination, unplug_vifs, setup_networks_on_host, clear_events ): self.compute._post_live_migration(c, instance, dest) post_live_migration.assert_has_calls([ mock.call(c, instance, {'block_device_mapping': []}, None)]) unfilter_instance.assert_has_calls([mock.call(instance, [])]) migration = {'source_compute': srchost, 'dest_compute': dest, } network_migrate_instance_start.assert_has_calls([ mock.call(c, instance, migration)]) post_live_migration_at_destination.assert_has_calls([ mock.call(c, instance, False, dest)]) unplug_vifs.assert_has_calls([mock.call(instance, [])]) setup_networks_on_host.assert_has_calls([ mock.call(c, instance, self.compute.host, teardown=True)]) clear_events.assert_called_once_with(instance) def test_post_live_migration_terminate_volume_connections(self): c = context.get_admin_context() instance = self._objectify(self._create_fake_instance({ 'host': self.compute.host, 'state_description': 'migrating', 'state': power_state.PAUSED})) instance.update({'task_state': task_states.MIGRATING, 'power_state': power_state.PAUSED}) instance.save(c) bdms = block_device_obj.block_device_make_list(c, [fake_block_device.FakeDbBlockDeviceDict({ 'source_type': 'blank', 'guest_format': None, 'destination_type': 'local'}), fake_block_device.FakeDbBlockDeviceDict({ 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'fake-volume-id'}), ]) with contextlib.nested( mock.patch.object(self.compute.conductor_api, 'network_migrate_instance_start'), mock.patch.object(self.compute.compute_rpcapi, 'post_live_migration_at_destination'), mock.patch.object(self.compute.network_api, 'setup_networks_on_host'), mock.patch.object(self.compute.instance_events, 'clear_events_for_instance'), mock.patch.object(self.compute, '_get_instance_volume_block_device_info'), mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid'), mock.patch.object(self.compute.driver, 'get_volume_connector'), mock.patch.object(cinder.API, 'terminate_connection') ) as ( network_migrate_instance_start, post_live_migration_at_destination, setup_networks_on_host, clear_events_for_instance, get_instance_volume_block_device_info, get_by_instance_uuid, get_volume_connector, terminate_connection ): get_by_instance_uuid.return_value = bdms get_volume_connector.return_value = 'fake-connector' self.compute._post_live_migration(c, instance, 'dest_host') terminate_connection.assert_called_once_with( c, 'fake-volume-id', 'fake-connector') def _begin_post_live_migration_at_destination(self): self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') self.mox.StubOutWithMock(self.compute.conductor_api, 'network_migrate_instance_finish') self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(self.compute, '_get_compute_info') params = {'task_state': task_states.MIGRATING, 'power_state': power_state.PAUSED, } self.instance = jsonutils.to_primitive( self._create_fake_instance(params)) self.admin_ctxt = context.get_admin_context() self.instance = instance_obj.Instance._from_db_object(self.context, instance_obj.Instance(), db.instance_get_by_uuid(self.admin_ctxt, self.instance['uuid'])) self.compute.network_api.setup_networks_on_host(self.admin_ctxt, self.instance, self.compute.host) migration = {'source_compute': self.instance['host'], 'dest_compute': self.compute.host, } self.compute.conductor_api.network_migrate_instance_finish( self.admin_ctxt, self.instance, migration) fake_net_info = [] fake_block_dev_info = {'foo': 'bar'} self.compute.driver.post_live_migration_at_destination(self.admin_ctxt, self.instance, fake_net_info, False, fake_block_dev_info) self.compute._get_power_state(self.admin_ctxt, self.instance).AndReturn(10001) def _finish_post_live_migration_at_destination(self): self.compute.network_api.setup_networks_on_host(self.admin_ctxt, mox.IgnoreArg(), self.compute.host) fake_notifier.NOTIFICATIONS = [] self.mox.ReplayAll() self.compute.post_live_migration_at_destination(self.admin_ctxt, self.instance, False) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.live_migration.post.dest.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.live_migration.post.dest.end') return self.compute.conductor_api.instance_get_by_uuid(self.admin_ctxt, self.instance['uuid']) def test_post_live_migration_at_destination_with_compute_info(self): """The instance's node property should be updated correctly.""" self._begin_post_live_migration_at_destination() hypervisor_hostname = 'fake_hypervisor_hostname' fake_compute_info = {'hypervisor_hostname': hypervisor_hostname} self.compute._get_compute_info(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn( fake_compute_info) updated = self._finish_post_live_migration_at_destination() self.assertEqual(updated['node'], hypervisor_hostname) def test_post_live_migration_at_destination_without_compute_info(self): """The instance's node property should be set to None if we fail to get compute_info. """ self._begin_post_live_migration_at_destination() self.compute._get_compute_info(mox.IgnoreArg(), mox.IgnoreArg()).AndRaise( exception.NotFound()) updated = self._finish_post_live_migration_at_destination() self.assertIsNone(updated['node']) def test_rollback_live_migration_at_destination_correctly(self): # creating instance testdata c = context.get_admin_context() instance_ref = self._create_fake_instance({'host': 'dummy'}) inst_uuid = instance_ref['uuid'] inst_id = instance_ref['id'] instance = jsonutils.to_primitive(db.instance_get(c, inst_id)) fake_notifier.NOTIFICATIONS = [] self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') self.compute.network_api.setup_networks_on_host(c, instance, self.compute.host, teardown=True) self.mox.StubOutWithMock(self.compute.driver, 'rollback_live_migration_at_destination') self.compute.driver.rollback_live_migration_at_destination(c, instance, [], {'block_device_mapping': []}) # start test self.mox.ReplayAll() ret = self.compute.rollback_live_migration_at_destination(c, instance=instance) self.assertIsNone(ret) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'compute.instance.live_migration.rollback.dest.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'compute.instance.live_migration.rollback.dest.end') # cleanup db.instance_destroy(c, inst_uuid) def test_run_kill_vm(self): # Detect when a vm is terminated behind the scenes. instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) instances = db.instance_get_all(self.context) LOG.info(_("Running instances: %s"), instances) self.assertEqual(len(instances), 1) instance_name = instances[0]['name'] self.compute.driver.test_remove_vm(instance_name) # Force the compute manager to do its periodic poll ctxt = context.get_admin_context() self.compute._sync_power_states(ctxt) instances = db.instance_get_all(self.context) LOG.info(_("After force-killing instances: %s"), instances) self.assertEqual(len(instances), 1) self.assertIsNone(instances[0]['task_state']) def test_add_instance_fault(self): instance = self._create_fake_instance() exc_info = None def fake_db_fault_create(ctxt, values): self.assertIn('raise NotImplementedError', values['details']) del values['details'] expected = { 'code': 500, 'message': 'test', 'instance_uuid': instance['uuid'], 'host': self.compute.host } self.assertEqual(expected, values) try: raise NotImplementedError('test') except NotImplementedError: exc_info = sys.exc_info() self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create) ctxt = context.get_admin_context() compute_utils.add_instance_fault_from_exc(ctxt, self.compute.conductor_api, instance, NotImplementedError('test'), exc_info) def test_add_instance_fault_with_remote_error(self): instance = self._create_fake_instance() exc_info = None def fake_db_fault_create(ctxt, values): self.assertTrue('raise messaging.RemoteError' in values['details']) del values['details'] expected = { 'code': 500, 'instance_uuid': instance['uuid'], 'message': 'Remote error: test My Test Message\nNone.', 'host': self.compute.host } self.assertEqual(expected, values) try: raise messaging.RemoteError('test', 'My Test Message') except messaging.RemoteError as exc: exc_info = sys.exc_info() self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create) ctxt = context.get_admin_context() compute_utils.add_instance_fault_from_exc(ctxt, self.compute.conductor_api, instance, exc, exc_info) def test_add_instance_fault_user_error(self): instance = self._create_fake_instance() exc_info = None def fake_db_fault_create(ctxt, values): expected = { 'code': 400, 'message': 'fake details', 'details': '', 'instance_uuid': instance['uuid'], 'host': self.compute.host } self.assertEqual(expected, values) user_exc = exception.Invalid('fake details', code=400) try: raise user_exc except exception.Invalid: exc_info = sys.exc_info() self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create) ctxt = context.get_admin_context() compute_utils.add_instance_fault_from_exc(ctxt, self.compute.conductor_api, instance, user_exc, exc_info) def test_add_instance_fault_no_exc_info(self): instance = self._create_fake_instance() def fake_db_fault_create(ctxt, values): expected = { 'code': 500, 'message': 'test', 'details': '', 'instance_uuid': instance['uuid'], 'host': self.compute.host } self.assertEqual(expected, values) self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create) ctxt = context.get_admin_context() compute_utils.add_instance_fault_from_exc(ctxt, self.compute.conductor_api, instance, NotImplementedError('test')) def test_add_instance_fault_long_message(self): instance = self._create_fake_instance() message = 300 * 'a' def fake_db_fault_create(ctxt, values): expected = { 'code': 500, 'message': message[:255], 'details': '', 'instance_uuid': instance['uuid'], 'host': self.compute.host } self.assertEqual(expected, values) self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create) ctxt = context.get_admin_context() compute_utils.add_instance_fault_from_exc(ctxt, self.compute.conductor_api, instance, NotImplementedError(message)) def _test_cleanup_running(self, action): admin_context = context.get_admin_context() deleted_at = (timeutils.utcnow() - datetime.timedelta(hours=1, minutes=5)) instance1 = self._create_fake_instance({"deleted_at": deleted_at, "deleted": True}) instance2 = self._create_fake_instance({"deleted_at": deleted_at, "deleted": True}) self.mox.StubOutWithMock(self.compute, '_get_instances_on_driver') self.compute._get_instances_on_driver( admin_context, {'deleted': True, 'soft_deleted': False, 'host': self.compute.host}).AndReturn([instance1, instance2]) self.flags(running_deleted_instance_timeout=3600, running_deleted_instance_action=action) return admin_context, instance1, instance2 def test_cleanup_running_deleted_instances_unrecognized_value(self): admin_context = context.get_admin_context() deleted_at = (timeutils.utcnow() - datetime.timedelta(hours=1, minutes=5)) instance = self._create_fake_instance({"deleted_at": deleted_at, "deleted": True}) self.flags(running_deleted_instance_action='foo-action') with mock.patch.object( self.compute, '_get_instances_on_driver', return_value=[instance]) as _get_instances_on_driver: try: # We cannot simply use an assertRaises here because the # exception raised is too generally "Exception". To be sure # that the exception raised is the expected one, we check # the message. self.compute._cleanup_running_deleted_instances(admin_context) self.fail("Be sure this will never be executed.") except Exception as e: self.assertIn("Unrecognized value", six.text_type(e)) def test_cleanup_running_deleted_instances_reap(self): ctxt, inst1, inst2 = self._test_cleanup_running('reap') bdms = block_device_obj.block_device_make_list(ctxt, []) self.mox.StubOutWithMock(self.compute, "_shutdown_instance") self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, "get_by_instance_uuid") # Simulate an error and make sure cleanup proceeds with next instance. self.compute._shutdown_instance(ctxt, inst1, bdms, notify=False).\ AndRaise(test.TestingException) block_device_obj.BlockDeviceMappingList.get_by_instance_uuid(ctxt, inst1.uuid, use_slave=True).AndReturn(bdms) block_device_obj.BlockDeviceMappingList.get_by_instance_uuid(ctxt, inst2.uuid, use_slave=True).AndReturn(bdms) self.compute._shutdown_instance(ctxt, inst2, bdms, notify=False).\ AndReturn(None) self.mox.StubOutWithMock(self.compute, "_cleanup_volumes") self.compute._cleanup_volumes(ctxt, inst1['uuid'], bdms).\ AndReturn(None) self.mox.ReplayAll() self.compute._cleanup_running_deleted_instances(ctxt) def test_cleanup_running_deleted_instances_shutdown(self): ctxt, inst1, inst2 = self._test_cleanup_running('shutdown') self.mox.StubOutWithMock(self.compute.driver, 'set_bootable') self.mox.StubOutWithMock(self.compute.driver, 'power_off') self.compute.driver.set_bootable(inst1, False) self.compute.driver.power_off(inst1) self.compute.driver.set_bootable(inst2, False) self.compute.driver.power_off(inst2) self.mox.ReplayAll() self.compute._cleanup_running_deleted_instances(ctxt) def test_cleanup_running_deleted_instances_shutdown_notimpl(self): ctxt, inst1, inst2 = self._test_cleanup_running('shutdown') self.mox.StubOutWithMock(self.compute.driver, 'set_bootable') self.mox.StubOutWithMock(self.compute.driver, 'power_off') self.compute.driver.set_bootable(inst1, False).AndRaise( NotImplementedError) compute_manager.LOG.warn(mox.IgnoreArg()) self.compute.driver.power_off(inst1) self.compute.driver.set_bootable(inst2, False).AndRaise( NotImplementedError) compute_manager.LOG.warn(mox.IgnoreArg()) self.compute.driver.power_off(inst2) self.mox.ReplayAll() self.compute._cleanup_running_deleted_instances(ctxt) def test_cleanup_running_deleted_instances_shutdown_error(self): ctxt, inst1, inst2 = self._test_cleanup_running('shutdown') self.mox.StubOutWithMock(self.compute.driver, 'set_bootable') self.mox.StubOutWithMock(self.compute.driver, 'power_off') self.mox.StubOutWithMock(compute_manager.LOG, 'exception') e = test.TestingException('bad') self.compute.driver.set_bootable(inst1, False) self.compute.driver.power_off(inst1).AndRaise(e) compute_manager.LOG.warn(mox.IgnoreArg()) self.compute.driver.set_bootable(inst2, False) self.compute.driver.power_off(inst2).AndRaise(e) compute_manager.LOG.warn(mox.IgnoreArg()) self.mox.ReplayAll() self.compute._cleanup_running_deleted_instances(ctxt) def test_running_deleted_instances(self): admin_context = context.get_admin_context() self.compute.host = 'host' instance1 = {} instance1['deleted'] = True instance1['deleted_at'] = "sometimeago" self.mox.StubOutWithMock(self.compute, '_get_instances_on_driver') self.compute._get_instances_on_driver( admin_context, {'deleted': True, 'soft_deleted': False, 'host': self.compute.host}).AndReturn([instance1]) self.mox.StubOutWithMock(timeutils, 'is_older_than') timeutils.is_older_than('sometimeago', CONF.running_deleted_instance_timeout).AndReturn(True) self.mox.ReplayAll() val = self.compute._running_deleted_instances(admin_context) self.assertEqual(val, [instance1]) def test_get_instance_nw_info(self): fake_network.unset_stub_network_methods(self.stubs) fake_inst = fake_instance.fake_db_instance(uuid='fake-instance') fake_nw_info = network_model.NetworkInfo() self.mox.StubOutWithMock(self.compute.network_api, 'get_instance_nw_info') self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_inst['uuid'] ).AndReturn(fake_inst) # NOTE(danms): compute manager will re-query since we're not giving # it an instance with system_metadata. We're stubbing out the # subsequent call so we don't need it, but keep this to make sure it # does the right thing. db.instance_get_by_uuid(self.context, fake_inst['uuid'], columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) self.compute.network_api.get_instance_nw_info(self.context, mox.IsA(instance_obj.Instance)).AndReturn(fake_nw_info) self.mox.ReplayAll() fake_inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), fake_inst, []) result = self.compute._get_instance_nw_info(self.context, fake_inst_obj) self.assertEqual(fake_nw_info, result) def test_heal_instance_info_cache(self): # Update on every call for the test self.flags(heal_instance_info_cache_interval=-1) ctxt = context.get_admin_context() instance_map = {} instances = [] for x in xrange(8): inst_uuid = 'fake-uuid-%s' % x instance_map[inst_uuid] = fake_instance.fake_db_instance( uuid=inst_uuid, host=CONF.host, created_at=None) # These won't be in our instance since they're not requested instances.append(instance_map[inst_uuid]) call_info = {'get_all_by_host': 0, 'get_by_uuid': 0, 'get_nw_info': 0, 'expected_instance': None} def fake_instance_get_all_by_host(context, host, columns_to_join, use_slave=False): call_info['get_all_by_host'] += 1 self.assertEqual([], columns_to_join) return instances[:] def fake_instance_get_by_uuid(context, instance_uuid, columns_to_join, use_slave=False): if instance_uuid not in instance_map: raise exception.InstanceNotFound(instance_id=instance_uuid) call_info['get_by_uuid'] += 1 self.assertEqual(['system_metadata'], columns_to_join) return instance_map[instance_uuid] # NOTE(comstud): Override the stub in setUp() def fake_get_instance_nw_info(context, instance, use_slave=False): # Note that this exception gets caught in compute/manager # and is ignored. However, the below increment of # 'get_nw_info' won't happen, and you'll get an assert # failure checking it below. self.assertEqual(call_info['expected_instance']['uuid'], instance['uuid']) call_info['get_nw_info'] += 1 self.stubs.Set(db, 'instance_get_all_by_host', fake_instance_get_all_by_host) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(self.compute, '_get_instance_nw_info', fake_get_instance_nw_info) # Make an instance appear to be still Building instances[0]['vm_state'] = vm_states.BUILDING # Make an instance appear to be Deleting instances[1]['task_state'] = task_states.DELETING # '0', '1' should be skipped.. call_info['expected_instance'] = instances[2] self.compute._heal_instance_info_cache(ctxt) self.assertEqual(1, call_info['get_all_by_host']) self.assertEqual(0, call_info['get_by_uuid']) self.assertEqual(1, call_info['get_nw_info']) call_info['expected_instance'] = instances[3] self.compute._heal_instance_info_cache(ctxt) self.assertEqual(1, call_info['get_all_by_host']) self.assertEqual(1, call_info['get_by_uuid']) self.assertEqual(2, call_info['get_nw_info']) # Make an instance switch hosts instances[4]['host'] = 'not-me' # Make an instance disappear instance_map.pop(instances[5]['uuid']) # Make an instance switch to be Deleting instances[6]['task_state'] = task_states.DELETING # '4', '5', and '6' should be skipped.. call_info['expected_instance'] = instances[7] self.compute._heal_instance_info_cache(ctxt) self.assertEqual(1, call_info['get_all_by_host']) self.assertEqual(4, call_info['get_by_uuid']) self.assertEqual(3, call_info['get_nw_info']) # Should be no more left. self.assertEqual(0, len(self.compute._instance_uuids_to_heal)) # This should cause a DB query now, so get a list of instances # where none can be processed to make sure we handle that case # cleanly. Use just '0' (Building) and '1' (Deleting) instances = instances[0:2] self.compute._heal_instance_info_cache(ctxt) # Should have called the list once more self.assertEqual(2, call_info['get_all_by_host']) # Stays the same because we remove invalid entries from the list self.assertEqual(4, call_info['get_by_uuid']) # Stays the same because we didn't find anything to process self.assertEqual(3, call_info['get_nw_info']) def test_poll_rescued_instances(self): timed_out_time = timeutils.utcnow() - datetime.timedelta(minutes=5) not_timed_out_time = timeutils.utcnow() instances = [{'uuid': 'fake_uuid1', 'vm_state': vm_states.RESCUED, 'launched_at': timed_out_time}, {'uuid': 'fake_uuid2', 'vm_state': vm_states.RESCUED, 'launched_at': timed_out_time}, {'uuid': 'fake_uuid3', 'vm_state': vm_states.RESCUED, 'launched_at': not_timed_out_time}] unrescued_instances = {'fake_uuid1': False, 'fake_uuid2': False} def fake_instance_get_all_by_filters(context, filters, columns_to_join, use_slave=False): self.assertEqual(columns_to_join, ["system_metadata"]) return instances def fake_unrescue(context, instance): unrescued_instances[instance['uuid']] = True self.stubs.Set(self.compute.conductor_api, 'instance_get_all_by_filters', fake_instance_get_all_by_filters) self.stubs.Set(self.compute.conductor_api, 'compute_unrescue', fake_unrescue) self.flags(rescue_timeout=60) ctxt = context.get_admin_context() self.compute._poll_rescued_instances(ctxt) for instance in unrescued_instances.values(): self.assertTrue(instance) def test_poll_unconfirmed_resizes(self): instances = [ fake_instance.fake_db_instance(uuid='fake_uuid1', vm_state=vm_states.RESIZED, task_state=None), fake_instance.fake_db_instance(uuid='noexist'), fake_instance.fake_db_instance(uuid='fake_uuid2', vm_state=vm_states.ERROR, task_state=None), fake_instance.fake_db_instance(uuid='fake_uuid3', vm_state=vm_states.ACTIVE, task_state= task_states.REBOOTING), fake_instance.fake_db_instance(uuid='fake_uuid4', vm_state=vm_states.RESIZED, task_state=None), fake_instance.fake_db_instance(uuid='fake_uuid5', vm_state=vm_states.ACTIVE, task_state=None), fake_instance.fake_db_instance(uuid='fake_uuid6', vm_state=vm_states.RESIZED, task_state='deleting')] expected_migration_status = {'fake_uuid1': 'confirmed', 'noexist': 'error', 'fake_uuid2': 'error', 'fake_uuid3': 'error', 'fake_uuid4': None, 'fake_uuid5': 'error', 'fake_uuid6': 'error'} migrations = [] for i, instance in enumerate(instances, start=1): fake_mig = test_migration.fake_db_migration() fake_mig.update({'id': i, 'instance_uuid': instance['uuid'], 'status': None}) migrations.append(fake_mig) def fake_instance_get_by_uuid(context, instance_uuid, columns_to_join=None, use_slave=False): self.assertIn('metadata', columns_to_join) self.assertIn('system_metadata', columns_to_join) # raise InstanceNotFound exception for uuid 'noexist' if instance_uuid == 'noexist': raise exception.InstanceNotFound(instance_id=instance_uuid) for instance in instances: if instance['uuid'] == instance_uuid: return instance def fake_migration_get_unconfirmed_by_dest_compute(context, resize_confirm_window, dest_compute, use_slave=False): self.assertEqual(dest_compute, CONF.host) return migrations def fake_migration_update(context, mid, updates): for migration in migrations: if migration['id'] == mid: migration.update(updates) return migration def fake_confirm_resize(context, instance, migration=None): # raise exception for 'fake_uuid4' to check migration status # does not get set to 'error' on confirm_resize failure. if instance['uuid'] == 'fake_uuid4': raise test.TestingException('bomb') self.assertIsNotNone(migration) for migration2 in migrations: if (migration2['instance_uuid'] == migration['instance_uuid']): migration2['status'] = 'confirmed' self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(db, 'migration_get_unconfirmed_by_dest_compute', fake_migration_get_unconfirmed_by_dest_compute) self.stubs.Set(db, 'migration_update', fake_migration_update) self.stubs.Set(self.compute.compute_api, 'confirm_resize', fake_confirm_resize) def fetch_instance_migration_status(instance_uuid): for migration in migrations: if migration['instance_uuid'] == instance_uuid: return migration['status'] self.flags(resize_confirm_window=60) ctxt = context.get_admin_context() self.compute._poll_unconfirmed_resizes(ctxt) for uuid, status in expected_migration_status.iteritems(): self.assertEqual(status, fetch_instance_migration_status(uuid)) def test_instance_build_timeout_disabled(self): # Tests that no instances are set to error state when there is no # instance_build_timeout configured. self.flags(instance_build_timeout=0) ctxt = context.get_admin_context() created_at = timeutils.utcnow() + datetime.timedelta(seconds=-60) filters = {'vm_state': vm_states.BUILDING, 'host': CONF.host} instances = [] for x in xrange(5): instance = {'uuid': str(uuid.uuid4()), 'created_at': created_at} instance.update(filters) instances.append(instance) # creating mocks with mock.patch.object(self.compute.conductor_api, 'instance_get_all_by_filters', return_value=instances) as ( instance_get_all_by_filters ): # run the code self.compute._check_instance_build_time(ctxt) # check our assertions self.assertThat(instance_get_all_by_filters.mock_calls, testtools_matchers.HasLength(0)) def test_instance_build_timeout_mixed_instances(self): # Tests that instances which failed to build within the configured # instance_build_timeout value are set to error state. self.flags(instance_build_timeout=30) ctxt = context.get_admin_context() created_at = timeutils.utcnow() + datetime.timedelta(seconds=-60) filters = {'vm_state': vm_states.BUILDING, 'host': CONF.host} # these are the ones that are expired old_instances = [] for x in xrange(4): instance = {'uuid': str(uuid.uuid4()), 'created_at': created_at} instance.update(filters) old_instances.append(fake_instance.fake_db_instance(**instance)) #not expired instances = list(old_instances) # copy the contents of old_instances new_instance = { 'uuid': str(uuid.uuid4()), 'created_at': timeutils.utcnow(), } sort_key = 'created_at' sort_dir = 'desc' new_instance.update(filters) instances.append(fake_instance.fake_db_instance(**new_instance)) # need something to return from conductor_api.instance_update # that is defined outside the for loop and can be used in the mock # context fake_instance_ref = {'host': CONF.host, 'node': 'fake'} # creating mocks with contextlib.nested( mock.patch.object(self.compute.db.sqlalchemy.api, 'instance_get_all_by_filters', return_value=instances), mock.patch.object(self.compute.conductor_api, 'instance_update', return_value=fake_instance_ref), mock.patch.object(self.compute.driver, 'node_is_available', return_value=False) ) as ( instance_get_all_by_filters, conductor_instance_update, node_is_available ): # run the code self.compute._check_instance_build_time(ctxt) # check our assertions instance_get_all_by_filters.assert_called_once_with( ctxt, filters, sort_key, sort_dir, marker=None, columns_to_join=[], use_slave=True, limit=None) self.assertThat(conductor_instance_update.mock_calls, testtools_matchers.HasLength(len(old_instances))) self.assertThat(node_is_available.mock_calls, testtools_matchers.HasLength(len(old_instances))) for inst in old_instances: conductor_instance_update.assert_has_calls([ mock.call(ctxt, inst['uuid'], vm_state=vm_states.ERROR)]) node_is_available.assert_has_calls([ mock.call(fake_instance_ref['node'])]) def test_get_resource_tracker_fail(self): self.assertRaises(exception.NovaException, self.compute._get_resource_tracker, 'invalidnodename') def test_instance_update_host_check(self): # make sure rt usage doesn't happen if the host or node is different def fail_get(nodename): raise test.TestingException(_("wrong host/node")) self.stubs.Set(self.compute, '_get_resource_tracker', fail_get) instance = self._create_fake_instance({'host': 'someotherhost'}) self.compute._instance_update(self.context, instance['uuid']) instance = self._create_fake_instance({'node': 'someothernode'}) self.compute._instance_update(self.context, instance['uuid']) params = {'host': 'someotherhost', 'node': 'someothernode'} instance = self._create_fake_instance(params) self.compute._instance_update(self.context, instance['uuid']) def test_destroy_evacuated_instance_on_shared_storage(self): fake_context = context.get_admin_context() # instances in central db instances = [ # those are still related to this host self._create_fake_instance_obj( {'host': self.compute.host}), self._create_fake_instance_obj( {'host': self.compute.host}), self._create_fake_instance_obj( {'host': self.compute.host}) ] # those are already been evacuated to other host evacuated_instance = self._create_fake_instance_obj( {'host': 'otherhost'}) instances.append(evacuated_instance) self.mox.StubOutWithMock(self.compute, '_get_instances_on_driver') self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(self.compute, '_is_instance_storage_shared') self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.compute._get_instances_on_driver( fake_context, {'deleted': False}).AndReturn(instances) self.compute._get_instance_nw_info(fake_context, evacuated_instance).AndReturn( 'fake_network_info') self.compute._get_instance_volume_block_device_info( fake_context, evacuated_instance).AndReturn('fake_bdi') self.compute._is_instance_storage_shared(fake_context, evacuated_instance).AndReturn(True) self.compute.driver.destroy(fake_context, evacuated_instance, 'fake_network_info', 'fake_bdi', False) self.mox.ReplayAll() self.compute._destroy_evacuated_instances(fake_context) def test_destroy_evacuated_instance_with_disks(self): fake_context = context.get_admin_context() # instances in central db instances = [ # those are still related to this host self._create_fake_instance_obj( {'host': self.compute.host}), self._create_fake_instance( {'host': self.compute.host}), self._create_fake_instance( {'host': self.compute.host}) ] # those are already been evacuated to other host evacuated_instance = self._create_fake_instance_obj( {'host': 'otherhost'}) instances.append(evacuated_instance) self.mox.StubOutWithMock(self.compute, '_get_instances_on_driver') self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(self.compute.driver, 'check_instance_shared_storage_local') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'check_instance_shared_storage') self.mox.StubOutWithMock(self.compute.driver, 'check_instance_shared_storage_cleanup') self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.compute._get_instances_on_driver( fake_context, {'deleted': False}).AndReturn(instances) self.compute._get_instance_nw_info(fake_context, evacuated_instance).AndReturn( 'fake_network_info') self.compute._get_instance_volume_block_device_info( fake_context, evacuated_instance).AndReturn('fake_bdi') self.compute.driver.check_instance_shared_storage_local(fake_context, evacuated_instance).AndReturn({'filename': 'tmpfilename'}) self.compute.compute_rpcapi.check_instance_shared_storage(fake_context, obj_base.obj_to_primitive(evacuated_instance), {'filename': 'tmpfilename'}).AndReturn(False) self.compute.driver.check_instance_shared_storage_cleanup(fake_context, {'filename': 'tmpfilename'}) self.compute.driver.destroy(fake_context, evacuated_instance, 'fake_network_info', 'fake_bdi', True) self.mox.ReplayAll() self.compute._destroy_evacuated_instances(fake_context) def test_destroy_evacuated_instance_not_implemented(self): fake_context = context.get_admin_context() # instances in central db instances = [ # those are still related to this host self._create_fake_instance_obj( {'host': self.compute.host}), self._create_fake_instance_obj( {'host': self.compute.host}), self._create_fake_instance_obj( {'host': self.compute.host}) ] # those are already been evacuated to other host evacuated_instance = self._create_fake_instance_obj( {'host': 'otherhost'}) instances.append(evacuated_instance) self.mox.StubOutWithMock(self.compute, '_get_instances_on_driver') self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(self.compute.driver, 'check_instance_shared_storage_local') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'check_instance_shared_storage') self.mox.StubOutWithMock(self.compute.driver, 'check_instance_shared_storage_cleanup') self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.compute._get_instances_on_driver( fake_context, {'deleted': False}).AndReturn(instances) self.compute._get_instance_nw_info(fake_context, evacuated_instance).AndReturn( 'fake_network_info') self.compute._get_instance_volume_block_device_info( fake_context, evacuated_instance).AndReturn('fake_bdi') self.compute.driver.check_instance_shared_storage_local(fake_context, evacuated_instance).AndRaise(NotImplementedError()) self.compute.driver.destroy(fake_context, evacuated_instance, 'fake_network_info', 'fake_bdi', True) self.mox.ReplayAll() self.compute._destroy_evacuated_instances(fake_context) def test_complete_partial_deletion(self): admin_context = context.get_admin_context() instance = instance_obj.Instance() instance.id = 1 instance.uuid = 'fake-uuid' instance.vm_state = vm_states.DELETED instance.task_state = None instance.system_metadata = {'fake_key': 'fake_value'} instance.vcpus = 1 instance.memory_mb = 1 instance.project_id = 'fake-prj' instance.user_id = 'fake-user' instance.deleted = False def fake_destroy(): instance.deleted = True self.stubs.Set(instance, 'destroy', fake_destroy) self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', lambda *a, **k: None) self.stubs.Set(self.compute, '_complete_deletion', lambda *a, **k: None) self.stubs.Set(quotas_obj.Quotas, 'reserve', lambda *a, **k: None) self.compute._complete_partial_deletion(admin_context, instance) self.assertFalse(instance.deleted == 0) def test_init_instance_for_partial_deletion(self): admin_context = context.get_admin_context() instance = instance_obj.Instance(admin_context) instance.id = 1 instance.vm_state = vm_states.DELETED instance.deleted = False def fake_partial_deletion(context, instance): instance['deleted'] = instance['id'] self.stubs.Set(self.compute, '_complete_partial_deletion', fake_partial_deletion) self.compute._init_instance(admin_context, instance) self.assertFalse(instance['deleted'] == 0) def test_partial_deletion_raise_exception(self): admin_context = context.get_admin_context() instance = instance_obj.Instance(admin_context) instance.id = 1 instance.vm_state = vm_states.DELETED instance.deleted = False self.mox.StubOutWithMock(self.compute, '_complete_partial_deletion') self.compute._complete_partial_deletion( admin_context, instance).AndRaise(ValueError) self.mox.ReplayAll() self.compute._init_instance(admin_context, instance) def test_add_remove_fixed_ip_updates_instance_updated_at(self): def _noop(*args, **kwargs): pass self.stubs.Set(self.compute.network_api, 'add_fixed_ip_to_instance', _noop) self.stubs.Set(self.compute.network_api, 'remove_fixed_ip_from_instance', _noop) instance = self._create_fake_instance_obj() updated_at_1 = instance['updated_at'] self.compute.add_fixed_ip_to_instance(self.context, 'fake', instance) updated_at_2 = db.instance_get_by_uuid(self.context, instance['uuid'])['updated_at'] self.compute.remove_fixed_ip_from_instance(self.context, 'fake', self._objectify(instance)) updated_at_3 = db.instance_get_by_uuid(self.context, instance['uuid'])['updated_at'] updated_ats = (updated_at_1, updated_at_2, updated_at_3) self.assertEqual(len(updated_ats), len(set(updated_ats))) def test_no_pending_deletes_for_soft_deleted_instances(self): self.flags(reclaim_instance_interval=0) ctxt = context.get_admin_context() instance = self._create_fake_instance( params={'host': CONF.host, 'vm_state': vm_states.SOFT_DELETED, 'deleted_at': timeutils.utcnow()}) self.compute._run_pending_deletes(ctxt) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertFalse(instance['cleaned']) def test_reclaim_queued_deletes(self): self.flags(reclaim_instance_interval=3600) ctxt = context.get_admin_context() # Active self._create_fake_instance(params={'host': CONF.host}) # Deleted not old enough self._create_fake_instance(params={'host': CONF.host, 'vm_state': vm_states.SOFT_DELETED, 'deleted_at': timeutils.utcnow()}) # Deleted old enough (only this one should be reclaimed) deleted_at = (timeutils.utcnow() - datetime.timedelta(hours=1, minutes=5)) instance = self._create_fake_instance( params={'host': CONF.host, 'vm_state': vm_states.SOFT_DELETED, 'deleted_at': deleted_at}) # Restoring # NOTE(hanlind): This specifically tests for a race condition # where restoring a previously soft deleted instance sets # deleted_at back to None, causing reclaim to think it can be # deleted, see LP #1186243. self._create_fake_instance( params={'host': CONF.host, 'vm_state': vm_states.SOFT_DELETED, 'task_state': task_states.RESTORING}) self.mox.StubOutWithMock(self.compute, '_delete_instance') self.compute._delete_instance(ctxt, mox.IsA(instance_obj.Instance), []) self.mox.ReplayAll() self.compute._reclaim_queued_deletes(ctxt) def test_reclaim_queued_deletes_continue_on_error(self): # Verify that reclaim continues on error. self.flags(reclaim_instance_interval=3600) ctxt = context.get_admin_context() deleted_at = (timeutils.utcnow() - datetime.timedelta(hours=1, minutes=5)) instance1 = self._create_fake_instance_obj( params={'host': CONF.host, 'vm_state': vm_states.SOFT_DELETED, 'deleted_at': deleted_at}) instance2 = self._create_fake_instance_obj( params={'host': CONF.host, 'vm_state': vm_states.SOFT_DELETED, 'deleted_at': deleted_at}) instances = [] instances.append(instance1) instances.append(instance2) self.mox.StubOutWithMock(instance_obj.InstanceList, 'get_by_filters') self.mox.StubOutWithMock(self.compute, '_deleted_old_enough') self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_delete_instance') instance_obj.InstanceList.get_by_filters( ctxt, mox.IgnoreArg(), expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, use_slave=True ).AndReturn(instances) # The first instance delete fails. self.compute._deleted_old_enough(instance1, 3600).AndReturn(True) block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance1.uuid).AndReturn([]) self.compute._delete_instance(ctxt, instance1, None).AndRaise(test.TestingException) # The second instance delete that follows. self.compute._deleted_old_enough(instance2, 3600).AndReturn(True) block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance2.uuid).AndReturn([]) self.compute._delete_instance(ctxt, instance2, None) self.mox.ReplayAll() self.compute._reclaim_queued_deletes(ctxt) def test_sync_power_states(self): ctxt = self.context.elevated() self._create_fake_instance({'host': self.compute.host}) self._create_fake_instance({'host': self.compute.host}) self._create_fake_instance({'host': self.compute.host}) self.mox.StubOutWithMock(self.compute.driver, 'get_info') self.mox.StubOutWithMock(self.compute, '_sync_instance_power_state') # Check to make sure task continues on error. self.compute.driver.get_info(mox.IgnoreArg()).AndRaise( exception.InstanceNotFound(instance_id='fake-uuid')) self.compute._sync_instance_power_state(ctxt, mox.IgnoreArg(), power_state.NOSTATE).AndRaise( exception.InstanceNotFound(instance_id='fake-uuid')) self.compute.driver.get_info(mox.IgnoreArg()).AndReturn( {'state': power_state.RUNNING}) self.compute._sync_instance_power_state(ctxt, mox.IgnoreArg(), power_state.RUNNING, use_slave=True) self.compute.driver.get_info(mox.IgnoreArg()).AndReturn( {'state': power_state.SHUTDOWN}) self.compute._sync_instance_power_state(ctxt, mox.IgnoreArg(), power_state.SHUTDOWN, use_slave=True) self.mox.ReplayAll() self.compute._sync_power_states(ctxt) def _test_lifecycle_event(self, lifecycle_event, power_state): instance = self._create_fake_instance() uuid = instance['uuid'] self.mox.StubOutWithMock(self.compute, '_sync_instance_power_state') if power_state != None: self.compute._sync_instance_power_state( mox.IgnoreArg(), mox.ContainsKeyValue('uuid', uuid), power_state) self.mox.ReplayAll() self.compute.handle_events(event.LifecycleEvent(uuid, lifecycle_event)) self.mox.VerifyAll() self.mox.UnsetStubs() def test_lifecycle_events(self): self._test_lifecycle_event(event.EVENT_LIFECYCLE_STOPPED, power_state.SHUTDOWN) self._test_lifecycle_event(event.EVENT_LIFECYCLE_STARTED, power_state.RUNNING) self._test_lifecycle_event(event.EVENT_LIFECYCLE_PAUSED, power_state.PAUSED) self._test_lifecycle_event(event.EVENT_LIFECYCLE_RESUMED, power_state.RUNNING) self._test_lifecycle_event(-1, None) def test_lifecycle_event_non_existent_instance(self): # No error raised for non-existent instance because of inherent race # between database updates and hypervisor events. See bug #1180501. event_instance = event.LifecycleEvent('does-not-exist', event.EVENT_LIFECYCLE_STOPPED) self.compute.handle_events(event_instance) def test_allow_confirm_resize_on_instance_in_deleting_task_state(self): instance = self._create_fake_instance_obj() old_type = flavors.extract_flavor(instance) new_type = flavors.get_flavor_by_flavor_id('4') sys_meta = instance.system_metadata sys_meta = flavors.save_flavor_info(sys_meta, old_type, 'old_') sys_meta = flavors.save_flavor_info(sys_meta, new_type, 'new_') sys_meta = flavors.save_flavor_info(sys_meta, new_type) fake_rt = self.mox.CreateMockAnything() def fake_drop_resize_claim(*args, **kwargs): pass def fake_get_resource_tracker(self): return fake_rt def fake_setup_networks_on_host(self, *args, **kwargs): pass self.stubs.Set(fake_rt, 'drop_resize_claim', fake_drop_resize_claim) self.stubs.Set(self.compute, '_get_resource_tracker', fake_get_resource_tracker) self.stubs.Set(self.compute.network_api, 'setup_networks_on_host', fake_setup_networks_on_host) migration = migration_obj.Migration() migration.instance_uuid = instance.uuid migration.status = 'finished' migration.create(self.context.elevated()) instance.task_state = task_states.DELETING instance.vm_state = vm_states.RESIZED instance.system_metadata = sys_meta instance.save() self.compute.confirm_resize(self.context, instance=instance, migration=migration, reservations=[]) instance.refresh() self.assertEqual(vm_states.ACTIVE, instance['vm_state']) def _get_instance_and_bdm_for_dev_defaults_tests(self): instance = self._create_fake_instance( params={'root_device_name': '/dev/vda'}) block_device_mapping = block_device_obj.block_device_make_list( self.context, [fake_block_device.FakeDbBlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', 'source_type': 'volume', 'destination_type': 'volume', 'image_id': 'fake-image-id-1', 'boot_index': 0})]) return instance, block_device_mapping def test_default_block_device_names_empty_instance_root_dev(self): instance, bdms = self._get_instance_and_bdm_for_dev_defaults_tests() instance['root_device_name'] = None self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(self.compute, '_default_device_names_for_instance') self.compute._instance_update(self.context, instance['uuid'], root_device_name='/dev/vda') self.compute._default_device_names_for_instance(instance, '/dev/vda', [], [], [bdm for bdm in bdms]) self.mox.ReplayAll() self.compute._default_block_device_names(self.context, instance, {}, bdms) def test_default_block_device_names_empty_root_device(self): instance, bdms = self._get_instance_and_bdm_for_dev_defaults_tests() bdms[0]['device_name'] = None self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(self.compute, '_default_device_names_for_instance') self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'save') bdms[0].save().AndReturn(None) self.compute._default_device_names_for_instance(instance, '/dev/vda', [], [], [bdm for bdm in bdms]) self.mox.ReplayAll() self.compute._default_block_device_names(self.context, instance, {}, bdms) def test_default_block_device_names_no_root_device(self): instance, bdms = self._get_instance_and_bdm_for_dev_defaults_tests() instance['root_device_name'] = None bdms[0]['device_name'] = None self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'save') self.mox.StubOutWithMock(self.compute, '_default_root_device_name') self.mox.StubOutWithMock(self.compute, '_default_device_names_for_instance') self.compute._default_root_device_name(instance, mox.IgnoreArg(), bdms[0]).AndReturn('/dev/vda') self.compute._instance_update(self.context, instance['uuid'], root_device_name='/dev/vda') bdms[0].save().AndReturn(None) self.compute._default_device_names_for_instance(instance, '/dev/vda', [], [], [bdm for bdm in bdms]) self.mox.ReplayAll() self.compute._default_block_device_names(self.context, instance, {}, bdms) def test_reserve_block_device_name(self): instance = self._create_fake_instance_obj( params={'root_device_name': '/dev/vda'}) bdm = block_device_obj.BlockDeviceMapping( **{'source_type': 'image', 'destination_type': 'local', 'image_id': 'fake-image-id', 'device_name': '/dev/vda', 'instance_uuid': instance.uuid}) bdm.create(self.context) dev = self.compute.reserve_block_device_name( self.context, instance, '/dev/vdb', 'fake-volume-id', 'virtio', 'disk') bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, instance.uuid) bdms = list(bdms) self.assertEqual(len(bdms), 2) bdms.sort(key=operator.attrgetter('device_name')) vol_bdm = bdms[1] self.assertEqual(vol_bdm.source_type, 'volume') self.assertEqual(vol_bdm.destination_type, 'volume') self.assertEqual(vol_bdm.device_name, '/dev/vdb') self.assertEqual(vol_bdm.volume_id, 'fake-volume-id') self.assertEqual(vol_bdm.disk_bus, 'virtio') self.assertEqual(vol_bdm.device_type, 'disk') class ComputeAPITestCase(BaseTestCase): def setUp(self): def fake_get_nw_info(cls, ctxt, instance): self.assertTrue(ctxt.is_admin) return fake_network.fake_get_instance_nw_info(self.stubs, 1, 1) super(ComputeAPITestCase, self).setUp() self.stubs.Set(network_api.API, 'get_instance_nw_info', fake_get_nw_info) self.security_group_api = ( openstack_driver.get_openstack_security_group_driver()) self.compute_api = compute.API( security_group_api=self.security_group_api) self.fake_image = { 'id': 1, 'name': 'fake_name', 'status': 'active', 'properties': {'kernel_id': 'fake_kernel_id', 'ramdisk_id': 'fake_ramdisk_id'}, } def fake_show(obj, context, image_id): if image_id: return self.fake_image else: raise exception.ImageNotFound(image_id=image_id) self.fake_show = fake_show def _run_instance(self, params=None): instance = jsonutils.to_primitive(self._create_fake_instance(params, services=True)) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertIsNone(instance['task_state']) return instance, instance_uuid def test_create_with_too_little_ram(self): # Test an instance type with too little memory. inst_type = flavors.get_default_flavor() inst_type['memory_mb'] = 1 self.fake_image['min_ram'] = 2 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.FlavorMemoryTooSmall, self.compute_api.create, self.context, inst_type, self.fake_image['id']) # Now increase the inst_type memory and make sure all is fine. inst_type['memory_mb'] = 2 (refs, resv_id) = self.compute_api.create(self.context, inst_type, self.fake_image['id']) db.instance_destroy(self.context, refs[0]['uuid']) def test_create_with_too_little_disk(self): # Test an instance type with too little disk space. inst_type = flavors.get_default_flavor() inst_type['root_gb'] = 1 self.fake_image['min_disk'] = 2 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.FlavorDiskTooSmall, self.compute_api.create, self.context, inst_type, self.fake_image['id']) # Now increase the inst_type disk space and make sure all is fine. inst_type['root_gb'] = 2 (refs, resv_id) = self.compute_api.create(self.context, inst_type, self.fake_image['id']) db.instance_destroy(self.context, refs[0]['uuid']) def test_create_with_too_large_image(self): # Test an instance type with too little disk space. inst_type = flavors.get_default_flavor() inst_type['root_gb'] = 1 self.fake_image['size'] = '1073741825' self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.FlavorDiskTooSmall, self.compute_api.create, self.context, inst_type, self.fake_image['id']) # Reduce image to 1 GB limit and ensure it works self.fake_image['size'] = '1073741824' (refs, resv_id) = self.compute_api.create(self.context, inst_type, self.fake_image['id']) db.instance_destroy(self.context, refs[0]['uuid']) def test_create_just_enough_ram_and_disk(self): # Test an instance type with just enough ram and disk space. inst_type = flavors.get_default_flavor() inst_type['root_gb'] = 2 inst_type['memory_mb'] = 2 self.fake_image['min_ram'] = 2 self.fake_image['min_disk'] = 2 self.fake_image['name'] = 'fake_name' self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) (refs, resv_id) = self.compute_api.create(self.context, inst_type, self.fake_image['id']) db.instance_destroy(self.context, refs[0]['uuid']) def test_create_with_no_ram_and_disk_reqs(self): # Test an instance type with no min_ram or min_disk. inst_type = flavors.get_default_flavor() inst_type['root_gb'] = 1 inst_type['memory_mb'] = 1 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) (refs, resv_id) = self.compute_api.create(self.context, inst_type, self.fake_image['id']) db.instance_destroy(self.context, refs[0]['uuid']) def test_create_with_deleted_image(self): # If we're given a deleted image by glance, we should not be able to # build from it inst_type = flavors.get_default_flavor() self.fake_image['name'] = 'fake_name' self.fake_image['status'] = 'DELETED' self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) expected_message = ( exception.ImageNotActive.msg_fmt % {'image_id': self.fake_image['id']}) with testtools.ExpectedException(exception.ImageNotActive, expected_message): self.compute_api.create(self.context, inst_type, self.fake_image['id']) def test_create_instance_defaults_display_name(self): # Verify that an instance cannot be created without a display_name. cases = [dict(), dict(display_name=None)] for instance in cases: (ref, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), 'fake-image-uuid', **instance) try: self.assertIsNotNone(ref[0]['display_name']) finally: db.instance_destroy(self.context, ref[0]['uuid']) def test_create_instance_sets_system_metadata(self): # Make sure image properties are copied into system metadata. (ref, resv_id) = self.compute_api.create( self.context, instance_type=flavors.get_default_flavor(), image_href='fake-image-uuid') try: sys_metadata = db.instance_system_metadata_get(self.context, ref[0]['uuid']) image_props = {'image_kernel_id': 'fake_kernel_id', 'image_ramdisk_id': 'fake_ramdisk_id', 'image_something_else': 'meow', } for key, value in image_props.iteritems(): self.assertIn(key, sys_metadata) self.assertEqual(value, sys_metadata[key]) finally: db.instance_destroy(self.context, ref[0]['uuid']) def test_create_saves_type_in_system_metadata(self): instance_type = flavors.get_default_flavor() (ref, resv_id) = self.compute_api.create( self.context, instance_type=instance_type, image_href='some-fake-image') try: sys_metadata = db.instance_system_metadata_get(self.context, ref[0]['uuid']) instance_type_props = ['name', 'memory_mb', 'vcpus', 'root_gb', 'ephemeral_gb', 'flavorid', 'swap', 'rxtx_factor', 'vcpu_weight'] for key in instance_type_props: sys_meta_key = "instance_type_%s" % key self.assertIn(sys_meta_key, sys_metadata) self.assertEqual(str(instance_type[key]), str(sys_metadata[sys_meta_key])) finally: db.instance_destroy(self.context, ref[0]['uuid']) def test_create_instance_associates_security_groups(self): # Make sure create associates security groups. group = self._create_group() (ref, resv_id) = self.compute_api.create( self.context, instance_type=flavors.get_default_flavor(), image_href='some-fake-image', security_group=['testgroup']) try: self.assertEqual(len(db.security_group_get_by_instance( self.context, ref[0]['uuid'])), 1) group = db.security_group_get(self.context, group['id']) self.assertTrue(len(group['instances']) == 1) finally: db.security_group_destroy(self.context, group['id']) db.instance_destroy(self.context, ref[0]['uuid']) def test_create_instance_with_invalid_security_group_raises(self): instance_type = flavors.get_default_flavor() pre_build_len = len(db.instance_get_all(self.context)) self.assertRaises(exception.SecurityGroupNotFoundForProject, self.compute_api.create, self.context, instance_type=instance_type, image_href=None, security_group=['this_is_a_fake_sec_group']) self.assertEqual(pre_build_len, len(db.instance_get_all(self.context))) def test_create_with_large_user_data(self): # Test an instance type with too much user data. inst_type = flavors.get_default_flavor() self.fake_image['min_ram'] = 2 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.InstanceUserDataTooLarge, self.compute_api.create, self.context, inst_type, self.fake_image['id'], user_data=('1' * 65536)) def test_create_with_malformed_user_data(self): # Test an instance type with malformed user data. inst_type = flavors.get_default_flavor() self.fake_image['min_ram'] = 2 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.InstanceUserDataMalformed, self.compute_api.create, self.context, inst_type, self.fake_image['id'], user_data='banana') def test_create_with_base64_user_data(self): # Test an instance type with ok much user data. inst_type = flavors.get_default_flavor() self.fake_image['min_ram'] = 2 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) # NOTE(mikal): a string of length 48510 encodes to 65532 characters of # base64 (refs, resv_id) = self.compute_api.create( self.context, inst_type, self.fake_image['id'], user_data=base64.encodestring('1' * 48510)) db.instance_destroy(self.context, refs[0]['uuid']) def test_populate_instance_for_create(self): base_options = {'image_ref': self.fake_image['id'], 'system_metadata': {'fake': 'value'}} instance = instance_obj.Instance() instance.update(base_options) inst_type = flavors.get_flavor_by_name("m1.tiny") instance = self.compute_api._populate_instance_for_create( instance, self.fake_image, 1, security_groups=None, instance_type=inst_type) self.assertEqual(str(base_options['image_ref']), instance['system_metadata']['image_base_image_ref']) self.assertEqual(vm_states.BUILDING, instance['vm_state']) self.assertEqual(task_states.SCHEDULING, instance['task_state']) self.assertEqual(1, instance['launch_index']) self.assertIsNotNone(instance.get('uuid')) self.assertEqual([], instance.security_groups.objects) def test_default_hostname_generator(self): fake_uuids = [str(uuid.uuid4()) for x in xrange(4)] orig_populate = self.compute_api._populate_instance_for_create def _fake_populate(base_options, *args, **kwargs): base_options['uuid'] = fake_uuids.pop(0) return orig_populate(base_options, *args, **kwargs) self.stubs.Set(self.compute_api, '_populate_instance_for_create', _fake_populate) cases = [(None, 'server-%s' % fake_uuids[0]), ('Hello, Server!', 'hello-server'), ('<}\x1fh\x10e\x08l\x02l\x05o\x12!{>', 'hello'), ('hello_server', 'hello-server')] for display_name, hostname in cases: (ref, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), image_href='some-fake-image', display_name=display_name) try: self.assertEqual(ref[0]['hostname'], hostname) finally: db.instance_destroy(self.context, ref[0]['uuid']) def test_instance_create_adds_to_instance_group(self): self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) group = instance_group_obj.InstanceGroup(self.context) group.uuid = str(uuid.uuid4()) group.create() inst_type = flavors.get_default_flavor() (refs, resv_id) = self.compute_api.create( self.context, inst_type, self.fake_image['id'], scheduler_hints={'group': group.uuid}) group = instance_group_obj.InstanceGroup.get_by_uuid(self.context, group.uuid) self.assertIn(refs[0]['uuid'], group.members) db.instance_destroy(self.context, refs[0]['uuid']) def test_instance_create_auto_creates_group(self): self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) inst_type = flavors.get_default_flavor() (refs, resv_id) = self.compute_api.create( self.context, inst_type, self.fake_image['id'], scheduler_hints={'group': 'groupname'}) group = instance_group_obj.InstanceGroup.get_by_name(self.context, 'groupname') self.assertEqual('groupname', group.name) self.assertIn('legacy', group.policies) self.assertEqual(1, len(group.members)) self.assertIn(refs[0]['uuid'], group.members) # On a second instance, make sure it gets added to the group that was # auto-created above (refs2, resv_id) = self.compute_api.create( self.context, inst_type, self.fake_image['id'], scheduler_hints={'group': 'groupname'}) group = instance_group_obj.InstanceGroup.get_by_name(self.context, 'groupname') self.assertEqual('groupname', group.name) self.assertIn('legacy', group.policies) self.assertEqual(2, len(group.members)) self.assertIn(refs[0]['uuid'], group.members) self.assertIn(refs2[0]['uuid'], group.members) db.instance_destroy(self.context, refs[0]['uuid']) def test_destroy_instance_disassociates_security_groups(self): # Make sure destroying disassociates security groups. group = self._create_group() (ref, resv_id) = self.compute_api.create( self.context, instance_type=flavors.get_default_flavor(), image_href='some-fake-image', security_group=['testgroup']) try: db.instance_destroy(self.context, ref[0]['uuid']) group = db.security_group_get(self.context, group['id']) self.assertTrue(len(group['instances']) == 0) finally: db.security_group_destroy(self.context, group['id']) def test_destroy_security_group_disassociates_instances(self): # Make sure destroying security groups disassociates instances. group = self._create_group() (ref, resv_id) = self.compute_api.create( self.context, instance_type=flavors.get_default_flavor(), image_href='some-fake-image', security_group=['testgroup']) try: db.security_group_destroy(self.context, group['id']) admin_deleted_context = context.get_admin_context( read_deleted="only") group = db.security_group_get(admin_deleted_context, group['id']) self.assertTrue(len(group['instances']) == 0) finally: db.instance_destroy(self.context, ref[0]['uuid']) def _test_rebuild(self, vm_state): instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) instance = instance_obj.Instance.get_by_uuid(self.context, instance_uuid) self.assertIsNone(instance.task_state) # Set some image metadata that should get wiped out and reset # as well as some other metadata that should be preserved. instance.system_metadata.update({ 'image_kernel_id': 'old-data', 'image_ramdisk_id': 'old_data', 'image_something_else': 'old-data', 'image_should_remove': 'bye-bye', 'preserved': 'preserve this!'}) instance.save() # Make sure Compute API updates the image_ref before casting to # compute manager. orig_update = self.compute_api.update info = {'image_ref': None, 'clean': False} def fake_rpc_rebuild(context, **kwargs): info['image_ref'] = kwargs['instance'].image_ref info['clean'] = kwargs['instance'].obj_what_changed() == set() self.stubs.Set(self.compute_api.compute_rpcapi, 'rebuild_instance', fake_rpc_rebuild) image_ref = instance["image_ref"] + '-new_image_ref' password = "new_password" instance.vm_state = vm_state instance.save() self.compute_api.rebuild(self.context, instance, image_ref, password) self.assertEqual(info['image_ref'], image_ref) self.assertTrue(info['clean']) instance.refresh() self.assertEqual(instance.task_state, task_states.REBUILDING) sys_meta = dict([(k, v) for k, v in instance.system_metadata.items() if not k.startswith('instance_type')]) self.assertEqual(sys_meta, {'image_kernel_id': 'fake_kernel_id', 'image_min_disk': '1', 'image_ramdisk_id': 'fake_ramdisk_id', 'image_something_else': 'meow', 'preserved': 'preserve this!'}) instance.destroy() def test_rebuild(self): self._test_rebuild(vm_state=vm_states.ACTIVE) def test_rebuild_in_error_state(self): self._test_rebuild(vm_state=vm_states.ERROR) def test_rebuild_in_error_not_launched(self): instance = jsonutils.to_primitive( self._create_fake_instance(params={'image_ref': ''})) self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) db.instance_update(self.context, instance['uuid'], {"vm_state": vm_states.ERROR, "launched_at": None}) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertRaises(exception.InstanceInvalidState, self.compute_api.rebuild, self.context, instance, instance['image_ref'], "new password") def test_rebuild_no_image(self): instance = self._create_fake_instance_obj(params={'image_ref': ''}) instance_uuid = instance.uuid self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) self.compute_api.rebuild(self.context, instance, '', 'new_password') instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['task_state'], task_states.REBUILDING) def test_rebuild_with_deleted_image(self): # If we're given a deleted image by glance, we should not be able to # rebuild from it instance = self._create_fake_instance_obj(params={'image_ref': '1'}) self.fake_image['name'] = 'fake_name' self.fake_image['status'] = 'DELETED' self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) expected_message = ( exception.ImageNotActive.msg_fmt % {'image_id': self.fake_image['id']}) with testtools.ExpectedException(exception.ImageNotActive, expected_message): self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') def test_rebuild_with_too_little_ram(self): instance = self._create_fake_instance_obj(params={'image_ref': '1'}) def fake_extract_flavor(_inst, prefix): self.assertEqual('', prefix) return dict(test_flavor.fake_flavor, memory_mb=64, root_gb=1) self.stubs.Set(flavors, 'extract_flavor', fake_extract_flavor) self.fake_image['min_ram'] = 128 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.FlavorMemoryTooSmall, self.compute_api.rebuild, self.context, instance, self.fake_image['id'], 'new_password') # Reduce image memory requirements and make sure it works self.fake_image['min_ram'] = 64 self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') db.instance_destroy(self.context, instance['uuid']) def test_rebuild_with_too_little_disk(self): instance = self._create_fake_instance_obj(params={'image_ref': '1'}) def fake_extract_flavor(_inst, prefix): self.assertEqual('', prefix) return dict(test_flavor.fake_flavor, memory_mb=64, root_gb=1) self.stubs.Set(flavors, 'extract_flavor', fake_extract_flavor) self.fake_image['min_disk'] = 2 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.FlavorDiskTooSmall, self.compute_api.rebuild, self.context, instance, self.fake_image['id'], 'new_password') # Reduce image disk requirements and make sure it works self.fake_image['min_disk'] = 1 self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') db.instance_destroy(self.context, instance['uuid']) def test_rebuild_with_just_enough_ram_and_disk(self): instance = self._create_fake_instance_obj(params={'image_ref': '1'}) def fake_extract_flavor(_inst, prefix): self.assertEqual('', prefix) return dict(test_flavor.fake_flavor, memory_mb=64, root_gb=1) self.stubs.Set(flavors, 'extract_flavor', fake_extract_flavor) self.fake_image['min_ram'] = 64 self.fake_image['min_disk'] = 1 self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') db.instance_destroy(self.context, instance['uuid']) def test_rebuild_with_no_ram_and_disk_reqs(self): instance = self._create_fake_instance_obj(params={'image_ref': '1'}) def fake_extract_flavor(_inst, prefix): self.assertEqual('', prefix) return dict(test_flavor.fake_flavor, memory_mb=64, root_gb=1) self.stubs.Set(flavors, 'extract_flavor', fake_extract_flavor) self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') db.instance_destroy(self.context, instance['uuid']) def test_rebuild_with_too_large_image(self): instance = self._create_fake_instance_obj(params={'image_ref': '1'}) def fake_extract_flavor(_inst, prefix): self.assertEqual('', prefix) return dict(test_flavor.fake_flavor, memory_mb=64, root_gb=1) self.stubs.Set(flavors, 'extract_flavor', fake_extract_flavor) self.fake_image['size'] = '1073741825' self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) self.assertRaises(exception.FlavorDiskTooSmall, self.compute_api.rebuild, self.context, instance, self.fake_image['id'], 'new_password') # Reduce image to 1 GB limit and ensure it works self.fake_image['size'] = '1073741824' self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') db.instance_destroy(self.context, instance['uuid']) def test_hostname_create(self): # Ensure instance hostname is set during creation. inst_type = flavors.get_flavor_by_name('m1.tiny') (instances, _) = self.compute_api.create(self.context, inst_type, image_href='some-fake-image', display_name='test host') self.assertEqual('test-host', instances[0]['hostname']) def test_set_admin_password(self): # Ensure instance can have its admin password set. instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) inst_ref = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) self.assertIsNone(inst_ref['task_state']) def fake_set_admin_password(self, context, **kwargs): pass self.stubs.Set(compute_rpcapi.ComputeAPI, 'set_admin_password', fake_set_admin_password) self.compute_api.set_admin_password(self.context, inst_ref) inst_ref = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) self.assertEqual(inst_ref['task_state'], task_states.UPDATING_PASSWORD) self.compute.terminate_instance(self.context, self._objectify(inst_ref), [], []) def test_rescue_unrescue(self): instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['vm_state'], vm_states.ACTIVE) self.assertIsNone(instance['task_state']) self.compute_api.rescue(self.context, self._objectify(instance)) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['vm_state'], vm_states.ACTIVE) self.assertEqual(instance['task_state'], task_states.RESCUING) params = {'vm_state': vm_states.RESCUED, 'task_state': None} db.instance_update(self.context, instance_uuid, params) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.compute_api.unrescue(self.context, self._objectify(instance)) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['vm_state'], vm_states.RESCUED) self.assertEqual(instance['task_state'], task_states.UNRESCUING) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _fake_rescue_block_devices(self, instance, status="in-use"): fake_bdms = block_device_obj.block_device_make_list(self.context, [fake_block_device.FakeDbBlockDeviceDict( {'device_name': '/dev/vda', 'source_type': 'volume', 'boot_index': 0, 'destination_type': 'volume', 'volume_id': 'bf0b6b00-a20c-11e2-9e96-0800200c9a66'})]) volume = {'id': 'bf0b6b00-a20c-11e2-9e96-0800200c9a66', 'state': 'active', 'instance_uuid': instance['uuid']} return fake_bdms, volume @mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(cinder.API, 'get') def test_rescue_volume_backed_no_image(self, mock_get_vol, mock_get_bdms): # Instance started without an image volume_backed_inst_1 = jsonutils.to_primitive( self._create_fake_instance({'image_ref': ''})) bdms, volume = self._fake_rescue_block_devices(volume_backed_inst_1) mock_get_vol.return_value = {'id': volume['id'], 'status': "in-use"} mock_get_bdms.return_value = bdms with mock.patch.object(self.compute, '_prep_block_device'): self.compute.run_instance(self.context, volume_backed_inst_1, {}, {}, None, None, None, True, None, False) self.assertRaises(exception.InstanceNotRescuable, self.compute_api.rescue, self.context, volume_backed_inst_1) self.compute.terminate_instance(self.context, self._objectify(volume_backed_inst_1), [], []) @mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(cinder.API, 'get') def test_rescue_volume_backed_placeholder_image(self, mock_get_vol, mock_get_bdms): # Instance started with a placeholder image (for metadata) volume_backed_inst_2 = jsonutils.to_primitive( self._create_fake_instance( {'image_ref': 'my_placeholder_img', 'root_device_name': '/dev/vda'}) ) bdms, volume = self._fake_rescue_block_devices(volume_backed_inst_2) mock_get_vol.return_value = {'id': volume['id'], 'status': "in-use"} mock_get_bdms.return_value = bdms with mock.patch.object(self.compute, '_prep_block_device'): self.compute.run_instance(self.context, volume_backed_inst_2, {}, {}, None, None, None, True, None, False) self.assertRaises(exception.InstanceNotRescuable, self.compute_api.rescue, self.context, volume_backed_inst_2) self.compute.terminate_instance(self.context, self._objectify(volume_backed_inst_2), [], []) def test_get(self): # Test get instance. exp_instance = self._create_fake_instance() # NOTE(danms): Transform the db object in a similar way as # the API method will do. expected = obj_base.obj_to_primitive( instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), exp_instance, instance_obj.INSTANCE_DEFAULT_FIELDS + ['fault'])) def fake_db_get(_context, _instance_uuid, columns_to_join=None, use_slave=False): return exp_instance self.stubs.Set(db, 'instance_get_by_uuid', fake_db_get) instance = self.compute_api.get(self.context, exp_instance['uuid']) self.assertEqual(unify_instance(expected), unify_instance(instance)) def test_get_with_admin_context(self): # Test get instance. c = context.get_admin_context() exp_instance = self._create_fake_instance() # NOTE(danms): Transform the db object in a similar way as # the API method will do. expected = obj_base.obj_to_primitive( instance_obj.Instance._from_db_object( c, instance_obj.Instance(), exp_instance, instance_obj.INSTANCE_DEFAULT_FIELDS + ['fault'])) def fake_db_get(context, instance_uuid, columns_to_join=None, use_slave=False): return exp_instance self.stubs.Set(db, 'instance_get_by_uuid', fake_db_get) instance = self.compute_api.get(c, exp_instance['uuid']) self.assertEqual(unify_instance(expected), unify_instance(instance)) def test_get_with_integer_id(self): # Test get instance with an integer id. exp_instance = self._create_fake_instance() # NOTE(danms): Transform the db object in a similar way as # the API method will do. expected = obj_base.obj_to_primitive( instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), exp_instance, instance_obj.INSTANCE_DEFAULT_FIELDS + ['fault'])) def fake_db_get(_context, _instance_id, columns_to_join=None): return exp_instance self.stubs.Set(db, 'instance_get', fake_db_get) instance = self.compute_api.get(self.context, exp_instance['id']) self.assertEqual(unify_instance(expected), unify_instance(instance)) def test_get_all_by_name_regexp(self): # Test searching instances by name (display_name). c = context.get_admin_context() instance1 = self._create_fake_instance({'display_name': 'woot'}) instance2 = self._create_fake_instance({ 'display_name': 'woo'}) instance3 = self._create_fake_instance({ 'display_name': 'not-woot'}) instances = self.compute_api.get_all(c, search_opts={'name': '^woo.*'}) self.assertEqual(len(instances), 2) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance1['uuid'], instance_uuids) self.assertIn(instance2['uuid'], instance_uuids) instances = self.compute_api.get_all(c, search_opts={'name': '^woot.*'}) instance_uuids = [instance['uuid'] for instance in instances] self.assertEqual(len(instances), 1) self.assertIn(instance1['uuid'], instance_uuids) instances = self.compute_api.get_all(c, search_opts={'name': '.*oot.*'}) self.assertEqual(len(instances), 2) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance1['uuid'], instance_uuids) self.assertIn(instance3['uuid'], instance_uuids) instances = self.compute_api.get_all(c, search_opts={'name': '^n.*'}) self.assertEqual(len(instances), 1) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance3['uuid'], instance_uuids) instances = self.compute_api.get_all(c, search_opts={'name': 'noth.*'}) self.assertEqual(len(instances), 0) db.instance_destroy(c, instance1['uuid']) db.instance_destroy(c, instance2['uuid']) db.instance_destroy(c, instance3['uuid']) @mock.patch('nova.db.network_get') @mock.patch('nova.db.fixed_ips_by_virtual_interface') def test_get_all_by_multiple_options_at_once(self, fixed_get, network_get): # Test searching by multiple options at once. c = context.get_admin_context() network_manager = fake_network.FakeNetworkManager(self.stubs) fixed_get.side_effect = ( network_manager.db.fixed_ips_by_virtual_interface) network_get.return_value = ( dict(test_network.fake_network, **network_manager.db.network_get(None, 1))) self.stubs.Set(self.compute_api.network_api, 'get_instance_uuids_by_ip_filter', network_manager.get_instance_uuids_by_ip_filter) instance1 = self._create_fake_instance({ 'display_name': 'woot', 'id': 1, 'uuid': '00000000-0000-0000-0000-000000000010'}) instance2 = self._create_fake_instance({ 'display_name': 'woo', 'id': 20, 'uuid': '00000000-0000-0000-0000-000000000020'}) instance3 = self._create_fake_instance({ 'display_name': 'not-woot', 'id': 30, 'uuid': '00000000-0000-0000-0000-000000000030'}) # ip ends up matching 2nd octet here.. so all 3 match ip # but 'name' only matches one instances = self.compute_api.get_all(c, search_opts={'ip': '.*\.1', 'name': 'not.*'}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance3['uuid']) # ip ends up matching any ip with a '1' in the last octet.. # so instance 1 and 3.. but name should only match #1 # but 'name' only matches one instances = self.compute_api.get_all(c, search_opts={'ip': '.*\.1$', 'name': '^woo.*'}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance1['uuid']) # same as above but no match on name (name matches instance1 # but the ip query doesn't instances = self.compute_api.get_all(c, search_opts={'ip': '.*\.2$', 'name': '^woot.*'}) self.assertEqual(len(instances), 0) # ip matches all 3... ipv6 matches #2+#3...name matches #3 instances = self.compute_api.get_all(c, search_opts={'ip': '.*\.1', 'name': 'not.*', 'ip6': '^.*12.*34.*'}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance3['uuid']) db.instance_destroy(c, instance1['uuid']) db.instance_destroy(c, instance2['uuid']) db.instance_destroy(c, instance3['uuid']) def test_get_all_by_image(self): # Test searching instances by image. c = context.get_admin_context() instance1 = self._create_fake_instance({'image_ref': '1234'}) instance2 = self._create_fake_instance({'image_ref': '4567'}) instance3 = self._create_fake_instance({'image_ref': '4567'}) instances = self.compute_api.get_all(c, search_opts={'image': '123'}) self.assertEqual(len(instances), 0) instances = self.compute_api.get_all(c, search_opts={'image': '1234'}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance1['uuid']) instances = self.compute_api.get_all(c, search_opts={'image': '4567'}) self.assertEqual(len(instances), 2) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance2['uuid'], instance_uuids) self.assertIn(instance3['uuid'], instance_uuids) # Test passing a list as search arg instances = self.compute_api.get_all(c, search_opts={'image': ['1234', '4567']}) self.assertEqual(len(instances), 3) db.instance_destroy(c, instance1['uuid']) db.instance_destroy(c, instance2['uuid']) db.instance_destroy(c, instance3['uuid']) def test_get_all_by_flavor(self): # Test searching instances by image. c = context.get_admin_context() instance1 = self._create_fake_instance({'instance_type_id': 1}) instance2 = self._create_fake_instance({'instance_type_id': 2}) instance3 = self._create_fake_instance({'instance_type_id': 2}) # NOTE(comstud): Migrations set up the instance_types table # for us. Therefore, we assume the following is true for # these tests: # instance_type_id 1 == flavor 3 # instance_type_id 2 == flavor 1 # instance_type_id 3 == flavor 4 # instance_type_id 4 == flavor 5 # instance_type_id 5 == flavor 2 instances = self.compute_api.get_all(c, search_opts={'flavor': 5}) self.assertEqual(len(instances), 0) # ensure unknown filter maps to an exception self.assertRaises(exception.FlavorNotFound, self.compute_api.get_all, c, search_opts={'flavor': 99}) instances = self.compute_api.get_all(c, search_opts={'flavor': 3}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['id'], instance1['id']) instances = self.compute_api.get_all(c, search_opts={'flavor': 1}) self.assertEqual(len(instances), 2) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance2['uuid'], instance_uuids) self.assertIn(instance3['uuid'], instance_uuids) db.instance_destroy(c, instance1['uuid']) db.instance_destroy(c, instance2['uuid']) db.instance_destroy(c, instance3['uuid']) def test_get_all_by_state(self): # Test searching instances by state. c = context.get_admin_context() instance1 = self._create_fake_instance({ 'power_state': power_state.SHUTDOWN, }) instance2 = self._create_fake_instance({ 'power_state': power_state.RUNNING, }) instance3 = self._create_fake_instance({ 'power_state': power_state.RUNNING, }) instances = self.compute_api.get_all(c, search_opts={'power_state': power_state.SUSPENDED}) self.assertEqual(len(instances), 0) instances = self.compute_api.get_all(c, search_opts={'power_state': power_state.SHUTDOWN}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance1['uuid']) instances = self.compute_api.get_all(c, search_opts={'power_state': power_state.RUNNING}) self.assertEqual(len(instances), 2) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance2['uuid'], instance_uuids) self.assertIn(instance3['uuid'], instance_uuids) # Test passing a list as search arg instances = self.compute_api.get_all(c, search_opts={'power_state': [power_state.SHUTDOWN, power_state.RUNNING]}) self.assertEqual(len(instances), 3) db.instance_destroy(c, instance1['uuid']) db.instance_destroy(c, instance2['uuid']) db.instance_destroy(c, instance3['uuid']) def test_get_all_by_metadata(self): # Test searching instances by metadata. c = context.get_admin_context() instance0 = self._create_fake_instance() instance1 = self._create_fake_instance({ 'metadata': {'key1': 'value1'}}) instance2 = self._create_fake_instance({ 'metadata': {'key2': 'value2'}}) instance3 = self._create_fake_instance({ 'metadata': {'key3': 'value3'}}) instance4 = self._create_fake_instance({ 'metadata': {'key3': 'value3', 'key4': 'value4'}}) # get all instances instances = self.compute_api.get_all(c, search_opts={'metadata': {}}) self.assertEqual(len(instances), 5) # wrong key/value combination instances = self.compute_api.get_all(c, search_opts={'metadata': {'key1': 'value3'}}) self.assertEqual(len(instances), 0) # non-existing keys instances = self.compute_api.get_all(c, search_opts={'metadata': {'key5': 'value1'}}) self.assertEqual(len(instances), 0) # find existing instance instances = self.compute_api.get_all(c, search_opts={'metadata': {'key2': 'value2'}}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance2['uuid']) instances = self.compute_api.get_all(c, search_opts={'metadata': {'key3': 'value3'}}) self.assertEqual(len(instances), 2) instance_uuids = [instance['uuid'] for instance in instances] self.assertIn(instance3['uuid'], instance_uuids) self.assertIn(instance4['uuid'], instance_uuids) # multiple criteria as a dict instances = self.compute_api.get_all(c, search_opts={'metadata': {'key3': 'value3', 'key4': 'value4'}}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance4['uuid']) # multiple criteria as a list instances = self.compute_api.get_all(c, search_opts={'metadata': [{'key4': 'value4'}, {'key3': 'value3'}]}) self.assertEqual(len(instances), 1) self.assertEqual(instances[0]['uuid'], instance4['uuid']) db.instance_destroy(c, instance0['uuid']) db.instance_destroy(c, instance1['uuid']) db.instance_destroy(c, instance2['uuid']) db.instance_destroy(c, instance3['uuid']) db.instance_destroy(c, instance4['uuid']) def test_all_instance_metadata(self): instance1 = self._create_fake_instance({'metadata': {'key1': 'value1'}, 'user_id': 'user1', 'project_id': 'project1'}) instance2 = self._create_fake_instance({'metadata': {'key2': 'value2'}, 'user_id': 'user2', 'project_id': 'project2'}) _context = self.context _context.user_id = 'user1' _context.project_id = 'project1' metadata = self.compute_api.get_all_instance_metadata(_context, search_filts=[]) self.assertTrue(len(metadata) == 1) self.assertEqual(metadata[0]['key'], 'key1') _context.user_id = 'user2' _context.project_id = 'project2' metadata = self.compute_api.get_all_instance_metadata(_context, search_filts=[]) self.assertTrue(len(metadata) == 1) self.assertEqual(metadata[0]['key'], 'key2') _context = context.get_admin_context() metadata = self.compute_api.get_all_instance_metadata(_context, search_filts=[]) self.assertTrue(len(metadata) == 2) def test_instance_metadata(self): meta_changes = [None] self.flags(notify_on_state_change='vm_state') def fake_change_instance_metadata(inst, ctxt, diff, instance=None, instance_uuid=None): meta_changes[0] = diff self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) _context = context.get_admin_context() instance = self._create_fake_instance_obj({'metadata': {'key1': 'value1'}}) metadata = self.compute_api.get_instance_metadata(_context, instance) self.assertEqual(metadata, {'key1': 'value1'}) self.compute_api.update_instance_metadata(_context, instance, {'key2': 'value2'}) metadata = self.compute_api.get_instance_metadata(_context, instance) self.assertEqual(metadata, {'key1': 'value1', 'key2': 'value2'}) self.assertEqual(meta_changes, [{'key2': ['+', 'value2']}]) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) msg = fake_notifier.NOTIFICATIONS[0] payload = msg.payload self.assertIn('metadata', payload) self.assertEqual(payload['metadata'], metadata) new_metadata = {'key2': 'bah', 'key3': 'value3'} self.compute_api.update_instance_metadata(_context, instance, new_metadata, delete=True) metadata = self.compute_api.get_instance_metadata(_context, instance) self.assertEqual(metadata, new_metadata) self.assertEqual(meta_changes, [{ 'key1': ['-'], 'key2': ['+', 'bah'], 'key3': ['+', 'value3'], }]) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[1] payload = msg.payload self.assertIn('metadata', payload) self.assertEqual(payload['metadata'], metadata) self.compute_api.delete_instance_metadata(_context, instance, 'key2') metadata = self.compute_api.get_instance_metadata(_context, instance) self.assertEqual(metadata, {'key3': 'value3'}) self.assertEqual(meta_changes, [{'key2': ['-']}]) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 3) msg = fake_notifier.NOTIFICATIONS[2] payload = msg.payload self.assertIn('metadata', payload) self.assertEqual(payload['metadata'], {'key3': 'value3'}) db.instance_destroy(_context, instance['uuid']) def test_disallow_metadata_changes_during_building(self): def fake_change_instance_metadata(inst, ctxt, diff, instance=None, instance_uuid=None): pass self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) instance = self._create_fake_instance({'vm_state': vm_states.BUILDING}) instance = dict(instance) self.assertRaises(exception.InstanceInvalidState, self.compute_api.delete_instance_metadata, self.context, instance, "key") self.assertRaises(exception.InstanceInvalidState, self.compute_api.update_instance_metadata, self.context, instance, "key") def test_get_instance_faults(self): # Get an instances latest fault. instance = self._create_fake_instance() fault_fixture = { 'code': 404, 'instance_uuid': instance['uuid'], 'message': "HTTPNotFound", 'details': "Stock details for test", 'created_at': datetime.datetime(2010, 10, 10, 12, 0, 0), } def return_fault(_ctxt, instance_uuids): return dict.fromkeys(instance_uuids, [fault_fixture]) self.stubs.Set(nova.db, 'instance_fault_get_by_instance_uuids', return_fault) _context = context.get_admin_context() output = self.compute_api.get_instance_faults(_context, [instance]) expected = {instance['uuid']: [fault_fixture]} self.assertEqual(output, expected) db.instance_destroy(_context, instance['uuid']) @staticmethod def _parse_db_block_device_mapping(bdm_ref): attr_list = ('delete_on_termination', 'device_name', 'no_device', 'virtual_name', 'volume_id', 'volume_size', 'snapshot_id') bdm = {} for attr in attr_list: val = bdm_ref.get(attr, None) if val: bdm[attr] = val return bdm def test_update_block_device_mapping(self): swap_size = ephemeral_size = 1 instance_type = {'swap': swap_size, 'ephemeral_gb': ephemeral_size} instance = self._create_fake_instance() mappings = [ {'virtual': 'ami', 'device': 'sda1'}, {'virtual': 'root', 'device': '/dev/sda1'}, {'virtual': 'swap', 'device': 'sdb4'}, {'virtual': 'swap', 'device': 'sdb3'}, {'virtual': 'swap', 'device': 'sdb2'}, {'virtual': 'swap', 'device': 'sdb1'}, {'virtual': 'ephemeral0', 'device': 'sdc1'}, {'virtual': 'ephemeral1', 'device': 'sdc2'}, {'virtual': 'ephemeral2', 'device': 'sdc3'}] block_device_mapping = [ # root {'device_name': '/dev/sda1', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '00000000-aaaa-bbbb-cccc-000000000000', 'delete_on_termination': False}, # overwrite swap {'device_name': '/dev/sdb2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '11111111-aaaa-bbbb-cccc-111111111111', 'delete_on_termination': False}, {'device_name': '/dev/sdb3', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '22222222-aaaa-bbbb-cccc-222222222222'}, {'device_name': '/dev/sdb4', 'no_device': True}, # overwrite ephemeral {'device_name': '/dev/sdc1', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '33333333-aaaa-bbbb-cccc-333333333333', 'delete_on_termination': False}, {'device_name': '/dev/sdc2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '33333333-aaaa-bbbb-cccc-444444444444', 'delete_on_termination': False}, {'device_name': '/dev/sdc3', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '44444444-aaaa-bbbb-cccc-555555555555'}, {'device_name': '/dev/sdc4', 'no_device': True}, # volume {'device_name': '/dev/sdd1', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '55555555-aaaa-bbbb-cccc-666666666666', 'delete_on_termination': False}, {'device_name': '/dev/sdd2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '66666666-aaaa-bbbb-cccc-777777777777'}, {'device_name': '/dev/sdd3', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '77777777-aaaa-bbbb-cccc-888888888888'}, {'device_name': '/dev/sdd4', 'no_device': True}] image_mapping = self.compute_api._prepare_image_mapping( instance_type, instance['uuid'], mappings) self.compute_api._update_block_device_mapping( self.context, instance_type, instance['uuid'], image_mapping) bdms = [block_device.BlockDeviceDict(bdm) for bdm in db.block_device_mapping_get_all_by_instance( self.context, instance['uuid'])] expected_result = [ {'source_type': 'blank', 'destination_type': 'local', 'guest_format': 'swap', 'device_name': '/dev/sdb1', 'volume_size': swap_size, 'delete_on_termination': True}, {'source_type': 'blank', 'destination_type': 'local', 'guest_format': CONF.default_ephemeral_format, 'device_name': '/dev/sdc3', 'delete_on_termination': True}, {'source_type': 'blank', 'destination_type': 'local', 'guest_format': CONF.default_ephemeral_format, 'device_name': '/dev/sdc1', 'delete_on_termination': True}, {'source_type': 'blank', 'destination_type': 'local', 'guest_format': CONF.default_ephemeral_format, 'device_name': '/dev/sdc2', 'delete_on_termination': True}, ] bdms.sort(key=operator.itemgetter('device_name')) expected_result.sort(key=operator.itemgetter('device_name')) self.assertEqual(len(bdms), len(expected_result)) for expected, got in zip(expected_result, bdms): self.assertThat(expected, matchers.IsSubDictOf(got)) self.compute_api._update_block_device_mapping( self.context, flavors.get_default_flavor(), instance['uuid'], block_device_mapping) bdms = [block_device.BlockDeviceDict(bdm) for bdm in db.block_device_mapping_get_all_by_instance( self.context, instance['uuid'])] expected_result = [ {'snapshot_id': '00000000-aaaa-bbbb-cccc-000000000000', 'device_name': '/dev/sda1'}, {'source_type': 'blank', 'destination_type': 'local', 'guest_format': 'swap', 'device_name': '/dev/sdb1', 'volume_size': swap_size, 'delete_on_termination': True}, {'device_name': '/dev/sdb2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '11111111-aaaa-bbbb-cccc-111111111111', 'delete_on_termination': False}, {'device_name': '/dev/sdb3', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '22222222-aaaa-bbbb-cccc-222222222222'}, {'device_name': '/dev/sdb4', 'no_device': True}, {'device_name': '/dev/sdc1', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '33333333-aaaa-bbbb-cccc-333333333333', 'delete_on_termination': False}, {'device_name': '/dev/sdc2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '33333333-aaaa-bbbb-cccc-444444444444', 'delete_on_termination': False}, {'device_name': '/dev/sdc3', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '44444444-aaaa-bbbb-cccc-555555555555'}, {'no_device': True, 'device_name': '/dev/sdc4'}, {'device_name': '/dev/sdd1', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '55555555-aaaa-bbbb-cccc-666666666666', 'delete_on_termination': False}, {'device_name': '/dev/sdd2', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '66666666-aaaa-bbbb-cccc-777777777777'}, {'device_name': '/dev/sdd3', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': '77777777-aaaa-bbbb-cccc-888888888888'}, {'no_device': True, 'device_name': '/dev/sdd4'}] bdms.sort(key=operator.itemgetter('device_name')) expected_result.sort(key=operator.itemgetter('device_name')) self.assertEqual(len(bdms), len(expected_result)) for expected, got in zip(expected_result, bdms): self.assertThat(expected, matchers.IsSubDictOf(got)) for bdm in db.block_device_mapping_get_all_by_instance( self.context, instance['uuid']): db.block_device_mapping_destroy(self.context, bdm['id']) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.compute.terminate_instance(self.context, self._objectify(instance), [], []) def _test_check_and_transform_bdm(self, bdms, expected_bdms, image_bdms=None, base_options=None, legacy_bdms=False, legacy_image_bdms=False): image_bdms = image_bdms or [] image_meta = {} if image_bdms: image_meta = {'properties': {'block_device_mapping': image_bdms}} if not legacy_image_bdms: image_meta['properties']['bdm_v2'] = True base_options = base_options or {'root_device_name': 'vda', 'image_ref': FAKE_IMAGE_REF} transformed_bdm = self.compute_api._check_and_transform_bdm( base_options, image_meta, 1, 1, bdms, legacy_bdms) self.assertThat(expected_bdms, matchers.DictListMatches(transformed_bdm)) def test_check_and_transform_legacy_bdm_no_image_bdms(self): legacy_bdms = [ {'device_name': '/dev/vda', 'volume_id': '33333333-aaaa-bbbb-cccc-333333333333', 'delete_on_termination': False}] expected_bdms = [block_device.BlockDeviceDict.from_legacy( legacy_bdms[0])] expected_bdms[0]['boot_index'] = 0 self._test_check_and_transform_bdm(legacy_bdms, expected_bdms, legacy_bdms=True) def test_check_and_transform_legacy_bdm_legacy_image_bdms(self): image_bdms = [ {'device_name': '/dev/vda', 'volume_id': '33333333-aaaa-bbbb-cccc-333333333333', 'delete_on_termination': False}] legacy_bdms = [ {'device_name': '/dev/vdb', 'volume_id': '33333333-aaaa-bbbb-cccc-444444444444', 'delete_on_termination': False}] expected_bdms = [ block_device.BlockDeviceDict.from_legacy(legacy_bdms[0]), block_device.BlockDeviceDict.from_legacy(image_bdms[0])] expected_bdms[0]['boot_index'] = -1 expected_bdms[1]['boot_index'] = 0 self._test_check_and_transform_bdm(legacy_bdms, expected_bdms, image_bdms=image_bdms, legacy_bdms=True, legacy_image_bdms=True) def test_check_and_transform_legacy_bdm_image_bdms(self): legacy_bdms = [ {'device_name': '/dev/vdb', 'volume_id': '33333333-aaaa-bbbb-cccc-444444444444', 'delete_on_termination': False}] image_bdms = [block_device.BlockDeviceDict( {'source_type': 'volume', 'destination_type': 'volume', 'volume_id': '33333333-aaaa-bbbb-cccc-444444444444', 'boot_index': 0})] expected_bdms = [ block_device.BlockDeviceDict.from_legacy(legacy_bdms[0]), image_bdms[0]] expected_bdms[0]['boot_index'] = -1 self._test_check_and_transform_bdm(legacy_bdms, expected_bdms, image_bdms=image_bdms, legacy_bdms=True) def test_check_and_transform_bdm_no_image_bdms(self): bdms = [block_device.BlockDeviceDict({'source_type': 'image', 'destination_type': 'local', 'image_id': FAKE_IMAGE_REF, 'boot_index': 0})] expected_bdms = bdms self._test_check_and_transform_bdm(bdms, expected_bdms) def test_check_and_transform_bdm_image_bdms(self): bdms = [block_device.BlockDeviceDict({'source_type': 'image', 'destination_type': 'local', 'image_id': FAKE_IMAGE_REF, 'boot_index': 0})] image_bdms = [block_device.BlockDeviceDict( {'source_type': 'volume', 'destination_type': 'volume', 'volume_id': '33333333-aaaa-bbbb-cccc-444444444444'})] expected_bdms = bdms + image_bdms self._test_check_and_transform_bdm(bdms, expected_bdms, image_bdms=image_bdms) def test_check_and_transform_bdm_legacy_image_bdms(self): bdms = [block_device.BlockDeviceDict({'source_type': 'image', 'destination_type': 'local', 'image_id': FAKE_IMAGE_REF, 'boot_index': 0})] image_bdms = [{'device_name': '/dev/vda', 'volume_id': '33333333-aaaa-bbbb-cccc-333333333333', 'delete_on_termination': False}] expected_bdms = [block_device.BlockDeviceDict.from_legacy( image_bdms[0])] expected_bdms[0]['boot_index'] = 0 self._test_check_and_transform_bdm(bdms, expected_bdms, image_bdms=image_bdms, legacy_image_bdms=True) def test_check_and_transform_image(self): base_options = {'root_device_name': 'vdb', 'image_ref': FAKE_IMAGE_REF} fake_legacy_bdms = [ {'device_name': '/dev/vda', 'volume_id': '33333333-aaaa-bbbb-cccc-333333333333', 'delete_on_termination': False}] image_meta = {'properties': {'block_device_mapping': [ {'device_name': '/dev/vda', 'snapshot_id': '33333333-aaaa-bbbb-cccc-333333333333'}]}} # We get an image BDM transformed_bdm = self.compute_api._check_and_transform_bdm( base_options, {}, 1, 1, fake_legacy_bdms, True) self.assertEqual(len(transformed_bdm), 2) # No image BDM created if image already defines a root BDM base_options['root_device_name'] = 'vda' transformed_bdm = self.compute_api._check_and_transform_bdm( base_options, image_meta, 1, 1, [], True) self.assertEqual(len(transformed_bdm), 1) # No image BDM created transformed_bdm = self.compute_api._check_and_transform_bdm( base_options, {}, 1, 1, fake_legacy_bdms, True) self.assertEqual(len(transformed_bdm), 1) # Volumes with multiple instances fails self.assertRaises(exception.InvalidRequest, self.compute_api._check_and_transform_bdm, base_options, {}, 1, 2, fake_legacy_bdms, True) checked_bdm = self.compute_api._check_and_transform_bdm( base_options, {}, 1, 1, transformed_bdm, True) self.assertEqual(checked_bdm, transformed_bdm) def test_volume_size(self): ephemeral_size = 2 swap_size = 3 volume_size = 5 swap_bdm = {'source_type': 'blank', 'guest_format': 'swap'} ephemeral_bdm = {'source_type': 'blank', 'guest_format': None} volume_bdm = {'source_type': 'volume', 'volume_size': volume_size} inst_type = {'ephemeral_gb': ephemeral_size, 'swap': swap_size} self.assertEqual( self.compute_api._volume_size(inst_type, ephemeral_bdm), ephemeral_size) ephemeral_bdm['volume_size'] = 42 self.assertEqual( self.compute_api._volume_size(inst_type, ephemeral_bdm), 42) self.assertEqual( self.compute_api._volume_size(inst_type, swap_bdm), swap_size) swap_bdm['volume_size'] = 42 self.assertEqual( self.compute_api._volume_size(inst_type, swap_bdm), 42) self.assertEqual( self.compute_api._volume_size(inst_type, volume_bdm), volume_size) def test_is_volume_backed_instance(self): ctxt = self.context instance = self._create_fake_instance({'image_ref': ''}) self.assertTrue( self.compute_api.is_volume_backed_instance(ctxt, instance, None)) instance = self._create_fake_instance({'root_device_name': 'vda'}) self.assertFalse( self.compute_api.is_volume_backed_instance( ctxt, instance, block_device_obj.block_device_make_list(ctxt, []))) bdms = block_device_obj.block_device_make_list(ctxt, [fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'device_name': '/dev/vda', 'volume_id': 'fake_volume_id', 'boot_index': 0, 'destination_type': 'volume'})]) self.assertTrue( self.compute_api.is_volume_backed_instance(ctxt, instance, bdms)) bdms = block_device_obj.block_device_make_list(ctxt, [fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'device_name': '/dev/vda', 'volume_id': 'fake_volume_id', 'destination_type': 'local', 'boot_index': 0, 'snapshot_id': None}), fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'device_name': '/dev/vdb', 'boot_index': 1, 'destination_type': 'volume', 'volume_id': 'c2ec2156-d75e-11e2-985b-5254009297d6', 'snapshot_id': None})]) self.assertFalse( self.compute_api.is_volume_backed_instance(ctxt, instance, bdms)) bdms = block_device_obj.block_device_make_list(ctxt, [fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'device_name': '/dev/vda', 'snapshot_id': 'de8836ac-d75e-11e2-8271-5254009297d6', 'destination_type': 'volume', 'boot_index': 0, 'volume_id': None})]) self.assertTrue( self.compute_api.is_volume_backed_instance(ctxt, instance, bdms)) def test_is_volume_backed_instance_no_bdms(self): ctxt = self.context instance = self._create_fake_instance() self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance['uuid']).AndReturn( block_device_obj.block_device_make_list(ctxt, [])) self.mox.ReplayAll() self.compute_api.is_volume_backed_instance(ctxt, instance, None) def test_reservation_id_one_instance(self): """Verify building an instance has a reservation_id that matches return value from create. """ (refs, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), image_href='some-fake-image') try: self.assertEqual(len(refs), 1) self.assertEqual(refs[0]['reservation_id'], resv_id) finally: db.instance_destroy(self.context, refs[0]['uuid']) def test_reservation_ids_two_instances(self): """Verify building 2 instances at once results in a reservation_id being returned equal to reservation id set in both instances. """ (refs, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), image_href='some-fake-image', min_count=2, max_count=2) try: self.assertEqual(len(refs), 2) self.assertIsNotNone(resv_id) finally: for instance in refs: self.assertEqual(instance['reservation_id'], resv_id) db.instance_destroy(self.context, refs[0]['uuid']) def test_multi_instance_display_name_template(self): self.flags(multi_instance_display_name_template='%(name)s') (refs, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), image_href='some-fake-image', min_count=2, max_count=2, display_name='x') self.assertEqual(refs[0]['display_name'], 'x') self.assertEqual(refs[0]['hostname'], 'x') self.assertEqual(refs[1]['display_name'], 'x') self.assertEqual(refs[1]['hostname'], 'x') self.flags(multi_instance_display_name_template='%(name)s-%(count)s') (refs, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), image_href='some-fake-image', min_count=2, max_count=2, display_name='x') self.assertEqual(refs[0]['display_name'], 'x-1') self.assertEqual(refs[0]['hostname'], 'x-1') self.assertEqual(refs[1]['display_name'], 'x-2') self.assertEqual(refs[1]['hostname'], 'x-2') self.flags(multi_instance_display_name_template='%(name)s-%(uuid)s') (refs, resv_id) = self.compute_api.create(self.context, flavors.get_default_flavor(), image_href='some-fake-image', min_count=2, max_count=2, display_name='x') self.assertEqual(refs[0]['display_name'], 'x-%s' % refs[0]['uuid']) self.assertEqual(refs[0]['hostname'], 'x-%s' % refs[0]['uuid']) self.assertEqual(refs[1]['display_name'], 'x-%s' % refs[1]['uuid']) self.assertEqual(refs[1]['hostname'], 'x-%s' % refs[1]['uuid']) def test_instance_architecture(self): # Test the instance architecture. i_ref = self._create_fake_instance() self.assertEqual(i_ref['architecture'], 'x86_64') db.instance_destroy(self.context, i_ref['uuid']) def test_instance_unknown_architecture(self): # Test if the architecture is unknown. instance = jsonutils.to_primitive(self._create_fake_instance( params={'architecture': ''})) try: self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertNotEqual(instance['architecture'], 'Unknown') finally: db.instance_destroy(self.context, instance['uuid']) def test_instance_name_template(self): # Test the instance_name template. self.flags(instance_name_template='instance-%d') i_ref = self._create_fake_instance() self.assertEqual(i_ref['name'], 'instance-%d' % i_ref['id']) db.instance_destroy(self.context, i_ref['uuid']) self.flags(instance_name_template='instance-%(uuid)s') i_ref = self._create_fake_instance() self.assertEqual(i_ref['name'], 'instance-%s' % i_ref['uuid']) db.instance_destroy(self.context, i_ref['uuid']) self.flags(instance_name_template='%(id)d-%(uuid)s') i_ref = self._create_fake_instance() self.assertEqual(i_ref['name'], '%d-%s' % (i_ref['id'], i_ref['uuid'])) db.instance_destroy(self.context, i_ref['uuid']) # not allowed.. default is uuid self.flags(instance_name_template='%(name)s') i_ref = self._create_fake_instance() self.assertEqual(i_ref['name'], i_ref['uuid']) db.instance_destroy(self.context, i_ref['uuid']) def test_add_remove_fixed_ip(self): instance = self._create_fake_instance(params={'host': CONF.host}) self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.add_fixed_ip(self.context, self._objectify(instance), '1') self.compute_api.remove_fixed_ip(self.context, self._objectify(instance), '192.168.1.1') self.compute_api.delete(self.context, self._objectify(instance)) def test_attach_volume_invalid(self): self.assertRaises(exception.InvalidDevicePath, self.compute_api.attach_volume, self.context, {'locked': False, 'vm_state': vm_states.ACTIVE, 'task_state': None, 'launched_at': timeutils.utcnow()}, None, '/invalid') def test_no_attach_volume_in_rescue_state(self): def fake(*args, **kwargs): pass def fake_volume_get(self, context, volume_id): return {'id': volume_id} self.stubs.Set(cinder.API, 'get', fake_volume_get) self.stubs.Set(cinder.API, 'check_attach', fake) self.stubs.Set(cinder.API, 'reserve_volume', fake) self.assertRaises(exception.InstanceInvalidState, self.compute_api.attach_volume, self.context, {'uuid': 'fake_uuid', 'locked': False, 'vm_state': vm_states.RESCUED}, None, '/dev/vdb') def test_no_attach_volume_in_suspended_state(self): self.assertRaises(exception.InstanceInvalidState, self.compute_api.attach_volume, self.context, {'uuid': 'fake_uuid', 'locked': False, 'vm_state': vm_states.SUSPENDED}, {'id': 'fake-volume-id'}, '/dev/vdb') def test_no_detach_volume_in_rescue_state(self): # Ensure volume can be detached from instance params = {'vm_state': vm_states.RESCUED} instance = self._create_fake_instance(params=params) volume = {'id': 1, 'attach_status': 'in-use', 'instance_uuid': instance['uuid']} self.assertRaises(exception.InstanceInvalidState, self.compute_api.detach_volume, self.context, instance, volume) @mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(cinder.API, 'get') def test_no_rescue_in_volume_state_attaching(self, mock_get_vol, mock_get_bdms): # Make sure a VM cannot be rescued while volume is being attached instance = self._create_fake_instance() bdms, volume = self._fake_rescue_block_devices(instance) mock_get_vol.return_value = {'id': volume['id'], 'status': "attaching"} mock_get_bdms.return_value = bdms self.assertRaises(exception.InvalidVolume, self.compute_api.rescue, self.context, instance) def test_vnc_console(self): # Make sure we can a vnc console for an instance. fake_instance = {'uuid': 'fake_uuid', 'host': 'fake_compute_host'} fake_console_type = "novnc" fake_connect_info = {'token': 'fake_token', 'console_type': fake_console_type, 'host': 'fake_console_host', 'port': 'fake_console_port', 'internal_access_path': 'fake_access_path', 'instance_uuid': fake_instance['uuid'], 'access_url': 'fake_console_url'} rpcapi = compute_rpcapi.ComputeAPI self.mox.StubOutWithMock(rpcapi, 'get_vnc_console') rpcapi.get_vnc_console( self.context, instance=fake_instance, console_type=fake_console_type).AndReturn(fake_connect_info) self.mox.StubOutWithMock(self.compute_api.consoleauth_rpcapi, 'authorize_console') self.compute_api.consoleauth_rpcapi.authorize_console( self.context, 'fake_token', fake_console_type, 'fake_console_host', 'fake_console_port', 'fake_access_path', 'fake_uuid') self.mox.ReplayAll() console = self.compute_api.get_vnc_console(self.context, fake_instance, fake_console_type) self.assertEqual(console, {'url': 'fake_console_url'}) def test_get_vnc_console_no_host(self): instance = self._create_fake_instance(params={'host': ''}) self.assertRaises(exception.InstanceNotReady, self.compute_api.get_vnc_console, self.context, instance, 'novnc') db.instance_destroy(self.context, instance['uuid']) def test_spice_console(self): # Make sure we can a spice console for an instance. fake_instance = {'uuid': 'fake_uuid', 'host': 'fake_compute_host'} fake_console_type = "spice-html5" fake_connect_info = {'token': 'fake_token', 'console_type': fake_console_type, 'host': 'fake_console_host', 'port': 'fake_console_port', 'internal_access_path': 'fake_access_path', 'instance_uuid': fake_instance['uuid'], 'access_url': 'fake_console_url'} rpcapi = compute_rpcapi.ComputeAPI self.mox.StubOutWithMock(rpcapi, 'get_spice_console') rpcapi.get_spice_console( self.context, instance=fake_instance, console_type=fake_console_type).AndReturn(fake_connect_info) self.mox.StubOutWithMock(self.compute_api.consoleauth_rpcapi, 'authorize_console') self.compute_api.consoleauth_rpcapi.authorize_console( self.context, 'fake_token', fake_console_type, 'fake_console_host', 'fake_console_port', 'fake_access_path', 'fake_uuid') self.mox.ReplayAll() console = self.compute_api.get_spice_console(self.context, fake_instance, fake_console_type) self.assertEqual(console, {'url': 'fake_console_url'}) def test_get_spice_console_no_host(self): instance = self._create_fake_instance(params={'host': ''}) self.assertRaises(exception.InstanceNotReady, self.compute_api.get_spice_console, self.context, instance, 'spice') db.instance_destroy(self.context, instance['uuid']) def test_rdp_console(self): # Make sure we can a rdp console for an instance. fake_instance = {'uuid': 'fake_uuid', 'host': 'fake_compute_host'} fake_console_type = "rdp-html5" fake_connect_info = {'token': 'fake_token', 'console_type': fake_console_type, 'host': 'fake_console_host', 'port': 'fake_console_port', 'internal_access_path': 'fake_access_path', 'instance_uuid': fake_instance['uuid'], 'access_url': 'fake_console_url'} rpcapi = compute_rpcapi.ComputeAPI self.mox.StubOutWithMock(rpcapi, 'get_rdp_console') rpcapi.get_rdp_console( self.context, instance=fake_instance, console_type=fake_console_type).AndReturn(fake_connect_info) self.mox.StubOutWithMock(self.compute_api.consoleauth_rpcapi, 'authorize_console') self.compute_api.consoleauth_rpcapi.authorize_console( self.context, 'fake_token', fake_console_type, 'fake_console_host', 'fake_console_port', 'fake_access_path', 'fake_uuid') self.mox.ReplayAll() console = self.compute_api.get_rdp_console(self.context, fake_instance, fake_console_type) self.assertEqual(console, {'url': 'fake_console_url'}) def test_get_rdp_console_no_host(self): instance = self._create_fake_instance(params={'host': ''}) self.assertRaises(exception.InstanceNotReady, self.compute_api.get_rdp_console, self.context, instance, 'rdp') db.instance_destroy(self.context, instance['uuid']) def test_console_output(self): fake_instance = {'uuid': 'fake_uuid', 'host': 'fake_compute_host'} fake_tail_length = 699 fake_console_output = 'fake console output' rpcapi = compute_rpcapi.ComputeAPI self.mox.StubOutWithMock(rpcapi, 'get_console_output') rpcapi.get_console_output( self.context, instance=fake_instance, tail_length=fake_tail_length).AndReturn(fake_console_output) self.mox.ReplayAll() output = self.compute_api.get_console_output(self.context, fake_instance, tail_length=fake_tail_length) self.assertEqual(output, fake_console_output) def test_console_output_no_host(self): instance = self._create_fake_instance(params={'host': ''}) self.assertRaises(exception.InstanceNotReady, self.compute_api.get_console_output, self.context, instance) db.instance_destroy(self.context, instance['uuid']) def test_attach_interface(self): new_type = flavors.get_flavor_by_flavor_id('4') sys_meta = flavors.save_flavor_info({}, new_type) instance = instance_obj.Instance(image_ref='foo', system_metadata=sys_meta) self.mox.StubOutWithMock(self.compute.network_api, 'allocate_port_for_instance') nwinfo = [fake_network_cache_model.new_vif()] network_id = nwinfo[0]['network']['id'] port_id = nwinfo[0]['id'] req_ip = '1.2.3.4' self.compute.network_api.allocate_port_for_instance( self.context, instance, port_id, network_id, req_ip ).AndReturn(nwinfo) self.mox.ReplayAll() vif = self.compute.attach_interface(self.context, instance, network_id, port_id, req_ip) self.assertEqual(vif['id'], network_id) return nwinfo, port_id def test_detach_interface(self): nwinfo, port_id = self.test_attach_interface() self.stubs.Set(self.compute, '_get_instance_nw_info', lambda *a, **k: nwinfo) self.stubs.Set(self.compute.network_api, 'deallocate_port_for_instance', lambda a, b, c: []) instance = instance_obj.Instance() self.compute.detach_interface(self.context, instance, port_id) self.assertEqual(self.compute.driver._interfaces, {}) def test_attach_volume(self): fake_bdm = fake_block_device.FakeDbBlockDeviceDict( {'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'fake-volume-id', 'device_name': '/dev/vdb'}) instance = self._create_fake_instance() fake_volume = {'id': 'fake-volume-id'} with contextlib.nested( mock.patch.object(cinder.API, 'get', return_value=fake_volume), mock.patch.object(cinder.API, 'check_attach'), mock.patch.object(cinder.API, 'reserve_volume'), mock.patch.object(compute_rpcapi.ComputeAPI, 'reserve_block_device_name', return_value='/dev/vdb'), mock.patch.object(db, 'block_device_mapping_get_by_volume_id', return_value=fake_bdm), mock.patch.object(compute_rpcapi.ComputeAPI, 'attach_volume') ) as (mock_get, mock_check_attach, mock_reserve_vol, mock_reserve_bdm, mock_bdm_get, mock_attach): self.compute_api.attach_volume( self.context, instance, 'fake-volume-id', '/dev/vdb', 'ide', 'cdrom') mock_reserve_bdm.assert_called_once_with( self.context, device='/dev/vdb', instance=instance, volume_id='fake-volume-id', disk_bus='ide', device_type='cdrom') mock_bdm_get.assert_called_once_with( self.context, 'fake-volume-id', []) self.assertEqual(mock_get.call_args, mock.call(self.context, 'fake-volume-id')) self.assertEqual(mock_check_attach.call_args, mock.call( self.context, fake_volume, instance=instance)) mock_reserve_vol.assert_called_once_with( self.context, 'fake-volume-id') a, kw = mock_attach.call_args self.assertEqual(kw['volume_id'], 'fake-volume-id') self.assertEqual(kw['mountpoint'], '/dev/vdb') self.assertEqual(kw['bdm'].device_name, '/dev/vdb') self.assertEqual(kw['bdm'].volume_id, 'fake-volume-id') def test_attach_volume_no_device(self): called = {} def fake_check_attach(*args, **kwargs): called['fake_check_attach'] = True def fake_reserve_volume(*args, **kwargs): called['fake_reserve_volume'] = True def fake_volume_get(self, context, volume_id): called['fake_volume_get'] = True return {'id': volume_id} def fake_rpc_attach_volume(self, context, **kwargs): called['fake_rpc_attach_volume'] = True def fake_rpc_reserve_block_device_name(self, context, **kwargs): called['fake_rpc_reserve_block_device_name'] = True self.stubs.Set(cinder.API, 'get', fake_volume_get) self.stubs.Set(cinder.API, 'check_attach', fake_check_attach) self.stubs.Set(cinder.API, 'reserve_volume', fake_reserve_volume) self.stubs.Set(compute_rpcapi.ComputeAPI, 'reserve_block_device_name', fake_rpc_reserve_block_device_name) self.stubs.Set(compute_rpcapi.ComputeAPI, 'attach_volume', fake_rpc_attach_volume) self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'get_by_volume_id') block_device_obj.BlockDeviceMapping.get_by_volume_id( self.context, mox.IgnoreArg()).AndReturn('fake-bdm') self.mox.ReplayAll() instance = self._create_fake_instance() self.compute_api.attach_volume(self.context, instance, 1, device=None) self.assertTrue(called.get('fake_check_attach')) self.assertTrue(called.get('fake_reserve_volume')) self.assertTrue(called.get('fake_reserve_volume')) self.assertTrue(called.get('fake_rpc_reserve_block_device_name')) self.assertTrue(called.get('fake_rpc_attach_volume')) def test_detach_volume(self): # Ensure volume can be detached from instance called = {} instance = self._create_fake_instance() volume = {'id': 1, 'attach_status': 'in-use', 'instance_uuid': instance['uuid']} def fake_check_detach(*args, **kwargs): called['fake_check_detach'] = True def fake_begin_detaching(*args, **kwargs): called['fake_begin_detaching'] = True def fake_rpc_detach_volume(self, context, **kwargs): called['fake_rpc_detach_volume'] = True self.stubs.Set(cinder.API, 'check_detach', fake_check_detach) self.stubs.Set(cinder.API, 'begin_detaching', fake_begin_detaching) self.stubs.Set(compute_rpcapi.ComputeAPI, 'detach_volume', fake_rpc_detach_volume) self.compute_api.detach_volume(self.context, instance, volume) self.assertTrue(called.get('fake_check_detach')) self.assertTrue(called.get('fake_begin_detaching')) self.assertTrue(called.get('fake_rpc_detach_volume')) def test_detach_invalid_volume(self): # Ensure exception is raised while detaching an un-attached volume instance = {'uuid': 'uuid1', 'locked': False, 'launched_at': timeutils.utcnow(), 'vm_state': vm_states.ACTIVE, 'task_state': None} volume = {'id': 1, 'attach_status': 'detached'} self.assertRaises(exception.InvalidVolume, self.compute_api.detach_volume, self.context, instance, volume) def test_detach_unattached_volume(self): # Ensure exception is raised when volume's idea of attached # instance doesn't match. instance = {'uuid': 'uuid1', 'locked': False, 'launched_at': timeutils.utcnow(), 'vm_state': vm_states.ACTIVE, 'task_state': None} volume = {'id': 1, 'attach_status': 'in-use', 'instance_uuid': 'uuid2'} self.assertRaises(exception.VolumeUnattached, self.compute_api.detach_volume, self.context, instance, volume) def test_detach_suspended_instance_fails(self): instance = {'uuid': 'uuid1', 'locked': False, 'launched_at': timeutils.utcnow(), 'vm_state': vm_states.SUSPENDED, 'task_state': None} volume = {'id': 1, 'attach_status': 'in-use', 'instance_uuid': 'uuid2'} self.assertRaises(exception.InstanceInvalidState, self.compute_api.detach_volume, self.context, instance, volume) def test_detach_volume_libvirt_is_down(self): # Ensure rollback during detach if libvirt goes down called = {} instance = self._create_fake_instance() fake_bdm = fake_block_device.FakeDbBlockDeviceDict( {'device_name': '/dev/vdb', 'volume_id': 1, 'source_type': 'snapshot', 'destination_type': 'volume', 'connection_info': '{"test": "test"}'}) def fake_libvirt_driver_instance_exists(*args, **kwargs): called['fake_libvirt_driver_instance_exists'] = True return False def fake_libvirt_driver_detach_volume_fails(*args, **kwargs): called['fake_libvirt_driver_detach_volume_fails'] = True raise AttributeError() def fake_roll_detaching(*args, **kwargs): called['fake_roll_detaching'] = True self.stubs.Set(cinder.API, 'roll_detaching', fake_roll_detaching) self.stubs.Set(self.compute.driver, "instance_exists", fake_libvirt_driver_instance_exists) self.stubs.Set(self.compute.driver, "detach_volume", fake_libvirt_driver_detach_volume_fails) self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'get_by_volume_id') block_device_obj.BlockDeviceMapping.get_by_volume_id( self.context, 1).AndReturn(block_device_obj.BlockDeviceMapping( **fake_bdm)) self.mox.ReplayAll() self.assertRaises(AttributeError, self.compute.detach_volume, self.context, 1, instance) self.assertTrue(called.get('fake_libvirt_driver_instance_exists')) self.assertTrue(called.get('fake_roll_detaching')) def test_terminate_with_volumes(self): # Make sure that volumes get detached during instance termination. admin = context.get_admin_context() instance = self._create_fake_instance_obj() volume_id = 'fake' values = {'instance_uuid': instance['uuid'], 'device_name': '/dev/vdc', 'delete_on_termination': False, 'volume_id': volume_id, } db.block_device_mapping_create(admin, values) def fake_volume_get(self, context, volume_id): return {'id': volume_id} self.stubs.Set(cinder.API, "get", fake_volume_get) # Stub out and record whether it gets detached result = {"detached": False} def fake_detach(self, context, volume_id_param): result["detached"] = volume_id_param == volume_id self.stubs.Set(cinder.API, "detach", fake_detach) def fake_terminate_connection(self, context, volume_id, connector): return {} self.stubs.Set(cinder.API, "terminate_connection", fake_terminate_connection) # Kill the instance and check that it was detached bdms = db.block_device_mapping_get_all_by_instance(admin, instance['uuid']) self.compute.terminate_instance(admin, self._objectify(instance), bdms, []) self.assertTrue(result["detached"]) def test_terminate_deletes_all_bdms(self): admin = context.get_admin_context() instance = self._create_fake_instance_obj() img_bdm = {'instance_uuid': instance['uuid'], 'device_name': '/dev/vda', 'source_type': 'image', 'destination_type': 'local', 'delete_on_termination': False, 'boot_index': 0, 'image_id': 'fake_image'} vol_bdm = {'instance_uuid': instance['uuid'], 'device_name': '/dev/vdc', 'source_type': 'volume', 'destination_type': 'volume', 'delete_on_termination': False, 'volume_id': 'fake_vol'} bdms = [] for bdm in img_bdm, vol_bdm: bdm_obj = block_device_obj.BlockDeviceMapping(**bdm) bdm_obj.create(admin) bdms.append(bdm_obj) self.stubs.Set(self.compute, 'volume_api', mox.MockAnything()) self.stubs.Set(self.compute, '_prep_block_device', mox.MockAnything()) self.compute.run_instance(self.context, instance, {}, {}, None, None, None, True, None, False) self.compute.terminate_instance(self.context, self._objectify(instance), bdms, []) bdms = db.block_device_mapping_get_all_by_instance(admin, instance['uuid']) self.assertEqual(len(bdms), 0) def test_inject_network_info(self): instance = self._create_fake_instance(params={'host': CONF.host}) self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, None, None, None, True, None, False) instance = self.compute_api.get(self.context, instance['uuid'], want_objects=True) self.compute_api.inject_network_info(self.context, instance) self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.delete(self.context, instance) def test_reset_network(self): instance = self._create_fake_instance() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, None, None, None, True, None, False) instance = self.compute_api.get(self.context, instance['uuid'], want_objects=True) self.compute_api.reset_network(self.context, instance) def test_lock(self): instance = self._create_fake_instance_obj() self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.lock(self.context, instance) def test_unlock(self): instance = self._create_fake_instance_obj() self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.unlock(self.context, instance) def test_get_lock(self): instance = self._create_fake_instance() self.assertFalse(self.compute_api.get_lock(self.context, instance)) db.instance_update(self.context, instance['uuid'], {'locked': True}) self.assertTrue(self.compute_api.get_lock(self.context, instance)) def test_add_remove_security_group(self): instance = self._create_fake_instance() self.compute.run_instance(self.context, jsonutils.to_primitive(instance), {}, {}, None, None, None, True, None, False) instance = self.compute_api.get(self.context, instance['uuid']) security_group_name = self._create_group()['name'] self.security_group_api.add_to_instance(self.context, instance, security_group_name) self.security_group_api.remove_from_instance(self.context, instance, security_group_name) def test_get_diagnostics(self): instance = self._create_fake_instance_obj() rpcapi = compute_rpcapi.ComputeAPI self.mox.StubOutWithMock(rpcapi, 'get_diagnostics') rpcapi.get_diagnostics(self.context, instance=instance) self.mox.ReplayAll() self.compute_api.get_diagnostics(self.context, instance) self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.delete(self.context, self._objectify(instance)) def test_secgroup_refresh(self): instance = self._create_fake_instance() def rule_get(*args, **kwargs): mock_rule = db_fakes.FakeModel({'parent_group_id': 1}) return [mock_rule] def group_get(*args, **kwargs): mock_group = db_fakes.FakeModel({'instances': [instance]}) return mock_group self.stubs.Set( self.compute_api.db, 'security_group_rule_get_by_security_group_grantee', rule_get) self.stubs.Set(self.compute_api.db, 'security_group_get', group_get) rpcapi = self.security_group_api.security_group_rpcapi self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules') rpcapi.refresh_instance_security_rules(self.context, instance['host'], instance) self.mox.ReplayAll() self.security_group_api.trigger_members_refresh(self.context, [1]) def test_secgroup_refresh_once(self): instance = self._create_fake_instance() def rule_get(*args, **kwargs): mock_rule = db_fakes.FakeModel({'parent_group_id': 1}) return [mock_rule] def group_get(*args, **kwargs): mock_group = db_fakes.FakeModel({'instances': [instance]}) return mock_group self.stubs.Set( self.compute_api.db, 'security_group_rule_get_by_security_group_grantee', rule_get) self.stubs.Set(self.compute_api.db, 'security_group_get', group_get) rpcapi = self.security_group_api.security_group_rpcapi self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules') rpcapi.refresh_instance_security_rules(self.context, instance['host'], instance) self.mox.ReplayAll() self.security_group_api.trigger_members_refresh(self.context, [1, 2]) def test_secgroup_refresh_none(self): def rule_get(*args, **kwargs): mock_rule = db_fakes.FakeModel({'parent_group_id': 1}) return [mock_rule] def group_get(*args, **kwargs): mock_group = db_fakes.FakeModel({'instances': []}) return mock_group self.stubs.Set( self.compute_api.db, 'security_group_rule_get_by_security_group_grantee', rule_get) self.stubs.Set(self.compute_api.db, 'security_group_get', group_get) rpcapi = self.security_group_api.security_group_rpcapi self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules') self.mox.ReplayAll() self.security_group_api.trigger_members_refresh(self.context, [1]) def test_secrule_refresh(self): instance = self._create_fake_instance() def group_get(*args, **kwargs): mock_group = db_fakes.FakeModel({'instances': [instance]}) return mock_group self.stubs.Set(self.compute_api.db, 'security_group_get', group_get) rpcapi = self.security_group_api.security_group_rpcapi self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules') rpcapi.refresh_instance_security_rules(self.context, instance['host'], instance) self.mox.ReplayAll() self.security_group_api.trigger_rules_refresh(self.context, [1]) def test_secrule_refresh_once(self): instance = self._create_fake_instance() def group_get(*args, **kwargs): mock_group = db_fakes.FakeModel({'instances': [instance]}) return mock_group self.stubs.Set(self.compute_api.db, 'security_group_get', group_get) rpcapi = self.security_group_api.security_group_rpcapi self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules') rpcapi.refresh_instance_security_rules(self.context, instance['host'], instance) self.mox.ReplayAll() self.security_group_api.trigger_rules_refresh(self.context, [1, 2]) def test_secrule_refresh_none(self): def group_get(*args, **kwargs): mock_group = db_fakes.FakeModel({'instances': []}) return mock_group self.stubs.Set(self.compute_api.db, 'security_group_get', group_get) rpcapi = self.security_group_api.security_group_rpcapi self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules') self.mox.ReplayAll() self.security_group_api.trigger_rules_refresh(self.context, [1, 2]) def test_live_migrate(self): instance, instance_uuid = self._run_instance() instance = self._objectify(instance) rpcapi = self.compute_api.compute_task_api self.mox.StubOutWithMock(rpcapi, 'live_migrate_instance') rpcapi.live_migrate_instance(self.context, instance, 'fake_dest_host', block_migration=True, disk_over_commit=True) self.mox.ReplayAll() self.compute_api.live_migrate(self.context, instance, block_migration=True, disk_over_commit=True, host_name='fake_dest_host') instance.refresh() self.assertEqual(instance['task_state'], task_states.MIGRATING) def test_evacuate(self): instance = jsonutils.to_primitive(self._create_fake_instance( services=True)) instance_uuid = instance['uuid'] instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertIsNone(instance['task_state']) def fake_service_is_up(*args, **kwargs): return False def fake_rebuild_instance(*args, **kwargs): db.instance_update(self.context, instance_uuid, {'host': kwargs['host']}) self.stubs.Set(self.compute_api.servicegroup_api, 'service_is_up', fake_service_is_up) self.stubs.Set(self.compute_api.compute_rpcapi, 'rebuild_instance', fake_rebuild_instance) self.compute_api.evacuate(self.context.elevated(), instance, host='fake_dest_host', on_shared_storage=True, admin_password=None) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEqual(instance['task_state'], task_states.REBUILDING) self.assertEqual(instance['host'], 'fake_dest_host') db.instance_destroy(self.context, instance['uuid']) def test_fail_evacuate_from_non_existing_host(self): inst = {} inst['vm_state'] = vm_states.ACTIVE inst['launched_at'] = timeutils.utcnow() inst['image_ref'] = FAKE_IMAGE_REF inst['reservation_id'] = 'r-fakeres' inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['host'] = 'fake_host' inst['node'] = NODENAME type_id = flavors.get_flavor_by_name('m1.tiny')['id'] inst['instance_type_id'] = type_id inst['ami_launch_index'] = 0 inst['memory_mb'] = 0 inst['vcpus'] = 0 inst['root_gb'] = 0 inst['ephemeral_gb'] = 0 inst['architecture'] = 'x86_64' inst['os_type'] = 'Linux' instance = jsonutils.to_primitive(db.instance_create(self.context, inst)) instance_uuid = instance['uuid'] instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertIsNone(instance['task_state']) self.assertRaises(exception.ComputeHostNotFound, self.compute_api.evacuate, self.context.elevated(), instance, host='fake_dest_host', on_shared_storage=True, admin_password=None) db.instance_destroy(self.context, instance['uuid']) def test_fail_evacuate_from_running_host(self): instance = jsonutils.to_primitive(self._create_fake_instance( services=True)) instance_uuid = instance['uuid'] instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertIsNone(instance['task_state']) def fake_service_is_up(*args, **kwargs): return True self.stubs.Set(self.compute_api.servicegroup_api, 'service_is_up', fake_service_is_up) self.assertRaises(exception.ComputeServiceInUse, self.compute_api.evacuate, self.context.elevated(), instance, host='fake_dest_host', on_shared_storage=True, admin_password=None) db.instance_destroy(self.context, instance['uuid']) def test_fail_evacuate_instance_in_wrong_state(self): instances = [ jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.BUILDING})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.PAUSED})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.SUSPENDED})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.RESCUED})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.RESIZED})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.SOFT_DELETED})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.DELETED})), jsonutils.to_primitive(self._create_fake_instance( {'vm_state': vm_states.ERROR})) ] for instance in instances: self.assertRaises(exception.InstanceInvalidState, self.compute_api.evacuate, self.context, instance, host='fake_dest_host', on_shared_storage=True, admin_password=None) db.instance_destroy(self.context, instance['uuid']) def test_get_migrations(self): migration = test_migration.fake_db_migration(uuid="1234") filters = {'host': 'host1'} self.mox.StubOutWithMock(db, "migration_get_all_by_filters") db.migration_get_all_by_filters(self.context, filters).AndReturn([migration]) self.mox.ReplayAll() migrations = self.compute_api.get_migrations(self.context, filters) self.assertEqual(1, len(migrations)) self.assertEqual(migrations[0].id, migration['id']) def fake_rpc_method(context, method, **kwargs): pass def _create_service_entries(context, values={'avail_zone1': ['fake_host1', 'fake_host2'], 'avail_zone2': ['fake_host3'], }): for avail_zone, hosts in values.iteritems(): for host in hosts: db.service_create(context, {'host': host, 'binary': 'nova-compute', 'topic': 'compute', 'report_count': 0}) return values class ComputeAPIAggrTestCase(BaseTestCase): """This is for unit coverage of aggregate-related methods defined in nova.compute.api. """ def setUp(self): super(ComputeAPIAggrTestCase, self).setUp() self.api = compute_api.AggregateAPI() self.context = context.get_admin_context() self.stubs.Set(self.api.compute_rpcapi.client, 'call', fake_rpc_method) self.stubs.Set(self.api.compute_rpcapi.client, 'cast', fake_rpc_method) def test_aggregate_no_zone(self): # Ensure we can create an aggregate without an availability zone aggr = self.api.create_aggregate(self.context, 'fake_aggregate', None) self.api.delete_aggregate(self.context, aggr['id']) db.aggregate_get(self.context.elevated(read_deleted='yes'), aggr['id']) self.assertRaises(exception.AggregateNotFound, self.api.delete_aggregate, self.context, aggr['id']) def test_check_az_for_aggregate(self): # Ensure all conflict hosts can be returned values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host1 = values[fake_zone][0] fake_host2 = values[fake_zone][1] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host1) aggr1 = self._init_aggregate_with_host(aggr1, None, None, fake_host2) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host2) aggr2 = self._init_aggregate_with_host(aggr2, None, None, fake_host1) metadata = {'availability_zone': 'another_zone'} self.assertRaises(exception.InvalidAggregateAction, self.api.update_aggregate, self.context, aggr2['id'], metadata) def test_update_aggregate(self): # Ensure metadata can be updated. aggr = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_zone') fake_notifier.NOTIFICATIONS = [] aggr = self.api.update_aggregate(self.context, aggr['id'], {'name': 'new_fake_aggregate'}) self.assertIsNone(availability_zones._get_cache().get('cache')) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.updateprop.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.updateprop.end') def test_update_aggregate_no_az(self): # Ensure metadata without availability zone can be # updated,even the aggregate contains hosts belong # to another availability zone values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host) metadata = {'name': 'new_fake_aggregate'} fake_notifier.NOTIFICATIONS = [] aggr2 = self.api.update_aggregate(self.context, aggr2['id'], metadata) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.updateprop.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.updateprop.end') def test_update_aggregate_az_change(self): # Ensure availability zone can be updated, # when the aggregate is the only one with # availability zone values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host) metadata = {'availability_zone': 'new_fake_zone'} fake_notifier.NOTIFICATIONS = [] aggr1 = self.api.update_aggregate(self.context, aggr1['id'], metadata) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.updateprop.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.updateprop.end') def test_update_aggregate_az_fails(self): # Ensure aggregate's availability zone can't be updated, # when aggregate has hosts in other availability zone fake_notifier.NOTIFICATIONS = [] values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host) metadata = {'availability_zone': 'another_zone'} self.assertRaises(exception.InvalidAggregateAction, self.api.update_aggregate, self.context, aggr2['id'], metadata) fake_host2 = values[fake_zone][1] aggr3 = self._init_aggregate_with_host(None, 'fake_aggregate3', None, fake_host2) metadata = {'availability_zone': fake_zone} aggr3 = self.api.update_aggregate(self.context, aggr3['id'], metadata) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 15) msg = fake_notifier.NOTIFICATIONS[13] self.assertEqual(msg.event_type, 'aggregate.updateprop.start') msg = fake_notifier.NOTIFICATIONS[14] self.assertEqual(msg.event_type, 'aggregate.updateprop.end') def test_update_aggregate_metadata(self): # Ensure metadata can be updated. aggr = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_zone') metadata = {'foo_key1': 'foo_value1', 'foo_key2': 'foo_value2', 'availability_zone': 'fake_zone'} fake_notifier.NOTIFICATIONS = [] availability_zones._get_cache().add('fake_key', 'fake_value') aggr = self.api.update_aggregate_metadata(self.context, aggr['id'], metadata) self.assertIsNone(availability_zones._get_cache().get('fake_key')) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.end') metadata['foo_key1'] = None expected = self.api.update_aggregate_metadata(self.context, aggr['id'], metadata) self.assertThat(expected['metadata'], matchers.DictMatches({'availability_zone': 'fake_zone', 'foo_key2': 'foo_value2'})) def test_update_aggregate_metadata_no_az(self): # Ensure metadata without availability zone can be # updated,even the aggregate contains hosts belong # to another availability zone values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host) metadata = {'foo_key2': 'foo_value3'} fake_notifier.NOTIFICATIONS = [] aggr2 = self.api.update_aggregate_metadata(self.context, aggr2['id'], metadata) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.end') self.assertThat(aggr2['metadata'], matchers.DictMatches({'foo_key2': 'foo_value3'})) def test_update_aggregate_metadata_az_change(self): # Ensure availability zone can be updated, # when the aggregate is the only one with # availability zone values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host) metadata = {'availability_zone': 'new_fake_zone'} fake_notifier.NOTIFICATIONS = [] aggr1 = self.api.update_aggregate_metadata(self.context, aggr1['id'], metadata) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.end') def test_update_aggregate_metadata_az_fails(self): # Ensure aggregate's availability zone can't be updated, # when aggregate has hosts in other availability zone fake_notifier.NOTIFICATIONS = [] values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr1 = self._init_aggregate_with_host(None, 'fake_aggregate1', fake_zone, fake_host) aggr2 = self._init_aggregate_with_host(None, 'fake_aggregate2', None, fake_host) metadata = {'availability_zone': 'another_zone'} self.assertRaises(exception.InvalidAggregateAction, self.api.update_aggregate_metadata, self.context, aggr2['id'], metadata) fake_host2 = values[fake_zone][1] aggr3 = self._init_aggregate_with_host(None, 'fake_aggregate3', None, fake_host) metadata = {'availability_zone': fake_zone} aggr3 = self.api.update_aggregate_metadata(self.context, aggr3['id'], metadata) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 15) msg = fake_notifier.NOTIFICATIONS[13] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.start') msg = fake_notifier.NOTIFICATIONS[14] self.assertEqual(msg.event_type, 'aggregate.updatemetadata.end') def test_delete_aggregate(self): # Ensure we can delete an aggregate. fake_notifier.NOTIFICATIONS = [] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_zone') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.create.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.create.end') fake_notifier.NOTIFICATIONS = [] self.api.delete_aggregate(self.context, aggr['id']) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.delete.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.delete.end') db.aggregate_get(self.context.elevated(read_deleted='yes'), aggr['id']) self.assertRaises(exception.AggregateNotFound, self.api.delete_aggregate, self.context, aggr['id']) def test_delete_non_empty_aggregate(self): # Ensure InvalidAggregateAction is raised when non empty aggregate. _create_service_entries(self.context, {'fake_availability_zone': ['fake_host']}) aggr = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_availability_zone') self.api.add_host_to_aggregate(self.context, aggr['id'], 'fake_host') self.assertRaises(exception.InvalidAggregateAction, self.api.delete_aggregate, self.context, aggr['id']) def test_add_host_to_aggregate(self): # Ensure we can add a host to an aggregate. values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) def fake_add_aggregate_host(*args, **kwargs): hosts = kwargs["aggregate"]["hosts"] self.assertIn(fake_host, hosts) self.stubs.Set(self.api.compute_rpcapi, 'add_aggregate_host', fake_add_aggregate_host) self.mox.StubOutWithMock(availability_zones, 'update_host_availability_zone_cache') availability_zones.update_host_availability_zone_cache(self.context, fake_host) self.mox.ReplayAll() fake_notifier.NOTIFICATIONS = [] aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], fake_host) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.addhost.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.addhost.end') self.assertEqual(len(aggr['hosts']), 1) def test_add_host_to_aggr_with_no_az(self): values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], fake_host) aggr_no_az = self.api.create_aggregate(self.context, 'fake_aggregate2', None) aggr_no_az = self.api.add_host_to_aggregate(self.context, aggr_no_az['id'], fake_host) self.assertIn(fake_host, aggr['hosts']) self.assertIn(fake_host, aggr_no_az['hosts']) def test_add_host_no_az_metadata(self): # NOTE(mtreinish) based on how create works this is not how the # the metadata is supposed to end up in the database but it has # been seen. See lp bug #1209007. This test just confirms that # the host is still added to the aggregate if there is no # availability zone metadata. def fake_aggregate_metadata_get_by_metadata_key(*args, **kwargs): return {'meta_key': 'fake_value'} self.stubs.Set(self.compute.db, 'aggregate_metadata_get_by_metadata_key', fake_aggregate_metadata_get_by_metadata_key) values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], fake_host) self.assertIn(fake_host, aggr['hosts']) def test_add_host_to_multi_az(self): # Ensure we can't add a host to different availability zone values = _create_service_entries(self.context) fake_zone = values.keys()[0] fake_host = values[fake_zone][0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], fake_host) self.assertEqual(len(aggr['hosts']), 1) fake_zone2 = "another_zone" aggr2 = self.api.create_aggregate(self.context, 'fake_aggregate2', fake_zone2) self.assertRaises(exception.InvalidAggregateAction, self.api.add_host_to_aggregate, self.context, aggr2['id'], fake_host) def test_add_host_to_aggregate_multiple(self): # Ensure we can add multiple hosts to an aggregate. values = _create_service_entries(self.context) fake_zone = values.keys()[0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) for host in values[fake_zone]: aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], host) self.assertEqual(len(aggr['hosts']), len(values[fake_zone])) def test_add_host_to_aggregate_raise_not_found(self): # Ensure ComputeHostNotFound is raised when adding invalid host. aggr = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_zone') fake_notifier.NOTIFICATIONS = [] self.assertRaises(exception.ComputeHostNotFound, self.api.add_host_to_aggregate, self.context, aggr['id'], 'invalid_host') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) self.assertEqual(fake_notifier.NOTIFICATIONS[1].publisher_id, 'compute.fake-mini') def test_remove_host_from_aggregate_active(self): # Ensure we can remove a host from an aggregate. values = _create_service_entries(self.context) fake_zone = values.keys()[0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) for host in values[fake_zone]: aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], host) host_to_remove = values[fake_zone][0] def fake_remove_aggregate_host(*args, **kwargs): hosts = kwargs["aggregate"]["hosts"] self.assertNotIn(host_to_remove, hosts) self.stubs.Set(self.api.compute_rpcapi, 'remove_aggregate_host', fake_remove_aggregate_host) self.mox.StubOutWithMock(availability_zones, 'update_host_availability_zone_cache') availability_zones.update_host_availability_zone_cache(self.context, host_to_remove) self.mox.ReplayAll() fake_notifier.NOTIFICATIONS = [] expected = self.api.remove_host_from_aggregate(self.context, aggr['id'], host_to_remove) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.event_type, 'aggregate.removehost.start') msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg.event_type, 'aggregate.removehost.end') self.assertEqual(len(aggr['hosts']) - 1, len(expected['hosts'])) def test_remove_host_from_aggregate_raise_not_found(self): # Ensure ComputeHostNotFound is raised when removing invalid host. _create_service_entries(self.context, {'fake_zone': ['fake_host']}) aggr = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_zone') self.assertRaises(exception.ComputeHostNotFound, self.api.remove_host_from_aggregate, self.context, aggr['id'], 'invalid_host') def test_aggregate_list(self): aggregate = self.api.create_aggregate(self.context, 'fake_aggregate', 'fake_zone') metadata = {'foo_key1': 'foo_value1', 'foo_key2': 'foo_value2'} meta_aggregate = self.api.create_aggregate(self.context, 'fake_aggregate2', 'fake_zone2') self.api.update_aggregate_metadata(self.context, meta_aggregate['id'], metadata) aggregate_list = self.api.get_aggregate_list(self.context) self.assertIn(aggregate['id'], map(lambda x: x['id'], aggregate_list)) self.assertIn(meta_aggregate['id'], map(lambda x: x['id'], aggregate_list)) self.assertIn('fake_aggregate', map(lambda x: x['name'], aggregate_list)) self.assertIn('fake_aggregate2', map(lambda x: x['name'], aggregate_list)) self.assertIn('fake_zone', map(lambda x: x['availability_zone'], aggregate_list)) self.assertIn('fake_zone2', map(lambda x: x['availability_zone'], aggregate_list)) test_meta_aggregate = aggregate_list[1] self.assertIn('foo_key1', test_meta_aggregate.get('metadata')) self.assertIn('foo_key2', test_meta_aggregate.get('metadata')) self.assertEqual('foo_value1', test_meta_aggregate.get('metadata')['foo_key1']) self.assertEqual('foo_value2', test_meta_aggregate.get('metadata')['foo_key2']) def test_aggregate_list_with_hosts(self): values = _create_service_entries(self.context) fake_zone = values.keys()[0] host_aggregate = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) self.api.add_host_to_aggregate(self.context, host_aggregate['id'], values[fake_zone][0]) aggregate_list = self.api.get_aggregate_list(self.context) aggregate = aggregate_list[0] self.assertIn(values[fake_zone][0], aggregate.get('hosts')) class ComputeAggrTestCase(BaseTestCase): """This is for unit coverage of aggregate-related methods defined in nova.compute.manager. """ def setUp(self): super(ComputeAggrTestCase, self).setUp() self.context = context.get_admin_context() values = {'name': 'test_aggr'} az = {'availability_zone': 'test_zone'} self.aggr = db.aggregate_create(self.context, values, metadata=az) def test_add_aggregate_host(self): def fake_driver_add_to_aggregate(context, aggregate, host, **_ignore): fake_driver_add_to_aggregate.called = True return {"foo": "bar"} self.stubs.Set(self.compute.driver, "add_to_aggregate", fake_driver_add_to_aggregate) self.compute.add_aggregate_host(self.context, host="host", aggregate=jsonutils.to_primitive(self.aggr), slave_info=None) self.assertTrue(fake_driver_add_to_aggregate.called) def test_remove_aggregate_host(self): def fake_driver_remove_from_aggregate(context, aggregate, host, **_ignore): fake_driver_remove_from_aggregate.called = True self.assertEqual("host", host, "host") return {"foo": "bar"} self.stubs.Set(self.compute.driver, "remove_from_aggregate", fake_driver_remove_from_aggregate) self.compute.remove_aggregate_host(self.context, aggregate=jsonutils.to_primitive(self.aggr), host="host", slave_info=None) self.assertTrue(fake_driver_remove_from_aggregate.called) def test_add_aggregate_host_passes_slave_info_to_driver(self): def driver_add_to_aggregate(context, aggregate, host, **kwargs): self.assertEqual(self.context, context) self.assertEqual(aggregate['id'], self.aggr['id']) self.assertEqual(host, "the_host") self.assertEqual("SLAVE_INFO", kwargs.get("slave_info")) self.stubs.Set(self.compute.driver, "add_to_aggregate", driver_add_to_aggregate) self.compute.add_aggregate_host(self.context, host="the_host", slave_info="SLAVE_INFO", aggregate=jsonutils.to_primitive(self.aggr)) def test_remove_from_aggregate_passes_slave_info_to_driver(self): def driver_remove_from_aggregate(context, aggregate, host, **kwargs): self.assertEqual(self.context, context) self.assertEqual(aggregate['id'], self.aggr['id']) self.assertEqual(host, "the_host") self.assertEqual("SLAVE_INFO", kwargs.get("slave_info")) self.stubs.Set(self.compute.driver, "remove_from_aggregate", driver_remove_from_aggregate) self.compute.remove_aggregate_host(self.context, aggregate=jsonutils.to_primitive(self.aggr), host="the_host", slave_info="SLAVE_INFO") class ComputePolicyTestCase(BaseTestCase): def setUp(self): super(ComputePolicyTestCase, self).setUp() self.compute_api = compute.API() def test_actions_are_prefixed(self): self.mox.StubOutWithMock(policy, 'enforce') nova.policy.enforce(self.context, 'compute:reboot', {}) self.mox.ReplayAll() compute_api.check_policy(self.context, 'reboot', {}) def test_wrapped_method(self): instance = self._create_fake_instance(params={'host': None, 'cell_name': 'foo'}) # force delete to fail rules = {"compute:delete": [["false:false"]]} self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.delete, self.context, instance) # reset rules to allow deletion rules = {"compute:delete": []} self.policy.set_rules(rules) self.compute_api.delete(self.context, self._objectify(instance)) def test_create_fail(self): rules = {"compute:create": [["false:false"]]} self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.create, self.context, '1', '1') def test_create_attach_volume_fail(self): rules = { "compute:create": [], "compute:create:attach_network": [["false:false"]], "compute:create:attach_volume": [], } self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.create, self.context, '1', '1', requested_networks='blah', block_device_mapping='blah') def test_create_attach_network_fail(self): rules = { "compute:create": [], "compute:create:attach_network": [], "compute:create:attach_volume": [["false:false"]], } self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.create, self.context, '1', '1', requested_networks='blah', block_device_mapping='blah') def test_get_fail(self): instance = self._create_fake_instance() rules = { "compute:get": [["false:false"]], } self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.get, self.context, instance['uuid']) def test_get_all_fail(self): rules = { "compute:get_all": [["false:false"]], } self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.get_all, self.context) def test_get_instance_faults(self): instance1 = self._create_fake_instance() instance2 = self._create_fake_instance() instances = [instance1, instance2] rules = { "compute:get_instance_faults": [["false:false"]], } self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.get_instance_faults, context.get_admin_context(), instances) def test_force_host_fail(self): rules = {"compute:create": [], "compute:create:forced_host": [["role:fake"]], "network:validate_networks": []} self.policy.set_rules(rules) self.assertRaises(exception.PolicyNotAuthorized, self.compute_api.create, self.context, None, '1', availability_zone='1:1') def test_force_host_pass(self): rules = {"compute:create": [], "compute:create:forced_host": [], "network:validate_networks": []} self.policy.set_rules(rules) self.compute_api.create(self.context, None, '1', availability_zone='1:1') class DisabledInstanceTypesTestCase(BaseTestCase): """Some instance-types are marked 'disabled' which means that they will not show up in customer-facing listings. We do, however, want those instance-types to be available for emergency migrations and for rebuilding of existing instances. One legitimate use of the 'disabled' field would be when phasing out a particular instance-type. We still want customers to be able to use an instance that of the old type, and we want Ops to be able perform migrations against it, but we *don't* want customers building new slices with ths phased-out instance-type. """ def setUp(self): super(DisabledInstanceTypesTestCase, self).setUp() self.compute_api = compute.API() self.inst_type = flavors.get_default_flavor() def test_can_build_instance_from_visible_instance_type(self): self.inst_type['disabled'] = False # Assert that exception.FlavorNotFound is not raised self.compute_api.create(self.context, self.inst_type, image_href='some-fake-image') def test_cannot_build_instance_from_disabled_instance_type(self): self.inst_type['disabled'] = True self.assertRaises(exception.FlavorNotFound, self.compute_api.create, self.context, self.inst_type, None) def test_can_resize_to_visible_instance_type(self): instance = self._create_fake_instance_obj() orig_get_flavor_by_flavor_id =\ flavors.get_flavor_by_flavor_id def fake_get_flavor_by_flavor_id(flavor_id, ctxt=None, read_deleted="yes"): instance_type = orig_get_flavor_by_flavor_id(flavor_id, ctxt, read_deleted) instance_type['disabled'] = False return instance_type self.stubs.Set(flavors, 'get_flavor_by_flavor_id', fake_get_flavor_by_flavor_id) self._stub_migrate_server() self.compute_api.resize(self.context, instance, '4') def test_cannot_resize_to_disabled_instance_type(self): instance = self._create_fake_instance_obj() orig_get_flavor_by_flavor_id = \ flavors.get_flavor_by_flavor_id def fake_get_flavor_by_flavor_id(flavor_id, ctxt=None, read_deleted="yes"): instance_type = orig_get_flavor_by_flavor_id(flavor_id, ctxt, read_deleted) instance_type['disabled'] = True return instance_type self.stubs.Set(flavors, 'get_flavor_by_flavor_id', fake_get_flavor_by_flavor_id) self.assertRaises(exception.FlavorNotFound, self.compute_api.resize, self.context, instance, '4') class ComputeReschedulingTestCase(BaseTestCase): """Tests re-scheduling logic for new build requests.""" def setUp(self): super(ComputeReschedulingTestCase, self).setUp() self.expected_task_state = task_states.SCHEDULING def fake_update(*args, **kwargs): self.updated_task_state = kwargs.get('task_state') self.stubs.Set(self.compute, '_instance_update', fake_update) def _reschedule(self, request_spec=None, filter_properties=None, exc_info=None): if not filter_properties: filter_properties = {} instance_uuid = "12-34-56-78-90" admin_password = None injected_files = None requested_networks = None is_first_time = False scheduler_method = self.compute.scheduler_rpcapi.run_instance method_args = (request_spec, admin_password, injected_files, requested_networks, is_first_time, filter_properties) return self.compute._reschedule(self.context, request_spec, filter_properties, instance_uuid, scheduler_method, method_args, self.expected_task_state, exc_info=exc_info) def test_reschedule_no_filter_properties(self): # no filter_properties will disable re-scheduling. self.assertFalse(self._reschedule()) def test_reschedule_no_retry_info(self): # no retry info will also disable re-scheduling. filter_properties = {} self.assertFalse(self._reschedule(filter_properties=filter_properties)) def test_reschedule_no_request_spec(self): # no request spec will also disable re-scheduling. retry = dict(num_attempts=1) filter_properties = dict(retry=retry) self.assertFalse(self._reschedule(filter_properties=filter_properties)) def test_reschedule_success(self): retry = dict(num_attempts=1) filter_properties = dict(retry=retry) request_spec = {'instance_uuids': ['foo', 'bar']} try: raise test.TestingException("just need an exception") except test.TestingException: exc_info = sys.exc_info() exc_str = traceback.format_exception(*exc_info) self.assertTrue(self._reschedule(filter_properties=filter_properties, request_spec=request_spec, exc_info=exc_info)) self.assertEqual(1, len(request_spec['instance_uuids'])) self.assertEqual(self.updated_task_state, self.expected_task_state) self.assertEqual(exc_str, filter_properties['retry']['exc']) class ComputeReschedulingResizeTestCase(ComputeReschedulingTestCase): """Test re-scheduling logic for prep_resize requests.""" def setUp(self): super(ComputeReschedulingResizeTestCase, self).setUp() self.expected_task_state = task_states.RESIZE_PREP def _reschedule(self, request_spec=None, filter_properties=None, exc_info=None): if not filter_properties: filter_properties = {} instance_uuid = "12-34-56-78-90" instance = fake_instance.fake_db_instance(uuid=instance_uuid) instance = self._objectify(instance) instance_type = {} image = None reservations = None scheduler_method = self.compute.scheduler_rpcapi.prep_resize method_args = (instance, instance_type, image, request_spec, filter_properties, reservations) return self.compute._reschedule(self.context, request_spec, filter_properties, instance_uuid, scheduler_method, method_args, self.expected_task_state, exc_info=exc_info) class InnerTestingException(Exception): pass class ComputeRescheduleOrErrorTestCase(BaseTestCase): """Test logic and exception handling around rescheduling or re-raising original exceptions when builds fail. """ def setUp(self): super(ComputeRescheduleOrErrorTestCase, self).setUp() self.instance = self._create_fake_instance() def test_reschedule_or_error_called(self): """Basic sanity check to make sure _reschedule_or_error is called when a build fails. """ self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_spawn') self.mox.StubOutWithMock(self.compute, '_reschedule_or_error') bdms = block_device_obj.block_device_make_list(self.context, []) block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( mox.IgnoreArg(), self.instance.uuid).AndReturn(bdms) self.compute._spawn(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), [], mox.IgnoreArg(), [], None, set_access_ip=False).AndRaise( test.TestingException("BuildError")) self.compute._reschedule_or_error(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), None, None, None, False, None, {}, bdms, False).AndReturn(True) self.mox.ReplayAll() self.compute._run_instance(self.context, None, {}, None, None, None, False, None, self.instance, False) def test_shutdown_instance_fail(self): """Test shutdown instance failing before re-scheduling logic can even run. """ instance_uuid = self.instance['uuid'] self.mox.StubOutWithMock(self.compute, '_shutdown_instance') try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() compute_utils.add_instance_fault_from_exc(self.context, self.compute.conductor_api, self.instance, exc_info[0], exc_info=exc_info) self.compute._shutdown_instance(self.context, self.instance, mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(InnerTestingException("Error")) self.compute._log_original_error(exc_info, instance_uuid) self.mox.ReplayAll() # should raise the deallocation exception, not the original build # error: self.assertRaises(InnerTestingException, self.compute._reschedule_or_error, self.context, self.instance, exc_info, None, None, None, False, None, {}) def test_shutdown_instance_fail_instance_info_cache_not_found(self): # Covers the case that _shutdown_instance fails with an # InstanceInfoCacheNotFound exception when getting instance network # information prior to calling driver.destroy. elevated_context = self.context.elevated() error = exception.InstanceInfoCacheNotFound( instance_uuid=self.instance['uuid']) with contextlib.nested( mock.patch.object(self.context, 'elevated', return_value=elevated_context), mock.patch.object(self.compute, '_get_instance_nw_info', side_effect=error), mock.patch.object(self.compute, '_get_instance_volume_block_device_info'), mock.patch.object(self.compute.driver, 'destroy'), mock.patch.object(self.compute, '_try_deallocate_network') ) as ( elevated_mock, _get_instance_nw_info_mock, _get_instance_volume_block_device_info_mock, destroy_mock, _try_deallocate_network_mock ): self.compute._shutdown_instance(self.context, self.instance, bdms=[], notify=False) # By asserting that _try_deallocate_network_mock was called # exactly once, we know that _get_instance_nw_info raising # InstanceInfoCacheNotFound did not make _shutdown_instance error # out and driver.destroy was still called. _try_deallocate_network_mock.assert_called_once_with( elevated_context, self.instance, None) def test_reschedule_fail(self): # Test handling of exception from _reschedule. try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() instance_uuid = self.instance['uuid'] method_args = (None, None, None, None, False, {}) self.mox.StubOutWithMock(self.compute, '_shutdown_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_volumes') self.mox.StubOutWithMock(self.compute, '_reschedule') self.compute._shutdown_instance(self.context, self.instance, mox.IgnoreArg(), mox.IgnoreArg()) self.compute._cleanup_volumes(self.context, instance_uuid, mox.IgnoreArg()) self.compute._reschedule(self.context, None, instance_uuid, {}, self.compute.scheduler_rpcapi.run_instance, method_args, task_states.SCHEDULING, exc_info).AndRaise( InnerTestingException("Inner")) self.mox.ReplayAll() self.assertFalse(self.compute._reschedule_or_error(self.context, self.instance, exc_info, None, None, None, False, None, {})) def test_reschedule_false(self): # Test not-rescheduling, but no nested exception. instance_uuid = self.instance['uuid'] method_args = (None, None, None, None, False, {}) self.mox.StubOutWithMock(self.compute, '_shutdown_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_volumes') self.mox.StubOutWithMock(self.compute, '_reschedule') try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() compute_utils.add_instance_fault_from_exc(self.context, self.compute.conductor_api, self.instance, exc_info[0], exc_info=exc_info) self.compute._shutdown_instance(self.context, self.instance, mox.IgnoreArg(), mox.IgnoreArg()) self.compute._cleanup_volumes(self.context, instance_uuid, mox.IgnoreArg()) self.compute._reschedule(self.context, None, {}, instance_uuid, self.compute.scheduler_rpcapi.run_instance, method_args, task_states.SCHEDULING, exc_info).AndReturn(False) self.mox.ReplayAll() # re-scheduling is False, the original build error should be # raised here: self.assertFalse(self.compute._reschedule_or_error(self.context, self.instance, exc_info, None, None, None, False, None, {})) def test_reschedule_true(self): # Test behavior when re-scheduling happens. instance_uuid = self.instance['uuid'] method_args = (None, None, None, None, False, {}) self.mox.StubOutWithMock(self.compute, '_shutdown_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_volumes') self.mox.StubOutWithMock(self.compute, '_reschedule') try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() compute_utils.add_instance_fault_from_exc(self.context, self.compute.conductor_api, self.instance, exc_info[0], exc_info=exc_info) self.compute._shutdown_instance(self.context, self.instance, mox.IgnoreArg(), mox.IgnoreArg()) self.compute._cleanup_volumes(self.context, instance_uuid, mox.IgnoreArg()) self.compute._reschedule(self.context, None, {}, instance_uuid, self.compute.scheduler_rpcapi.run_instance, method_args, task_states.SCHEDULING, exc_info).AndReturn( True) self.compute._log_original_error(exc_info, instance_uuid) self.mox.ReplayAll() # re-scheduling is True, original error is logged, but nothing # is raised: self.compute._reschedule_or_error(self.context, self.instance, exc_info, None, None, None, False, None, {}) def test_no_reschedule_on_delete_during_spawn(self): # instance should not be rescheduled if instance is deleted # during the build self.mox.StubOutWithMock(self.compute, '_spawn') self.mox.StubOutWithMock(self.compute, '_reschedule_or_error') exc = exception.UnexpectedDeletingTaskStateError( expected=task_states.SPAWNING, actual=task_states.DELETING) self.compute._spawn(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), set_access_ip=False).AndRaise(exc) self.mox.ReplayAll() # test succeeds if mocked method '_reschedule_or_error' is not # called. self.compute._run_instance(self.context, None, {}, None, None, None, False, None, self.instance, False) def test_no_reschedule_on_unexpected_task_state(self): # instance shouldn't be rescheduled if unexpected task state arises. # the exception should get reraised. self.mox.StubOutWithMock(self.compute, '_spawn') self.mox.StubOutWithMock(self.compute, '_reschedule_or_error') exc = exception.UnexpectedTaskStateError(expected=task_states.SPAWNING, actual=task_states.SCHEDULING) self.compute._spawn(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), set_access_ip=False).AndRaise(exc) self.mox.ReplayAll() self.assertRaises(exception.UnexpectedTaskStateError, self.compute._run_instance, self.context, None, {}, None, None, None, False, None, self.instance, False) def test_no_reschedule_on_block_device_fail(self): self.mox.StubOutWithMock(self.compute, '_prep_block_device') self.mox.StubOutWithMock(self.compute, '_reschedule_or_error') exc = exception.InvalidBDM() self.compute._prep_block_device(mox.IgnoreArg(), self.instance, mox.IgnoreArg()).AndRaise(exc) self.mox.ReplayAll() self.assertRaises(exception.InvalidBDM, self.compute._run_instance, self.context, None, {}, None, None, None, False, None, self.instance, False) class ComputeRescheduleResizeOrReraiseTestCase(BaseTestCase): """Test logic and exception handling around rescheduling prep resize requests """ def setUp(self): super(ComputeRescheduleResizeOrReraiseTestCase, self).setUp() self.instance = self._create_fake_instance() self.instance_uuid = self.instance['uuid'] self.instance_type = flavors.get_flavor_by_name( "m1.tiny") def test_reschedule_resize_or_reraise_called(self): """Verify the rescheduling logic gets called when there is an error during prep_resize. """ inst_obj = self._create_fake_instance_obj() self.mox.StubOutWithMock(self.compute.db, 'migration_create') self.mox.StubOutWithMock(self.compute, '_reschedule_resize_or_reraise') self.compute.db.migration_create(mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(test.TestingException("Original")) self.compute._reschedule_resize_or_reraise(mox.IgnoreArg(), None, inst_obj, mox.IgnoreArg(), self.instance_type, [], {}, {}) self.mox.ReplayAll() self.compute.prep_resize(self.context, image=None, instance=inst_obj, instance_type=self.instance_type, reservations=[], request_spec={}, filter_properties={}, node=None) def test_reschedule_fails_with_exception(self): """Original exception should be raised if the _reschedule method raises another exception """ instance = self._create_fake_instance_obj() method_args = (None, instance, self.instance_type, None, None, None) self.mox.StubOutWithMock(self.compute, "_reschedule") self.compute._reschedule( self.context, None, None, instance.uuid, self.compute.scheduler_rpcapi.prep_resize, method_args, task_states.RESIZE_PREP).AndRaise( InnerTestingException("Inner")) self.mox.ReplayAll() try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() self.assertRaises(test.TestingException, self.compute._reschedule_resize_or_reraise, self.context, None, instance, exc_info, self.instance_type, None, {}, {}) def test_reschedule_false(self): """Original exception should be raised if the resize is not rescheduled. """ instance = self._create_fake_instance_obj() method_args = (None, instance, self.instance_type, None, None, None) self.mox.StubOutWithMock(self.compute, "_reschedule") self.compute._reschedule( self.context, None, None, instance.uuid, self.compute.scheduler_rpcapi.prep_resize, method_args, task_states.RESIZE_PREP).AndReturn(False) self.mox.ReplayAll() try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() self.assertRaises(test.TestingException, self.compute._reschedule_resize_or_reraise, self.context, None, instance, exc_info, self.instance_type, None, {}, {}) def test_reschedule_true(self): # If rescheduled, the original resize exception should be logged. instance = self._create_fake_instance_obj() instance_p = obj_base.obj_to_primitive(instance) method_args = (instance_p, self.instance_type, None, {}, {}, None) try: raise test.TestingException("Original") except Exception: exc_info = sys.exc_info() self.mox.StubOutWithMock(self.compute, "_reschedule") self.mox.StubOutWithMock(self.compute, "_log_original_error") self.compute._reschedule(self.context, {}, {}, instance.uuid, self.compute.scheduler_rpcapi.prep_resize, method_args, task_states.RESIZE_PREP, exc_info).AndReturn(True) self.compute._log_original_error(exc_info, instance.uuid) self.mox.ReplayAll() self.compute._reschedule_resize_or_reraise(self.context, None, instance, exc_info, self.instance_type, None, {}, {}) class ComputeInactiveImageTestCase(BaseTestCase): def setUp(self): super(ComputeInactiveImageTestCase, self).setUp() def fake_show(meh, context, id): return {'id': id, 'min_disk': None, 'min_ram': None, 'name': 'fake_name', 'status': 'deleted', 'properties': {'kernel_id': 'fake_kernel_id', 'ramdisk_id': 'fake_ramdisk_id', 'something_else': 'meow'}} fake_image.stub_out_image_service(self.stubs) self.stubs.Set(fake_image._FakeImageService, 'show', fake_show) self.compute_api = compute.API() def test_create_instance_with_deleted_image(self): # Make sure we can't start an instance with a deleted image. inst_type = flavors.get_flavor_by_name('m1.tiny') self.assertRaises(exception.ImageNotActive, self.compute_api.create, self.context, inst_type, 'fake-image-uuid') class EvacuateHostTestCase(BaseTestCase): def setUp(self): super(EvacuateHostTestCase, self).setUp() self.inst_ref = jsonutils.to_primitive(self._create_fake_instance ({'host': 'fake_host_2', 'node': 'fakenode2'})) db.instance_update(self.context, self.inst_ref['uuid'], {"task_state": task_states.REBUILDING}) def tearDown(self): db.instance_destroy(self.context, self.inst_ref['uuid']) super(EvacuateHostTestCase, self).tearDown() def _rebuild(self, on_shared_storage=True): def fake(cls, ctxt, instance, *args, **kwargs): pass self.stubs.Set(network_api.API, 'setup_networks_on_host', fake) orig_image_ref = None image_ref = None injected_files = None bdms = db.block_device_mapping_get_all_by_instance(self.context, self.inst_ref['uuid']) self.compute.rebuild_instance( self.context, self._objectify(self.inst_ref), orig_image_ref, image_ref, injected_files, 'newpass', {}, bdms, recreate=True, on_shared_storage=on_shared_storage) def test_rebuild_on_host_updated_target(self): """Confirm evacuate scenario updates host and node.""" self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) def fake_get_compute_info(context, host): self.assertTrue(context.is_admin) self.assertEqual('fake-mini', host) return {'hypervisor_hostname': self.rt.nodename} self.stubs.Set(self.compute, '_get_compute_info', fake_get_compute_info) self.mox.ReplayAll() self._rebuild() # Should be on destination host instance = db.instance_get(self.context, self.inst_ref['id']) self.assertEqual(instance['host'], self.compute.host) self.assertEqual(NODENAME, instance['node']) def test_rebuild_on_host_updated_target_node_not_found(self): """Confirm evacuate scenario where compute_node isn't found.""" self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) def fake_get_compute_info(context, host): raise exception.NotFound(_("Host %s not found") % host) self.stubs.Set(self.compute, '_get_compute_info', fake_get_compute_info) self.mox.ReplayAll() self._rebuild() # Should be on destination host instance = db.instance_get(self.context, self.inst_ref['id']) self.assertEqual(instance['host'], self.compute.host) self.assertIsNone(instance['node']) def test_rebuild_with_instance_in_stopped_state(self): """Confirm evacuate scenario updates vm_state to stopped if instance is in stopped state """ #Initialize the VM to stopped state db.instance_update(self.context, self.inst_ref['uuid'], {"vm_state": vm_states.STOPPED}) self.inst_ref['vm_state'] = vm_states.STOPPED self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) self.mox.ReplayAll() self._rebuild() #Check the vm state is reset to stopped instance = db.instance_get(self.context, self.inst_ref['id']) self.assertEqual(instance['vm_state'], vm_states.STOPPED) def test_rebuild_with_wrong_shared_storage(self): """Confirm evacuate scenario does not update host.""" self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) self.mox.ReplayAll() self.assertRaises(exception.InvalidSharedStorage, lambda: self._rebuild(on_shared_storage=False)) # Should remain on original host instance = db.instance_get(self.context, self.inst_ref['id']) self.assertEqual(instance['host'], 'fake_host_2') def test_rebuild_on_host_with_volumes(self): """Confirm evacuate scenario reconnects volumes.""" values = {'instance_uuid': self.inst_ref['uuid'], 'source_type': 'volume', 'device_name': '/dev/vdc', 'delete_on_termination': False, 'volume_id': 'fake_volume_id'} db.block_device_mapping_create(self.context, values) def fake_volume_get(self, context, volume): return {'id': 'fake_volume_id'} self.stubs.Set(cinder.API, "get", fake_volume_get) # Stub out and record whether it gets detached result = {"detached": False} def fake_detach(self, context, volume): result["detached"] = volume["id"] == 'fake_volume_id' self.stubs.Set(cinder.API, "detach", fake_detach) def fake_terminate_connection(self, context, volume, connector): return {} self.stubs.Set(cinder.API, "terminate_connection", fake_terminate_connection) # make sure volumes attach, detach are called self.mox.StubOutWithMock(self.compute.volume_api, 'detach') self.compute.volume_api.detach(mox.IsA(self.context), mox.IgnoreArg()) self.mox.StubOutWithMock(self.compute, '_prep_block_device') self.compute._prep_block_device(mox.IsA(self.context), mox.IsA(instance_obj.Instance), mox.IgnoreArg()) self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) self.mox.ReplayAll() self._rebuild() # cleanup for bdms in db.block_device_mapping_get_all_by_instance( self.context, self.inst_ref['uuid']): db.block_device_mapping_destroy(self.context, bdms['id']) def test_rebuild_on_host_with_shared_storage(self): """Confirm evacuate scenario on shared storage.""" self.mox.StubOutWithMock(self.compute.driver, 'spawn') self.compute.driver.spawn(mox.IsA(self.context), mox.IsA(instance_obj.Instance), {}, mox.IgnoreArg(), 'newpass', network_info=mox.IgnoreArg(), block_device_info=mox.IgnoreArg()) self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) self.mox.ReplayAll() self._rebuild() def test_rebuild_on_host_without_shared_storage(self): """Confirm evacuate scenario without shared storage (rebuild from image) """ fake_image = {'id': 1, 'name': 'fake_name', 'properties': {'kernel_id': 'fake_kernel_id', 'ramdisk_id': 'fake_ramdisk_id'}} self.mox.StubOutWithMock(self.compute.driver, 'spawn') self.compute.driver.spawn(mox.IsA(self.context), mox.IsA(instance_obj.Instance), mox.IsA(fake_image), mox.IgnoreArg(), mox.IsA('newpass'), network_info=mox.IgnoreArg(), block_device_info=mox.IgnoreArg()) self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: False) self.mox.ReplayAll() self._rebuild(on_shared_storage=False) def test_rebuild_on_host_instance_exists(self): """Rebuild if instance exists raises an exception.""" db.instance_update(self.context, self.inst_ref['uuid'], {"task_state": task_states.SCHEDULING}) self.compute.run_instance(self.context, self.inst_ref, {}, {}, [], None, None, True, None, False) self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) self.assertRaises(exception.InstanceExists, lambda: self._rebuild(on_shared_storage=True)) def test_driver_doesnt_support_recreate(self): with utils.temporary_mutation(self.compute.driver.capabilities, supports_recreate=False): self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True) self.assertRaises(exception.InstanceRecreateNotSupported, lambda: self._rebuild(on_shared_storage=True)) class ComputeInjectedFilesTestCase(BaseTestCase): # Test that running instances with injected_files decodes files correctly def setUp(self): super(ComputeInjectedFilesTestCase, self).setUp() self.instance = self._create_fake_instance_obj() self.stubs.Set(self.compute.driver, 'spawn', self._spawn) def _spawn(self, context, instance, image_meta, injected_files, admin_password, nw_info, block_device_info, db_api=None): self.assertEqual(self.expected, injected_files) def _test(self, injected_files, decoded_files): self.expected = decoded_files self.compute.run_instance(self.context, self.instance, {}, {}, [], injected_files, None, True, None, False) def test_injected_none(self): # test an input of None for injected_files self._test(None, []) def test_injected_empty(self): # test an input of [] for injected_files self._test([], []) def test_injected_success(self): # test with valid b64 encoded content. injected_files = [ ('/a/b/c', base64.b64encode('foobarbaz')), ('/d/e/f', base64.b64encode('seespotrun')), ] decoded_files = [ ('/a/b/c', 'foobarbaz'), ('/d/e/f', 'seespotrun'), ] self._test(injected_files, decoded_files) def test_injected_invalid(self): # test with invalid b64 encoded content injected_files = [ ('/a/b/c', base64.b64encode('foobarbaz')), ('/d/e/f', 'seespotrun'), ] self.assertRaises(exception.Base64Exception, self.compute.run_instance, self.context, self.instance, {}, {}, [], injected_files, None, True, None, False) def test_reschedule(self): # test that rescheduling is done with original encoded files expected = [ ('/a/b/c', base64.b64encode('foobarbaz')), ('/d/e/f', base64.b64encode('seespotrun')), ] def _roe(context, instance, exc_info, requested_networks, admin_password, injected_files, is_first_time, request_spec, filter_properties, bdms=None, legacy_bdm_in_spec=False): self.assertEqual(expected, injected_files) return True def spawn_explode(context, instance, image_meta, injected_files, admin_password, nw_info, block_device_info): # force reschedule logic to execute raise test.TestingException(_("spawn error")) self.stubs.Set(self.compute.driver, 'spawn', spawn_explode) self.stubs.Set(self.compute, '_reschedule_or_error', _roe) self.compute.run_instance(self.context, self.instance, {}, {}, [], expected, None, True, None, False) class CheckConfigDriveTestCase(test.TestCase): # NOTE(sirp): `TestCase` is far too heavyweight for this test, this should # probably derive from a `test.FastTestCase` that omits DB and env # handling def setUp(self): super(CheckConfigDriveTestCase, self).setUp() self.compute_api = compute.API() def _assertCheck(self, expected, config_drive): self.assertEqual(expected, self.compute_api._check_config_drive(config_drive)) def _assertInvalid(self, config_drive): self.assertRaises(exception.ConfigDriveInvalidValue, self.compute_api._check_config_drive, config_drive) def test_config_drive_false_values(self): self._assertCheck('', None) self._assertCheck('', '') self._assertCheck('', 'False') self._assertCheck('', 'f') self._assertCheck('', '0') def test_config_drive_true_values(self): self._assertCheck(True, 'True') self._assertCheck(True, 't') self._assertCheck(True, '1') def test_config_drive_bogus_values_raise(self): self._assertInvalid('asd') self._assertInvalid(uuidutils.generate_uuid()) class CheckRequestedImageTestCase(test.TestCase): def setUp(self): super(CheckRequestedImageTestCase, self).setUp() self.compute_api = compute.API() self.context = context.RequestContext( 'fake_user_id', 'fake_project_id') self.instance_type = flavors.get_default_flavor() self.instance_type['memory_mb'] = 64 self.instance_type['root_gb'] = 1 def test_no_image_specified(self): self.compute_api._check_requested_image(self.context, None, {}, self.instance_type) def test_image_status_must_be_active(self): image = dict(id='123', status='foo') self.assertRaises(exception.ImageNotActive, self.compute_api._check_requested_image, self.context, image['id'], image, self.instance_type) image['status'] = 'active' self.compute_api._check_requested_image(self.context, image['id'], image, self.instance_type) def test_image_min_ram_check(self): image = dict(id='123', status='active', min_ram='65') self.assertRaises(exception.FlavorMemoryTooSmall, self.compute_api._check_requested_image, self.context, image['id'], image, self.instance_type) image['min_ram'] = '64' self.compute_api._check_requested_image(self.context, image['id'], image, self.instance_type) def test_image_min_disk_check(self): image = dict(id='123', status='active', min_disk='2') self.assertRaises(exception.FlavorDiskTooSmall, self.compute_api._check_requested_image, self.context, image['id'], image, self.instance_type) image['min_disk'] = '1' self.compute_api._check_requested_image(self.context, image['id'], image, self.instance_type) def test_image_too_large(self): image = dict(id='123', status='active', size='1073741825') self.assertRaises(exception.FlavorDiskTooSmall, self.compute_api._check_requested_image, self.context, image['id'], image, self.instance_type) image['size'] = '1073741824' self.compute_api._check_requested_image(self.context, image['id'], image, self.instance_type) def test_root_gb_zero_disables_size_check(self): self.instance_type['root_gb'] = 0 image = dict(id='123', status='active', size='1073741825') self.compute_api._check_requested_image(self.context, image['id'], image, self.instance_type) def test_root_gb_zero_disables_min_disk(self): self.instance_type['root_gb'] = 0 image = dict(id='123', status='active', min_disk='2') self.compute_api._check_requested_image(self.context, image['id'], image, self.instance_type) nova-2014.1/nova/tests/compute/test_compute_cells.py0000664000175400017540000002051712323721477023747 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For Compute w/ Cells """ import functools import mock from oslo.config import cfg from nova.cells import manager from nova.compute import api as compute_api from nova.compute import cells_api as compute_cells_api from nova import db from nova.openstack.common import jsonutils from nova import quota from nova.tests.compute import test_compute ORIG_COMPUTE_API = None cfg.CONF.import_opt('enable', 'nova.cells.opts', group='cells') def stub_call_to_cells(context, instance, method, *args, **kwargs): fn = getattr(ORIG_COMPUTE_API, method) original_instance = kwargs.pop('original_instance', None) if original_instance: instance = original_instance # Restore this in 'child cell DB' db.instance_update(context, instance['uuid'], dict(vm_state=instance['vm_state'], task_state=instance['task_state'])) # Use NoopQuotaDriver in child cells. saved_quotas = quota.QUOTAS quota.QUOTAS = quota.QuotaEngine( quota_driver_class=quota.NoopQuotaDriver()) compute_api.QUOTAS = quota.QUOTAS try: return fn(context, instance, *args, **kwargs) finally: quota.QUOTAS = saved_quotas compute_api.QUOTAS = saved_quotas def stub_cast_to_cells(context, instance, method, *args, **kwargs): fn = getattr(ORIG_COMPUTE_API, method) original_instance = kwargs.pop('original_instance', None) if original_instance: instance = original_instance # Restore this in 'child cell DB' db.instance_update(context, instance['uuid'], dict(vm_state=instance['vm_state'], task_state=instance['task_state'])) # Use NoopQuotaDriver in child cells. saved_quotas = quota.QUOTAS quota.QUOTAS = quota.QuotaEngine( quota_driver_class=quota.NoopQuotaDriver()) compute_api.QUOTAS = quota.QUOTAS try: fn(context, instance, *args, **kwargs) finally: quota.QUOTAS = saved_quotas compute_api.QUOTAS = saved_quotas def deploy_stubs(stubs, api, original_instance=None): call = stub_call_to_cells cast = stub_cast_to_cells if original_instance: kwargs = dict(original_instance=original_instance) call = functools.partial(stub_call_to_cells, **kwargs) cast = functools.partial(stub_cast_to_cells, **kwargs) stubs.Set(api, '_call_to_cells', call) stubs.Set(api, '_cast_to_cells', cast) def wrap_create_instance(func): @functools.wraps(func) def wrapper(self, *args, **kwargs): instance = self._create_fake_instance() def fake(*args, **kwargs): return instance self.stubs.Set(self, '_create_fake_instance', fake) original_instance = jsonutils.to_primitive(instance) deploy_stubs(self.stubs, self.compute_api, original_instance=original_instance) return func(self, *args, **kwargs) return wrapper class CellsComputeAPITestCase(test_compute.ComputeAPITestCase): def setUp(self): super(CellsComputeAPITestCase, self).setUp() global ORIG_COMPUTE_API ORIG_COMPUTE_API = self.compute_api self.flags(enable=True, group='cells') def _fake_cell_read_only(*args, **kwargs): return False def _fake_validate_cell(*args, **kwargs): return def _nop_update(context, instance, **kwargs): return instance self.compute_api = compute_cells_api.ComputeCellsAPI() self.stubs.Set(self.compute_api, '_cell_read_only', _fake_cell_read_only) self.stubs.Set(self.compute_api, '_validate_cell', _fake_validate_cell) # NOTE(belliott) Don't update the instance state # for the tests at the API layer. Let it happen after # the stub cast to cells so that expected_task_states # match. self.stubs.Set(self.compute_api, 'update', _nop_update) deploy_stubs(self.stubs, self.compute_api) def tearDown(self): global ORIG_COMPUTE_API self.compute_api = ORIG_COMPUTE_API super(CellsComputeAPITestCase, self).tearDown() def test_instance_metadata(self): self.skipTest("Test is incompatible with cells.") def test_evacuate(self): self.skipTest("Test is incompatible with cells.") def test_delete_instance_no_cell(self): cells_rpcapi = self.compute_api.cells_rpcapi self.mox.StubOutWithMock(cells_rpcapi, 'instance_delete_everywhere') inst = self._create_fake_instance_obj() cells_rpcapi.instance_delete_everywhere(self.context, inst, 'hard') self.mox.ReplayAll() self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.delete(self.context, inst) def test_soft_delete_instance_no_cell(self): cells_rpcapi = self.compute_api.cells_rpcapi self.mox.StubOutWithMock(cells_rpcapi, 'instance_delete_everywhere') inst = self._create_fake_instance_obj() cells_rpcapi.instance_delete_everywhere(self.context, inst, 'soft') self.mox.ReplayAll() self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', lambda *a, **kw: None) self.compute_api.soft_delete(self.context, inst) def test_get_migrations(self): filters = {'cell_name': 'ChildCell', 'status': 'confirmed'} migrations = {'migrations': [{'id': 1234}]} cells_rpcapi = self.compute_api.cells_rpcapi self.mox.StubOutWithMock(cells_rpcapi, 'get_migrations') cells_rpcapi.get_migrations(self.context, filters).AndReturn(migrations) self.mox.ReplayAll() response = self.compute_api.get_migrations(self.context, filters) self.assertEqual(migrations, response) @mock.patch('nova.cells.messaging._TargetedMessage') def test_rebuild_sig(self, mock_msg): # TODO(belliott) Cells could benefit from better testing to ensure API # and manager signatures stay up to date def wire(version): # wire the rpc cast directly to the manager method to make sure # the signature matches cells_mgr = manager.CellsManager() def cast(context, method, *args, **kwargs): fn = getattr(cells_mgr, method) fn(context, *args, **kwargs) cells_mgr.cast = cast return cells_mgr cells_rpcapi = self.compute_api.cells_rpcapi client = cells_rpcapi.client with mock.patch.object(client, 'prepare', side_effect=wire): inst = self._create_fake_instance_obj() inst.cell_name = 'mycell' cells_rpcapi.rebuild_instance(self.context, inst, 'pass', None, None, None, None, None, recreate=False, on_shared_storage=False, host='host', preserve_ephemeral=True, kwargs=None) # one targeted message should have been created self.assertEqual(1, mock_msg.call_count) class CellsComputePolicyTestCase(test_compute.ComputePolicyTestCase): def setUp(self): super(CellsComputePolicyTestCase, self).setUp() global ORIG_COMPUTE_API ORIG_COMPUTE_API = self.compute_api self.compute_api = compute_cells_api.ComputeCellsAPI() deploy_stubs(self.stubs, self.compute_api) def tearDown(self): global ORIG_COMPUTE_API self.compute_api = ORIG_COMPUTE_API super(CellsComputePolicyTestCase, self).tearDown() nova-2014.1/nova/tests/compute/test_compute_utils.py0000664000175400017540000007663112323721477024015 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # Copyright 2013 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. """Tests For miscellaneous util methods used with compute.""" import copy import string import mock from oslo.config import cfg from nova.compute import flavors from nova.compute import power_state from nova.compute import task_states from nova.compute import utils as compute_utils from nova import context from nova import db from nova import exception from nova.image import glance from nova.network import api as network_api from nova.objects import block_device as block_device_obj from nova.objects import instance as instance_obj from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova import rpc from nova import test from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests import fake_instance_actions from nova.tests import fake_network from nova.tests import fake_notifier import nova.tests.image.fake from nova.tests import matchers from nova.virt import driver CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('compute_driver', 'nova.virt.driver') class ComputeValidateDeviceTestCase(test.TestCase): def setUp(self): super(ComputeValidateDeviceTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') # check if test name includes "xen" if 'xen' in self.id(): self.flags(compute_driver='xenapi.XenAPIDriver') self.instance = { 'uuid': 'fake', 'root_device_name': None, 'instance_type_id': 'fake', } else: self.instance = { 'uuid': 'fake', 'root_device_name': '/dev/vda', 'default_ephemeral_device': '/dev/vdb', 'instance_type_id': 'fake', } self.data = [] self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', lambda context, instance, use_slave=False: self.data) def _update_flavor(self, flavor_info): self.flavor = { 'id': 1, 'name': 'foo', 'memory_mb': 128, 'vcpus': 1, 'root_gb': 10, 'ephemeral_gb': 10, 'flavorid': 1, 'swap': 0, 'rxtx_factor': 1.0, 'vcpu_weight': 1, } self.flavor.update(flavor_info) self.instance['system_metadata'] = [{'key': 'instance_type_%s' % key, 'value': value} for key, value in self.flavor.items()] def _validate_device(self, device=None): bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, self.instance['uuid']) return compute_utils.get_device_name_for_instance( self.context, self.instance, bdms, device) @staticmethod def _fake_bdm(device): return fake_block_device.FakeDbBlockDeviceDict({ 'source_type': 'volume', 'destination_type': 'volume', 'device_name': device, 'no_device': None, 'volume_id': 'fake', 'snapshot_id': None, 'guest_format': None }) def test_wrap(self): self.data = [] for letter in string.ascii_lowercase[2:]: self.data.append(self._fake_bdm('/dev/vd' + letter)) device = self._validate_device() self.assertEqual(device, '/dev/vdaa') def test_wrap_plus_one(self): self.data = [] for letter in string.ascii_lowercase[2:]: self.data.append(self._fake_bdm('/dev/vd' + letter)) self.data.append(self._fake_bdm('/dev/vdaa')) device = self._validate_device() self.assertEqual(device, '/dev/vdab') def test_later(self): self.data = [ self._fake_bdm('/dev/vdc'), self._fake_bdm('/dev/vdd'), self._fake_bdm('/dev/vde'), ] device = self._validate_device() self.assertEqual(device, '/dev/vdf') def test_gap(self): self.data = [ self._fake_bdm('/dev/vdc'), self._fake_bdm('/dev/vde'), ] device = self._validate_device() self.assertEqual(device, '/dev/vdd') def test_no_bdms(self): self.data = [] device = self._validate_device() self.assertEqual(device, '/dev/vdc') def test_lxc_names_work(self): self.instance['root_device_name'] = '/dev/a' self.instance['ephemeral_device_name'] = '/dev/b' self.data = [] device = self._validate_device() self.assertEqual(device, '/dev/c') def test_name_conversion(self): self.data = [] device = self._validate_device('/dev/c') self.assertEqual(device, '/dev/vdc') device = self._validate_device('/dev/sdc') self.assertEqual(device, '/dev/vdc') device = self._validate_device('/dev/xvdc') self.assertEqual(device, '/dev/vdc') def test_invalid_bdms(self): self.instance['root_device_name'] = "baddata" self.assertRaises(exception.InvalidDevicePath, self._validate_device) def test_invalid_device_prefix(self): self.assertRaises(exception.InvalidDevicePath, self._validate_device, '/baddata/vdc') def test_device_in_use(self): exc = self.assertRaises(exception.DevicePathInUse, self._validate_device, '/dev/vda') self.assertIn('/dev/vda', str(exc)) def test_swap(self): self.instance['default_swap_device'] = "/dev/vdc" device = self._validate_device() self.assertEqual(device, '/dev/vdd') def test_swap_no_ephemeral(self): del self.instance['default_ephemeral_device'] self.instance['default_swap_device'] = "/dev/vdb" device = self._validate_device() self.assertEqual(device, '/dev/vdc') def test_ephemeral_xenapi(self): self._update_flavor({ 'ephemeral_gb': 10, 'swap': 0, }) self.stubs.Set(flavors, 'get_flavor', lambda instance_type_id, ctxt=None: self.flavor) device = self._validate_device() self.assertEqual(device, '/dev/xvdc') def test_swap_xenapi(self): self._update_flavor({ 'ephemeral_gb': 0, 'swap': 10, }) self.stubs.Set(flavors, 'get_flavor', lambda instance_type_id, ctxt=None: self.flavor) device = self._validate_device() self.assertEqual(device, '/dev/xvdb') def test_swap_and_ephemeral_xenapi(self): self._update_flavor({ 'ephemeral_gb': 10, 'swap': 10, }) self.stubs.Set(flavors, 'get_flavor', lambda instance_type_id, ctxt=None: self.flavor) device = self._validate_device() self.assertEqual(device, '/dev/xvdd') def test_swap_and_one_attachment_xenapi(self): self._update_flavor({ 'ephemeral_gb': 0, 'swap': 10, }) self.stubs.Set(flavors, 'get_flavor', lambda instance_type_id, ctxt=None: self.flavor) device = self._validate_device() self.assertEqual(device, '/dev/xvdb') self.data.append(self._fake_bdm(device)) device = self._validate_device() self.assertEqual(device, '/dev/xvdd') class DefaultDeviceNamesForInstanceTestCase(test.NoDBTestCase): def setUp(self): super(DefaultDeviceNamesForInstanceTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.ephemerals = block_device_obj.block_device_make_list( self.context, [fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdb', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'guest_format': None, 'boot_index': -1})]) self.swap = block_device_obj.block_device_make_list( self.context, [fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdc', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'guest_format': 'swap', 'boot_index': -1})]) self.block_device_mapping = block_device_obj.block_device_make_list( self.context, [fake_block_device.FakeDbBlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'fake-volume-id-1', 'boot_index': 0}), fake_block_device.FakeDbBlockDeviceDict( {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdd', 'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': 'fake-snapshot-id-1', 'boot_index': -1})]) self.flavor = {'swap': 4} self.instance = {'uuid': 'fake_instance', 'ephemeral_gb': 2} self.is_libvirt = False self.root_device_name = '/dev/vda' self.update_called = False def fake_extract_flavor(instance): return self.flavor def fake_driver_matches(driver_string): if driver_string == 'libvirt.LibvirtDriver': return self.is_libvirt return False self.patchers = [] self.patchers.append( mock.patch.object(block_device_obj.BlockDeviceMapping, 'save')) self.patchers.append( mock.patch.object( flavors, 'extract_flavor', new=mock.Mock(side_effect=fake_extract_flavor))) self.patchers.append( mock.patch.object(driver, 'compute_driver_matches', new=mock.Mock( side_effect=fake_driver_matches))) for patcher in self.patchers: patcher.start() def tearDown(self): super(DefaultDeviceNamesForInstanceTestCase, self).tearDown() for patcher in self.patchers: patcher.stop() def _test_default_device_names(self, *block_device_lists): compute_utils.default_device_names_for_instance(self.instance, self.root_device_name, *block_device_lists) def test_only_block_device_mapping(self): # Test no-op original_bdm = copy.deepcopy(self.block_device_mapping) self._test_default_device_names([], [], self.block_device_mapping) for original, new in zip(original_bdm, self.block_device_mapping): self.assertEqual(original.device_name, new.device_name) # Asser it defaults the missing one as expected self.block_device_mapping[1]['device_name'] = None self._test_default_device_names([], [], self.block_device_mapping) self.assertEqual(self.block_device_mapping[1]['device_name'], '/dev/vdb') def test_with_ephemerals(self): # Test ephemeral gets assigned self.ephemerals[0]['device_name'] = None self._test_default_device_names(self.ephemerals, [], self.block_device_mapping) self.assertEqual(self.ephemerals[0]['device_name'], '/dev/vdb') self.block_device_mapping[1]['device_name'] = None self._test_default_device_names(self.ephemerals, [], self.block_device_mapping) self.assertEqual(self.block_device_mapping[1]['device_name'], '/dev/vdc') def test_with_swap(self): # Test swap only self.swap[0]['device_name'] = None self._test_default_device_names([], self.swap, []) self.assertEqual(self.swap[0]['device_name'], '/dev/vdb') # Test swap and block_device_mapping self.swap[0]['device_name'] = None self.block_device_mapping[1]['device_name'] = None self._test_default_device_names([], self.swap, self.block_device_mapping) self.assertEqual(self.swap[0]['device_name'], '/dev/vdb') self.assertEqual(self.block_device_mapping[1]['device_name'], '/dev/vdc') def test_all_together(self): # Test swap missing self.swap[0]['device_name'] = None self._test_default_device_names(self.ephemerals, self.swap, self.block_device_mapping) self.assertEqual(self.swap[0]['device_name'], '/dev/vdc') # Test swap and eph missing self.swap[0]['device_name'] = None self.ephemerals[0]['device_name'] = None self._test_default_device_names(self.ephemerals, self.swap, self.block_device_mapping) self.assertEqual(self.ephemerals[0]['device_name'], '/dev/vdb') self.assertEqual(self.swap[0]['device_name'], '/dev/vdc') # Test all missing self.swap[0]['device_name'] = None self.ephemerals[0]['device_name'] = None self.block_device_mapping[1]['device_name'] = None self._test_default_device_names(self.ephemerals, self.swap, self.block_device_mapping) self.assertEqual(self.ephemerals[0]['device_name'], '/dev/vdb') self.assertEqual(self.swap[0]['device_name'], '/dev/vdc') self.assertEqual(self.block_device_mapping[1]['device_name'], '/dev/vdd') class UsageInfoTestCase(test.TestCase): def setUp(self): def fake_get_nw_info(cls, ctxt, instance): self.assertTrue(ctxt.is_admin) return fake_network.fake_get_instance_nw_info(self.stubs, 1, 1) super(UsageInfoTestCase, self).setUp() self.stubs.Set(network_api.API, 'get_instance_nw_info', fake_get_nw_info) fake_notifier.stub_notifier(self.stubs) self.addCleanup(fake_notifier.reset) self.flags(use_local=True, group='conductor') self.flags(compute_driver='nova.virt.fake.FakeDriver', network_manager='nova.network.manager.FlatManager') self.compute = importutils.import_object(CONF.compute_manager) self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) def fake_show(meh, context, id): return {'id': 1, 'properties': {'kernel_id': 1, 'ramdisk_id': 1}} self.stubs.Set(nova.tests.image.fake._FakeImageService, 'show', fake_show) fake_network.set_stub_network_methods(self.stubs) fake_instance_actions.stub_out_action_events(self.stubs) def _create_instance(self, params={}): """Create a test instance.""" flavor = flavors.get_flavor_by_name('m1.tiny') sys_meta = flavors.save_flavor_info({}, flavor) inst = {} inst['image_ref'] = 1 inst['reservation_id'] = 'r-fakeres' inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['instance_type_id'] = flavor['id'] inst['system_metadata'] = sys_meta inst['ami_launch_index'] = 0 inst['root_gb'] = 0 inst['ephemeral_gb'] = 0 inst.update(params) return db.instance_create(self.context, inst)['id'] def test_notify_usage_exists(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = instance_obj.Instance.get_by_id(self.context, instance_id) # Set some system metadata sys_metadata = {'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow'} instance.system_metadata.update(sys_metadata) instance.save() compute_utils.notify_usage_exists( rpc.get_notifier('compute'), self.context, instance) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.exists') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEqual(payload['image_meta'], {'md_key1': 'val1', 'md_key2': 'val2'}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, instance, [], []) def test_notify_usage_exists_deleted_instance(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = instance_obj.Instance.get_by_id(self.context, instance_id, expected_attrs=['metadata', 'system_metadata']) # Set some system metadata sys_metadata = {'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow'} instance.system_metadata.update(sys_metadata) instance.save() self.compute.terminate_instance(self.context, instance, [], []) instance = instance_obj.Instance.get_by_id( self.context.elevated(read_deleted='yes'), instance_id, expected_attrs=['system_metadata']) compute_utils.notify_usage_exists( rpc.get_notifier('compute'), self.context, instance) msg = fake_notifier.NOTIFICATIONS[-1] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.exists') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEqual(payload['image_meta'], {'md_key1': 'val1', 'md_key2': 'val2'}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload['image_ref_url'], image_ref_url) def test_notify_usage_exists_instance_not_found(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = instance_obj.Instance.get_by_id(self.context, instance_id, expected_attrs=['metadata', 'system_metadata', 'info_cache']) self.compute.terminate_instance(self.context, instance, [], []) compute_utils.notify_usage_exists( rpc.get_notifier('compute'), self.context, instance) msg = fake_notifier.NOTIFICATIONS[-1] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.exists') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEqual(payload['image_meta'], {}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload['image_ref_url'], image_ref_url) def test_notify_about_instance_usage(self): instance_id = self._create_instance() instance = instance_obj.Instance.get_by_id(self.context, instance_id, expected_attrs=['metadata', 'system_metadata', 'info_cache']) # Set some system metadata sys_metadata = {'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow'} instance.system_metadata.update(sys_metadata) instance.save() extra_usage_info = {'image_name': 'fake_name'} compute_utils.notify_about_instance_usage( rpc.get_notifier('compute'), self.context, instance, 'create.start', extra_usage_info=extra_usage_info) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.create.start') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEqual(payload['image_meta'], {'md_key1': 'val1', 'md_key2': 'val2'}) self.assertEqual(payload['image_name'], 'fake_name') image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, instance, [], []) def test_notify_about_aggregate_update_with_id(self): # Set aggregate payload aggregate_payload = {'aggregate_id': 1} compute_utils.notify_about_aggregate_update(self.context, "create.end", aggregate_payload) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'aggregate.create.end') payload = msg.payload self.assertEqual(payload['aggregate_id'], 1) def test_notify_about_aggregate_update_with_name(self): # Set aggregate payload aggregate_payload = {'name': 'fakegroup'} compute_utils.notify_about_aggregate_update(self.context, "create.start", aggregate_payload) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'aggregate.create.start') payload = msg.payload self.assertEqual(payload['name'], 'fakegroup') def test_notify_about_aggregate_update_without_name_id(self): # Set empty aggregate payload aggregate_payload = {} compute_utils.notify_about_aggregate_update(self.context, "create.start", aggregate_payload) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) class ComputeGetImageMetadataTestCase(test.TestCase): def setUp(self): super(ComputeGetImageMetadataTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.image = { "min_ram": 10, "min_disk": 1, "disk_format": "raw", "container_format": "bare", "properties": {}, } self.image_service = nova.tests.image.fake._FakeImageService() self.stubs.Set(self.image_service, 'show', self._fake_show) self.ctx = context.RequestContext('fake', 'fake') sys_meta = { 'image_min_ram': 10, 'image_min_disk': 1, 'image_disk_format': 'raw', 'image_container_format': 'bare', 'instance_type_id': 0, 'instance_type_name': 'm1.fake', 'instance_type_memory_mb': 10, 'instance_type_vcpus': 1, 'instance_type_root_gb': 1, 'instance_type_ephemeral_gb': 1, 'instance_type_flavorid': '0', 'instance_type_swap': 1, 'instance_type_rxtx_factor': 0.0, 'instance_type_vcpu_weight': None, } self.instance = fake_instance.fake_db_instance( memory_mb=0, root_gb=0, system_metadata=sys_meta) @property def instance_obj(self): return instance_obj.Instance._from_db_object( self.ctx, instance_obj.Instance(), self.instance, expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS) def _fake_show(self, ctx, image_id): return self.image def test_get_image_meta(self): image_meta = compute_utils.get_image_metadata( self.ctx, self.image_service, 'fake-image', self.instance_obj) self.image['properties'] = 'DONTCARE' self.assertThat(self.image, matchers.DictMatches(image_meta)) def test_get_image_meta_no_image(self): def fake_show(ctx, image_id): raise exception.ImageNotFound(image_id='fake-image') self.stubs.Set(self.image_service, 'show', fake_show) image_meta = compute_utils.get_image_metadata( self.ctx, self.image_service, 'fake-image', self.instance_obj) self.image['properties'] = 'DONTCARE' # NOTE(danms): The trip through system_metadata will stringify things for key in self.image: self.image[key] = str(self.image[key]) self.assertThat(self.image, matchers.DictMatches(image_meta)) def test_get_image_meta_no_image_system_meta(self): for k in self.instance['system_metadata'].keys(): if k.startswith('image_'): del self.instance['system_metadata'][k] image_meta = compute_utils.get_image_metadata( self.ctx, self.image_service, 'fake-image', self.instance_obj) self.image['properties'] = 'DONTCARE' self.assertThat(self.image, matchers.DictMatches(image_meta)) def test_get_image_meta_no_image_no_image_system_meta(self): def fake_show(ctx, image_id): raise exception.ImageNotFound(image_id='fake-image') self.stubs.Set(self.image_service, 'show', fake_show) for k in self.instance['system_metadata'].keys(): if k.startswith('image_'): del self.instance['system_metadata'][k] image_meta = compute_utils.get_image_metadata( self.ctx, self.image_service, 'fake-image', self.instance_obj) expected = {'properties': 'DONTCARE'} self.assertThat(expected, matchers.DictMatches(image_meta)) class ComputeUtilsGetNWInfo(test.TestCase): def test_instance_object_none_info_cache(self): inst = fake_instance.fake_instance_obj('fake-context', expected_attrs=['info_cache']) self.assertIsNone(inst.info_cache) result = compute_utils.get_nw_info_for_instance(inst) self.assertEqual(jsonutils.dumps([]), result.json()) def test_instance_dict_none_info_cache(self): inst = fake_instance.fake_db_instance(info_cache=None) self.assertIsNone(inst['info_cache']) result = compute_utils.get_nw_info_for_instance(inst) self.assertEqual(jsonutils.dumps([]), result.json()) class ComputeUtilsGetRebootTypes(test.TestCase): def setUp(self): super(ComputeUtilsGetRebootTypes, self).setUp() self.context = context.RequestContext('fake', 'fake') def test_get_reboot_type_started_soft(self): reboot_type = compute_utils.get_reboot_type(task_states.REBOOT_STARTED, power_state.RUNNING) self.assertEqual(reboot_type, 'SOFT') def test_get_reboot_type_pending_soft(self): reboot_type = compute_utils.get_reboot_type(task_states.REBOOT_PENDING, power_state.RUNNING) self.assertEqual(reboot_type, 'SOFT') def test_get_reboot_type_hard(self): reboot_type = compute_utils.get_reboot_type('foo', power_state.RUNNING) self.assertEqual(reboot_type, 'HARD') def test_get_reboot_not_running_hard(self): reboot_type = compute_utils.get_reboot_type('foo', 'bar') self.assertEqual(reboot_type, 'HARD') nova-2014.1/nova/tests/compute/test_keypairs.py0000664000175400017540000002166312323721477022743 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for keypair API.""" from oslo.config import cfg from nova.compute import api as compute_api from nova import context from nova import db from nova import exception from nova.openstack.common.gettextutils import _ from nova import quota from nova.tests.compute import test_compute from nova.tests import fake_notifier from nova.tests.objects import test_keypair CONF = cfg.CONF QUOTAS = quota.QUOTAS class KeypairAPITestCase(test_compute.BaseTestCase): def setUp(self): super(KeypairAPITestCase, self).setUp() self.keypair_api = compute_api.KeypairAPI() self.ctxt = context.RequestContext('fake', 'fake') self._keypair_db_call_stubs() self.existing_key_name = 'fake existing key name' self.pub_key = ('ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLnVkqJu9WVf' '/5StU3JCrBR2r1s1j8K1tux+5XeSvdqaM8lMFNorzbY5iyoBbR' 'S56gy1jmm43QsMPJsrpfUZKcJpRENSe3OxIIwWXRoiapZe78u/' 'a9xKwj0avFYMcws9Rk9iAB7W4K1nEJbyCPl5lRBoyqeHBqrnnu' 'XWEgGxJCK0Ah6wcOzwlEiVjdf4kxzXrwPHyi7Ea1qvnNXTziF8' 'yYmUlH4C8UXfpTQckwSwpDyxZUc63P8q+vPbs3Q2kw+/7vvkCK' 'HJAXVI+oCiyMMfffoTq16M1xfV58JstgtTqAXG+ZFpicGajREU' 'E/E3hO5MGgcHmyzIrWHKpe1n3oEGuz') self.fingerprint = '4e:48:c6:a0:4a:f9:dd:b5:4c:85:54:5a:af:43:47:5a' self.key_destroyed = False def _keypair_db_call_stubs(self): def db_key_pair_get_all_by_user(context, user_id): return [dict(test_keypair.fake_keypair, name=self.existing_key_name, public_key=self.pub_key, fingerprint=self.fingerprint)] def db_key_pair_create(context, keypair): return dict(test_keypair.fake_keypair, **keypair) def db_key_pair_destroy(context, user_id, name): if name == self.existing_key_name: self.key_destroyed = True def db_key_pair_get(context, user_id, name): if name == self.existing_key_name and not self.key_destroyed: return dict(test_keypair.fake_keypair, name=self.existing_key_name, public_key=self.pub_key, fingerprint=self.fingerprint) else: raise exception.KeypairNotFound(user_id=user_id, name=name) self.stubs.Set(db, "key_pair_get_all_by_user", db_key_pair_get_all_by_user) self.stubs.Set(db, "key_pair_create", db_key_pair_create) self.stubs.Set(db, "key_pair_destroy", db_key_pair_destroy) self.stubs.Set(db, "key_pair_get", db_key_pair_get) def _check_notifications(self, action='create', key_name='foo'): self.assertEqual(2, len(fake_notifier.NOTIFICATIONS)) n1 = fake_notifier.NOTIFICATIONS[0] self.assertEqual('INFO', n1.priority) self.assertEqual('keypair.%s.start' % action, n1.event_type) self.assertEqual('api.%s' % CONF.host, n1.publisher_id) self.assertEqual('fake', n1.payload['user_id']) self.assertEqual('fake', n1.payload['tenant_id']) self.assertEqual(key_name, n1.payload['key_name']) n2 = fake_notifier.NOTIFICATIONS[1] self.assertEqual('INFO', n2.priority) self.assertEqual('keypair.%s.end' % action, n2.event_type) self.assertEqual('api.%s' % CONF.host, n2.publisher_id) self.assertEqual('fake', n2.payload['user_id']) self.assertEqual('fake', n2.payload['tenant_id']) self.assertEqual(key_name, n2.payload['key_name']) class CreateImportSharedTestMixIn(object): """Tests shared between create and import_key. Mix-in pattern is used here so that these `test_*` methods aren't picked up by the test runner unless they are part of a 'concrete' test case. """ def assertKeyNameRaises(self, exc_class, expected_message, name): func = getattr(self.keypair_api, self.func_name) args = [] if self.func_name == 'import_key_pair': args.append(self.pub_key) exc = self.assertRaises(exc_class, func, self.ctxt, self.ctxt.user_id, name, *args) self.assertEqual(expected_message, unicode(exc)) def assertInvalidKeypair(self, expected_message, name): msg = _('Keypair data is invalid') + ': ' + expected_message self.assertKeyNameRaises(exception.InvalidKeypair, msg, name) def test_name_too_short(self): msg = _('Keypair name must be between 1 and 255 characters long') self.assertInvalidKeypair(msg, '') def test_name_too_long(self): msg = _('Keypair name must be between 1 and 255 characters long') self.assertInvalidKeypair(msg, 'x' * 256) def test_invalid_chars(self): msg = _("Keypair name contains unsafe characters") self.assertInvalidKeypair(msg, '* BAD CHARACTERS! *') def test_already_exists(self): def db_key_pair_create_duplicate(context, keypair): raise exception.KeyPairExists(key_name=keypair.get('name', '')) self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate) msg = (_("Key pair '%(key_name)s' already exists.") % {'key_name': self.existing_key_name}) self.assertKeyNameRaises(exception.KeyPairExists, msg, self.existing_key_name) def test_quota_limit(self): def fake_quotas_count(self, context, resource, *args, **kwargs): return CONF.quota_key_pairs self.stubs.Set(QUOTAS, "count", fake_quotas_count) msg = _("Maximum number of key pairs exceeded") self.assertKeyNameRaises(exception.KeypairLimitExceeded, msg, 'foo') class CreateKeypairTestCase(KeypairAPITestCase, CreateImportSharedTestMixIn): func_name = 'create_key_pair' def test_success(self): keypair, private_key = self.keypair_api.create_key_pair( self.ctxt, self.ctxt.user_id, 'foo') self.assertEqual('foo', keypair['name']) self._check_notifications() class ImportKeypairTestCase(KeypairAPITestCase, CreateImportSharedTestMixIn): func_name = 'import_key_pair' def test_success(self): keypair = self.keypair_api.import_key_pair(self.ctxt, self.ctxt.user_id, 'foo', self.pub_key) self.assertEqual('foo', keypair['name']) self.assertEqual(self.fingerprint, keypair['fingerprint']) self.assertEqual(self.pub_key, keypair['public_key']) self._check_notifications(action='import') def test_bad_key_data(self): exc = self.assertRaises(exception.InvalidKeypair, self.keypair_api.import_key_pair, self.ctxt, self.ctxt.user_id, 'foo', 'bad key data') msg = u'Keypair data is invalid: failed to generate fingerprint' self.assertEqual(msg, unicode(exc)) class GetKeypairTestCase(KeypairAPITestCase): def test_success(self): keypair = self.keypair_api.get_key_pair(self.ctxt, self.ctxt.user_id, self.existing_key_name) self.assertEqual(self.existing_key_name, keypair['name']) class GetKeypairsTestCase(KeypairAPITestCase): def test_success(self): keypairs = self.keypair_api.get_key_pairs(self.ctxt, self.ctxt.user_id) self.assertEqual([self.existing_key_name], [k['name'] for k in keypairs]) class DeleteKeypairTestCase(KeypairAPITestCase): def test_success(self): keypair = self.keypair_api.get_key_pair(self.ctxt, self.ctxt.user_id, self.existing_key_name) self.keypair_api.delete_key_pair(self.ctxt, self.ctxt.user_id, self.existing_key_name) self.assertRaises(exception.KeypairNotFound, self.keypair_api.get_key_pair, self.ctxt, self.ctxt.user_id, self.existing_key_name) self._check_notifications(action='delete', key_name=self.existing_key_name) nova-2014.1/nova/tests/compute/test_host_api.py0000664000175400017540000005071612323721477022723 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # Copyright 2013 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. import contextlib import mock from nova.cells import utils as cells_utils from nova import compute from nova import context from nova import exception from nova.objects import service as service_obj from nova import test from nova.tests import fake_notifier from nova.tests.objects import test_objects from nova.tests.objects import test_service class ComputeHostAPITestCase(test.TestCase): def setUp(self): super(ComputeHostAPITestCase, self).setUp() self.host_api = compute.HostAPI() self.ctxt = context.get_admin_context() fake_notifier.stub_notifier(self.stubs) self.addCleanup(fake_notifier.reset) def _compare_obj(self, obj, db_obj): test_objects.compare_obj(self, obj, db_obj, allow_missing=test_service.OPTIONAL) def _compare_objs(self, obj_list, db_obj_list): for index, obj in enumerate(obj_list): self._compare_obj(obj, db_obj_list[index]) def _mock_rpc_call(self, method, **kwargs): self.mox.StubOutWithMock(self.host_api.rpcapi, method) getattr(self.host_api.rpcapi, method)( self.ctxt, **kwargs).AndReturn('fake-result') def _mock_assert_host_exists(self): """Sets it so that the host API always thinks that 'fake_host' exists. """ def fake_assert_host_exists(context, host_name, must_be_up=False): return 'fake_host' self.stubs.Set(self.host_api, '_assert_host_exists', fake_assert_host_exists) def test_set_host_enabled(self): self._mock_assert_host_exists() self._mock_rpc_call('set_host_enabled', host='fake_host', enabled='fake_enabled') self.mox.ReplayAll() fake_notifier.NOTIFICATIONS = [] result = self.host_api.set_host_enabled(self.ctxt, 'fake_host', 'fake_enabled') self.assertEqual('fake-result', result) self.assertEqual(2, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual('HostAPI.set_enabled.start', msg.event_type) self.assertEqual('api.fake_host', msg.publisher_id) self.assertEqual('INFO', msg.priority) self.assertEqual('fake_enabled', msg.payload['enabled']) self.assertEqual('fake_host', msg.payload['host_name']) msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual('HostAPI.set_enabled.end', msg.event_type) self.assertEqual('api.fake_host', msg.publisher_id) self.assertEqual('INFO', msg.priority) self.assertEqual('fake_enabled', msg.payload['enabled']) self.assertEqual('fake_host', msg.payload['host_name']) def test_host_name_from_assert_hosts_exists(self): self._mock_assert_host_exists() self._mock_rpc_call('set_host_enabled', host='fake_host', enabled='fake_enabled') self.mox.ReplayAll() result = self.host_api.set_host_enabled(self.ctxt, 'fake_hosT', 'fake_enabled') self.assertEqual('fake-result', result) def test_get_host_uptime(self): self._mock_assert_host_exists() self._mock_rpc_call('get_host_uptime', host='fake_host') self.mox.ReplayAll() result = self.host_api.get_host_uptime(self.ctxt, 'fake_host') self.assertEqual('fake-result', result) def test_get_host_uptime_service_down(self): def fake_service_get_by_compute_host(context, host_name): return dict(test_service.fake_service, id=1) self.stubs.Set(self.host_api.db, 'service_get_by_compute_host', fake_service_get_by_compute_host) def fake_service_is_up(service): return False self.stubs.Set(self.host_api.servicegroup_api, 'service_is_up', fake_service_is_up) self.assertRaises(exception.ComputeServiceUnavailable, self.host_api.get_host_uptime, self.ctxt, 'fake_host') def test_host_power_action(self): self._mock_assert_host_exists() self._mock_rpc_call('host_power_action', host='fake_host', action='fake_action') self.mox.ReplayAll() fake_notifier.NOTIFICATIONS = [] result = self.host_api.host_power_action(self.ctxt, 'fake_host', 'fake_action') self.assertEqual('fake-result', result) self.assertEqual(2, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual('HostAPI.power_action.start', msg.event_type) self.assertEqual('api.fake_host', msg.publisher_id) self.assertEqual('INFO', msg.priority) self.assertEqual('fake_action', msg.payload['action']) self.assertEqual('fake_host', msg.payload['host_name']) msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual('HostAPI.power_action.end', msg.event_type) self.assertEqual('api.fake_host', msg.publisher_id) self.assertEqual('INFO', msg.priority) self.assertEqual('fake_action', msg.payload['action']) self.assertEqual('fake_host', msg.payload['host_name']) def test_set_host_maintenance(self): self._mock_assert_host_exists() self._mock_rpc_call('host_maintenance_mode', host='fake_host', host_param='fake_host', mode='fake_mode') self.mox.ReplayAll() fake_notifier.NOTIFICATIONS = [] result = self.host_api.set_host_maintenance(self.ctxt, 'fake_host', 'fake_mode') self.assertEqual('fake-result', result) self.assertEqual(2, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual('HostAPI.set_maintenance.start', msg.event_type) self.assertEqual('api.fake_host', msg.publisher_id) self.assertEqual('INFO', msg.priority) self.assertEqual('fake_host', msg.payload['host_name']) self.assertEqual('fake_mode', msg.payload['mode']) msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual('HostAPI.set_maintenance.end', msg.event_type) self.assertEqual('api.fake_host', msg.publisher_id) self.assertEqual('INFO', msg.priority) self.assertEqual('fake_host', msg.payload['host_name']) self.assertEqual('fake_mode', msg.payload['mode']) def test_service_get_all_no_zones(self): services = [dict(test_service.fake_service, id=1, topic='compute', host='host1'), dict(test_service.fake_service, topic='compute', host='host2')] self.mox.StubOutWithMock(self.host_api.db, 'service_get_all') # Test no filters self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt) self.mox.VerifyAll() self._compare_objs(result, services) # Test no filters #2 self.mox.ResetAll() self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, filters={}) self.mox.VerifyAll() self._compare_objs(result, services) # Test w/ filter self.mox.ResetAll() self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, filters=dict(host='host2')) self.mox.VerifyAll() self._compare_objs(result, [services[1]]) def test_service_get_all(self): services = [dict(test_service.fake_service, topic='compute', host='host1'), dict(test_service.fake_service, topic='compute', host='host2')] exp_services = [] for service in services: exp_service = {} exp_service.update(availability_zone='nova', **service) exp_services.append(exp_service) self.mox.StubOutWithMock(self.host_api.db, 'service_get_all') # Test no filters self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, set_zones=True) self.mox.VerifyAll() self._compare_objs(result, exp_services) # Test no filters #2 self.mox.ResetAll() self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, filters={}, set_zones=True) self.mox.VerifyAll() self._compare_objs(result, exp_services) # Test w/ filter self.mox.ResetAll() self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, filters=dict(host='host2'), set_zones=True) self.mox.VerifyAll() self._compare_objs(result, [exp_services[1]]) # Test w/ zone filter but no set_zones arg. self.mox.ResetAll() self.host_api.db.service_get_all(self.ctxt, disabled=None).AndReturn(services) self.mox.ReplayAll() filters = {'availability_zone': 'nova'} result = self.host_api.service_get_all(self.ctxt, filters=filters) self.mox.VerifyAll() self._compare_objs(result, exp_services) def test_service_get_by_compute_host(self): self.mox.StubOutWithMock(self.host_api.db, 'service_get_by_compute_host') self.host_api.db.service_get_by_compute_host(self.ctxt, 'fake-host').AndReturn(test_service.fake_service) self.mox.ReplayAll() result = self.host_api.service_get_by_compute_host(self.ctxt, 'fake-host') self.assertEqual(test_service.fake_service['id'], result.id) def test_service_update(self): host_name = 'fake-host' binary = 'nova-compute' params_to_update = dict(disabled=True) service_id = 42 expected_result = dict(test_service.fake_service, id=service_id) self.mox.StubOutWithMock(self.host_api.db, 'service_get_by_args') self.host_api.db.service_get_by_args(self.ctxt, host_name, binary).AndReturn(expected_result) self.mox.StubOutWithMock(self.host_api.db, 'service_update') self.host_api.db.service_update( self.ctxt, service_id, params_to_update).AndReturn(expected_result) self.mox.ReplayAll() result = self.host_api.service_update( self.ctxt, host_name, binary, params_to_update) self._compare_obj(result, expected_result) def test_instance_get_all_by_host(self): self.mox.StubOutWithMock(self.host_api.db, 'instance_get_all_by_host') self.host_api.db.instance_get_all_by_host(self.ctxt, 'fake-host').AndReturn(['fake-responses']) self.mox.ReplayAll() result = self.host_api.instance_get_all_by_host(self.ctxt, 'fake-host') self.assertEqual(['fake-responses'], result) def test_task_log_get_all(self): self.mox.StubOutWithMock(self.host_api.db, 'task_log_get_all') self.host_api.db.task_log_get_all(self.ctxt, 'fake-name', 'fake-begin', 'fake-end', host='fake-host', state='fake-state').AndReturn('fake-response') self.mox.ReplayAll() result = self.host_api.task_log_get_all(self.ctxt, 'fake-name', 'fake-begin', 'fake-end', host='fake-host', state='fake-state') self.assertEqual('fake-response', result) def test_service_delete(self): with contextlib.nested( mock.patch.object(service_obj.Service, 'get_by_id', return_value=service_obj.Service()), mock.patch.object(service_obj.Service, 'destroy') ) as ( get_by_id, destroy ): self.host_api.service_delete(self.ctxt, 1) get_by_id.assert_called_once_with(self.ctxt, 1) destroy.assert_called_once_with() class ComputeHostAPICellsTestCase(ComputeHostAPITestCase): def setUp(self): self.flags(enable=True, group='cells') self.flags(cell_type='api', group='cells') super(ComputeHostAPICellsTestCase, self).setUp() def _mock_rpc_call(self, method, **kwargs): if 'host_param' in kwargs: kwargs.pop('host_param') else: kwargs.pop('host') rpc_message = { 'method': method, 'namespace': None, 'args': kwargs, 'version': self.host_api.rpcapi.client.target.version, } cells_rpcapi = self.host_api.rpcapi.client.cells_rpcapi self.mox.StubOutWithMock(cells_rpcapi, 'proxy_rpc_to_manager') cells_rpcapi.proxy_rpc_to_manager(self.ctxt, rpc_message, 'compute.fake_host', call=True).AndReturn('fake-result') def test_service_get_all_no_zones(self): services = [dict(test_service.fake_service, id='cell1@1', topic='compute', host='host1'), dict(test_service.fake_service, id='cell1@2', topic='compute', host='host2')] exp_services = [s.copy() for s in services] fake_filters = {'host': 'host1'} self.mox.StubOutWithMock(self.host_api.cells_rpcapi, 'service_get_all') self.host_api.cells_rpcapi.service_get_all(self.ctxt, filters=fake_filters).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, filters=fake_filters) self._compare_objs(result, exp_services) def _test_service_get_all(self, fake_filters, **kwargs): services = [dict(test_service.fake_service, id='cell1@1', key1='val1', key2='val2', topic='compute', host='host1'), dict(test_service.fake_service, id='cell1@2', key1='val2', key3='val3', topic='compute', host='host2')] exp_services = [] for service in services: exp_service = {} exp_service.update(availability_zone='nova', **service) exp_services.append(exp_service) self.mox.StubOutWithMock(self.host_api.cells_rpcapi, 'service_get_all') self.host_api.cells_rpcapi.service_get_all(self.ctxt, filters=fake_filters).AndReturn(services) self.mox.ReplayAll() result = self.host_api.service_get_all(self.ctxt, filters=fake_filters, **kwargs) self.mox.VerifyAll() self._compare_objs(result, exp_services) def test_service_get_all(self): fake_filters = {'availability_zone': 'nova'} self._test_service_get_all(fake_filters) def test_service_get_all_set_zones(self): fake_filters = {'key1': 'val1'} self._test_service_get_all(fake_filters, set_zones=True) def test_service_get_by_compute_host(self): self.mox.StubOutWithMock(self.host_api.cells_rpcapi, 'service_get_by_compute_host') self.host_api.cells_rpcapi.service_get_by_compute_host(self.ctxt, 'fake-host').AndReturn(test_service.fake_service) self.mox.ReplayAll() result = self.host_api.service_get_by_compute_host(self.ctxt, 'fake-host') self._compare_obj(result, test_service.fake_service) def test_service_update(self): host_name = 'fake-host' binary = 'nova-compute' params_to_update = dict(disabled=True) service_id = 42 expected_result = dict(test_service.fake_service, id=service_id) self.mox.StubOutWithMock(self.host_api.cells_rpcapi, 'service_update') self.host_api.cells_rpcapi.service_update( self.ctxt, host_name, binary, params_to_update).AndReturn(expected_result) self.mox.ReplayAll() result = self.host_api.service_update( self.ctxt, host_name, binary, params_to_update) self._compare_obj(result, expected_result) def test_service_delete(self): cell_service_id = cells_utils.cell_with_item('cell1', 1) with mock.patch.object(self.host_api.cells_rpcapi, 'service_delete') as service_delete: self.host_api.service_delete(self.ctxt, cell_service_id) service_delete.assert_called_once_with( self.ctxt, cell_service_id) def test_instance_get_all_by_host(self): instances = [dict(id=1, cell_name='cell1', host='host1'), dict(id=2, cell_name='cell2', host='host1'), dict(id=3, cell_name='cell1', host='host2')] self.mox.StubOutWithMock(self.host_api.db, 'instance_get_all_by_host') self.host_api.db.instance_get_all_by_host(self.ctxt, 'fake-host').AndReturn(instances) self.mox.ReplayAll() expected_result = [instances[0], instances[2]] cell_and_host = cells_utils.cell_with_item('cell1', 'fake-host') result = self.host_api.instance_get_all_by_host(self.ctxt, cell_and_host) self.assertEqual(expected_result, result) def test_task_log_get_all(self): self.mox.StubOutWithMock(self.host_api.cells_rpcapi, 'task_log_get_all') self.host_api.cells_rpcapi.task_log_get_all(self.ctxt, 'fake-name', 'fake-begin', 'fake-end', host='fake-host', state='fake-state').AndReturn('fake-response') self.mox.ReplayAll() result = self.host_api.task_log_get_all(self.ctxt, 'fake-name', 'fake-begin', 'fake-end', host='fake-host', state='fake-state') self.assertEqual('fake-response', result) def test_get_host_uptime_service_down(self): # The corresponing Compute test case depends on the # _assert_host_exists which is a no-op in the cells api pass def test_get_host_uptime(self): self.mox.StubOutWithMock(self.host_api.cells_rpcapi, 'get_host_uptime') self.host_api.cells_rpcapi.get_host_uptime(self.ctxt, 'fake-host'). \ AndReturn('fake-response') self.mox.ReplayAll() result = self.host_api.get_host_uptime(self.ctxt, 'fake-host') self.assertEqual('fake-response', result) nova-2014.1/nova/tests/compute/monitors/0000775000175400017540000000000012323722546021343 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/compute/monitors/test_cpu_monitor.py0000664000175400017540000000662712323721477025327 0ustar jenkinsjenkins00000000000000# Copyright 2013 Intel Corporation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for Compute Driver CPU resource monitor.""" import fixtures from nova.compute import manager from nova.compute.monitors import virt from nova import test class FakeLibvirt(object): def getCPUStats(self, cpuNum, flag): if cpuNum < 2: return {'kernel': 5664160000000L, 'idle': 1592705190000000L, 'user': 26728850000000L, 'iowait': 6121490000000L} else: raise Exception("invalid argument: Invalid cpu number") def getInfo(self): return [0, 0, 0, 800, 0, 0, 0, 0] class ComputeDriverCPUMonitorTestCase(test.TestCase): def setUp(self): super(ComputeDriverCPUMonitorTestCase, self).setUp() self.flags(compute_driver='nova.virt.libvirt.LibvirtDriver') self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.driver.LibvirtDriver._conn', FakeLibvirt())) cm = manager.ComputeManager() self.monitor = virt.ComputeDriverCPUMonitor(cm) def test_get_metric_names(self): names = self.monitor.get_metric_names() self.assertEqual(10, len(names)) self.assertIn("cpu.frequency", names) self.assertIn("cpu.user.time", names) self.assertIn("cpu.kernel.time", names) self.assertIn("cpu.idle.time", names) self.assertIn("cpu.iowait.time", names) self.assertIn("cpu.user.percent", names) self.assertIn("cpu.kernel.percent", names) self.assertIn("cpu.idle.percent", names) self.assertIn("cpu.iowait.percent", names) self.assertIn("cpu.percent", names) def test_get_metrics(self): metrics_raw = self.monitor.get_metrics() names = self.monitor.get_metric_names() metrics = {} for metric in metrics_raw: self.assertIn(metric['name'], names) metrics[metric['name']] = metric['value'] self.assertEqual(metrics["cpu.frequency"], 800) self.assertEqual(metrics["cpu.user.time"], 26728850000000L) self.assertEqual(metrics["cpu.kernel.time"], 5664160000000L) self.assertEqual(metrics["cpu.idle.time"], 1592705190000000L) self.assertEqual(metrics["cpu.iowait.time"], 6121490000000L) self.assertTrue(metrics["cpu.user.percent"] <= 1 and metrics["cpu.user.percent"] >= 0) self.assertTrue(metrics["cpu.kernel.percent"] <= 1 and metrics["cpu.kernel.percent"] >= 0) self.assertTrue(metrics["cpu.idle.percent"] <= 1 and metrics["cpu.idle.percent"] >= 0) self.assertTrue(metrics["cpu.iowait.percent"] <= 1 and metrics["cpu.iowait.percent"] >= 0) self.assertTrue(metrics["cpu.percent"] <= 1 and metrics["cpu.percent"] >= 0) nova-2014.1/nova/tests/compute/monitors/test_monitors.py0000664000175400017540000001176212323721477024637 0ustar jenkinsjenkins00000000000000# Copyright 2013 Intel Corporation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for resource monitors.""" from nova.compute import monitors from nova import test class FakeResourceMonitor(monitors.ResourceMonitorBase): def _update_data(self): self._data['foo.metric1'] = '1000' self._data['foo.metric2'] = '99.999' self._data['timestamp'] = '123' @monitors.ResourceMonitorBase.add_timestamp def _get_foo_metric1(self, **kwargs): return self._data.get("foo.metric1") @monitors.ResourceMonitorBase.add_timestamp def _get_foo_metric2(self, **kwargs): return self._data.get("foo.metric2") class FakeMonitorClass1(monitors.ResourceMonitorBase): def get_metrics(self, **kwargs): data = [{'timestamp': 1232, 'name': 'key1', 'value': 2600, 'source': 'libvirt'}] return data def get_metric_names(self): return ['key1'] class FakeMonitorClass2(monitors.ResourceMonitorBase): def get_metrics(self, **kwargs): data = [{'timestamp': 123, 'name': 'key2', 'value': 1600, 'source': 'libvirt'}] return data def get_metric_names(self): return ['key2'] class FakeMonitorClass3(monitors.ResourceMonitorBase): def get_metrics(self, **kwargs): data = [{'timestamp': 1234, 'name': 'key1', 'value': 1200, 'source': 'libvirt'}] return data def get_metric_names(self): return ['key1'] class FakeMonitorClass4(monitors.ResourceMonitorBase): def get_metrics(self, **kwargs): data = [{'timestamp': 123, 'name': 'key4', 'value': 1600, 'source': 'libvirt'}] raise test.TestingException() def get_metric_names(self): raise test.TestingException() class ResourceMonitorBaseTestCase(test.TestCase): def setUp(self): super(ResourceMonitorBaseTestCase, self).setUp() self.monitor = FakeResourceMonitor(None) def test_get_metric_names(self): names = self.monitor.get_metric_names() self.assertEqual(2, len(names)) self.assertIn("foo.metric1", names) self.assertIn("foo.metric2", names) def test_get_metrics(self): metrics_raw = self.monitor.get_metrics() names = self.monitor.get_metric_names() metrics = {} for metric in metrics_raw: self.assertIn(metric['name'], names) self.assertEqual(metric["timestamp"], '123') metrics[metric['name']] = metric['value'] self.assertEqual(metrics["foo.metric1"], '1000') self.assertEqual(metrics["foo.metric2"], '99.999') class ResourceMonitorsTestCase(test.TestCase): """Test case for monitors.""" def setUp(self): super(ResourceMonitorsTestCase, self).setUp() self.monitor_handler = monitors.ResourceMonitorHandler() fake_monitors = [ 'nova.tests.compute.monitors.test_monitors.FakeMonitorClass1', 'nova.tests.compute.monitors.test_monitors.FakeMonitorClass2'] self.flags(compute_available_monitors=fake_monitors) classes = self.monitor_handler.get_matching_classes( ['nova.compute.monitors.all_monitors']) self.class_map = {} for cls in classes: self.class_map[cls.__name__] = cls def test_choose_monitors_not_found(self): self.flags(compute_monitors=['FakeMonitorClass5', 'FakeMonitorClass4']) monitor_classes = self.monitor_handler.choose_monitors(self) self.assertEqual(len(monitor_classes), 0) def test_choose_monitors_bad(self): self.flags(compute_monitors=['FakeMonitorClass1', 'FakePluginClass3']) monitor_classes = self.monitor_handler.choose_monitors(self) self.assertEqual(len(monitor_classes), 1) def test_choose_monitors(self): self.flags(compute_monitors=['FakeMonitorClass1', 'FakeMonitorClass2']) monitor_classes = self.monitor_handler.choose_monitors(self) self.assertEqual(len(monitor_classes), 2) def test_choose_monitors_none(self): self.flags(compute_monitors=[]) monitor_classes = self.monitor_handler.choose_monitors(self) self.assertEqual(len(monitor_classes), 0) def test_all_monitors(self): # Double check at least a couple of known monitors exist self.assertIn('ComputeDriverCPUMonitor', self.class_map) nova-2014.1/nova/tests/compute/monitors/__init__.py0000664000175400017540000000000012323721477023444 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/compute/test_compute_mgr.py0000664000175400017540000025433012323721510023420 0ustar jenkinsjenkins00000000000000# 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. """Unit tests for ComputeManager().""" import contextlib import time from eventlet import event as eventlet_event import mock import mox from oslo.config import cfg from nova.compute import power_state from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import rpcapi as conductor_rpcapi from nova import context from nova import db from nova import exception from nova.network import model as network_model from nova.objects import base as obj_base from nova.objects import block_device as block_device_obj from nova.objects import external_event as external_event_obj from nova.objects import instance as instance_obj from nova.objects import migration as migration_obj from nova.openstack.common import importutils from nova.openstack.common import uuidutils from nova import test from nova.tests.compute import fake_resource_tracker from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests.objects import test_instance_info_cache CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') class ComputeManagerUnitTestCase(test.NoDBTestCase): def setUp(self): super(ComputeManagerUnitTestCase, self).setUp() self.compute = importutils.import_object(CONF.compute_manager) self.context = context.RequestContext('fake', 'fake') def test_allocate_network_succeeds_after_retries(self): self.flags(network_allocate_retries=8) nwapi = self.compute.network_api self.mox.StubOutWithMock(nwapi, 'allocate_for_instance') self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(time, 'sleep') instance = fake_instance.fake_db_instance(system_metadata={}) is_vpn = 'fake-is-vpn' req_networks = 'fake-req-networks' macs = 'fake-macs' sec_groups = 'fake-sec-groups' final_result = 'meow' dhcp_options = None expected_sleep_times = [1, 2, 4, 8, 16, 30, 30, 30] for sleep_time in expected_sleep_times: nwapi.allocate_for_instance( self.context, instance, vpn=is_vpn, requested_networks=req_networks, macs=macs, security_groups=sec_groups, dhcp_options=dhcp_options).AndRaise( test.TestingException()) time.sleep(sleep_time) nwapi.allocate_for_instance( self.context, instance, vpn=is_vpn, requested_networks=req_networks, macs=macs, security_groups=sec_groups, dhcp_options=dhcp_options).AndReturn(final_result) self.compute._instance_update(self.context, instance['uuid'], system_metadata={'network_allocated': 'True'}) self.mox.ReplayAll() res = self.compute._allocate_network_async(self.context, instance, req_networks, macs, sec_groups, is_vpn, dhcp_options) self.assertEqual(final_result, res) def test_allocate_network_fails(self): self.flags(network_allocate_retries=0) nwapi = self.compute.network_api self.mox.StubOutWithMock(nwapi, 'allocate_for_instance') instance = {} is_vpn = 'fake-is-vpn' req_networks = 'fake-req-networks' macs = 'fake-macs' sec_groups = 'fake-sec-groups' dhcp_options = None nwapi.allocate_for_instance( self.context, instance, vpn=is_vpn, requested_networks=req_networks, macs=macs, security_groups=sec_groups, dhcp_options=dhcp_options).AndRaise(test.TestingException()) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.compute._allocate_network_async, self.context, instance, req_networks, macs, sec_groups, is_vpn, dhcp_options) def test_allocate_network_neg_conf_value_treated_as_zero(self): self.flags(network_allocate_retries=-1) nwapi = self.compute.network_api self.mox.StubOutWithMock(nwapi, 'allocate_for_instance') instance = {} is_vpn = 'fake-is-vpn' req_networks = 'fake-req-networks' macs = 'fake-macs' sec_groups = 'fake-sec-groups' dhcp_options = None # Only attempted once. nwapi.allocate_for_instance( self.context, instance, vpn=is_vpn, requested_networks=req_networks, macs=macs, security_groups=sec_groups, dhcp_options=dhcp_options).AndRaise(test.TestingException()) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.compute._allocate_network_async, self.context, instance, req_networks, macs, sec_groups, is_vpn, dhcp_options) def test_init_host(self): our_host = self.compute.host fake_context = 'fake-context' inst = fake_instance.fake_db_instance( vm_state=vm_states.ACTIVE, info_cache=dict(test_instance_info_cache.fake_info_cache, network_info=None), security_groups=None) startup_instances = [inst, inst, inst] def _do_mock_calls(defer_iptables_apply): self.compute.driver.init_host(host=our_host) context.get_admin_context().AndReturn(fake_context) db.instance_get_all_by_host( fake_context, our_host, columns_to_join=['info_cache'], use_slave=False ).AndReturn(startup_instances) if defer_iptables_apply: self.compute.driver.filter_defer_apply_on() self.compute._destroy_evacuated_instances(fake_context) self.compute._init_instance(fake_context, mox.IsA(instance_obj.Instance)) self.compute._init_instance(fake_context, mox.IsA(instance_obj.Instance)) self.compute._init_instance(fake_context, mox.IsA(instance_obj.Instance)) if defer_iptables_apply: self.compute.driver.filter_defer_apply_off() self.mox.StubOutWithMock(self.compute.driver, 'init_host') self.mox.StubOutWithMock(self.compute.driver, 'filter_defer_apply_on') self.mox.StubOutWithMock(self.compute.driver, 'filter_defer_apply_off') self.mox.StubOutWithMock(db, 'instance_get_all_by_host') self.mox.StubOutWithMock(context, 'get_admin_context') self.mox.StubOutWithMock(self.compute, '_destroy_evacuated_instances') self.mox.StubOutWithMock(self.compute, '_init_instance') # Test with defer_iptables_apply self.flags(defer_iptables_apply=True) _do_mock_calls(True) self.mox.ReplayAll() self.compute.init_host() self.mox.VerifyAll() # Test without defer_iptables_apply self.mox.ResetAll() self.flags(defer_iptables_apply=False) _do_mock_calls(False) self.mox.ReplayAll() self.compute.init_host() # tearDown() uses context.get_admin_context(), so we have # to do the verification here and unstub it. self.mox.VerifyAll() self.mox.UnsetStubs() @mock.patch('nova.objects.instance.InstanceList') def test_cleanup_host(self, mock_instance_list): # just testing whether the cleanup_host method # when fired will invoke the underlying driver's # equivalent method. mock_instance_list.get_by_host.return_value = [] with mock.patch.object(self.compute, 'driver') as mock_driver: self.compute.init_host() mock_driver.init_host.assert_called_once() self.compute.cleanup_host() mock_driver.cleanup_host.assert_called_once() def test_init_host_with_deleted_migration(self): our_host = self.compute.host not_our_host = 'not-' + our_host fake_context = 'fake-context' deleted_instance = instance_obj.Instance(host=not_our_host, uuid='fake-uuid') self.mox.StubOutWithMock(self.compute.driver, 'init_host') self.mox.StubOutWithMock(self.compute.driver, 'destroy') self.mox.StubOutWithMock(db, 'instance_get_all_by_host') self.mox.StubOutWithMock(context, 'get_admin_context') self.mox.StubOutWithMock(self.compute, 'init_virt_events') self.mox.StubOutWithMock(self.compute, '_get_instances_on_driver') self.mox.StubOutWithMock(self.compute, '_init_instance') self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.compute.driver.init_host(host=our_host) context.get_admin_context().AndReturn(fake_context) db.instance_get_all_by_host(fake_context, our_host, columns_to_join=['info_cache'], use_slave=False ).AndReturn([]) self.compute.init_virt_events() # simulate failed instance self.compute._get_instances_on_driver( fake_context, {'deleted': False}).AndReturn([deleted_instance]) self.compute._get_instance_nw_info(fake_context, deleted_instance ).AndRaise(exception.InstanceNotFound( instance_id=deleted_instance['uuid'])) # ensure driver.destroy is called so that driver may # clean up any dangling files self.compute.driver.destroy(fake_context, deleted_instance, mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.compute.init_host() # tearDown() uses context.get_admin_context(), so we have # to do the verification here and unstub it. self.mox.VerifyAll() self.mox.UnsetStubs() def test_init_instance_failed_resume_sets_error(self): instance = instance_obj.Instance(self.context) instance.uuid = 'fake-uuid' instance.info_cache = None instance.power_state = power_state.RUNNING instance.vm_state = vm_states.ACTIVE instance.task_state = None self.flags(resume_guests_state_on_host_boot=True) self.mox.StubOutWithMock(self.compute, '_get_power_state') self.mox.StubOutWithMock(self.compute.driver, 'plug_vifs') self.mox.StubOutWithMock(self.compute.driver, 'resume_state_on_host_boot') self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(self.compute, '_set_instance_error_state') self.compute._get_power_state(mox.IgnoreArg(), instance).AndReturn(power_state.SHUTDOWN) self.compute._get_power_state(mox.IgnoreArg(), instance).AndReturn(power_state.SHUTDOWN) self.compute._get_power_state(mox.IgnoreArg(), instance).AndReturn(power_state.SHUTDOWN) self.compute.driver.plug_vifs(instance, mox.IgnoreArg()) self.compute._get_instance_volume_block_device_info(mox.IgnoreArg(), instance).AndReturn('fake-bdm') self.compute.driver.resume_state_on_host_boot(mox.IgnoreArg(), instance, mox.IgnoreArg(), 'fake-bdm').AndRaise(test.TestingException) self.compute._set_instance_error_state(mox.IgnoreArg(), instance['uuid']) self.mox.ReplayAll() self.compute._init_instance('fake-context', instance) def test_init_instance_stuck_in_deleting(self): instance = instance_obj.Instance(self.context) instance.uuid = 'fake-uuid' instance.info_cache = None instance.power_state = power_state.RUNNING instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.DELETING self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_delete_instance') self.mox.StubOutWithMock(instance, 'obj_load_attr') bdms = [] instance.obj_load_attr('metadata') instance.obj_load_attr('system_metadata') block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, instance.uuid).AndReturn(bdms) self.compute._delete_instance(self.context, instance, bdms) self.mox.ReplayAll() self.compute._init_instance(self.context, instance) def _test_init_instance_reverts_crashed_migrations(self, old_vm_state=None): power_on = True if (not old_vm_state or old_vm_state == vm_states.ACTIVE) else False sys_meta = { 'old_vm_state': old_vm_state } instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ERROR instance.task_state = task_states.RESIZE_MIGRATING instance.power_state = power_state.SHUTDOWN instance.system_metadata = sys_meta self.mox.StubOutWithMock(compute_utils, 'get_nw_info_for_instance') self.mox.StubOutWithMock(self.compute.driver, 'plug_vifs') self.mox.StubOutWithMock(self.compute.driver, 'finish_revert_migration') self.mox.StubOutWithMock(self.compute, '_get_instance_volume_block_device_info') self.mox.StubOutWithMock(self.compute.driver, 'get_info') self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute, '_retry_reboot') self.compute._retry_reboot(self.context, instance).AndReturn( (False, None)) compute_utils.get_nw_info_for_instance(instance).AndReturn( network_model.NetworkInfo()) self.compute.driver.plug_vifs(instance, []) self.compute._get_instance_volume_block_device_info( self.context, instance).AndReturn([]) self.compute.driver.finish_revert_migration(self.context, instance, [], [], power_on) instance.save() self.compute.driver.get_info(instance).AndReturn( {'state': power_state.SHUTDOWN}) self.compute.driver.get_info(instance).AndReturn( {'state': power_state.SHUTDOWN}) self.mox.ReplayAll() self.compute._init_instance(self.context, instance) self.assertIsNone(instance.task_state) def test_init_instance_reverts_crashed_migration_from_active(self): self._test_init_instance_reverts_crashed_migrations( old_vm_state=vm_states.ACTIVE) def test_init_instance_reverts_crashed_migration_from_stopped(self): self._test_init_instance_reverts_crashed_migrations( old_vm_state=vm_states.STOPPED) def test_init_instance_reverts_crashed_migration_no_old_state(self): self._test_init_instance_reverts_crashed_migrations(old_vm_state=None) def test_init_instance_sets_building_error(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.BUILDING instance.task_state = None with mock.patch.object(instance, 'save') as save: self.compute._init_instance(self.context, instance) save.assert_called_once_with() self.assertIsNone(instance.task_state) self.assertEqual(vm_states.ERROR, instance.vm_state) def _test_init_instance_sets_building_tasks_error(self, instance): with mock.patch.object(instance, 'save') as save: self.compute._init_instance(self.context, instance) save.assert_called_once_with() self.assertIsNone(instance.task_state) self.assertEqual(vm_states.ERROR, instance.vm_state) def test_init_instance_sets_building_tasks_error_scheduling(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = None instance.task_state = task_states.SCHEDULING self._test_init_instance_sets_building_tasks_error(instance) def test_init_instance_sets_building_tasks_error_block_device(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = None instance.task_state = task_states.BLOCK_DEVICE_MAPPING self._test_init_instance_sets_building_tasks_error(instance) def test_init_instance_sets_building_tasks_error_networking(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = None instance.task_state = task_states.NETWORKING self._test_init_instance_sets_building_tasks_error(instance) def test_init_instance_sets_building_tasks_error_spawning(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = None instance.task_state = task_states.SPAWNING self._test_init_instance_sets_building_tasks_error(instance) def _test_init_instance_cleans_image_states(self, instance): with mock.patch.object(instance, 'save') as save: self.compute._get_power_state = mock.Mock() instance.info_cache = None instance.power_state = power_state.RUNNING self.compute._init_instance(self.context, instance) save.assert_called_once_with() self.assertIsNone(instance.task_state) def test_init_instance_cleans_image_state_pending_upload(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_PENDING_UPLOAD self._test_init_instance_cleans_image_states(instance) def test_init_instance_cleans_image_state_uploading(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_UPLOADING self._test_init_instance_cleans_image_states(instance) def test_init_instance_cleans_image_state_snapshot(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_SNAPSHOT self._test_init_instance_cleans_image_states(instance) def test_init_instance_cleans_image_state_snapshot_pending(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.IMAGE_SNAPSHOT_PENDING self._test_init_instance_cleans_image_states(instance) def test_init_instance_errors_when_not_migrating(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ERROR instance.task_state = task_states.IMAGE_UPLOADING self.mox.StubOutWithMock(compute_utils, 'get_nw_info_for_instance') self.mox.ReplayAll() self.compute._init_instance(self.context, instance) self.mox.VerifyAll() def test_init_instance_deletes_error_deleting_instance(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ERROR instance.task_state = task_states.DELETING self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_delete_instance') self.mox.StubOutWithMock(instance, 'obj_load_attr') bdms = [] instance.obj_load_attr('metadata') instance.obj_load_attr('system_metadata') block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, instance.uuid).AndReturn(bdms) self.compute._delete_instance(self.context, instance, bdms) self.mox.ReplayAll() self.compute._init_instance(self.context, instance) self.mox.VerifyAll() def _test_init_instance_retries_reboot(self, instance, reboot_type, return_power_state): with contextlib.nested( mock.patch.object(self.compute, '_get_power_state', return_value=return_power_state), mock.patch.object(self.compute.compute_rpcapi, 'reboot_instance'), mock.patch.object(compute_utils, 'get_nw_info_for_instance') ) as ( _get_power_state, reboot_instance, get_nw_info_for_instance ): self.compute._init_instance(self.context, instance) call = mock.call(self.context, instance, block_device_info=None, reboot_type=reboot_type) reboot_instance.assert_has_calls([call]) def test_init_instance_retries_reboot_pending(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_PENDING for state in vm_states.ALLOW_SOFT_REBOOT: instance.vm_state = state self._test_init_instance_retries_reboot(instance, 'SOFT', power_state.RUNNING) def test_init_instance_retries_reboot_pending_hard(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_PENDING_HARD for state in vm_states.ALLOW_HARD_REBOOT: # NOTE(dave-mcnally) while a reboot of a vm in error state is # possible we don't attempt to recover an error during init if state == vm_states.ERROR: continue instance.vm_state = state self._test_init_instance_retries_reboot(instance, 'HARD', power_state.RUNNING) def test_init_instance_retries_reboot_started(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.REBOOT_STARTED self._test_init_instance_retries_reboot(instance, 'HARD', power_state.NOSTATE) def test_init_instance_retries_reboot_started_hard(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.REBOOT_STARTED_HARD self._test_init_instance_retries_reboot(instance, 'HARD', power_state.NOSTATE) def _test_init_instance_cleans_reboot_state(self, instance): with contextlib.nested( mock.patch.object(self.compute, '_get_power_state', return_value=power_state.RUNNING), mock.patch.object(self.compute, '_instance_update'), mock.patch.object(compute_utils, 'get_nw_info_for_instance') ) as ( _get_power_state, _instance_update, get_nw_info_for_instance ): self.compute._init_instance(self.context, instance) call = mock.call(self.context, 'foo', vm_state='active', task_state=None) _instance_update.assert_has_calls([call]) def test_init_instance_cleans_image_state_reboot_started(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.REBOOT_STARTED self._test_init_instance_cleans_reboot_state(instance) def test_init_instance_cleans_image_state_reboot_started_hard(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.vm_state = vm_states.ACTIVE instance.task_state = task_states.REBOOT_STARTED_HARD self._test_init_instance_cleans_reboot_state(instance) def test_get_instances_on_driver(self): fake_context = context.get_admin_context() driver_instances = [] for x in xrange(10): driver_instances.append(fake_instance.fake_db_instance()) self.mox.StubOutWithMock(self.compute.driver, 'list_instance_uuids') self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') self.compute.driver.list_instance_uuids().AndReturn( [inst['uuid'] for inst in driver_instances]) db.instance_get_all_by_filters( fake_context, {'uuid': [inst['uuid'] for inst in driver_instances]}, 'created_at', 'desc', columns_to_join=None, limit=None, marker=None, use_slave=True).AndReturn( driver_instances) self.mox.ReplayAll() result = self.compute._get_instances_on_driver(fake_context) self.assertEqual([x['uuid'] for x in driver_instances], [x['uuid'] for x in result]) def test_get_instances_on_driver_fallback(self): # Test getting instances when driver doesn't support # 'list_instance_uuids' self.compute.host = 'host' filters = {'host': self.compute.host} fake_context = context.get_admin_context() self.flags(instance_name_template='inst-%i') all_instances = [] driver_instances = [] for x in xrange(10): instance = fake_instance.fake_db_instance(name='inst-%i' % x, id=x) if x % 2: driver_instances.append(instance) all_instances.append(instance) self.mox.StubOutWithMock(self.compute.driver, 'list_instance_uuids') self.mox.StubOutWithMock(self.compute.driver, 'list_instances') self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') self.compute.driver.list_instance_uuids().AndRaise( NotImplementedError()) self.compute.driver.list_instances().AndReturn( [inst['name'] for inst in driver_instances]) db.instance_get_all_by_filters( fake_context, filters, 'created_at', 'desc', columns_to_join=None, limit=None, marker=None, use_slave=True).AndReturn(all_instances) self.mox.ReplayAll() result = self.compute._get_instances_on_driver(fake_context, filters) self.assertEqual([x['uuid'] for x in driver_instances], [x['uuid'] for x in result]) def test_instance_usage_audit(self): instances = [{'uuid': 'foo'}] self.flags(instance_usage_audit=True) self.stubs.Set(compute_utils, 'has_audit_been_run', lambda *a, **k: False) self.stubs.Set(self.compute.conductor_api, 'instance_get_active_by_window_joined', lambda *a, **k: instances) self.stubs.Set(compute_utils, 'start_instance_usage_audit', lambda *a, **k: None) self.stubs.Set(compute_utils, 'finish_instance_usage_audit', lambda *a, **k: None) self.mox.StubOutWithMock(self.compute.conductor_api, 'notify_usage_exists') self.compute.conductor_api.notify_usage_exists( self.context, instances[0], ignore_missing_network_data=False) self.mox.ReplayAll() self.compute._instance_usage_audit(self.context) def _get_sync_instance(self, power_state, vm_state, task_state=None): instance = instance_obj.Instance() instance.uuid = 'fake-uuid' instance.power_state = power_state instance.vm_state = vm_state instance.host = self.compute.host instance.task_state = task_state self.mox.StubOutWithMock(instance, 'refresh') self.mox.StubOutWithMock(instance, 'save') return instance def test_sync_instance_power_state_match(self): instance = self._get_sync_instance(power_state.RUNNING, vm_states.ACTIVE) instance.refresh(use_slave=False) self.mox.ReplayAll() self.compute._sync_instance_power_state(self.context, instance, power_state.RUNNING) def test_sync_instance_power_state_running_stopped(self): instance = self._get_sync_instance(power_state.RUNNING, vm_states.ACTIVE) instance.refresh(use_slave=False) instance.save() self.mox.ReplayAll() self.compute._sync_instance_power_state(self.context, instance, power_state.SHUTDOWN) self.assertEqual(instance.power_state, power_state.SHUTDOWN) def _test_sync_to_stop(self, power_state, vm_state, driver_power_state, stop=True, force=False): instance = self._get_sync_instance(power_state, vm_state) instance.refresh(use_slave=False) instance.save() self.mox.StubOutWithMock(self.compute.compute_api, 'stop') self.mox.StubOutWithMock(self.compute.compute_api, 'force_stop') if stop: if force: self.compute.compute_api.force_stop(self.context, instance) else: self.compute.compute_api.stop(self.context, instance) self.mox.ReplayAll() self.compute._sync_instance_power_state(self.context, instance, driver_power_state) self.mox.VerifyAll() self.mox.UnsetStubs() def test_sync_instance_power_state_to_stop(self): for ps in (power_state.SHUTDOWN, power_state.CRASHED, power_state.SUSPENDED): self._test_sync_to_stop(power_state.RUNNING, vm_states.ACTIVE, ps) for ps in (power_state.SHUTDOWN, power_state.CRASHED): self._test_sync_to_stop(power_state.PAUSED, vm_states.PAUSED, ps, force=True) self._test_sync_to_stop(power_state.SHUTDOWN, vm_states.STOPPED, power_state.RUNNING, force=True) def test_sync_instance_power_state_to_no_stop(self): for ps in (power_state.PAUSED, power_state.NOSTATE): self._test_sync_to_stop(power_state.RUNNING, vm_states.ACTIVE, ps, stop=False) for vs in (vm_states.SOFT_DELETED, vm_states.DELETED): for ps in (power_state.NOSTATE, power_state.SHUTDOWN): self._test_sync_to_stop(power_state.RUNNING, vs, ps, stop=False) def test_run_pending_deletes(self): self.flags(instance_delete_interval=10) class FakeInstance(object): def __init__(self, uuid, name, smd): self.uuid = uuid self.name = name self.system_metadata = smd self.cleaned = False def __getitem__(self, name): return getattr(self, name) def save(self, context): pass class FakeInstanceList(object): def get_by_filters(self, *args, **kwargs): return [] a = FakeInstance('123', 'apple', {'clean_attempts': '100'}) b = FakeInstance('456', 'orange', {'clean_attempts': '3'}) c = FakeInstance('789', 'banana', {}) self.mox.StubOutWithMock(instance_obj.InstanceList, 'get_by_filters') instance_obj.InstanceList.get_by_filters( {'read_deleted': 'yes'}, {'deleted': True, 'soft_deleted': False, 'host': 'fake-mini', 'cleaned': False}, expected_attrs=['info_cache', 'security_groups', 'system_metadata']).AndReturn([a, b, c]) self.mox.StubOutWithMock(self.compute.driver, 'delete_instance_files') self.compute.driver.delete_instance_files( mox.IgnoreArg()).AndReturn(True) self.compute.driver.delete_instance_files( mox.IgnoreArg()).AndReturn(False) self.mox.ReplayAll() self.compute._run_pending_deletes({}) self.assertFalse(a.cleaned) self.assertEqual('100', a.system_metadata['clean_attempts']) self.assertTrue(b.cleaned) self.assertEqual('4', b.system_metadata['clean_attempts']) self.assertFalse(c.cleaned) self.assertEqual('1', c.system_metadata['clean_attempts']) def test_swap_volume_volume_api_usage(self): # This test ensures that volume_id arguments are passed to volume_api # and that volume states are OK volumes = {} old_volume_id = uuidutils.generate_uuid() volumes[old_volume_id] = {'id': old_volume_id, 'display_name': 'old_volume', 'status': 'detaching'} new_volume_id = uuidutils.generate_uuid() volumes[new_volume_id] = {'id': new_volume_id, 'display_name': 'new_volume', 'status': 'available'} def fake_vol_api_begin_detaching(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) volumes[volume_id]['status'] = 'detaching' def fake_vol_api_roll_detaching(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) if volumes[volume_id]['status'] == 'detaching': volumes[volume_id]['status'] = 'in-use' fake_bdm = fake_block_device.FakeDbBlockDeviceDict( {'device_name': '/dev/vdb', 'source_type': 'volume', 'destination_type': 'volume', 'instance_uuid': 'fake', 'connection_info': '{"foo": "bar"}'}) def fake_vol_api_func(context, volume, *args): self.assertTrue(uuidutils.is_uuid_like(volume)) return {} def fake_vol_get(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) return volumes[volume_id] def fake_vol_attach(context, volume_id, instance_uuid, connector): self.assertTrue(uuidutils.is_uuid_like(volume_id)) self.assertIn(volumes[volume_id]['status'], ['available', 'attaching']) volumes[volume_id]['status'] = 'in-use' def fake_vol_api_reserve(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) self.assertEqual(volumes[volume_id]['status'], 'available') volumes[volume_id]['status'] = 'attaching' def fake_vol_unreserve(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) if volumes[volume_id]['status'] == 'attaching': volumes[volume_id]['status'] = 'available' def fake_vol_detach(context, volume_id): self.assertTrue(uuidutils.is_uuid_like(volume_id)) volumes[volume_id]['status'] = 'available' def fake_vol_migrate_volume_completion(context, old_volume_id, new_volume_id, error=False): self.assertTrue(uuidutils.is_uuid_like(old_volume_id)) self.assertTrue(uuidutils.is_uuid_like(old_volume_id)) return {'save_volume_id': new_volume_id} def fake_func_exc(*args, **kwargs): raise AttributeError # Random exception self.stubs.Set(self.compute.volume_api, 'begin_detaching', fake_vol_api_begin_detaching) self.stubs.Set(self.compute.volume_api, 'roll_detaching', fake_vol_api_roll_detaching) self.stubs.Set(self.compute.volume_api, 'get', fake_vol_get) self.stubs.Set(self.compute.volume_api, 'initialize_connection', fake_vol_api_func) self.stubs.Set(self.compute.volume_api, 'attach', fake_vol_attach) self.stubs.Set(self.compute.volume_api, 'reserve_volume', fake_vol_api_reserve) self.stubs.Set(self.compute.volume_api, 'unreserve_volume', fake_vol_unreserve) self.stubs.Set(self.compute.volume_api, 'terminate_connection', fake_vol_api_func) self.stubs.Set(self.compute.volume_api, 'detach', fake_vol_detach) self.stubs.Set(db, 'block_device_mapping_get_by_volume_id', lambda x, y, z: fake_bdm) self.stubs.Set(self.compute.driver, 'get_volume_connector', lambda x: {}) self.stubs.Set(self.compute.driver, 'swap_volume', lambda w, x, y, z: None) self.stubs.Set(self.compute.volume_api, 'migrate_volume_completion', fake_vol_migrate_volume_completion) self.stubs.Set(db, 'block_device_mapping_update', lambda *a, **k: fake_bdm) self.stubs.Set(self.compute.conductor_api, 'instance_fault_create', lambda x, y: None) # Good path self.compute.swap_volume(self.context, old_volume_id, new_volume_id, fake_instance.fake_instance_obj( self.context, **{'uuid': 'fake'})) self.assertEqual(volumes[old_volume_id]['status'], 'available') self.assertEqual(volumes[new_volume_id]['status'], 'in-use') # Error paths volumes[old_volume_id]['status'] = 'detaching' volumes[new_volume_id]['status'] = 'attaching' self.stubs.Set(self.compute.driver, 'swap_volume', fake_func_exc) self.assertRaises(AttributeError, self.compute.swap_volume, self.context, old_volume_id, new_volume_id, fake_instance.fake_instance_obj( self.context, **{'uuid': 'fake'})) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') volumes[old_volume_id]['status'] = 'detaching' volumes[new_volume_id]['status'] = 'attaching' self.stubs.Set(self.compute.volume_api, 'initialize_connection', fake_func_exc) self.assertRaises(AttributeError, self.compute.swap_volume, self.context, old_volume_id, new_volume_id, fake_instance.fake_instance_obj( self.context, **{'uuid': 'fake'})) self.assertEqual(volumes[old_volume_id]['status'], 'in-use') self.assertEqual(volumes[new_volume_id]['status'], 'available') def test_check_can_live_migrate_source(self): is_volume_backed = 'volume_backed' bdms = 'bdms' dest_check_data = dict(foo='bar') db_instance = fake_instance.fake_db_instance() instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), db_instance) expected_dest_check_data = dict(dest_check_data, is_volume_backed=is_volume_backed) self.mox.StubOutWithMock(self.compute.compute_api, 'is_volume_backed_instance') self.mox.StubOutWithMock(self.compute.driver, 'check_can_live_migrate_source') instance_p = obj_base.obj_to_primitive(instance) self.compute.compute_api.is_volume_backed_instance( self.context, instance).AndReturn(is_volume_backed) self.compute.driver.check_can_live_migrate_source( self.context, instance, expected_dest_check_data) self.mox.ReplayAll() self.compute.check_can_live_migrate_source( self.context, instance=instance, dest_check_data=dest_check_data) def _test_check_can_live_migrate_destination(self, do_raise=False, has_mig_data=False): db_instance = fake_instance.fake_db_instance(host='fake-host') instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), db_instance) instance.host = 'fake-host' block_migration = 'block_migration' disk_over_commit = 'disk_over_commit' src_info = 'src_info' dest_info = 'dest_info' dest_check_data = dict(foo='bar') mig_data = dict(cow='moo') expected_result = dict(mig_data) if has_mig_data: dest_check_data['migrate_data'] = dict(cat='meow') expected_result.update(cat='meow') self.mox.StubOutWithMock(self.compute, '_get_compute_info') self.mox.StubOutWithMock(self.compute.driver, 'check_can_live_migrate_destination') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'check_can_live_migrate_source') self.mox.StubOutWithMock(self.compute.driver, 'check_can_live_migrate_destination_cleanup') self.compute._get_compute_info(self.context, 'fake-host').AndReturn(src_info) self.compute._get_compute_info(self.context, CONF.host).AndReturn(dest_info) self.compute.driver.check_can_live_migrate_destination( self.context, instance, src_info, dest_info, block_migration, disk_over_commit).AndReturn(dest_check_data) mock_meth = self.compute.compute_rpcapi.check_can_live_migrate_source( self.context, instance, dest_check_data) if do_raise: mock_meth.AndRaise(test.TestingException()) self.mox.StubOutWithMock(self.compute.conductor_api, 'instance_fault_create') self.compute.conductor_api.instance_fault_create(self.context, mox.IgnoreArg()) else: mock_meth.AndReturn(mig_data) self.compute.driver.check_can_live_migrate_destination_cleanup( self.context, dest_check_data) self.mox.ReplayAll() result = self.compute.check_can_live_migrate_destination( self.context, instance=instance, block_migration=block_migration, disk_over_commit=disk_over_commit) self.assertEqual(expected_result, result) def test_check_can_live_migrate_destination_success(self): self._test_check_can_live_migrate_destination() def test_check_can_live_migrate_destination_success_w_mig_data(self): self._test_check_can_live_migrate_destination(has_mig_data=True) def test_check_can_live_migrate_destination_fail(self): self.assertRaises( test.TestingException, self._test_check_can_live_migrate_destination, do_raise=True) def test_prepare_for_instance_event(self): inst_obj = instance_obj.Instance(uuid='foo') result = self.compute.instance_events.prepare_for_instance_event( inst_obj, 'test-event') self.assertIn('foo', self.compute.instance_events._events) self.assertIn('test-event', self.compute.instance_events._events['foo']) self.assertEqual( result, self.compute.instance_events._events['foo']['test-event']) self.assertTrue(hasattr(result, 'send')) def test_prepare_for_instance_event_again(self): inst_obj = instance_obj.Instance(uuid='foo') self.compute.instance_events.prepare_for_instance_event( inst_obj, 'test-event') # A second attempt will avoid creating a new list; make sure we # get the current list result = self.compute.instance_events.prepare_for_instance_event( inst_obj, 'test-event') self.assertIn('foo', self.compute.instance_events._events) self.assertIn('test-event', self.compute.instance_events._events['foo']) self.assertEqual( result, self.compute.instance_events._events['foo']['test-event']) self.assertTrue(hasattr(result, 'send')) def test_process_instance_event(self): event = eventlet_event.Event() self.compute.instance_events._events = { 'foo': { 'test-event': event, } } inst_obj = instance_obj.Instance(uuid='foo') event_obj = external_event_obj.InstanceExternalEvent(name='test-event', tag=None) self.compute._process_instance_event(inst_obj, event_obj) self.assertTrue(event.ready()) self.assertEqual(event_obj, event.wait()) self.assertEqual({}, self.compute.instance_events._events) def test_external_instance_event(self): instances = [ instance_obj.Instance(uuid='uuid1'), instance_obj.Instance(uuid='uuid2')] events = [ external_event_obj.InstanceExternalEvent(name='network-changed', instance_uuid='uuid1'), external_event_obj.InstanceExternalEvent(name='foo', instance_uuid='uuid2')] @mock.patch.object(self.compute.network_api, 'get_instance_nw_info') @mock.patch.object(self.compute, '_process_instance_event') def do_test(_process_instance_event, get_instance_nw_info): self.compute.external_instance_event(self.context, instances, events) get_instance_nw_info.assert_called_once_with(self.context, instances[0]) _process_instance_event.assert_called_once_with(instances[1], events[1]) do_test() def test_retry_reboot_pending_soft(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_PENDING instance.vm_state = vm_states.ACTIVE with mock.patch.object(self.compute, '_get_power_state', return_value=power_state.RUNNING): allow_reboot, reboot_type = self.compute._retry_reboot( context, instance) self.assertTrue(allow_reboot) self.assertEqual(reboot_type, 'SOFT') def test_retry_reboot_pending_hard(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_PENDING_HARD instance.vm_state = vm_states.ACTIVE with mock.patch.object(self.compute, '_get_power_state', return_value=power_state.RUNNING): allow_reboot, reboot_type = self.compute._retry_reboot( context, instance) self.assertTrue(allow_reboot) self.assertEqual(reboot_type, 'HARD') def test_retry_reboot_starting_soft_off(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_STARTED with mock.patch.object(self.compute, '_get_power_state', return_value=power_state.NOSTATE): allow_reboot, reboot_type = self.compute._retry_reboot( context, instance) self.assertTrue(allow_reboot) self.assertEqual(reboot_type, 'HARD') def test_retry_reboot_starting_hard_off(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_STARTED_HARD with mock.patch.object(self.compute, '_get_power_state', return_value=power_state.NOSTATE): allow_reboot, reboot_type = self.compute._retry_reboot( context, instance) self.assertTrue(allow_reboot) self.assertEqual(reboot_type, 'HARD') def test_retry_reboot_starting_hard_on(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = task_states.REBOOT_STARTED_HARD with mock.patch.object(self.compute, '_get_power_state', return_value=power_state.RUNNING): allow_reboot, reboot_type = self.compute._retry_reboot( context, instance) self.assertFalse(allow_reboot) self.assertEqual(reboot_type, 'HARD') def test_retry_reboot_no_reboot(self): instance = instance_obj.Instance(self.context) instance.uuid = 'foo' instance.task_state = 'bar' with mock.patch.object(self.compute, '_get_power_state', return_value=power_state.RUNNING): allow_reboot, reboot_type = self.compute._retry_reboot( context, instance) self.assertFalse(allow_reboot) self.assertEqual(reboot_type, 'HARD') class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase): def setUp(self): super(ComputeManagerBuildInstanceTestCase, self).setUp() self.compute = importutils.import_object(CONF.compute_manager) self.context = context.RequestContext('fake', 'fake') self.instance = fake_instance.fake_instance_obj(self.context, vm_state=vm_states.ACTIVE, expected_attrs=['metadata', 'system_metadata', 'info_cache']) self.admin_pass = 'pass' self.injected_files = [] self.image = {} self.node = 'fake-node' self.limits = {} self.requested_networks = [] self.security_groups = [] self.block_device_mapping = [] def fake_network_info(): return network_model.NetworkInfo() self.network_info = network_model.NetworkInfoAsyncWrapper( fake_network_info) self.block_device_info = self.compute._prep_block_device(context, self.instance, self.block_device_mapping) # override tracker with a version that doesn't need the database: fake_rt = fake_resource_tracker.FakeResourceTracker(self.compute.host, self.compute.driver, self.node) self.compute._resource_tracker_dict[self.node] = fake_rt def _do_build_instance_update(self, reschedule_update=False): self.mox.StubOutWithMock(self.instance, 'save') self.instance.save( expected_task_state=(task_states.SCHEDULING, None)).AndReturn( self.instance) if reschedule_update: self.instance.save().AndReturn(self.instance) def _build_and_run_instance_update(self): self.mox.StubOutWithMock(self.instance, 'save') self._build_resources_instance_update(stub=False) self.instance.save(expected_task_state= task_states.BLOCK_DEVICE_MAPPING).AndReturn(self.instance) def _build_resources_instance_update(self, stub=True): if stub: self.mox.StubOutWithMock(self.instance, 'save') self.instance.save().AndReturn(self.instance) def _notify_about_instance_usage(self, event, stub=True, **kwargs): if stub: self.mox.StubOutWithMock(self.compute, '_notify_about_instance_usage') self.compute._notify_about_instance_usage(self.context, self.instance, event, **kwargs) def test_build_and_run_instance_called_with_proper_args(self): self.mox.StubOutWithMock(self.compute, '_build_and_run_instance') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self._do_build_instance_update() self.compute._build_and_run_instance(self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_build_abort_exception(self): self.mox.StubOutWithMock(self.compute, '_build_and_run_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_allocated_networks') self.mox.StubOutWithMock(self.compute, '_set_instance_error_state') self.mox.StubOutWithMock(self.compute.compute_task_api, 'build_instances') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self._do_build_instance_update() self.compute._build_and_run_instance(self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits).AndRaise( exception.BuildAbortException(reason='', instance_uuid=self.instance['uuid'])) self.compute._cleanup_allocated_networks(self.context, self.instance, self.requested_networks) self.compute._set_instance_error_state(self.context, self.instance['uuid']) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_rescheduled_exception(self): self.mox.StubOutWithMock(self.compute, '_build_and_run_instance') self.mox.StubOutWithMock(self.compute, '_set_instance_error_state') self.mox.StubOutWithMock(self.compute.compute_task_api, 'build_instances') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self._do_build_instance_update(reschedule_update=True) self.compute._build_and_run_instance(self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits).AndRaise( exception.RescheduledException(reason='', instance_uuid=self.instance['uuid'])) self.compute.compute_task_api.build_instances(self.context, [self.instance], self.image, [], self.admin_pass, self.injected_files, self.requested_networks, self.security_groups, self.block_device_mapping) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_rescheduled_exception_do_not_deallocate_network(self): self.mox.StubOutWithMock(self.compute, '_build_and_run_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_allocated_networks') self.mox.StubOutWithMock(self.compute.compute_task_api, 'build_instances') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self._do_build_instance_update(reschedule_update=True) self.compute._build_and_run_instance(self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits).AndRaise( exception.RescheduledException(reason='', instance_uuid=self.instance['uuid'])) self.compute.compute_task_api.build_instances(self.context, [self.instance], self.image, [], self.admin_pass, self.injected_files, self.requested_networks, self.security_groups, self.block_device_mapping) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_rescheduled_exception_deallocate_network_if_dhcp(self): self.mox.StubOutWithMock(self.compute, '_build_and_run_instance') self.mox.StubOutWithMock(self.compute.driver, 'dhcp_options_for_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_allocated_networks') self.mox.StubOutWithMock(self.compute.compute_task_api, 'build_instances') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self._do_build_instance_update(reschedule_update=True) self.compute._build_and_run_instance(self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits).AndRaise( exception.RescheduledException(reason='', instance_uuid=self.instance['uuid'])) self.compute.driver.dhcp_options_for_instance(self.instance).AndReturn( {'fake': 'options'}) self.compute._cleanup_allocated_networks(self.context, self.instance, self.requested_networks) self.compute.compute_task_api.build_instances(self.context, [self.instance], self.image, [], self.admin_pass, self.injected_files, self.requested_networks, self.security_groups, self.block_device_mapping) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_unexpected_exception(self): self.mox.StubOutWithMock(self.compute, '_build_and_run_instance') self.mox.StubOutWithMock(self.compute, '_cleanup_allocated_networks') self.mox.StubOutWithMock(self.compute, '_set_instance_error_state') self.mox.StubOutWithMock(self.compute.compute_task_api, 'build_instances') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self._do_build_instance_update() self.compute._build_and_run_instance(self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits).AndRaise( test.TestingException()) self.compute._cleanup_allocated_networks(self.context, self.instance, self.requested_networks) self.compute._set_instance_error_state(self.context, self.instance['uuid']) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_instance_not_found(self): exc = exception.InstanceNotFound(instance_id=1) self.mox.StubOutWithMock(self.compute.driver, 'spawn') self.mox.StubOutWithMock(conductor_rpcapi.ConductorAPI, 'instance_update') self.mox.StubOutWithMock(self.compute, '_build_networks_for_instance') self.compute._build_networks_for_instance(self.context, self.instance, self.requested_networks, self.security_groups).AndReturn( self.network_info) self._notify_about_instance_usage('create.start', extra_usage_info={'image_name': self.image.get('name')}) self._build_and_run_instance_update() self.compute.driver.spawn(self.context, self.instance, self.image, self.injected_files, self.admin_pass, network_info=self.network_info, block_device_info=self.block_device_info).AndRaise(exc) self._notify_about_instance_usage('create.end', fault=exc, stub=False) conductor_rpcapi.ConductorAPI.instance_update( self.context, self.instance['uuid'], mox.IgnoreArg(), 'conductor') self.mox.ReplayAll() self.assertRaises(exception.InstanceNotFound, self.compute._build_and_run_instance, self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits) def test_reschedule_on_exception(self): self.mox.StubOutWithMock(self.compute.driver, 'spawn') self.mox.StubOutWithMock(conductor_rpcapi.ConductorAPI, 'instance_update') self.mox.StubOutWithMock(self.compute, '_build_networks_for_instance') self.compute._build_networks_for_instance(self.context, self.instance, self.requested_networks, self.security_groups).AndReturn( self.network_info) self._notify_about_instance_usage('create.start', extra_usage_info={'image_name': self.image.get('name')}) self._build_and_run_instance_update() exc = test.TestingException() self.compute.driver.spawn(self.context, self.instance, self.image, self.injected_files, self.admin_pass, network_info=self.network_info, block_device_info=self.block_device_info).AndRaise(exc) conductor_rpcapi.ConductorAPI.instance_update( self.context, self.instance['uuid'], mox.IgnoreArg(), 'conductor') self._notify_about_instance_usage('create.error', fault=exc, stub=False) self.mox.ReplayAll() self.assertRaises(exception.RescheduledException, self.compute._build_and_run_instance, self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits) def test_spawn_network_alloc_failure(self): # Because network allocation is asynchronous, failures may not present # themselves until the virt spawn method is called. exc = exception.NoMoreNetworks() with contextlib.nested( mock.patch.object(self.compute.driver, 'spawn', side_effect=exc), mock.patch.object(conductor_rpcapi.ConductorAPI, 'instance_update'), mock.patch.object(self.instance, 'save', side_effect=[self.instance, self.instance]), mock.patch.object(self.compute, '_build_networks_for_instance', return_value=self.network_info), mock.patch.object(self.compute, '_notify_about_instance_usage') ) as (spawn, instance_update, save, _build_networks_for_instance, _notify_about_instance_usage): self.assertRaises(exception.BuildAbortException, self.compute._build_and_run_instance, self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits) _build_networks_for_instance.assert_has_calls( mock.call(self.context, self.instance, self.requested_networks, self.security_groups)) _notify_about_instance_usage.assert_has_calls([ mock.call(self.context, self.instance, 'create.start', extra_usage_info={'image_name': self.image.get('name')}), mock.call(self.context, self.instance, 'create.error', fault=exc)]) save.assert_has_calls([ mock.call(), mock.call( expected_task_state=task_states.BLOCK_DEVICE_MAPPING)]) spawn.assert_has_calls(mock.call(self.context, self.instance, self.image, self.injected_files, self.admin_pass, network_info=self.network_info, block_device_info=self.block_device_info)) instance_update.assert_has_calls(mock.call(self.context, self.instance['uuid'], mock.ANY, 'conductor')) @mock.patch('nova.compute.manager.ComputeManager._get_power_state') def test_spawn_waits_for_network_and_saves_info_cache(self, gps): inst = mock.MagicMock() network_info = mock.MagicMock() with mock.patch.object(self.compute, 'driver'): self.compute._spawn(self.context, inst, {}, network_info, None, None, None) network_info.wait.assert_called_once_with(do_raise=True) self.assertEqual(network_info, inst.info_cache.network_info) inst.save.assert_called_with(expected_task_state=task_states.SPAWNING) def test_reschedule_on_resources_unavailable(self): reason = 'resource unavailable' exc = exception.ComputeResourcesUnavailable(reason=reason) class FakeResourceTracker(object): def instance_claim(self, context, instance, limits): raise exc self.mox.StubOutWithMock(self.compute, '_get_resource_tracker') self.mox.StubOutWithMock(self.compute.compute_task_api, 'build_instances') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_start') self.mox.StubOutWithMock(self.compute.conductor_api, 'action_event_finish') self.compute._get_resource_tracker(self.node).AndReturn( FakeResourceTracker()) self._do_build_instance_update(reschedule_update=True) self._notify_about_instance_usage('create.start', extra_usage_info={'image_name': self.image.get('name')}) self._notify_about_instance_usage('create.error', fault=exc, stub=False) self.compute.compute_task_api.build_instances(self.context, [self.instance], self.image, [], self.admin_pass, self.injected_files, self.requested_networks, self.security_groups, self.block_device_mapping) self.compute.conductor_api.action_event_start(self.context, mox.IgnoreArg()) self.compute.conductor_api.action_event_finish(self.context, mox.IgnoreArg()) self.mox.ReplayAll() self.compute.build_and_run_instance(self.context, self.instance, self.image, request_spec={}, filter_properties=[], injected_files=self.injected_files, admin_password=self.admin_pass, requested_networks=self.requested_networks, security_groups=self.security_groups, block_device_mapping=self.block_device_mapping, node=self.node, limits=self.limits) def test_build_resources_buildabort_reraise(self): exc = exception.BuildAbortException( instance_uuid=self.instance['uuid'], reason='') self.mox.StubOutWithMock(self.compute, '_build_resources') self.mox.StubOutWithMock(conductor_rpcapi.ConductorAPI, 'instance_update') conductor_rpcapi.ConductorAPI.instance_update( self.context, self.instance['uuid'], mox.IgnoreArg(), 'conductor') self._notify_about_instance_usage('create.start', extra_usage_info={'image_name': self.image.get('name')}) self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping).AndRaise(exc) self._notify_about_instance_usage('create.error', fault=exc, stub=False) self.mox.ReplayAll() self.assertRaises(exception.BuildAbortException, self.compute._build_and_run_instance, self.context, self.instance, self.image, self.injected_files, self.admin_pass, self.requested_networks, self.security_groups, self.block_device_mapping, self.node, self.limits) def test_build_resources_reraises_on_failed_bdm_prep(self): self.mox.StubOutWithMock(self.compute, '_prep_block_device') self.mox.StubOutWithMock(self.compute, '_build_networks_for_instance') self.compute._build_networks_for_instance(self.context, self.instance, self.requested_networks, self.security_groups).AndReturn( self.network_info) self._build_resources_instance_update() self.compute._prep_block_device(self.context, self.instance, self.block_device_mapping).AndRaise(test.TestingException()) self.mox.ReplayAll() try: with self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping): pass except Exception as e: self.assertIsInstance(e, exception.BuildAbortException) def test_failed_bdm_prep_from_delete_raises_unexpected(self): with contextlib.nested( mock.patch.object(self.compute, '_build_networks_for_instance', return_value=self.network_info), mock.patch.object(self.instance, 'save', side_effect=exception.UnexpectedDeletingTaskStateError( actual=task_states.DELETING, expected='None')), ) as (_build_networks_for_instance, save): try: with self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping): pass except Exception as e: self.assertIsInstance(e, exception.UnexpectedDeletingTaskStateError) _build_networks_for_instance.assert_has_calls( mock.call(self.context, self.instance, self.requested_networks, self.security_groups)) save.assert_has_calls(mock.call()) def test_build_resources_aborts_on_failed_network_alloc(self): self.mox.StubOutWithMock(self.compute, '_build_networks_for_instance') self.compute._build_networks_for_instance(self.context, self.instance, self.requested_networks, self.security_groups).AndRaise( test.TestingException()) self.mox.ReplayAll() try: with self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping): pass except Exception as e: self.assertIsInstance(e, exception.BuildAbortException) def test_failed_network_alloc_from_delete_raises_unexpected(self): with mock.patch.object(self.compute, '_build_networks_for_instance') as _build_networks: exc = exception.UnexpectedDeletingTaskStateError _build_networks.side_effect = exc(actual=task_states.DELETING, expected='None') try: with self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping): pass except Exception as e: self.assertIsInstance(e, exc) _build_networks.assert_has_calls( mock.call(self.context, self.instance, self.requested_networks, self.security_groups)) def test_build_resources_cleans_up_and_reraises_on_spawn_failure(self): self.mox.StubOutWithMock(self.compute, '_cleanup_build_resources') self.mox.StubOutWithMock(self.compute, '_build_networks_for_instance') self.compute._build_networks_for_instance(self.context, self.instance, self.requested_networks, self.security_groups).AndReturn( self.network_info) self._build_resources_instance_update() self.compute._cleanup_build_resources(self.context, self.instance, self.block_device_mapping) self.mox.ReplayAll() test_exception = test.TestingException() def fake_spawn(): raise test_exception try: with self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping): fake_spawn() except Exception as e: self.assertEqual(test_exception, e) def test_build_resources_aborts_on_cleanup_failure(self): self.mox.StubOutWithMock(self.compute, '_cleanup_build_resources') self.mox.StubOutWithMock(self.compute, '_build_networks_for_instance') self.compute._build_networks_for_instance(self.context, self.instance, self.requested_networks, self.security_groups).AndReturn( self.network_info) self._build_resources_instance_update() self.compute._cleanup_build_resources(self.context, self.instance, self.block_device_mapping).AndRaise(test.TestingException()) self.mox.ReplayAll() def fake_spawn(): raise test.TestingException() try: with self.compute._build_resources(self.context, self.instance, self.requested_networks, self.security_groups, self.image, self.block_device_mapping): fake_spawn() except Exception as e: self.assertIsInstance(e, exception.BuildAbortException) def test_cleanup_cleans_volumes(self): self.mox.StubOutWithMock(self.compute, '_cleanup_volumes') self.compute._cleanup_volumes(self.context, self.instance['uuid'], self.block_device_mapping) self.mox.ReplayAll() self.compute._cleanup_build_resources(self.context, self.instance, self.block_device_mapping) def test_cleanup_reraises_volume_cleanup_failure(self): self.mox.StubOutWithMock(self.compute, '_cleanup_volumes') self.compute._cleanup_volumes(self.context, self.instance['uuid'], self.block_device_mapping).AndRaise(test.TestingException()) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.compute._cleanup_build_resources, self.context, self.instance, self.block_device_mapping) def test_build_networks_if_not_allocated(self): instance = fake_instance.fake_instance_obj(self.context, system_metadata={}, expected_attrs=['system_metadata']) self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_allocate_network') self.compute._allocate_network(self.context, instance, self.requested_networks, None, self.security_groups, None) self.mox.ReplayAll() self.compute._build_networks_for_instance(self.context, instance, self.requested_networks, self.security_groups) def test_build_networks_if_allocated_false(self): instance = fake_instance.fake_instance_obj(self.context, system_metadata=dict(network_allocated='False'), expected_attrs=['system_metadata']) self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_allocate_network') self.compute._allocate_network(self.context, instance, self.requested_networks, None, self.security_groups, None) self.mox.ReplayAll() self.compute._build_networks_for_instance(self.context, instance, self.requested_networks, self.security_groups) def test_return_networks_if_found(self): instance = fake_instance.fake_instance_obj(self.context, system_metadata=dict(network_allocated='True'), expected_attrs=['system_metadata']) def fake_network_info(): return network_model.NetworkInfo([{'address': '123.123.123.123'}]) self.mox.StubOutWithMock(self.compute, '_get_instance_nw_info') self.mox.StubOutWithMock(self.compute, '_allocate_network') self.compute._get_instance_nw_info(self.context, instance).AndReturn( network_model.NetworkInfoAsyncWrapper(fake_network_info)) self.mox.ReplayAll() self.compute._build_networks_for_instance(self.context, instance, self.requested_networks, self.security_groups) class ComputeManagerMigrationTestCase(test.NoDBTestCase): def setUp(self): super(ComputeManagerMigrationTestCase, self).setUp() self.compute = importutils.import_object(CONF.compute_manager) self.context = context.RequestContext('fake', 'fake') self.image = {} self.instance = fake_instance.fake_instance_obj(self.context, vm_state=vm_states.ACTIVE, expected_attrs=['metadata', 'system_metadata', 'info_cache']) self.migration = migration_obj.Migration() self.migration.status = 'migrating' def test_finish_resize_failure(self): elevated_context = self.context.elevated() with contextlib.nested( mock.patch.object(self.compute, '_finish_resize', side_effect=exception.ResizeError(reason='')), mock.patch.object(self.compute.conductor_api, 'action_event_start'), mock.patch.object(self.compute.conductor_api, 'action_event_finish'), mock.patch.object(self.compute.conductor_api, 'instance_fault_create'), mock.patch.object(self.compute, '_instance_update'), mock.patch.object(self.migration, 'save'), mock.patch.object(self.context, 'elevated', return_value=elevated_context) ) as (meth, event_start, event_finish, fault_create, instance_update, migration_save, context_elevated): self.assertRaises( exception.ResizeError, self.compute.finish_resize, self.context, [], self.image, self.instance, [], self.migration ) self.assertEqual("error", self.migration.status) migration_save.assert_has_calls([mock.call(elevated_context)]) def test_resize_instance_failure(self): elevated_context = self.context.elevated() self.migration.dest_host = None with contextlib.nested( mock.patch.object(self.compute.driver, 'migrate_disk_and_power_off', side_effect=exception.ResizeError(reason='')), mock.patch.object(self.compute.conductor_api, 'action_event_start'), mock.patch.object(self.compute.conductor_api, 'action_event_finish'), mock.patch.object(self.compute.conductor_api, 'instance_fault_create'), mock.patch.object(self.compute, '_instance_update'), mock.patch.object(self.migration, 'save'), mock.patch.object(self.context, 'elevated', return_value=elevated_context), mock.patch.object(self.compute, '_get_instance_nw_info', return_value=None), mock.patch.object(self.instance, 'save'), mock.patch.object(self.compute, '_notify_about_instance_usage'), mock.patch.object(self.compute, '_get_instance_volume_block_device_info', return_value=None), mock.patch.object(block_device_obj.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=None) ) as (meth, event_start, event_finish, fault_create, instance_update, migration_save, context_elevated, nw_info, save_inst, notify, vol_block_info, bdm): self.assertRaises( exception.ResizeError, self.compute.resize_instance, self.context, self.instance, self.image, [], self.migration, 'type' ) self.assertEqual("error", self.migration.status) migration_save.assert_has_calls([mock.call(elevated_context)]) nova-2014.1/nova/tests/compute/fake_resource_tracker.py0000664000175400017540000000214112323721477024373 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.compute import resource_tracker class FakeResourceTracker(resource_tracker.ResourceTracker): """Version without a DB requirement.""" def _create(self, context, values): self.compute_node = values self.compute_node['id'] = 1 def _update(self, context, values, prune_stats=False): self.compute_node.update(values) def _get_service(self, context): return { "id": 1, "compute_node": None } nova-2014.1/nova/tests/compute/test_resource_tracker.py0000664000175400017540000012244712323721477024460 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for compute resource tracking.""" import mock import uuid from oslo.config import cfg from nova.compute import flavors from nova.compute import resource_tracker from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova.objects import base as obj_base from nova.objects import migration as migration_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import rpc from nova import test from nova.tests.compute.monitors import test_monitors from nova.tests.objects import test_migration from nova.virt import driver FAKE_VIRT_MEMORY_MB = 5 FAKE_VIRT_MEMORY_OVERHEAD = 1 FAKE_VIRT_LOCAL_GB = 6 FAKE_VIRT_VCPUS = 1 CONF = cfg.CONF class UnsupportedVirtDriver(driver.ComputeDriver): """Pretend version of a lame virt driver.""" def __init__(self): super(UnsupportedVirtDriver, self).__init__(None) def get_host_ip_addr(self): return '127.0.0.1' def get_available_resource(self, nodename): # no support for getting resource usage info return {} class FakeVirtDriver(driver.ComputeDriver): def __init__(self, pci_support=False): super(FakeVirtDriver, self).__init__(None) self.memory_mb = FAKE_VIRT_MEMORY_MB self.local_gb = FAKE_VIRT_LOCAL_GB self.vcpus = FAKE_VIRT_VCPUS self.memory_mb_used = 0 self.local_gb_used = 0 self.pci_support = pci_support self.pci_devices = [{ 'label': 'forza-napoli', 'dev_type': 'foo', 'compute_node_id': 1, 'address': '0000:00:00.1', 'product_id': 'p1', 'vendor_id': 'v1', 'status': 'available', 'extra_k1': 'v1'}] if self.pci_support else [] self.pci_stats = [{ 'count': 1, 'vendor_id': 'v1', 'product_id': 'p1', 'extra_info': {'extra_k1': 'v1'}}] if self.pci_support else [] def get_host_ip_addr(self): return '127.0.0.1' def get_available_resource(self, nodename): d = { 'vcpus': self.vcpus, 'memory_mb': self.memory_mb, 'local_gb': self.local_gb, 'vcpus_used': 0, 'memory_mb_used': self.memory_mb_used, 'local_gb_used': self.local_gb_used, 'hypervisor_type': 'fake', 'hypervisor_version': 0, 'hypervisor_hostname': 'fakehost', 'cpu_info': '', } if self.pci_support: d['pci_passthrough_devices'] = jsonutils.dumps(self.pci_devices) return d def estimate_instance_overhead(self, instance_info): mem = instance_info['memory_mb'] # make sure memory value is present overhead = { 'memory_mb': FAKE_VIRT_MEMORY_OVERHEAD } return overhead # just return a constant value for testing class BaseTestCase(test.TestCase): def setUp(self): super(BaseTestCase, self).setUp() self.flags(reserved_host_disk_mb=0, reserved_host_memory_mb=0) self.context = context.get_admin_context() self.flags(use_local=True, group='conductor') self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) self._instances = {} self._instance_types = {} self.stubs.Set(self.conductor.db, 'instance_get_all_by_host_and_node', self._fake_instance_get_all_by_host_and_node) self.stubs.Set(self.conductor.db, 'instance_update_and_get_original', self._fake_instance_update_and_get_original) self.stubs.Set(self.conductor.db, 'flavor_get', self._fake_flavor_get) self.host = 'fakehost' def _create_compute_node(self, values=None): compute = { "id": 1, "service_id": 1, "vcpus": 1, "memory_mb": 1, "local_gb": 1, "vcpus_used": 1, "memory_mb_used": 1, "local_gb_used": 1, "free_ram_mb": 1, "free_disk_gb": 1, "current_workload": 1, "running_vms": 0, "cpu_info": None, "stats": [{"key": "num_instances", "value": "1"}], "hypervisor_hostname": "fakenode", } if values: compute.update(values) return compute def _create_service(self, host="fakehost", compute=None): if compute: compute = [compute] service = { "id": 1, "host": host, "binary": "nova-compute", "topic": "compute", "compute_node": compute, } return service def _fake_instance_system_metadata(self, instance_type, prefix=''): sys_meta = [] for key in flavors.system_metadata_flavor_props.keys(): sys_meta.append({'key': '%sinstance_type_%s' % (prefix, key), 'value': instance_type[key]}) return sys_meta def _fake_instance(self, stash=True, **kwargs): # Default to an instance ready to resize to or from the same # instance_type itype = self._fake_flavor_create() sys_meta = self._fake_instance_system_metadata(itype) if stash: # stash instance types in system metadata. sys_meta = (sys_meta + self._fake_instance_system_metadata(itype, 'new_') + self._fake_instance_system_metadata(itype, 'old_')) instance_uuid = str(uuid.uuid1()) instance = { 'uuid': instance_uuid, 'vm_state': vm_states.RESIZED, 'task_state': None, 'memory_mb': 2, 'root_gb': 3, 'ephemeral_gb': 1, 'ephemeral_key_uuid': None, 'os_type': 'Linux', 'project_id': '123456', 'vcpus': 1, 'host': None, 'node': None, 'instance_type_id': 1, 'launched_on': None, 'system_metadata': sys_meta, 'availability_zone': None, 'vm_mode': None, 'reservation_id': None, 'display_name': None, 'default_swap_device': None, 'power_state': None, 'scheduled_at': None, 'access_ip_v6': None, 'access_ip_v4': None, 'key_name': None, 'updated_at': None, 'cell_name': None, 'locked': None, 'locked_by': None, 'launch_index': None, 'architecture': None, 'auto_disk_config': None, 'terminated_at': None, 'ramdisk_id': None, 'user_data': None, 'cleaned': None, 'deleted_at': None, 'id': 333, 'disable_terminate': None, 'hostname': None, 'display_description': None, 'key_data': None, 'deleted': None, 'default_ephemeral_device': None, 'progress': None, 'launched_at': None, 'config_drive': None, 'kernel_id': None, 'user_id': None, 'shutdown_terminate': None, 'created_at': None, 'image_ref': None, 'root_device_name': None, } instance.update(kwargs) self._instances[instance_uuid] = instance return instance def _fake_flavor_create(self, **kwargs): instance_type = { 'id': 1, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'disabled': False, 'is_public': True, 'name': 'fakeitype', 'memory_mb': FAKE_VIRT_MEMORY_MB, 'vcpus': FAKE_VIRT_VCPUS, 'root_gb': FAKE_VIRT_LOCAL_GB / 2, 'ephemeral_gb': FAKE_VIRT_LOCAL_GB / 2, 'swap': 0, 'rxtx_factor': 1.0, 'vcpu_weight': 1, 'flavorid': 'fakeflavor', 'extra_specs': {}, } instance_type.update(**kwargs) id_ = instance_type['id'] self._instance_types[id_] = instance_type return instance_type def _fake_instance_get_all_by_host_and_node(self, context, host, nodename): return [i for i in self._instances.values() if i['host'] == host] def _fake_flavor_get(self, ctxt, id_): return self._instance_types[id_] def _fake_instance_update_and_get_original(self, context, instance_uuid, values): instance = self._instances[instance_uuid] instance.update(values) # the test doesn't care what the original instance values are, it's # only used in the subsequent notification: return (instance, instance) def _driver(self): return FakeVirtDriver() def _tracker(self, host=None): if host is None: host = self.host node = "fakenode" driver = self._driver() tracker = resource_tracker.ResourceTracker(host, driver, node) return tracker class UnsupportedDriverTestCase(BaseTestCase): """Resource tracking should be disabled when the virt driver doesn't support it. """ def setUp(self): super(UnsupportedDriverTestCase, self).setUp() self.tracker = self._tracker() # seed tracker with data: self.tracker.update_available_resource(self.context) def _driver(self): return UnsupportedVirtDriver() def test_disabled(self): # disabled = no compute node stats self.assertTrue(self.tracker.disabled) self.assertIsNone(self.tracker.compute_node) def test_disabled_claim(self): # basic claim: instance = self._fake_instance() claim = self.tracker.instance_claim(self.context, instance) self.assertEqual(0, claim.memory_mb) def test_disabled_instance_claim(self): # instance variation: instance = self._fake_instance() claim = self.tracker.instance_claim(self.context, instance) self.assertEqual(0, claim.memory_mb) def test_disabled_instance_context_claim(self): # instance context manager variation: instance = self._fake_instance() claim = self.tracker.instance_claim(self.context, instance) with self.tracker.instance_claim(self.context, instance) as claim: self.assertEqual(0, claim.memory_mb) def test_disabled_updated_usage(self): instance = self._fake_instance(host='fakehost', memory_mb=5, root_gb=10) self.tracker.update_usage(self.context, instance) def test_disabled_resize_claim(self): instance = self._fake_instance() instance_type = self._fake_flavor_create() claim = self.tracker.resize_claim(self.context, instance, instance_type) self.assertEqual(0, claim.memory_mb) self.assertEqual(instance['uuid'], claim.migration['instance_uuid']) self.assertEqual(instance_type['id'], claim.migration['new_instance_type_id']) def test_disabled_resize_context_claim(self): instance = self._fake_instance() instance_type = self._fake_flavor_create() with self.tracker.resize_claim(self.context, instance, instance_type) \ as claim: self.assertEqual(0, claim.memory_mb) class MissingServiceTestCase(BaseTestCase): def setUp(self): super(MissingServiceTestCase, self).setUp() self.context = context.get_admin_context() self.tracker = self._tracker() def test_missing_service(self): self.tracker.update_available_resource(self.context) self.assertTrue(self.tracker.disabled) class MissingComputeNodeTestCase(BaseTestCase): def setUp(self): super(MissingComputeNodeTestCase, self).setUp() self.tracker = self._tracker() self.stubs.Set(db, 'service_get_by_compute_host', self._fake_service_get_by_compute_host) self.stubs.Set(db, 'compute_node_create', self._fake_create_compute_node) def _fake_create_compute_node(self, context, values): self.created = True return self._create_compute_node() def _fake_service_get_by_compute_host(self, ctx, host): # return a service with no joined compute service = self._create_service() return service def test_create_compute_node(self): self.tracker.update_available_resource(self.context) self.assertTrue(self.created) def test_enabled(self): self.tracker.update_available_resource(self.context) self.assertFalse(self.tracker.disabled) class BaseTrackerTestCase(BaseTestCase): def setUp(self): # setup plumbing for a working resource tracker with required # database models and a compatible compute driver: super(BaseTrackerTestCase, self).setUp() self.updated = False self.deleted = False self.tracker = self._tracker() self._migrations = {} self.stubs.Set(db, 'service_get_by_compute_host', self._fake_service_get_by_compute_host) self.stubs.Set(db, 'compute_node_update', self._fake_compute_node_update) self.stubs.Set(db, 'compute_node_delete', self._fake_compute_node_delete) self.stubs.Set(db, 'migration_update', self._fake_migration_update) self.stubs.Set(db, 'migration_get_in_progress_by_host_and_node', self._fake_migration_get_in_progress_by_host_and_node) self.tracker.update_available_resource(self.context) self.limits = self._limits() def _fake_service_get_by_compute_host(self, ctx, host): self.compute = self._create_compute_node() self.service = self._create_service(host, compute=self.compute) return self.service def _fake_compute_node_update(self, ctx, compute_node_id, values, prune_stats=False): self.updated = True values['stats'] = [{"key": "num_instances", "value": "1"}] self.compute.update(values) return self.compute def _fake_compute_node_delete(self, ctx, compute_node_id): self.deleted = True self.compute.update({'deleted': 1}) return self.compute def _fake_migration_get_in_progress_by_host_and_node(self, ctxt, host, node): status = ['confirmed', 'reverted', 'error'] migrations = [] for migration in self._migrations.values(): migration = obj_base.obj_to_primitive(migration) if migration['status'] in status: continue uuid = migration['instance_uuid'] migration['instance'] = self._instances[uuid] migrations.append(migration) return migrations def _fake_migration_update(self, ctxt, migration_id, values): # cheat and assume there's only 1 migration present migration = self._migrations.values()[0] migration.update(values) return migration def _limits(self, memory_mb=FAKE_VIRT_MEMORY_MB + FAKE_VIRT_MEMORY_OVERHEAD, disk_gb=FAKE_VIRT_LOCAL_GB, vcpus=FAKE_VIRT_VCPUS): """Create limits dictionary used for oversubscribing resources.""" return { 'memory_mb': memory_mb, 'disk_gb': disk_gb, 'vcpu': vcpus } def _assert(self, value, field, tracker=None): if tracker is None: tracker = self.tracker if field not in tracker.compute_node: raise test.TestingException( "'%(field)s' not in compute node." % {'field': field}) x = tracker.compute_node[field] self.assertEqual(value, x) class TrackerTestCase(BaseTrackerTestCase): def test_free_ram_resource_value(self): driver = FakeVirtDriver() mem_free = driver.memory_mb - driver.memory_mb_used self.assertEqual(mem_free, self.tracker.compute_node['free_ram_mb']) def test_free_disk_resource_value(self): driver = FakeVirtDriver() mem_free = driver.local_gb - driver.local_gb_used self.assertEqual(mem_free, self.tracker.compute_node['free_disk_gb']) def test_update_compute_node(self): self.assertFalse(self.tracker.disabled) self.assertTrue(self.updated) def test_init(self): driver = self._driver() self._assert(FAKE_VIRT_MEMORY_MB, 'memory_mb') self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb') self._assert(FAKE_VIRT_VCPUS, 'vcpus') self._assert(0, 'memory_mb_used') self._assert(0, 'local_gb_used') self._assert(0, 'vcpus_used') self._assert(0, 'running_vms') self._assert(FAKE_VIRT_MEMORY_MB, 'free_ram_mb') self._assert(FAKE_VIRT_LOCAL_GB, 'free_disk_gb') self.assertFalse(self.tracker.disabled) self.assertEqual(0, self.tracker.compute_node['current_workload']) self.assertEqual(driver.pci_stats, jsonutils.loads(self.tracker.compute_node['pci_stats'])) class TrackerPciStatsTestCase(BaseTrackerTestCase): def test_update_compute_node(self): self.assertFalse(self.tracker.disabled) self.assertTrue(self.updated) def test_init(self): driver = self._driver() self._assert(FAKE_VIRT_MEMORY_MB, 'memory_mb') self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb') self._assert(FAKE_VIRT_VCPUS, 'vcpus') self._assert(0, 'memory_mb_used') self._assert(0, 'local_gb_used') self._assert(0, 'vcpus_used') self._assert(0, 'running_vms') self._assert(FAKE_VIRT_MEMORY_MB, 'free_ram_mb') self._assert(FAKE_VIRT_LOCAL_GB, 'free_disk_gb') self.assertFalse(self.tracker.disabled) self.assertEqual(0, self.tracker.compute_node['current_workload']) self.assertEqual(driver.pci_stats, jsonutils.loads(self.tracker.compute_node['pci_stats'])) def _driver(self): return FakeVirtDriver(pci_support=True) class InstanceClaimTestCase(BaseTrackerTestCase): def test_update_usage_only_for_tracked(self): instance = self._fake_instance(memory_mb=3, root_gb=1, ephemeral_gb=1, task_state=None) self.tracker.update_usage(self.context, instance) self._assert(0, 'memory_mb_used') self._assert(0, 'local_gb_used') self._assert(0, 'current_workload') claim = self.tracker.instance_claim(self.context, instance, self.limits) self.assertNotEqual(0, claim.memory_mb) self._assert(3 + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(2, 'local_gb_used') # now update should actually take effect instance['task_state'] = task_states.SCHEDULING self.tracker.update_usage(self.context, instance) self._assert(3 + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(2, 'local_gb_used') self._assert(1, 'current_workload') def test_claim_and_audit(self): claim_mem = 3 claim_disk = 2 instance = self._fake_instance(memory_mb=claim_mem, root_gb=claim_disk, ephemeral_gb=0) claim = self.tracker.instance_claim(self.context, instance, self.limits) self.assertEqual(5, self.compute["memory_mb"]) self.assertEqual(claim_mem + FAKE_VIRT_MEMORY_OVERHEAD, self.compute["memory_mb_used"]) self.assertEqual(5 - claim_mem - FAKE_VIRT_MEMORY_OVERHEAD, self.compute["free_ram_mb"]) self.assertEqual(6, self.compute["local_gb"]) self.assertEqual(claim_disk, self.compute["local_gb_used"]) self.assertEqual(6 - claim_disk, self.compute["free_disk_gb"]) # 1st pretend that the compute operation finished and claimed the # desired resources from the virt layer driver = self.tracker.driver driver.memory_mb_used = claim_mem driver.local_gb_used = claim_disk self.tracker.update_available_resource(self.context) # confirm tracker is adding in host_ip self.assertIsNotNone(self.compute.get('host_ip')) # confirm that resource usage is derived from instance usages, # not virt layer: self.assertEqual(claim_mem + FAKE_VIRT_MEMORY_OVERHEAD, self.compute['memory_mb_used']) self.assertEqual(5 - claim_mem - FAKE_VIRT_MEMORY_OVERHEAD, self.compute['free_ram_mb']) self.assertEqual(claim_disk, self.compute['local_gb_used']) self.assertEqual(6 - claim_disk, self.compute['free_disk_gb']) def test_claim_and_abort(self): claim_mem = 3 claim_disk = 2 instance = self._fake_instance(memory_mb=claim_mem, root_gb=claim_disk, ephemeral_gb=0) claim = self.tracker.instance_claim(self.context, instance, self.limits) self.assertIsNotNone(claim) self.assertEqual(claim_mem + FAKE_VIRT_MEMORY_OVERHEAD, self.compute["memory_mb_used"]) self.assertEqual(5 - claim_mem - FAKE_VIRT_MEMORY_OVERHEAD, self.compute["free_ram_mb"]) self.assertEqual(claim_disk, self.compute["local_gb_used"]) self.assertEqual(6 - claim_disk, self.compute["free_disk_gb"]) claim.abort() self.assertEqual(0, self.compute["memory_mb_used"]) self.assertEqual(5, self.compute["free_ram_mb"]) self.assertEqual(0, self.compute["local_gb_used"]) self.assertEqual(6, self.compute["free_disk_gb"]) def test_instance_claim_with_oversubscription(self): memory_mb = FAKE_VIRT_MEMORY_MB * 2 root_gb = ephemeral_gb = FAKE_VIRT_LOCAL_GB vcpus = FAKE_VIRT_VCPUS * 2 limits = {'memory_mb': memory_mb + FAKE_VIRT_MEMORY_OVERHEAD, 'disk_gb': root_gb * 2, 'vcpu': vcpus} instance = self._fake_instance(memory_mb=memory_mb, root_gb=root_gb, ephemeral_gb=ephemeral_gb) self.tracker.instance_claim(self.context, instance, limits) self.assertEqual(memory_mb + FAKE_VIRT_MEMORY_OVERHEAD, self.tracker.compute_node['memory_mb_used']) self.assertEqual(root_gb * 2, self.tracker.compute_node['local_gb_used']) def test_additive_claims(self): self.limits['vcpu'] = 2 instance = self._fake_instance(memory_mb=1, root_gb=1, ephemeral_gb=1, vcpus=1) with self.tracker.instance_claim(self.context, instance, self.limits): pass instance = self._fake_instance(memory_mb=1, root_gb=1, ephemeral_gb=1, vcpus=1) with self.tracker.instance_claim(self.context, instance, self.limits): pass self.assertEqual(2 + 2 * FAKE_VIRT_MEMORY_OVERHEAD, self.tracker.compute_node['memory_mb_used']) self.assertEqual(4, self.tracker.compute_node['local_gb_used']) self.assertEqual(2, self.tracker.compute_node['vcpus_used']) def test_context_claim_with_exception(self): instance = self._fake_instance(memory_mb=1, root_gb=1, ephemeral_gb=1) try: with self.tracker.instance_claim(self.context, instance): # raise test.TestingException() except test.TestingException: pass self.assertEqual(0, self.tracker.compute_node['memory_mb_used']) self.assertEqual(0, self.tracker.compute_node['local_gb_used']) self.assertEqual(0, self.compute['memory_mb_used']) self.assertEqual(0, self.compute['local_gb_used']) def test_instance_context_claim(self): instance = self._fake_instance(memory_mb=1, root_gb=1, ephemeral_gb=1) with self.tracker.instance_claim(self.context, instance): # self.assertEqual(1 + FAKE_VIRT_MEMORY_OVERHEAD, self.tracker.compute_node['memory_mb_used']) self.assertEqual(2, self.tracker.compute_node['local_gb_used']) self.assertEqual(1 + FAKE_VIRT_MEMORY_OVERHEAD, self.compute['memory_mb_used']) self.assertEqual(2, self.compute['local_gb_used']) # after exiting claim context, build is marked as finished. usage # totals should be same: self.tracker.update_available_resource(self.context) self.assertEqual(1 + FAKE_VIRT_MEMORY_OVERHEAD, self.tracker.compute_node['memory_mb_used']) self.assertEqual(2, self.tracker.compute_node['local_gb_used']) self.assertEqual(1 + FAKE_VIRT_MEMORY_OVERHEAD, self.compute['memory_mb_used']) self.assertEqual(2, self.compute['local_gb_used']) def test_update_load_stats_for_instance(self): instance = self._fake_instance(task_state=task_states.SCHEDULING) with self.tracker.instance_claim(self.context, instance): pass self.assertEqual(1, self.tracker.compute_node['current_workload']) instance['vm_state'] = vm_states.ACTIVE instance['task_state'] = None instance['host'] = 'fakehost' self.tracker.update_usage(self.context, instance) self.assertEqual(0, self.tracker.compute_node['current_workload']) def test_cpu_stats(self): limits = {'disk_gb': 100, 'memory_mb': 100} self.assertEqual(0, self.tracker.compute_node['vcpus_used']) instance = self._fake_instance(vcpus=1) # should not do anything until a claim is made: self.tracker.update_usage(self.context, instance) self.assertEqual(0, self.tracker.compute_node['vcpus_used']) with self.tracker.instance_claim(self.context, instance, limits): pass self.assertEqual(1, self.tracker.compute_node['vcpus_used']) # instance state can change without modifying vcpus in use: instance['task_state'] = task_states.SCHEDULING self.tracker.update_usage(self.context, instance) self.assertEqual(1, self.tracker.compute_node['vcpus_used']) instance = self._fake_instance(vcpus=10) with self.tracker.instance_claim(self.context, instance, limits): pass self.assertEqual(11, self.tracker.compute_node['vcpus_used']) instance['vm_state'] = vm_states.DELETED self.tracker.update_usage(self.context, instance) self.assertEqual(1, self.tracker.compute_node['vcpus_used']) def test_skip_deleted_instances(self): # ensure that the audit process skips instances that have vm_state # DELETED, but the DB record is not yet deleted. self._fake_instance(vm_state=vm_states.DELETED, host=self.host) self.tracker.update_available_resource(self.context) self.assertEqual(0, self.tracker.compute_node['memory_mb_used']) self.assertEqual(0, self.tracker.compute_node['local_gb_used']) class ResizeClaimTestCase(BaseTrackerTestCase): def setUp(self): super(ResizeClaimTestCase, self).setUp() def _fake_migration_create(mig_self, ctxt): self._migrations[mig_self.instance_uuid] = mig_self mig_self.obj_reset_changes() self.stubs.Set(migration_obj.Migration, 'create', _fake_migration_create) self.instance = self._fake_instance() self.instance_type = self._fake_flavor_create() def _fake_migration_create(self, context, values=None): instance_uuid = str(uuid.uuid1()) mig_dict = test_migration.fake_db_migration() mig_dict.update({ 'id': 1, 'source_compute': 'host1', 'source_node': 'fakenode', 'dest_compute': 'host2', 'dest_node': 'fakenode', 'dest_host': '127.0.0.1', 'old_instance_type_id': 1, 'new_instance_type_id': 2, 'instance_uuid': instance_uuid, 'status': 'pre-migrating', 'updated_at': timeutils.utcnow() }) if values: mig_dict.update(values) migration = migration_obj.Migration() migration.update(mig_dict) # This hits the stub in setUp() migration.create('fake') def test_claim(self): self.tracker.resize_claim(self.context, self.instance, self.instance_type, self.limits) self._assert(FAKE_VIRT_MEMORY_MB + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb_used') self._assert(FAKE_VIRT_VCPUS, 'vcpus_used') self.assertEqual(1, len(self.tracker.tracked_migrations)) def test_abort(self): try: with self.tracker.resize_claim(self.context, self.instance, self.instance_type, self.limits): raise test.TestingException("abort") except test.TestingException: pass self._assert(0, 'memory_mb_used') self._assert(0, 'local_gb_used') self._assert(0, 'vcpus_used') self.assertEqual(0, len(self.tracker.tracked_migrations)) def test_additive_claims(self): limits = self._limits(FAKE_VIRT_MEMORY_MB * 2 + FAKE_VIRT_MEMORY_OVERHEAD * 2, FAKE_VIRT_LOCAL_GB * 2, FAKE_VIRT_VCPUS * 2) self.tracker.resize_claim(self.context, self.instance, self.instance_type, limits) instance2 = self._fake_instance() self.tracker.resize_claim(self.context, instance2, self.instance_type, limits) self._assert(2 * FAKE_VIRT_MEMORY_MB + 2 * FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(2 * FAKE_VIRT_LOCAL_GB, 'local_gb_used') self._assert(2 * FAKE_VIRT_VCPUS, 'vcpus_used') def test_claim_and_audit(self): self.tracker.resize_claim(self.context, self.instance, self.instance_type, self.limits) self.tracker.update_available_resource(self.context) self._assert(FAKE_VIRT_MEMORY_MB + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb_used') self._assert(FAKE_VIRT_VCPUS, 'vcpus_used') def test_same_host(self): self.limits['vcpu'] = 3 src_type = self._fake_flavor_create(id=2, memory_mb=1, root_gb=1, ephemeral_gb=0, vcpus=1) dest_type = self._fake_flavor_create(id=2, memory_mb=2, root_gb=2, ephemeral_gb=1, vcpus=2) # make an instance of src_type: instance = self._fake_instance(memory_mb=1, root_gb=1, ephemeral_gb=0, vcpus=1, instance_type_id=2) instance['system_metadata'] = self._fake_instance_system_metadata( dest_type) self.tracker.instance_claim(self.context, instance, self.limits) # resize to dest_type: claim = self.tracker.resize_claim(self.context, instance, dest_type, self.limits) self._assert(3 + FAKE_VIRT_MEMORY_OVERHEAD * 2, 'memory_mb_used') self._assert(4, 'local_gb_used') self._assert(3, 'vcpus_used') self.tracker.update_available_resource(self.context) claim.abort() # only the original instance should remain, not the migration: self._assert(1 + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(1, 'local_gb_used') self._assert(1, 'vcpus_used') self.assertEqual(1, len(self.tracker.tracked_instances)) self.assertEqual(0, len(self.tracker.tracked_migrations)) def test_revert(self): self.tracker.resize_claim(self.context, self.instance, self.instance_type, self.limits) self.tracker.drop_resize_claim(self.instance) self.assertEqual(0, len(self.tracker.tracked_instances)) self.assertEqual(0, len(self.tracker.tracked_migrations)) self._assert(0, 'memory_mb_used') self._assert(0, 'local_gb_used') self._assert(0, 'vcpus_used') def test_revert_reserve_source(self): # if a revert has started at the API and audit runs on # the source compute before the instance flips back to source, # resources should still be held at the source based on the # migration: dest = "desthost" dest_tracker = self._tracker(host=dest) dest_tracker.update_available_resource(self.context) self.instance = self._fake_instance(memory_mb=FAKE_VIRT_MEMORY_MB, root_gb=FAKE_VIRT_LOCAL_GB, ephemeral_gb=0, vcpus=FAKE_VIRT_VCPUS, instance_type_id=1) values = {'source_compute': self.host, 'dest_compute': dest, 'old_instance_type_id': 1, 'new_instance_type_id': 1, 'status': 'post-migrating', 'instance_uuid': self.instance['uuid']} migration = self._fake_migration_create(self.context, values) # attach an instance to the destination host tracker: dest_tracker.instance_claim(self.context, self.instance) self._assert(FAKE_VIRT_MEMORY_MB + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used', tracker=dest_tracker) self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb_used', tracker=dest_tracker) self._assert(FAKE_VIRT_VCPUS, 'vcpus_used', tracker=dest_tracker) # audit and recheck to confirm migration doesn't get double counted # on dest: dest_tracker.update_available_resource(self.context) self._assert(FAKE_VIRT_MEMORY_MB + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used', tracker=dest_tracker) self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb_used', tracker=dest_tracker) self._assert(FAKE_VIRT_VCPUS, 'vcpus_used', tracker=dest_tracker) # apply the migration to the source host tracker: self.tracker.update_available_resource(self.context) self._assert(FAKE_VIRT_MEMORY_MB + FAKE_VIRT_MEMORY_OVERHEAD, 'memory_mb_used') self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb_used') self._assert(FAKE_VIRT_VCPUS, 'vcpus_used') # flag the instance and migration as reverting and re-audit: self.instance['vm_state'] = vm_states.RESIZED self.instance['task_state'] = task_states.RESIZE_REVERTING self.tracker.update_available_resource(self.context) self._assert(FAKE_VIRT_MEMORY_MB + 1, 'memory_mb_used') self._assert(FAKE_VIRT_LOCAL_GB, 'local_gb_used') self._assert(FAKE_VIRT_VCPUS, 'vcpus_used') def test_resize_filter(self): instance = self._fake_instance(vm_state=vm_states.ACTIVE, task_state=task_states.SUSPENDING) self.assertFalse(self.tracker._instance_in_resize_state(instance)) instance = self._fake_instance(vm_state=vm_states.RESIZED, task_state=task_states.SUSPENDING) self.assertTrue(self.tracker._instance_in_resize_state(instance)) states = [task_states.RESIZE_PREP, task_states.RESIZE_MIGRATING, task_states.RESIZE_MIGRATED, task_states.RESIZE_FINISH] for vm_state in [vm_states.ACTIVE, vm_states.STOPPED]: for task_state in states: instance = self._fake_instance(vm_state=vm_state, task_state=task_state) result = self.tracker._instance_in_resize_state(instance) self.assertTrue(result) def test_dupe_filter(self): self._fake_flavor_create(id=2, memory_mb=1, root_gb=1, ephemeral_gb=1, vcpus=1) instance = self._fake_instance(host=self.host) values = {'source_compute': self.host, 'dest_compute': self.host, 'instance_uuid': instance['uuid'], 'new_instance_type_id': 2} self._fake_migration_create(self.context, values) self._fake_migration_create(self.context, values) self.tracker.update_available_resource(self.context) self.assertEqual(1, len(self.tracker.tracked_migrations)) def test_set_instance_host_and_node(self): instance = self._fake_instance() self.assertIsNone(instance['host']) self.assertIsNone(instance['launched_on']) self.assertIsNone(instance['node']) claim = self.tracker.instance_claim(self.context, instance) self.assertNotEqual(0, claim.memory_mb) self.assertEqual('fakehost', instance['host']) self.assertEqual('fakehost', instance['launched_on']) self.assertEqual('fakenode', instance['node']) class NoInstanceTypesInSysMetadata(ResizeClaimTestCase): """Make sure we handle the case where the following are true: 1) Compute node C gets upgraded to code that looks for instance types in system metadata. AND 2) C already has instances in the process of migrating that do not have stashed instance types. bug 1164110 """ def setUp(self): super(NoInstanceTypesInSysMetadata, self).setUp() self.instance = self._fake_instance(stash=False) class OrphanTestCase(BaseTrackerTestCase): def _driver(self): class OrphanVirtDriver(FakeVirtDriver): def get_per_instance_usage(self): return { '1-2-3-4-5': {'memory_mb': 4, 'uuid': '1-2-3-4-5'}, '2-3-4-5-6': {'memory_mb': 4, 'uuid': '2-3-4-5-6'}, } return OrphanVirtDriver() def test_usage(self): # 2 instances, 4 mb each, plus overhead self.assertEqual(8 + 2 * FAKE_VIRT_MEMORY_OVERHEAD, self.tracker.compute_node['memory_mb_used']) def test_find(self): # create one legit instance and verify the 2 orphans remain self._fake_instance() orphans = self.tracker._find_orphaned_instances() self.assertEqual(2, len(orphans)) class ComputeMonitorTestCase(BaseTestCase): def setUp(self): super(ComputeMonitorTestCase, self).setUp() fake_monitors = [ 'nova.tests.compute.monitors.test_monitors.FakeMonitorClass1', 'nova.tests.compute.monitors.test_monitors.FakeMonitorClass2'] self.flags(compute_available_monitors=fake_monitors) self.tracker = self._tracker() self.node_name = 'nodename' self.user_id = 'fake' self.project_id = 'fake' self.info = {} self.context = context.RequestContext(self.user_id, self.project_id) def test_get_host_metrics_none(self): self.flags(compute_monitors=['FakeMontorClass1', 'FakeMonitorClass4']) self.tracker.monitors = [] metrics = self.tracker._get_host_metrics(self.context, self.node_name) self.assertEqual(len(metrics), 0) def test_get_host_metrics_one_failed(self): self.flags(compute_monitors=['FakeMonitorClass1', 'FakeMonitorClass4']) class1 = test_monitors.FakeMonitorClass1(self.tracker) class4 = test_monitors.FakeMonitorClass4(self.tracker) self.tracker.monitors = [class1, class4] metrics = self.tracker._get_host_metrics(self.context, self.node_name) self.assertTrue(len(metrics) > 0) def test_get_host_metrics(self): self.flags(compute_monitors=['FakeMonitorClass1', 'FakeMonitorClass2']) class1 = test_monitors.FakeMonitorClass1(self.tracker) class2 = test_monitors.FakeMonitorClass2(self.tracker) self.tracker.monitors = [class1, class2] mock_notifier = mock.Mock() with mock.patch.object(rpc, 'get_notifier', return_value=mock_notifier) as mock_get: metrics = self.tracker._get_host_metrics(self.context, self.node_name) mock_get.assert_called_once_with(service='compute', host=self.node_name) expected_metrics = [{ 'timestamp': 1232, 'name': 'key1', 'value': 2600, 'source': 'libvirt' }, { 'name': 'key2', 'source': 'libvirt', 'timestamp': 123, 'value': 1600 }] payload = { 'metrics': expected_metrics, 'host': self.tracker.host, 'host_ip': CONF.my_ip, 'nodename': self.node_name } mock_notifier.info.assert_called_once_with( self.context, 'compute.metrics.update', payload) self.assertEqual(metrics, expected_metrics) nova-2014.1/nova/tests/compute/__init__.py0000664000175400017540000000117312323721477021606 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/test_exception.py0000664000175400017540000001472212323721477021434 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import inspect from nova import context from nova import exception from nova.openstack.common import gettextutils from nova import test class FakeNotifier(object): """Acts like messaging.Notifier.""" def __init__(self): self.provided_context = None self.provided_event = None self.provided_payload = None def error(self, context, event, payload): self.provided_context = context self.provided_event = event self.provided_payload = payload def good_function(self, context): return 99 def bad_function_exception(self, context, extra, blah="a", boo="b", zoo=None): raise test.TestingException() class WrapExceptionTestCase(test.NoDBTestCase): def test_wrap_exception_good_return(self): wrapped = exception.wrap_exception('foo') self.assertEqual(99, wrapped(good_function)(1, 2)) def test_wrap_exception_with_notifier(self): notifier = FakeNotifier() wrapped = exception.wrap_exception(notifier) ctxt = context.get_admin_context() self.assertRaises(test.TestingException, wrapped(bad_function_exception), 1, ctxt, 3, zoo=3) self.assertEqual(notifier.provided_event, "bad_function_exception") self.assertEqual(notifier.provided_context, ctxt) self.assertEqual(notifier.provided_payload['args']['extra'], 3) for key in ['exception', 'args']: self.assertIn(key, notifier.provided_payload.keys()) class NovaExceptionTestCase(test.NoDBTestCase): def test_default_error_msg(self): class FakeNovaException(exception.NovaException): msg_fmt = "default message" exc = FakeNovaException() self.assertEqual(unicode(exc), 'default message') def test_error_msg(self): self.assertEqual(unicode(exception.NovaException('test')), 'test') def test_default_error_msg_with_kwargs(self): class FakeNovaException(exception.NovaException): msg_fmt = "default message: %(code)s" exc = FakeNovaException(code=500) self.assertEqual(unicode(exc), 'default message: 500') self.assertEqual(exc.message, 'default message: 500') def test_error_msg_exception_with_kwargs(self): class FakeNovaException(exception.NovaException): msg_fmt = "default message: %(misspelled_code)s" exc = FakeNovaException(code=500, misspelled_code='blah') self.assertEqual(unicode(exc), 'default message: blah') self.assertEqual(exc.message, 'default message: blah') def test_default_error_code(self): class FakeNovaException(exception.NovaException): code = 404 exc = FakeNovaException() self.assertEqual(exc.kwargs['code'], 404) def test_error_code_from_kwarg(self): class FakeNovaException(exception.NovaException): code = 500 exc = FakeNovaException(code=404) self.assertEqual(exc.kwargs['code'], 404) def test_cleanse_dict(self): kwargs = {'foo': 1, 'blah_pass': 2, 'zoo_password': 3, '_pass': 4} self.assertEqual(exception._cleanse_dict(kwargs), {'foo': 1}) kwargs = {} self.assertEqual(exception._cleanse_dict(kwargs), {}) def test_format_message_local(self): class FakeNovaException(exception.NovaException): msg_fmt = "some message" exc = FakeNovaException() self.assertEqual(unicode(exc), exc.format_message()) def test_format_message_remote(self): class FakeNovaException_Remote(exception.NovaException): msg_fmt = "some message" def __unicode__(self): return u"print the whole trace" exc = FakeNovaException_Remote() self.assertEqual(unicode(exc), u"print the whole trace") self.assertEqual(exc.format_message(), "some message") def test_format_message_remote_error(self): class FakeNovaException_Remote(exception.NovaException): msg_fmt = "some message %(somearg)s" def __unicode__(self): return u"print the whole trace" self.flags(fatal_exception_format_errors=False) exc = FakeNovaException_Remote(lame_arg='lame') self.assertEqual(exc.format_message(), "some message %(somearg)s") def test_format_message_gettext_msg_returned(self): class FakeNovaException(exception.NovaException): msg_fmt = gettextutils.Message("Some message %(param)s", domain='nova') exc = FakeNovaException(param='blah') msg = exc.format_message() self.assertIsInstance(msg, gettextutils.Message) self.assertEqual(msg, "Some message blah") class ExceptionTestCase(test.NoDBTestCase): @staticmethod def _raise_exc(exc): raise exc() def test_exceptions_raise(self): # NOTE(dprince): disable format errors since we are not passing kwargs self.flags(fatal_exception_format_errors=False) for name in dir(exception): exc = getattr(exception, name) if isinstance(exc, type): self.assertRaises(exc, self._raise_exc, exc) class ExceptionValidMessageTestCase(test.NoDBTestCase): def test_messages(self): failures = [] for name, obj in inspect.getmembers(exception): if name in ['NovaException', 'InstanceFaultRollback']: continue if not inspect.isclass(obj): continue if not issubclass(obj, exception.NovaException): continue e = obj if e.msg_fmt == "An unknown exception occurred.": failures.append('%s needs a more specific msg_fmt' % name) if failures: self.fail('\n'.join(failures)) nova-2014.1/nova/tests/test_policy.py0000664000175400017540000002046712323721477020740 0ustar jenkinsjenkins00000000000000# Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test of Policy Engine For Nova.""" import os.path import StringIO import urllib2 from nova import context from nova import exception from nova.openstack.common import policy as common_policy from nova import policy from nova import test from nova.tests import policy_fixture from nova import utils class PolicyFileTestCase(test.NoDBTestCase): def setUp(self): super(PolicyFileTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.target = {} def test_modified_policy_reloads(self): with utils.tempdir() as tmpdir: tmpfilename = os.path.join(tmpdir, 'policy') self.flags(policy_file=tmpfilename) # NOTE(uni): context construction invokes policy check to determin # is_admin or not. As a side-effect, policy reset is needed here # to flush existing policy cache. policy.reset() action = "example:test" with open(tmpfilename, "w") as policyfile: policyfile.write('{"example:test": ""}') policy.enforce(self.context, action, self.target) with open(tmpfilename, "w") as policyfile: policyfile.write('{"example:test": "!"}') # NOTE(vish): reset stored policy cache so we don't have to # sleep(1) policy._POLICY_CACHE = {} self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) class PolicyTestCase(test.NoDBTestCase): def setUp(self): super(PolicyTestCase, self).setUp() rules = { "true": '@', "example:allowed": '@', "example:denied": "!", "example:get_http": "http://www.example.com", "example:my_file": "role:compute_admin or " "project_id:%(project_id)s", "example:early_and_fail": "! and @", "example:early_or_success": "@ or !", "example:lowercase_admin": "role:admin or role:sysadmin", "example:uppercase_admin": "role:ADMIN or role:sysadmin", } self.policy.set_rules(rules) self.context = context.RequestContext('fake', 'fake', roles=['member']) self.target = {} def test_enforce_nonexistent_action_throws(self): action = "example:noexist" self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) def test_enforce_bad_action_throws(self): action = "example:denied" self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) def test_enforce_bad_action_noraise(self): action = "example:denied" result = policy.enforce(self.context, action, self.target, False) self.assertEqual(result, False) def test_enforce_good_action(self): action = "example:allowed" result = policy.enforce(self.context, action, self.target) self.assertEqual(result, True) def test_enforce_http_true(self): def fakeurlopen(url, post_data): return StringIO.StringIO("True") self.stubs.Set(urllib2, 'urlopen', fakeurlopen) action = "example:get_http" target = {} result = policy.enforce(self.context, action, target) self.assertEqual(result, True) def test_enforce_http_false(self): def fakeurlopen(url, post_data): return StringIO.StringIO("False") self.stubs.Set(urllib2, 'urlopen', fakeurlopen) action = "example:get_http" target = {} self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, target) def test_templatized_enforcement(self): target_mine = {'project_id': 'fake'} target_not_mine = {'project_id': 'another'} action = "example:my_file" policy.enforce(self.context, action, target_mine) self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, target_not_mine) def test_early_AND_enforcement(self): action = "example:early_and_fail" self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) def test_early_OR_enforcement(self): action = "example:early_or_success" policy.enforce(self.context, action, self.target) def test_ignore_case_role_check(self): lowercase_action = "example:lowercase_admin" uppercase_action = "example:uppercase_admin" # NOTE(dprince) we mix case in the Admin role here to ensure # case is ignored admin_context = context.RequestContext('admin', 'fake', roles=['AdMiN']) policy.enforce(admin_context, lowercase_action, self.target) policy.enforce(admin_context, uppercase_action, self.target) class DefaultPolicyTestCase(test.NoDBTestCase): def setUp(self): super(DefaultPolicyTestCase, self).setUp() self.rules = { "default": '', "example:exist": "!", } self._set_rules('default') self.context = context.RequestContext('fake', 'fake') def _set_rules(self, default_rule): rules = common_policy.Rules( dict((k, common_policy.parse_rule(v)) for k, v in self.rules.items()), default_rule) common_policy.set_rules(rules) def test_policy_called(self): self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, "example:exist", {}) def test_not_found_policy_calls_default(self): policy.enforce(self.context, "example:noexist", {}) def test_default_not_found(self): self._set_rules("default_noexist") self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, "example:noexist", {}) class IsAdminCheckTestCase(test.NoDBTestCase): def test_init_true(self): check = policy.IsAdminCheck('is_admin', 'True') self.assertEqual(check.kind, 'is_admin') self.assertEqual(check.match, 'True') self.assertEqual(check.expected, True) def test_init_false(self): check = policy.IsAdminCheck('is_admin', 'nottrue') self.assertEqual(check.kind, 'is_admin') self.assertEqual(check.match, 'False') self.assertEqual(check.expected, False) def test_call_true(self): check = policy.IsAdminCheck('is_admin', 'True') self.assertEqual(check('target', dict(is_admin=True)), True) self.assertEqual(check('target', dict(is_admin=False)), False) def test_call_false(self): check = policy.IsAdminCheck('is_admin', 'False') self.assertEqual(check('target', dict(is_admin=True)), False) self.assertEqual(check('target', dict(is_admin=False)), True) class AdminRolePolicyTestCase(test.NoDBTestCase): def setUp(self): super(AdminRolePolicyTestCase, self).setUp() self.policy = self.useFixture(policy_fixture.RoleBasedPolicyFixture()) self.context = context.RequestContext('fake', 'fake', roles=['member']) self.actions = policy.get_rules().keys() self.target = {} def test_enforce_admin_actions_with_nonadmin_context_throws(self): """Check if non-admin context passed to admin actions throws Policy not authorized exception """ for action in self.actions: self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) nova-2014.1/nova/tests/test_test.py0000664000175400017540000000327212323721477020413 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for the testing base code.""" from oslo.config import cfg from oslo import messaging from nova import rpc from nova import test CONF = cfg.CONF CONF.import_opt('use_local', 'nova.conductor.api', group='conductor') class IsolationTestCase(test.TestCase): """Ensure that things are cleaned up after failed tests. These tests don't really do much here, but if isolation fails a bunch of other tests should fail. """ def test_service_isolation(self): self.flags(use_local=True, group='conductor') self.useFixture(test.ServiceFixture('compute')) def test_rpc_consumer_isolation(self): class NeverCalled(object): def __getattribute__(*args): assert False, "I should never get called." server = rpc.get_server(messaging.Target(topic='compute', server=CONF.host), endpoints=[NeverCalled()]) server.start() nova-2014.1/nova/tests/virt/0000775000175400017540000000000012323722546017001 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/hyperv/0000775000175400017540000000000012323722546020316 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/hyperv/test_vhdutils.py0000664000175400017540000001237012323721477023576 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import test from nova.virt.hyperv import constants from nova.virt.hyperv import vhdutils from nova.virt.hyperv import vmutils class VHDUtilsTestCase(test.NoDBTestCase): """Unit tests for the Hyper-V VHDUtils class.""" _FAKE_VHD_PATH = "C:\\fake_path.vhdx" _FAKE_FORMAT = 3 _FAKE_MAK_INTERNAL_SIZE = 1000 _FAKE_JOB_PATH = 'fake_job_path' _FAKE_RET_VAL = 0 def setUp(self): self._vhdutils = vhdutils.VHDUtils() self._vhdutils._conn = mock.MagicMock() self._vhdutils._vmutils = mock.MagicMock() super(VHDUtilsTestCase, self).setUp() def test_create_dynamic_vhd(self): self._vhdutils.get_vhd_info = mock.MagicMock( return_value={'Format': self._FAKE_FORMAT}) mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0] mock_img_svc.CreateDynamicVirtualHardDisk.return_value = ( self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vhdutils.create_dynamic_vhd(self._FAKE_VHD_PATH, self._FAKE_MAK_INTERNAL_SIZE, constants.DISK_FORMAT_VHD) mock_img_svc.CreateDynamicVirtualHardDisk.assert_called_once_with( Path=self._FAKE_VHD_PATH, MaxInternalSize=self._FAKE_MAK_INTERNAL_SIZE) def test_get_internal_vhd_size_by_file_size_fixed(self): vhdutil = vhdutils.VHDUtils() root_vhd_size = 1 * 1024 ** 3 vhdutil.get_vhd_info = mock.MagicMock() vhdutil.get_vhd_info.return_value = {'Type': constants.VHD_TYPE_FIXED} real_size = vhdutil.get_internal_vhd_size_by_file_size(None, root_vhd_size) expected_vhd_size = 1 * 1024 ** 3 - 512 self.assertEqual(expected_vhd_size, real_size) def test_get_internal_vhd_size_by_file_size_dynamic(self): vhdutil = vhdutils.VHDUtils() root_vhd_size = 20 * 1024 ** 3 vhdutil.get_vhd_info = mock.MagicMock() vhdutil.get_vhd_info.return_value = {'Type': constants.VHD_TYPE_DYNAMIC} vhdutil._get_vhd_dynamic_blk_size = mock.MagicMock() vhdutil._get_vhd_dynamic_blk_size.return_value = 2097152 real_size = vhdutil.get_internal_vhd_size_by_file_size(None, root_vhd_size) expected_vhd_size = 20 * 1024 ** 3 - 43008 self.assertEqual(expected_vhd_size, real_size) def test_get_internal_vhd_size_by_file_size_unsupported(self): vhdutil = vhdutils.VHDUtils() root_vhd_size = 20 * 1024 ** 3 vhdutil.get_vhd_info = mock.MagicMock() vhdutil.get_vhd_info.return_value = {'Type': 5} self.assertRaises(vmutils.HyperVException, vhdutil.get_internal_vhd_size_by_file_size, None, root_vhd_size) def test_get_vhd_format_vhdx(self): with mock.patch('nova.virt.hyperv.vhdutils.open', mock.mock_open(read_data=vhdutils.VHDX_SIGNATURE), create=True) as mock_open: format = self._vhdutils.get_vhd_format(self._FAKE_VHD_PATH) self.assertEqual(constants.DISK_FORMAT_VHDX, format) def test_get_vhd_format_vhd(self): with mock.patch('nova.virt.hyperv.vhdutils.open', mock.mock_open(read_data=vhdutils.VHD_SIGNATURE), create=True) as mock_open: f = mock_open.return_value f.tell.return_value = 1024 format = self._vhdutils.get_vhd_format(self._FAKE_VHD_PATH) self.assertEqual(constants.DISK_FORMAT_VHD, format) def test_get_vhd_format_invalid_format(self): with mock.patch('nova.virt.hyperv.vhdutils.open', mock.mock_open(read_data='invalid'), create=True) as mock_open: f = mock_open.return_value f.tell.return_value = 1024 self.assertRaises(vmutils.HyperVException, self._vhdutils.get_vhd_format, self._FAKE_VHD_PATH) def test_get_vhd_format_zero_length_file(self): with mock.patch('nova.virt.hyperv.vhdutils.open', mock.mock_open(read_data=''), create=True) as mock_open: f = mock_open.return_value f.tell.return_value = 0 self.assertRaises(vmutils.HyperVException, self._vhdutils.get_vhd_format, self._FAKE_VHD_PATH) f.seek.assert_called_once_with(0, 2) nova-2014.1/nova/tests/virt/hyperv/test_vmutils.py0000664000175400017540000001031112323721477023430 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import test from nova.virt.hyperv import vmutils class VMUtilsTestCase(test.NoDBTestCase): """Unit tests for the Hyper-V VMUtils class.""" _FAKE_VM_NAME = 'fake_vm' _FAKE_MEMORY_MB = 2 _FAKE_VM_PATH = "fake_vm_path" _FAKE_VHD_PATH = "fake_vhd_path" _FAKE_DVD_PATH = "fake_dvd_path" _FAKE_VOLUME_DRIVE_PATH = "fake_volume_drive_path" def setUp(self): self._vmutils = vmutils.VMUtils() self._vmutils._conn = mock.MagicMock() super(VMUtilsTestCase, self).setUp() def test_enable_vm_metrics_collection(self): self.assertRaises(NotImplementedError, self._vmutils.enable_vm_metrics_collection, self._FAKE_VM_NAME) def _lookup_vm(self): mock_vm = mock.MagicMock() self._vmutils._lookup_vm_check = mock.MagicMock( return_value=mock_vm) mock_vm.path_.return_value = self._FAKE_VM_PATH return mock_vm def test_set_vm_memory_static(self): self._test_set_vm_memory_dynamic(1.0) def test_set_vm_memory_dynamic(self): self._test_set_vm_memory_dynamic(2.0) def _test_set_vm_memory_dynamic(self, dynamic_memory_ratio): mock_vm = self._lookup_vm() mock_s = self._vmutils._conn.Msvm_VirtualSystemSettingData()[0] mock_s.SystemType = 3 mock_vmsetting = mock.MagicMock() mock_vmsetting.associators.return_value = [mock_s] self._vmutils._modify_virt_resource = mock.MagicMock() self._vmutils._set_vm_memory(mock_vm, mock_vmsetting, self._FAKE_MEMORY_MB, dynamic_memory_ratio) self._vmutils._modify_virt_resource.assert_called_with( mock_s, self._FAKE_VM_PATH) if dynamic_memory_ratio > 1: self.assertTrue(mock_s.DynamicMemoryEnabled) else: self.assertFalse(mock_s.DynamicMemoryEnabled) @mock.patch('nova.virt.hyperv.vmutils.VMUtils._get_vm_disks') def test_get_vm_storage_paths(self, mock_get_vm_disks): self._lookup_vm() mock_rasds = self._create_mock_disks() mock_get_vm_disks.return_value = ([mock_rasds[0]], [mock_rasds[1]]) storage = self._vmutils.get_vm_storage_paths(self._FAKE_VM_NAME) (disk_files, volume_drives) = storage self.assertEqual([self._FAKE_VHD_PATH], disk_files) self.assertEqual([self._FAKE_VOLUME_DRIVE_PATH], volume_drives) def test_get_vm_disks(self): mock_vm = self._lookup_vm() mock_vmsettings = [mock.MagicMock()] mock_vm.associators.return_value = mock_vmsettings mock_rasds = self._create_mock_disks() mock_vmsettings[0].associators.return_value = mock_rasds (disks, volumes) = self._vmutils._get_vm_disks(mock_vm) mock_vm.associators.assert_called_with( wmi_result_class=self._vmutils._VIRTUAL_SYSTEM_SETTING_DATA_CLASS) mock_vmsettings[0].associators.assert_called_with( wmi_result_class=self._vmutils._STORAGE_ALLOC_SETTING_DATA_CLASS) self.assertEqual([mock_rasds[0]], disks) self.assertEqual([mock_rasds[1]], volumes) def _create_mock_disks(self): mock_rasd1 = mock.MagicMock() mock_rasd1.ResourceSubType = self._vmutils._IDE_DISK_RES_SUB_TYPE mock_rasd1.Connection = [self._FAKE_VHD_PATH] mock_rasd2 = mock.MagicMock() mock_rasd2.ResourceSubType = self._vmutils._PHYS_DISK_RES_SUB_TYPE mock_rasd2.HostResource = [self._FAKE_VOLUME_DRIVE_PATH] return [mock_rasd1, mock_rasd2] nova-2014.1/nova/tests/virt/hyperv/test_networkutilsv2.py0000664000175400017540000000472412323721477024762 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import test from nova.virt.hyperv import networkutilsv2 from nova.virt.hyperv import vmutils class NetworkUtilsV2TestCase(test.NoDBTestCase): """Unit tests for the Hyper-V NetworkUtilsV2 class.""" _FAKE_VSWITCH_NAME = "fake_vswitch_name" _FAKE_VSWITCH_PATH = "fake_vswitch_path" def setUp(self): self._networkutils = networkutilsv2.NetworkUtilsV2() self._networkutils._conn = mock.MagicMock() super(NetworkUtilsV2TestCase, self).setUp() def test_get_external_vswitch(self): mock_vswitch = mock.MagicMock() mock_vswitch.path_.return_value = self._FAKE_VSWITCH_PATH self._networkutils._conn.Msvm_VirtualEthernetSwitch.return_value = [ mock_vswitch] switch_path = self._networkutils.get_external_vswitch( self._FAKE_VSWITCH_NAME) self.assertEqual(self._FAKE_VSWITCH_PATH, switch_path) def test_get_external_vswitch_not_found(self): mock_vswitch = mock.MagicMock() mock_vswitch.path_.return_value = self._FAKE_VSWITCH_PATH self._networkutils._conn.Msvm_VirtualEthernetSwitch.return_value = [] self.assertRaises(vmutils.HyperVException, self._networkutils.get_external_vswitch, self._FAKE_VSWITCH_NAME) def test_get_external_vswitch_no_name(self): mock_vswitch = mock.MagicMock() mock_vswitch.path_.return_value = self._FAKE_VSWITCH_PATH mock_ext_port = self._networkutils._conn.Msvm_ExternalEthernetPort()[0] mock_lep = mock_ext_port.associators()[0] mock_lep1 = mock_lep.associators()[0] mock_esw = mock_lep1.associators()[0] mock_esw.associators.return_value = [mock_vswitch] switch_path = self._networkutils.get_external_vswitch(None) self.assertEqual(self._FAKE_VSWITCH_PATH, switch_path) nova-2014.1/nova/tests/virt/hyperv/test_vhdutilsv2.py0000664000175400017540000002373512323721477024055 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import test from nova.openstack.common import units from nova.virt.hyperv import constants from nova.virt.hyperv import vhdutilsv2 class VHDUtilsV2TestCase(test.NoDBTestCase): """Unit tests for the Hyper-V VHDUtilsV2 class.""" _FAKE_VHD_PATH = "C:\\fake_path.vhdx" _FAKE_PARENT_VHD_PATH = "C:\\fake_parent_path.vhdx" _FAKE_FORMAT = 3 _FAKE_MAK_INTERNAL_SIZE = units.Gi _FAKE_TYPE = 3 _FAKE_JOB_PATH = 'fake_job_path' _FAKE_RET_VAL = 0 _FAKE_VHD_FORMAT = 'vhdx' _FAKE_BLOCK_SIZE = 33554432 _FAKE_LOG_SIZE = 1048576 _FAKE_LOGICAL_SECTOR_SIZE = 4096 _FAKE_METADATA_SIZE = 1048576 def setUp(self): self._vhdutils = vhdutilsv2.VHDUtilsV2() self._vhdutils._conn = mock.MagicMock() self._vhdutils._vmutils = mock.MagicMock() self._vhdutils.get_vhd_format = mock.MagicMock( return_value=self._FAKE_VHD_FORMAT) self._fake_file_handle = mock.MagicMock() self._fake_vhd_info_xml = ( '' '' '33554432' '' '' 'Virtual Hard Disk Setting Data' '' '' 'Setting Data for a Virtual Hard Disk.' '' '' 'fake_path.vhdx' '' '' '%(format)s' '' '' '52794B89-AC06-4349-AC57-486CAAD52F69' '' '' '512' '' '' '%(max_internal_size)s' '' '' '%(parent_path)s' '' '' '%(path)s' '' '' '4096' '' '' '%(type)s' '' '' % {'path': self._FAKE_VHD_PATH, 'parent_path': self._FAKE_PARENT_VHD_PATH, 'format': self._FAKE_FORMAT, 'max_internal_size': self._FAKE_MAK_INTERNAL_SIZE, 'type': self._FAKE_TYPE}) super(VHDUtilsV2TestCase, self).setUp() def test_get_vhd_info(self): mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0] mock_img_svc.GetVirtualHardDiskSettingData.return_value = ( self._FAKE_JOB_PATH, self._FAKE_RET_VAL, self._fake_vhd_info_xml) vhd_info = self._vhdutils.get_vhd_info(self._FAKE_VHD_PATH) self.assertEqual(self._FAKE_VHD_PATH, vhd_info['Path']) self.assertEqual(self._FAKE_PARENT_VHD_PATH, vhd_info['ParentPath']) self.assertEqual(self._FAKE_FORMAT, vhd_info['Format']) self.assertEqual(self._FAKE_MAK_INTERNAL_SIZE, vhd_info['MaxInternalSize']) self.assertEqual(self._FAKE_TYPE, vhd_info['Type']) def test_create_dynamic_vhd(self): self._vhdutils.get_vhd_info = mock.MagicMock( return_value={'Format': self._FAKE_FORMAT}) mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0] mock_img_svc.CreateVirtualHardDisk.return_value = (self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vhdutils.create_dynamic_vhd(self._FAKE_VHD_PATH, self._FAKE_MAK_INTERNAL_SIZE, constants.DISK_FORMAT_VHDX) self.assertTrue(mock_img_svc.CreateVirtualHardDisk.called) def test_create_differencing_vhd(self): self._vhdutils.get_vhd_info = mock.MagicMock( return_value={'ParentPath': self._FAKE_PARENT_VHD_PATH, 'Format': self._FAKE_FORMAT}) mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0] mock_img_svc.CreateVirtualHardDisk.return_value = (self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vhdutils.create_differencing_vhd(self._FAKE_VHD_PATH, self._FAKE_PARENT_VHD_PATH) self.assertTrue(mock_img_svc.CreateVirtualHardDisk.called) def test_reconnect_parent_vhd(self): mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0] self._vhdutils._get_vhd_info_xml = mock.MagicMock( return_value=self._fake_vhd_info_xml) mock_img_svc.SetVirtualHardDiskSettingData.return_value = ( self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vhdutils.reconnect_parent_vhd(self._FAKE_VHD_PATH, self._FAKE_PARENT_VHD_PATH) mock_img_svc.SetVirtualHardDiskSettingData.assert_called_once_with( VirtualDiskSettingData=self._fake_vhd_info_xml) def test_resize_vhd(self): mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0] mock_img_svc.ResizeVirtualHardDisk.return_value = (self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vhdutils.get_internal_vhd_size_by_file_size = mock.MagicMock( return_value=self._FAKE_MAK_INTERNAL_SIZE) self._vhdutils.resize_vhd(self._FAKE_VHD_PATH, self._FAKE_MAK_INTERNAL_SIZE) mock_img_svc.ResizeVirtualHardDisk.assert_called_once_with( Path=self._FAKE_VHD_PATH, MaxInternalSize=self._FAKE_MAK_INTERNAL_SIZE) self.mock_get = self._vhdutils.get_internal_vhd_size_by_file_size self.mock_get.assert_called_once_with(self._FAKE_VHD_PATH, self._FAKE_MAK_INTERNAL_SIZE) def test_get_vhdx_internal_size(self): self._vhdutils.get_vhd_info = mock.MagicMock( return_value={'ParentPath': self._FAKE_PARENT_VHD_PATH, 'Format': self._FAKE_FORMAT, 'BlockSize': self._FAKE_BLOCK_SIZE, 'LogicalSectorSize': self._FAKE_LOGICAL_SECTOR_SIZE, 'Type': self._FAKE_TYPE}) self._vhdutils._get_vhdx_log_size = mock.MagicMock( return_value=self._FAKE_LOG_SIZE) self._vhdutils._get_vhdx_metadata_size_and_offset = mock.MagicMock( return_value=(self._FAKE_METADATA_SIZE, 1024)) self._vhdutils._get_vhdx_block_size = mock.MagicMock( return_value=self._FAKE_BLOCK_SIZE) file_mock = mock.MagicMock() with mock.patch('__builtin__.open', file_mock): internal_size = ( self._vhdutils.get_internal_vhd_size_by_file_size( self._FAKE_VHD_PATH, self._FAKE_MAK_INTERNAL_SIZE)) self.assertEqual(self._FAKE_MAK_INTERNAL_SIZE - self._FAKE_BLOCK_SIZE, internal_size) def test_get_vhdx_current_header(self): VHDX_HEADER_OFFSETS = [64 * 1024, 128 * 1024] fake_sequence_numbers = ['\x01\x00\x00\x00\x00\x00\x00\x00', '\x02\x00\x00\x00\x00\x00\x00\x00'] self._fake_file_handle.read = mock.MagicMock( side_effect=fake_sequence_numbers) offset = self._vhdutils._get_vhdx_current_header_offset( self._fake_file_handle) self.assertEqual(offset, VHDX_HEADER_OFFSETS[1]) def test_get_vhdx_metadata_size(self): fake_metadata_offset = '\x01\x00\x00\x00\x00\x00\x00\x00' fake_metadata_size = '\x01\x00\x00\x00' self._fake_file_handle.read = mock.MagicMock( side_effect=[fake_metadata_offset, fake_metadata_size]) metadata_size, metadata_offset = ( self._vhdutils._get_vhdx_metadata_size_and_offset( self._fake_file_handle)) self.assertEqual(metadata_size, 1) self.assertEqual(metadata_offset, 1) def test_get_block_size(self): self._vhdutils._get_vhdx_metadata_size_and_offset = mock.MagicMock( return_value=(self._FAKE_METADATA_SIZE, 1024)) fake_block_size = '\x01\x00\x00\x00' self._fake_file_handle.read = mock.MagicMock( return_value=fake_block_size) block_size = self._vhdutils._get_vhdx_block_size( self._fake_file_handle) self.assertEqual(block_size, 1) def test_get_log_size(self): fake_current_header_offset = 64 * 1024 self._vhdutils._get_vhdx_current_header_offset = mock.MagicMock( return_value=fake_current_header_offset) fake_log_size = '\x01\x00\x00\x00' self._fake_file_handle.read = mock.MagicMock( return_value=fake_log_size) log_size = self._vhdutils._get_vhdx_log_size(self._fake_file_handle) self.assertEqual(log_size, 1) nova-2014.1/nova/tests/virt/hyperv/test_vmutilsv2.py0000664000175400017540000002567312323721477023721 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import test from nova.virt.hyperv import vmutilsv2 class VMUtilsV2TestCase(test.NoDBTestCase): """Unit tests for the Hyper-V VMUtilsV2 class.""" _FAKE_VM_NAME = 'fake_vm' _FAKE_MEMORY_MB = 2 _FAKE_VCPUS_NUM = 4 _FAKE_JOB_PATH = 'fake_job_path' _FAKE_RET_VAL = 0 _FAKE_CTRL_PATH = 'fake_ctrl_path' _FAKE_CTRL_ADDR = 0 _FAKE_DRIVE_ADDR = 0 _FAKE_MOUNTED_DISK_PATH = 'fake_mounted_disk_path' _FAKE_VM_PATH = "fake_vm_path" _FAKE_ENABLED_STATE = 1 _FAKE_SNAPSHOT_PATH = "_FAKE_SNAPSHOT_PATH" _FAKE_RES_DATA = "fake_res_data" _FAKE_RES_PATH = "fake_res_path" _FAKE_DYNAMIC_MEMORY_RATIO = 1.0 _FAKE_VHD_PATH = "fake_vhd_path" _FAKE_VOLUME_DRIVE_PATH = "fake_volume_drive_path" def setUp(self): self._vmutils = vmutilsv2.VMUtilsV2() self._vmutils._conn = mock.MagicMock() super(VMUtilsV2TestCase, self).setUp() def _lookup_vm(self): mock_vm = mock.MagicMock() self._vmutils._lookup_vm_check = mock.MagicMock( return_value=mock_vm) mock_vm.path_.return_value = self._FAKE_VM_PATH return mock_vm def test_create_vm(self): mock_svc = self._vmutils._conn.Msvm_VirtualSystemManagementService()[0] mock_svc.DefineSystem.return_value = (None, self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vmutils._get_wmi_obj = mock.MagicMock() mock_vm = self._vmutils._get_wmi_obj.return_value mock_s = mock.MagicMock() mock_s.VirtualSystemType = self._vmutils._VIRTUAL_SYSTEM_TYPE_REALIZED mock_vm.associators.return_value = [mock_s] self._vmutils._set_vm_memory = mock.MagicMock() self._vmutils._set_vm_vcpus = mock.MagicMock() self._vmutils.create_vm(self._FAKE_VM_NAME, self._FAKE_MEMORY_MB, self._FAKE_VCPUS_NUM, False, self._FAKE_DYNAMIC_MEMORY_RATIO) self.assertTrue(mock_svc.DefineSystem.called) self._vmutils._set_vm_memory.assert_called_with( mock_vm, mock_s, self._FAKE_MEMORY_MB, self._FAKE_DYNAMIC_MEMORY_RATIO) self._vmutils._set_vm_vcpus.assert_called_with(mock_vm, mock_s, self._FAKE_VCPUS_NUM, False) def test_attach_ide_drive(self): self._lookup_vm() self._vmutils._get_vm_ide_controller = mock.MagicMock() self._vmutils._get_new_resource_setting_data = mock.MagicMock() self._vmutils._add_virt_resource = mock.MagicMock() self._vmutils.attach_ide_drive(self._FAKE_VM_NAME, self._FAKE_CTRL_PATH, self._FAKE_CTRL_ADDR, self._FAKE_DRIVE_ADDR) self.assertTrue(self._vmutils._get_vm_ide_controller.called) self.assertTrue(self._vmutils._get_new_resource_setting_data.called) self.assertTrue(self._vmutils._add_virt_resource.called) def test_attach_volume_to_controller(self): self._lookup_vm() self._vmutils._add_virt_resource = mock.MagicMock() self._vmutils.attach_volume_to_controller(self._FAKE_VM_NAME, self._FAKE_CTRL_PATH, self._FAKE_CTRL_ADDR, self._FAKE_MOUNTED_DISK_PATH) self.assertTrue(self._vmutils._add_virt_resource.called) def test_create_scsi_controller(self): self._lookup_vm() self._vmutils._add_virt_resource = mock.MagicMock() self._vmutils.create_scsi_controller(self._FAKE_VM_NAME) self.assertTrue(self._vmutils._add_virt_resource.called) def test_get_vm_storage_paths(self): mock_vm = self._lookup_vm() mock_vmsettings = [mock.MagicMock()] mock_vm.associators.return_value = mock_vmsettings mock_sasds = [] mock_sasd1 = mock.MagicMock() mock_sasd1.ResourceSubType = self._vmutils._IDE_DISK_RES_SUB_TYPE mock_sasd1.HostResource = [self._FAKE_VHD_PATH] mock_sasd2 = mock.MagicMock() mock_sasd2.ResourceSubType = self._vmutils._PHYS_DISK_RES_SUB_TYPE mock_sasd2.HostResource = [self._FAKE_VOLUME_DRIVE_PATH] mock_sasds.append(mock_sasd1) mock_sasds.append(mock_sasd2) mock_vmsettings[0].associators.return_value = mock_sasds storage = self._vmutils.get_vm_storage_paths(self._FAKE_VM_NAME) (disk_files, volume_drives) = storage mock_vm.associators.assert_called_with( wmi_result_class='Msvm_VirtualSystemSettingData') mock_vmsettings[0].associators.assert_called_with( wmi_result_class='Msvm_StorageAllocationSettingData') self.assertEqual([self._FAKE_VHD_PATH], disk_files) self.assertEqual([self._FAKE_VOLUME_DRIVE_PATH], volume_drives) def test_destroy(self): self._lookup_vm() mock_svc = self._vmutils._conn.Msvm_VirtualSystemManagementService()[0] mock_svc.DestroySystem.return_value = (self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vmutils.destroy_vm(self._FAKE_VM_NAME) mock_svc.DestroySystem.assert_called_with(self._FAKE_VM_PATH) def test_get_vm_state(self): self._vmutils.get_vm_summary_info = mock.MagicMock( return_value={'EnabledState': self._FAKE_ENABLED_STATE}) enabled_state = self._vmutils.get_vm_state(self._FAKE_VM_NAME) self.assertEqual(self._FAKE_ENABLED_STATE, enabled_state) def test_take_vm_snapshot(self): self._lookup_vm() mock_svc = self._vmutils._conn.Msvm_VirtualSystemSnapshotService()[0] mock_svc.CreateSnapshot.return_value = (self._FAKE_JOB_PATH, mock.MagicMock(), self._FAKE_RET_VAL) vmutilsv2.wmi = mock.MagicMock() self._vmutils.take_vm_snapshot(self._FAKE_VM_NAME) mock_svc.CreateSnapshot.assert_called_with( AffectedSystem=self._FAKE_VM_PATH, SnapshotType=self._vmutils._SNAPSHOT_FULL) def test_remove_vm_snapshot(self): mock_svc = self._vmutils._conn.Msvm_VirtualSystemSnapshotService()[0] mock_svc.DestroySnapshot.return_value = (self._FAKE_JOB_PATH, self._FAKE_RET_VAL) self._vmutils.remove_vm_snapshot(self._FAKE_SNAPSHOT_PATH) mock_svc.DestroySnapshot.assert_called_with(self._FAKE_SNAPSHOT_PATH) def test_set_nic_connection(self): self._lookup_vm() self._vmutils._get_nic_data_by_name = mock.MagicMock() self._vmutils._add_virt_resource = mock.MagicMock() fake_eth_port = mock.MagicMock() self._vmutils._get_new_setting_data = mock.MagicMock( return_value=fake_eth_port) self._vmutils.set_nic_connection(self._FAKE_VM_NAME, None, None) self._vmutils._add_virt_resource.assert_called_with(fake_eth_port, self._FAKE_VM_PATH) def test_add_virt_resource(self): mock_svc = self._vmutils._conn.Msvm_VirtualSystemManagementService()[0] mock_svc.AddResourceSettings.return_value = (self._FAKE_JOB_PATH, mock.MagicMock(), self._FAKE_RET_VAL) mock_res_setting_data = mock.MagicMock() mock_res_setting_data.GetText_.return_value = self._FAKE_RES_DATA self._vmutils._add_virt_resource(mock_res_setting_data, self._FAKE_VM_PATH) mock_svc.AddResourceSettings.assert_called_with(self._FAKE_VM_PATH, [self._FAKE_RES_DATA]) def test_modify_virt_resource(self): mock_svc = self._vmutils._conn.Msvm_VirtualSystemManagementService()[0] mock_svc.ModifyResourceSettings.return_value = (self._FAKE_JOB_PATH, mock.MagicMock(), self._FAKE_RET_VAL) mock_res_setting_data = mock.MagicMock() mock_res_setting_data.GetText_.return_value = self._FAKE_RES_DATA self._vmutils._modify_virt_resource(mock_res_setting_data, self._FAKE_VM_PATH) mock_svc.ModifyResourceSettings.assert_called_with( ResourceSettings=[self._FAKE_RES_DATA]) def test_remove_virt_resource(self): mock_svc = self._vmutils._conn.Msvm_VirtualSystemManagementService()[0] mock_svc.RemoveResourceSettings.return_value = (self._FAKE_JOB_PATH, self._FAKE_RET_VAL) mock_res_setting_data = mock.MagicMock() mock_res_setting_data.path_.return_value = self._FAKE_RES_PATH self._vmutils._remove_virt_resource(mock_res_setting_data, self._FAKE_VM_PATH) mock_svc.RemoveResourceSettings.assert_called_with( [self._FAKE_RES_PATH]) @mock.patch('nova.virt.hyperv.vmutils.VMUtils._get_vm_disks') def test_enable_vm_metrics_collection(self, mock_get_vm_disks): self._lookup_vm() mock_svc = self._vmutils._conn.Msvm_MetricService()[0] metric_def = mock.MagicMock() mock_disk = mock.MagicMock() mock_disk.path_.return_value = self._FAKE_RES_PATH mock_get_vm_disks.return_value = ([mock_disk], [mock_disk]) fake_metric_def_paths = ["fake_0", None] fake_metric_resource_paths = [self._FAKE_VM_PATH, self._FAKE_RES_PATH] metric_def.path_.side_effect = fake_metric_def_paths self._vmutils._conn.CIM_BaseMetricDefinition.return_value = [ metric_def] self._vmutils.enable_vm_metrics_collection(self._FAKE_VM_NAME) calls = [] for i in range(len(fake_metric_def_paths)): calls.append(mock.call( Subject=fake_metric_resource_paths[i], Definition=fake_metric_def_paths[i], MetricCollectionEnabled=self._vmutils._METRIC_ENABLED)) mock_svc.ControlMetrics.assert_has_calls(calls, any_order=True) nova-2014.1/nova/tests/virt/hyperv/fake.py0000664000175400017540000000525712323721477021611 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import io import os class PathUtils(object): def open(self, path, mode): return io.BytesIO(b'fake content') def exists(self, path): return False def makedirs(self, path): pass def remove(self, path): pass def rename(self, src, dest): pass def copyfile(self, src, dest): pass def copy(self, src, dest): pass def rmtree(self, path): pass def get_instances_dir(self, remote_server=None): return 'C:\\FakeInstancesPath\\' def get_instance_migr_revert_dir(self, instance_name, create_dir=False, remove_dir=False): return os.path.join(self.get_instances_dir(), instance_name, '_revert') def get_instance_dir(self, instance_name, remote_server=None, create_dir=True, remove_dir=False): return os.path.join(self.get_instances_dir(remote_server), instance_name) def lookup_root_vhd_path(self, instance_name): instance_path = self.get_instance_dir(instance_name) return os.path.join(instance_path, 'root.vhd') def lookup_ephemeral_vhd_path(self, instance_name): instance_path = self.get_instance_dir(instance_name) if instance_path: return os.path.join(instance_path, 'ephemeral.vhd') def get_root_vhd_path(self, instance_name, format_ext): instance_path = self.get_instance_dir(instance_name) return os.path.join(instance_path, 'root.' + format_ext) def get_ephemeral_vhd_path(self, instance_name, format_ext): instance_path = self.get_instance_dir(instance_name) return os.path.join(instance_path, 'ephemeral.' + format_ext.lower()) def get_base_vhd_dir(self): return os.path.join(self.get_instances_dir(), '_base') def get_export_dir(self, instance_name): export_dir = os.path.join(self.get_instances_dir(), 'export', instance_name) return export_dir def vhd_exists(self, path): return False nova-2014.1/nova/tests/virt/hyperv/test_rdpconsoleutils.py0000664000175400017540000000211612323721477025162 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import test from nova.virt.hyperv import rdpconsoleutils class RDPConsoleUtilsTestCase(test.NoDBTestCase): def setUp(self): self._rdpconsoleutils = rdpconsoleutils.RDPConsoleUtils() super(RDPConsoleUtilsTestCase, self).setUp() def test_get_rdp_console_port(self): listener_port = self._rdpconsoleutils.get_rdp_console_port() self.assertEqual(self._rdpconsoleutils._DEFAULT_HYPERV_RDP_PORT, listener_port) nova-2014.1/nova/tests/virt/hyperv/db_fakes.py0000664000175400017540000001271312323721477022434 0ustar jenkinsjenkins00000000000000# Copyright 2012 Cloudbase Solutions Srl # # 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. """ Stubouts, mocks and fixtures for the test suite """ import uuid from nova.compute import task_states from nova.compute import vm_states from nova import db from nova import utils def get_fake_instance_data(name, project_id, user_id): return {'name': name, 'id': 1, 'uuid': str(uuid.uuid4()), 'project_id': project_id, 'user_id': user_id, 'image_ref': "1", 'kernel_id': "1", 'ramdisk_id': "1", 'mac_address': "de:ad:be:ef:be:ef", 'flavor': {'name': 'm1.tiny', 'memory_mb': 512, 'vcpus': 1, 'root_gb': 1024, 'flavorid': 1, 'rxtx_factor': 1} } def get_fake_image_data(project_id, user_id): return {'name': 'image1', 'id': 1, 'project_id': project_id, 'user_id': user_id, 'image_ref': "1", 'kernel_id': "1", 'ramdisk_id': "1", 'mac_address': "de:ad:be:ef:be:ef", 'flavor': 'm1.tiny', } def get_fake_volume_info_data(target_portal, volume_id): return { 'driver_volume_type': 'iscsi', 'data': { 'volume_id': 1, 'target_iqn': 'iqn.2010-10.org.openstack:volume-' + volume_id, 'target_portal': target_portal, 'target_lun': 1, 'auth_method': 'CHAP', } } def get_fake_block_device_info(target_portal, volume_id): return {'block_device_mapping': [{'connection_info': { 'driver_volume_type': 'iscsi', 'data': {'target_lun': 1, 'volume_id': volume_id, 'target_iqn': 'iqn.2010-10.org.openstack:volume-' + volume_id, 'target_portal': target_portal, 'target_discovered': False}}, 'mount_device': 'vda', 'delete_on_termination': False}], 'root_device_name': None, 'ephemerals': [], 'swap': None } def stub_out_db_instance_api(stubs): """Stubs out the db API for creating Instances.""" FLAVORS = { 'm1.tiny': dict(memory_mb=512, vcpus=1, root_gb=0, flavorid=1), 'm1.small': dict(memory_mb=2048, vcpus=1, root_gb=20, flavorid=2), 'm1.medium': dict(memory_mb=4096, vcpus=2, root_gb=40, flavorid=3), 'm1.large': dict(memory_mb=8192, vcpus=4, root_gb=80, flavorid=4), 'm1.xlarge': dict(memory_mb=16384, vcpus=8, root_gb=160, flavorid=5)} class FakeModel(object): """Stubs out for model.""" def __init__(self, values): self.values = values def get(self, key, default=None): if key in self.values: return self.values[key] else: return default def __getattr__(self, name): return self.values[name] def __getitem__(self, key): return self.get(key) def __setitem__(self, key, value): self.values[key] = value def __str__(self): return str(self.values) def fake_instance_create(context, values): """Stubs out the db.instance_create method.""" if 'flavor' not in values: return flavor = values['flavor'] base_options = { 'name': values['name'], 'id': values['id'], 'uuid': str(uuid.uuid4()), 'reservation_id': utils.generate_uid('r'), 'image_ref': values['image_ref'], 'kernel_id': values['kernel_id'], 'ramdisk_id': values['ramdisk_id'], 'vm_state': vm_states.BUILDING, 'task_state': task_states.SCHEDULING, 'user_id': values['user_id'], 'project_id': values['project_id'], 'flavor': flavor, 'memory_mb': flavor['memory_mb'], 'vcpus': flavor['vcpus'], 'mac_addresses': [{'address': values['mac_address']}], 'root_gb': flavor['root_gb'], } return FakeModel(base_options) def fake_flavor_get_all(context, inactive=0, filters=None): return FLAVORS.values() def fake_flavor_get_by_name(context, name): return FLAVORS[name] def fake_block_device_mapping_get_all_by_instance(context, instance_uuid): return {} stubs.Set(db, 'instance_create', fake_instance_create) stubs.Set(db, 'flavor_get_all', fake_flavor_get_all) stubs.Set(db, 'flavor_get_by_name', fake_flavor_get_by_name) stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_block_device_mapping_get_all_by_instance) nova-2014.1/nova/tests/virt/hyperv/test_hypervapi.py0000664000175400017540000021731212323721477023746 0ustar jenkinsjenkins00000000000000# Copyright 2012 Cloudbase Solutions Srl # # 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. """ Test suite for the Hyper-V driver and related APIs. """ import contextlib import io import os import platform import shutil import time import uuid import mock import mox from oslo.config import cfg from nova.api.metadata import base as instance_metadata from nova.compute import power_state from nova.compute import task_states from nova import context from nova import db from nova import exception from nova.image import glance from nova.openstack.common.gettextutils import _ from nova.openstack.common import units from nova import test from nova.tests import fake_network from nova.tests.image import fake as fake_image from nova.tests import matchers from nova.tests.virt.hyperv import db_fakes from nova.tests.virt.hyperv import fake from nova import utils from nova.virt import configdrive from nova.virt import driver from nova.virt.hyperv import basevolumeutils from nova.virt.hyperv import constants from nova.virt.hyperv import driver as driver_hyperv from nova.virt.hyperv import hostutils from nova.virt.hyperv import livemigrationutils from nova.virt.hyperv import networkutils from nova.virt.hyperv import networkutilsv2 from nova.virt.hyperv import pathutils from nova.virt.hyperv import rdpconsoleutils from nova.virt.hyperv import utilsfactory from nova.virt.hyperv import vhdutils from nova.virt.hyperv import vhdutilsv2 from nova.virt.hyperv import vmutils from nova.virt.hyperv import vmutilsv2 from nova.virt.hyperv import volumeops from nova.virt.hyperv import volumeutils from nova.virt.hyperv import volumeutilsv2 from nova.virt import images CONF = cfg.CONF CONF.import_opt('vswitch_name', 'nova.virt.hyperv.vif', 'hyperv') class HyperVAPIBaseTestCase(test.NoDBTestCase): """Base unit tests class for Hyper-V driver calls.""" def __init__(self, test_case_name): self._mox = mox.Mox() super(HyperVAPIBaseTestCase, self).__init__(test_case_name) def setUp(self): super(HyperVAPIBaseTestCase, self).setUp() self._user_id = 'fake' self._project_id = 'fake' self._instance_data = None self._image_metadata = None self._fetched_image = None self._update_image_raise_exception = False self._volume_target_portal = 'testtargetportal:3260' self._volume_id = '0ef5d708-45ab-4129-8c59-d774d2837eb7' self._context = context.RequestContext(self._user_id, self._project_id) self._instance_ide_disks = [] self._instance_ide_dvds = [] self._instance_volume_disks = [] self._test_vm_name = None self._test_instance_dir = 'C:\\FakeInstancesPath\\instance-0000001' self._check_min_windows_version_satisfied = True self._setup_stubs() self.flags(instances_path=r'C:\Hyper-V\test\instances', network_api_class='nova.network.neutronv2.api.API') self.flags(force_volumeutils_v1=True, group='hyperv') self.flags(force_hyperv_utils_v1=True, group='hyperv') self._conn = driver_hyperv.HyperVDriver(None) def _setup_stubs(self): db_fakes.stub_out_db_instance_api(self.stubs) fake_image.stub_out_image_service(self.stubs) fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) def fake_fetch(context, image_id, target, user, project): self._fetched_image = target self.stubs.Set(images, 'fetch', fake_fetch) def fake_get_remote_image_service(context, name): class FakeGlanceImageService(object): def update(self_fake, context, image_id, image_metadata, f): if self._update_image_raise_exception: raise vmutils.HyperVException( "Simulated update failure") self._image_metadata = image_metadata return (FakeGlanceImageService(), 1) self.stubs.Set(glance, 'get_remote_image_service', fake_get_remote_image_service) def fake_check_min_windows_version(fake_self, major, minor): return self._check_min_windows_version_satisfied self.stubs.Set(hostutils.HostUtils, 'check_min_windows_version', fake_check_min_windows_version) def fake_sleep(ms): pass self.stubs.Set(time, 'sleep', fake_sleep) def fake_vmutils__init__(self, host='.'): pass vmutils.VMUtils.__init__ = fake_vmutils__init__ self.stubs.Set(pathutils, 'PathUtils', fake.PathUtils) self._mox.StubOutWithMock(fake.PathUtils, 'open') self._mox.StubOutWithMock(fake.PathUtils, 'copyfile') self._mox.StubOutWithMock(fake.PathUtils, 'rmtree') self._mox.StubOutWithMock(fake.PathUtils, 'copy') self._mox.StubOutWithMock(fake.PathUtils, 'remove') self._mox.StubOutWithMock(fake.PathUtils, 'rename') self._mox.StubOutWithMock(fake.PathUtils, 'makedirs') self._mox.StubOutWithMock(fake.PathUtils, 'get_instance_migr_revert_dir') self._mox.StubOutWithMock(fake.PathUtils, 'get_instance_dir') self._mox.StubOutWithMock(vmutils.VMUtils, 'vm_exists') self._mox.StubOutWithMock(vmutils.VMUtils, 'create_vm') self._mox.StubOutWithMock(vmutils.VMUtils, 'destroy_vm') self._mox.StubOutWithMock(vmutils.VMUtils, 'attach_ide_drive') self._mox.StubOutWithMock(vmutils.VMUtils, 'create_scsi_controller') self._mox.StubOutWithMock(vmutils.VMUtils, 'create_nic') self._mox.StubOutWithMock(vmutils.VMUtils, 'set_vm_state') self._mox.StubOutWithMock(vmutils.VMUtils, 'list_instances') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_vm_summary_info') self._mox.StubOutWithMock(vmutils.VMUtils, 'take_vm_snapshot') self._mox.StubOutWithMock(vmutils.VMUtils, 'remove_vm_snapshot') self._mox.StubOutWithMock(vmutils.VMUtils, 'set_nic_connection') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_vm_scsi_controller') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_vm_ide_controller') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_attached_disks_count') self._mox.StubOutWithMock(vmutils.VMUtils, 'attach_volume_to_controller') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_mounted_disk_by_drive_number') self._mox.StubOutWithMock(vmutils.VMUtils, 'detach_vm_disk') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_vm_storage_paths') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_controller_volume_paths') self._mox.StubOutWithMock(vmutils.VMUtils, 'enable_vm_metrics_collection') self._mox.StubOutWithMock(vmutils.VMUtils, 'get_vm_id') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'create_differencing_vhd') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'reconnect_parent_vhd') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'merge_vhd') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'get_vhd_parent_path') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'get_vhd_info') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'resize_vhd') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'get_internal_vhd_size_by_file_size') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'validate_vhd') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'get_vhd_format') self._mox.StubOutWithMock(vhdutils.VHDUtils, 'create_dynamic_vhd') self._mox.StubOutWithMock(hostutils.HostUtils, 'get_cpus_info') self._mox.StubOutWithMock(hostutils.HostUtils, 'is_cpu_feature_present') self._mox.StubOutWithMock(hostutils.HostUtils, 'get_memory_info') self._mox.StubOutWithMock(hostutils.HostUtils, 'get_volume_info') self._mox.StubOutWithMock(hostutils.HostUtils, 'get_windows_version') self._mox.StubOutWithMock(hostutils.HostUtils, 'get_local_ips') self._mox.StubOutWithMock(networkutils.NetworkUtils, 'get_external_vswitch') self._mox.StubOutWithMock(networkutils.NetworkUtils, 'create_vswitch_port') self._mox.StubOutWithMock(networkutils.NetworkUtils, 'vswitch_port_needed') self._mox.StubOutWithMock(livemigrationutils.LiveMigrationUtils, 'live_migrate_vm') self._mox.StubOutWithMock(livemigrationutils.LiveMigrationUtils, 'check_live_migration_config') self._mox.StubOutWithMock(basevolumeutils.BaseVolumeUtils, 'volume_in_mapping') self._mox.StubOutWithMock(basevolumeutils.BaseVolumeUtils, 'get_session_id_from_mounted_disk') self._mox.StubOutWithMock(basevolumeutils.BaseVolumeUtils, 'get_device_number_for_target') self._mox.StubOutWithMock(basevolumeutils.BaseVolumeUtils, 'get_target_from_disk_path') self._mox.StubOutWithMock(volumeutils.VolumeUtils, 'login_storage_target') self._mox.StubOutWithMock(volumeutils.VolumeUtils, 'logout_storage_target') self._mox.StubOutWithMock(volumeutils.VolumeUtils, 'execute_log_out') self._mox.StubOutWithMock(volumeutils.VolumeUtils, 'get_iscsi_initiator') self._mox.StubOutWithMock(volumeutilsv2.VolumeUtilsV2, 'login_storage_target') self._mox.StubOutWithMock(volumeutilsv2.VolumeUtilsV2, 'logout_storage_target') self._mox.StubOutWithMock(volumeutilsv2.VolumeUtilsV2, 'execute_log_out') self._mox.StubOutWithMock(rdpconsoleutils.RDPConsoleUtils, 'get_rdp_console_port') self._mox.StubOutClassWithMocks(instance_metadata, 'InstanceMetadata') self._mox.StubOutWithMock(instance_metadata.InstanceMetadata, 'metadata_for_config_drive') # Can't use StubOutClassWithMocks due to __exit__ and __enter__ self._mox.StubOutWithMock(configdrive, 'ConfigDriveBuilder') self._mox.StubOutWithMock(configdrive.ConfigDriveBuilder, 'make_drive') self._mox.StubOutWithMock(utils, 'execute') def tearDown(self): self._mox.UnsetStubs() super(HyperVAPIBaseTestCase, self).tearDown() class HyperVAPITestCase(HyperVAPIBaseTestCase): """Unit tests for Hyper-V driver calls.""" def test_get_available_resource(self): cpu_info = {'Architecture': 'fake', 'Name': 'fake', 'Manufacturer': 'ACME, Inc.', 'NumberOfCores': 2, 'NumberOfLogicalProcessors': 4} tot_mem_kb = 2000000L free_mem_kb = 1000000L tot_hdd_b = 4L * 1024 ** 3 free_hdd_b = 3L * 1024 ** 3 windows_version = '6.2.9200' hostutils.HostUtils.get_memory_info().AndReturn((tot_mem_kb, free_mem_kb)) m = hostutils.HostUtils.get_volume_info(mox.IsA(str)) m.AndReturn((tot_hdd_b, free_hdd_b)) hostutils.HostUtils.get_cpus_info().AndReturn([cpu_info]) m = hostutils.HostUtils.is_cpu_feature_present(mox.IsA(int)) m.MultipleTimes() m = hostutils.HostUtils.get_windows_version() m.AndReturn(windows_version) self._mox.ReplayAll() dic = self._conn.get_available_resource(None) self._mox.VerifyAll() self.assertEqual(dic['vcpus'], cpu_info['NumberOfLogicalProcessors']) self.assertEqual(dic['hypervisor_hostname'], platform.node()) self.assertEqual(dic['memory_mb'], tot_mem_kb / units.Ki) self.assertEqual(dic['memory_mb_used'], tot_mem_kb / units.Ki - free_mem_kb / units.Ki) self.assertEqual(dic['local_gb'], tot_hdd_b / units.Gi) self.assertEqual(dic['local_gb_used'], tot_hdd_b / units.Gi - free_hdd_b / units.Gi) self.assertEqual(dic['hypervisor_version'], windows_version.replace('.', '')) self.assertEqual(dic['supported_instances'], '[["i686", "hyperv", "hvm"], ["x86_64", "hyperv", "hvm"]]') def test_get_host_stats(self): tot_mem_kb = 2000000L free_mem_kb = 1000000L tot_hdd_b = 4L * 1024 ** 3 free_hdd_b = 3L * 1024 ** 3 hostutils.HostUtils.get_memory_info().AndReturn((tot_mem_kb, free_mem_kb)) m = hostutils.HostUtils.get_volume_info(mox.IsA(str)) m.AndReturn((tot_hdd_b, free_hdd_b)) self._mox.ReplayAll() dic = self._conn.get_host_stats(True) self._mox.VerifyAll() self.assertEqual(dic['disk_total'], tot_hdd_b / 1024 ** 3) self.assertEqual(dic['disk_available'], free_hdd_b / 1024 ** 3) self.assertEqual(dic['host_memory_total'], tot_mem_kb / 1024) self.assertEqual(dic['host_memory_free'], free_mem_kb / 1024) self.assertEqual(dic['disk_total'], dic['disk_used'] + dic['disk_available']) self.assertEqual(dic['host_memory_total'], dic['host_memory_overhead'] + dic['host_memory_free']) def test_list_instances(self): fake_instances = ['fake1', 'fake2'] vmutils.VMUtils.list_instances().AndReturn(fake_instances) self._mox.ReplayAll() instances = self._conn.list_instances() self._mox.VerifyAll() self.assertEqual(instances, fake_instances) def test_get_info(self): self._instance_data = self._get_instance_data() summary_info = {'NumberOfProcessors': 2, 'EnabledState': constants.HYPERV_VM_STATE_ENABLED, 'MemoryUsage': 1000, 'UpTime': 1} m = vmutils.VMUtils.vm_exists(mox.Func(self._check_instance_name)) m.AndReturn(True) func = mox.Func(self._check_instance_name) m = vmutils.VMUtils.get_vm_summary_info(func) m.AndReturn(summary_info) self._mox.ReplayAll() info = self._conn.get_info(self._instance_data) self._mox.VerifyAll() self.assertEqual(info["state"], power_state.RUNNING) def test_get_info_instance_not_found(self): # Tests that InstanceNotFound is raised if the instance isn't found # from the vmutils.vm_exists method. self._instance_data = self._get_instance_data() m = vmutils.VMUtils.vm_exists(mox.Func(self._check_instance_name)) m.AndReturn(False) self._mox.ReplayAll() self.assertRaises(exception.InstanceNotFound, self._conn.get_info, self._instance_data) self._mox.VerifyAll() def test_spawn_cow_image(self): self._test_spawn_instance(True) def test_spawn_cow_image_vhdx(self): self._test_spawn_instance(True, vhd_format=constants.DISK_FORMAT_VHDX) def test_spawn_no_cow_image(self): self._test_spawn_instance(False) def test_spawn_dynamic_memory(self): CONF.set_override('dynamic_memory_ratio', 2.0, 'hyperv') self._test_spawn_instance() def test_spawn_no_cow_image_vhdx(self): self._test_spawn_instance(False, vhd_format=constants.DISK_FORMAT_VHDX) def _setup_spawn_config_drive_mocks(self, use_cdrom): im = instance_metadata.InstanceMetadata(mox.IgnoreArg(), content=mox.IsA(list), extra_md=mox.IsA(dict)) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) m.AndReturn(self._test_instance_dir) cdb = self._mox.CreateMockAnything() m = configdrive.ConfigDriveBuilder(instance_md=mox.IgnoreArg()) m.AndReturn(cdb) # __enter__ and __exit__ are required by "with" cdb.__enter__().AndReturn(cdb) cdb.make_drive(mox.IsA(str)) cdb.__exit__(None, None, None).AndReturn(None) if not use_cdrom: utils.execute(CONF.hyperv.qemu_img_cmd, 'convert', '-f', 'raw', '-O', 'vpc', mox.IsA(str), mox.IsA(str), attempts=1) fake.PathUtils.remove(mox.IsA(str)) m = vmutils.VMUtils.attach_ide_drive(mox.IsA(str), mox.IsA(str), mox.IsA(int), mox.IsA(int), mox.IsA(str)) m.WithSideEffects(self._add_ide_disk) def _test_spawn_config_drive(self, use_cdrom, format_error=False): self.flags(force_config_drive=True) self.flags(config_drive_cdrom=use_cdrom, group='hyperv') self.flags(mkisofs_cmd='mkisofs.exe') if use_cdrom: expected_ide_disks = 1 expected_ide_dvds = 1 else: expected_ide_disks = 2 expected_ide_dvds = 0 if format_error: self.assertRaises(vmutils.UnsupportedConfigDriveFormatException, self._test_spawn_instance, with_exception=True, config_drive=True, use_cdrom=use_cdrom) else: self._test_spawn_instance(expected_ide_disks=expected_ide_disks, expected_ide_dvds=expected_ide_dvds, config_drive=True, use_cdrom=use_cdrom) def test_spawn_config_drive(self): self._test_spawn_config_drive(False) def test_spawn_config_drive_format_error(self): CONF.set_override('config_drive_format', 'wrong_format') self._test_spawn_config_drive(True, True) def test_spawn_config_drive_cdrom(self): self._test_spawn_config_drive(True) def test_spawn_no_config_drive(self): self.flags(force_config_drive=False) expected_ide_disks = 1 expected_ide_dvds = 0 self._test_spawn_instance(expected_ide_disks=expected_ide_disks, expected_ide_dvds=expected_ide_dvds) def _test_spawn_nova_net_vif(self, with_port): self.flags(network_api_class='nova.network.api.API') # Reinstantiate driver, as the VIF plugin is loaded during __init__ self._conn = driver_hyperv.HyperVDriver(None) def setup_vif_mocks(): fake_vswitch_path = 'fake vswitch path' fake_vswitch_port = 'fake port' m = networkutils.NetworkUtils.get_external_vswitch( CONF.hyperv.vswitch_name) m.AndReturn(fake_vswitch_path) m = networkutils.NetworkUtils.vswitch_port_needed() m.AndReturn(with_port) if with_port: m = networkutils.NetworkUtils.create_vswitch_port( fake_vswitch_path, mox.IsA(str)) m.AndReturn(fake_vswitch_port) vswitch_conn_data = fake_vswitch_port else: vswitch_conn_data = fake_vswitch_path vmutils.VMUtils.set_nic_connection(mox.IsA(str), mox.IsA(str), vswitch_conn_data) self._test_spawn_instance(setup_vif_mocks_func=setup_vif_mocks) def test_spawn_nova_net_vif_with_port(self): self._test_spawn_nova_net_vif(True) def test_spawn_nova_net_vif_without_port(self): self._test_spawn_nova_net_vif(False) def test_spawn_nova_net_vif_no_vswitch_exception(self): self.flags(network_api_class='nova.network.api.API') # Reinstantiate driver, as the VIF plugin is loaded during __init__ self._conn = driver_hyperv.HyperVDriver(None) def setup_vif_mocks(): m = networkutils.NetworkUtils.get_external_vswitch( CONF.hyperv.vswitch_name) m.AndRaise(vmutils.HyperVException(_('fake vswitch not found'))) self.assertRaises(vmutils.HyperVException, self._test_spawn_instance, setup_vif_mocks_func=setup_vif_mocks, with_exception=True) def test_spawn_with_metrics_collection(self): self.flags(enable_instance_metrics_collection=True, group='hyperv') self._test_spawn_instance(False) def test_spawn_with_ephemeral_storage(self): self._test_spawn_instance(True, expected_ide_disks=2, ephemeral_storage=True) def _check_instance_name(self, vm_name): return vm_name == self._instance_data['name'] def _test_vm_state_change(self, action, from_state, to_state): self._instance_data = self._get_instance_data() vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), to_state) self._mox.ReplayAll() action(self._instance_data) self._mox.VerifyAll() def test_pause(self): self._test_vm_state_change(self._conn.pause, None, constants.HYPERV_VM_STATE_PAUSED) def test_pause_already_paused(self): self._test_vm_state_change(self._conn.pause, constants.HYPERV_VM_STATE_PAUSED, constants.HYPERV_VM_STATE_PAUSED) def test_unpause(self): self._test_vm_state_change(self._conn.unpause, constants.HYPERV_VM_STATE_PAUSED, constants.HYPERV_VM_STATE_ENABLED) def test_unpause_already_running(self): self._test_vm_state_change(self._conn.unpause, None, constants.HYPERV_VM_STATE_ENABLED) def test_suspend(self): self._test_vm_state_change(self._conn.suspend, None, constants.HYPERV_VM_STATE_SUSPENDED) def test_suspend_already_suspended(self): self._test_vm_state_change(self._conn.suspend, constants.HYPERV_VM_STATE_SUSPENDED, constants.HYPERV_VM_STATE_SUSPENDED) def test_resume(self): self._test_vm_state_change(lambda i: self._conn.resume(self._context, i, None), constants.HYPERV_VM_STATE_SUSPENDED, constants.HYPERV_VM_STATE_ENABLED) def test_resume_already_running(self): self._test_vm_state_change(lambda i: self._conn.resume(self._context, i, None), None, constants.HYPERV_VM_STATE_ENABLED) def test_power_off(self): self._test_vm_state_change(self._conn.power_off, None, constants.HYPERV_VM_STATE_DISABLED) def test_power_off_already_powered_off(self): self._test_vm_state_change(self._conn.power_off, constants.HYPERV_VM_STATE_DISABLED, constants.HYPERV_VM_STATE_DISABLED) def test_power_on(self): self._instance_data = self._get_instance_data() network_info = fake_network.fake_get_instance_nw_info(self.stubs) vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), constants.HYPERV_VM_STATE_ENABLED) self._mox.ReplayAll() self._conn.power_on(self._context, self._instance_data, network_info) self._mox.VerifyAll() def test_power_on_already_running(self): self._instance_data = self._get_instance_data() network_info = fake_network.fake_get_instance_nw_info(self.stubs) vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), constants.HYPERV_VM_STATE_ENABLED) self._mox.ReplayAll() self._conn.power_on(self._context, self._instance_data, network_info) self._mox.VerifyAll() def test_reboot(self): network_info = fake_network.fake_get_instance_nw_info(self.stubs) self._instance_data = self._get_instance_data() vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), constants.HYPERV_VM_STATE_REBOOT) self._mox.ReplayAll() self._conn.reboot(self._context, self._instance_data, network_info, None) self._mox.VerifyAll() def _setup_destroy_mocks(self, destroy_disks=True): m = vmutils.VMUtils.vm_exists(mox.Func(self._check_instance_name)) m.AndReturn(True) func = mox.Func(self._check_instance_name) vmutils.VMUtils.set_vm_state(func, constants.HYPERV_VM_STATE_DISABLED) m = vmutils.VMUtils.get_vm_storage_paths(func) m.AndReturn(([], [])) vmutils.VMUtils.destroy_vm(func) if destroy_disks: m = fake.PathUtils.get_instance_dir(mox.IsA(str), create_dir=False, remove_dir=True) m.AndReturn(self._test_instance_dir) def test_destroy(self): self._instance_data = self._get_instance_data() self._setup_destroy_mocks() self._mox.ReplayAll() self._conn.destroy(self._context, self._instance_data, None) self._mox.VerifyAll() def test_live_migration_unsupported_os(self): self._check_min_windows_version_satisfied = False self._conn = driver_hyperv.HyperVDriver(None) self._test_live_migration(unsupported_os=True) def test_live_migration_without_volumes(self): self._test_live_migration() def test_live_migration_with_volumes(self): self._test_live_migration(with_volumes=True) def test_live_migration_with_target_failure(self): self._test_live_migration(test_failure=True) def _test_live_migration(self, test_failure=False, with_volumes=False, unsupported_os=False): dest_server = 'fake_server' instance_data = self._get_instance_data() instance_name = instance_data['name'] fake_post_method = self._mox.CreateMockAnything() if not test_failure and not unsupported_os: fake_post_method(self._context, instance_data, dest_server, False) fake_recover_method = self._mox.CreateMockAnything() if test_failure: fake_recover_method(self._context, instance_data, dest_server, False) fake_ide_controller_path = 'fakeide' fake_scsi_controller_path = 'fakescsi' if with_volumes: fake_scsi_disk_path = 'fake_scsi_disk_path' fake_target_iqn = 'fake_target_iqn' fake_target_lun = 1 fake_scsi_paths = {0: fake_scsi_disk_path} else: fake_scsi_paths = {} if not unsupported_os: m = livemigrationutils.LiveMigrationUtils.live_migrate_vm( instance_data['name'], dest_server) if test_failure: m.AndRaise(vmutils.HyperVException('Simulated failure')) if with_volumes: m.AndReturn([(fake_target_iqn, fake_target_lun)]) volumeutils.VolumeUtils.logout_storage_target(fake_target_iqn) else: m.AndReturn([]) self._mox.ReplayAll() try: hyperv_exception_raised = False unsupported_os_exception_raised = False self._conn.live_migration(self._context, instance_data, dest_server, fake_post_method, fake_recover_method) except vmutils.HyperVException: hyperv_exception_raised = True except NotImplementedError: unsupported_os_exception_raised = True self.assertTrue(not test_failure ^ hyperv_exception_raised) self.assertTrue(not unsupported_os ^ unsupported_os_exception_raised) self._mox.VerifyAll() def test_pre_live_migration_cow_image(self): self._test_pre_live_migration(True, False) def test_pre_live_migration_no_cow_image(self): self._test_pre_live_migration(False, False) def test_pre_live_migration_with_volumes(self): self._test_pre_live_migration(False, True) def _test_pre_live_migration(self, cow, with_volumes): self.flags(use_cow_images=cow) instance_data = self._get_instance_data() instance = db.instance_create(self._context, instance_data) instance['system_metadata'] = {} network_info = fake_network.fake_get_instance_nw_info(self.stubs) m = livemigrationutils.LiveMigrationUtils.check_live_migration_config() m.AndReturn(True) if cow: m = basevolumeutils.BaseVolumeUtils.volume_in_mapping(mox.IsA(str), None) m.AndReturn(False) self._setup_get_cached_image_mocks(cow) if with_volumes: block_device_info = db_fakes.get_fake_block_device_info( self._volume_target_portal, self._volume_id) mapping = driver.block_device_info_get_mapping(block_device_info) data = mapping[0]['connection_info']['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] target_portal = data['target_portal'] fake_mounted_disk = "fake_mounted_disk" fake_device_number = 0 self._mock_login_storage_target(target_iqn, target_lun, target_portal, fake_mounted_disk, fake_device_number) else: block_device_info = None self._mox.ReplayAll() self._conn.pre_live_migration(self._context, instance, block_device_info, None, network_info) self._mox.VerifyAll() if cow: self.assertIsNotNone(self._fetched_image) else: self.assertIsNone(self._fetched_image) def test_snapshot_with_update_failure(self): (snapshot_name, func_call_matcher) = self._setup_snapshot_mocks() self._update_image_raise_exception = True self._mox.ReplayAll() self.assertRaises(vmutils.HyperVException, self._conn.snapshot, self._context, self._instance_data, snapshot_name, func_call_matcher.call) self._mox.VerifyAll() # Assert states changed in correct order self.assertIsNone(func_call_matcher.match()) def _setup_snapshot_mocks(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}} ] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) snapshot_name = 'test_snapshot_' + str(uuid.uuid4()) fake_hv_snapshot_path = 'fake_snapshot_path' fake_parent_vhd_path = 'C:\\fake_vhd_path\\parent.vhd' self._instance_data = self._get_instance_data() func = mox.Func(self._check_instance_name) m = vmutils.VMUtils.take_vm_snapshot(func) m.AndReturn(fake_hv_snapshot_path) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) m.AndReturn(self._test_instance_dir) m = vhdutils.VHDUtils.get_vhd_parent_path(mox.IsA(str)) m.AndReturn(fake_parent_vhd_path) self._fake_dest_disk_path = None def copy_dest_disk_path(src, dest): self._fake_dest_disk_path = dest m = fake.PathUtils.copyfile(mox.IsA(str), mox.IsA(str)) m.WithSideEffects(copy_dest_disk_path) self._fake_dest_base_disk_path = None def copy_dest_base_disk_path(src, dest): self._fake_dest_base_disk_path = dest m = fake.PathUtils.copyfile(fake_parent_vhd_path, mox.IsA(str)) m.WithSideEffects(copy_dest_base_disk_path) def check_dest_disk_path(path): return path == self._fake_dest_disk_path def check_dest_base_disk_path(path): return path == self._fake_dest_base_disk_path func1 = mox.Func(check_dest_disk_path) func2 = mox.Func(check_dest_base_disk_path) # Make sure that the hyper-v base and differential VHDs are merged vhdutils.VHDUtils.reconnect_parent_vhd(func1, func2) vhdutils.VHDUtils.merge_vhd(func1, func2) def check_snapshot_path(snapshot_path): return snapshot_path == fake_hv_snapshot_path # Make sure that the Hyper-V snapshot is removed func = mox.Func(check_snapshot_path) vmutils.VMUtils.remove_vm_snapshot(func) fake.PathUtils.rmtree(mox.IsA(str)) m = fake.PathUtils.open(func2, 'rb') m.AndReturn(io.BytesIO(b'fake content')) return (snapshot_name, func_call_matcher) def test_snapshot(self): (snapshot_name, func_call_matcher) = self._setup_snapshot_mocks() self._mox.ReplayAll() self._conn.snapshot(self._context, self._instance_data, snapshot_name, func_call_matcher.call) self._mox.VerifyAll() self.assertTrue(self._image_metadata and "disk_format" in self._image_metadata and self._image_metadata["disk_format"] == "vhd") # Assert states changed in correct order self.assertIsNone(func_call_matcher.match()) def _get_instance_data(self): instance_name = 'openstack_unit_test_vm_' + str(uuid.uuid4()) return db_fakes.get_fake_instance_data(instance_name, self._project_id, self._user_id) def _spawn_instance(self, cow, block_device_info=None, ephemeral_storage=False): self.flags(use_cow_images=cow) self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) instance['system_metadata'] = {} if ephemeral_storage: instance['ephemeral_gb'] = 1 image = db_fakes.get_fake_image_data(self._project_id, self._user_id) network_info = fake_network.fake_get_instance_nw_info(self.stubs) self._conn.spawn(self._context, instance, image, injected_files=[], admin_password=None, network_info=network_info, block_device_info=block_device_info) def _add_ide_disk(self, vm_name, path, ctrller_addr, drive_addr, drive_type): if drive_type == constants.IDE_DISK: self._instance_ide_disks.append(path) elif drive_type == constants.IDE_DVD: self._instance_ide_dvds.append(path) def _add_volume_disk(self, vm_name, controller_path, address, mounted_disk_path): self._instance_volume_disks.append(mounted_disk_path) def _check_img_path(self, image_path): return image_path == self._fetched_image def _setup_create_instance_mocks(self, setup_vif_mocks_func=None, boot_from_volume=False, block_device_info=None, admin_permissions=True, ephemeral_storage=False): vmutils.VMUtils.create_vm(mox.Func(self._check_vm_name), mox.IsA(int), mox.IsA(int), mox.IsA(bool), CONF.hyperv.dynamic_memory_ratio) if not boot_from_volume: m = vmutils.VMUtils.attach_ide_drive(mox.Func(self._check_vm_name), mox.IsA(str), mox.IsA(int), mox.IsA(int), mox.IsA(str)) m.WithSideEffects(self._add_ide_disk).InAnyOrder() if ephemeral_storage: m = vmutils.VMUtils.attach_ide_drive(mox.Func(self._check_vm_name), mox.IsA(str), mox.IsA(int), mox.IsA(int), mox.IsA(str)) m.WithSideEffects(self._add_ide_disk).InAnyOrder() func = mox.Func(self._check_vm_name) m = vmutils.VMUtils.create_scsi_controller(func) m.InAnyOrder() if boot_from_volume: mapping = driver.block_device_info_get_mapping(block_device_info) data = mapping[0]['connection_info']['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] target_portal = data['target_portal'] self._mock_attach_volume(mox.Func(self._check_vm_name), target_iqn, target_lun, target_portal, True) vmutils.VMUtils.create_nic(mox.Func(self._check_vm_name), mox.IsA(str), mox.IsA(unicode)).InAnyOrder() if setup_vif_mocks_func: setup_vif_mocks_func() if CONF.hyperv.enable_instance_metrics_collection: vmutils.VMUtils.enable_vm_metrics_collection( mox.Func(self._check_vm_name)) def _set_vm_name(self, vm_name): self._test_vm_name = vm_name def _check_vm_name(self, vm_name): return vm_name == self._test_vm_name def _setup_check_admin_permissions_mocks(self, admin_permissions=True): self._mox.StubOutWithMock(vmutils.VMUtils, 'check_admin_permissions') m = vmutils.VMUtils.check_admin_permissions() if admin_permissions: m.AndReturn(None) else: m.AndRaise(vmutils.HyperVAuthorizationException(_( 'Simulated failure'))) def _setup_get_cached_image_mocks(self, cow=True, vhd_format=constants.DISK_FORMAT_VHD): m = vhdutils.VHDUtils.get_vhd_format( mox.Func(self._check_img_path)) m.AndReturn(vhd_format) def check_img_path_with_ext(image_path): return image_path == self._fetched_image + '.' + vhd_format.lower() fake.PathUtils.rename(mox.Func(self._check_img_path), mox.Func(check_img_path_with_ext)) if cow and vhd_format == constants.DISK_FORMAT_VHD: m = vhdutils.VHDUtils.get_vhd_info( mox.Func(check_img_path_with_ext)) m.AndReturn({'MaxInternalSize': 1024}) fake.PathUtils.copyfile(mox.IsA(str), mox.IsA(str)) m = vhdutils.VHDUtils.get_internal_vhd_size_by_file_size( mox.IsA(str), mox.IsA(object)) m.AndReturn(1025) vhdutils.VHDUtils.resize_vhd(mox.IsA(str), mox.IsA(object), is_file_max_size=False) def _setup_spawn_instance_mocks(self, cow, setup_vif_mocks_func=None, with_exception=False, block_device_info=None, boot_from_volume=False, config_drive=False, use_cdrom=False, admin_permissions=True, vhd_format=constants.DISK_FORMAT_VHD, ephemeral_storage=False): m = vmutils.VMUtils.vm_exists(mox.IsA(str)) m.WithSideEffects(self._set_vm_name).AndReturn(False) m = fake.PathUtils.get_instance_dir(mox.IsA(str), create_dir=False, remove_dir=True) m.AndReturn(self._test_instance_dir) m = basevolumeutils.BaseVolumeUtils.volume_in_mapping( mox.IsA(str), block_device_info) m.AndReturn(boot_from_volume) if not boot_from_volume: m = fake.PathUtils.get_instance_dir(mox.Func(self._check_vm_name)) m.AndReturn(self._test_instance_dir) self._setup_get_cached_image_mocks(cow, vhd_format) if cow: vhdutils.VHDUtils.create_differencing_vhd(mox.IsA(str), mox.IsA(str)) else: fake.PathUtils.copyfile(mox.IsA(str), mox.IsA(str)) m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(str)) m.AndReturn({'MaxInternalSize': 1024, 'FileSize': 1024, 'Type': 2}) m = vhdutils.VHDUtils.get_internal_vhd_size_by_file_size( mox.IsA(str), mox.IsA(object)) m.AndReturn(1025) vhdutils.VHDUtils.resize_vhd(mox.IsA(str), mox.IsA(object), is_file_max_size=False) self._setup_check_admin_permissions_mocks( admin_permissions=admin_permissions) if ephemeral_storage: m = fake.PathUtils.get_instance_dir(mox.Func(self._check_vm_name)) m.AndReturn(self._test_instance_dir) vhdutils.VHDUtils.create_dynamic_vhd(mox.IsA(str), mox.IsA(int), mox.IsA(str)) self._setup_create_instance_mocks(setup_vif_mocks_func, boot_from_volume, block_device_info, ephemeral_storage=ephemeral_storage) if config_drive and not with_exception: self._setup_spawn_config_drive_mocks(use_cdrom) # TODO(alexpilotti) Based on where the exception is thrown # some of the above mock calls need to be skipped if with_exception: self._setup_destroy_mocks() else: vmutils.VMUtils.set_vm_state(mox.Func(self._check_vm_name), constants.HYPERV_VM_STATE_ENABLED) def _test_spawn_instance(self, cow=True, expected_ide_disks=1, expected_ide_dvds=0, setup_vif_mocks_func=None, with_exception=False, config_drive=False, use_cdrom=False, admin_permissions=True, vhd_format=constants.DISK_FORMAT_VHD, ephemeral_storage=False): self._setup_spawn_instance_mocks(cow, setup_vif_mocks_func, with_exception, config_drive=config_drive, use_cdrom=use_cdrom, admin_permissions=admin_permissions, vhd_format=vhd_format, ephemeral_storage=ephemeral_storage) self._mox.ReplayAll() self._spawn_instance(cow, ephemeral_storage=ephemeral_storage) self._mox.VerifyAll() self.assertEqual(len(self._instance_ide_disks), expected_ide_disks) self.assertEqual(len(self._instance_ide_dvds), expected_ide_dvds) vhd_path = os.path.join(self._test_instance_dir, 'root.' + vhd_format.lower()) self.assertEqual(vhd_path, self._instance_ide_disks[0]) def _mock_get_mounted_disk_from_lun(self, target_iqn, target_lun, fake_mounted_disk, fake_device_number): m = volumeutils.VolumeUtils.get_device_number_for_target(target_iqn, target_lun) m.AndReturn(fake_device_number) m = vmutils.VMUtils.get_mounted_disk_by_drive_number( fake_device_number) m.AndReturn(fake_mounted_disk) def _mock_login_storage_target(self, target_iqn, target_lun, target_portal, fake_mounted_disk, fake_device_number): m = volumeutils.VolumeUtils.get_device_number_for_target(target_iqn, target_lun) m.AndReturn(fake_device_number) volumeutils.VolumeUtils.login_storage_target(target_lun, target_iqn, target_portal) self._mock_get_mounted_disk_from_lun(target_iqn, target_lun, fake_mounted_disk, fake_device_number) def _mock_attach_volume(self, instance_name, target_iqn, target_lun, target_portal=None, boot_from_volume=False): fake_mounted_disk = "fake_mounted_disk" fake_device_number = 0 fake_controller_path = 'fake_scsi_controller_path' self._mock_login_storage_target(target_iqn, target_lun, target_portal, fake_mounted_disk, fake_device_number) self._mock_get_mounted_disk_from_lun(target_iqn, target_lun, fake_mounted_disk, fake_device_number) if boot_from_volume: m = vmutils.VMUtils.get_vm_ide_controller(instance_name, 0) m.AndReturn(fake_controller_path) fake_free_slot = 0 else: m = vmutils.VMUtils.get_vm_scsi_controller(instance_name) m.AndReturn(fake_controller_path) fake_free_slot = 1 m = vmutils.VMUtils.get_attached_disks_count(fake_controller_path) m.AndReturn(fake_free_slot) m = vmutils.VMUtils.attach_volume_to_controller(instance_name, fake_controller_path, fake_free_slot, fake_mounted_disk) m.WithSideEffects(self._add_volume_disk) def _test_util_class_version(self, v1_class, v2_class, get_instance_action, is_hyperv_2012, force_v1_flag, force_utils_v1): self._check_min_windows_version_satisfied = is_hyperv_2012 CONF.set_override(force_v1_flag, force_v1_flag, 'hyperv') self._conn = driver_hyperv.HyperVDriver(None) instance = get_instance_action() is_v1 = isinstance(instance, v1_class) # v2_class can inherit from v1_class is_v2 = isinstance(instance, v2_class) self.assertTrue((is_hyperv_2012 and not force_v1_flag) ^ (is_v1 and not is_v2)) def test_volumeutils_version_hyperv_2012(self): self._test_util_class_version(volumeutils.VolumeUtils, volumeutilsv2.VolumeUtilsV2, lambda: utilsfactory.get_volumeutils(), True, 'force_volumeutils_v1', False) def test_volumeutils_version_hyperv_2012_force_v1(self): self._test_util_class_version(volumeutils.VolumeUtils, volumeutilsv2.VolumeUtilsV2, lambda: utilsfactory.get_volumeutils(), True, 'force_volumeutils_v1', True) def test_volumeutils_version_hyperv_2008R2(self): self._test_util_class_version(volumeutils.VolumeUtils, volumeutilsv2.VolumeUtilsV2, lambda: utilsfactory.get_volumeutils(), False, 'force_volumeutils_v1', False) def test_vmutils_version_hyperv_2012(self): self._test_util_class_version(vmutils.VMUtils, vmutilsv2.VMUtilsV2, lambda: utilsfactory.get_vmutils(), True, 'force_hyperv_utils_v1', False) def test_vmutils_version_hyperv_2012_force_v1(self): self._test_util_class_version(vmutils.VMUtils, vmutilsv2.VMUtilsV2, lambda: utilsfactory.get_vmutils(), True, 'force_hyperv_utils_v1', True) def test_vmutils_version_hyperv_2008R2(self): self._test_util_class_version(vmutils.VMUtils, vmutilsv2.VMUtilsV2, lambda: utilsfactory.get_vmutils(), False, 'force_hyperv_utils_v1', False) def test_vhdutils_version_hyperv_2012(self): self._test_util_class_version(vhdutils.VHDUtils, vhdutilsv2.VHDUtilsV2, lambda: utilsfactory.get_vhdutils(), True, 'force_hyperv_utils_v1', False) def test_vhdutils_version_hyperv_2012_force_v1(self): self._test_util_class_version(vhdutils.VHDUtils, vhdutilsv2.VHDUtilsV2, lambda: utilsfactory.get_vhdutils(), True, 'force_hyperv_utils_v1', True) def test_vhdutils_version_hyperv_2008R2(self): self._test_util_class_version(vhdutils.VHDUtils, vhdutilsv2.VHDUtilsV2, lambda: utilsfactory.get_vhdutils(), False, 'force_hyperv_utils_v1', False) def test_networkutils_version_hyperv_2012(self): self._test_util_class_version(networkutils.NetworkUtils, networkutilsv2.NetworkUtilsV2, lambda: utilsfactory.get_networkutils(), True, 'force_hyperv_utils_v1', False) def test_networkutils_version_hyperv_2012_force_v1(self): self._test_util_class_version(networkutils.NetworkUtils, networkutilsv2.NetworkUtilsV2, lambda: utilsfactory.get_networkutils(), True, 'force_hyperv_utils_v1', True) def test_networkutils_version_hyperv_2008R2(self): self._test_util_class_version(networkutils.NetworkUtils, networkutilsv2.NetworkUtilsV2, lambda: utilsfactory.get_networkutils(), False, 'force_hyperv_utils_v1', False) def test_attach_volume(self): instance_data = self._get_instance_data() connection_info = db_fakes.get_fake_volume_info_data( self._volume_target_portal, self._volume_id) data = connection_info['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] target_portal = data['target_portal'] mount_point = '/dev/sdc' self._mock_attach_volume(instance_data['name'], target_iqn, target_lun, target_portal) self._mox.ReplayAll() self._conn.attach_volume(None, connection_info, instance_data, mount_point) self._mox.VerifyAll() self.assertEqual(len(self._instance_volume_disks), 1) def _mock_get_mounted_disk_from_lun_error(self, target_iqn, target_lun, fake_mounted_disk, fake_device_number): m = volumeutils.VolumeUtils.get_device_number_for_target(target_iqn, target_lun) m.AndRaise(vmutils.HyperVException('Simulated failure')) def _mock_attach_volume_target_logout(self, instance_name, target_iqn, target_lun, target_portal=None, boot_from_volume=False): fake_mounted_disk = "fake_mounted disk" fake_device_number = 0 fake_controller_path = "fake_scsi_controller_path" self._mock_login_storage_target(target_iqn, target_lun, target_portal, fake_mounted_disk, fake_device_number) self._mock_get_mounted_disk_from_lun_error(target_iqn, target_lun, fake_mounted_disk, fake_device_number) m = volumeutils.VolumeUtils.logout_storage_target(target_iqn) def test_attach_volume_logout(self): instance_data = self._get_instance_data() connection_info = db_fakes.get_fake_volume_info_data( self._volume_target_portal, self._volume_id) data = connection_info['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] target_portal = data['target_portal'] mount_point = '/dev/sdc' self._mock_attach_volume_target_logout(instance_data['name'], target_iqn, target_lun, target_portal) self._mox.ReplayAll() self.assertRaises(vmutils.HyperVException, self._conn.attach_volume, None, connection_info, instance_data, mount_point) self._mox.VerifyAll() def test_attach_volume_connection_error(self): instance_data = self._get_instance_data() connection_info = db_fakes.get_fake_volume_info_data( self._volume_target_portal, self._volume_id) mount_point = '/dev/sdc' def fake_login_storage_target(connection_info): raise vmutils.HyperVException('Fake connection exception') self.stubs.Set(self._conn._volumeops, '_login_storage_target', fake_login_storage_target) self.assertRaises(vmutils.HyperVException, self._conn.attach_volume, None, connection_info, instance_data, mount_point) def _mock_detach_volume(self, target_iqn, target_lun): mount_point = '/dev/sdc' fake_mounted_disk = "fake_mounted_disk" fake_device_number = 0 m = volumeutils.VolumeUtils.get_device_number_for_target(target_iqn, target_lun) m.AndReturn(fake_device_number) m = vmutils.VMUtils.get_mounted_disk_by_drive_number( fake_device_number) m.AndReturn(fake_mounted_disk) vmutils.VMUtils.detach_vm_disk(mox.IsA(str), fake_mounted_disk) volumeutils.VolumeUtils.logout_storage_target(mox.IsA(str)) def test_detach_volume(self): instance_data = self._get_instance_data() instance_name = instance_data['name'] connection_info = db_fakes.get_fake_volume_info_data( self._volume_target_portal, self._volume_id) data = connection_info['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] target_portal = data['target_portal'] mount_point = '/dev/sdc' self._mock_detach_volume(target_iqn, target_lun) self._mox.ReplayAll() self._conn.detach_volume(connection_info, instance_data, mount_point) self._mox.VerifyAll() def test_boot_from_volume(self): block_device_info = db_fakes.get_fake_block_device_info( self._volume_target_portal, self._volume_id) self._setup_spawn_instance_mocks(cow=False, block_device_info=block_device_info, boot_from_volume=True) self._mox.ReplayAll() self._spawn_instance(False, block_device_info) self._mox.VerifyAll() self.assertEqual(len(self._instance_volume_disks), 1) def test_get_volume_connector(self): self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) fake_my_ip = "fake_ip" fake_host = "fake_host" fake_initiator = "fake_initiator" self.flags(my_ip=fake_my_ip) self.flags(host=fake_host) m = volumeutils.VolumeUtils.get_iscsi_initiator() m.AndReturn(fake_initiator) self._mox.ReplayAll() data = self._conn.get_volume_connector(instance) self._mox.VerifyAll() self.assertEqual(fake_my_ip, data.get('ip')) self.assertEqual(fake_host, data.get('host')) self.assertEqual(fake_initiator, data.get('initiator')) def _setup_test_migrate_disk_and_power_off_mocks(self, same_host=False, copy_exception=False, size_exception=False): self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) network_info = fake_network.fake_get_instance_nw_info(self.stubs) instance['root_gb'] = 10 fake_local_ip = '10.0.0.1' if same_host: fake_dest_ip = fake_local_ip else: fake_dest_ip = '10.0.0.2' if size_exception: flavor = 'm1.tiny' else: flavor = 'm1.small' flavor = db.flavor_get_by_name(self._context, flavor) if not size_exception: fake_root_vhd_path = 'C:\\FakePath\\root.vhd' fake_revert_path = os.path.join(self._test_instance_dir, '_revert') func = mox.Func(self._check_instance_name) vmutils.VMUtils.set_vm_state(func, constants.HYPERV_VM_STATE_DISABLED) m = vmutils.VMUtils.get_vm_storage_paths(func) m.AndReturn(([fake_root_vhd_path], [])) m = hostutils.HostUtils.get_local_ips() m.AndReturn([fake_local_ip]) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) m.AndReturn(self._test_instance_dir) m = pathutils.PathUtils.get_instance_migr_revert_dir( instance['name'], remove_dir=True) m.AndReturn(fake_revert_path) if same_host: fake.PathUtils.makedirs(mox.IsA(str)) m = fake.PathUtils.copy(fake_root_vhd_path, mox.IsA(str)) if copy_exception: m.AndRaise(shutil.Error('Simulated copy error')) m = fake.PathUtils.get_instance_dir(mox.IsA(str), mox.IsA(str), remove_dir=True) m.AndReturn(self._test_instance_dir) else: fake.PathUtils.rename(mox.IsA(str), mox.IsA(str)) destroy_disks = True if same_host: fake.PathUtils.rename(mox.IsA(str), mox.IsA(str)) destroy_disks = False self._setup_destroy_mocks(False) if destroy_disks: m = fake.PathUtils.get_instance_dir(mox.IsA(str), mox.IsA(str), remove_dir=True) m.AndReturn(self._test_instance_dir) return (instance, fake_dest_ip, network_info, flavor) def test_migrate_disk_and_power_off(self): (instance, fake_dest_ip, network_info, flavor) = self._setup_test_migrate_disk_and_power_off_mocks() self._mox.ReplayAll() self._conn.migrate_disk_and_power_off(self._context, instance, fake_dest_ip, flavor, network_info) self._mox.VerifyAll() def test_migrate_disk_and_power_off_same_host(self): args = self._setup_test_migrate_disk_and_power_off_mocks( same_host=True) (instance, fake_dest_ip, network_info, flavor) = args self._mox.ReplayAll() self._conn.migrate_disk_and_power_off(self._context, instance, fake_dest_ip, flavor, network_info) self._mox.VerifyAll() def test_migrate_disk_and_power_off_copy_exception(self): args = self._setup_test_migrate_disk_and_power_off_mocks( copy_exception=True) (instance, fake_dest_ip, network_info, flavor) = args self._mox.ReplayAll() self.assertRaises(shutil.Error, self._conn.migrate_disk_and_power_off, self._context, instance, fake_dest_ip, flavor, network_info) self._mox.VerifyAll() def test_migrate_disk_and_power_off_smaller_root_vhd_size_exception(self): args = self._setup_test_migrate_disk_and_power_off_mocks( size_exception=True) (instance, fake_dest_ip, network_info, flavor) = args self._mox.ReplayAll() self.assertRaises(vmutils.VHDResizeException, self._conn.migrate_disk_and_power_off, self._context, instance, fake_dest_ip, flavor, network_info) self._mox.VerifyAll() def _test_finish_migration(self, power_on, ephemeral_storage=False): self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) instance['system_metadata'] = {} network_info = fake_network.fake_get_instance_nw_info(self.stubs) m = basevolumeutils.BaseVolumeUtils.volume_in_mapping(mox.IsA(str), None) m.AndReturn(False) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) m.AndReturn(self._test_instance_dir) self._mox.StubOutWithMock(fake.PathUtils, 'exists') m = fake.PathUtils.exists(mox.IsA(str)) m.AndReturn(True) fake_parent_vhd_path = (os.path.join('FakeParentPath', '%s.vhd' % instance["image_ref"])) m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(str)) m.AndReturn({'ParentPath': fake_parent_vhd_path, 'MaxInternalSize': 1}) m = vhdutils.VHDUtils.get_internal_vhd_size_by_file_size( mox.IsA(str), mox.IsA(object)) m.AndReturn(1025) vhdutils.VHDUtils.reconnect_parent_vhd(mox.IsA(str), mox.IsA(str)) m = vhdutils.VHDUtils.get_vhd_info(mox.IsA(str)) m.AndReturn({'MaxInternalSize': 1024}) m = fake.PathUtils.exists(mox.IsA(str)) m.AndReturn(True) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) if ephemeral_storage: return m.AndReturn(self._test_instance_dir) else: m.AndReturn(None) self._set_vm_name(instance['name']) self._setup_create_instance_mocks(None, False, ephemeral_storage=ephemeral_storage) if power_on: vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), constants.HYPERV_VM_STATE_ENABLED) self._mox.ReplayAll() self._conn.finish_migration(self._context, None, instance, "", network_info, None, False, None, power_on) self._mox.VerifyAll() def test_finish_migration_power_on(self): self._test_finish_migration(True) def test_finish_migration_power_off(self): self._test_finish_migration(False) def test_finish_migration_with_ephemeral_storage(self): self._test_finish_migration(False, ephemeral_storage=True) def test_confirm_migration(self): self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) network_info = fake_network.fake_get_instance_nw_info(self.stubs) pathutils.PathUtils.get_instance_migr_revert_dir(instance['name'], remove_dir=True) self._mox.ReplayAll() self._conn.confirm_migration(None, instance, network_info) self._mox.VerifyAll() def _test_finish_revert_migration(self, power_on, ephemeral_storage=False): self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) network_info = fake_network.fake_get_instance_nw_info(self.stubs) fake_revert_path = ('C:\\FakeInstancesPath\\%s\\_revert' % instance['name']) m = basevolumeutils.BaseVolumeUtils.volume_in_mapping(mox.IsA(str), None) m.AndReturn(False) m = fake.PathUtils.get_instance_dir(mox.IsA(str), create_dir=False, remove_dir=True) m.AndReturn(self._test_instance_dir) m = pathutils.PathUtils.get_instance_migr_revert_dir(instance['name']) m.AndReturn(fake_revert_path) fake.PathUtils.rename(fake_revert_path, mox.IsA(str)) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) m.AndReturn(self._test_instance_dir) m = fake.PathUtils.get_instance_dir(mox.IsA(str)) if ephemeral_storage: m.AndReturn(self._test_instance_dir) else: m.AndReturn(None) self._set_vm_name(instance['name']) self._setup_create_instance_mocks(None, False, ephemeral_storage=ephemeral_storage) if power_on: vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), constants.HYPERV_VM_STATE_ENABLED) self._mox.ReplayAll() self._conn.finish_revert_migration(self._context, instance, network_info, None, power_on) self._mox.VerifyAll() def test_finish_revert_migration_power_on(self): self._test_finish_revert_migration(True) def test_finish_revert_migration_power_off(self): self._test_finish_revert_migration(False) def test_spawn_no_admin_permissions(self): self.assertRaises(vmutils.HyperVAuthorizationException, self._test_spawn_instance, with_exception=True, admin_permissions=False) def test_finish_revert_migration_with_ephemeral_storage(self): self._test_finish_revert_migration(False, ephemeral_storage=True) def test_plug_vifs(self): # Check to make sure the method raises NotImplementedError. self.assertRaises(NotImplementedError, self._conn.plug_vifs, instance=self._test_spawn_instance, network_info=None) def test_unplug_vifs(self): # Check to make sure the method raises NotImplementedError. self.assertRaises(NotImplementedError, self._conn.unplug_vifs, instance=self._test_spawn_instance, network_info=None) def test_rollback_live_migration_at_destination(self): with mock.patch.object(self._conn, "destroy") as mock_destroy: self._conn.rollback_live_migration_at_destination(self._context, self._test_spawn_instance, [], None) mock_destroy.assert_called_once_with(self._context, self._test_spawn_instance, [], None) def test_refresh_instance_security_rules(self): self.assertRaises(NotImplementedError, self._conn.refresh_instance_security_rules, instance=None) def test_get_rdp_console(self): self.flags(my_ip="192.168.1.1") self._instance_data = self._get_instance_data() instance = db.instance_create(self._context, self._instance_data) fake_port = 9999 fake_vm_id = "fake_vm_id" m = rdpconsoleutils.RDPConsoleUtils.get_rdp_console_port() m.AndReturn(fake_port) m = vmutils.VMUtils.get_vm_id(mox.IsA(str)) m.AndReturn(fake_vm_id) self._mox.ReplayAll() connect_info = self._conn.get_rdp_console(self._context, instance) self._mox.VerifyAll() self.assertEqual(CONF.my_ip, connect_info['host']) self.assertEqual(fake_port, connect_info['port']) self.assertEqual(fake_vm_id, connect_info['internal_access_path']) class VolumeOpsTestCase(HyperVAPIBaseTestCase): """Unit tests for VolumeOps class.""" def setUp(self): super(VolumeOpsTestCase, self).setUp() self.volumeops = volumeops.VolumeOps() def test_get_mounted_disk_from_lun(self): with contextlib.nested( mock.patch.object(self.volumeops._volutils, 'get_device_number_for_target'), mock.patch.object(self.volumeops._vmutils, 'get_mounted_disk_by_drive_number') ) as (mock_get_device_number_for_target, mock_get_mounted_disk_by_drive_number): mock_get_device_number_for_target.return_value = 0 mock_get_mounted_disk_by_drive_number.return_value = 'disk_path' block_device_info = db_fakes.get_fake_block_device_info( self._volume_target_portal, self._volume_id) mapping = driver.block_device_info_get_mapping(block_device_info) data = mapping[0]['connection_info']['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] disk = self.volumeops._get_mounted_disk_from_lun(target_iqn, target_lun) self.assertEqual(disk, 'disk_path') def test_get_mounted_disk_from_lun_failure(self): with mock.patch.object(self.volumeops._volutils, 'get_device_number_for_target') as m_device_num: m_device_num.return_value = None block_device_info = db_fakes.get_fake_block_device_info( self._volume_target_portal, self._volume_id) mapping = driver.block_device_info_get_mapping(block_device_info) data = mapping[0]['connection_info']['data'] target_lun = data['target_lun'] target_iqn = data['target_iqn'] self.assertRaises(exception.NotFound, self.volumeops._get_mounted_disk_from_lun, target_iqn, target_lun) nova-2014.1/nova/tests/virt/hyperv/test_rdpconsoleutilsv2.py0000664000175400017540000000247312323721477025440 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import test from nova.virt.hyperv import rdpconsoleutilsv2 class RDPConsoleUtilsV2TestCase(test.NoDBTestCase): _FAKE_RDP_PORT = 1000 def setUp(self): self._rdpconsoleutils = rdpconsoleutilsv2.RDPConsoleUtilsV2() self._rdpconsoleutils._conn = mock.MagicMock() super(RDPConsoleUtilsV2TestCase, self).setUp() def test_get_rdp_console_port(self): conn = self._rdpconsoleutils._conn mock_rdp_setting_data = conn.Msvm_TerminalServiceSettingData()[0] mock_rdp_setting_data.ListenerPort = self._FAKE_RDP_PORT listener_port = self._rdpconsoleutils.get_rdp_console_port() self.assertEqual(self._FAKE_RDP_PORT, listener_port) nova-2014.1/nova/tests/virt/hyperv/__init__.py0000664000175400017540000000117612323721477022436 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/virt/test_virt_disk_vfs_localfs.py0000664000175400017540000003643212323721477025003 0ustar jenkinsjenkins00000000000000# Copyright (C) 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 oslo.config import cfg from nova import exception from nova.openstack.common import processutils from nova import test from nova.tests import utils as tests_utils import nova.utils from nova.virt.disk.vfs import localfs as vfsimpl CONF = cfg.CONF dirs = [] files = {} commands = [] def fake_execute(*args, **kwargs): commands.append({"args": args, "kwargs": kwargs}) if args[0] == "readlink": if args[1] == "-nm": if args[2] in ["/scratch/dir/some/file", "/scratch/dir/some/dir", "/scratch/dir/other/dir", "/scratch/dir/other/file"]: return args[2], "" elif args[1] == "-e": if args[2] in files: return args[2], "" return "", "No such file" elif args[0] == "mkdir": dirs.append(args[2]) elif args[0] == "chown": owner = args[1] path = args[2] if path not in files: raise Exception("No such file: " + path) sep = owner.find(':') if sep != -1: user = owner[0:sep] group = owner[sep + 1:] else: user = owner group = None if user: if user == "fred": uid = 105 else: uid = 110 files[path]["uid"] = uid if group: if group == "users": gid = 500 else: gid = 600 files[path]["gid"] = gid elif args[0] == "chgrp": group = args[1] path = args[2] if path not in files: raise Exception("No such file: " + path) if group == "users": gid = 500 else: gid = 600 files[path]["gid"] = gid elif args[0] == "chmod": mode = args[1] path = args[2] if path not in files: raise Exception("No such file: " + path) files[path]["mode"] = int(mode, 8) elif args[0] == "cat": path = args[1] if path not in files: files[path] = { "content": "Hello World", "gid": 100, "uid": 100, "mode": 0o700 } return files[path]["content"], "" elif args[0] == "tee": if args[1] == "-a": path = args[2] append = True else: path = args[1] append = False if path not in files: files[path] = { "content": "Hello World", "gid": 100, "uid": 100, "mode": 0o700, } if append: files[path]["content"] += kwargs["process_input"] else: files[path]["content"] = kwargs["process_input"] class VirtDiskVFSLocalFSTestPaths(test.NoDBTestCase): def setUp(self): super(VirtDiskVFSLocalFSTestPaths, self).setUp() real_execute = processutils.execute def nonroot_execute(*cmd_parts, **kwargs): kwargs.pop('run_as_root', None) return real_execute(*cmd_parts, **kwargs) self.stubs.Set(processutils, 'execute', nonroot_execute) def test_check_safe_path(self): if tests_utils.is_osx(): self.skipTest("Unable to test on OSX") vfs = vfsimpl.VFSLocalFS("dummy.img") vfs.imgdir = "/foo" ret = vfs._canonical_path('etc/something.conf') self.assertEqual(ret, '/foo/etc/something.conf') def test_check_unsafe_path(self): if tests_utils.is_osx(): self.skipTest("Unable to test on OSX") vfs = vfsimpl.VFSLocalFS("dummy.img") vfs.imgdir = "/foo" self.assertRaises(exception.Invalid, vfs._canonical_path, 'etc/../../../something.conf') class VirtDiskVFSLocalFSTest(test.NoDBTestCase): def test_makepath(self): global dirs, commands dirs = [] commands = [] self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" vfs.make_path("/some/dir") vfs.make_path("/other/dir") self.assertEqual(dirs, ["/scratch/dir/some/dir", "/scratch/dir/other/dir"]), root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/dir'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('mkdir', '-p', '/scratch/dir/some/dir'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/other/dir'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('mkdir', '-p', '/scratch/dir/other/dir'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}]) def test_append_file(self): global files, commands files = {} commands = [] self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" vfs.append_file("/some/file", " Goodbye") self.assertIn("/scratch/dir/some/file", files) self.assertEqual(files["/scratch/dir/some/file"]["content"], "Hello World Goodbye") root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('tee', '-a', '/scratch/dir/some/file'), 'kwargs': {'process_input': ' Goodbye', 'run_as_root': True, 'root_helper': root_helper}}]) def test_replace_file(self): global files, commands files = {} commands = [] self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" vfs.replace_file("/some/file", "Goodbye") self.assertIn("/scratch/dir/some/file", files) self.assertEqual(files["/scratch/dir/some/file"]["content"], "Goodbye") root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('tee', '/scratch/dir/some/file'), 'kwargs': {'process_input': 'Goodbye', 'run_as_root': True, 'root_helper': root_helper}}]) def test_read_file(self): global commands, files files = {} commands = [] self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" self.assertEqual(vfs.read_file("/some/file"), "Hello World") root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('cat', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}]) def test_has_file(self): global commands, files files = {} commands = [] self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" vfs.read_file("/some/file") self.assertTrue(vfs.has_file("/some/file")) self.assertFalse(vfs.has_file("/other/file")) root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('cat', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-e', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/other/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-e', '/scratch/dir/other/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, ]) def test_set_permissions(self): global commands, files commands = [] files = {} self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" vfs.read_file("/some/file") vfs.set_permissions("/some/file", 0o777) self.assertEqual(files["/scratch/dir/some/file"]["mode"], 0o777) root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('cat', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('chmod', '777', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}]) def test_set_ownership(self): global commands, files commands = [] files = {} self.stubs.Set(processutils, 'execute', fake_execute) vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.imgdir = "/scratch/dir" vfs.read_file("/some/file") self.assertEqual(files["/scratch/dir/some/file"]["uid"], 100) self.assertEqual(files["/scratch/dir/some/file"]["gid"], 100) vfs.set_ownership("/some/file", "fred", None) self.assertEqual(files["/scratch/dir/some/file"]["uid"], 105) self.assertEqual(files["/scratch/dir/some/file"]["gid"], 100) vfs.set_ownership("/some/file", None, "users") self.assertEqual(files["/scratch/dir/some/file"]["uid"], 105) self.assertEqual(files["/scratch/dir/some/file"]["gid"], 500) vfs.set_ownership("/some/file", "joe", "admins") self.assertEqual(files["/scratch/dir/some/file"]["uid"], 110) self.assertEqual(files["/scratch/dir/some/file"]["gid"], 600) root_helper = nova.utils._get_root_helper() self.assertEqual(commands, [{'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('cat', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('chown', 'fred', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('chgrp', 'users', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('readlink', '-nm', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}, {'args': ('chown', 'joe:admins', '/scratch/dir/some/file'), 'kwargs': {'run_as_root': True, 'root_helper': root_helper}}]) nova-2014.1/nova/tests/virt/test_driver.py0000664000175400017540000000346012323721477021712 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Citrix Systems, Inc. # Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import test from nova.virt import driver class FakeDriver(object): def __init__(self, *args, **kwargs): self.args = args self.kwargs = kwargs class FakeDriver2(FakeDriver): pass class ToDriverRegistryTestCase(test.NoDBTestCase): def assertDriverInstance(self, inst, class_, *args, **kwargs): self.assertEqual(class_, inst.__class__) self.assertEqual(args, inst.args) self.assertEqual(kwargs, inst.kwargs) def test_driver_dict_from_config(self): drvs = driver.driver_dict_from_config( [ 'key1=nova.tests.virt.test_driver.FakeDriver', 'key2=nova.tests.virt.test_driver.FakeDriver2', ], 'arg1', 'arg2', param1='value1', param2='value2' ) self.assertEqual( sorted(['key1', 'key2']), sorted(drvs.keys()) ) self.assertDriverInstance( drvs['key1'], FakeDriver, 'arg1', 'arg2', param1='value1', param2='value2') self.assertDriverInstance( drvs['key2'], FakeDriver2, 'arg1', 'arg2', param1='value1', param2='value2') nova-2014.1/nova/tests/virt/test_cpu.py0000664000175400017540000000751112323721477021207 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import exception from nova import test from nova.virt import cpu class CpuSetTestCase(test.NoDBTestCase): def test_get_cpuset_ids_none_returns_none(self): self.flags(vcpu_pin_set=None) cpuset_ids = cpu.get_cpuset_ids() self.assertIsNone(cpuset_ids) def test_get_cpuset_ids_valid_syntax_works(self): self.flags(vcpu_pin_set="1") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1], cpuset_ids) self.flags(vcpu_pin_set="1,2") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1, 2], cpuset_ids) self.flags(vcpu_pin_set=", , 1 , ,, 2, ,") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1, 2], cpuset_ids) self.flags(vcpu_pin_set="1-1") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1], cpuset_ids) self.flags(vcpu_pin_set=" 1 - 1, 1 - 2 , 1 -3") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1, 2, 3], cpuset_ids) self.flags(vcpu_pin_set="1,^2") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1], cpuset_ids) self.flags(vcpu_pin_set="1-2, ^1") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([2], cpuset_ids) self.flags(vcpu_pin_set="1-3,5,^2") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1, 3, 5], cpuset_ids) self.flags(vcpu_pin_set=" 1 - 3 , ^2, 5") cpuset_ids = cpu.get_cpuset_ids() self.assertEqual([1, 3, 5], cpuset_ids) def test_get_cpuset_ids_invalid_syntax_raises(self): self.flags(vcpu_pin_set=" -1-3,5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-3-,5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="-3,5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-,5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-3,5,^2^") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-3,5,^2-") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="--13,^^5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="a-3,5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-a,5,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-3,b,^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="1-3,5,^c") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="3 - 1, 5 , ^ 2 ") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set=" 1,1, ^1") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set=" 1,^1,^1,2, ^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) self.flags(vcpu_pin_set="^2") self.assertRaises(exception.Invalid, cpu.get_cpuset_ids) nova-2014.1/nova/tests/virt/test_imagecache.py0000664000175400017540000001141212323721477022461 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova.compute import vm_states from nova import test from nova.virt import imagecache CONF = cfg.CONF class ImageCacheManagerTests(test.NoDBTestCase): def test_configurationi_defaults(self): self.assertEqual(CONF.image_cache_manager_interval, 2400) self.assertEqual(CONF.image_cache_subdirectory_name, '_base') self.assertTrue(CONF.remove_unused_base_images) self.assertEqual(CONF.remove_unused_original_minimum_age_seconds, 24 * 3600) def test_cache_manager(self): cache_manager = imagecache.ImageCacheManager() self.assertTrue(cache_manager.remove_unused_base_images) self.assertRaises(NotImplementedError, cache_manager.update, None, []) self.assertRaises(NotImplementedError, cache_manager._get_base) base_images = cache_manager._list_base_images(None) self.assertEqual(base_images['unexplained_images'], []) self.assertEqual(base_images['originals'], []) self.assertRaises(NotImplementedError, cache_manager._age_and_verify_cached_images, None, [], None) def test_list_running_instances(self): all_instances = [{'image_ref': '1', 'host': CONF.host, 'name': 'inst-1', 'uuid': '123', 'vm_state': '', 'task_state': ''}, {'image_ref': '2', 'host': CONF.host, 'name': 'inst-2', 'uuid': '456', 'vm_state': '', 'task_state': ''}, {'image_ref': '2', 'kernel_id': '21', 'ramdisk_id': '22', 'host': 'remotehost', 'name': 'inst-3', 'uuid': '789', 'vm_state': '', 'task_state': ''}] image_cache_manager = imagecache.ImageCacheManager() # The argument here should be a context, but it's mocked out running = image_cache_manager._list_running_instances(None, all_instances) self.assertEqual(len(running['used_images']), 4) self.assertTrue(running['used_images']['1'] == (1, 0, ['inst-1'])) self.assertTrue(running['used_images']['2'] == (1, 1, ['inst-2', 'inst-3'])) self.assertTrue(running['used_images']['21'] == (0, 1, ['inst-3'])) self.assertTrue(running['used_images']['22'] == (0, 1, ['inst-3'])) self.assertIn('inst-1', running['instance_names']) self.assertIn('123', running['instance_names']) self.assertEqual(len(running['image_popularity']), 4) self.assertEqual(running['image_popularity']['1'], 1) self.assertEqual(running['image_popularity']['2'], 2) self.assertEqual(running['image_popularity']['21'], 1) self.assertEqual(running['image_popularity']['22'], 1) def test_list_resizing_instances(self): all_instances = [{'image_ref': '1', 'host': CONF.host, 'name': 'inst-1', 'uuid': '123', 'vm_state': vm_states.RESIZED, 'task_state': None}] image_cache_manager = imagecache.ImageCacheManager() running = image_cache_manager._list_running_instances(None, all_instances) self.assertEqual(len(running['used_images']), 1) self.assertTrue(running['used_images']['1'] == (1, 0, ['inst-1'])) self.assertTrue(running['instance_names'] == set(['inst-1', '123', 'inst-1_resize', '123_resize'])) self.assertEqual(len(running['image_popularity']), 1) self.assertEqual(running['image_popularity']['1'], 1) nova-2014.1/nova/tests/virt/test_virt_disk_vfs_guestfs.py0000664000175400017540000001713712323721477025041 0ustar jenkinsjenkins00000000000000# Copyright (C) 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. import sys from nova import exception from nova import test from nova.tests import fakeguestfs from nova.virt.disk.vfs import guestfs as vfsimpl class VirtDiskVFSGuestFSTest(test.NoDBTestCase): def setUp(self): super(VirtDiskVFSGuestFSTest, self).setUp() sys.modules['guestfs'] = fakeguestfs vfsimpl.guestfs = fakeguestfs def test_appliance_setup_inspect(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2", partition=-1) vfs.setup() self.assertEqual(vfs.handle.running, True) self.assertEqual(len(vfs.handle.mounts), 3) self.assertEqual(vfs.handle.mounts[0][1], "/dev/mapper/guestvgf-lv_root") self.assertEqual(vfs.handle.mounts[1][1], "/dev/vda1") self.assertEqual(vfs.handle.mounts[2][1], "/dev/mapper/guestvgf-lv_home") self.assertEqual(vfs.handle.mounts[0][2], "/") self.assertEqual(vfs.handle.mounts[1][2], "/boot") self.assertEqual(vfs.handle.mounts[2][2], "/home") handle = vfs.handle vfs.teardown() self.assertIsNone(vfs.handle) self.assertEqual(handle.running, False) self.assertEqual(handle.closed, True) self.assertEqual(len(handle.mounts), 0) def test_appliance_setup_inspect_no_root_raises(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2", partition=-1) # call setup to init the handle so we can stub it vfs.setup() def fake_inspect_os(): return [] self.stubs.Set(vfs.handle, 'inspect_os', fake_inspect_os) self.assertRaises(exception.NovaException, vfs.setup_os_inspect) def test_appliance_setup_inspect_multi_boots_raises(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2", partition=-1) # call setup to init the handle so we can stub it vfs.setup() def fake_inspect_os(): return ['fake1', 'fake2'] self.stubs.Set(vfs.handle, 'inspect_os', fake_inspect_os) self.assertRaises(exception.NovaException, vfs.setup_os_inspect) def test_appliance_setup_static_nopart(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2", partition=None) vfs.setup() self.assertEqual(vfs.handle.running, True) self.assertEqual(len(vfs.handle.mounts), 1) self.assertEqual(vfs.handle.mounts[0][1], "/dev/sda") self.assertEqual(vfs.handle.mounts[0][2], "/") handle = vfs.handle vfs.teardown() self.assertIsNone(vfs.handle) self.assertEqual(handle.running, False) self.assertEqual(handle.closed, True) self.assertEqual(len(handle.mounts), 0) def test_appliance_setup_static_part(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2", partition=2) vfs.setup() self.assertEqual(vfs.handle.running, True) self.assertEqual(len(vfs.handle.mounts), 1) self.assertEqual(vfs.handle.mounts[0][1], "/dev/sda2") self.assertEqual(vfs.handle.mounts[0][2], "/") handle = vfs.handle vfs.teardown() self.assertIsNone(vfs.handle) self.assertEqual(handle.running, False) self.assertEqual(handle.closed, True) self.assertEqual(len(handle.mounts), 0) def test_makepath(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() vfs.make_path("/some/dir") vfs.make_path("/other/dir") self.assertIn("/some/dir", vfs.handle.files) self.assertIn("/other/dir", vfs.handle.files) self.assertTrue(vfs.handle.files["/some/dir"]["isdir"]) self.assertTrue(vfs.handle.files["/other/dir"]["isdir"]) vfs.teardown() def test_append_file(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() vfs.append_file("/some/file", " Goodbye") self.assertIn("/some/file", vfs.handle.files) self.assertEqual(vfs.handle.files["/some/file"]["content"], "Hello World Goodbye") vfs.teardown() def test_replace_file(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() vfs.replace_file("/some/file", "Goodbye") self.assertIn("/some/file", vfs.handle.files) self.assertEqual(vfs.handle.files["/some/file"]["content"], "Goodbye") vfs.teardown() def test_read_file(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() self.assertEqual(vfs.read_file("/some/file"), "Hello World") vfs.teardown() def test_has_file(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() vfs.read_file("/some/file") self.assertTrue(vfs.has_file("/some/file")) self.assertFalse(vfs.has_file("/other/file")) vfs.teardown() def test_set_permissions(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() vfs.read_file("/some/file") self.assertEqual(vfs.handle.files["/some/file"]["mode"], 0o700) vfs.set_permissions("/some/file", 0o7777) self.assertEqual(vfs.handle.files["/some/file"]["mode"], 0o7777) vfs.teardown() def test_set_ownership(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() vfs.read_file("/some/file") self.assertEqual(vfs.handle.files["/some/file"]["uid"], 100) self.assertEqual(vfs.handle.files["/some/file"]["gid"], 100) vfs.set_ownership("/some/file", "fred", None) self.assertEqual(vfs.handle.files["/some/file"]["uid"], 105) self.assertEqual(vfs.handle.files["/some/file"]["gid"], 100) vfs.set_ownership("/some/file", None, "users") self.assertEqual(vfs.handle.files["/some/file"]["uid"], 105) self.assertEqual(vfs.handle.files["/some/file"]["gid"], 500) vfs.set_ownership("/some/file", "joe", "admins") self.assertEqual(vfs.handle.files["/some/file"]["uid"], 110) self.assertEqual(vfs.handle.files["/some/file"]["gid"], 600) vfs.teardown() def test_close_on_error(self): vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() self.assertFalse(vfs.handle.kwargs['close_on_exit']) vfs.teardown() self.stubs.Set(fakeguestfs.GuestFS, 'SUPPORT_CLOSE_ON_EXIT', False) vfs = vfsimpl.VFSGuestFS(imgfile="/dummy.qcow2", imgfmt="qcow2") vfs.setup() self.assertNotIn('close_on_exit', vfs.handle.kwargs) vfs.teardown() nova-2014.1/nova/tests/virt/test_images.py0000664000175400017540000000157212323721477021666 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import test from nova.virt import images class QemuTestCase(test.NoDBTestCase): def test_qemu_info_with_bad_path(self): image_info = images.qemu_img_info("/path/that/does/not/exist") self.assertTrue(image_info) self.assertTrue(str(image_info)) nova-2014.1/nova/tests/virt/disk/0000775000175400017540000000000012323722546017733 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/disk/test_loop.py0000664000175400017540000000645512323721477022331 0ustar jenkinsjenkins00000000000000# Copyright 2012 Michael Still # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures from nova import test from nova.virt.disk.mount import loop def _fake_noop(*args, **kwargs): return def _fake_trycmd_losetup_works(*args, **kwargs): return '/dev/loop0', '' def _fake_trycmd_losetup_fails(*args, **kwards): return '', 'doh' class LoopTestCase(test.NoDBTestCase): def test_get_dev(self): tempdir = self.useFixture(fixtures.TempDir()).path l = loop.LoopMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', _fake_trycmd_losetup_works)) self.useFixture(fixtures.MonkeyPatch('nova.utils.execute', _fake_noop)) # No error logged, device consumed self.assertTrue(l.get_dev()) self.assertTrue(l.linked) self.assertEqual('', l.error) self.assertEqual('/dev/loop0', l.device) # Free l.unget_dev() self.assertFalse(l.linked) self.assertEqual('', l.error) self.assertIsNone(l.device) def test_inner_get_dev_fails(self): tempdir = self.useFixture(fixtures.TempDir()).path l = loop.LoopMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', _fake_trycmd_losetup_fails)) # No error logged, device consumed self.assertFalse(l._inner_get_dev()) self.assertFalse(l.linked) self.assertNotEqual('', l.error) self.assertIsNone(l.device) # Free l.unget_dev() self.assertFalse(l.linked) self.assertIsNone(l.device) def test_get_dev_timeout(self): tempdir = self.useFixture(fixtures.TempDir()).path l = loop.LoopMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('time.sleep', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', _fake_trycmd_losetup_fails)) self.useFixture(fixtures.MonkeyPatch(('nova.virt.disk.mount.api.' 'MAX_DEVICE_WAIT'), -10)) # Always fail to get a device def fake_get_dev_fails(): return False l._inner_get_dev = fake_get_dev_fails # Fail to get a device self.assertFalse(l.get_dev()) def test_unget_dev(self): tempdir = self.useFixture(fixtures.TempDir()).path l = loop.LoopMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('nova.utils.execute', _fake_noop)) # This just checks that a free of something we don't have doesn't # throw an exception l.unget_dev() nova-2014.1/nova/tests/virt/disk/test_api.py0000664000175400017540000001275012323721477022124 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import tempfile import fixtures from nova.openstack.common import processutils from nova import test from nova import utils from nova.virt.disk import api from nova.virt.disk.mount import api as mount class FakeMount(object): device = None @staticmethod def instance_for_format(imgfile, mountdir, partition, imgfmt): return FakeMount() def get_dev(self): pass def unget_dev(self): pass class APITestCase(test.NoDBTestCase): def setUp(self): super(APITestCase, self).setUp() def test_can_resize_need_fs_type_specified(self): # NOTE(mikal): Bug 1094373 saw a regression where we failed to # treat a failure to mount as a failure to be able to resize the # filesystem def _fake_get_disk_size(path): return 10 self.useFixture(fixtures.MonkeyPatch( 'nova.virt.disk.api.get_disk_size', _fake_get_disk_size)) def fake_trycmd(*args, **kwargs): return '', 'broken' self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', fake_trycmd)) def fake_returns_true(*args, **kwargs): return True self.useFixture(fixtures.MonkeyPatch( 'nova.virt.disk.mount.nbd.NbdMount.get_dev', fake_returns_true)) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.disk.mount.nbd.NbdMount.map_dev', fake_returns_true)) # Force the use of localfs, which is what was used during the failure # reported in the bug def fake_import_fails(*args, **kwargs): raise Exception('Failed') self.useFixture(fixtures.MonkeyPatch( 'nova.openstack.common.importutils.import_module', fake_import_fails)) imgfile = tempfile.NamedTemporaryFile() self.addCleanup(imgfile.close) self.assertFalse(api.is_image_partitionless(imgfile, use_cow=True)) def test_resize2fs_success(self): imgfile = tempfile.NamedTemporaryFile() self.mox.StubOutWithMock(utils, 'execute') utils.execute('e2fsck', '-fp', imgfile, check_exit_code=[0, 1, 2], run_as_root=False) utils.execute('resize2fs', imgfile, check_exit_code=False, run_as_root=False) self.mox.ReplayAll() api.resize2fs(imgfile) def test_resize2fs_e2fsck_fails(self): imgfile = tempfile.NamedTemporaryFile() self.mox.StubOutWithMock(utils, 'execute') utils.execute('e2fsck', '-fp', imgfile, check_exit_code=[0, 1, 2], run_as_root=False).AndRaise( processutils.ProcessExecutionError("fs error")) self.mox.ReplayAll() api.resize2fs(imgfile) def test_extend_qcow_success(self): imgfile = tempfile.NamedTemporaryFile() imgsize = 10 device = "/dev/sdh" use_cow = True self.flags(resize_fs_using_block_device=True) mounter = FakeMount.instance_for_format( imgfile, None, None, 'qcow2') mounter.device = device self.mox.StubOutWithMock(api, 'can_resize_image') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(api, 'is_image_partitionless') self.mox.StubOutWithMock(mounter, 'get_dev') self.mox.StubOutWithMock(mounter, 'unget_dev') self.mox.StubOutWithMock(api, 'resize2fs') self.mox.StubOutWithMock(mount.Mount, 'instance_for_format') api.can_resize_image(imgfile, imgsize).AndReturn(True) utils.execute('qemu-img', 'resize', imgfile, imgsize) api.is_image_partitionless(imgfile, use_cow).AndReturn(True) mount.Mount.instance_for_format( imgfile, None, None, 'qcow2').AndReturn(mounter) mounter.get_dev().AndReturn(True) api.resize2fs(mounter.device, run_as_root=True, check_exit_code=[0]) mounter.unget_dev() self.mox.ReplayAll() api.extend(imgfile, imgsize, use_cow=use_cow) def test_extend_raw_success(self): imgfile = tempfile.NamedTemporaryFile() imgsize = 10 device = "/dev/sdh" use_cow = False self.mox.StubOutWithMock(api, 'can_resize_image') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(api, 'is_image_partitionless') self.mox.StubOutWithMock(api, 'resize2fs') api.can_resize_image(imgfile, imgsize).AndReturn(True) utils.execute('qemu-img', 'resize', imgfile, imgsize) api.is_image_partitionless(imgfile, use_cow).AndReturn(True) api.resize2fs(imgfile, run_as_root=False, check_exit_code=[0]) self.mox.ReplayAll() api.extend(imgfile, imgsize, use_cow=use_cow) nova-2014.1/nova/tests/virt/disk/test_nbd.py0000664000175400017540000003065412323721477022121 0ustar jenkinsjenkins00000000000000# Copyright 2012 Michael Still and Canonical Inc # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import tempfile import time import eventlet import fixtures from nova import test from nova.virt.disk.mount import nbd ORIG_EXISTS = os.path.exists ORIG_LISTDIR = os.listdir def _fake_exists_no_users(path): if path.startswith('/sys/block/nbd'): if path.endswith('pid'): return False return True return ORIG_EXISTS(path) def _fake_listdir_nbd_devices(path): if path.startswith('/sys/block'): return ['nbd0', 'nbd1'] return ORIG_LISTDIR(path) def _fake_exists_all_used(path): if path.startswith('/sys/block/nbd'): return True return ORIG_EXISTS(path) def _fake_detect_nbd_devices_none(self): return [] def _fake_detect_nbd_devices(self): return ['nbd0', 'nbd1'] def _fake_noop(*args, **kwargs): return class NbdTestCase(test.NoDBTestCase): def setUp(self): super(NbdTestCase, self).setUp() self.stubs.Set(nbd.NbdMount, '_detect_nbd_devices', _fake_detect_nbd_devices) self.useFixture(fixtures.MonkeyPatch('os.listdir', _fake_listdir_nbd_devices)) def test_nbd_no_devices(self): tempdir = self.useFixture(fixtures.TempDir()).path self.stubs.Set(nbd.NbdMount, '_detect_nbd_devices', _fake_detect_nbd_devices_none) n = nbd.NbdMount(None, tempdir) self.assertIsNone(n._allocate_nbd()) def test_nbd_no_free_devices(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('os.path.exists', _fake_exists_all_used)) self.assertIsNone(n._allocate_nbd()) def test_nbd_not_loaded(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) # Fake out os.path.exists def fake_exists(path): if path.startswith('/sys/block/nbd'): return False return ORIG_EXISTS(path) self.useFixture(fixtures.MonkeyPatch('os.path.exists', fake_exists)) # This should fail, as we don't have the module "loaded" # TODO(mikal): work out how to force english as the gettext language # so that the error check always passes self.assertIsNone(n._allocate_nbd()) self.assertEqual('nbd unavailable: module not loaded', n.error) def test_nbd_allocation(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('os.path.exists', _fake_exists_no_users)) self.useFixture(fixtures.MonkeyPatch('random.shuffle', _fake_noop)) # Allocate a nbd device self.assertEqual('/dev/nbd0', n._allocate_nbd()) def test_nbd_allocation_one_in_use(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('random.shuffle', _fake_noop)) # Fake out os.path.exists def fake_exists(path): if path.startswith('/sys/block/nbd'): if path == '/sys/block/nbd0/pid': return True if path.endswith('pid'): return False return True return ORIG_EXISTS(path) self.useFixture(fixtures.MonkeyPatch('os.path.exists', fake_exists)) # Allocate a nbd device, should not be the in use one # TODO(mikal): Note that there is a leak here, as the in use nbd device # is removed from the list, but not returned so it will never be # re-added. I will fix this in a later patch. self.assertEqual('/dev/nbd1', n._allocate_nbd()) def test_inner_get_dev_no_devices(self): tempdir = self.useFixture(fixtures.TempDir()).path self.stubs.Set(nbd.NbdMount, '_detect_nbd_devices', _fake_detect_nbd_devices_none) n = nbd.NbdMount(None, tempdir) self.assertFalse(n._inner_get_dev()) def test_inner_get_dev_qemu_fails(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('os.path.exists', _fake_exists_no_users)) # We have a trycmd that always fails def fake_trycmd(*args, **kwargs): return '', 'broken' self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', fake_trycmd)) # Error logged, no device consumed self.assertFalse(n._inner_get_dev()) self.assertTrue(n.error.startswith('qemu-nbd error')) def test_inner_get_dev_qemu_timeout(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('os.path.exists', _fake_exists_no_users)) # We have a trycmd that always passed def fake_trycmd(*args, **kwargs): return '', '' self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', fake_trycmd)) self.useFixture(fixtures.MonkeyPatch('time.sleep', _fake_noop)) # Error logged, no device consumed self.assertFalse(n._inner_get_dev()) self.assertTrue(n.error.endswith('did not show up')) def fake_exists_one(self, path): # We need the pid file for the device which is allocated to exist, but # only once it is allocated to us if path.startswith('/sys/block/nbd'): if path == '/sys/block/nbd1/pid': return False if path.endswith('pid'): return False return True return ORIG_EXISTS(path) def fake_trycmd_creates_pid(self, *args, **kwargs): def fake_exists_two(path): if path.startswith('/sys/block/nbd'): if path == '/sys/block/nbd0/pid': return True if path.endswith('pid'): return False return True return ORIG_EXISTS(path) self.useFixture(fixtures.MonkeyPatch('os.path.exists', fake_exists_two)) return '', '' def test_inner_get_dev_works(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('random.shuffle', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('os.path.exists', self.fake_exists_one)) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', self.fake_trycmd_creates_pid)) self.useFixture(fixtures.MonkeyPatch('nova.utils.execute', _fake_noop)) # No error logged, device consumed self.assertTrue(n._inner_get_dev()) self.assertTrue(n.linked) self.assertEqual('', n.error) self.assertEqual('/dev/nbd0', n.device) # Free n.unget_dev() self.assertFalse(n.linked) self.assertEqual('', n.error) self.assertIsNone(n.device) def test_unget_dev_simple(self): # This test is just checking we don't get an exception when we unget # something we don't have tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('nova.utils.execute', _fake_noop)) n.unget_dev() def test_get_dev(self): tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('random.shuffle', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('nova.utils.execute', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('os.path.exists', self.fake_exists_one)) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', self.fake_trycmd_creates_pid)) # No error logged, device consumed self.assertTrue(n.get_dev()) self.assertTrue(n.linked) self.assertEqual('', n.error) self.assertEqual('/dev/nbd0', n.device) # Free n.unget_dev() self.assertFalse(n.linked) self.assertEqual('', n.error) self.assertIsNone(n.device) def test_get_dev_timeout(self): # Always fail to get a device def fake_get_dev_fails(self): return False self.stubs.Set(nbd.NbdMount, '_inner_get_dev', fake_get_dev_fails) tempdir = self.useFixture(fixtures.TempDir()).path n = nbd.NbdMount(None, tempdir) self.useFixture(fixtures.MonkeyPatch('random.shuffle', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('time.sleep', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('nova.utils.execute', _fake_noop)) self.useFixture(fixtures.MonkeyPatch('os.path.exists', self.fake_exists_one)) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', self.fake_trycmd_creates_pid)) self.useFixture(fixtures.MonkeyPatch(('nova.virt.disk.mount.api.' 'MAX_DEVICE_WAIT'), -10)) # No error logged, device consumed self.assertFalse(n.get_dev()) def test_do_mount_need_to_specify_fs_type(self): # NOTE(mikal): Bug 1094373 saw a regression where we failed to # communicate a failed mount properly. def fake_trycmd(*args, **kwargs): return '', 'broken' self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', fake_trycmd)) imgfile = tempfile.NamedTemporaryFile() self.addCleanup(imgfile.close) tempdir = self.useFixture(fixtures.TempDir()).path mount = nbd.NbdMount(imgfile.name, tempdir) def fake_returns_true(*args, **kwargs): return True mount.get_dev = fake_returns_true mount.map_dev = fake_returns_true self.assertFalse(mount.do_mount()) def test_device_creation_race(self): # Make sure that even if two threads create instances at the same time # they cannot choose the same nbd number (see bug 1207422) tempdir = self.useFixture(fixtures.TempDir()).path free_devices = _fake_detect_nbd_devices(None)[:] chosen_devices = [] def fake_find_unused(self): return os.path.join('/dev', free_devices[-1]) def delay_and_remove_device(*args, **kwargs): # Ensure that context switch happens before the device is marked # as used. This will cause a failure without nbd-allocation-lock # in place. time.sleep(0.1) # We always choose the top device in find_unused - remove it now. free_devices.pop() return '', '' def pid_exists(pidfile): return pidfile not in [os.path.join('/sys/block', dev, 'pid') for dev in free_devices] self.stubs.Set(nbd.NbdMount, '_allocate_nbd', fake_find_unused) self.useFixture(fixtures.MonkeyPatch('nova.utils.trycmd', delay_and_remove_device)) self.useFixture(fixtures.MonkeyPatch('os.path.exists', pid_exists)) def get_a_device(): n = nbd.NbdMount(None, tempdir) n.get_dev() chosen_devices.append(n.device) thread1 = eventlet.spawn(get_a_device) thread2 = eventlet.spawn(get_a_device) thread1.wait() thread2.wait() self.assertEqual(2, len(chosen_devices)) self.assertNotEqual(chosen_devices[0], chosen_devices[1]) nova-2014.1/nova/tests/virt/disk/__init__.py0000664000175400017540000000116412323721477022050 0ustar jenkinsjenkins00000000000000# Copyright 2012 Michael Still # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/virt/test_virt_disk.py0000664000175400017540000002657712323721510022417 0ustar jenkinsjenkins00000000000000# Copyright (C) 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. import fixtures import os import sys import posix from nova import exception from nova import test from nova.tests import fakeguestfs from nova.virt.disk import api as diskapi from nova.virt.disk.vfs import guestfs as vfsguestfs class VirtDiskTest(test.NoDBTestCase): def setUp(self): super(VirtDiskTest, self).setUp() sys.modules['guestfs'] = fakeguestfs vfsguestfs.guestfs = fakeguestfs def test_inject_data(self): orig_os_stat = os.stat def fake_stat(arg): if arg == '/some/file': # fake success return posix.stat_result((16877, 2, 2049L, 23, 0, 0, 4096, 1381787843, 1381635971, 1381635971)) else: return orig_os_stat(arg) self.useFixture(fixtures.MonkeyPatch('os.stat', fake_stat)) self.assertTrue(diskapi.inject_data("/some/file", use_cow=True)) self.assertTrue(diskapi.inject_data("/some/file", mandatory=('files',))) self.assertTrue(diskapi.inject_data("/some/file", key="mysshkey", mandatory=('key',))) os_name = os.name os.name = 'nt' # Cause password injection to fail self.assertRaises(exception.NovaException, diskapi.inject_data, "/some/file", admin_password="p", mandatory=('admin_password',)) self.assertFalse(diskapi.inject_data("/some/file", admin_password="p")) os.name = os_name self.assertFalse(diskapi.inject_data("/some/fail/file")) def test_inject_data_key(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() diskapi._inject_key_into_fs("mysshkey", vfs) self.assertIn("/root/.ssh", vfs.handle.files) self.assertEqual(vfs.handle.files["/root/.ssh"], {'isdir': True, 'gid': 0, 'uid': 0, 'mode': 0o700}) self.assertIn("/root/.ssh/authorized_keys", vfs.handle.files) self.assertEqual(vfs.handle.files["/root/.ssh/authorized_keys"], {'isdir': False, 'content': "Hello World\n# The following ssh " + "key was injected by Nova\nmysshkey\n", 'gid': 100, 'uid': 100, 'mode': 0o600}) vfs.teardown() def test_inject_data_key_with_selinux(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() vfs.make_path("etc/selinux") vfs.make_path("etc/rc.d") diskapi._inject_key_into_fs("mysshkey", vfs) self.assertIn("/etc/rc.d/rc.local", vfs.handle.files) self.assertEqual(vfs.handle.files["/etc/rc.d/rc.local"], {'isdir': False, 'content': "Hello World#!/bin/sh\n# Added by " + "Nova to ensure injected ssh keys " + "have the right context\nrestorecon " + "-RF root/.ssh 2>/dev/null || :\n", 'gid': 100, 'uid': 100, 'mode': 0o700}) self.assertIn("/root/.ssh", vfs.handle.files) self.assertEqual(vfs.handle.files["/root/.ssh"], {'isdir': True, 'gid': 0, 'uid': 0, 'mode': 0o700}) self.assertIn("/root/.ssh/authorized_keys", vfs.handle.files) self.assertEqual(vfs.handle.files["/root/.ssh/authorized_keys"], {'isdir': False, 'content': "Hello World\n# The following ssh " + "key was injected by Nova\nmysshkey\n", 'gid': 100, 'uid': 100, 'mode': 0o600}) vfs.teardown() def test_inject_data_key_with_selinux_append_with_newline(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() vfs.replace_file("/etc/rc.d/rc.local", "#!/bin/sh\necho done") vfs.make_path("etc/selinux") vfs.make_path("etc/rc.d") diskapi._inject_key_into_fs("mysshkey", vfs) self.assertIn("/etc/rc.d/rc.local", vfs.handle.files) self.assertEqual(vfs.handle.files["/etc/rc.d/rc.local"], {'isdir': False, 'content': "#!/bin/sh\necho done\n# Added " "by Nova to ensure injected ssh keys have " "the right context\nrestorecon -RF " "root/.ssh 2>/dev/null || :\n", 'gid': 100, 'uid': 100, 'mode': 0o700}) vfs.teardown() def test_inject_net(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() diskapi._inject_net_into_fs("mynetconfig", vfs) self.assertIn("/etc/network/interfaces", vfs.handle.files) self.assertEqual(vfs.handle.files["/etc/network/interfaces"], {'content': 'mynetconfig', 'gid': 100, 'isdir': False, 'mode': 0o700, 'uid': 100}) vfs.teardown() def test_inject_metadata(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() diskapi._inject_metadata_into_fs({"foo": "bar", "eek": "wizz"}, vfs) self.assertIn("/meta.js", vfs.handle.files) self.assertEqual({'content': '{"foo": "bar", ' + '"eek": "wizz"}', 'gid': 100, 'isdir': False, 'mode': 0o700, 'uid': 100}, vfs.handle.files["/meta.js"]) vfs.teardown() def test_inject_admin_password(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() def fake_salt(): return "1234567890abcdef" self.stubs.Set(diskapi, '_generate_salt', fake_salt) vfs.handle.write("/etc/shadow", "root:$1$12345678$xxxxx:14917:0:99999:7:::\n" + "bin:*:14495:0:99999:7:::\n" + "daemon:*:14495:0:99999:7:::\n") vfs.handle.write("/etc/passwd", "root:x:0:0:root:/root:/bin/bash\n" + "bin:x:1:1:bin:/bin:/sbin/nologin\n" + "daemon:x:2:2:daemon:/sbin:/sbin/nologin\n") diskapi._inject_admin_password_into_fs("123456", vfs) self.assertEqual(vfs.handle.files["/etc/passwd"], {'content': "root:x:0:0:root:/root:/bin/bash\n" + "bin:x:1:1:bin:/bin:/sbin/nologin\n" + "daemon:x:2:2:daemon:/sbin:" + "/sbin/nologin\n", 'gid': 100, 'isdir': False, 'mode': 0o700, 'uid': 100}) shadow = vfs.handle.files["/etc/shadow"] # if the encrypted password is only 13 characters long, then # nova.virt.disk.api:_set_password fell back to DES. if len(shadow['content']) == 91: self.assertEqual(shadow, {'content': "root:12tir.zIbWQ3c" + ":14917:0:99999:7:::\n" + "bin:*:14495:0:99999:7:::\n" + "daemon:*:14495:0:99999:7:::\n", 'gid': 100, 'isdir': False, 'mode': 0o700, 'uid': 100}) else: self.assertEqual(shadow, {'content': "root:$1$12345678$a4ge4d5iJ5vw" + "vbFS88TEN0:14917:0:99999:7:::\n" + "bin:*:14495:0:99999:7:::\n" + "daemon:*:14495:0:99999:7:::\n", 'gid': 100, 'isdir': False, 'mode': 0o700, 'uid': 100}) vfs.teardown() def test_inject_files_into_fs(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() diskapi._inject_files_into_fs([("/path/to/not/exists/file", "inject-file-contents")], vfs) self.assertIn("/path/to/not/exists", vfs.handle.files) shadow_dir = vfs.handle.files["/path/to/not/exists"] self.assertEqual(shadow_dir, {"isdir": True, "gid": 0, "uid": 0, "mode": 0o744}) shadow_file = vfs.handle.files["/path/to/not/exists/file"] self.assertEqual(shadow_file, {"isdir": False, "content": "inject-file-contents", "gid": 100, "uid": 100, "mode": 0o700}) vfs.teardown() def test_inject_files_into_fs_dir_exists(self): vfs = vfsguestfs.VFSGuestFS("/some/file", "qcow2") vfs.setup() called = {'make_path': False} def fake_has_file(*args, **kwargs): return True def fake_make_path(*args, **kwargs): called['make_path'] = True self.stubs.Set(vfs, 'has_file', fake_has_file) self.stubs.Set(vfs, 'make_path', fake_make_path) # test for already exists dir diskapi._inject_files_into_fs([("/path/to/exists/file", "inject-file-contents")], vfs) self.assertIn("/path/to/exists/file", vfs.handle.files) self.assertFalse(called['make_path']) # test for root dir diskapi._inject_files_into_fs([("/inject-file", "inject-file-contents")], vfs) self.assertIn("/inject-file", vfs.handle.files) self.assertFalse(called['make_path']) # test for null dir vfs.handle.files.pop("/inject-file") diskapi._inject_files_into_fs([("inject-file", "inject-file-contents")], vfs) self.assertIn("/inject-file", vfs.handle.files) self.assertFalse(called['make_path']) vfs.teardown() nova-2014.1/nova/tests/virt/test_volumeutils.py0000664000175400017540000000336512323721477023013 0ustar jenkinsjenkins00000000000000# Copyright 2014 Hewlett-Packard Development Company, L.P. # Copyright 2012 University Of Minho # Copyright 2010 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests fot virt volumeutils. """ from nova import exception from nova import test from nova import utils from nova.virt import volumeutils class VolumeUtilsTestCase(test.TestCase): def test_get_iscsi_initiator(self): self.mox.StubOutWithMock(utils, 'execute') initiator = 'fake.initiator.iqn' rval = ("junk\nInitiatorName=%s\njunk\n" % initiator, None) utils.execute('cat', '/etc/iscsi/initiatorname.iscsi', run_as_root=True).AndReturn(rval) # Start test self.mox.ReplayAll() result = volumeutils.get_iscsi_initiator() self.assertEqual(initiator, result) def test_get_missing_iscsi_initiator(self): self.mox.StubOutWithMock(utils, 'execute') file_path = '/etc/iscsi/initiatorname.iscsi' utils.execute('cat', file_path, run_as_root=True).AndRaise( exception.FileNotFound(file_path=file_path) ) # Start test self.mox.ReplayAll() result = volumeutils.get_iscsi_initiator() self.assertIsNone(result) nova-2014.1/nova/tests/virt/test_virt_drivers.py0000664000175400017540000010010412323721477023132 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 import fixtures import sys import traceback import mock import netaddr import six from nova.compute import manager from nova import exception from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova import test from nova.tests.image import fake as fake_image from nova.tests import utils as test_utils from nova.tests.virt.libvirt import fake_libvirt_utils from nova.virt import event as virtevent from nova.virt import fake from nova.virt.libvirt import imagebackend LOG = logging.getLogger(__name__) def catch_notimplementederror(f): """Decorator to simplify catching drivers raising NotImplementedError If a particular call makes a driver raise NotImplementedError, we log it so that we can extract this information afterwards to automatically generate a hypervisor/feature support matrix. """ def wrapped_func(self, *args, **kwargs): try: return f(self, *args, **kwargs) except NotImplementedError: frame = traceback.extract_tb(sys.exc_info()[2])[-1] LOG.error('%(driver)s does not implement %(method)s' % { 'driver': type(self.connection), 'method': frame[2]}) wrapped_func.__name__ = f.__name__ wrapped_func.__doc__ = f.__doc__ return wrapped_func class _FakeDriverBackendTestCase(object): def _setup_fakelibvirt(self): # So that the _supports_direct_io does the test based # on the current working directory, instead of the # default instances_path which doesn't exist self.flags(instances_path=self.useFixture(fixtures.TempDir()).path) # Put fakelibvirt in place if 'libvirt' in sys.modules: self.saved_libvirt = sys.modules['libvirt'] else: self.saved_libvirt = None import nova.tests.virt.libvirt.fake_imagebackend as fake_imagebackend import nova.tests.virt.libvirt.fake_libvirt_utils as fake_libvirt_utils import nova.tests.virt.libvirt.fakelibvirt as fakelibvirt sys.modules['libvirt'] = fakelibvirt import nova.virt.libvirt.driver import nova.virt.libvirt.firewall self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.driver.imagebackend', fake_imagebackend)) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.driver.libvirt', fakelibvirt)) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.driver.libvirt_utils', fake_libvirt_utils)) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.imagebackend.libvirt_utils', fake_libvirt_utils)) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.firewall.libvirt', fakelibvirt)) self.flags(rescue_image_id="2", rescue_kernel_id="3", rescue_ramdisk_id=None, snapshots_directory='./', group='libvirt') def fake_extend(image, size): pass def fake_migrateToURI(*a): pass def fake_make_drive(_self, _path): pass def fake_get_instance_disk_info(_self, instance, xml=None, block_device_info=None): return '[]' def fake_delete_instance_files(_self, _instance): pass self.stubs.Set(nova.virt.libvirt.driver.LibvirtDriver, 'get_instance_disk_info', fake_get_instance_disk_info) self.stubs.Set(nova.virt.libvirt.driver.disk, 'extend', fake_extend) self.stubs.Set(nova.virt.libvirt.driver.LibvirtDriver, '_delete_instance_files', fake_delete_instance_files) # Like the existing fakelibvirt.migrateToURI, do nothing, # but don't fail for these tests. self.stubs.Set(nova.virt.libvirt.driver.libvirt.Domain, 'migrateToURI', fake_migrateToURI) # We can't actually make a config drive v2 because ensure_tree has # been faked out self.stubs.Set(nova.virt.configdrive.ConfigDriveBuilder, 'make_drive', fake_make_drive) def _teardown_fakelibvirt(self): # Restore libvirt if self.saved_libvirt: sys.modules['libvirt'] = self.saved_libvirt def setUp(self): super(_FakeDriverBackendTestCase, self).setUp() # TODO(sdague): it would be nice to do this in a way that only # the relevant backends where replaced for tests, though this # should not harm anything by doing it for all backends fake_image.stub_out_image_service(self.stubs) self._setup_fakelibvirt() def tearDown(self): fake_image.FakeImageService_reset() self._teardown_fakelibvirt() super(_FakeDriverBackendTestCase, self).tearDown() class VirtDriverLoaderTestCase(_FakeDriverBackendTestCase, test.TestCase): """Test that ComputeManager can successfully load both old style and new style drivers and end up with the correct final class. """ # if your driver supports being tested in a fake way, it can go here # # both long form and short form drivers are supported new_drivers = { 'nova.virt.fake.FakeDriver': 'FakeDriver', 'nova.virt.libvirt.LibvirtDriver': 'LibvirtDriver', 'fake.FakeDriver': 'FakeDriver', 'libvirt.LibvirtDriver': 'LibvirtDriver' } def test_load_new_drivers(self): for cls, driver in self.new_drivers.iteritems(): self.flags(compute_driver=cls) # NOTE(sdague) the try block is to make it easier to debug a # failure by knowing which driver broke try: cm = manager.ComputeManager() except Exception as e: self.fail("Couldn't load driver %s - %s" % (cls, e)) self.assertEqual(cm.driver.__class__.__name__, driver, "Could't load driver %s" % cls) def test_fail_to_load_new_drivers(self): self.flags(compute_driver='nova.virt.amiga') def _fake_exit(error): raise test.TestingException() self.stubs.Set(sys, 'exit', _fake_exit) self.assertRaises(test.TestingException, manager.ComputeManager) class _VirtDriverTestCase(_FakeDriverBackendTestCase): def setUp(self): super(_VirtDriverTestCase, self).setUp() self.flags(instances_path=self.useFixture(fixtures.TempDir()).path) self.connection = importutils.import_object(self.driver_module, fake.FakeVirtAPI()) self.ctxt = test_utils.get_test_admin_context() self.image_service = fake_image.FakeImageService() # NOTE(dripton): resolve_driver_format does some file reading and # writing and chowning that complicate testing too much by requiring # using real directories with proper permissions. Just stub it out # here; we test it in test_imagebackend.py self.stubs.Set(imagebackend.Image, 'resolve_driver_format', imagebackend.Image._get_driver_format) def _get_running_instance(self, obj=False): instance_ref = test_utils.get_test_instance(obj=obj) network_info = test_utils.get_test_network_info() network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \ '1.1.1.1' image_info = test_utils.get_test_image_info(None, instance_ref) self.connection.spawn(self.ctxt, instance_ref, image_info, [], 'herp', network_info=network_info) return instance_ref, network_info @catch_notimplementederror def test_init_host(self): self.connection.init_host('myhostname') @catch_notimplementederror def test_list_instances(self): self.connection.list_instances() @catch_notimplementederror def test_list_instance_uuids(self): self.connection.list_instance_uuids() @catch_notimplementederror def test_spawn(self): instance_ref, network_info = self._get_running_instance() domains = self.connection.list_instances() self.assertIn(instance_ref['name'], domains) num_instances = self.connection.get_num_instances() self.assertEqual(1, num_instances) @catch_notimplementederror def test_snapshot_not_running(self): instance_ref = test_utils.get_test_instance() img_ref = self.image_service.create(self.ctxt, {'name': 'snap-1'}) self.assertRaises(exception.InstanceNotRunning, self.connection.snapshot, self.ctxt, instance_ref, img_ref['id'], lambda *args, **kwargs: None) @catch_notimplementederror def test_snapshot_running(self): img_ref = self.image_service.create(self.ctxt, {'name': 'snap-1'}) instance_ref, network_info = self._get_running_instance() self.connection.snapshot(self.ctxt, instance_ref, img_ref['id'], lambda *args, **kwargs: None) @catch_notimplementederror def test_reboot(self): reboot_type = "SOFT" instance_ref, network_info = self._get_running_instance() self.connection.reboot(self.ctxt, instance_ref, network_info, reboot_type) @catch_notimplementederror def test_get_host_ip_addr(self): host_ip = self.connection.get_host_ip_addr() # Will raise an exception if it's not a valid IP at all ip = netaddr.IPAddress(host_ip) # For now, assume IPv4. self.assertEqual(ip.version, 4) @catch_notimplementederror def test_set_admin_password(self): instance, network_info = self._get_running_instance(obj=True) self.connection.set_admin_password(instance, 'p4ssw0rd') @catch_notimplementederror def test_inject_file(self): instance_ref, network_info = self._get_running_instance() self.connection.inject_file(instance_ref, base64.b64encode('/testfile'), base64.b64encode('testcontents')) @catch_notimplementederror def test_resume_state_on_host_boot(self): instance_ref, network_info = self._get_running_instance() self.connection.resume_state_on_host_boot(self.ctxt, instance_ref, network_info) @catch_notimplementederror def test_rescue(self): instance_ref, network_info = self._get_running_instance() self.connection.rescue(self.ctxt, instance_ref, network_info, None, '') @catch_notimplementederror def test_unrescue_unrescued_instance(self): instance_ref, network_info = self._get_running_instance() self.connection.unrescue(instance_ref, network_info) @catch_notimplementederror def test_unrescue_rescued_instance(self): instance_ref, network_info = self._get_running_instance() self.connection.rescue(self.ctxt, instance_ref, network_info, None, '') self.connection.unrescue(instance_ref, network_info) @catch_notimplementederror def test_poll_rebooting_instances(self): instances = [self._get_running_instance()] self.connection.poll_rebooting_instances(10, instances) @catch_notimplementederror def test_migrate_disk_and_power_off(self): instance_ref, network_info = self._get_running_instance() flavor_ref = test_utils.get_test_flavor() self.connection.migrate_disk_and_power_off( self.ctxt, instance_ref, 'dest_host', flavor_ref, network_info) @catch_notimplementederror def test_power_off(self): instance_ref, network_info = self._get_running_instance() self.connection.power_off(instance_ref) @catch_notimplementederror def test_power_on_running(self): instance_ref, network_info = self._get_running_instance() self.connection.power_on(self.ctxt, instance_ref, network_info, None) @catch_notimplementederror def test_power_on_powered_off(self): instance_ref, network_info = self._get_running_instance() self.connection.power_off(instance_ref) self.connection.power_on(self.ctxt, instance_ref, network_info, None) @catch_notimplementederror def test_soft_delete(self): instance_ref, network_info = self._get_running_instance(obj=True) self.connection.soft_delete(instance_ref) @catch_notimplementederror def test_restore_running(self): instance_ref, network_info = self._get_running_instance() self.connection.restore(instance_ref) @catch_notimplementederror def test_restore_soft_deleted(self): instance_ref, network_info = self._get_running_instance() self.connection.soft_delete(instance_ref) self.connection.restore(instance_ref) @catch_notimplementederror def test_pause(self): instance_ref, network_info = self._get_running_instance() self.connection.pause(instance_ref) @catch_notimplementederror def test_unpause_unpaused_instance(self): instance_ref, network_info = self._get_running_instance() self.connection.unpause(instance_ref) @catch_notimplementederror def test_unpause_paused_instance(self): instance_ref, network_info = self._get_running_instance() self.connection.pause(instance_ref) self.connection.unpause(instance_ref) @catch_notimplementederror def test_suspend(self): instance_ref, network_info = self._get_running_instance() self.connection.suspend(instance_ref) @catch_notimplementederror def test_resume_unsuspended_instance(self): instance_ref, network_info = self._get_running_instance() self.connection.resume(self.ctxt, instance_ref, network_info) @catch_notimplementederror def test_resume_suspended_instance(self): instance_ref, network_info = self._get_running_instance() self.connection.suspend(instance_ref) self.connection.resume(self.ctxt, instance_ref, network_info) @catch_notimplementederror def test_destroy_instance_nonexistent(self): fake_instance = {'id': 42, 'name': 'I just made this up!', 'uuid': 'bda5fb9e-b347-40e8-8256-42397848cb00'} network_info = test_utils.get_test_network_info() self.connection.destroy(self.ctxt, fake_instance, network_info) @catch_notimplementederror def test_destroy_instance(self): instance_ref, network_info = self._get_running_instance() self.assertIn(instance_ref['name'], self.connection.list_instances()) self.connection.destroy(self.ctxt, instance_ref, network_info) self.assertNotIn(instance_ref['name'], self.connection.list_instances()) @catch_notimplementederror def test_get_volume_connector(self): result = self.connection.get_volume_connector({'id': 'fake'}) self.assertIn('ip', result) self.assertIn('initiator', result) self.assertIn('host', result) @catch_notimplementederror def test_attach_detach_volume(self): instance_ref, network_info = self._get_running_instance() connection_info = { "driver_volume_type": "fake", "serial": "fake_serial", } self.connection.attach_volume(None, connection_info, instance_ref, '/dev/sda') self.connection.detach_volume(connection_info, instance_ref, '/dev/sda') @catch_notimplementederror def test_swap_volume(self): instance_ref, network_info = self._get_running_instance() self.connection.attach_volume(None, {'driver_volume_type': 'fake'}, instance_ref, '/dev/sda') self.connection.swap_volume({'driver_volume_type': 'fake'}, {'driver_volume_type': 'fake'}, instance_ref, '/dev/sda') @catch_notimplementederror def test_attach_detach_different_power_states(self): instance_ref, network_info = self._get_running_instance() connection_info = { "driver_volume_type": "fake", "serial": "fake_serial", } self.connection.power_off(instance_ref) self.connection.attach_volume(None, connection_info, instance_ref, '/dev/sda') bdm = { 'root_device_name': None, 'swap': None, 'ephemerals': [], 'block_device_mapping': [{ 'instance_uuid': instance_ref['uuid'], 'connection_info': {'driver_volume_type': 'fake'}, 'mount_device': '/dev/sda', 'delete_on_termination': False, 'virtual_name': None, 'snapshot_id': None, 'volume_id': 'abcdedf', 'volume_size': None, 'no_device': None }] } self.connection.power_on(self.ctxt, instance_ref, network_info, bdm) self.connection.detach_volume(connection_info, instance_ref, '/dev/sda') @catch_notimplementederror def test_get_info(self): instance_ref, network_info = self._get_running_instance() info = self.connection.get_info(instance_ref) self.assertIn('state', info) self.assertIn('max_mem', info) self.assertIn('mem', info) self.assertIn('num_cpu', info) self.assertIn('cpu_time', info) @catch_notimplementederror def test_get_info_for_unknown_instance(self): self.assertRaises(exception.NotFound, self.connection.get_info, {'name': 'I just made this name up'}) @catch_notimplementederror def test_get_diagnostics(self): instance_ref, network_info = self._get_running_instance(obj=True) self.connection.get_diagnostics(instance_ref) @catch_notimplementederror def test_block_stats(self): instance_ref, network_info = self._get_running_instance() stats = self.connection.block_stats(instance_ref['name'], 'someid') self.assertEqual(len(stats), 5) @catch_notimplementederror def test_interface_stats(self): instance_ref, network_info = self._get_running_instance() stats = self.connection.interface_stats(instance_ref['name'], 'someid') self.assertEqual(len(stats), 8) @catch_notimplementederror def test_get_console_output(self): fake_libvirt_utils.files['dummy.log'] = '' instance_ref, network_info = self._get_running_instance() console_output = self.connection.get_console_output(self.ctxt, instance_ref) self.assertIsInstance(console_output, six.string_types) @catch_notimplementederror def test_get_vnc_console(self): instance, network_info = self._get_running_instance(obj=True) vnc_console = self.connection.get_vnc_console(self.ctxt, instance) self.assertIn('internal_access_path', vnc_console) self.assertIn('host', vnc_console) self.assertIn('port', vnc_console) @catch_notimplementederror def test_get_spice_console(self): instance_ref, network_info = self._get_running_instance() spice_console = self.connection.get_spice_console(self.ctxt, instance_ref) self.assertIn('internal_access_path', spice_console) self.assertIn('host', spice_console) self.assertIn('port', spice_console) self.assertIn('tlsPort', spice_console) @catch_notimplementederror def test_get_rdp_console(self): instance_ref, network_info = self._get_running_instance() rdp_console = self.connection.get_rdp_console(self.ctxt, instance_ref) self.assertIn('internal_access_path', rdp_console) self.assertIn('host', rdp_console) self.assertIn('port', rdp_console) @catch_notimplementederror def test_get_console_pool_info(self): instance_ref, network_info = self._get_running_instance() console_pool = self.connection.get_console_pool_info(instance_ref) self.assertIn('address', console_pool) self.assertIn('username', console_pool) self.assertIn('password', console_pool) @catch_notimplementederror def test_refresh_security_group_rules(self): # FIXME: Create security group and add the instance to it instance_ref, network_info = self._get_running_instance() self.connection.refresh_security_group_rules(1) @catch_notimplementederror def test_refresh_security_group_members(self): # FIXME: Create security group and add the instance to it instance_ref, network_info = self._get_running_instance() self.connection.refresh_security_group_members(1) @catch_notimplementederror def test_refresh_instance_security_rules(self): # FIXME: Create security group and add the instance to it instance_ref, network_info = self._get_running_instance() self.connection.refresh_instance_security_rules(instance_ref) @catch_notimplementederror def test_refresh_provider_fw_rules(self): instance_ref, network_info = self._get_running_instance() self.connection.refresh_provider_fw_rules() @catch_notimplementederror def test_ensure_filtering_for_instance(self): instance = test_utils.get_test_instance(obj=True) network_info = test_utils.get_test_network_info() self.connection.ensure_filtering_rules_for_instance(instance, network_info) @catch_notimplementederror def test_unfilter_instance(self): instance_ref = test_utils.get_test_instance() network_info = test_utils.get_test_network_info() self.connection.unfilter_instance(instance_ref, network_info) @catch_notimplementederror def test_live_migration(self): instance_ref, network_info = self._get_running_instance() self.connection.live_migration(self.ctxt, instance_ref, 'otherhost', lambda *a: None, lambda *a: None) @catch_notimplementederror def _check_available_resource_fields(self, host_status): keys = ['vcpus', 'memory_mb', 'local_gb', 'vcpus_used', 'memory_mb_used', 'hypervisor_type', 'hypervisor_version', 'hypervisor_hostname', 'cpu_info', 'disk_available_least', 'supported_instances'] for key in keys: self.assertIn(key, host_status) @catch_notimplementederror def test_get_host_stats(self): host_status = self.connection.get_host_stats() self._check_available_resource_fields(host_status) self.assertIsInstance(host_status['hypervisor_version'], int) @catch_notimplementederror def test_get_available_resource(self): available_resource = self.connection.get_available_resource( 'myhostname') self._check_available_resource_fields(available_resource) @catch_notimplementederror def _check_host_cpu_status_fields(self, host_cpu_status): self.assertIn('kernel', host_cpu_status) self.assertIn('idle', host_cpu_status) self.assertIn('user', host_cpu_status) self.assertIn('iowait', host_cpu_status) self.assertIn('frequency', host_cpu_status) @catch_notimplementederror def test_get_host_cpu_stats(self): host_cpu_status = self.connection.get_host_cpu_stats() self._check_host_cpu_status_fields(host_cpu_status) @catch_notimplementederror def test_set_host_enabled(self): self.connection.set_host_enabled('a useless argument?', True) @catch_notimplementederror def test_get_host_uptime(self): self.connection.get_host_uptime('a useless argument?') @catch_notimplementederror def test_host_power_action_reboot(self): self.connection.host_power_action('a useless argument?', 'reboot') @catch_notimplementederror def test_host_power_action_shutdown(self): self.connection.host_power_action('a useless argument?', 'shutdown') @catch_notimplementederror def test_host_power_action_startup(self): self.connection.host_power_action('a useless argument?', 'startup') @catch_notimplementederror def test_add_to_aggregate(self): self.connection.add_to_aggregate(self.ctxt, 'aggregate', 'host') @catch_notimplementederror def test_remove_from_aggregate(self): self.connection.remove_from_aggregate(self.ctxt, 'aggregate', 'host') def test_events(self): got_events = [] def handler(event): got_events.append(event) self.connection.register_event_listener(handler) event1 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_STARTED) event2 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_PAUSED) self.connection.emit_event(event1) self.connection.emit_event(event2) want_events = [event1, event2] self.assertEqual(want_events, got_events) event3 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_RESUMED) event4 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_STOPPED) self.connection.emit_event(event3) self.connection.emit_event(event4) want_events = [event1, event2, event3, event4] self.assertEqual(want_events, got_events) def test_event_bad_object(self): # Passing in something which does not inherit # from virtevent.Event def handler(event): pass self.connection.register_event_listener(handler) badevent = { "foo": "bar" } self.assertRaises(ValueError, self.connection.emit_event, badevent) def test_event_bad_callback(self): # Check that if a callback raises an exception, # it does not propagate back out of the # 'emit_event' call def handler(event): raise Exception("Hit Me!") self.connection.register_event_listener(handler) event1 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_STARTED) self.connection.emit_event(event1) def test_set_bootable(self): self.assertRaises(NotImplementedError, self.connection.set_bootable, 'instance', True) class AbstractDriverTestCase(_VirtDriverTestCase, test.TestCase): def setUp(self): self.driver_module = "nova.virt.driver.ComputeDriver" super(AbstractDriverTestCase, self).setUp() class FakeConnectionTestCase(_VirtDriverTestCase, test.TestCase): def setUp(self): self.driver_module = 'nova.virt.fake.FakeDriver' fake.set_nodes(['myhostname']) super(FakeConnectionTestCase, self).setUp() def _check_available_resource_fields(self, host_status): super(FakeConnectionTestCase, self)._check_available_resource_fields( host_status) hypervisor_type = host_status['hypervisor_type'] supported_instances = host_status['supported_instances'] try: # supported_instances could be JSON wrapped supported_instances = jsonutils.loads(supported_instances) except TypeError: pass self.assertTrue(any(hypervisor_type in x for x in supported_instances)) class LibvirtConnTestCase(_VirtDriverTestCase, test.TestCase): def setUp(self): # Point _VirtDriverTestCase at the right module self.driver_module = 'nova.virt.libvirt.LibvirtDriver' super(LibvirtConnTestCase, self).setUp() self.stubs.Set(self.connection, '_set_host_enabled', mock.MagicMock()) self.useFixture(fixtures.MonkeyPatch( 'nova.context.get_admin_context', self._fake_admin_context)) def _fake_admin_context(self, *args, **kwargs): return self.ctxt def test_force_hard_reboot(self): self.flags(wait_soft_reboot_seconds=0, group='libvirt') self.test_reboot() def test_migrate_disk_and_power_off(self): # there is lack of fake stuff to execute this method. so pass. self.skipTest("Test nothing, but this method" " needed to override superclass.") def test_internal_set_host_enabled(self): self.mox.UnsetStubs() service_mock = mock.MagicMock() # Previous status of the service: disabled: False service_mock.configure_mock(disabled_reason='None', disabled=False) from nova.objects import service as service_obj with mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock): self.connection._set_host_enabled(False, 'ERROR!') self.assertTrue(service_mock.disabled) self.assertEqual(service_mock.disabled_reason, 'AUTO: ERROR!') def test_set_host_enabled_when_auto_disabled(self): self.mox.UnsetStubs() service_mock = mock.MagicMock() # Previous status of the service: disabled: True, 'AUTO: ERROR' service_mock.configure_mock(disabled_reason='AUTO: ERROR', disabled=True) from nova.objects import service as service_obj with mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock): self.connection._set_host_enabled(True) self.assertFalse(service_mock.disabled) self.assertEqual(service_mock.disabled_reason, 'None') def test_set_host_enabled_when_manually_disabled(self): self.mox.UnsetStubs() service_mock = mock.MagicMock() # Previous status of the service: disabled: True, 'Manually disabled' service_mock.configure_mock(disabled_reason='Manually disabled', disabled=True) from nova.objects import service as service_obj with mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock): self.connection._set_host_enabled(True) self.assertTrue(service_mock.disabled) self.assertEqual(service_mock.disabled_reason, 'Manually disabled') def test_set_host_enabled_dont_override_manually_disabled(self): self.mox.UnsetStubs() service_mock = mock.MagicMock() # Previous status of the service: disabled: True, 'Manually disabled' service_mock.configure_mock(disabled_reason='Manually disabled', disabled=True) from nova.objects import service as service_obj with mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock): self.connection._set_host_enabled(False, 'ERROR!') self.assertTrue(service_mock.disabled) self.assertEqual(service_mock.disabled_reason, 'Manually disabled') nova-2014.1/nova/tests/virt/xenapi/0000775000175400017540000000000012323722546020265 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/xenapi/client/0000775000175400017540000000000012323722546021543 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/xenapi/client/test_objects.py0000664000175400017540000001026012323721477024606 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova.tests.virt.xenapi import stubs from nova import utils from nova.virt.xenapi.client import objects class XenAPISessionObjectTestCase(stubs.XenAPITestBaseNoDB): def setUp(self): super(XenAPISessionObjectTestCase, self).setUp() self.session = mock.Mock() self.obj = objects.XenAPISessionObject(self.session, "FAKE") def test_call_method_via_attr(self): self.session.call_xenapi.return_value = "asdf" result = self.obj.get_X("ref") self.assertEqual(result, "asdf") self.session.call_xenapi.assert_called_once_with("FAKE.get_X", "ref") class ObjectsTestCase(stubs.XenAPITestBaseNoDB): def setUp(self): super(ObjectsTestCase, self).setUp() self.session = mock.Mock() def test_VM(self): vm = objects.VM(self.session) vm.get_X("ref") self.session.call_xenapi.assert_called_once_with("VM.get_X", "ref") def test_SR(self): sr = objects.SR(self.session) sr.get_X("ref") self.session.call_xenapi.assert_called_once_with("SR.get_X", "ref") def test_VDI(self): vdi = objects.VDI(self.session) vdi.get_X("ref") self.session.call_xenapi.assert_called_once_with("VDI.get_X", "ref") def test_VBD(self): vbd = objects.VBD(self.session) vbd.get_X("ref") self.session.call_xenapi.assert_called_once_with("VBD.get_X", "ref") def test_PBD(self): pbd = objects.PBD(self.session) pbd.get_X("ref") self.session.call_xenapi.assert_called_once_with("PBD.get_X", "ref") def test_PIF(self): pif = objects.PIF(self.session) pif.get_X("ref") self.session.call_xenapi.assert_called_once_with("PIF.get_X", "ref") def test_VLAN(self): vlan = objects.VLAN(self.session) vlan.get_X("ref") self.session.call_xenapi.assert_called_once_with("VLAN.get_X", "ref") def test_host(self): host = objects.Host(self.session) host.get_X("ref") self.session.call_xenapi.assert_called_once_with("host.get_X", "ref") def test_network(self): network = objects.Network(self.session) network.get_X("ref") self.session.call_xenapi.assert_called_once_with("network.get_X", "ref") def test_pool(self): pool = objects.Pool(self.session) pool.get_X("ref") self.session.call_xenapi.assert_called_once_with("pool.get_X", "ref") class VBDTestCase(stubs.XenAPITestBaseNoDB): def setUp(self): super(VBDTestCase, self).setUp() self.session = mock.Mock() self.session.VBD = objects.VBD(self.session) def test_plug(self): self.session.VBD.plug("vbd_ref", "vm_ref") self.session.call_xenapi.assert_called_once_with("VBD.plug", "vbd_ref") @mock.patch.object(utils, 'synchronized') def test_vbd_plug_check_synchronized(self, mock_synchronized): session = mock.Mock() self.session.VBD.plug("vbd_ref", "vm_ref") mock_synchronized.assert_called_once_with("xenapi-vbd-vm_ref") def test_unplug(self): self.session.VBD.unplug("vbd_ref", "vm_ref") self.session.call_xenapi.assert_called_once_with("VBD.unplug", "vbd_ref") @mock.patch.object(utils, 'synchronized') def test_vbd_plug_check_synchronized(self, mock_synchronized): session = mock.Mock() self.session.VBD.unplug("vbd_ref", "vm_ref") mock_synchronized.assert_called_once_with("xenapi-vbd-vm_ref") nova-2014.1/nova/tests/virt/xenapi/client/test_session.py0000664000175400017540000000520412323721477024642 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova.tests.virt.xenapi import stubs from nova.virt.xenapi.client import session class ApplySessionHelpersTestCase(stubs.XenAPITestBaseNoDB): def setUp(self): super(ApplySessionHelpersTestCase, self).setUp() self.session = mock.Mock() session.apply_session_helpers(self.session) def test_apply_session_helpers_add_VM(self): self.session.VM.get_X("ref") self.session.call_xenapi.assert_called_once_with("VM.get_X", "ref") def test_apply_session_helpers_add_SR(self): self.session.SR.get_X("ref") self.session.call_xenapi.assert_called_once_with("SR.get_X", "ref") def test_apply_session_helpers_add_VDI(self): self.session.VDI.get_X("ref") self.session.call_xenapi.assert_called_once_with("VDI.get_X", "ref") def test_apply_session_helpers_add_VBD(self): self.session.VBD.get_X("ref") self.session.call_xenapi.assert_called_once_with("VBD.get_X", "ref") def test_apply_session_helpers_add_PBD(self): self.session.PBD.get_X("ref") self.session.call_xenapi.assert_called_once_with("PBD.get_X", "ref") def test_apply_session_helpers_add_PIF(self): self.session.PIF.get_X("ref") self.session.call_xenapi.assert_called_once_with("PIF.get_X", "ref") def test_apply_session_helpers_add_VLAN(self): self.session.VLAN.get_X("ref") self.session.call_xenapi.assert_called_once_with("VLAN.get_X", "ref") def test_apply_session_helpers_add_host(self): self.session.host.get_X("ref") self.session.call_xenapi.assert_called_once_with("host.get_X", "ref") def test_apply_session_helpers_add_host(self): self.session.network.get_X("ref") self.session.call_xenapi.assert_called_once_with("network.get_X", "ref") def test_apply_session_helpers_add_pool(self): self.session.pool.get_X("ref") self.session.call_xenapi.assert_called_once_with("pool.get_X", "ref") nova-2014.1/nova/tests/virt/xenapi/client/__init__.py0000664000175400017540000000000012323721477023644 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/xenapi/test_driver.py0000664000175400017540000000707612323721477023205 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Rackspace Hosting # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import math from nova.openstack.common import units from nova.tests.virt.xenapi import stubs from nova.virt import fake from nova.virt import xenapi from nova.virt.xenapi import driver as xenapi_driver class XenAPIDriverTestCase(stubs.XenAPITestBaseNoDB): """Unit tests for Driver operations.""" def host_stats(self, refresh=True): return {'host_memory_total': 3 * units.Mi, 'host_memory_free_computed': 2 * units.Mi, 'disk_total': 4 * units.Gi, 'disk_used': 5 * units.Gi, 'host_hostname': 'somename', 'supported_instances': 'x86_64', 'host_cpu_info': {'cpu_count': 50}, 'vcpus_used': 10, 'pci_passthrough_devices': ''} def test_available_resource(self): self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) driver = xenapi.XenAPIDriver(fake.FakeVirtAPI(), False) driver._session.product_version = (6, 8, 2) self.stubs.Set(driver, 'get_host_stats', self.host_stats) resources = driver.get_available_resource(None) self.assertEqual(6008002, resources['hypervisor_version']) self.assertEqual(50, resources['vcpus']) self.assertEqual(3, resources['memory_mb']) self.assertEqual(4, resources['local_gb']) self.assertEqual(10, resources['vcpus_used']) self.assertEqual(3 - 2, resources['memory_mb_used']) self.assertEqual(5, resources['local_gb_used']) self.assertEqual('xen', resources['hypervisor_type']) self.assertEqual('somename', resources['hypervisor_hostname']) def test_overhead(self): self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) driver = xenapi.XenAPIDriver(fake.FakeVirtAPI(), False) instance = {'memory_mb': 30720, 'vcpus': 4} # expected memory overhead per: # https://wiki.openstack.org/wiki/XenServer/Overhead expected = ((instance['memory_mb'] * xenapi_driver.OVERHEAD_PER_MB) + (instance['vcpus'] * xenapi_driver.OVERHEAD_PER_VCPU) + xenapi_driver.OVERHEAD_BASE) expected = math.ceil(expected) overhead = driver.estimate_instance_overhead(instance) self.assertEqual(expected, overhead['memory_mb']) def test_set_bootable(self): self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) driver = xenapi.XenAPIDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(driver._vmops, 'set_bootable') driver._vmops.set_bootable('inst', True) self.mox.ReplayAll() driver.set_bootable('inst', True) nova-2014.1/nova/tests/virt/xenapi/test_vm_utils.py0000664000175400017540000025401612323721510023536 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import uuid from eventlet import greenthread import fixtures import mock import mox from oslo.config import cfg from nova.compute import flavors from nova.compute import power_state from nova.compute import vm_mode from nova import context from nova import exception from nova.openstack.common.gettextutils import _ from nova.openstack.common import processutils from nova.openstack.common import timeutils from nova.openstack.common import units from nova import test from nova.tests.virt.xenapi import stubs from nova.tests.virt.xenapi import test_xenapi from nova import utils from nova.virt.xenapi.client import session as xenapi_session from nova.virt.xenapi import driver as xenapi_conn from nova.virt.xenapi import fake from nova.virt.xenapi import vm_utils from nova.virt.xenapi import volume_utils CONF = cfg.CONF XENSM_TYPE = 'xensm' ISCSI_TYPE = 'iscsi' def get_fake_connection_data(sr_type): fakes = {XENSM_TYPE: {'sr_uuid': 'falseSR', 'name_label': 'fake_storage', 'name_description': 'test purposes', 'server': 'myserver', 'serverpath': '/local/scratch/myname', 'sr_type': 'nfs', 'introduce_sr_keys': ['server', 'serverpath', 'sr_type'], 'vdi_uuid': 'falseVDI'}, ISCSI_TYPE: {'volume_id': 'fake_volume_id', 'target_lun': 1, 'target_iqn': 'fake_iqn:volume-fake_volume_id', 'target_portal': u'localhost:3260', 'target_discovered': False}, } return fakes[sr_type] def _get_fake_session(error=None): session = mock.Mock() xenapi_session.apply_session_helpers(session) if error is not None: class FakeException(Exception): details = [error, "a", "b", "c"] session.XenAPI.Failure = FakeException session.call_xenapi.side_effect = FakeException return session @contextlib.contextmanager def contextified(result): yield result def _fake_noop(*args, **kwargs): return class VMUtilsTestBase(stubs.XenAPITestBaseNoDB): pass class LookupTestCase(VMUtilsTestBase): def setUp(self): super(LookupTestCase, self).setUp() self.session = self.mox.CreateMockAnything('Fake Session') self.name_label = 'my_vm' def _do_mock(self, result): self.session.call_xenapi( "VM.get_by_name_label", self.name_label).AndReturn(result) self.mox.ReplayAll() def test_normal(self): self._do_mock(['x']) result = vm_utils.lookup(self.session, self.name_label) self.assertEqual('x', result) def test_no_result(self): self._do_mock([]) result = vm_utils.lookup(self.session, self.name_label) self.assertIsNone(result) def test_too_many(self): self._do_mock(['a', 'b']) self.assertRaises(exception.InstanceExists, vm_utils.lookup, self.session, self.name_label) def test_rescue_none(self): self.session.call_xenapi( "VM.get_by_name_label", self.name_label + '-rescue').AndReturn([]) self._do_mock(['x']) result = vm_utils.lookup(self.session, self.name_label, check_rescue=True) self.assertEqual('x', result) def test_rescue_found(self): self.session.call_xenapi( "VM.get_by_name_label", self.name_label + '-rescue').AndReturn(['y']) self.mox.ReplayAll() result = vm_utils.lookup(self.session, self.name_label, check_rescue=True) self.assertEqual('y', result) def test_rescue_too_many(self): self.session.call_xenapi( "VM.get_by_name_label", self.name_label + '-rescue').AndReturn(['a', 'b', 'c']) self.mox.ReplayAll() self.assertRaises(exception.InstanceExists, vm_utils.lookup, self.session, self.name_label, check_rescue=True) class GenerateConfigDriveTestCase(VMUtilsTestBase): def test_no_admin_pass(self): instance = {} self.mox.StubOutWithMock(vm_utils, 'safe_find_sr') vm_utils.safe_find_sr('session').AndReturn('sr_ref') self.mox.StubOutWithMock(vm_utils, 'create_vdi') vm_utils.create_vdi('session', 'sr_ref', instance, 'config-2', 'configdrive', 64 * units.Mi).AndReturn('vdi_ref') self.mox.StubOutWithMock(vm_utils, 'vdi_attached_here') vm_utils.vdi_attached_here( 'session', 'vdi_ref', read_only=False).AndReturn( contextified('mounted_dev')) class FakeInstanceMetadata(object): def __init__(_self, instance, content=None, extra_md=None, network_info=None): self.assertEqual(network_info, "nw_info") def metadata_for_config_drive(_self): return [] self.useFixture(fixtures.MonkeyPatch( 'nova.api.metadata.base.InstanceMetadata', FakeInstanceMetadata)) self.mox.StubOutWithMock(utils, 'execute') utils.execute('genisoimage', '-o', mox.IgnoreArg(), '-ldots', '-allow-lowercase', '-allow-multidot', '-l', '-publisher', mox.IgnoreArg(), '-quiet', '-J', '-r', '-V', 'config-2', mox.IgnoreArg(), attempts=1, run_as_root=False).AndReturn(None) utils.execute('dd', mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), run_as_root=True).AndReturn(None) self.mox.StubOutWithMock(vm_utils, 'create_vbd') vm_utils.create_vbd('session', 'vm_ref', 'vdi_ref', mox.IgnoreArg(), bootable=False, read_only=True).AndReturn(None) self.mox.ReplayAll() # And the actual call we're testing vm_utils.generate_configdrive('session', instance, 'vm_ref', 'userdevice', "nw_info") @mock.patch.object(vm_utils, "destroy_vdi") @mock.patch.object(vm_utils, "vdi_attached_here") @mock.patch.object(vm_utils, "create_vdi") @mock.patch.object(vm_utils, "safe_find_sr") def test_vdi_cleaned_up(self, mock_find, mock_create_vdi, mock_attached, mock_destroy): mock_create_vdi.return_value = 'vdi_ref' mock_attached.side_effect = test.TestingException mock_destroy.side_effect = volume_utils.StorageError instance = {"uuid": "asdf"} self.assertRaises(test.TestingException, vm_utils.generate_configdrive, 'session', instance, 'vm_ref', 'userdevice', 'nw_info') mock_destroy.assert_called_once_with('session', 'vdi_ref') class XenAPIGetUUID(VMUtilsTestBase): def test_get_this_vm_uuid_new_kernel(self): self.mox.StubOutWithMock(vm_utils, '_get_sys_hypervisor_uuid') vm_utils._get_sys_hypervisor_uuid().AndReturn( '2f46f0f5-f14c-ef1b-1fac-9eeca0888a3f') self.mox.ReplayAll() self.assertEqual('2f46f0f5-f14c-ef1b-1fac-9eeca0888a3f', vm_utils.get_this_vm_uuid(None)) self.mox.VerifyAll() def test_get_this_vm_uuid_old_kernel_reboot(self): self.mox.StubOutWithMock(vm_utils, '_get_sys_hypervisor_uuid') self.mox.StubOutWithMock(utils, 'execute') vm_utils._get_sys_hypervisor_uuid().AndRaise( IOError(13, 'Permission denied')) utils.execute('xenstore-read', 'domid', run_as_root=True).AndReturn( ('27', '')) utils.execute('xenstore-read', '/local/domain/27/vm', run_as_root=True).AndReturn( ('/vm/2f46f0f5-f14c-ef1b-1fac-9eeca0888a3f', '')) self.mox.ReplayAll() self.assertEqual('2f46f0f5-f14c-ef1b-1fac-9eeca0888a3f', vm_utils.get_this_vm_uuid(None)) self.mox.VerifyAll() class FakeSession(object): def call_xenapi(self, *args): pass def call_plugin(self, *args): pass def call_plugin_serialized(self, plugin, fn, *args, **kwargs): pass def call_plugin_serialized_with_retry(self, plugin, fn, num_retries, callback, *args, **kwargs): pass class FetchVhdImageTestCase(VMUtilsTestBase): def setUp(self): super(FetchVhdImageTestCase, self).setUp() self.context = context.get_admin_context() self.context.auth_token = 'auth_token' self.session = FakeSession() self.instance = {"uuid": "uuid"} self.mox.StubOutWithMock(vm_utils, '_make_uuid_stack') vm_utils._make_uuid_stack().AndReturn(["uuid_stack"]) self.mox.StubOutWithMock(vm_utils, 'get_sr_path') vm_utils.get_sr_path(self.session).AndReturn('sr_path') def _stub_glance_download_vhd(self, raise_exc=None): self.mox.StubOutWithMock( self.session, 'call_plugin_serialized_with_retry') func = self.session.call_plugin_serialized_with_retry( 'glance', 'download_vhd', 0, mox.IgnoreArg(), extra_headers={'X-Service-Catalog': '[]', 'X-Auth-Token': 'auth_token', 'X-Roles': '', 'X-Tenant-Id': None, 'X-User-Id': None, 'X-Identity-Status': 'Confirmed'}, image_id='image_id', uuid_stack=["uuid_stack"], sr_path='sr_path') if raise_exc: func.AndRaise(raise_exc) else: func.AndReturn({'root': {'uuid': 'vdi'}}) def _stub_bittorrent_download_vhd(self, raise_exc=None): self.mox.StubOutWithMock( self.session, 'call_plugin_serialized') func = self.session.call_plugin_serialized( 'bittorrent', 'download_vhd', image_id='image_id', uuid_stack=["uuid_stack"], sr_path='sr_path', torrent_download_stall_cutoff=600, torrent_listen_port_start=6881, torrent_listen_port_end=6891, torrent_max_last_accessed=86400, torrent_max_seeder_processes_per_host=1, torrent_seed_chance=1.0, torrent_seed_duration=3600, torrent_url='http://foo/image_id.torrent' ) if raise_exc: func.AndRaise(raise_exc) else: func.AndReturn({'root': {'uuid': 'vdi'}}) def test_fetch_vhd_image_works_with_glance(self): self.mox.StubOutWithMock(vm_utils, '_image_uses_bittorrent') vm_utils._image_uses_bittorrent( self.context, self.instance).AndReturn(False) self._stub_glance_download_vhd() self.mox.StubOutWithMock(vm_utils, 'safe_find_sr') vm_utils.safe_find_sr(self.session).AndReturn("sr") self.mox.StubOutWithMock(vm_utils, '_scan_sr') vm_utils._scan_sr(self.session, "sr") self.mox.StubOutWithMock(vm_utils, '_check_vdi_size') vm_utils._check_vdi_size( self.context, self.session, self.instance, "vdi") self.mox.ReplayAll() self.assertEqual("vdi", vm_utils._fetch_vhd_image(self.context, self.session, self.instance, 'image_id')['root']['uuid']) self.mox.VerifyAll() def test_fetch_vhd_image_works_with_bittorrent(self): cfg.CONF.import_opt('torrent_base_url', 'nova.virt.xenapi.image.bittorrent', group='xenserver') self.flags(torrent_base_url='http://foo', group='xenserver') self.mox.StubOutWithMock(vm_utils, '_image_uses_bittorrent') vm_utils._image_uses_bittorrent( self.context, self.instance).AndReturn(True) self._stub_bittorrent_download_vhd() self.mox.StubOutWithMock(vm_utils, 'safe_find_sr') vm_utils.safe_find_sr(self.session).AndReturn("sr") self.mox.StubOutWithMock(vm_utils, '_scan_sr') vm_utils._scan_sr(self.session, "sr") self.mox.StubOutWithMock(vm_utils, '_check_vdi_size') vm_utils._check_vdi_size(self.context, self.session, self.instance, "vdi") self.mox.ReplayAll() self.assertEqual("vdi", vm_utils._fetch_vhd_image(self.context, self.session, self.instance, 'image_id')['root']['uuid']) self.mox.VerifyAll() def test_fetch_vhd_image_cleans_up_vdi_on_fail(self): self.mox.StubOutWithMock(vm_utils, '_image_uses_bittorrent') vm_utils._image_uses_bittorrent( self.context, self.instance).AndReturn(False) self._stub_glance_download_vhd() self.mox.StubOutWithMock(vm_utils, 'safe_find_sr') vm_utils.safe_find_sr(self.session).AndReturn("sr") self.mox.StubOutWithMock(vm_utils, '_scan_sr') vm_utils._scan_sr(self.session, "sr") self.mox.StubOutWithMock(vm_utils, '_check_vdi_size') vm_utils._check_vdi_size(self.context, self.session, self.instance, "vdi").AndRaise(exception.FlavorDiskTooSmall) self.mox.StubOutWithMock(self.session, 'call_xenapi') self.session.call_xenapi("VDI.get_by_uuid", "vdi").AndReturn("ref") self.mox.StubOutWithMock(vm_utils, 'destroy_vdi') vm_utils.destroy_vdi(self.session, "ref").AndRaise(volume_utils.StorageError) self.mox.ReplayAll() self.assertRaises(exception.FlavorDiskTooSmall, vm_utils._fetch_vhd_image, self.context, self.session, self.instance, 'image_id') self.mox.VerifyAll() def test_fallback_to_default_handler(self): cfg.CONF.import_opt('torrent_base_url', 'nova.virt.xenapi.image.bittorrent', group='xenserver') self.flags(torrent_base_url='http://foo', group='xenserver') self.mox.StubOutWithMock(vm_utils, '_image_uses_bittorrent') vm_utils._image_uses_bittorrent( self.context, self.instance).AndReturn(True) self._stub_bittorrent_download_vhd(raise_exc=RuntimeError) vm_utils._make_uuid_stack().AndReturn(["uuid_stack"]) vm_utils.get_sr_path(self.session).AndReturn('sr_path') self._stub_glance_download_vhd() self.mox.StubOutWithMock(vm_utils, 'safe_find_sr') vm_utils.safe_find_sr(self.session).AndReturn("sr") self.mox.StubOutWithMock(vm_utils, '_scan_sr') vm_utils._scan_sr(self.session, "sr") self.mox.StubOutWithMock(vm_utils, '_check_vdi_size') vm_utils._check_vdi_size(self.context, self.session, self.instance, "vdi") self.mox.ReplayAll() self.assertEqual("vdi", vm_utils._fetch_vhd_image(self.context, self.session, self.instance, 'image_id')['root']['uuid']) self.mox.VerifyAll() def test_default_handler_doesnt_fallback_to_itself(self): cfg.CONF.import_opt('torrent_base_url', 'nova.virt.xenapi.image.bittorrent', group='xenserver') self.flags(torrent_base_url='http://foo', group='xenserver') self.mox.StubOutWithMock(vm_utils, '_image_uses_bittorrent') vm_utils._image_uses_bittorrent( self.context, self.instance).AndReturn(False) self._stub_glance_download_vhd(raise_exc=RuntimeError) self.mox.ReplayAll() self.assertRaises(RuntimeError, vm_utils._fetch_vhd_image, self.context, self.session, self.instance, 'image_id') self.mox.VerifyAll() class TestImageCompression(VMUtilsTestBase): def test_image_compression(self): # Testing for nova.conf, too low, negative, and a correct value. self.assertIsNone(vm_utils.get_compression_level()) self.flags(image_compression_level=0, group='xenserver') self.assertIsNone(vm_utils.get_compression_level()) self.flags(image_compression_level=-6, group='xenserver') self.assertIsNone(vm_utils.get_compression_level()) self.flags(image_compression_level=6, group='xenserver') self.assertEqual(vm_utils.get_compression_level(), 6) class ResizeHelpersTestCase(VMUtilsTestBase): def test_repair_filesystem(self): self.mox.StubOutWithMock(utils, 'execute') utils.execute('e2fsck', '-f', "-y", "fakepath", run_as_root=True, check_exit_code=[0, 1, 2]).AndReturn( ("size is: 42", "")) self.mox.ReplayAll() vm_utils._repair_filesystem("fakepath") def _call_tune2fs_remove_journal(self, path): utils.execute("tune2fs", "-O ^has_journal", path, run_as_root=True) def _call_tune2fs_add_journal(self, path): utils.execute("tune2fs", "-j", path, run_as_root=True) def _call_parted(self, path, start, end): utils.execute('parted', '--script', path, 'rm', '1', run_as_root=True) utils.execute('parted', '--script', path, 'mkpart', 'primary', '%ds' % start, '%ds' % end, run_as_root=True) def test_resize_part_and_fs_down_succeeds(self): self.mox.StubOutWithMock(vm_utils, "_repair_filesystem") self.mox.StubOutWithMock(utils, 'execute') dev_path = "/dev/fake" partition_path = "%s1" % dev_path vm_utils._repair_filesystem(partition_path) self._call_tune2fs_remove_journal(partition_path) utils.execute("resize2fs", partition_path, "10s", run_as_root=True) self._call_parted(dev_path, 0, 9) self._call_tune2fs_add_journal(partition_path) self.mox.ReplayAll() vm_utils._resize_part_and_fs("fake", 0, 20, 10) def test_log_progress_if_required(self): self.mox.StubOutWithMock(vm_utils.LOG, "debug") vm_utils.LOG.debug(_("Sparse copy in progress, " "%(complete_pct).2f%% complete. " "%(left)s bytes left to copy"), {"complete_pct": 50.0, "left": 1}) current = timeutils.utcnow() timeutils.set_time_override(current) timeutils.advance_time_seconds(vm_utils.PROGRESS_INTERVAL_SECONDS + 1) self.mox.ReplayAll() vm_utils._log_progress_if_required(1, current, 2) def test_log_progress_if_not_required(self): self.mox.StubOutWithMock(vm_utils.LOG, "debug") current = timeutils.utcnow() timeutils.set_time_override(current) timeutils.advance_time_seconds(vm_utils.PROGRESS_INTERVAL_SECONDS - 1) self.mox.ReplayAll() vm_utils._log_progress_if_required(1, current, 2) def test_resize_part_and_fs_down_fails_disk_too_big(self): self.mox.StubOutWithMock(vm_utils, "_repair_filesystem") self.mox.StubOutWithMock(utils, 'execute') dev_path = "/dev/fake" partition_path = "%s1" % dev_path new_sectors = 10 vm_utils._repair_filesystem(partition_path) self._call_tune2fs_remove_journal(partition_path) mobj = utils.execute("resize2fs", partition_path, "%ss" % new_sectors, run_as_root=True) mobj.AndRaise(processutils.ProcessExecutionError) self.mox.ReplayAll() self.assertRaises(exception.ResizeError, vm_utils._resize_part_and_fs, "fake", 0, 20, 10) def test_resize_part_and_fs_up_succeeds(self): self.mox.StubOutWithMock(vm_utils, "_repair_filesystem") self.mox.StubOutWithMock(utils, 'execute') dev_path = "/dev/fake" partition_path = "%s1" % dev_path vm_utils._repair_filesystem(partition_path) self._call_tune2fs_remove_journal(partition_path) self._call_parted(dev_path, 0, 29) utils.execute("resize2fs", partition_path, run_as_root=True) self._call_tune2fs_add_journal(partition_path) self.mox.ReplayAll() vm_utils._resize_part_and_fs("fake", 0, 20, 30) def test_resize_disk_throws_on_zero_size(self): self.assertRaises(exception.ResizeError, vm_utils.resize_disk, "session", "instance", "vdi_ref", {"root_gb": 0}) def test_auto_config_disk_returns_early_on_zero_size(self): vm_utils.try_auto_configure_disk("bad_session", "bad_vdi_ref", 0) class CheckVDISizeTestCase(VMUtilsTestBase): def setUp(self): super(CheckVDISizeTestCase, self).setUp() self.context = 'fakecontext' self.session = 'fakesession' self.instance = dict(uuid='fakeinstance') self.vdi_uuid = 'fakeuuid' def test_not_too_large(self): self.mox.StubOutWithMock(flavors, 'extract_flavor') flavors.extract_flavor(self.instance).AndReturn( dict(root_gb=1)) self.mox.StubOutWithMock(vm_utils, '_get_vdi_chain_size') vm_utils._get_vdi_chain_size(self.session, self.vdi_uuid).AndReturn(1073741824) self.mox.ReplayAll() vm_utils._check_vdi_size(self.context, self.session, self.instance, self.vdi_uuid) def test_too_large(self): self.mox.StubOutWithMock(flavors, 'extract_flavor') flavors.extract_flavor(self.instance).AndReturn( dict(root_gb=1)) self.mox.StubOutWithMock(vm_utils, '_get_vdi_chain_size') vm_utils._get_vdi_chain_size(self.session, self.vdi_uuid).AndReturn(11811160065) # 10GB overhead allowed self.mox.ReplayAll() self.assertRaises(exception.FlavorDiskTooSmall, vm_utils._check_vdi_size, self.context, self.session, self.instance, self.vdi_uuid) def test_zero_root_gb_disables_check(self): self.mox.StubOutWithMock(flavors, 'extract_flavor') flavors.extract_flavor(self.instance).AndReturn( dict(root_gb=0)) self.mox.ReplayAll() vm_utils._check_vdi_size(self.context, self.session, self.instance, self.vdi_uuid) class GetInstanceForVdisForSrTestCase(VMUtilsTestBase): def setUp(self): super(GetInstanceForVdisForSrTestCase, self).setUp() self.flags(disable_process_locking=True, instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') def test_get_instance_vdis_for_sr(self): vm_ref = fake.create_vm("foo", "Running") sr_ref = fake.create_sr() vdi_1 = fake.create_vdi('vdiname1', sr_ref) vdi_2 = fake.create_vdi('vdiname2', sr_ref) for vdi_ref in [vdi_1, vdi_2]: fake.create_vbd(vm_ref, vdi_ref) stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) result = list(vm_utils.get_instance_vdis_for_sr( driver._session, vm_ref, sr_ref)) self.assertEqual([vdi_1, vdi_2], result) def test_get_instance_vdis_for_sr_no_vbd(self): vm_ref = fake.create_vm("foo", "Running") sr_ref = fake.create_sr() stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) result = list(vm_utils.get_instance_vdis_for_sr( driver._session, vm_ref, sr_ref)) self.assertEqual([], result) def test_get_vdi_uuid_for_volume_with_sr_uuid(self): connection_data = get_fake_connection_data(XENSM_TYPE) stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) vdi_uuid = vm_utils.get_vdi_uuid_for_volume( driver._session, connection_data) self.assertEqual(vdi_uuid, 'falseVDI') def test_get_vdi_uuid_for_volume_failure(self): stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) def bad_introduce_sr(session, sr_uuid, label, sr_params): return None self.stubs.Set(volume_utils, 'introduce_sr', bad_introduce_sr) connection_data = get_fake_connection_data(XENSM_TYPE) self.assertRaises(exception.NovaException, vm_utils.get_vdi_uuid_for_volume, driver._session, connection_data) def test_get_vdi_uuid_for_volume_from_iscsi_vol_missing_sr_uuid(self): connection_data = get_fake_connection_data(ISCSI_TYPE) stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) vdi_uuid = vm_utils.get_vdi_uuid_for_volume( driver._session, connection_data) self.assertIsNotNone(vdi_uuid) class VMRefOrRaiseVMFoundTestCase(VMUtilsTestBase): def test_lookup_call(self): mock = mox.Mox() mock.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup('session', 'somename').AndReturn('ignored') mock.ReplayAll() vm_utils.vm_ref_or_raise('session', 'somename') mock.VerifyAll() def test_return_value(self): mock = mox.Mox() mock.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn('vmref') mock.ReplayAll() self.assertEqual( 'vmref', vm_utils.vm_ref_or_raise('session', 'somename')) mock.VerifyAll() class VMRefOrRaiseVMNotFoundTestCase(VMUtilsTestBase): def test_exception_raised(self): mock = mox.Mox() mock.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup('session', 'somename').AndReturn(None) mock.ReplayAll() self.assertRaises( exception.InstanceNotFound, lambda: vm_utils.vm_ref_or_raise('session', 'somename') ) mock.VerifyAll() def test_exception_msg_contains_vm_name(self): mock = mox.Mox() mock.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup('session', 'somename').AndReturn(None) mock.ReplayAll() try: vm_utils.vm_ref_or_raise('session', 'somename') except exception.InstanceNotFound as e: self.assertTrue( 'somename' in str(e)) mock.VerifyAll() class BittorrentTestCase(VMUtilsTestBase): def setUp(self): super(BittorrentTestCase, self).setUp() self.context = context.get_admin_context() def test_image_uses_bittorrent(self): instance = {'system_metadata': {'image_bittorrent': True}} self.flags(torrent_images='some', group='xenserver') self.assertTrue(vm_utils._image_uses_bittorrent(self.context, instance)) def _test_create_image(self, cache_type): instance = {'system_metadata': {'image_cache_in_nova': True}} self.flags(cache_images=cache_type, group='xenserver') was = {'called': None} def fake_create_cached_image(*args): was['called'] = 'some' return {} self.stubs.Set(vm_utils, '_create_cached_image', fake_create_cached_image) def fake_fetch_image(*args): was['called'] = 'none' return {} self.stubs.Set(vm_utils, '_fetch_image', fake_fetch_image) vm_utils._create_image(self.context, None, instance, 'foo', 'bar', 'baz') self.assertEqual(was['called'], cache_type) def test_create_image_cached(self): self._test_create_image('some') def test_create_image_uncached(self): self._test_create_image('none') class ShutdownTestCase(VMUtilsTestBase): def test_hardshutdown_should_return_true_when_vm_is_shutdown(self): self.mock = mox.Mox() session = FakeSession() instance = "instance" vm_ref = "vm-ref" self.mock.StubOutWithMock(vm_utils, 'is_vm_shutdown') vm_utils.is_vm_shutdown(session, vm_ref).AndReturn(True) self.mock.StubOutWithMock(vm_utils, 'LOG') self.assertTrue(vm_utils.hard_shutdown_vm( session, instance, vm_ref)) def test_cleanshutdown_should_return_true_when_vm_is_shutdown(self): self.mock = mox.Mox() session = FakeSession() instance = "instance" vm_ref = "vm-ref" self.mock.StubOutWithMock(vm_utils, 'is_vm_shutdown') vm_utils.is_vm_shutdown(session, vm_ref).AndReturn(True) self.mock.StubOutWithMock(vm_utils, 'LOG') self.assertTrue(vm_utils.clean_shutdown_vm( session, instance, vm_ref)) class CreateVBDTestCase(VMUtilsTestBase): def setUp(self): super(CreateVBDTestCase, self).setUp() self.session = FakeSession() self.mock = mox.Mox() self.mock.StubOutWithMock(self.session, 'call_xenapi') self.vbd_rec = self._generate_vbd_rec() def _generate_vbd_rec(self): vbd_rec = {} vbd_rec['VM'] = 'vm_ref' vbd_rec['VDI'] = 'vdi_ref' vbd_rec['userdevice'] = '0' vbd_rec['bootable'] = False vbd_rec['mode'] = 'RW' vbd_rec['type'] = 'disk' vbd_rec['unpluggable'] = True vbd_rec['empty'] = False vbd_rec['other_config'] = {} vbd_rec['qos_algorithm_type'] = '' vbd_rec['qos_algorithm_params'] = {} vbd_rec['qos_supported_algorithms'] = [] return vbd_rec def test_create_vbd_default_args(self): self.session.call_xenapi('VBD.create', self.vbd_rec).AndReturn("vbd_ref") self.mock.ReplayAll() result = vm_utils.create_vbd(self.session, "vm_ref", "vdi_ref", 0) self.assertEqual(result, "vbd_ref") self.mock.VerifyAll() def test_create_vbd_osvol(self): self.session.call_xenapi('VBD.create', self.vbd_rec).AndReturn("vbd_ref") self.session.call_xenapi('VBD.add_to_other_config', "vbd_ref", "osvol", "True") self.mock.ReplayAll() result = vm_utils.create_vbd(self.session, "vm_ref", "vdi_ref", 0, osvol=True) self.assertEqual(result, "vbd_ref") self.mock.VerifyAll() def test_create_vbd_extra_args(self): self.vbd_rec['VDI'] = 'OpaqueRef:NULL' self.vbd_rec['type'] = 'a' self.vbd_rec['mode'] = 'RO' self.vbd_rec['bootable'] = True self.vbd_rec['empty'] = True self.vbd_rec['unpluggable'] = False self.session.call_xenapi('VBD.create', self.vbd_rec).AndReturn("vbd_ref") self.mock.ReplayAll() result = vm_utils.create_vbd(self.session, "vm_ref", None, 0, vbd_type="a", read_only=True, bootable=True, empty=True, unpluggable=False) self.assertEqual(result, "vbd_ref") self.mock.VerifyAll() def test_attach_cd(self): self.mock.StubOutWithMock(vm_utils, 'create_vbd') vm_utils.create_vbd(self.session, "vm_ref", None, 1, vbd_type='cd', read_only=True, bootable=True, empty=True, unpluggable=False).AndReturn("vbd_ref") self.session.call_xenapi('VBD.insert', "vbd_ref", "vdi_ref") self.mock.ReplayAll() result = vm_utils.attach_cd(self.session, "vm_ref", "vdi_ref", 1) self.assertEqual(result, "vbd_ref") self.mock.VerifyAll() class UnplugVbdTestCase(VMUtilsTestBase): @mock.patch.object(greenthread, 'sleep') def test_unplug_vbd_works(self, mock_sleep): session = _get_fake_session() vbd_ref = "vbd_ref" vm_ref = 'vm_ref' vm_utils.unplug_vbd(session, vbd_ref, vm_ref) session.call_xenapi.assert_called_once_with('VBD.unplug', vbd_ref) self.assertEqual(0, mock_sleep.call_count) def test_unplug_vbd_raises_unexpected_error(self): session = _get_fake_session() vbd_ref = "vbd_ref" vm_ref = 'vm_ref' session.call_xenapi.side_effect = test.TestingException() self.assertRaises(test.TestingException, vm_utils.unplug_vbd, session, vm_ref, vbd_ref) self.assertEqual(1, session.call_xenapi.call_count) def test_unplug_vbd_already_detached_works(self): error = "DEVICE_ALREADY_DETACHED" session = _get_fake_session(error) vbd_ref = "vbd_ref" vm_ref = 'vm_ref' vm_utils.unplug_vbd(session, vbd_ref, vm_ref) self.assertEqual(1, session.call_xenapi.call_count) def test_unplug_vbd_already_raises_unexpected_xenapi_error(self): session = _get_fake_session("") vbd_ref = "vbd_ref" vm_ref = 'vm_ref' self.assertRaises(volume_utils.StorageError, vm_utils.unplug_vbd, session, vbd_ref, vm_ref) self.assertEqual(1, session.call_xenapi.call_count) def _test_uplug_vbd_retries(self, mock_sleep, error): session = _get_fake_session(error) vbd_ref = "vbd_ref" vm_ref = 'vm_ref' self.assertRaises(volume_utils.StorageError, vm_utils.unplug_vbd, session, vm_ref, vbd_ref) self.assertEqual(11, session.call_xenapi.call_count) self.assertEqual(10, mock_sleep.call_count) @mock.patch.object(greenthread, 'sleep') def test_uplug_vbd_retries_on_rejected(self, mock_sleep): self._test_uplug_vbd_retries(mock_sleep, "DEVICE_DETACH_REJECTED") @mock.patch.object(greenthread, 'sleep') def test_uplug_vbd_retries_on_internal_error(self, mock_sleep): self._test_uplug_vbd_retries(mock_sleep, "INTERNAL_ERROR") class VDIOtherConfigTestCase(VMUtilsTestBase): """Tests to ensure that the code is populating VDI's `other_config` attribute with the correct metadta. """ def setUp(self): super(VDIOtherConfigTestCase, self).setUp() class _FakeSession(): def call_xenapi(self, operation, *args, **kwargs): # VDI.add_to_other_config -> VDI_add_to_other_config method = getattr(self, operation.replace('.', '_'), None) if method: return method(*args, **kwargs) self.operation = operation self.args = args self.kwargs = kwargs self.session = _FakeSession() self.context = context.get_admin_context() self.fake_instance = {'uuid': 'aaaa-bbbb-cccc-dddd', 'name': 'myinstance'} def test_create_vdi(self): # Some images are registered with XenServer explicitly by calling # `create_vdi` vm_utils.create_vdi(self.session, 'sr_ref', self.fake_instance, 'myvdi', 'root', 1024, read_only=True) expected = {'nova_disk_type': 'root', 'nova_instance_uuid': 'aaaa-bbbb-cccc-dddd'} self.assertEqual(expected, self.session.args[0]['other_config']) def test_create_image(self): # Other images are registered implicitly when they are dropped into # the SR by a dom0 plugin or some other process self.flags(cache_images='none', group='xenserver') def fake_fetch_image(*args): return {'root': {'uuid': 'fake-uuid'}} self.stubs.Set(vm_utils, '_fetch_image', fake_fetch_image) other_config = {} def VDI_add_to_other_config(ref, key, value): other_config[key] = value # Stubbing on the session object and not class so we don't pollute # other tests self.session.VDI_add_to_other_config = VDI_add_to_other_config self.session.VDI_get_other_config = lambda vdi: {} vm_utils._create_image(self.context, self.session, self.fake_instance, 'myvdi', 'image1', vm_utils.ImageType.DISK_VHD) expected = {'nova_disk_type': 'root', 'nova_instance_uuid': 'aaaa-bbbb-cccc-dddd'} self.assertEqual(expected, other_config) def test_import_migrated_vhds(self): # Migrated images should preserve the `other_config` other_config = {} def VDI_add_to_other_config(ref, key, value): other_config[key] = value def call_plugin_serialized(*args, **kwargs): return {'root': {'uuid': 'aaaa-bbbb-cccc-dddd'}} # Stubbing on the session object and not class so we don't pollute # other tests self.session.VDI_add_to_other_config = VDI_add_to_other_config self.session.VDI_get_other_config = lambda vdi: {} self.session.call_plugin_serialized = call_plugin_serialized self.stubs.Set(vm_utils, 'get_sr_path', lambda *a, **k: None) self.stubs.Set(vm_utils, 'scan_default_sr', lambda *a, **k: None) vm_utils._import_migrated_vhds(self.session, self.fake_instance, "disk_label", "root", "vdi_label") expected = {'nova_disk_type': 'root', 'nova_instance_uuid': 'aaaa-bbbb-cccc-dddd'} self.assertEqual(expected, other_config) class GenerateDiskTestCase(VMUtilsTestBase): def setUp(self): super(GenerateDiskTestCase, self).setUp() self.flags(disable_process_locking=True, instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) self.session = driver._session self.session.is_local_connection = False self.vm_ref = fake.create_vm("foo", "Running") def tearDown(self): super(GenerateDiskTestCase, self).tearDown() fake.destroy_vm(self.vm_ref) def _expect_parted_calls(self): self.mox.StubOutWithMock(utils, "execute") self.mox.StubOutWithMock(utils, "trycmd") self.mox.StubOutWithMock(vm_utils, "destroy_vdi") self.mox.StubOutWithMock(vm_utils.os.path, "exists") if self.session.is_local_connection: utils.execute('parted', '--script', '/dev/fakedev', 'mklabel', 'msdos', check_exit_code=False, run_as_root=True) utils.execute('parted', '--script', '/dev/fakedev', '--', 'mkpart', 'primary', '0', '-0', check_exit_code=False, run_as_root=True) vm_utils.os.path.exists('/dev/mapper/fakedev1').AndReturn(True) utils.trycmd('kpartx', '-a', '/dev/fakedev', discard_warnings=True, run_as_root=True) else: utils.execute('parted', '--script', '/dev/fakedev', 'mklabel', 'msdos', check_exit_code=True, run_as_root=True) utils.execute('parted', '--script', '/dev/fakedev', '--', 'mkpart', 'primary', '0', '-0', check_exit_code=True, run_as_root=True) def _check_vdi(self, vdi_ref, check_attached=True): vdi_rec = self.session.call_xenapi("VDI.get_record", vdi_ref) self.assertEqual(str(10 * units.Mi), vdi_rec["virtual_size"]) if check_attached: vbd_ref = vdi_rec["VBDs"][0] vbd_rec = self.session.call_xenapi("VBD.get_record", vbd_ref) self.assertEqual(self.vm_ref, vbd_rec['VM']) else: self.assertEqual(0, len(vdi_rec["VBDs"])) @test_xenapi.stub_vm_utils_with_vdi_attached_here def test_generate_disk_with_no_fs_given(self): self._expect_parted_calls() self.mox.ReplayAll() vdi_ref = vm_utils._generate_disk(self.session, {"uuid": "fake_uuid"}, self.vm_ref, "2", "name", "user", 10, None) self._check_vdi(vdi_ref) @test_xenapi.stub_vm_utils_with_vdi_attached_here def test_generate_disk_swap(self): self._expect_parted_calls() utils.execute('mkswap', '/dev/fakedev1', run_as_root=True) self.mox.ReplayAll() vdi_ref = vm_utils._generate_disk(self.session, {"uuid": "fake_uuid"}, self.vm_ref, "2", "name", "swap", 10, "linux-swap") self._check_vdi(vdi_ref) @test_xenapi.stub_vm_utils_with_vdi_attached_here def test_generate_disk_ephemeral(self): self._expect_parted_calls() utils.execute('mkfs', '-t', 'ext4', '/dev/fakedev1', run_as_root=True) self.mox.ReplayAll() vdi_ref = vm_utils._generate_disk(self.session, {"uuid": "fake_uuid"}, self.vm_ref, "2", "name", "ephemeral", 10, "ext4") self._check_vdi(vdi_ref) @test_xenapi.stub_vm_utils_with_vdi_attached_here def test_generate_disk_ensure_cleanup_called(self): self._expect_parted_calls() utils.execute('mkfs', '-t', 'ext4', '/dev/fakedev1', run_as_root=True).AndRaise(test.TestingException) vm_utils.destroy_vdi(self.session, mox.IgnoreArg()).AndRaise(volume_utils.StorageError) self.mox.ReplayAll() self.assertRaises(test.TestingException, vm_utils._generate_disk, self.session, {"uuid": "fake_uuid"}, self.vm_ref, "2", "name", "ephemeral", 10, "ext4") @test_xenapi.stub_vm_utils_with_vdi_attached_here def test_generate_disk_ephemeral_local_not_attached(self): self.session.is_local_connection = True self._expect_parted_calls() utils.execute('mkfs', '-t', 'ext4', '/dev/mapper/fakedev1', run_as_root=True) self.mox.ReplayAll() vdi_ref = vm_utils._generate_disk(self.session, {"uuid": "fake_uuid"}, None, "2", "name", "ephemeral", 10, "ext4") self._check_vdi(vdi_ref, check_attached=False) class GenerateEphemeralTestCase(VMUtilsTestBase): def setUp(self): super(GenerateEphemeralTestCase, self).setUp() self.session = "session" self.instance = "instance" self.vm_ref = "vm_ref" self.name_label = "name" self.ephemeral_name_label = "name ephemeral" self.userdevice = 4 self.mox.StubOutWithMock(vm_utils, "_generate_disk") self.mox.StubOutWithMock(vm_utils, "safe_destroy_vdis") def test_get_ephemeral_disk_sizes_simple(self): result = vm_utils.get_ephemeral_disk_sizes(20) expected = [20] self.assertEqual(expected, list(result)) def test_get_ephemeral_disk_sizes_three_disks_2000(self): result = vm_utils.get_ephemeral_disk_sizes(4030) expected = [2000, 2000, 30] self.assertEqual(expected, list(result)) def test_get_ephemeral_disk_sizes_two_disks_1024(self): result = vm_utils.get_ephemeral_disk_sizes(2048) expected = [1024, 1024] self.assertEqual(expected, list(result)) def _expect_generate_disk(self, size, device, name_label): vm_utils._generate_disk(self.session, self.instance, self.vm_ref, str(device), name_label, 'ephemeral', size * 1024, None).AndReturn(device) def test_generate_ephemeral_adds_one_disk(self): self._expect_generate_disk(20, self.userdevice, self.ephemeral_name_label) self.mox.ReplayAll() vm_utils.generate_ephemeral(self.session, self.instance, self.vm_ref, str(self.userdevice), self.name_label, 20) def test_generate_ephemeral_adds_multiple_disks(self): self._expect_generate_disk(2000, self.userdevice, self.ephemeral_name_label) self._expect_generate_disk(2000, self.userdevice + 1, self.ephemeral_name_label + " (1)") self._expect_generate_disk(30, self.userdevice + 2, self.ephemeral_name_label + " (2)") self.mox.ReplayAll() vm_utils.generate_ephemeral(self.session, self.instance, self.vm_ref, str(self.userdevice), self.name_label, 4030) def test_generate_ephemeral_cleans_up_on_error(self): self._expect_generate_disk(1024, self.userdevice, self.ephemeral_name_label) self._expect_generate_disk(1024, self.userdevice + 1, self.ephemeral_name_label + " (1)") vm_utils._generate_disk(self.session, self.instance, self.vm_ref, str(self.userdevice + 2), "name ephemeral (2)", 'ephemeral', units.Mi, None).AndRaise(exception.NovaException) vm_utils.safe_destroy_vdis(self.session, [4, 5]) self.mox.ReplayAll() self.assertRaises(exception.NovaException, vm_utils.generate_ephemeral, self.session, self.instance, self.vm_ref, str(self.userdevice), self.name_label, 4096) class FakeFile(object): def __init__(self): self._file_operations = [] def seek(self, offset): self._file_operations.append((self.seek, offset)) class StreamDiskTestCase(VMUtilsTestBase): def setUp(self): import __builtin__ super(StreamDiskTestCase, self).setUp() self.mox.StubOutWithMock(vm_utils.utils, 'make_dev_path') self.mox.StubOutWithMock(vm_utils.utils, 'temporary_chown') self.mox.StubOutWithMock(vm_utils, '_write_partition') # NOTE(matelakat): This might hide the fail reason, as test runners # are unhappy with a mocked out open. self.mox.StubOutWithMock(__builtin__, 'open') self.image_service_func = self.mox.CreateMockAnything() def test_non_ami(self): fake_file = FakeFile() vm_utils.utils.make_dev_path('dev').AndReturn('some_path') vm_utils.utils.temporary_chown( 'some_path').AndReturn(contextified(None)) open('some_path', 'wb').AndReturn(contextified(fake_file)) self.image_service_func(fake_file) self.mox.ReplayAll() vm_utils._stream_disk("session", self.image_service_func, vm_utils.ImageType.KERNEL, None, 'dev') self.assertEqual([(fake_file.seek, 0)], fake_file._file_operations) def test_ami_disk(self): fake_file = FakeFile() vm_utils._write_partition("session", 100, 'dev') vm_utils.utils.make_dev_path('dev').AndReturn('some_path') vm_utils.utils.temporary_chown( 'some_path').AndReturn(contextified(None)) open('some_path', 'wb').AndReturn(contextified(fake_file)) self.image_service_func(fake_file) self.mox.ReplayAll() vm_utils._stream_disk("session", self.image_service_func, vm_utils.ImageType.DISK, 100, 'dev') self.assertEqual( [(fake_file.seek, vm_utils.MBR_SIZE_BYTES)], fake_file._file_operations) class VMUtilsSRPath(VMUtilsTestBase): def setUp(self): super(VMUtilsSRPath, self).setUp() self.flags(disable_process_locking=True, instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) self.session = driver._session self.session.is_local_connection = False def test_defined(self): self.mox.StubOutWithMock(vm_utils, "safe_find_sr") self.mox.StubOutWithMock(self.session, "call_xenapi") vm_utils.safe_find_sr(self.session).AndReturn("sr_ref") self.session.host_ref = "host_ref" self.session.call_xenapi('PBD.get_all_records_where', 'field "host"="host_ref" and field "SR"="sr_ref"').AndReturn( {'pbd_ref': {'device_config': {'path': 'sr_path'}}}) self.mox.ReplayAll() self.assertEqual(vm_utils.get_sr_path(self.session), "sr_path") def test_default(self): self.mox.StubOutWithMock(vm_utils, "safe_find_sr") self.mox.StubOutWithMock(self.session, "call_xenapi") vm_utils.safe_find_sr(self.session).AndReturn("sr_ref") self.session.host_ref = "host_ref" self.session.call_xenapi('PBD.get_all_records_where', 'field "host"="host_ref" and field "SR"="sr_ref"').AndReturn( {'pbd_ref': {'device_config': {}}}) self.session.call_xenapi("SR.get_record", "sr_ref").AndReturn( {'uuid': 'sr_uuid', 'type': 'ext'}) self.mox.ReplayAll() self.assertEqual(vm_utils.get_sr_path(self.session), "/var/run/sr-mount/sr_uuid") class CreateKernelRamdiskTestCase(VMUtilsTestBase): def setUp(self): super(CreateKernelRamdiskTestCase, self).setUp() self.context = "context" self.session = FakeSession() self.instance = {"kernel_id": None, "ramdisk_id": None} self.name_label = "name" self.mox.StubOutWithMock(self.session, "call_plugin") self.mox.StubOutWithMock(uuid, "uuid4") self.mox.StubOutWithMock(vm_utils, "_fetch_disk_image") def test_create_kernel_and_ramdisk_no_create(self): self.mox.ReplayAll() result = vm_utils.create_kernel_and_ramdisk(self.context, self.session, self.instance, self.name_label) self.assertEqual((None, None), result) def test_create_kernel_and_ramdisk_create_both_cached(self): kernel_id = "kernel" ramdisk_id = "ramdisk" self.instance["kernel_id"] = kernel_id self.instance["ramdisk_id"] = ramdisk_id args_kernel = {} args_kernel['cached-image'] = kernel_id args_kernel['new-image-uuid'] = "fake_uuid1" uuid.uuid4().AndReturn("fake_uuid1") self.session.call_plugin('kernel', 'create_kernel_ramdisk', args_kernel).AndReturn("k") args_ramdisk = {} args_ramdisk['cached-image'] = ramdisk_id args_ramdisk['new-image-uuid'] = "fake_uuid2" uuid.uuid4().AndReturn("fake_uuid2") self.session.call_plugin('kernel', 'create_kernel_ramdisk', args_ramdisk).AndReturn("r") self.mox.ReplayAll() result = vm_utils.create_kernel_and_ramdisk(self.context, self.session, self.instance, self.name_label) self.assertEqual(("k", "r"), result) def test_create_kernel_and_ramdisk_create_kernel_not_cached(self): kernel_id = "kernel" self.instance["kernel_id"] = kernel_id args_kernel = {} args_kernel['cached-image'] = kernel_id args_kernel['new-image-uuid'] = "fake_uuid1" uuid.uuid4().AndReturn("fake_uuid1") self.session.call_plugin('kernel', 'create_kernel_ramdisk', args_kernel).AndReturn("") kernel = {"kernel": {"file": "k"}} vm_utils._fetch_disk_image(self.context, self.session, self.instance, self.name_label, kernel_id, 0).AndReturn(kernel) self.mox.ReplayAll() result = vm_utils.create_kernel_and_ramdisk(self.context, self.session, self.instance, self.name_label) self.assertEqual(("k", None), result) class ScanSrTestCase(VMUtilsTestBase): @mock.patch.object(vm_utils, "_scan_sr") @mock.patch.object(vm_utils, "safe_find_sr") def test_scan_default_sr(self, mock_safe_find_sr, mock_scan_sr): mock_safe_find_sr.return_value = "sr_ref" self.assertEqual("sr_ref", vm_utils.scan_default_sr("fake_session")) mock_scan_sr.assert_called_once_with("fake_session", "sr_ref") def test_scan_sr_works(self): session = mock.Mock() vm_utils._scan_sr(session, "sr_ref") session.call_xenapi.assert_called_once_with('SR.scan', "sr_ref") def test_scan_sr_unknown_error_fails_once(self): session = mock.Mock() session.call_xenapi.side_effect = test.TestingException self.assertRaises(test.TestingException, vm_utils._scan_sr, session, "sr_ref") session.call_xenapi.assert_called_once_with('SR.scan', "sr_ref") @mock.patch.object(greenthread, 'sleep') def test_scan_sr_known_error_retries_then_throws(self, mock_sleep): session = mock.Mock() class FakeException(Exception): details = ['SR_BACKEND_FAILURE_40', "", "", ""] session.XenAPI.Failure = FakeException session.call_xenapi.side_effect = FakeException self.assertRaises(FakeException, vm_utils._scan_sr, session, "sr_ref") session.call_xenapi.assert_called_with('SR.scan', "sr_ref") self.assertEqual(4, session.call_xenapi.call_count) mock_sleep.assert_has_calls([mock.call(2), mock.call(4), mock.call(8)]) @mock.patch.object(greenthread, 'sleep') def test_scan_sr_known_error_retries_then_succeeds(self, mock_sleep): session = mock.Mock() class FakeException(Exception): details = ['SR_BACKEND_FAILURE_40', "", "", ""] session.XenAPI.Failure = FakeException sr_scan_call_count = 0 def fake_call_xenapi(*args): fake_call_xenapi.count += 1 if fake_call_xenapi.count != 2: raise FakeException() fake_call_xenapi.count = 0 session.call_xenapi.side_effect = fake_call_xenapi vm_utils._scan_sr(session, "sr_ref") session.call_xenapi.assert_called_with('SR.scan', "sr_ref") self.assertEqual(2, session.call_xenapi.call_count) mock_sleep.assert_called_once_with(2) @mock.patch.object(flavors, 'extract_flavor', return_value={ 'memory_mb': 1024, 'vcpus': 1, 'vcpu_weight': 1.0, }) class CreateVmTestCase(VMUtilsTestBase): def test_vss_provider(self, mock_extract): self.flags(vcpu_pin_set="2,3") session = _get_fake_session() instance = { "uuid": "uuid", "os_type": "windows" } vm_utils.create_vm(session, instance, "label", "kernel", "ramdisk") vm_rec = { 'VCPUs_params': {'cap': '0', 'mask': '2,3', 'weight': '1.0'}, 'PV_args': '', 'memory_static_min': '0', 'ha_restart_priority': '', 'HVM_boot_policy': 'BIOS order', 'PV_bootloader': '', 'tags': [], 'VCPUs_max': '1', 'memory_static_max': '1073741824', 'actions_after_shutdown': 'destroy', 'memory_dynamic_max': '1073741824', 'user_version': '0', 'xenstore_data': {'vm-data/allowvssprovider': 'false'}, 'blocked_operations': {}, 'is_a_template': False, 'name_description': '', 'memory_dynamic_min': '1073741824', 'actions_after_crash': 'destroy', 'memory_target': '1073741824', 'PV_ramdisk': '', 'PV_bootloader_args': '', 'PCI_bus': '', 'other_config': {'nova_uuid': 'uuid'}, 'name_label': 'label', 'actions_after_reboot': 'restart', 'VCPUs_at_startup': '1', 'HVM_boot_params': {'order': 'dc'}, 'platform': {'nx': 'true', 'pae': 'true', 'apic': 'true', 'timeoffset': '0', 'viridian': 'true', 'acpi': 'true'}, 'PV_legacy_args': '', 'PV_kernel': '', 'affinity': '', 'recommendations': '', 'ha_always_run': False } session.call_xenapi.assert_called_once_with("VM.create", vm_rec) def test_invalid_cpu_mask_raises(self, mock_extract): self.flags(vcpu_pin_set="asdf") session = mock.Mock() instance = { "uuid": "uuid", } self.assertRaises(exception.Invalid, vm_utils.create_vm, session, instance, "label", "kernel", "ramdisk") def test_destroy_vm(self, mock_extract): session = mock.Mock() instance = { "uuid": "uuid", } vm_utils.destroy_vm(session, instance, "vm_ref") session.VM.destroy.assert_called_once_with("vm_ref") def test_destroy_vm_silently_fails(self, mock_extract): session = mock.Mock() exc = test.TestingException() session.XenAPI.Failure = test.TestingException session.VM.destroy.side_effect = exc instance = { "uuid": "uuid", } vm_utils.destroy_vm(session, instance, "vm_ref") session.VM.destroy.assert_called_once_with("vm_ref") class DetermineVmModeTestCase(VMUtilsTestBase): def test_determine_vm_mode_returns_xen_mode(self): instance = {"vm_mode": "xen"} self.assertEqual(vm_mode.XEN, vm_utils.determine_vm_mode(instance, None)) def test_determine_vm_mode_returns_hvm_mode(self): instance = {"vm_mode": "hvm"} self.assertEqual(vm_mode.HVM, vm_utils.determine_vm_mode(instance, None)) def test_determine_vm_mode_returns_xen_for_linux(self): instance = {"vm_mode": None, "os_type": "linux"} self.assertEqual(vm_mode.XEN, vm_utils.determine_vm_mode(instance, None)) def test_determine_vm_mode_returns_hvm_for_windows(self): instance = {"vm_mode": None, "os_type": "windows"} self.assertEqual(vm_mode.HVM, vm_utils.determine_vm_mode(instance, None)) def test_determine_vm_mode_returns_hvm_by_default(self): instance = {"vm_mode": None, "os_type": None} self.assertEqual(vm_mode.HVM, vm_utils.determine_vm_mode(instance, None)) def test_determine_vm_mode_returns_xen_for_VHD(self): instance = {"vm_mode": None, "os_type": None} self.assertEqual(vm_mode.XEN, vm_utils.determine_vm_mode(instance, vm_utils.ImageType.DISK_VHD)) def test_determine_vm_mode_returns_xen_for_DISK(self): instance = {"vm_mode": None, "os_type": None} self.assertEqual(vm_mode.XEN, vm_utils.determine_vm_mode(instance, vm_utils.ImageType.DISK)) class CallXenAPIHelpersTestCase(VMUtilsTestBase): def test_vm_get_vbd_refs(self): session = mock.Mock() session.call_xenapi.return_value = "foo" self.assertEqual("foo", vm_utils._vm_get_vbd_refs(session, "vm_ref")) session.call_xenapi.assert_called_once_with("VM.get_VBDs", "vm_ref") def test_vbd_get_rec(self): session = mock.Mock() session.call_xenapi.return_value = "foo" self.assertEqual("foo", vm_utils._vbd_get_rec(session, "vbd_ref")) session.call_xenapi.assert_called_once_with("VBD.get_record", "vbd_ref") def test_vdi_get_rec(self): session = mock.Mock() session.call_xenapi.return_value = "foo" self.assertEqual("foo", vm_utils._vdi_get_rec(session, "vdi_ref")) session.call_xenapi.assert_called_once_with("VDI.get_record", "vdi_ref") def test_vdi_snapshot(self): session = mock.Mock() session.call_xenapi.return_value = "foo" self.assertEqual("foo", vm_utils._vdi_snapshot(session, "vdi_ref")) session.call_xenapi.assert_called_once_with("VDI.snapshot", "vdi_ref", {}) def test_vdi_get_virtual_size(self): session = mock.Mock() session.call_xenapi.return_value = "123" self.assertEqual(123, vm_utils._vdi_get_virtual_size(session, "ref")) session.call_xenapi.assert_called_once_with("VDI.get_virtual_size", "ref") @mock.patch.object(vm_utils, '_get_resize_func_name') def test_vdi_resize(self, mock_get_resize_func_name): session = mock.Mock() mock_get_resize_func_name.return_value = "VDI.fake" vm_utils._vdi_resize(session, "ref", 123) session.call_xenapi.assert_called_once_with("VDI.fake", "ref", "123") @mock.patch.object(vm_utils, '_vdi_resize') @mock.patch.object(vm_utils, '_vdi_get_virtual_size') def test_update_vdi_virtual_size_works(self, mock_get_size, mock_resize): mock_get_size.return_value = (1024 ** 3) - 1 instance = {"uuid": "a"} vm_utils.update_vdi_virtual_size("s", instance, "ref", 1) mock_get_size.assert_called_once_with("s", "ref") mock_resize.assert_called_once_with("s", "ref", 1024 ** 3) @mock.patch.object(vm_utils, '_vdi_resize') @mock.patch.object(vm_utils, '_vdi_get_virtual_size') def test_update_vdi_virtual_size_skips_resize_down(self, mock_get_size, mock_resize): mock_get_size.return_value = 1024 ** 3 instance = {"uuid": "a"} vm_utils.update_vdi_virtual_size("s", instance, "ref", 1) mock_get_size.assert_called_once_with("s", "ref") self.assertFalse(mock_resize.called) @mock.patch.object(vm_utils, '_vdi_resize') @mock.patch.object(vm_utils, '_vdi_get_virtual_size') def test_update_vdi_virtual_size_raise_if_disk_big(self, mock_get_size, mock_resize): mock_get_size.return_value = 1024 ** 3 + 1 instance = {"uuid": "a"} self.assertRaises(exception.ResizeError, vm_utils.update_vdi_virtual_size, "s", instance, "ref", 1) mock_get_size.assert_called_once_with("s", "ref") self.assertFalse(mock_resize.called) @mock.patch.object(vm_utils, '_vdi_get_rec') @mock.patch.object(vm_utils, '_vbd_get_rec') @mock.patch.object(vm_utils, '_vm_get_vbd_refs') class GetVdiForVMTestCase(VMUtilsTestBase): def test_get_vdi_for_vm_safely(self, vm_get_vbd_refs, vbd_get_rec, vdi_get_rec): session = "session" vm_get_vbd_refs.return_value = ["a", "b"] vbd_get_rec.return_value = {'userdevice': '0', 'VDI': 'vdi_ref'} vdi_get_rec.return_value = {} result = vm_utils.get_vdi_for_vm_safely(session, "vm_ref") self.assertEqual(('vdi_ref', {}), result) vm_get_vbd_refs.assert_called_once_with(session, "vm_ref") vbd_get_rec.assert_called_once_with(session, "a") vdi_get_rec.assert_called_once_with(session, "vdi_ref") def test_get_vdi_for_vm_safely_fails(self, vm_get_vbd_refs, vbd_get_rec, vdi_get_rec): session = "session" vm_get_vbd_refs.return_value = ["a", "b"] vbd_get_rec.return_value = {'userdevice': '0', 'VDI': 'vdi_ref'} self.assertRaises(exception.NovaException, vm_utils.get_vdi_for_vm_safely, session, "vm_ref", userdevice='1') self.assertEqual([], vdi_get_rec.call_args_list) self.assertEqual(2, len(vbd_get_rec.call_args_list)) @mock.patch.object(vm_utils, '_vdi_get_uuid') @mock.patch.object(vm_utils, '_vbd_get_rec') @mock.patch.object(vm_utils, '_vm_get_vbd_refs') class GetAllVdiForVMTestCase(VMUtilsTestBase): def _setup_get_all_vdi_uuids_for_vm(self, vm_get_vbd_refs, vbd_get_rec, vdi_get_uuid): def fake_vbd_get_rec(session, vbd_ref): return {'userdevice': vbd_ref, 'VDI': "vdi_ref_%s" % vbd_ref} def fake_vdi_get_uuid(session, vdi_ref): return vdi_ref vm_get_vbd_refs.return_value = ["0", "2"] vbd_get_rec.side_effect = fake_vbd_get_rec vdi_get_uuid.side_effect = fake_vdi_get_uuid def test_get_all_vdi_uuids_for_vm_works(self, vm_get_vbd_refs, vbd_get_rec, vdi_get_uuid): self._setup_get_all_vdi_uuids_for_vm(vm_get_vbd_refs, vbd_get_rec, vdi_get_uuid) result = vm_utils.get_all_vdi_uuids_for_vm('session', "vm_ref") expected = ['vdi_ref_0', 'vdi_ref_2'] self.assertEqual(expected, list(result)) def test_get_all_vdi_uuids_for_vm_finds_none(self, vm_get_vbd_refs, vbd_get_rec, vdi_get_uuid): self._setup_get_all_vdi_uuids_for_vm(vm_get_vbd_refs, vbd_get_rec, vdi_get_uuid) result = vm_utils.get_all_vdi_uuids_for_vm('session', "vm_ref", min_userdevice=1) expected = ["vdi_ref_2"] self.assertEqual(expected, list(result)) class GetAllVdisTestCase(VMUtilsTestBase): def test_get_all_vdis_in_sr(self): def fake_get_rec(record_type, ref): if ref == "2": return "vdi_rec_2" session = mock.Mock() session.call_xenapi.return_value = ["1", "2"] session.get_rec.side_effect = fake_get_rec sr_ref = "sr_ref" actual = list(vm_utils._get_all_vdis_in_sr(session, sr_ref)) self.assertEqual(actual, [('2', 'vdi_rec_2')]) session.call_xenapi.assert_called_once_with("SR.get_VDIs", sr_ref) class VDIAttachedHere(VMUtilsTestBase): @mock.patch.object(vm_utils, 'destroy_vbd') @mock.patch.object(vm_utils, '_get_this_vm_ref') @mock.patch.object(vm_utils, 'create_vbd') @mock.patch.object(vm_utils, '_remap_vbd_dev') @mock.patch.object(vm_utils, '_wait_for_device') @mock.patch.object(utils, 'execute') def test_sync_called(self, mock_execute, mock_wait_for_device, mock_remap_vbd_dev, mock_create_vbd, mock_get_this_vm_ref, mock_destroy_vbd): session = _get_fake_session() with vm_utils.vdi_attached_here(session, 'vdi_ref'): pass mock_execute.assert_called_with('sync', run_as_root=True) class SnapshotAttachedHereTestCase(VMUtilsTestBase): @mock.patch.object(vm_utils, '_snapshot_attached_here_impl') def test_snapshot_attached_here(self, mock_impl): def fake_impl(session, instance, vm_ref, label, userdevice, post_snapshot_callback): self.assertEqual("session", session) self.assertEqual("instance", instance) self.assertEqual("vm_ref", vm_ref) self.assertEqual("label", label) self.assertEqual('0', userdevice) self.assertIsNone(post_snapshot_callback) yield "fake" mock_impl.side_effect = fake_impl with vm_utils.snapshot_attached_here("session", "instance", "vm_ref", "label") as result: self.assertEqual("fake", result) mock_impl.assert_called_once_with("session", "instance", "vm_ref", "label", '0', None) @mock.patch.object(vm_utils, 'safe_destroy_vdis') @mock.patch.object(vm_utils, '_walk_vdi_chain') @mock.patch.object(vm_utils, '_wait_for_vhd_coalesce') @mock.patch.object(vm_utils, '_vdi_get_uuid') @mock.patch.object(vm_utils, '_vdi_snapshot') @mock.patch.object(vm_utils, '_get_vhd_parent_uuid') @mock.patch.object(vm_utils, 'get_vdi_for_vm_safely') def test_snapshot_attached_here_impl(self, mock_get_vdi_for_vm_safely, mock_get_vhd_parent_uuid, mock_vdi_snapshot, mock_vdi_get_uuid, mock_wait_for_vhd_coalesce, mock_walk_vdi_chain, mock_safe_destroy_vdis): session = "session" instance = {"uuid": "uuid"} mock_callback = mock.Mock() mock_get_vdi_for_vm_safely.return_value = ("vdi_ref", {"SR": "sr_ref"}) mock_get_vhd_parent_uuid.return_value = "original_uuid" mock_vdi_snapshot.return_value = "snap_ref" mock_vdi_get_uuid.return_value = "snap_uuid" mock_walk_vdi_chain.return_value = [{"uuid": "a"}, {"uuid": "b"}] try: with vm_utils.snapshot_attached_here(session, instance, "vm_ref", "label", '2', mock_callback) as result: self.assertEqual(["a", "b"], result) raise test.TestingException() self.assertTrue(False) except test.TestingException: pass mock_get_vdi_for_vm_safely.assert_called_once_with(session, "vm_ref", '2') mock_get_vhd_parent_uuid.assert_called_once_with(session, "vdi_ref") mock_vdi_snapshot.assert_called_once_with(session, "vdi_ref") mock_wait_for_vhd_coalesce.assert_called_once_with(session, instance, "sr_ref", "vdi_ref", "original_uuid") mock_vdi_get_uuid.assert_called_once_with(session, "snap_ref") mock_walk_vdi_chain.assert_called_once_with(session, "snap_uuid") mock_callback.assert_called_once_with( task_state="image_pending_upload") mock_safe_destroy_vdis.assert_called_once_with(session, ["snap_ref"]) @mock.patch.object(greenthread, 'sleep') @mock.patch.object(vm_utils, '_get_vhd_parent_uuid') @mock.patch.object(vm_utils, '_another_child_vhd') @mock.patch.object(vm_utils, '_scan_sr') def test_wait_for_vhd_coalesce(self, mock_scan_sr, mock_another_child_vhd, mock_get_vhd_parent_uuid, mock_sleep): cfg.CONF.import_opt('vhd_coalesce_max_attempts', 'nova.virt.xenapi.driver', group="xenserver") max_sr_scan_count = cfg.CONF.xenserver.vhd_coalesce_max_attempts - 1 vhd_chain = ['vdi_base_ref', 'vdi_coalescable_ref', 'vdi_leaf_ref'] instance = {"uuid": "uuid"} sr_ref = 'sr_ref' session = mock.Mock() def fake_scan_sr(session, sr_ref): fake_scan_sr.count += 1 if fake_scan_sr.count == max_sr_scan_count: vhd_chain.remove('vdi_coalescable_ref') def fake_get_vhd_parent_uuid(session, vdi_ref): index = vhd_chain.index(vdi_ref) if index > 0: return vhd_chain[index - 1].replace('ref', 'uuid') return None def fake_call_xenapi(method, *args): if method == 'VDI.get_by_uuid': return args[0].replace('uuid', 'ref') fake_scan_sr.count = 0 fake_scan_sr.running = True mock_scan_sr.side_effect = fake_scan_sr session.call_xenapi.side_effect = fake_call_xenapi mock_get_vhd_parent_uuid.side_effect = fake_get_vhd_parent_uuid mock_another_child_vhd.return_value = False self.assertEqual(('vdi_base_uuid', None), vm_utils._wait_for_vhd_coalesce(session, instance, sr_ref, 'vdi_leaf_ref', 'vdi_base_uuid')) self.assertEqual(max_sr_scan_count, mock_scan_sr.call_count) session.call_plugin_serialized.has_calls(session, "vdi_ref") # We'll sleep one fewer times than we scan the SR due to # the scan at the start self.assertEqual(max_sr_scan_count - 1, mock_sleep.call_count) class ImportMigratedDisksTestCase(VMUtilsTestBase): @mock.patch.object(vm_utils, '_import_migrate_ephemeral_disks') @mock.patch.object(vm_utils, '_import_migrated_root_disk') def test_import_all_migrated_disks(self, mock_root, mock_ephemeral): session = "session" instance = "instance" mock_root.return_value = "root_vdi" mock_ephemeral.return_value = ["a", "b"] result = vm_utils.import_all_migrated_disks(session, instance) expected = {'root': 'root_vdi', 'ephemerals': ["a", "b"]} self.assertEqual(expected, result) mock_root.assert_called_once_with(session, instance) mock_ephemeral.assert_called_once_with(session, instance) @mock.patch.object(vm_utils, '_import_migrated_vhds') def test_import_migrated_root_disk(self, mock_migrate): mock_migrate.return_value = "foo" instance = {"uuid": "uuid", "name": "name"} result = vm_utils._import_migrated_root_disk("s", instance) self.assertEqual("foo", result) mock_migrate.assert_called_once_with("s", instance, "uuid", "root", "name") @mock.patch.object(vm_utils, '_import_migrated_vhds') def test_import_migrate_ephemeral_disks(self, mock_migrate): mock_migrate.return_value = "foo" instance = {"uuid": "uuid", "name": "name", "ephemeral_gb": 4000} result = vm_utils._import_migrate_ephemeral_disks("s", instance) self.assertEqual({'4': 'foo', '5': 'foo'}, result) expected_calls = [mock.call("s", instance, "uuid_ephemeral_1", "ephemeral", "name ephemeral (1)"), mock.call("s", instance, "uuid_ephemeral_2", "ephemeral", "name ephemeral (2)")] self.assertEqual(expected_calls, mock_migrate.call_args_list) @mock.patch.object(vm_utils, '_set_vdi_info') @mock.patch.object(vm_utils, 'scan_default_sr') @mock.patch.object(vm_utils, 'get_sr_path') def test_import_migrated_vhds(self, mock_get_sr_path, mock_scan_sr, mock_set_info): session = mock.Mock() instance = {"uuid": "uuid"} session.call_plugin_serialized.return_value = {"root": {"uuid": "a"}} session.call_xenapi.return_value = "vdi_ref" mock_get_sr_path.return_value = "sr_path" result = vm_utils._import_migrated_vhds(session, instance, 'chain_label', 'disk_type', 'vdi_label') expected = {'uuid': "a", 'ref': "vdi_ref"} self.assertEqual(expected, result) mock_get_sr_path.assert_called_once_with(session) session.call_plugin_serialized.assert_called_once_with('migration', 'move_vhds_into_sr', instance_uuid='chain_label', sr_path='sr_path', uuid_stack=mock.ANY) mock_scan_sr.assert_called_once_with(session) session.call_xenapi.assert_called_once_with('VDI.get_by_uuid', 'a') mock_set_info.assert_called_once_with(session, 'vdi_ref', 'disk_type', 'vdi_label', 'disk_type', instance) def test_get_vhd_parent_uuid_rec_provided(self): session = mock.Mock() vdi_ref = 'vdi_ref' vdi_rec = {'sm_config': {}} self.assertIsNone(vm_utils._get_vhd_parent_uuid(session, vdi_ref, vdi_rec)) self.assertFalse(session.call_xenapi.called) class MigrateVHDTestCase(VMUtilsTestBase): def _assert_transfer_called(self, session, label): session.call_plugin_serialized.assert_called_once_with( 'migration', 'transfer_vhd', instance_uuid=label, host="dest", vdi_uuid="vdi_uuid", sr_path="sr_path", seq_num=2) def test_migrate_vhd_root(self): session = mock.Mock() instance = {"uuid": "a"} vm_utils.migrate_vhd(session, instance, "vdi_uuid", "dest", "sr_path", 2) self._assert_transfer_called(session, "a") def test_migrate_vhd_ephemeral(self): session = mock.Mock() instance = {"uuid": "a"} vm_utils.migrate_vhd(session, instance, "vdi_uuid", "dest", "sr_path", 2, 2) self._assert_transfer_called(session, "a_ephemeral_2") def test_migrate_vhd_converts_exceptions(self): session = mock.Mock() session.XenAPI.Failure = test.TestingException session.call_plugin_serialized.side_effect = test.TestingException() instance = {"uuid": "a"} self.assertRaises(exception.MigrationError, vm_utils.migrate_vhd, session, instance, "vdi_uuid", "dest", "sr_path", 2) self._assert_transfer_called(session, "a") class StripBaseMirrorTestCase(VMUtilsTestBase): def test_strip_base_mirror_from_vdi_works(self): session = mock.Mock() vm_utils._try_strip_base_mirror_from_vdi(session, "vdi_ref") session.call_xenapi.assert_called_once_with( "VDI.remove_from_sm_config", "vdi_ref", "base_mirror") def test_strip_base_mirror_from_vdi_hides_error(self): session = mock.Mock() session.XenAPI.Failure = test.TestingException session.call_xenapi.side_effect = test.TestingException() vm_utils._try_strip_base_mirror_from_vdi(session, "vdi_ref") session.call_xenapi.assert_called_once_with( "VDI.remove_from_sm_config", "vdi_ref", "base_mirror") @mock.patch.object(vm_utils, '_try_strip_base_mirror_from_vdi') def test_strip_base_mirror_from_vdis(self, mock_strip): def call_xenapi(method, arg): if method == "VM.get_VBDs": return ['VBD_ref_1', 'VBD_ref_2'] if method == "VBD.get_VDI": return 'VDI' + arg[3:] return "Unexpected call_xenapi: %s.%s" % (method, arg) session = mock.Mock() session.call_xenapi.side_effect = call_xenapi vm_utils.strip_base_mirror_from_vdis(session, "vm_ref") expected = [mock.call('VM.get_VBDs', "vm_ref"), mock.call('VBD.get_VDI', "VBD_ref_1"), mock.call('VBD.get_VDI', "VBD_ref_2")] self.assertEqual(expected, session.call_xenapi.call_args_list) expected = [mock.call(session, "VDI_ref_1"), mock.call(session, "VDI_ref_2")] self.assertEqual(expected, mock_strip.call_args_list) class DeviceIdTestCase(VMUtilsTestBase): def test_device_id_is_none_if_not_specified_in_meta_data(self): image_meta = {} session = mock.Mock() session.product_version = (6, 1, 0) self.assertIsNone(vm_utils.get_vm_device_id(session, image_meta)) def test_get_device_id_if_hypervisor_version_is_greater_than_6_1(self): image_meta = {'xenapi_device_id': '0002'} session = mock.Mock() session.product_version = (6, 2, 0) self.assertEqual('0002', vm_utils.get_vm_device_id(session, image_meta)) session.product_version = (6, 3, 1) self.assertEqual('0002', vm_utils.get_vm_device_id(session, image_meta)) def test_raise_exception_if_device_id_not_supported_by_hyp_version(self): image_meta = {'xenapi_device_id': '0002'} session = mock.Mock() session.product_version = (6, 0) exc = self.assertRaises(exception.NovaException, vm_utils.get_vm_device_id, session, image_meta) self.assertEqual("Device id 0002 specified is not supported by " "hypervisor version (6, 0)", exc.message) session.product_version = ('6a') exc = self.assertRaises(exception.NovaException, vm_utils.get_vm_device_id, session, image_meta) self.assertEqual("Device id 0002 specified is not supported by " "hypervisor version 6a", exc.message) class CreateVmRecordTestCase(VMUtilsTestBase): @mock.patch.object(flavors, 'extract_flavor') def test_create_vm_record_linux(self, mock_extract_flavor): instance = {"uuid": "uuid123", "os_type": "linux"} self._test_create_vm_record(mock_extract_flavor, instance, False) @mock.patch.object(flavors, 'extract_flavor') def test_create_vm_record_windows(self, mock_extract_flavor): instance = {"uuid": "uuid123", "os_type": "windows"} self._test_create_vm_record(mock_extract_flavor, instance, True) def _test_create_vm_record(self, mock_extract_flavor, instance, is_viridian): session = _get_fake_session() flavor = {"memory_mb": 1024, "vcpus": 1, "vcpu_weight": 2} mock_extract_flavor.return_value = flavor vm_utils.create_vm(session, instance, "name", "kernel", "ramdisk", device_id="0002") is_viridian_str = str(is_viridian).lower() expected_vm_rec = { 'VCPUs_params': {'cap': '0', 'weight': '2'}, 'PV_args': '', 'memory_static_min': '0', 'ha_restart_priority': '', 'HVM_boot_policy': 'BIOS order', 'PV_bootloader': '', 'tags': [], 'VCPUs_max': '1', 'memory_static_max': '1073741824', 'actions_after_shutdown': 'destroy', 'memory_dynamic_max': '1073741824', 'user_version': '0', 'xenstore_data': {'vm-data/allowvssprovider': 'false'}, 'blocked_operations': {}, 'is_a_template': False, 'name_description': '', 'memory_dynamic_min': '1073741824', 'actions_after_crash': 'destroy', 'memory_target': '1073741824', 'PV_ramdisk': '', 'PV_bootloader_args': '', 'PCI_bus': '', 'other_config': {'nova_uuid': 'uuid123'}, 'name_label': 'name', 'actions_after_reboot': 'restart', 'VCPUs_at_startup': '1', 'HVM_boot_params': {'order': 'dc'}, 'platform': {'nx': 'true', 'pae': 'true', 'apic': 'true', 'timeoffset': '0', 'viridian': is_viridian_str, 'acpi': 'true', 'device_id': '0002'}, 'PV_legacy_args': '', 'PV_kernel': '', 'affinity': '', 'recommendations': '', 'ha_always_run': False} session.call_xenapi.assert_called_with('VM.create', expected_vm_rec) def test_list_vms(self): self.flags(disable_process_locking=True, instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') fake.create_vm("foo1", "Halted") vm_ref = fake.create_vm("foo2", "Running") stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) result = list(vm_utils.list_vms(driver._session)) # Will have 3 VMs - but one is Dom0 and one is not running on the host self.assertEqual(len(driver._session.call_xenapi('VM.get_all')), 3) self.assertEqual(len(result), 1) result_keys = [key for (key, value) in result] self.assertIn(vm_ref, result_keys) class ResizeFunctionTestCase(test.NoDBTestCase): def _call_get_resize_func_name(self, brand, version): session = mock.Mock() session.product_brand = brand session.product_version = version return vm_utils._get_resize_func_name(session) def _test_is_resize(self, brand, version): result = self._call_get_resize_func_name(brand, version) self.assertEqual("VDI.resize", result) def _test_is_resize_online(self, brand, version): result = self._call_get_resize_func_name(brand, version) self.assertEqual("VDI.resize_online", result) def test_xenserver_5_5(self): self._test_is_resize_online("XenServer", (5, 5, 0)) def test_xenserver_6_0(self): self._test_is_resize("XenServer", (6, 0, 0)) def test_xcp_1_1(self): self._test_is_resize_online("XCP", (1, 1, 0)) def test_xcp_1_2(self): self._test_is_resize("XCP", (1, 2, 0)) def test_xcp_2_0(self): self._test_is_resize("XCP", (2, 0, 0)) def test_random_brand(self): self._test_is_resize("asfd", (1, 1, 0)) def test_default(self): self._test_is_resize(None, None) def test_empty(self): self._test_is_resize("", "") def test_bad_version(self): self._test_is_resize("XenServer", "asdf") class VMInfoTests(VMUtilsTestBase): def setUp(self): super(VMInfoTests, self).setUp() self.session = mock.Mock() def test_get_power_state_valid(self): # Save on test setup calls by having these simple tests in one method self.session.call_xenapi.return_value = "Running" self.assertEqual(vm_utils.get_power_state(self.session, "ref"), power_state.RUNNING) self.session.call_xenapi.return_value = "Halted" self.assertEqual(vm_utils.get_power_state(self.session, "ref"), power_state.SHUTDOWN) self.session.call_xenapi.return_value = "Paused" self.assertEqual(vm_utils.get_power_state(self.session, "ref"), power_state.PAUSED) self.session.call_xenapi.return_value = "Suspended" self.assertEqual(vm_utils.get_power_state(self.session, "ref"), power_state.SUSPENDED) self.session.call_xenapi.return_value = "Crashed" self.assertEqual(vm_utils.get_power_state(self.session, "ref"), power_state.CRASHED) def test_get_power_state_invalid(self): self.session.call_xenapi.return_value = "Invalid" self.assertRaises(KeyError, vm_utils.get_power_state, self.session, "ref") _XAPI_record = {'power_state': 'Running', 'memory_static_max': str(10 << 10), 'memory_dynamic_max': str(9 << 10), 'VCPUs_max': '5'} def test_compile_info(self): def call_xenapi(method, *args): if method.startswith('VM.get_') and args[0] == 'dummy': return self._XAPI_record[method[7:]] self.session.call_xenapi.side_effect = call_xenapi expected = {'state': power_state.RUNNING, 'max_mem': 10L, 'mem': 9L, 'num_cpu': '5', 'cpu_time': 0} self.assertEqual(vm_utils.compile_info(self.session, "dummy"), expected) nova-2014.1/nova/tests/virt/xenapi/test_volume_utils.py0000664000175400017540000000753512323721477024441 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from eventlet import greenthread from nova.tests.virt.xenapi import stubs from nova.virt.xenapi import volume_utils class SROps(stubs.XenAPITestBaseNoDB): def test_find_sr_valid_uuid(self): self.session = mock.Mock() self.session.call_xenapi.return_value = 'sr_ref' self.assertEqual(volume_utils.find_sr_by_uuid(self.session, 'sr_uuid'), 'sr_ref') def test_find_sr_invalid_uuid(self): class UUIDException(Exception): details = ["UUID_INVALID", "", "", ""] self.session = mock.Mock() self.session.XenAPI.Failure = UUIDException self.session.call_xenapi.side_effect = UUIDException self.assertEqual(volume_utils.find_sr_by_uuid(self.session, 'sr_uuid'), None) class ISCSIParametersTestCase(stubs.XenAPITestBaseNoDB): def test_target_host(self): self.assertEqual(volume_utils._get_target_host('host:port'), 'host') self.assertEqual(volume_utils._get_target_host('host'), 'host') # There is no default value self.assertEqual(volume_utils._get_target_host(':port'), None) self.assertEqual(volume_utils._get_target_host(None), None) def test_target_port(self): self.assertEqual(volume_utils._get_target_port('host:port'), 'port') self.assertEqual(volume_utils._get_target_port('host'), '3260') class IntroduceTestCase(stubs.XenAPITestBaseNoDB): @mock.patch.object(volume_utils, '_get_vdi_ref') @mock.patch.object(greenthread, 'sleep') def test_introduce_vdi_retry(self, mock_sleep, mock_get_vdi_ref): def fake_get_vdi_ref(session, sr_ref, vdi_uuid, target_lun): fake_get_vdi_ref.call_count += 1 if fake_get_vdi_ref.call_count == 2: return 'vdi_ref' def fake_call_xenapi(method, *args): if method == 'SR.scan': return elif method == 'VDI.get_record': return {'managed': 'true'} session = mock.Mock() session.call_xenapi.side_effect = fake_call_xenapi mock_get_vdi_ref.side_effect = fake_get_vdi_ref fake_get_vdi_ref.call_count = 0 self.assertEqual(volume_utils.introduce_vdi(session, 'sr_ref'), 'vdi_ref') mock_sleep.assert_called_once_with(20) @mock.patch.object(volume_utils, '_get_vdi_ref') @mock.patch.object(greenthread, 'sleep') def test_introduce_vdi_exception(self, mock_sleep, mock_get_vdi_ref): def fake_call_xenapi(method, *args): if method == 'SR.scan': return elif method == 'VDI.get_record': return {'managed': 'true'} session = mock.Mock() session.call_xenapi.side_effect = fake_call_xenapi mock_get_vdi_ref.return_value = None self.assertRaises(volume_utils.StorageError, volume_utils.introduce_vdi, session, 'sr_ref') mock_sleep.assert_called_once_with(20) nova-2014.1/nova/tests/virt/xenapi/test_volumeops.py0000664000175400017540000002147412323721477023741 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Citrix Systems, 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. import collections from nova import test from nova.tests.virt.xenapi import stubs from nova.virt.xenapi import volumeops class VolumeAttachTestCase(test.NoDBTestCase): def test_detach_volume_call(self): registered_calls = [] def regcall(label): def side_effect(*args, **kwargs): registered_calls.append(label) return side_effect ops = volumeops.VolumeOps('session') self.mox.StubOutWithMock(volumeops.vm_utils, 'lookup') self.mox.StubOutWithMock(volumeops.vm_utils, 'find_vbd_by_number') self.mox.StubOutWithMock(volumeops.vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(volumeops.vm_utils, 'unplug_vbd') self.mox.StubOutWithMock(volumeops.vm_utils, 'destroy_vbd') self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number') self.mox.StubOutWithMock(volumeops.volume_utils, 'find_sr_from_vbd') self.mox.StubOutWithMock(volumeops.volume_utils, 'purge_sr') volumeops.vm_utils.lookup('session', 'instance_1').AndReturn( 'vmref') volumeops.volume_utils.get_device_number('mountpoint').AndReturn( 'devnumber') volumeops.vm_utils.find_vbd_by_number( 'session', 'vmref', 'devnumber').AndReturn('vbdref') volumeops.vm_utils.is_vm_shutdown('session', 'vmref').AndReturn( False) volumeops.vm_utils.unplug_vbd('session', 'vbdref', 'vmref') volumeops.vm_utils.destroy_vbd('session', 'vbdref').WithSideEffects( regcall('destroy_vbd')) volumeops.volume_utils.find_sr_from_vbd( 'session', 'vbdref').WithSideEffects( regcall('find_sr_from_vbd')).AndReturn('srref') volumeops.volume_utils.purge_sr('session', 'srref') self.mox.ReplayAll() ops.detach_volume( dict(driver_volume_type='iscsi', data='conn_data'), 'instance_1', 'mountpoint') self.assertEqual( ['find_sr_from_vbd', 'destroy_vbd'], registered_calls) def test_attach_volume_call(self): ops = volumeops.VolumeOps('session') self.mox.StubOutWithMock(ops, '_connect_volume') self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise') self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number') connection_info = dict(driver_volume_type='iscsi', data='conn_data') volumeops.vm_utils.vm_ref_or_raise('session', 'instance_1').AndReturn( 'vmref') volumeops.volume_utils.get_device_number('mountpoint').AndReturn( 'devnumber') ops._connect_volume( connection_info, 'devnumber', 'instance_1', 'vmref', hotplug=True).AndReturn(('sruuid', 'vdiuuid')) self.mox.ReplayAll() ops.attach_volume( connection_info, 'instance_1', 'mountpoint') def test_attach_volume_no_hotplug(self): ops = volumeops.VolumeOps('session') self.mox.StubOutWithMock(ops, '_connect_volume') self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise') self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number') connection_info = dict(driver_volume_type='iscsi', data='conn_data') volumeops.vm_utils.vm_ref_or_raise('session', 'instance_1').AndReturn( 'vmref') volumeops.volume_utils.get_device_number('mountpoint').AndReturn( 'devnumber') ops._connect_volume( connection_info, 'devnumber', 'instance_1', 'vmref', hotplug=False).AndReturn(('sruuid', 'vdiuuid')) self.mox.ReplayAll() ops.attach_volume( connection_info, 'instance_1', 'mountpoint', hotplug=False) def _test_connect_volume(self, hotplug, vm_running, plugged): session = stubs.FakeSessionForVolumeTests('fake_uri') ops = volumeops.VolumeOps(session) self.mox.StubOutWithMock(volumeops.volume_utils, 'parse_sr_info') self.mox.StubOutWithMock( volumeops.volume_utils, 'find_sr_by_uuid') self.mox.StubOutWithMock( volumeops.volume_utils, 'introduce_sr') self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_vdi') self.mox.StubOutWithMock(volumeops.vm_utils, 'create_vbd') self.mox.StubOutWithMock(volumeops.vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(ops._session.VBD, 'plug') self.mox.StubOutWithMock(ops._session, 'call_xenapi') instance_name = 'instance_1' sr_uuid = '1' sr_label = 'Disk-for:%s' % instance_name sr_params = '' sr_ref = 'sr_ref' vdi_uuid = '2' vdi_ref = 'vdi_ref' vbd_ref = 'vbd_ref' connection_data = {'vdi_uuid': vdi_uuid} connection_info = {'data': connection_data, 'driver_volume_type': 'iscsi'} vm_ref = 'vm_ref' dev_number = 1 volumeops.volume_utils.parse_sr_info( connection_data, sr_label).AndReturn( tuple([sr_uuid, sr_label, sr_params])) volumeops.volume_utils.find_sr_by_uuid(session, sr_uuid).AndReturn( None) volumeops.volume_utils.introduce_sr( session, sr_uuid, sr_label, sr_params).AndReturn(sr_ref) volumeops.volume_utils.introduce_vdi( session, sr_ref, vdi_uuid=vdi_uuid).AndReturn(vdi_ref) volumeops.vm_utils.create_vbd( session, vm_ref, vdi_ref, dev_number, bootable=False, osvol=True).AndReturn(vbd_ref) volumeops.vm_utils.is_vm_shutdown(session, vm_ref).AndReturn(not vm_running) if plugged: ops._session.VBD.plug(vbd_ref, vm_ref) ops._session.call_xenapi("VDI.get_uuid", vdi_ref).AndReturn(vdi_uuid) self.mox.ReplayAll() result = ops._connect_volume(connection_info, dev_number, instance_name, vm_ref, hotplug=hotplug) self.assertEqual((sr_uuid, vdi_uuid), result) def test_connect_volume_no_hotplug_vm_running(self): self._test_connect_volume(hotplug=False, vm_running=True, plugged=False) def test_connect_volume_no_hotplug_vm_not_running(self): self._test_connect_volume(hotplug=False, vm_running=False, plugged=False) def test_connect_volume_hotplug_vm_stopped(self): self._test_connect_volume(hotplug=True, vm_running=False, plugged=False) def test_connect_volume_hotplug_vm_running(self): self._test_connect_volume(hotplug=True, vm_running=True, plugged=True) def test_connect_volume(self): session = stubs.FakeSessionForVolumeTests('fake_uri') ops = volumeops.VolumeOps(session) sr_uuid = '1' sr_label = 'Disk-for:None' sr_params = '' sr_ref = 'sr_ref' vdi_uuid = '2' vdi_ref = 'vdi_ref' vbd_ref = 'vbd_ref' connection_data = {'vdi_uuid': vdi_uuid} connection_info = {'data': connection_data, 'driver_volume_type': 'iscsi'} called = collections.defaultdict(bool) def fake_call_xenapi(self, method, *args, **kwargs): called[method] = True self.stubs.Set(ops._session, 'call_xenapi', fake_call_xenapi) self.mox.StubOutWithMock(volumeops.volume_utils, 'parse_sr_info') volumeops.volume_utils.parse_sr_info( connection_data, sr_label).AndReturn( tuple([sr_uuid, sr_label, sr_params])) self.mox.StubOutWithMock( volumeops.volume_utils, 'find_sr_by_uuid') volumeops.volume_utils.find_sr_by_uuid(session, sr_uuid).AndReturn( None) self.mox.StubOutWithMock( volumeops.volume_utils, 'introduce_sr') volumeops.volume_utils.introduce_sr( session, sr_uuid, sr_label, sr_params).AndReturn(sr_ref) self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_vdi') volumeops.volume_utils.introduce_vdi( session, sr_ref, vdi_uuid=vdi_uuid).AndReturn(vdi_ref) self.mox.ReplayAll() ops.connect_volume(connection_info) self.assertEqual(False, called['VBD.plug']) nova-2014.1/nova/tests/virt/xenapi/test_xenapi.py0000664000175400017540000052006512323721477023174 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 Citrix Systems, 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. """Test suite for XenAPI.""" import ast import base64 import contextlib import copy import functools import mox import os import re import mock import mox from oslo.config import cfg from nova.compute import api as compute_api from nova.compute import flavors from nova.compute import power_state from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import api as conductor_api from nova import context from nova import crypto from nova import db from nova import exception from nova.objects import aggregate as aggregate_obj from nova.objects import instance as instance_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova import test from nova.tests.db import fakes as db_fakes from nova.tests import fake_instance from nova.tests import fake_network from nova.tests import fake_processutils import nova.tests.image.fake as fake_image from nova.tests import matchers from nova.tests.objects import test_aggregate from nova.tests.virt.xenapi import stubs from nova.virt import fake from nova.virt.xenapi import agent from nova.virt.xenapi.client import session as xenapi_session from nova.virt.xenapi import driver as xenapi_conn from nova.virt.xenapi import fake as xenapi_fake from nova.virt.xenapi import host from nova.virt.xenapi.image import glance from nova.virt.xenapi import pool from nova.virt.xenapi import pool_states from nova.virt.xenapi import vm_utils from nova.virt.xenapi import vmops from nova.virt.xenapi import volume_utils LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('network_manager', 'nova.service') CONF.import_opt('compute_driver', 'nova.virt.driver') CONF.import_opt('host', 'nova.netconf') CONF.import_opt('default_availability_zone', 'nova.availability_zones') CONF.import_opt('login_timeout', 'nova.virt.xenapi.client.session', group="xenserver") IMAGE_MACHINE = '1' IMAGE_KERNEL = '2' IMAGE_RAMDISK = '3' IMAGE_RAW = '4' IMAGE_VHD = '5' IMAGE_ISO = '6' IMAGE_IPXE_ISO = '7' IMAGE_FROM_VOLUME = '8' IMAGE_FIXTURES = { IMAGE_MACHINE: { 'image_meta': {'name': 'fakemachine', 'size': 0, 'disk_format': 'ami', 'container_format': 'ami'}, }, IMAGE_KERNEL: { 'image_meta': {'name': 'fakekernel', 'size': 0, 'disk_format': 'aki', 'container_format': 'aki'}, }, IMAGE_RAMDISK: { 'image_meta': {'name': 'fakeramdisk', 'size': 0, 'disk_format': 'ari', 'container_format': 'ari'}, }, IMAGE_RAW: { 'image_meta': {'name': 'fakeraw', 'size': 0, 'disk_format': 'raw', 'container_format': 'bare'}, }, IMAGE_VHD: { 'image_meta': {'name': 'fakevhd', 'size': 0, 'disk_format': 'vhd', 'container_format': 'ovf'}, }, IMAGE_ISO: { 'image_meta': {'name': 'fakeiso', 'size': 0, 'disk_format': 'iso', 'container_format': 'bare'}, }, IMAGE_IPXE_ISO: { 'image_meta': {'name': 'fake_ipxe_iso', 'size': 0, 'disk_format': 'iso', 'container_format': 'bare', 'properties': {'ipxe_boot': 'true'}}, }, IMAGE_FROM_VOLUME: { 'image_meta': {'name': 'fake_ipxe_iso', 'properties': {'foo': 'bar'}}, }, } def get_session(): return xenapi_session.XenAPISession('test_url', 'root', 'test_pass') def set_image_fixtures(): image_service = fake_image.FakeImageService() image_service.images.clear() for image_id, image_meta in IMAGE_FIXTURES.items(): image_meta = image_meta['image_meta'] image_meta['id'] = image_id image_service.create(None, image_meta) def get_fake_device_info(): # FIXME: 'sr_uuid', 'introduce_sr_keys', sr_type and vdi_uuid # can be removed from the dict when LP bug #1087308 is fixed fake_vdi_ref = xenapi_fake.create_vdi('fake-vdi', None) fake_vdi_uuid = xenapi_fake.get_record('VDI', fake_vdi_ref)['uuid'] fake = {'block_device_mapping': [{'connection_info': {'driver_volume_type': 'iscsi', 'data': {'sr_uuid': 'falseSR', 'introduce_sr_keys': ['sr_type'], 'sr_type': 'iscsi', 'vdi_uuid': fake_vdi_uuid, 'target_discovered': False, 'target_iqn': 'foo_iqn:foo_volid', 'target_portal': 'localhost:3260', 'volume_id': 'foo_volid', 'target_lun': 1, 'auth_password': 'my-p@55w0rd', 'auth_username': 'johndoe', 'auth_method': u'CHAP'}, }, 'mount_device': 'vda', 'delete_on_termination': False}, ], 'root_device_name': '/dev/sda', 'ephemerals': [], 'swap': None, } return fake def stub_vm_utils_with_vdi_attached_here(function): """vm_utils.with_vdi_attached_here needs to be stubbed out because it calls down to the filesystem to attach a vdi. This provides a decorator to handle that. """ @functools.wraps(function) def decorated_function(self, *args, **kwargs): @contextlib.contextmanager def fake_vdi_attached_here(*args, **kwargs): fake_dev = 'fakedev' yield fake_dev def fake_image_download(*args, **kwargs): pass orig_vdi_attached_here = vm_utils.vdi_attached_here orig_image_download = fake_image._FakeImageService.download try: vm_utils.vdi_attached_here = fake_vdi_attached_here fake_image._FakeImageService.download = fake_image_download return function(self, *args, **kwargs) finally: fake_image._FakeImageService.download = orig_image_download vm_utils.vdi_attached_here = orig_vdi_attached_here return decorated_function def create_instance_with_system_metadata(context, instance_values): flavor = db.flavor_get(context, instance_values['instance_type_id']) sys_meta = flavors.save_flavor_info({}, flavor) instance_values['system_metadata'] = sys_meta return db.instance_create(context, instance_values) class XenAPIVolumeTestCase(stubs.XenAPITestBaseNoDB): """Unit tests for Volume operations.""" def setUp(self): super(XenAPIVolumeTestCase, self).setUp() self.flags(disable_process_locking=True, firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.instance = fake_instance.fake_db_instance(name='foo') @classmethod def _make_connection_info(cls): target_iqn = 'iqn.2010-10.org.openstack:volume-00000001' return {'driver_volume_type': 'iscsi', 'data': {'volume_id': 1, 'target_iqn': target_iqn, 'target_portal': '127.0.0.1:3260,fake', 'target_lun': None, 'auth_method': 'CHAP', 'auth_username': 'username', 'auth_password': 'password'}} def test_mountpoint_to_number(self): cases = { 'sda': 0, 'sdp': 15, 'hda': 0, 'hdp': 15, 'vda': 0, 'xvda': 0, '0': 0, '10': 10, 'vdq': -1, 'sdq': -1, 'hdq': -1, 'xvdq': -1, } for (input, expected) in cases.iteritems(): actual = volume_utils.mountpoint_to_number(input) self.assertEqual(actual, expected, '%s yielded %s, not %s' % (input, actual, expected)) def test_parse_volume_info_parsing_auth_details(self): conn_info = self._make_connection_info() result = volume_utils.parse_volume_info(conn_info['data']) self.assertEqual('username', result['chapuser']) self.assertEqual('password', result['chappassword']) def test_get_device_number_raise_exception_on_wrong_mountpoint(self): self.assertRaises( volume_utils.StorageError, volume_utils.get_device_number, 'dev/sd') def test_attach_volume(self): # This shows how to test Ops classes' methods. stubs.stubout_session(self.stubs, stubs.FakeSessionForVolumeTests) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vm = xenapi_fake.create_vm(self.instance['name'], 'Running') conn_info = self._make_connection_info() result = conn.attach_volume( None, conn_info, self.instance, '/dev/sdc') # check that the VM has a VBD attached to it # Get XenAPI record for VBD vbds = xenapi_fake.get_all('VBD') vbd = xenapi_fake.get_record('VBD', vbds[0]) vm_ref = vbd['VM'] self.assertEqual(vm_ref, vm) def test_attach_volume_raise_exception(self): # This shows how to test when exceptions are raised. stubs.stubout_session(self.stubs, stubs.FakeSessionForVolumeFailedTests) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) xenapi_fake.create_vm(self.instance['name'], 'Running') self.assertRaises(exception.VolumeDriverNotFound, conn.attach_volume, None, {'driver_volume_type': 'nonexist'}, self.instance, '/dev/sdc') # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIVMTestCase(stubs.XenAPITestBase): """Unit tests for VM operations.""" def setUp(self): super(XenAPIVMTestCase, self).setUp() self.useFixture(test.SampleNetworks()) self.network = importutils.import_object(CONF.network_manager) self.flags(disable_process_locking=True, instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') # Disable conductor so we don't wait on a reply that will never come self.flags(use_local=True, group='conductor') db_fakes.stub_out_db_instance_api(self.stubs) xenapi_fake.create_network('fake', 'fake_br1') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) stubs.stubout_get_this_vm_uuid(self.stubs) stubs.stub_out_vm_methods(self.stubs) fake_processutils.stub_out_processutils_execute(self.stubs) self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.conn._session.is_local_connection = False self.stubs.Set(fake.FakeVirtAPI, 'instance_update', lambda *args, **kwargs: ('fake-oldref', 'fake-newref')) fake_image.stub_out_image_service(self.stubs) set_image_fixtures() stubs.stubout_image_service_download(self.stubs) stubs.stubout_stream_disk(self.stubs) def fake_inject_instance_metadata(self, instance, vm): pass self.stubs.Set(vmops.VMOps, '_inject_instance_metadata', fake_inject_instance_metadata) def fake_safe_copy_vdi(session, sr_ref, instance, vdi_to_copy_ref): name_label = "fakenamelabel" disk_type = "fakedisktype" virtual_size = 777 return vm_utils.create_vdi( session, sr_ref, instance, name_label, disk_type, virtual_size) self.stubs.Set(vm_utils, '_safe_copy_vdi', fake_safe_copy_vdi) def tearDown(self): fake_image.FakeImageService_reset() super(XenAPIVMTestCase, self).tearDown() def test_init_host(self): session = get_session() vm = vm_utils._get_this_vm_ref(session) # Local root disk vdi0 = xenapi_fake.create_vdi('compute', None) vbd0 = xenapi_fake.create_vbd(vm, vdi0) # Instance VDI vdi1 = xenapi_fake.create_vdi('instance-aaaa', None, other_config={'nova_instance_uuid': 'aaaa'}) vbd1 = xenapi_fake.create_vbd(vm, vdi1) # Only looks like instance VDI vdi2 = xenapi_fake.create_vdi('instance-bbbb', None) vbd2 = xenapi_fake.create_vbd(vm, vdi2) self.conn.init_host(None) self.assertEqual(set(xenapi_fake.get_all('VBD')), set([vbd0, vbd2])) def test_instance_exists(self): self.mox.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup(mox.IgnoreArg(), 'foo').AndReturn(True) self.mox.ReplayAll() self.assertTrue(self.conn.instance_exists('foo')) def test_instance_not_exists(self): self.mox.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup(mox.IgnoreArg(), 'bar').AndReturn(None) self.mox.ReplayAll() self.assertFalse(self.conn.instance_exists('bar')) def test_list_instances_0(self): instances = self.conn.list_instances() self.assertEqual(instances, []) def test_list_instance_uuids_0(self): instance_uuids = self.conn.list_instance_uuids() self.assertEqual(instance_uuids, []) def test_list_instance_uuids(self): uuids = [] for x in xrange(1, 4): instance = self._create_instance(x) uuids.append(instance['uuid']) instance_uuids = self.conn.list_instance_uuids() self.assertEqual(len(uuids), len(instance_uuids)) self.assertEqual(set(uuids), set(instance_uuids)) def test_get_rrd_server(self): self.flags(connection_url='myscheme://myaddress/', group='xenserver') server_info = vm_utils._get_rrd_server() self.assertEqual(server_info[0], 'myscheme') self.assertEqual(server_info[1], 'myaddress') def test_get_diagnostics(self): def fake_get_rrd(host, vm_uuid): path = os.path.dirname(os.path.realpath(__file__)) with open(os.path.join(path, 'vm_rrd.xml')) as f: return re.sub(r'\s', '', f.read()) self.stubs.Set(vm_utils, '_get_rrd', fake_get_rrd) fake_diagnostics = { 'vbd_xvdb_write': '0.0', 'memory_target': '4294967296.0000', 'memory_internal_free': '1415564.0000', 'memory': '4294967296.0000', 'vbd_xvda_write': '0.0', 'cpu0': '0.0042', 'vif_0_tx': '287.4134', 'vbd_xvda_read': '0.0', 'vif_0_rx': '1816.0144', 'vif_2_rx': '0.0', 'vif_2_tx': '0.0', 'vbd_xvdb_read': '0.0', 'last_update': '1328795567', } instance = self._create_instance() expected = self.conn.get_diagnostics(instance) self.assertThat(fake_diagnostics, matchers.DictMatches(expected)) def test_get_vnc_console(self): instance = self._create_instance(obj=True) session = get_session() conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vm_ref = vm_utils.lookup(session, instance['name']) console = conn.get_vnc_console(self.context, instance) # Note(sulo): We dont care about session id in test # they will always differ so strip that out actual_path = console['internal_access_path'].split('&')[0] expected_path = "/console?ref=%s" % str(vm_ref) self.assertEqual(expected_path, actual_path) def test_get_vnc_console_for_rescue(self): instance = self._create_instance(obj=True) session = get_session() conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) rescue_vm = xenapi_fake.create_vm(instance['name'] + '-rescue', 'Running') # Set instance state to rescued instance['vm_state'] = 'rescued' console = conn.get_vnc_console(self.context, instance) # Note(sulo): We dont care about session id in test # they will always differ so strip that out actual_path = console['internal_access_path'].split('&')[0] expected_path = "/console?ref=%s" % str(rescue_vm) self.assertEqual(expected_path, actual_path) def test_get_vnc_console_instance_not_ready(self): instance = self._create_instance(obj=True, spawn=False) instance.vm_state = 'building' conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.InstanceNotFound, conn.get_vnc_console, self.context, instance) def test_get_vnc_console_rescue_not_ready(self): instance = self._create_instance(obj=True, spawn=False) instance.vm_state = 'rescued' conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.InstanceNotReady, conn.get_vnc_console, self.context, instance) def test_instance_snapshot_fails_with_no_primary_vdi(self): def create_bad_vbd(session, vm_ref, vdi_ref, userdevice, vbd_type='disk', read_only=False, bootable=False, osvol=False): vbd_rec = {'VM': vm_ref, 'VDI': vdi_ref, 'userdevice': 'fake', 'currently_attached': False} vbd_ref = xenapi_fake._create_object('VBD', vbd_rec) xenapi_fake.after_VBD_create(vbd_ref, vbd_rec) return vbd_ref self.stubs.Set(vm_utils, 'create_vbd', create_bad_vbd) stubs.stubout_instance_snapshot(self.stubs) # Stubbing out firewall driver as previous stub sets alters # xml rpc result parsing stubs.stubout_firewall_driver(self.stubs, self.conn) instance = self._create_instance() image_id = "my_snapshot_id" self.assertRaises(exception.NovaException, self.conn.snapshot, self.context, instance, image_id, lambda *args, **kwargs: None) def test_instance_snapshot(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) image_id = "my_snapshot_id" stubs.stubout_instance_snapshot(self.stubs) stubs.stubout_is_snapshot(self.stubs) # Stubbing out firewall driver as previous stub sets alters # xml rpc result parsing stubs.stubout_firewall_driver(self.stubs, self.conn) instance = self._create_instance() self.fake_upload_called = False def fake_image_upload(_self, ctx, session, inst, vdi_uuids, img_id): self.fake_upload_called = True self.assertEqual(ctx, self.context) self.assertEqual(inst, instance) self.assertIsInstance(vdi_uuids, list) self.assertEqual(img_id, image_id) self.stubs.Set(glance.GlanceStore, 'upload_image', fake_image_upload) self.conn.snapshot(self.context, instance, image_id, func_call_matcher.call) # Ensure VM was torn down vm_labels = [] for vm_ref in xenapi_fake.get_all('VM'): vm_rec = xenapi_fake.get_record('VM', vm_ref) if not vm_rec["is_control_domain"]: vm_labels.append(vm_rec["name_label"]) self.assertEqual(vm_labels, [instance['name']]) # Ensure VBDs were torn down vbd_labels = [] for vbd_ref in xenapi_fake.get_all('VBD'): vbd_rec = xenapi_fake.get_record('VBD', vbd_ref) vbd_labels.append(vbd_rec["vm_name_label"]) self.assertEqual(vbd_labels, [instance['name']]) # Ensure task states changed in correct order self.assertIsNone(func_call_matcher.match()) # Ensure VDIs were torn down for vdi_ref in xenapi_fake.get_all('VDI'): vdi_rec = xenapi_fake.get_record('VDI', vdi_ref) name_label = vdi_rec["name_label"] self.assertTrue(not name_label.endswith('snapshot')) self.assertTrue(self.fake_upload_called) def create_vm_record(self, conn, os_type, name): instances = conn.list_instances() self.assertEqual(instances, [name]) # Get Nova record for VM vm_info = conn.get_info({'name': name}) # Get XenAPI record for VM vms = [rec for ref, rec in xenapi_fake.get_all_records('VM').iteritems() if not rec['is_control_domain']] vm = vms[0] self.vm_info = vm_info self.vm = vm def check_vm_record(self, conn, instance_type_id, check_injection): flavor = db.flavor_get(conn, instance_type_id) mem_kib = long(flavor['memory_mb']) << 10 mem_bytes = str(mem_kib << 10) vcpus = flavor['vcpus'] vcpu_weight = flavor['vcpu_weight'] self.assertEqual(self.vm_info['max_mem'], mem_kib) self.assertEqual(self.vm_info['mem'], mem_kib) self.assertEqual(self.vm['memory_static_max'], mem_bytes) self.assertEqual(self.vm['memory_dynamic_max'], mem_bytes) self.assertEqual(self.vm['memory_dynamic_min'], mem_bytes) self.assertEqual(self.vm['VCPUs_max'], str(vcpus)) self.assertEqual(self.vm['VCPUs_at_startup'], str(vcpus)) if vcpu_weight == None: self.assertEqual(self.vm['VCPUs_params'], {}) else: self.assertEqual(self.vm['VCPUs_params'], {'weight': str(vcpu_weight), 'cap': '0'}) # Check that the VM is running according to Nova self.assertEqual(self.vm_info['state'], power_state.RUNNING) # Check that the VM is running according to XenAPI. self.assertEqual(self.vm['power_state'], 'Running') if check_injection: xenstore_data = self.vm['xenstore_data'] self.assertNotIn('vm-data/hostname', xenstore_data) key = 'vm-data/networking/DEADBEEF0001' xenstore_value = xenstore_data[key] tcpip_data = ast.literal_eval(xenstore_value) self.assertEqual(tcpip_data, {'broadcast': '192.168.1.255', 'dns': ['192.168.1.4', '192.168.1.3'], 'gateway': '192.168.1.1', 'gateway_v6': '2001:db8:0:1::1', 'ip6s': [{'enabled': '1', 'ip': '2001:db8:0:1::1', 'netmask': 64, 'gateway': '2001:db8:0:1::1'}], 'ips': [{'enabled': '1', 'ip': '192.168.1.100', 'netmask': '255.255.255.0', 'gateway': '192.168.1.1'}, {'enabled': '1', 'ip': '192.168.1.101', 'netmask': '255.255.255.0', 'gateway': '192.168.1.1'}], 'label': 'test1', 'mac': 'DE:AD:BE:EF:00:01'}) def check_vm_params_for_windows(self): self.assertEqual(self.vm['platform']['nx'], 'true') self.assertEqual(self.vm['HVM_boot_params'], {'order': 'dc'}) self.assertEqual(self.vm['HVM_boot_policy'], 'BIOS order') # check that these are not set self.assertEqual(self.vm['PV_args'], '') self.assertEqual(self.vm['PV_bootloader'], '') self.assertEqual(self.vm['PV_kernel'], '') self.assertEqual(self.vm['PV_ramdisk'], '') def check_vm_params_for_linux(self): self.assertEqual(self.vm['platform']['nx'], 'false') self.assertEqual(self.vm['PV_args'], '') self.assertEqual(self.vm['PV_bootloader'], 'pygrub') # check that these are not set self.assertEqual(self.vm['PV_kernel'], '') self.assertEqual(self.vm['PV_ramdisk'], '') self.assertEqual(self.vm['HVM_boot_params'], {}) self.assertEqual(self.vm['HVM_boot_policy'], '') def check_vm_params_for_linux_with_external_kernel(self): self.assertEqual(self.vm['platform']['nx'], 'false') self.assertEqual(self.vm['PV_args'], 'root=/dev/xvda1') self.assertNotEqual(self.vm['PV_kernel'], '') self.assertNotEqual(self.vm['PV_ramdisk'], '') # check that these are not set self.assertEqual(self.vm['HVM_boot_params'], {}) self.assertEqual(self.vm['HVM_boot_policy'], '') def _list_vdis(self): session = get_session() return session.call_xenapi('VDI.get_all') def _list_vms(self): session = get_session() return session.call_xenapi('VM.get_all') def _check_vdis(self, start_list, end_list): for vdi_ref in end_list: if vdi_ref not in start_list: vdi_rec = xenapi_fake.get_record('VDI', vdi_ref) # If the cache is turned on then the base disk will be # there even after the cleanup if 'other_config' in vdi_rec: if 'image-id' not in vdi_rec['other_config']: self.fail('Found unexpected VDI:%s' % vdi_ref) else: self.fail('Found unexpected VDI:%s' % vdi_ref) def _test_spawn(self, image_ref, kernel_id, ramdisk_id, instance_type_id="3", os_type="linux", hostname="test", architecture="x86-64", instance_id=1, injected_files=None, check_injection=False, create_record=True, empty_dns=False, block_device_info=None, key_data=None): if injected_files is None: injected_files = [] # Fake out inject_instance_metadata def fake_inject_instance_metadata(self, instance, vm): pass self.stubs.Set(vmops.VMOps, '_inject_instance_metadata', fake_inject_instance_metadata) if create_record: instance_values = {'id': instance_id, 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': image_ref, 'kernel_id': kernel_id, 'ramdisk_id': ramdisk_id, 'root_gb': 20, 'ephemeral_gb': 0, 'instance_type_id': instance_type_id, 'os_type': os_type, 'hostname': hostname, 'key_data': key_data, 'architecture': architecture} instance = create_instance_with_system_metadata(self.context, instance_values) else: instance = db.instance_get(self.context, instance_id) network_info = fake_network.fake_get_instance_nw_info(self.stubs) if empty_dns: # NOTE(tr3buchet): this is a terrible way to do this... network_info[0]['network']['subnets'][0]['dns'] = [] image_meta = {} if image_ref: image_meta = IMAGE_FIXTURES[image_ref]["image_meta"] self.conn.spawn(self.context, instance, image_meta, injected_files, 'herp', network_info, block_device_info) self.create_vm_record(self.conn, os_type, instance['name']) self.check_vm_record(self.conn, instance_type_id, check_injection) self.assertEqual(instance['os_type'], os_type) self.assertEqual(instance['architecture'], architecture) def test_spawn_ipxe_iso_success(self): self.mox.StubOutWithMock(vm_utils, 'get_sr_path') vm_utils.get_sr_path(mox.IgnoreArg()).AndReturn('/sr/path') self.flags(ipxe_network_name='test1', ipxe_boot_menu_url='http://boot.example.com', ipxe_mkisofs_cmd='/root/mkisofs', group='xenserver') self.mox.StubOutWithMock(self.conn._session, 'call_plugin_serialized') self.conn._session.call_plugin_serialized( 'ipxe', 'inject', '/sr/path', mox.IgnoreArg(), 'http://boot.example.com', '192.168.1.100', '255.255.255.0', '192.168.1.1', '192.168.1.3', '/root/mkisofs') self.mox.ReplayAll() self._test_spawn(IMAGE_IPXE_ISO, None, None) def test_spawn_ipxe_iso_no_network_name(self): self.flags(ipxe_network_name=None, ipxe_boot_menu_url='http://boot.example.com', group='xenserver') # call_plugin_serialized shouldn't be called self.mox.StubOutWithMock(self.conn._session, 'call_plugin_serialized') self.mox.ReplayAll() self._test_spawn(IMAGE_IPXE_ISO, None, None) def test_spawn_ipxe_iso_no_boot_menu_url(self): self.flags(ipxe_network_name='test1', ipxe_boot_menu_url=None, group='xenserver') # call_plugin_serialized shouldn't be called self.mox.StubOutWithMock(self.conn._session, 'call_plugin_serialized') self.mox.ReplayAll() self._test_spawn(IMAGE_IPXE_ISO, None, None) def test_spawn_ipxe_iso_unknown_network_name(self): self.flags(ipxe_network_name='test2', ipxe_boot_menu_url='http://boot.example.com', group='xenserver') # call_plugin_serialized shouldn't be called self.mox.StubOutWithMock(self.conn._session, 'call_plugin_serialized') self.mox.ReplayAll() self._test_spawn(IMAGE_IPXE_ISO, None, None) def test_spawn_empty_dns(self): # Test spawning with an empty dns list. self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64", empty_dns=True) self.check_vm_params_for_linux() def test_spawn_not_enough_memory(self): self.assertRaises(exception.InsufficientFreeMemory, self._test_spawn, '1', 2, 3, "4") # m1.xlarge def test_spawn_fail_cleanup_1(self): """Simulates an error while downloading an image. Verifies that the VM and VDIs created are properly cleaned up. """ vdi_recs_start = self._list_vdis() start_vms = self._list_vms() stubs.stubout_fetch_disk_image(self.stubs, raise_failure=True) self.assertRaises(xenapi_fake.Failure, self._test_spawn, '1', 2, 3) # No additional VDI should be found. vdi_recs_end = self._list_vdis() end_vms = self._list_vms() self._check_vdis(vdi_recs_start, vdi_recs_end) # No additional VMs should be found. self.assertEqual(start_vms, end_vms) def test_spawn_fail_cleanup_2(self): """Simulates an error while creating VM record. Verifies that the VM and VDIs created are properly cleaned up. """ vdi_recs_start = self._list_vdis() start_vms = self._list_vms() stubs.stubout_create_vm(self.stubs) self.assertRaises(xenapi_fake.Failure, self._test_spawn, '1', 2, 3) # No additional VDI should be found. vdi_recs_end = self._list_vdis() end_vms = self._list_vms() self._check_vdis(vdi_recs_start, vdi_recs_end) # No additional VMs should be found. self.assertEqual(start_vms, end_vms) def test_spawn_fail_cleanup_3(self): """Simulates an error while attaching disks. Verifies that the VM and VDIs created are properly cleaned up. """ stubs.stubout_attach_disks(self.stubs) vdi_recs_start = self._list_vdis() start_vms = self._list_vms() self.assertRaises(xenapi_fake.Failure, self._test_spawn, '1', 2, 3) # No additional VDI should be found. vdi_recs_end = self._list_vdis() end_vms = self._list_vms() self._check_vdis(vdi_recs_start, vdi_recs_end) # No additional VMs should be found. self.assertEqual(start_vms, end_vms) def test_spawn_raw_glance(self): self._test_spawn(IMAGE_RAW, None, None, os_type=None) self.check_vm_params_for_windows() def test_spawn_vhd_glance_linux(self): self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") self.check_vm_params_for_linux() def test_spawn_vhd_glance_windows(self): self._test_spawn(IMAGE_VHD, None, None, os_type="windows", architecture="i386", instance_type_id=5) self.check_vm_params_for_windows() def test_spawn_iso_glance(self): self._test_spawn(IMAGE_ISO, None, None, os_type="windows", architecture="i386") self.check_vm_params_for_windows() def test_spawn_glance(self): def fake_fetch_disk_image(context, session, instance, name_label, image_id, image_type): sr_ref = vm_utils.safe_find_sr(session) image_type_str = vm_utils.ImageType.to_string(image_type) vdi_ref = vm_utils.create_vdi(session, sr_ref, instance, name_label, image_type_str, "20") vdi_role = vm_utils.ImageType.get_role(image_type) vdi_uuid = session.call_xenapi("VDI.get_uuid", vdi_ref) return {vdi_role: dict(uuid=vdi_uuid, file=None)} self.stubs.Set(vm_utils, '_fetch_disk_image', fake_fetch_disk_image) self._test_spawn(IMAGE_MACHINE, IMAGE_KERNEL, IMAGE_RAMDISK) self.check_vm_params_for_linux_with_external_kernel() def test_spawn_boot_from_volume_no_image_meta(self): dev_info = get_fake_device_info() self._test_spawn(None, None, None, block_device_info=dev_info) def test_spawn_boot_from_volume_no_glance_image_meta(self): dev_info = get_fake_device_info() self._test_spawn(IMAGE_FROM_VOLUME, None, None, block_device_info=dev_info) def test_spawn_boot_from_volume_with_image_meta(self): dev_info = get_fake_device_info() self._test_spawn(IMAGE_VHD, None, None, block_device_info=dev_info) def test_spawn_netinject_file(self): self.flags(flat_injected=True) db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _tee_handler(cmd, **kwargs): input = kwargs.get('process_input', None) self.assertIsNotNone(input) config = [line.strip() for line in input.split("\n")] # Find the start of eth0 configuration and check it index = config.index('auto eth0') self.assertEqual(config[index + 1:index + 8], [ 'iface eth0 inet static', 'address 192.168.1.100', 'netmask 255.255.255.0', 'broadcast 192.168.1.255', 'gateway 192.168.1.1', 'dns-nameservers 192.168.1.3 192.168.1.4', '']) self._tee_executed = True return '', '' def _readlink_handler(cmd_parts, **kwargs): return os.path.realpath(cmd_parts[2]), '' fake_processutils.fake_execute_set_repliers([ # Capture the tee .../etc/network/interfaces command (r'tee.*interfaces', _tee_handler), (r'readlink -nm.*', _readlink_handler), ]) self._test_spawn(IMAGE_MACHINE, IMAGE_KERNEL, IMAGE_RAMDISK, check_injection=True) self.assertTrue(self._tee_executed) def test_spawn_netinject_xenstore(self): db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _mount_handler(cmd, *ignore_args, **ignore_kwargs): # When mounting, create real files under the mountpoint to simulate # files in the mounted filesystem # mount point will be the last item of the command list self._tmpdir = cmd[len(cmd) - 1] LOG.debug(_('Creating files in %s to simulate guest agent'), self._tmpdir) os.makedirs(os.path.join(self._tmpdir, 'usr', 'sbin')) # Touch the file using open open(os.path.join(self._tmpdir, 'usr', 'sbin', 'xe-update-networking'), 'w').close() return '', '' def _umount_handler(cmd, *ignore_args, **ignore_kwargs): # Umount would normall make files in the m,ounted filesystem # disappear, so do that here LOG.debug(_('Removing simulated guest agent files in %s'), self._tmpdir) os.remove(os.path.join(self._tmpdir, 'usr', 'sbin', 'xe-update-networking')) os.rmdir(os.path.join(self._tmpdir, 'usr', 'sbin')) os.rmdir(os.path.join(self._tmpdir, 'usr')) return '', '' def _tee_handler(cmd, *ignore_args, **ignore_kwargs): self._tee_executed = True return '', '' fake_processutils.fake_execute_set_repliers([ (r'mount', _mount_handler), (r'umount', _umount_handler), (r'tee.*interfaces', _tee_handler)]) self._test_spawn('1', 2, 3, check_injection=True) # tee must not run in this case, where an injection-capable # guest agent is detected self.assertFalse(self._tee_executed) def test_spawn_injects_auto_disk_config_to_xenstore(self): instance = self._create_instance(spawn=False) self.mox.StubOutWithMock(self.conn._vmops, '_inject_auto_disk_config') self.conn._vmops._inject_auto_disk_config(instance, mox.IgnoreArg()) self.mox.ReplayAll() self.conn.spawn(self.context, instance, IMAGE_FIXTURES['1']["image_meta"], [], 'herp', '') def test_spawn_vlanmanager(self): self.flags(network_manager='nova.network.manager.VlanManager', vlan_interface='fake0') def dummy(*args, **kwargs): pass self.stubs.Set(vmops.VMOps, '_create_vifs', dummy) # Reset network table xenapi_fake.reset_table('network') # Instance id = 2 will use vlan network (see db/fakes.py) ctxt = self.context.elevated() self.network.conductor_api = conductor_api.LocalAPI() instance = self._create_instance(2, False) networks = self.network.db.network_get_all(ctxt) with mock.patch('nova.objects.network.Network._from_db_object'): for network in networks: self.network.set_network_host(ctxt, network) self.network.allocate_for_instance(ctxt, instance_id=2, instance_uuid='00000000-0000-0000-0000-000000000002', host=CONF.host, vpn=None, rxtx_factor=3, project_id=self.project_id, macs=None) self._test_spawn(IMAGE_MACHINE, IMAGE_KERNEL, IMAGE_RAMDISK, instance_id=2, create_record=False) # TODO(salvatore-orlando): a complete test here would require # a check for making sure the bridge for the VM's VIF is # consistent with bridge specified in nova db def test_spawn_with_network_qos(self): self._create_instance() for vif_ref in xenapi_fake.get_all('VIF'): vif_rec = xenapi_fake.get_record('VIF', vif_ref) self.assertEqual(vif_rec['qos_algorithm_type'], 'ratelimit') self.assertEqual(vif_rec['qos_algorithm_params']['kbps'], str(3 * 10 * 1024)) def test_spawn_ssh_key_injection(self): # Test spawning with key_data on an instance. Should use # agent file injection. self.flags(use_agent_default=True, group='xenserver') actual_injected_files = [] def fake_inject_file(self, method, args): path = base64.b64decode(args['b64_path']) contents = base64.b64decode(args['b64_contents']) actual_injected_files.append((path, contents)) return jsonutils.dumps({'returncode': '0', 'message': 'success'}) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_inject_file', fake_inject_file) def fake_encrypt_text(sshkey, new_pass): self.assertEqual("ssh-rsa fake_keydata", sshkey) return "fake" self.stubs.Set(crypto, 'ssh_encrypt_text', fake_encrypt_text) expected_data = ('\n# The following ssh key was injected by ' 'Nova\nssh-rsa fake_keydata\n') injected_files = [('/root/.ssh/authorized_keys', expected_data)] self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64", key_data='ssh-rsa fake_keydata') self.assertEqual(actual_injected_files, injected_files) def test_spawn_ssh_key_injection_non_rsa(self): # Test spawning with key_data on an instance. Should use # agent file injection. self.flags(use_agent_default=True, group='xenserver') actual_injected_files = [] def fake_inject_file(self, method, args): path = base64.b64decode(args['b64_path']) contents = base64.b64decode(args['b64_contents']) actual_injected_files.append((path, contents)) return jsonutils.dumps({'returncode': '0', 'message': 'success'}) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_inject_file', fake_inject_file) def fake_encrypt_text(sshkey, new_pass): raise NotImplementedError("Should not be called") self.stubs.Set(crypto, 'ssh_encrypt_text', fake_encrypt_text) expected_data = ('\n# The following ssh key was injected by ' 'Nova\nssh-dsa fake_keydata\n') injected_files = [('/root/.ssh/authorized_keys', expected_data)] self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64", key_data='ssh-dsa fake_keydata') self.assertEqual(actual_injected_files, injected_files) def test_spawn_injected_files(self): # Test spawning with injected_files. self.flags(use_agent_default=True, group='xenserver') actual_injected_files = [] def fake_inject_file(self, method, args): path = base64.b64decode(args['b64_path']) contents = base64.b64decode(args['b64_contents']) actual_injected_files.append((path, contents)) return jsonutils.dumps({'returncode': '0', 'message': 'success'}) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_inject_file', fake_inject_file) injected_files = [('/tmp/foo', 'foobar')] self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64", injected_files=injected_files) self.check_vm_params_for_linux() self.assertEqual(actual_injected_files, injected_files) def test_spawn_agent_upgrade(self): self.flags(use_agent_default=True, group='xenserver') actual_injected_files = [] def fake_agent_build(_self, *args): return {"version": "1.1.0", "architecture": "x86-64", "hypervisor": "xen", "os": "windows", "url": "url", "md5hash": "asdf"} self.stubs.Set(self.conn.virtapi, 'agent_build_get_by_triple', fake_agent_build) self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") def test_spawn_agent_upgrade_fails_silently(self): self.flags(use_agent_default=True, group='xenserver') actual_injected_files = [] def fake_agent_build(_self, *args): return {"version": "1.1.0", "architecture": "x86-64", "hypervisor": "xen", "os": "windows", "url": "url", "md5hash": "asdf"} self.stubs.Set(self.conn.virtapi, 'agent_build_get_by_triple', fake_agent_build) def fake_agent_update(self, method, args): raise xenapi_fake.Failure(["fake_error"]) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_agentupdate', fake_agent_update) self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") def test_spawn_with_resetnetwork_alternative_returncode(self): self.flags(use_agent_default=True, group='xenserver') def fake_resetnetwork(self, method, args): fake_resetnetwork.called = True #NOTE(johngarbutt): as returned by FreeBSD and Gentoo return jsonutils.dumps({'returncode': '500', 'message': 'success'}) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_resetnetwork', fake_resetnetwork) fake_resetnetwork.called = False self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") self.assertTrue(fake_resetnetwork.called) def _test_spawn_fails_silently_with(self, trigger, expected_exception): self.flags(use_agent_default=True, agent_version_timeout=0, group='xenserver') actual_injected_files = [] def fake_agent_version(self, method, args): raise xenapi_fake.Failure([trigger]) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_version', fake_agent_version) def fake_add_instance_fault(*args, **kwargs): self.assertEqual(expected_exception, args[3]) self.stubs.Set(compute_utils, 'add_instance_fault_from_exc', fake_add_instance_fault) self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") def test_spawn_fails_with_agent_timeout(self): self._test_spawn_fails_silently_with("TIMEOUT:fake", exception.AgentTimeout) def test_spawn_fails_with_agent_not_implemented(self): self._test_spawn_fails_silently_with("NOT IMPLEMENTED:fake", exception.AgentNotImplemented) def test_spawn_fails_with_agent_error(self): self._test_spawn_fails_silently_with("fake_error", exception.AgentError) def test_spawn_fails_with_agent_bad_return(self): self.flags(use_agent_default=True, agent_version_timeout=0, group='xenserver') actual_injected_files = [] def fake_agent_version(self, method, args): return xenapi_fake.as_json(returncode='-1', message='fake') self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_version', fake_agent_version) exception.AgentError self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") def test_spawn_fails_agent_not_implemented(self): # Test spawning with injected_files. self.flags(use_agent_default=True, agent_version_timeout=0, group='xenserver') actual_injected_files = [] def fake_agent_version(self, method, args): raise xenapi_fake.Failure(["NOT IMPLEMENTED:fake"]) self.stubs.Set(stubs.FakeSessionForVMTests, '_plugin_agent_version', fake_agent_version) exception.AgentNotImplemented self._test_spawn(IMAGE_VHD, None, None, os_type="linux", architecture="x86-64") def test_rescue(self): instance = self._create_instance(spawn=False) xenapi_fake.create_vm(instance['name'], 'Running') session = get_session() vm_ref = vm_utils.lookup(session, instance['name']) swap_vdi_ref = xenapi_fake.create_vdi('swap', None) root_vdi_ref = xenapi_fake.create_vdi('root', None) xenapi_fake.create_vbd(vm_ref, swap_vdi_ref, userdevice=1) xenapi_fake.create_vbd(vm_ref, root_vdi_ref, userdevice=0) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) image_meta = {'id': IMAGE_VHD, 'disk_format': 'vhd'} conn.rescue(self.context, instance, [], image_meta, '') vm = xenapi_fake.get_record('VM', vm_ref) rescue_name = "%s-rescue" % vm["name_label"] rescue_ref = vm_utils.lookup(session, rescue_name) rescue_vm = xenapi_fake.get_record('VM', rescue_ref) vdi_refs = [] for vbd_ref in rescue_vm['VBDs']: vdi_refs.append(xenapi_fake.get_record('VBD', vbd_ref)['VDI']) self.assertNotIn(swap_vdi_ref, vdi_refs) self.assertIn(root_vdi_ref, vdi_refs) def test_rescue_preserve_disk_on_failure(self): # test that the original disk is preserved if rescue setup fails # bug #1227898 instance = self._create_instance() session = get_session() image_meta = {'id': IMAGE_VHD, 'disk_format': 'vhd'} vm_ref = vm_utils.lookup(session, instance['name']) vdi_ref, vdi_rec = vm_utils.get_vdi_for_vm_safely(session, vm_ref) # raise an error in the spawn setup process and trigger the # undo manager logic: def fake_start(*args, **kwargs): raise test.TestingException('Start Error') self.stubs.Set(self.conn._vmops, '_start', fake_start) self.assertRaises(test.TestingException, self.conn.rescue, self.context, instance, [], image_meta, '') # confirm original disk still exists: vdi_ref2, vdi_rec2 = vm_utils.get_vdi_for_vm_safely(session, vm_ref) self.assertEqual(vdi_ref, vdi_ref2) self.assertEqual(vdi_rec['uuid'], vdi_rec2['uuid']) def test_unrescue(self): instance = self._create_instance() conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) # Unrescue expects the original instance to be powered off conn.power_off(instance) rescue_vm = xenapi_fake.create_vm(instance['name'] + '-rescue', 'Running') conn.unrescue(instance, None) def test_unrescue_not_in_rescue(self): instance = self._create_instance() conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) # Ensure that it will not unrescue a non-rescued instance. self.assertRaises(exception.InstanceNotInRescueMode, conn.unrescue, instance, None) def test_finish_revert_migration(self): instance = self._create_instance() class VMOpsMock(): def __init__(self): self.finish_revert_migration_called = False def finish_revert_migration(self, context, instance, block_info, power_on): self.finish_revert_migration_called = True conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) conn._vmops = VMOpsMock() conn.finish_revert_migration(self.context, instance, None) self.assertTrue(conn._vmops.finish_revert_migration_called) def test_reboot_hard(self): instance = self._create_instance() conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) conn.reboot(self.context, instance, None, "HARD") def test_poll_rebooting_instances(self): self.mox.StubOutWithMock(compute_api.API, 'reboot') compute_api.API.reboot(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() instance = self._create_instance() instances = [instance] conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) conn.poll_rebooting_instances(60, instances) def test_reboot_soft(self): instance = self._create_instance() conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) conn.reboot(self.context, instance, None, "SOFT") def test_reboot_halted(self): session = get_session() instance = self._create_instance(spawn=False) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) xenapi_fake.create_vm(instance['name'], 'Halted') conn.reboot(self.context, instance, None, "SOFT") vm_ref = vm_utils.lookup(session, instance['name']) vm = xenapi_fake.get_record('VM', vm_ref) self.assertEqual(vm['power_state'], 'Running') def test_reboot_unknown_state(self): instance = self._create_instance(spawn=False) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) xenapi_fake.create_vm(instance['name'], 'Unknown') self.assertRaises(xenapi_fake.Failure, conn.reboot, self.context, instance, None, "SOFT") def test_reboot_rescued(self): instance = self._create_instance() instance['vm_state'] = vm_states.RESCUED conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) real_result = vm_utils.lookup(conn._session, instance['name']) self.mox.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup(conn._session, instance['name'], True).AndReturn(real_result) self.mox.ReplayAll() conn.reboot(self.context, instance, None, "SOFT") def test_get_console_output_succeeds(self): def fake_get_console_output(instance): self.assertEqual("instance", instance) return "console_log" self.stubs.Set(self.conn._vmops, 'get_console_output', fake_get_console_output) self.assertEqual(self.conn.get_console_output('context', "instance"), "console_log") def _test_maintenance_mode(self, find_host, find_aggregate): real_call_xenapi = self.conn._session.call_xenapi instance = self._create_instance(spawn=True) api_calls = {} # Record all the xenapi calls, and return a fake list of hosts # for the host.get_all call def fake_call_xenapi(method, *args): api_calls[method] = args if method == 'host.get_all': return ['foo', 'bar', 'baz'] return real_call_xenapi(method, *args) self.stubs.Set(self.conn._session, 'call_xenapi', fake_call_xenapi) def fake_aggregate_get(context, host, key): if find_aggregate: return [test_aggregate.fake_aggregate] else: return [] self.stubs.Set(db, 'aggregate_get_by_host', fake_aggregate_get) def fake_host_find(context, session, src, dst): if find_host: return 'bar' else: raise exception.NoValidHost("I saw this one coming...") self.stubs.Set(host, '_host_find', fake_host_find) result = self.conn.host_maintenance_mode('bar', 'on_maintenance') self.assertEqual(result, 'on_maintenance') # We expect the VM.pool_migrate call to have been called to # migrate our instance to the 'bar' host vm_ref = vm_utils.lookup(self.conn._session, instance['name']) host_ref = "foo" expected = (vm_ref, host_ref, {"live": "true"}) self.assertEqual(api_calls.get('VM.pool_migrate'), expected) instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.assertEqual(instance['vm_state'], vm_states.ACTIVE) self.assertEqual(instance['task_state'], task_states.MIGRATING) def test_maintenance_mode(self): self._test_maintenance_mode(True, True) def test_maintenance_mode_no_host(self): self.assertRaises(exception.NoValidHost, self._test_maintenance_mode, False, True) def test_maintenance_mode_no_aggregate(self): self.assertRaises(exception.NotFound, self._test_maintenance_mode, True, False) def test_uuid_find(self): self.mox.StubOutWithMock(db, 'instance_get_all_by_host') fake_inst = fake_instance.fake_db_instance(id=123) fake_inst2 = fake_instance.fake_db_instance(id=456) db.instance_get_all_by_host(self.context, fake_inst['host'], columns_to_join=None, use_slave=False ).AndReturn([fake_inst, fake_inst2]) self.mox.ReplayAll() expected_name = CONF.instance_name_template % fake_inst['id'] inst_uuid = host._uuid_find(self.context, fake_inst['host'], expected_name) self.assertEqual(inst_uuid, fake_inst['uuid']) def test_session_virtapi(self): was = {'called': False} def fake_aggregate_get_by_host(self, *args, **kwargs): was['called'] = True raise test.TestingException() self.stubs.Set(db, "aggregate_get_by_host", fake_aggregate_get_by_host) self.stubs.Set(self.conn._session, "is_slave", True) self.assertRaises(test.TestingException, self.conn._session._get_host_uuid) self.assertTrue(was['called']) def test_per_instance_usage_running(self): instance = self._create_instance(spawn=True) flavor = flavors.get_flavor(3) expected = {instance['uuid']: {'memory_mb': flavor['memory_mb'], 'uuid': instance['uuid']}} actual = self.conn.get_per_instance_usage() self.assertEqual(expected, actual) # Paused instances still consume resources: self.conn.pause(instance) actual = self.conn.get_per_instance_usage() self.assertEqual(expected, actual) def test_per_instance_usage_suspended(self): # Suspended instances do not consume memory: instance = self._create_instance(spawn=True) self.conn.suspend(instance) actual = self.conn.get_per_instance_usage() self.assertEqual({}, actual) def test_per_instance_usage_halted(self): instance = self._create_instance(spawn=True) self.conn.power_off(instance) actual = self.conn.get_per_instance_usage() self.assertEqual({}, actual) def _create_instance(self, instance_id=1, spawn=True, obj=False, **attrs): """Creates and spawns a test instance.""" instance_values = { 'id': instance_id, 'uuid': '00000000-0000-0000-0000-00000000000%d' % instance_id, 'display_name': 'host-%d' % instance_id, 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': 1, 'kernel_id': 2, 'ramdisk_id': 3, 'root_gb': 80, 'ephemeral_gb': 0, 'instance_type_id': '3', # m1.large 'os_type': 'linux', 'vm_mode': 'hvm', 'architecture': 'x86-64'} instance_values.update(attrs) instance = create_instance_with_system_metadata(self.context, instance_values) network_info = fake_network.fake_get_instance_nw_info(self.stubs) image_meta = {'id': IMAGE_VHD, 'disk_format': 'vhd'} if spawn: self.conn.spawn(self.context, instance, image_meta, [], 'herp', network_info) if obj: instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance, expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS) return instance def test_destroy_clean_up_kernel_and_ramdisk(self): def fake_lookup_kernel_ramdisk(session, vm_ref): return "kernel", "ramdisk" self.stubs.Set(vm_utils, "lookup_kernel_ramdisk", fake_lookup_kernel_ramdisk) def fake_destroy_kernel_ramdisk(session, instance, kernel, ramdisk): fake_destroy_kernel_ramdisk.called = True self.assertEqual("kernel", kernel) self.assertEqual("ramdisk", ramdisk) fake_destroy_kernel_ramdisk.called = False self.stubs.Set(vm_utils, "destroy_kernel_ramdisk", fake_destroy_kernel_ramdisk) instance = self._create_instance(spawn=True) network_info = fake_network.fake_get_instance_nw_info(self.stubs) self.conn.destroy(self.context, instance, network_info) vm_ref = vm_utils.lookup(self.conn._session, instance['name']) self.assertIsNone(vm_ref) self.assertTrue(fake_destroy_kernel_ramdisk.called) class XenAPIDiffieHellmanTestCase(test.NoDBTestCase): """Unit tests for Diffie-Hellman code.""" def setUp(self): super(XenAPIDiffieHellmanTestCase, self).setUp() self.alice = agent.SimpleDH() self.bob = agent.SimpleDH() def test_shared(self): alice_pub = self.alice.get_public() bob_pub = self.bob.get_public() alice_shared = self.alice.compute_shared(bob_pub) bob_shared = self.bob.compute_shared(alice_pub) self.assertEqual(alice_shared, bob_shared) def _test_encryption(self, message): enc = self.alice.encrypt(message) self.assertFalse(enc.endswith('\n')) dec = self.bob.decrypt(enc) self.assertEqual(dec, message) def test_encrypt_simple_message(self): self._test_encryption('This is a simple message.') def test_encrypt_message_with_newlines_at_end(self): self._test_encryption('This message has a newline at the end.\n') def test_encrypt_many_newlines_at_end(self): self._test_encryption('Message with lotsa newlines.\n\n\n') def test_encrypt_newlines_inside_message(self): self._test_encryption('Message\nwith\ninterior\nnewlines.') def test_encrypt_with_leading_newlines(self): self._test_encryption('\n\nMessage with leading newlines.') def test_encrypt_really_long_message(self): self._test_encryption(''.join(['abcd' for i in xrange(1024)])) # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIMigrateInstance(stubs.XenAPITestBase): """Unit test for verifying migration-related actions.""" def setUp(self): super(XenAPIMigrateInstance, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) db_fakes.stub_out_db_instance_api(self.stubs) xenapi_fake.create_network('fake', 'fake_br1') self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.instance_values = {'id': 1, 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': 1, 'kernel_id': None, 'ramdisk_id': None, 'root_gb': 80, 'ephemeral_gb': 0, 'instance_type_id': '3', # m1.large 'os_type': 'linux', 'architecture': 'x86-64'} migration_values = { 'source_compute': 'nova-compute', 'dest_compute': 'nova-compute', 'dest_host': '10.127.5.114', 'status': 'post-migrating', 'instance_uuid': '15f23e6a-cc6e-4d22-b651-d9bdaac316f7', 'old_instance_type_id': 5, 'new_instance_type_id': 1 } self.migration = db.migration_create( context.get_admin_context(), migration_values) fake_processutils.stub_out_processutils_execute(self.stubs) stubs.stub_out_migration_methods(self.stubs) stubs.stubout_get_this_vm_uuid(self.stubs) def fake_inject_instance_metadata(self, instance, vm): pass self.stubs.Set(vmops.VMOps, '_inject_instance_metadata', fake_inject_instance_metadata) def test_migrate_disk_and_power_off(self): instance = db.instance_create(self.context, self.instance_values) xenapi_fake.create_vm(instance['name'], 'Running') flavor = {"root_gb": 80, 'ephemeral_gb': 0} conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) conn.migrate_disk_and_power_off(self.context, instance, '127.0.0.1', flavor, None) def test_migrate_disk_and_power_off_passes_exceptions(self): instance = db.instance_create(self.context, self.instance_values) xenapi_fake.create_vm(instance['name'], 'Running') flavor = {"root_gb": 80, 'ephemeral_gb': 0} def fake_raise(*args, **kwargs): raise exception.MigrationError(reason='test failure') self.stubs.Set(vmops.VMOps, "_migrate_disk_resizing_up", fake_raise) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.MigrationError, conn.migrate_disk_and_power_off, self.context, instance, '127.0.0.1', flavor, None) def test_migrate_disk_and_power_off_throws_on_zero_gb_resize_down(self): instance = db.instance_create(self.context, self.instance_values) flavor = {"root_gb": 0, 'ephemeral_gb': 0} conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.ResizeError, conn.migrate_disk_and_power_off, self.context, instance, 'fake_dest', flavor, None) def test_migrate_disk_and_power_off_with_zero_gb_old_and_new_works(self): flavor = {"root_gb": 0, 'ephemeral_gb': 0} values = copy.copy(self.instance_values) values["root_gb"] = 0 values["ephemeral_gb"] = 0 instance = db.instance_create(self.context, values) xenapi_fake.create_vm(instance['name'], 'Running') conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) conn.migrate_disk_and_power_off(self.context, instance, '127.0.0.1', flavor, None) def _test_revert_migrate(self, power_on): instance = create_instance_with_system_metadata(self.context, self.instance_values) self.called = False self.fake_vm_start_called = False self.fake_finish_revert_migration_called = False context = 'fake_context' def fake_vm_start(*args, **kwargs): self.fake_vm_start_called = True def fake_vdi_resize(*args, **kwargs): self.called = True def fake_finish_revert_migration(*args, **kwargs): self.fake_finish_revert_migration_called = True self.stubs.Set(stubs.FakeSessionForVMTests, "VDI_resize_online", fake_vdi_resize) self.stubs.Set(vmops.VMOps, '_start', fake_vm_start) self.stubs.Set(vmops.VMOps, 'finish_revert_migration', fake_finish_revert_migration) stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests, product_version=(4, 0, 0), product_brand='XenServer') conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) network_info = fake_network.fake_get_instance_nw_info(self.stubs) image_meta = {'id': instance['image_ref'], 'disk_format': 'vhd'} base = xenapi_fake.create_vdi('hurr', 'fake') base_uuid = xenapi_fake.get_record('VDI', base)['uuid'] cow = xenapi_fake.create_vdi('durr', 'fake') cow_uuid = xenapi_fake.get_record('VDI', cow)['uuid'] conn.finish_migration(self.context, self.migration, instance, dict(base_copy=base_uuid, cow=cow_uuid), network_info, image_meta, resize_instance=True, block_device_info=None, power_on=power_on) self.assertEqual(self.called, True) self.assertEqual(self.fake_vm_start_called, power_on) conn.finish_revert_migration(context, instance, network_info) self.assertEqual(self.fake_finish_revert_migration_called, True) def test_revert_migrate_power_on(self): self._test_revert_migrate(True) def test_revert_migrate_power_off(self): self._test_revert_migrate(False) def _test_finish_migrate(self, power_on): instance = create_instance_with_system_metadata(self.context, self.instance_values) self.called = False self.fake_vm_start_called = False def fake_vm_start(*args, **kwargs): self.fake_vm_start_called = True def fake_vdi_resize(*args, **kwargs): self.called = True self.stubs.Set(vmops.VMOps, '_start', fake_vm_start) self.stubs.Set(stubs.FakeSessionForVMTests, "VDI_resize_online", fake_vdi_resize) stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests, product_version=(4, 0, 0), product_brand='XenServer') conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) network_info = fake_network.fake_get_instance_nw_info(self.stubs) image_meta = {'id': instance['image_ref'], 'disk_format': 'vhd'} conn.finish_migration(self.context, self.migration, instance, dict(base_copy='hurr', cow='durr'), network_info, image_meta, resize_instance=True, block_device_info=None, power_on=power_on) self.assertEqual(self.called, True) self.assertEqual(self.fake_vm_start_called, power_on) def test_finish_migrate_power_on(self): self._test_finish_migrate(True) def test_finish_migrate_power_off(self): self._test_finish_migrate(False) def test_finish_migrate_no_local_storage(self): values = copy.copy(self.instance_values) values["root_gb"] = 0 values["ephemeral_gb"] = 0 instance = create_instance_with_system_metadata(self.context, values) def fake_vdi_resize(*args, **kwargs): raise Exception("This shouldn't be called") self.stubs.Set(stubs.FakeSessionForVMTests, "VDI_resize_online", fake_vdi_resize) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) network_info = fake_network.fake_get_instance_nw_info(self.stubs) image_meta = {'id': instance['image_ref'], 'disk_format': 'vhd'} conn.finish_migration(self.context, self.migration, instance, dict(base_copy='hurr', cow='durr'), network_info, image_meta, resize_instance=True) def test_finish_migrate_no_resize_vdi(self): instance = create_instance_with_system_metadata(self.context, self.instance_values) def fake_vdi_resize(*args, **kwargs): raise Exception("This shouldn't be called") self.stubs.Set(stubs.FakeSessionForVMTests, "VDI_resize_online", fake_vdi_resize) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) network_info = fake_network.fake_get_instance_nw_info(self.stubs) # Resize instance would be determined by the compute call image_meta = {'id': instance['image_ref'], 'disk_format': 'vhd'} conn.finish_migration(self.context, self.migration, instance, dict(base_copy='hurr', cow='durr'), network_info, image_meta, resize_instance=False) @stub_vm_utils_with_vdi_attached_here def test_migrate_too_many_partitions_no_resize_down(self): instance_values = self.instance_values instance = db.instance_create(self.context, instance_values) xenapi_fake.create_vm(instance['name'], 'Running') flavor = db.flavor_get_by_name(self.context, 'm1.small') conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_get_partitions(partition): return [(1, 2, 3, 4), (1, 2, 3, 4)] self.stubs.Set(vm_utils, '_get_partitions', fake_get_partitions) self.assertRaises(exception.InstanceFaultRollback, conn.migrate_disk_and_power_off, self.context, instance, '127.0.0.1', flavor, None) @stub_vm_utils_with_vdi_attached_here def test_migrate_bad_fs_type_no_resize_down(self): instance_values = self.instance_values instance = db.instance_create(self.context, instance_values) xenapi_fake.create_vm(instance['name'], 'Running') flavor = db.flavor_get_by_name(self.context, 'm1.small') conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_get_partitions(partition): return [(1, 2, 3, "ext2")] self.stubs.Set(vm_utils, '_get_partitions', fake_get_partitions) self.assertRaises(exception.InstanceFaultRollback, conn.migrate_disk_and_power_off, self.context, instance, '127.0.0.1', flavor, None) def test_migrate_rollback_when_resize_down_fs_fails(self): conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vmops = conn._vmops virtapi = vmops._virtapi self.mox.StubOutWithMock(vmops, '_resize_ensure_vm_is_shutdown') self.mox.StubOutWithMock(vmops, '_apply_orig_vm_name_label') self.mox.StubOutWithMock(vm_utils, 'resize_disk') self.mox.StubOutWithMock(vm_utils, 'migrate_vhd') self.mox.StubOutWithMock(vm_utils, 'destroy_vdi') self.mox.StubOutWithMock(vm_utils, 'get_vdi_for_vm_safely') self.mox.StubOutWithMock(vmops, '_restore_orig_vm_and_cleanup_orphan') self.mox.StubOutWithMock(virtapi, 'instance_update') instance = {'auto_disk_config': True, 'uuid': 'uuid'} vm_ref = "vm_ref" dest = "dest" flavor = "type" sr_path = "sr_path" virtapi.instance_update(self.context, 'uuid', {'progress': 20.0}) vmops._resize_ensure_vm_is_shutdown(instance, vm_ref) vmops._apply_orig_vm_name_label(instance, vm_ref) old_vdi_ref = "old_ref" vm_utils.get_vdi_for_vm_safely(vmops._session, vm_ref).AndReturn( (old_vdi_ref, None)) virtapi.instance_update(self.context, 'uuid', {'progress': 40.0}) new_vdi_ref = "new_ref" new_vdi_uuid = "new_uuid" vm_utils.resize_disk(vmops._session, instance, old_vdi_ref, flavor).AndReturn((new_vdi_ref, new_vdi_uuid)) virtapi.instance_update(self.context, 'uuid', {'progress': 60.0}) vm_utils.migrate_vhd(vmops._session, instance, new_vdi_uuid, dest, sr_path, 0).AndRaise( exception.ResizeError(reason="asdf")) vm_utils.destroy_vdi(vmops._session, new_vdi_ref) vmops._restore_orig_vm_and_cleanup_orphan(instance) self.mox.ReplayAll() self.assertRaises(exception.InstanceFaultRollback, vmops._migrate_disk_resizing_down, self.context, instance, dest, flavor, vm_ref, sr_path) def test_resize_ensure_vm_is_shutdown_cleanly(self): conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vmops = conn._vmops fake_instance = {'uuid': 'uuid'} self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm') self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm') vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(False) vm_utils.clean_shutdown_vm(vmops._session, fake_instance, "ref").AndReturn(True) self.mox.ReplayAll() vmops._resize_ensure_vm_is_shutdown(fake_instance, "ref") def test_resize_ensure_vm_is_shutdown_forced(self): conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vmops = conn._vmops fake_instance = {'uuid': 'uuid'} self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm') self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm') vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(False) vm_utils.clean_shutdown_vm(vmops._session, fake_instance, "ref").AndReturn(False) vm_utils.hard_shutdown_vm(vmops._session, fake_instance, "ref").AndReturn(True) self.mox.ReplayAll() vmops._resize_ensure_vm_is_shutdown(fake_instance, "ref") def test_resize_ensure_vm_is_shutdown_fails(self): conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vmops = conn._vmops fake_instance = {'uuid': 'uuid'} self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm') self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm') vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(False) vm_utils.clean_shutdown_vm(vmops._session, fake_instance, "ref").AndReturn(False) vm_utils.hard_shutdown_vm(vmops._session, fake_instance, "ref").AndReturn(False) self.mox.ReplayAll() self.assertRaises(exception.ResizeError, vmops._resize_ensure_vm_is_shutdown, fake_instance, "ref") def test_resize_ensure_vm_is_shutdown_already_shutdown(self): conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vmops = conn._vmops fake_instance = {'uuid': 'uuid'} self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm') self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm') vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(True) self.mox.ReplayAll() vmops._resize_ensure_vm_is_shutdown(fake_instance, "ref") class XenAPIImageTypeTestCase(test.NoDBTestCase): """Test ImageType class.""" def test_to_string(self): # Can convert from type id to type string. self.assertEqual( vm_utils.ImageType.to_string(vm_utils.ImageType.KERNEL), vm_utils.ImageType.KERNEL_STR) def _assert_role(self, expected_role, image_type_id): self.assertEqual( expected_role, vm_utils.ImageType.get_role(image_type_id)) def test_get_image_role_kernel(self): self._assert_role('kernel', vm_utils.ImageType.KERNEL) def test_get_image_role_ramdisk(self): self._assert_role('ramdisk', vm_utils.ImageType.RAMDISK) def test_get_image_role_disk(self): self._assert_role('root', vm_utils.ImageType.DISK) def test_get_image_role_disk_raw(self): self._assert_role('root', vm_utils.ImageType.DISK_RAW) def test_get_image_role_disk_vhd(self): self._assert_role('root', vm_utils.ImageType.DISK_VHD) class XenAPIDetermineDiskImageTestCase(test.NoDBTestCase): """Unit tests for code that detects the ImageType.""" def assert_disk_type(self, image_meta, expected_disk_type): actual = vm_utils.determine_disk_image_type(image_meta) self.assertEqual(expected_disk_type, actual) def test_machine(self): image_meta = {'id': 'a', 'disk_format': 'ami'} self.assert_disk_type(image_meta, vm_utils.ImageType.DISK) def test_raw(self): image_meta = {'id': 'a', 'disk_format': 'raw'} self.assert_disk_type(image_meta, vm_utils.ImageType.DISK_RAW) def test_vhd(self): image_meta = {'id': 'a', 'disk_format': 'vhd'} self.assert_disk_type(image_meta, vm_utils.ImageType.DISK_VHD) def test_none(self): image_meta = None self.assert_disk_type(image_meta, None) # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIHostTestCase(stubs.XenAPITestBase): """Tests HostState, which holds metrics from XenServer that get reported back to the Schedulers. """ def setUp(self): super(XenAPIHostTestCase, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.context = context.get_admin_context() self.flags(use_local=True, group='conductor') self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.instance = fake_instance.fake_db_instance(name='foo') def test_host_state(self): stats = self.conn.get_host_stats() # Values from fake.create_local_srs (ext SR) self.assertEqual(stats['disk_total'], 40000) self.assertEqual(stats['disk_used'], 20000) # Values from fake._plugin_xenhost_host_data self.assertEqual(stats['host_memory_total'], 10) self.assertEqual(stats['host_memory_overhead'], 20) self.assertEqual(stats['host_memory_free'], 30) self.assertEqual(stats['host_memory_free_computed'], 40) self.assertEqual(stats['hypervisor_hostname'], 'fake-xenhost') self.assertThat({'cpu_count': 50}, matchers.DictMatches(stats['host_cpu_info'])) # No VMs running self.assertEqual(stats['vcpus_used'], 0) def test_host_state_vcpus_used(self): stats = self.conn.get_host_stats(True) self.assertEqual(stats['vcpus_used'], 0) vm = xenapi_fake.create_vm(self.instance['name'], 'Running') stats = self.conn.get_host_stats(True) self.assertEqual(stats['vcpus_used'], 4) def test_pci_passthrough_devices_whitelist(self): # NOTE(guillaume-thouvenin): This pci whitelist will be used to # match with _plugin_xenhost_get_pci_device_details method in fake.py. self.flags(pci_passthrough_whitelist= ['[{"vendor_id":"10de", "product_id":"11bf"}]']) stats = self.conn.get_host_stats() self.assertEqual(len(stats['pci_passthrough_devices']), 1) def test_pci_passthrough_devices_no_whitelist(self): stats = self.conn.get_host_stats() self.assertEqual(len(stats['pci_passthrough_devices']), 0) def test_host_state_missing_sr(self): def fake_safe_find_sr(session): raise exception.StorageRepositoryNotFound('not there') self.stubs.Set(vm_utils, 'safe_find_sr', fake_safe_find_sr) self.assertRaises(exception.StorageRepositoryNotFound, self.conn.get_host_stats) def _test_host_action(self, method, action, expected=None): result = method('host', action) if not expected: expected = action self.assertEqual(result, expected) def test_host_reboot(self): self._test_host_action(self.conn.host_power_action, 'reboot') def test_host_shutdown(self): self._test_host_action(self.conn.host_power_action, 'shutdown') def test_host_startup(self): self.assertRaises(NotImplementedError, self.conn.host_power_action, 'host', 'startup') def test_host_maintenance_on(self): self._test_host_action(self.conn.host_maintenance_mode, True, 'on_maintenance') def test_host_maintenance_off(self): self._test_host_action(self.conn.host_maintenance_mode, False, 'off_maintenance') def test_set_enable_host_enable(self): values = _create_service_entries(self.context, values={'nova': ['host']}) self._test_host_action(self.conn.set_host_enabled, True, 'enabled') service = db.service_get_by_args(self.context, 'host', 'nova-compute') self.assertEqual(service.disabled, False) def test_set_enable_host_disable(self): values = _create_service_entries(self.context, values={'nova': ['host']}) self._test_host_action(self.conn.set_host_enabled, False, 'disabled') service = db.service_get_by_args(self.context, 'host', 'nova-compute') self.assertEqual(service.disabled, True) def test_get_host_uptime(self): result = self.conn.get_host_uptime('host') self.assertEqual(result, 'fake uptime') def test_supported_instances_is_included_in_host_state(self): stats = self.conn.get_host_stats() self.assertIn('supported_instances', stats) def test_supported_instances_is_calculated_by_to_supported_instances(self): def to_supported_instances(somedata): self.assertIsNone(somedata) return "SOMERETURNVALUE" self.stubs.Set(host, 'to_supported_instances', to_supported_instances) stats = self.conn.get_host_stats() self.assertEqual("SOMERETURNVALUE", stats['supported_instances']) def test_update_stats_caches_hostname(self): self.mox.StubOutWithMock(host, 'call_xenhost') self.mox.StubOutWithMock(vm_utils, 'scan_default_sr') self.mox.StubOutWithMock(vm_utils, 'list_vms') self.mox.StubOutWithMock(self.conn._session, 'call_xenapi') data = {'disk_total': 0, 'disk_used': 0, 'disk_available': 0, 'supported_instances': 0, 'host_capabilities': [], 'host_hostname': 'foo', 'vcpus_used': 0, } sr_rec = { 'physical_size': 0, 'physical_utilisation': 0, } for i in range(3): host.call_xenhost(mox.IgnoreArg(), 'host_data', {}).AndReturn(data) vm_utils.scan_default_sr(self.conn._session).AndReturn("ref") vm_utils.list_vms(self.conn._session).AndReturn([]) self.conn._session.call_xenapi('SR.get_record', "ref").AndReturn( sr_rec) if i == 2: # On the third call (the second below) change the hostname data = dict(data, host_hostname='bar') self.mox.ReplayAll() stats = self.conn.get_host_stats(refresh=True) self.assertEqual('foo', stats['hypervisor_hostname']) stats = self.conn.get_host_stats(refresh=True) self.assertEqual('foo', stats['hypervisor_hostname']) class ToSupportedInstancesTestCase(test.NoDBTestCase): def test_default_return_value(self): self.assertEqual([], host.to_supported_instances(None)) def test_return_value(self): self.assertEqual([('x86_64', 'xapi', 'xen')], host.to_supported_instances([u'xen-3.0-x86_64'])) def test_invalid_values_do_not_break(self): self.assertEqual([('x86_64', 'xapi', 'xen')], host.to_supported_instances([u'xen-3.0-x86_64', 'spam'])) def test_multiple_values(self): self.assertEqual( [ ('x86_64', 'xapi', 'xen'), ('x86_32', 'xapi', 'hvm') ], host.to_supported_instances([u'xen-3.0-x86_64', 'hvm-3.0-x86_32']) ) # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIAutoDiskConfigTestCase(stubs.XenAPITestBase): def setUp(self): super(XenAPIAutoDiskConfigTestCase, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.user_id = 'fake' self.project_id = 'fake' self.instance_values = {'id': 1, 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': 1, 'kernel_id': 2, 'ramdisk_id': 3, 'root_gb': 80, 'ephemeral_gb': 0, 'instance_type_id': '3', # m1.large 'os_type': 'linux', 'architecture': 'x86-64'} self.context = context.RequestContext(self.user_id, self.project_id) def fake_create_vbd(session, vm_ref, vdi_ref, userdevice, vbd_type='disk', read_only=False, bootable=True, osvol=False): pass self.stubs.Set(vm_utils, 'create_vbd', fake_create_vbd) def assertIsPartitionCalled(self, called): marker = {"partition_called": False} def fake_resize_part_and_fs(dev, start, old, new): marker["partition_called"] = True self.stubs.Set(vm_utils, "_resize_part_and_fs", fake_resize_part_and_fs) ctx = context.RequestContext(self.user_id, self.project_id) session = get_session() disk_image_type = vm_utils.ImageType.DISK_VHD instance = create_instance_with_system_metadata(self.context, self.instance_values) vm_ref = xenapi_fake.create_vm(instance['name'], 'Halted') vdi_ref = xenapi_fake.create_vdi(instance['name'], 'fake') vdi_uuid = session.call_xenapi('VDI.get_record', vdi_ref)['uuid'] vdis = {'root': {'uuid': vdi_uuid, 'ref': vdi_ref}} self.conn._vmops._attach_disks(instance, vm_ref, instance['name'], vdis, disk_image_type, "fake_nw_inf") self.assertEqual(marker["partition_called"], called) def test_instance_not_auto_disk_config(self): """Should not partition unless instance is marked as auto_disk_config. """ self.instance_values['auto_disk_config'] = False self.assertIsPartitionCalled(False) @stub_vm_utils_with_vdi_attached_here def test_instance_auto_disk_config_doesnt_pass_fail_safes(self): # Should not partition unless fail safes pass. self.instance_values['auto_disk_config'] = True def fake_get_partitions(dev): return [(1, 0, 100, 'ext4'), (2, 100, 200, 'ext4')] self.stubs.Set(vm_utils, "_get_partitions", fake_get_partitions) self.assertIsPartitionCalled(False) @stub_vm_utils_with_vdi_attached_here def test_instance_auto_disk_config_passes_fail_safes(self): """Should partition if instance is marked as auto_disk_config=True and virt-layer specific fail-safe checks pass. """ self.instance_values['auto_disk_config'] = True def fake_get_partitions(dev): return [(1, 0, 100, 'ext4')] self.stubs.Set(vm_utils, "_get_partitions", fake_get_partitions) self.assertIsPartitionCalled(True) # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIGenerateLocal(stubs.XenAPITestBase): """Test generating of local disks, like swap and ephemeral.""" def setUp(self): super(XenAPIGenerateLocal, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) db_fakes.stub_out_db_instance_api(self.stubs) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.user_id = 'fake' self.project_id = 'fake' self.instance_values = {'id': 1, 'project_id': self.project_id, 'user_id': self.user_id, 'image_ref': 1, 'kernel_id': 2, 'ramdisk_id': 3, 'root_gb': 80, 'ephemeral_gb': 0, 'instance_type_id': '3', # m1.large 'os_type': 'linux', 'architecture': 'x86-64'} self.context = context.RequestContext(self.user_id, self.project_id) def fake_create_vbd(session, vm_ref, vdi_ref, userdevice, vbd_type='disk', read_only=False, bootable=True, osvol=False, empty=False, unpluggable=True): return session.call_xenapi('VBD.create', {'VM': vm_ref, 'VDI': vdi_ref}) self.stubs.Set(vm_utils, 'create_vbd', fake_create_vbd) def assertCalled(self, instance, disk_image_type=vm_utils.ImageType.DISK_VHD): ctx = context.RequestContext(self.user_id, self.project_id) session = get_session() vm_ref = xenapi_fake.create_vm(instance['name'], 'Halted') vdi_ref = xenapi_fake.create_vdi(instance['name'], 'fake') vdi_uuid = session.call_xenapi('VDI.get_record', vdi_ref)['uuid'] vdi_key = 'root' if disk_image_type == vm_utils.ImageType.DISK_ISO: vdi_key = 'iso' vdis = {vdi_key: {'uuid': vdi_uuid, 'ref': vdi_ref}} self.called = False self.conn._vmops._attach_disks(instance, vm_ref, instance['name'], vdis, disk_image_type, "fake_nw_inf") self.assertTrue(self.called) def test_generate_swap(self): # Test swap disk generation. instance_values = dict(self.instance_values, instance_type_id=5) instance = create_instance_with_system_metadata(self.context, instance_values) def fake_generate_swap(*args, **kwargs): self.called = True self.stubs.Set(vm_utils, 'generate_swap', fake_generate_swap) self.assertCalled(instance) def test_generate_ephemeral(self): # Test ephemeral disk generation. instance_values = dict(self.instance_values, instance_type_id=4) instance = create_instance_with_system_metadata(self.context, instance_values) def fake_generate_ephemeral(*args): self.called = True self.stubs.Set(vm_utils, 'generate_ephemeral', fake_generate_ephemeral) self.assertCalled(instance) def test_generate_iso_blank_root_disk(self): instance_values = dict(self.instance_values, instance_type_id=4) instance_values.pop('kernel_id') instance_values.pop('ramdisk_id') instance = create_instance_with_system_metadata(self.context, instance_values) def fake_generate_ephemeral(*args): pass self.stubs.Set(vm_utils, 'generate_ephemeral', fake_generate_ephemeral) def fake_generate_iso(*args): self.called = True self.stubs.Set(vm_utils, 'generate_iso_blank_root_disk', fake_generate_iso) self.assertCalled(instance, vm_utils.ImageType.DISK_ISO) class XenAPIBWCountersTestCase(stubs.XenAPITestBaseNoDB): FAKE_VMS = {'test1:ref': dict(name_label='test1', other_config=dict(nova_uuid='hash'), domid='12', _vifmap={'0': "a:b:c:d...", '1': "e:f:12:q..."}), 'test2:ref': dict(name_label='test2', other_config=dict(nova_uuid='hash'), domid='42', _vifmap={'0': "a:3:c:d...", '1': "e:f:42:q..."}), } def setUp(self): super(XenAPIBWCountersTestCase, self).setUp() self.stubs.Set(vm_utils, 'list_vms', XenAPIBWCountersTestCase._fake_list_vms) self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def _fake_get_vif_device_map(vm_rec): return vm_rec['_vifmap'] self.stubs.Set(self.conn._vmops, "_get_vif_device_map", _fake_get_vif_device_map) @classmethod def _fake_list_vms(cls, session): return cls.FAKE_VMS.iteritems() @staticmethod def _fake_fetch_bandwidth_mt(session): return {} @staticmethod def _fake_fetch_bandwidth(session): return {'42': {'0': {'bw_in': 21024, 'bw_out': 22048}, '1': {'bw_in': 231337, 'bw_out': 221212121}}, '12': {'0': {'bw_in': 1024, 'bw_out': 2048}, '1': {'bw_in': 31337, 'bw_out': 21212121}}, } def test_get_all_bw_counters(self): instances = [dict(name='test1', uuid='1-2-3'), dict(name='test2', uuid='4-5-6')] self.stubs.Set(vm_utils, 'fetch_bandwidth', self._fake_fetch_bandwidth) result = self.conn.get_all_bw_counters(instances) self.assertEqual(len(result), 4) self.assertIn(dict(uuid='1-2-3', mac_address="a:b:c:d...", bw_in=1024, bw_out=2048), result) self.assertIn(dict(uuid='1-2-3', mac_address="e:f:12:q...", bw_in=31337, bw_out=21212121), result) self.assertIn(dict(uuid='4-5-6', mac_address="a:3:c:d...", bw_in=21024, bw_out=22048), result) self.assertIn(dict(uuid='4-5-6', mac_address="e:f:42:q...", bw_in=231337, bw_out=221212121), result) def test_get_all_bw_counters_in_failure_case(self): """Test that get_all_bw_conters returns an empty list when no data returned from Xenserver. c.f. bug #910045. """ instances = [dict(name='instance-0001', uuid='1-2-3-4-5')] self.stubs.Set(vm_utils, 'fetch_bandwidth', self._fake_fetch_bandwidth_mt) result = self.conn.get_all_bw_counters(instances) self.assertEqual(result, []) # TODO(salvatore-orlando): this class and # nova.tests.virt.test_libvirt.IPTablesFirewallDriverTestCase share a lot of # code. Consider abstracting common code in a base class for firewall driver # testing. # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIDom0IptablesFirewallTestCase(stubs.XenAPITestBase): _in_rules = [ '# Generated by iptables-save v1.4.10 on Sat Feb 19 00:03:19 2011', '*nat', ':PREROUTING ACCEPT [1170:189210]', ':INPUT ACCEPT [844:71028]', ':OUTPUT ACCEPT [5149:405186]', ':POSTROUTING ACCEPT [5063:386098]', '# Completed on Mon Dec 6 11:54:13 2010', '# Generated by iptables-save v1.4.4 on Mon Dec 6 11:54:13 2010', '*mangle', ':INPUT ACCEPT [969615:281627771]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [915599:63811649]', ':nova-block-ipv4 - [0:0]', '[0:0] -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT ', '[0:0] -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED' ',ESTABLISHED -j ACCEPT ', '[0:0] -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT ', '[0:0] -A FORWARD -i virbr0 -o virbr0 -j ACCEPT ', '[0:0] -A FORWARD -o virbr0 -j REJECT ' '--reject-with icmp-port-unreachable ', '[0:0] -A FORWARD -i virbr0 -j REJECT ' '--reject-with icmp-port-unreachable ', 'COMMIT', '# Completed on Mon Dec 6 11:54:13 2010', '# Generated by iptables-save v1.4.4 on Mon Dec 6 11:54:13 2010', '*filter', ':INPUT ACCEPT [969615:281627771]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [915599:63811649]', ':nova-block-ipv4 - [0:0]', '[0:0] -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT ', '[0:0] -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED' ',ESTABLISHED -j ACCEPT ', '[0:0] -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT ', '[0:0] -A FORWARD -i virbr0 -o virbr0 -j ACCEPT ', '[0:0] -A FORWARD -o virbr0 -j REJECT ' '--reject-with icmp-port-unreachable ', '[0:0] -A FORWARD -i virbr0 -j REJECT ' '--reject-with icmp-port-unreachable ', 'COMMIT', '# Completed on Mon Dec 6 11:54:13 2010', ] _in6_filter_rules = [ '# Generated by ip6tables-save v1.4.4 on Tue Jan 18 23:47:56 2011', '*filter', ':INPUT ACCEPT [349155:75810423]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [349256:75777230]', 'COMMIT', '# Completed on Tue Jan 18 23:47:56 2011', ] def setUp(self): super(XenAPIDom0IptablesFirewallTestCase, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') self.user_id = 'mappin' self.project_id = 'fake' stubs.stubout_session(self.stubs, stubs.FakeSessionForFirewallTests, test_case=self) self.context = context.RequestContext(self.user_id, self.project_id) self.network = importutils.import_object(CONF.network_manager) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.fw = self.conn._vmops.firewall_driver def _create_instance_ref(self): return db.instance_create(self.context, {'user_id': self.user_id, 'project_id': self.project_id, 'instance_type_id': 1}) def _create_test_security_group(self): admin_ctxt = context.get_admin_context() secgroup = db.security_group_create(admin_ctxt, {'user_id': self.user_id, 'project_id': self.project_id, 'name': 'testgroup', 'description': 'test group'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'icmp', 'from_port': -1, 'to_port': -1, 'cidr': '192.168.11.0/24'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'icmp', 'from_port': 8, 'to_port': -1, 'cidr': '192.168.11.0/24'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'tcp', 'from_port': 80, 'to_port': 81, 'cidr': '192.168.10.0/24'}) return secgroup def _validate_security_group(self): in_rules = filter(lambda l: not l.startswith('#'), self._in_rules) for rule in in_rules: if 'nova' not in rule: self.assertTrue(rule in self._out_rules, 'Rule went missing: %s' % rule) instance_chain = None for rule in self._out_rules: # This is pretty crude, but it'll do for now # last two octets change if re.search('-d 192.168.[0-9]{1,3}.[0-9]{1,3} -j', rule): instance_chain = rule.split(' ')[-1] break self.assertTrue(instance_chain, "The instance chain wasn't added") security_group_chain = None for rule in self._out_rules: # This is pretty crude, but it'll do for now if '-A %s -j' % instance_chain in rule: security_group_chain = rule.split(' ')[-1] break self.assertTrue(security_group_chain, "The security group chain wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p icmp' ' -s 192.168.11.0/24') self.assertTrue(len(filter(regex.match, self._out_rules)) > 0, "ICMP acceptance rule wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p icmp -m icmp' ' --icmp-type 8 -s 192.168.11.0/24') self.assertTrue(len(filter(regex.match, self._out_rules)) > 0, "ICMP Echo Request acceptance rule wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p tcp --dport 80:81' ' -s 192.168.10.0/24') self.assertTrue(len(filter(regex.match, self._out_rules)) > 0, "TCP port 80/81 acceptance rule wasn't added") def test_static_filters(self): instance_ref = self._create_instance_ref() src_instance_ref = self._create_instance_ref() admin_ctxt = context.get_admin_context() secgroup = self._create_test_security_group() src_secgroup = db.security_group_create(admin_ctxt, {'user_id': self.user_id, 'project_id': self.project_id, 'name': 'testsourcegroup', 'description': 'src group'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'tcp', 'from_port': 80, 'to_port': 81, 'group_id': src_secgroup['id']}) db.instance_add_security_group(admin_ctxt, instance_ref['uuid'], secgroup['id']) db.instance_add_security_group(admin_ctxt, src_instance_ref['uuid'], src_secgroup['id']) instance_ref = db.instance_get(admin_ctxt, instance_ref['id']) src_instance_ref = db.instance_get(admin_ctxt, src_instance_ref['id']) network_model = fake_network.fake_get_instance_nw_info(self.stubs, 1) from nova.compute import utils as compute_utils self.stubs.Set(compute_utils, 'get_nw_info_for_instance', lambda instance: network_model) self.fw.prepare_instance_filter(instance_ref, network_model) self.fw.apply_instance_filter(instance_ref, network_model) self._validate_security_group() # Extra test for TCP acceptance rules for ip in network_model.fixed_ips(): if ip['version'] != 4: continue regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p tcp' ' --dport 80:81 -s %s' % ip['address']) self.assertTrue(len(filter(regex.match, self._out_rules)) > 0, "TCP port 80/81 acceptance rule wasn't added") db.instance_destroy(admin_ctxt, instance_ref['uuid']) def test_filters_for_instance_with_ip_v6(self): self.flags(use_ipv6=True) network_info = fake_network.fake_get_instance_nw_info(self.stubs, 1) rulesv4, rulesv6 = self.fw._filters_for_instance("fake", network_info) self.assertEqual(len(rulesv4), 2) self.assertEqual(len(rulesv6), 1) def test_filters_for_instance_without_ip_v6(self): self.flags(use_ipv6=False) network_info = fake_network.fake_get_instance_nw_info(self.stubs, 1) rulesv4, rulesv6 = self.fw._filters_for_instance("fake", network_info) self.assertEqual(len(rulesv4), 2) self.assertEqual(len(rulesv6), 0) def test_multinic_iptables(self): ipv4_rules_per_addr = 1 ipv4_addr_per_network = 2 ipv6_rules_per_addr = 1 ipv6_addr_per_network = 1 networks_count = 5 instance_ref = self._create_instance_ref() _get_instance_nw_info = fake_network.fake_get_instance_nw_info network_info = _get_instance_nw_info(self.stubs, networks_count, ipv4_addr_per_network) network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \ '1.1.1.1' ipv4_len = len(self.fw.iptables.ipv4['filter'].rules) ipv6_len = len(self.fw.iptables.ipv6['filter'].rules) inst_ipv4, inst_ipv6 = self.fw.instance_rules(instance_ref, network_info) self.fw.prepare_instance_filter(instance_ref, network_info) ipv4 = self.fw.iptables.ipv4['filter'].rules ipv6 = self.fw.iptables.ipv6['filter'].rules ipv4_network_rules = len(ipv4) - len(inst_ipv4) - ipv4_len ipv6_network_rules = len(ipv6) - len(inst_ipv6) - ipv6_len # Extra rules are for the DHCP request rules = (ipv4_rules_per_addr * ipv4_addr_per_network * networks_count) + 2 self.assertEqual(ipv4_network_rules, rules) self.assertEqual(ipv6_network_rules, ipv6_rules_per_addr * ipv6_addr_per_network * networks_count) def test_do_refresh_security_group_rules(self): admin_ctxt = context.get_admin_context() instance_ref = self._create_instance_ref() network_info = fake_network.fake_get_instance_nw_info(self.stubs, 1, 1) secgroup = self._create_test_security_group() db.instance_add_security_group(admin_ctxt, instance_ref['uuid'], secgroup['id']) self.fw.prepare_instance_filter(instance_ref, network_info) self.fw.instances[instance_ref['id']] = instance_ref self._validate_security_group() # add a rule to the security group db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'udp', 'from_port': 200, 'to_port': 299, 'cidr': '192.168.99.0/24'}) #validate the extra rule self.fw.refresh_security_group_rules(secgroup) regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p udp --dport 200:299' ' -s 192.168.99.0/24') self.assertTrue(len(filter(regex.match, self._out_rules)) > 0, "Rules were not updated properly." "The rule for UDP acceptance is missing") def test_provider_firewall_rules(self): # setup basic instance data instance_ref = self._create_instance_ref() # FRAGILE: as in libvirt tests # peeks at how the firewall names chains chain_name = 'inst-%s' % instance_ref['id'] network_info = fake_network.fake_get_instance_nw_info(self.stubs, 1, 1) self.fw.prepare_instance_filter(instance_ref, network_info) self.assertIn('provider', self.fw.iptables.ipv4['filter'].chains) rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(0, len(rules)) admin_ctxt = context.get_admin_context() # add a rule and send the update message, check for 1 rule provider_fw0 = db.provider_fw_rule_create(admin_ctxt, {'protocol': 'tcp', 'cidr': '10.99.99.99/32', 'from_port': 1, 'to_port': 65535}) self.fw.refresh_provider_fw_rules() rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(1, len(rules)) # Add another, refresh, and make sure number of rules goes to two provider_fw1 = db.provider_fw_rule_create(admin_ctxt, {'protocol': 'udp', 'cidr': '10.99.99.99/32', 'from_port': 1, 'to_port': 65535}) self.fw.refresh_provider_fw_rules() rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(2, len(rules)) # create the instance filter and make sure it has a jump rule self.fw.prepare_instance_filter(instance_ref, network_info) self.fw.apply_instance_filter(instance_ref, network_info) inst_rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == chain_name] jump_rules = [rule for rule in inst_rules if '-j' in rule.rule] provjump_rules = [] # IptablesTable doesn't make rules unique internally for rule in jump_rules: if 'provider' in rule.rule and rule not in provjump_rules: provjump_rules.append(rule) self.assertEqual(1, len(provjump_rules)) # remove a rule from the db, cast to compute to refresh rule db.provider_fw_rule_destroy(admin_ctxt, provider_fw1['id']) self.fw.refresh_provider_fw_rules() rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(1, len(rules)) class XenAPISRSelectionTestCase(stubs.XenAPITestBaseNoDB): """Unit tests for testing we find the right SR.""" def test_safe_find_sr_raise_exception(self): # Ensure StorageRepositoryNotFound is raise when wrong filter. self.flags(sr_matching_filter='yadayadayada', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) session = get_session() self.assertRaises(exception.StorageRepositoryNotFound, vm_utils.safe_find_sr, session) def test_safe_find_sr_local_storage(self): # Ensure the default local-storage is found. self.flags(sr_matching_filter='other-config:i18n-key=local-storage', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) session = get_session() # This test is only guaranteed if there is one host in the pool self.assertEqual(len(xenapi_fake.get_all('host')), 1) host_ref = xenapi_fake.get_all('host')[0] pbd_refs = xenapi_fake.get_all('PBD') for pbd_ref in pbd_refs: pbd_rec = xenapi_fake.get_record('PBD', pbd_ref) if pbd_rec['host'] != host_ref: continue sr_rec = xenapi_fake.get_record('SR', pbd_rec['SR']) if sr_rec['other_config']['i18n-key'] == 'local-storage': local_sr = pbd_rec['SR'] expected = vm_utils.safe_find_sr(session) self.assertEqual(local_sr, expected) def test_safe_find_sr_by_other_criteria(self): # Ensure the SR is found when using a different filter. self.flags(sr_matching_filter='other-config:my_fake_sr=true', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) session = get_session() host_ref = xenapi_fake.get_all('host')[0] local_sr = xenapi_fake.create_sr(name_label='Fake Storage', type='lvm', other_config={'my_fake_sr': 'true'}, host_ref=host_ref) expected = vm_utils.safe_find_sr(session) self.assertEqual(local_sr, expected) def test_safe_find_sr_default(self): # Ensure the default SR is found regardless of other-config. self.flags(sr_matching_filter='default-sr:true', group='xenserver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) session = get_session() pool_ref = session.call_xenapi('pool.get_all')[0] expected = vm_utils.safe_find_sr(session) self.assertEqual(session.call_xenapi('pool.get_default_SR', pool_ref), expected) def _create_service_entries(context, values={'avail_zone1': ['fake_host1', 'fake_host2'], 'avail_zone2': ['fake_host3'], }): for avail_zone, hosts in values.iteritems(): for host in hosts: db.service_create(context, {'host': host, 'binary': 'nova-compute', 'topic': 'compute', 'report_count': 0}) return values # FIXME(sirp): convert this to use XenAPITestBaseNoDB class XenAPIAggregateTestCase(stubs.XenAPITestBase): """Unit tests for aggregate operations.""" def setUp(self): super(XenAPIAggregateTestCase, self).setUp() self.flags(connection_url='http://test_url', connection_username='test_user', connection_password='test_pass', group='xenserver') self.flags(instance_name_template='%d', firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver', host='host', compute_driver='xenapi.XenAPIDriver', default_availability_zone='avail_zone1') self.flags(use_local=True, group='conductor') host_ref = xenapi_fake.get_all('host')[0] stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.context = context.get_admin_context() self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.compute = importutils.import_object(CONF.compute_manager) self.api = compute_api.AggregateAPI() values = {'name': 'test_aggr', 'metadata': {'availability_zone': 'test_zone', pool_states.POOL_FLAG: 'XenAPI'}} self.aggr = db.aggregate_create(self.context, values) self.fake_metadata = {pool_states.POOL_FLAG: 'XenAPI', 'master_compute': 'host', 'availability_zone': 'fake_zone', pool_states.KEY: pool_states.ACTIVE, 'host': xenapi_fake.get_record('host', host_ref)['uuid']} def test_pool_add_to_aggregate_called_by_driver(self): calls = [] def pool_add_to_aggregate(context, aggregate, host, slave_info=None): self.assertEqual("CONTEXT", context) self.assertEqual("AGGREGATE", aggregate) self.assertEqual("HOST", host) self.assertEqual("SLAVEINFO", slave_info) calls.append(pool_add_to_aggregate) self.stubs.Set(self.conn._pool, "add_to_aggregate", pool_add_to_aggregate) self.conn.add_to_aggregate("CONTEXT", "AGGREGATE", "HOST", slave_info="SLAVEINFO") self.assertIn(pool_add_to_aggregate, calls) def test_pool_remove_from_aggregate_called_by_driver(self): calls = [] def pool_remove_from_aggregate(context, aggregate, host, slave_info=None): self.assertEqual("CONTEXT", context) self.assertEqual("AGGREGATE", aggregate) self.assertEqual("HOST", host) self.assertEqual("SLAVEINFO", slave_info) calls.append(pool_remove_from_aggregate) self.stubs.Set(self.conn._pool, "remove_from_aggregate", pool_remove_from_aggregate) self.conn.remove_from_aggregate("CONTEXT", "AGGREGATE", "HOST", slave_info="SLAVEINFO") self.assertIn(pool_remove_from_aggregate, calls) def test_add_to_aggregate_for_first_host_sets_metadata(self): def fake_init_pool(id, name): fake_init_pool.called = True self.stubs.Set(self.conn._pool, "_init_pool", fake_init_pool) aggregate = self._aggregate_setup() self.conn._pool.add_to_aggregate(self.context, aggregate, "host") result = db.aggregate_get(self.context, aggregate['id']) self.assertTrue(fake_init_pool.called) self.assertThat(self.fake_metadata, matchers.DictMatches(result['metadetails'])) def test_join_slave(self): # Ensure join_slave gets called when the request gets to master. def fake_join_slave(id, compute_uuid, host, url, user, password): fake_join_slave.called = True self.stubs.Set(self.conn._pool, "_join_slave", fake_join_slave) aggregate = self._aggregate_setup(hosts=['host', 'host2'], metadata=self.fake_metadata) self.conn._pool.add_to_aggregate(self.context, aggregate, "host2", dict(compute_uuid='fake_uuid', url='fake_url', user='fake_user', passwd='fake_pass', xenhost_uuid='fake_uuid')) self.assertTrue(fake_join_slave.called) def test_add_to_aggregate_first_host(self): def fake_pool_set_name_label(self, session, pool_ref, name): fake_pool_set_name_label.called = True self.stubs.Set(xenapi_fake.SessionBase, "pool_set_name_label", fake_pool_set_name_label) self.conn._session.call_xenapi("pool.create", {"name": "asdf"}) metadata = {'availability_zone': 'fake_zone', pool_states.POOL_FLAG: "XenAPI", pool_states.KEY: pool_states.CREATED} aggregate = aggregate_obj.Aggregate() aggregate.name = 'fake_aggregate' aggregate.metadata = dict(metadata) aggregate.create(self.context) aggregate.add_host('host') self.assertEqual(["host"], aggregate.hosts) self.assertEqual(metadata, aggregate.metadata) self.conn._pool.add_to_aggregate(self.context, aggregate, "host") self.assertTrue(fake_pool_set_name_label.called) def test_remove_from_aggregate_called(self): def fake_remove_from_aggregate(context, aggregate, host): fake_remove_from_aggregate.called = True self.stubs.Set(self.conn._pool, "remove_from_aggregate", fake_remove_from_aggregate) self.conn.remove_from_aggregate(None, None, None) self.assertTrue(fake_remove_from_aggregate.called) def test_remove_from_empty_aggregate(self): result = self._aggregate_setup() self.assertRaises(exception.InvalidAggregateAction, self.conn._pool.remove_from_aggregate, self.context, result, "test_host") def test_remove_slave(self): # Ensure eject slave gets called. def fake_eject_slave(id, compute_uuid, host_uuid): fake_eject_slave.called = True self.stubs.Set(self.conn._pool, "_eject_slave", fake_eject_slave) self.fake_metadata['host2'] = 'fake_host2_uuid' aggregate = self._aggregate_setup(hosts=['host', 'host2'], metadata=self.fake_metadata, aggr_state=pool_states.ACTIVE) self.conn._pool.remove_from_aggregate(self.context, aggregate, "host2") self.assertTrue(fake_eject_slave.called) def test_remove_master_solo(self): # Ensure metadata are cleared after removal. def fake_clear_pool(id): fake_clear_pool.called = True self.stubs.Set(self.conn._pool, "_clear_pool", fake_clear_pool) aggregate = self._aggregate_setup(metadata=self.fake_metadata) self.conn._pool.remove_from_aggregate(self.context, aggregate, "host") result = db.aggregate_get(self.context, aggregate['id']) self.assertTrue(fake_clear_pool.called) self.assertThat({'availability_zone': 'fake_zone', pool_states.POOL_FLAG: 'XenAPI', pool_states.KEY: pool_states.ACTIVE}, matchers.DictMatches(result['metadetails'])) def test_remote_master_non_empty_pool(self): # Ensure AggregateError is raised if removing the master. aggregate = self._aggregate_setup(hosts=['host', 'host2'], metadata=self.fake_metadata) self.assertRaises(exception.InvalidAggregateAction, self.conn._pool.remove_from_aggregate, self.context, aggregate, "host") def _aggregate_setup(self, aggr_name='fake_aggregate', aggr_zone='fake_zone', aggr_state=pool_states.CREATED, hosts=['host'], metadata=None): aggregate = aggregate_obj.Aggregate() aggregate.name = aggr_name aggregate.metadata = {'availability_zone': aggr_zone, pool_states.POOL_FLAG: 'XenAPI', pool_states.KEY: aggr_state, } if metadata: aggregate.metadata.update(metadata) aggregate.create(self.context) for host in hosts: aggregate.add_host(host) return aggregate def test_add_host_to_aggregate_invalid_changing_status(self): """Ensure InvalidAggregateAction is raised when adding host while aggregate is not ready. """ aggregate = self._aggregate_setup(aggr_state=pool_states.CHANGING) self.assertRaises(exception.InvalidAggregateAction, self.conn.add_to_aggregate, self.context, aggregate, 'host') def test_add_host_to_aggregate_invalid_dismissed_status(self): """Ensure InvalidAggregateAction is raised when aggregate is deleted. """ aggregate = self._aggregate_setup(aggr_state=pool_states.DISMISSED) self.assertRaises(exception.InvalidAggregateAction, self.conn.add_to_aggregate, self.context, aggregate, 'fake_host') def test_add_host_to_aggregate_invalid_error_status(self): """Ensure InvalidAggregateAction is raised when aggregate is in error. """ aggregate = self._aggregate_setup(aggr_state=pool_states.ERROR) self.assertRaises(exception.InvalidAggregateAction, self.conn.add_to_aggregate, self.context, aggregate, 'fake_host') def test_remove_host_from_aggregate_error(self): # Ensure we can remove a host from an aggregate even if in error. values = _create_service_entries(self.context) fake_zone = values.keys()[0] aggr = self.api.create_aggregate(self.context, 'fake_aggregate', fake_zone) # let's mock the fact that the aggregate is ready! metadata = {pool_states.POOL_FLAG: "XenAPI", pool_states.KEY: pool_states.ACTIVE} db.aggregate_metadata_add(self.context, aggr['id'], metadata) for host in values[fake_zone]: aggr = self.api.add_host_to_aggregate(self.context, aggr['id'], host) # let's mock the fact that the aggregate is in error! status = {'operational_state': pool_states.ERROR} expected = self.api.remove_host_from_aggregate(self.context, aggr['id'], values[fake_zone][0]) self.assertEqual(len(aggr['hosts']) - 1, len(expected['hosts'])) self.assertEqual(expected['metadata'][pool_states.KEY], pool_states.ACTIVE) def test_remove_host_from_aggregate_invalid_dismissed_status(self): """Ensure InvalidAggregateAction is raised when aggregate is deleted. """ aggregate = self._aggregate_setup(aggr_state=pool_states.DISMISSED) self.assertRaises(exception.InvalidAggregateAction, self.conn.remove_from_aggregate, self.context, aggregate, 'fake_host') def test_remove_host_from_aggregate_invalid_changing_status(self): """Ensure InvalidAggregateAction is raised when aggregate is changing. """ aggregate = self._aggregate_setup(aggr_state=pool_states.CHANGING) self.assertRaises(exception.InvalidAggregateAction, self.conn.remove_from_aggregate, self.context, aggregate, 'fake_host') def test_add_aggregate_host_raise_err(self): # Ensure the undo operation works correctly on add. def fake_driver_add_to_aggregate(context, aggregate, host, **_ignore): raise exception.AggregateError( aggregate_id='', action='', reason='') self.stubs.Set(self.compute.driver, "add_to_aggregate", fake_driver_add_to_aggregate) metadata = {pool_states.POOL_FLAG: "XenAPI", pool_states.KEY: pool_states.ACTIVE} db.aggregate_metadata_add(self.context, self.aggr['id'], metadata) db.aggregate_host_add(self.context, self.aggr['id'], 'fake_host') self.assertRaises(exception.AggregateError, self.compute.add_aggregate_host, self.context, host="fake_host", aggregate=jsonutils.to_primitive(self.aggr), slave_info=None) excepted = db.aggregate_get(self.context, self.aggr['id']) self.assertEqual(excepted['metadetails'][pool_states.KEY], pool_states.ERROR) self.assertEqual(excepted['hosts'], []) class MockComputeAPI(object): def __init__(self): self._mock_calls = [] def add_aggregate_host(self, ctxt, aggregate, host_param, host, slave_info): self._mock_calls.append(( self.add_aggregate_host, ctxt, aggregate, host_param, host, slave_info)) def remove_aggregate_host(self, ctxt, aggregate_id, host_param, host, slave_info): self._mock_calls.append(( self.remove_aggregate_host, ctxt, aggregate_id, host_param, host, slave_info)) class StubDependencies(object): """Stub dependencies for ResourcePool.""" def __init__(self): self.compute_rpcapi = MockComputeAPI() def _is_hv_pool(self, *_ignore): return True def _get_metadata(self, *_ignore): return { pool_states.KEY: {}, 'master_compute': 'master' } def _create_slave_info(self, *ignore): return "SLAVE_INFO" class ResourcePoolWithStubs(StubDependencies, pool.ResourcePool): """A ResourcePool, use stub dependencies.""" class HypervisorPoolTestCase(test.NoDBTestCase): fake_aggregate = { 'id': 98, 'hosts': [], 'metadata': { 'master_compute': 'master', pool_states.POOL_FLAG: {}, pool_states.KEY: {} } } def test_slave_asks_master_to_add_slave_to_pool(self): slave = ResourcePoolWithStubs() slave.add_to_aggregate("CONTEXT", self.fake_aggregate, "slave") self.assertIn( (slave.compute_rpcapi.add_aggregate_host, "CONTEXT", jsonutils.to_primitive(self.fake_aggregate), "slave", "master", "SLAVE_INFO"), slave.compute_rpcapi._mock_calls) def test_slave_asks_master_to_remove_slave_from_pool(self): slave = ResourcePoolWithStubs() slave.remove_from_aggregate("CONTEXT", self.fake_aggregate, "slave") self.assertIn( (slave.compute_rpcapi.remove_aggregate_host, "CONTEXT", 98, "slave", "master", "SLAVE_INFO"), slave.compute_rpcapi._mock_calls) class SwapXapiHostTestCase(test.NoDBTestCase): def test_swapping(self): self.assertEqual( "http://otherserver:8765/somepath", pool.swap_xapi_host( "http://someserver:8765/somepath", 'otherserver')) def test_no_port(self): self.assertEqual( "http://otherserver/somepath", pool.swap_xapi_host( "http://someserver/somepath", 'otherserver')) def test_no_path(self): self.assertEqual( "http://otherserver", pool.swap_xapi_host( "http://someserver", 'otherserver')) class XenAPILiveMigrateTestCase(stubs.XenAPITestBaseNoDB): """Unit tests for live_migration.""" def setUp(self): super(XenAPILiveMigrateTestCase, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver', host='host') db_fakes.stub_out_db_instance_api(self.stubs) self.context = context.get_admin_context() def test_live_migration_calls_vmops(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_live_migrate(context, instance_ref, dest, post_method, recover_method, block_migration, migrate_data): fake_live_migrate.called = True self.stubs.Set(self.conn._vmops, "live_migrate", fake_live_migrate) self.conn.live_migration(None, None, None, None, None) self.assertTrue(fake_live_migrate.called) def test_pre_live_migration(self): # ensure method is present stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.conn.pre_live_migration(None, None, None, None, None) def test_post_live_migration_at_destination(self): # ensure method is present stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) fake_instance = {"name": "name"} fake_network_info = "network_info" def fake_fw(instance, network_info): self.assertEqual(instance, fake_instance) self.assertEqual(network_info, fake_network_info) fake_fw.call_count += 1 def fake_create_kernel_and_ramdisk(context, session, instance, name_label): return "fake-kernel-file", "fake-ramdisk-file" fake_fw.call_count = 0 _vmops = self.conn._vmops self.stubs.Set(_vmops.firewall_driver, 'setup_basic_filtering', fake_fw) self.stubs.Set(_vmops.firewall_driver, 'prepare_instance_filter', fake_fw) self.stubs.Set(_vmops.firewall_driver, 'apply_instance_filter', fake_fw) self.stubs.Set(vm_utils, "create_kernel_and_ramdisk", fake_create_kernel_and_ramdisk) def fake_get_vm_opaque_ref(instance): fake_get_vm_opaque_ref.called = True self.stubs.Set(_vmops, "_get_vm_opaque_ref", fake_get_vm_opaque_ref) fake_get_vm_opaque_ref.called = False def fake_strip_base_mirror_from_vdis(session, vm_ref): fake_strip_base_mirror_from_vdis.called = True self.stubs.Set(vm_utils, "strip_base_mirror_from_vdis", fake_strip_base_mirror_from_vdis) fake_strip_base_mirror_from_vdis.called = False self.conn.post_live_migration_at_destination(None, fake_instance, fake_network_info, None) self.assertEqual(fake_fw.call_count, 3) self.assertTrue(fake_get_vm_opaque_ref.called) self.assertTrue(fake_strip_base_mirror_from_vdis.called) def test_check_can_live_migrate_destination_with_block_migration(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.stubs.Set(vm_utils, "safe_find_sr", lambda _x: "asdf") expected = {'block_migration': True, 'migrate_data': { 'migrate_send_data': "fake_migrate_data", 'destination_sr_ref': 'asdf' } } result = self.conn.check_can_live_migrate_destination(self.context, {'host': 'host'}, {}, {}, True, False) self.assertEqual(expected, result) def test_check_live_migrate_destination_verifies_ip(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) for pif_ref in xenapi_fake.get_all('PIF'): pif_rec = xenapi_fake.get_record('PIF', pif_ref) pif_rec['IP'] = '' pif_rec['IPv6'] = '' self.stubs.Set(vm_utils, "safe_find_sr", lambda _x: "asdf") self.assertRaises(exception.MigrationError, self.conn.check_can_live_migrate_destination, self.context, {'host': 'host'}, {}, {}, True, False) def test_check_can_live_migrate_destination_block_migration_fails(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForFailedMigrateTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.MigrationError, self.conn.check_can_live_migrate_destination, self.context, {'host': 'host'}, {}, {}, True, False) def _add_default_live_migrate_stubs(self, conn): def fake_generate_vdi_map(destination_sr_ref, _vm_ref): pass def fake_get_iscsi_srs(destination_sr_ref, _vm_ref): return [] def fake_get_vm_opaque_ref(instance): return "fake_vm" def fake_lookup_kernel_ramdisk(session, vm): return ("fake_PV_kernel", "fake_PV_ramdisk") self.stubs.Set(conn._vmops, "_generate_vdi_map", fake_generate_vdi_map) self.stubs.Set(conn._vmops, "_get_iscsi_srs", fake_get_iscsi_srs) self.stubs.Set(conn._vmops, "_get_vm_opaque_ref", fake_get_vm_opaque_ref) self.stubs.Set(vm_utils, "lookup_kernel_ramdisk", fake_lookup_kernel_ramdisk) def test_check_can_live_migrate_source_with_block_migrate(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) dest_check_data = {'block_migration': True, 'migrate_data': { 'destination_sr_ref': None, 'migrate_send_data': None }} result = self.conn.check_can_live_migrate_source(self.context, {'host': 'host'}, dest_check_data) self.assertEqual(dest_check_data, result) def test_check_can_live_migrate_source_with_block_migrate_iscsi(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) def fake_get_iscsi_srs(destination_sr_ref, _vm_ref): return ['sr_ref'] self.stubs.Set(self.conn._vmops, "_get_iscsi_srs", fake_get_iscsi_srs) def fake_make_plugin_call(plugin, method, **args): return "true" self.stubs.Set(self.conn._vmops, "_make_plugin_call", fake_make_plugin_call) dest_check_data = {'block_migration': True, 'migrate_data': { 'destination_sr_ref': None, 'migrate_send_data': None }} result = self.conn.check_can_live_migrate_source(self.context, {'host': 'host'}, dest_check_data) self.assertEqual(dest_check_data, result) def test_check_can_live_migrate_source_with_block_iscsi_fails(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) def fake_get_iscsi_srs(destination_sr_ref, _vm_ref): return ['sr_ref'] self.stubs.Set(self.conn._vmops, "_get_iscsi_srs", fake_get_iscsi_srs) def fake_make_plugin_call(plugin, method, **args): return {'returncode': 'error', 'message': 'Plugin not found'} self.stubs.Set(self.conn._vmops, "_make_plugin_call", fake_make_plugin_call) dest_check_data = {'block_migration': True, 'migrate_data': { 'destination_sr_ref': None, 'migrate_send_data': None }} self.assertRaises(exception.MigrationError, self.conn.check_can_live_migrate_source, self.context, {'host': 'host'}, {}) def test_check_can_live_migrate_source_with_block_migrate_fails(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForFailedMigrateTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) dest_check_data = {'block_migration': True, 'migrate_data': { 'destination_sr_ref': None, 'migrate_send_data': None }} self.assertRaises(exception.MigrationError, self.conn.check_can_live_migrate_source, self.context, {'host': 'host'}, dest_check_data) def test_check_can_live_migrate_works(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_aggregate_get_by_host(context, host, key=None): self.assertEqual(CONF.host, host) return [dict(test_aggregate.fake_aggregate, metadetails={"host": "test_host_uuid"})] self.stubs.Set(db, "aggregate_get_by_host", fake_aggregate_get_by_host) self.conn.check_can_live_migrate_destination(self.context, {'host': 'host'}, False, False) def test_check_can_live_migrate_fails(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_aggregate_get_by_host(context, host, key=None): self.assertEqual(CONF.host, host) return [dict(test_aggregate.fake_aggregate, metadetails={"dest_other": "test_host_uuid"})] self.stubs.Set(db, "aggregate_get_by_host", fake_aggregate_get_by_host) self.assertRaises(exception.MigrationError, self.conn.check_can_live_migrate_destination, self.context, {'host': 'host'}, None, None) def test_live_migration(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_get_vm_opaque_ref(instance): return "fake_vm" self.stubs.Set(self.conn._vmops, "_get_vm_opaque_ref", fake_get_vm_opaque_ref) def fake_get_host_opaque_ref(context, destination_hostname): return "fake_host" self.stubs.Set(self.conn._vmops, "_get_host_opaque_ref", fake_get_host_opaque_ref) def post_method(context, instance, destination_hostname, block_migration, migrate_data): post_method.called = True self.conn.live_migration(self.conn, None, None, post_method, None) self.assertTrue(post_method.called, "post_method.called") def test_live_migration_on_failure(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) def fake_get_vm_opaque_ref(instance): return "fake_vm" self.stubs.Set(self.conn._vmops, "_get_vm_opaque_ref", fake_get_vm_opaque_ref) def fake_get_host_opaque_ref(context, destination_hostname): return "fake_host" self.stubs.Set(self.conn._vmops, "_get_host_opaque_ref", fake_get_host_opaque_ref) def fake_call_xenapi(*args): raise NotImplementedError() self.stubs.Set(self.conn._vmops._session, "call_xenapi", fake_call_xenapi) def recover_method(context, instance, destination_hostname, block_migration): recover_method.called = True self.assertRaises(NotImplementedError, self.conn.live_migration, self.conn, None, None, None, recover_method) self.assertTrue(recover_method.called, "recover_method.called") def test_live_migration_calls_post_migration(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) def post_method(context, instance, destination_hostname, block_migration, migrate_data): post_method.called = True # pass block_migration = True and migrate data migrate_data = {"destination_sr_ref": "foo", "migrate_send_data": "bar"} self.conn.live_migration(self.conn, None, None, post_method, None, True, migrate_data) self.assertTrue(post_method.called, "post_method.called") def test_live_migration_block_cleans_srs(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) def fake_get_iscsi_srs(context, instance): return ['sr_ref'] self.stubs.Set(self.conn._vmops, "_get_iscsi_srs", fake_get_iscsi_srs) def fake_forget_sr(context, instance): fake_forget_sr.called = True self.stubs.Set(volume_utils, "forget_sr", fake_forget_sr) def post_method(context, instance, destination_hostname, block_migration, migrate_data): post_method.called = True migrate_data = {"destination_sr_ref": "foo", "migrate_send_data": "bar"} self.conn.live_migration(self.conn, None, None, post_method, None, True, migrate_data) self.assertTrue(post_method.called, "post_method.called") self.assertTrue(fake_forget_sr.called, "forget_sr.called") def test_live_migration_with_block_migration_raises_invalid_param(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) def recover_method(context, instance, destination_hostname, block_migration): recover_method.called = True # pass block_migration = True and no migrate data self.assertRaises(exception.InvalidParameterValue, self.conn.live_migration, self.conn, None, None, None, recover_method, True, None) self.assertTrue(recover_method.called, "recover_method.called") def test_live_migration_with_block_migration_fails_migrate_send(self): stubs.stubout_session(self.stubs, stubs.FakeSessionForFailedMigrateTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(self.conn) def recover_method(context, instance, destination_hostname, block_migration): recover_method.called = True # pass block_migration = True and migrate data migrate_data = dict(destination_sr_ref='foo', migrate_send_data='bar') self.assertRaises(exception.MigrationError, self.conn.live_migration, self.conn, None, None, None, recover_method, True, migrate_data) self.assertTrue(recover_method.called, "recover_method.called") def test_live_migrate_block_migration_xapi_call_parameters(self): fake_vdi_map = object() class Session(xenapi_fake.SessionBase): def VM_migrate_send(self_, session, vmref, migrate_data, islive, vdi_map, vif_map, options): self.assertEqual('SOMEDATA', migrate_data) self.assertEqual(fake_vdi_map, vdi_map) stubs.stubout_session(self.stubs, Session) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(conn) def fake_generate_vdi_map(destination_sr_ref, _vm_ref): return fake_vdi_map self.stubs.Set(conn._vmops, "_generate_vdi_map", fake_generate_vdi_map) def dummy_callback(*args, **kwargs): pass conn.live_migration( self.context, instance_ref=dict(name='ignore'), dest=None, post_method=dummy_callback, recover_method=dummy_callback, block_migration="SOMEDATA", migrate_data=dict(migrate_send_data='SOMEDATA', destination_sr_ref="TARGET_SR_OPAQUE_REF")) def test_live_migrate_pool_migration_xapi_call_parameters(self): class Session(xenapi_fake.SessionBase): def VM_pool_migrate(self_, session, vm_ref, host_ref, options): self.assertEqual("fake_ref", host_ref) self.assertEqual({"live": "true"}, options) raise IOError() stubs.stubout_session(self.stubs, Session) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self._add_default_live_migrate_stubs(conn) def fake_get_host_opaque_ref(context, destination): return "fake_ref" self.stubs.Set(conn._vmops, "_get_host_opaque_ref", fake_get_host_opaque_ref) def dummy_callback(*args, **kwargs): pass self.assertRaises(IOError, conn.live_migration, self.context, instance_ref=dict(name='ignore'), dest=None, post_method=dummy_callback, recover_method=dummy_callback, block_migration=False, migrate_data={}) def test_generate_vdi_map(self): stubs.stubout_session(self.stubs, xenapi_fake.SessionBase) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) vm_ref = "fake_vm_ref" def fake_find_sr(_session): self.assertEqual(conn._session, _session) return "source_sr_ref" self.stubs.Set(vm_utils, "safe_find_sr", fake_find_sr) def fake_get_instance_vdis_for_sr(_session, _vm_ref, _sr_ref): self.assertEqual(conn._session, _session) self.assertEqual(vm_ref, _vm_ref) self.assertEqual("source_sr_ref", _sr_ref) return ["vdi0", "vdi1"] self.stubs.Set(vm_utils, "get_instance_vdis_for_sr", fake_get_instance_vdis_for_sr) result = conn._vmops._generate_vdi_map("dest_sr_ref", vm_ref) self.assertEqual({"vdi0": "dest_sr_ref", "vdi1": "dest_sr_ref"}, result) def test_rollback_live_migration_at_destination(self): stubs.stubout_session(self.stubs, xenapi_fake.SessionBase) conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) with mock.patch.object(conn, "destroy") as mock_destroy: conn.rollback_live_migration_at_destination("context", "instance", [], None) self.assertFalse(mock_destroy.called) class XenAPIInjectMetadataTestCase(stubs.XenAPITestBaseNoDB): def setUp(self): super(XenAPIInjectMetadataTestCase, self).setUp() self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.flags(firewall_driver='nova.virt.xenapi.firewall.' 'Dom0IptablesFirewallDriver') stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests) self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False) self.xenstore = dict(persist={}, ephem={}) self.called_fake_get_vm_opaque_ref = False def fake_get_vm_opaque_ref(inst, instance): self.called_fake_get_vm_opaque_ref = True if instance["uuid"] == "not_found": raise exception.NotFound self.assertEqual(instance, {'uuid': 'fake'}) return 'vm_ref' def fake_add_to_param_xenstore(inst, vm_ref, key, val): self.assertEqual(vm_ref, 'vm_ref') self.xenstore['persist'][key] = val def fake_remove_from_param_xenstore(inst, vm_ref, key): self.assertEqual(vm_ref, 'vm_ref') if key in self.xenstore['persist']: del self.xenstore['persist'][key] def fake_write_to_xenstore(inst, instance, path, value, vm_ref=None): self.assertEqual(instance, {'uuid': 'fake'}) self.assertEqual(vm_ref, 'vm_ref') self.xenstore['ephem'][path] = jsonutils.dumps(value) def fake_delete_from_xenstore(inst, instance, path, vm_ref=None): self.assertEqual(instance, {'uuid': 'fake'}) self.assertEqual(vm_ref, 'vm_ref') if path in self.xenstore['ephem']: del self.xenstore['ephem'][path] self.stubs.Set(vmops.VMOps, '_get_vm_opaque_ref', fake_get_vm_opaque_ref) self.stubs.Set(vmops.VMOps, '_add_to_param_xenstore', fake_add_to_param_xenstore) self.stubs.Set(vmops.VMOps, '_remove_from_param_xenstore', fake_remove_from_param_xenstore) self.stubs.Set(vmops.VMOps, '_write_to_xenstore', fake_write_to_xenstore) self.stubs.Set(vmops.VMOps, '_delete_from_xenstore', fake_delete_from_xenstore) def test_inject_instance_metadata(self): # Add some system_metadata to ensure it doesn't get added # to xenstore instance = dict(metadata=[{'key': 'a', 'value': 1}, {'key': 'b', 'value': 2}, {'key': 'c', 'value': 3}, # Check xenstore key sanitizing {'key': 'hi.there', 'value': 4}, {'key': 'hi!t.e/e', 'value': 5}], # Check xenstore key sanitizing system_metadata=[{'key': 'sys_a', 'value': 1}, {'key': 'sys_b', 'value': 2}, {'key': 'sys_c', 'value': 3}], uuid='fake') self.conn._vmops._inject_instance_metadata(instance, 'vm_ref') self.assertEqual(self.xenstore, { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', 'vm-data/user-metadata/hi_there': '4', 'vm-data/user-metadata/hi_t_e_e': '5', }, 'ephem': {}, }) def test_change_instance_metadata_add(self): # Test XenStore key sanitizing here, too. diff = {'test.key': ['+', 4]} instance = {'uuid': 'fake'} self.xenstore = { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', }, } self.conn._vmops.change_instance_metadata(instance, diff) self.assertEqual(self.xenstore, { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', 'vm-data/user-metadata/test_key': '4', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', 'vm-data/user-metadata/test_key': '4', }, }) def test_change_instance_metadata_update(self): diff = dict(b=['+', 4]) instance = {'uuid': 'fake'} self.xenstore = { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', }, } self.conn._vmops.change_instance_metadata(instance, diff) self.assertEqual(self.xenstore, { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '4', 'vm-data/user-metadata/c': '3', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '4', 'vm-data/user-metadata/c': '3', }, }) def test_change_instance_metadata_delete(self): diff = dict(b=['-']) instance = {'uuid': 'fake'} self.xenstore = { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', }, } self.conn._vmops.change_instance_metadata(instance, diff) self.assertEqual(self.xenstore, { 'persist': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/c': '3', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/c': '3', }, }) def test_change_instance_metadata_not_found(self): instance = {'uuid': 'not_found'} self.conn._vmops.change_instance_metadata(instance, "fake_diff") self.assertTrue(self.called_fake_get_vm_opaque_ref) class XenAPISessionTestCase(test.NoDBTestCase): def _get_mock_xapisession(self, software_version): class MockXapiSession(xenapi_session.XenAPISession): def __init__(_ignore): "Skip the superclass's dirty init" def _get_software_version(_ignore): return software_version return MockXapiSession() def test_local_session(self): session = self._get_mock_xapisession({}) session.is_local_connection = True session.XenAPI = self.mox.CreateMockAnything() session.XenAPI.xapi_local().AndReturn("local_connection") self.mox.ReplayAll() self.assertEqual("local_connection", session._create_session("unix://local")) def test_remote_session(self): session = self._get_mock_xapisession({}) session.is_local_connection = False session.XenAPI = self.mox.CreateMockAnything() session.XenAPI.Session("url").AndReturn("remote_connection") self.mox.ReplayAll() self.assertEqual("remote_connection", session._create_session("url")) def test_get_product_version_product_brand_does_not_fail(self): session = self._get_mock_xapisession({ 'build_number': '0', 'date': '2012-08-03', 'hostname': 'komainu', 'linux': '3.2.0-27-generic', 'network_backend': 'bridge', 'platform_name': 'XCP_Kronos', 'platform_version': '1.6.0', 'xapi': '1.3', 'xen': '4.1.2', 'xencenter_max': '1.10', 'xencenter_min': '1.10' }) self.assertEqual( ((1, 6, 0), None), session._get_product_version_and_brand() ) def test_get_product_version_product_brand_xs_6(self): session = self._get_mock_xapisession({ 'product_brand': 'XenServer', 'product_version': '6.0.50', 'platform_version': '0.0.1' }) self.assertEqual( ((6, 0, 50), 'XenServer'), session._get_product_version_and_brand() ) def test_verify_plugin_version_same(self): session = self._get_mock_xapisession({}) session.PLUGIN_REQUIRED_VERSION = '2.4' self.mox.StubOutWithMock(session, 'call_plugin_serialized') session.call_plugin_serialized('nova_plugin_version', 'get_version', ).AndReturn("2.4") self.mox.ReplayAll() session._verify_plugin_version() def test_verify_plugin_version_compatible(self): session = self._get_mock_xapisession({}) session.XenAPI = xenapi_fake.FakeXenAPI() session.PLUGIN_REQUIRED_VERSION = '2.4' self.mox.StubOutWithMock(session, 'call_plugin_serialized') session.call_plugin_serialized('nova_plugin_version', 'get_version', ).AndReturn("2.5") self.mox.ReplayAll() session._verify_plugin_version() def test_verify_plugin_version_bad_maj(self): session = self._get_mock_xapisession({}) session.XenAPI = xenapi_fake.FakeXenAPI() session.PLUGIN_REQUIRED_VERSION = '2.4' self.mox.StubOutWithMock(session, 'call_plugin_serialized') session.call_plugin_serialized('nova_plugin_version', 'get_version', ).AndReturn("3.0") self.mox.ReplayAll() self.assertRaises(xenapi_fake.Failure, session._verify_plugin_version) def test_verify_plugin_version_bad_min(self): session = self._get_mock_xapisession({}) session.XenAPI = xenapi_fake.FakeXenAPI() session.PLUGIN_REQUIRED_VERSION = '2.4' self.mox.StubOutWithMock(session, 'call_plugin_serialized') session.call_plugin_serialized('nova_plugin_version', 'get_version', ).AndReturn("2.3") self.mox.ReplayAll() self.assertRaises(xenapi_fake.Failure, session._verify_plugin_version) def test_verify_current_version_matches(self): session = self._get_mock_xapisession({}) # Import the plugin to extract its version path = os.path.dirname(__file__) rel_path_elem = "../../../../plugins/xenserver/xenapi/etc/xapi.d/" \ "plugins/nova_plugin_version" for elem in rel_path_elem.split('/'): path = os.path.join(path, elem) path = os.path.realpath(path) plugin_version = None with open(path) as plugin_file: for line in plugin_file: if "PLUGIN_VERSION = " in line: plugin_version = line.strip()[17:].strip('"') self.assertEqual(session.PLUGIN_REQUIRED_VERSION, plugin_version) class XenAPIFakeTestCase(test.NoDBTestCase): def test_query_matches(self): record = {'a': '1', 'b': '2', 'c_d': '3'} tests = {'field "a"="1"': True, 'field "b"="2"': True, 'field "b"="4"': False, 'not field "b"="4"': True, 'field "a"="1" and field "b"="4"': False, 'field "a"="1" or field "b"="4"': True, 'field "c__d"="3"': True, 'field \'b\'=\'2\'': True, } for query in tests.keys(): expected = tests[query] fail_msg = "for test '%s'" % query self.assertEqual(xenapi_fake._query_matches(record, query), expected, fail_msg) def test_query_bad_format(self): record = {'a': '1', 'b': '2', 'c': '3'} tests = ['"a"="1" or "b"="4"', 'a=1', ] for query in tests: fail_msg = "for test '%s'" % query self.assertFalse(xenapi_fake._query_matches(record, query), fail_msg) nova-2014.1/nova/tests/virt/xenapi/test_vmops.py0000664000175400017540000012011012323721510023023 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from eventlet import greenthread import mock from nova.compute import power_state from nova.compute import task_states from nova import exception from nova.pci import pci_manager from nova import test from nova.tests.virt.xenapi import stubs from nova.virt import fake from nova.virt.xenapi import agent as xenapi_agent from nova.virt.xenapi.client import session as xenapi_session from nova.virt.xenapi import fake as xenapi_fake from nova.virt.xenapi import vm_utils from nova.virt.xenapi import vmops class VMOpsTestBase(stubs.XenAPITestBaseNoDB): def setUp(self): super(VMOpsTestBase, self).setUp() self._setup_mock_vmops() self.vms = [] def _setup_mock_vmops(self, product_brand=None, product_version=None): stubs.stubout_session(self.stubs, xenapi_fake.SessionBase) self._session = xenapi_session.XenAPISession('test_url', 'root', 'test_pass') self.vmops = vmops.VMOps(self._session, fake.FakeVirtAPI()) def create_vm(self, name, state="Running"): vm_ref = xenapi_fake.create_vm(name, state) self.vms.append(vm_ref) vm = xenapi_fake.get_record("VM", vm_ref) return vm, vm_ref def tearDown(self): super(VMOpsTestBase, self).tearDown() for vm in self.vms: xenapi_fake.destroy_vm(vm) class VMOpsTestCase(VMOpsTestBase): def setUp(self): super(VMOpsTestCase, self).setUp() self._setup_mock_vmops() def _setup_mock_vmops(self, product_brand=None, product_version=None): self._session = self._get_mock_session(product_brand, product_version) self._vmops = vmops.VMOps(self._session, fake.FakeVirtAPI()) def _get_mock_session(self, product_brand, product_version): class Mock(object): pass mock_session = Mock() mock_session.product_brand = product_brand mock_session.product_version = product_version return mock_session def _test_finish_revert_migration_after_crash(self, backup_made, new_made, vm_shutdown=True): instance = {'name': 'foo', 'task_state': task_states.RESIZE_MIGRATING} context = 'fake_context' self.mox.StubOutWithMock(vm_utils, 'lookup') self.mox.StubOutWithMock(self._vmops, '_destroy') self.mox.StubOutWithMock(vm_utils, 'set_vm_name_label') self.mox.StubOutWithMock(self._vmops, '_attach_mapped_block_devices') self.mox.StubOutWithMock(self._vmops, '_start') self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown') vm_utils.lookup(self._session, 'foo-orig').AndReturn( backup_made and 'foo' or None) vm_utils.lookup(self._session, 'foo').AndReturn( (not backup_made or new_made) and 'foo' or None) if backup_made: if new_made: self._vmops._destroy(instance, 'foo') vm_utils.set_vm_name_label(self._session, 'foo', 'foo') self._vmops._attach_mapped_block_devices(instance, []) vm_utils.is_vm_shutdown(self._session, 'foo').AndReturn(vm_shutdown) if vm_shutdown: self._vmops._start(instance, 'foo') self.mox.ReplayAll() self._vmops.finish_revert_migration(context, instance, []) def test_finish_revert_migration_after_crash(self): self._test_finish_revert_migration_after_crash(True, True) def test_finish_revert_migration_after_crash_before_new(self): self._test_finish_revert_migration_after_crash(True, False) def test_finish_revert_migration_after_crash_before_backup(self): self._test_finish_revert_migration_after_crash(False, False) def test_xsm_sr_check_relaxed_cached(self): self.make_plugin_call_count = 0 def fake_make_plugin_call(plugin, method, **args): self.make_plugin_call_count = self.make_plugin_call_count + 1 return "true" self.stubs.Set(self._vmops, "_make_plugin_call", fake_make_plugin_call) self.assertTrue(self._vmops._is_xsm_sr_check_relaxed()) self.assertTrue(self._vmops._is_xsm_sr_check_relaxed()) self.assertEqual(self.make_plugin_call_count, 1) def test_get_vm_opaque_ref_raises_instance_not_found(self): instance = {"name": "dummy"} self.mox.StubOutWithMock(vm_utils, 'lookup') vm_utils.lookup(self._session, instance['name'], False).AndReturn(None) self.mox.ReplayAll() self.assertRaises(exception.InstanceNotFound, self._vmops._get_vm_opaque_ref, instance) class InjectAutoDiskConfigTestCase(VMOpsTestBase): def setUp(self): super(InjectAutoDiskConfigTestCase, self).setUp() def test_inject_auto_disk_config_when_present(self): vm, vm_ref = self.create_vm("dummy") instance = {"name": "dummy", "uuid": "1234", "auto_disk_config": True} self.vmops._inject_auto_disk_config(instance, vm_ref) xenstore_data = vm['xenstore_data'] self.assertEqual(xenstore_data['vm-data/auto-disk-config'], 'True') def test_inject_auto_disk_config_none_as_false(self): vm, vm_ref = self.create_vm("dummy") instance = {"name": "dummy", "uuid": "1234", "auto_disk_config": None} self.vmops._inject_auto_disk_config(instance, vm_ref) xenstore_data = vm['xenstore_data'] self.assertEqual(xenstore_data['vm-data/auto-disk-config'], 'False') class GetConsoleOutputTestCase(VMOpsTestBase): def setUp(self): super(GetConsoleOutputTestCase, self).setUp() def test_get_console_output_works(self): self.mox.StubOutWithMock(self.vmops, '_get_dom_id') instance = {"name": "dummy"} self.vmops._get_dom_id(instance, check_rescue=True).AndReturn(42) self.mox.ReplayAll() self.assertEqual("dom_id: 42", self.vmops.get_console_output(instance)) def test_get_console_output_throws_nova_exception(self): self.mox.StubOutWithMock(self.vmops, '_get_dom_id') instance = {"name": "dummy"} # dom_id=0 used to trigger exception in fake XenAPI self.vmops._get_dom_id(instance, check_rescue=True).AndReturn(0) self.mox.ReplayAll() self.assertRaises(exception.NovaException, self.vmops.get_console_output, instance) def test_get_dom_id_works(self): instance = {"name": "dummy"} vm, vm_ref = self.create_vm("dummy") self.assertEqual(vm["domid"], self.vmops._get_dom_id(instance)) def test_get_dom_id_works_with_rescue_vm(self): instance = {"name": "dummy"} vm, vm_ref = self.create_vm("dummy-rescue") self.assertEqual(vm["domid"], self.vmops._get_dom_id(instance, check_rescue=True)) def test_get_dom_id_raises_not_found(self): instance = {"name": "dummy"} self.create_vm("not-dummy") self.assertRaises(exception.NotFound, self.vmops._get_dom_id, instance) def test_get_dom_id_works_with_vmref(self): vm, vm_ref = self.create_vm("dummy") self.assertEqual(vm["domid"], self.vmops._get_dom_id(vm_ref=vm_ref)) class SpawnTestCase(VMOpsTestBase): def _stub_out_common(self): self.mox.StubOutWithMock(self.vmops, '_ensure_instance_name_unique') self.mox.StubOutWithMock(self.vmops, '_ensure_enough_free_mem') self.mox.StubOutWithMock(self.vmops, '_update_instance_progress') self.mox.StubOutWithMock(vm_utils, 'determine_disk_image_type') self.mox.StubOutWithMock(vm_utils, 'get_vdis_for_instance') self.mox.StubOutWithMock(vm_utils, 'safe_destroy_vdis') self.mox.StubOutWithMock(self.vmops, '_resize_up_vdis') self.mox.StubOutWithMock(vm_utils, 'create_kernel_and_ramdisk') self.mox.StubOutWithMock(vm_utils, 'destroy_kernel_ramdisk') self.mox.StubOutWithMock(self.vmops, '_create_vm_record') self.mox.StubOutWithMock(self.vmops, '_destroy') self.mox.StubOutWithMock(self.vmops, '_attach_disks') self.mox.StubOutWithMock(pci_manager, 'get_instance_pci_devs') self.mox.StubOutWithMock(vm_utils, 'set_other_config_pci') self.mox.StubOutWithMock(self.vmops, '_attach_orig_disk_for_rescue') self.mox.StubOutWithMock(self.vmops, 'inject_network_info') self.mox.StubOutWithMock(self.vmops, '_inject_hostname') self.mox.StubOutWithMock(self.vmops, '_inject_instance_metadata') self.mox.StubOutWithMock(self.vmops, '_inject_auto_disk_config') self.mox.StubOutWithMock(self.vmops, '_file_inject_vm_settings') self.mox.StubOutWithMock(self.vmops, '_create_vifs') self.mox.StubOutWithMock(self.vmops.firewall_driver, 'setup_basic_filtering') self.mox.StubOutWithMock(self.vmops.firewall_driver, 'prepare_instance_filter') self.mox.StubOutWithMock(self.vmops, '_start') self.mox.StubOutWithMock(self.vmops, '_wait_for_instance_to_start') self.mox.StubOutWithMock(self.vmops, '_configure_new_instance_with_agent') self.mox.StubOutWithMock(self.vmops, '_remove_hostname') self.mox.StubOutWithMock(self.vmops.firewall_driver, 'apply_instance_filter') def _test_spawn(self, name_label_param=None, block_device_info_param=None, rescue=False, include_root_vdi=True, throw_exception=None, attach_pci_dev=False): self._stub_out_common() instance = {"name": "dummy", "uuid": "fake_uuid"} name_label = name_label_param if name_label is None: name_label = "dummy" image_meta = {"id": "image_id"} context = "context" session = self.vmops._session injected_files = "fake_files" admin_password = "password" network_info = "net_info" steps = 10 if rescue: steps += 1 block_device_info = block_device_info_param if block_device_info and not block_device_info['root_device_name']: block_device_info = dict(block_device_info_param) block_device_info['root_device_name'] = \ self.vmops.default_root_dev di_type = "di_type" vm_utils.determine_disk_image_type(image_meta).AndReturn(di_type) step = 1 self.vmops._update_instance_progress(context, instance, step, steps) vdis = {"other": {"ref": "fake_ref_2", "osvol": True}} if include_root_vdi: vdis["root"] = {"ref": "fake_ref"} vm_utils.get_vdis_for_instance(context, session, instance, name_label, "image_id", di_type, block_device_info=block_device_info).AndReturn(vdis) self.vmops._resize_up_vdis(instance, vdis) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) kernel_file = "kernel" ramdisk_file = "ramdisk" vm_utils.create_kernel_and_ramdisk(context, session, instance, name_label).AndReturn((kernel_file, ramdisk_file)) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) vm_ref = "fake_vm_ref" self.vmops._ensure_instance_name_unique(name_label) self.vmops._ensure_enough_free_mem(instance) self.vmops._create_vm_record(context, instance, name_label, di_type, kernel_file, ramdisk_file, image_meta).AndReturn(vm_ref) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) self.vmops._attach_disks(instance, vm_ref, name_label, vdis, di_type, network_info, admin_password, injected_files) if attach_pci_dev: fake_dev = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 1, 'compute_node_id': 1, 'address': '00:00.0', 'vendor_id': '1234', 'product_id': 'abcd', 'dev_type': 'type-PCI', 'status': 'available', 'dev_id': 'devid', 'label': 'label', 'instance_uuid': None, 'extra_info': '{}', } pci_manager.get_instance_pci_devs(instance).AndReturn([fake_dev]) vm_utils.set_other_config_pci(self.vmops._session, vm_ref, "0/0000:00:00.0") else: pci_manager.get_instance_pci_devs(instance).AndReturn([]) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) self.vmops._inject_instance_metadata(instance, vm_ref) self.vmops._inject_auto_disk_config(instance, vm_ref) self.vmops._inject_hostname(instance, vm_ref, rescue) self.vmops._file_inject_vm_settings(instance, vm_ref, vdis, network_info) self.vmops.inject_network_info(instance, network_info, vm_ref) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) self.vmops._create_vifs(instance, vm_ref, network_info) self.vmops.firewall_driver.setup_basic_filtering(instance, network_info).AndRaise(NotImplementedError) self.vmops.firewall_driver.prepare_instance_filter(instance, network_info) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) if rescue: self.vmops._attach_orig_disk_for_rescue(instance, vm_ref) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) self.vmops._start(instance, vm_ref) self.vmops._wait_for_instance_to_start(instance, vm_ref) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) self.vmops._configure_new_instance_with_agent(instance, vm_ref, injected_files, admin_password) self.vmops._remove_hostname(instance, vm_ref) step += 1 self.vmops._update_instance_progress(context, instance, step, steps) self.vmops.firewall_driver.apply_instance_filter(instance, network_info) step += 1 last_call = self.vmops._update_instance_progress(context, instance, step, steps) if throw_exception: last_call.AndRaise(throw_exception) self.vmops._destroy(instance, vm_ref, network_info=network_info) vm_utils.destroy_kernel_ramdisk(self.vmops._session, instance, kernel_file, ramdisk_file) vm_utils.safe_destroy_vdis(self.vmops._session, ["fake_ref"]) self.mox.ReplayAll() self.vmops.spawn(context, instance, image_meta, injected_files, admin_password, network_info, block_device_info_param, name_label_param, rescue) def test_spawn(self): self._test_spawn() def test_spawn_with_alternate_options(self): self._test_spawn(include_root_vdi=False, rescue=True, name_label_param="bob", block_device_info_param={"root_device_name": ""}) def test_spawn_with_pci_available_on_the_host(self): self._test_spawn(attach_pci_dev=True) def test_spawn_performs_rollback_and_throws_exception(self): self.assertRaises(test.TestingException, self._test_spawn, throw_exception=test.TestingException()) def _test_finish_migration(self, power_on=True, resize_instance=True, throw_exception=None): self._stub_out_common() self.mox.StubOutWithMock(vm_utils, "import_all_migrated_disks") self.mox.StubOutWithMock(self.vmops, "_attach_mapped_block_devices") context = "context" migration = {} name_label = "dummy" instance = {"name": name_label, "uuid": "fake_uuid"} disk_info = "disk_info" network_info = "net_info" image_meta = {"id": "image_id"} block_device_info = "bdi" session = self.vmops._session self.vmops._ensure_instance_name_unique(name_label) self.vmops._ensure_enough_free_mem(instance) di_type = "di_type" vm_utils.determine_disk_image_type(image_meta).AndReturn(di_type) root_vdi = {"ref": "fake_ref"} ephemeral_vdi = {"ref": "fake_ref_e"} vdis = {"root": root_vdi, "ephemerals": {4: ephemeral_vdi}} vm_utils.import_all_migrated_disks(self.vmops._session, instance).AndReturn(vdis) kernel_file = "kernel" ramdisk_file = "ramdisk" vm_utils.create_kernel_and_ramdisk(context, session, instance, name_label).AndReturn((kernel_file, ramdisk_file)) vm_ref = "fake_vm_ref" self.vmops._create_vm_record(context, instance, name_label, di_type, kernel_file, ramdisk_file, image_meta).AndReturn(vm_ref) if resize_instance: self.vmops._resize_up_vdis(instance, vdis) self.vmops._attach_disks(instance, vm_ref, name_label, vdis, di_type, network_info, None, None) self.vmops._attach_mapped_block_devices(instance, block_device_info) pci_manager.get_instance_pci_devs(instance).AndReturn([]) self.vmops._inject_instance_metadata(instance, vm_ref) self.vmops._inject_auto_disk_config(instance, vm_ref) self.vmops._file_inject_vm_settings(instance, vm_ref, vdis, network_info) self.vmops.inject_network_info(instance, network_info, vm_ref) self.vmops._create_vifs(instance, vm_ref, network_info) self.vmops.firewall_driver.setup_basic_filtering(instance, network_info).AndRaise(NotImplementedError) self.vmops.firewall_driver.prepare_instance_filter(instance, network_info) if power_on: self.vmops._start(instance, vm_ref) self.vmops._wait_for_instance_to_start(instance, vm_ref) self.vmops.firewall_driver.apply_instance_filter(instance, network_info) last_call = self.vmops._update_instance_progress(context, instance, step=5, total_steps=5) if throw_exception: last_call.AndRaise(throw_exception) self.vmops._destroy(instance, vm_ref, network_info=network_info) vm_utils.destroy_kernel_ramdisk(self.vmops._session, instance, kernel_file, ramdisk_file) vm_utils.safe_destroy_vdis(self.vmops._session, ["fake_ref_e", "fake_ref"]) self.mox.ReplayAll() self.vmops.finish_migration(context, migration, instance, disk_info, network_info, image_meta, resize_instance, block_device_info, power_on) def test_finish_migration(self): self._test_finish_migration() def test_finish_migration_no_power_on(self): self._test_finish_migration(power_on=False, resize_instance=False) def test_finish_migrate_performs_rollback_on_error(self): self.assertRaises(test.TestingException, self._test_finish_migration, power_on=False, resize_instance=False, throw_exception=test.TestingException()) def test_remove_hostname(self): vm, vm_ref = self.create_vm("dummy") instance = {"name": "dummy", "uuid": "1234", "auto_disk_config": None} self.mox.StubOutWithMock(self._session, 'call_xenapi') self._session.call_xenapi("VM.remove_from_xenstore_data", vm_ref, "vm-data/hostname") self.mox.ReplayAll() self.vmops._remove_hostname(instance, vm_ref) self.mox.VerifyAll() def test_reset_network(self): class mock_agent(object): def __init__(self): self.called = False def resetnetwork(self): self.called = True vm, vm_ref = self.create_vm("dummy") instance = {"name": "dummy", "uuid": "1234", "auto_disk_config": None} agent = mock_agent() self.mox.StubOutWithMock(self.vmops, 'agent_enabled') self.mox.StubOutWithMock(self.vmops, '_get_agent') self.mox.StubOutWithMock(self.vmops, '_inject_hostname') self.mox.StubOutWithMock(self.vmops, '_remove_hostname') self.vmops.agent_enabled(instance).AndReturn(True) self.vmops._get_agent(instance, vm_ref).AndReturn(agent) self.vmops._inject_hostname(instance, vm_ref, False) self.vmops._remove_hostname(instance, vm_ref) self.mox.ReplayAll() self.vmops.reset_network(instance) self.assertTrue(agent.called) self.mox.VerifyAll() def test_inject_hostname(self): instance = {"hostname": "dummy", "os_type": "fake", "uuid": "uuid"} vm_ref = "vm_ref" self.mox.StubOutWithMock(self.vmops, '_add_to_param_xenstore') self.vmops._add_to_param_xenstore(vm_ref, 'vm-data/hostname', 'dummy') self.mox.ReplayAll() self.vmops._inject_hostname(instance, vm_ref, rescue=False) def test_inject_hostname_with_rescue_prefix(self): instance = {"hostname": "dummy", "os_type": "fake", "uuid": "uuid"} vm_ref = "vm_ref" self.mox.StubOutWithMock(self.vmops, '_add_to_param_xenstore') self.vmops._add_to_param_xenstore(vm_ref, 'vm-data/hostname', 'RESCUE-dummy') self.mox.ReplayAll() self.vmops._inject_hostname(instance, vm_ref, rescue=True) def test_inject_hostname_with_windows_name_truncation(self): instance = {"hostname": "dummydummydummydummydummy", "os_type": "windows", "uuid": "uuid"} vm_ref = "vm_ref" self.mox.StubOutWithMock(self.vmops, '_add_to_param_xenstore') self.vmops._add_to_param_xenstore(vm_ref, 'vm-data/hostname', 'RESCUE-dummydum') self.mox.ReplayAll() self.vmops._inject_hostname(instance, vm_ref, rescue=True) def test_wait_for_instance_to_start(self): instance = {"uuid": "uuid"} vm_ref = "vm_ref" self.mox.StubOutWithMock(vm_utils, 'get_power_state') self.mox.StubOutWithMock(greenthread, 'sleep') vm_utils.get_power_state(self._session, vm_ref).AndReturn( power_state.SHUTDOWN) greenthread.sleep(0.5) vm_utils.get_power_state(self._session, vm_ref).AndReturn( power_state.RUNNING) self.mox.ReplayAll() self.vmops._wait_for_instance_to_start(instance, vm_ref) def test_attach_orig_disk_for_rescue(self): instance = {"name": "dummy"} vm_ref = "vm_ref" self.mox.StubOutWithMock(vm_utils, 'lookup') self.mox.StubOutWithMock(self.vmops, '_find_root_vdi_ref') self.mox.StubOutWithMock(vm_utils, 'create_vbd') vm_utils.lookup(self.vmops._session, "dummy").AndReturn("ref") self.vmops._find_root_vdi_ref("ref").AndReturn("vdi_ref") vm_utils.create_vbd(self.vmops._session, vm_ref, "vdi_ref", vmops.DEVICE_RESCUE, bootable=False) self.mox.ReplayAll() self.vmops._attach_orig_disk_for_rescue(instance, vm_ref) def test_agent_update_setup(self): # agent updates need to occur after networking is configured instance = {'name': 'betelgeuse', 'uuid': '1-2-3-4-5-6'} vm_ref = 'vm_ref' agent = xenapi_agent.XenAPIBasedAgent(self.vmops._session, self.vmops._virtapi, instance, vm_ref) self.mox.StubOutWithMock(xenapi_agent, 'should_use_agent') self.mox.StubOutWithMock(self.vmops, '_get_agent') self.mox.StubOutWithMock(agent, 'get_version') self.mox.StubOutWithMock(agent, 'resetnetwork') self.mox.StubOutWithMock(agent, 'update_if_needed') xenapi_agent.should_use_agent(instance).AndReturn(True) self.vmops._get_agent(instance, vm_ref).AndReturn(agent) agent.get_version().AndReturn('1.2.3') agent.resetnetwork() agent.update_if_needed('1.2.3') self.mox.ReplayAll() self.vmops._configure_new_instance_with_agent(instance, vm_ref, None, None) @mock.patch.object(vmops.VMOps, '_update_instance_progress') @mock.patch.object(vmops.VMOps, '_get_vm_opaque_ref') @mock.patch.object(vm_utils, 'get_sr_path') @mock.patch.object(vmops.VMOps, '_detach_block_devices_from_orig_vm') @mock.patch.object(vmops.VMOps, '_migrate_disk_resizing_down') @mock.patch.object(vmops.VMOps, '_migrate_disk_resizing_up') class MigrateDiskAndPowerOffTestCase(VMOpsTestBase): def test_migrate_disk_and_power_off_works_down(self, migrate_up, migrate_down, *mocks): instance = {"root_gb": 2, "ephemeral_gb": 0, "uuid": "uuid"} flavor = {"root_gb": 1, "ephemeral_gb": 0} self.vmops.migrate_disk_and_power_off(None, instance, None, flavor, None) self.assertFalse(migrate_up.called) self.assertTrue(migrate_down.called) def test_migrate_disk_and_power_off_works_up(self, migrate_up, migrate_down, *mocks): instance = {"root_gb": 1, "ephemeral_gb": 1, "uuid": "uuid"} flavor = {"root_gb": 2, "ephemeral_gb": 2} self.vmops.migrate_disk_and_power_off(None, instance, None, flavor, None) self.assertFalse(migrate_down.called) self.assertTrue(migrate_up.called) def test_migrate_disk_and_power_off_resize_down_ephemeral_fails(self, migrate_up, migrate_down, *mocks): instance = {"ephemeral_gb": 2} flavor = {"ephemeral_gb": 1} self.assertRaises(exception.ResizeError, self.vmops.migrate_disk_and_power_off, None, instance, None, flavor, None) @mock.patch.object(vm_utils, 'migrate_vhd') @mock.patch.object(vmops.VMOps, '_resize_ensure_vm_is_shutdown') @mock.patch.object(vm_utils, 'get_all_vdi_uuids_for_vm') @mock.patch.object(vmops.VMOps, '_update_instance_progress') @mock.patch.object(vmops.VMOps, '_apply_orig_vm_name_label') class MigrateDiskResizingUpTestCase(VMOpsTestBase): def _fake_snapshot_attached_here(self, session, instance, vm_ref, label, userdevice, post_snapshot_callback): self.assertIsInstance(instance, dict) if userdevice == '0': self.assertEqual("vm_ref", vm_ref) self.assertEqual("fake-snapshot", label) yield ["leaf", "parent", "grandp"] else: leaf = userdevice + "-leaf" parent = userdevice + "-parent" yield [leaf, parent] def test_migrate_disk_resizing_up_works_no_ephemeral(self, mock_apply_orig, mock_update_progress, mock_get_all_vdi_uuids, mock_shutdown, mock_migrate_vhd): context = "ctxt" instance = {"name": "fake", "uuid": "uuid"} dest = "dest" vm_ref = "vm_ref" sr_path = "sr_path" mock_get_all_vdi_uuids.return_value = None with mock.patch.object(vm_utils, '_snapshot_attached_here_impl', self._fake_snapshot_attached_here): self.vmops._migrate_disk_resizing_up(context, instance, dest, vm_ref, sr_path) mock_get_all_vdi_uuids.assert_called_once_with(self.vmops._session, vm_ref, min_userdevice=4) mock_apply_orig.assert_called_once_with(instance, vm_ref) mock_shutdown.assert_called_once_with(instance, vm_ref) m_vhd_expected = [mock.call(self.vmops._session, instance, "parent", dest, sr_path, 1), mock.call(self.vmops._session, instance, "grandp", dest, sr_path, 2), mock.call(self.vmops._session, instance, "leaf", dest, sr_path, 0)] self.assertEqual(m_vhd_expected, mock_migrate_vhd.call_args_list) prog_expected = [ mock.call(context, instance, 1, 5), mock.call(context, instance, 2, 5), mock.call(context, instance, 3, 5), mock.call(context, instance, 4, 5) # 5/5: step to be executed by finish migration. ] self.assertEqual(prog_expected, mock_update_progress.call_args_list) def test_migrate_disk_resizing_up_works_with_two_ephemeral(self, mock_apply_orig, mock_update_progress, mock_get_all_vdi_uuids, mock_shutdown, mock_migrate_vhd): context = "ctxt" instance = {"name": "fake", "uuid": "uuid"} dest = "dest" vm_ref = "vm_ref" sr_path = "sr_path" mock_get_all_vdi_uuids.return_value = ["vdi-eph1", "vdi-eph2"] with mock.patch.object(vm_utils, '_snapshot_attached_here_impl', self._fake_snapshot_attached_here): self.vmops._migrate_disk_resizing_up(context, instance, dest, vm_ref, sr_path) mock_get_all_vdi_uuids.assert_called_once_with(self.vmops._session, vm_ref, min_userdevice=4) mock_apply_orig.assert_called_once_with(instance, vm_ref) mock_shutdown.assert_called_once_with(instance, vm_ref) m_vhd_expected = [mock.call(self.vmops._session, instance, "parent", dest, sr_path, 1), mock.call(self.vmops._session, instance, "grandp", dest, sr_path, 2), mock.call(self.vmops._session, instance, "4-parent", dest, sr_path, 1, 1), mock.call(self.vmops._session, instance, "5-parent", dest, sr_path, 1, 2), mock.call(self.vmops._session, instance, "leaf", dest, sr_path, 0), mock.call(self.vmops._session, instance, "4-leaf", dest, sr_path, 0, 1), mock.call(self.vmops._session, instance, "5-leaf", dest, sr_path, 0, 2)] self.assertEqual(m_vhd_expected, mock_migrate_vhd.call_args_list) prog_expected = [ mock.call(context, instance, 1, 5), mock.call(context, instance, 2, 5), mock.call(context, instance, 3, 5), mock.call(context, instance, 4, 5) # 5/5: step to be executed by finish migration. ] self.assertEqual(prog_expected, mock_update_progress.call_args_list) @mock.patch.object(vmops.VMOps, '_restore_orig_vm_and_cleanup_orphan') def test_migrate_disk_resizing_up_rollback(self, mock_restore, mock_apply_orig, mock_update_progress, mock_get_all_vdi_uuids, mock_shutdown, mock_migrate_vhd): context = "ctxt" instance = {"name": "fake", "uuid": "fake"} dest = "dest" vm_ref = "vm_ref" sr_path = "sr_path" mock_migrate_vhd.side_effect = test.TestingException mock_restore.side_effect = test.TestingException with mock.patch.object(vm_utils, '_snapshot_attached_here_impl', self._fake_snapshot_attached_here): self.assertRaises(exception.InstanceFaultRollback, self.vmops._migrate_disk_resizing_up, context, instance, dest, vm_ref, sr_path) mock_apply_orig.assert_called_once_with(instance, vm_ref) mock_restore.assert_called_once_with(instance) mock_migrate_vhd.assert_called_once_with(self.vmops._session, instance, "parent", dest, sr_path, 1) class CreateVMRecordTestCase(VMOpsTestBase): @mock.patch.object(vm_utils, 'determine_vm_mode') @mock.patch.object(vm_utils, 'get_vm_device_id') @mock.patch.object(vm_utils, 'create_vm') def test_create_vm_record_with_vm_device_id(self, mock_create_vm, mock_get_vm_device_id, mock_determine_vm_mode): context = "context" instance = {"vm_mode": "vm_mode", "uuid": "uuid123"} name_label = "dummy" disk_image_type = "vhd" kernel_file = "kernel" ramdisk_file = "ram" device_id = "0002" image_properties = {"xenapi_device_id": device_id} image_meta = {"properties": image_properties} session = "session" self.vmops._session = session mock_get_vm_device_id.return_value = device_id mock_determine_vm_mode.return_value = "vm_mode" self.vmops._create_vm_record(context, instance, name_label, disk_image_type, kernel_file, ramdisk_file, image_meta) mock_get_vm_device_id.assert_called_with(session, image_properties) mock_create_vm.assert_called_with(session, instance, name_label, kernel_file, ramdisk_file, False, device_id) class BootableTestCase(VMOpsTestBase): def setUp(self): super(BootableTestCase, self).setUp() self.instance = {"name": "test", "uuid": "fake"} vm_rec, self.vm_ref = self.create_vm('test') # sanity check bootlock is initially disabled: self.assertEqual({}, vm_rec['blocked_operations']) def _get_blocked(self): vm_rec = self._session.call_xenapi("VM.get_record", self.vm_ref) return vm_rec['blocked_operations'] def test_acquire_bootlock(self): self.vmops._acquire_bootlock(self.vm_ref) blocked = self._get_blocked() self.assertIn('start', blocked) def test_release_bootlock(self): self.vmops._acquire_bootlock(self.vm_ref) self.vmops._release_bootlock(self.vm_ref) blocked = self._get_blocked() self.assertNotIn('start', blocked) def test_set_bootable(self): self.vmops.set_bootable(self.instance, True) blocked = self._get_blocked() self.assertNotIn('start', blocked) def test_set_not_bootable(self): self.vmops.set_bootable(self.instance, False) blocked = self._get_blocked() self.assertIn('start', blocked) @mock.patch.object(vm_utils, 'update_vdi_virtual_size') class ResizeVdisTestCase(VMOpsTestBase): def test_resize_up_vdis_root(self, mock_resize): instance = {"root_gb": 20, "ephemeral_gb": 0} self.vmops._resize_up_vdis(instance, {"root": {"ref": "vdi_ref"}}) mock_resize.assert_called_once_with(self.vmops._session, instance, "vdi_ref", 20) def test_resize_up_vdis_zero_disks(self, mock_resize): instance = {"root_gb": 0, "ephemeral_gb": 0} self.vmops._resize_up_vdis(instance, {"root": {}}) self.assertFalse(mock_resize.called) def test_resize_up_vdis_no_vdis_like_initial_spawn(self, mock_resize): instance = {"root_gb": 0, "ephemeral_gb": 3000} vdis = {} self.vmops._resize_up_vdis(instance, vdis) self.assertFalse(mock_resize.called) @mock.patch.object(vm_utils, 'get_ephemeral_disk_sizes') def test_resize_up_vdis_ephemeral(self, mock_sizes, mock_resize): mock_sizes.return_value = [2000, 1000] instance = {"root_gb": 0, "ephemeral_gb": 3000} ephemerals = {"4": {"ref": 4}, "5": {"ref": 5}} vdis = {"ephemerals": ephemerals} self.vmops._resize_up_vdis(instance, vdis) mock_sizes.assert_called_once_with(3000) expected = [mock.call(self.vmops._session, instance, 4, 2000), mock.call(self.vmops._session, instance, 5, 1000)] self.assertEqual(expected, mock_resize.call_args_list) @mock.patch.object(vm_utils, 'generate_single_ephemeral') @mock.patch.object(vm_utils, 'get_ephemeral_disk_sizes') def test_resize_up_vdis_ephemeral_with_generate(self, mock_sizes, mock_generate, mock_resize): mock_sizes.return_value = [2000, 1000] instance = {"root_gb": 0, "ephemeral_gb": 3000, "uuid": "a"} ephemerals = {"4": {"ref": 4}} vdis = {"ephemerals": ephemerals} self.vmops._resize_up_vdis(instance, vdis) mock_sizes.assert_called_once_with(3000) mock_resize.assert_called_once_with(self.vmops._session, instance, 4, 2000) mock_generate.assert_called_once_with(self.vmops._session, instance, None, 5, 1000) @mock.patch.object(vmops.VMOps, '_resize_ensure_vm_is_shutdown') @mock.patch.object(vmops.VMOps, '_apply_orig_vm_name_label') @mock.patch.object(vmops.VMOps, '_update_instance_progress') @mock.patch.object(vm_utils, 'get_vdi_for_vm_safely') @mock.patch.object(vm_utils, 'resize_disk') @mock.patch.object(vm_utils, 'migrate_vhd') @mock.patch.object(vm_utils, 'destroy_vdi') class MigrateDiskResizingDownTestCase(VMOpsTestBase): def test_migrate_disk_resizing_down_works_no_ephemeral( self, mock_destroy_vdi, mock_migrate_vhd, mock_resize_disk, mock_get_vdi_for_vm_safely, mock_update_instance_progress, mock_apply_orig_vm_name_label, mock_resize_ensure_vm_is_shutdown): context = "ctx" instance = {"name": "fake", "uuid": "uuid"} dest = "dest" vm_ref = "vm_ref" sr_path = "sr_path" instance_type = dict(root_gb=1) old_vdi_ref = "old_ref" new_vdi_ref = "new_ref" new_vdi_uuid = "new_uuid" mock_get_vdi_for_vm_safely.return_value = (old_vdi_ref, None) mock_resize_disk.return_value = (new_vdi_ref, new_vdi_uuid) self.vmops._migrate_disk_resizing_down(context, instance, dest, instance_type, vm_ref, sr_path) mock_get_vdi_for_vm_safely.assert_called_once_with( self.vmops._session, vm_ref) mock_resize_ensure_vm_is_shutdown.assert_called_once_with( instance, vm_ref) mock_apply_orig_vm_name_label.assert_called_once_with( instance, vm_ref) mock_resize_disk.assert_called_once_with( self.vmops._session, instance, old_vdi_ref, instance_type) mock_migrate_vhd.assert_called_once_with( self.vmops._session, instance, new_vdi_uuid, dest, sr_path, 0) mock_destroy_vdi.assert_called_once_with( self.vmops._session, new_vdi_ref) prog_expected = [ mock.call(context, instance, 1, 5), mock.call(context, instance, 2, 5), mock.call(context, instance, 3, 5), mock.call(context, instance, 4, 5) # 5/5: step to be executed by finish migration. ] self.assertEqual(prog_expected, mock_update_instance_progress.call_args_list) nova-2014.1/nova/tests/virt/xenapi/vm_rrd.xml0000664000175400017540000006544412323721477022317 0ustar jenkinsjenkins00000000000000 0003 5 1328795567 cpu0 DERIVE 300.0000 0.0 1.0000 5102.8417 0.0110 0 memory GAUGE 300.0000 0.0 Infinity 4294967296 10961792000.0000 0 memory_target GAUGE 300.0000 0.0 Infinity 4294967296 10961792000.0000 0 vif_0_tx DERIVE 300.0000 -Infinity Infinity 1079132206 752.4007 0 vif_0_rx DERIVE 300.0000 -Infinity Infinity 1093250983 4837.8805 0 vbd_xvda_write DERIVE 300.0000 -Infinity Infinity 4552440832 0.0 0 vbd_xvda_read DERIVE 300.0000 -Infinity Infinity 1371223040 0.0 0 memory_internal_free GAUGE 300.0000 -Infinity Infinity 1415564 3612860.6020 0 vbd_xvdb_write DERIVE 300.0000 -Infinity Infinity 0.0 0.0 2 vbd_xvdb_read DERIVE 300.0000 -Infinity Infinity 0.0 0.0 2 vif_2_tx DERIVE 300.0000 -Infinity Infinity 0.0 0.0 2 vif_2_rx DERIVE 300.0000 -Infinity Infinity 0.0 0.0 2 AVERAGE 1 0.5000 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0259 4294967296.0000 4294967296.0000 270.6642 1968.1381 0.0 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0042 4294967296.0000 4294967296.0000 258.6530 1890.5522 565.3453 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0043 4294967296.0000 4294967296.0000 249.1120 1778.2501 817.5985 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0039 4294967296.0000 4294967296.0000 270.5131 1806.3336 9811.4443 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0041 4294967296.0000 4294967296.0000 264.3683 1952.4054 4370.4121 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0034 4294967296.0000 4294967296.0000 251.6331 1958.8002 0.0 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0042 4294967296.0000 4294967296.0000 274.5222 2067.5947 0.0 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0046 4294967296.0000 4294967296.0000 260.9790 2042.7045 1671.6940 0.0 1433552.0000 0.0 0.0 0.0 0.0 0.0163 4294967296.0000 4294967296.0000 249.0992 1845.3728 4119.4312 0.0 1431698.1250 0.0 0.0 0.0 0.0 0.0098 4294967296.0000 4294967296.0000 273.9898 1879.1331 5459.4102 0.0 1430824.0000 0.0 0.0 0.0 0.0 0.0043 4294967296.0000 4294967296.0000 261.3513 2335.3000 6837.4907 0.0 1430824.0000 0.0 0.0 0.0 0.0 0.0793 4294967296.0000 4294967296.0000 249.2620 2092.4504 2391.9744 0.0 1430824.0000 0.0 0.0 0.0 0.0 0.0406 4294967296.0000 4294967296.0000 270.0746 1859.9802 0.0 0.0 1430824.0000 0.0 0.0 0.0 0.0 0.0043 4294967296.0000 4294967296.0000 263.4259 2010.8950 550.1484 0.0 1430824.0000 0.0 0.0 0.0 0.0 0.0565 4294967296.0000 4294967296.0000 29891.2227 26210.6699 3213.4324 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0645 4294967296.0000 4294967296.0000 31501.1562 29642.1641 400.9566 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0381 4294967296.0000 4294967296.0000 17350.7676 20748.6133 1247.4755 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0212 4294967296.0000 4294967296.0000 11981.0918 12866.9775 5774.9497 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0045 4294967296.0000 4294967296.0000 249.0901 1898.6758 4446.3750 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0614 4294967296.0000 4294967296.0000 249.0959 2255.1912 0.0 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0609 4294967296.0000 4294967296.0000 253.1091 2099.0601 1230.0925 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0047 4294967296.0000 4294967296.0000 268.6620 1759.5667 2861.2107 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0100 4294967296.0000 4294967296.0000 292.2647 1828.5435 3270.3474 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0093 4294967296.0000 4294967296.0000 303.5810 1932.1176 4485.4355 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0038 4294967296.0000 4294967296.0000 291.6633 1842.4425 2898.5137 0.0 1415564.0000 0.0 0.0 0.0 0.0 0.0042 4294967296.0000 4294967296.0000 287.4134 1816.0144 0.0 0.0 1415564.0000 0.0 0.0 0.0 0.0 AVERAGE 12 0.5000 0.0 0.0 0.0150 0 0.0 0.0 3221225472.0000 0 0.0 0.0 3221225472.0000 0 0.0 0.0 1181.3309 0 0.0 0.0 2358.2158 0 0.0 0.0 2080.5770 0 0.0 0.0 0.0 0 0.0 0.0 1061673.0000 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0130 4294967296.0000 4294967296.0000 261.6000 1990.6442 1432.2385 0.0 1441908.0000 0.0 0.0 0.0 0.0 0.0172 4294967296.0000 4294967296.0000 318.8885 1979.7030 1724.9528 0.0 1441912.7500 0.0 0.0 0.0 0.0 0.0483 4294967296.0000 4294967296.0000 3108.1233 4815.9639 4962.0503 68.2667 1441916.0000 0.0 0.0 0.0 0.0 0.0229 4294967296.0000 4294967296.0000 1944.2039 3757.9177 10861.6670 0.0 1439546.7500 0.0 0.0 0.0 0.0 0.0639 4294967296.0000 4294967296.0000 44504.8789 34745.1523 9571.1455 0.0 1437892.0000 0.0 0.0 0.0 0.0 0.2945 4294967296.0000 4294967296.0000 79219.1641 102827.0781 438999.3438 0.0 1415337.7500 0.0 0.0 0.0 0.0 0.1219 4294967296.0000 4294967296.0000 61093.7109 49836.3164 8734.3730 0.0 1399324.0000 0.0 0.0 0.0 0.0 0.0151 4294967296.0000 4294967296.0000 48.3914 1922.5935 2251.4346 0.0 1421237.1250 0.0 0.0 0.0 0.0 0.3162 4294967296.0000 4294967296.0000 80667.4922 53950.0430 416858.5000 0.0 1437032.0000 0.0 0.0 0.0 0.0 AVERAGE 720 0.5000 0.0 0.0 0.0848 0 0.0 0.0 3775992081.0667 0 0.0 0.0 3775992081.0667 0 0.0 0.0 16179.3166 0 0.0 0.0 13379.7997 0 0.0 0.0 109091.4636 0 0.0 0.0 323.1289 0 0.0 0.0 1259057.5294 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.1458 4294967296.0000 4294967296.0000 6454.3096 5327.6709 116520.9609 738.4178 2653538.0000 0.0 0.0 0.0 0.0 0.0971 4294967296.0000 4294967296.0000 10180.4941 10825.1777 98749.3438 523.3778 2381725.7500 0.0 0.0 0.0 0.0 0.0683 4294967296.0000 4294967296.0000 23183.2695 19607.6523 93946.5703 807.8222 2143269.2500 0.0 0.0 0.0 0.0 0.0352 4294967296.0000 4294967296.0000 7552.5708 7320.5391 30907.9453 150384.6406 1583336.0000 0.0 0.0 0.0 0.0 AVERAGE 17280 0.5000 0.0 0.0 0.0187 0 0.0 0.0 2483773622.0445 0 0.0 0.0 2483773622.0445 0 0.0 0.0 2648.2715 0 0.0 0.0 3002.4238 0 0.0 0.0 19129.3156 0 0.0 0.0 6365.7244 0 0.0 0.0 1468863.7753 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0579 4294967296.0000 4294967296.0000 6291.0151 7489.2583 70915.3750 50.1570 613674.0000 0.0 0.0 0.0 0.0 0.0541 4294967296.0000 4294967296.0000 10406.3682 10638.9365 32972.1250 7.6800 647683.5625 0.0 0.0 0.0 0.0 0.0189 4294967296.0000 4294967296.0000 207.0768 2145.3167 1685.8905 0.0 599934.0000 0.0 0.0 0.0 0.0 0.0202 4294967296.0000 4294967296.0000 71.0270 2046.6521 6703.9795 182.0444 595963.8750 0.0 0.0 0.0 0.0 0.0661 4294967296.0000 4294967296.0000 8520.3213 8488.0664 52978.7930 7.3956 727540.0000 0.0 0.0 0.0 0.0 0.0219 4294967296.0000 4294967296.0000 40443.0117 20702.5996 -1377536.8750 36990.5898 1823778.0000 0.0 0.0 0.0 0.0 0.0265 4294971904.0000 4294754304.0000 6384.6367 6513.4951 22415.6348 2486.9690 3072170.0000 0.0 0.0 0.0 0.0 nova-2014.1/nova/tests/virt/xenapi/stubs.py0000664000175400017540000003134712323721477022011 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 Citrix Systems, 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. """Stubouts, mocks and fixtures for the test suite.""" import pickle import random from nova.openstack.common import jsonutils from nova import test import nova.tests.image.fake from nova.virt.xenapi.client import session from nova.virt.xenapi import fake from nova.virt.xenapi import vm_utils from nova.virt.xenapi import vmops def stubout_firewall_driver(stubs, conn): def fake_none(self, *args): return _vmops = conn._vmops stubs.Set(_vmops.firewall_driver, 'prepare_instance_filter', fake_none) stubs.Set(_vmops.firewall_driver, 'instance_filter_exists', fake_none) def stubout_instance_snapshot(stubs): def fake_fetch_image(context, session, instance, name_label, image, type): return {'root': dict(uuid=_make_fake_vdi(), file=None), 'kernel': dict(uuid=_make_fake_vdi(), file=None), 'ramdisk': dict(uuid=_make_fake_vdi(), file=None)} stubs.Set(vm_utils, '_fetch_image', fake_fetch_image) def fake_wait_for_vhd_coalesce(*args): #TODO(sirp): Should we actually fake out the data here return "fakeparent", "fakebase" stubs.Set(vm_utils, '_wait_for_vhd_coalesce', fake_wait_for_vhd_coalesce) def stubout_session(stubs, cls, product_version=(5, 6, 2), product_brand='XenServer', **opt_args): """Stubs out methods from XenAPISession.""" stubs.Set(session.XenAPISession, '_create_session', lambda s, url: cls(url, **opt_args)) stubs.Set(session.XenAPISession, '_get_product_version_and_brand', lambda s: (product_version, product_brand)) def stubout_get_this_vm_uuid(stubs): def f(session): vms = [rec['uuid'] for ref, rec in fake.get_all_records('VM').iteritems() if rec['is_control_domain']] return vms[0] stubs.Set(vm_utils, 'get_this_vm_uuid', f) def stubout_image_service_download(stubs): def fake_download(*args, **kwargs): pass stubs.Set(nova.tests.image.fake._FakeImageService, 'download', fake_download) def stubout_stream_disk(stubs): def fake_stream_disk(*args, **kwargs): pass stubs.Set(vm_utils, '_stream_disk', fake_stream_disk) def stubout_determine_is_pv_objectstore(stubs): """Assumes VMs stu have PV kernels.""" def f(*args): return False stubs.Set(vm_utils, '_determine_is_pv_objectstore', f) def stubout_is_snapshot(stubs): """Always returns true xenapi fake driver does not create vmrefs for snapshots. """ def f(*args): return True stubs.Set(vm_utils, 'is_snapshot', f) def stubout_lookup_image(stubs): """Simulates a failure in lookup image.""" def f(_1, _2, _3, _4): raise Exception("Test Exception raised by fake lookup_image") stubs.Set(vm_utils, 'lookup_image', f) def stubout_fetch_disk_image(stubs, raise_failure=False): """Simulates a failure in fetch image_glance_disk.""" def _fake_fetch_disk_image(context, session, instance, name_label, image, image_type): if raise_failure: raise fake.Failure("Test Exception raised by " "fake fetch_image_glance_disk") elif image_type == vm_utils.ImageType.KERNEL: filename = "kernel" elif image_type == vm_utils.ImageType.RAMDISK: filename = "ramdisk" else: filename = "unknown" vdi_type = vm_utils.ImageType.to_string(image_type) return {vdi_type: dict(uuid=None, file=filename)} stubs.Set(vm_utils, '_fetch_disk_image', _fake_fetch_disk_image) def stubout_create_vm(stubs): """Simulates a failure in create_vm.""" def f(*args): raise fake.Failure("Test Exception raised by fake create_vm") stubs.Set(vm_utils, 'create_vm', f) def stubout_attach_disks(stubs): """Simulates a failure in _attach_disks.""" def f(*args): raise fake.Failure("Test Exception raised by fake _attach_disks") stubs.Set(vmops.VMOps, '_attach_disks', f) def _make_fake_vdi(): sr_ref = fake.get_all('SR')[0] vdi_ref = fake.create_vdi('', sr_ref) vdi_rec = fake.get_record('VDI', vdi_ref) return vdi_rec['uuid'] class FakeSessionForVMTests(fake.SessionBase): """Stubs out a XenAPISession for VM tests.""" _fake_iptables_save_output = ("# Generated by iptables-save v1.4.10 on " "Sun Nov 6 22:49:02 2011\n" "*filter\n" ":INPUT ACCEPT [0:0]\n" ":FORWARD ACCEPT [0:0]\n" ":OUTPUT ACCEPT [0:0]\n" "COMMIT\n" "# Completed on Sun Nov 6 22:49:02 2011\n") def host_call_plugin(self, _1, _2, plugin, method, _5): if (plugin, method) == ('glance', 'download_vhd'): root_uuid = _make_fake_vdi() return pickle.dumps(dict(root=dict(uuid=root_uuid))) elif (plugin, method) == ("xenhost", "iptables_config"): return fake.as_json(out=self._fake_iptables_save_output, err='') else: return (super(FakeSessionForVMTests, self). host_call_plugin(_1, _2, plugin, method, _5)) def VM_start(self, _1, ref, _2, _3): vm = fake.get_record('VM', ref) if vm['power_state'] != 'Halted': raise fake.Failure(['VM_BAD_POWER_STATE', ref, 'Halted', vm['power_state']]) vm['power_state'] = 'Running' vm['is_a_template'] = False vm['is_control_domain'] = False vm['domid'] = random.randrange(1, 1 << 16) return vm def VM_start_on(self, _1, vm_ref, host_ref, _2, _3): vm_rec = self.VM_start(_1, vm_ref, _2, _3) vm_rec['resident_on'] = host_ref def VDI_snapshot(self, session_ref, vm_ref, _1): sr_ref = "fakesr" return fake.create_vdi('fakelabel', sr_ref, read_only=True) def SR_scan(self, session_ref, sr_ref): pass class FakeSessionForFirewallTests(FakeSessionForVMTests): """Stubs out a XenApi Session for doing IPTable Firewall tests.""" def __init__(self, uri, test_case=None): super(FakeSessionForFirewallTests, self).__init__(uri) if hasattr(test_case, '_in_rules'): self._in_rules = test_case._in_rules if hasattr(test_case, '_in6_filter_rules'): self._in6_filter_rules = test_case._in6_filter_rules self._test_case = test_case def host_call_plugin(self, _1, _2, plugin, method, args): """Mock method four host_call_plugin to be used in unit tests for the dom0 iptables Firewall drivers for XenAPI """ if plugin == "xenhost" and method == "iptables_config": # The command to execute is a json-encoded list cmd_args = args.get('cmd_args', None) cmd = jsonutils.loads(cmd_args) if not cmd: ret_str = '' else: output = '' process_input = args.get('process_input', None) if cmd == ['ip6tables-save', '-c']: output = '\n'.join(self._in6_filter_rules) if cmd == ['iptables-save', '-c']: output = '\n'.join(self._in_rules) if cmd == ['iptables-restore', '-c', ]: lines = process_input.split('\n') if '*filter' in lines: if self._test_case is not None: self._test_case._out_rules = lines output = '\n'.join(lines) if cmd == ['ip6tables-restore', '-c', ]: lines = process_input.split('\n') if '*filter' in lines: output = '\n'.join(lines) ret_str = fake.as_json(out=output, err='') return ret_str else: return (super(FakeSessionForVMTests, self). host_call_plugin(_1, _2, plugin, method, args)) def stub_out_vm_methods(stubs): def fake_acquire_bootlock(self, vm): pass def fake_release_bootlock(self, vm): pass def fake_generate_ephemeral(*args): pass def fake_wait_for_device(dev): pass stubs.Set(vmops.VMOps, "_acquire_bootlock", fake_acquire_bootlock) stubs.Set(vmops.VMOps, "_release_bootlock", fake_release_bootlock) stubs.Set(vm_utils, 'generate_ephemeral', fake_generate_ephemeral) stubs.Set(vm_utils, '_wait_for_device', fake_wait_for_device) class FakeSessionForVolumeTests(fake.SessionBase): """Stubs out a XenAPISession for Volume tests.""" def VDI_introduce(self, _1, uuid, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11): valid_vdi = False refs = fake.get_all('VDI') for ref in refs: rec = fake.get_record('VDI', ref) if rec['uuid'] == uuid: valid_vdi = True if not valid_vdi: raise fake.Failure([['INVALID_VDI', 'session', self._session]]) class FakeSessionForVolumeFailedTests(FakeSessionForVolumeTests): """Stubs out a XenAPISession for Volume tests: it injects failures.""" def VDI_introduce(self, _1, uuid, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11): # This is for testing failure raise fake.Failure([['INVALID_VDI', 'session', self._session]]) def PBD_unplug(self, _1, ref): rec = fake.get_record('PBD', ref) rec['currently-attached'] = False def SR_forget(self, _1, ref): pass def stub_out_migration_methods(stubs): fakesr = fake.create_sr() def fake_import_all_migrated_disks(session, instance): vdi_ref = fake.create_vdi(instance['name'], fakesr) vdi_rec = fake.get_record('VDI', vdi_ref) vdi_rec['other_config']['nova_disk_type'] = 'root' return {"root": {'uuid': vdi_rec['uuid'], 'ref': vdi_ref}, "ephemerals": {}} def fake_wait_for_instance_to_start(self, *args): pass def fake_get_vdi(session, vm_ref, userdevice='0'): vdi_ref_parent = fake.create_vdi('derp-parent', fakesr) vdi_rec_parent = fake.get_record('VDI', vdi_ref_parent) vdi_ref = fake.create_vdi('derp', fakesr, sm_config={'vhd-parent': vdi_rec_parent['uuid']}) vdi_rec = session.call_xenapi("VDI.get_record", vdi_ref) return vdi_ref, vdi_rec def fake_sr(session, *args): return fakesr def fake_get_sr_path(*args): return "fake" def fake_destroy(*args, **kwargs): pass def fake_generate_ephemeral(*args): pass stubs.Set(vmops.VMOps, '_destroy', fake_destroy) stubs.Set(vmops.VMOps, '_wait_for_instance_to_start', fake_wait_for_instance_to_start) stubs.Set(vm_utils, 'import_all_migrated_disks', fake_import_all_migrated_disks) stubs.Set(vm_utils, 'scan_default_sr', fake_sr) stubs.Set(vm_utils, 'get_vdi_for_vm_safely', fake_get_vdi) stubs.Set(vm_utils, 'get_sr_path', fake_get_sr_path) stubs.Set(vm_utils, 'generate_ephemeral', fake_generate_ephemeral) class FakeSessionForFailedMigrateTests(FakeSessionForVMTests): def VM_assert_can_migrate(self, session, vmref, migrate_data, live, vdi_map, vif_map, options): raise fake.Failure("XenAPI VM.assert_can_migrate failed") def host_migrate_receive(self, session, hostref, networkref, options): raise fake.Failure("XenAPI host.migrate_receive failed") def VM_migrate_send(self, session, vmref, migrate_data, islive, vdi_map, vif_map, options): raise fake.Failure("XenAPI VM.migrate_send failed") # FIXME(sirp): XenAPITestBase is deprecated, all tests should be converted # over to use XenAPITestBaseNoDB class XenAPITestBase(test.TestCase): def setUp(self): super(XenAPITestBase, self).setUp() self.useFixture(test.ReplaceModule('XenAPI', fake)) fake.reset() class XenAPITestBaseNoDB(test.NoDBTestCase): def setUp(self): super(XenAPITestBaseNoDB, self).setUp() self.useFixture(test.ReplaceModule('XenAPI', fake)) fake.reset() nova-2014.1/nova/tests/virt/xenapi/image/0000775000175400017540000000000012323722546021347 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/xenapi/image/test_utils.py0000664000175400017540000002145012323721477024124 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import tarfile from nova.image import glance from nova import test from nova.virt.xenapi.image import utils class GlanceImageTestCase(test.NoDBTestCase): def _get_image(self): return utils.GlanceImage('context', 'href') def _stub_out_glance_services(self): image_service = self.mox.CreateMock(glance.GlanceImageService) self.mox.StubOutWithMock(utils.glance, 'get_remote_image_service') utils.glance.get_remote_image_service('context', 'href').AndReturn( (image_service, 'id')) return image_service def test__image_id(self): self._stub_out_glance_services() self.mox.ReplayAll() image = self._get_image() self.assertEqual('id', image._image_id) def test__image_service(self): image_service = self._stub_out_glance_services() self.mox.ReplayAll() image = self._get_image() self.assertEqual(image_service, image._image_service) def test_meta(self): image_service = self._stub_out_glance_services() image_service.show('context', 'id').AndReturn('metadata') self.mox.ReplayAll() image = self._get_image() self.assertEqual('metadata', image.meta) def test_meta_caching(self): image_service = self._stub_out_glance_services() self.mox.ReplayAll() image = self._get_image() image._cached_meta = 'metadata' self.assertEqual('metadata', image.meta) def test_download_to(self): image_service = self._stub_out_glance_services() image_service.download('context', 'id', 'fobj').AndReturn('result') self.mox.ReplayAll() image = self._get_image() self.assertEqual('result', image.download_to('fobj')) def test_is_raw_tgz_empty_meta(self): self._stub_out_glance_services() self.mox.ReplayAll() image = self._get_image() image._cached_meta = {} self.assertEqual(False, image.is_raw_tgz()) def test_is_raw_tgz_for_raw_tgz(self): self._stub_out_glance_services() self.mox.ReplayAll() image = self._get_image() image._cached_meta = {'disk_format': 'raw', 'container_format': 'tgz'} self.assertEqual(True, image.is_raw_tgz()) def test_data(self): image_service = self._stub_out_glance_services() image_service.download('context', 'id').AndReturn('data') self.mox.ReplayAll() image = self._get_image() self.assertEqual('data', image.data()) class RawImageTestCase(test.NoDBTestCase): def test_get_size(self): glance_image = self.mox.CreateMock(utils.GlanceImage) glance_image.meta = {'size': '123'} raw_image = utils.RawImage(glance_image) self.mox.ReplayAll() self.assertEqual(123, raw_image.get_size()) def test_stream_to(self): glance_image = self.mox.CreateMock(utils.GlanceImage) glance_image.download_to('file').AndReturn('result') raw_image = utils.RawImage(glance_image) self.mox.ReplayAll() self.assertEqual('result', raw_image.stream_to('file')) class TestIterableBasedFile(test.NoDBTestCase): def test_constructor(self): class FakeIterable(object): def __iter__(_self): return 'iterator' the_file = utils.IterableToFileAdapter(FakeIterable()) self.assertEqual('iterator', the_file.iterator) def test_read_one_character(self): the_file = utils.IterableToFileAdapter([ 'chunk1', 'chunk2' ]) self.assertEqual('c', the_file.read(1)) def test_read_stores_remaining_characters(self): the_file = utils.IterableToFileAdapter([ 'chunk1', 'chunk2' ]) the_file.read(1) self.assertEqual('hunk1', the_file.remaining_data) def test_read_remaining_characters(self): the_file = utils.IterableToFileAdapter([ 'chunk1', 'chunk2' ]) self.assertEqual('c', the_file.read(1)) self.assertEqual('h', the_file.read(1)) def test_read_reached_end_of_file(self): the_file = utils.IterableToFileAdapter([ 'chunk1', 'chunk2' ]) self.assertEqual('chunk1', the_file.read(100)) self.assertEqual('chunk2', the_file.read(100)) self.assertEqual('', the_file.read(100)) def test_empty_chunks(self): the_file = utils.IterableToFileAdapter([ '', '', 'chunk2' ]) self.assertEqual('chunk2', the_file.read(100)) class RawTGZTestCase(test.NoDBTestCase): def test_as_tarfile(self): image = utils.RawTGZImage(None) self.mox.StubOutWithMock(image, '_as_file') self.mox.StubOutWithMock(utils.tarfile, 'open') image._as_file().AndReturn('the_file') utils.tarfile.open(mode='r|gz', fileobj='the_file').AndReturn('tf') self.mox.ReplayAll() result = image._as_tarfile() self.assertEqual('tf', result) def test_as_file(self): self.mox.StubOutWithMock(utils, 'IterableToFileAdapter') glance_image = self.mox.CreateMock(utils.GlanceImage) image = utils.RawTGZImage(glance_image) glance_image.data().AndReturn('iterable-data') utils.IterableToFileAdapter('iterable-data').AndReturn('data-as-file') self.mox.ReplayAll() result = image._as_file() self.assertEqual('data-as-file', result) def test_get_size(self): tar_file = self.mox.CreateMock(tarfile.TarFile) tar_info = self.mox.CreateMock(tarfile.TarInfo) image = utils.RawTGZImage(None) self.mox.StubOutWithMock(image, '_as_tarfile') image._as_tarfile().AndReturn(tar_file) tar_file.next().AndReturn(tar_info) tar_info.size = 124 self.mox.ReplayAll() result = image.get_size() self.assertEqual(124, result) self.assertEqual(image._tar_info, tar_info) self.assertEqual(image._tar_file, tar_file) def test_get_size_called_twice(self): tar_file = self.mox.CreateMock(tarfile.TarFile) tar_info = self.mox.CreateMock(tarfile.TarInfo) image = utils.RawTGZImage(None) self.mox.StubOutWithMock(image, '_as_tarfile') image._as_tarfile().AndReturn(tar_file) tar_file.next().AndReturn(tar_info) tar_info.size = 124 self.mox.ReplayAll() image.get_size() result = image.get_size() self.assertEqual(124, result) self.assertEqual(image._tar_info, tar_info) self.assertEqual(image._tar_file, tar_file) def test_stream_to_without_size_retrieved(self): source_tar = self.mox.CreateMock(tarfile.TarFile) first_tarinfo = self.mox.CreateMock(tarfile.TarInfo) target_file = self.mox.CreateMock(file) source_file = self.mox.CreateMock(file) image = utils.RawTGZImage(None) image._image_service_and_image_id = ('service', 'id') self.mox.StubOutWithMock(image, '_as_tarfile', source_tar) self.mox.StubOutWithMock(utils.shutil, 'copyfileobj') image._as_tarfile().AndReturn(source_tar) source_tar.next().AndReturn(first_tarinfo) source_tar.extractfile(first_tarinfo).AndReturn(source_file) utils.shutil.copyfileobj(source_file, target_file) source_tar.close() self.mox.ReplayAll() image.stream_to(target_file) def test_stream_to_with_size_retrieved(self): source_tar = self.mox.CreateMock(tarfile.TarFile) first_tarinfo = self.mox.CreateMock(tarfile.TarInfo) target_file = self.mox.CreateMock(file) source_file = self.mox.CreateMock(file) first_tarinfo.size = 124 image = utils.RawTGZImage(None) image._image_service_and_image_id = ('service', 'id') self.mox.StubOutWithMock(image, '_as_tarfile', source_tar) self.mox.StubOutWithMock(utils.shutil, 'copyfileobj') image._as_tarfile().AndReturn(source_tar) source_tar.next().AndReturn(first_tarinfo) source_tar.extractfile(first_tarinfo).AndReturn(source_file) utils.shutil.copyfileobj(source_file, target_file) source_tar.close() self.mox.ReplayAll() image.get_size() image.stream_to(target_file) nova-2014.1/nova/tests/virt/xenapi/image/test_bittorrent.py0000664000175400017540000001361112323721477025160 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import pkg_resources import mox from nova import context from nova.openstack.common.gettextutils import _ from nova import test from nova.tests.virt.xenapi import stubs from nova.virt.xenapi import driver as xenapi_conn from nova.virt.xenapi import fake from nova.virt.xenapi.image import bittorrent from nova.virt.xenapi import vm_utils class TestBittorrentStore(stubs.XenAPITestBaseNoDB): def setUp(self): super(TestBittorrentStore, self).setUp() self.store = bittorrent.BittorrentStore() self.mox = mox.Mox() self.flags(torrent_base_url='http://foo', connection_url='test_url', connection_password='test_pass', group='xenserver') self.context = context.RequestContext( 'user', 'project', auth_token='foobar') fake.reset() stubs.stubout_session(self.stubs, fake.SessionBase) def mock_iter_eps(namespace): return [] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_eps) driver = xenapi_conn.XenAPIDriver(False) self.session = driver._session self.stubs.Set( vm_utils, 'get_sr_path', lambda *a, **kw: '/fake/sr/path') self.instance = {'uuid': 'blah', 'system_metadata': {'image_xenapi_use_agent': 'true'}, 'auto_disk_config': True, 'os_type': 'default', 'xenapi_use_agent': 'true'} def test_download_image(self): params = {'image_id': 'fake_image_uuid', 'sr_path': '/fake/sr/path', 'torrent_download_stall_cutoff': 600, 'torrent_listen_port_end': 6891, 'torrent_listen_port_start': 6881, 'torrent_max_last_accessed': 86400, 'torrent_max_seeder_processes_per_host': 1, 'torrent_seed_chance': 1.0, 'torrent_seed_duration': 3600, 'torrent_url': 'http://foo/fake_image_uuid.torrent', 'uuid_stack': ['uuid1']} self.stubs.Set(vm_utils, '_make_uuid_stack', lambda *a, **kw: ['uuid1']) self.mox.StubOutWithMock(self.session, 'call_plugin_serialized') self.session.call_plugin_serialized( 'bittorrent', 'download_vhd', **params) self.mox.ReplayAll() vdis = self.store.download_image( self.context, self.session, self.instance, 'fake_image_uuid') self.mox.VerifyAll() def test_upload_image(self): self.assertRaises(NotImplementedError, self.store.upload_image, self.context, self.session, self.instance, ['fake_vdi_uuid'], 'fake_image_uuid') def bad_fetcher(instance, image_id): raise test.TestingException("just plain bad.") def another_fetcher(instance, image_id): return "http://www.foobar.com/%s" % image_id class MockEntryPoint(object): name = "torrent_url" def load(self): return another_fetcher class LookupTorrentURLTestCase(test.NoDBTestCase): def setUp(self): super(LookupTorrentURLTestCase, self).setUp() self.store = bittorrent.BittorrentStore() self.instance = {'uuid': 'fakeuuid'} self.image_id = 'fakeimageid' def _mock_iter_none(self, namespace): return [] def _mock_iter_single(self, namespace): return [MockEntryPoint()] def test_default_fetch_url_no_base_url_set(self): self.flags(torrent_base_url=None, group='xenserver') self.stubs.Set(pkg_resources, 'iter_entry_points', self._mock_iter_none) exc = self.assertRaises( RuntimeError, self.store._lookup_torrent_url_fn) self.assertEqual(_('Cannot create default bittorrent URL without' ' torrent_base_url set' ' or torrent URL fetcher extension'), str(exc)) def test_default_fetch_url_base_url_is_set(self): self.flags(torrent_base_url='http://foo', group='xenserver') self.stubs.Set(pkg_resources, 'iter_entry_points', self._mock_iter_single) lookup_fn = self.store._lookup_torrent_url_fn() self.assertEqual('http://foo/fakeimageid.torrent', lookup_fn(self.instance, self.image_id)) def test_with_extension(self): self.stubs.Set(pkg_resources, 'iter_entry_points', self._mock_iter_single) lookup_fn = self.store._lookup_torrent_url_fn() self.assertEqual("http://www.foobar.com/%s" % self.image_id, lookup_fn(self.instance, self.image_id)) def test_multiple_extensions_found(self): self.flags(torrent_base_url=None, group='xenserver') def mock_iter_multiple(namespace): return [MockEntryPoint(), MockEntryPoint()] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_multiple) exc = self.assertRaises( RuntimeError, self.store._lookup_torrent_url_fn) self.assertEqual(_('Multiple torrent URL fetcher extensions found.' ' Failing.'), str(exc)) nova-2014.1/nova/tests/virt/xenapi/image/test_vdi_through_dev.py0000664000175400017540000001554212323721477026151 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import eventlet import tarfile from nova.image import glance from nova import test from nova.virt.xenapi.client import session as xenapi_session from nova.virt.xenapi.image import vdi_through_dev @contextlib.contextmanager def fake_context(result=None): yield result class TestDelegatingToCommand(test.NoDBTestCase): def test_upload_image_is_delegated_to_command(self): command = self.mox.CreateMock(vdi_through_dev.UploadToGlanceAsRawTgz) self.mox.StubOutWithMock(vdi_through_dev, 'UploadToGlanceAsRawTgz') vdi_through_dev.UploadToGlanceAsRawTgz( 'ctx', 'session', 'instance', 'vdis', 'image_id').AndReturn( command) command.upload_image().AndReturn('result') self.mox.ReplayAll() store = vdi_through_dev.VdiThroughDevStore() result = store.upload_image( 'ctx', 'session', 'instance', 'vdis', 'image_id') self.assertEqual('result', result) class TestUploadToGlanceAsRawTgz(test.NoDBTestCase): def test_upload_image(self): store = vdi_through_dev.UploadToGlanceAsRawTgz( 'context', 'session', 'instance', ['vdi0', 'vdi1'], 'id') image_service = self.mox.CreateMock(glance.GlanceImageService) self.mox.StubOutWithMock(store, '_perform_upload') self.mox.StubOutWithMock(store, '_get_vdi_ref') self.mox.StubOutWithMock(vdi_through_dev, 'glance') self.mox.StubOutWithMock(vdi_through_dev, 'vm_utils') self.mox.StubOutWithMock(vdi_through_dev, 'utils') store._get_vdi_ref().AndReturn('vdi_ref') vdi_through_dev.vm_utils.vdi_attached_here( 'session', 'vdi_ref', read_only=True).AndReturn( fake_context('dev')) vdi_through_dev.utils.make_dev_path('dev').AndReturn('devpath') vdi_through_dev.utils.temporary_chown('devpath').AndReturn( fake_context()) store._perform_upload('devpath') self.mox.ReplayAll() store.upload_image() def test__perform_upload(self): producer = self.mox.CreateMock(vdi_through_dev.TarGzProducer) consumer = self.mox.CreateMock(glance.UpdateGlanceImage) pool = self.mox.CreateMock(eventlet.GreenPool) store = vdi_through_dev.UploadToGlanceAsRawTgz( 'context', 'session', 'instance', ['vdi0', 'vdi1'], 'id') self.mox.StubOutWithMock(store, '_create_pipe') self.mox.StubOutWithMock(store, '_get_virtual_size') self.mox.StubOutWithMock(producer, 'get_metadata') self.mox.StubOutWithMock(vdi_through_dev, 'TarGzProducer') self.mox.StubOutWithMock(glance, 'UpdateGlanceImage') self.mox.StubOutWithMock(vdi_through_dev, 'eventlet') producer.get_metadata().AndReturn('metadata') store._get_virtual_size().AndReturn('324') store._create_pipe().AndReturn(('readfile', 'writefile')) vdi_through_dev.TarGzProducer( 'devpath', 'writefile', '324', 'disk.raw').AndReturn( producer) glance.UpdateGlanceImage('context', 'id', 'metadata', 'readfile').AndReturn(consumer) vdi_through_dev.eventlet.GreenPool().AndReturn(pool) pool.spawn(producer.start) pool.spawn(consumer.start) pool.waitall() self.mox.ReplayAll() store._perform_upload('devpath') def test__get_vdi_ref(self): session = self.mox.CreateMock(xenapi_session.XenAPISession) store = vdi_through_dev.UploadToGlanceAsRawTgz( 'context', session, 'instance', ['vdi0', 'vdi1'], 'id') session.call_xenapi('VDI.get_by_uuid', 'vdi0').AndReturn('vdi_ref') self.mox.ReplayAll() self.assertEqual('vdi_ref', store._get_vdi_ref()) def test__get_virtual_size(self): session = self.mox.CreateMock(xenapi_session.XenAPISession) store = vdi_through_dev.UploadToGlanceAsRawTgz( 'context', session, 'instance', ['vdi0', 'vdi1'], 'id') self.mox.StubOutWithMock(store, '_get_vdi_ref') store._get_vdi_ref().AndReturn('vdi_ref') session.call_xenapi('VDI.get_virtual_size', 'vdi_ref') self.mox.ReplayAll() result = store._get_virtual_size() def test__create_pipe(self): store = vdi_through_dev.UploadToGlanceAsRawTgz( 'context', 'session', 'instance', ['vdi0', 'vdi1'], 'id') self.mox.StubOutWithMock(vdi_through_dev, 'os') self.mox.StubOutWithMock(vdi_through_dev, 'greenio') vdi_through_dev.os.pipe().AndReturn(('rpipe', 'wpipe')) vdi_through_dev.greenio.GreenPipe('rpipe', 'rb', 0).AndReturn('rfile') vdi_through_dev.greenio.GreenPipe('wpipe', 'wb', 0).AndReturn('wfile') self.mox.ReplayAll() result = store._create_pipe() self.assertEqual(('rfile', 'wfile'), result) class TestTarGzProducer(test.NoDBTestCase): def test_constructor(self): producer = vdi_through_dev.TarGzProducer('devpath', 'writefile', '100', 'fname') self.assertEqual('devpath', producer.fpath) self.assertEqual('writefile', producer.output) self.assertEqual('100', producer.size) self.assertEqual('writefile', producer.output) def test_start(self): outf = self.mox.CreateMock(file) producer = vdi_through_dev.TarGzProducer('fpath', outf, '100', 'fname') tfile = self.mox.CreateMock(tarfile.TarFile) tinfo = self.mox.CreateMock(tarfile.TarInfo) inf = self.mox.CreateMock(file) self.mox.StubOutWithMock(vdi_through_dev, 'tarfile') self.mox.StubOutWithMock(producer, '_open_file') vdi_through_dev.tarfile.TarInfo(name='fname').AndReturn(tinfo) vdi_through_dev.tarfile.open(fileobj=outf, mode='w|gz').AndReturn( fake_context(tfile)) producer._open_file('fpath', 'rb').AndReturn(fake_context(inf)) tfile.addfile(tinfo, fileobj=inf) outf.close() self.mox.ReplayAll() producer.start() self.assertEqual(100, tinfo.size) def test_get_metadata(self): producer = vdi_through_dev.TarGzProducer('devpath', 'writefile', '100', 'fname') self.assertEqual({ 'disk_format': 'raw', 'container_format': 'tgz'}, producer.get_metadata()) nova-2014.1/nova/tests/virt/xenapi/image/test_glance.py0000664000175400017540000001662212323721510024206 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import time from nova import context from nova import exception from nova.tests.virt.xenapi import stubs from nova.virt.xenapi import driver as xenapi_conn from nova.virt.xenapi import fake from nova.virt.xenapi.image import glance from nova.virt.xenapi import vm_utils class TestGlanceStore(stubs.XenAPITestBaseNoDB): def setUp(self): super(TestGlanceStore, self).setUp() self.store = glance.GlanceStore() self.flags(glance_host='1.1.1.1', glance_port=123, glance_api_insecure=False) self.flags(connection_url='test_url', connection_password='test_pass', group='xenserver') self.context = context.RequestContext( 'user', 'project', auth_token='foobar') fake.reset() stubs.stubout_session(self.stubs, fake.SessionBase) driver = xenapi_conn.XenAPIDriver(False) self.session = driver._session self.stubs.Set( vm_utils, 'get_sr_path', lambda *a, **kw: '/fake/sr/path') self.instance = {'uuid': 'blah', 'system_metadata': [], 'auto_disk_config': True, 'os_type': 'default', 'xenapi_use_agent': 'true'} def _get_params(self): return {'image_id': 'fake_image_uuid', 'glance_host': '1.1.1.1', 'glance_port': 123, 'glance_use_ssl': False, 'sr_path': '/fake/sr/path', 'extra_headers': {'X-Service-Catalog': '[]', 'X-Auth-Token': 'foobar', 'X-Roles': '', 'X-Tenant-Id': 'project', 'X-User-Id': 'user', 'X-Identity-Status': 'Confirmed'}} def _get_download_params(self): params = self._get_params() params['uuid_stack'] = ['uuid1'] return params def test_download_image(self): params = self._get_download_params() self.stubs.Set(vm_utils, '_make_uuid_stack', lambda *a, **kw: ['uuid1']) self.mox.StubOutWithMock(self.session, 'call_plugin_serialized') self.session.call_plugin_serialized('glance', 'download_vhd', **params) self.mox.ReplayAll() vdis = self.store.download_image( self.context, self.session, self.instance, 'fake_image_uuid') self.mox.VerifyAll() def _get_upload_params(self, auto_disk_config=True, expected_os_type='default'): params = self._get_params() params['vdi_uuids'] = ['fake_vdi_uuid'] params['properties'] = {'auto_disk_config': auto_disk_config, 'os_type': expected_os_type} return params def _test_upload_image(self, auto_disk_config, expected_os_type='default'): params = self._get_upload_params(auto_disk_config, expected_os_type) self.mox.StubOutWithMock(self.session, 'call_plugin_serialized') self.session.call_plugin_serialized('glance', 'upload_vhd', **params) self.mox.ReplayAll() self.store.upload_image(self.context, self.session, self.instance, ['fake_vdi_uuid'], 'fake_image_uuid') self.mox.VerifyAll() def test_upload_image(self): self._test_upload_image(True) def test_upload_image_None_os_type(self): self.instance['os_type'] = None self._test_upload_image(True, 'linux') def test_upload_image_no_os_type(self): del self.instance['os_type'] self._test_upload_image(True, 'linux') def test_upload_image_auto_config_disk_disabled(self): sys_meta = [{"key": "image_auto_disk_config", "value": "Disabled"}] self.instance["system_metadata"] = sys_meta self._test_upload_image("disabled") def test_upload_image_raises_exception(self): params = self._get_upload_params() self.mox.StubOutWithMock(self.session, 'call_plugin_serialized') self.session.call_plugin_serialized('glance', 'upload_vhd', **params).AndRaise(RuntimeError) self.mox.ReplayAll() self.assertRaises(RuntimeError, self.store.upload_image, self.context, self.session, self.instance, ['fake_vdi_uuid'], 'fake_image_uuid') self.mox.VerifyAll() def test_upload_image_retries_then_raises_exception(self): self.flags(glance_num_retries=2) params = self._get_upload_params() self.mox.StubOutWithMock(self.session, 'call_plugin_serialized') self.mox.StubOutWithMock(time, 'sleep') error_details = ["", "", "RetryableError", ""] error = self.session.XenAPI.Failure(details=error_details) self.session.call_plugin_serialized('glance', 'upload_vhd', **params).AndRaise(error) time.sleep(0.5) self.session.call_plugin_serialized('glance', 'upload_vhd', **params).AndRaise(error) time.sleep(1) self.session.call_plugin_serialized('glance', 'upload_vhd', **params).AndRaise(error) self.mox.ReplayAll() self.assertRaises(exception.CouldNotUploadImage, self.store.upload_image, self.context, self.session, self.instance, ['fake_vdi_uuid'], 'fake_image_uuid') self.mox.VerifyAll() def test_upload_image_retries_on_signal_exception(self): self.flags(glance_num_retries=2) params = self._get_upload_params() self.mox.StubOutWithMock(self.session, 'call_plugin_serialized') self.mox.StubOutWithMock(time, 'sleep') error_details = ["", "task signaled", "", ""] error = self.session.XenAPI.Failure(details=error_details) self.session.call_plugin_serialized('glance', 'upload_vhd', **params).AndRaise(error) time.sleep(0.5) # Note(johngarbutt) XenServer 6.1 and later has this error error_details = ["", "signal: SIGTERM", "", ""] error = self.session.XenAPI.Failure(details=error_details) self.session.call_plugin_serialized('glance', 'upload_vhd', **params).AndRaise(error) time.sleep(1) self.session.call_plugin_serialized('glance', 'upload_vhd', **params) self.mox.ReplayAll() self.store.upload_image(self.context, self.session, self.instance, ['fake_vdi_uuid'], 'fake_image_uuid') self.mox.VerifyAll() nova-2014.1/nova/tests/virt/xenapi/image/__init__.py0000664000175400017540000000000012323721477023450 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/xenapi/test_agent.py0000664000175400017540000003460012323721477023001 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 import uuid import mock from nova import exception from nova import test from nova.virt.xenapi import agent from nova.virt.xenapi import fake as xenapi_fake def _get_fake_instance(**kwargs): system_metadata = [] for k, v in kwargs.items(): system_metadata.append({ "key": k, "value": v }) return { "system_metadata": system_metadata, "uuid": "uuid", "key_data": "ssh-rsa asdf", "os_type": "asdf", } class AgentTestCaseBase(test.NoDBTestCase): def _create_agent(self, instance): self.session = "session" self.virtapi = "virtapi" self.vm_ref = "vm_ref" return agent.XenAPIBasedAgent(self.session, self.virtapi, instance, self.vm_ref) class AgentImageFlagsTestCase(AgentTestCaseBase): def test_agent_is_present(self): self.flags(use_agent_default=False, group='xenserver') instance = {"system_metadata": [{"key": "image_xenapi_use_agent", "value": "true"}]} self.assertTrue(agent.should_use_agent(instance)) def test_agent_is_disabled(self): self.flags(use_agent_default=True, group='xenserver') instance = {"system_metadata": [{"key": "image_xenapi_use_agent", "value": "false"}]} self.assertFalse(agent.should_use_agent(instance)) def test_agent_uses_deafault_when_prop_invalid(self): self.flags(use_agent_default=True, group='xenserver') instance = {"system_metadata": [{"key": "image_xenapi_use_agent", "value": "bob"}], "uuid": "uuid"} self.assertTrue(agent.should_use_agent(instance)) def test_agent_default_not_present(self): self.flags(use_agent_default=False, group='xenserver') instance = {"system_metadata": []} self.assertFalse(agent.should_use_agent(instance)) def test_agent_default_present(self): self.flags(use_agent_default=True, group='xenserver') instance = {"system_metadata": []} self.assertTrue(agent.should_use_agent(instance)) class SysMetaKeyTestBase(): key = None def _create_agent_with_value(self, value): kwargs = {self.key: value} instance = _get_fake_instance(**kwargs) return self._create_agent(instance) def test_get_sys_meta_key_true(self): agent = self._create_agent_with_value("true") self.assertTrue(agent._get_sys_meta_key(self.key)) def test_get_sys_meta_key_false(self): agent = self._create_agent_with_value("False") self.assertFalse(agent._get_sys_meta_key(self.key)) def test_get_sys_meta_key_invalid_is_false(self): agent = self._create_agent_with_value("invalid") self.assertFalse(agent._get_sys_meta_key(self.key)) def test_get_sys_meta_key_missing_is_false(self): instance = _get_fake_instance() agent = self._create_agent(instance) self.assertFalse(agent._get_sys_meta_key(self.key)) class SkipSshFlagTestCase(SysMetaKeyTestBase, AgentTestCaseBase): key = "image_xenapi_skip_agent_inject_ssh" def test_skip_ssh_key_inject(self): agent = self._create_agent_with_value("True") self.assertTrue(agent._skip_ssh_key_inject()) class SkipFileInjectAtBootFlagTestCase(SysMetaKeyTestBase, AgentTestCaseBase): key = "image_xenapi_skip_agent_inject_files_at_boot" def test_skip_inject_files_at_boot(self): agent = self._create_agent_with_value("True") self.assertTrue(agent._skip_inject_files_at_boot()) class InjectSshTestCase(AgentTestCaseBase): def test_inject_ssh_key_succeeds(self): instance = _get_fake_instance() agent = self._create_agent(instance) self.mox.StubOutWithMock(agent, "inject_file") agent.inject_file("/root/.ssh/authorized_keys", "\n# The following ssh key was injected by Nova" "\nssh-rsa asdf\n") self.mox.ReplayAll() agent.inject_ssh_key() def _test_inject_ssh_key_skipped(self, instance): agent = self._create_agent(instance) # make sure its not called self.mox.StubOutWithMock(agent, "inject_file") self.mox.ReplayAll() agent.inject_ssh_key() def test_inject_ssh_key_skipped_no_key_data(self): instance = _get_fake_instance() instance["key_data"] = None self._test_inject_ssh_key_skipped(instance) def test_inject_ssh_key_skipped_windows(self): instance = _get_fake_instance() instance["os_type"] = "windows" self._test_inject_ssh_key_skipped(instance) def test_inject_ssh_key_skipped_cloud_init_present(self): instance = _get_fake_instance( image_xenapi_skip_agent_inject_ssh="True") self._test_inject_ssh_key_skipped(instance) class FileInjectionTestCase(AgentTestCaseBase): def test_inject_file(self): instance = _get_fake_instance() agent = self._create_agent(instance) self.mox.StubOutWithMock(agent, "_call_agent") b64_path = base64.b64encode('path') b64_contents = base64.b64encode('contents') agent._call_agent('inject_file', {'b64_contents': b64_contents, 'b64_path': b64_path}) self.mox.ReplayAll() agent.inject_file("path", "contents") def test_inject_files(self): instance = _get_fake_instance() agent = self._create_agent(instance) self.mox.StubOutWithMock(agent, "inject_file") files = [("path1", "content1"), ("path2", "content2")] agent.inject_file(*files[0]) agent.inject_file(*files[1]) self.mox.ReplayAll() agent.inject_files(files) def test_inject_files_skipped_when_cloud_init_installed(self): instance = _get_fake_instance( image_xenapi_skip_agent_inject_files_at_boot="True") agent = self._create_agent(instance) self.mox.StubOutWithMock(agent, "inject_file") files = [("path1", "content1"), ("path2", "content2")] self.mox.ReplayAll() agent.inject_files(files) class SetAdminPasswordTestCase(AgentTestCaseBase): @mock.patch.object(agent.XenAPIBasedAgent, '_call_agent') @mock.patch("nova.virt.xenapi.agent.SimpleDH") def test_exchange_key_with_agent(self, mock_simple_dh, mock_call_agent): agent = self._create_agent(None) instance_mock = mock_simple_dh() instance_mock.get_public.return_value = 4321 mock_call_agent.return_value = "1234" result = agent._exchange_key_with_agent() mock_call_agent.assert_called_once_with('key_init', {"pub": "4321"}, success_codes=['D0'], ignore_errors=False) result.compute_shared.assert_called_once_with(1234) @mock.patch.object(agent.XenAPIBasedAgent, '_call_agent') @mock.patch.object(agent.XenAPIBasedAgent, '_save_instance_password_if_sshkey_present') @mock.patch.object(agent.XenAPIBasedAgent, '_exchange_key_with_agent') def test_set_admin_password_works(self, mock_exchange, mock_save, mock_call_agent): mock_dh = mock.Mock(spec_set=agent.SimpleDH) mock_dh.encrypt.return_value = "enc_pass" mock_exchange.return_value = mock_dh agent_inst = self._create_agent(None) agent_inst.set_admin_password("new_pass") mock_dh.encrypt.assert_called_once_with("new_pass\n") mock_call_agent.assert_called_once_with('password', {'enc_pass': 'enc_pass'}) mock_save.assert_called_once_with("new_pass") @mock.patch.object(agent.XenAPIBasedAgent, '_add_instance_fault') @mock.patch.object(agent.XenAPIBasedAgent, '_exchange_key_with_agent') def test_set_admin_password_silently_fails(self, mock_exchange, mock_add_fault): error = exception.AgentTimeout(method="fake") mock_exchange.side_effect = error agent_inst = self._create_agent(None) agent_inst.set_admin_password("new_pass") mock_add_fault.assert_called_once_with(error, mock.ANY) class UpgradeRequiredTestCase(test.NoDBTestCase): def test_less_than(self): self.assertTrue(agent.is_upgrade_required('1.2.3.4', '1.2.3.5')) def test_greater_than(self): self.assertFalse(agent.is_upgrade_required('1.2.3.5', '1.2.3.4')) def test_equal(self): self.assertFalse(agent.is_upgrade_required('1.2.3.4', '1.2.3.4')) def test_non_lexical(self): self.assertFalse(agent.is_upgrade_required('1.2.3.10', '1.2.3.4')) def test_length(self): self.assertTrue(agent.is_upgrade_required('1.2.3', '1.2.3.4')) @mock.patch.object(uuid, "uuid4") class CallAgentTestCase(AgentTestCaseBase): def test_call_agent_success(self, mock_uuid): session = mock.Mock() instance = {"uuid": "fake"} addl_args = {"foo": "bar"} session.VM.get_domid.return_value = '42' mock_uuid.return_value = 1 session.call_plugin.return_value = {'returncode': '4', 'message': "asdf\\r\\n"} self.assertEqual("asdf", agent._call_agent(session, instance, "vm_ref", "method", addl_args, timeout=300, success_codes=['0', '4'])) expected_args = { 'id': '1', 'dom_id': '42', 'timeout': '300', } expected_args.update(addl_args) session.VM.get_domid.assert_called_once_with("vm_ref") session.call_plugin.assert_called_once_with("agent", "method", expected_args) def _call_agent_setup(self, session, mock_uuid, returncode='0', success_codes=None, exception=None): session.XenAPI.Failure = xenapi_fake.Failure instance = {"uuid": "fake"} session.VM.get_domid.return_value = 42 mock_uuid.return_value = 1 if exception: session.call_plugin.side_effect = exception else: session.call_plugin.return_value = {'returncode': returncode, 'message': "asdf\\r\\n"} return agent._call_agent(session, instance, "vm_ref", "method", success_codes=success_codes) def _assert_agent_called(self, session, mock_uuid): expected_args = { 'id': '1', 'dom_id': '42', 'timeout': '30', } session.call_plugin.assert_called_once_with("agent", "method", expected_args) session.VM.get_domid.assert_called_once_with("vm_ref") def test_call_agent_works_with_defaults(self, mock_uuid): session = mock.Mock() self._call_agent_setup(session, mock_uuid) self._assert_agent_called(session, mock_uuid) def test_call_agent_fails_with_timeout(self, mock_uuid): session = mock.Mock() self.assertRaises(exception.AgentTimeout, self._call_agent_setup, session, mock_uuid, exception=xenapi_fake.Failure(["TIMEOUT:fake"])) self._assert_agent_called(session, mock_uuid) def test_call_agent_fails_with_not_implemented(self, mock_uuid): session = mock.Mock() self.assertRaises(exception.AgentNotImplemented, self._call_agent_setup, session, mock_uuid, exception=xenapi_fake.Failure(["NOT IMPLEMENTED:"])) self._assert_agent_called(session, mock_uuid) def test_call_agent_fails_with_other_error(self, mock_uuid): session = mock.Mock() self.assertRaises(exception.AgentError, self._call_agent_setup, session, mock_uuid, exception=xenapi_fake.Failure(["asdf"])) self._assert_agent_called(session, mock_uuid) def test_call_agent_fails_with_returned_error(self, mock_uuid): session = mock.Mock() self.assertRaises(exception.AgentError, self._call_agent_setup, session, mock_uuid, returncode='42') self._assert_agent_called(session, mock_uuid) class XenAPIBasedAgent(AgentTestCaseBase): @mock.patch.object(agent.XenAPIBasedAgent, "_add_instance_fault") @mock.patch.object(agent, "_call_agent") def test_call_agent_swallows_error(self, mock_call_agent, mock_add_instance_fault): fake_error = exception.AgentError(method="bob") mock_call_agent.side_effect = fake_error instance = _get_fake_instance() agent = self._create_agent(instance) agent._call_agent("bob") mock_call_agent.assert_called_once_with(agent.session, agent.instance, agent.vm_ref, "bob", None, None, None) mock_add_instance_fault.assert_called_once_with(fake_error, mock.ANY) @mock.patch.object(agent.XenAPIBasedAgent, "_add_instance_fault") @mock.patch.object(agent, "_call_agent") def test_call_agent_throws_error(self, mock_call_agent, mock_add_instance_fault): fake_error = exception.AgentError(method="bob") mock_call_agent.side_effect = fake_error instance = _get_fake_instance() agent = self._create_agent(instance) self.assertRaises(exception.AgentError, agent._call_agent, "bob", ignore_errors=False) mock_call_agent.assert_called_once_with(agent.session, agent.instance, agent.vm_ref, "bob", None, None, None) self.assertFalse(mock_add_instance_fault.called) nova-2014.1/nova/tests/virt/xenapi/__init__.py0000664000175400017540000000000012323721477022366 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/vmwareapi/0000775000175400017540000000000012323722546020774 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/vmwareapi/test_volumeops.py0000664000175400017540000000772412323721477024452 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import mock from nova import test from nova.tests.virt.vmwareapi import stubs from nova.virt.vmwareapi import driver from nova.virt.vmwareapi import fake as vmwareapi_fake from nova.virt.vmwareapi import volumeops class VMwareVolumeOpsTestCase(test.NoDBTestCase): def setUp(self): super(VMwareVolumeOpsTestCase, self).setUp() vmwareapi_fake.reset() stubs.set_stubs(self.stubs) self._session = driver.VMwareAPISession() self._volumeops = volumeops.VMwareVolumeOps(self._session) self.instance = {'name': 'fake_name', 'uuid': 'fake_uuid'} def _test_detach_disk_from_vm(self, destroy_disk=False): def fake_call_method(module, method, *args, **kwargs): vmdk_detach_config_spec = kwargs.get('spec') virtual_device_config = vmdk_detach_config_spec.deviceChange[0] self.assertEqual('remove', virtual_device_config.operation) self.assertEqual('ns0:VirtualDeviceConfigSpec', virtual_device_config.obj_name) if destroy_disk: self.assertEqual('destroy', virtual_device_config.fileOperation) else: self.assertFalse(hasattr(virtual_device_config, 'fileOperation')) return 'fake_configure_task' with contextlib.nested( mock.patch.object(self._session, '_wait_for_task'), mock.patch.object(self._session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): fake_device = vmwareapi_fake.DataObject() fake_device.backing = vmwareapi_fake.DataObject() fake_device.backing.fileName = 'fake_path' fake_device.key = 'fake_key' self._volumeops.detach_disk_from_vm('fake_vm_ref', self.instance, fake_device, destroy_disk) _wait_for_task.assert_has_calls([ mock.call('fake_configure_task')]) def test_detach_with_destroy_disk_from_vm(self): self._test_detach_disk_from_vm(destroy_disk=True) def test_detach_without_destroy_disk_from_vm(self): self._test_detach_disk_from_vm(destroy_disk=False) def _fake_call_get_dynamic_property(self, uuid, result): def fake_call_method(vim, method, vm_ref, type, prop): expected_prop = 'config.extraConfig["volume-%s"]' % uuid self.assertEqual('VirtualMachine', type) self.assertEqual(expected_prop, prop) return result return fake_call_method def test_get_volume_uuid(self): vm_ref = mock.Mock() uuid = '1234' opt_val = vmwareapi_fake.OptionValue('volume-%s' % uuid, 'volume-val') fake_call = self._fake_call_get_dynamic_property(uuid, opt_val) with mock.patch.object(self._session, "_call_method", fake_call): val = self._volumeops._get_volume_uuid(vm_ref, uuid) self.assertEqual('volume-val', val) def test_get_volume_uuid_not_found(self): vm_ref = mock.Mock() uuid = '1234' fake_call = self._fake_call_get_dynamic_property(uuid, None) with mock.patch.object(self._session, "_call_method", fake_call): val = self._volumeops._get_volume_uuid(vm_ref, uuid) self.assertIsNone(val) nova-2014.1/nova/tests/virt/vmwareapi/test_configdrive.py0000664000175400017540000001506412323721477024714 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy import fixtures import mox from nova import context from nova import test import nova.tests.image.fake from nova.tests import utils from nova.tests.virt.vmwareapi import stubs from nova.virt import fake from nova.virt.vmwareapi import driver from nova.virt.vmwareapi import fake as vmwareapi_fake from nova.virt.vmwareapi import vm_util from nova.virt.vmwareapi import vmops from nova.virt.vmwareapi import vmware_images class ConfigDriveTestCase(test.NoDBTestCase): def setUp(self): super(ConfigDriveTestCase, self).setUp() vm_util.vm_refs_cache_reset() self.context = context.RequestContext('fake', 'fake', is_admin=False) cluster_name = 'test_cluster' self.flags(cluster_name=[cluster_name], host_ip='test_url', host_username='test_username', host_password='test_pass', use_linked_clone=False, group='vmware') self.flags(vnc_enabled=False) vmwareapi_fake.reset(vc=True) stubs.set_stubs(self.stubs) nova.tests.image.fake.stub_out_image_service(self.stubs) self.conn = driver.VMwareVCDriver(fake.FakeVirtAPI) self.network_info = utils.get_test_network_info() self.image = { 'id': 'c1c8ce3d-c2e0-4247-890c-ccf5cc1c004c', 'disk_format': 'vmdk', 'size': 512, } self.node_name = '%s(%s)' % (self.conn.dict_mors.keys()[0], cluster_name) self.test_instance = {'node': 'test_url', 'vm_state': 'building', 'project_id': 'fake', 'user_id': 'fake', 'name': '1', 'kernel_id': '1', 'ramdisk_id': '1', 'mac_addresses': [ {'address': 'de:ad:be:ef:be:ef'} ], 'memory_mb': 8192, 'flavor': 'm1.large', 'vcpus': 4, 'root_gb': 80, 'image_ref': '1', 'host': 'fake_host', 'task_state': 'scheduling', 'reservation_id': 'r-3t8muvr0', 'id': 1, 'uuid': 'fake-uuid', 'node': self.node_name, 'metadata': []} class FakeInstanceMetadata(object): def __init__(self, instance, content=None, extra_md=None): pass def metadata_for_config_drive(self): return [] self.useFixture(fixtures.MonkeyPatch( 'nova.api.metadata.base.InstanceMetadata', FakeInstanceMetadata)) def fake_make_drive(_self, _path): pass # We can't actually make a config drive v2 because ensure_tree has # been faked out self.stubs.Set(nova.virt.configdrive.ConfigDriveBuilder, 'make_drive', fake_make_drive) def fake_upload_iso_to_datastore(iso_path, instance, **kwargs): pass self.stubs.Set(vmware_images, 'upload_iso_to_datastore', fake_upload_iso_to_datastore) def tearDown(self): super(ConfigDriveTestCase, self).tearDown() vmwareapi_fake.cleanup() nova.tests.image.fake.FakeImageService_reset() def _spawn_vm(self, injected_files=[], admin_password=None, block_device_info=None): self.conn.spawn(self.context, self.instance, self.image, injected_files=injected_files, admin_password=admin_password, network_info=self.network_info, block_device_info=block_device_info) def test_create_vm_with_config_drive_verify_method_invocation(self): self.instance = copy.deepcopy(self.test_instance) self.instance['config_drive'] = True self.mox.StubOutWithMock(vmops.VMwareVMOps, '_create_config_drive') self.mox.StubOutWithMock(vmops.VMwareVMOps, '_attach_cdrom_to_vm') self.conn._vmops._create_config_drive(self.instance, mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.conn._vmops._attach_cdrom_to_vm(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() # if spawn does not call the _create_config_drive or # _attach_cdrom_to_vm call with the correct set of parameters # then mox's VerifyAll will throw a Expected methods never called # Exception self._spawn_vm() def test_create_vm_without_config_drive(self): self.instance = copy.deepcopy(self.test_instance) self.instance['config_drive'] = False self.mox.StubOutWithMock(vmops.VMwareVMOps, '_create_config_drive') self.mox.StubOutWithMock(vmops.VMwareVMOps, '_attach_cdrom_to_vm') self.mox.ReplayAll() # if spawn ends up calling _create_config_drive or # _attach_cdrom_to_vm then mox will log a Unexpected method call # exception self._spawn_vm() def test_create_vm_with_config_drive(self): self.instance = copy.deepcopy(self.test_instance) self.instance['config_drive'] = True self._spawn_vm() nova-2014.1/nova/tests/virt/vmwareapi/test_imagecache.py0000664000175400017540000002464212323721477024465 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 VMware, 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. import datetime import contextlib import mock from oslo.config import cfg from nova.openstack.common import timeutils from nova import test from nova.virt.vmwareapi import ds_util from nova.virt.vmwareapi import fake from nova.virt.vmwareapi import imagecache from nova.virt.vmwareapi import vim_util from nova.virt.vmwareapi import vmops CONF = cfg.CONF class ImageCacheManagerTestCase(test.NoDBTestCase): def setUp(self): super(ImageCacheManagerTestCase, self).setUp() self._session = mock.Mock(name='session') self._imagecache = imagecache.ImageCacheManager(self._session, 'fake-base-folder') self._time = datetime.datetime(2012, 11, 22, 12, 00, 00) self._file_name = 'ts-2012-11-22-12-00-00' fake.reset() def tearDown(self): super(ImageCacheManagerTestCase, self).tearDown() fake.reset() def test_timestamp_cleanup(self): def fake_get_timestamp(ds_browser, ds_path): self.assertEqual('fake-ds-browser', ds_browser) self.assertEqual('fake-ds-path', ds_path) if not self.exists: return ts = '%s%s' % (imagecache.TIMESTAMP_PREFIX, timeutils.strtime(at=self._time, fmt=imagecache.TIMESTAMP_FORMAT)) return ts with contextlib.nested( mock.patch.object(self._imagecache, '_get_timestamp', fake_get_timestamp), mock.patch.object(ds_util, 'file_delete') ) as (_get_timestamp, _file_delete): self.exists = False self._imagecache.timestamp_cleanup( 'fake-dc-ref', 'fake-ds-browser', 'fake-ds-ref', 'fake-ds-name', 'fake-ds-path') self.assertEqual(0, _file_delete.call_count) self.exists = True self._imagecache.timestamp_cleanup( 'fake-dc-ref', 'fake-ds-browser', 'fake-ds-ref', 'fake-ds-name', 'fake-ds-path') _file_delete.assert_called_once_with(self._session, 'fake-ds-path/ts-2012-11-22-12-00-00', 'fake-dc-ref') def test_get_timestamp(self): def fake_get_sub_folders(session, ds_browser, ds_path): self.assertEqual('fake-ds-browser', ds_browser) self.assertEqual('fake-ds-path', ds_path) if self.exists: files = set() files.add(self._file_name) return files with contextlib.nested( mock.patch.object(ds_util, 'get_sub_folders', fake_get_sub_folders) ) as (_get_sub_folders): self.exists = True ts = self._imagecache._get_timestamp('fake-ds-browser', 'fake-ds-path') self.assertEqual(self._file_name, ts) self.exists = False ts = self._imagecache._get_timestamp('fake-ds-browser', 'fake-ds-path') self.assertIsNone(ts) def test_get_timestamp_filename(self): timeutils.set_time_override(override_time=self._time) fn = self._imagecache._get_timestamp_filename() self.assertEqual(self._file_name, fn) def test_get_datetime_from_filename(self): t = self._imagecache._get_datetime_from_filename(self._file_name) self.assertEqual(self._time, t) def test_get_ds_browser(self): def fake_get_dynamic_property(vim, mobj, type, property_name): self.assertEqual('Datastore', type) self.assertEqual('browser', property_name) self.fake_called += 1 return 'fake-ds-browser' with contextlib.nested( mock.patch.object(vim_util, 'get_dynamic_property', fake_get_dynamic_property) ) as _get_dynamic: self.fake_called = 0 self.assertEqual({}, self._imagecache._ds_browser) browser = self._imagecache._get_ds_browser('fake-ds-ref') self.assertEqual('fake-ds-browser', browser) self.assertEqual({'fake-ds-ref': 'fake-ds-browser'}, self._imagecache._ds_browser) self.assertEqual(1, self.fake_called) browser = self._imagecache._get_ds_browser('fake-ds-ref') self.assertEqual('fake-ds-browser', browser) self.assertEqual(1, self.fake_called) def test_list_base_images(self): def fake_get_dynamic_property(vim, mobj, type, property_name): return 'fake-ds-browser' def fake_get_sub_folders(session, ds_browser, ds_path): files = set() files.add('image-ref-uuid') return files with contextlib.nested( mock.patch.object(vim_util, 'get_dynamic_property', fake_get_dynamic_property), mock.patch.object(ds_util, 'get_sub_folders', fake_get_sub_folders) ) as (_get_dynamic, _get_sub_folders): datastore = {'name': 'ds', 'ref': 'fake-ds-ref'} ds_path = ds_util.build_datastore_path(datastore['name'], 'base_folder') images = self._imagecache._list_datastore_images( ds_path, datastore) originals = set() originals.add('image-ref-uuid') self.assertEqual({'originals': originals, 'unexplained_images': []}, images) def test_age_cached_images(self): def fake_get_ds_browser(ds_ref): return 'fake-ds-browser' def fake_get_timestamp(ds_browser, path): self._get_timestamp_called += 1 if path == 'fake-ds-path/fake-image-1': # No time stamp exists return if path == 'fake-ds-path/fake-image-2': # Timestamp that will be valid => no deletion return 'ts-2012-11-22-10-00-00' if path == 'fake-ds-path/fake-image-3': # Timestamp that will be invalid => deletion return 'ts-2012-11-20-12-00-00' self.fail() def fake_mkdir(session, ts_path, dc_ref): self.assertEqual( 'fake-ds-path/fake-image-1/ts-2012-11-22-12-00-00', ts_path) def fake_file_delete(session, path, dc_ref): self.assertEqual('fake-ds-path/fake-image-3', path) def fake_timestamp_cleanup(dc_ref, ds_browser, ds_ref, ds_name, path): self.assertEqual('fake-ds-path/fake-image-4', path) with contextlib.nested( mock.patch.object(self._imagecache, '_get_ds_browser', fake_get_ds_browser), mock.patch.object(self._imagecache, '_get_timestamp', fake_get_timestamp), mock.patch.object(ds_util, 'mkdir', fake_mkdir), mock.patch.object(ds_util, 'file_delete', fake_file_delete), mock.patch.object(self._imagecache, 'timestamp_cleanup', fake_timestamp_cleanup), ) as (_get_ds_browser, _get_timestamp, _mkdir, _file_delete, _timestamp_cleanup): timeutils.set_time_override(override_time=self._time) datastore = {'name': 'ds', 'ref': 'fake-ds-ref'} dc_info = vmops.DcInfo(ref='dc_ref', name='name', vmFolder='vmFolder') self._get_timestamp_called = 0 self._imagecache.originals = set(['fake-image-1', 'fake-image-2', 'fake-image-3', 'fake-image-4']) self._imagecache.used_images = set(['fake-image-4']) self._imagecache._age_cached_images('fake-context', datastore, dc_info, 'fake-ds-path') self.assertEqual(3, self._get_timestamp_called) def test_update(self): def fake_list_datastore_images(ds_path, datastore): return {'unexplained_images': [], 'originals': self.images} def fake_age_cached_images(context, datastore, dc_info, ds_path): self.assertEqual('[ds] fake-base-folder', ds_path) self.assertEqual(self.images, self._imagecache.used_images) self.assertEqual(self.images, self._imagecache.originals) with contextlib.nested( mock.patch.object(self._imagecache, '_list_datastore_images', fake_list_datastore_images), mock.patch.object(self._imagecache, '_age_cached_images', fake_age_cached_images) ) as (_list_base, _age_and_verify): instances = [{'image_ref': '1', 'host': CONF.host, 'name': 'inst-1', 'uuid': '123', 'vm_state': '', 'task_state': ''}, {'image_ref': '2', 'host': CONF.host, 'name': 'inst-2', 'uuid': '456', 'vm_state': '', 'task_state': ''}] self.images = set(['1', '2']) datastore = {'name': 'ds', 'ref': 'fake-ds-ref'} dc_info = vmops.DcInfo(ref='dc_ref', name='name', vmFolder='vmFolder') datastores_info = [(datastore, dc_info)] self._imagecache.update('context', instances, datastores_info) nova-2014.1/nova/tests/virt/vmwareapi/test_read_write_util.py0000664000175400017540000000307312323721477025574 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import httplib from oslo.config import cfg from nova import test from nova.virt.vmwareapi import read_write_util CONF = cfg.CONF class ReadWriteUtilTestCase(test.NoDBTestCase): def setUp(self): super(ReadWriteUtilTestCase, self).setUp() def test_ipv6_host(self): ipv6_host = 'fd8c:215d:178e:c51e:200:c9ff:fed1:584c' self.mox.StubOutWithMock(httplib.HTTPConnection, 'endheaders') httplib.HTTPConnection.endheaders() self.mox.ReplayAll() file = read_write_util.VMwareHTTPWriteFile(ipv6_host, 'fake_dc', 'fake_ds', dict(), '/tmp/fake.txt', 0) self.assertEqual(ipv6_host, file.conn.host) self.assertEqual(443, file.conn.port) nova-2014.1/nova/tests/virt/vmwareapi/test_vm_util_datastore_selection.py0000664000175400017540000001541412323721477030206 0ustar jenkinsjenkins00000000000000# # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import collections import re from nova.openstack.common import units from nova import test from nova.virt.vmwareapi import vm_util ResultSet = collections.namedtuple('ResultSet', ['objects']) ResultSetToken = collections.namedtuple('ResultSet', ['objects', 'token']) ObjectContent = collections.namedtuple('ObjectContent', ['obj', 'propSet']) DynamicProperty = collections.namedtuple('Property', ['name', 'val']) MoRef = collections.namedtuple('ManagedObjectReference', ['value']) class VMwareVMUtilDatastoreSelectionTestCase(test.NoDBTestCase): def setUp(self): super(VMwareVMUtilDatastoreSelectionTestCase, self).setUp() self.data = [ ['VMFS', 'os-some-name', True, 987654321, 12346789], ['NFS', 'another-name', True, 9876543210, 123467890], ['BAD', 'some-name-bad', True, 98765432100, 1234678900], ['VMFS', 'some-name-good', False, 987654321, 12346789], ] def build_result_set(self, mock_data, name_list=None): # datastores will have a moref_id of ds-000 and # so on based on their index in the mock_data list if name_list is None: name_list = self.propset_name_list objects = [] for id, row in enumerate(mock_data): obj = ObjectContent( obj=MoRef(value="ds-%03d" % id), propSet=[]) for index, value in enumerate(row): obj.propSet.append( DynamicProperty(name=name_list[index], val=row[index])) objects.append(obj) return ResultSet(objects=objects) @property def propset_name_list(self): return ['summary.type', 'summary.name', 'summary.accessible', 'summary.capacity', 'summary.freeSpace'] def test_filter_datastores_simple(self): datastores = self.build_result_set(self.data) best_match = vm_util.DSRecord(datastore=None, name=None, capacity=None, freespace=0) rec = vm_util._select_datastore(datastores, best_match) self.assertIsNotNone(rec[0], "could not find datastore!") self.assertEqual('ds-001', rec[0].value, "didn't find the right datastore!") self.assertEqual(123467890, rec[3], "did not obtain correct freespace!") def test_filter_datastores_empty(self): data = [] datastores = self.build_result_set(data) best_match = vm_util.DSRecord(datastore=None, name=None, capacity=None, freespace=0) rec = vm_util._select_datastore(datastores, best_match) self.assertEqual(rec, best_match) def test_filter_datastores_no_match(self): datastores = self.build_result_set(self.data) datastore_regex = re.compile('no_match.*') best_match = vm_util.DSRecord(datastore=None, name=None, capacity=None, freespace=0) rec = vm_util._select_datastore(datastores, best_match, datastore_regex) self.assertEqual(rec, best_match, "did not match datastore properly") def test_filter_datastores_specific_match(self): data = [ ['VMFS', 'os-some-name', True, 987654321, 1234678], ['NFS', 'another-name', True, 9876543210, 123467890], ['BAD', 'some-name-bad', True, 98765432100, 1234678900], ['VMFS', 'some-name-good', True, 987654321, 12346789], ['VMFS', 'some-other-good', False, 987654321000, 12346789000], ] # only the DS some-name-good is accessible and matches the regex datastores = self.build_result_set(data) datastore_regex = re.compile('.*-good$') best_match = vm_util.DSRecord(datastore=None, name=None, capacity=None, freespace=0) rec = vm_util._select_datastore(datastores, best_match, datastore_regex) self.assertIsNotNone(rec, "could not find datastore!") self.assertEqual('ds-003', rec[0].value, "didn't find the right datastore!") self.assertNotEqual('ds-004', rec[0].value, "accepted an unreachable datastore!") self.assertEqual('some-name-good', rec[1]) self.assertEqual(12346789, rec[3], "did not obtain correct freespace!") self.assertEqual(987654321, rec[2], "did not obtain correct capacity!") def test_filter_datastores_missing_props(self): data = [ ['VMFS', 'os-some-name', 987654321, 1234678], ['NFS', 'another-name', 9876543210, 123467890], ] # no matches are expected when 'summary.accessible' is missing prop_names = ['summary.type', 'summary.name', 'summary.capacity', 'summary.freeSpace'] datastores = self.build_result_set(data, prop_names) best_match = vm_util.DSRecord(datastore=None, name=None, capacity=None, freespace=0) rec = vm_util._select_datastore(datastores, best_match) self.assertEqual(rec, best_match, "no matches were expected") def test_filter_datastores_best_match(self): data = [ ['VMFS', 'spam-good', True, 20 * units.Gi, 10 * units.Gi], ['NFS', 'eggs-good', True, 40 * units.Gi, 15 * units.Gi], ['BAD', 'some-name-bad', True, 30 * units.Gi, 20 * units.Gi], ['VMFS', 'some-name-good', True, 50 * units.Gi, 5 * units.Gi], ['VMFS', 'some-other-good', True, 10 * units.Gi, 10 * units.Gi], ] datastores = self.build_result_set(data) datastore_regex = re.compile('.*-good$') # the current best match is better than all candidates best_match = vm_util.DSRecord(datastore='ds-100', name='best-ds-good', capacity=20 * units.Gi, freespace=19 * units.Gi) rec = vm_util._select_datastore(datastores, best_match, datastore_regex) self.assertEqual(rec, best_match, "did not match datastore properly") nova-2014.1/nova/tests/virt/vmwareapi/test_vif.py0000664000175400017540000003657412323721477023212 0ustar jenkinsjenkins00000000000000# Copyright 2013 Canonical Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import mock from oslo.config import cfg from nova import exception from nova.network import model as network_model from nova import test from nova.tests import matchers from nova.tests.virt.vmwareapi import test_vm_util from nova.virt.vmwareapi import error_util from nova.virt.vmwareapi import fake from nova.virt.vmwareapi import network_util from nova.virt.vmwareapi import vif from nova.virt.vmwareapi import vim_util from nova.virt.vmwareapi import vm_util CONF = cfg.CONF class VMwareVifTestCase(test.NoDBTestCase): def setUp(self): super(VMwareVifTestCase, self).setUp() self.flags(vlan_interface='vmnet0', group='vmware') network = network_model.Network(id=0, bridge='fa0', label='fake', vlan=3, bridge_interface='eth0', injected=True) self.vif = network_model.NetworkInfo([ network_model.VIF(id=None, address='DE:AD:BE:EF:00:00', network=network, type=None, devname=None, ovs_interfaceid=None, rxtx_cap=3) ])[0] self.session = test_vm_util.fake_session() self.cluster = None def tearDown(self): super(VMwareVifTestCase, self).tearDown() def test_ensure_vlan_bridge(self): self.mox.StubOutWithMock(network_util, 'get_network_with_the_name') self.mox.StubOutWithMock(network_util, 'get_vswitch_for_vlan_interface') self.mox.StubOutWithMock(network_util, 'check_if_vlan_interface_exists') self.mox.StubOutWithMock(network_util, 'create_port_group') network_util.get_network_with_the_name(self.session, 'fa0', self.cluster).AndReturn(None) network_util.get_vswitch_for_vlan_interface(self.session, 'vmnet0', self.cluster).AndReturn('vmnet0') network_util.check_if_vlan_interface_exists(self.session, 'vmnet0', self.cluster).AndReturn(True) network_util.create_port_group(self.session, 'fa0', 'vmnet0', 3, self.cluster) network_util.get_network_with_the_name(self.session, 'fa0', None) self.mox.ReplayAll() vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=True) # FlatDHCP network mode without vlan - network doesn't exist with the host def test_ensure_vlan_bridge_without_vlan(self): self.mox.StubOutWithMock(network_util, 'get_network_with_the_name') self.mox.StubOutWithMock(network_util, 'get_vswitch_for_vlan_interface') self.mox.StubOutWithMock(network_util, 'check_if_vlan_interface_exists') self.mox.StubOutWithMock(network_util, 'create_port_group') network_util.get_network_with_the_name(self.session, 'fa0', self.cluster).AndReturn(None) network_util.get_vswitch_for_vlan_interface(self.session, 'vmnet0', self.cluster).AndReturn('vmnet0') network_util.check_if_vlan_interface_exists(self.session, 'vmnet0', self.cluster).AndReturn(True) network_util.create_port_group(self.session, 'fa0', 'vmnet0', 0, self.cluster) network_util.get_network_with_the_name(self.session, 'fa0', None) self.mox.ReplayAll() vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=False) # FlatDHCP network mode without vlan - network exists with the host # Get vswitch and check vlan interface should not be called def test_ensure_vlan_bridge_with_network(self): self.mox.StubOutWithMock(network_util, 'get_network_with_the_name') self.mox.StubOutWithMock(network_util, 'get_vswitch_for_vlan_interface') self.mox.StubOutWithMock(network_util, 'check_if_vlan_interface_exists') self.mox.StubOutWithMock(network_util, 'create_port_group') vm_network = {'name': 'VM Network', 'type': 'Network'} network_util.get_network_with_the_name(self.session, 'fa0', self.cluster).AndReturn(vm_network) self.mox.ReplayAll() vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=False) # Flat network mode with DVS def test_ensure_vlan_bridge_with_existing_dvs(self): network_ref = {'dvpg': 'dvportgroup-2062', 'type': 'DistributedVirtualPortgroup'} self.mox.StubOutWithMock(network_util, 'get_network_with_the_name') self.mox.StubOutWithMock(network_util, 'get_vswitch_for_vlan_interface') self.mox.StubOutWithMock(network_util, 'check_if_vlan_interface_exists') self.mox.StubOutWithMock(network_util, 'create_port_group') network_util.get_network_with_the_name(self.session, 'fa0', self.cluster).AndReturn(network_ref) self.mox.ReplayAll() ref = vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=False) self.assertThat(ref, matchers.DictMatches(network_ref)) def test_get_network_ref_neutron(self): self.mox.StubOutWithMock(vif, 'get_neutron_network') vif.get_neutron_network(self.session, 'fa0', self.cluster, self.vif) self.mox.ReplayAll() vif.get_network_ref(self.session, self.cluster, self.vif, True) def test_get_network_ref_flat_dhcp(self): self.mox.StubOutWithMock(vif, 'ensure_vlan_bridge') vif.ensure_vlan_bridge(self.session, self.vif, cluster=self.cluster, create_vlan=False) self.mox.ReplayAll() vif.get_network_ref(self.session, self.cluster, self.vif, False) def test_get_network_ref_bridge(self): self.mox.StubOutWithMock(vif, 'ensure_vlan_bridge') vif.ensure_vlan_bridge(self.session, self.vif, cluster=self.cluster, create_vlan=True) self.mox.ReplayAll() network = network_model.Network(id=0, bridge='fa0', label='fake', vlan=3, bridge_interface='eth0', injected=True, should_create_vlan=True) self.vif = network_model.NetworkInfo([ network_model.VIF(id=None, address='DE:AD:BE:EF:00:00', network=network, type=None, devname=None, ovs_interfaceid=None, rxtx_cap=3) ])[0] vif.get_network_ref(self.session, self.cluster, self.vif, False) def test_get_network_ref_bridge(self): opaque_networks = [{'opaqueNetworkId': 'bridge_id', 'opaqueNetworkName': 'name', 'opaqueNetworkType': 'OpaqueNetwork'}] network_ref = vif._get_network_ref_from_opaque(opaque_networks, 'integration_bridge', 'bridge_id') self.assertEqual('bridge_id', network_ref['network-id']) def test_get_network_ref_bridges(self): opaque_networks = [{'opaqueNetworkId': 'bridge_id1', 'opaqueNetworkName': 'name1', 'opaqueNetworkType': 'OpaqueNetwork'}, {'opaqueNetworkId': 'bridge_id2', 'opaqueNetworkName': 'name2', 'opaqueNetworkType': 'OpaqueNetwork'}] network_ref = vif._get_network_ref_from_opaque(opaque_networks, 'integration_bridge', 'bridge_id2') self.assertEqual('bridge_id2', network_ref['network-id']) def test_get_network_ref_integration(self): opaque_networks = [{'opaqueNetworkId': 'integration_bridge', 'opaqueNetworkName': 'name', 'opaqueNetworkType': 'OpaqueNetwork'}] network_ref = vif._get_network_ref_from_opaque(opaque_networks, 'integration_bridge', 'bridge_id') self.assertEqual('integration_bridge', network_ref['network-id']) def test_get_network_ref_bridge_none(self): opaque_networks = [{'opaqueNetworkId': 'bridge_id1', 'opaqueNetworkName': 'name1', 'opaqueNetworkType': 'OpaqueNetwork'}, {'opaqueNetworkId': 'bridge_id2', 'opaqueNetworkName': 'name2', 'opaqueNetworkType': 'OpaqueNetwork'}] network_ref = vif._get_network_ref_from_opaque(opaque_networks, 'integration_bridge', 'bridge_id') self.assertIsNone(network_ref) def test_get_network_ref_integration_multiple(self): opaque_networks = [{'opaqueNetworkId': 'bridge_id1', 'opaqueNetworkName': 'name1', 'opaqueNetworkType': 'OpaqueNetwork'}, {'opaqueNetworkId': 'integration_bridge', 'opaqueNetworkName': 'name2', 'opaqueNetworkType': 'OpaqueNetwork'}] network_ref = vif._get_network_ref_from_opaque(opaque_networks, 'integration_bridge', 'bridge_id') self.assertIsNone(network_ref) def test_get_neutron_network(self): self.mox.StubOutWithMock(vm_util, 'get_host_ref') self.mox.StubOutWithMock(self.session, '_call_method') self.mox.StubOutWithMock(vif, '_get_network_ref_from_opaque') vm_util.get_host_ref(self.session, self.cluster).AndReturn('fake-host') opaque = fake.DataObject() opaque.HostOpaqueNetworkInfo = ['fake-network-info'] self.session._call_method(vim_util, "get_dynamic_property", 'fake-host', 'HostSystem', 'config.network.opaqueNetwork').AndReturn(opaque) vif._get_network_ref_from_opaque(opaque.HostOpaqueNetworkInfo, CONF.vmware.integration_bridge, self.vif['network']['id']).AndReturn('fake-network-ref') self.mox.ReplayAll() network_ref = vif.get_neutron_network(self.session, self.vif['network']['id'], self.cluster, self.vif) self.assertEqual(network_ref, 'fake-network-ref') def test_get_neutron_network_opaque_network_not_found(self): self.mox.StubOutWithMock(vm_util, 'get_host_ref') self.mox.StubOutWithMock(self.session, '_call_method') self.mox.StubOutWithMock(vif, '_get_network_ref_from_opaque') vm_util.get_host_ref(self.session, self.cluster).AndReturn('fake-host') opaque = fake.DataObject() opaque.HostOpaqueNetworkInfo = ['fake-network-info'] self.session._call_method(vim_util, "get_dynamic_property", 'fake-host', 'HostSystem', 'config.network.opaqueNetwork').AndReturn(opaque) vif._get_network_ref_from_opaque(opaque.HostOpaqueNetworkInfo, CONF.vmware.integration_bridge, self.vif['network']['id']).AndReturn(None) self.mox.ReplayAll() self.assertRaises(exception.NetworkNotFoundForBridge, vif.get_neutron_network, self.session, self.vif['network']['id'], self.cluster, self.vif) def test_get_neutron_network_bridge_network_not_found(self): self.mox.StubOutWithMock(vm_util, 'get_host_ref') self.mox.StubOutWithMock(self.session, '_call_method') self.mox.StubOutWithMock(network_util, 'get_network_with_the_name') vm_util.get_host_ref(self.session, self.cluster).AndReturn('fake-host') opaque = fake.DataObject() opaque.HostOpaqueNetworkInfo = ['fake-network-info'] self.session._call_method(vim_util, "get_dynamic_property", 'fake-host', 'HostSystem', 'config.network.opaqueNetwork').AndReturn(None) network_util.get_network_with_the_name(self.session, 0, self.cluster).AndReturn(None) self.mox.ReplayAll() self.assertRaises(exception.NetworkNotFoundForBridge, vif.get_neutron_network, self.session, self.vif['network']['id'], self.cluster, self.vif) def test_create_port_group_already_exists(self): def fake_call_method(module, method, *args, **kwargs): if method == 'AddPortGroup': raise error_util.AlreadyExistsException() with contextlib.nested( mock.patch.object(vm_util, 'get_add_vswitch_port_group_spec'), mock.patch.object(vm_util, 'get_host_ref'), mock.patch.object(self.session, '_call_method', fake_call_method) ) as (_add_vswitch, _get_host, _call_method): network_util.create_port_group(self.session, 'pg_name', 'vswitch_name', vlan_id=0, cluster=None) def test_create_port_group_exception(self): def fake_call_method(module, method, *args, **kwargs): if method == 'AddPortGroup': raise error_util.VMwareDriverException() with contextlib.nested( mock.patch.object(vm_util, 'get_add_vswitch_port_group_spec'), mock.patch.object(vm_util, 'get_host_ref'), mock.patch.object(self.session, '_call_method', fake_call_method) ) as (_add_vswitch, _get_host, _call_method): self.assertRaises(error_util.VMwareDriverException, network_util.create_port_group, self.session, 'pg_name', 'vswitch_name', vlan_id=0, cluster=None) def test_get_neutron_network_invalid_property(self): def fake_call_method(module, method, *args, **kwargs): if method == 'get_dynamic_property': raise error_util.InvalidPropertyException() with contextlib.nested( mock.patch.object(vm_util, 'get_host_ref'), mock.patch.object(self.session, '_call_method', fake_call_method), mock.patch.object(network_util, 'get_network_with_the_name') ) as (_get_host, _call_method, _get_name): vif.get_neutron_network(self.session, 'network_name', 'cluster', 'vif') nova-2014.1/nova/tests/virt/vmwareapi/test_vim_util.py0000664000175400017540000001120012323721477024231 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, 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. import collections import fixtures import mock from nova import test from nova.tests.virt.vmwareapi import stubs from nova.virt.vmwareapi import driver from nova.virt.vmwareapi import fake from nova.virt.vmwareapi import vim_util def _fake_get_object_properties(vim, collector, mobj, type, properties): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.ObjectContent(None)) return fake_objects def _fake_get_object_properties_missing(vim, collector, mobj, type, properties): fake_objects = fake.FakeRetrieveResult() ml = [fake.MissingProperty()] fake_objects.add_object(fake.ObjectContent(None, missing_list=ml)) return fake_objects class VMwareVIMUtilTestCase(test.NoDBTestCase): def setUp(self): super(VMwareVIMUtilTestCase, self).setUp() fake.reset(vc=True) self.vim = fake.FakeVim() self.vim._login() def test_get_dynamic_properties_missing(self): self.useFixture(fixtures.MonkeyPatch( 'nova.virt.vmwareapi.vim_util.get_object_properties', _fake_get_object_properties)) res = vim_util.get_dynamic_property('fake-vim', 'fake-obj', 'fake-type', 'fake-property') self.assertIsNone(res) def test_get_dynamic_properties_missing_path_exists(self): self.useFixture(fixtures.MonkeyPatch( 'nova.virt.vmwareapi.vim_util.get_object_properties', _fake_get_object_properties_missing)) res = vim_util.get_dynamic_property('fake-vim', 'fake-obj', 'fake-type', 'fake-property') self.assertIsNone(res) def test_get_dynamic_properties_with_token(self): ObjectContent = collections.namedtuple('ObjectContent', ['propSet']) DynamicProperty = collections.namedtuple('Property', ['name', 'val']) # Add a token to our results, indicating that more are available result = fake.FakeRetrieveResult(token='fake_token') # We expect these properties to be returned result.add_object(ObjectContent(propSet=[ DynamicProperty(name='name1', val='value1'), DynamicProperty(name='name2', val='value2') ])) # These properties should be ignored result.add_object(ObjectContent(propSet=[ DynamicProperty(name='name3', val='value3') ])) retrievePropertiesEx = mock.MagicMock(name='RetrievePropertiesEx') retrievePropertiesEx.return_value = result calls = {'RetrievePropertiesEx': retrievePropertiesEx} with stubs.fake_suds_context(calls): session = driver.VMwareAPISession() service_content = session.vim.get_service_content() props = session._call_method(vim_util, "get_dynamic_properties", service_content.propertyCollector, 'fake_type', None) self.assertEqual(props, { 'name1': 'value1', 'name2': 'value2' }) @mock.patch.object(vim_util, 'get_object_properties', return_value=None) def test_get_dynamic_properties_no_objects(self, mock_get_object_props): res = vim_util.get_dynamic_properties('fake-vim', 'fake-obj', 'fake-type', 'fake-property') self.assertEqual({}, res) def test_get_inner_objects(self): property = ['summary.name'] # Get the fake datastores directly from the cluster cluster_refs = fake._get_object_refs('ClusterComputeResource') cluster = fake._get_object(cluster_refs[0]) expected_ds = cluster.datastore.ManagedObjectReference # Get the fake datastores using inner objects utility method result = vim_util.get_inner_objects( self.vim, cluster_refs[0], 'datastore', 'Datastore', property) datastores = [oc.obj for oc in result.objects] self.assertEqual(expected_ds, datastores) nova-2014.1/nova/tests/virt/vmwareapi/test_vmops.py0000664000175400017540000003020512323721510023537 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock import contextlib import mock from nova import exception from nova.network import model as network_model from nova import test from nova.tests.virt.vmwareapi import stubs from nova import utils from nova.virt.vmwareapi import driver from nova.virt.vmwareapi import ds_util from nova.virt.vmwareapi import error_util from nova.virt.vmwareapi import fake as vmwareapi_fake from nova.virt.vmwareapi import vmops class VMwareVMOpsTestCase(test.NoDBTestCase): def setUp(self): super(VMwareVMOpsTestCase, self).setUp() vmwareapi_fake.reset() stubs.set_stubs(self.stubs) self._session = driver.VMwareAPISession() self._vmops = vmops.VMwareVMOps(self._session, None, None) self._instance = {'name': 'fake_name', 'uuid': 'fake_uuid'} subnet_4 = network_model.Subnet(cidr='192.168.0.1/24', dns=[network_model.IP('192.168.0.1')], gateway= network_model.IP('192.168.0.1'), ips=[ network_model.IP('192.168.0.100')], routes=None) subnet_6 = network_model.Subnet(cidr='dead:beef::1/64', dns=None, gateway= network_model.IP('dead:beef::1'), ips=[network_model.IP( 'dead:beef::dcad:beff:feef:0')], routes=None) network = network_model.Network(id=0, bridge='fa0', label='fake', subnets=[subnet_4, subnet_6], vlan=None, bridge_interface=None, injected=True) self.network_info = network_model.NetworkInfo([ network_model.VIF(id=None, address='DE:AD:BE:EF:00:00', network=network, type=None, devname=None, ovs_interfaceid=None, rxtx_cap=3) ]) pure_IPv6_network = network_model.Network(id=0, bridge='fa0', label='fake', subnets=[subnet_6], vlan=None, bridge_interface=None, injected=True) self.pure_IPv6_network_info = network_model.NetworkInfo([ network_model.VIF(id=None, address='DE:AD:BE:EF:00:00', network=pure_IPv6_network, type=None, devname=None, ovs_interfaceid=None, rxtx_cap=3) ]) utils.reset_is_neutron() def test_get_disk_format_none(self): format, is_iso = self._vmops._get_disk_format({'disk_format': None}) self.assertIsNone(format) self.assertFalse(is_iso) def test_get_disk_format_iso(self): format, is_iso = self._vmops._get_disk_format({'disk_format': 'iso'}) self.assertEqual('iso', format) self.assertTrue(is_iso) def test_get_disk_format_bad(self): self.assertRaises(exception.InvalidDiskFormat, self._vmops._get_disk_format, {'disk_format': 'foo'}) def test_get_machine_id_str(self): result = vmops.VMwareVMOps._get_machine_id_str(self.network_info) self.assertEqual(result, 'DE:AD:BE:EF:00:00;192.168.0.100;255.255.255.0;' '192.168.0.1;192.168.0.255;192.168.0.1#') result = vmops.VMwareVMOps._get_machine_id_str( self.pure_IPv6_network_info) self.assertEqual('DE:AD:BE:EF:00:00;;;;;#', result) def test_is_neutron_nova(self): self.flags(network_api_class='nova.network.api.API') ops = vmops.VMwareVMOps(None, None, None) self.assertFalse(ops._is_neutron) def test_is_neutron_neutron(self): self.flags(network_api_class='nova.network.neutronv2.api.API') ops = vmops.VMwareVMOps(None, None, None) self.assertTrue(ops._is_neutron) def test_is_neutron_quantum(self): self.flags(network_api_class='nova.network.quantumv2.api.API') ops = vmops.VMwareVMOps(None, None, None) self.assertTrue(ops._is_neutron) def test_use_linked_clone_override_nf(self): value = vmops.VMwareVMOps.decide_linked_clone(None, False) self.assertFalse(value, "No overrides present but still overridden!") def test_use_linked_clone_override_nt(self): value = vmops.VMwareVMOps.decide_linked_clone(None, True) self.assertTrue(value, "No overrides present but still overridden!") def test_use_linked_clone_override_ny(self): value = vmops.VMwareVMOps.decide_linked_clone(None, "yes") self.assertTrue(value, "No overrides present but still overridden!") def test_use_linked_clone_override_ft(self): value = vmops.VMwareVMOps.decide_linked_clone(False, True) self.assertFalse(value, "image level metadata failed to override global") def test_use_linked_clone_override_nt(self): value = vmops.VMwareVMOps.decide_linked_clone("no", True) self.assertFalse(value, "image level metadata failed to override global") def test_use_linked_clone_override_yf(self): value = vmops.VMwareVMOps.decide_linked_clone("yes", False) self.assertTrue(value, "image level metadata failed to override global") def _setup_create_folder_mocks(self): ops = vmops.VMwareVMOps(mock.Mock(), mock.Mock(), mock.Mock()) base_name = 'folder' ds_name = "datastore" ds_ref = mock.Mock() ds_ref.value = 1 dc_ref = mock.Mock() ops._datastore_dc_mapping[ds_ref.value] = vmops.DcInfo( ref=dc_ref, name='fake-name', vmFolder='fake-folder') path = ds_util.build_datastore_path(ds_name, base_name) ds_util.mkdir = mock.Mock() return ds_name, ds_ref, ops, path, dc_ref def test_create_folder_if_missing(self): ds_name, ds_ref, ops, path, dc = self._setup_create_folder_mocks() ops._create_folder_if_missing(ds_name, ds_ref, 'folder') ds_util.mkdir.assert_called_with(ops._session, path, dc) def test_create_folder_if_missing_exception(self): ds_name, ds_ref, ops, path, dc = self._setup_create_folder_mocks() ds_util.mkdir.side_effect = error_util.FileAlreadyExistsException() ops._create_folder_if_missing(ds_name, ds_ref, 'folder') ds_util.mkdir.assert_called_with(ops._session, path, dc) @mock.patch.object(ds_util, 'file_exists', return_value=True) def test_check_if_folder_file_exists_with_existing(self, mock_exists): ops = vmops.VMwareVMOps(mock.Mock(), mock.Mock(), mock.Mock()) ops._create_folder_if_missing = mock.Mock() ops._check_if_folder_file_exists(mock.Mock(), mock.Mock(), "datastore", "folder", "some_file") ops._create_folder_if_missing.assert_called_once() @mock.patch.object(ds_util, 'file_exists', return_value=False) def test_check_if_folder_file_exists_no_existing(self, mock_exists): ops = vmops.VMwareVMOps(mock.Mock(), mock.Mock(), mock.Mock()) ops._create_folder_if_missing = mock.Mock() ops._check_if_folder_file_exists(mock.Mock(), mock.Mock(), "datastore", "folder", "some_file") ops._create_folder_if_missing.assert_called_once() def test_get_valid_vms_from_retrieve_result(self): ops = vmops.VMwareVMOps(mock.Mock(), mock.Mock(), mock.Mock()) fake_objects = vmwareapi_fake.FakeRetrieveResult() fake_objects.add_object(vmwareapi_fake.VirtualMachine()) fake_objects.add_object(vmwareapi_fake.VirtualMachine()) fake_objects.add_object(vmwareapi_fake.VirtualMachine()) vms = ops._get_valid_vms_from_retrieve_result(fake_objects) self.assertEqual(3, len(vms)) def test_get_valid_vms_from_retrieve_result_with_invalid(self): ops = vmops.VMwareVMOps(mock.Mock(), mock.Mock(), mock.Mock()) fake_objects = vmwareapi_fake.FakeRetrieveResult() fake_objects.add_object(vmwareapi_fake.VirtualMachine()) invalid_vm1 = vmwareapi_fake.VirtualMachine() invalid_vm1.set('runtime.connectionState', 'orphaned') invalid_vm2 = vmwareapi_fake.VirtualMachine() invalid_vm2.set('runtime.connectionState', 'inaccessible') fake_objects.add_object(invalid_vm1) fake_objects.add_object(invalid_vm2) vms = ops._get_valid_vms_from_retrieve_result(fake_objects) self.assertEqual(1, len(vms)) def test_delete_vm_snapshot(self): def fake_call_method(module, method, *args, **kwargs): self.assertEqual('RemoveSnapshot_Task', method) self.assertEqual(args[0], "fake_vm_snapshot") self.assertEqual(kwargs['removeChildren'], False) self.assertEqual(kwargs['consolidate'], True) return 'fake_remove_snapshot_task' with contextlib.nested( mock.patch.object(self._session, '_wait_for_task'), mock.patch.object(self._session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): self._vmops._delete_vm_snapshot(self._instance, "fake_vm_ref", "fake_vm_snapshot") _wait_for_task.assert_has_calls([ mock.call('fake_remove_snapshot_task')]) def test_create_vm_snapshot(self): method_list = ['CreateSnapshot_Task', 'get_dynamic_property'] def fake_call_method(module, method, *args, **kwargs): expected_method = method_list.pop(0) self.assertEqual(expected_method, method) if (expected_method == 'CreateSnapshot_Task'): self.assertEqual(args[0], "fake_vm_ref") self.assertEqual(kwargs['memory'], False) self.assertEqual(kwargs['quiesce'], True) return 'fake_snapshot_task' elif (expected_method == 'get_dynamic_property'): task_info = mock.Mock() task_info.result = "fake_snapshot_ref" self.assertEqual(('fake_snapshot_task', 'Task', 'info'), args) return task_info with contextlib.nested( mock.patch.object(self._session, '_wait_for_task'), mock.patch.object(self._session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): snap = self._vmops._create_vm_snapshot(self._instance, "fake_vm_ref") self.assertEqual("fake_snapshot_ref", snap) _wait_for_task.assert_has_calls([ mock.call('fake_snapshot_task')]) nova-2014.1/nova/tests/virt/vmwareapi/test_error_util.py0000664000175400017540000000632612323721477024604 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import test from nova.virt.vmwareapi import error_util from nova.virt.vmwareapi import fake class ExpectedMethodFault: pass class ErrorUtilTestCase(test.NoDBTestCase): def setUp(self): super(ErrorUtilTestCase, self).setUp() def test_fault_checker_empty_response(self): # assertRaises as a Context Manager would have been a good choice to # perform additional checks on the exception raised, instead of # try/catch block in the below tests, but it's available # only from Py 2.7. exp_fault_list = [error_util.NOT_AUTHENTICATED] try: error_util.FaultCheckers.retrievepropertiesex_fault_checker(None) except error_util.VimFaultException as e: self.assertEqual(exp_fault_list, e.fault_list) else: self.fail("VimFaultException was not raised.") def test_fault_checker_missing_props(self): fake_objects = fake.FakeRetrieveResult() ml = [fake.MissingProperty(method_fault=ExpectedMethodFault())] fake_objects.add_object(fake.ObjectContent(None, missing_list=ml)) exp_fault_list = ['ExpectedMethodFault'] try: error_util.FaultCheckers.retrievepropertiesex_fault_checker( fake_objects) except error_util.VimFaultException as e: self.assertEqual(exp_fault_list, e.fault_list) else: self.fail("VimFaultException was not raised.") def test_fault_checker_no_missing_props(self): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.ObjectContent(None)) self.assertIsNone( error_util.FaultCheckers.retrievepropertiesex_fault_checker( fake_objects)) def test_exception_summary_exception_as_list(self): # assert that if a list is fed to the VimException object # that it will error. self.assertRaises(ValueError, error_util.VimException, [], ValueError('foo')) def test_exception_summary_string(self): e = error_util.VimException("string", ValueError("foo")) string = str(e) self.assertEqual("string: foo", string) def test_vim_fault_exception_string(self): self.assertRaises(ValueError, error_util.VimFaultException, "bad", ValueError("argument")) def test_vim_fault_exception(self): vfe = error_util.VimFaultException([ValueError("example")], ValueError("cause")) string = str(vfe) self.assertEqual("cause", string) nova-2014.1/nova/tests/virt/vmwareapi/stubs.py0000664000175400017540000000650112323721477022512 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Stubouts for the test suite """ import contextlib import mock from nova.virt.vmwareapi import driver from nova.virt.vmwareapi import error_util from nova.virt.vmwareapi import fake from nova.virt.vmwareapi import network_util from nova.virt.vmwareapi import vmware_images def fake_get_vim_object(arg): """Stubs out the VMwareAPISession's get_vim_object method.""" return fake.FakeVim() def fake_is_vim_object(arg, module): """Stubs out the VMwareAPISession's is_vim_object method.""" return isinstance(module, fake.FakeVim) def fake_temp_method_exception(): raise error_util.VimFaultException( [error_util.NOT_AUTHENTICATED], "Session Empty/Not Authenticated") def fake_temp_session_exception(): raise error_util.SessionConnectionException("it's a fake!", "Session Exception") def fake_session_file_exception(): fault_list = [error_util.FILE_ALREADY_EXISTS] raise error_util.VimFaultException(fault_list, Exception('fake')) def set_stubs(stubs): """Set the stubs.""" stubs.Set(network_util, 'get_network_with_the_name', fake.fake_get_network) stubs.Set(vmware_images, 'fetch_image', fake.fake_fetch_image) stubs.Set(vmware_images, 'get_vmdk_size_and_properties', fake.fake_get_vmdk_size_and_properties) stubs.Set(vmware_images, 'upload_image', fake.fake_upload_image) stubs.Set(driver.VMwareAPISession, "_get_vim_object", fake_get_vim_object) stubs.Set(driver.VMwareAPISession, "_is_vim_object", fake_is_vim_object) def fake_suds_context(calls={}): """Generate a suds client which automatically mocks all SOAP method calls. Calls are stored in , indexed by the name of the call. If you need to mock the behaviour of specific API calls you can pre-populate with appropriate Mock objects. """ class fake_factory: def create(self, name): return mock.NonCallableMagicMock(name=name) class fake_service: def __getattr__(self, attr_name): if attr_name in calls: return calls[attr_name] mock_call = mock.MagicMock(name=attr_name) calls[attr_name] = mock_call return mock_call class fake_client: def __init__(self, wdsl_url, **kwargs): self.service = fake_service() self.factory = fake_factory() return contextlib.nested( mock.patch('suds.client.Client', fake_client), # As we're not connecting to a real host there's no need to wait # between retries mock.patch.object(driver, 'TIME_BETWEEN_API_CALL_RETRIES', 0) ) nova-2014.1/nova/tests/virt/vmwareapi/test_ds_util.py0000664000175400017540000001636612323721477024066 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 VMware, 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. import contextlib import mock from nova import test from nova.virt.vmwareapi import ds_util from nova.virt.vmwareapi import error_util from nova.virt.vmwareapi import fake class fake_session(object): def __init__(self, ret=None): self.ret = ret def _get_vim(self): return fake.FakeVim() def _call_method(self, module, method, *args, **kwargs): return self.ret def _wait_for_task(self, task_ref): task_info = self._call_method('module', "get_dynamic_property", task_ref, "Task", "info") task_name = task_info.name if task_info.state == 'success': return task_info else: error_info = 'fake error' error = task_info.error name = error.fault.__class__.__name__ raise error_util.get_fault_class(name)(error_info) class DsUtilTestCase(test.NoDBTestCase): def setUp(self): super(DsUtilTestCase, self).setUp() self.session = fake_session() self.flags(api_retry_count=1, group='vmware') fake.reset() def tearDown(self): super(DsUtilTestCase, self).tearDown() fake.reset() def test_build_datastore_path(self): path = ds_util.build_datastore_path('ds', 'folder') self.assertEqual('[ds] folder', path) path = ds_util.build_datastore_path('ds', 'folder/file') self.assertEqual('[ds] folder/file', path) def test_split_datastore_path(self): ds, path = ds_util.split_datastore_path('[ds]') self.assertEqual('ds', ds) self.assertEqual('', path) ds, path = ds_util.split_datastore_path('[ds] folder') self.assertEqual('ds', ds) self.assertEqual('folder', path) ds, path = ds_util.split_datastore_path('[ds] folder/file') self.assertEqual('ds', ds) self.assertEqual('folder/file', path) self.assertRaises(IndexError, ds_util.split_datastore_path, 'split bad path') def test_file_delete(self): def fake_call_method(module, method, *args, **kwargs): self.assertEqual('DeleteDatastoreFile_Task', method) name = kwargs.get('name') self.assertEqual('fake-datastore-path', name) datacenter = kwargs.get('datacenter') self.assertEqual('fake-dc-ref', datacenter) return 'fake_delete_task' with contextlib.nested( mock.patch.object(self.session, '_wait_for_task'), mock.patch.object(self.session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): ds_util.file_delete(self.session, 'fake-datastore-path', 'fake-dc-ref') _wait_for_task.assert_has_calls([ mock.call('fake_delete_task')]) def test_file_move(self): def fake_call_method(module, method, *args, **kwargs): self.assertEqual('MoveDatastoreFile_Task', method) sourceName = kwargs.get('sourceName') self.assertEqual('[ds] tmp/src', sourceName) destinationName = kwargs.get('destinationName') self.assertEqual('[ds] base/dst', destinationName) sourceDatacenter = kwargs.get('sourceDatacenter') self.assertEqual('fake-dc-ref', sourceDatacenter) destinationDatacenter = kwargs.get('destinationDatacenter') self.assertEqual('fake-dc-ref', destinationDatacenter) return 'fake_move_task' with contextlib.nested( mock.patch.object(self.session, '_wait_for_task'), mock.patch.object(self.session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): ds_util.file_move(self.session, 'fake-dc-ref', '[ds] tmp/src', '[ds] base/dst') _wait_for_task.assert_has_calls([ mock.call('fake_move_task')]) def test_mkdir(self): def fake_call_method(module, method, *args, **kwargs): self.assertEqual('MakeDirectory', method) name = kwargs.get('name') self.assertEqual('fake-path', name) datacenter = kwargs.get('datacenter') self.assertEqual('fake-dc-ref', datacenter) createParentDirectories = kwargs.get('createParentDirectories') self.assertTrue(createParentDirectories) with mock.patch.object(self.session, '_call_method', fake_call_method): ds_util.mkdir(self.session, 'fake-path', 'fake-dc-ref') def test_file_exists(self): def fake_call_method(module, method, *args, **kwargs): if method == 'SearchDatastore_Task': ds_browser = args[0] self.assertEqual('fake-browser', ds_browser) datastorePath = kwargs.get('datastorePath') self.assertEqual('fake-path', datastorePath) return 'fake_exists_task' elif method == 'get_dynamic_property': info = fake.DataObject() info.name = 'search_task' info.state = 'success' result = fake.DataObject() result.path = 'fake-path' matched = fake.DataObject() matched.path = 'fake-file' result.file = [matched] info.result = result return info # Should never get here self.fail() with mock.patch.object(self.session, '_call_method', fake_call_method): file_exists = ds_util.file_exists(self.session, 'fake-browser', 'fake-path', 'fake-file') self.assertTrue(file_exists) def test_file_exists_fails(self): def fake_call_method(module, method, *args, **kwargs): if method == 'SearchDatastore_Task': return 'fake_exists_task' elif method == 'get_dynamic_property': info = fake.DataObject() info.name = 'search_task' info.state = 'error' error = fake.DataObject() error.localizedMessage = "Error message" error.fault = fake.FileNotFound() info.error = error return info # Should never get here self.fail() with mock.patch.object(self.session, '_call_method', fake_call_method): file_exists = ds_util.file_exists(self.session, 'fake-browser', 'fake-path', 'fake-file') self.assertFalse(file_exists) nova-2014.1/nova/tests/virt/vmwareapi/test_driver_api.py0000664000175400017540000027274312323721510024536 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. # Copyright (c) 2012 VMware, Inc. # Copyright (c) 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test suite for VMwareAPI. """ import collections import contextlib import copy import datetime import time import mock import mox from oslo.config import cfg import suds from nova import block_device from nova.compute import api as compute_api from nova.compute import power_state from nova.compute import task_states from nova import context from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.openstack.common import units from nova.openstack.common import uuidutils from nova import test from nova.tests import fake_instance import nova.tests.image.fake from nova.tests import matchers from nova.tests import test_flavors from nova.tests import utils from nova.tests.virt.vmwareapi import stubs from nova import utils as nova_utils from nova.virt import driver as v_driver from nova.virt import fake from nova.virt.vmwareapi import driver from nova.virt.vmwareapi import ds_util from nova.virt.vmwareapi import error_util from nova.virt.vmwareapi import fake as vmwareapi_fake from nova.virt.vmwareapi import imagecache from nova.virt.vmwareapi import vim from nova.virt.vmwareapi import vim_util from nova.virt.vmwareapi import vm_util from nova.virt.vmwareapi import vmops from nova.virt.vmwareapi import vmware_images from nova.virt.vmwareapi import volume_util from nova.virt.vmwareapi import volumeops CONF = cfg.CONF CONF.import_opt('host', 'nova.netconf') CONF.import_opt('remove_unused_original_minimum_age_seconds', 'nova.virt.imagecache') class fake_vm_ref(object): def __init__(self): self.value = 4 self._type = 'VirtualMachine' class fake_service_content(object): def __init__(self): self.ServiceContent = vmwareapi_fake.DataObject() self.ServiceContent.fake = 'fake' class VMwareSudsTest(test.NoDBTestCase): def setUp(self): super(VMwareSudsTest, self).setUp() def new_client_init(self, url, **kwargs): return mock.patch.object(suds.client.Client, '__init__', new=new_client_init).start() self.vim = self._vim_create() self.addCleanup(mock.patch.stopall) def _vim_create(self): def fake_retrieve_service_content(fake): return fake_service_content() self.stubs.Set(vim.Vim, 'retrieve_service_content', fake_retrieve_service_content) return vim.Vim() def test_exception_with_deepcopy(self): self.assertIsNotNone(self.vim) self.assertRaises(error_util.VimException, copy.deepcopy, self.vim) class VMwareSessionTestCase(test.NoDBTestCase): def _fake_is_vim_object(self, module): return True @mock.patch('time.sleep') def test_call_method_vim_fault(self, mock_sleep): def _fake_create_session(self): session = vmwareapi_fake.DataObject() session.key = 'fake_key' session.userName = 'fake_username' self._session = session def _fake_session_is_active(self): return False with contextlib.nested( mock.patch.object(driver.VMwareAPISession, '_is_vim_object', self._fake_is_vim_object), mock.patch.object(driver.VMwareAPISession, '_create_session', _fake_create_session), mock.patch.object(driver.VMwareAPISession, '_session_is_active', _fake_session_is_active) ) as (_fake_vim, _fake_create, _fake_is_active): api_session = driver.VMwareAPISession() args = () kwargs = {} self.assertRaises(error_util.VimFaultException, api_session._call_method, stubs, 'fake_temp_method_exception', *args, **kwargs) def test_call_method_vim_empty(self): def _fake_create_session(self): session = vmwareapi_fake.DataObject() session.key = 'fake_key' session.userName = 'fake_username' self._session = session def _fake_session_is_active(self): return True with contextlib.nested( mock.patch.object(driver.VMwareAPISession, '_is_vim_object', self._fake_is_vim_object), mock.patch.object(driver.VMwareAPISession, '_create_session', _fake_create_session), mock.patch.object(driver.VMwareAPISession, '_session_is_active', _fake_session_is_active) ) as (_fake_vim, _fake_create, _fake_is_active): api_session = driver.VMwareAPISession() args = () kwargs = {} res = api_session._call_method(stubs, 'fake_temp_method_exception', *args, **kwargs) self.assertEqual([], res) @mock.patch('time.sleep') def test_call_method_session_exception(self, mock_sleep): def _fake_create_session(self): session = vmwareapi_fake.DataObject() session.key = 'fake_key' session.userName = 'fake_username' self._session = session with contextlib.nested( mock.patch.object(driver.VMwareAPISession, '_is_vim_object', self._fake_is_vim_object), mock.patch.object(driver.VMwareAPISession, '_create_session', _fake_create_session), ) as (_fake_vim, _fake_create): api_session = driver.VMwareAPISession() args = () kwargs = {} self.assertRaises(error_util.SessionConnectionException, api_session._call_method, stubs, 'fake_temp_session_exception', *args, **kwargs) def test_call_method_session_file_exists_exception(self): def _fake_create_session(self): session = vmwareapi_fake.DataObject() session.key = 'fake_key' session.userName = 'fake_username' self._session = session with contextlib.nested( mock.patch.object(driver.VMwareAPISession, '_is_vim_object', self._fake_is_vim_object), mock.patch.object(driver.VMwareAPISession, '_create_session', _fake_create_session), ) as (_fake_vim, _fake_create): api_session = driver.VMwareAPISession() args = () kwargs = {} self.assertRaises(error_util.FileAlreadyExistsException, api_session._call_method, stubs, 'fake_session_file_exception', *args, **kwargs) class VMwareAPIConfTestCase(test.NoDBTestCase): """Unit tests for VMWare API configurations.""" def setUp(self): super(VMwareAPIConfTestCase, self).setUp() vm_util.vm_refs_cache_reset() def tearDown(self): super(VMwareAPIConfTestCase, self).tearDown() def test_configure_without_wsdl_loc_override(self): # Test the default configuration behavior. By default, # use the WSDL sitting on the host we are talking to in # order to bind the SOAP client. wsdl_loc = cfg.CONF.vmware.wsdl_location self.assertIsNone(wsdl_loc) wsdl_url = vim.Vim.get_wsdl_url("https", "www.example.com") url = vim.Vim.get_soap_url("https", "www.example.com") self.assertEqual("https://www.example.com/sdk/vimService.wsdl", wsdl_url) self.assertEqual("https://www.example.com/sdk", url) def test_configure_without_wsdl_loc_override_using_ipv6(self): # Same as above but with ipv6 based host ip wsdl_loc = cfg.CONF.vmware.wsdl_location self.assertIsNone(wsdl_loc) wsdl_url = vim.Vim.get_wsdl_url("https", "::1") url = vim.Vim.get_soap_url("https", "::1") self.assertEqual("https://[::1]/sdk/vimService.wsdl", wsdl_url) self.assertEqual("https://[::1]/sdk", url) def test_configure_with_wsdl_loc_override(self): # Use the setting vmwareapi_wsdl_loc to override the # default path to the WSDL. # # This is useful as a work-around for XML parsing issues # found when using some WSDL in combination with some XML # parsers. # # The wsdl_url should point to a different host than the one we # are actually going to send commands to. fake_wsdl = "https://www.test.com/sdk/foo.wsdl" self.flags(wsdl_location=fake_wsdl, group='vmware') wsdl_loc = cfg.CONF.vmware.wsdl_location self.assertIsNotNone(wsdl_loc) self.assertEqual(fake_wsdl, wsdl_loc) wsdl_url = vim.Vim.get_wsdl_url("https", "www.example.com") url = vim.Vim.get_soap_url("https", "www.example.com") self.assertEqual(fake_wsdl, wsdl_url) self.assertEqual("https://www.example.com/sdk", url) class VMwareAPIVMTestCase(test.NoDBTestCase): """Unit tests for Vmware API connection calls.""" def setUp(self): super(VMwareAPIVMTestCase, self).setUp() vm_util.vm_refs_cache_reset() self.context = context.RequestContext('fake', 'fake', is_admin=False) self.flags(host_ip='test_url', host_username='test_username', host_password='test_pass', datastore_regex='.*', api_retry_count=1, use_linked_clone=False, group='vmware') self.flags(vnc_enabled=False, image_cache_subdirectory_name='vmware_base', my_ip='') self.user_id = 'fake' self.project_id = 'fake' self.node_name = 'test_url' self.ds = 'ds1' self.context = context.RequestContext(self.user_id, self.project_id) stubs.set_stubs(self.stubs) vmwareapi_fake.reset() self.conn = driver.VMwareESXDriver(fake.FakeVirtAPI) # NOTE(vish): none of the network plugging code is actually # being tested self.network_info = utils.get_test_network_info() self.image = { 'id': 'c1c8ce3d-c2e0-4247-890c-ccf5cc1c004c', 'disk_format': 'vmdk', 'size': 512, } nova.tests.image.fake.stub_out_image_service(self.stubs) self.vnc_host = 'test_url' self._set_exception_vars() def tearDown(self): super(VMwareAPIVMTestCase, self).tearDown() vmwareapi_fake.cleanup() nova.tests.image.fake.FakeImageService_reset() def _set_exception_vars(self): self.wait_task = self.conn._session._wait_for_task self.call_method = self.conn._session._call_method self.task_ref = None self.exception = False def test_driver_capabilities(self): self.assertTrue(self.conn.capabilities['has_imagecache']) self.assertFalse(self.conn.capabilities['supports_recreate']) def test_login_retries(self): self.attempts = 0 self.login_session = vmwareapi_fake.FakeVim()._login() def _fake_login(_self): self.attempts += 1 if self.attempts == 1: raise exception.NovaException('Here is my fake exception') return self.login_session def _fake_check_session(_self): return True self.stubs.Set(vmwareapi_fake.FakeVim, '_login', _fake_login) self.stubs.Set(time, 'sleep', lambda x: None) self.stubs.Set(vmwareapi_fake.FakeVim, '_check_session', _fake_check_session) self.conn = driver.VMwareAPISession() self.assertEqual(self.attempts, 2) def test_wait_for_task_exception(self): self.flags(task_poll_interval=1, group='vmware') self.login_session = vmwareapi_fake.FakeVim()._login() self.stop_called = 0 def _fake_login(_self): return self.login_session self.stubs.Set(vmwareapi_fake.FakeVim, '_login', _fake_login) def fake_poll_task(task_ref, done): done.send_exception(exception.NovaException('fake exception')) def fake_stop_loop(loop): self.stop_called += 1 return loop.stop() self.conn = driver.VMwareAPISession() self.stubs.Set(self.conn, "_poll_task", fake_poll_task) self.stubs.Set(self.conn, "_stop_loop", fake_stop_loop) self.assertRaises(exception.NovaException, self.conn._wait_for_task, 'fake-ref') self.assertEqual(self.stop_called, 1) def _get_instance_type_by_name(self, type): for instance_type in test_flavors.DEFAULT_FLAVORS: if instance_type['name'] == type: return instance_type if type == 'm1.micro': return {'memory_mb': 128, 'root_gb': 0, 'deleted_at': None, 'name': 'm1.micro', 'deleted': 0, 'created_at': None, 'ephemeral_gb': 0, 'updated_at': None, 'disabled': False, 'vcpus': 1, 'extra_specs': {}, 'swap': 0, 'rxtx_factor': 1.0, 'is_public': True, 'flavorid': '1', 'vcpu_weight': None, 'id': 2} def _create_instance(self, node=None, set_image_ref=True, uuid=None, instance_type='m1.large'): if not node: node = self.node_name if not uuid: uuid = uuidutils.generate_uuid() self.type_data = self._get_instance_type_by_name(instance_type) values = {'name': 'fake_name', 'id': 1, 'uuid': uuid, 'project_id': self.project_id, 'user_id': self.user_id, 'kernel_id': "fake_kernel_uuid", 'ramdisk_id': "fake_ramdisk_uuid", 'mac_address': "de:ad:be:ef:be:ef", 'flavor': instance_type, 'node': node, 'memory_mb': self.type_data['memory_mb'], 'root_gb': self.type_data['root_gb'], 'ephemeral_gb': self.type_data['ephemeral_gb'], 'vcpus': self.type_data['vcpus'], 'swap': self.type_data['swap'], } if set_image_ref: values['image_ref'] = "fake_image_uuid" self.instance_node = node self.uuid = uuid self.instance = fake_instance.fake_instance_obj( self.context, **values) def _create_vm(self, node=None, num_instances=1, uuid=None, instance_type='m1.large'): """Create and spawn the VM.""" if not node: node = self.node_name self._create_instance(node=node, uuid=uuid, instance_type=instance_type) self.assertIsNone(vm_util.vm_ref_cache_get(self.uuid)) self.conn.spawn(self.context, self.instance, self.image, injected_files=[], admin_password=None, network_info=self.network_info, block_device_info=None) self._check_vm_record(num_instances=num_instances) self.assertIsNotNone(vm_util.vm_ref_cache_get(self.uuid)) def _check_vm_record(self, num_instances=1): """Check if the spawned VM's properties correspond to the instance in the db. """ instances = self.conn.list_instances() self.assertEqual(len(instances), num_instances) # Get Nova record for VM vm_info = self.conn.get_info({'uuid': self.uuid, 'name': 1, 'node': self.instance_node}) # Get record for VM vms = vmwareapi_fake._get_objects("VirtualMachine") for vm in vms.objects: if vm.get('name') == self.uuid: break # Check that m1.large above turned into the right thing. mem_kib = long(self.type_data['memory_mb']) << 10 vcpus = self.type_data['vcpus'] self.assertEqual(vm_info['max_mem'], mem_kib) self.assertEqual(vm_info['mem'], mem_kib) self.assertEqual(vm.get("summary.config.instanceUuid"), self.uuid) self.assertEqual(vm.get("summary.config.numCpu"), vcpus) self.assertEqual(vm.get("summary.config.memorySizeMB"), self.type_data['memory_mb']) self.assertEqual( vm.get("config.hardware.device")[2].device.obj_name, "ns0:VirtualE1000") # Check that the VM is running according to Nova self.assertEqual(vm_info['state'], power_state.RUNNING) # Check that the VM is running according to vSphere API. self.assertEqual(vm.get("runtime.powerState"), 'poweredOn') found_vm_uuid = False found_iface_id = False for c in vm.get("config.extraConfig").OptionValue: if (c.key == "nvp.vm-uuid" and c.value == self.instance['uuid']): found_vm_uuid = True if (c.key == "nvp.iface-id.0" and c.value == "vif-xxx-yyy-zzz"): found_iface_id = True self.assertTrue(found_vm_uuid) self.assertTrue(found_iface_id) def _check_vm_info(self, info, pwr_state=power_state.RUNNING): """Check if the get_info returned values correspond to the instance object in the db. """ mem_kib = long(self.type_data['memory_mb']) << 10 self.assertEqual(info["state"], pwr_state) self.assertEqual(info["max_mem"], mem_kib) self.assertEqual(info["mem"], mem_kib) self.assertEqual(info["num_cpu"], self.type_data['vcpus']) def test_list_instances(self): instances = self.conn.list_instances() self.assertEqual(len(instances), 0) def test_list_instances_1(self): self._create_vm() instances = self.conn.list_instances() self.assertEqual(len(instances), 1) def test_list_instance_uuids(self): self._create_vm() uuids = self.conn.list_instance_uuids() self.assertEqual(len(uuids), 1) def test_list_instance_uuids_invalid_uuid(self): self._create_vm(uuid='fake_id') uuids = self.conn.list_instance_uuids() self.assertEqual(len(uuids), 0) def _cached_files_exist(self, exists=True): cache = ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.vmdk' % self.ds) if exists: self.assertTrue(vmwareapi_fake.get_file(cache)) else: self.assertFalse(vmwareapi_fake.get_file(cache)) def test_instance_dir_disk_created(self): """Test image file is cached when even when use_linked_clone is False """ self._create_vm() inst_file_path = '[%s] %s/%s.vmdk' % (self.ds, self.uuid, self.uuid) cache = ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.vmdk' % self.ds) self.assertTrue(vmwareapi_fake.get_file(inst_file_path)) self._cached_files_exist() def test_cache_dir_disk_created(self): """Test image disk is cached when use_linked_clone is True.""" self.flags(use_linked_clone=True, group='vmware') self._create_vm() file = ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.vmdk' % self.ds) root = ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.80.vmdk' % self.ds) self.assertTrue(vmwareapi_fake.get_file(file)) self.assertTrue(vmwareapi_fake.get_file(root)) def _iso_disk_type_created(self, instance_type='m1.large'): self.image['disk_format'] = 'iso' self._create_vm(instance_type=instance_type) file = ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.iso' % self.ds) self.assertTrue(vmwareapi_fake.get_file(file)) def test_iso_disk_type_created(self): self._iso_disk_type_created() vmdk_file_path = '[%s] %s/%s.vmdk' % (self.ds, self.uuid, self.uuid) self.assertTrue(vmwareapi_fake.get_file(vmdk_file_path)) def test_iso_disk_type_created_with_root_gb_0(self): self._iso_disk_type_created(instance_type='m1.micro') vmdk_file_path = '[%s] %s/%s.vmdk' % (self.ds, self.uuid, self.uuid) self.assertFalse(vmwareapi_fake.get_file(vmdk_file_path)) def test_iso_disk_cdrom_attach(self): self.iso_path = ( '[%s] vmware_base/fake_image_uuid/fake_image_uuid.iso' % self.ds) def fake_attach_cdrom(vm_ref, instance, data_store_ref, iso_uploaded_path): self.assertEqual(iso_uploaded_path, self.iso_path) self.stubs.Set(self.conn._vmops, "_attach_cdrom_to_vm", fake_attach_cdrom) self.image['disk_format'] = 'iso' self._create_vm() def test_iso_disk_cdrom_attach_with_config_drive(self): self.flags(force_config_drive=True) self.iso_path = [ ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.iso' % self.ds), '[%s] fake-config-drive' % self.ds] self.iso_unit_nos = [0, 1] self.iso_index = 0 def fake_create_config_drive(instance, injected_files, password, data_store_name, folder, uuid, cookies): return 'fake-config-drive' def fake_attach_cdrom(vm_ref, instance, data_store_ref, iso_uploaded_path): self.assertEqual(iso_uploaded_path, self.iso_path[self.iso_index]) self.iso_index += 1 self.stubs.Set(self.conn._vmops, "_attach_cdrom_to_vm", fake_attach_cdrom) self.stubs.Set(self.conn._vmops, '_create_config_drive', fake_create_config_drive) self.image['disk_format'] = 'iso' self._create_vm() self.assertEqual(self.iso_index, 2) def test_cdrom_attach_with_config_drive(self): self.flags(force_config_drive=True) self.iso_path = '[%s] fake-config-drive' % self.ds self.cd_attach_called = False def fake_create_config_drive(instance, injected_files, password, data_store_name, folder, uuid, cookies): return 'fake-config-drive' def fake_attach_cdrom(vm_ref, instance, data_store_ref, iso_uploaded_path): self.assertEqual(iso_uploaded_path, self.iso_path) self.cd_attach_called = True self.stubs.Set(self.conn._vmops, "_attach_cdrom_to_vm", fake_attach_cdrom) self.stubs.Set(self.conn._vmops, '_create_config_drive', fake_create_config_drive) self._create_vm() self.assertTrue(self.cd_attach_called) def test_spawn(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def _spawn_with_delete_exception(self, fault=None): def fake_call_method(module, method, *args, **kwargs): task_ref = self.call_method(module, method, *args, **kwargs) if method == "DeleteDatastoreFile_Task": self.exception = True task_mdo = vmwareapi_fake.create_task(method, "error", error_fault=fault) return task_mdo.obj return task_ref with ( mock.patch.object(self.conn._session, '_call_method', fake_call_method) ): if fault: self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) else: self.assertRaises(error_util.VMwareDriverException, self._create_vm) self.assertTrue(self.exception) def test_spawn_with_delete_exception_not_found(self): self._spawn_with_delete_exception(vmwareapi_fake.FileNotFound()) def test_spawn_with_delete_exception_file_fault(self): self._spawn_with_delete_exception(vmwareapi_fake.FileFault()) def test_spawn_with_delete_exception_cannot_delete_file(self): self._spawn_with_delete_exception(vmwareapi_fake.CannotDeleteFile()) def test_spawn_with_delete_exception_file_locked(self): self._spawn_with_delete_exception(vmwareapi_fake.FileLocked()) def test_spawn_with_delete_exception_general(self): self._spawn_with_delete_exception() def test_spawn_disk_extend(self): self.mox.StubOutWithMock(self.conn._vmops, '_extend_virtual_disk') requested_size = 80 * units.Mi self.conn._vmops._extend_virtual_disk(mox.IgnoreArg(), requested_size, mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_spawn_disk_extend_exists(self): root = ('[%s] vmware_base/fake_image_uuid/fake_image_uuid.80.vmdk' % self.ds) self.root = root def _fake_extend(instance, requested_size, name, dc_ref): vmwareapi_fake._add_file(self.root) self.stubs.Set(self.conn._vmops, '_extend_virtual_disk', _fake_extend) self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.assertTrue(vmwareapi_fake.get_file(root)) def test_spawn_disk_extend_sparse(self): self.mox.StubOutWithMock(vmware_images, 'get_vmdk_size_and_properties') result = [1024, {"vmware_ostype": "otherGuest", "vmware_adaptertype": "lsiLogic", "vmware_disktype": "sparse"}] vmware_images.get_vmdk_size_and_properties( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(result) self.mox.StubOutWithMock(self.conn._vmops, '_extend_virtual_disk') requested_size = 80 * units.Mi self.conn._vmops._extend_virtual_disk(mox.IgnoreArg(), requested_size, mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_spawn_disk_extend_insufficient_disk_space(self): self.flags(use_linked_clone=True, group='vmware') self.wait_task = self.conn._session._wait_for_task self.call_method = self.conn._session._call_method self.task_ref = None id = 'fake_image_uuid' cached_image = '[%s] vmware_base/%s/%s.80.vmdk' % (self.ds, id, id) tmp_file = '[%s] vmware_base/%s/%s.80-flat.vmdk' % (self.ds, id, id) def fake_wait_for_task(task_ref): if task_ref == self.task_ref: self.task_ref = None self.assertTrue(vmwareapi_fake.get_file(cached_image)) self.assertTrue(vmwareapi_fake.get_file(tmp_file)) raise exception.NovaException('No space!') return self.wait_task(task_ref) def fake_call_method(module, method, *args, **kwargs): task_ref = self.call_method(module, method, *args, **kwargs) if method == "ExtendVirtualDisk_Task": self.task_ref = task_ref return task_ref self.stubs.Set(self.conn._session, "_call_method", fake_call_method) self.stubs.Set(self.conn._session, "_wait_for_task", fake_wait_for_task) self.assertRaises(exception.NovaException, self._create_vm) self.assertFalse(vmwareapi_fake.get_file(cached_image)) self.assertFalse(vmwareapi_fake.get_file(tmp_file)) def test_spawn_disk_invalid_disk_size(self): self.mox.StubOutWithMock(vmware_images, 'get_vmdk_size_and_properties') result = [82 * units.Gi, {"vmware_ostype": "otherGuest", "vmware_adaptertype": "lsiLogic", "vmware_disktype": "sparse"}] vmware_images.get_vmdk_size_and_properties( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(result) self.mox.ReplayAll() self.assertRaises(exception.InstanceUnacceptable, self._create_vm) def test_spawn_invalid_disk_format(self): self._create_instance() self.image['disk_format'] = 'invalid' self.assertRaises(exception.InvalidDiskFormat, self.conn.spawn, self.context, self.instance, self.image, injected_files=[], admin_password=None, network_info=self.network_info, block_device_info=None) def test_spawn_with_move_file_exists_exception(self): # The test will validate that the spawn completes # successfully. The "MoveDatastoreFile_Task" will # raise an file exists exception. The flag # self.exception will be checked to see that # the exception has indeed been raised. def fake_wait_for_task(task_ref): if task_ref == self.task_ref: self.task_ref = None self.exception = True raise error_util.FileAlreadyExistsException() return self.wait_task(task_ref) def fake_call_method(module, method, *args, **kwargs): task_ref = self.call_method(module, method, *args, **kwargs) if method == "MoveDatastoreFile_Task": self.task_ref = task_ref return task_ref with contextlib.nested( mock.patch.object(self.conn._session, '_wait_for_task', fake_wait_for_task), mock.patch.object(self.conn._session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.assertTrue(self.exception) def test_spawn_with_move_general_exception(self): # The test will validate that the spawn completes # successfully. The "MoveDatastoreFile_Task" will # raise a general exception. The flag self.exception # will be checked to see that the exception has # indeed been raised. def fake_wait_for_task(task_ref): if task_ref == self.task_ref: self.task_ref = None self.exception = True raise error_util.VMwareDriverException('Exception!') return self.wait_task(task_ref) def fake_call_method(module, method, *args, **kwargs): task_ref = self.call_method(module, method, *args, **kwargs) if method == "MoveDatastoreFile_Task": self.task_ref = task_ref return task_ref with contextlib.nested( mock.patch.object(self.conn._session, '_wait_for_task', fake_wait_for_task), mock.patch.object(self.conn._session, '_call_method', fake_call_method) ) as (_wait_for_task, _call_method): self.assertRaises(error_util.VMwareDriverException, self._create_vm) self.assertTrue(self.exception) def test_spawn_with_move_poll_exception(self): self.call_method = self.conn._session._call_method def fake_call_method(module, method, *args, **kwargs): task_ref = self.call_method(module, method, *args, **kwargs) if method == "MoveDatastoreFile_Task": task_mdo = vmwareapi_fake.create_task(method, "error") return task_mdo.obj return task_ref with ( mock.patch.object(self.conn._session, '_call_method', fake_call_method) ): self.assertRaises(error_util.VMwareDriverException, self._create_vm) def test_spawn_with_move_file_exists_poll_exception(self): # The test will validate that the spawn completes # successfully. The "MoveDatastoreFile_Task" will # raise a file exists exception. The flag self.exception # will be checked to see that the exception has # indeed been raised. def fake_call_method(module, method, *args, **kwargs): task_ref = self.call_method(module, method, *args, **kwargs) if method == "MoveDatastoreFile_Task": self.exception = True task_mdo = vmwareapi_fake.create_task(method, "error", error_fault=vmwareapi_fake.FileAlreadyExists()) return task_mdo.obj return task_ref with ( mock.patch.object(self.conn._session, '_call_method', fake_call_method) ): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.assertTrue(self.exception) def _spawn_attach_volume_vmdk(self, set_image_ref=True, vc_support=False): self._create_instance(set_image_ref=set_image_ref) self.mox.StubOutWithMock(block_device, 'volume_in_mapping') self.mox.StubOutWithMock(v_driver, 'block_device_info_get_mapping') connection_info = self._test_vmdk_connection_info('vmdk') root_disk = [{'connection_info': connection_info}] v_driver.block_device_info_get_mapping( mox.IgnoreArg()).AndReturn(root_disk) if vc_support: self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_get_res_pool_of_vm') volumeops.VMwareVolumeOps._get_res_pool_of_vm( mox.IgnoreArg()).AndReturn('fake_res_pool') self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_relocate_vmdk_volume') volumeops.VMwareVolumeOps._relocate_vmdk_volume(mox.IgnoreArg(), 'fake_res_pool', mox.IgnoreArg()) self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, 'attach_volume') volumeops.VMwareVolumeOps.attach_volume(connection_info, self.instance, mox.IgnoreArg()) self.mox.ReplayAll() block_device_info = {'mount_device': 'vda'} self.conn.spawn(self.context, self.instance, self.image, injected_files=[], admin_password=None, network_info=self.network_info, block_device_info=block_device_info) def test_spawn_attach_volume_vmdk(self): self._spawn_attach_volume_vmdk() def test_spawn_attach_volume_vmdk_no_image_ref(self): self._spawn_attach_volume_vmdk(set_image_ref=False) def test_spawn_attach_volume_iscsi(self): self._create_instance() self.mox.StubOutWithMock(block_device, 'volume_in_mapping') self.mox.StubOutWithMock(v_driver, 'block_device_info_get_mapping') connection_info = self._test_vmdk_connection_info('iscsi') root_disk = [{'connection_info': connection_info}] v_driver.block_device_info_get_mapping( mox.IgnoreArg()).AndReturn(root_disk) self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, 'attach_volume') volumeops.VMwareVolumeOps.attach_volume(connection_info, self.instance, mox.IgnoreArg()) self.mox.ReplayAll() block_device_info = {'mount_device': 'vda'} self.conn.spawn(self.context, self.instance, self.image, injected_files=[], admin_password=None, network_info=self.network_info, block_device_info=block_device_info) def mock_upload_image(self, context, image, instance, **kwargs): self.assertEqual(image, 'Test-Snapshot') self.assertEqual(instance, self.instance) self.assertEqual(kwargs['disk_type'], 'preallocated') def test_get_vm_ref_using_extra_config(self): self._create_vm() vm_ref = vm_util._get_vm_ref_from_extraconfig(self.conn._session, self.instance['uuid']) self.assertIsNotNone(vm_ref, 'VM Reference cannot be none') # Disrupt the fake Virtual Machine object so that extraConfig # cannot be matched. fake_vm = vmwareapi_fake._get_objects("VirtualMachine").objects[0] fake_vm.get('config.extraConfig["nvp.vm-uuid"]').value = "" # We should not get a Virtual Machine through extraConfig. vm_ref = vm_util._get_vm_ref_from_extraconfig(self.conn._session, self.instance['uuid']) self.assertIsNone(vm_ref, 'VM Reference should be none') # Check if we can find the Virtual Machine using the name. vm_ref = vm_util.get_vm_ref(self.conn._session, self.instance) self.assertIsNotNone(vm_ref, 'VM Reference cannot be none') def test_search_vm_ref_by_identifier(self): self._create_vm() vm_ref = vm_util.search_vm_ref_by_identifier(self.conn._session, self.instance['uuid']) self.assertIsNotNone(vm_ref, 'VM Reference cannot be none') fake_vm = vmwareapi_fake._get_objects("VirtualMachine").objects[0] fake_vm.set("summary.config.instanceUuid", "foo") fake_vm.set("name", "foo") fake_vm.get('config.extraConfig["nvp.vm-uuid"]').value = "foo" self.assertIsNone(vm_util.search_vm_ref_by_identifier( self.conn._session, self.instance['uuid']), "VM Reference should be none") self.assertIsNotNone( vm_util.search_vm_ref_by_identifier(self.conn._session, "foo"), "VM Reference should not be none") def test_get_object_for_optionvalue(self): self._create_vm() vms = self.conn._session._call_method(vim_util, "get_objects", "VirtualMachine", ['config.extraConfig["nvp.vm-uuid"]']) vm_ref = vm_util._get_object_for_optionvalue(vms, self.instance["uuid"]) self.assertIsNotNone(vm_ref, 'VM Reference cannot be none') def _test_snapshot(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) with mock.patch.object(vmware_images, 'upload_image', self.mock_upload_image): self.conn.snapshot(self.context, self.instance, "Test-Snapshot", func_call_matcher.call) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.assertIsNone(func_call_matcher.match()) def test_snapshot(self): self._create_vm() self._test_snapshot() def test_snapshot_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.snapshot, self.context, self.instance, "Test-Snapshot", lambda *args, **kwargs: None) def test_snapshot_delete_vm_snapshot(self): self._create_vm() fake_vm = vmwareapi_fake._get_objects("VirtualMachine").objects[0].obj snapshot_ref = vmwareapi_fake.ManagedObjectReference( value="Snapshot-123", name="VirtualMachineSnapshot") self.mox.StubOutWithMock(vmops.VMwareVMOps, '_create_vm_snapshot') self.conn._vmops._create_vm_snapshot( self.instance, fake_vm).AndReturn(snapshot_ref) self.mox.StubOutWithMock(vmops.VMwareVMOps, '_delete_vm_snapshot') self.conn._vmops._delete_vm_snapshot( self.instance, fake_vm, snapshot_ref).AndReturn(None) self.mox.ReplayAll() self._test_snapshot() def test_reboot(self): self._create_vm() info = self.conn.get_info({'name': 1, 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) reboot_type = "SOFT" self.conn.reboot(self.context, self.instance, self.network_info, reboot_type) info = self.conn.get_info({'name': 1, 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_reboot_with_uuid(self): """Test fall back to use name when can't find by uuid.""" self._create_vm() info = self.conn.get_info({'name': 'fake-name', 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) reboot_type = "SOFT" self.conn.reboot(self.context, self.instance, self.network_info, reboot_type) info = self.conn.get_info({'name': 'fake-name', 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_reboot_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.reboot, self.context, self.instance, self.network_info, 'SOFT') def test_poll_rebooting_instances(self): self.mox.StubOutWithMock(compute_api.API, 'reboot') compute_api.API.reboot(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self._create_vm() instances = [self.instance] self.conn.poll_rebooting_instances(60, instances) def test_reboot_not_poweredon(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.conn.suspend(self.instance) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SUSPENDED) self.assertRaises(exception.InstanceRebootFailure, self.conn.reboot, self.context, self.instance, self.network_info, 'SOFT') def test_suspend(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.conn.suspend(self.instance) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SUSPENDED) def test_suspend_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.suspend, self.instance) def test_resume(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.conn.suspend(self.instance) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SUSPENDED) self.conn.resume(self.context, self.instance, self.network_info) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_resume_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.resume, self.context, self.instance, self.network_info) def test_resume_not_suspended(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.assertRaises(exception.InstanceResumeFailure, self.conn.resume, self.context, self.instance, self.network_info) def test_power_on(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.conn.power_off(self.instance) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SHUTDOWN) self.conn.power_on(self.context, self.instance, self.network_info) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_power_on_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.power_on, self.context, self.instance, self.network_info) def test_power_off(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.conn.power_off(self.instance) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SHUTDOWN) def test_power_off_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.power_off, self.instance) def test_power_off_suspended(self): self._create_vm() self.conn.suspend(self.instance) info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SUSPENDED) self.assertRaises(exception.InstancePowerOffFailure, self.conn.power_off, self.instance) def test_resume_state_on_host_boot(self): self._create_vm() self.mox.StubOutWithMock(vm_util, 'get_vm_state_from_name') self.mox.StubOutWithMock(self.conn, "reboot") vm_util.get_vm_state_from_name(mox.IgnoreArg(), self.instance['uuid']).AndReturn("poweredOff") self.conn.reboot(self.context, self.instance, 'network_info', 'hard', None) self.mox.ReplayAll() self.conn.resume_state_on_host_boot(self.context, self.instance, 'network_info') def test_resume_state_on_host_boot_no_reboot_1(self): """Don't call reboot on instance which is poweredon.""" self._create_vm() self.mox.StubOutWithMock(vm_util, 'get_vm_state_from_name') self.mox.StubOutWithMock(self.conn, 'reboot') vm_util.get_vm_state_from_name(mox.IgnoreArg(), self.instance['uuid']).AndReturn("poweredOn") self.mox.ReplayAll() self.conn.resume_state_on_host_boot(self.context, self.instance, 'network_info') def test_resume_state_on_host_boot_no_reboot_2(self): """Don't call reboot on instance which is suspended.""" self._create_vm() self.mox.StubOutWithMock(vm_util, 'get_vm_state_from_name') self.mox.StubOutWithMock(self.conn, 'reboot') vm_util.get_vm_state_from_name(mox.IgnoreArg(), self.instance['uuid']).AndReturn("suspended") self.mox.ReplayAll() self.conn.resume_state_on_host_boot(self.context, self.instance, 'network_info') def test_get_info(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_destroy(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) instances = self.conn.list_instances() self.assertEqual(len(instances), 1) self.conn.destroy(self.context, self.instance, self.network_info) instances = self.conn.list_instances() self.assertEqual(len(instances), 0) self.assertIsNone(vm_util.vm_ref_cache_get(self.uuid)) def test_destroy_no_datastore(self): self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) instances = self.conn.list_instances() self.assertEqual(len(instances), 1) # Overwrite the vmPathName vms = vmwareapi_fake._get_objects("VirtualMachine") vm = vms.objects[0] vm.set("config.files.vmPathName", None) self.conn.destroy(self.context, self.instance, self.network_info) instances = self.conn.list_instances() self.assertEqual(len(instances), 0) def test_destroy_non_existent(self): self._create_instance() self.assertIsNone(self.conn.destroy(self.context, self.instance, self.network_info)) def _rescue(self, config_drive=False): def fake_attach_disk_to_vm(vm_ref, instance, adapter_type, disk_type, vmdk_path=None, disk_size=None, linked_clone=False, controller_key=None, unit_number=None, device_name=None): info = self.conn.get_info(instance) self._check_vm_info(info, power_state.SHUTDOWN) if config_drive: def fake_create_config_drive(instance, injected_files, password, data_store_name, folder, instance_uuid, cookies): self.assertTrue(uuidutils.is_uuid_like(instance['uuid'])) self.stubs.Set(self.conn._vmops, '_create_config_drive', fake_create_config_drive) self._create_vm() info = self.conn.get_info({'name': 1, 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.stubs.Set(self.conn._volumeops, "attach_disk_to_vm", fake_attach_disk_to_vm) self.conn.rescue(self.context, self.instance, self.network_info, self.image, 'fake-password') info = self.conn.get_info({'name': '1-rescue', 'uuid': '%s-rescue' % self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) info = self.conn.get_info({'name': 1, 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.SHUTDOWN) self.assertIsNotNone(vm_util.vm_ref_cache_get('%s-rescue' % self.uuid)) def test_rescue(self): self._rescue() inst_file_path = '[%s] %s/%s.vmdk' % (self.ds, self.uuid, self.uuid) self.assertTrue(vmwareapi_fake.get_file(inst_file_path)) rescue_file_path = '[%s] %s-rescue/%s-rescue.vmdk' % (self.ds, self.uuid, self.uuid) self.assertTrue(vmwareapi_fake.get_file(rescue_file_path)) def test_rescue_with_config_drive(self): self.flags(force_config_drive=True) self._rescue(config_drive=True) def test_unrescue(self): self._rescue() def fake_detach_disk_from_vm(*args, **kwargs): pass self.stubs.Set(self.conn._volumeops, "detach_disk_from_vm", fake_detach_disk_from_vm) self.conn.unrescue(self.instance, None) info = self.conn.get_info({'name': 1, 'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_pause(self): # Tests that the VMwareESXDriver does not implement the pause method. self.assertRaises(NotImplementedError, self.conn.pause, instance=None) def test_unpause(self): # Tests that the VMwareESXDriver does not implement the unpause method. self.assertRaises(NotImplementedError, self.conn.unpause, instance=None) def test_get_diagnostics(self): self._create_vm() expected = {'memoryReservation': 0, 'suspendInterval': 0, 'maxCpuUsage': 2000, 'toolsInstallerMounted': False, 'consumedOverheadMemory': 20, 'numEthernetCards': 1, 'numCpu': 1, 'featureRequirement': [{'key': 'cpuid.AES'}], 'memoryOverhead': 21417984, 'guestMemoryUsage': 0, 'connectionState': 'connected', 'memorySizeMB': 512, 'balloonedMemory': 0, 'vmPathName': 'fake_path', 'template': False, 'overallCpuUsage': 0, 'powerState': 'poweredOn', 'cpuReservation': 0, 'overallCpuDemand': 0, 'numVirtualDisks': 1, 'hostMemoryUsage': 141} expected = dict([('vmware:' + k, v) for k, v in expected.items()]) self.assertThat( self.conn.get_diagnostics({'name': 1, 'uuid': self.uuid, 'node': self.instance_node}), matchers.DictMatches(expected)) def test_get_console_output(self): self.assertRaises(NotImplementedError, self.conn.get_console_output, None, None) def _test_finish_migration(self, power_on, resize_instance=False): """Tests the finish_migration method on vmops.""" self.power_on_called = False self.wait_for_task = False self.wait_task = self.conn._session._wait_for_task def fake_power_on(instance): self.assertEqual(self.instance, instance) self.power_on_called = True def fake_vmops_update_instance_progress(context, instance, step, total_steps): self.assertEqual(self.context, context) self.assertEqual(self.instance, instance) self.assertEqual(4, step) self.assertEqual(vmops.RESIZE_TOTAL_STEPS, total_steps) if resize_instance: def fake_wait_for_task(task_ref): self.wait_for_task = True return self.wait_task(task_ref) self.stubs.Set(self.conn._session, "_wait_for_task", fake_wait_for_task) self.stubs.Set(self.conn._vmops, "_power_on", fake_power_on) self.stubs.Set(self.conn._vmops, "_update_instance_progress", fake_vmops_update_instance_progress) # setup the test instance in the database self._create_vm() # perform the migration on our stubbed methods self.conn.finish_migration(context=self.context, migration=None, instance=self.instance, disk_info=None, network_info=None, block_device_info=None, resize_instance=resize_instance, image_meta=None, power_on=power_on) if resize_instance: self.assertTrue(self.wait_for_task) else: self.assertFalse(self.wait_for_task) def test_finish_migration_power_on(self): self.assertRaises(NotImplementedError, self._test_finish_migration, power_on=True) def test_finish_migration_power_off(self): self.assertRaises(NotImplementedError, self._test_finish_migration, power_on=False) def test_confirm_migration(self): self._create_vm() self.assertRaises(NotImplementedError, self.conn.confirm_migration, self.context, self.instance, None) def _test_finish_revert_migration(self, power_on): """Tests the finish_revert_migration method on vmops.""" # setup the test instance in the database self._create_vm() self.power_on_called = False self.vm_name = str(self.instance['name']) + '-orig' def fake_power_on(instance): self.assertEqual(self.instance, instance) self.power_on_called = True def fake_get_orig_vm_name_label(instance): self.assertEqual(self.instance, instance) return self.vm_name def fake_get_vm_ref_from_name(session, vm_name): self.assertEqual(self.vm_name, vm_name) return vmwareapi_fake._get_objects("VirtualMachine").objects[0] def fake_get_vm_ref_from_uuid(session, vm_uuid): return vmwareapi_fake._get_objects("VirtualMachine").objects[0] def fake_call_method(*args, **kwargs): pass def fake_wait_for_task(*args, **kwargs): pass self.stubs.Set(self.conn._vmops, "_power_on", fake_power_on) self.stubs.Set(self.conn._vmops, "_get_orig_vm_name_label", fake_get_orig_vm_name_label) self.stubs.Set(vm_util, "_get_vm_ref_from_uuid", fake_get_vm_ref_from_uuid) self.stubs.Set(vm_util, "get_vm_ref_from_name", fake_get_vm_ref_from_name) self.stubs.Set(self.conn._session, "_call_method", fake_call_method) self.stubs.Set(self.conn._session, "_wait_for_task", fake_wait_for_task) # perform the revert on our stubbed methods self.conn.finish_revert_migration(self.context, instance=self.instance, network_info=None, power_on=power_on) def test_finish_revert_migration_power_on(self): self.assertRaises(NotImplementedError, self._test_finish_migration, power_on=True) def test_finish_revert_migration_power_off(self): self.assertRaises(NotImplementedError, self._test_finish_migration, power_on=False) def test_get_console_pool_info(self): info = self.conn.get_console_pool_info("console_type") self.assertEqual(info['address'], 'test_url') self.assertEqual(info['username'], 'test_username') self.assertEqual(info['password'], 'test_pass') def test_get_vnc_console_non_existent(self): self._create_instance() self.assertRaises(exception.InstanceNotFound, self.conn.get_vnc_console, self.context, self.instance) def _test_get_vnc_console(self): self._create_vm() fake_vm = vmwareapi_fake._get_objects("VirtualMachine").objects[0] OptionValue = collections.namedtuple('OptionValue', ['key', 'value']) opt_val = OptionValue(key='', value=5906) fake_vm.set(vm_util.VNC_CONFIG_KEY, opt_val) vnc_dict = self.conn.get_vnc_console(self.context, self.instance) self.assertEqual(vnc_dict['host'], self.vnc_host) self.assertEqual(vnc_dict['port'], 5906) def test_get_vnc_console(self): self._test_get_vnc_console() def test_get_vnc_console_noport(self): self._create_vm() fake_vm = vmwareapi_fake._get_objects("VirtualMachine").objects[0] self.assertRaises(exception.ConsoleTypeUnavailable, self.conn.get_vnc_console, self.context, self.instance) def test_host_ip_addr(self): self.assertEqual(self.conn.get_host_ip_addr(), "test_url") def test_get_volume_connector(self): self._create_vm() connector_dict = self.conn.get_volume_connector(self.instance) fake_vm = vmwareapi_fake._get_objects("VirtualMachine").objects[0] fake_vm_id = fake_vm.obj.value self.assertEqual(connector_dict['ip'], 'test_url') self.assertEqual(connector_dict['initiator'], 'iscsi-name') self.assertEqual(connector_dict['host'], 'test_url') self.assertEqual(connector_dict['instance'], fake_vm_id) def _test_vmdk_connection_info(self, type): return {'driver_volume_type': type, 'serial': 'volume-fake-id', 'data': {'volume': 'vm-10', 'volume_id': 'volume-fake-id'}} def test_volume_attach_vmdk(self): self._create_vm() connection_info = self._test_vmdk_connection_info('vmdk') mount_point = '/dev/vdc' self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_attach_volume_vmdk') volumeops.VMwareVolumeOps._attach_volume_vmdk(connection_info, self.instance, mount_point) self.mox.ReplayAll() self.conn.attach_volume(None, connection_info, self.instance, mount_point) def test_volume_detach_vmdk(self): self._create_vm() connection_info = self._test_vmdk_connection_info('vmdk') mount_point = '/dev/vdc' self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_detach_volume_vmdk') volumeops.VMwareVolumeOps._detach_volume_vmdk(connection_info, self.instance, mount_point) self.mox.ReplayAll() self.conn.detach_volume(connection_info, self.instance, mount_point, encryption=None) def test_attach_vmdk_disk_to_vm(self): self._create_vm() connection_info = self._test_vmdk_connection_info('vmdk') mount_point = '/dev/vdc' # create fake backing info volume_device = vmwareapi_fake.DataObject() volume_device.backing = vmwareapi_fake.DataObject() volume_device.backing.fileName = 'fake_path' self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_get_vmdk_base_volume_device') volumeops.VMwareVolumeOps._get_vmdk_base_volume_device( mox.IgnoreArg()).AndReturn(volume_device) self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, 'attach_disk_to_vm') volumeops.VMwareVolumeOps.attach_disk_to_vm(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), mox.IgnoreArg(), vmdk_path='fake_path') self.mox.ReplayAll() self.conn.attach_volume(None, connection_info, self.instance, mount_point) def test_detach_vmdk_disk_from_vm(self): self._create_vm() connection_info = self._test_vmdk_connection_info('vmdk') mount_point = '/dev/vdc' self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_get_volume_uuid') volumeops.VMwareVolumeOps._get_volume_uuid(mox.IgnoreArg(), 'volume-fake-id').AndReturn('fake_disk_uuid') self.mox.StubOutWithMock(vm_util, 'get_vmdk_backed_disk_device') vm_util.get_vmdk_backed_disk_device(mox.IgnoreArg(), 'fake_disk_uuid').AndReturn('fake_device') self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_consolidate_vmdk_volume') volumeops.VMwareVolumeOps._consolidate_vmdk_volume(self.instance, mox.IgnoreArg(), 'fake_device', mox.IgnoreArg()) self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, 'detach_disk_from_vm') volumeops.VMwareVolumeOps.detach_disk_from_vm(mox.IgnoreArg(), self.instance, mox.IgnoreArg()) self.mox.ReplayAll() self.conn.detach_volume(connection_info, self.instance, mount_point, encryption=None) def test_volume_attach_iscsi(self): self._create_vm() connection_info = self._test_vmdk_connection_info('iscsi') mount_point = '/dev/vdc' self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_attach_volume_iscsi') volumeops.VMwareVolumeOps._attach_volume_iscsi(connection_info, self.instance, mount_point) self.mox.ReplayAll() self.conn.attach_volume(None, connection_info, self.instance, mount_point) def test_volume_detach_iscsi(self): self._create_vm() connection_info = self._test_vmdk_connection_info('iscsi') mount_point = '/dev/vdc' self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, '_detach_volume_iscsi') volumeops.VMwareVolumeOps._detach_volume_iscsi(connection_info, self.instance, mount_point) self.mox.ReplayAll() self.conn.detach_volume(connection_info, self.instance, mount_point, encryption=None) def test_attach_iscsi_disk_to_vm(self): self._create_vm() connection_info = self._test_vmdk_connection_info('iscsi') connection_info['data']['target_portal'] = 'fake_target_host:port' connection_info['data']['target_iqn'] = 'fake_target_iqn' mount_point = '/dev/vdc' discover = ('fake_name', 'fake_uuid') self.mox.StubOutWithMock(volume_util, 'find_st') # simulate target not found volume_util.find_st(mox.IgnoreArg(), connection_info['data'], mox.IgnoreArg()).AndReturn((None, None)) self.mox.StubOutWithMock(volume_util, '_add_iscsi_send_target_host') # rescan gets called with target portal volume_util.rescan_iscsi_hba( self.conn._session, target_portal=connection_info['data']['target_portal']) # simulate target found volume_util.find_st(mox.IgnoreArg(), connection_info['data'], mox.IgnoreArg()).AndReturn(discover) self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, 'attach_disk_to_vm') volumeops.VMwareVolumeOps.attach_disk_to_vm(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), 'rdmp', device_name=mox.IgnoreArg()) self.mox.ReplayAll() self.conn.attach_volume(None, connection_info, self.instance, mount_point) def test_rescan_iscsi_hba(self): fake_target_portal = 'fake_target_host:port' host_storage_sys = vmwareapi_fake._get_objects( "HostStorageSystem").objects[0] iscsi_hba_array = host_storage_sys.get('storageDeviceInfo' '.hostBusAdapter') iscsi_hba = iscsi_hba_array.HostHostBusAdapter[0] # Check the host system does not have the send target self.assertRaises(AttributeError, getattr, iscsi_hba, 'configuredSendTarget') # Rescan HBA with the target portal volume_util.rescan_iscsi_hba(self.conn._session, None, fake_target_portal) # Check if HBA has the target portal configured self.assertEqual('fake_target_host', iscsi_hba.configuredSendTarget[0].address) # Rescan HBA with same portal volume_util.rescan_iscsi_hba(self.conn._session, None, fake_target_portal) self.assertEqual(1, len(iscsi_hba.configuredSendTarget)) def test_find_st(self): data = {'target_portal': 'fake_target_host:port', 'target_iqn': 'fake_target_iqn'} host = vmwareapi_fake._get_objects('HostSystem').objects[0] host._add_iscsi_target(data) result = volume_util.find_st(self.conn._session, data) self.assertEqual(('fake-device', 'fake-uuid'), result) def test_detach_iscsi_disk_from_vm(self): self._create_vm() connection_info = self._test_vmdk_connection_info('iscsi') connection_info['data']['target_portal'] = 'fake_target_portal' connection_info['data']['target_iqn'] = 'fake_target_iqn' mount_point = '/dev/vdc' find = ('fake_name', 'fake_uuid') self.mox.StubOutWithMock(volume_util, 'find_st') volume_util.find_st(mox.IgnoreArg(), connection_info['data'], mox.IgnoreArg()).AndReturn(find) self.mox.StubOutWithMock(vm_util, 'get_rdm_disk') device = 'fake_device' vm_util.get_rdm_disk(mox.IgnoreArg(), 'fake_uuid').AndReturn(device) self.mox.StubOutWithMock(volumeops.VMwareVolumeOps, 'detach_disk_from_vm') volumeops.VMwareVolumeOps.detach_disk_from_vm(mox.IgnoreArg(), self.instance, device, destroy_disk=True) self.mox.ReplayAll() self.conn.detach_volume(connection_info, self.instance, mount_point, encryption=None) def test_connection_info_get(self): self._create_vm() connector = self.conn.get_volume_connector(self.instance) self.assertEqual(connector['ip'], 'test_url') self.assertEqual(connector['host'], 'test_url') self.assertEqual(connector['initiator'], 'iscsi-name') self.assertIn('instance', connector) def test_connection_info_get_after_destroy(self): self._create_vm() self.conn.destroy(self.context, self.instance, self.network_info) connector = self.conn.get_volume_connector(self.instance) self.assertEqual(connector['ip'], 'test_url') self.assertEqual(connector['host'], 'test_url') self.assertEqual(connector['initiator'], 'iscsi-name') self.assertNotIn('instance', connector) def test_refresh_instance_security_rules(self): self.assertRaises(NotImplementedError, self.conn.refresh_instance_security_rules, instance=None) def test_image_aging_image_used(self): self._create_vm() all_instances = [self.instance] self.conn.manage_image_cache(self.context, all_instances) self._cached_files_exist() def _get_timestamp_filename(self): return '%s%s' % (imagecache.TIMESTAMP_PREFIX, timeutils.strtime(at=self.old_time, fmt=imagecache.TIMESTAMP_FORMAT)) def _override_time(self): self.old_time = datetime.datetime(2012, 11, 22, 12, 00, 00) def _fake_get_timestamp_filename(fake): return self._get_timestamp_filename() self.stubs.Set(imagecache.ImageCacheManager, '_get_timestamp_filename', _fake_get_timestamp_filename) def _timestamp_file_exists(self, exists=True): timestamp = ('[%s] vmware_base/fake_image_uuid/%s/' % (self.ds, self._get_timestamp_filename())) if exists: self.assertTrue(vmwareapi_fake.get_file(timestamp)) else: self.assertFalse(vmwareapi_fake.get_file(timestamp)) def _image_aging_image_marked_for_deletion(self): self._create_vm(uuid=uuidutils.generate_uuid()) self._cached_files_exist() all_instances = [] self.conn.manage_image_cache(self.context, all_instances) self._cached_files_exist() self._timestamp_file_exists() def test_image_aging_image_marked_for_deletion(self): self._override_time() self._image_aging_image_marked_for_deletion() def _timestamp_file_removed(self): self._override_time() self._image_aging_image_marked_for_deletion() self._create_vm(num_instances=2, uuid=uuidutils.generate_uuid()) self._timestamp_file_exists(exists=False) def test_timestamp_file_removed_spawn(self): self._timestamp_file_removed() def test_timestamp_file_removed_aging(self): self._timestamp_file_removed() ts = self._get_timestamp_filename() ts_path = ('[%s] vmware_base/fake_image_uuid/%s/' % (self.ds, ts)) vmwareapi_fake._add_file(ts_path) self._timestamp_file_exists() all_instances = [self.instance] self.conn.manage_image_cache(self.context, all_instances) self._timestamp_file_exists(exists=False) def test_image_aging_disabled(self): self._override_time() self.flags(remove_unused_base_images=False) self._create_vm() self._cached_files_exist() all_instances = [] self.conn.manage_image_cache(self.context, all_instances) self._cached_files_exist(exists=True) self._timestamp_file_exists(exists=False) def _image_aging_aged(self, aging_time=100): self._override_time() cur_time = datetime.datetime(2012, 11, 22, 12, 00, 10) self.flags(remove_unused_original_minimum_age_seconds=aging_time) self._image_aging_image_marked_for_deletion() all_instances = [] timeutils.set_time_override(cur_time) self.conn.manage_image_cache(self.context, all_instances) def test_image_aging_aged(self): self._image_aging_aged(aging_time=8) self._cached_files_exist(exists=False) def test_image_aging_not_aged(self): self._image_aging_aged() self._cached_files_exist() class VMwareAPIHostTestCase(test.NoDBTestCase): """Unit tests for Vmware API host calls.""" def setUp(self): super(VMwareAPIHostTestCase, self).setUp() self.flags(image_cache_subdirectory_name='vmware_base') vm_util.vm_refs_cache_reset() self.flags(host_ip='test_url', host_username='test_username', host_password='test_pass', group='vmware') vmwareapi_fake.reset() stubs.set_stubs(self.stubs) self.conn = driver.VMwareESXDriver(False) def tearDown(self): super(VMwareAPIHostTestCase, self).tearDown() vmwareapi_fake.cleanup() def test_host_state(self): stats = self.conn.get_host_stats() self.assertEqual(stats['vcpus'], 16) self.assertEqual(stats['disk_total'], 1024) self.assertEqual(stats['disk_available'], 500) self.assertEqual(stats['disk_used'], 1024 - 500) self.assertEqual(stats['host_memory_total'], 1024) self.assertEqual(stats['host_memory_free'], 1024 - 500) self.assertEqual(stats['hypervisor_version'], 5000000) supported_instances = [('i686', 'vmware', 'hvm'), ('x86_64', 'vmware', 'hvm')] self.assertEqual(stats['supported_instances'], supported_instances) def _test_host_action(self, method, action, expected=None): result = method('host', action) self.assertEqual(result, expected) def test_host_reboot(self): self._test_host_action(self.conn.host_power_action, 'reboot') def test_host_shutdown(self): self._test_host_action(self.conn.host_power_action, 'shutdown') def test_host_startup(self): self._test_host_action(self.conn.host_power_action, 'startup') def test_host_maintenance_on(self): self._test_host_action(self.conn.host_maintenance_mode, True) def test_host_maintenance_off(self): self._test_host_action(self.conn.host_maintenance_mode, False) def test_get_host_uptime(self): result = self.conn.get_host_uptime('host') self.assertEqual('Please refer to test_url for the uptime', result) class VMwareAPIVCDriverTestCase(VMwareAPIVMTestCase): def setUp(self): super(VMwareAPIVCDriverTestCase, self).setUp() cluster_name = 'test_cluster' cluster_name2 = 'test_cluster2' self.flags(cluster_name=[cluster_name, cluster_name2], api_retry_count=1, task_poll_interval=10, datastore_regex='.*', group='vmware') self.flags(vnc_enabled=False, image_cache_subdirectory_name='vmware_base') vmwareapi_fake.reset(vc=True) self.conn = driver.VMwareVCDriver(None, False) self.node_name = self.conn._resources.keys()[0] self.node_name2 = self.conn._resources.keys()[1] if cluster_name2 in self.node_name2: self.ds = 'ds1' else: self.ds = 'ds2' self.vnc_host = 'ha-host' def tearDown(self): super(VMwareAPIVCDriverTestCase, self).tearDown() vmwareapi_fake.cleanup() def test_list_instances(self): instances = self.conn.list_instances() self.assertEqual(0, len(instances)) def test_list_instances_from_nodes(self): # Create instance on node1 self._create_vm(self.node_name) # Create instances on the other node self._create_vm(self.node_name2, num_instances=2) self._create_vm(self.node_name2, num_instances=3) node1_vmops = self.conn._get_vmops_for_compute_node(self.node_name) node2_vmops = self.conn._get_vmops_for_compute_node(self.node_name2) self.assertEqual(1, len(node1_vmops.list_instances())) self.assertEqual(2, len(node2_vmops.list_instances())) self.assertEqual(3, len(self.conn.list_instances())) def _setup_mocks_for_session(self, mock_init): mock_init.return_value = None vcdriver = driver.VMwareVCDriver(None, False) vcdriver._session = mock.Mock() return vcdriver @mock.patch('nova.virt.vmwareapi.driver.VMwareVCDriver.__init__') def test_init_host_and_cleanup_host(self, mock_init): vcdriver = self._setup_mocks_for_session(mock_init) vcdriver.init_host("foo") vcdriver._session._create_session.assert_called_once() vcdriver.cleanup_host("foo") vcdriver._session.vim.client.service.Logout.assert_called_once() @mock.patch('nova.virt.vmwareapi.driver.LOG') @mock.patch('nova.virt.vmwareapi.driver.VMwareVCDriver.__init__') def test_cleanup_host_with_no_login(self, mock_init, mock_logger): vcdriver = self._setup_mocks_for_session(mock_init) vcdriver.init_host("foo") vcdriver._session._create_session.assert_called_once() # Not logged in... # observe that no exceptions were thrown mock_sc = mock.Mock() vcdriver._session.vim.retrieve_service_content.return_value = mock_sc web_fault = suds.WebFault(mock.Mock(), mock.Mock()) vcdriver._session.vim.client.service.Logout.side_effect = web_fault vcdriver.cleanup_host("foo") # assert that the mock Logout method was never called vcdriver._session.vim.client.service.Logout.assert_called_once() mock_logger.debug.assert_called_once() def test_host_power_action(self): self.assertRaises(NotImplementedError, self.conn.host_power_action, 'host', 'action') def test_host_maintenance_mode(self): self.assertRaises(NotImplementedError, self.conn.host_maintenance_mode, 'host', 'mode') def test_set_host_enabled(self): self.assertRaises(NotImplementedError, self.conn.set_host_enabled, 'host', 'state') def test_datastore_regex_configured(self): for node in self.conn._resources.keys(): self.assertEqual(self.conn._datastore_regex, self.conn._resources[node]['vmops']._datastore_regex) def test_get_available_resource(self): stats = self.conn.get_available_resource(self.node_name) cpu_info = {"model": ["Intel(R) Xeon(R)", "Intel(R) Xeon(R)"], "vendor": ["Intel", "Intel"], "topology": {"cores": 16, "threads": 32}} self.assertEqual(stats['vcpus'], 32) self.assertEqual(stats['local_gb'], 1024) self.assertEqual(stats['local_gb_used'], 1024 - 500) self.assertEqual(stats['memory_mb'], 1000) self.assertEqual(stats['memory_mb_used'], 500) self.assertEqual(stats['hypervisor_type'], 'VMware vCenter Server') self.assertEqual(stats['hypervisor_version'], 5001000) self.assertEqual(stats['hypervisor_hostname'], self.node_name) self.assertEqual(stats['cpu_info'], jsonutils.dumps(cpu_info)) self.assertEqual(stats['supported_instances'], '[["i686", "vmware", "hvm"], ["x86_64", "vmware", "hvm"]]') def test_invalid_datastore_regex(self): # Tests if we raise an exception for Invalid Regular Expression in # vmware_datastore_regex self.flags(cluster_name=['test_cluster'], datastore_regex='fake-ds(01', group='vmware') self.assertRaises(exception.InvalidInput, driver.VMwareVCDriver, None) def test_get_available_nodes(self): nodelist = self.conn.get_available_nodes() self.assertEqual(len(nodelist), 2) self.assertIn(self.node_name, nodelist) self.assertIn(self.node_name2, nodelist) def test_spawn_multiple_node(self): def fake_is_neutron(): return False self.stubs.Set(nova_utils, 'is_neutron', fake_is_neutron) uuid1 = uuidutils.generate_uuid() uuid2 = uuidutils.generate_uuid() self._create_vm(node=self.node_name, num_instances=1, uuid=uuid1) info = self.conn.get_info({'uuid': uuid1, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) self.conn.destroy(self.context, self.instance, self.network_info) self._create_vm(node=self.node_name2, num_instances=1, uuid=uuid2) info = self.conn.get_info({'uuid': uuid2, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_finish_migration_power_on(self): self._test_finish_migration(power_on=True) self.assertEqual(True, self.power_on_called) def test_finish_migration_power_off(self): self._test_finish_migration(power_on=False) self.assertEqual(False, self.power_on_called) def test_finish_migration_power_on_resize(self): self._test_finish_migration(power_on=True, resize_instance=True) self.assertEqual(True, self.power_on_called) def test_finish_revert_migration_power_on(self): self._test_finish_revert_migration(power_on=True) self.assertEqual(True, self.power_on_called) def test_finish_revert_migration_power_off(self): self._test_finish_revert_migration(power_on=False) self.assertEqual(False, self.power_on_called) def test_snapshot(self): # Ensure VMwareVCVMOps's get_copy_virtual_disk_spec is getting called # two times self.mox.StubOutWithMock(vmops.VMwareVCVMOps, 'get_copy_virtual_disk_spec') self.conn._vmops.get_copy_virtual_disk_spec( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(None) self.conn._vmops.get_copy_virtual_disk_spec( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(None) self.mox.ReplayAll() self._create_vm() self._test_snapshot() def test_snapshot_using_file_manager(self): self._create_vm() uuid_str = uuidutils.generate_uuid() self.mox.StubOutWithMock(uuidutils, 'generate_uuid') uuidutils.generate_uuid().AndReturn(uuid_str) self.mox.StubOutWithMock(ds_util, 'file_delete') # Check calls for delete vmdk and -flat.vmdk pair ds_util.file_delete(mox.IgnoreArg(), "[%s] vmware_temp/%s-flat.vmdk" % (self.ds, uuid_str), mox.IgnoreArg()).AndReturn(None) ds_util.file_delete(mox.IgnoreArg(), "[%s] vmware_temp/%s.vmdk" % (self.ds, uuid_str), mox.IgnoreArg()).AndReturn(None) self.mox.ReplayAll() self._test_snapshot() def test_spawn_invalid_node(self): self._create_instance(node='InvalidNodeName') self.assertRaises(exception.NotFound, self.conn.spawn, self.context, self.instance, self.image, injected_files=[], admin_password=None, network_info=self.network_info, block_device_info=None) def test_spawn_with_sparse_image(self): # Only a sparse disk image triggers the copy self.mox.StubOutWithMock(vmware_images, 'get_vmdk_size_and_properties') result = [1024, {"vmware_ostype": "otherGuest", "vmware_adaptertype": "lsiLogic", "vmware_disktype": "sparse"}] vmware_images.get_vmdk_size_and_properties( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(result) # Ensure VMwareVCVMOps's get_copy_virtual_disk_spec is getting called # two times self.mox.StubOutWithMock(vmops.VMwareVCVMOps, 'get_copy_virtual_disk_spec') self.conn._vmops.get_copy_virtual_disk_spec( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(None) self.conn._vmops.get_copy_virtual_disk_spec( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(None) self.mox.ReplayAll() self._create_vm() info = self.conn.get_info({'uuid': self.uuid, 'node': self.instance_node}) self._check_vm_info(info, power_state.RUNNING) def test_plug_vifs(self): # Check to make sure the method raises NotImplementedError. self._create_instance() self.assertRaises(NotImplementedError, self.conn.plug_vifs, instance=self.instance, network_info=None) def test_unplug_vifs(self): # Check to make sure the method raises NotImplementedError. self._create_instance() self.assertRaises(NotImplementedError, self.conn.unplug_vifs, instance=self.instance, network_info=None) def test_migrate_disk_and_power_off(self): def fake_update_instance_progress(context, instance, step, total_steps): pass def fake_get_host_ref_from_name(dest): return None self._create_vm() vm_ref_orig = vm_util.get_vm_ref(self.conn._session, self.instance) flavor = {'name': 'fake', 'flavorid': 'fake_id'} self.stubs.Set(self.conn._vmops, "_update_instance_progress", fake_update_instance_progress) self.stubs.Set(self.conn._vmops, "_get_host_ref_from_name", fake_get_host_ref_from_name) self.conn.migrate_disk_and_power_off(self.context, self.instance, 'fake_dest', flavor, None) vm_ref = vm_util.get_vm_ref(self.conn._session, self.instance) self.assertNotEqual(vm_ref_orig.value, vm_ref.value, "These should be different") def test_disassociate_vmref_from_instance(self): self._create_vm() vm_ref = vm_util.get_vm_ref(self.conn._session, self.instance) vm_util.disassociate_vmref_from_instance(self.conn._session, self.instance, vm_ref, "-backup") self.assertRaises(exception.InstanceNotFound, vm_util.get_vm_ref, self.conn._session, self.instance) def test_clone_vmref_for_instance(self): self._create_vm() vm_ref = vm_util.get_vm_ref(self.conn._session, self.instance) vm_util.disassociate_vmref_from_instance(self.conn._session, self.instance, vm_ref, "-backup") host_ref = vmwareapi_fake._get_object_refs("HostSystem")[0] ds_ref = vmwareapi_fake._get_object_refs("Datastore")[0] dc_obj = vmwareapi_fake._get_objects("Datacenter").objects[0] vm_util.clone_vmref_for_instance(self.conn._session, self.instance, vm_ref, host_ref, ds_ref, dc_obj.get("vmFolder")) self.assertIsNotNone( vm_util.get_vm_ref(self.conn._session, self.instance), "No VM found") cloned_vm_ref = vm_util.get_vm_ref(self.conn._session, self.instance) self.assertNotEqual(vm_ref.value, cloned_vm_ref.value, "Reference for the cloned VM should be different") vm_obj = vmwareapi_fake._get_vm_mdo(vm_ref) cloned_vm_obj = vmwareapi_fake._get_vm_mdo(cloned_vm_ref) self.assertEqual(vm_obj.name, self.instance['uuid'] + "-backup", "Original VM name should be with suffix -backup") self.assertEqual(cloned_vm_obj.name, self.instance['uuid'], "VM name does not match instance['uuid']") self.assertRaises(error_util.MissingParameter, vm_util.clone_vmref_for_instance, self.conn._session, self.instance, None, host_ref, ds_ref, dc_obj.get("vmFolder")) def test_associate_vmref_for_instance(self): self._create_vm() vm_ref = vm_util.get_vm_ref(self.conn._session, self.instance) # First disassociate the VM from the instance so that we have a VM # to later associate using the associate_vmref_for_instance method vm_util.disassociate_vmref_from_instance(self.conn._session, self.instance, vm_ref, "-backup") # Ensure that the VM is indeed disassociated and that we cannot find # the VM using the get_vm_ref method self.assertRaises(exception.InstanceNotFound, vm_util.get_vm_ref, self.conn._session, self.instance) # Associate the VM back to the instance vm_util.associate_vmref_for_instance(self.conn._session, self.instance, suffix="-backup") # Verify if we can get the VM reference self.assertIsNotNone( vm_util.get_vm_ref(self.conn._session, self.instance), "No VM found") def test_confirm_migration(self): self._create_vm() self.conn.confirm_migration(self.context, self.instance, None) def test_spawn_attach_volume_vmdk(self): self._spawn_attach_volume_vmdk(vc_support=True) def test_spawn_attach_volume_vmdk_no_image_ref(self): self._spawn_attach_volume_vmdk(set_image_ref=False, vc_support=True) def test_pause(self): # Tests that the VMwareVCDriver does not implement the pause method. self._create_instance() self.assertRaises(NotImplementedError, self.conn.pause, self.instance) def test_unpause(self): # Tests that the VMwareVCDriver does not implement the unpause method. self._create_instance() self.assertRaises(NotImplementedError, self.conn.unpause, self.instance) def test_datastore_dc_map(self): vmops = self.conn._resources[self.node_name]['vmops'] self.assertEqual({}, vmops._datastore_dc_mapping) self._create_vm() # currently there are 2 data stores self.assertEqual(2, len(vmops._datastore_dc_mapping)) def test_rollback_live_migration_at_destination(self): with mock.patch.object(self.conn, "destroy") as mock_destroy: self.conn.rollback_live_migration_at_destination(self.context, "instance", [], None) mock_destroy.assert_called_once_with(self.context, "instance", [], None) nova-2014.1/nova/tests/virt/vmwareapi/test_vm_util.py0000664000175400017540000006603112323721477024074 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. # Copyright 2013 Canonical Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import collections import re import mock from nova import exception from nova.openstack.common.gettextutils import _ from nova.openstack.common import units from nova.openstack.common import uuidutils from nova import test from nova.virt.vmwareapi import fake from nova.virt.vmwareapi import vm_util class fake_session(object): def __init__(self, *ret): self.ret = ret self.ind = 0 def _call_method(self, *args): # return fake objects in circular manner self.ind = (self.ind + 1) % len(self.ret) return self.ret[self.ind - 1] def _get_vim(self): fake_vim = fake.DataObject() client = fake.DataObject() client.factory = 'fake_factory' fake_vim.client = client return fake_vim class partialObject(object): def __init__(self, path='fake-path'): self.path = path self.fault = fake.DataObject() class VMwareVMUtilTestCase(test.NoDBTestCase): def setUp(self): super(VMwareVMUtilTestCase, self).setUp() fake.reset() vm_util.vm_refs_cache_reset() def tearDown(self): super(VMwareVMUtilTestCase, self).tearDown() fake.reset() def test_get_datastore_ref_and_name(self): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore()) result = vm_util.get_datastore_ref_and_name( fake_session(fake_objects)) self.assertEqual(result[1], "fake-ds") self.assertEqual(result[2], units.Ti) self.assertEqual(result[3], 500 * units.Gi) def test_get_datastore_ref_and_name_with_regex(self): # Test with a regex that matches with a datastore datastore_valid_regex = re.compile("^openstack.*\d$") fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore("openstack-ds0")) fake_objects.add_object(fake.Datastore("fake-ds0")) fake_objects.add_object(fake.Datastore("fake-ds1")) result = vm_util.get_datastore_ref_and_name( fake_session(fake_objects), None, None, datastore_valid_regex) self.assertEqual("openstack-ds0", result[1]) def test_get_stats_from_cluster(self): ManagedObjectRefs = [fake.ManagedObjectReference("host1", "HostSystem"), fake.ManagedObjectReference("host2", "HostSystem")] hosts = fake._convert_to_array_of_mor(ManagedObjectRefs) respool = fake.ManagedObjectReference("resgroup-11", "ResourcePool") prop_dict = {'host': hosts, 'resourcePool': respool} hardware = fake.DataObject() hardware.numCpuCores = 8 hardware.numCpuThreads = 16 hardware.vendor = "Intel" hardware.cpuModel = "Intel(R) Xeon(R)" runtime_host_1 = fake.DataObject() runtime_host_1.connectionState = "connected" runtime_host_2 = fake.DataObject() runtime_host_2.connectionState = "disconnected" prop_list_host_1 = [fake.Prop(name="hardware_summary", val=hardware), fake.Prop(name="runtime_summary", val=runtime_host_1)] prop_list_host_2 = [fake.Prop(name="hardware_summary", val=hardware), fake.Prop(name="runtime_summary", val=runtime_host_2)] fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.ObjectContent("prop_list_host1", prop_list_host_1)) fake_objects.add_object(fake.ObjectContent("prop_list_host1", prop_list_host_2)) respool_resource_usage = fake.DataObject() respool_resource_usage.maxUsage = 5368709120 respool_resource_usage.overallUsage = 2147483648 session = fake_session() def fake_call_method(*args): if "get_dynamic_properties" in args: return prop_dict elif "get_properties_for_a_collection_of_objects" in args: return fake_objects else: return respool_resource_usage with mock.patch.object(fake_session, '_call_method', fake_call_method): result = vm_util.get_stats_from_cluster(session, "cluster1") cpu_info = {} mem_info = {} cpu_info['vcpus'] = 16 cpu_info['cores'] = 8 cpu_info['vendor'] = ["Intel"] cpu_info['model'] = ["Intel(R) Xeon(R)"] mem_info['total'] = 5120 mem_info['free'] = 3072 expected_stats = {'cpu': cpu_info, 'mem': mem_info} self.assertEqual(expected_stats, result) def test_get_datastore_ref_and_name_with_token(self): regex = re.compile("^ds.*\d$") fake0 = fake.FakeRetrieveResult() fake0.add_object(fake.Datastore("ds0", 10 * units.Gi, 5 * units.Gi)) fake0.add_object(fake.Datastore("foo", 10 * units.Gi, 9 * units.Gi)) setattr(fake0, 'token', 'token-0') fake1 = fake.FakeRetrieveResult() fake1.add_object(fake.Datastore("ds2", 10 * units.Gi, 8 * units.Gi)) fake1.add_object(fake.Datastore("ds3", 10 * units.Gi, 1 * units.Gi)) result = vm_util.get_datastore_ref_and_name( fake_session(fake0, fake1), None, None, regex) self.assertEqual("ds2", result[1]) def test_get_datastore_ref_and_name_with_list(self): # Test with a regex containing whitelist of datastores datastore_valid_regex = re.compile("(openstack-ds0|openstack-ds2)") fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore("openstack-ds0")) fake_objects.add_object(fake.Datastore("openstack-ds1")) fake_objects.add_object(fake.Datastore("openstack-ds2")) result = vm_util.get_datastore_ref_and_name( fake_session(fake_objects), None, None, datastore_valid_regex) self.assertNotEqual("openstack-ds1", result[1]) def test_get_datastore_ref_and_name_with_regex_error(self): # Test with a regex that has no match # Checks if code raises DatastoreNotFound with a specific message datastore_invalid_regex = re.compile("unknown-ds") exp_message = (_("Datastore regex %s did not match any datastores") % datastore_invalid_regex.pattern) fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore("fake-ds0")) fake_objects.add_object(fake.Datastore("fake-ds1")) # assertRaisesRegExp would have been a good choice instead of # try/catch block, but it's available only from Py 2.7. try: vm_util.get_datastore_ref_and_name( fake_session(fake_objects), None, None, datastore_invalid_regex) except exception.DatastoreNotFound as e: self.assertEqual(exp_message, e.args[0]) else: self.fail("DatastoreNotFound Exception was not raised with " "message: %s" % exp_message) def test_get_datastore_ref_and_name_without_datastore(self): self.assertRaises(exception.DatastoreNotFound, vm_util.get_datastore_ref_and_name, fake_session(None), host="fake-host") self.assertRaises(exception.DatastoreNotFound, vm_util.get_datastore_ref_and_name, fake_session(None), cluster="fake-cluster") def test_get_host_ref_from_id(self): fake_host_name = "ha-host" fake_host_sys = fake.HostSystem(fake_host_name) fake_host_id = fake_host_sys.obj.value fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake_host_sys) ref = vm_util.get_host_ref_from_id( fake_session(fake_objects), fake_host_id, ['name']) self.assertIsInstance(ref, fake.HostSystem) self.assertEqual(fake_host_id, ref.obj.value) host_name = vm_util.get_host_name_from_host_ref(ref) self.assertEqual(fake_host_name, host_name) def test_get_host_ref_no_hosts_in_cluster(self): self.assertRaises(exception.NoValidHost, vm_util.get_host_ref, fake_session(""), 'fake_cluster') def test_get_datastore_ref_and_name_no_host_in_cluster(self): self.assertRaises(exception.DatastoreNotFound, vm_util.get_datastore_ref_and_name, fake_session(""), 'fake_cluster') @mock.patch.object(vm_util, '_get_vm_ref_from_vm_uuid', return_value=None) def test_get_host_name_for_vm(self, _get_ref_from_uuid): fake_host = fake.HostSystem() fake_host_id = fake_host.obj.value fake_vm = fake.VirtualMachine(name='vm-123', runtime_host=fake_host.obj) fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake_vm) vm_ref = vm_util.get_vm_ref_from_name( fake_session(fake_objects), 'vm-123') self.assertIsNotNone(vm_ref) host_id = vm_util.get_host_id_from_vm_ref( fake_session(fake_objects), vm_ref) self.assertEqual(fake_host_id, host_id) def test_property_from_property_set(self): ObjectContent = collections.namedtuple('ObjectContent', ['propSet']) DynamicProperty = collections.namedtuple('Property', ['name', 'val']) MoRef = collections.namedtuple('Val', ['value']) good_objects = fake.FakeRetrieveResult() results_good = [ ObjectContent(propSet=[ DynamicProperty(name='name', val=MoRef(value='vm-123'))]), ObjectContent(propSet=[ DynamicProperty(name='foo', val=MoRef(value='bar1')), DynamicProperty( name='runtime.host', val=MoRef(value='host-123')), DynamicProperty(name='foo', val=MoRef(value='bar2')), ]), ObjectContent(propSet=[ DynamicProperty( name='something', val=MoRef(value='thing'))]), ] for result in results_good: good_objects.add_object(result) bad_objects = fake.FakeRetrieveResult() results_bad = [ ObjectContent(propSet=[ DynamicProperty(name='name', val=MoRef(value='vm-123'))]), ObjectContent(propSet=[ DynamicProperty(name='foo', val='bar1'), DynamicProperty(name='foo', val='bar2'), ]), ObjectContent(propSet=[ DynamicProperty( name='something', val=MoRef(value='thing'))]), ] for result in results_bad: bad_objects.add_object(result) prop = vm_util.property_from_property_set( 'runtime.host', good_objects) self.assertIsNotNone(prop) value = prop.val.value self.assertEqual('host-123', value) prop2 = vm_util.property_from_property_set( 'runtime.host', bad_objects) self.assertIsNone(prop2) prop3 = vm_util.property_from_property_set('foo', good_objects) self.assertIsNotNone(prop3) val3 = prop3.val.value self.assertEqual('bar1', val3) prop4 = vm_util.property_from_property_set('foo', bad_objects) self.assertIsNotNone(prop4) self.assertEqual('bar1', prop4.val) def test_get_datastore_ref_and_name_inaccessible_ds(self): data_store = fake.Datastore() data_store.set("summary.accessible", False) fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(data_store) self.assertRaises(exception.DatastoreNotFound, vm_util.get_datastore_ref_and_name, fake_session(fake_objects)) def test_get_resize_spec(self): fake_instance = {'id': 7, 'name': 'fake!', 'uuid': 'bda5fb9e-b347-40e8-8256-42397848cb00', 'vcpus': 2, 'memory_mb': 2048} result = vm_util.get_vm_resize_spec(fake.FakeFactory(), fake_instance) expected = """{'memoryMB': 2048, 'numCPUs': 2, 'obj_name': 'ns0:VirtualMachineConfigSpec'}""" expected = re.sub(r'\s+', '', expected) result = re.sub(r'\s+', '', repr(result)) self.assertEqual(expected, result) def test_get_cdrom_attach_config_spec(self): result = vm_util.get_cdrom_attach_config_spec(fake.FakeFactory(), fake.Datastore(), "/tmp/foo.iso", 200, 0) expected = """{ 'deviceChange': [ { 'device': { 'connectable': { 'allowGuestControl': False, 'startConnected': True, 'connected': True, 'obj_name': 'ns0: VirtualDeviceConnectInfo' }, 'backing': { 'datastore': { "summary.type": "VMFS", "summary.accessible":true, "summary.name": "fake-ds", "summary.capacity": 1099511627776, "summary.freeSpace": 536870912000, "browser": "" }, 'fileName': '/tmp/foo.iso', 'obj_name': 'ns0: VirtualCdromIsoBackingInfo' }, 'controllerKey': 200, 'unitNumber': 0, 'key': -1, 'obj_name': 'ns0: VirtualCdrom' }, 'operation': 'add', 'obj_name': 'ns0: VirtualDeviceConfigSpec' } ], 'obj_name': 'ns0: VirtualMachineConfigSpec' } """ expected = re.sub(r'\s+', '', expected) result = re.sub(r'\s+', '', repr(result)) self.assertEqual(expected, result) def test_lsilogic_controller_spec(self): # Test controller spec returned for lsiLogic sas adapter type config_spec = vm_util.create_controller_spec(fake.FakeFactory(), -101, adapter_type="lsiLogicsas") self.assertEqual("ns0:VirtualLsiLogicSASController", config_spec.device.obj_name) def _vmdk_path_and_adapter_type_devices(self, filename, parent=None): # Test the adapter_type returned for a lsiLogic sas controller controller_key = 1000 disk = fake.VirtualDisk() disk.controllerKey = controller_key disk_backing = fake.VirtualDiskFlatVer2BackingInfo() disk_backing.fileName = filename if parent: disk_backing.parent = parent disk.backing = disk_backing controller = fake.VirtualLsiLogicSASController() controller.key = controller_key devices = [disk, controller] return devices def test_get_vmdk_path_and_adapter_type(self): filename = '[test_datastore] test_file.vmdk' devices = self._vmdk_path_and_adapter_type_devices(filename) vmdk_info = vm_util.get_vmdk_path_and_adapter_type(devices) adapter_type = vmdk_info[1] self.assertEqual('lsiLogicsas', adapter_type) self.assertEqual(vmdk_info[0], filename) def test_get_vmdk_path_and_adapter_type_with_match(self): n_filename = '[test_datastore] uuid/uuid.vmdk' devices = self._vmdk_path_and_adapter_type_devices(n_filename) vmdk_info = vm_util.get_vmdk_path_and_adapter_type( devices, uuid='uuid') adapter_type = vmdk_info[1] self.assertEqual('lsiLogicsas', adapter_type) self.assertEqual(n_filename, vmdk_info[0]) def test_get_vmdk_path_and_adapter_type_with_nomatch(self): n_filename = '[test_datastore] diuu/diuu.vmdk' devices = self._vmdk_path_and_adapter_type_devices(n_filename) vmdk_info = vm_util.get_vmdk_path_and_adapter_type( devices, uuid='uuid') adapter_type = vmdk_info[1] self.assertEqual('lsiLogicsas', adapter_type) self.assertIsNone(vmdk_info[0]) def test_get_vmdk_adapter_type(self): # Test for the adapter_type to be used in vmdk descriptor # Adapter type in vmdk descriptor is same for LSI-SAS & LSILogic vmdk_adapter_type = vm_util.get_vmdk_adapter_type("lsiLogic") self.assertEqual("lsiLogic", vmdk_adapter_type) vmdk_adapter_type = vm_util.get_vmdk_adapter_type("lsiLogicsas") self.assertEqual("lsiLogic", vmdk_adapter_type) vmdk_adapter_type = vm_util.get_vmdk_adapter_type("dummyAdapter") self.assertEqual("dummyAdapter", vmdk_adapter_type) def test_find_allocated_slots(self): disk1 = fake.VirtualDisk(200, 0) disk2 = fake.VirtualDisk(200, 1) disk3 = fake.VirtualDisk(201, 1) ide0 = fake.VirtualIDEController(200) ide1 = fake.VirtualIDEController(201) scsi0 = fake.VirtualLsiLogicController(key=1000, scsiCtlrUnitNumber=7) devices = [disk1, disk2, disk3, ide0, ide1, scsi0] taken = vm_util._find_allocated_slots(devices) self.assertEqual([0, 1], sorted(taken[200])) self.assertEqual([1], taken[201]) self.assertEqual([7], taken[1000]) def test_allocate_controller_key_and_unit_number_ide_default(self): # Test that default IDE controllers are used when there is a free slot # on them disk1 = fake.VirtualDisk(200, 0) disk2 = fake.VirtualDisk(200, 1) ide0 = fake.VirtualIDEController(200) ide1 = fake.VirtualIDEController(201) devices = [disk1, disk2, ide0, ide1] (controller_key, unit_number, controller_spec) = vm_util.allocate_controller_key_and_unit_number( None, devices, 'ide') self.assertEqual(201, controller_key) self.assertEqual(0, unit_number) self.assertIsNone(controller_spec) def test_allocate_controller_key_and_unit_number_ide(self): # Test that a new controller is created when there is no free slot on # the default IDE controllers ide0 = fake.VirtualIDEController(200) ide1 = fake.VirtualIDEController(201) devices = [ide0, ide1] for controller_key in [200, 201]: for unit_number in [0, 1]: disk = fake.VirtualDisk(controller_key, unit_number) devices.append(disk) factory = fake.FakeFactory() (controller_key, unit_number, controller_spec) = vm_util.allocate_controller_key_and_unit_number( factory, devices, 'ide') self.assertEqual(-101, controller_key) self.assertEqual(0, unit_number) self.assertIsNotNone(controller_spec) def test_allocate_controller_key_and_unit_number_scsi(self): # Test that we allocate on existing SCSI controller if there is a free # slot on it devices = [fake.VirtualLsiLogicController(1000, scsiCtlrUnitNumber=7)] for unit_number in range(7): disk = fake.VirtualDisk(1000, unit_number) devices.append(disk) factory = fake.FakeFactory() (controller_key, unit_number, controller_spec) = vm_util.allocate_controller_key_and_unit_number( factory, devices, 'lsiLogic') self.assertEqual(1000, controller_key) self.assertEqual(8, unit_number) self.assertIsNone(controller_spec) def _test_get_vnc_config_spec(self, port): result = vm_util.get_vnc_config_spec(fake.FakeFactory(), port) return result def test_get_vnc_config_spec(self): result = self._test_get_vnc_config_spec(7) expected = """{'extraConfig': [ {'value': 'true', 'key': 'RemoteDisplay.vnc.enabled', 'obj_name': 'ns0:OptionValue'}, {'value': 7, 'key': 'RemoteDisplay.vnc.port', 'obj_name': 'ns0:OptionValue'}], 'obj_name': 'ns0:VirtualMachineConfigSpec'}""" expected = re.sub(r'\s+', '', expected) result = re.sub(r'\s+', '', repr(result)) self.assertEqual(expected, result) def _create_fake_vms(self): fake_vms = fake.FakeRetrieveResult() OptionValue = collections.namedtuple('OptionValue', ['key', 'value']) for i in range(10): vm = fake.ManagedObject() opt_val = OptionValue(key='', value=5900 + i) vm.set(vm_util.VNC_CONFIG_KEY, opt_val) fake_vms.add_object(vm) return fake_vms def test_get_vnc_port(self): fake_vms = self._create_fake_vms() self.flags(vnc_port=5900, group='vmware') self.flags(vnc_port_total=10000, group='vmware') actual = vm_util.get_vnc_port(fake_session(fake_vms)) self.assertEqual(actual, 5910) def test_get_vnc_port_exhausted(self): fake_vms = self._create_fake_vms() self.flags(vnc_port=5900, group='vmware') self.flags(vnc_port_total=10, group='vmware') self.assertRaises(exception.ConsolePortRangeExhausted, vm_util.get_vnc_port, fake_session(fake_vms)) def test_get_all_cluster_refs_by_name_none(self): fake_objects = fake.FakeRetrieveResult() refs = vm_util.get_all_cluster_refs_by_name(fake_session(fake_objects), ['fake_cluster']) self.assertTrue(not refs) def test_get_all_cluster_refs_by_name_exists(self): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.ClusterComputeResource(name='cluster')) refs = vm_util.get_all_cluster_refs_by_name(fake_session(fake_objects), ['cluster']) self.assertTrue(len(refs) == 1) def test_get_all_cluster_refs_by_name_missing(self): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(partialObject(path='cluster')) refs = vm_util.get_all_cluster_refs_by_name(fake_session(fake_objects), ['cluster']) self.assertTrue(not refs) def test_propset_dict_simple(self): ObjectContent = collections.namedtuple('ObjectContent', ['propSet']) DynamicProperty = collections.namedtuple('Property', ['name', 'val']) object = ObjectContent(propSet=[ DynamicProperty(name='foo', val="bar")]) propdict = vm_util.propset_dict(object.propSet) self.assertEqual("bar", propdict['foo']) def test_propset_dict_complex(self): ObjectContent = collections.namedtuple('ObjectContent', ['propSet']) DynamicProperty = collections.namedtuple('Property', ['name', 'val']) MoRef = collections.namedtuple('Val', ['value']) object = ObjectContent(propSet=[ DynamicProperty(name='foo', val="bar"), DynamicProperty(name='some.thing', val=MoRef(value='else')), DynamicProperty(name='another.thing', val='value')]) propdict = vm_util.propset_dict(object.propSet) self.assertEqual("bar", propdict['foo']) self.assertTrue(hasattr(propdict['some.thing'], 'value')) self.assertEqual("else", propdict['some.thing'].value) self.assertEqual("value", propdict['another.thing']) def _test_detach_virtual_disk_spec(self, destroy_disk=False): virtual_device_config = vm_util.detach_virtual_disk_spec( fake.FakeFactory(), 'fake_device', destroy_disk) self.assertEqual('remove', virtual_device_config.operation) self.assertEqual('fake_device', virtual_device_config.device) self.assertEqual('ns0:VirtualDeviceConfigSpec', virtual_device_config.obj_name) if destroy_disk: self.assertEqual('destroy', virtual_device_config.fileOperation) else: self.assertFalse(hasattr(virtual_device_config, 'fileOperation')) def test_detach_virtual_disk_spec(self): self._test_detach_virtual_disk_spec(destroy_disk=False) def test_detach_virtual_disk_destroy_spec(self): self._test_detach_virtual_disk_spec(destroy_disk=True) def test_get_vm_create_spec(self): instance_uuid = uuidutils.generate_uuid() fake_instance = {'id': 7, 'name': 'fake!', 'uuid': instance_uuid, 'vcpus': 2, 'memory_mb': 2048} result = vm_util.get_vm_create_spec(fake.FakeFactory(), fake_instance, instance_uuid, 'fake-datastore', []) expected = """{ 'files': {'vmPathName': '[fake-datastore]', 'obj_name': 'ns0:VirtualMachineFileInfo'}, 'instanceUuid': '%(instance_uuid)s', 'name': '%(instance_uuid)s', 'deviceChange': [], 'extraConfig': [{'value': '%(instance_uuid)s', 'key': 'nvp.vm-uuid', 'obj_name': 'ns0:OptionValue'}], 'memoryMB': 2048, 'obj_name': 'ns0:VirtualMachineConfigSpec', 'guestId': 'otherGuest', 'tools': {'beforeGuestStandby': True, 'beforeGuestReboot': True, 'beforeGuestShutdown': True, 'afterResume': True, 'afterPowerOn': True, 'obj_name': 'ns0:ToolsConfigInfo'}, 'numCPUs': 2}""" % {'instance_uuid': instance_uuid} expected = re.sub(r'\s+', '', expected) result = re.sub(r'\s+', '', repr(result)) self.assertEqual(expected, result) nova-2014.1/nova/tests/virt/vmwareapi/__init__.py0000664000175400017540000000121612323721477023107 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/virt/test_virt.py0000664000175400017540000002504312323721477021404 0ustar jenkinsjenkins00000000000000# Copyright 2011 Isaku Yamahata # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import io import os import mock from nova import test from nova import utils from nova.virt.disk import api as disk_api from nova.virt.disk.mount import api as mount from nova.virt import driver PROC_MOUNTS_CONTENTS = """rootfs / rootfs rw 0 0 sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 udev /dev devtmpfs rw,relatime,size=1013160k,nr_inodes=253290,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0 tmpfs /run tmpfs rw,nosuid,relatime,size=408904k,mode=755 0 0""" class TestVirtDriver(test.NoDBTestCase): def test_block_device(self): swap = {'device_name': '/dev/sdb', 'swap_size': 1} ephemerals = [{'num': 0, 'virtual_name': 'ephemeral0', 'device_name': '/dev/sdc1', 'size': 1}] block_device_mapping = [{'mount_device': '/dev/sde', 'device_path': 'fake_device'}] block_device_info = { 'root_device_name': '/dev/sda', 'swap': swap, 'ephemerals': ephemerals, 'block_device_mapping': block_device_mapping} empty_block_device_info = {} self.assertEqual( driver.block_device_info_get_root(block_device_info), '/dev/sda') self.assertIsNone( driver.block_device_info_get_root(empty_block_device_info)) self.assertIsNone(driver.block_device_info_get_root(None)) self.assertEqual( driver.block_device_info_get_swap(block_device_info), swap) self.assertIsNone(driver.block_device_info_get_swap( empty_block_device_info)['device_name']) self.assertEqual(driver.block_device_info_get_swap( empty_block_device_info)['swap_size'], 0) self.assertIsNone( driver.block_device_info_get_swap({'swap': None})['device_name']) self.assertEqual( driver.block_device_info_get_swap({'swap': None})['swap_size'], 0) self.assertIsNone( driver.block_device_info_get_swap(None)['device_name']) self.assertEqual( driver.block_device_info_get_swap(None)['swap_size'], 0) self.assertEqual( driver.block_device_info_get_ephemerals(block_device_info), ephemerals) self.assertEqual( driver.block_device_info_get_ephemerals(empty_block_device_info), []) self.assertEqual( driver.block_device_info_get_ephemerals(None), []) def test_swap_is_usable(self): self.assertFalse(driver.swap_is_usable(None)) self.assertFalse(driver.swap_is_usable({'device_name': None})) self.assertFalse(driver.swap_is_usable({'device_name': '/dev/sdb', 'swap_size': 0})) self.assertTrue(driver.swap_is_usable({'device_name': '/dev/sdb', 'swap_size': 1})) class FakeMount(object): def __init__(self, image, mount_dir, partition=None, device=None): self.image = image self.partition = partition self.mount_dir = mount_dir self.linked = self.mapped = self.mounted = False self.device = device def do_mount(self): self.linked = True self.mapped = True self.mounted = True self.device = '/dev/fake' return True def do_umount(self): self.linked = True self.mounted = False def do_teardown(self): self.linked = False self.mapped = False self.mounted = False self.device = None class TestDiskImage(test.NoDBTestCase): def setUp(self): super(TestDiskImage, self).setUp() def mock_proc_mounts(self, mock_open): response = io.StringIO(unicode(PROC_MOUNTS_CONTENTS)) mock_open.return_value = response @mock.patch('__builtin__.open') def test_mount(self, mock_open): self.mock_proc_mounts(mock_open) image = '/tmp/fake-image' mountdir = '/mnt/fake_rootfs' fakemount = FakeMount(image, mountdir, None) def fake_instance_for_format(imgfile, mountdir, partition, imgfmt): return fakemount self.stubs.Set(mount.Mount, 'instance_for_format', staticmethod(fake_instance_for_format)) diskimage = disk_api._DiskImage(image=image, mount_dir=mountdir) dev = diskimage.mount() self.assertEqual(diskimage._mounter, fakemount) self.assertEqual(dev, '/dev/fake') @mock.patch('__builtin__.open') def test_umount(self, mock_open): self.mock_proc_mounts(mock_open) image = '/tmp/fake-image' mountdir = '/mnt/fake_rootfs' fakemount = FakeMount(image, mountdir, None) def fake_instance_for_format(imgfile, mountdir, partition, imgfmt): return fakemount self.stubs.Set(mount.Mount, 'instance_for_format', staticmethod(fake_instance_for_format)) diskimage = disk_api._DiskImage(image=image, mount_dir=mountdir) dev = diskimage.mount() self.assertEqual(diskimage._mounter, fakemount) self.assertEqual(dev, '/dev/fake') diskimage.umount() self.assertIsNone(diskimage._mounter) @mock.patch('__builtin__.open') def test_teardown(self, mock_open): self.mock_proc_mounts(mock_open) image = '/tmp/fake-image' mountdir = '/mnt/fake_rootfs' fakemount = FakeMount(image, mountdir, None) def fake_instance_for_format(imgfile, mountdir, partition, imgfmt): return fakemount self.stubs.Set(mount.Mount, 'instance_for_format', staticmethod(fake_instance_for_format)) diskimage = disk_api._DiskImage(image=image, mount_dir=mountdir) dev = diskimage.mount() self.assertEqual(diskimage._mounter, fakemount) self.assertEqual(dev, '/dev/fake') diskimage.teardown() self.assertIsNone(diskimage._mounter) class TestVirtDisk(test.NoDBTestCase): def setUp(self): super(TestVirtDisk, self).setUp() self.executes = [] def fake_execute(*cmd, **kwargs): self.executes.append(cmd) return None, None self.stubs.Set(utils, 'execute', fake_execute) def test_lxc_setup_container(self): image = '/tmp/fake-image' container_dir = '/mnt/fake_rootfs/' def proc_mounts(self, mount_point): return None def fake_instance_for_format(imgfile, mountdir, partition, imgfmt): return FakeMount(imgfile, mountdir, partition) self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts) self.stubs.Set(mount.Mount, 'instance_for_format', staticmethod(fake_instance_for_format)) self.assertEqual(disk_api.setup_container(image, container_dir), '/dev/fake') def test_lxc_teardown_container(self): def proc_mounts(self, mount_point): mount_points = { '/mnt/loop/nopart': '/dev/loop0', '/mnt/loop/part': '/dev/mapper/loop0p1', '/mnt/nbd/nopart': '/dev/nbd15', '/mnt/nbd/part': '/dev/mapper/nbd15p1', } return mount_points[mount_point] self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts) expected_commands = [] disk_api.teardown_container('/mnt/loop/nopart') expected_commands += [ ('umount', '/dev/loop0'), ('losetup', '--detach', '/dev/loop0'), ] disk_api.teardown_container('/mnt/loop/part') expected_commands += [ ('umount', '/dev/mapper/loop0p1'), ('kpartx', '-d', '/dev/loop0'), ('losetup', '--detach', '/dev/loop0'), ] disk_api.teardown_container('/mnt/nbd/nopart') expected_commands += [ ('blockdev', '--flushbufs', '/dev/nbd15'), ('umount', '/dev/nbd15'), ('qemu-nbd', '-d', '/dev/nbd15'), ] disk_api.teardown_container('/mnt/nbd/part') expected_commands += [ ('blockdev', '--flushbufs', '/dev/nbd15'), ('umount', '/dev/mapper/nbd15p1'), ('kpartx', '-d', '/dev/nbd15'), ('qemu-nbd', '-d', '/dev/nbd15'), ] self.assertEqual(self.executes, expected_commands) def test_lxc_teardown_container_with_namespace_cleaned(self): def proc_mounts(self, mount_point): return None self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts) expected_commands = [] disk_api.teardown_container('/mnt/loop/nopart', '/dev/loop0') expected_commands += [ ('losetup', '--detach', '/dev/loop0'), ] disk_api.teardown_container('/mnt/loop/part', '/dev/loop0') expected_commands += [ ('losetup', '--detach', '/dev/loop0'), ] disk_api.teardown_container('/mnt/nbd/nopart', '/dev/nbd15') expected_commands += [ ('qemu-nbd', '-d', '/dev/nbd15'), ] disk_api.teardown_container('/mnt/nbd/part', '/dev/nbd15') expected_commands += [ ('qemu-nbd', '-d', '/dev/nbd15'), ] self.assertEqual(self.executes, expected_commands) nova-2014.1/nova/tests/virt/libvirt/0000775000175400017540000000000012323722546020454 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/libvirt/test_libvirt_config.py0000664000175400017540000015475212323721477025105 0ustar jenkinsjenkins00000000000000# Copyright (C) 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 lxml import etree from nova.openstack.common import units from nova import test from nova.tests import matchers from nova.virt.libvirt import config class LibvirtConfigBaseTest(test.NoDBTestCase): def assertXmlEqual(self, expectedXmlstr, actualXmlstr): self.assertThat(actualXmlstr, matchers.XMLMatches(expectedXmlstr)) class LibvirtConfigTest(LibvirtConfigBaseTest): def test_config_plain(self): obj = config.LibvirtConfigObject(root_name="demo") xml = obj.to_xml() self.assertXmlEqual(xml, "") def test_config_ns(self): obj = config.LibvirtConfigObject(root_name="demo", ns_prefix="foo", ns_uri="http://example.com/foo") xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_text(self): obj = config.LibvirtConfigObject(root_name="demo") root = obj.format_dom() root.append(obj._text_node("foo", "bar")) xml = etree.tostring(root) self.assertXmlEqual(xml, "bar") def test_config_parse(self): inxml = "" obj = config.LibvirtConfigObject(root_name="demo") obj.parse_str(inxml) class LibvirtConfigCapsTest(LibvirtConfigBaseTest): def test_config_host(self): xmlin = """ c7a5fdbd-edaf-9455-926a-d65c16db1809 x86_64 Opteron_G3 AMD hvm hvm """ obj = config.LibvirtConfigCaps() obj.parse_str(xmlin) self.assertIsInstance(obj.host, config.LibvirtConfigCapsHost) self.assertEqual(obj.host.uuid, "c7a5fdbd-edaf-9455-926a-d65c16db1809") xmlout = obj.to_xml() self.assertXmlEqual(xmlin, xmlout) class LibvirtConfigGuestTimerTest(LibvirtConfigBaseTest): def test_config_platform(self): obj = config.LibvirtConfigGuestTimer() obj.track = "host" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_pit(self): obj = config.LibvirtConfigGuestTimer() obj.name = "pit" obj.tickpolicy = "discard" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_hpet(self): obj = config.LibvirtConfigGuestTimer() obj.name = "hpet" obj.present = False xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestClockTest(LibvirtConfigBaseTest): def test_config_utc(self): obj = config.LibvirtConfigGuestClock() xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_localtime(self): obj = config.LibvirtConfigGuestClock() obj.offset = "localtime" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_timezone(self): obj = config.LibvirtConfigGuestClock() obj.offset = "timezone" obj.timezone = "EDT" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_variable(self): obj = config.LibvirtConfigGuestClock() obj.offset = "variable" obj.adjustment = "123456" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_timers(self): obj = config.LibvirtConfigGuestClock() tmpit = config.LibvirtConfigGuestTimer() tmpit.name = "pit" tmpit.tickpolicy = "discard" tmrtc = config.LibvirtConfigGuestTimer() tmrtc.name = "rtc" tmrtc.tickpolicy = "merge" obj.add_timer(tmpit) obj.add_timer(tmrtc) xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigCPUFeatureTest(LibvirtConfigBaseTest): def test_config_simple(self): obj = config.LibvirtConfigCPUFeature("mtrr") xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestCPUFeatureTest(LibvirtConfigBaseTest): def test_config_simple(self): obj = config.LibvirtConfigGuestCPUFeature("mtrr") obj.policy = "force" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigCPUTest(LibvirtConfigBaseTest): def test_config_simple(self): obj = config.LibvirtConfigCPU() obj.model = "Penryn" xml = obj.to_xml() self.assertXmlEqual(xml, """ Penryn """) def test_config_complex(self): obj = config.LibvirtConfigCPU() obj.model = "Penryn" obj.vendor = "Intel" obj.arch = "x86_64" obj.add_feature(config.LibvirtConfigCPUFeature("mtrr")) obj.add_feature(config.LibvirtConfigCPUFeature("apic")) xml = obj.to_xml() self.assertXmlEqual(xml, """ x86_64 Penryn Intel """) def test_config_topology(self): obj = config.LibvirtConfigCPU() obj.model = "Penryn" obj.sockets = 4 obj.cores = 4 obj.threads = 2 xml = obj.to_xml() self.assertXmlEqual(xml, """ Penryn """) class LibvirtConfigGuestCPUTest(LibvirtConfigBaseTest): def test_config_simple(self): obj = config.LibvirtConfigGuestCPU() obj.model = "Penryn" xml = obj.to_xml() self.assertXmlEqual(xml, """ Penryn """) def test_config_complex(self): obj = config.LibvirtConfigGuestCPU() obj.model = "Penryn" obj.vendor = "Intel" obj.arch = "x86_64" obj.mode = "custom" obj.add_feature(config.LibvirtConfigGuestCPUFeature("mtrr")) obj.add_feature(config.LibvirtConfigGuestCPUFeature("apic")) xml = obj.to_xml() self.assertXmlEqual(xml, """ x86_64 Penryn Intel """) def test_config_host(self): obj = config.LibvirtConfigGuestCPU() obj.mode = "host-model" obj.match = "exact" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestSMBIOSTest(LibvirtConfigBaseTest): def test_config_simple(self): obj = config.LibvirtConfigGuestSMBIOS() xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestSysinfoTest(LibvirtConfigBaseTest): def test_config_simple(self): obj = config.LibvirtConfigGuestSysinfo() xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_bios(self): obj = config.LibvirtConfigGuestSysinfo() obj.bios_vendor = "Acme" obj.bios_version = "6.6.6" xml = obj.to_xml() self.assertXmlEqual(xml, """ Acme 6.6.6 """) def test_config_system(self): obj = config.LibvirtConfigGuestSysinfo() obj.system_manufacturer = "Acme" obj.system_product = "Wile Coyote" obj.system_version = "6.6.6" obj.system_serial = "123456" obj.system_uuid = "c7a5fdbd-edaf-9455-926a-d65c16db1809" xml = obj.to_xml() self.assertXmlEqual(xml, """ Acme Wile Coyote 6.6.6 123456 c7a5fdbd-edaf-9455-926a-d65c16db1809 """) def test_config_mixed(self): obj = config.LibvirtConfigGuestSysinfo() obj.bios_vendor = "Acme" obj.system_manufacturer = "Acme" obj.system_product = "Wile Coyote" obj.system_uuid = "c7a5fdbd-edaf-9455-926a-d65c16db1809" xml = obj.to_xml() self.assertXmlEqual(xml, """ Acme Acme Wile Coyote c7a5fdbd-edaf-9455-926a-d65c16db1809 """) class LibvirtConfigGuestDiskTest(LibvirtConfigBaseTest): def test_config_file(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "file" obj.source_path = "/tmp/hello" obj.target_dev = "/dev/hda" obj.target_bus = "ide" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_file_parse(self): xml = """ """ xmldoc = etree.fromstring(xml) obj = config.LibvirtConfigGuestDisk() obj.parse_dom(xmldoc) self.assertEqual(obj.source_type, 'file') self.assertEqual(obj.source_path, '/tmp/hello') self.assertEqual(obj.target_dev, '/dev/hda') self.assertEqual(obj.target_bus, 'ide') def test_config_file_serial(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "file" obj.source_path = "/tmp/hello" obj.target_dev = "/dev/hda" obj.target_bus = "ide" obj.serial = "7a97c4a3-6f59-41d4-bf47-191d7f97f8e9" xml = obj.to_xml() self.assertXmlEqual(xml, """ 7a97c4a3-6f59-41d4-bf47-191d7f97f8e9 """) def test_config_file_serial_parse(self): xml = """ 7a97c4a3-6f59-41d4-bf47-191d7f97f8e9 """ xmldoc = etree.fromstring(xml) obj = config.LibvirtConfigGuestDisk() obj.parse_dom(xmldoc) self.assertEqual(obj.source_type, 'file') self.assertEqual(obj.serial, '7a97c4a3-6f59-41d4-bf47-191d7f97f8e9') def test_config_block(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "block" obj.source_path = "/tmp/hello" obj.source_device = "cdrom" obj.driver_name = "qemu" obj.target_dev = "/dev/hdc" obj.target_bus = "ide" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_block_parse(self): xml = """ """ xmldoc = etree.fromstring(xml) obj = config.LibvirtConfigGuestDisk() obj.parse_dom(xmldoc) self.assertEqual(obj.source_type, 'block') self.assertEqual(obj.source_path, '/tmp/hello') self.assertEqual(obj.target_dev, '/dev/hdc') self.assertEqual(obj.target_bus, 'ide') def test_config_network(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "network" obj.source_protocol = "iscsi" obj.source_name = "foo.bar.com" obj.driver_name = "qemu" obj.driver_format = "qcow2" obj.target_dev = "/dev/hda" obj.target_bus = "ide" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_network_parse(self): xml = """ """ xmldoc = etree.fromstring(xml) obj = config.LibvirtConfigGuestDisk() obj.parse_dom(xmldoc) self.assertEqual(obj.source_type, 'network') self.assertEqual(obj.source_protocol, 'iscsi') self.assertEqual(obj.source_name, 'foo.bar.com') self.assertEqual(obj.driver_name, 'qemu') self.assertEqual(obj.driver_format, 'qcow2') self.assertEqual(obj.target_dev, '/dev/hda') self.assertEqual(obj.target_bus, 'ide') def test_config_network_no_name(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = 'network' obj.source_protocol = 'nbd' obj.source_hosts = ['foo.bar.com'] obj.source_ports = [None] obj.driver_name = 'qemu' obj.driver_format = 'raw' obj.target_dev = '/dev/vda' obj.target_bus = 'virtio' xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_network_multihost(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = 'network' obj.source_protocol = 'rbd' obj.source_name = 'pool/image' obj.source_hosts = ['foo.bar.com', '::1', '1.2.3.4'] obj.source_ports = [None, '123', '456'] obj.driver_name = 'qemu' obj.driver_format = 'raw' obj.target_dev = '/dev/vda' obj.target_bus = 'virtio' xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_network_auth(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "network" obj.source_protocol = "rbd" obj.source_name = "pool/image" obj.driver_name = "qemu" obj.driver_format = "raw" obj.target_dev = "/dev/vda" obj.target_bus = "virtio" obj.auth_username = "foo" obj.auth_secret_type = "ceph" obj.auth_secret_uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_iotune(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "file" obj.source_path = "/tmp/hello" obj.target_dev = "/dev/hda" obj.target_bus = "ide" obj.disk_read_bytes_sec = 1024000 obj.disk_read_iops_sec = 1000 obj.disk_total_bytes_sec = 2048000 obj.disk_write_bytes_sec = 1024000 obj.disk_write_iops_sec = 1000 obj.disk_total_iops_sec = 2000 xml = obj.to_xml() self.assertXmlEqual(xml, """ 1024000 1000 1024000 1000 2048000 2000 """) def test_config_blockio(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "file" obj.source_path = "/tmp/hello" obj.target_dev = "/dev/hda" obj.target_bus = "ide" obj.logical_block_size = "4096" obj.physical_block_size = "4096" xml = obj.to_xml() self.assertXmlEqual(""" """, xml) class LibvirtConfigGuestSnapshotDiskTest(LibvirtConfigBaseTest): def test_config_file(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "file" obj.source_path = "/tmp/hello" obj.target_dev = "/dev/hda" obj.target_bus = "ide" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_file_parse(self): xml = """ """ xmldoc = etree.fromstring(xml) obj = config.LibvirtConfigGuestDisk() obj.parse_dom(xmldoc) self.assertEqual(obj.source_type, 'file') self.assertEqual(obj.source_path, '/tmp/hello') self.assertEqual(obj.target_dev, '/dev/hda') self.assertEqual(obj.target_bus, 'ide') class LibvirtConfigGuestFilesysTest(LibvirtConfigBaseTest): def test_config_mount(self): obj = config.LibvirtConfigGuestFilesys() obj.source_type = "mount" obj.source_dir = "/tmp/hello" obj.target_dir = "/mnt" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestInputTest(LibvirtConfigBaseTest): def test_config_tablet(self): obj = config.LibvirtConfigGuestInput() xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestGraphicsTest(LibvirtConfigBaseTest): def test_config_graphics(self): obj = config.LibvirtConfigGuestGraphics() obj.type = "vnc" obj.autoport = True obj.keymap = "en_US" obj.listen = "127.0.0.1" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestHostdev(LibvirtConfigBaseTest): def test_config_pci_guest_host_dev(self): obj = config.LibvirtConfigGuestHostdev(mode='subsystem', type='pci') xml = obj.to_xml() expected = """ """ self.assertXmlEqual(xml, expected) def test_parse_GuestHostdev(self): xmldoc = """""" obj = config.LibvirtConfigGuestHostdev() obj.parse_str(xmldoc) self.assertEqual(obj.mode, 'subsystem') self.assertEqual(obj.type, 'pci') self.assertEqual(obj.managed, 'yes') def test_parse_GuestHostdev_non_pci(self): xmldoc = """""" obj = config.LibvirtConfigGuestHostdev() obj.parse_str(xmldoc) self.assertEqual(obj.mode, 'subsystem') self.assertEqual(obj.type, 'usb') self.assertEqual(obj.managed, 'no') class LibvirtConfigGuestHostdevPCI(LibvirtConfigBaseTest): expected = """
""" def test_config_guest_hosdev_pci(self): hostdev = config.LibvirtConfigGuestHostdevPCI() hostdev.domain = "1234" hostdev.bus = "11" hostdev.slot = "22" hostdev.function = "3" xml = hostdev.to_xml() self.assertXmlEqual(self.expected, xml) def test_parse_guest_hosdev_pci(self): xmldoc = self.expected obj = config.LibvirtConfigGuestHostdevPCI() obj.parse_str(xmldoc) self.assertEqual(obj.mode, 'subsystem') self.assertEqual(obj.type, 'pci') self.assertEqual(obj.managed, 'yes') self.assertEqual(obj.domain, '0x1234') self.assertEqual(obj.bus, '0x11') self.assertEqual(obj.slot, '0x22') self.assertEqual(obj.function, '0x3') def test_parse_guest_hosdev_usb(self): xmldoc = """ """ obj = config.LibvirtConfigGuestHostdevPCI() obj.parse_str(xmldoc) self.assertEqual(obj.mode, 'subsystem') self.assertEqual(obj.type, 'usb') class LibvirtConfigGuestSerialTest(LibvirtConfigBaseTest): def test_config_file(self): obj = config.LibvirtConfigGuestSerial() obj.type = "file" obj.source_path = "/tmp/vm.log" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestConsoleTest(LibvirtConfigBaseTest): def test_config_pty(self): obj = config.LibvirtConfigGuestConsole() obj.type = "pty" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestChannelTest(LibvirtConfigBaseTest): def test_config_spice_minimal(self): obj = config.LibvirtConfigGuestChannel() obj.type = "spicevmc" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_spice_full(self): obj = config.LibvirtConfigGuestChannel() obj.type = "spicevmc" obj.target_name = "com.redhat.spice.0" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_qga_full(self): obj = config.LibvirtConfigGuestChannel() obj.type = "unix" obj.target_name = "org.qemu.guest_agent.0" obj.source_path = "/var/lib/libvirt/qemu/%s.%s.sock" % ( obj.target_name, "instance-name") xml = obj.to_xml() self.assertXmlEqual(xml, """ """ % obj.source_path) class LibvirtConfigGuestInterfaceTest(LibvirtConfigBaseTest): def test_config_ethernet(self): obj = config.LibvirtConfigGuestInterface() obj.net_type = "ethernet" obj.mac_addr = "DE:AD:BE:EF:CA:FE" obj.model = "virtio" obj.target_dev = "vnet0" obj.driver_name = "vhost" obj.vif_inbound_average = 1024000 obj.vif_inbound_peak = 10240000 obj.vif_inbound_burst = 1024000 obj.vif_outbound_average = 1024000 obj.vif_outbound_peak = 10240000 obj.vif_outbound_burst = 1024000 xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_bridge(self): obj = config.LibvirtConfigGuestInterface() obj.net_type = "bridge" obj.source_dev = "br0" obj.mac_addr = "DE:AD:BE:EF:CA:FE" obj.model = "virtio" obj.target_dev = "tap12345678" obj.filtername = "clean-traffic" obj.filterparams.append({"key": "IP", "value": "192.168.122.1"}) obj.vif_inbound_average = 1024000 obj.vif_inbound_peak = 10240000 obj.vif_inbound_burst = 1024000 obj.vif_outbound_average = 1024000 obj.vif_outbound_peak = 10240000 obj.vif_outbound_burst = 1024000 xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_bridge_ovs(self): obj = config.LibvirtConfigGuestInterface() obj.net_type = "bridge" obj.source_dev = "br0" obj.mac_addr = "DE:AD:BE:EF:CA:FE" obj.model = "virtio" obj.target_dev = "tap12345678" obj.vporttype = "openvswitch" obj.vportparams.append({"key": "instanceid", "value": "foobar"}) xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_8021Qbh(self): obj = config.LibvirtConfigGuestInterface() obj.net_type = "direct" obj.mac_addr = "DE:AD:BE:EF:CA:FE" obj.model = "virtio" obj.target_dev = "tap12345678" obj.source_dev = "eth0" obj.vporttype = "802.1Qbh" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_direct(self): obj = config.LibvirtConfigGuestInterface() obj.net_type = "direct" obj.mac_addr = "DE:AD:BE:EF:CA:FE" obj.model = "virtio" obj.source_dev = "eth0" obj.source_mode = "passthrough" xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestTest(LibvirtConfigBaseTest): def test_config_lxc(self): obj = config.LibvirtConfigGuest() obj.virt_type = "lxc" obj.memory = 100 * units.Mi obj.vcpus = 2 obj.cpuset = "0-3,^2,4-5" obj.name = "demo" obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" obj.os_type = "exe" obj.os_init_path = "/sbin/init" fs = config.LibvirtConfigGuestFilesys() fs.source_dir = "/root/lxc" fs.target_dir = "/" obj.add_device(fs) xml = obj.to_xml() self.assertXmlEqual(xml, """ b38a3f43-4be2-4046-897f-b67c2f5e0147 demo 104857600 2 exe /sbin/init """) def test_config_xen_pv(self): obj = config.LibvirtConfigGuest() obj.virt_type = "xen" obj.memory = 100 * units.Mi obj.vcpus = 2 obj.cpuset = "0-3,^2,4-5" obj.name = "demo" obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" obj.os_type = "linux" obj.os_kernel = "/tmp/vmlinuz" obj.os_initrd = "/tmp/ramdisk" obj.os_cmdline = "console=xvc0" disk = config.LibvirtConfigGuestDisk() disk.source_type = "file" disk.source_path = "/tmp/img" disk.target_dev = "/dev/xvda" disk.target_bus = "xen" obj.add_device(disk) xml = obj.to_xml() self.assertXmlEqual(xml, """ b38a3f43-4be2-4046-897f-b67c2f5e0147 demo 104857600 2 linux /tmp/vmlinuz /tmp/ramdisk console=xvc0 """) def test_config_xen_hvm(self): obj = config.LibvirtConfigGuest() obj.virt_type = "xen" obj.memory = 100 * units.Mi obj.vcpus = 2 obj.cpuset = "0-3,^2,4-5" obj.name = "demo" obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" obj.os_type = "hvm" obj.os_loader = '/usr/lib/xen/boot/hvmloader' obj.os_root = "root=xvda" obj.os_cmdline = "console=xvc0" obj.acpi = True obj.apic = True disk = config.LibvirtConfigGuestDisk() disk.source_type = "file" disk.source_path = "/tmp/img" disk.target_dev = "/dev/xvda" disk.target_bus = "xen" obj.add_device(disk) xml = obj.to_xml() self.assertXmlEqual(xml, """ b38a3f43-4be2-4046-897f-b67c2f5e0147 demo 104857600 2 hvm /usr/lib/xen/boot/hvmloader console=xvc0 root=xvda """) def test_config_kvm(self): obj = config.LibvirtConfigGuest() obj.virt_type = "kvm" obj.memory = 100 * units.Mi obj.vcpus = 2 obj.cpuset = "0-3,^2,4-5" obj.cpu_shares = 100 obj.cpu_quota = 50000 obj.cpu_period = 25000 obj.name = "demo" obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" obj.os_type = "linux" obj.os_boot_dev = ["hd", "cdrom", "fd"] obj.os_smbios = config.LibvirtConfigGuestSMBIOS() obj.acpi = True obj.apic = True obj.sysinfo = config.LibvirtConfigGuestSysinfo() obj.sysinfo.bios_vendor = "Acme" obj.sysinfo.system_version = "1.0.0" disk = config.LibvirtConfigGuestDisk() disk.source_type = "file" disk.source_path = "/tmp/img" disk.target_dev = "/dev/vda" disk.target_bus = "virtio" obj.add_device(disk) xml = obj.to_xml() self.assertXmlEqual(xml, """ b38a3f43-4be2-4046-897f-b67c2f5e0147 demo 104857600 2 Acme 1.0.0 linux 100 50000 25000 """) def test_config_machine_type(self): obj = config.LibvirtConfigGuest() obj.virt_type = "kvm" obj.memory = 100 * units.Mi obj.vcpus = 2 obj.name = "demo" obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" obj.os_type = "hvm" obj.os_mach_type = "fake_machine_type" xml = obj.to_xml() self.assertXmlEqual(xml, """ b38a3f43-4be2-4046-897f-b67c2f5e0147 demo 104857600 2 hvm """) def test_ConfigGuest_parse_devices(self): xmldoc = """ """ obj = config.LibvirtConfigGuest() obj.parse_str(xmldoc) self.assertEqual(len(obj.devices), 1) self.assertIsInstance(obj.devices[0], config.LibvirtConfigGuestHostdevPCI) self.assertEqual(obj.devices[0].mode, 'subsystem') self.assertEqual(obj.devices[0].managed, 'no') def test_ConfigGuest_parse_devices_wrong_type(self): xmldoc = """ """ obj = config.LibvirtConfigGuest() obj.parse_str(xmldoc) self.assertEqual(len(obj.devices), 0) def test_ConfigGuest_parese_cpu(self): xmldoc = """ kvm64 """ obj = config.LibvirtConfigGuest() obj.parse_str(xmldoc) self.assertEqual(obj.cpu.mode, 'custom') self.assertEqual(obj.cpu.match, 'exact') self.assertEqual(obj.cpu.model, 'kvm64') class LibvirtConfigGuestSnapshotTest(LibvirtConfigBaseTest): def test_config_snapshot(self): obj = config.LibvirtConfigGuestSnapshot() obj.name = "Demo" xml = obj.to_xml() self.assertXmlEqual(xml, """ Demo """) def test_config_snapshot_with_disks(self): obj = config.LibvirtConfigGuestSnapshot() obj.name = "Demo" disk = config.LibvirtConfigGuestSnapshotDisk() disk.name = 'vda' disk.source_path = 'source-path' disk.source_type = 'file' disk.snapshot = 'external' disk.driver_name = 'qcow2' obj.add_disk(disk) disk2 = config.LibvirtConfigGuestSnapshotDisk() disk2.name = 'vdb' disk2.snapshot = 'no' obj.add_disk(disk2) xml = obj.to_xml() self.assertXmlEqual(xml, """ Demo """) class LibvirtConfigNodeDeviceTest(LibvirtConfigBaseTest): def test_config_virt_usb_device(self): xmlin = """ usb_0000_09_00_0 pci_0000_00_1c_0 vxge 0
""" obj = config.LibvirtConfigNodeDevice() obj.parse_str(xmlin) self.assertIsNone(obj.pci_capability) def test_config_virt_device(self): xmlin = """ pci_0000_09_00_0 pci_0000_00_1c_0 vxge 0 9 0 0 X3100 Series 10 Gigabit Ethernet PCIe Neterion Inc.
""" obj = config.LibvirtConfigNodeDevice() obj.parse_str(xmlin) self.assertIsInstance(obj.pci_capability, config.LibvirtConfigNodeDevicePciCap) self.assertIsInstance(obj.pci_capability.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.pci_capability.fun_capability[0].type, "virt_functions") self.assertEqual(len(obj.pci_capability.fun_capability[0]. device_addrs), 3) self.assertEqual(obj.pci_capability.bus, 9) def test_config_phy_device(self): xmlin = """ pci_0000_33_00_0 pci_0000_22_1c_0 vxx 0 9 0 0 X3100 Series 10 Gigabit Ethernet PCIe Neterion Inc.
""" obj = config.LibvirtConfigNodeDevice() obj.parse_str(xmlin) self.assertIsInstance(obj.pci_capability, config.LibvirtConfigNodeDevicePciCap) self.assertIsInstance(obj.pci_capability.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.pci_capability.fun_capability[0].type, "phys_function") self.assertEqual(len(obj.pci_capability.fun_capability[0]. device_addrs), 1) def test_config_non_device(self): xmlin = """ pci_0000_33_00_0 pci_0000_22_1c_0 vxx 0 9 0 0 X3100 Series 10 Gigabit Ethernet PCIe Neterion Inc. """ obj = config.LibvirtConfigNodeDevice() obj.parse_str(xmlin) self.assertIsInstance(obj.pci_capability, config.LibvirtConfigNodeDevicePciCap) self.assertIsInstance(obj.pci_capability.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.pci_capability.fun_capability[0].type, "virt_functions") def test_config_fail_device(self): xmlin = """ pci_0000_33_00_0 pci_0000_22_1c_0 vxx 0 9 0 0 X3100 Series 10 Gigabit Ethernet PCIe Neterion Inc. """ obj = config.LibvirtConfigNodeDevice() obj.parse_str(xmlin) self.assertIsInstance(obj.pci_capability, config.LibvirtConfigNodeDevicePciCap) self.assertIsInstance(obj.pci_capability.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.pci_capability.fun_capability[0].type, "virt_functions") def test_config_2cap_device(self): xmlin = """ pci_0000_04_10_7 pci_0000_00_01_1 igbvf 0 4 16 7 I350 Ethernet Controller Virtual Intel Corporation
""" obj = config.LibvirtConfigNodeDevice() obj.parse_str(xmlin) self.assertIsInstance(obj.pci_capability, config.LibvirtConfigNodeDevicePciCap) self.assertIsInstance(obj.pci_capability.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.pci_capability.fun_capability[0].type, "phys_function") self.assertEqual(obj.pci_capability.fun_capability[1].type, "virt_functions") class LibvirtConfigNodeDevicePciCapTest(LibvirtConfigBaseTest): def test_config_device_pci_cap(self): xmlin = """ 0 10 1 5 Intel 10 Gigabit Ethernet Intel Inc.
""" obj = config.LibvirtConfigNodeDevicePciCap() obj.parse_str(xmlin) self.assertEqual(obj.domain, 0) self.assertEqual(obj.bus, 10) self.assertEqual(obj.slot, 1) self.assertEqual(obj.function, 5) self.assertEqual(obj.product, "Intel 10 Gigabit Ethernet") self.assertEqual(obj.product_id, '0x8086-3') self.assertEqual(obj.vendor, "Intel Inc.") self.assertEqual(obj.vendor_id, "0x8086") self.assertIsInstance(obj.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.fun_capability[0].type, 'virt_functions') self.assertEqual(obj.fun_capability[0].device_addrs, [("0000", "0x0a", "0x1", "0x1"), ("0001", "0x0a", "0x02", "0x03"), ]) def test_config_device_pci_2cap(self): xmlin = """ 0 10 1 5 Intel 10 Gigabit Ethernet Intel Inc.
""" obj = config.LibvirtConfigNodeDevicePciCap() obj.parse_str(xmlin) self.assertEqual(obj.domain, 0) self.assertEqual(obj.bus, 10) self.assertEqual(obj.slot, 1) self.assertEqual(obj.function, 5) self.assertEqual(obj.product, "Intel 10 Gigabit Ethernet") self.assertEqual(obj.product_id, '0x8086-3') self.assertEqual(obj.vendor, "Intel Inc.") self.assertEqual(obj.vendor_id, "0x8086") self.assertIsInstance(obj.fun_capability[0], config.LibvirtConfigNodeDevicePciSubFunctionCap) self.assertEqual(obj.fun_capability[0].type, 'virt_functions') self.assertEqual(obj.fun_capability[0].device_addrs, [("0000", '0x0a', '0x1', "0x1"), ("0001", "0x0a", "0x02", "0x03"), ]) self.assertEqual(obj.fun_capability[1].type, 'phys_function') self.assertEqual(obj.fun_capability[1].device_addrs, [("0000", '0x0a', '0x1', "0x1"), ]) def test_config_read_only_disk(self): obj = config.LibvirtConfigGuestDisk() obj.source_type = "disk" obj.source_device = "disk" obj.driver_name = "kvm" obj.target_dev = "/dev/hdc" obj.target_bus = "virtio" obj.readonly = True xml = obj.to_xml() self.assertXmlEqual(xml, """ """) obj.readonly = False xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigNodeDevicePciSubFunctionCap(LibvirtConfigBaseTest): def test_config_device_pci_subfunction(self): xmlin = """
""" fun_capability = config.LibvirtConfigNodeDevicePciSubFunctionCap() fun_capability.parse_str(xmlin) self.assertEqual('virt_functions', fun_capability.type) self.assertEqual([("0000", "0x0a", "0x1", "0x1"), ("0001", "0x0a", "0x02", "0x03"), ], fun_capability.device_addrs) class LibvirtConfigGuestVideoTest(LibvirtConfigBaseTest): def test_config_video_driver(self): obj = config.LibvirtConfigGuestVideo() obj.type = 'qxl' xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_video_driver_vram_heads(self): obj = config.LibvirtConfigGuestVideo() obj.type = 'qxl' obj.vram = '9216' obj.heads = '1' xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestSeclabel(LibvirtConfigBaseTest): def test_config_seclabel_config(self): obj = config.LibvirtConfigSeclabel() xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_seclabel_baselabel(self): obj = config.LibvirtConfigSeclabel() obj.type = 'dynamic' obj.baselabel = 'system_u:system_r:my_svirt_t:s0' xml = obj.to_xml() self.assertXmlEqual(xml, """ system_u:system_r:my_svirt_t:s0 """) class LibvirtConfigGuestRngTest(LibvirtConfigBaseTest): def test_config_rng_driver(self): obj = config.LibvirtConfigGuestRng() xml = obj.to_xml() self.assertXmlEqual(xml, """ """) def test_config_rng_driver_with_rate(self): obj = config.LibvirtConfigGuestRng() obj.backend = '/dev/random' obj.rate_period = '12' obj.rate_bytes = '34' xml = obj.to_xml() self.assertXmlEqual(xml, """ /dev/random """) class LibvirtConfigGuestControllerTest(LibvirtConfigBaseTest): def test_config_guest_contoller(self): obj = config.LibvirtConfigGuestController() obj.type = 'scsi' obj.index = 0 obj.model = 'virtio-scsi' xml = obj.to_xml() self.assertXmlEqual(xml, """ """) class LibvirtConfigGuestWatchdogTest(LibvirtConfigBaseTest): def test_config_watchdog(self): obj = config.LibvirtConfigGuestWatchdog() obj.action = 'none' xml = obj.to_xml() self.assertXmlEqual(xml, "") def test_config_watchdog_default_action(self): obj = config.LibvirtConfigGuestWatchdog() xml = obj.to_xml() self.assertXmlEqual(xml, "") nova-2014.1/nova/tests/virt/libvirt/test_dmcrypt.py0000664000175400017540000000463112323721477023555 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os from nova import test from nova import utils from nova.virt.libvirt import dmcrypt class LibvirtDmcryptTestCase(test.TestCase): def setUp(self): super(LibvirtDmcryptTestCase, self).setUp() self.CIPHER = 'cipher' self.KEY_SIZE = 256 self.NAME = 'disk' self.TARGET = dmcrypt.volume_name(self.NAME) self.PATH = '/dev/nova-lvm/instance_disk' self.KEY = range(0, self.KEY_SIZE) self.KEY_STR = ''.join(["%02x" % x for x in range(0, self.KEY_SIZE)]) self.executes = [] self.kwargs = {} def fake_execute(*cmd, **kwargs): self.executes.append(cmd) self.kwargs = kwargs return None, None def fake_listdir(path): return [self.TARGET, '/dev/mapper/disk'] self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(os, 'listdir', fake_listdir) def test_create_volume(self): expected_commands = [('cryptsetup', 'create', self.TARGET, self.PATH, '--cipher=' + self.CIPHER, '--key-size=' + str(self.KEY_SIZE), '--key-file=-')] dmcrypt.create_volume(self.TARGET, self.PATH, self.CIPHER, self.KEY_SIZE, self.KEY) self.assertEqual(expected_commands, self.executes) self.assertEqual(self.KEY_STR, self.kwargs['process_input']) def test_delete_volume(self): expected_commands = [('cryptsetup', 'remove', self.TARGET)] dmcrypt.delete_volume(self.TARGET) self.assertEqual(expected_commands, self.executes) def test_list_volumes(self): encrypted_volumes = dmcrypt.list_volumes() self.assertEqual([self.TARGET], encrypted_volumes) nova-2014.1/nova/tests/virt/libvirt/test_libvirt_blockinfo.py0000664000175400017540000012155512323721477025601 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # Copyright 2012 University Of Minho # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy import mock from nova import block_device from nova.compute import flavors from nova import context from nova import db from nova import exception from nova.objects import block_device as block_device_obj from nova import test from nova.tests import fake_block_device import nova.tests.image.fake from nova.virt import block_device as driver_block_device from nova.virt.libvirt import blockinfo class LibvirtBlockInfoTest(test.TestCase): def setUp(self): super(LibvirtBlockInfoTest, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.get_admin_context() flavor = db.flavor_get(self.context, 2) sys_meta = flavors.save_flavor_info({}, flavor) nova.tests.image.fake.stub_out_image_service(self.stubs) self.test_instance = { 'uuid': '32dfcb37-5af1-552b-357c-be8c3aa38310', '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': 2, # m1.tiny 'system_metadata': sys_meta} def test_volume_in_mapping(self): swap = {'device_name': '/dev/sdb', 'swap_size': 1} ephemerals = [{'device_type': 'disk', 'guest_format': 'ext3', 'device_name': '/dev/sdc1', 'size': 10}, {'disk_bus': 'ide', 'guest_format': None, 'device_name': '/dev/sdd', 'size': 10}] block_device_mapping = [{'mount_device': '/dev/sde', 'device_path': 'fake_device'}, {'mount_device': '/dev/sdf', 'device_path': 'fake_device'}] block_device_info = { 'root_device_name': '/dev/sda', 'swap': swap, 'ephemerals': ephemerals, 'block_device_mapping': block_device_mapping} def _assert_volume_in_mapping(device_name, true_or_false): self.assertEqual( true_or_false, block_device.volume_in_mapping(device_name, block_device_info)) _assert_volume_in_mapping('sda', False) _assert_volume_in_mapping('sdb', True) _assert_volume_in_mapping('sdc1', True) _assert_volume_in_mapping('sdd', True) _assert_volume_in_mapping('sde', True) _assert_volume_in_mapping('sdf', True) _assert_volume_in_mapping('sdg', False) _assert_volume_in_mapping('sdh1', False) def test_find_disk_dev(self): mapping = { "disk.local": { 'dev': 'sda', 'bus': 'scsi', 'type': 'disk', }, "disk.swap": { 'dev': 'sdc', 'bus': 'scsi', 'type': 'disk', }, } dev = blockinfo.find_disk_dev_for_disk_bus(mapping, 'scsi') self.assertEqual('sdb', dev) dev = blockinfo.find_disk_dev_for_disk_bus(mapping, 'scsi', last_device=True) self.assertEqual('sdz', dev) dev = blockinfo.find_disk_dev_for_disk_bus(mapping, 'virtio') self.assertEqual('vda', dev) dev = blockinfo.find_disk_dev_for_disk_bus(mapping, 'fdc') self.assertEqual('fda', dev) def test_get_next_disk_dev(self): mapping = {} mapping['disk.local'] = blockinfo.get_next_disk_info(mapping, 'virtio') self.assertEqual({'dev': 'vda', 'bus': 'virtio', 'type': 'disk'}, mapping['disk.local']) mapping['disk.swap'] = blockinfo.get_next_disk_info(mapping, 'virtio') self.assertEqual({'dev': 'vdb', 'bus': 'virtio', 'type': 'disk'}, mapping['disk.swap']) mapping['disk.config'] = blockinfo.get_next_disk_info(mapping, 'ide', 'cdrom', True) self.assertEqual({'dev': 'hdd', 'bus': 'ide', 'type': 'cdrom'}, mapping['disk.config']) def test_get_next_disk_dev_boot_index(self): info = blockinfo.get_next_disk_info({}, 'virtio', boot_index=-1) self.assertEqual({'dev': 'vda', 'bus': 'virtio', 'type': 'disk'}, info) info = blockinfo.get_next_disk_info({}, 'virtio', boot_index=2) self.assertEqual({'dev': 'vda', 'bus': 'virtio', 'type': 'disk', 'boot_index': '2'}, info) def test_get_disk_mapping_simple(self): # The simplest possible disk mapping setup, all defaults user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide") expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'} } self.assertEqual(expect, mapping) def test_get_disk_mapping_simple_rootdev(self): # A simple disk mapping setup, but with custom root device name user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'root_device_name': '/dev/sda' } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { 'disk': {'bus': 'scsi', 'dev': 'sda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk'}, 'root': {'bus': 'scsi', 'dev': 'sda', 'type': 'disk', 'boot_index': '1'} } self.assertEqual(expect, mapping) def test_get_disk_mapping_rescue(self): # A simple disk mapping setup, but in rescue mode user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", rescue=True) expect = { 'disk.rescue': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_lxc(self): # A simple disk mapping setup, but for lxc user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("lxc", instance_ref, "lxc", "lxc", None) expect = { 'disk': {'bus': 'lxc', 'dev': None, 'type': 'disk', 'boot_index': '1'}, 'root': {'bus': 'lxc', 'dev': None, 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_simple_iso(self): # A simple disk mapping setup, but with a ISO for root device user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) image_meta = {'disk_format': 'iso'} mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", None, image_meta) expect = { 'disk': {'bus': 'ide', 'dev': 'hda', 'type': 'cdrom', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk'}, 'root': {'bus': 'ide', 'dev': 'hda', 'type': 'cdrom', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_simple_swap(self): # A simple disk mapping setup, but with a swap device added user_context = context.RequestContext(self.user_id, self.project_id) self.test_instance['system_metadata']['instance_type_swap'] = 5 instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide") expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'disk.swap': {'bus': 'virtio', 'dev': 'vdc', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_simple_configdrive(self): # A simple disk mapping setup, but with configdrive added self.flags(force_config_drive=True) user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide") expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'disk.config': {'bus': 'ide', 'dev': 'hdd', 'type': 'cdrom'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'} } self.assertEqual(expect, mapping) def test_get_disk_mapping_cdrom_configdrive(self): # A simple disk mapping setup, with configdrive added as cdrom self.flags(force_config_drive=True) self.flags(config_drive_format='iso9660') user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide") expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'disk.config': {'bus': 'ide', 'dev': 'hdd', 'type': 'cdrom'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'} } self.assertEqual(expect, mapping) def test_get_disk_mapping_disk_configdrive(self): # A simple disk mapping setup, with configdrive added as disk self.flags(force_config_drive=True) self.flags(config_drive_format='vfat') user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide") expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'disk.config': {'bus': 'virtio', 'dev': 'vdz', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_ephemeral(self): # A disk mapping with ephemeral devices user_context = context.RequestContext(self.user_id, self.project_id) self.test_instance['system_metadata']['instance_type_swap'] = 5 instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'ephemerals': [ {'device_type': 'disk', 'guest_format': 'ext3', 'device_name': '/dev/vdb', 'size': 10}, {'disk_bus': 'ide', 'guest_format': None, 'device_name': '/dev/vdc', 'size': 10}, {'device_type': 'floppy', 'device_name': '/dev/vdd', 'size': 10}, ] } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.eph0': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk', 'format': 'ext3'}, 'disk.eph1': {'bus': 'ide', 'dev': 'vdc', 'type': 'disk'}, 'disk.eph2': {'bus': 'virtio', 'dev': 'vdd', 'type': 'floppy'}, 'disk.swap': {'bus': 'virtio', 'dev': 'vde', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_custom_swap(self): # A disk mapping with a swap device at position vdb. This # should cause disk.local to be removed user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'swap': {'device_name': '/dev/vdb', 'swap_size': 10}, } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.swap': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_blockdev_root(self): # A disk mapping with a blockdev replacing the default root user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'block_device_mapping': [ {'connection_info': "fake", 'mount_device': "/dev/vda", 'boot_index': 0, 'device_type': 'disk', 'delete_on_termination': True}, ] } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { '/dev/vda': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_blockdev_eph(self): # A disk mapping with a blockdev replacing the ephemeral device user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'block_device_mapping': [ {'connection_info': "fake", 'mount_device': "/dev/vdb", 'boot_index': -1, 'delete_on_termination': True}, ] } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, '/dev/vdb': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_blockdev_many(self): # A disk mapping with a blockdev replacing all devices user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'block_device_mapping': [ {'connection_info': "fake", 'mount_device': "/dev/vda", 'boot_index': 0, 'disk_bus': 'scsi', 'delete_on_termination': True}, {'connection_info': "fake", 'mount_device': "/dev/vdb", 'boot_index': -1, 'delete_on_termination': True}, {'connection_info': "fake", 'mount_device': "/dev/vdc", 'boot_index': -1, 'device_type': 'cdrom', 'delete_on_termination': True}, ] } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { '/dev/vda': {'bus': 'scsi', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, '/dev/vdb': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'}, '/dev/vdc': {'bus': 'virtio', 'dev': 'vdc', 'type': 'cdrom'}, 'root': {'bus': 'scsi', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_complex(self): # The strangest possible disk mapping setup user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'root_device_name': '/dev/vdf', 'swap': {'device_name': '/dev/vdy', 'swap_size': 10}, 'ephemerals': [ {'device_type': 'disk', 'guest_format': 'ext3', 'device_name': '/dev/vdb', 'size': 10}, {'disk_bus': 'ide', 'guest_format': None, 'device_name': '/dev/vdc', 'size': 10}, ], 'block_device_mapping': [ {'connection_info': "fake", 'mount_device': "/dev/vda", 'boot_index': 1, 'delete_on_termination': True}, ] } mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) expect = { 'disk': {'bus': 'virtio', 'dev': 'vdf', 'type': 'disk', 'boot_index': '1'}, '/dev/vda': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '2'}, 'disk.eph0': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk', 'format': 'ext3'}, 'disk.eph1': {'bus': 'ide', 'dev': 'vdc', 'type': 'disk'}, 'disk.swap': {'bus': 'virtio', 'dev': 'vdy', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vdf', 'type': 'disk', 'boot_index': '1'}, } self.assertEqual(expect, mapping) def test_get_disk_mapping_updates_original(self): user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) block_device_info = { 'root_device_name': '/dev/vda', 'swap': {'device_name': '/dev/vdb', 'device_type': 'really_lame_type', 'swap_size': 10}, 'ephemerals': [{'disk_bus': 'no_such_bus', 'device_type': 'yeah_right', 'device_name': '/dev/vdc', 'size': 10}], 'block_device_mapping': [ {'connection_info': "fake", 'mount_device': None, 'device_type': 'lawnmower', 'delete_on_termination': True}] } expected_swap = {'device_name': '/dev/vdb', 'disk_bus': 'virtio', 'device_type': 'disk', 'swap_size': 10} expected_ephemeral = {'disk_bus': 'virtio', 'device_type': 'disk', 'device_name': '/dev/vdc', 'size': 10} expected_bdm = {'connection_info': "fake", 'mount_device': '/dev/vdd', 'device_type': 'disk', 'disk_bus': 'virtio', 'delete_on_termination': True} blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide", block_device_info) self.assertEqual(expected_swap, block_device_info['swap']) self.assertEqual(expected_ephemeral, block_device_info['ephemerals'][0]) self.assertEqual(expected_bdm, block_device_info['block_device_mapping'][0]) def test_get_disk_bus(self): expected = ( ('x86_64', 'disk', 'virtio'), ('x86_64', 'cdrom', 'ide'), ('x86_64', 'floppy', 'fdc'), ('ppc', 'disk', 'virtio'), ('ppc', 'cdrom', 'scsi'), ('ppc64', 'disk', 'virtio'), ('ppc64', 'cdrom', 'scsi') ) for arch, dev, res in expected: with mock.patch.object(blockinfo.libvirt_utils, 'get_arch', return_value=arch): bus = blockinfo.get_disk_bus_for_device_type('kvm', device_type=dev) self.assertEqual(res, bus) expected = ( ('scsi', None, 'disk', 'scsi'), (None, 'scsi', 'cdrom', 'scsi'), ('usb', None, 'disk', 'usb') ) for dbus, cbus, dev, res in expected: image_meta = {'properties': {'hw_disk_bus': dbus, 'hw_cdrom_bus': cbus}} bus = blockinfo.get_disk_bus_for_device_type('kvm', image_meta, device_type=dev) self.assertEqual(res, bus) image_meta = {'properties': {'hw_disk_bus': 'xen'}} self.assertRaises(exception.UnsupportedHardware, blockinfo.get_disk_bus_for_device_type, 'kvm', image_meta) def test_success_get_disk_bus_for_disk_dev(self): expected = ( ('ide', ("kvm", "hda")), ('scsi', ("kvm", "sdf")), ('virtio', ("kvm", "vds")), ('fdc', ("kvm", "fdc")), ('uml', ("kvm", "ubd")), ('xen', ("xen", "sdf")), ('xen', ("xen", "xvdb")) ) for res, args in expected: self.assertEqual(res, blockinfo.get_disk_bus_for_disk_dev(*args)) def test_fail_get_disk_bus_for_disk_dev(self): self.assertRaises(exception.NovaException, blockinfo.get_disk_bus_for_disk_dev, 'inv', 'val') def test_get_config_drive_type_default(self): config_drive_type = blockinfo.get_config_drive_type() self.assertEqual('cdrom', config_drive_type) def test_get_config_drive_type_cdrom(self): self.flags(config_drive_format='iso9660') config_drive_type = blockinfo.get_config_drive_type() self.assertEqual('cdrom', config_drive_type) def test_get_config_drive_type_disk(self): self.flags(config_drive_format='vfat') config_drive_type = blockinfo.get_config_drive_type() self.assertEqual('disk', config_drive_type) def test_get_config_drive_type_improper_value(self): self.flags(config_drive_format='test') self.assertRaises(exception.ConfigDriveUnknownFormat, blockinfo.get_config_drive_type) def test_get_info_from_bdm(self): bdms = [{'device_name': '/dev/vds', 'device_type': 'disk', 'disk_bus': 'usb', 'swap_size': 4}, {'device_type': 'disk', 'guest_format': 'ext3', 'device_name': '/dev/vdb', 'size': 2}, {'disk_bus': 'ide', 'guest_format': None, 'device_name': '/dev/vdc', 'size': 3}, {'connection_info': "fake", 'mount_device': "/dev/sdr", 'disk_bus': 'lame_bus', 'device_type': 'cdrom', 'boot_index': 0, 'delete_on_termination': True}, {'connection_info': "fake", 'mount_device': "/dev/vdo", 'disk_bus': 'scsi', 'boot_index': 1, 'device_type': 'lame_type', 'delete_on_termination': True}] expected = [{'dev': 'vds', 'type': 'disk', 'bus': 'usb'}, {'dev': 'vdb', 'type': 'disk', 'bus': 'virtio', 'format': 'ext3'}, {'dev': 'vdc', 'type': 'disk', 'bus': 'ide'}, {'dev': 'sdr', 'type': 'cdrom', 'bus': 'scsi', 'boot_index': '1'}, {'dev': 'vdo', 'type': 'disk', 'bus': 'scsi', 'boot_index': '2'}] for bdm, expected in zip(bdms, expected): self.assertEqual(expected, blockinfo.get_info_from_bdm('kvm', bdm, {})) # Test that passed bus and type are considered bdm = {'device_name': '/dev/vda'} expected = {'dev': 'vda', 'type': 'disk', 'bus': 'ide'} self.assertEqual( expected, blockinfo.get_info_from_bdm('kvm', bdm, {}, disk_bus='ide', dev_type='disk')) # Test that lame bus values are defaulted properly bdm = {'disk_bus': 'lame_bus', 'device_type': 'cdrom'} with mock.patch.object(blockinfo, 'get_disk_bus_for_device_type', return_value='ide') as get_bus: blockinfo.get_info_from_bdm('kvm', bdm, {}) get_bus.assert_called_once_with('kvm', None, 'cdrom') # Test that missing device is defaulted as expected bdm = {'disk_bus': 'ide', 'device_type': 'cdrom'} expected = {'dev': 'vdd', 'type': 'cdrom', 'bus': 'ide'} mapping = {'root': {'dev': 'vda'}} with mock.patch.object(blockinfo, 'find_disk_dev_for_disk_bus', return_value='vdd') as find_dev: got = blockinfo.get_info_from_bdm( 'kvm', bdm, mapping, assigned_devices=['vdb', 'vdc']) find_dev.assert_called_once_with( {'root': {'dev': 'vda'}, 'vdb': {'dev': 'vdb'}, 'vdc': {'dev': 'vdc'}}, 'ide') self.assertEqual(expected, got) def test_get_device_name(self): bdm_obj = block_device_obj.BlockDeviceMapping(self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'fake-volume-id-1', 'boot_index': 0})) self.assertEqual('/dev/vda', blockinfo.get_device_name(bdm_obj)) driver_bdm = driver_block_device.DriverVolumeBlockDevice(bdm_obj) self.assertEqual('/dev/vda', blockinfo.get_device_name(driver_bdm)) bdm_obj.device_name = None self.assertEqual(None, blockinfo.get_device_name(bdm_obj)) driver_bdm = driver_block_device.DriverVolumeBlockDevice(bdm_obj) self.assertEqual(None, blockinfo.get_device_name(driver_bdm)) @mock.patch('nova.virt.libvirt.blockinfo.find_disk_dev_for_disk_bus', return_value='vda') @mock.patch('nova.virt.libvirt.blockinfo.get_disk_bus_for_disk_dev', return_value='virtio') def test_get_root_info_no_bdm(self, mock_get_bus, mock_find_dev): blockinfo.get_root_info('kvm', None, None, 'virtio', 'ide') mock_find_dev.assert_called_once_with({}, 'virtio') blockinfo.get_root_info('kvm', None, None, 'virtio', 'ide', root_device_name='/dev/vda') mock_get_bus.assert_called_once_with('kvm', '/dev/vda') @mock.patch('nova.virt.libvirt.blockinfo.get_info_from_bdm') def test_get_root_info_bdm(self, mock_get_info): root_bdm = {'mount_device': '/dev/vda', 'disk_bus': 'scsi', 'device_type': 'disk'} # No root_device_name blockinfo.get_root_info('kvm', None, root_bdm, 'virtio', 'ide') mock_get_info.assert_called_once_with('kvm', root_bdm, {}, 'virtio') mock_get_info.reset_mock() # Both device names blockinfo.get_root_info('kvm', None, root_bdm, 'virtio', 'ide', root_device_name='sda') mock_get_info.assert_called_once_with('kvm', root_bdm, {}, 'virtio') mock_get_info.reset_mock() # Missing device names del root_bdm['mount_device'] blockinfo.get_root_info('kvm', None, root_bdm, 'virtio', 'ide', root_device_name='sda') mock_get_info.assert_called_once_with('kvm', {'device_name': 'sda', 'disk_bus': 'scsi', 'device_type': 'disk'}, {}, 'virtio') def test_get_boot_order_simple(self): disk_info = { 'disk_bus': 'virtio', 'cdrom_bus': 'ide', 'mapping': { 'disk': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, 'root': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } } expected_order = ['hd'] self.assertEqual(expected_order, blockinfo.get_boot_order(disk_info)) def test_get_boot_order_complex(self): disk_info = { 'disk_bus': 'virtio', 'cdrom_bus': 'ide', 'mapping': { 'disk': {'bus': 'virtio', 'dev': 'vdf', 'type': 'disk', 'boot_index': '1'}, '/dev/hda': {'bus': 'ide', 'dev': 'hda', 'type': 'cdrom', 'boot_index': '3'}, '/dev/fda': {'bus': 'fdc', 'dev': 'fda', 'type': 'floppy', 'boot_index': '2'}, 'disk.eph0': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk', 'format': 'ext3'}, 'disk.eph1': {'bus': 'ide', 'dev': 'vdc', 'type': 'disk'}, 'disk.swap': {'bus': 'virtio', 'dev': 'vdy', 'type': 'disk'}, 'root': {'bus': 'virtio', 'dev': 'vdf', 'type': 'disk', 'boot_index': '1'}, } } expected_order = ['hd', 'fd', 'cdrom'] self.assertEqual(expected_order, blockinfo.get_boot_order(disk_info)) def test_get_boot_order_overlapping(self): disk_info = { 'disk_bus': 'virtio', 'cdrom_bus': 'ide', 'mapping': { '/dev/vda': {'bus': 'scsi', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, '/dev/vdb': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk', 'boot_index': '2'}, '/dev/vdc': {'bus': 'virtio', 'dev': 'vdc', 'type': 'cdrom', 'boot_index': '3'}, 'root': {'bus': 'scsi', 'dev': 'vda', 'type': 'disk', 'boot_index': '1'}, } } expected_order = ['hd', 'cdrom'] self.assertEqual(expected_order, blockinfo.get_boot_order(disk_info)) class DefaultDeviceNamesTestCase(test.TestCase): def setUp(self): super(DefaultDeviceNamesTestCase, self).setUp() self.context = context.get_admin_context() self.instance = { 'uuid': '32dfcb37-5af1-552b-357c-be8c3aa38310', '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': 2} self.root_device_name = '/dev/vda' self.virt_type = 'kvm' self.flavor = {'swap': 4} self.patchers = [] self.patchers.append(mock.patch('nova.compute.flavors.extract_flavor', return_value=self.flavor)) self.patchers.append(mock.patch( 'nova.objects.block_device.BlockDeviceMapping.save')) for patcher in self.patchers: patcher.start() self.ephemerals = [block_device_obj.BlockDeviceMapping( self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdb', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'disk_bus': 'virtio', 'delete_on_termination': True, 'guest_format': None, 'volume_size': 1, 'boot_index': -1}))] self.swap = [block_device_obj.BlockDeviceMapping( self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdc', 'source_type': 'blank', 'destination_type': 'local', 'device_type': 'disk', 'disk_bus': 'virtio', 'delete_on_termination': True, 'guest_format': 'swap', 'volume_size': 1, 'boot_index': -1}))] self.block_device_mapping = [ block_device_obj.BlockDeviceMapping(self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', 'source_type': 'volume', 'destination_type': 'volume', 'device_type': 'disk', 'disk_bus': 'virtio', 'volume_id': 'fake-volume-id-1', 'boot_index': 0})), block_device_obj.BlockDeviceMapping(self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdd', 'source_type': 'snapshot', 'device_type': 'disk', 'disk_bus': 'virtio', 'destination_type': 'volume', 'snapshot_id': 'fake-snapshot-id-1', 'boot_index': -1}))] def tearDown(self): super(DefaultDeviceNamesTestCase, self).tearDown() for patcher in self.patchers: patcher.stop() def _test_default_device_names(self, *block_device_lists): blockinfo.default_device_names(self.virt_type, self.context, self.instance, self.root_device_name, *block_device_lists) def test_only_block_device_mapping(self): # Test no-op original_bdm = copy.deepcopy(self.block_device_mapping) self._test_default_device_names([], [], self.block_device_mapping) for original, defaulted in zip( original_bdm, self.block_device_mapping): self.assertEqual(original.device_name, defaulted.device_name) # Asser it defaults the missing one as expected self.block_device_mapping[1]['device_name'] = None self._test_default_device_names([], [], self.block_device_mapping) self.assertEqual('/dev/vdd', self.block_device_mapping[1]['device_name']) def test_with_ephemerals(self): # Test ephemeral gets assigned self.ephemerals[0]['device_name'] = None self._test_default_device_names(self.ephemerals, [], self.block_device_mapping) self.assertEqual('/dev/vdb', self.ephemerals[0]['device_name']) self.block_device_mapping[1]['device_name'] = None self._test_default_device_names(self.ephemerals, [], self.block_device_mapping) self.assertEqual('/dev/vdd', self.block_device_mapping[1]['device_name']) def test_with_swap(self): # Test swap only self.swap[0]['device_name'] = None self._test_default_device_names([], self.swap, []) self.assertEqual('/dev/vdc', self.swap[0]['device_name']) # Test swap and block_device_mapping self.swap[0]['device_name'] = None self.block_device_mapping[1]['device_name'] = None self._test_default_device_names([], self.swap, self.block_device_mapping) self.assertEqual('/dev/vdc', self.swap[0]['device_name']) self.assertEqual('/dev/vdd', self.block_device_mapping[1]['device_name']) def test_all_together(self): # Test swap missing self.swap[0]['device_name'] = None self._test_default_device_names(self.ephemerals, self.swap, self.block_device_mapping) self.assertEqual('/dev/vdc', self.swap[0]['device_name']) # Test swap and eph missing self.swap[0]['device_name'] = None self.ephemerals[0]['device_name'] = None self._test_default_device_names(self.ephemerals, self.swap, self.block_device_mapping) self.assertEqual('/dev/vdb', self.ephemerals[0]['device_name']) self.assertEqual('/dev/vdc', self.swap[0]['device_name']) # Test all missing self.swap[0]['device_name'] = None self.ephemerals[0]['device_name'] = None self.block_device_mapping[1]['device_name'] = None self._test_default_device_names(self.ephemerals, self.swap, self.block_device_mapping) self.assertEqual('/dev/vdb', self.ephemerals[0]['device_name']) self.assertEqual('/dev/vdc', self.swap[0]['device_name']) self.assertEqual('/dev/vdd', self.block_device_mapping[1]['device_name']) nova-2014.1/nova/tests/virt/libvirt/test_designer.py0000664000175400017540000000233112323721477023666 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 eNovance SAS # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import test from nova.virt.libvirt import designer class DesignerTestCase(test.NoDBTestCase): def test_set_vif_bandwidth_config_no_extra_specs(self): # Test whether test_set_vif_bandwidth_config_no_extra_specs fails when # its second parameter has no 'extra_specs' field. try: # The conf will never be user be used, so we can use 'None'. # An empty dictionary is fine: all that matters it that there is no # 'extra_specs' field. designer.set_vif_bandwidth_config(None, {}) except KeyError as e: self.fail('KeyError: %s' % e) nova-2014.1/nova/tests/virt/libvirt/test_libvirt_vif.py0000664000175400017540000011421412323721477024411 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nicira, 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. import contextlib from lxml import etree import mock from oslo.config import cfg from nova.compute import flavors from nova import exception from nova.network import linux_net from nova.network import model as network_model from nova.openstack.common import processutils from nova import test from nova.tests.virt.libvirt import fakelibvirt from nova import utils from nova.virt.libvirt import config as vconfig from nova.virt.libvirt import vif CONF = cfg.CONF class LibvirtVifTestCase(test.TestCase): gateway_bridge_4 = network_model.IP(address='101.168.1.1', type='gateway') dns_bridge_4 = network_model.IP(address='8.8.8.8', type=None) ips_bridge_4 = [network_model.IP(address='101.168.1.9', type=None)] subnet_bridge_4 = network_model.Subnet(cidr='101.168.1.0/24', dns=[dns_bridge_4], gateway=gateway_bridge_4, routes=None, dhcp_server='191.168.1.1') gateway_bridge_6 = network_model.IP(address='101:1db9::1', type='gateway') subnet_bridge_6 = network_model.Subnet(cidr='101:1db9::/64', dns=None, gateway=gateway_bridge_6, ips=None, routes=None) network_bridge = network_model.Network(id='network-id-xxx-yyy-zzz', bridge='br0', label=None, subnets=[subnet_bridge_4, subnet_bridge_6], bridge_interface='eth0', vlan=99) vif_bridge = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_bridge, type=network_model.VIF_TYPE_BRIDGE, devname='tap-xxx-yyy-zzz', ovs_interfaceid=None) network_bridge_neutron = network_model.Network(id='network-id-xxx-yyy-zzz', bridge=None, label=None, subnets=[subnet_bridge_4, subnet_bridge_6], bridge_interface='eth0', vlan=99) vif_bridge_neutron = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_bridge_neutron, type=None, devname='tap-xxx-yyy-zzz', ovs_interfaceid='aaa-bbb-ccc') network_ovs = network_model.Network(id='network-id-xxx-yyy-zzz', bridge='br0', label=None, subnets=[subnet_bridge_4, subnet_bridge_6], bridge_interface=None, vlan=99) network_ivs = network_model.Network(id='network-id-xxx-yyy-zzz', bridge='br0', label=None, subnets=[subnet_bridge_4, subnet_bridge_6], bridge_interface=None, vlan=99) vif_ovs = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_ovs, type=network_model.VIF_TYPE_OVS, devname='tap-xxx-yyy-zzz', ovs_interfaceid='aaa-bbb-ccc') vif_ovs_hybrid = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_ovs, type=network_model.VIF_TYPE_OVS, details={'ovs_hybrid_plug': True, 'port_filter': True}, devname='tap-xxx-yyy-zzz', ovs_interfaceid='aaa-bbb-ccc') vif_ovs_filter_cap = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_ovs, type=network_model.VIF_TYPE_OVS, details={'port_filter': True}, devname='tap-xxx-yyy-zzz', ovs_interfaceid='aaa-bbb-ccc') vif_ovs_legacy = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_ovs, type=None, devname=None, ovs_interfaceid=None) vif_ivs = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_ivs, type=network_model.VIF_TYPE_IVS, devname='tap-xxx-yyy-zzz', ovs_interfaceid='aaa-bbb-ccc') vif_ivs_legacy = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_ovs, type=None, devname=None, ovs_interfaceid='aaa') vif_none = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_bridge, type=None, devname='tap-xxx-yyy-zzz', ovs_interfaceid=None) network_8021 = network_model.Network(id='network-id-xxx-yyy-zzz', bridge=None, label=None, subnets=[subnet_bridge_4, subnet_bridge_6], interface='eth0', vlan=99) vif_8021qbh = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_8021, type=network_model.VIF_TYPE_802_QBH, devname='tap-xxx-yyy-zzz', ovs_interfaceid=None, qbh_params=network_model.VIF8021QbhParams( profileid="xxx-yyy-zzz")) vif_8021qbg = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_8021, type=network_model.VIF_TYPE_802_QBG, devname='tap-xxx-yyy-zzz', ovs_interfaceid=None, qbg_params=network_model.VIF8021QbgParams( managerid="xxx-yyy-zzz", typeid="aaa-bbb-ccc", typeidversion="1", instanceid="ddd-eee-fff")) network_mlnx = network_model.Network(id='network-id-xxx-yyy-zzz', label=None, bridge=None, subnets=[subnet_bridge_4, subnet_bridge_6], interface='eth0') network_midonet = network_model.Network(id='network-id-xxx-yyy-zzz', label=None, bridge=None, subnets=[subnet_bridge_4], interface='eth0') vif_mlnx = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_mlnx, type=network_model.VIF_TYPE_MLNX_DIRECT, devname='tap-xxx-yyy-zzz') vif_midonet = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_midonet, type=network_model.VIF_TYPE_MIDONET, devname='tap-xxx-yyy-zzz') vif_iovisor = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=network_bridge, type=network_model.VIF_TYPE_IOVISOR, devname='tap-xxx-yyy-zzz', ovs_interfaceid=None) instance = { 'name': 'instance-name', 'uuid': 'instance-uuid' } bandwidth = { 'quota:vif_inbound_peak': '200', 'quota:vif_outbound_peak': '20', 'quota:vif_inbound_average': '100', 'quota:vif_outbound_average': '10', 'quota:vif_inbound_burst': '300', 'quota:vif_outbound_burst': '30' } def setUp(self): super(LibvirtVifTestCase, self).setUp() self.flags(allow_same_net_traffic=True) self.executes = [] def fake_execute(*cmd, **kwargs): self.executes.append(cmd) return None, None self.stubs.Set(utils, 'execute', fake_execute) def _get_conn(self, uri="qemu:///session", ver=None): def __inner(): if ver is None: return fakelibvirt.Connection(uri, False) else: return fakelibvirt.Connection(uri, False, ver) return __inner def _get_node(self, xml): doc = etree.fromstring(xml) ret = doc.findall('./devices/interface') self.assertEqual(len(ret), 1) return ret[0] def _assertMacEquals(self, node, vif): mac = node.find("mac").get("address") self.assertEqual(mac, vif['address']) def _assertTypeEquals(self, node, type, attr, source, br_want, prefix=None): self.assertEqual(node.get("type"), type) br_name = node.find(attr).get(source) if prefix is None: self.assertEqual(br_name, br_want) else: self.assertTrue(br_name.startswith(prefix)) def _assertTypeAndMacEquals(self, node, type, attr, source, vif, br_want=None, size=0, prefix=None): ret = node.findall("filterref") self.assertEqual(len(ret), size) self._assertTypeEquals(node, type, attr, source, br_want, prefix) self._assertMacEquals(node, vif) def _assertModel(self, xml, model_want=None, driver_want=None): node = self._get_node(xml) if model_want is None: ret = node.findall("model") self.assertEqual(len(ret), 0) else: model = node.find("model").get("type") self.assertEqual(model, model_want) if driver_want is None: ret = node.findall("driver") self.assertEqual(len(ret), 0) else: driver = node.find("driver").get("name") self.assertEqual(driver, driver_want) def _get_conf(self): conf = vconfig.LibvirtConfigGuest() conf.virt_type = "qemu" conf.name = "fake-name" conf.uuid = "fake-uuid" conf.memory = 100 * 1024 conf.vcpus = 4 return conf def _get_instance_xml(self, driver, vif, image_meta=None): default_inst_type = flavors.get_default_flavor() extra_specs = default_inst_type['extra_specs'].items() quota_bandwidth = self.bandwidth.items() default_inst_type['extra_specs'] = dict(extra_specs + quota_bandwidth) conf = self._get_conf() nic = driver.get_config(self.instance, vif, image_meta, default_inst_type) conf.add_device(nic) return conf.to_xml() def test_multiple_nics(self): conf = self._get_conf() # Tests multiple nic configuration and that target_dev is # set for each nics = [{'net_type': 'bridge', 'mac_addr': '00:00:00:00:00:0b', 'source_dev': 'b_source_dev', 'target_dev': 'b_target_dev'}, {'net_type': 'ethernet', 'mac_addr': '00:00:00:00:00:0e', 'source_dev': 'e_source_dev', 'target_dev': 'e_target_dev'}, {'net_type': 'direct', 'mac_addr': '00:00:00:00:00:0d', 'source_dev': 'd_source_dev', 'target_dev': 'd_target_dev'}] for nic in nics: nic_conf = vconfig.LibvirtConfigGuestInterface() nic_conf.net_type = nic['net_type'] nic_conf.target_dev = nic['target_dev'] nic_conf.mac_addr = nic['mac_addr'] nic_conf.source_dev = nic['source_dev'] conf.add_device(nic_conf) xml = conf.to_xml() doc = etree.fromstring(xml) for nic in nics: path = "./devices/interface/[@type='%s']" % nic['net_type'] node = doc.find(path) self.assertEqual(nic['net_type'], node.get("type")) self.assertEqual(nic['mac_addr'], node.find("mac").get("address")) self.assertEqual(nic['target_dev'], node.find("target").get("dev")) def test_model_novirtio(self): self.flags(use_virtio_for_bridges=False, virt_type='kvm', group='libvirt') d = vif.LibvirtGenericVIFDriver(self._get_conn()) xml = self._get_instance_xml(d, self.vif_bridge) self._assertModel(xml) def test_model_kvm(self): self.flags(use_virtio_for_bridges=True, virt_type='kvm', group='libvirt') d = vif.LibvirtGenericVIFDriver(self._get_conn()) xml = self._get_instance_xml(d, self.vif_bridge) self._assertModel(xml, "virtio") def test_model_kvm_custom(self): self.flags(use_virtio_for_bridges=True, virt_type='kvm', group='libvirt') d = vif.LibvirtGenericVIFDriver(self._get_conn()) image_meta = {'properties': {'hw_vif_model': 'e1000'}} xml = self._get_instance_xml(d, self.vif_bridge, image_meta) self._assertModel(xml, "e1000") def test_model_kvm_bogus(self): self.flags(use_virtio_for_bridges=True, virt_type='kvm', group='libvirt') d = vif.LibvirtGenericVIFDriver(self._get_conn()) image_meta = {'properties': {'hw_vif_model': 'acme'}} self.assertRaises(exception.UnsupportedHardware, self._get_instance_xml, d, self.vif_bridge, image_meta) def _test_model_qemu(self, *vif_objs, **kw): libvirt_version = kw.get('libvirt_version') self.flags(use_virtio_for_bridges=True, virt_type='qemu', group='libvirt') for vif_obj in vif_objs: d = vif.LibvirtGenericVIFDriver(self._get_conn()) if libvirt_version is not None: d.libvirt_version = libvirt_version xml = self._get_instance_xml(d, vif_obj) doc = etree.fromstring(xml) bandwidth = doc.find('./devices/interface/bandwidth') self.assertNotEqual(bandwidth, None) inbound = bandwidth.find('inbound') self.assertEqual(inbound.get("average"), self.bandwidth['quota:vif_inbound_average']) self.assertEqual(inbound.get("peak"), self.bandwidth['quota:vif_inbound_peak']) self.assertEqual(inbound.get("burst"), self.bandwidth['quota:vif_inbound_burst']) outbound = bandwidth.find('outbound') self.assertEqual(outbound.get("average"), self.bandwidth['quota:vif_outbound_average']) self.assertEqual(outbound.get("peak"), self.bandwidth['quota:vif_outbound_peak']) self.assertEqual(outbound.get("burst"), self.bandwidth['quota:vif_outbound_burst']) self._assertModel(xml, "virtio", "qemu") def test_model_qemu_no_firewall(self): self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") self._test_model_qemu( self.vif_bridge, self.vif_8021qbh, self.vif_8021qbg, self.vif_iovisor, self.vif_mlnx, ) self._test_model_qemu(self.vif_ovs, libvirt_version=vif.LIBVIRT_OVS_VPORT_VERSION) def test_model_qemu_iptables(self): self.flags(firewall_driver="nova.virt.firewall.IptablesFirewallDriver") self._test_model_qemu( self.vif_bridge, self.vif_ovs, self.vif_ivs, self.vif_8021qbh, self.vif_8021qbg, self.vif_iovisor, self.vif_mlnx, ) def test_model_xen(self): self.flags(use_virtio_for_bridges=True, virt_type='xen', group='libvirt') d = vif.LibvirtGenericVIFDriver(self._get_conn("xen:///system")) xml = self._get_instance_xml(d, self.vif_bridge) self._assertModel(xml) def test_generic_driver_none(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) self.assertRaises(exception.NovaException, self._get_instance_xml, d, self.vif_none) def _check_bridge_driver(self, d, vif, br_want): xml = self._get_instance_xml(d, vif) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "bridge", "source", "bridge", self.vif_bridge, br_want, 1) def test_generic_driver_bridge(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) self._check_bridge_driver(d, self.vif_bridge, self.vif_bridge['network']['bridge']) def _check_ivs_ethernet_driver(self, d, vif, dev_prefix): self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") xml = self._get_instance_xml(d, vif) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "ethernet", "target", "dev", self.vif_ivs, prefix=dev_prefix) script = node.find("script").get("path") self.assertEqual(script, "") def _check_ovs_ethernet_driver(self, d, vif, dev_prefix): self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") xml = self._get_instance_xml(d, vif) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "ethernet", "target", "dev", self.vif_ovs, prefix=dev_prefix) script = node.find("script").get("path") self.assertEqual(script, "") def test_ovs_ethernet_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) self._check_ovs_ethernet_driver(d, self.vif_ovs, "tap") def test_unplug_ivs_ethernet(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) with mock.patch.object(linux_net, 'delete_ivs_vif_port') as delete: delete.side_effect = processutils.ProcessExecutionError d.unplug_ivs_ethernet(None, self.vif_ovs) def test_plug_ovs_hybrid(self): calls = { 'device_exists': [mock.call('qbrvif-xxx-yyy'), mock.call('qvovif-xxx-yyy')], '_create_veth_pair': [mock.call('qvbvif-xxx-yyy', 'qvovif-xxx-yyy')], 'execute': [mock.call('brctl', 'addbr', 'qbrvif-xxx-yyy', run_as_root=True), mock.call('brctl', 'setfd', 'qbrvif-xxx-yyy', 0, run_as_root=True), mock.call('brctl', 'stp', 'qbrvif-xxx-yyy', 'off', run_as_root=True), mock.call('tee', ('/sys/class/net/qbrvif-xxx-yyy' '/bridge/multicast_snooping'), process_input='0', run_as_root=True, check_exit_code=[0, 1]), mock.call('ip', 'link', 'set', 'qbrvif-xxx-yyy', 'up', run_as_root=True), mock.call('brctl', 'addif', 'qbrvif-xxx-yyy', 'qvbvif-xxx-yyy', run_as_root=True)], 'create_ovs_vif_port': [mock.call('br0', 'qvovif-xxx-yyy', 'aaa-bbb-ccc', 'ca:fe:de:ad:be:ef', 'instance-uuid')] } with contextlib.nested( mock.patch.object(linux_net, 'device_exists', return_value=False), mock.patch.object(utils, 'execute'), mock.patch.object(linux_net, '_create_veth_pair'), mock.patch.object(linux_net, 'create_ovs_vif_port') ) as (device_exists, execute, _create_veth_pair, create_ovs_vif_port): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) d.plug_ovs_hybrid(self.instance, self.vif_ovs) device_exists.assert_has_calls(calls['device_exists']) _create_veth_pair.assert_has_calls(calls['_create_veth_pair']) execute.assert_has_calls(calls['execute']) create_ovs_vif_port.assert_has_calls(calls['create_ovs_vif_port']) def test_unplug_ovs_hybrid(self): calls = { 'device_exists': [mock.call('qbrvif-xxx-yyy')], 'execute': [mock.call('brctl', 'delif', 'qbrvif-xxx-yyy', 'qvbvif-xxx-yyy', run_as_root=True), mock.call('ip', 'link', 'set', 'qbrvif-xxx-yyy', 'down', run_as_root=True), mock.call('brctl', 'delbr', 'qbrvif-xxx-yyy', run_as_root=True)], 'delete_ovs_vif_port': [mock.call('br0', 'qvovif-xxx-yyy')] } with contextlib.nested( mock.patch.object(linux_net, 'device_exists', return_value=True), mock.patch.object(utils, 'execute'), mock.patch.object(linux_net, 'delete_ovs_vif_port') ) as (device_exists, execute, delete_ovs_vif_port): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) d.unplug_ovs_hybrid(None, self.vif_ovs) device_exists.assert_has_calls(calls['device_exists']) execute.assert_has_calls(calls['execute']) delete_ovs_vif_port.assert_has_calls(calls['delete_ovs_vif_port']) def test_unplug_ovs_hybrid_bridge_does_not_exist(self): calls = { 'device_exists': [mock.call('qbrvif-xxx-yyy')], 'delete_ovs_vif_port': [mock.call('br0', 'qvovif-xxx-yyy')] } with contextlib.nested( mock.patch.object(linux_net, 'device_exists', return_value=False), mock.patch.object(linux_net, 'delete_ovs_vif_port') ) as (device_exists, delete_ovs_vif_port): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) d.unplug_ovs_hybrid(None, self.vif_ovs) device_exists.assert_has_calls(calls['device_exists']) delete_ovs_vif_port.assert_has_calls(calls['delete_ovs_vif_port']) def test_plug_ivs_hybrid(self): calls = { 'device_exists': [mock.call('qbrvif-xxx-yyy'), mock.call('qvovif-xxx-yyy')], '_create_veth_pair': [mock.call('qvbvif-xxx-yyy', 'qvovif-xxx-yyy')], 'execute': [mock.call('brctl', 'addbr', 'qbrvif-xxx-yyy', run_as_root=True), mock.call('brctl', 'setfd', 'qbrvif-xxx-yyy', 0, run_as_root=True), mock.call('brctl', 'stp', 'qbrvif-xxx-yyy', 'off', run_as_root=True), mock.call('tee', ('/sys/class/net/qbrvif-xxx-yyy' '/bridge/multicast_snooping'), process_input='0', run_as_root=True, check_exit_code=[0, 1]), mock.call('ip', 'link', 'set', 'qbrvif-xxx-yyy', 'up', run_as_root=True), mock.call('brctl', 'addif', 'qbrvif-xxx-yyy', 'qvbvif-xxx-yyy', run_as_root=True)], 'create_ivs_vif_port': [mock.call('qvovif-xxx-yyy', 'aaa-bbb-ccc', 'ca:fe:de:ad:be:ef', 'instance-uuid')] } with contextlib.nested( mock.patch.object(linux_net, 'device_exists', return_value=False), mock.patch.object(utils, 'execute'), mock.patch.object(linux_net, '_create_veth_pair'), mock.patch.object(linux_net, 'create_ivs_vif_port') ) as (device_exists, execute, _create_veth_pair, create_ivs_vif_port): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) d.plug_ivs_hybrid(self.instance, self.vif_ivs) device_exists.assert_has_calls(calls['device_exists']) _create_veth_pair.assert_has_calls(calls['_create_veth_pair']) execute.assert_has_calls(calls['execute']) create_ivs_vif_port.assert_has_calls(calls['create_ivs_vif_port']) def test_unplug_ivs_hybrid(self): calls = { 'execute': [mock.call('brctl', 'delif', 'qbrvif-xxx-yyy', 'qvbvif-xxx-yyy', run_as_root=True), mock.call('ip', 'link', 'set', 'qbrvif-xxx-yyy', 'down', run_as_root=True), mock.call('brctl', 'delbr', 'qbrvif-xxx-yyy', run_as_root=True)], 'delete_ivs_vif_port': [mock.call('qvovif-xxx-yyy')] } with contextlib.nested( mock.patch.object(utils, 'execute'), mock.patch.object(linux_net, 'delete_ivs_vif_port') ) as (execute, delete_ivs_vif_port): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) d.unplug_ivs_hybrid(None, self.vif_ivs) execute.assert_has_calls(calls['execute']) delete_ivs_vif_port.assert_has_calls(calls['delete_ivs_vif_port']) def test_unplug_ivs_hybrid_bridge_does_not_exist(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) with mock.patch.object(utils, 'execute') as execute: execute.side_effect = processutils.ProcessExecutionError d.unplug_ivs_hybrid(None, self.vif_ivs) def test_unplug_iovisor(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) with mock.patch.object(utils, 'execute') as execute: execute.side_effect = processutils.ProcessExecutionError mynetwork = network_model.Network(id='network-id-xxx-yyy-zzz', label='mylabel') myvif = network_model.VIF(id='vif-xxx-yyy-zzz', address='ca:fe:de:ad:be:ef', network=mynetwork) d.unplug_iovisor(None, myvif) @mock.patch('nova.network.linux_net.device_exists') def test_plug_iovisor(self, device_exists): device_exists.return_value = True d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) with mock.patch.object(utils, 'execute') as execute: execute.side_effect = processutils.ProcessExecutionError instance = { 'name': 'instance-name', 'uuid': 'instance-uuid', 'project_id': 'myproject' } d.plug_iovisor(instance, self.vif_ivs) def test_ivs_ethernet_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9010)) self._check_ivs_ethernet_driver(d, self.vif_ivs, "tap") def _check_ivs_virtualport_driver(self, d, vif, want_iface_id): self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") xml = self._get_instance_xml(d, vif) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "ethernet", "target", "dev", vif, vif['devname']) def _check_ovs_virtualport_driver(self, d, vif, want_iface_id): self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") xml = self._get_instance_xml(d, vif) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "bridge", "source", "bridge", vif, "br0") vp = node.find("virtualport") self.assertEqual(vp.get("type"), "openvswitch") iface_id_found = False for p_elem in vp.findall("parameters"): iface_id = p_elem.get("interfaceid", None) if iface_id: self.assertEqual(iface_id, want_iface_id) iface_id_found = True self.assertTrue(iface_id_found) def test_generic_ovs_virtualport_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9011)) want_iface_id = self.vif_ovs['ovs_interfaceid'] self._check_ovs_virtualport_driver(d, self.vif_ovs, want_iface_id) def test_generic_ivs_virtualport_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn(ver=9011)) want_iface_id = self.vif_ivs['ovs_interfaceid'] self._check_ivs_virtualport_driver(d, self.vif_ivs, want_iface_id) def test_hybrid_plug_without_nova_firewall(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) br_want = "qbr" + self.vif_ovs_hybrid['id'] br_want = br_want[:network_model.NIC_NAME_LEN] self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") xml = self._get_instance_xml(d, self.vif_ovs_hybrid) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "bridge", "source", "bridge", self.vif_ovs_hybrid, br_want, 0) def test_direct_plug_with_port_filter_cap_no_nova_firewall(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) br_want = self.vif_midonet['devname'] xml = self._get_instance_xml(d, self.vif_ovs_filter_cap) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "ethernet", "target", "dev", self.vif_ovs_filter_cap, br_want) def _check_neutron_hybrid_driver(self, d, vif, br_want): self.flags(firewall_driver="nova.virt.firewall.IptablesFirewallDriver") xml = self._get_instance_xml(d, vif) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "bridge", "source", "bridge", vif, br_want, 1) def test_generic_hybrid_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) br_want = "qbr" + self.vif_ovs['id'] br_want = br_want[:network_model.NIC_NAME_LEN] self._check_neutron_hybrid_driver(d, self.vif_ovs, br_want) def test_ivs_hybrid_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) br_want = "qbr" + self.vif_ivs['id'] br_want = br_want[:network_model.NIC_NAME_LEN] self._check_neutron_hybrid_driver(d, self.vif_ivs, br_want) def test_mlnx_direct_vif_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) xml = self._get_instance_xml(d, self.vif_mlnx) node = self._get_node(xml) self.assertEqual(node.get("type"), "direct") self._assertTypeEquals(node, "direct", "source", "dev", "eth-xxx-yyy-zzz") self._assertTypeEquals(node, "direct", "source", "mode", "passthrough") self._assertMacEquals(node, self.vif_mlnx) self._assertModel(xml, "virtio") def test_midonet_ethernet_vif_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") br_want = self.vif_midonet['devname'] xml = self._get_instance_xml(d, self.vif_midonet) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "ethernet", "target", "dev", self.vif_midonet, br_want) def test_generic_8021qbh_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) xml = self._get_instance_xml(d, self.vif_8021qbh) node = self._get_node(xml) self._assertTypeEquals(node, "direct", "source", "dev", "eth0") self._assertMacEquals(node, self.vif_8021qbh) vp = node.find("virtualport") self.assertEqual(vp.get("type"), "802.1Qbh") profile_id_found = False for p_elem in vp.findall("parameters"): wantparams = self.vif_8021qbh['qbh_params'] profile_id = p_elem.get("profileid", None) if profile_id: self.assertEqual(profile_id, wantparams['profileid']) profile_id_found = True self.assertTrue(profile_id_found) def test_generic_iovisor_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) self.flags(firewall_driver="nova.virt.firewall.NoopFirewallDriver") br_want = self.vif_ivs['devname'] xml = self._get_instance_xml(d, self.vif_ivs) node = self._get_node(xml) self._assertTypeAndMacEquals(node, "ethernet", "target", "dev", self.vif_ivs, br_want) def test_generic_8021qbg_driver(self): d = vif.LibvirtGenericVIFDriver(self._get_conn()) xml = self._get_instance_xml(d, self.vif_8021qbg) node = self._get_node(xml) self._assertTypeEquals(node, "direct", "source", "dev", "eth0") self._assertMacEquals(node, self.vif_8021qbg) vp = node.find("virtualport") self.assertEqual(vp.get("type"), "802.1Qbg") manager_id_found = False type_id_found = False typeversion_id_found = False instance_id_found = False for p_elem in vp.findall("parameters"): wantparams = self.vif_8021qbg['qbg_params'] manager_id = p_elem.get("managerid", None) type_id = p_elem.get("typeid", None) typeversion_id = p_elem.get("typeidversion", None) instance_id = p_elem.get("instanceid", None) if manager_id: self.assertEqual(manager_id, wantparams['managerid']) manager_id_found = True if type_id: self.assertEqual(type_id, wantparams['typeid']) type_id_found = True if typeversion_id: self.assertEqual(typeversion_id, wantparams['typeidversion']) typeversion_id_found = True if instance_id: self.assertEqual(instance_id, wantparams['instanceid']) instance_id_found = True self.assertTrue(manager_id_found) self.assertTrue(type_id_found) self.assertTrue(typeversion_id_found) self.assertTrue(instance_id_found) nova-2014.1/nova/tests/virt/libvirt/fake_libvirt_utils.py0000664000175400017540000001147112323721477024715 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import StringIO from nova.virt.libvirt import utils as libvirt_utils files = {'console.log': True} disk_sizes = {} disk_backing_files = {} disk_type = "qcow2" def get_iscsi_initiator(): return "fake.initiator.iqn" def get_fc_hbas(): return [{'ClassDevice': 'host1', 'ClassDevicePath': '/sys/devices/pci0000:00/0000:00:03.0' '/0000:05:00.2/host1/fc_host/host1', 'dev_loss_tmo': '30', 'fabric_name': '0x1000000533f55566', 'issue_lip': '', 'max_npiv_vports': '255', 'maxframe_size': '2048 bytes', 'node_name': '0x200010604b019419', 'npiv_vports_inuse': '0', 'port_id': '0x680409', 'port_name': '0x100010604b019419', 'port_state': 'Online', 'port_type': 'NPort (fabric via point-to-point)', 'speed': '10 Gbit', 'supported_classes': 'Class 3', 'supported_speeds': '10 Gbit', 'symbolic_name': 'Emulex 554M FV4.0.493.0 DV8.3.27', 'tgtid_bind_type': 'wwpn (World Wide Port Name)', 'uevent': None, 'vport_create': '', 'vport_delete': ''}] def get_fc_hbas_info(): hbas = get_fc_hbas() info = [{'port_name': hbas[0]['port_name'].replace('0x', ''), 'node_name': hbas[0]['node_name'].replace('0x', ''), 'host_device': hbas[0]['ClassDevice'], 'device_path': hbas[0]['ClassDevicePath']}] return info def get_fc_wwpns(): hbas = get_fc_hbas() wwpns = [] for hba in hbas: wwpn = hba['port_name'].replace('0x', '') wwpns.append(wwpn) return wwpns def get_fc_wwnns(): hbas = get_fc_hbas() wwnns = [] for hba in hbas: wwnn = hba['node_name'].replace('0x', '') wwnns.append(wwnn) return wwnns def create_image(disk_format, path, size): pass def create_cow_image(backing_file, path): pass def get_disk_backing_file(path): return disk_backing_files.get(path, None) def get_disk_type(path): return disk_type def copy_image(src, dest): pass def resize2fs(path): pass def create_lvm_image(vg, lv, size, sparse=False): pass def import_rbd_image(path, *args): pass def volume_group_free_space(vg): pass def remove_logical_volumes(*paths): pass def write_to_file(path, contents, umask=None): pass def chown(path, owner): pass def extract_snapshot(disk_path, source_fmt, out_path, dest_fmt): files[out_path] = '' class File(object): def __init__(self, path, mode=None): if path in files: self.fp = StringIO.StringIO(files[path]) else: self.fp = StringIO.StringIO(files[os.path.split(path)[-1]]) def __enter__(self): return self.fp def __exit__(self, *args): return def close(self, *args, **kwargs): self.fp.close() def file_open(path, mode=None): return File(path, mode) def find_disk(virt_dom): return "filename" def load_file(path): if os.path.exists(path): with open(path, 'r') as fp: return fp.read() else: return '' def logical_volume_info(path): return {} def file_delete(path): return True def get_fs_info(path): return {'total': 128 * (1024 ** 3), 'used': 44 * (1024 ** 3), 'free': 84 * (1024 ** 3)} def fetch_image(context, target, image_id, user_id, project_id, max_size=0): pass def get_instance_path(instance, forceold=False, relative=False): return libvirt_utils.get_instance_path(instance, forceold=forceold, relative=relative) def pick_disk_driver_name(hypervisor_version, is_block_dev=False): return "qemu" def list_rbd_volumes(pool): fake_volumes = ['875a8070-d0b9-4949-8b31-104d125c9a64.local', '875a8070-d0b9-4949-8b31-104d125c9a64.swap', '875a8070-d0b9-4949-8b31-104d125c9a64', 'wrong875a8070-d0b9-4949-8b31-104d125c9a64'] return fake_volumes def remove_rbd_volumes(pool, *names): pass def get_arch(image_meta): pass nova-2014.1/nova/tests/virt/libvirt/test_imagecache.py0000664000175400017540000011007212323721477024136 0ustar jenkinsjenkins00000000000000# Copyright 2012 Michael Still and Canonical Inc # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import cStringIO import hashlib import json import os import time from oslo.config import cfg from nova import conductor from nova import db from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova import test from nova.tests import fake_instance from nova import utils from nova.virt.libvirt import imagecache from nova.virt.libvirt import utils as virtutils CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('host', 'nova.netconf') @contextlib.contextmanager def intercept_log_messages(): try: mylog = logging.getLogger('nova') stream = cStringIO.StringIO() handler = logging.logging.StreamHandler(stream) handler.setFormatter(logging.ContextFormatter()) mylog.logger.addHandler(handler) yield stream finally: mylog.logger.removeHandler(handler) class ImageCacheManagerTestCase(test.NoDBTestCase): def setUp(self): super(ImageCacheManagerTestCase, self).setUp() self.stock_instance_names = set(['instance-00000001', 'instance-00000002', 'instance-00000003', 'banana-42-hamster']) def test_read_stored_checksum_missing(self): self.stubs.Set(os.path, 'exists', lambda x: False) csum = imagecache.read_stored_checksum('/tmp/foo', timestamped=False) self.assertIsNone(csum) def test_read_stored_checksum(self): with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') csum_input = '{"sha1": "fdghkfhkgjjksfdgjksjkghsdf"}\n' fname = os.path.join(tmpdir, 'aaa') info_fname = imagecache.get_info_filename(fname) f = open(info_fname, 'w') f.write(csum_input) f.close() csum_output = imagecache.read_stored_checksum(fname, timestamped=False) self.assertEqual(csum_input.rstrip(), '{"sha1": "%s"}' % csum_output) def test_read_stored_checksum_legacy_essex(self): with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname = os.path.join(tmpdir, 'aaa') old_fname = fname + '.sha1' f = open(old_fname, 'w') f.write('fdghkfhkgjjksfdgjksjkghsdf') f.close() csum_output = imagecache.read_stored_checksum(fname, timestamped=False) self.assertEqual(csum_output, 'fdghkfhkgjjksfdgjksjkghsdf') self.assertFalse(os.path.exists(old_fname)) info_fname = imagecache.get_info_filename(fname) self.assertTrue(os.path.exists(info_fname)) def test_list_base_images(self): listing = ['00000001', 'ephemeral_0_20_None', '17d1b00b81642842e514494a78e804e9a511637c_5368709120.info', '00000004'] images = ['e97222e91fc4241f49a7f520d1dcf446751129b3_sm', 'e09c675c2d1cfac32dae3c2d83689c8c94bc693b_sm', 'e97222e91fc4241f49a7f520d1dcf446751129b3', '17d1b00b81642842e514494a78e804e9a511637c', '17d1b00b81642842e514494a78e804e9a511637c_5368709120', '17d1b00b81642842e514494a78e804e9a511637c_10737418240'] listing.extend(images) self.stubs.Set(os, 'listdir', lambda x: listing) self.stubs.Set(os.path, 'isfile', lambda x: True) base_dir = '/var/lib/nova/instances/_base' self.flags(instances_path='/var/lib/nova/instances') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager._list_base_images(base_dir) sanitized = [] for ent in image_cache_manager.unexplained_images: sanitized.append(ent.replace(base_dir + '/', '')) self.assertEqual(sorted(sanitized), sorted(images)) expected = os.path.join(base_dir, 'e97222e91fc4241f49a7f520d1dcf446751129b3') self.assertIn(expected, image_cache_manager.unexplained_images) expected = os.path.join(base_dir, '17d1b00b81642842e514494a78e804e9a511637c_' '10737418240') self.assertIn(expected, image_cache_manager.unexplained_images) unexpected = os.path.join(base_dir, '00000004') self.assertNotIn(unexpected, image_cache_manager.unexplained_images) for ent in image_cache_manager.unexplained_images: self.assertTrue(ent.startswith(base_dir)) self.assertEqual(len(image_cache_manager.originals), 2) expected = os.path.join(base_dir, '17d1b00b81642842e514494a78e804e9a511637c') self.assertIn(expected, image_cache_manager.originals) unexpected = os.path.join(base_dir, '17d1b00b81642842e514494a78e804e9a511637c_' '10737418240') self.assertNotIn(unexpected, image_cache_manager.originals) def test_list_backing_images_small(self): self.stubs.Set(os, 'listdir', lambda x: ['_base', 'instance-00000001', 'instance-00000002', 'instance-00000003']) self.stubs.Set(os.path, 'exists', lambda x: x.find('instance-') != -1) self.stubs.Set(virtutils, 'get_disk_backing_file', lambda x: 'e97222e91fc4241f49a7f520d1dcf446751129b3_sm') found = os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name, 'e97222e91fc4241f49a7f520d1dcf446751129b3_sm') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [found] image_cache_manager.instance_names = self.stock_instance_names inuse_images = image_cache_manager._list_backing_images() self.assertEqual(inuse_images, [found]) self.assertEqual(len(image_cache_manager.unexplained_images), 0) def test_list_backing_images_resized(self): self.stubs.Set(os, 'listdir', lambda x: ['_base', 'instance-00000001', 'instance-00000002', 'instance-00000003']) self.stubs.Set(os.path, 'exists', lambda x: x.find('instance-') != -1) self.stubs.Set(virtutils, 'get_disk_backing_file', lambda x: ('e97222e91fc4241f49a7f520d1dcf446751129b3_' '10737418240')) found = os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name, 'e97222e91fc4241f49a7f520d1dcf446751129b3_' '10737418240') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [found] image_cache_manager.instance_names = self.stock_instance_names inuse_images = image_cache_manager._list_backing_images() self.assertEqual(inuse_images, [found]) self.assertEqual(len(image_cache_manager.unexplained_images), 0) def test_list_backing_images_instancename(self): self.stubs.Set(os, 'listdir', lambda x: ['_base', 'banana-42-hamster']) self.stubs.Set(os.path, 'exists', lambda x: x.find('banana-42-hamster') != -1) self.stubs.Set(virtutils, 'get_disk_backing_file', lambda x: 'e97222e91fc4241f49a7f520d1dcf446751129b3_sm') found = os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name, 'e97222e91fc4241f49a7f520d1dcf446751129b3_sm') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [found] image_cache_manager.instance_names = self.stock_instance_names inuse_images = image_cache_manager._list_backing_images() self.assertEqual(inuse_images, [found]) self.assertEqual(len(image_cache_manager.unexplained_images), 0) def test_list_backing_images_disk_notexist(self): self.stubs.Set(os, 'listdir', lambda x: ['_base', 'banana-42-hamster']) self.stubs.Set(os.path, 'exists', lambda x: x.find('banana-42-hamster') != -1) def fake_get_disk(disk_path): raise processutils.ProcessExecutionError() self.stubs.Set(virtutils, 'get_disk_backing_file', fake_get_disk) image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [] image_cache_manager.instance_names = self.stock_instance_names self.assertRaises(processutils.ProcessExecutionError, image_cache_manager._list_backing_images) def test_find_base_file_nothing(self): self.stubs.Set(os.path, 'exists', lambda x: False) base_dir = '/var/lib/nova/instances/_base' fingerprint = '549867354867' image_cache_manager = imagecache.ImageCacheManager() res = list(image_cache_manager._find_base_file(base_dir, fingerprint)) self.assertEqual(0, len(res)) def test_find_base_file_small(self): fingerprint = '968dd6cc49e01aaa044ed11c0cce733e0fa44a6a' self.stubs.Set(os.path, 'exists', lambda x: x.endswith('%s_sm' % fingerprint)) base_dir = '/var/lib/nova/instances/_base' image_cache_manager = imagecache.ImageCacheManager() res = list(image_cache_manager._find_base_file(base_dir, fingerprint)) base_file = os.path.join(base_dir, fingerprint + '_sm') self.assertTrue(res == [(base_file, True, False)]) def test_find_base_file_resized(self): fingerprint = '968dd6cc49e01aaa044ed11c0cce733e0fa44a6a' listing = ['00000001', 'ephemeral_0_20_None', '968dd6cc49e01aaa044ed11c0cce733e0fa44a6a_10737418240', '00000004'] self.stubs.Set(os, 'listdir', lambda x: listing) self.stubs.Set(os.path, 'exists', lambda x: x.endswith('%s_10737418240' % fingerprint)) self.stubs.Set(os.path, 'isfile', lambda x: True) base_dir = '/var/lib/nova/instances/_base' image_cache_manager = imagecache.ImageCacheManager() image_cache_manager._list_base_images(base_dir) res = list(image_cache_manager._find_base_file(base_dir, fingerprint)) base_file = os.path.join(base_dir, fingerprint + '_10737418240') self.assertTrue(res == [(base_file, False, True)]) def test_find_base_file_all(self): fingerprint = '968dd6cc49e01aaa044ed11c0cce733e0fa44a6a' listing = ['00000001', 'ephemeral_0_20_None', '968dd6cc49e01aaa044ed11c0cce733e0fa44a6a_sm', '968dd6cc49e01aaa044ed11c0cce733e0fa44a6a_10737418240', '00000004'] self.stubs.Set(os, 'listdir', lambda x: listing) self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(os.path, 'isfile', lambda x: True) base_dir = '/var/lib/nova/instances/_base' image_cache_manager = imagecache.ImageCacheManager() image_cache_manager._list_base_images(base_dir) res = list(image_cache_manager._find_base_file(base_dir, fingerprint)) base_file1 = os.path.join(base_dir, fingerprint) base_file2 = os.path.join(base_dir, fingerprint + '_sm') base_file3 = os.path.join(base_dir, fingerprint + '_10737418240') self.assertTrue(res == [(base_file1, False, False), (base_file2, True, False), (base_file3, False, True)]) @contextlib.contextmanager def _make_base_file(self, checksum=True): """Make a base file for testing.""" with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname = os.path.join(tmpdir, 'aaa') base_file = open(fname, 'w') base_file.write('data') base_file.close() base_file = open(fname, 'r') if checksum: imagecache.write_stored_checksum(fname) base_file.close() yield fname def test_remove_base_file(self): with self._make_base_file() as fname: image_cache_manager = imagecache.ImageCacheManager() image_cache_manager._remove_base_file(fname) info_fname = imagecache.get_info_filename(fname) # Files are initially too new to delete self.assertTrue(os.path.exists(fname)) self.assertTrue(os.path.exists(info_fname)) # Old files get cleaned up though os.utime(fname, (-1, time.time() - 3601)) image_cache_manager._remove_base_file(fname) self.assertFalse(os.path.exists(fname)) self.assertFalse(os.path.exists(info_fname)) def test_remove_base_file_original(self): with self._make_base_file() as fname: image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.originals = [fname] image_cache_manager._remove_base_file(fname) info_fname = imagecache.get_info_filename(fname) # Files are initially too new to delete self.assertTrue(os.path.exists(fname)) self.assertTrue(os.path.exists(info_fname)) # This file should stay longer than a resized image os.utime(fname, (-1, time.time() - 3601)) image_cache_manager._remove_base_file(fname) self.assertTrue(os.path.exists(fname)) self.assertTrue(os.path.exists(info_fname)) # Originals don't stay forever though os.utime(fname, (-1, time.time() - 3600 * 25)) image_cache_manager._remove_base_file(fname) self.assertFalse(os.path.exists(fname)) self.assertFalse(os.path.exists(info_fname)) def test_remove_base_file_dne(self): # This test is solely to execute the "does not exist" code path. We # don't expect the method being tested to do anything in this case. with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname = os.path.join(tmpdir, 'aaa') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager._remove_base_file(fname) def test_remove_base_file_oserror(self): with intercept_log_messages() as stream: with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname = os.path.join(tmpdir, 'aaa') os.mkdir(fname) os.utime(fname, (-1, time.time() - 3601)) # This will raise an OSError because of file permissions image_cache_manager = imagecache.ImageCacheManager() image_cache_manager._remove_base_file(fname) self.assertTrue(os.path.exists(fname)) self.assertNotEqual(stream.getvalue().find('Failed to remove'), -1) def test_handle_base_image_unused(self): img = '123' with self._make_base_file() as fname: os.utime(fname, (-1, time.time() - 3601)) image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [fname] image_cache_manager._handle_base_image(img, fname) self.assertEqual(image_cache_manager.unexplained_images, []) self.assertEqual(image_cache_manager.removable_base_files, [fname]) self.assertEqual(image_cache_manager.corrupt_base_files, []) def test_handle_base_image_used(self): self.stubs.Set(virtutils, 'chown', lambda x, y: None) img = '123' with self._make_base_file() as fname: os.utime(fname, (-1, time.time() - 3601)) image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [fname] image_cache_manager.used_images = {'123': (1, 0, ['banana-42'])} image_cache_manager._handle_base_image(img, fname) self.assertEqual(image_cache_manager.unexplained_images, []) self.assertEqual(image_cache_manager.removable_base_files, []) self.assertEqual(image_cache_manager.corrupt_base_files, []) def test_handle_base_image_used_remotely(self): self.stubs.Set(virtutils, 'chown', lambda x, y: None) img = '123' with self._make_base_file() as fname: os.utime(fname, (-1, time.time() - 3601)) image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [fname] image_cache_manager.used_images = {'123': (0, 1, ['banana-42'])} image_cache_manager._handle_base_image(img, fname) self.assertEqual(image_cache_manager.unexplained_images, []) self.assertEqual(image_cache_manager.removable_base_files, []) self.assertEqual(image_cache_manager.corrupt_base_files, []) def test_handle_base_image_absent(self): img = '123' with intercept_log_messages() as stream: image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.used_images = {'123': (1, 0, ['banana-42'])} image_cache_manager._handle_base_image(img, None) self.assertEqual(image_cache_manager.unexplained_images, []) self.assertEqual(image_cache_manager.removable_base_files, []) self.assertEqual(image_cache_manager.corrupt_base_files, []) self.assertNotEqual(stream.getvalue().find('an absent base file'), -1) def test_handle_base_image_used_missing(self): img = '123' with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname = os.path.join(tmpdir, 'aaa') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [fname] image_cache_manager.used_images = {'123': (1, 0, ['banana-42'])} image_cache_manager._handle_base_image(img, fname) self.assertEqual(image_cache_manager.unexplained_images, []) self.assertEqual(image_cache_manager.removable_base_files, []) self.assertEqual(image_cache_manager.corrupt_base_files, []) def test_handle_base_image_checksum_fails(self): self.flags(checksum_base_images=True, group='libvirt') self.stubs.Set(virtutils, 'chown', lambda x, y: None) img = '123' with self._make_base_file() as fname: with open(fname, 'w') as f: f.write('banana') d = {'sha1': '21323454'} with open('%s.info' % fname, 'w') as f: f.write(json.dumps(d)) image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.unexplained_images = [fname] image_cache_manager.used_images = {'123': (1, 0, ['banana-42'])} image_cache_manager._handle_base_image(img, fname) self.assertEqual(image_cache_manager.unexplained_images, []) self.assertEqual(image_cache_manager.removable_base_files, []) self.assertEqual(image_cache_manager.corrupt_base_files, [fname]) def test_verify_base_images(self): hashed_1 = '356a192b7913b04c54574d18c28d46e6395428ab' hashed_21 = '472b07b9fcf2c2451e8781e944bf5f77cd8457c8' hashed_22 = '12c6fc06c99a462375eeb3f43dfd832b08ca9e17' hashed_42 = '92cfceb39d57d914ed8b14d0e37643de0797ae56' self.flags(instances_path='/instance_path', image_cache_subdirectory_name='_base') base_file_list = ['00000001', 'ephemeral_0_20_None', 'e97222e91fc4241f49a7f520d1dcf446751129b3_sm', 'e09c675c2d1cfac32dae3c2d83689c8c94bc693b_sm', hashed_42, hashed_1, hashed_21, hashed_22, '%s_5368709120' % hashed_1, '%s_10737418240' % hashed_1, '00000004'] def fq_path(path): return os.path.join('/instance_path/_base/', path) # Fake base directory existence orig_exists = os.path.exists def exists(path): # The python coverage tool got angry with my overly broad mocks if not path.startswith('/instance_path'): return orig_exists(path) if path in ['/instance_path', '/instance_path/_base', '/instance_path/instance-1/disk', '/instance_path/instance-2/disk', '/instance_path/instance-3/disk', '/instance_path/_base/%s.info' % hashed_42]: return True for p in base_file_list: if path == fq_path(p): return True if path == fq_path(p) + '.info': return False if path in ['/instance_path/_base/%s_sm' % i for i in [hashed_1, hashed_21, hashed_22, hashed_42]]: return False self.fail('Unexpected path existence check: %s' % path) self.stubs.Set(os.path, 'exists', lambda x: exists(x)) self.stubs.Set(virtutils, 'chown', lambda x, y: None) # We need to stub utime as well orig_utime = os.utime self.stubs.Set(os, 'utime', lambda x, y: None) # Fake up some instances in the instances directory orig_listdir = os.listdir def listdir(path): # The python coverage tool got angry with my overly broad mocks if not path.startswith('/instance_path'): return orig_listdir(path) if path == '/instance_path': return ['instance-1', 'instance-2', 'instance-3', '_base'] if path == '/instance_path/_base': return base_file_list self.fail('Unexpected directory listed: %s' % path) self.stubs.Set(os, 'listdir', lambda x: listdir(x)) # Fake isfile for these faked images in _base orig_isfile = os.path.isfile def isfile(path): # The python coverage tool got angry with my overly broad mocks if not path.startswith('/instance_path'): return orig_isfile(path) for p in base_file_list: if path == fq_path(p): return True self.fail('Unexpected isfile call: %s' % path) self.stubs.Set(os.path, 'isfile', lambda x: isfile(x)) # Fake the database call which lists running instances all_instances = [{'image_ref': '1', 'host': CONF.host, 'name': 'instance-1', 'uuid': '123', 'vm_state': '', 'task_state': ''}, {'image_ref': '1', 'kernel_id': '21', 'ramdisk_id': '22', 'host': CONF.host, 'name': 'instance-2', 'uuid': '456', 'vm_state': '', 'task_state': ''}] image_cache_manager = imagecache.ImageCacheManager() # Fake the utils call which finds the backing image def get_disk_backing_file(path): if path in ['/instance_path/instance-1/disk', '/instance_path/instance-2/disk']: return fq_path('%s_5368709120' % hashed_1) self.fail('Unexpected backing file lookup: %s' % path) self.stubs.Set(virtutils, 'get_disk_backing_file', lambda x: get_disk_backing_file(x)) # Fake out verifying checksums, as that is tested elsewhere self.stubs.Set(image_cache_manager, '_verify_checksum', lambda x, y: True) # Fake getmtime as well orig_getmtime = os.path.getmtime def getmtime(path): if not path.startswith('/instance_path'): return orig_getmtime(path) return 1000000 self.stubs.Set(os.path, 'getmtime', lambda x: getmtime(x)) # Make sure we don't accidentally remove a real file orig_remove = os.remove def remove(path): if not path.startswith('/instance_path'): return orig_remove(path) # Don't try to remove fake files return self.stubs.Set(os, 'remove', lambda x: remove(x)) # And finally we can make the call we're actually testing... # The argument here should be a context, but it is mocked out image_cache_manager.update(None, all_instances) # Verify active = [fq_path(hashed_1), fq_path('%s_5368709120' % hashed_1), fq_path(hashed_21), fq_path(hashed_22)] for act in active: self.assertIn(act, image_cache_manager.active_base_files) self.assertEqual(len(image_cache_manager.active_base_files), len(active)) for rem in [fq_path('e97222e91fc4241f49a7f520d1dcf446751129b3_sm'), fq_path('e09c675c2d1cfac32dae3c2d83689c8c94bc693b_sm'), fq_path(hashed_42), fq_path('%s_10737418240' % hashed_1)]: self.assertIn(rem, image_cache_manager.removable_base_files) # Ensure there are no "corrupt" images as well self.assertEqual(len(image_cache_manager.corrupt_base_files), 0) def test_verify_base_images_no_base(self): self.flags(instances_path='/tmp/no/such/dir/name/please') image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.update(None, []) def test_is_valid_info_file(self): hashed = 'e97222e91fc4241f49a7f520d1dcf446751129b3' self.flags(instances_path='/tmp/no/such/dir/name/please') self.flags(image_info_filename_pattern=('$instances_path/_base/' '%(image)s.info'), group='libvirt') base_filename = os.path.join(CONF.instances_path, '_base', hashed) is_valid_info_file = imagecache.is_valid_info_file self.assertFalse(is_valid_info_file('banana')) self.assertFalse(is_valid_info_file( os.path.join(CONF.instances_path, '_base', '00000001'))) self.assertFalse(is_valid_info_file(base_filename)) self.assertFalse(is_valid_info_file(base_filename + '.sha1')) self.assertTrue(is_valid_info_file(base_filename + '.info')) def test_configured_checksum_path(self): with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') # Ensure there is a base directory os.mkdir(os.path.join(tmpdir, '_base')) # Fake the database call which lists running instances all_instances = [{'image_ref': '1', 'host': CONF.host, 'name': 'instance-1', 'uuid': '123', 'vm_state': '', 'task_state': ''}, {'image_ref': '1', 'host': CONF.host, 'name': 'instance-2', 'uuid': '456', 'vm_state': '', 'task_state': ''}] def touch(filename): f = open(filename, 'w') f.write('Touched') f.close() old = time.time() - (25 * 3600) hashed = 'e97222e91fc4241f49a7f520d1dcf446751129b3' base_filename = os.path.join(tmpdir, hashed) touch(base_filename) touch(base_filename + '.info') os.utime(base_filename + '.info', (old, old)) touch(base_filename + '.info') os.utime(base_filename + '.info', (old, old)) image_cache_manager = imagecache.ImageCacheManager() image_cache_manager.update(None, all_instances) self.assertTrue(os.path.exists(base_filename)) self.assertTrue(os.path.exists(base_filename + '.info')) def test_compute_manager(self): was = {'called': False} def fake_get_all_by_filters(context, *args, **kwargs): was['called'] = True instances = [] for x in xrange(2): instances.append(fake_instance.fake_db_instance( image_ref='1', uuid=x, name=x, vm_state='', task_state='')) return instances with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all_by_filters) compute = importutils.import_object(CONF.compute_manager) self.flags(use_local=True, group='conductor') compute.conductor_api = conductor.API() compute._run_image_cache_manager_pass(None) self.assertTrue(was['called']) class VerifyChecksumTestCase(test.NoDBTestCase): def setUp(self): super(VerifyChecksumTestCase, self).setUp() self.img = {'container_format': 'ami', 'id': '42'} self.flags(checksum_base_images=True, group='libvirt') def _make_checksum(self, tmpdir): testdata = ('OpenStack Software delivers a massively scalable cloud ' 'operating system.') fname = os.path.join(tmpdir, 'aaa') info_fname = imagecache.get_info_filename(fname) with open(fname, 'w') as f: f.write(testdata) return fname, info_fname, testdata def _write_file(self, info_fname, info_attr, testdata): f = open(info_fname, 'w') if info_attr == "csum valid": csum = hashlib.sha1() csum.update(testdata) f.write('{"sha1": "%s"}\n' % csum.hexdigest()) elif info_attr == "csum invalid, not json": f.write('banana') else: f.write('{"sha1": "banana"}') f.close() def _check_body(self, tmpdir, info_attr): self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname, info_fname, testdata = self._make_checksum(tmpdir) self._write_file(info_fname, info_attr, testdata) image_cache_manager = imagecache.ImageCacheManager() return image_cache_manager, fname def test_verify_checksum(self): with utils.tempdir() as tmpdir: image_cache_manager, fname = self._check_body(tmpdir, "csum valid") res = image_cache_manager._verify_checksum(self.img, fname) self.assertTrue(res) def test_verify_checksum_disabled(self): self.flags(checksum_base_images=False, group='libvirt') with utils.tempdir() as tmpdir: image_cache_manager, fname = self._check_body(tmpdir, "csum valid") res = image_cache_manager._verify_checksum(self.img, fname) self.assertIsNone(res) def test_verify_checksum_invalid_json(self): with intercept_log_messages() as stream: with utils.tempdir() as tmpdir: image_cache_manager, fname = ( self._check_body(tmpdir, "csum invalid, not json")) res = image_cache_manager._verify_checksum( self.img, fname, create_if_missing=False) self.assertFalse(res) log = stream.getvalue() # NOTE(mikal): this is a skip not a fail because the file is # present, but is not in valid json format and therefore is # skipped. self.assertNotEqual(log.find('image verification skipped'), -1) def test_verify_checksum_invalid_repaired(self): with utils.tempdir() as tmpdir: image_cache_manager, fname = ( self._check_body(tmpdir, "csum invalid, not json")) res = image_cache_manager._verify_checksum( self.img, fname, create_if_missing=True) self.assertIsNone(res) def test_verify_checksum_invalid(self): with intercept_log_messages() as stream: with utils.tempdir() as tmpdir: image_cache_manager, fname = ( self._check_body(tmpdir, "csum invalid, valid json")) res = image_cache_manager._verify_checksum(self.img, fname) self.assertFalse(res) log = stream.getvalue() self.assertNotEqual(log.find('image verification failed'), -1) def test_verify_checksum_file_missing(self): with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info'), group='libvirt') fname, info_fname, testdata = self._make_checksum(tmpdir) image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum('aaa', fname) self.assertIsNone(res) # Checksum requests for a file with no checksum now have the # side effect of creating the checksum self.assertTrue(os.path.exists(info_fname)) nova-2014.1/nova/tests/virt/libvirt/test_libvirt_volume.py0000664000175400017540000012530112323721477025133 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # Copyright 2012 University Of Minho # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures import os import time from oslo.config import cfg from nova import exception from nova.storage import linuxscsi from nova import test from nova.tests.virt.libvirt import fake_libvirt_utils from nova import utils from nova.virt import fake from nova.virt.libvirt import utils as libvirt_utils from nova.virt.libvirt import volume CONF = cfg.CONF class LibvirtVolumeTestCase(test.NoDBTestCase): def setUp(self): super(LibvirtVolumeTestCase, self).setUp() self.executes = [] def fake_execute(*cmd, **kwargs): self.executes.append(cmd) return None, None self.stubs.Set(utils, 'execute', fake_execute) class FakeLibvirtDriver(object): def __init__(self, hyperv="QEMU", version=1005001): self.hyperv = hyperv self.version = version def get_hypervisor_version(self): return self.version def get_hypervisor_type(self): return self.hyperv def get_all_block_devices(self): return [] self.fake_conn = FakeLibvirtDriver(fake.FakeVirtAPI()) self.connr = { 'ip': '127.0.0.1', 'initiator': 'fake_initiator', 'host': 'fake_host' } self.disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } self.name = 'volume-00000001' self.location = '10.0.2.15:3260' self.iqn = 'iqn.2010-10.org.openstack:%s' % self.name self.vol = {'id': 1, 'name': self.name} self.uuid = '875a8070-d0b9-4949-8b31-104d125c9a64' self.user = 'foo' def _assertNetworkAndProtocolEquals(self, tree): self.assertEqual(tree.get('type'), 'network') self.assertEqual(tree.find('./source').get('protocol'), 'rbd') rbd_name = '%s/%s' % ('rbd', self.name) self.assertEqual(tree.find('./source').get('name'), rbd_name) def _assertFileTypeEquals(self, tree, file_path): self.assertEqual(tree.get('type'), 'file') self.assertEqual(tree.find('./source').get('file'), file_path) def _assertDiskInfoEquals(self, tree, disk_info): self.assertEqual(tree.get('device'), disk_info['type']) self.assertEqual(tree.find('./target').get('bus'), disk_info['bus']) self.assertEqual(tree.find('./target').get('dev'), disk_info['dev']) def _test_libvirt_volume_driver_disk_info(self): libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn) connection_info = { 'driver_volume_type': 'fake', 'data': { 'device_path': '/foo', }, 'serial': 'fake_serial', } conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertDiskInfoEquals(tree, self.disk_info) def test_libvirt_volume_disk_info_type(self): self.disk_info['type'] = 'cdrom' self._test_libvirt_volume_driver_disk_info() def test_libvirt_volume_disk_info_dev(self): self.disk_info['dev'] = 'hdc' self._test_libvirt_volume_driver_disk_info() def test_libvirt_volume_disk_info_bus(self): self.disk_info['bus'] = 'scsi' self._test_libvirt_volume_driver_disk_info() def test_libvirt_volume_driver_serial(self): libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn) connection_info = { 'driver_volume_type': 'fake', 'data': { 'device_path': '/foo', }, 'serial': 'fake_serial', } conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self.assertEqual('block', tree.get('type')) self.assertEqual('fake_serial', tree.find('./serial').text) self.assertIsNone(tree.find('./blockio')) def test_libvirt_volume_driver_blockio(self): libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn) connection_info = { 'driver_volume_type': 'fake', 'data': { 'device_path': '/foo', 'logical_block_size': '4096', 'physical_block_size': '4096', }, 'serial': 'fake_serial', } disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() blockio = tree.find('./blockio') self.assertEqual('4096', blockio.get('logical_block_size')) self.assertEqual('4096', blockio.get('physical_block_size')) def test_libvirt_volume_driver_iotune(self): libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn) connection_info = { 'driver_volume_type': 'fake', 'data': { "device_path": "/foo", 'qos_specs': 'bar', }, } disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() iotune = tree.find('./iotune') # ensure invalid qos_specs is ignored self.assertIsNone(iotune) specs = { 'total_bytes_sec': '102400', 'read_bytes_sec': '51200', 'write_bytes_sec': '0', 'total_iops_sec': '0', 'read_iops_sec': '200', 'write_iops_sec': '200', } del connection_info['data']['qos_specs'] connection_info['data'].update(dict(qos_specs=specs)) conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual('102400', tree.find('./iotune/total_bytes_sec').text) self.assertEqual('51200', tree.find('./iotune/read_bytes_sec').text) self.assertEqual('0', tree.find('./iotune/write_bytes_sec').text) self.assertEqual('0', tree.find('./iotune/total_iops_sec').text) self.assertEqual('200', tree.find('./iotune/read_iops_sec').text) self.assertEqual('200', tree.find('./iotune/write_iops_sec').text) def test_libvirt_volume_driver_readonly(self): libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn) connection_info = { 'driver_volume_type': 'fake', 'data': { "device_path": "/foo", 'access_mode': 'bar', }, } disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } self.assertRaises(exception.InvalidVolumeAccessMode, libvirt_driver.connect_volume, connection_info, self.disk_info) connection_info['data']['access_mode'] = 'rw' conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() readonly = tree.find('./readonly') self.assertIsNone(readonly) connection_info['data']['access_mode'] = 'ro' conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() readonly = tree.find('./readonly') self.assertIsNotNone(readonly) def iscsi_connection(self, volume, location, iqn): return { 'driver_volume_type': 'iscsi', 'data': { 'volume_id': volume['id'], 'target_portal': location, 'target_iqn': iqn, 'target_lun': 1, 'qos_specs': { 'total_bytes_sec': '102400', 'read_iops_sec': '200', } } } def test_libvirt_iscsi_driver(self): # NOTE(vish) exists is to make driver assume connecting worked self.stubs.Set(os.path, 'exists', lambda x: True) libvirt_driver = volume.LibvirtISCSIVolumeDriver(self.fake_conn) connection_info = self.iscsi_connection(self.vol, self.location, self.iqn) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) self.assertEqual('qemu', conf.driver_name) tree = conf.format_dom() dev_str = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-1' % (self.location, self.iqn) self.assertEqual(tree.get('type'), 'block') self.assertEqual(tree.find('./source').get('dev'), dev_str) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location), ('iscsiadm', '-m', 'session'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--login'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--op', 'update', '-n', 'node.startup', '-v', 'automatic'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--rescan'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--op', 'update', '-n', 'node.startup', '-v', 'manual'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--logout'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--op', 'delete')] self.assertEqual('102400', tree.find('./iotune/total_bytes_sec').text) self.assertEqual(self.executes, expected_commands) def test_libvirt_iscsi_driver_still_in_use(self): # NOTE(vish) exists is to make driver assume connecting worked self.stubs.Set(os.path, 'exists', lambda x: True) libvirt_driver = volume.LibvirtISCSIVolumeDriver(self.fake_conn) name = 'volume-00000001' devs = ['/dev/disk/by-path/ip-%s-iscsi-%s-lun-2' % (self.location, self.iqn)] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) vol = {'id': 1, 'name': self.name} connection_info = self.iscsi_connection(vol, self.location, self.iqn) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() dev_name = 'ip-%s-iscsi-%s-lun-1' % (self.location, self.iqn) dev_str = '/dev/disk/by-path/%s' % dev_name self.assertEqual(tree.get('type'), 'block') self.assertEqual(tree.find('./source').get('dev'), dev_str) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location), ('iscsiadm', '-m', 'session'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--login'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--op', 'update', '-n', 'node.startup', '-v', 'automatic'), ('iscsiadm', '-m', 'node', '-T', self.iqn, '-p', self.location, '--rescan'), ('cp', '/dev/stdin', '/sys/block/%s/device/delete' % dev_name)] self.assertEqual(self.executes, expected_commands) def iser_connection(self, volume, location, iqn): return { 'driver_volume_type': 'iser', 'data': { 'volume_id': volume['id'], 'target_portal': location, 'target_iqn': iqn, 'target_lun': 1, } } def sheepdog_connection(self, volume): return { 'driver_volume_type': 'sheepdog', 'data': { 'name': volume['name'] } } def test_libvirt_sheepdog_driver(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.sheepdog_connection(self.vol) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self.assertEqual(tree.get('type'), 'network') self.assertEqual(tree.find('./source').get('protocol'), 'sheepdog') self.assertEqual(tree.find('./source').get('name'), self.name) libvirt_driver.disconnect_volume(connection_info, "vde") def rbd_connection(self, volume): return { 'driver_volume_type': 'rbd', 'data': { 'name': '%s/%s' % ('rbd', volume['name']), 'auth_enabled': CONF.libvirt.rbd_secret_uuid is not None, 'auth_username': CONF.libvirt.rbd_user, 'secret_type': 'ceph', 'secret_uuid': CONF.libvirt.rbd_secret_uuid, 'qos_specs': { 'total_bytes_sec': '1048576', 'read_iops_sec': '500', } } } def test_libvirt_rbd_driver(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.rbd_connection(self.vol) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertNetworkAndProtocolEquals(tree) self.assertIsNone(tree.find('./source/auth')) self.assertEqual('1048576', tree.find('./iotune/total_bytes_sec').text) self.assertEqual('500', tree.find('./iotune/read_iops_sec').text) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_rbd_driver_hosts(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.rbd_connection(self.vol) hosts = ['example.com', '1.2.3.4', '::1'] ports = [None, '6790', '6791'] connection_info['data']['hosts'] = hosts connection_info['data']['ports'] = ports conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertNetworkAndProtocolEquals(tree) self.assertIsNone(tree.find('./source/auth')) found_hosts = tree.findall('./source/host') self.assertEqual([host.get('name') for host in found_hosts], hosts) self.assertEqual([host.get('port') for host in found_hosts], ports) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_rbd_driver_auth_enabled(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.rbd_connection(self.vol) secret_type = 'ceph' connection_info['data']['auth_enabled'] = True connection_info['data']['auth_username'] = self.user connection_info['data']['secret_type'] = secret_type connection_info['data']['secret_uuid'] = self.uuid conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertNetworkAndProtocolEquals(tree) self.assertEqual(tree.find('./auth').get('username'), self.user) self.assertEqual(tree.find('./auth/secret').get('type'), secret_type) self.assertEqual(tree.find('./auth/secret').get('uuid'), self.uuid) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_rbd_driver_auth_enabled_flags_override(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.rbd_connection(self.vol) secret_type = 'ceph' connection_info['data']['auth_enabled'] = True connection_info['data']['auth_username'] = self.user connection_info['data']['secret_type'] = secret_type connection_info['data']['secret_uuid'] = self.uuid flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b' flags_user = 'bar' self.flags(rbd_user=flags_user, rbd_secret_uuid=flags_uuid, group='libvirt') conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertNetworkAndProtocolEquals(tree) self.assertEqual(tree.find('./auth').get('username'), flags_user) self.assertEqual(tree.find('./auth/secret').get('type'), secret_type) self.assertEqual(tree.find('./auth/secret').get('uuid'), flags_uuid) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_rbd_driver_auth_disabled(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.rbd_connection(self.vol) secret_type = 'ceph' connection_info['data']['auth_enabled'] = False connection_info['data']['auth_username'] = self.user connection_info['data']['secret_type'] = secret_type connection_info['data']['secret_uuid'] = self.uuid conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertNetworkAndProtocolEquals(tree) self.assertIsNone(tree.find('./auth')) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_rbd_driver_auth_disabled_flags_override(self): libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) connection_info = self.rbd_connection(self.vol) secret_type = 'ceph' connection_info['data']['auth_enabled'] = False connection_info['data']['auth_username'] = self.user connection_info['data']['secret_type'] = secret_type connection_info['data']['secret_uuid'] = self.uuid # NOTE: Supplying the rbd_secret_uuid will enable authentication # locally in nova-compute even if not enabled in nova-volume/cinder flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b' flags_user = 'bar' self.flags(rbd_user=flags_user, rbd_secret_uuid=flags_uuid, group='libvirt') conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertNetworkAndProtocolEquals(tree) self.assertEqual(tree.find('./auth').get('username'), flags_user) self.assertEqual(tree.find('./auth/secret').get('type'), secret_type) self.assertEqual(tree.find('./auth/secret').get('uuid'), flags_uuid) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_kvm_volume(self): self.stubs.Set(os.path, 'exists', lambda x: True) libvirt_driver = volume.LibvirtISCSIVolumeDriver(self.fake_conn) connection_info = self.iscsi_connection(self.vol, self.location, self.iqn) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() dev_str = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-1' % (self.location, self.iqn) self.assertEqual(tree.get('type'), 'block') self.assertEqual(tree.find('./source').get('dev'), dev_str) libvirt_driver.disconnect_volume(connection_info, 'vde') def test_libvirt_kvm_volume_with_multipath(self): self.flags(iscsi_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) devs = ['/dev/mapper/sda', '/dev/mapper/sdb'] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) libvirt_driver = volume.LibvirtISCSIVolumeDriver(self.fake_conn) connection_info = self.iscsi_connection(self.vol, self.location, self.iqn) mpdev_filepath = '/dev/mapper/foo' connection_info['data']['device_path'] = mpdev_filepath target_portals = ['fake_portal1', 'fake_portal2'] libvirt_driver._get_multipath_device_name = lambda x: mpdev_filepath self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [[self.location, self.iqn]]) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self.assertEqual(tree.find('./source').get('dev'), mpdev_filepath) libvirt_driver._get_multipath_iqn = lambda x: self.iqn libvirt_driver.disconnect_volume(connection_info, 'vde') expected_multipath_cmd = ('multipath', '-f', 'foo') self.assertIn(expected_multipath_cmd, self.executes) def test_libvirt_kvm_volume_with_multipath_still_in_use(self): name = 'volume-00000001' location = '10.0.2.15:3260' iqn = 'iqn.2010-10.org.openstack:%s' % name mpdev_filepath = '/dev/mapper/foo' def _get_multipath_device_name(path): if '%s-lun-1' % iqn in path: return mpdev_filepath return '/dev/mapper/donotdisconnect' self.flags(iscsi_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) libvirt_driver = volume.LibvirtISCSIVolumeDriver(self.fake_conn) libvirt_driver._get_multipath_device_name =\ lambda x: _get_multipath_device_name(x) block_devs = ['/dev/disks/by-path/%s-iscsi-%s-lun-2' % (location, iqn)] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: block_devs) vol = {'id': 1, 'name': name} connection_info = self.iscsi_connection(vol, location, iqn) connection_info['data']['device_path'] = mpdev_filepath libvirt_driver._get_multipath_iqn = lambda x: iqn iscsi_devs = ['1.2.3.4-iscsi-%s-lun-1' % iqn, '%s-iscsi-%s-lun-1' % (location, iqn), '%s-iscsi-%s-lun-2' % (location, iqn)] libvirt_driver._get_iscsi_devices = lambda: iscsi_devs self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [[location, iqn]]) # Set up disconnect volume mock expectations self.mox.StubOutWithMock(libvirt_driver, '_delete_device') self.mox.StubOutWithMock(libvirt_driver, '_rescan_multipath') libvirt_driver._rescan_multipath() libvirt_driver._delete_device('/dev/disk/by-path/%s' % iscsi_devs[0]) libvirt_driver._delete_device('/dev/disk/by-path/%s' % iscsi_devs[1]) libvirt_driver._rescan_multipath() # Ensure that the mpath devices are deleted self.mox.ReplayAll() libvirt_driver.disconnect_volume(connection_info, 'vde') def test_libvirt_kvm_volume_with_multipath_getmpdev(self): self.flags(iscsi_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) libvirt_driver = volume.LibvirtISCSIVolumeDriver(self.fake_conn) name0 = 'volume-00000000' iqn0 = 'iqn.2010-10.org.openstack:%s' % name0 dev0 = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-0' % (self.location, iqn0) dev = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-1' % (self.location, self.iqn) devs = [dev0, dev] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) connection_info = self.iscsi_connection(self.vol, self.location, self.iqn) mpdev_filepath = '/dev/mapper/foo' target_portals = ['fake_portal1', 'fake_portal2'] libvirt_driver._get_multipath_device_name = lambda x: mpdev_filepath self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [['fake_portal1', 'fake_iqn1']]) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self.assertEqual(tree.find('./source').get('dev'), mpdev_filepath) libvirt_driver.disconnect_volume(connection_info, 'vde') def test_libvirt_kvm_iser_volume_with_multipath(self): self.flags(iser_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(time, 'sleep', lambda x: None) devs = ['/dev/mapper/sda', '/dev/mapper/sdb'] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) libvirt_driver = volume.LibvirtISERVolumeDriver(self.fake_conn) name = 'volume-00000001' location = '10.0.2.15:3260' iqn = 'iqn.2010-10.org.iser.openstack:%s' % name vol = {'id': 1, 'name': name} connection_info = self.iser_connection(vol, location, iqn) mpdev_filepath = '/dev/mapper/foo' connection_info['data']['device_path'] = mpdev_filepath disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } target_portals = ['fake_portal1', 'fake_portal2'] libvirt_driver._get_multipath_device_name = lambda x: mpdev_filepath self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [[location, iqn]]) conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.find('./source').get('dev'), mpdev_filepath) libvirt_driver._get_multipath_iqn = lambda x: iqn libvirt_driver.disconnect_volume(connection_info, 'vde') expected_multipath_cmd = ('multipath', '-f', 'foo') self.assertIn(expected_multipath_cmd, self.executes) def test_libvirt_kvm_iser_volume_with_multipath_getmpdev(self): self.flags(iser_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(time, 'sleep', lambda x: None) libvirt_driver = volume.LibvirtISERVolumeDriver(self.fake_conn) name0 = 'volume-00000000' location0 = '10.0.2.15:3260' iqn0 = 'iqn.2010-10.org.iser.openstack:%s' % name0 vol0 = {'id': 0, 'name': name0} dev0 = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-0' % (location0, iqn0) name = 'volume-00000001' location = '10.0.2.15:3260' iqn = 'iqn.2010-10.org.iser.openstack:%s' % name vol = {'id': 1, 'name': name} dev = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-1' % (location, iqn) devs = [dev0, dev] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) self.stubs.Set(libvirt_driver, '_get_iscsi_devices', lambda: []) connection_info = self.iser_connection(vol, location, iqn) mpdev_filepath = '/dev/mapper/foo' disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } target_portals = ['fake_portal1', 'fake_portal2'] libvirt_driver._get_multipath_device_name = lambda x: mpdev_filepath self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [['fake_portal1', 'fake_iqn1']]) conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.find('./source').get('dev'), mpdev_filepath) libvirt_driver.disconnect_volume(connection_info, 'vde') def test_libvirt_nfs_driver(self): # NOTE(vish) exists is to make driver assume connecting worked mnt_base = '/mnt' self.flags(nfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = volume.LibvirtNFSVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/nfs/share1' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) connection_info = {'data': {'export': export_string, 'name': self.name}} conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('mkdir', '-p', export_mnt_base), ('mount', '-t', 'nfs', export_string, export_mnt_base), ('umount', export_mnt_base)] self.assertEqual(expected_commands, self.executes) def test_libvirt_nfs_driver_already_mounted(self): # NOTE(vish) exists is to make driver assume connecting worked mnt_base = '/mnt' self.flags(nfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = volume.LibvirtNFSVolumeDriver(self.fake_conn) export_string = '192.168.1.1:/nfs/share1' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) connection_info = {'data': {'export': export_string, 'name': self.name}} conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('findmnt', '--target', export_mnt_base, '--source', export_string), ('umount', export_mnt_base)] self.assertEqual(self.executes, expected_commands) def test_libvirt_nfs_driver_with_opts(self): mnt_base = '/mnt' self.flags(nfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = volume.LibvirtNFSVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/nfs/share1' options = '-o intr,nfsvers=3' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) connection_info = {'data': {'export': export_string, 'name': self.name, 'options': options}} conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('mkdir', '-p', export_mnt_base), ('mount', '-t', 'nfs', '-o', 'intr,nfsvers=3', export_string, export_mnt_base), ('umount', export_mnt_base), ] self.assertEqual(expected_commands, self.executes) def aoe_connection(self, shelf, lun): return { 'driver_volume_type': 'aoe', 'data': { 'target_shelf': shelf, 'target_lun': lun, } } def test_libvirt_aoe_driver(self): # NOTE(jbr_) exists is to make driver assume connecting worked self.stubs.Set(os.path, 'exists', lambda x: True) libvirt_driver = volume.LibvirtAOEVolumeDriver(self.fake_conn) shelf = '100' lun = '1' connection_info = self.aoe_connection(shelf, lun) conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() aoedevpath = '/dev/etherd/e%s.%s' % (shelf, lun) self.assertEqual(tree.get('type'), 'block') self.assertEqual(tree.find('./source').get('dev'), aoedevpath) libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_glusterfs_driver(self): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = volume.LibvirtGlusterfsVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/volume-00001' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) connection_info = {'data': {'export': export_string, 'name': self.name}} conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('mkdir', '-p', export_mnt_base), ('mount', '-t', 'glusterfs', export_string, export_mnt_base), ('umount', export_mnt_base)] self.assertEqual(expected_commands, self.executes) def test_libvirt_glusterfs_driver_already_mounted(self): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = volume.LibvirtGlusterfsVolumeDriver(self.fake_conn) export_string = '192.168.1.1:/volume-00001' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) connection_info = {'data': {'export': export_string, 'name': self.name}} conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('findmnt', '--target', export_mnt_base, '--source', export_string), ('umount', export_mnt_base)] self.assertEqual(self.executes, expected_commands) def test_libvirt_glusterfs_driver_qcow2(self): libvirt_driver = volume.LibvirtGlusterfsVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/volume-00001' name = 'volume-00001' format = 'qcow2' connection_info = {'data': {'export': export_string, 'name': name, 'format': format}} disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.get('type'), 'file') self.assertEqual(tree.find('./driver').get('type'), 'qcow2') libvirt_driver.disconnect_volume(connection_info, "vde") def test_libvirt_glusterfs_driver_with_opts(self): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = volume.LibvirtGlusterfsVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/volume-00001' options = '-o backupvolfile-server=192.168.1.2' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) connection_info = {'data': {'export': export_string, 'name': self.name, 'options': options}} conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('mkdir', '-p', export_mnt_base), ('mount', '-t', 'glusterfs', '-o', 'backupvolfile-server=192.168.1.2', export_string, export_mnt_base), ('umount', export_mnt_base), ] self.assertEqual(self.executes, expected_commands) def test_libvirt_glusterfs_libgfapi(self): self.flags(qemu_allowed_storage_drivers=['gluster'], group='libvirt') libvirt_driver = volume.LibvirtGlusterfsVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/volume-00001' name = 'volume-00001' connection_info = {'data': {'export': export_string, 'name': name}} disk_info = { "dev": "vde", "type": "disk", "bus": "virtio", } conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.get('type'), 'network') self.assertEqual(tree.find('./driver').get('type'), 'raw') source = tree.find('./source') self.assertEqual(source.get('protocol'), 'gluster') self.assertEqual(source.get('name'), 'volume-00001/volume-00001') self.assertEqual(source.find('./host').get('name'), '192.168.1.1') self.assertEqual(source.find('./host').get('port'), '24007') libvirt_driver.disconnect_volume(connection_info, "vde") def fibrechan_connection(self, volume, location, wwn): return { 'driver_volume_type': 'fibrechan', 'data': { 'volume_id': volume['id'], 'target_portal': location, 'target_wwn': wwn, 'target_lun': 1, } } def test_libvirt_fibrechan_driver(self): self.stubs.Set(libvirt_utils, 'get_fc_hbas', fake_libvirt_utils.get_fc_hbas) self.stubs.Set(libvirt_utils, 'get_fc_hbas_info', fake_libvirt_utils.get_fc_hbas_info) # NOTE(vish) exists is to make driver assume connecting worked self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(os.path, 'realpath', lambda x: '/dev/sdb') libvirt_driver = volume.LibvirtFibreChannelVolumeDriver(self.fake_conn) multipath_devname = '/dev/md-1' devices = {"device": multipath_devname, "id": "1234567890", "devices": [{'device': '/dev/sdb', 'address': '1:0:0:1', 'host': 1, 'channel': 0, 'id': 0, 'lun': 1}]} self.stubs.Set(linuxscsi, 'find_multipath_device', lambda x: devices) self.stubs.Set(linuxscsi, 'remove_device', lambda x: None) # Should work for string, unicode, and list wwns = ['1234567890123456', unicode('1234567890123456'), ['1234567890123456', '1234567890123457']] for wwn in wwns: connection_info = self.fibrechan_connection(self.vol, self.location, wwn) mount_device = "vde" conf = libvirt_driver.connect_volume(connection_info, self.disk_info) tree = conf.format_dom() dev_str = '/dev/disk/by-path/pci-0000:05:00.2-fc-0x%s-lun-1' % wwn self.assertEqual(tree.get('type'), 'block') self.assertEqual(tree.find('./source').get('dev'), multipath_devname) connection_info["data"]["devices"] = devices["devices"] libvirt_driver.disconnect_volume(connection_info, mount_device) expected_commands = [] self.assertEqual(self.executes, expected_commands) # Should not work for anything other than string, unicode, and list connection_info = self.fibrechan_connection(self.vol, self.location, 123) self.assertRaises(exception.NovaException, libvirt_driver.connect_volume, connection_info, self.disk_info) self.stubs.Set(libvirt_utils, 'get_fc_hbas', lambda: []) self.stubs.Set(libvirt_utils, 'get_fc_hbas_info', lambda: []) self.assertRaises(exception.NovaException, libvirt_driver.connect_volume, connection_info, self.disk_info) def test_libvirt_fibrechan_getpci_num(self): libvirt_driver = volume.LibvirtFibreChannelVolumeDriver(self.fake_conn) hba = {'device_path': "/sys/devices/pci0000:00/0000:00:03.0" "/0000:05:00.3/host2/fc_host/host2"} pci_num = libvirt_driver._get_pci_num(hba) self.assertEqual("0000:05:00.3", pci_num) hba = {'device_path': "/sys/devices/pci0000:00/0000:00:03.0" "/0000:05:00.3/0000:06:00.6/host2/fc_host/host2"} pci_num = libvirt_driver._get_pci_num(hba) self.assertEqual("0000:06:00.6", pci_num) def test_libvirt_scality_driver(self): tempdir = self.useFixture(fixtures.TempDir()).path TEST_MOUNT = os.path.join(tempdir, 'fake_mount') TEST_CONFIG = os.path.join(tempdir, 'fake_config') TEST_VOLDIR = 'volumes' TEST_VOLNAME = 'volume_name' TEST_CONN_INFO = { 'data': { 'sofs_path': os.path.join(TEST_VOLDIR, TEST_VOLNAME) } } TEST_VOLPATH = os.path.join(TEST_MOUNT, TEST_VOLDIR, TEST_VOLNAME) open(TEST_CONFIG, "w+").close() os.makedirs(os.path.join(TEST_MOUNT, 'sys')) def _access_wrapper(path, flags): if path == '/sbin/mount.sofs': return True else: return os.access(path, flags) self.stubs.Set(os, 'access', _access_wrapper) self.flags(scality_sofs_config=TEST_CONFIG, scality_sofs_mount_point=TEST_MOUNT, group='libvirt') driver = volume.LibvirtScalityVolumeDriver(self.fake_conn) conf = driver.connect_volume(TEST_CONN_INFO, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, TEST_VOLPATH) nova-2014.1/nova/tests/virt/libvirt/fake_imagebackend.py0000664000175400017540000000407312323721477024414 0ustar jenkinsjenkins00000000000000# Copyright 2012 Grid Dynamics # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os from nova.virt.libvirt import config from nova.virt.libvirt import imagebackend class Backend(object): def __init__(self, use_cow): pass def image(self, instance, name, image_type=''): class FakeImage(imagebackend.Image): def __init__(self, instance, name): self.path = os.path.join(instance['name'], name) def create_image(self, prepare_template, base, size, *args, **kwargs): pass def cache(self, fetch_func, filename, size=None, *args, **kwargs): pass def snapshot(self, name): pass def libvirt_info(self, disk_bus, disk_dev, device_type, cache_mode, extra_specs, hypervisor_version): info = config.LibvirtConfigGuestDisk() info.source_type = 'file' info.source_device = device_type info.target_bus = disk_bus info.target_dev = disk_dev info.driver_cache = cache_mode info.driver_format = 'raw' info.source_path = self.path return info return FakeImage(instance, name) def snapshot(self, path, image_type=''): #NOTE(bfilippov): this is done in favor for # snapshot tests in test_libvirt.LibvirtConnTestCase return imagebackend.Backend(True).snapshot(path, image_type) nova-2014.1/nova/tests/virt/libvirt/test_fakelibvirt.py0000664000175400017540000003621112323721477024374 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import test from lxml import etree import nova.tests.virt.libvirt.fakelibvirt as libvirt def get_vm_xml(name="testname", uuid=None, source_type='file', interface_type='bridge'): uuid_tag = '' if uuid: uuid_tag = '%s' % (uuid,) return ''' %(name)s %(uuid_tag)s 128000 1 hvm /somekernel root=/dev/sda ''' % {'name': name, 'uuid_tag': uuid_tag, 'source_type': source_type, 'interface_type': interface_type} class FakeLibvirtTests(test.NoDBTestCase): def tearDown(self): super(FakeLibvirtTests, self).tearDown() libvirt._reset() def get_openAuth_curry_func(self, readOnly=False): def fake_cb(credlist): return 0 creds = [[libvirt.VIR_CRED_AUTHNAME, libvirt.VIR_CRED_NOECHOPROMPT], fake_cb, None] flags = 0 if readOnly: flags = libvirt.VIR_CONNECT_RO return lambda uri: libvirt.openAuth(uri, creds, flags) def test_openAuth_accepts_None_uri_by_default(self): conn_method = self.get_openAuth_curry_func() conn = conn_method(None) self.assertNotEqual(conn, None, "Connecting to fake libvirt failed") def test_openAuth_can_refuse_None_uri(self): conn_method = self.get_openAuth_curry_func() libvirt.allow_default_uri_connection = False self.addCleanup(libvirt._reset) self.assertRaises(ValueError, conn_method, None) def test_openAuth_refuses_invalid_URI(self): conn_method = self.get_openAuth_curry_func() self.assertRaises(libvirt.libvirtError, conn_method, 'blah') def test_getInfo(self): conn_method = self.get_openAuth_curry_func(readOnly=True) res = conn_method(None).getInfo() self.assertIn(res[0], ('i686', 'x86_64')) self.assertTrue(1024 <= res[1] <= 16384, "Memory unusually high or low.") self.assertTrue(1 <= res[2] <= 32, "Active CPU count unusually high or low.") self.assertTrue(800 <= res[3] <= 4500, "CPU speed unusually high or low.") self.assertTrue(res[2] <= (res[5] * res[6]), "More active CPUs than num_sockets*cores_per_socket") def test_createXML_detects_invalid_xml(self): self._test_XML_func_detects_invalid_xml('createXML', [0]) def test_defineXML_detects_invalid_xml(self): self._test_XML_func_detects_invalid_xml('defineXML', []) def _test_XML_func_detects_invalid_xml(self, xmlfunc_name, args): conn = self.get_openAuth_curry_func()('qemu:///system') try: getattr(conn, xmlfunc_name)("this is not valid ", *args) except libvirt.libvirtError as e: self.assertEqual(e.get_error_code(), libvirt.VIR_ERR_XML_DETAIL) self.assertEqual(e.get_error_domain(), libvirt.VIR_FROM_DOMAIN) return raise self.failureException("Invalid XML didn't raise libvirtError") def test_defineXML_defines_domain(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.defineXML(get_vm_xml()) dom = conn.lookupByName('testname') self.assertEqual('testname', dom.name()) self.assertEqual(0, dom.isActive()) dom.undefine() self.assertRaises(libvirt.libvirtError, conn.lookupByName, 'testname') def test_blockStats(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.createXML(get_vm_xml(), 0) dom = conn.lookupByName('testname') blockstats = dom.blockStats('vda') self.assertEqual(len(blockstats), 5) for x in blockstats: self.assertIn(type(x), [int, long]) def test_attach_detach(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.createXML(get_vm_xml(), 0) dom = conn.lookupByName('testname') xml = ''' ''' self.assertTrue(dom.attachDevice(xml)) self.assertTrue(dom.detachDevice(xml)) def test_info(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.createXML(get_vm_xml(), 0) dom = conn.lookupByName('testname') info = dom.info() self.assertEqual(info[0], libvirt.VIR_DOMAIN_RUNNING) self.assertEqual(info[1], 128000) self.assertTrue(info[2] <= 128000) self.assertEqual(info[3], 1) self.assertIn(type(info[4]), [int, long]) def test_createXML_runs_domain(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.createXML(get_vm_xml(), 0) dom = conn.lookupByName('testname') self.assertEqual('testname', dom.name()) self.assertEqual(1, dom.isActive()) dom.destroy() try: dom = conn.lookupByName('testname') except libvirt.libvirtError as e: self.assertEqual(e.get_error_code(), libvirt.VIR_ERR_NO_DOMAIN) self.assertEqual(e.get_error_domain(), libvirt.VIR_FROM_QEMU) return self.fail("lookupByName succeeded for destroyed non-defined VM") def test_defineXML_remembers_uuid(self): conn = self.get_openAuth_curry_func()('qemu:///system') uuid = 'b21f957d-a72f-4b93-b5a5-45b1161abb02' conn.defineXML(get_vm_xml(uuid=uuid)) dom = conn.lookupByName('testname') self.assertEqual(dom.UUIDString(), uuid) def test_createWithFlags(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.defineXML(get_vm_xml()) dom = conn.lookupByName('testname') self.assertFalse(dom.isActive(), 'Defined domain was running.') dom.createWithFlags(0) self.assertTrue(dom.isActive(), 'Domain wasn\'t running after createWithFlags') def test_managedSave(self): conn = self.get_openAuth_curry_func()('qemu:///system') conn.defineXML(get_vm_xml()) dom = conn.lookupByName('testname') self.assertFalse(dom.isActive(), 'Defined domain was running.') dom.createWithFlags(0) self.assertEqual(dom.hasManagedSaveImage(0), 0) dom.managedSave(0) self.assertEqual(dom.hasManagedSaveImage(0), 1) dom.managedSaveRemove(0) self.assertEqual(dom.hasManagedSaveImage(0), 0) def test_listDomainsId_and_lookupById(self): conn = self.get_openAuth_curry_func()('qemu:///system') self.assertEqual(conn.listDomainsID(), []) conn.defineXML(get_vm_xml()) dom = conn.lookupByName('testname') dom.createWithFlags(0) self.assertEqual(len(conn.listDomainsID()), 1) dom_id = conn.listDomainsID()[0] self.assertEqual(conn.lookupByID(dom_id), dom) dom_id = conn.listDomainsID()[0] try: conn.lookupByID(dom_id + 1) except libvirt.libvirtError as e: self.assertEqual(e.get_error_code(), libvirt.VIR_ERR_NO_DOMAIN) self.assertEqual(e.get_error_domain(), libvirt.VIR_FROM_QEMU) return raise self.failureException("Looking up an invalid domain ID didn't " "raise libvirtError") def test_define_and_retrieve(self): conn = self.get_openAuth_curry_func()('qemu:///system') self.assertEqual(conn.listDomainsID(), []) conn.defineXML(get_vm_xml()) dom = conn.lookupByName('testname') xml = dom.XMLDesc(0) etree.fromstring(xml) def _test_accepts_source_type(self, source_type): conn = self.get_openAuth_curry_func()('qemu:///system') self.assertEqual(conn.listDomainsID(), []) conn.defineXML(get_vm_xml(source_type=source_type)) dom = conn.lookupByName('testname') xml = dom.XMLDesc(0) tree = etree.fromstring(xml) elem = tree.find('./devices/disk/source') self.assertEqual(elem.get('file'), '/somefile') def test_accepts_source_dev(self): self._test_accepts_source_type('dev') def test_accepts_source_path(self): self._test_accepts_source_type('path') def test_network_type_bridge_sticks(self): self._test_network_type_sticks('bridge') def test_network_type_network_sticks(self): self._test_network_type_sticks('network') def _test_network_type_sticks(self, network_type): conn = self.get_openAuth_curry_func()('qemu:///system') self.assertEqual(conn.listDomainsID(), []) conn.defineXML(get_vm_xml(interface_type=network_type)) dom = conn.lookupByName('testname') xml = dom.XMLDesc(0) tree = etree.fromstring(xml) elem = tree.find('./devices/interface') self.assertEqual(elem.get('type'), network_type) elem = elem.find('./source') self.assertEqual(elem.get(network_type), 'br100') def test_getType(self): conn = self.get_openAuth_curry_func()('qemu:///system') self.assertEqual(conn.getType(), 'QEMU') def test_getVersion(self): conn = self.get_openAuth_curry_func()('qemu:///system') self.assertTrue(type(conn.getVersion()) is int) def test_getCapabilities(self): conn = self.get_openAuth_curry_func()('qemu:///system') etree.fromstring(conn.getCapabilities()) def test_nwfilter_define_undefine(self): conn = self.get_openAuth_curry_func()('qemu:///system') # Will raise an exception if it's not valid XML xml = ''' 946878c6-3ad3-82b2-87f3-c709f3807f58 ''' conn.nwfilterDefineXML(xml) nwfilter = conn.nwfilterLookupByName('nova-instance-instance-789') nwfilter.undefine() try: conn.nwfilterLookupByName('nova-instance-instance-789320334') except libvirt.libvirtError as e: self.assertEqual(e.get_error_code(), libvirt.VIR_ERR_NO_NWFILTER) self.assertEqual(e.get_error_domain(), libvirt.VIR_FROM_NWFILTER) return raise self.failureException("Invalid NWFilter name didn't" " raise libvirtError") def test_compareCPU_compatible(self): conn = self.get_openAuth_curry_func()('qemu:///system') xml = ''' %s %s %s ''' % (libvirt.node_arch, libvirt.node_cpu_model, libvirt.node_cpu_vendor, libvirt.node_sockets, libvirt.node_cores, libvirt.node_threads) self.assertEqual(conn.compareCPU(xml, 0), libvirt.VIR_CPU_COMPARE_IDENTICAL) def test_compareCPU_incompatible_vendor(self): conn = self.get_openAuth_curry_func()('qemu:///system') xml = ''' %s %s %s ''' % (libvirt.node_arch, libvirt.node_cpu_model, "AnotherVendor", libvirt.node_sockets, libvirt.node_cores, libvirt.node_threads) self.assertEqual(conn.compareCPU(xml, 0), libvirt.VIR_CPU_COMPARE_INCOMPATIBLE) def test_compareCPU_incompatible_arch(self): conn = self.get_openAuth_curry_func()('qemu:///system') xml = ''' %s %s %s ''' % ('not-a-valid-arch', libvirt.node_cpu_model, libvirt.node_cpu_vendor, libvirt.node_sockets, libvirt.node_cores, libvirt.node_threads) self.assertEqual(conn.compareCPU(xml, 0), libvirt.VIR_CPU_COMPARE_INCOMPATIBLE) def test_compareCPU_incompatible_model(self): conn = self.get_openAuth_curry_func()('qemu:///system') xml = ''' %s %s %s ''' % (libvirt.node_arch, "AnotherModel", libvirt.node_cpu_vendor, libvirt.node_sockets, libvirt.node_cores, libvirt.node_threads) self.assertEqual(conn.compareCPU(xml, 0), libvirt.VIR_CPU_COMPARE_INCOMPATIBLE) def test_compareCPU_compatible_unspecified_model(self): conn = self.get_openAuth_curry_func()('qemu:///system') xml = ''' %s %s ''' % (libvirt.node_arch, libvirt.node_cpu_vendor, libvirt.node_sockets, libvirt.node_cores, libvirt.node_threads) self.assertEqual(conn.compareCPU(xml, 0), libvirt.VIR_CPU_COMPARE_IDENTICAL) nova-2014.1/nova/tests/virt/libvirt/test_image_utils.py0000664000175400017540000002252312323721477024375 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Yahoo! Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os from nova import test from nova import utils from nova.virt import images from nova.virt.libvirt import utils as libvirt_utils class ImageUtilsTestCase(test.NoDBTestCase): def test_disk_type(self): # Seems like lvm detection # if its in /dev ?? for p in ['/dev/b', '/dev/blah/blah']: d_type = libvirt_utils.get_disk_type(p) self.assertEqual('lvm', d_type) # Try rbd detection d_type = libvirt_utils.get_disk_type('rbd:pool/instance') self.assertEqual('rbd', d_type) # Try the other types template_output = """image: %(path)s file format: %(format)s virtual size: 64M (67108864 bytes) cluster_size: 65536 disk size: 96K """ path = '/myhome/disk.config' for f in ['raw', 'qcow2']: output = template_output % ({ 'format': f, 'path': path, }) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((output, '')) self.mox.ReplayAll() d_type = libvirt_utils.get_disk_type(path) self.assertEqual(f, d_type) self.mox.UnsetStubs() def test_disk_backing(self): path = '/myhome/disk.config' template_output = """image: %(path)s file format: raw virtual size: 2K (2048 bytes) cluster_size: 65536 disk size: 96K """ output = template_output % ({ 'path': path, }) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((output, '')) self.mox.ReplayAll() d_backing = libvirt_utils.get_disk_backing_file(path) self.assertIsNone(d_backing) def test_disk_size(self): path = '/myhome/disk.config' template_output = """image: %(path)s file format: raw virtual size: %(v_size)s (%(vsize_b)s bytes) cluster_size: 65536 disk size: 96K """ for i in range(0, 128): bytes = i * 65336 kbytes = bytes / 1024 mbytes = kbytes / 1024 output = template_output % ({ 'v_size': "%sM" % (mbytes), 'vsize_b': i, 'path': path, }) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((output, '')) self.mox.ReplayAll() d_size = libvirt_utils.get_disk_size(path) self.assertEqual(i, d_size) self.mox.UnsetStubs() output = template_output % ({ 'v_size': "%sK" % (kbytes), 'vsize_b': i, 'path': path, }) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((output, '')) self.mox.ReplayAll() d_size = libvirt_utils.get_disk_size(path) self.assertEqual(i, d_size) self.mox.UnsetStubs() def test_qemu_info_canon(self): path = "disk.config" example_output = """image: disk.config file format: raw virtual size: 64M (67108864 bytes) cluster_size: 65536 disk size: 96K blah BLAH: bb """ self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) self.assertEqual('disk.config', image_info.image) self.assertEqual('raw', image_info.file_format) self.assertEqual(67108864, image_info.virtual_size) self.assertEqual(98304, image_info.disk_size) self.assertEqual(65536, image_info.cluster_size) def test_qemu_info_canon2(self): path = "disk.config" example_output = """image: disk.config file format: QCOW2 virtual size: 67108844 cluster_size: 65536 disk size: 963434 backing file: /var/lib/nova/a328c7998805951a_2 """ self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) self.assertEqual('disk.config', image_info.image) self.assertEqual('qcow2', image_info.file_format) self.assertEqual(67108844, image_info.virtual_size) self.assertEqual(963434, image_info.disk_size) self.assertEqual(65536, image_info.cluster_size) self.assertEqual('/var/lib/nova/a328c7998805951a_2', image_info.backing_file) def test_qemu_backing_file_actual(self): path = "disk.config" example_output = """image: disk.config file format: raw virtual size: 64M (67108864 bytes) cluster_size: 65536 disk size: 96K Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 backing file: /var/lib/nova/a328c7998805951a_2 (actual path: /b/3a988059e51a_2) """ self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) self.assertEqual('disk.config', image_info.image) self.assertEqual('raw', image_info.file_format) self.assertEqual(67108864, image_info.virtual_size) self.assertEqual(98304, image_info.disk_size) self.assertEqual(1, len(image_info.snapshots)) self.assertEqual('/b/3a988059e51a_2', image_info.backing_file) def test_qemu_info_convert(self): path = "disk.config" example_output = """image: disk.config file format: raw virtual size: 64M disk size: 96K Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 3 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 4 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 junk stuff: bbb """ self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) self.assertEqual('disk.config', image_info.image) self.assertEqual('raw', image_info.file_format) self.assertEqual(67108864, image_info.virtual_size) self.assertEqual(98304, image_info.disk_size) def test_qemu_info_snaps(self): path = "disk.config" example_output = """image: disk.config file format: raw virtual size: 64M (67108864 bytes) disk size: 96K Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 3 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 4 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 """ self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) self.assertEqual('disk.config', image_info.image) self.assertEqual('raw', image_info.file_format) self.assertEqual(67108864, image_info.virtual_size) self.assertEqual(98304, image_info.disk_size) self.assertEqual(3, len(image_info.snapshots)) nova-2014.1/nova/tests/virt/libvirt/test_libvirt_utils.py0000664000175400017540000002341412323721510024752 0ustar jenkinsjenkins00000000000000# Copyright 2012 NTT Data # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import functools import os import mock from oslo.config import cfg from nova.openstack.common import processutils from nova import test from nova import utils from nova.virt.libvirt import utils as libvirt_utils CONF = cfg.CONF class LibvirtUtilsTestCase(test.NoDBTestCase): def test_get_disk_type(self): path = "disk.config" example_output = """image: disk.config file format: raw virtual size: 64M (67108864 bytes) cluster_size: 65536 disk size: 96K blah BLAH: bb """ self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists(path).AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() disk_type = libvirt_utils.get_disk_type(path) self.assertEqual(disk_type, 'raw') def test_logical_volume_size(self): executes = [] def fake_execute(*cmd, **kwargs): executes.append(cmd) return 123456789, None expected_commands = [('blockdev', '--getsize64', '/dev/foo')] self.stubs.Set(utils, 'execute', fake_execute) size = libvirt_utils.logical_volume_size('/dev/foo') self.assertEqual(expected_commands, executes) self.assertEqual(size, 123456789) def test_lvm_clear(self): def fake_lvm_size(path): return lvm_size def fake_execute(*cmd, **kwargs): executes.append(cmd) self.stubs.Set(libvirt_utils, 'logical_volume_size', fake_lvm_size) self.stubs.Set(utils, 'execute', fake_execute) # Test the correct dd commands are run for various sizes lvm_size = 1 executes = [] expected_commands = [('dd', 'bs=1', 'if=/dev/zero', 'of=/dev/v1', 'seek=0', 'count=1', 'conv=fdatasync')] libvirt_utils.clear_logical_volume('/dev/v1') self.assertEqual(expected_commands, executes) lvm_size = 1024 executes = [] expected_commands = [('dd', 'bs=1024', 'if=/dev/zero', 'of=/dev/v2', 'seek=0', 'count=1', 'conv=fdatasync')] libvirt_utils.clear_logical_volume('/dev/v2') self.assertEqual(expected_commands, executes) lvm_size = 1025 executes = [] expected_commands = [('dd', 'bs=1024', 'if=/dev/zero', 'of=/dev/v3', 'seek=0', 'count=1', 'conv=fdatasync')] expected_commands += [('dd', 'bs=1', 'if=/dev/zero', 'of=/dev/v3', 'seek=1024', 'count=1', 'conv=fdatasync')] libvirt_utils.clear_logical_volume('/dev/v3') self.assertEqual(expected_commands, executes) lvm_size = 1048576 executes = [] expected_commands = [('dd', 'bs=1048576', 'if=/dev/zero', 'of=/dev/v4', 'seek=0', 'count=1', 'oflag=direct')] libvirt_utils.clear_logical_volume('/dev/v4') self.assertEqual(expected_commands, executes) lvm_size = 1048577 executes = [] expected_commands = [('dd', 'bs=1048576', 'if=/dev/zero', 'of=/dev/v5', 'seek=0', 'count=1', 'oflag=direct')] expected_commands += [('dd', 'bs=1', 'if=/dev/zero', 'of=/dev/v5', 'seek=1048576', 'count=1', 'conv=fdatasync')] libvirt_utils.clear_logical_volume('/dev/v5') self.assertEqual(expected_commands, executes) lvm_size = 1234567 executes = [] expected_commands = [('dd', 'bs=1048576', 'if=/dev/zero', 'of=/dev/v6', 'seek=0', 'count=1', 'oflag=direct')] expected_commands += [('dd', 'bs=1024', 'if=/dev/zero', 'of=/dev/v6', 'seek=1024', 'count=181', 'conv=fdatasync')] expected_commands += [('dd', 'bs=1', 'if=/dev/zero', 'of=/dev/v6', 'seek=1233920', 'count=647', 'conv=fdatasync')] libvirt_utils.clear_logical_volume('/dev/v6') self.assertEqual(expected_commands, executes) # Test volume_clear_size limits the size lvm_size = 10485761 CONF.set_override('volume_clear_size', '1', 'libvirt') executes = [] expected_commands = [('dd', 'bs=1048576', 'if=/dev/zero', 'of=/dev/v7', 'seek=0', 'count=1', 'oflag=direct')] libvirt_utils.clear_logical_volume('/dev/v7') self.assertEqual(expected_commands, executes) CONF.set_override('volume_clear_size', '2', 'libvirt') lvm_size = 1048576 executes = [] expected_commands = [('dd', 'bs=1048576', 'if=/dev/zero', 'of=/dev/v9', 'seek=0', 'count=1', 'oflag=direct')] libvirt_utils.clear_logical_volume('/dev/v9') self.assertEqual(expected_commands, executes) # Test volume_clear=shred CONF.set_override('volume_clear', 'shred', 'libvirt') CONF.set_override('volume_clear_size', '0', 'libvirt') lvm_size = 1048576 executes = [] expected_commands = [('shred', '-n3', '-s1048576', '/dev/va')] libvirt_utils.clear_logical_volume('/dev/va') self.assertEqual(expected_commands, executes) CONF.set_override('volume_clear', 'shred', 'libvirt') CONF.set_override('volume_clear_size', '1', 'libvirt') lvm_size = 10485761 executes = [] expected_commands = [('shred', '-n3', '-s1048576', '/dev/vb')] libvirt_utils.clear_logical_volume('/dev/vb') self.assertEqual(expected_commands, executes) # Test volume_clear=none does nothing CONF.set_override('volume_clear', 'none', 'libvirt') executes = [] expected_commands = [] libvirt_utils.clear_logical_volume('/dev/vc') self.assertEqual(expected_commands, executes) # Test volume_clear=invalid falls back to the default 'zero' CONF.set_override('volume_clear', 'invalid', 'libvirt') lvm_size = 1 executes = [] expected_commands = [('dd', 'bs=1', 'if=/dev/zero', 'of=/dev/vd', 'seek=0', 'count=1', 'conv=fdatasync')] libvirt_utils.clear_logical_volume('/dev/vd') self.assertEqual(expected_commands, executes) def test_list_rbd_volumes(self): conf = '/etc/ceph/fake_ceph.conf' pool = 'fake_pool' user = 'user' self.flags(images_rbd_ceph_conf=conf, group='libvirt') self.flags(rbd_user=user, group='libvirt') fn = self.mox.CreateMockAnything() self.mox.StubOutWithMock(libvirt_utils.utils, 'execute') libvirt_utils.utils.execute('rbd', '-p', pool, 'ls', '--id', user, '--conf', conf).AndReturn(("Out", "Error")) self.mox.ReplayAll() libvirt_utils.list_rbd_volumes(pool) self.mox.VerifyAll() def test_remove_rbd_volumes(self): conf = '/etc/ceph/fake_ceph.conf' pool = 'fake_pool' user = 'user' names = ['volume1', 'volume2', 'volume3'] self.flags(images_rbd_ceph_conf=conf, group='libvirt') self.flags(rbd_user=user, group='libvirt') fn = self.mox.CreateMockAnything() self.mox.StubOutWithMock(libvirt_utils.utils, 'execute') libvirt_utils.utils.execute('rbd', '-p', pool, 'rm', 'volume1', '--id', user, '--conf', conf, attempts=3, run_as_root=True) libvirt_utils.utils.execute('rbd', '-p', pool, 'rm', 'volume2', '--id', user, '--conf', conf, attempts=3, run_as_root=True) libvirt_utils.utils.execute('rbd', '-p', pool, 'rm', 'volume3', '--id', user, '--conf', conf, attempts=3, run_as_root=True) self.mox.ReplayAll() libvirt_utils.remove_rbd_volumes(pool, *names) self.mox.VerifyAll() @mock.patch('nova.utils.execute') def test_copy_image_local_cp(self, mock_execute): libvirt_utils.copy_image('src', 'dest') mock_execute.assert_called_once_with('cp', 'src', 'dest') _rsync_call = functools.partial(mock.call, 'rsync', '--sparse', '--compress') @mock.patch('nova.utils.execute') def test_copy_image_rsync(self, mock_execute): libvirt_utils.copy_image('src', 'dest', host='host') mock_execute.assert_has_calls([ self._rsync_call('--dry-run', 'src', 'host:dest'), self._rsync_call('src', 'host:dest'), ]) self.assertEqual(2, mock_execute.call_count) @mock.patch('nova.utils.execute') def test_copy_image_scp(self, mock_execute): mock_execute.side_effect = [ processutils.ProcessExecutionError, mock.DEFAULT, ] libvirt_utils.copy_image('src', 'dest', host='host') mock_execute.assert_has_calls([ self._rsync_call('--dry-run', 'src', 'host:dest'), mock.call('scp', 'src', 'host:dest'), ]) self.assertEqual(2, mock_execute.call_count) nova-2014.1/nova/tests/virt/libvirt/test_imagebackend.py0000664000175400017540000010600312323721510024445 0ustar jenkinsjenkins00000000000000# Copyright 2012 Grid Dynamics # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import shutil import tempfile import fixtures from oslo.config import cfg import inspect from nova import exception from nova.openstack.common import units from nova.openstack.common import uuidutils from nova import test from nova.tests import fake_processutils from nova.tests.virt.libvirt import fake_libvirt_utils from nova import utils from nova.virt.libvirt import imagebackend CONF = cfg.CONF class _ImageTestCase(object): def mock_create_image(self, image): def create_image(fn, base, size, *args, **kwargs): fn(target=base, *args, **kwargs) image.create_image = create_image def setUp(self): super(_ImageTestCase, self).setUp() self.INSTANCES_PATH = tempfile.mkdtemp(suffix='instances') self.flags(disable_process_locking=True, instances_path=self.INSTANCES_PATH) self.INSTANCE = {'name': 'instance', 'uuid': uuidutils.generate_uuid()} self.DISK_INFO_PATH = os.path.join(self.INSTANCES_PATH, self.INSTANCE['uuid'], 'disk.info') self.NAME = 'fake.vm' self.TEMPLATE = 'template' self.OLD_STYLE_INSTANCE_PATH = \ fake_libvirt_utils.get_instance_path(self.INSTANCE, forceold=True) self.PATH = os.path.join( fake_libvirt_utils.get_instance_path(self.INSTANCE), self.NAME) # TODO(mikal): rename template_dir to base_dir and template_path # to cached_image_path. This will be less confusing. self.TEMPLATE_DIR = os.path.join(CONF.instances_path, '_base') self.TEMPLATE_PATH = os.path.join(self.TEMPLATE_DIR, 'template') self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.imagebackend.libvirt_utils', fake_libvirt_utils)) def fake_chown(path, owner_uid=None): return None self.stubs.Set(utils, 'chown', fake_chown) def tearDown(self): super(_ImageTestCase, self).tearDown() shutil.rmtree(self.INSTANCES_PATH) def test_prealloc_image(self): CONF.set_override('preallocate_images', 'space') fake_processutils.fake_execute_clear_log() fake_processutils.stub_out_processutils_execute(self.stubs) image = self.image_class(self.INSTANCE, self.NAME) def fake_fetch(target, *args, **kwargs): return self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(os, 'access', lambda p, w: True) # Call twice to verify testing fallocate is only called once. image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) self.assertEqual(fake_processutils.fake_execute_get_log(), ['fallocate -n -l 1 %s.fallocate_test' % self.PATH, 'fallocate -n -l %s %s' % (self.SIZE, self.PATH), 'fallocate -n -l %s %s' % (self.SIZE, self.PATH)]) def test_prealloc_image_without_write_access(self): CONF.set_override('preallocate_images', 'space') fake_processutils.fake_execute_clear_log() fake_processutils.stub_out_processutils_execute(self.stubs) image = self.image_class(self.INSTANCE, self.NAME) def fake_fetch(target, *args, **kwargs): return self.stubs.Set(image, 'check_image_exists', lambda: True) self.stubs.Set(image, '_can_fallocate', lambda: True) self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(os, 'access', lambda p, w: False) # Testing fallocate is only called when user has write access. image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) self.assertEqual(fake_processutils.fake_execute_get_log(), []) class RawTestCase(_ImageTestCase, test.NoDBTestCase): SIZE = 1024 def setUp(self): self.image_class = imagebackend.Raw super(RawTestCase, self).setUp() self.stubs.Set(imagebackend.Raw, 'correct_format', lambda _: None) def fake_chown(path, owner_uid=None): return None self.stubs.Set(utils, 'chown', fake_chown) def prepare_mocks(self): fn = self.mox.CreateMockAnything() self.mox.StubOutWithMock(imagebackend.utils.synchronized, '__call__') self.mox.StubOutWithMock(imagebackend.libvirt_utils, 'copy_image') self.mox.StubOutWithMock(imagebackend.disk, 'extend') return fn def test_cache(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(False) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') imagebackend.fileutils.ensure_tree(self.TEMPLATE_DIR) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_image_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.cache(None, self.TEMPLATE) self.mox.VerifyAll() def test_cache_base_dir_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_template_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_create_image(self): fn = self.prepare_mocks() fn(target=self.TEMPLATE_PATH, max_size=None, image_id=None) imagebackend.libvirt_utils.copy_image(self.TEMPLATE_PATH, self.PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, None, image_id=None) self.mox.VerifyAll() def test_create_image_generated(self): fn = self.prepare_mocks() fn(target=self.PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, None) self.mox.VerifyAll() def test_create_image_extend(self): fn = self.prepare_mocks() fn(max_size=self.SIZE, target=self.TEMPLATE_PATH, image_id=None) imagebackend.libvirt_utils.copy_image(self.TEMPLATE_PATH, self.PATH) imagebackend.disk.extend(self.PATH, self.SIZE, use_cow=False) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, self.SIZE, image_id=None) self.mox.VerifyAll() def test_correct_format(self): self.stubs.UnsetAll() self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(imagebackend.images, 'qemu_img_info') def fake_chown(path, owner_uid=None): return None self.stubs.Set(utils, 'chown', fake_chown) os.path.exists(self.PATH).AndReturn(True) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) info = self.mox.CreateMockAnything() info.file_format = 'foo' imagebackend.images.qemu_img_info(self.PATH).AndReturn(info) os.path.exists(CONF.instances_path).AndReturn(True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME, path=self.PATH) self.assertEqual(image.driver_format, 'foo') self.mox.VerifyAll() def test_resolve_driver_format(self): image = self.image_class(self.INSTANCE, self.NAME) driver_format = image.resolve_driver_format() self.assertEqual(driver_format, 'raw') class Qcow2TestCase(_ImageTestCase, test.NoDBTestCase): SIZE = units.Gi def setUp(self): self.image_class = imagebackend.Qcow2 super(Qcow2TestCase, self).setUp() self.QCOW2_BASE = (self.TEMPLATE_PATH + '_%d' % (self.SIZE / units.Gi)) def fake_chown(path, owner_uid=None): return None self.stubs.Set(utils, 'chown', fake_chown) def prepare_mocks(self): fn = self.mox.CreateMockAnything() self.mox.StubOutWithMock(imagebackend.utils.synchronized, '__call__') self.mox.StubOutWithMock(imagebackend.libvirt_utils, 'create_cow_image') self.mox.StubOutWithMock(imagebackend.libvirt_utils, 'copy_image') self.mox.StubOutWithMock(imagebackend.disk, 'extend') return fn def test_cache(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(CONF.instances_path).AndReturn(True) os.path.exists(self.TEMPLATE_DIR).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_image_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.cache(None, self.TEMPLATE) self.mox.VerifyAll() def test_cache_base_dir_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_template_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_create_image(self): fn = self.prepare_mocks() fn(max_size=None, target=self.TEMPLATE_PATH) imagebackend.libvirt_utils.create_cow_image(self.TEMPLATE_PATH, self.PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, None) self.mox.VerifyAll() def test_create_image_with_size(self): fn = self.prepare_mocks() fn(max_size=self.SIZE, target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(False) os.path.exists(self.PATH).AndReturn(False) os.path.exists(self.PATH).AndReturn(False) imagebackend.libvirt_utils.create_cow_image(self.TEMPLATE_PATH, self.PATH) imagebackend.disk.extend(self.PATH, self.SIZE, use_cow=True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, self.SIZE) self.mox.VerifyAll() def test_create_image_too_small(self): fn = self.prepare_mocks() self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(imagebackend.disk, 'get_disk_size') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(True) imagebackend.disk.get_disk_size(self.TEMPLATE_PATH ).AndReturn(self.SIZE) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.assertRaises(exception.FlavorDiskTooSmall, image.create_image, fn, self.TEMPLATE_PATH, 1) self.mox.VerifyAll() def test_generate_resized_backing_files(self): fn = self.prepare_mocks() fn(max_size=self.SIZE, target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(imagebackend.libvirt_utils, 'get_disk_backing_file') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(CONF.instances_path).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(False) os.path.exists(self.PATH).AndReturn(True) imagebackend.libvirt_utils.get_disk_backing_file(self.PATH)\ .AndReturn(self.QCOW2_BASE) os.path.exists(self.QCOW2_BASE).AndReturn(False) imagebackend.libvirt_utils.copy_image(self.TEMPLATE_PATH, self.QCOW2_BASE) imagebackend.disk.extend(self.QCOW2_BASE, self.SIZE, use_cow=True) os.path.exists(self.PATH).AndReturn(True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, self.SIZE) self.mox.VerifyAll() def test_qcow2_exists_and_has_no_backing_file(self): fn = self.prepare_mocks() fn(max_size=self.SIZE, target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(imagebackend.libvirt_utils, 'get_disk_backing_file') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.DISK_INFO_PATH).AndReturn(False) os.path.exists(self.INSTANCES_PATH).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(False) os.path.exists(self.PATH).AndReturn(True) imagebackend.libvirt_utils.get_disk_backing_file(self.PATH)\ .AndReturn(None) os.path.exists(self.PATH).AndReturn(True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, self.SIZE) self.mox.VerifyAll() def test_resolve_driver_format(self): image = self.image_class(self.INSTANCE, self.NAME) driver_format = image.resolve_driver_format() self.assertEqual(driver_format, 'qcow2') def test_prealloc_image(self): CONF.set_override('preallocate_images', 'space') fake_processutils.fake_execute_clear_log() fake_processutils.stub_out_processutils_execute(self.stubs) image = self.image_class(self.INSTANCE, self.NAME) def fake_fetch(target, *args, **kwargs): return self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(os, 'access', lambda p, w: True) # Call twice to verify testing fallocate is only called once. image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) self.assertEqual(fake_processutils.fake_execute_get_log(), ['fallocate -n -l 1 %s.fallocate_test' % self.PATH, 'fallocate -n -l %s %s' % (self.SIZE, self.PATH), 'fallocate -n -l %s %s' % (self.SIZE, self.PATH)]) def test_prealloc_image_without_write_access(self): CONF.set_override('preallocate_images', 'space') fake_processutils.fake_execute_clear_log() fake_processutils.stub_out_processutils_execute(self.stubs) image = self.image_class(self.INSTANCE, self.NAME) def fake_fetch(target, *args, **kwargs): return self.stubs.Set(image, 'check_image_exists', lambda: True) self.stubs.Set(image, '_can_fallocate', lambda: True) self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(os, 'access', lambda p, w: False) # Testing fallocate is only called when user has write access. image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) self.assertEqual(fake_processutils.fake_execute_get_log(), []) class LvmTestCase(_ImageTestCase, test.NoDBTestCase): VG = 'FakeVG' TEMPLATE_SIZE = 512 SIZE = 1024 def setUp(self): self.image_class = imagebackend.Lvm super(LvmTestCase, self).setUp() self.flags(images_volume_group=self.VG, group='libvirt') self.LV = '%s_%s' % (self.INSTANCE['uuid'], self.NAME) self.OLD_STYLE_INSTANCE_PATH = None self.PATH = os.path.join('/dev', self.VG, self.LV) self.disk = imagebackend.disk self.utils = imagebackend.utils self.libvirt_utils = imagebackend.libvirt_utils def prepare_mocks(self): fn = self.mox.CreateMockAnything() self.mox.StubOutWithMock(self.disk, 'resize2fs') self.mox.StubOutWithMock(self.libvirt_utils, 'create_lvm_image') self.mox.StubOutWithMock(self.disk, 'get_disk_size') self.mox.StubOutWithMock(self.utils, 'execute') return fn def _create_image(self, sparse): fn = self.prepare_mocks() fn(max_size=None, target=self.TEMPLATE_PATH) self.libvirt_utils.create_lvm_image(self.VG, self.LV, self.TEMPLATE_SIZE, sparse=sparse) self.disk.get_disk_size(self.TEMPLATE_PATH ).AndReturn(self.TEMPLATE_SIZE) cmd = ('qemu-img', 'convert', '-O', 'raw', self.TEMPLATE_PATH, self.PATH) self.utils.execute(*cmd, run_as_root=True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, None) self.mox.VerifyAll() def _create_image_generated(self, sparse): fn = self.prepare_mocks() self.libvirt_utils.create_lvm_image(self.VG, self.LV, self.SIZE, sparse=sparse) fn(target=self.PATH, ephemeral_size=None) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, self.SIZE, ephemeral_size=None) self.mox.VerifyAll() def _create_image_resize(self, sparse): fn = self.prepare_mocks() fn(max_size=self.SIZE, target=self.TEMPLATE_PATH) self.libvirt_utils.create_lvm_image(self.VG, self.LV, self.SIZE, sparse=sparse) self.disk.get_disk_size(self.TEMPLATE_PATH ).AndReturn(self.TEMPLATE_SIZE) cmd = ('qemu-img', 'convert', '-O', 'raw', self.TEMPLATE_PATH, self.PATH) self.utils.execute(*cmd, run_as_root=True) self.disk.resize2fs(self.PATH, run_as_root=True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, self.SIZE) self.mox.VerifyAll() def test_cache(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(False) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') imagebackend.fileutils.ensure_tree(self.TEMPLATE_DIR) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_image_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(True) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.cache(None, self.TEMPLATE) self.mox.VerifyAll() def test_cache_base_dir_exists(self): self.mox.StubOutWithMock(os.path, 'exists') if self.OLD_STYLE_INSTANCE_PATH: os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False) os.path.exists(self.TEMPLATE_DIR).AndReturn(True) os.path.exists(self.PATH).AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_create_image(self): self._create_image(False) def test_create_image_sparsed(self): self.flags(sparse_logical_volumes=True, group='libvirt') self._create_image(True) def test_create_image_generated(self): self._create_image_generated(False) def test_create_image_generated_sparsed(self): self.flags(sparse_logical_volumes=True, group='libvirt') self._create_image_generated(True) def test_create_image_resize(self): self._create_image_resize(False) def test_create_image_resize_sparsed(self): self.flags(sparse_logical_volumes=True, group='libvirt') self._create_image_resize(True) def test_create_image_negative(self): fn = self.prepare_mocks() fn(max_size=self.SIZE, target=self.TEMPLATE_PATH) self.libvirt_utils.create_lvm_image(self.VG, self.LV, self.SIZE, sparse=False ).AndRaise(RuntimeError()) self.disk.get_disk_size(self.TEMPLATE_PATH ).AndReturn(self.TEMPLATE_SIZE) self.mox.StubOutWithMock(self.libvirt_utils, 'remove_logical_volumes') self.libvirt_utils.remove_logical_volumes(self.PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.assertRaises(RuntimeError, image.create_image, fn, self.TEMPLATE_PATH, self.SIZE) self.mox.VerifyAll() def test_create_image_generated_negative(self): fn = self.prepare_mocks() fn(target=self.PATH, ephemeral_size=None).AndRaise(RuntimeError()) self.libvirt_utils.create_lvm_image(self.VG, self.LV, self.SIZE, sparse=False) self.mox.StubOutWithMock(self.libvirt_utils, 'remove_logical_volumes') self.libvirt_utils.remove_logical_volumes(self.PATH) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.assertRaises(RuntimeError, image.create_image, fn, self.TEMPLATE_PATH, self.SIZE, ephemeral_size=None) self.mox.VerifyAll() def test_prealloc_image(self): CONF.set_override('preallocate_images', 'space') fake_processutils.fake_execute_clear_log() fake_processutils.stub_out_processutils_execute(self.stubs) image = self.image_class(self.INSTANCE, self.NAME) def fake_fetch(target, *args, **kwargs): return self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(image, 'check_image_exists', lambda: True) image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) self.assertEqual(fake_processutils.fake_execute_get_log(), []) class RbdTestCase(_ImageTestCase, test.NoDBTestCase): POOL = "FakePool" USER = "FakeUser" CONF = "FakeConf" SIZE = 1024 def setUp(self): self.image_class = imagebackend.Rbd super(RbdTestCase, self).setUp() self.flags(images_rbd_pool=self.POOL, rbd_user=self.USER, images_rbd_ceph_conf=self.CONF, group='libvirt') self.libvirt_utils = imagebackend.libvirt_utils self.utils = imagebackend.utils self.rbd = self.mox.CreateMockAnything() self.rados = self.mox.CreateMockAnything() def prepare_mocks(self): fn = self.mox.CreateMockAnything() self.mox.StubOutWithMock(imagebackend, 'rbd') self.mox.StubOutWithMock(imagebackend, 'rados') return fn def test_cache(self): image = self.image_class(self.INSTANCE, self.NAME) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(image, 'check_image_exists') os.path.exists(self.TEMPLATE_DIR).AndReturn(False) image.check_image_exists().AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') imagebackend.fileutils.ensure_tree(self.TEMPLATE_DIR) self.mox.ReplayAll() self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_base_dir_exists(self): image = self.image_class(self.INSTANCE, self.NAME) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(image, 'check_image_exists') os.path.exists(self.TEMPLATE_DIR).AndReturn(True) image.check_image_exists().AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') self.mox.ReplayAll() self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_image_exists(self): image = self.image_class(self.INSTANCE, self.NAME) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(image, 'check_image_exists') os.path.exists(self.TEMPLATE_DIR).AndReturn(True) image.check_image_exists().AndReturn(True) os.path.exists(self.TEMPLATE_PATH).AndReturn(True) self.mox.ReplayAll() image.cache(None, self.TEMPLATE) self.mox.VerifyAll() def test_cache_template_exists(self): image = self.image_class(self.INSTANCE, self.NAME) self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(image, 'check_image_exists') os.path.exists(self.TEMPLATE_DIR).AndReturn(True) image.check_image_exists().AndReturn(False) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.ReplayAll() self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_cache_base_dir_exists(self): self.mox.StubOutWithMock(os.path, 'exists') os.path.exists(self.TEMPLATE_DIR).AndReturn(True) fn = self.mox.CreateMockAnything() fn(target=self.TEMPLATE_PATH) self.mox.StubOutWithMock(imagebackend.fileutils, 'ensure_tree') self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) self.mock_create_image(image) image.cache(fn, self.TEMPLATE) self.mox.VerifyAll() def test_create_image(self): fn = self.prepare_mocks() fn(max_size=None, rbd=self.rbd, target=self.TEMPLATE_PATH) self.rbd.RBD_FEATURE_LAYERING = 1 self.mox.StubOutWithMock(imagebackend.disk, 'get_disk_size') imagebackend.disk.get_disk_size(self.TEMPLATE_PATH ).AndReturn(self.SIZE) rbd_name = "%s/%s" % (self.INSTANCE['name'], self.NAME) cmd = ('--pool', self.POOL, self.TEMPLATE_PATH, rbd_name, '--new-format', '--id', self.USER, '--conf', self.CONF) self.libvirt_utils.import_rbd_image(self.TEMPLATE_PATH, *cmd) self.mox.ReplayAll() image = self.image_class(self.INSTANCE, self.NAME) image.create_image(fn, self.TEMPLATE_PATH, None, rbd=self.rbd) self.mox.VerifyAll() def test_prealloc_image(self): CONF.set_override('preallocate_images', 'space') fake_processutils.fake_execute_clear_log() fake_processutils.stub_out_processutils_execute(self.stubs) self.mox.StubOutWithMock(imagebackend, 'rbd') self.mox.StubOutWithMock(imagebackend, 'rados') image = self.image_class(self.INSTANCE, self.NAME) def fake_fetch(target, *args, **kwargs): return def fake_resize(rbd_name, size): return self.stubs.Set(os.path, 'exists', lambda _: True) self.stubs.Set(image, 'check_image_exists', lambda: True) image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE) self.assertEqual(fake_processutils.fake_execute_get_log(), []) def test_parent_compatible(self): self.assertEqual(inspect.getargspec(imagebackend.Image.libvirt_info), inspect.getargspec(self.image_class.libvirt_info)) def test_image_path(self): conf = "FakeConf" pool = "FakePool" user = "FakeUser" self.flags(images_rbd_pool=pool, group='libvirt') self.flags(images_rbd_ceph_conf=conf, group='libvirt') self.flags(rbd_user=user, group='libvirt') image = self.image_class(self.INSTANCE, self.NAME) rbd_path = "rbd:%s/%s:id=%s:conf=%s" % (pool, image.rbd_name, user, conf) self.assertEqual(image.path, rbd_path) class BackendTestCase(test.NoDBTestCase): INSTANCE = {'name': 'fake-instance', 'uuid': uuidutils.generate_uuid()} NAME = 'fake-name.suffix' def setUp(self): super(BackendTestCase, self).setUp() def fake_chown(path, owner_uid=None): return None self.stubs.Set(utils, 'chown', fake_chown) def get_image(self, use_cow, image_type): return imagebackend.Backend(use_cow).image(self.INSTANCE, self.NAME, image_type) def _test_image(self, image_type, image_not_cow, image_cow): image1 = self.get_image(False, image_type) image2 = self.get_image(True, image_type) def assertIsInstance(instance, class_object): failure = ('Expected %s,' + ' but got %s.') % (class_object.__name__, instance.__class__.__name__) self.assertIsInstance(instance, class_object, msg=failure) assertIsInstance(image1, image_not_cow) assertIsInstance(image2, image_cow) def test_image_raw(self): self._test_image('raw', imagebackend.Raw, imagebackend.Raw) def test_image_qcow2(self): self._test_image('qcow2', imagebackend.Qcow2, imagebackend.Qcow2) def test_image_lvm(self): self.flags(images_volume_group='FakeVG', group='libvirt') self._test_image('lvm', imagebackend.Lvm, imagebackend.Lvm) def test_image_rbd(self): conf = "FakeConf" pool = "FakePool" self.flags(images_rbd_pool=pool, group='libvirt') self.flags(images_rbd_ceph_conf=conf, group='libvirt') self._test_image('rbd', imagebackend.Rbd, imagebackend.Rbd) def test_image_default(self): self._test_image('default', imagebackend.Raw, imagebackend.Qcow2) nova-2014.1/nova/tests/virt/libvirt/test_libvirt.py0000664000175400017540000135111012323721510023530 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # Copyright 2012 University Of Minho # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import copy import errno import eventlet import fixtures import functools import mox import os import re import shutil import tempfile from eventlet import greenthread from lxml import etree import mock from oslo.config import cfg from xml.dom import minidom from nova.api.ec2 import cloud from nova.compute import flavors from nova.compute import manager from nova.compute import power_state from nova.compute import task_states from nova.compute import vm_mode from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.network import model as network_model from nova.objects import flavor as flavor_obj from nova.objects import instance as instance_obj from nova.objects import pci_device as pci_device_obj from nova.objects import service as service_obj from nova.openstack.common import fileutils from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import loopingcall from nova.openstack.common import processutils from nova.openstack.common import units from nova.openstack.common import uuidutils from nova.pci import pci_manager from nova import test from nova.tests import fake_network import nova.tests.image.fake from nova.tests import matchers from nova.tests.objects import test_pci_device from nova.tests.virt.libvirt import fake_libvirt_utils from nova import utils from nova import version from nova.virt import configdrive from nova.virt.disk import api as disk from nova.virt import driver from nova.virt import event as virtevent from nova.virt import fake from nova.virt import firewall as base_firewall from nova.virt import images from nova.virt.libvirt import blockinfo from nova.virt.libvirt import config as vconfig from nova.virt.libvirt import driver as libvirt_driver from nova.virt.libvirt import firewall from nova.virt.libvirt import imagebackend from nova.virt.libvirt import utils as libvirt_utils from nova.virt import netutils try: import libvirt except ImportError: import nova.tests.virt.libvirt.fakelibvirt as libvirt libvirt_driver.libvirt = libvirt CONF = cfg.CONF CONF.import_opt('compute_manager', 'nova.service') CONF.import_opt('host', 'nova.netconf') CONF.import_opt('my_ip', 'nova.netconf') CONF.import_opt('image_cache_subdirectory_name', 'nova.virt.imagecache') CONF.import_opt('instances_path', 'nova.compute.manager') _fake_network_info = fake_network.fake_get_instance_nw_info _fake_stub_out_get_nw_info = fake_network.stub_out_nw_api_get_instance_nw_info _ipv4_like = fake_network.ipv4_like _fake_NodeDevXml = \ {"pci_0000_04_00_3": """ pci_0000_04_00_3 pci_0000_00_01_1 igb 0 4 0 3 I350 Gigabit Network Connection Intel Corporation
""", "pci_0000_04_10_7": """ pci_0000_04_10_7 pci_0000_00_01_1 igbvf 0 4 16 7 I350 Ethernet Controller Virtual Function Intel Corporation
"""} def _concurrency(signal, wait, done, target, is_block_dev=False): signal.send() wait.wait() done.send() class FakeVirDomainSnapshot(object): def __init__(self, dom=None): self.dom = dom def delete(self, flags): pass class FakeVirtDomain(object): def __init__(self, fake_xml=None, uuidstr=None): self.uuidstr = uuidstr if fake_xml: self._fake_dom_xml = fake_xml else: self._fake_dom_xml = """ """ def name(self): return "fake-domain %s" % self def info(self): return [power_state.RUNNING, None, None, None, None] def create(self): pass def managedSave(self, *args): pass def createWithFlags(self, launch_flags): pass def XMLDesc(self, *args): return self._fake_dom_xml def UUIDString(self): return self.uuidstr def attachDeviceFlags(self, xml, flags): pass def detachDeviceFlags(self, xml, flags): pass def snapshotCreateXML(self, xml, flags): pass def blockCommit(self, disk, base, top, bandwidth=0, flags=0): pass def blockRebase(self, disk, base, bandwidth=0, flags=0): pass def blockJobInfo(self, path, flags): pass def resume(self): pass class CacheConcurrencyTestCase(test.TestCase): def setUp(self): super(CacheConcurrencyTestCase, self).setUp() self.flags(instances_path=self.useFixture(fixtures.TempDir()).path) # utils.synchronized() will create the lock_path for us if it # doesn't already exist. It will also delete it when it's done, # which can cause race conditions with the multiple threads we # use for tests. So, create the path here so utils.synchronized() # won't delete it out from under one of the threads. self.lock_path = os.path.join(CONF.instances_path, 'locks') fileutils.ensure_tree(self.lock_path) def fake_exists(fname): basedir = os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name) if fname == basedir or fname == self.lock_path: return True return False def fake_execute(*args, **kwargs): pass def fake_extend(image, size, use_cow=False): pass self.stubs.Set(os.path, 'exists', fake_exists) self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(imagebackend.disk, 'extend', fake_extend) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.imagebackend.libvirt_utils', fake_libvirt_utils)) def test_same_fname_concurrency(self): # Ensures that the same fname cache runs at a sequentially. uuid = uuidutils.generate_uuid() backend = imagebackend.Backend(False) wait1 = eventlet.event.Event() done1 = eventlet.event.Event() sig1 = eventlet.event.Event() thr1 = eventlet.spawn(backend.image({'name': 'instance', 'uuid': uuid}, 'name').cache, _concurrency, 'fname', None, signal=sig1, wait=wait1, done=done1) eventlet.sleep(0) # Thread 1 should run before thread 2. sig1.wait() wait2 = eventlet.event.Event() done2 = eventlet.event.Event() sig2 = eventlet.event.Event() thr2 = eventlet.spawn(backend.image({'name': 'instance', 'uuid': uuid}, 'name').cache, _concurrency, 'fname', None, signal=sig2, wait=wait2, done=done2) wait2.send() eventlet.sleep(0) try: self.assertFalse(done2.ready()) finally: wait1.send() done1.wait() eventlet.sleep(0) self.assertTrue(done2.ready()) # Wait on greenthreads to assert they didn't raise exceptions # during execution thr1.wait() thr2.wait() def test_different_fname_concurrency(self): # Ensures that two different fname caches are concurrent. uuid = uuidutils.generate_uuid() backend = imagebackend.Backend(False) wait1 = eventlet.event.Event() done1 = eventlet.event.Event() sig1 = eventlet.event.Event() thr1 = eventlet.spawn(backend.image({'name': 'instance', 'uuid': uuid}, 'name').cache, _concurrency, 'fname2', None, signal=sig1, wait=wait1, done=done1) eventlet.sleep(0) # Thread 1 should run before thread 2. sig1.wait() wait2 = eventlet.event.Event() done2 = eventlet.event.Event() sig2 = eventlet.event.Event() thr2 = eventlet.spawn(backend.image({'name': 'instance', 'uuid': uuid}, 'name').cache, _concurrency, 'fname1', None, signal=sig2, wait=wait2, done=done2) eventlet.sleep(0) # Wait for thread 2 to start. sig2.wait() wait2.send() tries = 0 while not done2.ready() and tries < 10: eventlet.sleep(0) tries += 1 try: self.assertTrue(done2.ready()) finally: wait1.send() eventlet.sleep(0) # Wait on greenthreads to assert they didn't raise exceptions # during execution thr1.wait() thr2.wait() class FakeVolumeDriver(object): def __init__(self, *args, **kwargs): pass def attach_volume(self, *args): pass def detach_volume(self, *args): pass def get_xml(self, *args): return "" def connect_volume(self, *args): """Connect the volume to a fake device.""" conf = vconfig.LibvirtConfigGuestDisk() conf.source_type = "network" conf.source_protocol = "fake" conf.source_name = "fake" conf.target_dev = "fake" conf.target_bus = "fake" return conf class FakeConfigGuestDisk(object): def __init__(self, *args, **kwargs): self.source_type = None self.driver_cache = None class FakeConfigGuest(object): def __init__(self, *args, **kwargs): self.driver_cache = None class FakeNodeDevice(object): def __init__(self, fakexml): self.xml = fakexml def XMLDesc(self, *args): return self.xml class LibvirtConnTestCase(test.TestCase): def setUp(self): super(LibvirtConnTestCase, self).setUp() self.useFixture(test.SampleNetworks()) self.flags(fake_call=True) self.user_id = 'fake' self.project_id = 'fake' self.context = context.get_admin_context() temp_dir = self.useFixture(fixtures.TempDir()).path self.flags(instances_path=temp_dir) self.flags(snapshots_directory=temp_dir, group='libvirt') self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.driver.libvirt_utils', fake_libvirt_utils)) # Force libvirt to return a host UUID that matches the serial in # nova.tests.fakelibvirt. This is necessary because the host UUID # returned by libvirt becomes the serial whose value is checked for in # test_xml_and_uri_* below. self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.driver.LibvirtDriver.get_host_uuid', lambda _: 'cef19ce0-0ca2-11df-855d-b19fbce37686')) self.useFixture(fixtures.MonkeyPatch( 'nova.virt.libvirt.imagebackend.libvirt_utils', fake_libvirt_utils)) def fake_extend(image, size, use_cow=False): pass self.stubs.Set(libvirt_driver.disk, 'extend', fake_extend) self.stubs.Set(imagebackend.Image, 'resolve_driver_format', imagebackend.Image._get_driver_format) class FakeConn(): def baselineCPU(self, cpu, flag): """Add new libvirt API.""" return """ Westmere Intel """ def getCapabilities(self): """Ensure standard capabilities being returned.""" return """ x86_64 """ def getVersion(self): return 1005001 def getLibVersion(self): return (0 * 1000 * 1000) + (9 * 1000) + 11 def domainEventRegisterAny(self, *args, **kwargs): pass def registerCloseCallback(self, cb, opaque): pass def nwfilterDefineXML(self, *args, **kwargs): pass def nodeDeviceLookupByName(self, x): pass self.conn = FakeConn() self.stubs.Set(libvirt_driver.LibvirtDriver, '_connect', lambda *a, **k: self.conn) flavor = db.flavor_get(self.context, 5) sys_meta = flavors.save_flavor_info({}, flavor) nova.tests.image.fake.stub_out_image_service(self.stubs) self.test_instance = { 'uuid': '32dfcb37-5af1-552b-357c-be8c3aa38310', '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 'extra_specs': {}, 'system_metadata': sys_meta, "pci_devices": []} def relpath(self, path): return os.path.relpath(path, CONF.instances_path) def tearDown(self): nova.tests.image.fake.FakeImageService_reset() super(LibvirtConnTestCase, self).tearDown() def create_fake_libvirt_mock(self, **kwargs): """Defining mocks for LibvirtDriver(libvirt is not used).""" # A fake libvirt.virConnect class FakeLibvirtDriver(object): def defineXML(self, xml): return FakeVirtDomain() # Creating mocks volume_driver = ('iscsi=nova.tests.virt.libvirt.test_libvirt' '.FakeVolumeDriver') self.flags(volume_drivers=[volume_driver], group='libvirt') fake = FakeLibvirtDriver() # Customizing above fake if necessary for key, val in kwargs.items(): fake.__setattr__(key, val) self.flags(vif_driver="nova.tests.fake_network.FakeVIFDriver", group='libvirt') self.stubs.Set(libvirt_driver.LibvirtDriver, '_conn', fake) def fake_lookup(self, instance_name): return FakeVirtDomain() def fake_execute(self, *args, **kwargs): open(args[-1], "a").close() def _create_service(self, **kwargs): service_ref = {'host': kwargs.get('host', 'dummy'), 'disabled': kwargs.get('disabled', False), 'binary': 'nova-compute', 'topic': 'compute', 'report_count': 0} return db.service_create(context.get_admin_context(), service_ref) def _get_host_disabled(self, host): return db.service_get_by_compute_host(context.get_admin_context(), host)['disabled'] def test_set_host_enabled_with_disable(self): # Tests disabling an enabled host. conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self._create_service(host='fake-mini') conn._set_host_enabled(False) self.assertTrue(self._get_host_disabled('fake-mini')) def test_set_host_enabled_with_enable(self): # Tests enabling a disabled host. conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self._create_service(disabled=True, host='fake-mini') conn._set_host_enabled(True) self.assertTrue(self._get_host_disabled('fake-mini')) def test_set_host_enabled_with_enable_state_enabled(self): # Tests enabling an enabled host. conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self._create_service(disabled=False, host='fake-mini') conn._set_host_enabled(True) self.assertFalse(self._get_host_disabled('fake-mini')) def test_set_host_enabled_with_disable_state_disabled(self): # Tests disabling a disabled host. conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self._create_service(disabled=True, host='fake-mini') conn._set_host_enabled(False) self.assertTrue(self._get_host_disabled('fake-mini')) def test_set_host_enabled_swallows_exceptions(self): # Tests that set_host_enabled will swallow exceptions coming from the # db_api code so they don't break anything calling it, e.g. the # _get_new_connection method. conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) with mock.patch.object(db, 'service_get_by_compute_host') as db_mock: # Make db.service_get_by_compute_host raise NovaException; this # is more robust than just raising ComputeHostNotFound. db_mock.side_effect = exception.NovaException conn._set_host_enabled(False) def create_instance_obj(self, context, **params): default_params = self.test_instance default_params['pci_devices'] = pci_device_obj.PciDeviceList() default_params.update(params) instance = instance_obj.Instance(context, **params) instance.create() return instance def test_prepare_pci_device(self): pci_devices = [dict(hypervisor_name='xxx')] self.flags(virt_type='xen', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) class FakeDev(): def attach(self): pass def dettach(self): pass def reset(self): pass self.mox.StubOutWithMock(self.conn, 'nodeDeviceLookupByName') self.conn.nodeDeviceLookupByName('xxx').AndReturn(FakeDev()) self.conn.nodeDeviceLookupByName('xxx').AndReturn(FakeDev()) self.mox.ReplayAll() conn._prepare_pci_devices_for_use(pci_devices) def test_prepare_pci_device_exception(self): pci_devices = [dict(hypervisor_name='xxx', id='id1', instance_uuid='uuid')] self.flags(virt_type='xen', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) class FakeDev(): def attach(self): pass def dettach(self): raise libvirt.libvirtError("xxxxx") def reset(self): pass self.stubs.Set(self.conn, 'nodeDeviceLookupByName', lambda x: FakeDev()) self.assertRaises(exception.PciDevicePrepareFailed, conn._prepare_pci_devices_for_use, pci_devices) def test_detach_pci_devices_exception(self): pci_devices = [dict(hypervisor_name='xxx', id='id1', instance_uuid='uuid')] conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, 'has_min_version') libvirt_driver.LibvirtDriver.has_min_version = lambda x, y: False self.assertRaises(exception.PciDeviceDetachFailed, conn._detach_pci_devices, None, pci_devices) def test_detach_pci_devices(self): fake_domXML1 =\ """
""" pci_devices = [dict(hypervisor_name='xxx', id='id1', instance_uuid='uuid', address="0001:04:10:1")] conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, 'has_min_version') libvirt_driver.LibvirtDriver.has_min_version = lambda x, y: True self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, 'get_guest_pci_device') class FakeDev(): def to_xml(self): pass libvirt_driver.LibvirtDriver.get_guest_pci_device =\ lambda x, y: FakeDev() class FakeDomain(): def detachDeviceFlags(self, xml, flag): pci_devices[0]['hypervisor_name'] = 'marked' pass def XMLDesc(self, flag): return fake_domXML1 conn._detach_pci_devices(FakeDomain(), pci_devices) self.assertEqual(pci_devices[0]['hypervisor_name'], 'marked') def test_detach_pci_devices_timeout(self): fake_domXML1 =\ """
""" pci_devices = [dict(hypervisor_name='xxx', id='id1', instance_uuid='uuid', address="0000:04:10:1")] conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, 'has_min_version') libvirt_driver.LibvirtDriver.has_min_version = lambda x, y: True self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, 'get_guest_pci_device') class FakeDev(): def to_xml(self): pass libvirt_driver.LibvirtDriver.get_guest_pci_device =\ lambda x, y: FakeDev() class FakeDomain(): def detachDeviceFlags(self, xml, flag): pass def XMLDesc(self, flag): return fake_domXML1 self.assertRaises(exception.PciDeviceDetachFailed, conn._detach_pci_devices, FakeDomain(), pci_devices) def test_get_connector(self): initiator = 'fake.initiator.iqn' ip = 'fakeip' host = 'fakehost' wwpns = ['100010604b019419'] wwnns = ['200010604b019419'] self.flags(my_ip=ip) self.flags(host=host) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) expected = { 'ip': ip, 'initiator': initiator, 'host': host, 'wwpns': wwpns, 'wwnns': wwnns } volume = { 'id': 'fake' } result = conn.get_volume_connector(volume) self.assertThat(expected, matchers.DictMatches(result)) def test_close_callback(self): self.close_callback = None def set_close_callback(cb, opaque): self.close_callback = cb conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) service_mock = mock.MagicMock() service_mock.disabled.return_value = False with contextlib.nested( mock.patch.object(conn, "_connect", return_value=self.conn), mock.patch.object(self.conn, "registerCloseCallback", side_effect=set_close_callback), mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock)): # verify that the driver registers for the close callback # and re-connects after receiving the callback conn._get_connection() self.assertFalse(service_mock.disabled) self.assertTrue(self.close_callback) conn._init_events_pipe() self.close_callback(self.conn, 1, None) conn._dispatch_events() self.assertTrue(service_mock.disabled) conn._get_connection() def test_close_callback_bad_signature(self): '''Validates that a connection to libvirt exist, even when registerCloseCallback method has a different number of arguments in the libvirt python library. ''' conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) service_mock = mock.MagicMock() service_mock.disabled.return_value = False with contextlib.nested( mock.patch.object(conn, "_connect", return_value=self.conn), mock.patch.object(self.conn, "registerCloseCallback", side_effect=TypeError('dd')), mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock)): connection = conn._get_connection() self.assertTrue(connection) def test_close_callback_not_defined(self): '''Validates that a connection to libvirt exist, even when registerCloseCallback method missing from the libvirt python library. ''' conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) service_mock = mock.MagicMock() service_mock.disabled.return_value = False with contextlib.nested( mock.patch.object(conn, "_connect", return_value=self.conn), mock.patch.object(self.conn, "registerCloseCallback", side_effect=AttributeError('dd')), mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock)): connection = conn._get_connection() self.assertTrue(connection) def test_cpu_features_bug_1217630(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) # Test old version of libvirt, it shouldn't see the `aes' feature with mock.patch('nova.virt.libvirt.driver.libvirt') as mock_libvirt: del mock_libvirt.VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES caps = conn.get_host_capabilities() self.assertNotIn('aes', [x.name for x in caps.host.cpu.features]) # Test new verion of libvirt, should find the `aes' feature with mock.patch('nova.virt.libvirt.driver.libvirt') as mock_libvirt: mock_libvirt['VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES'] = 1 # Cleanup the capabilities cache firstly conn._caps = None caps = conn.get_host_capabilities() self.assertIn('aes', [x.name for x in caps.host.cpu.features]) def test_lxc_get_host_capabilities_failed(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) with mock.patch.object(conn._conn, 'baselineCPU', return_value=-1): setattr(libvirt, 'VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES', 1) caps = conn.get_host_capabilities() delattr(libvirt, 'VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES') self.assertEqual(vconfig.LibvirtConfigCaps, type(caps)) self.assertNotIn('aes', [x.name for x in caps.host.cpu.features]) def test_get_guest_config(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertEqual(cfg.uuid, instance_ref["uuid"]) self.assertEqual(cfg.acpi, True) self.assertEqual(cfg.apic, True) self.assertEqual(cfg.memory, 2 * units.Mi) self.assertEqual(cfg.vcpus, 1) self.assertEqual(cfg.os_type, vm_mode.HVM) self.assertEqual(cfg.os_boot_dev, ["hd"]) self.assertIsNone(cfg.os_root) self.assertEqual(len(cfg.devices), 8) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestInterface) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestVideo) def test_get_guest_config_clock(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {} hpet_map = { "x86_64": True, "i686": True, "ppc": False, "ppc64": False, "armv7": False, "aarch64": False, } for arch, expect_hpet in hpet_map.items(): with mock.patch.object(libvirt_driver.libvirt_utils, 'get_arch', return_value=arch): cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertIsInstance(cfg.clock, vconfig.LibvirtConfigGuestClock) self.assertEqual(cfg.clock.offset, "utc") self.assertIsInstance(cfg.clock.timers[0], vconfig.LibvirtConfigGuestTimer) self.assertIsInstance(cfg.clock.timers[1], vconfig.LibvirtConfigGuestTimer) self.assertEqual(cfg.clock.timers[0].name, "pit") self.assertEqual(cfg.clock.timers[0].tickpolicy, "delay") self.assertEqual(cfg.clock.timers[1].name, "rtc") self.assertEqual(cfg.clock.timers[1].tickpolicy, "catchup") if expect_hpet: self.assertEqual(3, len(cfg.clock.timers)) self.assertIsInstance(cfg.clock.timers[2], vconfig.LibvirtConfigGuestTimer) self.assertEqual('hpet', cfg.clock.timers[2].name) self.assertFalse(cfg.clock.timers[2].present) else: self.assertEqual(2, len(cfg.clock.timers)) def test_get_guest_config_windows(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) instance_ref['os_type'] = 'windows' disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(cfg.clock, vconfig.LibvirtConfigGuestClock) self.assertEqual(cfg.clock.offset, "localtime") def test_get_guest_config_with_two_nics(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 2), None, disk_info) self.assertEqual(cfg.acpi, True) self.assertEqual(cfg.memory, 2 * units.Mi) self.assertEqual(cfg.vcpus, 1) self.assertEqual(cfg.os_type, vm_mode.HVM) self.assertEqual(cfg.os_boot_dev, ["hd"]) self.assertIsNone(cfg.os_root) self.assertEqual(len(cfg.devices), 9) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestInterface) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestInterface) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[8], vconfig.LibvirtConfigGuestVideo) def test_get_guest_config_bug_1118829(self): self.flags(virt_type='uml', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = {'disk_bus': 'virtio', 'cdrom_bus': 'ide', 'mapping': {u'vda': {'bus': 'virtio', 'type': 'disk', 'dev': u'vda'}, 'root': {'bus': 'virtio', 'type': 'disk', 'dev': 'vda'}}} # NOTE(jdg): For this specific test leave this blank # This will exercise the failed code path still, # and won't require fakes and stubs of the iscsi discovery block_device_info = {} cfg = conn.get_guest_config(instance_ref, [], None, disk_info, None, block_device_info) instance_ref = db.instance_get(self.context, instance_ref['id']) self.assertEqual(instance_ref['root_device_name'], '/dev/vda') def test_get_guest_config_with_root_device_name(self): self.flags(virt_type='uml', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) block_device_info = {'root_device_name': '/dev/vdb'} disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref, block_device_info) cfg = conn.get_guest_config(instance_ref, [], None, disk_info, None, block_device_info) self.assertEqual(cfg.acpi, False) self.assertEqual(cfg.memory, 2 * units.Mi) self.assertEqual(cfg.vcpus, 1) self.assertEqual(cfg.os_type, "uml") self.assertEqual(cfg.os_boot_dev, []) self.assertEqual(cfg.os_root, '/dev/vdb') self.assertEqual(len(cfg.devices), 3) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestConsole) def test_get_guest_config_with_block_device(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) conn_info = {'driver_volume_type': 'fake'} info = {'block_device_mapping': [ {'connection_info': conn_info, 'mount_device': '/dev/vdc'}, {'connection_info': conn_info, 'mount_device': '/dev/vdd'}]} disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref, info) cfg = conn.get_guest_config(instance_ref, [], None, disk_info, None, info) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestDisk) self.assertEqual(cfg.devices[2].target_dev, 'vdc') self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestDisk) self.assertEqual(cfg.devices[3].target_dev, 'vdd') def test_get_guest_config_with_configdrive(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) # make configdrive.required_by() return True instance_ref['config_drive'] = True disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestDisk) self.assertEqual(cfg.devices[2].target_dev, 'hdd') def test_get_guest_config_with_virtio_scsi_bus(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) image_meta = {"properties": {"hw_scsi_model": "virtio-scsi"}} instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref, [], image_meta) cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestController) self.assertEqual(cfg.devices[2].model, 'virtio-scsi') def test_get_guest_config_with_virtio_scsi_bus_bdm(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) image_meta = {"properties": {"hw_scsi_model": "virtio-scsi"}} instance_ref = db.instance_create(self.context, self.test_instance) conn_info = {'driver_volume_type': 'fake'} bd_info = {'block_device_mapping': [ {'connection_info': conn_info, 'mount_device': '/dev/sdc', 'disk_bus': 'scsi'}, {'connection_info': conn_info, 'mount_device': '/dev/sdd', 'disk_bus': 'scsi'}]} disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref, bd_info, image_meta) cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info, [], bd_info) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestDisk) self.assertEqual(cfg.devices[2].target_dev, 'sdc') self.assertEqual(cfg.devices[2].target_bus, 'scsi') self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestDisk) self.assertEqual(cfg.devices[3].target_dev, 'sdd') self.assertEqual(cfg.devices[3].target_bus, 'scsi') self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestController) self.assertEqual(cfg.devices[4].model, 'virtio-scsi') def test_get_guest_config_with_vnc(self): self.flags(vnc_enabled=True) self.flags(virt_type='kvm', use_usb_tablet=False, group='libvirt') self.flags(enabled=False, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertEqual(len(cfg.devices), 6) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[4].type, "vnc") def test_get_guest_config_with_vnc_and_tablet(self): self.flags(vnc_enabled=True) self.flags(virt_type='kvm', use_usb_tablet=True, group='libvirt') self.flags(enabled=False, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[4].type, "tablet") self.assertEqual(cfg.devices[5].type, "vnc") def test_get_guest_config_with_spice_and_tablet(self): self.flags(vnc_enabled=False) self.flags(virt_type='kvm', use_usb_tablet=True, group='libvirt') self.flags(enabled=True, agent_enabled=False, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[4].type, "tablet") self.assertEqual(cfg.devices[5].type, "spice") def test_get_guest_config_with_spice_and_agent(self): self.flags(vnc_enabled=False) self.flags(virt_type='kvm', use_usb_tablet=True, group='libvirt') self.flags(enabled=True, agent_enabled=True, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestChannel) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[4].target_name, "com.redhat.spice.0") self.assertEqual(cfg.devices[5].type, "spice") self.assertEqual(cfg.devices[6].type, "qxl") def test_get_guest_config_with_type_xen(self): self.flags(vnc_enabled=True) self.flags(virt_type='xen', use_usb_tablet=False, group='libvirt') self.flags(enabled=False, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertEqual(len(cfg.devices), 5) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestConsole) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[3].type, "vnc") self.assertEqual(cfg.devices[4].type, "xen") def test_get_guest_config_with_vnc_and_spice(self): self.flags(vnc_enabled=True) self.flags(virt_type='kvm', use_usb_tablet=True, group='libvirt') self.flags(enabled=True, agent_enabled=True, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) self.assertEqual(len(cfg.devices), 9) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestChannel) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[8], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[4].type, "tablet") self.assertEqual(cfg.devices[5].target_name, "com.redhat.spice.0") self.assertEqual(cfg.devices[6].type, "vnc") self.assertEqual(cfg.devices[7].type, "spice") def test_invalid_watchdog_action(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_watchdog_action": "something"}} self.assertRaises(exception.InvalidWatchdogAction, conn.get_guest_config, instance_ref, [], image_meta, disk_info) def test_get_guest_config_with_watchdog_action_through_image_meta(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_watchdog_action": "none"}} cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 8) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestWatchdog) self.assertEqual("none", cfg.devices[7].action) def test_get_guest_config_with_watchdog_action_through_flavor(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) flavor = db.flavor_get(self.context, self.test_instance['instance_type_id']) db.flavor_extra_specs_update_or_create( self.context, flavor['flavorid'], {'hw_watchdog_action': 'none'}) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], {}, disk_info) db.flavor_extra_specs_delete(self.context, flavor['flavorid'], 'hw_watchdog_action') self.assertEqual(8, len(cfg.devices)) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestWatchdog) self.assertEqual("none", cfg.devices[7].action) def test_get_guest_config_with_watchdog_action_meta_overrides_flavor(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) flavor = db.flavor_get(self.context, self.test_instance['instance_type_id']) db.flavor_extra_specs_update_or_create( self.context, flavor['flavorid'], {'hw_watchdog_action': 'none'}) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_watchdog_action": "pause"}} cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) db.flavor_extra_specs_delete(self.context, flavor['flavorid'], 'hw_watchdog_action') self.assertEqual(8, len(cfg.devices)) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestWatchdog) self.assertEqual("pause", cfg.devices[7].action) def test_unsupported_video_driver_through_image_meta(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_video_model": "something"}} self.assertRaises(exception.InvalidVideoMode, conn.get_guest_config, instance_ref, [], image_meta, disk_info) def test_get_guest_config_with_video_driver_through_image_meta(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_video_model": "vmvga"}} cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[5].type, "vnc") self.assertEqual(cfg.devices[6].type, "vmvga") def test_get_guest_config_with_qga_through_image_meta(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_qemu_guest_agent": "yes"}} cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 8) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[7], vconfig.LibvirtConfigGuestChannel) self.assertEqual(cfg.devices[4].type, "tablet") self.assertEqual(cfg.devices[5].type, "vnc") self.assertEqual(cfg.devices[7].type, "unix") self.assertEqual(cfg.devices[7].target_name, "org.qemu.guest_agent.0") def test_get_guest_config_with_video_driver_vram(self): self.flags(vnc_enabled=False) self.flags(virt_type='kvm', group='libvirt') self.flags(enabled=True, agent_enabled=True, group='spice') instance_type = flavor_obj.Flavor.get_by_id(self.context, 5) instance_type.extra_specs = {'hw_video:ram_max_mb': "100"} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_video_model": "qxl", "hw_video_ram": "64"}} with mock.patch.object(flavor_obj.Flavor, 'get_by_id', return_value=instance_type): cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestChannel) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[5].type, "spice") self.assertEqual(cfg.devices[6].type, "qxl") self.assertEqual(cfg.devices[6].vram, 64) def test_video_driver_flavor_limit_not_set(self): self.flags(virt_type='kvm', group='libvirt') self.flags(enabled=True, agent_enabled=True, group='spice') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_video_model": "qxl", "hw_video_ram": "64"}} self.assertRaises(exception.RequestedVRamTooHigh, conn.get_guest_config, instance_ref, [], image_meta, disk_info) def test_video_driver_ram_above_flavor_limit(self): self.flags(virt_type='kvm', group='libvirt') self.flags(enabled=True, agent_enabled=True, group='spice') instance_type = flavor_obj.Flavor.get_by_id(self.context, 5) instance_type.extra_specs = {'hw_video:ram_max_mb': "50"} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_video_model": "qxl", "hw_video_ram": "64"}} with mock.patch.object(flavor_obj.Flavor, 'get_by_id', return_value=instance_type): self.assertRaises(exception.RequestedVRamTooHigh, conn.get_guest_config, instance_ref, [], image_meta, disk_info) def test_get_guest_config_without_qga_through_image_meta(self): self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_qemu_guest_agent": "no"}} cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestInput) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[4].type, "tablet") self.assertEqual(cfg.devices[5].type, "vnc") def test_get_guest_config_with_rng_device(self): self.flags(virt_type='kvm', use_usb_tablet=False, group='libvirt') fake_flavour = flavor_obj.Flavor.get_by_id( self.context, self.test_instance['instance_type_id']) fake_flavour.extra_specs = {'hw_rng:allowed': 'True'} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_rng_model": "virtio"}} with mock.patch.object(flavor_obj.Flavor, 'get_by_id', return_value=fake_flavour): cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestRng) self.assertEqual(cfg.devices[6].model, 'random') self.assertIsNone(cfg.devices[6].backend) self.assertIsNone(cfg.devices[6].rate_bytes) self.assertIsNone(cfg.devices[6].rate_period) def test_get_guest_config_with_rng_not_allowed(self): self.flags(virt_type='kvm', use_usb_tablet=False, group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_rng_model": "virtio"}} cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 6) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestVideo) def test_get_guest_config_with_rng_limits(self): self.flags(virt_type='kvm', use_usb_tablet=False, group='libvirt') fake_flavour = flavor_obj.Flavor.get_by_id( self.context, self.test_instance['instance_type_id']) fake_flavour.extra_specs = {'hw_rng:allowed': 'True', 'hw_rng:rate_bytes': '1024', 'hw_rng:rate_period': '2'} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_rng_model": "virtio"}} with mock.patch.object(flavor_obj.Flavor, 'get_by_id', return_value=fake_flavour): cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestRng) self.assertEqual(cfg.devices[6].model, 'random') self.assertIsNone(cfg.devices[6].backend) self.assertEqual(cfg.devices[6].rate_bytes, 1024) self.assertEqual(cfg.devices[6].rate_period, 2) def test_get_guest_config_with_rng_backend(self): self.flags(virt_type='kvm', use_usb_tablet=False, rng_dev_path='/dev/hw_rng', group='libvirt') fake_flavour = flavor_obj.Flavor.get_by_id( self.context, self.test_instance['instance_type_id']) fake_flavour.extra_specs = {'hw_rng:allowed': 'True'} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_rng_model": "virtio"}} with contextlib.nested(mock.patch.object(flavor_obj.Flavor, 'get_by_id', return_value=fake_flavour), mock.patch('nova.virt.libvirt.driver.os.path.exists', return_value=True)): cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertEqual(len(cfg.devices), 7) self.assertIsInstance(cfg.devices[0], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[1], vconfig.LibvirtConfigGuestDisk) self.assertIsInstance(cfg.devices[2], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[3], vconfig.LibvirtConfigGuestSerial) self.assertIsInstance(cfg.devices[4], vconfig.LibvirtConfigGuestGraphics) self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestVideo) self.assertIsInstance(cfg.devices[6], vconfig.LibvirtConfigGuestRng) self.assertEqual(cfg.devices[6].model, 'random') self.assertEqual(cfg.devices[6].backend, '/dev/hw_rng') self.assertIsNone(cfg.devices[6].rate_bytes) self.assertIsNone(cfg.devices[6].rate_period) def test_get_guest_config_with_rng_dev_not_present(self): self.flags(virt_type='kvm', use_usb_tablet=False, rng_dev_path='/dev/hw_rng', group='libvirt') fake_flavour = flavor_obj.Flavor.get_by_id( self.context, self.test_instance['instance_type_id']) fake_flavour.extra_specs = {'hw_rng:allowed': 'True'} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_rng_model": "virtio"}} with contextlib.nested(mock.patch.object(flavor_obj.Flavor, 'get_by_id', return_value=fake_flavour), mock.patch('nova.virt.libvirt.driver.os.path.exists', return_value=False)): self.assertRaises(exception.RngDeviceNotExist, conn.get_guest_config, instance_ref, [], image_meta, disk_info) def _create_fake_service_compute(self): service_info = { 'host': 'fake', 'report_count': 0 } service_ref = db.service_create(self.context, service_info) compute_info = { 'vcpus': 2, 'memory_mb': 1024, 'local_gb': 2048, 'vcpus_used': 0, 'memory_mb_used': 0, 'local_gb_used': 0, 'free_ram_mb': 1024, 'free_disk_gb': 2048, 'hypervisor_type': 'xen', 'hypervisor_version': 1, 'running_vms': 0, 'cpu_info': '', 'current_workload': 0, 'service_id': service_ref['id'] } compute_ref = db.compute_node_create(self.context, compute_info) return (service_ref, compute_ref) def test_get_guest_config_with_pci_passthrough_kvm(self): self.flags(virt_type='kvm', group='libvirt') service_ref, compute_ref = self._create_fake_service_compute() instance_ref = db.instance_create(self.context, self.test_instance) pci_device_info = dict(test_pci_device.fake_db_dev) pci_device_info.update(compute_node_id=1, label='fake', status='allocated', address='0000:00:00.1', compute_id=compute_ref['id'], instance_uuid=instance_ref['uuid'], extra_info=jsonutils.dumps({})) db.pci_device_update(self.context, pci_device_info['compute_node_id'], pci_device_info['address'], pci_device_info) instance_ref = db.instance_get(self.context, instance_ref['id']) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) had_pci = 0 # care only about the PCI devices for dev in cfg.devices: if type(dev) == vconfig.LibvirtConfigGuestHostdevPCI: had_pci += 1 self.assertEqual(dev.type, 'pci') self.assertEqual(dev.managed, 'yes') self.assertEqual(dev.mode, 'subsystem') self.assertEqual(dev.domain, "0000") self.assertEqual(dev.bus, "00") self.assertEqual(dev.slot, "00") self.assertEqual(dev.function, "1") self.assertEqual(had_pci, 1) def test_get_guest_config_with_pci_passthrough_xen(self): self.flags(virt_type='xen', group='libvirt') service_ref, compute_ref = self._create_fake_service_compute() instance_ref = db.instance_create(self.context, self.test_instance) pci_device_info = dict(test_pci_device.fake_db_dev) pci_device_info.update(compute_node_id=1, label='fake', status='allocated', address='0000:00:00.2', compute_id=compute_ref['id'], instance_uuid=instance_ref['uuid'], extra_info=jsonutils.dumps({})) db.pci_device_update(self.context, pci_device_info['compute_node_id'], pci_device_info['address'], pci_device_info) instance_ref = db.instance_get(self.context, instance_ref['id']) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) cfg = conn.get_guest_config(instance_ref, [], None, disk_info) had_pci = 0 # care only about the PCI devices for dev in cfg.devices: if type(dev) == vconfig.LibvirtConfigGuestHostdevPCI: had_pci += 1 self.assertEqual(dev.type, 'pci') self.assertEqual(dev.managed, 'no') self.assertEqual(dev.mode, 'subsystem') self.assertEqual(dev.domain, "0000") self.assertEqual(dev.bus, "00") self.assertEqual(dev.slot, "00") self.assertEqual(dev.function, "2") self.assertEqual(had_pci, 1) def test_get_guest_config_os_command_line_through_image_meta(self): self.flags(virt_type="kvm", cpu_mode=None, group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"os_command_line": "fake_os_command_line"}} cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), image_meta, disk_info) self.assertEqual(cfg.os_cmdline, "fake_os_command_line") def test_get_guest_config_armv7(self): def get_host_capabilities_stub(self): cpu = vconfig.LibvirtConfigGuestCPU() cpu.arch = "armv7l" caps = vconfig.LibvirtConfigCaps() caps.host = vconfig.LibvirtConfigCapsHost() caps.host.cpu = cpu return caps self.flags(virt_type="kvm", group="libvirt") instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) self.stubs.Set(libvirt_driver.LibvirtDriver, "get_host_capabilities", get_host_capabilities_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertEqual(cfg.os_mach_type, "vexpress-a15") def test_get_guest_config_aarch64(self): def get_host_capabilities_stub(self): cpu = vconfig.LibvirtConfigGuestCPU() cpu.arch = "aarch64" caps = vconfig.LibvirtConfigCaps() caps.host = vconfig.LibvirtConfigCapsHost() caps.host.cpu = cpu return caps self.flags(virt_type="kvm", group="libvirt") instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) self.stubs.Set(libvirt_driver.LibvirtDriver, "get_host_capabilities", get_host_capabilities_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertEqual(cfg.os_mach_type, "virt") def test_get_guest_config_machine_type_through_image_meta(self): self.flags(virt_type="kvm", group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {"properties": {"hw_machine_type": "fake_machine_type"}} cfg = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), image_meta, disk_info) self.assertEqual(cfg.os_mach_type, "fake_machine_type") def _test_get_guest_config_ppc64(self, device_index): """Test for nova.virt.libvirt.driver.LibvirtDriver.get_guest_config. """ self.flags(virt_type='kvm', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) image_meta = {} expected = ('ppc64', 'ppc') for arch in expected: with mock.patch.object(libvirt_driver.libvirt_utils, 'get_arch', return_value=arch): cfg = conn.get_guest_config(instance_ref, [], image_meta, disk_info) self.assertIsInstance(cfg.devices[device_index], vconfig.LibvirtConfigGuestVideo) self.assertEqual(cfg.devices[device_index].type, 'vga') def test_get_guest_config_ppc64_through_image_meta_vnc_enabled(self): self.flags(vnc_enabled=True) self._test_get_guest_config_ppc64(6) def test_get_guest_config_ppc64_through_image_meta_spice_enabled(self): self.flags(enabled=True, agent_enabled=True, group='spice') self._test_get_guest_config_ppc64(8) def test_get_guest_cpu_config_none(self): self.flags(cpu_mode="none", group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsNone(conf.cpu) def test_get_guest_cpu_config_default_kvm(self): self.flags(virt_type="kvm", cpu_mode=None, group='libvirt') def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 11 self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(conf.cpu, vconfig.LibvirtConfigGuestCPU) self.assertEqual(conf.cpu.mode, "host-model") self.assertIsNone(conf.cpu.model) def test_get_guest_cpu_config_default_uml(self): self.flags(virt_type="uml", cpu_mode=None, group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsNone(conf.cpu) def test_get_guest_cpu_config_default_lxc(self): self.flags(virt_type="lxc", cpu_mode=None, group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsNone(conf.cpu) def test_get_guest_cpu_config_host_passthrough_new(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 11 self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) self.flags(cpu_mode="host-passthrough", group='libvirt') disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(conf.cpu, vconfig.LibvirtConfigGuestCPU) self.assertEqual(conf.cpu.mode, "host-passthrough") self.assertIsNone(conf.cpu.model) def test_get_guest_cpu_config_host_model_new(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 11 self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) self.flags(cpu_mode="host-model", group='libvirt') disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(conf.cpu, vconfig.LibvirtConfigGuestCPU) self.assertEqual(conf.cpu.mode, "host-model") self.assertIsNone(conf.cpu.model) def test_get_guest_cpu_config_custom_new(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 11 self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) self.flags(cpu_mode="custom", cpu_model="Penryn", group='libvirt') disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(conf.cpu, vconfig.LibvirtConfigGuestCPU) self.assertEqual(conf.cpu.mode, "custom") self.assertEqual(conf.cpu.model, "Penryn") def test_get_guest_cpu_config_host_passthrough_old(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 7 self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) self.flags(cpu_mode="host-passthrough", group='libvirt') disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) self.assertRaises(exception.NovaException, conn.get_guest_config, instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) def test_get_guest_cpu_config_host_model_old(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 7 # Ensure we have a predictable host CPU def get_host_capabilities_stub(self): cpu = vconfig.LibvirtConfigGuestCPU() cpu.model = "Opteron_G4" cpu.vendor = "AMD" cpu.features.append(vconfig.LibvirtConfigGuestCPUFeature("tm2")) cpu.features.append(vconfig.LibvirtConfigGuestCPUFeature("ht")) caps = vconfig.LibvirtConfigCaps() caps.host = vconfig.LibvirtConfigCapsHost() caps.host.cpu = cpu return caps self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) self.stubs.Set(libvirt_driver.LibvirtDriver, "get_host_capabilities", get_host_capabilities_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) self.flags(cpu_mode="host-model", group='libvirt') disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(conf.cpu, vconfig.LibvirtConfigGuestCPU) self.assertIsNone(conf.cpu.mode) self.assertEqual(conf.cpu.model, "Opteron_G4") self.assertEqual(conf.cpu.vendor, "AMD") self.assertEqual(len(conf.cpu.features), 2) self.assertEqual(conf.cpu.features[0].name, "tm2") self.assertEqual(conf.cpu.features[1].name, "ht") def test_get_guest_cpu_config_custom_old(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 7 self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, self.test_instance) self.flags(cpu_mode="custom", cpu_model="Penryn", group='libvirt') disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) conf = conn.get_guest_config(instance_ref, _fake_network_info(self.stubs, 1), None, disk_info) self.assertIsInstance(conf.cpu, vconfig.LibvirtConfigGuestCPU) self.assertIsNone(conf.cpu.mode) self.assertEqual(conf.cpu.model, "Penryn") def test_xml_and_uri_no_ramdisk_no_kernel(self): instance_data = dict(self.test_instance) self._check_xml_and_uri(instance_data, expect_kernel=False, expect_ramdisk=False) def test_xml_and_uri_no_ramdisk_no_kernel_xen_hvm(self): instance_data = dict(self.test_instance) instance_data.update({'vm_mode': vm_mode.HVM}) self._check_xml_and_uri(instance_data, expect_kernel=False, expect_ramdisk=False, expect_xen_hvm=True) def test_xml_and_uri_no_ramdisk_no_kernel_xen_pv(self): instance_data = dict(self.test_instance) instance_data.update({'vm_mode': vm_mode.XEN}) self._check_xml_and_uri(instance_data, expect_kernel=False, expect_ramdisk=False, expect_xen_hvm=False, xen_only=True) def test_xml_and_uri_no_ramdisk(self): instance_data = dict(self.test_instance) instance_data['kernel_id'] = 'aki-deadbeef' self._check_xml_and_uri(instance_data, expect_kernel=True, expect_ramdisk=False) def test_xml_and_uri_no_kernel(self): instance_data = dict(self.test_instance) instance_data['ramdisk_id'] = 'ari-deadbeef' self._check_xml_and_uri(instance_data, expect_kernel=False, expect_ramdisk=False) def test_xml_and_uri(self): instance_data = dict(self.test_instance) instance_data['ramdisk_id'] = 'ari-deadbeef' instance_data['kernel_id'] = 'aki-deadbeef' self._check_xml_and_uri(instance_data, expect_kernel=True, expect_ramdisk=True) def test_xml_and_uri_rescue(self): instance_data = dict(self.test_instance) instance_data['ramdisk_id'] = 'ari-deadbeef' instance_data['kernel_id'] = 'aki-deadbeef' self._check_xml_and_uri(instance_data, expect_kernel=True, expect_ramdisk=True, rescue=instance_data) def test_xml_and_uri_rescue_no_kernel_no_ramdisk(self): instance_data = dict(self.test_instance) self._check_xml_and_uri(instance_data, expect_kernel=False, expect_ramdisk=False, rescue=instance_data) def test_xml_and_uri_rescue_no_kernel(self): instance_data = dict(self.test_instance) instance_data['ramdisk_id'] = 'aki-deadbeef' self._check_xml_and_uri(instance_data, expect_kernel=False, expect_ramdisk=True, rescue=instance_data) def test_xml_and_uri_rescue_no_ramdisk(self): instance_data = dict(self.test_instance) instance_data['kernel_id'] = 'aki-deadbeef' self._check_xml_and_uri(instance_data, expect_kernel=True, expect_ramdisk=False, rescue=instance_data) def test_xml_uuid(self): self._check_xml_and_uuid({"disk_format": "raw"}) def test_lxc_container_and_uri(self): instance_data = dict(self.test_instance) self._check_xml_and_container(instance_data) def test_xml_disk_prefix(self): instance_data = dict(self.test_instance) self._check_xml_and_disk_prefix(instance_data) def test_xml_user_specified_disk_prefix(self): instance_data = dict(self.test_instance) self._check_xml_and_disk_prefix(instance_data, 'sd') def test_xml_disk_driver(self): instance_data = dict(self.test_instance) self._check_xml_and_disk_driver(instance_data) def test_xml_disk_bus_virtio(self): self._check_xml_and_disk_bus({"disk_format": "raw"}, None, (("disk", "virtio", "vda"),)) def test_xml_disk_bus_ide(self): self._check_xml_and_disk_bus({"disk_format": "iso"}, None, (("cdrom", "ide", "hda"),)) def test_xml_disk_bus_ide_and_virtio(self): swap = {'device_name': '/dev/vdc', 'swap_size': 1} ephemerals = [{'device_type': 'disk', 'disk_bus': 'virtio', 'device_name': '/dev/vdb', 'size': 1}] block_device_info = { 'swap': swap, 'ephemerals': ephemerals} self._check_xml_and_disk_bus({"disk_format": "iso"}, block_device_info, (("cdrom", "ide", "hda"), ("disk", "virtio", "vdb"), ("disk", "virtio", "vdc"))) def test_list_instances(self): self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = self.fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 2 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instances = conn.list_instances() # Only one should be listed, since domain with ID 0 must be skipped self.assertEqual(len(instances), 1) def test_list_instance_uuids(self): self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = self.fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 2 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instances = conn.list_instance_uuids() # Only one should be listed, since domain with ID 0 must be skipped self.assertEqual(len(instances), 1) def test_list_defined_instances(self): self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = self.fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [1] self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instances = conn.list_instances() # Only one defined domain should be listed self.assertEqual(len(instances), 1) def test_list_instances_when_instance_deleted(self): def fake_lookup(instance_name): raise libvirt.libvirtError("we deleted an instance!") self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") libvirt.libvirtError.get_error_code().AndReturn( libvirt.VIR_ERR_NO_DOMAIN) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instances = conn.list_instances() # None should be listed, since we fake deleted the last one self.assertEqual(len(instances), 0) def test_list_instance_uuids_when_instance_deleted(self): def fake_lookup(instance_name): raise libvirt.libvirtError("we deleted an instance!") self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") libvirt.libvirtError.get_error_code().AndReturn( libvirt.VIR_ERR_NO_DOMAIN) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instances = conn.list_instance_uuids() # None should be listed, since we fake deleted the last one self.assertEqual(len(instances), 0) def test_list_instances_throws_nova_exception(self): def fake_lookup(instance_name): raise libvirt.libvirtError("we deleted an instance!") self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") libvirt.libvirtError.get_error_code().AndReturn( libvirt.VIR_ERR_INTERNAL_ERROR) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.NovaException, conn.list_instances) def test_list_instance_uuids_throws_nova_exception(self): def fake_lookup(instance_name): raise libvirt.libvirtError("we deleted an instance!") self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") libvirt.libvirtError.get_error_code().AndReturn( libvirt.VIR_ERR_INTERNAL_ERROR) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.NovaException, conn.list_instance_uuids) def test_get_all_block_devices(self): xml = [ # NOTE(vish): id 0 is skipped None, """ """, """ """, """ """, ] def fake_lookup(id): return FakeVirtDomain(xml[id]) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 4 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: range(4) libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) devices = conn.get_all_block_devices() self.assertEqual(devices, ['/path/to/dev/1', '/path/to/dev/3']) def test_get_disks(self): xml = [ # NOTE(vish): id 0 is skipped None, """ """, """ """, """ """, ] def fake_lookup(id): return FakeVirtDomain(xml[id]) def fake_lookup_name(name): return FakeVirtDomain(xml[1]) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 4 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: range(4) libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) devices = conn.get_disks(conn.list_instances()[0]) self.assertEqual(devices, ['vda', 'vdb']) def test_snapshot_in_ami_format(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assign different image_ref from nova/images/fakes for testing ami test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute libvirt_driver.libvirt_utils.disk_type = "qcow2" self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['disk_format'], 'ami') self.assertEqual(snapshot['name'], snapshot_name) def test_lxc_snapshot_in_ami_format(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', virt_type='lxc', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assign different image_ref from nova/images/fakes for testing ami test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute libvirt_driver.libvirt_utils.disk_type = "qcow2" self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['disk_format'], 'ami') self.assertEqual(snapshot['name'], snapshot_name) def test_snapshot_in_raw_format(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, self.test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.stubs.Set(libvirt_driver.libvirt_utils, 'disk_type', 'raw') def convert_image(source, dest, out_format): libvirt_driver.libvirt_utils.files[dest] = '' self.stubs.Set(images, 'convert_image', convert_image) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['disk_format'], 'raw') self.assertEqual(snapshot['name'], snapshot_name) def test_lxc_snapshot_in_raw_format(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', virt_type='lxc', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, self.test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.stubs.Set(libvirt_driver.libvirt_utils, 'disk_type', 'raw') def convert_image(source, dest, out_format): libvirt_driver.libvirt_utils.files[dest] = '' self.stubs.Set(images, 'convert_image', convert_image) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['disk_format'], 'raw') self.assertEqual(snapshot['name'], snapshot_name) def test_snapshot_in_qcow2_format(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshot_image_format='qcow2', snapshots_directory='./', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, self.test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute libvirt_driver.libvirt_utils.disk_type = "qcow2" self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['disk_format'], 'qcow2') self.assertEqual(snapshot['name'], snapshot_name) def test_lxc_snapshot_in_qcow2_format(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshot_image_format='qcow2', snapshots_directory='./', virt_type='lxc', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, self.test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute libvirt_driver.libvirt_utils.disk_type = "qcow2" self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['disk_format'], 'qcow2') self.assertEqual(snapshot['name'], snapshot_name) def test_snapshot_no_image_architecture(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assign different image_ref from nova/images/fakes for # testing different base image test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['name'], snapshot_name) def test_lxc_snapshot_no_image_architecture(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', virt_type='lxc', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assign different image_ref from nova/images/fakes for # testing different base image test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # Assuming that base image already exists in image_service instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} # Create new image. It will be updated in snapshot method # To work with it from snapshot, the single image_service is needed recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['name'], snapshot_name) def test_snapshot_no_original_image(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assign a non-existent image test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = '661122aa-1234-dede-fefe-babababababa' instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['name'], snapshot_name) def test_lxc_snapshot_no_original_image(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', virt_type='lxc', group='libvirt') # Start test image_service = nova.tests.image.fake.FakeImageService() # Assign a non-existent image test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = '661122aa-1234-dede-fefe-babababababa' instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id)} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['name'], snapshot_name) def test_snapshot_metadata_image(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', group='libvirt') image_service = nova.tests.image.fake.FakeImageService() # Assign an image with an architecture defined (x86_64) test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = 'a440c04b-79fa-479c-bed1-0b816eaec379' instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id), 'architecture': 'fake_arch', 'key_a': 'value_a', 'key_b': 'value_b'} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['properties']['architecture'], 'fake_arch') self.assertEqual(snapshot['properties']['key_a'], 'value_a') self.assertEqual(snapshot['properties']['key_b'], 'value_b') self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['name'], snapshot_name) def test_snapshot_with_os_type(self): expected_calls = [ {'args': (), 'kwargs': {'task_state': task_states.IMAGE_PENDING_UPLOAD}}, {'args': (), 'kwargs': {'task_state': task_states.IMAGE_UPLOADING, 'expected_state': task_states.IMAGE_PENDING_UPLOAD}}] func_call_matcher = matchers.FunctionCallMatcher(expected_calls) self.flags(snapshots_directory='./', group='libvirt') image_service = nova.tests.image.fake.FakeImageService() # Assign a non-existent image test_instance = copy.deepcopy(self.test_instance) test_instance["image_ref"] = '661122aa-1234-dede-fefe-babababababa' test_instance["os_type"] = 'linux' instance_ref = db.instance_create(self.context, test_instance) properties = {'instance_id': instance_ref['id'], 'user_id': str(self.context.user_id), 'os_type': instance_ref['os_type']} snapshot_name = 'test-snap' sent_meta = {'name': snapshot_name, 'is_public': False, 'status': 'creating', 'properties': properties} recv_meta = image_service.create(context, sent_meta) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.snapshot(self.context, instance_ref, recv_meta['id'], func_call_matcher.call) snapshot = image_service.show(context, recv_meta['id']) self.assertIsNone(func_call_matcher.match()) self.assertEqual(snapshot['properties']['image_state'], 'available') self.assertEqual(snapshot['properties']['os_type'], instance_ref['os_type']) self.assertEqual(snapshot['status'], 'active') self.assertEqual(snapshot['name'], snapshot_name) def test__create_snapshot_metadata(self): base = {} instance = {'kernel_id': 'kernel', 'project_id': 'prj_id', 'ramdisk_id': 'ram_id', 'os_type': None} img_fmt = 'raw' snp_name = 'snapshot_name' conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) ret = conn._create_snapshot_metadata(base, instance, img_fmt, snp_name) expected = {'is_public': False, 'status': 'active', 'name': snp_name, 'properties': { 'kernel_id': instance['kernel_id'], 'image_location': 'snapshot', 'image_state': 'available', 'owner_id': instance['project_id'], 'ramdisk_id': instance['ramdisk_id'], }, 'disk_format': img_fmt, 'container_format': base.get('container_format', 'bare') } self.assertEqual(ret, expected) # simulate an instance with os_type field defined # disk format equals to ami # container format not equals to bare instance['os_type'] = 'linux' base['disk_format'] = 'ami' base['container_format'] = 'test_container' expected['properties']['os_type'] = instance['os_type'] expected['disk_format'] = base['disk_format'] expected['container_format'] = base.get('container_format', 'bare') ret = conn._create_snapshot_metadata(base, instance, img_fmt, snp_name) self.assertEqual(ret, expected) def test_attach_invalid_volume_type(self): self.create_fake_libvirt_mock() libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.VolumeDriverNotFound, conn.attach_volume, None, {"driver_volume_type": "badtype"}, {"name": "fake-instance"}, "/dev/sda") def test_attach_blockio_invalid_hypervisor(self): self.flags(virt_type='fake_type', group='libvirt') self.create_fake_libvirt_mock() libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.InvalidHypervisorType, conn.attach_volume, None, {"driver_volume_type": "fake", "data": {"logical_block_size": "4096", "physical_block_size": "4096"} }, {"name": "fake-instance"}, "/dev/sda") def test_attach_blockio_invalid_version(self): def get_lib_version_stub(): return (0 * 1000 * 1000) + (9 * 1000) + 8 self.flags(virt_type='qemu', group='libvirt') self.create_fake_libvirt_mock() libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(self.conn, "getLibVersion", get_lib_version_stub) self.assertRaises(exception.Invalid, conn.attach_volume, None, {"driver_volume_type": "fake", "data": {"logical_block_size": "4096", "physical_block_size": "4096"} }, {"name": "fake-instance"}, "/dev/sda") def test_multi_nic(self): instance_data = dict(self.test_instance) network_info = _fake_network_info(self.stubs, 2) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) instance_ref = db.instance_create(self.context, instance_data) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) xml = conn.to_xml(self.context, instance_ref, network_info, disk_info) tree = etree.fromstring(xml) interfaces = tree.findall("./devices/interface") self.assertEqual(len(interfaces), 2) self.assertEqual(interfaces[0].get('type'), 'bridge') def _behave_supports_direct_io(self, raise_open=False, raise_write=False, exc=ValueError()): open_behavior = os.open(os.path.join('.', '.directio.test'), os.O_CREAT | os.O_WRONLY | os.O_DIRECT) if raise_open: open_behavior.AndRaise(exc) else: open_behavior.AndReturn(3) write_bahavior = os.write(3, mox.IgnoreArg()) if raise_write: write_bahavior.AndRaise(exc) else: os.close(3) os.unlink(3) def test_supports_direct_io(self): einval = OSError() einval.errno = errno.EINVAL self.mox.StubOutWithMock(os, 'open') self.mox.StubOutWithMock(os, 'write') self.mox.StubOutWithMock(os, 'close') self.mox.StubOutWithMock(os, 'unlink') _supports_direct_io = libvirt_driver.LibvirtDriver._supports_direct_io self._behave_supports_direct_io() self._behave_supports_direct_io(raise_write=True) self._behave_supports_direct_io(raise_open=True) self._behave_supports_direct_io(raise_write=True, exc=einval) self._behave_supports_direct_io(raise_open=True, exc=einval) self.mox.ReplayAll() self.assertTrue(_supports_direct_io('.')) self.assertRaises(ValueError, _supports_direct_io, '.') self.assertRaises(ValueError, _supports_direct_io, '.') self.assertFalse(_supports_direct_io('.')) self.assertFalse(_supports_direct_io('.')) self.mox.VerifyAll() def _check_xml_and_container(self, instance): user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, instance) self.flags(virt_type='lxc', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.assertEqual(conn.uri(), 'lxc:///') network_info = _fake_network_info(self.stubs, 1) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) xml = conn.to_xml(self.context, instance_ref, network_info, disk_info) tree = etree.fromstring(xml) check = [ (lambda t: t.find('.').get('type'), 'lxc'), (lambda t: t.find('./os/type').text, 'exe'), (lambda t: t.find('./devices/filesystem/target').get('dir'), '/')] for i, (check, expected_result) in enumerate(check): self.assertEqual(check(tree), expected_result, '%s failed common check %d' % (xml, i)) target = tree.find('./devices/filesystem/source').get('dir') self.assertTrue(len(target) > 0) def _check_xml_and_disk_prefix(self, instance, prefix=None): user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, instance) def _get_prefix(p, default): if p: return p + 'a' return default type_disk_map = { 'qemu': [ (lambda t: t.find('.').get('type'), 'qemu'), (lambda t: t.find('./devices/disk/target').get('dev'), _get_prefix(prefix, 'vda'))], 'xen': [ (lambda t: t.find('.').get('type'), 'xen'), (lambda t: t.find('./devices/disk/target').get('dev'), _get_prefix(prefix, 'sda'))], 'kvm': [ (lambda t: t.find('.').get('type'), 'kvm'), (lambda t: t.find('./devices/disk/target').get('dev'), _get_prefix(prefix, 'vda'))], 'uml': [ (lambda t: t.find('.').get('type'), 'uml'), (lambda t: t.find('./devices/disk/target').get('dev'), _get_prefix(prefix, 'ubda'))] } for (virt_type, checks) in type_disk_map.iteritems(): self.flags(virt_type=virt_type, group='libvirt') if prefix: self.flags(disk_prefix=prefix, group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) network_info = _fake_network_info(self.stubs, 1) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) xml = conn.to_xml(self.context, instance_ref, network_info, disk_info) tree = etree.fromstring(xml) for i, (check, expected_result) in enumerate(checks): self.assertEqual(check(tree), expected_result, '%s != %s failed check %d' % (check(tree), expected_result, i)) def _check_xml_and_disk_driver(self, image_meta): os_open = os.open directio_supported = True def os_open_stub(path, flags, *args, **kwargs): if flags & os.O_DIRECT: if not directio_supported: raise OSError(errno.EINVAL, '%s: %s' % (os.strerror(errno.EINVAL), path)) flags &= ~os.O_DIRECT return os_open(path, flags, *args, **kwargs) self.stubs.Set(os, 'open', os_open_stub) @staticmethod def connection_supports_direct_io_stub(dirpath): return directio_supported self.stubs.Set(libvirt_driver.LibvirtDriver, '_supports_direct_io', connection_supports_direct_io_stub) user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) network_info = _fake_network_info(self.stubs, 1) drv = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) xml = drv.to_xml(self.context, instance_ref, network_info, disk_info, image_meta) tree = etree.fromstring(xml) disks = tree.findall('./devices/disk/driver') for disk in disks: self.assertEqual(disk.get("cache"), "none") directio_supported = False # The O_DIRECT availability is cached on first use in # LibvirtDriver, hence we re-create it here drv = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) xml = drv.to_xml(self.context, instance_ref, network_info, disk_info, image_meta) tree = etree.fromstring(xml) disks = tree.findall('./devices/disk/driver') for disk in disks: self.assertEqual(disk.get("cache"), "writethrough") def _check_xml_and_disk_bus(self, image_meta, block_device_info, wantConfig): user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) network_info = _fake_network_info(self.stubs, 1) drv = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref, block_device_info, image_meta) xml = drv.to_xml(self.context, instance_ref, network_info, disk_info, image_meta, block_device_info=block_device_info) tree = etree.fromstring(xml) got_disks = tree.findall('./devices/disk') got_disk_targets = tree.findall('./devices/disk/target') for i in range(len(wantConfig)): want_device_type = wantConfig[i][0] want_device_bus = wantConfig[i][1] want_device_dev = wantConfig[i][2] got_device_type = got_disks[i].get('device') got_device_bus = got_disk_targets[i].get('bus') got_device_dev = got_disk_targets[i].get('dev') self.assertEqual(got_device_type, want_device_type) self.assertEqual(got_device_bus, want_device_bus) self.assertEqual(got_device_dev, want_device_dev) def _check_xml_and_uuid(self, image_meta): user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, self.test_instance) network_info = _fake_network_info(self.stubs, 1) drv = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref) xml = drv.to_xml(self.context, instance_ref, network_info, disk_info, image_meta) tree = etree.fromstring(xml) self.assertEqual(tree.find('./uuid').text, instance_ref['uuid']) def _check_xml_and_uri(self, instance, expect_ramdisk, expect_kernel, rescue=None, expect_xen_hvm=False, xen_only=False): user_context = context.RequestContext(self.user_id, self.project_id) instance_ref = db.instance_create(user_context, instance) network_ref = db.project_get_networks(context.get_admin_context(), self.project_id)[0] xen_vm_mode = vm_mode.XEN if expect_xen_hvm: xen_vm_mode = vm_mode.HVM type_uri_map = {'qemu': ('qemu:///system', [(lambda t: t.find('.').get('type'), 'qemu'), (lambda t: t.find('./os/type').text, vm_mode.HVM), (lambda t: t.find('./devices/emulator'), None)]), 'kvm': ('qemu:///system', [(lambda t: t.find('.').get('type'), 'kvm'), (lambda t: t.find('./os/type').text, vm_mode.HVM), (lambda t: t.find('./devices/emulator'), None)]), 'uml': ('uml:///system', [(lambda t: t.find('.').get('type'), 'uml'), (lambda t: t.find('./os/type').text, vm_mode.UML)]), 'xen': ('xen:///', [(lambda t: t.find('.').get('type'), 'xen'), (lambda t: t.find('./os/type').text, xen_vm_mode)])} if expect_xen_hvm or xen_only: hypervisors_to_check = ['xen'] else: hypervisors_to_check = ['qemu', 'kvm', 'xen'] for hypervisor_type in hypervisors_to_check: check_list = type_uri_map[hypervisor_type][1] if rescue: suffix = '.rescue' else: suffix = '' if expect_kernel: check = (lambda t: self.relpath(t.find('./os/kernel').text). split('/')[1], 'kernel' + suffix) else: check = (lambda t: t.find('./os/kernel'), None) check_list.append(check) # Hypervisors that only support vm_mode.HVM and Xen # should not produce configuration that results in kernel # arguments if not expect_kernel and (hypervisor_type in ['qemu', 'kvm', 'xen']): check = (lambda t: t.find('./os/root'), None) check_list.append(check) check = (lambda t: t.find('./os/cmdline'), None) check_list.append(check) if expect_ramdisk: check = (lambda t: self.relpath(t.find('./os/initrd').text). split('/')[1], 'ramdisk' + suffix) else: check = (lambda t: t.find('./os/initrd'), None) check_list.append(check) if hypervisor_type in ['qemu', 'kvm']: xpath = "./sysinfo/system/entry" check = (lambda t: t.findall(xpath)[0].get("name"), "manufacturer") check_list.append(check) check = (lambda t: t.findall(xpath)[0].text, version.vendor_string()) check_list.append(check) check = (lambda t: t.findall(xpath)[1].get("name"), "product") check_list.append(check) check = (lambda t: t.findall(xpath)[1].text, version.product_string()) check_list.append(check) check = (lambda t: t.findall(xpath)[2].get("name"), "version") check_list.append(check) # NOTE(sirp): empty strings don't roundtrip in lxml (they are # converted to None), so we need an `or ''` to correct for that check = (lambda t: t.findall(xpath)[2].text or '', version.version_string_with_package()) check_list.append(check) check = (lambda t: t.findall(xpath)[3].get("name"), "serial") check_list.append(check) check = (lambda t: t.findall(xpath)[3].text, "cef19ce0-0ca2-11df-855d-b19fbce37686") check_list.append(check) check = (lambda t: t.findall(xpath)[4].get("name"), "uuid") check_list.append(check) check = (lambda t: t.findall(xpath)[4].text, instance['uuid']) check_list.append(check) if hypervisor_type in ['qemu', 'kvm']: check = (lambda t: t.findall('./devices/serial')[0].get( 'type'), 'file') check_list.append(check) check = (lambda t: t.findall('./devices/serial')[1].get( 'type'), 'pty') check_list.append(check) check = (lambda t: self.relpath(t.findall( './devices/serial/source')[0].get('path')). split('/')[1], 'console.log') check_list.append(check) else: check = (lambda t: t.find('./devices/console').get( 'type'), 'pty') check_list.append(check) common_checks = [ (lambda t: t.find('.').tag, 'domain'), (lambda t: t.find('./memory').text, '2097152')] if rescue: common_checks += [ (lambda t: self.relpath(t.findall('./devices/disk/source')[0]. get('file')).split('/')[1], 'disk.rescue'), (lambda t: self.relpath(t.findall('./devices/disk/source')[1]. get('file')).split('/')[1], 'disk')] else: common_checks += [(lambda t: self.relpath(t.findall( './devices/disk/source')[0].get('file')).split('/')[1], 'disk')] common_checks += [(lambda t: self.relpath(t.findall( './devices/disk/source')[1].get('file')).split('/')[1], 'disk.local')] for virt_type in hypervisors_to_check: expected_uri = type_uri_map[virt_type][0] checks = type_uri_map[virt_type][1] self.flags(virt_type=virt_type, group='libvirt') with mock.patch('nova.virt.libvirt.driver.libvirt') as old_virt: del old_virt.VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.assertEqual(conn.uri(), expected_uri) network_info = _fake_network_info(self.stubs, 1) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance_ref, rescue=rescue) xml = conn.to_xml(self.context, instance_ref, network_info, disk_info, rescue=rescue) tree = etree.fromstring(xml) for i, (check, expected_result) in enumerate(checks): self.assertEqual(check(tree), expected_result, '%s != %s failed check %d' % (check(tree), expected_result, i)) for i, (check, expected_result) in enumerate(common_checks): self.assertEqual(check(tree), expected_result, '%s != %s failed common check %d' % (check(tree), expected_result, i)) filterref = './devices/interface/filterref' vif = network_info[0] nic_id = vif['address'].replace(':', '') fw = firewall.NWFilterFirewall(fake.FakeVirtAPI(), conn) instance_filter_name = fw._instance_filter_name(instance_ref, nic_id) self.assertEqual(tree.find(filterref).get('filter'), instance_filter_name) # This test is supposed to make sure we don't # override a specifically set uri # # Deliberately not just assigning this string to CONF.connection_uri # and checking against that later on. This way we make sure the # implementation doesn't fiddle around with the CONF. testuri = 'something completely different' self.flags(connection_uri=testuri, group='libvirt') for (virt_type, (expected_uri, checks)) in type_uri_map.iteritems(): self.flags(virt_type=virt_type, group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.assertEqual(conn.uri(), testuri) db.instance_destroy(user_context, instance_ref['uuid']) def test_ensure_filtering_rules_for_instance_timeout(self): # ensure_filtering_fules_for_instance() finishes with timeout. # Preparing mocks def fake_none(self, *args): return def fake_raise(self): raise libvirt.libvirtError('ERR') class FakeTime(object): def __init__(self): self.counter = 0 def sleep(self, t): self.counter += t fake_timer = FakeTime() # _fake_network_info must be called before create_fake_libvirt_mock(), # as _fake_network_info calls importutils.import_class() and # create_fake_libvirt_mock() mocks importutils.import_class(). network_info = _fake_network_info(self.stubs, 1) self.create_fake_libvirt_mock() instance_ref = db.instance_create(self.context, self.test_instance) # Start test self.mox.ReplayAll() try: conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn.firewall_driver, 'setup_basic_filtering', fake_none) self.stubs.Set(conn.firewall_driver, 'prepare_instance_filter', fake_none) self.stubs.Set(conn.firewall_driver, 'instance_filter_exists', fake_none) conn.ensure_filtering_rules_for_instance(instance_ref, network_info, time_module=fake_timer) except exception.NovaException as e: msg = ('The firewall filter for %s does not exist' % instance_ref['name']) c1 = (0 <= str(e).find(msg)) self.assertTrue(c1) self.assertEqual(29, fake_timer.counter, "Didn't wait the expected " "amount of time") db.instance_destroy(self.context, instance_ref['uuid']) def test_check_can_live_migrate_dest_all_pass_with_block_migration(self): instance_ref = db.instance_create(self.context, self.test_instance) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) compute_info = {'disk_available_least': 400, 'cpu_info': 'asdf', } filename = "file" self.mox.StubOutWithMock(conn, '_create_shared_storage_test_file') self.mox.StubOutWithMock(conn, '_compare_cpu') # _check_cpu_match conn._compare_cpu("asdf") # mounted_on_same_shared_storage conn._create_shared_storage_test_file().AndReturn(filename) self.mox.ReplayAll() return_value = conn.check_can_live_migrate_destination(self.context, instance_ref, compute_info, compute_info, True) self.assertThat({"filename": "file", 'disk_available_mb': 409600, "disk_over_commit": False, "block_migration": True}, matchers.DictMatches(return_value)) def test_check_can_live_migrate_dest_all_pass_no_block_migration(self): instance_ref = db.instance_create(self.context, self.test_instance) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) compute_info = {'cpu_info': 'asdf'} filename = "file" self.mox.StubOutWithMock(conn, '_create_shared_storage_test_file') self.mox.StubOutWithMock(conn, '_compare_cpu') # _check_cpu_match conn._compare_cpu("asdf") # mounted_on_same_shared_storage conn._create_shared_storage_test_file().AndReturn(filename) self.mox.ReplayAll() return_value = conn.check_can_live_migrate_destination(self.context, instance_ref, compute_info, compute_info, False) self.assertThat({"filename": "file", "block_migration": False, "disk_over_commit": False, "disk_available_mb": None}, matchers.DictMatches(return_value)) def test_check_can_live_migrate_dest_incompatible_cpu_raises(self): instance_ref = db.instance_create(self.context, self.test_instance) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) compute_info = {'cpu_info': 'asdf'} self.mox.StubOutWithMock(conn, '_compare_cpu') conn._compare_cpu("asdf").AndRaise(exception.InvalidCPUInfo( reason='foo') ) self.mox.ReplayAll() self.assertRaises(exception.InvalidCPUInfo, conn.check_can_live_migrate_destination, self.context, instance_ref, compute_info, compute_info, False) def test_check_can_live_migrate_dest_cleanup_works_correctly(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": True, "disk_over_commit": False, "disk_available_mb": 1024} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, '_cleanup_shared_storage_test_file') conn._cleanup_shared_storage_test_file("file") self.mox.ReplayAll() conn.check_can_live_migrate_destination_cleanup(self.context, dest_check_data) def test_check_can_live_migrate_source_works_correctly(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": True, "disk_over_commit": False, "disk_available_mb": 1024} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(False) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref['name']).AndReturn('[]') self.mox.StubOutWithMock(conn, "_assert_dest_node_has_enough_disk") conn._assert_dest_node_has_enough_disk( self.context, instance_ref, dest_check_data['disk_available_mb'], False) self.mox.ReplayAll() conn.check_can_live_migrate_source(self.context, instance_ref, dest_check_data) def test_check_can_live_migrate_source_vol_backed_works_correctly(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": False, "disk_over_commit": False, "disk_available_mb": 1024, "is_volume_backed": True} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(False) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref['name']).AndReturn('[]') self.mox.ReplayAll() ret = conn.check_can_live_migrate_source(self.context, instance_ref, dest_check_data) self.assertTrue(type(ret) == dict) self.assertIn('is_shared_storage', ret) def test_check_can_live_migrate_source_vol_backed_w_disk_raises(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": False, "disk_over_commit": False, "disk_available_mb": 1024, "is_volume_backed": True} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(False) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref['name']).AndReturn( '[{"fake_disk_attr": "fake_disk_val"}]') self.mox.ReplayAll() self.assertRaises(exception.InvalidSharedStorage, conn.check_can_live_migrate_source, self.context, instance_ref, dest_check_data) def test_check_can_live_migrate_source_vol_backed_fails(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": False, "disk_over_commit": False, "disk_available_mb": 1024, "is_volume_backed": False} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(False) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref['name']).AndReturn( '[{"fake_disk_attr": "fake_disk_val"}]') self.mox.ReplayAll() self.assertRaises(exception.InvalidSharedStorage, conn.check_can_live_migrate_source, self.context, instance_ref, dest_check_data) def test_check_can_live_migrate_dest_fail_shared_storage_with_blockm(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": True, "disk_over_commit": False, 'disk_available_mb': 1024} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(True) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref['name']).AndReturn('[]') self.mox.ReplayAll() self.assertRaises(exception.InvalidLocalStorage, conn.check_can_live_migrate_source, self.context, instance_ref, dest_check_data) def test_check_can_live_migrate_no_shared_storage_no_blck_mig_raises(self): instance_ref = db.instance_create(self.context, self.test_instance) dest_check_data = {"filename": "file", "block_migration": False, "disk_over_commit": False, 'disk_available_mb': 1024} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(False) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref['name']).AndReturn('[]') self.mox.ReplayAll() self.assertRaises(exception.InvalidSharedStorage, conn.check_can_live_migrate_source, self.context, instance_ref, dest_check_data) def test_check_can_live_migrate_source_with_dest_not_enough_disk(self): instance_ref = db.instance_create(self.context, self.test_instance) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_check_shared_storage_test_file") conn._check_shared_storage_test_file("file").AndReturn(False) self.mox.StubOutWithMock(conn, "get_instance_disk_info") conn.get_instance_disk_info(instance_ref["name"]).AndReturn( '[{"virt_disk_size":2}]') conn.get_instance_disk_info(instance_ref["name"]).AndReturn( '[{"virt_disk_size":2}]') dest_check_data = {"filename": "file", "disk_available_mb": 0, "block_migration": True, "disk_over_commit": False} self.mox.ReplayAll() self.assertRaises(exception.MigrationError, conn.check_can_live_migrate_source, self.context, instance_ref, dest_check_data) def test_live_migration_raises_exception(self): # Confirms recover method is called when exceptions are raised. # Preparing data self.compute = importutils.import_object(CONF.compute_manager) instance_dict = {'host': 'fake', 'power_state': power_state.RUNNING, 'vm_state': vm_states.ACTIVE} instance_ref = db.instance_create(self.context, self.test_instance) instance_ref = db.instance_update(self.context, instance_ref['uuid'], instance_dict) # Preparing mocks vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "migrateToURI") _bandwidth = CONF.libvirt.live_migration_bandwidth vdmock.migrateToURI(CONF.libvirt.live_migration_uri % 'dest', mox.IgnoreArg(), None, _bandwidth).AndRaise(libvirt.libvirtError('ERR')) def fake_lookup(instance_name): if instance_name == instance_ref['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) self.mox.StubOutWithMock(self.compute, "_rollback_live_migration") self.compute._rollback_live_migration(self.context, instance_ref, 'dest', False) #start test self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(libvirt.libvirtError, conn._live_migration, self.context, instance_ref, 'dest', False, self.compute._rollback_live_migration) instance_ref = db.instance_get(self.context, instance_ref['id']) self.assertTrue(instance_ref['vm_state'] == vm_states.ACTIVE) self.assertTrue(instance_ref['power_state'] == power_state.RUNNING) db.instance_destroy(self.context, instance_ref['uuid']) def test_rollback_live_migration_at_destination(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) with mock.patch.object(conn, "destroy") as mock_destroy: conn.rollback_live_migration_at_destination("context", "instance", [], None) mock_destroy.assert_called_once_with("context", "instance", [], None) def _do_test_create_images_and_backing(self, disk_type): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, '_fetch_instance_kernel_ramdisk') self.mox.StubOutWithMock(libvirt_driver.libvirt_utils, 'create_image') disk_info = {'path': 'foo', 'type': disk_type, 'disk_size': 1 * 1024 ** 3, 'virt_disk_size': 20 * 1024 ** 3, 'backing_file': None} disk_info_json = jsonutils.dumps([disk_info]) libvirt_driver.libvirt_utils.create_image( disk_info['type'], mox.IgnoreArg(), disk_info['virt_disk_size']) conn._fetch_instance_kernel_ramdisk(self.context, self.test_instance) self.mox.ReplayAll() self.stubs.Set(os.path, 'exists', lambda *args: False) conn._create_images_and_backing(self.context, self.test_instance, "/fake/instance/dir", disk_info_json) def test_create_images_and_backing_qcow2(self): self._do_test_create_images_and_backing('qcow2') def test_create_images_and_backing_raw(self): self._do_test_create_images_and_backing('raw') def test_create_images_and_backing_ephemeral_gets_created(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) disk_info_json = jsonutils.dumps( [{u'backing_file': u'fake_image_backing_file', u'disk_size': 10747904, u'path': u'disk_path', u'type': u'qcow2', u'virt_disk_size': 25165824}, {u'backing_file': u'ephemeral_1_default', u'disk_size': 393216, u'over_committed_disk_size': 1073348608, u'path': u'disk_eph_path', u'type': u'qcow2', u'virt_disk_size': 1073741824}]) base_dir = os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name) self.test_instance.update({'name': 'fake_instance', 'user_id': 'fake-user', 'os_type': None, 'project_id': 'fake-project'}) with contextlib.nested( mock.patch.object(conn, '_fetch_instance_kernel_ramdisk'), mock.patch.object(libvirt_driver.libvirt_utils, 'fetch_image'), mock.patch.object(conn, '_create_ephemeral') ) as (fetch_kernel_ramdisk_mock, fetch_image_mock, create_ephemeral_mock): conn._create_images_and_backing(self.context, self.test_instance, "/fake/instance/dir", disk_info_json) self.assertEqual(len(create_ephemeral_mock.call_args_list), 1) m_args, m_kwargs = create_ephemeral_mock.call_args_list[0] self.assertEqual( os.path.join(base_dir, 'ephemeral_1_default'), m_kwargs['target']) self.assertEqual(len(fetch_image_mock.call_args_list), 1) m_args, m_kwargs = fetch_image_mock.call_args_list[0] self.assertEqual( os.path.join(base_dir, 'fake_image_backing_file'), m_kwargs['target']) def test_create_images_and_backing_disk_info_none(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, '_fetch_instance_kernel_ramdisk') conn._fetch_instance_kernel_ramdisk(self.context, self.test_instance) self.mox.ReplayAll() conn._create_images_and_backing(self.context, self.test_instance, "/fake/instance/dir", None) def test_pre_live_migration_works_correctly_mocked(self): # Creating testdata vol = {'block_device_mapping': [ {'connection_info': 'dummy', 'mount_device': '/dev/sda'}, {'connection_info': 'dummy', 'mount_device': '/dev/sdb'}]} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) class FakeNetworkInfo(): def fixed_ips(self): return ["test_ip_addr"] def fake_none(*args, **kwargs): return self.stubs.Set(conn, '_create_images_and_backing', fake_none) inst_ref = {'id': 'foo'} c = context.get_admin_context() nw_info = FakeNetworkInfo() # Creating mocks self.mox.StubOutWithMock(driver, "block_device_info_get_mapping") driver.block_device_info_get_mapping(vol ).AndReturn(vol['block_device_mapping']) self.mox.StubOutWithMock(conn, "volume_driver_method") for v in vol['block_device_mapping']: disk_info = { 'bus': "scsi", 'dev': v['mount_device'].rpartition("/")[2], 'type': "disk" } conn.volume_driver_method('connect_volume', v['connection_info'], disk_info) self.mox.StubOutWithMock(conn, 'plug_vifs') conn.plug_vifs(mox.IsA(inst_ref), nw_info) self.mox.ReplayAll() result = conn.pre_live_migration(c, inst_ref, vol, nw_info, None) self.assertIsNone(result) def test_pre_live_migration_block_with_config_drive_mocked(self): # Creating testdata vol = {'block_device_mapping': [ {'connection_info': 'dummy', 'mount_device': '/dev/sda'}, {'connection_info': 'dummy', 'mount_device': '/dev/sdb'}]} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) def fake_true(*args, **kwargs): return True self.stubs.Set(configdrive, 'required_by', fake_true) inst_ref = {'id': 'foo'} c = context.get_admin_context() self.assertRaises(exception.NoBlockMigrationForConfigDriveInLibVirt, conn.pre_live_migration, c, inst_ref, vol, None, None, {'is_shared_storage': False}) def test_pre_live_migration_vol_backed_works_correctly_mocked(self): # Creating testdata, using temp dir. with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) vol = {'block_device_mapping': [ {'connection_info': 'dummy', 'mount_device': '/dev/sda'}, {'connection_info': 'dummy', 'mount_device': '/dev/sdb'}]} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) def fake_none(*args, **kwargs): return self.stubs.Set(conn, '_create_images_and_backing', fake_none) class FakeNetworkInfo(): def fixed_ips(self): return ["test_ip_addr"] inst_ref = db.instance_create(self.context, self.test_instance) c = context.get_admin_context() nw_info = FakeNetworkInfo() # Creating mocks self.mox.StubOutWithMock(conn, "volume_driver_method") for v in vol['block_device_mapping']: disk_info = { 'bus': "scsi", 'dev': v['mount_device'].rpartition("/")[2], 'type': "disk" } conn.volume_driver_method('connect_volume', v['connection_info'], disk_info) self.mox.StubOutWithMock(conn, 'plug_vifs') conn.plug_vifs(mox.IsA(inst_ref), nw_info) self.mox.ReplayAll() migrate_data = {'is_shared_storage': False, 'is_volume_backed': True, 'block_migration': False, 'instance_relative_path': inst_ref['name'] } ret = conn.pre_live_migration(c, inst_ref, vol, nw_info, None, migrate_data) self.assertIsNone(ret) self.assertTrue(os.path.exists('%s/%s/' % (tmpdir, inst_ref['name']))) db.instance_destroy(self.context, inst_ref['uuid']) def test_pre_live_migration_plug_vifs_retry_fails(self): self.flags(live_migration_retry_count=3) instance = {'name': 'test', 'uuid': 'uuid'} def fake_plug_vifs(instance, network_info): raise processutils.ProcessExecutionError() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'plug_vifs', fake_plug_vifs) self.stubs.Set(eventlet.greenthread, 'sleep', lambda x: None) self.assertRaises(processutils.ProcessExecutionError, conn.pre_live_migration, self.context, instance, block_device_info=None, network_info=[], disk_info={}) def test_pre_live_migration_plug_vifs_retry_works(self): self.flags(live_migration_retry_count=3) called = {'count': 0} instance = {'name': 'test', 'uuid': 'uuid'} def fake_plug_vifs(instance, network_info): called['count'] += 1 if called['count'] < CONF.live_migration_retry_count: raise processutils.ProcessExecutionError() else: return conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'plug_vifs', fake_plug_vifs) self.stubs.Set(eventlet.greenthread, 'sleep', lambda x: None) conn.pre_live_migration(self.context, instance, block_device_info=None, network_info=[], disk_info={}) def test_get_instance_disk_info_works_correctly(self): # Test data instance_ref = db.instance_create(self.context, self.test_instance) dummyxml = ("instance-0000000a" "" "" "" "" "" "" "" "") # Preparing mocks vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "XMLDesc") vdmock.XMLDesc(0).AndReturn(dummyxml) def fake_lookup(instance_name): if instance_name == instance_ref['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) fake_libvirt_utils.disk_sizes['/test/disk'] = 10 * units.Gi fake_libvirt_utils.disk_sizes['/test/disk.local'] = 20 * units.Gi fake_libvirt_utils.disk_backing_files['/test/disk.local'] = 'file' self.mox.StubOutWithMock(os.path, "getsize") os.path.getsize('/test/disk').AndReturn((10737418240)) os.path.getsize('/test/disk.local').AndReturn((3328599655)) ret = ("image: /test/disk\n" "file format: raw\n" "virtual size: 20G (21474836480 bytes)\n" "disk size: 3.1G\n" "cluster_size: 2097152\n" "backing file: /test/dummy (actual path: /backing/file)\n") self.mox.StubOutWithMock(os.path, "exists") os.path.exists('/test/disk.local').AndReturn(True) self.mox.StubOutWithMock(utils, "execute") utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', '/test/disk.local').AndReturn((ret, '')) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) info = conn.get_instance_disk_info(instance_ref['name']) info = jsonutils.loads(info) self.assertEqual(info[0]['type'], 'raw') self.assertEqual(info[0]['path'], '/test/disk') self.assertEqual(info[0]['disk_size'], 10737418240) self.assertEqual(info[0]['backing_file'], "") self.assertEqual(info[0]['over_committed_disk_size'], 0) self.assertEqual(info[1]['type'], 'qcow2') self.assertEqual(info[1]['path'], '/test/disk.local') self.assertEqual(info[1]['virt_disk_size'], 21474836480) self.assertEqual(info[1]['backing_file'], "file") self.assertEqual(info[1]['over_committed_disk_size'], 18146236825) db.instance_destroy(self.context, instance_ref['uuid']) def test_post_live_migration(self): vol = {'block_device_mapping': [ {'connection_info': 'dummy1', 'mount_device': '/dev/sda'}, {'connection_info': 'dummy2', 'mount_device': '/dev/sdb'}]} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) inst_ref = {'id': 'foo'} cntx = context.get_admin_context() # Set up the mock expectations with contextlib.nested( mock.patch.object(driver, 'block_device_info_get_mapping', return_value=vol['block_device_mapping']), mock.patch.object(conn, 'volume_driver_method') ) as (block_device_info_get_mapping, volume_driver_method): conn.post_live_migration(cntx, inst_ref, vol) block_device_info_get_mapping.assert_has_calls([ mock.call(vol)]) volume_driver_method.assert_has_calls([ mock.call('disconnect_volume', v['connection_info'], v['mount_device'].rpartition("/")[2]) for v in vol['block_device_mapping']]) def test_get_instance_disk_info_excludes_volumes(self): # Test data instance_ref = db.instance_create(self.context, self.test_instance) dummyxml = ("instance-0000000a" "" "" "" "" "" "" "" "" "" "" "" "" "" "") # Preparing mocks vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "XMLDesc") vdmock.XMLDesc(0).AndReturn(dummyxml) def fake_lookup(instance_name): if instance_name == instance_ref['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) fake_libvirt_utils.disk_sizes['/test/disk'] = 10 * units.Gi fake_libvirt_utils.disk_sizes['/test/disk.local'] = 20 * units.Gi fake_libvirt_utils.disk_backing_files['/test/disk.local'] = 'file' self.mox.StubOutWithMock(os.path, "getsize") os.path.getsize('/test/disk').AndReturn((10737418240)) os.path.getsize('/test/disk.local').AndReturn((3328599655)) ret = ("image: /test/disk\n" "file format: raw\n" "virtual size: 20G (21474836480 bytes)\n" "disk size: 3.1G\n" "cluster_size: 2097152\n" "backing file: /test/dummy (actual path: /backing/file)\n") self.mox.StubOutWithMock(os.path, "exists") os.path.exists('/test/disk.local').AndReturn(True) self.mox.StubOutWithMock(utils, "execute") utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', '/test/disk.local').AndReturn((ret, '')) self.mox.ReplayAll() conn_info = {'driver_volume_type': 'fake'} info = {'block_device_mapping': [ {'connection_info': conn_info, 'mount_device': '/dev/vdc'}, {'connection_info': conn_info, 'mount_device': '/dev/vdd'}]} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) info = conn.get_instance_disk_info(instance_ref['name'], block_device_info=info) info = jsonutils.loads(info) self.assertEqual(info[0]['type'], 'raw') self.assertEqual(info[0]['path'], '/test/disk') self.assertEqual(info[0]['disk_size'], 10737418240) self.assertEqual(info[0]['backing_file'], "") self.assertEqual(info[0]['over_committed_disk_size'], 0) self.assertEqual(info[1]['type'], 'qcow2') self.assertEqual(info[1]['path'], '/test/disk.local') self.assertEqual(info[1]['virt_disk_size'], 21474836480) self.assertEqual(info[1]['backing_file'], "file") self.assertEqual(info[1]['over_committed_disk_size'], 18146236825) db.instance_destroy(self.context, instance_ref['uuid']) def test_spawn_with_network_info(self): # Preparing mocks def fake_none(*args, **kwargs): return def fake_getLibVersion(): return 9007 def fake_getCapabilities(): return """ cef19ce0-0ca2-11df-855d-b19fbce37686 x86_64 Penryn Intel """ def fake_baselineCPU(cpu, flag): return """ Penryn Intel """ # _fake_network_info must be called before create_fake_libvirt_mock(), # as _fake_network_info calls importutils.import_class() and # create_fake_libvirt_mock() mocks importutils.import_class(). network_info = _fake_network_info(self.stubs, 1) self.create_fake_libvirt_mock(getLibVersion=fake_getLibVersion, getCapabilities=fake_getCapabilities, getVersion=lambda: 1005001, baselineCPU=fake_baselineCPU) instance_ref = self.test_instance instance_ref['image_ref'] = 123456 # we send an int to test sha1 call flavor = db.flavor_get(self.context, instance_ref['instance_type_id']) sys_meta = flavors.save_flavor_info({}, flavor) instance_ref['system_metadata'] = sys_meta instance = db.instance_create(self.context, instance_ref) # Mock out the get_info method of the LibvirtDriver so that the polling # in the spawn method of the LibvirtDriver returns immediately self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, 'get_info') libvirt_driver.LibvirtDriver.get_info(instance ).AndReturn({'state': power_state.RUNNING}) # Start test self.mox.ReplayAll() with mock.patch('nova.virt.libvirt.driver.libvirt') as old_virt: del old_virt.VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn.firewall_driver, 'setup_basic_filtering', fake_none) self.stubs.Set(conn.firewall_driver, 'prepare_instance_filter', fake_none) self.stubs.Set(imagebackend.Image, 'cache', fake_none) conn.spawn(self.context, instance, None, [], 'herp', network_info=network_info) path = os.path.join(CONF.instances_path, instance['name']) if os.path.isdir(path): shutil.rmtree(path) path = os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name) if os.path.isdir(path): shutil.rmtree(os.path.join(CONF.instances_path, CONF.image_cache_subdirectory_name)) def test_spawn_without_image_meta(self): self.create_image_called = False def fake_none(*args, **kwargs): return def fake_create_image(*args, **kwargs): self.create_image_called = True def fake_get_info(instance): return {'state': power_state.RUNNING} instance_ref = self.test_instance instance_ref['image_ref'] = 1 instance = db.instance_create(self.context, instance_ref) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'to_xml', fake_none) self.stubs.Set(conn, '_create_image', fake_create_image) self.stubs.Set(conn, '_create_domain_and_network', fake_none) self.stubs.Set(conn, 'get_info', fake_get_info) conn.spawn(self.context, instance, None, [], None) self.assertTrue(self.create_image_called) conn.spawn(self.context, instance, {'id': instance['image_ref']}, [], None) self.assertTrue(self.create_image_called) def test_spawn_from_volume_calls_cache(self): self.cache_called_for_disk = False def fake_none(*args, **kwargs): return def fake_cache(*args, **kwargs): if kwargs.get('image_id') == 'my_fake_image': self.cache_called_for_disk = True def fake_get_info(instance): return {'state': power_state.RUNNING} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'to_xml', fake_none) self.stubs.Set(imagebackend.Image, 'cache', fake_cache) self.stubs.Set(conn, '_create_domain_and_network', fake_none) self.stubs.Set(conn, 'get_info', fake_get_info) block_device_info = {'root_device_name': '/dev/vda', 'block_device_mapping': [ {'mount_device': 'vda', 'boot_index': 0} ] } # Volume-backed instance created without image instance_ref = self.test_instance instance_ref['image_ref'] = '' instance_ref['root_device_name'] = '/dev/vda' instance_ref['uuid'] = uuidutils.generate_uuid() instance = db.instance_create(self.context, instance_ref) conn.spawn(self.context, instance, None, [], None, block_device_info=block_device_info) self.assertFalse(self.cache_called_for_disk) db.instance_destroy(self.context, instance['uuid']) # Booted from volume but with placeholder image instance_ref = self.test_instance instance_ref['image_ref'] = 'my_fake_image' instance_ref['root_device_name'] = '/dev/vda' instance_ref['uuid'] = uuidutils.generate_uuid() instance = db.instance_create(self.context, instance_ref) conn.spawn(self.context, instance, None, [], None, block_device_info=block_device_info) self.assertFalse(self.cache_called_for_disk) db.instance_destroy(self.context, instance['uuid']) # Booted from an image instance_ref['image_ref'] = 'my_fake_image' instance_ref['uuid'] = uuidutils.generate_uuid() instance = db.instance_create(self.context, instance_ref) conn.spawn(self.context, instance, None, [], None) self.assertTrue(self.cache_called_for_disk) db.instance_destroy(self.context, instance['uuid']) def test_spawn_with_pci_devices(self): def fake_none(*args, **kwargs): return None def fake_get_info(instance): return {'state': power_state.RUNNING} class FakeLibvirtPciDevice(): def dettach(self): return None def reset(self): return None def fake_node_device_lookup_by_name(address): pattern = ("pci_%(hex)s{4}_%(hex)s{2}_%(hex)s{2}_%(oct)s{1}" % dict(hex='[\da-f]', oct='[0-8]')) pattern = re.compile(pattern) if pattern.match(address) is None: raise libvirt.libvirtError() return FakeLibvirtPciDevice() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'to_xml', fake_none) self.stubs.Set(conn, '_create_image', fake_none) self.stubs.Set(conn, '_create_domain_and_network', fake_none) self.stubs.Set(conn, 'get_info', fake_get_info) conn._conn.nodeDeviceLookupByName = \ fake_node_device_lookup_by_name instance_ref = self.test_instance instance_ref['image_ref'] = 'my_fake_image' instance = db.instance_create(self.context, instance_ref) instance = dict(instance.iteritems()) instance['pci_devices'] = [{'address': '0000:00:00.0'}] conn.spawn(self.context, instance, None, [], None) def test_chown_disk_config_for_instance(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instance = copy.deepcopy(self.test_instance) instance['name'] = 'test_name' self.mox.StubOutWithMock(fake_libvirt_utils, 'get_instance_path') self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(fake_libvirt_utils, 'chown') fake_libvirt_utils.get_instance_path(instance).AndReturn('/tmp/uuid') os.path.exists('/tmp/uuid/disk.config').AndReturn(True) fake_libvirt_utils.chown('/tmp/uuid/disk.config', os.getuid()) self.mox.ReplayAll() conn._chown_disk_config_for_instance(instance) def _test_create_image_plain(self, os_type='', filename='', mkfs=False): gotFiles = [] def fake_image(self, instance, name, image_type=''): class FakeImage(imagebackend.Image): def __init__(self, instance, name, is_block_dev=False): self.path = os.path.join(instance['name'], name) self.is_block_dev = is_block_dev def create_image(self, prepare_template, base, size, *args, **kwargs): pass def cache(self, fetch_func, filename, size=None, *args, **kwargs): gotFiles.append({'filename': filename, 'size': size}) def snapshot(self, name): pass return FakeImage(instance, name) def fake_none(*args, **kwargs): return def fake_get_info(instance): return {'state': power_state.RUNNING} # Stop 'libvirt_driver._create_image' touching filesystem self.stubs.Set(nova.virt.libvirt.imagebackend.Backend, "image", fake_image) instance_ref = self.test_instance instance_ref['image_ref'] = 1 instance = db.instance_create(self.context, instance_ref) instance['os_type'] = os_type conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'to_xml', fake_none) self.stubs.Set(conn, '_create_domain_and_network', fake_none) self.stubs.Set(conn, 'get_info', fake_get_info) if mkfs: self.stubs.Set(nova.virt.disk.api, '_MKFS_COMMAND', {os_type: 'mkfs.ext3 --label %(fs_label)s %(target)s'}) image_meta = {'id': instance['image_ref']} disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance, None, image_meta) conn._create_image(context, instance, disk_info['mapping']) xml = conn.to_xml(self.context, instance, None, disk_info, image_meta) wantFiles = [ {'filename': '356a192b7913b04c54574d18c28d46e6395428ab', 'size': 10 * units.Gi}, {'filename': filename, 'size': 20 * units.Gi}, ] self.assertEqual(gotFiles, wantFiles) def test_create_image_plain_os_type_blank(self): self._test_create_image_plain(os_type='', filename='ephemeral_20_default', mkfs=False) def test_create_image_plain_os_type_none(self): self._test_create_image_plain(os_type=None, filename='ephemeral_20_default', mkfs=False) def test_create_image_plain_os_type_set_no_fs(self): self._test_create_image_plain(os_type='test', filename='ephemeral_20_default', mkfs=False) def test_create_image_plain_os_type_set_with_fs(self): self._test_create_image_plain(os_type='test', filename='ephemeral_20_test', mkfs=True) def test_create_image_with_swap(self): gotFiles = [] def fake_image(self, instance, name, image_type=''): class FakeImage(imagebackend.Image): def __init__(self, instance, name, is_block_dev=False): self.path = os.path.join(instance['name'], name) self.is_block_dev = is_block_dev def create_image(self, prepare_template, base, size, *args, **kwargs): pass def cache(self, fetch_func, filename, size=None, *args, **kwargs): gotFiles.append({'filename': filename, 'size': size}) def snapshot(self, name): pass return FakeImage(instance, name) def fake_none(*args, **kwargs): return def fake_get_info(instance): return {'state': power_state.RUNNING} # Stop 'libvirt_driver._create_image' touching filesystem self.stubs.Set(nova.virt.libvirt.imagebackend.Backend, "image", fake_image) instance_ref = self.test_instance instance_ref['image_ref'] = 1 # Turn on some swap to exercise that codepath in _create_image instance_ref['system_metadata']['instance_type_swap'] = 500 instance = db.instance_create(self.context, instance_ref) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'to_xml', fake_none) self.stubs.Set(conn, '_create_domain_and_network', fake_none) self.stubs.Set(conn, 'get_info', fake_get_info) image_meta = {'id': instance['image_ref']} disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance, None, image_meta) conn._create_image(context, instance, disk_info['mapping']) xml = conn.to_xml(self.context, instance, None, disk_info, image_meta) wantFiles = [ {'filename': '356a192b7913b04c54574d18c28d46e6395428ab', 'size': 10 * units.Gi}, {'filename': 'ephemeral_20_default', 'size': 20 * units.Gi}, {'filename': 'swap_500', 'size': 500 * units.Mi}, ] self.assertEqual(gotFiles, wantFiles) def test_create_ephemeral_default(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(utils, 'execute') utils.execute('mkfs', '-t', 'ext3', '-F', '-L', 'myVol', '/dev/something', run_as_root=True) self.mox.ReplayAll() conn._create_ephemeral('/dev/something', 20, 'myVol', 'linux', is_block_dev=True, max_size=20) def test_create_ephemeral_with_conf(self): CONF.set_override('default_ephemeral_format', 'ext4') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(utils, 'execute') utils.execute('mkfs', '-t', 'ext4', '-F', '-L', 'myVol', '/dev/something', run_as_root=True) self.mox.ReplayAll() conn._create_ephemeral('/dev/something', 20, 'myVol', 'linux', is_block_dev=True) def test_create_ephemeral_with_arbitrary(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(nova.virt.disk.api, '_MKFS_COMMAND', {'linux': 'mkfs.ext3 --label %(fs_label)s %(target)s'}) self.mox.StubOutWithMock(utils, 'execute') utils.execute('mkfs.ext3', '--label', 'myVol', '/dev/something', run_as_root=True) self.mox.ReplayAll() conn._create_ephemeral('/dev/something', 20, 'myVol', 'linux', is_block_dev=True) def test_create_swap_default(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(utils, 'execute') utils.execute('mkswap', '/dev/something', run_as_root=False) self.mox.ReplayAll() conn._create_swap('/dev/something', 1, max_size=20) def test_get_console_output_file(self): fake_libvirt_utils.files['console.log'] = '01234567890' with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) instance_ref = self.test_instance instance_ref['image_ref'] = 123456 instance = db.instance_create(self.context, instance_ref) console_dir = (os.path.join(tmpdir, instance['name'])) console_log = '%s/console.log' % (console_dir) fake_dom_xml = """ """ % console_log def fake_lookup(id): return FakeVirtDomain(fake_dom_xml) self.create_fake_libvirt_mock() libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) try: prev_max = libvirt_driver.MAX_CONSOLE_BYTES libvirt_driver.MAX_CONSOLE_BYTES = 5 output = conn.get_console_output(self.context, instance) finally: libvirt_driver.MAX_CONSOLE_BYTES = prev_max self.assertEqual('67890', output) def test_get_console_output_pty(self): fake_libvirt_utils.files['pty'] = '01234567890' with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) instance_ref = self.test_instance instance_ref['image_ref'] = 123456 instance = db.instance_create(self.context, instance_ref) console_dir = (os.path.join(tmpdir, instance['name'])) pty_file = '%s/fake_pty' % (console_dir) fake_dom_xml = """ """ % pty_file def fake_lookup(id): return FakeVirtDomain(fake_dom_xml) def _fake_flush(self, fake_pty): return 'foo' def _fake_append_to_file(self, data, fpath): return 'pty' self.create_fake_libvirt_mock() libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup libvirt_driver.LibvirtDriver._flush_libvirt_console = _fake_flush libvirt_driver.LibvirtDriver._append_to_file = _fake_append_to_file conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) try: prev_max = libvirt_driver.MAX_CONSOLE_BYTES libvirt_driver.MAX_CONSOLE_BYTES = 5 output = conn.get_console_output(self.context, instance) finally: libvirt_driver.MAX_CONSOLE_BYTES = prev_max self.assertEqual('67890', output) def test_get_host_ip_addr(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) ip = conn.get_host_ip_addr() self.assertEqual(ip, CONF.my_ip) def test_broken_connection(self): for (error, domain) in ( (libvirt.VIR_ERR_SYSTEM_ERROR, libvirt.VIR_FROM_REMOTE), (libvirt.VIR_ERR_SYSTEM_ERROR, libvirt.VIR_FROM_RPC), (libvirt.VIR_ERR_INTERNAL_ERROR, libvirt.VIR_FROM_RPC)): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, "_wrapped_conn") self.mox.StubOutWithMock(conn._wrapped_conn, "getLibVersion") self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_domain") conn._wrapped_conn.getLibVersion().AndRaise( libvirt.libvirtError("fake failure")) libvirt.libvirtError.get_error_code().AndReturn(error) libvirt.libvirtError.get_error_domain().AndReturn(domain) self.mox.ReplayAll() self.assertFalse(conn._test_connection(conn._wrapped_conn)) self.mox.UnsetStubs() def test_command_with_broken_connection(self): self.mox.UnsetStubs() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) with contextlib.nested( mock.patch.object(libvirt, 'openAuth', side_effect=libvirt.libvirtError("fake")), mock.patch.object(libvirt.libvirtError, "get_error_code"), mock.patch.object(libvirt.libvirtError, "get_error_domain"), mock.patch.object(conn, '_set_host_enabled')): self.assertRaises(exception.HypervisorUnavailable, conn.get_num_instances) def test_broken_connection_disable_service(self): self.mox.UnsetStubs() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn._init_events_pipe() with contextlib.nested( mock.patch.object(conn, '_set_host_enabled')): conn._close_callback(conn._wrapped_conn, 'ERROR!', '') conn._dispatch_events() conn._set_host_enabled.assert_called_once_with( False, disable_reason=u'Connection to libvirt lost: ERROR!') def test_service_resume_after_broken_connection(self): self.mox.UnsetStubs() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) service_mock = mock.MagicMock() service_mock.disabled.return_value = True with contextlib.nested( mock.patch.object(libvirt, 'openAuth', return_value=mock.MagicMock()), mock.patch.object(service_obj.Service, "get_by_compute_host", return_value=service_mock)): conn.get_num_instances() self.assertTrue(not service_mock.disabled and service_mock.disabled_reason is 'None') def test_broken_connection_no_wrapped_conn(self): # Tests that calling _close_callback when _wrapped_conn is None # is a no-op, i.e. set_host_enabled won't be called. self.mox.UnsetStubs() # conn._wrapped_conn will be None since we never call libvirt.openAuth conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI()) # create our mock connection that libvirt will send to the callback mock_failed_conn = mock.MagicMock() mock_failed_conn.__getitem__.return_value = True # nothing should happen when calling _close_callback since # _wrapped_conn is None in the driver conn._init_events_pipe() conn._close_callback(mock_failed_conn, reason=None, opaque=None) conn._dispatch_events() def test_immediate_delete(self): def fake_lookup_by_name(instance_name): raise exception.InstanceNotFound(instance_id=instance_name) def fake_delete_instance_files(instance): pass conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, '_delete_instance_files', fake_delete_instance_files) instance = db.instance_create(self.context, self.test_instance) conn.destroy(self.context, instance, {}) def _test_destroy_removes_disk(self, volume_fail=False): instance = {"name": "instancename", "id": "42", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64", "cleaned": 0, 'info_cache': None, 'security_groups': []} vol = {'block_device_mapping': [ {'connection_info': 'dummy', 'mount_device': '/dev/sdb'}]} self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_undefine_domain') libvirt_driver.LibvirtDriver._undefine_domain(instance) self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(instance) self.mox.StubOutWithMock(driver, "block_device_info_get_mapping") driver.block_device_info_get_mapping(vol ).AndReturn(vol['block_device_mapping']) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, "volume_driver_method") if volume_fail: libvirt_driver.LibvirtDriver.volume_driver_method( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).\ AndRaise(exception.VolumeNotFound('vol')) else: libvirt_driver.LibvirtDriver.volume_driver_method( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.StubOutWithMock(shutil, "rmtree") shutil.rmtree(os.path.join(CONF.instances_path, 'instance-%08x' % int(instance['id']))) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_cleanup_lvm') libvirt_driver.LibvirtDriver._cleanup_lvm(instance) # Start test self.mox.ReplayAll() def fake_destroy(instance): pass def fake_os_path_exists(path): return True def fake_unplug_vifs(instance, network_info): pass def fake_unfilter_instance(instance, network_info): pass def fake_obj_load_attr(self, attrname): if not hasattr(self, attrname): self[attrname] = {} def fake_save(self, context): pass conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_destroy', fake_destroy) self.stubs.Set(conn, 'unplug_vifs', fake_unplug_vifs) self.stubs.Set(conn.firewall_driver, 'unfilter_instance', fake_unfilter_instance) self.stubs.Set(os.path, 'exists', fake_os_path_exists) self.stubs.Set(instance_obj.Instance, 'fields', {'id': int, 'uuid': str, 'cleaned': int}) self.stubs.Set(instance_obj.Instance, 'obj_load_attr', fake_obj_load_attr) self.stubs.Set(instance_obj.Instance, 'save', fake_save) conn.destroy(self.context, instance, [], vol) def test_destroy_removes_disk(self): self._test_destroy_removes_disk(volume_fail=False) def test_destroy_removes_disk_volume_fails(self): self._test_destroy_removes_disk(volume_fail=True) def test_destroy_not_removes_disk(self): instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_undefine_domain') libvirt_driver.LibvirtDriver._undefine_domain(instance) # Start test self.mox.ReplayAll() def fake_destroy(instance): pass def fake_os_path_exists(path): return True def fake_unplug_vifs(instance, network_info): pass def fake_unfilter_instance(instance, network_info): pass conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_destroy', fake_destroy) self.stubs.Set(conn, 'unplug_vifs', fake_unplug_vifs) self.stubs.Set(conn.firewall_driver, 'unfilter_instance', fake_unfilter_instance) self.stubs.Set(os.path, 'exists', fake_os_path_exists) conn.destroy(self.context, instance, [], None, False) def test_delete_instance_files(self): instance = {"name": "instancename", "id": "42", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64", "cleaned": 0, 'info_cache': None, 'security_groups': []} self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(shutil, "rmtree") db.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(), columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(instance) os.path.exists(mox.IgnoreArg()).AndReturn(False) os.path.exists(mox.IgnoreArg()).AndReturn(True) shutil.rmtree(os.path.join(CONF.instances_path, instance['uuid'])) os.path.exists(mox.IgnoreArg()).AndReturn(True) os.path.exists(mox.IgnoreArg()).AndReturn(False) os.path.exists(mox.IgnoreArg()).AndReturn(True) shutil.rmtree(os.path.join(CONF.instances_path, instance['uuid'])) os.path.exists(mox.IgnoreArg()).AndReturn(False) self.mox.ReplayAll() def fake_obj_load_attr(self, attrname): if not hasattr(self, attrname): self[attrname] = {} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(instance_obj.Instance, 'fields', {'id': int, 'uuid': str, 'cleaned': int}) self.stubs.Set(instance_obj.Instance, 'obj_load_attr', fake_obj_load_attr) inst_obj = instance_obj.Instance.get_by_uuid(None, instance['uuid']) self.assertFalse(conn.delete_instance_files(inst_obj)) self.assertTrue(conn.delete_instance_files(inst_obj)) def test_reboot_different_ids(self): class FakeLoopingCall: def start(self, *a, **k): return self def wait(self): return None self.flags(wait_soft_reboot_seconds=1, group='libvirt') info_tuple = ('fake', 'fake', 'fake', 'also_fake') self.reboot_create_called = False # Mock domain mock_domain = self.mox.CreateMock(libvirt.virDomain) mock_domain.info().AndReturn( (libvirt_driver.VIR_DOMAIN_RUNNING,) + info_tuple) mock_domain.ID().AndReturn('some_fake_id') mock_domain.shutdown() mock_domain.info().AndReturn( (libvirt_driver.VIR_DOMAIN_CRASHED,) + info_tuple) mock_domain.ID().AndReturn('some_other_fake_id') self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock_domain def fake_create_domain(**kwargs): self.reboot_create_called = True conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64", "pci_devices": []} self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, '_create_domain', fake_create_domain) self.stubs.Set(loopingcall, 'FixedIntervalLoopingCall', lambda *a, **k: FakeLoopingCall()) conn.reboot(None, instance, []) self.assertTrue(self.reboot_create_called) def test_reboot_same_ids(self): class FakeLoopingCall: def start(self, *a, **k): return self def wait(self): return None self.flags(wait_soft_reboot_seconds=1, group='libvirt') info_tuple = ('fake', 'fake', 'fake', 'also_fake') self.reboot_hard_reboot_called = False # Mock domain mock_domain = self.mox.CreateMock(libvirt.virDomain) mock_domain.info().AndReturn( (libvirt_driver.VIR_DOMAIN_RUNNING,) + info_tuple) mock_domain.ID().AndReturn('some_fake_id') mock_domain.shutdown() mock_domain.info().AndReturn( (libvirt_driver.VIR_DOMAIN_CRASHED,) + info_tuple) mock_domain.ID().AndReturn('some_fake_id') self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock_domain def fake_hard_reboot(*args, **kwargs): self.reboot_hard_reboot_called = True def fake_sleep(interval): pass conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64", "pci_devices": []} self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(greenthread, 'sleep', fake_sleep) self.stubs.Set(conn, '_hard_reboot', fake_hard_reboot) self.stubs.Set(loopingcall, 'FixedIntervalLoopingCall', lambda *a, **k: FakeLoopingCall()) conn.reboot(None, instance, []) self.assertTrue(self.reboot_hard_reboot_called) def test_soft_reboot_libvirt_exception(self): # Tests that a hard reboot is performed when a soft reboot results # in raising a libvirtError. info_tuple = ('fake', 'fake', 'fake', 'also_fake') # setup mocks mock_domain = self.mox.CreateMock(libvirt.virDomain) mock_domain.info().AndReturn( (libvirt_driver.VIR_DOMAIN_RUNNING,) + info_tuple) mock_domain.ID().AndReturn('some_fake_id') mock_domain.shutdown().AndRaise(libvirt.libvirtError('Err')) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) context = None instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} network_info = [] self.mox.StubOutWithMock(conn, '_lookup_by_name') conn._lookup_by_name(instance['name']).AndReturn(mock_domain) self.mox.StubOutWithMock(conn, '_hard_reboot') conn._hard_reboot(context, instance, network_info, None) self.mox.ReplayAll() conn.reboot(context, instance, network_info) def _test_resume_state_on_host_boot_with_state(self, state): called = {'count': 0} mock = self.mox.CreateMock(libvirt.virDomain) mock.info().AndReturn([state, None, None, None, None]) self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_hard_reboot(*args): called['count'] += 1 conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, '_hard_reboot', fake_hard_reboot) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} network_info = _fake_network_info(self.stubs, 1) conn.resume_state_on_host_boot(self.context, instance, network_info, block_device_info=None) ignored_states = (power_state.RUNNING, power_state.SUSPENDED, power_state.NOSTATE, power_state.PAUSED) if state in ignored_states: self.assertEqual(called['count'], 0) else: self.assertEqual(called['count'], 1) def test_resume_state_on_host_boot_with_running_state(self): self._test_resume_state_on_host_boot_with_state(power_state.RUNNING) def test_resume_state_on_host_boot_with_suspended_state(self): self._test_resume_state_on_host_boot_with_state(power_state.SUSPENDED) def test_resume_state_on_host_boot_with_paused_state(self): self._test_resume_state_on_host_boot_with_state(power_state.PAUSED) def test_resume_state_on_host_boot_with_nostate(self): self._test_resume_state_on_host_boot_with_state(power_state.NOSTATE) def test_resume_state_on_host_boot_with_shutdown_state(self): self._test_resume_state_on_host_boot_with_state(power_state.RUNNING) def test_resume_state_on_host_boot_with_crashed_state(self): self._test_resume_state_on_host_boot_with_state(power_state.CRASHED) def test_resume_state_on_host_boot_with_instance_not_found_on_driver(self): called = {'count': 0} instance = {'name': 'test'} def fake_instance_exists(name): return False def fake_hard_reboot(*args): called['count'] += 1 conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'instance_exists', fake_instance_exists) self.stubs.Set(conn, '_hard_reboot', fake_hard_reboot) conn.resume_state_on_host_boot(self.context, instance, network_info=[], block_device_info=None) self.assertEqual(called['count'], 1) def test_hard_reboot(self): called = {'count': 0} instance = db.instance_create(self.context, self.test_instance) network_info = _fake_network_info(self.stubs, 1) block_device_info = None dummyxml = ("instance-0000000a" "" "" "" "" "" "" "" "") conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.mox.StubOutWithMock(conn, '_destroy') self.mox.StubOutWithMock(conn, 'get_instance_disk_info') self.mox.StubOutWithMock(conn, 'to_xml') self.mox.StubOutWithMock(conn, '_create_images_and_backing') self.mox.StubOutWithMock(conn, '_create_domain_and_network') def fake_get_info(instance_name): called['count'] += 1 if called['count'] == 1: state = power_state.SHUTDOWN else: state = power_state.RUNNING return dict(state=state) self.stubs.Set(conn, 'get_info', fake_get_info) conn._destroy(instance) disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, instance, block_device_info) conn.to_xml(self.context, instance, network_info, disk_info, block_device_info=block_device_info, write_to_disk=True).AndReturn(dummyxml) disk_info_json = '[{"virt_disk_size": 2}]' conn.get_instance_disk_info(instance["name"], dummyxml, block_device_info).AndReturn(disk_info_json) conn._create_images_and_backing(self.context, instance, libvirt_utils.get_instance_path(instance), disk_info_json) conn._create_domain_and_network(self.context, dummyxml, instance, network_info, block_device_info, reboot=True, vifs_already_plugged=True) self.mox.ReplayAll() conn._hard_reboot(self.context, instance, network_info, block_device_info) def test_power_on(self): def _check_xml_bus(name, xml, block_info): tree = etree.fromstring(xml) got_disks = tree.findall('./devices/disk') got_disk_targets = tree.findall('./devices/disk/target') system_meta = utils.instance_sys_meta(instance) image_meta = utils.get_image_from_system_metadata(system_meta) want_device_bus = image_meta.get('hw_disk_bus') if not want_device_bus: want_device_bus = self.fake_img['properties']['hw_disk_bus'] got_device_bus = got_disk_targets[0].get('bus') self.assertEqual(got_device_bus, want_device_bus) def fake_get_info(instance_name): called['count'] += 1 if called['count'] == 1: state = power_state.SHUTDOWN else: state = power_state.RUNNING return dict(state=state) def _get_inst(with_meta=True): inst_ref = self.test_instance inst_ref['uuid'] = uuidutils.generate_uuid() if with_meta: inst_ref['system_metadata']['image_hw_disk_bus'] = 'ide' instance = db.instance_create(self.context, inst_ref) instance['image_ref'] = '70a599e0-31e7-49b7-b260-868f221a761e' return instance called = {'count': 0} self.fake_img = {'id': '70a599e0-31e7-49b7-b260-868f221a761e', 'name': 'myfakeimage', 'created_at': '', 'updated_at': '', 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'bare', 'disk_format': 'qcow2', 'size': '74185822', 'properties': {'hw_disk_bus': 'ide'}} instance = _get_inst() network_info = _fake_network_info(self.stubs, 1) block_device_info = None image_service_mock = mock.Mock() image_service_mock.show.return_value = self.fake_img conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) with contextlib.nested( mock.patch.object(conn, '_destroy', return_value=None), mock.patch.object(conn, '_create_images_and_backing'), mock.patch.object(conn, '_create_domain_and_network'), mock.patch('nova.image.glance.get_remote_image_service', return_value=(image_service_mock, instance['image_ref']))): conn.get_info = fake_get_info conn.get_instance_disk_info = _check_xml_bus conn._hard_reboot(self.context, instance, network_info, block_device_info) instance = _get_inst(with_meta=False) conn._hard_reboot(self.context, instance, network_info, block_device_info) def test_resume(self): dummyxml = ("instance-0000000a" "" "" "" "" "" "" "" "") instance = db.instance_create(self.context, self.test_instance) network_info = _fake_network_info(self.stubs, 1) block_device_info = None conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) with contextlib.nested( mock.patch.object(conn, '_get_existing_domain_xml', return_value=dummyxml), mock.patch.object(conn, '_create_domain_and_network', return_value='fake_dom'), mock.patch.object(conn, '_attach_pci_devices'), mock.patch.object(pci_manager, 'get_instance_pci_devs', return_value='fake_pci_devs'), ) as (_get_existing_domain_xml, _create_domain_and_network, _attach_pci_devices, get_instance_pci_devs): conn.resume(self.context, instance, network_info, block_device_info) _get_existing_domain_xml.assert_has_calls([mock.call(instance, network_info, block_device_info)]) _create_domain_and_network.assert_has_calls([mock.call( self.context, dummyxml, instance, network_info, block_device_info=block_device_info, vifs_already_plugged=True)]) _attach_pci_devices.assert_has_calls([mock.call('fake_dom', 'fake_pci_devs')]) def test_destroy_undefines(self): mock = self.mox.CreateMock(libvirt.virDomain) mock.ID() mock.destroy() mock.undefineFlags(1).AndReturn(1) self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_get_info(instance_name): return {'state': power_state.SHUTDOWN, 'id': -1} def fake_delete_instance_files(instance): return None conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, 'get_info', fake_get_info) self.stubs.Set(conn, '_delete_instance_files', fake_delete_instance_files) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} conn.destroy(self.context, instance, []) def test_cleanup_rbd(self): mock = self.mox.CreateMock(libvirt.virDomain) def fake_lookup_by_name(instance_name): return mock def fake_get_info(instance_name): return {'state': power_state.SHUTDOWN, 'id': -1} fake_volumes = ['875a8070-d0b9-4949-8b31-104d125c9a64.local', '875a8070-d0b9-4949-8b31-104d125c9a64.swap', '875a8070-d0b9-4949-8b31-104d125c9a64', 'wrong875a8070-d0b9-4949-8b31-104d125c9a64'] fake_pool = 'fake_pool' fake_instance = {'name': 'fakeinstancename', 'id': 'instanceid', 'uuid': '875a8070-d0b9-4949-8b31-104d125c9a64'} conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, 'get_info', fake_get_info) self.flags(images_rbd_pool=fake_pool, group='libvirt') self.mox.StubOutWithMock(libvirt_driver.libvirt_utils, 'remove_rbd_volumes') libvirt_driver.libvirt_utils.remove_rbd_volumes(fake_pool, *fake_volumes[:3]) self.mox.ReplayAll() conn._cleanup_rbd(fake_instance) self.mox.VerifyAll() def test_destroy_undefines_no_undefine_flags(self): mock = self.mox.CreateMock(libvirt.virDomain) mock.ID() mock.destroy() mock.undefineFlags(1).AndRaise(libvirt.libvirtError('Err')) mock.undefine() self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_get_info(instance_name): return {'state': power_state.SHUTDOWN, 'id': -1} def fake_delete_instance_files(instance): return None conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, 'get_info', fake_get_info) self.stubs.Set(conn, '_delete_instance_files', fake_delete_instance_files) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} conn.destroy(self.context, instance, []) def test_destroy_undefines_no_attribute_with_managed_save(self): mock = self.mox.CreateMock(libvirt.virDomain) mock.ID() mock.destroy() mock.undefineFlags(1).AndRaise(AttributeError()) mock.hasManagedSaveImage(0).AndReturn(True) mock.managedSaveRemove(0) mock.undefine() self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_get_info(instance_name): return {'state': power_state.SHUTDOWN, 'id': -1} def fake_delete_instance_files(instance): return None conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, 'get_info', fake_get_info) self.stubs.Set(conn, '_delete_instance_files', fake_delete_instance_files) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} conn.destroy(self.context, instance, []) def test_destroy_undefines_no_attribute_no_managed_save(self): mock = self.mox.CreateMock(libvirt.virDomain) mock.ID() mock.destroy() mock.undefineFlags(1).AndRaise(AttributeError()) mock.hasManagedSaveImage(0).AndRaise(AttributeError()) mock.undefine() self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_get_info(instance_name): return {'state': power_state.SHUTDOWN, 'id': -1} def fake_delete_instance_files(instance): return None conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, 'get_info', fake_get_info) self.stubs.Set(conn, '_delete_instance_files', fake_delete_instance_files) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} conn.destroy(self.context, instance, []) def test_destroy_timed_out(self): mock = self.mox.CreateMock(libvirt.virDomain) mock.ID() mock.destroy().AndRaise(libvirt.libvirtError("timed out")) self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_get_error_code(self): return libvirt.VIR_ERR_OPERATION_TIMEOUT conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(libvirt.libvirtError, 'get_error_code', fake_get_error_code) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} self.assertRaises(exception.InstancePowerOffFailure, conn.destroy, self.context, instance, []) def test_private_destroy_not_found(self): mock = self.mox.CreateMock(libvirt.virDomain) mock.ID() mock.destroy() self.mox.ReplayAll() def fake_lookup_by_name(instance_name): return mock def fake_get_info(instance_name): raise exception.InstanceNotFound(instance_id=instance_name) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_by_name) self.stubs.Set(conn, 'get_info', fake_get_info) instance = {"name": "instancename", "id": "instanceid", "uuid": "875a8070-d0b9-4949-8b31-104d125c9a64"} # NOTE(vish): verifies destroy doesn't raise if the instance disappears conn._destroy(instance) def test_undefine_domain_with_not_found_instance(self): def fake_lookup(instance_name): raise libvirt.libvirtError("not found") self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") libvirt.libvirtError.get_error_code().AndReturn( libvirt.VIR_ERR_NO_DOMAIN) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instance = {'name': 'test'} # NOTE(wenjianhn): verifies undefine doesn't raise if the # instance disappears conn._undefine_domain(instance) def test_disk_over_committed_size_total(self): # Ensure destroy calls managedSaveRemove for saved instance. conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) def list_instances(): return ['fake1', 'fake2'] self.stubs.Set(conn, 'list_instances', list_instances) fake_disks = {'fake1': [{'type': 'qcow2', 'path': '/somepath/disk1', 'virt_disk_size': '10737418240', 'backing_file': '/somepath/disk1', 'disk_size': '83886080', 'over_committed_disk_size': '10653532160'}], 'fake2': [{'type': 'raw', 'path': '/somepath/disk2', 'virt_disk_size': '0', 'backing_file': '/somepath/disk2', 'disk_size': '10737418240', 'over_committed_disk_size': '0'}]} def get_info(instance_name): return jsonutils.dumps(fake_disks.get(instance_name)) self.stubs.Set(conn, 'get_instance_disk_info', get_info) result = conn.get_disk_over_committed_size_total() self.assertEqual(result, 10653532160) def test_cpu_info(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) def get_host_capabilities_stub(self): cpu = vconfig.LibvirtConfigCPU() cpu.model = "Opteron_G4" cpu.vendor = "AMD" cpu.arch = "x86_64" cpu.cores = 2 cpu.threads = 1 cpu.sockets = 4 cpu.add_feature(vconfig.LibvirtConfigCPUFeature("extapic")) cpu.add_feature(vconfig.LibvirtConfigCPUFeature("3dnow")) caps = vconfig.LibvirtConfigCaps() caps.host = vconfig.LibvirtConfigCapsHost() caps.host.cpu = cpu guest = vconfig.LibvirtConfigGuest() guest.ostype = vm_mode.HVM guest.arch = "x86_64" guest.domtype = ["kvm"] caps.guests.append(guest) guest = vconfig.LibvirtConfigGuest() guest.ostype = vm_mode.HVM guest.arch = "i686" guest.domtype = ["kvm"] caps.guests.append(guest) return caps self.stubs.Set(libvirt_driver.LibvirtDriver, 'get_host_capabilities', get_host_capabilities_stub) want = {"vendor": "AMD", "features": ["extapic", "3dnow"], "model": "Opteron_G4", "arch": "x86_64", "topology": {"cores": 2, "threads": 1, "sockets": 4}} got = jsonutils.loads(conn.get_cpu_info()) self.assertEqual(want, got) def test_get_pcidev_info(self): def fake_nodeDeviceLookupByName(name): return FakeNodeDevice(_fake_NodeDevXml[name]) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.nodeDeviceLookupByName =\ fake_nodeDeviceLookupByName conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) actualvf = conn._get_pcidev_info("pci_0000_04_00_3") expect_vf = { "dev_id": "pci_0000_04_00_3", "address": "0000:04:00.3", "product_id": '1521', "vendor_id": '8086', "label": 'label_8086_1521', "dev_type": 'type-PF', } self.assertEqual(actualvf, expect_vf) actualvf = conn._get_pcidev_info("pci_0000_04_10_7") expect_vf = { "dev_id": "pci_0000_04_10_7", "address": "0000:04:10.7", "product_id": '1520', "vendor_id": '8086', "label": 'label_8086_1520', "dev_type": 'type-VF', "phys_function": '0000:04:00.3', } self.assertEqual(actualvf, expect_vf) def test_pci_device_assignable(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn.dev_filter, 'device_assignable', lambda x: True) fake_dev = {'dev_type': 'type-PF'} self.assertFalse(conn._pci_device_assignable(fake_dev)) fake_dev = {'dev_type': 'type-VF'} self.assertTrue(conn._pci_device_assignable(fake_dev)) fake_dev = {'dev_type': 'type-PCI'} self.assertTrue(conn._pci_device_assignable(fake_dev)) def test_get_pci_passthrough_devices(self): def fakelistDevices(caps, fakeargs=0): return ['pci_0000_04_00_3', 'pci_0000_04_10_7'] self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.listDevices = fakelistDevices def fake_nodeDeviceLookupByName(name): return FakeNodeDevice(_fake_NodeDevXml[name]) libvirt_driver.LibvirtDriver._conn.nodeDeviceLookupByName =\ fake_nodeDeviceLookupByName conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn.dev_filter, 'device_assignable', lambda x: x) actjson = conn.get_pci_passthrough_devices() expectvfs = [ { "dev_id": "pci_0000_04_00_3", "address": "0000:04:10.3", "product_id": '1521', "vendor_id": '8086', "dev_type": 'type-PF', "phys_function": None}, { "dev_id": "pci_0000_04_10_7", "domain": 0, "address": "0000:04:10.7", "product_id": '1520', "vendor_id": '8086', "dev_type": 'type-VF', "phys_function": [('0x0000', '0x04', '0x00', '0x3')], } ] actctualvfs = jsonutils.loads(actjson) for key in actctualvfs[0].keys(): if key not in ['phys_function', 'virt_functions', 'label']: self.assertEqual(actctualvfs[0][key], expectvfs[1][key]) def test_diagnostic_vcpus_exception(self): xml = """ """ class DiagFakeDomain(FakeVirtDomain): def __init__(self): super(DiagFakeDomain, self).__init__(fake_xml=xml) def vcpus(self): raise libvirt.libvirtError('vcpus missing') def blockStats(self, path): return (169L, 688640L, 0L, 0L, -1L) def interfaceStats(self, path): return (4408L, 82L, 0L, 0L, 0L, 0L, 0L, 0L) def memoryStats(self): return {'actual': 220160L, 'rss': 200164L} def maxMemory(self): return 280160L def fake_lookup_name(name): return DiagFakeDomain() self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) actual = conn.get_diagnostics({"name": "testvirt"}) expect = {'vda_read': 688640L, 'vda_read_req': 169L, 'vda_write': 0L, 'vda_write_req': 0L, 'vda_errors': -1L, 'vdb_read': 688640L, 'vdb_read_req': 169L, 'vdb_write': 0L, 'vdb_write_req': 0L, 'vdb_errors': -1L, 'memory': 280160L, 'memory-actual': 220160L, 'memory-rss': 200164L, 'vnet0_rx': 4408L, 'vnet0_rx_drop': 0L, 'vnet0_rx_errors': 0L, 'vnet0_rx_packets': 82L, 'vnet0_tx': 0L, 'vnet0_tx_drop': 0L, 'vnet0_tx_errors': 0L, 'vnet0_tx_packets': 0L, } self.assertEqual(actual, expect) def test_diagnostic_blockstats_exception(self): xml = """ """ class DiagFakeDomain(FakeVirtDomain): def __init__(self): super(DiagFakeDomain, self).__init__(fake_xml=xml) def vcpus(self): return ([(0, 1, 15340000000L, 0), (1, 1, 1640000000L, 0), (2, 1, 3040000000L, 0), (3, 1, 1420000000L, 0)], [(True, False), (True, False), (True, False), (True, False)]) def blockStats(self, path): raise libvirt.libvirtError('blockStats missing') def interfaceStats(self, path): return (4408L, 82L, 0L, 0L, 0L, 0L, 0L, 0L) def memoryStats(self): return {'actual': 220160L, 'rss': 200164L} def maxMemory(self): return 280160L def fake_lookup_name(name): return DiagFakeDomain() self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) actual = conn.get_diagnostics({"name": "testvirt"}) expect = {'cpu0_time': 15340000000L, 'cpu1_time': 1640000000L, 'cpu2_time': 3040000000L, 'cpu3_time': 1420000000L, 'memory': 280160L, 'memory-actual': 220160L, 'memory-rss': 200164L, 'vnet0_rx': 4408L, 'vnet0_rx_drop': 0L, 'vnet0_rx_errors': 0L, 'vnet0_rx_packets': 82L, 'vnet0_tx': 0L, 'vnet0_tx_drop': 0L, 'vnet0_tx_errors': 0L, 'vnet0_tx_packets': 0L, } self.assertEqual(actual, expect) def test_diagnostic_interfacestats_exception(self): xml = """ """ class DiagFakeDomain(FakeVirtDomain): def __init__(self): super(DiagFakeDomain, self).__init__(fake_xml=xml) def vcpus(self): return ([(0, 1, 15340000000L, 0), (1, 1, 1640000000L, 0), (2, 1, 3040000000L, 0), (3, 1, 1420000000L, 0)], [(True, False), (True, False), (True, False), (True, False)]) def blockStats(self, path): return (169L, 688640L, 0L, 0L, -1L) def interfaceStats(self, path): raise libvirt.libvirtError('interfaceStat missing') def memoryStats(self): return {'actual': 220160L, 'rss': 200164L} def maxMemory(self): return 280160L def fake_lookup_name(name): return DiagFakeDomain() self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) actual = conn.get_diagnostics({"name": "testvirt"}) expect = {'cpu0_time': 15340000000L, 'cpu1_time': 1640000000L, 'cpu2_time': 3040000000L, 'cpu3_time': 1420000000L, 'vda_read': 688640L, 'vda_read_req': 169L, 'vda_write': 0L, 'vda_write_req': 0L, 'vda_errors': -1L, 'vdb_read': 688640L, 'vdb_read_req': 169L, 'vdb_write': 0L, 'vdb_write_req': 0L, 'vdb_errors': -1L, 'memory': 280160L, 'memory-actual': 220160L, 'memory-rss': 200164L, } self.assertEqual(actual, expect) def test_diagnostic_memorystats_exception(self): xml = """ """ class DiagFakeDomain(FakeVirtDomain): def __init__(self): super(DiagFakeDomain, self).__init__(fake_xml=xml) def vcpus(self): return ([(0, 1, 15340000000L, 0), (1, 1, 1640000000L, 0), (2, 1, 3040000000L, 0), (3, 1, 1420000000L, 0)], [(True, False), (True, False), (True, False), (True, False)]) def blockStats(self, path): return (169L, 688640L, 0L, 0L, -1L) def interfaceStats(self, path): return (4408L, 82L, 0L, 0L, 0L, 0L, 0L, 0L) def memoryStats(self): raise libvirt.libvirtError('memoryStats missing') def maxMemory(self): return 280160L def fake_lookup_name(name): return DiagFakeDomain() self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) actual = conn.get_diagnostics({"name": "testvirt"}) expect = {'cpu0_time': 15340000000L, 'cpu1_time': 1640000000L, 'cpu2_time': 3040000000L, 'cpu3_time': 1420000000L, 'vda_read': 688640L, 'vda_read_req': 169L, 'vda_write': 0L, 'vda_write_req': 0L, 'vda_errors': -1L, 'vdb_read': 688640L, 'vdb_read_req': 169L, 'vdb_write': 0L, 'vdb_write_req': 0L, 'vdb_errors': -1L, 'memory': 280160L, 'vnet0_rx': 4408L, 'vnet0_rx_drop': 0L, 'vnet0_rx_errors': 0L, 'vnet0_rx_packets': 82L, 'vnet0_tx': 0L, 'vnet0_tx_drop': 0L, 'vnet0_tx_errors': 0L, 'vnet0_tx_packets': 0L, } self.assertEqual(actual, expect) def test_diagnostic_full(self): xml = """ """ class DiagFakeDomain(FakeVirtDomain): def __init__(self): super(DiagFakeDomain, self).__init__(fake_xml=xml) def vcpus(self): return ([(0, 1, 15340000000L, 0), (1, 1, 1640000000L, 0), (2, 1, 3040000000L, 0), (3, 1, 1420000000L, 0)], [(True, False), (True, False), (True, False), (True, False)]) def blockStats(self, path): return (169L, 688640L, 0L, 0L, -1L) def interfaceStats(self, path): return (4408L, 82L, 0L, 0L, 0L, 0L, 0L, 0L) def memoryStats(self): return {'actual': 220160L, 'rss': 200164L} def maxMemory(self): return 280160L def fake_lookup_name(name): return DiagFakeDomain() self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) actual = conn.get_diagnostics({"name": "testvirt"}) expect = {'cpu0_time': 15340000000L, 'cpu1_time': 1640000000L, 'cpu2_time': 3040000000L, 'cpu3_time': 1420000000L, 'vda_read': 688640L, 'vda_read_req': 169L, 'vda_write': 0L, 'vda_write_req': 0L, 'vda_errors': -1L, 'vdb_read': 688640L, 'vdb_read_req': 169L, 'vdb_write': 0L, 'vdb_write_req': 0L, 'vdb_errors': -1L, 'memory': 280160L, 'memory-actual': 220160L, 'memory-rss': 200164L, 'vnet0_rx': 4408L, 'vnet0_rx_drop': 0L, 'vnet0_rx_errors': 0L, 'vnet0_rx_packets': 82L, 'vnet0_tx': 0L, 'vnet0_tx_drop': 0L, 'vnet0_tx_errors': 0L, 'vnet0_tx_packets': 0L, } self.assertEqual(actual, expect) def test_failing_vcpu_count(self): """Domain can fail to return the vcpu description in case it's just starting up or shutting down. Make sure None is handled gracefully. """ class DiagFakeDomain(object): def __init__(self, vcpus): self._vcpus = vcpus def vcpus(self): if self._vcpus is None: raise libvirt.libvirtError("fake-error") else: return ([1] * self._vcpus, [True] * self._vcpus) driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) conn = driver._conn self.mox.StubOutWithMock(driver, 'list_instance_ids') conn.lookupByID = self.mox.CreateMockAnything() driver.list_instance_ids().AndReturn([1, 2]) conn.lookupByID(1).AndReturn(DiagFakeDomain(None)) conn.lookupByID(2).AndReturn(DiagFakeDomain(5)) self.mox.ReplayAll() self.assertEqual(5, driver.get_vcpu_used()) def test_failing_vcpu_count_none(self): """Domain will return zero if the current number of vcpus used is None. This is in case of VM state starting up or shutting down. None type returned is counted as zero. """ class DiagFakeDomain(object): def __init__(self): pass def vcpus(self): return None driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) conn = driver._conn self.mox.StubOutWithMock(driver, 'list_instance_ids') conn.lookupByID = self.mox.CreateMockAnything() driver.list_instance_ids().AndReturn([1]) conn.lookupByID(1).AndReturn(DiagFakeDomain()) self.mox.ReplayAll() self.assertEqual(0, driver.get_vcpu_used()) def test_get_instance_capabilities(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) def get_host_capabilities_stub(self): caps = vconfig.LibvirtConfigCaps() guest = vconfig.LibvirtConfigGuest() guest.ostype = 'hvm' guest.arch = 'x86_64' guest.domtype = ['kvm', 'qemu'] caps.guests.append(guest) guest = vconfig.LibvirtConfigGuest() guest.ostype = 'hvm' guest.arch = 'i686' guest.domtype = ['kvm'] caps.guests.append(guest) return caps self.stubs.Set(libvirt_driver.LibvirtDriver, 'get_host_capabilities', get_host_capabilities_stub) want = [('x86_64', 'kvm', 'hvm'), ('x86_64', 'qemu', 'hvm'), ('i686', 'kvm', 'hvm')] got = conn.get_instance_capabilities() self.assertEqual(want, got) def test_event_dispatch(self): # Validate that the libvirt self-pipe for forwarding # events between threads is working sanely conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) got_events = [] def handler(event): got_events.append(event) conn.register_event_listener(handler) conn._init_events_pipe() event1 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_STARTED) event2 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_PAUSED) conn._queue_event(event1) conn._queue_event(event2) conn._dispatch_events() want_events = [event1, event2] self.assertEqual(want_events, got_events) event3 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_RESUMED) event4 = virtevent.LifecycleEvent( "cef19ce0-0ca2-11df-855d-b19fbce37686", virtevent.EVENT_LIFECYCLE_STOPPED) conn._queue_event(event3) conn._queue_event(event4) conn._dispatch_events() want_events = [event1, event2, event3, event4] self.assertEqual(want_events, got_events) def test_event_lifecycle(self): # Validate that libvirt events are correctly translated # to Nova events conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) got_events = [] def handler(event): got_events.append(event) conn.register_event_listener(handler) conn._init_events_pipe() fake_dom_xml = """ cef19ce0-0ca2-11df-855d-b19fbce37686 """ dom = FakeVirtDomain(fake_dom_xml, "cef19ce0-0ca2-11df-855d-b19fbce37686") conn._event_lifecycle_callback(conn._conn, dom, libvirt.VIR_DOMAIN_EVENT_STOPPED, 0, conn) conn._dispatch_events() self.assertEqual(len(got_events), 1) self.assertIsInstance(got_events[0], virtevent.LifecycleEvent) self.assertEqual(got_events[0].uuid, "cef19ce0-0ca2-11df-855d-b19fbce37686") self.assertEqual(got_events[0].transition, virtevent.EVENT_LIFECYCLE_STOPPED) def test_set_cache_mode(self): self.flags(disk_cachemodes=['file=directsync'], group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) fake_conf = FakeConfigGuestDisk() fake_conf.source_type = 'file' conn.set_cache_mode(fake_conf) self.assertEqual(fake_conf.driver_cache, 'directsync') def test_set_cache_mode_invalid_mode(self): self.flags(disk_cachemodes=['file=FAKE'], group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) fake_conf = FakeConfigGuestDisk() fake_conf.source_type = 'file' conn.set_cache_mode(fake_conf) self.assertIsNone(fake_conf.driver_cache) def test_set_cache_mode_invalid_object(self): self.flags(disk_cachemodes=['file=directsync'], group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) fake_conf = FakeConfigGuest() fake_conf.driver_cache = 'fake' conn.set_cache_mode(fake_conf) self.assertEqual(fake_conf.driver_cache, 'fake') def _test_shared_storage_detection(self, is_same): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.mox.StubOutWithMock(conn, 'get_host_ip_addr') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(os, 'unlink') conn.get_host_ip_addr().AndReturn('bar') utils.execute('ssh', 'foo', 'touch', mox.IgnoreArg()) os.path.exists(mox.IgnoreArg()).AndReturn(is_same) if is_same: os.unlink(mox.IgnoreArg()) else: utils.execute('ssh', 'foo', 'rm', mox.IgnoreArg()) self.mox.ReplayAll() return conn._is_storage_shared_with('foo', '/path') def test_shared_storage_detection_same_host(self): self.assertTrue(self._test_shared_storage_detection(True)) def test_shared_storage_detection_different_host(self): self.assertFalse(self._test_shared_storage_detection(False)) def test_shared_storage_detection_easy(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.mox.StubOutWithMock(conn, 'get_host_ip_addr') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(os, 'unlink') conn.get_host_ip_addr().AndReturn('foo') self.mox.ReplayAll() self.assertTrue(conn._is_storage_shared_with('foo', '/path')) def test_create_domain_define_xml_fails(self): """Tests that the xml is logged when defining the domain fails.""" fake_xml = "this is a test" def fake_defineXML(xml): self.assertEqual(fake_xml, xml) raise libvirt.libvirtError('virDomainDefineXML() failed') self.log_error_called = False def fake_error(msg): self.log_error_called = True self.assertIn(fake_xml, msg) self.stubs.Set(nova.virt.libvirt.driver.LOG, 'error', fake_error) self.create_fake_libvirt_mock(defineXML=fake_defineXML) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.assertRaises(libvirt.libvirtError, conn._create_domain, fake_xml) self.assertTrue(self.log_error_called) def test_create_domain_with_flags_fails(self): """Tests that the xml is logged when creating the domain with flags fails """ fake_xml = "this is a test" fake_domain = FakeVirtDomain(fake_xml) def fake_createWithFlags(launch_flags): raise libvirt.libvirtError('virDomainCreateWithFlags() failed') self.log_error_called = False def fake_error(msg): self.log_error_called = True self.assertIn(fake_xml, msg) self.stubs.Set(fake_domain, 'createWithFlags', fake_createWithFlags) self.stubs.Set(nova.virt.libvirt.driver.LOG, 'error', fake_error) self.create_fake_libvirt_mock() self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.assertRaises(libvirt.libvirtError, conn._create_domain, domain=fake_domain) self.assertTrue(self.log_error_called) def test_create_domain_enable_hairpin_fails(self): """Tests that the xml is logged when enabling hairpin mode for the domain fails. """ utils.reset_is_neutron() fake_xml = "this is a test" fake_domain = FakeVirtDomain(fake_xml) def fake_enable_hairpin(launch_flags): raise processutils.ProcessExecutionError('error') self.log_error_called = False def fake_error(msg): self.log_error_called = True self.assertIn(fake_xml, msg) self.stubs.Set(nova.virt.libvirt.driver.LOG, 'error', fake_error) self.create_fake_libvirt_mock() self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.stubs.Set(conn, '_enable_hairpin', fake_enable_hairpin) self.assertRaises(processutils.ProcessExecutionError, conn._create_domain, domain=fake_domain, power_on=False) self.assertTrue(self.log_error_called) def test_get_vnc_console(self): instance = self.create_instance_obj(self.context) dummyxml = ("instance-0000000a" "" "" "") vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "XMLDesc") vdmock.XMLDesc(0).AndReturn(dummyxml) def fake_lookup(instance_name): if instance_name == instance['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) vnc_dict = conn.get_vnc_console(self.context, instance) self.assertEqual(vnc_dict['port'], '5900') def test_get_vnc_console_unavailable(self): instance = self.create_instance_obj(self.context) dummyxml = ("instance-0000000a" "") vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "XMLDesc") vdmock.XMLDesc(0).AndReturn(dummyxml) def fake_lookup(instance_name): if instance_name == instance['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.ConsoleTypeUnavailable, conn.get_vnc_console, self.context, instance) def test_get_spice_console(self): instance = self.create_instance_obj(self.context) dummyxml = ("instance-0000000a" "" "" "") vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "XMLDesc") vdmock.XMLDesc(0).AndReturn(dummyxml) def fake_lookup(instance_name): if instance_name == instance['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) spice_dict = conn.get_spice_console(self.context, instance) self.assertEqual(spice_dict['port'], '5950') def test_get_spice_console_unavailable(self): instance = self.create_instance_obj(self.context) dummyxml = ("instance-0000000a" "") vdmock = self.mox.CreateMock(libvirt.virDomain) self.mox.StubOutWithMock(vdmock, "XMLDesc") vdmock.XMLDesc(0).AndReturn(dummyxml) def fake_lookup(instance_name): if instance_name == instance['name']: return vdmock self.create_fake_libvirt_mock(lookupByName=fake_lookup) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertRaises(exception.ConsoleTypeUnavailable, conn.get_spice_console, self.context, instance) def _test_attach_detach_interface_get_config(self, method_name): """Tests that the get_config() method is properly called in attach_interface() and detach_interface(). method_name: either \"attach_interface\" or \"detach_interface\" depending on the method to test. """ self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup test_instance = copy.deepcopy(self.test_instance) test_instance['name'] = "test" network_info = _fake_network_info(self.stubs, 1) conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) if method_name == "attach_interface": fake_image_meta = {'id': test_instance['image_ref']} elif method_name == "detach_interface": fake_image_meta = None else: raise ValueError("Unhandled method %" % method_name) fake_flavor = flavor_obj.Flavor.get_by_id( self.context, test_instance['instance_type_id']) expected = conn.vif_driver.get_config(test_instance, network_info[0], fake_image_meta, fake_flavor) self.mox.StubOutWithMock(conn.vif_driver, 'get_config') conn.vif_driver.get_config(test_instance, network_info[0], fake_image_meta, mox.IsA(flavor_obj.Flavor)).\ AndReturn(expected) self.mox.ReplayAll() if method_name == "attach_interface": conn.attach_interface(test_instance, fake_image_meta, network_info[0]) elif method_name == "detach_interface": conn.detach_interface(test_instance, network_info[0]) else: raise ValueError("Unhandled method %" % method_name) def test_attach_interface_get_config(self): """Tests that the get_config() method is properly called in attach_interface(). """ self._test_attach_detach_interface_get_config("attach_interface") def test_detach_interface_get_config(self): """Tests that the get_config() method is properly called in detach_interface(). """ self._test_attach_detach_interface_get_config("detach_interface") def test_default_root_device_name(self): instance = {'uuid': 'fake_instance'} image_meta = {'id': 'fake'} root_bdm = {'source_type': 'image', 'detination_type': 'volume', 'image_id': 'fake_id'} self.flags(virt_type='fake_libvirt_type', group='libvirt') self.mox.StubOutWithMock(blockinfo, 'get_disk_bus_for_device_type') self.mox.StubOutWithMock(blockinfo, 'get_root_info') blockinfo.get_disk_bus_for_device_type('fake_libvirt_type', image_meta, 'disk').InAnyOrder().\ AndReturn('virtio') blockinfo.get_disk_bus_for_device_type('fake_libvirt_type', image_meta, 'cdrom').InAnyOrder().\ AndReturn('ide') blockinfo.get_root_info('fake_libvirt_type', image_meta, root_bdm, 'virtio', 'ide').AndReturn({'dev': 'vda'}) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.assertEqual(conn.default_root_device_name(instance, image_meta, root_bdm), '/dev/vda') def test_default_device_names_for_instance(self): instance = {'uuid': 'fake_instance'} root_device_name = '/dev/vda' ephemerals = [{'device_name': 'vdb'}] swap = [{'device_name': 'vdc'}] block_device_mapping = [{'device_name': 'vdc'}] self.flags(virt_type='fake_libvirt_type', group='libvirt') self.mox.StubOutWithMock(blockinfo, 'default_device_names') blockinfo.default_device_names('fake_libvirt_type', mox.IgnoreArg(), instance, root_device_name, ephemerals, swap, block_device_mapping) self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn.default_device_names_for_instance(instance, root_device_name, ephemerals, swap, block_device_mapping) def test_hypervisor_hostname_caching(self): # Make sure that the first hostname is always returned class FakeConn(object): def getHostname(self): pass def getLibVersion(self): return 99999 conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) conn._wrapped_conn = FakeConn() self.mox.StubOutWithMock(conn._wrapped_conn, 'getHostname') conn._conn.getHostname().AndReturn('foo') conn._conn.getHostname().AndReturn('bar') self.mox.ReplayAll() self.assertEqual('foo', conn.get_hypervisor_hostname()) self.assertEqual('foo', conn.get_hypervisor_hostname()) def test_get_connection_serial(self): def get_conn_currency(driver): driver._conn.getLibVersion() def connect_with_block(*a, **k): # enough to allow another connect to run eventlet.sleep(0) self.connect_calls += 1 return self.conn def fake_register(*a, **k): self.register_calls += 1 self.connect_calls = 0 self.register_calls = 0 self.stubs.Set(libvirt_driver.LibvirtDriver, '_connect', connect_with_block) driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.stubs.Set(self.conn, 'domainEventRegisterAny', fake_register) # call serially get_conn_currency(driver) get_conn_currency(driver) self.assertEqual(self.connect_calls, 1) self.assertEqual(self.register_calls, 1) def test_get_connection_concurrency(self): def get_conn_currency(driver): driver._conn.getLibVersion() def connect_with_block(*a, **k): # enough to allow another connect to run eventlet.sleep(0) self.connect_calls += 1 return self.conn def fake_register(*a, **k): self.register_calls += 1 self.connect_calls = 0 self.register_calls = 0 self.stubs.Set(libvirt_driver.LibvirtDriver, '_connect', connect_with_block) driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) self.stubs.Set(self.conn, 'domainEventRegisterAny', fake_register) # call concurrently thr1 = eventlet.spawn(get_conn_currency, driver=driver) thr2 = eventlet.spawn(get_conn_currency, driver=driver) # let threads run eventlet.sleep(0) thr1.wait() thr2.wait() self.assertEqual(self.connect_calls, 1) self.assertEqual(self.register_calls, 1) def test_post_live_migration_at_destination_with_block_device_info(self): # Preparing mocks mock_domain = self.mox.CreateMock(libvirt.virDomain) self.resultXML = None def fake_none(*args, **kwargs): return def fake_getLibVersion(): return 9007 def fake_getCapabilities(): return """ cef19ce0-0ca2-11df-855d-b19fbce37686 x86_64 Penryn Intel """ def fake_to_xml(context, instance, network_info, disk_info, image_meta=None, rescue=None, block_device_info=None, write_to_disk=False): conf = conn.get_guest_config(instance, network_info, image_meta, disk_info, rescue, block_device_info) self.resultXML = conf.to_xml() return self.resultXML def fake_lookup_name(instance_name): return mock_domain def fake_defineXML(xml): return def fake_baselineCPU(cpu, flag): return """ Westmere Intel """ network_info = _fake_network_info(self.stubs, 1) self.create_fake_libvirt_mock(getLibVersion=fake_getLibVersion, getCapabilities=fake_getCapabilities, getVersion=lambda: 1005001) instance_ref = self.test_instance instance_ref['image_ref'] = 123456 # we send an int to test sha1 call instance_type = db.flavor_get(self.context, instance_ref['instance_type_id']) sys_meta = flavors.save_flavor_info({}, instance_type) instance_ref['system_metadata'] = sys_meta instance = db.instance_create(self.context, instance_ref) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] libvirt_driver.LibvirtDriver._conn.getCapabilities = \ fake_getCapabilities libvirt_driver.LibvirtDriver._conn.getVersion = lambda: 1005001 libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name libvirt_driver.LibvirtDriver._conn.defineXML = fake_defineXML libvirt_driver.LibvirtDriver._conn.baselineCPU = fake_baselineCPU self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.stubs.Set(conn, 'to_xml', fake_to_xml) self.stubs.Set(conn, '_lookup_by_name', fake_lookup_name) block_device_info = {'block_device_mapping': [ {'guest_format': None, 'boot_index': 0, 'mount_device': '/dev/vda', 'connection_info': {'driver_volume_type': 'iscsi'}, 'disk_bus': 'virtio', 'device_type': 'disk', 'delete_on_termination': False} ]} conn.post_live_migration_at_destination(self.context, instance, network_info, True, block_device_info=block_device_info) self.assertTrue('fake' in self.resultXML) def test_create_without_pause(self): self.flags(virt_type='lxc', group='libvirt') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instance = instance_obj.Instance(id=1, uuid='fake-uuid') with contextlib.nested( mock.patch.object(conn, 'plug_vifs'), mock.patch.object(conn, 'firewall_driver'), mock.patch.object(conn, '_create_domain'), mock.patch.object(conn, 'cleanup')) as ( cleanup, firewall_driver, create, plug_vifs): domain = conn._create_domain_and_network(self.context, 'xml', instance, None) self.assertEqual(0, create.call_args_list[0][1]['launch_flags']) self.assertEqual(0, domain.resume.call_count) def _test_create_with_network_events(self, neutron_failure=None): self.flags(vif_driver="nova.tests.fake_network.FakeVIFDriver", group='libvirt') generated_events = [] def wait_timeout(): event = mock.MagicMock() if neutron_failure == 'timeout': raise eventlet.timeout.Timeout() elif neutron_failure == 'error': event.status = 'failed' else: event.status = 'completed' return event def fake_prepare(instance, event_name): m = mock.MagicMock() m.instance = instance m.event_name = event_name m.wait.side_effect = wait_timeout generated_events.append(m) return m virtapi = manager.ComputeVirtAPI(mock.MagicMock()) prepare = virtapi._compute.instance_events.prepare_for_instance_event prepare.side_effect = fake_prepare conn = libvirt_driver.LibvirtDriver(virtapi, False) instance = instance_obj.Instance(id=1, uuid='fake-uuid') vifs = [{'id': 'vif1', 'active': False}, {'id': 'vif2', 'active': False}] @mock.patch.object(conn, 'plug_vifs') @mock.patch.object(conn, 'firewall_driver') @mock.patch.object(conn, '_create_domain') @mock.patch.object(conn, 'cleanup') def test_create(cleanup, create, fw_driver, plug_vifs): domain = conn._create_domain_and_network(self.context, 'xml', instance, vifs) plug_vifs.assert_called_with(instance, vifs) event = utils.is_neutron() and CONF.vif_plugging_timeout flag = event and libvirt.VIR_DOMAIN_START_PAUSED or 0 self.assertEqual(flag, create.call_args_list[0][1]['launch_flags']) if flag: domain.resume.assert_called_once_with() if neutron_failure and CONF.vif_plugging_is_fatal: cleanup.assert_called_once_with(self.context, instance, network_info=vifs, block_device_info=None) test_create() if utils.is_neutron() and CONF.vif_plugging_timeout: prepare.assert_has_calls([ mock.call(instance, 'network-vif-plugged-vif1'), mock.call(instance, 'network-vif-plugged-vif2')]) for event in generated_events: if neutron_failure and generated_events.index(event) != 0: self.assertEqual(0, event.call_count) elif (neutron_failure == 'error' and not CONF.vif_plugging_is_fatal): event.wait.assert_called_once_with() else: self.assertEqual(0, prepare.call_count) @mock.patch('nova.utils.is_neutron', return_value=True) def test_create_with_network_events_neutron(self, is_neutron): self._test_create_with_network_events() @mock.patch('nova.utils.is_neutron', return_value=True) def test_create_with_network_events_neutron_nowait(self, is_neutron): self.flags(vif_plugging_timeout=0) self._test_create_with_network_events() @mock.patch('nova.utils.is_neutron', return_value=True) def test_create_with_network_events_neutron_failed_nonfatal_timeout( self, is_neutron): self.flags(vif_plugging_is_fatal=False) self._test_create_with_network_events(neutron_failure='timeout') @mock.patch('nova.utils.is_neutron', return_value=True) def test_create_with_network_events_neutron_failed_fatal_timeout( self, is_neutron): self.assertRaises(exception.VirtualInterfaceCreateException, self._test_create_with_network_events, neutron_failure='timeout') @mock.patch('nova.utils.is_neutron', return_value=True) def test_create_with_network_events_neutron_failed_nonfatal_error( self, is_neutron): self.flags(vif_plugging_is_fatal=False) self._test_create_with_network_events(neutron_failure='error') @mock.patch('nova.utils.is_neutron', return_value=True) def test_create_with_network_events_neutron_failed_fatal_error( self, is_neutron): self.assertRaises(exception.VirtualInterfaceCreateException, self._test_create_with_network_events, neutron_failure='error') @mock.patch('nova.utils.is_neutron', return_value=False) def test_create_with_network_events_non_neutron(self, is_neutron): self._test_create_with_network_events() def test_get_neutron_events(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) network_info = [network_model.VIF(id='1'), network_model.VIF(id='2', active=True)] events = conn._get_neutron_events(network_info) self.assertEqual([('network-vif-plugged', '1')], events) class HostStateTestCase(test.TestCase): cpu_info = ('{"vendor": "Intel", "model": "pentium", "arch": "i686", ' '"features": ["ssse3", "monitor", "pni", "sse2", "sse", ' '"fxsr", "clflush", "pse36", "pat", "cmov", "mca", "pge", ' '"mtrr", "sep", "apic"], ' '"topology": {"cores": "1", "threads": "1", "sockets": "1"}}') instance_caps = [("x86_64", "kvm", "hvm"), ("i686", "kvm", "hvm")] pci_devices = [{ "dev_id": "pci_0000_04_00_3", "address": "0000:04:10.3", "product_id": '1521', "vendor_id": '8086', "dev_type": 'type-PF', "phys_function": None}] class FakeConnection(object): """Fake connection object.""" def get_vcpu_total(self): return 1 def get_vcpu_used(self): return 0 def get_cpu_info(self): return HostStateTestCase.cpu_info def get_disk_over_committed_size_total(self): return 0 def get_local_gb_info(self): return {'total': 100, 'used': 20, 'free': 80} def get_memory_mb_total(self): return 497 def get_memory_mb_used(self): return 88 def get_hypervisor_type(self): return 'QEMU' def get_hypervisor_version(self): return 13091 def get_hypervisor_hostname(self): return 'compute1' def get_host_uptime(self): return ('10:01:16 up 1:36, 6 users, ' 'load average: 0.21, 0.16, 0.19') def get_disk_available_least(self): return 13091 def get_instance_capabilities(self): return HostStateTestCase.instance_caps def get_pci_passthrough_devices(self): return jsonutils.dumps(HostStateTestCase.pci_devices) def test_update_status(self): hs = libvirt_driver.HostState(self.FakeConnection()) stats = hs._stats self.assertEqual(stats["vcpus"], 1) self.assertEqual(stats["memory_mb"], 497) self.assertEqual(stats["local_gb"], 100) self.assertEqual(stats["vcpus_used"], 0) self.assertEqual(stats["memory_mb_used"], 88) self.assertEqual(stats["local_gb_used"], 20) self.assertEqual(stats["hypervisor_type"], 'QEMU') self.assertEqual(stats["hypervisor_version"], 13091) self.assertEqual(stats["hypervisor_hostname"], 'compute1') self.assertEqual(jsonutils.loads(stats["cpu_info"]), {"vendor": "Intel", "model": "pentium", "arch": "i686", "features": ["ssse3", "monitor", "pni", "sse2", "sse", "fxsr", "clflush", "pse36", "pat", "cmov", "mca", "pge", "mtrr", "sep", "apic"], "topology": {"cores": "1", "threads": "1", "sockets": "1"} }) self.assertEqual(stats["disk_available_least"], 80) self.assertEqual(jsonutils.loads(stats["pci_passthrough_devices"]), HostStateTestCase.pci_devices) class NWFilterFakes: def __init__(self): self.filters = {} def nwfilterLookupByName(self, name): if name in self.filters: return self.filters[name] raise libvirt.libvirtError('Filter Not Found') def filterDefineXMLMock(self, xml): class FakeNWFilterInternal: def __init__(self, parent, name, xml): self.name = name self.parent = parent self.xml = xml def undefine(self): del self.parent.filters[self.name] pass tree = etree.fromstring(xml) name = tree.get('name') if name not in self.filters: self.filters[name] = FakeNWFilterInternal(self, name, xml) return True class IptablesFirewallTestCase(test.TestCase): def setUp(self): super(IptablesFirewallTestCase, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) class FakeLibvirtDriver(object): def nwfilterDefineXML(*args, **kwargs): """setup_basic_rules in nwfilter calls this.""" pass self.fake_libvirt_connection = FakeLibvirtDriver() self.fw = firewall.IptablesFirewallDriver( fake.FakeVirtAPI(), get_connection=lambda: self.fake_libvirt_connection) in_rules = [ '# Generated by iptables-save v1.4.10 on Sat Feb 19 00:03:19 2011', '*nat', ':PREROUTING ACCEPT [1170:189210]', ':INPUT ACCEPT [844:71028]', ':OUTPUT ACCEPT [5149:405186]', ':POSTROUTING ACCEPT [5063:386098]', '# Completed on Tue Dec 18 15:50:25 2012', '# Generated by iptables-save v1.4.12 on Tue Dec 18 15:50:25 201;', '*mangle', ':PREROUTING ACCEPT [241:39722]', ':INPUT ACCEPT [230:39282]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [266:26558]', ':POSTROUTING ACCEPT [267:26590]', '-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM ' '--checksum-fill', 'COMMIT', '# Completed on Tue Dec 18 15:50:25 2012', '# Generated by iptables-save v1.4.4 on Mon Dec 6 11:54:13 2010', '*filter', ':INPUT ACCEPT [969615:281627771]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [915599:63811649]', ':nova-block-ipv4 - [0:0]', '[0:0] -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT ', '[0:0] -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED' ',ESTABLISHED -j ACCEPT ', '[0:0] -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT ', '[0:0] -A FORWARD -i virbr0 -o virbr0 -j ACCEPT ', '[0:0] -A FORWARD -o virbr0 -j REJECT ' '--reject-with icmp-port-unreachable ', '[0:0] -A FORWARD -i virbr0 -j REJECT ' '--reject-with icmp-port-unreachable ', 'COMMIT', '# Completed on Mon Dec 6 11:54:13 2010', ] in6_filter_rules = [ '# Generated by ip6tables-save v1.4.4 on Tue Jan 18 23:47:56 2011', '*filter', ':INPUT ACCEPT [349155:75810423]', ':FORWARD ACCEPT [0:0]', ':OUTPUT ACCEPT [349256:75777230]', 'COMMIT', '# Completed on Tue Jan 18 23:47:56 2011', ] def _create_instance_ref(self): return db.instance_create(self.context, {'user_id': 'fake', 'project_id': 'fake', 'instance_type_id': 1}) def test_static_filters(self): instance_ref = self._create_instance_ref() src_instance_ref = self._create_instance_ref() admin_ctxt = context.get_admin_context() secgroup = db.security_group_create(admin_ctxt, {'user_id': 'fake', 'project_id': 'fake', 'name': 'testgroup', 'description': 'test group'}) src_secgroup = db.security_group_create(admin_ctxt, {'user_id': 'fake', 'project_id': 'fake', 'name': 'testsourcegroup', 'description': 'src group'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'icmp', 'from_port': -1, 'to_port': -1, 'cidr': '192.168.11.0/24'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'icmp', 'from_port': 8, 'to_port': -1, 'cidr': '192.168.11.0/24'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'tcp', 'from_port': 80, 'to_port': 81, 'cidr': '192.168.10.0/24'}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'protocol': 'tcp', 'from_port': 80, 'to_port': 81, 'group_id': src_secgroup['id']}) db.security_group_rule_create(admin_ctxt, {'parent_group_id': secgroup['id'], 'group_id': src_secgroup['id']}) db.instance_add_security_group(admin_ctxt, instance_ref['uuid'], secgroup['id']) db.instance_add_security_group(admin_ctxt, src_instance_ref['uuid'], src_secgroup['id']) instance_ref = db.instance_get(admin_ctxt, instance_ref['id']) src_instance_ref = db.instance_get(admin_ctxt, src_instance_ref['id']) def fake_iptables_execute(*cmd, **kwargs): process_input = kwargs.get('process_input', None) if cmd == ('ip6tables-save', '-c'): return '\n'.join(self.in6_filter_rules), None if cmd == ('iptables-save', '-c'): return '\n'.join(self.in_rules), None if cmd == ('iptables-restore', '-c'): lines = process_input.split('\n') if '*filter' in lines: self.out_rules = lines return '', '' if cmd == ('ip6tables-restore', '-c',): lines = process_input.split('\n') if '*filter' in lines: self.out6_rules = lines return '', '' network_model = _fake_network_info(self.stubs, 1) from nova.network import linux_net linux_net.iptables_manager.execute = fake_iptables_execute from nova.compute import utils as compute_utils self.stubs.Set(compute_utils, 'get_nw_info_for_instance', lambda instance: network_model) self.fw.prepare_instance_filter(instance_ref, network_model) self.fw.apply_instance_filter(instance_ref, network_model) in_rules = filter(lambda l: not l.startswith('#'), self.in_rules) for rule in in_rules: if 'nova' not in rule: self.assertTrue(rule in self.out_rules, 'Rule went missing: %s' % rule) instance_chain = None for rule in self.out_rules: # This is pretty crude, but it'll do for now # last two octets change if re.search('-d 192.168.[0-9]{1,3}.[0-9]{1,3} -j', rule): instance_chain = rule.split(' ')[-1] break self.assertTrue(instance_chain, "The instance chain wasn't added") security_group_chain = None for rule in self.out_rules: # This is pretty crude, but it'll do for now if '-A %s -j' % instance_chain in rule: security_group_chain = rule.split(' ')[-1] break self.assertTrue(security_group_chain, "The security group chain wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p icmp ' '-s 192.168.11.0/24') self.assertTrue(len(filter(regex.match, self.out_rules)) > 0, "ICMP acceptance rule wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p icmp -m icmp ' '--icmp-type 8 -s 192.168.11.0/24') self.assertTrue(len(filter(regex.match, self.out_rules)) > 0, "ICMP Echo Request acceptance rule wasn't added") for ip in network_model.fixed_ips(): if ip['version'] != 4: continue regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p tcp -m multiport ' '--dports 80:81 -s %s' % ip['address']) self.assertTrue(len(filter(regex.match, self.out_rules)) > 0, "TCP port 80/81 acceptance rule wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -s ' '%s' % ip['address']) self.assertTrue(len(filter(regex.match, self.out_rules)) > 0, "Protocol/port-less acceptance rule wasn't added") regex = re.compile('\[0\:0\] -A .* -j ACCEPT -p tcp ' '-m multiport --dports 80:81 -s 192.168.10.0/24') self.assertTrue(len(filter(regex.match, self.out_rules)) > 0, "TCP port 80/81 acceptance rule wasn't added") db.instance_destroy(admin_ctxt, instance_ref['uuid']) def test_filters_for_instance_with_ip_v6(self): self.flags(use_ipv6=True) network_info = _fake_network_info(self.stubs, 1) rulesv4, rulesv6 = self.fw._filters_for_instance("fake", network_info) self.assertEqual(len(rulesv4), 2) self.assertEqual(len(rulesv6), 1) def test_filters_for_instance_without_ip_v6(self): self.flags(use_ipv6=False) network_info = _fake_network_info(self.stubs, 1) rulesv4, rulesv6 = self.fw._filters_for_instance("fake", network_info) self.assertEqual(len(rulesv4), 2) self.assertEqual(len(rulesv6), 0) def test_multinic_iptables(self): ipv4_rules_per_addr = 1 ipv4_addr_per_network = 2 ipv6_rules_per_addr = 1 ipv6_addr_per_network = 1 networks_count = 5 instance_ref = self._create_instance_ref() network_info = _fake_network_info(self.stubs, networks_count, ipv4_addr_per_network) network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \ '1.1.1.1' ipv4_len = len(self.fw.iptables.ipv4['filter'].rules) ipv6_len = len(self.fw.iptables.ipv6['filter'].rules) inst_ipv4, inst_ipv6 = self.fw.instance_rules(instance_ref, network_info) self.fw.prepare_instance_filter(instance_ref, network_info) ipv4 = self.fw.iptables.ipv4['filter'].rules ipv6 = self.fw.iptables.ipv6['filter'].rules ipv4_network_rules = len(ipv4) - len(inst_ipv4) - ipv4_len ipv6_network_rules = len(ipv6) - len(inst_ipv6) - ipv6_len # Extra rules are for the DHCP request rules = (ipv4_rules_per_addr * ipv4_addr_per_network * networks_count) + 2 self.assertEqual(ipv4_network_rules, rules) self.assertEqual(ipv6_network_rules, ipv6_rules_per_addr * ipv6_addr_per_network * networks_count) def test_do_refresh_security_group_rules(self): instance_ref = self._create_instance_ref() self.mox.StubOutWithMock(self.fw, 'instance_rules') self.mox.StubOutWithMock(self.fw, 'add_filters_for_instance', use_mock_anything=True) self.fw.instance_rules(instance_ref, mox.IgnoreArg()).AndReturn((None, None)) self.fw.add_filters_for_instance(instance_ref, mox.IgnoreArg(), mox.IgnoreArg()) self.fw.instance_rules(instance_ref, mox.IgnoreArg()).AndReturn((None, None)) self.fw.add_filters_for_instance(instance_ref, mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() self.fw.prepare_instance_filter(instance_ref, mox.IgnoreArg()) self.fw.instances[instance_ref['id']] = instance_ref self.fw.do_refresh_security_group_rules("fake") def test_unfilter_instance_undefines_nwfilter(self): admin_ctxt = context.get_admin_context() fakefilter = NWFilterFakes() _xml_mock = fakefilter.filterDefineXMLMock self.fw.nwfilter._conn.nwfilterDefineXML = _xml_mock _lookup_name = fakefilter.nwfilterLookupByName self.fw.nwfilter._conn.nwfilterLookupByName = _lookup_name instance_ref = self._create_instance_ref() network_info = _fake_network_info(self.stubs, 1) self.fw.setup_basic_filtering(instance_ref, network_info) self.fw.prepare_instance_filter(instance_ref, network_info) self.fw.apply_instance_filter(instance_ref, network_info) original_filter_count = len(fakefilter.filters) self.fw.unfilter_instance(instance_ref, network_info) # should undefine just the instance filter self.assertEqual(original_filter_count - len(fakefilter.filters), 1) db.instance_destroy(admin_ctxt, instance_ref['uuid']) def test_provider_firewall_rules(self): # setup basic instance data instance_ref = self._create_instance_ref() # FRAGILE: peeks at how the firewall names chains chain_name = 'inst-%s' % instance_ref['id'] # create a firewall via setup_basic_filtering like libvirt_conn.spawn # should have a chain with 0 rules network_info = _fake_network_info(self.stubs, 1) self.fw.setup_basic_filtering(instance_ref, network_info) self.assertIn('provider', self.fw.iptables.ipv4['filter'].chains) rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(0, len(rules)) admin_ctxt = context.get_admin_context() # add a rule and send the update message, check for 1 rule provider_fw0 = db.provider_fw_rule_create(admin_ctxt, {'protocol': 'tcp', 'cidr': '10.99.99.99/32', 'from_port': 1, 'to_port': 65535}) self.fw.refresh_provider_fw_rules() rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(1, len(rules)) # Add another, refresh, and make sure number of rules goes to two provider_fw1 = db.provider_fw_rule_create(admin_ctxt, {'protocol': 'udp', 'cidr': '10.99.99.99/32', 'from_port': 1, 'to_port': 65535}) self.fw.refresh_provider_fw_rules() rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(2, len(rules)) # create the instance filter and make sure it has a jump rule self.fw.prepare_instance_filter(instance_ref, network_info) self.fw.apply_instance_filter(instance_ref, network_info) inst_rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == chain_name] jump_rules = [rule for rule in inst_rules if '-j' in rule.rule] provjump_rules = [] # IptablesTable doesn't make rules unique internally for rule in jump_rules: if 'provider' in rule.rule and rule not in provjump_rules: provjump_rules.append(rule) self.assertEqual(1, len(provjump_rules)) # remove a rule from the db, cast to compute to refresh rule db.provider_fw_rule_destroy(admin_ctxt, provider_fw1['id']) self.fw.refresh_provider_fw_rules() rules = [rule for rule in self.fw.iptables.ipv4['filter'].rules if rule.chain == 'provider'] self.assertEqual(1, len(rules)) class NWFilterTestCase(test.TestCase): def setUp(self): super(NWFilterTestCase, self).setUp() class Mock(object): pass self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.fake_libvirt_connection = Mock() self.fw = firewall.NWFilterFirewall(fake.FakeVirtAPI(), lambda: self.fake_libvirt_connection) def test_cidr_rule_nwfilter_xml(self): cloud_controller = cloud.CloudController() cloud_controller.create_security_group(self.context, 'testgroup', 'test group description') cloud_controller.authorize_security_group_ingress(self.context, 'testgroup', from_port='80', to_port='81', ip_protocol='tcp', cidr_ip='0.0.0.0/0') security_group = db.security_group_get_by_name(self.context, 'fake', 'testgroup') self.teardown_security_group() def teardown_security_group(self): cloud_controller = cloud.CloudController() cloud_controller.delete_security_group(self.context, 'testgroup') def setup_and_return_security_group(self): cloud_controller = cloud.CloudController() cloud_controller.create_security_group(self.context, 'testgroup', 'test group description') cloud_controller.authorize_security_group_ingress(self.context, 'testgroup', from_port='80', to_port='81', ip_protocol='tcp', cidr_ip='0.0.0.0/0') return db.security_group_get_by_name(self.context, 'fake', 'testgroup') def _create_instance(self): return db.instance_create(self.context, {'user_id': 'fake', 'project_id': 'fake', 'instance_type_id': 1}) def test_creates_base_rule_first(self): # These come pre-defined by libvirt self.defined_filters = ['no-mac-spoofing', 'no-ip-spoofing', 'no-arp-spoofing', 'allow-dhcp-server'] self.recursive_depends = {} for f in self.defined_filters: self.recursive_depends[f] = [] def _filterDefineXMLMock(xml): dom = minidom.parseString(xml) name = dom.firstChild.getAttribute('name') self.recursive_depends[name] = [] for f in dom.getElementsByTagName('filterref'): ref = f.getAttribute('filter') self.assertTrue(ref in self.defined_filters, ('%s referenced filter that does ' + 'not yet exist: %s') % (name, ref)) dependencies = [ref] + self.recursive_depends[ref] self.recursive_depends[name] += dependencies self.defined_filters.append(name) return True self.fake_libvirt_connection.nwfilterDefineXML = _filterDefineXMLMock instance_ref = self._create_instance() inst_id = instance_ref['id'] inst_uuid = instance_ref['uuid'] def _ensure_all_called(mac, allow_dhcp): instance_filter = 'nova-instance-%s-%s' % (instance_ref['name'], mac.translate({ord(':'): None})) requiredlist = ['no-arp-spoofing', 'no-ip-spoofing', 'no-mac-spoofing'] required_not_list = [] if allow_dhcp: requiredlist.append('allow-dhcp-server') else: required_not_list.append('allow-dhcp-server') for required in requiredlist: self.assertTrue(required in self.recursive_depends[instance_filter], "Instance's filter does not include %s" % required) for required_not in required_not_list: self.assertFalse(required_not in self.recursive_depends[instance_filter], "Instance filter includes %s" % required_not) self.security_group = self.setup_and_return_security_group() db.instance_add_security_group(self.context, inst_uuid, self.security_group['id']) instance = db.instance_get(self.context, inst_id) network_info = _fake_network_info(self.stubs, 1) # since there is one (network_info) there is one vif # pass this vif's mac to _ensure_all_called() # to set the instance_filter properly mac = network_info[0]['address'] network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \ '1.1.1.1' self.fw.setup_basic_filtering(instance, network_info) allow_dhcp = True _ensure_all_called(mac, allow_dhcp) network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = None self.fw.setup_basic_filtering(instance, network_info) allow_dhcp = False _ensure_all_called(mac, allow_dhcp) db.instance_remove_security_group(self.context, inst_uuid, self.security_group['id']) self.teardown_security_group() db.instance_destroy(context.get_admin_context(), instance_ref['uuid']) def test_unfilter_instance_undefines_nwfilters(self): admin_ctxt = context.get_admin_context() fakefilter = NWFilterFakes() self.fw._conn.nwfilterDefineXML = fakefilter.filterDefineXMLMock self.fw._conn.nwfilterLookupByName = fakefilter.nwfilterLookupByName instance_ref = self._create_instance() inst_id = instance_ref['id'] inst_uuid = instance_ref['uuid'] self.security_group = self.setup_and_return_security_group() db.instance_add_security_group(self.context, inst_uuid, self.security_group['id']) instance = db.instance_get(self.context, inst_id) network_info = _fake_network_info(self.stubs, 1) self.fw.setup_basic_filtering(instance, network_info) original_filter_count = len(fakefilter.filters) self.fw.unfilter_instance(instance, network_info) self.assertEqual(original_filter_count - len(fakefilter.filters), 1) db.instance_destroy(admin_ctxt, instance_ref['uuid']) def test_nwfilter_parameters(self): admin_ctxt = context.get_admin_context() fakefilter = NWFilterFakes() self.fw._conn.nwfilterDefineXML = fakefilter.filterDefineXMLMock self.fw._conn.nwfilterLookupByName = fakefilter.nwfilterLookupByName instance_ref = self._create_instance() inst_id = instance_ref['id'] inst_uuid = instance_ref['uuid'] self.security_group = self.setup_and_return_security_group() db.instance_add_security_group(self.context, inst_uuid, self.security_group['id']) instance = db.instance_get(self.context, inst_id) network_info = _fake_network_info(self.stubs, 1) self.fw.setup_basic_filtering(instance, network_info) vif = network_info[0] nic_id = vif['address'].replace(':', '') instance_filter_name = self.fw._instance_filter_name(instance, nic_id) f = fakefilter.nwfilterLookupByName(instance_filter_name) tree = etree.fromstring(f.xml) for fref in tree.findall('filterref'): parameters = fref.findall('./parameter') for parameter in parameters: subnet_v4, subnet_v6 = vif['network']['subnets'] if parameter.get('name') == 'IP': self.assertTrue(_ipv4_like(parameter.get('value'), '192.168')) elif parameter.get('name') == 'DHCPSERVER': dhcp_server = subnet_v4.get('dhcp_server') self.assertEqual(parameter.get('value'), dhcp_server) elif parameter.get('name') == 'RASERVER': ra_server = subnet_v6['gateway']['address'] + "/128" self.assertEqual(parameter.get('value'), ra_server) elif parameter.get('name') == 'PROJNET': ipv4_cidr = subnet_v4['cidr'] net, mask = netutils.get_net_and_mask(ipv4_cidr) self.assertEqual(parameter.get('value'), net) elif parameter.get('name') == 'PROJMASK': ipv4_cidr = subnet_v4['cidr'] net, mask = netutils.get_net_and_mask(ipv4_cidr) self.assertEqual(parameter.get('value'), mask) elif parameter.get('name') == 'PROJNET6': ipv6_cidr = subnet_v6['cidr'] net, prefix = netutils.get_net_and_prefixlen(ipv6_cidr) self.assertEqual(parameter.get('value'), net) elif parameter.get('name') == 'PROJMASK6': ipv6_cidr = subnet_v6['cidr'] net, prefix = netutils.get_net_and_prefixlen(ipv6_cidr) self.assertEqual(parameter.get('value'), prefix) else: raise exception.InvalidParameterValue('unknown parameter ' 'in filter') db.instance_destroy(admin_ctxt, instance_ref['uuid']) class LibvirtUtilsTestCase(test.TestCase): def test_create_image(self): self.mox.StubOutWithMock(utils, 'execute') utils.execute('qemu-img', 'create', '-f', 'raw', '/some/path', '10G') utils.execute('qemu-img', 'create', '-f', 'qcow2', '/some/stuff', '1234567891234') # Start test self.mox.ReplayAll() libvirt_utils.create_image('raw', '/some/path', '10G') libvirt_utils.create_image('qcow2', '/some/stuff', '1234567891234') def test_create_cow_image(self): self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') rval = ('', '') os.path.exists('/some/path').AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', '/some/path').AndReturn(rval) utils.execute('qemu-img', 'create', '-f', 'qcow2', '-o', 'backing_file=/some/path', '/the/new/cow') # Start test self.mox.ReplayAll() libvirt_utils.create_cow_image('/some/path', '/the/new/cow') def test_pick_disk_driver_name(self): type_map = {'kvm': ([True, 'qemu'], [False, 'qemu'], [None, 'qemu']), 'qemu': ([True, 'qemu'], [False, 'qemu'], [None, 'qemu']), 'xen': ([True, 'phy'], [False, 'tap2'], [None, 'tap2']), 'uml': ([True, None], [False, None], [None, None]), 'lxc': ([True, None], [False, None], [None, None])} for (virt_type, checks) in type_map.iteritems(): if virt_type == "xen": version = 4001000 else: version = 1005001 self.flags(virt_type=virt_type, group='libvirt') for (is_block_dev, expected_result) in checks: result = libvirt_utils.pick_disk_driver_name(version, is_block_dev) self.assertEqual(result, expected_result) def test_pick_disk_driver_name_xen_4_0_0(self): self.flags(virt_type="xen", group='libvirt') result = libvirt_utils.pick_disk_driver_name(4000000, False) self.assertEqual(result, "tap") def test_get_disk_size(self): self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(utils, 'execute') os.path.exists('/some/path').AndReturn(True) utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', '/some/path').AndReturn(('''image: 00000001 file format: raw virtual size: 4.4M (4592640 bytes) disk size: 4.4M''', '')) # Start test self.mox.ReplayAll() self.assertEqual(disk.get_disk_size('/some/path'), 4592640) def test_copy_image(self): dst_fd, dst_path = tempfile.mkstemp() try: os.close(dst_fd) src_fd, src_path = tempfile.mkstemp() try: with os.fdopen(src_fd, 'w') as fp: fp.write('canary') libvirt_utils.copy_image(src_path, dst_path) with open(dst_path, 'r') as fp: self.assertEqual(fp.read(), 'canary') finally: os.unlink(src_path) finally: os.unlink(dst_path) def test_write_to_file(self): dst_fd, dst_path = tempfile.mkstemp() try: os.close(dst_fd) libvirt_utils.write_to_file(dst_path, 'hello') with open(dst_path, 'r') as fp: self.assertEqual(fp.read(), 'hello') finally: os.unlink(dst_path) def test_write_to_file_with_umask(self): dst_fd, dst_path = tempfile.mkstemp() try: os.close(dst_fd) os.unlink(dst_path) libvirt_utils.write_to_file(dst_path, 'hello', umask=0o277) with open(dst_path, 'r') as fp: self.assertEqual(fp.read(), 'hello') mode = os.stat(dst_path).st_mode self.assertEqual(mode & 0o277, 0) finally: os.unlink(dst_path) def test_chown(self): self.mox.StubOutWithMock(utils, 'execute') utils.execute('chown', 'soren', '/some/path', run_as_root=True) self.mox.ReplayAll() libvirt_utils.chown('/some/path', 'soren') def _do_test_extract_snapshot(self, dest_format='raw', out_format='raw'): self.mox.StubOutWithMock(utils, 'execute') utils.execute('qemu-img', 'convert', '-f', 'qcow2', '-O', out_format, '/path/to/disk/image', '/extracted/snap') # Start test self.mox.ReplayAll() libvirt_utils.extract_snapshot('/path/to/disk/image', 'qcow2', '/extracted/snap', dest_format) def test_extract_snapshot_raw(self): self._do_test_extract_snapshot() def test_extract_snapshot_iso(self): self._do_test_extract_snapshot(dest_format='iso') def test_extract_snapshot_qcow2(self): self._do_test_extract_snapshot(dest_format='qcow2', out_format='qcow2') def test_load_file(self): dst_fd, dst_path = tempfile.mkstemp() try: os.close(dst_fd) # We have a test for write_to_file. If that is sound, this suffices libvirt_utils.write_to_file(dst_path, 'hello') self.assertEqual(libvirt_utils.load_file(dst_path), 'hello') finally: os.unlink(dst_path) def test_file_open(self): dst_fd, dst_path = tempfile.mkstemp() try: os.close(dst_fd) # We have a test for write_to_file. If that is sound, this suffices libvirt_utils.write_to_file(dst_path, 'hello') with libvirt_utils.file_open(dst_path, 'r') as fp: self.assertEqual(fp.read(), 'hello') finally: os.unlink(dst_path) def test_get_fs_info(self): class FakeStatResult(object): def __init__(self): self.f_bsize = 4096 self.f_frsize = 4096 self.f_blocks = 2000 self.f_bfree = 1000 self.f_bavail = 900 self.f_files = 2000 self.f_ffree = 1000 self.f_favail = 900 self.f_flag = 4096 self.f_namemax = 255 self.path = None def fake_statvfs(path): self.path = path return FakeStatResult() self.stubs.Set(os, 'statvfs', fake_statvfs) fs_info = libvirt_utils.get_fs_info('/some/file/path') self.assertEqual('/some/file/path', self.path) self.assertEqual(8192000, fs_info['total']) self.assertEqual(3686400, fs_info['free']) self.assertEqual(4096000, fs_info['used']) def test_fetch_image(self): self.mox.StubOutWithMock(images, 'fetch_to_raw') context = 'opaque context' target = '/tmp/targetfile' image_id = '4' user_id = 'fake' project_id = 'fake' images.fetch_to_raw(context, image_id, target, user_id, project_id, max_size=0) self.mox.ReplayAll() libvirt_utils.fetch_image(context, target, image_id, user_id, project_id) def test_fetch_raw_image(self): def fake_execute(*cmd, **kwargs): self.executes.append(cmd) return None, None def fake_rename(old, new): self.executes.append(('mv', old, new)) def fake_unlink(path): self.executes.append(('rm', path)) def fake_rm_on_error(path, remove=None): self.executes.append(('rm', '-f', path)) def fake_qemu_img_info(path): class FakeImgInfo(object): pass file_format = path.split('.')[-1] if file_format == 'part': file_format = path.split('.')[-2] elif file_format == 'converted': file_format = 'raw' if 'backing' in path: backing_file = 'backing' else: backing_file = None if 'big' in path: virtual_size = 2 else: virtual_size = 1 FakeImgInfo.file_format = file_format FakeImgInfo.backing_file = backing_file FakeImgInfo.virtual_size = virtual_size return FakeImgInfo() self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(os, 'rename', fake_rename) self.stubs.Set(os, 'unlink', fake_unlink) self.stubs.Set(images, 'fetch', lambda *_, **__: None) self.stubs.Set(images, 'qemu_img_info', fake_qemu_img_info) self.stubs.Set(fileutils, 'delete_if_exists', fake_rm_on_error) # Since the remove param of fileutils.remove_path_on_error() # is initialized at load time, we must provide a wrapper # that explicitly resets it to our fake delete_if_exists() old_rm_path_on_error = fileutils.remove_path_on_error f = functools.partial(old_rm_path_on_error, remove=fake_rm_on_error) self.stubs.Set(fileutils, 'remove_path_on_error', f) context = 'opaque context' image_id = '4' user_id = 'fake' project_id = 'fake' target = 't.qcow2' self.executes = [] expected_commands = [('qemu-img', 'convert', '-O', 'raw', 't.qcow2.part', 't.qcow2.converted'), ('rm', 't.qcow2.part'), ('mv', 't.qcow2.converted', 't.qcow2')] images.fetch_to_raw(context, image_id, target, user_id, project_id, max_size=1) self.assertEqual(self.executes, expected_commands) target = 't.raw' self.executes = [] expected_commands = [('mv', 't.raw.part', 't.raw')] images.fetch_to_raw(context, image_id, target, user_id, project_id) self.assertEqual(self.executes, expected_commands) target = 'backing.qcow2' self.executes = [] expected_commands = [('rm', '-f', 'backing.qcow2.part')] self.assertRaises(exception.ImageUnacceptable, images.fetch_to_raw, context, image_id, target, user_id, project_id) self.assertEqual(self.executes, expected_commands) target = 'big.qcow2' self.executes = [] expected_commands = [('rm', '-f', 'big.qcow2.part')] self.assertRaises(exception.FlavorDiskTooSmall, images.fetch_to_raw, context, image_id, target, user_id, project_id, max_size=1) self.assertEqual(self.executes, expected_commands) del self.executes def test_get_disk_backing_file(self): with_actual_path = False def fake_execute(*args, **kwargs): if with_actual_path: return ("some: output\n" "backing file: /foo/bar/baz (actual path: /a/b/c)\n" "...: ...\n"), '' else: return ("some: output\n" "backing file: /foo/bar/baz\n" "...: ...\n"), '' def return_true(*args, **kwargs): return True self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(os.path, 'exists', return_true) out = libvirt_utils.get_disk_backing_file('') self.assertEqual(out, 'baz') with_actual_path = True out = libvirt_utils.get_disk_backing_file('') self.assertEqual(out, 'c') class LibvirtDriverTestCase(test.TestCase): """Test for nova.virt.libvirt.libvirt_driver.LibvirtDriver.""" def setUp(self): super(LibvirtDriverTestCase, self).setUp() self.libvirtconnection = libvirt_driver.LibvirtDriver( fake.FakeVirtAPI(), read_only=True) def _create_instance(self, params=None): """Create a test instance.""" if not params: params = {} sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor_by_name('m1.tiny')) inst = {} inst['image_ref'] = '1' inst['reservation_id'] = 'r-fakeres' inst['user_id'] = 'fake' inst['project_id'] = 'fake' type_id = flavors.get_flavor_by_name('m1.tiny')['id'] inst['instance_type_id'] = type_id inst['ami_launch_index'] = 0 inst['host'] = 'host1' inst['root_gb'] = 10 inst['ephemeral_gb'] = 20 inst['config_drive'] = True inst['kernel_id'] = 2 inst['ramdisk_id'] = 3 inst['key_data'] = 'ABCDEFG' inst['system_metadata'] = sys_meta inst.update(params) return db.instance_create(context.get_admin_context(), inst) def test_migrate_disk_and_power_off_exception(self): """Test for nova.virt.libvirt.libvirt_driver.LivirtConnection .migrate_disk_and_power_off. """ self.counter = 0 self.checked_shared_storage = False def fake_get_instance_disk_info(instance, xml=None, block_device_info=None): return '[]' def fake_destroy(instance): pass def fake_get_host_ip_addr(): return '10.0.0.1' def fake_execute(*args, **kwargs): self.counter += 1 if self.counter == 1: assert False, "intentional failure" def fake_os_path_exists(path): return True def fake_is_storage_shared(dest, inst_base): self.checked_shared_storage = True return False self.stubs.Set(self.libvirtconnection, 'get_instance_disk_info', fake_get_instance_disk_info) self.stubs.Set(self.libvirtconnection, '_destroy', fake_destroy) self.stubs.Set(self.libvirtconnection, 'get_host_ip_addr', fake_get_host_ip_addr) self.stubs.Set(self.libvirtconnection, '_is_storage_shared_with', fake_is_storage_shared) self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(os.path, 'exists', fake_os_path_exists) ins_ref = self._create_instance() flavor = {'root_gb': 10, 'ephemeral_gb': 20} self.assertRaises(AssertionError, self.libvirtconnection.migrate_disk_and_power_off, None, ins_ref, '10.0.0.2', flavor, None) def test_migrate_disk_and_power_off(self): """Test for nova.virt.libvirt.libvirt_driver.LivirtConnection .migrate_disk_and_power_off. """ disk_info = [{'type': 'qcow2', 'path': '/test/disk', 'virt_disk_size': '10737418240', 'backing_file': '/base/disk', 'disk_size': '83886080'}, {'type': 'raw', 'path': '/test/disk.local', 'virt_disk_size': '10737418240', 'backing_file': '/base/disk.local', 'disk_size': '83886080'}] disk_info_text = jsonutils.dumps(disk_info) def fake_get_instance_disk_info(instance, xml=None, block_device_info=None): return disk_info_text def fake_destroy(instance): pass def fake_get_host_ip_addr(): return '10.0.0.1' def fake_execute(*args, **kwargs): pass self.stubs.Set(self.libvirtconnection, 'get_instance_disk_info', fake_get_instance_disk_info) self.stubs.Set(self.libvirtconnection, '_destroy', fake_destroy) self.stubs.Set(self.libvirtconnection, 'get_host_ip_addr', fake_get_host_ip_addr) self.stubs.Set(utils, 'execute', fake_execute) ins_ref = self._create_instance() flavor = {'root_gb': 10, 'ephemeral_gb': 20} # dest is different host case out = self.libvirtconnection.migrate_disk_and_power_off( None, ins_ref, '10.0.0.2', flavor, None) self.assertEqual(out, disk_info_text) # dest is same host case out = self.libvirtconnection.migrate_disk_and_power_off( None, ins_ref, '10.0.0.1', flavor, None) self.assertEqual(out, disk_info_text) def test_migrate_disk_and_power_off_resize_error(self): instance = self._create_instance() flavor = {'root_gb': 5} self.assertRaises( exception.InstanceFaultRollback, self.libvirtconnection.migrate_disk_and_power_off, 'ctx', instance, '10.0.0.1', flavor, None) def test_wait_for_running(self): def fake_get_info(instance): if instance['name'] == "not_found": raise exception.InstanceNotFound(instance_id=instance['uuid']) elif instance['name'] == "running": return {'state': power_state.RUNNING} else: return {'state': power_state.SHUTDOWN} self.stubs.Set(self.libvirtconnection, 'get_info', fake_get_info) # instance not found case self.assertRaises(exception.InstanceNotFound, self.libvirtconnection._wait_for_running, {'name': 'not_found', 'uuid': 'not_found_uuid'}) # instance is running case self.assertRaises(loopingcall.LoopingCallDone, self.libvirtconnection._wait_for_running, {'name': 'running', 'uuid': 'running_uuid'}) # else case self.libvirtconnection._wait_for_running({'name': 'else', 'uuid': 'other_uuid'}) def _test_finish_migration(self, power_on): """Test for nova.virt.libvirt.libvirt_driver.LivirtConnection .finish_migration. """ disk_info = [{'type': 'qcow2', 'path': '/test/disk', 'local_gb': 10, 'backing_file': '/base/disk'}, {'type': 'raw', 'path': '/test/disk.local', 'local_gb': 10, 'backing_file': '/base/disk.local'}] disk_info_text = jsonutils.dumps(disk_info) powered_on = power_on self.fake_create_domain_called = False def fake_can_resize_image(path, size): return False def fake_extend(path, size, use_cow=False): pass def fake_to_xml(context, instance, network_info, disk_info, image_meta=None, rescue=None, block_device_info=None, write_to_disk=False): return "" def fake_plug_vifs(instance, network_info): pass def fake_create_image(context, inst, disk_mapping, suffix='', disk_images=None, network_info=None, block_device_info=None, inject_files=True): self.assertFalse(inject_files) def fake_create_domain(xml, instance=None, launch_flags=0, power_on=True): self.fake_create_domain_called = True self.assertEqual(powered_on, power_on) return mock.MagicMock() def fake_enable_hairpin(instance): pass def fake_execute(*args, **kwargs): pass def fake_get_info(instance): if powered_on: return {'state': power_state.RUNNING} else: return {'state': power_state.SHUTDOWN} self.flags(use_cow_images=True) self.stubs.Set(libvirt_driver.disk, 'extend', fake_extend) self.stubs.Set(libvirt_driver.disk, 'can_resize_image', fake_can_resize_image) self.stubs.Set(self.libvirtconnection, 'to_xml', fake_to_xml) self.stubs.Set(self.libvirtconnection, 'plug_vifs', fake_plug_vifs) self.stubs.Set(self.libvirtconnection, '_create_image', fake_create_image) self.stubs.Set(self.libvirtconnection, '_create_domain', fake_create_domain) self.stubs.Set(self.libvirtconnection, '_enable_hairpin', fake_enable_hairpin) self.stubs.Set(utils, 'execute', fake_execute) fw = base_firewall.NoopFirewallDriver() self.stubs.Set(self.libvirtconnection, 'firewall_driver', fw) self.stubs.Set(self.libvirtconnection, 'get_info', fake_get_info) ins_ref = self._create_instance() self.libvirtconnection.finish_migration( context.get_admin_context(), None, ins_ref, disk_info_text, [], None, None, None, power_on) self.assertTrue(self.fake_create_domain_called) def test_finish_migration_power_on(self): self._test_finish_migration(True) def test_finish_migration_power_off(self): self._test_finish_migration(False) def _test_finish_revert_migration(self, power_on): """Test for nova.virt.libvirt.libvirt_driver.LivirtConnection .finish_revert_migration. """ powered_on = power_on self.fake_create_domain_called = False def fake_execute(*args, **kwargs): pass def fake_plug_vifs(instance, network_info): pass def fake_create_domain(xml, instance=None, launch_flags=0, power_on=True): self.fake_create_domain_called = True self.assertEqual(powered_on, power_on) return mock.MagicMock() def fake_enable_hairpin(instance): pass def fake_get_info(instance): if powered_on: return {'state': power_state.RUNNING} else: return {'state': power_state.SHUTDOWN} def fake_to_xml(context, instance, network_info, disk_info, image_meta=None, rescue=None, block_device_info=None): return "" self.stubs.Set(self.libvirtconnection, 'to_xml', fake_to_xml) self.stubs.Set(self.libvirtconnection, 'plug_vifs', fake_plug_vifs) self.stubs.Set(utils, 'execute', fake_execute) fw = base_firewall.NoopFirewallDriver() self.stubs.Set(self.libvirtconnection, 'firewall_driver', fw) self.stubs.Set(self.libvirtconnection, '_create_domain', fake_create_domain) self.stubs.Set(self.libvirtconnection, '_enable_hairpin', fake_enable_hairpin) self.stubs.Set(self.libvirtconnection, 'get_info', fake_get_info) with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) ins_ref = self._create_instance() os.mkdir(os.path.join(tmpdir, ins_ref['name'])) libvirt_xml_path = os.path.join(tmpdir, ins_ref['name'], 'libvirt.xml') f = open(libvirt_xml_path, 'w') f.close() self.libvirtconnection.finish_revert_migration( context.get_admin_context(), ins_ref, [], None, power_on) self.assertTrue(self.fake_create_domain_called) def test_finish_revert_migration_power_on(self): self._test_finish_revert_migration(True) def test_finish_revert_migration_power_off(self): self._test_finish_revert_migration(False) def _test_finish_revert_migration_after_crash(self, backup_made=True, del_inst_failed=False): class FakeLoopingCall: def start(self, *a, **k): return self def wait(self): return None context = 'fake_context' self.mox.StubOutWithMock(libvirt_utils, 'get_instance_path') self.mox.StubOutWithMock(os.path, 'exists') self.mox.StubOutWithMock(shutil, 'rmtree') self.mox.StubOutWithMock(utils, 'execute') self.stubs.Set(blockinfo, 'get_disk_info', lambda *a: None) self.stubs.Set(self.libvirtconnection, 'to_xml', lambda *a, **k: None) self.stubs.Set(self.libvirtconnection, '_create_domain_and_network', lambda *a: None) self.stubs.Set(loopingcall, 'FixedIntervalLoopingCall', lambda *a, **k: FakeLoopingCall()) libvirt_utils.get_instance_path({}).AndReturn('/fake/foo') os.path.exists('/fake/foo_resize').AndReturn(backup_made) if backup_made: if del_inst_failed: os_error = OSError(errno.ENOENT, 'No such file or directory') shutil.rmtree('/fake/foo').AndRaise(os_error) else: shutil.rmtree('/fake/foo') utils.execute('mv', '/fake/foo_resize', '/fake/foo') self.mox.ReplayAll() self.libvirtconnection.finish_revert_migration(context, {}, []) def test_finish_revert_migration_after_crash(self): self._test_finish_revert_migration_after_crash(backup_made=True) def test_finish_revert_migration_after_crash_before_new(self): self._test_finish_revert_migration_after_crash(backup_made=True) def test_finish_revert_migration_after_crash_before_backup(self): self._test_finish_revert_migration_after_crash(backup_made=False) def test_finish_revert_migration_after_crash_delete_failed(self): self._test_finish_revert_migration_after_crash(backup_made=True, del_inst_failed=True) def test_cleanup_failed_migration(self): self.mox.StubOutWithMock(shutil, 'rmtree') shutil.rmtree('/fake/inst') self.mox.ReplayAll() self.libvirtconnection._cleanup_failed_migration('/fake/inst') def test_confirm_migration(self): ins_ref = self._create_instance() self.mox.StubOutWithMock(self.libvirtconnection, "_cleanup_resize") self.libvirtconnection._cleanup_resize(ins_ref, _fake_network_info(self.stubs, 1)) self.mox.ReplayAll() self.libvirtconnection.confirm_migration("migration_ref", ins_ref, _fake_network_info(self.stubs, 1)) def test_cleanup_resize_same_host(self): ins_ref = self._create_instance({'host': CONF.host}) def fake_os_path_exists(path): return True self.stubs.Set(os.path, 'exists', fake_os_path_exists) self.mox.StubOutWithMock(libvirt_utils, 'get_instance_path') self.mox.StubOutWithMock(utils, 'execute') libvirt_utils.get_instance_path(ins_ref).AndReturn('/fake/inst') utils.execute('rm', '-rf', '/fake/inst_resize', delay_on_retry=True, attempts=5) self.mox.ReplayAll() self.libvirtconnection._cleanup_resize(ins_ref, _fake_network_info(self.stubs, 1)) def test_cleanup_resize_not_same_host(self): host = 'not' + CONF.host ins_ref = self._create_instance({'host': host}) def fake_os_path_exists(path): return True def fake_undefine_domain(instance): pass def fake_unplug_vifs(instance, network_info): pass def fake_unfilter_instance(instance, network_info): pass self.stubs.Set(os.path, 'exists', fake_os_path_exists) self.stubs.Set(self.libvirtconnection, '_undefine_domain', fake_undefine_domain) self.stubs.Set(self.libvirtconnection, 'unplug_vifs', fake_unplug_vifs) self.stubs.Set(self.libvirtconnection.firewall_driver, 'unfilter_instance', fake_unfilter_instance) self.mox.StubOutWithMock(libvirt_utils, 'get_instance_path') self.mox.StubOutWithMock(utils, 'execute') libvirt_utils.get_instance_path(ins_ref).AndReturn('/fake/inst') utils.execute('rm', '-rf', '/fake/inst_resize', delay_on_retry=True, attempts=5) self.mox.ReplayAll() self.libvirtconnection._cleanup_resize(ins_ref, _fake_network_info(self.stubs, 1)) def test_get_instance_disk_info_exception(self): instance_name = "fake-instance-name" class FakeExceptionDomain(FakeVirtDomain): def __init__(self): super(FakeExceptionDomain, self).__init__() def XMLDesc(self, *args): raise libvirt.libvirtError("Libvirt error") def fake_lookup_by_name(instance_name): return FakeExceptionDomain() self.stubs.Set(self.libvirtconnection, '_lookup_by_name', fake_lookup_by_name) self.assertRaises(exception.InstanceNotFound, self.libvirtconnection.get_instance_disk_info, instance_name) @mock.patch('os.path.exists') @mock.patch('nova.virt.libvirt.utils.list_logical_volumes') def test_lvm_disks(self, listlvs, exists): instance = instance_obj.Instance(uuid='fake-uuid', id=1) self.flags(images_volume_group='vols', group='libvirt') exists.return_value = True listlvs.return_value = ['fake-uuid_foo', 'instance-00000001_bar', 'other-uuid_foo', 'instance-00000002_bar'] disks = self.libvirtconnection._lvm_disks(instance) self.assertEqual(['/dev/vols/fake-uuid_foo', '/dev/vols/instance-00000001_bar'], disks) def test_is_booted_from_volume(self): func = libvirt_driver.LibvirtDriver._is_booted_from_volume instance, disk_mapping = {}, {} self.assertTrue(func(instance, disk_mapping)) disk_mapping['disk'] = 'map' self.assertTrue(func(instance, disk_mapping)) instance['image_ref'] = 'uuid' self.assertFalse(func(instance, disk_mapping)) @mock.patch('nova.virt.netutils.get_injected_network_template') @mock.patch('nova.virt.disk.api.inject_data') def _test_inject_data(self, driver_params, disk_params, disk_inject_data, inj_network, called=True): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI()) class i(object): path = '/path' def fake_inj_network(*args, **kwds): return args[0] or None inj_network.side_effect = fake_inj_network with mock.patch.object( conn.image_backend, 'image', return_value=i()): self.flags(inject_partition=0, group='libvirt') conn._inject_data(**driver_params) if called: disk_inject_data.assert_called_once_with( *disk_params, partition=None, mandatory=('files',), use_cow=True) self.assertEqual(disk_inject_data.called, called) def _test_inject_data_default_driver_params(self): return { 'instance': { 'uuid': 'fake-uuid', 'id': 1, 'kernel_id': None, 'image_ref': 1, 'key_data': None, 'metadata': None }, 'network_info': None, 'admin_pass': None, 'files': None, 'suffix': '' } def test_inject_data_adminpass(self): self.flags(inject_password=True, group='libvirt') driver_params = self._test_inject_data_default_driver_params() driver_params['admin_pass'] = 'foobar' disk_params = [ '/path', # injection_path None, # key None, # net None, # metadata 'foobar', # admin_pass None, # files ] self._test_inject_data(driver_params, disk_params) # Test with the configuration setted to false. self.flags(inject_password=False, group='libvirt') self._test_inject_data(driver_params, disk_params, called=False) def test_inject_data_key(self): driver_params = self._test_inject_data_default_driver_params() driver_params['instance']['key_data'] = 'key-content' self.flags(inject_key=True, group='libvirt') disk_params = [ '/path', # injection_path 'key-content', # key None, # net None, # metadata None, # admin_pass None, # files ] self._test_inject_data(driver_params, disk_params) # Test with the configuration setted to false. self.flags(inject_key=False, group='libvirt') self._test_inject_data(driver_params, disk_params, called=False) def test_inject_data_metadata(self): driver_params = self._test_inject_data_default_driver_params() driver_params['instance']['metadata'] = 'data' disk_params = [ '/path', # injection_path None, # key None, # net 'data', # metadata None, # admin_pass None, # files ] self._test_inject_data(driver_params, disk_params) def test_inject_data_files(self): driver_params = self._test_inject_data_default_driver_params() driver_params['files'] = ['file1', 'file2'] disk_params = [ '/path', # injection_path None, # key None, # net None, # metadata None, # admin_pass ['file1', 'file2'], # files ] self._test_inject_data(driver_params, disk_params) def test_inject_data_net(self): driver_params = self._test_inject_data_default_driver_params() driver_params['network_info'] = {'net': 'eno1'} disk_params = [ '/path', # injection_path None, # key {'net': 'eno1'}, # net None, # metadata None, # admin_pass None, # files ] self._test_inject_data(driver_params, disk_params) class LibvirtVolumeUsageTestCase(test.TestCase): """Test for LibvirtDriver.get_all_volume_usage.""" def setUp(self): super(LibvirtVolumeUsageTestCase, self).setUp() self.conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.c = context.get_admin_context() # creating instance inst = {} inst['uuid'] = '875a8070-d0b9-4949-8b31-104d125c9a64' self.ins_ref = db.instance_create(self.c, inst) # verify bootable volume device path also self.bdms = [{'volume_id': 1, 'device_name': '/dev/vde'}, {'volume_id': 2, 'device_name': 'vda'}] def test_get_all_volume_usage(self): def fake_block_stats(instance_name, disk): return (169L, 688640L, 0L, 0L, -1L) self.stubs.Set(self.conn, 'block_stats', fake_block_stats) vol_usage = self.conn.get_all_volume_usage(self.c, [dict(instance=self.ins_ref, instance_bdms=self.bdms)]) expected_usage = [{'volume': 1, 'instance': self.ins_ref, 'rd_bytes': 688640L, 'wr_req': 0L, 'flush_operations': -1L, 'rd_req': 169L, 'wr_bytes': 0L}, {'volume': 2, 'instance': self.ins_ref, 'rd_bytes': 688640L, 'wr_req': 0L, 'flush_operations': -1L, 'rd_req': 169L, 'wr_bytes': 0L}] self.assertEqual(vol_usage, expected_usage) def test_get_all_volume_usage_device_not_found(self): def fake_lookup(instance_name): raise libvirt.libvirtError('invalid path') self.stubs.Set(self.conn, '_lookup_by_name', fake_lookup) vol_usage = self.conn.get_all_volume_usage(self.c, [dict(instance=self.ins_ref, instance_bdms=self.bdms)]) self.assertEqual(vol_usage, []) class LibvirtNonblockingTestCase(test.TestCase): """Test libvirtd calls are nonblocking.""" def setUp(self): super(LibvirtNonblockingTestCase, self).setUp() self.flags(connection_uri="test:///default", group='libvirt') def test_connection_to_primitive(self): # Test bug 962840. import nova.virt.libvirt.driver as libvirt_driver connection = libvirt_driver.LibvirtDriver('') connection.set_host_enabled = mock.Mock() jsonutils.to_primitive(connection._conn, convert_instances=True) def test_tpool_execute_calls_libvirt(self): conn = libvirt.virConnect() conn.is_expected = True self.mox.StubOutWithMock(eventlet.tpool, 'execute') eventlet.tpool.execute( libvirt.openAuth, 'test:///default', mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(conn) eventlet.tpool.execute( conn.domainEventRegisterAny, None, libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE, mox.IgnoreArg(), mox.IgnoreArg()) if hasattr(libvirt.virConnect, 'registerCloseCallback'): eventlet.tpool.execute( conn.registerCloseCallback, mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) c = driver._get_connection() self.assertEqual(True, c.is_expected) class LibvirtVolumeSnapshotTestCase(test.TestCase): """Tests for libvirtDriver.volume_snapshot_create/delete.""" def setUp(self): super(LibvirtVolumeSnapshotTestCase, self).setUp() self.conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) self.c = context.get_admin_context() self.flags(instance_name_template='instance-%s') # creating instance self.inst = {} self.inst['uuid'] = uuidutils.generate_uuid() self.inst['id'] = '1' # create domain info self.dom_xml = """ 0e38683e-f0af-418f-a3f1-6b67ea0f919d """ self.create_info = {'type': 'qcow2', 'snapshot_id': '1234-5678', 'new_file': 'new-file'} self.volume_uuid = '0e38683e-f0af-418f-a3f1-6b67ea0f919d' self.snapshot_id = '9c3ca9f4-9f4e-4dba-bedd-5c5e4b52b162' self.delete_info_1 = {'type': 'qcow2', 'file_to_merge': 'snap.img', 'merge_target_file': None} self.delete_info_2 = {'type': 'qcow2', 'file_to_merge': 'snap.img', 'merge_target_file': 'other-snap.img'} self.delete_info_invalid_type = {'type': 'made_up_type', 'file_to_merge': 'some_file', 'merge_target_file': 'some_other_file'} def tearDown(self): super(LibvirtVolumeSnapshotTestCase, self).tearDown() def test_volume_snapshot_create(self, quiesce=True): CONF.instance_name_template = 'instance-%s' self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, '_volume_api') instance = db.instance_create(self.c, self.inst) snapshot_id = 'snap-asdf-qwert' new_file = 'new-file' domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(domain, 'XMLDesc') self.mox.StubOutWithMock(domain, 'snapshotCreateXML') domain.XMLDesc(0).AndReturn(self.dom_xml) snap_xml_src = ( '\n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n') # Older versions of libvirt may be missing these. libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32 libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = 64 snap_flags = (libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY | libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA | libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) snap_flags_q = snap_flags | libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE if quiesce: domain.snapshotCreateXML(snap_xml_src, snap_flags_q) else: domain.snapshotCreateXML(snap_xml_src, snap_flags_q).\ AndRaise(libvirt.libvirtError('quiescing failed, no qemu-ga')) domain.snapshotCreateXML(snap_xml_src, snap_flags).AndReturn(0) self.mox.ReplayAll() self.conn._volume_snapshot_create(self.c, instance, domain, self.volume_uuid, snapshot_id, new_file) self.mox.VerifyAll() def test_volume_snapshot_create_noquiesce(self): self.test_volume_snapshot_create(quiesce=False) def test_volume_snapshot_create_outer_success(self): instance = db.instance_create(self.c, self.inst) domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, '_volume_api') self.mox.StubOutWithMock(self.conn, '_volume_snapshot_create') self.conn._lookup_by_name('instance-1').AndReturn(domain) self.conn._volume_snapshot_create(self.c, instance, domain, self.volume_uuid, self.create_info['snapshot_id'], self.create_info['new_file']) self.conn._volume_api.update_snapshot_status( self.c, self.create_info['snapshot_id'], 'creating') self.mox.ReplayAll() self.conn.volume_snapshot_create(self.c, instance, self.volume_uuid, self.create_info) def test_volume_snapshot_create_outer_failure(self): instance = db.instance_create(self.c, self.inst) domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, '_volume_api') self.mox.StubOutWithMock(self.conn, '_volume_snapshot_create') self.conn._lookup_by_name('instance-1').AndReturn(domain) self.conn._volume_snapshot_create(self.c, instance, domain, self.volume_uuid, self.create_info['snapshot_id'], self.create_info['new_file']).\ AndRaise(exception.NovaException('oops')) self.conn._volume_api.update_snapshot_status( self.c, self.create_info['snapshot_id'], 'error') self.mox.ReplayAll() self.assertRaises(exception.NovaException, self.conn.volume_snapshot_create, self.c, instance, self.volume_uuid, self.create_info) def test_volume_snapshot_delete_1(self): """Deleting newest snapshot -- blockRebase.""" instance = db.instance_create(self.c, self.inst) snapshot_id = 'snapshot-1234' domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(domain, 'XMLDesc') domain.XMLDesc(0).AndReturn(self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, 'has_min_version') self.mox.StubOutWithMock(domain, 'blockRebase') self.mox.StubOutWithMock(domain, 'blockCommit') self.mox.StubOutWithMock(domain, 'blockJobInfo') self.conn._lookup_by_name('instance-%s' % instance['id']).\ AndReturn(domain) self.conn.has_min_version(mox.IgnoreArg()).AndReturn(True) domain.blockRebase('vda', 'snap.img', 0, 0) domain.blockJobInfo('vda', 0).AndReturn({'cur': 1, 'end': 1000}) domain.blockJobInfo('vda', 0).AndReturn({'cur': 1000, 'end': 1000}) self.mox.ReplayAll() self.conn._volume_snapshot_delete(self.c, instance, self.volume_uuid, snapshot_id, self.delete_info_1) self.mox.VerifyAll() def test_volume_snapshot_delete_2(self): """Deleting older snapshot -- blockCommit.""" instance = db.instance_create(self.c, self.inst) snapshot_id = 'snapshot-1234' domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(domain, 'XMLDesc') domain.XMLDesc(0).AndReturn(self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, 'has_min_version') self.mox.StubOutWithMock(domain, 'blockRebase') self.mox.StubOutWithMock(domain, 'blockCommit') self.mox.StubOutWithMock(domain, 'blockJobInfo') self.conn._lookup_by_name('instance-%s' % instance['id']).\ AndReturn(domain) self.conn.has_min_version(mox.IgnoreArg()).AndReturn(True) domain.blockCommit('vda', 'other-snap.img', 'snap.img', 0, 0) domain.blockJobInfo('vda', 0).AndReturn({'cur': 1, 'end': 1000}) domain.blockJobInfo('vda', 0).AndReturn({}) self.mox.ReplayAll() self.conn._volume_snapshot_delete(self.c, instance, self.volume_uuid, snapshot_id, self.delete_info_2) self.mox.VerifyAll() def test_volume_snapshot_delete_outer_success(self): instance = db.instance_create(self.c, self.inst) snapshot_id = 'snapshot-1234' domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, '_volume_api') self.mox.StubOutWithMock(self.conn, '_volume_snapshot_delete') self.conn._volume_snapshot_delete(self.c, instance, self.volume_uuid, snapshot_id, delete_info=self.delete_info_1) self.conn._volume_api.update_snapshot_status( self.c, snapshot_id, 'deleting') self.mox.ReplayAll() self.conn.volume_snapshot_delete(self.c, instance, self.volume_uuid, snapshot_id, self.delete_info_1) self.mox.VerifyAll() def test_volume_snapshot_delete_outer_failure(self): instance = db.instance_create(self.c, self.inst) snapshot_id = '1234-9876' domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, '_volume_api') self.mox.StubOutWithMock(self.conn, '_volume_snapshot_delete') self.conn._volume_snapshot_delete(self.c, instance, self.volume_uuid, snapshot_id, delete_info=self.delete_info_1).\ AndRaise(exception.NovaException('oops')) self.conn._volume_api.update_snapshot_status( self.c, snapshot_id, 'error_deleting') self.mox.ReplayAll() self.assertRaises(exception.NovaException, self.conn.volume_snapshot_delete, self.c, instance, self.volume_uuid, snapshot_id, self.delete_info_1) self.mox.VerifyAll() def test_volume_snapshot_delete_invalid_type(self): instance = db.instance_create(self.c, self.inst) domain = FakeVirtDomain(fake_xml=self.dom_xml) self.mox.StubOutWithMock(self.conn, '_lookup_by_name') self.mox.StubOutWithMock(self.conn, '_volume_api') self.mox.StubOutWithMock(self.conn, 'has_min_version') self.conn.has_min_version(mox.IgnoreArg()).AndReturn(True) self.conn._volume_api.update_snapshot_status( self.c, self.snapshot_id, 'error_deleting') self.mox.ReplayAll() self.assertRaises(exception.NovaException, self.conn.volume_snapshot_delete, self.c, instance, self.volume_uuid, self.snapshot_id, self.delete_info_invalid_type) nova-2014.1/nova/tests/virt/libvirt/fakelibvirt.py0000664000175400017540000006605612323721477023347 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import time import uuid from nova.openstack.common.gettextutils import _ # Allow passing None to the various connect methods # (i.e. allow the client to rely on default URLs) allow_default_uri_connection = True # string indicating the CPU arch node_arch = 'x86_64' # or 'i686' (or whatever else uname -m might return) # memory size in kilobytes node_kB_mem = 4096 # the number of active CPUs node_cpus = 2 # expected CPU frequency node_mhz = 800 # the number of NUMA cell, 1 for unusual NUMA topologies or uniform # memory access; check capabilities XML for the actual NUMA topology node_nodes = 1 # NUMA nodes # number of CPU sockets per node if nodes > 1, total number of CPU # sockets otherwise node_sockets = 1 # number of cores per socket node_cores = 2 # number of threads per core node_threads = 1 # CPU model node_cpu_model = "Penryn" # CPU vendor node_cpu_vendor = "Intel" # Has libvirt connection been used at least once connection_used = False def _reset(): global allow_default_uri_connection allow_default_uri_connection = True # virDomainState VIR_DOMAIN_NOSTATE = 0 VIR_DOMAIN_RUNNING = 1 VIR_DOMAIN_BLOCKED = 2 VIR_DOMAIN_PAUSED = 3 VIR_DOMAIN_SHUTDOWN = 4 VIR_DOMAIN_SHUTOFF = 5 VIR_DOMAIN_CRASHED = 6 VIR_DOMAIN_XML_SECURE = 1 VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0 VIR_DOMAIN_EVENT_DEFINED = 0 VIR_DOMAIN_EVENT_UNDEFINED = 1 VIR_DOMAIN_EVENT_STARTED = 2 VIR_DOMAIN_EVENT_SUSPENDED = 3 VIR_DOMAIN_EVENT_RESUMED = 4 VIR_DOMAIN_EVENT_STOPPED = 5 VIR_DOMAIN_EVENT_SHUTDOWN = 6 VIR_DOMAIN_EVENT_PMSUSPENDED = 7 VIR_DOMAIN_UNDEFINE_MANAGED_SAVE = 1 VIR_DOMAIN_AFFECT_CURRENT = 0 VIR_DOMAIN_AFFECT_LIVE = 1 VIR_DOMAIN_AFFECT_CONFIG = 2 VIR_CPU_COMPARE_ERROR = -1 VIR_CPU_COMPARE_INCOMPATIBLE = 0 VIR_CPU_COMPARE_IDENTICAL = 1 VIR_CPU_COMPARE_SUPERSET = 2 VIR_CRED_USERNAME = 1 VIR_CRED_AUTHNAME = 2 VIR_CRED_LANGUAGE = 3 VIR_CRED_CNONCE = 4 VIR_CRED_PASSPHRASE = 5 VIR_CRED_ECHOPROMPT = 6 VIR_CRED_NOECHOPROMPT = 7 VIR_CRED_REALM = 8 VIR_CRED_EXTERNAL = 9 VIR_MIGRATE_PEER2PEER = 2 VIR_MIGRATE_UNDEFINE_SOURCE = 16 VIR_NODE_CPU_STATS_ALL_CPUS = -1 VIR_DOMAIN_START_PAUSED = 1 # libvirtError enums # (Intentionally different from what's in libvirt. We do this to check, # that consumers of the library are using the symbolic names rather than # hardcoding the numerical values) VIR_FROM_QEMU = 100 VIR_FROM_DOMAIN = 200 VIR_FROM_NWFILTER = 330 VIR_FROM_REMOTE = 340 VIR_FROM_RPC = 345 VIR_ERR_NO_SUPPORT = 3 VIR_ERR_XML_DETAIL = 350 VIR_ERR_NO_DOMAIN = 420 VIR_ERR_OPERATION_INVALID = 55 VIR_ERR_OPERATION_TIMEOUT = 68 VIR_ERR_NO_NWFILTER = 620 VIR_ERR_SYSTEM_ERROR = 900 VIR_ERR_INTERNAL_ERROR = 950 # Readonly VIR_CONNECT_RO = 1 # virConnectBaselineCPU flags VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES = 1 # snapshotCreateXML flags VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = 4 VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = 16 VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32 VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = 64 def _parse_disk_info(element): disk_info = {} disk_info['type'] = element.get('type', 'file') disk_info['device'] = element.get('device', 'disk') driver = element.find('./driver') if driver is not None: disk_info['driver_name'] = driver.get('name') disk_info['driver_type'] = driver.get('type') source = element.find('./source') if source is not None: disk_info['source'] = source.get('file') if not disk_info['source']: disk_info['source'] = source.get('dev') if not disk_info['source']: disk_info['source'] = source.get('path') target = element.find('./target') if target is not None: disk_info['target_dev'] = target.get('dev') disk_info['target_bus'] = target.get('bus') return disk_info class libvirtError(Exception): def __init__(self, msg, error_code=VIR_ERR_INTERNAL_ERROR, error_domain=VIR_FROM_QEMU): self.error_code = error_code self.error_domain = error_domain Exception(self, msg) def get_error_code(self): return self.error_code def get_error_domain(self): return self.error_domain class NWFilter(object): def __init__(self, connection, xml): self._connection = connection self._xml = xml self._parse_xml(xml) def _parse_xml(self, xml): tree = etree.fromstring(xml) root = tree.find('.') self._name = root.get('name') def undefine(self): self._connection._remove_filter(self) class Domain(object): def __init__(self, connection, xml, running=False, transient=False): self._connection = connection if running: connection._mark_running(self) self._state = running and VIR_DOMAIN_RUNNING or VIR_DOMAIN_SHUTOFF self._transient = transient self._def = self._parse_definition(xml) self._has_saved_state = False self._snapshots = {} self._id = self._connection._id_counter def _parse_definition(self, xml): try: tree = etree.fromstring(xml) except etree.ParseError: raise libvirtError("Invalid XML.", VIR_ERR_XML_DETAIL, VIR_FROM_DOMAIN) definition = {} name = tree.find('./name') if name is not None: definition['name'] = name.text uuid_elem = tree.find('./uuid') if uuid_elem is not None: definition['uuid'] = uuid_elem.text else: definition['uuid'] = str(uuid.uuid4()) vcpu = tree.find('./vcpu') if vcpu is not None: definition['vcpu'] = int(vcpu.text) memory = tree.find('./memory') if memory is not None: definition['memory'] = int(memory.text) os = {} os_type = tree.find('./os/type') if os_type is not None: os['type'] = os_type.text os['arch'] = os_type.get('arch', node_arch) os_kernel = tree.find('./os/kernel') if os_kernel is not None: os['kernel'] = os_kernel.text os_initrd = tree.find('./os/initrd') if os_initrd is not None: os['initrd'] = os_initrd.text os_cmdline = tree.find('./os/cmdline') if os_cmdline is not None: os['cmdline'] = os_cmdline.text os_boot = tree.find('./os/boot') if os_boot is not None: os['boot_dev'] = os_boot.get('dev') definition['os'] = os features = {} acpi = tree.find('./features/acpi') if acpi is not None: features['acpi'] = True definition['features'] = features devices = {} device_nodes = tree.find('./devices') if device_nodes is not None: disks_info = [] disks = device_nodes.findall('./disk') for disk in disks: disks_info += [_parse_disk_info(disk)] devices['disks'] = disks_info nics_info = [] nics = device_nodes.findall('./interface') for nic in nics: nic_info = {} nic_info['type'] = nic.get('type') mac = nic.find('./mac') if mac is not None: nic_info['mac'] = mac.get('address') source = nic.find('./source') if source is not None: if nic_info['type'] == 'network': nic_info['source'] = source.get('network') elif nic_info['type'] == 'bridge': nic_info['source'] = source.get('bridge') nics_info += [nic_info] devices['nics'] = nics_info definition['devices'] = devices return definition def create(self): self.createWithFlags(0) def createWithFlags(self, flags): # FIXME: Not handling flags at the moment self._state = VIR_DOMAIN_RUNNING self._connection._mark_running(self) self._has_saved_state = False def isActive(self): return int(self._state == VIR_DOMAIN_RUNNING) def undefine(self): self._connection._undefine(self) def undefineFlags(self, flags): self.undefine() if flags & VIR_DOMAIN_UNDEFINE_MANAGED_SAVE: if self.hasManagedSaveImage(0): self.managedSaveRemove() def destroy(self): self._state = VIR_DOMAIN_SHUTOFF self._connection._mark_not_running(self) def ID(self): return self._id def name(self): return self._def['name'] def UUIDString(self): return self._def['uuid'] def interfaceStats(self, device): return [10000242400, 1234, 0, 2, 213412343233, 34214234, 23, 3] def blockStats(self, device): return [2, 10000242400, 234, 2343424234, 34] def suspend(self): self._state = VIR_DOMAIN_PAUSED def shutdown(self): self._state = VIR_DOMAIN_SHUTDOWN self._connection._mark_not_running(self) def reset(self, flags): # FIXME: Not handling flags at the moment self._state = VIR_DOMAIN_RUNNING self._connection._mark_running(self) def info(self): return [self._state, long(self._def['memory']), long(self._def['memory']), self._def['vcpu'], 123456789L] def migrateToURI(self, desturi, flags, dname, bandwidth): raise libvirtError("Migration always fails for fake libvirt!") def attachDevice(self, xml): disk_info = _parse_disk_info(etree.fromstring(xml)) disk_info['_attached'] = True self._def['devices']['disks'] += [disk_info] return True def attachDeviceFlags(self, xml, flags): if (flags & VIR_DOMAIN_AFFECT_LIVE and self._state != VIR_DOMAIN_RUNNING): raise libvirtError("AFFECT_LIVE only allowed for running domains!") self.attachDevice(xml) def detachDevice(self, xml): disk_info = _parse_disk_info(etree.fromstring(xml)) disk_info['_attached'] = True return disk_info in self._def['devices']['disks'] def detachDeviceFlags(self, xml, _flags): self.detachDevice(xml) def XMLDesc(self, flags): disks = '' for disk in self._def['devices']['disks']: disks += '''
''' % disk nics = '' for nic in self._def['devices']['nics']: nics += '''
''' % nic return ''' %(name)s %(uuid)s %(memory)s %(memory)s %(vcpu)s hvm destroy restart restart /usr/bin/kvm %(disks)s
%(nics)s
''' % {'name': self._def['name'], 'uuid': self._def['uuid'], 'memory': self._def['memory'], 'vcpu': self._def['vcpu'], 'arch': self._def['os']['arch'], 'disks': disks, 'nics': nics} def managedSave(self, flags): self._connection._mark_not_running(self) self._has_saved_state = True def managedSaveRemove(self, flags): self._has_saved_state = False def hasManagedSaveImage(self, flags): return int(self._has_saved_state) def resume(self): self._state = VIR_DOMAIN_RUNNING def snapshotCreateXML(self, xml, flags): tree = etree.fromstring(xml) name = tree.find('./name').text snapshot = DomainSnapshot(name, self) self._snapshots[name] = snapshot return snapshot def vcpus(self): vcpus = ([], []) for i in range(0, self._def['vcpu']): vcpus[0].append((i, 1, 120405L, i)) vcpus[1].append((True, True, True, True)) return vcpus def memoryStats(self): return {} def maxMemory(self): return self._def['memory'] def blockJobInfo(self, disk, flags): return {} class DomainSnapshot(object): def __init__(self, name, domain): self._name = name self._domain = domain def delete(self, flags): del self._domain._snapshots[self._name] class Connection(object): def __init__(self, uri=None, readonly=False, version=9007): if not uri or uri == '': if allow_default_uri_connection: uri = 'qemu:///session' else: raise ValueError("URI was None, but fake libvirt is " "configured to not accept this.") uri_whitelist = ['qemu:///system', 'qemu:///session', 'xen:///system', 'uml:///system', 'test:///default'] if uri not in uri_whitelist: raise libvirtError("libvirt error: no connection driver " "available for No connection for URI %s" % uri, 5, 0) self.readonly = readonly self._uri = uri self._vms = {} self._running_vms = {} self._id_counter = 1 # libvirt reserves 0 for the hypervisor. self._nwfilters = {} self._event_callbacks = {} self.fakeLibVersion = version self.fakeVersion = version def _add_filter(self, nwfilter): self._nwfilters[nwfilter._name] = nwfilter def _remove_filter(self, nwfilter): del self._nwfilters[nwfilter._name] def _mark_running(self, dom): self._running_vms[self._id_counter] = dom self._emit_lifecycle(dom, VIR_DOMAIN_EVENT_STARTED, 0) self._id_counter += 1 def _mark_not_running(self, dom): if dom._transient: self._undefine(dom) dom._id = -1 for (k, v) in self._running_vms.iteritems(): if v == dom: del self._running_vms[k] self._emit_lifecycle(dom, VIR_DOMAIN_EVENT_STOPPED, 0) return def _undefine(self, dom): del self._vms[dom.name()] if not dom._transient: self._emit_lifecycle(dom, VIR_DOMAIN_EVENT_UNDEFINED, 0) def getInfo(self): return [node_arch, node_kB_mem, node_cpus, node_mhz, node_nodes, node_sockets, node_cores, node_threads] def numOfDomains(self): return len(self._running_vms) def listDomainsID(self): return self._running_vms.keys() def lookupByID(self, id): if id in self._running_vms: return self._running_vms[id] raise libvirtError('Domain not found: no domain with matching ' 'id %d' % id, VIR_ERR_NO_DOMAIN, VIR_FROM_QEMU) def lookupByName(self, name): if name in self._vms: return self._vms[name] raise libvirtError('Domain not found: no domain with matching ' 'name "%s"' % name, VIR_ERR_NO_DOMAIN, VIR_FROM_QEMU) def _emit_lifecycle(self, dom, event, detail): if VIR_DOMAIN_EVENT_ID_LIFECYCLE not in self._event_callbacks: return cbinfo = self._event_callbacks[VIR_DOMAIN_EVENT_ID_LIFECYCLE] callback = cbinfo[0] opaque = cbinfo[1] callback(self, dom, event, detail, opaque) def defineXML(self, xml): dom = Domain(connection=self, running=False, transient=False, xml=xml) self._vms[dom.name()] = dom self._emit_lifecycle(dom, VIR_DOMAIN_EVENT_DEFINED, 0) return dom def createXML(self, xml, flags): dom = Domain(connection=self, running=True, transient=True, xml=xml) self._vms[dom.name()] = dom self._emit_lifecycle(dom, VIR_DOMAIN_EVENT_STARTED, 0) return dom def getType(self): if self._uri == 'qemu:///system': return 'QEMU' def getLibVersion(self): return self.fakeLibVersion def getVersion(self): return self.fakeVersion def getHostname(self): return 'compute1' def domainEventRegisterAny(self, dom, eventid, callback, opaque): self._event_callbacks[eventid] = [callback, opaque] def registerCloseCallback(self, cb, opaque): pass def getCapabilities(self): """Return spoofed capabilities.""" return ''' cef19ce0-0ca2-11df-855d-b19fbce37686 x86_64 Penryn Intel tcp apparmor 0 hvm 32 /usr/bin/qemu pc-0.14 pc pc-0.13 pc-0.12 pc-0.11 pc-0.10 isapc /usr/bin/kvm pc-0.14 pc pc-0.13 pc-0.12 pc-0.11 pc-0.10 isapc hvm 64 /usr/bin/qemu-system-x86_64 pc-0.14 pc pc-0.13 pc-0.12 pc-0.11 pc-0.10 isapc /usr/bin/kvm pc-0.14 pc pc-0.13 pc-0.12 pc-0.11 pc-0.10 isapc hvm 32 /usr/bin/qemu-system-arm integratorcp vexpress-a9 syborg musicpal mainstone n800 n810 n900 cheetah sx1 sx1-v1 beagle beaglexm tosa akita spitz borzoi terrier connex verdex lm3s811evb lm3s6965evb realview-eb realview-eb-mpcore realview-pb-a8 realview-pbx-a9 versatilepb versatileab hvm 32 /usr/bin/qemu-system-mips malta mipssim magnum pica61 mips hvm 32 /usr/bin/qemu-system-mipsel malta mipssim magnum pica61 mips hvm 32 /usr/bin/qemu-system-sparc SS-5 leon3_generic SS-10 SS-600MP SS-20 Voyager LX SS-4 SPARCClassic SPARCbook SS-1000 SS-2000 SS-2 hvm 32 /usr/bin/qemu-system-ppc g3beige virtex-ml507 mpc8544ds bamboo bamboo-0.13 bamboo-0.12 ref405ep taihu mac99 prep ''' def compareCPU(self, xml, flags): tree = etree.fromstring(xml) arch_node = tree.find('./arch') if arch_node is not None: if arch_node.text not in ['x86_64', 'i686']: return VIR_CPU_COMPARE_INCOMPATIBLE model_node = tree.find('./model') if model_node is not None: if model_node.text != node_cpu_model: return VIR_CPU_COMPARE_INCOMPATIBLE vendor_node = tree.find('./vendor') if vendor_node is not None: if vendor_node.text != node_cpu_vendor: return VIR_CPU_COMPARE_INCOMPATIBLE # The rest of the stuff libvirt implements is rather complicated # and I don't think it adds much value to replicate it here. return VIR_CPU_COMPARE_IDENTICAL def getCPUStats(self, cpuNum, flag): if cpuNum < 2: return {'kernel': 5664160000000L, 'idle': 1592705190000000L, 'user': 26728850000000L, 'iowait': 6121490000000L} else: raise libvirtError("invalid argument: Invalid cpu number") def nwfilterLookupByName(self, name): try: return self._nwfilters[name] except KeyError: raise libvirtError("no nwfilter with matching name %s" % name, VIR_ERR_NO_NWFILTER, VIR_FROM_NWFILTER) def nwfilterDefineXML(self, xml): nwfilter = NWFilter(self, xml) self._add_filter(nwfilter) def listDefinedDomains(self): return [] def listDevices(self, cap, flags): return [] def baselineCPU(self, cpu, flag): """Add new libvirt API.""" return """ Westmere Intel """ def openAuth(uri, auth, flags): if type(auth) != list: raise Exception(_("Expected a list for 'auth' parameter")) if type(auth[0]) != list: raise Exception( _("Expected a function in 'auth[0]' parameter")) if not callable(auth[1]): raise Exception( _("Expected a function in 'auth[1]' parameter")) connection_used = True return Connection(uri, (flags == VIR_CONNECT_RO)) def virEventRunDefaultImpl(): time.sleep(1) def virEventRegisterDefaultImpl(): if connection_used: raise Exception(_("virEventRegisterDefaultImpl() must be \ called before connection is used.")) def registerErrorHandler(handler, ctxt): pass virDomain = Domain virConnect = Connection nova-2014.1/nova/tests/virt/libvirt/__init__.py0000664000175400017540000000115012323721477022564 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/virt/test_block_device.py0000664000175400017540000005301512323721477023031 0ustar jenkinsjenkins00000000000000# All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova import block_device from nova import context from nova.openstack.common import jsonutils from nova import test from nova.tests import matchers from nova.virt import block_device as driver_block_device from nova.virt import driver from nova.volume import cinder from nova.volume import encryptors class TestDriverBlockDevice(test.NoDBTestCase): driver_classes = { 'swap': driver_block_device.DriverSwapBlockDevice, 'ephemeral': driver_block_device.DriverEphemeralBlockDevice, 'volume': driver_block_device.DriverVolumeBlockDevice, 'snapshot': driver_block_device.DriverSnapshotBlockDevice, 'image': driver_block_device.DriverImageBlockDevice } swap_bdm = block_device.BlockDeviceDict( {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdb1', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'guest_format': 'swap', 'disk_bus': 'scsi', 'volume_size': 2, 'boot_index': -1}) swap_driver_bdm = { 'device_name': '/dev/sdb1', 'swap_size': 2, 'disk_bus': 'scsi'} swap_legacy_driver_bdm = { 'device_name': '/dev/sdb1', 'swap_size': 2} ephemeral_bdm = block_device.BlockDeviceDict( {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdc1', 'source_type': 'blank', 'destination_type': 'local', 'disk_bus': 'scsi', 'device_type': 'disk', 'volume_size': 4, 'guest_format': 'ext4', 'delete_on_termination': True, 'boot_index': -1}) ephemeral_driver_bdm = { 'device_name': '/dev/sdc1', 'size': 4, 'device_type': 'disk', 'guest_format': 'ext4', 'disk_bus': 'scsi'} ephemeral_legacy_driver_bdm = { 'device_name': '/dev/sdc1', 'size': 4, 'virtual_name': 'ephemeral0', 'num': 0} volume_bdm = block_device.BlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda1', 'source_type': 'volume', 'disk_bus': 'scsi', 'device_type': 'disk', 'volume_size': 8, 'destination_type': 'volume', 'volume_id': 'fake-volume-id-1', 'guest_format': 'ext4', 'connection_info': '{"fake": "connection_info"}', 'delete_on_termination': False, 'boot_index': 0}) volume_driver_bdm = { 'mount_device': '/dev/sda1', 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': False, 'disk_bus': 'scsi', 'device_type': 'disk', 'guest_format': 'ext4', 'boot_index': 0} volume_legacy_driver_bdm = { 'mount_device': '/dev/sda1', 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': False} snapshot_bdm = block_device.BlockDeviceDict( {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'delete_on_termination': True, 'volume_size': 3, 'disk_bus': 'scsi', 'device_type': 'disk', 'source_type': 'snapshot', 'destination_type': 'volume', 'connection_info': '{"fake": "connection_info"}', 'snapshot_id': 'fake-snapshot-id-1', 'volume_id': 'fake-volume-id-2', 'boot_index': -1}) snapshot_driver_bdm = { 'mount_device': '/dev/sda2', 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': True, 'disk_bus': 'scsi', 'device_type': 'disk', 'guest_format': None, 'boot_index': -1} snapshot_legacy_driver_bdm = { 'mount_device': '/dev/sda2', 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': True} image_bdm = block_device.BlockDeviceDict( {'id': 5, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'delete_on_termination': True, 'volume_size': 1, 'disk_bus': 'scsi', 'device_type': 'disk', 'source_type': 'image', 'destination_type': 'volume', 'connection_info': '{"fake": "connection_info"}', 'image_id': 'fake-image-id-1', 'volume_id': 'fake-volume-id-2', 'boot_index': -1}) image_driver_bdm = { 'mount_device': '/dev/sda2', 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': True, 'disk_bus': 'scsi', 'device_type': 'disk', 'guest_format': None, 'boot_index': -1} image_legacy_driver_bdm = { 'mount_device': '/dev/sda2', 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': True} def setUp(self): super(TestDriverBlockDevice, self).setUp() self.volume_api = self.mox.CreateMock(cinder.API) self.virt_driver = self.mox.CreateMock(driver.ComputeDriver) self.context = context.RequestContext('fake_user', 'fake_project') def test_no_device_raises(self): for name, cls in self.driver_classes.items(): self.assertRaises(driver_block_device._NotTransformable, cls, {'no_device': True}) def _test_driver_device(self, name): db_bdm = getattr(self, "%s_bdm" % name) test_bdm = self.driver_classes[name](db_bdm) self.assertThat(test_bdm, matchers.DictMatches( getattr(self, "%s_driver_bdm" % name))) for k, v in db_bdm.iteritems(): field_val = getattr(test_bdm._bdm_obj, k) if isinstance(field_val, bool): v = bool(v) self.assertEqual(field_val, v) self.assertThat(test_bdm.legacy(), matchers.DictMatches( getattr(self, "%s_legacy_driver_bdm" % name))) # Test passthru attributes for passthru in test_bdm._proxy_as_attr: self.assertEqual(getattr(test_bdm, passthru), getattr(test_bdm._bdm_obj, passthru)) for no_pass in set(db_bdm.keys()) - test_bdm._proxy_as_attr: self.assertRaises(AttributeError, getattr, test_bdm, no_pass) # Make sure that all others raise _invalidType for other_name, cls in self.driver_classes.iteritems(): if other_name == name: continue self.assertRaises(driver_block_device._InvalidType, cls, getattr(self, '%s_bdm' % name)) # Test the save method with mock.patch.object(test_bdm._bdm_obj, 'save') as save_mock: test_bdm.save(self.context) for fld, alias in test_bdm._update_on_save.iteritems(): self.assertEqual(test_bdm[alias or fld], getattr(test_bdm._bdm_obj, fld)) save_mock.assert_called_once_with(self.context) def _test_driver_default_size(self, name): size = 'swap_size' if name == 'swap' else 'size' no_size_bdm = getattr(self, "%s_bdm" % name).copy() no_size_bdm['volume_size'] = None driver_bdm = self.driver_classes[name](no_size_bdm) self.assertEqual(driver_bdm[size], 0) del no_size_bdm['volume_size'] driver_bdm = self.driver_classes[name](no_size_bdm) self.assertEqual(driver_bdm[size], 0) def test_driver_swap_block_device(self): self._test_driver_device("swap") def test_driver_swap_default_size(self): self._test_driver_default_size('swap') def test_driver_ephemeral_block_device(self): self._test_driver_device("ephemeral") def test_driver_ephemeral_default_size(self): self._test_driver_default_size('ephemeral') def test_driver_volume_block_device(self): self._test_driver_device("volume") test_bdm = self.driver_classes['volume']( self.volume_bdm) self.assertEqual(test_bdm['connection_info'], jsonutils.loads(test_bdm._bdm_obj.connection_info)) self.assertEqual(test_bdm._bdm_obj.id, 3) self.assertEqual(test_bdm.volume_id, 'fake-volume-id-1') self.assertEqual(test_bdm.volume_size, 8) def test_driver_snapshot_block_device(self): self._test_driver_device("snapshot") test_bdm = self.driver_classes['snapshot']( self.snapshot_bdm) self.assertEqual(test_bdm._bdm_obj.id, 4) self.assertEqual(test_bdm.snapshot_id, 'fake-snapshot-id-1') self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') self.assertEqual(test_bdm.volume_size, 3) def test_driver_image_block_device(self): self._test_driver_device('image') test_bdm = self.driver_classes['image']( self.image_bdm) self.assertEqual(test_bdm._bdm_obj.id, 5) self.assertEqual(test_bdm.image_id, 'fake-image-id-1') self.assertEqual(test_bdm.volume_size, 1) def test_driver_image_block_device_destination_local(self): self._test_driver_device('image') bdm = self.image_bdm.copy() bdm['destination_type'] = 'local' self.assertRaises(driver_block_device._InvalidType, self.driver_classes['image'], bdm) def _test_volume_attach(self, driver_bdm, bdm_dict, fake_volume, check_attach=True, fail_check_attach=False, driver_attach=False, fail_driver_attach=False): elevated_context = self.context.elevated() self.stubs.Set(self.context, 'elevated', lambda: elevated_context) self.mox.StubOutWithMock(driver_bdm._bdm_obj, 'save') self.mox.StubOutWithMock(encryptors, 'get_encryption_metadata') instance = {'id': 'fake_id', 'uuid': 'fake_uuid'} connector = {'ip': 'fake_ip', 'host': 'fake_host'} connection_info = {'data': {}} expected_conn_info = {'data': {}, 'serial': fake_volume['id']} enc_data = {'fake': 'enc_data'} self.volume_api.get(self.context, fake_volume['id']).AndReturn(fake_volume) if check_attach: if not fail_check_attach: self.volume_api.check_attach(self.context, fake_volume, instance=instance).AndReturn(None) else: self.volume_api.check_attach(self.context, fake_volume, instance=instance).AndRaise( test.TestingException) return instance, expected_conn_info self.virt_driver.get_volume_connector(instance).AndReturn(connector) self.volume_api.initialize_connection( elevated_context, fake_volume['id'], connector).AndReturn(connection_info) if driver_attach: encryptors.get_encryption_metadata( elevated_context, self.volume_api, fake_volume['id'], connection_info).AndReturn(enc_data) if not fail_driver_attach: self.virt_driver.attach_volume( elevated_context, expected_conn_info, instance, bdm_dict['device_name'], disk_bus=bdm_dict['disk_bus'], device_type=bdm_dict['device_type'], encryption=enc_data).AndReturn(None) else: self.virt_driver.attach_volume( elevated_context, expected_conn_info, instance, bdm_dict['device_name'], disk_bus=bdm_dict['disk_bus'], device_type=bdm_dict['device_type'], encryption=enc_data).AndRaise(test.TestingException) self.volume_api.terminate_connection( elevated_context, fake_volume['id'], expected_conn_info).AndReturn(None) return instance, expected_conn_info self.volume_api.attach(elevated_context, fake_volume['id'], 'fake_uuid', bdm_dict['device_name']).AndReturn(None) driver_bdm._bdm_obj.save(self.context).AndReturn(None) return instance, expected_conn_info def test_volume_attach(self): test_bdm = self.driver_classes['volume']( self.volume_bdm) volume = {'id': 'fake-volume-id-1'} instance, expected_conn_info = self._test_volume_attach( test_bdm, self.volume_bdm, volume) self.mox.ReplayAll() test_bdm.attach(self.context, instance, self.volume_api, self.virt_driver) self.assertThat(test_bdm['connection_info'], matchers.DictMatches(expected_conn_info)) def check_volume_attach_check_attach_fails(self): test_bdm = self.driver_classes['volume']( self.volume_bdm) volume = {'id': 'fake-volume-id-1'} instance, _ = self._test_volume_attach( test_bdm, self.volume_bdm, volume, fail_check_attach=True) self.mox.ReplayAll() self.asserRaises(test.TestingException, test_bdm.attach, self.context, instance, self.volume_api, self.virt_driver) def test_volume_attach_no_check_driver_attach(self): test_bdm = self.driver_classes['volume']( self.volume_bdm) volume = {'id': 'fake-volume-id-1'} instance, expected_conn_info = self._test_volume_attach( test_bdm, self.volume_bdm, volume, check_attach=False, driver_attach=True) self.mox.ReplayAll() test_bdm.attach(self.context, instance, self.volume_api, self.virt_driver, do_check_attach=False, do_driver_attach=True) self.assertThat(test_bdm['connection_info'], matchers.DictMatches(expected_conn_info)) def check_volume_attach_driver_attach_fails(self): test_bdm = self.driver_classes['volume']( self.volume_bdm) volume = {'id': 'fake-volume-id-1'} instance, _ = self._test_volume_attach( test_bdm, self.volume_bdm, volume, fail_check_attach=True) self.mox.ReplayAll() self.asserRaises(test.TestingException, test_bdm.attach, self.context, instance, self.volume_api, self.virt_driver, do_driver_attach=True) def test_refresh_connection(self): test_bdm = self.driver_classes['snapshot']( self.snapshot_bdm) instance = {'id': 'fake_id', 'uuid': 'fake_uuid'} connector = {'ip': 'fake_ip', 'host': 'fake_host'} connection_info = {'data': {}} expected_conn_info = {'data': {}, 'serial': 'fake-volume-id-2'} self.mox.StubOutWithMock(test_bdm._bdm_obj, 'save') self.virt_driver.get_volume_connector(instance).AndReturn(connector) self.volume_api.initialize_connection( self.context, test_bdm.volume_id, connector).AndReturn(connection_info) test_bdm._bdm_obj.save(self.context).AndReturn(None) self.mox.ReplayAll() test_bdm.refresh_connection_info(self.context, instance, self.volume_api, self.virt_driver) self.assertThat(test_bdm['connection_info'], matchers.DictMatches(expected_conn_info)) def test_snapshot_attach_no_volume(self): no_volume_snapshot = self.snapshot_bdm.copy() no_volume_snapshot['volume_id'] = None test_bdm = self.driver_classes['snapshot'](no_volume_snapshot) snapshot = {'id': 'fake-snapshot-id-1'} volume = {'id': 'fake-volume-id-2'} wait_func = self.mox.CreateMockAnything() self.volume_api.get_snapshot(self.context, 'fake-snapshot-id-1').AndReturn(snapshot) self.volume_api.create(self.context, 3, '', '', snapshot).AndReturn(volume) wait_func(self.context, 'fake-volume-id-2').AndReturn(None) instance, expected_conn_info = self._test_volume_attach( test_bdm, no_volume_snapshot, volume) self.mox.ReplayAll() test_bdm.attach(self.context, instance, self.volume_api, self.virt_driver, wait_func) self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') def test_snapshot_attach_volume(self): test_bdm = self.driver_classes['snapshot']( self.snapshot_bdm) instance = {'id': 'fake_id', 'uuid': 'fake_uuid'} volume_class = self.driver_classes['volume'] self.mox.StubOutWithMock(volume_class, 'attach') # Make sure theses are not called self.mox.StubOutWithMock(self.volume_api, 'get_snapshot') self.mox.StubOutWithMock(self.volume_api, 'create') volume_class.attach(self.context, instance, self.volume_api, self.virt_driver).AndReturn(None) self.mox.ReplayAll() test_bdm.attach(self.context, instance, self.volume_api, self.virt_driver) self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') def test_image_attach_no_volume(self): no_volume_image = self.image_bdm.copy() no_volume_image['volume_id'] = None test_bdm = self.driver_classes['image'](no_volume_image) image = {'id': 'fake-image-id-1'} volume = {'id': 'fake-volume-id-2'} wait_func = self.mox.CreateMockAnything() self.volume_api.create(self.context, 1, '', '', image_id=image['id']).AndReturn(volume) wait_func(self.context, 'fake-volume-id-2').AndReturn(None) instance, expected_conn_info = self._test_volume_attach( test_bdm, no_volume_image, volume) self.mox.ReplayAll() test_bdm.attach(self.context, instance, self.volume_api, self.virt_driver, wait_func) self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') def test_image_attach_volume(self): test_bdm = self.driver_classes['image']( self.image_bdm) instance = {'id': 'fake_id', 'uuid': 'fake_uuid'} volume_class = self.driver_classes['volume'] self.mox.StubOutWithMock(volume_class, 'attach') # Make sure theses are not called self.mox.StubOutWithMock(self.volume_api, 'get_snapshot') self.mox.StubOutWithMock(self.volume_api, 'create') volume_class.attach(self.context, instance, self.volume_api, self.virt_driver).AndReturn(None) self.mox.ReplayAll() test_bdm.attach(self.context, instance, self.volume_api, self.virt_driver) self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') def test_convert_block_devices(self): converted = driver_block_device._convert_block_devices( self.driver_classes['volume'], [self.volume_bdm, self.ephemeral_bdm]) self.assertEqual(converted, [self.volume_driver_bdm]) def test_legacy_block_devices(self): test_snapshot = self.driver_classes['snapshot']( self.snapshot_bdm) block_device_mapping = [test_snapshot, test_snapshot] legacy_bdm = driver_block_device.legacy_block_devices( block_device_mapping) self.assertEqual(legacy_bdm, [self.snapshot_legacy_driver_bdm, self.snapshot_legacy_driver_bdm]) # Test that the ephemerals work as expected test_ephemerals = [self.driver_classes['ephemeral']( self.ephemeral_bdm) for _ in xrange(2)] expected = [self.ephemeral_legacy_driver_bdm.copy() for _ in xrange(2)] expected[0]['virtual_name'] = 'ephemeral0' expected[0]['num'] = 0 expected[1]['virtual_name'] = 'ephemeral1' expected[1]['num'] = 1 legacy_ephemerals = driver_block_device.legacy_block_devices( test_ephemerals) self.assertEqual(expected, legacy_ephemerals) def test_get_swap(self): swap = [self.swap_driver_bdm] legacy_swap = [self.swap_legacy_driver_bdm] no_swap = [self.volume_driver_bdm] self.assertEqual(swap[0], driver_block_device.get_swap(swap)) self.assertEqual(legacy_swap[0], driver_block_device.get_swap(legacy_swap)) self.assertEqual(no_swap, driver_block_device.get_swap(no_swap)) self.assertIsNone(driver_block_device.get_swap([])) def test_is_implemented(self): for bdm in (self.image_bdm, self.volume_bdm, self.swap_bdm, self.ephemeral_bdm, self.snapshot_bdm): self.assertTrue(driver_block_device.is_implemented(bdm)) local_image = self.image_bdm.copy() local_image['destination_type'] = 'local' self.assertFalse(driver_block_device.is_implemented(local_image)) nova-2014.1/nova/tests/virt/baremetal/0000775000175400017540000000000012323722546020735 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/baremetal/test_pxe.py0000664000175400017540000006357112323721510023144 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright 2012 Hewlett-Packard Development Company, L.P. # Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for baremetal pxe driver.""" import os import mox from oslo.config import cfg from testtools import matchers from nova import exception from nova.objects import flavor as flavor_obj from nova.openstack.common.db import exception as db_exc from nova.tests.image import fake as fake_image from nova.tests import utils from nova.tests.virt.baremetal.db import base as bm_db_base from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import db from nova.virt.baremetal import pxe from nova.virt.baremetal import utils as bm_utils from nova.virt.disk import api as disk_api from nova.virt import fake as fake_virt CONF = cfg.CONF COMMON_FLAGS = dict( firewall_driver='nova.virt.baremetal.fake.FakeFirewallDriver', host='test_host', ) BAREMETAL_FLAGS = dict( driver='nova.virt.baremetal.pxe.PXE', flavor_extra_specs=['cpu_arch:test', 'test_spec:test_value'], power_manager='nova.virt.baremetal.fake.FakePowerManager', vif_driver='nova.virt.baremetal.fake.FakeVifDriver', volume_driver='nova.virt.baremetal.fake.FakeVolumeDriver', group='baremetal', ) class BareMetalPXETestCase(bm_db_base.BMDBTestCase): def setUp(self): super(BareMetalPXETestCase, self).setUp() self.flags(**COMMON_FLAGS) self.flags(**BAREMETAL_FLAGS) self.driver = pxe.PXE(fake_virt.FakeVirtAPI()) fake_image.stub_out_image_service(self.stubs) self.addCleanup(fake_image.FakeImageService_reset) self.context = utils.get_test_admin_context() self.test_block_device_info = None, self.instance = utils.get_test_instance() self.test_network_info = utils.get_test_network_info() self.node_info = bm_db_utils.new_bm_node( service_host='test_host', cpus=4, memory_mb=2048, ) self.nic_info = [ {'address': '22:22:22:22:22:22', 'datapath_id': '0x1', 'port_no': 1}, {'address': '33:33:33:33:33:33', 'datapath_id': '0x2', 'port_no': 2}, ] def _create_node(self): # File injection is off by default, but we should continue to test it # until it is removed. CONF.set_override('use_file_injection', True, 'baremetal') self.node = db.bm_node_create(self.context, self.node_info) for nic in self.nic_info: db.bm_interface_create( self.context, self.node['id'], nic['address'], nic['datapath_id'], nic['port_no'], ) self.instance['node'] = self.node['id'] self.spawn_params = dict( admin_password='test_pass', block_device_info=self.test_block_device_info, context=self.context, image_meta=utils.get_test_image_info(None, self.instance), injected_files=[('/fake/path', 'hello world')], instance=self.instance, network_info=self.test_network_info, ) class PXEClassMethodsTestCase(BareMetalPXETestCase): def test_build_pxe_config(self): args = { 'deployment_id': 'aaa', 'deployment_key': 'bbb', 'deployment_iscsi_iqn': 'ccc', 'deployment_aki_path': 'ddd', 'deployment_ari_path': 'eee', 'aki_path': 'fff', 'ari_path': 'ggg', 'network_info': self.test_network_info, } config = pxe.build_pxe_config(**args) self.assertThat(config, matchers.StartsWith('default deploy')) # deploy bits are in the deploy section start = config.index('label deploy') end = config.index('label boot') self.assertThat(config[start:end], matchers.MatchesAll( matchers.Contains('kernel ddd'), matchers.Contains('initrd=eee'), matchers.Contains('deployment_id=aaa'), matchers.Contains('deployment_key=bbb'), matchers.Contains('iscsi_target_iqn=ccc'), matchers.Not(matchers.Contains('kernel fff')), )) # boot bits are in the boot section start = config.index('label boot') self.assertThat(config[start:], matchers.MatchesAll( matchers.Contains('kernel fff'), matchers.Contains('initrd=ggg'), matchers.Not(matchers.Contains('kernel ddd')), )) def test_build_pxe_network_config(self): self.flags( pxe_network_config=True, group='baremetal', ) net = utils.get_test_network_info(1) config = pxe.build_pxe_network_config(net) self.assertIn('eth0:off', config) self.assertNotIn('eth1', config) net = utils.get_test_network_info(2) config = pxe.build_pxe_network_config(net) self.assertIn('eth0:off', config) self.assertIn('eth1:off', config) def test_build_network_config(self): net = utils.get_test_network_info(1) config = pxe.build_network_config(net) self.assertIn('eth0', config) self.assertNotIn('eth1', config) net = utils.get_test_network_info(2) config = pxe.build_network_config(net) self.assertIn('eth0', config) self.assertIn('eth1', config) def test_build_network_config_dhcp(self): self.flags( net_config_template='$pybasedir/nova/virt/baremetal/' 'net-dhcp.ubuntu.template', group='baremetal', ) net = utils.get_test_network_info() net[0]['network']['subnets'][0]['ips'][0]['address'] = '1.2.3.4' config = pxe.build_network_config(net) self.assertIn('iface eth0 inet dhcp', config) self.assertNotIn('address 1.2.3.4', config) def test_build_network_config_static(self): self.flags( net_config_template='$pybasedir/nova/virt/baremetal/' 'net-static.ubuntu.template', group='baremetal', ) net = utils.get_test_network_info() net[0]['network']['subnets'][0]['ips'][0]['address'] = '1.2.3.4' config = pxe.build_network_config(net) self.assertIn('iface eth0 inet static', config) self.assertIn('address 1.2.3.4', config) def test_build_network_config_static_parameters(self): self.flags(use_ipv6=True) self.flags( net_config_template='$pybasedir/nova/virt/baremetal/' 'net-static.ubuntu.template', group='baremetal' ) net = utils.get_test_network_info() net[0]['network']['subnets'][0]['cidr'] = '10.1.1.0/24' net[0]['network']['subnets'][0]['gateway']['address'] = '10.1.1.1' net[0]['network']['subnets'][0]['dns'][0]['address'] = '10.1.1.2' net[0]['network']['subnets'][0]['dns'][1]['address'] = '10.1.1.3' net[0]['network']['subnets'][1]['cidr'] = 'fc00::/7' net[0]['network']['subnets'][1]['ips'][0]['address'] = 'fc00::1' net[0]['network']['subnets'][1]['gateway']['address'] = 'fc00::2' config = pxe.build_network_config(net) self.assertIn('iface eth0 inet static', config) self.assertIn('gateway 10.1.1.1', config) self.assertIn('dns-nameservers 10.1.1.2 10.1.1.3', config) self.assertIn('iface eth0 inet6 static', config) self.assertIn('address fc00::1', config) self.assertIn('netmask 7', config) self.assertIn('gateway fc00::2', config) def test_image_dir_path(self): self.assertEqual( os.path.join(CONF.instances_path, 'instance-00000001'), pxe.get_image_dir_path(self.instance)) def test_image_file_path(self): self.assertEqual( os.path.join( CONF.instances_path, 'instance-00000001', 'disk'), pxe.get_image_file_path(self.instance)) def test_pxe_config_file_path(self): self.instance['uuid'] = 'aaaa-bbbb-cccc' self.assertEqual( os.path.join(CONF.baremetal.tftp_root, 'aaaa-bbbb-cccc', 'config'), pxe.get_pxe_config_file_path(self.instance)) def test_pxe_mac_path(self): self.assertEqual( os.path.join(CONF.baremetal.tftp_root, 'pxelinux.cfg', '01-23-45-67-89-ab'), pxe.get_pxe_mac_path('23:45:67:89:AB')) def test_get_instance_deploy_ids(self): self.instance['extra_specs'] = { 'baremetal:deploy_kernel_id': 'aaaa', 'baremetal:deploy_ramdisk_id': 'bbbb', } self.flags(deploy_kernel="fail", group='baremetal') self.flags(deploy_ramdisk="fail", group='baremetal') self.assertEqual('aaaa', pxe.get_deploy_aki_id(self.instance)) self.assertEqual('bbbb', pxe.get_deploy_ari_id(self.instance)) def test_get_default_deploy_ids(self): self.instance['extra_specs'] = {} self.flags(deploy_kernel="aaaa", group='baremetal') self.flags(deploy_ramdisk="bbbb", group='baremetal') self.assertEqual('aaaa', pxe.get_deploy_aki_id(self.instance)) self.assertEqual('bbbb', pxe.get_deploy_ari_id(self.instance)) def test_get_partition_sizes(self): # default "kinda.big" instance sizes = pxe.get_partition_sizes(self.instance) self.assertEqual(40960, sizes[0]) self.assertEqual(1024, sizes[1]) def test_swap_not_zero(self): # override swap to 0 flavor = utils.get_test_flavor(self.context) flavor['swap'] = 0 self.instance = utils.get_test_instance(self.context, flavor) sizes = pxe.get_partition_sizes(self.instance) self.assertEqual(40960, sizes[0]) self.assertEqual(1, sizes[1]) def test_get_tftp_image_info(self): flavor = utils.get_test_flavor() # Raises an exception when options are neither specified # on the instance nor in configuration file CONF.baremetal.deploy_kernel = None CONF.baremetal.deploy_ramdisk = None self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Test that other non-true values also raise an exception CONF.baremetal.deploy_kernel = "" CONF.baremetal.deploy_ramdisk = "" self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Even if the instance includes kernel_id and ramdisk_id, # we still need deploy_kernel_id and deploy_ramdisk_id. # If those aren't present in instance[], and not specified in # config file, then we raise an exception. self.instance['kernel_id'] = 'aaaa' self.instance['ramdisk_id'] = 'bbbb' self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # If an instance doesn't specify deploy_kernel_id or deploy_ramdisk_id, # but defaults are set in the config file, we should use those. # Here, we confirm both that all four values were set # and that the proper paths are getting set for all of them CONF.baremetal.deploy_kernel = 'cccc' CONF.baremetal.deploy_ramdisk = 'dddd' base = os.path.join(CONF.baremetal.tftp_root, self.instance['uuid']) res = pxe.get_tftp_image_info(self.instance, flavor) expected = { 'kernel': ['aaaa', os.path.join(base, 'kernel')], 'ramdisk': ['bbbb', os.path.join(base, 'ramdisk')], 'deploy_kernel': ['cccc', os.path.join(base, 'deploy_kernel')], 'deploy_ramdisk': ['dddd', os.path.join(base, 'deploy_ramdisk')], } self.assertEqual(expected, res) # If deploy_kernel_id and deploy_ramdisk_id are specified on # image extra_specs, this should override any default configuration. # Note that it is passed on the 'instance' object, despite being # inherited from the flavor_extra_specs table. extra_specs = { 'baremetal:deploy_kernel_id': 'eeee', 'baremetal:deploy_ramdisk_id': 'ffff', } flavor['extra_specs'] = extra_specs res = pxe.get_tftp_image_info(self.instance, flavor) self.assertEqual('eeee', res['deploy_kernel'][0]) self.assertEqual('ffff', res['deploy_ramdisk'][0]) # However, if invalid values are passed on the image extra_specs, # this should still raise an exception. extra_specs = { 'baremetal:deploy_kernel_id': '', 'baremetal:deploy_ramdisk_id': '', } flavor['extra_specs'] = extra_specs self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) class PXEPrivateMethodsTestCase(BareMetalPXETestCase): def test_collect_mac_addresses(self): self._create_node() address_list = [nic['address'] for nic in self.nic_info] address_list.sort() macs = self.driver._collect_mac_addresses(self.context, self.node) self.assertEqual(address_list, macs) def test_cache_tftp_images(self): self.instance['kernel_id'] = 'aaaa' self.instance['ramdisk_id'] = 'bbbb' flavor = utils.get_test_flavor() extra_specs = { 'baremetal:deploy_kernel_id': 'cccc', 'baremetal:deploy_ramdisk_id': 'dddd', } flavor['extra_specs'] = extra_specs image_info = pxe.get_tftp_image_info(self.instance, flavor) self.mox.StubOutWithMock(os, 'makedirs') self.mox.StubOutWithMock(os.path, 'exists') os.makedirs(os.path.join(CONF.baremetal.tftp_root, self.instance['uuid'])).AndReturn(True) for uuid, path in [image_info[label] for label in image_info]: os.path.exists(path).AndReturn(True) self.mox.ReplayAll() self.driver._cache_tftp_images( self.context, self.instance, image_info) self.mox.VerifyAll() def test_cache_image(self): self.mox.StubOutWithMock(os, 'makedirs') self.mox.StubOutWithMock(os, 'unlink') self.mox.StubOutWithMock(os.path, 'exists') os.makedirs(pxe.get_image_dir_path(self.instance)).AndReturn(True) disk_path = os.path.join( pxe.get_image_dir_path(self.instance), 'disk') os.unlink(disk_path).AndReturn(None) os.path.exists(disk_path).AndReturn(True) os.path.exists(pxe.get_image_file_path(self.instance)).\ AndReturn(True) self.mox.ReplayAll() image_meta = utils.get_test_image_info( self.context, self.instance) self.driver._cache_image( self.context, self.instance, image_meta) self.mox.VerifyAll() def test_inject_into_image(self): # NOTE(deva): we could also test this method by stubbing # nova.virt.disk.api._inject_*_into_fs self._create_node() files = [] self.instance['hostname'] = 'fake hostname' files.append(('/etc/hostname', 'fake hostname')) self.instance['key_data'] = 'fake ssh key' net_info = utils.get_test_network_info(1) net = pxe.build_network_config(net_info) admin_password = 'fake password' self.mox.StubOutWithMock(disk_api, 'inject_data') disk_api.inject_data( admin_password=admin_password, image=pxe.get_image_file_path(self.instance), key='fake ssh key', metadata=None, partition=None, net=net, files=files, # this is what we're really testing ).AndReturn(True) self.mox.ReplayAll() self.driver._inject_into_image( self.context, self.node, self.instance, network_info=net_info, admin_password=admin_password, injected_files=None) self.mox.VerifyAll() class PXEPublicMethodsTestCase(BareMetalPXETestCase): def test_cache_images(self): self._create_node() self.mox.StubOutWithMock(flavor_obj.Flavor, 'get_by_id') self.mox.StubOutWithMock(pxe, "get_tftp_image_info") self.mox.StubOutWithMock(self.driver, "_cache_tftp_images") self.mox.StubOutWithMock(self.driver, "_cache_image") self.mox.StubOutWithMock(self.driver, "_inject_into_image") flavor_obj.Flavor.get_by_id(self.context, self.instance['instance_type_id'] ).AndReturn({}) pxe.get_tftp_image_info(self.instance, {}).AndReturn([]) self.driver._cache_tftp_images(self.context, self.instance, []) self.driver._cache_image(self.context, self.instance, []) self.driver._inject_into_image(self.context, self.node, self.instance, self.test_network_info, None, '') self.mox.ReplayAll() self.driver.cache_images( self.context, self.node, self.instance, admin_password='', image_meta=[], injected_files=None, network_info=self.test_network_info, ) self.mox.VerifyAll() def test_destroy_images(self): self._create_node() self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') bm_utils.unlink_without_raise(pxe.get_image_file_path(self.instance)) bm_utils.rmtree_without_raise(pxe.get_image_dir_path(self.instance)) self.mox.ReplayAll() self.driver.destroy_images(self.context, self.node, self.instance) self.mox.VerifyAll() def test_dhcp_options_for_instance(self): self._create_node() self.mox.ReplayAll() expected = [{'opt_name': 'bootfile-name', 'opt_value': CONF.baremetal.pxe_bootfile_name}, {'opt_name': 'server-ip-address', 'opt_value': CONF.my_ip}, {'opt_name': 'tftp-server', 'opt_value': CONF.my_ip}] res = self.driver.dhcp_options_for_instance(self.instance) self.assertEqual(expected.sort(), res.sort()) self.mox.VerifyAll() def test_activate_bootloader_passes_details(self): self._create_node() macs = [nic['address'] for nic in self.nic_info] macs.sort() image_info = { 'deploy_kernel': [None, 'aaaa'], 'deploy_ramdisk': [None, 'bbbb'], 'kernel': [None, 'cccc'], 'ramdisk': [None, 'dddd'], } self.instance['uuid'] = 'fake-uuid' iqn = "iqn-%s" % self.instance['uuid'] pxe_config = 'this is a fake pxe config' pxe_path = pxe.get_pxe_config_file_path(self.instance) image_path = pxe.get_image_file_path(self.instance) self.mox.StubOutWithMock(flavor_obj.Flavor, 'get_by_id') self.mox.StubOutWithMock(pxe, 'get_tftp_image_info') self.mox.StubOutWithMock(pxe, 'get_partition_sizes') self.mox.StubOutWithMock(bm_utils, 'random_alnum') self.mox.StubOutWithMock(pxe, 'build_pxe_config') self.mox.StubOutWithMock(bm_utils, 'write_to_file') self.mox.StubOutWithMock(bm_utils, 'create_link_without_raise') flavor_obj.Flavor.get_by_id(self.context, self.instance['instance_type_id'] ).AndReturn({}) pxe.get_tftp_image_info(self.instance, {}).AndReturn(image_info) pxe.get_partition_sizes(self.instance).AndReturn((0, 0, 0)) bm_utils.random_alnum(32).AndReturn('alnum') pxe.build_pxe_config( self.node['id'], 'alnum', iqn, 'aaaa', 'bbbb', 'cccc', 'dddd', self.test_network_info).AndReturn(pxe_config) bm_utils.write_to_file(pxe_path, pxe_config) for mac in macs: bm_utils.create_link_without_raise( pxe_path, pxe.get_pxe_mac_path(mac)) self.mox.ReplayAll() self.driver.activate_bootloader(self.context, self.node, self.instance, network_info=self.test_network_info) self.mox.VerifyAll() def test_activate_and_deactivate_bootloader(self): self._create_node() flavor = flavor_obj.Flavor( context=self.context, extra_specs={ 'baremetal:deploy_kernel_id': 'eeee', 'baremetal:deploy_ramdisk_id': 'ffff', }) self.instance['uuid'] = 'fake-uuid' self.mox.StubOutWithMock(flavor_obj.Flavor, 'get_by_id') self.mox.StubOutWithMock(bm_utils, 'write_to_file') self.mox.StubOutWithMock(bm_utils, 'create_link_without_raise') self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') flavor_obj.Flavor.get_by_id( self.context, self.instance['instance_type_id']).AndReturn( flavor) # create the config file bm_utils.write_to_file(mox.StrContains('fake-uuid'), mox.StrContains(CONF.baremetal.tftp_root)) # unlink and link the 2 interfaces for i in range(2): bm_utils.unlink_without_raise(mox.Or( mox.StrContains('fake-uuid'), mox.StrContains(CONF.baremetal.tftp_root))) bm_utils.create_link_without_raise( mox.StrContains('fake-uuid'), mox.StrContains(CONF.baremetal.tftp_root)) # unlink all 2 interfaces, 4 images, and the config file for i in range(7): bm_utils.unlink_without_raise(mox.Or( mox.StrContains('fake-uuid'), mox.StrContains(CONF.baremetal.tftp_root))) bm_utils.rmtree_without_raise(mox.StrContains('fake-uuid')) self.mox.ReplayAll() # activate and deactivate the bootloader # and check the deployment task_state in the database row = db.bm_node_get(self.context, 1) self.assertIsNone(row['deploy_key']) self.driver.activate_bootloader(self.context, self.node, self.instance, network_info=self.test_network_info) row = db.bm_node_get(self.context, 1) self.assertIsNotNone(row['deploy_key']) self.driver.deactivate_bootloader(self.context, self.node, self.instance) row = db.bm_node_get(self.context, 1) self.assertIsNone(row['deploy_key']) self.mox.VerifyAll() def test_deactivate_bootloader_for_nonexistent_instance(self): self._create_node() self.instance['uuid'] = 'fake-uuid' pxe_path = pxe.get_pxe_config_file_path(self.instance) self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') self.mox.StubOutWithMock(pxe, 'get_tftp_image_info') self.mox.StubOutWithMock(self.driver, '_collect_mac_addresses') extra_specs = dict(extra_specs={ 'baremetal:deploy_ramdisk_id': 'ignore', 'baremetal:deploy_kernel_id': 'ignore'}) pxe.get_tftp_image_info(self.instance, extra_specs).\ AndRaise(exception.NovaException) bm_utils.unlink_without_raise(pxe_path) self.driver._collect_mac_addresses(self.context, self.node).\ AndRaise(db_exc.DBError) bm_utils.rmtree_without_raise( os.path.join(CONF.baremetal.tftp_root, 'fake-uuid')) self.mox.ReplayAll() self.driver.deactivate_bootloader( self.context, self.node, self.instance) self.mox.VerifyAll() def test_activate_node(self): self._create_node() self.instance['uuid'] = 'fake-uuid' self.flags(pxe_deploy_timeout=1, group='baremetal') db.bm_node_update(self.context, 1, {'task_state': baremetal_states.DEPLOYING, 'instance_uuid': 'fake-uuid'}) # test timeout self.assertRaises(exception.InstanceDeployFailure, self.driver.activate_node, self.context, self.node, self.instance) # test DEPLOYDONE db.bm_node_update(self.context, 1, {'task_state': baremetal_states.DEPLOYDONE}) self.driver.activate_node(self.context, self.node, self.instance) # test no deploy -- state is just ACTIVE db.bm_node_update(self.context, 1, {'task_state': baremetal_states.ACTIVE}) self.driver.activate_node(self.context, self.node, self.instance) # test node gone db.bm_node_destroy(self.context, 1) self.assertRaises(exception.InstanceDeployFailure, self.driver.activate_node, self.context, self.node, self.instance) nova-2014.1/nova/tests/virt/baremetal/test_driver.py0000664000175400017540000005511312323721477023650 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright 2012 Hewlett-Packard Development Company, L.P. # Copyright (c) 2012 NTT DOCOMO, INC. # Copyright (c) 2011 University of Southern California / ISI # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for the base baremetal driver class.""" import mock import mox from oslo.config import cfg from nova.compute import power_state from nova.compute import task_states from nova import db as main_db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.image import fake as fake_image from nova.tests import utils from nova.tests.virt.baremetal.db import base as bm_db_base from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import db from nova.virt.baremetal import driver as bm_driver from nova.virt.baremetal import fake from nova.virt import fake as fake_virt CONF = cfg.CONF COMMON_FLAGS = dict( firewall_driver='nova.virt.baremetal.fake.FakeFirewallDriver', host='test_host', ) BAREMETAL_FLAGS = dict( driver='nova.virt.baremetal.fake.FakeDriver', flavor_extra_specs=['cpu_arch:test', 'test_spec:test_value'], power_manager='nova.virt.baremetal.fake.FakePowerManager', vif_driver='nova.virt.baremetal.fake.FakeVifDriver', volume_driver='nova.virt.baremetal.fake.FakeVolumeDriver', group='baremetal', ) class BareMetalDriverNoDBTestCase(test.NoDBTestCase): def setUp(self): super(BareMetalDriverNoDBTestCase, self).setUp() self.flags(**COMMON_FLAGS) self.flags(**BAREMETAL_FLAGS) self.driver = bm_driver.BareMetalDriver(None) def test_validate_driver_loading(self): self.assertIsInstance(self.driver.driver, fake.FakeDriver) self.assertIsInstance(self.driver.vif_driver, fake.FakeVifDriver) self.assertIsInstance(self.driver.volume_driver, fake.FakeVolumeDriver) self.assertIsInstance(self.driver.firewall_driver, fake.FakeFirewallDriver) def test_driver_capabilities(self): self.assertTrue(self.driver.capabilities['has_imagecache']) self.assertFalse(self.driver.capabilities['supports_recreate']) class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): def setUp(self): super(BareMetalDriverWithDBTestCase, self).setUp() self.flags(**COMMON_FLAGS) self.flags(**BAREMETAL_FLAGS) fake_image.stub_out_image_service(self.stubs) self.context = utils.get_test_admin_context() self.driver = bm_driver.BareMetalDriver(fake_virt.FakeVirtAPI()) self.addCleanup(fake_image.FakeImageService_reset) def _create_node(self, node_info=None, nic_info=None, ephemeral=True): result = {} if node_info is None: node_info = bm_db_utils.new_bm_node( id=123, service_host='test_host', cpus=2, memory_mb=2048, ) if nic_info is None: nic_info = [ {'address': '01:23:45:67:89:01', 'datapath_id': '0x1', 'port_no': 1}, {'address': '01:23:45:67:89:02', 'datapath_id': '0x2', 'port_no': 2}, ] result['node_info'] = node_info result['nic_info'] = nic_info result['node'] = db.bm_node_create(self.context, node_info) for nic in nic_info: db.bm_interface_create( self.context, result['node']['id'], nic['address'], nic['datapath_id'], nic['port_no'], ) if ephemeral: result['instance'] = utils.get_test_instance() else: flavor = utils.get_test_flavor(options={'ephemeral_gb': 0}) result['instance'] = utils.get_test_instance(flavor=flavor) result['instance']['node'] = result['node']['uuid'] result['spawn_params'] = dict( admin_password='test_pass', block_device_info=None, context=self.context, image_meta=utils.get_test_image_info( None, result['instance']), injected_files=[('/fake/path', 'hello world')], instance=result['instance'], network_info=utils.get_test_network_info(), ) result['destroy_params'] = dict( context=self.context, instance=result['instance'], network_info=result['spawn_params']['network_info'], block_device_info=result['spawn_params']['block_device_info'], ) instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), result['instance']) instance.node = result['node']['uuid'] result['rebuild_params'] = dict( context=self.context, instance=instance, image_meta=utils.get_test_image_info(None, result['instance']), injected_files=[('/fake/path', 'hello world')], admin_password='test_pass', bdms={}, detach_block_devices=self.mox.CreateMockAnything(), attach_block_devices=self.mox.CreateMockAnything(), network_info=result['spawn_params']['network_info'], block_device_info=result['spawn_params']['block_device_info'], ) return result def test_get_host_stats(self): node = self._create_node() stats = self.driver.get_host_stats() self.assertIsInstance(stats, list) self.assertEqual(len(stats), 1) stats = stats[0] self.assertEqual(stats['cpu_arch'], 'test') self.assertEqual(stats['test_spec'], 'test_value') self.assertEqual(stats['hypervisor_type'], 'baremetal') self.assertEqual(stats['hypervisor_hostname'], node['node']['uuid']) self.assertEqual(stats['host'], 'test_host') self.assertEqual(stats['vcpus'], 2) self.assertEqual(stats['host_memory_total'], 2048) def test_spawn_ok(self): node = self._create_node() self.driver.spawn(**node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.ACTIVE) self.assertEqual(row['instance_uuid'], node['instance']['uuid']) self.assertEqual(row['instance_name'], node['instance']['hostname']) instance = main_db.instance_get_by_uuid(self.context, node['instance']['uuid']) self.assertEqual(instance['default_ephemeral_device'], '/dev/sda1') def test_spawn_no_ephemeral_ok(self): node = self._create_node(ephemeral=False) self.driver.spawn(**node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.ACTIVE) self.assertEqual(row['instance_uuid'], node['instance']['uuid']) self.assertEqual(row['instance_name'], node['instance']['hostname']) instance = main_db.instance_get_by_uuid(self.context, node['instance']['uuid']) self.assertIsNone(instance['default_ephemeral_device']) def _test_rebuild(self, ephemeral): node = self._create_node(ephemeral=ephemeral) self.driver.spawn(**node['spawn_params']) after_spawn = db.bm_node_get(self.context, node['node']['id']) instance = node['rebuild_params']['instance'] instance.task_state = task_states.REBUILDING instance.save(expected_task_state=[None]) self.driver.rebuild(preserve_ephemeral=ephemeral, **node['rebuild_params']) after_rebuild = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(after_rebuild['task_state'], baremetal_states.ACTIVE) self.assertEqual(after_rebuild['preserve_ephemeral'], ephemeral) self.assertEqual(after_spawn['instance_uuid'], after_rebuild['instance_uuid']) def test_rebuild_ok(self): self._test_rebuild(ephemeral=False) def test_rebuild_preserve_ephemeral(self): self._test_rebuild(ephemeral=True) def test_macs_from_nic_for_instance(self): node = self._create_node() expected = set([nic['address'] for nic in node['nic_info']]) self.assertEqual( expected, self.driver.macs_for_instance(node['instance'])) def test_macs_for_instance_after_spawn(self): node = self._create_node() self.driver.spawn(**node['spawn_params']) expected = set([nic['address'] for nic in node['nic_info']]) self.assertEqual( expected, self.driver.macs_for_instance(node['instance'])) def test_macs_for_instance(self): node = self._create_node() expected = set(['01:23:45:67:89:01', '01:23:45:67:89:02']) self.assertEqual( expected, self.driver.macs_for_instance(node['instance'])) def test_macs_for_instance_no_interfaces(self): # Nodes cannot boot with no MACs, so we raise an error if that happens. node = self._create_node(nic_info=[]) self.assertRaises(exception.NovaException, self.driver.macs_for_instance, node['instance']) def test_spawn_node_already_associated(self): node = self._create_node() db.bm_node_update(self.context, node['node']['id'], {'instance_uuid': '1234-5678'}) self.assertRaises(exception.NovaException, self.driver.spawn, **node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertIsNone(row['task_state']) def test_spawn_node_in_use(self): node = self._create_node() self.driver.spawn(**node['spawn_params']) self.assertRaises(exception.NovaException, self.driver.spawn, **node['spawn_params']) def test_spawn_node_not_found(self): node = self._create_node() db.bm_node_update(self.context, node['node']['id'], {'uuid': 'hide-this-node'}) self.assertRaises(exception.NovaException, self.driver.spawn, **node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertIsNone(row['task_state']) def test_spawn_fails(self): node = self._create_node() self.mox.StubOutWithMock(fake.FakePowerManager, 'activate_node') fake.FakePowerManager.activate_node().AndRaise(test.TestingException) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.driver.spawn, **node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.DELETED) def test_spawn_prepared(self): node = self._create_node() def update_2prepared(context, node, instance, state): row = db.bm_node_get(context, node['id']) self.assertEqual(row['task_state'], baremetal_states.BUILDING) db.bm_node_update( context, node['id'], {'task_state': baremetal_states.PREPARED}) self.mox.StubOutWithMock(fake.FakeDriver, 'activate_node') self.mox.StubOutWithMock(bm_driver, '_update_state') bm_driver._update_state( self.context, mox.IsA(node['node']), node['instance'], baremetal_states.PREPARED).WithSideEffects(update_2prepared) fake.FakeDriver.activate_node( self.context, mox.IsA(node['node']), node['instance']).AndRaise(test.TestingException) bm_driver._update_state( self.context, mox.IsA(node['node']), node['instance'], baremetal_states.ERROR).AndRaise(test.TestingException) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.driver.spawn, **node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.PREPARED) def test_spawn_fails_to_cleanup(self): node = self._create_node() self.mox.StubOutWithMock(fake.FakePowerManager, 'activate_node') self.mox.StubOutWithMock(fake.FakePowerManager, 'deactivate_node') fake.FakePowerManager.deactivate_node().AndReturn(None) fake.FakePowerManager.activate_node().AndRaise(test.TestingException) fake.FakePowerManager.deactivate_node().AndRaise(test.TestingException) self.mox.ReplayAll() self.assertRaises(test.TestingException, self.driver.spawn, **node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.ERROR) def test_spawn_destroy_images_on_deploy(self): node = self._create_node() self.driver.driver.destroy_images = mock.MagicMock() self.driver.spawn(**node['spawn_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.ACTIVE) self.assertEqual(row['instance_uuid'], node['instance']['uuid']) self.assertEqual(row['instance_name'], node['instance']['hostname']) instance = main_db.instance_get_by_uuid(self.context, node['instance']['uuid']) self.assertIsNotNone(instance) self.assertEqual(1, self.driver.driver.destroy_images.call_count) def test_destroy_ok(self): node = self._create_node() self.driver.spawn(**node['spawn_params']) self.driver.destroy(**node['destroy_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.DELETED) self.assertIsNone(row['instance_uuid']) self.assertIsNone(row['instance_name']) def test_destroy_fails(self): node = self._create_node() self.mox.StubOutWithMock(fake.FakePowerManager, 'deactivate_node') fake.FakePowerManager.deactivate_node().AndReturn(None) fake.FakePowerManager.deactivate_node().AndRaise(test.TestingException) self.mox.ReplayAll() self.driver.spawn(**node['spawn_params']) self.assertRaises(test.TestingException, self.driver.destroy, **node['destroy_params']) row = db.bm_node_get(self.context, node['node']['id']) self.assertEqual(row['task_state'], baremetal_states.ERROR) self.assertEqual(row['instance_uuid'], node['instance']['uuid']) def test_get_available_resources(self): node = self._create_node() resources = self.driver.get_available_resource(node['node']['uuid']) self.assertEqual(resources['memory_mb'], node['node_info']['memory_mb']) self.assertEqual(resources['memory_mb_used'], 0) self.assertEqual(resources['supported_instances'], '[["test", "baremetal", "baremetal"]]') self.assertEqual(resources['stats'], '{"cpu_arch": "test", "baremetal_driver": ' '"nova.virt.baremetal.fake.FakeDriver", ' '"test_spec": "test_value"}') self.driver.spawn(**node['spawn_params']) resources = self.driver.get_available_resource(node['node']['uuid']) self.assertEqual(resources['memory_mb_used'], node['node_info']['memory_mb']) self.driver.destroy(**node['destroy_params']) resources = self.driver.get_available_resource(node['node']['uuid']) self.assertEqual(resources['memory_mb_used'], 0) stats = jsonutils.loads(resources['stats']) self.assertEqual(stats['test_spec'], 'test_value') def test_get_available_nodes(self): self.assertEqual(0, len(self.driver.get_available_nodes())) self.assertEqual(0, len(self.driver.get_available_nodes(refresh=True))) node1 = self._create_node() self.assertEqual(1, len(self.driver.get_available_nodes())) node1['instance']['hostname'] = 'test-host-1' self.driver.spawn(**node1['spawn_params']) self.assertEqual(1, len(self.driver.get_available_nodes())) self.assertEqual([node1['node']['uuid']], self.driver.get_available_nodes()) def test_list_instances(self): self.assertEqual([], self.driver.list_instances()) node1 = self._create_node() self.assertEqual([], self.driver.list_instances()) node_info = bm_db_utils.new_bm_node( id=456, service_host='test_host', cpus=2, memory_mb=2048, ) nic_info = [ {'address': 'cc:cc:cc', 'datapath_id': '0x1', 'port_no': 1}, {'address': 'dd:dd:dd', 'datapath_id': '0x2', 'port_no': 2}, ] node2 = self._create_node(node_info=node_info, nic_info=nic_info) self.assertEqual([], self.driver.list_instances()) node1['instance']['hostname'] = 'test-host-1' node2['instance']['hostname'] = 'test-host-2' self.driver.spawn(**node1['spawn_params']) self.assertEqual(['test-host-1'], self.driver.list_instances()) self.driver.spawn(**node2['spawn_params']) self.assertEqual(['test-host-1', 'test-host-2'], self.driver.list_instances()) self.driver.destroy(**node1['destroy_params']) self.assertEqual(['test-host-2'], self.driver.list_instances()) self.driver.destroy(**node2['destroy_params']) self.assertEqual([], self.driver.list_instances()) def test_get_info_no_such_node(self): node = self._create_node() self.assertRaises(exception.InstanceNotFound, self.driver.get_info, node['instance']) def test_get_info_ok(self): node = self._create_node() db.bm_node_associate_and_update(self.context, node['node']['uuid'], {'instance_uuid': node['instance']['uuid'], 'instance_name': node['instance']['hostname'], 'task_state': baremetal_states.ACTIVE}) res = self.driver.get_info(node['instance']) self.assertEqual(res['state'], power_state.RUNNING) def test_get_info_with_defunct_pm(self): # test fix for bug 1178378 node = self._create_node() db.bm_node_associate_and_update(self.context, node['node']['uuid'], {'instance_uuid': node['instance']['uuid'], 'instance_name': node['instance']['hostname'], 'task_state': baremetal_states.ACTIVE}) # fake the power manager and don't get a power state self.mox.StubOutWithMock(fake.FakePowerManager, 'is_power_on') fake.FakePowerManager.is_power_on().AndReturn(None) self.mox.ReplayAll() res = self.driver.get_info(node['instance']) # prior to the fix, returned power_state was SHUTDOWN self.assertEqual(res['state'], power_state.NOSTATE) self.mox.VerifyAll() def test_attach_volume(self): connection_info = {'_fake_connection_info': None} instance = utils.get_test_instance() mountpoint = '/dev/sdd' self.mox.StubOutWithMock(self.driver.volume_driver, 'attach_volume') self.driver.volume_driver.attach_volume(connection_info, instance, mountpoint) self.mox.ReplayAll() self.driver.attach_volume(None, connection_info, instance, mountpoint) def test_detach_volume(self): connection_info = {'_fake_connection_info': None} instance = utils.get_test_instance() mountpoint = '/dev/sdd' self.mox.StubOutWithMock(self.driver.volume_driver, 'detach_volume') self.driver.volume_driver.detach_volume(connection_info, instance, mountpoint) self.mox.ReplayAll() self.driver.detach_volume(connection_info, instance, mountpoint) def test_attach_block_devices(self): connection_info_1 = {'_fake_connection_info_1': None} connection_info_2 = {'_fake_connection_info_2': None} block_device_mapping = [{'connection_info': connection_info_1, 'mount_device': '/dev/sde'}, {'connection_info': connection_info_2, 'mount_device': '/dev/sdf'}] block_device_info = {'block_device_mapping': block_device_mapping} instance = utils.get_test_instance() self.mox.StubOutWithMock(self.driver, 'attach_volume') self.driver.attach_volume(None, connection_info_1, instance, '/dev/sde') self.driver.attach_volume(None, connection_info_2, instance, '/dev/sdf') self.mox.ReplayAll() self.driver._attach_block_devices(instance, block_device_info) def test_detach_block_devices(self): connection_info_1 = {'_fake_connection_info_1': None} connection_info_2 = {'_fake_connection_info_2': None} block_device_mapping = [{'connection_info': connection_info_1, 'mount_device': '/dev/sde'}, {'connection_info': connection_info_2, 'mount_device': '/dev/sdf'}] block_device_info = {'block_device_mapping': block_device_mapping} instance = utils.get_test_instance() self.mox.StubOutWithMock(self.driver, 'detach_volume') self.driver.detach_volume(connection_info_1, instance, '/dev/sde') self.driver.detach_volume(connection_info_2, instance, '/dev/sdf') self.mox.ReplayAll() self.driver._detach_block_devices(instance, block_device_info) nova-2014.1/nova/tests/virt/baremetal/test_tilera.py0000664000175400017540000003563312323721510023626 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright (c) 2011-2013 University of Southern California / ISI # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for baremetal tilera driver.""" import os from oslo.config import cfg from nova import exception from nova.openstack.common.db import exception as db_exc from nova.tests.image import fake as fake_image from nova.tests import utils from nova.tests.virt.baremetal.db import base as bm_db_base from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import db from nova.virt.baremetal import tilera from nova.virt.baremetal import utils as bm_utils from nova.virt.disk import api as disk_api from nova.virt import fake as fake_virt CONF = cfg.CONF COMMON_FLAGS = dict( firewall_driver='nova.virt.baremetal.fake.FakeFirewallDriver', host='test_host', ) BAREMETAL_FLAGS = dict( driver='nova.virt.baremetal.tilera.Tilera', flavor_extra_specs=['cpu_arch:test', 'test_spec:test_value'], power_manager='nova.virt.baremetal.fake.FakePowerManager', vif_driver='nova.virt.baremetal.fake.FakeVifDriver', volume_driver='nova.virt.baremetal.fake.FakeVolumeDriver', group='baremetal', ) class BareMetalTileraTestCase(bm_db_base.BMDBTestCase): def setUp(self): super(BareMetalTileraTestCase, self).setUp() self.flags(**COMMON_FLAGS) self.flags(**BAREMETAL_FLAGS) self.driver = tilera.Tilera(fake_virt.FakeVirtAPI()) fake_image.stub_out_image_service(self.stubs) self.addCleanup(fake_image.FakeImageService_reset) self.context = utils.get_test_admin_context() self.test_block_device_info = None, self.instance = utils.get_test_instance() self.test_network_info = utils.get_test_network_info() self.node_info = bm_db_utils.new_bm_node( service_host='test_host', cpus=4, memory_mb=2048, ) self.nic_info = [ {'address': '22:22:22:22:22:22', 'datapath_id': '0x1', 'port_no': 1}, {'address': '33:33:33:33:33:33', 'datapath_id': '0x2', 'port_no': 2}, ] def _create_node(self): self.node = db.bm_node_create(self.context, self.node_info) for nic in self.nic_info: db.bm_interface_create( self.context, self.node['id'], nic['address'], nic['datapath_id'], nic['port_no'], ) self.instance['node'] = self.node['id'] self.spawn_params = dict( admin_password='test_pass', block_device_info=self.test_block_device_info, context=self.context, image_meta=utils.get_test_image_info(None, self.instance), injected_files=[('/fake/path', 'hello world')], instance=self.instance, network_info=self.test_network_info, ) class TileraClassMethodsTestCase(BareMetalTileraTestCase): def test_build_network_config(self): net = utils.get_test_network_info(1) config = tilera.build_network_config(net) self.assertIn('eth0', config) self.assertNotIn('eth1', config) net = utils.get_test_network_info(2) config = tilera.build_network_config(net) self.assertIn('eth0', config) self.assertIn('eth1', config) def test_build_network_config_dhcp(self): self.flags( net_config_template='$pybasedir/nova/virt/baremetal/' 'net-dhcp.ubuntu.template', group='baremetal', ) net = utils.get_test_network_info() net[0]['network']['subnets'][0]['ips'][0]['address'] = '1.2.3.4' config = tilera.build_network_config(net) self.assertIn('iface eth0 inet dhcp', config) self.assertNotIn('address 1.2.3.4', config) def test_build_network_config_static(self): self.flags( net_config_template='$pybasedir/nova/virt/baremetal/' 'net-static.ubuntu.template', group='baremetal', ) net = utils.get_test_network_info() net[0]['network']['subnets'][0]['ips'][0]['address'] = '1.2.3.4' config = tilera.build_network_config(net) self.assertIn('iface eth0 inet static', config) self.assertIn('address 1.2.3.4', config) def test_image_dir_path(self): self.assertEqual( tilera.get_image_dir_path(self.instance), os.path.join(CONF.instances_path, 'instance-00000001')) def test_image_file_path(self): self.assertEqual( tilera.get_image_file_path(self.instance), os.path.join( CONF.instances_path, 'instance-00000001', 'disk')) def test_tilera_nfs_path(self): self._create_node() self.node['id'] = '123' tilera_nfs_dir = "fs_" + self.node['id'] self.assertEqual( tilera.get_tilera_nfs_path(self.node['id']), os.path.join(CONF.baremetal.tftp_root, tilera_nfs_dir)) def test_get_partition_sizes(self): # default "kinda.big" instance sizes = tilera.get_partition_sizes(self.instance) self.assertEqual(sizes[0], 40960) self.assertEqual(sizes[1], 1024) def test_swap_not_zero(self): # override swap to 0 flavor = utils.get_test_flavor(self.context) flavor['swap'] = 0 self.instance = utils.get_test_instance(self.context, flavor) sizes = tilera.get_partition_sizes(self.instance) self.assertEqual(sizes[0], 40960) self.assertEqual(sizes[1], 1) def test_get_tftp_image_info(self): # Tilera case needs only kernel_id. self.instance['kernel_id'] = 'aaaa' self.instance['uuid'] = 'fake-uuid' # Here, we confirm both that kernel_id was set # and that the proper paths are getting set for all of them base = os.path.join(CONF.baremetal.tftp_root, self.instance['uuid']) res = tilera.get_tftp_image_info(self.instance) expected = { 'kernel': ['aaaa', os.path.join(base, 'kernel')], } self.assertEqual(res, expected) class TileraPrivateMethodsTestCase(BareMetalTileraTestCase): def test_collect_mac_addresses(self): self._create_node() address_list = [nic['address'] for nic in self.nic_info] address_list.sort() macs = self.driver._collect_mac_addresses(self.context, self.node) self.assertEqual(macs, address_list) def test_cache_tftp_images(self): self.instance['kernel_id'] = 'aaaa' image_info = tilera.get_tftp_image_info(self.instance) self.mox.StubOutWithMock(os, 'makedirs') self.mox.StubOutWithMock(os.path, 'exists') os.makedirs(os.path.join(CONF.baremetal.tftp_root, self.instance['uuid'])).AndReturn(True) for uuid, path in [image_info[label] for label in image_info]: os.path.exists(path).AndReturn(True) self.mox.ReplayAll() self.driver._cache_tftp_images( self.context, self.instance, image_info) self.mox.VerifyAll() def test_cache_image(self): self.mox.StubOutWithMock(os, 'makedirs') self.mox.StubOutWithMock(os, 'unlink') self.mox.StubOutWithMock(os.path, 'exists') os.makedirs(tilera.get_image_dir_path(self.instance)).AndReturn(True) disk_path = os.path.join( tilera.get_image_dir_path(self.instance), 'disk') os.path.exists(disk_path).AndReturn(True) os.unlink(disk_path).AndReturn(None) os.path.exists(tilera.get_image_file_path(self.instance)).\ AndReturn(True) self.mox.ReplayAll() image_meta = utils.get_test_image_info( self.context, self.instance) self.driver._cache_image( self.context, self.instance, image_meta) self.mox.VerifyAll() def test_inject_into_image(self): self._create_node() files = [] self.instance['hostname'] = 'fake hostname' files.append(('/etc/hostname', 'fake hostname')) self.instance['key_data'] = 'fake ssh key' net_info = utils.get_test_network_info(1) net = tilera.build_network_config(net_info) admin_password = 'fake password' self.mox.StubOutWithMock(disk_api, 'inject_data') disk_api.inject_data( admin_password=admin_password, image=tilera.get_image_file_path(self.instance), key='fake ssh key', metadata=None, partition=None, net=net, files=files, ).AndReturn(True) self.mox.ReplayAll() self.driver._inject_into_image( self.context, self.node, self.instance, network_info=net_info, admin_password=admin_password, injected_files=None) self.mox.VerifyAll() class TileraPublicMethodsTestCase(BareMetalTileraTestCase): def test_cache_images(self): self._create_node() self.mox.StubOutWithMock(tilera, "get_tftp_image_info") self.mox.StubOutWithMock(self.driver, "_cache_tftp_images") self.mox.StubOutWithMock(self.driver, "_cache_image") self.mox.StubOutWithMock(self.driver, "_inject_into_image") tilera.get_tftp_image_info(self.instance).AndReturn([]) self.driver._cache_tftp_images(self.context, self.instance, []) self.driver._cache_image(self.context, self.instance, []) self.driver._inject_into_image(self.context, self.node, self.instance, self.test_network_info, None, '') self.mox.ReplayAll() self.driver.cache_images( self.context, self.node, self.instance, admin_password='', image_meta=[], injected_files=None, network_info=self.test_network_info, ) self.mox.VerifyAll() def test_destroy_images(self): self._create_node() self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') bm_utils.unlink_without_raise(tilera.get_image_file_path( self.instance)) bm_utils.rmtree_without_raise(tilera.get_image_dir_path(self.instance)) self.mox.ReplayAll() self.driver.destroy_images(self.context, self.node, self.instance) self.mox.VerifyAll() def test_activate_bootloader_passes_details(self): self._create_node() image_info = { 'kernel': [None, 'cccc'], } self.instance['uuid'] = 'fake-uuid' iqn = "iqn-%s" % self.instance['uuid'] tilera_config = 'this is a fake tilera config' self.instance['uuid'] = 'fake-uuid' tilera_path = tilera.get_tilera_nfs_path(self.instance) image_path = tilera.get_image_file_path(self.instance) self.mox.StubOutWithMock(tilera, 'get_tftp_image_info') self.mox.StubOutWithMock(tilera, 'get_partition_sizes') tilera.get_tftp_image_info(self.instance).AndReturn(image_info) tilera.get_partition_sizes(self.instance).AndReturn((0, 0)) self.mox.ReplayAll() self.driver.activate_bootloader(self.context, self.node, self.instance, network_info=self.test_network_info) self.mox.VerifyAll() def test_activate_and_deactivate_bootloader(self): self._create_node() self.instance['uuid'] = 'fake-uuid' tilera_path = tilera.get_tilera_nfs_path(self.instance) image_path = tilera.get_image_file_path(self.instance) self.mox.ReplayAll() # activate and deactivate the bootloader # and check the deployment task_state in the database row = db.bm_node_get(self.context, 1) self.assertIsNone(row['deploy_key']) self.driver.activate_bootloader(self.context, self.node, self.instance, network_info=self.test_network_info) row = db.bm_node_get(self.context, 1) self.assertIsNotNone(row['deploy_key']) self.driver.deactivate_bootloader(self.context, self.node, self.instance) row = db.bm_node_get(self.context, 1) self.assertIsNone(row['deploy_key']) self.mox.VerifyAll() def test_deactivate_bootloader_for_nonexistent_instance(self): self._create_node() self.node['id'] = 'fake-node-id' self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') self.mox.StubOutWithMock(tilera, 'get_tftp_image_info') self.mox.StubOutWithMock(self.driver, '_collect_mac_addresses') tilera_path = tilera.get_tilera_nfs_path(self.node['id']) tilera.get_tftp_image_info(self.instance).\ AndRaise(exception.NovaException) self.driver._collect_mac_addresses(self.context, self.node).\ AndRaise(db_exc.DBError) self.mox.ReplayAll() self.driver.deactivate_bootloader( self.context, self.node, self.instance) self.mox.VerifyAll() def test_activate_node(self): self._create_node() self.instance['uuid'] = 'fake-uuid' db.bm_node_update(self.context, 1, {'task_state': baremetal_states.DEPLOYING, 'instance_uuid': 'fake-uuid'}) # test DEPLOYDONE db.bm_node_update(self.context, 1, {'task_state': baremetal_states.DEPLOYDONE}) self.driver.activate_node(self.context, self.node, self.instance) # test no deploy -- state is just ACTIVE db.bm_node_update(self.context, 1, {'task_state': baremetal_states.ACTIVE}) self.driver.activate_node(self.context, self.node, self.instance) # test node gone db.bm_node_destroy(self.context, 1) self.assertRaises(exception.InstanceDeployFailure, self.driver.activate_node, self.context, self.node, self.instance) nova-2014.1/nova/tests/virt/baremetal/test_volume_driver.py0000664000175400017540000003042612323721477025237 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for baremetal volume driver.""" from oslo.config import cfg from nova import exception from nova import test from nova.virt.baremetal import volume_driver from nova.virt import fake from nova.virt.libvirt import volume as libvirt_volume CONF = cfg.CONF SHOW_OUTPUT = """Target 1: iqn.2010-10.org.openstack:volume-00000001 System information: Driver: iscsi State: ready I_T nexus information: I_T nexus: 8 Initiator: iqn.1993-08.org.debian:01:7780c6a16b4 Connection: 0 IP Address: 172.17.12.10 LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Readonly: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 1074 MB, Block size: 512 Online: Yes Removable media: No Readonly: No Backing store type: rdwr Backing store path: /dev/nova-volumes/volume-00000001 Backing store flags: Account information: ACL information: ALL Target 2: iqn.2010-10.org.openstack:volume-00000002 System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00020000 SCSI SN: beaf20 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Readonly: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00020001 SCSI SN: beaf21 Size: 2147 MB, Block size: 512 Online: Yes Removable media: No Readonly: No Backing store type: rdwr Backing store path: /dev/nova-volumes/volume-00000002 Backing store flags: Account information: ACL information: ALL Target 1000001: iqn.2010-10.org.openstack.baremetal:1000001-dev.vdc System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET f42410000 SCSI SN: beaf10000010 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Readonly: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET f42410001 SCSI SN: beaf10000011 Size: 1074 MB, Block size: 512 Online: Yes Removable media: No Readonly: No Backing store type: rdwr Backing store path: /dev/disk/by-path/ip-172.17.12.10:3260-iscsi-\ iqn.2010-10.org.openstack:volume-00000001-lun-1 Backing store flags: Account information: ACL information: ALL """ def fake_show_tgtadm(): return SHOW_OUTPUT class BareMetalVolumeTestCase(test.NoDBTestCase): def setUp(self): super(BareMetalVolumeTestCase, self).setUp() self.stubs.Set(volume_driver, '_show_tgtadm', fake_show_tgtadm) def test_list_backingstore_path(self): l = volume_driver._list_backingstore_path() self.assertEqual(len(l), 3) self.assertIn('/dev/nova-volumes/volume-00000001', l) self.assertIn('/dev/nova-volumes/volume-00000002', l) self.assertIn('/dev/disk/by-path/ip-172.17.12.10:3260-iscsi-' 'iqn.2010-10.org.openstack:volume-00000001-lun-1', l) def test_get_next_tid(self): tid = volume_driver._get_next_tid() self.assertEqual(1000002, tid) def test_find_tid_found(self): tid = volume_driver._find_tid( 'iqn.2010-10.org.openstack.baremetal:1000001-dev.vdc') self.assertEqual(1000001, tid) def test_find_tid_not_found(self): tid = volume_driver._find_tid( 'iqn.2010-10.org.openstack.baremetal:1000002-dev.vdc') self.assertIsNone(tid) def test_get_iqn(self): self.flags(iscsi_iqn_prefix='iqn.2012-12.a.b', group='baremetal') iqn = volume_driver._get_iqn('instname', '/dev/vdx') self.assertEqual('iqn.2012-12.a.b:instname-dev-vdx', iqn) class FakeConf(object): def __init__(self, source_path): self.source_path = source_path class BareMetalLibVirtVolumeDriverTestCase(test.TestCase): def setUp(self): super(BareMetalLibVirtVolumeDriverTestCase, self).setUp() self.flags(volume_drivers=[ 'fake=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver', 'fake2=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver', ], group='libvirt') self.driver = volume_driver.LibvirtVolumeDriver(fake.FakeVirtAPI()) self.disk_info = { 'dev': 'vdc', 'bus': 'baremetal', 'type': 'baremetal', } self.connection_info = {'driver_volume_type': 'fake'} self.mount_point = '/dev/vdc' self.mount_device = 'vdc' self.source_path = '/dev/sdx' self.instance = {'uuid': '12345678-1234-1234-1234-123467890123456', 'name': 'instance-00000001'} self.fixed_ips = [{'address': '10.2.3.4'}, {'address': '172.16.17.18'}, ] self.iqn = 'iqn.fake:instance-00000001-dev-vdc' self.tid = 100 def test_init_loads_volume_drivers(self): self.assertIsInstance(self.driver.volume_drivers['fake'], libvirt_volume.LibvirtFakeVolumeDriver) self.assertIsInstance(self.driver.volume_drivers['fake2'], libvirt_volume.LibvirtFakeVolumeDriver) self.assertEqual(len(self.driver.volume_drivers), 2) def test_fake_connect_volume(self): """Check connect_volume returns without exceptions.""" self.driver._volume_driver_method('connect_volume', self.connection_info, self.disk_info) def test_volume_driver_method_ok(self): fake_driver = self.driver.volume_drivers['fake'] self.mox.StubOutWithMock(fake_driver, 'connect_volume') fake_driver.connect_volume(self.connection_info, self.disk_info) self.mox.ReplayAll() self.driver._volume_driver_method('connect_volume', self.connection_info, self.disk_info) def test_volume_driver_method_driver_type_not_found(self): self.connection_info['driver_volume_type'] = 'qwerty' self.assertRaises(exception.VolumeDriverNotFound, self.driver._volume_driver_method, 'connect_volume', self.connection_info, self.disk_info) def test_connect_volume(self): self.mox.StubOutWithMock(self.driver, '_volume_driver_method') self.driver._volume_driver_method('connect_volume', self.connection_info, self.disk_info) self.mox.ReplayAll() self.driver._connect_volume(self.connection_info, self.disk_info) def test_disconnect_volume(self): self.mox.StubOutWithMock(self.driver, '_volume_driver_method') self.driver._volume_driver_method('disconnect_volume', self.connection_info, self.mount_device) self.mox.ReplayAll() self.driver._disconnect_volume(self.connection_info, self.mount_device) def test_publish_iscsi(self): self.mox.StubOutWithMock(volume_driver, '_get_iqn') self.mox.StubOutWithMock(volume_driver, '_get_next_tid') self.mox.StubOutWithMock(volume_driver, '_create_iscsi_export_tgtadm') self.mox.StubOutWithMock(volume_driver, '_allow_iscsi_tgtadm') volume_driver._get_iqn(self.instance['name'], self.mount_point).\ AndReturn(self.iqn) volume_driver._get_next_tid().AndReturn(self.tid) volume_driver._create_iscsi_export_tgtadm(self.source_path, self.tid, self.iqn) volume_driver._allow_iscsi_tgtadm(self.tid, self.fixed_ips[0]['address']) volume_driver._allow_iscsi_tgtadm(self.tid, self.fixed_ips[1]['address']) self.mox.ReplayAll() self.driver._publish_iscsi(self.instance, self.mount_point, self.fixed_ips, self.source_path) def test_depublish_iscsi_ok(self): self.mox.StubOutWithMock(volume_driver, '_get_iqn') self.mox.StubOutWithMock(volume_driver, '_find_tid') self.mox.StubOutWithMock(volume_driver, '_delete_iscsi_export_tgtadm') volume_driver._get_iqn(self.instance['name'], self.mount_point).\ AndReturn(self.iqn) volume_driver._find_tid(self.iqn).AndReturn(self.tid) volume_driver._delete_iscsi_export_tgtadm(self.tid) self.mox.ReplayAll() self.driver._depublish_iscsi(self.instance, self.mount_point) def test_depublish_iscsi_do_nothing_if_tid_is_not_found(self): self.mox.StubOutWithMock(volume_driver, '_get_iqn') self.mox.StubOutWithMock(volume_driver, '_find_tid') volume_driver._get_iqn(self.instance['name'], self.mount_point).\ AndReturn(self.iqn) volume_driver._find_tid(self.iqn).AndReturn(None) self.mox.ReplayAll() self.driver._depublish_iscsi(self.instance, self.mount_point) def test_attach_volume(self): self.mox.StubOutWithMock(volume_driver, '_get_fixed_ips') self.mox.StubOutWithMock(self.driver, '_connect_volume') self.mox.StubOutWithMock(self.driver, '_publish_iscsi') volume_driver._get_fixed_ips(self.instance).AndReturn(self.fixed_ips) self.driver._connect_volume(self.connection_info, self.disk_info).\ AndReturn(FakeConf(self.source_path)) self.driver._publish_iscsi(self.instance, self.mount_point, self.fixed_ips, self.source_path) self.mox.ReplayAll() self.driver.attach_volume(self.connection_info, self.instance, self.mount_point) def test_detach_volume(self): self.mox.StubOutWithMock(volume_driver, '_get_iqn') self.mox.StubOutWithMock(volume_driver, '_find_tid') self.mox.StubOutWithMock(volume_driver, '_delete_iscsi_export_tgtadm') self.mox.StubOutWithMock(self.driver, '_disconnect_volume') volume_driver._get_iqn(self.instance['name'], self.mount_point).\ AndReturn(self.iqn) volume_driver._find_tid(self.iqn).AndReturn(self.tid) volume_driver._delete_iscsi_export_tgtadm(self.tid) self.driver._disconnect_volume(self.connection_info, self.mount_device) self.mox.ReplayAll() self.driver.detach_volume(self.connection_info, self.instance, self.mount_point) nova-2014.1/nova/tests/virt/baremetal/test_virtual_power_driver.py0000664000175400017540000003502012323721477026625 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for baremetal virtual power driver.""" import mox from oslo.config import cfg from nova import exception from nova.openstack.common import processutils from nova.tests.image import fake as fake_image from nova.tests import utils from nova.tests.virt.baremetal.db import base as bm_db_base from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova.virt.baremetal import common as connection from nova.virt.baremetal import db from nova.virt.baremetal import virtual_power_driver CONF = cfg.CONF COMMON_FLAGS = dict( firewall_driver='nova.virt.baremetal.fake.FakeFirewallDriver', host='test_host', ) BAREMETAL_FLAGS = dict( driver='nova.virt.baremetal.pxe.PXE', flavor_extra_specs=['cpu_arch:test', 'test_spec:test_value'], power_manager= 'nova.virt.baremetal.virtual_power_driver.VirtualPowerManager', vif_driver='nova.virt.baremetal.fake.FakeVifDriver', volume_driver='nova.virt.baremetal.fake.FakeVolumeDriver', virtual_power_ssh_host=None, virtual_power_type='vbox', virtual_power_host_user=None, virtual_power_host_pass=None, virtual_power_host_key=None, group='baremetal', ) class BareMetalVPDTestCase(bm_db_base.BMDBTestCase): def setUp(self): super(BareMetalVPDTestCase, self).setUp() self.flags(**COMMON_FLAGS) self.flags(**BAREMETAL_FLAGS) fake_image.stub_out_image_service(self.stubs) self.context = utils.get_test_admin_context() self.test_block_device_info = None, self.instance = utils.get_test_instance() self.test_network_info = utils.get_test_network_info(), self.node_info = bm_db_utils.new_bm_node( id=123, service_host='test_host', cpus=2, memory_mb=2048, ) self.nic_info = [ {'address': '11:11:11:11:11:11', 'datapath_id': '0x1', 'port_no': 1}, {'address': '22:22:22:22:22:22', 'datapath_id': '0x2', 'port_no': 2}, ] self.addCleanup(fake_image.FakeImageService_reset) def _create_node(self): self.node = db.bm_node_create(self.context, self.node_info) for nic in self.nic_info: db.bm_interface_create( self.context, self.node['id'], nic['address'], nic['datapath_id'], nic['port_no'], ) self.instance['node'] = self.node['id'] def _create_pm(self): self.pm = virtual_power_driver.VirtualPowerManager( node=self.node, instance=self.instance) return self.pm class VPDMissingOptionsTestCase(BareMetalVPDTestCase): def test_get_conn_missing_options(self): self.flags(virtual_power_ssh_host=None, group="baremetal") self.flags(virtual_power_host_user=None, group="baremetal") self.flags(virtual_power_host_pass=None, group="baremetal") self._create_node() self._create_pm() self._conn = None self.assertRaises(exception.NovaException, self.pm._get_conn) self._conn = None self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal") self.assertRaises(exception.NovaException, self.pm._get_conn) self._conn = None self.flags(virtual_power_host_user='user', group="baremetal") self.assertRaises(exception.NovaException, self.pm._get_conn) class VPDClassMethodsTestCase(BareMetalVPDTestCase): def setUp(self): super(VPDClassMethodsTestCase, self).setUp() self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal") self.flags(virtual_power_host_user='user', group="baremetal") self.flags(virtual_power_host_pass='password', group="baremetal") def test_get_conn_success_pass(self): self._create_node() self._create_pm() self._conn = self.pm._get_conn() self.mox.StubOutWithMock(connection, 'ssh_connect') connection.ssh_connect(mox.IsA(self._conn)).AndReturn(True) self.mox.ReplayAll() self.pm._set_connection() self.assertEqual(self.pm.connection_data.host, '127.0.0.1') self.assertEqual(self.pm.connection_data.username, 'user') self.assertEqual(self.pm.connection_data.password, 'password') self.assertIsNone(self.pm.connection_data.keyfile) self.mox.VerifyAll() def test_get_conn_success_key(self): self.flags(virtual_power_host_pass='', group="baremetal") self.flags(virtual_power_host_key='/id_rsa_file.txt', group="baremetal") self._create_node() self._create_pm() self._conn = self.pm._get_conn() self.mox.StubOutWithMock(connection, 'ssh_connect') connection.ssh_connect(mox.IsA(self._conn)).AndReturn(True) self.mox.ReplayAll() self.pm._set_connection() self.assertEqual(self.pm.connection_data.host, '127.0.0.1') self.assertEqual(self.pm.connection_data.username, 'user') self.assertEqual(self.pm.connection_data.password, '') self.assertEqual(self.pm.connection_data.keyfile, '/id_rsa_file.txt') self.mox.VerifyAll() def test_get_full_node_list(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_run_command') cmd = self.pm._vp_cmd.list_cmd self.pm._run_command(cmd).AndReturn("testNode") self.mox.ReplayAll() name = self.pm._get_full_node_list() self.assertEqual(name, 'testNode') self.mox.VerifyAll() def test_check_for_node(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_get_full_node_list') self.pm._get_full_node_list().\ AndReturn(["testNode"]) self.mox.StubOutWithMock(self.pm, '_run_command') cmd = self.pm._vp_cmd.get_node_macs.replace('{_NodeName_}', 'testNode') self.pm._run_command(cmd).\ AndReturn(["111111111111", "ffeeddccbbaa"]) self.mox.ReplayAll() name = self.pm._check_for_node() self.assertEqual(name, '"testNode"') self.mox.VerifyAll() def test_check_for_node_not_found(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_get_full_node_list') self.pm._get_full_node_list().AndReturn(["testNode"]) self.mox.StubOutWithMock(self.pm, '_run_command') cmd = self.pm._vp_cmd.get_node_macs.replace('{_NodeName_}', 'testNode') self.pm._run_command(cmd).AndReturn(["ffeeddccbbaa"]) self.mox.ReplayAll() name = self.pm._check_for_node() self.assertEqual(name, '') self.mox.VerifyAll() def test_activate_node(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._check_for_node().AndReturn('"testNode"') self.pm._run_command(self.pm._vp_cmd.start_cmd).AndReturn("Started") self.pm.is_power_on().AndReturn(True) self.mox.ReplayAll() state = self.pm.activate_node() self.assertEqual(state, 'active') self.mox.VerifyAll() def test_activate_node_fail(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._check_for_node().AndReturn('"testNode"') self.pm._run_command(self.pm._vp_cmd.start_cmd).AndReturn("Started") self.pm.is_power_on().AndReturn(False) self.mox.ReplayAll() state = self.pm.activate_node() self.assertEqual(state, 'error') self.mox.VerifyAll() def test_deactivate_node(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._check_for_node().AndReturn('"testNode"') self.pm.is_power_on().AndReturn(True) self.pm._run_command(self.pm._vp_cmd.stop_cmd).AndReturn("Stopped") self.pm.is_power_on().AndReturn(False) self.mox.ReplayAll() state = self.pm.deactivate_node() self.assertEqual(state, 'deleted') self.mox.VerifyAll() def test_deactivate_node_fail(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._check_for_node().AndReturn('"testNode"') self.pm.is_power_on().AndReturn(True) self.pm._run_command(self.pm._vp_cmd.stop_cmd).AndReturn("Stopped") self.pm.is_power_on().AndReturn(True) self.mox.ReplayAll() state = self.pm.deactivate_node() self.assertEqual(state, 'error') self.mox.VerifyAll() def test_reboot_node(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._check_for_node().AndReturn(['"testNode"']) self.pm._run_command(self.pm._vp_cmd.reboot_cmd).AndReturn("Restarted") self.pm.is_power_on().AndReturn(True) self.mox.ReplayAll() state = self.pm.reboot_node() self.assertEqual(state, 'active') self.mox.VerifyAll() def test_reboot_node_fail(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._check_for_node().AndReturn(['"testNode"']) self.pm._run_command(self.pm._vp_cmd.reboot_cmd).AndReturn("Restarted") self.pm.is_power_on().AndReturn(False) self.mox.ReplayAll() state = self.pm.reboot_node() self.assertEqual(state, 'error') self.mox.VerifyAll() def test_is_power_on(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.pm._check_for_node().AndReturn(['"testNode"']) self.pm._run_command(self.pm._vp_cmd.list_running_cmd).\ AndReturn(['"testNode"']) self.pm._matched_name = 'testNode' self.mox.ReplayAll() state = self.pm.is_power_on() self.assertEqual(state, True) self.mox.VerifyAll() def test_is_power_on_fail(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.pm._check_for_node().AndReturn(None) self.mox.ReplayAll() self.assertRaises(exception.NodeNotFound, self.pm.is_power_on) self.mox.VerifyAll() def test_is_power_on_match_subname(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(self.pm, '_run_command') self.pm._check_for_node().AndReturn(['"testNode"']) self.pm._run_command(self.pm._vp_cmd.list_running_cmd).\ AndReturn(['"testNode01"']) self.pm._matched_name = '"testNode"' self.mox.ReplayAll() state = self.pm.is_power_on() self.assertEqual(state, False) self.mox.VerifyAll() def test_run_command(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_set_connection') self.mox.StubOutWithMock(processutils, 'ssh_execute') self.pm._set_connection().AndReturn(True) processutils.ssh_execute(None, '/usr/bin/VBoxManage test return', check_exit_code=True).AndReturn(("test\nreturn", "")) self.pm._matched_name = 'testNode' self.mox.ReplayAll() result = self.pm._run_command("test return") self.assertEqual(result, ['test', 'return']) self.mox.VerifyAll() def test_run_command_raises_exception(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_set_connection') self.mox.StubOutWithMock(processutils, 'ssh_execute') self.pm._set_connection().AndReturn(True) processutils.ssh_execute(None, '/usr/bin/VBoxManage test return', check_exit_code=True).\ AndRaise(processutils.ProcessExecutionError) self.mox.ReplayAll() result = self.pm._run_command("test return") self.assertEqual(result, []) self.mox.VerifyAll() def test_activate_node_with_exception(self): self._create_node() self._create_pm() self.mox.StubOutWithMock(self.pm, '_check_for_node') self.mox.StubOutWithMock(processutils, 'ssh_execute') self.pm._check_for_node().AndReturn(['"testNode"']) self.pm._check_for_node().AndReturn(['"testNode"']) processutils.ssh_execute('test', '/usr/bin/VBoxManage startvm ', check_exit_code=True).\ AndRaise(processutils.ProcessExecutionError) processutils.ssh_execute('test', '/usr/bin/VBoxManage list runningvms', check_exit_code=True).\ AndRaise(processutils.ProcessExecutionError) self.mox.ReplayAll() self.pm._connection = 'test' state = self.pm.activate_node() self.assertEqual(state, 'error') self.mox.VerifyAll() nova-2014.1/nova/tests/virt/baremetal/test_nova_baremetal_manage.py0000664000175400017540000000214712323721477026643 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # Copyright 2011 OpenStack Foundation # Copyright 2011 Ilya Alekseyev # # 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.cmd import baremetal_manage as bm_man from nova.tests.virt.baremetal.db import base as bm_db_base class BareMetalDbCommandsTestCase(bm_db_base.BMDBTestCase): def setUp(self): super(BareMetalDbCommandsTestCase, self).setUp() self.commands = bm_man.BareMetalDbCommands() def test_sync_and_version(self): self.commands.sync() v = self.commands.version() self.assertTrue(v > 0) nova-2014.1/nova/tests/virt/baremetal/test_tilera_pdu.py0000664000175400017540000001217712323721477024510 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright (c) 2011-2013 University of Southern California / ISI # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test class for baremetal PDU power manager.""" from oslo.config import cfg from nova import test from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova import utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import tilera_pdu from nova.virt.baremetal import utils as bm_utils CONF = cfg.CONF class BareMetalPduTestCase(test.NoDBTestCase): def setUp(self): super(BareMetalPduTestCase, self).setUp() self.flags(tile_power_wait=0, group='baremetal') self.node = bm_db_utils.new_bm_node( id=123, pm_address='fake-address', pm_user='fake-user', pm_password='fake-password') self.tilera_pdu = tilera_pdu.Pdu(self.node) self.tile_pdu_on = 1 self.tile_pdu_off = 2 self.tile_pdu_status = 9 def test_construct(self): self.assertEqual(self.tilera_pdu.node_id, 123) self.assertEqual(self.tilera_pdu.address, 'fake-address') self.assertEqual(self.tilera_pdu.user, 'fake-user') self.assertEqual(self.tilera_pdu.password, 'fake-password') def test_exec_pdutool(self): self.flags(tile_pdu_mgr='fake-pdu-mgr', group='baremetal') self.flags(tile_pdu_ip='fake-address', group='baremetal') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') args = [ 'fake-pdu-mgr', 'fake-address', self.tile_pdu_on, ] utils.execute(*args).AndReturn('') self.mox.ReplayAll() self.tilera_pdu._exec_pdutool(self.tile_pdu_on) self.mox.VerifyAll() def test_is_power(self): self.mox.StubOutWithMock(self.tilera_pdu, '_exec_pdutool') self.tilera_pdu._exec_pdutool(self.tile_pdu_status).AndReturn( self.tile_pdu_on) self.mox.ReplayAll() self.tilera_pdu._is_power(self.tile_pdu_on) self.mox.VerifyAll() def test_power_already_on(self): self.mox.StubOutWithMock(self.tilera_pdu, '_exec_pdutool') self.tilera_pdu._exec_pdutool(self.tile_pdu_on).AndReturn(None) self.tilera_pdu._exec_pdutool(self.tile_pdu_status).AndReturn( self.tile_pdu_on) self.mox.ReplayAll() self.tilera_pdu.state = baremetal_states.DELETED self.tilera_pdu._power_on() self.mox.VerifyAll() self.assertEqual(self.tilera_pdu.state, baremetal_states.ACTIVE) def test_power_on_ok(self): self.mox.StubOutWithMock(self.tilera_pdu, '_exec_pdutool') self.tilera_pdu._exec_pdutool(self.tile_pdu_on).AndReturn(None) self.tilera_pdu._exec_pdutool(self.tile_pdu_status).AndReturn( self.tile_pdu_on) self.mox.ReplayAll() self.tilera_pdu.state = baremetal_states.DELETED self.tilera_pdu._power_on() self.mox.VerifyAll() self.assertEqual(self.tilera_pdu.state, baremetal_states.ACTIVE) def test_power_on_fail(self): self.mox.StubOutWithMock(self.tilera_pdu, '_exec_pdutool') self.tilera_pdu._exec_pdutool(self.tile_pdu_on).AndReturn(None) self.tilera_pdu._exec_pdutool(self.tile_pdu_status).AndReturn( self.tile_pdu_off) self.mox.ReplayAll() self.tilera_pdu.state = baremetal_states.DELETED self.tilera_pdu._power_on() self.mox.VerifyAll() self.assertEqual(self.tilera_pdu.state, baremetal_states.ERROR) def test_power_on_max_retries(self): self.mox.StubOutWithMock(self.tilera_pdu, '_exec_pdutool') self.tilera_pdu._exec_pdutool(self.tile_pdu_on).AndReturn(None) self.tilera_pdu._exec_pdutool(self.tile_pdu_status).AndReturn( self.tile_pdu_off) self.mox.ReplayAll() self.tilera_pdu.state = baremetal_states.DELETED self.tilera_pdu._power_on() self.mox.VerifyAll() self.assertEqual(self.tilera_pdu.state, baremetal_states.ERROR) def test_power_off_ok(self): self.mox.StubOutWithMock(self.tilera_pdu, '_exec_pdutool') self.tilera_pdu._exec_pdutool(self.tile_pdu_off).AndReturn(None) self.tilera_pdu._exec_pdutool(self.tile_pdu_status).AndReturn( self.tile_pdu_off) self.mox.ReplayAll() self.tilera_pdu.state = baremetal_states.ACTIVE self.tilera_pdu._power_off() self.mox.VerifyAll() self.assertEqual(self.tilera_pdu.state, baremetal_states.DELETED) nova-2014.1/nova/tests/virt/baremetal/test_nova_baremetal_deploy_helper.py0000664000175400017540000003507112323721477030250 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # Copyright 2011 OpenStack Foundation # Copyright 2011 Ilya Alekseyev # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import tempfile import time import mock import mox from nova.cmd import baremetal_deploy_helper as bmdh from nova.openstack.common import log as logging from nova.openstack.common import units from nova import test from nova.tests.virt.baremetal.db import base as bm_db_base from nova.virt.baremetal import db as bm_db bmdh.LOG = logging.getLogger('nova.virt.baremetal.deploy_helper') _PXECONF_DEPLOY = """ default deploy label deploy kernel deploy_kernel append initrd=deploy_ramdisk ipappend 3 label boot kernel kernel append initrd=ramdisk root=${ROOT} """ _PXECONF_BOOT = """ default boot label deploy kernel deploy_kernel append initrd=deploy_ramdisk ipappend 3 label boot kernel kernel append initrd=ramdisk root=UUID=12345678-1234-1234-1234-1234567890abcdef """ class WorkerTestCase(bm_db_base.BMDBTestCase): def setUp(self): super(WorkerTestCase, self).setUp() self.worker = bmdh.Worker() # Make tearDown() fast self.worker.queue_timeout = 0.1 self.worker.start() def tearDown(self): if self.worker.isAlive(): self.worker.stop = True self.worker.join(timeout=1) super(WorkerTestCase, self).tearDown() def wait_queue_empty(self, timeout): for _ in xrange(int(timeout / 0.1)): if bmdh.QUEUE.empty(): break time.sleep(0.1) def test_run_calls_deploy(self): """Check all queued requests are passed to deploy().""" history = [] def fake_deploy(**params): history.append(params) self.stubs.Set(bmdh, 'deploy', fake_deploy) self.mox.StubOutWithMock(bm_db, 'bm_node_update') # update is called twice inside Worker.run for i in range(6): bm_db.bm_node_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() params_list = [{'fake1': ''}, {'fake2': ''}, {'fake3': ''}] for (dep_id, params) in enumerate(params_list): bmdh.QUEUE.put((dep_id, params)) self.wait_queue_empty(1) self.assertEqual(params_list, history) self.mox.VerifyAll() def test_run_with_failing_deploy(self): """Check a worker keeps on running even if deploy() raises an exception. """ history = [] def fake_deploy(**params): history.append(params) # always fail raise Exception('test') self.stubs.Set(bmdh, 'deploy', fake_deploy) self.mox.StubOutWithMock(bm_db, 'bm_node_update') # update is called twice inside Worker.run for i in range(6): bm_db.bm_node_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() params_list = [{'fake1': ''}, {'fake2': ''}, {'fake3': ''}] for (dep_id, params) in enumerate(params_list): bmdh.QUEUE.put((dep_id, params)) self.wait_queue_empty(1) self.assertEqual(params_list, history) self.mox.VerifyAll() class PhysicalWorkTestCase(test.NoDBTestCase): def setUp(self): super(PhysicalWorkTestCase, self).setUp() def noop(*args, **kwargs): pass self.stubs.Set(time, 'sleep', noop) def _deploy_mox(self): self.mox.StubOutWithMock(bmdh, 'get_dev') self.mox.StubOutWithMock(bmdh, 'get_image_mb') self.mox.StubOutWithMock(bmdh, 'discovery') self.mox.StubOutWithMock(bmdh, 'login_iscsi') self.mox.StubOutWithMock(bmdh, 'logout_iscsi') self.mox.StubOutWithMock(bmdh, 'make_partitions') self.mox.StubOutWithMock(bmdh, 'is_block_device') self.mox.StubOutWithMock(bmdh, 'dd') self.mox.StubOutWithMock(bmdh, 'mkswap') self.mox.StubOutWithMock(bmdh, 'block_uuid') self.mox.StubOutWithMock(bmdh, 'switch_pxe_config') self.mox.StubOutWithMock(bmdh, 'notify') def test_deploy_no_ephemeral(self): address = '127.0.0.1' port = 3306 iqn = 'iqn.xyz' lun = 1 image_path = '/tmp/xyz/image' pxe_config_path = '/tmp/abc/pxeconfig' root_mb = 128 swap_mb = 64 ephemeral_mb = 0 dev = '/dev/fake' root_part = '/dev/fake-part1' swap_part = '/dev/fake-part2' root_uuid = '12345678-1234-1234-12345678-12345678abcdef' self._deploy_mox() bmdh.get_dev(address, port, iqn, lun).AndReturn(dev) bmdh.get_image_mb(image_path).AndReturn(1) # < root_mb bmdh.discovery(address, port) bmdh.login_iscsi(address, port, iqn) bmdh.is_block_device(dev).AndReturn(True) bmdh.make_partitions(dev, root_mb, swap_mb, ephemeral_mb) bmdh.is_block_device(root_part).AndReturn(True) bmdh.is_block_device(swap_part).AndReturn(True) bmdh.dd(image_path, root_part) bmdh.mkswap(swap_part) bmdh.block_uuid(root_part).AndReturn(root_uuid) bmdh.logout_iscsi(address, port, iqn) bmdh.switch_pxe_config(pxe_config_path, root_uuid) bmdh.notify(address, 10000) self.mox.ReplayAll() bmdh.deploy(address, port, iqn, lun, image_path, pxe_config_path, root_mb, swap_mb, ephemeral_mb) self.mox.VerifyAll() def test_deploy_with_ephemeral(self): address = '127.0.0.1' port = 3306 iqn = 'iqn.xyz' lun = 1 image_path = '/tmp/xyz/image' pxe_config_path = '/tmp/abc/pxeconfig' root_mb = 128 swap_mb = 64 ephemeral_mb = 256 dev = '/dev/fake' ephemeral_part = '/dev/fake-part1' swap_part = '/dev/fake-part2' root_part = '/dev/fake-part3' root_uuid = '12345678-1234-1234-12345678-12345678abcdef' self._deploy_mox() self.mox.StubOutWithMock(bmdh, 'mkfs_ephemeral') bmdh.get_dev(address, port, iqn, lun).AndReturn(dev) bmdh.get_image_mb(image_path).AndReturn(1) # < root_mb bmdh.discovery(address, port) bmdh.login_iscsi(address, port, iqn) bmdh.is_block_device(dev).AndReturn(True) bmdh.make_partitions(dev, root_mb, swap_mb, ephemeral_mb) bmdh.is_block_device(root_part).AndReturn(True) bmdh.is_block_device(swap_part).AndReturn(True) bmdh.is_block_device(ephemeral_part).AndReturn(True) bmdh.dd(image_path, root_part) bmdh.mkswap(swap_part) bmdh.mkfs_ephemeral(ephemeral_part) bmdh.block_uuid(root_part).AndReturn(root_uuid) bmdh.logout_iscsi(address, port, iqn) bmdh.switch_pxe_config(pxe_config_path, root_uuid) bmdh.notify(address, 10000) self.mox.ReplayAll() bmdh.deploy(address, port, iqn, lun, image_path, pxe_config_path, root_mb, swap_mb, ephemeral_mb) self.mox.VerifyAll() def test_deploy_preserve_ephemeral(self): address = '127.0.0.1' port = 3306 iqn = 'iqn.xyz' lun = 1 image_path = '/tmp/xyz/image' pxe_config_path = '/tmp/abc/pxeconfig' root_mb = 128 swap_mb = 64 ephemeral_mb = 128 dev = '/dev/fake' ephemeral_part = '/dev/fake-part1' swap_part = '/dev/fake-part2' root_part = '/dev/fake-part3' root_uuid = '12345678-1234-1234-12345678-12345678abcdef' self._deploy_mox() self.mox.StubOutWithMock(bmdh, 'mkfs_ephemeral') bmdh.get_dev(address, port, iqn, lun).AndReturn(dev) bmdh.get_image_mb(image_path).AndReturn(1) # < root_mb bmdh.discovery(address, port) bmdh.login_iscsi(address, port, iqn) bmdh.is_block_device(dev).AndReturn(True) bmdh.make_partitions(dev, root_mb, swap_mb, ephemeral_mb) bmdh.is_block_device(root_part).AndReturn(True) bmdh.is_block_device(swap_part).AndReturn(True) bmdh.is_block_device(ephemeral_part).AndReturn(True) bmdh.dd(image_path, root_part) bmdh.mkswap(swap_part) bmdh.block_uuid(root_part).AndReturn(root_uuid) bmdh.logout_iscsi(address, port, iqn) bmdh.switch_pxe_config(pxe_config_path, root_uuid) bmdh.notify(address, 10000) self.mox.ReplayAll() bmdh.deploy(address, port, iqn, lun, image_path, pxe_config_path, root_mb, swap_mb, ephemeral_mb, True) self.mox.VerifyAll() def test_always_logout_iscsi(self): """logout_iscsi() must be called once login_iscsi() is called.""" address = '127.0.0.1' port = 3306 iqn = 'iqn.xyz' lun = 1 image_path = '/tmp/xyz/image' pxe_config_path = '/tmp/abc/pxeconfig' root_mb = 128 swap_mb = 64 ephemeral_mb = 256 dev = '/dev/fake' self.mox.StubOutWithMock(bmdh, 'get_dev') self.mox.StubOutWithMock(bmdh, 'get_image_mb') self.mox.StubOutWithMock(bmdh, 'discovery') self.mox.StubOutWithMock(bmdh, 'login_iscsi') self.mox.StubOutWithMock(bmdh, 'logout_iscsi') self.mox.StubOutWithMock(bmdh, 'work_on_disk') class TestException(Exception): pass bmdh.get_dev(address, port, iqn, lun).AndReturn(dev) bmdh.get_image_mb(image_path).AndReturn(1) # < root_mb bmdh.discovery(address, port) bmdh.login_iscsi(address, port, iqn) bmdh.work_on_disk(dev, root_mb, swap_mb, ephemeral_mb, image_path, False).AndRaise(TestException) bmdh.logout_iscsi(address, port, iqn) self.mox.ReplayAll() self.assertRaises(TestException, bmdh.deploy, address, port, iqn, lun, image_path, pxe_config_path, root_mb, swap_mb, ephemeral_mb) class WorkOnDiskTestCase(test.NoDBTestCase): def setUp(self): super(WorkOnDiskTestCase, self).setUp() self.image_path = '/tmp/xyz/image' self.root_mb = 128 self.swap_mb = 64 self.ephemeral_mb = 256 self.dev = '/dev/fake' self.ephemeral_part = '/dev/fake-part1' self.swap_part = '/dev/fake-part2' self.root_part = '/dev/fake-part3' self.m_ibd = mock.Mock() self.m_mp = mock.Mock() self.stubs.Set(bmdh, 'is_block_device', self.m_ibd) self.stubs.Set(bmdh, 'make_partitions', self.m_mp) def test_no_parent_device(self): self.m_ibd.return_value = False self.assertRaises(bmdh.BareMetalDeployException, bmdh.work_on_disk, self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb, self.image_path, False) self.m_ibd.assert_called_once_with(self.dev) self.m_mp.assert_not_called() def test_no_root_partition(self): self.m_ibd.side_effect = [True, False] calls = [mock.call(self.dev), mock.call(self.root_part)] self.assertRaises(bmdh.BareMetalDeployException, bmdh.work_on_disk, self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb, self.image_path, False) self.assertEqual(self.m_ibd.call_args_list, calls) self.m_mp.assert_called_once_with(self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb) def test_no_swap_partition(self): self.m_ibd.side_effect = [True, True, False] calls = [mock.call(self.dev), mock.call(self.root_part), mock.call(self.swap_part)] self.assertRaises(bmdh.BareMetalDeployException, bmdh.work_on_disk, self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb, self.image_path, False) self.assertEqual(self.m_ibd.call_args_list, calls) self.m_mp.assert_called_once_with(self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb) def test_no_ephemeral_partition(self): self.m_ibd.side_effect = [True, True, True, False] calls = [mock.call(self.dev), mock.call(self.root_part), mock.call(self.swap_part), mock.call(self.ephemeral_part)] self.assertRaises(bmdh.BareMetalDeployException, bmdh.work_on_disk, self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb, self.image_path, False) self.assertEqual(self.m_ibd.call_args_list, calls) self.m_mp.assert_called_once_with(self.dev, self.root_mb, self.swap_mb, self.ephemeral_mb) class SwitchPxeConfigTestCase(test.NoDBTestCase): def setUp(self): super(SwitchPxeConfigTestCase, self).setUp() (fd, self.fname) = tempfile.mkstemp() os.write(fd, _PXECONF_DEPLOY) os.close(fd) def tearDown(self): os.unlink(self.fname) super(SwitchPxeConfigTestCase, self).tearDown() def test_switch_pxe_config(self): bmdh.switch_pxe_config(self.fname, '12345678-1234-1234-1234-1234567890abcdef') with open(self.fname, 'r') as f: pxeconf = f.read() self.assertEqual(pxeconf, _PXECONF_BOOT) class OtherFunctionTestCase(test.NoDBTestCase): def test_get_dev(self): expected = '/dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9' actual = bmdh.get_dev('1.2.3.4', 5678, 'iqn.fake', 9) self.assertEqual(expected, actual) def test_get_image_mb(self): size = None def fake_getsize(path): return size self.stubs.Set(os.path, 'getsize', fake_getsize) size = 0 self.assertEqual(bmdh.get_image_mb('x'), 0) size = 1 self.assertEqual(bmdh.get_image_mb('x'), 1) size = units.Mi self.assertEqual(bmdh.get_image_mb('x'), 1) size = units.Mi + 1 self.assertEqual(bmdh.get_image_mb('x'), 2) nova-2014.1/nova/tests/virt/baremetal/test_utils.py0000664000175400017540000000476112323721477023520 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright 2012,2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for baremetal utils.""" import errno import os import tempfile from nova import test from nova.virt.baremetal import utils from nova.virt.libvirt import utils as libvirt_utils class BareMetalUtilsTestCase(test.NoDBTestCase): def test_random_alnum(self): s = utils.random_alnum(10) self.assertEqual(len(s), 10) s = utils.random_alnum(100) self.assertEqual(len(s), 100) def test_unlink(self): self.mox.StubOutWithMock(os, "unlink") os.unlink("/fake/path") self.mox.ReplayAll() utils.unlink_without_raise("/fake/path") self.mox.VerifyAll() def test_unlink_ENOENT(self): self.mox.StubOutWithMock(os, "unlink") os.unlink("/fake/path").AndRaise(OSError(errno.ENOENT)) self.mox.ReplayAll() utils.unlink_without_raise("/fake/path") self.mox.VerifyAll() def test_create_link(self): self.mox.StubOutWithMock(os, "symlink") os.symlink("/fake/source", "/fake/link") self.mox.ReplayAll() utils.create_link_without_raise("/fake/source", "/fake/link") self.mox.VerifyAll() def test_create_link_EEXIST(self): self.mox.StubOutWithMock(os, "symlink") os.symlink("/fake/source", "/fake/link").AndRaise( OSError(errno.EEXIST)) self.mox.ReplayAll() utils.create_link_without_raise("/fake/source", "/fake/link") self.mox.VerifyAll() def test_cache_image_with_clean(self): self.mox.StubOutWithMock(libvirt_utils, "fetch_image") temp_f, temp_file = tempfile.mkstemp() libvirt_utils.fetch_image(None, temp_file, None, None, None) self.mox.ReplayAll() utils.cache_image(None, temp_file, None, None, None, clean=True) self.mox.VerifyAll() self.assertFalse(os.path.exists(temp_file)) nova-2014.1/nova/tests/virt/baremetal/test_ipmi.py0000664000175400017540000002113512323721477023310 0ustar jenkinsjenkins00000000000000# coding=utf-8 # Copyright 2012 Hewlett-Packard Development Company, L.P. # Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test class for baremetal IPMI power manager.""" import os import stat import tempfile from oslo.config import cfg from nova import test from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova import utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import ipmi from nova.virt.baremetal import utils as bm_utils CONF = cfg.CONF class BareMetalIPMITestCase(test.NoDBTestCase): def setUp(self): super(BareMetalIPMITestCase, self).setUp() self.node = bm_db_utils.new_bm_node( id=123, pm_address='fake-address', pm_user='fake-user', pm_password='fake-password') self.ipmi = ipmi.IPMI(self.node) def test_construct(self): self.assertEqual(self.ipmi.node_id, 123) self.assertEqual(self.ipmi.address, 'fake-address') self.assertEqual(self.ipmi.user, 'fake-user') self.assertEqual(self.ipmi.password, 'fake-password') def test_make_password_file(self): pw_file = ipmi._make_password_file(self.node['pm_password']) try: self.assertTrue(os.path.isfile(pw_file)) self.assertEqual(os.stat(pw_file)[stat.ST_MODE] & 0o777, 0o600) with open(pw_file, "r") as f: pm_password = f.read() self.assertEqual(pm_password, self.node['pm_password']) finally: os.unlink(pw_file) def test_make_empty_password_file(self): pw_file = ipmi._make_password_file('') try: self.assertTrue(os.path.isfile(pw_file)) self.assertEqual(os.stat(pw_file)[stat.ST_MODE] & 0o777, 0o600) with open(pw_file, "rb") as f: pm_password = f.read() self.assertEqual(b"\0", pm_password) finally: os.unlink(pw_file) def test_exec_ipmitool(self): pw_file = '/tmp/password_file' self.mox.StubOutWithMock(ipmi, '_make_password_file') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') ipmi._make_password_file(self.ipmi.password).AndReturn(pw_file) args = [ 'ipmitool', '-I', 'lanplus', '-H', self.ipmi.address, '-U', self.ipmi.user, '-f', pw_file, 'A', 'B', 'C', ] utils.execute(*args, attempts=3).AndReturn(('', '')) bm_utils.unlink_without_raise(pw_file).AndReturn(None) self.mox.ReplayAll() self.ipmi._exec_ipmitool('A B C') self.mox.VerifyAll() def test_is_power_on_ok(self): self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is on\n"]) self.mox.ReplayAll() res = self.ipmi.is_power_on() self.assertEqual(res, True) self.mox.VerifyAll() def test_is_power_no_answer(self): self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Fake reply\n"]) self.mox.ReplayAll() res = self.ipmi.is_power_on() self.assertIsNone(res) self.mox.VerifyAll() def test_power_already_on(self): self.flags(ipmi_power_retry=0, group='baremetal') self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is on\n"]) self.mox.ReplayAll() self.ipmi.state = baremetal_states.DELETED self.ipmi._power_on() self.mox.VerifyAll() self.assertEqual(self.ipmi.state, baremetal_states.ACTIVE) def test_power_on_ok(self): self.flags(ipmi_power_retry=0, group='baremetal') self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.ipmi._exec_ipmitool("power on").AndReturn([]) self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is on\n"]) self.mox.ReplayAll() self.ipmi.state = baremetal_states.DELETED self.ipmi._power_on() self.mox.VerifyAll() self.assertEqual(self.ipmi.state, baremetal_states.ACTIVE) def test_power_on_fail(self): self.flags(ipmi_power_retry=0, group='baremetal') self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.ipmi._exec_ipmitool("power on").AndReturn([]) self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.mox.ReplayAll() self.ipmi.state = baremetal_states.DELETED self.ipmi._power_on() self.mox.VerifyAll() self.assertEqual(self.ipmi.state, baremetal_states.ERROR) def test_power_on_max_retries(self): self.flags(ipmi_power_retry=2, group='baremetal') self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.ipmi._exec_ipmitool("power on").AndReturn([]) self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.mox.ReplayAll() self.ipmi.state = baremetal_states.DELETED self.ipmi._power_on() self.mox.VerifyAll() self.assertEqual(self.ipmi.state, baremetal_states.ERROR) self.assertEqual(self.ipmi.retries, 3) def test_power_off_ok(self): self.flags(ipmi_power_retry=0, group='baremetal') self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is on\n"]) self.ipmi._exec_ipmitool("power off").AndReturn([]) self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is off\n"]) self.mox.ReplayAll() self.ipmi.state = baremetal_states.ACTIVE self.ipmi._power_off() self.mox.VerifyAll() self.assertEqual(self.ipmi.state, baremetal_states.DELETED) def test_get_console_pid_path(self): self.flags(terminal_pid_dir='/tmp', group='baremetal') path = ipmi._get_console_pid_path(self.ipmi.node_id) self.assertEqual(path, '/tmp/%s.pid' % self.ipmi.node_id) def test_console_pid(self): fd, path = tempfile.mkstemp() with os.fdopen(fd, 'w') as f: f.write("12345\n") self.mox.StubOutWithMock(ipmi, '_get_console_pid_path') ipmi._get_console_pid_path(self.ipmi.node_id).AndReturn(path) self.mox.ReplayAll() pid = ipmi._get_console_pid(self.ipmi.node_id) bm_utils.unlink_without_raise(path) self.mox.VerifyAll() self.assertEqual(pid, 12345) def test_console_pid_nan(self): fd, path = tempfile.mkstemp() with os.fdopen(fd, 'w') as f: f.write("hello world\n") self.mox.StubOutWithMock(ipmi, '_get_console_pid_path') ipmi._get_console_pid_path(self.ipmi.node_id).AndReturn(path) self.mox.ReplayAll() pid = ipmi._get_console_pid(self.ipmi.node_id) bm_utils.unlink_without_raise(path) self.mox.VerifyAll() self.assertIsNone(pid) def test_console_pid_file_not_found(self): pid_path = ipmi._get_console_pid_path(self.ipmi.node_id) self.mox.StubOutWithMock(os.path, 'exists') os.path.exists(pid_path).AndReturn(False) self.mox.ReplayAll() pid = ipmi._get_console_pid(self.ipmi.node_id) self.mox.VerifyAll() self.assertIsNone(pid) nova-2014.1/nova/tests/virt/baremetal/test_baremetal_migrations.conf0000664000175400017540000000155012323721477027036 0ustar jenkinsjenkins00000000000000[unit_tests] # Set up any number of databases to test concurrently. # The "name" used in the test is the config variable key. sqlite=sqlite:// #sqlitefile=sqlite:///test_baremetal_migrations_utils.db #mysql=mysql+mysqldb://user:pass@localhost/test_baremetal_migrations_utils #postgresql=postgresql+psycopg2://user:pass@localhost/test_migrations_utils [migration_dbs] # Migration DB details are listed separately as they can't be connected to # concurrently. These databases can't be the same as above # Note, sqlite:// is in-memory and unique each time it is spawned. # However file sqlite's are not unique. sqlite=sqlite:// #sqlitefile=sqlite:///test_baremetal_migrations.db #mysql=mysql+mysqldb://user:pass@localhost/test_baremetal_migrations #postgresql=postgresql+psycopg2://user:pass@localhost/test_baremetal_migrations [walk_style] snake_walk=yes downgrade=yes nova-2014.1/nova/tests/virt/baremetal/db/0000775000175400017540000000000012323722546021322 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/virt/baremetal/db/test_bm_node.py0000664000175400017540000001534612323721477024351 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Bare-Metal DB testcase for BareMetalNode """ from nova import exception from nova.tests.virt.baremetal.db import base from nova.tests.virt.baremetal.db import utils from nova.virt.baremetal import db class BareMetalNodesTestCase(base.BMDBTestCase): def _create_nodes(self): nodes = [ utils.new_bm_node(pm_address='0', service_host="host1", memory_mb=100000, cpus=100, local_gb=10000), utils.new_bm_node(pm_address='1', service_host="host2", instance_uuid='A', memory_mb=100000, cpus=100, local_gb=10000), utils.new_bm_node(pm_address='2', service_host="host2", memory_mb=1000, cpus=1, local_gb=1000), utils.new_bm_node(pm_address='3', service_host="host2", memory_mb=1000, cpus=2, local_gb=1000), utils.new_bm_node(pm_address='4', service_host="host2", memory_mb=2000, cpus=1, local_gb=1000), utils.new_bm_node(pm_address='5', service_host="host2", memory_mb=2000, cpus=2, local_gb=1000), ] self.ids = [] for n in nodes: ref = db.bm_node_create(self.context, n) self.ids.append(ref['id']) def test_get_all(self): r = db.bm_node_get_all(self.context) self.assertEqual(r, []) self._create_nodes() r = db.bm_node_get_all(self.context) self.assertEqual(len(r), 6) def test_get(self): self._create_nodes() r = db.bm_node_get(self.context, self.ids[0]) self.assertEqual(r['pm_address'], '0') r = db.bm_node_get(self.context, self.ids[1]) self.assertEqual(r['pm_address'], '1') self.assertRaises( exception.NodeNotFound, db.bm_node_get, self.context, -1) def test_get_by_service_host(self): self._create_nodes() r = db.bm_node_get_all(self.context, service_host=None) self.assertEqual(len(r), 6) r = db.bm_node_get_all(self.context, service_host="host1") self.assertEqual(len(r), 1) self.assertEqual(r[0]['pm_address'], '0') r = db.bm_node_get_all(self.context, service_host="host2") self.assertEqual(len(r), 5) pmaddrs = [x['pm_address'] for x in r] self.assertIn('1', pmaddrs) self.assertIn('2', pmaddrs) self.assertIn('3', pmaddrs) self.assertIn('4', pmaddrs) self.assertIn('5', pmaddrs) r = db.bm_node_get_all(self.context, service_host="host3") self.assertEqual(r, []) def test_get_associated(self): self._create_nodes() r = db.bm_node_get_associated(self.context, service_host=None) self.assertEqual(len(r), 1) self.assertEqual(r[0]['pm_address'], '1') r = db.bm_node_get_unassociated(self.context, service_host=None) self.assertEqual(len(r), 5) pmaddrs = [x['pm_address'] for x in r] self.assertIn('0', pmaddrs) self.assertIn('2', pmaddrs) self.assertIn('3', pmaddrs) self.assertIn('4', pmaddrs) self.assertIn('5', pmaddrs) def test_destroy(self): self._create_nodes() db.bm_node_destroy(self.context, self.ids[0]) self.assertRaises( exception.NodeNotFound, db.bm_node_get, self.context, self.ids[0]) r = db.bm_node_get_all(self.context) self.assertEqual(len(r), 5) def test_destroy_with_interfaces(self): self._create_nodes() if_a_id = db.bm_interface_create(self.context, self.ids[0], 'aa:aa:aa:aa:aa:aa', None, None) if_b_id = db.bm_interface_create(self.context, self.ids[0], 'bb:bb:bb:bb:bb:bb', None, None) if_x_id = db.bm_interface_create(self.context, self.ids[1], '11:22:33:44:55:66', None, None) db.bm_node_destroy(self.context, self.ids[0]) self.assertRaises( exception.NovaException, db.bm_interface_get, self.context, if_a_id) self.assertRaises( exception.NovaException, db.bm_interface_get, self.context, if_b_id) # Another node's interface is not affected if_x = db.bm_interface_get(self.context, if_x_id) self.assertEqual(self.ids[1], if_x['bm_node_id']) self.assertRaises( exception.NodeNotFound, db.bm_node_get, self.context, self.ids[0]) r = db.bm_node_get_all(self.context) self.assertEqual(len(r), 5) def test_find_free(self): self._create_nodes() fn = db.bm_node_find_free(self.context, 'host2') self.assertEqual(fn['pm_address'], '2') fn = db.bm_node_find_free(self.context, 'host2', memory_mb=500, cpus=2, local_gb=100) self.assertEqual(fn['pm_address'], '3') fn = db.bm_node_find_free(self.context, 'host2', memory_mb=1001, cpus=1, local_gb=1000) self.assertEqual(fn['pm_address'], '4') fn = db.bm_node_find_free(self.context, 'host2', memory_mb=2000, cpus=1, local_gb=1000) self.assertEqual(fn['pm_address'], '4') fn = db.bm_node_find_free(self.context, 'host2', memory_mb=2000, cpus=2, local_gb=1000) self.assertEqual(fn['pm_address'], '5') # check memory_mb fn = db.bm_node_find_free(self.context, 'host2', memory_mb=2001, cpus=2, local_gb=1000) self.assertIsNone(fn) # check cpus fn = db.bm_node_find_free(self.context, 'host2', memory_mb=2000, cpus=3, local_gb=1000) self.assertIsNone(fn) # check local_gb fn = db.bm_node_find_free(self.context, 'host2', memory_mb=2000, cpus=2, local_gb=1001) self.assertIsNone(fn) nova-2014.1/nova/tests/virt/baremetal/db/test_bm_interface.py0000664000175400017540000000447012323721477025360 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Bare-metal DB testcase for BareMetalInterface """ from nova import exception from nova.openstack.common.db import exception as db_exc from nova.tests.virt.baremetal.db import base from nova.virt.baremetal import db class BareMetalInterfaceTestCase(base.BMDBTestCase): def test_unique_address(self): pif1_id = db.bm_interface_create(self.context, 1, '11:11:11:11:11:11', '0x1', 1) self.assertRaises(db_exc.DBError, db.bm_interface_create, self.context, 2, '11:11:11:11:11:11', '0x2', 2) # succeed after delete pif1 db.bm_interface_destroy(self.context, pif1_id) pif2_id = db.bm_interface_create(self.context, 2, '11:11:11:11:11:11', '0x2', 2) self.assertIsNotNone(pif2_id) def test_unique_vif_uuid(self): pif1_id = db.bm_interface_create(self.context, 1, '11:11:11:11:11:11', '0x1', 1) pif2_id = db.bm_interface_create(self.context, 2, '22:22:22:22:22:22', '0x2', 2) db.bm_interface_set_vif_uuid(self.context, pif1_id, 'AAAA') self.assertRaises(exception.NovaException, db.bm_interface_set_vif_uuid, self.context, pif2_id, 'AAAA') def test_vif_not_found(self): pif_id = db.bm_interface_create(self.context, 1, '11:11:11:11:11:11', '0x1', 1) self.assertRaises(exception.NovaException, db.bm_interface_set_vif_uuid, self.context, pif_id + 1, 'AAAA') nova-2014.1/nova/tests/virt/baremetal/db/utils.py0000664000175400017540000000401412323721477023035 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Bare-metal test utils.""" from nova import test from nova.virt.baremetal.db.sqlalchemy import models as bm_models def new_bm_node(**kwargs): h = bm_models.BareMetalNode() h.id = kwargs.pop('id', None) h.uuid = kwargs.pop('uuid', None) h.service_host = kwargs.pop('service_host', None) h.instance_uuid = kwargs.pop('instance_uuid', None) h.cpus = kwargs.pop('cpus', 1) h.memory_mb = kwargs.pop('memory_mb', 1024) h.local_gb = kwargs.pop('local_gb', 64) h.pm_address = kwargs.pop('pm_address', '192.168.1.1') h.pm_user = kwargs.pop('pm_user', 'ipmi_user') h.pm_password = kwargs.pop('pm_password', 'ipmi_password') h.task_state = kwargs.pop('task_state', None) h.terminal_port = kwargs.pop('terminal_port', 8000) if len(kwargs) > 0: raise test.TestingException("unknown field: %s" % ','.join(kwargs.keys())) return h def new_bm_interface(**kwargs): x = bm_models.BareMetalInterface() x.id = kwargs.pop('id', None) x.bm_node_id = kwargs.pop('bm_node_id', None) x.address = kwargs.pop('address', None) x.datapath_id = kwargs.pop('datapath_id', None) x.port_no = kwargs.pop('port_no', None) x.vif_uuid = kwargs.pop('vif_uuid', None) if len(kwargs) > 0: raise test.TestingException("unknown field: %s" % ','.join(kwargs.keys())) return x nova-2014.1/nova/tests/virt/baremetal/db/base.py0000664000175400017540000000323112323721477022607 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Bare-metal DB test base class.""" from oslo.config import cfg from nova import context as nova_context from nova import test from nova.virt.baremetal.db import migration as bm_migration from nova.virt.baremetal.db.sqlalchemy import session as bm_session _DB_CACHE = None CONF = cfg.CONF CONF.import_opt('sql_connection', 'nova.virt.baremetal.db.sqlalchemy.session', group='baremetal') class Database(test.Database): def post_migrations(self): pass class BMDBTestCase(test.TestCase): def setUp(self): super(BMDBTestCase, self).setUp() self.flags(sql_connection='sqlite://', group='baremetal') global _DB_CACHE if not _DB_CACHE: _DB_CACHE = Database(bm_session, bm_migration, sql_connection=CONF.baremetal.sql_connection, sqlite_db=None, sqlite_clean_db=None) self.useFixture(_DB_CACHE) self.context = nova_context.get_admin_context() nova-2014.1/nova/tests/virt/baremetal/db/__init__.py0000664000175400017540000000117312323721477023437 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/virt/baremetal/__init__.py0000664000175400017540000000117312323721477023052 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/virt/baremetal/test_iboot_pdu.py0000664000175400017540000001066712323721477024346 0ustar jenkinsjenkins00000000000000# Copyright 2013 Red Hat Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test class for baremetal iBoot power manager.""" from nova import exception from nova import test from nova.tests.virt.baremetal.db import utils as bm_db_utils from nova.virt.baremetal import iboot_pdu class BareMetalIbootPDUTestCase(test.TestCase): def setUp(self): super(BareMetalIbootPDUTestCase, self).setUp() self.node = bm_db_utils.new_bm_node( id=123, pm_address='192.168.1.254', pm_user='foo', pm_password='bar') self.pm = iboot_pdu.IBootManager(node=self.node) def test_construct(self): self.assertEqual(self.pm.address, '192.168.1.254') self.assertEqual(self.pm.port, 9100) self.assertEqual(self.pm.relay_id, 1) self.assertEqual(self.pm.user, 'foo') self.assertEqual(self.pm.password, 'bar') def test_construct_with_port_and_relay(self): self.node = bm_db_utils.new_bm_node( id=123, pm_address='192.168.1.254:1234,8', pm_user='foo', pm_password='bar') self.pm = iboot_pdu.IBootManager(node=self.node) self.assertEqual(self.pm.address, '192.168.1.254') self.assertEqual(self.pm.port, 1234) self.assertEqual(self.pm.relay_id, 8) self.assertEqual(self.pm.user, 'foo') self.assertEqual(self.pm.password, 'bar') def test_construct_with_invalid_port(self): self.node = bm_db_utils.new_bm_node( id=123, pm_address='192.168.1.254:not_a_number', pm_user='foo', pm_password='bar') self.assertRaises(exception.InvalidParameterValue, iboot_pdu.IBootManager, node=self.node) def test_construct_with_relay_id(self): self.node = bm_db_utils.new_bm_node( id=123, pm_address='192.168.1.254:1234,not_a_number', pm_user='foo', pm_password='bar') self.assertRaises(exception.InvalidParameterValue, iboot_pdu.IBootManager, node=self.node) def test_activate_node(self): self.mox.StubOutWithMock(self.pm, '_create_connection') self.mox.StubOutWithMock(self.pm, '_switch') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._create_connection().AndReturn(True) self.pm._switch(1, True).AndReturn(True) self.pm.is_power_on().AndReturn(True) self.mox.ReplayAll() self.pm.activate_node() self.mox.VerifyAll() def test_deactivate_node(self): self.mox.StubOutWithMock(self.pm, '_create_connection') self.mox.StubOutWithMock(self.pm, '_switch') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._create_connection().AndReturn(True) self.pm.is_power_on().AndReturn(True) self.pm._switch(1, False).AndReturn(True) self.pm.is_power_on().AndReturn(False) self.mox.ReplayAll() self.pm.deactivate_node() self.mox.VerifyAll() def test_reboot_node(self): self.mox.StubOutWithMock(self.pm, '_create_connection') self.mox.StubOutWithMock(self.pm, '_switch') self.mox.StubOutWithMock(self.pm, 'is_power_on') self.pm._create_connection().AndReturn(True) self.pm._switch(1, False).AndReturn(True) self.pm._switch(1, True).AndReturn(True) self.pm.is_power_on().AndReturn(True) self.mox.ReplayAll() self.pm.reboot_node() self.mox.VerifyAll() def test_is_power_on(self): self.mox.StubOutWithMock(self.pm, '_create_connection') self.mox.StubOutWithMock(self.pm, '_get_relay') self.pm._create_connection().AndReturn(True) self.pm._get_relay(1).AndReturn(True) self.mox.ReplayAll() self.pm.is_power_on() self.mox.VerifyAll() nova-2014.1/nova/tests/virt/__init__.py0000664000175400017540000000000012323721477021102 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/test_linuxscsi.py0000664000175400017540000001326112323721477021454 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # (c) Copyright 2012-2013 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # 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 oslo.config import cfg from nova.openstack.common import log as logging from nova.storage import linuxscsi from nova import test from nova import utils LOG = logging.getLogger(__name__) CONF = cfg.CONF class StorageLinuxSCSITestCase(test.NoDBTestCase): def setUp(self): super(StorageLinuxSCSITestCase, self).setUp() self.executes = [] def fake_execute(*cmd, **kwargs): self.executes.append(cmd) return None, None self.stubs.Set(utils, 'execute', fake_execute) def test_find_multipath_device_3par(self): def fake_execute(*cmd, **kwargs): out = ("mpath6 (350002ac20398383d) dm-3 3PARdata,VV\n" "size=2.0G features='0' hwhandler='0' wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" " |- 0:0:0:1 sde 8:64 active undef running\n" " `- 2:0:0:1 sdf 8:80 active undef running\n" ) return out, None def fake_execute2(*cmd, **kwargs): out = ("350002ac20398383d dm-3 3PARdata,VV\n" "size=2.0G features='0' hwhandler='0' wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" " |- 0:0:0:1 sde 8:64 active undef running\n" " `- 2:0:0:1 sdf 8:80 active undef running\n" ) return out, None self.stubs.Set(utils, 'execute', fake_execute) info = linuxscsi.find_multipath_device('/dev/sde') LOG.error("info = %s" % info) self.assertEqual("/dev/dm-3", info["device"]) self.assertEqual("/dev/sde", info['devices'][0]['device']) self.assertEqual("0", info['devices'][0]['host']) self.assertEqual("0", info['devices'][0]['id']) self.assertEqual("0", info['devices'][0]['channel']) self.assertEqual("1", info['devices'][0]['lun']) self.assertEqual("/dev/sdf", info['devices'][1]['device']) self.assertEqual("2", info['devices'][1]['host']) self.assertEqual("0", info['devices'][1]['id']) self.assertEqual("0", info['devices'][1]['channel']) self.assertEqual("1", info['devices'][1]['lun']) def test_find_multipath_device_svc(self): def fake_execute(*cmd, **kwargs): out = ("36005076da00638089c000000000004d5 dm-2 IBM,2145\n" "size=954M features='1 queue_if_no_path' hwhandler='0'" " wp=rw\n" "|-+- policy='round-robin 0' prio=-1 status=active\n" "| |- 6:0:2:0 sde 8:64 active undef running\n" "| `- 6:0:4:0 sdg 8:96 active undef running\n" "`-+- policy='round-robin 0' prio=-1 status=enabled\n" " |- 6:0:3:0 sdf 8:80 active undef running\n" " `- 6:0:5:0 sdh 8:112 active undef running\n" ) return out, None self.stubs.Set(utils, 'execute', fake_execute) info = linuxscsi.find_multipath_device('/dev/sde') LOG.error("info = %s" % info) self.assertEqual("/dev/dm-2", info["device"]) self.assertEqual("/dev/sde", info['devices'][0]['device']) self.assertEqual("6", info['devices'][0]['host']) self.assertEqual("0", info['devices'][0]['channel']) self.assertEqual("2", info['devices'][0]['id']) self.assertEqual("0", info['devices'][0]['lun']) self.assertEqual("/dev/sdf", info['devices'][2]['device']) self.assertEqual("6", info['devices'][2]['host']) self.assertEqual("0", info['devices'][2]['channel']) self.assertEqual("3", info['devices'][2]['id']) self.assertEqual("0", info['devices'][2]['lun']) def test_find_multipath_device_ds8000(self): def fake_execute(*cmd, **kwargs): out = ("36005076303ffc48e0000000000000101 dm-2 IBM,2107900\n" "size=1.0G features='1 queue_if_no_path' hwhandler='0'" " wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" " |- 6:0:2:0 sdd 8:64 active undef running\n" " `- 6:1:0:3 sdc 8:32 active undef running\n" ) return out, None self.stubs.Set(utils, 'execute', fake_execute) info = linuxscsi.find_multipath_device('/dev/sdd') LOG.error("info = %s" % info) self.assertEqual("/dev/dm-2", info["device"]) self.assertEqual("/dev/sdd", info['devices'][0]['device']) self.assertEqual("6", info['devices'][0]['host']) self.assertEqual("0", info['devices'][0]['channel']) self.assertEqual("2", info['devices'][0]['id']) self.assertEqual("0", info['devices'][0]['lun']) self.assertEqual("/dev/sdc", info['devices'][1]['device']) self.assertEqual("6", info['devices'][1]['host']) self.assertEqual("1", info['devices'][1]['channel']) self.assertEqual("0", info['devices'][1]['id']) self.assertEqual("3", info['devices'][1]['lun']) nova-2014.1/nova/tests/test_api_validation.py0000664000175400017540000005331412323721477022421 0ustar jenkinsjenkins00000000000000# Copyright 2013 NEC Corporation. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api import validation from nova.api.validation import parameter_types from nova import exception from nova import test class APIValidationTestCase(test.TestCase): def check_validation_error(self, method, body, expected_detail): try: method(body=body) except exception.ValidationError as ex: expected_kwargs = { 'code': 400, 'detail': expected_detail } self.assertEqual(ex.kwargs, expected_kwargs) except Exception as ex: self.fail('An unexpected exception happens: %s' % ex) else: self.fail('Any exception does not happen.') class RequiredDisableTestCase(APIValidationTestCase): def setUp(self): super(RequiredDisableTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': 'integer', }, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_required_disable(self): self.assertEqual(self.post(body={'foo': 1}), 'Validation succeeded.') self.assertEqual(self.post(body={'abc': 1}), 'Validation succeeded.') class RequiredEnableTestCase(APIValidationTestCase): def setUp(self): super(RequiredEnableTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': 'integer', }, }, 'required': ['foo'] } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_required_enable(self): self.assertEqual(self.post(body={'foo': 1}), 'Validation succeeded.') def test_validate_required_enable_fails(self): detail = "'foo' is a required property" self.check_validation_error(self.post, body={'abc': 1}, expected_detail=detail) class AdditionalPropertiesEnableTestCase(APIValidationTestCase): def setUp(self): super(AdditionalPropertiesEnableTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': 'integer', }, }, 'required': ['foo'], } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_additionalProperties_enable(self): self.assertEqual(self.post(body={'foo': 1}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': 1, 'ext': 1}), 'Validation succeeded.') class AdditionalPropertiesDisableTestCase(APIValidationTestCase): def setUp(self): super(AdditionalPropertiesDisableTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': 'integer', }, }, 'required': ['foo'], 'additionalProperties': False, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_additionalProperties_disable(self): self.assertEqual(self.post(body={'foo': 1}), 'Validation succeeded.') def test_validate_additionalProperties_disable_fails(self): detail = "Additional properties are not allowed ('ext' was unexpected)" self.check_validation_error(self.post, body={'foo': 1, 'ext': 1}, expected_detail=detail) class StringTestCase(APIValidationTestCase): def setUp(self): super(StringTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': 'string', }, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_string(self): self.assertEqual(self.post(body={'foo': 'abc'}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': '0'}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': ''}), 'Validation succeeded.') def test_validate_string_fails(self): detail = ("Invalid input for field/attribute foo. Value: 1." " 1 is not of type 'string'") self.check_validation_error(self.post, body={'foo': 1}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 1.5." " 1.5 is not of type 'string'") self.check_validation_error(self.post, body={'foo': 1.5}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: True." " True is not of type 'string'") self.check_validation_error(self.post, body={'foo': True}, expected_detail=detail) class StringLengthTestCase(APIValidationTestCase): def setUp(self): super(StringLengthTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': 'string', 'minLength': 1, 'maxLength': 10, }, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_string_length(self): self.assertEqual(self.post(body={'foo': '0'}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': '0123456789'}), 'Validation succeeded.') def test_validate_string_length_fails(self): detail = ("Invalid input for field/attribute foo. Value: ." " '' is too short") self.check_validation_error(self.post, body={'foo': ''}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 0123456789a." " '0123456789a' is too long") self.check_validation_error(self.post, body={'foo': '0123456789a'}, expected_detail=detail) class IntegerTestCase(APIValidationTestCase): def setUp(self): super(IntegerTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': ['integer', 'string'], 'pattern': '^[0-9]+$', }, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_integer(self): self.assertEqual(self.post(body={'foo': 1}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': '1'}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': '0123456789'}), 'Validation succeeded.') def test_validate_integer_fails(self): detail = ("Invalid input for field/attribute foo. Value: abc." " 'abc' does not match '^[0-9]+$'") self.check_validation_error(self.post, body={'foo': 'abc'}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: True." " True is not of type 'integer', 'string'") self.check_validation_error(self.post, body={'foo': True}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 0xffff." " '0xffff' does not match '^[0-9]+$'") self.check_validation_error(self.post, body={'foo': '0xffff'}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 1.0." " 1.0 is not of type 'integer', 'string'") self.check_validation_error(self.post, body={'foo': 1.0}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 1.0." " '1.0' does not match '^[0-9]+$'") self.check_validation_error(self.post, body={'foo': '1.0'}, expected_detail=detail) class IntegerRangeTestCase(APIValidationTestCase): def setUp(self): super(IntegerRangeTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': { 'type': ['integer', 'string'], 'pattern': '^[0-9]+$', 'minimum': 1, 'maximum': 10, }, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_integer_range(self): self.assertEqual(self.post(body={'foo': 1}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': 10}), 'Validation succeeded.') self.assertEqual(self.post(body={'foo': '1'}), 'Validation succeeded.') def test_validate_integer_range_fails(self): detail = ("Invalid input for field/attribute foo. Value: 0." " 0.0 is less than the minimum of 1") self.check_validation_error(self.post, body={'foo': 0}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 11." " 11.0 is greater than the maximum of 10") self.check_validation_error(self.post, body={'foo': 11}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 0." " 0.0 is less than the minimum of 1") self.check_validation_error(self.post, body={'foo': '0'}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 11." " 11.0 is greater than the maximum of 10") self.check_validation_error(self.post, body={'foo': '11'}, expected_detail=detail) class BooleanTestCase(APIValidationTestCase): def setUp(self): super(BooleanTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': parameter_types.boolean, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_boolean(self): self.assertEqual('Validation succeeded.', self.post(body={'foo': True})) self.assertEqual('Validation succeeded.', self.post(body={'foo': False})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'True'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'False'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': '1'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': '0'})) def test_validate_boolean_fails(self): enum_boolean = ("[True, 'True', 'TRUE', 'true', '1'," " False, 'False', 'FALSE', 'false', '0']") detail = ("Invalid input for field/attribute foo. Value: bar." " 'bar' is not one of %s") % enum_boolean self.check_validation_error(self.post, body={'foo': 'bar'}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 2." " '2' is not one of %s") % enum_boolean self.check_validation_error(self.post, body={'foo': '2'}, expected_detail=detail) class HostnameTestCase(APIValidationTestCase): def setUp(self): super(HostnameTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': parameter_types.hostname, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_hostname(self): self.assertEqual('Validation succeeded.', self.post(body={'foo': 'localhost'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'localhost.localdomain.com'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'my-host'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'my_host'})) def test_validate_hostname_fails(self): detail = ("Invalid input for field/attribute foo. Value: True." " True is not of type 'string'") self.check_validation_error(self.post, body={'foo': True}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 1." " 1 is not of type 'string'") self.check_validation_error(self.post, body={'foo': 1}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: my$host." " 'my$host' does not match '^[a-zA-Z0-9-._]*$'") self.check_validation_error(self.post, body={'foo': 'my$host'}, expected_detail=detail) class HostnameIPaddressTestCase(APIValidationTestCase): def setUp(self): super(HostnameIPaddressTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': parameter_types.hostname_or_ip_address, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_hostname_or_ip_address(self): self.assertEqual('Validation succeeded.', self.post(body={'foo': 'localhost'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'localhost.localdomain.com'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'my-host'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'my_host'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': '192.168.10.100'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': '2001:db8::9abc'})) def test_validate_hostname_or_ip_address_fails(self): detail = ("Invalid input for field/attribute foo. Value: True." " True is not of type 'string'") self.check_validation_error(self.post, body={'foo': True}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: 1." " 1 is not of type 'string'") self.check_validation_error(self.post, body={'foo': 1}, expected_detail=detail) detail = ("Invalid input for field/attribute foo. Value: my$host." " 'my$host' does not match '^[a-zA-Z0-9-_.:]*$'") self.check_validation_error(self.post, body={'foo': 'my$host'}, expected_detail=detail) class NameTestCase(APIValidationTestCase): def setUp(self): super(NameTestCase, self).setUp() schema = { 'type': 'object', 'properties': { 'foo': parameter_types.name, }, } @validation.schema(request_body_schema=schema) def post(body): return 'Validation succeeded.' self.post = post def test_validate_name(self): self.assertEqual('Validation succeeded.', self.post(body={'foo': 'm1.small'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'my server'})) self.assertEqual('Validation succeeded.', self.post(body={'foo': 'a'})) def test_validate_name_fails(self): pattern = "'^(?! )[a-zA-Z0-9. _-]+(?") # Create a template element elem = xmlutil.TemplateElement('test2') # Create a child element child = xmlutil.TemplateElement('child') # Append the child to the parent elem.append(child) self.assertEqual(elem.tree(), "" "") class TemplateTest(test.NoDBTestCase): def test_tree(self): elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem) self.assertTrue(tmpl.tree()) def test_wrap(self): # These are strange methods, but they make things easier elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem) self.assertEqual(tmpl.unwrap(), elem) self.assertEqual(tmpl.wrap(), tmpl) def test__siblings(self): # Set up a basic template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem) # Check that we get the right siblings siblings = tmpl._siblings() self.assertEqual(len(siblings), 1) self.assertEqual(siblings[0], elem) def test__nsmap(self): # Set up a basic template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem, nsmap=dict(a="foo")) # Check out that we get the right namespace dictionary nsmap = tmpl._nsmap() self.assertNotEqual(id(nsmap), id(tmpl.nsmap)) self.assertEqual(len(nsmap), 1) self.assertEqual(nsmap['a'], 'foo') def test_master_attach(self): # Set up a master template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.MasterTemplate(elem, 1) # Make sure it has a root but no slaves self.assertEqual(tmpl.root, elem) self.assertEqual(len(tmpl.slaves), 0) self.assertTrue(repr(tmpl)) # Try to attach an invalid slave bad_elem = xmlutil.TemplateElement('test2') self.assertRaises(ValueError, tmpl.attach, bad_elem) self.assertEqual(len(tmpl.slaves), 0) # Try to attach an invalid and a valid slave good_elem = xmlutil.TemplateElement('test') self.assertRaises(ValueError, tmpl.attach, good_elem, bad_elem) self.assertEqual(len(tmpl.slaves), 0) # Try to attach an inapplicable template class InapplicableTemplate(xmlutil.Template): def apply(self, master): return False inapp_tmpl = InapplicableTemplate(good_elem) tmpl.attach(inapp_tmpl) self.assertEqual(len(tmpl.slaves), 0) # Now try attaching an applicable template tmpl.attach(good_elem) self.assertEqual(len(tmpl.slaves), 1) self.assertEqual(tmpl.slaves[0].root, good_elem) def test_master_copy(self): # Construct a master template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.MasterTemplate(elem, 1, nsmap=dict(a='foo')) # Give it a slave slave = xmlutil.TemplateElement('test') tmpl.attach(slave) # Construct a copy copy = tmpl.copy() # Check to see if we actually managed a copy self.assertNotEqual(tmpl, copy) self.assertEqual(tmpl.root, copy.root) self.assertEqual(tmpl.version, copy.version) self.assertEqual(id(tmpl.nsmap), id(copy.nsmap)) self.assertNotEqual(id(tmpl.slaves), id(copy.slaves)) self.assertEqual(len(tmpl.slaves), len(copy.slaves)) self.assertEqual(tmpl.slaves[0], copy.slaves[0]) def test_slave_apply(self): # Construct a master template elem = xmlutil.TemplateElement('test') master = xmlutil.MasterTemplate(elem, 3) # Construct a slave template with applicable minimum version slave = xmlutil.SlaveTemplate(elem, 2) self.assertEqual(slave.apply(master), True) self.assertTrue(repr(slave)) # Construct a slave template with equal minimum version slave = xmlutil.SlaveTemplate(elem, 3) self.assertEqual(slave.apply(master), True) # Construct a slave template with inapplicable minimum version slave = xmlutil.SlaveTemplate(elem, 4) self.assertEqual(slave.apply(master), False) # Construct a slave template with applicable version range slave = xmlutil.SlaveTemplate(elem, 2, 4) self.assertEqual(slave.apply(master), True) # Construct a slave template with low version range slave = xmlutil.SlaveTemplate(elem, 1, 2) self.assertEqual(slave.apply(master), False) # Construct a slave template with high version range slave = xmlutil.SlaveTemplate(elem, 4, 5) self.assertEqual(slave.apply(master), False) # Construct a slave template with matching version range slave = xmlutil.SlaveTemplate(elem, 3, 3) self.assertEqual(slave.apply(master), True) def test__serialize(self): # Our test object to serialize obj = { 'test': { 'name': 'foobar', 'values': [1, 2, 3, 4], 'attrs': { 'a': 1, 'b': 2, 'c': 3, 'd': 4, }, 'image': { 'name': 'image_foobar', 'id': 42, }, }, } # Set up our master template root = xmlutil.TemplateElement('test', selector='test', name='name') value = xmlutil.SubTemplateElement(root, 'value', selector='values') value.text = xmlutil.Selector() attrs = xmlutil.SubTemplateElement(root, 'attrs', selector='attrs') xmlutil.SubTemplateElement(attrs, 'attr', selector=xmlutil.get_items, key=0, value=1) master = xmlutil.MasterTemplate(root, 1, nsmap=dict(f='foo')) # Set up our slave template root_slave = xmlutil.TemplateElement('test', selector='test') image = xmlutil.SubTemplateElement(root_slave, 'image', selector='image', id='id') image.text = xmlutil.Selector('name') slave = xmlutil.SlaveTemplate(root_slave, 1, nsmap=dict(b='bar')) # Attach the slave to the master... master.attach(slave) # Try serializing our object siblings = master._siblings() nsmap = master._nsmap() result = master._serialize(None, obj, siblings, nsmap) # Now we get to manually walk the element tree... self.assertEqual(result.tag, 'test') self.assertEqual(len(result.nsmap), 2) self.assertEqual(result.nsmap['f'], 'foo') self.assertEqual(result.nsmap['b'], 'bar') self.assertEqual(result.get('name'), obj['test']['name']) for idx, val in enumerate(obj['test']['values']): self.assertEqual(result[idx].tag, 'value') self.assertEqual(result[idx].text, str(val)) idx += 1 self.assertEqual(result[idx].tag, 'attrs') for attr in result[idx]: self.assertEqual(attr.tag, 'attr') self.assertEqual(attr.get('value'), str(obj['test']['attrs'][attr.get('key')])) idx += 1 self.assertEqual(result[idx].tag, 'image') self.assertEqual(result[idx].get('id'), str(obj['test']['image']['id'])) self.assertEqual(result[idx].text, obj['test']['image']['name']) templ = xmlutil.Template(None) self.assertEqual(templ.serialize(None), '') def test_serialize_with_colon_tagname_support(self): # Our test object to serialize obj = {'extra_specs': {'foo:bar': '999'}} expected_xml = (("\n" '999' '')) # Set up our master template root = xmlutil.TemplateElement('extra_specs', selector='extra_specs', colon_ns=True) value = xmlutil.SubTemplateElement(root, 'foo:bar', selector='foo:bar', colon_ns=True) value.text = xmlutil.Selector() master = xmlutil.MasterTemplate(root, 1) result = master.serialize(obj) self.assertEqual(expected_xml, result) def test__serialize_with_empty_datum_selector(self): # Our test object to serialize obj = { 'test': { 'name': 'foobar', 'image': '' }, } root = xmlutil.TemplateElement('test', selector='test', name='name') master = xmlutil.MasterTemplate(root, 1) root_slave = xmlutil.TemplateElement('test', selector='test') image = xmlutil.SubTemplateElement(root_slave, 'image', selector='image') image.set('id') xmlutil.make_links(image, 'links') slave = xmlutil.SlaveTemplate(root_slave, 1) master.attach(slave) siblings = master._siblings() result = master._serialize(None, obj, siblings) self.assertEqual(result.tag, 'test') self.assertEqual(result[0].tag, 'image') self.assertEqual(result[0].get('id'), str(obj['test']['image'])) class MasterTemplateBuilder(xmlutil.TemplateBuilder): def construct(self): elem = xmlutil.TemplateElement('test') return xmlutil.MasterTemplate(elem, 1) class SlaveTemplateBuilder(xmlutil.TemplateBuilder): def construct(self): elem = xmlutil.TemplateElement('test') return xmlutil.SlaveTemplate(elem, 1) class TemplateBuilderTest(test.NoDBTestCase): def test_master_template_builder(self): # Make sure the template hasn't been built yet self.assertIsNone(MasterTemplateBuilder._tmpl) # Now, construct the template tmpl1 = MasterTemplateBuilder() # Make sure that there is a template cached... self.assertIsNotNone(MasterTemplateBuilder._tmpl) # Make sure it wasn't what was returned... self.assertNotEqual(MasterTemplateBuilder._tmpl, tmpl1) # Make sure it doesn't get rebuilt cached = MasterTemplateBuilder._tmpl tmpl2 = MasterTemplateBuilder() self.assertEqual(MasterTemplateBuilder._tmpl, cached) # Make sure we're always getting fresh copies self.assertNotEqual(tmpl1, tmpl2) # Make sure we can override the copying behavior tmpl3 = MasterTemplateBuilder(False) self.assertEqual(MasterTemplateBuilder._tmpl, tmpl3) def test_slave_template_builder(self): # Make sure the template hasn't been built yet self.assertIsNone(SlaveTemplateBuilder._tmpl) # Now, construct the template tmpl1 = SlaveTemplateBuilder() # Make sure there is a template cached... self.assertIsNotNone(SlaveTemplateBuilder._tmpl) # Make sure it was what was returned... self.assertEqual(SlaveTemplateBuilder._tmpl, tmpl1) # Make sure it doesn't get rebuilt tmpl2 = SlaveTemplateBuilder() self.assertEqual(SlaveTemplateBuilder._tmpl, tmpl1) # Make sure we're always getting the cached copy self.assertEqual(tmpl1, tmpl2) class MiscellaneousXMLUtilTests(test.NoDBTestCase): def test_validate_schema(self): xml = ''' value6value4 ''' xmlutil.validate_schema(xml, 'metadata') # No way to test the return value of validate_schema. # It just raises an exception when something is wrong. self.assertTrue(True) def test_make_links(self): elem = xmlutil.TemplateElement('image', selector='image') self.assertTrue(repr(xmlutil.make_links(elem, 'links'))) def test_make_flat_dict(self): expected_xml = ("\n" 'foobar') root = xmlutil.make_flat_dict('wrapper') tmpl = xmlutil.MasterTemplate(root, 1) result = tmpl.serialize(dict(wrapper=dict(a='foo', b='bar'))) self.assertEqual(result, expected_xml) expected_xml = ("\n" 'foobar' "") root = xmlutil.make_flat_dict('wrapper', ns='ns') tmpl = xmlutil.MasterTemplate(root, 1) result = tmpl.serialize(dict(wrapper=dict(a='foo', b='bar'))) self.assertEqual(result, expected_xml) def test_make_flat_dict_with_colon_tagname_support(self): # Our test object to serialize obj = {'extra_specs': {'foo:bar': '999'}} expected_xml = (("\n" '999' '')) # Set up our master template root = xmlutil.make_flat_dict('extra_specs', colon_ns=True) master = xmlutil.MasterTemplate(root, 1) result = master.serialize(obj) self.assertEqual(expected_xml, result) def test_make_flat_dict_with_parent(self): # Our test object to serialize obj = {"device": {"id": 1, "extra_info": {"key1": "value1", "key2": "value2"}}} expected_xml = (("\n" 'value2' 'value1')) root = xmlutil.TemplateElement('device', selector='device') root.set('id') extra = xmlutil.make_flat_dict('extra_info', root=root) root.append(extra) master = xmlutil.MasterTemplate(root, 1) result = master.serialize(obj) self.assertEqual(expected_xml, result) def test_make_flat_dict_with_dicts(self): # Our test object to serialize obj = {"device": {"id": 1, "extra_info": {"key1": "value1", "key2": "value2"}}} expected_xml = (("\n" '1value2' 'value1')) root = xmlutil.make_flat_dict('device', selector='device', ignore_sub_dicts=True) extra = xmlutil.make_flat_dict('extra_info', selector='extra_info') root.append(extra) master = xmlutil.MasterTemplate(root, 1) result = master.serialize(obj) self.assertEqual(expected_xml, result) def test_safe_parse_xml(self): normal_body = ('' 'heythere') dom = xmlutil.safe_minidom_parse_string(normal_body) # Some versions of minidom inject extra newlines so we ignore them result = str(dom.toxml()).replace('\n', '') self.assertEqual(normal_body, result) self.assertRaises(exception.MalformedRequestBody, xmlutil.safe_minidom_parse_string, tests_utils.killer_xml_body()) class SafeParserTestCase(test.NoDBTestCase): def test_external_dtd(self): xml_string = (""" html with dtd """) parser = xmlutil.ProtectedExpatParser(forbid_dtd=False, forbid_entities=True) self.assertRaises(ValueError, minidom.parseString, xml_string, parser) def test_external_file(self): xml_string = """ ]> """ parser = xmlutil.ProtectedExpatParser(forbid_dtd=False, forbid_entities=True) self.assertRaises(ValueError, minidom.parseString, xml_string, parser) def test_notation(self): xml_string = """ ]> """ parser = xmlutil.ProtectedExpatParser(forbid_dtd=False, forbid_entities=True) self.assertRaises(ValueError, minidom.parseString, xml_string, parser) nova-2014.1/nova/tests/api/openstack/test_mapper.py0000664000175400017540000000316112323721477023455 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api import openstack as openstack_api from nova import test from nova.tests.api.openstack import fakes class MapperTest(test.NoDBTestCase): def test_resource_project_prefix(self): class Controller(object): def index(self, req): return 'foo' app = fakes.TestRouter(Controller(), openstack_api.ProjectMapper()) req = webob.Request.blank('/1234/tests') resp = req.get_response(app) self.assertEqual(resp.body, 'foo') self.assertEqual(resp.status_int, 200) def test_resource_no_project_prefix(self): class Controller(object): def index(self, req): return 'foo' app = fakes.TestRouter(Controller(), openstack_api.PlainMapper()) req = webob.Request.blank('/tests') resp = req.get_response(app) self.assertEqual(resp.body, 'foo') self.assertEqual(resp.status_int, 200) nova-2014.1/nova/tests/api/openstack/test_wsgi.py0000664000175400017540000012735712323721477023160 0ustar jenkinsjenkins00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import inspect import webob from nova.api.openstack import extensions from nova.api.openstack import wsgi from nova import exception from nova.openstack.common import gettextutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import utils class RequestTest(test.NoDBTestCase): def test_content_type_missing(self): request = wsgi.Request.blank('/tests/123', method='POST') request.body = "" self.assertIsNone(request.get_content_type()) def test_content_type_unsupported(self): request = wsgi.Request.blank('/tests/123', method='POST') request.headers["Content-Type"] = "text/html" request.body = "asdf
" self.assertRaises(exception.InvalidContentType, request.get_content_type) def test_content_type_with_charset(self): request = wsgi.Request.blank('/tests/123') request.headers["Content-Type"] = "application/json; charset=UTF-8" result = request.get_content_type() self.assertEqual(result, "application/json") def test_content_type_from_accept(self): for content_type in ('application/xml', 'application/vnd.openstack.compute+xml', 'application/json', 'application/vnd.openstack.compute+json'): request = wsgi.Request.blank('/tests/123') request.headers["Accept"] = content_type result = request.best_match_content_type() self.assertEqual(result, content_type) def test_content_type_from_accept_best(self): request = wsgi.Request.blank('/tests/123') request.headers["Accept"] = "application/xml, application/json" result = request.best_match_content_type() self.assertEqual(result, "application/json") request = wsgi.Request.blank('/tests/123') request.headers["Accept"] = ("application/json; q=0.3, " "application/xml; q=0.9") result = request.best_match_content_type() self.assertEqual(result, "application/xml") def test_content_type_from_query_extension(self): request = wsgi.Request.blank('/tests/123.xml') result = request.best_match_content_type() self.assertEqual(result, "application/xml") request = wsgi.Request.blank('/tests/123.json') result = request.best_match_content_type() self.assertEqual(result, "application/json") request = wsgi.Request.blank('/tests/123.invalid') result = request.best_match_content_type() self.assertEqual(result, "application/json") def test_content_type_accept_and_query_extension(self): request = wsgi.Request.blank('/tests/123.xml') request.headers["Accept"] = "application/json" result = request.best_match_content_type() self.assertEqual(result, "application/xml") def test_content_type_accept_default(self): request = wsgi.Request.blank('/tests/123.unsupported') request.headers["Accept"] = "application/unsupported1" result = request.best_match_content_type() self.assertEqual(result, "application/json") def test_cache_and_retrieve_instances(self): request = wsgi.Request.blank('/foo') instances = [] for x in xrange(3): instances.append({'uuid': 'uuid%s' % x}) # Store 2 request.cache_db_instances(instances[:2]) # Store 1 request.cache_db_instance(instances[2]) self.assertEqual(request.get_db_instance('uuid0'), instances[0]) self.assertEqual(request.get_db_instance('uuid1'), instances[1]) self.assertEqual(request.get_db_instance('uuid2'), instances[2]) self.assertIsNone(request.get_db_instance('uuid3')) self.assertEqual(request.get_db_instances(), {'uuid0': instances[0], 'uuid1': instances[1], 'uuid2': instances[2]}) def test_cache_and_retrieve_compute_nodes(self): request = wsgi.Request.blank('/foo') compute_nodes = [] for x in xrange(3): compute_nodes.append({'id': 'id%s' % x}) # Store 2 request.cache_db_compute_nodes(compute_nodes[:2]) # Store 1 request.cache_db_compute_node(compute_nodes[2]) self.assertEqual(request.get_db_compute_node('id0'), compute_nodes[0]) self.assertEqual(request.get_db_compute_node('id1'), compute_nodes[1]) self.assertEqual(request.get_db_compute_node('id2'), compute_nodes[2]) self.assertEqual(request.get_db_compute_node('id3'), None) self.assertEqual(request.get_db_compute_nodes(), {'id0': compute_nodes[0], 'id1': compute_nodes[1], 'id2': compute_nodes[2]}) def test_from_request(self): self.stubs.Set(gettextutils, 'get_available_languages', fakes.fake_get_available_languages) request = wsgi.Request.blank('/') accepted = 'bogus;q=1.1, en-gb;q=0.7,en-us,en;q=.5,*;q=.7' request.headers = {'Accept-Language': accepted} self.assertEqual(request.best_match_language(), 'en_US') def test_asterisk(self): # asterisk should match first available if there # are not any other available matches self.stubs.Set(gettextutils, 'get_available_languages', fakes.fake_get_available_languages) request = wsgi.Request.blank('/') accepted = '*,es;q=.5' request.headers = {'Accept-Language': accepted} self.assertEqual(request.best_match_language(), 'en_GB') def test_prefix(self): self.stubs.Set(gettextutils, 'get_available_languages', fakes.fake_get_available_languages) request = wsgi.Request.blank('/') accepted = 'zh' request.headers = {'Accept-Language': accepted} self.assertEqual(request.best_match_language(), 'zh_CN') def test_secondary(self): self.stubs.Set(gettextutils, 'get_available_languages', fakes.fake_get_available_languages) request = wsgi.Request.blank('/') accepted = 'nn,en-gb;q=.5' request.headers = {'Accept-Language': accepted} self.assertEqual(request.best_match_language(), 'en_GB') def test_none_found(self): self.stubs.Set(gettextutils, 'get_available_languages', fakes.fake_get_available_languages) request = wsgi.Request.blank('/') accepted = 'nb-no' request.headers = {'Accept-Language': accepted} self.assertIs(request.best_match_language(), None) def test_no_lang_header(self): self.stubs.Set(gettextutils, 'get_available_languages', fakes.fake_get_available_languages) request = wsgi.Request.blank('/') accepted = '' request.headers = {'Accept-Language': accepted} self.assertIs(request.best_match_language(), None) class ActionDispatcherTest(test.NoDBTestCase): def test_dispatch(self): serializer = wsgi.ActionDispatcher() serializer.create = lambda x: 'pants' self.assertEqual(serializer.dispatch({}, action='create'), 'pants') def test_dispatch_action_None(self): serializer = wsgi.ActionDispatcher() serializer.create = lambda x: 'pants' serializer.default = lambda x: 'trousers' self.assertEqual(serializer.dispatch({}, action=None), 'trousers') def test_dispatch_default(self): serializer = wsgi.ActionDispatcher() serializer.create = lambda x: 'pants' serializer.default = lambda x: 'trousers' self.assertEqual(serializer.dispatch({}, action='update'), 'trousers') class DictSerializerTest(test.NoDBTestCase): def test_dispatch_default(self): serializer = wsgi.DictSerializer() self.assertEqual(serializer.serialize({}, 'update'), '') class XMLDictSerializerTest(test.NoDBTestCase): def test_xml(self): input_dict = dict(servers=dict(a=(2, 3))) expected_xml = '(2,3)' serializer = wsgi.XMLDictSerializer(xmlns="asdf") result = serializer.serialize(input_dict) result = result.replace('\n', '').replace(' ', '') self.assertEqual(result, expected_xml) class JSONDictSerializerTest(test.NoDBTestCase): def test_json(self): input_dict = dict(servers=dict(a=(2, 3))) expected_json = '{"servers":{"a":[2,3]}}' serializer = wsgi.JSONDictSerializer() result = serializer.serialize(input_dict) result = result.replace('\n', '').replace(' ', '') self.assertEqual(result, expected_json) class TextDeserializerTest(test.NoDBTestCase): def test_dispatch_default(self): deserializer = wsgi.TextDeserializer() self.assertEqual(deserializer.deserialize({}, 'update'), {}) class JSONDeserializerTest(test.NoDBTestCase): def test_json(self): data = """{"a": { "a1": "1", "a2": "2", "bs": ["1", "2", "3", {"c": {"c1": "1"}}], "d": {"e": "1"}, "f": "1"}}""" as_dict = { 'body': { 'a': { 'a1': '1', 'a2': '2', 'bs': ['1', '2', '3', {'c': {'c1': '1'}}], 'd': {'e': '1'}, 'f': '1', }, }, } deserializer = wsgi.JSONDeserializer() self.assertEqual(deserializer.deserialize(data), as_dict) def test_json_valid_utf8(self): data = """{"server": {"min_count": 1, "flavorRef": "1", "name": "\xe6\xa6\x82\xe5\xbf\xb5", "imageRef": "10bab10c-1304-47d", "max_count": 1}} """ as_dict = { 'body': { u'server': { u'min_count': 1, u'flavorRef': u'1', u'name': u'\u6982\u5ff5', u'imageRef': u'10bab10c-1304-47d', u'max_count': 1 } } } deserializer = wsgi.JSONDeserializer() self.assertEqual(deserializer.deserialize(data), as_dict) def test_json_invalid_utf8(self): """ Send invalid utf-8 to JSONDeserializer""" data = """{"server": {"min_count": 1, "flavorRef": "1", "name": "\xf0\x28\x8c\x28", "imageRef": "10bab10c-1304-47d", "max_count": 1}} """ deserializer = wsgi.JSONDeserializer() self.assertRaises(exception.MalformedRequestBody, deserializer.deserialize, data) class XMLDeserializerTest(test.NoDBTestCase): def test_xml(self): xml = """ 123 1 1 """.strip() as_dict = { 'body': { 'a': { 'a1': '1', 'a2': '2', 'bs': ['1', '2', '3', {'c': {'c1': '1'}}], 'd': {'e': '1'}, 'f': '1', }, }, } metadata = {'plurals': {'bs': 'b', 'ts': 't'}} deserializer = wsgi.XMLDeserializer(metadata=metadata) self.assertEqual(deserializer.deserialize(xml), as_dict) def test_xml_empty(self): xml = '
' as_dict = {"body": {"a": {}}} deserializer = wsgi.XMLDeserializer() self.assertEqual(deserializer.deserialize(xml), as_dict) def test_xml_valid_utf8(self): xml = """ \xe6\xa6\x82\xe5\xbf\xb5 """ deserializer = wsgi.XMLDeserializer() as_dict = {'body': {u'a': {u'name': u'\u6982\u5ff5'}}} self.assertEqual(deserializer.deserialize(xml), as_dict) def test_xml_invalid_utf8(self): """ Send invalid utf-8 to XMLDeserializer""" xml = """ \xf0\x28\x8c\x28 """ deserializer = wsgi.XMLDeserializer() self.assertRaises(exception.MalformedRequestBody, deserializer.deserialize, xml) class ResourceTest(test.NoDBTestCase): def test_resource_call_with_method_get(self): class Controller(object): def index(self, req): return 'success' app = fakes.TestRouter(Controller()) # the default method is GET req = webob.Request.blank('/tests') response = req.get_response(app) self.assertEqual(response.body, 'success') self.assertEqual(response.status_int, 200) req.body = '{"body": {"key": "value"}}' response = req.get_response(app) self.assertEqual(response.body, 'success') self.assertEqual(response.status_int, 200) req.content_type = 'application/json' response = req.get_response(app) self.assertEqual(response.body, 'success') self.assertEqual(response.status_int, 200) def test_resource_call_with_method_post(self): class Controller(object): @extensions.expected_errors(400) def create(self, req, body): if expected_body != body: msg = "The request body invalid" raise webob.exc.HTTPBadRequest(explanation=msg) return "success" # verify the method: POST app = fakes.TestRouter(Controller()) req = webob.Request.blank('/tests', method="POST", content_type='application/json') req.body = '{"body": {"key": "value"}}' expected_body = {'body': { "key": "value" } } response = req.get_response(app) self.assertEqual(response.status_int, 200) self.assertEqual(response.body, 'success') # verify without body expected_body = None req.body = None response = req.get_response(app) self.assertEqual(response.status_int, 200) self.assertEqual(response.body, 'success') # the body is validated in the controller expected_body = {'body': None} response = req.get_response(app) expected_unsupported_type_body = ('{"badRequest": ' '{"message": "The request body invalid", "code": 400}}') self.assertEqual(response.status_int, 400) self.assertEqual(expected_unsupported_type_body, response.body) def test_resource_call_with_method_put(self): class Controller(object): def update(self, req, id, body): if expected_body != body: msg = "The request body invalid" raise webob.exc.HTTPBadRequest(explanation=msg) return "success" # verify the method: PUT app = fakes.TestRouter(Controller()) req = webob.Request.blank('/tests/test_id', method="PUT", content_type='application/json') req.body = '{"body": {"key": "value"}}' expected_body = {'body': { "key": "value" } } response = req.get_response(app) self.assertEqual(response.body, 'success') self.assertEqual(response.status_int, 200) req.body = None expected_body = None response = req.get_response(app) self.assertEqual(response.status_int, 200) #verify no content_type is contained in the request req.content_type = None req.body = '{"body": {"key": "value"}}' response = req.get_response(app) expected_unsupported_type_body = ('{"badRequest": ' '{"message": "Unsupported Content-Type", "code": 400}}') self.assertEqual(response.status_int, 400) self.assertEqual(expected_unsupported_type_body, response.body) def test_resource_call_with_method_delete(self): class Controller(object): def delete(self, req, id): return "success" # verify the method: DELETE app = fakes.TestRouter(Controller()) req = webob.Request.blank('/tests/test_id', method="DELETE") response = req.get_response(app) self.assertEqual(response.status_int, 200) self.assertEqual(response.body, 'success') # ignore the body req.body = '{"body": {"key": "value"}}' response = req.get_response(app) self.assertEqual(response.status_int, 200) self.assertEqual(response.body, 'success') def test_resource_not_authorized(self): class Controller(object): def index(self, req): raise exception.NotAuthorized() req = webob.Request.blank('/tests') app = fakes.TestRouter(Controller()) response = req.get_response(app) self.assertEqual(response.status_int, 403) def test_dispatch(self): class Controller(object): def index(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'index', None, '') actual = resource.dispatch(method, None, {'pants': 'off'}) expected = 'off' self.assertEqual(actual, expected) def test_get_method_unknown_controller_method(self): class Controller(object): def index(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) self.assertRaises(AttributeError, resource.get_method, None, 'create', None, '') def test_get_method_action_json(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'action', 'application/json', '{"fooAction": true}') self.assertEqual(controller._action_foo, method) def test_get_method_action_xml(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'action', 'application/xml', 'true') self.assertEqual(controller._action_foo, method) def test_get_method_action_corrupt_xml(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) self.assertRaises( exception.MalformedRequestBody, resource.get_method, None, 'action', 'application/xml', utils.killer_xml_body()) def test_get_method_action_bad_body(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) self.assertRaises(exception.MalformedRequestBody, resource.get_method, None, 'action', 'application/json', '{}') def test_get_method_unknown_controller_action(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) self.assertRaises(KeyError, resource.get_method, None, 'action', 'application/json', '{"barAction": true}') def test_get_method_action_method(self): class Controller(): def action(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'action', 'application/xml', 'true allowed: quotas = dict(instances=1, cores=1, ram=1) quotas[resource] = quota usages = dict(instances=dict(in_use=0, reserved=0), cores=dict(in_use=0, reserved=0), ram=dict(in_use=0, reserved=0)) usages[resource]['in_use'] = (quotas[resource] * 0.9 - allowed) usages[resource]['reserved'] = quotas[resource] * 0.1 headroom = dict( (res, value - (usages[res]['in_use'] + usages[res]['reserved'])) for res, value in quotas.iteritems() ) raise exc.OverQuota(overs=[resource], quotas=quotas, usages=usages, headroom=headroom) stubs.Set(QUOTAS, 'reserve', fake_reserve) def stub_out_networking(stubs): def get_my_ip(): return '127.0.0.1' stubs.Set(nova.netconf, '_get_my_ip', get_my_ip) def stub_out_compute_api_snapshot(stubs): def snapshot(self, context, instance, name, extra_properties=None): # emulate glance rejecting image names which are too long if len(name) > 256: raise exc.Invalid return dict(id='123', status='ACTIVE', name=name, properties=extra_properties) stubs.Set(compute_api.API, 'snapshot', snapshot) class stub_out_compute_api_backup(object): def __init__(self, stubs): self.stubs = stubs self.extra_props_last_call = None stubs.Set(compute_api.API, 'backup', self.backup) def backup(self, context, instance, name, backup_type, rotation, extra_properties=None): self.extra_props_last_call = extra_properties props = dict(backup_type=backup_type, rotation=rotation) props.update(extra_properties or {}) return dict(id='123', status='ACTIVE', name=name, properties=props) def stub_out_nw_api_get_instance_nw_info(stubs, num_networks=1, func=None): fake_network.stub_out_nw_api_get_instance_nw_info(stubs) def stub_out_nw_api_get_floating_ips_by_fixed_address(stubs, func=None): def get_floating_ips_by_fixed_address(self, context, fixed_ip): return ['1.2.3.4'] if func is None: func = get_floating_ips_by_fixed_address stubs.Set(network_api.API, 'get_floating_ips_by_fixed_address', func) def stub_out_nw_api(stubs, cls=None, private=None, publics=None): if not private: private = '192.168.0.3' if not publics: publics = ['1.2.3.4'] class Fake: def get_instance_nw_info(*args, **kwargs): pass def get_floating_ips_by_fixed_address(*args, **kwargs): return publics def validate_networks(self, context, networks, max_count): return max_count if cls is None: cls = Fake stubs.Set(network_api, 'API', cls) fake_network.stub_out_nw_api_get_instance_nw_info(stubs) def _make_image_fixtures(): NOW_GLANCE_FORMAT = "2010-10-11T10:30:22" image_id = 123 fixtures = [] def add_fixture(**kwargs): fixtures.append(kwargs) # Public image add_fixture(id=image_id, name='public image', is_public=True, status='active', properties={'key1': 'value1'}, min_ram="128", min_disk="10", size='25165824') image_id += 1 # Snapshot for User 1 uuid = 'aa640691-d1a7-4a67-9d3c-d35ee6b3cc74' server_ref = 'http://localhost/v2/servers/' + uuid snapshot_properties = {'instance_uuid': uuid, 'user_id': 'fake'} for status in ('queued', 'saving', 'active', 'killed', 'deleted', 'pending_delete'): deleted = False if status != 'deleted' else True deleted_at = NOW_GLANCE_FORMAT if deleted else None add_fixture(id=image_id, name='%s snapshot' % status, is_public=False, status=status, properties=snapshot_properties, size='25165824', deleted=deleted, deleted_at=deleted_at) image_id += 1 # Image without a name add_fixture(id=image_id, is_public=True, status='active', properties={}) # Image for permission tests image_id += 1 add_fixture(id=image_id, is_public=True, status='active', properties={}, owner='authorized_fake') return fixtures def stub_out_glanceclient_create(stubs, sent_to_glance): """We return the metadata sent to glance by modifying the sent_to_glance dict in place """ orig_add_image = glanceclient.v1.images.ImageManager.create def fake_create(context, metadata, data=None): sent_to_glance['metadata'] = metadata sent_to_glance['data'] = data return orig_add_image(metadata, data) stubs.Set(glanceclient.v1.images.ImageManager, 'create', fake_create) def stub_out_glance(stubs): def fake_get_remote_image_service(): client = glance_stubs.StubGlanceClient(_make_image_fixtures()) client_wrapper = nova.image.glance.GlanceClientWrapper() client_wrapper.host = 'fake_host' client_wrapper.port = 9292 client_wrapper.client = client return nova.image.glance.GlanceImageService(client=client_wrapper) stubs.Set(nova.image.glance, 'get_default_image_service', fake_get_remote_image_service) class FakeToken(object): id_count = 0 def __getitem__(self, key): return getattr(self, key) def __init__(self, **kwargs): FakeToken.id_count += 1 self.id = FakeToken.id_count for k, v in kwargs.iteritems(): setattr(self, k, v) class FakeRequestContext(context.RequestContext): def __init__(self, *args, **kwargs): kwargs['auth_token'] = kwargs.get('auth_token', 'fake_auth_token') return super(FakeRequestContext, self).__init__(*args, **kwargs) class HTTPRequest(os_wsgi.Request): @staticmethod def blank(*args, **kwargs): kwargs['base_url'] = 'http://localhost/v2' use_admin_context = kwargs.pop('use_admin_context', False) out = os_wsgi.Request.blank(*args, **kwargs) out.environ['nova.context'] = FakeRequestContext('fake_user', 'fake', is_admin=use_admin_context) return out class HTTPRequestV3(os_wsgi.Request): @staticmethod def blank(*args, **kwargs): kwargs['base_url'] = 'http://localhost/v3' use_admin_context = kwargs.pop('use_admin_context', False) out = os_wsgi.Request.blank(*args, **kwargs) out.environ['nova.context'] = FakeRequestContext('fake_user', 'fake', is_admin=use_admin_context) return out class TestRouter(wsgi.Router): def __init__(self, controller, mapper=None): if not mapper: mapper = routes.Mapper() mapper.resource("test", "tests", controller=os_wsgi.Resource(controller)) super(TestRouter, self).__init__(mapper) class FakeAuthDatabase(object): data = {} @staticmethod def auth_token_get(context, token_hash): return FakeAuthDatabase.data.get(token_hash, None) @staticmethod def auth_token_create(context, token): fake_token = FakeToken(created_at=timeutils.utcnow(), **token) FakeAuthDatabase.data[fake_token.token_hash] = fake_token FakeAuthDatabase.data['id_%i' % fake_token.id] = fake_token return fake_token @staticmethod def auth_token_destroy(context, token_id): token = FakeAuthDatabase.data.get('id_%i' % token_id) if token and token.token_hash in FakeAuthDatabase.data: del FakeAuthDatabase.data[token.token_hash] del FakeAuthDatabase.data['id_%i' % token_id] class FakeRateLimiter(object): def __init__(self, application): self.application = application @webob.dec.wsgify def __call__(self, req): return self.application def create_info_cache(nw_cache): if nw_cache is None: pub0 = ('192.168.1.100',) pub1 = ('2001:db8:0:1::1',) def _ip(ip): return {'address': ip, 'type': 'fixed'} nw_cache = [ {'address': 'aa:aa:aa:aa:aa:aa', 'id': 1, 'network': {'bridge': 'br0', 'id': 1, 'label': 'test1', 'subnets': [{'cidr': '192.168.1.0/24', 'ips': [_ip(ip) for ip in pub0]}, {'cidr': 'b33f::/64', 'ips': [_ip(ip) for ip in pub1]}]}}] if not isinstance(nw_cache, six.string_types): nw_cache = jsonutils.dumps(nw_cache) return { "info_cache": { "network_info": nw_cache, "deleted": False, "created_at": None, "deleted_at": None, "updated_at": None, } } def get_fake_uuid(token=0): if token not in FAKE_UUIDS: FAKE_UUIDS[token] = str(uuid.uuid4()) return FAKE_UUIDS[token] def fake_instance_get(**kwargs): def _return_server(context, uuid, columns_to_join=None, use_slave=False): return stub_instance(1, **kwargs) return _return_server def fake_actions_to_locked_server(self, context, instance, *args, **kwargs): raise exc.InstanceIsLocked(instance_uuid=instance['uuid']) def fake_instance_get_all_by_filters(num_servers=5, **kwargs): def _return_servers(context, *args, **kwargs): servers_list = [] marker = None limit = None found_marker = False if "marker" in kwargs: marker = kwargs["marker"] if "limit" in kwargs: limit = kwargs["limit"] if 'columns_to_join' in kwargs: kwargs.pop('columns_to_join') if 'use_slave' in kwargs: kwargs.pop('use_slave') for i in xrange(num_servers): uuid = get_fake_uuid(i) server = stub_instance(id=i + 1, uuid=uuid, **kwargs) servers_list.append(server) if marker is not None and uuid == marker: found_marker = True servers_list = [] if marker is not None and not found_marker: raise exc.MarkerNotFound(marker=marker) if limit is not None: servers_list = servers_list[:limit] return servers_list return _return_servers def stub_instance(id, user_id=None, project_id=None, host=None, node=None, vm_state=None, task_state=None, reservation_id="", uuid=FAKE_UUID, image_ref="10", flavor_id="1", name=None, key_name='', access_ipv4=None, access_ipv6=None, progress=0, auto_disk_config=False, display_name=None, include_fake_metadata=True, config_drive=None, power_state=None, nw_cache=None, metadata=None, security_groups=None, root_device_name=None, limit=None, marker=None, launched_at=timeutils.utcnow(), terminated_at=timeutils.utcnow(), availability_zone='', locked_by=None, cleaned=False): if user_id is None: user_id = 'fake_user' if project_id is None: project_id = 'fake_project' if metadata: metadata = [{'key': k, 'value': v} for k, v in metadata.items()] elif include_fake_metadata: metadata = [models.InstanceMetadata(key='seq', value=str(id))] else: metadata = [] inst_type = flavors.get_flavor_by_flavor_id(int(flavor_id)) sys_meta = flavors.save_flavor_info({}, inst_type) if host is not None: host = str(host) if key_name: key_data = 'FAKE' else: key_data = '' if security_groups is None: security_groups = [{"id": 1, "name": "test", "description": "Foo:", "project_id": "project", "user_id": "user", "created_at": None, "updated_at": None, "deleted_at": None, "deleted": False}] # ReservationID isn't sent back, hack it in there. server_name = name or "server%s" % id if reservation_id != "": server_name = "reservation_%s" % (reservation_id, ) info_cache = create_info_cache(nw_cache) instance = { "id": int(id), "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "deleted_at": datetime.datetime(2010, 12, 12, 10, 0, 0), "deleted": None, "user_id": user_id, "project_id": project_id, "image_ref": image_ref, "kernel_id": "", "ramdisk_id": "", "launch_index": 0, "key_name": key_name, "key_data": key_data, "config_drive": config_drive, "vm_state": vm_state or vm_states.BUILDING, "task_state": task_state, "power_state": power_state, "memory_mb": 0, "vcpus": 0, "root_gb": 0, "ephemeral_gb": 0, "ephemeral_key_uuid": None, "hostname": display_name or server_name, "host": host, "node": node, "instance_type_id": 1, "instance_type": dict(inst_type), "user_data": "", "reservation_id": reservation_id, "mac_address": "", "scheduled_at": timeutils.utcnow(), "launched_at": launched_at, "terminated_at": terminated_at, "availability_zone": availability_zone, "display_name": display_name or server_name, "display_description": "", "locked": locked_by != None, "locked_by": locked_by, "metadata": metadata, "access_ip_v4": access_ipv4, "access_ip_v6": access_ipv6, "uuid": uuid, "progress": progress, "auto_disk_config": auto_disk_config, "name": "instance-%s" % id, "shutdown_terminate": True, "disable_terminate": False, "security_groups": security_groups, "root_device_name": root_device_name, "system_metadata": utils.dict_to_metadata(sys_meta), "pci_devices": [], "vm_mode": "", "default_swap_device": "", "default_ephemeral_device": "", "launched_on": "", "cell_name": "", "architecture": "", "os_type": "", "cleaned": cleaned} instance.update(info_cache) instance['info_cache']['instance_uuid'] = instance['uuid'] return instance def stub_volume(id, **kwargs): volume = { 'id': id, 'user_id': 'fakeuser', 'project_id': 'fakeproject', 'host': 'fakehost', 'size': 1, 'availability_zone': 'fakeaz', 'instance_uuid': 'fakeuuid', 'mountpoint': '/', 'status': 'fakestatus', 'attach_status': 'attached', 'name': 'vol name', 'display_name': 'displayname', 'display_description': 'displaydesc', 'created_at': datetime.datetime(1999, 1, 1, 1, 1, 1), 'snapshot_id': None, 'volume_type_id': 'fakevoltype', 'volume_metadata': [], 'volume_type': {'name': 'vol_type_name'}} volume.update(kwargs) return volume def stub_volume_create(self, context, size, name, description, snapshot, **param): vol = stub_volume('1') vol['size'] = size vol['display_name'] = name vol['display_description'] = description try: vol['snapshot_id'] = snapshot['id'] except (KeyError, TypeError): vol['snapshot_id'] = None vol['availability_zone'] = param.get('availability_zone', 'fakeaz') return vol def stub_volume_update(self, context, *args, **param): pass def stub_volume_delete(self, context, *args, **param): pass def stub_volume_get(self, context, volume_id): return stub_volume(volume_id) def stub_volume_notfound(self, context, volume_id): raise exc.VolumeNotFound(volume_id=volume_id) def stub_volume_get_all(context, search_opts=None): return [stub_volume(100, project_id='fake'), stub_volume(101, project_id='superfake'), stub_volume(102, project_id='superduperfake')] def stub_volume_check_attach(self, context, *args, **param): pass def stub_snapshot(id, **kwargs): snapshot = { 'id': id, 'volume_id': 12, 'status': 'available', 'volume_size': 100, 'created_at': timeutils.utcnow(), 'display_name': 'Default name', 'display_description': 'Default description', 'project_id': 'fake' } snapshot.update(kwargs) return snapshot def stub_snapshot_create(self, context, volume_id, name, description): return stub_snapshot(100, volume_id=volume_id, display_name=name, display_description=description) def stub_compute_volume_snapshot_create(self, context, volume_id, create_info): return {'snapshot': {'id': 100, 'volumeId': volume_id}} def stub_snapshot_delete(self, context, snapshot_id): if snapshot_id == '-1': raise exc.NotFound def stub_compute_volume_snapshot_delete(self, context, volume_id, snapshot_id, delete_info): pass def stub_snapshot_get(self, context, snapshot_id): if snapshot_id == '-1': raise exc.NotFound return stub_snapshot(snapshot_id) def stub_snapshot_get_all(self, context): return [stub_snapshot(100, project_id='fake'), stub_snapshot(101, project_id='superfake'), stub_snapshot(102, project_id='superduperfake')] def stub_bdm_get_all_by_instance(context, instance_uuid, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'volume_id1', 'instance_uuid': instance_uuid}), fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'volume_id2', 'instance_uuid': instance_uuid})] def fake_get_available_languages(domain): existing_translations = ['en_GB', 'en_AU', 'de', 'zh_CN', 'en_US'] return existing_translations def fake_not_implemented(*args, **kwargs): raise NotImplementedError() nova-2014.1/nova/tests/api/openstack/test_common.py0000664000175400017540000005524712323721510023461 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test suites for 'common' code used throughout the OpenStack HTTP API. """ from lxml import etree import webob import webob.exc import xml.dom.minidom as minidom from nova.api.openstack import common from nova.api.openstack import xmlutil from nova.compute import task_states from nova.compute import vm_states from nova import exception from nova import test from nova.tests import utils NS = "{http://docs.openstack.org/compute/api/v1.1}" ATOMNS = "{http://www.w3.org/2005/Atom}" class LimiterTest(test.TestCase): """Unit tests for the `nova.api.openstack.common.limited` method which takes in a list of items and, depending on the 'offset' and 'limit' GET params, returns a subset or complete set of the given items. """ def setUp(self): """Run before each test.""" super(LimiterTest, self).setUp() self.tiny = range(1) self.small = range(10) self.medium = range(1000) self.large = range(10000) def test_limiter_offset_zero(self): # Test offset key works with 0. req = webob.Request.blank('/?offset=0') self.assertEqual(common.limited(self.tiny, req), self.tiny) self.assertEqual(common.limited(self.small, req), self.small) self.assertEqual(common.limited(self.medium, req), self.medium) self.assertEqual(common.limited(self.large, req), self.large[:1000]) def test_limiter_offset_medium(self): # Test offset key works with a medium sized number. req = webob.Request.blank('/?offset=10') self.assertEqual(common.limited(self.tiny, req), []) self.assertEqual(common.limited(self.small, req), self.small[10:]) self.assertEqual(common.limited(self.medium, req), self.medium[10:]) self.assertEqual(common.limited(self.large, req), self.large[10:1010]) def test_limiter_offset_over_max(self): # Test offset key works with a number over 1000 (max_limit). req = webob.Request.blank('/?offset=1001') self.assertEqual(common.limited(self.tiny, req), []) self.assertEqual(common.limited(self.small, req), []) self.assertEqual(common.limited(self.medium, req), []) self.assertEqual( common.limited(self.large, req), self.large[1001:2001]) def test_limiter_offset_blank(self): # Test offset key works with a blank offset. req = webob.Request.blank('/?offset=') self.assertRaises( webob.exc.HTTPBadRequest, common.limited, self.tiny, req) def test_limiter_offset_bad(self): # Test offset key works with a BAD offset. req = webob.Request.blank(u'/?offset=\u0020aa') self.assertRaises( webob.exc.HTTPBadRequest, common.limited, self.tiny, req) def test_limiter_nothing(self): # Test request with no offset or limit. req = webob.Request.blank('/') self.assertEqual(common.limited(self.tiny, req), self.tiny) self.assertEqual(common.limited(self.small, req), self.small) self.assertEqual(common.limited(self.medium, req), self.medium) self.assertEqual(common.limited(self.large, req), self.large[:1000]) def test_limiter_limit_zero(self): # Test limit of zero. req = webob.Request.blank('/?limit=0') self.assertEqual(common.limited(self.tiny, req), self.tiny) self.assertEqual(common.limited(self.small, req), self.small) self.assertEqual(common.limited(self.medium, req), self.medium) self.assertEqual(common.limited(self.large, req), self.large[:1000]) def test_limiter_limit_medium(self): # Test limit of 10. req = webob.Request.blank('/?limit=10') self.assertEqual(common.limited(self.tiny, req), self.tiny) self.assertEqual(common.limited(self.small, req), self.small) self.assertEqual(common.limited(self.medium, req), self.medium[:10]) self.assertEqual(common.limited(self.large, req), self.large[:10]) def test_limiter_limit_over_max(self): # Test limit of 3000. req = webob.Request.blank('/?limit=3000') self.assertEqual(common.limited(self.tiny, req), self.tiny) self.assertEqual(common.limited(self.small, req), self.small) self.assertEqual(common.limited(self.medium, req), self.medium) self.assertEqual(common.limited(self.large, req), self.large[:1000]) def test_limiter_limit_and_offset(self): # Test request with both limit and offset. items = range(2000) req = webob.Request.blank('/?offset=1&limit=3') self.assertEqual(common.limited(items, req), items[1:4]) req = webob.Request.blank('/?offset=3&limit=0') self.assertEqual(common.limited(items, req), items[3:1003]) req = webob.Request.blank('/?offset=3&limit=1500') self.assertEqual(common.limited(items, req), items[3:1003]) req = webob.Request.blank('/?offset=3000&limit=10') self.assertEqual(common.limited(items, req), []) def test_limiter_custom_max_limit(self): # Test a max_limit other than 1000. items = range(2000) req = webob.Request.blank('/?offset=1&limit=3') self.assertEqual( common.limited(items, req, max_limit=2000), items[1:4]) req = webob.Request.blank('/?offset=3&limit=0') self.assertEqual( common.limited(items, req, max_limit=2000), items[3:]) req = webob.Request.blank('/?offset=3&limit=2500') self.assertEqual( common.limited(items, req, max_limit=2000), items[3:]) req = webob.Request.blank('/?offset=3000&limit=10') self.assertEqual(common.limited(items, req, max_limit=2000), []) def test_limiter_negative_limit(self): # Test a negative limit. req = webob.Request.blank('/?limit=-3000') self.assertRaises( webob.exc.HTTPBadRequest, common.limited, self.tiny, req) def test_limiter_negative_offset(self): # Test a negative offset. req = webob.Request.blank('/?offset=-30') self.assertRaises( webob.exc.HTTPBadRequest, common.limited, self.tiny, req) class PaginationParamsTest(test.TestCase): """Unit tests for the `nova.api.openstack.common.get_pagination_params` method which takes in a request object and returns 'marker' and 'limit' GET params. """ def test_no_params(self): # Test no params. req = webob.Request.blank('/') self.assertEqual(common.get_pagination_params(req), {}) def test_valid_marker(self): # Test valid marker param. req = webob.Request.blank( '/?marker=263abb28-1de6-412f-b00b-f0ee0c4333c2') self.assertEqual(common.get_pagination_params(req), {'marker': '263abb28-1de6-412f-b00b-f0ee0c4333c2'}) def test_valid_limit(self): # Test valid limit param. req = webob.Request.blank('/?limit=10') self.assertEqual(common.get_pagination_params(req), {'limit': 10}) def test_invalid_limit(self): # Test invalid limit param. req = webob.Request.blank('/?limit=-2') self.assertRaises( webob.exc.HTTPBadRequest, common.get_pagination_params, req) def test_valid_limit_and_marker(self): # Test valid limit and marker parameters. marker = '263abb28-1de6-412f-b00b-f0ee0c4333c2' req = webob.Request.blank('/?limit=20&marker=%s' % marker) self.assertEqual(common.get_pagination_params(req), {'marker': marker, 'limit': 20}) def test_valid_page_size(self): # Test valid page_size param. req = webob.Request.blank('/?page_size=10') self.assertEqual(common.get_pagination_params(req), {'page_size': 10}) def test_invalid_page_size(self): # Test invalid page_size param. req = webob.Request.blank('/?page_size=-2') self.assertRaises( webob.exc.HTTPBadRequest, common.get_pagination_params, req) def test_valid_limit_and_page_size(self): # Test valid limit and page_size parameters. req = webob.Request.blank('/?limit=20&page_size=5') self.assertEqual(common.get_pagination_params(req), {'page_size': 5, 'limit': 20}) class MiscFunctionsTest(test.TestCase): def test_remove_major_version_from_href(self): fixture = 'http://www.testsite.com/v1/images' expected = 'http://www.testsite.com/images' actual = common.remove_version_from_href(fixture) self.assertEqual(actual, expected) def test_remove_version_from_href(self): fixture = 'http://www.testsite.com/v1.1/images' expected = 'http://www.testsite.com/images' actual = common.remove_version_from_href(fixture) self.assertEqual(actual, expected) def test_remove_version_from_href_2(self): fixture = 'http://www.testsite.com/v1.1/' expected = 'http://www.testsite.com/' actual = common.remove_version_from_href(fixture) self.assertEqual(actual, expected) def test_remove_version_from_href_3(self): fixture = 'http://www.testsite.com/v10.10' expected = 'http://www.testsite.com' actual = common.remove_version_from_href(fixture) self.assertEqual(actual, expected) def test_remove_version_from_href_4(self): fixture = 'http://www.testsite.com/v1.1/images/v10.5' expected = 'http://www.testsite.com/images/v10.5' actual = common.remove_version_from_href(fixture) self.assertEqual(actual, expected) def test_remove_version_from_href_bad_request(self): fixture = 'http://www.testsite.com/1.1/images' self.assertRaises(ValueError, common.remove_version_from_href, fixture) def test_remove_version_from_href_bad_request_2(self): fixture = 'http://www.testsite.com/v/images' self.assertRaises(ValueError, common.remove_version_from_href, fixture) def test_remove_version_from_href_bad_request_3(self): fixture = 'http://www.testsite.com/v1.1images' self.assertRaises(ValueError, common.remove_version_from_href, fixture) def test_get_id_from_href_with_int_url(self): fixture = 'http://www.testsite.com/dir/45' actual = common.get_id_from_href(fixture) expected = '45' self.assertEqual(actual, expected) def test_get_id_from_href_with_int(self): fixture = '45' actual = common.get_id_from_href(fixture) expected = '45' self.assertEqual(actual, expected) def test_get_id_from_href_with_int_url_query(self): fixture = 'http://www.testsite.com/dir/45?asdf=jkl' actual = common.get_id_from_href(fixture) expected = '45' self.assertEqual(actual, expected) def test_get_id_from_href_with_uuid_url(self): fixture = 'http://www.testsite.com/dir/abc123' actual = common.get_id_from_href(fixture) expected = "abc123" self.assertEqual(actual, expected) def test_get_id_from_href_with_uuid_url_query(self): fixture = 'http://www.testsite.com/dir/abc123?asdf=jkl' actual = common.get_id_from_href(fixture) expected = "abc123" self.assertEqual(actual, expected) def test_get_id_from_href_with_uuid(self): fixture = 'abc123' actual = common.get_id_from_href(fixture) expected = 'abc123' self.assertEqual(actual, expected) def test_raise_http_conflict_for_instance_invalid_state(self): exc = exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') try: common.raise_http_conflict_for_instance_invalid_state(exc, 'meow') except webob.exc.HTTPConflict as e: self.assertEqual(unicode(e), "Cannot 'meow' while instance is in fake_attr fake_state") else: self.fail("webob.exc.HTTPConflict was not raised") def test_check_img_metadata_properties_quota_valid_metadata(self): ctxt = utils.get_test_admin_context() metadata1 = {"key": "value"} actual = common.check_img_metadata_properties_quota(ctxt, metadata1) self.assertIsNone(actual) metadata2 = {"key": "v" * 260} actual = common.check_img_metadata_properties_quota(ctxt, metadata2) self.assertIsNone(actual) metadata3 = {"key": ""} actual = common.check_img_metadata_properties_quota(ctxt, metadata3) self.assertIsNone(actual) def test_check_img_metadata_properties_quota_inv_metadata(self): ctxt = utils.get_test_admin_context() metadata1 = {"a" * 260: "value"} self.assertRaises(webob.exc.HTTPBadRequest, common.check_img_metadata_properties_quota, ctxt, metadata1) metadata2 = {"": "value"} self.assertRaises(webob.exc.HTTPBadRequest, common.check_img_metadata_properties_quota, ctxt, metadata2) metadata3 = "invalid metadata" self.assertRaises(webob.exc.HTTPBadRequest, common.check_img_metadata_properties_quota, ctxt, metadata3) metadata4 = None self.assertIsNone(common.check_img_metadata_properties_quota(ctxt, metadata4)) metadata5 = {} self.assertIsNone(common.check_img_metadata_properties_quota(ctxt, metadata5)) def test_status_from_state(self): for vm_state in (vm_states.ACTIVE, vm_states.STOPPED): for task_state in (task_states.RESIZE_PREP, task_states.RESIZE_MIGRATING, task_states.RESIZE_MIGRATED, task_states.RESIZE_FINISH): actual = common.status_from_state(vm_state, task_state) expected = 'RESIZE' self.assertEqual(expected, actual) def test_task_and_vm_state_from_status(self): fixture1 = 'reboot' actual = common.task_and_vm_state_from_status(fixture1) expected = [vm_states.ACTIVE], [task_states.REBOOT_PENDING, task_states.REBOOT_STARTED, task_states.REBOOTING] self.assertEqual(expected, actual) fixture2 = 'resize' actual = common.task_and_vm_state_from_status(fixture2) expected = ([vm_states.ACTIVE, vm_states.STOPPED], [task_states.RESIZE_FINISH, task_states.RESIZE_MIGRATED, task_states.RESIZE_MIGRATING, task_states.RESIZE_PREP]) self.assertEqual(expected, actual) class MetadataXMLDeserializationTest(test.TestCase): deserializer = common.MetadataXMLDeserializer() def test_create(self): request_body = """ asdf jkl; """ output = self.deserializer.deserialize(request_body, 'create') expected = {"body": {"metadata": {"123": "asdf", "567": "jkl;"}}} self.assertEqual(output, expected) def test_create_empty(self): request_body = """ """ output = self.deserializer.deserialize(request_body, 'create') expected = {"body": {"metadata": {}}} self.assertEqual(output, expected) def test_update_all(self): request_body = """ asdf jkl; """ output = self.deserializer.deserialize(request_body, 'update_all') expected = {"body": {"metadata": {"123": "asdf", "567": "jkl;"}}} self.assertEqual(output, expected) def test_update(self): request_body = """ asdf""" output = self.deserializer.deserialize(request_body, 'update') expected = {"body": {"meta": {"123": "asdf"}}} self.assertEqual(output, expected) class MetadataXMLSerializationTest(test.TestCase): def test_xml_declaration(self): serializer = common.MetadataTemplate() fixture = { 'metadata': { 'one': 'two', 'three': 'four', }, } output = serializer.serialize(fixture) has_dec = output.startswith("") self.assertTrue(has_dec) def test_index(self): serializer = common.MetadataTemplate() fixture = { 'metadata': { 'one': 'two', 'three': 'four', }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'metadata') metadata_dict = fixture['metadata'] metadata_elems = root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 2) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = metadata_dict.items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) def test_index_null(self): serializer = common.MetadataTemplate() fixture = { 'metadata': { None: None, }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'metadata') metadata_dict = fixture['metadata'] metadata_elems = root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 1) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = metadata_dict.items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) def test_index_unicode(self): serializer = common.MetadataTemplate() fixture = { 'metadata': { u'three': u'Jos\xe9', }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'metadata') metadata_dict = fixture['metadata'] metadata_elems = root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 1) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = metadata_dict.items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(metadata_elem.text.strip(), meta_value) def test_show(self): serializer = common.MetaItemTemplate() fixture = { 'meta': { 'one': 'two', }, } output = serializer.serialize(fixture) root = etree.XML(output) meta_dict = fixture['meta'] (meta_key, meta_value) = meta_dict.items()[0] self.assertEqual(str(root.get('key')), str(meta_key)) self.assertEqual(root.text.strip(), meta_value) def test_update_all(self): serializer = common.MetadataTemplate() fixture = { 'metadata': { 'key6': 'value6', 'key4': 'value4', }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'metadata') metadata_dict = fixture['metadata'] metadata_elems = root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 2) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = metadata_dict.items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) def test_update_item(self): serializer = common.MetaItemTemplate() fixture = { 'meta': { 'one': 'two', }, } output = serializer.serialize(fixture) root = etree.XML(output) meta_dict = fixture['meta'] (meta_key, meta_value) = meta_dict.items()[0] self.assertEqual(str(root.get('key')), str(meta_key)) self.assertEqual(root.text.strip(), meta_value) def test_create(self): serializer = common.MetadataTemplate() fixture = { 'metadata': { 'key9': 'value9', 'key2': 'value2', 'key1': 'value1', }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'metadata') metadata_dict = fixture['metadata'] metadata_elems = root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 3) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = metadata_dict.items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) actual = minidom.parseString(output.replace(" ", "")) expected = minidom.parseString(""" value2 value9 value1 """.replace(" ", "").replace("\n", "")) self.assertEqual(expected.toxml(), actual.toxml()) def test_metadata_deserializer(self): """Should throw a 400 error on corrupt xml.""" deserializer = common.MetadataXMLDeserializer() self.assertRaises( exception.MalformedRequestBody, deserializer.deserialize, utils.killer_xml_body()) nova-2014.1/nova/tests/api/openstack/common.py0000664000175400017540000000323112323721477022420 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.openstack.common import jsonutils def webob_factory(url): """Factory for removing duplicate webob code from tests.""" base_url = url def web_request(url, method=None, body=None): req = webob.Request.blank("%s%s" % (base_url, url)) if method: req.content_type = "application/json" req.method = method if body: req.body = jsonutils.dumps(body) return req return web_request def compare_links(actual, expected): """Compare xml atom links.""" return compare_tree_to_dict(actual, expected, ('rel', 'href', 'type')) def compare_media_types(actual, expected): """Compare xml media types.""" return compare_tree_to_dict(actual, expected, ('base', 'type')) def compare_tree_to_dict(actual, expected, keys): """Compare parts of lxml.etree objects to dicts.""" for elem, data in zip(actual, expected): for key in keys: if elem.get(key) != data.get(key): return False return True nova-2014.1/nova/tests/api/openstack/compute/0000775000175400017540000000000012323722546022231 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/test_versions.py0000664000175400017540000006675712323721477025541 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid as stdlib_uuid import feedparser from lxml import etree import webob from nova.api.openstack.compute import versions from nova.api.openstack.compute import views from nova.api.openstack import xmlutil from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import common from nova.tests.api.openstack import fakes from nova.tests import matchers NS = { 'atom': 'http://www.w3.org/2005/Atom', 'ns': 'http://docs.openstack.org/common/api/v1.0' } EXP_LINKS = { 'v2.0': { 'pdf': 'http://docs.openstack.org/' 'api/openstack-compute/2/os-compute-devguide-2.pdf', 'wadl': 'http://docs.openstack.org/' 'api/openstack-compute/2/wadl/os-compute-2.wadl', }, } EXP_VERSIONS = { "v2.0": { "id": "v2.0", "status": "CURRENT", "updated": "2011-01-21T11:33:21Z", "links": [ { "rel": "describedby", "type": "application/pdf", "href": EXP_LINKS['v2.0']['pdf'], }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": EXP_LINKS['v2.0']['wadl'], }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.compute+xml;version=2", }, { "base": "application/json", "type": "application/vnd.openstack.compute+json;version=2", }, ], }, "v3.0": { "id": "v3.0", "status": "EXPERIMENTAL", "updated": "2013-07-23T11:33:21Z", "media-types": [ { "base": "application/json", "type": "application/vnd.openstack.compute+json;version=3", } ], } } class VersionsTest(test.NoDBTestCase): def test_get_version_list(self): req = webob.Request.blank('/') req.accept = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") versions = jsonutils.loads(res.body)["versions"] expected = [ { "id": "v2.0", "status": "CURRENT", "updated": "2011-01-21T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v2/", }], }, { "id": "v3.0", "status": "EXPERIMENTAL", "updated": "2013-07-23T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v3/", }], }, ] self.assertEqual(versions, expected) def test_get_version_list_302(self): req = webob.Request.blank('/v2') req.accept = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 302) redirect_req = webob.Request.blank('/v2/') self.assertEqual(res.location, redirect_req.url) def test_get_version_2_detail(self): req = webob.Request.blank('/v2/') req.accept = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") version = jsonutils.loads(res.body) expected = { "version": { "id": "v2.0", "status": "CURRENT", "updated": "2011-01-21T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v2/", }, { "rel": "describedby", "type": "application/pdf", "href": EXP_LINKS['v2.0']['pdf'], }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": EXP_LINKS['v2.0']['wadl'], }, ], "media-types": [ { "base": "application/xml", "type": "application/" "vnd.openstack.compute+xml;version=2", }, { "base": "application/json", "type": "application/" "vnd.openstack.compute+json;version=2", }, ], }, } self.assertEqual(expected, version) def test_get_version_2_detail_content_type(self): req = webob.Request.blank('/') req.accept = "application/json;version=2" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") version = jsonutils.loads(res.body) expected = { "version": { "id": "v2.0", "status": "CURRENT", "updated": "2011-01-21T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v2/", }, { "rel": "describedby", "type": "application/pdf", "href": EXP_LINKS['v2.0']['pdf'], }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": EXP_LINKS['v2.0']['wadl'], }, ], "media-types": [ { "base": "application/xml", "type": "application/" "vnd.openstack.compute+xml;version=2", }, { "base": "application/json", "type": "application/" "vnd.openstack.compute+json;version=2", }, ], }, } self.assertEqual(expected, version) def test_get_version_2_detail_xml(self): req = webob.Request.blank('/v2/') req.accept = "application/xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/xml") version = etree.XML(res.body) xmlutil.validate_schema(version, 'version') expected = EXP_VERSIONS['v2.0'] self.assertTrue(version.xpath('/ns:version', namespaces=NS)) media_types = version.xpath('ns:media-types/ns:media-type', namespaces=NS) self.assertTrue(common.compare_media_types(media_types, expected['media-types'])) for key in ['id', 'status', 'updated']: self.assertEqual(version.get(key), expected[key]) links = version.xpath('atom:link', namespaces=NS) self.assertTrue(common.compare_links(links, [{'rel': 'self', 'href': 'http://localhost/v2/'}] + expected['links'])) def test_get_version_list_xml(self): req = webob.Request.blank('/') req.accept = "application/xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/xml") root = etree.XML(res.body) xmlutil.validate_schema(root, 'versions') self.assertTrue(root.xpath('/ns:versions', namespaces=NS)) versions = root.xpath('ns:version', namespaces=NS) self.assertEqual(len(versions), 2) for i, v in enumerate(['v2.0', 'v3.0']): version = versions[i] expected = EXP_VERSIONS[v] for key in ['id', 'status', 'updated']: self.assertEqual(version.get(key), expected[key]) (link,) = version.xpath('atom:link', namespaces=NS) self.assertTrue(common.compare_links(link, [{'rel': 'self', 'href': 'http://localhost/%s/' % v}])) def test_get_version_2_detail_atom(self): req = webob.Request.blank('/v2/') req.accept = "application/atom+xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual("application/atom+xml", res.content_type) xmlutil.validate_schema(etree.XML(res.body), 'atom') f = feedparser.parse(res.body) self.assertEqual(f.feed.title, 'About This Version') self.assertEqual(f.feed.updated, '2011-01-21T11:33:21Z') self.assertEqual(f.feed.id, 'http://localhost/v2/') self.assertEqual(f.feed.author, 'Rackspace') self.assertEqual(f.feed.author_detail.href, 'http://www.rackspace.com/') self.assertEqual(f.feed.links[0]['href'], 'http://localhost/v2/') self.assertEqual(f.feed.links[0]['rel'], 'self') self.assertEqual(len(f.entries), 1) entry = f.entries[0] self.assertEqual(entry.id, 'http://localhost/v2/') self.assertEqual(entry.title, 'Version v2.0') self.assertEqual(entry.updated, '2011-01-21T11:33:21Z') self.assertEqual(len(entry.content), 1) self.assertEqual(entry.content[0].value, 'Version v2.0 CURRENT (2011-01-21T11:33:21Z)') self.assertEqual(len(entry.links), 3) self.assertEqual(entry.links[0]['href'], 'http://localhost/v2/') self.assertEqual(entry.links[0]['rel'], 'self') self.assertEqual(entry.links[1], { 'href': EXP_LINKS['v2.0']['pdf'], 'type': 'application/pdf', 'rel': 'describedby'}) self.assertEqual(entry.links[2], { 'href': EXP_LINKS['v2.0']['wadl'], 'type': 'application/vnd.sun.wadl+xml', 'rel': 'describedby'}) def test_get_version_list_atom(self): req = webob.Request.blank('/') req.accept = "application/atom+xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/atom+xml") f = feedparser.parse(res.body) self.assertEqual(f.feed.title, 'Available API Versions') self.assertEqual(f.feed.updated, '2013-07-23T11:33:21Z') self.assertEqual(f.feed.id, 'http://localhost/') self.assertEqual(f.feed.author, 'Rackspace') self.assertEqual(f.feed.author_detail.href, 'http://www.rackspace.com/') self.assertEqual(f.feed.links[0]['href'], 'http://localhost/') self.assertEqual(f.feed.links[0]['rel'], 'self') self.assertEqual(len(f.entries), 2) entry = f.entries[0] self.assertEqual(entry.id, 'http://localhost/v2/') self.assertEqual(entry.title, 'Version v2.0') self.assertEqual(entry.updated, '2011-01-21T11:33:21Z') self.assertEqual(len(entry.content), 1) self.assertEqual(entry.content[0].value, 'Version v2.0 CURRENT (2011-01-21T11:33:21Z)') self.assertEqual(len(entry.links), 1) self.assertEqual(entry.links[0]['href'], 'http://localhost/v2/') self.assertEqual(entry.links[0]['rel'], 'self') entry = f.entries[1] self.assertEqual(entry.id, 'http://localhost/v3/') self.assertEqual(entry.title, 'Version v3.0') self.assertEqual(entry.updated, '2013-07-23T11:33:21Z') self.assertEqual(len(entry.content), 1) self.assertEqual(entry.content[0].value, 'Version v3.0 EXPERIMENTAL (2013-07-23T11:33:21Z)') self.assertEqual(len(entry.links), 1) self.assertEqual(entry.links[0]['href'], 'http://localhost/v3/') self.assertEqual(entry.links[0]['rel'], 'self') def test_multi_choice_image(self): req = webob.Request.blank('/images/1') req.accept = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 300) self.assertEqual(res.content_type, "application/json") expected = { "choices": [ { "id": "v3.0", "status": "EXPERIMENTAL", "links": [ { "href": "http://localhost/v3/images/1", "rel": "self", }, ], "media-types": [ { "base": "application/json", "type": "application/vnd.openstack.compute+json;version=3", } ], }, { "id": "v2.0", "status": "CURRENT", "links": [ { "href": "http://localhost/v2/images/1", "rel": "self", }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.compute+xml" ";version=2" }, { "base": "application/json", "type": "application/vnd.openstack.compute+json" ";version=2" }, ], }, ], } self.assertThat(jsonutils.loads(res.body), matchers.DictMatches(expected)) def test_multi_choice_image_xml(self): req = webob.Request.blank('/images/1') req.accept = "application/xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 300) self.assertEqual(res.content_type, "application/xml") root = etree.XML(res.body) self.assertTrue(root.xpath('/ns:choices', namespaces=NS)) versions = root.xpath('ns:version', namespaces=NS) self.assertEqual(len(versions), 2) version = versions[1] self.assertEqual(version.get('id'), 'v2.0') self.assertEqual(version.get('status'), 'CURRENT') media_types = version.xpath('ns:media-types/ns:media-type', namespaces=NS) self.assertTrue(common. compare_media_types(media_types, EXP_VERSIONS['v2.0']['media-types'] )) links = version.xpath('atom:link', namespaces=NS) self.assertTrue(common.compare_links(links, [{'rel': 'self', 'href': 'http://localhost/v2/images/1'}])) version = versions[0] self.assertEqual(version.get('id'), 'v3.0') self.assertEqual(version.get('status'), 'EXPERIMENTAL') media_types = version.xpath('ns:media-types/ns:media-type', namespaces=NS) self.assertTrue(common. compare_media_types(media_types, EXP_VERSIONS['v3.0']['media-types'] )) links = version.xpath('atom:link', namespaces=NS) self.assertTrue(common.compare_links(links, [{'rel': 'self', 'href': 'http://localhost/v3/images/1'}])) def test_multi_choice_server_atom(self): """Make sure multi choice responses do not have content-type application/atom+xml (should use default of json) """ req = webob.Request.blank('/servers') req.accept = "application/atom+xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 300) self.assertEqual(res.content_type, "application/json") def test_multi_choice_server(self): uuid = str(stdlib_uuid.uuid4()) req = webob.Request.blank('/servers/' + uuid) req.accept = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 300) self.assertEqual(res.content_type, "application/json") expected = { "choices": [ { "id": "v3.0", "status": "EXPERIMENTAL", "links": [ { "href": "http://localhost/v3/servers/" + uuid, "rel": "self", }, ], "media-types": [ { "base": "application/json", "type": "application/vnd.openstack.compute+json;version=3", } ], }, { "id": "v2.0", "status": "CURRENT", "links": [ { "href": "http://localhost/v2/servers/" + uuid, "rel": "self", }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.compute+xml" ";version=2" }, { "base": "application/json", "type": "application/vnd.openstack.compute+json" ";version=2" }, ], }, ], } self.assertThat(jsonutils.loads(res.body), matchers.DictMatches(expected)) class VersionsViewBuilderTests(test.NoDBTestCase): def test_view_builder(self): base_url = "http://example.org/" version_data = { "v3.2.1": { "id": "3.2.1", "status": "CURRENT", "updated": "2011-07-18T11:30:00Z", } } expected = { "versions": [ { "id": "3.2.1", "status": "CURRENT", "updated": "2011-07-18T11:30:00Z", "links": [ { "rel": "self", "href": "http://example.org/v2/", }, ], } ] } builder = views.versions.ViewBuilder(base_url) output = builder.build_versions(version_data) self.assertEqual(output, expected) def test_generate_href(self): base_url = "http://example.org/app/" expected = "http://example.org/app/v2/" builder = views.versions.ViewBuilder(base_url) actual = builder.generate_href('v2') self.assertEqual(actual, expected) def test_generate_href_v3(self): base_url = "http://example.org/app/" expected = "http://example.org/app/v3/" builder = views.versions.ViewBuilder(base_url) actual = builder.generate_href('v3.0') self.assertEqual(actual, expected) def test_generate_href_unknown(self): base_url = "http://example.org/app/" expected = "http://example.org/app/v2/" builder = views.versions.ViewBuilder(base_url) actual = builder.generate_href('foo') self.assertEqual(actual, expected) class VersionsSerializerTests(test.NoDBTestCase): def test_versions_list_xml_serializer(self): versions_data = { 'versions': [ { "id": "2.7", "updated": "2011-07-18T11:30:00Z", "status": "DEPRECATED", "links": [ { "rel": "self", "href": "http://test/v2", }, ], }, ] } serializer = versions.VersionsTemplate() response = serializer.serialize(versions_data) root = etree.XML(response) xmlutil.validate_schema(root, 'versions') self.assertTrue(root.xpath('/ns:versions', namespaces=NS)) version_elems = root.xpath('ns:version', namespaces=NS) self.assertEqual(len(version_elems), 1) version = version_elems[0] self.assertEqual(version.get('id'), versions_data['versions'][0]['id']) self.assertEqual(version.get('status'), versions_data['versions'][0]['status']) (link,) = version.xpath('atom:link', namespaces=NS) self.assertTrue(common.compare_links(link, [{ 'rel': 'self', 'href': 'http://test/v2', 'type': 'application/atom+xml'}])) def test_versions_multi_xml_serializer(self): versions_data = { 'choices': [ { "id": "2.7", "updated": "2011-07-18T11:30:00Z", "status": "DEPRECATED", "media-types": EXP_VERSIONS['v2.0']['media-types'], "links": [ { "rel": "self", "href": "http://test/v2/images", }, ], }, ] } serializer = versions.ChoicesTemplate() response = serializer.serialize(versions_data) root = etree.XML(response) self.assertTrue(root.xpath('/ns:choices', namespaces=NS)) (version,) = root.xpath('ns:version', namespaces=NS) self.assertEqual(version.get('id'), versions_data['choices'][0]['id']) self.assertEqual(version.get('status'), versions_data['choices'][0]['status']) media_types = list(version)[0] self.assertEqual(media_types.tag.split('}')[1], "media-types") media_types = version.xpath('ns:media-types/ns:media-type', namespaces=NS) self.assertTrue(common.compare_media_types(media_types, versions_data['choices'][0]['media-types'])) (link,) = version.xpath('atom:link', namespaces=NS) self.assertTrue(common.compare_links(link, versions_data['choices'][0]['links'])) def test_versions_list_atom_serializer(self): versions_data = { 'versions': [ { "id": "2.9.8", "updated": "2011-07-20T11:40:00Z", "status": "CURRENT", "links": [ { "rel": "self", "href": "http://test/2.9.8", }, ], }, ] } serializer = versions.VersionsAtomSerializer() response = serializer.serialize(versions_data) f = feedparser.parse(response) self.assertEqual(f.feed.title, 'Available API Versions') self.assertEqual(f.feed.updated, '2011-07-20T11:40:00Z') self.assertEqual(f.feed.id, 'http://test/') self.assertEqual(f.feed.author, 'Rackspace') self.assertEqual(f.feed.author_detail.href, 'http://www.rackspace.com/') self.assertEqual(f.feed.links[0]['href'], 'http://test/') self.assertEqual(f.feed.links[0]['rel'], 'self') self.assertEqual(len(f.entries), 1) entry = f.entries[0] self.assertEqual(entry.id, 'http://test/2.9.8') self.assertEqual(entry.title, 'Version 2.9.8') self.assertEqual(entry.updated, '2011-07-20T11:40:00Z') self.assertEqual(len(entry.content), 1) self.assertEqual(entry.content[0].value, 'Version 2.9.8 CURRENT (2011-07-20T11:40:00Z)') self.assertEqual(len(entry.links), 1) self.assertEqual(entry.links[0]['href'], 'http://test/2.9.8') self.assertEqual(entry.links[0]['rel'], 'self') def test_version_detail_atom_serializer(self): versions_data = { "version": { "id": "v2.0", "status": "CURRENT", "updated": "2011-01-21T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v2/", }, { "rel": "describedby", "type": "application/pdf", "href": EXP_LINKS['v2.0']['pdf'], }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": EXP_LINKS['v2.0']['wadl'], }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.compute+xml" ";version=2", }, { "base": "application/json", "type": "application/vnd.openstack.compute+json" ";version=2", } ], }, } serializer = versions.VersionAtomSerializer() response = serializer.serialize(versions_data) f = feedparser.parse(response) self.assertEqual(f.feed.title, 'About This Version') self.assertEqual(f.feed.updated, '2011-01-21T11:33:21Z') self.assertEqual(f.feed.id, 'http://localhost/v2/') self.assertEqual(f.feed.author, 'Rackspace') self.assertEqual(f.feed.author_detail.href, 'http://www.rackspace.com/') self.assertEqual(f.feed.links[0]['href'], 'http://localhost/v2/') self.assertEqual(f.feed.links[0]['rel'], 'self') self.assertEqual(len(f.entries), 1) entry = f.entries[0] self.assertEqual(entry.id, 'http://localhost/v2/') self.assertEqual(entry.title, 'Version v2.0') self.assertEqual(entry.updated, '2011-01-21T11:33:21Z') self.assertEqual(len(entry.content), 1) self.assertEqual(entry.content[0].value, 'Version v2.0 CURRENT (2011-01-21T11:33:21Z)') self.assertEqual(len(entry.links), 3) self.assertEqual(entry.links[0]['href'], 'http://localhost/v2/') self.assertEqual(entry.links[0]['rel'], 'self') self.assertEqual(entry.links[1], { 'rel': 'describedby', 'type': 'application/pdf', 'href': EXP_LINKS['v2.0']['pdf']}) self.assertEqual(entry.links[2], { 'rel': 'describedby', 'type': 'application/vnd.sun.wadl+xml', 'href': EXP_LINKS['v2.0']['wadl'], }) nova-2014.1/nova/tests/api/openstack/compute/test_urlmap.py0000664000175400017540000001705312323721477025152 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes import nova.tests.image.fake class UrlmapTest(test.NoDBTestCase): def setUp(self): super(UrlmapTest, self).setUp() fakes.stub_out_rate_limiting(self.stubs) nova.tests.image.fake.stub_out_image_service(self.stubs) def tearDown(self): super(UrlmapTest, self).tearDown() nova.tests.image.fake.FakeImageService_reset() def test_path_version_v1_1(self): # Test URL path specifying v1.1 returns v2 content. req = webob.Request.blank('/v1.1/') req.accept = "application/json" res = req.get_response(fakes.wsgi_app(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v2.0') def test_content_type_version_v1_1(self): # Test Content-Type specifying v1.1 returns v2 content. req = webob.Request.blank('/') req.content_type = "application/json;version=1.1" req.accept = "application/json" res = req.get_response(fakes.wsgi_app(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v2.0') def test_accept_version_v1_1(self): # Test Accept header specifying v1.1 returns v2 content. req = webob.Request.blank('/') req.accept = "application/json;version=1.1" res = req.get_response(fakes.wsgi_app(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v2.0') def test_path_version_v2(self): # Test URL path specifying v2 returns v2 content. req = webob.Request.blank('/v2/') req.accept = "application/json" res = req.get_response(fakes.wsgi_app(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v2.0') def test_content_type_version_v2(self): # Test Content-Type specifying v2 returns v2 content. req = webob.Request.blank('/') req.content_type = "application/json;version=2" req.accept = "application/json" res = req.get_response(fakes.wsgi_app(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v2.0') def test_accept_version_v2(self): # Test Accept header specifying v2 returns v2 content. req = webob.Request.blank('/') req.accept = "application/json;version=2" res = req.get_response(fakes.wsgi_app(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v2.0') def test_path_content_type(self): # Test URL path specifying JSON returns JSON content. url = '/v2/fake/images/cedef40a-ed67-4d10-800e-17455edce175.json' req = webob.Request.blank(url) req.accept = "application/xml" res = req.get_response(fakes.wsgi_app(init_only=('images',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['image']['id'], 'cedef40a-ed67-4d10-800e-17455edce175') def test_accept_content_type(self): # Test Accept header specifying JSON returns JSON content. url = '/v2/fake/images/cedef40a-ed67-4d10-800e-17455edce175' req = webob.Request.blank(url) req.accept = "application/xml;q=0.8, application/json" res = req.get_response(fakes.wsgi_app(init_only=('images',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['image']['id'], 'cedef40a-ed67-4d10-800e-17455edce175') def test_path_version_v3(self): # Test URL path specifying v3 returns v3 content. req = webob.Request.blank('/v3/') req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v3.0') def test_content_type_version_v3(self): # Test Content-Type specifying v3 returns v3 content. req = webob.Request.blank('/') req.content_type = "application/json;version=3" req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v3.0') def test_accept_version_v3(self): # Test Accept header specifying v3 returns v3 content. req = webob.Request.blank('/') req.accept = "application/json;version=3" res = req.get_response(fakes.wsgi_app_v3(init_only=('versions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['version']['id'], 'v3.0') def test_path_content_type_v3(self): # Test URL path specifying JSON returns JSON content. url = '/v3/extensions/extensions.json' req = webob.Request.blank(url) req.accept = "application/xml" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['extension']['name'], 'extensions') def test_accept_content_type_v3(self): # Test Accept header specifying JSON returns JSON content. url = '/v3/extensions/extensions' req = webob.Request.blank(url) req.accept = "application/xml;q=0.8, application/json" res = req.get_response(fakes.wsgi_app_v3(init_only=('extensions',))) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") body = jsonutils.loads(res.body) self.assertEqual(body['extension']['name'], 'extensions') nova-2014.1/nova/tests/api/openstack/compute/plugins/0000775000175400017540000000000012323722546023712 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/0000775000175400017540000000000012323722546024242 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_versions.py0000664000175400017540000001264212323721477027532 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2010-2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes NS = { 'atom': 'http://www.w3.org/2005/Atom', 'ns': 'http://docs.openstack.org/common/api/v1.0' } EXP_LINKS = { 'v2.0': { 'pdf': 'http://docs.openstack.org/' 'api/openstack-compute/2/os-compute-devguide-2.pdf', 'wadl': 'http://docs.openstack.org/' 'api/openstack-compute/2/wadl/os-compute-2.wadl' }, 'v3.0': { 'pdf': 'http://docs.openstack.org/' 'api/openstack-compute/3/os-compute-devguide-3.pdf', 'wadl': 'http://docs.openstack.org/' 'api/openstack-compute/3/wadl/os-compute-3.wadl' }, } EXP_VERSIONS = { "v2.0": { "id": "v2.0", "status": "CURRENT", "updated": "2011-01-21T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v3/", }, { "rel": "describedby", "type": "application/pdf", "href": EXP_LINKS['v2.0']['pdf'], }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": EXP_LINKS['v2.0']['wadl'], }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.compute+xml;version=2", }, { "base": "application/json", "type": "application/vnd.openstack.compute+json;version=2", } ], }, "v3.0": { "id": "v3.0", "status": "EXPERIMENTAL", "updated": "2013-07-23T11:33:21Z", "links": [ { "rel": "self", "href": "http://localhost/v3/", }, { "rel": "describedby", "type": "application/pdf", "href": EXP_LINKS['v3.0']['pdf'], }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": EXP_LINKS['v3.0']['wadl'], }, ], "media-types": [ { "base": "application/json", "type": "application/vnd.openstack.compute+json;version=3", } ], } } class VersionsTest(test.NoDBTestCase): def test_get_version_list_302(self): req = webob.Request.blank('/v3') req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 302) redirect_req = webob.Request.blank('/v3/') self.assertEqual(res.location, redirect_req.url) def test_get_version_3_detail(self): req = webob.Request.blank('/v3/') req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") version = jsonutils.loads(res.body) expected = {"version": EXP_VERSIONS['v3.0']} self.assertEqual(expected, version) def test_get_version_3_versions_v3_detail(self): req = webob.Request.blank('/v3/versions/v3.0') req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") version = jsonutils.loads(res.body) expected = {"version": EXP_VERSIONS['v3.0']} self.assertEqual(expected, version) def test_get_version_3_versions_v2_detail(self): req = webob.Request.blank('/v3/versions/v2.0') req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") version = jsonutils.loads(res.body) expected = {"version": EXP_VERSIONS['v2.0']} self.assertEqual(expected, version) def test_get_version_3_versions_invalid(self): req = webob.Request.blank('/v3/versions/1234') req.accept = "application/json" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 404) self.assertEqual(res.content_type, "application/json") def test_get_version_3_detail_content_type(self): req = webob.Request.blank('/') req.accept = "application/json;version=3" res = req.get_response(fakes.wsgi_app_v3()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, "application/json") version = jsonutils.loads(res.body) expected = {"version": EXP_VERSIONS['v3.0']} self.assertEqual(expected, version) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_attach_interfaces.py0000664000175400017540000003134712323721510031320 0ustar jenkinsjenkins00000000000000# Copyright 2012 SINA Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova.api.openstack.compute.plugins.v3 import attach_interfaces from nova.compute import api as compute_api from nova import context from nova import exception from nova.network import api as network_api from nova.openstack.common import jsonutils from nova import test from nova.tests import fake_network_cache_model import webob from webob import exc CONF = cfg.CONF FAKE_UUID1 = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' FAKE_UUID2 = 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb' FAKE_PORT_ID1 = '11111111-1111-1111-1111-111111111111' FAKE_PORT_ID2 = '22222222-2222-2222-2222-222222222222' FAKE_PORT_ID3 = '33333333-3333-3333-3333-333333333333' FAKE_NET_ID1 = '44444444-4444-4444-4444-444444444444' FAKE_NET_ID2 = '55555555-5555-5555-5555-555555555555' FAKE_NET_ID3 = '66666666-6666-6666-6666-666666666666' port_data1 = { "id": FAKE_PORT_ID1, "network_id": FAKE_NET_ID1, "admin_state_up": True, "status": "ACTIVE", "mac_address": "aa:aa:aa:aa:aa:aa", "fixed_ips": ["10.0.1.2"], "device_id": FAKE_UUID1, } port_data2 = { "id": FAKE_PORT_ID2, "network_id": FAKE_NET_ID2, "admin_state_up": True, "status": "ACTIVE", "mac_address": "bb:bb:bb:bb:bb:bb", "fixed_ips": ["10.0.2.2"], "device_id": FAKE_UUID1, } port_data3 = { "id": FAKE_PORT_ID3, "network_id": FAKE_NET_ID3, "admin_state_up": True, "status": "ACTIVE", "mac_address": "bb:bb:bb:bb:bb:bb", "fixed_ips": ["10.0.2.2"], "device_id": '', } fake_networks = [FAKE_NET_ID1, FAKE_NET_ID2] ports = [port_data1, port_data2, port_data3] def fake_list_ports(self, *args, **kwargs): result = [] for port in ports: if port['device_id'] == kwargs['device_id']: result.append(port) return {'ports': result} def fake_show_port(self, context, port_id, **kwargs): for port in ports: if port['id'] == port_id: return {'port': port} def fake_attach_interface(self, context, instance, network_id, port_id, requested_ip='192.168.1.3'): if not network_id: # if no network_id is given when add a port to an instance, use the # first default network. network_id = fake_networks[0] if network_id == 'bad_id': raise exception.NetworkNotFound(network_id=network_id) if not port_id: port_id = ports[fake_networks.index(network_id)]['id'] vif = fake_network_cache_model.new_vif() vif['id'] = port_id vif['network']['id'] = network_id vif['network']['subnets'][0]['ips'][0]['address'] = requested_ip return vif def fake_detach_interface(self, context, instance, port_id): for port in ports: if port['id'] == port_id: return raise exception.PortNotFound(port_id=port_id) def fake_get_instance(self, *args, **kwargs): return {} class InterfaceAttachTests(test.NoDBTestCase): def setUp(self): super(InterfaceAttachTests, self).setUp() self.flags(neutron_auth_strategy=None) self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) self.stubs.Set(network_api.API, 'show_port', fake_show_port) self.stubs.Set(network_api.API, 'list_ports', fake_list_ports) self.stubs.Set(compute_api.API, 'get', fake_get_instance) self.context = context.get_admin_context() self.expected_show = {'interface_attachment': {'net_id': FAKE_NET_ID1, 'port_id': FAKE_PORT_ID1, 'mac_addr': port_data1['mac_address'], 'port_state': port_data1['status'], 'fixed_ips': port_data1['fixed_ips'], }} def test_item_instance_not_found(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/') req.method = 'GET' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context def fake_get_instance_exception(self, context, instance_uuid, **kwargs): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get_instance_exception) self.assertRaises(exc.HTTPNotFound, attachments.index, req, 'fake') def test_show(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/show') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.show(req, FAKE_UUID1, FAKE_PORT_ID1) self.assertEqual(self.expected_show, result) def test_show_instance_not_found(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/show') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context def fake_get_instance_exception(self, context, instance_uuid, **kwargs): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get_instance_exception) self.assertRaises(exc.HTTPNotFound, attachments.show, req, 'fake', FAKE_PORT_ID1) def test_show_invalid(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/show') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, attachments.show, req, FAKE_UUID2, FAKE_PORT_ID1) def test_delete(self): self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/delete') req.method = 'DELETE' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.delete(req, FAKE_UUID1, FAKE_PORT_ID1) self.assertEqual('202 Accepted', result.status) def test_delete_interface_not_found(self): self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/delete') req.method = 'DELETE' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, attachments.delete, req, FAKE_UUID1, 'invaid-port-id') def test_delete_instance_not_found(self): self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/delete') req.method = 'DELETE' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context def fake_get_instance_exception(self, context, instance_uuid, **kwargs): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get_instance_exception) self.assertRaises(exc.HTTPNotFound, attachments.delete, req, 'fake', 'invaid-port-id') def test_attach_interface_without_network_id(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.create(req, FAKE_UUID1, jsonutils.loads(req.body)) self.assertEqual(result['interface_attachment']['net_id'], FAKE_NET_ID1) def test_attach_interface_with_network_id(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interface_attachment': {'net_id': FAKE_NET_ID2}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.create(req, FAKE_UUID1, jsonutils.loads(req.body)) self.assertEqual(result['interface_attachment']['net_id'], FAKE_NET_ID2) def test_attach_interface_with_port_and_network_id(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interface_attachment': {'port_id': FAKE_PORT_ID1, 'net_id': FAKE_NET_ID2}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPBadRequest, attachments.create, req, FAKE_UUID1, jsonutils.loads(req.body)) def test_attach_interface_instance_not_found(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interface_attachment': {'net_id': FAKE_NET_ID2}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context def fake_get_instance_exception(self, context, instance_uuid, **kwargs): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get_instance_exception) self.assertRaises(exc.HTTPNotFound, attachments.create, req, 'fake', jsonutils.loads(req.body)) def test_attach_interface_with_invalid_data(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank( '/v3/servers/fake/os-attach-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interface_attachment': {'net_id': 'bad_id'}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPBadRequest, attachments.create, req, FAKE_UUID1, jsonutils.loads(req.body)) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_lock_server.py0000664000175400017540000000427312323721477030201 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.plugins.v3 import lock_server from nova import exception from nova.tests.api.openstack.compute.plugins.v3 import \ admin_only_action_common from nova.tests.api.openstack import fakes class LockServerTests(admin_only_action_common.CommonTests): def setUp(self): super(LockServerTests, self).setUp() self.controller = lock_server.LockServerController() self.compute_api = self.controller.compute_api def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(lock_server, 'LockServerController', _fake_controller) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-lock-server'), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') def test_lock_unlock(self): self._test_actions(['lock', 'unlock']) def test_lock_unlock_with_non_existed_instance(self): self._test_actions_with_non_existed_instance(['lock', 'unlock']) def test_unlock_not_authorized(self): self.mox.StubOutWithMock(self.compute_api, 'unlock') instance = self._stub_instance_get() self.compute_api.unlock(self.context, instance).AndRaise( exception.PolicyNotAuthorized(action='unlock')) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {'unlock': None}) self.assertEqual(403, res.status_int) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_admin_actions.py0000664000175400017540000002405512323721477030473 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import admin_actions from nova.compute import vm_states import nova.context from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance class CommonMixin(object): def setUp(self): super(CommonMixin, self).setUp() self.controller = admin_actions.AdminActionsController() self.compute_api = self.controller.compute_api self.context = nova.context.RequestContext('fake', 'fake') def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(admin_actions, 'AdminActionsController', _fake_controller) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-admin-actions'), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') def _make_request(self, url, body): req = webob.Request.blank('/v3' + url) req.method = 'POST' req.body = jsonutils.dumps(body) req.content_type = 'application/json' return req.get_response(self.app) def _stub_instance_get(self, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() instance = fake_instance.fake_db_instance( id=1, uuid=uuid, vm_state=vm_states.ACTIVE, task_state=None, launched_at=timeutils.utcnow()) instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance) self.compute_api.get(self.context, uuid, expected_attrs=None, want_objects=True).AndReturn(instance) return instance def _stub_instance_get_failure(self, exc_info, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() self.compute_api.get(self.context, uuid, expected_attrs=None, want_objects=True).AndRaise(exc_info) return uuid def _test_non_existing_instance(self, action, body_map=None): uuid = uuidutils.generate_uuid() self._stub_instance_get_failure( exception.InstanceNotFound(instance_id=uuid), uuid=uuid) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % uuid, {action: body_map.get(action)}) self.assertEqual(404, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_action(self, action, body=None, method=None): if method is None: method = action instance = self._stub_instance_get() getattr(self.compute_api, method)(self.context, instance) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: None}) self.assertEqual(202, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_invalid_state(self, action, method=None, body_map=None, compute_api_args_map=None): if method is None: method = action if body_map is None: body_map = {} if compute_api_args_map is None: compute_api_args_map = {} instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(self.compute_api, method)(self.context, instance, *args, **kwargs).AndRaise( exception.InstanceInvalidState( attr='vm_state', instance_uuid=instance['uuid'], state='foo', method=method)) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: body_map.get(action)}) self.assertEqual(409, res.status_int) self.assertIn("Cannot \'%s\' while instance" % action, res.body) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_locked_instance(self, action, method=None): if method is None: method = action instance = self._stub_instance_get() getattr(self.compute_api, method)(self.context, instance).AndRaise( exception.InstanceIsLocked(instance_uuid=instance['uuid'])) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: None}) self.assertEqual(409, res.status_int) self.assertIn('Instance %s is locked' % instance['uuid'], res.body) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() class AdminActionsTest(CommonMixin, test.NoDBTestCase): def test_actions(self): actions = ['reset_network', 'inject_network_info'] for action in actions: self.mox.StubOutWithMock(self.compute_api, action) self._test_action(action) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def test_actions_with_non_existed_instance(self): actions = ['reset_network', 'inject_network_info', 'reset_state'] body_map = {'reset_state': {'state': 'active'}} for action in actions: self._test_non_existing_instance(action, body_map=body_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def test_actions_with_locked_instance(self): actions = ['reset_network', 'inject_network_info'] for action in actions: self.mox.StubOutWithMock(self.compute_api, action) self._test_locked_instance(action) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') class ResetStateTests(test.NoDBTestCase): def setUp(self): super(ResetStateTests, self).setUp() self.uuid = uuidutils.generate_uuid() self.admin_api = admin_actions.AdminActionsController() self.compute_api = self.admin_api.compute_api url = '/servers/%s/action' % self.uuid self.request = fakes.HTTPRequestV3.blank(url) self.context = self.request.environ['nova.context'] def test_no_state(self): self.assertRaises(webob.exc.HTTPBadRequest, self.admin_api._reset_state, self.request, self.uuid, {"reset_state": None}) def test_bad_state(self): self.assertRaises(webob.exc.HTTPBadRequest, self.admin_api._reset_state, self.request, self.uuid, {"reset_state": {"state": "spam"}}) def test_no_instance(self): self.mox.StubOutWithMock(self.compute_api, 'get') exc = exception.InstanceNotFound(instance_id='inst_ud') self.compute_api.get(self.context, self.uuid, expected_attrs=None, want_objects=True).AndRaise(exc) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPNotFound, self.admin_api._reset_state, self.request, self.uuid, {"reset_state": {"state": "active"}}) def _setup_mock(self, expected): instance = instance_obj.Instance() instance.uuid = self.uuid instance.vm_state = 'fake' instance.task_state = 'fake' instance.obj_reset_changes() self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, 'get') def check_state(admin_state_reset=True): self.assertEqual(set(expected.keys()), instance.obj_what_changed()) for k, v in expected.items(): self.assertEqual(v, getattr(instance, k), "Instance.%s doesn't match" % k) instance.obj_reset_changes() self.compute_api.get(self.context, instance.uuid, expected_attrs=None, want_objects=True).AndReturn(instance) instance.save(admin_state_reset=True).WithSideEffects(check_state) def test_reset_active(self): self._setup_mock(dict(vm_state=vm_states.ACTIVE, task_state=None)) self.mox.ReplayAll() body = {"reset_state": {"state": "active"}} result = self.admin_api._reset_state(self.request, self.uuid, body) self.assertEqual(202, result.status_int) def test_reset_error(self): self._setup_mock(dict(vm_state=vm_states.ERROR, task_state=None)) self.mox.ReplayAll() body = {"reset_state": {"state": "error"}} result = self.admin_api._reset_state(self.request, self.uuid, body) self.assertEqual(202, result.status_int) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_extended_server_attributes.py0000664000175400017540000001060412323721477033312 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import extended_server_attributes from nova import compute from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from oslo.config import cfg NAME_FMT = cfg.CONF.instance_name_template UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="host-fake", node="node-fake") return fake_instance.fake_instance_obj(args[1], expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(1, uuid=UUID1, host="host-1", node="node-1"), fakes.stub_instance(2, uuid=UUID2, host="host-2", node="node-2") ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ExtendedServerAttributesTest(test.TestCase): content_type = 'application/json' prefix = '%s:' % extended_server_attributes.ExtendedServerAttributes.alias def setUp(self): super(ExtendedServerAttributesTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(db, 'instance_get_by_uuid', fake_compute_get) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response( fakes.wsgi_app_v3(init_only=('servers', 'os-extended-server-attributes'))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertServerAttributes(self, server, host, node, instance_name): self.assertEqual(server.get('%shost' % self.prefix), host) self.assertEqual(server.get('%sinstance_name' % self.prefix), instance_name) self.assertEqual(server.get('%shypervisor_hostname' % self.prefix), node) def test_show(self): url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertServerAttributes(self._get_server(res.body), host='host-fake', node='node-fake', instance_name=NAME_FMT % (1)) def test_detail(self): url = '/v3/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertServerAttributes(server, host='host-%s' % (i + 1), node='node-%s' % (i + 1), instance_name=NAME_FMT % (i + 1)) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v3/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_flavor_rxtx.py0000664000175400017540000000644512323721477030244 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, 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. import webob from nova.api.openstack.compute.plugins.v3 import flavor_rxtx from nova.compute import flavors from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_FLAVORS = { 'flavor 1': { "flavorid": '1', "name": 'flavor 1', "memory_mb": '256', "root_gb": '10', "rxtx_factor": '1.0', "swap": 0, "ephemeral_gb": 0, "vcpus": 1, "disabled": False, }, 'flavor 2': { "flavorid": '2', "name": 'flavor 2', "memory_mb": '512', "root_gb": '10', "rxtx_factor": None, "swap": 0, "vcpus": 1, "ephemeral_gb": 0, "disabled": False, }, } def fake_flavor_get_by_flavor_id(flavorid, ctxt=None): return FAKE_FLAVORS['flavor %s' % flavorid] def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [ fake_flavor_get_by_flavor_id(1), fake_flavor_get_by_flavor_id(2) ] class FlavorRxtxTest(test.NoDBTestCase): content_type = 'application/json' prefix = '%s:' % flavor_rxtx.ALIAS def setUp(self): super(FlavorRxtxTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type app = fakes.wsgi_app_v3(init_only=('servers', 'flavors', 'os-flavor-rxtx')) res = req.get_response(app) return res def _get_flavor(self, body): return jsonutils.loads(body).get('flavor') def _get_flavors(self, body): return jsonutils.loads(body).get('flavors') def assertFlavorRxtx(self, flavor, rxtx): self.assertEqual( flavor.get('%srxtx_factor' % self.prefix), rxtx) def test_show(self): url = '/v3/flavors/1' res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertFlavorRxtx(self._get_flavor(res.body), '1.0') def test_detail(self): url = '/v3/flavors/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) flavors = self._get_flavors(res.body) self.assertFlavorRxtx(flavors[0], '1.0') self.assertFlavorRxtx(flavors[1], '') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_evacuate.py0000664000175400017540000002304412323721477027455 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from oslo.config import cfg import webob from nova.compute import api as compute_api from nova.compute import vm_states from nova import context from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') def fake_compute_api(*args, **kwargs): return True def fake_compute_api_get(self, context, instance_id, expected_attrs=None, want_objects=False): return { 'id': 1, 'uuid': instance_id, 'vm_state': vm_states.ACTIVE, 'task_state': None, 'host': 'host1' } def fake_service_get_by_compute_host(self, context, host): if host == 'bad-host': raise exception.ComputeHostNotFound(host=host) else: return { 'host_name': host, 'service': 'compute', 'zone': 'nova'} class EvacuateTest(test.NoDBTestCase): _methods = ('resize', 'evacuate') def setUp(self): super(EvacuateTest, self).setUp() self.stubs.Set(compute_api.API, 'get', fake_compute_api_get) self.stubs.Set(compute_api.HostAPI, 'service_get_by_compute_host', fake_service_get_by_compute_host) self.UUID = uuid.uuid4() for _method in self._methods: self.stubs.Set(compute_api.API, _method, fake_compute_api) def _fake_update(self, context, instance, task_state, expected_task_state): return def _gen_request_with_app(self, json_load, is_admin=True): ctxt = context.get_admin_context() ctxt.user_id = 'fake' ctxt.project_id = 'fake' ctxt.is_admin = is_admin app = fakes.wsgi_app_v3(fake_auth_context=ctxt) req = webob.Request.blank('/v3/servers/%s/action' % self.UUID) req.method = 'POST' base_json_load = {'evacuate': json_load} req.body = jsonutils.dumps(base_json_load) req.content_type = 'application/json' return req, app def test_evacuate_instance_with_no_target(self): req, app = self._gen_request_with_app({'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) res = req.get_response(app) self.assertEqual(400, res.status_int) def test_evacuate_instance_with_empty_host(self): req, app = self._gen_request_with_app({'host': '', 'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) res = req.get_response(app) res_dict = jsonutils.loads(res.body) self.assertEqual(400, res.status_int) def test_evacuate_instance_with_too_long_host(self): host = 'a' * 256 req, app = self._gen_request_with_app({'host': host, 'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) res = req.get_response(app) res_dict = jsonutils.loads(res.body) self.assertEqual(400, res.status_int) def test_evacuate_instance_with_invalid_characters_host(self): host = 'abc!#' req, app = self._gen_request_with_app({'host': host, 'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) res = req.get_response(app) res_dict = jsonutils.loads(res.body) self.assertEqual(400, res.status_int) def test_evacuate_instance_with_invalid_on_shared_storage(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'foo', 'admin_password': 'MyNewPass'}) res = req.get_response(app) res_dict = jsonutils.loads(res.body) self.assertEqual(400, res.status_int) def test_evacuate_instance_without_on_shared_storage(self): req, app = self._gen_request_with_app({'host': 'my-host', 'admin_password': 'MyNewPass'}) res = req.get_response(app) self.assertEqual(400, res.status_int) def test_evacuate_instance_with_bad_host(self): req, app = self._gen_request_with_app({'host': 'bad-host', 'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) res = req.get_response(app) self.assertEqual(404, res.status_int) def test_evacuate_instance_with_target(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) self.stubs.Set(compute_api.API, 'update', self._fake_update) resp = req.get_response(app) self.assertEqual(202, resp.status_int) resp_json = jsonutils.loads(resp.body) self.assertEqual("MyNewPass", resp_json['admin_password']) def test_evacuate_instance_with_underscore_in_hostname(self): # NOTE: The hostname grammar in RFC952 does not allow for # underscores in hostnames. However, we should test that it # is supported because it sometimes occurs in real systems. req, app = self._gen_request_with_app({'host': 'underscore_hostname', 'on_shared_storage': 'False', 'admin_password': 'MyNewPass'}) self.stubs.Set(compute_api.API, 'update', self._fake_update) resp = req.get_response(app) self.assertEqual(202, resp.status_int) resp_json = jsonutils.loads(resp.body) self.assertEqual("MyNewPass", resp_json['admin_password']) def test_evacuate_shared_and_pass(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'True', 'admin_password': 'MyNewPass'}) self.stubs.Set(compute_api.API, 'update', self._fake_update) res = req.get_response(app) self.assertEqual(400, res.status_int) def test_evacuate_not_shared_pass_generated(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'False'}) self.stubs.Set(compute_api.API, 'update', self._fake_update) resp = req.get_response(app) self.assertEqual(202, resp.status_int) resp_json = jsonutils.loads(resp.body) self.assertEqual(CONF.password_length, len(resp_json['admin_password'])) def test_evacuate_shared(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'True'}) self.stubs.Set(compute_api.API, 'update', self._fake_update) res = req.get_response(app) self.assertEqual(202, res.status_int) resp_json = jsonutils.loads(res.body) self.assertIsNone(resp_json['admin_password']) def test_evacuate_with_active_service(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'false', 'admin_password': 'MyNewPass'}) def fake_evacuate(*args, **kwargs): raise exception.ComputeServiceInUse("Service still in use") self.stubs.Set(compute_api.API, 'evacuate', fake_evacuate) res = req.get_response(app) self.assertEqual(400, res.status_int) def test_not_admin(self): req, app = self._gen_request_with_app({'host': 'my-host', 'on_shared_storage': 'True'}, is_admin=False) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(403, res.status_int) def test_evacuate_disable_password_return(self): self._test_evacuate_enable_instance_password_conf(False) def test_evacuate_enable_password_return(self): self._test_evacuate_enable_instance_password_conf(True) def _test_evacuate_enable_instance_password_conf(self, enable_pass): self.flags(enable_instance_password=enable_pass) req, app = self._gen_request_with_app({'host': 'my_host', 'on_shared_storage': 'False'}) self.stubs.Set(compute_api.API, 'update', self._fake_update) res = req.get_response(app) self.assertEqual(res.status_int, 202) resp_json = jsonutils.loads(res.body) if enable_pass: self.assertIn('admin_password', resp_json) else: self.assertIsNone(resp_json.get('admin_password')) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_security_groups.py0000664000175400017540000003101512323721477031123 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2012 Justin Santa Barbara # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from oslo.config import cfg import uuid import webob from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import security_groups from nova.api.openstack.compute.plugins.v3 import servers from nova import compute from nova.compute import api as compute_api from nova.compute import flavors from nova import db from nova import exception from nova.network import manager from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance import nova.tests.image.fake CONF = cfg.CONF FAKE_UUID = fakes.FAKE_UUID FAKE_UUID1 = 'a47ae74e-ab08-447f-8eee-ffd43fc46c16' def fake_gen_uuid(): return FAKE_UUID def return_security_group(context, instance_id, security_group_id): pass UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get_all(*args, **kwargs): base = {'id': 1, 'description': 'foo', 'user_id': 'bar', 'project_id': 'baz', 'deleted': False, 'deleted_at': None, 'updated_at': None, 'created_at': None} db_list = [ fakes.stub_instance( 1, uuid=UUID1, security_groups=[dict(base, **{'name': 'fake-0-0'}), dict(base, **{'name': 'fake-0-1'})]), fakes.stub_instance( 2, uuid=UUID2, security_groups=[dict(base, **{'name': 'fake-1-0'}), dict(base, **{'name': 'fake-1-1'})]) ] return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, ['metadata', 'system_metadata', 'security_groups', 'info_cache']) def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, security_groups=[{'name': 'fake-2-0'}, {'name': 'fake-2-1'}]) return fake_instance.fake_instance_obj(args[1], expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **inst) def fake_compute_create(*args, **kwargs): return ([fake_compute_get(*args, **kwargs)], '') def fake_get_instance_security_groups(*args, **kwargs): return [{'name': 'fake'}] def fake_get_instances_security_groups_bindings(inst, context, servers): groups = {UUID1: [{'name': 'fake-0-0'}, {'name': 'fake-0-1'}], UUID2: [{'name': 'fake-1-0'}, {'name': 'fake-1-1'}], UUID3: [{'name': 'fake-2-0'}, {'name': 'fake-2-1'}]} result = {} for server in servers: result[server['id']] = groups.get(server['id']) return result class SecurityGroupsOutputTest(test.TestCase): content_type = 'application/json' def setUp(self): super(SecurityGroupsOutputTest, self).setUp() CONF.set_override('security_group_api', 'nova') fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(compute.api.API, 'create', fake_compute_create) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-security-groups')) def _make_request(self, url, body=None): req = webob.Request.blank(url) if body: req.method = 'POST' req.body = self._encode_body(body) req.content_type = self.content_type req.headers['Accept'] = self.content_type res = req.get_response(self.app) return res def _encode_body(self, body): return jsonutils.dumps(body) def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def _get_groups(self, server): return server.get('os-security-groups:security_groups') def test_create(self): url = '/v3/servers' image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) res = self._make_request(url, {'server': server}) self.assertEqual(res.status_int, 202) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) def test_show(self): url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) def test_detail(self): url = '/v3/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): for j, group in enumerate(self._get_groups(server)): name = 'fake-%s-%s' % (i, j) self.assertEqual(group.get('name'), name) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v3/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class ServersControllerCreateTest(test.TestCase): def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-security-groups', 'osapi_v3') self.no_security_groups_controller = servers.ServersController( extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "user_data": None, "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) nova.tests.image.fake.stub_out_image_service(self.stubs) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) def _test_create_extra(self, params, no_image=False, override_controller=None): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) if no_image: server.pop('image_ref', None) server.update(params) body = dict(server=server) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" if override_controller: server = override_controller.create(req, body=body).obj['server'] else: server = self.controller.create(req, body=body).obj['server'] def test_create_instance_with_security_group_enabled(self): group = 'foo' old_create = compute_api.API.create def sec_group_get(ctx, proj, name): if name == group: return True else: raise exception.SecurityGroupNotFoundForProject( project_id=proj, security_group_id=name) def create(*args, **kwargs): self.assertEqual(kwargs['security_group'], [group]) return old_create(*args, **kwargs) self.stubs.Set(db, 'security_group_get_by_name', sec_group_get) # negative test self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, {security_groups.ATTRIBUTE_NAME: [{'name': 'bogus'}]}) # positive test - extra assert in create path self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra({security_groups.ATTRIBUTE_NAME: [{'name': group}]}) def test_create_instance_with_security_group_disabled(self): group = 'foo' params = {'security_groups': [{'name': group}]} old_create = compute_api.API.create def create(*args, **kwargs): # NOTE(vish): if the security groups extension is not # enabled, then security groups passed in # are ignored. self.assertNotIn('security_group', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params, override_controller=self.no_security_groups_controller) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_availability_zone.py0000664000175400017540000004321512323721477031367 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from oslo.config import cfg import uuid import webob from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import availability_zone from nova.api.openstack.compute.plugins.v3 import servers from nova import availability_zones from nova.compute import api as compute_api from nova.compute import flavors from nova import context from nova import db from nova.network import manager from nova.openstack.common import jsonutils from nova import servicegroup from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests.image import fake from nova.tests import matchers CONF = cfg.CONF FAKE_UUID = fakes.FAKE_UUID def fake_gen_uuid(): return FAKE_UUID def fake_get_availability_zones(context): return ['nova'], [] def return_security_group(context, instance_id, security_group_id): pass def fake_service_get_all(context, disabled=None): def __fake_service(binary, availability_zone, created_at, updated_at, host, disabled): return {'binary': binary, 'availability_zone': availability_zone, 'available_zones': availability_zone, 'created_at': created_at, 'updated_at': updated_at, 'host': host, 'disabled': disabled} if disabled: return [__fake_service("nova-compute", "zone-2", datetime.datetime(2012, 11, 14, 9, 53, 25, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", True), __fake_service("nova-scheduler", "internal", datetime.datetime(2012, 11, 14, 9, 57, 3, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", True), __fake_service("nova-network", "internal", datetime.datetime(2012, 11, 16, 7, 25, 46, 0), datetime.datetime(2012, 12, 26, 14, 45, 24, 0), "fake_host-2", True)] else: return [__fake_service("nova-compute", "zone-1", datetime.datetime(2012, 11, 14, 9, 53, 25, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", False), __fake_service("nova-sched", "internal", datetime.datetime(2012, 11, 14, 9, 57, 3, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", False), __fake_service("nova-network", "internal", datetime.datetime(2012, 11, 16, 7, 25, 46, 0), datetime.datetime(2012, 12, 26, 14, 45, 24, 0), "fake_host-2", False)] def fake_service_is_up(self, service): return service['binary'] != u"nova-network" def fake_set_availability_zones(context, services): return services class AvailabilityZoneApiTest(test.TestCase): def setUp(self): super(AvailabilityZoneApiTest, self).setUp() self.stubs.Set(db, 'service_get_all', fake_service_get_all) self.stubs.Set(availability_zones, 'set_availability_zones', fake_set_availability_zones) self.stubs.Set(servicegroup.API, 'service_is_up', fake_service_is_up) def test_filtered_availability_zones(self): az = availability_zone.AvailabilityZoneController() zones = ['zone1', 'internal'] expected = [{'zone_name': 'zone1', 'zone_state': {'available': True}, "hosts": None}] result = az._get_filtered_availability_zones(zones, True) self.assertEqual(result, expected) expected = [{'zone_name': 'zone1', 'zone_state': {'available': False}, "hosts": None}] result = az._get_filtered_availability_zones(zones, False) self.assertEqual(result, expected) def test_availability_zone_index(self): req = webob.Request.blank('/v3/os-availability-zone') resp = req.get_response(fakes.wsgi_app_v3( init_only=('os-availability-zone', 'servers'))) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('availability_zone_info', resp_dict) zones = resp_dict['availability_zone_info'] self.assertEqual(len(zones), 2) self.assertEqual(zones[0]['zone_name'], u'zone-1') self.assertTrue(zones[0]['zone_state']['available']) self.assertIsNone(zones[0]['hosts']) self.assertEqual(zones[1]['zone_name'], u'zone-2') self.assertFalse(zones[1]['zone_state']['available']) self.assertIsNone(zones[1]['hosts']) def test_availability_zone_detail(self): def _formatZone(zone_dict): result = [] # Zone tree view item result.append({'zone_name': zone_dict['zone_name'], 'zone_state': u'available' if zone_dict['zone_state']['available'] else u'not available'}) if zone_dict['hosts'] is not None: for (host, services) in zone_dict['hosts'].items(): # Host tree view item result.append({'zone_name': u'|- %s' % host, 'zone_state': u''}) for (svc, state) in services.items(): # Service tree view item result.append({'zone_name': u'| |- %s' % svc, 'zone_state': u'%s %s %s' % ( 'enabled' if state['active'] else 'disabled', ':-)' if state['available'] else 'XXX', jsonutils.to_primitive( state['updated_at']))}) return result def _assertZone(zone, name, status): self.assertEqual(zone['zone_name'], name) self.assertEqual(zone['zone_state'], status) availabilityZone = availability_zone.AvailabilityZoneController() req = webob.Request.blank('/v3/os-availability-zone/detail') req.method = 'GET' req.environ['nova.context'] = context.get_admin_context() resp_dict = availabilityZone.detail(req) self.assertIn('availability_zone_info', resp_dict) zones = resp_dict['availability_zone_info'] self.assertEqual(len(zones), 3) ''' availabilityZoneInfo field content in response body: [{'zone_name': 'zone-1', 'zone_state': {'available': True}, 'hosts': {'fake_host-1': { 'nova-compute': {'active': True, 'available': True, 'updated_at': datetime(2012, 12, 26, 14, 45, 25)}}}}, {'zone_name': 'internal', 'zone_state': {'available': True}, 'hosts': {'fake_host-1': { 'nova-sched': {'active': True, 'available': True, 'updated_at': datetime(2012, 12, 26, 14, 45, 25)}}, 'fake_host-2': { 'nova-network': {'active': True, 'available': False, 'updated_at': datetime(2012, 12, 26, 14, 45, 24)}}}}, {'zone_name': 'zone-2', 'zone_state': {'available': False}, 'hosts': None}] ''' l0 = [u'zone-1', u'available'] l1 = [u'|- fake_host-1', u''] l2 = [u'| |- nova-compute', u'enabled :-) 2012-12-26T14:45:25.000000'] l3 = [u'internal', u'available'] l4 = [u'|- fake_host-1', u''] l5 = [u'| |- nova-sched', u'enabled :-) 2012-12-26T14:45:25.000000'] l6 = [u'|- fake_host-2', u''] l7 = [u'| |- nova-network', u'enabled XXX 2012-12-26T14:45:24.000000'] l8 = [u'zone-2', u'not available'] z0 = _formatZone(zones[0]) z1 = _formatZone(zones[1]) z2 = _formatZone(zones[2]) self.assertEqual(len(z0), 3) self.assertEqual(len(z1), 5) self.assertEqual(len(z2), 1) _assertZone(z0[0], l0[0], l0[1]) _assertZone(z0[1], l1[0], l1[1]) _assertZone(z0[2], l2[0], l2[1]) _assertZone(z1[0], l3[0], l3[1]) _assertZone(z1[1], l4[0], l4[1]) _assertZone(z1[2], l5[0], l5[1]) _assertZone(z1[3], l6[0], l6[1]) _assertZone(z1[4], l7[0], l7[1]) _assertZone(z2[0], l8[0], l8[1]) def test_availability_zone_detail_no_services(self): expected_response = {'availability_zone_info': [{'zone_name': 'nova', 'hosts': {}, 'zone_state': {'available': True}}]} self.stubs.Set(availability_zones, 'get_availability_zones', fake_get_availability_zones) availabilityZone = availability_zone.AvailabilityZoneController() req = webob.Request.blank('/v3/os-availability-zone/detail') req.method = 'GET' req.environ['nova.context'] = context.get_admin_context() resp_dict = availabilityZone.detail(req) self.assertThat(resp_dict, matchers.DictMatches(expected_response)) class ServersControllerCreateTest(test.TestCase): def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-availability-zone', 'osapi_v3') self.no_availability_zone_controller = servers.ServersController( extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', availability_zone.ATTRIBUTE_NAME: None, 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) def _test_create_extra(self, params, no_image=False, override_controller=None): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) if no_image: server.pop('image_ref', None) server.update(params) body = dict(server=server) req = fakes.HTTPRequestV3.blank('/v3/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" if override_controller: server = override_controller.create(req, body=body).obj['server'] else: server = self.controller.create(req, body=body).obj['server'] def test_create_instance_with_availability_zone_disabled(self): availability_zone = [{'availability_zone': 'foo'}] params = {'availability_zone': availability_zone} old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('availability_zone', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params, override_controller=self.no_availability_zone_controller) def test_create_instance_with_availability_zone(self): def create(*args, **kwargs): self.assertIn('availability_zone', kwargs) self.assertEqual('nova', kwargs['availability_zone']) return old_create(*args, **kwargs) old_create = compute_api.API.create self.stubs.Set(compute_api.API, 'create', create) image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/v3/flavors/3' body = { 'server': { 'name': 'config_drive_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, availability_zone.ATTRIBUTE_NAME: "nova", }, } req = fakes.HTTPRequestV3.blank('/v3/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" admin_context = context.get_admin_context() service1 = db.service_create(admin_context, {'host': 'host1_zones', 'binary': "nova-compute", 'topic': 'compute', 'report_count': 0}) agg = db.aggregate_create(admin_context, {'name': 'agg1'}, {'availability_zone': 'nova'}) db.aggregate_host_add(admin_context, agg['id'], 'host1_zones') res = self.controller.create(req, body=body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_without_availability_zone(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/v3/flavors/3' body = { 'server': { 'name': 'config_drive_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, }, } req = fakes.HTTPRequestV3.blank('/v3/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_flavors_extra_specs.py0000664000175400017540000002662712323721477031746 0ustar jenkinsjenkins00000000000000# Copyright 2011 University of Southern California # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock import webob from nova.api.openstack.compute.plugins.v3 import flavors_extraspecs import nova.db from nova import exception from nova.openstack.common.db import exception as db_exc from nova import test from nova.tests.api.openstack import fakes def return_create_flavor_extra_specs(context, flavor_id, extra_specs): return stub_flavor_extra_specs() def return_flavor_extra_specs(context, flavor_id): return stub_flavor_extra_specs() def return_flavor_extra_specs_item(context, flavor_id, key): return {key: stub_flavor_extra_specs()[key]} def return_empty_flavor_extra_specs(context, flavor_id): return {} def delete_flavor_extra_specs(context, flavor_id, key): pass def stub_flavor_extra_specs(): specs = { "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} return specs class FlavorsExtraSpecsTest(test.TestCase): def setUp(self): super(FlavorsExtraSpecsTest, self).setUp() fakes.stub_out_key_pair_funcs(self.stubs) self.controller = flavors_extraspecs.FlavorExtraSpecsController() def test_index(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get', return_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs') res_dict = self.controller.index(req, 1) self.assertEqual('value1', res_dict['extra_specs']['key1']) def test_index_no_data(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get', return_empty_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs') res_dict = self.controller.index(req, 1) self.assertEqual(0, len(res_dict['extra_specs'])) def test_show(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get_item', return_flavor_extra_specs_item) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key5') res_dict = self.controller.show(req, 1, 'key5') self.assertEqual('value5', res_dict['key5']) def test_show_spec_not_found(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get', return_empty_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 1, 'key6') def test_delete(self): self.stubs.Set(nova.db, 'flavor_extra_specs_delete', delete_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key5', use_admin_context=True) self.controller.delete(req, 1, 'key5') def test_delete_no_admin(self): self.stubs.Set(nova.db, 'flavor_extra_specs_delete', delete_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key5') self.assertRaises(exception.NotAuthorized, self.controller.delete, req, 1, 'key 5') def test_delete_spec_not_found(self): req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key6', use_admin_context=True) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1, 'key6') def test_create(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"extra_specs": {"key1": "value1"}} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs', use_admin_context=True) res_dict = self.controller.create(req, 1, body) self.assertEqual('value1', res_dict['extra_specs']['key1']) self.assertEqual(self.controller.create.wsgi_code, 201) def test_create_no_admin(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"extra_specs": {"key1": "value1"}} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs') self.assertRaises(exception.NotAuthorized, self.controller.create, req, 1, body) def test_create_empty_body(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, 1, '') def test_create_flavor_not_found(self): def fake_instance_type_extra_specs_update_or_create(*args, **kwargs): raise exception.FlavorNotFound(flavor_id='') self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', fake_instance_type_extra_specs_update_or_create) body = {"extra_specs": {"key1": "value1"}} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs', use_admin_context=True) self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, 1, body) def test_create_flavor_db_duplicate(self): def fake_instance_type_extra_specs_update_or_create(*args, **kwargs): raise db_exc.DBDuplicateEntry() self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', fake_instance_type_extra_specs_update_or_create) body = {"extra_specs": {"key1": "value1"}} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs', use_admin_context=True) self.assertRaises(webob.exc.HTTPConflict, self.controller.create, req, 1, body) @mock.patch('nova.db.flavor_extra_specs_update_or_create') def test_create_invalid_specs_key(self, mock_flavor_extra_specs): invalid_keys = ("key1/", "", "$$akey$", "!akey", "") mock_flavor_extra_specs.side_effects = return_create_flavor_extra_specs for key in invalid_keys: body = {"extra_specs": {key: "value1"}} req = fakes.HTTPRequest.blank('/flavors/1/extra-specs', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, 1, body) @mock.patch('nova.db.flavor_extra_specs_update_or_create') def test_create_valid_specs_key(self, mock_flavor_extra_specs): valid_keys = ("key1", "month.price", "I_am-a Key", "finance:g2") mock_flavor_extra_specs.side_effects = return_create_flavor_extra_specs for key in valid_keys: body = {"extra_specs": {key: "value1"}} req = fakes.HTTPRequest.blank('/flavors/1/extra-specs', use_admin_context=True) res_dict = self.controller.create(req, 1, body) self.assertEqual('value1', res_dict['extra_specs'][key]) self.assertEqual(self.controller.create.wsgi_code, 201) def test_update_item(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key1', use_admin_context=True) res_dict = self.controller.update(req, 1, 'key1', body) self.assertEqual('value1', res_dict['key1']) def test_update_item_no_admin(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key1') self.assertRaises(exception.NotAuthorized, self.controller.update, req, 1, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key1', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'key1', '') def test_update_item_too_many_keys(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1", "key2": "value2"} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key1', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/bad', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'bad', body) def test_update_flavor_not_found(self): def fake_instance_type_extra_specs_update_or_create(*args, **kwargs): raise exception.FlavorNotFound(flavor_id='') self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', fake_instance_type_extra_specs_update_or_create) body = {"key1": "value1"} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key1', use_admin_context=True) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, 1, 'key1', body) def test_update_flavor_db_duplicate(self): def fake_instance_type_extra_specs_update_or_create(*args, **kwargs): raise db_exc.DBDuplicateEntry() self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', fake_instance_type_extra_specs_update_or_create) body = {"key1": "value1"} req = fakes.HTTPRequestV3.blank('/flavors/1/extra-specs/key1', use_admin_context=True) self.assertRaises(webob.exc.HTTPConflict, self.controller.update, req, 1, 'key1', body) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_pci.py0000664000175400017540000002367212323721477026442 0ustar jenkinsjenkins00000000000000# Copyright 2013 Intel Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from webob import exc from nova.api.openstack.compute.plugins.v3 import pci from nova.api.openstack import wsgi from nova import context from nova import db from nova import exception from nova.objects import instance from nova.objects import pci_device from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests.objects import test_pci_device fake_compute_node = { 'pci_stats': [{"count": 3, "vendor_id": "8086", "product_id": "1520", "extra_info": {"phys_function": '[["0x0000", "0x04", ' '"0x00", "0x1"]]'}}]} class FakeResponse(wsgi.ResponseObject): pass class PciServerControllerTest(test.NoDBTestCase): def setUp(self): super(PciServerControllerTest, self).setUp() self.controller = pci.PciServerController() self.fake_obj = {'server': {'addresses': {}, 'id': 'fb08', 'name': 'a3', 'status': 'ACTIVE', 'tenant_id': '9a3af784c', 'user_id': 'e992080ac0', }} self.fake_list = {'servers': [{'addresses': {}, 'id': 'fb08', 'name': 'a3', 'status': 'ACTIVE', 'tenant_id': '9a3af784c', 'user_id': 'e992080ac', }]} self._create_fake_instance() self._create_fake_pci_device() self.pci_device.claim(self.inst) self.pci_device.allocate(self.inst) def _create_fake_instance(self): self.inst = instance.Instance() self.inst.uuid = 'fake-inst-uuid' self.inst.pci_devices = pci_device.PciDeviceList() def _create_fake_pci_device(self): def fake_pci_device_get_by_addr(ctxt, id, addr): return test_pci_device.fake_db_dev ctxt = context.get_admin_context() self.stubs.Set(db, 'pci_device_get_by_addr', fake_pci_device_get_by_addr) self.pci_device = pci_device.PciDevice.get_by_dev_addr(ctxt, 1, 'a') def test_show(self): def fake_get_db_instance(id): return self.inst resp = FakeResponse(self.fake_obj, '') req = fakes.HTTPRequestV3.blank('/os-pci/1', use_admin_context=True) self.stubs.Set(req, 'get_db_instance', fake_get_db_instance) self.controller.show(req, resp, '1') self.assertEqual([{'id': 1}], resp.obj['server']['os-pci:pci_devices']) def test_detail(self): def fake_get_db_instance(id): return self.inst resp = FakeResponse(self.fake_list, '') req = fakes.HTTPRequestV3.blank('/os-pci/detail', use_admin_context=True) self.stubs.Set(req, 'get_db_instance', fake_get_db_instance) self.controller.detail(req, resp) self.assertEqual([{'id': 1}], resp.obj['servers'][0]['os-pci:pci_devices']) class PciHypervisorControllerTest(test.NoDBTestCase): def setUp(self): super(PciHypervisorControllerTest, self).setUp() self.controller = pci.PciHypervisorController() self.fake_objs = dict(hypervisors=[ dict(id=1, service=dict(id=1, host="compute1"), hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1")]) self.fake_obj = dict(hypervisor=dict( id=1, service=dict(id=1, host="compute1"), hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1")) def test_show(self): def fake_get_db_compute_node(id): fake_compute_node['pci_stats'] = jsonutils.dumps( fake_compute_node['pci_stats']) return fake_compute_node req = fakes.HTTPRequestV3.blank('/os-hypervisors/1', use_admin_context=True) resp = FakeResponse(self.fake_obj, '') self.stubs.Set(req, 'get_db_compute_node', fake_get_db_compute_node) self.controller.show(req, resp, '1') self.assertIn('os-pci:pci_stats', resp.obj['hypervisor']) fake_compute_node['pci_stats'] = jsonutils.loads( fake_compute_node['pci_stats']) self.assertEqual(fake_compute_node['pci_stats'][0], resp.obj['hypervisor']['os-pci:pci_stats'][0]) def test_detail(self): def fake_get_db_compute_node(id): fake_compute_node['pci_stats'] = jsonutils.dumps( fake_compute_node['pci_stats']) return fake_compute_node req = fakes.HTTPRequestV3.blank('/os-hypervisors/detail', use_admin_context=True) resp = FakeResponse(self.fake_objs, '') self.stubs.Set(req, 'get_db_compute_node', fake_get_db_compute_node) self.controller.detail(req, resp) fake_compute_node['pci_stats'] = jsonutils.loads( fake_compute_node['pci_stats']) self.assertIn('os-pci:pci_stats', resp.obj['hypervisors'][0]) self.assertEqual(fake_compute_node['pci_stats'][0], resp.obj['hypervisors'][0]['os-pci:pci_stats'][0]) class PciControlletest(test.NoDBTestCase): def setUp(self): super(PciControlletest, self).setUp() self.controller = pci.PciController() def test_show(self): def fake_pci_device_get_by_id(context, id): return test_pci_device.fake_db_dev self.stubs.Set(db, 'pci_device_get_by_id', fake_pci_device_get_by_id) req = fakes.HTTPRequestV3.blank('/os-pci/1', use_admin_context=True) result = self.controller.show(req, '1') dist = {'pci_device': {'address': 'a', 'compute_node_id': 1, 'dev_id': 'i', 'extra_info': {}, 'dev_type': 't', 'id': 1, 'server_uuid': None, 'label': 'l', 'product_id': 'p', 'status': 'available', 'vendor_id': 'v'}} self.assertEqual(dist, result) def test_show_error_id(self): def fake_pci_device_get_by_id(context, id): raise exception.PciDeviceNotFoundById(id=id) self.stubs.Set(db, 'pci_device_get_by_id', fake_pci_device_get_by_id) req = fakes.HTTPRequestV3.blank('/os-pci/0', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.show, req, '0') def _fake_compute_node_get_all(self, context): return [dict(id=1, service_id=1, cpu_info='cpu_info', disk_available_least=100)] def _fake_pci_device_get_all_by_node(self, context, node): return [test_pci_device.fake_db_dev, test_pci_device.fake_db_dev_1] def test_index(self): self.stubs.Set(db, 'compute_node_get_all', self._fake_compute_node_get_all) self.stubs.Set(db, 'pci_device_get_all_by_node', self._fake_pci_device_get_all_by_node) req = fakes.HTTPRequestV3.blank('/os-pci', use_admin_context=True) result = self.controller.index(req) dist = {'pci_devices': [test_pci_device.fake_db_dev, test_pci_device.fake_db_dev_1]} for i in range(len(result['pci_devices'])): self.assertEqual(dist['pci_devices'][i]['vendor_id'], result['pci_devices'][i]['vendor_id']) self.assertEqual(dist['pci_devices'][i]['id'], result['pci_devices'][i]['id']) self.assertEqual(dist['pci_devices'][i]['status'], result['pci_devices'][i]['status']) self.assertEqual(dist['pci_devices'][i]['address'], result['pci_devices'][i]['address']) def test_detail(self): self.stubs.Set(db, 'compute_node_get_all', self._fake_compute_node_get_all) self.stubs.Set(db, 'pci_device_get_all_by_node', self._fake_pci_device_get_all_by_node) req = fakes.HTTPRequestV3.blank('/os-pci/detail', use_admin_context=True) result = self.controller.detail(req) dist = {'pci_devices': [test_pci_device.fake_db_dev, test_pci_device.fake_db_dev_1]} for i in range(len(result['pci_devices'])): self.assertEqual(dist['pci_devices'][i]['vendor_id'], result['pci_devices'][i]['vendor_id']) self.assertEqual(dist['pci_devices'][i]['id'], result['pci_devices'][i]['id']) self.assertEqual(dist['pci_devices'][i]['label'], result['pci_devices'][i]['label']) self.assertEqual(dist['pci_devices'][i]['dev_id'], result['pci_devices'][i]['dev_id']) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_hypervisors.py0000664000175400017540000003772012323721477030263 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from webob import exc from nova.api.openstack.compute.plugins.v3 import hypervisors from nova import db from nova.db.sqlalchemy import api as db_api from nova import exception from nova import test from nova.tests.api.openstack import fakes TEST_HYPERS = [ dict(id=1, service_id=1, service=dict(id=1, host="compute1", binary="nova-compute", topic="compute_topic", report_count=5, disabled=False, availability_zone="nova"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1'), dict(id=2, service_id=2, service=dict(id=2, host="compute2", binary="nova-compute", topic="compute_topic", report_count=5, disabled=False, availability_zone="nova"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper2", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='2.2.2.2')] TEST_SERVERS = [dict(name="inst1", uuid="uuid1", host="compute1"), dict(name="inst2", uuid="uuid2", host="compute2"), dict(name="inst3", uuid="uuid3", host="compute1"), dict(name="inst4", uuid="uuid4", host="compute2")] @db_api.require_admin_context def fake_compute_node_get_all(context): return TEST_HYPERS def fake_compute_node_search_by_hypervisor(context, hypervisor_re): return TEST_HYPERS def fake_compute_node_get(context, compute_id): for hyper in TEST_HYPERS: if hyper['id'] == compute_id: return hyper raise exception.ComputeHostNotFound(host=compute_id) def fake_compute_node_statistics(context): result = dict( count=0, vcpus=0, memory_mb=0, local_gb=0, vcpus_used=0, memory_mb_used=0, local_gb_used=0, free_ram_mb=0, free_disk_gb=0, current_workload=0, running_vms=0, disk_available_least=0, ) for hyper in TEST_HYPERS: for key in result: if key == 'count': result[key] += 1 else: result[key] += hyper[key] return result def fake_instance_get_all_by_host(context, host): results = [] for inst in TEST_SERVERS: if inst['host'] == host: results.append(inst) return results class HypervisorsTest(test.NoDBTestCase): def setUp(self): super(HypervisorsTest, self).setUp() self.controller = hypervisors.HypervisorsController() self.stubs.Set(db, 'compute_node_get_all', fake_compute_node_get_all) self.stubs.Set(db, 'compute_node_search_by_hypervisor', fake_compute_node_search_by_hypervisor) self.stubs.Set(db, 'compute_node_get', fake_compute_node_get) self.stubs.Set(db, 'compute_node_statistics', fake_compute_node_statistics) self.stubs.Set(db, 'instance_get_all_by_host', fake_instance_get_all_by_host) def test_view_hypervisor_nodetail_noservers(self): result = self.controller._view_hypervisor(TEST_HYPERS[0], False) self.assertEqual(result, dict(id=1, hypervisor_hostname="hyper1")) def test_view_hypervisor_detail_noservers(self): result = self.controller._view_hypervisor(TEST_HYPERS[0], True) self.assertEqual(result, dict( id=1, hypervisor_hostname="hyper1", vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1', service=dict(id=1, host='compute1'))) def test_view_hypervisor_servers(self): result = self.controller._view_hypervisor(TEST_HYPERS[0], False, TEST_SERVERS) self.assertEqual(result, dict( id=1, hypervisor_hostname="hyper1", servers=[ dict(name="inst1", id="uuid1"), dict(name="inst2", id="uuid2"), dict(name="inst3", id="uuid3"), dict(name="inst4", id="uuid4")])) def test_index(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors', use_admin_context=True) result = self.controller.index(req) self.assertEqual(result, dict(hypervisors=[ dict(id=1, hypervisor_hostname="hyper1"), dict(id=2, hypervisor_hostname="hyper2")])) def test_index_non_admin(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors') self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, req) def test_detail(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/detail', use_admin_context=True) result = self.controller.detail(req) self.assertEqual(result, dict(hypervisors=[ dict(id=1, service=dict(id=1, host="compute1"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1'), dict(id=2, service=dict(id=2, host="compute2"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper2", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='2.2.2.2')])) def test_detail_non_admin(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/detail') self.assertRaises(exception.PolicyNotAuthorized, self.controller.detail, req) def test_show_noid(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/3', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.show, req, '3') def test_show_non_integer_id(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/abc', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.show, req, 'abc') def test_show_withid(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/1', use_admin_context=True) result = self.controller.show(req, '1') self.assertEqual(result, dict(hypervisor=dict( id=1, service=dict(id=1, host="compute1"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1'))) def test_show_non_admin(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/1') self.assertRaises(exception.PolicyNotAuthorized, self.controller.show, req, '1') def test_uptime_noid(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/3', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.show, req, '3') def test_uptime_notimplemented(self): def fake_get_host_uptime(context, hyp): raise exc.HTTPNotImplemented() self.stubs.Set(self.controller.host_api, 'get_host_uptime', fake_get_host_uptime) req = fakes.HTTPRequestV3.blank('/os-hypervisors/1', use_admin_context=True) self.assertRaises(exc.HTTPNotImplemented, self.controller.uptime, req, '1') def test_uptime_implemented(self): def fake_get_host_uptime(context, hyp): return "fake uptime" self.stubs.Set(self.controller.host_api, 'get_host_uptime', fake_get_host_uptime) req = fakes.HTTPRequestV3.blank('/os-hypervisors/1', use_admin_context=True) result = self.controller.uptime(req, '1') self.assertEqual(result, dict(hypervisor=dict( id=1, hypervisor_hostname="hyper1", uptime="fake uptime"))) def test_uptime_non_integer_id(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/abc/uptime', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.uptime, req, 'abc') def test_uptime_non_admin(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/1/uptime') self.assertRaises(exception.PolicyNotAuthorized, self.controller.uptime, req, '1') def test_search(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/search?query=hyper', use_admin_context=True) result = self.controller.search(req) self.assertEqual(result, dict(hypervisors=[ dict(id=1, hypervisor_hostname="hyper1"), dict(id=2, hypervisor_hostname="hyper2")])) def test_search_non_exist(self): def fake_compute_node_search_by_hypervisor_return_empty(context, hypervisor_re): return [] self.stubs.Set(db, 'compute_node_search_by_hypervisor', fake_compute_node_search_by_hypervisor_return_empty) req = fakes.HTTPRequestV3.blank('/os-hypervisors/search?query=a', use_admin_context=True) result = self.controller.search(req) self.assertEqual(result, dict(hypervisors=[])) def test_search_without_query(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/search', use_admin_context=True) self.assertRaises(exc.HTTPBadRequest, self.controller.search, req) def test_servers(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/1/servers', use_admin_context=True) result = self.controller.servers(req, '1') self.assertEqual(result, dict(hypervisor= dict(id=1, hypervisor_hostname="hyper1", servers=[ dict(name="inst1", id="uuid1"), dict(name="inst3", id="uuid3")]))) def test_servers_non_id(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/3/servers', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.servers, req, '3') def test_servers_non_admin(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/1/servers') self.assertRaises(exception.PolicyNotAuthorized, self.controller.servers, req, '1') def test_servers_return_empty(self): def fake_instance_get_all_by_host_return_empty(context, hypervisor_re): return [] self.stubs.Set(db, 'instance_get_all_by_host', fake_instance_get_all_by_host_return_empty) req = fakes.HTTPRequestV3.blank('/os-hypervisors/1/servers', use_admin_context=True) result = self.controller.servers(req, '1') self.assertEqual(result, dict(hypervisor= dict(id=1, hypervisor_hostname="hyper1", servers=[]))) def test_servers_with_non_integer_hypervisor_id(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/abc/servers', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.controller.servers, req, 'abc') def test_statistics(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/statistics', use_admin_context=True) result = self.controller.statistics(req) self.assertEqual(result, dict(hypervisor_statistics=dict( count=2, vcpus=8, memory_mb=20 * 1024, local_gb=500, vcpus_used=4, memory_mb_used=10 * 1024, local_gb_used=250, free_ram_mb=10 * 1024, free_disk_gb=250, current_workload=4, running_vms=4, disk_available_least=200))) def test_statistics_non_admin(self): req = fakes.HTTPRequestV3.blank('/os-hypervisors/statistics') self.assertRaises(exception.PolicyNotAuthorized, self.controller.statistics, req) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_migrate_server.py0000664000175400017540000002055612323721477030703 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.plugins.v3 import migrate_server from nova import exception from nova.openstack.common import uuidutils from nova.tests.api.openstack.compute.plugins.v3 import \ admin_only_action_common from nova.tests.api.openstack import fakes class MigrateServerTests(admin_only_action_common.CommonTests): def setUp(self): super(MigrateServerTests, self).setUp() self.controller = migrate_server.MigrateServerController() self.compute_api = self.controller.compute_api def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(migrate_server, 'MigrateServerController', _fake_controller) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-migrate-server'), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') def test_migrate(self): method_translations = {'migrate': 'resize', 'migrate_live': 'live_migrate'} body_map = {'migrate_live': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}} args_map = {'migrate_live': ((False, False, 'hostname'), {})} self._test_actions(['migrate', 'migrate_live'], body_map=body_map, method_translations=method_translations, args_map=args_map) def test_migrate_with_non_existed_instance(self): body_map = {'migrate_live': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}} self._test_actions_with_non_existed_instance( ['migrate', 'migrate_live'], body_map=body_map) def test_migrate_raise_conflict_on_invalid_state(self): method_translations = {'migrate': 'resize', 'migrate_live': 'live_migrate'} body_map = {'migrate_live': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}} args_map = {'migrate_live': ((False, False, 'hostname'), {})} self._test_actions_raise_conflict_on_invalid_state( ['migrate', 'migrate_live'], body_map=body_map, args_map=args_map, method_translations=method_translations) def test_actions_with_locked_instance(self): method_translations = {'migrate': 'resize'} self._test_actions_with_locked_instance(['migrate'], method_translations=method_translations) def _test_migrate_exception(self, exc_info, expected_result): self.mox.StubOutWithMock(self.compute_api, 'resize') instance = self._stub_instance_get() self.compute_api.resize(self.context, instance).AndRaise(exc_info) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {'migrate': None}) self.assertEqual(expected_result, res.status_int) def test_migrate_too_many_instances(self): exc_info = exception.TooManyInstances(overs='', req='', used=0, allowed=0, resource='') self._test_migrate_exception(exc_info, 413) def _test_migrate_live_succeeded(self, param): self.mox.StubOutWithMock(self.compute_api, 'live_migrate') instance = self._stub_instance_get() self.compute_api.live_migrate(self.context, instance, False, False, 'hostname') self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {'migrate_live': param}) self.assertEqual(202, res.status_int) def test_migrate_live_enabled(self): param = {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False} self._test_migrate_live_succeeded(param) def test_migrate_live_enabled_with_string_param(self): param = {'host': 'hostname', 'block_migration': "False", 'disk_over_commit': "False"} self._test_migrate_live_succeeded(param) def test_migrate_live_missing_dict_param(self): res = self._make_request('/servers/FAKE/action', {'migrate_live': {'dummy': 'hostname', 'block_migration': False, 'disk_over_commit': False}}) self.assertEqual(400, res.status_int) def test_migrate_live_with_invalid_block_migration(self): res = self._make_request('/servers/FAKE/action', {'migrate_live': {'host': 'hostname', 'block_migration': "foo", 'disk_over_commit': False}}) self.assertEqual(400, res.status_int) def test_migrate_live_with_invalid_disk_over_commit(self): res = self._make_request('/servers/FAKE/action', {'migrate_live': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': "foo"}}) self.assertEqual(400, res.status_int) def _test_migrate_live_failed_with_exception(self, fake_exc, uuid=None): self.mox.StubOutWithMock(self.compute_api, 'live_migrate') instance = self._stub_instance_get(uuid=uuid) self.compute_api.live_migrate(self.context, instance, False, False, 'hostname').AndRaise(fake_exc) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {'migrate_live': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}}) self.assertEqual(400, res.status_int) self.assertIn(unicode(fake_exc), res.body) def test_migrate_live_compute_service_unavailable(self): self._test_migrate_live_failed_with_exception( exception.ComputeServiceUnavailable(host='host')) def test_migrate_live_invalid_hypervisor_type(self): self._test_migrate_live_failed_with_exception( exception.InvalidHypervisorType()) def test_migrate_live_unable_to_migrate_to_self(self): uuid = uuidutils.generate_uuid() self._test_migrate_live_failed_with_exception( exception.UnableToMigrateToSelf(instance_id=uuid, host='host'), uuid=uuid) def test_migrate_live_destination_hypervisor_too_old(self): self._test_migrate_live_failed_with_exception( exception.DestinationHypervisorTooOld()) def test_migrate_live_no_valid_host(self): self._test_migrate_live_failed_with_exception( exception.NoValidHost(reason='')) def test_migrate_live_invalid_local_storage(self): self._test_migrate_live_failed_with_exception( exception.InvalidLocalStorage(path='', reason='')) def test_migrate_live_invalid_shared_storage(self): self._test_migrate_live_failed_with_exception( exception.InvalidSharedStorage(path='', reason='')) def test_migrate_live_pre_check_error(self): self._test_migrate_live_failed_with_exception( exception.MigrationPreCheckError(reason='')) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_flavor_manage.py0000664000175400017540000003013412323721477030457 0ustar jenkinsjenkins00000000000000# Copyright 2011 Andrew Bogott for the Wikimedia Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import webob from nova.api.openstack.compute.plugins.v3 import flavor_access from nova.api.openstack.compute.plugins.v3 import flavor_manage from nova.api.openstack.compute.plugins.v3 import flavor_rxtx from nova.compute import flavors from nova import context from nova import db from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_flavor_by_flavor_id(flavorid, ctxt=None, read_deleted='yes'): if flavorid == 'failtest': raise exception.FlavorNotFound("Not found!") elif not str(flavorid) == '1234': raise Exception("This test expects flavorid 1234, not %s" % flavorid) if read_deleted != 'no': raise test.TestingException("Should not be reading deleted") return { 'root_gb': 1, 'ephemeral_gb': 1, 'name': u'frob', 'deleted': False, 'created_at': datetime.datetime(2012, 1, 19, 18, 49, 30, 877329), 'updated_at': None, 'memory_mb': 256, 'vcpus': 1, 'flavorid': flavorid, 'swap': 0, 'rxtx_factor': 1.0, 'extra_specs': {}, 'deleted_at': None, 'vcpu_weight': None, 'id': 7, 'is_public': True, 'disabled': False, } def fake_destroy(flavorname): pass def fake_create(context, kwargs): flavorid = kwargs.get('flavorid') if flavorid is None: flavorid = 1234 newflavor = {'flavorid': flavorid} newflavor["name"] = kwargs.get('name') newflavor["memory_mb"] = int(kwargs.get('memory_mb')) newflavor["vcpus"] = int(kwargs.get('vcpus')) newflavor["root_gb"] = int(kwargs.get('root_gb')) newflavor["ephemeral_gb"] = int(kwargs.get('ephemeral_gb')) newflavor["swap"] = kwargs.get('swap') newflavor["rxtx_factor"] = float(kwargs.get('rxtx_factor')) newflavor["is_public"] = bool(kwargs.get('is_public')) newflavor["disabled"] = bool(kwargs.get('disabled')) return newflavor class FlavorManageTest(test.NoDBTestCase): def setUp(self): super(FlavorManageTest, self).setUp() self.stubs.Set(flavors, "get_flavor_by_flavor_id", fake_get_flavor_by_flavor_id) self.stubs.Set(flavors, "destroy", fake_destroy) self.stubs.Set(db, "flavor_create", fake_create) self.controller = flavor_manage.FlavorManageController() self.app = fakes.wsgi_app_v3(init_only=('servers', 'flavors', 'flavor-manage', 'os-flavor-rxtx', 'flavor-access')) self.expected_flavor = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "ephemeral": 1, "id": unicode('1234'), "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, "flavor-access:is_public": True, } } def test_delete(self): req = fakes.HTTPRequestV3.blank('/flavors/1234') res = self.controller._delete(req, 1234) self.assertEqual(res.status_int, 204) # subsequent delete should fail self.assertRaises(webob.exc.HTTPNotFound, self.controller._delete, req, "failtest") def test_create(self): expected = self.expected_flavor url = '/v3/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) def test_create_public_default(self): flavor = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "ephemeral": 1, "id": 1234, "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, } } expected = self.expected_flavor url = '/v3/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(flavor) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) def test_create_without_flavorid(self): expected = self.expected_flavor del expected['flavor']['id'] url = '/v3/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) def test_flavor_exists_exception_returns_409(self): expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "ephemeral": 1, "id": 1235, "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, "flavor-access:is_public": True, } } def fake_create(name, memory_mb, vcpus, root_gb, ephemeral_gb, flavorid, swap, rxtx_factor, is_public): raise exception.FlavorExists(name=name) self.stubs.Set(flavors, "create", fake_create) url = '/v3/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_int, 409) def test_invalid_memory_mb(self): """Check negative and decimal number can't be accepted.""" self.stubs.UnsetAll() self.assertRaises(exception.InvalidInput, flavors.create, "abc", -512, 2, 1, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcd", 512.2, 2, 1, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcde", None, 2, 1, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcdef", 512, 2, None, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcdef", "test_memory_mb", 2, None, 1, 1234, 512, 1, True) def test_all_whitespace_flavor_names_are_rejected(self): request_dict = { "flavor": { "name": " ", 'id': "1234", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, "os-flavor-access:is_public": True, } } url = '/v3/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(request_dict) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_flavor_name_with_leading_trailing_whitespaces(self): request_dict = { "flavor": { "name": " test ", 'id': "1234", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, "os-flavor-access:is_public": True, } } url = '/v3/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(request_dict) res = req.get_response(self.app) self.assertEqual(res.status_code, 201) body = jsonutils.loads(res.body) self.assertEqual("test", body["flavor"]["name"]) class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} class PrivateFlavorManageTest(test.TestCase): def setUp(self): super(PrivateFlavorManageTest, self).setUp() # self.stubs.Set(flavors, # "get_flavor_by_flavor_id", # fake_get_flavor_by_flavor_id) # self.stubs.Set(flavors, "destroy", fake_destroy) # self.stubs.Set(flavors, "create", fake_create) self.controller = flavor_manage.FlavorManageController() self.flavor_access_controller = flavor_access.FlavorAccessController() self.app = fakes.wsgi_app(init_only=('flavors',)) def test_create_private_flavor_should_create_flavor_access(self): req_body = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, "flavor-access:is_public": False } } expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1 } } ctxt = context.RequestContext('fake', 'fake', is_admin=True, auth_token=True) url = '/os-flavor-manage' req = fakes.HTTPRequestV3.blank(url, use_admin_context=True) body = self.controller._create(req, req_body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) flavor_access_body = self.flavor_access_controller.index( FakeRequest(), body["flavor"]["id"]) expected_flavor_access_body = { "tenant_id": "%s" % ctxt.project_id, "flavor_id": "%s" % body["flavor"]["id"] } self.assertTrue(expected_flavor_access_body in flavor_access_body["flavor_access"]) def test_create_public_flavor_should_not_create_flavor_access(self): req_body = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "%s:rxtx_factor" % flavor_rxtx.ALIAS: 1, "flavor-access:is_public": True } } expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1 } } self.mox.StubOutWithMock(flavors, "add_flavor_access") self.mox.ReplayAll() url = '/os-flavor-manage' req = fakes.HTTPRequestV3.blank(url, use_admin_context=True) body = self.controller._create(req, req_body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_servers.py0000664000175400017540000037123012323721477027354 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 import datetime import uuid import iso8601 import mox from oslo.config import cfg import six.moves.urllib.parse as urlparse import testtools import webob from nova.api.openstack import compute from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import access_ips from nova.api.openstack.compute.plugins.v3 import ips from nova.api.openstack.compute.plugins.v3 import keypairs from nova.api.openstack.compute.plugins.v3 import servers from nova.api.openstack.compute import views from nova.api.openstack import extensions from nova.compute import api as compute_api from nova.compute import flavors from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.image import glance from nova.network import manager from nova.network.neutronv2 import api as neutron_api from nova.objects import instance as instance_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import policy as common_policy from nova.openstack.common import timeutils from nova import policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests import fake_network from nova.tests.image import fake from nova.tests import matchers from nova import utils as nova_utils CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') FAKE_UUID = fakes.FAKE_UUID INSTANCE_IDS = {FAKE_UUID: 1} FIELDS = instance_obj.INSTANCE_DEFAULT_FIELDS def fake_gen_uuid(): return FAKE_UUID def return_servers_empty(context, *args, **kwargs): return [] def instance_update_and_get_original(context, instance_uuid, values, update_cells=True, columns_to_join=None, ): inst = fakes.stub_instance(INSTANCE_IDS.get(instance_uuid), name=values.get('display_name')) inst = dict(inst, **values) return (inst, inst) def instance_update(context, instance_uuid, values, update_cells=True): inst = fakes.stub_instance(INSTANCE_IDS.get(instance_uuid), name=values.get('display_name')) inst = dict(inst, **values) return inst def fake_compute_api(cls, req, id): return True def fake_start_stop_not_ready(self, context, instance): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_start_stop_invalid_state(self, context, instance): raise exception.InstanceInvalidState( instance_uuid=instance['uuid'], attr='fake_attr', method='fake_method', state='fake_state') def fake_instance_get_by_uuid_not_found(context, uuid, columns_to_join, use_slave=False): raise exception.InstanceNotFound(instance_id=uuid) class MockSetAdminPassword(object): def __init__(self): self.instance_id = None self.password = None def __call__(self, context, instance_id, password): self.instance_id = instance_id self.password = password class Base64ValidationTest(test.TestCase): def setUp(self): super(Base64ValidationTest, self).setUp() ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) def test_decode_base64(self): value = "A random string" result = self.controller._decode_base64(base64.b64encode(value)) self.assertEqual(result, value) def test_decode_base64_binary(self): value = "\x00\x12\x75\x99" result = self.controller._decode_base64(base64.b64encode(value)) self.assertEqual(result, value) def test_decode_base64_whitespace(self): value = "A random string" encoded = base64.b64encode(value) white = "\n \n%s\t%s\n" % (encoded[:2], encoded[2:]) result = self.controller._decode_base64(white) self.assertEqual(result, value) def test_decode_base64_invalid(self): invalid = "A random string" result = self.controller._decode_base64(invalid) self.assertIsNone(result) def test_decode_base64_illegal_bytes(self): value = "A random string" encoded = base64.b64encode(value) white = ">\x01%s*%s()" % (encoded[:2], encoded[2:]) result = self.controller._decode_base64(white) self.assertIsNone(result) class NeutronV2Subclass(neutron_api.API): """Used to ensure that API handles subclasses properly.""" pass class ControllerTest(test.TestCase): def setUp(self): super(ControllerTest, self).setUp() self.flags(verbose=True, use_ipv6=False) fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) return_server = fakes.fake_instance_get() return_servers = fakes.fake_instance_get_all_by_filters() self.stubs.Set(db, 'instance_get_all_by_filters', return_servers) self.stubs.Set(db, 'instance_get_by_uuid', return_server) self.stubs.Set(db, 'instance_update_and_get_original', instance_update_and_get_original) ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) self.ips_controller = ips.IPsController() policy.reset() policy.init() fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) class ServersControllerTest(ControllerTest): def setUp(self): super(ServersControllerTest, self).setUp() CONF.set_override('glance_host', 'localhost') nova_utils.reset_is_neutron() def test_requested_networks_prefix(self): uuid = 'br-00000000-0000-0000-0000-000000000000' requested_networks = [{'uuid': uuid}] res = self.controller._get_requested_networks(requested_networks) self.assertIn((uuid, None), res) def test_requested_networks_neutronv2_enabled_with_port(self): self.flags(network_api_class='nova.network.neutronv2.api.API') port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_requested_networks_neutronv2_enabled_with_network(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' requested_networks = [{'uuid': network}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(network, None, None)]) def test_requested_networks_neutronv2_enabled_with_network_and_port(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_requested_networks_neutronv2_enabled_conflict_on_fixed_ip(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' addr = '10.0.0.1' requested_networks = [{'uuid': network, 'fixed_ip': addr, 'port': port}] self.assertRaises( webob.exc.HTTPBadRequest, self.controller._get_requested_networks, requested_networks) def test_requested_networks_neutronv2_disabled_with_port(self): port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port}] self.assertRaises( webob.exc.HTTPBadRequest, self.controller._get_requested_networks, requested_networks) def test_requested_networks_api_enabled_with_v2_subclass(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_requested_networks_neutronv2_subclass_with_port(self): cls = 'nova.tests.api.openstack.compute.test_servers.NeutronV2Subclass' self.flags(network_api_class=cls) port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_get_server_by_uuid(self): req = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) res_dict = self.controller.show(req, FAKE_UUID) self.assertEqual(res_dict['server']['id'], FAKE_UUID) def test_get_server_joins_pci_devices(self): self.expected_attrs = None def fake_get(_self, *args, **kwargs): self.expected_attrs = kwargs['expected_attrs'] ctxt = context.RequestContext('fake', 'fake') return fake_instance.fake_instance_obj(ctxt) self.stubs.Set(compute_api.API, 'get', fake_get) req = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) self.controller.show(req, FAKE_UUID) self.assertIn('pci_devices', self.expected_attrs) def test_unique_host_id(self): """Create two servers with the same host and different project_ids and check that the host_id's are unique. """ def return_instance_with_host(self, *args, **kwargs): project_id = str(uuid.uuid4()) return fakes.stub_instance(id=1, uuid=FAKE_UUID, project_id=project_id, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_instance_with_host) self.stubs.Set(db, 'instance_get', return_instance_with_host) req = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) server1 = self.controller.show(req, FAKE_UUID) server2 = self.controller.show(req, FAKE_UUID) self.assertNotEqual(server1['server']['host_id'], server2['server']['host_id']) def _get_server_data_dict(self, uuid, image_bookmark, flavor_bookmark, status="ACTIVE", progress=100): return { "server": { "id": uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "progress": progress, "name": "server1", "status": status, "host_id": '', "image": { "id": "10", "links": [ { "rel": "bookmark", "href": image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 6, 'addr': '2001:db8:0:1::1', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'} ] }, "metadata": { "seq": "1", }, "links": [ { "rel": "self", "href": "http://localhost/v3/servers/%s" % uuid, }, { "rel": "bookmark", "href": "http://localhost/servers/%s" % uuid, }, ], } } def test_get_server_by_id(self): self.flags(use_ipv6=True) image_bookmark = "http://localhost:9292/images/10" flavor_bookmark = "http://localhost/flavors/1" uuid = FAKE_UUID req = fakes.HTTPRequestV3.blank('/servers/%s' % uuid) res_dict = self.controller.show(req, uuid) expected_server = self._get_server_data_dict(uuid, image_bookmark, flavor_bookmark, status="BUILD", progress=0) self.assertThat(res_dict, matchers.DictMatches(expected_server)) def test_get_server_with_active_status_by_id(self): image_bookmark = "http://localhost:9292/images/10" flavor_bookmark = "http://localhost/flavors/1" new_return_server = fakes.fake_instance_get( vm_state=vm_states.ACTIVE, progress=100) self.stubs.Set(db, 'instance_get_by_uuid', new_return_server) uuid = FAKE_UUID req = fakes.HTTPRequestV3.blank('/servers/%s' % uuid) res_dict = self.controller.show(req, uuid) expected_server = self._get_server_data_dict(uuid, image_bookmark, flavor_bookmark) self.assertThat(res_dict, matchers.DictMatches(expected_server)) def test_get_server_with_id_image_ref_by_id(self): image_ref = "10" image_bookmark = "http://localhost:9292/images/10" flavor_id = "1" flavor_bookmark = "http://localhost/flavors/1" new_return_server = fakes.fake_instance_get( vm_state=vm_states.ACTIVE, image_ref=image_ref, flavor_id=flavor_id, progress=100) self.stubs.Set(db, 'instance_get_by_uuid', new_return_server) uuid = FAKE_UUID req = fakes.HTTPRequestV3.blank('/servers/%s' % uuid) res_dict = self.controller.show(req, uuid) expected_server = self._get_server_data_dict(uuid, image_bookmark, flavor_bookmark) self.assertThat(res_dict, matchers.DictMatches(expected_server)) def test_get_server_addresses_from_cache(self): pub0 = ('172.19.0.1', '172.19.0.2',) pub1 = ('1.2.3.4',) pub2 = ('b33f::fdee:ddff:fecc:bbaa',) priv0 = ('192.168.0.3', '192.168.0.4',) def _ip(ip): return {'address': ip, 'type': 'fixed'} nw_cache = [ {'address': 'aa:aa:aa:aa:aa:aa', 'id': 1, 'network': {'bridge': 'br0', 'id': 1, 'label': 'public', 'subnets': [{'cidr': '172.19.0.0/24', 'ips': [_ip(ip) for ip in pub0]}, {'cidr': '1.2.3.0/16', 'ips': [_ip(ip) for ip in pub1]}, {'cidr': 'b33f::/64', 'ips': [_ip(ip) for ip in pub2]}]}}, {'address': 'bb:bb:bb:bb:bb:bb', 'id': 2, 'network': {'bridge': 'br1', 'id': 2, 'label': 'private', 'subnets': [{'cidr': '192.168.0.0/24', 'ips': [_ip(ip) for ip in priv0]}]}}] return_server = fakes.fake_instance_get(nw_cache=nw_cache) self.stubs.Set(db, 'instance_get_by_uuid', return_server) req = fakes.HTTPRequestV3.blank('/servers/%s/ips' % FAKE_UUID) res_dict = self.ips_controller.index(req, FAKE_UUID) expected = { 'addresses': { 'private': [ {'version': 4, 'addr': '192.168.0.3', 'type': 'fixed', 'mac_addr': 'bb:bb:bb:bb:bb:bb'}, {'version': 4, 'addr': '192.168.0.4', 'type': 'fixed', 'mac_addr': 'bb:bb:bb:bb:bb:bb'}, ], 'public': [ {'version': 4, 'addr': '172.19.0.1', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 4, 'addr': '172.19.0.2', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 4, 'addr': '1.2.3.4', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 6, 'addr': 'b33f::fdee:ddff:fecc:bbaa', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, ], }, } self.assertThat(res_dict, matchers.DictMatches(expected)) def test_get_server_addresses_nonexistent_network(self): url = '/v3/servers/%s/ips/network_0' % FAKE_UUID req = fakes.HTTPRequestV3.blank(url) self.assertRaises(webob.exc.HTTPNotFound, self.ips_controller.show, req, FAKE_UUID, 'network_0') def test_get_server_addresses_nonexistent_server(self): def fake_instance_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) server_id = str(uuid.uuid4()) req = fakes.HTTPRequestV3.blank('/servers/%s/ips' % server_id) self.assertRaises(webob.exc.HTTPNotFound, self.ips_controller.index, req, server_id) def test_get_server_list_empty(self): self.stubs.Set(db, 'instance_get_all_by_filters', return_servers_empty) req = fakes.HTTPRequestV3.blank('/servers') res_dict = self.controller.index(req) num_servers = len(res_dict['servers']) self.assertEqual(0, num_servers) def test_get_server_list_with_reservation_id(self): req = fakes.HTTPRequestV3.blank('/servers?reservation_id=foo') res_dict = self.controller.index(req) i = 0 for s in res_dict['servers']: self.assertEqual(s.get('name'), 'server%d' % (i + 1)) i += 1 def test_get_server_list_with_reservation_id_empty(self): req = fakes.HTTPRequestV3.blank('/servers/detail?' 'reservation_id=foo') res_dict = self.controller.detail(req) i = 0 for s in res_dict['servers']: self.assertEqual(s.get('name'), 'server%d' % (i + 1)) i += 1 def test_get_server_list_with_reservation_id_details(self): req = fakes.HTTPRequestV3.blank('/servers/detail?' 'reservation_id=foo') res_dict = self.controller.detail(req) i = 0 for s in res_dict['servers']: self.assertEqual(s.get('name'), 'server%d' % (i + 1)) i += 1 def test_get_server_list(self): req = fakes.HTTPRequestV3.blank('/servers') res_dict = self.controller.index(req) self.assertEqual(len(res_dict['servers']), 5) for i, s in enumerate(res_dict['servers']): self.assertEqual(s['id'], fakes.get_fake_uuid(i)) self.assertEqual(s['name'], 'server%d' % (i + 1)) self.assertIsNone(s.get('image', None)) expected_links = [ { "rel": "self", "href": "http://localhost/v3/servers/%s" % s['id'], }, { "rel": "bookmark", "href": "http://localhost/servers/%s" % s['id'], }, ] self.assertEqual(s['links'], expected_links) def test_get_servers_with_limit(self): req = fakes.HTTPRequestV3.blank('/servers?limit=3') res_dict = self.controller.index(req) servers = res_dict['servers'] self.assertEqual([s['id'] for s in servers], [fakes.get_fake_uuid(i) for i in xrange(len(servers))]) servers_links = res_dict['servers_links'] self.assertEqual(servers_links[0]['rel'], 'next') href_parts = urlparse.urlparse(servers_links[0]['href']) self.assertEqual('/v3/servers', href_parts.path) params = urlparse.parse_qs(href_parts.query) expected_params = {'limit': ['3'], 'marker': [fakes.get_fake_uuid(2)]} self.assertThat(params, matchers.DictMatches(expected_params)) def test_get_servers_with_limit_bad_value(self): req = fakes.HTTPRequestV3.blank('/servers?limit=aaa') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_server_details_empty(self): self.stubs.Set(db, 'instance_get_all_by_filters', return_servers_empty) req = fakes.HTTPRequestV3.blank('/servers/detail') res_dict = self.controller.detail(req) num_servers = len(res_dict['servers']) self.assertEqual(0, num_servers) def test_get_server_details_with_limit(self): req = fakes.HTTPRequestV3.blank('/servers/detail?limit=3') res = self.controller.detail(req) servers = res['servers'] self.assertEqual([s['id'] for s in servers], [fakes.get_fake_uuid(i) for i in xrange(len(servers))]) servers_links = res['servers_links'] self.assertEqual(servers_links[0]['rel'], 'next') href_parts = urlparse.urlparse(servers_links[0]['href']) self.assertEqual('/v3/servers', href_parts.path) params = urlparse.parse_qs(href_parts.query) expected = {'limit': ['3'], 'marker': [fakes.get_fake_uuid(2)]} self.assertThat(params, matchers.DictMatches(expected)) def test_get_server_details_with_limit_bad_value(self): req = fakes.HTTPRequestV3.blank('/servers/detail?limit=aaa') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.detail, req) def test_get_server_details_with_limit_and_other_params(self): req = fakes.HTTPRequestV3.blank('/servers/detail' '?limit=3&blah=2:t') res = self.controller.detail(req) servers = res['servers'] self.assertEqual([s['id'] for s in servers], [fakes.get_fake_uuid(i) for i in xrange(len(servers))]) servers_links = res['servers_links'] self.assertEqual(servers_links[0]['rel'], 'next') href_parts = urlparse.urlparse(servers_links[0]['href']) self.assertEqual('/v3/servers', href_parts.path) params = urlparse.parse_qs(href_parts.query) expected = {'limit': ['3'], 'blah': ['2:t'], 'marker': [fakes.get_fake_uuid(2)]} self.assertThat(params, matchers.DictMatches(expected)) def test_get_servers_with_too_big_limit(self): req = fakes.HTTPRequestV3.blank('/servers?limit=30') res_dict = self.controller.index(req) self.assertNotIn('servers_links', res_dict) def test_get_servers_with_bad_limit(self): req = fakes.HTTPRequestV3.blank('/servers?limit=asdf') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_servers_with_marker(self): url = '/v3/servers?marker=%s' % fakes.get_fake_uuid(2) req = fakes.HTTPRequestV3.blank(url) servers = self.controller.index(req)['servers'] self.assertEqual([s['name'] for s in servers], ["server4", "server5"]) def test_get_servers_with_limit_and_marker(self): url = '/v3/servers?limit=2&marker=%s' % fakes.get_fake_uuid(1) req = fakes.HTTPRequestV3.blank(url) servers = self.controller.index(req)['servers'] self.assertEqual([s['name'] for s in servers], ['server3', 'server4']) def test_get_servers_with_bad_marker(self): req = fakes.HTTPRequestV3.blank('/servers?limit=2&marker=asdf') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_servers_with_bad_option(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?unknownoption=whee') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_image(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('image', search_opts) self.assertEqual(search_opts['image'], '12345') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?image=12345') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_tenant_id_filter_converts_to_project_id_for_admin(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertIsNotNone(filters) self.assertEqual(filters['project_id'], 'newfake') self.assertFalse(filters.get('tenant_id')) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers' '?all_tenants=1&tenant_id=newfake', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_tenant_id_filter_no_admin_context(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertNotEqual(filters, None) self.assertEqual(filters['project_id'], 'fake') return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?tenant_id=newfake') res = self.controller.index(req) self.assertTrue('servers' in res) def test_tenant_id_filter_implies_all_tenants(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertNotEqual(filters, None) # The project_id assertion checks that the project_id # filter is set to that specified in the request url and # not that of the context, verifying that the all_tenants # flag was enabled self.assertEqual(filters['project_id'], 'newfake') self.assertFalse(filters.get('tenant_id')) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?tenant_id=newfake', use_admin_context=True) res = self.controller.index(req) self.assertTrue('servers' in res) def test_all_tenants_param_normal(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertNotIn('project_id', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?all_tenants', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_one(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertNotIn('project_id', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?all_tenants=1', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_zero(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertNotIn('all_tenants', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?all_tenants=0', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_false(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertNotIn('all_tenants', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?all_tenants=false', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_invalid(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, expected_attrs=[]): self.assertNotIn('all_tenants', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?all_tenants=xxx', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_admin_restricted_tenant(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertIsNotNone(filters) self.assertEqual(filters['project_id'], 'fake') return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_pass_policy(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False, expected_attrs=[]): self.assertIsNotNone(filters) self.assertNotIn('project_id', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) rules = { "compute:get_all_tenants": common_policy.parse_rule("project_id:fake"), "compute:get_all": common_policy.parse_rule("project_id:fake"), } common_policy.set_rules(common_policy.Rules(rules)) req = fakes.HTTPRequestV3.blank('/servers?all_tenants=1') res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_fail_policy(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None): self.assertIsNotNone(filters) return [fakes.stub_instance(100)] rules = { "compute:get_all_tenants": common_policy.parse_rule("project_id:non_fake"), "compute:get_all": common_policy.parse_rule("project_id:fake"), } common_policy.set_rules(common_policy.Rules(rules)) self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?all_tenants=1') self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, req) def test_get_servers_allows_flavor(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('flavor', search_opts) # flavor is an integer ID self.assertEqual(search_opts['flavor'], '12345') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?flavor=12345') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_with_bad_flavor(self): req = fakes.HTTPRequestV3.blank('/servers?flavor=abcde') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 0) def test_get_server_details_with_bad_flavor(self): req = fakes.HTTPRequestV3.blank('/servers?flavor=abcde') servers = self.controller.detail(req)['servers'] self.assertThat(servers, testtools.matchers.HasLength(0)) def test_get_servers_allows_status(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('vm_state', search_opts) self.assertEqual(search_opts['vm_state'], [vm_states.ACTIVE]) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?status=active') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_task_status(self): server_uuid = str(uuid.uuid4()) task_state = task_states.REBOOTING def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('task_state', search_opts) self.assertEqual([task_states.REBOOT_PENDING, task_states.REBOOT_STARTED, task_states.REBOOTING], search_opts['task_state']) db_list = [fakes.stub_instance(100, uuid=server_uuid, task_state=task_state)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?status=reboot') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_resize_status(self): # Test when resize status, it maps list of vm states. server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIn('vm_state', search_opts) self.assertEqual(search_opts['vm_state'], [vm_states.ACTIVE, vm_states.STOPPED]) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?status=resize') servers = self.controller.detail(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_invalid_status(self): # Test getting servers by invalid status. req = fakes.HTTPRequestV3.blank('/servers?status=baloney', use_admin_context=False) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 0) def test_get_servers_deleted_status_as_user(self): req = fakes.HTTPRequestV3.blank('/servers?status=deleted', use_admin_context=False) self.assertRaises(webob.exc.HTTPForbidden, self.controller.detail, req) def test_get_servers_deleted_status_as_admin(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIn('vm_state', search_opts) self.assertEqual(search_opts['vm_state'], ['deleted']) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?status=deleted', use_admin_context=True) servers = self.controller.detail(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_name(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('name', search_opts) self.assertEqual(search_opts['name'], 'whee.*') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?name=whee.*') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_changes_since(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('changes-since', search_opts) changes_since = datetime.datetime(2011, 1, 24, 17, 8, 1, tzinfo=iso8601.iso8601.UTC) self.assertEqual(search_opts['changes-since'], changes_since) self.assertNotIn('deleted', search_opts) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) params = 'changes_since=2011-01-24T17:08:01Z' req = fakes.HTTPRequestV3.blank('/servers?%s' % params) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_changes_since_bad_value(self): params = 'changes_since=asdf' req = fakes.HTTPRequestV3.blank('/servers?%s' % params) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_servers_admin_filters_as_user(self): """Test getting servers by admin-only or unknown options when context is not admin. Make sure the admin and unknown options are stripped before they get to compute_api.get_all() """ server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) # Allowed by user self.assertIn('name', search_opts) self.assertIn('ip', search_opts) # OSAPI converts status to vm_state self.assertIn('vm_state', search_opts) # Allowed only by admins with admin API on self.assertNotIn('unknown_option', search_opts) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) query_str = "name=foo&ip=10.*&status=active&unknown_option=meow" req = fakes.HTTPRequest.blank('/servers?%s' % query_str) res = self.controller.index(req) servers = res['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_admin_options_as_admin(self): """Test getting servers by admin-only or unknown options when context is admin. All options should be passed """ server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) # Allowed by user self.assertIn('name', search_opts) # OSAPI converts status to vm_state self.assertIn('vm_state', search_opts) # Allowed only by admins with admin API on self.assertIn('ip', search_opts) self.assertIn('unknown_option', search_opts) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) query_str = "name=foo&ip=10.*&status=active&unknown_option=meow" req = fakes.HTTPRequestV3.blank('/servers?%s' % query_str, use_admin_context=True) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_ip(self): """Test getting servers by ip.""" server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('ip', search_opts) self.assertEqual(search_opts['ip'], '10\..*') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?ip=10\..*') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_admin_allows_ip6(self): """Test getting servers by ip6 with admin_api enabled and admin context """ server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.assertIsNotNone(search_opts) self.assertIn('ip6', search_opts) self.assertEqual(search_opts['ip6'], 'ffff.*') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers?ip6=ffff.*', use_admin_context=True) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_all_server_details(self): expected_flavor = { "id": "1", "links": [ { "rel": "bookmark", "href": 'http://localhost/flavors/1', }, ], } expected_image = { "id": "10", "links": [ { "rel": "bookmark", "href": 'http://localhost:9292/images/10', }, ], } req = fakes.HTTPRequestV3.blank('/servers/detail') res_dict = self.controller.detail(req) for i, s in enumerate(res_dict['servers']): self.assertEqual(s['id'], fakes.get_fake_uuid(i)) self.assertEqual(s['host_id'], '') self.assertEqual(s['name'], 'server%d' % (i + 1)) self.assertEqual(s['image'], expected_image) self.assertEqual(s['flavor'], expected_flavor) self.assertEqual(s['status'], 'BUILD') self.assertEqual(s['metadata']['seq'], str(i + 1)) def test_get_all_server_details_with_host(self): """We want to make sure that if two instances are on the same host, then they return the same host_id. If two instances are on different hosts, they should return different host_ids. In this test, there are 5 instances - 2 on one host and 3 on another. """ def return_servers_with_host(context, *args, **kwargs): return [fakes.stub_instance(i + 1, 'fake', 'fake', host=i % 2, uuid=fakes.get_fake_uuid(i)) for i in xrange(5)] self.stubs.Set(db, 'instance_get_all_by_filters', return_servers_with_host) req = fakes.HTTPRequestV3.blank('/servers/detail') res_dict = self.controller.detail(req) server_list = res_dict['servers'] host_ids = [server_list[0]['host_id'], server_list[1]['host_id']] self.assertTrue(host_ids[0] and host_ids[1]) self.assertNotEqual(host_ids[0], host_ids[1]) for i, s in enumerate(server_list): self.assertEqual(s['id'], fakes.get_fake_uuid(i)) self.assertEqual(s['host_id'], host_ids[i % 2]) self.assertEqual(s['name'], 'server%d' % (i + 1)) def test_get_servers_joins_pci_devices(self): self.expected_attrs = None def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False, expected_attrs=[]): self.expected_attrs = expected_attrs return [] self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequestV3.blank('/servers', use_admin_context=True) servers = self.controller.index(req)['servers'] self.assertIn('pci_devices', self.expected_attrs) class ServersControllerDeleteTest(ControllerTest): def setUp(self): super(ServersControllerDeleteTest, self).setUp() self.server_delete_called = False def instance_destroy_mock(*args, **kwargs): self.server_delete_called = True deleted_at = timeutils.utcnow() return fake_instance.fake_db_instance(deleted_at=deleted_at) self.stubs.Set(db, 'instance_destroy', instance_destroy_mock) def _create_delete_request(self, uuid): fakes.stub_out_instance_quota(self.stubs, 0, 10) req = fakes.HTTPRequestV3.blank('/servers/%s' % uuid) req.method = 'DELETE' return req def _delete_server_instance(self, uuid=FAKE_UUID): req = self._create_delete_request(uuid) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) self.controller.delete(req, uuid) def test_delete_server_instance(self): self._delete_server_instance() self.assertTrue(self.server_delete_called) def test_delete_server_instance_not_found(self): self.assertRaises(webob.exc.HTTPNotFound, self._delete_server_instance, uuid='non-existent-uuid') def test_delete_server_instance_while_building(self): req = self._create_delete_request(FAKE_UUID) self.controller.delete(req, FAKE_UUID) self.assertTrue(self.server_delete_called) def test_delete_locked_server(self): req = self._create_delete_request(FAKE_UUID) self.stubs.Set(compute_api.API, 'soft_delete', fakes.fake_actions_to_locked_server) self.stubs.Set(compute_api.API, 'delete', fakes.fake_actions_to_locked_server) self.assertRaises(webob.exc.HTTPConflict, self.controller.delete, req, FAKE_UUID) def test_delete_server_instance_while_resize(self): req = self._create_delete_request(FAKE_UUID) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.RESIZE_PREP)) self.controller.delete(req, FAKE_UUID) # Delete shoud be allowed in any case, even during resizing, # because it may get stuck. self.assertTrue(self.server_delete_called) def test_delete_server_instance_if_not_launched(self): self.flags(reclaim_instance_interval=3600) req = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) req.method = 'DELETE' self.server_delete_called = False self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(launched_at=None)) def instance_destroy_mock(*args, **kwargs): self.server_delete_called = True deleted_at = timeutils.utcnow() return fake_instance.fake_db_instance(deleted_at=deleted_at) self.stubs.Set(db, 'instance_destroy', instance_destroy_mock) self.controller.delete(req, FAKE_UUID) # delete() should be called for instance which has never been active, # even if reclaim_instance_interval has been set. self.assertEqual(self.server_delete_called, True) class ServersControllerRebuildInstanceTest(ControllerTest): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' image_href = 'http://localhost/v3/fake/images/%s' % image_uuid def setUp(self): super(ServersControllerRebuildInstanceTest, self).setUp() self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) self.body = { 'rebuild': { 'name': 'new_name', 'image_ref': self.image_href, 'metadata': { 'open': 'stack', }, }, } self.req = fakes.HTTPRequest.blank('/fake/servers/a/action') self.req.method = 'POST' self.req.headers["content-type"] = "application/json" def test_rebuild_instance_with_blank_metadata_key(self): self.body['rebuild']['metadata'][''] = 'world' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_with_metadata_key_too_long(self): self.body['rebuild']['metadata'][('a' * 260)] = 'world' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_with_metadata_value_too_long(self): self.body['rebuild']['metadata']['key1'] = ('a' * 260) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_fails_when_min_ram_too_small(self): # make min_ram larger than our instance ram size def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active', properties={'key1': 'value1'}, min_ram="4096", min_disk="10") self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_fails_when_min_disk_too_small(self): # make min_disk larger than our instance disk size def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active', properties={'key1': 'value1'}, min_ram="128", min_disk="100000") self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_image_too_large(self): # make image size larger than our instance disk size size = str(1000 * (1024 ** 3)) def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active', size=size) self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_name_all_blank(self): def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active') self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.body['rebuild']['name'] = ' ' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_rebuild_instance_with_deleted_image(self): def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='DELETED') self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, body=self.body) def test_start(self): self.mox.StubOutWithMock(compute_api.API, 'start') compute_api.API.start(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(start="") self.controller._start_server(req, FAKE_UUID, body) def test_start_policy_failed(self): rules = { "compute:v3:servers:start": common_policy.parse_rule("project_id:non_fake") } common_policy.set_rules(common_policy.Rules(rules)) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(start="") exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._start_server, req, FAKE_UUID, body) self.assertIn("compute:v3:servers:start", exc.format_message()) def test_start_not_ready(self): self.stubs.Set(compute_api.API, 'start', fake_start_stop_not_ready) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._start_server, req, FAKE_UUID, body) def test_start_locked_server(self): self.stubs.Set(compute_api.API, 'start', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._start_server, req, FAKE_UUID, body) def test_start_invalid(self): self.stubs.Set(compute_api.API, 'start', fake_start_stop_invalid_state) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._start_server, req, FAKE_UUID, body) def test_stop(self): self.mox.StubOutWithMock(compute_api.API, 'stop') compute_api.API.stop(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(stop="") self.controller._stop_server(req, FAKE_UUID, body) def test_stop_policy_failed(self): rules = { "compute:v3:servers:stop": common_policy.parse_rule("project_id:non_fake") } common_policy.set_rules(common_policy.Rules(rules)) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(stop='') exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._stop_server, req, FAKE_UUID, body) self.assertIn("compute:v3:servers:stop", exc.format_message()) def test_stop_not_ready(self): self.stubs.Set(compute_api.API, 'stop', fake_start_stop_not_ready) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(stop="") self.assertRaises(webob.exc.HTTPConflict, self.controller._stop_server, req, FAKE_UUID, body) def test_stop_locked_server(self): self.stubs.Set(compute_api.API, 'stop', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(stop="") self.assertRaises(webob.exc.HTTPConflict, self.controller._stop_server, req, FAKE_UUID, body) def test_stop_invalid_state(self): self.stubs.Set(compute_api.API, 'stop', fake_start_stop_invalid_state) req = fakes.HTTPRequestV3.blank('/servers/%s/action' % FAKE_UUID) body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._stop_server, req, FAKE_UUID, body) def test_start_with_bogus_id(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid_not_found) req = fakes.HTTPRequestV3.blank('/servers/test_inst/action') body = dict(start="") self.assertRaises(webob.exc.HTTPNotFound, self.controller._start_server, req, 'test_inst', body) def test_stop_with_bogus_id(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid_not_found) req = fakes.HTTPRequestV3.blank('/servers/test_inst/action') body = dict(stop="") self.assertRaises(webob.exc.HTTPNotFound, self.controller._stop_server, req, 'test_inst', body) class ServersControllerUpdateTest(ControllerTest): def _get_request(self, body=None, options=None): if options: self.stubs.Set(db, 'instance_get', fakes.fake_instance_get(**options)) req = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) req.method = 'PUT' req.content_type = 'application/json' req.body = jsonutils.dumps(body) return req def test_update_server_all_attributes(self): body = {'server': { 'name': 'server_test', }} req = self._get_request(body, {'name': 'server_test'}) res_dict = self.controller.update(req, FAKE_UUID, body=body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') def test_update_server_name(self): body = {'server': {'name': 'server_test'}} req = self._get_request(body, {'name': 'server_test'}) res_dict = self.controller.update(req, FAKE_UUID, body=body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') def test_update_server_name_too_long(self): body = {'server': {'name': 'x' * 256}} req = self._get_request(body, {'name': 'server_test'}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body=body) def test_update_server_name_all_blank_spaces(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get(name='server_test')) req = fakes.HTTPRequest.blank('/v3/servers/%s' % FAKE_UUID) req.method = 'PUT' req.content_type = 'application/json' body = {'server': {'name': ' ' * 64}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body=body) def test_update_server_adminPass_ignored(self): inst_dict = dict(name='server_test', adminPass='bacon') body = dict(server=inst_dict) def server_update(context, id, params): filtered_dict = { 'display_name': 'server_test', } self.assertEqual(params, filtered_dict) filtered_dict['uuid'] = id return filtered_dict self.stubs.Set(db, 'instance_update', server_update) # FIXME (comstud) # self.stubs.Set(db, 'instance_get', # return_server_with_attributes(name='server_test')) req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) req.method = 'PUT' req.content_type = "application/json" req.body = jsonutils.dumps(body) res_dict = self.controller.update(req, FAKE_UUID, body=body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') def test_update_server_not_found(self): def fake_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute_api.API, 'get', fake_get) body = {'server': {'name': 'server_test'}} req = self._get_request(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, FAKE_UUID, body=body) def test_update_server_not_found_on_update(self): def fake_update(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(db, 'instance_update_and_get_original', fake_update) body = {'server': {'name': 'server_test'}} req = self._get_request(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, FAKE_UUID, body=body) def test_update_server_policy_fail(self): rule = {'compute:update': common_policy.parse_rule('role:admin')} common_policy.set_rules(common_policy.Rules(rule)) body = {'server': {'name': 'server_test'}} req = self._get_request(body, {'name': 'server_test'}) self.assertRaises(exception.PolicyNotAuthorized, self.controller.update, req, FAKE_UUID, body=body) class ServerStatusTest(test.TestCase): def setUp(self): super(ServerStatusTest, self).setUp() fakes.stub_out_nw_api(self.stubs) ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) def _get_with_state(self, vm_state, task_state=None): self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_state, task_state=task_state)) request = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) return self.controller.show(request, FAKE_UUID) def test_active(self): response = self._get_with_state(vm_states.ACTIVE) self.assertEqual(response['server']['status'], 'ACTIVE') def test_reboot(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBOOTING) self.assertEqual(response['server']['status'], 'REBOOT') def test_reboot_hard(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBOOTING_HARD) self.assertEqual(response['server']['status'], 'HARD_REBOOT') def test_reboot_resize_policy_fail(self): def fake_get_server(context, req, id): return fakes.stub_instance(id) self.stubs.Set(self.controller, '_get_server', fake_get_server) rule = {'compute:reboot': common_policy.parse_rule('role:admin')} common_policy.set_rules(common_policy.Rules(rule)) req = fakes.HTTPRequestV3.blank('/servers/1234/action') self.assertRaises(exception.PolicyNotAuthorized, self.controller._action_reboot, req, '1234', {'reboot': {'type': 'HARD'}}) def test_rebuild(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBUILDING) self.assertEqual(response['server']['status'], 'REBUILD') def test_rebuild_error(self): response = self._get_with_state(vm_states.ERROR) self.assertEqual(response['server']['status'], 'ERROR') def test_resize(self): response = self._get_with_state(vm_states.ACTIVE, task_states.RESIZE_PREP) self.assertEqual(response['server']['status'], 'RESIZE') def test_confirm_resize_policy_fail(self): def fake_get_server(context, req, id): return fakes.stub_instance(id) self.stubs.Set(self.controller, '_get_server', fake_get_server) rule = {'compute:confirm_resize': common_policy.parse_rule('role:admin')} common_policy.set_rules(common_policy.Rules(rule)) req = fakes.HTTPRequestV3.blank('/servers/1234/action') self.assertRaises(exception.PolicyNotAuthorized, self.controller._action_confirm_resize, req, '1234', {}) def test_verify_resize(self): response = self._get_with_state(vm_states.RESIZED, None) self.assertEqual(response['server']['status'], 'VERIFY_RESIZE') def test_revert_resize(self): response = self._get_with_state(vm_states.RESIZED, task_states.RESIZE_REVERTING) self.assertEqual(response['server']['status'], 'REVERT_RESIZE') def test_revert_resize_policy_fail(self): def fake_get_server(context, req, id): return fakes.stub_instance(id) self.stubs.Set(self.controller, '_get_server', fake_get_server) rule = {'compute:revert_resize': common_policy.parse_rule('role:admin')} common_policy.set_rules(common_policy.Rules(rule)) req = fakes.HTTPRequestV3.blank('/servers/1234/action') self.assertRaises(exception.PolicyNotAuthorized, self.controller._action_revert_resize, req, '1234', {}) def test_password_update(self): response = self._get_with_state(vm_states.ACTIVE, task_states.UPDATING_PASSWORD) self.assertEqual(response['server']['status'], 'PASSWORD') def test_stopped(self): response = self._get_with_state(vm_states.STOPPED) self.assertEqual(response['server']['status'], 'SHUTOFF') class ServersControllerCreateTest(test.TestCase): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} fakes.stub_out_nw_api(self.stubs) ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "config_drive": None, "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params, update_cells=True): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return inst def server_update_and_get_original( context, instance_uuid, params, update_cells=False, columns_to_join=None): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update_and_get_original) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) self.body = { 'server': { 'name': 'server_test', 'image_ref': self.image_uuid, 'flavor_ref': self.flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, }, } self.bdm = [{'delete_on_termination': 1, 'device_name': 123, 'volume_size': 1, 'volume_id': '11111111-1111-1111-1111-111111111111'}] self.req = fakes.HTTPRequest.blank('/fake/servers') self.req.method = 'POST' self.req.headers["content-type"] = "application/json" def _check_admin_password_len(self, server_dict): """utility function - check server_dict for admin_password length.""" self.assertEqual(CONF.password_length, len(server_dict["admin_password"])) def _check_admin_password_missing(self, server_dict): """utility function - check server_dict for admin_password absence.""" self.assertNotIn("admin_password", server_dict) def _test_create_instance(self, flavor=2): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' self.body['server']['image_ref'] = image_uuid self.body['server']['flavor_ref'] = flavor self.req.body = jsonutils.dumps(self.body) server = self.controller.create(self.req, body=self.body).obj['server'] self._check_admin_password_len(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_private_flavor(self): values = { 'name': 'fake_name', 'memory_mb': 512, 'vcpus': 1, 'root_gb': 10, 'ephemeral_gb': 10, 'flavorid': '1324', 'swap': 0, 'rxtx_factor': 0.5, 'vcpu_weight': 1, 'disabled': False, 'is_public': False, } db.flavor_create(context.get_admin_context(), values) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_instance, flavor=1324) def test_create_server_bad_image_href(self): image_href = 1 self.body['server']['min_count'] = 1 self.body['server']['image_ref'] = image_href, self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) # TODO(cyeoh): bp-v3-api-unittests # This needs to be ported to the os-networks extension tests # def test_create_server_with_invalid_networks_parameter(self): # self.ext_mgr.extensions = {'os-networks': 'fake'} # image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # flavor_ref = 'http://localhost/123/flavors/3' # body = { # 'server': { # 'name': 'server_test', # 'imageRef': image_href, # 'flavorRef': flavor_ref, # 'networks': {'uuid': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'}, # } # } # req = fakes.HTTPRequest.blank('/v2/fake/servers') # req.method = 'POST' # req.body = jsonutils.dumps(body) # req.headers["content-type"] = "application/json" # self.assertRaises(webob.exc.HTTPBadRequest, # self.controller.create, # req, # body) def test_create_server_with_deleted_image(self): # Get the fake image service so we can set the status to deleted (image_service, image_id) = glance.get_remote_image_service( context, '') image_service.update(context, self.image_uuid, {'status': 'DELETED'}) self.addCleanup(image_service.update, context, self.image_uuid, {'status': 'active'}) self.body['server']['flavor_ref'] = 2 self.req.body = jsonutils.dumps(self.body) with testtools.ExpectedException( webob.exc.HTTPBadRequest, 'Image 76fa36fc-c930-4bf3-8c8a-ea2a2420deb6 is not active.'): self.controller.create(self.req, body=self.body) def test_create_server_image_too_large(self): # Get the fake image service so we can set the status to deleted (image_service, image_id) = glance.get_remote_image_service( context, self.image_uuid) image = image_service.show(context, image_id) orig_size = image['size'] new_size = str(1000 * (1024 ** 3)) image_service.update(context, self.image_uuid, {'size': new_size}) self.addCleanup(image_service.update, context, self.image_uuid, {'size': orig_size}) self.body['server']['flavor_ref'] = 2 self.req.body = jsonutils.dumps(self.body) with testtools.ExpectedException( webob.exc.HTTPBadRequest, "Flavor's disk is too small for requested image."): self.controller.create(self.req, body=self.body) def test_create_instance_image_ref_is_bookmark(self): image_href = 'http://localhost/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_image_ref_is_invalid(self): image_uuid = 'this_is_not_a_valid_uuid' image_href = 'http://localhost/images/%s' % image_uuid flavor_ref = 'http://localhost/flavors/3' self.body['server']['image_ref'] = image_href self.body['server']['flavor_ref'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_no_key_pair(self): fakes.stub_out_key_pair_funcs(self.stubs, have_key_pair=False) self._test_create_instance() def _test_create_extra(self, params, no_image=False): self.body['server']['flavor_ref'] = 2 if no_image: self.body['server'].pop('image_ref', None) self.body['server'].update(params) self.req.body = jsonutils.dumps(self.body) self.req.headers["content-type"] = "application/json" self.controller.create(self.req, body=self.body).obj['server'] # TODO(cyeoh): bp-v3-api-unittests # This needs to be ported to the os-keypairs extension tests # def test_create_instance_with_keypairs_enabled(self): # self.ext_mgr.extensions = {'os-keypairs': 'fake'} # key_name = 'green' # # params = {'key_name': key_name} # old_create = compute_api.API.create # # # NOTE(sdague): key pair goes back to the database, # # so we need to stub it out for tests # def key_pair_get(context, user_id, name): # return {'public_key': 'FAKE_KEY', # 'fingerprint': 'FAKE_FINGERPRINT', # 'name': name} # # def create(*args, **kwargs): # self.assertEqual(kwargs['key_name'], key_name) # return old_create(*args, **kwargs) # # self.stubs.Set(db, 'key_pair_get', key_pair_get) # self.stubs.Set(compute_api.API, 'create', create) # self._test_create_extra(params) # # TODO(cyeoh): bp-v3-api-unittests # This needs to be ported to the os-networks extension tests # def test_create_instance_with_networks_enabled(self): # self.ext_mgr.extensions = {'os-networks': 'fake'} # net_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # requested_networks = [{'uuid': net_uuid}] # params = {'networks': requested_networks} # old_create = compute_api.API.create # def create(*args, **kwargs): # result = [('76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', None)] # self.assertEqual(kwargs['requested_networks'], result) # return old_create(*args, **kwargs) # self.stubs.Set(compute_api.API, 'create', create) # self._test_create_extra(params) def test_create_instance_with_port_with_no_fixed_ips(self): port_id = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port_id}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.PortRequiresFixedIP(port_id=port_id) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_network_with_no_subnet(self): network = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.NetworkRequiresSubnet(network_uuid=network) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_non_unique_secgroup_name(self): network = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network}] params = {'networks': requested_networks, 'security_groups': [{'name': 'dup'}, {'name': 'dup'}]} def fake_create(*args, **kwargs): raise exception.NoUniqueMatch("No Unique match found for ...") self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPConflict, self._test_create_extra, params) def test_create_instance_with_networks_disabled_neutronv2(self): nova_utils.reset_is_neutron() self.flags(network_api_class='nova.network.neutronv2.api.API') net_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' requested_networks = [{'uuid': net_uuid}] params = {'networks': requested_networks} old_create = compute_api.API.create def create(*args, **kwargs): result = [('76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', None, None)] self.assertEqual(kwargs['requested_networks'], result) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_networks_disabled(self): net_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' requested_networks = [{'uuid': net_uuid}] params = {'networks': requested_networks} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['requested_networks']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_pass_disabled(self): # test with admin passwords disabled See lp bug 921814 self.flags(enable_instance_password=False) # proper local hrefs must start with 'http://localhost/v3/' self.flags(enable_instance_password=False) image_href = 'http://localhost/v2/fake/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self._check_admin_password_missing(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_name_too_long(self): # proper local hrefs must start with 'http://localhost/v3/' image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['name'] = 'X' * 256 self.body['server']['image_ref'] = image_href self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_name_all_blank_spaces(self): # proper local hrefs must start with 'http://localhost/v2/' image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' image_href = 'http://localhost/v3/images/%s' % image_uuid flavor_ref = 'http://localhost/flavors/3' body = { 'server': { 'name': ' ' * 64, 'imageRef': image_href, 'flavorRef': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, }, } req = fakes.HTTPRequest.blank('/v3/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_instance(self): # proper local hrefs must start with 'http://localhost/v3/' image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self._check_admin_password_len(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_extension_create_exception(self): def fake_keypair_server_create(self, server_dict, create_kwargs): raise KeyError self.stubs.Set(keypairs.Keypairs, 'server_create', fake_keypair_server_create) # proper local hrefs must start with 'http://localhost/v3/' image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' image_href = 'http://localhost/v3/images/%s' % image_uuid flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, }, } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(KeyError, self.controller.create, req, body=body) def test_create_instance_pass_disabled(self): self.flags(enable_instance_password=False) # proper local hrefs must start with 'http://localhost/v3/' image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self._check_admin_password_missing(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_too_much_metadata(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata']['vote'] = 'fiddletown' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, self.req, body=self.body) def test_create_instance_metadata_key_too_long(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata'] = {('a' * 260): '12345'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, self.req, body=self.body) def test_create_instance_metadata_value_too_long(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata'] = {'key1': ('a' * 260)} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, self.req, body=self.body) def test_create_instance_metadata_key_blank(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata'] = {'': 'abcd'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_metadata_not_dict(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata'] = 'string' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_metadata_key_not_string(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata'] = {1: 'test'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_metadata_value_not_string(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['image_ref'] = image_href self.body['server']['metadata'] = {'test': ['a', 'list']} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_user_data_malformed_bad_request(self): params = {'os-user-data:user_data': 'u1234'} self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_invalid_key_name(self): image_href = 'http://localhost/v2/images/2' self.body['server']['image_ref'] = image_href self.body['server']['key_name'] = 'nonexistentkey' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_valid_key_name(self): self.body['server']['key_name'] = 'key' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj self.assertEqual(FAKE_UUID, res["server"]["id"]) self._check_admin_password_len(res["server"]) def test_create_instance_invalid_flavor_href(self): image_href = 'http://localhost/v2/images/2' flavor_ref = 'http://localhost/v2/flavors/asdf' self.body['server']['image_ref'] = image_href self.body['server']['flavor_ref'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_invalid_flavor_id_int(self): image_href = 'http://localhost/v2/images/2' flavor_ref = -1 self.body['server']['image_ref'] = image_href self.body['server']['flavor_ref'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_bad_flavor_href(self): image_href = 'http://localhost/v2/images/2' flavor_ref = 'http://localhost/v2/flavors/17' self.body['server']['image_ref'] = image_href self.body['server']['flavor_ref'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_bad_href(self): image_href = 'asdf' self.body['server']['image_ref'] = image_href self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, body=self.body) def test_create_instance_local_href(self): self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_admin_password(self): self.body['server']['flavor_ref'] = 3 self.body['server']['admin_password'] = 'testpass' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self.assertEqual(server['admin_password'], self.body['server']['admin_password']) def test_create_instance_admin_password_pass_disabled(self): self.flags(enable_instance_password=False) self.body['server']['flavor_ref'] = 3 self.body['server']['admin_password'] = 'testpass' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, body=self.body).obj server = res['server'] self.assertIn('admin_password', self.body['server']) def test_create_instance_admin_password_empty(self): self.body['server']['flavor_ref'] = 3 self.body['server']['admin_password'] = '' self.req.body = jsonutils.dumps(self.body) # The fact that the action doesn't raise is enough validation self.controller.create(self.req, body=self.body) def test_create_location(self): selfhref = 'http://localhost/v2/fake/servers/%s' % FAKE_UUID self.req.body = jsonutils.dumps(self.body) robj = self.controller.create(self.req, body=self.body) self.assertEqual(robj['Location'], selfhref) def _do_test_create_instance_above_quota(self, resource, allowed, quota, expected_msg): fakes.stub_out_instance_quota(self.stubs, allowed, quota, resource) self.body['server']['flavor_ref'] = 3 self.req.body = jsonutils.dumps(self.body) try: self.controller.create(self.req, body=self.body).obj['server'] self.fail('expected quota to be exceeded') except webob.exc.HTTPRequestEntityTooLarge as e: self.assertEqual(e.explanation, expected_msg) def test_create_instance_above_quota_instances(self): msg = _('Quota exceeded for instances: Requested 1, but' ' already used 10 of 10 instances') self._do_test_create_instance_above_quota('instances', 0, 10, msg) def test_create_instance_above_quota_ram(self): msg = _('Quota exceeded for ram: Requested 4096, but' ' already used 8192 of 10240 ram') self._do_test_create_instance_above_quota('ram', 2048, 10 * 1024, msg) def test_create_instance_above_quota_cores(self): msg = _('Quota exceeded for cores: Requested 2, but' ' already used 9 of 10 cores') self._do_test_create_instance_above_quota('cores', 1, 10, msg) def test_create_instance_with_neutronv2_port_in_use(self): network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.PortInUse(port_id=port) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPConflict, self._test_create_extra, params) def test_create_multiple_instance_with_neutronv2_port(self): network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] params = {'networks': requested_networks} self.body['server']['max_count'] = 2 def fake_create(*args, **kwargs): msg = _("Unable to launch multiple instances with" " a single configured port ID. Please launch your" " instance one by one with different ports.") raise exception.MultiplePortsNotApplicable(reason=msg) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_neturonv2_not_found_network(self): network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' requested_networks = [{'uuid': network}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.NetworkNotFound(network_id=network) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_neutronv2_port_not_found(self): network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.PortNotFound(port_id=port) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) class ServersViewBuilderTest(test.TestCase): def setUp(self): super(ServersViewBuilderTest, self).setUp() CONF.set_override('glance_host', 'localhost') self.flags(use_ipv6=True) db_inst = fakes.stub_instance( id=1, image_ref="5", uuid="deadbeef-feed-edee-beef-d0ea7beefedd", display_name="test_server", include_fake_metadata=False) privates = ['172.19.0.1'] publics = ['192.168.0.3'] public6s = ['b33f::fdee:ddff:fecc:bbaa'] def nw_info(*args, **kwargs): return [(None, {'label': 'public', 'ips': [dict(ip=ip) for ip in publics], 'ip6s': [dict(ip=ip) for ip in public6s]}), (None, {'label': 'private', 'ips': [dict(ip=ip) for ip in privates]})] def floaters(*args, **kwargs): return [] fakes.stub_out_nw_api_get_instance_nw_info(self.stubs, nw_info) fakes.stub_out_nw_api_get_floating_ips_by_fixed_address(self.stubs, floaters) self.uuid = db_inst['uuid'] self.view_builder = views.servers.ViewBuilderV3() self.request = fakes.HTTPRequestV3.blank("") self.request.context = context.RequestContext('fake', 'fake') self.instance = fake_instance.fake_instance_obj( self.request.context, expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **db_inst) def test_get_flavor_valid_instance_type(self): flavor_bookmark = "http://localhost/flavors/1" expected = {"id": "1", "links": [{"rel": "bookmark", "href": flavor_bookmark}]} result = self.view_builder._get_flavor(self.request, self.instance) self.assertEqual(result, expected) def test_build_server(self): self_link = "http://localhost/v3/servers/%s" % self.uuid bookmark_link = "http://localhost/servers/%s" % self.uuid expected_server = { "server": { "id": self.uuid, "name": "test_server", "links": [ { "rel": "self", "href": self_link, }, { "rel": "bookmark", "href": bookmark_link, }, ], } } output = self.view_builder.basic(self.request, self.instance) self.assertThat(output, matchers.DictMatches(expected_server)) def test_build_server_with_project_id(self): expected_server = { "server": { "id": self.uuid, "name": "test_server", "links": [ { "rel": "self", "href": "http://localhost/v3/servers/%s" % self.uuid, }, { "rel": "bookmark", "href": "http://localhost/servers/%s" % self.uuid, }, ], } } output = self.view_builder.basic(self.request, self.instance) self.assertThat(output, matchers.DictMatches(expected_server)) def test_build_server_detail(self): image_bookmark = "http://localhost:9292/images/5" flavor_bookmark = "http://localhost/flavors/1" self_link = "http://localhost/v3/servers/%s" % self.uuid bookmark_link = "http://localhost/servers/%s" % self.uuid expected_server = { "server": { "id": self.uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "progress": 0, "name": "test_server", "status": "BUILD", "host_id": '', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 6, 'addr': '2001:db8:0:1::1', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'} ] }, "metadata": {}, "links": [ { "rel": "self", "href": self_link, }, { "rel": "bookmark", "href": bookmark_link, }, ], } } output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(expected_server)) def test_build_server_no_image(self): self.instance["image_ref"] = "" output = self.view_builder.show(self.request, self.instance) self.assertEqual(output['server']['image'], {}) def test_build_server_detail_with_fault(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid) image_bookmark = "http://localhost:9292/images/5" flavor_bookmark = "http://localhost/flavors/1" self_link = "http://localhost/v3/servers/%s" % self.uuid bookmark_link = "http://localhost/servers/%s" % self.uuid expected_server = { "server": { "id": self.uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "name": "test_server", "status": "ERROR", "host_id": '', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 6, 'addr': '2001:db8:0:1::1', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'} ] }, "metadata": {}, "links": [ { "rel": "self", "href": self_link, }, { "rel": "bookmark", "href": bookmark_link, }, ], "fault": { "code": 404, "created": "2010-10-10T12:00:00Z", "message": "HTTPNotFound", "details": "Stock details for test", }, } } self.request.context = context.RequestContext('fake', 'fake') output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(expected_server)) def test_build_server_detail_with_fault_that_has_been_deleted(self): self.instance['deleted'] = 1 self.instance['vm_state'] = vm_states.ERROR fault = fake_instance.fake_fault_obj(self.request.context, self.uuid, code=500, message="No valid host was found") self.instance['fault'] = fault expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "No valid host was found"} self.request.context = context.RequestContext('fake', 'fake') output = self.view_builder.show(self.request, self.instance) # Regardless of vm_state deleted servers sholud be DELETED self.assertEqual("DELETED", output['server']['status']) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_no_details_not_admin(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid, code=500, message='Error') expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "Error"} self.request.context = context.RequestContext('fake', 'fake') output = self.view_builder.show(self.request, self.instance) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_admin(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid, code=500, message='Error') expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "Error", 'details': 'Stock details for test'} self.request.environ['nova.context'].is_admin = True output = self.view_builder.show(self.request, self.instance) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_no_details_admin(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid, code=500, message='Error', details='') expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "Error"} self.request.environ['nova.context'].is_admin = True output = self.view_builder.show(self.request, self.instance) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_but_active(self): self.instance['vm_state'] = vm_states.ACTIVE self.instance['progress'] = 100 self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid) output = self.view_builder.show(self.request, self.instance) self.assertNotIn('fault', output['server']) def test_build_server_detail_active_status(self): #set the power state of the instance to running self.instance['vm_state'] = vm_states.ACTIVE self.instance['progress'] = 100 image_bookmark = "http://localhost:9292/images/5" flavor_bookmark = "http://localhost/flavors/1" self_link = "http://localhost/v3/servers/%s" % self.uuid bookmark_link = "http://localhost/servers/%s" % self.uuid expected_server = { "server": { "id": self.uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "progress": 100, "name": "test_server", "status": "ACTIVE", "host_id": '', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 6, 'addr': '2001:db8:0:1::1', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'} ] }, "metadata": {}, "links": [ { "rel": "self", "href": self_link, }, { "rel": "bookmark", "href": bookmark_link, }, ], } } output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(expected_server)) def test_build_server_detail_with_metadata(self): metadata = [] metadata.append(models.InstanceMetadata(key="Open", value="Stack")) metadata = nova_utils.metadata_to_dict(metadata) self.instance['metadata'] = metadata image_bookmark = "http://localhost:9292/images/5" flavor_bookmark = "http://localhost/flavors/1" self_link = "http://localhost/v3/servers/%s" % self.uuid bookmark_link = "http://localhost/servers/%s" % self.uuid expected_server = { "server": { "id": self.uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "progress": 0, "name": "test_server", "status": "BUILD", "host_id": '', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, {'version': 6, 'addr': '2001:db8:0:1::1', 'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}, ] }, "metadata": {"Open": "Stack"}, "links": [ { "rel": "self", "href": self_link, }, { "rel": "bookmark", "href": bookmark_link, }, ], } } output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(expected_server)) class ServersAllExtensionsTestCase(test.TestCase): """Servers tests using default API router with all extensions enabled. The intent here is to catch cases where extensions end up throwing an exception because of a malformed request before the core API gets a chance to validate the request and return a 422 response. For example, AccessIPsController extends servers.Controller: @wsgi.extends def create(self, req, resp_obj, body): context = req.environ['nova.context'] if authorize(context) and 'server' in resp_obj.obj: resp_obj.attach(xml=AccessIPTemplate()) server = resp_obj.obj['server'] self._extend_server(req, server) we want to ensure that the extension isn't barfing on an invalid body. """ def setUp(self): super(ServersAllExtensionsTestCase, self).setUp() self.app = compute.APIRouterV3() def test_create_missing_server(self): # Test create with malformed body. def fake_create(*args, **kwargs): raise test.TestingException("Should not reach the compute API.") self.stubs.Set(compute_api.API, 'create', fake_create) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.content_type = 'application/json' body = {'foo': {'a': 'b'}} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(400, res.status_int) def test_update_missing_server(self): # Test create with malformed body. def fake_update(*args, **kwargs): raise test.TestingException("Should not reach the compute API.") self.stubs.Set(compute_api.API, 'create', fake_update) req = fakes.HTTPRequestV3.blank('/servers/1') req.method = 'PUT' req.content_type = 'application/json' body = {'foo': {'a': 'b'}} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(400, res.status_int) class ServersInvalidRequestTestCase(test.TestCase): """Tests of places we throw 400 Bad Request from.""" def setUp(self): super(ServersInvalidRequestTestCase, self).setUp() ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) def _invalid_server_create(self, body): req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_server_no_body(self): self._invalid_server_create(body=None) def test_create_server_missing_server(self): body = {'foo': {'a': 'b'}} self._invalid_server_create(body=body) def test_create_server_malformed_entity(self): body = {'server': 'string'} self._invalid_server_create(body=body) def _unprocessable_server_update(self, body): req = fakes.HTTPRequestV3.blank('/servers/%s' % FAKE_UUID) req.method = 'PUT' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body=body) def test_update_server_no_body(self): self._invalid_server_create(body=None) def test_update_server_missing_server(self): body = {'foo': {'a': 'b'}} self._invalid_server_create(body=body) def test_create_update_malformed_entity(self): body = {'server': 'string'} self._invalid_server_create(body=body) class FakeExt(extensions.V3APIExtensionBase): name = "AccessIPs" alias = 'os-access-ips' version = 1 def fake_extension_point(self, *args, **kwargs): pass def get_controller_extensions(self): return [] def get_resources(self): return [] class TestServersExtensionPoint(test.NoDBTestCase): def setUp(self): super(TestServersExtensionPoint, self).setUp() CONF.set_override('extensions_whitelist', ['os-access-ips'], 'osapi_v3') self.stubs.Set(access_ips, 'AccessIPs', FakeExt) def _test_load_extension_point(self, name): setattr(FakeExt, 'server_%s' % name, FakeExt.fake_extension_point) ext_info = plugins.LoadedExtensionInfo() controller = servers.ServersController(extension_info=ext_info) self.assertEqual( 'os-access-ips', list(getattr(controller, '%s_extension_manager' % name))[0].obj.alias) delattr(FakeExt, 'server_%s' % name) def test_load_update_extension_point(self): self._test_load_extension_point('update') def test_load_rebuild_extension_point(self): self._test_load_extension_point('rebuild') def test_load_create_extension_point(self): self._test_load_extension_point('create') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_multiple_create.py0000664000175400017540000004531312323721477031041 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import uuid from oslo.config import cfg import webob from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import multiple_create from nova.api.openstack.compute.plugins.v3 import servers from nova.compute import api as compute_api from nova.compute import flavors from nova import db from nova.network import manager from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests.image import fake CONF = cfg.CONF FAKE_UUID = fakes.FAKE_UUID def fake_gen_uuid(): return FAKE_UUID def return_security_group(context, instance_id, security_group_id): pass class ServersControllerCreateTest(test.TestCase): def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-multiple-create', 'osapi_v3') self.no_mult_create_controller = servers.ServersController( extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "security_groups": inst['security_groups'], }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params, update_cells=True, columns_to_join=None): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) def _test_create_extra(self, params, no_image=False, override_controller=None): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) if no_image: server.pop('image_ref', None) server.update(params) body = dict(server=server) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" if override_controller: server = override_controller.create(req, body=body).obj['server'] else: server = self.controller.create(req, body=body).obj['server'] def test_create_instance_with_multiple_create_disabled(self): ret_res_id = True min_count = 2 max_count = 3 params = { multiple_create.MIN_ATTRIBUTE_NAME: min_count, multiple_create.MAX_ATTRIBUTE_NAME: max_count, } old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('min_count', kwargs) self.assertNotIn('max_count', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra( params, override_controller=self.no_mult_create_controller) def test_multiple_create_with_string_type_min_and_max(self): min_count = '2' max_count = '3' params = { multiple_create.MIN_ATTRIBUTE_NAME: min_count, multiple_create.MAX_ATTRIBUTE_NAME: max_count, } old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsInstance(kwargs['min_count'], int) self.assertIsInstance(kwargs['max_count'], int) self.assertEqual(kwargs['min_count'], 2) self.assertEqual(kwargs['max_count'], 3) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_multiple_create_enabled(self): min_count = 2 max_count = 3 params = { multiple_create.MIN_ATTRIBUTE_NAME: min_count, multiple_create.MAX_ATTRIBUTE_NAME: max_count, } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 2) self.assertEqual(kwargs['max_count'], 3) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_invalid_negative_min(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: -1, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_instance_invalid_negative_max(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MAX_ATTRIBUTE_NAME: -1, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_instance_invalid_min_greater_than_max(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: 4, multiple_create.MAX_ATTRIBUTE_NAME: 2, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_instance_invalid_alpha_min(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: 'abcd', 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_instance_invalid_alpha_max(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MAX_ATTRIBUTE_NAME: 'abcd', 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_multiple_instances(self): """Test creating multiple instances but not asking for reservation_id """ image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: 2, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': {'hello': 'world', 'open': 'stack'}, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body).obj self.assertEqual(FAKE_UUID, res["server"]["id"]) self._check_admin_password_len(res["server"]) def test_create_multiple_instances_pass_disabled(self): """Test creating multiple instances but not asking for reservation_id """ self.flags(enable_instance_password=False) image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: 2, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': {'hello': 'world', 'open': 'stack'}, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body).obj self.assertEqual(FAKE_UUID, res["server"]["id"]) self._check_admin_password_missing(res["server"]) def _check_admin_password_len(self, server_dict): """utility function - check server_dict for admin_password length.""" self.assertEqual(CONF.password_length, len(server_dict["admin_password"])) def _check_admin_password_missing(self, server_dict): """utility function - check server_dict for admin_password absence.""" self.assertNotIn("admin_password", server_dict) def _create_multiple_instances_resv_id_return(self, resv_id_return): """Test creating multiple instances with asking for reservation_id """ image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: 2, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': {'hello': 'world', 'open': 'stack'}, multiple_create.RRID_ATTRIBUTE_NAME: resv_id_return } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body) reservation_id = res.obj['servers_reservation']['reservation_id'] self.assertNotEqual(reservation_id, "") self.assertIsNotNone(reservation_id) self.assertTrue(len(reservation_id) > 1) def test_create_multiple_instances_with_resv_id_return(self): self._create_multiple_instances_resv_id_return(True) def test_create_multiple_instances_with_string_resv_id_return(self): self._create_multiple_instances_resv_id_return("True") def test_create_multiple_instances_with_multiple_volume_bdm(self): """Test that a BadRequest is raised if multiple instances are requested with a list of block device mappings for volumes. """ min_count = 2 bdm = [{'device_name': 'foo1', 'volume_id': 'vol-xxxx'}, {'device_name': 'foo2', 'volume_id': 'vol-yyyy'} ] params = { 'block_device_mapping': bdm, 'min_count': min_count } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 2) self.assertEqual(len(kwargs['block_device_mapping']), 2) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params, no_image=True) def test_create_multiple_instances_with_single_volume_bdm(self): """Test that a BadRequest is raised if multiple instances are requested to boot from a single volume. """ min_count = 2 bdm = [{'device_name': 'foo1', 'volume_id': 'vol-xxxx'}] params = { 'block_device_mapping': bdm, multiple_create.MIN_ATTRIBUTE_NAME: min_count } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 2) self.assertEqual(kwargs['block_device_mapping']['volume_id'], 'vol-xxxx') return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params, no_image=True) def test_create_multiple_instance_with_non_integer_max_count(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MAX_ATTRIBUTE_NAME: 2.5, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': {'hello': 'world', 'open': 'stack'}, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_multiple_instance_with_non_integer_min_count(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' body = { 'server': { multiple_create.MIN_ATTRIBUTE_NAME: 2.5, 'name': 'server_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': {'hello': 'world', 'open': 'stack'}, } } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_remote_consoles.py0000664000175400017540000003631012323721477031060 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_vnc_console(self, _context, _instance, _console_type): return {'url': 'http://fake'} def fake_get_spice_console(self, _context, _instance, _console_type): return {'url': 'http://fake'} def fake_get_rdp_console(self, _context, _instance, _console_type): return {'url': 'http://fake'} def fake_get_vnc_console_invalid_type(self, _context, _instance, _console_type): raise exception.ConsoleTypeInvalid(console_type=_console_type) def fake_get_spice_console_invalid_type(self, _context, _instance, _console_type): raise exception.ConsoleTypeInvalid(console_type=_console_type) def fake_get_rdp_console_invalid_type(self, _context, _instance, _console_type): raise exception.ConsoleTypeInvalid(console_type=_console_type) def fake_get_vnc_console_type_unavailable(self, _context, _instance, _console_type): raise exception.ConsoleTypeUnavailable(console_type=_console_type) def fake_get_spice_console_type_unavailable(self, _context, _instance, _console_type): raise exception.ConsoleTypeUnavailable(console_type=_console_type) def fake_get_rdp_console_type_unavailable(self, _context, _instance, _console_type): raise exception.ConsoleTypeUnavailable(console_type=_console_type) def fake_get_vnc_console_not_ready(self, _context, instance, _console_type): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_get_spice_console_not_ready(self, _context, instance, _console_type): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_get_rdp_console_not_ready(self, _context, instance, _console_type): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_get_vnc_console_not_found(self, _context, instance, _console_type): raise exception.InstanceNotFound(instance_id=instance["uuid"]) def fake_get_spice_console_not_found(self, _context, instance, _console_type): raise exception.InstanceNotFound(instance_id=instance["uuid"]) def fake_get_rdp_console_not_found(self, _context, instance, _console_type): raise exception.InstanceNotFound(instance_id=instance["uuid"]) def fake_get(self, context, instance_uuid, expected_attrs=None, want_objects=False): return {'uuid': instance_uuid} def fake_get_not_found(self, context, instance_uuid, **kwargs): raise exception.InstanceNotFound(instance_id=instance_uuid) class ConsolesExtensionTest(test.NoDBTestCase): def setUp(self): super(ConsolesExtensionTest, self).setUp() self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console) self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console) self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console) self.stubs.Set(compute_api.API, 'get', fake_get) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-remote-consoles')) def test_get_vnc_console(self): body = {'get_vnc_console': {'type': 'novnc'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {u'console': {u'url': u'http://fake', u'type': u'novnc'}}) def test_get_vnc_console_not_ready(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_not_ready) body = {'get_vnc_console': {'type': 'novnc'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 409) def test_get_vnc_console_no_type(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_invalid_type) body = {'get_vnc_console': {}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_vnc_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'get_vnc_console': {'type': 'novnc'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_vnc_console_no_instance_on_console_get(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_not_found) body = {'get_vnc_console': {'type': 'novnc'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_vnc_console_invalid_type(self): body = {'get_vnc_console': {'type': 'invalid'}} self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_invalid_type) req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_vnc_console_type_unavailable(self): body = {'get_vnc_console': {'type': 'unavailable'}} self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_type_unavailable) req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(400, res.status_int) def test_get_vnc_console_not_implemented(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fakes.fake_not_implemented) body = {'get_vnc_console': {'type': 'novnc'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 501) def test_get_spice_console(self): body = {'get_spice_console': {'type': 'spice-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {u'console': {u'url': u'http://fake', u'type': u'spice-html5'}}) def test_get_spice_console_not_implemented(self): self.stubs.Set(compute_api.API, 'get_spice_console', fakes.fake_not_implemented) body = {'get_spice_console': {'type': 'spice-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 501) def test_get_spice_console_not_ready(self): self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_not_ready) body = {'get_spice_console': {'type': 'spice-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 409) def test_get_spice_console_no_type(self): self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_invalid_type) body = {'get_spice_console': {}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_spice_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'get_spice_console': {'type': 'spice-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_spice_console_no_instance_on_console_get(self): self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_not_found) body = {'get_spice_console': {'type': 'spice-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_spice_console_invalid_type(self): body = {'get_spice_console': {'type': 'invalid'}} self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_invalid_type) req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_spice_console_type_unavailable(self): body = {'get_spice_console': {'type': 'unavailable'}} self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_type_unavailable) req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(400, res.status_int) def test_get_rdp_console(self): body = {'get_rdp_console': {'type': 'rdp-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {u'console': {u'url': u'http://fake', u'type': u'rdp-html5'}}) def test_get_rdp_console_not_ready(self): self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_not_ready) body = {'get_rdp_console': {'type': 'rdp-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 409) def test_get_rdp_console_no_type(self): self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_invalid_type) body = {'get_rdp_console': {}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_rdp_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'get_rdp_console': {'type': 'rdp-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_rdp_console_no_instance_on_console_get(self): self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_not_found) body = {'get_rdp_console': {'type': 'rdp-html5'}} req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_rdp_console_invalid_type(self): body = {'get_rdp_console': {'type': 'invalid'}} self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_invalid_type) req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_rdp_console_type_unavailable(self): body = {'get_rdp_console': {'type': 'unavailable'}} self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_type_unavailable) req = webob.Request.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(400, res.status_int) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_hosts.py0000664000175400017540000004124112323721477027017 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import testtools import webob.exc from nova.api.openstack.compute.plugins.v3 import hosts as os_hosts from nova.compute import power_state from nova.compute import vm_states from nova import context as context_maker from nova import db from nova import exception from nova import test from nova.tests import fake_hosts def stub_service_get_all(context, disabled=None): return fake_hosts.SERVICES_LIST def stub_service_get_by_host_and_topic(context, host_name, topic): for service in stub_service_get_all(context): if service['host'] == host_name and service['topic'] == topic: return service def stub_set_host_enabled(context, host_name, enabled): """Simulates three possible behaviours for VM drivers or compute drivers when enabling or disabling a host. 'enabled' means new instances can go to this host 'disabled' means they can't """ results = {True: "enabled", False: "disabled"} if host_name == "notimplemented": # The vm driver for this host doesn't support this feature raise NotImplementedError() elif host_name == "dummydest": # The host does not exist raise exception.ComputeHostNotFound(host=host_name) elif host_name == "host_c2": # Simulate a failure return results[not enabled] elif host_name == "serviceunavailable": raise exception.ComputeServiceUnavailable(host=host_name) else: # Do the right thing return results[enabled] def stub_set_host_maintenance(context, host_name, mode): # We'll simulate success and failure by assuming # that 'host_c1' always succeeds, and 'host_c2' # always fails results = {True: "on_maintenance", False: "off_maintenance"} if host_name == "notimplemented": # The vm driver for this host doesn't support this feature raise NotImplementedError() elif host_name == "dummydest": # The host does not exist raise exception.ComputeHostNotFound(host=host_name) elif host_name == "host_c2": # Simulate a failure return results[not mode] elif host_name == "serviceunavailable": raise exception.ComputeServiceUnavailable(host=host_name) else: # Do the right thing return results[mode] def stub_host_power_action(context, host_name, action): if host_name == "notimplemented": raise NotImplementedError() elif host_name == "dummydest": # The host does not exist raise exception.ComputeHostNotFound(host=host_name) elif host_name == "serviceunavailable": raise exception.ComputeServiceUnavailable(host=host_name) return action def _create_instance(**kwargs): """Create a test instance.""" ctxt = context_maker.get_admin_context() return db.instance_create(ctxt, _create_instance_dict(**kwargs)) def _create_instance_dict(**kwargs): """Create a dictionary for a test instance.""" inst = {} inst['image_ref'] = 'cedef40a-ed67-4d10-800e-17455edce175' inst['reservation_id'] = 'r-fakeres' inst['user_id'] = kwargs.get('user_id', 'admin') inst['project_id'] = kwargs.get('project_id', 'fake') inst['instance_type_id'] = '1' if 'host' in kwargs: inst['host'] = kwargs.get('host') inst['vcpus'] = kwargs.get('vcpus', 1) inst['memory_mb'] = kwargs.get('memory_mb', 20) inst['root_gb'] = kwargs.get('root_gb', 30) inst['ephemeral_gb'] = kwargs.get('ephemeral_gb', 30) inst['vm_state'] = kwargs.get('vm_state', vm_states.ACTIVE) inst['power_state'] = kwargs.get('power_state', power_state.RUNNING) inst['task_state'] = kwargs.get('task_state', None) inst['availability_zone'] = kwargs.get('availability_zone', None) inst['ami_launch_index'] = 0 inst['launched_on'] = kwargs.get('launched_on', 'dummy') return inst class FakeRequest(object): environ = {"nova.context": context_maker.get_admin_context()} GET = {} class FakeRequestWithNovaZone(object): environ = {"nova.context": context_maker.get_admin_context()} GET = {"zone": "nova"} class FakeRequestWithNovaService(object): environ = {"nova.context": context_maker.get_admin_context()} GET = {"service": "compute"} class FakeRequestWithInvalidNovaService(object): environ = {"nova.context": context_maker.get_admin_context()} GET = {"service": "invalid"} class HostTestCase(test.TestCase): """Test Case for hosts.""" def setUp(self): super(HostTestCase, self).setUp() self.controller = os_hosts.HostController() self.hosts_api = self.controller.api self.req = FakeRequest() # Pretend we have fake_hosts.HOST_LIST in the DB self.stubs.Set(db, 'service_get_all', stub_service_get_all) # Only hosts in our fake DB exist self.stubs.Set(db, 'service_get_by_host_and_topic', stub_service_get_by_host_and_topic) # 'host_c1' always succeeds, and 'host_c2' self.stubs.Set(self.hosts_api, 'set_host_enabled', stub_set_host_enabled) # 'host_c1' always succeeds, and 'host_c2' self.stubs.Set(self.hosts_api, 'set_host_maintenance', stub_set_host_maintenance) self.stubs.Set(self.hosts_api, 'host_power_action', stub_host_power_action) def _test_host_update(self, host, key, val, expected_value): body = {'host': {key: val}} result = self.controller.update(self.req, host, body) self.assertEqual(result['host'][key], expected_value) def test_list_hosts(self): """Verify that the compute hosts are returned.""" result = self.controller.index(self.req) self.assertIn('hosts', result) hosts = result['hosts'] self.assertEqual(fake_hosts.HOST_LIST, hosts) def test_list_hosts_with_zone(self): result = self.controller.index(FakeRequestWithNovaZone()) self.assertIn('hosts', result) hosts = result['hosts'] self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts) def test_list_hosts_with_service(self): result = self.controller.index(FakeRequestWithNovaService()) self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, result['hosts']) def test_list_hosts_with_invalid_service(self): result = self.controller.index(FakeRequestWithInvalidNovaService()) self.assertEqual([], result['hosts']) def test_disable_host(self): self._test_host_update('host_c1', 'status', 'disable', 'disabled') self._test_host_update('host_c2', 'status', 'disable', 'enabled') def test_enable_host(self): self._test_host_update('host_c1', 'status', 'enable', 'enabled') self._test_host_update('host_c2', 'status', 'enable', 'disabled') def test_enable_maintenance(self): self._test_host_update('host_c1', 'maintenance_mode', 'enable', 'on_maintenance') def test_disable_maintenance(self): self._test_host_update('host_c1', 'maintenance_mode', 'disable', 'off_maintenance') def _test_host_update_service_unavailable(self, key, val): body = {'host': {key: val}} host = "serviceunavailable" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, host, body) def test_enable_host_service_unavailable(self): self._test_host_update_service_unavailable('status', 'enable') def test_enable_maintenance_service_unavaliable(self): self._test_host_update_service_unavailable('maintenance_mode', 'enable') def _test_host_update_notimpl(self, key, val): def stub_service_get_all_notimpl(self, req): return [{'host': 'notimplemented', 'topic': None, 'availability_zone': None}] self.stubs.Set(db, 'service_get_all', stub_service_get_all_notimpl) body = {"host": {key: val}} self.assertRaises(webob.exc.HTTPNotImplemented, self.controller.update, self.req, 'notimplemented', body=body) def test_disable_host_notimpl(self): self._test_host_update_notimpl('status', 'disable') def test_enable_maintenance_notimpl(self): self._test_host_update_notimpl('maintenance_mode', 'enable') def test_host_startup(self): result = self.controller.startup(self.req, "host_c1") self.assertEqual(result['host']["power_action"], "startup") def test_host_shutdown(self): result = self.controller.shutdown(self.req, "host_c1") self.assertEqual(result['host']["power_action"], "shutdown") def test_host_reboot(self): result = self.controller.reboot(self.req, "host_c1") self.assertEqual(result['host']["power_action"], "reboot") def _test_host_power_action_service_unavailable(self, method): self.assertRaises(webob.exc.HTTPBadRequest, method, self.req, "serviceunavailable") def test_host_startup_service_unavailable(self): self._test_host_power_action_service_unavailable( self.controller.startup) def test_host_shutdown_service_unavailable(self): self._test_host_power_action_service_unavailable( self.controller.shutdown) def test_host_reboot_service_unavailable(self): self._test_host_power_action_service_unavailable( self.controller.reboot) def _test_host_power_action_notimpl(self, method): self.assertRaises(webob.exc.HTTPNotImplemented, method, self.req, "notimplemented") def test_host_startup_notimpl(self): self._test_host_power_action_notimpl(self.controller.startup) def test_host_shutdown_notimpl(self): self._test_host_power_action_notimpl(self.controller.shutdown) def test_host_reboot_notimpl(self): self._test_host_power_action_notimpl(self.controller.reboot) def test_host_status_bad_host(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.update(self.req, dest, body={"host": {'status': 'enable'}}) def test_host_maintenance_bad_host(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.update(self.req, dest, body={"host": { 'maintenance_mode': 'enable'}}) def test_host_power_action_bad_host(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.reboot(self.req, dest) def test_bad_status_value(self): bad_body = {"host": {"status": "bad"}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) bad_body2 = {"host": {"status": "disablabc"}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body2) def test_bad_update_key(self): bad_body = {"host": {"crazy": "bad"}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) def test_bad_update_key_type(self): bad_body = {"host": "abc"} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) bad_body = {"host": None} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) def test_bad_update_empty(self): bad_body = {} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) def test_bad_update_key_and_correct_update_key(self): bad_body = {"host": {"status": "disable", "crazy": "bad"}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) def test_good_update_keys(self): body = {"host": {"status": "disable", "maintenance_mode": "enable"}} result = self.controller.update(self.req, 'host_c1', body) self.assertEqual(result["host"]["host"], "host_c1") self.assertEqual(result["host"]["status"], "disabled") self.assertEqual(result["host"]["maintenance_mode"], "on_maintenance") def test_show_forbidden(self): self.req.environ["nova.context"].is_admin = False dest = 'dummydest' self.assertRaises(exception.PolicyNotAuthorized, self.controller.show, self.req, dest) self.req.environ["nova.context"].is_admin = True def test_show_host_not_exist(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.show(self.req, dest) def _create_compute_service(self): """Create compute-manager(ComputeNode and Service record).""" ctxt = self.req.environ["nova.context"] dic = {'host': 'dummy', 'binary': 'nova-compute', 'topic': 'compute', 'report_count': 0} s_ref = db.service_create(ctxt, dic) dic = {'service_id': s_ref['id'], 'vcpus': 16, 'memory_mb': 32, 'local_gb': 100, 'vcpus_used': 16, 'memory_mb_used': 32, 'local_gb_used': 10, 'hypervisor_type': 'qemu', 'hypervisor_version': 12003, 'cpu_info': '', 'stats': ''} db.compute_node_create(ctxt, dic) return db.service_get(ctxt, s_ref['id']) def test_show_no_project(self): """No instances are running on the given host.""" ctxt = context_maker.get_admin_context() s_ref = self._create_compute_service() result = self.controller.show(self.req, s_ref['host']) proj = ['(total)', '(used_now)', '(used_max)'] column = ['host', 'project', 'cpu', 'memory_mb', 'disk_gb'] self.assertEqual(len(result['host']), 3) for resource in result['host']: self.assertIn(resource['resource']['project'], proj) self.assertEqual(len(resource['resource']), 5) self.assertTrue(set(resource['resource'].keys()) == set(column)) db.service_destroy(ctxt, s_ref['id']) def test_show_works_correctly(self): """show() works correctly as expected.""" ctxt = context_maker.get_admin_context() s_ref = self._create_compute_service() i_ref1 = _create_instance(project_id='p-01', host=s_ref['host']) i_ref2 = _create_instance(project_id='p-02', vcpus=3, host=s_ref['host']) result = self.controller.show(self.req, s_ref['host']) proj = ['(total)', '(used_now)', '(used_max)', 'p-01', 'p-02'] column = ['host', 'project', 'cpu', 'memory_mb', 'disk_gb'] self.assertEqual(len(result['host']), 5) for resource in result['host']: self.assertIn(resource['resource']['project'], proj) self.assertEqual(len(resource['resource']), 5) self.assertTrue(set(resource['resource'].keys()) == set(column)) db.service_destroy(ctxt, s_ref['id']) db.instance_destroy(ctxt, i_ref1['uuid']) db.instance_destroy(ctxt, i_ref2['uuid']) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/admin_only_action_common.py0000664000175400017540000001667612323721510031660 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.compute import vm_states import nova.context from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import test from nova.tests import fake_instance class CommonMixin(object): def setUp(self): super(CommonMixin, self).setUp() self.compute_api = None self.context = nova.context.RequestContext('fake', 'fake') def _make_request(self, url, body): req = webob.Request.blank('/v3' + url) req.method = 'POST' req.body = jsonutils.dumps(body) req.content_type = 'application/json' return req.get_response(self.app) def _stub_instance_get(self, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() instance = fake_instance.fake_instance_obj(self.context, id=1, uuid=uuid, vm_state=vm_states.ACTIVE, task_state=None, launched_at=timeutils.utcnow()) self.compute_api.get(self.context, uuid, expected_attrs=None, want_objects=True).AndReturn(instance) return instance def _stub_instance_get_failure(self, exc_info, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() self.compute_api.get(self.context, uuid, expected_attrs=None, want_objects=True).AndRaise(exc_info) return uuid def _test_non_existing_instance(self, action, body_map=None): uuid = uuidutils.generate_uuid() self._stub_instance_get_failure( exception.InstanceNotFound(instance_id=uuid), uuid=uuid) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % uuid, {action: body_map.get(action)}) self.assertEqual(404, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_action(self, action, body=None, method=None, compute_api_args_map={}): if method is None: method = action instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(self.compute_api, method)(self.context, instance, *args, **kwargs) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {action: body}) self.assertEqual(202, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_invalid_state(self, action, method=None, body_map=None, compute_api_args_map=None): if method is None: method = action if body_map is None: body_map = {} if compute_api_args_map is None: compute_api_args_map = {} instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(self.compute_api, method)(self.context, instance, *args, **kwargs).AndRaise( exception.InstanceInvalidState( attr='vm_state', instance_uuid=instance.uuid, state='foo', method=method)) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {action: body_map.get(action)}) self.assertEqual(409, res.status_int) self.assertIn("Cannot \'%s\' while instance" % action, res.body) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_locked_instance(self, action, method=None, body=None, compute_api_args_map={}): if method is None: method = action instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(self.compute_api, method)(self.context, instance, *args, **kwargs).AndRaise( exception.InstanceIsLocked(instance_uuid=instance.uuid)) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {action: body}) self.assertEqual(409, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() class CommonTests(CommonMixin, test.NoDBTestCase): def _test_actions(self, actions, method_translations={}, body_map={}, args_map={}): for action in actions: method = method_translations.get(action) body = body_map.get(action) self.mox.StubOutWithMock(self.compute_api, method or action) self._test_action(action, method=method, body=body, compute_api_args_map=args_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def _test_actions_with_non_existed_instance(self, actions, body_map={}): for action in actions: self._test_non_existing_instance(action, body_map=body_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def _test_actions_raise_conflict_on_invalid_state( self, actions, method_translations={}, body_map={}, args_map={}): for action in actions: method = method_translations.get(action) self.mox.StubOutWithMock(self.compute_api, method or action) self._test_invalid_state(action, method=method, body_map=body_map, compute_api_args_map=args_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def _test_actions_with_locked_instance(self, actions, method_translations={}, body_map={}, args_map={}): for action in actions: method = method_translations.get(action) body = body_map.get(action) self.mox.StubOutWithMock(self.compute_api, method or action) self._test_locked_instance(action, method=method, body=body, compute_api_args_map=args_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_config_drive.py0000664000175400017540000002470112323721477030317 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import uuid from oslo.config import cfg import webob from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import config_drive from nova.api.openstack.compute.plugins.v3 import servers from nova.compute import api as compute_api from nova.compute import flavors from nova import db from nova.network import manager from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests.image import fake CONF = cfg.CONF FAKE_UUID = fakes.FAKE_UUID def fake_gen_uuid(): return FAKE_UUID def return_security_group(context, instance_id, security_group_id): pass class ConfigDriveTest(test.TestCase): def setUp(self): super(ConfigDriveTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) fake.stub_out_image_service(self.stubs) def test_show(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v3/servers/1') req.headers['Content-Type'] = 'application/json' response = req.get_response(fakes.wsgi_app_v3( init_only=('servers', 'os-config-drive'))) self.assertEqual(response.status_int, 200) res_dict = jsonutils.loads(response.body) self.assertIn(config_drive.ATTRIBUTE_NAME, res_dict['server']) def test_detail_servers(self): self.stubs.Set(db, 'instance_get_all_by_filters', fakes.fake_instance_get_all_by_filters()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = fakes.HTTPRequestV3.blank('/v3/servers/detail') res = req.get_response(fakes.wsgi_app_v3( init_only=('servers', 'os-config-drive'))) server_dicts = jsonutils.loads(res.body)['servers'] self.assertNotEqual(len(server_dicts), 0) for server_dict in server_dicts: self.assertIn(config_drive.ATTRIBUTE_NAME, server_dict) class ServersControllerCreateTest(test.TestCase): def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-config-drive', 'osapi_v3') self.no_config_drive_controller = servers.ServersController( extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "config_drive": None, "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) def _test_create_extra(self, params, no_image=False, override_controller=None): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) if no_image: server.pop('image_ref', None) server.update(params) body = dict(server=server) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" if override_controller: server = override_controller.create(req, body=body).obj['server'] else: server = self.controller.create(req, body=body).obj['server'] def test_create_instance_with_config_drive_disabled(self): params = {config_drive.ATTRIBUTE_NAME: "False"} old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('config_drive', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params, override_controller=self.no_config_drive_controller) def test_create_instance_with_config_drive(self): def create(*args, **kwargs): self.assertIn('config_drive', kwargs) return old_create(*args, **kwargs) old_create = compute_api.API.create self.stubs.Set(compute_api.API, 'create', create) image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/v3/flavors/3' body = { 'server': { 'name': 'config_drive_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, config_drive.ATTRIBUTE_NAME: "true", }, } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_with_bad_config_drive(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/v3/flavors/3' body = { 'server': { 'name': 'config_drive_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, config_drive.ATTRIBUTE_NAME: image_href, }, } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) def test_create_instance_without_config_drive(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/v3/flavors/3' body = { 'server': { 'name': 'config_drive_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, }, } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py0000664000175400017540000003760012323721477031235 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock import webob from nova.api.openstack.compute.plugins.v3 import extended_volumes from nova import compute from nova import context from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance from nova import volume UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID1) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_not_found(*args, **kwargs): raise exception.InstanceNotFound(instance_id=UUID1) def fake_compute_get_all(*args, **kwargs): db_list = [fakes.stub_instance(1), fakes.stub_instance(2)] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) def fake_bdms_get_all_by_instance(*args, **kwargs): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': UUID1, 'source_type': 'volume', 'destination_type': 'volume', 'id': 1}), fake_block_device.FakeDbBlockDeviceDict( {'volume_id': UUID2, 'source_type': 'volume', 'destination_type': 'volume', 'id': 2})] def fake_attach_volume(self, context, instance, volume_id, device, disk_bus, device_type): pass def fake_attach_volume_not_found_vol(self, context, instance, volume_id, device, disk_bus, device_type): raise exception.VolumeNotFound(volume_id=volume_id) def fake_attach_volume_invalid_device_path(self, context, instance, volume_id, device, disk_bus, device_type): raise exception.InvalidDevicePath(path=device) def fake_attach_volume_instance_invalid_state(self, context, instance, volume_id, device, disk_bus, device_type): raise exception.InstanceInvalidState(instance_uuid=UUID1, state='', method='', attr='') def fake_attach_volume_invalid_volume(self, context, instance, volume_id, device, disk_bus, device_type): raise exception.InvalidVolume(reason='') def fake_detach_volume(self, context, instance, volume): pass def fake_swap_volume(self, context, instance, old_volume_id, new_volume_id): pass def fake_swap_volume_invalid_volume(self, context, instance, volume_id, device): raise exception.InvalidVolume(reason='', volume_id=volume_id) def fake_swap_volume_unattached_volume(self, context, instance, volume_id, device): raise exception.VolumeUnattached(reason='', volume_id=volume_id) def fake_detach_volume_invalid_volume(self, context, instance, volume): raise exception.InvalidVolume(reason='') def fake_swap_volume_instance_invalid_state(self, context, instance, volume_id, device): raise exception.InstanceInvalidState(instance_uuid=UUID1, state='', method='', attr='') def fake_volume_get(*args, **kwargs): pass def fake_volume_get_not_found(*args, **kwargs): raise exception.VolumeNotFound(volume_id=UUID1) class ExtendedVolumesTest(test.TestCase): content_type = 'application/json' prefix = 'os-extended-volumes:' def setUp(self): super(ExtendedVolumesTest, self).setUp() self.Controller = extended_volumes.ExtendedVolumesController() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_bdms_get_all_by_instance) self.stubs.Set(volume.cinder.API, 'get', fake_volume_get) self.stubs.Set(compute.api.API, 'detach_volume', fake_detach_volume) self.stubs.Set(compute.api.API, 'attach_volume', fake_attach_volume) self.app = fakes.wsgi_app_v3(init_only=('os-extended-volumes', 'servers')) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url, body=None): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type if body: req.body = jsonutils.dumps(body) req.method = 'POST' req.content_type = 'application/json' res = req.get_response(self.app) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def test_show(self): url = '/v3/servers/%s' % UUID1 res = self._make_request(url) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) exp_volumes = [{'id': UUID1}, {'id': UUID2}] if self.content_type == 'application/json': actual = server.get('%svolumes_attached' % self.prefix) self.assertEqual(exp_volumes, actual) def test_detail(self): url = '/v3/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) exp_volumes = [{'id': UUID1}, {'id': UUID2}] for i, server in enumerate(self._get_servers(res.body)): if self.content_type == 'application/json': actual = server.get('%svolumes_attached' % self.prefix) self.assertEqual(exp_volumes, actual) def test_detach(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"detach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 202) def test_detach_volume_from_locked_server(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'detach_volume', fakes.fake_actions_to_locked_server) res = self._make_request(url, {"detach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 409) def test_detach_with_non_existed_vol(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(volume.cinder.API, 'get', fake_volume_get_not_found) res = self._make_request(url, {"detach": {"volume_id": UUID2}}) self.assertEqual(res.status_int, 404) def test_detach_with_non_existed_instance(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'get', fake_compute_get_not_found) res = self._make_request(url, {"detach": {"volume_id": UUID2}}) self.assertEqual(res.status_int, 404) def test_detach_with_invalid_vol(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'detach_volume', fake_detach_volume_invalid_volume) res = self._make_request(url, {"detach": {"volume_id": UUID2}}) self.assertEqual(res.status_int, 400) def test_detach_with_bad_id(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"detach": {"volume_id": 'xxx'}}) self.assertEqual(res.status_int, 400) def test_detach_without_id(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"detach": {}}) self.assertEqual(res.status_int, 400) def test_detach_volume_with_invalid_request(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"detach": None}) self.assertEqual(res.status_int, 400) @mock.patch('nova.objects.block_device.BlockDeviceMapping.is_root', new_callable=mock.PropertyMock) def test_detach_volume_root(self, mock_isroot): url = "/v3/servers/%s/action" % UUID1 mock_isroot.return_value = True res = self._make_request(url, {"detach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 403) def test_attach_volume(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"attach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 202) def test_attach_volume_to_locked_server(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'attach_volume', fakes.fake_actions_to_locked_server) res = self._make_request(url, {"attach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 409) def test_attach_volume_disk_bus_and_disk_dev(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"attach": {"volume_id": UUID1, "device": "/dev/vdb", "disk_bus": "ide", "device_type": "cdrom"}}) def test_attach_volume_with_bad_id(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"attach": {"volume_id": 'xxx'}}) self.assertEqual(res.status_int, 400) def test_attach_volume_without_id(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"attach": {}}) self.assertEqual(res.status_int, 400) def test_attach_volume_with_invalid_request(self): url = "/v3/servers/%s/action" % UUID1 res = self._make_request(url, {"attach": None}) self.assertEqual(res.status_int, 400) def test_attach_volume_with_non_existe_vol(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'attach_volume', fake_attach_volume_not_found_vol) res = self._make_request(url, {"attach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 404) def test_attach_volume_with_non_existed_instance(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'get', fake_compute_get_not_found) res = self._make_request(url, {"attach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 404) def test_attach_volume_with_invalid_device_path(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'attach_volume', fake_attach_volume_invalid_device_path) res = self._make_request(url, {"attach": {"volume_id": UUID1, 'device': 'xxx'}}) self.assertEqual(res.status_int, 400) def test_attach_volume_with_instance_invalid_state(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'attach_volume', fake_attach_volume_instance_invalid_state) res = self._make_request(url, {"attach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 409) def test_attach_volume_with_invalid_volume(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'attach_volume', fake_attach_volume_invalid_volume) res = self._make_request(url, {"attach": {"volume_id": UUID1}}) self.assertEqual(res.status_int, 400) def test_attach_volume_with_invalid_request_body(self): url = "/v3/servers/%s/action" % UUID1 self.stubs.Set(compute.api.API, 'attach_volume', fake_attach_volume_invalid_volume) res = self._make_request(url, {"attach": None}) self.assertEqual(res.status_int, 400) def _test_swap(self, uuid=UUID1, body=None): body = body or {'swap_volume_attachment': {'old_volume_id': uuid, 'new_volume_id': UUID2}} req = webob.Request.blank('/v3/servers/%s/action' % UUID1) req.method = 'PUT' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = context.get_admin_context() return self.Controller.swap(req, UUID1, body=body) def test_swap_volume(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume) result = self._test_swap() self.assertEqual('202 Accepted', result.status) def test_swap_volume_for_locked_server(self): def fake_swap_volume_for_locked_server(self, context, instance, old_volume, new_volume): raise exception.InstanceIsLocked(instance_uuid=instance['uuid']) self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume_for_locked_server) self.assertRaises(webob.exc.HTTPConflict, self._test_swap) def test_swap_volume_for_locked_server_new(self): self.stubs.Set(compute.api.API, 'swap_volume', fakes.fake_actions_to_locked_server) self.assertRaises(webob.exc.HTTPConflict, self._test_swap) def test_swap_volume_instance_not_found(self): self.stubs.Set(compute.api.API, 'get', fake_compute_get_not_found) self.assertRaises(webob.exc.HTTPNotFound, self._test_swap) def test_swap_volume_with_bad_action(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume) body = {'swap_volume_attachment_bad_action': None} self.assertRaises(exception.ValidationError, self._test_swap, body=body) def test_swap_volume_with_invalid_body(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume) body = {'swap_volume_attachment': {'bad_volume_id_body': UUID1, 'new_volume_id': UUID2}} self.assertRaises(exception.ValidationError, self._test_swap, body=body) def test_swap_volume_with_invalid_volume(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume_invalid_volume) self.assertRaises(webob.exc.HTTPBadRequest, self._test_swap) def test_swap_volume_with_unattached_volume(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume_unattached_volume) self.assertRaises(webob.exc.HTTPNotFound, self._test_swap) def test_swap_volume_with_bad_state_instance(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume_instance_invalid_state) self.assertRaises(webob.exc.HTTPConflict, self._test_swap) def test_swap_volume_no_attachment(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume) self.assertRaises(webob.exc.HTTPNotFound, self._test_swap, UUID3) def test_swap_volume_not_found(self): self.stubs.Set(compute.api.API, 'swap_volume', fake_swap_volume) self.stubs.Set(volume.cinder.API, 'get', fake_volume_get_not_found) self.assertRaises(webob.exc.HTTPNotFound, self._test_swap) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_extended_availability_zone.py0000664000175400017540000001324112323721477033243 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import extended_availability_zone from nova import availability_zones from nova import compute from nova.compute import vm_states from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get_az(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="get-host", vm_state=vm_states.ACTIVE, availability_zone='fakeaz') return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_empty(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="", vm_state=vm_states.ACTIVE, availability_zone='fakeaz') return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="get-host", vm_state=vm_states.ACTIVE) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): inst1 = fakes.stub_instance(1, uuid=UUID1, host="all-host", vm_state=vm_states.ACTIVE) inst2 = fakes.stub_instance(2, uuid=UUID2, host="all-host", vm_state=vm_states.ACTIVE) db_list = [inst1, inst2] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) def fake_get_host_availability_zone(context, host): return host def fake_get_no_host_availability_zone(context, host): return None class ExtendedAvailabilityZoneTest(test.TestCase): content_type = 'application/json' prefix = '%s:' % extended_availability_zone.ExtendedAvailabilityZone.alias def setUp(self): super(ExtendedAvailabilityZoneTest, self).setUp() availability_zones.reset_cache() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(availability_zones, 'get_host_availability_zone', fake_get_host_availability_zone) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response( fakes.wsgi_app_v3(init_only=('servers', 'os-extended-availability-zone'))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertAvailabilityZone(self, server, az): self.assertEqual(server.get('%savailability_zone' % self.prefix), az) def test_show_no_host_az(self): self.stubs.Set(compute.api.API, 'get', fake_compute_get_az) self.stubs.Set(availability_zones, 'get_host_availability_zone', fake_get_no_host_availability_zone) url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertAvailabilityZone(self._get_server(res.body), 'fakeaz') def test_show_empty_host_az(self): self.stubs.Set(compute.api.API, 'get', fake_compute_get_empty) self.stubs.Set(availability_zones, 'get_host_availability_zone', fake_get_no_host_availability_zone) url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertAvailabilityZone(self._get_server(res.body), 'fakeaz') def test_show(self): url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertAvailabilityZone(self._get_server(res.body), 'get-host') def test_detail(self): url = '/v3/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertAvailabilityZone(server, 'all-host') def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v3/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_extended_status.py0000664000175400017540000001077212323721477031067 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova import compute from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, task_state="kayaking", vm_state="slightly crunchy", power_state=1, locked_by='owner') return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(1, uuid=UUID1, task_state="task-1", vm_state="vm-1", power_state=1, locked_by=None), fakes.stub_instance(2, uuid=UUID2, task_state="task-2", vm_state="vm-2", power_state=2, locked_by='admin'), ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ExtendedStatusTest(test.TestCase): content_type = 'application/json' prefix = 'os-extended-status:' def setUp(self): super(ExtendedStatusTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app_v3( init_only=('servers', 'os-extended-status'))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertServerStates(self, server, vm_state, power_state, task_state, locked_by): self.assertEqual(server.get('%svm_state' % self.prefix), vm_state) self.assertEqual(int(server.get('%spower_state' % self.prefix)), power_state) self.assertEqual(server.get('%stask_state' % self.prefix), task_state) self.assertEqual(str(server.get('%slocked_by' % self.prefix)), locked_by) def test_show(self): url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertServerStates(self._get_server(res.body), vm_state='slightly crunchy', power_state=1, task_state='kayaking', locked_by='owner') def test_detail(self): url = '/v3/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertServerStates(server, vm_state='vm-%s' % (i + 1), power_state=(i + 1), task_state='task-%s' % (i + 1), locked_by=['None', 'admin'][i]) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v3/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_flavor_access.py0000664000175400017540000004362312323721477030477 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from webob import exc from nova.api.openstack.compute import flavors as flavors_api from nova.api.openstack.compute.plugins.v3 import flavor_access from nova import context from nova import db from nova import exception from nova import test from nova.tests.api.openstack import fakes def generate_flavor(flavorid, ispublic): return { 'id': flavorid, 'flavorid': str(flavorid), 'root_gb': 1, 'ephemeral_gb': 1, 'name': u'test', 'deleted': False, 'created_at': datetime.datetime(2012, 1, 1, 1, 1, 1, 1), 'updated_at': None, 'memory_mb': 512, 'vcpus': 1, 'swap': 512, 'rxtx_factor': 1.0, 'disabled': False, 'extra_specs': {}, 'deleted_at': None, 'vcpu_weight': None, 'is_public': bool(ispublic) } INSTANCE_TYPES = { '0': generate_flavor(0, True), '1': generate_flavor(1, True), '2': generate_flavor(2, False), '3': generate_flavor(3, False)} ACCESS_LIST = [{'flavor_id': '2', 'project_id': 'proj2'}, {'flavor_id': '2', 'project_id': 'proj3'}, {'flavor_id': '3', 'project_id': 'proj3'}] def fake_get_flavor_access_by_flavor_id(context, flavorid): res = [] for access in ACCESS_LIST: if access['flavor_id'] == flavorid: res.append(access) return res def fake_get_flavor_by_flavor_id(context, flavorid, read_deleted): return INSTANCE_TYPES[flavorid] def _has_flavor_access(flavorid, projectid): for access in ACCESS_LIST: if access['flavor_id'] == flavorid and \ access['project_id'] == projectid: return True return False def fake_get_all_flavors_sorted_list(context, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): if filters == None or filters['is_public'] == None: return sorted(INSTANCE_TYPES.values(), key=lambda item: item[sort_key]) res = {} for k, v in INSTANCE_TYPES.iteritems(): if filters['is_public'] and _has_flavor_access(k, context.project_id): res.update({k: v}) continue if v['is_public'] == filters['is_public']: res.update({k: v}) res = sorted(res.values(), key=lambda item: item[sort_key]) return res class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} def get_db_flavor(self, flavor_id): return INSTANCE_TYPES[flavor_id] class FakeResponse(object): obj = {'flavor': {'id': '0'}, 'flavors': [ {'id': '0'}, {'id': '2'}] } def attach(self, **kwargs): pass class FlavorAccessTest(test.NoDBTestCase): def setUp(self): super(FlavorAccessTest, self).setUp() self.flavor_controller = flavors_api.Controller() self.flavor_access_controller = flavor_access.FlavorAccessController() self.flavor_action_controller = flavor_access.FlavorActionController() self.req = FakeRequest() self.context = self.req.environ['nova.context'] self.stubs.Set(db, 'flavor_get_by_flavor_id', fake_get_flavor_by_flavor_id) self.stubs.Set(db, 'flavor_get_all', fake_get_all_flavors_sorted_list) self.stubs.Set(db, 'flavor_access_get_by_flavor_id', fake_get_flavor_access_by_flavor_id) def _verify_flavor_list(self, result, expected): # result already sorted by flavor_id self.assertEqual(len(result), len(expected)) for d1, d2 in zip(result, expected): self.assertEqual(d1['id'], d2['id']) def test_list_flavor_access_public(self): # query flavor-access on public flavor should return 404 req = fakes.HTTPRequestV3.blank('/flavors/fake/flavor-access', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.flavor_access_controller.index, self.req, '1') def test_list_flavor_access_private(self): expected = {'flavor_access': [ {'flavor_id': '2', 'tenant_id': 'proj2'}, {'flavor_id': '2', 'tenant_id': 'proj3'}]} result = self.flavor_access_controller.index(self.req, '2') self.assertEqual(result, expected) def test_list_with_no_context(self): req = fakes.HTTPRequestV3.blank('/flavors/2/flavor-access') def fake_authorize(context, target=None, action=None): raise exception.PolicyNotAuthorized(action='index') self.stubs.Set(flavor_access, 'authorize', fake_authorize) self.assertRaises(exception.PolicyNotAuthorized, self.flavor_access_controller.index, req, '2') def test_list_flavor_with_admin_default_proj1(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequestV3.blank('/flavors', use_admin_context=True) req.environ['nova.context'].project_id = 'proj1' result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_default_proj2(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}, {'id': '2'}]} req = fakes.HTTPRequestV3.blank('/flavors', use_admin_context=True) req.environ['nova.context'].project_id = 'proj2' result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_true(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=true', use_admin_context=True) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_false(self): expected = {'flavors': [{'id': '2'}, {'id': '3'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=false', use_admin_context=True) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_false_proj2(self): expected = {'flavors': [{'id': '2'}, {'id': '3'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=false', use_admin_context=True) req.environ['nova.context'].project_id = 'proj2' result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_none(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}, {'id': '2'}, {'id': '3'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=none', use_admin_context=True) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_default(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequestV3.blank('/flavors', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_ispublic_true(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=true', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_ispublic_false(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=false', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_ispublic_none(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequestV3.blank('/flavors?is_public=none', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_show(self): resp = FakeResponse() self.flavor_action_controller.show(self.req, resp, '0') self.assertEqual({'id': '0', 'flavor-access:is_public': True}, resp.obj['flavor']) self.flavor_action_controller.show(self.req, resp, '2') self.assertEqual({'id': '0', 'flavor-access:is_public': False}, resp.obj['flavor']) def test_detail(self): resp = FakeResponse() self.flavor_action_controller.detail(self.req, resp) self.assertEqual([{'id': '0', 'flavor-access:is_public': True}, {'id': '2', 'flavor-access:is_public': False}], resp.obj['flavors']) def test_create(self): resp = FakeResponse() self.flavor_action_controller.create(self.req, {}, resp) self.assertEqual({'id': '0', 'flavor-access:is_public': True}, resp.obj['flavor']) def test_add_tenant_access(self): def stub_add_flavor_access(context, flavorid, projectid): self.assertEqual('3', flavorid, "flavorid") self.assertEqual("proj2", projectid, "projectid") self.stubs.Set(db, 'flavor_access_add', stub_add_flavor_access) expected = {'flavor_access': [{'flavor_id': '3', 'tenant_id': 'proj3'}]} body = {'add_tenant_access': {'tenant_id': 'proj2'}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) result = self.flavor_action_controller.\ _add_tenant_access(req, '3', body=body) self.assertEqual(result, expected) def test_add_tenant_access_with_non_existed_flavor(self): def stub_flavor_access_add(context, flavorid, project_id): raise exception.FlavorNotFound(flavor_id=flavorid) self.stubs.Set(db, 'flavor_access_add', stub_flavor_access_add) body = {'add_tenant_access': {'tenant_id': 'proj2'}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.flavor_action_controller._add_tenant_access, req, '3', body=body) def test_add_tenant_access_with_no_admin_user(self): req = fakes.HTTPRequestV3.blank('/flavors/2/action') body = {'add_tenant_access': {'tenant_id': 'proj2'}} self.assertRaises(exception.PolicyNotAuthorized, self.flavor_action_controller._add_tenant_access, req, '2', body=body) def test_add_tenant_access_without_policy_check(self): req = fakes.HTTPRequestV3.blank('/flavors/3/action') body = {'add_tenant_access': {'tenant_id': 'proj2'}} def fake_authorize(context, target=None, action=None): pass self.stubs.Set(flavor_access, 'authorize', fake_authorize) self.assertRaises(exc.HTTPForbidden, self.flavor_action_controller._add_tenant_access, req, '3', body=body) def test_add_tenant_access_without_tenant_id(self): def stub_add_flavor_access(context, flavorid, projectid): raise exception.FlavorNotFound(flavor_id=flavorid) self.stubs.Set(db, 'flavor_access_add', stub_add_flavor_access) body = {'add_tenant_access': {}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exception.ValidationError, self.flavor_action_controller._add_tenant_access, req, '3', body=body) def test_add_tenant_access_with_invalid_request(self): def stub_add_flavor_access(context, flavorid, projectid): raise exception.FlavorNotFound(flavor_id=flavorid) self.stubs.Set(db, 'flavor_access_add', stub_add_flavor_access) body = {'add_tenant_access': None} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exception.ValidationError, self.flavor_action_controller._add_tenant_access, req, '3', body=body) def test_add_tenant_access_with_already_added_access(self): def stub_add_flavor_access(context, flavorid, projectid): raise exception.FlavorAccessExists(flavor_id=flavorid, project_id=projectid) self.stubs.Set(db, 'flavor_access_add', stub_add_flavor_access) body = {'add_tenant_access': {'tenant_id': 'proj2'}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exc.HTTPConflict, self.flavor_action_controller._add_tenant_access, req, '3', body=body) def test_remove_tenant_access_with_bad_access(self): def stub_remove_flavor_access(context, flavorid, projectid): raise exception.FlavorAccessNotFound(flavor_id=flavorid, project_id=projectid) self.stubs.Set(db, 'flavor_access_remove', stub_remove_flavor_access) body = {'remove_tenant_access': {'tenant_id': 'proj2'}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.flavor_action_controller._remove_tenant_access, req, '3', body=body) def test_remove_tenant_access_with_non_existed_flavor(self): def stub_remove_flavor_access(context, flavorid, projectid): raise exception.FlavorNotFound(flavor_id=flavorid) self.stubs.Set(db, 'flavor_access_remove', stub_remove_flavor_access) body = {'remove_tenant_access': {'tenant_id': 'proj2'}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.flavor_action_controller._remove_tenant_access, req, '3', body=body) def test_remove_tenant_access_without_tenant_id(self): def stub_remove_flavor_access(context, flavorid, projectid): raise exception.FlavorNotFound(flavor_id=flavorid) self.stubs.Set(db, 'flavor_access_remove', stub_remove_flavor_access) body = {'remove_tenant_access': {}} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exception.ValidationError, self.flavor_action_controller._remove_tenant_access, req, '3', body=body) def test_remove_tenant_access_with_invalid_request(self): def stub_remove_flavor_access(context, flavorid, projectid): raise exception.FlavorNotFound(flavor_id=flavorid) self.stubs.Set(db, 'flavor_access_remove', stub_remove_flavor_access) body = {'remove_tenant_access': None} req = fakes.HTTPRequestV3.blank('/flavors/3/action', use_admin_context=True) self.assertRaises(exception.ValidationError, self.flavor_action_controller._remove_tenant_access, req, '3', body=body) def test_remove_tenant_access_with_no_admin_user(self): req = fakes.HTTPRequestV3.blank('flavors/2/action', use_admin_context=False) body = {'remove_tenant_access': {'tenant_id': 'proj2'}} self.assertRaises(exception.PolicyNotAuthorized, self.flavor_action_controller._remove_tenant_access, req, '2', body=body) def test_remove_tenant_access_without_policy_check(self): req = fakes.HTTPRequestV3.blank('/flavors/2/action') body = {'remove_tenant_access': {'tenant_id': 'proj2'}} def fake_authorize(context, target=None, action=None): pass self.stubs.Set(flavor_access, 'authorize', fake_authorize) self.assertRaises(exc.HTTPForbidden, self.flavor_action_controller._remove_tenant_access, req, '2', body=body) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_aggregates.py0000664000175400017540000005141412323721477027773 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Citrix Systems, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for the aggregates admin api.""" from webob import exc from nova.api.openstack.compute.plugins.v3 import aggregates from nova import exception from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers AGGREGATE_LIST = [ {"name": "aggregate1", "id": "1", "availability_zone": "nova1"}, {"name": "aggregate2", "id": "2", "availability_zone": "nova1"}, {"name": "aggregate3", "id": "3", "availability_zone": "nova2"}, {"name": "aggregate1", "id": "4", "availability_zone": "nova1"}] AGGREGATE = {"name": "aggregate1", "id": "1", "availability_zone": "nova1", "metadata": {"foo": "bar"}, "hosts": ["host1, host2"]} class AggregateTestCase(test.NoDBTestCase): """Test Case for aggregates admin api.""" def setUp(self): super(AggregateTestCase, self).setUp() self.controller = aggregates.AggregateController() self.req = fakes.HTTPRequest.blank('/v3/os-aggregates', use_admin_context=True) self.user_req = fakes.HTTPRequest.blank('/v3/os-aggregates') self.context = self.req.environ['nova.context'] def test_index(self): def stub_list_aggregates(context): if context is None: raise Exception() return AGGREGATE_LIST self.stubs.Set(self.controller.api, 'get_aggregate_list', stub_list_aggregates) result = self.controller.index(self.req) self.assertEqual(AGGREGATE_LIST, result["aggregates"]) def test_index_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, self.user_req) self.assertIn("compute_extension:v3:os-aggregates:index", exc.format_message()) def test_create(self): def stub_create_aggregate(context, name, availability_zone): self.assertEqual(context, self.context, "context") self.assertEqual("test", name, "name") self.assertEqual("nova1", availability_zone, "availability_zone") return AGGREGATE self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) result = self.controller.create(self.req, {"aggregate": {"name": "test", "availability_zone": "nova1"}}) self.assertEqual(AGGREGATE, result["aggregate"]) def test_create_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller.create, self.user_req, {"aggregate": {"name": "test", "availability_zone": "nova1"}}) self.assertIn("compute_extension:v3:os-aggregates:create", exc.format_message()) def test_create_with_duplicate_aggregate_name(self): def stub_create_aggregate(context, name, availability_zone): raise exception.AggregateNameExists(aggregate_name=name) self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) self.assertRaises(exc.HTTPConflict, self.controller.create, self.req, {"aggregate": {"name": "test", "availability_zone": "nova1"}}) def test_create_with_incorrect_availability_zone(self): def stub_create_aggregate(context, name, availability_zone): raise exception.InvalidAggregateAction(action='create_aggregate', aggregate_id="'N/A'", reason='invalid zone') self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"name": "test", "availability_zone": "nova_bad"}}) def test_create_with_no_aggregate(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"foo": {"name": "test", "availability_zone": "nova1"}}) def test_create_with_no_name(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"availability_zone": "nova1"}}) def test_create_with_no_availability_zone(self): def stub_create_aggregate(context, name, availability_zone): self.assertEqual(context, self.context, "context") self.assertEqual("test", name, "name") self.assertIsNone(availability_zone, "availability_zone") return AGGREGATE self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) result = self.controller.create(self.req, {"aggregate": {"name": "test"}}) self.assertEqual(AGGREGATE, result["aggregate"]) def test_create_with_null_name(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"name": "", "availability_zone": "nova1"}}) def test_create_with_name_too_long(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"name": "x" * 256, "availability_zone": "nova1"}}) def test_show(self): def stub_get_aggregate(context, id): self.assertEqual(context, self.context, "context") self.assertEqual("1", id, "id") return AGGREGATE self.stubs.Set(self.controller.api, 'get_aggregate', stub_get_aggregate) aggregate = self.controller.show(self.req, "1") self.assertEqual(AGGREGATE, aggregate["aggregate"]) def test_show_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller.show, self.user_req, "1") self.assertIn("compute_extension:v3:os-aggregates:show", exc.format_message()) def test_show_with_invalid_id(self): def stub_get_aggregate(context, id): raise exception.AggregateNotFound(aggregate_id=2) self.stubs.Set(self.controller.api, 'get_aggregate', stub_get_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.show, self.req, "2") def test_update(self): body = {"aggregate": {"name": "new_name", "availability_zone": "nova1"}} def stub_update_aggregate(context, aggregate, values): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertEqual(body["aggregate"], values, "values") return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) result = self.controller.update(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_update_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller.update, self.user_req, "1", body={}) self.assertIn("compute_extension:v3:os-aggregates:update", exc.format_message()) def test_update_with_only_name(self): body = {"aggregate": {"name": "new_name"}} def stub_update_aggregate(context, aggregate, values): return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) result = self.controller.update(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_update_with_only_availability_zone(self): body = {"aggregate": {"availability_zone": "nova1"}} def stub_update_aggregate(context, aggregate, values): return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) result = self.controller.update(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_update_with_no_updates(self): test_metadata = {"aggregate": {}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_wrong_updates(self): test_metadata = {"aggregate": {"status": "disable", "foo": "bar"}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_null_name(self): test_metadata = {"aggregate": {"name": ""}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_name_too_long(self): test_metadata = {"aggregate": {"name": "x" * 256}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_bad_aggregate(self): test_metadata = {"aggregate": {"name": "test_name"}} def stub_update_aggregate(context, aggregate, metadata): raise exception.AggregateNotFound(aggregate_id=2) self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_duplicated_name(self): test_metadata = {"aggregate": {"name": "test_name"}} def stub_update_aggregate(context, aggregate, metadata): raise exception.AggregateNameExists(aggregate_name="test_name") self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) self.assertRaises(exc.HTTPConflict, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_invalid_request(self): test_metadata = {"aggregate": 1} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_add_host(self): def stub_add_host_to_aggregate(context, aggregate, host): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertEqual("host1", host, "host") return AGGREGATE self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) aggregate = self.controller._add_host(self.req, "1", body={"add_host": {"host": "host1"}}) self.assertEqual(aggregate["aggregate"], AGGREGATE) self.assertEqual(self.controller._add_host.wsgi_code, 202) def test_add_host_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._add_host, self.user_req, "1", body={"add_host": {"host": "host1"}}) self.assertIn("compute_extension:v3:os-aggregates:add_host", exc.format_message()) def test_add_host_with_already_added_host(self): def stub_add_host_to_aggregate(context, aggregate, host): raise exception.AggregateHostExists(aggregate_id=aggregate, host=host) self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) self.assertRaises(exc.HTTPConflict, self.controller._add_host, self.req, "1", body={"add_host": {"host": "host1"}}) def test_add_host_with_bad_aggregate(self): def stub_add_host_to_aggregate(context, aggregate, host): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller._add_host, self.req, "bogus_aggregate", body={"add_host": {"host": "host1"}}) def test_add_host_with_bad_host(self): def stub_add_host_to_aggregate(context, aggregate, host): raise exception.ComputeHostNotFound(host=host) self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller._add_host, self.req, "1", body={"add_host": {"host": "bogus_host"}}) def test_add_host_with_missing_host(self): self.assertRaises(exc.HTTPBadRequest, self.controller._add_host, self.req, "1", body={"add_host": {}}) def test_add_host_with_invalid_request(self): self.assertRaises(exc.HTTPBadRequest, self.controller._add_host, self.req, "1", body={"add_host": 1}) def test_add_host_with_non_string(self): self.assertRaises(exc.HTTPBadRequest, self.controller._add_host, self.req, "1", body={"add_host": {"host": 1}}) def test_remove_host(self): def stub_remove_host_from_aggregate(context, aggregate, host): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertEqual("host1", host, "host") stub_remove_host_from_aggregate.called = True return {} self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.controller._remove_host(self.req, "1", body={"remove_host": {"host": "host1"}}) self.assertTrue(stub_remove_host_from_aggregate.called) self.assertEqual(self.controller._remove_host.wsgi_code, 202) def test_remove_host_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._remove_host, self.user_req, "1", body={"remove_host": {"host": "host1"}}) self.assertIn("compute_extension:v3:os-aggregates:remove_host", exc.format_message()) def test_remove_host_with_host_not_in_aggregate(self): def stub_remove_host_from_aggregate(context, aggregate, host): raise exception.AggregateHostNotFound(aggregate_id=aggregate, host=host) self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller._remove_host, self.req, "1", body={"remove_host": {"host": "host1"}}) def test_remove_host_with_bad_host(self): def stub_remove_host_from_aggregate(context, aggregate, host): raise exception.ComputeHostNotFound(host=host) self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller._remove_host, self.req, "1", body={"remove_host": {"host": "bogushost"}}) def test_remove_host_with_invalid_request(self): self.assertRaises(exc.HTTPBadRequest, self.controller._remove_host, self.req, "1", body={"remove_host": 1}) def test_remove_host_with_missing_host(self): self.assertRaises(exc.HTTPBadRequest, self.controller._remove_host, self.req, "1", body={"remove_host": {}}) def test_remove_host_with_missing_host(self): self.assertRaises(exc.HTTPBadRequest, self.controller._remove_host, self.req, "1", body={"remove_host": {"host": 1}}) def test_set_metadata(self): body = {"set_metadata": {"metadata": {"foo": "bar"}}} def stub_update_aggregate(context, aggregate, values): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertThat(body["set_metadata"]['metadata'], matchers.DictMatches(values)) return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate_metadata", stub_update_aggregate) result = self.controller._set_metadata(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_set_metadata_no_admin(self): exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._set_metadata, self.user_req, "1", body={"set_metadata": {"metadata": {"foo": "bar"}}}) self.assertIn("compute_extension:v3:os-aggregates:set_metadata", exc.format_message()) def test_set_metadata_with_bad_aggregate(self): body = {"set_metadata": {"metadata": {"foo": "bar"}}} def stub_update_aggregate(context, aggregate, metadata): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "update_aggregate_metadata", stub_update_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller._set_metadata, self.req, "bad_aggregate", body=body) def test_set_metadata_with_missing_metadata(self): body = {"set_metadata": {}} self.assertRaises(exc.HTTPBadRequest, self.controller._set_metadata, self.req, "1", body=body) def test_set_metadata_with_invalid_request(self): body = {"set_metadata": 1} self.assertRaises(exc.HTTPBadRequest, self.controller._set_metadata, self.req, "1", body=body) def test_set_metadata_without_dict(self): body = {"set_metadata": {'metadata': 1}} self.assertRaises(exc.HTTPBadRequest, self.controller._set_metadata, self.req, "1", body=body) def test_delete_aggregate(self): def stub_delete_aggregate(context, aggregate): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") stub_delete_aggregate.called = True self.stubs.Set(self.controller.api, "delete_aggregate", stub_delete_aggregate) self.controller.delete(self.req, "1") self.assertTrue(stub_delete_aggregate.called) def test_delete_aggregate_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.delete, self.user_req, "1") def test_delete_aggregate_with_bad_aggregate(self): def stub_delete_aggregate(context, aggregate): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "delete_aggregate", stub_delete_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.delete, self.req, "bogus_aggregate") nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_block_device_mapping.py0000664000175400017540000002274512323721477032013 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mox from oslo.config import cfg from webob import exc from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import block_device_mapping from nova.api.openstack.compute.plugins.v3 import servers from nova import block_device from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests.image import fake from nova.tests import matchers CONF = cfg.CONF class BlockDeviceMappingTest(test.TestCase): def setUp(self): super(BlockDeviceMappingTest, self).setUp() ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-block-device-mapping', 'osapi_v3') self.no_volumes_controller = servers.ServersController( extension_info=ext_info) CONF.set_override('extensions_blacklist', '', 'osapi_v3') fake.stub_out_image_service(self.stubs) self.bdm = [{ 'no_device': None, 'source_type': 'volume', 'destination_type': 'volume', 'uuid': 'fake', 'device_name': 'vda', 'delete_on_termination': False, }] def _test_create(self, params, no_image=False, override_controller=None): body = { 'server': { 'min_count': 2, 'name': 'server_test', 'image_ref': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'flavor_ref': 'http://localhost/123/flavors/3', 'metadata': { 'hello': 'world', 'open': 'stack', }, }, } if no_image: body['server']['image_ref'] = '' body['server'].update(params) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = jsonutils.dumps(body) if override_controller: override_controller.create(req, body=body).obj['server'] else: self.controller.create(req, body=body).obj['server'] def test_create_instance_with_block_device_mapping_disabled(self): bdm = [{'device_name': 'foo'}] old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('block_device_mapping', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) params = {block_device_mapping.ATTRIBUTE_NAME: bdm} self._test_create(params, override_controller=self.no_volumes_controller) def test_create_instance_with_volumes_enabled_no_image(self): """Test that the create will fail if there is no image and no bdms supplied in the request """ old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('image_ref', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(exc.HTTPBadRequest, self._test_create, {}, no_image=True) def test_create_instance_with_bdms_and_no_image(self): old_create = compute_api.API.create def create(*args, **kwargs): self.assertThat( block_device.BlockDeviceDict(self.bdm[0]), matchers.DictMatches(kwargs['block_device_mapping'][0]) ) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.mox.StubOutWithMock(compute_api.API, '_validate_bdm') self.mox.StubOutWithMock(compute_api.API, '_get_bdm_image_metadata') compute_api.API._validate_bdm( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(True) compute_api.API._get_bdm_image_metadata( mox.IgnoreArg(), mox.IgnoreArg(), False).AndReturn({}) self.mox.ReplayAll() params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self._test_create(params, no_image=True) def test_create_instance_with_device_name_not_string(self): self.bdm[0]['device_name'] = 123 old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self.assertRaises(exc.HTTPBadRequest, self._test_create, params) def test_create_instance_with_device_name_empty(self): self.bdm[0]['device_name'] = '' old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self.assertRaises(exc.HTTPBadRequest, self._test_create, params) def test_create_instance_with_device_name_too_long(self): self.bdm[0]['device_name'] = 'a' * 256 old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self.assertRaises(exc.HTTPBadRequest, self._test_create, params) def test_create_instance_with_space_in_device_name(self): self.bdm[0]['device_name'] = 'v da' old_create = compute_api.API.create def create(*args, **kwargs): self.assertTrue(kwargs['legacy_bdm']) self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self.assertRaises(exc.HTTPBadRequest, self._test_create, params) def test_create_instance_with_invalid_size(self): self.bdm[0]['volume_size'] = 'hello world' old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self.assertRaises(exc.HTTPBadRequest, self._test_create, params) def test_create_instance_bdm(self): bdm = [{ 'source_type': 'volume', 'device_name': 'fake_dev', 'uuid': 'fake_vol' }] bdm_expected = [{ 'source_type': 'volume', 'device_name': 'fake_dev', 'volume_id': 'fake_vol' }] old_create = compute_api.API.create def create(*args, **kwargs): self.assertFalse(kwargs['legacy_bdm']) for expected, received in zip(bdm_expected, kwargs['block_device_mapping']): self.assertThat(block_device.BlockDeviceDict(expected), matchers.DictMatches(received)) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) params = {block_device_mapping.ATTRIBUTE_NAME: bdm} self._test_create(params) def test_create_instance_bdm_missing_device_name(self): del self.bdm[0]['device_name'] old_create = compute_api.API.create def create(*args, **kwargs): self.assertFalse(kwargs['legacy_bdm']) self.assertNotIn(None, kwargs['block_device_mapping'][0]['device_name']) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self._test_create(params) def test_create_instance_bdm_validation_error(self): def _validate(*args, **kwargs): raise exception.InvalidBDMFormat(details='Wrong BDM') self.stubs.Set(block_device.BlockDeviceDict, '_validate', _validate) params = {block_device_mapping.ATTRIBUTE_NAME: self.bdm} self.assertRaises(exc.HTTPBadRequest, self._test_create, params) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_scheduler_hints.py0000664000175400017540000002254312323721477031046 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import uuid from oslo.config import cfg from nova.api.openstack import compute from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import servers from nova.compute import api as compute_api from nova.compute import flavors from nova import db import nova.db.api from nova.network import manager from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests.image import fake CONF = cfg.CONF FAKE_UUID = fakes.FAKE_UUID def fake_gen_uuid(): return FAKE_UUID def return_security_group(context, instance_id, security_group_id): pass class SchedulerHintsTestCase(test.TestCase): def setUp(self): super(SchedulerHintsTestCase, self).setUp() self.fake_instance = fakes.stub_instance(1, uuid=FAKE_UUID) self.app = compute.APIRouterV3(init_only=('servers', 'os-scheduler-hints')) def test_create_server_without_hints(self): def fake_create(*args, **kwargs): self.assertEqual(kwargs['scheduler_hints'], {}) return ([self.fake_instance], '') self.stubs.Set(nova.compute.api.API, 'create', fake_create) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'image_ref': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavor_ref': '1', }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(202, res.status_int) def test_create_server_with_hints(self): hints = {'same_host': '48e6a9f6-30af-47e0-bc04-acaed113bb4e'} def fake_create(*args, **kwargs): self.assertEqual(hints, kwargs['scheduler_hints']) return ([self.fake_instance], '') self.stubs.Set(nova.compute.api.API, 'create', fake_create) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.content_type = 'application/json' body = { 'server': { 'name': 'server_test', 'image_ref': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavor_ref': '1', 'os-scheduler-hints:scheduler_hints': hints, }, } req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(202, res.status_int) def test_create_server_bad_hints(self): req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.content_type = 'application/json' body = { 'server': { 'name': 'server_test', 'image_ref': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavor_ref': '1', 'os-scheduler-hints:scheduler_hints': 'non-dict', }, } req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(400, res.status_int) class ServersControllerCreateTest(test.TestCase): def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-scheduler-hints', 'osapi_v3') self.no_scheduler_hints_controller = servers.ServersController( extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "config_drive": None, "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) def _test_create_extra(self, params, no_image=False, override_controller=None): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) if no_image: server.pop('image_ref', None) server.update(params) body = dict(server=server) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" if override_controller: server = override_controller.create(req, body=body).obj['server'] else: server = self.controller.create(req, body=body).obj['server'] def test_create_instance_with_scheduler_hints_disabled(self): hints = {'same_host': '48e6a9f6-30af-47e0-bc04-acaed113bb4e'} params = {'os-scheduler-hints:scheduler_hints': hints} old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('scheduler_hints', kwargs) # self.assertEqual(kwargs['scheduler_hints'], {}) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params, override_controller=self.no_scheduler_hints_controller) def test_create_instance_with_scheduler_hints_enabled(self): hints = {'same_host': '48e6a9f6-30af-47e0-bc04-acaed113bb4e'} params = {'os-scheduler-hints:scheduler_hints': hints} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['scheduler_hints'], hints) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_user_data.py0000664000175400017540000002073712323721477027635 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 import datetime import uuid from oslo.config import cfg import webob from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import servers from nova.api.openstack.compute.plugins.v3 import user_data from nova.compute import api as compute_api from nova.compute import flavors from nova import db from nova.network import manager from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests.image import fake CONF = cfg.CONF FAKE_UUID = fakes.FAKE_UUID def fake_gen_uuid(): return FAKE_UUID def return_security_group(context, instance_id, security_group_id): pass class ServersControllerCreateTest(test.TestCase): def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) CONF.set_override('extensions_blacklist', 'os-user-data', 'osapi_v3') self.no_user_data_controller = servers.ServersController( extension_info=ext_info) def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), user_data.ATTRIBUTE_NAME: None, "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) def _test_create_extra(self, params, no_image=False, override_controller=None): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', image_ref=image_uuid, flavor_ref=2) if no_image: server.pop('image_ref', None) server.update(params) body = dict(server=server) req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" if override_controller: server = override_controller.create(req, body=body).obj['server'] else: server = self.controller.create(req, body=body).obj['server'] def test_create_instance_with_user_data_disabled(self): params = {user_data.ATTRIBUTE_NAME: base64.b64encode('fake')} old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('user_data', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra( params, override_controller=self.no_user_data_controller) def test_create_instance_with_user_data_enabled(self): params = {user_data.ATTRIBUTE_NAME: base64.b64encode('fake')} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIn('user_data', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_user_data(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/flavors/3' value = "A random string" body = { 'server': { 'name': 'user_data_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, user_data.ATTRIBUTE_NAME: base64.b64encode(value), }, } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = self.controller.create(req, body=body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_with_bad_user_data(self): image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/flavors/3' value = "A random string" body = { 'server': { 'name': 'user_data_test', 'image_ref': image_href, 'flavor_ref': flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, user_data.ATTRIBUTE_NAME: value, }, } req = fakes.HTTPRequestV3.blank('/servers') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_cells.py0000664000175400017540000004501312323721477026762 0ustar jenkinsjenkins00000000000000# Copyright 2011-2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from webob import exc from nova.api.openstack.compute.plugins.v3 import cells as cells_ext from nova.cells import rpcapi as cells_rpcapi from nova import context from nova import exception from nova.openstack.common import timeutils from nova import rpc from nova import test from nova.tests.api.openstack import fakes class BaseCellsTest(test.NoDBTestCase): def setUp(self): super(BaseCellsTest, self).setUp() self.fake_cells = [ dict(id=1, name='cell1', is_parent=True, weight_scale=1.0, weight_offset=0.0, transport_url='rabbit://bob:xxxx@r1.example.org/'), dict(id=2, name='cell2', is_parent=False, weight_scale=1.0, weight_offset=0.0, transport_url='rabbit://alice:qwerty@r2.example.org/')] self.fake_capabilities = [ {'cap1': '0,1', 'cap2': '2,3'}, {'cap3': '4,5', 'cap4': '5,6'}] def fake_cell_get(_self, context, cell_name): for cell in self.fake_cells: if cell_name == cell['name']: return cell else: raise exception.CellNotFound(cell_name=cell_name) def fake_cell_create(_self, context, values): cell = dict(id=1) cell.update(values) return cell def fake_cell_update(_self, context, cell_id, values): cell = fake_cell_get(_self, context, cell_id) cell.update(values) return cell def fake_cells_api_get_all_cell_info(*args): return self._get_all_cell_info(*args) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_get', fake_cell_get) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_update', fake_cell_update) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_create', fake_cell_create) self.stubs.Set(cells_rpcapi.CellsAPI, 'get_cell_info_for_neighbors', fake_cells_api_get_all_cell_info) def _get_all_cell_info(self, *args): def insecure_transport_url(url): transport_url = rpc.get_transport_url(url) transport_url.hosts[0].password = None return str(transport_url) cells = copy.deepcopy(self.fake_cells) cells[0]['transport_url'] = insecure_transport_url( cells[0]['transport_url']) cells[1]['transport_url'] = insecure_transport_url( cells[1]['transport_url']) for i, cell in enumerate(cells): cell['capabilities'] = self.fake_capabilities[i] return cells class CellsTest(BaseCellsTest): def setUp(self): super(CellsTest, self).setUp() self.controller = cells_ext.CellsController() self.context = context.get_admin_context() self.flags(enable=True, group='cells') def _get_request(self, resource): return fakes.HTTPRequestV3.blank('/' + resource) def test_index(self): req = self._get_request("cells") res_dict = self.controller.index(req) self.assertEqual(len(res_dict['cells']), 2) for i, cell in enumerate(res_dict['cells']): self.assertEqual(cell['name'], self.fake_cells[i]['name']) self.assertNotIn('capabilitiles', cell) self.assertNotIn('password', cell) def test_detail(self): req = self._get_request("cells/detail") res_dict = self.controller.detail(req) self.assertEqual(len(res_dict['cells']), 2) for i, cell in enumerate(res_dict['cells']): self.assertEqual(cell['name'], self.fake_cells[i]['name']) self.assertEqual(cell['capabilities'], self.fake_capabilities[i]) self.assertNotIn('password', cell) def test_show_bogus_cell_raises(self): req = self._get_request("cells/bogus") self.assertRaises(exc.HTTPNotFound, self.controller.show, req, 'bogus') def test_get_cell_by_name(self): req = self._get_request("cells/cell1") res_dict = self.controller.show(req, 'cell1') cell = res_dict['cell'] self.assertEqual(cell['name'], 'cell1') self.assertEqual(cell['rpc_host'], 'r1.example.org') self.assertNotIn('password', cell) def test_cell_delete(self): call_info = {'delete_called': 0} def fake_cell_delete(inst, context, cell_name): self.assertEqual(cell_name, 'cell999') call_info['delete_called'] += 1 self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_delete', fake_cell_delete) req = self._get_request("cells/cell999") self.controller.delete(req, 'cell999') self.assertEqual(call_info['delete_called'], 1) def test_delete_bogus_cell_raises(self): def fake_cell_delete(inst, context, cell_name): return 0 self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_delete', fake_cell_delete) req = self._get_request("cells/cell999") req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, self.controller.delete, req, 'cell999') def test_cell_create_parent(self): body = {'cell': {'name': 'meow', 'username': 'fred', 'password': 'fubar', 'rpc_host': 'r3.example.org', 'type': 'parent', # Also test this is ignored/stripped 'is_parent': False}} req = self._get_request("cells") res_dict = self.controller.create(req, body) cell = res_dict['cell'] self.assertEqual(self.controller.create.wsgi_code, 201) self.assertEqual(cell['name'], 'meow') self.assertEqual(cell['username'], 'fred') self.assertEqual(cell['rpc_host'], 'r3.example.org') self.assertEqual(cell['type'], 'parent') self.assertNotIn('password', cell) self.assertNotIn('is_parent', cell) def test_cell_create_child(self): body = {'cell': {'name': 'meow', 'username': 'fred', 'password': 'fubar', 'rpc_host': 'r3.example.org', 'type': 'child'}} req = self._get_request("cells") res_dict = self.controller.create(req, body) cell = res_dict['cell'] self.assertEqual(self.controller.create.wsgi_code, 201) self.assertEqual(cell['name'], 'meow') self.assertEqual(cell['username'], 'fred') self.assertEqual(cell['rpc_host'], 'r3.example.org') self.assertEqual(cell['type'], 'child') self.assertNotIn('password', cell) self.assertNotIn('is_parent', cell) def test_cell_create_no_name_raises(self): body = {'cell': {'username': 'moocow', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_empty_string_raises(self): body = {'cell': {'name': '', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_with_bang_raises(self): body = {'cell': {'name': 'moo!cow', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_with_dot_raises(self): body = {'cell': {'name': 'moo.cow', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_with_invalid_type_raises(self): body = {'cell': {'name': 'moocow', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'invalid'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_update(self): body = {'cell': {'username': 'zeb', 'password': 'sneaky'}} req = self._get_request("cells/cell1") res_dict = self.controller.update(req, 'cell1', body) cell = res_dict['cell'] self.assertEqual(cell['name'], 'cell1') self.assertEqual(cell['rpc_host'], 'r1.example.org') self.assertEqual(cell['username'], 'zeb') self.assertNotIn('password', cell) def test_cell_update_empty_name_raises(self): body = {'cell': {'name': '', 'username': 'zeb', 'password': 'sneaky'}} req = self._get_request("cells/cell1") self.assertRaises(exc.HTTPBadRequest, self.controller.update, req, 'cell1', body) def test_cell_update_invalid_type_raises(self): body = {'cell': {'username': 'zeb', 'type': 'invalid', 'password': 'sneaky'}} req = self._get_request("cells/cell1") self.assertRaises(exc.HTTPBadRequest, self.controller.update, req, 'cell1', body) def test_cell_update_without_type_specified(self): body = {'cell': {'username': 'wingwj'}} req = self._get_request("cells/cell1") res_dict = self.controller.update(req, 'cell1', body) cell = res_dict['cell'] self.assertEqual(cell['name'], 'cell1') self.assertEqual(cell['rpc_host'], 'r1.example.org') self.assertEqual(cell['username'], 'wingwj') self.assertEqual(cell['type'], 'parent') def test_cell_update_with_type_specified(self): body1 = {'cell': {'username': 'wingwj', 'type': 'child'}} body2 = {'cell': {'username': 'wingwj', 'type': 'parent'}} req1 = self._get_request("cells/cell1") res_dict1 = self.controller.update(req1, 'cell1', body1) cell1 = res_dict1['cell'] req2 = self._get_request("cells/cell2") res_dict2 = self.controller.update(req2, 'cell2', body2) cell2 = res_dict2['cell'] self.assertEqual(cell1['name'], 'cell1') self.assertEqual(cell1['rpc_host'], 'r1.example.org') self.assertEqual(cell1['username'], 'wingwj') self.assertEqual(cell1['type'], 'child') self.assertEqual(cell2['name'], 'cell2') self.assertEqual(cell2['rpc_host'], 'r2.example.org') self.assertEqual(cell2['username'], 'wingwj') self.assertEqual(cell2['type'], 'parent') def test_cell_info(self): caps = ['cap1=a;b', 'cap2=c;d'] self.flags(name='darksecret', capabilities=caps, group='cells') req = self._get_request("cells/info") res_dict = self.controller.info(req) cell = res_dict['cell'] cell_caps = cell['capabilities'] self.assertEqual(cell['name'], 'darksecret') self.assertEqual(cell_caps['cap1'], 'a;b') self.assertEqual(cell_caps['cap2'], 'c;d') def test_show_capacities(self): self.mox.StubOutWithMock(self.controller.cells_rpcapi, 'get_capacities') response = {"ram_free": {"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0}, "total_mb": 7680}, "disk_free": {"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0}, "total_mb": 1052672} } self.controller.cells_rpcapi.\ get_capacities(self.context, cell_name=None).AndReturn(response) self.mox.ReplayAll() req = self._get_request("cells/capacities") req.environ["nova.context"] = self.context res_dict = self.controller.capacities(req) self.assertEqual(response, res_dict['cell']['capacities']) def test_show_capacity_fails_with_non_admin_context(self): rules = {"compute_extension:cells": "is_admin:true"} self.policy.set_rules(rules) self.mox.ReplayAll() req = self._get_request("cells/capacities") req.environ["nova.context"] = self.context req.environ["nova.context"].is_admin = False self.assertRaises(exception.PolicyNotAuthorized, self.controller.capacities, req) def test_show_capacities_for_invalid_cell(self): self.mox.StubOutWithMock(self.controller.cells_rpcapi, 'get_capacities') self.controller.cells_rpcapi. \ get_capacities(self.context, cell_name="invalid_cell").AndRaise( exception.CellNotFound(cell_name="invalid_cell")) self.mox.ReplayAll() req = self._get_request("cells/invalid_cell/capacities") req.environ["nova.context"] = self.context self.assertRaises(exc.HTTPNotFound, self.controller.capacities, req, "invalid_cell") def test_show_capacities_for_cell(self): self.mox.StubOutWithMock(self.controller.cells_rpcapi, 'get_capacities') response = {"ram_free": {"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0}, "total_mb": 7680}, "disk_free": {"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0}, "total_mb": 1052672} } self.controller.cells_rpcapi.\ get_capacities(self.context, cell_name='cell_name').\ AndReturn(response) self.mox.ReplayAll() req = self._get_request("cells/capacities") req.environ["nova.context"] = self.context res_dict = self.controller.capacities(req, 'cell_name') self.assertEqual(response, res_dict['cell']['capacities']) def test_sync_instances(self): call_info = {} def sync_instances(self, context, **kwargs): call_info['project_id'] = kwargs.get('project_id') call_info['updated_since'] = kwargs.get('updated_since') call_info['deleted'] = kwargs.get('deleted') self.stubs.Set(cells_rpcapi.CellsAPI, 'sync_instances', sync_instances) req = self._get_request("cells/sync_instances") body = {} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) body = {'project_id': 'test-project'} self.controller.sync_instances(req, body=body) self.assertEqual(call_info['project_id'], 'test-project') self.assertIsNone(call_info['updated_since']) expected = timeutils.utcnow().isoformat() if not expected.endswith("+00:00"): expected += "+00:00" body = {'updated_since': expected} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertEqual(call_info['updated_since'], expected) body = {'updated_since': 'skjdfkjsdkf'} self.assertRaises(exc.HTTPBadRequest, self.controller.sync_instances, req, body=body) body = {'deleted': False} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) self.assertEqual(call_info['deleted'], False) body = {'deleted': 'False'} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) self.assertEqual(call_info['deleted'], False) body = {'deleted': 'True'} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) self.assertEqual(call_info['deleted'], True) body = {'deleted': 'foo'} self.assertRaises(exc.HTTPBadRequest, self.controller.sync_instances, req, body=body) body = {'foo': 'meow'} self.assertRaises(exc.HTTPBadRequest, self.controller.sync_instances, req, body=body) def test_cells_disabled(self): self.flags(enable=False, group='cells') req = self._get_request("cells") self.assertRaises(exc.HTTPNotImplemented, self.controller.index, req) req = self._get_request("cells/detail") self.assertRaises(exc.HTTPNotImplemented, self.controller.detail, req) req = self._get_request("cells/cell1") self.assertRaises(exc.HTTPNotImplemented, self.controller.show, req) self.assertRaises(exc.HTTPNotImplemented, self.controller.delete, req, 'cell999') req = self._get_request("cells/cells") self.assertRaises(exc.HTTPNotImplemented, self.controller.create, req, {}) req = self._get_request("cells/capacities") self.assertRaises(exc.HTTPNotImplemented, self.controller.capacities, req) req = self._get_request("cells/sync_instances") self.assertRaises(exc.HTTPNotImplemented, self.controller.sync_instances, req, {}) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_hide_server_addresses.py0000664000175400017540000001136612323721477032220 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import itertools import webob from nova import compute from nova.compute import vm_states from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance SENTINEL = object() def fake_compute_get(*args, **kwargs): def _return_server(*_args, **_kwargs): inst = fakes.stub_instance(*args, **kwargs) return fake_instance.fake_instance_obj(_args[1], **inst) return _return_server class HideServerAddressesTest(test.TestCase): content_type = 'application/json' def setUp(self): super(HideServerAddressesTest, self).setUp() fakes.stub_out_nw_api(self.stubs) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app_v3( init_only=('servers', 'os-hide-server-addresses'))) return res @staticmethod def _get_server(body): return jsonutils.loads(body).get('server') @staticmethod def _get_servers(body): return jsonutils.loads(body).get('servers') @staticmethod def _get_addresses(server): return server.get('addresses', SENTINEL) def _check_addresses(self, addresses, exists): self.assertTrue(addresses is not SENTINEL) if exists: self.assertTrue(addresses) else: self.assertFalse(addresses) def test_show_hides_in_building(self): instance_id = 1 uuid = fakes.get_fake_uuid(instance_id) self.stubs.Set(compute.api.API, 'get', fake_compute_get(instance_id, uuid=uuid, vm_state=vm_states.BUILDING)) res = self._make_request('/v3/servers/%s' % uuid) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) addresses = self._get_addresses(server) self._check_addresses(addresses, exists=False) def test_show(self): instance_id = 1 uuid = fakes.get_fake_uuid(instance_id) self.stubs.Set(compute.api.API, 'get', fake_compute_get(instance_id, uuid=uuid, vm_state=vm_states.ACTIVE)) res = self._make_request('/v3/servers/%s' % uuid) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) addresses = self._get_addresses(server) self._check_addresses(addresses, exists=True) def test_detail_hides_building_server_addresses(self): instance_0 = fakes.stub_instance(0, uuid=fakes.get_fake_uuid(0), vm_state=vm_states.ACTIVE) instance_1 = fakes.stub_instance(1, uuid=fakes.get_fake_uuid(1), vm_state=vm_states.BUILDING) instances = [instance_0, instance_1] def get_all(*args, **kwargs): fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list( args[1], instance_obj.InstanceList(), instances, fields) self.stubs.Set(compute.api.API, 'get_all', get_all) res = self._make_request('/v3/servers/detail') self.assertEqual(res.status_int, 200) servers = self._get_servers(res.body) self.assertEqual(len(servers), len(instances)) for instance, server in itertools.izip(instances, servers): addresses = self._get_addresses(server) exists = (instance['vm_state'] == vm_states.ACTIVE) self._check_addresses(addresses, exists=exists) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) res = self._make_request('/v3/servers/' + fakes.get_fake_uuid()) self.assertEqual(res.status_int, 404) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_shelve.py0000664000175400017540000001315712323721477027152 0ustar jenkinsjenkins00000000000000# All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid import webob from nova.api.openstack.compute.plugins.v3 import shelve from nova.compute import api as compute_api from nova import db from nova import exception from nova.openstack.common import policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) def fake_auth_context(context): return True class ShelvePolicyTest(test.NoDBTestCase): def setUp(self): super(ShelvePolicyTest, self).setUp() self.controller = shelve.ShelveController() def test_shelve_restricted_by_role(self): rules = policy.Rules({'compute_extension:v3:os-shelve:shelve': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve, req, str(uuid.uuid4()), {}) def test_shelve_allowed(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:v3:os-shelve:shelve': policy.parse_rule('')}) policy.set_rules(rules) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequestV3.blank('/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve, req, str(uuid.uuid4()), {}) def test_shelve_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(shelve, 'auth_shelve', fake_auth_context) self.stubs.Set(compute_api.API, 'shelve', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequestV3.blank('/123/servers/12/os-shelve') self.assertRaises(webob.exc.HTTPConflict, self.controller._shelve, req, str(uuid.uuid4()), {}) def test_unshelve_restricted_by_role(self): rules = policy.Rules({'compute_extension:v3:os-shelve:unshelve': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._unshelve, req, str(uuid.uuid4()), {}) def test_unshelve_allowed(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:v3:os-shelve:unshelve': policy.parse_rule('')}) policy.set_rules(rules) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequestV3.blank('/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._unshelve, req, str(uuid.uuid4()), {}) def test_unshelve_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(shelve, 'auth_unshelve', fake_auth_context) self.stubs.Set(compute_api.API, 'unshelve', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequestV3.blank('/123/servers/12/os-shelve') self.assertRaises(webob.exc.HTTPConflict, self.controller._unshelve, req, str(uuid.uuid4()), {}) def test_shelve_offload_restricted_by_role(self): rules = policy.Rules({'compute_extension:v3:os-shelve:shelve_offload': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve_offload, req, str(uuid.uuid4()), {}) def test_shelve_offload_allowed(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:v3:shelve_offload': policy.parse_rule('')}) policy.set_rules(rules) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequestV3.blank('/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve_offload, req, str(uuid.uuid4()), {}) def test_shelve_offload_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(shelve, 'auth_shelve_offload', fake_auth_context) self.stubs.Set(compute_api.API, 'shelve_offload', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequestV3.blank('/123/servers/12/os-shelve') self.assertRaises(webob.exc.HTTPConflict, self.controller._shelve_offload, req, str(uuid.uuid4()), {}) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_server_metadata.py0000664000175400017540000005455112323721510031021 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from oslo.config import cfg import webob from nova.api.openstack.compute.plugins.v3 import server_metadata from nova.compute import rpcapi as compute_rpcapi from nova.compute import vm_states import nova.db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance CONF = cfg.CONF def return_create_instance_metadata_max(context, server_id, metadata, delete): return stub_max_server_metadata() def return_create_instance_metadata(context, server_id, metadata, delete): return stub_server_metadata() def fake_instance_save(inst, **kwargs): inst.metadata = stub_server_metadata() inst.obj_reset_changes() def return_server_metadata(context, server_id): if not isinstance(server_id, str) or not len(server_id) == 36: msg = 'id %s must be a uuid in return server metadata' % server_id raise Exception(msg) return stub_server_metadata() def return_empty_server_metadata(context, server_id): return {} def delete_server_metadata(context, server_id, key): pass def stub_server_metadata(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", } return metadata def stub_max_server_metadata(): metadata = {"metadata": {}} for num in range(CONF.quota_metadata_items): metadata['metadata']['key%i' % num] = "blah" return metadata def return_server(context, server_id, columns_to_join=None): return fake_instance.fake_db_instance( **{'id': server_id, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'launched_at': timeutils.utcnow(), 'vm_state': vm_states.ACTIVE}) def return_server_by_uuid(context, server_uuid, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'id': 1, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'launched_at': timeutils.utcnow(), 'metadata': stub_server_metadata(), 'vm_state': vm_states.ACTIVE}) def return_server_nonexistent(context, server_id, columns_to_join=None, use_slave=False): raise exception.InstanceNotFound(instance_id=server_id) def fake_change_instance_metadata(self, context, instance, diff): pass class BaseTest(test.TestCase): def setUp(self): super(BaseTest, self).setUp() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(nova.db, 'instance_get', return_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_by_uuid) self.stubs.Set(nova.db, 'instance_metadata_get', return_server_metadata) self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) self.controller = server_metadata.ServerMetadataController() self.uuid = str(uuid.uuid4()) self.url = '/fake/servers/%s/metadata' % self.uuid class ServerMetaDataTest(BaseTest): def test_index(self): req = fakes.HTTPRequestV3.blank(self.url) res_dict = self.controller.index(req, self.uuid) expected = { 'metadata': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', }, } self.assertEqual(expected, res_dict) def test_index_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_nonexistent) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.url) def test_index_no_data(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_empty_server_metadata) req = fakes.HTTPRequestV3.blank(self.url) res_dict = self.controller.index(req, self.uuid) expected = {'metadata': {}} self.assertEqual(expected, res_dict) def test_show(self): req = fakes.HTTPRequestV3.blank(self.url + '/key2') res_dict = self.controller.show(req, self.uuid, 'key2') expected = {'metadata': {'key2': 'value2'}} self.assertEqual(expected, res_dict) def test_show_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_nonexistent) req = fakes.HTTPRequestV3.blank(self.url + '/key2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, 'key2') def test_show_meta_not_found(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_empty_server_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, 'key6') def test_delete(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_metadata) self.stubs.Set(nova.db, 'instance_metadata_delete', delete_server_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key2') req.method = 'DELETE' res = self.controller.delete(req, self.uuid, 'key2') self.assertIsNone(res) def test_delete_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, 'key1') def test_delete_meta_not_found(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_empty_server_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key6') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, 'key6') def test_create(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_metadata) self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key9": "value9"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.uuid, body) body['metadata'].update({ "key1": "value1", "key2": "value2", "key3": "value3", }) self.assertEqual(body, res_dict) self.assertEqual(self.controller.create.wsgi_code, 201) def test_create_empty_body(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, None) def test_create_item_empty_key(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, body) def test_create_item_non_dict(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": None} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, body) def test_create_item_key_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.uuid, body) def test_create_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'POST' body = {"metadata": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.uuid, body) def test_update_metadata(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.content_type = 'application/json' expected = { 'metadata': { 'key1': 'updatedvalue', 'key29': 'newkey', } } req.body = jsonutils.dumps(expected) response = self.controller.update_all(req, self.uuid, expected) self.assertEqual(expected, response) def test_update_all(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.uuid, expected) self.assertEqual(expected, res_dict) def test_update_all_empty_container(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': {}} req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.uuid, expected) self.assertEqual(expected, res_dict) def test_update_all_malformed_container(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'meta': {}} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.uuid, expected) def test_update_all_malformed_data(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': ['asdf']} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.uuid, expected) def test_update_all_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get', return_server_nonexistent) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = {'metadata': {'key10': 'value10'}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update_all, req, '100', body) def test_update_item(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res_dict = self.controller.update(req, self.uuid, 'key1', body) expected = {'metadata': {'key1': 'value1'}} self.assertEqual(expected, res_dict) def test_update_item_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequestV3.blank('/fake/servers/asdf/metadata/key1') req.method = 'PUT' body = {"metadata": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, self.uuid, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'key1', None) def test_update_item_empty_key(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, '', body) def test_update_item_key_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.uuid, ("a" * 260), body) def test_update_item_value_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {"key1": ("a" * 260)}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.uuid, "key1", body) def test_update_item_too_many_keys(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/key1') req.method = 'PUT' body = {"metadata": {"key1": "value1", "key2": "value2"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/bad') req.method = 'PUT' body = {"metadata": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'bad', body) def test_update_item_non_dict(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url + '/bad') req.method = 'PUT' body = {"metadata": None} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'bad', body) def test_too_many_metadata_items_on_create(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) data = {"metadata": {}} for num in range(CONF.quota_metadata_items + 1): data['metadata']['key%i' % num] = "blah" req = fakes.HTTPRequestV3.blank(self.url) req.method = 'POST' req.body = jsonutils.dumps(data) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.uuid, data) def test_create_item_value_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.uuid, data) def test_too_many_metadata_items_on_update_item(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) data = {"metadata": {}} for num in range(CONF.quota_metadata_items + 1): data['metadata']['key%i' % num] = "blah" req = fakes.HTTPRequestV3.blank(self.url) req.method = 'PUT' req.body = jsonutils.dumps(data) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update_all, req, self.uuid, data) def test_invalid_metadata_items_on_update_item(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'PUT' req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update_all, req, self.uuid, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update_all, req, self.uuid, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.uuid, data) class BadStateServerMetaDataTest(BaseTest): def setUp(self): super(BadStateServerMetaDataTest, self).setUp() self.stubs.Set(nova.db, 'instance_get', self._return_server_in_build) self.stubs.Set(nova.db, 'instance_get_by_uuid', self._return_server_in_build_by_uuid) self.stubs.Set(nova.db, 'instance_metadata_delete', delete_server_metadata) def test_invalid_state_on_delete(self): req = fakes.HTTPRequestV3.blank(self.url + '/key2') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPConflict, self.controller.delete, req, self.uuid, 'key2') def test_invalid_state_on_update_metadata(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequestV3.blank(self.url) req.method = 'POST' req.content_type = 'application/json' expected = { 'metadata': { 'key1': 'updatedvalue', 'key29': 'newkey', } } req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPConflict, self.controller.update_all, req, self.uuid, expected) def _return_server_in_build(self, context, server_id, columns_to_join=None): return fake_instance.fake_db_instance( **{'id': server_id, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'vm_state': vm_states.BUILDING}) def _return_server_in_build_by_uuid(self, context, server_uuid, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'id': 1, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'vm_state': vm_states.BUILDING}) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_agents.py0000664000175400017540000003321612323721477027143 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from webob import exc from nova.api.openstack.compute.plugins.v3 import agents from nova import context from nova import db from nova.db.sqlalchemy import models from nova import exception from nova import test fake_agents_list = [{'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'id': 1}, {'hypervisor': 'kvm', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx1', 'md5hash': 'add6bb58e139be103324d04d82d8f546', 'id': 2}, {'hypervisor': 'xen', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx2', 'md5hash': 'add6bb58e139be103324d04d82d8f547', 'id': 3}, {'hypervisor': 'xen', 'os': 'win', 'architecture': 'power', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx3', 'md5hash': 'add6bb58e139be103324d04d82d8f548', 'id': 4}, ] def fake_agent_build_get_all(context, hypervisor): agent_build_all = [] for agent in fake_agents_list: if hypervisor and hypervisor != agent['hypervisor']: continue agent_build_ref = models.AgentBuild() agent_build_ref.update(agent) agent_build_all.append(agent_build_ref) return agent_build_all def fake_agent_build_update(context, agent_build_id, values): pass def fake_agent_build_destroy(context, agent_update_id): pass def fake_agent_build_create(context, values): values['id'] = 1 agent_build_ref = models.AgentBuild() agent_build_ref.update(values) return agent_build_ref class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} GET = {} class FakeRequestWithHypervisor(object): environ = {"nova.context": context.get_admin_context()} GET = {'hypervisor': 'kvm'} def fake_agent_build_create_with_exited_agent(context, values): raise exception.AgentBuildExists(**values) class AgentsTest(test.NoDBTestCase): def setUp(self): super(AgentsTest, self).setUp() self.stubs.Set(db, "agent_build_get_all", fake_agent_build_get_all) self.stubs.Set(db, "agent_build_update", fake_agent_build_update) self.stubs.Set(db, "agent_build_destroy", fake_agent_build_destroy) self.stubs.Set(db, "agent_build_create", fake_agent_build_create) self.context = context.get_admin_context() self.controller = agents.AgentController() def test_agents_create(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} response = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1}} res_dict = self.controller.create(req, body=body) self.assertEqual(res_dict, response) self.assertEqual(self.controller.create.wsgi_code, 201) def test_agents_create_with_existed_agent(self): self.stubs.Set(db, 'agent_build_create', fake_agent_build_create_with_exited_agent) req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} self.assertRaises(exc.HTTPConflict, self.controller.create, req, body=body) def test_agents_create_without_md5hash(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx'}} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_without_url(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_without_version(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_without_architecture(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_without_os(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_without_hypervisor(self): req = FakeRequest() body = {'agent': {'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_with_wrong_type(self): req = FakeRequest() body = {'agent': None} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_with_empty_type(self): req = FakeRequest() body = {} self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def _test_agents_create_with_invalid_length(self, key): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} body['agent'][key] = 'x' * 256 self.assertRaises(exception.ValidationError, self.controller.create, req, body=body) def test_agents_create_with_invalid_length_hypervisor(self): self._test_agents_create_with_invalid_length('hypervisor') def test_agents_create_with_invalid_length_os(self): self._test_agents_create_with_invalid_length('os') def test_agents_create_with_invalid_length_architecture(self): self._test_agents_create_with_invalid_length('architecture') def test_agents_create_with_invalid_length_version(self): self._test_agents_create_with_invalid_length('version') def test_agents_create_with_invalid_length_url(self): self._test_agents_create_with_invalid_length('url') def test_agents_create_with_invalid_length_md5hash(self): self._test_agents_create_with_invalid_length('md5hash') def test_agents_delete(self): req = FakeRequest() self.controller.delete(req, 1) def test_agents_list(self): req = FakeRequest() res_dict = self.controller.index(req) agents_list = [{'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1}, {'hypervisor': 'kvm', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx1', 'md5hash': 'add6bb58e139be103324d04d82d8f546', 'agent_id': 2}, {'hypervisor': 'xen', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx2', 'md5hash': 'add6bb58e139be103324d04d82d8f547', 'agent_id': 3}, {'hypervisor': 'xen', 'os': 'win', 'architecture': 'power', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx3', 'md5hash': 'add6bb58e139be103324d04d82d8f548', 'agent_id': 4}, ] self.assertEqual(res_dict, {'agents': agents_list}) def test_agents_list_with_hypervisor(self): req = FakeRequestWithHypervisor() res_dict = self.controller.index(req) response = [{'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1}, {'hypervisor': 'kvm', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx1', 'md5hash': 'add6bb58e139be103324d04d82d8f546', 'agent_id': 2}, ] self.assertEqual(res_dict, {'agents': response}) def test_agents_update(self): req = FakeRequest() body = {'agent': {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} response = {'agent': {'agent_id': 1, 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} res_dict = self.controller.update(req, 1, body=body) self.assertEqual(res_dict, response) def test_agents_update_without_md5hash(self): req = FakeRequest() body = {'agent': {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx'}} self.assertRaises(exception.ValidationError, self.controller.update, req, 1, body=body) def test_agents_update_without_url(self): req = FakeRequest() body = {'agent': {'version': '7.0'}} self.assertRaises(exception.ValidationError, self.controller.update, req, 1, body=body) def test_agents_update_without_version(self): req = FakeRequest() body = {'agent': {}} self.assertRaises(exception.ValidationError, self.controller.update, req, 1, body=body) def test_agents_update_with_wrong_type(self): req = FakeRequest() body = {'agent': None} self.assertRaises(exception.ValidationError, self.controller.update, req, 1, body=body) def test_agents_update_with_empty(self): req = FakeRequest() body = {} self.assertRaises(exception.ValidationError, self.controller.update, req, 1, body=body) def _test_agents_update_with_invalid_length(self, key): req = FakeRequest() body = {'agent': {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} body['agent'][key] = 'x' * 256 self.assertRaises(exception.ValidationError, self.controller.update, req, 1, body=body) def test_agents_update_with_invalid_length_version(self): self._test_agents_update_with_invalid_length('version') def test_agents_update_with_invalid_length_url(self): self._test_agents_update_with_invalid_length('url') def test_agents_update_with_invalid_length_md5hash(self): self._test_agents_update_with_invalid_length('md5hash') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_rescue.py0000664000175400017540000001612712323721510027136 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from oslo.config import cfg import webob from nova import compute from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') def rescue(self, context, instance, rescue_password=None): pass def unrescue(self, context, instance): pass class RescueTest(test.NoDBTestCase): def setUp(self): super(RescueTest, self).setUp() def fake_compute_get(*args, **kwargs): uuid = '70f6db34-de8d-4fbd-aafb-4065bdfa6114' return {'id': 1, 'uuid': uuid} self.stubs.Set(compute.api.API, "get", fake_compute_get) self.stubs.Set(compute.api.API, "rescue", rescue) self.stubs.Set(compute.api.API, "unrescue", unrescue) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-rescue')) def test_rescue_with_preset_password(self): body = {"rescue": {"admin_password": "AABBCC112233"}} req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(202, resp.status_int) resp_json = jsonutils.loads(resp.body) self.assertEqual("AABBCC112233", resp_json['admin_password']) def test_rescue_generates_password(self): body = dict(rescue=None) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(202, resp.status_int) resp_json = jsonutils.loads(resp.body) self.assertEqual(CONF.password_length, len(resp_json['admin_password'])) def test_rescue_with_none(self): body = dict(rescue=None) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(202, resp.status_int) def test_rescue_with_empty_dict(self): body = dict(rescue=dict()) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(202, resp.status_int) def test_rescue_disable_password(self): self.flags(enable_instance_password=False) body = dict(rescue=None) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(202, resp.status_int) resp_json = jsonutils.loads(resp.body) self.assertNotIn('admin_password', resp_json) def test_rescue_of_rescued_instance(self): body = dict(rescue=None) def fake_rescue(*args, **kwargs): raise exception.InstanceInvalidState('fake message') self.stubs.Set(compute.api.API, "rescue", fake_rescue) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(409, resp.status_int) def test_unrescue(self): body = dict(unrescue=None) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(202, resp.status_int) def test_unrescue_of_active_instance(self): body = dict(unrescue=None) def fake_unrescue(*args, **kwargs): raise exception.InstanceInvalidState('fake message') self.stubs.Set(compute.api.API, "unrescue", fake_unrescue) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(409, resp.status_int) def test_rescue_raises_unrescuable(self): body = dict(rescue=None) def fake_rescue(*args, **kwargs): raise exception.InstanceNotRescuable('fake message') self.stubs.Set(compute.api.API, "rescue", fake_rescue) req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(400, resp.status_int) def test_rescue_with_invalid_property(self): body = {"rescue": {"test": "test"}} req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(400, resp.status_int) @mock.patch('nova.compute.api.API.rescue') def test_rescue_raises_not_implemented(self, rescue_mock): body = dict(rescue=None) def fake_rescue(*args, **kwargs): raise NotImplementedError('fake message') rescue_mock.side_effect = fake_rescue req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 501) @mock.patch('nova.compute.api.API.unrescue') def test_unrescue_raises_not_implemented(self, unrescue_mock): body = dict(unrescue=None) def fake_unrescue(*args, **kwargs): raise NotImplementedError('fake message') unrescue_mock.side_effect = fake_unrescue req = webob.Request.blank('/v3/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 501) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_services.py0000664000175400017540000004161012323721477027502 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import calendar import datetime import iso8601 import mock import webob.exc from nova.api.openstack.compute.plugins.v3 import services from nova import availability_zones from nova.compute import cells_api from nova import context from nova import db from nova import exception from nova.openstack.common import timeutils from nova.servicegroup.drivers import db as db_driver from nova import test from nova.tests.api.openstack import fakes from nova.tests.objects import test_service fake_services_list = [ dict(test_service.fake_service, binary='nova-scheduler', host='host1', id=1, disabled=True, topic='scheduler', updated_at=datetime.datetime(2012, 10, 29, 13, 42, 2), created_at=datetime.datetime(2012, 9, 18, 2, 46, 27), disabled_reason='test1'), dict(test_service.fake_service, binary='nova-compute', host='host1', id=2, disabled=True, topic='compute', updated_at=datetime.datetime(2012, 10, 29, 13, 42, 5), created_at=datetime.datetime(2012, 9, 18, 2, 46, 27), disabled_reason='test2'), dict(test_service.fake_service, binary='nova-scheduler', host='host2', id=3, disabled=False, topic='scheduler', updated_at=datetime.datetime(2012, 9, 19, 6, 55, 34), created_at=datetime.datetime(2012, 9, 18, 2, 46, 28), disabled_reason=''), dict(test_service.fake_service, binary='nova-compute', host='host2', id=4, disabled=True, topic='compute', updated_at=datetime.datetime(2012, 9, 18, 8, 3, 38), created_at=datetime.datetime(2012, 9, 18, 2, 46, 28), disabled_reason='test4'), ] class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} GET = {} class FakeRequestWithService(object): environ = {"nova.context": context.get_admin_context()} GET = {"binary": "nova-compute"} class FakeRequestWithHost(object): environ = {"nova.context": context.get_admin_context()} GET = {"host": "host1"} class FakeRequestWithHostService(object): environ = {"nova.context": context.get_admin_context()} GET = {"host": "host1", "binary": "nova-compute"} def fake_service_get_all(services): def service_get_all(context, filters=None, set_zones=False): if set_zones or 'availability_zone' in filters: return availability_zones.set_availability_zones(context, services) return services return service_get_all def fake_db_api_service_get_all(context, disabled=None): return fake_services_list def fake_db_service_get_by_host_binary(services): def service_get_by_host_binary(context, host, binary): for service in services: if service['host'] == host and service['binary'] == binary: return service raise exception.HostBinaryNotFound(host=host, binary=binary) return service_get_by_host_binary def fake_service_get_by_host_binary(context, host, binary): fake = fake_db_service_get_by_host_binary(fake_services_list) return fake(context, host, binary) def _service_get_by_id(services, value): for service in services: if service['id'] == value: return service return None def fake_db_service_update(services): def service_update(context, service_id, values): service = _service_get_by_id(services, service_id) if service is None: raise exception.ServiceNotFound(service_id=service_id) return service return service_update def fake_service_update(context, service_id, values): fake = fake_db_service_update(fake_services_list) return fake(context, service_id, values) def fake_utcnow(): return datetime.datetime(2012, 10, 29, 13, 42, 11) def fake_utcnow_ts(): d = fake_utcnow() return calendar.timegm(d.utctimetuple()) class ServicesTest(test.TestCase): def setUp(self): super(ServicesTest, self).setUp() self.controller = services.ServiceController() self.stubs.Set(timeutils, "utcnow", fake_utcnow) self.stubs.Set(timeutils, "utcnow_ts", fake_utcnow_ts) self.stubs.Set(self.controller.host_api, "service_get_all", fake_service_get_all(fake_services_list)) self.stubs.Set(db, "service_get_by_args", fake_db_service_get_by_host_binary(fake_services_list)) self.stubs.Set(db, "service_update", fake_db_service_update(fake_services_list)) def test_services_list(self): req = FakeRequest() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'id': 1, 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'disabled_reason': 'test1'}, {'binary': 'nova-compute', 'host': 'host1', 'id': 2, 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'nova-scheduler', 'host': 'host2', 'id': 3, 'zone': 'internal', 'status': 'enabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 19, 6, 55, 34), 'disabled_reason': ''}, {'binary': 'nova-compute', 'host': 'host2', 'id': 4, 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_service_list_with_host(self): req = FakeRequestWithHost() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'host': 'host1', 'id': 1, 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'disabled_reason': 'test1'}, {'binary': 'nova-compute', 'host': 'host1', 'id': 2, 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_service_list_with_service(self): req = FakeRequestWithService() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-compute', 'host': 'host1', 'id': 2, 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'nova-compute', 'host': 'host2', 'id': 4, 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_service_list_with_host_service(self): req = FakeRequestWithHostService() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-compute', 'host': 'host1', 'id': 2, 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_services_enable(self): def _service_update(context, service_id, values): self.assertIsNone(values['disabled_reason']) return test_service.fake_service self.stubs.Set(db, "service_update", _service_update) body = {'service': {'host': 'host1', 'binary': 'nova-compute'}} req = fakes.HTTPRequestV3.blank('/os-services/enable') res_dict = self.controller.update(req, "enable", body) self.assertEqual(res_dict['service']['status'], 'enabled') self.assertNotIn('disabled_reason', res_dict['service']) def test_services_enable_with_invalid_host(self): body = {'service': {'host': 'invalid', 'binary': 'nova-compute'}} req = fakes.HTTPRequestV3.blank('/os-services/enable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "enable", body) def test_services_enable_with_invalid_binary(self): body = {'service': {'host': 'host1', 'binary': 'invalid'}} req = fakes.HTTPRequestV3.blank('/os-services/enable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "enable", body) # This test is just to verify that the servicegroup API gets used when # calling this API. def test_services_with_exception(self): def dummy_is_up(self, dummy): raise KeyError() self.stubs.Set(db_driver.DbDriver, 'is_up', dummy_is_up) req = FakeRequestWithHostService() self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.index, req) def test_services_disable(self): req = fakes.HTTPRequestV3.blank('/os-services/disable') body = {'service': {'host': 'host1', 'binary': 'nova-compute'}} res_dict = self.controller.update(req, "disable", body) self.assertEqual(res_dict['service']['status'], 'disabled') self.assertNotIn('disabled_reason', res_dict['service']) def test_services_disable_with_invalid_host(self): body = {'service': {'host': 'invalid', 'binary': 'nova-compute'}} req = fakes.HTTPRequestV3.blank('/os-services/disable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "disable", body) def test_services_disable_with_invalid_binary(self): body = {'service': {'host': 'host1', 'binary': 'invalid'}} req = fakes.HTTPRequestV3.blank('/os-services/disable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "disable", body) def test_services_disable_log_reason(self): req = \ fakes.HTTPRequestV3.blank('/os-services/disable-log-reason') body = {'service': {'host': 'host1', 'binary': 'nova-compute', 'disabled_reason': 'test-reason'}} res_dict = self.controller.update(req, "disable-log-reason", body) self.assertEqual(res_dict['service']['status'], 'disabled') self.assertEqual(res_dict['service']['disabled_reason'], 'test-reason') def test_mandatory_reason_field(self): req = \ fakes.HTTPRequestV3.blank('/os-services/disable-log-reason') body = {'service': {'host': 'host1', 'binary': 'nova-compute'}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, "disable-log-reason", body) def test_invalid_reason_field(self): reason = ' ' self.assertFalse(self.controller._is_valid_as_reason(reason)) reason = 'a' * 256 self.assertFalse(self.controller._is_valid_as_reason(reason)) reason = 'it\'s a valid reason.' self.assertTrue(self.controller._is_valid_as_reason(reason)) def test_services_delete(self): request = fakes.HTTPRequestV3.blank('/v3/os-services/1', use_admin_context=True) request.method = 'DELETE' with mock.patch.object(self.controller.host_api, 'service_delete') as service_delete: response = self.controller.delete(request, '1') service_delete.assert_called_once_with( request.environ['nova.context'], '1') self.assertEqual(self.controller.delete.wsgi_code, 204) def test_services_delete_not_found(self): request = fakes.HTTPRequestV3.blank('/v3/os-services/abc', use_admin_context=True) request.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, request, 'abc') class ServicesCellsTest(test.TestCase): def setUp(self): super(ServicesCellsTest, self).setUp() host_api = cells_api.HostAPI() self.controller = services.ServiceController() self.controller.host_api = host_api self.stubs.Set(timeutils, "utcnow", fake_utcnow) self.stubs.Set(timeutils, "utcnow_ts", fake_utcnow_ts) services_list = [] for service in fake_services_list: service = service.copy() service['id'] = 'cell1@%d' % service['id'] services_list.append(service) self.stubs.Set(host_api.cells_rpcapi, "service_get_all", fake_service_get_all(services_list)) def test_services_detail(self): req = FakeRequest() res_dict = self.controller.index(req) utc = iso8601.iso8601.Utc() response = {'services': [ {'id': 'cell1@1', 'binary': 'nova-scheduler', 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2, tzinfo=utc), 'disabled_reason': 'test1'}, {'id': 'cell1@2', 'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5, tzinfo=utc), 'disabled_reason': 'test2'}, {'id': 'cell1@3', 'binary': 'nova-scheduler', 'host': 'host2', 'zone': 'internal', 'status': 'enabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 19, 6, 55, 34, tzinfo=utc), 'disabled_reason': ''}, {'id': 'cell1@4', 'binary': 'nova-compute', 'host': 'host2', 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38, tzinfo=utc), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_access_ips.py0000664000175400017540000003063212323721477027775 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy import webob from nova.api.openstack.compute.plugins.v3 import access_ips from nova.api.openstack import wsgi from nova import test from nova.tests.api.openstack import fakes class AccessIPsExtTest(test.NoDBTestCase): def setUp(self): super(AccessIPsExtTest, self).setUp() self.access_ips_ext = access_ips.AccessIPs(None) def _test(self, func): server_dict = {access_ips.AccessIPs.v4_key: '1.1.1.1', access_ips.AccessIPs.v6_key: 'fe80::'} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v4': '1.1.1.1', 'access_ip_v6': 'fe80::'}) def _test_with_ipv4_only(self, func): server_dict = {access_ips.AccessIPs.v4_key: '1.1.1.1'} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v4': '1.1.1.1'}) def _test_with_ipv6_only(self, func): server_dict = {access_ips.AccessIPs.v6_key: 'fe80::'} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v6': 'fe80::'}) def _test_without_ipv4_and_ipv6(self, func): server_dict = {} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {}) def _test_with_invalid_ipv4(self, func): server_dict = {access_ips.AccessIPs.v4_key: '1.1.1.1.1.1'} create_kwargs = {} self.assertRaises(webob.exc.HTTPBadRequest, func, server_dict, create_kwargs) def _test_with_invalid_ipv6(self, func): server_dict = {access_ips.AccessIPs.v6_key: 'fe80:::::::'} create_kwargs = {} self.assertRaises(webob.exc.HTTPBadRequest, func, server_dict, create_kwargs) def _test_with_ipv4_null(self, func): server_dict = {access_ips.AccessIPs.v4_key: None} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v4': None}) def _test_with_ipv6_null(self, func): server_dict = {access_ips.AccessIPs.v6_key: None} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v6': None}) def _test_with_ipv4_blank(self, func): server_dict = {access_ips.AccessIPs.v4_key: ''} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v4': None}) def _test_with_ipv6_blank(self, func): server_dict = {access_ips.AccessIPs.v6_key: ''} create_kwargs = {} func(server_dict, create_kwargs) self.assertEqual(create_kwargs, {'access_ip_v6': None}) def test_server_create(self): self._test(self.access_ips_ext.server_create) def test_server_create_with_ipv4_only(self): self._test_with_ipv4_only(self.access_ips_ext.server_create) def test_server_create_with_ipv6_only(self): self._test_with_ipv6_only(self.access_ips_ext.server_create) def test_server_create_without_ipv4_and_ipv6(self): self._test_without_ipv4_and_ipv6(self.access_ips_ext.server_create) def test_server_create_with_invalid_ipv4(self): self._test_with_invalid_ipv4(self.access_ips_ext.server_create) def test_server_create_with_invalid_ipv6(self): self._test_with_invalid_ipv6(self.access_ips_ext.server_create) def test_server_create_with_ipv4_null(self): self._test_with_ipv4_null(self.access_ips_ext.server_create) def test_server_create_with_ipv6_null(self): self._test_with_ipv6_null(self.access_ips_ext.server_create) def test_server_create_with_ipv4_blank(self): self._test_with_ipv4_blank(self.access_ips_ext.server_create) def test_server_create_with_ipv6_blank(self): self._test_with_ipv6_blank(self.access_ips_ext.server_create) def test_server_update(self): self._test(self.access_ips_ext.server_update) def test_server_update_with_ipv4_only(self): self._test_with_ipv4_only(self.access_ips_ext.server_update) def test_server_update_with_ipv6_only(self): self._test_with_ipv6_only(self.access_ips_ext.server_update) def test_server_update_without_ipv4_and_ipv6(self): self._test_without_ipv4_and_ipv6(self.access_ips_ext.server_update) def test_server_update_with_invalid_ipv4(self): self._test_with_invalid_ipv4(self.access_ips_ext.server_update) def test_server_update_with_invalid_ipv6(self): self._test_with_invalid_ipv6(self.access_ips_ext.server_update) def test_server_update_with_ipv4_null(self): self._test_with_ipv4_null(self.access_ips_ext.server_update) def test_server_update_with_ipv6_null(self): self._test_with_ipv6_null(self.access_ips_ext.server_update) def test_server_update_with_ipv4_blank(self): self._test_with_ipv4_blank(self.access_ips_ext.server_update) def test_server_update_with_ipv6_blank(self): self._test_with_ipv6_blank(self.access_ips_ext.server_update) def test_server_rebuild(self): self._test(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_ipv4_only(self): self._test_with_ipv4_only(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_ipv6_only(self): self._test_with_ipv6_only(self.access_ips_ext.server_rebuild) def test_server_rebuild_without_ipv4_and_ipv6(self): self._test_without_ipv4_and_ipv6(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_invalid_ipv4(self): self._test_with_invalid_ipv4(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_invalid_ipv6(self): self._test_with_invalid_ipv6(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_ipv4_null(self): self._test_with_ipv4_null(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_ipv6_null(self): self._test_with_ipv6_null(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_ipv4_blank(self): self._test_with_ipv4_blank(self.access_ips_ext.server_rebuild) def test_server_rebuild_with_ipv6_blank(self): self._test_with_ipv6_blank(self.access_ips_ext.server_rebuild) class AccessIPsControllerTest(test.NoDBTestCase): def setUp(self): super(AccessIPsControllerTest, self).setUp() self.controller = access_ips.AccessIPsController() def _test_with_access_ips(self, func, kwargs={'id': 'fake'}): req = wsgi.Request({'nova.context': fakes.FakeRequestContext('fake_user', 'fake', is_admin=True)}) instance = {'uuid': 'fake', 'access_ip_v4': '1.1.1.1', 'access_ip_v6': 'fe80::'} req.cache_db_instance(instance) resp_obj = wsgi.ResponseObject( {"server": {'id': 'fake'}}) func(req, resp_obj, **kwargs) self.assertEqual(resp_obj.obj['server'][access_ips.AccessIPs.v4_key], '1.1.1.1') self.assertEqual(resp_obj.obj['server'][access_ips.AccessIPs.v6_key], 'fe80::') def _test_without_access_ips(self, func, kwargs={'id': 'fake'}): req = wsgi.Request({'nova.context': fakes.FakeRequestContext('fake_user', 'fake', is_admin=True)}) instance = {'uuid': 'fake', 'access_ip_v4': None, 'access_ip_v6': None} req.cache_db_instance(instance) resp_obj = wsgi.ResponseObject( {"server": {'id': 'fake'}}) func(req, resp_obj, **kwargs) self.assertEqual(resp_obj.obj['server'][access_ips.AccessIPs.v4_key], '') self.assertEqual(resp_obj.obj['server'][access_ips.AccessIPs.v6_key], '') def test_create(self): self._test_with_access_ips(self.controller.create, {'body': {}}) def test_create_without_access_ips(self): self._test_with_access_ips(self.controller.create, {'body': {}}) def test_create_with_reservation_id(self): req = wsgi.Request({'nova.context': fakes.FakeRequestContext('fake_user', 'fake', is_admin=True)}) expected_res = {'servers_reservation': {'reservation_id': 'test'}} body = copy.deepcopy(expected_res) resp_obj = wsgi.ResponseObject(body) self.controller.create(req, resp_obj, body) self.assertEqual(expected_res, resp_obj.obj) def test_show(self): self._test_with_access_ips(self.controller.show) def test_show_without_access_ips(self): self._test_without_access_ips(self.controller.show) def test_detail(self): req = wsgi.Request({'nova.context': fakes.FakeRequestContext('fake_user', 'fake', is_admin=True)}) instance1 = {'uuid': 'fake1', 'access_ip_v4': '1.1.1.1', 'access_ip_v6': 'fe80::'} instance2 = {'uuid': 'fake2', 'access_ip_v4': '1.1.1.2', 'access_ip_v6': 'fe81::'} req.cache_db_instance(instance1) req.cache_db_instance(instance2) resp_obj = wsgi.ResponseObject( {"servers": [{'id': 'fake1'}, {'id': 'fake2'}]}) self.controller.detail(req, resp_obj) self.assertEqual( resp_obj.obj['servers'][0][access_ips.AccessIPs.v4_key], '1.1.1.1') self.assertEqual( resp_obj.obj['servers'][0][access_ips.AccessIPs.v6_key], 'fe80::') self.assertEqual( resp_obj.obj['servers'][1][access_ips.AccessIPs.v4_key], '1.1.1.2') self.assertEqual( resp_obj.obj['servers'][1][access_ips.AccessIPs.v6_key], 'fe81::') def test_detail_without_access_ips(self): req = wsgi.Request({'nova.context': fakes.FakeRequestContext('fake_user', 'fake', is_admin=True)}) instance1 = {'uuid': 'fake1', 'access_ip_v4': None, 'access_ip_v6': None} instance2 = {'uuid': 'fake2', 'access_ip_v4': None, 'access_ip_v6': None} req.cache_db_instance(instance1) req.cache_db_instance(instance2) resp_obj = wsgi.ResponseObject( {"servers": [{'id': 'fake1'}, {'id': 'fake2'}]}) self.controller.detail(req, resp_obj) self.assertEqual( resp_obj.obj['servers'][0][access_ips.AccessIPs.v4_key], '') self.assertEqual( resp_obj.obj['servers'][0][access_ips.AccessIPs.v6_key], '') self.assertEqual( resp_obj.obj['servers'][1][access_ips.AccessIPs.v4_key], '') self.assertEqual( resp_obj.obj['servers'][1][access_ips.AccessIPs.v6_key], '') def test_update(self): self._test_with_access_ips(self.controller.update, {'id': 'fake', 'body': {}}) def test_update_without_access_ips(self): self._test_without_access_ips(self.controller.update, {'id': 'fake', 'body': {}}) def test_rebuild(self): self._test_with_access_ips(self.controller.rebuild, {'id': 'fake', 'body': {}}) def test_rebuild_without_access_ips(self): self._test_without_access_ips(self.controller.rebuild, {'id': 'fake', 'body': {}}) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_extension_info.py0000664000175400017540000001013012323721477030677 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import extension_info from nova import exception from nova import policy from nova import test from nova.tests.api.openstack import fakes class fake_extension(object): def __init__(self, name, alias, description, version): self.name = name self.alias = alias self.__doc__ = description self.version = version fake_extensions = { 'ext1-alias': fake_extension('ext1', 'ext1-alias', 'ext1 description', 1), 'ext2-alias': fake_extension('ext2', 'ext2-alias', 'ext2 description', 2), 'ext3-alias': fake_extension('ext3', 'ext3-alias', 'ext3 description', 1) } def fake_policy_enforce(context, action, target, do_raise=True): return True def fake_policy_enforce_selective(context, action, target, do_raise=True): if action == 'compute_extension:v3:ext1-alias:discoverable': raise exception.NotAuthorized else: return True class ExtensionInfoTest(test.NoDBTestCase): def setUp(self): super(ExtensionInfoTest, self).setUp() ext_info = plugins.LoadedExtensionInfo() ext_info.extensions = fake_extensions self.controller = extension_info.ExtensionInfoController(ext_info) def test_extension_info_list(self): self.stubs.Set(policy, 'enforce', fake_policy_enforce) req = fakes.HTTPRequestV3.blank('/extensions') res_dict = self.controller.index(req) self.assertEqual(3, len(res_dict['extensions'])) for e in res_dict['extensions']: self.assertIn(e['alias'], fake_extensions) self.assertEqual(e['name'], fake_extensions[e['alias']].name) self.assertEqual(e['alias'], fake_extensions[e['alias']].alias) self.assertEqual(e['description'], fake_extensions[e['alias']].__doc__) self.assertEqual(e['version'], fake_extensions[e['alias']].version) def test_extension_info_show(self): self.stubs.Set(policy, 'enforce', fake_policy_enforce) req = fakes.HTTPRequestV3.blank('/extensions/ext1-alias') res_dict = self.controller.show(req, 'ext1-alias') self.assertEqual(1, len(res_dict)) self.assertEqual(res_dict['extension']['name'], fake_extensions['ext1-alias'].name) self.assertEqual(res_dict['extension']['alias'], fake_extensions['ext1-alias'].alias) self.assertEqual(res_dict['extension']['description'], fake_extensions['ext1-alias'].__doc__) self.assertEqual(res_dict['extension']['version'], fake_extensions['ext1-alias'].version) def test_extension_info_list_not_all_discoverable(self): self.stubs.Set(policy, 'enforce', fake_policy_enforce_selective) req = fakes.HTTPRequestV3.blank('/extensions') res_dict = self.controller.index(req) self.assertEqual(2, len(res_dict['extensions'])) for e in res_dict['extensions']: self.assertNotEqual('ext1-alias', e['alias']) self.assertIn(e['alias'], fake_extensions) self.assertEqual(e['name'], fake_extensions[e['alias']].name) self.assertEqual(e['alias'], fake_extensions[e['alias']].alias) self.assertEqual(e['description'], fake_extensions[e['alias']].__doc__) self.assertEqual(e['version'], fake_extensions[e['alias']].version) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_multinic.py0000664000175400017540000001204212323721477027500 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova import compute from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes UUID = '70f6db34-de8d-4fbd-aafb-4065bdfa6114' last_add_fixed_ip = (None, None) last_remove_fixed_ip = (None, None) def compute_api_add_fixed_ip(self, context, instance, network_id): global last_add_fixed_ip last_add_fixed_ip = (instance['uuid'], network_id) def compute_api_remove_fixed_ip(self, context, instance, address): global last_remove_fixed_ip last_remove_fixed_ip = (instance['uuid'], address) def compute_api_get(self, context, instance_id, expected_attrs=None, want_objects=False): return {'id': 1, 'uuid': instance_id} class FixedIpTest(test.NoDBTestCase): def setUp(self): super(FixedIpTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(compute.api.API, "add_fixed_ip", compute_api_add_fixed_ip) self.stubs.Set(compute.api.API, "remove_fixed_ip", compute_api_remove_fixed_ip) self.stubs.Set(compute.api.API, 'get', compute_api_get) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-multinic')) def test_add_fixed_ip(self): global last_add_fixed_ip last_add_fixed_ip = (None, None) body = dict(add_fixed_ip=dict(network_id='test_net')) req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) self.assertEqual(last_add_fixed_ip, (UUID, 'test_net')) def test_add_fixed_ip_empty_network_id(self): body = {'add_fixed_ip': {'network_id': ''}} req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(400, resp.status_int) def test_add_fixed_ip_network_id_bigger_than_36(self): body = {'add_fixed_ip': {'network_id': 'a' * 37}} req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(400, resp.status_int) def test_add_fixed_ip_no_network(self): global last_add_fixed_ip last_add_fixed_ip = (None, None) body = dict(add_fixed_ip=dict()) req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 400) self.assertEqual(last_add_fixed_ip, (None, None)) def test_remove_fixed_ip(self): global last_remove_fixed_ip last_remove_fixed_ip = (None, None) body = dict(remove_fixed_ip=dict(address='10.10.10.1')) req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) self.assertEqual(last_remove_fixed_ip, (UUID, '10.10.10.1')) def test_remove_fixed_ip_invalid_address(self): body = {'remove_fixed_ip': {'address': ''}} req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(400, resp.status_int) def test_remove_fixed_ip_no_address(self): global last_remove_fixed_ip last_remove_fixed_ip = (None, None) body = dict(remove_fixed_ip=dict()) req = webob.Request.blank('/v3/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 400) self.assertEqual(last_remove_fixed_ip, (None, None)) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_console_output.py0000664000175400017540000001234712323721510030732 0ustar jenkinsjenkins00000000000000# Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import string from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_console_output(self, _context, _instance, tail_length): fixture = [str(i) for i in range(5)] if tail_length is None: pass elif tail_length == 0: fixture = [] else: fixture = fixture[-int(tail_length):] return '\n'.join(fixture) def fake_get_console_output_not_ready(self, _context, _instance, tail_length): raise exception.InstanceNotReady(instance_id=_instance["uuid"]) def fake_get_console_output_all_characters(self, _ctx, _instance, _tail_len): return string.printable def fake_get(self, context, instance_uuid, expected_attrs=None, want_objects=False): return {'uuid': instance_uuid} def fake_get_not_found(*args, **kwargs): raise exception.InstanceNotFound(instance_id='') class ConsoleOutputExtensionTest(test.NoDBTestCase): application_type = "application/json" def setUp(self): super(ConsoleOutputExtensionTest, self).setUp() self.stubs.Set(compute_api.API, 'get_console_output', fake_get_console_output) self.stubs.Set(compute_api.API, 'get', fake_get) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-console-output')) def _create_request(self, length_dict={}): body = {'get_console_output': length_dict} req = fakes.HTTPRequestV3.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = self.application_type return req def test_get_text_console_instance_action(self): req = self._create_request(length_dict={}) res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {'output': '0\n1\n2\n3\n4'}) def test_get_console_output_with_tail(self): req = self._create_request(length_dict={'length': 3}) res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {'output': '2\n3\n4'}) def test_get_console_output_with_length_as_str(self): req = self._create_request(length_dict={'length': '3'}) res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {'output': '2\n3\n4'}) def test_get_console_output_with_non_integer_length(self): req = self._create_request(length_dict={'length': 'NaN'}) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_text_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) req = self._create_request(length_dict={}) res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_text_console_bad_body(self): body = {} req = fakes.HTTPRequestV3.blank('/v3/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = self.application_type res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_console_output_not_ready(self): self.stubs.Set(compute_api.API, 'get_console_output', fake_get_console_output_not_ready) req = self._create_request(length_dict={'length': 3}) res = req.get_response(self.app) self.assertEqual(res.status_int, 409) def test_get_console_output_with_length_as_float(self): req = self._create_request(length_dict={'length': 2.5}) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_console_output_not_implemented(self): self.stubs.Set(compute_api.API, 'get_console_output', fakes.fake_not_implemented) req = self._create_request() res = req.get_response(self.app) self.assertEqual(res.status_int, 501) def test_get_console_output_with_negative_length(self): req = self._create_request(length_dict={'length': -1}) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_console_output_with_boolean_length(self): req = self._create_request(length_dict={'length': True}) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py0000664000175400017540000003436612323721477030060 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import quota_sets as quotas from nova import context as context_maker from nova import quota from nova import test from nova.tests.api.openstack import fakes class QuotaSetsTest(test.TestCase): def setUp(self): super(QuotaSetsTest, self).setUp() self.controller = quotas.QuotaSetsController() def _generate_quota_set(self, **kwargs): quota_set = { 'quota_set': {'metadata_items': 128, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'instances': 10, 'cores': 20, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100} } quota_set['quota_set'].update(kwargs) return quota_set def _generate_detail_quota_set(self, **kwargs): quota_set = { 'quota_set': {'cores': {'in_use': 0, 'limit': 20, 'reserved': 0}, 'fixed_ips': {'in_use': 0, 'limit': -1, 'reserved': 0}, 'floating_ips': {'in_use': 0, 'limit': 10, 'reserved': 0}, 'instances': {'in_use': 0, 'limit': 10, 'reserved': 0}, 'key_pairs': {'in_use': 0, 'limit': 100, 'reserved': 0}, 'metadata_items': {'in_use': 0, 'limit': 128, 'reserved': 0}, 'ram': {'in_use': 0, 'limit': 51200, 'reserved': 0}, 'security_groups': {'in_use': 0, 'limit': 10, 'reserved': 0}, 'security_group_rules': {'in_use': 0, 'limit': 20, 'reserved': 0}} } quota_set['quota_set'].update(kwargs) return quota_set def test_format_quota_set(self): raw_quota_set = self._generate_quota_set()['quota_set'] quota_set = self.controller._format_quota_set('1234', raw_quota_set) qs = quota_set['quota_set'] self.assertEqual(qs['id'], '1234') self.assertEqual(qs['instances'], 10) self.assertEqual(qs['cores'], 20) self.assertEqual(qs['ram'], 51200) self.assertEqual(qs['floating_ips'], 10) self.assertEqual(qs['fixed_ips'], -1) self.assertEqual(qs['metadata_items'], 128) self.assertEqual(qs['security_groups'], 10) self.assertEqual(qs['security_group_rules'], 20) self.assertEqual(qs['key_pairs'], 100) def test_quotas_defaults(self): uri = '/os-quota-sets/defaults' req = fakes.HTTPRequestV3.blank(uri) res_dict = self.controller.defaults(req, 'fake_tenant') expected = self._generate_quota_set(id='fake_tenant') self.assertEqual(res_dict, expected) def test_quotas_show_as_admin(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234', use_admin_context=True) res_dict = self.controller.show(req, '1234') self.assertEqual(res_dict, self._generate_quota_set(id='1234')) def test_quotas_show_as_unauthorized_user(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234') self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, req, '1234') def test_quotas_detail_as_admin(self): uri = '/os-quota-sets/1234/detail' req = fakes.HTTPRequestV3.blank(uri, use_admin_context=True) res_dict = self.controller.detail(req, '1234') self.assertEqual(res_dict, self._generate_detail_quota_set(id='1234')) def test_quotas_detail_as_unauthorized_user(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234/detail') self.assertRaises(webob.exc.HTTPForbidden, self.controller.detail, req, 1234) def test_quotas_update_as_admin(self): id = 'update_me' body = self._generate_quota_set() req = fakes.HTTPRequestV3.blank('/os-quota-sets/' + id, use_admin_context=True) res_dict = self.controller.update(req, id, body) body['quota_set'].update(id=id) self.assertEqual(res_dict, body) def test_quotas_update_zero_value_as_admin(self): id = 'update_me' body = {'quota_set': {'instances': 0, 'cores': 0, 'ram': 0, 'floating_ips': 0, 'fixed_ips': 0, 'metadata_items': 0, 'security_groups': 0, 'security_group_rules': 0, 'key_pairs': 100, 'fixed_ips': -1}} req = fakes.HTTPRequestV3.blank('/os-quota-sets/' + id, use_admin_context=True) res_dict = self.controller.update(req, id, body) body['quota_set'].update(id=id) self.assertEqual(res_dict, body) def test_quotas_update_as_user(self): body = self._generate_quota_set() req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me') self.assertRaises(webob.exc.HTTPForbidden, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_key(self): body = self._generate_quota_set() body['quota_set'].pop('instances') body['quota_set']['instances2'] = 10 req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_filtered_key(self): body = self._generate_quota_set() body['quota_set'].pop('instances') body['quota_set']['injected_files'] = 10 req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_limit(self): body = self._generate_quota_set(instances=-2) req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_value_json_fromat_empty_string(self): id = 'update_me' expected_resp = self._generate_quota_set(id=id) # when PUT JSON format with empty string for quota body = self._generate_quota_set(ram='') req = fakes.HTTPRequestV3.blank('/os-quota-sets/' + id, use_admin_context=True) res_dict = self.controller.update(req, id, body) self.assertEqual(res_dict, expected_resp) def test_quotas_update_invalid_value_non_int(self): # when PUT non integer value body = self._generate_quota_set(ram={}, instances=test) req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) body = {'quota_set': {'instances': 50.5}} req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) body = {'quota_set': { 'instances': u'\u30aa\u30fc\u30d7\u30f3'}} req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_without_quota_set(self): # when without the quota_set para body = {} req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_delete_as_unauthorized_user(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234') self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete, req, '1234') def test_quotas_delete_as_admin(self): context = context_maker.get_admin_context() self.req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234') self.req.environ['nova.context'] = context self.mox.StubOutWithMock(quota.QUOTAS, "destroy_all_by_project") quota.QUOTAS.destroy_all_by_project(context, '1234') self.mox.ReplayAll() self.controller.delete(self.req, '1234') self.mox.VerifyAll() def test_quotas_update_exceed_in_used(self): body = {'quota_set': {'cores': 10}} self.stubs.Set(quotas.QuotaSetsController, '_get_quotas', fake_get_quotas) req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_force_update_exceed_in_used(self): id = 'update_me' self.stubs.Set(quotas.QuotaSetsController, '_get_quotas', fake_get_quotas) req = fakes.HTTPRequestV3.blank('/os-quota-sets/' + id, use_admin_context=True) expected = {'quota_set': {'ram': 25600, 'instances': 200, 'cores': 10, 'id': id}} body = {'quota_set': {'ram': 25600, 'instances': 200, 'cores': 10, 'force': 'True'}} fake_quotas.get('ram')['limit'] = 25600 fake_quotas.get('cores')['limit'] = 10 fake_quotas.get('instances')['limit'] = 200 res_dict = self.controller.update(req, id, body) self.assertEqual(res_dict, expected) def test_user_quotas_show_as_admin(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234?user_id=1', use_admin_context=True) res_dict = self.controller.show(req, '1234') self.assertEqual(res_dict, self._generate_quota_set(id='1234')) def test_user_quotas_show_as_unauthorized_user(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234?user_id=1') self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, req, '1234') def test_user_quotas_detail_as_admin(self): req = fakes.HTTPRequestV3.blank( '/os-quota-sets/1234/detail?user_id=1', use_admin_context=True ) res_dict = self.controller.detail(req, '1234') self.assertEqual(res_dict, self._generate_detail_quota_set(id='1234')) def test_user_quotas_detail_as_unauthorized_user(self): req = fakes.HTTPRequestV3.blank( '/os-quota-sets/1234/detail?user_id=1' ) self.assertRaises(webob.exc.HTTPForbidden, self.controller.detail, req, '1234') def test_user_quotas_update_as_admin(self): body = self._generate_quota_set() url = '/os-quota-sets/update_me?user_id=1' req = fakes.HTTPRequestV3.blank(url, use_admin_context=True) res_dict = self.controller.update(req, 'update_me', body) body['quota_set'].update({'id': 'update_me'}) self.assertEqual(res_dict, body) def test_user_quotas_update_as_user(self): body = self._generate_quota_set() url = '/os-quota-sets/update_me?user_id=1' req = fakes.HTTPRequestV3.blank(url) self.assertRaises(webob.exc.HTTPForbidden, self.controller.update, req, 'update_me', body) def test_user_quotas_update_exceed_project(self): body = {'quota_set': {'instances': 20}} url = '/os-quota-sets/update_me?user_id=1' req = fakes.HTTPRequestV3.blank(url, use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_user_quotas_delete_as_unauthorized_user(self): req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234?user_id=1') self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete, req, '1234') def test_user_quotas_delete_as_admin(self): context = context_maker.get_admin_context() url = '/os-quota-sets/1234?user_id=1' self.req = fakes.HTTPRequestV3.blank(url) self.req.environ['nova.context'] = context self.mox.StubOutWithMock(quota.QUOTAS, "destroy_all_by_project_and_user") quota.QUOTAS.destroy_all_by_project_and_user(context, '1234', '1') self.mox.ReplayAll() self.controller.delete(self.req, '1234') self.mox.VerifyAll() fake_quotas = {'ram': {'limit': 51200, 'in_use': 12800, 'reserved': 12800}, 'cores': {'limit': 20, 'in_use': 10, 'reserved': 5}, 'instances': {'limit': 100, 'in_use': 0, 'reserved': 0}} def fake_get_quotas(self, context, id, user_id=None, usages=False): if usages: return fake_quotas else: return dict((k, v['limit']) for k, v in fake_quotas.items()) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_server_external_events.py0000664000175400017540000001261412323721477032455 0ustar jenkinsjenkins00000000000000# Copyright 2014 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. import json import mock import webob from nova.api.openstack.compute.plugins.v3 import server_external_events from nova import context from nova import exception from nova.objects import instance as instance_obj from nova import test fake_instances = { '00000000-0000-0000-0000-000000000001': instance_obj.Instance( uuid='00000000-0000-0000-0000-000000000001', host='host1'), '00000000-0000-0000-0000-000000000002': instance_obj.Instance( uuid='00000000-0000-0000-0000-000000000002', host='host1'), '00000000-0000-0000-0000-000000000003': instance_obj.Instance( uuid='00000000-0000-0000-0000-000000000003', host='host2'), } fake_instance_uuids = sorted(fake_instances.keys()) MISSING_UUID = '00000000-0000-0000-0000-000000000004' @classmethod def fake_get_by_uuid(cls, context, uuid): try: return fake_instances[uuid] except KeyError: raise exception.InstanceNotFound(instance_id=uuid) @mock.patch('nova.objects.instance.Instance.get_by_uuid', fake_get_by_uuid) class ServerExternalEventsTest(test.NoDBTestCase): def setUp(self): super(ServerExternalEventsTest, self).setUp() self.api = server_external_events.ServerExternalEventsController() self.context = context.get_admin_context() self.default_body = { 'events': [ {'name': 'network-vif-plugged', 'tag': 'foo', 'status': 'completed', 'server_uuid': fake_instance_uuids[0]}, {'name': 'network-changed', 'status': 'completed', 'server_uuid': fake_instance_uuids[1]}, ] } def _create_req(self, body): req = webob.Request.blank('/v2/fake/os-server-external-events') req.method = 'POST' req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context req.body = json.dumps(body) return req def _assert_call(self, req, body, expected_uuids, expected_events): with mock.patch.object(self.api.compute_api, 'external_instance_event') as api_method: response = self.api.create(req, body) result = response.obj code = response._code self.assertEqual(1, api_method.call_count) for inst in api_method.call_args_list[0][0][1]: expected_uuids.remove(inst.uuid) self.assertEqual([], expected_uuids) for event in api_method.call_args_list[0][0][2]: expected_events.remove(event.name) self.assertEqual([], expected_events) return result, code def test_create(self): req = self._create_req(self.default_body) result, code = self._assert_call(req, self.default_body, fake_instance_uuids[:2], ['network-vif-plugged', 'network-changed']) self.assertEqual(self.default_body, result) self.assertEqual(200, code) def test_create_one_bad_instance(self): body = self.default_body body['events'][1]['server_uuid'] = MISSING_UUID req = self._create_req(body) result, code = self._assert_call(req, body, [fake_instance_uuids[0]], ['network-vif-plugged']) self.assertEqual('failed', result['events'][1]['status']) self.assertEqual(200, result['events'][0]['code']) self.assertEqual(404, result['events'][1]['code']) self.assertEqual(207, code) def test_create_no_good_instances(self): body = self.default_body body['events'][0]['server_uuid'] = MISSING_UUID body['events'][1]['server_uuid'] = MISSING_UUID req = self._create_req(body) self.assertRaises(webob.exc.HTTPNotFound, self.api.create, req, body) def test_create_bad_status(self): body = self.default_body body['events'][1]['status'] = 'foo' req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) def test_create_extra_gorp(self): body = self.default_body body['events'][0]['foobar'] = 'bad stuff' req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) def test_create_bad_events(self): body = {'events': 'foo'} req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) def test_create_bad_body(self): body = {'foo': 'bar'} req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_console_auth_tokens.py0000664000175400017540000000662112323721477031730 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.consoleauth import rpcapi as consoleauth_rpcapi from nova import context from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes _FAKE_CONNECT_INFO = {'instance_uuid': 'fake_instance_uuid', 'host': 'fake_host', 'port': 'fake_port', 'internal_access_path': 'fake_access_path', 'console_type': 'rdp-html5'} def _fake_check_token(self, context, token): return _FAKE_CONNECT_INFO def _fake_check_token_not_found(self, context, token): return None def _fake_check_token_unauthorized(self, context, token): connect_info = _FAKE_CONNECT_INFO connect_info['console_type'] = 'unauthorized_console_type' return connect_info class ConsoleAuthTokensExtensionTest(test.TestCase): _FAKE_URL = '/v3/os-console-auth-tokens/1' _EXPECTED_OUTPUT = {'console': {'instance_uuid': 'fake_instance_uuid', 'host': 'fake_host', 'port': 'fake_port', 'internal_access_path': 'fake_access_path'}} def setUp(self): super(ConsoleAuthTokensExtensionTest, self).setUp() self.stubs.Set(consoleauth_rpcapi.ConsoleAuthAPI, 'check_token', _fake_check_token) ctxt = self._get_admin_context() self.app = fakes.wsgi_app_v3(init_only=('os-console-auth-tokens'), fake_auth_context=ctxt) def _get_admin_context(self): ctxt = context.get_admin_context() ctxt.user_id = 'fake' ctxt.project_id = 'fake' return ctxt def _create_request(self): req = fakes.HTTPRequestV3.blank(self._FAKE_URL) req.method = "GET" req.headers["content-type"] = "application/json" return req def test_get_console_connect_info(self): req = self._create_request() res = req.get_response(self.app) self.assertEqual(200, res.status_int) output = jsonutils.loads(res.body) self.assertEqual(self._EXPECTED_OUTPUT, output) def test_get_console_connect_info_token_not_found(self): self.stubs.Set(consoleauth_rpcapi.ConsoleAuthAPI, 'check_token', _fake_check_token_not_found) req = self._create_request() res = req.get_response(self.app) self.assertEqual(404, res.status_int) def test_get_console_connect_info_unauthorized_console_type(self): self.stubs.Set(consoleauth_rpcapi.ConsoleAuthAPI, 'check_token', _fake_check_token_unauthorized) req = self._create_request() res = req.get_response(self.app) self.assertEqual(401, res.status_int) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_flavors.py0000664000175400017540000005371012323721477027337 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import six.moves.urllib.parse as urlparse import webob from nova.api.openstack.compute.plugins.v3 import flavors from nova.openstack.common import jsonutils import nova.compute.flavors from nova import context from nova import db from nova import exception from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers NS = "{http://docs.openstack.org/compute/api/v1.1}" ATOMNS = "{http://www.w3.org/2005/Atom}" FAKE_FLAVORS = { 'flavor 1': { "flavorid": '1', "name": 'flavor 1', "memory_mb": '256', "root_gb": '10', "swap": 0, "ephemeral_gb": 0, "vcpus": 0, "disabled": False, }, 'flavor 2': { "flavorid": '2', "name": 'flavor 2', "memory_mb": '512', "root_gb": '20', "swap": 1024, "ephemeral_gb": 10, "vcpus": 0, "disabled": True, }, } def fake_flavor_get_by_flavor_id(flavorid, ctxt=None): return FAKE_FLAVORS['flavor %s' % flavorid] def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): if marker in ['99999']: raise exception.MarkerNotFound(marker) def reject_min(db_attr, filter_attr): return (filter_attr in filters and int(flavor[db_attr]) < int(filters[filter_attr])) filters = filters or {} res = [] for (flavor_name, flavor) in FAKE_FLAVORS.items(): if reject_min('memory_mb', 'min_memory_mb'): continue elif reject_min('root_gb', 'min_root_gb'): continue res.append(flavor) res = sorted(res, key=lambda item: item[sort_key]) output = [] marker_found = True if marker is None else False for flavor in res: if not marker_found and marker == flavor['flavorid']: marker_found = True elif marker_found: if limit is None or len(output) < int(limit): output.append(flavor) return output def empty_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [] def return_flavor_not_found(flavor_id, ctxt=None): raise exception.FlavorNotFound(flavor_id=flavor_id) class FlavorsTest(test.TestCase): def setUp(self): super(FlavorsTest, self).setUp() self.flags(osapi_compute_extension=[]) fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(nova.compute.flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(nova.compute.flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) self.controller = flavors.FlavorsController() def test_get_flavor_by_invalid_id(self): self.stubs.Set(nova.compute.flavors, "get_flavor_by_flavor_id", return_flavor_not_found) req = fakes.HTTPRequestV3.blank('/flavors/asdf') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 'asdf') def test_get_flavor_by_id(self): req = fakes.HTTPRequestV3.blank('/flavors/1') flavor = self.controller.show(req, '1') expected = { "flavor": { "id": "1", "name": "flavor 1", "ram": "256", "disk": "10", "vcpus": 0, "swap": 0, "ephemeral": 0, "disabled": False, "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/flavors/1", }, ], }, } self.assertEqual(flavor, expected) def test_get_flavor_with_custom_link_prefix(self): self.flags(osapi_compute_link_prefix='http://zoo.com:42', osapi_glance_link_prefix='http://circus.com:34') req = fakes.HTTPRequestV3.blank('/flavors/1') flavor = self.controller.show(req, '1') expected = { "flavor": { "id": "1", "name": "flavor 1", "ram": "256", "disk": "10", "vcpus": 0, "swap": 0, "ephemeral": 0, "disabled": False, "links": [ { "rel": "self", "href": "http://zoo.com:42/v3/flavors/1", }, { "rel": "bookmark", "href": "http://zoo.com:42/flavors/1", }, ], }, } self.assertEqual(flavor, expected) def test_get_flavor_list(self): req = fakes.HTTPRequestV3.blank('/flavors') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "1", "name": "flavor 1", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/flavors/1", }, ], }, { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_flavor_list_with_marker(self): self.maxDiff = None req = fakes.HTTPRequestV3.blank('/flavors?limit=1&marker=1') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], }, ], 'flavors_links': [ {'href': 'http://localhost/v3/flavors?limit=1&marker=2', 'rel': 'next'} ] } self.assertThat(flavor, matchers.DictMatches(expected)) def test_get_flavor_list_with_invalid_marker(self): req = fakes.HTTPRequestV3.blank('/flavors?limit=1&marker=99999') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_flavor_detail_with_limit(self): req = fakes.HTTPRequestV3.blank('/flavors/detail?limit=1') response = self.controller.index(req) response_list = response["flavors"] response_links = response["flavors_links"] expected_flavors = [ { "id": "1", "name": "flavor 1", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/flavors/1", }, ], }, ] self.assertEqual(response_list, expected_flavors) self.assertEqual(response_links[0]['rel'], 'next') href_parts = urlparse.urlparse(response_links[0]['href']) self.assertEqual('/v3/flavors', href_parts.path) params = urlparse.parse_qs(href_parts.query) self.assertThat({'limit': ['1'], 'marker': ['1']}, matchers.DictMatches(params)) def test_get_flavor_with_limit(self): req = fakes.HTTPRequestV3.blank('/flavors?limit=2') response = self.controller.index(req) response_list = response["flavors"] response_links = response["flavors_links"] expected_flavors = [ { "id": "1", "name": "flavor 1", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/flavors/1", }, ], }, { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], } ] self.assertEqual(response_list, expected_flavors) self.assertEqual(response_links[0]['rel'], 'next') href_parts = urlparse.urlparse(response_links[0]['href']) self.assertEqual('/v3/flavors', href_parts.path) params = urlparse.parse_qs(href_parts.query) self.assertThat({'limit': ['2'], 'marker': ['2']}, matchers.DictMatches(params)) def test_get_flavor_list_detail(self): req = fakes.HTTPRequestV3.blank('/flavors/detail') flavor = self.controller.detail(req) expected = { "flavors": [ { "id": "1", "name": "flavor 1", "ram": "256", "disk": "10", "vcpus": 0, "swap": 0, "ephemeral": 0, "disabled": False, "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/flavors/1", }, ], }, { "id": "2", "name": "flavor 2", "ram": "512", "disk": "20", "vcpus": 0, "swap": 1024, "ephemeral": 10, "disabled": True, "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_empty_flavor_list(self): self.stubs.Set(nova.compute.flavors, "get_all_flavors_sorted_list", empty_get_all_flavors_sorted_list) req = fakes.HTTPRequestV3.blank('/flavors') flavors = self.controller.index(req) expected = {'flavors': []} self.assertEqual(flavors, expected) def test_get_flavor_list_filter_min_ram(self): # Flavor lists may be filtered by min_ram. req = fakes.HTTPRequestV3.blank('/flavors?min_ram=512') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_flavor_list_filter_invalid_min_ram(self): # Ensure you cannot list flavors with invalid min_ram param. req = fakes.HTTPRequestV3.blank('/flavors?min_ram=NaN') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_flavor_list_filter_min_disk(self): # Flavor lists may be filtered by min_disk. req = fakes.HTTPRequestV3.blank('/flavors?min_disk=20') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_flavor_list_filter_invalid_min_disk(self): # Ensure you cannot list flavors with invalid min_disk param. req = fakes.HTTPRequestV3.blank('/flavors?min_disk=NaN') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_flavor_list_detail_min_ram_and_min_disk(self): """Tests that filtering work on flavor details and that min_ram and min_disk filters can be combined """ req = fakes.HTTPRequestV3.blank('/flavors/detail' '?min_ram=256&min_disk=20') flavor = self.controller.detail(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "ram": "512", "disk": "20", "vcpus": 0, "swap": 1024, "ephemeral": 10, "disabled": True, "links": [ { "rel": "self", "href": "http://localhost/v3/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) class FlavorDisabledTest(test.TestCase): content_type = 'application/json' def setUp(self): super(FlavorDisabledTest, self).setUp() fakes.stub_out_nw_api(self.stubs) #def fake_flavor_get_all(*args, **kwargs): # return FAKE_FLAVORS # self.stubs.Set(nova.compute.flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(nova.compute.flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type app = fakes.wsgi_app_v3(init_only=('servers', 'flavors', 'os-flavor-disabled')) return req.get_response(app) def _get_flavor(self, body): return jsonutils.loads(body).get('flavor') def _get_flavors(self, body): return jsonutils.loads(body).get('flavors') def assertFlavorDisabled(self, flavor, disabled): self.assertEqual(str(flavor.get('disabled')), disabled) def test_show(self): res = self._make_request('/v3/flavors/1') self.assertEqual(res.status_int, 200, res.body) self.assertFlavorDisabled(self._get_flavor(res.body), 'False') def test_detail(self): res = self._make_request('/v3/flavors/detail') self.assertEqual(res.status_int, 200, res.body) flavors = self._get_flavors(res.body) self.assertFlavorDisabled(flavors[0], 'False') self.assertFlavorDisabled(flavors[1], 'True') class DisabledFlavorsWithRealDBTest(test.TestCase): """Tests that disabled flavors should not be shown nor listed.""" def setUp(self): super(DisabledFlavorsWithRealDBTest, self).setUp() self.controller = flavors.FlavorsController() # Add a new disabled type to the list of flavors self.req = fakes.HTTPRequestV3.blank('/flavors') self.context = self.req.environ['nova.context'] self.admin_context = context.get_admin_context() self.disabled_type = self._create_disabled_instance_type() self.inst_types = db.flavor_get_all(self.admin_context) def tearDown(self): db.flavor_destroy(self.admin_context, self.disabled_type['name']) super(DisabledFlavorsWithRealDBTest, self).tearDown() def _create_disabled_instance_type(self): inst_types = db.flavor_get_all(self.admin_context) inst_type = inst_types[0] del inst_type['id'] inst_type['name'] += '.disabled' inst_type['flavorid'] = unicode(max( [int(flavor['flavorid']) for flavor in inst_types]) + 1) inst_type['disabled'] = True disabled_type = db.flavor_create(self.admin_context, inst_type) return disabled_type def test_index_should_not_list_disabled_flavors_to_user(self): self.context.is_admin = False flavor_list = self.controller.index(self.req)['flavors'] api_flavorids = set(f['id'] for f in flavor_list) db_flavorids = set(i['flavorid'] for i in self.inst_types) disabled_flavorid = str(self.disabled_type['flavorid']) self.assertIn(disabled_flavorid, db_flavorids) self.assertEqual(db_flavorids - set([disabled_flavorid]), api_flavorids) def test_index_should_list_disabled_flavors_to_admin(self): self.context.is_admin = True flavor_list = self.controller.index(self.req)['flavors'] api_flavorids = set(f['id'] for f in flavor_list) db_flavorids = set(i['flavorid'] for i in self.inst_types) disabled_flavorid = str(self.disabled_type['flavorid']) self.assertIn(disabled_flavorid, db_flavorids) self.assertEqual(db_flavorids, api_flavorids) def test_show_should_include_disabled_flavor_for_user(self): """Counterintuitively we should show disabled flavors to all users and not just admins. The reason is that, when a user performs a server-show request, we want to be able to display the pretty flavor name ('512 MB Instance') and not just the flavor-id even if the flavor id has been marked disabled. """ self.context.is_admin = False flavor = self.controller.show( self.req, self.disabled_type['flavorid'])['flavor'] self.assertEqual(flavor['name'], self.disabled_type['name']) def test_show_should_include_disabled_flavor_for_admin(self): self.context.is_admin = True flavor = self.controller.show( self.req, self.disabled_type['flavorid'])['flavor'] self.assertEqual(flavor['name'], self.disabled_type['name']) class ParseIsPublicTest(test.TestCase): def setUp(self): super(ParseIsPublicTest, self).setUp() self.controller = flavors.FlavorsController() def assertPublic(self, expected, is_public): self.assertIs(expected, self.controller._parse_is_public(is_public), '%s did not return %s' % (is_public, expected)) def test_None(self): self.assertPublic(True, None) def test_truthy(self): self.assertPublic(True, True) self.assertPublic(True, 't') self.assertPublic(True, 'true') self.assertPublic(True, 'yes') self.assertPublic(True, '1') def test_falsey(self): self.assertPublic(False, False) self.assertPublic(False, 'f') self.assertPublic(False, 'false') self.assertPublic(False, 'no') self.assertPublic(False, '0') def test_string_none(self): self.assertPublic(None, 'none') self.assertPublic(None, 'None') def test_other(self): self.assertRaises( webob.exc.HTTPBadRequest, self.assertPublic, None, 'other') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_pause_server.py0000664000175400017540000000403012323721510030341 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.plugins.v3 import pause_server from nova.tests.api.openstack.compute.plugins.v3 import \ admin_only_action_common from nova.tests.api.openstack import fakes class PauseServerTests(admin_only_action_common.CommonTests): def setUp(self): super(PauseServerTests, self).setUp() self.controller = pause_server.PauseServerController() self.compute_api = self.controller.compute_api def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(pause_server, 'PauseServerController', _fake_controller) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-pause-server'), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') def test_pause_unpause(self): self._test_actions(['pause', 'unpause']) def test_pause_unpause_with_non_existed_instance(self): self._test_actions_with_non_existed_instance(['pause', 'unpause']) def test_pause_unpause_raise_conflict_on_invalid_state(self): self._test_actions_raise_conflict_on_invalid_state(['pause', 'unpause']) def test_actions_with_locked_instance(self): self._test_actions_with_locked_instance(['pause', 'unpause']) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_certificates.py0000664000175400017540000000723212323721477030326 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # Copyright 2013 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. import mox from nova.api.openstack.compute.plugins.v3 import certificates from nova import context from nova import exception from nova.openstack.common import policy as common_policy from nova import test from nova.tests.api.openstack import fakes class CertificatesTest(test.NoDBTestCase): def setUp(self): super(CertificatesTest, self).setUp() self.context = context.RequestContext('fake', 'fake') self.controller = certificates.CertificatesController() def test_translate_certificate_view(self): pk, cert = 'fakepk', 'fakecert' view = certificates._translate_certificate_view(cert, pk) self.assertEqual(view['data'], cert) self.assertEqual(view['private_key'], pk) def test_certificates_show_root(self): self.mox.StubOutWithMock(self.controller.cert_rpcapi, 'fetch_ca') self.controller.cert_rpcapi.fetch_ca( mox.IgnoreArg(), project_id='fake').AndReturn('fakeroot') self.mox.ReplayAll() req = fakes.HTTPRequestV3.blank('/os-certificates/root') res_dict = self.controller.show(req, 'root') response = {'certificate': {'data': 'fakeroot', 'private_key': None}} self.assertEqual(res_dict, response) def test_certificates_show_policy_failed(self): rules = { "compute_extension:v3:os-certificates:show": common_policy.parse_rule("!") } common_policy.set_rules(common_policy.Rules(rules)) req = fakes.HTTPRequestV3.blank('/os-certificates/root') exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller.show, req, 'root') self.assertIn("compute_extension:v3:os-certificates:show", exc.format_message()) def test_certificates_create_certificate(self): self.mox.StubOutWithMock(self.controller.cert_rpcapi, 'generate_x509_cert') self.controller.cert_rpcapi.generate_x509_cert( mox.IgnoreArg(), user_id='fake_user', project_id='fake').AndReturn(('fakepk', 'fakecert')) self.mox.ReplayAll() req = fakes.HTTPRequestV3.blank('/os-certificates/') res_dict = self.controller.create(req) response = { 'certificate': {'data': 'fakecert', 'private_key': 'fakepk'} } self.assertEqual(res_dict, response) self.assertEqual(self.controller.create.wsgi_code, 201) def test_certificates_create_policy_failed(self): rules = { "compute_extension:v3:os-certificates:create": common_policy.parse_rule("!") } common_policy.set_rules(common_policy.Rules(rules)) req = fakes.HTTPRequestV3.blank('/os-certificates/') exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller.create, req) self.assertIn("compute_extension:v3:os-certificates:create", exc.format_message()) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py0000664000175400017540000004452212323721477027513 0ustar jenkinsjenkins00000000000000# Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import keypairs from nova import db from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import policy from nova import quota from nova import test from nova.tests.api.openstack import fakes from nova.tests.objects import test_keypair QUOTAS = quota.QUOTAS keypair_data = { 'public_key': 'FAKE_KEY', 'fingerprint': 'FAKE_FINGERPRINT', } def fake_keypair(name): return dict(test_keypair.fake_keypair, name=name, **keypair_data) def db_key_pair_get_all_by_user(self, user_id): return [fake_keypair('FAKE')] def db_key_pair_create(self, keypair): return fake_keypair(name=keypair['name']) def db_key_pair_destroy(context, user_id, name): if not (user_id and name): raise Exception() def db_key_pair_create_duplicate(context, keypair): raise exception.KeyPairExists(key_name=keypair.get('name', '')) class KeypairsTest(test.TestCase): def setUp(self): super(KeypairsTest, self).setUp() self.Controller = keypairs.Controller() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(db, "key_pair_get_all_by_user", db_key_pair_get_all_by_user) self.stubs.Set(db, "key_pair_create", db_key_pair_create) self.stubs.Set(db, "key_pair_destroy", db_key_pair_destroy) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Keypairs']) self.app = fakes.wsgi_app_v3(init_only=('keypairs', 'servers')) def test_keypair_list(self): req = webob.Request.blank('/v3/keypairs') res = req.get_response(self.app) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) response = {'keypairs': [{'keypair': dict(keypair_data, name='FAKE')}]} self.assertEqual(res_dict, response) def test_keypair_create(self): body = {'keypair': {'name': 'create_test'}} req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 201) res_dict = jsonutils.loads(res.body) self.assertTrue(len(res_dict['keypair']['fingerprint']) > 0) self.assertTrue(len(res_dict['keypair']['private_key']) > 0) def test_keypair_create_without_keypair(self): body = {'foo': None} req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) def test_keypair_create_without_name(self): body = {'keypair': {'public_key': 'public key'}} req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual("Invalid input for field/attribute keypair. " "Value: {u'public_key': u'public key'}. " "'name' is a required property", res_dict['badRequest']['message']) def test_keypair_create_with_empty_name(self): body = {'keypair': {'name': ''}} req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual("Invalid input for field/attribute name. " "Value: . u'' is too short", res_dict['badRequest']['message']) def test_keypair_create_with_name_too_long(self): name = 'a' * 256 body = { 'keypair': { 'name': name } } req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) expected_message = "Invalid input for field/attribute name. "\ "Value: %s. u'%s' is too long" % (name, name) self.assertEqual(expected_message, res_dict['badRequest']['message']) def test_keypair_create_with_non_alphanumeric_name(self): body = { 'keypair': { 'name': 'test/keypair' } } req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) res_dict = jsonutils.loads(res.body) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual( "Invalid input for field/attribute name. Value: test/keypair. " "u'test/keypair' does not match '^(?! )[a-zA-Z0-9. _-]+(? 0) self.assertNotIn('private_key', res_dict['keypair']) def test_keypair_import_quota_limit(self): def fake_quotas_count(self, context, resource, *args, **kwargs): return 100 self.stubs.Set(QUOTAS, "count", fake_quotas_count) body = { 'keypair': { 'name': 'create_test', 'public_key': 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBYIznA' 'x9D7118Q1VKGpXy2HDiKyUTM8XcUuhQpo0srqb9rboUp4' 'a9NmCwpWpeElDLuva707GOUnfaBAvHBwsRXyxHJjRaI6Y' 'Qj2oLJwqvaSaWUbyT1vtryRqy6J3TecN0WINY71f4uymi' 'MZP0wby4bKBcYnac8KiCIlvkEl0ETjkOGUq8OyWRmn7lj' 'j5SESEUdBP0JnuTFKddWTU/wD6wydeJaUhBTqOlHn0kX1' 'GyqoNTE1UEhcM5ZRWgfUZfTjVyDF2kGj3vJLCJtJ8LoGc' 'j7YaN4uPg1rBle+izwE/tLonRrds+cev8p6krSSrxWOwB' 'bHkXa6OciiJDvkRzJXzf', }, } req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 413) res_dict = jsonutils.loads(res.body) self.assertEqual( "Quota exceeded, too many key pairs.", res_dict['overLimit']['message']) def test_keypair_create_quota_limit(self): def fake_quotas_count(self, context, resource, *args, **kwargs): return 100 self.stubs.Set(QUOTAS, "count", fake_quotas_count) body = { 'keypair': { 'name': 'create_test', }, } req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 413) res_dict = jsonutils.loads(res.body) self.assertEqual( "Quota exceeded, too many key pairs.", res_dict['overLimit']['message']) def test_keypair_create_duplicate(self): self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate) body = {'keypair': {'name': 'create_duplicate'}} req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 409) res_dict = jsonutils.loads(res.body) self.assertEqual( "Key pair 'create_duplicate' already exists.", res_dict['conflictingRequest']['message']) def test_keypair_import_bad_key(self): body = { 'keypair': { 'name': 'create_test', 'public_key': 'ssh-what negative', }, } req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual( 'Keypair data is invalid: failed to generate fingerprint', res_dict['badRequest']['message']) def test_keypair_delete(self): req = webob.Request.blank('/v3/keypairs/FAKE') req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 204) def test_keypair_get_keypair_not_found(self): req = webob.Request.blank('/v3/keypairs/DOESNOTEXIST') res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_keypair_delete_not_found(self): def db_key_pair_get_not_found(context, user_id, name): raise exception.KeypairNotFound(user_id=user_id, name=name) self.stubs.Set(db, "key_pair_get", db_key_pair_get_not_found) req = webob.Request.blank('/v3/keypairs/WHAT') res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_keypair_show(self): def _db_key_pair_get(context, user_id, name): return dict(test_keypair.fake_keypair, name='foo', public_key='XXX', fingerprint='YYY') self.stubs.Set(db, "key_pair_get", _db_key_pair_get) req = webob.Request.blank('/v3/keypairs/FAKE') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) res_dict = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual('foo', res_dict['keypair']['name']) self.assertEqual('XXX', res_dict['keypair']['public_key']) self.assertEqual('YYY', res_dict['keypair']['fingerprint']) def test_keypair_show_not_found(self): def _db_key_pair_get(context, user_id, name): raise exception.KeypairNotFound(user_id=user_id, name=name) self.stubs.Set(db, "key_pair_get", _db_key_pair_get) req = webob.Request.blank('/v3/keypairs/FAKE') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_show_server(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v3/servers/1') req.headers['Content-Type'] = 'application/json' response = req.get_response(self.app) self.assertEqual(response.status_int, 200) res_dict = jsonutils.loads(response.body) self.assertIn('key_name', res_dict['server']) self.assertEqual(res_dict['server']['key_name'], '') def test_detail_servers(self): self.stubs.Set(db, 'instance_get_all_by_filters', fakes.fake_instance_get_all_by_filters()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v3/servers/detail') res = req.get_response(self.app) server_dicts = jsonutils.loads(res.body)['servers'] self.assertEqual(len(server_dicts), 5) for server_dict in server_dicts: self.assertIn('key_name', server_dict) self.assertEqual(server_dict['key_name'], '') def test_keypair_create_with_invalid_keypair_body(self): body = {'alpha': {'name': 'create_test'}} req = webob.Request.blank('/v3/keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) res_dict = jsonutils.loads(res.body) self.assertEqual(res.status_int, 400) class KeypairPolicyTest(test.TestCase): def setUp(self): super(KeypairPolicyTest, self).setUp() self.KeyPairController = keypairs.KeypairController() def _db_key_pair_get(context, user_id, name): return dict(test_keypair.fake_keypair, name='foo', public_key='XXX', fingerprint='YYY') self.stubs.Set(db, "key_pair_get", _db_key_pair_get) self.stubs.Set(db, "key_pair_get_all_by_user", db_key_pair_get_all_by_user) self.stubs.Set(db, "key_pair_create", db_key_pair_create) self.stubs.Set(db, "key_pair_destroy", db_key_pair_destroy) def test_keypair_list_fail_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:index': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs') self.assertRaises(exception.NotAuthorized, self.KeyPairController.index, req) def test_keypair_list_pass_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:index': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs') res = self.KeyPairController.index(req) self.assertIn('keypairs', res) def test_keypair_show_fail_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:show': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs/FAKE') self.assertRaises(exception.NotAuthorized, self.KeyPairController.show, req, 'FAKE') def test_keypair_show_pass_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:show': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs/FAKE') res = self.KeyPairController.show(req, 'FAKE') self.assertIn('keypair', res) def test_keypair_create_fail_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:create': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs') req.method = 'POST' self.assertRaises(exception.NotAuthorized, self.KeyPairController.create, req, body={'keypair': {'name': 'create_test'}}) def test_keypair_create_pass_policy(self): body = {'keypair': {'name': 'create_test'}} rules = policy.Rules({'compute_extension:v3:keypairs:create': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs') req.method = 'POST' res = self.KeyPairController.create(req, body=body) self.assertIn('keypair', res) def test_keypair_delete_fail_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:delete': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs/FAKE') req.method = 'DELETE' self.assertRaises(exception.NotAuthorized, self.KeyPairController.delete, req, 'FAKE') def test_keypair_delete_pass_policy(self): rules = policy.Rules({'compute_extension:v3:keypairs:delete': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank('/keypairs/FAKE') req.method = 'DELETE' self.assertIsNone(self.KeyPairController.delete(req, 'FAKE')) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_deferred_delete.py0000664000175400017540000001246612323721477030770 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import deferred_delete from nova.compute import api as compute_api from nova import context from nova import exception from nova import test class FakeRequest(object): def __init__(self, context): self.environ = {'nova.context': context} class DeferredDeleteExtensionTest(test.NoDBTestCase): def setUp(self): super(DeferredDeleteExtensionTest, self).setUp() self.extension = deferred_delete.DeferredDeleteController() self.fake_input_dict = {} self.fake_uuid = 'fake_uuid' self.fake_context = context.RequestContext('fake', 'fake') self.fake_req = FakeRequest(self.fake_context) def test_force_delete(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'force_delete') fake_instance = 'fake_instance' compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn( fake_instance) compute_api.API.force_delete(self.fake_context, fake_instance) self.mox.ReplayAll() res = self.extension._force_delete(self.fake_req, self.fake_uuid, self.fake_input_dict) self.assertEqual(res.status_int, 202) def test_force_delete_instance_not_found(self): self.mox.StubOutWithMock(compute_api.API, 'get') compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndRaise( exception.InstanceNotFound(instance_id='instance-0000')) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPNotFound, self.extension._force_delete, self.fake_req, self.fake_uuid, self.fake_input_dict) def test_force_delete_raises_conflict_on_invalid_state(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'force_delete') fake_instance = 'fake_instance' compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn( fake_instance) exc = exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') compute_api.API.force_delete(self.fake_context, fake_instance)\ .AndRaise(exc) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPConflict, self.extension._force_delete, self.fake_req, self.fake_uuid, self.fake_input_dict) def test_restore(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'restore') fake_instance = 'fake_instance' compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn( fake_instance) compute_api.API.restore(self.fake_context, fake_instance) self.mox.ReplayAll() res = self.extension._restore(self.fake_req, self.fake_uuid, self.fake_input_dict) self.assertEqual(res.status_int, 202) def test_restore_instance_not_found(self): self.mox.StubOutWithMock(compute_api.API, 'get') compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndRaise( exception.InstanceNotFound(instance_id='instance-0000')) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPNotFound, self.extension._restore, self.fake_req, self.fake_uuid, self.fake_input_dict) def test_restore_raises_conflict_on_invalid_state(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'restore') fake_instance = 'fake_instance' exc = exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn( fake_instance) compute_api.API.restore(self.fake_context, fake_instance).AndRaise( exc) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPConflict, self.extension._restore, self.fake_req, self.fake_uuid, self.fake_input_dict) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_suspend_server.py0000664000175400017540000000401112323721477030720 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.plugins.v3 import suspend_server from nova.tests.api.openstack.compute.plugins.v3 import \ admin_only_action_common from nova.tests.api.openstack import fakes class SuspendServerTests(admin_only_action_common.CommonTests): def setUp(self): super(SuspendServerTests, self).setUp() self.controller = suspend_server.SuspendServerController() self.compute_api = self.controller.compute_api def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(suspend_server, 'SuspendServerController', _fake_controller) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-suspend-server'), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') def test_suspend_resume(self): self._test_actions(['suspend', 'resume']) def test_suspend_resume_with_non_existed_instance(self): self._test_actions_with_non_existed_instance(['suspend', 'resume']) def test_suspend_resume_raise_conflict_on_invalid_state(self): self._test_actions_raise_conflict_on_invalid_state(['suspend', 'resume']) def test_actions_with_locked_instance(self): self._test_actions_with_locked_instance(['suspend', 'resume']) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_create_backup.py0000664000175400017540000001727612323721477030462 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack import common from nova.api.openstack.compute.plugins.v3 import create_backup from nova.openstack.common import uuidutils from nova import test from nova.tests.api.openstack.compute.plugins.v3 import \ admin_only_action_common from nova.tests.api.openstack import fakes class CreateBackupTests(admin_only_action_common.CommonMixin, test.NoDBTestCase): def setUp(self): super(CreateBackupTests, self).setUp() self.controller = create_backup.CreateBackupController() self.compute_api = self.controller.compute_api def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(create_backup, 'CreateBackupController', _fake_controller) self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-create-backup'), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') self.mox.StubOutWithMock(common, 'check_img_metadata_properties_quota') self.mox.StubOutWithMock(self.compute_api, 'backup') def _make_url(self, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() return '/servers/%s/action' % uuid def test_create_backup_with_metadata(self): metadata = {'123': 'asdf'} body = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, 'metadata': metadata, }, } image = dict(id='fake-image-id', status='ACTIVE', name='Backup 1', properties=metadata) common.check_img_metadata_properties_quota(self.context, metadata) instance = self._stub_instance_get() self.compute_api.backup(self.context, instance, 'Backup 1', 'daily', 1, extra_properties=metadata).AndReturn(image) self.mox.ReplayAll() res = self._make_request(self._make_url(instance.uuid), body) self.assertEqual(202, res.status_int) self.assertIn('fake-image-id', res.headers['Location']) def test_create_backup_no_name(self): # Name is required for backups. body = { 'create_backup': { 'backup_type': 'daily', 'rotation': 1, }, } res = self._make_request(self._make_url(), body) self.assertEqual(400, res.status_int) def test_create_backup_no_rotation(self): # Rotation is required for backup requests. body = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', }, } res = self._make_request(self._make_url(), body) self.assertEqual(400, res.status_int) def test_create_backup_negative_rotation(self): """Rotation must be greater than or equal to zero for backup requests """ body = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': -1, }, } res = self._make_request(self._make_url(), body) self.assertEqual(400, res.status_int) def test_create_backup_no_backup_type(self): # Backup Type (daily or weekly) is required for backup requests. body = { 'create_backup': { 'name': 'Backup 1', 'rotation': 1, }, } res = self._make_request(self._make_url(), body) self.assertEqual(400, res.status_int) def test_create_backup_bad_entity(self): body = {'create_backup': 'go'} res = self._make_request(self._make_url(), body) self.assertEqual(400, res.status_int) def test_create_backup_rotation_is_zero(self): # The happy path for creating backups if rotation is zero. body = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 0, }, } image = dict(id='fake-image-id', status='ACTIVE', name='Backup 1', properties={}) common.check_img_metadata_properties_quota(self.context, {}) instance = self._stub_instance_get() self.compute_api.backup(self.context, instance, 'Backup 1', 'daily', 0, extra_properties={}).AndReturn(image) self.mox.ReplayAll() res = self._make_request(self._make_url(instance.uuid), body) self.assertEqual(202, res.status_int) self.assertNotIn('Location', res.headers) def test_create_backup_rotation_is_positive(self): # The happy path for creating backups if rotation is positive. body = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } image = dict(id='fake-image-id', status='ACTIVE', name='Backup 1', properties={}) common.check_img_metadata_properties_quota(self.context, {}) instance = self._stub_instance_get() self.compute_api.backup(self.context, instance, 'Backup 1', 'daily', 1, extra_properties={}).AndReturn(image) self.mox.ReplayAll() res = self._make_request(self._make_url(instance.uuid), body) self.assertEqual(202, res.status_int) self.assertIn('fake-image-id', res.headers['Location']) def test_create_backup_raises_conflict_on_invalid_state(self): body_map = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } args_map = { 'create_backup': ( ('Backup 1', 'daily', 1), {'extra_properties': {}} ), } common.check_img_metadata_properties_quota(self.context, {}) self._test_invalid_state('create_backup', method='backup', body_map=body_map, compute_api_args_map=args_map) def test_create_backup_with_non_existed_instance(self): body_map = { 'create_backup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } common.check_img_metadata_properties_quota(self.context, {}) self._test_non_existing_instance('create_backup', body_map=body_map) def test_create_backup_with_invalid_create_backup(self): body = { 'create_backupup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } res = self._make_request(self._make_url(), body) self.assertEqual(400, res.status_int) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_admin_password.py0000664000175400017540000001054012323721477030667 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.plugins.v3 import admin_password from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get(self, context, id, expected_attrs=None, want_objects=False): return {'uuid': id} def fake_get_non_existent(self, context, id, expected_attrs=None, want_objects=False): raise exception.InstanceNotFound(instance_id=id) def fake_set_admin_password(self, context, instance, password=None): pass def fake_set_admin_password_failed(self, context, instance, password=None): raise exception.InstancePasswordSetFailed(instance=instance, reason='') def fake_set_admin_password_not_implemented(self, context, instance, password=None): raise NotImplementedError() class AdminPasswordTest(test.NoDBTestCase): def setUp(self): super(AdminPasswordTest, self).setUp() self.stubs.Set(compute_api.API, 'set_admin_password', fake_set_admin_password) self.stubs.Set(compute_api.API, 'get', fake_get) self.app = fakes.wsgi_app_v3(init_only=('servers', admin_password.ALIAS)) def _make_request(self, url, body): req = webob.Request.blank(url) req.method = 'POST' req.body = jsonutils.dumps(body) req.content_type = 'application/json' res = req.get_response(self.app) return res def test_change_password(self): url = '/v3/servers/1/action' body = {'change_password': {'admin_password': 'test'}} res = self._make_request(url, body) self.assertEqual(res.status_int, 204) def test_change_password_empty_string(self): url = '/v3/servers/1/action' body = {'change_password': {'admin_password': ''}} res = self._make_request(url, body) self.assertEqual(res.status_int, 204) def test_change_password_with_non_implement(self): url = '/v3/servers/1/action' body = {'change_password': {'admin_password': 'test'}} self.stubs.Set(compute_api.API, 'set_admin_password', fake_set_admin_password_not_implemented) res = self._make_request(url, body) self.assertEqual(res.status_int, 501) def test_change_password_with_non_existed_instance(self): url = '/v3/servers/1/action' body = {'change_password': {'admin_password': 'test'}} self.stubs.Set(compute_api.API, 'get', fake_get_non_existent) res = self._make_request(url, body) self.assertEqual(res.status_int, 404) def test_change_password_with_non_string_password(self): url = '/v3/servers/1/action' body = {'change_password': {'admin_password': 1234}} res = self._make_request(url, body) self.assertEqual(res.status_int, 400) def test_change_password_failed(self): url = '/v3/servers/1/action' body = {'change_password': {'admin_password': 'test'}} self.stubs.Set(compute_api.API, 'set_admin_password', fake_set_admin_password_failed) res = self._make_request(url, body) self.assertEqual(res.status_int, 409) def test_change_password_without_admin_password(self): url = '/v3/servers/1/action' body = {'change_password': {}} res = self._make_request(url, body) self.assertEqual(res.status_int, 400) def test_change_password_none(self): url = '/v3/servers/1/action' body = {'change_password': None} res = self._make_request(url, body) self.assertEqual(res.status_int, 400) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_server_password.py0000664000175400017540000000462312323721477031112 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg import webob from nova.api.metadata import password from nova import compute from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF class ServerPasswordTest(test.TestCase): content_type = 'application/json' def setUp(self): super(ServerPasswordTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', lambda *a, **kw: {'uuid': ''}) self.password = 'fakepass' def fake_extract_password(instance): return self.password def fake_convert_password(context, password): self.password = password return {} self.stubs.Set(password, 'extract_password', fake_extract_password) self.stubs.Set(password, 'convert_password', fake_convert_password) def _make_request(self, url, method='GET'): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type req.method = method res = req.get_response( fakes.wsgi_app_v3(init_only=('servers', 'os-server-password'))) return res def _get_pass(self, body): return jsonutils.loads(body).get('password') def test_get_password(self): url = '/v3/servers/fake/os-server-password' res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertEqual(self._get_pass(res.body), 'fakepass') def test_reset_password(self): url = '/v3/servers/fake/os-server-password' res = self._make_request(url, 'DELETE') self.assertEqual(res.status_int, 204) res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertEqual(self._get_pass(res.body), '') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_instance_actions.py0000664000175400017540000002332112323721477031202 0ustar jenkinsjenkins00000000000000# Copyright 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy import uuid from webob import exc from nova.api.openstack.compute.plugins.v3 import instance_actions from nova.compute import api as compute_api from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.openstack.common import policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests import fake_instance_actions FAKE_UUID = fake_instance_actions.FAKE_UUID FAKE_REQUEST_ID = fake_instance_actions.FAKE_REQUEST_ID1 def format_action(action): '''Remove keys that aren't serialized.''' to_delete = ('id', 'finish_time', 'created_at', 'updated_at', 'deleted_at', 'deleted') for key in to_delete: if key in action: del(action[key]) if 'start_time' in action: # NOTE(danms): Without WSGI above us, these will be just stringified, # and objects will have added a timezone, so strip that for comparison action['start_time'] = str(action['start_time'].replace(tzinfo=None)) for event in action.get('events', []): format_event(event) return action def format_event(event): '''Remove keys that aren't serialized.''' to_delete = ('id', 'created_at', 'updated_at', 'deleted_at', 'deleted', 'action_id') for key in to_delete: if key in event: del(event[key]) if 'start_time' in event: # NOTE(danms): Without WSGI above us, these will be just stringified, # and objects will have added a timezone, so strip that for comparison event['start_time'] = str(event['start_time'].replace(tzinfo=None)) if 'finish_time' in event: # NOTE(danms): Without WSGI above us, these will be just stringified, # and objects will have added a timezone, so strip that for comparison event['finish_time'] = str(event['finish_time'].replace(tzinfo=None)) return event class InstanceActionsPolicyTest(test.NoDBTestCase): def setUp(self): super(InstanceActionsPolicyTest, self).setUp() self.controller = instance_actions.InstanceActionsController() def test_list_actions_restricted_by_project(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:v3:os-instance-actions': policy.parse_rule('project_id:%(project_id)s')}) policy.set_rules(rules) def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequestV3.blank('/servers/12/os-instance-actions') self.assertRaises(exception.NotAuthorized, self.controller.index, req, str(uuid.uuid4())) def test_get_action_restricted_by_project(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:v3:os-instance-actions': policy.parse_rule('project_id:%(project_id)s')}) policy.set_rules(rules) def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequestV3.blank( '/servers/12/os-instance-actions/1') self.assertRaises(exception.NotAuthorized, self.controller.show, req, str(uuid.uuid4()), '1') class InstanceActionsTest(test.NoDBTestCase): def setUp(self): super(InstanceActionsTest, self).setUp() self.controller = instance_actions.InstanceActionsController() self.fake_actions = copy.deepcopy(fake_instance_actions.FAKE_ACTIONS) self.fake_events = copy.deepcopy(fake_instance_actions.FAKE_EVENTS) def fake_get(self, context, instance_uuid, expected_attrs=None, want_objects=False): return {'uuid': instance_uuid} def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) self.stubs.Set(compute_api.API, 'get', fake_get) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) def test_list_actions(self): def fake_get_actions(context, uuid): actions = [] for act in self.fake_actions[uuid].itervalues(): action = models.InstanceAction() action.update(act) actions.append(action) return actions self.stubs.Set(db, 'actions_get', fake_get_actions) req = fakes.HTTPRequestV3.blank('/servers/12/os-instance-actions') res_dict = self.controller.index(req, FAKE_UUID) for res in res_dict['instance_actions']: fake_action = self.fake_actions[FAKE_UUID][res['request_id']] self.assertEqual(format_action(fake_action), format_action(res)) def test_get_action_with_events_allowed(self): def fake_get_action(context, uuid, request_id): action = models.InstanceAction() action.update(self.fake_actions[uuid][request_id]) return action def fake_get_events(context, action_id): events = [] for evt in self.fake_events[action_id]: event = models.InstanceActionEvent() event.update(evt) events.append(event) return events self.stubs.Set(db, 'action_get_by_request_id', fake_get_action) self.stubs.Set(db, 'action_events_get', fake_get_events) req = fakes.HTTPRequestV3.blank( '/servers/12/os-instance-actions/1', use_admin_context=True) res_dict = self.controller.show(req, FAKE_UUID, FAKE_REQUEST_ID) fake_action = self.fake_actions[FAKE_UUID][FAKE_REQUEST_ID] fake_events = self.fake_events[fake_action['id']] fake_action['events'] = fake_events self.assertEqual(format_action(fake_action), format_action(res_dict['instance_action'])) def test_get_action_with_events_not_allowed(self): def fake_get_action(context, uuid, request_id): return self.fake_actions[uuid][request_id] def fake_get_events(context, action_id): return self.fake_events[action_id] self.stubs.Set(db, 'action_get_by_request_id', fake_get_action) self.stubs.Set(db, 'action_events_get', fake_get_events) rules = policy.Rules({ 'compute:get': policy.parse_rule(''), 'compute_extension:v3:os-instance-actions': policy.parse_rule(''), 'compute_extension:v3:os-instance-actions:events': policy.parse_rule('is_admin:True')}) policy.set_rules(rules) req = fakes.HTTPRequestV3.blank( '/servers/12/os-instance-actions/1') res_dict = self.controller.show(req, FAKE_UUID, FAKE_REQUEST_ID) fake_action = self.fake_actions[FAKE_UUID][FAKE_REQUEST_ID] self.assertEqual(format_action(fake_action), format_action(res_dict['instance_action'])) def test_action_not_found(self): def fake_no_action(context, uuid, action_id): return None self.stubs.Set(db, 'action_get_by_request_id', fake_no_action) req = fakes.HTTPRequestV3.blank( '/servers/12/os-instance-actions/1') self.assertRaises(exc.HTTPNotFound, self.controller.show, req, FAKE_UUID, FAKE_REQUEST_ID) def test_instance_not_found(self): def fake_get(self, context, instance_uuid, expected_attrs=None, want_objects=False): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get) req = fakes.HTTPRequestV3.blank('/servers/12/os-instance-actions') self.assertRaises(exc.HTTPNotFound, self.controller.index, req, FAKE_UUID) def test_instance_not_found_in_show(self): def fake_get(self, context, instance_uuid, expected_attrs=None, want_objects=False): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get) req = fakes.HTTPRequestV3.blank('/servers/12/os-instance-actions/1') self.assertRaises(exc.HTTPNotFound, self.controller.show, req, FAKE_UUID, FAKE_REQUEST_ID) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py0000664000175400017540000000453412323721510031544 0ustar jenkinsjenkins00000000000000# Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack import compute from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes UUID = 'abc' def fake_get_diagnostics(self, _context, instance_uuid): return {'data': 'Some diagnostic info'} def fake_instance_get(self, _context, instance_uuid, want_objects=False): if instance_uuid != UUID: raise Exception("Invalid UUID") return {'uuid': instance_uuid} def fake_instance_get_instance_not_found(self, _context, instance_uuid, want_objects=False): raise exception.InstanceNotFound(instance_id=instance_uuid) class ServerDiagnosticsTest(test.NoDBTestCase): def setUp(self): super(ServerDiagnosticsTest, self).setUp() self.stubs.Set(compute_api.API, 'get_diagnostics', fake_get_diagnostics) self.stubs.Set(compute_api.API, 'get', fake_instance_get) self.router = compute.APIRouterV3(init_only=('servers', 'os-server-diagnostics')) def test_get_diagnostics(self): req = fakes.HTTPRequestV3.blank( '/servers/%s/os-server-diagnostics' % UUID) res = req.get_response(self.router) output = jsonutils.loads(res.body) self.assertEqual(output, {'data': 'Some diagnostic info'}) def test_get_diagnostics_with_non_existed_instance(self): req = fakes.HTTPRequestV3.blank( '/servers/%s/os-server-diagnostics' % UUID) self.stubs.Set(compute_api.API, 'get', fake_instance_get_instance_not_found) res = req.get_response(self.router) self.assertEqual(res.status_int, 404) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_server_actions.py0000664000175400017540000012075612323721477030716 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid import mox from oslo.config import cfg import webob from nova.api.openstack.compute import plugins from nova.api.openstack.compute.plugins.v3 import servers from nova.compute import api as compute_api from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.image import glance from nova.objects import instance as instance_obj from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import uuidutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests.image import fake CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') FAKE_UUID = fakes.FAKE_UUID INSTANCE_IDS = {FAKE_UUID: 1} def return_server_not_found(*arg, **kwarg): raise exception.InstanceNotFound(instance_id='42') def instance_update_and_get_original(context, instance_uuid, values, update_cells=True, columns_to_join=None, ): inst = fakes.stub_instance(INSTANCE_IDS[instance_uuid], host='fake_host') inst = dict(inst, **values) return (inst, inst) def instance_update(context, instance_uuid, kwargs, update_cells=True): inst = fakes.stub_instance(INSTANCE_IDS[instance_uuid], host='fake_host') return inst class MockSetAdminPassword(object): def __init__(self): self.instance_id = None self.password = None def __call__(self, context, instance, password): self.instance_id = instance['uuid'] self.password = password class ServerActionsControllerTest(test.TestCase): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' image_href = 'http://localhost/v3/images/%s' % image_uuid def setUp(self): super(ServerActionsControllerTest, self).setUp() CONF.set_override('glance_host', 'localhost') self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, host='fake_host')) self.stubs.Set(db, 'instance_update_and_get_original', instance_update_and_get_original) fakes.stub_out_glance(self.stubs) fakes.stub_out_nw_api(self.stubs) fakes.stub_out_compute_api_snapshot(self.stubs) fake.stub_out_image_service(self.stubs) service_class = 'nova.image.glance.GlanceImageService' self.service = importutils.import_object(service_class) self.sent_to_glance = {} fakes.stub_out_glanceclient_create(self.stubs, self.sent_to_glance) self.flags(allow_instance_snapshots=True, enable_instance_password=True) self.uuid = FAKE_UUID self.url = '/servers/%s/action' % self.uuid self._image_href = '155d900f-4e14-4e4c-a73d-069cbf4541e6' ext_info = plugins.LoadedExtensionInfo() self.controller = servers.ServersController(extension_info=ext_info) self.compute_api = self.controller.compute_api self.context = context.RequestContext('fake', 'fake') self.app = fakes.wsgi_app_v3(init_only=('servers',), fake_auth_context=self.context) def _make_request(self, url, body): req = webob.Request.blank('/v3' + url) req.method = 'POST' req.body = jsonutils.dumps(body) req.content_type = 'application/json' return req.get_response(self.app) def _stub_instance_get(self, uuid=None): self.mox.StubOutWithMock(compute_api.API, 'get') if uuid is None: uuid = uuidutils.generate_uuid() instance = fake_instance.fake_db_instance( id=1, uuid=uuid, vm_state=vm_states.ACTIVE, task_state=None) instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance) self.compute_api.get(self.context, uuid, want_objects=True, expected_attrs=['pci_devices']).AndReturn(instance) return instance def _test_locked_instance(self, action, method=None, body_map=None, compute_api_args_map=None): if method is None: method = action if body_map is None: body_map = {} if compute_api_args_map is None: compute_api_args_map = {} instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(compute_api.API, method)(self.context, instance, *args, **kwargs).AndRaise( exception.InstanceIsLocked(instance_uuid=instance['uuid'])) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: body_map.get(action)}) self.assertEqual(409, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def test_actions_with_locked_instance(self): actions = ['resize', 'confirm_resize', 'revert_resize', 'reboot', 'rebuild'] body_map = {'resize': {'flavor_ref': '2'}, 'reboot': {'type': 'HARD'}, 'rebuild': {'image_ref': self.image_uuid, 'admin_password': 'TNc53Dr8s7vw'}} args_map = {'resize': (('2'), {}), 'confirm_resize': ((), {}), 'reboot': (('HARD',), {}), 'rebuild': ((self.image_uuid, 'TNc53Dr8s7vw'), {})} for action in actions: self.mox.StubOutWithMock(compute_api.API, action) self._test_locked_instance(action, method=None, body_map=body_map, compute_api_args_map=args_map) def test_reboot_hard(self): body = dict(reboot=dict(type="HARD")) req = fakes.HTTPRequestV3.blank(self.url) self.controller._action_reboot(req, FAKE_UUID, body) def test_reboot_soft(self): body = dict(reboot=dict(type="SOFT")) req = fakes.HTTPRequestV3.blank(self.url) self.controller._action_reboot(req, FAKE_UUID, body) def test_reboot_incorrect_type(self): body = dict(reboot=dict(type="NOT_A_TYPE")) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_reboot, req, FAKE_UUID, body) def test_reboot_missing_type(self): body = dict(reboot=dict()) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_reboot, req, FAKE_UUID, body) def test_reboot_none(self): body = dict(reboot=dict(type=None)) req = fakes.HTTPRequest.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_reboot, req, FAKE_UUID, body) def test_reboot_not_found(self): self.stubs.Set(db, 'instance_get_by_uuid', return_server_not_found) body = dict(reboot=dict(type="HARD")) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller._action_reboot, req, str(uuid.uuid4()), body) def test_reboot_raises_conflict_on_invalid_state(self): body = dict(reboot=dict(type="HARD")) def fake_reboot(*args, **kwargs): raise exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') self.stubs.Set(compute_api.API, 'reboot', fake_reboot) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_reboot, req, FAKE_UUID, body) def test_reboot_soft_with_soft_in_progress_raises_conflict(self): body = dict(reboot=dict(type="SOFT")) req = fakes.HTTPRequestV3.blank(self.url) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.REBOOTING)) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_reboot, req, FAKE_UUID, body) def test_reboot_hard_with_soft_in_progress_does_not_raise(self): body = dict(reboot=dict(type="HARD")) req = fakes.HTTPRequestV3.blank(self.url) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.REBOOTING)) self.controller._action_reboot(req, FAKE_UUID, body) def test_reboot_hard_with_hard_in_progress_raises_conflict(self): body = dict(reboot=dict(type="HARD")) req = fakes.HTTPRequestV3.blank(self.url) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.REBOOTING_HARD)) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_reboot, req, FAKE_UUID, body) def test_rebuild_accepted_minimum(self): return_server = fakes.fake_instance_get(image_ref='2', vm_state=vm_states.ACTIVE, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_server) self_href = 'http://localhost/v3/servers/%s' % FAKE_UUID body = { "rebuild": { "image_ref": self._image_href, }, } req = fakes.HTTPRequestV3.blank(self.url) robj = self.controller._action_rebuild(req, FAKE_UUID, body=body) body = robj.obj self.assertEqual(body['server']['image']['id'], '2') self.assertEqual(len(body['server']['admin_password']), CONF.password_length) self.assertEqual(robj['location'], self_href) def test_rebuild_instance_with_image_uuid(self): info = dict(image_href_in_call=None) def rebuild(self2, context, instance, image_href, *args, **kwargs): info['image_href_in_call'] = image_href self.stubs.Set(db, 'instance_get', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) self.stubs.Set(compute_api.API, 'rebuild', rebuild) # proper local hrefs must start with 'http://localhost/v3/' body = { 'rebuild': { 'image_ref': self.image_uuid, }, } req = fakes.HTTPRequestV3.blank('/v3/servers/a/action') self.controller._action_rebuild(req, FAKE_UUID, body=body) self.assertEqual(info['image_href_in_call'], self.image_uuid) def test_rebuild_instance_with_image_href_uses_uuid(self): info = dict(image_href_in_call=None) def rebuild(self2, context, instance, image_href, *args, **kwargs): info['image_href_in_call'] = image_href self.stubs.Set(db, 'instance_get', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) self.stubs.Set(compute_api.API, 'rebuild', rebuild) # proper local hrefs must start with 'http://localhost/v3/' body = { 'rebuild': { 'image_ref': self.image_href, }, } req = fakes.HTTPRequestV3.blank('/v3/servers/a/action') self.controller._action_rebuild(req, FAKE_UUID, body=body) self.assertEqual(info['image_href_in_call'], self.image_uuid) def test_rebuild_accepted_minimum_pass_disabled(self): # run with enable_instance_password disabled to verify admin_password # is missing from response. See lp bug 921814 self.flags(enable_instance_password=False) return_server = fakes.fake_instance_get(image_ref='2', vm_state=vm_states.ACTIVE, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_server) self_href = 'http://localhost/v3/servers/%s' % FAKE_UUID body = { "rebuild": { "image_ref": self._image_href, }, } req = fakes.HTTPRequestV3.blank(self.url) robj = self.controller._action_rebuild(req, FAKE_UUID, body=body) body = robj.obj self.assertEqual(body['server']['image']['id'], '2') self.assertNotIn("admin_password", body['server']) self.assertEqual(robj['location'], self_href) def test_rebuild_raises_conflict_on_invalid_state(self): body = { "rebuild": { "image_ref": self._image_href, }, } def fake_rebuild(*args, **kwargs): raise exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_accepted_with_metadata(self): metadata = {'new': 'metadata'} return_server = fakes.fake_instance_get(metadata=metadata, vm_state=vm_states.ACTIVE, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_server) body = { "rebuild": { "image_ref": self._image_href, "metadata": metadata, }, } req = fakes.HTTPRequestV3.blank(self.url) body = self.controller._action_rebuild(req, FAKE_UUID, body=body).obj self.assertEqual(body['server']['metadata'], metadata) def test_rebuild_accepted_with_bad_metadata(self): body = { "rebuild": { "image_ref": self._image_href, "metadata": "stack", }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_with_too_large_metadata(self): body = { "rebuild": { "image_ref": self._image_href, "metadata": { 256 * "k": "value" } } } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_bad_entity(self): body = { "rebuild": { "imageId": self._image_href, }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_admin_password(self): return_server = fakes.fake_instance_get(image_ref='2', vm_state=vm_states.ACTIVE, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_server) body = { "rebuild": { "image_ref": self._image_href, "admin_password": "asdf", }, } req = fakes.HTTPRequestV3.blank(self.url) body = self.controller._action_rebuild(req, FAKE_UUID, body=body).obj self.assertEqual(body['server']['image']['id'], '2') self.assertEqual(body['server']['admin_password'], 'asdf') def test_rebuild_admin_password_pass_disabled(self): # run with enable_instance_password disabled to verify admin_password # is missing from response. See lp bug 921814 self.flags(enable_instance_password=False) return_server = fakes.fake_instance_get(image_ref='2', vm_state=vm_states.ACTIVE, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_server) body = { "rebuild": { "image_ref": self._image_href, "admin_password": "asdf", }, } req = fakes.HTTPRequestV3.blank(self.url) body = self.controller._action_rebuild(req, FAKE_UUID, body=body).obj self.assertEqual(body['server']['image']['id'], '2') self.assertNotIn('admin_password', body['server']) def test_rebuild_server_not_found(self): def server_not_found(self, instance_id, columns_to_join=None, use_slave=False): raise exception.InstanceNotFound(instance_id=instance_id) self.stubs.Set(db, 'instance_get_by_uuid', server_not_found) body = { "rebuild": { "image_ref": self._image_href, }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_with_bad_image(self): body = { "rebuild": { "image_ref": "foo", }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_when_kernel_not_exists(self): def return_image_meta(*args, **kwargs): image_meta_table = { '2': {'id': 2, 'status': 'active', 'container_format': 'ari'}, '155d900f-4e14-4e4c-a73d-069cbf4541e6': {'id': 3, 'status': 'active', 'container_format': 'raw', 'properties': {'kernel_id': 1, 'ramdisk_id': 2}}, } image_id = args[2] try: image_meta = image_meta_table[str(image_id)] except KeyError: raise exception.ImageNotFound(image_id=image_id) return image_meta self.stubs.Set(fake._FakeImageService, 'show', return_image_meta) body = { "rebuild": { "image_ref": "155d900f-4e14-4e4c-a73d-069cbf4541e6", }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, req, FAKE_UUID, body=body) def test_rebuild_proper_kernel_ram(self): instance_meta = {'kernel_id': None, 'ramdisk_id': None} orig_get = compute_api.API.get def wrap_get(*args, **kwargs): inst = orig_get(*args, **kwargs) instance_meta['instance'] = inst return inst def fake_save(context, **kwargs): instance = instance_meta['instance'] for key in instance_meta.keys(): if key in instance.obj_what_changed(): instance_meta[key] = instance[key] def return_image_meta(*args, **kwargs): image_meta_table = { '1': {'id': 1, 'status': 'active', 'container_format': 'aki'}, '2': {'id': 2, 'status': 'active', 'container_format': 'ari'}, '155d900f-4e14-4e4c-a73d-069cbf4541e6': {'id': 3, 'status': 'active', 'container_format': 'raw', 'properties': {'kernel_id': 1, 'ramdisk_id': 2}}, } image_id = args[2] try: image_meta = image_meta_table[str(image_id)] except KeyError: raise exception.ImageNotFound(image_id=image_id) return image_meta self.stubs.Set(fake._FakeImageService, 'show', return_image_meta) self.stubs.Set(compute_api.API, 'get', wrap_get) self.stubs.Set(instance_obj.Instance, 'save', fake_save) body = { "rebuild": { "image_ref": "155d900f-4e14-4e4c-a73d-069cbf4541e6", }, } req = fakes.HTTPRequestV3.blank(self.url) self.controller._action_rebuild(req, FAKE_UUID, body=body).obj self.assertEqual(instance_meta['kernel_id'], '1') self.assertEqual(instance_meta['ramdisk_id'], '2') def _test_rebuild_preserve_ephemeral(self, value=None): return_server = fakes.fake_instance_get(image_ref='2', vm_state=vm_states.ACTIVE, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_server) body = { "rebuild": { "image_ref": self._image_href, }, } if value is not None: body['rebuild']['preserve_ephemeral'] = value req = fakes.HTTPRequestV3.blank(self.url) context = req.environ['nova.context'] self.mox.StubOutWithMock(compute_api.API, 'rebuild') if value is not None: compute_api.API.rebuild(context, mox.IgnoreArg(), self._image_href, mox.IgnoreArg(), preserve_ephemeral=value) else: compute_api.API.rebuild(context, mox.IgnoreArg(), self._image_href, mox.IgnoreArg()) self.mox.ReplayAll() self.controller._action_rebuild(req, FAKE_UUID, body=body) def test_rebuild_preserve_ephemeral_true(self): self._test_rebuild_preserve_ephemeral(True) def test_rebuild_preserve_ephemeral_false(self): self._test_rebuild_preserve_ephemeral(False) def test_rebuild_preserve_ephemeral_default(self): self._test_rebuild_preserve_ephemeral() def test_resize_server(self): body = dict(resize=dict(flavor_ref="http://localhost/3")) self.resize_called = False def resize_mock(*args): self.resize_called = True self.stubs.Set(compute_api.API, 'resize', resize_mock) req = fakes.HTTPRequestV3.blank(self.url) body = self.controller._action_resize(req, FAKE_UUID, body) self.assertEqual(self.resize_called, True) def test_resize_server_no_flavor(self): body = dict(resize=dict()) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_resize, req, FAKE_UUID, body) def test_resize_server_no_flavor_ref(self): body = dict(resize=dict(flavor_ref=None)) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_resize, req, FAKE_UUID, body) def test_resize_with_server_not_found(self): body = dict(resize=dict(flavor_ref="http://localhost/3")) self.stubs.Set(compute_api.API, 'get', return_server_not_found) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller._action_resize, req, FAKE_UUID, body) def test_resize_with_image_exceptions(self): body = dict(resize=dict(flavor_ref="http://localhost/3")) self.resize_called = 0 image_id = 'fake_image_id' exceptions = [ (exception.ImageNotAuthorized(image_id=image_id), webob.exc.HTTPUnauthorized), (exception.ImageNotFound(image_id=image_id), webob.exc.HTTPBadRequest), (exception.Invalid, webob.exc.HTTPBadRequest), ] raised, expected = map(iter, zip(*exceptions)) def _fake_resize(obj, context, instance, flavor_id): self.resize_called += 1 raise raised.next() self.stubs.Set(compute_api.API, 'resize', _fake_resize) for call_no in range(len(exceptions)): req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(expected.next(), self.controller._action_resize, req, FAKE_UUID, body) self.assertEqual(self.resize_called, call_no + 1) def test_resize_with_too_many_instances(self): body = dict(resize=dict(flavor_ref="http://localhost/3")) def fake_resize(*args, **kwargs): raise exception.TooManyInstances(message="TooManyInstance") self.stubs.Set(compute_api.API, 'resize', fake_resize) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_resize, req, FAKE_UUID, body) def test_resize_raises_conflict_on_invalid_state(self): body = dict(resize=dict(flavor_ref="http://localhost/3")) def fake_resize(*args, **kwargs): raise exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') self.stubs.Set(compute_api.API, 'resize', fake_resize) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_resize, req, FAKE_UUID, body) def test_confirm_resize_server(self): body = dict(confirm_resize=None) self.confirm_resize_called = False def cr_mock(*args): self.confirm_resize_called = True self.stubs.Set(compute_api.API, 'confirm_resize', cr_mock) req = fakes.HTTPRequestV3.blank(self.url) body = self.controller._action_confirm_resize(req, FAKE_UUID, body) self.assertEqual(self.confirm_resize_called, True) def test_confirm_resize_migration_not_found(self): body = dict(confirm_resize=None) def confirm_resize_mock(*args): raise exception.MigrationNotFoundByStatus(instance_id=1, status='finished') self.stubs.Set(compute_api.API, 'confirm_resize', confirm_resize_mock) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_confirm_resize, req, FAKE_UUID, body) def test_confirm_resize_raises_conflict_on_invalid_state(self): body = dict(confirm_resize=None) def fake_confirm_resize(*args, **kwargs): raise exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') self.stubs.Set(compute_api.API, 'confirm_resize', fake_confirm_resize) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_confirm_resize, req, FAKE_UUID, body) def test_revert_resize_migration_not_found(self): body = dict(revertResize=None) def revert_resize_mock(*args): raise exception.MigrationNotFoundByStatus(instance_id=1, status='finished') self.stubs.Set(compute_api.API, 'revert_resize', revert_resize_mock) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_revert_resize, req, FAKE_UUID, body) def test_revert_resize_server_not_found(self): body = dict(revertResize=None) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob. exc.HTTPNotFound, self.controller._action_revert_resize, req, "bad_server_id", body) def test_revert_resize_server(self): body = dict(revertResize=None) self.revert_resize_called = False def revert_mock(*args): self.revert_resize_called = True self.stubs.Set(compute_api.API, 'revert_resize', revert_mock) req = fakes.HTTPRequestV3.blank(self.url) body = self.controller._action_revert_resize(req, FAKE_UUID, body) self.assertEqual(self.revert_resize_called, True) def test_revert_resize_raises_conflict_on_invalid_state(self): body = dict(revertResize=None) def fake_revert_resize(*args, **kwargs): raise exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') self.stubs.Set(compute_api.API, 'revert_resize', fake_revert_resize) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_revert_resize, req, FAKE_UUID, body) def test_create_image(self): body = { 'create_image': { 'name': 'Snapshot 1', }, } req = fakes.HTTPRequestV3.blank(self.url) response = self.controller._action_create_image(req, FAKE_UUID, body) location = response.headers['Location'] self.assertEqual(glance.generate_image_url('123'), location) def test_create_image_name_too_long(self): long_name = 'a' * 260 body = { 'create_image': { 'name': long_name, }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_create_image, req, FAKE_UUID, body) def _do_test_create_volume_backed_image(self, extra_properties): def _fake_id(x): return '%s-%s-%s-%s' % (x * 8, x * 4, x * 4, x * 12) body = dict(create_image=dict(name='snapshot_of_volume_backed')) if extra_properties: body['create_image']['metadata'] = extra_properties image_service = glance.get_default_image_service() bdm = [dict(volume_id=_fake_id('a'), volume_size=1, device_name='vda', delete_on_termination=False)] props = dict(kernel_id=_fake_id('b'), ramdisk_id=_fake_id('c'), root_device_name='/dev/vda', block_device_mapping=bdm) original_image = dict(properties=props, container_format='ami', status='active', is_public=True) image_service.create(None, original_image) def fake_block_device_mapping_get_all_by_instance(context, inst_id, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': _fake_id('a'), 'source_type': 'snapshot', 'destination_type': 'volume', 'volume_size': 1, 'device_name': 'vda', 'snapshot_id': 1, 'boot_index': 0, 'delete_on_termination': False, 'no_device': None})] self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_block_device_mapping_get_all_by_instance) instance = fakes.fake_instance_get(image_ref=original_image['id'], vm_state=vm_states.ACTIVE, root_device_name='/dev/vda') self.stubs.Set(db, 'instance_get_by_uuid', instance) volume = dict(id=_fake_id('a'), size=1, host='fake', display_description='fake') snapshot = dict(id=_fake_id('d')) self.mox.StubOutWithMock(self.controller.compute_api, 'volume_api') volume_api = self.controller.compute_api.volume_api volume_api.get(mox.IgnoreArg(), volume['id']).AndReturn(volume) volume_api.create_snapshot_force(mox.IgnoreArg(), volume['id'], mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(snapshot) self.mox.ReplayAll() req = fakes.HTTPRequestV3.blank(self.url) response = self.controller._action_create_image(req, FAKE_UUID, body) location = response.headers['Location'] image_id = location.replace(glance.generate_image_url(''), '') image = image_service.show(None, image_id) self.assertEqual(image['name'], 'snapshot_of_volume_backed') properties = image['properties'] self.assertEqual(properties['kernel_id'], _fake_id('b')) self.assertEqual(properties['ramdisk_id'], _fake_id('c')) self.assertEqual(properties['root_device_name'], '/dev/vda') self.assertEqual(properties['bdm_v2'], True) bdms = properties['block_device_mapping'] self.assertEqual(len(bdms), 1) self.assertEqual(bdms[0]['boot_index'], 0) self.assertEqual(bdms[0]['source_type'], 'snapshot') self.assertEqual(bdms[0]['destination_type'], 'volume') self.assertEqual(bdms[0]['snapshot_id'], snapshot['id']) for fld in ('connection_info', 'id', 'instance_uuid', 'device_name'): self.assertTrue(fld not in bdms[0]) for k in extra_properties.keys(): self.assertEqual(properties[k], extra_properties[k]) def test_create_volume_backed_image_no_metadata(self): self._do_test_create_volume_backed_image({}) def test_create_volume_backed_image_with_metadata(self): self._do_test_create_volume_backed_image(dict(ImageType='Gold', ImageVersion='2.0')) def test_create_volume_backed_image_with_metadata_from_volume(self): def _fake_id(x): return '%s-%s-%s-%s' % (x * 8, x * 4, x * 4, x * 12) body = dict(create_image=dict(name='snapshot_of_volume_backed')) image_service = glance.get_default_image_service() def fake_block_device_mapping_get_all_by_instance(context, inst_id, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': _fake_id('a'), 'source_type': 'snapshot', 'destination_type': 'volume', 'volume_size': 1, 'device_name': 'vda', 'snapshot_id': 1, 'boot_index': 0, 'delete_on_termination': False, 'no_device': None})] self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_block_device_mapping_get_all_by_instance) instance = fakes.fake_instance_get(image_ref='', vm_state=vm_states.ACTIVE, root_device_name='/dev/vda') self.stubs.Set(db, 'instance_get_by_uuid', instance) fake_metadata = {'test_key1': 'test_value1', 'test_key2': 'test_value2'} volume = dict(id=_fake_id('a'), size=1, host='fake', display_description='fake', volume_image_metadata=fake_metadata) snapshot = dict(id=_fake_id('d')) self.mox.StubOutWithMock(self.controller.compute_api, 'volume_api') volume_api = self.controller.compute_api.volume_api volume_api.get(mox.IgnoreArg(), volume['id']).AndReturn(volume) volume_api.get(mox.IgnoreArg(), volume['id']).AndReturn(volume) volume_api.create_snapshot_force(mox.IgnoreArg(), volume['id'], mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(snapshot) req = fakes.HTTPRequestV3.blank(self.url) self.mox.ReplayAll() response = self.controller._action_create_image(req, FAKE_UUID, body) location = response.headers['Location'] image_id = location.replace('http://localhost:9292/images/', '') image = image_service.show(None, image_id) properties = image['properties'] self.assertEqual(properties['test_key1'], 'test_value1') self.assertEqual(properties['test_key2'], 'test_value2') def test_create_image_snapshots_disabled(self): """Don't permit a snapshot if the allow_instance_snapshots flag is False """ self.flags(allow_instance_snapshots=False) body = { 'create_image': { 'name': 'Snapshot 1', }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_create_image, req, FAKE_UUID, body) def test_create_image_with_metadata(self): body = { 'create_image': { 'name': 'Snapshot 1', 'metadata': {'key': 'asdf'}, }, } req = fakes.HTTPRequestV3.blank(self.url) response = self.controller._action_create_image(req, FAKE_UUID, body) location = response.headers['Location'] self.assertEqual(glance.generate_image_url('123'), location) def test_create_image_with_too_much_metadata(self): body = { 'create_image': { 'name': 'Snapshot 1', 'metadata': {}, }, } for num in range(CONF.quota_metadata_items + 1): body['create_image']['metadata']['foo%i' % num] = "bar" req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_create_image, req, FAKE_UUID, body) def test_create_image_no_name(self): body = { 'create_image': {}, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_create_image, req, FAKE_UUID, body) def test_create_image_blank_name(self): body = { 'create_image': { 'name': '', } } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_create_image, req, FAKE_UUID, body) def test_create_image_bad_metadata(self): body = { 'create_image': { 'name': 'geoff', 'metadata': 'henry', }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_create_image, req, FAKE_UUID, body) def test_create_image_raises_conflict_on_invalid_state(self): def snapshot(*args, **kwargs): raise exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') self.stubs.Set(compute_api.API, 'snapshot', snapshot) body = { "create_image": { "name": "test_snapshot", }, } req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPConflict, self.controller._action_create_image, req, FAKE_UUID, body) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_consoles.py0000664000175400017540000002435512323721477027513 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import uuid as stdlib_uuid import webob from nova.api.openstack.compute.plugins.v3 import consoles from nova.compute import vm_states from nova import console from nova import db from nova import exception from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' class FakeInstanceDB(object): def __init__(self): self.instances_by_id = {} self.ids_by_uuid = {} self.max_id = 0 def return_server_by_id(self, context, id): if id not in self.instances_by_id: self._add_server(id=id) return dict(self.instances_by_id[id]) def return_server_by_uuid(self, context, uuid): if uuid not in self.ids_by_uuid: self._add_server(uuid=uuid) return dict(self.instances_by_id[self.ids_by_uuid[uuid]]) def _add_server(self, id=None, uuid=None): if id is None: id = self.max_id + 1 if uuid is None: uuid = str(stdlib_uuid.uuid4()) instance = stub_instance(id, uuid=uuid) self.instances_by_id[id] = instance self.ids_by_uuid[uuid] = id if id > self.max_id: self.max_id = id def stub_instance(id, user_id='fake', project_id='fake', host=None, vm_state=None, task_state=None, reservation_id="", uuid=FAKE_UUID, image_ref="10", flavor_id="1", name=None, key_name='', access_ipv4=None, access_ipv6=None, progress=0): if host is not None: host = str(host) if key_name: key_data = 'FAKE' else: key_data = '' # ReservationID isn't sent back, hack it in there. server_name = name or "server%s" % id if reservation_id != "": server_name = "reservation_%s" % (reservation_id, ) instance = { "id": int(id), "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "admin_password": "", "user_id": user_id, "project_id": project_id, "image_ref": image_ref, "kernel_id": "", "ramdisk_id": "", "launch_index": 0, "key_name": key_name, "key_data": key_data, "vm_state": vm_state or vm_states.BUILDING, "task_state": task_state, "memory_mb": 0, "vcpus": 0, "root_gb": 0, "hostname": "", "host": host, "instance_type": {}, "user_data": "", "reservation_id": reservation_id, "mac_address": "", "scheduled_at": timeutils.utcnow(), "launched_at": timeutils.utcnow(), "terminated_at": timeutils.utcnow(), "availability_zone": "", "display_name": server_name, "display_description": "", "locked": False, "metadata": [], "access_ip_v4": access_ipv4, "access_ip_v6": access_ipv6, "uuid": uuid, "progress": progress} return instance class ConsolesControllerTest(test.NoDBTestCase): def setUp(self): super(ConsolesControllerTest, self).setUp() self.flags(verbose=True) self.instance_db = FakeInstanceDB() self.stubs.Set(db, 'instance_get', self.instance_db.return_server_by_id) self.stubs.Set(db, 'instance_get_by_uuid', self.instance_db.return_server_by_uuid) self.uuid = str(stdlib_uuid.uuid4()) self.url = '/v3/fake/servers/%s/consoles' % self.uuid self.controller = consoles.ConsolesController() def test_create_console(self): def fake_create_console(cons_self, context, instance_id): self.assertEqual(instance_id, self.uuid) return {} self.stubs.Set(console.api.API, 'create_console', fake_create_console) req = fakes.HTTPRequestV3.blank(self.url) self.controller.create(req, self.uuid, None) self.assertEqual(self.controller.create.wsgi_code, 201) def test_create_console_unknown_instance(self): def fake_create_console(cons_self, context, instance_id): raise exception.InstanceNotFound(instance_id=instance_id) self.stubs.Set(console.api.API, 'create_console', fake_create_console) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.uuid, None) def test_show_console(self): def fake_get_console(cons_self, context, instance_id, console_id): self.assertEqual(instance_id, self.uuid) self.assertEqual(console_id, 20) pool = dict(console_type='fake_type', public_hostname='fake_hostname') return dict(id=console_id, password='fake_password', port='fake_port', pool=pool, instance_name='inst-0001') expected = {'console': {'id': 20, 'port': 'fake_port', 'host': 'fake_hostname', 'password': 'fake_password', 'instance_name': 'inst-0001', 'console_type': 'fake_type'}} self.stubs.Set(console.api.API, 'get_console', fake_get_console) req = fakes.HTTPRequestV3.blank(self.url + '/20') res_dict = self.controller.show(req, self.uuid, '20') self.assertThat(res_dict, matchers.DictMatches(expected)) def test_show_console_unknown_console(self): def fake_get_console(cons_self, context, instance_id, console_id): raise exception.ConsoleNotFound(console_id=console_id) self.stubs.Set(console.api.API, 'get_console', fake_get_console) req = fakes.HTTPRequestV3.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, '20') def test_show_console_unknown_instance(self): def fake_get_console(cons_self, context, instance_id, console_id): raise exception.ConsoleNotFoundForInstance( instance_uuid=instance_id) self.stubs.Set(console.api.API, 'get_console', fake_get_console) req = fakes.HTTPRequestV3.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, '20') def test_list_consoles(self): def fake_get_consoles(cons_self, context, instance_id): self.assertEqual(instance_id, self.uuid) pool1 = dict(console_type='fake_type', public_hostname='fake_hostname') cons1 = dict(id=10, password='fake_password', port='fake_port', pool=pool1) pool2 = dict(console_type='fake_type2', public_hostname='fake_hostname2') cons2 = dict(id=11, password='fake_password2', port='fake_port2', pool=pool2) return [cons1, cons2] expected = {'consoles': [{'id': 10, 'console_type': 'fake_type'}, {'id': 11, 'console_type': 'fake_type2'}]} self.stubs.Set(console.api.API, 'get_consoles', fake_get_consoles) req = fakes.HTTPRequestV3.blank(self.url) res_dict = self.controller.index(req, self.uuid) self.assertThat(res_dict, matchers.DictMatches(expected)) def test_list_consoles_unknown_instance(self): def fake_get_consoles(cons_self, context, instance_id): raise exception.InstanceNotFound(instance_id=instance_id) self.stubs.Set(console.api.API, 'get_consoles', fake_get_consoles) req = fakes.HTTPRequestV3.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.uuid) def test_delete_console(self): def fake_get_console(cons_self, context, instance_id, console_id): self.assertEqual(instance_id, self.uuid) self.assertEqual(console_id, 20) pool = dict(console_type='fake_type', public_hostname='fake_hostname') return dict(id=console_id, password='fake_password', port='fake_port', pool=pool) def fake_delete_console(cons_self, context, instance_id, console_id): self.assertEqual(instance_id, self.uuid) self.assertEqual(console_id, 20) self.stubs.Set(console.api.API, 'get_console', fake_get_console) self.stubs.Set(console.api.API, 'delete_console', fake_delete_console) req = fakes.HTTPRequestV3.blank(self.url + '/20') self.controller.delete(req, self.uuid, '20') def test_delete_console_unknown_console(self): def fake_delete_console(cons_self, context, instance_id, console_id): raise exception.ConsoleNotFound(console_id=console_id) self.stubs.Set(console.api.API, 'delete_console', fake_delete_console) req = fakes.HTTPRequestV3.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, '20') def test_delete_console_unknown_instance(self): def fake_delete_console(cons_self, context, instance_id, console_id): raise exception.ConsoleNotFoundForInstance( instance_uuid=instance_id) self.stubs.Set(console.api.API, 'delete_console', fake_delete_console) req = fakes.HTTPRequestV3.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, '20') nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_migrations.py0000664000175400017540000000763312323721477030042 0ustar jenkinsjenkins00000000000000# All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from nova.api.openstack.compute.plugins.v3 import migrations from nova import context from nova import exception from nova.objects import base from nova.objects import migration from nova.openstack.common.fixture import moxstubout from nova import test fake_migrations = [ { 'id': 1234, 'source_node': 'node1', 'dest_node': 'node2', 'source_compute': 'compute1', 'dest_compute': 'compute2', 'dest_host': '1.2.3.4', 'status': 'Done', 'instance_uuid': 'instance_id_123', 'old_instance_type_id': 1, 'new_instance_type_id': 2, 'created_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'deleted_at': None, 'deleted': False }, { 'id': 5678, 'source_node': 'node10', 'dest_node': 'node20', 'source_compute': 'compute10', 'dest_compute': 'compute20', 'dest_host': '5.6.7.8', 'status': 'Done', 'instance_uuid': 'instance_id_456', 'old_instance_type_id': 5, 'new_instance_type_id': 6, 'created_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'updated_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'deleted_at': None, 'deleted': False } ] migrations_obj = base.obj_make_list( 'fake-context', migration.MigrationList(), migration.Migration, fake_migrations) class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} GET = {} class MigrationsTestCase(test.NoDBTestCase): def setUp(self): """Run before each test.""" super(MigrationsTestCase, self).setUp() self.controller = migrations.MigrationsController() self.context = context.get_admin_context() self.req = FakeRequest() self.req.environ['nova.context'] = self.context mox_fixture = self.useFixture(moxstubout.MoxStubout()) self.mox = mox_fixture.mox def test_index(self): migrations_in_progress = { 'migrations': migrations.output(migrations_obj)} for mig in migrations_in_progress['migrations']: self.assertTrue('id' in mig) self.assertTrue('deleted' not in mig) self.assertTrue('deleted_at' not in mig) filters = {'host': 'host1', 'status': 'migrating', 'cell_name': 'ChildCell'} self.req.GET = filters self.mox.StubOutWithMock(self.controller.compute_api, "get_migrations") self.controller.compute_api.get_migrations( self.context, filters).AndReturn(migrations_obj) self.mox.ReplayAll() response = self.controller.index(self.req) self.assertEqual(migrations_in_progress, response) def test_index_needs_authorization(self): user_context = context.RequestContext(user_id=None, project_id=None, is_admin=False, read_deleted="no", overwrite=False) self.req.environ['nova.context'] = user_context self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, self.req) nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/__init__.py0000664000175400017540000000000012323721477026343 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/plugins/v3/test_server_usage.py0000664000175400017540000001111112323721477030342 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from nova import compute from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' DATE1 = datetime.datetime(year=2013, month=4, day=5, hour=12) DATE2 = datetime.datetime(year=2013, month=4, day=5, hour=13) DATE3 = datetime.datetime(year=2013, month=4, day=5, hour=14) def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, launched_at=DATE1, terminated_at=DATE2) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(2, uuid=UUID1, launched_at=DATE2, terminated_at=DATE3), fakes.stub_instance(3, uuid=UUID2, launched_at=DATE1, terminated_at=DATE3), ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ServerUsageTest(test.TestCase): content_type = 'application/json' prefix = 'os-server-usage:' def setUp(self): super(ServerUsageTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = fakes.HTTPRequestV3.blank(url) req.accept = self.content_type res = req.get_response(fakes.wsgi_app_v3(init_only=( 'servers', 'os-server-usage'))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertServerUsage(self, server, launched_at, terminated_at): resp_launched_at = timeutils.parse_isotime( server.get('%slaunched_at' % self.prefix)) self.assertEqual(timeutils.normalize_time(resp_launched_at), launched_at) resp_terminated_at = timeutils.parse_isotime( server.get('%sterminated_at' % self.prefix)) self.assertEqual(timeutils.normalize_time(resp_terminated_at), terminated_at) def test_show(self): url = '/v3/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) now = timeutils.utcnow() timeutils.set_time_override(now) self.assertServerUsage(self._get_server(res.body), launched_at=DATE1, terminated_at=DATE2) def test_detail(self): url = '/v3/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) servers = self._get_servers(res.body) self.assertServerUsage(servers[0], launched_at=DATE2, terminated_at=DATE3) self.assertServerUsage(servers[1], launched_at=DATE1, terminated_at=DATE3) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v3/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) nova-2014.1/nova/tests/api/openstack/compute/plugins/__init__.py0000664000175400017540000000000012323721477026013 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/test_servers.py0000664000175400017540000057550112323721477025352 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # Copyright 2013 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. import base64 import datetime import uuid import iso8601 from lxml import etree import mox from oslo.config import cfg import six.moves.urllib.parse as urlparse import testtools import webob from nova.api.openstack import compute from nova.api.openstack.compute import ips from nova.api.openstack.compute import servers from nova.api.openstack.compute import views from nova.api.openstack import extensions from nova.api.openstack import xmlutil from nova import block_device from nova.compute import api as compute_api from nova.compute import flavors from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.image import glance from nova.network import manager from nova.network.neutronv2 import api as neutron_api from nova.objects import instance as instance_obj from nova.objects import service as service_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import policy as common_policy from nova.openstack.common import timeutils from nova import policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests import fake_network from nova.tests.image import fake from nova.tests import matchers from nova.tests.objects import test_keypair from nova.tests import utils from nova import utils as nova_utils CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') FAKE_UUID = fakes.FAKE_UUID NS = "{http://docs.openstack.org/compute/api/v1.1}" ATOMNS = "{http://www.w3.org/2005/Atom}" XPATH_NS = { 'atom': 'http://www.w3.org/2005/Atom', 'ns': 'http://docs.openstack.org/compute/api/v1.1' } INSTANCE_IDS = {FAKE_UUID: 1} FIELDS = instance_obj.INSTANCE_DEFAULT_FIELDS def fake_gen_uuid(): return FAKE_UUID def return_servers_empty(context, *args, **kwargs): return [] def return_security_group(context, instance_id, security_group_id): pass def instance_update_and_get_original(context, instance_uuid, values, update_cells=True, columns_to_join=None, ): inst = fakes.stub_instance(INSTANCE_IDS.get(instance_uuid), name=values.get('display_name')) inst = dict(inst, **values) return (inst, inst) def instance_update(context, instance_uuid, values, update_cells=True): inst = fakes.stub_instance(INSTANCE_IDS.get(instance_uuid), name=values.get('display_name')) inst = dict(inst, **values) return inst def fake_compute_api(cls, req, id): return True class MockSetAdminPassword(object): def __init__(self): self.instance_id = None self.password = None def __call__(self, context, instance_id, password): self.instance_id = instance_id self.password = password class Base64ValidationTest(test.TestCase): def setUp(self): super(Base64ValidationTest, self).setUp() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = servers.Controller(self.ext_mgr) def test_decode_base64(self): value = "A random string" result = self.controller._decode_base64(base64.b64encode(value)) self.assertEqual(result, value) def test_decode_base64_binary(self): value = "\x00\x12\x75\x99" result = self.controller._decode_base64(base64.b64encode(value)) self.assertEqual(result, value) def test_decode_base64_whitespace(self): value = "A random string" encoded = base64.b64encode(value) white = "\n \n%s\t%s\n" % (encoded[:2], encoded[2:]) result = self.controller._decode_base64(white) self.assertEqual(result, value) def test_decode_base64_invalid(self): invalid = "A random string" result = self.controller._decode_base64(invalid) self.assertIsNone(result) def test_decode_base64_illegal_bytes(self): value = "A random string" encoded = base64.b64encode(value) white = ">\x01%s*%s()" % (encoded[:2], encoded[2:]) result = self.controller._decode_base64(white) self.assertIsNone(result) class NeutronV2Subclass(neutron_api.API): """Used to ensure that API handles subclasses properly.""" pass class ControllerTest(test.TestCase): def setUp(self): super(ControllerTest, self).setUp() self.flags(verbose=True, use_ipv6=False) fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) return_server = fakes.fake_instance_get() return_servers = fakes.fake_instance_get_all_by_filters() self.stubs.Set(db, 'instance_get_all_by_filters', return_servers) self.stubs.Set(db, 'instance_get_by_uuid', return_server) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'instance_update_and_get_original', instance_update_and_get_original) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = servers.Controller(self.ext_mgr) self.ips_controller = ips.Controller() policy.reset() policy.init() fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) class ServersControllerTest(ControllerTest): def setUp(self): super(ServersControllerTest, self).setUp() nova_utils.reset_is_neutron() def test_can_check_loaded_extensions(self): self.ext_mgr.extensions = {'os-fake': None} self.assertTrue(self.controller.ext_mgr.is_loaded('os-fake')) self.assertFalse(self.controller.ext_mgr.is_loaded('os-not-loaded')) def test_requested_networks_prefix(self): uuid = 'br-00000000-0000-0000-0000-000000000000' requested_networks = [{'uuid': uuid}] res = self.controller._get_requested_networks(requested_networks) self.assertIn((uuid, None), res) def test_requested_networks_neutronv2_enabled_with_port(self): self.flags(network_api_class='nova.network.neutronv2.api.API') port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_requested_networks_neutronv2_enabled_with_network(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' requested_networks = [{'uuid': network}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(network, None, None)]) def test_requested_networks_neutronv2_enabled_with_network_and_port(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_requested_networks_neutronv2_disabled_with_port(self): port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port}] self.assertRaises( webob.exc.HTTPBadRequest, self.controller._get_requested_networks, requested_networks) def test_requested_networks_api_enabled_with_v2_subclass(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_requested_networks_neutronv2_subclass_with_port(self): cls = 'nova.tests.api.openstack.compute.test_servers.NeutronV2Subclass' self.flags(network_api_class=cls) port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port}] res = self.controller._get_requested_networks(requested_networks) self.assertEqual(res, [(None, None, port)]) def test_get_server_by_uuid(self): req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) res_dict = self.controller.show(req, FAKE_UUID) self.assertEqual(res_dict['server']['id'], FAKE_UUID) def test_unique_host_id(self): """Create two servers with the same host and different project_ids and check that the hostId's are unique. """ def return_instance_with_host(self, *args, **kwargs): project_id = str(uuid.uuid4()) return fakes.stub_instance(id=1, uuid=FAKE_UUID, project_id=project_id, host='fake_host') self.stubs.Set(db, 'instance_get_by_uuid', return_instance_with_host) self.stubs.Set(db, 'instance_get', return_instance_with_host) req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) server1 = self.controller.show(req, FAKE_UUID) server2 = self.controller.show(req, FAKE_UUID) self.assertNotEqual(server1['server']['hostId'], server2['server']['hostId']) def _get_server_data_dict(self, uuid, image_bookmark, flavor_bookmark, status="ACTIVE", progress=100): return { "server": { "id": uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "progress": progress, "name": "server1", "status": status, "accessIPv4": "", "accessIPv6": "", "hostId": '', "image": { "id": "10", "links": [ { "rel": "bookmark", "href": image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100'}, {'version': 6, 'addr': '2001:db8:0:1::1'} ] }, "metadata": { "seq": "1", }, "links": [ { "rel": "self", "href": "http://localhost/v2/fake/servers/%s" % uuid, }, { "rel": "bookmark", "href": "http://localhost/fake/servers/%s" % uuid, }, ], } } def test_get_server_by_id(self): self.flags(use_ipv6=True) image_bookmark = "http://localhost/fake/images/10" flavor_bookmark = "http://localhost/fake/flavors/1" uuid = FAKE_UUID req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % uuid) res_dict = self.controller.show(req, uuid) expected_server = self._get_server_data_dict(uuid, image_bookmark, flavor_bookmark, status="BUILD", progress=0) self.assertThat(res_dict, matchers.DictMatches(expected_server)) def test_get_server_with_active_status_by_id(self): image_bookmark = "http://localhost/fake/images/10" flavor_bookmark = "http://localhost/fake/flavors/1" new_return_server = fakes.fake_instance_get( vm_state=vm_states.ACTIVE, progress=100) self.stubs.Set(db, 'instance_get_by_uuid', new_return_server) uuid = FAKE_UUID req = fakes.HTTPRequest.blank('/fake/servers/%s' % uuid) res_dict = self.controller.show(req, uuid) expected_server = self._get_server_data_dict(uuid, image_bookmark, flavor_bookmark) self.assertThat(res_dict, matchers.DictMatches(expected_server)) def test_get_server_with_id_image_ref_by_id(self): image_ref = "10" image_bookmark = "http://localhost/fake/images/10" flavor_id = "1" flavor_bookmark = "http://localhost/fake/flavors/1" new_return_server = fakes.fake_instance_get( vm_state=vm_states.ACTIVE, image_ref=image_ref, flavor_id=flavor_id, progress=100) self.stubs.Set(db, 'instance_get_by_uuid', new_return_server) uuid = FAKE_UUID req = fakes.HTTPRequest.blank('/fake/servers/%s' % uuid) res_dict = self.controller.show(req, uuid) expected_server = self._get_server_data_dict(uuid, image_bookmark, flavor_bookmark) self.assertThat(res_dict, matchers.DictMatches(expected_server)) def test_get_server_addresses_from_cache(self): pub0 = ('172.19.0.1', '172.19.0.2',) pub1 = ('1.2.3.4',) pub2 = ('b33f::fdee:ddff:fecc:bbaa',) priv0 = ('192.168.0.3', '192.168.0.4',) def _ip(ip): return {'address': ip, 'type': 'fixed'} nw_cache = [ {'address': 'aa:aa:aa:aa:aa:aa', 'id': 1, 'network': {'bridge': 'br0', 'id': 1, 'label': 'public', 'subnets': [{'cidr': '172.19.0.0/24', 'ips': [_ip(ip) for ip in pub0]}, {'cidr': '1.2.3.0/16', 'ips': [_ip(ip) for ip in pub1]}, {'cidr': 'b33f::/64', 'ips': [_ip(ip) for ip in pub2]}]}}, {'address': 'bb:bb:bb:bb:bb:bb', 'id': 2, 'network': {'bridge': 'br1', 'id': 2, 'label': 'private', 'subnets': [{'cidr': '192.168.0.0/24', 'ips': [_ip(ip) for ip in priv0]}]}}] return_server = fakes.fake_instance_get(nw_cache=nw_cache) self.stubs.Set(db, 'instance_get_by_uuid', return_server) req = fakes.HTTPRequest.blank('/fake/servers/%s/ips' % FAKE_UUID) res_dict = self.ips_controller.index(req, FAKE_UUID) expected = { 'addresses': { 'private': [ {'version': 4, 'addr': '192.168.0.3'}, {'version': 4, 'addr': '192.168.0.4'}, ], 'public': [ {'version': 4, 'addr': '172.19.0.1'}, {'version': 4, 'addr': '172.19.0.2'}, {'version': 4, 'addr': '1.2.3.4'}, {'version': 6, 'addr': 'b33f::fdee:ddff:fecc:bbaa'}, ], }, } self.assertThat(res_dict, matchers.DictMatches(expected)) def test_get_server_addresses_nonexistent_network(self): url = '/fake/servers/%s/ips/network_0' % FAKE_UUID req = fakes.HTTPRequest.blank(url) self.assertRaises(webob.exc.HTTPNotFound, self.ips_controller.show, req, FAKE_UUID, 'network_0') def test_get_server_addresses_nonexistent_server(self): def fake_instance_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) server_id = str(uuid.uuid4()) req = fakes.HTTPRequest.blank('/fake/servers/%s/ips' % server_id) self.assertRaises(webob.exc.HTTPNotFound, self.ips_controller.index, req, server_id) def test_get_server_list_empty(self): self.stubs.Set(db, 'instance_get_all_by_filters', return_servers_empty) req = fakes.HTTPRequest.blank('/fake/servers') res_dict = self.controller.index(req) num_servers = len(res_dict['servers']) self.assertEqual(0, num_servers) def test_get_server_list_with_reservation_id(self): req = fakes.HTTPRequest.blank('/fake/servers?reservation_id=foo') res_dict = self.controller.index(req) i = 0 for s in res_dict['servers']: self.assertEqual(s.get('name'), 'server%d' % (i + 1)) i += 1 def test_get_server_list_with_reservation_id_empty(self): req = fakes.HTTPRequest.blank('/fake/servers/detail?' 'reservation_id=foo') res_dict = self.controller.detail(req) i = 0 for s in res_dict['servers']: self.assertEqual(s.get('name'), 'server%d' % (i + 1)) i += 1 def test_get_server_list_with_reservation_id_details(self): req = fakes.HTTPRequest.blank('/fake/servers/detail?' 'reservation_id=foo') res_dict = self.controller.detail(req) i = 0 for s in res_dict['servers']: self.assertEqual(s.get('name'), 'server%d' % (i + 1)) i += 1 def test_get_server_list(self): req = fakes.HTTPRequest.blank('/fake/servers') res_dict = self.controller.index(req) self.assertEqual(len(res_dict['servers']), 5) for i, s in enumerate(res_dict['servers']): self.assertEqual(s['id'], fakes.get_fake_uuid(i)) self.assertEqual(s['name'], 'server%d' % (i + 1)) self.assertIsNone(s.get('image', None)) expected_links = [ { "rel": "self", "href": "http://localhost/v2/fake/servers/%s" % s['id'], }, { "rel": "bookmark", "href": "http://localhost/fake/servers/%s" % s['id'], }, ] self.assertEqual(s['links'], expected_links) def test_get_servers_with_limit(self): req = fakes.HTTPRequest.blank('/fake/servers?limit=3') res_dict = self.controller.index(req) servers = res_dict['servers'] self.assertEqual([s['id'] for s in servers], [fakes.get_fake_uuid(i) for i in xrange(len(servers))]) servers_links = res_dict['servers_links'] self.assertEqual(servers_links[0]['rel'], 'next') href_parts = urlparse.urlparse(servers_links[0]['href']) self.assertEqual('/v2/fake/servers', href_parts.path) params = urlparse.parse_qs(href_parts.query) expected_params = {'limit': ['3'], 'marker': [fakes.get_fake_uuid(2)]} self.assertThat(params, matchers.DictMatches(expected_params)) def test_get_servers_with_limit_bad_value(self): req = fakes.HTTPRequest.blank('/fake/servers?limit=aaa') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_server_details_empty(self): self.stubs.Set(db, 'instance_get_all_by_filters', return_servers_empty) req = fakes.HTTPRequest.blank('/fake/servers/detail') res_dict = self.controller.detail(req) num_servers = len(res_dict['servers']) self.assertEqual(0, num_servers) def test_get_server_details_with_limit(self): req = fakes.HTTPRequest.blank('/fake/servers/detail?limit=3') res = self.controller.detail(req) servers = res['servers'] self.assertEqual([s['id'] for s in servers], [fakes.get_fake_uuid(i) for i in xrange(len(servers))]) servers_links = res['servers_links'] self.assertEqual(servers_links[0]['rel'], 'next') href_parts = urlparse.urlparse(servers_links[0]['href']) self.assertEqual('/v2/fake/servers', href_parts.path) params = urlparse.parse_qs(href_parts.query) expected = {'limit': ['3'], 'marker': [fakes.get_fake_uuid(2)]} self.assertThat(params, matchers.DictMatches(expected)) def test_get_server_details_with_limit_bad_value(self): req = fakes.HTTPRequest.blank('/fake/servers/detail?limit=aaa') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.detail, req) def test_get_server_details_with_limit_and_other_params(self): req = fakes.HTTPRequest.blank('/fake/servers/detail' '?limit=3&blah=2:t') res = self.controller.detail(req) servers = res['servers'] self.assertEqual([s['id'] for s in servers], [fakes.get_fake_uuid(i) for i in xrange(len(servers))]) servers_links = res['servers_links'] self.assertEqual(servers_links[0]['rel'], 'next') href_parts = urlparse.urlparse(servers_links[0]['href']) self.assertEqual('/v2/fake/servers', href_parts.path) params = urlparse.parse_qs(href_parts.query) expected = {'limit': ['3'], 'blah': ['2:t'], 'marker': [fakes.get_fake_uuid(2)]} self.assertThat(params, matchers.DictMatches(expected)) def test_get_servers_with_too_big_limit(self): req = fakes.HTTPRequest.blank('/fake/servers?limit=30') res_dict = self.controller.index(req) self.assertNotIn('servers_links', res_dict) def test_get_servers_with_bad_limit(self): req = fakes.HTTPRequest.blank('/fake/servers?limit=asdf') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_servers_with_marker(self): url = '/v2/fake/servers?marker=%s' % fakes.get_fake_uuid(2) req = fakes.HTTPRequest.blank(url) servers = self.controller.index(req)['servers'] self.assertEqual([s['name'] for s in servers], ["server4", "server5"]) def test_get_servers_with_limit_and_marker(self): url = '/v2/fake/servers?limit=2&marker=%s' % fakes.get_fake_uuid(1) req = fakes.HTTPRequest.blank(url) servers = self.controller.index(req)['servers'] self.assertEqual([s['name'] for s in servers], ['server3', 'server4']) def test_get_servers_with_bad_marker(self): req = fakes.HTTPRequest.blank('/fake/servers?limit=2&marker=asdf') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_servers_with_bad_option(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?unknownoption=whee') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_image(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('image', search_opts) self.assertEqual(search_opts['image'], '12345') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?image=12345') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_tenant_id_filter_converts_to_project_id_for_admin(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertIsNotNone(filters) self.assertEqual(filters['project_id'], 'newfake') self.assertFalse(filters.get('tenant_id')) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers' '?all_tenants=1&tenant_id=newfake', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_normal(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertNotIn('project_id', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_one(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertNotIn('project_id', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants=1', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_zero(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertNotIn('all_tenants', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants=0', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_false(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertNotIn('all_tenants', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants=false', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_param_invalid(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None): self.assertNotIn('all_tenants', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants=xxx', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_admin_restricted_tenant(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertIsNotNone(filters) self.assertEqual(filters['project_id'], 'fake') return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers', use_admin_context=True) res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_pass_policy(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None, use_slave=False): self.assertIsNotNone(filters) self.assertNotIn('project_id', filters) return [fakes.stub_instance(100)] self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) rules = { "compute:get_all_tenants": common_policy.parse_rule("project_id:fake"), "compute:get_all": common_policy.parse_rule("project_id:fake"), } common_policy.set_rules(common_policy.Rules(rules)) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants=1') res = self.controller.index(req) self.assertIn('servers', res) def test_all_tenants_fail_policy(self): def fake_get_all(context, filters=None, sort_key=None, sort_dir='desc', limit=None, marker=None, columns_to_join=None): self.assertIsNotNone(filters) return [fakes.stub_instance(100)] rules = { "compute:get_all_tenants": common_policy.parse_rule("project_id:non_fake"), "compute:get_all": common_policy.parse_rule("project_id:fake"), } common_policy.set_rules(common_policy.Rules(rules)) self.stubs.Set(db, 'instance_get_all_by_filters', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?all_tenants=1') self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, req) def test_get_servers_allows_flavor(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('flavor', search_opts) # flavor is an integer ID self.assertEqual(search_opts['flavor'], '12345') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?flavor=12345') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_with_bad_flavor(self): req = fakes.HTTPRequest.blank('/fake/servers?flavor=abcde') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 0) def test_get_server_details_with_bad_flavor(self): req = fakes.HTTPRequest.blank('/fake/servers/detail?flavor=abcde') servers = self.controller.detail(req)['servers'] self.assertThat(servers, testtools.matchers.HasLength(0)) def test_get_servers_allows_status(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('vm_state', search_opts) self.assertEqual(search_opts['vm_state'], [vm_states.ACTIVE]) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?status=active') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_task_status(self): server_uuid = str(uuid.uuid4()) task_state = task_states.REBOOTING def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('task_state', search_opts) self.assertEqual([task_states.REBOOT_PENDING, task_states.REBOOT_STARTED, task_states.REBOOTING], search_opts['task_state']) db_list = [fakes.stub_instance(100, uuid=server_uuid, task_state=task_state)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/servers?status=reboot') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_resize_status(self): # Test when resize status, it maps list of vm states. server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIn('vm_state', search_opts) self.assertEqual(search_opts['vm_state'], [vm_states.ACTIVE, vm_states.STOPPED]) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?status=resize') servers = self.controller.detail(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_invalid_status(self): # Test getting servers by invalid status. req = fakes.HTTPRequest.blank('/fake/servers?status=baloney', use_admin_context=False) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 0) def test_get_servers_deleted_status_as_user(self): req = fakes.HTTPRequest.blank('/fake/servers?status=deleted', use_admin_context=False) self.assertRaises(webob.exc.HTTPForbidden, self.controller.detail, req) def test_get_servers_deleted_status_as_admin(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIn('vm_state', search_opts) self.assertEqual(search_opts['vm_state'], ['deleted']) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?status=deleted', use_admin_context=True) servers = self.controller.detail(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_name(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('name', search_opts) self.assertEqual(search_opts['name'], 'whee.*') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?name=whee.*') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_changes_since(self): server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('changes-since', search_opts) changes_since = datetime.datetime(2011, 1, 24, 17, 8, 1, tzinfo=iso8601.iso8601.UTC) self.assertEqual(search_opts['changes-since'], changes_since) self.assertNotIn('deleted', search_opts) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) params = 'changes-since=2011-01-24T17:08:01Z' req = fakes.HTTPRequest.blank('/fake/servers?%s' % params) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_changes_since_bad_value(self): params = 'changes-since=asdf' req = fakes.HTTPRequest.blank('/fake/servers?%s' % params) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_servers_admin_filters_as_user(self): """Test getting servers by admin-only or unknown options when context is not admin. Make sure the admin and unknown options are stripped before they get to compute_api.get_all() """ server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) # Allowed by user self.assertIn('name', search_opts) self.assertIn('ip', search_opts) # OSAPI converts status to vm_state self.assertIn('vm_state', search_opts) # Allowed only by admins with admin API on self.assertNotIn('unknown_option', search_opts) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) query_str = "name=foo&ip=10.*&status=active&unknown_option=meow" req = fakes.HTTPRequest.blank('/fake/servers?%s' % query_str) res = self.controller.index(req) servers = res['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_admin_options_as_admin(self): """Test getting servers by admin-only or unknown options when context is admin. All options should be passed """ server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) # Allowed by user self.assertIn('name', search_opts) # OSAPI converts status to vm_state self.assertIn('vm_state', search_opts) # Allowed only by admins with admin API on self.assertIn('ip', search_opts) self.assertIn('unknown_option', search_opts) db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) query_str = "name=foo&ip=10.*&status=active&unknown_option=meow" req = fakes.HTTPRequest.blank('/fake/servers?%s' % query_str, use_admin_context=True) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_allows_ip(self): """Test getting servers by ip.""" server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('ip', search_opts) self.assertEqual(search_opts['ip'], '10\..*') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?ip=10\..*') servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_servers_admin_allows_ip6(self): """Test getting servers by ip6 with admin_api enabled and admin context """ server_uuid = str(uuid.uuid4()) def fake_get_all(compute_self, context, search_opts=None, sort_key=None, sort_dir='desc', limit=None, marker=None, want_objects=False): self.assertIsNotNone(search_opts) self.assertIn('ip6', search_opts) self.assertEqual(search_opts['ip6'], 'ffff.*') db_list = [fakes.stub_instance(100, uuid=server_uuid)] return instance_obj._make_instance_list( context, instance_obj.InstanceList(), db_list, FIELDS) self.stubs.Set(compute_api.API, 'get_all', fake_get_all) req = fakes.HTTPRequest.blank('/fake/servers?ip6=ffff.*', use_admin_context=True) servers = self.controller.index(req)['servers'] self.assertEqual(len(servers), 1) self.assertEqual(servers[0]['id'], server_uuid) def test_get_all_server_details(self): expected_flavor = { "id": "1", "links": [ { "rel": "bookmark", "href": 'http://localhost/fake/flavors/1', }, ], } expected_image = { "id": "10", "links": [ { "rel": "bookmark", "href": 'http://localhost/fake/images/10', }, ], } req = fakes.HTTPRequest.blank('/fake/servers/detail') res_dict = self.controller.detail(req) for i, s in enumerate(res_dict['servers']): self.assertEqual(s['id'], fakes.get_fake_uuid(i)) self.assertEqual(s['hostId'], '') self.assertEqual(s['name'], 'server%d' % (i + 1)) self.assertEqual(s['image'], expected_image) self.assertEqual(s['flavor'], expected_flavor) self.assertEqual(s['status'], 'BUILD') self.assertEqual(s['metadata']['seq'], str(i + 1)) def test_get_all_server_details_with_host(self): """We want to make sure that if two instances are on the same host, then they return the same hostId. If two instances are on different hosts, they should return different hostId's. In this test, there are 5 instances - 2 on one host and 3 on another. """ def return_servers_with_host(context, *args, **kwargs): return [fakes.stub_instance(i + 1, 'fake', 'fake', host=i % 2, uuid=fakes.get_fake_uuid(i)) for i in xrange(5)] self.stubs.Set(db, 'instance_get_all_by_filters', return_servers_with_host) req = fakes.HTTPRequest.blank('/fake/servers/detail') res_dict = self.controller.detail(req) server_list = res_dict['servers'] host_ids = [server_list[0]['hostId'], server_list[1]['hostId']] self.assertTrue(host_ids[0] and host_ids[1]) self.assertNotEqual(host_ids[0], host_ids[1]) for i, s in enumerate(server_list): self.assertEqual(s['id'], fakes.get_fake_uuid(i)) self.assertEqual(s['hostId'], host_ids[i % 2]) self.assertEqual(s['name'], 'server%d' % (i + 1)) class ServersControllerUpdateTest(ControllerTest): def _get_request(self, body=None, content_type='json', options=None): if options: self.stubs.Set(db, 'instance_get', fakes.fake_instance_get(**options)) req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) req.method = 'PUT' req.content_type = 'application/%s' % content_type req.body = jsonutils.dumps(body) return req def test_update_server_all_attributes(self): body = {'server': { 'name': 'server_test', 'accessIPv4': '0.0.0.0', 'accessIPv6': 'beef::0123', }} req = self._get_request(body, {'name': 'server_test', 'access_ipv4': '0.0.0.0', 'access_ipv6': 'beef::0123'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') self.assertEqual(res_dict['server']['accessIPv4'], '0.0.0.0') self.assertEqual(res_dict['server']['accessIPv6'], 'beef::123') def test_update_server_invalid_xml_raises_lookup(self): body = """ """ req = self._get_request(body, content_type='xml') res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_update_server_invalid_xml_raises_expat(self): body = """ """ req = self._get_request(body, content_type='xml') res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_update_server_name(self): body = {'server': {'name': 'server_test'}} req = self._get_request(body, {'name': 'server_test'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') def test_update_server_name_too_long(self): body = {'server': {'name': 'x' * 256}} req = self._get_request(body, {'name': 'server_test'}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body) def test_update_server_name_all_blank_spaces(self): body = {'server': {'name': ' ' * 64}} req = self._get_request(body, {'name': 'server_test'}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body) def test_update_server_access_ipv4(self): body = {'server': {'accessIPv4': '0.0.0.0'}} req = self._get_request(body, {'access_ipv4': '0.0.0.0'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['accessIPv4'], '0.0.0.0') def test_update_server_access_ipv4_bad_format(self): body = {'server': {'accessIPv4': 'bad_format'}} req = self._get_request(body, {'access_ipv4': '0.0.0.0'}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body) def test_update_server_access_ipv4_none(self): body = {'server': {'accessIPv4': None}} req = self._get_request(body, {'access_ipv4': '0.0.0.0'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['accessIPv4'], '') def test_update_server_access_ipv4_blank(self): body = {'server': {'accessIPv4': ''}} req = self._get_request(body, {'access_ipv4': '0.0.0.0'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['accessIPv4'], '') def test_update_server_access_ipv6(self): body = {'server': {'accessIPv6': 'beef::0123'}} req = self._get_request(body, {'access_ipv6': 'beef::0123'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['accessIPv6'], 'beef::123') def test_update_server_access_ipv6_bad_format(self): body = {'server': {'accessIPv6': 'bad_format'}} req = self._get_request(body, {'access_ipv6': 'beef::0123'}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body) def test_update_server_access_ipv6_none(self): body = {'server': {'accessIPv6': None}} req = self._get_request(body, {'access_ipv6': 'beef::0123'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['accessIPv6'], '') def test_update_server_access_ipv6_blank(self): body = {'server': {'accessIPv6': ''}} req = self._get_request(body, {'access_ipv6': 'beef::0123'}) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['accessIPv6'], '') def test_update_server_personality(self): body = { 'server': { 'personality': [] } } req = self._get_request(body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, FAKE_UUID, body) def test_update_server_adminPass_ignored(self): inst_dict = dict(name='server_test', adminPass='bacon') body = dict(server=inst_dict) def server_update(context, id, params): filtered_dict = { 'display_name': 'server_test', } self.assertEqual(params, filtered_dict) filtered_dict['uuid'] = id return filtered_dict self.stubs.Set(db, 'instance_update', server_update) # FIXME (comstud) # self.stubs.Set(db, 'instance_get', # return_server_with_attributes(name='server_test')) req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) req.method = 'PUT' req.content_type = "application/json" req.body = jsonutils.dumps(body) res_dict = self.controller.update(req, FAKE_UUID, body) self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') def test_update_server_not_found(self): def fake_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute_api.API, 'get', fake_get) body = {'server': {'name': 'server_test'}} req = self._get_request(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, FAKE_UUID, body) def test_update_server_not_found_on_update(self): def fake_update(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(db, 'instance_update_and_get_original', fake_update) body = {'server': {'name': 'server_test'}} req = self._get_request(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, FAKE_UUID, body) def test_update_server_policy_fail(self): rule = {'compute:update': common_policy.parse_rule('role:admin')} common_policy.set_rules(common_policy.Rules(rule)) body = {'server': {'name': 'server_test'}} req = self._get_request(body, {'name': 'server_test'}) self.assertRaises(exception.PolicyNotAuthorized, self.controller.update, req, FAKE_UUID, body) class ServersControllerDeleteTest(ControllerTest): def setUp(self): super(ServersControllerDeleteTest, self).setUp() self.server_delete_called = False def instance_destroy_mock(*args, **kwargs): self.server_delete_called = True deleted_at = timeutils.utcnow() return fake_instance.fake_db_instance(deleted_at=deleted_at) self.stubs.Set(db, 'instance_destroy', instance_destroy_mock) def _create_delete_request(self, uuid): fakes.stub_out_instance_quota(self.stubs, 0, 10) req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % uuid) req.method = 'DELETE' return req def _delete_server_instance(self, uuid=FAKE_UUID): req = self._create_delete_request(uuid) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) self.controller.delete(req, uuid) def test_delete_server_instance(self): self._delete_server_instance() self.assertTrue(self.server_delete_called) def test_delete_server_instance_not_found(self): self.assertRaises(webob.exc.HTTPNotFound, self._delete_server_instance, uuid='non-existent-uuid') def test_delete_locked_server(self): req = self._create_delete_request(FAKE_UUID) self.stubs.Set(compute_api.API, 'soft_delete', fakes.fake_actions_to_locked_server) self.stubs.Set(compute_api.API, 'delete', fakes.fake_actions_to_locked_server) self.assertRaises(webob.exc.HTTPConflict, self.controller.delete, req, FAKE_UUID) def test_delete_server_instance_while_building(self): fakes.stub_out_instance_quota(self.stubs, 0, 10) request = self._create_delete_request(FAKE_UUID) self.controller.delete(request, FAKE_UUID) self.assertTrue(self.server_delete_called) def test_delete_server_instance_while_deleting_host_up(self): req = self._create_delete_request(FAKE_UUID) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.DELETING, host='fake_host')) self.stubs.Set(instance_obj.Instance, 'save', lambda *args, **kwargs: None) @classmethod def fake_get_by_compute_host(cls, context, host): return {'updated_at': timeutils.utcnow()} self.stubs.Set(service_obj.Service, 'get_by_compute_host', fake_get_by_compute_host) self.controller.delete(req, FAKE_UUID) # Delete request can be ignored, because it's been accepted and # forwarded to the compute service already. self.assertFalse(self.server_delete_called) def test_delete_server_instance_while_deleting_host_down(self): fake_network.stub_out_network_cleanup(self.stubs) req = self._create_delete_request(FAKE_UUID) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.DELETING, host='fake_host')) self.stubs.Set(instance_obj.Instance, 'save', lambda *args, **kwargs: None) @classmethod def fake_get_by_compute_host(cls, context, host): return {'updated_at': datetime.datetime.min} self.stubs.Set(service_obj.Service, 'get_by_compute_host', fake_get_by_compute_host) self.controller.delete(req, FAKE_UUID) # Delete request would be ignored, because it's been accepted before # but since the host is down, api should remove the instance anyway. self.assertTrue(self.server_delete_called) def test_delete_server_instance_while_resize(self): req = self._create_delete_request(FAKE_UUID) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE, task_state=task_states.RESIZE_PREP)) self.controller.delete(req, FAKE_UUID) # Delete shoud be allowed in any case, even during resizing, # because it may get stuck. self.assertTrue(self.server_delete_called) def test_delete_server_instance_if_not_launched(self): self.flags(reclaim_instance_interval=3600) req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) req.method = 'DELETE' self.server_delete_called = False self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(launched_at=None)) def instance_destroy_mock(*args, **kwargs): self.server_delete_called = True deleted_at = timeutils.utcnow() return fake_instance.fake_db_instance(deleted_at=deleted_at) self.stubs.Set(db, 'instance_destroy', instance_destroy_mock) self.controller.delete(req, FAKE_UUID) # delete() should be called for instance which has never been active, # even if reclaim_instance_interval has been set. self.assertEqual(self.server_delete_called, True) class ServersControllerRebuildInstanceTest(ControllerTest): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' image_href = 'http://localhost/v2/fake/images/%s' % image_uuid def setUp(self): super(ServersControllerRebuildInstanceTest, self).setUp() self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) self.body = { 'rebuild': { 'name': 'new_name', 'imageRef': self.image_href, 'metadata': { 'open': 'stack', }, 'personality': [ { "path": "/etc/banner.txt", "contents": "MQ==", }, ], }, } self.req = fakes.HTTPRequest.blank('/fake/servers/a/action') self.req.method = 'POST' self.req.headers["content-type"] = "application/json" def test_rebuild_instance_with_access_ipv4_bad_format(self): # proper local hrefs must start with 'http://localhost/v2/' self.body['rebuild']['accessIPv4'] = 'bad_format' self.body['rebuild']['accessIPv6'] = 'fead::1234' self.body['rebuild']['metadata']['hello'] = 'world' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_with_blank_metadata_key(self): self.body['rebuild']['accessIPv4'] = '0.0.0.0' self.body['rebuild']['accessIPv6'] = 'fead::1234' self.body['rebuild']['metadata'][''] = 'world' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_with_metadata_key_too_long(self): self.body['rebuild']['accessIPv4'] = '0.0.0.0' self.body['rebuild']['accessIPv6'] = 'fead::1234' self.body['rebuild']['metadata'][('a' * 260)] = 'world' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_with_metadata_value_too_long(self): self.body['rebuild']['accessIPv4'] = '0.0.0.0' self.body['rebuild']['accessIPv6'] = 'fead::1234' self.body['rebuild']['metadata']['key1'] = ('a' * 260) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_fails_when_min_ram_too_small(self): # make min_ram larger than our instance ram size def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active', properties={'key1': 'value1'}, min_ram="4096", min_disk="10") self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_fails_when_min_disk_too_small(self): # make min_disk larger than our instance disk size def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active', properties={'key1': 'value1'}, min_ram="128", min_disk="100000") self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_image_too_large(self): # make image size larger than our instance disk size size = str(1000 * (1024 ** 3)) def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='active', size=size) self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_with_deleted_image(self): def fake_get_image(self, context, image_href): return dict(id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', name='public image', is_public=True, status='DELETED') self.stubs.Set(fake._FakeImageService, 'show', fake_get_image) self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) def test_rebuild_instance_with_access_ipv6_bad_format(self): # proper local hrefs must start with 'http://localhost/v2/' self.body['rebuild']['accessIPv4'] = '1.2.3.4' self.body['rebuild']['accessIPv6'] = 'bad_format' self.body['rebuild']['metadata']['hello'] = 'world' self.req.body = jsonutils.dumps(self.body) self.req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller._action_rebuild, self.req, FAKE_UUID, self.body) class ServerStatusTest(test.TestCase): def setUp(self): super(ServerStatusTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = servers.Controller(self.ext_mgr) def _fake_get_server(context, req, id): return fakes.stub_instance(id) self.stubs.Set(self.controller, '_get_server', _fake_get_server) def _get_with_state(self, vm_state, task_state=None): self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get(vm_state=vm_state, task_state=task_state)) request = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) return self.controller.show(request, FAKE_UUID) def _req_with_policy_fail(self, policy_rule_name): rule = {'compute:%s' % policy_rule_name: common_policy.parse_rule('role:admin')} common_policy.set_rules(common_policy.Rules(rule)) return fakes.HTTPRequest.blank('/fake/servers/1234/action') def test_active(self): response = self._get_with_state(vm_states.ACTIVE) self.assertEqual(response['server']['status'], 'ACTIVE') def test_reboot(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBOOTING) self.assertEqual(response['server']['status'], 'REBOOT') def test_reboot_hard(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBOOTING_HARD) self.assertEqual(response['server']['status'], 'HARD_REBOOT') def test_reboot_resize_policy_fail(self): req = self._req_with_policy_fail('reboot') self.assertRaises(exception.PolicyNotAuthorized, self.controller._action_reboot, req, '1234', {'reboot': {'type': 'HARD'}}) def test_rebuild(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBUILDING) self.assertEqual(response['server']['status'], 'REBUILD') def test_rebuild_error(self): response = self._get_with_state(vm_states.ERROR) self.assertEqual(response['server']['status'], 'ERROR') def test_resize(self): response = self._get_with_state(vm_states.ACTIVE, task_states.RESIZE_PREP) self.assertEqual(response['server']['status'], 'RESIZE') def test_confirm_resize_policy_fail(self): req = self._req_with_policy_fail('confirm_resize') self.assertRaises(exception.PolicyNotAuthorized, self.controller._action_confirm_resize, req, '1234', {}) def test_verify_resize(self): response = self._get_with_state(vm_states.RESIZED, None) self.assertEqual(response['server']['status'], 'VERIFY_RESIZE') def test_revert_resize(self): response = self._get_with_state(vm_states.RESIZED, task_states.RESIZE_REVERTING) self.assertEqual(response['server']['status'], 'REVERT_RESIZE') def test_revert_resize_policy_fail(self): req = self._req_with_policy_fail('revert_resize') self.assertRaises(exception.PolicyNotAuthorized, self.controller._action_revert_resize, req, '1234', {}) def test_password_update(self): response = self._get_with_state(vm_states.ACTIVE, task_states.UPDATING_PASSWORD) self.assertEqual(response['server']['status'], 'PASSWORD') def test_stopped(self): response = self._get_with_state(vm_states.STOPPED) self.assertEqual(response['server']['status'], 'SHUTOFF') class ServersControllerCreateTest(test.TestCase): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' flavor_ref = 'http://localhost/123/flavors/3' def setUp(self): """Shared implementation for tests below that create instance.""" super(ServersControllerCreateTest, self).setUp() self.flags(verbose=True, enable_instance_password=True) self.instance_cache_num = 0 self.instance_cache_by_id = {} self.instance_cache_by_uuid = {} fakes.stub_out_nw_api(self.stubs) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = servers.Controller(self.ext_mgr) nova_utils.reset_is_neutron() self.volume_id = 'fake' def instance_create(context, inst): inst_type = flavors.get_flavor_by_flavor_id(3) image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' def_image_ref = 'http://localhost/images/%s' % image_uuid self.instance_cache_num += 1 instance = fake_instance.fake_db_instance(**{ 'id': self.instance_cache_num, 'display_name': inst['display_name'] or 'test', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': inst.get('image_ref', def_image_ref), 'user_id': 'fake', 'project_id': 'fake', 'reservation_id': inst['reservation_id'], "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "config_drive": None, "progress": 0, "fixed_ips": [], "task_state": "", "vm_state": "", "root_device_name": inst.get('root_device_name', 'vda'), "security_groups": inst['security_groups'], }) self.instance_cache_by_id[instance['id']] = instance self.instance_cache_by_uuid[instance['uuid']] = instance return instance def instance_get(context, instance_id): """Stub for compute/api create() pulling in instance after scheduling """ return self.instance_cache_by_id[instance_id] def instance_update(context, uuid, values): instance = self.instance_cache_by_uuid[uuid] instance.update(values) return instance def server_update(context, instance_uuid, params, update_cells=False): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return inst def server_update_and_get_original( context, instance_uuid, params, update_cells=False, columns_to_join=None): inst = self.instance_cache_by_uuid[instance_uuid] inst.update(params) return (inst, inst) def fake_method(*args, **kwargs): pass def project_get_networks(context, user_id): return dict(id='1', host='localhost') def queue_get_for(context, *args): return 'network_topic' fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fake.stub_out_image_service(self.stubs) self.stubs.Set(uuid, 'uuid4', fake_gen_uuid) self.stubs.Set(db, 'instance_add_security_group', return_security_group) self.stubs.Set(db, 'project_get_networks', project_get_networks) self.stubs.Set(db, 'instance_create', instance_create) self.stubs.Set(db, 'instance_system_metadata_update', fake_method) self.stubs.Set(db, 'instance_get', instance_get) self.stubs.Set(db, 'instance_update', instance_update) self.stubs.Set(db, 'instance_update_and_get_original', server_update_and_get_original) self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip', fake_method) self.body = { 'server': { 'min_count': 2, 'name': 'server_test', 'imageRef': self.image_uuid, 'flavorRef': self.flavor_ref, 'metadata': { 'hello': 'world', 'open': 'stack', }, 'personality': [ { "path": "/etc/banner.txt", "contents": "MQ==", }, ], }, } self.bdm = [{'delete_on_termination': 1, 'device_name': 123, 'volume_size': 1, 'volume_id': '11111111-1111-1111-1111-111111111111'}] self.req = fakes.HTTPRequest.blank('/fake/servers') self.req.method = 'POST' self.req.headers["content-type"] = "application/json" def _check_admin_pass_len(self, server_dict): """utility function - check server_dict for adminPass length.""" self.assertEqual(CONF.password_length, len(server_dict["adminPass"])) def _check_admin_pass_missing(self, server_dict): """utility function - check server_dict for absence of adminPass.""" self.assertNotIn("adminPass", server_dict) def _test_create_instance(self, flavor=2): image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' self.body['server']['imageRef'] = image_uuid self.body['server']['flavorRef'] = flavor self.req.body = jsonutils.dumps(self.body) server = self.controller.create(self.req, self.body).obj['server'] self._check_admin_pass_len(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_private_flavor(self): values = { 'name': 'fake_name', 'memory_mb': 512, 'vcpus': 1, 'root_gb': 10, 'ephemeral_gb': 10, 'flavorid': '1324', 'swap': 0, 'rxtx_factor': 0.5, 'vcpu_weight': 1, 'disabled': False, 'is_public': False, } db.flavor_create(context.get_admin_context(), values) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_instance, flavor=1324) def test_create_server_bad_image_href(self): image_href = 1 self.body['server']['imageRef'] = image_href, self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_server_with_invalid_networks_parameter(self): self.ext_mgr.extensions = {'os-networks': 'fake'} self.body['server']['networks'] = { 'uuid': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_server_with_deleted_image(self): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # Get the fake image service so we can set the status to deleted (image_service, image_id) = glance.get_remote_image_service( context, '') image_service.update(context, image_uuid, {'status': 'DELETED'}) self.addCleanup(image_service.update, context, image_uuid, {'status': 'active'}) self.body['server']['flavorRef'] = 2 self.req.body = jsonutils.dumps(self.body) with testtools.ExpectedException( webob.exc.HTTPBadRequest, 'Image 76fa36fc-c930-4bf3-8c8a-ea2a2420deb6 is not active.'): self.controller.create(self.req, self.body) def test_create_server_image_too_large(self): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # Get the fake image service so we can set the status to deleted (image_service, image_id) = glance.get_remote_image_service(context, image_uuid) image = image_service.show(context, image_id) orig_size = image['size'] new_size = str(1000 * (1024 ** 3)) image_service.update(context, image_uuid, {'size': new_size}) self.addCleanup(image_service.update, context, image_uuid, {'size': orig_size}) self.body['server']['flavorRef'] = 2 self.req.body = jsonutils.dumps(self.body) with testtools.ExpectedException( webob.exc.HTTPBadRequest, "Flavor's disk is too small for requested image."): self.controller.create(self.req, self.body) def test_create_instance_invalid_negative_min(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['min_count'] = -1 self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_invalid_negative_max(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['max_count'] = -1 self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_invalid_alpha_min(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['min_count'] = 'abcd', self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_invalid_alpha_max(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['max_count'] = 'abcd', self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_multiple_instances(self): """Test creating multiple instances but not asking for reservation_id """ self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj self.assertEqual(FAKE_UUID, res["server"]["id"]) self._check_admin_pass_len(res["server"]) def test_create_multiple_instances_pass_disabled(self): """Test creating multiple instances but not asking for reservation_id """ self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.flags(enable_instance_password=False) self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj self.assertEqual(FAKE_UUID, res["server"]["id"]) self._check_admin_pass_missing(res["server"]) def test_create_multiple_instances_resv_id_return(self): """Test creating multiple instances with asking for reservation_id """ self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['return_reservation_id'] = True self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body) reservation_id = res.obj.get('reservation_id') self.assertNotEqual(reservation_id, "") self.assertIsNotNone(reservation_id) self.assertTrue(len(reservation_id) > 1) def test_create_multiple_instances_with_multiple_volume_bdm(self): """Test that a BadRequest is raised if multiple instances are requested with a list of block device mappings for volumes. """ self.ext_mgr.extensions = {'os-multiple-create': 'fake'} min_count = 2 bdm = [{'device_name': 'foo1', 'volume_id': 'vol-xxxx'}, {'device_name': 'foo2', 'volume_id': 'vol-yyyy'} ] params = { 'block_device_mapping': bdm, 'min_count': min_count } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 2) self.assertEqual(len(kwargs['block_device_mapping']), 2) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params, no_image=True) def test_create_multiple_instances_with_single_volume_bdm(self): """Test that a BadRequest is raised if multiple instances are requested to boot from a single volume. """ self.ext_mgr.extensions = {'os-multiple-create': 'fake'} min_count = 2 bdm = [{'device_name': 'foo1', 'volume_id': 'vol-xxxx'}] params = { 'block_device_mapping': bdm, 'min_count': min_count } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 2) self.assertEqual(kwargs['block_device_mapping']['volume_id'], 'vol-xxxx') return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params, no_image=True) def test_create_multiple_instance_with_non_integer_max_count(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['max_count'] = 2.5 self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_multiple_instance_with_non_integer_min_count(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} self.body['server']['min_count'] = 2.5 self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_image_ref_is_bookmark(self): image_href = 'http://localhost/fake/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_image_ref_is_invalid(self): image_uuid = 'this_is_not_a_valid_uuid' image_href = 'http://localhost/fake/images/%s' % image_uuid self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_no_key_pair(self): fakes.stub_out_key_pair_funcs(self.stubs, have_key_pair=False) self._test_create_instance() def _test_create_extra(self, params, no_image=False): self.body['server']['flavorRef'] = 2 if no_image: self.body['server'].pop('imageRef', None) self.body['server'].update(params) self.req.body = jsonutils.dumps(self.body) server = self.controller.create(self.req, self.body).obj['server'] def test_create_instance_with_security_group_enabled(self): self.ext_mgr.extensions = {'os-security-groups': 'fake'} group = 'foo' old_create = compute_api.API.create def sec_group_get(ctx, proj, name): if name == group: return True else: raise exception.SecurityGroupNotFoundForProject( project_id=proj, security_group_id=name) def create(*args, **kwargs): self.assertEqual(kwargs['security_group'], [group]) return old_create(*args, **kwargs) self.stubs.Set(db, 'security_group_get_by_name', sec_group_get) # negative test self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, {'security_groups': [{'name': 'bogus'}]}) # positive test - extra assert in create path self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra({'security_groups': [{'name': group}]}) def test_create_instance_with_non_unique_secgroup_name(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network}] params = {'networks': requested_networks, 'security_groups': [{'name': 'dup'}, {'name': 'dup'}]} def fake_create(*args, **kwargs): raise exception.NoUniqueMatch("No Unique match found for ...") self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPConflict, self._test_create_extra, params) def test_create_instance_with_port_with_no_fixed_ips(self): self.flags(network_api_class='nova.network.neutronv2.api.API') port_id = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'port': port_id}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.PortRequiresFixedIP(port_id=port_id) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_network_with_no_subnet(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.NetworkRequiresSubnet(network_uuid=network) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_access_ip(self): # proper local hrefs must start with 'http://localhost/v2/' image_href = 'http://localhost/v2/fake/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['accessIPv4'] = '1.2.3.4' self.body['server']['accessIPv6'] = 'fead::1234' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self._check_admin_pass_len(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_with_access_ip_pass_disabled(self): # test with admin passwords disabled See lp bug 921814 # proper local hrefs must start with 'http://localhost/v2/' self.flags(enable_instance_password=False) image_href = 'http://localhost/v2/fake/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['accessIPv4'] = '1.2.3.4' self.body['server']['accessIPv6'] = 'fead::1234' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self._check_admin_pass_missing(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_bad_format_access_ip_v4(self): # proper local hrefs must start with 'http://localhost/v2/' image_href = 'http://localhost/v2/fake/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['accessIPv4'] = 'bad_format' self.body['server']['accessIPv6'] = 'fead::1234' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_bad_format_access_ip_v6(self): # proper local hrefs must start with 'http://localhost/v2/' image_href = 'http://localhost/v2/fake/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['accessIPv4'] = '1.2.3.4' self.body['server']['accessIPv6'] = 'bad_format' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_name_all_blank_spaces(self): # proper local hrefs must start with 'http://localhost/v2/' image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['name'] = ' ' * 64 self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_name_too_long(self): # proper local hrefs must start with 'http://localhost/v2/' image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['name'] = 'X' * 256 self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance(self): # proper local hrefs must start with 'http://localhost/v2/' image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self._check_admin_pass_len(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_pass_disabled(self): # proper local hrefs must start with 'http://localhost/v2/' self.flags(enable_instance_password=False) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self._check_admin_pass_missing(server) self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_too_much_metadata(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata']['vote'] = 'fiddletown' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, self.req, self.body) def test_create_instance_metadata_key_too_long(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata'] = {('a' * 260): '12345'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, self.req, self.body) def test_create_instance_metadata_value_too_long(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata'] = {'key1': ('a' * 260)} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, self.req, self.body) def test_create_instance_metadata_key_blank(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata'] = {'': 'abcd'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_metadata_not_dict(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata'] = 'string' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_metadata_key_not_string(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata'] = {1: 'test'} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_metadata_value_not_string(self): self.flags(quota_metadata_items=1) image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.body['server']['metadata'] = {'test': ['a', 'list']} self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_user_data_malformed_bad_request(self): self.ext_mgr.extensions = {'os-user-data': 'fake'} params = {'user_data': 'u1234!'} self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_invalid_key_name(self): image_href = 'http://localhost/v2/images/2' self.body['server']['imageRef'] = image_href self.body['server']['key_name'] = 'nonexistentkey' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_valid_key_name(self): self.body['server']['key_name'] = 'key' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj self.assertEqual(FAKE_UUID, res["server"]["id"]) self._check_admin_pass_len(res["server"]) def test_create_instance_invalid_flavor_href(self): image_href = 'http://localhost/v2/images/2' flavor_ref = 'http://localhost/v2/flavors/asdf' self.body['server']['imageRef'] = image_href self.body['server']['flavorRef'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_invalid_flavor_id_int(self): image_href = 'http://localhost/v2/images/2' flavor_ref = -1 self.body['server']['imageRef'] = image_href self.body['server']['flavorRef'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_bad_flavor_href(self): image_href = 'http://localhost/v2/images/2' flavor_ref = 'http://localhost/v2/flavors/17' self.body['server']['imageRef'] = image_href self.body['server']['flavorRef'] = flavor_ref self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_with_config_drive(self): self.ext_mgr.extensions = {'os-config-drive': 'fake'} self.body['server']['config_drive'] = "true" self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_with_bad_config_drive(self): self.ext_mgr.extensions = {'os-config-drive': 'fake'} self.body['server']['config_drive'] = 'adcd' self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_without_config_drive(self): self.ext_mgr.extensions = {'os-config-drive': 'fake'} self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_with_config_drive_disabled(self): config_drive = [{'config_drive': 'foo'}] params = {'config_drive': config_drive} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['config_drive']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_bad_href(self): image_href = 'asdf' self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_instance_local_href(self): self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self.assertEqual(FAKE_UUID, server['id']) def test_create_instance_admin_pass(self): self.body['server']['flavorRef'] = 3, self.body['server']['adminPass'] = 'testpass' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self.assertEqual(server['adminPass'], self.body['server']['adminPass']) def test_create_instance_admin_pass_pass_disabled(self): self.flags(enable_instance_password=False) self.body['server']['flavorRef'] = 3, self.body['server']['adminPass'] = 'testpass' self.req.body = jsonutils.dumps(self.body) res = self.controller.create(self.req, self.body).obj server = res['server'] self.assertIn('adminPass', self.body['server']) self.assertNotIn('adminPass', server) def test_create_instance_admin_pass_empty(self): self.body['server']['flavorRef'] = 3, self.body['server']['adminPass'] = '' self.req.body = jsonutils.dumps(self.body) # The fact that the action doesn't raise is enough validation self.controller.create(self.req, self.body) def _do_test_create_instance_above_quota(self, resource, allowed, quota, expected_msg): fakes.stub_out_instance_quota(self.stubs, allowed, quota, resource) self.body['server']['flavorRef'] = 3 self.req.body = jsonutils.dumps(self.body) try: server = self.controller.create(self.req, self.body).obj['server'] self.fail('expected quota to be exceeded') except webob.exc.HTTPRequestEntityTooLarge as e: self.assertEqual(e.explanation, expected_msg) def test_create_instance_with_security_group_disabled(self): group = 'foo' params = {'security_groups': [{'name': group}]} old_create = compute_api.API.create def create(*args, **kwargs): # NOTE(vish): if the security groups extension is not # enabled, then security groups passed in # are ignored. self.assertEqual(kwargs['security_group'], ['default']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_disk_config_enabled(self): self.ext_mgr.extensions = {'OS-DCF': 'fake'} # NOTE(vish): the extension converts OS-DCF:disk_config into # auto_disk_config, so we are testing with # the_internal_value params = {'auto_disk_config': 'AUTO'} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['auto_disk_config'], 'AUTO') return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_disk_config_disabled(self): params = {'auto_disk_config': True} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['auto_disk_config'], False) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_scheduler_hints_enabled(self): self.ext_mgr.extensions = {'OS-SCH-HNT': 'fake'} hints = {'a': 'b'} params = {'scheduler_hints': hints} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['scheduler_hints'], hints) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_scheduler_hints_disabled(self): hints = {'a': 'b'} params = {'scheduler_hints': hints} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['scheduler_hints'], {}) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_volumes_enabled(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} bdm = [{'device_name': 'foo', 'volume_id': 'fake_vol'}] params = {'block_device_mapping': bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], bdm) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) self._test_create_extra(params) def test_create_instance_with_volumes_enabled_no_image(self): """Test that the create will fail if there is no image and no bdms supplied in the request """ self.ext_mgr.extensions = {'os-volumes': 'fake'} old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('imageRef', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, {}, no_image=True) def test_create_instance_with_bdm_v2_enabled_no_image(self): self.ext_mgr.extensions = {'os-block-device-mapping-v2-boot': 'fake'} old_create = compute_api.API.create def create(*args, **kwargs): self.assertNotIn('imageRef', kwargs) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, {}, no_image=True) def test_create_instance_with_volumes_enabled_and_bdms_no_image(self): """Test that the create works if there is no image supplied but os-volumes extension is enabled and bdms are supplied """ self.ext_mgr.extensions = {'os-volumes': 'fake'} self.mox.StubOutWithMock(compute_api.API, '_validate_bdm') self.mox.StubOutWithMock(compute_api.API, '_get_bdm_image_metadata') bdm = [{ 'id': 1, 'no_device': None, 'virtual_name': None, 'snapshot_id': None, 'volume_id': self.volume_id, 'status': 'active', 'device_name': 'vda', 'delete_on_termination': False, 'volume_image_metadata': {'test_key': 'test_value'} }] volume = bdm[0] compute_api.API._validate_bdm(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(True) compute_api.API._get_bdm_image_metadata(mox.IgnoreArg(), bdm, True).AndReturn(volume) params = {'block_device_mapping': bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], bdm) self.assertNotIn('imageRef', kwargs) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.mox.ReplayAll() self._test_create_extra(params, no_image=True) def test_create_instance_with_bdm_v2_enabled_and_bdms_no_image(self): self.ext_mgr.extensions = { 'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm_v2 = [{ 'no_device': None, 'source_type': 'volume', 'destination_type': 'volume', 'uuid': self.volume_id, 'device_name': 'vda', 'delete_on_termination': False, }] params = {'block_device_mapping_v2': bdm_v2} old_create = compute_api.API.create def create(*args, **kwargs): self.assertThat(block_device.BlockDeviceDict(bdm_v2[0]), matchers.DictMatches( kwargs['block_device_mapping'][0])) self.assertNotIn('imageRef', kwargs) return old_create(*args, **kwargs) self.mox.StubOutWithMock(compute_api.API, '_validate_bdm') self.mox.StubOutWithMock(compute_api.API, '_get_bdm_image_metadata') compute_api.API._validate_bdm( mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(True) compute_api.API._get_bdm_image_metadata( mox.IgnoreArg(), mox.IgnoreArg(), False).AndReturn({}) self.mox.ReplayAll() self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params, no_image=True) def test_create_instance_with_volumes_disabled(self): bdm = [{'device_name': 'foo'}] params = {'block_device_mapping': bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['block_device_mapping']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_device_name_not_string(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} old_create = compute_api.API.create self.params = {'block_device_mapping': self.bdm} def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, self.params) def test_create_instance_with_device_name_empty(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} self.bdm[0]['device_name'] = '' params = {'block_device_mapping': self.bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_device_name_too_long(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} self.bdm[0]['device_name'] = 'a' * 256, params = {'block_device_mapping': self.bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_space_in_device_name(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} self.bdm[0]['device_name'] = 'vd a', params = {'block_device_mapping': self.bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertTrue(kwargs['legacy_bdm']) self.assertEqual(kwargs['block_device_mapping'], self.bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_invalid_size(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} bdm = [{'delete_on_termination': 1, 'device_name': 'vda', 'volume_size': "hello world", 'volume_id': '11111111-1111-1111-1111-111111111111'}] params = {'block_device_mapping': bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['block_device_mapping'], bdm) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_bdm_api_validation_fails(self): self.ext_mgr.extensions = {'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm = {'delete_on_termination': 1, 'device_name': 'vda', 'source_type': 'volume', 'destination_type': 'volume', 'volume_size': 1, 'boot_index': 0, 'uuid': '11111111-1111-1111-1111-111111111111'} self.validation_fail_test_validate_called = False self.validation_fail_instance_destroy_called = False bdm_exceptions = ((exception.InvalidBDMSnapshot, {'id': 'fake'}), (exception.InvalidBDMVolume, {'id': 'fake'}), (exception.InvalidBDMImage, {'id': 'fake'}), (exception.InvalidBDMBootSequence, {}), (exception.InvalidBDMLocalsLimit, {})) ex_iter = iter(bdm_exceptions) def _validate_bdm(*args, **kwargs): self.validation_fail_test_validate_called = True ex, kargs = ex_iter.next() raise ex(**kargs) def _instance_destroy(*args, **kwargs): self.validation_fail_instance_destroy_called = True self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) self.stubs.Set(instance_obj.Instance, 'destroy', _instance_destroy) for _ in xrange(len(bdm_exceptions)): params = {'block_device_mapping_v2': [bdm.copy()]} self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) self.assertTrue(self.validation_fail_test_validate_called) self.assertTrue(self.validation_fail_instance_destroy_called) self.validation_fail_test_validate_called = False self.validation_fail_instance_destroy_called = False def test_create_instance_with_bdm_delete_on_termination(self): self.ext_mgr.extensions = {'os-volumes': 'fake'} bdm = [{'device_name': 'foo1', 'volume_id': 'fake_vol', 'delete_on_termination': 1}, {'device_name': 'foo2', 'volume_id': 'fake_vol', 'delete_on_termination': True}, {'device_name': 'foo3', 'volume_id': 'fake_vol', 'delete_on_termination': 'invalid'}, {'device_name': 'foo4', 'volume_id': 'fake_vol', 'delete_on_termination': 0}, {'device_name': 'foo5', 'volume_id': 'fake_vol', 'delete_on_termination': False}] expected_bdm = [ {'device_name': 'foo1', 'volume_id': 'fake_vol', 'delete_on_termination': True}, {'device_name': 'foo2', 'volume_id': 'fake_vol', 'delete_on_termination': True}, {'device_name': 'foo3', 'volume_id': 'fake_vol', 'delete_on_termination': False}, {'device_name': 'foo4', 'volume_id': 'fake_vol', 'delete_on_termination': False}, {'device_name': 'foo5', 'volume_id': 'fake_vol', 'delete_on_termination': False}] params = {'block_device_mapping': bdm} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(expected_bdm, kwargs['block_device_mapping']) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) self._test_create_extra(params) def test_create_instance_bdm_v2(self): self.ext_mgr.extensions = {'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm_v2 = [{'source_type': 'volume', 'device_name': 'fake_dev', 'uuid': 'fake_vol'}] bdm_v2_expected = [{'source_type': 'volume', 'device_name': 'fake_dev', 'volume_id': 'fake_vol'}] params = {'block_device_mapping_v2': bdm_v2} old_create = compute_api.API.create def create(*args, **kwargs): self.assertFalse(kwargs['legacy_bdm']) for expected, received in zip(bdm_v2_expected, kwargs['block_device_mapping']): self.assertThat(block_device.BlockDeviceDict(expected), matchers.DictMatches(received)) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) self._test_create_extra(params) def test_create_instance_decide_format_legacy(self): self.ext_mgr.extensions = {'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm = [{'device_name': 'foo1', 'volume_id': 'fake_vol', 'delete_on_termination': 1}] expected_legacy_flag = True old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['legacy_bdm'], expected_legacy_flag) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) self._test_create_extra({}) params = {'block_device_mapping': bdm} self._test_create_extra(params) def test_create_instance_decide_format_new(self): self.ext_mgr.extensions = {'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm_v2 = [{'source_type': 'volume', 'device_name': 'fake_dev', 'uuid': 'fake_vol'}] old_create = compute_api.API.create expected_legacy_flag = False def create(*args, **kwargs): self.assertEqual(kwargs['legacy_bdm'], expected_legacy_flag) return old_create(*args, **kwargs) def _validate_bdm(*args, **kwargs): pass self.stubs.Set(compute_api.API, 'create', create) self.stubs.Set(compute_api.API, '_validate_bdm', _validate_bdm) params = {'block_device_mapping_v2': bdm_v2} self._test_create_extra(params) def test_create_instance_both_bdm_formats(self): self.ext_mgr.extensions = {'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm = [{'device_name': 'foo'}] bdm_v2 = [{'source_type': 'volume', 'uuid': 'fake_vol'}] params = {'block_device_mapping': bdm, 'block_device_mapping_v2': bdm_v2} self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_bdm_v2_validation_error(self): self.ext_mgr.extensions = {'os-volumes': 'fake', 'os-block-device-mapping-v2-boot': 'fake'} bdm_v2 = [{'device_name': 'bogus device'}] params = {'block_device_mapping_v2': bdm_v2} def _validate(*args, **kwargs): raise exception.InvalidBDMFormat() self.stubs.Set(block_device.BlockDeviceDict, '_validate', _validate) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_user_data_enabled(self): self.ext_mgr.extensions = {'os-user-data': 'fake'} user_data = 'fake' params = {'user_data': user_data} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['user_data'], user_data) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_user_data_disabled(self): user_data = 'fake' params = {'user_data': user_data} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['user_data']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_keypairs_enabled(self): self.ext_mgr.extensions = {'os-keypairs': 'fake'} key_name = 'green' params = {'key_name': key_name} old_create = compute_api.API.create # NOTE(sdague): key pair goes back to the database, # so we need to stub it out for tests def key_pair_get(context, user_id, name): return dict(test_keypair.fake_keypair, public_key='FAKE_KEY', fingerprint='FAKE_FINGERPRINT', name=name) def create(*args, **kwargs): self.assertEqual(kwargs['key_name'], key_name) return old_create(*args, **kwargs) self.stubs.Set(db, 'key_pair_get', key_pair_get) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_keypairs_disabled(self): key_name = 'green' params = {'key_name': key_name} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['key_name']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_availability_zone_enabled(self): self.ext_mgr.extensions = {'os-availability-zone': 'fake'} availability_zone = 'fake' params = {'availability_zone': availability_zone} old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['availability_zone'], availability_zone) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) try: self._test_create_extra(params) except webob.exc.HTTPBadRequest as e: expected = 'The requested availability zone is not available' self.assertEqual(e.explanation, expected) admin_context = context.get_admin_context() service1 = db.service_create(admin_context, {'host': 'host1_zones', 'binary': "nova-compute", 'topic': 'compute', 'report_count': 0}) agg = db.aggregate_create(admin_context, {'name': 'agg1'}, {'availability_zone': availability_zone}) db.aggregate_host_add(admin_context, agg['id'], 'host1_zones') self._test_create_extra(params) def test_create_instance_with_availability_zone_disabled(self): availability_zone = 'fake' params = {'availability_zone': availability_zone} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['availability_zone']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_multiple_create_enabled(self): self.ext_mgr.extensions = {'os-multiple-create': 'fake'} min_count = 2 max_count = 3 params = { 'min_count': min_count, 'max_count': max_count, } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 2) self.assertEqual(kwargs['max_count'], 3) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_multiple_create_disabled(self): ret_res_id = True min_count = 2 max_count = 3 params = { 'min_count': min_count, 'max_count': max_count, } old_create = compute_api.API.create def create(*args, **kwargs): self.assertEqual(kwargs['min_count'], 1) self.assertEqual(kwargs['max_count'], 1) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_networks_enabled(self): self.ext_mgr.extensions = {'os-networks': 'fake'} net_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' requested_networks = [{'uuid': net_uuid}] params = {'networks': requested_networks} old_create = compute_api.API.create def create(*args, **kwargs): result = [('76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', None)] self.assertEqual(kwargs['requested_networks'], result) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_neutronv2_port_in_use(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.PortInUse(port_id=port) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPConflict, self._test_create_extra, params) def test_create_instance_with_neturonv2_not_found_network(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' requested_networks = [{'uuid': network}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.NetworkNotFound(network_id=network) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_neutronv2_port_not_found(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' requested_networks = [{'uuid': network, 'port': port}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): raise exception.PortNotFound(port_id=port) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_multiple_instance_with_neutronv2_port(self): self.flags(network_api_class='nova.network.neutronv2.api.API') network = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' port = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' self.body['server']['max_count'] = 2 requested_networks = [{'uuid': network, 'port': port}] params = {'networks': requested_networks} def fake_create(*args, **kwargs): msg = _("Unable to launch multiple instances with" " a single configured port ID. Please launch your" " instance one by one with different ports.") raise exception.MultiplePortsNotApplicable(reason=msg) self.stubs.Set(compute_api.API, 'create', fake_create) self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, params) def test_create_instance_with_networks_disabled_neutronv2(self): self.flags(network_api_class='nova.network.neutronv2.api.API') net_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' requested_networks = [{'uuid': net_uuid}] params = {'networks': requested_networks} old_create = compute_api.API.create def create(*args, **kwargs): result = [('76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', None, None)] self.assertEqual(kwargs['requested_networks'], result) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_with_networks_disabled(self): self.ext_mgr.extensions = {} net_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' requested_networks = [{'uuid': net_uuid}] params = {'networks': requested_networks} old_create = compute_api.API.create def create(*args, **kwargs): self.assertIsNone(kwargs['requested_networks']) return old_create(*args, **kwargs) self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) def test_create_instance_invalid_personality(self): def fake_create(*args, **kwargs): codec = 'utf8' content = 'b25zLiINCg0KLVJpY2hhcmQgQ$$%QQmFjaA==' start_position = 19 end_position = 20 msg = 'invalid start byte' raise UnicodeDecodeError(codec, content, start_position, end_position, msg) self.stubs.Set(compute_api.API, 'create', fake_create) self.body['server']['personality'] = [ { "path": "/etc/banner.txt", "contents": "b25zLiINCg0KLVJpY2hhcmQgQ$$%QQmFjaA==", }, ] self.req.body = jsonutils.dumps(self.body) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, self.req, self.body) def test_create_location(self): selfhref = 'http://localhost/v2/fake/servers/%s' % FAKE_UUID image_href = 'http://localhost/v2/images/%s' % self.image_uuid self.body['server']['imageRef'] = image_href self.req.body = jsonutils.dumps(self.body) robj = self.controller.create(self.req, self.body) self.assertEqual(robj['Location'], selfhref) def _do_test_create_instance_above_quota(self, resource, allowed, quota, expected_msg): fakes.stub_out_instance_quota(self.stubs, allowed, quota, resource) self.body['server']['flavorRef'] = 3 self.req.body = jsonutils.dumps(self.body) try: server = self.controller.create(self.req, self.body).obj['server'] self.fail('expected quota to be exceeded') except webob.exc.HTTPRequestEntityTooLarge as e: self.assertEqual(e.explanation, expected_msg) def test_create_instance_above_quota_instances(self): msg = _('Quota exceeded for instances: Requested 1, but' ' already used 10 of 10 instances') self._do_test_create_instance_above_quota('instances', 0, 10, msg) def test_create_instance_above_quota_ram(self): msg = _('Quota exceeded for ram: Requested 4096, but' ' already used 8192 of 10240 ram') self._do_test_create_instance_above_quota('ram', 2048, 10 * 1024, msg) def test_create_instance_above_quota_cores(self): msg = _('Quota exceeded for cores: Requested 2, but' ' already used 9 of 10 cores') self._do_test_create_instance_above_quota('cores', 1, 10, msg) class TestServerCreateRequestXMLDeserializer(test.TestCase): def setUp(self): super(TestServerCreateRequestXMLDeserializer, self).setUp() self.deserializer = servers.CreateDeserializer() def test_minimal_request(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", }, } self.assertEqual(request['body'], expected) def test_request_with_alternate_namespace_prefix(self): serial_request = """ world """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", 'metadata': {"hello": "world"}, }, } self.assertEqual(request['body'], expected) def test_request_with_scheduler_hints_and_alternate_namespace_prefix(self): serial_request = """ world xen eb999657-dd6b-464e-8713-95c532ac3b18 """ request = self.deserializer.deserialize(serial_request) expected = { "server": { 'OS-SCH-HNT:scheduler_hints': { 'hypervisor': ['xen'], 'near': ['eb999657-dd6b-464e-8713-95c532ac3b18'] }, "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "metadata": { "hello": "world" } } } self.assertEqual(request['body'], expected) def test_access_ipv4(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "accessIPv4": "1.2.3.4", }, } self.assertEqual(request['body'], expected) def test_access_ipv6(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "accessIPv6": "fead::1234", }, } self.assertEqual(request['body'], expected) def test_access_ip(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "accessIPv4": "1.2.3.4", "accessIPv6": "fead::1234", }, } self.assertEqual(request['body'], expected) def test_admin_pass(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "adminPass": "1234", }, } self.assertEqual(request['body'], expected) def test_image_link(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "http://localhost:8774/v2/images/2", "flavorRef": "3", }, } self.assertEqual(request['body'], expected) def test_flavor_link(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "http://localhost:8774/v2/flavors/3", }, } self.assertEqual(request['body'], expected) def test_empty_metadata_personality(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "metadata": {}, "personality": [], }, } self.assertEqual(request['body'], expected) def test_multiple_metadata_items(self): serial_request = """ two snack """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "metadata": {"one": "two", "open": "snack"}, }, } self.assertEqual(request['body'], expected) def test_multiple_personality_files(self): serial_request = """ MQ== Mg== """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "2", "personality": [ {"path": "/etc/banner.txt", "contents": "MQ=="}, {"path": "/etc/hosts", "contents": "Mg=="}, ], }, } self.assertThat(request['body'], matchers.DictMatches(expected)) def test_spec_request(self): image_bookmark_link = ("http://servers.api.openstack.org/1234/" "images/52415800-8b69-11e0-9b19-734f6f006e54") serial_request = """ Apache1 Mg== """ % (image_bookmark_link) request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "new-server-test", "imageRef": ("http://servers.api.openstack.org/1234/" "images/52415800-8b69-11e0-9b19-734f6f006e54"), "flavorRef": "52415800-8b69-11e0-9b19-734f1195ff37", "metadata": {"My Server Name": "Apache1"}, "personality": [ { "path": "/etc/banner.txt", "contents": "Mg==", }, ], }, } self.assertEqual(request['body'], expected) def test_request_with_empty_networks(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [], }} self.assertEqual(request['body'], expected) def test_request_with_one_network(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "1", "fixed_ip": "10.0.1.12"}], }} self.assertEqual(request['body'], expected) def test_request_with_two_networks(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "1", "fixed_ip": "10.0.1.12"}, {"uuid": "2", "fixed_ip": "10.0.2.12"}], }} self.assertEqual(request['body'], expected) def test_request_with_second_network_node_ignored(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "1", "fixed_ip": "10.0.1.12"}], }} self.assertEqual(request['body'], expected) def test_request_with_one_network_missing_id(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"fixed_ip": "10.0.1.12"}], }} self.assertEqual(request['body'], expected) def test_request_with_one_network_missing_fixed_ip(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "1"}], }} self.assertEqual(request['body'], expected) def test_request_with_one_network_empty_id(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "", "fixed_ip": "10.0.1.12"}], }} self.assertEqual(request['body'], expected) def test_request_with_one_network_empty_fixed_ip(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "1", "fixed_ip": ""}], }} self.assertEqual(request['body'], expected) def test_request_with_networks_duplicate_ids(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "networks": [{"uuid": "1", "fixed_ip": "10.0.1.12"}, {"uuid": "1", "fixed_ip": "10.0.2.12"}], }} self.assertEqual(request['body'], expected) def test_request_with_availability_zone(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "availability_zone": "some_zone:some_host", }} self.assertEqual(request['body'], expected) def test_request_with_multiple_create_args(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "min_count": "1", "max_count": "3", "return_reservation_id": True, }} self.assertEqual(request['body'], expected) def test_request_with_disk_config(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "OS-DCF:diskConfig": "AUTO", }} self.assertEqual(request['body'], expected) def test_request_with_scheduler_hints(self): serial_request = """ 7329b667-50c7-46a6-b913-cb2a09dfeee0 f31efb24-34d2-43e1-8b44-316052956a39 """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "OS-SCH-HNT:scheduler_hints": { "different_host": [ "7329b667-50c7-46a6-b913-cb2a09dfeee0", "f31efb24-34d2-43e1-8b44-316052956a39", ] } }} self.assertEqual(request['body'], expected) def test_request_with_block_device_mapping(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = {"server": { "name": "new-server-test", "imageRef": "1", "flavorRef": "1", "block_device_mapping": [ { "volume_id": "7329b667-50c7-46a6-b913-cb2a09dfeee0", "device_name": "/dev/vda", "virtual_name": "root", "delete_on_termination": False, }, { "snapshot_id": "f31efb24-34d2-43e1-8b44-316052956a39", "device_name": "/dev/vdb", "virtual_name": "ephemeral0", "delete_on_termination": False, }, { "device_name": "/dev/vdc", "no_device": True, }, ] }} self.assertEqual(request['body'], expected) def test_request_with_config_drive(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server": { "name": "config_drive_test", "imageRef": "1", "flavorRef": "1", "config_drive": "true" }, } self.assertEqual(request['body'], expected) def test_corrupt_xml(self): """Should throw a 400 error on corrupt xml.""" self.assertRaises( exception.MalformedRequestBody, self.deserializer.deserialize, utils.killer_xml_body()) class TestServerActionRequestXMLDeserializer(test.TestCase): def setUp(self): super(TestServerActionRequestXMLDeserializer, self).setUp() self.deserializer = servers.ActionDeserializer() def _generate_request(self, action, disk_cfg, ref): return """ <%(action)s xmlns="http://docs.openstack.org/compute/api/v1.1" xmlns:OS-DCF="http://docs.openstack.org/compute/ext/disk_config/api/v1.1" %(disk_config)s="MANUAL" %(ref)s="1"/>""" % ( {'action': action, 'disk_config': disk_cfg, 'ref': ref}) def _generate_expected(self, action, ref): return { "%s" % action: { "%s" % ref: "1", "OS-DCF:diskConfig": "MANUAL", }, } def test_rebuild_request(self): serial_request = self._generate_request("rebuild", "OS-DCF:diskConfig", "imageRef") request = self.deserializer.deserialize(serial_request) expected = self._generate_expected("rebuild", "imageRef") self.assertEqual(request['body'], expected) def test_rebuild_request_auto_disk_config_compat(self): serial_request = self._generate_request("rebuild", "auto_disk_config", "imageRef") request = self.deserializer.deserialize(serial_request) expected = self._generate_expected("rebuild", "imageRef") self.assertEqual(request['body'], expected) def test_resize_request(self): serial_request = self._generate_request("resize", "OS-DCF:diskConfig", "flavorRef") request = self.deserializer.deserialize(serial_request) expected = self._generate_expected("resize", "flavorRef") self.assertEqual(request['body'], expected) def test_resize_request_auto_disk_config_compat(self): serial_request = self._generate_request("resize", "auto_disk_config", "flavorRef") request = self.deserializer.deserialize(serial_request) expected = self._generate_expected("resize", "flavorRef") self.assertEqual(request['body'], expected) class TestAddressesXMLSerialization(test.TestCase): index_serializer = ips.AddressesTemplate() show_serializer = ips.NetworkTemplate() def _serializer_test_data(self): return { 'network_2': [ {'addr': '192.168.0.1', 'version': 4}, {'addr': 'fe80::beef', 'version': 6}, ], } def test_xml_declaration(self): output = self.show_serializer.serialize(self._serializer_test_data()) has_dec = output.startswith("") self.assertTrue(has_dec) def test_show(self): output = self.show_serializer.serialize(self._serializer_test_data()) root = etree.XML(output) network = self._serializer_test_data()['network_2'] self.assertEqual(str(root.get('id')), 'network_2') ip_elems = root.findall('{0}ip'.format(NS)) for z, ip_elem in enumerate(ip_elems): ip = network[z] self.assertEqual(str(ip_elem.get('version')), str(ip['version'])) self.assertEqual(str(ip_elem.get('addr')), str(ip['addr'])) def test_index(self): fixture = { 'addresses': { 'network_1': [ {'addr': '192.168.0.3', 'version': 4}, {'addr': '192.168.0.5', 'version': 4}, ], 'network_2': [ {'addr': '192.168.0.1', 'version': 4}, {'addr': 'fe80::beef', 'version': 6}, ], }, } output = self.index_serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'addresses') addresses_dict = fixture['addresses'] network_elems = root.findall('{0}network'.format(NS)) self.assertEqual(len(network_elems), 2) for i, network_elem in enumerate(network_elems): network = addresses_dict.items()[i] self.assertEqual(str(network_elem.get('id')), str(network[0])) ip_elems = network_elem.findall('{0}ip'.format(NS)) for z, ip_elem in enumerate(ip_elems): ip = network[1][z] self.assertEqual(str(ip_elem.get('version')), str(ip['version'])) self.assertEqual(str(ip_elem.get('addr')), str(ip['addr'])) class ServersViewBuilderTest(test.TestCase): image_bookmark = "http://localhost/fake/images/5" flavor_bookmark = "http://localhost/fake/flavors/1" def setUp(self): super(ServersViewBuilderTest, self).setUp() self.flags(use_ipv6=True) db_inst = fakes.stub_instance( id=1, image_ref="5", uuid="deadbeef-feed-edee-beef-d0ea7beefedd", display_name="test_server", include_fake_metadata=False) privates = ['172.19.0.1'] publics = ['192.168.0.3'] public6s = ['b33f::fdee:ddff:fecc:bbaa'] def nw_info(*args, **kwargs): return [(None, {'label': 'public', 'ips': [dict(ip=ip) for ip in publics], 'ip6s': [dict(ip=ip) for ip in public6s]}), (None, {'label': 'private', 'ips': [dict(ip=ip) for ip in privates]})] def floaters(*args, **kwargs): return [] fakes.stub_out_nw_api_get_instance_nw_info(self.stubs, nw_info) fakes.stub_out_nw_api_get_floating_ips_by_fixed_address(self.stubs, floaters) self.uuid = db_inst['uuid'] self.view_builder = views.servers.ViewBuilder() self.request = fakes.HTTPRequest.blank("/v2/fake") self.request.context = context.RequestContext('fake', 'fake') self.instance = fake_instance.fake_instance_obj( self.request.context, expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **db_inst) self.self_link = "http://localhost/v2/fake/servers/%s" % self.uuid self.bookmark_link = "http://localhost/fake/servers/%s" % self.uuid self.expected_detailed_server = { "server": { "id": self.uuid, "user_id": "fake_user", "tenant_id": "fake_project", "updated": "2010-11-11T11:00:00Z", "created": "2010-10-10T12:00:00Z", "progress": 0, "name": "test_server", "status": "BUILD", "accessIPv4": "", "accessIPv6": "", "hostId": '', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": self.image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": self.flavor_bookmark, }, ], }, "addresses": { 'test1': [ {'version': 4, 'addr': '192.168.1.100'}, {'version': 6, 'addr': '2001:db8:0:1::1'} ] }, "metadata": {}, "links": [ { "rel": "self", "href": self.self_link, }, { "rel": "bookmark", "href": self.bookmark_link, }, ], } } self.expected_server = { "server": { "id": self.uuid, "name": "test_server", "links": [ { "rel": "self", "href": self.self_link, }, { "rel": "bookmark", "href": self.bookmark_link, }, ], } } def test_get_flavor_valid_flavor(self): expected = {"id": "1", "links": [{"rel": "bookmark", "href": self.flavor_bookmark}]} result = self.view_builder._get_flavor(self.request, self.instance) self.assertEqual(result, expected) def test_build_server(self): output = self.view_builder.basic(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_server)) def test_build_server_with_project_id(self): output = self.view_builder.basic(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_server)) def test_build_server_detail(self): output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) def test_build_server_no_image(self): self.instance["image_ref"] = "" output = self.view_builder.show(self.request, self.instance) self.assertEqual(output['server']['image'], "") def test_build_server_detail_with_fault(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid) self.expected_detailed_server["server"]["status"] = "ERROR" self.expected_detailed_server["server"]["fault"] = { "code": 404, "created": "2010-10-10T12:00:00Z", "message": "HTTPNotFound", "details": "Stock details for test", } del self.expected_detailed_server["server"]["progress"] self.request.context = context.RequestContext('fake', 'fake') output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) def test_build_server_detail_with_fault_that_has_been_deleted(self): self.instance['deleted'] = 1 self.instance['vm_state'] = vm_states.ERROR fault = fake_instance.fake_fault_obj(self.request.context, self.uuid, code=500, message="No valid host was found") self.instance['fault'] = fault # Regardless of the vm_state deleted servers sholud have DELETED status self.expected_detailed_server["server"]["status"] = "DELETED" self.expected_detailed_server["server"]["fault"] = { "code": 500, "created": "2010-10-10T12:00:00Z", "message": "No valid host was found", } del self.expected_detailed_server["server"]["progress"] self.request.context = context.RequestContext('fake', 'fake') output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) def test_build_server_detail_with_fault_no_details_not_admin(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid, code=500, message='Error') expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "Error"} self.request.context = context.RequestContext('fake', 'fake') output = self.view_builder.show(self.request, self.instance) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_admin(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid, code=500, message='Error') expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "Error", 'details': 'Stock details for test'} self.request.environ['nova.context'].is_admin = True output = self.view_builder.show(self.request, self.instance) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_no_details_admin(self): self.instance['vm_state'] = vm_states.ERROR self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid, code=500, message='Error', details='') expected_fault = {"code": 500, "created": "2010-10-10T12:00:00Z", "message": "Error"} self.request.environ['nova.context'].is_admin = True output = self.view_builder.show(self.request, self.instance) self.assertThat(output['server']['fault'], matchers.DictMatches(expected_fault)) def test_build_server_detail_with_fault_but_active(self): self.instance['vm_state'] = vm_states.ACTIVE self.instance['progress'] = 100 self.instance['fault'] = fake_instance.fake_fault_obj( self.request.context, self.uuid) output = self.view_builder.show(self.request, self.instance) self.assertNotIn('fault', output['server']) def test_build_server_detail_active_status(self): #set the power state of the instance to running self.instance['vm_state'] = vm_states.ACTIVE self.instance['progress'] = 100 self.expected_detailed_server["server"]["status"] = "ACTIVE" self.expected_detailed_server["server"]["progress"] = 100 output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) def test_build_server_detail_with_accessipv4(self): access_ip_v4 = '1.2.3.4' self.instance['access_ip_v4'] = access_ip_v4 self.expected_detailed_server["server"]["accessIPv4"] = access_ip_v4 output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) def test_build_server_detail_with_accessipv6(self): access_ip_v6 = 'fead::1234' self.instance['access_ip_v6'] = access_ip_v6 self.expected_detailed_server["server"]["accessIPv6"] = access_ip_v6 output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) def test_build_server_detail_with_metadata(self): metadata = [] metadata.append(models.InstanceMetadata(key="Open", value="Stack")) metadata = nova_utils.metadata_to_dict(metadata) self.instance['metadata'] = metadata self.expected_detailed_server["server"]["metadata"] = {"Open": "Stack"} output = self.view_builder.show(self.request, self.instance) self.assertThat(output, matchers.DictMatches(self.expected_detailed_server)) class ServerXMLSerializationTest(test.TestCase): TIMESTAMP = "2010-10-11T10:30:22Z" SERVER_HREF = 'http://localhost/v2/servers/%s' % FAKE_UUID SERVER_NEXT = 'http://localhost/v2/servers?limit=%s&marker=%s' SERVER_BOOKMARK = 'http://localhost/servers/%s' % FAKE_UUID IMAGE_BOOKMARK = 'http://localhost/images/5' FLAVOR_BOOKMARK = 'http://localhost/flavors/1' USERS_ATTRIBUTES = ['name', 'id', 'created', 'accessIPv4', 'updated', 'progress', 'status', 'hostId', 'accessIPv6'] ADMINS_ATTRIBUTES = USERS_ATTRIBUTES + ['adminPass'] def setUp(self): super(ServerXMLSerializationTest, self).setUp() self.body = { "server": { 'id': FAKE_UUID, 'user_id': 'fake_user_id', 'tenant_id': 'fake_tenant_id', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, "progress": 0, "name": "test_server", "status": "BUILD", "hostId": 'e4d909c290d0fb1ca068ffaddf22cbd0', "accessIPv4": "1.2.3.4", "accessIPv6": "fead::1234", "image": { "id": "5", "links": [ { "rel": "bookmark", "href": self.IMAGE_BOOKMARK, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": self.FLAVOR_BOOKMARK, }, ], }, "addresses": { "network_one": [ { "version": 4, "addr": "67.23.10.138", }, { "version": 6, "addr": "::babe:67.23.10.138", }, ], "network_two": [ { "version": 4, "addr": "67.23.10.139", }, { "version": 6, "addr": "::babe:67.23.10.139", }, ], }, "metadata": { "Open": "Stack", "Number": "1", }, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], } } def _validate_xml(self, root, server_dict): link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(server_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) metadata_root = root.find('{0}metadata'.format(NS)) metadata_elems = metadata_root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 2) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = server_dict['metadata'].items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) image_root = root.find('{0}image'.format(NS)) self.assertEqual(image_root.get('id'), server_dict['image']['id']) link_nodes = image_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 1) for i, link in enumerate(server_dict['image']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) flavor_root = root.find('{0}flavor'.format(NS)) self.assertEqual(flavor_root.get('id'), server_dict['flavor']['id']) link_nodes = flavor_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 1) for i, link in enumerate(server_dict['flavor']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) addresses_root = root.find('{0}addresses'.format(NS)) addresses_dict = server_dict['addresses'] network_elems = addresses_root.findall('{0}network'.format(NS)) self.assertEqual(len(network_elems), 2) for i, network_elem in enumerate(network_elems): network = addresses_dict.items()[i] self.assertEqual(str(network_elem.get('id')), str(network[0])) ip_elems = network_elem.findall('{0}ip'.format(NS)) for z, ip_elem in enumerate(ip_elems): ip = network[1][z] self.assertEqual(str(ip_elem.get('version')), str(ip['version'])) self.assertEqual(str(ip_elem.get('addr')), str(ip['addr'])) def _validate_required_attributes(self, root, server_dict, attributes): for key in attributes: self.assertEqual(root.get(key), str(server_dict[key])) def test_xml_declaration(self): serializer = servers.ServerTemplate() output = serializer.serialize(self.body) has_dec = output.startswith("") self.assertTrue(has_dec) def test_show(self): serializer = servers.ServerTemplate() output = serializer.serialize(self.body) root = etree.XML(output) xmlutil.validate_schema(root, 'server') server_dict = self.body['server'] self._validate_required_attributes(root, server_dict, self.USERS_ATTRIBUTES) self._validate_xml(root, server_dict) def test_create(self): serializer = servers.FullServerTemplate() self.body["server"]["adminPass"] = "test_password" output = serializer.serialize(self.body) root = etree.XML(output) xmlutil.validate_schema(root, 'server') server_dict = self.body['server'] self._validate_required_attributes(root, server_dict, self.ADMINS_ATTRIBUTES) self._validate_xml(root, server_dict) def test_index(self): serializer = servers.MinimalServersTemplate() uuid1 = fakes.get_fake_uuid(1) uuid2 = fakes.get_fake_uuid(2) expected_server_href = 'http://localhost/v2/servers/%s' % uuid1 expected_server_bookmark = 'http://localhost/servers/%s' % uuid1 expected_server_href_2 = 'http://localhost/v2/servers/%s' % uuid2 expected_server_bookmark_2 = 'http://localhost/servers/%s' % uuid2 fixture = {"servers": [ { "id": fakes.get_fake_uuid(1), "name": "test_server", 'links': [ { 'href': expected_server_href, 'rel': 'self', }, { 'href': expected_server_bookmark, 'rel': 'bookmark', }, ], }, { "id": fakes.get_fake_uuid(2), "name": "test_server_2", 'links': [ { 'href': expected_server_href_2, 'rel': 'self', }, { 'href': expected_server_bookmark_2, 'rel': 'bookmark', }, ], }, ]} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'servers_index') server_elems = root.findall('{0}server'.format(NS)) self.assertEqual(len(server_elems), 2) for i, server_elem in enumerate(server_elems): server_dict = fixture['servers'][i] for key in ['name', 'id']: self.assertEqual(server_elem.get(key), str(server_dict[key])) link_nodes = server_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(server_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_index_with_servers_links(self): serializer = servers.MinimalServersTemplate() uuid1 = fakes.get_fake_uuid(1) uuid2 = fakes.get_fake_uuid(2) expected_server_href = 'http://localhost/v2/servers/%s' % uuid1 expected_server_next = self.SERVER_NEXT % (2, 2) expected_server_bookmark = 'http://localhost/servers/%s' % uuid1 expected_server_href_2 = 'http://localhost/v2/servers/%s' % uuid2 expected_server_bookmark_2 = 'http://localhost/servers/%s' % uuid2 fixture = {"servers": [ { "id": fakes.get_fake_uuid(1), "name": "test_server", 'links': [ { 'href': expected_server_href, 'rel': 'self', }, { 'href': expected_server_bookmark, 'rel': 'bookmark', }, ], }, { "id": fakes.get_fake_uuid(2), "name": "test_server_2", 'links': [ { 'href': expected_server_href_2, 'rel': 'self', }, { 'href': expected_server_bookmark_2, 'rel': 'bookmark', }, ], }, ], "servers_links": [ { 'rel': 'next', 'href': expected_server_next, }, ]} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'servers_index') server_elems = root.findall('{0}server'.format(NS)) self.assertEqual(len(server_elems), 2) for i, server_elem in enumerate(server_elems): server_dict = fixture['servers'][i] for key in ['name', 'id']: self.assertEqual(server_elem.get(key), str(server_dict[key])) link_nodes = server_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(server_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) # Check servers_links servers_links = root.findall('{0}link'.format(ATOMNS)) for i, link in enumerate(fixture['servers_links']): for key, value in link.items(): self.assertEqual(servers_links[i].get(key), value) def test_detail(self): serializer = servers.ServersTemplate() uuid1 = fakes.get_fake_uuid(1) expected_server_href = 'http://localhost/v2/servers/%s' % uuid1 expected_server_bookmark = 'http://localhost/servers/%s' % uuid1 expected_image_bookmark = self.IMAGE_BOOKMARK expected_flavor_bookmark = self.FLAVOR_BOOKMARK uuid2 = fakes.get_fake_uuid(2) expected_server_href_2 = 'http://localhost/v2/servers/%s' % uuid2 expected_server_bookmark_2 = 'http://localhost/servers/%s' % uuid2 fixture = {"servers": [ { "id": fakes.get_fake_uuid(1), "user_id": "fake", "tenant_id": "fake", 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, "progress": 0, "name": "test_server", "status": "BUILD", "accessIPv4": "1.2.3.4", "accessIPv6": "fead::1234", "hostId": 'e4d909c290d0fb1ca068ffaddf22cbd0', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": expected_image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": expected_flavor_bookmark, }, ], }, "addresses": { "network_one": [ { "version": 4, "addr": "67.23.10.138", }, { "version": 6, "addr": "::babe:67.23.10.138", }, ], "network_two": [ { "version": 4, "addr": "67.23.10.139", }, { "version": 6, "addr": "::babe:67.23.10.139", }, ], }, "metadata": { "Open": "Stack", "Number": "1", }, "links": [ { "href": expected_server_href, "rel": "self", }, { "href": expected_server_bookmark, "rel": "bookmark", }, ], }, { "id": fakes.get_fake_uuid(2), "user_id": 'fake', "tenant_id": 'fake', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, "progress": 100, "name": "test_server_2", "status": "ACTIVE", "accessIPv4": "1.2.3.4", "accessIPv6": "fead::1234", "hostId": 'e4d909c290d0fb1ca068ffaddf22cbd0', "image": { "id": "5", "links": [ { "rel": "bookmark", "href": expected_image_bookmark, }, ], }, "flavor": { "id": "1", "links": [ { "rel": "bookmark", "href": expected_flavor_bookmark, }, ], }, "addresses": { "network_one": [ { "version": 4, "addr": "67.23.10.138", }, { "version": 6, "addr": "::babe:67.23.10.138", }, ], "network_two": [ { "version": 4, "addr": "67.23.10.139", }, { "version": 6, "addr": "::babe:67.23.10.139", }, ], }, "metadata": { "Open": "Stack", "Number": "2", }, "links": [ { "href": expected_server_href_2, "rel": "self", }, { "href": expected_server_bookmark_2, "rel": "bookmark", }, ], }, ]} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'servers') server_elems = root.findall('{0}server'.format(NS)) self.assertEqual(len(server_elems), 2) for i, server_elem in enumerate(server_elems): server_dict = fixture['servers'][i] self._validate_required_attributes(server_elem, server_dict, self.USERS_ATTRIBUTES) self._validate_xml(server_elem, server_dict) def test_update(self): serializer = servers.ServerTemplate() self.body["server"]["fault"] = { "code": 500, "created": self.TIMESTAMP, "message": "Error Message", "details": "Fault details", } output = serializer.serialize(self.body) root = etree.XML(output) xmlutil.validate_schema(root, 'server') server_dict = self.body['server'] self._validate_required_attributes(root, server_dict, self.USERS_ATTRIBUTES) self._validate_xml(root, server_dict) fault_root = root.find('{0}fault'.format(NS)) fault_dict = server_dict['fault'] self.assertEqual(fault_root.get("code"), str(fault_dict["code"])) self.assertEqual(fault_root.get("created"), fault_dict["created"]) msg_elem = fault_root.find('{0}message'.format(NS)) self.assertEqual(msg_elem.text, fault_dict["message"]) det_elem = fault_root.find('{0}details'.format(NS)) self.assertEqual(det_elem.text, fault_dict["details"]) def test_action(self): serializer = servers.FullServerTemplate() self.body["server"]["adminPass"] = "test_password" output = serializer.serialize(self.body) root = etree.XML(output) xmlutil.validate_schema(root, 'server') server_dict = self.body['server'] self._validate_required_attributes(root, server_dict, self.ADMINS_ATTRIBUTES) self._validate_xml(root, server_dict) class ServersAllExtensionsTestCase(test.TestCase): """Servers tests using default API router with all extensions enabled. The intent here is to catch cases where extensions end up throwing an exception because of a malformed request before the core API gets a chance to validate the request and return a 422 response. For example, ServerDiskConfigController extends servers.Controller: @wsgi.extends def create(self, req, body): if 'server' in body: self._set_disk_config(body['server']) resp_obj = (yield) self._show(req, resp_obj) we want to ensure that the extension isn't barfing on an invalid body. """ def setUp(self): super(ServersAllExtensionsTestCase, self).setUp() self.app = compute.APIRouter() def test_create_missing_server(self): # Test create with malformed body. def fake_create(*args, **kwargs): raise test.TestingException("Should not reach the compute API.") self.stubs.Set(compute_api.API, 'create', fake_create) req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'foo': {'a': 'b'}} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(422, res.status_int) def test_update_missing_server(self): # Test create with malformed body. def fake_update(*args, **kwargs): raise test.TestingException("Should not reach the compute API.") self.stubs.Set(compute_api.API, 'create', fake_update) req = fakes.HTTPRequest.blank('/fake/servers/1') req.method = 'PUT' req.content_type = 'application/json' body = {'foo': {'a': 'b'}} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(422, res.status_int) class ServersUnprocessableEntityTestCase(test.TestCase): """Tests of places we throw 422 Unprocessable Entity from.""" def setUp(self): super(ServersUnprocessableEntityTestCase, self).setUp() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = servers.Controller(self.ext_mgr) def _unprocessable_server_create(self, body): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, body) def test_create_server_no_body(self): self._unprocessable_server_create(body=None) def test_create_server_missing_server(self): body = {'foo': {'a': 'b'}} self._unprocessable_server_create(body=body) def test_create_server_malformed_entity(self): body = {'server': 'string'} self._unprocessable_server_create(body=body) def _unprocessable_server_update(self, body): req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID) req.method = 'PUT' self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, FAKE_UUID, body) def test_update_server_no_body(self): self._unprocessable_server_update(body=None) def test_update_server_missing_server(self): body = {'foo': {'a': 'b'}} self._unprocessable_server_update(body=body) def test_create_update_malformed_entity(self): body = {'server': 'string'} self._unprocessable_server_update(body=body) nova-2014.1/nova/tests/api/openstack/compute/test_limits.py0000664000175400017540000010570512323721477025155 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests dealing with HTTP rate-limiting. """ import httplib import StringIO from xml.dom import minidom from lxml import etree import webob from nova.api.openstack.compute import limits from nova.api.openstack.compute import views from nova.api.openstack import xmlutil import nova.context from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers from nova import utils TEST_LIMITS = [ limits.Limit("GET", "/delayed", "^/delayed", 1, utils.TIME_UNITS['MINUTE']), limits.Limit("POST", "*", ".*", 7, utils.TIME_UNITS['MINUTE']), limits.Limit("POST", "/servers", "^/servers", 3, utils.TIME_UNITS['MINUTE']), limits.Limit("PUT", "*", "", 10, utils.TIME_UNITS['MINUTE']), limits.Limit("PUT", "/servers", "^/servers", 5, utils.TIME_UNITS['MINUTE']), ] NS = { 'atom': 'http://www.w3.org/2005/Atom', 'ns': 'http://docs.openstack.org/common/api/v1.0' } class BaseLimitTestSuite(test.NoDBTestCase): """Base test suite which provides relevant stubs and time abstraction.""" def setUp(self): super(BaseLimitTestSuite, self).setUp() self.time = 0.0 self.stubs.Set(limits.Limit, "_get_time", self._get_time) self.absolute_limits = {} def stub_get_project_quotas(context, project_id, usages=True): return dict((k, dict(limit=v)) for k, v in self.absolute_limits.items()) self.stubs.Set(nova.quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) def _get_time(self): """Return the "time" according to this test suite.""" return self.time class LimitsControllerTest(BaseLimitTestSuite): """Tests for `limits.LimitsController` class.""" def setUp(self): """Run before each test.""" super(LimitsControllerTest, self).setUp() self.controller = limits.create_resource() self.ctrler = limits.LimitsController() def _get_index_request(self, accept_header="application/json"): """Helper to set routing arguments.""" request = webob.Request.blank("/") request.accept = accept_header request.environ["wsgiorg.routing_args"] = (None, { "action": "index", "controller": "", }) context = nova.context.RequestContext('testuser', 'testproject') request.environ["nova.context"] = context return request def _populate_limits(self, request): """Put limit info into a request.""" _limits = [ limits.Limit("GET", "*", ".*", 10, 60).display(), limits.Limit("POST", "*", ".*", 5, 60 * 60).display(), limits.Limit("GET", "changes-since*", "changes-since", 5, 60).display(), ] request.environ["nova.limits"] = _limits return request def test_empty_index_json(self): # Test getting empty limit details in JSON. request = self._get_index_request() response = request.get_response(self.controller) expected = { "limits": { "rate": [], "absolute": {}, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def test_index_json(self): # Test getting limit details in JSON. request = self._get_index_request() request = self._populate_limits(request) self.absolute_limits = { 'ram': 512, 'instances': 5, 'cores': 21, 'key_pairs': 10, 'floating_ips': 10, 'security_groups': 10, 'security_group_rules': 20, } response = request.get_response(self.controller) expected = { "limits": { "rate": [ { "regex": ".*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, { "verb": "POST", "next-available": "1970-01-01T00:00:00Z", "unit": "HOUR", "value": 5, "remaining": 5, }, ], }, { "regex": "changes-since", "uri": "changes-since*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 5, "remaining": 5, }, ], }, ], "absolute": { "maxTotalRAMSize": 512, "maxTotalInstances": 5, "maxTotalCores": 21, "maxTotalKeypairs": 10, "maxTotalFloatingIps": 10, "maxSecurityGroups": 10, "maxSecurityGroupRules": 20, }, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def _populate_limits_diff_regex(self, request): """Put limit info into a request.""" _limits = [ limits.Limit("GET", "*", ".*", 10, 60).display(), limits.Limit("GET", "*", "*.*", 10, 60).display(), ] request.environ["nova.limits"] = _limits return request def test_index_diff_regex(self): # Test getting limit details in JSON. request = self._get_index_request() request = self._populate_limits_diff_regex(request) response = request.get_response(self.controller) expected = { "limits": { "rate": [ { "regex": ".*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, ], }, { "regex": "*.*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, ], }, ], "absolute": {}, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def _test_index_absolute_limits_json(self, expected): request = self._get_index_request() response = request.get_response(self.controller) body = jsonutils.loads(response.body) self.assertEqual(expected, body['limits']['absolute']) def test_index_ignores_extra_absolute_limits_json(self): self.absolute_limits = {'unknown_limit': 9001} self._test_index_absolute_limits_json({}) def test_index_absolute_ram_json(self): self.absolute_limits = {'ram': 1024} self._test_index_absolute_limits_json({'maxTotalRAMSize': 1024}) def test_index_absolute_cores_json(self): self.absolute_limits = {'cores': 17} self._test_index_absolute_limits_json({'maxTotalCores': 17}) def test_index_absolute_instances_json(self): self.absolute_limits = {'instances': 19} self._test_index_absolute_limits_json({'maxTotalInstances': 19}) def test_index_absolute_metadata_json(self): # NOTE: both server metadata and image metadata are overloaded # into metadata_items self.absolute_limits = {'metadata_items': 23} expected = { 'maxServerMeta': 23, 'maxImageMeta': 23, } self._test_index_absolute_limits_json(expected) def test_index_absolute_injected_files(self): self.absolute_limits = { 'injected_files': 17, 'injected_file_content_bytes': 86753, } expected = { 'maxPersonality': 17, 'maxPersonalitySize': 86753, } self._test_index_absolute_limits_json(expected) def test_index_absolute_security_groups(self): self.absolute_limits = { 'security_groups': 8, 'security_group_rules': 16, } expected = { 'maxSecurityGroups': 8, 'maxSecurityGroupRules': 16, } self._test_index_absolute_limits_json(expected) def test_limit_create(self): req = fakes.HTTPRequest.blank('/v2/fake/limits') self.assertRaises(webob.exc.HTTPNotImplemented, self.ctrler.create, req, {}) def test_limit_delete(self): req = fakes.HTTPRequest.blank('/v2/fake/limits') self.assertRaises(webob.exc.HTTPNotImplemented, self.ctrler.delete, req, 1) def test_limit_detail(self): req = fakes.HTTPRequest.blank('/v2/fake/limits') self.assertRaises(webob.exc.HTTPNotImplemented, self.ctrler.detail, req) def test_limit_show(self): req = fakes.HTTPRequest.blank('/v2/fake/limits') self.assertRaises(webob.exc.HTTPNotImplemented, self.ctrler.show, req, 1) def test_limit_update(self): req = fakes.HTTPRequest.blank('/v2/fake/limits') self.assertRaises(webob.exc.HTTPNotImplemented, self.ctrler.update, req, 1, {}) class MockLimiter(limits.Limiter): pass class LimitMiddlewareTest(BaseLimitTestSuite): """Tests for the `limits.RateLimitingMiddleware` class.""" @webob.dec.wsgify def _empty_app(self, request): """Do-nothing WSGI app.""" pass def setUp(self): """Prepare middleware for use through fake WSGI app.""" super(LimitMiddlewareTest, self).setUp() _limits = '(GET, *, .*, 1, MINUTE)' self.app = limits.RateLimitingMiddleware(self._empty_app, _limits, "%s.MockLimiter" % self.__class__.__module__) def test_limit_class(self): # Test that middleware selected correct limiter class. self.assertIsInstance(self.app._limiter, MockLimiter) def test_good_request(self): # Test successful GET request through middleware. request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) def test_limited_request_json(self): # Test a rate-limited (429) GET request through middleware. request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(response.status_int, 429) self.assertIn('Retry-After', response.headers) retry_after = int(response.headers['Retry-After']) self.assertAlmostEqual(retry_after, 60, 1) body = jsonutils.loads(response.body) expected = "Only 1 GET request(s) can be made to * every minute." value = body["overLimit"]["details"].strip() self.assertEqual(value, expected) self.assertIn("retryAfter", body["overLimit"]) retryAfter = body["overLimit"]["retryAfter"] self.assertEqual(retryAfter, "60") def test_limited_request_xml(self): # Test a rate-limited (429) response as XML. request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) request = webob.Request.blank("/") request.accept = "application/xml" response = request.get_response(self.app) self.assertEqual(response.status_int, 429) root = minidom.parseString(response.body).childNodes[0] expected = "Only 1 GET request(s) can be made to * every minute." self.assertIsNotNone(root.attributes.getNamedItem("retryAfter")) retryAfter = root.attributes.getNamedItem("retryAfter").value self.assertEqual(retryAfter, "60") details = root.getElementsByTagName("details") self.assertEqual(details.length, 1) value = details.item(0).firstChild.data.strip() self.assertEqual(value, expected) class LimitTest(BaseLimitTestSuite): """Tests for the `limits.Limit` class.""" def test_GET_no_delay(self): # Test a limit handles 1 GET per second. limit = limits.Limit("GET", "*", ".*", 1, 1) delay = limit("GET", "/anything") self.assertIsNone(delay) self.assertEqual(0, limit.next_request) self.assertEqual(0, limit.last_request) def test_GET_delay(self): # Test two calls to 1 GET per second limit. limit = limits.Limit("GET", "*", ".*", 1, 1) delay = limit("GET", "/anything") self.assertIsNone(delay) delay = limit("GET", "/anything") self.assertEqual(1, delay) self.assertEqual(1, limit.next_request) self.assertEqual(0, limit.last_request) self.time += 4 delay = limit("GET", "/anything") self.assertIsNone(delay) self.assertEqual(4, limit.next_request) self.assertEqual(4, limit.last_request) class ParseLimitsTest(BaseLimitTestSuite): """Tests for the default limits parser in the in-memory `limits.Limiter` class. """ def test_invalid(self): # Test that parse_limits() handles invalid input correctly. self.assertRaises(ValueError, limits.Limiter.parse_limits, ';;;;;') def test_bad_rule(self): # Test that parse_limits() handles bad rules correctly. self.assertRaises(ValueError, limits.Limiter.parse_limits, 'GET, *, .*, 20, minute') def test_missing_arg(self): # Test that parse_limits() handles missing args correctly. self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, 20)') def test_bad_value(self): # Test that parse_limits() handles bad values correctly. self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, foo, minute)') def test_bad_unit(self): # Test that parse_limits() handles bad units correctly. self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, 20, lightyears)') def test_multiple_rules(self): # Test that parse_limits() handles multiple rules correctly. try: l = limits.Limiter.parse_limits('(get, *, .*, 20, minute);' '(PUT, /foo*, /foo.*, 10, hour);' '(POST, /bar*, /bar.*, 5, second);' '(Say, /derp*, /derp.*, 1, day)') except ValueError as e: assert False, str(e) # Make sure the number of returned limits are correct self.assertEqual(len(l), 4) # Check all the verbs... expected = ['GET', 'PUT', 'POST', 'SAY'] self.assertEqual([t.verb for t in l], expected) # ...the URIs... expected = ['*', '/foo*', '/bar*', '/derp*'] self.assertEqual([t.uri for t in l], expected) # ...the regexes... expected = ['.*', '/foo.*', '/bar.*', '/derp.*'] self.assertEqual([t.regex for t in l], expected) # ...the values... expected = [20, 10, 5, 1] self.assertEqual([t.value for t in l], expected) # ...and the units... expected = [utils.TIME_UNITS['MINUTE'], utils.TIME_UNITS['HOUR'], utils.TIME_UNITS['SECOND'], utils.TIME_UNITS['DAY']] self.assertEqual([t.unit for t in l], expected) class LimiterTest(BaseLimitTestSuite): """Tests for the in-memory `limits.Limiter` class.""" def setUp(self): """Run before each test.""" super(LimiterTest, self).setUp() userlimits = {'limits.user3': '', 'limits.user0': '(get, *, .*, 4, minute);' '(put, *, .*, 2, minute)'} self.limiter = limits.Limiter(TEST_LIMITS, **userlimits) def _check(self, num, verb, url, username=None): """Check and yield results from checks.""" for x in xrange(num): yield self.limiter.check_for_delay(verb, url, username)[0] def _check_sum(self, num, verb, url, username=None): """Check and sum results from checks.""" results = self._check(num, verb, url, username) return sum(item for item in results if item) def test_no_delay_GET(self): """Simple test to ensure no delay on a single call for a limit verb we didn"t set. """ delay = self.limiter.check_for_delay("GET", "/anything") self.assertEqual(delay, (None, None)) def test_no_delay_PUT(self): # Simple test to ensure no delay on a single call for a known limit. delay = self.limiter.check_for_delay("PUT", "/anything") self.assertEqual(delay, (None, None)) def test_delay_PUT(self): """Ensure the 11th PUT will result in a delay of 6.0 seconds until the next request will be granced. """ expected = [None] * 10 + [6.0] results = list(self._check(11, "PUT", "/anything")) self.assertEqual(expected, results) def test_delay_POST(self): """Ensure the 8th POST will result in a delay of 6.0 seconds until the next request will be granced. """ expected = [None] * 7 results = list(self._check(7, "POST", "/anything")) self.assertEqual(expected, results) expected = 60.0 / 7.0 results = self._check_sum(1, "POST", "/anything") self.assertAlmostEqual(expected, results, 8) def test_delay_GET(self): # Ensure the 11th GET will result in NO delay. expected = [None] * 11 results = list(self._check(11, "GET", "/anything")) self.assertEqual(expected, results) expected = [None] * 4 + [15.0] results = list(self._check(5, "GET", "/foo", "user0")) self.assertEqual(expected, results) def test_delay_PUT_servers(self): """Ensure PUT on /servers limits at 5 requests, and PUT elsewhere is still OK after 5 requests...but then after 11 total requests, PUT limiting kicks in. """ # First 6 requests on PUT /servers expected = [None] * 5 + [12.0] results = list(self._check(6, "PUT", "/servers")) self.assertEqual(expected, results) # Next 5 request on PUT /anything expected = [None] * 4 + [6.0] results = list(self._check(5, "PUT", "/anything")) self.assertEqual(expected, results) def test_delay_PUT_wait(self): """Ensure after hitting the limit and then waiting for the correct amount of time, the limit will be lifted. """ expected = [None] * 10 + [6.0] results = list(self._check(11, "PUT", "/anything")) self.assertEqual(expected, results) # Advance time self.time += 6.0 expected = [None, 6.0] results = list(self._check(2, "PUT", "/anything")) self.assertEqual(expected, results) def test_multiple_delays(self): # Ensure multiple requests still get a delay. expected = [None] * 10 + [6.0] * 10 results = list(self._check(20, "PUT", "/anything")) self.assertEqual(expected, results) self.time += 1.0 expected = [5.0] * 10 results = list(self._check(10, "PUT", "/anything")) self.assertEqual(expected, results) expected = [None] * 2 + [30.0] * 8 results = list(self._check(10, "PUT", "/anything", "user0")) self.assertEqual(expected, results) def test_user_limit(self): # Test user-specific limits. self.assertEqual(self.limiter.levels['user3'], []) self.assertEqual(len(self.limiter.levels['user0']), 2) def test_multiple_users(self): # Tests involving multiple users. # User0 expected = [None] * 2 + [30.0] * 8 results = list(self._check(10, "PUT", "/anything", "user0")) self.assertEqual(expected, results) # User1 expected = [None] * 10 + [6.0] * 10 results = list(self._check(20, "PUT", "/anything", "user1")) self.assertEqual(expected, results) # User2 expected = [None] * 10 + [6.0] * 5 results = list(self._check(15, "PUT", "/anything", "user2")) self.assertEqual(expected, results) # User3 expected = [None] * 20 results = list(self._check(20, "PUT", "/anything", "user3")) self.assertEqual(expected, results) self.time += 1.0 # User1 again expected = [5.0] * 10 results = list(self._check(10, "PUT", "/anything", "user1")) self.assertEqual(expected, results) self.time += 1.0 # User1 again expected = [4.0] * 5 results = list(self._check(5, "PUT", "/anything", "user2")) self.assertEqual(expected, results) # User0 again expected = [28.0] results = list(self._check(1, "PUT", "/anything", "user0")) self.assertEqual(expected, results) self.time += 28.0 expected = [None, 30.0] results = list(self._check(2, "PUT", "/anything", "user0")) self.assertEqual(expected, results) class WsgiLimiterTest(BaseLimitTestSuite): """Tests for `limits.WsgiLimiter` class.""" def setUp(self): """Run before each test.""" super(WsgiLimiterTest, self).setUp() self.app = limits.WsgiLimiter(TEST_LIMITS) def _request_data(self, verb, path): """Get data describing a limit request verb/path.""" return jsonutils.dumps({"verb": verb, "path": path}) def _request(self, verb, url, username=None): """Make sure that POSTing to the given url causes the given username to perform the given action. Make the internal rate limiter return delay and make sure that the WSGI app returns the correct response. """ if username: request = webob.Request.blank("/%s" % username) else: request = webob.Request.blank("/") request.method = "POST" request.body = self._request_data(verb, url) response = request.get_response(self.app) if "X-Wait-Seconds" in response.headers: self.assertEqual(response.status_int, 403) return response.headers["X-Wait-Seconds"] self.assertEqual(response.status_int, 204) def test_invalid_methods(self): # Only POSTs should work. requests = [] for method in ["GET", "PUT", "DELETE", "HEAD", "OPTIONS"]: request = webob.Request.blank("/", method=method) response = request.get_response(self.app) self.assertEqual(response.status_int, 405) def test_good_url(self): delay = self._request("GET", "/something") self.assertIsNone(delay) def test_escaping(self): delay = self._request("GET", "/something/jump%20up") self.assertIsNone(delay) def test_response_to_delays(self): delay = self._request("GET", "/delayed") self.assertIsNone(delay) delay = self._request("GET", "/delayed") self.assertEqual(delay, '60.00') def test_response_to_delays_usernames(self): delay = self._request("GET", "/delayed", "user1") self.assertIsNone(delay) delay = self._request("GET", "/delayed", "user2") self.assertIsNone(delay) delay = self._request("GET", "/delayed", "user1") self.assertEqual(delay, '60.00') delay = self._request("GET", "/delayed", "user2") self.assertEqual(delay, '60.00') class FakeHttplibSocket(object): """Fake `httplib.HTTPResponse` replacement.""" def __init__(self, response_string): """Initialize new `FakeHttplibSocket`.""" self._buffer = StringIO.StringIO(response_string) def makefile(self, _mode, _other): """Returns the socket's internal buffer.""" return self._buffer class FakeHttplibConnection(object): """Fake `httplib.HTTPConnection`.""" def __init__(self, app, host): """Initialize `FakeHttplibConnection`.""" self.app = app self.host = host def request(self, method, path, body="", headers=None): """Requests made via this connection actually get translated and routed into our WSGI app, we then wait for the response and turn it back into an `httplib.HTTPResponse`. """ if not headers: headers = {} req = webob.Request.blank(path) req.method = method req.headers = headers req.host = self.host req.body = body resp = str(req.get_response(self.app)) resp = "HTTP/1.0 %s" % resp sock = FakeHttplibSocket(resp) self.http_response = httplib.HTTPResponse(sock) self.http_response.begin() def getresponse(self): """Return our generated response from the request.""" return self.http_response def wire_HTTPConnection_to_WSGI(host, app): """Monkeypatches HTTPConnection so that if you try to connect to host, you are instead routed straight to the given WSGI app. After calling this method, when any code calls httplib.HTTPConnection(host) the connection object will be a fake. Its requests will be sent directly to the given WSGI app rather than through a socket. Code connecting to hosts other than host will not be affected. This method may be called multiple times to map different hosts to different apps. This method returns the original HTTPConnection object, so that the caller can restore the default HTTPConnection interface (for all hosts). """ class HTTPConnectionDecorator(object): """Wraps the real HTTPConnection class so that when you instantiate the class you might instead get a fake instance. """ def __init__(self, wrapped): self.wrapped = wrapped def __call__(self, connection_host, *args, **kwargs): if connection_host == host: return FakeHttplibConnection(app, host) else: return self.wrapped(connection_host, *args, **kwargs) oldHTTPConnection = httplib.HTTPConnection httplib.HTTPConnection = HTTPConnectionDecorator(httplib.HTTPConnection) return oldHTTPConnection class WsgiLimiterProxyTest(BaseLimitTestSuite): """Tests for the `limits.WsgiLimiterProxy` class.""" def setUp(self): """Do some nifty HTTP/WSGI magic which allows for WSGI to be called directly by something like the `httplib` library. """ super(WsgiLimiterProxyTest, self).setUp() self.app = limits.WsgiLimiter(TEST_LIMITS) self.oldHTTPConnection = ( wire_HTTPConnection_to_WSGI("169.254.0.1:80", self.app)) self.proxy = limits.WsgiLimiterProxy("169.254.0.1:80") def test_200(self): # Successful request test. delay = self.proxy.check_for_delay("GET", "/anything") self.assertEqual(delay, (None, None)) def test_403(self): # Forbidden request test. delay = self.proxy.check_for_delay("GET", "/delayed") self.assertEqual(delay, (None, None)) delay, error = self.proxy.check_for_delay("GET", "/delayed") error = error.strip() expected = ("60.00", "403 Forbidden\n\nOnly 1 GET request(s) can be " "made to /delayed every minute.") self.assertEqual((delay, error), expected) def tearDown(self): # restore original HTTPConnection object httplib.HTTPConnection = self.oldHTTPConnection super(WsgiLimiterProxyTest, self).tearDown() class LimitsViewBuilderTest(test.NoDBTestCase): def setUp(self): super(LimitsViewBuilderTest, self).setUp() self.view_builder = views.limits.ViewBuilder() self.rate_limits = [{"URI": "*", "regex": ".*", "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "resetTime": 1311272226}, {"URI": "*/servers", "regex": "^/servers", "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "resetTime": 1311272226}] self.absolute_limits = {"metadata_items": 1, "injected_files": 5, "injected_file_content_bytes": 5} def test_build_limits(self): expected_limits = {"limits": { "rate": [{ "uri": "*", "regex": ".*", "limit": [{"value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": "2011-07-21T18:17:06Z"}]}, {"uri": "*/servers", "regex": "^/servers", "limit": [{"value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": "2011-07-21T18:17:06Z"}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 5}}} output = self.view_builder.build(self.rate_limits, self.absolute_limits) self.assertThat(output, matchers.DictMatches(expected_limits)) def test_build_limits_empty_limits(self): expected_limits = {"limits": {"rate": [], "absolute": {}}} abs_limits = {} rate_limits = [] output = self.view_builder.build(rate_limits, abs_limits) self.assertThat(output, matchers.DictMatches(expected_limits)) class LimitsXMLSerializationTest(test.NoDBTestCase): def test_xml_declaration(self): serializer = limits.LimitsTemplate() fixture = {"limits": { "rate": [], "absolute": {}}} output = serializer.serialize(fixture) has_dec = output.startswith("") self.assertTrue(has_dec) def test_index(self): serializer = limits.LimitsTemplate() fixture = { "limits": { "rate": [{ "uri": "*", "regex": ".*", "limit": [{ "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": "2011-12-15T22:42:45Z"}]}, {"uri": "*/servers", "regex": "^/servers", "limit": [{ "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": "2011-12-15T22:42:45Z"}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 4) for limit in absolutes: name = limit.get('name') value = limit.get('value') self.assertEqual(value, str(fixture['limits']['absolute'][name])) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 2) for i, rate in enumerate(rates): for key in ['uri', 'regex']: self.assertEqual(rate.get(key), str(fixture['limits']['rate'][i][key])) rate_limits = rate.xpath('ns:limit', namespaces=NS) self.assertEqual(len(rate_limits), 1) for j, limit in enumerate(rate_limits): for key in ['verb', 'value', 'remaining', 'unit', 'next-available']: self.assertEqual(limit.get(key), str(fixture['limits']['rate'][i]['limit'][j][key])) def test_index_no_limits(self): serializer = limits.LimitsTemplate() fixture = {"limits": { "rate": [], "absolute": {}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 0) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 0) nova-2014.1/nova/tests/api/openstack/compute/test_v3_extensions.py0000664000175400017540000001701412323721477026456 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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 oslo.config import cfg import stevedore import webob.exc from nova.api import openstack from nova.api.openstack import compute from nova.api.openstack.compute import plugins from nova.api.openstack import extensions from nova import exception from nova import test CONF = cfg.CONF class fake_bad_extension(object): name = "fake_bad_extension" alias = "fake-bad" class fake_stevedore_enabled_extensions(object): def __init__(self, namespace, check_func, invoke_on_load=False, invoke_args=(), invoke_kwds={}): self.extensions = [] def map(self, func, *args, **kwds): pass def __iter__(self): return iter(self.extensions) class fake_loaded_extension_info(object): def __init__(self): self.extensions = {} def register_extension(self, ext): self.extensions[ext] = ext return True def get_extensions(self): return {'core1': None, 'core2': None, 'noncore1': None} class ExtensionLoadingTestCase(test.NoDBTestCase): def _set_v3_core(self, core_extensions): openstack.API_V3_CORE_EXTENSIONS = core_extensions def test_extensions_loaded(self): app = compute.APIRouterV3() self.assertIn('servers', app._loaded_extension_info.extensions) def test_check_bad_extension(self): extension_info = plugins.LoadedExtensionInfo() self.assertFalse(extension_info._check_extension(fake_bad_extension)) def test_extensions_blacklist(self): app = compute.APIRouterV3() self.assertIn('os-hosts', app._loaded_extension_info.extensions) CONF.set_override('extensions_blacklist', ['os-hosts'], 'osapi_v3') app = compute.APIRouterV3() self.assertNotIn('os-hosts', app._loaded_extension_info.extensions) def test_extensions_whitelist_accept(self): # NOTE(maurosr): just to avoid to get an exception raised for not # loading all core api. v3_core = openstack.API_V3_CORE_EXTENSIONS openstack.API_V3_CORE_EXTENSIONS = set(['servers']) self.addCleanup(self._set_v3_core, v3_core) app = compute.APIRouterV3() self.assertIn('os-hosts', app._loaded_extension_info.extensions) CONF.set_override('extensions_whitelist', ['servers', 'os-hosts'], 'osapi_v3') app = compute.APIRouterV3() self.assertIn('os-hosts', app._loaded_extension_info.extensions) def test_extensions_whitelist_block(self): # NOTE(maurosr): just to avoid to get an exception raised for not # loading all core api. v3_core = openstack.API_V3_CORE_EXTENSIONS openstack.API_V3_CORE_EXTENSIONS = set(['servers']) self.addCleanup(self._set_v3_core, v3_core) app = compute.APIRouterV3() self.assertIn('os-hosts', app._loaded_extension_info.extensions) CONF.set_override('extensions_whitelist', ['servers'], 'osapi_v3') app = compute.APIRouterV3() self.assertNotIn('os-hosts', app._loaded_extension_info.extensions) def test_blacklist_overrides_whitelist(self): # NOTE(maurosr): just to avoid to get an exception raised for not # loading all core api. v3_core = openstack.API_V3_CORE_EXTENSIONS openstack.API_V3_CORE_EXTENSIONS = set(['servers']) self.addCleanup(self._set_v3_core, v3_core) app = compute.APIRouterV3() self.assertIn('os-hosts', app._loaded_extension_info.extensions) CONF.set_override('extensions_whitelist', ['servers', 'os-hosts'], 'osapi_v3') CONF.set_override('extensions_blacklist', ['os-hosts'], 'osapi_v3') app = compute.APIRouterV3() self.assertNotIn('os-hosts', app._loaded_extension_info.extensions) self.assertIn('servers', app._loaded_extension_info.extensions) self.assertEqual(len(app._loaded_extension_info.extensions), 1) def test_get_missing_core_extensions(self): v3_core = openstack.API_V3_CORE_EXTENSIONS openstack.API_V3_CORE_EXTENSIONS = set(['core1', 'core2']) self.addCleanup(self._set_v3_core, v3_core) self.assertEqual(len(compute.APIRouterV3.get_missing_core_extensions( ['core1', 'core2', 'noncore1'])), 0) missing_core = compute.APIRouterV3.get_missing_core_extensions( ['core1']) self.assertEqual(len(missing_core), 1) self.assertIn('core2', missing_core) missing_core = compute.APIRouterV3.get_missing_core_extensions([]) self.assertEqual(len(missing_core), 2) self.assertIn('core1', missing_core) self.assertIn('core2', missing_core) missing_core = compute.APIRouterV3.get_missing_core_extensions( ['noncore1']) self.assertEqual(len(missing_core), 2) self.assertIn('core1', missing_core) self.assertIn('core2', missing_core) def test_core_extensions_present(self): self.stubs.Set(stevedore.enabled, 'EnabledExtensionManager', fake_stevedore_enabled_extensions) self.stubs.Set(plugins, 'LoadedExtensionInfo', fake_loaded_extension_info) v3_core = openstack.API_V3_CORE_EXTENSIONS openstack.API_V3_CORE_EXTENSIONS = set(['core1', 'core2']) self.addCleanup(self._set_v3_core, v3_core) # if no core API extensions are missing then an exception will # not be raised when creating an instance of compute.APIRouterV3 compute.APIRouterV3() def test_core_extensions_missing(self): self.stubs.Set(stevedore.enabled, 'EnabledExtensionManager', fake_stevedore_enabled_extensions) self.stubs.Set(plugins, 'LoadedExtensionInfo', fake_loaded_extension_info) self.assertRaises(exception.CoreAPIMissing, compute.APIRouterV3) def test_extensions_expected_error(self): @extensions.expected_errors(404) def fake_func(): raise webob.exc.HTTPNotFound() self.assertRaises(webob.exc.HTTPNotFound, fake_func) def test_extensions_expected_error_from_list(self): @extensions.expected_errors((404, 403)) def fake_func(): raise webob.exc.HTTPNotFound() self.assertRaises(webob.exc.HTTPNotFound, fake_func) def test_extensions_unexpected_error(self): @extensions.expected_errors(404) def fake_func(): raise webob.exc.HTTPConflict() self.assertRaises(webob.exc.HTTPInternalServerError, fake_func) def test_extensions_unexpected_error_from_list(self): @extensions.expected_errors((404, 413)) def fake_func(): raise webob.exc.HTTPConflict() self.assertRaises(webob.exc.HTTPInternalServerError, fake_func) def test_extensions_unexpected_policy_not_authorized_error(self): @extensions.expected_errors(404) def fake_func(): raise exception.PolicyNotAuthorized(action="foo") self.assertRaises(exception.PolicyNotAuthorized, fake_func) nova-2014.1/nova/tests/api/openstack/compute/test_images.py0000664000175400017540000011740712323721477025123 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests of the new image services, both as a service layer, and as a WSGI layer """ import copy from lxml import etree import six.moves.urllib.parse as urlparse import webob from nova.api.openstack.compute import images from nova.api.openstack.compute.views import images as images_view from nova.api.openstack import xmlutil from nova import exception from nova.image import glance from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers NS = "{http://docs.openstack.org/compute/api/v1.1}" ATOMNS = "{http://www.w3.org/2005/Atom}" NOW_API_FORMAT = "2010-10-11T10:30:22Z" class ImagesControllerTest(test.NoDBTestCase): """Test of the OpenStack API /images application controller w/Glance. """ def setUp(self): """Run before each test.""" super(ImagesControllerTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_key_pair_funcs(self.stubs) fakes.stub_out_compute_api_snapshot(self.stubs) fakes.stub_out_compute_api_backup(self.stubs) fakes.stub_out_glance(self.stubs) self.controller = images.Controller() self.uuid = 'fa95aaf5-ab3b-4cd8-88c0-2be7dd051aaf' self.url = '/v2/fake/images/detail?server=' + self.uuid self.server_uuid = "aa640691-d1a7-4a67-9d3c-d35ee6b3cc74" self.server_href = ( "http://localhost/v2/fake/servers/" + self.server_uuid) self.server_bookmark = ( "http://localhost/fake/servers/" + self.server_uuid) self.alternate = "%s/fake/images/%s" self.fake_req = fakes.HTTPRequest.blank('/v2/fake/images/123') self.actual_image = self.controller.show(self.fake_req, '124') self.expected_image_123 = { "image": {'id': '123', 'name': 'public image', 'metadata': {'key1': 'value1'}, 'updated': NOW_API_FORMAT, 'created': NOW_API_FORMAT, 'status': 'ACTIVE', 'minDisk': 10, 'progress': 100, 'minRam': 128, "links": [{ "rel": "self", "href": "http://localhost/v2/fake/images/123", }, { "rel": "bookmark", "href": "http://localhost/fake/images/123", }, { "rel": "alternate", "type": "application/vnd.openstack.image", "href": self.alternate % (glance.generate_glance_url(), 123), }], }, } self.expected_image_124 = { "image": {'id': '124', 'name': 'queued snapshot', 'metadata': { u'instance_uuid': self.server_uuid, u'user_id': u'fake', }, 'updated': NOW_API_FORMAT, 'created': NOW_API_FORMAT, 'status': 'SAVING', 'progress': 25, 'minDisk': 0, 'minRam': 0, 'server': { 'id': self.server_uuid, "links": [{ "rel": "self", "href": self.server_href, }, { "rel": "bookmark", "href": self.server_bookmark, }], }, "links": [{ "rel": "self", "href": "http://localhost/v2/fake/images/124", }, { "rel": "bookmark", "href": "http://localhost/fake/images/124", }, { "rel": "alternate", "type": "application/vnd.openstack.image", "href": self.alternate % (glance.generate_glance_url(), 124), }], }, } self.image_service = self.mox.CreateMockAnything() def test_get_image(self): self.assertThat(self.actual_image, matchers.DictMatches(self.expected_image_124)) def test_get_image_with_custom_prefix(self): self.flags(osapi_compute_link_prefix='https://zoo.com:42', osapi_glance_link_prefix='http://circus.com:34') fake_req = fakes.HTTPRequest.blank('/v2/fake/images/123') actual_image = self.controller.show(fake_req, '124') expected_image = self.expected_image_124 expected_image["image"]["links"][0]["href"] = ( "https://zoo.com:42/v2/fake/images/124") expected_image["image"]["links"][1]["href"] = ( "https://zoo.com:42/fake/images/124") expected_image["image"]["links"][2]["href"] = ( "http://circus.com:34/fake/images/124") expected_image["image"]["server"]["links"][0]["href"] = ( "https://zoo.com:42/v2/fake/servers/" + self.server_uuid) expected_image["image"]["server"]["links"][1]["href"] = ( "https://zoo.com:42/fake/servers/" + self.server_uuid) self.assertThat(actual_image, matchers.DictMatches(expected_image)) def test_get_image_404(self): fake_req = fakes.HTTPRequest.blank('/v2/fake/images/unknown') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, fake_req, 'unknown') def test_get_image_details(self): request = fakes.HTTPRequest.blank('/v2/fake/images/detail') response = self.controller.detail(request) response_list = response["images"] image_125 = copy.deepcopy(self.expected_image_124["image"]) image_125['id'] = '125' image_125['name'] = 'saving snapshot' image_125['progress'] = 50 image_125["links"][0]["href"] = "http://localhost/v2/fake/images/125" image_125["links"][1]["href"] = "http://localhost/fake/images/125" image_125["links"][2]["href"] = ( "%s/fake/images/125" % glance.generate_glance_url()) image_126 = copy.deepcopy(self.expected_image_124["image"]) image_126['id'] = '126' image_126['name'] = 'active snapshot' image_126['status'] = 'ACTIVE' image_126['progress'] = 100 image_126["links"][0]["href"] = "http://localhost/v2/fake/images/126" image_126["links"][1]["href"] = "http://localhost/fake/images/126" image_126["links"][2]["href"] = ( "%s/fake/images/126" % glance.generate_glance_url()) image_127 = copy.deepcopy(self.expected_image_124["image"]) image_127['id'] = '127' image_127['name'] = 'killed snapshot' image_127['status'] = 'ERROR' image_127['progress'] = 0 image_127["links"][0]["href"] = "http://localhost/v2/fake/images/127" image_127["links"][1]["href"] = "http://localhost/fake/images/127" image_127["links"][2]["href"] = ( "%s/fake/images/127" % glance.generate_glance_url()) image_128 = copy.deepcopy(self.expected_image_124["image"]) image_128['id'] = '128' image_128['name'] = 'deleted snapshot' image_128['status'] = 'DELETED' image_128['progress'] = 0 image_128["links"][0]["href"] = "http://localhost/v2/fake/images/128" image_128["links"][1]["href"] = "http://localhost/fake/images/128" image_128["links"][2]["href"] = ( "%s/fake/images/128" % glance.generate_glance_url()) image_129 = copy.deepcopy(self.expected_image_124["image"]) image_129['id'] = '129' image_129['name'] = 'pending_delete snapshot' image_129['status'] = 'DELETED' image_129['progress'] = 0 image_129["links"][0]["href"] = "http://localhost/v2/fake/images/129" image_129["links"][1]["href"] = "http://localhost/fake/images/129" image_129["links"][2]["href"] = ( "%s/fake/images/129" % glance.generate_glance_url()) image_130 = copy.deepcopy(self.expected_image_123["image"]) image_130['id'] = '130' image_130['name'] = None image_130['metadata'] = {} image_130['minDisk'] = 0 image_130['minRam'] = 0 image_130["links"][0]["href"] = "http://localhost/v2/fake/images/130" image_130["links"][1]["href"] = "http://localhost/fake/images/130" image_130["links"][2]["href"] = ( "%s/fake/images/130" % glance.generate_glance_url()) image_131 = copy.deepcopy(self.expected_image_123["image"]) image_131['id'] = '131' image_131['name'] = None image_131['metadata'] = {} image_131['minDisk'] = 0 image_131['minRam'] = 0 image_131["links"][0]["href"] = "http://localhost/v2/fake/images/131" image_131["links"][1]["href"] = "http://localhost/fake/images/131" image_131["links"][2]["href"] = ( "%s/fake/images/131" % glance.generate_glance_url()) expected = [self.expected_image_123["image"], self.expected_image_124["image"], image_125, image_126, image_127, image_128, image_129, image_130, image_131] self.assertThat(expected, matchers.DictListMatches(response_list)) def test_get_image_details_with_limit(self): request = fakes.HTTPRequest.blank('/v2/fake/images/detail?limit=2') response = self.controller.detail(request) response_list = response["images"] response_links = response["images_links"] expected = [self.expected_image_123["image"], self.expected_image_124["image"]] self.assertThat(expected, matchers.DictListMatches(response_list)) href_parts = urlparse.urlparse(response_links[0]['href']) self.assertEqual('/v2/fake/images', href_parts.path) params = urlparse.parse_qs(href_parts.query) self.assertThat({'limit': ['2'], 'marker': ['124']}, matchers.DictMatches(params)) def test_get_image_details_with_limit_and_page_size(self): request = fakes.HTTPRequest.blank( '/v2/fake/images/detail?limit=2&page_size=1') response = self.controller.detail(request) response_list = response["images"] response_links = response["images_links"] expected = [self.expected_image_123["image"], self.expected_image_124["image"]] self.assertThat(expected, matchers.DictListMatches(response_list)) href_parts = urlparse.urlparse(response_links[0]['href']) self.assertEqual('/v2/fake/images', href_parts.path) params = urlparse.parse_qs(href_parts.query) self.assertThat({'limit': ['2'], 'page_size': ['1'], 'marker': ['124']}, matchers.DictMatches(params)) def _detail_request(self, filters, request): context = request.environ['nova.context'] self.image_service.detail(context, filters=filters).AndReturn([]) self.mox.ReplayAll() controller = images.Controller(image_service=self.image_service) controller.detail(request) def test_image_detail_filter_with_name(self): filters = {'name': 'testname'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail' '?name=testname') self._detail_request(filters, request) def test_image_detail_filter_with_status(self): filters = {'status': 'active'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail' '?status=ACTIVE') self._detail_request(filters, request) def test_image_detail_filter_with_property(self): filters = {'property-test': '3'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail' '?property-test=3') self._detail_request(filters, request) def test_image_detail_filter_server_href(self): ref = 'http://localhost:8774/servers/' + self.uuid filters = {'property-instance_uuid': self.uuid} request = fakes.HTTPRequest.blank(self.url) self._detail_request(filters, request) def test_image_detail_filter_server_uuid(self): filters = {'property-instance_uuid': self.uuid} request = fakes.HTTPRequest.blank(self.url) self._detail_request(filters, request) def test_image_detail_filter_changes_since(self): filters = {'changes-since': '2011-01-24T17:08Z'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail' '?changes-since=2011-01-24T17:08Z') self._detail_request(filters, request) def test_image_detail_filter_with_type(self): filters = {'property-image_type': 'BASE'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail?type=BASE') self._detail_request(filters, request) def test_image_detail_filter_not_supported(self): filters = {'status': 'active'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail?status=' 'ACTIVE&UNSUPPORTEDFILTER=testname') self._detail_request(filters, request) def test_image_detail_no_filters(self): filters = {} request = fakes.HTTPRequest.blank('/v2/fake/images/detail') self._detail_request(filters, request) def test_image_detail_invalid_marker(self): class InvalidImageService(object): def detail(self, *args, **kwargs): raise exception.Invalid('meow') request = fakes.HTTPRequest.blank('/v2/images?marker=invalid') controller = images.Controller(image_service=InvalidImageService()) self.assertRaises(webob.exc.HTTPBadRequest, controller.detail, request) def test_generate_alternate_link(self): view = images_view.ViewBuilder() request = fakes.HTTPRequest.blank('/v2/fake/images/1') generated_url = view._get_alternate_link(request, 1) actual_url = "%s/fake/images/1" % glance.generate_glance_url() self.assertEqual(generated_url, actual_url) def test_delete_image(self): request = fakes.HTTPRequest.blank('/v2/fake/images/124') request.method = 'DELETE' response = self.controller.delete(request, '124') self.assertEqual(response.status_int, 204) def test_delete_deleted_image(self): """If you try to delete a deleted image, you get back 403 Forbidden.""" deleted_image_id = 128 # see nova.tests.api.openstack.fakes:_make_image_fixtures request = fakes.HTTPRequest.blank( '/v2/fake/images/%s' % deleted_image_id) request.method = 'DELETE' self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete, request, '%s' % deleted_image_id) def test_delete_image_not_found(self): request = fakes.HTTPRequest.blank('/v2/fake/images/300') request.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, request, '300') class ImageXMLSerializationTest(test.NoDBTestCase): TIMESTAMP = "2010-10-11T10:30:22Z" SERVER_UUID = 'aa640691-d1a7-4a67-9d3c-d35ee6b3cc74' SERVER_HREF = 'http://localhost/v2/fake/servers/' + SERVER_UUID SERVER_BOOKMARK = 'http://localhost/fake/servers/' + SERVER_UUID IMAGE_HREF = 'http://localhost/v2/fake/images/%s' IMAGE_NEXT = 'http://localhost/v2/fake/images?limit=%s&marker=%s' IMAGE_BOOKMARK = 'http://localhost/fake/images/%s' def test_xml_declaration(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'progress': 80, 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'metadata': { 'key1': 'value1', }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) has_dec = output.startswith("") self.assertTrue(has_dec) def test_show(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'progress': 80, 'minRam': 10, 'minDisk': 100, 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'metadata': { 'key1': 'value1', }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'image') image_dict = fixture['image'] for key in ['name', 'id', 'updated', 'created', 'status', 'progress']: self.assertEqual(root.get(key), str(image_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) metadata_root = root.find('{0}metadata'.format(NS)) metadata_elems = metadata_root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 1) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = image_dict['metadata'].items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) server_root = root.find('{0}server'.format(NS)) self.assertEqual(server_root.get('id'), image_dict['server']['id']) link_nodes = server_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['server']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_show_zero_metadata(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'metadata': {}, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'image') image_dict = fixture['image'] for key in ['name', 'id', 'updated', 'created', 'status']: self.assertEqual(root.get(key), str(image_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) meta_nodes = root.findall('{0}meta'.format(ATOMNS)) self.assertEqual(len(meta_nodes), 0) server_root = root.find('{0}server'.format(NS)) self.assertEqual(server_root.get('id'), image_dict['server']['id']) link_nodes = server_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['server']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_show_image_no_metadata_key(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'image') image_dict = fixture['image'] for key in ['name', 'id', 'updated', 'created', 'status']: self.assertEqual(root.get(key), str(image_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) meta_nodes = root.findall('{0}meta'.format(ATOMNS)) self.assertEqual(len(meta_nodes), 0) server_root = root.find('{0}server'.format(NS)) self.assertEqual(server_root.get('id'), image_dict['server']['id']) link_nodes = server_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['server']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_show_no_server(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'metadata': { 'key1': 'value1', }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'image') image_dict = fixture['image'] for key in ['name', 'id', 'updated', 'created', 'status']: self.assertEqual(root.get(key), str(image_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) metadata_root = root.find('{0}metadata'.format(NS)) metadata_elems = metadata_root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 1) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = image_dict['metadata'].items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) server_root = root.find('{0}server'.format(NS)) self.assertIsNone(server_root) def test_show_with_min_ram(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'progress': 80, 'minRam': 256, 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'metadata': { 'key1': 'value1', }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'image') image_dict = fixture['image'] for key in ['name', 'id', 'updated', 'created', 'status', 'progress', 'minRam']: self.assertEqual(root.get(key), str(image_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) metadata_root = root.find('{0}metadata'.format(NS)) metadata_elems = metadata_root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 1) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = image_dict['metadata'].items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) server_root = root.find('{0}server'.format(NS)) self.assertEqual(server_root.get('id'), image_dict['server']['id']) link_nodes = server_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['server']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_show_with_min_disk(self): serializer = images.ImageTemplate() fixture = { 'image': { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'progress': 80, 'minDisk': 5, 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'metadata': { 'key1': 'value1', }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'image') image_dict = fixture['image'] for key in ['name', 'id', 'updated', 'created', 'status', 'progress', 'minDisk']: self.assertEqual(root.get(key), str(image_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) metadata_root = root.find('{0}metadata'.format(NS)) metadata_elems = metadata_root.findall('{0}meta'.format(NS)) self.assertEqual(len(metadata_elems), 1) for i, metadata_elem in enumerate(metadata_elems): (meta_key, meta_value) = image_dict['metadata'].items()[i] self.assertEqual(str(metadata_elem.get('key')), str(meta_key)) self.assertEqual(str(metadata_elem.text).strip(), str(meta_value)) server_root = root.find('{0}server'.format(NS)) self.assertEqual(server_root.get('id'), image_dict['server']['id']) link_nodes = server_root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['server']['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_index(self): serializer = images.MinimalImagesTemplate() fixture = { 'images': [ { 'id': 1, 'name': 'Image1', 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, { 'id': 2, 'name': 'Image2', 'links': [ { 'href': self.IMAGE_HREF % 2, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 2, 'rel': 'bookmark', }, ], }, ] } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'images_index') image_elems = root.findall('{0}image'.format(NS)) self.assertEqual(len(image_elems), 2) for i, image_elem in enumerate(image_elems): image_dict = fixture['images'][i] for key in ['name', 'id']: self.assertEqual(image_elem.get(key), str(image_dict[key])) link_nodes = image_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_index_with_links(self): serializer = images.MinimalImagesTemplate() fixture = { 'images': [ { 'id': 1, 'name': 'Image1', 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, { 'id': 2, 'name': 'Image2', 'links': [ { 'href': self.IMAGE_HREF % 2, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 2, 'rel': 'bookmark', }, ], }, ], 'images_links': [ { 'rel': 'next', 'href': self.IMAGE_NEXT % (2, 2), } ], } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'images_index') image_elems = root.findall('{0}image'.format(NS)) self.assertEqual(len(image_elems), 2) for i, image_elem in enumerate(image_elems): image_dict = fixture['images'][i] for key in ['name', 'id']: self.assertEqual(image_elem.get(key), str(image_dict[key])) link_nodes = image_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) # Check images_links images_links = root.findall('{0}link'.format(ATOMNS)) for i, link in enumerate(fixture['images_links']): for key, value in link.items(): self.assertEqual(images_links[i].get(key), value) def test_index_zero_images(self): serializer = images.MinimalImagesTemplate() fixtures = { 'images': [], } output = serializer.serialize(fixtures) root = etree.XML(output) xmlutil.validate_schema(root, 'images_index') image_elems = root.findall('{0}image'.format(NS)) self.assertEqual(len(image_elems), 0) def test_detail(self): serializer = images.ImagesTemplate() fixture = { 'images': [ { 'id': 1, 'name': 'Image1', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'ACTIVE', 'server': { 'id': self.SERVER_UUID, 'links': [ { 'href': self.SERVER_HREF, 'rel': 'self', }, { 'href': self.SERVER_BOOKMARK, 'rel': 'bookmark', }, ], }, 'links': [ { 'href': self.IMAGE_HREF % 1, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 1, 'rel': 'bookmark', }, ], }, { 'id': '2', 'name': 'Image2', 'created': self.TIMESTAMP, 'updated': self.TIMESTAMP, 'status': 'SAVING', 'progress': 80, 'metadata': { 'key1': 'value1', }, 'links': [ { 'href': self.IMAGE_HREF % 2, 'rel': 'self', }, { 'href': self.IMAGE_BOOKMARK % 2, 'rel': 'bookmark', }, ], }, ] } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'images') image_elems = root.findall('{0}image'.format(NS)) self.assertEqual(len(image_elems), 2) for i, image_elem in enumerate(image_elems): image_dict = fixture['images'][i] for key in ['name', 'id', 'updated', 'created', 'status']: self.assertEqual(image_elem.get(key), str(image_dict[key])) link_nodes = image_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(image_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) nova-2014.1/nova/tests/api/openstack/compute/test_server_metadata.py0000664000175400017540000005361312323721510027006 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from oslo.config import cfg import six import webob from nova.api.openstack.compute import server_metadata from nova.compute import rpcapi as compute_rpcapi from nova.compute import vm_states import nova.db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance CONF = cfg.CONF def return_create_instance_metadata_max(context, server_id, metadata, delete): return stub_max_server_metadata() def return_create_instance_metadata(context, server_id, metadata, delete): return stub_server_metadata() def fake_instance_save(inst, **kwargs): inst.metadata = stub_server_metadata() inst.obj_reset_changes() def return_server_metadata(context, server_id): if not isinstance(server_id, six.string_types) or not len(server_id) == 36: msg = 'id %s must be a uuid in return server metadata' % server_id raise Exception(msg) return stub_server_metadata() def return_empty_server_metadata(context, server_id): return {} def delete_server_metadata(context, server_id, key): pass def stub_server_metadata(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", } return metadata def stub_max_server_metadata(): metadata = {"metadata": {}} for num in range(CONF.quota_metadata_items): metadata['metadata']['key%i' % num] = "blah" return metadata def return_server(context, server_id, columns_to_join=None): return fake_instance.fake_db_instance( **{'id': server_id, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'launched_at': timeutils.utcnow(), 'vm_state': vm_states.ACTIVE}) def return_server_by_uuid(context, server_uuid, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'id': 1, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'launched_at': timeutils.utcnow(), 'metadata': stub_server_metadata(), 'vm_state': vm_states.ACTIVE}) def return_server_nonexistent(context, server_id, columns_to_join=None, use_slave=False): raise exception.InstanceNotFound(instance_id=server_id) def fake_change_instance_metadata(self, context, instance, diff): pass class BaseTest(test.TestCase): def setUp(self): super(BaseTest, self).setUp() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(nova.db, 'instance_get', return_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_by_uuid) self.stubs.Set(nova.db, 'instance_metadata_get', return_server_metadata) self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) self.controller = server_metadata.Controller() self.uuid = str(uuid.uuid4()) self.url = '/v1.1/fake/servers/%s/metadata' % self.uuid class ServerMetaDataTest(BaseTest): def test_index(self): req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.uuid) expected = { 'metadata': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', }, } self.assertEqual(expected, res_dict) def test_index_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_nonexistent) req = fakes.HTTPRequest.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.url) def test_index_no_data(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_empty_server_metadata) req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.uuid) expected = {'metadata': {}} self.assertEqual(expected, res_dict) def test_show(self): req = fakes.HTTPRequest.blank(self.url + '/key2') res_dict = self.controller.show(req, self.uuid, 'key2') expected = {'meta': {'key2': 'value2'}} self.assertEqual(expected, res_dict) def test_show_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, 'key2') def test_show_meta_not_found(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_empty_server_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, 'key6') def test_delete(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_server_metadata) self.stubs.Set(nova.db, 'instance_metadata_delete', delete_server_metadata) req = fakes.HTTPRequest.blank(self.url + '/key2') req.method = 'DELETE' res = self.controller.delete(req, self.uuid, 'key2') self.assertIsNone(res) def test_delete_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, 'key1') def test_delete_meta_not_found(self): self.stubs.Set(nova.db, 'instance_metadata_get', return_empty_server_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, 'key6') def test_create(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key9": "value9"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.uuid, body) body['metadata'].update({ "key1": "value1", "key2": "value2", "key3": "value3", }) self.assertEqual(body, res_dict) def test_create_empty_body(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, None) def test_create_item_empty_key(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, body) def test_create_item_key_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, body) def test_create_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' body = {"metadata": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.uuid, body) def test_update_metadata(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.content_type = 'application/json' expected = { 'metadata': { 'key1': 'updatedvalue', 'key29': 'newkey', } } req.body = jsonutils.dumps(expected) response = self.controller.update_all(req, self.uuid, expected) self.assertEqual(expected, response) def test_update_all(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.uuid, expected) self.assertEqual(expected, res_dict) def test_update_all_empty_container(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': {}} req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.uuid, expected) self.assertEqual(expected, res_dict) def test_update_all_malformed_container(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'meta': {}} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.uuid, expected) def test_update_all_malformed_data(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': ['asdf']} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.uuid, expected) def test_update_all_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get', return_server_nonexistent) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = {'metadata': {'key10': 'value10'}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update_all, req, '100', body) def test_update_item(self): self.stubs.Set(instance_obj.Instance, 'save', fake_instance_save) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res_dict = self.controller.update(req, self.uuid, 'key1', body) expected = {'meta': {'key1': 'value1'}} self.assertEqual(expected, res_dict) def test_update_item_nonexistent_server(self): self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequest.blank('/v1.1/fake/servers/asdf/metadata/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, self.uuid, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'key1', None) def test_update_item_empty_key(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, '', body) def test_update_item_key_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.uuid, ("a" * 260), body) def test_update_item_value_too_long(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": ("a" * 260)}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.uuid, "key1", body) def test_update_item_too_many_keys(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1", "key2": "value2"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url + '/bad') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.uuid, 'bad', body) def test_too_many_metadata_items_on_create(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) data = {"metadata": {}} for num in range(CONF.quota_metadata_items + 1): data['metadata']['key%i' % num] = "blah" req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.body = jsonutils.dumps(data) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.uuid, data) def test_invalid_metadata_items_on_create(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.uuid, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.uuid, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.uuid, data) def test_too_many_metadata_items_on_update_item(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) data = {"metadata": {}} for num in range(CONF.quota_metadata_items + 1): data['metadata']['key%i' % num] = "blah" req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.body = jsonutils.dumps(data) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update_all, req, self.uuid, data) def test_invalid_metadata_items_on_update_item(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) data = {"metadata": {}} for num in range(CONF.quota_metadata_items + 1): data['metadata']['key%i' % num] = "blah" req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.body = jsonutils.dumps(data) req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update_all, req, self.uuid, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update_all, req, self.uuid, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.uuid, data) class BadStateServerMetaDataTest(BaseTest): def setUp(self): super(BadStateServerMetaDataTest, self).setUp() self.stubs.Set(nova.db, 'instance_get', self._return_server_in_build) self.stubs.Set(nova.db, 'instance_get_by_uuid', self._return_server_in_build_by_uuid) self.stubs.Set(nova.db, 'instance_metadata_delete', delete_server_metadata) def test_invalid_state_on_delete(self): req = fakes.HTTPRequest.blank(self.url + '/key2') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPConflict, self.controller.delete, req, self.uuid, 'key2') def test_invalid_state_on_update_metadata(self): self.stubs.Set(nova.db, 'instance_metadata_update', return_create_instance_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.content_type = 'application/json' expected = { 'metadata': { 'key1': 'updatedvalue', 'key29': 'newkey', } } req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPConflict, self.controller.update_all, req, self.uuid, expected) def _return_server_in_build(self, context, server_id, columns_to_join=None): return fake_instance.fake_db_instance( **{'id': server_id, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'vm_state': vm_states.BUILDING}) def _return_server_in_build_by_uuid(self, context, server_uuid, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'id': 1, 'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'locked': False, 'vm_state': vm_states.BUILDING}) nova-2014.1/nova/tests/api/openstack/compute/test_extensions.py0000664000175400017540000007164312323721477026056 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import iso8601 from lxml import etree from oslo.config import cfg import webob from nova.api.openstack import compute from nova.api.openstack.compute import extensions as compute_extensions from nova.api.openstack import extensions as base_extensions from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova import exception from nova.openstack.common import jsonutils import nova.policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers CONF = cfg.CONF NS = "{http://docs.openstack.org/common/api/v1.0}" ATOMNS = "{http://www.w3.org/2005/Atom}" response_body = "Try to say this Mr. Knox, sir..." extension_body = "I am not a fox!" class StubController(object): def __init__(self, body): self.body = body def index(self, req): return self.body def create(self, req, body): msg = 'All aboard the fail train!' raise webob.exc.HTTPBadRequest(explanation=msg) def show(self, req, id): raise webob.exc.HTTPNotFound() class StubActionController(wsgi.Controller): def __init__(self, body): self.body = body @wsgi.action('fooAction') def _action_foo(self, req, id, body): return self.body class StubControllerExtension(base_extensions.ExtensionDescriptor): name = 'twaadle' def __init__(self): pass class StubEarlyExtensionController(wsgi.Controller): def __init__(self, body): self.body = body @wsgi.extends def index(self, req): yield self.body @wsgi.extends(action='fooAction') def _action_foo(self, req, id, body): yield self.body class StubLateExtensionController(wsgi.Controller): def __init__(self, body): self.body = body @wsgi.extends def index(self, req, resp_obj): return self.body @wsgi.extends(action='fooAction') def _action_foo(self, req, resp_obj, id, body): return self.body class StubExtensionManager(object): """Provides access to Tweedle Beetles.""" name = "Tweedle Beetle Extension" alias = "TWDLBETL" def __init__(self, resource_ext=None, action_ext=None, request_ext=None, controller_ext=None): self.resource_ext = resource_ext self.action_ext = action_ext self.request_ext = request_ext self.controller_ext = controller_ext self.extra_resource_ext = None def get_resources(self): resource_exts = [] if self.resource_ext: resource_exts.append(self.resource_ext) if self.extra_resource_ext: resource_exts.append(self.extra_resource_ext) return resource_exts def get_actions(self): action_exts = [] if self.action_ext: action_exts.append(self.action_ext) return action_exts def get_request_extensions(self): request_extensions = [] if self.request_ext: request_extensions.append(self.request_ext) return request_extensions def get_controller_extensions(self): controller_extensions = [] if self.controller_ext: controller_extensions.append(self.controller_ext) return controller_extensions class ExtensionTestCase(test.TestCase): def setUp(self): super(ExtensionTestCase, self).setUp() ext_list = CONF.osapi_compute_extension[:] fox = ('nova.tests.api.openstack.compute.extensions.' 'foxinsocks.Foxinsocks') if fox not in ext_list: ext_list.append(fox) self.flags(osapi_compute_extension=ext_list) self.fake_context = nova.context.RequestContext('fake', 'fake') def test_extension_authorizer_throws_exception_if_policy_fails(self): target = {'project_id': '1234', 'user_id': '5678'} self.mox.StubOutWithMock(nova.policy, 'enforce') nova.policy.enforce(self.fake_context, "compute_extension:used_limits_for_admin", target).AndRaise( exception.PolicyNotAuthorized( action="compute_extension:used_limits_for_admin")) self.mox.ReplayAll() authorize = base_extensions.extension_authorizer('compute', 'used_limits_for_admin' ) self.assertRaises(exception.PolicyNotAuthorized, authorize, self.fake_context, target=target) def test_core_authorizer_throws_exception_if_policy_fails(self): target = {'project_id': '1234', 'user_id': '5678'} self.mox.StubOutWithMock(nova.policy, 'enforce') nova.policy.enforce(self.fake_context, "compute:used_limits_for_admin", target).AndRaise( exception.PolicyNotAuthorized( action="compute:used_limits_for_admin")) self.mox.ReplayAll() authorize = base_extensions.core_authorizer('compute', 'used_limits_for_admin' ) self.assertRaises(exception.PolicyNotAuthorized, authorize, self.fake_context, target=target) class ExtensionControllerTest(ExtensionTestCase): def setUp(self): super(ExtensionControllerTest, self).setUp() self.ext_list = [ "AdminActions", "Aggregates", "AssistedVolumeSnapshots", "AvailabilityZone", "Agents", "Certificates", "Cloudpipe", "CloudpipeUpdate", "ConsoleOutput", "Consoles", "Createserverext", "DeferredDelete", "DiskConfig", "ExtendedAvailabilityZone", "ExtendedFloatingIps", "ExtendedIps", "ExtendedIpsMac", "ExtendedVIFNet", "Evacuate", "ExtendedStatus", "ExtendedVolumes", "ExtendedServerAttributes", "FixedIPs", "FlavorAccess", "FlavorDisabled", "FlavorExtraSpecs", "FlavorExtraData", "FlavorManage", "FlavorRxtx", "FlavorSwap", "FloatingIps", "FloatingIpDns", "FloatingIpPools", "FloatingIpsBulk", "Fox In Socks", "Hosts", "ImageSize", "InstanceActions", "Keypairs", "Multinic", "MultipleCreate", "Quotas", "ExtendedQuotas", "Rescue", "SchedulerHints", "SecurityGroupDefaultRules", "SecurityGroups", "ServerDiagnostics", "ServerPassword", "ServerStartStop", "Services", "SimpleTenantUsage", "UsedLimits", "UserData", "VirtualInterfaces", "VolumeAttachmentUpdate", "Volumes", ] self.ext_list.sort() def test_list_extensions_json(self): app = compute.APIRouter(init_only=('extensions',)) request = webob.Request.blank("/fake/extensions") response = request.get_response(app) self.assertEqual(200, response.status_int) # Make sure we have all the extensions, extra extensions being OK. data = jsonutils.loads(response.body) names = [str(x['name']) for x in data['extensions'] if str(x['name']) in self.ext_list] names.sort() self.assertEqual(names, self.ext_list) # Ensure all the timestamps are valid according to iso8601 for ext in data['extensions']: iso8601.parse_date(ext['updated']) # Make sure that at least Fox in Sox is correct. (fox_ext, ) = [ x for x in data['extensions'] if x['alias'] == 'FOXNSOX'] self.assertEqual(fox_ext, { 'namespace': 'http://www.fox.in.socks/api/ext/pie/v1.0', 'name': 'Fox In Socks', 'updated': '2011-01-22T13:25:27-06:00', 'description': 'The Fox In Socks Extension.', 'alias': 'FOXNSOX', 'links': [] }, ) for ext in data['extensions']: url = '/fake/extensions/%s' % ext['alias'] request = webob.Request.blank(url) response = request.get_response(app) output = jsonutils.loads(response.body) self.assertEqual(output['extension']['alias'], ext['alias']) def test_get_extension_json(self): app = compute.APIRouter(init_only=('extensions',)) request = webob.Request.blank("/fake/extensions/FOXNSOX") response = request.get_response(app) self.assertEqual(200, response.status_int) data = jsonutils.loads(response.body) self.assertEqual(data['extension'], { "namespace": "http://www.fox.in.socks/api/ext/pie/v1.0", "name": "Fox In Socks", "updated": "2011-01-22T13:25:27-06:00", "description": "The Fox In Socks Extension.", "alias": "FOXNSOX", "links": []}) def test_get_non_existing_extension_json(self): app = compute.APIRouter(init_only=('extensions',)) request = webob.Request.blank("/fake/extensions/4") response = request.get_response(app) self.assertEqual(404, response.status_int) def test_list_extensions_xml(self): app = compute.APIRouter(init_only=('servers', 'flavors', 'extensions')) request = webob.Request.blank("/fake/extensions") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) root = etree.XML(response.body) self.assertEqual(root.tag.split('extensions')[0], NS) # Make sure we have all the extensions, extras extensions being OK. exts = root.findall('{0}extension'.format(NS)) self.assertTrue(len(exts) >= len(self.ext_list)) # Make sure that at least Fox in Sox is correct. (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX'] self.assertEqual(fox_ext.get('name'), 'Fox In Socks') self.assertEqual(fox_ext.get('namespace'), 'http://www.fox.in.socks/api/ext/pie/v1.0') self.assertEqual(fox_ext.get('updated'), '2011-01-22T13:25:27-06:00') self.assertEqual(fox_ext.findtext('{0}description'.format(NS)), 'The Fox In Socks Extension.') xmlutil.validate_schema(root, 'extensions') def test_get_extension_xml(self): app = compute.APIRouter(init_only=('servers', 'flavors', 'extensions')) request = webob.Request.blank("/fake/extensions/FOXNSOX") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) xml = response.body root = etree.XML(xml) self.assertEqual(root.tag.split('extension')[0], NS) self.assertEqual(root.get('alias'), 'FOXNSOX') self.assertEqual(root.get('name'), 'Fox In Socks') self.assertEqual(root.get('namespace'), 'http://www.fox.in.socks/api/ext/pie/v1.0') self.assertEqual(root.get('updated'), '2011-01-22T13:25:27-06:00') self.assertEqual(root.findtext('{0}description'.format(NS)), 'The Fox In Socks Extension.') xmlutil.validate_schema(root, 'extension') class ResourceExtensionTest(ExtensionTestCase): def test_no_extension_present(self): manager = StubExtensionManager(None) app = compute.APIRouter(manager) request = webob.Request.blank("/blah") response = request.get_response(app) self.assertEqual(404, response.status_int) def test_get_resources(self): res_ext = base_extensions.ResourceExtension('tweedles', StubController(response_body)) manager = StubExtensionManager(res_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles") response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(response_body, response.body) def test_get_resources_with_controller(self): res_ext = base_extensions.ResourceExtension('tweedles', StubController(response_body)) manager = StubExtensionManager(res_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles") response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(response_body, response.body) def test_bad_request(self): res_ext = base_extensions.ResourceExtension('tweedles', StubController(response_body)) manager = StubExtensionManager(res_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles") request.method = "POST" response = request.get_response(app) self.assertEqual(400, response.status_int) self.assertEqual('application/json', response.content_type) body = jsonutils.loads(response.body) expected = { "badRequest": { "message": "All aboard the fail train!", "code": 400 } } self.assertThat(expected, matchers.DictMatches(body)) def test_non_exist_resource(self): res_ext = base_extensions.ResourceExtension('tweedles', StubController(response_body)) manager = StubExtensionManager(res_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles/1") response = request.get_response(app) self.assertEqual(404, response.status_int) self.assertEqual('application/json', response.content_type) body = jsonutils.loads(response.body) expected = { "itemNotFound": { "message": "The resource could not be found.", "code": 404 } } self.assertThat(expected, matchers.DictMatches(body)) class InvalidExtension(object): alias = "THIRD" class ExtensionManagerTest(ExtensionTestCase): response_body = "Try to say this Mr. Knox, sir..." def test_get_resources(self): app = compute.APIRouter() request = webob.Request.blank("/fake/foxnsocks") response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(response_body, response.body) def test_invalid_extensions(self): # Don't need the serialization middleware here because we're # not testing any serialization app = compute.APIRouter() ext_mgr = compute_extensions.ExtensionManager() ext_mgr.register(InvalidExtension()) self.assertTrue(ext_mgr.is_loaded('FOXNSOX')) self.assertFalse(ext_mgr.is_loaded('THIRD')) class ActionExtensionTest(ExtensionTestCase): def _send_server_action_request(self, url, body): app = compute.APIRouter(init_only=('servers',)) request = webob.Request.blank(url) request.method = 'POST' request.content_type = 'application/json' request.body = jsonutils.dumps(body) response = request.get_response(app) return response def test_extended_action(self): body = dict(add_tweedle=dict(name="test")) url = "/fake/servers/abcd/action" response = self._send_server_action_request(url, body) self.assertEqual(200, response.status_int) self.assertEqual("Tweedle Beetle Added.", response.body) body = dict(delete_tweedle=dict(name="test")) response = self._send_server_action_request(url, body) self.assertEqual(200, response.status_int) self.assertEqual("Tweedle Beetle Deleted.", response.body) def test_invalid_action(self): body = dict(blah=dict(name="test")) # Doesn't exist url = "/fake/servers/abcd/action" response = self._send_server_action_request(url, body) self.assertEqual(400, response.status_int) self.assertEqual('application/json', response.content_type) body = jsonutils.loads(response.body) expected = { "badRequest": { "message": "There is no such action: blah", "code": 400 } } self.assertThat(expected, matchers.DictMatches(body)) def test_non_exist_action(self): body = dict(blah=dict(name="test")) url = "/fake/fdsa/1/action" response = self._send_server_action_request(url, body) self.assertEqual(404, response.status_int) def test_failed_action(self): body = dict(fail=dict(name="test")) url = "/fake/servers/abcd/action" response = self._send_server_action_request(url, body) self.assertEqual(400, response.status_int) self.assertEqual('application/json', response.content_type) body = jsonutils.loads(response.body) expected = { "badRequest": { "message": "Tweedle fail", "code": 400 } } self.assertThat(expected, matchers.DictMatches(body)) class RequestExtensionTest(ExtensionTestCase): def test_get_resources_with_stub_mgr(self): class GooGoose(wsgi.Controller): @wsgi.extends def show(self, req, resp_obj, id): # only handle JSON responses resp_obj.obj['flavor']['googoose'] = req.GET.get('chewing') req_ext = base_extensions.ControllerExtension( StubControllerExtension(), 'flavors', GooGoose()) manager = StubExtensionManager(None, None, None, req_ext) app = fakes.wsgi_app(ext_mgr=manager) request = webob.Request.blank("/v2/fake/flavors/1?chewing=bluegoo") request.environ['api.version'] = '2' response = request.get_response(app) self.assertEqual(200, response.status_int) response_data = jsonutils.loads(response.body) self.assertEqual('bluegoo', response_data['flavor']['googoose']) def test_get_resources_with_mgr(self): app = fakes.wsgi_app(init_only=('flavors',)) request = webob.Request.blank("/v2/fake/flavors/1?chewing=newblue") request.environ['api.version'] = '2' response = request.get_response(app) self.assertEqual(200, response.status_int) response_data = jsonutils.loads(response.body) self.assertEqual('newblue', response_data['flavor']['googoose']) self.assertEqual("Pig Bands!", response_data['big_bands']) class ControllerExtensionTest(ExtensionTestCase): def test_controller_extension_early(self): controller = StubController(response_body) res_ext = base_extensions.ResourceExtension('tweedles', controller) ext_controller = StubEarlyExtensionController(extension_body) extension = StubControllerExtension() cont_ext = base_extensions.ControllerExtension(extension, 'tweedles', ext_controller) manager = StubExtensionManager(resource_ext=res_ext, controller_ext=cont_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles") response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(extension_body, response.body) def test_controller_extension_late(self): # Need a dict for the body to convert to a ResponseObject controller = StubController(dict(foo=response_body)) res_ext = base_extensions.ResourceExtension('tweedles', controller) ext_controller = StubLateExtensionController(extension_body) extension = StubControllerExtension() cont_ext = base_extensions.ControllerExtension(extension, 'tweedles', ext_controller) manager = StubExtensionManager(resource_ext=res_ext, controller_ext=cont_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles") response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(extension_body, response.body) def test_controller_extension_late_inherited_resource(self): # Need a dict for the body to convert to a ResponseObject controller = StubController(dict(foo=response_body)) parent_ext = base_extensions.ResourceExtension('tweedles', controller) ext_controller = StubLateExtensionController(extension_body) extension = StubControllerExtension() cont_ext = base_extensions.ControllerExtension(extension, 'tweedles', ext_controller) manager = StubExtensionManager(resource_ext=parent_ext, controller_ext=cont_ext) child_ext = base_extensions.ResourceExtension('beetles', controller, inherits='tweedles') manager.extra_resource_ext = child_ext app = compute.APIRouter(manager) request = webob.Request.blank("/fake/beetles") response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(extension_body, response.body) def test_controller_action_extension_early(self): controller = StubActionController(response_body) actions = dict(action='POST') res_ext = base_extensions.ResourceExtension('tweedles', controller, member_actions=actions) ext_controller = StubEarlyExtensionController(extension_body) extension = StubControllerExtension() cont_ext = base_extensions.ControllerExtension(extension, 'tweedles', ext_controller) manager = StubExtensionManager(resource_ext=res_ext, controller_ext=cont_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles/foo/action") request.method = 'POST' request.headers['Content-Type'] = 'application/json' request.body = jsonutils.dumps(dict(fooAction=True)) response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(extension_body, response.body) def test_controller_action_extension_late(self): # Need a dict for the body to convert to a ResponseObject controller = StubActionController(dict(foo=response_body)) actions = dict(action='POST') res_ext = base_extensions.ResourceExtension('tweedles', controller, member_actions=actions) ext_controller = StubLateExtensionController(extension_body) extension = StubControllerExtension() cont_ext = base_extensions.ControllerExtension(extension, 'tweedles', ext_controller) manager = StubExtensionManager(resource_ext=res_ext, controller_ext=cont_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/tweedles/foo/action") request.method = 'POST' request.headers['Content-Type'] = 'application/json' request.body = jsonutils.dumps(dict(fooAction=True)) response = request.get_response(app) self.assertEqual(200, response.status_int) self.assertEqual(extension_body, response.body) class ExtensionsXMLSerializerTest(test.TestCase): def test_serialize_extension(self): serializer = base_extensions.ExtensionTemplate() data = {'extension': { 'name': 'ext1', 'namespace': 'http://docs.rack.com/servers/api/ext/pie/v1.0', 'alias': 'RS-PIE', 'updated': '2011-01-22T13:25:27-06:00', 'description': 'Adds the capability to share an image.', 'links': [{'rel': 'describedby', 'type': 'application/pdf', 'href': 'http://docs.rack.com/servers/api/ext/cs.pdf'}, {'rel': 'describedby', 'type': 'application/vnd.sun.wadl+xml', 'href': 'http://docs.rack.com/servers/api/ext/cs.wadl'}]}} xml = serializer.serialize(data) root = etree.XML(xml) ext_dict = data['extension'] self.assertEqual(root.findtext('{0}description'.format(NS)), ext_dict['description']) for key in ['name', 'namespace', 'alias', 'updated']: self.assertEqual(root.get(key), ext_dict[key]) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(ext_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) xmlutil.validate_schema(root, 'extension') def test_serialize_extensions(self): serializer = base_extensions.ExtensionsTemplate() data = {"extensions": [{ "name": "Public Image Extension", "namespace": "http://foo.com/api/ext/pie/v1.0", "alias": "RS-PIE", "updated": "2011-01-22T13:25:27-06:00", "description": "Adds the capability to share an image.", "links": [{"rel": "describedby", "type": "application/pdf", "type": "application/vnd.sun.wadl+xml", "href": "http://foo.com/api/ext/cs-pie.pdf"}, {"rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": "http://foo.com/api/ext/cs-pie.wadl"}]}, {"name": "Cloud Block Storage", "namespace": "http://foo.com/api/ext/cbs/v1.0", "alias": "RS-CBS", "updated": "2011-01-12T11:22:33-06:00", "description": "Allows mounting cloud block storage.", "links": [{"rel": "describedby", "type": "application/pdf", "href": "http://foo.com/api/ext/cs-cbs.pdf"}, {"rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": "http://foo.com/api/ext/cs-cbs.wadl"}]}]} xml = serializer.serialize(data) root = etree.XML(xml) ext_elems = root.findall('{0}extension'.format(NS)) self.assertEqual(len(ext_elems), 2) for i, ext_elem in enumerate(ext_elems): ext_dict = data['extensions'][i] self.assertEqual(ext_elem.findtext('{0}description'.format(NS)), ext_dict['description']) for key in ['name', 'namespace', 'alias', 'updated']: self.assertEqual(ext_elem.get(key), ext_dict[key]) link_nodes = ext_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(ext_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) xmlutil.validate_schema(root, 'extensions') class ExtensionControllerIdFormatTest(test.TestCase): def _bounce_id(self, test_id): class BounceController(object): def show(self, req, id): return id res_ext = base_extensions.ResourceExtension('bounce', BounceController()) manager = StubExtensionManager(res_ext) app = compute.APIRouter(manager) request = webob.Request.blank("/fake/bounce/%s" % test_id) response = request.get_response(app) return response.body def test_id_with_xml_format(self): result = self._bounce_id('foo.xml') self.assertEqual(result, 'foo') def test_id_with_json_format(self): result = self._bounce_id('foo.json') self.assertEqual(result, 'foo') def test_id_with_bad_format(self): result = self._bounce_id('foo.bad') self.assertEqual(result, 'foo.bad') nova-2014.1/nova/tests/api/openstack/compute/contrib/0000775000175400017540000000000012323722546023671 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/contrib/test_fping.py0000664000175400017540000000725612323721477026421 0ustar jenkinsjenkins00000000000000# Copyright 2011 Grid Dynamics # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.contrib import fping from nova.api.openstack import extensions from nova import exception from nova import test from nova.tests.api.openstack import fakes import nova.utils FAKE_UUID = fakes.FAKE_UUID def execute(*cmd, **args): return "".join(["%s is alive" % ip for ip in cmd[1:]]) class FpingTest(test.TestCase): def setUp(self): super(FpingTest, self).setUp() self.flags(verbose=True, use_ipv6=False) return_server = fakes.fake_instance_get() return_servers = fakes.fake_instance_get_all_by_filters() self.stubs.Set(nova.db, "instance_get_all_by_filters", return_servers) self.stubs.Set(nova.db, "instance_get_by_uuid", return_server) self.stubs.Set(nova.utils, "execute", execute) self.stubs.Set(fping.FpingController, "check_fping", lambda self: None) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = fping.FpingController(self.ext_mgr) def test_fping_index(self): req = fakes.HTTPRequest.blank("/v2/1234/os-fping") res_dict = self.controller.index(req) self.assertIn("servers", res_dict) for srv in res_dict["servers"]: for key in "project_id", "id", "alive": self.assertIn(key, srv) def test_fping_index_policy(self): req = fakes.HTTPRequest.blank("/v2/1234/os-fping?all_tenants=1") self.assertRaises(exception.NotAuthorized, self.controller.index, req) req = fakes.HTTPRequest.blank("/v2/1234/os-fping?all_tenants=1") req.environ["nova.context"].is_admin = True res_dict = self.controller.index(req) self.assertIn("servers", res_dict) def test_fping_index_include(self): req = fakes.HTTPRequest.blank("/v2/1234/os-fping") res_dict = self.controller.index(req) ids = [srv["id"] for srv in res_dict["servers"]] req = fakes.HTTPRequest.blank("/v2/1234/os-fping?include=%s" % ids[0]) res_dict = self.controller.index(req) self.assertEqual(len(res_dict["servers"]), 1) self.assertEqual(res_dict["servers"][0]["id"], ids[0]) def test_fping_index_exclude(self): req = fakes.HTTPRequest.blank("/v2/1234/os-fping") res_dict = self.controller.index(req) ids = [srv["id"] for srv in res_dict["servers"]] req = fakes.HTTPRequest.blank("/v2/1234/os-fping?exclude=%s" % ",".join(ids[1:])) res_dict = self.controller.index(req) self.assertEqual(len(res_dict["servers"]), 1) self.assertEqual(res_dict["servers"][0]["id"], ids[0]) def test_fping_show(self): req = fakes.HTTPRequest.blank("/v2/1234/os-fping/%s" % FAKE_UUID) res_dict = self.controller.show(req, FAKE_UUID) self.assertIn("server", res_dict) srv = res_dict["server"] for key in "project_id", "id", "alive": self.assertIn(key, srv) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_attach_interfaces.py0000664000175400017540000002223712323721510030745 0ustar jenkinsjenkins00000000000000# Copyright 2012 SINA Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg from nova.api.openstack.compute.contrib import attach_interfaces from nova.compute import api as compute_api from nova import context from nova import exception from nova.network import api as network_api from nova.openstack.common import jsonutils from nova import test from nova.tests import fake_network_cache_model import webob from webob import exc CONF = cfg.CONF FAKE_UUID1 = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' FAKE_UUID2 = 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb' FAKE_PORT_ID1 = '11111111-1111-1111-1111-111111111111' FAKE_PORT_ID2 = '22222222-2222-2222-2222-222222222222' FAKE_PORT_ID3 = '33333333-3333-3333-3333-333333333333' FAKE_NET_ID1 = '44444444-4444-4444-4444-444444444444' FAKE_NET_ID2 = '55555555-5555-5555-5555-555555555555' FAKE_NET_ID3 = '66666666-6666-6666-6666-666666666666' port_data1 = { "id": FAKE_PORT_ID1, "network_id": FAKE_NET_ID1, "admin_state_up": True, "status": "ACTIVE", "mac_address": "aa:aa:aa:aa:aa:aa", "fixed_ips": ["10.0.1.2"], "device_id": FAKE_UUID1, } port_data2 = { "id": FAKE_PORT_ID2, "network_id": FAKE_NET_ID2, "admin_state_up": True, "status": "ACTIVE", "mac_address": "bb:bb:bb:bb:bb:bb", "fixed_ips": ["10.0.2.2"], "device_id": FAKE_UUID1, } port_data3 = { "id": FAKE_PORT_ID3, "network_id": FAKE_NET_ID3, "admin_state_up": True, "status": "ACTIVE", "mac_address": "bb:bb:bb:bb:bb:bb", "fixed_ips": ["10.0.2.2"], "device_id": '', } fake_networks = [FAKE_NET_ID1, FAKE_NET_ID2] ports = [port_data1, port_data2, port_data3] def fake_list_ports(self, *args, **kwargs): result = [] for port in ports: if port['device_id'] == kwargs['device_id']: result.append(port) return {'ports': result} def fake_show_port(self, context, port_id, **kwargs): for port in ports: if port['id'] == port_id: return {'port': port} def fake_attach_interface(self, context, instance, network_id, port_id, requested_ip='192.168.1.3'): if not network_id: # if no network_id is given when add a port to an instance, use the # first default network. network_id = fake_networks[0] if network_id == 'bad_id': raise exception.NetworkNotFound(network_id=network_id) if not port_id: port_id = ports[fake_networks.index(network_id)]['id'] vif = fake_network_cache_model.new_vif() vif['id'] = port_id vif['network']['id'] = network_id vif['network']['subnets'][0]['ips'][0]['address'] = requested_ip return vif def fake_detach_interface(self, context, instance, port_id): for port in ports: if port['id'] == port_id: return raise exception.PortNotFound(port_id=port_id) def fake_get_instance(self, context, intance_id, want_objects=False): return {} class InterfaceAttachTests(test.NoDBTestCase): def setUp(self): super(InterfaceAttachTests, self).setUp() self.flags(neutron_auth_strategy=None) self.flags(neutron_url='http://anyhost/') self.flags(neutron_url_timeout=30) self.stubs.Set(network_api.API, 'show_port', fake_show_port) self.stubs.Set(network_api.API, 'list_ports', fake_list_ports) self.stubs.Set(compute_api.API, 'get', fake_get_instance) self.context = context.get_admin_context() self.expected_show = {'interfaceAttachment': {'net_id': FAKE_NET_ID1, 'port_id': FAKE_PORT_ID1, 'mac_addr': port_data1['mac_address'], 'port_state': port_data1['status'], 'fixed_ips': port_data1['fixed_ips'], }} def test_show(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/show') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.show(req, FAKE_UUID1, FAKE_PORT_ID1) self.assertEqual(self.expected_show, result) def test_show_invalid(self): attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/show') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, attachments.show, req, FAKE_UUID2, FAKE_PORT_ID1) def test_delete(self): self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/delete') req.method = 'DELETE' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.delete(req, FAKE_UUID1, FAKE_PORT_ID1) self.assertEqual('202 Accepted', result.status) def test_delete_interface_not_found(self): self.stubs.Set(compute_api.API, 'detach_interface', fake_detach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/delete') req.method = 'DELETE' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, attachments.delete, req, FAKE_UUID1, 'invaid-port-id') def test_attach_interface_without_network_id(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.create(req, FAKE_UUID1, jsonutils.loads(req.body)) self.assertEqual(result['interfaceAttachment']['net_id'], FAKE_NET_ID1) def test_attach_interface_with_network_id(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interfaceAttachment': {'net_id': FAKE_NET_ID2}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = attachments.create(req, FAKE_UUID1, jsonutils.loads(req.body)) self.assertEqual(result['interfaceAttachment']['net_id'], FAKE_NET_ID2) def test_attach_interface_with_port_and_network_id(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interfaceAttachment': {'port_id': FAKE_PORT_ID1, 'net_id': FAKE_NET_ID2}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPBadRequest, attachments.create, req, FAKE_UUID1, jsonutils.loads(req.body)) def test_attach_interface_with_invalid_data(self): self.stubs.Set(compute_api.API, 'attach_interface', fake_attach_interface) attachments = attach_interfaces.InterfaceAttachmentController() req = webob.Request.blank('/v2/fake/os-interfaces/attach') req.method = 'POST' req.body = jsonutils.dumps({'interfaceAttachment': {'net_id': 'bad_id'}}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPBadRequest, attachments.create, req, FAKE_UUID1, jsonutils.loads(req.body)) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_networks.py0000664000175400017540000004045312323721477027166 0ustar jenkinsjenkins00000000000000# Copyright 2011 Grid Dynamics # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy import math import uuid import netaddr from oslo.config import cfg import webob from nova.api.openstack.compute.contrib import networks_associate from nova.api.openstack.compute.contrib import os_networks as networks import nova.context from nova import exception from nova import test from nova.tests.api.openstack import fakes import nova.utils CONF = cfg.CONF FAKE_NETWORKS = [ { 'bridge': 'br100', 'vpn_public_port': 1000, 'dhcp_start': '10.0.0.3', 'bridge_interface': 'eth0', 'updated_at': '2011-08-16 09:26:13.048257', 'id': 1, 'uuid': '20c8acc0-f747-4d71-a389-46d078ebf047', 'cidr_v6': None, 'deleted_at': None, 'gateway': '10.0.0.1', 'label': 'mynet_0', 'project_id': '1234', 'rxtx_base': None, 'vpn_private_address': '10.0.0.2', 'deleted': False, 'vlan': 100, 'broadcast': '10.0.0.7', 'netmask': '255.255.255.248', 'injected': False, 'cidr': '10.0.0.0/29', 'vpn_public_address': '127.0.0.1', 'multi_host': False, 'dns1': None, 'dns2': None, 'host': 'nsokolov-desktop', 'gateway_v6': None, 'netmask_v6': None, 'priority': None, 'created_at': '2011-08-15 06:19:19.387525', }, { 'bridge': 'br101', 'vpn_public_port': 1001, 'dhcp_start': '10.0.0.11', 'bridge_interface': 'eth0', 'updated_at': None, 'id': 2, 'cidr_v6': None, 'uuid': '20c8acc0-f747-4d71-a389-46d078ebf000', 'deleted_at': None, 'gateway': '10.0.0.9', 'label': 'mynet_1', 'project_id': None, 'vpn_private_address': '10.0.0.10', 'deleted': False, 'vlan': 101, 'broadcast': '10.0.0.15', 'rxtx_base': None, 'netmask': '255.255.255.248', 'injected': False, 'cidr': '10.0.0.10/29', 'vpn_public_address': None, 'multi_host': False, 'dns1': None, 'dns2': None, 'host': None, 'gateway_v6': None, 'netmask_v6': None, 'priority': None, 'created_at': '2011-08-15 06:19:19.885495', }, ] FAKE_USER_NETWORKS = [ { 'id': 1, 'cidr': '10.0.0.0/29', 'netmask': '255.255.255.248', 'gateway': '10.0.0.1', 'broadcast': '10.0.0.7', 'dns1': None, 'dns2': None, 'cidr_v6': None, 'gateway_v6': None, 'label': 'mynet_0', 'netmask_v6': None, 'uuid': '20c8acc0-f747-4d71-a389-46d078ebf047', }, { 'id': 2, 'cidr': '10.0.0.10/29', 'netmask': '255.255.255.248', 'gateway': '10.0.0.9', 'broadcast': '10.0.0.15', 'dns1': None, 'dns2': None, 'cidr_v6': None, 'gateway_v6': None, 'label': 'mynet_1', 'netmask_v6': None, 'uuid': '20c8acc0-f747-4d71-a389-46d078ebf000', }, ] NEW_NETWORK = { "network": { "bridge_interface": "eth0", "cidr": "10.20.105.0/24", "label": "new net 111", "vlan_start": 111, } } class FakeNetworkAPI(object): _sentinel = object() _vlan_is_disabled = False def __init__(self): self.networks = copy.deepcopy(FAKE_NETWORKS) def disable_vlan(self): self._vlan_is_disabled = True def delete(self, context, network_id): for i, network in enumerate(self.networks): if network['id'] == network_id: del self.networks[0] return True raise exception.NetworkNotFoundForUUID(uuid=network_id) def disassociate(self, context, network_uuid): for network in self.networks: if network.get('uuid') == network_uuid: network['project_id'] = None return True raise exception.NetworkNotFound(network_id=network_uuid) def associate(self, context, network_uuid, host=_sentinel, project=_sentinel): for network in self.networks: if network.get('uuid') == network_uuid: if host is not FakeNetworkAPI._sentinel: network['host'] = host if project is not FakeNetworkAPI._sentinel: network['project_id'] = project return True raise exception.NetworkNotFound(network_id=network_uuid) def add_network_to_project(self, context, project_id, network_uuid=None): if self._vlan_is_disabled: raise NotImplementedError() if network_uuid: for network in self.networks: if network.get('project_id', None) is None: network['project_id'] = project_id return return for network in self.networks: if network.get('uuid') == network_uuid: network['project_id'] = project_id return def get_all(self, context): return self._fake_db_network_get_all(context, project_only=True) def _fake_db_network_get_all(self, context, project_only="allow_none"): project_id = context.project_id nets = self.networks if nova.context.is_user_context(context) and project_only: if project_only == 'allow_none': nets = [n for n in self.networks if (n['project_id'] == project_id or n['project_id'] is None)] else: nets = [n for n in self.networks if n['project_id'] == project_id] return nets def get(self, context, network_id): for network in self.networks: if network.get('uuid') == network_id: return network raise exception.NetworkNotFound(network_id=network_id) def create(self, context, **kwargs): subnet_bits = int(math.ceil(math.log(kwargs.get( 'network_size', CONF.network_size), 2))) fixed_net_v4 = netaddr.IPNetwork(kwargs['cidr']) prefixlen_v4 = 32 - subnet_bits subnets_v4 = list(fixed_net_v4.subnet( prefixlen_v4, count=kwargs.get('num_networks', CONF.num_networks))) new_networks = [] new_id = max((net['id'] for net in self.networks)) for index, subnet_v4 in enumerate(subnets_v4): new_id += 1 net = {'id': new_id, 'uuid': str(uuid.uuid4())} net['cidr'] = str(subnet_v4) net['netmask'] = str(subnet_v4.netmask) net['gateway'] = kwargs.get('gateway') or str(subnet_v4[1]) net['broadcast'] = str(subnet_v4.broadcast) net['dhcp_start'] = str(subnet_v4[2]) for key in FAKE_NETWORKS[0].iterkeys(): net.setdefault(key, kwargs.get(key)) new_networks.append(net) self.networks += new_networks return new_networks class NetworksTest(test.NoDBTestCase): def setUp(self): super(NetworksTest, self).setUp() self.fake_network_api = FakeNetworkAPI() self.controller = networks.NetworkController( self.fake_network_api) self.associate_controller = networks_associate\ .NetworkAssociateActionController(self.fake_network_api) fakes.stub_out_networking(self.stubs) nova.utils.reset_is_neutron() fakes.stub_out_rate_limiting(self.stubs) @staticmethod def network_uuid_to_id(network): network['id'] = network['uuid'] del network['uuid'] def test_network_list_all_as_user(self): self.maxDiff = None req = fakes.HTTPRequest.blank('/v2/1234/os-networks') res_dict = self.controller.index(req) self.assertEqual(res_dict, {'networks': []}) project_id = req.environ["nova.context"].project_id cxt = req.environ["nova.context"] uuid = FAKE_NETWORKS[0]['uuid'] self.fake_network_api.associate(context=cxt, network_uuid=uuid, project=project_id) res_dict = self.controller.index(req) expected = [FAKE_USER_NETWORKS[0]] for network in expected: self.network_uuid_to_id(network) self.assertEqual(res_dict, {'networks': expected}) def test_network_list_all_as_admin(self): req = fakes.HTTPRequest.blank('/v2/1234/os-networks') req.environ["nova.context"].is_admin = True res_dict = self.controller.index(req) expected = copy.deepcopy(FAKE_NETWORKS) for network in expected: self.network_uuid_to_id(network) self.assertEqual(res_dict, {'networks': expected}) def test_network_disassociate(self): uuid = FAKE_NETWORKS[0]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) res = self.controller._disassociate_host_and_project( req, uuid, {'disassociate': None}) self.assertEqual(res.status_int, 202) self.assertIsNone(self.fake_network_api.networks[0]['project_id']) self.assertIsNone(self.fake_network_api.networks[0]['host']) def test_network_disassociate_host_only(self): uuid = FAKE_NETWORKS[0]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) res = self.associate_controller._disassociate_host_only( req, uuid, {'disassociate_host': None}) self.assertEqual(res.status_int, 202) self.assertIsNotNone(self.fake_network_api.networks[0]['project_id']) self.assertIsNone(self.fake_network_api.networks[0]['host']) def test_network_disassociate_project_only(self): uuid = FAKE_NETWORKS[0]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) res = self.associate_controller._disassociate_project_only( req, uuid, {'disassociate_project': None}) self.assertEqual(res.status_int, 202) self.assertIsNone(self.fake_network_api.networks[0]['project_id']) self.assertIsNotNone(self.fake_network_api.networks[0]['host']) def test_network_disassociate_not_found(self): req = fakes.HTTPRequest.blank('/v2/1234/os-networks/100/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller._disassociate_host_and_project, req, 100, {'disassociate': None}) def test_network_get_as_user(self): uuid = FAKE_USER_NETWORKS[0]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s' % uuid) res_dict = self.controller.show(req, uuid) expected = {'network': copy.deepcopy(FAKE_USER_NETWORKS[0])} self.network_uuid_to_id(expected['network']) self.assertEqual(res_dict, expected) def test_network_get_as_admin(self): uuid = FAKE_NETWORKS[0]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s' % uuid) req.environ["nova.context"].is_admin = True res_dict = self.controller.show(req, uuid) expected = {'network': copy.deepcopy(FAKE_NETWORKS[0])} self.network_uuid_to_id(expected['network']) self.assertEqual(res_dict, expected) def test_network_get_not_found(self): req = fakes.HTTPRequest.blank('/v2/1234/os-networks/100') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 100) def test_network_delete(self): uuid = FAKE_NETWORKS[0]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s' % uuid) res = self.controller.delete(req, 1) self.assertEqual(res.status_int, 202) def test_network_delete_not_found(self): req = fakes.HTTPRequest.blank('/v2/1234/os-networks/100') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 100) def test_network_add_vlan_disabled(self): self.fake_network_api.disable_vlan() uuid = FAKE_NETWORKS[1]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/add') self.assertRaises(webob.exc.HTTPNotImplemented, self.controller.add, req, {'id': uuid}) def test_network_add(self): uuid = FAKE_NETWORKS[1]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/add') res = self.controller.add(req, {'id': uuid}) self.assertEqual(res.status_int, 202) req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s' % uuid) req.environ["nova.context"].is_admin = True res_dict = self.controller.show(req, uuid) self.assertEqual(res_dict['network']['project_id'], 'fake') def test_network_associate_with_host(self): uuid = FAKE_NETWORKS[1]['uuid'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) res = self.associate_controller._associate_host( req, uuid, {'associate_host': "TestHost"}) self.assertEqual(res.status_int, 202) req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s' % uuid) req.environ["nova.context"].is_admin = True res_dict = self.controller.show(req, uuid) self.assertEqual(res_dict['network']['host'], 'TestHost') def test_network_create(self): req = fakes.HTTPRequest.blank('/v2/1234/os-networks') res_dict = self.controller.create(req, NEW_NETWORK) self.assertIn('network', res_dict) uuid = res_dict['network']['id'] req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s' % uuid) res_dict = self.controller.show(req, uuid) self.assertTrue(res_dict['network']['label']. startswith(NEW_NETWORK['network']['label'])) def test_network_create_large(self): req = fakes.HTTPRequest.blank('/v2/1234/os-networks') large_network = copy.deepcopy(NEW_NETWORK) large_network['network']['cidr'] = '128.0.0.0/4' res_dict = self.controller.create(req, large_network) self.assertEqual(res_dict['network']['cidr'], large_network['network']['cidr']) def test_network_neutron_associate_not_implemented(self): uuid = FAKE_NETWORKS[1]['uuid'] self.flags(network_api_class='nova.network.neutronv2.api.API') assoc_ctrl = networks_associate.NetworkAssociateActionController() req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) self.assertRaises(webob.exc.HTTPNotImplemented, assoc_ctrl._associate_host, req, uuid, {'associate_host': "TestHost"}) def test_network_neutron_disassociate_project_not_implemented(self): uuid = FAKE_NETWORKS[1]['uuid'] self.flags(network_api_class='nova.network.neutronv2.api.API') assoc_ctrl = networks_associate.NetworkAssociateActionController() req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) self.assertRaises(webob.exc.HTTPNotImplemented, assoc_ctrl._disassociate_project_only, req, uuid, {'disassociate_project': None}) def test_network_neutron_disassociate_host_not_implemented(self): uuid = FAKE_NETWORKS[1]['uuid'] self.flags(network_api_class='nova.network.neutronv2.api.API') assoc_ctrl = networks_associate.NetworkAssociateActionController() req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) self.assertRaises(webob.exc.HTTPNotImplemented, assoc_ctrl._disassociate_host_only, req, uuid, {'disassociate_host': None}) def test_network_neutron_disassociate_not_implemented(self): uuid = FAKE_NETWORKS[1]['uuid'] self.flags(network_api_class='nova.network.neutronv2.api.API') controller = networks.NetworkController() req = fakes.HTTPRequest.blank('/v2/1234/os-networks/%s/action' % uuid) self.assertRaises(webob.exc.HTTPNotImplemented, controller._disassociate_host_and_project, req, uuid, {'disassociate': None}) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_admin_actions.py0000664000175400017540000006134012323721477030120 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack import common from nova.api.openstack.compute.contrib import admin_actions from nova.compute import vm_states import nova.context from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance class CommonMixin(object): def setUp(self): super(CommonMixin, self).setUp() self.controller = admin_actions.AdminActionsController() self.compute_api = self.controller.compute_api self.context = nova.context.RequestContext('fake', 'fake') def _fake_controller(*args, **kwargs): return self.controller self.stubs.Set(admin_actions, 'AdminActionsController', _fake_controller) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Admin_actions']) self.app = fakes.wsgi_app(init_only=('servers',), fake_auth_context=self.context) self.mox.StubOutWithMock(self.compute_api, 'get') def _make_request(self, url, body): req = webob.Request.blank('/v2/fake' + url) req.method = 'POST' req.body = jsonutils.dumps(body) req.content_type = 'application/json' return req.get_response(self.app) def _stub_instance_get(self, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() instance = fake_instance.fake_db_instance( id=1, uuid=uuid, vm_state=vm_states.ACTIVE, task_state=None, launched_at=timeutils.utcnow()) instance = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), instance) self.compute_api.get(self.context, uuid, want_objects=True).AndReturn(instance) return instance def _stub_instance_get_failure(self, exc_info, uuid=None): if uuid is None: uuid = uuidutils.generate_uuid() self.compute_api.get(self.context, uuid, want_objects=True).AndRaise(exc_info) return uuid def _test_non_existing_instance(self, action, body_map=None): uuid = uuidutils.generate_uuid() self._stub_instance_get_failure( exception.InstanceNotFound(instance_id=uuid), uuid=uuid) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % uuid, {action: body_map.get(action)}) self.assertEqual(404, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_action(self, action, body=None, method=None): if method is None: method = action instance = self._stub_instance_get() getattr(self.compute_api, method)(self.context, instance) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: None}) self.assertEqual(202, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_invalid_state(self, action, method=None, body_map=None, compute_api_args_map=None): if method is None: method = action if body_map is None: body_map = {} if compute_api_args_map is None: compute_api_args_map = {} instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(self.compute_api, method)(self.context, instance, *args, **kwargs).AndRaise( exception.InstanceInvalidState( attr='vm_state', instance_uuid=instance['uuid'], state='foo', method=method)) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: body_map.get(action)}) self.assertEqual(409, res.status_int) self.assertIn("Cannot \'%s\' while instance" % action, res.body) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_not_implemented_state(self, action, method=None, error_text=None): if method is None: method = action body_map = {} compute_api_args_map = {} instance = self._stub_instance_get() args, kwargs = compute_api_args_map.get(action, ((), {})) getattr(self.compute_api, method)(self.context, instance, *args, **kwargs).AndRaise( NotImplementedError()) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: body_map.get(action)}) self.assertEqual(501, res.status_int) self.assertIn(error_text, res.body) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() def _test_locked_instance(self, action, method=None): if method is None: method = action instance = self._stub_instance_get() getattr(self.compute_api, method)(self.context, instance).AndRaise( exception.InstanceIsLocked(instance_uuid=instance['uuid'])) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {action: None}) self.assertEqual(409, res.status_int) # Do these here instead of tearDown because this method is called # more than once for the same test case self.mox.VerifyAll() self.mox.UnsetStubs() class AdminActionsTest(CommonMixin, test.NoDBTestCase): def test_actions(self): actions = ['pause', 'unpause', 'suspend', 'resume', 'migrate', 'resetNetwork', 'injectNetworkInfo', 'lock', 'unlock'] method_translations = {'migrate': 'resize', 'resetNetwork': 'reset_network', 'injectNetworkInfo': 'inject_network_info'} for action in actions: method = method_translations.get(action) self.mox.StubOutWithMock(self.compute_api, method or action) self._test_action(action, method=method) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def test_actions_raise_conflict_on_invalid_state(self): actions = ['pause', 'unpause', 'suspend', 'resume', 'migrate', 'os-migrateLive'] method_translations = {'migrate': 'resize', 'os-migrateLive': 'live_migrate'} body_map = {'os-migrateLive': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}} args_map = {'os-migrateLive': ((False, False, 'hostname'), {})} for action in actions: method = method_translations.get(action) self.mox.StubOutWithMock(self.compute_api, method or action) self._test_invalid_state(action, method=method, body_map=body_map, compute_api_args_map=args_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def test_actions_raise_on_not_implemented(self): tests = [ ('pause', 'Virt driver does not implement pause function.'), ('unpause', 'Virt driver does not implement unpause function.') ] for (action, error_text) in tests: self.mox.StubOutWithMock(self.compute_api, action) self._test_not_implemented_state(action, error_text=error_text) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def test_actions_with_non_existed_instance(self): actions = ['pause', 'unpause', 'suspend', 'resume', 'resetNetwork', 'injectNetworkInfo', 'lock', 'unlock', 'os-resetState', 'migrate', 'os-migrateLive'] body_map = {'os-resetState': {'state': 'active'}, 'os-migrateLive': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}} for action in actions: self._test_non_existing_instance(action, body_map=body_map) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def test_actions_with_locked_instance(self): actions = ['pause', 'unpause', 'suspend', 'resume', 'migrate', 'resetNetwork', 'injectNetworkInfo'] method_translations = {'migrate': 'resize', 'resetNetwork': 'reset_network', 'injectNetworkInfo': 'inject_network_info'} for action in actions: method = method_translations.get(action) self.mox.StubOutWithMock(self.compute_api, method or action) self._test_locked_instance(action, method=method) # Re-mock this. self.mox.StubOutWithMock(self.compute_api, 'get') def _test_migrate_exception(self, exc_info, expected_result): self.mox.StubOutWithMock(self.compute_api, 'resize') instance = self._stub_instance_get() self.compute_api.resize(self.context, instance).AndRaise(exc_info) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {'migrate': None}) self.assertEqual(expected_result, res.status_int) def _test_migrate_live_succeeded(self, param): self.mox.StubOutWithMock(self.compute_api, 'live_migrate') instance = self._stub_instance_get() self.compute_api.live_migrate(self.context, instance, False, False, 'hostname') self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {'os-migrateLive': param}) self.assertEqual(202, res.status_int) def test_migrate_live_enabled(self): param = {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False} self._test_migrate_live_succeeded(param) def test_migrate_live_enabled_with_string_param(self): param = {'host': 'hostname', 'block_migration': "False", 'disk_over_commit': "False"} self._test_migrate_live_succeeded(param) def test_migrate_live_missing_dict_param(self): body = {'os-migrateLive': {'dummy': 'hostname', 'block_migration': False, 'disk_over_commit': False}} res = self._make_request('/servers/FAKE/action', body) self.assertEqual(400, res.status_int) def test_migrate_live_with_invalid_block_migration(self): body = {'os-migrateLive': {'host': 'hostname', 'block_migration': "foo", 'disk_over_commit': False}} res = self._make_request('/servers/FAKE/action', body) self.assertEqual(400, res.status_int) def test_migrate_live_with_invalid_disk_over_commit(self): body = {'os-migrateLive': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': "foo"}} res = self._make_request('/servers/FAKE/action', body) self.assertEqual(400, res.status_int) def _test_migrate_live_failed_with_exception(self, fake_exc, uuid=None): self.mox.StubOutWithMock(self.compute_api, 'live_migrate') instance = self._stub_instance_get(uuid=uuid) self.compute_api.live_migrate(self.context, instance, False, False, 'hostname').AndRaise(fake_exc) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance.uuid, {'os-migrateLive': {'host': 'hostname', 'block_migration': False, 'disk_over_commit': False}}) self.assertEqual(400, res.status_int) self.assertIn(unicode(fake_exc), res.body) def test_migrate_live_compute_service_unavailable(self): self._test_migrate_live_failed_with_exception( exception.ComputeServiceUnavailable(host='host')) def test_migrate_live_invalid_hypervisor_type(self): self._test_migrate_live_failed_with_exception( exception.InvalidHypervisorType()) def test_migrate_live_unable_to_migrate_to_self(self): uuid = uuidutils.generate_uuid() self._test_migrate_live_failed_with_exception( exception.UnableToMigrateToSelf(instance_id=uuid, host='host'), uuid=uuid) def test_migrate_live_destination_hypervisor_too_old(self): self._test_migrate_live_failed_with_exception( exception.DestinationHypervisorTooOld()) def test_migrate_live_no_valid_host(self): self._test_migrate_live_failed_with_exception( exception.NoValidHost(reason='')) def test_migrate_live_invalid_local_storage(self): self._test_migrate_live_failed_with_exception( exception.InvalidLocalStorage(path='', reason='')) def test_migrate_live_invalid_shared_storage(self): self._test_migrate_live_failed_with_exception( exception.InvalidSharedStorage(path='', reason='')) def test_migrate_live_migration_pre_check_error(self): self._test_migrate_live_failed_with_exception( exception.MigrationPreCheckError(reason='')) def test_unlock_not_authorized(self): self.mox.StubOutWithMock(self.compute_api, 'unlock') instance = self._stub_instance_get() self.compute_api.unlock(self.context, instance).AndRaise( exception.PolicyNotAuthorized(action='unlock')) self.mox.ReplayAll() res = self._make_request('/servers/%s/action' % instance['uuid'], {'unlock': None}) self.assertEqual(403, res.status_int) class CreateBackupTests(CommonMixin, test.NoDBTestCase): def setUp(self): super(CreateBackupTests, self).setUp() self.mox.StubOutWithMock(common, 'check_img_metadata_properties_quota') self.mox.StubOutWithMock(self.compute_api, 'backup') def _make_url(self, uuid): return '/servers/%s/action' % uuid def test_create_backup_with_metadata(self): metadata = {'123': 'asdf'} body = { 'createBackup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, 'metadata': metadata, }, } image = dict(id='fake-image-id', status='ACTIVE', name='Backup 1', properties=metadata) common.check_img_metadata_properties_quota(self.context, metadata) instance = self._stub_instance_get() self.compute_api.backup(self.context, instance, 'Backup 1', 'daily', 1, extra_properties=metadata).AndReturn(image) self.mox.ReplayAll() res = self._make_request(self._make_url(instance['uuid']), body) self.assertEqual(202, res.status_int) self.assertIn('fake-image-id', res.headers['Location']) def test_create_backup_no_name(self): # Name is required for backups. body = { 'createBackup': { 'backup_type': 'daily', 'rotation': 1, }, } res = self._make_request(self._make_url('fake'), body) self.assertEqual(400, res.status_int) def test_create_backup_no_rotation(self): # Rotation is required for backup requests. body = { 'createBackup': { 'name': 'Backup 1', 'backup_type': 'daily', }, } res = self._make_request(self._make_url('fake'), body) self.assertEqual(400, res.status_int) 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, }, } res = self._make_request(self._make_url('fake'), body) self.assertEqual(400, res.status_int) def test_create_backup_no_backup_type(self): # Backup Type (daily or weekly) is required for backup requests. body = { 'createBackup': { 'name': 'Backup 1', 'rotation': 1, }, } res = self._make_request(self._make_url('fake'), body) self.assertEqual(400, res.status_int) def test_create_backup_bad_entity(self): body = {'createBackup': 'go'} res = self._make_request(self._make_url('fake'), body) self.assertEqual(400, res.status_int) 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, }, } image = dict(id='fake-image-id', status='ACTIVE', name='Backup 1', properties={}) common.check_img_metadata_properties_quota(self.context, {}) instance = self._stub_instance_get() self.compute_api.backup(self.context, instance, 'Backup 1', 'daily', 0, extra_properties={}).AndReturn(image) self.mox.ReplayAll() res = self._make_request(self._make_url(instance['uuid']), body) self.assertEqual(202, res.status_int) self.assertNotIn('Location', res.headers) def test_create_backup_rotation_is_positive(self): # The happy path for creating backups if rotation is positive. body = { 'createBackup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } image = dict(id='fake-image-id', status='ACTIVE', name='Backup 1', properties={}) common.check_img_metadata_properties_quota(self.context, {}) instance = self._stub_instance_get() self.compute_api.backup(self.context, instance, 'Backup 1', 'daily', 1, extra_properties={}).AndReturn(image) self.mox.ReplayAll() res = self._make_request(self._make_url(instance['uuid']), body) self.assertEqual(202, res.status_int) self.assertIn('fake-image-id', res.headers['Location']) def test_create_backup_raises_conflict_on_invalid_state(self): body_map = { 'createBackup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } args_map = { 'createBackup': ( ('Backup 1', 'daily', 1), {'extra_properties': {}} ), } common.check_img_metadata_properties_quota(self.context, {}) self._test_invalid_state('createBackup', method='backup', body_map=body_map, compute_api_args_map=args_map) def test_create_backup_with_non_existed_instance(self): body_map = { 'createBackup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } common.check_img_metadata_properties_quota(self.context, {}) self._test_non_existing_instance('createBackup', body_map=body_map) def test_create_backup_with_invalid_createBackup(self): body = { 'createBackupup': { 'name': 'Backup 1', 'backup_type': 'daily', 'rotation': 1, }, } res = self._make_request(self._make_url('fake'), body) self.assertEqual(400, res.status_int) class ResetStateTests(test.NoDBTestCase): def setUp(self): super(ResetStateTests, self).setUp() self.uuid = uuidutils.generate_uuid() self.admin_api = admin_actions.AdminActionsController() self.compute_api = self.admin_api.compute_api url = '/fake/servers/%s/action' % self.uuid self.request = fakes.HTTPRequest.blank(url) self.context = self.request.environ['nova.context'] def test_no_state(self): self.assertRaises(webob.exc.HTTPBadRequest, self.admin_api._reset_state, self.request, self.uuid, {"os-resetState": None}) def test_bad_state(self): self.assertRaises(webob.exc.HTTPBadRequest, self.admin_api._reset_state, self.request, self.uuid, {"os-resetState": {"state": "spam"}}) def test_no_instance(self): self.mox.StubOutWithMock(self.compute_api, 'get') exc = exception.InstanceNotFound(instance_id='inst_id') self.compute_api.get(self.context, self.uuid, want_objects=True).AndRaise(exc) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPNotFound, self.admin_api._reset_state, self.request, self.uuid, {"os-resetState": {"state": "active"}}) def _setup_mock(self, expected): instance = instance_obj.Instance() instance.uuid = self.uuid instance.vm_state = 'fake' instance.task_state = 'fake' instance.obj_reset_changes() self.mox.StubOutWithMock(instance, 'save') self.mox.StubOutWithMock(self.compute_api, 'get') def check_state(admin_state_reset=True): self.assertEqual(set(expected.keys()), instance.obj_what_changed()) for k, v in expected.items(): self.assertEqual(v, getattr(instance, k), "Instance.%s doesn't match" % k) instance.obj_reset_changes() self.compute_api.get(self.context, instance.uuid, want_objects=True).AndReturn(instance) instance.save(admin_state_reset=True).WithSideEffects(check_state) def test_reset_active(self): self._setup_mock(dict(vm_state=vm_states.ACTIVE, task_state=None)) self.mox.ReplayAll() body = {"os-resetState": {"state": "active"}} result = self.admin_api._reset_state(self.request, self.uuid, body) self.assertEqual(result.status_int, 202) def test_reset_error(self): self._setup_mock(dict(vm_state=vm_states.ERROR, task_state=None)) self.mox.ReplayAll() body = {"os-resetState": {"state": "error"}} result = self.admin_api._reset_state(self.request, self.uuid, body) self.assertEqual(result.status_int, 202) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_server_attributes.py0000664000175400017540000001146012323721477032742 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_server_attributes from nova import compute from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from oslo.config import cfg NAME_FMT = cfg.CONF.instance_name_template UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get(*args, **kwargs): fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj.Instance._from_db_object( args[1], instance_obj.Instance(), fakes.stub_instance(1, uuid=UUID3, host="host-fake", node="node-fake"), fields) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(1, uuid=UUID1, host="host-1", node="node-1"), fakes.stub_instance(2, uuid=UUID2, host="host-2", node="node-2") ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ExtendedServerAttributesTest(test.TestCase): content_type = 'application/json' prefix = 'OS-EXT-SRV-ATTR:' def setUp(self): super(ExtendedServerAttributesTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(db, 'instance_get_by_uuid', fake_compute_get) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Extended_server_attributes']) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertServerAttributes(self, server, host, node, instance_name): self.assertEqual(server.get('%shost' % self.prefix), host) self.assertEqual(server.get('%sinstance_name' % self.prefix), instance_name) self.assertEqual(server.get('%shypervisor_hostname' % self.prefix), node) def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertServerAttributes(self._get_server(res.body), host='host-fake', node='node-fake', instance_name=NAME_FMT % 1) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertServerAttributes(server, host='host-%s' % (i + 1), node='node-%s' % (i + 1), instance_name=NAME_FMT % (i + 1)) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v2/fake/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class ExtendedServerAttributesXmlTest(ExtendedServerAttributesTest): content_type = 'application/xml' ext = extended_server_attributes prefix = '{%s}' % ext.Extended_server_attributes.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py0000664000175400017540000000645612323721477027675 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, 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 lxml import etree import webob from nova.compute import flavors from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_FLAVORS = { 'flavor 1': { "flavorid": '1', "name": 'flavor 1', "memory_mb": '256', "root_gb": '10', "rxtx_factor": '1.0', }, 'flavor 2': { "flavorid": '2', "name": 'flavor 2', "memory_mb": '512', "root_gb": '10', "rxtx_factor": None, }, } def fake_flavor_get_by_flavor_id(flavorid, ctxt=None): return FAKE_FLAVORS['flavor %s' % flavorid] def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [ fake_flavor_get_by_flavor_id(1), fake_flavor_get_by_flavor_id(2) ] class FlavorRxtxTest(test.NoDBTestCase): content_type = 'application/json' prefix = '' def setUp(self): super(FlavorRxtxTest, self).setUp() ext = ('nova.api.openstack.compute.contrib' '.flavor_rxtx.Flavor_rxtx') self.flags(osapi_compute_extension=[ext]) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app()) return res def _get_flavor(self, body): return jsonutils.loads(body).get('flavor') def _get_flavors(self, body): return jsonutils.loads(body).get('flavors') def assertFlavorRxtx(self, flavor, rxtx): self.assertEqual(str(flavor.get('%srxtx_factor' % self.prefix)), rxtx) def test_show(self): url = '/v2/fake/flavors/1' res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertFlavorRxtx(self._get_flavor(res.body), '1.0') def test_detail(self): url = '/v2/fake/flavors/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) flavors = self._get_flavors(res.body) self.assertFlavorRxtx(flavors[0], '1.0') self.assertFlavorRxtx(flavors[1], '') class FlavorRxtxXmlTest(FlavorRxtxTest): content_type = 'application/xml' def _get_flavor(self, body): return etree.XML(body) def _get_flavors(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_quotas.py0000664000175400017540000006447012323721477026633 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import quotas from nova.api.openstack import extensions from nova.api.openstack import wsgi from nova import context as context_maker from nova import quota from nova import test from nova.tests.api.openstack import fakes def quota_set(id): return {'quota_set': {'id': id, 'metadata_items': 128, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'instances': 10, 'injected_files': 5, 'cores': 20, 'injected_file_content_bytes': 10240, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100, 'injected_file_path_bytes': 255}} class QuotaSetsTest(test.TestCase): def setUp(self): super(QuotaSetsTest, self).setUp() self.ext_mgr = self.mox.CreateMock(extensions.ExtensionManager) self.controller = quotas.QuotaSetsController(self.ext_mgr) def test_format_quota_set(self): raw_quota_set = { 'instances': 10, 'cores': 20, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_path_bytes': 255, 'injected_file_content_bytes': 10240, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100} quota_set = self.controller._format_quota_set('1234', raw_quota_set) qs = quota_set['quota_set'] self.assertEqual(qs['id'], '1234') self.assertEqual(qs['instances'], 10) self.assertEqual(qs['cores'], 20) self.assertEqual(qs['ram'], 51200) self.assertEqual(qs['floating_ips'], 10) self.assertEqual(qs['fixed_ips'], -1) self.assertEqual(qs['metadata_items'], 128) self.assertEqual(qs['injected_files'], 5) self.assertEqual(qs['injected_file_path_bytes'], 255) self.assertEqual(qs['injected_file_content_bytes'], 10240) self.assertEqual(qs['security_groups'], 10) self.assertEqual(qs['security_group_rules'], 20) self.assertEqual(qs['key_pairs'], 100) def test_quotas_defaults(self): uri = '/v2/fake_tenant/os-quota-sets/fake_tenant/defaults' req = fakes.HTTPRequest.blank(uri) res_dict = self.controller.defaults(req, 'fake_tenant') expected = {'quota_set': { 'id': 'fake_tenant', 'instances': 10, 'cores': 20, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_path_bytes': 255, 'injected_file_content_bytes': 10240, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} self.assertEqual(res_dict, expected) def test_quotas_show_as_admin(self): self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234', use_admin_context=True) res_dict = self.controller.show(req, 1234) self.assertEqual(res_dict, quota_set('1234')) def test_quotas_show_as_unauthorized_user(self): self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234') self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, req, 1234) def test_quotas_update_as_admin(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': 50, 'cores': 50, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100, 'fixed_ips': -1}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) res_dict = self.controller.update(req, 'update_me', body) self.assertEqual(res_dict, body) def test_quotas_update_zero_value_as_admin(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': 0, 'cores': 0, 'ram': 0, 'floating_ips': 0, 'fixed_ips': 0, 'metadata_items': 0, 'injected_files': 0, 'injected_file_content_bytes': 0, 'injected_file_path_bytes': 0, 'security_groups': 0, 'security_group_rules': 0, 'key_pairs': 100, 'fixed_ips': -1}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) res_dict = self.controller.update(req, 'update_me', body) self.assertEqual(res_dict, body) def test_quotas_update_as_user(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': 50, 'cores': 50, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me') self.assertRaises(webob.exc.HTTPForbidden, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_key(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances2': -2, 'cores': -2, 'ram': -2, 'floating_ips': -2, 'metadata_items': -2, 'injected_files': -2, 'injected_file_content_bytes': -2}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_limit(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': -2, 'cores': -2, 'ram': -2, 'floating_ips': -2, 'fixed_ips': -2, 'metadata_items': -2, 'injected_files': -2, 'injected_file_content_bytes': -2}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_empty_body(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_value_json_fromat_empty_string(self): expected_resp = {'quota_set': { 'instances': 50, 'cores': 50, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} # when PUT JSON format with empty string for quota body = {'quota_set': {'instances': 50, 'cores': 50, 'ram': '', 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() res_dict = self.controller.update(req, 'update_me', body) self.assertEqual(res_dict, expected_resp) def test_quotas_update_invalid_value_xml_fromat_empty_string(self): expected_resp = {'quota_set': { 'instances': 50, 'cores': 50, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} # when PUT XML format with empty string for quota body = {'quota_set': {'instances': 50, 'cores': 50, 'ram': {}, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() res_dict = self.controller.update(req, 'update_me', body) self.assertEqual(res_dict, expected_resp) def test_quotas_update_invalid_value_non_int(self): # when PUT non integer value body = {'quota_set': {'instances': test, 'cores': 50, 'ram': {}, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_value_with_float(self): # when PUT non integer value body = {'quota_set': {'instances': 50.5, 'cores': 50, 'ram': {}, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_update_invalid_value_with_unicode(self): # when PUT non integer value body = {'quota_set': {'instances': u'\u30aa\u30fc\u30d7\u30f3', 'cores': 50, 'ram': {}, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_delete_quotas_when_extension_not_loaded(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(False) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1234) def test_quotas_delete_as_unauthorized_user(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234') self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete, req, 1234) def test_quotas_delete_as_admin(self): context = context_maker.get_admin_context() self.req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234') self.req.environ['nova.context'] = context self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.mox.StubOutWithMock(quota.QUOTAS, "destroy_all_by_project") quota.QUOTAS.destroy_all_by_project(context, 1234) self.mox.ReplayAll() res = self.controller.delete(self.req, 1234) self.mox.VerifyAll() self.assertEqual(res.status_int, 202) class QuotaXMLSerializerTest(test.TestCase): def setUp(self): super(QuotaXMLSerializerTest, self).setUp() self.serializer = quotas.QuotaTemplate() self.deserializer = wsgi.XMLDeserializer() def test_serializer(self): exemplar = dict(quota_set=dict( id='project_id', metadata_items=10, injected_file_path_bytes=255, injected_file_content_bytes=20, ram=50, floating_ips=60, fixed_ips=-1, instances=70, injected_files=80, security_groups=10, security_group_rules=20, key_pairs=100, cores=90)) text = self.serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('quota_set', tree.tag) self.assertEqual('project_id', tree.get('id')) self.assertEqual(len(exemplar['quota_set']) - 1, len(tree)) for child in tree: self.assertIn(child.tag, exemplar['quota_set']) self.assertEqual(int(child.text), exemplar['quota_set'][child.tag]) def test_deserializer(self): exemplar = dict(quota_set=dict( metadata_items='10', injected_file_content_bytes='20', ram='50', floating_ips='60', fixed_ips='-1', instances='70', injected_files='80', security_groups='10', security_group_rules='20', key_pairs='100', cores='90')) intext = ("\n" '' '10' '20' '' '50' '60' '-1' '70' '80' '10' '20' '100' '90' '') result = self.deserializer.deserialize(intext)['body'] self.assertEqual(result, exemplar) fake_quotas = {'ram': {'limit': 51200, 'in_use': 12800, 'reserved': 12800}, 'cores': {'limit': 20, 'in_use': 10, 'reserved': 5}, 'instances': {'limit': 100, 'in_use': 0, 'reserved': 0}} def fake_get_quotas(self, context, id, user_id=None, usages=False): if usages: return fake_quotas else: return dict((k, v['limit']) for k, v in fake_quotas.items()) class ExtendedQuotasTest(test.TestCase): def setUp(self): super(ExtendedQuotasTest, self).setUp() self.ext_mgr = self.mox.CreateMock(extensions.ExtensionManager) self.controller = quotas.QuotaSetsController(self.ext_mgr) def test_quotas_update_exceed_in_used(self): body = {'quota_set': {'cores': 10}} self.stubs.Set(quotas.QuotaSetsController, '_get_quotas', fake_get_quotas) req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_quotas_force_update_exceed_in_used(self): self.stubs.Set(quotas.QuotaSetsController, '_get_quotas', fake_get_quotas) req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me', use_admin_context=True) expected = {'quota_set': {'ram': 25600, 'instances': 200, 'cores': 10}} body = {'quota_set': {'ram': 25600, 'instances': 200, 'cores': 10, 'force': 'True'}} fake_quotas.get('ram')['limit'] = 25600 fake_quotas.get('cores')['limit'] = 10 fake_quotas.get('instances')['limit'] = 200 self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() res_dict = self.controller.update(req, 'update_me', body) self.assertEqual(res_dict, expected) class UserQuotasTest(test.TestCase): def setUp(self): super(UserQuotasTest, self).setUp() self.ext_mgr = self.mox.CreateMock(extensions.ExtensionManager) self.controller = quotas.QuotaSetsController(self.ext_mgr) def test_user_quotas_show_as_admin(self): self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234?user_id=1', use_admin_context=True) res_dict = self.controller.show(req, 1234) self.assertEqual(res_dict, quota_set('1234')) def test_user_quotas_show_as_unauthorized_user(self): self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234?user_id=1') self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, req, 1234) def test_user_quotas_update_as_admin(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': 10, 'cores': 20, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'injected_file_path_bytes': 255, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} url = '/v2/fake4/os-quota-sets/update_me?user_id=1' req = fakes.HTTPRequest.blank(url, use_admin_context=True) res_dict = self.controller.update(req, 'update_me', body) self.assertEqual(res_dict, body) def test_user_quotas_update_as_user(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': 10, 'cores': 20, 'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'metadata_items': 128, 'injected_files': 5, 'injected_file_content_bytes': 10240, 'security_groups': 10, 'security_group_rules': 20, 'key_pairs': 100}} url = '/v2/fake4/os-quota-sets/update_me?user_id=1' req = fakes.HTTPRequest.blank(url) self.assertRaises(webob.exc.HTTPForbidden, self.controller.update, req, 'update_me', body) def test_user_quotas_update_exceed_project(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() body = {'quota_set': {'instances': 20}} url = '/v2/fake4/os-quota-sets/update_me?user_id=1' req = fakes.HTTPRequest.blank(url, use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'update_me', body) def test_delete_user_quotas_when_extension_not_loaded(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(False) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234?user_id=1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1234) def test_user_quotas_delete_as_unauthorized_user(self): self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234?user_id=1') self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete, req, 1234) def test_user_quotas_delete_as_admin(self): context = context_maker.get_admin_context() url = '/v2/fake4/os-quota-sets/1234?user_id=1' self.req = fakes.HTTPRequest.blank(url) self.req.environ['nova.context'] = context self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True) self.ext_mgr.is_loaded('os-user-quotas').AndReturn(True) self.mox.StubOutWithMock(quota.QUOTAS, "destroy_all_by_project_and_user") quota.QUOTAS.destroy_all_by_project_and_user(context, 1234, '1') self.mox.ReplayAll() res = self.controller.delete(self.req, 1234) self.mox.VerifyAll() self.assertEqual(res.status_int, 202) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_evacuate.py0000664000175400017540000002536612323721477027115 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from oslo.config import cfg import webob from nova.compute import api as compute_api from nova.compute import vm_states from nova import context from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') def fake_compute_api(*args, **kwargs): return True def fake_compute_api_get(self, context, instance_id): # BAD_UUID is something that does not exist if instance_id == 'BAD_UUID': raise exception.InstanceNotFound(instance_id=instance_id) else: return { 'id': 1, 'uuid': instance_id, 'vm_state': vm_states.ACTIVE, 'task_state': None, 'host': 'host1' } def fake_service_get_by_compute_host(self, context, host): if host == 'bad-host': raise exception.ComputeHostNotFound(host=host) else: return { 'host_name': host, 'service': 'compute', 'zone': 'nova' } class EvacuateTest(test.NoDBTestCase): _methods = ('resize', 'evacuate') def setUp(self): super(EvacuateTest, self).setUp() self.stubs.Set(compute_api.API, 'get', fake_compute_api_get) self.stubs.Set(compute_api.HostAPI, 'service_get_by_compute_host', fake_service_get_by_compute_host) self.UUID = uuid.uuid4() for _method in self._methods: self.stubs.Set(compute_api.API, _method, fake_compute_api) def _get_admin_context(self, user_id='fake', project_id='fake'): ctxt = context.get_admin_context() ctxt.user_id = user_id ctxt.project_id = project_id return ctxt def test_evacuate_with_valid_instance(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % self.UUID) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'false', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 200) def test_evacuate_with_underscore_in_hostname(self): ctxt = context.get_admin_context() ctxt.user_id = 'fake' ctxt.project_id = 'fake' ctxt.is_admin = True app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % self.UUID) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { # NOTE: The hostname grammar in RFC952 does not allow for # underscores in hostnames. However, we should test that it # is supported because it sometimes occurs in real systems. 'host': 'underscore_hostname', 'onSharedStorage': 'false', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 200) def test_evacuate_with_invalid_instance(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % 'BAD_UUID') req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'false', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 404) def test_evacuate_with_active_service(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % self.UUID) req.method = 'POST' req.content_type = 'application/json' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'false', 'adminPass': 'MyNewPass' } }) def fake_evacuate(*args, **kwargs): raise exception.ComputeServiceInUse("Service still in use") self.stubs.Set(compute_api.API, 'evacuate', fake_evacuate) res = req.get_response(app) self.assertEqual(res.status_int, 400) def test_evacuate_instance_with_no_target(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % self.UUID) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'onSharedStorage': 'False', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 400) def test_evacuate_instance_without_on_shared_storage(self): ctxt = context.get_admin_context() ctxt.user_id = 'fake' ctxt.project_id = 'fake' ctxt.is_admin = True app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % self.UUID) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 400) def test_evacuate_instance_with_bad_target(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) req = webob.Request.blank('/v2/fake/servers/%s/action' % self.UUID) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'bad-host', 'onSharedStorage': 'false', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 404) def test_evacuate_instance_with_target(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) uuid1 = self.UUID req = webob.Request.blank('/v2/fake/servers/%s/action' % uuid1) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'false', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' def fake_update(inst, context, instance, task_state, expected_task_state): return None self.stubs.Set(compute_api.API, 'update', fake_update) resp = req.get_response(app) self.assertEqual(resp.status_int, 200) resp_json = jsonutils.loads(resp.body) self.assertEqual("MyNewPass", resp_json['adminPass']) def test_evacuate_shared_and_pass(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) uuid1 = self.UUID req = webob.Request.blank('/v2/fake/servers/%s/action' % uuid1) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'True', 'adminPass': 'MyNewPass' } }) req.content_type = 'application/json' def fake_update(inst, context, instance, task_state, expected_task_state): return None self.stubs.Set(compute_api.API, 'update', fake_update) res = req.get_response(app) self.assertEqual(res.status_int, 400) def test_evacuate_not_shared_pass_generated(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) uuid1 = self.UUID req = webob.Request.blank('/v2/fake/servers/%s/action' % uuid1) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'False', } }) req.content_type = 'application/json' def fake_update(inst, context, instance, task_state, expected_task_state): return None self.stubs.Set(compute_api.API, 'update', fake_update) resp = req.get_response(app) self.assertEqual(resp.status_int, 200) resp_json = jsonutils.loads(resp.body) self.assertEqual(CONF.password_length, len(resp_json['adminPass'])) def test_evacuate_shared(self): ctxt = self._get_admin_context() app = fakes.wsgi_app(fake_auth_context=ctxt) uuid1 = self.UUID req = webob.Request.blank('/v2/fake/servers/%s/action' % uuid1) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'True', } }) req.content_type = 'application/json' def fake_update(inst, context, instance, task_state, expected_task_state): return None self.stubs.Set(compute_api.API, 'update', fake_update) res = req.get_response(app) self.assertEqual(res.status_int, 200) def test_not_admin(self): ctxt = context.RequestContext('fake', 'fake', is_admin=False) app = fakes.wsgi_app(fake_auth_context=ctxt) uuid1 = self.UUID req = webob.Request.blank('/v2/fake/servers/%s/action' % uuid1) req.method = 'POST' req.body = jsonutils.dumps({ 'evacuate': { 'host': 'my-host', 'onSharedStorage': 'True', } }) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 403) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_security_groups.py0000664000175400017540000021113312323721477030553 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2012 Justin Santa Barbara # # 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 lxml import etree import mox from oslo.config import cfg import webob from nova.api.openstack.compute.contrib import security_groups from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova import compute from nova.compute import power_state from nova import context as context_maker import nova.db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import quota from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests import utils CONF = cfg.CONF FAKE_UUID1 = 'a47ae74e-ab08-447f-8eee-ffd43fc46c16' FAKE_UUID2 = 'c6e6430a-6563-4efa-9542-5e93c9e97d18' class AttrDict(dict): def __getattr__(self, k): return self[k] def security_group_template(**kwargs): sg = kwargs.copy() sg.setdefault('tenant_id', '123') sg.setdefault('name', 'test') sg.setdefault('description', 'test-description') return sg def security_group_db(security_group, id=None): attrs = security_group.copy() if 'tenant_id' in attrs: attrs['project_id'] = attrs.pop('tenant_id') if id is not None: attrs['id'] = id attrs.setdefault('rules', []) attrs.setdefault('instances', []) return AttrDict(attrs) def security_group_rule_template(**kwargs): rule = kwargs.copy() rule.setdefault('ip_protocol', 'tcp') rule.setdefault('from_port', 22) rule.setdefault('to_port', 22) rule.setdefault('parent_group_id', 2) return rule def security_group_rule_db(rule, id=None): attrs = rule.copy() if 'ip_protocol' in attrs: attrs['protocol'] = attrs.pop('ip_protocol') return AttrDict(attrs) def return_server(context, server_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'id': int(server_id), 'power_state': 0x01, 'host': "localhost", 'uuid': FAKE_UUID1, 'name': 'asdf'}) def return_server_by_uuid(context, server_uuid, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'id': 1, 'power_state': 0x01, 'host': "localhost", 'uuid': server_uuid, 'name': 'asdf'}) def return_non_running_server(context, server_id, columns_to_join=None): return fake_instance.fake_db_instance( **{'id': server_id, 'power_state': power_state.SHUTDOWN, 'uuid': FAKE_UUID1, 'host': "localhost", 'name': 'asdf'}) def return_security_group_by_name(context, project_id, group_name): return {'id': 1, 'name': group_name, "instances": [{'id': 1, 'uuid': FAKE_UUID1}]} def return_security_group_without_instances(context, project_id, group_name): return {'id': 1, 'name': group_name} def return_server_nonexistent(context, server_id, columns_to_join=None): raise exception.InstanceNotFound(instance_id=server_id) class TestSecurityGroups(test.TestCase): def setUp(self): super(TestSecurityGroups, self).setUp() self.controller = security_groups.SecurityGroupController() self.server_controller = ( security_groups.ServerSecurityGroupController()) self.manager = security_groups.SecurityGroupActionController() # This needs to be done here to set fake_id because the derived # class needs to be called first if it wants to set # 'security_group_api' and this setUp method needs to be called. if self.controller.security_group_api.id_is_uuid: self.fake_id = '11111111-1111-1111-1111-111111111111' else: self.fake_id = '11111111' def _assert_no_security_groups_reserved(self, context): """Check that no reservations are leaked during tests.""" result = quota.QUOTAS.get_project_quotas(context, context.project_id) self.assertEqual(result['security_groups']['reserved'], 0) def _assert_security_groups_in_use(self, project_id, user_id, in_use): context = context_maker.get_admin_context() result = quota.QUOTAS.get_user_quotas(context, project_id, user_id) self.assertEqual(result['security_groups']['in_use'], in_use) def test_create_security_group(self): sg = security_group_template() req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') res_dict = self.controller.create(req, {'security_group': sg}) self.assertEqual(res_dict['security_group']['name'], 'test') self.assertEqual(res_dict['security_group']['description'], 'test-description') def test_create_security_group_with_no_name(self): sg = security_group_template() del sg['name'] req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, sg) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_no_description(self): sg = security_group_template() del sg['description'] req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_blank_name(self): sg = security_group_template(name='') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_whitespace_name(self): sg = security_group_template(name=' ') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_blank_description(self): sg = security_group_template(description='') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_whitespace_description(self): sg = security_group_template(description=' ') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_duplicate_name(self): sg = security_group_template() # FIXME: Stub out _get instead of creating twice req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.controller.create(req, {'security_group': sg}) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_no_body(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, None) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_with_no_security_group(self): body = {'no-securityGroup': None} req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, body) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_above_255_characters_name(self): sg = security_group_template(name='1234567890' * 26) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_above_255_characters_description(self): sg = security_group_template(description='1234567890' * 26) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_non_string_name(self): sg = security_group_template(name=12) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_non_string_description(self): sg = security_group_template(description=12) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group': sg}) self._assert_no_security_groups_reserved(req.environ['nova.context']) def test_create_security_group_quota_limit(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') for num in range(1, CONF.quota_security_groups): name = 'test%s' % num sg = security_group_template(name=name) res_dict = self.controller.create(req, {'security_group': sg}) self.assertEqual(res_dict['security_group']['name'], name) sg = security_group_template() self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, {'security_group': sg}) def test_get_security_group_list(self): groups = [] for i, name in enumerate(['default', 'test']): sg = security_group_template(id=i + 1, name=name, description=name + '-desc', rules=[]) groups.append(sg) expected = {'security_groups': groups} def return_security_groups(context, project_id): return [security_group_db(sg) for sg in groups] self.stubs.Set(nova.db, 'security_group_get_by_project', return_security_groups) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') res_dict = self.controller.index(req) self.assertEqual(res_dict, expected) def test_get_security_group_list_all_tenants(self): all_groups = [] tenant_groups = [] for i, name in enumerate(['default', 'test']): sg = security_group_template(id=i + 1, name=name, description=name + '-desc', rules=[]) all_groups.append(sg) if name == 'default': tenant_groups.append(sg) all = {'security_groups': all_groups} tenant_specific = {'security_groups': tenant_groups} def return_all_security_groups(context): return [security_group_db(sg) for sg in all_groups] self.stubs.Set(nova.db, 'security_group_get_all', return_all_security_groups) def return_tenant_security_groups(context, project_id): return [security_group_db(sg) for sg in tenant_groups] self.stubs.Set(nova.db, 'security_group_get_by_project', return_tenant_security_groups) path = '/v2/fake/os-security-groups' req = fakes.HTTPRequest.blank(path, use_admin_context=True) res_dict = self.controller.index(req) self.assertEqual(res_dict, tenant_specific) req = fakes.HTTPRequest.blank('%s?all_tenants=1' % path, use_admin_context=True) res_dict = self.controller.index(req) self.assertEqual(res_dict, all) def test_get_security_group_by_instance(self): groups = [] for i, name in enumerate(['default', 'test']): sg = security_group_template(id=i + 1, name=name, description=name + '-desc', rules=[]) groups.append(sg) expected = {'security_groups': groups} def return_instance(context, server_id, columns_to_join=None, use_slave=False): self.assertEqual(server_id, FAKE_UUID1) return return_server_by_uuid(context, server_id) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_instance) def return_security_groups(context, instance_uuid): self.assertEqual(instance_uuid, FAKE_UUID1) return [security_group_db(sg) for sg in groups] self.stubs.Set(nova.db, 'security_group_get_by_instance', return_security_groups) req = fakes.HTTPRequest.blank('/v2/%s/servers/%s/os-security-groups' % ('fake', FAKE_UUID1)) res_dict = self.server_controller.index(req, FAKE_UUID1) self.assertEqual(res_dict, expected) def test_get_security_group_by_instance_non_existing(self): self.stubs.Set(nova.db, 'instance_get', return_server_nonexistent) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/os-security-groups') self.assertRaises(webob.exc.HTTPNotFound, self.server_controller.index, req, '1') def test_get_security_group_by_instance_invalid_id(self): req = fakes.HTTPRequest.blank( '/v2/fake/servers/invalid/os-security-groups') self.assertRaises(webob.exc.HTTPNotFound, self.server_controller.index, req, 'invalid') def test_get_security_group_by_id(self): sg = security_group_template(id=2, rules=[]) def return_security_group(context, group_id): self.assertEqual(sg['id'], group_id) return security_group_db(sg) self.stubs.Set(nova.db, 'security_group_get', return_security_group) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/2') res_dict = self.controller.show(req, '2') expected = {'security_group': sg} self.assertEqual(res_dict, expected) def test_get_security_group_by_invalid_id(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/invalid') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, 'invalid') def test_get_security_group_by_non_existing_id(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/%s' % self.fake_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.fake_id) def test_update_security_group(self): sg = security_group_template(id=2, rules=[]) sg_update = security_group_template(id=2, rules=[], name='update_name', description='update_desc') def return_security_group(context, group_id): self.assertEqual(sg['id'], group_id) return security_group_db(sg) def return_update_security_group(context, group_id, values, columns_to_join=None): self.assertEqual(sg_update['id'], group_id) self.assertEqual(sg_update['name'], values['name']) self.assertEqual(sg_update['description'], values['description']) return security_group_db(sg_update) self.stubs.Set(nova.db, 'security_group_update', return_update_security_group) self.stubs.Set(nova.db, 'security_group_get', return_security_group) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/2') res_dict = self.controller.update(req, '2', {'security_group': sg_update}) expected = {'security_group': sg_update} self.assertEqual(res_dict, expected) def test_update_security_group_name_to_default(self): sg = security_group_template(id=2, rules=[], name='default') def return_security_group(context, group_id): self.assertEqual(sg['id'], group_id) return security_group_db(sg) self.stubs.Set(nova.db, 'security_group_get', return_security_group) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/2') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, '2', {'security_group': sg}) def test_update_default_security_group_fail(self): sg = security_group_template() req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/1') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, '1', {'security_group': sg}) def test_delete_security_group_by_id(self): sg = security_group_template(id=1, project_id='fake_project', user_id='fake_user', rules=[]) self.called = False def security_group_destroy(context, id): self.called = True def return_security_group(context, group_id): self.assertEqual(sg['id'], group_id) return security_group_db(sg) self.stubs.Set(nova.db, 'security_group_destroy', security_group_destroy) self.stubs.Set(nova.db, 'security_group_get', return_security_group) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/1') self.controller.delete(req, '1') self.assertTrue(self.called) def test_delete_security_group_by_admin(self): sg = security_group_template(id=2, rules=[]) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.controller.create(req, {'security_group': sg}) context = req.environ['nova.context'] # Ensure quota usage for security group is correct. self._assert_security_groups_in_use(context.project_id, context.user_id, 2) # Delete the security group by admin. req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/2', use_admin_context=True) self.controller.delete(req, '2') # Ensure quota for security group in use is released. self._assert_security_groups_in_use(context.project_id, context.user_id, 1) def test_delete_security_group_by_invalid_id(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/invalid') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, 'invalid') def test_delete_security_group_by_non_existing_id(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/%s' % self.fake_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.fake_id) def test_delete_security_group_in_use(self): sg = security_group_template(id=1, rules=[]) def security_group_in_use(context, id): return True def return_security_group(context, group_id): self.assertEqual(sg['id'], group_id) return security_group_db(sg) self.stubs.Set(nova.db, 'security_group_in_use', security_group_in_use) self.stubs.Set(nova.db, 'security_group_get', return_security_group) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/1') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, '1') def test_associate_by_non_existing_security_group_name(self): self.stubs.Set(nova.db, 'instance_get', return_server) self.assertEqual(return_server(None, '1'), nova.db.instance_get(None, '1')) body = dict(addSecurityGroup=dict(name='non-existing')) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._addSecurityGroup, req, '1', body) def test_associate_by_invalid_server_id(self): body = dict(addSecurityGroup=dict(name='test')) req = fakes.HTTPRequest.blank('/v2/fake/servers/invalid/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._addSecurityGroup, req, 'invalid', body) def test_associate_without_body(self): self.stubs.Set(nova.db, 'instance_get', return_server) body = dict(addSecurityGroup=None) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._addSecurityGroup, req, '1', body) def test_associate_no_security_group_name(self): self.stubs.Set(nova.db, 'instance_get', return_server) body = dict(addSecurityGroup=dict()) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._addSecurityGroup, req, '1', body) def test_associate_security_group_name_with_whitespaces(self): self.stubs.Set(nova.db, 'instance_get', return_server) body = dict(addSecurityGroup=dict(name=" ")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._addSecurityGroup, req, '1', body) def test_associate_non_existing_instance(self): self.stubs.Set(nova.db, 'instance_get', return_server_nonexistent) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_nonexistent) body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._addSecurityGroup, req, '1', body) def test_associate_non_running_instance(self): self.stubs.Set(nova.db, 'instance_get', return_non_running_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_non_running_server) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_without_instances) body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._addSecurityGroup(req, '1', body) def test_associate_already_associated_security_group_to_instance(self): self.stubs.Set(nova.db, 'instance_get', return_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_by_uuid) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_by_name) body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._addSecurityGroup, req, '1', body) def test_associate(self): self.stubs.Set(nova.db, 'instance_get', return_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_by_uuid) self.mox.StubOutWithMock(nova.db, 'instance_add_security_group') nova.db.instance_add_security_group(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_without_instances) self.mox.ReplayAll() body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._addSecurityGroup(req, '1', body) def test_disassociate_by_non_existing_security_group_name(self): self.stubs.Set(nova.db, 'instance_get', return_server) self.assertEqual(return_server(None, '1'), nova.db.instance_get(None, '1')) body = dict(removeSecurityGroup=dict(name='non-existing')) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate_by_invalid_server_id(self): self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_by_name) body = dict(removeSecurityGroup=dict(name='test')) req = fakes.HTTPRequest.blank('/v2/fake/servers/invalid/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._removeSecurityGroup, req, 'invalid', body) def test_disassociate_without_body(self): self.stubs.Set(nova.db, 'instance_get', return_server) body = dict(removeSecurityGroup=None) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate_no_security_group_name(self): self.stubs.Set(nova.db, 'instance_get', return_server) body = dict(removeSecurityGroup=dict()) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate_security_group_name_with_whitespaces(self): self.stubs.Set(nova.db, 'instance_get', return_server) body = dict(removeSecurityGroup=dict(name=" ")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate_non_existing_instance(self): self.stubs.Set(nova.db, 'instance_get', return_server_nonexistent) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_by_name) body = dict(removeSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate_non_running_instance(self): self.stubs.Set(nova.db, 'instance_get', return_non_running_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_non_running_server) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_by_name) body = dict(removeSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._removeSecurityGroup(req, '1', body) def test_disassociate_already_associated_security_group_to_instance(self): self.stubs.Set(nova.db, 'instance_get', return_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_by_uuid) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_without_instances) body = dict(removeSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate(self): self.stubs.Set(nova.db, 'instance_get', return_server) self.stubs.Set(nova.db, 'instance_get_by_uuid', return_server_by_uuid) self.mox.StubOutWithMock(nova.db, 'instance_remove_security_group') nova.db.instance_remove_security_group(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) self.stubs.Set(nova.db, 'security_group_get_by_name', return_security_group_by_name) self.mox.ReplayAll() body = dict(removeSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._removeSecurityGroup(req, '1', body) class TestSecurityGroupRules(test.TestCase): def setUp(self): super(TestSecurityGroupRules, self).setUp() self.controller = security_groups.SecurityGroupController() if self.controller.security_group_api.id_is_uuid: id1 = '11111111-1111-1111-1111-111111111111' id2 = '22222222-2222-2222-2222-222222222222' self.invalid_id = '33333333-3333-3333-3333-333333333333' else: id1 = 1 id2 = 2 self.invalid_id = '33333333' self.sg1 = security_group_template(id=id1) self.sg2 = security_group_template( id=id2, name='authorize_revoke', description='authorize-revoke testing') db1 = security_group_db(self.sg1) db2 = security_group_db(self.sg2) def return_security_group(context, group_id, columns_to_join=None): if group_id == db1['id']: return db1 if group_id == db2['id']: return db2 raise exception.NotFound() self.stubs.Set(nova.db, 'security_group_get', return_security_group) self.parent_security_group = db2 self.controller = security_groups.SecurityGroupRulesController() def test_create_by_cidr(self): rule = security_group_rule_template(cidr='10.2.3.124/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.sg2['id']) self.assertEqual(security_group_rule['ip_range']['cidr'], "10.2.3.124/24") def test_create_by_group_id(self): rule = security_group_rule_template(group_id=self.sg1['id'], parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.sg2['id']) def test_create_by_same_group_id(self): rule1 = security_group_rule_template(group_id=self.sg1['id'], from_port=80, to_port=80, parent_group_id=self.sg2['id']) self.parent_security_group['rules'] = [security_group_rule_db(rule1)] rule2 = security_group_rule_template(group_id=self.sg1['id'], from_port=81, to_port=81, parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule2}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.sg2['id']) self.assertEqual(security_group_rule['from_port'], 81) self.assertEqual(security_group_rule['to_port'], 81) def test_create_none_value_from_to_port(self): rule = {'parent_group_id': self.sg1['id'], 'group_id': self.sg1['id']} req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertIsNone(security_group_rule['from_port']) self.assertIsNone(security_group_rule['to_port']) self.assertEqual(security_group_rule['group']['name'], 'test') self.assertEqual(security_group_rule['parent_group_id'], self.sg1['id']) def test_create_none_value_from_to_port_icmp(self): rule = {'parent_group_id': self.sg1['id'], 'group_id': self.sg1['id'], 'ip_protocol': 'ICMP'} req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertEqual(security_group_rule['ip_protocol'], 'ICMP') self.assertEqual(security_group_rule['from_port'], -1) self.assertEqual(security_group_rule['to_port'], -1) self.assertEqual(security_group_rule['group']['name'], 'test') self.assertEqual(security_group_rule['parent_group_id'], self.sg1['id']) def test_create_none_value_from_to_port_tcp(self): rule = {'parent_group_id': self.sg1['id'], 'group_id': self.sg1['id'], 'ip_protocol': 'TCP'} req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertEqual(security_group_rule['ip_protocol'], 'TCP') self.assertEqual(security_group_rule['from_port'], 1) self.assertEqual(security_group_rule['to_port'], 65535) self.assertEqual(security_group_rule['group']['name'], 'test') self.assertEqual(security_group_rule['parent_group_id'], self.sg1['id']) def test_create_by_invalid_cidr_json(self): rule = security_group_rule_template( ip_protocol="tcp", from_port=22, to_port=22, parent_group_id=self.sg2['id'], cidr="10.2.3.124/2433") req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_by_invalid_tcp_port_json(self): rule = security_group_rule_template( ip_protocol="tcp", from_port=75534, to_port=22, parent_group_id=self.sg2['id'], cidr="10.2.3.124/24") req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_by_invalid_icmp_port_json(self): rule = security_group_rule_template( ip_protocol="icmp", from_port=1, to_port=256, parent_group_id=self.sg2['id'], cidr="10.2.3.124/24") req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_add_existing_rules_by_cidr(self): rule = security_group_rule_template(cidr='10.0.0.0/24', parent_group_id=self.sg2['id']) self.parent_security_group['rules'] = [security_group_rule_db(rule)] req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_add_existing_rules_by_group_id(self): rule = security_group_rule_template(group_id=1) self.parent_security_group['rules'] = [security_group_rule_db(rule)] req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_no_body(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, None) def test_create_with_no_security_group_rule_in_body(self): rules = {'test': 'test'} req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, rules) def test_create_with_invalid_parent_group_id(self): rule = security_group_rule_template(parent_group_id='invalid') req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_non_existing_parent_group_id(self): rule = security_group_rule_template(group_id='invalid', parent_group_id=self.invalid_id) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_invalid_protocol(self): rule = security_group_rule_template(ip_protocol='invalid-protocol', cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_no_protocol(self): rule = security_group_rule_template(cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) del rule['ip_protocol'] req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_invalid_from_port(self): rule = security_group_rule_template(from_port='666666', cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_invalid_to_port(self): rule = security_group_rule_template(to_port='666666', cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_non_numerical_from_port(self): rule = security_group_rule_template(from_port='invalid', cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_non_numerical_to_port(self): rule = security_group_rule_template(to_port='invalid', cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_no_from_port(self): rule = security_group_rule_template(cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) del rule['from_port'] req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_no_to_port(self): rule = security_group_rule_template(cidr='10.2.2.0/24', parent_group_id=self.sg2['id']) del rule['to_port'] req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_invalid_cidr(self): rule = security_group_rule_template(cidr='10.2.2222.0/24', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_no_cidr_group(self): rule = security_group_rule_template(parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.parent_security_group['id']) self.assertEqual(security_group_rule['ip_range']['cidr'], "0.0.0.0/0") def test_create_with_invalid_group_id(self): rule = security_group_rule_template(group_id='invalid', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_empty_group_id(self): rule = security_group_rule_template(group_id='', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_nonexist_group_id(self): rule = security_group_rule_template(group_id=self.invalid_id, parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_with_same_group_parent_id_and_group_id(self): rule = security_group_rule_template(group_id=self.sg1['id'], parent_group_id=self.sg1['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.sg1['id']) self.assertEqual(security_group_rule['group']['name'], self.sg1['name']) def _test_create_with_no_ports_and_no_group(self, proto): rule = {'ip_protocol': proto, 'parent_group_id': self.sg2['id']} req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def _test_create_with_no_ports(self, proto): rule = {'ip_protocol': proto, 'parent_group_id': self.sg2['id'], 'group_id': self.sg1['id']} req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] expected_rule = { 'from_port': 1, 'group': {'tenant_id': '123', 'name': 'test'}, 'ip_protocol': proto, 'to_port': 65535, 'parent_group_id': self.sg2['id'], 'ip_range': {}, 'id': security_group_rule['id'] } if proto == 'icmp': expected_rule['to_port'] = -1 expected_rule['from_port'] = -1 self.assertTrue(security_group_rule == expected_rule) def test_create_with_no_ports_icmp(self): self._test_create_with_no_ports_and_no_group('icmp') self._test_create_with_no_ports('icmp') def test_create_with_no_ports_tcp(self): self._test_create_with_no_ports_and_no_group('tcp') self._test_create_with_no_ports('tcp') def test_create_with_no_ports_udp(self): self._test_create_with_no_ports_and_no_group('udp') self._test_create_with_no_ports('udp') def _test_create_with_ports(self, proto, from_port, to_port): rule = { 'ip_protocol': proto, 'from_port': from_port, 'to_port': to_port, 'parent_group_id': self.sg2['id'], 'group_id': self.sg1['id'] } req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] expected_rule = { 'from_port': from_port, 'group': {'tenant_id': '123', 'name': 'test'}, 'ip_protocol': proto, 'to_port': to_port, 'parent_group_id': self.sg2['id'], 'ip_range': {}, 'id': security_group_rule['id'] } self.assertTrue(security_group_rule['ip_protocol'] == proto) self.assertTrue(security_group_rule['from_port'] == from_port) self.assertTrue(security_group_rule['to_port'] == to_port) self.assertTrue(security_group_rule == expected_rule) def test_create_with_ports_icmp(self): self._test_create_with_ports('icmp', 0, 1) self._test_create_with_ports('icmp', 0, 0) self._test_create_with_ports('icmp', 1, 0) def test_create_with_ports_tcp(self): self._test_create_with_ports('tcp', 1, 1) self._test_create_with_ports('tcp', 1, 65535) self._test_create_with_ports('tcp', 65535, 65535) def test_create_with_ports_udp(self): self._test_create_with_ports('udp', 1, 1) self._test_create_with_ports('udp', 1, 65535) self._test_create_with_ports('udp', 65535, 65535) def test_delete(self): rule = security_group_rule_template(id=self.sg2['id'], parent_group_id=self.sg2['id']) def security_group_rule_get(context, id): return security_group_rule_db(rule) def security_group_rule_destroy(context, id): pass self.stubs.Set(nova.db, 'security_group_rule_get', security_group_rule_get) self.stubs.Set(nova.db, 'security_group_rule_destroy', security_group_rule_destroy) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules/%s' % self.sg2['id']) self.controller.delete(req, self.sg2['id']) def test_delete_invalid_rule_id(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules' + '/invalid') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, 'invalid') def test_delete_non_existing_rule_id(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules/%s' % self.invalid_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.invalid_id) def test_create_rule_quota_limit(self): req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') for num in range(100, 100 + CONF.quota_security_group_rules): rule = { 'ip_protocol': 'tcp', 'from_port': num, 'to_port': num, 'parent_group_id': self.sg2['id'], 'group_id': self.sg1['id'] } self.controller.create(req, {'security_group_rule': rule}) rule = { 'ip_protocol': 'tcp', 'from_port': '121', 'to_port': '121', 'parent_group_id': self.sg2['id'], 'group_id': self.sg1['id'] } self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, {'security_group_rule': rule}) def test_create_rule_cidr_allow_all(self): rule = security_group_rule_template(cidr='0.0.0.0/0', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.parent_security_group['id']) self.assertEqual(security_group_rule['ip_range']['cidr'], "0.0.0.0/0") def test_create_rule_cidr_ipv6_allow_all(self): rule = security_group_rule_template(cidr='::/0', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.parent_security_group['id']) self.assertEqual(security_group_rule['ip_range']['cidr'], "::/0") def test_create_rule_cidr_allow_some(self): rule = security_group_rule_template(cidr='15.0.0.0/8', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] self.assertNotEqual(security_group_rule['id'], 0) self.assertEqual(security_group_rule['parent_group_id'], self.parent_security_group['id']) self.assertEqual(security_group_rule['ip_range']['cidr'], "15.0.0.0/8") def test_create_rule_cidr_bad_netmask(self): rule = security_group_rule_template(cidr='15.0.0.0/0') req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) class TestSecurityGroupRulesXMLDeserializer(test.TestCase): def setUp(self): super(TestSecurityGroupRulesXMLDeserializer, self).setUp() self.deserializer = security_groups.SecurityGroupRulesXMLDeserializer() def test_create_request(self): serial_request = """ 12 22 22 tcp 10.0.0.0/24 """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_rule": { "parent_group_id": "12", "from_port": "22", "to_port": "22", "ip_protocol": "tcp", "group_id": "", "cidr": "10.0.0.0/24", }, } self.assertEqual(request['body'], expected) def test_create_no_protocol_request(self): serial_request = """ 12 22 22 10.0.0.0/24 """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_rule": { "parent_group_id": "12", "from_port": "22", "to_port": "22", "group_id": "", "cidr": "10.0.0.0/24", }, } self.assertEqual(request['body'], expected) def test_corrupt_xml(self): """Should throw a 400 error on corrupt xml.""" self.assertRaises( exception.MalformedRequestBody, self.deserializer.deserialize, utils.killer_xml_body()) class TestSecurityGroupXMLDeserializer(test.TestCase): def setUp(self): super(TestSecurityGroupXMLDeserializer, self).setUp() self.deserializer = security_groups.SecurityGroupXMLDeserializer() def test_create_request(self): serial_request = """ test """ request = self.deserializer.deserialize(serial_request) expected = { "security_group": { "name": "test", "description": "test", }, } self.assertEqual(request['body'], expected) def test_create_no_description_request(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "security_group": { "name": "test", }, } self.assertEqual(request['body'], expected) def test_create_no_name_request(self): serial_request = """ test """ request = self.deserializer.deserialize(serial_request) expected = { "security_group": { "description": "test", }, } self.assertEqual(request['body'], expected) def test_corrupt_xml(self): """Should throw a 400 error on corrupt xml.""" self.assertRaises( exception.MalformedRequestBody, self.deserializer.deserialize, utils.killer_xml_body()) class TestSecurityGroupXMLSerializer(test.TestCase): def setUp(self): super(TestSecurityGroupXMLSerializer, self).setUp() self.namespace = wsgi.XMLNS_V11 self.rule_serializer = security_groups.SecurityGroupRuleTemplate() self.index_serializer = security_groups.SecurityGroupsTemplate() self.default_serializer = security_groups.SecurityGroupTemplate() def _tag(self, elem): tagname = elem.tag self.assertEqual(tagname[0], '{') tmp = tagname.partition('}') namespace = tmp[0][1:] self.assertEqual(namespace, self.namespace) return tmp[2] def _verify_security_group_rule(self, raw_rule, tree): self.assertEqual(raw_rule['id'], tree.get('id')) self.assertEqual(raw_rule['parent_group_id'], tree.get('parent_group_id')) seen = set() expected = set(['ip_protocol', 'from_port', 'to_port', 'group', 'group/name', 'group/tenant_id', 'ip_range', 'ip_range/cidr']) for child in tree: child_tag = self._tag(child) self.assertIn(child_tag, raw_rule) seen.add(child_tag) if child_tag in ('group', 'ip_range'): for gr_child in child: gr_child_tag = self._tag(gr_child) self.assertIn(gr_child_tag, raw_rule[child_tag]) seen.add('%s/%s' % (child_tag, gr_child_tag)) self.assertEqual(gr_child.text, raw_rule[child_tag][gr_child_tag]) else: self.assertEqual(child.text, raw_rule[child_tag]) self.assertEqual(seen, expected) def _verify_security_group(self, raw_group, tree): rules = raw_group['rules'] self.assertEqual('security_group', self._tag(tree)) self.assertEqual(raw_group['id'], tree.get('id')) self.assertEqual(raw_group['tenant_id'], tree.get('tenant_id')) self.assertEqual(raw_group['name'], tree.get('name')) self.assertEqual(2, len(tree)) for child in tree: child_tag = self._tag(child) if child_tag == 'rules': self.assertEqual(2, len(child)) for idx, gr_child in enumerate(child): self.assertEqual(self._tag(gr_child), 'rule') self._verify_security_group_rule(rules[idx], gr_child) else: self.assertEqual('description', child_tag) self.assertEqual(raw_group['description'], child.text) def test_rule_serializer(self): raw_rule = dict( id='123', parent_group_id='456', ip_protocol='tcp', from_port='789', to_port='987', group=dict(name='group', tenant_id='tenant'), ip_range=dict(cidr='10.0.0.0/8')) rule = dict(security_group_rule=raw_rule) text = self.rule_serializer.serialize(rule) tree = etree.fromstring(text) self.assertEqual('security_group_rule', self._tag(tree)) self._verify_security_group_rule(raw_rule, tree) def test_group_serializer(self): rules = [dict( id='123', parent_group_id='456', ip_protocol='tcp', from_port='789', to_port='987', group=dict(name='group1', tenant_id='tenant1'), ip_range=dict(cidr='10.55.44.0/24')), dict( id='654', parent_group_id='321', ip_protocol='udp', from_port='234', to_port='567', group=dict(name='group2', tenant_id='tenant2'), ip_range=dict(cidr='10.44.55.0/24'))] raw_group = dict( id='890', description='description', name='name', tenant_id='tenant', rules=rules) sg_group = dict(security_group=raw_group) text = self.default_serializer.serialize(sg_group) tree = etree.fromstring(text) self._verify_security_group(raw_group, tree) def test_groups_serializer(self): rules = [dict( id='123', parent_group_id='1234', ip_protocol='tcp', from_port='12345', to_port='123456', group=dict(name='group1', tenant_id='tenant1'), ip_range=dict(cidr='10.123.0.0/24')), dict( id='234', parent_group_id='2345', ip_protocol='udp', from_port='23456', to_port='234567', group=dict(name='group2', tenant_id='tenant2'), ip_range=dict(cidr='10.234.0.0/24')), dict( id='345', parent_group_id='3456', ip_protocol='tcp', from_port='34567', to_port='345678', group=dict(name='group3', tenant_id='tenant3'), ip_range=dict(cidr='10.345.0.0/24')), dict( id='456', parent_group_id='4567', ip_protocol='udp', from_port='45678', to_port='456789', group=dict(name='group4', tenant_id='tenant4'), ip_range=dict(cidr='10.456.0.0/24'))] groups = [dict( id='567', description='description1', name='name1', tenant_id='tenant1', rules=rules[0:2]), dict( id='678', description='description2', name='name2', tenant_id='tenant2', rules=rules[2:4])] sg_groups = dict(security_groups=groups) text = self.index_serializer.serialize(sg_groups) tree = etree.fromstring(text) self.assertEqual('security_groups', self._tag(tree)) self.assertEqual(len(groups), len(tree)) for idx, child in enumerate(tree): self._verify_security_group(groups[idx], child) UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get_all(*args, **kwargs): base = {'id': 1, 'description': 'foo', 'user_id': 'bar', 'project_id': 'baz', 'deleted': False, 'deleted_at': None, 'updated_at': None, 'created_at': None} db_list = [ fakes.stub_instance( 1, uuid=UUID1, security_groups=[dict(base, **{'name': 'fake-0-0'}), dict(base, **{'name': 'fake-0-1'})]), fakes.stub_instance( 2, uuid=UUID2, security_groups=[dict(base, **{'name': 'fake-1-0'}), dict(base, **{'name': 'fake-1-1'})]) ] return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, ['metadata', 'system_metadata', 'security_groups', 'info_cache']) def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, security_groups=[{'name': 'fake-2-0'}, {'name': 'fake-2-1'}]) return fake_instance.fake_instance_obj(args[1], expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **inst) def fake_compute_create(*args, **kwargs): return ([fake_compute_get(*args, **kwargs)], '') def fake_get_instances_security_groups_bindings(inst, context, servers): groups = {UUID1: [{'name': 'fake-0-0'}, {'name': 'fake-0-1'}], UUID2: [{'name': 'fake-1-0'}, {'name': 'fake-1-1'}], UUID3: [{'name': 'fake-2-0'}, {'name': 'fake-2-1'}]} result = {} for server in servers: result[server['id']] = groups.get(server['id']) return result class SecurityGroupsOutputTest(test.TestCase): content_type = 'application/json' def setUp(self): super(SecurityGroupsOutputTest, self).setUp() self.controller = security_groups.SecurityGroupController() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(compute.api.API, 'create', fake_compute_create) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Security_groups']) def _make_request(self, url, body=None): req = webob.Request.blank(url) if body: req.method = 'POST' req.body = self._encode_body(body) req.content_type = self.content_type req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _encode_body(self, body): return jsonutils.dumps(body) def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def _get_groups(self, server): return server.get('security_groups') def test_create(self): url = '/v2/fake/servers' image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', imageRef=image_uuid, flavorRef=2) res = self._make_request(url, {'server': server}) self.assertEqual(res.status_int, 202) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): for j, group in enumerate(self._get_groups(server)): name = 'fake-%s-%s' % (i, j) self.assertEqual(group.get('name'), name) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v2/fake/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class SecurityGroupsOutputXmlTest(SecurityGroupsOutputTest): content_type = 'application/xml' class MinimalCreateServerTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('server', selector='server') root.set('name') root.set('id') root.set('imageRef') root.set('flavorRef') return xmlutil.MasterTemplate(root, 1, nsmap={None: xmlutil.XMLNS_V11}) def _encode_body(self, body): serializer = self.MinimalCreateServerTemplate() return serializer.serialize(body) def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() def _get_groups(self, server): # NOTE(vish): we are adding security groups without an extension # namespace so we don't break people using the existing # functionality, but that means we need to use find with # the existing server namespace. namespace = server.nsmap[None] return server.find('{%s}security_groups' % namespace).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_security_group_default_rules.py0000664000175400017540000004502312323721477033311 0ustar jenkinsjenkins00000000000000# Copyright 2013 Metacloud, 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 lxml import etree from oslo.config import cfg import webob from nova.api.openstack.compute.contrib import security_group_default_rules from nova.api.openstack import wsgi from nova import context import nova.db from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF class AttrDict(dict): def __getattr__(self, k): return self[k] def security_group_default_rule_template(**kwargs): rule = kwargs.copy() rule.setdefault('ip_protocol', 'TCP') rule.setdefault('from_port', 22) rule.setdefault('to_port', 22) rule.setdefault('cidr', '10.10.10.0/24') return rule def security_group_default_rule_db(security_group_default_rule, id=None): attrs = security_group_default_rule.copy() if id is not None: attrs['id'] = id return AttrDict(attrs) class TestSecurityGroupDefaultRules(test.TestCase): def setUp(self): super(TestSecurityGroupDefaultRules, self).setUp() self.controller = \ security_group_default_rules.SecurityGroupDefaultRulesController() def test_create_security_group_default_rule(self): sgr = security_group_default_rule_template() req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) sgr_dict = dict(security_group_default_rule=sgr) res_dict = self.controller.create(req, sgr_dict) security_group_default_rule = res_dict['security_group_default_rule'] self.assertEqual(security_group_default_rule['ip_protocol'], sgr['ip_protocol']) self.assertEqual(security_group_default_rule['from_port'], sgr['from_port']) self.assertEqual(security_group_default_rule['to_port'], sgr['to_port']) self.assertEqual(security_group_default_rule['ip_range']['cidr'], sgr['cidr']) def test_create_security_group_default_rule_with_no_to_port(self): sgr = security_group_default_rule_template() del sgr['to_port'] req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_no_from_port(self): sgr = security_group_default_rule_template() del sgr['from_port'] req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_no_ip_protocol(self): sgr = security_group_default_rule_template() del sgr['ip_protocol'] req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_no_cidr(self): sgr = security_group_default_rule_template() del sgr['cidr'] req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) res_dict = self.controller.create(req, {'security_group_default_rule': sgr}) security_group_default_rule = res_dict['security_group_default_rule'] self.assertNotEqual(security_group_default_rule['id'], 0) self.assertEqual(security_group_default_rule['ip_range']['cidr'], '0.0.0.0/0') def test_create_security_group_default_rule_with_blank_to_port(self): sgr = security_group_default_rule_template(to_port='') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_blank_from_port(self): sgr = security_group_default_rule_template(from_port='') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_blank_ip_protocol(self): sgr = security_group_default_rule_template(ip_protocol='') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_blank_cidr(self): sgr = security_group_default_rule_template(cidr='') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) res_dict = self.controller.create(req, {'security_group_default_rule': sgr}) security_group_default_rule = res_dict['security_group_default_rule'] self.assertNotEqual(security_group_default_rule['id'], 0) self.assertEqual(security_group_default_rule['ip_range']['cidr'], '0.0.0.0/0') def test_create_security_group_default_rule_non_numerical_to_port(self): sgr = security_group_default_rule_template(to_port='invalid') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_non_numerical_from_port(self): sgr = security_group_default_rule_template(from_port='invalid') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_invalid_ip_protocol(self): sgr = security_group_default_rule_template(ip_protocol='invalid') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_invalid_cidr(self): sgr = security_group_default_rule_template(cidr='10.10.2222.0/24') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_invalid_to_port(self): sgr = security_group_default_rule_template(to_port='666666') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_invalid_from_port(self): sgr = security_group_default_rule_template(from_port='666666') req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_create_security_group_default_rule_with_no_body(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, None) def test_create_duplicate_security_group_default_rule(self): sgr = security_group_default_rule_template() req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.controller.create(req, {'security_group_default_rule': sgr}) req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_default_rule': sgr}) def test_security_group_default_rules_list(self): self.test_create_security_group_default_rule() rules = [dict(id=1, ip_protocol='TCP', from_port=22, to_port=22, ip_range=dict(cidr='10.10.10.0/24'))] expected = {'security_group_default_rules': rules} req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) res_dict = self.controller.index(req) self.assertEqual(res_dict, expected) def test_default_security_group_default_rule_show(self): sgr = security_group_default_rule_template(id=1) self.test_create_security_group_default_rule() req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) res_dict = self.controller.show(req, '1') security_group_default_rule = res_dict['security_group_default_rule'] self.assertEqual(security_group_default_rule['ip_protocol'], sgr['ip_protocol']) self.assertEqual(security_group_default_rule['to_port'], sgr['to_port']) self.assertEqual(security_group_default_rule['from_port'], sgr['from_port']) self.assertEqual(security_group_default_rule['ip_range']['cidr'], sgr['cidr']) def test_delete_security_group_default_rule(self): sgr = security_group_default_rule_template(id=1) self.test_create_security_group_default_rule() self.called = False def security_group_default_rule_destroy(context, id): self.called = True def return_security_group_default_rule(context, id): self.assertEqual(sgr['id'], id) return security_group_default_rule_db(sgr) self.stubs.Set(nova.db, 'security_group_default_rule_destroy', security_group_default_rule_destroy) self.stubs.Set(nova.db, 'security_group_default_rule_get', return_security_group_default_rule) req = fakes.HTTPRequest.blank( '/v2/fake/os-security-group-default-rules', use_admin_context=True) self.controller.delete(req, '1') self.assertTrue(self.called) def test_security_group_ensure_default(self): sgr = security_group_default_rule_template(id=1) self.test_create_security_group_default_rule() ctxt = context.get_admin_context() setattr(ctxt, 'project_id', 'new_project_id') sg = nova.db.security_group_ensure_default(ctxt) rules = nova.db.security_group_rule_get_by_security_group(ctxt, sg.id) security_group_rule = rules[0] self.assertEqual(sgr['id'], security_group_rule.id) self.assertEqual(sgr['ip_protocol'], security_group_rule.protocol) self.assertEqual(sgr['from_port'], security_group_rule.from_port) self.assertEqual(sgr['to_port'], security_group_rule.to_port) self.assertEqual(sgr['cidr'], security_group_rule.cidr) class TestSecurityGroupDefaultRulesXMLDeserializer(test.TestCase): def setUp(self): super(TestSecurityGroupDefaultRulesXMLDeserializer, self).setUp() deserializer = security_group_default_rules.\ SecurityGroupDefaultRulesXMLDeserializer() self.deserializer = deserializer def test_create_request(self): serial_request = """ 22 22 TCP 10.10.10.0/24 """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_default_rule": { "from_port": "22", "to_port": "22", "ip_protocol": "TCP", "cidr": "10.10.10.0/24" }, } self.assertEqual(request['body'], expected) def test_create_no_to_port_request(self): serial_request = """ 22 TCP 10.10.10.0/24 """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_default_rule": { "from_port": "22", "ip_protocol": "TCP", "cidr": "10.10.10.0/24" }, } self.assertEqual(request['body'], expected) def test_create_no_from_port_request(self): serial_request = """ 22 TCP 10.10.10.0/24 """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_default_rule": { "to_port": "22", "ip_protocol": "TCP", "cidr": "10.10.10.0/24" }, } self.assertEqual(request['body'], expected) def test_create_no_ip_protocol_request(self): serial_request = """ 22 22 10.10.10.0/24 """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_default_rule": { "from_port": "22", "to_port": "22", "cidr": "10.10.10.0/24" }, } self.assertEqual(request['body'], expected) def test_create_no_cidr_request(self): serial_request = """ 22 22 TCP """ request = self.deserializer.deserialize(serial_request) expected = { "security_group_default_rule": { "from_port": "22", "to_port": "22", "ip_protocol": "TCP", }, } self.assertEqual(request['body'], expected) class TestSecurityGroupDefaultRuleXMLSerializer(test.TestCase): def setUp(self): super(TestSecurityGroupDefaultRuleXMLSerializer, self).setUp() self.namespace = wsgi.XMLNS_V11 self.rule_serializer =\ security_group_default_rules.SecurityGroupDefaultRuleTemplate() self.index_serializer =\ security_group_default_rules.SecurityGroupDefaultRulesTemplate() def _tag(self, elem): tagname = elem.tag self.assertEqual(tagname[0], '{') tmp = tagname.partition('}') namespace = tmp[0][1:] self.assertEqual(namespace, self.namespace) return tmp[2] def _verify_security_group_default_rule(self, raw_rule, tree): self.assertEqual(raw_rule['id'], tree.get('id')) seen = set() expected = set(['ip_protocol', 'from_port', 'to_port', 'ip_range', 'ip_range/cidr']) for child in tree: child_tag = self._tag(child) seen.add(child_tag) if child_tag == 'ip_range': for gr_child in child: gr_child_tag = self._tag(gr_child) self.assertIn(gr_child_tag, raw_rule[child_tag]) seen.add('%s/%s' % (child_tag, gr_child_tag)) self.assertEqual(gr_child.text, raw_rule[child_tag][gr_child_tag]) else: self.assertEqual(child.text, raw_rule[child_tag]) self.assertEqual(seen, expected) def test_rule_serializer(self): raw_rule = dict(id='123', ip_protocol='TCP', from_port='22', to_port='22', ip_range=dict(cidr='10.10.10.0/24')) rule = dict(security_group_default_rule=raw_rule) text = self.rule_serializer.serialize(rule) tree = etree.fromstring(text) self.assertEqual('security_group_default_rule', self._tag(tree)) self._verify_security_group_default_rule(raw_rule, tree) def test_index_serializer(self): rules = [dict(id='123', ip_protocol='TCP', from_port='22', to_port='22', ip_range=dict(cidr='10.10.10.0/24')), dict(id='234', ip_protocol='UDP', from_port='23456', to_port='234567', ip_range=dict(cidr='10.12.0.0/18')), dict(id='345', ip_protocol='tcp', from_port='3456', to_port='4567', ip_range=dict(cidr='192.168.1.0/32'))] rules_dict = dict(security_group_default_rules=rules) text = self.index_serializer.serialize(rules_dict) tree = etree.fromstring(text) self.assertEqual('security_group_default_rules', self._tag(tree)) self.assertEqual(len(rules), len(tree)) for idx, child in enumerate(tree): self._verify_security_group_default_rule(rules[idx], child) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_availability_zone.py0000664000175400017540000003065712323721477031024 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from lxml import etree import webob from nova.api.openstack.compute.contrib import availability_zone from nova import availability_zones from nova import context from nova import db from nova.openstack.common import jsonutils from nova import servicegroup from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers def fake_service_get_all(context, disabled=None): def __fake_service(binary, availability_zone, created_at, updated_at, host, disabled): return {'binary': binary, 'availability_zone': availability_zone, 'available_zones': availability_zone, 'created_at': created_at, 'updated_at': updated_at, 'host': host, 'disabled': disabled} if disabled: return [__fake_service("nova-compute", "zone-2", datetime.datetime(2012, 11, 14, 9, 53, 25, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", True), __fake_service("nova-scheduler", "internal", datetime.datetime(2012, 11, 14, 9, 57, 3, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", True), __fake_service("nova-network", "internal", datetime.datetime(2012, 11, 16, 7, 25, 46, 0), datetime.datetime(2012, 12, 26, 14, 45, 24, 0), "fake_host-2", True)] else: return [__fake_service("nova-compute", "zone-1", datetime.datetime(2012, 11, 14, 9, 53, 25, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", False), __fake_service("nova-sched", "internal", datetime.datetime(2012, 11, 14, 9, 57, 3, 0), datetime.datetime(2012, 12, 26, 14, 45, 25, 0), "fake_host-1", False), __fake_service("nova-network", "internal", datetime.datetime(2012, 11, 16, 7, 25, 46, 0), datetime.datetime(2012, 12, 26, 14, 45, 24, 0), "fake_host-2", False)] def fake_service_is_up(self, service): return service['binary'] != u"nova-network" def fake_set_availability_zones(context, services): return services def fake_get_availability_zones(context): return ['nova'], [] class AvailabilityZoneApiTest(test.NoDBTestCase): def setUp(self): super(AvailabilityZoneApiTest, self).setUp() availability_zones.reset_cache() self.stubs.Set(db, 'service_get_all', fake_service_get_all) self.stubs.Set(availability_zones, 'set_availability_zones', fake_set_availability_zones) self.stubs.Set(servicegroup.API, 'service_is_up', fake_service_is_up) def test_filtered_availability_zones(self): az = availability_zone.AvailabilityZoneController() zones = ['zone1', 'internal'] expected = [{'zoneName': 'zone1', 'zoneState': {'available': True}, "hosts": None}] result = az._get_filtered_availability_zones(zones, True) self.assertEqual(result, expected) expected = [{'zoneName': 'zone1', 'zoneState': {'available': False}, "hosts": None}] result = az._get_filtered_availability_zones(zones, False) self.assertEqual(result, expected) def test_availability_zone_index(self): req = webob.Request.blank('/v2/fake/os-availability-zone') resp = req.get_response(fakes.wsgi_app()) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('availabilityZoneInfo', resp_dict) zones = resp_dict['availabilityZoneInfo'] self.assertEqual(len(zones), 2) self.assertEqual(zones[0]['zoneName'], u'zone-1') self.assertTrue(zones[0]['zoneState']['available']) self.assertIsNone(zones[0]['hosts']) self.assertEqual(zones[1]['zoneName'], u'zone-2') self.assertFalse(zones[1]['zoneState']['available']) self.assertIsNone(zones[1]['hosts']) def test_availability_zone_detail(self): def _formatZone(zone_dict): result = [] # Zone tree view item result.append({'zoneName': zone_dict['zoneName'], 'zoneState': u'available' if zone_dict['zoneState']['available'] else u'not available'}) if zone_dict['hosts'] is not None: for (host, services) in zone_dict['hosts'].items(): # Host tree view item result.append({'zoneName': u'|- %s' % host, 'zoneState': u''}) for (svc, state) in services.items(): # Service tree view item result.append({'zoneName': u'| |- %s' % svc, 'zoneState': u'%s %s %s' % ( 'enabled' if state['active'] else 'disabled', ':-)' if state['available'] else 'XXX', jsonutils.to_primitive( state['updated_at']))}) return result def _assertZone(zone, name, status): self.assertEqual(zone['zoneName'], name) self.assertEqual(zone['zoneState'], status) availabilityZone = availability_zone.AvailabilityZoneController() req = webob.Request.blank('/v2/fake/os-availability-zone/detail') req.method = 'GET' req.environ['nova.context'] = context.get_admin_context() resp_dict = availabilityZone.detail(req) self.assertIn('availabilityZoneInfo', resp_dict) zones = resp_dict['availabilityZoneInfo'] self.assertEqual(len(zones), 3) ''' availabilityZoneInfo field content in response body: [{'zoneName': 'zone-1', 'zoneState': {'available': True}, 'hosts': {'fake_host-1': { 'nova-compute': {'active': True, 'available': True, 'updated_at': datetime(2012, 12, 26, 14, 45, 25)}}}}, {'zoneName': 'internal', 'zoneState': {'available': True}, 'hosts': {'fake_host-1': { 'nova-sched': {'active': True, 'available': True, 'updated_at': datetime(2012, 12, 26, 14, 45, 25)}}, 'fake_host-2': { 'nova-network': {'active': True, 'available': False, 'updated_at': datetime(2012, 12, 26, 14, 45, 24)}}}}, {'zoneName': 'zone-2', 'zoneState': {'available': False}, 'hosts': None}] ''' l0 = [u'zone-1', u'available'] l1 = [u'|- fake_host-1', u''] l2 = [u'| |- nova-compute', u'enabled :-) 2012-12-26T14:45:25.000000'] l3 = [u'internal', u'available'] l4 = [u'|- fake_host-1', u''] l5 = [u'| |- nova-sched', u'enabled :-) 2012-12-26T14:45:25.000000'] l6 = [u'|- fake_host-2', u''] l7 = [u'| |- nova-network', u'enabled XXX 2012-12-26T14:45:24.000000'] l8 = [u'zone-2', u'not available'] z0 = _formatZone(zones[0]) z1 = _formatZone(zones[1]) z2 = _formatZone(zones[2]) self.assertEqual(len(z0), 3) self.assertEqual(len(z1), 5) self.assertEqual(len(z2), 1) _assertZone(z0[0], l0[0], l0[1]) _assertZone(z0[1], l1[0], l1[1]) _assertZone(z0[2], l2[0], l2[1]) _assertZone(z1[0], l3[0], l3[1]) _assertZone(z1[1], l4[0], l4[1]) _assertZone(z1[2], l5[0], l5[1]) _assertZone(z1[3], l6[0], l6[1]) _assertZone(z1[4], l7[0], l7[1]) _assertZone(z2[0], l8[0], l8[1]) def test_availability_zone_detail_no_services(self): expected_response = {'availabilityZoneInfo': [{'zoneState': {'available': True}, 'hosts': {}, 'zoneName': 'nova'}]} self.stubs.Set(availability_zones, 'get_availability_zones', fake_get_availability_zones) availabilityZone = availability_zone.AvailabilityZoneController() req = webob.Request.blank('/v2/fake/os-availability-zone/detail') req.method = 'GET' req.environ['nova.context'] = context.get_admin_context() resp_dict = availabilityZone.detail(req) self.assertThat(resp_dict, matchers.DictMatches(expected_response)) class AvailabilityZoneSerializerTest(test.NoDBTestCase): def test_availability_zone_index_detail_serializer(self): def _verify_zone(zone_dict, tree): self.assertEqual(tree.tag, 'availabilityZone') self.assertEqual(zone_dict['zoneName'], tree.get('name')) self.assertEqual(str(zone_dict['zoneState']['available']), tree[0].get('available')) for _idx, host_child in enumerate(tree[1]): self.assertIn(host_child.get('name'), zone_dict['hosts']) svcs = zone_dict['hosts'][host_child.get('name')] for _idx, svc_child in enumerate(host_child[0]): self.assertIn(svc_child.get('name'), svcs) svc = svcs[svc_child.get('name')] self.assertEqual(len(svc_child), 1) self.assertEqual(str(svc['available']), svc_child[0].get('available')) self.assertEqual(str(svc['active']), svc_child[0].get('active')) self.assertEqual(str(svc['updated_at']), svc_child[0].get('updated_at')) serializer = availability_zone.AvailabilityZonesTemplate() raw_availability_zones = \ [{'zoneName': 'zone-1', 'zoneState': {'available': True}, 'hosts': {'fake_host-1': { 'nova-compute': {'active': True, 'available': True, 'updated_at': datetime.datetime( 2012, 12, 26, 14, 45, 25)}}}}, {'zoneName': 'internal', 'zoneState': {'available': True}, 'hosts': {'fake_host-1': { 'nova-sched': {'active': True, 'available': True, 'updated_at': datetime.datetime( 2012, 12, 26, 14, 45, 25)}}, 'fake_host-2': { 'nova-network': {'active': True, 'available': False, 'updated_at': datetime.datetime( 2012, 12, 26, 14, 45, 24)}}}}, {'zoneName': 'zone-2', 'zoneState': {'available': False}, 'hosts': None}] text = serializer.serialize( dict(availabilityZoneInfo=raw_availability_zones)) tree = etree.fromstring(text) self.assertEqual('availabilityZones', tree.tag) self.assertEqual(len(raw_availability_zones), len(tree)) for idx, child in enumerate(tree): _verify_zone(raw_availability_zones[idx], child) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_server_groups.py0000664000175400017540000004706312323721477030223 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 Cisco Systems, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import server_groups from nova.api.openstack import wsgi from nova import context import nova.db from nova import exception from nova.objects import instance as instance_obj from nova.objects import instance_group as instance_group_obj from nova.openstack.common import uuidutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import utils FAKE_UUID1 = 'a47ae74e-ab08-447f-8eee-ffd43fc46c16' FAKE_UUID2 = 'c6e6430a-6563-4efa-9542-5e93c9e97d18' FAKE_UUID3 = 'b8713410-9ba3-e913-901b-13410ca90121' class AttrDict(dict): def __getattr__(self, k): return self[k] def server_group_template(**kwargs): sgroup = kwargs.copy() sgroup.setdefault('name', 'test') return sgroup def server_group_resp_template(**kwargs): sgroup = kwargs.copy() sgroup.setdefault('name', 'test') sgroup.setdefault('policies', []) sgroup.setdefault('members', []) sgroup.setdefault('metadata', {}) return sgroup def server_group_db(sg): attrs = sg.copy() if 'id' in attrs: attrs['uuid'] = attrs.pop('id') if 'policies' in attrs: policies = attrs.pop('policies') attrs['policies'] = policies else: attrs['policies'] = [] if 'members' in attrs: members = attrs.pop('members') attrs['members'] = members else: attrs['members'] = [] if 'metadata' in attrs: attrs['metadetails'] = attrs.pop('metadata') else: attrs['metadetails'] = {} attrs['deleted'] = 0 attrs['deleted_at'] = None attrs['created_at'] = None attrs['updated_at'] = None if 'user_id' not in attrs: attrs['user_id'] = 'user_id' if 'project_id' not in attrs: attrs['project_id'] = 'project_id' attrs['id'] = 7 return AttrDict(attrs) class ServerGroupTest(test.TestCase): def setUp(self): super(ServerGroupTest, self).setUp() self.controller = server_groups.ServerGroupController() self.app = fakes.wsgi_app(init_only=('os-server-groups',)) def test_create_server_group_with_no_policies(self): req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') sgroup = server_group_template() self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) def test_create_server_group_normal(self): req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') sgroup = server_group_template() policies = ['anti-affinity'] sgroup['policies'] = policies res_dict = self.controller.create(req, {'server_group': sgroup}) self.assertEqual(res_dict['server_group']['name'], 'test') self.assertTrue(uuidutils.is_uuid_like(res_dict['server_group']['id'])) self.assertEqual(res_dict['server_group']['policies'], policies) def _create_instance(self, context): instance = instance_obj.Instance(image_ref=1, node='node1', reservation_id='a', host='host1', project_id='fake', vm_state='fake', system_metadata={'key': 'value'}) instance.create(context) return instance def _create_instance_group(self, context, members): ig = instance_group_obj.InstanceGroup(name='fake_name', user_id='fake_user', project_id='fake', members=members) ig.create(context) return ig.uuid def _create_groups_and_instances(self, ctx): instances = [self._create_instance(ctx), self._create_instance(ctx)] members = [instance.uuid for instance in instances] ig_uuid = self._create_instance_group(ctx, members) return (ig_uuid, instances, members) def test_display_members(self): ctx = context.RequestContext('fake_user', 'fake') (ig_uuid, instances, members) = self._create_groups_and_instances(ctx) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') res_dict = self.controller.show(req, ig_uuid) result_members = res_dict['server_group']['members'] self.assertEqual(2, len(result_members)) for member in members: self.assertIn(member, result_members) def test_display_active_members_only(self): ctx = context.RequestContext('fake_user', 'fake') (ig_uuid, instances, members) = self._create_groups_and_instances(ctx) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') # delete an instance instances[1].destroy(ctx) # check that the instance does not exist self.assertRaises(exception.InstanceNotFound, instance_obj.Instance.get_by_uuid, ctx, instances[1].uuid) res_dict = self.controller.show(req, ig_uuid) result_members = res_dict['server_group']['members'] # check that only the active instance is displayed self.assertEqual(1, len(result_members)) self.assertIn(instances[0].uuid, result_members) def test_create_server_group_with_illegal_name(self): # blank name sgroup = server_group_template(name='', policies=['test_policy']) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # name with length 256 sgroup = server_group_template(name='1234567890' * 26, policies=['test_policy']) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # non-string name sgroup = server_group_template(name=12, policies=['test_policy']) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # name with leading spaces sgroup = server_group_template(name=' leading spaces', policies=['test_policy']) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # name with trailing spaces sgroup = server_group_template(name='trailing space ', policies=['test_policy']) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # name with all spaces sgroup = server_group_template(name=' ', policies=['test_policy']) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) def test_create_server_group_with_illegal_policies(self): # blank policy sgroup = server_group_template(name='fake-name', policies='') req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # policy as integer sgroup = server_group_template(name='fake-name', policies=7) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # policy as string sgroup = server_group_template(name='fake-name', policies='invalid') req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) # policy as None sgroup = server_group_template(name='fake-name', policies=None) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) def test_create_server_group_conflicting_policies(self): sgroup = server_group_template() policies = ['anti-affinity', 'affinity'] sgroup['policies'] = policies req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) def test_create_server_group_not_supported(self): sgroup = server_group_template() policies = ['storage-affinity', 'anti-affinity', 'rack-affinity'] sgroup['policies'] = policies req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'server_group': sgroup}) def test_create_server_group_with_no_body(self): req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, None) def test_create_server_group_with_no_server_group(self): body = {'no-instanceGroup': None} req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_list_server_group_by_tenant(self): groups = [] policies = ['anti-affinity'] members = [] metadata = {'key1': 'value1'} names = ['default-x', 'test'] sg1 = server_group_resp_template(id=str(1345), name=names[0], policies=policies, members=members, metadata=metadata) sg2 = server_group_resp_template(id=str(891), name=names[1], policies=policies, members=members, metadata=metadata) groups = [sg1, sg2] expected = {'server_groups': groups} def return_server_groups(context, project_id): return [server_group_db(sg) for sg in groups] self.stubs.Set(nova.db, 'instance_group_get_all_by_project_id', return_server_groups) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups') res_dict = self.controller.index(req) self.assertEqual(res_dict, expected) def test_list_server_group_all(self): all_groups = [] tenant_groups = [] policies = ['anti-affinity'] members = [] metadata = {'key1': 'value1'} names = ['default-x', 'test'] sg1 = server_group_resp_template(id=str(1345), name=names[0], policies=[], members=members, metadata=metadata) sg2 = server_group_resp_template(id=str(891), name=names[1], policies=policies, members=members, metadata={}) tenant_groups = [sg2] all_groups = [sg1, sg2] all = {'server_groups': all_groups} tenant_specific = {'server_groups': tenant_groups} def return_all_server_groups(context): return [server_group_db(sg) for sg in all_groups] self.stubs.Set(nova.db, 'instance_group_get_all', return_all_server_groups) def return_tenant_server_groups(context, project_id): return [server_group_db(sg) for sg in tenant_groups] self.stubs.Set(nova.db, 'instance_group_get_all_by_project_id', return_tenant_server_groups) path = '/v2/fake/os-server-groups?all_projects=True' req = fakes.HTTPRequest.blank(path, use_admin_context=True) res_dict = self.controller.index(req) self.assertEqual(res_dict, all) req = fakes.HTTPRequest.blank(path) res_dict = self.controller.index(req) self.assertEqual(res_dict, tenant_specific) def test_delete_server_group_by_id(self): sg = server_group_template(id='123') self.called = False def server_group_delete(context, id): self.called = True def return_server_group(context, group_id): self.assertEqual(sg['id'], group_id) return server_group_db(sg) self.stubs.Set(nova.db, 'instance_group_delete', server_group_delete) self.stubs.Set(nova.db, 'instance_group_get', return_server_group) req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups/123') resp = self.controller.delete(req, '123') self.assertTrue(self.called) self.assertEqual(resp.status_int, 204) def test_delete_non_existing_server_group(self): req = fakes.HTTPRequest.blank('/v2/fake/os-server-groups/invalid') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 'invalid') class TestServerGroupXMLDeserializer(test.TestCase): def setUp(self): super(TestServerGroupXMLDeserializer, self).setUp() self.deserializer = server_groups.ServerGroupXMLDeserializer() def test_create_request(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server_group": { "name": "test", "policies": [] }, } self.assertEqual(request['body'], expected) def test_update_request(self): serial_request = """ policy-1 policy-2 """ request = self.deserializer.deserialize(serial_request) expected = { "server_group": { "name": 'test', "policies": ['policy-1', 'policy-2'] }, } self.assertEqual(request['body'], expected) def test_create_request_no_name(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request) expected = { "server_group": { "policies": [] }, } self.assertEqual(request['body'], expected) def test_corrupt_xml(self): """Should throw a 400 error on corrupt xml.""" self.assertRaises( exception.MalformedRequestBody, self.deserializer.deserialize, utils.killer_xml_body()) class TestServerGroupXMLSerializer(test.TestCase): def setUp(self): super(TestServerGroupXMLSerializer, self).setUp() self.namespace = wsgi.XMLNS_V11 self.index_serializer = server_groups.ServerGroupsTemplate() self.default_serializer = server_groups.ServerGroupTemplate() def _tag(self, elem): tagname = elem.tag self.assertEqual(tagname[0], '{') tmp = tagname.partition('}') namespace = tmp[0][1:] self.assertEqual(namespace, self.namespace) return tmp[2] def _verify_server_group(self, raw_group, tree): policies = raw_group['policies'] members = raw_group['members'] metadata = raw_group['metadata'] self.assertEqual('server_group', self._tag(tree)) self.assertEqual(raw_group['id'], tree.get('id')) self.assertEqual(raw_group['name'], tree.get('name')) self.assertEqual(3, len(tree)) for child in tree: child_tag = self._tag(child) if child_tag == 'policies': self.assertEqual(len(policies), len(child)) for idx, gr_child in enumerate(child): self.assertEqual(self._tag(gr_child), 'policy') self.assertEqual(policies[idx], gr_child.text) elif child_tag == 'members': self.assertEqual(len(members), len(child)) for idx, gr_child in enumerate(child): self.assertEqual(self._tag(gr_child), 'member') self.assertEqual(members[idx], gr_child.text) elif child_tag == 'metadata': self.assertEqual(len(metadata), len(child)) metas = {} for idx, gr_child in enumerate(child): self.assertEqual(self._tag(gr_child), 'meta') key = gr_child.get('key') self.assertTrue(key in ['key1', 'key2']) metas[key] = gr_child.text self.assertEqual(len(metas), len(metadata)) for k in metadata: self.assertEqual(metadata[k], metas[k]) def _verify_server_group_brief(self, raw_group, tree): self.assertEqual('server_group', self._tag(tree)) self.assertEqual(raw_group['id'], tree.get('id')) self.assertEqual(raw_group['name'], tree.get('name')) def test_group_serializer(self): policies = ["policy-1", "policy-2"] members = ["1", "2"] metadata = dict(key1="value1", key2="value2") raw_group = dict( id='890', name='name', policies=policies, members=members, metadata=metadata) sg_group = dict(server_group=raw_group) text = self.default_serializer.serialize(sg_group) tree = etree.fromstring(text) self._verify_server_group(raw_group, tree) def test_groups_serializer(self): policies = ["policy-1", "policy-2", "policy-3"] members = ["1", "2", "3"] metadata = dict(key1="value1", key2="value2") groups = [dict( id='890', name='test', policies=policies[0:2], members=members[0:2], metadata=metadata), dict( id='123', name='default', policies=policies[2:], members=members[2:], metadata=metadata)] sg_groups = dict(server_groups=groups) text = self.index_serializer.serialize(sg_groups) tree = etree.fromstring(text) self.assertEqual('server_groups', self._tag(tree)) self.assertEqual(len(groups), len(tree)) for idx, child in enumerate(tree): self._verify_server_group_brief(groups[idx], child) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_fixed_ips.py0000664000175400017540000001700612323721477027262 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.contrib import fixed_ips from nova import context from nova import db from nova import exception from nova import test from nova.tests.api.openstack import fakes fake_fixed_ips = [{'id': 1, 'address': '192.168.1.1', 'network_id': 1, 'virtual_interface_id': 1, 'instance_uuid': '1', 'allocated': False, 'leased': False, 'reserved': False, 'host': None, 'deleted': False}, {'id': 2, 'address': '192.168.1.2', 'network_id': 1, 'virtual_interface_id': 2, 'instance_uuid': '2', 'allocated': False, 'leased': False, 'reserved': False, 'host': None, 'deleted': False}, {'id': 3, 'address': '10.0.0.2', 'network_id': 1, 'virtual_interface_id': 3, 'instance_uuid': '3', 'allocated': False, 'leased': False, 'reserved': False, 'host': None, 'deleted': True}, ] def fake_fixed_ip_get_by_address(context, address): for fixed_ip in fake_fixed_ips: if fixed_ip['address'] == address and not fixed_ip['deleted']: return fixed_ip raise exception.FixedIpNotFoundForAddress(address=address) def fake_fixed_ip_get_by_address_detailed(context, address): network = {'id': 1, 'cidr': "192.168.1.0/24"} for fixed_ip in fake_fixed_ips: if fixed_ip['address'] == address and not fixed_ip['deleted']: return (fixed_ip, FakeModel(network), None) raise exception.FixedIpNotFoundForAddress(address=address) def fake_fixed_ip_update(context, address, values): fixed_ip = fake_fixed_ip_get_by_address(context, address) if fixed_ip is None: raise exception.FixedIpNotFoundForAddress(address=address) else: for key in values: fixed_ip[key] = values[key] class FakeModel(object): """Stubs out for model.""" def __init__(self, values): self.values = values def __getattr__(self, name): return self.values[name] def __getitem__(self, key): if key in self.values: return self.values[key] else: raise NotImplementedError() def __repr__(self): return '' % self.values def fake_network_get_all(context): network = {'id': 1, 'cidr': "192.168.1.0/24"} return [FakeModel(network)] class FixedIpTest(test.NoDBTestCase): def setUp(self): super(FixedIpTest, self).setUp() self.stubs.Set(db, "fixed_ip_get_by_address", fake_fixed_ip_get_by_address) self.stubs.Set(db, "fixed_ip_get_by_address_detailed", fake_fixed_ip_get_by_address_detailed) self.stubs.Set(db, "fixed_ip_update", fake_fixed_ip_update) self.context = context.get_admin_context() self.controller = fixed_ips.FixedIPController() def test_fixed_ips_get(self): req = fakes.HTTPRequest.blank('/v2/fake/os-fixed-ips/192.168.1.1') res_dict = self.controller.show(req, '192.168.1.1') response = {'fixed_ip': {'cidr': '192.168.1.0/24', 'hostname': None, 'host': None, 'address': '192.168.1.1'}} self.assertEqual(response, res_dict) def test_fixed_ips_get_bad_ip_fail(self): req = fakes.HTTPRequest.blank('/v2/fake/os-fixed-ips/10.0.0.1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, '10.0.0.1') def test_fixed_ips_get_invalid_ip_address(self): req = fakes.HTTPRequest.blank('/v2/fake/os-fixed-ips/inv.ali.d.ip') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 'inv.ali.d.ip') def test_fixed_ips_get_deleted_ip_fail(self): req = fakes.HTTPRequest.blank('/v2/fake/os-fixed-ips/10.0.0.2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, '10.0.0.2') def test_fixed_ip_reserve(self): fake_fixed_ips[0]['reserved'] = False body = {'reserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/192.168.1.1/action') result = self.controller.action(req, "192.168.1.1", body) self.assertEqual('202 Accepted', result.status) self.assertEqual(fake_fixed_ips[0]['reserved'], True) def test_fixed_ip_reserve_bad_ip(self): body = {'reserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/10.0.0.1/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req, '10.0.0.1', body) def test_fixed_ip_reserve_invalid_ip_address(self): body = {'reserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/inv.ali.d.ip/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req, 'inv.ali.d.ip', body) def test_fixed_ip_reserve_deleted_ip(self): body = {'reserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/10.0.0.2/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req, '10.0.0.2', body) def test_fixed_ip_unreserve(self): fake_fixed_ips[0]['reserved'] = True body = {'unreserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/192.168.1.1/action') result = self.controller.action(req, "192.168.1.1", body) self.assertEqual('202 Accepted', result.status) self.assertEqual(fake_fixed_ips[0]['reserved'], False) def test_fixed_ip_unreserve_bad_ip(self): body = {'unreserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/10.0.0.1/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req, '10.0.0.1', body) def test_fixed_ip_unreserve_invalid_ip_address(self): body = {'unreserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/inv.ali.d.ip/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req, 'inv.ali.d.ip', body) def test_fixed_ip_unreserve_deleted_ip(self): body = {'unreserve': None} req = fakes.HTTPRequest.blank( '/v2/fake/os-fixed-ips/10.0.0.2/action') self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req, '10.0.0.2', body) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavors_extra_specs.py0000664000175400017540000002440412323721510031350 0ustar jenkinsjenkins00000000000000# Copyright 2011 University of Southern California # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock import webob from nova.api.openstack.compute.contrib import flavorextraspecs import nova.db from nova import exception from nova import test from nova.tests.api.openstack import fakes def return_create_flavor_extra_specs(context, flavor_id, extra_specs): return stub_flavor_extra_specs() def return_flavor_extra_specs(context, flavor_id): return stub_flavor_extra_specs() def return_flavor_extra_specs_item(context, flavor_id, key): return {key: stub_flavor_extra_specs()[key]} def return_empty_flavor_extra_specs(context, flavor_id): return {} def delete_flavor_extra_specs(context, flavor_id, key): pass def stub_flavor_extra_specs(): specs = { "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} return specs class FlavorsExtraSpecsTest(test.TestCase): def setUp(self): super(FlavorsExtraSpecsTest, self).setUp() fakes.stub_out_key_pair_funcs(self.stubs) self.controller = flavorextraspecs.FlavorExtraSpecsController() def test_index(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get', return_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs') res_dict = self.controller.index(req, 1) self.assertEqual('value1', res_dict['extra_specs']['key1']) def test_index_no_data(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get', return_empty_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs') res_dict = self.controller.index(req, 1) self.assertEqual(0, len(res_dict['extra_specs'])) def test_show(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get_item', return_flavor_extra_specs_item) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key5') res_dict = self.controller.show(req, 1, 'key5') self.assertEqual('value5', res_dict['key5']) def test_show_spec_not_found(self): self.stubs.Set(nova.db, 'flavor_extra_specs_get', return_empty_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 1, 'key6') def test_delete(self): self.stubs.Set(nova.db, 'flavor_extra_specs_delete', delete_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key5', use_admin_context=True) self.controller.delete(req, 1, 'key5') def test_delete_no_admin(self): self.stubs.Set(nova.db, 'flavor_extra_specs_delete', delete_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key5') self.assertRaises(exception.NotAuthorized, self.controller.delete, req, 1, 'key 5') def test_delete_spec_not_found(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key6', use_admin_context=True) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1, 'key6') def test_create(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"extra_specs": {"key1": "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs', use_admin_context=True) res_dict = self.controller.create(req, 1, body) self.assertEqual('value1', res_dict['extra_specs']['key1']) def test_create_no_admin(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"extra_specs": {"key1": "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs') self.assertRaises(exception.NotAuthorized, self.controller.create, req, 1, body) def test_create_empty_body(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, 1, '') @mock.patch('nova.db.flavor_extra_specs_update_or_create') def test_create_invalid_specs_key(self, mock_flavor_extra_specs): invalid_keys = ("key1/", "", "$$akey$", "!akey", "") mock_flavor_extra_specs.side_effects = return_create_flavor_extra_specs for key in invalid_keys: body = {"extra_specs": {key: "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, 1, body) @mock.patch('nova.db.flavor_extra_specs_update_or_create') def test_create_valid_specs_key(self, mock_flavor_extra_specs): valid_keys = ("key1", "month.price", "I_am-a Key", "finance:g2") mock_flavor_extra_specs.side_effects = return_create_flavor_extra_specs for key in valid_keys: body = {"extra_specs": {key: "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs', use_admin_context=True) res_dict = self.controller.create(req, 1, body) self.assertEqual('value1', res_dict['extra_specs'][key]) def test_update_item(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key1', use_admin_context=True) res_dict = self.controller.update(req, 1, 'key1', body) self.assertEqual('value1', res_dict['key1']) def test_update_item_no_admin(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key1') self.assertRaises(exception.NotAuthorized, self.controller.update, req, 1, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key1', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'key1', '') def test_update_item_too_many_keys(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1", "key2": "value2"} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs' + '/key1', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(nova.db, 'flavor_extra_specs_update_or_create', return_create_flavor_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequest.blank('/v2/fake/flavors/1/os-extra_specs/bad', use_admin_context=True) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'bad', body) class FlavorsExtraSpecsXMLSerializerTest(test.TestCase): def test_serializer(self): serializer = flavorextraspecs.ExtraSpecsTemplate() expected = ("\n" 'value1') text = serializer.serialize(dict(extra_specs={"key1": "value1"})) self.assertEqual(text, expected) def test_show_update_serializer(self): serializer = flavorextraspecs.ExtraSpecTemplate() expected = ("\n" 'value1') text = serializer.serialize(dict({"key1": "value1"})) self.assertEqual(text, expected) def test_serializer_with_colon_tagname(self): # Our test object to serialize obj = {'extra_specs': {'foo:bar': '999'}} serializer = flavorextraspecs.ExtraSpecsTemplate() expected_xml = (("\n" '999' '')) result = serializer.serialize(obj) self.assertEqual(expected_xml, result) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_hypervisors.py0000664000175400017540000004631012323721477027705 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree from webob import exc from nova.api.openstack.compute.contrib import hypervisors from nova.api.openstack import extensions from nova import context from nova import db from nova.db.sqlalchemy import api as db_api from nova import exception from nova import test from nova.tests.api.openstack import fakes TEST_HYPERS = [ dict(id=1, service_id=1, service=dict(id=1, host="compute1", binary="nova-compute", topic="compute_topic", report_count=5, disabled=False, availability_zone="nova"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1'), dict(id=2, service_id=2, service=dict(id=2, host="compute2", binary="nova-compute", topic="compute_topic", report_count=5, disabled=False, availability_zone="nova"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper2", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='2.2.2.2')] TEST_SERVERS = [dict(name="inst1", uuid="uuid1", host="compute1"), dict(name="inst2", uuid="uuid2", host="compute2"), dict(name="inst3", uuid="uuid3", host="compute1"), dict(name="inst4", uuid="uuid4", host="compute2")] @db_api.require_admin_context def fake_compute_node_get_all(context): return TEST_HYPERS def fake_compute_node_search_by_hypervisor(context, hypervisor_re): return TEST_HYPERS def fake_compute_node_get(context, compute_id): for hyper in TEST_HYPERS: if hyper['id'] == compute_id: return hyper raise exception.ComputeHostNotFound(host=compute_id) def fake_compute_node_statistics(context): result = dict( count=0, vcpus=0, memory_mb=0, local_gb=0, vcpus_used=0, memory_mb_used=0, local_gb_used=0, free_ram_mb=0, free_disk_gb=0, current_workload=0, running_vms=0, disk_available_least=0, ) for hyper in TEST_HYPERS: for key in result: if key == 'count': result[key] += 1 else: result[key] += hyper[key] return result def fake_instance_get_all_by_host(context, host): results = [] for inst in TEST_SERVERS: if inst['host'] == host: results.append(inst) return results class HypervisorsTest(test.NoDBTestCase): def setUp(self): super(HypervisorsTest, self).setUp() self.context = context.get_admin_context() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = hypervisors.HypervisorsController(self.ext_mgr) self.stubs.Set(db, 'compute_node_get_all', fake_compute_node_get_all) self.stubs.Set(db, 'compute_node_search_by_hypervisor', fake_compute_node_search_by_hypervisor) self.stubs.Set(db, 'compute_node_get', fake_compute_node_get) self.stubs.Set(db, 'compute_node_statistics', fake_compute_node_statistics) self.stubs.Set(db, 'instance_get_all_by_host', fake_instance_get_all_by_host) def test_view_hypervisor_nodetail_noservers(self): result = self.controller._view_hypervisor(TEST_HYPERS[0], False) self.assertEqual(result, dict(id=1, hypervisor_hostname="hyper1")) def test_view_hypervisor_detail_noservers(self): result = self.controller._view_hypervisor(TEST_HYPERS[0], True) self.assertEqual(result, dict( id=1, hypervisor_hostname="hyper1", vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, service=dict(id=1, host='compute1'))) def test_view_hypervisor_servers(self): result = self.controller._view_hypervisor(TEST_HYPERS[0], False, TEST_SERVERS) self.assertEqual(result, dict( id=1, hypervisor_hostname="hyper1", servers=[ dict(name="inst1", uuid="uuid1"), dict(name="inst2", uuid="uuid2"), dict(name="inst3", uuid="uuid3"), dict(name="inst4", uuid="uuid4")])) def test_index(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors', use_admin_context=True) result = self.controller.index(req) self.assertEqual(result, dict(hypervisors=[ dict(id=1, hypervisor_hostname="hyper1"), dict(id=2, hypervisor_hostname="hyper2")])) def test_detail(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/detail', use_admin_context=True) result = self.controller.detail(req) self.assertEqual(result, dict(hypervisors=[ dict(id=1, service=dict(id=1, host="compute1"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100), dict(id=2, service=dict(id=2, host="compute2"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper2", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100)])) def test_show_noid(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/3') self.assertRaises(exc.HTTPNotFound, self.controller.show, req, '3') def test_show_withid(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/1') result = self.controller.show(req, '1') self.assertEqual(result, dict(hypervisor=dict( id=1, service=dict(id=1, host="compute1"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100))) def test_uptime_noid(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/3') self.assertRaises(exc.HTTPNotFound, self.controller.show, req, '3') def test_uptime_notimplemented(self): def fake_get_host_uptime(context, hyp): raise exc.HTTPNotImplemented() self.stubs.Set(self.controller.host_api, 'get_host_uptime', fake_get_host_uptime) req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/1') self.assertRaises(exc.HTTPNotImplemented, self.controller.uptime, req, '1') def test_uptime_implemented(self): def fake_get_host_uptime(context, hyp): return "fake uptime" self.stubs.Set(self.controller.host_api, 'get_host_uptime', fake_get_host_uptime) req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/1') result = self.controller.uptime(req, '1') self.assertEqual(result, dict(hypervisor=dict( id=1, hypervisor_hostname="hyper1", uptime="fake uptime"))) def test_search(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/hyper/search') result = self.controller.search(req, 'hyper') self.assertEqual(result, dict(hypervisors=[ dict(id=1, hypervisor_hostname="hyper1"), dict(id=2, hypervisor_hostname="hyper2")])) def test_servers(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/hyper/servers') result = self.controller.servers(req, 'hyper') self.assertEqual(result, dict(hypervisors=[ dict(id=1, hypervisor_hostname="hyper1", servers=[ dict(name="inst1", uuid="uuid1"), dict(name="inst3", uuid="uuid3")]), dict(id=2, hypervisor_hostname="hyper2", servers=[ dict(name="inst2", uuid="uuid2"), dict(name="inst4", uuid="uuid4")])])) def test_statistics(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/statistics') result = self.controller.statistics(req) self.assertEqual(result, dict(hypervisor_statistics=dict( count=2, vcpus=8, memory_mb=20 * 1024, local_gb=500, vcpus_used=4, memory_mb_used=10 * 1024, local_gb_used=250, free_ram_mb=10 * 1024, free_disk_gb=250, current_workload=4, running_vms=4, disk_available_least=200))) class HypervisorsSerializersTest(test.NoDBTestCase): def compare_to_exemplar(self, exemplar, hyper): # Check attributes for key, value in exemplar.items(): if key in ('service', 'servers'): # These turn into child elements and get tested # separately below... continue self.assertEqual(str(value), hyper.get(key)) # Check child elements required_children = set([child for child in ('service', 'servers') if child in exemplar]) for child in hyper: self.assertIn(child.tag, required_children) required_children.remove(child.tag) # Check the node... if child.tag == 'service': for key, value in exemplar['service'].items(): self.assertEqual(str(value), child.get(key)) elif child.tag == 'servers': for idx, grandchild in enumerate(child): self.assertEqual('server', grandchild.tag) for key, value in exemplar['servers'][idx].items(): self.assertEqual(str(value), grandchild.get(key)) # Are they all accounted for? self.assertEqual(len(required_children), 0) def test_index_serializer(self): serializer = hypervisors.HypervisorIndexTemplate() exemplar = dict(hypervisors=[ dict(hypervisor_hostname="hyper1", id=1), dict(hypervisor_hostname="hyper2", id=2)]) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('hypervisors', tree.tag) self.assertEqual(len(exemplar['hypervisors']), len(tree)) for idx, hyper in enumerate(tree): self.assertEqual('hypervisor', hyper.tag) self.compare_to_exemplar(exemplar['hypervisors'][idx], hyper) def test_detail_serializer(self): serializer = hypervisors.HypervisorDetailTemplate() exemplar = dict(hypervisors=[ dict(hypervisor_hostname="hyper1", id=1, vcpus=4, memory_mb=10 * 1024, local_gb=500, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=250, hypervisor_type='xen', hypervisor_version=3, free_ram_mb=5 * 1024, free_disk_gb=250, current_workload=2, running_vms=2, cpu_info="json data", disk_available_least=100, host_ip='1.1.1.1', service=dict(id=1, host="compute1")), dict(hypervisor_hostname="hyper2", id=2, vcpus=4, memory_mb=10 * 1024, local_gb=500, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=250, hypervisor_type='xen', hypervisor_version=3, free_ram_mb=5 * 1024, free_disk_gb=250, current_workload=2, running_vms=2, cpu_info="json data", disk_available_least=100, host_ip='2.2.2.2', service=dict(id=2, host="compute2"))]) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('hypervisors', tree.tag) self.assertEqual(len(exemplar['hypervisors']), len(tree)) for idx, hyper in enumerate(tree): self.assertEqual('hypervisor', hyper.tag) self.compare_to_exemplar(exemplar['hypervisors'][idx], hyper) def test_show_serializer(self): serializer = hypervisors.HypervisorTemplate() exemplar = dict(hypervisor=dict( hypervisor_hostname="hyper1", id=1, vcpus=4, memory_mb=10 * 1024, local_gb=500, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=250, hypervisor_type='xen', hypervisor_version=3, free_ram_mb=5 * 1024, free_disk_gb=250, current_workload=2, running_vms=2, cpu_info="json data", disk_available_least=100, host_ip='1.1.1.1', service=dict(id=1, host="compute1"))) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('hypervisor', tree.tag) self.compare_to_exemplar(exemplar['hypervisor'], tree) def test_uptime_serializer(self): serializer = hypervisors.HypervisorUptimeTemplate() exemplar = dict(hypervisor=dict( hypervisor_hostname="hyper1", id=1, uptime='fake uptime')) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('hypervisor', tree.tag) self.compare_to_exemplar(exemplar['hypervisor'], tree) def test_servers_serializer(self): serializer = hypervisors.HypervisorServersTemplate() exemplar = dict(hypervisors=[ dict(hypervisor_hostname="hyper1", id=1, servers=[ dict(name="inst1", uuid="uuid1"), dict(name="inst2", uuid="uuid2")]), dict(hypervisor_hostname="hyper2", id=2, servers=[ dict(name="inst3", uuid="uuid3"), dict(name="inst4", uuid="uuid4")])]) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('hypervisors', tree.tag) self.assertEqual(len(exemplar['hypervisors']), len(tree)) for idx, hyper in enumerate(tree): self.assertEqual('hypervisor', hyper.tag) self.compare_to_exemplar(exemplar['hypervisors'][idx], hyper) def test_statistics_serializer(self): serializer = hypervisors.HypervisorStatisticsTemplate() exemplar = dict(hypervisor_statistics=dict( count=2, vcpus=8, memory_mb=20 * 1024, local_gb=500, vcpus_used=4, memory_mb_used=10 * 1024, local_gb_used=250, free_ram_mb=10 * 1024, free_disk_gb=250, current_workload=4, running_vms=4, disk_available_least=200)) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('hypervisor_statistics', tree.tag) self.compare_to_exemplar(exemplar['hypervisor_statistics'], tree) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_image_size.py0000664000175400017540000000747212323721477027432 0ustar jenkinsjenkins00000000000000# Copyright 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import image_size from nova.image import glance from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes NOW_API_FORMAT = "2010-10-11T10:30:22Z" IMAGES = [{ 'id': '123', 'name': 'public image', 'metadata': {'key1': 'value1'}, 'updated': NOW_API_FORMAT, 'created': NOW_API_FORMAT, 'status': 'ACTIVE', 'progress': 100, 'minDisk': 10, 'minRam': 128, 'size': 12345678, "links": [{ "rel": "self", "href": "http://localhost/v2/fake/images/123", }, { "rel": "bookmark", "href": "http://localhost/fake/images/123", }], }, { 'id': '124', 'name': 'queued snapshot', 'updated': NOW_API_FORMAT, 'created': NOW_API_FORMAT, 'status': 'SAVING', 'progress': 25, 'minDisk': 0, 'minRam': 0, 'size': 87654321, "links": [{ "rel": "self", "href": "http://localhost/v2/fake/images/124", }, { "rel": "bookmark", "href": "http://localhost/fake/images/124", }], }] def fake_show(*args, **kwargs): return IMAGES[0] def fake_detail(*args, **kwargs): return IMAGES class ImageSizeTest(test.NoDBTestCase): content_type = 'application/json' prefix = 'OS-EXT-IMG-SIZE' def setUp(self): super(ImageSizeTest, self).setUp() self.stubs.Set(glance.GlanceImageService, 'show', fake_show) self.stubs.Set(glance.GlanceImageService, 'detail', fake_detail) self.flags(osapi_compute_extension=['nova.api.openstack.compute' '.contrib.image_size.Image_size']) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app()) return res def _get_image(self, body): return jsonutils.loads(body).get('image') def _get_images(self, body): return jsonutils.loads(body).get('images') def assertImageSize(self, image, size): self.assertEqual(image.get('%s:size' % self.prefix), size) def test_show(self): url = '/v2/fake/images/1' res = self._make_request(url) self.assertEqual(res.status_int, 200) image = self._get_image(res.body) self.assertImageSize(image, 12345678) def test_detail(self): url = '/v2/fake/images/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) images = self._get_images(res.body) self.assertImageSize(images[0], 12345678) self.assertImageSize(images[1], 87654321) class ImageSizeXmlTest(ImageSizeTest): content_type = 'application/xml' prefix = '{%s}' % image_size.Image_size.namespace def _get_image(self, body): return etree.XML(body) def _get_images(self, body): return etree.XML(body).getchildren() def assertImageSize(self, image, size): self.assertEqual(int(image.get('%ssize' % self.prefix)), size) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py0000664000175400017540000004352512323721477030116 0ustar jenkinsjenkins00000000000000# Copyright 2011 Andrew Bogott for the Wikimedia Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import webob from nova.api.openstack.compute.contrib import flavor_access from nova.api.openstack.compute.contrib import flavormanage from nova.compute import flavors from nova import context from nova import db from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_flavor_by_flavor_id(flavorid, ctxt=None, read_deleted='yes'): if flavorid == 'failtest': raise exception.NotFound("Not found sucka!") elif not str(flavorid) == '1234': raise Exception("This test expects flavorid 1234, not %s" % flavorid) if read_deleted != 'no': raise test.TestingException("Should not be reading deleted") return { 'root_gb': 1, 'ephemeral_gb': 1, 'name': u'frob', 'deleted': False, 'created_at': datetime.datetime(2012, 1, 19, 18, 49, 30, 877329), 'updated_at': None, 'memory_mb': 256, 'vcpus': 1, 'flavorid': flavorid, 'swap': 0, 'rxtx_factor': 1.0, 'extra_specs': {}, 'deleted_at': None, 'vcpu_weight': None, 'id': 7, 'is_public': True, 'disabled': False, } def fake_destroy(flavorname): pass def fake_create(context, kwargs): flavorid = kwargs.get('flavorid') if flavorid is None: flavorid = 1234 newflavor = {'flavorid': flavorid} newflavor["name"] = kwargs.get('name') newflavor["memory_mb"] = int(kwargs.get('memory_mb')) newflavor["vcpus"] = int(kwargs.get('vcpus')) newflavor["root_gb"] = int(kwargs.get('root_gb')) newflavor["ephemeral_gb"] = int(kwargs.get('ephemeral_gb')) newflavor["swap"] = kwargs.get('swap') newflavor["rxtx_factor"] = float(kwargs.get('rxtx_factor')) newflavor["is_public"] = bool(kwargs.get('is_public')) return newflavor class FlavorManageTest(test.NoDBTestCase): def setUp(self): super(FlavorManageTest, self).setUp() self.stubs.Set(flavors, "get_flavor_by_flavor_id", fake_get_flavor_by_flavor_id) self.stubs.Set(flavors, "destroy", fake_destroy) self.stubs.Set(db, "flavor_create", fake_create) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Flavormanage', 'Flavorextradata', 'Flavor_access', 'Flavor_rxtx', 'Flavor_swap']) self.controller = flavormanage.FlavorManageController() self.app = fakes.wsgi_app(init_only=('flavors',)) def test_delete(self): req = fakes.HTTPRequest.blank('/v2/123/flavors/1234') res = self.controller._delete(req, 1234) self.assertEqual(res.status_int, 202) # subsequent delete should fail self.assertRaises(webob.exc.HTTPNotFound, self.controller._delete, req, "failtest") def test_create(self): expected = { "flavor": { "name": "azAZ09. -_", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "id": unicode('1234'), "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) def test_create_invalid_name(self): self.stubs.UnsetAll() expected = { "flavor": { "name": "bad !@#!$% name", 'id': "1", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_flavor_name_is_whitespace(self): request_dict = { "flavor": { "name": " ", 'id': "12345", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(request_dict) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_flavor_name_with_leading_trailing_whitespace(self): request_dict = { "flavor": { "name": " test ", 'id': "12345", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(request_dict) res = req.get_response(self.app) self.assertEqual(res.status_code, 200) body = jsonutils.loads(res.body) self.assertEqual("test", body["flavor"]["name"]) def test_create_public_default(self): flavor = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "id": 1234, "swap": 512, "rxtx_factor": 1, } } expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "id": unicode(1234), "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(flavor) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) def test_create_without_flavorid(self): expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) def test_create_without_flavorname(self): expected = { "flavor": { "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_create_empty_body(self): self.stubs.UnsetAll() expected = { "flavor": {} } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_no_body(self): self.stubs.UnsetAll() expected = {} url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_invalid_format_body(self): self.stubs.UnsetAll() expected = { "flavor": [] } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_invalid_flavorid(self): self.stubs.UnsetAll() expected = { "flavor": { "name": "test", 'id': "!@#!$#!$^#&^$&", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_check_flavor_id_length(self): self.stubs.UnsetAll() MAX_LENGTH = 255 expected = { "flavor": { "name": "test", 'id': "a" * (MAX_LENGTH + 1), "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_create_with_leading_trailing_whitespaces_in_flavor_id(self): self.stubs.UnsetAll() expected = { "flavor": { "name": "test", 'id': " bad_id ", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_code, 400) def test_flavor_exists_exception_returns_409(self): expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "id": 1235, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True, } } def fake_create(name, memory_mb, vcpus, root_gb, ephemeral_gb, flavorid, swap, rxtx_factor, is_public): raise exception.FlavorExists(name=name) self.stubs.Set(flavors, "create", fake_create) url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) self.assertEqual(res.status_int, 409) def test_invalid_memory_mb(self): """Check negative and decimal number can't be accepted.""" self.stubs.UnsetAll() self.assertRaises(exception.InvalidInput, flavors.create, "abc", -512, 2, 1, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcd", 512.2, 2, 1, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcde", None, 2, 1, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcdef", 512, 2, None, 1, 1234, 512, 1, True) self.assertRaises(exception.InvalidInput, flavors.create, "abcdef", "test_memory_mb", 2, None, 1, 1234, 512, 1, True) class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} class PrivateFlavorManageTest(test.TestCase): def setUp(self): super(PrivateFlavorManageTest, self).setUp() # self.stubs.Set(flavors, # "get_flavor_by_flavor_id", # fake_get_flavor_by_flavor_id) # self.stubs.Set(flavors, "destroy", fake_destroy) # self.stubs.Set(flavors, "create", fake_create) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Flavormanage', 'Flavorextradata', 'Flavor_access', 'Flavor_rxtx', 'Flavor_swap']) self.controller = flavormanage.FlavorManageController() self.flavor_access_controller = flavor_access.FlavorAccessController() self.app = fakes.wsgi_app(init_only=('flavors',)) def test_create_private_flavor_should_not_grant_flavor_access(self): expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": False } } ctxt = context.RequestContext('fake', 'fake', is_admin=True, auth_token=True) self.app = fakes.wsgi_app(init_only=('flavors',), fake_auth_context=ctxt) url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) flavor_access_body = self.flavor_access_controller.index( FakeRequest(), body["flavor"]["id"]) expected_flavor_access_body = { "tenant_id": "%s" % ctxt.project_id, "flavor_id": "%s" % body["flavor"]["id"] } self.assertNotIn(expected_flavor_access_body, flavor_access_body["flavor_access"]) def test_create_public_flavor_should_not_create_flavor_access(self): expected = { "flavor": { "name": "test", "ram": 512, "vcpus": 2, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 1, "swap": 512, "rxtx_factor": 1, "os-flavor-access:is_public": True } } ctxt = context.RequestContext('fake', 'fake', is_admin=True, auth_token=True) self.app = fakes.wsgi_app(init_only=('flavors',), fake_auth_context=ctxt) self.mox.StubOutWithMock(flavors, "add_flavor_access") self.mox.ReplayAll() url = '/v2/fake/flavors' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(expected) res = req.get_response(self.app) body = jsonutils.loads(res.body) for key in expected["flavor"]: self.assertEqual(body["flavor"][key], expected["flavor"][key]) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_virtual_interfaces.py0000664000175400017540000001131112323721477031172 0ustar jenkinsjenkins00000000000000# Copyright (C) 2011 Midokura KK # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import virtual_interfaces from nova.api.openstack import wsgi from nova import compute from nova.compute import api as compute_api from nova import context from nova import exception from nova import network from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' def compute_api_get(self, context, instance_id, expected_attrs=None, want_objects=False): return dict(uuid=FAKE_UUID, id=instance_id, instance_type_id=1, host='bob') def get_vifs_by_instance(self, context, instance_id): return [{'uuid': '00000000-0000-0000-0000-00000000000000000', 'address': '00-00-00-00-00-00'}, {'uuid': '11111111-1111-1111-1111-11111111111111111', 'address': '11-11-11-11-11-11'}] class FakeRequest(object): def __init__(self, context): self.environ = {'nova.context': context} class ServerVirtualInterfaceTest(test.NoDBTestCase): def setUp(self): super(ServerVirtualInterfaceTest, self).setUp() self.stubs.Set(compute.api.API, "get", compute_api_get) self.stubs.Set(network.api.API, "get_vifs_by_instance", get_vifs_by_instance) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Virtual_interfaces']) def test_get_virtual_interfaces_list(self): url = '/v2/fake/servers/abcd/os-virtual-interfaces' req = webob.Request.blank(url) res = req.get_response(fakes.wsgi_app( init_only=('os-virtual-interfaces',))) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) response = {'virtual_interfaces': [ {'id': '00000000-0000-0000-0000-00000000000000000', 'mac_address': '00-00-00-00-00-00'}, {'id': '11111111-1111-1111-1111-11111111111111111', 'mac_address': '11-11-11-11-11-11'}]} self.assertEqual(res_dict, response) def test_vif_instance_not_found(self): self.mox.StubOutWithMock(compute_api.API, 'get') fake_context = context.RequestContext('fake', 'fake') fake_req = FakeRequest(fake_context) compute_api.API.get(fake_context, 'fake_uuid', expected_attrs=None, want_objects=False).AndRaise( exception.InstanceNotFound(instance_id='instance-0000')) self.mox.ReplayAll() self.assertRaises( webob.exc.HTTPNotFound, virtual_interfaces.ServerVirtualInterfaceController().index, fake_req, 'fake_uuid') class ServerVirtualInterfaceSerializerTest(test.NoDBTestCase): def setUp(self): super(ServerVirtualInterfaceSerializerTest, self).setUp() self.namespace = wsgi.XMLNS_V11 self.serializer = virtual_interfaces.VirtualInterfaceTemplate() def _tag(self, elem): tagname = elem.tag self.assertEqual(tagname[0], '{') tmp = tagname.partition('}') namespace = tmp[0][1:] self.assertEqual(namespace, self.namespace) return tmp[2] def test_serializer(self): raw_vifs = [dict( id='uuid1', mac_address='aa:bb:cc:dd:ee:ff'), dict( id='uuid2', mac_address='bb:aa:dd:cc:ff:ee')] vifs = dict(virtual_interfaces=raw_vifs) text = self.serializer.serialize(vifs) tree = etree.fromstring(text) self.assertEqual('virtual_interfaces', self._tag(tree)) self.assertEqual(len(raw_vifs), len(tree)) for idx, child in enumerate(tree): self.assertEqual('virtual_interface', self._tag(child)) self.assertEqual(raw_vifs[idx]['id'], child.get('id')) self.assertEqual(raw_vifs[idx]['mac_address'], child.get('mac_address')) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_neutron_security_groups.py0000664000175400017540000011042312323721477032325 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nicira, Inc. # All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from lxml import etree from neutronclient.common import exceptions as n_exc from neutronclient.neutron import v2_0 as neutronv20 from oslo.config import cfg import webob from nova.api.openstack.compute.contrib import security_groups from nova.api.openstack import xmlutil from nova import compute from nova import context import nova.db from nova import exception from nova.network import neutronv2 from nova.network.neutronv2 import api as neutron_api from nova.network.security_group import neutron_driver from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack.compute.contrib import test_security_groups from nova.tests.api.openstack import fakes class TestNeutronSecurityGroupsTestCase(test.TestCase): def setUp(self): super(TestNeutronSecurityGroupsTestCase, self).setUp() cfg.CONF.set_override('security_group_api', 'neutron') self.original_client = neutronv2.get_client neutronv2.get_client = get_client def tearDown(self): neutronv2.get_client = self.original_client get_client()._reset() super(TestNeutronSecurityGroupsTestCase, self).tearDown() class TestNeutronSecurityGroups( test_security_groups.TestSecurityGroups, TestNeutronSecurityGroupsTestCase): def _create_sg_template(self, **kwargs): sg = test_security_groups.security_group_template(**kwargs) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') return self.controller.create(req, {'security_group': sg}) def _create_network(self): body = {'network': {'name': 'net1'}} neutron = get_client() net = neutron.create_network(body) body = {'subnet': {'network_id': net['network']['id'], 'cidr': '10.0.0.0/24'}} neutron.create_subnet(body) return net def _create_port(self, **kwargs): body = {'port': {}} fields = ['security_groups', 'device_id', 'network_id', 'port_security_enabled'] for field in fields: if field in kwargs: body['port'][field] = kwargs[field] neutron = get_client() return neutron.create_port(body) def _create_security_group(self, **kwargs): body = {'security_group': {}} fields = ['name', 'description'] for field in fields: if field in kwargs: body['security_group'][field] = kwargs[field] neutron = get_client() return neutron.create_security_group(body) def test_create_security_group_with_no_description(self): # Neutron's security group description field is optional. pass def test_create_security_group_with_blank_name(self): # Neutron's security group name field is optional. pass def test_create_security_group_with_whitespace_name(self): # Neutron allows security group name to be whitespace. pass def test_create_security_group_with_blank_description(self): # Neutron's security group description field is optional. pass def test_create_security_group_with_whitespace_description(self): # Neutron allows description to be whitespace. pass def test_create_security_group_with_duplicate_name(self): # Neutron allows duplicate names for security groups. pass def test_create_security_group_non_string_name(self): # Neutron allows security group name to be non string. pass def test_create_security_group_non_string_description(self): # Neutron allows non string description. pass def test_create_security_group_quota_limit(self): # Enforced by Neutron server. pass def test_update_security_group(self): # Enforced by Neutron server. pass def test_get_security_group_list(self): self._create_sg_template().get('security_group') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') list_dict = self.controller.index(req) self.assertEqual(len(list_dict['security_groups']), 2) def test_get_security_group_list_all_tenants(self): pass def test_get_security_group_by_instance(self): sg = self._create_sg_template().get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg['id']], device_id=test_security_groups.FAKE_UUID1) expected = [{'rules': [], 'tenant_id': 'fake_tenant', 'id': sg['id'], 'name': 'test', 'description': 'test-description'}] self.stubs.Set(nova.db, 'instance_get_by_uuid', test_security_groups.return_server_by_uuid) req = fakes.HTTPRequest.blank('/v2/fake/servers/%s/os-security-groups' % test_security_groups.FAKE_UUID1) res_dict = self.server_controller.index( req, test_security_groups.FAKE_UUID1)['security_groups'] self.assertEqual(expected, res_dict) def test_get_security_group_by_id(self): sg = self._create_sg_template().get('security_group') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/%s' % sg['id']) res_dict = self.controller.show(req, sg['id']) expected = {'security_group': sg} self.assertEqual(res_dict, expected) def test_delete_security_group_by_id(self): sg = self._create_sg_template().get('security_group') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/%s' % sg['id']) self.controller.delete(req, sg['id']) def test_delete_security_group_by_admin(self): sg = self._create_sg_template().get('security_group') req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/%s' % sg['id'], use_admin_context=True) self.controller.delete(req, sg['id']) def test_delete_security_group_in_use(self): sg = self._create_sg_template().get('security_group') self._create_network() fake_instance = {'project_id': 'fake_tenant', 'availability_zone': 'zone_one', 'info_cache': {'network_info': []}, 'security_groups': [], 'uuid': str(uuid.uuid4()), 'display_name': 'test_instance'} neutron = neutron_api.API() neutron.allocate_for_instance(context.get_admin_context(), fake_instance, security_groups=[sg['id']]) req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/%s' % sg['id']) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, sg['id']) def test_associate_non_running_instance(self): # Neutron does not care if the instance is running or not. When the # instances is detected by nuetron it will push down the security # group policy to it. pass def test_associate_already_associated_security_group_to_instance(self): # Neutron security groups does not raise an error if you update a # port adding a security group to it that was already associated # to the port. This is because PUT semantics are used. pass def test_associate(self): sg = self._create_sg_template().get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg['id']], device_id=test_security_groups.FAKE_UUID1) self.stubs.Set(nova.db, 'instance_get', test_security_groups.return_server) body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._addSecurityGroup(req, '1', body) def test_associate_duplicate_names(self): sg1 = self._create_security_group(name='sg1', description='sg1')['security_group'] self._create_security_group(name='sg1', description='sg1')['security_group'] net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg1['id']], device_id=test_security_groups.FAKE_UUID1) self.stubs.Set(nova.db, 'instance_get', test_security_groups.return_server) body = dict(addSecurityGroup=dict(name="sg1")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPConflict, self.manager._addSecurityGroup, req, '1', body) def test_associate_port_security_enabled_true(self): sg = self._create_sg_template().get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg['id']], port_security_enabled=True, device_id=test_security_groups.FAKE_UUID1) self.stubs.Set(nova.db, 'instance_get', test_security_groups.return_server) body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._addSecurityGroup(req, '1', body) def test_associate_port_security_enabled_false(self): self._create_sg_template().get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], port_security_enabled=False, device_id=test_security_groups.FAKE_UUID1) self.stubs.Set(nova.db, 'instance_get', test_security_groups.return_server) body = dict(addSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._addSecurityGroup, req, '1', body) def test_disassociate_by_non_existing_security_group_name(self): self.stubs.Set(nova.db, 'instance_get', test_security_groups.return_server) body = dict(removeSecurityGroup=dict(name='non-existing')) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._removeSecurityGroup, req, '1', body) def test_disassociate_non_running_instance(self): # Neutron does not care if the instance is running or not. When the # instances is detected by neutron it will push down the security # group policy to it. pass def test_disassociate_already_associated_security_group_to_instance(self): # Neutron security groups does not raise an error if you update a # port adding a security group to it that was already associated # to the port. This is because PUT semantics are used. pass def test_disassociate(self): sg = self._create_sg_template().get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg['id']], device_id=test_security_groups.FAKE_UUID1) self.stubs.Set(nova.db, 'instance_get', test_security_groups.return_server) body = dict(removeSecurityGroup=dict(name="test")) req = fakes.HTTPRequest.blank('/v2/fake/servers/1/action') self.manager._removeSecurityGroup(req, '1', body) def test_get_raises_no_unique_match_error(self): def fake_find_resourceid_by_name_or_id(client, param, name): raise n_exc.NeutronClientNoUniqueMatch() self.stubs.Set(neutronv20, 'find_resourceid_by_name_or_id', fake_find_resourceid_by_name_or_id) security_group_api = self.controller.security_group_api self.assertRaises(exception.NoUniqueMatch, security_group_api.get, context.get_admin_context(), 'foobar') def test_get_instances_security_groups_bindings(self): servers = [{'id': test_security_groups.FAKE_UUID1}, {'id': test_security_groups.FAKE_UUID2}] sg1 = self._create_sg_template(name='test1').get('security_group') sg2 = self._create_sg_template(name='test2').get('security_group') # test name='' is replaced with id sg3 = self._create_sg_template(name='').get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg1['id'], sg2['id']], device_id=test_security_groups.FAKE_UUID1) self._create_port( network_id=net['network']['id'], security_groups=[sg2['id'], sg3['id']], device_id=test_security_groups.FAKE_UUID2) expected = {test_security_groups.FAKE_UUID1: [{'name': sg1['name']}, {'name': sg2['name']}], test_security_groups.FAKE_UUID2: [{'name': sg2['name']}, {'name': sg3['id']}]} security_group_api = self.controller.security_group_api bindings = ( security_group_api.get_instances_security_groups_bindings( context.get_admin_context(), servers)) self.assertEqual(bindings, expected) def test_get_instance_security_groups(self): sg1 = self._create_sg_template(name='test1').get('security_group') sg2 = self._create_sg_template(name='test2').get('security_group') # test name='' is replaced with id sg3 = self._create_sg_template(name='').get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg1['id'], sg2['id'], sg3['id']], device_id=test_security_groups.FAKE_UUID1) expected = [{'name': sg1['name']}, {'name': sg2['name']}, {'name': sg3['id']}] security_group_api = self.controller.security_group_api sgs = security_group_api.get_instance_security_groups( context.get_admin_context(), test_security_groups.FAKE_UUID1) self.assertEqual(sgs, expected) def test_create_port_with_sg_and_port_security_enabled_true(self): sg1 = self._create_sg_template(name='test1').get('security_group') net = self._create_network() self._create_port( network_id=net['network']['id'], security_groups=[sg1['id']], port_security_enabled=True, device_id=test_security_groups.FAKE_UUID1) security_group_api = self.controller.security_group_api sgs = security_group_api.get_instance_security_groups( context.get_admin_context(), test_security_groups.FAKE_UUID1) self.assertEqual(sgs, [{'name': 'test1'}]) def test_create_port_with_sg_and_port_security_enabled_false(self): sg1 = self._create_sg_template(name='test1').get('security_group') net = self._create_network() self.assertRaises(exception.SecurityGroupCannotBeApplied, self._create_port, network_id=net['network']['id'], security_groups=[sg1['id']], port_security_enabled=False, device_id=test_security_groups.FAKE_UUID1) class TestNeutronSecurityGroupRulesTestCase(TestNeutronSecurityGroupsTestCase): def setUp(self): super(TestNeutronSecurityGroupRulesTestCase, self).setUp() id1 = '11111111-1111-1111-1111-111111111111' sg_template1 = test_security_groups.security_group_template( security_group_rules=[], id=id1) id2 = '22222222-2222-2222-2222-222222222222' sg_template2 = test_security_groups.security_group_template( security_group_rules=[], id=id2) self.controller_sg = security_groups.SecurityGroupController() neutron = get_client() neutron._fake_security_groups[id1] = sg_template1 neutron._fake_security_groups[id2] = sg_template2 def tearDown(self): neutronv2.get_client = self.original_client get_client()._reset() super(TestNeutronSecurityGroupsTestCase, self).tearDown() class TestNeutronSecurityGroupRules( test_security_groups.TestSecurityGroupRules, TestNeutronSecurityGroupRulesTestCase): def test_create_add_existing_rules_by_cidr(self): sg = test_security_groups.security_group_template() req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.controller_sg.create(req, {'security_group': sg}) rule = test_security_groups.security_group_rule_template( cidr='15.0.0.0/8', parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.controller.create(req, {'security_group_rule': rule}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_create_add_existing_rules_by_group_id(self): sg = test_security_groups.security_group_template() req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') self.controller_sg.create(req, {'security_group': sg}) rule = test_security_groups.security_group_rule_template( group=self.sg1['id'], parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') self.controller.create(req, {'security_group_rule': rule}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, {'security_group_rule': rule}) def test_delete(self): rule = test_security_groups.security_group_rule_template( parent_group_id=self.sg2['id']) req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules') res_dict = self.controller.create(req, {'security_group_rule': rule}) security_group_rule = res_dict['security_group_rule'] req = fakes.HTTPRequest.blank('/v2/fake/os-security-group-rules/%s' % security_group_rule['id']) self.controller.delete(req, security_group_rule['id']) def test_create_rule_quota_limit(self): # Enforced by neutron pass class TestNeutronSecurityGroupsXMLDeserializer( test_security_groups.TestSecurityGroupXMLDeserializer, TestNeutronSecurityGroupsTestCase): pass class TestNeutronSecurityGroupsXMLSerializer( test_security_groups.TestSecurityGroupXMLSerializer, TestNeutronSecurityGroupsTestCase): pass class TestNeutronSecurityGroupsOutputTest(TestNeutronSecurityGroupsTestCase): content_type = 'application/json' def setUp(self): super(TestNeutronSecurityGroupsOutputTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.controller = security_groups.SecurityGroupController() self.stubs.Set(compute.api.API, 'get', test_security_groups.fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', test_security_groups.fake_compute_get_all) self.stubs.Set(compute.api.API, 'create', test_security_groups.fake_compute_create) self.stubs.Set(neutron_driver.SecurityGroupAPI, 'get_instances_security_groups_bindings', (test_security_groups. fake_get_instances_security_groups_bindings)) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Security_groups']) def _make_request(self, url, body=None): req = webob.Request.blank(url) if body: req.method = 'POST' req.body = self._encode_body(body) req.content_type = self.content_type req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _encode_body(self, body): return jsonutils.dumps(body) def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def _get_groups(self, server): return server.get('security_groups') def test_create(self): url = '/v2/fake/servers' image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') security_groups = [{'name': 'fake-2-0'}, {'name': 'fake-2-1'}] for security_group in security_groups: sg = test_security_groups.security_group_template( name=security_group['name']) self.controller.create(req, {'security_group': sg}) server = dict(name='server_test', imageRef=image_uuid, flavorRef=2, security_groups=security_groups) res = self._make_request(url, {'server': server}) self.assertEqual(res.status_int, 202) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) def test_create_server_get_default_security_group(self): url = '/v2/fake/servers' image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' server = dict(name='server_test', imageRef=image_uuid, flavorRef=2) res = self._make_request(url, {'server': server}) self.assertEqual(res.status_int, 202) server = self._get_server(res.body) group = self._get_groups(server)[0] self.assertEqual(group.get('name'), 'default') def test_show(self): def fake_get_instance_security_groups(inst, context, id): return [{'name': 'fake-2-0'}, {'name': 'fake-2-1'}] self.stubs.Set(neutron_driver.SecurityGroupAPI, 'get_instance_security_groups', fake_get_instance_security_groups) url = '/v2/fake/servers' image_uuid = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups') security_groups = [{'name': 'fake-2-0'}, {'name': 'fake-2-1'}] for security_group in security_groups: sg = test_security_groups.security_group_template( name=security_group['name']) self.controller.create(req, {'security_group': sg}) server = dict(name='server_test', imageRef=image_uuid, flavorRef=2, security_groups=security_groups) res = self._make_request(url, {'server': server}) self.assertEqual(res.status_int, 202) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) # Test that show (GET) returns the same information as create (POST) url = '/v2/fake/servers/' + test_security_groups.UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) for i, group in enumerate(self._get_groups(server)): name = 'fake-2-%s' % i self.assertEqual(group.get('name'), name) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): for j, group in enumerate(self._get_groups(server)): name = 'fake-%s-%s' % (i, j) self.assertEqual(group.get('name'), name) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v2/fake/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class TestNeutronSecurityGroupsOutputXMLTest( TestNeutronSecurityGroupsOutputTest): content_type = 'application/xml' class MinimalCreateServerTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('server', selector='server') root.set('name') root.set('id') root.set('imageRef') root.set('flavorRef') elem = xmlutil.SubTemplateElement(root, 'security_groups') sg = xmlutil.SubTemplateElement(elem, 'security_group', selector='security_groups') sg.set('name') return xmlutil.MasterTemplate(root, 1, nsmap={None: xmlutil.XMLNS_V11}) def _encode_body(self, body): serializer = self.MinimalCreateServerTemplate() return serializer.serialize(body) def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() def _get_groups(self, server): # NOTE(vish): we are adding security groups without an extension # namespace so we don't break people using the existing # functionality, but that means we need to use find with # the existing server namespace. namespace = server.nsmap[None] return server.find('{%s}security_groups' % namespace).getchildren() def get_client(context=None, admin=False): return MockClient() class MockClient(object): # Needs to be global to survive multiple calls to get_client. _fake_security_groups = {} _fake_ports = {} _fake_networks = {} _fake_subnets = {} _fake_security_group_rules = {} def __init__(self): # add default security group if not len(self._fake_security_groups): ret = {'name': 'default', 'description': 'default', 'tenant_id': 'fake_tenant', 'security_group_rules': [], 'id': str(uuid.uuid4())} self._fake_security_groups[ret['id']] = ret def _reset(self): self._fake_security_groups.clear() self._fake_ports.clear() self._fake_networks.clear() self._fake_subnets.clear() self._fake_security_group_rules.clear() def create_security_group(self, body=None): s = body.get('security_group') if len(s.get('name')) > 255 or len(s.get('description')) > 255: msg = 'Security Group name great than 255' raise n_exc.NeutronClientException(message=msg, status_code=401) ret = {'name': s.get('name'), 'description': s.get('description'), 'tenant_id': 'fake_tenant', 'security_group_rules': [], 'id': str(uuid.uuid4())} self._fake_security_groups[ret['id']] = ret return {'security_group': ret} def create_network(self, body): n = body.get('network') ret = {'status': 'ACTIVE', 'subnets': [], 'name': n.get('name'), 'admin_state_up': n.get('admin_state_up', True), 'tenant_id': 'fake_tenant', 'id': str(uuid.uuid4())} if 'port_security_enabled' in n: ret['port_security_enabled'] = n['port_security_enabled'] self._fake_networks[ret['id']] = ret return {'network': ret} def create_subnet(self, body): s = body.get('subnet') try: net = self._fake_networks[s.get('network_id')] except KeyError: msg = 'Network %s not found' % s.get('network_id') raise n_exc.NeutronClientException(message=msg, status_code=404) ret = {'name': s.get('name'), 'network_id': s.get('network_id'), 'tenant_id': 'fake_tenant', 'cidr': s.get('cidr'), 'id': str(uuid.uuid4()), 'gateway_ip': '10.0.0.1'} net['subnets'].append(ret['id']) self._fake_networks[net['id']] = net self._fake_subnets[ret['id']] = ret return {'subnet': ret} def create_port(self, body): p = body.get('port') ret = {'status': 'ACTIVE', 'id': str(uuid.uuid4()), 'mac_address': p.get('mac_address', 'fa:16:3e:b8:f5:fb'), 'device_id': p.get('device_id', str(uuid.uuid4())), 'admin_state_up': p.get('admin_state_up', True), 'security_groups': p.get('security_groups', []), 'network_id': p.get('network_id')} network = self._fake_networks[p['network_id']] if 'port_security_enabled' in p: ret['port_security_enabled'] = p['port_security_enabled'] elif 'port_security_enabled' in network: ret['port_security_enabled'] = network['port_security_enabled'] port_security = ret.get('port_security_enabled', True) # port_security must be True if security groups are present if not port_security and ret['security_groups']: raise exception.SecurityGroupCannotBeApplied() if network['subnets']: ret['fixed_ips'] = [{'subnet_id': network['subnets'][0], 'ip_address': '10.0.0.1'}] if not ret['security_groups'] and (port_security is None or port_security is True): for security_group in self._fake_security_groups.values(): if security_group['name'] == 'default': ret['security_groups'] = [security_group['id']] break self._fake_ports[ret['id']] = ret return {'port': ret} def create_security_group_rule(self, body): # does not handle bulk case so just picks rule[0] r = body.get('security_group_rules')[0] fields = ['direction', 'protocol', 'port_range_min', 'port_range_max', 'ethertype', 'remote_ip_prefix', 'tenant_id', 'security_group_id', 'remote_group_id'] ret = {} for field in fields: ret[field] = r.get(field) ret['id'] = str(uuid.uuid4()) self._fake_security_group_rules[ret['id']] = ret return {'security_group_rules': [ret]} def show_security_group(self, security_group, **_params): try: sg = self._fake_security_groups[security_group] except KeyError: msg = 'Security Group %s not found' % security_group raise n_exc.NeutronClientException(message=msg, status_code=404) for security_group_rule in self._fake_security_group_rules.values(): if security_group_rule['security_group_id'] == sg['id']: sg['security_group_rules'].append(security_group_rule) return {'security_group': sg} def show_security_group_rule(self, security_group_rule, **_params): try: return {'security_group_rule': self._fake_security_group_rules[security_group_rule]} except KeyError: msg = 'Security Group rule %s not found' % security_group_rule raise n_exc.NeutronClientException(message=msg, status_code=404) def show_network(self, network, **_params): try: return {'network': self._fake_networks[network]} except KeyError: msg = 'Network %s not found' % network raise n_exc.NeutronClientException(message=msg, status_code=404) def show_port(self, port, **_params): try: return {'port': self._fake_ports[port]} except KeyError: msg = 'Port %s not found' % port raise n_exc.NeutronClientException(message=msg, status_code=404) def show_subnet(self, subnet, **_params): try: return {'subnet': self._fake_subnets[subnet]} except KeyError: msg = 'Port %s not found' % subnet raise n_exc.NeutronClientException(message=msg, status_code=404) def list_security_groups(self, **_params): ret = [] for security_group in self._fake_security_groups.values(): names = _params.get('name') if names: if not isinstance(names, list): names = [names] for name in names: if security_group.get('name') == name: ret.append(security_group) ids = _params.get('id') if ids: if not isinstance(ids, list): ids = [ids] for id in ids: if security_group.get('id') == id: ret.append(security_group) elif not (names or ids): ret.append(security_group) return {'security_groups': ret} def list_networks(self, **_params): return {'networks': [network for network in self._fake_networks.values()]} def list_ports(self, **_params): ret = [] device_id = _params.get('device_id') for port in self._fake_ports.values(): if device_id: if port['device_id'] in device_id: ret.append(port) else: ret.append(port) return {'ports': ret} def list_subnets(self, **_params): return {'subnets': [subnet for subnet in self._fake_subnets.values()]} def list_floatingips(self, **_params): return {'floatingips': []} def delete_security_group(self, security_group): self.show_security_group(security_group) ports = self.list_ports() for port in ports.get('ports'): for sg_port in port['security_groups']: if sg_port == security_group: msg = ('Unable to delete Security group %s in use' % security_group) raise n_exc.NeutronClientException(message=msg, status_code=409) del self._fake_security_groups[security_group] def delete_security_group_rule(self, security_group_rule): self.show_security_group_rule(security_group_rule) del self._fake_security_group_rules[security_group_rule] def delete_network(self, network): self.show_network(network) self._check_ports_on_network(network) for subnet in self._fake_subnets.values(): if subnet['network_id'] == network: del self._fake_subnets[subnet['id']] del self._fake_networks[network] def delete_subnet(self, subnet): subnet = self.show_subnet(subnet).get('subnet') self._check_ports_on_network(subnet['network_id']) del self._fake_subnet[subnet] def delete_port(self, port): self.show_port(port) del self._fake_ports[port] def update_port(self, port, body=None): self.show_port(port) self._fake_ports[port].update(body['port']) return {'port': self._fake_ports[port]} def list_extensions(self, **_parms): return {'extensions': []} def _check_ports_on_network(self, network): ports = self.list_ports() for port in ports: if port['network_id'] == network: msg = ('Unable to complete operation on network %s. There is ' 'one or more ports still in use on the network' % network) raise n_exc.NeutronClientException(message=msg, status_code=409) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_disk_config.py0000664000175400017540000003006712323721477027571 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from nova.api.openstack import compute from nova import db from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance import nova.tests.image.fake MANUAL_INSTANCE_UUID = fakes.FAKE_UUID AUTO_INSTANCE_UUID = fakes.FAKE_UUID.replace('a', 'b') stub_instance = fakes.stub_instance API_DISK_CONFIG = 'OS-DCF:diskConfig' def instance_addresses(context, instance_id): return None class DiskConfigTestCase(test.TestCase): def setUp(self): super(DiskConfigTestCase, self).setUp() self.flags(verbose=True, osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Disk_config']) self._setup_fake_image_service() fakes.stub_out_nw_api(self.stubs) FAKE_INSTANCES = [ fakes.stub_instance(1, uuid=MANUAL_INSTANCE_UUID, auto_disk_config=False), fakes.stub_instance(2, uuid=AUTO_INSTANCE_UUID, auto_disk_config=True) ] def fake_instance_get(context, id_): for instance in FAKE_INSTANCES: if id_ == instance['id']: return instance self.stubs.Set(db, 'instance_get', fake_instance_get) def fake_instance_get_by_uuid(context, uuid, columns_to_join=None, use_slave=False): for instance in FAKE_INSTANCES: if uuid == instance['uuid']: return instance self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) def fake_instance_get_all(context, *args, **kwargs): return FAKE_INSTANCES self.stubs.Set(db, 'instance_get_all', fake_instance_get_all) self.stubs.Set(db, 'instance_get_all_by_filters', fake_instance_get_all) def fake_instance_create(context, inst_, session=None): inst = fake_instance.fake_db_instance(**{ 'id': 1, 'uuid': AUTO_INSTANCE_UUID, 'created_at': datetime.datetime(2010, 10, 10, 12, 0, 0), 'updated_at': datetime.datetime(2010, 10, 10, 12, 0, 0), 'progress': 0, 'name': 'instance-1', # this is a property 'task_state': '', 'vm_state': '', 'auto_disk_config': inst_['auto_disk_config'], 'security_groups': inst_['security_groups'], }) def fake_instance_get_for_create(context, id_, *args, **kwargs): return (inst, inst) self.stubs.Set(db, 'instance_update_and_get_original', fake_instance_get_for_create) def fake_instance_get_all_for_create(context, *args, **kwargs): return [inst] self.stubs.Set(db, 'instance_get_all', fake_instance_get_all_for_create) self.stubs.Set(db, 'instance_get_all_by_filters', fake_instance_get_all_for_create) def fake_instance_add_security_group(context, instance_id, security_group_id): pass self.stubs.Set(db, 'instance_add_security_group', fake_instance_add_security_group) return inst self.stubs.Set(db, 'instance_create', fake_instance_create) self.app = compute.APIRouter(init_only=('servers', 'images')) def _setup_fake_image_service(self): self.image_service = nova.tests.image.fake.stub_out_image_service( self.stubs) timestamp = datetime.datetime(2011, 1, 1, 1, 2, 3) image = {'id': '88580842-f50a-11e2-8d3a-f23c91aec05e', 'name': 'fakeimage7', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'ova', 'disk_format': 'vhd', 'size': '74185822', 'properties': {'auto_disk_config': 'Disabled'}} self.image_service.create(None, image) def tearDown(self): super(DiskConfigTestCase, self).tearDown() nova.tests.image.fake.FakeImageService_reset() def assertDiskConfig(self, dict_, value): self.assertIn(API_DISK_CONFIG, dict_) self.assertEqual(dict_[API_DISK_CONFIG], value) def test_show_server(self): req = fakes.HTTPRequest.blank( '/fake/servers/%s' % MANUAL_INSTANCE_UUID) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'MANUAL') req = fakes.HTTPRequest.blank( '/fake/servers/%s' % AUTO_INSTANCE_UUID) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'AUTO') def test_detail_servers(self): req = fakes.HTTPRequest.blank('/fake/servers/detail') res = req.get_response(self.app) server_dicts = jsonutils.loads(res.body)['servers'] expectations = ['MANUAL', 'AUTO'] for server_dict, expected in zip(server_dicts, expectations): self.assertDiskConfig(server_dict, expected) def test_show_image(self): req = fakes.HTTPRequest.blank( '/fake/images/a440c04b-79fa-479c-bed1-0b816eaec379') res = req.get_response(self.app) image_dict = jsonutils.loads(res.body)['image'] self.assertDiskConfig(image_dict, 'MANUAL') req = fakes.HTTPRequest.blank( '/fake/images/70a599e0-31e7-49b7-b260-868f441e862b') res = req.get_response(self.app) image_dict = jsonutils.loads(res.body)['image'] self.assertDiskConfig(image_dict, 'AUTO') def test_detail_image(self): req = fakes.HTTPRequest.blank('/fake/images/detail') res = req.get_response(self.app) image_dicts = jsonutils.loads(res.body)['images'] expectations = ['MANUAL', 'AUTO'] for image_dict, expected in zip(image_dicts, expectations): # NOTE(sirp): image fixtures 6 and 7 are setup for # auto_disk_config testing if image_dict['id'] in (6, 7): self.assertDiskConfig(image_dict, expected) def test_create_server_override_auto(self): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavorRef': '1', API_DISK_CONFIG: 'AUTO' }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'AUTO') def test_create_server_override_manual(self): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavorRef': '1', API_DISK_CONFIG: 'MANUAL' }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'MANUAL') def test_create_server_detect_from_image(self): """If user doesn't pass in diskConfig for server, use image metadata to specify AUTO or MANUAL. """ req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': 'a440c04b-79fa-479c-bed1-0b816eaec379', 'flavorRef': '1', }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'MANUAL') req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': '70a599e0-31e7-49b7-b260-868f441e862b', 'flavorRef': '1', }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'AUTO') def test_create_server_detect_from_image_disabled_goes_to_manual(self): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': '88580842-f50a-11e2-8d3a-f23c91aec05e', 'flavorRef': '1', }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'MANUAL') def test_create_server_errors_when_disabled_and_auto(self): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': '88580842-f50a-11e2-8d3a-f23c91aec05e', 'flavorRef': '1', API_DISK_CONFIG: 'AUTO' }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_create_server_when_disabled_and_manual(self): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': '88580842-f50a-11e2-8d3a-f23c91aec05e', 'flavorRef': '1', API_DISK_CONFIG: 'MANUAL' }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) server_dict = jsonutils.loads(res.body)['server'] self.assertDiskConfig(server_dict, 'MANUAL') def test_update_server_invalid_disk_config(self): # Return BadRequest if user passes an invalid diskConfig value. req = fakes.HTTPRequest.blank( '/fake/servers/%s' % MANUAL_INSTANCE_UUID) req.method = 'PUT' req.content_type = 'application/json' body = {'server': {API_DISK_CONFIG: 'server_test'}} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(res.status_int, 400) expected_msg = ('{"badRequest": {"message": "%s must be either' ' \'MANUAL\' or \'AUTO\'.", "code": 400}}' % API_DISK_CONFIG) self.assertEqual(res.body, expected_msg) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_volumes.py0000664000175400017540000011135112323721477027000 0ustar jenkinsjenkins00000000000000# Copyright 2013 Josh Durgin # Copyright 2013 Red Hat, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from lxml import etree import mock from oslo.config import cfg import webob from webob import exc from nova.api.openstack.compute.contrib import assisted_volume_snapshots as \ assisted_snaps from nova.api.openstack.compute.contrib import volumes from nova.api.openstack import extensions from nova.compute import api as compute_api from nova.compute import flavors from nova import context from nova import db from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance from nova.volume import cinder CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' FAKE_UUID_A = '00000000-aaaa-aaaa-aaaa-000000000000' FAKE_UUID_B = 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb' FAKE_UUID_C = 'cccccccc-cccc-cccc-cccc-cccccccccccc' FAKE_UUID_D = 'dddddddd-dddd-dddd-dddd-dddddddddddd' IMAGE_UUID = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' def fake_get_instance(self, context, instance_id, want_objects=False): return fake_instance.fake_instance_obj(context, **{'uuid': instance_id}) def fake_get_volume(self, context, id): return {'id': 'woot'} def fake_attach_volume(self, context, instance, volume_id, device): pass def fake_detach_volume(self, context, instance, volume): pass def fake_swap_volume(self, context, instance, old_volume_id, new_volume_id): pass def fake_create_snapshot(self, context, volume, name, description): return {'id': 123, 'volume_id': 'fakeVolId', 'status': 'available', 'volume_size': 123, 'created_at': '2013-01-01 00:00:01', 'display_name': 'myVolumeName', 'display_description': 'myVolumeDescription'} def fake_delete_snapshot(self, context, snapshot_id): pass def fake_compute_volume_snapshot_delete(self, context, volume_id, snapshot_id, delete_info): pass def fake_compute_volume_snapshot_create(self, context, volume_id, create_info): pass def fake_bdms_get_all_by_instance(context, instance_uuid, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'instance_uuid': instance_uuid, 'device_name': '/dev/fake0', 'delete_on_termination': 'False', 'source_type': 'volume', 'destination_type': 'volume', 'snapshot_id': None, 'volume_id': FAKE_UUID_A, 'volume_size': 1}), fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'instance_uuid': instance_uuid, 'device_name': '/dev/fake1', 'delete_on_termination': 'False', 'source_type': 'volume', 'destination_type': 'volume', 'snapshot_id': None, 'volume_id': FAKE_UUID_B, 'volume_size': 1})] class BootFromVolumeTest(test.TestCase): def setUp(self): super(BootFromVolumeTest, self).setUp() self.stubs.Set(compute_api.API, 'create', self._get_fake_compute_api_create()) fakes.stub_out_nw_api(self.stubs) self._block_device_mapping_seen = None self._legacy_bdm_seen = True self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Volumes', 'Block_device_mapping_v2_boot']) def _get_fake_compute_api_create(self): def _fake_compute_api_create(cls, context, instance_type, image_href, **kwargs): self._block_device_mapping_seen = kwargs.get( 'block_device_mapping') self._legacy_bdm_seen = kwargs.get('legacy_bdm') inst_type = flavors.get_flavor_by_flavor_id(2) resv_id = None return ([{'id': 1, 'display_name': 'test_server', 'uuid': FAKE_UUID, 'instance_type': dict(inst_type), 'access_ip_v4': '1.2.3.4', 'access_ip_v6': 'fead::1234', 'image_ref': IMAGE_UUID, 'user_id': 'fake', 'project_id': 'fake', 'created_at': datetime.datetime(2010, 10, 10, 12, 0, 0), 'updated_at': datetime.datetime(2010, 11, 11, 11, 0, 0), 'progress': 0, 'fixed_ips': [] }], resv_id) return _fake_compute_api_create def test_create_root_volume(self): body = dict(server=dict( name='test_server', imageRef=IMAGE_UUID, flavorRef=2, min_count=1, max_count=1, block_device_mapping=[dict( volume_id=1, device_name='/dev/vda', virtual='root', delete_on_termination=False, )] )) req = webob.Request.blank('/v2/fake/os-volumes_boot') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app( init_only=('os-volumes_boot', 'servers'))) self.assertEqual(res.status_int, 202) server = jsonutils.loads(res.body)['server'] self.assertEqual(FAKE_UUID, server['id']) self.assertEqual(CONF.password_length, len(server['adminPass'])) self.assertEqual(len(self._block_device_mapping_seen), 1) self.assertTrue(self._legacy_bdm_seen) self.assertEqual(self._block_device_mapping_seen[0]['volume_id'], 1) self.assertEqual(self._block_device_mapping_seen[0]['device_name'], '/dev/vda') def test_create_root_volume_bdm_v2(self): body = dict(server=dict( name='test_server', imageRef=IMAGE_UUID, flavorRef=2, min_count=1, max_count=1, block_device_mapping_v2=[dict( source_type='volume', uuid=1, device_name='/dev/vda', boot_index=0, delete_on_termination=False, )] )) req = webob.Request.blank('/v2/fake/os-volumes_boot') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app( init_only=('os-volumes_boot', 'servers'))) self.assertEqual(res.status_int, 202) server = jsonutils.loads(res.body)['server'] self.assertEqual(FAKE_UUID, server['id']) self.assertEqual(CONF.password_length, len(server['adminPass'])) self.assertEqual(len(self._block_device_mapping_seen), 1) self.assertFalse(self._legacy_bdm_seen) self.assertEqual(self._block_device_mapping_seen[0]['volume_id'], 1) self.assertEqual(self._block_device_mapping_seen[0]['boot_index'], 0) self.assertEqual(self._block_device_mapping_seen[0]['device_name'], '/dev/vda') class VolumeApiTest(test.TestCase): def setUp(self): super(VolumeApiTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(cinder.API, "delete", fakes.stub_volume_delete) self.stubs.Set(cinder.API, "get", fakes.stub_volume_get) self.stubs.Set(cinder.API, "get_all", fakes.stub_volume_get_all) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Volumes']) self.context = context.get_admin_context() self.app = fakes.wsgi_app(init_only=('os-volumes',)) def test_volume_create(self): self.stubs.Set(cinder.API, "create", fakes.stub_volume_create) vol = {"size": 100, "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1"} body = {"volume": vol} req = webob.Request.blank('/v2/fake/os-volumes') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('volume', resp_dict) self.assertEqual(resp_dict['volume']['size'], vol['size']) self.assertEqual(resp_dict['volume']['displayName'], vol['display_name']) self.assertEqual(resp_dict['volume']['displayDescription'], vol['display_description']) self.assertEqual(resp_dict['volume']['availabilityZone'], vol['availability_zone']) def test_volume_create_bad(self): def fake_volume_create(self, context, size, name, description, snapshot, **param): raise exception.InvalidInput(reason="bad request data") self.stubs.Set(cinder.API, "create", fake_volume_create) vol = {"size": '#$?', "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1"} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v2/fake/os-volumes') self.assertRaises(webob.exc.HTTPBadRequest, volumes.VolumeController().create, req, body) def test_volume_index(self): req = webob.Request.blank('/v2/fake/os-volumes') resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) def test_volume_detail(self): req = webob.Request.blank('/v2/fake/os-volumes/detail') resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) def test_volume_show(self): req = webob.Request.blank('/v2/fake/os-volumes/123') resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) def test_volume_show_no_volume(self): self.stubs.Set(cinder.API, "get", fakes.stub_volume_notfound) req = webob.Request.blank('/v2/fake/os-volumes/456') resp = req.get_response(self.app) self.assertEqual(resp.status_int, 404) def test_volume_delete(self): req = webob.Request.blank('/v2/fake/os-volumes/123') req.method = 'DELETE' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) def test_volume_delete_no_volume(self): self.stubs.Set(cinder.API, "delete", fakes.stub_volume_notfound) req = webob.Request.blank('/v2/fake/os-volumes/456') req.method = 'DELETE' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 404) class VolumeAttachTests(test.TestCase): def setUp(self): super(VolumeAttachTests, self).setUp() self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_bdms_get_all_by_instance) self.stubs.Set(compute_api.API, 'get', fake_get_instance) self.stubs.Set(cinder.API, 'get', fake_get_volume) self.context = context.get_admin_context() self.expected_show = {'volumeAttachment': {'device': '/dev/fake0', 'serverId': FAKE_UUID, 'id': FAKE_UUID_A, 'volumeId': FAKE_UUID_A }} self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.attachments = volumes.VolumeAttachmentController(self.ext_mgr) def test_show(self): req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = self.attachments.show(req, FAKE_UUID, FAKE_UUID_A) self.assertEqual(self.expected_show, result) def test_detach(self): self.stubs.Set(compute_api.API, 'detach_volume', fake_detach_volume) req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') req.method = 'DELETE' req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = self.attachments.delete(req, FAKE_UUID, FAKE_UUID_A) self.assertEqual('202 Accepted', result.status) def test_detach_vol_not_found(self): self.stubs.Set(compute_api.API, 'detach_volume', fake_detach_volume) req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') req.method = 'DELETE' req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, self.attachments.delete, req, FAKE_UUID, FAKE_UUID_C) @mock.patch('nova.objects.block_device.BlockDeviceMapping.is_root', new_callable=mock.PropertyMock) def test_detach_vol_root(self, mock_isroot): req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') req.method = 'DELETE' req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context mock_isroot.return_value = True self.assertRaises(exc.HTTPForbidden, self.attachments.delete, req, FAKE_UUID, FAKE_UUID_A) def test_detach_volume_from_locked_server(self): def fake_detach_volume_from_locked_server(self, context, instance, volume): raise exception.InstanceIsLocked(instance_uuid=instance['uuid']) self.stubs.Set(compute_api.API, 'detach_volume', fake_detach_volume_from_locked_server) req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') req.method = 'DELETE' req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(webob.exc.HTTPConflict, self.attachments.delete, req, FAKE_UUID, FAKE_UUID_A) def test_attach_volume(self): self.stubs.Set(compute_api.API, 'attach_volume', fake_attach_volume) body = {'volumeAttachment': {'volumeId': FAKE_UUID_A, 'device': '/dev/fake'}} req = webob.Request.blank('/v2/servers/id/os-volume_attachments') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context result = self.attachments.create(req, FAKE_UUID, body) self.assertEqual(result['volumeAttachment']['id'], '00000000-aaaa-aaaa-aaaa-000000000000') def test_attach_volume_to_locked_server(self): def fake_attach_volume_to_locked_server(self, context, instance, volume_id, device=None): raise exception.InstanceIsLocked(instance_uuid=instance['uuid']) self.stubs.Set(compute_api.API, 'attach_volume', fake_attach_volume_to_locked_server) body = {'volumeAttachment': {'volumeId': FAKE_UUID_A, 'device': '/dev/fake'}} req = webob.Request.blank('/v2/servers/id/os-volume_attachments') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(webob.exc.HTTPConflict, self.attachments.create, req, FAKE_UUID, body) def test_attach_volume_bad_id(self): self.stubs.Set(compute_api.API, 'attach_volume', fake_attach_volume) body = { 'volumeAttachment': { 'device': None, 'volumeId': 'TESTVOLUME', } } req = webob.Request.blank('/v2/servers/id/os-volume_attachments') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(webob.exc.HTTPBadRequest, self.attachments.create, req, FAKE_UUID, body) def test_attach_volume_without_volumeId(self): self.stubs.Set(compute_api.API, 'attach_volume', fake_attach_volume) body = { 'volumeAttachment': { 'device': None } } req = webob.Request.blank('/v2/servers/id/os-volume_attachments') req.method = 'POST' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context self.assertRaises(webob.exc.HTTPBadRequest, self.attachments.create, req, FAKE_UUID, body) def _test_swap(self, uuid=FAKE_UUID_A, fake_func=None, body=None): fake_func = fake_func or fake_swap_volume self.stubs.Set(compute_api.API, 'swap_volume', fake_func) body = body or {'volumeAttachment': {'volumeId': FAKE_UUID_B, 'device': '/dev/fake'}} req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') req.method = 'PUT' req.body = jsonutils.dumps({}) req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context return self.attachments.update(req, FAKE_UUID, uuid, body) def test_swap_volume_for_locked_server(self): self.ext_mgr.extensions['os-volume-attachment-update'] = True def fake_swap_volume_for_locked_server(self, context, instance, old_volume, new_volume): raise exception.InstanceIsLocked(instance_uuid=instance['uuid']) self.ext_mgr.extensions['os-volume-attachment-update'] = True self.assertRaises(webob.exc.HTTPConflict, self._test_swap, fake_func=fake_swap_volume_for_locked_server) def test_swap_volume_no_extension(self): self.assertRaises(webob.exc.HTTPBadRequest, self._test_swap) def test_swap_volume(self): self.ext_mgr.extensions['os-volume-attachment-update'] = True result = self._test_swap() self.assertEqual('202 Accepted', result.status) def test_swap_volume_no_attachment(self): self.ext_mgr.extensions['os-volume-attachment-update'] = True self.assertRaises(exc.HTTPNotFound, self._test_swap, FAKE_UUID_C) def test_swap_volume_without_volumeId(self): self.ext_mgr.extensions['os-volume-attachment-update'] = True body = {'volumeAttachment': {'device': '/dev/fake'}} self.assertRaises(webob.exc.HTTPBadRequest, self._test_swap, body=body) class VolumeSerializerTest(test.TestCase): def _verify_volume_attachment(self, attach, tree): for attr in ('id', 'volumeId', 'serverId', 'device'): self.assertEqual(str(attach[attr]), tree.get(attr)) def _verify_volume(self, vol, tree): self.assertEqual(tree.tag, 'volume') for attr in ('id', 'status', 'size', 'availabilityZone', 'createdAt', 'displayName', 'displayDescription', 'volumeType', 'snapshotId'): self.assertEqual(str(vol[attr]), tree.get(attr)) for child in tree: self.assertIn(child.tag, ('attachments', 'metadata')) if child.tag == 'attachments': self.assertEqual(1, len(child)) self.assertEqual('attachment', child[0].tag) self._verify_volume_attachment(vol['attachments'][0], child[0]) elif child.tag == 'metadata': not_seen = set(vol['metadata'].keys()) for gr_child in child: self.assertIn(gr_child.get("key"), not_seen) self.assertEqual(str(vol['metadata'][gr_child.get("key")]), gr_child.text) not_seen.remove(gr_child.get("key")) self.assertEqual(0, len(not_seen)) def test_attach_show_create_serializer(self): serializer = volumes.VolumeAttachmentTemplate() raw_attach = dict( id='vol_id', volumeId='vol_id', serverId='instance_uuid', device='/foo') text = serializer.serialize(dict(volumeAttachment=raw_attach)) tree = etree.fromstring(text) self.assertEqual('volumeAttachment', tree.tag) self._verify_volume_attachment(raw_attach, tree) def test_attach_index_serializer(self): serializer = volumes.VolumeAttachmentsTemplate() raw_attaches = [dict( id='vol_id1', volumeId='vol_id1', serverId='instance1_uuid', device='/foo1'), dict( id='vol_id2', volumeId='vol_id2', serverId='instance2_uuid', device='/foo2')] text = serializer.serialize(dict(volumeAttachments=raw_attaches)) tree = etree.fromstring(text) self.assertEqual('volumeAttachments', tree.tag) self.assertEqual(len(raw_attaches), len(tree)) for idx, child in enumerate(tree): self.assertEqual('volumeAttachment', child.tag) self._verify_volume_attachment(raw_attaches[idx], child) def test_volume_show_create_serializer(self): serializer = volumes.VolumeTemplate() raw_volume = dict( id='vol_id', status='vol_status', size=1024, availabilityZone='vol_availability', createdAt=timeutils.utcnow(), attachments=[dict( id='vol_id', volumeId='vol_id', serverId='instance_uuid', device='/foo')], displayName='vol_name', displayDescription='vol_desc', volumeType='vol_type', snapshotId='snap_id', metadata=dict( foo='bar', baz='quux', ), ) text = serializer.serialize(dict(volume=raw_volume)) tree = etree.fromstring(text) self._verify_volume(raw_volume, tree) def test_volume_index_detail_serializer(self): serializer = volumes.VolumesTemplate() raw_volumes = [dict( id='vol1_id', status='vol1_status', size=1024, availabilityZone='vol1_availability', createdAt=timeutils.utcnow(), attachments=[dict( id='vol1_id', volumeId='vol1_id', serverId='instance_uuid', device='/foo1')], displayName='vol1_name', displayDescription='vol1_desc', volumeType='vol1_type', snapshotId='snap1_id', metadata=dict( foo='vol1_foo', bar='vol1_bar', ), ), dict( id='vol2_id', status='vol2_status', size=1024, availabilityZone='vol2_availability', createdAt=timeutils.utcnow(), attachments=[dict( id='vol2_id', volumeId='vol2_id', serverId='instance_uuid', device='/foo2')], displayName='vol2_name', displayDescription='vol2_desc', volumeType='vol2_type', snapshotId='snap2_id', metadata=dict( foo='vol2_foo', bar='vol2_bar', ), )] text = serializer.serialize(dict(volumes=raw_volumes)) tree = etree.fromstring(text) self.assertEqual('volumes', tree.tag) self.assertEqual(len(raw_volumes), len(tree)) for idx, child in enumerate(tree): self._verify_volume(raw_volumes[idx], child) class TestVolumeCreateRequestXMLDeserializer(test.TestCase): def setUp(self): super(TestVolumeCreateRequestXMLDeserializer, self).setUp() self.deserializer = volumes.CreateDeserializer() def test_minimal_volume(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", }, } self.assertEqual(request['body'], expected) def test_display_name(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", }, } self.assertEqual(request['body'], expected) def test_display_description(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", }, } self.assertEqual(request['body'], expected) def test_volume_type(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "display_name": "Volume-xml", "size": "1", "display_name": "Volume-xml", "display_description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", }, } self.assertEqual(request['body'], expected) def test_availability_zone(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", "availability_zone": "us-east1", }, } self.assertEqual(request['body'], expected) def test_metadata(self): self_request = """ work""" request = self.deserializer.deserialize(self_request) expected = { "volume": { "display_name": "Volume-xml", "size": "1", "metadata": { "Type": "work", }, }, } self.assertEqual(request['body'], expected) def test_full_volume(self): self_request = """ work""" request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", "availability_zone": "us-east1", "metadata": { "Type": "work", }, }, } self.maxDiff = None self.assertEqual(request['body'], expected) class CommonUnprocessableEntityTestCase(object): resource = None entity_name = None controller_cls = None kwargs = {} """ Tests of places we throw 422 Unprocessable Entity from """ def setUp(self): super(CommonUnprocessableEntityTestCase, self).setUp() self.controller = self.controller_cls() def _unprocessable_create(self, body): req = fakes.HTTPRequest.blank('/v2/fake/' + self.resource) req.method = 'POST' kwargs = self.kwargs.copy() kwargs['body'] = body self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, **kwargs) def test_create_no_body(self): self._unprocessable_create(body=None) def test_create_missing_volume(self): body = {'foo': {'a': 'b'}} self._unprocessable_create(body=body) def test_create_malformed_entity(self): body = {self.entity_name: 'string'} self._unprocessable_create(body=body) class UnprocessableVolumeTestCase(CommonUnprocessableEntityTestCase, test.TestCase): resource = 'os-volumes' entity_name = 'volume' controller_cls = volumes.VolumeController class UnprocessableAttachmentTestCase(CommonUnprocessableEntityTestCase, test.TestCase): resource = 'servers/' + FAKE_UUID + '/os-volume_attachments' entity_name = 'volumeAttachment' controller_cls = volumes.VolumeAttachmentController kwargs = {'server_id': FAKE_UUID} class UnprocessableSnapshotTestCase(CommonUnprocessableEntityTestCase, test.TestCase): resource = 'os-snapshots' entity_name = 'snapshot' controller_cls = volumes.SnapshotController class ShowSnapshotTestCase(test.TestCase): def setUp(self): super(ShowSnapshotTestCase, self).setUp() self.controller = volumes.SnapshotController() self.req = fakes.HTTPRequest.blank('/v2/fake/os-snapshots') self.req.method = 'GET' def test_show_snapshot_not_exist(self): def fake_get_snapshot(self, context, id): raise exception.SnapshotNotFound(snapshot_id=id) self.stubs.Set(cinder.API, 'get_snapshot', fake_get_snapshot) self.assertRaises(exc.HTTPNotFound, self.controller.show, self.req, FAKE_UUID_A) class CreateSnapshotTestCase(test.TestCase): def setUp(self): super(CreateSnapshotTestCase, self).setUp() self.controller = volumes.SnapshotController() self.stubs.Set(cinder.API, 'get', fake_get_volume) self.stubs.Set(cinder.API, 'create_snapshot_force', fake_create_snapshot) self.stubs.Set(cinder.API, 'create_snapshot', fake_create_snapshot) self.req = fakes.HTTPRequest.blank('/v2/fake/os-snapshots') self.req.method = 'POST' self.body = {'snapshot': {'volume_id': 1}} def test_force_true(self): self.body['snapshot']['force'] = 'True' self.controller.create(self.req, body=self.body) def test_force_false(self): self.body['snapshot']['force'] = 'f' self.controller.create(self.req, body=self.body) def test_force_invalid(self): self.body['snapshot']['force'] = 'foo' self.assertRaises(exception.InvalidParameterValue, self.controller.create, self.req, body=self.body) class DeleteSnapshotTestCase(test.TestCase): def setUp(self): super(DeleteSnapshotTestCase, self).setUp() self.controller = volumes.SnapshotController() self.stubs.Set(cinder.API, 'get', fake_get_volume) self.stubs.Set(cinder.API, 'create_snapshot_force', fake_create_snapshot) self.stubs.Set(cinder.API, 'create_snapshot', fake_create_snapshot) self.stubs.Set(cinder.API, 'delete_snapshot', fake_delete_snapshot) self.req = fakes.HTTPRequest.blank('/v2/fake/os-snapshots') def test_normal_delete(self): self.req.method = 'POST' self.body = {'snapshot': {'volume_id': 1}} result = self.controller.create(self.req, body=self.body) self.req.method = 'DELETE' result = self.controller.delete(self.req, result['snapshot']['id']) self.assertEqual(result.status_int, 202) def test_delete_snapshot_not_exists(self): def fake_delete_snapshot_not_exist(self, context, snapshot_id): raise exception.SnapshotNotFound(snapshot_id=snapshot_id) self.stubs.Set(cinder.API, 'delete_snapshot', fake_delete_snapshot_not_exist) self.req.method = 'POST' self.body = {'snapshot': {'volume_id': 1}} result = self.controller.create(self.req, body=self.body) self.req.method = 'DELETE' self.assertRaises(exc.HTTPNotFound, self.controller.delete, self.req, result['snapshot']['id']) class AssistedSnapshotCreateTestCase(test.TestCase): def setUp(self): super(AssistedSnapshotCreateTestCase, self).setUp() self.controller = assisted_snaps.AssistedVolumeSnapshotsController() self.stubs.Set(compute_api.API, 'volume_snapshot_create', fake_compute_volume_snapshot_create) def test_assisted_create(self): req = fakes.HTTPRequest.blank('/v2/fake/os-assisted-volume-snapshots') body = {'snapshot': {'volume_id': 1, 'create_info': {}}} req.method = 'POST' self.controller.create(req, body=body) def test_assisted_create_missing_create_info(self): req = fakes.HTTPRequest.blank('/v2/fake/os-assisted-volume-snapshots') body = {'snapshot': {'volume_id': 1}} req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body=body) class AssistedSnapshotDeleteTestCase(test.TestCase): def setUp(self): super(AssistedSnapshotDeleteTestCase, self).setUp() self.controller = assisted_snaps.AssistedVolumeSnapshotsController() self.stubs.Set(compute_api.API, 'volume_snapshot_delete', fake_compute_volume_snapshot_delete) def test_assisted_delete(self): params = { 'delete_info': jsonutils.dumps({'volume_id': 1}), } req = fakes.HTTPRequest.blank( '/v2/fake/os-assisted-volume-snapshots?%s' % '&'.join(['%s=%s' % (k, v) for k, v in params.iteritems()])) req.method = 'DELETE' result = self.controller.delete(req, '5') self.assertEqual(result.status_int, 204) def test_assisted_delete_missing_delete_info(self): req = fakes.HTTPRequest.blank('/v2/fake/os-assisted-volume-snapshots') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, '5') nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py0000664000175400017540000000700712323721477030430 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, 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 lxml import etree import webob from nova.api.openstack.compute.contrib import flavor_disabled from nova.compute import flavors from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_FLAVORS = { 'flavor 1': { "flavorid": '1', "name": 'flavor 1', "memory_mb": '256', "root_gb": '10', "disabled": False, }, 'flavor 2': { "flavorid": '2', "name": 'flavor 2', "memory_mb": '512', "root_gb": '20', "disabled": True, }, } def fake_flavor_get_by_flavor_id(flavorid, ctxt=None): return FAKE_FLAVORS['flavor %s' % flavorid] def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [ fake_flavor_get_by_flavor_id(1), fake_flavor_get_by_flavor_id(2) ] class FlavorDisabledTest(test.NoDBTestCase): content_type = 'application/json' prefix = '%s:' % flavor_disabled.Flavor_disabled.alias def setUp(self): super(FlavorDisabledTest, self).setUp() ext = ('nova.api.openstack.compute.contrib' '.flavor_disabled.Flavor_disabled') self.flags(osapi_compute_extension=[ext]) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app()) return res def _get_flavor(self, body): return jsonutils.loads(body).get('flavor') def _get_flavors(self, body): return jsonutils.loads(body).get('flavors') def assertFlavorDisabled(self, flavor, disabled): self.assertEqual(str(flavor.get('%sdisabled' % self.prefix)), disabled) def test_show(self): url = '/v2/fake/flavors/1' res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertFlavorDisabled(self._get_flavor(res.body), 'False') def test_detail(self): url = '/v2/fake/flavors/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) flavors = self._get_flavors(res.body) self.assertFlavorDisabled(flavors[0], 'False') self.assertFlavorDisabled(flavors[1], 'True') class FlavorDisabledXmlTest(FlavorDisabledTest): content_type = 'application/xml' prefix = '{%s}' % flavor_disabled.Flavor_disabled.namespace def _get_flavor(self, body): return etree.XML(body) def _get_flavors(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_floating_ip_dns.py0000664000175400017540000003761712323721477030461 0ustar jenkinsjenkins00000000000000# Copyright 2011 Andrew Bogott for the Wikimedia Foundation # All Rights Reserved. # Copyright 2013 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 lxml import etree import urllib import webob from nova.api.openstack.compute.contrib import floating_ip_dns from nova import context from nova import db from nova import exception from nova import network from nova import test from nova.tests.api.openstack import fakes name = "arbitraryname" name2 = "anotherarbitraryname" test_ipv4_address = '10.0.0.66' test_ipv4_address2 = '10.0.0.67' test_ipv6_address = 'fe80:0:0:0:0:0:a00:42' domain = "example.org" domain2 = "example.net" floating_ip_id = '1' def _quote_domain(domain): """Domain names tend to have .'s in them. Urllib doesn't quote dots, but Routes tends to choke on them, so we need an extra level of by-hand quoting here. This function needs to duplicate the one in python-novaclient/novaclient/v1_1/floating_ip_dns.py """ return urllib.quote(domain.replace('.', '%2E')) def network_api_get_floating_ip(self, context, id): return {'id': floating_ip_id, 'address': test_ipv4_address, 'fixed_ip': None} def network_get_dns_domains(self, context): return [{'domain': 'example.org', 'scope': 'public'}, {'domain': 'example.com', 'scope': 'public', 'project': 'project1'}, {'domain': 'private.example.com', 'scope': 'private', 'availability_zone': 'avzone'}] def network_get_dns_entries_by_address(self, context, address, domain): return [name, name2] def network_get_dns_entries_by_name(self, context, address, domain): return [test_ipv4_address] def network_add_dns_entry(self, context, address, name, dns_type, domain): return {'dns_entry': {'ip': test_ipv4_address, 'name': name, 'type': dns_type, 'domain': domain}} def network_modify_dns_entry(self, context, address, name, domain): return {'dns_entry': {'name': name, 'ip': address, 'domain': domain}} def network_create_private_dns_domain(self, context, domain, avail_zone): pass def network_create_public_dns_domain(self, context, domain, project): pass class FloatingIpDNSTest(test.TestCase): def _create_floating_ip(self): """Create a floating ip object.""" host = "fake_host" db.floating_ip_create(self.context, {'address': test_ipv4_address, 'host': host}) db.floating_ip_create(self.context, {'address': test_ipv6_address, 'host': host}) def _delete_floating_ip(self): db.floating_ip_destroy(self.context, test_ipv4_address) db.floating_ip_destroy(self.context, test_ipv6_address) def setUp(self): super(FloatingIpDNSTest, self).setUp() self.stubs.Set(network.api.API, "get_dns_domains", network_get_dns_domains) self.stubs.Set(network.api.API, "get_dns_entries_by_address", network_get_dns_entries_by_address) self.stubs.Set(network.api.API, "get_dns_entries_by_name", network_get_dns_entries_by_name) self.stubs.Set(network.api.API, "get_floating_ip", network_api_get_floating_ip) self.stubs.Set(network.api.API, "add_dns_entry", network_add_dns_entry) self.stubs.Set(network.api.API, "modify_dns_entry", network_modify_dns_entry) self.stubs.Set(network.api.API, "create_public_dns_domain", network_create_public_dns_domain) self.stubs.Set(network.api.API, "create_private_dns_domain", network_create_private_dns_domain) self.context = context.get_admin_context() self._create_floating_ip() temp = floating_ip_dns.FloatingIPDNSDomainController() self.domain_controller = temp self.entry_controller = floating_ip_dns.FloatingIPDNSEntryController() def tearDown(self): self._delete_floating_ip() super(FloatingIpDNSTest, self).tearDown() def test_dns_domains_list(self): req = fakes.HTTPRequest.blank('/v2/123/os-floating-ip-dns') res_dict = self.domain_controller.index(req) entries = res_dict['domain_entries'] self.assertTrue(entries) self.assertEqual(entries[0]['domain'], "example.org") self.assertFalse(entries[0]['project']) self.assertFalse(entries[0]['availability_zone']) self.assertEqual(entries[1]['domain'], "example.com") self.assertEqual(entries[1]['project'], "project1") self.assertFalse(entries[1]['availability_zone']) self.assertEqual(entries[2]['domain'], "private.example.com") self.assertFalse(entries[2]['project']) self.assertEqual(entries[2]['availability_zone'], "avzone") def _test_get_dns_entries_by_address(self, address): qparams = {'ip': address} params = "?%s" % urllib.urlencode(qparams) if qparams else "" req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), params)) entries = self.entry_controller.show(req, _quote_domain(domain), address) entries = entries.obj self.assertEqual(len(entries['dns_entries']), 2) self.assertEqual(entries['dns_entries'][0]['name'], name) self.assertEqual(entries['dns_entries'][1]['name'], name2) self.assertEqual(entries['dns_entries'][0]['domain'], domain) def test_get_dns_entries_by_ipv4_address(self): self._test_get_dns_entries_by_address(test_ipv4_address) def test_get_dns_entries_by_ipv6_address(self): self._test_get_dns_entries_by_address(test_ipv6_address) def test_get_dns_entries_by_invalid_ipv4_or_ipv6(self): # If it's not a valid ipv4 neither ipv6, the method 'show' # will try to get dns entries by name instead. We use this # to test if address is being correctly validated. def fake_get_dns_entries_by_name(self, context, address, domain): raise webob.exc.HTTPUnprocessableEntity() self.stubs.Set(network.api.API, "get_dns_entries_by_name", fake_get_dns_entries_by_name) invalid_addr = '333.333.333.333' qparams = {'ip': invalid_addr} params = "?%s" % urllib.urlencode(qparams) if qparams else "" req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), params)) self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.entry_controller.show, req, _quote_domain(domain), invalid_addr) def test_get_dns_entries_by_name(self): req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), name)) entry = self.entry_controller.show(req, _quote_domain(domain), name) self.assertEqual(entry['dns_entry']['ip'], test_ipv4_address) self.assertEqual(entry['dns_entry']['domain'], domain) def test_dns_entries_not_found(self): def fake_get_dns_entries_by_name(self, context, address, domain): raise webob.exc.HTTPNotFound() self.stubs.Set(network.api.API, "get_dns_entries_by_name", fake_get_dns_entries_by_name) req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), 'nonexistent')) self.assertRaises(webob.exc.HTTPNotFound, self.entry_controller.show, req, _quote_domain(domain), 'nonexistent') def test_create_entry(self): body = {'dns_entry': {'ip': test_ipv4_address, 'dns_type': 'A'}} req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), name)) entry = self.entry_controller.update(req, _quote_domain(domain), name, body) self.assertEqual(entry['dns_entry']['ip'], test_ipv4_address) def test_create_domain(self): req = fakes.HTTPRequest.blank('/v2/123/os-floating-ip-dns/%s' % _quote_domain(domain)) body = {'domain_entry': {'scope': 'private', 'project': 'testproject'}} self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.domain_controller.update, req, _quote_domain(domain), body) body = {'domain_entry': {'scope': 'public', 'availability_zone': 'zone1'}} self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.domain_controller.update, req, _quote_domain(domain), body) body = {'domain_entry': {'scope': 'public', 'project': 'testproject'}} entry = self.domain_controller.update(req, _quote_domain(domain), body) self.assertEqual(entry['domain_entry']['domain'], domain) self.assertEqual(entry['domain_entry']['scope'], 'public') self.assertEqual(entry['domain_entry']['project'], 'testproject') body = {'domain_entry': {'scope': 'private', 'availability_zone': 'zone1'}} entry = self.domain_controller.update(req, _quote_domain(domain), body) self.assertEqual(entry['domain_entry']['domain'], domain) self.assertEqual(entry['domain_entry']['scope'], 'private') self.assertEqual(entry['domain_entry']['availability_zone'], 'zone1') def test_delete_entry(self): calls = [] def network_delete_dns_entry(fakeself, context, name, domain): calls.append((name, domain)) self.stubs.Set(network.api.API, "delete_dns_entry", network_delete_dns_entry) req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), name)) res = self.entry_controller.delete(req, _quote_domain(domain), name) self.assertEqual(202, res.status_int) self.assertEqual([(name, domain)], calls) def test_delete_entry_notfound(self): def delete_dns_entry_notfound(fakeself, context, name, domain): raise exception.NotFound self.stubs.Set(network.api.API, "delete_dns_entry", delete_dns_entry_notfound) req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (_quote_domain(domain), name)) self.assertRaises(webob.exc.HTTPNotFound, self.entry_controller.delete, req, _quote_domain(domain), name) def test_delete_domain(self): calls = [] def network_delete_dns_domain(fakeself, context, fqdomain): calls.append(fqdomain) self.stubs.Set(network.api.API, "delete_dns_domain", network_delete_dns_domain) req = fakes.HTTPRequest.blank('/v2/123/os-floating-ip-dns/%s' % _quote_domain(domain)) res = self.domain_controller.delete(req, _quote_domain(domain)) self.assertEqual(202, res.status_int) self.assertEqual([domain], calls) def test_delete_domain_notfound(self): def delete_dns_domain_notfound(fakeself, context, fqdomain): raise exception.NotFound self.stubs.Set(network.api.API, "delete_dns_domain", delete_dns_domain_notfound) req = fakes.HTTPRequest.blank('/v2/123/os-floating-ip-dns/%s' % _quote_domain(domain)) self.assertRaises(webob.exc.HTTPNotFound, self.domain_controller.delete, req, _quote_domain(domain)) def test_modify(self): body = {'dns_entry': {'ip': test_ipv4_address2, 'dns_type': 'A'}} req = fakes.HTTPRequest.blank( '/v2/123/os-floating-ip-dns/%s/entries/%s' % (domain, name)) entry = self.entry_controller.update(req, domain, name, body) self.assertEqual(entry['dns_entry']['ip'], test_ipv4_address2) class FloatingIpDNSSerializerTest(test.TestCase): def test_domains(self): serializer = floating_ip_dns.DomainsTemplate() text = serializer.serialize(dict( domain_entries=[ dict(domain=domain, scope='public', project='testproject'), dict(domain=domain2, scope='private', availability_zone='avzone')])) tree = etree.fromstring(text) self.assertEqual('domain_entries', tree.tag) self.assertEqual(2, len(tree)) self.assertEqual(domain, tree[0].get('domain')) self.assertEqual(domain2, tree[1].get('domain')) self.assertEqual('avzone', tree[1].get('availability_zone')) def test_domain_serializer(self): serializer = floating_ip_dns.DomainTemplate() text = serializer.serialize(dict( domain_entry=dict(domain=domain, scope='public', project='testproject'))) tree = etree.fromstring(text) self.assertEqual('domain_entry', tree.tag) self.assertEqual(domain, tree.get('domain')) self.assertEqual('testproject', tree.get('project')) def test_entries_serializer(self): serializer = floating_ip_dns.FloatingIPDNSsTemplate() text = serializer.serialize(dict( dns_entries=[ dict(ip=test_ipv4_address, type='A', domain=domain, name=name), dict(ip=test_ipv4_address2, type='C', domain=domain, name=name2)])) tree = etree.fromstring(text) self.assertEqual('dns_entries', tree.tag) self.assertEqual(2, len(tree)) self.assertEqual('dns_entry', tree[0].tag) self.assertEqual('dns_entry', tree[1].tag) self.assertEqual(test_ipv4_address, tree[0].get('ip')) self.assertEqual('A', tree[0].get('type')) self.assertEqual(domain, tree[0].get('domain')) self.assertEqual(name, tree[0].get('name')) self.assertEqual(test_ipv4_address2, tree[1].get('ip')) self.assertEqual('C', tree[1].get('type')) self.assertEqual(domain, tree[1].get('domain')) self.assertEqual(name2, tree[1].get('name')) def test_entry_serializer(self): serializer = floating_ip_dns.FloatingIPDNSTemplate() text = serializer.serialize(dict( dns_entry=dict( ip=test_ipv4_address, type='A', domain=domain, name=name))) tree = etree.fromstring(text) self.assertEqual('dns_entry', tree.tag) self.assertEqual(test_ipv4_address, tree.get('ip')) self.assertEqual(domain, tree.get('domain')) self.assertEqual(name, tree.get('name')) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_hosts.py0000664000175400017540000004141612323721477026452 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import testtools import webob.exc from nova.api.openstack.compute.contrib import hosts as os_hosts from nova.compute import power_state from nova.compute import vm_states from nova import context as context_maker from nova import db from nova import exception from nova import test from nova.tests import fake_hosts from nova.tests import utils def stub_service_get_all(context, disabled=None): return fake_hosts.SERVICES_LIST def stub_service_get_by_host_and_topic(context, host_name, topic): for service in stub_service_get_all(context): if service['host'] == host_name and service['topic'] == topic: return service def stub_set_host_enabled(context, host_name, enabled): """Simulates three possible behaviours for VM drivers or compute drivers when enabling or disabling a host. 'enabled' means new instances can go to this host 'disabled' means they can't """ results = {True: "enabled", False: "disabled"} if host_name == "notimplemented": # The vm driver for this host doesn't support this feature raise NotImplementedError() elif host_name == "dummydest": # The host does not exist raise exception.ComputeHostNotFound(host=host_name) elif host_name == "host_c2": # Simulate a failure return results[not enabled] else: # Do the right thing return results[enabled] def stub_set_host_maintenance(context, host_name, mode): # We'll simulate success and failure by assuming # that 'host_c1' always succeeds, and 'host_c2' # always fails results = {True: "on_maintenance", False: "off_maintenance"} if host_name == "notimplemented": # The vm driver for this host doesn't support this feature raise NotImplementedError() elif host_name == "dummydest": # The host does not exist raise exception.ComputeHostNotFound(host=host_name) elif host_name == "host_c2": # Simulate a failure return results[not mode] else: # Do the right thing return results[mode] def stub_host_power_action(context, host_name, action): if host_name == "notimplemented": raise NotImplementedError() elif host_name == "dummydest": # The host does not exist raise exception.ComputeHostNotFound(host=host_name) return action def _create_instance(**kwargs): """Create a test instance.""" ctxt = context_maker.get_admin_context() return db.instance_create(ctxt, _create_instance_dict(**kwargs)) def _create_instance_dict(**kwargs): """Create a dictionary for a test instance.""" inst = {} inst['image_ref'] = 'cedef40a-ed67-4d10-800e-17455edce175' inst['reservation_id'] = 'r-fakeres' inst['user_id'] = kwargs.get('user_id', 'admin') inst['project_id'] = kwargs.get('project_id', 'fake') inst['instance_type_id'] = '1' if 'host' in kwargs: inst['host'] = kwargs.get('host') inst['vcpus'] = kwargs.get('vcpus', 1) inst['memory_mb'] = kwargs.get('memory_mb', 20) inst['root_gb'] = kwargs.get('root_gb', 30) inst['ephemeral_gb'] = kwargs.get('ephemeral_gb', 30) inst['vm_state'] = kwargs.get('vm_state', vm_states.ACTIVE) inst['power_state'] = kwargs.get('power_state', power_state.RUNNING) inst['task_state'] = kwargs.get('task_state', None) inst['availability_zone'] = kwargs.get('availability_zone', None) inst['ami_launch_index'] = 0 inst['launched_on'] = kwargs.get('launched_on', 'dummy') return inst class FakeRequest(object): environ = {"nova.context": context_maker.get_admin_context()} GET = {} class FakeRequestWithNovaZone(object): environ = {"nova.context": context_maker.get_admin_context()} GET = {"zone": "nova"} class HostTestCase(test.TestCase): """Test Case for hosts.""" def setUp(self): super(HostTestCase, self).setUp() self.controller = os_hosts.HostController() self.hosts_api = self.controller.api self.req = FakeRequest() # Pretend we have fake_hosts.HOST_LIST in the DB self.stubs.Set(db, 'service_get_all', stub_service_get_all) # Only hosts in our fake DB exist self.stubs.Set(db, 'service_get_by_host_and_topic', stub_service_get_by_host_and_topic) # 'host_c1' always succeeds, and 'host_c2' self.stubs.Set(self.hosts_api, 'set_host_enabled', stub_set_host_enabled) # 'host_c1' always succeeds, and 'host_c2' self.stubs.Set(self.hosts_api, 'set_host_maintenance', stub_set_host_maintenance) self.stubs.Set(self.hosts_api, 'host_power_action', stub_host_power_action) def _test_host_update(self, host, key, val, expected_value): body = {key: val} result = self.controller.update(self.req, host, body) self.assertEqual(result[key], expected_value) def test_list_hosts(self): """Verify that the compute hosts are returned.""" result = self.controller.index(self.req) self.assertIn('hosts', result) hosts = result['hosts'] self.assertEqual(fake_hosts.HOST_LIST, hosts) def test_list_hosts_with_zone(self): result = self.controller.index(FakeRequestWithNovaZone()) self.assertIn('hosts', result) hosts = result['hosts'] self.assertEqual(fake_hosts.HOST_LIST_NOVA_ZONE, hosts) def test_disable_host(self): self._test_host_update('host_c1', 'status', 'disable', 'disabled') self._test_host_update('host_c2', 'status', 'disable', 'enabled') def test_enable_host(self): self._test_host_update('host_c1', 'status', 'enable', 'enabled') self._test_host_update('host_c2', 'status', 'enable', 'disabled') def test_enable_maintenance(self): self._test_host_update('host_c1', 'maintenance_mode', 'enable', 'on_maintenance') def test_disable_maintenance(self): self._test_host_update('host_c1', 'maintenance_mode', 'disable', 'off_maintenance') def _test_host_update_notimpl(self, key, val): def stub_service_get_all_notimpl(self, req): return [{'host': 'notimplemented', 'topic': None, 'availability_zone': None}] self.stubs.Set(db, 'service_get_all', stub_service_get_all_notimpl) body = {key: val} self.assertRaises(webob.exc.HTTPNotImplemented, self.controller.update, self.req, 'notimplemented', body=body) def test_disable_host_notimpl(self): self._test_host_update_notimpl('status', 'disable') def test_enable_maintenance_notimpl(self): self._test_host_update_notimpl('maintenance_mode', 'enable') def test_host_startup(self): result = self.controller.startup(self.req, "host_c1") self.assertEqual(result["power_action"], "startup") def test_host_shutdown(self): result = self.controller.shutdown(self.req, "host_c1") self.assertEqual(result["power_action"], "shutdown") def test_host_reboot(self): result = self.controller.reboot(self.req, "host_c1") self.assertEqual(result["power_action"], "reboot") def _test_host_power_action_notimpl(self, method): self.assertRaises(webob.exc.HTTPNotImplemented, method, self.req, "notimplemented") def test_host_startup_notimpl(self): self._test_host_power_action_notimpl(self.controller.startup) def test_host_shutdown_notimpl(self): self._test_host_power_action_notimpl(self.controller.shutdown) def test_host_reboot_notimpl(self): self._test_host_power_action_notimpl(self.controller.reboot) def test_host_status_bad_host(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.update(self.req, dest, body={'status': 'enable'}) def test_host_maintenance_bad_host(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.update(self.req, dest, body={'maintenance_mode': 'enable'}) def test_host_power_action_bad_host(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.reboot(self.req, dest) def test_bad_status_value(self): bad_body = {"status": "bad"} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) bad_body2 = {"status": "disablabc"} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body2) def test_bad_update_key(self): bad_body = {"crazy": "bad"} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) def test_bad_update_key_and_correct_update_key(self): bad_body = {"status": "disable", "crazy": "bad"} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, "host_c1", bad_body) def test_good_update_keys(self): body = {"status": "disable", "maintenance_mode": "enable"} result = self.controller.update(self.req, 'host_c1', body) self.assertEqual(result["host"], "host_c1") self.assertEqual(result["status"], "disabled") self.assertEqual(result["maintenance_mode"], "on_maintenance") def test_show_forbidden(self): self.req.environ["nova.context"].is_admin = False dest = 'dummydest' self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, self.req, dest) self.req.environ["nova.context"].is_admin = True def test_show_host_not_exist(self): # A host given as an argument does not exist. self.req.environ["nova.context"].is_admin = True dest = 'dummydest' with testtools.ExpectedException(webob.exc.HTTPNotFound, ".*%s.*" % dest): self.controller.show(self.req, dest) def _create_compute_service(self): """Create compute-manager(ComputeNode and Service record).""" ctxt = self.req.environ["nova.context"] dic = {'host': 'dummy', 'binary': 'nova-compute', 'topic': 'compute', 'report_count': 0} s_ref = db.service_create(ctxt, dic) dic = {'service_id': s_ref['id'], 'vcpus': 16, 'memory_mb': 32, 'local_gb': 100, 'vcpus_used': 16, 'memory_mb_used': 32, 'local_gb_used': 10, 'hypervisor_type': 'qemu', 'hypervisor_version': 12003, 'cpu_info': '', 'stats': ''} db.compute_node_create(ctxt, dic) return db.service_get(ctxt, s_ref['id']) def test_show_no_project(self): """No instances are running on the given host.""" ctxt = context_maker.get_admin_context() s_ref = self._create_compute_service() result = self.controller.show(self.req, s_ref['host']) proj = ['(total)', '(used_now)', '(used_max)'] column = ['host', 'project', 'cpu', 'memory_mb', 'disk_gb'] self.assertEqual(len(result['host']), 3) for resource in result['host']: self.assertIn(resource['resource']['project'], proj) self.assertEqual(len(resource['resource']), 5) self.assertTrue(set(resource['resource'].keys()) == set(column)) db.service_destroy(ctxt, s_ref['id']) def test_show_works_correctly(self): """show() works correctly as expected.""" ctxt = context_maker.get_admin_context() s_ref = self._create_compute_service() i_ref1 = _create_instance(project_id='p-01', host=s_ref['host']) i_ref2 = _create_instance(project_id='p-02', vcpus=3, host=s_ref['host']) result = self.controller.show(self.req, s_ref['host']) proj = ['(total)', '(used_now)', '(used_max)', 'p-01', 'p-02'] column = ['host', 'project', 'cpu', 'memory_mb', 'disk_gb'] self.assertEqual(len(result['host']), 5) for resource in result['host']: self.assertIn(resource['resource']['project'], proj) self.assertEqual(len(resource['resource']), 5) self.assertTrue(set(resource['resource'].keys()) == set(column)) db.service_destroy(ctxt, s_ref['id']) db.instance_destroy(ctxt, i_ref1['uuid']) db.instance_destroy(ctxt, i_ref2['uuid']) class HostSerializerTest(test.TestCase): def setUp(self): super(HostSerializerTest, self).setUp() self.deserializer = os_hosts.HostUpdateDeserializer() def test_index_serializer(self): serializer = os_hosts.HostIndexTemplate() text = serializer.serialize(fake_hosts.OS_API_HOST_LIST) tree = etree.fromstring(text) self.assertEqual('hosts', tree.tag) self.assertEqual(len(fake_hosts.HOST_LIST), len(tree)) for i in range(len(fake_hosts.HOST_LIST)): self.assertEqual('host', tree[i].tag) self.assertEqual(fake_hosts.HOST_LIST[i]['host_name'], tree[i].get('host_name')) self.assertEqual(fake_hosts.HOST_LIST[i]['service'], tree[i].get('service')) self.assertEqual(fake_hosts.HOST_LIST[i]['zone'], tree[i].get('zone')) def test_update_serializer_with_status(self): exemplar = dict(host='host_c1', status='enabled') serializer = os_hosts.HostUpdateTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('host', tree.tag) for key, value in exemplar.items(): self.assertEqual(value, tree.get(key)) def test_update_serializer_with_maintenance_mode(self): exemplar = dict(host='host_c1', maintenance_mode='enabled') serializer = os_hosts.HostUpdateTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('host', tree.tag) for key, value in exemplar.items(): self.assertEqual(value, tree.get(key)) def test_update_serializer_with_maintenance_mode_and_status(self): exemplar = dict(host='host_c1', maintenance_mode='enabled', status='enabled') serializer = os_hosts.HostUpdateTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('host', tree.tag) for key, value in exemplar.items(): self.assertEqual(value, tree.get(key)) def test_action_serializer(self): exemplar = dict(host='host_c1', power_action='reboot') serializer = os_hosts.HostActionTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('host', tree.tag) for key, value in exemplar.items(): self.assertEqual(value, tree.get(key)) def test_update_deserializer(self): exemplar = dict(status='enabled', maintenance_mode='disable') intext = """ enabled disable """ result = self.deserializer.deserialize(intext) self.assertEqual(dict(body=exemplar), result) def test_corrupt_xml(self): self.assertRaises( exception.MalformedRequestBody, self.deserializer.deserialize, utils.killer_xml_body()) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_config_drive.py0000664000175400017540000000461212323721477027745 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.contrib import config_drive from nova import db from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes import nova.tests.image.fake class ConfigDriveTest(test.TestCase): def setUp(self): super(ConfigDriveTest, self).setUp() self.Controller = config_drive.Controller() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) nova.tests.image.fake.stub_out_image_service(self.stubs) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Config_drive']) def test_show(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v2/fake/servers/1') req.headers['Content-Type'] = 'application/json' response = req.get_response(fakes.wsgi_app(init_only=('servers',))) self.assertEqual(response.status_int, 200) res_dict = jsonutils.loads(response.body) self.assertIn('config_drive', res_dict['server']) def test_detail_servers(self): self.stubs.Set(db, 'instance_get_all_by_filters', fakes.fake_instance_get_all_by_filters()) req = fakes.HTTPRequest.blank('/v2/fake/servers/detail') res = req.get_response(fakes.wsgi_app(init_only=('servers,'))) server_dicts = jsonutils.loads(res.body)['servers'] self.assertNotEqual(len(server_dicts), 0) for server_dict in server_dicts: self.assertIn('config_drive', server_dict) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_volumes.py0000664000175400017540000001122712323721477030661 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_volumes from nova import compute from nova import db from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID1) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): db_list = [fakes.stub_instance(1), fakes.stub_instance(2)] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) def fake_bdms_get_all_by_instance(*args, **kwargs): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': UUID1, 'source_type': 'volume', 'destination_type': 'volume', 'id': 1}), fake_block_device.FakeDbBlockDeviceDict( {'volume_id': UUID2, 'source_type': 'volume', 'destination_type': 'volume', 'id': 2})] class ExtendedVolumesTest(test.TestCase): content_type = 'application/json' prefix = 'os-extended-volumes:' def setUp(self): super(ExtendedVolumesTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_bdms_get_all_by_instance) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Extended_volumes']) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def test_show(self): url = '/v2/fake/servers/%s' % UUID1 res = self._make_request(url) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) exp_volumes = [{'id': UUID1}, {'id': UUID2}] if self.content_type == 'application/json': actual = server.get('%svolumes_attached' % self.prefix) elif self.content_type == 'application/xml': actual = [dict(elem.items()) for elem in server.findall('%svolume_attached' % self.prefix)] self.assertEqual(exp_volumes, actual) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) exp_volumes = [{'id': UUID1}, {'id': UUID2}] for i, server in enumerate(self._get_servers(res.body)): if self.content_type == 'application/json': actual = server.get('%svolumes_attached' % self.prefix) elif self.content_type == 'application/xml': actual = [dict(elem.items()) for elem in server.findall('%svolume_attached' % self.prefix)] self.assertEqual(exp_volumes, actual) class ExtendedVolumesXmlTest(ExtendedVolumesTest): content_type = 'application/xml' prefix = '{%s}' % extended_volumes.Extended_volumes.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_availability_zone.py0000664000175400017540000001416412323721477032677 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_availability_zone from nova import availability_zones from nova import compute from nova.compute import vm_states from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get_az(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="get-host", vm_state=vm_states.ACTIVE, availability_zone='fakeaz') return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_empty(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="", vm_state=vm_states.ACTIVE, availability_zone='fakeaz') return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, host="get-host", vm_state=vm_states.ACTIVE) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): inst1 = fakes.stub_instance(1, uuid=UUID1, host="all-host", vm_state=vm_states.ACTIVE) inst2 = fakes.stub_instance(2, uuid=UUID2, host="all-host", vm_state=vm_states.ACTIVE) db_list = [inst1, inst2] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) def fake_get_host_availability_zone(context, host): return host def fake_get_no_host_availability_zone(context, host): return None class ExtendedAvailabilityZoneTest(test.TestCase): content_type = 'application/json' prefix = 'OS-EXT-AZ:' def setUp(self): super(ExtendedAvailabilityZoneTest, self).setUp() availability_zones.reset_cache() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.stubs.Set(availability_zones, 'get_host_availability_zone', fake_get_host_availability_zone) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Extended_availability_zone']) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertAvailabilityZone(self, server, az): self.assertEqual(server.get('%savailability_zone' % self.prefix), az) def test_show_no_host_az(self): self.stubs.Set(compute.api.API, 'get', fake_compute_get_az) self.stubs.Set(availability_zones, 'get_host_availability_zone', fake_get_no_host_availability_zone) url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertAvailabilityZone(self._get_server(res.body), 'fakeaz') def test_show_empty_host_az(self): self.stubs.Set(compute.api.API, 'get', fake_compute_get_empty) self.stubs.Set(availability_zones, 'get_host_availability_zone', fake_get_no_host_availability_zone) url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertAvailabilityZone(self._get_server(res.body), 'fakeaz') def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertAvailabilityZone(self._get_server(res.body), 'get-host') def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertAvailabilityZone(server, 'all-host') def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v2/fake/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class ExtendedAvailabilityZoneXmlTest(ExtendedAvailabilityZoneTest): content_type = 'application/xml' prefix = '{%s}' % extended_availability_zone.\ Extended_availability_zone.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_status.py0000664000175400017540000001130212323721477030504 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_status from nova import compute from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, task_state="kayaking", vm_state="slightly crunchy", power_state=1) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(1, uuid=UUID1, task_state="task-1", vm_state="vm-1", power_state=1), fakes.stub_instance(2, uuid=UUID2, task_state="task-2", vm_state="vm-2", power_state=2), ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ExtendedStatusTest(test.TestCase): content_type = 'application/json' prefix = 'OS-EXT-STS:' def setUp(self): super(ExtendedStatusTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Extended_status']) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertServerStates(self, server, vm_state, power_state, task_state): self.assertEqual(server.get('%svm_state' % self.prefix), vm_state) self.assertEqual(int(server.get('%spower_state' % self.prefix)), power_state) self.assertEqual(server.get('%stask_state' % self.prefix), task_state) def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertServerStates(self._get_server(res.body), vm_state='slightly crunchy', power_state=1, task_state='kayaking') def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertServerStates(server, vm_state='vm-%s' % (i + 1), power_state=(i + 1), task_state='task-%s' % (i + 1)) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v2/fake/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class ExtendedStatusXmlTest(ExtendedStatusTest): content_type = 'application/xml' prefix = '{%s}' % extended_status.Extended_status.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavor_access.py0000664000175400017540000003430612323721477030124 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from lxml import etree from webob import exc from nova.api.openstack.compute.contrib import flavor_access from nova.api.openstack.compute import flavors as flavors_api from nova import context from nova import db from nova import exception from nova import test from nova.tests.api.openstack import fakes def generate_flavor(flavorid, ispublic): return { 'id': flavorid, 'flavorid': str(flavorid), 'root_gb': 1, 'ephemeral_gb': 1, 'name': u'test', 'deleted': False, 'created_at': datetime.datetime(2012, 1, 1, 1, 1, 1, 1), 'updated_at': None, 'memory_mb': 512, 'vcpus': 1, 'swap': 512, 'rxtx_factor': 1.0, 'disabled': False, 'extra_specs': {}, 'deleted_at': None, 'vcpu_weight': None, 'is_public': bool(ispublic) } INSTANCE_TYPES = { '0': generate_flavor(0, True), '1': generate_flavor(1, True), '2': generate_flavor(2, False), '3': generate_flavor(3, False)} ACCESS_LIST = [{'flavor_id': '2', 'project_id': 'proj2'}, {'flavor_id': '2', 'project_id': 'proj3'}, {'flavor_id': '3', 'project_id': 'proj3'}] def fake_get_flavor_access_by_flavor_id(context, flavorid): res = [] for access in ACCESS_LIST: if access['flavor_id'] == flavorid: res.append(access) return res def fake_get_flavor_by_flavor_id(context, flavorid, read_deleted=None): return INSTANCE_TYPES[flavorid] def _has_flavor_access(flavorid, projectid): for access in ACCESS_LIST: if access['flavor_id'] == flavorid and \ access['project_id'] == projectid: return True return False def fake_get_all_flavors_sorted_list(context, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): if filters == None or filters['is_public'] == None: return sorted(INSTANCE_TYPES.values(), key=lambda item: item[sort_key]) res = {} for k, v in INSTANCE_TYPES.iteritems(): if filters['is_public'] and _has_flavor_access(k, context.project_id): res.update({k: v}) continue if v['is_public'] == filters['is_public']: res.update({k: v}) res = sorted(res.values(), key=lambda item: item[sort_key]) return res class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} def get_db_flavor(self, flavor_id): return INSTANCE_TYPES[flavor_id] class FakeResponse(object): obj = {'flavor': {'id': '0'}, 'flavors': [ {'id': '0'}, {'id': '2'}] } def attach(self, **kwargs): pass class FlavorAccessTest(test.NoDBTestCase): def setUp(self): super(FlavorAccessTest, self).setUp() self.flavor_controller = flavors_api.Controller() self.flavor_access_controller = flavor_access.FlavorAccessController() self.flavor_action_controller = flavor_access.FlavorActionController() self.req = FakeRequest() self.context = self.req.environ['nova.context'] self.stubs.Set(db, 'flavor_get_by_flavor_id', fake_get_flavor_by_flavor_id) self.stubs.Set(db, 'flavor_get_all', fake_get_all_flavors_sorted_list) self.stubs.Set(db, 'flavor_access_get_by_flavor_id', fake_get_flavor_access_by_flavor_id) def _verify_flavor_list(self, result, expected): # result already sorted by flavor_id self.assertEqual(len(result), len(expected)) for d1, d2 in zip(result, expected): self.assertEqual(d1['id'], d2['id']) def test_list_flavor_access_public(self): # query os-flavor-access on public flavor should return 404 req = fakes.HTTPRequest.blank('/v2/fake/flavors/os-flavor-access', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.flavor_access_controller.index, self.req, '1') def test_list_flavor_access_private(self): expected = {'flavor_access': [ {'flavor_id': '2', 'tenant_id': 'proj2'}, {'flavor_id': '2', 'tenant_id': 'proj3'}]} result = self.flavor_access_controller.index(self.req, '2') self.assertEqual(result, expected) def test_list_with_no_context(self): req = fakes.HTTPRequest.blank('/v2/flavors/fake/flavors') def fake_authorize(context, target=None, action=None): raise exception.PolicyNotAuthorized(action='index') self.stubs.Set(flavor_access, 'authorize', fake_authorize) self.assertRaises(exception.PolicyNotAuthorized, self.flavor_access_controller.index, req, 'fake') def test_list_flavor_with_admin_default_proj1(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors', use_admin_context=True) req.environ['nova.context'].project_id = 'proj1' result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_default_proj2(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}, {'id': '2'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors', use_admin_context=True) req.environ['nova.context'].project_id = 'proj2' result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_true(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=true', use_admin_context=True) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_false(self): expected = {'flavors': [{'id': '2'}, {'id': '3'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=false', use_admin_context=True) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_false_proj2(self): expected = {'flavors': [{'id': '2'}, {'id': '3'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=false', use_admin_context=True) req.environ['nova.context'].project_id = 'proj2' result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_admin_ispublic_none(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}, {'id': '2'}, {'id': '3'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=none', use_admin_context=True) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_default(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_ispublic_true(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=true', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_ispublic_false(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=false', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_list_flavor_with_no_admin_ispublic_none(self): expected = {'flavors': [{'id': '0'}, {'id': '1'}]} req = fakes.HTTPRequest.blank('/v2/fake/flavors?is_public=none', use_admin_context=False) result = self.flavor_controller.index(req) self._verify_flavor_list(result['flavors'], expected['flavors']) def test_show(self): resp = FakeResponse() self.flavor_action_controller.show(self.req, resp, '0') self.assertEqual({'id': '0', 'os-flavor-access:is_public': True}, resp.obj['flavor']) self.flavor_action_controller.show(self.req, resp, '2') self.assertEqual({'id': '0', 'os-flavor-access:is_public': False}, resp.obj['flavor']) def test_detail(self): resp = FakeResponse() self.flavor_action_controller.detail(self.req, resp) self.assertEqual([{'id': '0', 'os-flavor-access:is_public': True}, {'id': '2', 'os-flavor-access:is_public': False}], resp.obj['flavors']) def test_create(self): resp = FakeResponse() self.flavor_action_controller.create(self.req, {}, resp) self.assertEqual({'id': '0', 'os-flavor-access:is_public': True}, resp.obj['flavor']) def test_add_tenant_access(self): def stub_add_flavor_access(context, flavorid, projectid): self.assertEqual('3', flavorid, "flavorid") self.assertEqual("proj2", projectid, "projectid") self.stubs.Set(db, 'flavor_access_add', stub_add_flavor_access) expected = {'flavor_access': [{'flavor_id': '3', 'tenant_id': 'proj3'}]} body = {'addTenantAccess': {'tenant': 'proj2'}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action', use_admin_context=True) result = self.flavor_action_controller.\ _addTenantAccess(req, '3', body) self.assertEqual(result, expected) def test_add_tenant_access_with_no_admin_user(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action', use_admin_context=False) body = {'addTenantAccess': {'tenant': 'proj2'}} self.assertRaises(exception.PolicyNotAuthorized, self.flavor_action_controller._addTenantAccess, req, '2', body) def test_add_tenant_access_with_already_added_access(self): def stub_add_flavor_access(context, flavorid, projectid): raise exception.FlavorAccessExists(flavor_id=flavorid, project_id=projectid) self.stubs.Set(db, 'flavor_access_add', stub_add_flavor_access) body = {'addTenantAccess': {'tenant': 'proj2'}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action', use_admin_context=True) self.assertRaises(exc.HTTPConflict, self.flavor_action_controller._addTenantAccess, self.req, '3', body) def test_remove_tenant_access_with_bad_access(self): def stub_remove_flavor_access(context, flavorid, projectid): raise exception.FlavorAccessNotFound(flavor_id=flavorid, project_id=projectid) self.stubs.Set(db, 'flavor_access_remove', stub_remove_flavor_access) body = {'removeTenantAccess': {'tenant': 'proj2'}} req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action', use_admin_context=True) self.assertRaises(exc.HTTPNotFound, self.flavor_action_controller._removeTenantAccess, self.req, '3', body) def test_remove_tenant_access_with_no_admin_user(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action', use_admin_context=False) body = {'removeTenantAccess': {'tenant': 'proj2'}} self.assertRaises(exception.PolicyNotAuthorized, self.flavor_action_controller._removeTenantAccess, req, '2', body) class FlavorAccessSerializerTest(test.NoDBTestCase): def test_serializer_empty(self): serializer = flavor_access.FlavorAccessTemplate() text = serializer.serialize(dict(flavor_access=[])) tree = etree.fromstring(text) self.assertEqual(len(tree), 0) def test_serializer(self): expected = ("\n" '' '' '' '') access_list = [{'flavor_id': '2', 'tenant_id': 'proj2'}, {'flavor_id': '2', 'tenant_id': 'proj3'}] serializer = flavor_access.FlavorAccessTemplate() text = serializer.serialize(dict(flavor_access=access_list)) self.assertEqual(text, expected) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_ips.py0000664000175400017540000001315312323721477027762 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nebula, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_ips from nova.api.openstack import xmlutil from nova import compute from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' NW_CACHE = [ { 'address': 'aa:aa:aa:aa:aa:aa', 'id': 1, 'network': { 'bridge': 'br0', 'id': 1, 'label': 'private', 'subnets': [ { 'cidr': '192.168.1.0/24', 'ips': [ { 'address': '192.168.1.100', 'type': 'fixed', 'floating_ips': [ {'address': '5.0.0.1', 'type': 'floating'}, ], }, ], }, ] } }, { 'address': 'bb:bb:bb:bb:bb:bb', 'id': 2, 'network': { 'bridge': 'br1', 'id': 2, 'label': 'public', 'subnets': [ { 'cidr': '10.0.0.0/24', 'ips': [ { 'address': '10.0.0.100', 'type': 'fixed', 'floating_ips': [ {'address': '5.0.0.2', 'type': 'floating'}, ], } ], }, ] } } ] ALL_IPS = [] for cache in NW_CACHE: for subnet in cache['network']['subnets']: for fixed in subnet['ips']: sanitized = dict(fixed) sanitized.pop('floating_ips') ALL_IPS.append(sanitized) for floating in fixed['floating_ips']: ALL_IPS.append(floating) ALL_IPS.sort() def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, nw_cache=NW_CACHE) return fake_instance.fake_instance_obj(args[1], expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(1, uuid=UUID1, nw_cache=NW_CACHE), fakes.stub_instance(2, uuid=UUID2, nw_cache=NW_CACHE), ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ExtendedIpsTest(test.TestCase): content_type = 'application/json' prefix = 'OS-EXT-IPS:' def setUp(self): super(ExtendedIpsTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Extended_ips']) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def _get_ips(self, server): for network in server['addresses'].itervalues(): for ip in network: yield ip def assertServerStates(self, server): results = [] for ip in self._get_ips(server): results.append({'address': ip.get('addr'), 'type': ip.get('%stype' % self.prefix)}) self.assertEqual(ALL_IPS, sorted(results)) def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertServerStates(self._get_server(res.body)) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, server in enumerate(self._get_servers(res.body)): self.assertServerStates(server) class ExtendedIpsXmlTest(ExtendedIpsTest): content_type = 'application/xml' prefix = '{%s}' % extended_ips.Extended_ips.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() def _get_ips(self, server): for network in server.find('{%s}addresses' % xmlutil.XMLNS_V11): for ip in network: yield ip nova-2014.1/nova/tests/api/openstack/compute/contrib/test_aggregates.py0000664000175400017540000005142512323721477027424 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Citrix Systems, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for the aggregates admin api.""" from webob import exc from nova.api.openstack.compute.contrib import aggregates from nova import context from nova import exception from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers AGGREGATE_LIST = [ {"name": "aggregate1", "id": "1", "availability_zone": "nova1"}, {"name": "aggregate2", "id": "2", "availability_zone": "nova1"}, {"name": "aggregate3", "id": "3", "availability_zone": "nova2"}, {"name": "aggregate1", "id": "4", "availability_zone": "nova1"}] AGGREGATE = {"name": "aggregate1", "id": "1", "availability_zone": "nova1", "metadata": {"foo": "bar"}, "hosts": ["host1, host2"]} class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} class AggregateTestCase(test.NoDBTestCase): """Test Case for aggregates admin api.""" def setUp(self): super(AggregateTestCase, self).setUp() self.controller = aggregates.AggregateController() self.req = FakeRequest() self.user_req = fakes.HTTPRequest.blank('/v2/os-aggregates') self.context = self.req.environ['nova.context'] def test_index(self): def stub_list_aggregates(context): if context is None: raise Exception() return AGGREGATE_LIST self.stubs.Set(self.controller.api, 'get_aggregate_list', stub_list_aggregates) result = self.controller.index(self.req) self.assertEqual(AGGREGATE_LIST, result["aggregates"]) def test_index_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, self.user_req) def test_create(self): def stub_create_aggregate(context, name, availability_zone): self.assertEqual(context, self.context, "context") self.assertEqual("test", name, "name") self.assertEqual("nova1", availability_zone, "availability_zone") return AGGREGATE self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) result = self.controller.create(self.req, {"aggregate": {"name": "test", "availability_zone": "nova1"}}) self.assertEqual(AGGREGATE, result["aggregate"]) def test_create_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.create, self.user_req, {"aggregate": {"name": "test", "availability_zone": "nova1"}}) def test_create_with_duplicate_aggregate_name(self): def stub_create_aggregate(context, name, availability_zone): raise exception.AggregateNameExists(aggregate_name=name) self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) self.assertRaises(exc.HTTPConflict, self.controller.create, self.req, {"aggregate": {"name": "test", "availability_zone": "nova1"}}) def test_create_with_incorrect_availability_zone(self): def stub_create_aggregate(context, name, availability_zone): raise exception.InvalidAggregateAction(action='create_aggregate', aggregate_id="'N/A'", reason='invalid zone') self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) self.assertRaises(exception.InvalidAggregateAction, self.controller.create, self.req, {"aggregate": {"name": "test", "availability_zone": "nova_bad"}}) def test_create_with_no_aggregate(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"foo": {"name": "test", "availability_zone": "nova1"}}) def test_create_with_no_name(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"foo": "test", "availability_zone": "nova1"}}) def test_create_with_no_availability_zone(self): def stub_create_aggregate(context, name, availability_zone): self.assertEqual(context, self.context, "context") self.assertEqual("test", name, "name") self.assertIsNone(availability_zone, "availability_zone") return AGGREGATE self.stubs.Set(self.controller.api, "create_aggregate", stub_create_aggregate) result = self.controller.create(self.req, {"aggregate": {"name": "test"}}) self.assertEqual(AGGREGATE, result["aggregate"]) def test_create_with_null_name(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"name": "", "availability_zone": "nova1"}}) def test_create_with_name_too_long(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, {"aggregate": {"name": "x" * 256, "availability_zone": "nova1"}}) def test_create_with_extra_invalid_arg(self): self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.req, dict(name="test", availability_zone="nova1", foo='bar')) def test_show(self): def stub_get_aggregate(context, id): self.assertEqual(context, self.context, "context") self.assertEqual("1", id, "id") return AGGREGATE self.stubs.Set(self.controller.api, 'get_aggregate', stub_get_aggregate) aggregate = self.controller.show(self.req, "1") self.assertEqual(AGGREGATE, aggregate["aggregate"]) def test_show_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.show, self.user_req, "1") def test_show_with_invalid_id(self): def stub_get_aggregate(context, id): raise exception.AggregateNotFound(aggregate_id=2) self.stubs.Set(self.controller.api, 'get_aggregate', stub_get_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.show, self.req, "2") def test_update(self): body = {"aggregate": {"name": "new_name", "availability_zone": "nova1"}} def stub_update_aggregate(context, aggregate, values): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertEqual(body["aggregate"], values, "values") return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) result = self.controller.update(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_update_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.update, self.user_req, "1", body={}) def test_update_with_only_name(self): body = {"aggregate": {"name": "new_name"}} def stub_update_aggregate(context, aggregate, values): return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) result = self.controller.update(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_update_with_only_availability_zone(self): body = {"aggregate": {"availability_zone": "nova1"}} def stub_update_aggregate(context, aggregate, values): return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) result = self.controller.update(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_update_with_no_updates(self): test_metadata = {"aggregate": {}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_no_update_key(self): test_metadata = {"asdf": {}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_wrong_updates(self): test_metadata = {"aggregate": {"status": "disable", "foo": "bar"}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_null_name(self): test_metadata = {"aggregate": {"name": ""}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_name_too_long(self): test_metadata = {"aggregate": {"name": "x" * 256}} self.assertRaises(exc.HTTPBadRequest, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_bad_aggregate(self): test_metadata = {"aggregate": {"name": "test_name"}} def stub_update_aggregate(context, aggregate, metadata): raise exception.AggregateNotFound(aggregate_id=2) self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.update, self.req, "2", body=test_metadata) def test_update_with_duplicated_name(self): test_metadata = {"aggregate": {"name": "test_name"}} def stub_update_aggregate(context, aggregate, metadata): raise exception.AggregateNameExists(aggregate_name="test_name") self.stubs.Set(self.controller.api, "update_aggregate", stub_update_aggregate) self.assertRaises(exc.HTTPConflict, self.controller.update, self.req, "2", body=test_metadata) def test_invalid_action(self): body = {"append_host": {"host": "host1"}} self.assertRaises(exc.HTTPBadRequest, self.controller.action, self.req, "1", body=body) def test_add_host(self): def stub_add_host_to_aggregate(context, aggregate, host): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertEqual("host1", host, "host") return AGGREGATE self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) aggregate = self.controller.action(self.req, "1", body={"add_host": {"host": "host1"}}) self.assertEqual(aggregate["aggregate"], AGGREGATE) def test_add_host_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.action, self.user_req, "1", body={"add_host": {"host": "host1"}}) def test_add_host_with_already_added_host(self): def stub_add_host_to_aggregate(context, aggregate, host): raise exception.AggregateHostExists(aggregate_id=aggregate, host=host) self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) self.assertRaises(exc.HTTPConflict, self.controller.action, self.req, "1", body={"add_host": {"host": "host1"}}) def test_add_host_with_bad_aggregate(self): def stub_add_host_to_aggregate(context, aggregate, host): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.action, self.req, "bogus_aggregate", body={"add_host": {"host": "host1"}}) def test_add_host_with_bad_host(self): def stub_add_host_to_aggregate(context, aggregate, host): raise exception.ComputeHostNotFound(host=host) self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.action, self.req, "1", body={"add_host": {"host": "bogus_host"}}) def test_add_host_with_missing_host(self): self.assertRaises(exc.HTTPBadRequest, self.controller.action, self.req, "1", body={"add_host": {"asdf": "asdf"}}) def test_add_host_raises_key_error(self): def stub_add_host_to_aggregate(context, aggregate, host): raise KeyError self.stubs.Set(self.controller.api, "add_host_to_aggregate", stub_add_host_to_aggregate) #NOTE(mtreinish) The check for a KeyError here is to ensure that # if add_host_to_aggregate() raises a KeyError it propagates. At # one point the api code would mask the error as a HTTPBadRequest. # This test is to ensure that this doesn't occur again. self.assertRaises(KeyError, self.controller.action, self.req, "1", body={"add_host": {"host": "host1"}}) def test_remove_host(self): def stub_remove_host_from_aggregate(context, aggregate, host): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertEqual("host1", host, "host") stub_remove_host_from_aggregate.called = True return {} self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.controller.action(self.req, "1", body={"remove_host": {"host": "host1"}}) self.assertTrue(stub_remove_host_from_aggregate.called) def test_remove_host_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.action, self.user_req, "1", body={"remove_host": {"host": "host1"}}) def test_remove_host_with_bad_aggregate(self): def stub_remove_host_from_aggregate(context, aggregate, host): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.action, self.req, "bogus_aggregate", body={"remove_host": {"host": "host1"}}) def test_remove_host_with_host_not_in_aggregate(self): def stub_remove_host_from_aggregate(context, aggregate, host): raise exception.AggregateHostNotFound(aggregate_id=aggregate, host=host) self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.action, self.req, "1", body={"remove_host": {"host": "host1"}}) def test_remove_host_with_bad_host(self): def stub_remove_host_from_aggregate(context, aggregate, host): raise exception.ComputeHostNotFound(host=host) self.stubs.Set(self.controller.api, "remove_host_from_aggregate", stub_remove_host_from_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.action, self.req, "1", body={"remove_host": {"host": "bogushost"}}) def test_remove_host_with_missing_host(self): self.assertRaises(exc.HTTPBadRequest, self.controller.action, self.req, "1", body={"asdf": "asdf"}) def test_remove_host_with_extra_param(self): self.assertRaises(exc.HTTPBadRequest, self.controller.action, self.req, "1", body={"remove_host": {"asdf": "asdf", "host": "asdf"}}) def test_set_metadata(self): body = {"set_metadata": {"metadata": {"foo": "bar"}}} def stub_update_aggregate(context, aggregate, values): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") self.assertThat(body["set_metadata"]['metadata'], matchers.DictMatches(values)) return AGGREGATE self.stubs.Set(self.controller.api, "update_aggregate_metadata", stub_update_aggregate) result = self.controller.action(self.req, "1", body=body) self.assertEqual(AGGREGATE, result["aggregate"]) def test_set_metadata_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller._set_metadata, self.user_req, "1", body={"set_metadata": {"metadata": {"foo": "bar"}}}) def test_set_metadata_with_bad_aggregate(self): body = {"set_metadata": {"metadata": {"foo": "bar"}}} def stub_update_aggregate(context, aggregate, metadata): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "update_aggregate_metadata", stub_update_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.action, self.req, "bad_aggregate", body=body) def test_set_metadata_with_missing_metadata(self): body = {"asdf": {"foo": "bar"}} self.assertRaises(exc.HTTPBadRequest, self.controller.action, self.req, "1", body=body) def test_set_metadata_with_extra_params(self): body = {"metadata": {"foo": "bar"}, "asdf": {"foo": "bar"}} self.assertRaises(exc.HTTPBadRequest, self.controller.action, self.req, "1", body=body) def test_delete_aggregate(self): def stub_delete_aggregate(context, aggregate): self.assertEqual(context, self.context, "context") self.assertEqual("1", aggregate, "aggregate") stub_delete_aggregate.called = True self.stubs.Set(self.controller.api, "delete_aggregate", stub_delete_aggregate) self.controller.delete(self.req, "1") self.assertTrue(stub_delete_aggregate.called) def test_delete_aggregate_no_admin(self): self.assertRaises(exception.PolicyNotAuthorized, self.controller.delete, self.user_req, "1") def test_delete_aggregate_with_bad_aggregate(self): def stub_delete_aggregate(context, aggregate): raise exception.AggregateNotFound(aggregate_id=aggregate) self.stubs.Set(self.controller.api, "delete_aggregate", stub_delete_aggregate) self.assertRaises(exc.HTTPNotFound, self.controller.delete, self.req, "bogus_aggregate") nova-2014.1/nova/tests/api/openstack/compute/contrib/test_scheduler_hints.py0000664000175400017540000000640412323721477030473 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack import compute import nova.compute.api from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes UUID = fakes.FAKE_UUID class SchedulerHintsTestCase(test.TestCase): def setUp(self): super(SchedulerHintsTestCase, self).setUp() self.fake_instance = fakes.stub_instance(1, uuid=UUID) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Scheduler_hints']) self.app = compute.APIRouter(init_only=('servers',)) def test_create_server_without_hints(self): def fake_create(*args, **kwargs): self.assertEqual(kwargs['scheduler_hints'], {}) return ([self.fake_instance], '') self.stubs.Set(nova.compute.api.API, 'create', fake_create) req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = {'server': { 'name': 'server_test', 'imageRef': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavorRef': '1', }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(202, res.status_int) def test_create_server_with_hints(self): def fake_create(*args, **kwargs): self.assertEqual(kwargs['scheduler_hints'], {'a': 'b'}) return ([self.fake_instance], '') self.stubs.Set(nova.compute.api.API, 'create', fake_create) req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = { 'server': { 'name': 'server_test', 'imageRef': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavorRef': '1', }, 'os:scheduler_hints': {'a': 'b'}, } req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(202, res.status_int) def test_create_server_bad_hints(self): req = fakes.HTTPRequest.blank('/fake/servers') req.method = 'POST' req.content_type = 'application/json' body = { 'server': { 'name': 'server_test', 'imageRef': 'cedef40a-ed67-4d10-800e-17455edce175', 'flavorRef': '1', }, 'os:scheduler_hints': 'here', } req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(400, res.status_int) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavorextradata.py0000664000175400017540000000720112323721477030473 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import webob from nova.compute import flavors from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_flavor_by_flavor_id(flavorid, ctxt=None): return { 'id': flavorid, 'flavorid': str(flavorid), 'root_gb': 1, 'ephemeral_gb': 1, 'name': u'test', 'deleted': False, 'created_at': datetime.datetime(2012, 1, 1, 1, 1, 1, 1), 'updated_at': None, 'memory_mb': 512, 'vcpus': 1, 'extra_specs': {}, 'deleted_at': None, 'vcpu_weight': None, } def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [ fake_get_flavor_by_flavor_id(1), fake_get_flavor_by_flavor_id(2) ] class FlavorextradataTest(test.NoDBTestCase): def setUp(self): super(FlavorextradataTest, self).setUp() ext = ('nova.api.openstack.compute.contrib' '.flavorextradata.Flavorextradata') self.flags(osapi_compute_extension=[ext]) self.stubs.Set(flavors, 'get_flavor_by_flavor_id', fake_get_flavor_by_flavor_id) self.stubs.Set(flavors, 'get_all_flavors_sorted_list', fake_get_all_flavors_sorted_list) def _verify_flavor_response(self, flavor, expected): for key in expected: self.assertEqual(flavor[key], expected[key]) def test_show(self): expected = { 'flavor': { 'id': '1', 'name': 'test', 'ram': 512, 'vcpus': 1, 'disk': 1, 'OS-FLV-EXT-DATA:ephemeral': 1, } } url = '/v2/fake/flavors/1' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app(init_only=('flavors',))) body = jsonutils.loads(res.body) self._verify_flavor_response(body['flavor'], expected['flavor']) def test_detail(self): expected = [ { 'id': '1', 'name': 'test', 'ram': 512, 'vcpus': 1, 'disk': 1, 'OS-FLV-EXT-DATA:ephemeral': 1, }, { 'id': '2', 'name': 'test', 'ram': 512, 'vcpus': 1, 'disk': 1, 'OS-FLV-EXT-DATA:ephemeral': 1, }, ] url = '/v2/fake/flavors/detail' req = webob.Request.blank(url) req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app(init_only=('flavors',))) body = jsonutils.loads(res.body) for i, flavor in enumerate(body['flavors']): self._verify_flavor_response(flavor, expected[i]) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_cells.py0000664000175400017540000005435612323721477026423 0ustar jenkinsjenkins00000000000000# Copyright 2011-2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from lxml import etree from webob import exc from nova.api.openstack.compute.contrib import cells as cells_ext from nova.api.openstack import extensions from nova.api.openstack import xmlutil from nova.cells import rpcapi as cells_rpcapi from nova import context from nova import exception from nova.openstack.common import timeutils from nova import rpc from nova import test from nova.tests.api.openstack import fakes from nova.tests import utils class BaseCellsTest(test.NoDBTestCase): def setUp(self): super(BaseCellsTest, self).setUp() self.fake_cells = [ dict(id=1, name='cell1', is_parent=True, weight_scale=1.0, weight_offset=0.0, transport_url='rabbit://bob:xxxx@r1.example.org/'), dict(id=2, name='cell2', is_parent=False, weight_scale=1.0, weight_offset=0.0, transport_url='rabbit://alice:qwerty@r2.example.org/')] self.fake_capabilities = [ {'cap1': '0,1', 'cap2': '2,3'}, {'cap3': '4,5', 'cap4': '5,6'}] def fake_cell_get(_self, context, cell_name): for cell in self.fake_cells: if cell_name == cell['name']: return cell else: raise exception.CellNotFound(cell_name=cell_name) def fake_cell_create(_self, context, values): cell = dict(id=1) cell.update(values) return cell def fake_cell_update(_self, context, cell_id, values): cell = fake_cell_get(_self, context, cell_id) cell.update(values) return cell def fake_cells_api_get_all_cell_info(*args): return self._get_all_cell_info(*args) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_get', fake_cell_get) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_update', fake_cell_update) self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_create', fake_cell_create) self.stubs.Set(cells_rpcapi.CellsAPI, 'get_cell_info_for_neighbors', fake_cells_api_get_all_cell_info) def _get_all_cell_info(self, *args): def insecure_transport_url(url): transport_url = rpc.get_transport_url(url) transport_url.hosts[0].password = None return str(transport_url) cells = copy.deepcopy(self.fake_cells) cells[0]['transport_url'] = insecure_transport_url( cells[0]['transport_url']) cells[1]['transport_url'] = insecure_transport_url( cells[1]['transport_url']) for i, cell in enumerate(cells): cell['capabilities'] = self.fake_capabilities[i] return cells class CellsTest(BaseCellsTest): def setUp(self): super(CellsTest, self).setUp() self.ext_mgr = self.mox.CreateMock(extensions.ExtensionManager) self.controller = cells_ext.Controller(self.ext_mgr) self.context = context.get_admin_context() self.flags(enable=True, group='cells') def _get_request(self, resource): return fakes.HTTPRequest.blank('/v2/fake/' + resource) def test_index(self): req = self._get_request("cells") res_dict = self.controller.index(req) self.assertEqual(len(res_dict['cells']), 2) for i, cell in enumerate(res_dict['cells']): self.assertEqual(cell['name'], self.fake_cells[i]['name']) self.assertNotIn('capabilitiles', cell) self.assertNotIn('password', cell) def test_detail(self): req = self._get_request("cells/detail") res_dict = self.controller.detail(req) self.assertEqual(len(res_dict['cells']), 2) for i, cell in enumerate(res_dict['cells']): self.assertEqual(cell['name'], self.fake_cells[i]['name']) self.assertEqual(cell['capabilities'], self.fake_capabilities[i]) self.assertNotIn('password', cell) def test_show_bogus_cell_raises(self): req = self._get_request("cells/bogus") self.assertRaises(exc.HTTPNotFound, self.controller.show, req, 'bogus') def test_get_cell_by_name(self): req = self._get_request("cells/cell1") res_dict = self.controller.show(req, 'cell1') cell = res_dict['cell'] self.assertEqual(cell['name'], 'cell1') self.assertEqual(cell['rpc_host'], 'r1.example.org') self.assertNotIn('password', cell) def test_cell_delete(self): call_info = {'delete_called': 0} def fake_cell_delete(inst, context, cell_name): self.assertEqual(cell_name, 'cell999') call_info['delete_called'] += 1 self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_delete', fake_cell_delete) req = self._get_request("cells/cell999") self.controller.delete(req, 'cell999') self.assertEqual(call_info['delete_called'], 1) def test_delete_bogus_cell_raises(self): def fake_cell_delete(inst, context, cell_name): return 0 self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_delete', fake_cell_delete) req = self._get_request("cells/cell999") req.environ['nova.context'] = self.context self.assertRaises(exc.HTTPNotFound, self.controller.delete, req, 'cell999') def test_cell_create_parent(self): body = {'cell': {'name': 'meow', 'username': 'fred', 'password': 'fubar', 'rpc_host': 'r3.example.org', 'type': 'parent', # Also test this is ignored/stripped 'is_parent': False}} req = self._get_request("cells") res_dict = self.controller.create(req, body) cell = res_dict['cell'] self.assertEqual(cell['name'], 'meow') self.assertEqual(cell['username'], 'fred') self.assertEqual(cell['rpc_host'], 'r3.example.org') self.assertEqual(cell['type'], 'parent') self.assertNotIn('password', cell) self.assertNotIn('is_parent', cell) def test_cell_create_child(self): body = {'cell': {'name': 'meow', 'username': 'fred', 'password': 'fubar', 'rpc_host': 'r3.example.org', 'type': 'child'}} req = self._get_request("cells") res_dict = self.controller.create(req, body) cell = res_dict['cell'] self.assertEqual(cell['name'], 'meow') self.assertEqual(cell['username'], 'fred') self.assertEqual(cell['rpc_host'], 'r3.example.org') self.assertEqual(cell['type'], 'child') self.assertNotIn('password', cell) self.assertNotIn('is_parent', cell) def test_cell_create_no_name_raises(self): body = {'cell': {'username': 'moocow', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_empty_string_raises(self): body = {'cell': {'name': '', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_with_bang_raises(self): body = {'cell': {'name': 'moo!cow', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_with_dot_raises(self): body = {'cell': {'name': 'moo.cow', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'parent'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_create_name_with_invalid_type_raises(self): body = {'cell': {'name': 'moocow', 'username': 'fred', 'password': 'secret', 'rpc_host': 'r3.example.org', 'type': 'invalid'}} req = self._get_request("cells") self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cell_update(self): body = {'cell': {'username': 'zeb', 'password': 'sneaky'}} req = self._get_request("cells/cell1") res_dict = self.controller.update(req, 'cell1', body) cell = res_dict['cell'] self.assertEqual(cell['name'], 'cell1') self.assertEqual(cell['rpc_host'], 'r1.example.org') self.assertEqual(cell['username'], 'zeb') self.assertNotIn('password', cell) def test_cell_update_empty_name_raises(self): body = {'cell': {'name': '', 'username': 'zeb', 'password': 'sneaky'}} req = self._get_request("cells/cell1") self.assertRaises(exc.HTTPBadRequest, self.controller.update, req, 'cell1', body) def test_cell_update_invalid_type_raises(self): body = {'cell': {'username': 'zeb', 'type': 'invalid', 'password': 'sneaky'}} req = self._get_request("cells/cell1") self.assertRaises(exc.HTTPBadRequest, self.controller.update, req, 'cell1', body) def test_cell_update_without_type_specified(self): body = {'cell': {'username': 'wingwj'}} req = self._get_request("cells/cell1") res_dict = self.controller.update(req, 'cell1', body) cell = res_dict['cell'] self.assertEqual(cell['name'], 'cell1') self.assertEqual(cell['rpc_host'], 'r1.example.org') self.assertEqual(cell['username'], 'wingwj') self.assertEqual(cell['type'], 'parent') def test_cell_update_with_type_specified(self): body1 = {'cell': {'username': 'wingwj', 'type': 'child'}} body2 = {'cell': {'username': 'wingwj', 'type': 'parent'}} req1 = self._get_request("cells/cell1") res_dict1 = self.controller.update(req1, 'cell1', body1) cell1 = res_dict1['cell'] req2 = self._get_request("cells/cell2") res_dict2 = self.controller.update(req2, 'cell2', body2) cell2 = res_dict2['cell'] self.assertEqual(cell1['name'], 'cell1') self.assertEqual(cell1['rpc_host'], 'r1.example.org') self.assertEqual(cell1['username'], 'wingwj') self.assertEqual(cell1['type'], 'child') self.assertEqual(cell2['name'], 'cell2') self.assertEqual(cell2['rpc_host'], 'r2.example.org') self.assertEqual(cell2['username'], 'wingwj') self.assertEqual(cell2['type'], 'parent') def test_cell_info(self): caps = ['cap1=a;b', 'cap2=c;d'] self.flags(name='darksecret', capabilities=caps, group='cells') req = self._get_request("cells/info") res_dict = self.controller.info(req) cell = res_dict['cell'] cell_caps = cell['capabilities'] self.assertEqual(cell['name'], 'darksecret') self.assertEqual(cell_caps['cap1'], 'a;b') self.assertEqual(cell_caps['cap2'], 'c;d') def test_show_capacities(self): self.ext_mgr.is_loaded('os-cell-capacities').AndReturn(True) self.mox.StubOutWithMock(self.controller.cells_rpcapi, 'get_capacities') response = {"ram_free": {"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0}, "total_mb": 7680}, "disk_free": {"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0}, "total_mb": 1052672} } self.controller.cells_rpcapi.\ get_capacities(self.context, cell_name=None).AndReturn(response) self.mox.ReplayAll() req = self._get_request("cells/capacities") req.environ["nova.context"] = self.context res_dict = self.controller.capacities(req) self.assertEqual(response, res_dict['cell']['capacities']) def test_show_capacity_fails_with_non_admin_context(self): self.ext_mgr.is_loaded('os-cell-capacities').AndReturn(True) rules = {"compute_extension:cells": "is_admin:true"} self.policy.set_rules(rules) self.mox.ReplayAll() req = self._get_request("cells/capacities") req.environ["nova.context"] = self.context req.environ["nova.context"].is_admin = False self.assertRaises(exception.PolicyNotAuthorized, self.controller.capacities, req) def test_show_capacities_for_invalid_cell(self): self.ext_mgr.is_loaded('os-cell-capacities').AndReturn(True) self.mox.StubOutWithMock(self.controller.cells_rpcapi, 'get_capacities') self.controller.cells_rpcapi. \ get_capacities(self.context, cell_name="invalid_cell").AndRaise( exception.CellNotFound(cell_name="invalid_cell")) self.mox.ReplayAll() req = self._get_request("cells/invalid_cell/capacities") req.environ["nova.context"] = self.context self.assertRaises(exc.HTTPNotFound, self.controller.capacities, req, "invalid_cell") def test_show_capacities_for_cell(self): self.ext_mgr.is_loaded('os-cell-capacities').AndReturn(True) self.mox.StubOutWithMock(self.controller.cells_rpcapi, 'get_capacities') response = {"ram_free": {"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0}, "total_mb": 7680}, "disk_free": {"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0}, "total_mb": 1052672} } self.controller.cells_rpcapi.\ get_capacities(self.context, cell_name='cell_name').\ AndReturn(response) self.mox.ReplayAll() req = self._get_request("cells/capacities") req.environ["nova.context"] = self.context res_dict = self.controller.capacities(req, 'cell_name') self.assertEqual(response, res_dict['cell']['capacities']) def test_sync_instances(self): call_info = {} def sync_instances(self, context, **kwargs): call_info['project_id'] = kwargs.get('project_id') call_info['updated_since'] = kwargs.get('updated_since') call_info['deleted'] = kwargs.get('deleted') self.stubs.Set(cells_rpcapi.CellsAPI, 'sync_instances', sync_instances) req = self._get_request("cells/sync_instances") body = {} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) body = {'project_id': 'test-project'} self.controller.sync_instances(req, body=body) self.assertEqual(call_info['project_id'], 'test-project') self.assertIsNone(call_info['updated_since']) expected = timeutils.utcnow().isoformat() if not expected.endswith("+00:00"): expected += "+00:00" body = {'updated_since': expected} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertEqual(call_info['updated_since'], expected) body = {'updated_since': 'skjdfkjsdkf'} self.assertRaises(exc.HTTPBadRequest, self.controller.sync_instances, req, body=body) body = {'deleted': False} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) self.assertEqual(call_info['deleted'], False) body = {'deleted': 'False'} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) self.assertEqual(call_info['deleted'], False) body = {'deleted': 'True'} self.controller.sync_instances(req, body=body) self.assertIsNone(call_info['project_id']) self.assertIsNone(call_info['updated_since']) self.assertEqual(call_info['deleted'], True) body = {'deleted': 'foo'} self.assertRaises(exc.HTTPBadRequest, self.controller.sync_instances, req, body=body) body = {'foo': 'meow'} self.assertRaises(exc.HTTPBadRequest, self.controller.sync_instances, req, body=body) def test_cells_disabled(self): self.flags(enable=False, group='cells') req = self._get_request("cells") self.assertRaises(exc.HTTPNotImplemented, self.controller.index, req) req = self._get_request("cells/detail") self.assertRaises(exc.HTTPNotImplemented, self.controller.detail, req) req = self._get_request("cells/cell1") self.assertRaises(exc.HTTPNotImplemented, self.controller.show, req) self.assertRaises(exc.HTTPNotImplemented, self.controller.delete, req, 'cell999') req = self._get_request("cells/cells") self.assertRaises(exc.HTTPNotImplemented, self.controller.create, req, {}) req = self._get_request("cells/capacities") self.assertRaises(exc.HTTPNotImplemented, self.controller.capacities, req) req = self._get_request("cells/sync_instances") self.assertRaises(exc.HTTPNotImplemented, self.controller.sync_instances, req, {}) class TestCellsXMLSerializer(BaseCellsTest): def test_multiple_cells(self): fixture = {'cells': self._get_all_cell_info()} serializer = cells_ext.CellsTemplate() output = serializer.serialize(fixture) res_tree = etree.XML(output) self.assertEqual(res_tree.tag, '{%s}cells' % xmlutil.XMLNS_V10) self.assertEqual(len(res_tree), 2) self.assertEqual(res_tree[0].tag, '{%s}cell' % xmlutil.XMLNS_V10) self.assertEqual(res_tree[1].tag, '{%s}cell' % xmlutil.XMLNS_V10) def test_single_cell_with_caps(self): cell = {'id': 1, 'name': 'darksecret', 'username': 'meow', 'capabilities': {'cap1': 'a;b', 'cap2': 'c;d'}} fixture = {'cell': cell} serializer = cells_ext.CellTemplate() output = serializer.serialize(fixture) res_tree = etree.XML(output) self.assertEqual(res_tree.tag, '{%s}cell' % xmlutil.XMLNS_V10) self.assertEqual(res_tree.get('name'), 'darksecret') self.assertEqual(res_tree.get('username'), 'meow') self.assertIsNone(res_tree.get('password')) self.assertEqual(len(res_tree), 1) child = res_tree[0] self.assertEqual(child.tag, '{%s}capabilities' % xmlutil.XMLNS_V10) for elem in child: self.assertIn(elem.tag, ('{%s}cap1' % xmlutil.XMLNS_V10, '{%s}cap2' % xmlutil.XMLNS_V10)) if elem.tag == '{%s}cap1' % xmlutil.XMLNS_V10: self.assertEqual(elem.text, 'a;b') elif elem.tag == '{%s}cap2' % xmlutil.XMLNS_V10: self.assertEqual(elem.text, 'c;d') def test_single_cell_without_caps(self): cell = {'id': 1, 'username': 'woof', 'name': 'darksecret'} fixture = {'cell': cell} serializer = cells_ext.CellTemplate() output = serializer.serialize(fixture) res_tree = etree.XML(output) self.assertEqual(res_tree.tag, '{%s}cell' % xmlutil.XMLNS_V10) self.assertEqual(res_tree.get('name'), 'darksecret') self.assertEqual(res_tree.get('username'), 'woof') self.assertIsNone(res_tree.get('password')) self.assertEqual(len(res_tree), 0) class TestCellsXMLDeserializer(test.NoDBTestCase): def test_cell_deserializer(self): caps_dict = {'cap1': 'a;b', 'cap2': 'c;d'} caps_xml = ("a;b" "c;d") expected = {'cell': {'name': 'testcell1', 'type': 'child', 'rpc_host': 'localhost', 'capabilities': caps_dict}} intext = ("\n" "testcell1child" "localhost" "%s") % caps_xml deserializer = cells_ext.CellDeserializer() result = deserializer.deserialize(intext) self.assertEqual(dict(body=expected), result) def test_with_corrupt_xml(self): deserializer = cells_ext.CellDeserializer() self.assertRaises( exception.MalformedRequestBody, deserializer.deserialize, utils.killer_xml_body()) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_hide_server_addresses.py0000664000175400017540000001265012323721477031644 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import itertools from lxml import etree import webob from nova.api.openstack import wsgi from nova import compute from nova.compute import vm_states from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance SENTINEL = object() def fake_compute_get(*args, **kwargs): def _return_server(*_args, **_kwargs): inst = fakes.stub_instance(*args, **kwargs) return fake_instance.fake_instance_obj(_args[1], **inst) return _return_server class HideServerAddressesTest(test.TestCase): content_type = 'application/json' def setUp(self): super(HideServerAddressesTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Hide_server_addresses']) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res @staticmethod def _get_server(body): return jsonutils.loads(body).get('server') @staticmethod def _get_servers(body): return jsonutils.loads(body).get('servers') @staticmethod def _get_addresses(server): return server.get('addresses', SENTINEL) def _check_addresses(self, addresses, exists): self.assertTrue(addresses is not SENTINEL) if exists: self.assertTrue(addresses) else: self.assertFalse(addresses) def test_show_hides_in_building(self): instance_id = 1 uuid = fakes.get_fake_uuid(instance_id) self.stubs.Set(compute.api.API, 'get', fake_compute_get(instance_id, uuid=uuid, vm_state=vm_states.BUILDING)) res = self._make_request('/v2/fake/servers/%s' % uuid) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) addresses = self._get_addresses(server) self._check_addresses(addresses, exists=False) def test_show(self): instance_id = 1 uuid = fakes.get_fake_uuid(instance_id) self.stubs.Set(compute.api.API, 'get', fake_compute_get(instance_id, uuid=uuid, vm_state=vm_states.ACTIVE)) res = self._make_request('/v2/fake/servers/%s' % uuid) self.assertEqual(res.status_int, 200) server = self._get_server(res.body) addresses = self._get_addresses(server) self._check_addresses(addresses, exists=True) def test_detail_hides_building_server_addresses(self): instance_0 = fakes.stub_instance(0, uuid=fakes.get_fake_uuid(0), vm_state=vm_states.ACTIVE) instance_1 = fakes.stub_instance(1, uuid=fakes.get_fake_uuid(1), vm_state=vm_states.BUILDING) instances = [instance_0, instance_1] def get_all(*args, **kwargs): fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list( args[1], instance_obj.InstanceList(), instances, fields) self.stubs.Set(compute.api.API, 'get_all', get_all) res = self._make_request('/v2/fake/servers/detail') self.assertEqual(res.status_int, 200) servers = self._get_servers(res.body) self.assertEqual(len(servers), len(instances)) for instance, server in itertools.izip(instances, servers): addresses = self._get_addresses(server) exists = (instance['vm_state'] == vm_states.ACTIVE) self._check_addresses(addresses, exists=exists) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) res = self._make_request('/v2/fake/servers/' + fakes.get_fake_uuid()) self.assertEqual(res.status_int, 404) class HideAddressesXmlTest(HideServerAddressesTest): content_type = 'application/xml' @staticmethod def _get_server(body): return etree.XML(body) @staticmethod def _get_servers(body): return etree.XML(body).getchildren() @staticmethod def _get_addresses(server): addresses = server.find('{%s}addresses' % wsgi.XMLNS_V11) if addresses is None: return SENTINEL return addresses nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_hypervisors.py0000664000175400017540000001120112323721477031554 0ustar jenkinsjenkins00000000000000# Copyright 2014 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.contrib import hypervisors from nova.tests.api.openstack.compute.contrib import test_hypervisors from nova.tests.api.openstack import fakes class ExtendedHypervisorsTest(test_hypervisors.HypervisorsTest): def setUp(self): super(ExtendedHypervisorsTest, self).setUp() self.ext_mgr.extensions['os-extended-hypervisors'] = True self.controller = hypervisors.HypervisorsController(self.ext_mgr) def test_view_hypervisor_detail_noservers(self): result = self.controller._view_hypervisor( test_hypervisors.TEST_HYPERS[0], True) self.assertEqual(result, dict( id=1, hypervisor_hostname="hyper1", vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1', service=dict(id=1, host='compute1'))) def test_detail(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/detail', use_admin_context=True) result = self.controller.detail(req) self.assertEqual(result, dict(hypervisors=[ dict(id=1, service=dict(id=1, host="compute1"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1'), dict(id=2, service=dict(id=2, host="compute2"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper2", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='2.2.2.2')])) def test_show_withid(self): req = fakes.HTTPRequest.blank('/v2/fake/os-hypervisors/1') result = self.controller.show(req, '1') self.assertEqual(result, dict(hypervisor=dict( id=1, service=dict(id=1, host="compute1"), vcpus=4, memory_mb=10 * 1024, local_gb=250, vcpus_used=2, memory_mb_used=5 * 1024, local_gb_used=125, hypervisor_type="xen", hypervisor_version=3, hypervisor_hostname="hyper1", free_ram_mb=5 * 1024, free_disk_gb=125, current_workload=2, running_vms=2, cpu_info='cpu_info', disk_available_least=100, host_ip='1.1.1.1'))) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_snapshots.py0000664000175400017540000001754512323721477027342 0ustar jenkinsjenkins00000000000000# Copyright 2011 Denali Systems, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import volumes from nova import context from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.volume import cinder class SnapshotApiTest(test.NoDBTestCase): def setUp(self): super(SnapshotApiTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(cinder.API, "create_snapshot", fakes.stub_snapshot_create) self.stubs.Set(cinder.API, "create_snapshot_force", fakes.stub_snapshot_create) self.stubs.Set(cinder.API, "delete_snapshot", fakes.stub_snapshot_delete) self.stubs.Set(cinder.API, "get_snapshot", fakes.stub_snapshot_get) self.stubs.Set(cinder.API, "get_all_snapshots", fakes.stub_snapshot_get_all) self.stubs.Set(cinder.API, "get", fakes.stub_volume_get) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Volumes']) self.context = context.get_admin_context() self.app = fakes.wsgi_app(init_only=('os-snapshots',)) def test_snapshot_create(self): snapshot = {"volume_id": 12, "force": False, "display_name": "Snapshot Test Name", "display_description": "Snapshot Test Desc"} body = dict(snapshot=snapshot) req = webob.Request.blank('/v2/fake/os-snapshots') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['displayName'], snapshot['display_name']) self.assertEqual(resp_dict['snapshot']['displayDescription'], snapshot['display_description']) self.assertEqual(resp_dict['snapshot']['volumeId'], snapshot['volume_id']) def test_snapshot_create_force(self): snapshot = {"volume_id": 12, "force": True, "display_name": "Snapshot Test Name", "display_description": "Snapshot Test Desc"} body = dict(snapshot=snapshot) req = webob.Request.blank('/v2/fake/os-snapshots') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['displayName'], snapshot['display_name']) self.assertEqual(resp_dict['snapshot']['displayDescription'], snapshot['display_description']) self.assertEqual(resp_dict['snapshot']['volumeId'], snapshot['volume_id']) # Test invalid force paramter snapshot = {"volume_id": 12, "force": '**&&^^%%$$##@@'} body = dict(snapshot=snapshot) req = webob.Request.blank('/v2/fake/os-snapshots') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 400) def test_snapshot_delete(self): snapshot_id = 123 req = webob.Request.blank('/v2/fake/os-snapshots/%d' % snapshot_id) req.method = 'DELETE' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) def test_snapshot_delete_invalid_id(self): snapshot_id = -1 req = webob.Request.blank('/v2/fake/os-snapshots/%d' % snapshot_id) req.method = 'DELETE' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 404) def test_snapshot_show(self): snapshot_id = 123 req = webob.Request.blank('/v2/fake/os-snapshots/%d' % snapshot_id) req.method = 'GET' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['id'], str(snapshot_id)) def test_snapshot_show_invalid_id(self): snapshot_id = -1 req = webob.Request.blank('/v2/fake/os-snapshots/%d' % snapshot_id) req.method = 'GET' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 404) def test_snapshot_detail(self): req = webob.Request.blank('/v2/fake/os-snapshots/detail') req.method = 'GET' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_dict = jsonutils.loads(resp.body) self.assertIn('snapshots', resp_dict) resp_snapshots = resp_dict['snapshots'] self.assertEqual(len(resp_snapshots), 3) resp_snapshot = resp_snapshots.pop() self.assertEqual(resp_snapshot['id'], 102) class SnapshotSerializerTest(test.NoDBTestCase): def _verify_snapshot(self, snap, tree): self.assertEqual(tree.tag, 'snapshot') for attr in ('id', 'status', 'size', 'createdAt', 'displayName', 'displayDescription', 'volumeId'): self.assertEqual(str(snap[attr]), tree.get(attr)) def test_snapshot_show_create_serializer(self): serializer = volumes.SnapshotTemplate() raw_snapshot = dict( id='snap_id', status='snap_status', size=1024, createdAt=timeutils.utcnow(), displayName='snap_name', displayDescription='snap_desc', volumeId='vol_id', ) text = serializer.serialize(dict(snapshot=raw_snapshot)) tree = etree.fromstring(text) self._verify_snapshot(raw_snapshot, tree) def test_snapshot_index_detail_serializer(self): serializer = volumes.SnapshotsTemplate() raw_snapshots = [dict( id='snap1_id', status='snap1_status', size=1024, createdAt=timeutils.utcnow(), displayName='snap1_name', displayDescription='snap1_desc', volumeId='vol1_id', ), dict( id='snap2_id', status='snap2_status', size=1024, createdAt=timeutils.utcnow(), displayName='snap2_name', displayDescription='snap2_desc', volumeId='vol2_id', )] text = serializer.serialize(dict(snapshots=raw_snapshots)) tree = etree.fromstring(text) self.assertEqual('snapshots', tree.tag) self.assertEqual(len(raw_snapshots), len(tree)) for idx, child in enumerate(tree): self._verify_snapshot(raw_snapshots[idx], child) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_shelve.py0000664000175400017540000001310712323721477026574 0ustar jenkinsjenkins00000000000000# All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid import webob from nova.api.openstack.compute.contrib import shelve from nova.compute import api as compute_api from nova import db from nova import exception from nova.openstack.common import policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) def fake_auth_context(context): return True class ShelvePolicyTest(test.NoDBTestCase): def setUp(self): super(ShelvePolicyTest, self).setUp() self.controller = shelve.ShelveController() def test_shelve_restricted_by_role(self): rules = policy.Rules({'compute_extension:shelve': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve, req, str(uuid.uuid4()), {}) def test_shelve_allowed(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:shelve': policy.parse_rule('')}) policy.set_rules(rules) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve, req, str(uuid.uuid4()), {}) def test_shelve_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(shelve, 'auth_shelve', fake_auth_context) self.stubs.Set(compute_api.API, 'shelve', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(webob.exc.HTTPConflict, self.controller._shelve, req, str(uuid.uuid4()), {}) def test_unshelve_restricted_by_role(self): rules = policy.Rules({'compute_extension:unshelve': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._unshelve, req, str(uuid.uuid4()), {}) def test_unshelve_allowed(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:unshelve': policy.parse_rule('')}) policy.set_rules(rules) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._unshelve, req, str(uuid.uuid4()), {}) def test_unshelve_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(shelve, 'auth_unshelve', fake_auth_context) self.stubs.Set(compute_api.API, 'unshelve', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(webob.exc.HTTPConflict, self.controller._unshelve, req, str(uuid.uuid4()), {}) def test_shelve_offload_restricted_by_role(self): rules = policy.Rules({'compute_extension:shelveOffload': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve_offload, req, str(uuid.uuid4()), {}) def test_shelve_offload_allowed(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:shelveOffload': policy.parse_rule('')}) policy.set_rules(rules) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(exception.NotAuthorized, self.controller._shelve_offload, req, str(uuid.uuid4()), {}) def test_shelve_offload_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) self.stubs.Set(shelve, 'auth_shelve_offload', fake_auth_context) self.stubs.Set(compute_api.API, 'shelve_offload', fakes.fake_actions_to_locked_server) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-shelve') self.assertRaises(webob.exc.HTTPConflict, self.controller._shelve_offload, req, str(uuid.uuid4()), {}) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_cloudpipe_update.py0000664000175400017540000000540112323721477030632 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.contrib import cloudpipe_update from nova import db from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_network fake_networks = [fake_network.fake_network(1), fake_network.fake_network(2)] def fake_project_get_networks(context, project_id, associate=True): return fake_networks def fake_network_update(context, network_id, values): for network in fake_networks: if network['id'] == network_id: for key in values: network[key] = values[key] class CloudpipeUpdateTest(test.NoDBTestCase): def setUp(self): super(CloudpipeUpdateTest, self).setUp() self.controller = cloudpipe_update.CloudpipeUpdateController() self.stubs.Set(db, "project_get_networks", fake_project_get_networks) self.stubs.Set(db, "network_update", fake_network_update) def test_cloudpipe_configure_project(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-cloudpipe/configure-project') body = {"configure_project": {"vpn_ip": "1.2.3.4", "vpn_port": 222}} result = self.controller.update(req, 'configure-project', body=body) self.assertEqual('202 Accepted', result.status) self.assertEqual(fake_networks[0]['vpn_public_address'], "1.2.3.4") self.assertEqual(fake_networks[0]['vpn_public_port'], 222) def test_cloudpipe_configure_project_bad_url(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-cloudpipe/configure-projectx') body = {"vpn_ip": "1.2.3.4", "vpn_port": 222} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 'configure-projectx', body) def test_cloudpipe_configure_project_bad_data(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-cloudpipe/configure-project') body = {"vpn_ipxx": "1.2.3.4", "vpn_port": 222} self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, 'configure-project', body) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_agents.py0000664000175400017540000002151712323721477026573 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob.exc from nova.api.openstack.compute.contrib import agents from nova import context from nova import db from nova.db.sqlalchemy import models from nova import test fake_agents_list = [{'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'id': 1}, {'hypervisor': 'kvm', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx1', 'md5hash': 'add6bb58e139be103324d04d82d8f546', 'id': 2}, {'hypervisor': 'xen', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx2', 'md5hash': 'add6bb58e139be103324d04d82d8f547', 'id': 3}, {'hypervisor': 'xen', 'os': 'win', 'architecture': 'power', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx3', 'md5hash': 'add6bb58e139be103324d04d82d8f548', 'id': 4}, ] def fake_agent_build_get_all(context, hypervisor): agent_build_all = [] for agent in fake_agents_list: if hypervisor and hypervisor != agent['hypervisor']: continue agent_build_ref = models.AgentBuild() agent_build_ref.update(agent) agent_build_all.append(agent_build_ref) return agent_build_all def fake_agent_build_update(context, agent_build_id, values): pass def fake_agent_build_destroy(context, agent_update_id): pass def fake_agent_build_create(context, values): values['id'] = 1 agent_build_ref = models.AgentBuild() agent_build_ref.update(values) return agent_build_ref class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} GET = {} class FakeRequestWithHypervisor(object): environ = {"nova.context": context.get_admin_context()} GET = {'hypervisor': 'kvm'} class AgentsTest(test.NoDBTestCase): def setUp(self): super(AgentsTest, self).setUp() self.stubs.Set(db, "agent_build_get_all", fake_agent_build_get_all) self.stubs.Set(db, "agent_build_update", fake_agent_build_update) self.stubs.Set(db, "agent_build_destroy", fake_agent_build_destroy) self.stubs.Set(db, "agent_build_create", fake_agent_build_create) self.context = context.get_admin_context() self.controller = agents.AgentController() def test_agents_create(self): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} response = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1}} res_dict = self.controller.create(req, body) self.assertEqual(res_dict, response) def _test_agents_create_with_invalid_length(self, key): req = FakeRequest() body = {'agent': {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} body['agent'][key] = 'x' * 256 self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_agents_create_with_invalid_length_hypervisor(self): self._test_agents_create_with_invalid_length('hypervisor') def test_agents_create_with_invalid_length_os(self): self._test_agents_create_with_invalid_length('os') def test_agents_create_with_invalid_length_architecture(self): self._test_agents_create_with_invalid_length('architecture') def test_agents_create_with_invalid_length_version(self): self._test_agents_create_with_invalid_length('version') def test_agents_create_with_invalid_length_url(self): self._test_agents_create_with_invalid_length('url') def test_agents_create_with_invalid_length_md5hash(self): self._test_agents_create_with_invalid_length('md5hash') def test_agents_delete(self): req = FakeRequest() self.controller.delete(req, 1) def test_agents_list(self): req = FakeRequest() res_dict = self.controller.index(req) agents_list = [{'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1}, {'hypervisor': 'kvm', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx1', 'md5hash': 'add6bb58e139be103324d04d82d8f546', 'agent_id': 2}, {'hypervisor': 'xen', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx2', 'md5hash': 'add6bb58e139be103324d04d82d8f547', 'agent_id': 3}, {'hypervisor': 'xen', 'os': 'win', 'architecture': 'power', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx3', 'md5hash': 'add6bb58e139be103324d04d82d8f548', 'agent_id': 4}, ] self.assertEqual(res_dict, {'agents': agents_list}) def test_agents_list_with_hypervisor(self): req = FakeRequestWithHypervisor() res_dict = self.controller.index(req) response = [{'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545', 'agent_id': 1}, {'hypervisor': 'kvm', 'os': 'linux', 'architecture': 'x86', 'version': '16.0', 'url': 'xxx://xxxx/xxx/xxx1', 'md5hash': 'add6bb58e139be103324d04d82d8f546', 'agent_id': 2}, ] self.assertEqual(res_dict, {'agents': response}) def test_agents_update(self): req = FakeRequest() body = {'para': {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} response = {'agent': {'agent_id': 1, 'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} res_dict = self.controller.update(req, 1, body) self.assertEqual(res_dict, response) def _test_agents_update_with_invalid_length(self, key): req = FakeRequest() body = {'para': {'version': '7.0', 'url': 'xxx://xxxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f545'}} body['para'][key] = 'x' * 256 self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, body) def test_agents_update_with_invalid_length_version(self): self._test_agents_update_with_invalid_length('version') def test_agents_update_with_invalid_length_url(self): self._test_agents_update_with_invalid_length('url') def test_agents_update_with_invalid_length_md5hash(self): self._test_agents_update_with_invalid_length('md5hash') nova-2014.1/nova/tests/api/openstack/compute/contrib/test_rescue.py0000664000175400017540000001327612323721510026567 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from oslo.config import cfg import webob from nova import compute from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('password_length', 'nova.utils') def rescue(self, context, instance, rescue_password=None): pass def unrescue(self, context, instance): pass class RescueTest(test.NoDBTestCase): def setUp(self): super(RescueTest, self).setUp() def fake_compute_get(*args, **kwargs): uuid = '70f6db34-de8d-4fbd-aafb-4065bdfa6114' return {'id': 1, 'uuid': uuid} self.stubs.Set(compute.api.API, "get", fake_compute_get) self.stubs.Set(compute.api.API, "rescue", rescue) self.stubs.Set(compute.api.API, "unrescue", unrescue) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Rescue']) self.app = fakes.wsgi_app(init_only=('servers',)) def test_rescue_with_preset_password(self): body = {"rescue": {"adminPass": "AABBCC112233"}} req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_json = jsonutils.loads(resp.body) self.assertEqual("AABBCC112233", resp_json['adminPass']) def test_rescue_generates_password(self): body = dict(rescue=None) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 200) resp_json = jsonutils.loads(resp.body) self.assertEqual(CONF.password_length, len(resp_json['adminPass'])) def test_rescue_of_rescued_instance(self): body = dict(rescue=None) def fake_rescue(*args, **kwargs): raise exception.InstanceInvalidState('fake message') self.stubs.Set(compute.api.API, "rescue", fake_rescue) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 409) def test_unrescue(self): body = dict(unrescue=None) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) def test_unrescue_of_active_instance(self): body = dict(unrescue=None) def fake_unrescue(*args, **kwargs): raise exception.InstanceInvalidState('fake message') self.stubs.Set(compute.api.API, "unrescue", fake_unrescue) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 409) def test_rescue_raises_unrescuable(self): body = dict(rescue=None) def fake_rescue(*args, **kwargs): raise exception.InstanceNotRescuable('fake message') self.stubs.Set(compute.api.API, "rescue", fake_rescue) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 400) @mock.patch('nova.compute.api.API.rescue') def test_rescue_raises_not_implemented(self, rescue_mock): body = dict(rescue=None) def fake_rescue(*args, **kwargs): raise NotImplementedError('not implemented') rescue_mock.side_effect = fake_rescue req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 501) @mock.patch('nova.compute.api.API.unrescue') def test_unrescue_raises_not_implemented(self, unrescue_mock): body = dict(unrescue=None) def fake_unrescue(*args, **kwargs): raise NotImplementedError('not implemented') unrescue_mock.side_effect = fake_unrescue req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(self.app) self.assertEqual(resp.status_int, 501) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_virtual_interfaces_net.py0000664000175400017540000001064212323721477033726 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_virtual_interfaces_net from nova.api.openstack import wsgi from nova import compute from nova import network from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' FAKE_VIFS = [{'uuid': '00000000-0000-0000-0000-00000000000000000', 'address': '00-00-00-00-00-00', 'net_uuid': '00000000-0000-0000-0000-00000000000000001'}, {'uuid': '11111111-1111-1111-1111-11111111111111111', 'address': '11-11-11-11-11-11', 'net_uuid': '11111111-1111-1111-1111-11111111111111112'}] EXPECTED_NET_UUIDS = ['00000000-0000-0000-0000-00000000000000001', '11111111-1111-1111-1111-11111111111111112'] def compute_api_get(self, context, instance_id, expected_attrs=None, want_objects=False): return dict(uuid=FAKE_UUID, id=instance_id, instance_type_id=1, host='bob') def get_vifs_by_instance(self, context, instance_id): return FAKE_VIFS def get_vif_by_mac_address(self, context, mac_address): if mac_address == "00-00-00-00-00-00": return {'net_uuid': '00000000-0000-0000-0000-00000000000000001'} else: return {'net_uuid': '11111111-1111-1111-1111-11111111111111112'} class ExtendedServerVIFNetTest(test.NoDBTestCase): content_type = 'application/json' prefix = "%s:" % extended_virtual_interfaces_net. \ Extended_virtual_interfaces_net.alias def setUp(self): super(ExtendedServerVIFNetTest, self).setUp() self.stubs.Set(compute.api.API, "get", compute_api_get) self.stubs.Set(network.api.API, "get_vifs_by_instance", get_vifs_by_instance) self.stubs.Set(network.api.API, "get_vif_by_mac_address", get_vif_by_mac_address) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Virtual_interfaces', 'Extended_virtual_interfaces_net']) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=( 'os-virtual-interfaces', 'OS-EXT-VIF-NET'))) return res def _get_vifs(self, body): return jsonutils.loads(body).get('virtual_interfaces') def _get_net_id(self, vifs): for vif in vifs: yield vif['%snet_id' % self.prefix] def assertVIFs(self, vifs): result = [] for net_id in self._get_net_id(vifs): result.append(net_id) sorted(result) for i, net_uuid in enumerate(result): self.assertEqual(net_uuid, EXPECTED_NET_UUIDS[i]) def test_get_extend_virtual_interfaces_list(self): res = self._make_request('/v2/fake/servers/abcd/os-virtual-interfaces') self.assertEqual(res.status_int, 200) self.assertVIFs(self._get_vifs(res.body)) class ExtendedServerVIFNetSerializerTest(ExtendedServerVIFNetTest): content_type = 'application/xml' prefix = "{%s}" % extended_virtual_interfaces_net. \ Extended_virtual_interfaces_net.namespace def setUp(self): super(ExtendedServerVIFNetSerializerTest, self).setUp() self.namespace = wsgi.XMLNS_V11 self.serializer = extended_virtual_interfaces_net. \ ExtendedVirtualInterfaceNetTemplate() def _get_vifs(self, body): return etree.XML(body).getchildren() def _get_net_id(self, vifs): for vif in vifs: yield vif.attrib['%snet_id' % self.prefix] nova-2014.1/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py0000664000175400017540000004514112323721510031323 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from lxml import etree import mock import webob from nova.api.openstack.compute.contrib import simple_tenant_usage from nova.compute import flavors from nova.compute import vm_states from nova import context from nova import db from nova.objects import flavor as flavor_obj from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import policy as common_policy from nova.openstack.common import timeutils from nova import policy from nova import test from nova.tests.api.openstack import fakes from nova import utils SERVERS = 5 TENANTS = 2 HOURS = 24 ROOT_GB = 10 EPHEMERAL_GB = 20 MEMORY_MB = 1024 VCPUS = 2 NOW = timeutils.utcnow() START = NOW - datetime.timedelta(hours=HOURS) STOP = NOW FAKE_INST_TYPE = {'id': 1, 'vcpus': VCPUS, 'root_gb': ROOT_GB, 'ephemeral_gb': EPHEMERAL_GB, 'memory_mb': MEMORY_MB, 'name': 'fakeflavor', 'flavorid': 'foo', 'rxtx_factor': 1.0, 'vcpu_weight': 1, 'swap': 0, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'disabled': False, 'is_public': True, 'extra_specs': {'foo': 'bar'}} def get_fake_db_instance(start, end, instance_id, tenant_id, vm_state=vm_states.ACTIVE): sys_meta = utils.dict_to_metadata( flavors.save_flavor_info({}, FAKE_INST_TYPE)) # NOTE(mriedem): We use fakes.stub_instance since it sets the fields # needed on the db instance for converting it to an object, but we still # need to override system_metadata to use our fake flavor. inst = fakes.stub_instance( id=instance_id, uuid='00000000-0000-0000-0000-00000000000000%02d' % instance_id, image_ref='1', project_id=tenant_id, user_id='fakeuser', display_name='name', flavor_id=FAKE_INST_TYPE['id'], launched_at=start, terminated_at=end, vm_state=vm_state) inst['system_metadata'] = sys_meta return inst def fake_instance_get_active_by_window_joined(context, begin, end, project_id, host): return [get_fake_db_instance(START, STOP, x, "faketenant_%s" % (x / SERVERS)) for x in xrange(TENANTS * SERVERS)] @mock.patch.object(db, 'instance_get_active_by_window_joined', fake_instance_get_active_by_window_joined) class SimpleTenantUsageTest(test.TestCase): def setUp(self): super(SimpleTenantUsageTest, self).setUp() self.admin_context = context.RequestContext('fakeadmin_0', 'faketenant_0', is_admin=True) self.user_context = context.RequestContext('fakeadmin_0', 'faketenant_0', is_admin=False) self.alt_user_context = context.RequestContext('fakeadmin_0', 'faketenant_1', is_admin=False) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Simple_tenant_usage']) def _test_verify_index(self, start, stop): req = webob.Request.blank( '/v2/faketenant_0/os-simple-tenant-usage?start=%s&end=%s' % (start.isoformat(), stop.isoformat())) req.method = "GET" req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app( fake_auth_context=self.admin_context, init_only=('os-simple-tenant-usage',))) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) usages = res_dict['tenant_usages'] for i in xrange(TENANTS): self.assertEqual(int(usages[i]['total_hours']), SERVERS * HOURS) self.assertEqual(int(usages[i]['total_local_gb_usage']), SERVERS * (ROOT_GB + EPHEMERAL_GB) * HOURS) self.assertEqual(int(usages[i]['total_memory_mb_usage']), SERVERS * MEMORY_MB * HOURS) self.assertEqual(int(usages[i]['total_vcpus_usage']), SERVERS * VCPUS * HOURS) self.assertFalse(usages[i].get('server_usages')) def test_verify_index(self): self._test_verify_index(START, STOP) def test_verify_index_future_end_time(self): future = NOW + datetime.timedelta(hours=HOURS) self._test_verify_index(START, future) def test_verify_show(self): self._test_verify_show(START, STOP) def test_verify_show_future_end_time(self): future = NOW + datetime.timedelta(hours=HOURS) self._test_verify_show(START, future) def _get_tenant_usages(self, detailed=''): req = webob.Request.blank( '/v2/faketenant_0/os-simple-tenant-usage?' 'detailed=%s&start=%s&end=%s' % (detailed, START.isoformat(), STOP.isoformat())) req.method = "GET" req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app( fake_auth_context=self.admin_context, init_only=('os-simple-tenant-usage',))) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) return res_dict['tenant_usages'] def test_verify_detailed_index(self): usages = self._get_tenant_usages('1') for i in xrange(TENANTS): servers = usages[i]['server_usages'] for j in xrange(SERVERS): self.assertEqual(int(servers[j]['hours']), HOURS) def test_verify_simple_index(self): usages = self._get_tenant_usages(detailed='0') for i in xrange(TENANTS): self.assertIsNone(usages[i].get('server_usages')) def test_verify_simple_index_empty_param(self): # NOTE(lzyeval): 'detailed=&start=..&end=..' usages = self._get_tenant_usages() for i in xrange(TENANTS): self.assertIsNone(usages[i].get('server_usages')) def _test_verify_show(self, start, stop): tenant_id = 0 req = webob.Request.blank( '/v2/faketenant_0/os-simple-tenant-usage/' 'faketenant_%s?start=%s&end=%s' % (tenant_id, start.isoformat(), stop.isoformat())) req.method = "GET" req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app( fake_auth_context=self.user_context, init_only=('os-simple-tenant-usage',))) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) usage = res_dict['tenant_usage'] servers = usage['server_usages'] self.assertEqual(len(usage['server_usages']), SERVERS) uuids = ['00000000-0000-0000-0000-00000000000000%02d' % (x + (tenant_id * SERVERS)) for x in xrange(SERVERS)] for j in xrange(SERVERS): delta = STOP - START uptime = delta.days * 24 * 3600 + delta.seconds self.assertEqual(int(servers[j]['uptime']), uptime) self.assertEqual(int(servers[j]['hours']), HOURS) self.assertIn(servers[j]['instance_id'], uuids) def test_verify_show_cant_view_other_tenant(self): req = webob.Request.blank( '/v2/faketenant_1/os-simple-tenant-usage/' 'faketenant_0?start=%s&end=%s' % (START.isoformat(), STOP.isoformat())) req.method = "GET" req.headers["content-type"] = "application/json" rules = { "compute_extension:simple_tenant_usage:show": common_policy.parse_rule([ ["role:admin"], ["project_id:%(project_id)s"] ]) } common_policy.set_rules(common_policy.Rules(rules)) try: res = req.get_response(fakes.wsgi_app( fake_auth_context=self.alt_user_context, init_only=('os-simple-tenant-usage',))) self.assertEqual(res.status_int, 403) finally: policy.reset() def test_get_tenants_usage_with_bad_start_date(self): future = NOW + datetime.timedelta(hours=HOURS) tenant_id = 0 req = webob.Request.blank( '/v2/faketenant_0/os-simple-tenant-usage/' 'faketenant_%s?start=%s&end=%s' % (tenant_id, future.isoformat(), NOW.isoformat())) req.method = "GET" req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app( fake_auth_context=self.user_context, init_only=('os-simple-tenant-usage',))) self.assertEqual(res.status_int, 400) class SimpleTenantUsageSerializerTest(test.TestCase): def _verify_server_usage(self, raw_usage, tree): self.assertEqual('server_usage', tree.tag) # Figure out what fields we expect not_seen = set(raw_usage.keys()) for child in tree: self.assertIn(child.tag, not_seen) not_seen.remove(child.tag) self.assertEqual(str(raw_usage[child.tag]), child.text) self.assertEqual(len(not_seen), 0) def _verify_tenant_usage(self, raw_usage, tree): self.assertEqual('tenant_usage', tree.tag) # Figure out what fields we expect not_seen = set(raw_usage.keys()) for child in tree: self.assertIn(child.tag, not_seen) not_seen.remove(child.tag) if child.tag == 'server_usages': for idx, gr_child in enumerate(child): self._verify_server_usage(raw_usage['server_usages'][idx], gr_child) else: self.assertEqual(str(raw_usage[child.tag]), child.text) self.assertEqual(len(not_seen), 0) def test_serializer_show(self): serializer = simple_tenant_usage.SimpleTenantUsageTemplate() today = timeutils.utcnow() yesterday = today - datetime.timedelta(days=1) raw_usage = dict( tenant_id='tenant', total_local_gb_usage=789, total_vcpus_usage=456, total_memory_mb_usage=123, total_hours=24, start=yesterday, stop=today, server_usages=[dict( instance_id='00000000-0000-0000-0000-0000000000000000', name='test', hours=24, memory_mb=1024, local_gb=50, vcpus=1, tenant_id='tenant', flavor='m1.small', started_at=yesterday, ended_at=today, state='terminated', uptime=86400), dict( instance_id='00000000-0000-0000-0000-0000000000000002', name='test2', hours=12, memory_mb=512, local_gb=25, vcpus=2, tenant_id='tenant', flavor='m1.tiny', started_at=yesterday, ended_at=today, state='terminated', uptime=43200), ], ) tenant_usage = dict(tenant_usage=raw_usage) text = serializer.serialize(tenant_usage) tree = etree.fromstring(text) self._verify_tenant_usage(raw_usage, tree) def test_serializer_index(self): serializer = simple_tenant_usage.SimpleTenantUsagesTemplate() today = timeutils.utcnow() yesterday = today - datetime.timedelta(days=1) raw_usages = [dict( tenant_id='tenant1', total_local_gb_usage=1024, total_vcpus_usage=23, total_memory_mb_usage=512, total_hours=24, start=yesterday, stop=today, server_usages=[dict( instance_id='00000000-0000-0000-0000-0000000000000001', name='test1', hours=24, memory_mb=1024, local_gb=50, vcpus=2, tenant_id='tenant1', flavor='m1.small', started_at=yesterday, ended_at=today, state='terminated', uptime=86400), dict( instance_id='00000000-0000-0000-0000-0000000000000002', name='test2', hours=42, memory_mb=4201, local_gb=25, vcpus=1, tenant_id='tenant1', flavor='m1.tiny', started_at=today, ended_at=yesterday, state='terminated', uptime=43200), ], ), dict( tenant_id='tenant2', total_local_gb_usage=512, total_vcpus_usage=32, total_memory_mb_usage=1024, total_hours=42, start=today, stop=yesterday, server_usages=[dict( instance_id='00000000-0000-0000-0000-0000000000000003', name='test3', hours=24, memory_mb=1024, local_gb=50, vcpus=2, tenant_id='tenant2', flavor='m1.small', started_at=yesterday, ended_at=today, state='terminated', uptime=86400), dict( instance_id='00000000-0000-0000-0000-0000000000000002', name='test2', hours=42, memory_mb=4201, local_gb=25, vcpus=1, tenant_id='tenant4', flavor='m1.tiny', started_at=today, ended_at=yesterday, state='terminated', uptime=43200), ], ), ] tenant_usages = dict(tenant_usages=raw_usages) text = serializer.serialize(tenant_usages) tree = etree.fromstring(text) self.assertEqual('tenant_usages', tree.tag) self.assertEqual(len(raw_usages), len(tree)) for idx, child in enumerate(tree): self._verify_tenant_usage(raw_usages[idx], child) class SimpleTenantUsageControllerTest(test.TestCase): def setUp(self): super(SimpleTenantUsageControllerTest, self).setUp() self.controller = simple_tenant_usage.SimpleTenantUsageController() self.context = context.RequestContext('fakeuser', 'fake-project') self.baseinst = get_fake_db_instance(START, STOP, instance_id=1, tenant_id=self.context.project_id, vm_state=vm_states.DELETED) # convert the fake instance dict to an object self.inst_obj = instance_obj.Instance._from_db_object( self.context, instance_obj.Instance(), self.baseinst) def test_get_flavor_from_sys_meta(self): # Non-deleted instances get their type information from their # system_metadata with mock.patch.object(db, 'instance_get_by_uuid', return_value=self.baseinst): flavor = self.controller._get_flavor(self.context, self.inst_obj, {}) self.assertEqual(flavor_obj.Flavor, type(flavor)) self.assertEqual(FAKE_INST_TYPE['id'], flavor.id) def test_get_flavor_from_non_deleted_with_id_fails(self): # If an instance is not deleted and missing type information from # system_metadata, then that's a bug self.inst_obj.system_metadata = {} self.assertRaises(KeyError, self.controller._get_flavor, self.context, self.inst_obj, {}) def test_get_flavor_from_deleted_with_id(self): # Deleted instances may not have type info in system_metadata, # so verify that they get their type from a lookup of their # instance_type_id self.inst_obj.system_metadata = {} self.inst_obj.deleted = 1 flavor = self.controller._get_flavor(self.context, self.inst_obj, {}) self.assertEqual(flavor_obj.Flavor, type(flavor)) self.assertEqual(FAKE_INST_TYPE['id'], flavor.id) def test_get_flavor_from_deleted_with_id_of_deleted(self): # Verify the legacy behavior of instance_type_id pointing to a # missing type being non-fatal self.inst_obj.system_metadata = {} self.inst_obj.deleted = 1 self.inst_obj.instance_type_id = 99 flavor = self.controller._get_flavor(self.context, self.inst_obj, {}) self.assertIsNone(flavor) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_services.py0000664000175400017540000005364112323721510027124 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import calendar import datetime import iso8601 import mock import webob.exc from nova.api.openstack.compute.contrib import services from nova.api.openstack import extensions from nova import availability_zones from nova.compute import cells_api from nova import context from nova import db from nova import exception from nova.openstack.common import timeutils from nova.servicegroup.drivers import db as db_driver from nova import test from nova.tests.api.openstack import fakes from nova.tests.objects import test_service fake_services_list = [ dict(test_service.fake_service, binary='nova-scheduler', host='host1', id=1, disabled=True, topic='scheduler', updated_at=datetime.datetime(2012, 10, 29, 13, 42, 2), created_at=datetime.datetime(2012, 9, 18, 2, 46, 27), disabled_reason='test1'), dict(test_service.fake_service, binary='nova-compute', host='host1', id=2, disabled=True, topic='compute', updated_at=datetime.datetime(2012, 10, 29, 13, 42, 5), created_at=datetime.datetime(2012, 9, 18, 2, 46, 27), disabled_reason='test2'), dict(test_service.fake_service, binary='nova-scheduler', host='host2', id=3, disabled=False, topic='scheduler', updated_at=datetime.datetime(2012, 9, 19, 6, 55, 34), created_at=datetime.datetime(2012, 9, 18, 2, 46, 28), disabled_reason=''), dict(test_service.fake_service, binary='nova-compute', host='host2', id=4, disabled=True, topic='compute', updated_at=datetime.datetime(2012, 9, 18, 8, 3, 38), created_at=datetime.datetime(2012, 9, 18, 2, 46, 28), disabled_reason='test4'), ] class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} GET = {} class FakeRequestWithService(object): environ = {"nova.context": context.get_admin_context()} GET = {"binary": "nova-compute"} class FakeRequestWithHost(object): environ = {"nova.context": context.get_admin_context()} GET = {"host": "host1"} class FakeRequestWithHostService(object): environ = {"nova.context": context.get_admin_context()} GET = {"host": "host1", "binary": "nova-compute"} def fake_service_get_all(services): def service_get_all(context, filters=None, set_zones=False): if set_zones or 'availability_zone' in filters: return availability_zones.set_availability_zones(context, services) return services return service_get_all def fake_db_api_service_get_all(context, disabled=None): return fake_services_list def fake_db_service_get_by_host_binary(services): def service_get_by_host_binary(context, host, binary): for service in services: if service['host'] == host and service['binary'] == binary: return service raise exception.HostBinaryNotFound(host=host, binary=binary) return service_get_by_host_binary def fake_service_get_by_host_binary(context, host, binary): fake = fake_db_service_get_by_host_binary(fake_services_list) return fake(context, host, binary) def _service_get_by_id(services, value): for service in services: if service['id'] == value: return service return None def fake_db_service_update(services): def service_update(context, service_id, values): service = _service_get_by_id(services, service_id) if service is None: raise exception.ServiceNotFound(service_id=service_id) return service return service_update def fake_service_update(context, service_id, values): fake = fake_db_service_update(fake_services_list) return fake(context, service_id, values) def fake_utcnow(): return datetime.datetime(2012, 10, 29, 13, 42, 11) def fake_utcnow_ts(): d = fake_utcnow() return calendar.timegm(d.utctimetuple()) class ServicesTest(test.TestCase): def setUp(self): super(ServicesTest, self).setUp() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = services.ServiceController(self.ext_mgr) self.stubs.Set(timeutils, "utcnow", fake_utcnow) self.stubs.Set(timeutils, "utcnow_ts", fake_utcnow_ts) self.stubs.Set(self.controller.host_api, "service_get_all", fake_service_get_all(fake_services_list)) self.stubs.Set(db, "service_get_by_args", fake_db_service_get_by_host_binary(fake_services_list)) self.stubs.Set(db, "service_update", fake_db_service_update(fake_services_list)) def test_services_list(self): req = FakeRequest() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2)}, {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5)}, {'binary': 'nova-scheduler', 'host': 'host2', 'zone': 'internal', 'status': 'enabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 19, 6, 55, 34)}, {'binary': 'nova-compute', 'host': 'host2', 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38)}]} self.assertEqual(res_dict, response) def test_services_list_with_host(self): req = FakeRequestWithHost() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2)}, {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5)}]} self.assertEqual(res_dict, response) def test_services_list_with_service(self): req = FakeRequestWithService() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5)}, {'binary': 'nova-compute', 'host': 'host2', 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38)}]} self.assertEqual(res_dict, response) def test_services_list_with_host_service(self): req = FakeRequestWithHostService() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5)}]} self.assertEqual(res_dict, response) def test_services_detail(self): self.ext_mgr.extensions['os-extended-services'] = True req = FakeRequest() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'disabled_reason': 'test1'}, {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'nova-scheduler', 'host': 'host2', 'zone': 'internal', 'status': 'enabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 19, 6, 55, 34), 'disabled_reason': ''}, {'binary': 'nova-compute', 'host': 'host2', 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_service_detail_with_host(self): self.ext_mgr.extensions['os-extended-services'] = True req = FakeRequestWithHost() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'disabled_reason': 'test1'}, {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_service_detail_with_service(self): self.ext_mgr.extensions['os-extended-services'] = True req = FakeRequestWithService() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'nova-compute', 'host': 'host2', 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_service_detail_with_host_service(self): self.ext_mgr.extensions['os-extended-services'] = True req = FakeRequestWithHostService() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_services_detail_with_delete_extension(self): self.ext_mgr.extensions['os-extended-services-delete'] = True req = FakeRequest() res_dict = self.controller.index(req) response = {'services': [ {'binary': 'nova-scheduler', 'host': 'host1', 'id': 1, 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2)}, {'binary': 'nova-compute', 'host': 'host1', 'id': 2, 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5)}, {'binary': 'nova-scheduler', 'host': 'host2', 'id': 3, 'zone': 'internal', 'status': 'enabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 19, 6, 55, 34)}, {'binary': 'nova-compute', 'host': 'host2', 'id': 4, 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38)}]} self.assertEqual(res_dict, response) def test_services_enable(self): def _service_update(context, service_id, values): self.assertIsNone(values['disabled_reason']) return dict(test_service.fake_service, **values) self.stubs.Set(db, "service_update", _service_update) body = {'host': 'host1', 'binary': 'nova-compute'} req = fakes.HTTPRequest.blank('/v2/fake/os-services/enable') res_dict = self.controller.update(req, "enable", body) self.assertEqual(res_dict['service']['status'], 'enabled') self.assertNotIn('disabled_reason', res_dict['service']) def test_services_enable_with_invalid_host(self): body = {'host': 'invalid', 'binary': 'nova-compute'} req = fakes.HTTPRequest.blank('/v2/fake/os-services/enable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "enable", body) def test_services_enable_with_invalid_binary(self): body = {'host': 'host1', 'binary': 'invalid'} req = fakes.HTTPRequest.blank('/v2/fake/os-services/enable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "enable", body) # This test is just to verify that the servicegroup API gets used when # calling this API. def test_services_with_exception(self): def dummy_is_up(self, dummy): raise KeyError() self.stubs.Set(db_driver.DbDriver, 'is_up', dummy_is_up) req = FakeRequestWithHostService() self.assertRaises(KeyError, self.controller.index, req) def test_services_disable(self): req = fakes.HTTPRequest.blank('/v2/fake/os-services/disable') body = {'host': 'host1', 'binary': 'nova-compute'} res_dict = self.controller.update(req, "disable", body) self.assertEqual(res_dict['service']['status'], 'disabled') self.assertNotIn('disabled_reason', res_dict['service']) def test_services_disable_with_invalid_host(self): body = {'host': 'invalid', 'binary': 'nova-compute'} req = fakes.HTTPRequest.blank('/v2/fake/os-services/disable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "disable", body) def test_services_disable_with_invalid_binary(self): body = {'host': 'host1', 'binary': 'invalid'} req = fakes.HTTPRequestV3.blank('/v2/fake/os-services/disable') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, "disable", body) def test_services_disable_log_reason(self): self.ext_mgr.extensions['os-extended-services'] = True req = \ fakes.HTTPRequest.blank('v2/fakes/os-services/disable-log-reason') body = {'host': 'host1', 'binary': 'nova-compute', 'disabled_reason': 'test-reason', } res_dict = self.controller.update(req, "disable-log-reason", body) self.assertEqual(res_dict['service']['status'], 'disabled') self.assertEqual(res_dict['service']['disabled_reason'], 'test-reason') def test_mandatory_reason_field(self): self.ext_mgr.extensions['os-extended-services'] = True req = \ fakes.HTTPRequest.blank('v2/fakes/os-services/disable-log-reason') body = {'host': 'host1', 'binary': 'nova-compute', } self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, "disable-log-reason", body) def test_invalid_reason_field(self): reason = ' ' self.assertFalse(self.controller._is_valid_as_reason(reason)) reason = 'a' * 256 self.assertFalse(self.controller._is_valid_as_reason(reason)) reason = 'it\'s a valid reason.' self.assertTrue(self.controller._is_valid_as_reason(reason)) def test_services_delete(self): self.ext_mgr.extensions['os-extended-services-delete'] = True request = fakes.HTTPRequest.blank('/v2/fakes/os-services/1', use_admin_context=True) request.method = 'DELETE' with mock.patch.object(self.controller.host_api, 'service_delete') as service_delete: self.controller.delete(request, '1') service_delete.assert_called_once_with( request.environ['nova.context'], '1') self.assertEqual(self.controller.delete.wsgi_code, 204) def test_services_delete_not_found(self): self.ext_mgr.extensions['os-extended-services-delete'] = True request = fakes.HTTPRequest.blank('/v2/fakes/os-services/abc', use_admin_context=True) request.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, request, 'abc') def test_services_delete_not_enabled(self): request = fakes.HTTPRequest.blank('/v2/fakes/os-services/300', use_admin_context=True) request.method = 'DELETE' self.assertRaises(webob.exc.HTTPMethodNotAllowed, self.controller.delete, request, '300') class ServicesCellsTest(test.TestCase): def setUp(self): super(ServicesCellsTest, self).setUp() host_api = cells_api.HostAPI() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = services.ServiceController(self.ext_mgr) self.controller.host_api = host_api self.stubs.Set(timeutils, "utcnow", fake_utcnow) self.stubs.Set(timeutils, "utcnow_ts", fake_utcnow_ts) services_list = [] for service in fake_services_list: service = service.copy() service['id'] = 'cell1@%d' % service['id'] services_list.append(service) self.stubs.Set(host_api.cells_rpcapi, "service_get_all", fake_service_get_all(services_list)) def test_services_detail(self): self.ext_mgr.extensions['os-extended-services-delete'] = True req = FakeRequest() res_dict = self.controller.index(req) utc = iso8601.iso8601.Utc() response = {'services': [ {'id': 'cell1@1', 'binary': 'nova-scheduler', 'host': 'host1', 'zone': 'internal', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2, tzinfo=utc)}, {'id': 'cell1@2', 'binary': 'nova-compute', 'host': 'host1', 'zone': 'nova', 'status': 'disabled', 'state': 'up', 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 5, tzinfo=utc)}, {'id': 'cell1@3', 'binary': 'nova-scheduler', 'host': 'host2', 'zone': 'internal', 'status': 'enabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 19, 6, 55, 34, tzinfo=utc)}, {'id': 'cell1@4', 'binary': 'nova-compute', 'host': 'host2', 'zone': 'nova', 'status': 'disabled', 'state': 'down', 'updated_at': datetime.datetime(2012, 9, 18, 8, 3, 38, tzinfo=utc)}]} self.assertEqual(res_dict, response) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_used_limits.py0000664000175400017540000002201312323721477027623 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.api.openstack.compute.contrib import used_limits from nova.api.openstack.compute import limits from nova.api.openstack import extensions from nova.api.openstack import wsgi import nova.context from nova import exception from nova import quota from nova import test class FakeRequest(object): def __init__(self, context, reserved=False): self.environ = {'nova.context': context} self.reserved = reserved self.GET = {'reserved': 1} if reserved else {} class UsedLimitsTestCase(test.NoDBTestCase): def setUp(self): """Run before each test.""" super(UsedLimitsTestCase, self).setUp() self.ext_mgr = self.mox.CreateMock(extensions.ExtensionManager) self.controller = used_limits.UsedLimitsController(self.ext_mgr) self.fake_context = nova.context.RequestContext('fake', 'fake') self.mox.StubOutWithMock(used_limits, 'authorize_for_admin') self.authorize_for_admin = used_limits.authorize_for_admin def _do_test_used_limits(self, reserved): fake_req = FakeRequest(self.fake_context, reserved=reserved) obj = { "limits": { "rate": [], "absolute": {}, }, } res = wsgi.ResponseObject(obj) quota_map = { 'totalRAMUsed': 'ram', 'totalCoresUsed': 'cores', 'totalInstancesUsed': 'instances', 'totalFloatingIpsUsed': 'floating_ips', 'totalSecurityGroupsUsed': 'security_groups', } limits = {} for display_name, q in quota_map.iteritems(): limits[q] = {'limit': len(display_name), 'in_use': len(display_name) / 2, 'reserved': len(display_name) / 3} def stub_get_project_quotas(context, project_id, usages=True): return limits self.stubs.Set(quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(False) self.mox.ReplayAll() self.controller.index(fake_req, res) abs_limits = res.obj['limits']['absolute'] for used_limit, value in abs_limits.iteritems(): r = limits[quota_map[used_limit]]['reserved'] if reserved else 0 self.assertEqual(value, limits[quota_map[used_limit]]['in_use'] + r) def test_used_limits_basic(self): self._do_test_used_limits(False) def test_used_limits_with_reserved(self): self._do_test_used_limits(True) def test_admin_can_fetch_limits_for_a_given_tenant_id(self): project_id = "123456" user_id = "A1234" tenant_id = 'abcd' self.fake_context.project_id = project_id self.fake_context.user_id = user_id obj = { "limits": { "rate": [], "absolute": {}, }, } target = { "project_id": tenant_id, "user_id": user_id } fake_req = FakeRequest(self.fake_context) fake_req.GET = {'tenant_id': tenant_id} self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(True) self.authorize_for_admin(self.fake_context, target=target) self.mox.StubOutWithMock(quota.QUOTAS, 'get_project_quotas') quota.QUOTAS.get_project_quotas(self.fake_context, '%s' % tenant_id, usages=True).AndReturn({}) self.mox.ReplayAll() res = wsgi.ResponseObject(obj) self.controller.index(fake_req, res) def test_admin_can_fetch_used_limits_for_own_project(self): project_id = "123456" user_id = "A1234" self.fake_context.project_id = project_id self.fake_context.user_id = user_id obj = { "limits": { "rate": [], "absolute": {}, }, } fake_req = FakeRequest(self.fake_context) fake_req.GET = {} self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(True) self.mox.StubOutWithMock(extensions, 'extension_authorizer') self.mox.StubOutWithMock(quota.QUOTAS, 'get_project_quotas') quota.QUOTAS.get_project_quotas(self.fake_context, '%s' % project_id, usages=True).AndReturn({}) self.mox.ReplayAll() res = wsgi.ResponseObject(obj) self.controller.index(fake_req, res) def test_non_admin_cannot_fetch_used_limits_for_any_other_project(self): project_id = "123456" user_id = "A1234" tenant_id = "abcd" self.fake_context.project_id = project_id self.fake_context.user_id = user_id obj = { "limits": { "rate": [], "absolute": {}, }, } target = { "project_id": tenant_id, "user_id": user_id } fake_req = FakeRequest(self.fake_context) fake_req.GET = {'tenant_id': tenant_id} self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(True) self.authorize_for_admin(self.fake_context, target=target). \ AndRaise(exception.PolicyNotAuthorized( action="compute_extension:used_limits_for_admin")) self.mox.ReplayAll() res = wsgi.ResponseObject(obj) self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, fake_req, res) def test_used_limits_fetched_for_context_project_id(self): project_id = "123456" self.fake_context.project_id = project_id obj = { "limits": { "rate": [], "absolute": {}, }, } fake_req = FakeRequest(self.fake_context) self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(False) self.mox.StubOutWithMock(quota.QUOTAS, 'get_project_quotas') quota.QUOTAS.get_project_quotas(self.fake_context, project_id, usages=True).AndReturn({}) self.mox.ReplayAll() res = wsgi.ResponseObject(obj) self.controller.index(fake_req, res) def test_used_ram_added(self): fake_req = FakeRequest(self.fake_context) obj = { "limits": { "rate": [], "absolute": { "maxTotalRAMSize": 512, }, }, } res = wsgi.ResponseObject(obj) def stub_get_project_quotas(context, project_id, usages=True): return {'ram': {'limit': 512, 'in_use': 256}} self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(False) self.stubs.Set(quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) self.mox.ReplayAll() self.controller.index(fake_req, res) abs_limits = res.obj['limits']['absolute'] self.assertIn('totalRAMUsed', abs_limits) self.assertEqual(abs_limits['totalRAMUsed'], 256) def test_no_ram_quota(self): fake_req = FakeRequest(self.fake_context) obj = { "limits": { "rate": [], "absolute": {}, }, } res = wsgi.ResponseObject(obj) def stub_get_project_quotas(context, project_id, usages=True): return {} self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(False) self.stubs.Set(quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) self.mox.ReplayAll() self.controller.index(fake_req, res) abs_limits = res.obj['limits']['absolute'] self.assertNotIn('totalRAMUsed', abs_limits) def test_used_limits_xmlns(self): fake_req = FakeRequest(self.fake_context) obj = { "limits": { "rate": [], "absolute": {}, }, } res = wsgi.ResponseObject(obj, xml=limits.LimitsTemplate) res.preserialize('xml') def stub_get_project_quotas(context, project_id, usages=True): return {} self.ext_mgr.is_loaded('os-used-limits-for-admin').AndReturn(False) self.stubs.Set(quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) self.mox.ReplayAll() self.controller.index(fake_req, res) response = res.serialize(None, 'xml') self.assertIn(used_limits.XMLNS, response.body) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_console_output.py0000664000175400017540000001613512323721477030374 0ustar jenkinsjenkins00000000000000# Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import string import webob from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_console_output(self, _context, _instance, tail_length): fixture = [str(i) for i in range(5)] if tail_length is None: pass elif tail_length == 0: fixture = [] else: fixture = fixture[-int(tail_length):] return '\n'.join(fixture) def fake_get_console_output_not_ready(self, _context, _instance, tail_length): raise exception.InstanceNotReady(instance_id=_instance["uuid"]) def fake_get_console_output_all_characters(self, _ctx, _instance, _tail_len): return string.printable def fake_get(self, context, instance_uuid): return {'uuid': instance_uuid} def fake_get_not_found(*args, **kwargs): raise exception.NotFound() class ConsoleOutputExtensionTest(test.NoDBTestCase): def setUp(self): super(ConsoleOutputExtensionTest, self).setUp() self.stubs.Set(compute_api.API, 'get_console_output', fake_get_console_output) self.stubs.Set(compute_api.API, 'get', fake_get) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Console_output']) self.app = fakes.wsgi_app(init_only=('servers',)) def test_get_text_console_instance_action(self): body = {'os-getConsoleOutput': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {'output': '0\n1\n2\n3\n4'}) def test_get_console_output_with_tail(self): body = {'os-getConsoleOutput': {'length': 3}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {'output': '2\n3\n4'}) def test_get_console_output_with_length_as_str(self): body = {'os-getConsoleOutput': {'length': '3'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {'output': '2\n3\n4'}) def test_get_console_output_filtered_characters(self): self.stubs.Set(compute_api.API, 'get_console_output', fake_get_console_output_all_characters) body = {'os-getConsoleOutput': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) expect = string.digits + string.letters + string.punctuation + ' \t\n' self.assertEqual(output, {'output': expect}) def test_get_console_output_with_non_integer_length(self): body = {'os-getConsoleOutput': {'length': 'NaN'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_text_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'os-getConsoleOutput': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_text_console_no_instance_on_get_output(self): self.stubs.Set(compute_api.API, 'get_console_output', fake_get_not_found) body = {'os-getConsoleOutput': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_text_console_bad_body(self): body = {} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_console_output_not_ready(self): self.stubs.Set(compute_api.API, 'get_console_output', fake_get_console_output_not_ready) body = {'os-getConsoleOutput': {'length': 3}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 409) def test_get_console_output_with_length_as_float(self): body = {'os-getConsoleOutput': {'length': 2.5}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_not_implemented(self): self.stubs.Set(compute_api.API, 'get_console_output', fakes.fake_not_implemented) body = {'os-getConsoleOutput': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 501) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_cloudpipe.py0000664000175400017540000001661112323721477027275 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree from oslo.config import cfg from webob import exc from nova.api.openstack.compute.contrib import cloudpipe from nova.api.openstack import wsgi from nova.compute import utils as compute_utils from nova import exception from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_network from nova.tests import matchers from nova import utils CONF = cfg.CONF CONF.import_opt('vpn_image_id', 'nova.cloudpipe.pipelib') def fake_vpn_instance(): return { 'id': 7, 'image_ref': CONF.vpn_image_id, 'vm_state': 'active', 'created_at': timeutils.parse_strtime('1981-10-20T00:00:00.000000'), 'uuid': 7777, 'project_id': 'other', } def compute_api_get_all_empty(context, search_opts=None): return [] def compute_api_get_all(context, search_opts=None): return [fake_vpn_instance()] def utils_vpn_ping(addr, port, timoeout=0.05, session_id=None): return True class CloudpipeTest(test.NoDBTestCase): def setUp(self): super(CloudpipeTest, self).setUp() self.controller = cloudpipe.CloudpipeController() self.stubs.Set(self.controller.compute_api, "get_all", compute_api_get_all_empty) self.stubs.Set(utils, 'vpn_ping', utils_vpn_ping) def test_cloudpipe_list_no_network(self): def fake_get_nw_info_for_instance(instance): return {} self.stubs.Set(compute_utils, "get_nw_info_for_instance", fake_get_nw_info_for_instance) self.stubs.Set(self.controller.compute_api, "get_all", compute_api_get_all) req = fakes.HTTPRequest.blank('/v2/fake/os-cloudpipe') res_dict = self.controller.index(req) response = {'cloudpipes': [{'project_id': 'other', 'instance_id': 7777, 'created_at': '1981-10-20T00:00:00Z'}]} self.assertEqual(res_dict, response) def test_cloudpipe_list(self): def network_api_get(context, network_id): self.assertEqual(context.project_id, 'other') return {'vpn_public_address': '127.0.0.1', 'vpn_public_port': 22} def fake_get_nw_info_for_instance(instance): return fake_network.fake_get_instance_nw_info(self.stubs) self.stubs.Set(compute_utils, "get_nw_info_for_instance", fake_get_nw_info_for_instance) self.stubs.Set(self.controller.network_api, "get", network_api_get) self.stubs.Set(self.controller.compute_api, "get_all", compute_api_get_all) req = fakes.HTTPRequest.blank('/v2/fake/os-cloudpipe') res_dict = self.controller.index(req) response = {'cloudpipes': [{'project_id': 'other', 'internal_ip': '192.168.1.100', 'public_ip': '127.0.0.1', 'public_port': 22, 'state': 'running', 'instance_id': 7777, 'created_at': '1981-10-20T00:00:00Z'}]} self.assertThat(res_dict, matchers.DictMatches(response)) def test_cloudpipe_create(self): def launch_vpn_instance(context): return ([fake_vpn_instance()], 'fake-reservation') self.stubs.Set(self.controller.cloudpipe, 'launch_vpn_instance', launch_vpn_instance) body = {'cloudpipe': {'project_id': 1}} req = fakes.HTTPRequest.blank('/v2/fake/os-cloudpipe') res_dict = self.controller.create(req, body) response = {'instance_id': 7777} self.assertEqual(res_dict, response) def test_cloudpipe_create_no_networks(self): def launch_vpn_instance(context): raise exception.NoMoreNetworks self.stubs.Set(self.controller.cloudpipe, 'launch_vpn_instance', launch_vpn_instance) body = {'cloudpipe': {'project_id': 1}} req = fakes.HTTPRequest.blank('/v2/fake/os-cloudpipe') self.assertRaises(exc.HTTPBadRequest, self.controller.create, req, body) def test_cloudpipe_create_already_running(self): def launch_vpn_instance(*args, **kwargs): self.fail("Method should not have been called") self.stubs.Set(self.controller.cloudpipe, 'launch_vpn_instance', launch_vpn_instance) self.stubs.Set(self.controller.compute_api, "get_all", compute_api_get_all) body = {'cloudpipe': {'project_id': 1}} req = fakes.HTTPRequest.blank('/v2/fake/os-cloudpipe') res_dict = self.controller.create(req, body) response = {'instance_id': 7777} self.assertEqual(res_dict, response) class CloudpipesXMLSerializerTest(test.NoDBTestCase): def test_default_serializer(self): serializer = cloudpipe.CloudpipeTemplate() exemplar = dict(cloudpipe=dict(instance_id='1234-1234-1234-1234')) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('cloudpipe', tree.tag) for child in tree: self.assertIn(child.tag, exemplar['cloudpipe']) self.assertEqual(child.text, exemplar['cloudpipe'][child.tag]) def test_index_serializer(self): serializer = cloudpipe.CloudpipesTemplate() exemplar = dict(cloudpipes=[ dict( project_id='1234', public_ip='1.2.3.4', public_port='321', instance_id='1234-1234-1234-1234', created_at=timeutils.isotime(), state='running'), dict( project_id='4321', public_ip='4.3.2.1', public_port='123', state='pending')]) text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('cloudpipes', tree.tag) self.assertEqual(len(exemplar['cloudpipes']), len(tree)) for idx, cl_pipe in enumerate(tree): kp_data = exemplar['cloudpipes'][idx] for child in cl_pipe: self.assertIn(child.tag, kp_data) self.assertEqual(child.text, kp_data[child.tag]) def test_deserializer(self): deserializer = wsgi.XMLDeserializer() exemplar = dict(cloudpipe=dict(project_id='4321')) intext = ("\n" '4321') result = deserializer.deserialize(intext)['body'] self.assertEqual(result, exemplar) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_server_external_events.py0000664000175400017540000001254112323721477032103 0ustar jenkinsjenkins00000000000000# Copyright 2014 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. import json import mock import webob from nova.api.openstack.compute.contrib import server_external_events from nova import context from nova import exception from nova.objects import instance as instance_obj from nova import test fake_instances = { '00000000-0000-0000-0000-000000000001': instance_obj.Instance( uuid='00000000-0000-0000-0000-000000000001', host='host1'), '00000000-0000-0000-0000-000000000002': instance_obj.Instance( uuid='00000000-0000-0000-0000-000000000002', host='host1'), '00000000-0000-0000-0000-000000000003': instance_obj.Instance( uuid='00000000-0000-0000-0000-000000000003', host='host2'), } fake_instance_uuids = sorted(fake_instances.keys()) MISSING_UUID = '00000000-0000-0000-0000-000000000004' @classmethod def fake_get_by_uuid(cls, context, uuid): try: return fake_instances[uuid] except KeyError: raise exception.InstanceNotFound(instance_id=uuid) @mock.patch('nova.objects.instance.Instance.get_by_uuid', fake_get_by_uuid) class ServerExternalEventsTest(test.NoDBTestCase): def setUp(self): super(ServerExternalEventsTest, self).setUp() self.api = server_external_events.ServerExternalEventsController() self.context = context.get_admin_context() self.default_body = { 'events': [ {'name': 'network-vif-plugged', 'tag': 'foo', 'status': 'completed', 'server_uuid': fake_instance_uuids[0]}, {'name': 'network-changed', 'server_uuid': fake_instance_uuids[1]}, ] } def _create_req(self, body): req = webob.Request.blank('/v2/fake/os-server-external-events') req.method = 'POST' req.headers['content-type'] = 'application/json' req.environ['nova.context'] = self.context req.body = json.dumps(body) return req def _assert_call(self, req, body, expected_uuids, expected_events): with mock.patch.object(self.api.compute_api, 'external_instance_event') as api_method: response = self.api.create(req, body) result = response.obj code = response._code self.assertEqual(1, api_method.call_count) for inst in api_method.call_args_list[0][0][1]: expected_uuids.remove(inst.uuid) self.assertEqual([], expected_uuids) for event in api_method.call_args_list[0][0][2]: expected_events.remove(event.name) self.assertEqual([], expected_events) return result, code def test_create(self): req = self._create_req(self.default_body) result, code = self._assert_call(req, self.default_body, fake_instance_uuids[:2], ['network-vif-plugged', 'network-changed']) self.assertEqual(self.default_body, result) self.assertEqual(200, code) def test_create_one_bad_instance(self): body = self.default_body body['events'][1]['server_uuid'] = MISSING_UUID req = self._create_req(body) result, code = self._assert_call(req, body, [fake_instance_uuids[0]], ['network-vif-plugged']) self.assertEqual('failed', result['events'][1]['status']) self.assertEqual(200, result['events'][0]['code']) self.assertEqual(404, result['events'][1]['code']) self.assertEqual(207, code) def test_create_no_good_instances(self): body = self.default_body body['events'][0]['server_uuid'] = MISSING_UUID body['events'][1]['server_uuid'] = MISSING_UUID req = self._create_req(body) self.assertRaises(webob.exc.HTTPNotFound, self.api.create, req, body) def test_create_bad_status(self): body = self.default_body body['events'][1]['status'] = 'foo' req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) def test_create_extra_gorp(self): body = self.default_body body['events'][0]['foobar'] = 'bad stuff' req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) def test_create_bad_events(self): body = {'events': 'foo'} req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) def test_create_bad_body(self): body = {'foo': 'bar'} req = self._create_req(body) self.assertRaises(webob.exc.HTTPBadRequest, self.api.create, req, body) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_createserverext.py0000664000175400017540000004133712323721477030527 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 from xml.dom import minidom import webob from nova.compute import api as compute_api from nova import db from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_UUID = fakes.FAKE_UUID FAKE_NETWORKS = [('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '10.0.1.12'), ('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '10.0.2.12')] DUPLICATE_NETWORKS = [('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '10.0.1.12'), ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '10.0.1.12')] INVALID_NETWORKS = [('invalid', 'invalid-ip-address')] def return_security_group_non_existing(context, project_id, group_name): raise exception.SecurityGroupNotFoundForProject(project_id=project_id, security_group_id=group_name) def return_security_group_get_by_name(context, project_id, group_name): return {'id': 1, 'name': group_name} def return_security_group_get(context, security_group_id, session): return {'id': security_group_id} def return_instance_add_security_group(context, instance_id, security_group_id): pass class CreateserverextTest(test.TestCase): def setUp(self): super(CreateserverextTest, self).setUp() self.security_group = None self.injected_files = None self.networks = None self.user_data = None def create(*args, **kwargs): if 'security_group' in kwargs: self.security_group = kwargs['security_group'] else: self.security_group = None if 'injected_files' in kwargs: self.injected_files = kwargs['injected_files'] else: self.injected_files = None if 'requested_networks' in kwargs: self.networks = kwargs['requested_networks'] else: self.networks = None if 'user_data' in kwargs: self.user_data = kwargs['user_data'] resv_id = None return ([{'id': '1234', 'display_name': 'fakeinstance', 'uuid': FAKE_UUID, 'user_id': 'fake', 'project_id': 'fake', 'created_at': "", 'updated_at': "", 'fixed_ips': [], 'progress': 0}], resv_id) self.stubs.Set(compute_api.API, 'create', create) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Createserverext', 'User_data', 'Security_groups', 'Os_networks']) def _make_stub_method(self, canned_return): def stub_method(*args, **kwargs): return canned_return return stub_method def _create_security_group_request_dict(self, security_groups): server = {} server['name'] = 'new-server-test' server['imageRef'] = 'cedef40a-ed67-4d10-800e-17455edce175' server['flavorRef'] = 1 if security_groups is not None: sg_list = [] for name in security_groups: sg_list.append({'name': name}) server['security_groups'] = sg_list return {'server': server} def _create_networks_request_dict(self, networks): server = {} server['name'] = 'new-server-test' server['imageRef'] = 'cedef40a-ed67-4d10-800e-17455edce175' server['flavorRef'] = 1 if networks is not None: network_list = [] for uuid, fixed_ip in networks: network_list.append({'uuid': uuid, 'fixed_ip': fixed_ip}) server['networks'] = network_list return {'server': server} def _create_user_data_request_dict(self, user_data): server = {} server['name'] = 'new-server-test' server['imageRef'] = 'cedef40a-ed67-4d10-800e-17455edce175' server['flavorRef'] = 1 server['user_data'] = user_data return {'server': server} def _get_create_request_json(self, body_dict): req = webob.Request.blank('/v2/fake/os-create-server-ext') req.headers['Content-Type'] = 'application/json' req.method = 'POST' req.body = jsonutils.dumps(body_dict) return req def _format_xml_request_body(self, body_dict): server = body_dict['server'] body_parts = [] body_parts.extend([ '', '' % ( server['name'], server['imageRef'], server['flavorRef'])]) if 'metadata' in server: metadata = server['metadata'] body_parts.append('') for item in metadata.iteritems(): body_parts.append('%s' % item) body_parts.append('') if 'personality' in server: personalities = server['personality'] body_parts.append('') for file in personalities: item = (file['path'], file['contents']) body_parts.append('%s' % item) body_parts.append('') if 'networks' in server: networks = server['networks'] body_parts.append('') for network in networks: item = (network['uuid'], network['fixed_ip']) body_parts.append('' % item) body_parts.append('') body_parts.append('') return ''.join(body_parts) def _get_create_request_xml(self, body_dict): req = webob.Request.blank('/v2/fake/os-create-server-ext') req.content_type = 'application/xml' req.accept = 'application/xml' req.method = 'POST' req.body = self._format_xml_request_body(body_dict) return req def _create_instance_with_networks_json(self, networks): body_dict = self._create_networks_request_dict(networks) request = self._get_create_request_json(body_dict) response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) return request, response, self.networks def _create_instance_with_user_data_json(self, networks): body_dict = self._create_user_data_request_dict(networks) request = self._get_create_request_json(body_dict) response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) return request, response, self.user_data def _create_instance_with_networks_xml(self, networks): body_dict = self._create_networks_request_dict(networks) request = self._get_create_request_xml(body_dict) response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) return request, response, self.networks def test_create_instance_with_no_networks(self): _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst(networks=None) self.assertEqual(response.status_int, 202) self.assertIsNone(networks) def test_create_instance_with_no_networks_xml(self): _create_inst = self._create_instance_with_networks_xml request, response, networks = _create_inst(networks=None) self.assertEqual(response.status_int, 202) self.assertIsNone(networks) def test_create_instance_with_one_network(self): _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst([FAKE_NETWORKS[0]]) self.assertEqual(response.status_int, 202) self.assertEqual(networks, [FAKE_NETWORKS[0]]) def test_create_instance_with_one_network_xml(self): _create_inst = self._create_instance_with_networks_xml request, response, networks = _create_inst([FAKE_NETWORKS[0]]) self.assertEqual(response.status_int, 202) self.assertEqual(networks, [FAKE_NETWORKS[0]]) def test_create_instance_with_two_networks(self): _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst(FAKE_NETWORKS) self.assertEqual(response.status_int, 202) self.assertEqual(networks, FAKE_NETWORKS) def test_create_instance_with_two_networks_xml(self): _create_inst = self._create_instance_with_networks_xml request, response, networks = _create_inst(FAKE_NETWORKS) self.assertEqual(response.status_int, 202) self.assertEqual(networks, FAKE_NETWORKS) def test_create_instance_with_duplicate_networks(self): _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst(DUPLICATE_NETWORKS) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_duplicate_networks_xml(self): _create_inst = self._create_instance_with_networks_xml request, response, networks = _create_inst(DUPLICATE_NETWORKS) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_network_no_id(self): body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]]) del body_dict['server']['networks'][0]['uuid'] request = self._get_create_request_json(body_dict) response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) self.assertEqual(response.status_int, 400) self.assertIsNone(self.networks) def test_create_instance_with_network_no_id_xml(self): body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]]) request = self._get_create_request_xml(body_dict) uuid = ' uuid="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"' request.body = request.body.replace(uuid, '') response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) self.assertEqual(response.status_int, 400) self.assertIsNone(self.networks) def test_create_instance_with_network_invalid_id(self): _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst(INVALID_NETWORKS) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_network_invalid_id_xml(self): _create_inst = self._create_instance_with_networks_xml request, response, networks = _create_inst(INVALID_NETWORKS) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_network_empty_fixed_ip(self): networks = [('1', '')] _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst(networks) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_network_non_string_fixed_ip(self): networks = [('1', 12345)] _create_inst = self._create_instance_with_networks_json request, response, networks = _create_inst(networks) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_network_empty_fixed_ip_xml(self): networks = [('1', '')] _create_inst = self._create_instance_with_networks_xml request, response, networks = _create_inst(networks) self.assertEqual(response.status_int, 400) self.assertIsNone(networks) def test_create_instance_with_network_no_fixed_ip(self): body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]]) del body_dict['server']['networks'][0]['fixed_ip'] request = self._get_create_request_json(body_dict) response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) self.assertEqual(response.status_int, 202) self.assertEqual(self.networks, [('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', None)]) def test_create_instance_with_network_no_fixed_ip_xml(self): body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]]) request = self._get_create_request_xml(body_dict) request.body = request.body.replace(' fixed_ip="10.0.1.12"', '') response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) self.assertEqual(response.status_int, 202) self.assertEqual(self.networks, [('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', None)]) def test_create_instance_with_userdata(self): user_data_contents = '#!/bin/bash\necho "Oh no!"\n' user_data_contents = base64.b64encode(user_data_contents) _create_inst = self._create_instance_with_user_data_json request, response, user_data = _create_inst(user_data_contents) self.assertEqual(response.status_int, 202) self.assertEqual(user_data, user_data_contents) def test_create_instance_with_userdata_none(self): user_data_contents = None _create_inst = self._create_instance_with_user_data_json request, response, user_data = _create_inst(user_data_contents) self.assertEqual(response.status_int, 202) self.assertEqual(user_data, user_data_contents) def test_create_instance_with_userdata_with_non_b64_content(self): user_data_contents = '#!/bin/bash\necho "Oh no!"\n' _create_inst = self._create_instance_with_user_data_json request, response, user_data = _create_inst(user_data_contents) self.assertEqual(response.status_int, 400) self.assertIsNone(user_data) def test_create_instance_with_security_group_json(self): security_groups = ['test', 'test1'] self.stubs.Set(db, 'security_group_get_by_name', return_security_group_get_by_name) self.stubs.Set(db, 'instance_add_security_group', return_instance_add_security_group) body_dict = self._create_security_group_request_dict(security_groups) request = self._get_create_request_json(body_dict) response = request.get_response(fakes.wsgi_app( init_only=('servers', 'os-create-server-ext'))) self.assertEqual(response.status_int, 202) self.assertEqual(self.security_group, security_groups) def test_get_server_by_id_verify_security_groups_json(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v2/fake/os-create-server-ext/1') req.headers['Content-Type'] = 'application/json' response = req.get_response(fakes.wsgi_app( init_only=('os-create-server-ext', 'servers'))) self.assertEqual(response.status_int, 200) res_dict = jsonutils.loads(response.body) expected_security_group = [{"name": "test"}] self.assertEqual(res_dict['server'].get('security_groups'), expected_security_group) def test_get_server_by_id_verify_security_groups_xml(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v2/fake/os-create-server-ext/1') req.headers['Accept'] = 'application/xml' response = req.get_response(fakes.wsgi_app( init_only=('os-create-server-ext', 'servers'))) self.assertEqual(response.status_int, 200) dom = minidom.parseString(response.body) server = dom.childNodes[0] sec_groups = server.getElementsByTagName('security_groups')[0] sec_group = sec_groups.getElementsByTagName('security_group')[0] self.assertEqual('test', sec_group.getAttribute("name")) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_multinic_xs.py0000664000175400017540000001035612323721477027647 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova import compute from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes UUID = '70f6db34-de8d-4fbd-aafb-4065bdfa6114' last_add_fixed_ip = (None, None) last_remove_fixed_ip = (None, None) def compute_api_add_fixed_ip(self, context, instance, network_id): global last_add_fixed_ip last_add_fixed_ip = (instance['uuid'], network_id) def compute_api_remove_fixed_ip(self, context, instance, address): global last_remove_fixed_ip last_remove_fixed_ip = (instance['uuid'], address) def compute_api_get(self, context, instance_id, want_objects=False): instance = instance_obj.Instance() instance.uuid = instance_id instance.id = 1 instance.vm_state = 'fake' instance.task_state = 'fake' instance.obj_reset_changes() return instance class FixedIpTest(test.NoDBTestCase): def setUp(self): super(FixedIpTest, self).setUp() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(compute.api.API, "add_fixed_ip", compute_api_add_fixed_ip) self.stubs.Set(compute.api.API, "remove_fixed_ip", compute_api_remove_fixed_ip) self.stubs.Set(compute.api.API, 'get', compute_api_get) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Multinic']) self.app = fakes.wsgi_app(init_only=('servers',)) def test_add_fixed_ip(self): global last_add_fixed_ip last_add_fixed_ip = (None, None) body = dict(addFixedIp=dict(networkId='test_net')) req = webob.Request.blank('/v2/fake/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) self.assertEqual(last_add_fixed_ip, (UUID, 'test_net')) def test_add_fixed_ip_no_network(self): global last_add_fixed_ip last_add_fixed_ip = (None, None) body = dict(addFixedIp=dict()) req = webob.Request.blank('/v2/fake/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 422) self.assertEqual(last_add_fixed_ip, (None, None)) def test_remove_fixed_ip(self): global last_remove_fixed_ip last_remove_fixed_ip = (None, None) body = dict(removeFixedIp=dict(address='10.10.10.1')) req = webob.Request.blank('/v2/fake/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 202) self.assertEqual(last_remove_fixed_ip, (UUID, '10.10.10.1')) def test_remove_fixed_ip_no_address(self): global last_remove_fixed_ip last_remove_fixed_ip = (None, None) body = dict(removeFixedIp=dict()) req = webob.Request.blank('/v2/fake/servers/%s/action' % UUID) req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['content-type'] = 'application/json' resp = req.get_response(self.app) self.assertEqual(resp.status_int, 422) self.assertEqual(last_remove_fixed_ip, (None, None)) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_extended_ips_mac.py0000664000175400017540000001363212323721477030604 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import extended_ips_mac from nova.api.openstack import xmlutil from nova import compute from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' NW_CACHE = [ { 'address': 'aa:aa:aa:aa:aa:aa', 'id': 1, 'network': { 'bridge': 'br0', 'id': 1, 'label': 'private', 'subnets': [ { 'cidr': '192.168.1.0/24', 'ips': [ { 'address': '192.168.1.100', 'type': 'fixed', 'floating_ips': [ {'address': '5.0.0.1', 'type': 'floating'}, ], }, ], }, ] } }, { 'address': 'bb:bb:bb:bb:bb:bb', 'id': 2, 'network': { 'bridge': 'br1', 'id': 2, 'label': 'public', 'subnets': [ { 'cidr': '10.0.0.0/24', 'ips': [ { 'address': '10.0.0.100', 'type': 'fixed', 'floating_ips': [ {'address': '5.0.0.2', 'type': 'floating'}, ], } ], }, ] } } ] ALL_IPS = [] for cache in NW_CACHE: for subnet in cache['network']['subnets']: for fixed in subnet['ips']: sanitized = dict(fixed) sanitized['mac_address'] = cache['address'] sanitized.pop('floating_ips') sanitized.pop('type') ALL_IPS.append(sanitized) for floating in fixed['floating_ips']: sanitized = dict(floating) sanitized['mac_address'] = cache['address'] sanitized.pop('type') ALL_IPS.append(sanitized) ALL_IPS.sort() def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, nw_cache=NW_CACHE) return fake_instance.fake_instance_obj(args[1], expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS, **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(1, uuid=UUID1, nw_cache=NW_CACHE), fakes.stub_instance(2, uuid=UUID2, nw_cache=NW_CACHE), ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ExtendedIpsMacTest(test.TestCase): content_type = 'application/json' prefix = '%s:' % extended_ips_mac.Extended_ips_mac.alias def setUp(self): super(ExtendedIpsMacTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Extended_ips_mac']) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def _get_ips(self, server): for network in server['addresses'].itervalues(): for ip in network: yield ip def assertServerStates(self, server): results = [] for ip in self._get_ips(server): results.append({'address': ip.get('addr'), 'mac_address': ip.get('%smac_addr' % self.prefix)}) self.assertEqual(ALL_IPS, sorted(results)) def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertServerStates(self._get_server(res.body)) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for _i, server in enumerate(self._get_servers(res.body)): self.assertServerStates(server) class ExtendedIpsMacXmlTest(ExtendedIpsMacTest): content_type = 'application/xml' prefix = '{%s}' % extended_ips_mac.Extended_ips_mac.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() def _get_ips(self, server): for network in server.find('{%s}addresses' % xmlutil.XMLNS_V11): for ip in network: yield ip nova-2014.1/nova/tests/api/openstack/compute/contrib/test_server_start_stop.py0000664000175400017540000001552212323721477031101 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Midokura Japan K.K. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mox import webob from nova.api.openstack.compute.contrib import server_start_stop from nova.compute import api as compute_api from nova import db from nova import exception from nova.openstack.common import policy as common_policy from nova import test from nova.tests.api.openstack import fakes def fake_instance_get(context, instance_id, columns_to_join=None, use_slave=False): result = fakes.stub_instance(id=1, uuid=instance_id) result['created_at'] = None result['deleted_at'] = None result['updated_at'] = None result['deleted'] = 0 result['info_cache'] = {'network_info': '[]', 'instance_uuid': result['uuid']} return result def fake_start_stop_not_ready(self, context, instance): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_start_stop_locked_server(self, context, instance): raise exception.InstanceIsLocked(instance_uuid=instance['uuid']) def fake_start_stop_invalid_state(self, context, instance): raise exception.InstanceIsLocked(instance_uuid=instance['uuid']) class ServerStartStopTest(test.TestCase): def setUp(self): super(ServerStartStopTest, self).setUp() self.controller = server_start_stop.ServerStartStopActionController() def test_start(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.mox.StubOutWithMock(compute_api.API, 'start') compute_api.API.start(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") self.controller._start_server(req, 'test_inst', body) def test_start_policy_failed(self): rules = { "compute:start": common_policy.parse_rule("project_id:non_fake") } common_policy.set_rules(common_policy.Rules(rules)) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._start_server, req, 'test_inst', body) self.assertIn('compute:start', exc.format_message()) def test_start_not_ready(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.stubs.Set(compute_api.API, 'start', fake_start_stop_not_ready) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._start_server, req, 'test_inst', body) def test_start_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.stubs.Set(compute_api.API, 'start', fake_start_stop_locked_server) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._start_server, req, 'test_inst', body) def test_start_invalid_state(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.stubs.Set(compute_api.API, 'start', fake_start_stop_invalid_state) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._start_server, req, 'test_inst', body) def test_stop(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.mox.StubOutWithMock(compute_api.API, 'stop') compute_api.API.stop(mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(stop="") self.controller._stop_server(req, 'test_inst', body) def test_stop_policy_failed(self): rules = { "compute:stop": common_policy.parse_rule("project_id:non_fake") } common_policy.set_rules(common_policy.Rules(rules)) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(stop="") exc = self.assertRaises(exception.PolicyNotAuthorized, self.controller._stop_server, req, 'test_inst', body) self.assertIn("compute:stop", exc.format_message()) def test_stop_not_ready(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.stubs.Set(compute_api.API, 'stop', fake_start_stop_not_ready) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(stop="") self.assertRaises(webob.exc.HTTPConflict, self.controller._stop_server, req, 'test_inst', body) def test_stop_locked_server(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.stubs.Set(compute_api.API, 'stop', fake_start_stop_locked_server) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(stop="") self.assertRaises(webob.exc.HTTPConflict, self.controller._stop_server, req, 'test_inst', body) def test_stop_invalid_state(self): self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get) self.stubs.Set(compute_api.API, 'stop', fake_start_stop_invalid_state) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") self.assertRaises(webob.exc.HTTPConflict, self.controller._stop_server, req, 'test_inst', body) def test_start_with_bogus_id(self): req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(start="") self.assertRaises(webob.exc.HTTPNotFound, self.controller._start_server, req, 'test_inst', body) def test_stop_with_bogus_id(self): req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') body = dict(stop="") self.assertRaises(webob.exc.HTTPNotFound, self.controller._stop_server, req, 'test_inst', body) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_console_auth_tokens.py0000664000175400017540000000732512323721477031361 0ustar jenkinsjenkins00000000000000# Copyright 2013 Cloudbase Solutions Srl # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from oslo.config import cfg from nova.consoleauth import rpcapi as consoleauth_rpcapi from nova import context from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('osapi_compute_ext_list', 'nova.api.openstack.compute.contrib') _FAKE_CONNECT_INFO = {'instance_uuid': 'fake_instance_uuid', 'host': 'fake_host', 'port': 'fake_port', 'internal_access_path': 'fake_access_path', 'console_type': 'rdp-html5'} def _fake_check_token(self, context, token): return _FAKE_CONNECT_INFO def _fake_check_token_not_found(self, context, token): return None def _fake_check_token_unauthorized(self, context, token): connect_info = _FAKE_CONNECT_INFO connect_info['console_type'] = 'unauthorized_console_type' return connect_info class ConsoleAuthTokensExtensionTest(test.TestCase): _FAKE_URL = '/v2/fake/os-console-auth-tokens/1' _EXPECTED_OUTPUT = {'console': {'instance_uuid': 'fake_instance_uuid', 'host': 'fake_host', 'port': 'fake_port', 'internal_access_path': 'fake_access_path'}} def setUp(self): super(ConsoleAuthTokensExtensionTest, self).setUp() self.stubs.Set(consoleauth_rpcapi.ConsoleAuthAPI, 'check_token', _fake_check_token) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Console_auth_tokens']) ctxt = self._get_admin_context() self.app = fakes.wsgi_app(init_only=('os-console-auth-tokens',), fake_auth_context=ctxt) def _get_admin_context(self): ctxt = context.get_admin_context() ctxt.user_id = 'fake' ctxt.project_id = 'fake' return ctxt def _create_request(self): req = webob.Request.blank(self._FAKE_URL) req.method = "GET" req.headers["content-type"] = "application/json" return req def test_get_console_connect_info(self): req = self._create_request() res = req.get_response(self.app) self.assertEqual(200, res.status_int) output = jsonutils.loads(res.body) self.assertEqual(self._EXPECTED_OUTPUT, output) def test_get_console_connect_info_token_not_found(self): self.stubs.Set(consoleauth_rpcapi.ConsoleAuthAPI, 'check_token', _fake_check_token_not_found) req = self._create_request() res = req.get_response(self.app) self.assertEqual(404, res.status_int) def test_get_console_connect_info_unauthorized_console_type(self): self.stubs.Set(consoleauth_rpcapi.ConsoleAuthAPI, 'check_token', _fake_check_token_unauthorized) req = self._create_request() res = req.get_response(self.app) self.assertEqual(401, res.status_int) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_certificates.py0000664000175400017540000000576612323721477027767 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # Copyright 2013 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 lxml import etree import mox from nova.api.openstack.compute.contrib import certificates from nova import context from nova import test from nova.tests.api.openstack import fakes class CertificatesTest(test.NoDBTestCase): def setUp(self): super(CertificatesTest, self).setUp() self.context = context.RequestContext('fake', 'fake') self.controller = certificates.CertificatesController() def test_translate_certificate_view(self): pk, cert = 'fakepk', 'fakecert' view = certificates._translate_certificate_view(cert, pk) self.assertEqual(view['data'], cert) self.assertEqual(view['private_key'], pk) def test_certificates_show_root(self): self.mox.StubOutWithMock(self.controller.cert_rpcapi, 'fetch_ca') self.controller.cert_rpcapi.fetch_ca( mox.IgnoreArg(), project_id='fake').AndReturn('fakeroot') self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake/os-certificates/root') res_dict = self.controller.show(req, 'root') response = {'certificate': {'data': 'fakeroot', 'private_key': None}} self.assertEqual(res_dict, response) def test_certificates_create_certificate(self): self.mox.StubOutWithMock(self.controller.cert_rpcapi, 'generate_x509_cert') self.controller.cert_rpcapi.generate_x509_cert( mox.IgnoreArg(), user_id='fake_user', project_id='fake').AndReturn(('fakepk', 'fakecert')) self.mox.ReplayAll() req = fakes.HTTPRequest.blank('/v2/fake/os-certificates/') res_dict = self.controller.create(req) response = { 'certificate': {'data': 'fakecert', 'private_key': 'fakepk'} } self.assertEqual(res_dict, response) class CertificatesSerializerTest(test.NoDBTestCase): def test_index_serializer(self): serializer = certificates.CertificateTemplate() text = serializer.serialize(dict( certificate=dict( data='fakecert', private_key='fakepk'), )) tree = etree.fromstring(text) self.assertEqual('certificate', tree.tag) self.assertEqual('fakepk', tree.get('private_key')) self.assertEqual('fakecert', tree.get('data')) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_keypairs.py0000664000175400017540000004726512323721477027151 0ustar jenkinsjenkins00000000000000# Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob from nova.api.openstack.compute.contrib import keypairs from nova.api.openstack import wsgi from nova import db from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import policy from nova import quota from nova import test from nova.tests.api.openstack import fakes from nova.tests.objects import test_keypair QUOTAS = quota.QUOTAS keypair_data = { 'public_key': 'FAKE_KEY', 'fingerprint': 'FAKE_FINGERPRINT', } def fake_keypair(name): return dict(test_keypair.fake_keypair, name=name, **keypair_data) def db_key_pair_get_all_by_user(self, user_id): return [fake_keypair('FAKE')] def db_key_pair_create(self, keypair): return fake_keypair(name=keypair['name']) def db_key_pair_destroy(context, user_id, name): if not (user_id and name): raise Exception() def db_key_pair_create_duplicate(context, keypair): raise exception.KeyPairExists(key_name=keypair.get('name', '')) class KeypairsTest(test.TestCase): def setUp(self): super(KeypairsTest, self).setUp() self.Controller = keypairs.Controller() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(db, "key_pair_get_all_by_user", db_key_pair_get_all_by_user) self.stubs.Set(db, "key_pair_create", db_key_pair_create) self.stubs.Set(db, "key_pair_destroy", db_key_pair_destroy) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Keypairs']) self.app = fakes.wsgi_app(init_only=('os-keypairs',)) def test_keypair_list(self): req = webob.Request.blank('/v2/fake/os-keypairs') res = req.get_response(self.app) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) response = {'keypairs': [{'keypair': dict(keypair_data, name='FAKE')}]} self.assertEqual(res_dict, response) def test_keypair_create(self): body = {'keypair': {'name': 'create_test'}} req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 200) res_dict = jsonutils.loads(res.body) self.assertTrue(len(res_dict['keypair']['fingerprint']) > 0) self.assertTrue(len(res_dict['keypair']['private_key']) > 0) def test_keypair_create_with_empty_name(self): body = {'keypair': {'name': ''}} req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual( 'Keypair data is invalid: ' 'Keypair name must be between 1 and 255 characters long', res_dict['badRequest']['message']) def test_keypair_create_with_name_too_long(self): body = { 'keypair': { 'name': 'a' * 256 } } req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual( 'Keypair data is invalid: ' 'Keypair name must be between 1 and 255 characters long', res_dict['badRequest']['message']) def test_keypair_create_with_non_alphanumeric_name(self): body = { 'keypair': { 'name': 'test/keypair' } } req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) res_dict = jsonutils.loads(res.body) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual( "Keypair data is invalid: " "Keypair name contains unsafe characters", res_dict['badRequest']['message']) def test_keypair_import(self): body = { 'keypair': { 'name': 'create_test', 'public_key': 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBYIznA' 'x9D7118Q1VKGpXy2HDiKyUTM8XcUuhQpo0srqb9rboUp4' 'a9NmCwpWpeElDLuva707GOUnfaBAvHBwsRXyxHJjRaI6Y' 'Qj2oLJwqvaSaWUbyT1vtryRqy6J3TecN0WINY71f4uymi' 'MZP0wby4bKBcYnac8KiCIlvkEl0ETjkOGUq8OyWRmn7lj' 'j5SESEUdBP0JnuTFKddWTU/wD6wydeJaUhBTqOlHn0kX1' 'GyqoNTE1UEhcM5ZRWgfUZfTjVyDF2kGj3vJLCJtJ8LoGc' 'j7YaN4uPg1rBle+izwE/tLonRrds+cev8p6krSSrxWOwB' 'bHkXa6OciiJDvkRzJXzf', }, } req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 200) # FIXME(ja): sholud we check that public_key was sent to create? res_dict = jsonutils.loads(res.body) self.assertTrue(len(res_dict['keypair']['fingerprint']) > 0) self.assertNotIn('private_key', res_dict['keypair']) def test_keypair_import_quota_limit(self): def fake_quotas_count(self, context, resource, *args, **kwargs): return 100 self.stubs.Set(QUOTAS, "count", fake_quotas_count) body = { 'keypair': { 'name': 'create_test', 'public_key': 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBYIznA' 'x9D7118Q1VKGpXy2HDiKyUTM8XcUuhQpo0srqb9rboUp4' 'a9NmCwpWpeElDLuva707GOUnfaBAvHBwsRXyxHJjRaI6Y' 'Qj2oLJwqvaSaWUbyT1vtryRqy6J3TecN0WINY71f4uymi' 'MZP0wby4bKBcYnac8KiCIlvkEl0ETjkOGUq8OyWRmn7lj' 'j5SESEUdBP0JnuTFKddWTU/wD6wydeJaUhBTqOlHn0kX1' 'GyqoNTE1UEhcM5ZRWgfUZfTjVyDF2kGj3vJLCJtJ8LoGc' 'j7YaN4uPg1rBle+izwE/tLonRrds+cev8p6krSSrxWOwB' 'bHkXa6OciiJDvkRzJXzf', }, } req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 413) res_dict = jsonutils.loads(res.body) self.assertEqual( "Quota exceeded, too many key pairs.", res_dict['overLimit']['message']) def test_keypair_create_quota_limit(self): def fake_quotas_count(self, context, resource, *args, **kwargs): return 100 self.stubs.Set(QUOTAS, "count", fake_quotas_count) body = { 'keypair': { 'name': 'create_test', }, } req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 413) res_dict = jsonutils.loads(res.body) self.assertEqual( "Quota exceeded, too many key pairs.", res_dict['overLimit']['message']) def test_keypair_create_duplicate(self): self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate) body = {'keypair': {'name': 'create_duplicate'}} req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 409) res_dict = jsonutils.loads(res.body) self.assertEqual( "Key pair 'create_duplicate' already exists.", res_dict['conflictingRequest']['message']) def test_keypair_import_bad_key(self): body = { 'keypair': { 'name': 'create_test', 'public_key': 'ssh-what negative', }, } req = webob.Request.blank('/v2/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 400) res_dict = jsonutils.loads(res.body) self.assertEqual( 'Keypair data is invalid: failed to generate fingerprint', res_dict['badRequest']['message']) def test_keypair_delete(self): req = webob.Request.blank('/v2/fake/os-keypairs/FAKE') req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 202) def test_keypair_get_keypair_not_found(self): req = webob.Request.blank('/v2/fake/os-keypairs/DOESNOTEXIST') res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_keypair_delete_not_found(self): def db_key_pair_get_not_found(context, user_id, name): raise exception.KeypairNotFound(user_id=user_id, name=name) self.stubs.Set(db, "key_pair_get", db_key_pair_get_not_found) req = webob.Request.blank('/v2/fake/os-keypairs/WHAT') res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_keypair_show(self): def _db_key_pair_get(context, user_id, name): return dict(test_keypair.fake_keypair, name='foo', public_key='XXX', fingerprint='YYY') self.stubs.Set(db, "key_pair_get", _db_key_pair_get) req = webob.Request.blank('/v2/fake/os-keypairs/FAKE') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) res_dict = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual('foo', res_dict['keypair']['name']) self.assertEqual('XXX', res_dict['keypair']['public_key']) self.assertEqual('YYY', res_dict['keypair']['fingerprint']) def test_keypair_show_not_found(self): def _db_key_pair_get(context, user_id, name): raise exception.KeypairNotFound(user_id=user_id, name=name) self.stubs.Set(db, "key_pair_get", _db_key_pair_get) req = webob.Request.blank('/v2/fake/os-keypairs/FAKE') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_show_server(self): self.stubs.Set(db, 'instance_get', fakes.fake_instance_get()) self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get()) req = webob.Request.blank('/v2/fake/servers/1') req.headers['Content-Type'] = 'application/json' response = req.get_response(fakes.wsgi_app(init_only=('servers',))) self.assertEqual(response.status_int, 200) res_dict = jsonutils.loads(response.body) self.assertIn('key_name', res_dict['server']) self.assertEqual(res_dict['server']['key_name'], '') def test_detail_servers(self): self.stubs.Set(db, 'instance_get_all_by_filters', fakes.fake_instance_get_all_by_filters()) req = fakes.HTTPRequest.blank('/v2/fake/servers/detail') res = req.get_response(fakes.wsgi_app(init_only=('servers',))) server_dicts = jsonutils.loads(res.body)['servers'] self.assertEqual(len(server_dicts), 5) for server_dict in server_dicts: self.assertIn('key_name', server_dict) self.assertEqual(server_dict['key_name'], '') def test_keypair_create_with_invalid_keypair_body(self): body = {'alpha': {'name': 'create_test'}} req = webob.Request.blank('/v1.1/fake/os-keypairs') req.method = 'POST' req.body = jsonutils.dumps(body) req.headers['Content-Type'] = 'application/json' res = req.get_response(self.app) res_dict = jsonutils.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['message'], "Invalid request body") class KeypairPolicyTest(test.TestCase): def setUp(self): super(KeypairPolicyTest, self).setUp() self.KeyPairController = keypairs.KeypairController() def _db_key_pair_get(context, user_id, name): return dict(test_keypair.fake_keypair, name='foo', public_key='XXX', fingerprint='YYY') self.stubs.Set(db, "key_pair_get", _db_key_pair_get) self.stubs.Set(db, "key_pair_get_all_by_user", db_key_pair_get_all_by_user) self.stubs.Set(db, "key_pair_create", db_key_pair_create) self.stubs.Set(db, "key_pair_destroy", db_key_pair_destroy) def test_keypair_list_fail_policy(self): rules = policy.Rules({'compute_extension:keypairs:index': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs') self.assertRaises(exception.NotAuthorized, self.KeyPairController.index, req) def test_keypair_list_pass_policy(self): rules = policy.Rules({'compute_extension:keypairs:index': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs') res = self.KeyPairController.index(req) self.assertIn('keypairs', res) def test_keypair_show_fail_policy(self): rules = policy.Rules({'compute_extension:keypairs:show': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs/FAKE') self.assertRaises(exception.NotAuthorized, self.KeyPairController.show, req, 'FAKE') def test_keypair_show_pass_policy(self): rules = policy.Rules({'compute_extension:keypairs:show': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs/FAKE') res = self.KeyPairController.show(req, 'FAKE') self.assertIn('keypair', res) def test_keypair_create_fail_policy(self): rules = policy.Rules({'compute_extension:keypairs:create': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs') req.method = 'POST' self.assertRaises(exception.NotAuthorized, self.KeyPairController.create, req, {}) def test_keypair_create_pass_policy(self): body = {'keypair': {'name': 'create_test'}} rules = policy.Rules({'compute_extension:keypairs:create': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs') req.method = 'POST' res = self.KeyPairController.create(req, body) self.assertIn('keypair', res) def test_keypair_delete_fail_policy(self): rules = policy.Rules({'compute_extension:keypairs:delete': policy.parse_rule('role:admin')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs/FAKE') req.method = 'DELETE' self.assertRaises(exception.NotAuthorized, self.KeyPairController.delete, req, 'FAKE') def test_keypair_delete_pass_policy(self): rules = policy.Rules({'compute_extension:keypairs:delete': policy.parse_rule('')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank('/v2/fake/os-keypairs/FAKE') req.method = 'DELETE' res = self.KeyPairController.delete(req, 'FAKE') self.assertEqual(res.status_int, 202) class KeypairsXMLSerializerTest(test.TestCase): def setUp(self): super(KeypairsXMLSerializerTest, self).setUp() self.deserializer = wsgi.XMLDeserializer() def test_default_serializer(self): exemplar = dict(keypair=dict( public_key='fake_public_key', private_key='fake_private_key', fingerprint='fake_fingerprint', user_id='fake_user_id', name='fake_key_name')) serializer = keypairs.KeypairTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('keypair', tree.tag) for child in tree: self.assertIn(child.tag, exemplar['keypair']) self.assertEqual(child.text, exemplar['keypair'][child.tag]) def test_index_serializer(self): exemplar = dict(keypairs=[ dict(keypair=dict( name='key1_name', public_key='key1_key', fingerprint='key1_fingerprint')), dict(keypair=dict( name='key2_name', public_key='key2_key', fingerprint='key2_fingerprint'))]) serializer = keypairs.KeypairsTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('keypairs', tree.tag) self.assertEqual(len(exemplar['keypairs']), len(tree)) for idx, keypair in enumerate(tree): self.assertEqual('keypair', keypair.tag) kp_data = exemplar['keypairs'][idx]['keypair'] for child in keypair: self.assertIn(child.tag, kp_data) self.assertEqual(child.text, kp_data[child.tag]) def test_deserializer(self): exemplar = dict(keypair=dict( name='key_name', public_key='public_key')) intext = ("\n" 'key_name' 'public_key') result = self.deserializer.deserialize(intext)['body'] self.assertEqual(result, exemplar) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_deferred_delete.py0000664000175400017540000001155512323721477030415 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.api.openstack.compute.contrib import deferred_delete from nova.compute import api as compute_api from nova import context from nova import exception from nova import test class FakeRequest(object): def __init__(self, context): self.environ = {'nova.context': context} class DeferredDeleteExtensionTest(test.NoDBTestCase): def setUp(self): super(DeferredDeleteExtensionTest, self).setUp() self.extension = deferred_delete.DeferredDeleteController() self.fake_input_dict = {} self.fake_uuid = 'fake_uuid' self.fake_context = context.RequestContext('fake', 'fake') self.fake_req = FakeRequest(self.fake_context) def test_force_delete(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'force_delete') fake_instance = 'fake_instance' compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn(fake_instance) compute_api.API.force_delete(self.fake_context, fake_instance) self.mox.ReplayAll() res = self.extension._force_delete(self.fake_req, self.fake_uuid, self.fake_input_dict) self.assertEqual(res.status_int, 202) def test_force_delete_instance_not_found(self): self.mox.StubOutWithMock(compute_api.API, 'get') compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndRaise( exception.InstanceNotFound(instance_id='instance-0000')) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPNotFound, self.extension._force_delete, self.fake_req, self.fake_uuid, self.fake_input_dict) def test_force_delete_raises_conflict_on_invalid_state(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'force_delete') fake_instance = 'fake_instance' compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn(fake_instance) exc = exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') compute_api.API.force_delete(self.fake_context, fake_instance)\ .AndRaise(exc) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPConflict, self.extension._force_delete, self.fake_req, self.fake_uuid, self.fake_input_dict) def test_restore(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'restore') fake_instance = 'fake_instance' compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn(fake_instance) compute_api.API.restore(self.fake_context, fake_instance) self.mox.ReplayAll() res = self.extension._restore(self.fake_req, self.fake_uuid, self.fake_input_dict) self.assertEqual(res.status_int, 202) def test_restore_raises_conflict_on_invalid_state(self): self.mox.StubOutWithMock(compute_api.API, 'get') self.mox.StubOutWithMock(compute_api.API, 'restore') fake_instance = 'fake_instance' exc = exception.InstanceInvalidState(attr='fake_attr', state='fake_state', method='fake_method', instance_uuid='fake') compute_api.API.get(self.fake_context, self.fake_uuid, expected_attrs=None, want_objects=True).AndReturn(fake_instance) compute_api.API.restore(self.fake_context, fake_instance).AndRaise( exc) self.mox.ReplayAll() self.assertRaises(webob.exc.HTTPConflict, self.extension._restore, self.fake_req, self.fake_uuid, self.fake_input_dict) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_baremetal_nodes.py0000664000175400017540000003452012323721477030434 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 NTT DOCOMO, INC. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from webob import exc from nova.api.openstack.compute.contrib import baremetal_nodes from nova.api.openstack import extensions from nova import context from nova import exception from nova import test from nova.virt.baremetal import db class FakeRequest(object): def __init__(self, context): self.environ = {"nova.context": context} def fake_node(**updates): node = { 'id': 1, 'service_host': "host", 'cpus': 8, 'memory_mb': 8192, 'local_gb': 128, 'pm_address': "10.1.2.3", 'pm_user': "pm_user", 'pm_password': "pm_pass", 'terminal_port': 8000, 'interfaces': [], 'instance_uuid': 'fake-instance-uuid', } if updates: node.update(updates) return node def fake_node_ext_status(**updates): node = fake_node(uuid='fake-uuid', task_state='fake-task-state', updated_at='fake-updated-at', pxe_config_path='fake-pxe-config-path') if updates: node.update(updates) return node def fake_interface(**updates): interface = { 'id': 1, 'address': '11:11:11:11:11:11', 'datapath_id': 2, 'port_no': 3, } if updates: interface.update(updates) return interface class BareMetalNodesTest(test.NoDBTestCase): def setUp(self): super(BareMetalNodesTest, self).setUp() self.ext_mgr = self.mox.CreateMock(extensions.ExtensionManager) self.context = context.get_admin_context() self.controller = baremetal_nodes.BareMetalNodeController(self.ext_mgr) self.request = FakeRequest(self.context) def _test_create(self, node, ext_status=False): response = node.copy() del response['pm_password'] response['instance_uuid'] = None self.mox.StubOutWithMock(db, 'bm_node_create') db.bm_node_create(self.context, node).AndReturn(response) self.ext_mgr.is_loaded('os-baremetal-ext-status').AndReturn(ext_status) self.mox.ReplayAll() res_dict = self.controller.create(self.request, {'node': node}) self.assertEqual({'node': response}, res_dict) def _test_show(self, node, ext_status=False): interfaces = [fake_interface(id=1, address='11:11:11:11:11:11'), fake_interface(id=2, address='22:22:22:22:22:22'), ] node.update(interfaces=interfaces) response = node.copy() del response['pm_password'] self.mox.StubOutWithMock(db, 'bm_node_get') self.mox.StubOutWithMock(db, 'bm_interface_get_all_by_bm_node_id') db.bm_node_get(self.context, node['id']).AndReturn(node) db.bm_interface_get_all_by_bm_node_id(self.context, node['id']).\ AndReturn(interfaces) self.ext_mgr.is_loaded('os-baremetal-ext-status').AndReturn(ext_status) self.mox.ReplayAll() res_dict = self.controller.show(self.request, node['id']) self.assertEqual({'node': response}, res_dict) self.assertEqual(2, len(res_dict['node']['interfaces'])) def _test_show_no_interfaces(self, ext_status=False): node_id = 1 node = {'id': node_id} self.mox.StubOutWithMock(db, 'bm_node_get') self.mox.StubOutWithMock(db, 'bm_interface_get_all_by_bm_node_id') db.bm_node_get(self.context, node_id).AndReturn(node) db.bm_interface_get_all_by_bm_node_id(self.context, node_id).\ AndRaise(exception.NodeNotFound(node_id=node_id)) self.ext_mgr.is_loaded('os-baremetal-ext-status').AndReturn(ext_status) self.mox.ReplayAll() res_dict = self.controller.show(self.request, node_id) self.assertEqual(node_id, res_dict['node']['id']) self.assertEqual(0, len(res_dict['node']['interfaces'])) def _test_index(self, ext_status=False): nodes = [{'id': 1}, {'id': 2}, ] interfaces = [{'id': 1, 'address': '11:11:11:11:11:11'}, {'id': 2, 'address': '22:22:22:22:22:22'}, ] self.mox.StubOutWithMock(db, 'bm_node_get_all') self.mox.StubOutWithMock(db, 'bm_interface_get_all_by_bm_node_id') db.bm_node_get_all(self.context).AndReturn(nodes) db.bm_interface_get_all_by_bm_node_id(self.context, 1).\ AndRaise(exception.NodeNotFound(node_id=1)) for n in nodes: self.ext_mgr.is_loaded('os-baremetal-ext-status').\ AndReturn(ext_status) db.bm_interface_get_all_by_bm_node_id(self.context, 2).\ AndReturn(interfaces) self.mox.ReplayAll() res_dict = self.controller.index(self.request) self.assertEqual(2, len(res_dict['nodes'])) self.assertEqual([], res_dict['nodes'][0]['interfaces']) self.assertEqual(2, len(res_dict['nodes'][1]['interfaces'])) def test_create(self): node = fake_node(id=100) self._test_create(node) def test_create_ext_status(self): node = fake_node_ext_status(id=100) self._test_create(node, ext_status=True) def test_create_with_prov_mac_address(self): node = { 'service_host': "host", 'cpus': 8, 'memory_mb': 8192, 'local_gb': 128, 'pm_address': "10.1.2.3", 'pm_user': "pm_user", 'pm_password': "pm_pass", 'terminal_port': 8000, 'interfaces': [], } intf = { 'address': '1a:B2:3C:4d:e5:6f', 'datapath_id': None, 'id': None, 'port_no': None, } request = node.copy() request['prov_mac_address'] = intf['address'] db_node = node.copy() db_node['id'] = 100 response = node.copy() response.update(id=db_node['id'], instance_uuid=None, interfaces=[intf]) del response['pm_password'] self.mox.StubOutWithMock(db, 'bm_node_create') self.mox.StubOutWithMock(db, 'bm_interface_create') self.mox.StubOutWithMock(db, 'bm_interface_get') db.bm_node_create(self.context, node).AndReturn(db_node) self.ext_mgr.is_loaded('os-baremetal-ext-status').AndReturn(False) db.bm_interface_create(self.context, bm_node_id=db_node['id'], address=intf['address'], datapath_id=intf['datapath_id'], port_no=intf['port_no']).AndReturn(1000) db.bm_interface_get(self.context, 1000).AndReturn(intf) self.mox.ReplayAll() res_dict = self.controller.create(self.request, {'node': request}) self.assertEqual({'node': response}, res_dict) def test_create_with_invalid_prov_mac_address(self): node = { 'service_host': "host", 'cpus': 8, 'memory_mb': 8192, 'local_gb': 128, 'pm_address': "10.1.2.3", 'pm_user': "pm_user", 'pm_password': "pm_pass", 'terminal_port': 8000, 'prov_mac_address': 'INVALID!!', } self.assertRaises(exc.HTTPBadRequest, self.controller.create, self.request, {'node': node}) def test_delete(self): self.mox.StubOutWithMock(db, 'bm_node_destroy') db.bm_node_destroy(self.context, 1) self.mox.ReplayAll() self.controller.delete(self.request, 1) def test_delete_node_not_found(self): self.mox.StubOutWithMock(db, 'bm_node_destroy') db.bm_node_destroy(self.context, 1).\ AndRaise(exception.NodeNotFound(node_id=1)) self.mox.ReplayAll() self.assertRaises( exc.HTTPNotFound, self.controller.delete, self.request, 1) def test_index(self): self._test_index() def test_index_ext_status(self): self._test_index(ext_status=True) def test_show(self): node = fake_node(id=1) self._test_show(node) def test_show_ext_status(self): node = fake_node_ext_status(id=1) self._test_show(node, ext_status=True) def test_show_no_interfaces(self): self._test_show_no_interfaces() def test_show_no_interfaces_ext_status(self): self._test_show_no_interfaces(ext_status=True) def test_add_interface(self): node_id = 1 address = '11:22:33:ab:cd:ef' body = {'add_interface': {'address': address}} self.mox.StubOutWithMock(db, 'bm_node_get') self.mox.StubOutWithMock(db, 'bm_interface_create') self.mox.StubOutWithMock(db, 'bm_interface_get') db.bm_node_get(self.context, node_id) db.bm_interface_create(self.context, bm_node_id=node_id, address=address, datapath_id=None, port_no=None).\ AndReturn(12345) db.bm_interface_get(self.context, 12345).\ AndReturn({'id': 12345, 'address': address}) self.mox.ReplayAll() res_dict = self.controller._add_interface(self.request, node_id, body) self.assertEqual(12345, res_dict['interface']['id']) self.assertEqual(address, res_dict['interface']['address']) def test_add_interface_invalid_address(self): node_id = 1 body = {'add_interface': {'address': ''}} self.mox.StubOutWithMock(db, 'bm_node_get') db.bm_node_get(self.context, node_id) self.mox.ReplayAll() self.assertRaises(exc.HTTPBadRequest, self.controller._add_interface, self.request, node_id, body) def test_remove_interface(self): node_id = 1 interfaces = [{'id': 1}, {'id': 2}, {'id': 3}, ] body = {'remove_interface': {'id': 2}} self.mox.StubOutWithMock(db, 'bm_node_get') self.mox.StubOutWithMock(db, 'bm_interface_get_all_by_bm_node_id') self.mox.StubOutWithMock(db, 'bm_interface_destroy') db.bm_node_get(self.context, node_id) db.bm_interface_get_all_by_bm_node_id(self.context, node_id).\ AndReturn(interfaces) db.bm_interface_destroy(self.context, 2) self.mox.ReplayAll() self.controller._remove_interface(self.request, node_id, body) def test_remove_interface_by_address(self): node_id = 1 interfaces = [{'id': 1, 'address': '11:11:11:11:11:11'}, {'id': 2, 'address': '22:22:22:22:22:22'}, {'id': 3, 'address': '33:33:33:33:33:33'}, ] self.mox.StubOutWithMock(db, 'bm_node_get') self.mox.StubOutWithMock(db, 'bm_interface_get_all_by_bm_node_id') self.mox.StubOutWithMock(db, 'bm_interface_destroy') db.bm_node_get(self.context, node_id) db.bm_interface_get_all_by_bm_node_id(self.context, node_id).\ AndReturn(interfaces) db.bm_interface_destroy(self.context, 2) self.mox.ReplayAll() body = {'remove_interface': {'address': '22:22:22:22:22:22'}} self.controller._remove_interface(self.request, node_id, body) def test_remove_interface_no_id_no_address(self): node_id = 1 self.mox.StubOutWithMock(db, 'bm_node_get') db.bm_node_get(self.context, node_id) self.mox.ReplayAll() body = {'remove_interface': {}} self.assertRaises(exc.HTTPBadRequest, self.controller._remove_interface, self.request, node_id, body) def test_add_interface_node_not_found(self): node_id = 1 self.mox.StubOutWithMock(db, 'bm_node_get') db.bm_node_get(self.context, node_id).\ AndRaise(exception.NodeNotFound(node_id=node_id)) self.mox.ReplayAll() body = {'add_interface': {'address': '11:11:11:11:11:11'}} self.assertRaises(exc.HTTPNotFound, self.controller._add_interface, self.request, node_id, body) def test_remove_interface_node_not_found(self): node_id = 1 self.mox.StubOutWithMock(db, 'bm_node_get') db.bm_node_get(self.context, node_id).\ AndRaise(exception.NodeNotFound(node_id=node_id)) self.mox.ReplayAll() body = {'remove_interface': {'address': '11:11:11:11:11:11'}} self.assertRaises(exc.HTTPNotFound, self.controller._remove_interface, self.request, node_id, body) def test_is_valid_mac(self): self.assertFalse(baremetal_nodes.is_valid_mac(None)) self.assertTrue(baremetal_nodes.is_valid_mac("52:54:00:cf:2d:31")) self.assertTrue(baremetal_nodes.is_valid_mac(u"52:54:00:cf:2d:31")) self.assertFalse(baremetal_nodes.is_valid_mac("127.0.0.1")) self.assertFalse(baremetal_nodes.is_valid_mac("not:a:mac:address")) self.assertFalse(baremetal_nodes.is_valid_mac("52-54-00-cf-2d-31")) self.assertFalse(baremetal_nodes.is_valid_mac("5254.00cf.2d31")) self.assertFalse(baremetal_nodes.is_valid_mac("52:54:0:cf:2d:31")) self.assertFalse(baremetal_nodes.is_valid_mac("aa bb cc dd ee ff")) self.assertTrue(baremetal_nodes.is_valid_mac("AA:BB:CC:DD:EE:FF")) self.assertFalse(baremetal_nodes.is_valid_mac("AA BB CC DD EE FF")) self.assertFalse(baremetal_nodes.is_valid_mac("AA-BB-CC-DD-EE-FF")) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_floating_ips.py0000664000175400017540000007342512323721477027775 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid from lxml import etree import webob from nova.api.openstack.compute.contrib import floating_ips from nova.api.openstack import extensions from nova import compute from nova.compute import utils as compute_utils from nova import context from nova import db from nova import exception from nova import network from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_network FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' def network_api_get_floating_ip(self, context, id): return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova', 'fixed_ip_id': None} def network_api_get_floating_ip_by_address(self, context, address): return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova', 'fixed_ip_id': 10} def network_api_get_floating_ips_by_project(self, context): return [{'id': 1, 'address': '10.10.10.10', 'pool': 'nova', 'fixed_ip': {'address': '10.0.0.1', 'instance': {'uuid': FAKE_UUID}}}, {'id': 2, 'pool': 'nova', 'interface': 'eth0', 'address': '10.10.10.11', 'fixed_ip': None}] def compute_api_get(self, context, instance_id, expected_attrs=None, want_objects=False): return dict(uuid=FAKE_UUID, id=instance_id, instance_type_id=1, host='bob') def network_api_allocate(self, context): return '10.10.10.10' def network_api_release(self, context, address): pass def compute_api_associate(self, context, instance_id, address): pass def network_api_associate(self, context, floating_address, fixed_address): pass def network_api_disassociate(self, context, instance, floating_address): pass def fake_instance_get(context, instance_id): return { "id": 1, "uuid": uuid.uuid4(), "name": 'fake', "user_id": 'fakeuser', "project_id": '123'} def stub_nw_info(stubs): def get_nw_info_for_instance(instance): return fake_network.fake_get_instance_nw_info(stubs) return get_nw_info_for_instance def get_instance_by_floating_ip_addr(self, context, address): return None class FloatingIpTest(test.TestCase): floating_ip = "10.10.10.10" floating_ip_2 = "10.10.10.11" def _create_floating_ips(self, floating_ips=None): """Create a floating ip object.""" if floating_ips is None: floating_ips = [self.floating_ip] elif not isinstance(floating_ips, (list, tuple)): floating_ips = [floating_ips] def make_ip_dict(ip): """Shortcut for creating floating ip dict.""" return dict_ = {'pool': 'nova', 'host': 'fake_host'} return db.floating_ip_bulk_create( self.context, [dict(address=ip, **dict_) for ip in floating_ips], ) def _delete_floating_ip(self): db.floating_ip_destroy(self.context, self.floating_ip) def setUp(self): super(FloatingIpTest, self).setUp() self.stubs.Set(compute.api.API, "get", compute_api_get) self.stubs.Set(network.api.API, "get_floating_ip", network_api_get_floating_ip) self.stubs.Set(network.api.API, "get_floating_ip_by_address", network_api_get_floating_ip_by_address) self.stubs.Set(network.api.API, "get_floating_ips_by_project", network_api_get_floating_ips_by_project) self.stubs.Set(network.api.API, "release_floating_ip", network_api_release) self.stubs.Set(network.api.API, "disassociate_floating_ip", network_api_disassociate) self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) self.stubs.Set(compute_utils, "get_nw_info_for_instance", stub_nw_info(self.stubs)) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Floating_ips']) fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) self.stubs.Set(db, 'instance_get', fake_instance_get) self.context = context.get_admin_context() self._create_floating_ips() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = floating_ips.FloatingIPController() self.manager = floating_ips.FloatingIPActionController(self.ext_mgr) def tearDown(self): self._delete_floating_ip() super(FloatingIpTest, self).tearDown() def test_translate_floating_ip_view(self): floating_ip_address = self.floating_ip floating_ip = db.floating_ip_get_by_address(self.context, floating_ip_address) # NOTE(vish): network_get uses the id not the address floating_ip = db.floating_ip_get(self.context, floating_ip['id']) self.controller._normalize_ip(floating_ip) view = floating_ips._translate_floating_ip_view(floating_ip) self.assertIn('floating_ip', view) self.assertTrue(view['floating_ip']['id']) self.assertEqual(view['floating_ip']['ip'], self.floating_ip) self.assertIsNone(view['floating_ip']['fixed_ip']) self.assertIsNone(view['floating_ip']['instance_id']) def test_translate_floating_ip_view_dict(self): floating_ip = {'id': 0, 'address': '10.0.0.10', 'pool': 'nova', 'fixed_ip': None} self.controller._normalize_ip(floating_ip) view = floating_ips._translate_floating_ip_view(floating_ip) self.assertIn('floating_ip', view) def test_floating_ips_list(self): req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips') res_dict = self.controller.index(req) response = {'floating_ips': [{'instance_id': FAKE_UUID, 'ip': '10.10.10.10', 'pool': 'nova', 'fixed_ip': '10.0.0.1', 'id': 1}, {'instance_id': None, 'ip': '10.10.10.11', 'pool': 'nova', 'fixed_ip': None, 'id': 2}]} self.assertEqual(res_dict, response) def test_floating_ip_release_nonexisting(self): def fake_get_floating_ip(*args, **kwargs): raise exception.FloatingIpNotFound(id=id) self.stubs.Set(network.api.API, "get_floating_ip", fake_get_floating_ip) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips/9876') req.method = 'DELETE' res = req.get_response(fakes.wsgi_app(init_only=('os-floating-ips',))) self.assertEqual(res.status_int, 404) expected_msg = ('{"itemNotFound": {"message": "Floating ip not found ' 'for id 9876", "code": 404}}') self.assertEqual(res.body, expected_msg) def test_floating_ip_release_race_cond(self): def fake_get_floating_ip(*args, **kwargs): return {'fixed_ip_id': 1, 'address': self.floating_ip} def fake_get_instance_by_floating_ip_addr(*args, **kwargs): return 'test-inst' def fake_disassociate_floating_ip(*args, **kwargs): raise exception.FloatingIpNotAssociated(args[3]) self.stubs.Set(network.api.API, "get_floating_ip", fake_get_floating_ip) self.stubs.Set(floating_ips, "get_instance_by_floating_ip_addr", fake_get_instance_by_floating_ip_addr) self.stubs.Set(floating_ips, "disassociate_floating_ip", fake_disassociate_floating_ip) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips/1') req.method = 'DELETE' res = req.get_response(fakes.wsgi_app(init_only=('os-floating-ips',))) self.assertEqual(res.status_int, 202) def test_floating_ip_show(self): req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips/1') res_dict = self.controller.show(req, 1) self.assertEqual(res_dict['floating_ip']['id'], 1) self.assertEqual(res_dict['floating_ip']['ip'], '10.10.10.10') self.assertIsNone(res_dict['floating_ip']['instance_id']) def test_floating_ip_show_not_found(self): def fake_get_floating_ip(*args, **kwargs): raise exception.FloatingIpNotFound(id='fake') self.stubs.Set(network.api.API, "get_floating_ip", fake_get_floating_ip) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips/9876') res = req.get_response(fakes.wsgi_app(init_only=('os-floating-ips',))) self.assertEqual(res.status_int, 404) expected_msg = ('{"itemNotFound": {"message": "Floating ip not found ' 'for id 9876", "code": 404}}') self.assertEqual(res.body, expected_msg) def test_show_associated_floating_ip(self): def get_floating_ip(self, context, id): return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova', 'fixed_ip': {'address': '10.0.0.1', 'instance': {'uuid': FAKE_UUID}}} self.stubs.Set(network.api.API, "get_floating_ip", get_floating_ip) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips/1') res_dict = self.controller.show(req, 1) self.assertEqual(res_dict['floating_ip']['id'], 1) self.assertEqual(res_dict['floating_ip']['ip'], '10.10.10.10') self.assertEqual(res_dict['floating_ip']['fixed_ip'], '10.0.0.1') self.assertEqual(res_dict['floating_ip']['instance_id'], FAKE_UUID) def test_recreation_of_floating_ip(self): self._delete_floating_ip() self._create_floating_ips() def test_floating_ip_in_bulk_creation(self): self._delete_floating_ip() self._create_floating_ips([self.floating_ip, self.floating_ip_2]) all_ips = db.floating_ip_get_all(self.context) ip_list = [ip['address'] for ip in all_ips] self.assertIn(self.floating_ip, ip_list) self.assertIn(self.floating_ip_2, ip_list) def test_fail_floating_ip_in_bulk_creation(self): self.assertRaises(exception.FloatingIpExists, self._create_floating_ips, [self.floating_ip, self.floating_ip_2]) all_ips = db.floating_ip_get_all(self.context) ip_list = [ip['address'] for ip in all_ips] self.assertIn(self.floating_ip, ip_list) self.assertNotIn(self.floating_ip_2, ip_list) def test_floating_ip_allocate_no_free_ips(self): def fake_allocate(*args, **kwargs): raise exception.NoMoreFloatingIps() self.stubs.Set(network.api.API, "allocate_floating_ip", fake_allocate) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips') ex = self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req) self.assertIn('No more floating ips', ex.explanation) def test_floating_ip_allocate_no_free_ips_pool(self): def fake_allocate(*args, **kwargs): raise exception.NoMoreFloatingIps() self.stubs.Set(network.api.API, "allocate_floating_ip", fake_allocate) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips') ex = self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, {'pool': 'non_existent_pool'}) self.assertIn('No more floating ips in pool non_existent_pool', ex.explanation) def test_floating_ip_allocate(self): def fake1(*args, **kwargs): pass def fake2(*args, **kwargs): return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova'} self.stubs.Set(network.api.API, "allocate_floating_ip", fake1) self.stubs.Set(network.api.API, "get_floating_ip_by_address", fake2) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips') res_dict = self.controller.create(req) ip = res_dict['floating_ip'] expected = { "id": 1, "instance_id": None, "ip": "10.10.10.10", "fixed_ip": None, "pool": 'nova'} self.assertEqual(ip, expected) def test_floating_ip_release(self): req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips/1') self.controller.delete(req, 1) def test_floating_ip_associate(self): fixed_address = '192.168.1.100' def fake_associate_floating_ip(*args, **kwargs): self.assertEqual(fixed_address, kwargs['fixed_address']) self.stubs.Set(network.api.API, "associate_floating_ip", fake_associate_floating_ip) body = dict(addFloatingIp=dict(address=self.floating_ip)) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') rsp = self.manager._add_floating_ip(req, 'test_inst', body) self.assertTrue(rsp.status_int == 202) def test_floating_ip_associate_invalid_instance(self): fixed_address = '192.168.1.100' def fake_get(self, context, id, expected_attrs=None, want_objects=False): raise exception.InstanceNotFound(instance_id=id) self.stubs.Set(compute.api.API, "get", fake_get) body = dict(addFloatingIp=dict(address=self.floating_ip)) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._add_floating_ip, req, 'test_inst', body) def test_not_extended_floating_ip_associate_fixed(self): # Check that fixed_address is ignored if os-extended-floating-ips # is not loaded fixed_address_requested = '192.168.1.101' fixed_address_allocated = '192.168.1.100' def fake_associate_floating_ip(*args, **kwargs): self.assertEqual(fixed_address_allocated, kwargs['fixed_address']) self.stubs.Set(network.api.API, "associate_floating_ip", fake_associate_floating_ip) body = dict(addFloatingIp=dict(address=self.floating_ip, fixed_address=fixed_address_requested)) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') rsp = self.manager._add_floating_ip(req, 'test_inst', body) self.assertTrue(rsp.status_int == 202) def test_associate_not_allocated_floating_ip_to_instance(self): def fake_associate_floating_ip(self, context, instance, floating_address, fixed_address, affect_auto_assigned=False): raise exception.NotAuthorized() self.stubs.Set(network.api.API, "associate_floating_ip", fake_associate_floating_ip) floating_ip = '10.10.10.11' body = dict(addFloatingIp=dict(address=floating_ip)) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(fakes.wsgi_app(init_only=('servers',))) res_dict = jsonutils.loads(resp.body) self.assertEqual(resp.status_int, 404) self.assertEqual(res_dict['itemNotFound']['message'], "floating ip not found") def test_floating_ip_disassociate(self): def get_instance_by_floating_ip_addr(self, context, address): if address == '10.10.10.10': return 'test_inst' self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) body = dict(removeFloatingIp=dict(address='10.10.10.10')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') rsp = self.manager._remove_floating_ip(req, 'test_inst', body) self.assertTrue(rsp.status_int == 202) def test_floating_ip_disassociate_missing(self): body = dict(removeFloatingIp=dict(address='10.10.10.10')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.manager._remove_floating_ip, req, 'test_inst', body) def test_floating_ip_associate_non_existent_ip(self): def fake_network_api_associate(self, context, instance, floating_address=None, fixed_address=None): floating_ips = ["10.10.10.10", "10.10.10.11"] if floating_address not in floating_ips: raise exception.FloatingIpNotFoundForAddress( address=floating_address) self.stubs.Set(network.api.API, "associate_floating_ip", fake_network_api_associate) body = dict(addFloatingIp=dict(address='1.1.1.1')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._add_floating_ip, req, 'test_inst', body) def test_floating_ip_disassociate_non_existent_ip(self): def network_api_get_floating_ip_by_address(self, context, floating_address): floating_ips = ["10.10.10.10", "10.10.10.11"] if floating_address not in floating_ips: raise exception.FloatingIpNotFoundForAddress( address=floating_address) self.stubs.Set(network.api.API, "get_floating_ip_by_address", network_api_get_floating_ip_by_address) body = dict(removeFloatingIp=dict(address='1.1.1.1')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPNotFound, self.manager._remove_floating_ip, req, 'test_inst', body) def test_floating_ip_disassociate_wrong_instance_uuid(self): def get_instance_by_floating_ip_addr(self, context, address): if address == '10.10.10.10': return 'test_inst' self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) wrong_uuid = 'aaaaaaaa-ffff-ffff-ffff-aaaaaaaaaaaa' body = dict(removeFloatingIp=dict(address='10.10.10.10')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.manager._remove_floating_ip, req, wrong_uuid, body) def test_floating_ip_disassociate_wrong_instance_id(self): def get_instance_by_floating_ip_addr(self, context, address): if address == '10.10.10.10': return 'wrong_inst' self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) body = dict(removeFloatingIp=dict(address='10.10.10.10')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.manager._remove_floating_ip, req, 'test_inst', body) def test_floating_ip_disassociate_auto_assigned(self): def fake_get_floating_ip_addr_auto_assigned(self, context, address): return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova', 'fixed_ip_id': 10, 'auto_assigned': 1} def get_instance_by_floating_ip_addr(self, context, address): if address == '10.10.10.10': return 'test_inst' def network_api_disassociate(self, context, instance, floating_address): raise exception.CannotDisassociateAutoAssignedFloatingIP() self.stubs.Set(network.api.API, "get_floating_ip_by_address", fake_get_floating_ip_addr_auto_assigned) self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) self.stubs.Set(network.api.API, "disassociate_floating_ip", network_api_disassociate) body = dict(removeFloatingIp=dict(address='10.10.10.10')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPForbidden, self.manager._remove_floating_ip, req, 'test_inst', body) def test_floating_ip_disassociate_map_authorization_exc(self): def fake_get_floating_ip_addr_auto_assigned(self, context, address): return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova', 'fixed_ip_id': 10, 'auto_assigned': 1} def get_instance_by_floating_ip_addr(self, context, address): if address == '10.10.10.10': return 'test_inst' def network_api_disassociate(self, context, instance, address): raise exception.NotAuthorized() self.stubs.Set(network.api.API, "get_floating_ip_by_address", fake_get_floating_ip_addr_auto_assigned) self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) self.stubs.Set(network.api.API, "disassociate_floating_ip", network_api_disassociate) body = dict(removeFloatingIp=dict(address='10.10.10.10')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPForbidden, self.manager._remove_floating_ip, req, 'test_inst', body) # these are a few bad param tests def test_bad_address_param_in_remove_floating_ip(self): body = dict(removeFloatingIp=dict(badparam='11.0.0.1')) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._remove_floating_ip, req, 'test_inst', body) def test_missing_dict_param_in_remove_floating_ip(self): body = dict(removeFloatingIp='11.0.0.1') req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._remove_floating_ip, req, 'test_inst', body) def test_missing_dict_param_in_add_floating_ip(self): body = dict(addFloatingIp='11.0.0.1') req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') self.assertRaises(webob.exc.HTTPBadRequest, self.manager._add_floating_ip, req, 'test_inst', body) class ExtendedFloatingIpTest(test.TestCase): floating_ip = "10.10.10.10" floating_ip_2 = "10.10.10.11" def _create_floating_ips(self, floating_ips=None): """Create a floating ip object.""" if floating_ips is None: floating_ips = [self.floating_ip] elif not isinstance(floating_ips, (list, tuple)): floating_ips = [floating_ips] def make_ip_dict(ip): """Shortcut for creating floating ip dict.""" return dict_ = {'pool': 'nova', 'host': 'fake_host'} return db.floating_ip_bulk_create( self.context, [dict(address=ip, **dict_) for ip in floating_ips], ) def _delete_floating_ip(self): db.floating_ip_destroy(self.context, self.floating_ip) def setUp(self): super(ExtendedFloatingIpTest, self).setUp() self.stubs.Set(compute.api.API, "get", compute_api_get) self.stubs.Set(network.api.API, "get_floating_ip", network_api_get_floating_ip) self.stubs.Set(network.api.API, "get_floating_ip_by_address", network_api_get_floating_ip_by_address) self.stubs.Set(network.api.API, "get_floating_ips_by_project", network_api_get_floating_ips_by_project) self.stubs.Set(network.api.API, "release_floating_ip", network_api_release) self.stubs.Set(network.api.API, "disassociate_floating_ip", network_api_disassociate) self.stubs.Set(network.api.API, "get_instance_id_by_floating_address", get_instance_by_floating_ip_addr) self.stubs.Set(compute_utils, "get_nw_info_for_instance", stub_nw_info(self.stubs)) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Floating_ips', 'Extended_floating_ips']) fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs) self.stubs.Set(db, 'instance_get', fake_instance_get) self.context = context.get_admin_context() self._create_floating_ips() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.ext_mgr.extensions['os-floating-ips'] = True self.ext_mgr.extensions['os-extended-floating-ips'] = True self.controller = floating_ips.FloatingIPController() self.manager = floating_ips.FloatingIPActionController(self.ext_mgr) def tearDown(self): self._delete_floating_ip() super(ExtendedFloatingIpTest, self).tearDown() def test_extended_floating_ip_associate_fixed(self): fixed_address = '192.168.1.101' def fake_associate_floating_ip(*args, **kwargs): self.assertEqual(fixed_address, kwargs['fixed_address']) self.stubs.Set(network.api.API, "associate_floating_ip", fake_associate_floating_ip) body = dict(addFloatingIp=dict(address=self.floating_ip, fixed_address=fixed_address)) req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action') rsp = self.manager._add_floating_ip(req, 'test_inst', body) self.assertTrue(rsp.status_int == 202) def test_extended_floating_ip_associate_fixed_not_allocated(self): def fake_associate_floating_ip(*args, **kwargs): pass self.stubs.Set(network.api.API, "associate_floating_ip", fake_associate_floating_ip) body = dict(addFloatingIp=dict(address=self.floating_ip, fixed_address='11.11.11.11')) req = webob.Request.blank('/v2/fake/servers/test_inst/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" resp = req.get_response(fakes.wsgi_app(init_only=('servers',))) res_dict = jsonutils.loads(resp.body) self.assertEqual(resp.status_int, 400) self.assertEqual(res_dict['badRequest']['message'], "Specified fixed address not assigned to instance") class FloatingIpSerializerTest(test.TestCase): def test_default_serializer(self): serializer = floating_ips.FloatingIPTemplate() text = serializer.serialize(dict( floating_ip=dict( instance_id=1, ip='10.10.10.10', fixed_ip='10.0.0.1', id=1))) tree = etree.fromstring(text) self.assertEqual('floating_ip', tree.tag) self.assertEqual('1', tree.get('instance_id')) self.assertEqual('10.10.10.10', tree.get('ip')) self.assertEqual('10.0.0.1', tree.get('fixed_ip')) self.assertEqual('1', tree.get('id')) def test_index_serializer(self): serializer = floating_ips.FloatingIPsTemplate() text = serializer.serialize(dict( floating_ips=[ dict(instance_id=1, ip='10.10.10.10', fixed_ip='10.0.0.1', id=1), dict(instance_id=None, ip='10.10.10.11', fixed_ip=None, id=2)])) tree = etree.fromstring(text) self.assertEqual('floating_ips', tree.tag) self.assertEqual(2, len(tree)) self.assertEqual('floating_ip', tree[0].tag) self.assertEqual('floating_ip', tree[1].tag) self.assertEqual('1', tree[0].get('instance_id')) self.assertEqual('None', tree[1].get('instance_id')) self.assertEqual('10.10.10.10', tree[0].get('ip')) self.assertEqual('10.10.10.11', tree[1].get('ip')) self.assertEqual('10.0.0.1', tree[0].get('fixed_ip')) self.assertEqual('None', tree[1].get('fixed_ip')) self.assertEqual('1', tree[0].get('id')) self.assertEqual('2', tree[1].get('id')) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_instance_usage_audit_log.py0000664000175400017540000001766112323721477032336 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from nova.api.openstack.compute.contrib import instance_usage_audit_log as ial from nova import context from nova import db from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests.objects import test_service from nova import utils service_base = test_service.fake_service TEST_COMPUTE_SERVICES = [dict(service_base, host='foo', topic='compute'), dict(service_base, host='bar', topic='compute'), dict(service_base, host='baz', topic='compute'), dict(service_base, host='plonk', topic='compute'), dict(service_base, host='wibble', topic='bogus'), ] begin1 = datetime.datetime(2012, 7, 4, 6, 0, 0) begin2 = end1 = datetime.datetime(2012, 7, 5, 6, 0, 0) begin3 = end2 = datetime.datetime(2012, 7, 6, 6, 0, 0) end3 = datetime.datetime(2012, 7, 7, 6, 0, 0) #test data TEST_LOGS1 = [ #all services done, no errors. dict(host="plonk", period_beginning=begin1, period_ending=end1, state="DONE", errors=0, task_items=23, message="test1"), dict(host="baz", period_beginning=begin1, period_ending=end1, state="DONE", errors=0, task_items=17, message="test2"), dict(host="bar", period_beginning=begin1, period_ending=end1, state="DONE", errors=0, task_items=10, message="test3"), dict(host="foo", period_beginning=begin1, period_ending=end1, state="DONE", errors=0, task_items=7, message="test4"), ] TEST_LOGS2 = [ #some still running... dict(host="plonk", period_beginning=begin2, period_ending=end2, state="DONE", errors=0, task_items=23, message="test5"), dict(host="baz", period_beginning=begin2, period_ending=end2, state="DONE", errors=0, task_items=17, message="test6"), dict(host="bar", period_beginning=begin2, period_ending=end2, state="RUNNING", errors=0, task_items=10, message="test7"), dict(host="foo", period_beginning=begin2, period_ending=end2, state="DONE", errors=0, task_items=7, message="test8"), ] TEST_LOGS3 = [ #some errors.. dict(host="plonk", period_beginning=begin3, period_ending=end3, state="DONE", errors=0, task_items=23, message="test9"), dict(host="baz", period_beginning=begin3, period_ending=end3, state="DONE", errors=2, task_items=17, message="test10"), dict(host="bar", period_beginning=begin3, period_ending=end3, state="DONE", errors=0, task_items=10, message="test11"), dict(host="foo", period_beginning=begin3, period_ending=end3, state="DONE", errors=1, task_items=7, message="test12"), ] def fake_task_log_get_all(context, task_name, begin, end, host=None, state=None): assert task_name == "instance_usage_audit" if begin == begin1 and end == end1: return TEST_LOGS1 if begin == begin2 and end == end2: return TEST_LOGS2 if begin == begin3 and end == end3: return TEST_LOGS3 raise AssertionError("Invalid date %s to %s" % (begin, end)) def fake_last_completed_audit_period(unit=None, before=None): audit_periods = [(begin3, end3), (begin2, end2), (begin1, end1)] if before is not None: for begin, end in audit_periods: if before > end: return begin, end raise AssertionError("Invalid before date %s" % (before)) return begin1, end1 class InstanceUsageAuditLogTest(test.NoDBTestCase): def setUp(self): super(InstanceUsageAuditLogTest, self).setUp() self.context = context.get_admin_context() timeutils.set_time_override(datetime.datetime(2012, 7, 5, 10, 0, 0)) self.controller = ial.InstanceUsageAuditLogController() self.host_api = self.controller.host_api def fake_service_get_all(context, disabled): self.assertIsNone(disabled) return TEST_COMPUTE_SERVICES self.stubs.Set(utils, 'last_completed_audit_period', fake_last_completed_audit_period) self.stubs.Set(db, 'service_get_all', fake_service_get_all) self.stubs.Set(db, 'task_log_get_all', fake_task_log_get_all) def tearDown(self): super(InstanceUsageAuditLogTest, self).tearDown() timeutils.clear_time_override() def test_index(self): req = fakes.HTTPRequest.blank('/v2/fake/os-instance_usage_audit_log') result = self.controller.index(req) self.assertIn('instance_usage_audit_logs', result) logs = result['instance_usage_audit_logs'] self.assertEqual(57, logs['total_instances']) self.assertEqual(0, logs['total_errors']) self.assertEqual(4, len(logs['log'])) self.assertEqual(4, logs['num_hosts']) self.assertEqual(4, logs['num_hosts_done']) self.assertEqual(0, logs['num_hosts_running']) self.assertEqual(0, logs['num_hosts_not_run']) self.assertEqual("ALL hosts done. 0 errors.", logs['overall_status']) def test_show(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-instance_usage_audit_log/show') result = self.controller.show(req, '2012-07-05 10:00:00') self.assertIn('instance_usage_audit_log', result) logs = result['instance_usage_audit_log'] self.assertEqual(57, logs['total_instances']) self.assertEqual(0, logs['total_errors']) self.assertEqual(4, len(logs['log'])) self.assertEqual(4, logs['num_hosts']) self.assertEqual(4, logs['num_hosts_done']) self.assertEqual(0, logs['num_hosts_running']) self.assertEqual(0, logs['num_hosts_not_run']) self.assertEqual("ALL hosts done. 0 errors.", logs['overall_status']) def test_show_with_running(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-instance_usage_audit_log/show') result = self.controller.show(req, '2012-07-06 10:00:00') self.assertIn('instance_usage_audit_log', result) logs = result['instance_usage_audit_log'] self.assertEqual(57, logs['total_instances']) self.assertEqual(0, logs['total_errors']) self.assertEqual(4, len(logs['log'])) self.assertEqual(4, logs['num_hosts']) self.assertEqual(3, logs['num_hosts_done']) self.assertEqual(1, logs['num_hosts_running']) self.assertEqual(0, logs['num_hosts_not_run']) self.assertEqual("3 of 4 hosts done. 0 errors.", logs['overall_status']) def test_show_with_errors(self): req = fakes.HTTPRequest.blank( '/v2/fake/os-instance_usage_audit_log/show') result = self.controller.show(req, '2012-07-07 10:00:00') self.assertIn('instance_usage_audit_log', result) logs = result['instance_usage_audit_log'] self.assertEqual(57, logs['total_instances']) self.assertEqual(3, logs['total_errors']) self.assertEqual(4, len(logs['log'])) self.assertEqual(4, logs['num_hosts']) self.assertEqual(4, logs['num_hosts_done']) self.assertEqual(0, logs['num_hosts_running']) self.assertEqual(0, logs['num_hosts_not_run']) self.assertEqual("ALL hosts done. 3 errors.", logs['overall_status']) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_server_password.py0000664000175400017540000000561612323721477030544 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree from oslo.config import cfg import webob from nova.api.metadata import password from nova import compute from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF CONF.import_opt('osapi_compute_ext_list', 'nova.api.openstack.compute.contrib') class ServerPasswordTest(test.TestCase): content_type = 'application/json' def setUp(self): super(ServerPasswordTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', lambda *a, **kw: {'uuid': ''}) self.password = 'fakepass' def fake_extract_password(instance): return self.password def fake_convert_password(context, password): self.password = password return {} self.stubs.Set(password, 'extract_password', fake_extract_password) self.stubs.Set(password, 'convert_password', fake_convert_password) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Server_password']) def _make_request(self, url, method='GET'): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type req.method = method res = req.get_response( fakes.wsgi_app(init_only=('servers', 'os-server-password'))) return res def _get_pass(self, body): return jsonutils.loads(body).get('password') def test_get_password(self): url = '/v2/fake/servers/fake/os-server-password' res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertEqual(self._get_pass(res.body), 'fakepass') def test_reset_password(self): url = '/v2/fake/servers/fake/os-server-password' res = self._make_request(url, 'DELETE') self.assertEqual(res.status_int, 204) res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertEqual(self._get_pass(res.body), '') class ServerPasswordXmlTest(ServerPasswordTest): content_type = 'application/xml' def _get_pass(self, body): # NOTE(vish): first element is password return etree.XML(body).text or '' nova-2014.1/nova/tests/api/openstack/compute/contrib/test_floating_ip_bulk.py0000664000175400017540000001173312323721477030621 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import netaddr from oslo.config import cfg import webob from nova.api.openstack.compute.contrib import floating_ips_bulk from nova import context from nova import test from nova.tests.api.openstack import fakes CONF = cfg.CONF class FloatingIPBulk(test.TestCase): def setUp(self): super(FloatingIPBulk, self).setUp() self.context = context.get_admin_context() self.controller = floating_ips_bulk.FloatingIPBulkController() def _setup_floating_ips(self, ip_range): body = {'floating_ips_bulk_create': {'ip_range': ip_range}} req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk') res_dict = self.controller.create(req, body) response = {"floating_ips_bulk_create": { 'ip_range': ip_range, 'pool': CONF.default_floating_pool, 'interface': CONF.public_interface}} self.assertEqual(res_dict, response) def test_create_ips(self): ip_range = '192.168.1.0/24' self._setup_floating_ips(ip_range) def test_create_ips_pool(self): ip_range = '10.0.1.0/20' pool = 'a new pool' body = {'floating_ips_bulk_create': {'ip_range': ip_range, 'pool': pool}} req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk') res_dict = self.controller.create(req, body) response = {"floating_ips_bulk_create": { 'ip_range': ip_range, 'pool': pool, 'interface': CONF.public_interface}} self.assertEqual(res_dict, response) def test_list_ips(self): ip_range = '192.168.1.1/28' self._setup_floating_ips(ip_range) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk', use_admin_context=True) res_dict = self.controller.index(req) ip_info = [{'address': str(ip_addr), 'pool': CONF.default_floating_pool, 'interface': CONF.public_interface, 'project_id': None, 'instance_uuid': None} for ip_addr in netaddr.IPNetwork(ip_range).iter_hosts()] response = {'floating_ip_info': ip_info} self.assertEqual(res_dict, response) def test_list_ip_by_host(self): ip_range = '192.168.1.1/28' self._setup_floating_ips(ip_range) req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk', use_admin_context=True) self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 'host') def test_delete_ips(self): ip_range = '192.168.1.0/20' self._setup_floating_ips(ip_range) body = {'ip_range': ip_range} req = fakes.HTTPRequest.blank('/v2/fake/os-fixed-ips/delete') res_dict = self.controller.update(req, "delete", body) response = {"floating_ips_bulk_delete": ip_range} self.assertEqual(res_dict, response) # Check that the IPs are actually deleted req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk', use_admin_context=True) res_dict = self.controller.index(req) response = {'floating_ip_info': []} self.assertEqual(res_dict, response) def test_create_duplicate_fail(self): ip_range = '192.168.1.0/20' self._setup_floating_ips(ip_range) ip_range = '192.168.1.0/28' body = {'floating_ips_bulk_create': {'ip_range': ip_range}} req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_create_bad_cidr_fail(self): # netaddr can't handle /32 or 31 cidrs ip_range = '192.168.1.1/32' body = {'floating_ips_bulk_create': {'ip_range': ip_range}} req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_create_invalid_cidr_fail(self): ip_range = 'not a cidr' body = {'floating_ips_bulk_create': {'ip_range': ip_range}} req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ips-bulk') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_instance_actions.py0000664000175400017540000002743512323721510030627 0ustar jenkinsjenkins00000000000000# Copyright 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy import uuid from lxml import etree from webob import exc from nova.api.openstack.compute.contrib import instance_actions from nova.compute import api as compute_api from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.openstack.common import policy from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests import fake_instance_actions FAKE_UUID = fake_instance_actions.FAKE_UUID FAKE_REQUEST_ID = fake_instance_actions.FAKE_REQUEST_ID1 def format_action(action): '''Remove keys that aren't serialized.''' to_delete = ('id', 'finish_time', 'created_at', 'updated_at', 'deleted_at', 'deleted') for key in to_delete: if key in action: del(action[key]) if 'start_time' in action: # NOTE(danms): Without WSGI above us, these will be just stringified action['start_time'] = str(action['start_time'].replace(tzinfo=None)) for event in action.get('events', []): format_event(event) return action def format_event(event): '''Remove keys that aren't serialized.''' to_delete = ('id', 'created_at', 'updated_at', 'deleted_at', 'deleted', 'action_id') for key in to_delete: if key in event: del(event[key]) if 'start_time' in event: # NOTE(danms): Without WSGI above us, these will be just stringified event['start_time'] = str(event['start_time'].replace(tzinfo=None)) if 'finish_time' in event: # NOTE(danms): Without WSGI above us, these will be just stringified event['finish_time'] = str(event['finish_time'].replace(tzinfo=None)) return event class InstanceActionsPolicyTest(test.NoDBTestCase): def setUp(self): super(InstanceActionsPolicyTest, self).setUp() self.controller = instance_actions.InstanceActionsController() def test_list_actions_restricted_by_project(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:instance_actions': policy.parse_rule('project_id:%(project_id)s')}) policy.set_rules(rules) def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-instance-actions') self.assertRaises(exception.NotAuthorized, self.controller.index, req, str(uuid.uuid4())) def test_get_action_restricted_by_project(self): rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:instance_actions': policy.parse_rule('project_id:%(project_id)s')}) policy.set_rules(rules) def fake_instance_get_by_uuid(context, instance_id, columns_to_join=None, use_slave=False): return fake_instance.fake_db_instance( **{'name': 'fake', 'project_id': '%s_unequal' % context.project_id}) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) req = fakes.HTTPRequest.blank( '/v2/123/servers/12/os-instance-actions/1') self.assertRaises(exception.NotAuthorized, self.controller.show, req, str(uuid.uuid4()), '1') class InstanceActionsTest(test.NoDBTestCase): def setUp(self): super(InstanceActionsTest, self).setUp() self.controller = instance_actions.InstanceActionsController() self.fake_actions = copy.deepcopy(fake_instance_actions.FAKE_ACTIONS) self.fake_events = copy.deepcopy(fake_instance_actions.FAKE_EVENTS) def fake_get(self, context, instance_uuid): return {'uuid': instance_uuid} def fake_instance_get_by_uuid(context, instance_id, use_slave=False): return {'name': 'fake', 'project_id': context.project_id} self.stubs.Set(compute_api.API, 'get', fake_get) self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid) def test_list_actions(self): def fake_get_actions(context, uuid): actions = [] for act in self.fake_actions[uuid].itervalues(): action = models.InstanceAction() action.update(act) actions.append(action) return actions self.stubs.Set(db, 'actions_get', fake_get_actions) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-instance-actions') res_dict = self.controller.index(req, FAKE_UUID) for res in res_dict['instanceActions']: fake_action = self.fake_actions[FAKE_UUID][res['request_id']] self.assertEqual(format_action(fake_action), format_action(res)) def test_get_action_with_events_allowed(self): def fake_get_action(context, uuid, request_id): action = models.InstanceAction() action.update(self.fake_actions[uuid][request_id]) return action def fake_get_events(context, action_id): events = [] for evt in self.fake_events[action_id]: event = models.InstanceActionEvent() event.update(evt) events.append(event) return events self.stubs.Set(db, 'action_get_by_request_id', fake_get_action) self.stubs.Set(db, 'action_events_get', fake_get_events) req = fakes.HTTPRequest.blank( '/v2/123/servers/12/os-instance-actions/1', use_admin_context=True) res_dict = self.controller.show(req, FAKE_UUID, FAKE_REQUEST_ID) fake_action = self.fake_actions[FAKE_UUID][FAKE_REQUEST_ID] fake_events = self.fake_events[fake_action['id']] fake_action['events'] = fake_events self.assertEqual(format_action(fake_action), format_action(res_dict['instanceAction'])) def test_get_action_with_events_not_allowed(self): def fake_get_action(context, uuid, request_id): return self.fake_actions[uuid][request_id] def fake_get_events(context, action_id): return self.fake_events[action_id] self.stubs.Set(db, 'action_get_by_request_id', fake_get_action) self.stubs.Set(db, 'action_events_get', fake_get_events) rules = policy.Rules({'compute:get': policy.parse_rule(''), 'compute_extension:instance_actions': policy.parse_rule(''), 'compute_extension:instance_actions:events': policy.parse_rule('is_admin:True')}) policy.set_rules(rules) req = fakes.HTTPRequest.blank( '/v2/123/servers/12/os-instance-actions/1') res_dict = self.controller.show(req, FAKE_UUID, FAKE_REQUEST_ID) fake_action = self.fake_actions[FAKE_UUID][FAKE_REQUEST_ID] self.assertEqual(format_action(fake_action), format_action(res_dict['instanceAction'])) def test_action_not_found(self): def fake_no_action(context, uuid, action_id): return None self.stubs.Set(db, 'action_get_by_request_id', fake_no_action) req = fakes.HTTPRequest.blank( '/v2/123/servers/12/os-instance-actions/1') self.assertRaises(exc.HTTPNotFound, self.controller.show, req, FAKE_UUID, FAKE_REQUEST_ID) def test_instance_not_found(self): def fake_get(self, context, instance_uuid): raise exception.InstanceNotFound(instance_id=instance_uuid) self.stubs.Set(compute_api.API, 'get', fake_get) req = fakes.HTTPRequest.blank('/v2/123/servers/12/os-instance-actions') self.assertRaises(exc.HTTPNotFound, self.controller.index, req, FAKE_UUID) class InstanceActionsSerializerTest(test.NoDBTestCase): def setUp(self): super(InstanceActionsSerializerTest, self).setUp() self.fake_actions = copy.deepcopy(fake_instance_actions.FAKE_ACTIONS) self.fake_events = copy.deepcopy(fake_instance_actions.FAKE_EVENTS) def _verify_instance_action_attachment(self, attach, tree): for key in attach.keys(): if key != 'events': self.assertEqual(attach[key], tree.get(key), '%s did not match' % key) def _verify_instance_action_event_attachment(self, attach, tree): for key in attach.keys(): self.assertEqual(attach[key], tree.get(key), '%s did not match' % key) def test_instance_action_serializer(self): serializer = instance_actions.InstanceActionTemplate() action = self.fake_actions[FAKE_UUID][FAKE_REQUEST_ID] text = serializer.serialize({'instanceAction': action}) tree = etree.fromstring(text) action = format_action(action) self.assertEqual('instanceAction', tree.tag) self._verify_instance_action_attachment(action, tree) found_events = False for child in tree: if child.tag == 'events': found_events = True self.assertFalse(found_events) def test_instance_action_events_serializer(self): serializer = instance_actions.InstanceActionTemplate() action = self.fake_actions[FAKE_UUID][FAKE_REQUEST_ID] event = self.fake_events[action['id']][0] action['events'] = [dict(event), dict(event)] text = serializer.serialize({'instanceAction': action}) tree = etree.fromstring(text) action = format_action(action) self.assertEqual('instanceAction', tree.tag) self._verify_instance_action_attachment(action, tree) event = format_event(event) found_events = False for child in tree: if child.tag == 'events': found_events = True for key in event: self.assertEqual(event[key], child.get(key)) self.assertTrue(found_events) def test_instance_actions_serializer(self): serializer = instance_actions.InstanceActionsTemplate() action_list = self.fake_actions[FAKE_UUID].values() text = serializer.serialize({'instanceActions': action_list}) tree = etree.fromstring(text) action_list = [format_action(action) for action in action_list] self.assertEqual('instanceActions', tree.tag) self.assertEqual(len(action_list), len(tree)) for idx, child in enumerate(tree): self.assertEqual('instanceAction', child.tag) request_id = child.get('request_id') self._verify_instance_action_attachment( self.fake_actions[FAKE_UUID][request_id], child) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_server_diagnostics.py0000664000175400017540000000556112323721510031174 0ustar jenkinsjenkins00000000000000# Copyright 2011 Eldar Nugaev # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree from nova.api.openstack import compute from nova.api.openstack.compute.contrib import server_diagnostics from nova.api.openstack import wsgi from nova.compute import api as compute_api from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes UUID = 'abc' def fake_get_diagnostics(self, _context, instance_uuid): return {'data': 'Some diagnostic info'} def fake_instance_get(self, _context, instance_uuid, want_objects=False): if instance_uuid != UUID: raise Exception("Invalid UUID") return {'uuid': instance_uuid} class ServerDiagnosticsTest(test.NoDBTestCase): def setUp(self): super(ServerDiagnosticsTest, self).setUp() self.flags(verbose=True, osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Server_diagnostics']) self.stubs.Set(compute_api.API, 'get_diagnostics', fake_get_diagnostics) self.stubs.Set(compute_api.API, 'get', fake_instance_get) self.router = compute.APIRouter(init_only=('servers', 'diagnostics')) def test_get_diagnostics(self): req = fakes.HTTPRequest.blank('/fake/servers/%s/diagnostics' % UUID) res = req.get_response(self.router) output = jsonutils.loads(res.body) self.assertEqual(output, {'data': 'Some diagnostic info'}) class TestServerDiagnosticsXMLSerializer(test.NoDBTestCase): namespace = wsgi.XMLNS_V11 def _tag(self, elem): tagname = elem.tag self.assertEqual(tagname[0], '{') tmp = tagname.partition('}') namespace = tmp[0][1:] self.assertEqual(namespace, self.namespace) return tmp[2] def test_index_serializer(self): serializer = server_diagnostics.ServerDiagnosticsTemplate() exemplar = dict(diag1='foo', diag2='bar') text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('diagnostics', self._tag(tree)) self.assertEqual(len(tree), len(exemplar)) for child in tree: tag = self._tag(child) self.assertIn(tag, exemplar) self.assertEqual(child.text, exemplar[tag]) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_floating_ip_pools.py0000664000175400017540000000536712323721477031026 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree from nova.api.openstack.compute.contrib import floating_ip_pools from nova import context from nova import network from nova import test from nova.tests.api.openstack import fakes def fake_get_floating_ip_pools(self, context): return [{'name': 'nova'}, {'name': 'other'}] class FloatingIpPoolTest(test.NoDBTestCase): def setUp(self): super(FloatingIpPoolTest, self).setUp() self.stubs.Set(network.api.API, "get_floating_ip_pools", fake_get_floating_ip_pools) self.context = context.RequestContext('fake', 'fake') self.controller = floating_ip_pools.FloatingIPPoolsController() def test_translate_floating_ip_pools_view(self): pools = fake_get_floating_ip_pools(None, self.context) view = floating_ip_pools._translate_floating_ip_pools_view(pools) self.assertIn('floating_ip_pools', view) self.assertEqual(view['floating_ip_pools'][0]['name'], pools[0]['name']) self.assertEqual(view['floating_ip_pools'][1]['name'], pools[1]['name']) def test_floating_ips_pools_list(self): req = fakes.HTTPRequest.blank('/v2/fake/os-floating-ip-pools') res_dict = self.controller.index(req) pools = fake_get_floating_ip_pools(None, self.context) response = {'floating_ip_pools': pools} self.assertEqual(res_dict, response) class FloatingIpPoolSerializerTest(test.NoDBTestCase): def test_index_serializer(self): serializer = floating_ip_pools.FloatingIPPoolsTemplate() text = serializer.serialize(dict( floating_ip_pools=[ dict(name='nova'), dict(name='other') ])) tree = etree.fromstring(text) self.assertEqual('floating_ip_pools', tree.tag) self.assertEqual(2, len(tree)) self.assertEqual('floating_ip_pool', tree[0].tag) self.assertEqual('floating_ip_pool', tree[1].tag) self.assertEqual('nova', tree[0].get('name')) self.assertEqual('other', tree[1].get('name')) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_consoles.py0000664000175400017540000003247412323721477027143 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob from nova.compute import api as compute_api from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes def fake_get_vnc_console(self, _context, _instance, _console_type): return {'url': 'http://fake'} def fake_get_spice_console(self, _context, _instance, _console_type): return {'url': 'http://fake'} def fake_get_rdp_console(self, _context, _instance, _console_type): return {'url': 'http://fake'} def fake_get_vnc_console_invalid_type(self, _context, _instance, _console_type): raise exception.ConsoleTypeInvalid(console_type=_console_type) def fake_get_spice_console_invalid_type(self, _context, _instance, _console_type): raise exception.ConsoleTypeInvalid(console_type=_console_type) def fake_get_rdp_console_invalid_type(self, _context, _instance, _console_type): raise exception.ConsoleTypeInvalid(console_type=_console_type) def fake_get_vnc_console_not_ready(self, _context, instance, _console_type): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_get_spice_console_not_ready(self, _context, instance, _console_type): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_get_rdp_console_not_ready(self, _context, instance, _console_type): raise exception.InstanceNotReady(instance_id=instance["uuid"]) def fake_get_vnc_console_not_found(self, _context, instance, _console_type): raise exception.InstanceNotFound(instance_id=instance["uuid"]) def fake_get_spice_console_not_found(self, _context, instance, _console_type): raise exception.InstanceNotFound(instance_id=instance["uuid"]) def fake_get_rdp_console_not_found(self, _context, instance, _console_type): raise exception.InstanceNotFound(instance_id=instance["uuid"]) def fake_get(self, context, instance_uuid, want_objects=False): return {'uuid': instance_uuid} def fake_get_not_found(self, context, instance_uuid, want_objects=False): raise exception.InstanceNotFound(instance_id=instance_uuid) class ConsolesExtensionTest(test.NoDBTestCase): def setUp(self): super(ConsolesExtensionTest, self).setUp() self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console) self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console) self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console) self.stubs.Set(compute_api.API, 'get', fake_get) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Consoles']) self.app = fakes.wsgi_app(init_only=('servers',)) def test_get_vnc_console(self): body = {'os-getVNCConsole': {'type': 'novnc'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {u'console': {u'url': u'http://fake', u'type': u'novnc'}}) def test_get_vnc_console_not_ready(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_not_ready) body = {'os-getVNCConsole': {'type': 'novnc'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 409) def test_get_vnc_console_no_type(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_invalid_type) body = {'os-getVNCConsole': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_vnc_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'os-getVNCConsole': {'type': 'novnc'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_vnc_console_no_instance_on_console_get(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_not_found) body = {'os-getVNCConsole': {'type': 'novnc'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_vnc_console_invalid_type(self): body = {'os-getVNCConsole': {'type': 'invalid'}} self.stubs.Set(compute_api.API, 'get_vnc_console', fake_get_vnc_console_invalid_type) req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_vnc_console_not_implemented(self): self.stubs.Set(compute_api.API, 'get_vnc_console', fakes.fake_not_implemented) body = {'os-getVNCConsole': {'type': 'novnc'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 501) def test_get_spice_console(self): body = {'os-getSPICEConsole': {'type': 'spice-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {u'console': {u'url': u'http://fake', u'type': u'spice-html5'}}) def test_get_spice_console_not_ready(self): self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_not_ready) body = {'os-getSPICEConsole': {'type': 'spice-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 409) def test_get_spice_console_no_type(self): self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_invalid_type) body = {'os-getSPICEConsole': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_spice_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'os-getSPICEConsole': {'type': 'spice-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_spice_console_no_instance_on_console_get(self): self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_not_found) body = {'os-getSPICEConsole': {'type': 'spice-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_spice_console_invalid_type(self): body = {'os-getSPICEConsole': {'type': 'invalid'}} self.stubs.Set(compute_api.API, 'get_spice_console', fake_get_spice_console_invalid_type) req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_spice_console_not_implemented(self): body = {'os-getSPICEConsole': {'type': 'spice-html5'}} self.stubs.Set(compute_api.API, 'get_spice_console', fakes.fake_not_implemented) req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 501) def test_get_rdp_console(self): body = {'os-getRDPConsole': {'type': 'rdp-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(output, {u'console': {u'url': u'http://fake', u'type': u'rdp-html5'}}) def test_get_rdp_console_not_ready(self): self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_not_ready) body = {'os-getRDPConsole': {'type': 'rdp-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) output = jsonutils.loads(res.body) self.assertEqual(res.status_int, 409) def test_get_rdp_console_no_type(self): self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_invalid_type) body = {'os-getRDPConsole': {}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) def test_get_rdp_console_no_instance(self): self.stubs.Set(compute_api.API, 'get', fake_get_not_found) body = {'os-getRDPConsole': {'type': 'rdp-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_rdp_console_no_instance_on_console_get(self): self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_not_found) body = {'os-getRDPConsole': {'type': 'rdp-html5'}} req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 404) def test_get_rdp_console_invalid_type(self): body = {'os-getRDPConsole': {'type': 'invalid'}} self.stubs.Set(compute_api.API, 'get_rdp_console', fake_get_rdp_console_invalid_type) req = webob.Request.blank('/v2/fake/servers/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(self.app) self.assertEqual(res.status_int, 400) nova-2014.1/nova/tests/api/openstack/compute/contrib/test_migrations.py0000664000175400017540000001136212323721477027463 0ustar jenkinsjenkins00000000000000# All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from lxml import etree from nova.api.openstack.compute.contrib import migrations from nova import context from nova import exception from nova.objects import base from nova.objects import migration from nova.openstack.common.fixture import moxstubout from nova import test fake_migrations = [ { 'id': 1234, 'source_node': 'node1', 'dest_node': 'node2', 'source_compute': 'compute1', 'dest_compute': 'compute2', 'dest_host': '1.2.3.4', 'status': 'Done', 'instance_uuid': 'instance_id_123', 'old_instance_type_id': 1, 'new_instance_type_id': 2, 'created_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2), 'deleted_at': None, 'deleted': False }, { 'id': 5678, 'source_node': 'node10', 'dest_node': 'node20', 'source_compute': 'compute10', 'dest_compute': 'compute20', 'dest_host': '5.6.7.8', 'status': 'Done', 'instance_uuid': 'instance_id_456', 'old_instance_type_id': 5, 'new_instance_type_id': 6, 'created_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'updated_at': datetime.datetime(2013, 10, 22, 13, 42, 2), 'deleted_at': None, 'deleted': False } ] migrations_obj = base.obj_make_list( 'fake-context', migration.MigrationList(), migration.Migration, fake_migrations) class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} GET = {} class MigrationsTestCase(test.NoDBTestCase): def setUp(self): """Run before each test.""" super(MigrationsTestCase, self).setUp() self.controller = migrations.MigrationsController() self.context = context.get_admin_context() self.req = FakeRequest() self.req.environ['nova.context'] = self.context mox_fixture = self.useFixture(moxstubout.MoxStubout()) self.mox = mox_fixture.mox def test_index(self): migrations_in_progress = { 'migrations': migrations.output(migrations_obj)} for mig in migrations_in_progress['migrations']: self.assertTrue('id' in mig) self.assertTrue('deleted' not in mig) self.assertTrue('deleted_at' not in mig) filters = {'host': 'host1', 'status': 'migrating', 'cell_name': 'ChildCell'} self.req.GET = filters self.mox.StubOutWithMock(self.controller.compute_api, "get_migrations") self.controller.compute_api.get_migrations( self.context, filters).AndReturn(migrations_obj) self.mox.ReplayAll() response = self.controller.index(self.req) self.assertEqual(migrations_in_progress, response) def test_index_needs_authorization(self): user_context = context.RequestContext(user_id=None, project_id=None, is_admin=False, read_deleted="no", overwrite=False) self.req.environ['nova.context'] = user_context self.assertRaises(exception.PolicyNotAuthorized, self.controller.index, self.req) class MigrationsTemplateTest(test.NoDBTestCase): def setUp(self): super(MigrationsTemplateTest, self).setUp() self.serializer = migrations.MigrationsTemplate() def test_index_serialization(self): migrations_out = migrations.output(migrations_obj) res_xml = self.serializer.serialize( {'migrations': migrations_out}) tree = etree.XML(res_xml) children = tree.findall('migration') self.assertEqual(tree.tag, 'migrations') self.assertEqual(2, len(children)) for idx, child in enumerate(children): self.assertEqual(child.tag, 'migration') migration = migrations_out[idx] for attr in migration.keys(): self.assertEqual(str(migration[attr]), child.get(attr)) nova-2014.1/nova/tests/api/openstack/compute/contrib/__init__.py0000664000175400017540000000117312323721477026006 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/api/openstack/compute/contrib/test_flavor_swap.py0000664000175400017540000000653512323721477027640 0ustar jenkinsjenkins00000000000000# Copyright 2012 Nebula, 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 lxml import etree import webob from nova.compute import flavors from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes FAKE_FLAVORS = { 'flavor 1': { "flavorid": '1', "name": 'flavor 1', "memory_mb": '256', "root_gb": '10', "swap": 512, }, 'flavor 2': { "flavorid": '2', "name": 'flavor 2', "memory_mb": '512', "root_gb": '10', "swap": None, }, } #TOD(jogo) dedup these across nova.api.openstack.contrib.test_flavor* def fake_flavor_get_by_flavor_id(flavorid, ctxt=None): return FAKE_FLAVORS['flavor %s' % flavorid] def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [ fake_flavor_get_by_flavor_id(1), fake_flavor_get_by_flavor_id(2) ] class FlavorSwapTest(test.NoDBTestCase): content_type = 'application/json' prefix = '' def setUp(self): super(FlavorSwapTest, self).setUp() ext = ('nova.api.openstack.compute.contrib' '.flavor_swap.Flavor_swap') self.flags(osapi_compute_extension=[ext]) fakes.stub_out_nw_api(self.stubs) self.stubs.Set(flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app()) return res def _get_flavor(self, body): return jsonutils.loads(body).get('flavor') def _get_flavors(self, body): return jsonutils.loads(body).get('flavors') def assertFlavorSwap(self, flavor, swap): self.assertEqual(str(flavor.get('%sswap' % self.prefix)), swap) def test_show(self): url = '/v2/fake/flavors/1' res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertFlavorSwap(self._get_flavor(res.body), '512') def test_detail(self): url = '/v2/fake/flavors/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) flavors = self._get_flavors(res.body) self.assertFlavorSwap(flavors[0], '512') self.assertFlavorSwap(flavors[1], '') class FlavorSwapXmlTest(FlavorSwapTest): content_type = 'application/xml' def _get_flavor(self, body): return etree.XML(body) def _get_flavors(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/contrib/test_server_usage.py0000664000175400017540000001213012323721477027773 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime from lxml import etree from nova.api.openstack.compute.contrib import server_usage from nova import compute from nova import db from nova import exception from nova.objects import instance as instance_obj from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' UUID3 = '00000000-0000-0000-0000-000000000003' DATE1 = datetime.datetime(year=2013, month=4, day=5, hour=12) DATE2 = datetime.datetime(year=2013, month=4, day=5, hour=13) DATE3 = datetime.datetime(year=2013, month=4, day=5, hour=14) def fake_compute_get(*args, **kwargs): inst = fakes.stub_instance(1, uuid=UUID3, launched_at=DATE1, terminated_at=DATE2) return fake_instance.fake_instance_obj(args[1], **inst) def fake_compute_get_all(*args, **kwargs): db_list = [ fakes.stub_instance(2, uuid=UUID1, launched_at=DATE2, terminated_at=DATE3), fakes.stub_instance(3, uuid=UUID2, launched_at=DATE1, terminated_at=DATE3), ] fields = instance_obj.INSTANCE_DEFAULT_FIELDS return instance_obj._make_instance_list(args[1], instance_obj.InstanceList(), db_list, fields) class ServerUsageTest(test.TestCase): content_type = 'application/json' prefix = 'OS-SRV-USG:' def setUp(self): super(ServerUsageTest, self).setUp() fakes.stub_out_nw_api(self.stubs) self.stubs.Set(compute.api.API, 'get', fake_compute_get) self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all) self.flags( osapi_compute_extension=[ 'nova.api.openstack.compute.contrib.select_extensions'], osapi_compute_ext_list=['Server_usage']) return_server = fakes.fake_instance_get() self.stubs.Set(db, 'instance_get_by_uuid', return_server) def _make_request(self, url): req = fakes.HTTPRequest.blank(url) req.accept = self.content_type res = req.get_response(fakes.wsgi_app(init_only=('servers',))) return res def _get_server(self, body): return jsonutils.loads(body).get('server') def _get_servers(self, body): return jsonutils.loads(body).get('servers') def assertServerUsage(self, server, launched_at, terminated_at): resp_launched_at = timeutils.parse_isotime( server.get('%slaunched_at' % self.prefix)) self.assertEqual(timeutils.normalize_time(resp_launched_at), launched_at) resp_terminated_at = timeutils.parse_isotime( server.get('%sterminated_at' % self.prefix)) self.assertEqual(timeutils.normalize_time(resp_terminated_at), terminated_at) def test_show(self): url = '/v2/fake/servers/%s' % UUID3 res = self._make_request(url) self.assertEqual(res.status_int, 200) now = timeutils.utcnow() timeutils.set_time_override(now) self.assertServerUsage(self._get_server(res.body), launched_at=DATE1, terminated_at=DATE2) def test_detail(self): url = '/v2/fake/servers/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) servers = self._get_servers(res.body) self.assertServerUsage(servers[0], launched_at=DATE2, terminated_at=DATE3) self.assertServerUsage(servers[1], launched_at=DATE1, terminated_at=DATE3) def test_no_instance_passthrough_404(self): def fake_compute_get(*args, **kwargs): raise exception.InstanceNotFound(instance_id='fake') self.stubs.Set(compute.api.API, 'get', fake_compute_get) url = '/v2/fake/servers/70f6db34-de8d-4fbd-aafb-4065bdfa6115' res = self._make_request(url) self.assertEqual(res.status_int, 404) class ServerUsageXmlTest(ServerUsageTest): content_type = 'application/xml' prefix = '{%s}' % server_usage.Server_usage.namespace def _get_server(self, body): return etree.XML(body) def _get_servers(self, body): return etree.XML(body).getchildren() nova-2014.1/nova/tests/api/openstack/compute/extensions/0000775000175400017540000000000012323722546024430 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/openstack/compute/extensions/foxinsocks.py0000664000175400017540000000560212323721477027175 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import webob.exc from nova.api.openstack import extensions from nova.api.openstack import wsgi class FoxInSocksController(object): def index(self, req): return "Try to say this Mr. Knox, sir..." class FoxInSocksServerControllerExtension(wsgi.Controller): @wsgi.action('add_tweedle') def _add_tweedle(self, req, id, body): return "Tweedle Beetle Added." @wsgi.action('delete_tweedle') def _delete_tweedle(self, req, id, body): return "Tweedle Beetle Deleted." @wsgi.action('fail') def _fail(self, req, id, body): raise webob.exc.HTTPBadRequest(explanation='Tweedle fail') class FoxInSocksFlavorGooseControllerExtension(wsgi.Controller): @wsgi.extends def show(self, req, resp_obj, id): #NOTE: This only handles JSON responses. # You can use content type header to test for XML. resp_obj.obj['flavor']['googoose'] = req.GET.get('chewing') class FoxInSocksFlavorBandsControllerExtension(wsgi.Controller): @wsgi.extends def show(self, req, resp_obj, id): #NOTE: This only handles JSON responses. # You can use content type header to test for XML. resp_obj.obj['big_bands'] = 'Pig Bands!' class Foxinsocks(extensions.ExtensionDescriptor): """The Fox In Socks Extension.""" name = "Fox In Socks" alias = "FOXNSOX" namespace = "http://www.fox.in.socks/api/ext/pie/v1.0" updated = "2011-01-22T13:25:27-06:00" def __init__(self, ext_mgr): ext_mgr.register(self) def get_resources(self): resources = [] resource = extensions.ResourceExtension('foxnsocks', FoxInSocksController()) resources.append(resource) return resources def get_controller_extensions(self): extension_list = [] extension_set = [ (FoxInSocksServerControllerExtension, 'servers'), (FoxInSocksFlavorGooseControllerExtension, 'flavors'), (FoxInSocksFlavorBandsControllerExtension, 'flavors'), ] for klass, collection in extension_set: controller = klass() ext = extensions.ControllerExtension(self, collection, controller) extension_list.append(ext) return extension_list nova-2014.1/nova/tests/api/openstack/compute/extensions/__init__.py0000664000175400017540000000114412323721477026543 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/api/openstack/compute/test_flavors.py0000664000175400017540000006723212323721477025332 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import six.moves.urllib.parse as urlparse import webob from nova.api.openstack.compute import flavors from nova.api.openstack import xmlutil import nova.compute.flavors from nova import context from nova import db from nova import exception from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers NS = "{http://docs.openstack.org/compute/api/v1.1}" ATOMNS = "{http://www.w3.org/2005/Atom}" FAKE_FLAVORS = { 'flavor 1': { "flavorid": '1', "name": 'flavor 1', "memory_mb": '256', "root_gb": '10', }, 'flavor 2': { "flavorid": '2', "name": 'flavor 2', "memory_mb": '512', "root_gb": '20', }, } def fake_flavor_get_by_flavor_id(flavorid, ctxt=None): return FAKE_FLAVORS['flavor %s' % flavorid] def fake_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): if marker in ['99999']: raise exception.MarkerNotFound(marker) def reject_min(db_attr, filter_attr): return (filter_attr in filters and int(flavor[db_attr]) < int(filters[filter_attr])) filters = filters or {} res = [] for (flavor_name, flavor) in FAKE_FLAVORS.items(): if reject_min('memory_mb', 'min_memory_mb'): continue elif reject_min('root_gb', 'min_root_gb'): continue res.append(flavor) res = sorted(res, key=lambda item: item[sort_key]) output = [] marker_found = True if marker is None else False for flavor in res: if not marker_found and marker == flavor['flavorid']: marker_found = True elif marker_found: if limit is None or len(output) < int(limit): output.append(flavor) return output def empty_get_all_flavors_sorted_list(context=None, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None): return [] def return_flavor_not_found(flavor_id, ctxt=None): raise exception.FlavorNotFound(flavor_id=flavor_id) class FlavorsTest(test.TestCase): def setUp(self): super(FlavorsTest, self).setUp() self.flags(osapi_compute_extension=[]) fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.stubs.Set(nova.compute.flavors, "get_all_flavors_sorted_list", fake_get_all_flavors_sorted_list) self.stubs.Set(nova.compute.flavors, "get_flavor_by_flavor_id", fake_flavor_get_by_flavor_id) self.controller = flavors.Controller() def test_get_flavor_by_invalid_id(self): self.stubs.Set(nova.compute.flavors, "get_flavor_by_flavor_id", return_flavor_not_found) req = fakes.HTTPRequest.blank('/v2/fake/flavors/asdf') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 'asdf') def test_get_flavor_by_id(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors/1') flavor = self.controller.show(req, '1') expected = { "flavor": { "id": "1", "name": "flavor 1", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/1", }, ], }, } self.assertEqual(flavor, expected) def test_get_flavor_with_custom_link_prefix(self): self.flags(osapi_compute_link_prefix='http://zoo.com:42', osapi_glance_link_prefix='http://circus.com:34') req = fakes.HTTPRequest.blank('/v2/fake/flavors/1') flavor = self.controller.show(req, '1') expected = { "flavor": { "id": "1", "name": "flavor 1", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://zoo.com:42/v2/fake/flavors/1", }, { "rel": "bookmark", "href": "http://zoo.com:42/fake/flavors/1", }, ], }, } self.assertEqual(flavor, expected) def test_get_flavor_list(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "1", "name": "flavor 1", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/1", }, ], }, { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_flavor_list_with_marker(self): self.maxDiff = None req = fakes.HTTPRequest.blank('/v2/fake/flavors?limit=1&marker=1') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], }, ], 'flavors_links': [ {'href': 'http://localhost/v2/fake/flavors?limit=1&marker=2', 'rel': 'next'} ] } self.assertThat(flavor, matchers.DictMatches(expected)) def test_get_flavor_list_with_invalid_marker(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors?marker=99999') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_flavor_detail_with_limit(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors/detail?limit=1') response = self.controller.index(req) response_list = response["flavors"] response_links = response["flavors_links"] alternate = "%s/fake/flavors/%s" expected_flavors = [ { "id": "1", "name": "flavor 1", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/1", }, ], }, ] self.assertEqual(response_list, expected_flavors) self.assertEqual(response_links[0]['rel'], 'next') href_parts = urlparse.urlparse(response_links[0]['href']) self.assertEqual('/v2/fake/flavors', href_parts.path) params = urlparse.parse_qs(href_parts.query) self.assertThat({'limit': ['1'], 'marker': ['1']}, matchers.DictMatches(params)) def test_get_flavor_with_limit(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors?limit=2') response = self.controller.index(req) response_list = response["flavors"] response_links = response["flavors_links"] alternate = "%s/fake/flavors/%s" expected_flavors = [ { "id": "1", "name": "flavor 1", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/1", }, ], }, { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], } ] self.assertEqual(response_list, expected_flavors) self.assertEqual(response_links[0]['rel'], 'next') href_parts = urlparse.urlparse(response_links[0]['href']) self.assertEqual('/v2/fake/flavors', href_parts.path) params = urlparse.parse_qs(href_parts.query) self.assertThat({'limit': ['2'], 'marker': ['2']}, matchers.DictMatches(params)) def test_get_flavor_list_detail(self): req = fakes.HTTPRequest.blank('/v2/fake/flavors/detail') flavor = self.controller.detail(req) expected = { "flavors": [ { "id": "1", "name": "flavor 1", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/1", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/1", }, ], }, { "id": "2", "name": "flavor 2", "ram": "512", "disk": "20", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_empty_flavor_list(self): self.stubs.Set(nova.compute.flavors, "get_all_flavors_sorted_list", empty_get_all_flavors_sorted_list) req = fakes.HTTPRequest.blank('/v2/fake/flavors') flavors = self.controller.index(req) expected = {'flavors': []} self.assertEqual(flavors, expected) def test_get_flavor_list_filter_min_ram(self): # Flavor lists may be filtered by minRam. req = fakes.HTTPRequest.blank('/v2/fake/flavors?minRam=512') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_flavor_list_filter_invalid_min_ram(self): # Ensure you cannot list flavors with invalid minRam param. req = fakes.HTTPRequest.blank('/v2/fake/flavors?minRam=NaN') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_flavor_list_filter_min_disk(self): # Flavor lists may be filtered by minDisk. req = fakes.HTTPRequest.blank('/v2/fake/flavors?minDisk=20') flavor = self.controller.index(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) def test_get_flavor_list_filter_invalid_min_disk(self): # Ensure you cannot list flavors with invalid minDisk param. req = fakes.HTTPRequest.blank('/v2/fake/flavors?minDisk=NaN') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.index, req) def test_get_flavor_list_detail_min_ram_and_min_disk(self): """Tests that filtering work on flavor details and that minRam and minDisk filters can be combined """ req = fakes.HTTPRequest.blank('/v2/fake/flavors/detail' '?minRam=256&minDisk=20') flavor = self.controller.detail(req) expected = { "flavors": [ { "id": "2", "name": "flavor 2", "ram": "512", "disk": "20", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/2", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/2", }, ], }, ], } self.assertEqual(flavor, expected) class FlavorsXMLSerializationTest(test.TestCase): def test_xml_declaration(self): serializer = flavors.FlavorTemplate() fixture = { "flavor": { "id": "12", "name": "asdf", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/12", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/12", }, ], }, } output = serializer.serialize(fixture) has_dec = output.startswith("") self.assertTrue(has_dec) def test_show(self): serializer = flavors.FlavorTemplate() fixture = { "flavor": { "id": "12", "name": "asdf", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/12", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/12", }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'flavor') flavor_dict = fixture['flavor'] for key in ['name', 'id', 'ram', 'disk']: self.assertEqual(root.get(key), str(flavor_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(flavor_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_show_handles_integers(self): serializer = flavors.FlavorTemplate() fixture = { "flavor": { "id": 12, "name": "asdf", "ram": 256, "disk": 10, "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/12", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/12", }, ], }, } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'flavor') flavor_dict = fixture['flavor'] for key in ['name', 'id', 'ram', 'disk']: self.assertEqual(root.get(key), str(flavor_dict[key])) link_nodes = root.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(flavor_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_detail(self): serializer = flavors.FlavorsTemplate() fixture = { "flavors": [ { "id": "23", "name": "flavor 23", "ram": "512", "disk": "20", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/23", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/23", }, ], }, { "id": "13", "name": "flavor 13", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/13", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/13", }, ], }, ], } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'flavors') flavor_elems = root.findall('{0}flavor'.format(NS)) self.assertEqual(len(flavor_elems), 2) for i, flavor_elem in enumerate(flavor_elems): flavor_dict = fixture['flavors'][i] for key in ['name', 'id', 'ram', 'disk']: self.assertEqual(flavor_elem.get(key), str(flavor_dict[key])) link_nodes = flavor_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(flavor_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_index(self): serializer = flavors.MinimalFlavorsTemplate() fixture = { "flavors": [ { "id": "23", "name": "flavor 23", "ram": "512", "disk": "20", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/23", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/23", }, ], }, { "id": "13", "name": "flavor 13", "ram": "256", "disk": "10", "vcpus": "", "links": [ { "rel": "self", "href": "http://localhost/v2/fake/flavors/13", }, { "rel": "bookmark", "href": "http://localhost/fake/flavors/13", }, ], }, ], } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'flavors_index') flavor_elems = root.findall('{0}flavor'.format(NS)) self.assertEqual(len(flavor_elems), 2) for i, flavor_elem in enumerate(flavor_elems): flavor_dict = fixture['flavors'][i] for key in ['name', 'id']: self.assertEqual(flavor_elem.get(key), str(flavor_dict[key])) link_nodes = flavor_elem.findall('{0}link'.format(ATOMNS)) self.assertEqual(len(link_nodes), 2) for i, link in enumerate(flavor_dict['links']): for key, value in link.items(): self.assertEqual(link_nodes[i].get(key), value) def test_index_empty(self): serializer = flavors.MinimalFlavorsTemplate() fixture = { "flavors": [], } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'flavors_index') flavor_elems = root.findall('{0}flavor'.format(NS)) self.assertEqual(len(flavor_elems), 0) class DisabledFlavorsWithRealDBTest(test.TestCase): """Tests that disabled flavors should not be shown nor listed.""" def setUp(self): super(DisabledFlavorsWithRealDBTest, self).setUp() self.controller = flavors.Controller() # Add a new disabled type to the list of flavors self.req = fakes.HTTPRequest.blank('/v2/fake/flavors') self.context = self.req.environ['nova.context'] self.admin_context = context.get_admin_context() self.disabled_type = self._create_disabled_instance_type() self.inst_types = db.flavor_get_all( self.admin_context) def tearDown(self): db.flavor_destroy( self.admin_context, self.disabled_type['name']) super(DisabledFlavorsWithRealDBTest, self).tearDown() def _create_disabled_instance_type(self): inst_types = db.flavor_get_all(self.admin_context) inst_type = inst_types[0] del inst_type['id'] inst_type['name'] += '.disabled' inst_type['flavorid'] = unicode(max( [int(flavor['flavorid']) for flavor in inst_types]) + 1) inst_type['disabled'] = True disabled_type = db.flavor_create( self.admin_context, inst_type) return disabled_type def test_index_should_not_list_disabled_flavors_to_user(self): self.context.is_admin = False flavor_list = self.controller.index(self.req)['flavors'] api_flavorids = set(f['id'] for f in flavor_list) db_flavorids = set(i['flavorid'] for i in self.inst_types) disabled_flavorid = str(self.disabled_type['flavorid']) self.assertIn(disabled_flavorid, db_flavorids) self.assertEqual(db_flavorids - set([disabled_flavorid]), api_flavorids) def test_index_should_list_disabled_flavors_to_admin(self): self.context.is_admin = True flavor_list = self.controller.index(self.req)['flavors'] api_flavorids = set(f['id'] for f in flavor_list) db_flavorids = set(i['flavorid'] for i in self.inst_types) disabled_flavorid = str(self.disabled_type['flavorid']) self.assertIn(disabled_flavorid, db_flavorids) self.assertEqual(db_flavorids, api_flavorids) def test_show_should_include_disabled_flavor_for_user(self): """Counterintuitively we should show disabled flavors to all users and not just admins. The reason is that, when a user performs a server-show request, we want to be able to display the pretty flavor name ('512 MB Instance') and not just the flavor-id even if the flavor id has been marked disabled. """ self.context.is_admin = False flavor = self.controller.show( self.req, self.disabled_type['flavorid'])['flavor'] self.assertEqual(flavor['name'], self.disabled_type['name']) def test_show_should_include_disabled_flavor_for_admin(self): self.context.is_admin = True flavor = self.controller.show( self.req, self.disabled_type['flavorid'])['flavor'] self.assertEqual(flavor['name'], self.disabled_type['name']) class ParseIsPublicTest(test.TestCase): def setUp(self): super(ParseIsPublicTest, self).setUp() self.controller = flavors.Controller() def assertPublic(self, expected, is_public): self.assertIs(expected, self.controller._parse_is_public(is_public), '%s did not return %s' % (is_public, expected)) def test_None(self): self.assertPublic(True, None) def test_truthy(self): self.assertPublic(True, True) self.assertPublic(True, 't') self.assertPublic(True, 'true') self.assertPublic(True, 'yes') self.assertPublic(True, '1') def test_falsey(self): self.assertPublic(False, False) self.assertPublic(False, 'f') self.assertPublic(False, 'false') self.assertPublic(False, 'no') self.assertPublic(False, '0') def test_string_none(self): self.assertPublic(None, 'none') self.assertPublic(None, 'None') def test_other(self): self.assertRaises( webob.exc.HTTPBadRequest, self.assertPublic, None, 'other') nova-2014.1/nova/tests/api/openstack/compute/test_api.py0000664000175400017540000001563612323721477024430 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from lxml import etree import webob import webob.dec import webob.exc from nova.api import openstack as openstack_api from nova.api.openstack import wsgi import nova.context from nova import exception from nova.openstack.common import jsonutils from nova import test from nova.tests.api.openstack import fakes class APITest(test.NoDBTestCase): def _wsgi_app(self, inner_app): # simpler version of the app than fakes.wsgi_app return openstack_api.FaultWrapper(inner_app) def test_malformed_json(self): req = webob.Request.blank('/') req.method = 'POST' req.body = '{' req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_malformed_xml(self): req = webob.Request.blank('/') req.method = 'POST' req.body = '' req.headers["content-type"] = "application/xml" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_vendor_content_type_json(self): ctype = 'application/vnd.openstack.compute+json' req = webob.Request.blank('/') req.headers['Accept'] = ctype res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, ctype) body = jsonutils.loads(res.body) def test_vendor_content_type_xml(self): ctype = 'application/vnd.openstack.compute+xml' req = webob.Request.blank('/') req.headers['Accept'] = ctype res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) self.assertEqual(res.content_type, ctype) body = etree.XML(res.body) def test_exceptions_are_converted_to_faults_webob_exc(self): @webob.dec.wsgify def raise_webob_exc(req): raise webob.exc.HTTPNotFound(explanation='Raised a webob.exc') #api.application = raise_webob_exc api = self._wsgi_app(raise_webob_exc) resp = webob.Request.blank('/').get_response(api) self.assertEqual(resp.status_int, 404, resp.body) def test_exceptions_are_converted_to_faults_api_fault(self): @webob.dec.wsgify def raise_api_fault(req): exc = webob.exc.HTTPNotFound(explanation='Raised a webob.exc') return wsgi.Fault(exc) #api.application = raise_api_fault api = self._wsgi_app(raise_api_fault) resp = webob.Request.blank('/').get_response(api) self.assertIn('itemNotFound', resp.body) self.assertEqual(resp.status_int, 404, resp.body) def test_exceptions_are_converted_to_faults_exception(self): @webob.dec.wsgify def fail(req): raise Exception("Threw an exception") #api.application = fail api = self._wsgi_app(fail) resp = webob.Request.blank('/').get_response(api) self.assertIn('{"computeFault', resp.body) self.assertEqual(resp.status_int, 500, resp.body) def test_exceptions_are_converted_to_faults_exception_xml(self): @webob.dec.wsgify def fail(req): raise Exception("Threw an exception") #api.application = fail api = self._wsgi_app(fail) resp = webob.Request.blank('/.xml').get_response(api) self.assertIn('""" request = self.deserializer.deserialize(serial_request, 'action') expected = { "createImage": { "name": "new-server-test", }, } self.assertEqual(request['body'], expected) def test_create_image_with_metadata(self): serial_request = """ value1 """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "createImage": { "name": "new-server-test", "metadata": {"key1": "value1"}, }, } self.assertEqual(request['body'], expected) def test_change_pass(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "changePassword": { "adminPass": "1234pass", }, } self.assertEqual(request['body'], expected) def test_change_pass_no_pass(self): serial_request = """ """ self.assertRaises(AttributeError, self.deserializer.deserialize, serial_request, 'action') def test_change_pass_empty_pass(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "changePassword": { "adminPass": "", }, } self.assertEqual(request['body'], expected) def test_reboot(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "reboot": { "type": "HARD", }, } self.assertEqual(request['body'], expected) def test_reboot_no_type(self): serial_request = """ """ self.assertRaises(AttributeError, self.deserializer.deserialize, serial_request, 'action') def test_resize(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "resize": {"flavorRef": "http://localhost/flavors/3"}, } self.assertEqual(request['body'], expected) def test_resize_no_flavor_ref(self): serial_request = """ """ self.assertRaises(AttributeError, self.deserializer.deserialize, serial_request, 'action') def test_confirm_resize(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "confirmResize": None, } self.assertEqual(request['body'], expected) def test_revert_resize(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "revertResize": None, } self.assertEqual(request['body'], expected) def test_rebuild(self): serial_request = """ Apache1 Mg== """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "rebuild": { "name": "new-server-test", "imageRef": "http://localhost/images/1", "metadata": { "My Server Name": "Apache1", }, "personality": [ {"path": "/etc/banner.txt", "contents": "Mg=="}, ], }, } self.assertThat(request['body'], matchers.DictMatches(expected)) def test_rebuild_minimum(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "rebuild": { "imageRef": "http://localhost/images/1", }, } self.assertThat(request['body'], matchers.DictMatches(expected)) def test_rebuild_no_imageRef(self): serial_request = """ Apache1 Mg== """ self.assertRaises(AttributeError, self.deserializer.deserialize, serial_request, 'action') def test_rebuild_blank_name(self): serial_request = """ """ self.assertRaises(AttributeError, self.deserializer.deserialize, serial_request, 'action') def test_rebuild_preserve_ephemeral_passed(self): serial_request = """ """ request = self.deserializer.deserialize(serial_request, 'action') expected = { "rebuild": { "imageRef": "http://localhost/images/1", "preserve_ephemeral": True, }, } self.assertThat(request['body'], matchers.DictMatches(expected)) def test_corrupt_xml(self): """Should throw a 400 error on corrupt xml.""" self.assertRaises( exception.MalformedRequestBody, self.deserializer.deserialize, utils.killer_xml_body()) nova-2014.1/nova/tests/api/openstack/compute/test_consoles.py0000664000175400017540000002636612323721477025506 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import uuid as stdlib_uuid from lxml import etree import webob from nova.api.openstack.compute import consoles from nova.compute import vm_states from nova import console from nova import db from nova import exception from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import matchers FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' class FakeInstanceDB(object): def __init__(self): self.instances_by_id = {} self.ids_by_uuid = {} self.max_id = 0 def return_server_by_id(self, context, id): if id not in self.instances_by_id: self._add_server(id=id) return dict(self.instances_by_id[id]) def return_server_by_uuid(self, context, uuid): if uuid not in self.ids_by_uuid: self._add_server(uuid=uuid) return dict(self.instances_by_id[self.ids_by_uuid[uuid]]) def _add_server(self, id=None, uuid=None): if id is None: id = self.max_id + 1 if uuid is None: uuid = str(stdlib_uuid.uuid4()) instance = stub_instance(id, uuid=uuid) self.instances_by_id[id] = instance self.ids_by_uuid[uuid] = id if id > self.max_id: self.max_id = id def stub_instance(id, user_id='fake', project_id='fake', host=None, vm_state=None, task_state=None, reservation_id="", uuid=FAKE_UUID, image_ref="10", flavor_id="1", name=None, key_name='', access_ipv4=None, access_ipv6=None, progress=0): if host is not None: host = str(host) if key_name: key_data = 'FAKE' else: key_data = '' # ReservationID isn't sent back, hack it in there. server_name = name or "server%s" % id if reservation_id != "": server_name = "reservation_%s" % (reservation_id, ) instance = { "id": int(id), "created_at": datetime.datetime(2010, 10, 10, 12, 0, 0), "updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0), "admin_pass": "", "user_id": user_id, "project_id": project_id, "image_ref": image_ref, "kernel_id": "", "ramdisk_id": "", "launch_index": 0, "key_name": key_name, "key_data": key_data, "vm_state": vm_state or vm_states.BUILDING, "task_state": task_state, "memory_mb": 0, "vcpus": 0, "root_gb": 0, "hostname": "", "host": host, "instance_type": {}, "user_data": "", "reservation_id": reservation_id, "mac_address": "", "scheduled_at": timeutils.utcnow(), "launched_at": timeutils.utcnow(), "terminated_at": timeutils.utcnow(), "availability_zone": "", "display_name": server_name, "display_description": "", "locked": False, "metadata": [], "access_ip_v4": access_ipv4, "access_ip_v6": access_ipv6, "uuid": uuid, "progress": progress} return instance class ConsolesControllerTest(test.NoDBTestCase): def setUp(self): super(ConsolesControllerTest, self).setUp() self.flags(verbose=True) self.instance_db = FakeInstanceDB() self.stubs.Set(db, 'instance_get', self.instance_db.return_server_by_id) self.stubs.Set(db, 'instance_get_by_uuid', self.instance_db.return_server_by_uuid) self.uuid = str(stdlib_uuid.uuid4()) self.url = '/v2/fake/servers/%s/consoles' % self.uuid self.controller = consoles.Controller() def test_create_console(self): def fake_create_console(cons_self, context, instance_id): self.assertEqual(instance_id, self.uuid) return {} self.stubs.Set(console.api.API, 'create_console', fake_create_console) req = fakes.HTTPRequest.blank(self.url) self.controller.create(req, self.uuid, None) def test_show_console(self): def fake_get_console(cons_self, context, instance_id, console_id): self.assertEqual(instance_id, self.uuid) self.assertEqual(console_id, 20) pool = dict(console_type='fake_type', public_hostname='fake_hostname') return dict(id=console_id, password='fake_password', port='fake_port', pool=pool, instance_name='inst-0001') expected = {'console': {'id': 20, 'port': 'fake_port', 'host': 'fake_hostname', 'password': 'fake_password', 'instance_name': 'inst-0001', 'console_type': 'fake_type'}} self.stubs.Set(console.api.API, 'get_console', fake_get_console) req = fakes.HTTPRequest.blank(self.url + '/20') res_dict = self.controller.show(req, self.uuid, '20') self.assertThat(res_dict, matchers.DictMatches(expected)) def test_show_console_unknown_console(self): def fake_get_console(cons_self, context, instance_id, console_id): raise exception.ConsoleNotFound(console_id=console_id) self.stubs.Set(console.api.API, 'get_console', fake_get_console) req = fakes.HTTPRequest.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, '20') def test_show_console_unknown_instance(self): def fake_get_console(cons_self, context, instance_id, console_id): raise exception.InstanceNotFound(instance_id=instance_id) self.stubs.Set(console.api.API, 'get_console', fake_get_console) req = fakes.HTTPRequest.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.uuid, '20') def test_list_consoles(self): def fake_get_consoles(cons_self, context, instance_id): self.assertEqual(instance_id, self.uuid) pool1 = dict(console_type='fake_type', public_hostname='fake_hostname') cons1 = dict(id=10, password='fake_password', port='fake_port', pool=pool1) pool2 = dict(console_type='fake_type2', public_hostname='fake_hostname2') cons2 = dict(id=11, password='fake_password2', port='fake_port2', pool=pool2) return [cons1, cons2] expected = {'consoles': [{'console': {'id': 10, 'console_type': 'fake_type'}}, {'console': {'id': 11, 'console_type': 'fake_type2'}}]} self.stubs.Set(console.api.API, 'get_consoles', fake_get_consoles) req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.uuid) self.assertThat(res_dict, matchers.DictMatches(expected)) def test_delete_console(self): def fake_get_console(cons_self, context, instance_id, console_id): self.assertEqual(instance_id, self.uuid) self.assertEqual(console_id, 20) pool = dict(console_type='fake_type', public_hostname='fake_hostname') return dict(id=console_id, password='fake_password', port='fake_port', pool=pool) def fake_delete_console(cons_self, context, instance_id, console_id): self.assertEqual(instance_id, self.uuid) self.assertEqual(console_id, 20) self.stubs.Set(console.api.API, 'get_console', fake_get_console) self.stubs.Set(console.api.API, 'delete_console', fake_delete_console) req = fakes.HTTPRequest.blank(self.url + '/20') self.controller.delete(req, self.uuid, '20') def test_delete_console_unknown_console(self): def fake_delete_console(cons_self, context, instance_id, console_id): raise exception.ConsoleNotFound(console_id=console_id) self.stubs.Set(console.api.API, 'delete_console', fake_delete_console) req = fakes.HTTPRequest.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, '20') def test_delete_console_unknown_instance(self): def fake_delete_console(cons_self, context, instance_id, console_id): raise exception.InstanceNotFound(instance_id=instance_id) self.stubs.Set(console.api.API, 'delete_console', fake_delete_console) req = fakes.HTTPRequest.blank(self.url + '/20') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.uuid, '20') class TestConsolesXMLSerializer(test.NoDBTestCase): def test_show(self): fixture = {'console': {'id': 20, 'password': 'fake_password', 'port': 'fake_port', 'host': 'fake_hostname', 'console_type': 'fake_type'}} output = consoles.ConsoleTemplate().serialize(fixture) res_tree = etree.XML(output) self.assertEqual(res_tree.tag, 'console') self.assertEqual(res_tree.xpath('id')[0].text, '20') self.assertEqual(res_tree.xpath('port')[0].text, 'fake_port') self.assertEqual(res_tree.xpath('host')[0].text, 'fake_hostname') self.assertEqual(res_tree.xpath('password')[0].text, 'fake_password') self.assertEqual(res_tree.xpath('console_type')[0].text, 'fake_type') def test_index(self): fixture = {'consoles': [{'console': {'id': 10, 'console_type': 'fake_type'}}, {'console': {'id': 11, 'console_type': 'fake_type2'}}]} output = consoles.ConsolesTemplate().serialize(fixture) res_tree = etree.XML(output) self.assertEqual(res_tree.tag, 'consoles') self.assertEqual(len(res_tree), 2) self.assertEqual(res_tree[0].tag, 'console') self.assertEqual(res_tree[1].tag, 'console') self.assertEqual(len(res_tree[0]), 1) self.assertEqual(res_tree[0][0].tag, 'console') self.assertEqual(len(res_tree[1]), 1) self.assertEqual(res_tree[1][0].tag, 'console') self.assertEqual(res_tree[0][0].xpath('id')[0].text, '10') self.assertEqual(res_tree[1][0].xpath('id')[0].text, '11') self.assertEqual(res_tree[0][0].xpath('console_type')[0].text, 'fake_type') self.assertEqual(res_tree[1][0].xpath('console_type')[0].text, 'fake_type2') nova-2014.1/nova/tests/api/openstack/compute/__init__.py0000664000175400017540000000117312323721477024346 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/api/openstack/test_faults.py0000664000175400017540000002552412323721477023476 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from xml.dom import minidom import mock import webob import webob.dec import webob.exc import nova.api.openstack from nova.api.openstack import common from nova.api.openstack import wsgi from nova import exception from nova.openstack.common import gettextutils from nova.openstack.common import jsonutils from nova import test class TestFaultWrapper(test.NoDBTestCase): """Tests covering `nova.api.openstack:FaultWrapper` class.""" @mock.patch('nova.openstack.common.gettextutils.translate') def test_safe_exception_translated(self, mock_translate): msg = gettextutils.Message('Should be translated.', domain='nova') safe_exception = exception.NotFound() safe_exception.msg_fmt = msg safe_exception.safe = True safe_exception.code = 404 req = webob.Request.blank('/') def fake_translate(mesg, locale): if mesg == "Should be translated.": return "I've been translated!" return mesg mock_translate.side_effect = fake_translate def raiser(*args, **kwargs): raise safe_exception wrapper = nova.api.openstack.FaultWrapper(raiser) response = req.get_response(wrapper) self.assertIn("I've been translated!", unicode(response.body)) mock_translate.assert_any_call( u'Should be translated.', None) class TestFaults(test.NoDBTestCase): """Tests covering `nova.api.openstack.faults:Fault` class.""" def _prepare_xml(self, xml_string): """Remove characters from string which hinder XML equality testing.""" xml_string = xml_string.replace(" ", "") xml_string = xml_string.replace("\n", "") xml_string = xml_string.replace("\t", "") return xml_string def test_400_fault_json(self): # Test fault serialized to JSON via file-extension and/or header. requests = [ webob.Request.blank('/.json'), webob.Request.blank('/', headers={"Accept": "application/json"}), ] for request in requests: fault = wsgi.Fault(webob.exc.HTTPBadRequest(explanation='scram')) response = request.get_response(fault) expected = { "badRequest": { "message": "scram", "code": 400, }, } actual = jsonutils.loads(response.body) self.assertEqual(response.content_type, "application/json") self.assertEqual(expected, actual) def test_413_fault_json(self): # Test fault serialized to JSON via file-extension and/or header. requests = [ webob.Request.blank('/.json'), webob.Request.blank('/', headers={"Accept": "application/json"}), ] for request in requests: exc = webob.exc.HTTPRequestEntityTooLarge # NOTE(aloga): we intentionally pass an integer for the # 'Retry-After' header. It should be then converted to a str fault = wsgi.Fault(exc(explanation='sorry', headers={'Retry-After': 4})) response = request.get_response(fault) expected = { "overLimit": { "message": "sorry", "code": 413, "retryAfter": "4", }, } actual = jsonutils.loads(response.body) self.assertEqual(response.content_type, "application/json") self.assertEqual(expected, actual) def test_429_fault_json(self): # Test fault serialized to JSON via file-extension and/or header. requests = [ webob.Request.blank('/.json'), webob.Request.blank('/', headers={"Accept": "application/json"}), ] for request in requests: exc = webob.exc.HTTPTooManyRequests # NOTE(aloga): we intentionally pass an integer for the # 'Retry-After' header. It should be then converted to a str fault = wsgi.Fault(exc(explanation='sorry', headers={'Retry-After': 4})) response = request.get_response(fault) expected = { "overLimit": { "message": "sorry", "code": 429, "retryAfter": "4", }, } actual = jsonutils.loads(response.body) self.assertEqual(response.content_type, "application/json") self.assertEqual(expected, actual) def test_raise(self): # Ensure the ability to raise :class:`Fault` in WSGI-ified methods. @webob.dec.wsgify def raiser(req): raise wsgi.Fault(webob.exc.HTTPNotFound(explanation='whut?')) req = webob.Request.blank('/.xml') resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/xml") self.assertEqual(resp.status_int, 404) self.assertIn('whut?', resp.body) def test_raise_403(self): # Ensure the ability to raise :class:`Fault` in WSGI-ified methods. @webob.dec.wsgify def raiser(req): raise wsgi.Fault(webob.exc.HTTPForbidden(explanation='whut?')) req = webob.Request.blank('/.xml') resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/xml") self.assertEqual(resp.status_int, 403) self.assertNotIn('resizeNotAllowed', resp.body) self.assertIn('forbidden', resp.body) def test_raise_localize_explanation(self): msgid = "String with params: %s" params = ('blah', ) lazy_gettext = gettextutils._ expl = lazy_gettext(msgid) % params @webob.dec.wsgify def raiser(req): raise wsgi.Fault(webob.exc.HTTPNotFound(explanation=expl)) req = webob.Request.blank('/.xml') resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/xml") self.assertEqual(resp.status_int, 404) self.assertIn((msgid % params), resp.body) def test_fault_has_status_int(self): # Ensure the status_int is set correctly on faults. fault = wsgi.Fault(webob.exc.HTTPBadRequest(explanation='what?')) self.assertEqual(fault.status_int, 400) def test_xml_serializer(self): # Ensure that a v1.1 request responds with a v1.1 xmlns. request = webob.Request.blank('/v1.1', headers={"Accept": "application/xml"}) fault = wsgi.Fault(webob.exc.HTTPBadRequest(explanation='scram')) response = request.get_response(fault) self.assertIn(common.XML_NS_V11, response.body) self.assertEqual(response.content_type, "application/xml") self.assertEqual(response.status_int, 400) class FaultsXMLSerializationTestV11(test.NoDBTestCase): """Tests covering `nova.api.openstack.faults:Fault` class.""" def _prepare_xml(self, xml_string): xml_string = xml_string.replace(" ", "") xml_string = xml_string.replace("\n", "") xml_string = xml_string.replace("\t", "") return xml_string def test_400_fault(self): metadata = {'attributes': {"badRequest": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V11) fixture = { "badRequest": { "message": "scram", "code": 400, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" scram """) % common.XML_NS_V11) self.assertEqual(expected.toxml(), actual.toxml()) def test_413_fault(self): metadata = {'attributes': {"overLimit": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V11) fixture = { "overLimit": { "message": "sorry", "code": 413, "retryAfter": 4, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" sorry 4 """) % common.XML_NS_V11) self.assertEqual(expected.toxml(), actual.toxml()) def test_429_fault(self): metadata = {'attributes': {"overLimit": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V11) fixture = { "overLimit": { "message": "sorry", "code": 429, "retryAfter": 4, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" sorry 4 """) % common.XML_NS_V11) self.assertEqual(expected.toxml(), actual.toxml()) def test_404_fault(self): metadata = {'attributes': {"itemNotFound": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V11) fixture = { "itemNotFound": { "message": "sorry", "code": 404, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" sorry """) % common.XML_NS_V11) self.assertEqual(expected.toxml(), actual.toxml()) nova-2014.1/nova/tests/api/openstack/__init__.py0000664000175400017540000000117312323721477022672 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/api/ec2/0000775000175400017540000000000012323722546017237 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/ec2/public_key/0000775000175400017540000000000012323722546021365 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/api/ec2/public_key/dummy.fingerprint0000664000175400017540000000006012323721477024767 0ustar jenkinsjenkins000000000000001c:87:d1:d9:32:fd:62:3c:78:2b:c0:ad:c0:15:88:df nova-2014.1/nova/tests/api/ec2/public_key/dummy.pub0000664000175400017540000000113112323721477023226 0ustar jenkinsjenkins00000000000000ssh-dss AAAAB3NzaC1kc3MAAACBAMGJlY9XEIm2X234pdO5yFWMp2JuOQx8U0E815IVXhmKxYCBK9ZakgZOIQmPbXoGYyV+mziDPp6HJ0wKYLQxkwLEFr51fAZjWQvRss0SinURRuLkockDfGFtD4pYJthekr/rlqMKlBSDUSpGq8jUWW60UJ18FGooFpxR7ESqQRx/AAAAFQC96LRglaUeeP+E8U/yblEJocuiWwAAAIA3XiMR8Skiz/0aBm5K50SeQznQuMJTyzt9S9uaz5QZWiFu69hOyGSFGw8fqgxEkXFJIuHobQQpGYQubLW0NdaYRqyE/Vud3JUJUb8Texld6dz8vGemyB5d1YvtSeHIo8/BGv2msOqR3u5AZTaGCBD9DhpSGOKHEdNjTtvpPd8S8gAAAIBociGZ5jf09iHLVENhyXujJbxfGRPsyNTyARJfCOGl0oFV6hEzcQyw8U/ePwjgvjc2UizMWLl8tsb2FXKHRdc2v+ND3Us+XqKQ33X3ADP4FZ/+Oj213gMyhCmvFTP0u5FmHog9My4CB7YcIWRuUR42WlhQ2IfPvKwUoTk3R+T6Og== www-data@mk nova-2014.1/nova/tests/api/ec2/test_error_response.py0000664000175400017540000001225412323721477023725 0ustar jenkinsjenkins00000000000000# # Copyright 2013 - 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. # """ Unit tests for EC2 error responses. """ from lxml import etree from nova.api import ec2 from nova import context from nova import test from nova import wsgi class TestClientExceptionEC2(Exception): ec2_code = 'ClientException.Test' message = "Test Client Exception." code = 400 class TestServerExceptionEC2(Exception): ec2_code = 'ServerException.Test' message = "Test Server Exception." code = 500 class Ec2ErrorResponseTestCase(test.NoDBTestCase): """Test EC2 error responses. This deals mostly with api/ec2/__init__.py code, especially the ec2_error_ex helper. """ def setUp(self): super(Ec2ErrorResponseTestCase, self).setUp() self.context = context.RequestContext('test_user_id', 'test_project_id') self.req = wsgi.Request.blank('/test') self.req.environ['nova.context'] = self.context def _validate_ec2_error(self, response, http_status, ec2_code, msg=None, unknown_msg=False): self.assertEqual(response.status_code, http_status, 'Expected HTTP status %s' % http_status) root_e = etree.XML(response.body) self.assertEqual(root_e.tag, 'Response', "Top element must be Response.") errors_e = root_e.find('Errors') self.assertEqual(len(errors_e), 1, "Expected exactly one Error element in Errors.") error_e = errors_e[0] self.assertEqual(error_e.tag, 'Error', "Expected Error element.") # Code code_e = error_e.find('Code') self.assertIsNotNone(code_e, "Code element must be present.") self.assertEqual(code_e.text, ec2_code) # Message if msg or unknown_msg: message_e = error_e.find('Message') self.assertIsNotNone(code_e, "Message element must be present.") if msg: self.assertEqual(message_e.text, msg) elif unknown_msg: self.assertEqual(message_e.text, "Unknown error occurred.", "Error message should be anonymous.") # RequestID requestid_e = root_e.find('RequestID') self.assertIsNotNone(requestid_e, 'RequestID element should be present.') self.assertEqual(requestid_e.text, self.context.request_id) def test_exception_ec2_4xx(self): """Test response to EC2 exception with code = 400.""" msg = "Test client failure." err = ec2.ec2_error_ex(TestClientExceptionEC2(msg), self.req) self._validate_ec2_error(err, TestClientExceptionEC2.code, TestClientExceptionEC2.ec2_code, msg) def test_exception_ec2_5xx(self): """Test response to EC2 exception with code = 500. Expected errors are treated as client ones even with 5xx code. """ msg = "Test client failure with 5xx error code." err = ec2.ec2_error_ex(TestServerExceptionEC2(msg), self.req) self._validate_ec2_error(err, 400, TestServerExceptionEC2.ec2_code, msg) def test_unexpected_exception_ec2_4xx(self): """Test response to unexpected EC2 exception with code = 400.""" msg = "Test unexpected client failure." err = ec2.ec2_error_ex(TestClientExceptionEC2(msg), self.req, unexpected=True) self._validate_ec2_error(err, TestClientExceptionEC2.code, TestClientExceptionEC2.ec2_code, msg) def test_unexpected_exception_ec2_5xx(self): """Test response to unexpected EC2 exception with code = 500. Server exception messages (with code >= 500 or without code) should be filtered as they might contain sensitive information. """ msg = "Test server failure." err = ec2.ec2_error_ex(TestServerExceptionEC2(msg), self.req, unexpected=True) self._validate_ec2_error(err, TestServerExceptionEC2.code, TestServerExceptionEC2.ec2_code, unknown_msg=True) def test_unexpected_exception_builtin(self): """Test response to builtin unexpected exception. Server exception messages (with code >= 500 or without code) should be filtered as they might contain sensitive information. """ msg = "Test server failure." err = ec2.ec2_error_ex(RuntimeError(msg), self.req, unexpected=True) self._validate_ec2_error(err, 500, 'RuntimeError', unknown_msg=True) nova-2014.1/nova/tests/api/ec2/test_cloud.py0000664000175400017540000041455612323721510021763 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2013 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. import base64 import copy import datetime import functools import iso8601 import mock import os import string import tempfile import fixtures from oslo.config import cfg from nova.api.ec2 import cloud from nova.api.ec2 import ec2utils from nova.api.ec2 import inst_state from nova.api.metadata import password from nova.compute import api as compute_api from nova.compute import flavors from nova.compute import power_state from nova.compute import rpcapi as compute_rpcapi from nova.compute import utils as compute_utils from nova.compute import vm_states from nova import context from nova import db from nova import exception from nova.image import s3 from nova.network import api as network_api from nova.network import model from nova.network import neutronv2 from nova.objects import instance as instance_obj from nova.objects import instance_info_cache as instance_info_cache_obj from nova.objects import security_group as security_group_obj from nova.openstack.common import log as logging from nova.openstack.common import policy as common_policy from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack.compute.contrib import ( test_neutron_security_groups as test_neutron) from nova.tests import cast_as_call from nova.tests import fake_block_device from nova.tests import fake_network from nova.tests import fake_utils from nova.tests.image import fake from nova.tests import matchers from nova import utils from nova.virt import fake as fake_virt from nova import volume CONF = cfg.CONF CONF.import_opt('compute_driver', 'nova.virt.driver') CONF.import_opt('default_flavor', 'nova.compute.flavors') CONF.import_opt('use_ipv6', 'nova.netconf') LOG = logging.getLogger(__name__) HOST = "testhost" def get_fake_cache(get_floating): def _ip(ip, fixed=True, floats=None): ip_dict = {'address': ip, 'type': 'fixed'} if not fixed: ip_dict['type'] = 'floating' if fixed and floats: ip_dict['floating_ips'] = [_ip(f, fixed=False) for f in floats] return ip_dict if get_floating: ip_info = [_ip('192.168.0.3', floats=['1.2.3.4', '5.6.7.8']), _ip('192.168.0.4')] else: ip_info = [_ip('192.168.0.3'), _ip('192.168.0.4')] info = [{'address': 'aa:bb:cc:dd:ee:ff', 'id': 1, 'network': {'bridge': 'br0', 'id': 1, 'label': 'private', 'subnets': [{'cidr': '192.168.0.0/24', 'ips': ip_info}]}}] if CONF.use_ipv6: ipv6_addr = 'fe80:b33f::a8bb:ccff:fedd:eeff' info[0]['network']['subnets'].append({'cidr': 'fe80:b33f::/64', 'ips': [_ip(ipv6_addr)]}) return model.NetworkInfo.hydrate(info) def get_instances_with_cached_ips(orig_func, get_floating, *args, **kwargs): """Kludge the cache into instance(s) without having to create DB entries """ instances = orig_func(*args, **kwargs) if kwargs.get('want_objects', False): info_cache = instance_info_cache_obj.InstanceInfoCache() info_cache.network_info = get_fake_cache(get_floating) info_cache.obj_reset_changes() else: info_cache = {'network_info': get_fake_cache(get_floating)} if isinstance(instances, (list, instance_obj.InstanceList)): for instance in instances: instance['info_cache'] = info_cache else: instances['info_cache'] = info_cache return instances class CloudTestCase(test.TestCase): def setUp(self): super(CloudTestCase, self).setUp() self.useFixture(test.SampleNetworks()) ec2utils.reset_cache() self.flags(compute_driver='nova.virt.fake.FakeDriver', volume_api_class='nova.tests.fake_volume.API') self.useFixture(fixtures.FakeLogger('boto')) fake_utils.stub_out_utils_spawn_n(self.stubs) def fake_show(meh, context, id): return {'id': id, 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine', 'image_state': 'available'}} def fake_detail(_self, context, **kwargs): image = fake_show(None, context, None) image['name'] = kwargs.get('filters', {}).get('name') return [image] self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) fake.stub_out_image_service(self.stubs) def dumb(*args, **kwargs): pass self.stubs.Set(compute_utils, 'notify_about_instance_usage', dumb) fake_network.set_stub_network_methods(self.stubs) # set up our cloud self.cloud = cloud.CloudController() self.flags(scheduler_driver='nova.scheduler.chance.ChanceScheduler') # Short-circuit the conductor service self.flags(use_local=True, group='conductor') # set up services self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute') self.scheduler = self.start_service('scheduler') self.network = self.start_service('network') self.consoleauth = self.start_service('consoleauth') self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) self.volume_api = volume.API() self.useFixture(cast_as_call.CastAsCall(self.stubs)) # make sure we can map ami-00000001/2 to a uuid in FakeImageService db.s3_image_create(self.context, 'cedef40a-ed67-4d10-800e-17455edce175') db.s3_image_create(self.context, '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6') def tearDown(self): self.volume_api.reset_fake_api(self.context) super(CloudTestCase, self).tearDown() fake.FakeImageService_reset() def fake_get_target(obj, iqn): return 1 def fake_remove_iscsi_target(obj, tid, lun, vol_id, **kwargs): pass def _stub_instance_get_with_fixed_ips(self, func_name, get_floating=True): orig_func = getattr(self.cloud.compute_api, func_name) def fake_get(*args, **kwargs): return get_instances_with_cached_ips(orig_func, get_floating, *args, **kwargs) self.stubs.Set(self.cloud.compute_api, func_name, fake_get) def _create_key(self, name): # NOTE(vish): create depends on pool, so just call helper directly keypair_api = compute_api.KeypairAPI() return keypair_api.create_key_pair(self.context, self.context.user_id, name) def test_describe_regions(self): # Makes sure describe regions runs without raising an exception. result = self.cloud.describe_regions(self.context) self.assertEqual(len(result['regionInfo']), 1) self.flags(region_list=["one=test_host1", "two=test_host2"]) result = self.cloud.describe_regions(self.context) self.assertEqual(len(result['regionInfo']), 2) def test_describe_addresses(self): # Makes sure describe addresses runs without raising an exception. address = "10.10.10.10" db.floating_ip_create(self.context, {'address': address, 'pool': 'nova'}) self.cloud.allocate_address(self.context) self.cloud.describe_addresses(self.context) self.cloud.release_address(self.context, public_ip=address) db.floating_ip_destroy(self.context, address) def test_describe_specific_address(self): # Makes sure describe specific address works. addresses = ["10.10.10.10", "10.10.10.11"] for address in addresses: db.floating_ip_create(self.context, {'address': address, 'pool': 'nova'}) self.cloud.allocate_address(self.context) result = self.cloud.describe_addresses(self.context) self.assertEqual(len(result['addressesSet']), 2) result = self.cloud.describe_addresses(self.context, public_ip=['10.10.10.10']) self.assertEqual(len(result['addressesSet']), 1) for address in addresses: self.cloud.release_address(self.context, public_ip=address) db.floating_ip_destroy(self.context, address) def test_allocate_address(self): address = "10.10.10.10" allocate = self.cloud.allocate_address db.floating_ip_create(self.context, {'address': address, 'pool': 'nova'}) self.assertEqual(allocate(self.context)['publicIp'], address) db.floating_ip_destroy(self.context, address) self.assertRaises(exception.NoMoreFloatingIps, allocate, self.context) def test_release_address(self): address = "10.10.10.10" db.floating_ip_create(self.context, {'address': address, 'pool': 'nova', 'project_id': self.project_id}) result = self.cloud.release_address(self.context, address) self.assertEqual(result.get('return', None), 'true') def test_associate_disassociate_address(self): # Verifies associate runs cleanly without raising an exception. address = "10.10.10.10" db.floating_ip_create(self.context, {'address': address, 'pool': 'nova'}) self.cloud.allocate_address(self.context) # TODO(jkoelker) Probably need to query for instance_type_id and # make sure we get a valid one inst = db.instance_create(self.context, {'host': self.compute.host, 'display_name': HOST, 'instance_type_id': 1}) networks = db.network_get_all(self.context) for network in networks: db.network_update(self.context, network['id'], {'host': self.network.host}) project_id = self.context.project_id nw_info = self.network.allocate_for_instance(self.context, instance_id=inst['id'], instance_uuid=inst['uuid'], host=inst['host'], vpn=None, rxtx_factor=3, project_id=project_id, macs=None) fixed_ips = nw_info.fixed_ips() ec2_id = ec2utils.id_to_ec2_inst_id(inst['uuid']) self.stubs.Set(ec2utils, 'get_ip_info_for_instance', lambda *args: {'fixed_ips': ['10.0.0.1'], 'fixed_ip6s': [], 'floating_ips': []}) self.stubs.Set(network_api.API, 'get_instance_id_by_floating_address', lambda *args: 1) def fake_update_instance_cache_with_nw_info(api, context, instance, nw_info=None, update_cells=True): return self.stubs.Set(network_api, "update_instance_cache_with_nw_info", fake_update_instance_cache_with_nw_info) self.cloud.associate_address(self.context, instance_id=ec2_id, public_ip=address) self.cloud.disassociate_address(self.context, public_ip=address) self.cloud.release_address(self.context, public_ip=address) self.network.deallocate_fixed_ip(self.context, fixed_ips[0]['address'], inst['host']) db.instance_destroy(self.context, inst['uuid']) db.floating_ip_destroy(self.context, address) def test_disassociate_auto_assigned_address(self): """Verifies disassociating auto assigned floating IP raises an exception """ address = "10.10.10.10" def fake_get(*args, **kwargs): pass def fake_disassociate_floating_ip(*args, **kwargs): raise exception.CannotDisassociateAutoAssignedFloatingIP() self.stubs.Set(network_api.API, 'get_instance_id_by_floating_address', lambda *args: 1) self.stubs.Set(self.cloud.compute_api, 'get', fake_get) self.stubs.Set(network_api.API, 'disassociate_floating_ip', fake_disassociate_floating_ip) self.assertRaises(exception.CannotDisassociateAutoAssignedFloatingIP, self.cloud.disassociate_address, self.context, public_ip=address) def test_disassociate_unassociated_address(self): address = "10.10.10.10" db.floating_ip_create(self.context, {'address': address, 'pool': 'nova'}) self.cloud.allocate_address(self.context) self.cloud.describe_addresses(self.context) result = self.cloud.disassociate_address(self.context, public_ip=address) self.assertEqual(result['return'], 'true') db.floating_ip_destroy(self.context, address) def test_describe_security_groups(self): # Makes sure describe_security_groups works and filters results. sec = db.security_group_create(self.context, {'project_id': self.context.project_id, 'name': 'test'}) result = self.cloud.describe_security_groups(self.context) # NOTE(vish): should have the default group as well self.assertEqual(len(result['securityGroupInfo']), 2) result = self.cloud.describe_security_groups(self.context, group_name=[sec['name']]) self.assertEqual(len(result['securityGroupInfo']), 1) self.assertEqual( result['securityGroupInfo'][0]['groupName'], sec['name']) db.security_group_destroy(self.context, sec['id']) def test_describe_security_groups_all_tenants(self): # Makes sure describe_security_groups works and filters results. sec = db.security_group_create(self.context, {'project_id': 'foobar', 'name': 'test'}) def _check_name(result, i, expected): self.assertEqual(result['securityGroupInfo'][i]['groupName'], expected) # include all tenants filter = [{'name': 'all-tenants', 'value': {'1': 1}}] result = self.cloud.describe_security_groups(self.context, filter=filter) self.assertEqual(len(result['securityGroupInfo']), 2) _check_name(result, 0, 'default') _check_name(result, 1, sec['name']) # exclude all tenants filter = [{'name': 'all-tenants', 'value': {'1': 0}}] result = self.cloud.describe_security_groups(self.context, filter=filter) self.assertEqual(len(result['securityGroupInfo']), 1) _check_name(result, 0, 'default') # default all tenants result = self.cloud.describe_security_groups(self.context) self.assertEqual(len(result['securityGroupInfo']), 1) _check_name(result, 0, 'default') db.security_group_destroy(self.context, sec['id']) def test_describe_security_groups_by_id(self): sec = db.security_group_create(self.context, {'project_id': self.context.project_id, 'name': 'test'}) result = self.cloud.describe_security_groups(self.context, group_id=[sec['id']]) self.assertEqual(len(result['securityGroupInfo']), 1) self.assertEqual( result['securityGroupInfo'][0]['groupName'], sec['name']) default = db.security_group_get_by_name(self.context, self.context.project_id, 'default') result = self.cloud.describe_security_groups(self.context, group_id=[default['id']]) self.assertEqual(len(result['securityGroupInfo']), 1) self.assertEqual( result['securityGroupInfo'][0]['groupName'], 'default') db.security_group_destroy(self.context, sec['id']) def test_create_delete_security_group(self): descript = 'test description' create = self.cloud.create_security_group result = create(self.context, 'testgrp', descript) group_descript = result['securityGroupSet'][0]['groupDescription'] self.assertEqual(descript, group_descript) delete = self.cloud.delete_security_group self.assertTrue(delete(self.context, 'testgrp')) def test_security_group_quota_limit(self): self.flags(quota_security_groups=10) for i in range(1, CONF.quota_security_groups): name = 'test name %i' % i descript = 'test description %i' % i create = self.cloud.create_security_group result = create(self.context, name, descript) # 11'th group should fail self.assertRaises(exception.SecurityGroupLimitExceeded, create, self.context, 'foo', 'bar') def test_delete_security_group_by_id(self): sec = db.security_group_create(self.context, {'project_id': self.context.project_id, 'name': 'test'}) delete = self.cloud.delete_security_group self.assertTrue(delete(self.context, group_id=sec['id'])) def test_delete_security_group_with_bad_name(self): delete = self.cloud.delete_security_group notfound = exception.SecurityGroupNotFound self.assertRaises(notfound, delete, self.context, 'badname') def test_delete_security_group_with_bad_group_id(self): delete = self.cloud.delete_security_group notfound = exception.SecurityGroupNotFound self.assertRaises(notfound, delete, self.context, group_id=999) def test_delete_security_group_no_params(self): delete = self.cloud.delete_security_group self.assertRaises(exception.MissingParameter, delete, self.context) def test_delete_security_group_policy_not_allowed(self): rules = common_policy.Rules( {'compute_extension:security_groups': common_policy.parse_rule('project_id:%(project_id)s')}) common_policy.set_rules(rules) with mock.patch.object(self.cloud.security_group_api, 'get') as get: get.return_value = {'project_id': 'invalid'} self.assertRaises(exception.PolicyNotAuthorized, self.cloud.delete_security_group, self.context, 'fake-name', 'fake-id') def test_authorize_security_group_ingress_policy_not_allowed(self): rules = common_policy.Rules( {'compute_extension:security_groups': common_policy.parse_rule('project_id:%(project_id)s')}) common_policy.set_rules(rules) with mock.patch.object(self.cloud.security_group_api, 'get') as get: get.return_value = {'project_id': 'invalid'} self.assertRaises(exception.PolicyNotAuthorized, self.cloud.authorize_security_group_ingress, self.context, 'fake-name', 'fake-id') def test_authorize_security_group_ingress(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress kwargs = {'to_port': '999', 'from_port': '999', 'ip_protocol': 'tcp'} self.assertTrue(authz(self.context, group_name=sec['name'], **kwargs)) def test_authorize_security_group_ingress_ip_permissions_ip_ranges(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress kwargs = {'ip_permissions': [{'to_port': 81, 'from_port': 81, 'ip_ranges': {'1': {'cidr_ip': u'0.0.0.0/0'}, '2': {'cidr_ip': u'10.10.10.10/32'}}, 'ip_protocol': u'tcp'}]} self.assertTrue(authz(self.context, group_name=sec['name'], **kwargs)) def test_authorize_security_group_fail_missing_source_group(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress kwargs = {'ip_permissions': [{'to_port': 81, 'from_port': 81, 'ip_ranges': {'1': {'cidr_ip': u'0.0.0.0/0'}, '2': {'cidr_ip': u'10.10.10.10/32'}}, 'groups': {'1': {'user_id': u'someuser', 'group_name': u'somegroup1'}}, 'ip_protocol': u'tcp'}]} self.assertRaises(exception.SecurityGroupNotFound, authz, self.context, group_name=sec['name'], **kwargs) def test_authorize_security_group_ingress_ip_permissions_groups(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, {'project_id': 'someuser', 'name': 'somegroup1'}) sec = db.security_group_create(self.context, {'project_id': 'someuser', 'name': 'othergroup2'}) sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress kwargs = {'ip_permissions': [{'to_port': 81, 'from_port': 81, 'groups': {'1': {'user_id': u'someuser', 'group_name': u'somegroup1'}, '2': {'user_id': u'someuser', 'group_name': u'othergroup2'}}, 'ip_protocol': u'tcp'}]} self.assertTrue(authz(self.context, group_name=sec['name'], **kwargs)) def test_describe_security_group_ingress_groups(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec1 = db.security_group_create(self.context, kwargs) sec2 = db.security_group_create(self.context, {'project_id': 'someuser', 'name': 'somegroup1'}) sec3 = db.security_group_create(self.context, {'project_id': 'someuser', 'name': 'othergroup2'}) authz = self.cloud.authorize_security_group_ingress kwargs = {'ip_permissions': [ {'groups': {'1': {'user_id': u'someuser', 'group_name': u'somegroup1'}}}, {'ip_protocol': 'tcp', 'from_port': 80, 'to_port': 80, 'groups': {'1': {'user_id': u'someuser', 'group_name': u'othergroup2'}}}]} self.assertTrue(authz(self.context, group_name=sec1['name'], **kwargs)) describe = self.cloud.describe_security_groups groups = describe(self.context, group_name=['test']) self.assertEqual(len(groups['securityGroupInfo']), 1) actual_rules = groups['securityGroupInfo'][0]['ipPermissions'] self.assertEqual(len(actual_rules), 4) expected_rules = [{'fromPort': -1, 'groups': [{'groupName': 'somegroup1', 'userId': 'someuser'}], 'ipProtocol': 'icmp', 'ipRanges': [], 'toPort': -1}, {'fromPort': 1, 'groups': [{'groupName': u'somegroup1', 'userId': u'someuser'}], 'ipProtocol': 'tcp', 'ipRanges': [], 'toPort': 65535}, {'fromPort': 1, 'groups': [{'groupName': u'somegroup1', 'userId': u'someuser'}], 'ipProtocol': 'udp', 'ipRanges': [], 'toPort': 65535}, {'fromPort': 80, 'groups': [{'groupName': u'othergroup2', 'userId': u'someuser'}], 'ipProtocol': u'tcp', 'ipRanges': [], 'toPort': 80}] for rule in expected_rules: self.assertIn(rule, actual_rules) db.security_group_destroy(self.context, sec3['id']) db.security_group_destroy(self.context, sec2['id']) db.security_group_destroy(self.context, sec1['id']) def test_revoke_security_group_ingress_policy_not_allowed(self): rules = common_policy.Rules( {'compute_extension:security_groups': common_policy.parse_rule('project_id:%(project_id)s')}) common_policy.set_rules(rules) with mock.patch.object(self.cloud.security_group_api, 'get') as get: get.return_value = {'project_id': 'invalid'} self.assertRaises(exception.PolicyNotAuthorized, self.cloud.revoke_security_group_ingress, self.context, 'fake-name', 'fake-id') def test_revoke_security_group_ingress(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress kwargs = {'to_port': '999', 'from_port': '999', 'ip_protocol': 'tcp'} authz(self.context, group_id=sec['id'], **kwargs) revoke = self.cloud.revoke_security_group_ingress self.assertTrue(revoke(self.context, group_name=sec['name'], **kwargs)) def test_authorize_revoke_security_group_ingress_by_id(self): sec = db.security_group_create(self.context, {'project_id': self.context.project_id, 'name': 'test'}) authz = self.cloud.authorize_security_group_ingress kwargs = {'to_port': '999', 'from_port': '999', 'ip_protocol': 'tcp'} authz(self.context, group_id=sec['id'], **kwargs) revoke = self.cloud.revoke_security_group_ingress self.assertTrue(revoke(self.context, group_id=sec['id'], **kwargs)) def test_authorize_security_group_ingress_missing_protocol_params(self): sec = db.security_group_create(self.context, {'project_id': self.context.project_id, 'name': 'test'}) authz = self.cloud.authorize_security_group_ingress self.assertRaises(exception.MissingParameter, authz, self.context, 'test') def test_authorize_security_group_ingress_missing_group_name_or_id(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} authz = self.cloud.authorize_security_group_ingress self.assertRaises(exception.MissingParameter, authz, self.context, **kwargs) def test_authorize_security_group_ingress_already_exists(self): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress kwargs = {'to_port': '999', 'from_port': '999', 'ip_protocol': 'tcp'} authz(self.context, group_name=sec['name'], **kwargs) self.assertRaises(exception.SecurityGroupRuleExists, authz, self.context, group_name=sec['name'], **kwargs) def test_security_group_ingress_quota_limit(self): self.flags(quota_security_group_rules=20) kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec_group = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress for i in range(100, 120): kwargs = {'to_port': i, 'from_port': i, 'ip_protocol': 'tcp'} authz(self.context, group_id=sec_group['id'], **kwargs) kwargs = {'to_port': 121, 'from_port': 121, 'ip_protocol': 'tcp'} self.assertRaises(exception.SecurityGroupLimitExceeded, authz, self.context, group_id=sec_group['id'], **kwargs) def _test_authorize_security_group_no_ports_with_source_group(self, proto): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress auth_kwargs = {'ip_protocol': proto, 'groups': {'1': {'user_id': self.context.user_id, 'group_name': u'test'}}} self.assertTrue(authz(self.context, group_name=sec['name'], **auth_kwargs)) describe = self.cloud.describe_security_groups groups = describe(self.context, group_name=['test']) self.assertEqual(len(groups['securityGroupInfo']), 1) actual_rules = groups['securityGroupInfo'][0]['ipPermissions'] expected_rules = [{'groups': [{'groupName': 'test', 'userId': self.context.user_id}], 'ipProtocol': proto, 'ipRanges': []}] if proto == 'icmp': expected_rules[0]['fromPort'] = -1 expected_rules[0]['toPort'] = -1 else: expected_rules[0]['fromPort'] = 1 expected_rules[0]['toPort'] = 65535 self.assertTrue(expected_rules == actual_rules) describe = self.cloud.describe_security_groups groups = describe(self.context, group_name=['test']) db.security_group_destroy(self.context, sec['id']) def _test_authorize_security_group_no_ports_no_source_group(self, proto): kwargs = {'project_id': self.context.project_id, 'name': 'test'} sec = db.security_group_create(self.context, kwargs) authz = self.cloud.authorize_security_group_ingress auth_kwargs = {'ip_protocol': proto} self.assertRaises(exception.MissingParameter, authz, self.context, group_name=sec['name'], **auth_kwargs) db.security_group_destroy(self.context, sec['id']) def test_authorize_security_group_no_ports_icmp(self): self._test_authorize_security_group_no_ports_with_source_group('icmp') self._test_authorize_security_group_no_ports_no_source_group('icmp') def test_authorize_security_group_no_ports_tcp(self): self._test_authorize_security_group_no_ports_with_source_group('tcp') self._test_authorize_security_group_no_ports_no_source_group('tcp') def test_authorize_security_group_no_ports_udp(self): self._test_authorize_security_group_no_ports_with_source_group('udp') self._test_authorize_security_group_no_ports_no_source_group('udp') def test_revoke_security_group_ingress_missing_group_name_or_id(self): kwargs = {'to_port': '999', 'from_port': '999', 'ip_protocol': 'tcp'} revoke = self.cloud.revoke_security_group_ingress self.assertRaises(exception.MissingParameter, revoke, self.context, **kwargs) def test_delete_security_group_in_use_by_group(self): group1 = self.cloud.create_security_group(self.context, 'testgrp1', "test group 1") group2 = self.cloud.create_security_group(self.context, 'testgrp2', "test group 2") kwargs = {'groups': {'1': {'user_id': u'%s' % self.context.user_id, 'group_name': u'testgrp2'}}, } self.cloud.authorize_security_group_ingress(self.context, group_name='testgrp1', **kwargs) group1 = db.security_group_get_by_name(self.context, self.project_id, 'testgrp1') get_rules = db.security_group_rule_get_by_security_group self.assertTrue(get_rules(self.context, group1['id'])) self.cloud.delete_security_group(self.context, 'testgrp2') self.assertFalse(get_rules(self.context, group1['id'])) def test_delete_security_group_in_use_by_instance(self): # Ensure that a group can not be deleted if in use by an instance. image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' args = {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active'} inst = db.instance_create(self.context, args) args = {'user_id': self.context.user_id, 'project_id': self.context.project_id, 'name': 'testgrp', 'description': 'Test group'} group = db.security_group_create(self.context, args) db.instance_add_security_group(self.context, inst['uuid'], group['id']) self.assertRaises(exception.InvalidGroup, self.cloud.delete_security_group, self.context, 'testgrp') db.instance_destroy(self.context, inst['uuid']) self.cloud.delete_security_group(self.context, 'testgrp') def test_describe_availability_zones(self): # Makes sure describe_availability_zones works and filters results. service1 = db.service_create(self.context, {'host': 'host1_zones', 'binary': "nova-compute", 'topic': 'compute', 'report_count': 0}) service2 = db.service_create(self.context, {'host': 'host2_zones', 'binary': "nova-compute", 'topic': 'compute', 'report_count': 0}) # Aggregate based zones agg = db.aggregate_create(self.context, {'name': 'agg1'}, {'availability_zone': 'zone1'}) db.aggregate_host_add(self.context, agg['id'], 'host1_zones') agg = db.aggregate_create(self.context, {'name': 'agg2'}, {'availability_zone': 'zone2'}) db.aggregate_host_add(self.context, agg['id'], 'host2_zones') result = self.cloud.describe_availability_zones(self.context) self.assertEqual(len(result['availabilityZoneInfo']), 3) admin_ctxt = context.get_admin_context(read_deleted="no") result = self.cloud.describe_availability_zones(admin_ctxt, zone_name='verbose') self.assertEqual(len(result['availabilityZoneInfo']), 18) db.service_destroy(self.context, service1['id']) db.service_destroy(self.context, service2['id']) def test_describe_availability_zones_verbose(self): # Makes sure describe_availability_zones works and filters results. service1 = db.service_create(self.context, {'host': 'host1_zones', 'binary': "nova-compute", 'topic': 'compute', 'report_count': 0}) service2 = db.service_create(self.context, {'host': 'host2_zones', 'binary': "nova-compute", 'topic': 'compute', 'report_count': 0}) agg = db.aggregate_create(self.context, {'name': 'agg1'}, {'availability_zone': 'second_zone'}) db.aggregate_host_add(self.context, agg['id'], 'host2_zones') admin_ctxt = context.get_admin_context(read_deleted="no") result = self.cloud.describe_availability_zones(admin_ctxt, zone_name='verbose') self.assertEqual(len(result['availabilityZoneInfo']), 17) db.service_destroy(self.context, service1['id']) db.service_destroy(self.context, service2['id']) def assertEqualSorted(self, x, y): self.assertEqual(sorted(x), sorted(y)) def test_describe_instances(self): # Makes sure describe_instances works and filters results. self.flags(use_ipv6=True) self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) sys_meta['EC2_client_token'] = "client-token-1" inst1 = db.instance_create(self.context, {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'hostname': 'server-1234', 'vm_state': 'active', 'system_metadata': sys_meta}) sys_meta['EC2_client_token'] = "client-token-2" inst2 = db.instance_create(self.context, {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host2', 'hostname': 'server-4321', 'vm_state': 'active', 'system_metadata': sys_meta}) comp1 = db.service_create(self.context, {'host': 'host1', 'topic': "compute"}) agg = db.aggregate_create(self.context, {'name': 'agg1'}, {'availability_zone': 'zone1'}) db.aggregate_host_add(self.context, agg['id'], 'host1') comp2 = db.service_create(self.context, {'host': 'host2', 'topic': "compute"}) agg2 = db.aggregate_create(self.context, {'name': 'agg2'}, {'availability_zone': 'zone2'}) db.aggregate_host_add(self.context, agg2['id'], 'host2') result = self.cloud.describe_instances(self.context) result = result['reservationSet'][0] self.assertEqual(len(result['instancesSet']), 2) # Now try filtering. instance_id = ec2utils.id_to_ec2_inst_id(inst2['uuid']) result = self.cloud.describe_instances(self.context, instance_id=[instance_id]) result = result['reservationSet'][0] self.assertEqual(len(result['instancesSet']), 1) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], instance_id) self.assertEqual(instance['placement']['availabilityZone'], 'zone2') self.assertEqual(instance['ipAddress'], '1.2.3.4') self.assertEqual(instance['dnsName'], '1.2.3.4') self.assertEqual(instance['tagSet'], []) self.assertEqual(instance['privateDnsName'], 'server-4321') self.assertEqual(instance['privateIpAddress'], '192.168.0.3') self.assertEqual(instance['dnsNameV6'], 'fe80:b33f::a8bb:ccff:fedd:eeff') self.assertEqual(instance['clientToken'], 'client-token-2') # A filter with even one invalid id should cause an exception to be # raised self.assertRaises(exception.InstanceNotFound, self.cloud.describe_instances, self.context, instance_id=[instance_id, '435679']) db.instance_destroy(self.context, inst1['uuid']) db.instance_destroy(self.context, inst2['uuid']) db.service_destroy(self.context, comp1['id']) db.service_destroy(self.context, comp2['id']) def test_describe_instances_all_invalid(self): # Makes sure describe_instances works and filters results. self.flags(use_ipv6=True) self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') instance_id = ec2utils.id_to_ec2_inst_id('435679') self.assertRaises(exception.InstanceNotFound, self.cloud.describe_instances, self.context, instance_id=[instance_id]) def test_describe_instances_with_filters(self): # Makes sure describe_instances works and filters results. filters = {'filter': [{'name': 'test', 'value': ['a', 'b']}, {'name': 'another_test', 'value': 'a string'}]} self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': []}) def test_describe_instances_with_filters_tags(self): # Makes sure describe_instances works and filters tag results. # We need to stub network calls self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') # We need to stub out the MQ call - it won't succeed. We do want # to check that the method is called, though meta_changes = [None] def fake_change_instance_metadata(inst, ctxt, diff, instance=None, instance_uuid=None): meta_changes[0] = diff self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) utc = iso8601.iso8601.Utc() # Create some test images sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' inst1_kwargs = { 'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active', 'launched_at': timeutils.utcnow(), 'hostname': 'server-1111', 'created_at': datetime.datetime(2012, 5, 1, 1, 1, 1, tzinfo=utc), 'system_metadata': sys_meta } inst2_kwargs = { 'reservation_id': 'b', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host2', 'vm_state': 'active', 'launched_at': timeutils.utcnow(), 'hostname': 'server-1112', 'created_at': datetime.datetime(2012, 5, 1, 1, 1, 2, tzinfo=utc), 'system_metadata': sys_meta } inst1 = db.instance_create(self.context, inst1_kwargs) ec2_id1 = ec2utils.id_to_ec2_inst_id(inst1['uuid']) inst2 = db.instance_create(self.context, inst2_kwargs) ec2_id2 = ec2utils.id_to_ec2_inst_id(inst2['uuid']) # Create some tags # We get one overlapping pair, one overlapping key, and a # disparate pair # inst1 : {'foo': 'bar', 'baz': 'wibble', 'bax': 'wobble'} # inst2 : {'foo': 'bar', 'baz': 'quux', 'zog': 'bobble'} md = {'key': 'foo', 'value': 'bar'} self.cloud.create_tags(self.context, resource_id=[ec2_id1, ec2_id2], tag=[md]) md2 = {'key': 'baz', 'value': 'wibble'} md3 = {'key': 'bax', 'value': 'wobble'} self.cloud.create_tags(self.context, resource_id=[ec2_id1], tag=[md2, md3]) md4 = {'key': 'baz', 'value': 'quux'} md5 = {'key': 'zog', 'value': 'bobble'} self.cloud.create_tags(self.context, resource_id=[ec2_id2], tag=[md4, md5]) # We should be able to search by: inst1_ret = { 'groupSet': None, 'instancesSet': [{'amiLaunchIndex': None, 'dnsName': '1.2.3.4', 'dnsNameV6': 'fe80:b33f::a8bb:ccff:fedd:eeff', 'imageId': 'ami-00000001', 'instanceId': 'i-00000001', 'instanceState': {'code': 16, 'name': 'running'}, 'instanceType': u'm1.medium', 'ipAddress': '1.2.3.4', 'keyName': 'None (None, host1)', 'launchTime': datetime.datetime(2012, 5, 1, 1, 1, 1, tzinfo=utc), 'placement': { 'availabilityZone': 'nova'}, 'privateDnsName': u'server-1111', 'privateIpAddress': '192.168.0.3', 'productCodesSet': None, 'rootDeviceName': '/dev/sda1', 'rootDeviceType': 'instance-store', 'tagSet': [{'key': u'foo', 'value': u'bar'}, {'key': u'baz', 'value': u'wibble'}, {'key': u'bax', 'value': u'wobble'}]}], 'ownerId': None, 'reservationId': u'a'} inst2_ret = { 'groupSet': None, 'instancesSet': [{'amiLaunchIndex': None, 'dnsName': '1.2.3.4', 'dnsNameV6': 'fe80:b33f::a8bb:ccff:fedd:eeff', 'imageId': 'ami-00000001', 'instanceId': 'i-00000002', 'instanceState': {'code': 16, 'name': 'running'}, 'instanceType': u'm1.medium', 'ipAddress': '1.2.3.4', 'keyName': u'None (None, host2)', 'launchTime': datetime.datetime(2012, 5, 1, 1, 1, 2, tzinfo=utc), 'placement': { 'availabilityZone': 'nova'}, 'privateDnsName': u'server-1112', 'privateIpAddress': '192.168.0.3', 'productCodesSet': None, 'rootDeviceName': '/dev/sda1', 'rootDeviceType': 'instance-store', 'tagSet': [{'key': u'foo', 'value': u'bar'}, {'key': u'baz', 'value': u'quux'}, {'key': u'zog', 'value': u'bobble'}]}], 'ownerId': None, 'reservationId': u'b'} # No filter result = self.cloud.describe_instances(self.context) self.assertEqual(result, {'reservationSet': [inst1_ret, inst2_ret]}) # Key search # Both should have tags with key 'foo' and value 'bar' filters = {'filter': [{'name': 'tag:foo', 'value': ['bar']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst1_ret, inst2_ret]}) # Both should have tags with key 'foo' filters = {'filter': [{'name': 'tag-key', 'value': ['foo']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst1_ret, inst2_ret]}) # Value search # Only inst2 should have tags with key 'baz' and value 'quux' filters = {'filter': [{'name': 'tag:baz', 'value': ['quux']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst2_ret]}) # Only inst2 should have tags with value 'quux' filters = {'filter': [{'name': 'tag-value', 'value': ['quux']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst2_ret]}) # Multiple values # Both should have tags with key 'baz' and values in the set # ['quux', 'wibble'] filters = {'filter': [{'name': 'tag:baz', 'value': ['quux', 'wibble']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst1_ret, inst2_ret]}) # Both should have tags with key 'baz' or tags with value 'bar' filters = {'filter': [{'name': 'tag-key', 'value': ['baz']}, {'name': 'tag-value', 'value': ['bar']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst1_ret, inst2_ret]}) # Confirm deletion of tags # Check for format 'tag:' self.cloud.delete_tags(self.context, resource_id=[ec2_id1], tag=[md]) filters = {'filter': [{'name': 'tag:foo', 'value': ['bar']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst2_ret]}) # Check for format 'tag-' filters = {'filter': [{'name': 'tag-key', 'value': ['foo']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst2_ret]}) filters = {'filter': [{'name': 'tag-value', 'value': ['bar']}]} result = self.cloud.describe_instances(self.context, **filters) self.assertEqual(result, {'reservationSet': [inst2_ret]}) # destroy the test instances db.instance_destroy(self.context, inst1['uuid']) db.instance_destroy(self.context, inst2['uuid']) def test_describe_instances_sorting(self): # Makes sure describe_instances works and is sorted as expected. self.flags(use_ipv6=True) self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) inst_base = { 'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'vm_state': 'active', 'system_metadata': sys_meta, } utc = iso8601.iso8601.Utc() inst1_kwargs = {} inst1_kwargs.update(inst_base) inst1_kwargs['host'] = 'host1' inst1_kwargs['hostname'] = 'server-1111' inst1_kwargs['created_at'] = datetime.datetime(2012, 5, 1, 1, 1, 1, tzinfo=utc) inst1 = db.instance_create(self.context, inst1_kwargs) inst2_kwargs = {} inst2_kwargs.update(inst_base) inst2_kwargs['host'] = 'host2' inst2_kwargs['hostname'] = 'server-2222' inst2_kwargs['created_at'] = datetime.datetime(2012, 2, 1, 1, 1, 1, tzinfo=utc) inst2 = db.instance_create(self.context, inst2_kwargs) inst3_kwargs = {} inst3_kwargs.update(inst_base) inst3_kwargs['host'] = 'host3' inst3_kwargs['hostname'] = 'server-3333' inst3_kwargs['created_at'] = datetime.datetime(2012, 2, 5, 1, 1, 1, tzinfo=utc) inst3 = db.instance_create(self.context, inst3_kwargs) comp1 = db.service_create(self.context, {'host': 'host1', 'topic': "compute"}) comp2 = db.service_create(self.context, {'host': 'host2', 'topic': "compute"}) result = self.cloud.describe_instances(self.context) result = result['reservationSet'][0]['instancesSet'] self.assertEqual(result[0]['launchTime'], inst2_kwargs['created_at']) self.assertEqual(result[1]['launchTime'], inst3_kwargs['created_at']) self.assertEqual(result[2]['launchTime'], inst1_kwargs['created_at']) db.instance_destroy(self.context, inst1['uuid']) db.instance_destroy(self.context, inst2['uuid']) db.instance_destroy(self.context, inst3['uuid']) db.service_destroy(self.context, comp1['id']) db.service_destroy(self.context, comp2['id']) def test_describe_instance_state(self): # Makes sure describe_instances for instanceState works. def test_instance_state(expected_code, expected_name, power_state_, vm_state_, values=None): image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) values = values or {} values.update({'image_ref': image_uuid, 'instance_type_id': 1, 'power_state': power_state_, 'vm_state': vm_state_, 'system_metadata': sys_meta}) inst = db.instance_create(self.context, values) instance_id = ec2utils.id_to_ec2_inst_id(inst['uuid']) result = self.cloud.describe_instances(self.context, instance_id=[instance_id]) result = result['reservationSet'][0] result = result['instancesSet'][0]['instanceState'] name = result['name'] code = result['code'] self.assertEqual(code, expected_code) self.assertEqual(name, expected_name) db.instance_destroy(self.context, inst['uuid']) test_instance_state(inst_state.RUNNING_CODE, inst_state.RUNNING, power_state.RUNNING, vm_states.ACTIVE) test_instance_state(inst_state.STOPPED_CODE, inst_state.STOPPED, power_state.NOSTATE, vm_states.STOPPED, {'shutdown_terminate': False}) def test_describe_instances_no_ipv6(self): # Makes sure describe_instances w/ no ipv6 works. self.flags(use_ipv6=False) self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) inst1 = db.instance_create(self.context, {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'hostname': 'server-1234', 'vm_state': 'active', 'system_metadata': sys_meta}) comp1 = db.service_create(self.context, {'host': 'host1', 'topic': "compute"}) result = self.cloud.describe_instances(self.context) result = result['reservationSet'][0] self.assertEqual(len(result['instancesSet']), 1) instance = result['instancesSet'][0] instance_id = ec2utils.id_to_ec2_inst_id(inst1['uuid']) self.assertEqual(instance['instanceId'], instance_id) self.assertEqual(instance['ipAddress'], '1.2.3.4') self.assertEqual(instance['dnsName'], '1.2.3.4') self.assertEqual(instance['privateDnsName'], 'server-1234') self.assertEqual(instance['privateIpAddress'], '192.168.0.3') self.assertNotIn('dnsNameV6', instance) db.instance_destroy(self.context, inst1['uuid']) db.service_destroy(self.context, comp1['id']) def test_describe_instances_deleted(self): image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) args1 = {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active', 'system_metadata': sys_meta} inst1 = db.instance_create(self.context, args1) args2 = {'reservation_id': 'b', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active', 'system_metadata': sys_meta} inst2 = db.instance_create(self.context, args2) db.instance_destroy(self.context, inst1['uuid']) result = self.cloud.describe_instances(self.context) self.assertEqual(len(result['reservationSet']), 1) result1 = result['reservationSet'][0]['instancesSet'] self.assertEqual(result1[0]['instanceId'], ec2utils.id_to_ec2_inst_id(inst2['uuid'])) def test_describe_instances_with_image_deleted(self): image_uuid = 'aebef54a-ed67-4d10-912f-14455edce176' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) args1 = {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active', 'system_metadata': sys_meta} inst1 = db.instance_create(self.context, args1) args2 = {'reservation_id': 'b', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active', 'system_metadata': sys_meta} inst2 = db.instance_create(self.context, args2) result = self.cloud.describe_instances(self.context) self.assertEqual(len(result['reservationSet']), 2) def test_describe_instances_dnsName_set(self): # Verifies dnsName doesn't get set if floating IP is set. self._stub_instance_get_with_fixed_ips('get_all', get_floating=False) self._stub_instance_get_with_fixed_ips('get', get_floating=False) image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) inst1 = db.instance_create(self.context, {'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'host': 'host1', 'hostname': 'server-1234', 'vm_state': 'active', 'system_metadata': sys_meta}) result = self.cloud.describe_instances(self.context) result = result['reservationSet'][0] instance = result['instancesSet'][0] self.assertIsNone(instance['dnsName']) def test_describe_images(self): describe_images = self.cloud.describe_images def fake_detail(meh, context, **kwargs): return [{'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}}] def fake_show_none(meh, context, id): raise exception.ImageNotFound(image_id='bad_image_id') def fake_detail_none(self, context, **kwargs): return [] self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) # list all result1 = describe_images(self.context) result1 = result1['imagesSet'][0] self.assertEqual(result1['imageId'], 'ami-00000001') # provided a valid image_id result2 = describe_images(self.context, ['ami-00000001']) self.assertEqual(1, len(result2['imagesSet'])) # provide more than 1 valid image_id result3 = describe_images(self.context, ['ami-00000001', 'ami-00000002']) self.assertEqual(2, len(result3['imagesSet'])) # provide a non-existing image_id self.stubs.UnsetAll() self.stubs.Set(fake._FakeImageService, 'show', fake_show_none) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail_none) self.assertRaises(exception.ImageNotFound, describe_images, self.context, ['ami-fake']) def assertDictListUnorderedMatch(self, L1, L2, key): self.assertEqual(len(L1), len(L2)) for d1 in L1: self.assertIn(key, d1) for d2 in L2: self.assertIn(key, d2) if d1[key] == d2[key]: self.assertThat(d1, matchers.DictMatches(d2)) def _setUpImageSet(self, create_volumes_and_snapshots=False): self.flags(max_local_block_devices=-1) mappings1 = [ {'device': '/dev/sda1', 'virtual': 'root'}, {'device': 'sdb0', 'virtual': 'ephemeral0'}, {'device': 'sdb1', 'virtual': 'ephemeral1'}, {'device': 'sdb2', 'virtual': 'ephemeral2'}, {'device': 'sdb3', 'virtual': 'ephemeral3'}, {'device': 'sdb4', 'virtual': 'ephemeral4'}, {'device': 'sdc0', 'virtual': 'swap'}, {'device': 'sdc1', 'virtual': 'swap'}, {'device': 'sdc2', 'virtual': 'swap'}, {'device': 'sdc3', 'virtual': 'swap'}, {'device': 'sdc4', 'virtual': 'swap'}] block_device_mapping1 = [ {'device_name': '/dev/sdb1', 'snapshot_id': 'ccec42a2-c220-4806-b762-6b12fbb592e3'}, {'device_name': '/dev/sdb2', 'volume_id': 'ccec42a2-c220-4806-b762-6b12fbb592e4'}, {'device_name': '/dev/sdb3', 'virtual_name': 'ephemeral5'}, {'device_name': '/dev/sdb4', 'no_device': True}, {'device_name': '/dev/sdc1', 'snapshot_id': 'ccec42a2-c220-4806-b762-6b12fbb592e5'}, {'device_name': '/dev/sdc2', 'volume_id': 'ccec42a2-c220-4806-b762-6b12fbb592e6'}, {'device_name': '/dev/sdc3', 'virtual_name': 'ephemeral6'}, {'device_name': '/dev/sdc4', 'no_device': True}] image1 = { 'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine', 'image_state': 'available', 'mappings': mappings1, 'block_device_mapping': block_device_mapping1, } } mappings2 = [{'device': '/dev/sda1', 'virtual': 'root'}] block_device_mapping2 = [{'device_name': '/dev/sdb1', 'snapshot_id': 'ccec42a2-c220-4806-b762-6b12fbb592e7'}] image2 = { 'id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'name': 'fake_name', 'status': 'active', 'properties': { 'kernel_id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'type': 'machine', 'root_device_name': '/dev/sdb1', 'mappings': mappings2, 'block_device_mapping': block_device_mapping2}} def fake_show(meh, context, image_id): _images = [copy.deepcopy(image1), copy.deepcopy(image2)] for i in _images: if str(i['id']) == str(image_id): return i raise exception.ImageNotFound(image_id=image_id) def fake_detail(meh, context, **kwargs): return [copy.deepcopy(image1), copy.deepcopy(image2)] self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) volumes = [] snapshots = [] if create_volumes_and_snapshots: for bdm in block_device_mapping1: if 'volume_id' in bdm: vol = self._volume_create(bdm['volume_id']) volumes.append(vol['id']) if 'snapshot_id' in bdm: snap = self._snapshot_create(bdm['snapshot_id']) snapshots.append(snap['id']) return (volumes, snapshots) def _assertImageSet(self, result, root_device_type, root_device_name): self.assertEqual(1, len(result['imagesSet'])) result = result['imagesSet'][0] self.assertIn('rootDeviceType', result) self.assertEqual(result['rootDeviceType'], root_device_type) self.assertIn('rootDeviceName', result) self.assertEqual(result['rootDeviceName'], root_device_name) self.assertIn('blockDeviceMapping', result) return result _expected_root_device_name1 = '/dev/sda1' # NOTE(yamahata): noDevice doesn't make sense when returning mapping # It makes sense only when user overriding existing # mapping. _expected_bdms1 = [ {'deviceName': '/dev/sdb0', 'virtualName': 'ephemeral0'}, {'deviceName': '/dev/sdb1', 'ebs': {'snapshotId': 'snap-00000001'}}, {'deviceName': '/dev/sdb2', 'ebs': {'snapshotId': 'vol-00000001'}}, {'deviceName': '/dev/sdb3', 'virtualName': 'ephemeral5'}, # {'deviceName': '/dev/sdb4', 'noDevice': True}, {'deviceName': '/dev/sdc0', 'virtualName': 'swap'}, {'deviceName': '/dev/sdc1', 'ebs': {'snapshotId': 'snap-00000002'}}, {'deviceName': '/dev/sdc2', 'ebs': {'snapshotId': 'vol-00000002'}}, {'deviceName': '/dev/sdc3', 'virtualName': 'ephemeral6'}, # {'deviceName': '/dev/sdc4', 'noDevice': True} ] _expected_root_device_name2 = '/dev/sdb1' _expected_bdms2 = [{'deviceName': '/dev/sdb1', 'ebs': {'snapshotId': 'snap-00000003'}}] # NOTE(yamahata): # InstanceBlockDeviceMappingItemType # rootDeviceType # rootDeviceName # blockDeviceMapping # deviceName # virtualName # ebs # snapshotId # volumeSize # deleteOnTermination # noDevice def test_describe_image_mapping(self): # test for rootDeviceName and blockDeviceMapping. describe_images = self.cloud.describe_images self._setUpImageSet() result = describe_images(self.context, ['ami-00000001']) result = self._assertImageSet(result, 'instance-store', self._expected_root_device_name1) self.assertDictListUnorderedMatch(result['blockDeviceMapping'], self._expected_bdms1, 'deviceName') result = describe_images(self.context, ['ami-00000002']) result = self._assertImageSet(result, 'ebs', self._expected_root_device_name2) self.assertDictListUnorderedMatch(result['blockDeviceMapping'], self._expected_bdms2, 'deviceName') def test_describe_image_attribute(self): describe_image_attribute = self.cloud.describe_image_attribute def fake_show(meh, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'container_format': 'ami', 'is_public': True} def fake_detail(self, context, **kwargs): image = fake_show(None, context, None) image['name'] = kwargs.get('filters', {}).get('name') return [image] self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) result = describe_image_attribute(self.context, 'ami-00000001', 'launchPermission') self.assertEqual([{'group': 'all'}], result['launchPermission']) result = describe_image_attribute(self.context, 'ami-00000001', 'kernel') self.assertEqual('aki-00000001', result['kernel']['value']) result = describe_image_attribute(self.context, 'ami-00000001', 'ramdisk') self.assertEqual('ari-00000001', result['ramdisk']['value']) def test_describe_image_attribute_root_device_name(self): describe_image_attribute = self.cloud.describe_image_attribute self._setUpImageSet() result = describe_image_attribute(self.context, 'ami-00000001', 'rootDeviceName') self.assertEqual(result['rootDeviceName'], self._expected_root_device_name1) result = describe_image_attribute(self.context, 'ami-00000002', 'rootDeviceName') self.assertEqual(result['rootDeviceName'], self._expected_root_device_name2) def test_describe_image_attribute_block_device_mapping(self): describe_image_attribute = self.cloud.describe_image_attribute self._setUpImageSet() result = describe_image_attribute(self.context, 'ami-00000001', 'blockDeviceMapping') self.assertDictListUnorderedMatch(result['blockDeviceMapping'], self._expected_bdms1, 'deviceName') result = describe_image_attribute(self.context, 'ami-00000002', 'blockDeviceMapping') self.assertDictListUnorderedMatch(result['blockDeviceMapping'], self._expected_bdms2, 'deviceName') def test_modify_image_attribute(self): modify_image_attribute = self.cloud.modify_image_attribute fake_metadata = { 'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'is_public': False} def fake_show(meh, context, id): return copy.deepcopy(fake_metadata) def fake_detail(self, context, **kwargs): image = fake_show(None, context, None) image['name'] = kwargs.get('filters', {}).get('name') return [image] def fake_update(meh, context, image_id, metadata, data=None): self.assertEqual(metadata['properties']['kernel_id'], fake_metadata['properties']['kernel_id']) self.assertEqual(metadata['properties']['ramdisk_id'], fake_metadata['properties']['ramdisk_id']) self.assertTrue(metadata['is_public']) image = copy.deepcopy(fake_metadata) image.update(metadata) return image self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) self.stubs.Set(fake._FakeImageService, 'update', fake_update) result = modify_image_attribute(self.context, 'ami-00000001', 'launchPermission', 'add', user_group=['all']) self.assertTrue(result['is_public']) def test_register_image(self): register_image = self.cloud.register_image def fake_create(*args, **kwargs): # NOTE(vish): We are mocking s3 so make sure we have converted # to ids instead of uuids. return {'id': 1, 'name': 'fake_name', 'container_format': 'ami', 'properties': {'kernel_id': 1, 'ramdisk_id': 1, 'type': 'machine' }, 'is_public': False } self.stubs.Set(s3.S3ImageService, 'create', fake_create) image_location = 'fake_bucket/fake.img.manifest.xml' result = register_image(self.context, image_location) self.assertEqual(result['imageId'], 'ami-00000001') def test_register_image_empty(self): register_image = self.cloud.register_image self.assertRaises(exception.MissingParameter, register_image, self.context, image_location=None) def test_register_image_name(self): register_image = self.cloud.register_image def fake_create(_self, context, metadata, data=None): self.assertEqual(metadata['name'], self.expected_name) metadata['id'] = 1 metadata['container_format'] = 'ami' metadata['is_public'] = False return metadata self.stubs.Set(s3.S3ImageService, 'create', fake_create) self.expected_name = 'fake_bucket/fake.img.manifest.xml' result = register_image(self.context, image_location=self.expected_name, name=None) self.expected_name = 'an image name' result = register_image(self.context, image_location='some_location', name=self.expected_name) def test_format_image(self): image = { 'id': 1, 'container_format': 'ami', 'name': 'name', 'owner': 'someone', 'properties': { 'image_location': 'location', 'kernel_id': 1, 'ramdisk_id': 1, 'type': 'machine'}, 'is_public': False} expected = {'name': 'name', 'imageOwnerId': 'someone', 'isPublic': False, 'imageId': 'ami-00000001', 'imageState': None, 'rootDeviceType': 'instance-store', 'architecture': None, 'imageLocation': 'location', 'kernelId': 'aki-00000001', 'ramdiskId': 'ari-00000001', 'rootDeviceName': '/dev/sda1', 'imageType': 'machine', 'description': None} result = self.cloud._format_image(image) self.assertThat(result, matchers.DictMatches(expected)) image['properties']['image_location'] = None expected['imageLocation'] = 'None (name)' result = self.cloud._format_image(image) self.assertThat(result, matchers.DictMatches(expected)) image['name'] = None image['properties']['image_location'] = 'location' expected['imageLocation'] = 'location' expected['name'] = 'location' result = self.cloud._format_image(image) self.assertThat(result, matchers.DictMatches(expected)) def test_deregister_image(self): deregister_image = self.cloud.deregister_image def fake_delete(self, context, id): return None self.stubs.Set(fake._FakeImageService, 'delete', fake_delete) # valid image result = deregister_image(self.context, 'ami-00000001') self.assertTrue(result) # invalid image self.stubs.UnsetAll() def fake_detail_empty(self, context, **kwargs): return [] self.stubs.Set(fake._FakeImageService, 'detail', fake_detail_empty) self.assertRaises(exception.ImageNotFound, deregister_image, self.context, 'ami-bad001') def test_deregister_image_wrong_container_type(self): deregister_image = self.cloud.deregister_image def fake_delete(self, context, id): return None self.stubs.Set(fake._FakeImageService, 'delete', fake_delete) self.assertRaises(exception.NotFound, deregister_image, self.context, 'aki-00000001') def _run_instance(self, **kwargs): rv = self.cloud.run_instances(self.context, **kwargs) instance_id = rv['instancesSet'][0]['instanceId'] return instance_id def test_get_password_data(self): instance_id = self._run_instance( image_id='ami-1', instance_type=CONF.default_flavor, max_count=1) self.stubs.Set(password, 'extract_password', lambda i: 'fakepass') output = self.cloud.get_password_data(context=self.context, instance_id=[instance_id]) self.assertEqual(output['passwordData'], 'fakepass') rv = self.cloud.terminate_instances(self.context, [instance_id]) def test_console_output(self): instance_id = self._run_instance( image_id='ami-1', instance_type=CONF.default_flavor, max_count=1) output = self.cloud.get_console_output(context=self.context, instance_id=[instance_id]) self.assertEqual(base64.b64decode(output['output']), 'FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE') # TODO(soren): We need this until we can stop polling in the rpc code # for unit tests. rv = self.cloud.terminate_instances(self.context, [instance_id]) def test_key_generation(self): result, private_key = self._create_key('test') expected = db.key_pair_get(self.context, self.context.user_id, 'test')['public_key'] (fd, fname) = tempfile.mkstemp() os.write(fd, private_key) public_key, err = utils.execute('ssh-keygen', '-e', '-f', fname) os.unlink(fname) # assert key fields are equal self.assertEqual(''.join(public_key.split("\n")[2:-2]), expected.split(" ")[1].strip()) def test_describe_key_pairs(self): self._create_key('test1') self._create_key('test2') result = self.cloud.describe_key_pairs(self.context) keys = result["keySet"] self.assertTrue(filter(lambda k: k['keyName'] == 'test1', keys)) self.assertTrue(filter(lambda k: k['keyName'] == 'test2', keys)) def test_describe_bad_key_pairs(self): self.assertRaises(exception.KeypairNotFound, self.cloud.describe_key_pairs, self.context, key_name=['DoesNotExist']) def test_import_key_pair(self): pubkey_path = os.path.join(os.path.dirname(__file__), 'public_key') f = open(pubkey_path + '/dummy.pub', 'r') dummypub = f.readline().rstrip() f.close f = open(pubkey_path + '/dummy.fingerprint', 'r') dummyfprint = f.readline().rstrip() f.close key_name = 'testimportkey' public_key_material = base64.b64encode(dummypub) result = self.cloud.import_key_pair(self.context, key_name, public_key_material) self.assertEqual(result['keyName'], key_name) self.assertEqual(result['keyFingerprint'], dummyfprint) keydata = db.key_pair_get(self.context, self.context.user_id, key_name) self.assertEqual(dummypub, keydata['public_key']) self.assertEqual(dummyfprint, keydata['fingerprint']) def test_import_key_pair_quota_limit(self): self.flags(quota_key_pairs=0) pubkey_path = os.path.join(os.path.dirname(__file__), 'public_key') f = open(pubkey_path + '/dummy.pub', 'r') dummypub = f.readline().rstrip() f.close f = open(pubkey_path + '/dummy.fingerprint', 'r') dummyfprint = f.readline().rstrip() f.close key_name = 'testimportkey' public_key_material = base64.b64encode(dummypub) self.assertRaises(exception.KeypairLimitExceeded, self.cloud.import_key_pair, self.context, key_name, public_key_material) def test_create_key_pair(self): good_names = ('a', 'a' * 255, string.ascii_letters + ' -_') bad_names = ('', 'a' * 256, '*', '/') for key_name in good_names: result = self.cloud.create_key_pair(self.context, key_name) self.assertEqual(result['keyName'], key_name) for key_name in bad_names: self.assertRaises(exception.InvalidKeypair, self.cloud.create_key_pair, self.context, key_name) def test_create_key_pair_quota_limit(self): self.flags(quota_key_pairs=10) for i in range(0, 10): key_name = 'key_%i' % i result = self.cloud.create_key_pair(self.context, key_name) self.assertEqual(result['keyName'], key_name) # 11'th group should fail self.assertRaises(exception.KeypairLimitExceeded, self.cloud.create_key_pair, self.context, 'foo') def test_delete_key_pair(self): self._create_key('test') self.cloud.delete_key_pair(self.context, 'test') def test_run_instances(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1} run_instances = self.cloud.run_instances def fake_show(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'container_format': 'ami', 'status': 'active'} self.stubs.Set(fake._FakeImageService, 'show', fake_show) def dumb(*args, **kwargs): pass self.stubs.Set(compute_utils, 'notify_about_instance_usage', dumb) self.useFixture(cast_as_call.CastAsCall(self.stubs)) result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['imageId'], 'ami-00000001') self.assertEqual(instance['instanceId'], 'i-00000001') self.assertEqual(instance['instanceState']['name'], 'running') self.assertEqual(instance['instanceType'], 'm1.small') def test_run_instances_invalid_maxcount(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 0} run_instances = self.cloud.run_instances def fake_show(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'status': 'active'} self.stubs.UnsetAll() self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.assertRaises(exception.InvalidInput, run_instances, self.context, **kwargs) def test_run_instances_invalid_mincount(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'min_count': 0} run_instances = self.cloud.run_instances def fake_show(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'status': 'active'} self.stubs.UnsetAll() self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.assertRaises(exception.InvalidInput, run_instances, self.context, **kwargs) def test_run_instances_invalid_count(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1, 'min_count': 2} run_instances = self.cloud.run_instances def fake_show(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'status': 'active'} self.stubs.UnsetAll() self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.assertRaises(exception.InvalidInput, run_instances, self.context, **kwargs) def test_run_instances_availability_zone(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1, 'placement': {'availability_zone': 'fake'}, } run_instances = self.cloud.run_instances def fake_show(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'container_format': 'ami', 'status': 'active'} self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.useFixture(cast_as_call.CastAsCall(self.stubs)) def fake_format(*args, **kwargs): pass self.stubs.Set(self.cloud, '_format_run_instances', fake_format) def fake_create(*args, **kwargs): self.assertEqual(kwargs['availability_zone'], 'fake') return ({'id': 'fake-instance'}, 'fake-res-id') self.stubs.Set(self.cloud.compute_api, 'create', fake_create) # NOTE(vish) the assert for this call is in the fake_create method. run_instances(self.context, **kwargs) def test_empty_reservation_id_from_token(self): client_token = 'client-token-1' def fake_get_all_system_metadata(context, search_filts): reference = [{'key': ['EC2_client_token']}, {'value': ['client-token-1']}] self.assertEqual(search_filts, reference) return [] self.stubs.Set(self.cloud.compute_api, 'get_all_system_metadata', fake_get_all_system_metadata) resv_id = self.cloud._resv_id_from_token(self.context, client_token) self.assertIsNone(resv_id) def test_run_instances_idempotent(self): # Ensure subsequent run_instances calls with same client token # are idempotent and that ones with different client_token are not kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1} run_instances = self.cloud.run_instances def fake_show(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'container_format': 'ami', 'status': 'active'} self.stubs.Set(fake._FakeImageService, 'show', fake_show) def dumb(*args, **kwargs): pass self.stubs.Set(compute_utils, 'notify_about_instance_usage', dumb) self.useFixture(cast_as_call.CastAsCall(self.stubs)) kwargs['client_token'] = 'client-token-1' result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], 'i-00000001') kwargs['client_token'] = 'client-token-2' result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], 'i-00000002') kwargs['client_token'] = 'client-token-2' result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], 'i-00000002') kwargs['client_token'] = 'client-token-1' result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], 'i-00000001') kwargs['client_token'] = 'client-token-3' result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], 'i-00000003') # make sure terminated instances lose their client tokens self.cloud.stop_instances(self.context, instance_id=[instance['instanceId']]) self.cloud.terminate_instances(self.context, instance_id=[instance['instanceId']]) kwargs['client_token'] = 'client-token-3' result = run_instances(self.context, **kwargs) instance = result['instancesSet'][0] self.assertEqual(instance['instanceId'], 'i-00000004') def test_run_instances_image_state_none(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1} run_instances = self.cloud.run_instances def fake_show_no_state(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'container_format': 'ami'} self.stubs.UnsetAll() self.stubs.Set(fake._FakeImageService, 'show', fake_show_no_state) self.assertRaises(exception.ImageNotActive, run_instances, self.context, **kwargs) def test_run_instances_image_state_invalid(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1} run_instances = self.cloud.run_instances def fake_show_decrypt(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine', 'image_state': 'decrypting'}} self.stubs.UnsetAll() self.stubs.Set(fake._FakeImageService, 'show', fake_show_decrypt) self.assertRaises(exception.ImageNotActive, run_instances, self.context, **kwargs) def test_run_instances_image_status_active(self): kwargs = {'image_id': 'ami-00000001', 'instance_type': CONF.default_flavor, 'max_count': 1} run_instances = self.cloud.run_instances def fake_show_stat_active(self, context, id): return {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'}, 'status': 'active'} def fake_id_to_glance_id(context, id): return 'cedef40a-ed67-4d10-800e-17455edce175' self.stubs.Set(fake._FakeImageService, 'show', fake_show_stat_active) self.stubs.Set(ec2utils, 'id_to_glance_id', fake_id_to_glance_id) result = run_instances(self.context, **kwargs) self.assertEqual(len(result['instancesSet']), 1) def _restart_compute_service(self, periodic_interval_max=None): """restart compute service. NOTE: fake driver forgets all instances.""" self.compute.kill() if periodic_interval_max: self.compute = self.start_service( 'compute', periodic_interval_max=periodic_interval_max) else: self.compute = self.start_service('compute') def test_stop_start_instance(self): # Makes sure stop/start instance works. # enforce periodic tasks run in short time to avoid wait for 60s. self._restart_compute_service(periodic_interval_max=0.3) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) # a running instance can't be started. self.assertRaises(exception.InstanceInvalidState, self.cloud.start_instances, self.context, [instance_id]) result = self.cloud.stop_instances(self.context, [instance_id]) self.assertTrue(result) result = self.cloud.start_instances(self.context, [instance_id]) self.assertTrue(result) result = self.cloud.stop_instances(self.context, [instance_id]) self.assertTrue(result) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 80, 'name': 'stopped'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) def test_start_instances(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) result = self.cloud.stop_instances(self.context, [instance_id]) self.assertTrue(result) result = self.cloud.start_instances(self.context, [instance_id]) self.assertTrue(result) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 16, 'name': 'running'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) self._restart_compute_service() def test_start_instances_policy_failed(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) rules = { "compute:start": common_policy.parse_rule("project_id:non_fake"), } common_policy.set_rules(common_policy.Rules(rules)) exc = self.assertRaises(exception.PolicyNotAuthorized, self.cloud.start_instances, self.context, [instance_id]) self.assertIn("compute:start", exc.format_message()) self._restart_compute_service() def test_stop_instances(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) result = self.cloud.stop_instances(self.context, [instance_id]) self.assertTrue(result) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 80, 'name': 'stopped'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) self._restart_compute_service() def test_stop_instances_policy_failed(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) rules = { "compute:stop": common_policy.parse_rule("project_id:non_fake") } common_policy.set_rules(common_policy.Rules(rules)) exc = self.assertRaises(exception.PolicyNotAuthorized, self.cloud.stop_instances, self.context, [instance_id]) self.assertIn("compute:stop", exc.format_message()) self._restart_compute_service() def test_terminate_instances(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) # a running instance can't be started. self.assertRaises(exception.InstanceInvalidState, self.cloud.start_instances, self.context, [instance_id]) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 16, 'name': 'running'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) self._restart_compute_service() def test_terminate_instances_invalid_instance_id(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) self.assertRaises(exception.InstanceNotFound, self.cloud.terminate_instances, self.context, ['i-2']) self._restart_compute_service() def test_terminate_instances_disable_terminate(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) internal_uuid = db.get_instance_uuid_by_ec2_id(self.context, ec2utils.ec2_id_to_id(instance_id)) instance = db.instance_update(self.context, internal_uuid, {'disable_terminate': True}) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 16, 'name': 'running'}, 'currentState': {'code': 16, 'name': 'running'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) instance = db.instance_update(self.context, internal_uuid, {'disable_terminate': False}) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 16, 'name': 'running'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) self._restart_compute_service() def test_terminate_instances_two_instances(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } inst1 = self._run_instance(**kwargs) inst2 = self._run_instance(**kwargs) result = self.cloud.stop_instances(self.context, [inst1]) self.assertTrue(result) expected = {'instancesSet': [ {'instanceId': 'i-00000001', 'previousState': {'code': 80, 'name': 'stopped'}, 'currentState': {'code': 48, 'name': 'terminated'}}, {'instanceId': 'i-00000002', 'previousState': {'code': 16, 'name': 'running'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [inst1, inst2]) self.assertEqual(result, expected) self._restart_compute_service() def test_reboot_instances(self): kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, } instance_id = self._run_instance(**kwargs) # a running instance can't be started. self.assertRaises(exception.InstanceInvalidState, self.cloud.start_instances, self.context, [instance_id]) result = self.cloud.reboot_instances(self.context, [instance_id]) self.assertTrue(result) def _volume_create(self, volume_id=None): kwargs = {'name': 'test-volume', 'description': 'test volume description', 'status': 'available', 'host': 'fake', 'size': 1, 'attach_status': 'detached'} if volume_id: kwargs['volume_id'] = volume_id return self.volume_api.create_with_kwargs(self.context, **kwargs) def _snapshot_create(self, snapshot_id=None): kwargs = {'volume_id': 'ccec42a2-c220-4806-b762-6b12fbb592e4', 'status': "available", 'volume_size': 1} if snapshot_id: kwargs['snap_id'] = snapshot_id return self.volume_api.create_snapshot_with_kwargs(self.context, **kwargs) def _create_snapshot(self, ec2_volume_id): result = self.cloud.create_snapshot(self.context, volume_id=ec2_volume_id) return result['snapshotId'] def _do_test_create_image(self, no_reboot): """Make sure that CreateImage works.""" # enforce periodic tasks run in short time to avoid wait for 60s. self._restart_compute_service(periodic_interval_max=0.3) (volumes, snapshots) = self._setUpImageSet( create_volumes_and_snapshots=True) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1} ec2_instance_id = self._run_instance(**kwargs) def fake_show(meh, context, id): bdm = [dict(snapshot_id=snapshots[0], volume_size=1, device_name='sda1', delete_on_termination=False)] props = dict(kernel_id='cedef40a-ed67-4d10-800e-17455edce175', ramdisk_id='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', root_device_name='/dev/sda1', block_device_mapping=bdm) return dict(id=id, properties=props, container_format='ami', status='active', is_public=True) self.stubs.Set(fake._FakeImageService, 'show', fake_show) def fake_block_device_mapping_get_all_by_instance(context, inst_id, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': volumes[0], 'snapshot_id': snapshots[0], 'source_type': 'snapshot', 'destination_type': 'volume', 'volume_size': 1, 'device_name': 'sda1', 'boot_index': 0, 'delete_on_termination': False, 'connection_info': '{"foo":"bar"}', 'no_device': None})] self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_block_device_mapping_get_all_by_instance) virt_driver = {} def fake_power_on(self, context, instance, network_info, block_device_info): virt_driver['powered_on'] = True self.stubs.Set(fake_virt.FakeDriver, 'power_on', fake_power_on) def fake_power_off(self, instance): virt_driver['powered_off'] = True self.stubs.Set(fake_virt.FakeDriver, 'power_off', fake_power_off) result = self.cloud.create_image(self.context, ec2_instance_id, no_reboot=no_reboot) ec2_ids = [result['imageId']] created_image = self.cloud.describe_images(self.context, ec2_ids)['imagesSet'][0] self.assertIn('blockDeviceMapping', created_image) bdm = created_image['blockDeviceMapping'][0] self.assertEqual(bdm.get('deviceName'), 'sda1') self.assertIn('ebs', bdm) self.assertEqual(bdm['ebs'].get('snapshotId'), ec2utils.id_to_ec2_snap_id(snapshots[0])) self.assertEqual(created_image.get('kernelId'), 'aki-00000001') self.assertEqual(created_image.get('ramdiskId'), 'ari-00000002') self.assertEqual(created_image.get('rootDeviceType'), 'ebs') self.assertNotEqual(virt_driver.get('powered_on'), no_reboot) self.assertNotEqual(virt_driver.get('powered_off'), no_reboot) self.cloud.terminate_instances(self.context, [ec2_instance_id]) self._restart_compute_service() def test_create_image_no_reboot(self): # Make sure that CreateImage works. self._do_test_create_image(True) def test_create_image_with_reboot(self): # Make sure that CreateImage works. self._do_test_create_image(False) def test_create_image_instance_store(self): """Ensure CreateImage fails as expected for an instance-store-backed instance """ # enforce periodic tasks run in short time to avoid wait for 60s. self._restart_compute_service(periodic_interval_max=0.3) (volumes, snapshots) = self._setUpImageSet( create_volumes_and_snapshots=True) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1} ec2_instance_id = self._run_instance(**kwargs) def fake_block_device_mapping_get_all_by_instance(context, inst_id, use_slave=False): return [fake_block_device.FakeDbBlockDeviceDict( {'volume_id': volumes[0], 'snapshot_id': snapshots[0], 'source_type': 'snapshot', 'destination_type': 'volume', 'volume_size': 1, 'device_name': 'vda', 'delete_on_termination': False, 'no_device': None})] self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', fake_block_device_mapping_get_all_by_instance) self.assertRaises(exception.InvalidParameterValue, self.cloud.create_image, self.context, ec2_instance_id, no_reboot=True) @staticmethod def _fake_bdm_get(ctxt, id): return [{'volume_id': 87654321, 'source_type': 'volume', 'destination_type': 'volume', 'snapshot_id': None, 'no_device': None, 'delete_on_termination': True, 'device_name': '/dev/sdh'}, {'volume_id': None, 'snapshot_id': 98765432, 'source_type': 'snapshot', 'destination_type': 'volume', 'no_device': None, 'delete_on_termination': True, 'device_name': '/dev/sdi'}, {'volume_id': None, 'snapshot_id': None, 'no_device': True, 'source_type': 'blank', 'delete_on_termination': None, 'device_name': None}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': None, 'delete_on_termination': None, 'device_name': '/dev/sdb'}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': 'swap', 'delete_on_termination': None, 'device_name': '/dev/sdc'}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': None, 'delete_on_termination': None, 'device_name': '/dev/sdd'}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': None, 'delete_on_termination': None, 'device_name': '/dev/sd3'}, ] def test_describe_instance_attribute(self): # Make sure that describe_instance_attribute works. self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', self._fake_bdm_get) def fake_get(ctxt, instance_id, want_objects=False): self.assertTrue(want_objects) inst_type = flavors.get_default_flavor() inst_type['name'] = 'fake_type' sys_meta = flavors.save_flavor_info({}, inst_type) secgroups = security_group_obj.SecurityGroupList() secgroups.objects.append( security_group_obj.SecurityGroup(name='fake0')) secgroups.objects.append( security_group_obj.SecurityGroup(name='fake1')) instance = instance_obj.Instance() instance.id = 0 instance.uuid = 'e5fe5518-0288-4fa3-b0c4-c79764101b85' instance.root_device_name = '/dev/sdh' instance.security_groups = secgroups instance.vm_state = vm_states.STOPPED instance.kernel_id = 'cedef40a-ed67-4d10-800e-17455edce175' instance.ramdisk_id = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' instance.user_data = 'fake-user data' instance.shutdown_terminate = False instance.disable_terminate = False instance.system_metadata = sys_meta return instance self.stubs.Set(self.cloud.compute_api, 'get', fake_get) def fake_get_instance_uuid_by_ec2_id(ctxt, int_id): if int_id == 305419896: return 'e5fe5518-0288-4fa3-b0c4-c79764101b85' raise exception.InstanceNotFound(instance_id=int_id) self.stubs.Set(db, 'get_instance_uuid_by_ec2_id', fake_get_instance_uuid_by_ec2_id) get_attribute = functools.partial( self.cloud.describe_instance_attribute, self.context, 'i-12345678') bdm = get_attribute('blockDeviceMapping') bdm['blockDeviceMapping'].sort() expected_bdm = {'instance_id': 'i-12345678', 'rootDeviceType': 'ebs', 'blockDeviceMapping': [ {'deviceName': '/dev/sdh', 'ebs': {'status': 'attached', 'deleteOnTermination': True, 'volumeId': 'vol-05397fb1', 'attachTime': '13:56:24'}}]} expected_bdm['blockDeviceMapping'].sort() self.assertEqual(bdm, expected_bdm) groupSet = get_attribute('groupSet') groupSet['groupSet'].sort() expected_groupSet = {'instance_id': 'i-12345678', 'groupSet': [{'groupId': 'fake0'}, {'groupId': 'fake1'}]} expected_groupSet['groupSet'].sort() self.assertEqual(groupSet, expected_groupSet) self.assertEqual(get_attribute('instanceInitiatedShutdownBehavior'), {'instance_id': 'i-12345678', 'instanceInitiatedShutdownBehavior': 'stop'}) self.assertEqual(get_attribute('disableApiTermination'), {'instance_id': 'i-12345678', 'disableApiTermination': False}) self.assertEqual(get_attribute('instanceType'), {'instance_id': 'i-12345678', 'instanceType': 'fake_type'}) self.assertEqual(get_attribute('kernel'), {'instance_id': 'i-12345678', 'kernel': 'aki-00000001'}) self.assertEqual(get_attribute('ramdisk'), {'instance_id': 'i-12345678', 'ramdisk': 'ari-00000002'}) self.assertEqual(get_attribute('rootDeviceName'), {'instance_id': 'i-12345678', 'rootDeviceName': '/dev/sdh'}) # NOTE(yamahata): this isn't supported # get_attribute('sourceDestCheck') self.assertEqual(get_attribute('userData'), {'instance_id': 'i-12345678', 'userData': '}\xa9\x1e\xba\xc7\xabu\xabZ'}) def test_instance_initiated_shutdown_behavior(self): def test_dia_iisb(expected_result, **kwargs): """test describe_instance_attribute attribute instance_initiated_shutdown_behavior """ kwargs.update({'instance_type': CONF.default_flavor, 'max_count': 1}) instance_id = self._run_instance(**kwargs) result = self.cloud.describe_instance_attribute(self.context, instance_id, 'instanceInitiatedShutdownBehavior') self.assertEqual(result['instanceInitiatedShutdownBehavior'], expected_result) expected = {'instancesSet': [ {'instanceId': instance_id, 'previousState': {'code': 16, 'name': 'running'}, 'currentState': {'code': 48, 'name': 'terminated'}}]} result = self.cloud.terminate_instances(self.context, [instance_id]) self.assertEqual(result, expected) self._restart_compute_service() test_dia_iisb('stop', image_id='ami-1') block_device_mapping = [{'device_name': '/dev/vdb', 'virtual_name': 'ephemeral0'}] test_dia_iisb('stop', image_id='ami-2', block_device_mapping=block_device_mapping) def fake_show(self, context, id_): LOG.debug("id_ %s", id_) prop = {} if id_ == 'ami-3': pass elif id_ == 'ami-4': prop = {'mappings': [{'device': 'sdb0', 'virtual': 'ephemeral0'}]} elif id_ == 'ami-5': prop = {'block_device_mapping': [{'device_name': '/dev/sdb0', 'virtual_name': 'ephemeral0'}]} elif id_ == 'ami-6': prop = {'mappings': [{'device': 'sdb0', 'virtual': 'ephemeral0'}], 'block_device_mapping': [{'device_name': '/dev/sdb0', 'virtual_name': 'ephemeral0'}]} prop_base = {'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine'} prop_base.update(prop) return { 'id': id_, 'name': 'fake_name', 'properties': prop_base, 'container_format': 'ami', 'status': 'active'} # NOTE(yamahata): create ami-3 ... ami-6 # ami-1 and ami-2 is already created by setUp() for i in range(3, 7): db.s3_image_create(self.context, 'ami-%d' % i) self.stubs.Set(fake._FakeImageService, 'show', fake_show) test_dia_iisb('stop', image_id='ami-3') test_dia_iisb('stop', image_id='ami-4') test_dia_iisb('stop', image_id='ami-5') test_dia_iisb('stop', image_id='ami-6') def test_create_delete_tags(self): # We need to stub network calls self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') # We need to stub out the MQ call - it won't succeed. We do want # to check that the method is called, though meta_changes = [None] def fake_change_instance_metadata(inst, ctxt, diff, instance=None, instance_uuid=None): meta_changes[0] = diff self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) # Create a test image image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' inst1_kwargs = { 'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'vm_state': 'active', 'launched_at': timeutils.utcnow(), 'hostname': 'server-1111', 'created_at': datetime.datetime(2012, 5, 1, 1, 1, 1) } inst1 = db.instance_create(self.context, inst1_kwargs) ec2_id = ec2utils.id_to_ec2_inst_id(inst1['uuid']) # Create some tags md = {'key': 'foo', 'value': 'bar'} md_result = {'foo': 'bar'} self.cloud.create_tags(self.context, resource_id=[ec2_id], tag=[md]) metadata = self.cloud.compute_api.get_instance_metadata(self.context, inst1) self.assertEqual(metadata, md_result) self.assertEqual(meta_changes, [{'foo': ['+', 'bar']}]) # Delete them self.cloud.delete_tags(self.context, resource_id=[ec2_id], tag=[{'key': 'foo', 'value': 'bar'}]) metadata = self.cloud.compute_api.get_instance_metadata(self.context, inst1) self.assertEqual(metadata, {}) self.assertEqual(meta_changes, [{'foo': ['-']}]) def test_describe_tags(self): # We need to stub network calls self._stub_instance_get_with_fixed_ips('get_all') self._stub_instance_get_with_fixed_ips('get') # We need to stub out the MQ call - it won't succeed. We do want # to check that the method is called, though meta_changes = [None] def fake_change_instance_metadata(inst, ctxt, diff, instance=None, instance_uuid=None): meta_changes[0] = diff self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata', fake_change_instance_metadata) # Create some test images image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' inst1_kwargs = { 'reservation_id': 'a', 'image_ref': image_uuid, 'instance_type_id': 1, 'vm_state': 'active', 'launched_at': timeutils.utcnow(), 'hostname': 'server-1111', 'created_at': datetime.datetime(2012, 5, 1, 1, 1, 1) } inst2_kwargs = { 'reservation_id': 'b', 'image_ref': image_uuid, 'instance_type_id': 1, 'vm_state': 'active', 'launched_at': timeutils.utcnow(), 'hostname': 'server-1112', 'created_at': datetime.datetime(2012, 5, 1, 1, 1, 2) } inst1 = db.instance_create(self.context, inst1_kwargs) ec2_id1 = ec2utils.id_to_ec2_inst_id(inst1['uuid']) inst2 = db.instance_create(self.context, inst2_kwargs) ec2_id2 = ec2utils.id_to_ec2_inst_id(inst2['uuid']) # Create some tags # We get one overlapping pair, and each has a different key value pair # inst1 : {'foo': 'bar', 'bax': 'wibble'} # inst1 : {'foo': 'bar', 'baz': 'quux'} md = {'key': 'foo', 'value': 'bar'} md_result = {'foo': 'bar'} self.cloud.create_tags(self.context, resource_id=[ec2_id1, ec2_id2], tag=[md]) self.assertEqual(meta_changes, [{'foo': ['+', 'bar']}]) metadata = self.cloud.compute_api.get_instance_metadata(self.context, inst1) self.assertEqual(metadata, md_result) metadata = self.cloud.compute_api.get_instance_metadata(self.context, inst2) self.assertEqual(metadata, md_result) md2 = {'key': 'baz', 'value': 'quux'} md2_result = {'baz': 'quux'} md2_result.update(md_result) self.cloud.create_tags(self.context, resource_id=[ec2_id2], tag=[md2]) self.assertEqual(meta_changes, [{'baz': ['+', 'quux']}]) metadata = self.cloud.compute_api.get_instance_metadata(self.context, inst2) self.assertEqual(metadata, md2_result) md3 = {'key': 'bax', 'value': 'wibble'} md3_result = {'bax': 'wibble'} md3_result.update(md_result) self.cloud.create_tags(self.context, resource_id=[ec2_id1], tag=[md3]) self.assertEqual(meta_changes, [{'bax': ['+', 'wibble']}]) metadata = self.cloud.compute_api.get_instance_metadata(self.context, inst1) self.assertEqual(metadata, md3_result) inst1_key_foo = {'key': u'foo', 'resource_id': 'i-00000001', 'resource_type': 'instance', 'value': u'bar'} inst1_key_bax = {'key': u'bax', 'resource_id': 'i-00000001', 'resource_type': 'instance', 'value': u'wibble'} inst2_key_foo = {'key': u'foo', 'resource_id': 'i-00000002', 'resource_type': 'instance', 'value': u'bar'} inst2_key_baz = {'key': u'baz', 'resource_id': 'i-00000002', 'resource_type': 'instance', 'value': u'quux'} # We should be able to search by: # No filter tags = self.cloud.describe_tags(self.context)['tagSet'] self.assertEqualSorted(tags, [inst1_key_foo, inst2_key_foo, inst2_key_baz, inst1_key_bax]) # Resource ID tags = self.cloud.describe_tags(self.context, filter=[{'name': 'resource-id', 'value': [ec2_id1]}])['tagSet'] self.assertEqualSorted(tags, [inst1_key_foo, inst1_key_bax]) # Resource Type tags = self.cloud.describe_tags(self.context, filter=[{'name': 'resource-type', 'value': ['instance']}])['tagSet'] self.assertEqualSorted(tags, [inst1_key_foo, inst2_key_foo, inst2_key_baz, inst1_key_bax]) # Key, either bare or with wildcards tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['foo']}])['tagSet'] self.assertEqualSorted(tags, [inst1_key_foo, inst2_key_foo]) tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['baz']}])['tagSet'] self.assertEqualSorted(tags, [inst2_key_baz]) tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['ba?']}])['tagSet'] self.assertEqualSorted(tags, [inst1_key_bax, inst2_key_baz]) tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['b*']}])['tagSet'] self.assertEqualSorted(tags, [inst1_key_bax, inst2_key_baz]) # Value, either bare or with wildcards tags = self.cloud.describe_tags(self.context, filter=[{'name': 'value', 'value': ['bar']}])['tagSet'] self.assertEqualSorted(tags, [inst1_key_foo, inst2_key_foo]) tags = self.cloud.describe_tags(self.context, filter=[{'name': 'value', 'value': ['wi*']}])['tagSet'] self.assertEqual(tags, [inst1_key_bax]) tags = self.cloud.describe_tags(self.context, filter=[{'name': 'value', 'value': ['quu?']}])['tagSet'] self.assertEqual(tags, [inst2_key_baz]) # Multiple values tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['baz', 'bax']}])['tagSet'] self.assertEqualSorted(tags, [inst2_key_baz, inst1_key_bax]) # Multiple filters (AND): no match tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['baz']}, {'name': 'value', 'value': ['wibble']}])['tagSet'] self.assertEqual(tags, []) # Multiple filters (AND): match tags = self.cloud.describe_tags(self.context, filter=[{'name': 'key', 'value': ['baz']}, {'name': 'value', 'value': ['quux']}])['tagSet'] self.assertEqualSorted(tags, [inst2_key_baz]) # And we should fail on supported resource types self.assertRaises(exception.InvalidParameterValue, self.cloud.describe_tags, self.context, filter=[{'name': 'resource-type', 'value': ['instance', 'volume']}]) def test_resource_type_from_id(self): self.assertEqual( ec2utils.resource_type_from_id(self.context, 'i-12345'), 'instance') self.assertEqual( ec2utils.resource_type_from_id(self.context, 'r-12345'), 'reservation') self.assertEqual( ec2utils.resource_type_from_id(self.context, 'vol-12345'), 'volume') self.assertEqual( ec2utils.resource_type_from_id(self.context, 'snap-12345'), 'snapshot') self.assertEqual( ec2utils.resource_type_from_id(self.context, 'ami-12345'), 'image') self.assertEqual( ec2utils.resource_type_from_id(self.context, 'ari-12345'), 'image') self.assertEqual( ec2utils.resource_type_from_id(self.context, 'aki-12345'), 'image') self.assertIsNone( ec2utils.resource_type_from_id(self.context, 'x-12345')) class CloudTestCaseNeutronProxy(test.TestCase): def setUp(self): super(CloudTestCaseNeutronProxy, self).setUp() cfg.CONF.set_override('security_group_api', 'neutron') self.cloud = cloud.CloudController() self.original_client = neutronv2.get_client neutronv2.get_client = test_neutron.get_client self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) def tearDown(self): neutronv2.get_client = self.original_client test_neutron.get_client()._reset() super(CloudTestCaseNeutronProxy, self).tearDown() def test_describe_security_groups(self): # Makes sure describe_security_groups works and filters results. group_name = 'test' description = 'test' self.cloud.create_security_group(self.context, group_name, description) result = self.cloud.describe_security_groups(self.context) # NOTE(vish): should have the default group as well self.assertEqual(len(result['securityGroupInfo']), 2) result = self.cloud.describe_security_groups(self.context, group_name=[group_name]) self.assertEqual(len(result['securityGroupInfo']), 1) self.assertEqual(result['securityGroupInfo'][0]['groupName'], group_name) self.cloud.delete_security_group(self.context, group_name) def test_describe_security_groups_by_id(self): group_name = 'test' description = 'test' self.cloud.create_security_group(self.context, group_name, description) neutron = test_neutron.get_client() # Get id from neutron since cloud.create_security_group # does not expose it. search_opts = {'name': group_name} groups = neutron.list_security_groups( **search_opts)['security_groups'] result = self.cloud.describe_security_groups(self.context, group_id=[groups[0]['id']]) self.assertEqual(len(result['securityGroupInfo']), 1) self.assertEqual( result['securityGroupInfo'][0]['groupName'], group_name) self.cloud.delete_security_group(self.context, group_name) def test_create_delete_security_group(self): descript = 'test description' create = self.cloud.create_security_group result = create(self.context, 'testgrp', descript) group_descript = result['securityGroupSet'][0]['groupDescription'] self.assertEqual(descript, group_descript) delete = self.cloud.delete_security_group self.assertTrue(delete(self.context, 'testgrp')) nova-2014.1/nova/tests/api/ec2/test_ec2_validate.py0000664000175400017540000002516012323721477023200 0ustar jenkinsjenkins00000000000000# Copyright 2012 Cloudscaling, Inc. # All Rights Reserved. # Copyright 2013 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. import datetime from oslo.config import cfg from nova.api.ec2 import cloud from nova.api.ec2 import ec2utils from nova.compute import utils as compute_utils from nova import context from nova import db from nova import exception from nova.openstack.common import timeutils from nova import test from nova.tests import cast_as_call from nova.tests import fake_network from nova.tests.image import fake CONF = cfg.CONF CONF.import_opt('compute_driver', 'nova.virt.driver') class EC2ValidateTestCase(test.TestCase): def setUp(self): super(EC2ValidateTestCase, self).setUp() self.flags(compute_driver='nova.virt.fake.FakeDriver') def dumb(*args, **kwargs): pass self.stubs.Set(compute_utils, 'notify_about_instance_usage', dumb) fake_network.set_stub_network_methods(self.stubs) # set up our cloud self.cloud = cloud.CloudController() # set up services self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute') self.scheduter = self.start_service('scheduler') self.network = self.start_service('network') self.image_service = fake.FakeImageService() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) self.EC2_MALFORMED_IDS = ['foobar', '', 123] self.EC2_VALID__IDS = ['i-284f3a41', 'i-001', 'i-deadbeef'] self.ec2_id_exception_map = [(x, exception.InvalidInstanceIDMalformed) for x in self.EC2_MALFORMED_IDS] self.ec2_id_exception_map.extend([(x, exception.InstanceNotFound) for x in self.EC2_VALID__IDS]) self.volume_id_exception_map = [(x, exception.InvalidInstanceIDMalformed) for x in self.EC2_MALFORMED_IDS] self.volume_id_exception_map.extend([(x, exception.VolumeNotFound) for x in self.EC2_VALID__IDS]) def fake_show(meh, context, id): return {'id': id, 'container_format': 'ami', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine', 'image_state': 'available'}} def fake_detail(self, context, **kwargs): image = fake_show(self, context, None) image['name'] = kwargs.get('name') return [image] fake.stub_out_image_service(self.stubs) self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) self.useFixture(cast_as_call.CastAsCall(self.stubs)) # make sure we can map ami-00000001/2 to a uuid in FakeImageService db.s3_image_create(self.context, 'cedef40a-ed67-4d10-800e-17455edce175') db.s3_image_create(self.context, '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6') def tearDown(self): super(EC2ValidateTestCase, self).tearDown() fake.FakeImageService_reset() #EC2_API tests (InvalidInstanceID.Malformed) def test_console_output(self): for ec2_id, e in self.ec2_id_exception_map: self.assertRaises(e, self.cloud.get_console_output, context=self.context, instance_id=[ec2_id]) def test_describe_instance_attribute(self): for ec2_id, e in self.ec2_id_exception_map: self.assertRaises(e, self.cloud.describe_instance_attribute, context=self.context, instance_id=ec2_id, attribute='kernel') def test_instance_lifecycle(self): lifecycle = [self.cloud.terminate_instances, self.cloud.reboot_instances, self.cloud.stop_instances, self.cloud.start_instances, ] for cmd in lifecycle: for ec2_id, e in self.ec2_id_exception_map: self.assertRaises(e, cmd, context=self.context, instance_id=[ec2_id]) def test_create_image(self): for ec2_id, e in self.ec2_id_exception_map: self.assertRaises(e, self.cloud.create_image, context=self.context, instance_id=ec2_id) def test_create_snapshot(self): for ec2_id, e in self.volume_id_exception_map: self.assertRaises(e, self.cloud.create_snapshot, context=self.context, volume_id=ec2_id) def test_describe_volumes(self): for ec2_id, e in self.volume_id_exception_map: self.assertRaises(e, self.cloud.describe_volumes, context=self.context, volume_id=[ec2_id]) def test_delete_volume(self): for ec2_id, e in self.volume_id_exception_map: self.assertRaises(e, self.cloud.delete_volume, context=self.context, volume_id=ec2_id) def test_detach_volume(self): for ec2_id, e in self.volume_id_exception_map: self.assertRaises(e, self.cloud.detach_volume, context=self.context, volume_id=ec2_id) class EC2TimestampValidationTestCase(test.TestCase): """Test case for EC2 request timestamp validation.""" def test_validate_ec2_timestamp_valid(self): params = {'Timestamp': '2011-04-22T11:29:49Z'} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertFalse(expired) def test_validate_ec2_timestamp_old_format(self): params = {'Timestamp': '2011-04-22T11:29:49'} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertTrue(expired) def test_validate_ec2_timestamp_not_set(self): params = {} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertFalse(expired) def test_validate_ec2_timestamp_ms_time_regex(self): result = ec2utils._ms_time_regex.match('2011-04-22T11:29:49.123Z') self.assertIsNotNone(result) result = ec2utils._ms_time_regex.match('2011-04-22T11:29:49.123456Z') self.assertIsNotNone(result) result = ec2utils._ms_time_regex.match('2011-04-22T11:29:49.1234567Z') self.assertIsNone(result) result = ec2utils._ms_time_regex.match('2011-04-22T11:29:49.123') self.assertIsNone(result) result = ec2utils._ms_time_regex.match('2011-04-22T11:29:49Z') self.assertIsNone(result) def test_validate_ec2_timestamp_aws_sdk_format(self): params = {'Timestamp': '2011-04-22T11:29:49.123Z'} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertFalse(expired) expired = ec2utils.is_ec2_timestamp_expired(params, expires=300) self.assertTrue(expired) def test_validate_ec2_timestamp_invalid_format(self): params = {'Timestamp': '2011-04-22T11:29:49.000P'} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertTrue(expired) def test_validate_ec2_timestamp_advanced_time(self): #EC2 request with Timestamp in advanced time timestamp = timeutils.utcnow() + datetime.timedelta(seconds=250) params = {'Timestamp': timeutils.strtime(timestamp, "%Y-%m-%dT%H:%M:%SZ")} expired = ec2utils.is_ec2_timestamp_expired(params, expires=300) self.assertFalse(expired) def test_validate_ec2_timestamp_advanced_time_expired(self): timestamp = timeutils.utcnow() + datetime.timedelta(seconds=350) params = {'Timestamp': timeutils.strtime(timestamp, "%Y-%m-%dT%H:%M:%SZ")} expired = ec2utils.is_ec2_timestamp_expired(params, expires=300) self.assertTrue(expired) def test_validate_ec2_req_timestamp_not_expired(self): params = {'Timestamp': timeutils.isotime()} expired = ec2utils.is_ec2_timestamp_expired(params, expires=15) self.assertFalse(expired) def test_validate_ec2_req_timestamp_expired(self): params = {'Timestamp': '2011-04-22T12:00:00Z'} compare = ec2utils.is_ec2_timestamp_expired(params, expires=300) self.assertTrue(compare) def test_validate_ec2_req_expired(self): params = {'Expires': timeutils.isotime()} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertTrue(expired) def test_validate_ec2_req_not_expired(self): expire = timeutils.utcnow() + datetime.timedelta(seconds=350) params = {'Expires': timeutils.strtime(expire, "%Y-%m-%dT%H:%M:%SZ")} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertFalse(expired) def test_validate_Expires_timestamp_invalid_format(self): #EC2 request with invalid Expires params = {'Expires': '2011-04-22T11:29:49'} expired = ec2utils.is_ec2_timestamp_expired(params) self.assertTrue(expired) def test_validate_ec2_req_timestamp_Expires(self): #EC2 request with both Timestamp and Expires params = {'Timestamp': '2011-04-22T11:29:49Z', 'Expires': timeutils.isotime()} self.assertRaises(exception.InvalidRequest, ec2utils.is_ec2_timestamp_expired, params) nova-2014.1/nova/tests/api/ec2/test_middleware.py0000664000175400017540000001730112323721477022771 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from eventlet.green import httplib from lxml import etree import mox from oslo.config import cfg import webob import webob.dec import webob.exc from nova.api import ec2 from nova import context from nova import exception from nova.openstack.common import timeutils from nova import test from nova import wsgi CONF = cfg.CONF @webob.dec.wsgify def conditional_forbid(req): """Helper wsgi app returns 403 if param 'die' is 1.""" if 'die' in req.params and req.params['die'] == '1': raise webob.exc.HTTPForbidden() return 'OK' class LockoutTestCase(test.NoDBTestCase): """Test case for the Lockout middleware.""" def setUp(self): # pylint: disable=C0103 super(LockoutTestCase, self).setUp() timeutils.set_time_override() self.lockout = ec2.Lockout(conditional_forbid) def tearDown(self): # pylint: disable=C0103 timeutils.clear_time_override() super(LockoutTestCase, self).tearDown() def _send_bad_attempts(self, access_key, num_attempts=1): """Fail x.""" for i in xrange(num_attempts): req = webob.Request.blank('/?AWSAccessKeyId=%s&die=1' % access_key) self.assertEqual(req.get_response(self.lockout).status_int, 403) def _is_locked_out(self, access_key): """Sends a test request to see if key is locked out.""" req = webob.Request.blank('/?AWSAccessKeyId=%s' % access_key) return (req.get_response(self.lockout).status_int == 403) def test_lockout(self): self._send_bad_attempts('test', CONF.lockout_attempts) self.assertTrue(self._is_locked_out('test')) def test_timeout(self): self._send_bad_attempts('test', CONF.lockout_attempts) self.assertTrue(self._is_locked_out('test')) timeutils.advance_time_seconds(CONF.lockout_minutes * 60) self.assertFalse(self._is_locked_out('test')) def test_multiple_keys(self): self._send_bad_attempts('test1', CONF.lockout_attempts) self.assertTrue(self._is_locked_out('test1')) self.assertFalse(self._is_locked_out('test2')) timeutils.advance_time_seconds(CONF.lockout_minutes * 60) self.assertFalse(self._is_locked_out('test1')) self.assertFalse(self._is_locked_out('test2')) def test_window_timeout(self): self._send_bad_attempts('test', CONF.lockout_attempts - 1) self.assertFalse(self._is_locked_out('test')) timeutils.advance_time_seconds(CONF.lockout_window * 60) self._send_bad_attempts('test', CONF.lockout_attempts - 1) self.assertFalse(self._is_locked_out('test')) class ExecutorTestCase(test.NoDBTestCase): def setUp(self): super(ExecutorTestCase, self).setUp() self.executor = ec2.Executor() def _execute(self, invoke): class Fake(object): pass fake_ec2_request = Fake() fake_ec2_request.invoke = invoke fake_wsgi_request = Fake() fake_wsgi_request.environ = { 'nova.context': context.get_admin_context(), 'ec2.request': fake_ec2_request, } return self.executor(fake_wsgi_request) def _extract_message(self, result): tree = etree.fromstring(result.body) return tree.findall('./Errors')[0].find('Error/Message').text def test_instance_not_found(self): def not_found(context): raise exception.InstanceNotFound(instance_id=5) result = self._execute(not_found) self.assertIn('i-00000005', self._extract_message(result)) def test_instance_not_found_none(self): def not_found(context): raise exception.InstanceNotFound(instance_id=None) # NOTE(mikal): we want no exception to be raised here, which was what # was happening in bug/1080406 result = self._execute(not_found) self.assertIn('None', self._extract_message(result)) def test_snapshot_not_found(self): def not_found(context): raise exception.SnapshotNotFound(snapshot_id=5) result = self._execute(not_found) self.assertIn('snap-00000005', self._extract_message(result)) def test_volume_not_found(self): def not_found(context): raise exception.VolumeNotFound(volume_id=5) result = self._execute(not_found) self.assertIn('vol-00000005', self._extract_message(result)) class FakeResponse(object): reason = "Test Reason" def __init__(self, status=400): self.status = status def read(self): return '{}' class KeystoneAuthTestCase(test.NoDBTestCase): def setUp(self): super(KeystoneAuthTestCase, self).setUp() self.kauth = ec2.EC2KeystoneAuth(conditional_forbid) def _validate_ec2_error(self, response, http_status, ec2_code): self.assertEqual(response.status_code, http_status, 'Expected HTTP status %s' % http_status) root_e = etree.XML(response.body) self.assertEqual(root_e.tag, 'Response', "Top element must be Response.") errors_e = root_e.find('Errors') error_e = errors_e[0] code_e = error_e.find('Code') self.assertIsNotNone(code_e, "Code element must be present.") self.assertEqual(code_e.text, ec2_code) def test_no_signature(self): req = wsgi.Request.blank('/test') resp = self.kauth(req) self._validate_ec2_error(resp, 400, 'AuthFailure') def test_no_key_id(self): req = wsgi.Request.blank('/test') req.GET['Signature'] = 'test-signature' resp = self.kauth(req) self._validate_ec2_error(resp, 400, 'AuthFailure') def test_communication_failure(self): req = wsgi.Request.blank('/test') req.GET['Signature'] = 'test-signature' req.GET['AWSAccessKeyId'] = 'test-key-id' conn = httplib.HTTPConnection('/mock') self.mox.StubOutWithMock(httplib.HTTPConnection, 'request') self.mox.StubOutWithMock(httplib.HTTPConnection, 'getresponse') conn.request('POST', mox.IgnoreArg(), body=mox.IgnoreArg(), headers=mox.IgnoreArg()) resp = FakeResponse() conn.getresponse().AndReturn(resp) self.mox.ReplayAll() resp = self.kauth(req) self._validate_ec2_error(resp, 400, 'AuthFailure') def test_no_result_data(self): req = wsgi.Request.blank('/test') req.GET['Signature'] = 'test-signature' req.GET['AWSAccessKeyId'] = 'test-key-id' conn = httplib.HTTPConnection('/mock') self.mox.StubOutWithMock(httplib.HTTPConnection, 'request') self.mox.StubOutWithMock(httplib.HTTPConnection, 'getresponse') self.mox.StubOutWithMock(httplib.HTTPConnection, 'close') conn.request('POST', mox.IgnoreArg(), body=mox.IgnoreArg(), headers=mox.IgnoreArg()) resp = FakeResponse(200) conn.getresponse().AndReturn(resp) conn.close() self.mox.ReplayAll() resp = self.kauth(req) self._validate_ec2_error(resp, 400, 'AuthFailure') nova-2014.1/nova/tests/api/ec2/test_faults.py0000664000175400017540000000345412323721477022156 0ustar jenkinsjenkins00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mox import webob from nova.api.ec2 import faults from nova import test from nova import wsgi class TestFaults(test.NoDBTestCase): """Tests covering ec2 Fault class.""" def test_fault_exception(self): # Ensure the status_int is set correctly on faults. fault = faults.Fault(webob.exc.HTTPBadRequest( explanation='test')) self.assertIsInstance(fault.wrapped_exc, webob.exc.HTTPBadRequest) def test_fault_exception_status_int(self): # Ensure the status_int is set correctly on faults. fault = faults.Fault(webob.exc.HTTPNotFound(explanation='test')) self.assertEqual(fault.wrapped_exc.status_int, 404) def test_fault_call(self): # Ensure proper EC2 response on faults. message = 'test message' ex = webob.exc.HTTPNotFound(explanation=message) fault = faults.Fault(ex) req = wsgi.Request.blank('/test') req.GET['AWSAccessKeyId'] = "test_user_id:test_project_id" self.mox.StubOutWithMock(faults, 'ec2_error_response') faults.ec2_error_response(mox.IgnoreArg(), 'HTTPNotFound', message=message, status=ex.status_int) self.mox.ReplayAll() fault(req) nova-2014.1/nova/tests/api/ec2/test_api.py0000664000175400017540000006074312323721477021435 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Unit tests for the API endpoint.""" import random import re import StringIO import boto import boto.connection from boto.ec2 import regioninfo from boto import exception as boto_exc # newer versions of boto use their own wrapper on top of httplib.HTTPResponse if hasattr(boto.connection, 'HTTPResponse'): httplib = boto.connection else: import httplib import fixtures import webob from nova.api import auth from nova.api import ec2 from nova.api.ec2 import apirequest from nova.api.ec2 import ec2utils from nova import block_device from nova import context from nova import exception from nova.openstack.common import timeutils from nova.openstack.common import versionutils from nova import test from nova.tests import matchers class FakeHttplibSocket(object): """a fake socket implementation for httplib.HTTPResponse, trivial.""" def __init__(self, response_string): self.response_string = response_string self._buffer = StringIO.StringIO(response_string) def makefile(self, _mode, _other): """Returns the socket's internal buffer.""" return self._buffer class FakeHttplibConnection(object): """A fake httplib.HTTPConnection for boto to use requests made via this connection actually get translated and routed into our WSGI app, we then wait for the response and turn it back into the HTTPResponse that boto expects. """ def __init__(self, app, host, is_secure=False): self.app = app self.host = host def request(self, method, path, data, headers): req = webob.Request.blank(path) req.method = method req.body = data req.headers = headers req.headers['Accept'] = 'text/html' req.host = self.host # Call the WSGI app, get the HTTP response resp = str(req.get_response(self.app)) # For some reason, the response doesn't have "HTTP/1.0 " prepended; I # guess that's a function the web server usually provides. resp = "HTTP/1.0 %s" % resp self.sock = FakeHttplibSocket(resp) self.http_response = httplib.HTTPResponse(self.sock) # NOTE(vish): boto is accessing private variables for some reason self._HTTPConnection__response = self.http_response self.http_response.begin() def getresponse(self): return self.http_response def getresponsebody(self): return self.sock.response_string def close(self): """Required for compatibility with boto/tornado.""" pass class XmlConversionTestCase(test.TestCase): """Unit test api xml conversion.""" def test_number_conversion(self): conv = ec2utils._try_convert self.assertIsNone(conv('None')) self.assertEqual(conv('True'), True) self.assertEqual(conv('TRUE'), True) self.assertEqual(conv('true'), True) self.assertEqual(conv('False'), False) self.assertEqual(conv('FALSE'), False) self.assertEqual(conv('false'), False) self.assertEqual(conv('0'), 0) self.assertEqual(conv('42'), 42) self.assertEqual(conv('3.14'), 3.14) self.assertEqual(conv('-57.12'), -57.12) self.assertEqual(conv('0x57'), 0x57) self.assertEqual(conv('-0x57'), -0x57) self.assertEqual(conv('-'), '-') self.assertEqual(conv('-0'), 0) self.assertEqual(conv('0.0'), 0.0) self.assertEqual(conv('1e-8'), 0.0) self.assertEqual(conv('-1e-8'), 0.0) self.assertEqual(conv('0xDD8G'), '0xDD8G') self.assertEqual(conv('0XDD8G'), '0XDD8G') self.assertEqual(conv('-stringy'), '-stringy') self.assertEqual(conv('stringy'), 'stringy') self.assertEqual(conv('add'), 'add') self.assertEqual(conv('remove'), 'remove') self.assertEqual(conv(''), '') class Ec2utilsTestCase(test.TestCase): def test_ec2_id_to_id(self): self.assertEqual(ec2utils.ec2_id_to_id('i-0000001e'), 30) self.assertEqual(ec2utils.ec2_id_to_id('ami-1d'), 29) self.assertEqual(ec2utils.ec2_id_to_id('snap-0000001c'), 28) self.assertEqual(ec2utils.ec2_id_to_id('vol-0000001b'), 27) def test_bad_ec2_id(self): self.assertRaises(exception.InvalidEc2Id, ec2utils.ec2_id_to_id, 'badone') def test_id_to_ec2_id(self): self.assertEqual(ec2utils.id_to_ec2_id(30), 'i-0000001e') self.assertEqual(ec2utils.id_to_ec2_id(29, 'ami-%08x'), 'ami-0000001d') self.assertEqual(ec2utils.id_to_ec2_snap_id(28), 'snap-0000001c') self.assertEqual(ec2utils.id_to_ec2_vol_id(27), 'vol-0000001b') def test_dict_from_dotted_str(self): in_str = [('BlockDeviceMapping.1.DeviceName', '/dev/sda1'), ('BlockDeviceMapping.1.Ebs.SnapshotId', 'snap-0000001c'), ('BlockDeviceMapping.1.Ebs.VolumeSize', '80'), ('BlockDeviceMapping.1.Ebs.DeleteOnTermination', 'false'), ('BlockDeviceMapping.2.DeviceName', '/dev/sdc'), ('BlockDeviceMapping.2.VirtualName', 'ephemeral0')] expected_dict = { 'block_device_mapping': { '1': {'device_name': '/dev/sda1', 'ebs': {'snapshot_id': 'snap-0000001c', 'volume_size': 80, 'delete_on_termination': False}}, '2': {'device_name': '/dev/sdc', 'virtual_name': 'ephemeral0'}}} out_dict = ec2utils.dict_from_dotted_str(in_str) self.assertThat(out_dict, matchers.DictMatches(expected_dict)) def test_properties_root_defice_name(self): mappings = [{"device": "/dev/sda1", "virtual": "root"}] properties0 = {'mappings': mappings} properties1 = {'root_device_name': '/dev/sdb', 'mappings': mappings} root_device_name = block_device.properties_root_device_name( properties0) self.assertEqual(root_device_name, '/dev/sda1') root_device_name = block_device.properties_root_device_name( properties1) self.assertEqual(root_device_name, '/dev/sdb') def test_regex_from_ec2_regex(self): def _test_re(ec2_regex, expected, literal, match=True): regex = ec2utils.regex_from_ec2_regex(ec2_regex) self.assertEqual(regex, expected) if match: self.assertIsNotNone(re.match(regex, literal)) else: self.assertIsNone(re.match(regex, literal)) # wildcards _test_re('foo', '\Afoo\Z(?s)', 'foo') _test_re('foo', '\Afoo\Z(?s)', 'baz', match=False) _test_re('foo?bar', '\Afoo.bar\Z(?s)', 'foo bar') _test_re('foo?bar', '\Afoo.bar\Z(?s)', 'foo bar', match=False) _test_re('foo*bar', '\Afoo.*bar\Z(?s)', 'foo QUUX bar') # backslashes and escaped wildcards _test_re('foo\\', '\Afoo\\\\\Z(?s)', 'foo\\') _test_re('foo*bar', '\Afoo.*bar\Z(?s)', 'zork QUUX bar', match=False) _test_re('foo\\?bar', '\Afoo[?]bar\Z(?s)', 'foo?bar') _test_re('foo\\?bar', '\Afoo[?]bar\Z(?s)', 'foo bar', match=False) _test_re('foo\\*bar', '\Afoo[*]bar\Z(?s)', 'foo*bar') _test_re('foo\\*bar', '\Afoo[*]bar\Z(?s)', 'foo bar', match=False) # analog to the example given in the EC2 API docs ec2_regex = '\*nova\?\\end' expected = r'\A[*]nova[?]\\end\Z(?s)' literal = r'*nova?\end' _test_re(ec2_regex, expected, literal) def test_mapping_prepend_dev(self): mappings = [ {'virtual': 'ami', 'device': 'sda1'}, {'virtual': 'root', 'device': '/dev/sda1'}, {'virtual': 'swap', 'device': 'sdb1'}, {'virtual': 'swap', 'device': '/dev/sdb2'}, {'virtual': 'ephemeral0', 'device': 'sdc1'}, {'virtual': 'ephemeral1', 'device': '/dev/sdc1'}] expected_result = [ {'virtual': 'ami', 'device': 'sda1'}, {'virtual': 'root', 'device': '/dev/sda1'}, {'virtual': 'swap', 'device': '/dev/sdb1'}, {'virtual': 'swap', 'device': '/dev/sdb2'}, {'virtual': 'ephemeral0', 'device': '/dev/sdc1'}, {'virtual': 'ephemeral1', 'device': '/dev/sdc1'}] self.assertThat(block_device.mappings_prepend_dev(mappings), matchers.DictListMatches(expected_result)) class ApiEc2TestCase(test.TestCase): """Unit test for the cloud controller on an EC2 API.""" def setUp(self): super(ApiEc2TestCase, self).setUp() self.host = '127.0.0.1' # NOTE(vish): skipping the Authorizer roles = ['sysadmin', 'netadmin'] ctxt = context.RequestContext('fake', 'fake', roles=roles) self.app = auth.InjectContext(ctxt, ec2.FaultWrapper( ec2.RequestLogging(ec2.Requestify(ec2.Authorizer(ec2.Executor() ), 'nova.api.ec2.cloud.CloudController')))) self.useFixture(fixtures.FakeLogger('boto')) def expect_http(self, host=None, is_secure=False, api_version=None): """Returns a new EC2 connection.""" self.ec2 = boto.connect_ec2( aws_access_key_id='fake', aws_secret_access_key='fake', is_secure=False, region=regioninfo.RegionInfo(None, 'test', self.host), port=8773, path='/services/Cloud') if api_version: self.ec2.APIVersion = api_version self.mox.StubOutWithMock(self.ec2, 'new_http_connection') self.http = FakeHttplibConnection( self.app, '%s:8773' % (self.host), False) # pylint: disable=E1103 if versionutils.is_compatible('2.14', boto.Version, same_major=False): self.ec2.new_http_connection(host or self.host, 8773, is_secure).AndReturn(self.http) elif versionutils.is_compatible('2', boto.Version, same_major=False): self.ec2.new_http_connection(host or '%s:8773' % (self.host), is_secure).AndReturn(self.http) else: self.ec2.new_http_connection(host, is_secure).AndReturn(self.http) return self.http def test_return_valid_isoformat(self): """Ensure that the ec2 api returns datetime in xs:dateTime (which apparently isn't datetime.isoformat()) NOTE(ken-pepple): https://bugs.launchpad.net/nova/+bug/721297 """ conv = apirequest._database_to_isoformat # sqlite database representation with microseconds time_to_convert = timeutils.parse_strtime("2011-02-21 20:14:10.634276", "%Y-%m-%d %H:%M:%S.%f") self.assertEqual(conv(time_to_convert), '2011-02-21T20:14:10.634Z') # mysqlite database representation time_to_convert = timeutils.parse_strtime("2011-02-21 19:56:18", "%Y-%m-%d %H:%M:%S") self.assertEqual(conv(time_to_convert), '2011-02-21T19:56:18.000Z') def test_xmlns_version_matches_request_version(self): self.expect_http(api_version='2010-10-30') self.mox.ReplayAll() # Any request should be fine self.ec2.get_all_instances() self.assertTrue(self.ec2.APIVersion in self.http.getresponsebody(), 'The version in the xmlns of the response does ' 'not match the API version given in the request.') def test_describe_instances(self): """Test that, after creating a user and a project, the describe instances call to the API works properly. """ self.expect_http() self.mox.ReplayAll() self.assertEqual(self.ec2.get_all_instances(), []) def test_terminate_invalid_instance(self): # Attempt to terminate an invalid instance. self.expect_http() self.mox.ReplayAll() self.assertRaises(boto_exc.EC2ResponseError, self.ec2.terminate_instances, "i-00000005") def test_get_all_key_pairs(self): """Test that, after creating a user and project and generating a key pair, that the API call to list key pairs works properly. """ keyname = "".join(random.choice("sdiuisudfsdcnpaqwertasd") for x in range(random.randint(4, 8))) self.expect_http() self.mox.ReplayAll() self.ec2.create_key_pair(keyname) rv = self.ec2.get_all_key_pairs() results = [k for k in rv if k.name == keyname] self.assertEqual(len(results), 1) def test_create_duplicate_key_pair(self): """Test that, after successfully generating a keypair, requesting a second keypair with the same name fails sanely. """ self.expect_http() self.mox.ReplayAll() self.ec2.create_key_pair('test') try: self.ec2.create_key_pair('test') except boto_exc.EC2ResponseError as e: if e.code == 'InvalidKeyPair.Duplicate': pass else: self.assertEqual('InvalidKeyPair.Duplicate', e.code) else: self.fail('Exception not raised.') def test_get_all_security_groups(self): # Test that we can retrieve security groups. self.expect_http() self.mox.ReplayAll() rv = self.ec2.get_all_security_groups() self.assertEqual(len(rv), 1) self.assertEqual(rv[0].name, 'default') def test_create_delete_security_group(self): # Test that we can create a security group. self.expect_http() self.mox.ReplayAll() security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") for x in range(random.randint(4, 8))) self.ec2.create_security_group(security_group_name, 'test group') self.expect_http() self.mox.ReplayAll() rv = self.ec2.get_all_security_groups() self.assertEqual(len(rv), 2) self.assertIn(security_group_name, [group.name for group in rv]) self.expect_http() self.mox.ReplayAll() self.ec2.delete_security_group(security_group_name) def test_group_name_valid_chars_security_group(self): """Test that we sanely handle invalid security group names. EC2 API Spec states we should only accept alphanumeric characters, spaces, dashes, and underscores. Amazon implementation accepts more characters - so, [:print:] is ok. """ bad_strict_ec2 = "aa \t\x01\x02\x7f" bad_amazon_ec2 = "aa #^% -=99" test_raise = [ (True, bad_amazon_ec2, "test desc"), (True, "test name", bad_amazon_ec2), (False, bad_strict_ec2, "test desc"), ] for test in test_raise: self.expect_http() self.mox.ReplayAll() self.flags(ec2_strict_validation=test[0]) self.assertRaises(boto_exc.EC2ResponseError, self.ec2.create_security_group, test[1], test[2]) test_accept = [ (False, bad_amazon_ec2, "test desc"), (False, "test name", bad_amazon_ec2), ] for test in test_accept: self.expect_http() self.mox.ReplayAll() self.flags(ec2_strict_validation=test[0]) self.ec2.create_security_group(test[1], test[2]) self.expect_http() self.mox.ReplayAll() self.ec2.delete_security_group(test[1]) def test_group_name_valid_length_security_group(self): """Test that we sanely handle invalid security group names. API Spec states that the length should not exceed 255 char. """ self.expect_http() self.mox.ReplayAll() # Test block group_name > 255 chars security_group_name = "".join(random.choice("poiuytrewqasdfghjklmnbvc") for x in range(random.randint(256, 266))) self.assertRaises(boto_exc.EC2ResponseError, self.ec2.create_security_group, security_group_name, 'test group') def test_authorize_revoke_security_group_cidr(self): """Test that we can add and remove CIDR based rules to a security group """ self.expect_http() self.mox.ReplayAll() security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") for x in range(random.randint(4, 8))) group = self.ec2.create_security_group(security_group_name, 'test group') self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 group.authorize('tcp', 80, 81, '0.0.0.0/0') group.authorize('icmp', -1, -1, '0.0.0.0/0') group.authorize('udp', 80, 81, '0.0.0.0/0') group.authorize('tcp', 1, 65535, '0.0.0.0/0') group.authorize('udp', 1, 65535, '0.0.0.0/0') group.authorize('icmp', 1, 0, '0.0.0.0/0') group.authorize('icmp', 0, 1, '0.0.0.0/0') group.authorize('icmp', 0, 0, '0.0.0.0/0') def _assert(message, *args): try: group.authorize(*args) except boto_exc.EC2ResponseError as e: self.assertEqual(e.status, 400, 'Expected status to be 400') self.assertIn(message, e.error_message) else: raise self.failureException, 'EC2ResponseError not raised' # Invalid CIDR address _assert('Invalid CIDR', 'tcp', 80, 81, '0.0.0.0/0444') # Missing ports _assert('Not enough parameters', 'tcp', '0.0.0.0/0') # from port cannot be greater than to port _assert('Invalid port range', 'tcp', 100, 1, '0.0.0.0/0') # For tcp, negative values are not allowed _assert('Invalid port range', 'tcp', -1, 1, '0.0.0.0/0') # For tcp, valid port range 1-65535 _assert('Invalid port range', 'tcp', 1, 65599, '0.0.0.0/0') # Invalid Cidr for ICMP type _assert('Invalid CIDR', 'icmp', -1, -1, '0.0.444.0/4') # Invalid protocol _assert('Invalid IP protocol', 'xyz', 1, 14, '0.0.0.0/0') # Invalid port _assert('Invalid input received: To and From ports must be integers', 'tcp', " ", "81", '0.0.0.0/0') # Invalid icmp port _assert('Invalid input received: ' 'Type and Code must be integers for ICMP protocol type', 'icmp', " ", "81", '0.0.0.0/0') # Invalid CIDR Address _assert('Invalid CIDR', 'icmp', -1, -1, '0.0.0.0') # Invalid CIDR Address _assert('Invalid CIDR', 'icmp', -1, -1, '0.0.0.0/') # Invalid Cidr ports _assert('Invalid port range', 'icmp', 1, 256, '0.0.0.0/0') self.expect_http() self.mox.ReplayAll() rv = self.ec2.get_all_security_groups() group = [grp for grp in rv if grp.name == security_group_name][0] self.assertEqual(len(group.rules), 8) self.assertEqual(int(group.rules[0].from_port), 80) self.assertEqual(int(group.rules[0].to_port), 81) self.assertEqual(len(group.rules[0].grants), 1) self.assertEqual(str(group.rules[0].grants[0]), '0.0.0.0/0') self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 group.revoke('tcp', 80, 81, '0.0.0.0/0') group.revoke('icmp', -1, -1, '0.0.0.0/0') group.revoke('udp', 80, 81, '0.0.0.0/0') group.revoke('tcp', 1, 65535, '0.0.0.0/0') group.revoke('udp', 1, 65535, '0.0.0.0/0') group.revoke('icmp', 1, 0, '0.0.0.0/0') group.revoke('icmp', 0, 1, '0.0.0.0/0') group.revoke('icmp', 0, 0, '0.0.0.0/0') self.expect_http() self.mox.ReplayAll() self.ec2.delete_security_group(security_group_name) self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 rv = self.ec2.get_all_security_groups() self.assertEqual(len(rv), 1) self.assertEqual(rv[0].name, 'default') def test_authorize_revoke_security_group_cidr_v6(self): """Test that we can add and remove CIDR based rules to a security group for IPv6 """ self.expect_http() self.mox.ReplayAll() security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") for x in range(random.randint(4, 8))) group = self.ec2.create_security_group(security_group_name, 'test group') self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 group.authorize('tcp', 80, 81, '::/0') self.expect_http() self.mox.ReplayAll() rv = self.ec2.get_all_security_groups() group = [grp for grp in rv if grp.name == security_group_name][0] self.assertEqual(len(group.rules), 1) self.assertEqual(int(group.rules[0].from_port), 80) self.assertEqual(int(group.rules[0].to_port), 81) self.assertEqual(len(group.rules[0].grants), 1) self.assertEqual(str(group.rules[0].grants[0]), '::/0') self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 group.revoke('tcp', 80, 81, '::/0') self.expect_http() self.mox.ReplayAll() self.ec2.delete_security_group(security_group_name) self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 rv = self.ec2.get_all_security_groups() self.assertEqual(len(rv), 1) self.assertEqual(rv[0].name, 'default') def test_authorize_revoke_security_group_foreign_group(self): """Test that we can grant and revoke another security group access to a security group """ self.expect_http() self.mox.ReplayAll() rand_string = 'sdiuisudfsdcnpaqwertasd' security_group_name = "".join(random.choice(rand_string) for x in range(random.randint(4, 8))) other_security_group_name = "".join(random.choice(rand_string) for x in range(random.randint(4, 8))) group = self.ec2.create_security_group(security_group_name, 'test group') self.expect_http() self.mox.ReplayAll() other_group = self.ec2.create_security_group(other_security_group_name, 'some other group') self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 group.authorize(src_group=other_group) self.expect_http() self.mox.ReplayAll() rv = self.ec2.get_all_security_groups() # I don't bother checkng that we actually find it here, # because the create/delete unit test further up should # be good enough for that. for group in rv: if group.name == security_group_name: self.assertEqual(len(group.rules), 3) self.assertEqual(len(group.rules[0].grants), 1) self.assertEqual(str(group.rules[0].grants[0]), '%s-%s' % (other_security_group_name, 'fake')) self.expect_http() self.mox.ReplayAll() rv = self.ec2.get_all_security_groups() for group in rv: if group.name == security_group_name: self.expect_http() self.mox.ReplayAll() group.connection = self.ec2 group.revoke(src_group=other_group) self.expect_http() self.mox.ReplayAll() self.ec2.delete_security_group(security_group_name) self.ec2.delete_security_group(other_security_group_name) nova-2014.1/nova/tests/api/ec2/test_cinder_cloud.py0000664000175400017540000013120312323721510023270 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2013 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. import copy import uuid import fixtures from oslo.config import cfg from nova.api.ec2 import cloud from nova.api.ec2 import ec2utils from nova.compute import api as compute_api from nova.compute import flavors from nova.compute import utils as compute_utils from nova import context from nova import db from nova import exception from nova.objects import instance as instance_obj from nova import test from nova.tests import cast_as_call from nova.tests import fake_network from nova.tests import fake_utils from nova.tests.image import fake from nova.tests import matchers from nova import volume CONF = cfg.CONF CONF.import_opt('compute_driver', 'nova.virt.driver') CONF.import_opt('default_flavor', 'nova.compute.flavors') CONF.import_opt('use_ipv6', 'nova.netconf') def get_fake_cache(): def _ip(ip, fixed=True, floats=None): ip_dict = {'address': ip, 'type': 'fixed'} if not fixed: ip_dict['type'] = 'floating' if fixed and floats: ip_dict['floating_ips'] = [_ip(f, fixed=False) for f in floats] return ip_dict info = [{'address': 'aa:bb:cc:dd:ee:ff', 'id': 1, 'network': {'bridge': 'br0', 'id': 1, 'label': 'private', 'subnets': [{'cidr': '192.168.0.0/24', 'ips': [_ip('192.168.0.3', floats=['1.2.3.4', '5.6.7.8']), _ip('192.168.0.4')]}]}}] if CONF.use_ipv6: ipv6_addr = 'fe80:b33f::a8bb:ccff:fedd:eeff' info[0]['network']['subnets'].append({'cidr': 'fe80:b33f::/64', 'ips': [_ip(ipv6_addr)]}) return info def get_instances_with_cached_ips(orig_func, *args, **kwargs): """Kludge the cache into instance(s) without having to create DB entries """ instances = orig_func(*args, **kwargs) if isinstance(instances, list): for instance in instances: instance['info_cache'] = {'network_info': get_fake_cache()} else: instances['info_cache'] = {'network_info': get_fake_cache()} return instances class CinderCloudTestCase(test.TestCase): def setUp(self): super(CinderCloudTestCase, self).setUp() ec2utils.reset_cache() vol_tmpdir = self.useFixture(fixtures.TempDir()).path fake_utils.stub_out_utils_spawn_n(self.stubs) self.flags(compute_driver='nova.virt.fake.FakeDriver', volume_api_class='nova.tests.fake_volume.API') def fake_show(meh, context, id): return {'id': id, 'name': 'fake_name', 'container_format': 'ami', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine', 'image_state': 'available'}} def fake_detail(_self, context, **kwargs): image = fake_show(None, context, None) image['name'] = kwargs.get('filters', {}).get('name') return [image] self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) fake.stub_out_image_service(self.stubs) def dumb(*args, **kwargs): pass self.stubs.Set(compute_utils, 'notify_about_instance_usage', dumb) fake_network.set_stub_network_methods(self.stubs) # set up our cloud self.cloud = cloud.CloudController() self.flags(scheduler_driver='nova.scheduler.chance.ChanceScheduler') # Short-circuit the conductor service self.flags(use_local=True, group='conductor') # set up services self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) self.compute = self.start_service('compute') self.scheduler = self.start_service('scheduler') self.network = self.start_service('network') self.consoleauth = self.start_service('consoleauth') self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) self.volume_api = volume.API() self.volume_api.reset_fake_api(self.context) self.useFixture(cast_as_call.CastAsCall(self.stubs)) # make sure we can map ami-00000001/2 to a uuid in FakeImageService db.s3_image_create(self.context, 'cedef40a-ed67-4d10-800e-17455edce175') db.s3_image_create(self.context, '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6') def tearDown(self): self.volume_api.reset_fake_api(self.context) super(CinderCloudTestCase, self).tearDown() fake.FakeImageService_reset() def _stub_instance_get_with_fixed_ips(self, func_name): orig_func = getattr(self.cloud.compute_api, func_name) def fake_get(*args, **kwargs): return get_instances_with_cached_ips(orig_func, *args, **kwargs) self.stubs.Set(self.cloud.compute_api, func_name, fake_get) def _create_key(self, name): # NOTE(vish): create depends on pool, so just call helper directly keypair_api = compute_api.KeypairAPI() return keypair_api.create_key_pair(self.context, self.context.user_id, name) def test_describe_volumes(self): # Makes sure describe_volumes works and filters results. vol1 = self.cloud.create_volume(self.context, size=1, name='test-1', description='test volume 1') self.assertEqual(vol1['status'], 'available') vol2 = self.cloud.create_volume(self.context, size=1, name='test-2', description='test volume 2') result = self.cloud.describe_volumes(self.context) self.assertEqual(len(result['volumeSet']), 2) result = self.cloud.describe_volumes(self.context, [vol1['volumeId']]) self.assertEqual(len(result['volumeSet']), 1) self.assertEqual(vol1['volumeId'], result['volumeSet'][0]['volumeId']) self.cloud.delete_volume(self.context, vol1['volumeId']) self.cloud.delete_volume(self.context, vol2['volumeId']) def test_format_volume_maps_status(self): fake_volume = {'id': 1, 'status': 'creating', 'availability_zone': 'nova', 'volumeId': 'vol-0000000a', 'attachmentSet': [{}], 'snapshotId': None, 'created_at': '2013-04-18T06:03:35.025626', 'size': 1, 'mountpoint': None, 'attach_status': None} self.assertEqual(self.cloud._format_volume(self.context, fake_volume)['status'], 'creating') fake_volume['status'] = 'attaching' self.assertEqual(self.cloud._format_volume(self.context, fake_volume)['status'], 'in-use') fake_volume['status'] = 'detaching' self.assertEqual(self.cloud._format_volume(self.context, fake_volume)['status'], 'in-use') fake_volume['status'] = 'banana' self.assertEqual(self.cloud._format_volume(self.context, fake_volume)['status'], 'banana') def test_create_volume_in_availability_zone(self): """Makes sure create_volume works when we specify an availability zone """ availability_zone = 'zone1:host1' result = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) volume_id = result['volumeId'] availabilityZone = result['availabilityZone'] self.assertEqual(availabilityZone, availability_zone) result = self.cloud.describe_volumes(self.context) self.assertEqual(len(result['volumeSet']), 1) self.assertEqual(result['volumeSet'][0]['volumeId'], volume_id) self.assertEqual(result['volumeSet'][0]['availabilityZone'], availabilityZone) self.cloud.delete_volume(self.context, volume_id) def test_create_volume_from_snapshot(self): # Makes sure create_volume works when we specify a snapshot. availability_zone = 'zone1:host1' vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) snap = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-1', description='test snap of vol %s' % vol1['volumeId']) vol2 = self.cloud.create_volume(self.context, snapshot_id=snap['snapshotId']) volume1_id = vol1['volumeId'] volume2_id = vol2['volumeId'] result = self.cloud.describe_volumes(self.context) self.assertEqual(len(result['volumeSet']), 2) self.assertEqual(result['volumeSet'][1]['volumeId'], volume2_id) self.cloud.delete_volume(self.context, volume2_id) self.cloud.delete_snapshot(self.context, snap['snapshotId']) self.cloud.delete_volume(self.context, volume1_id) def test_describe_snapshots(self): # Makes sure describe_snapshots works and filters results. availability_zone = 'zone1:host1' vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) snap1 = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-1', description='test snap1 of vol %s' % vol1['volumeId']) snap2 = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-1', description='test snap2 of vol %s' % vol1['volumeId']) result = self.cloud.describe_snapshots(self.context) self.assertEqual(len(result['snapshotSet']), 2) result = self.cloud.describe_snapshots( self.context, snapshot_id=[snap2['snapshotId']]) self.assertEqual(len(result['snapshotSet']), 1) self.cloud.delete_snapshot(self.context, snap1['snapshotId']) self.cloud.delete_snapshot(self.context, snap2['snapshotId']) self.cloud.delete_volume(self.context, vol1['volumeId']) def test_format_snapshot_maps_status(self): fake_snapshot = {'status': 'new', 'id': 1, 'volume_id': 1, 'created_at': 1353560191.08117, 'progress': 90, 'project_id': str(uuid.uuid4()), 'volume_size': 10000, 'display_description': 'desc'} self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'pending') fake_snapshot['status'] = 'creating' self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'pending') fake_snapshot['status'] = 'available' self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'completed') fake_snapshot['status'] = 'active' self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'completed') fake_snapshot['status'] = 'deleting' self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'pending') fake_snapshot['status'] = 'deleted' self.assertIsNone(self.cloud._format_snapshot(self.context, fake_snapshot)) fake_snapshot['status'] = 'error' self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'error') fake_snapshot['status'] = 'banana' self.assertEqual(self.cloud._format_snapshot(self.context, fake_snapshot)['status'], 'banana') def test_create_snapshot(self): # Makes sure create_snapshot works. availability_zone = 'zone1:host1' result = self.cloud.describe_snapshots(self.context) vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) snap1 = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-1', description='test snap1 of vol %s' % vol1['volumeId']) snapshot_id = snap1['snapshotId'] result = self.cloud.describe_snapshots(self.context) self.assertEqual(len(result['snapshotSet']), 1) self.assertEqual(result['snapshotSet'][0]['snapshotId'], snapshot_id) self.cloud.delete_snapshot(self.context, snap1['snapshotId']) self.cloud.delete_volume(self.context, vol1['volumeId']) def test_delete_snapshot(self): # Makes sure delete_snapshot works. availability_zone = 'zone1:host1' vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) snap1 = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-1', description='test snap1 of vol %s' % vol1['volumeId']) snapshot_id = snap1['snapshotId'] result = self.cloud.delete_snapshot(self.context, snapshot_id=snapshot_id) self.assertTrue(result) self.cloud.delete_volume(self.context, vol1['volumeId']) def _block_device_mapping_create(self, instance_uuid, mappings): volumes = [] for bdm in mappings: db.block_device_mapping_create(self.context, bdm) if 'volume_id' in bdm: values = {'id': bdm['volume_id']} for bdm_key, vol_key in [('snapshot_id', 'snapshot_id'), ('snapshot_size', 'volume_size'), ('delete_on_termination', 'delete_on_termination')]: if bdm_key in bdm: values[vol_key] = bdm[bdm_key] kwargs = {'name': 'bdmtest-volume', 'description': 'bdm test volume description', 'status': 'available', 'host': 'fake', 'size': 1, 'attach_status': 'detached', 'volume_id': values['id']} vol = self.volume_api.create_with_kwargs(self.context, **kwargs) if 'snapshot_id' in values: self.volume_api.create_snapshot(self.context, vol['id'], 'snapshot-bdm', 'fake snap for bdm tests', values['snapshot_id']) self.volume_api.attach(self.context, vol['id'], instance_uuid, bdm['device_name']) volumes.append(vol) return volumes def _setUpBlockDeviceMapping(self): image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' sys_meta = flavors.save_flavor_info( {}, flavors.get_flavor(1)) inst1 = db.instance_create(self.context, {'image_ref': image_uuid, 'instance_type_id': 1, 'root_device_name': '/dev/sdb1', 'system_metadata': sys_meta}) inst2 = db.instance_create(self.context, {'image_ref': image_uuid, 'instance_type_id': 1, 'root_device_name': '/dev/sdc1', 'system_metadata': sys_meta}) instance_uuid = inst1['uuid'] mappings0 = [ {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb1', 'snapshot_id': '1', 'volume_id': '2'}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb2', 'volume_id': '3', 'volume_size': 1}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb3', 'delete_on_termination': True, 'snapshot_id': '4', 'volume_id': '5'}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb4', 'delete_on_termination': False, 'snapshot_id': '6', 'volume_id': '7'}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb5', 'snapshot_id': '8', 'volume_id': '9', 'volume_size': 0}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb6', 'snapshot_id': '10', 'volume_id': '11', 'volume_size': 1}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb7', 'no_device': True}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb8', 'virtual_name': 'swap'}, {'instance_uuid': instance_uuid, 'device_name': '/dev/sdb9', 'virtual_name': 'ephemeral3'}] volumes = self._block_device_mapping_create(instance_uuid, mappings0) return (inst1, inst2, volumes) def _tearDownBlockDeviceMapping(self, inst1, inst2, volumes): for vol in volumes: self.volume_api.delete(self.context, vol['id']) for uuid in (inst1['uuid'], inst2['uuid']): for bdm in db.block_device_mapping_get_all_by_instance( self.context, uuid): db.block_device_mapping_destroy(self.context, bdm['id']) db.instance_destroy(self.context, inst2['uuid']) db.instance_destroy(self.context, inst1['uuid']) _expected_instance_bdm1 = { 'instanceId': 'i-00000001', 'rootDeviceName': '/dev/sdb1', 'rootDeviceType': 'ebs'} _expected_block_device_mapping0 = [ {'deviceName': '/dev/sdb1', 'ebs': {'status': 'attached', 'deleteOnTermination': False, 'volumeId': 'vol-00000002', }}, {'deviceName': '/dev/sdb2', 'ebs': {'status': 'attached', 'deleteOnTermination': False, 'volumeId': 'vol-00000003', }}, {'deviceName': '/dev/sdb3', 'ebs': {'status': 'attached', 'deleteOnTermination': True, 'volumeId': 'vol-00000005', }}, {'deviceName': '/dev/sdb4', 'ebs': {'status': 'attached', 'deleteOnTermination': False, 'volumeId': 'vol-00000007', }}, {'deviceName': '/dev/sdb5', 'ebs': {'status': 'attached', 'deleteOnTermination': False, 'volumeId': 'vol-00000009', }}, {'deviceName': '/dev/sdb6', 'ebs': {'status': 'attached', 'deleteOnTermination': False, 'volumeId': 'vol-0000000b', }}] # NOTE(yamahata): swap/ephemeral device case isn't supported yet. _expected_instance_bdm2 = { 'instanceId': 'i-00000002', 'rootDeviceName': '/dev/sdc1', 'rootDeviceType': 'instance-store'} def test_format_instance_bdm(self): (inst1, inst2, volumes) = self._setUpBlockDeviceMapping() result = {} self.cloud._format_instance_bdm(self.context, inst1['uuid'], '/dev/sdb1', result) self.assertThat( {'rootDeviceType': self._expected_instance_bdm1['rootDeviceType']}, matchers.IsSubDictOf(result)) self._assertEqualBlockDeviceMapping( self._expected_block_device_mapping0, result['blockDeviceMapping']) result = {} self.cloud._format_instance_bdm(self.context, inst2['uuid'], '/dev/sdc1', result) self.assertThat( {'rootDeviceType': self._expected_instance_bdm2['rootDeviceType']}, matchers.IsSubDictOf(result)) self._tearDownBlockDeviceMapping(inst1, inst2, volumes) def _assertInstance(self, instance_id): ec2_instance_id = ec2utils.id_to_ec2_id(instance_id) result = self.cloud.describe_instances(self.context, instance_id=[ec2_instance_id]) result = result['reservationSet'][0] self.assertEqual(len(result['instancesSet']), 1) result = result['instancesSet'][0] self.assertEqual(result['instanceId'], ec2_instance_id) return result def _assertEqualBlockDeviceMapping(self, expected, result): self.assertEqual(len(expected), len(result)) for x in expected: found = False for y in result: if x['deviceName'] == y['deviceName']: self.assertThat(x, matchers.IsSubDictOf(y)) found = True break self.assertTrue(found) def test_describe_instances_bdm(self): """Make sure describe_instances works with root_device_name and block device mappings """ (inst1, inst2, volumes) = self._setUpBlockDeviceMapping() result = self._assertInstance(inst1['id']) self.assertThat( self._expected_instance_bdm1, matchers.IsSubDictOf(result)) self._assertEqualBlockDeviceMapping( self._expected_block_device_mapping0, result['blockDeviceMapping']) result = self._assertInstance(inst2['id']) self.assertThat( self._expected_instance_bdm2, matchers.IsSubDictOf(result)) self._tearDownBlockDeviceMapping(inst1, inst2, volumes) def _setUpImageSet(self, create_volumes_and_snapshots=False): self.flags(max_local_block_devices=-1) mappings1 = [ {'device': '/dev/sda1', 'virtual': 'root'}, {'device': 'sdb0', 'virtual': 'ephemeral0'}, {'device': 'sdb1', 'virtual': 'ephemeral1'}, {'device': 'sdb2', 'virtual': 'ephemeral2'}, {'device': 'sdb3', 'virtual': 'ephemeral3'}, {'device': 'sdb4', 'virtual': 'ephemeral4'}, {'device': 'sdc0', 'virtual': 'swap'}, {'device': 'sdc1', 'virtual': 'swap'}, {'device': 'sdc2', 'virtual': 'swap'}, {'device': 'sdc3', 'virtual': 'swap'}, {'device': 'sdc4', 'virtual': 'swap'}] block_device_mapping1 = [ {'device_name': '/dev/sdb1', 'snapshot_id': 1234567}, {'device_name': '/dev/sdb2', 'volume_id': 1234567}, {'device_name': '/dev/sdb3', 'virtual_name': 'ephemeral5'}, {'device_name': '/dev/sdb4', 'no_device': True}, {'device_name': '/dev/sdc1', 'snapshot_id': 12345678}, {'device_name': '/dev/sdc2', 'volume_id': 12345678}, {'device_name': '/dev/sdc3', 'virtual_name': 'ephemeral6'}, {'device_name': '/dev/sdc4', 'no_device': True}] image1 = { 'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fake_name', 'status': 'active', 'properties': { 'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'type': 'machine', 'image_state': 'available', 'mappings': mappings1, 'block_device_mapping': block_device_mapping1, } } mappings2 = [{'device': '/dev/sda1', 'virtual': 'root'}] block_device_mapping2 = [{'device_name': '/dev/sdb1', 'snapshot_id': 1234567}] image2 = { 'id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'name': 'fake_name', 'status': 'active', 'properties': { 'kernel_id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'type': 'machine', 'root_device_name': '/dev/sdb1', 'mappings': mappings2, 'block_device_mapping': block_device_mapping2}} def fake_show(meh, context, image_id): _images = [copy.deepcopy(image1), copy.deepcopy(image2)] for i in _images: if str(i['id']) == str(image_id): return i raise exception.ImageNotFound(image_id=image_id) def fake_detail(meh, context): return [copy.deepcopy(image1), copy.deepcopy(image2)] self.stubs.Set(fake._FakeImageService, 'show', fake_show) self.stubs.Set(fake._FakeImageService, 'detail', fake_detail) volumes = [] snapshots = [] if create_volumes_and_snapshots: for bdm in block_device_mapping1: if 'volume_id' in bdm: vol = self._volume_create(bdm['volume_id']) volumes.append(vol['id']) if 'snapshot_id' in bdm: kwargs = {'volume_id': 76543210, 'volume_size': 1, 'name': 'test-snap', 'description': 'test snap desc', 'snap_id': bdm['snapshot_id'], 'status': 'available'} snap = self.volume_api.create_snapshot_with_kwargs( self.context, **kwargs) snapshots.append(snap['id']) return (volumes, snapshots) def _assertImageSet(self, result, root_device_type, root_device_name): self.assertEqual(1, len(result['imagesSet'])) result = result['imagesSet'][0] self.assertIn('rootDeviceType', result) self.assertEqual(result['rootDeviceType'], root_device_type) self.assertIn('rootDeviceName', result) self.assertEqual(result['rootDeviceName'], root_device_name) self.assertIn('blockDeviceMapping', result) return result _expected_root_device_name1 = '/dev/sda1' # NOTE(yamahata): noDevice doesn't make sense when returning mapping # It makes sense only when user overriding existing # mapping. _expected_bdms1 = [ {'deviceName': '/dev/sdb0', 'virtualName': 'ephemeral0'}, {'deviceName': '/dev/sdb1', 'ebs': {'snapshotId': 'snap-00053977'}}, {'deviceName': '/dev/sdb2', 'ebs': {'snapshotId': 'vol-00053977'}}, {'deviceName': '/dev/sdb3', 'virtualName': 'ephemeral5'}, {'deviceName': '/dev/sdc0', 'virtualName': 'swap'}, {'deviceName': '/dev/sdc1', 'ebs': {'snapshotId': 'snap-00bc614e'}}, {'deviceName': '/dev/sdc2', 'ebs': {'snapshotId': 'vol-00bc614e'}}, {'deviceName': '/dev/sdc3', 'virtualName': 'ephemeral6'}, ] _expected_root_device_name2 = '/dev/sdb1' _expected_bdms2 = [{'deviceName': '/dev/sdb1', 'ebs': {'snapshotId': 'snap-00053977'}}] def _run_instance(self, **kwargs): rv = self.cloud.run_instances(self.context, **kwargs) instance_id = rv['instancesSet'][0]['instanceId'] return instance_id def _restart_compute_service(self, periodic_interval_max=None): """restart compute service. NOTE: fake driver forgets all instances.""" self.compute.kill() if periodic_interval_max: self.compute = self.start_service( 'compute', periodic_interval_max=periodic_interval_max) else: self.compute = self.start_service('compute') def _volume_create(self, volume_id=None): kwargs = {'name': 'test-volume', 'description': 'test volume description', 'status': 'available', 'host': 'fake', 'size': 1, 'attach_status': 'detached'} if volume_id: kwargs['volume_id'] = volume_id return self.volume_api.create_with_kwargs(self.context, **kwargs) def _assert_volume_attached(self, vol, instance_uuid, mountpoint): self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertEqual(vol['mountpoint'], mountpoint) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") def _assert_volume_detached(self, vol): self.assertIsNone(vol['instance_uuid']) self.assertIsNone(vol['mountpoint']) self.assertEqual(vol['status'], "available") self.assertEqual(vol['attach_status'], "detached") def test_stop_start_with_volume(self): # Make sure run instance with block device mapping works. availability_zone = 'zone1:host1' vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) vol2 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) vol1_uuid = ec2utils.ec2_vol_id_to_uuid(vol1['volumeId']) vol2_uuid = ec2utils.ec2_vol_id_to_uuid(vol2['volumeId']) # enforce periodic tasks run in short time to avoid wait for 60s. self._restart_compute_service(periodic_interval_max=0.3) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, 'block_device_mapping': [{'device_name': '/dev/sdb', 'volume_id': vol1_uuid, 'delete_on_termination': False}, {'device_name': '/dev/sdc', 'volume_id': vol2_uuid, 'delete_on_termination': True}, ]} ec2_instance_id = self._run_instance(**kwargs) instance_uuid = ec2utils.ec2_inst_id_to_uuid(self.context, ec2_instance_id) vols = self.volume_api.get_all(self.context) vols = [v for v in vols if v['instance_uuid'] == instance_uuid] self.assertEqual(len(vols), 2) for vol in vols: self.assertTrue(str(vol['id']) == str(vol1_uuid) or str(vol['id']) == str(vol2_uuid)) if str(vol['id']) == str(vol1_uuid): self.volume_api.attach(self.context, vol['id'], instance_uuid, '/dev/sdb') elif str(vol['id']) == str(vol2_uuid): self.volume_api.attach(self.context, vol['id'], instance_uuid, '/dev/sdc') vol = self.volume_api.get(self.context, vol1_uuid) self._assert_volume_attached(vol, instance_uuid, '/dev/sdb') vol = self.volume_api.get(self.context, vol2_uuid) self._assert_volume_attached(vol, instance_uuid, '/dev/sdc') result = self.cloud.stop_instances(self.context, [ec2_instance_id]) self.assertTrue(result) vol = self.volume_api.get(self.context, vol1_uuid) self._assert_volume_attached(vol, instance_uuid, '/dev/sdb') vol = self.volume_api.get(self.context, vol1_uuid) self._assert_volume_attached(vol, instance_uuid, '/dev/sdb') vol = self.volume_api.get(self.context, vol2_uuid) self._assert_volume_attached(vol, instance_uuid, '/dev/sdc') self.cloud.start_instances(self.context, [ec2_instance_id]) vols = self.volume_api.get_all(self.context) vols = [v for v in vols if v['instance_uuid'] == instance_uuid] self.assertEqual(len(vols), 2) for vol in vols: self.assertTrue(str(vol['id']) == str(vol1_uuid) or str(vol['id']) == str(vol2_uuid)) self.assertTrue(vol['mountpoint'] == '/dev/sdb' or vol['mountpoint'] == '/dev/sdc') self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") #Here we puke... self.cloud.terminate_instances(self.context, [ec2_instance_id]) admin_ctxt = context.get_admin_context(read_deleted="no") vol = self.volume_api.get(admin_ctxt, vol2_uuid) self.assertFalse(vol['deleted']) self.cloud.delete_volume(self.context, vol1['volumeId']) self._restart_compute_service() def test_stop_with_attached_volume(self): # Make sure attach info is reflected to block device mapping. availability_zone = 'zone1:host1' vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) vol2 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) vol1_uuid = ec2utils.ec2_vol_id_to_uuid(vol1['volumeId']) vol2_uuid = ec2utils.ec2_vol_id_to_uuid(vol2['volumeId']) # enforce periodic tasks run in short time to avoid wait for 60s. self._restart_compute_service(periodic_interval_max=0.3) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, 'block_device_mapping': [{'device_name': '/dev/sdb', 'volume_id': vol1_uuid, 'delete_on_termination': True}]} ec2_instance_id = self._run_instance(**kwargs) instance_uuid = ec2utils.ec2_inst_id_to_uuid(self.context, ec2_instance_id) vols = self.volume_api.get_all(self.context) vols = [v for v in vols if v['instance_uuid'] == instance_uuid] self.assertEqual(len(vols), 1) for vol in vols: self.assertEqual(vol['id'], vol1_uuid) self._assert_volume_attached(vol, instance_uuid, '/dev/sdb') vol = self.volume_api.get(self.context, vol2_uuid) self._assert_volume_detached(vol) inst_obj = instance_obj.Instance.get_by_uuid(self.context, instance_uuid) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.cloud.compute_api.attach_volume(self.context, inst_obj, volume_id=vol2_uuid, device='/dev/sdc') vol1 = self.volume_api.get(self.context, vol1_uuid) self._assert_volume_attached(vol1, instance_uuid, '/dev/sdb') vol2 = self.volume_api.get(self.context, vol2_uuid) self._assert_volume_attached(vol2, instance_uuid, '/dev/sdc') self.cloud.compute_api.detach_volume(self.context, instance, vol1) vol1 = self.volume_api.get(self.context, vol1_uuid) self._assert_volume_detached(vol1) result = self.cloud.stop_instances(self.context, [ec2_instance_id]) self.assertTrue(result) vol2 = self.volume_api.get(self.context, vol2_uuid) self._assert_volume_attached(vol2, instance_uuid, '/dev/sdc') self.cloud.start_instances(self.context, [ec2_instance_id]) vols = self.volume_api.get_all(self.context) vols = [v for v in vols if v['instance_uuid'] == instance_uuid] self.assertEqual(len(vols), 1) self._assert_volume_detached(vol1) vol1 = self.volume_api.get(self.context, vol1_uuid) self._assert_volume_detached(vol1) self.cloud.terminate_instances(self.context, [ec2_instance_id]) def _create_snapshot(self, ec2_volume_id): result = self.cloud.create_snapshot(self.context, volume_id=ec2_volume_id) return result['snapshotId'] def test_run_with_snapshot(self): # Makes sure run/stop/start instance with snapshot works. availability_zone = 'zone1:host1' vol1 = self.cloud.create_volume(self.context, size=1, availability_zone=availability_zone) snap1 = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-1', description='test snap of vol %s' % vol1['volumeId']) snap1_uuid = ec2utils.ec2_snap_id_to_uuid(snap1['snapshotId']) snap2 = self.cloud.create_snapshot(self.context, vol1['volumeId'], name='snap-2', description='test snap of vol %s' % vol1['volumeId']) snap2_uuid = ec2utils.ec2_snap_id_to_uuid(snap2['snapshotId']) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1, 'block_device_mapping': [{'device_name': '/dev/vdb', 'snapshot_id': snap1_uuid, 'delete_on_termination': False, }, {'device_name': '/dev/vdc', 'snapshot_id': snap2_uuid, 'delete_on_termination': True}]} ec2_instance_id = self._run_instance(**kwargs) instance_uuid = ec2utils.ec2_inst_id_to_uuid(self.context, ec2_instance_id) vols = self.volume_api.get_all(self.context) vols = [v for v in vols if v['instance_uuid'] == instance_uuid] self.assertEqual(len(vols), 2) vol1_id = None vol2_id = None for vol in vols: snapshot_uuid = vol['snapshot_id'] if snapshot_uuid == snap1_uuid: vol1_id = vol['id'] mountpoint = '/dev/vdb' elif snapshot_uuid == snap2_uuid: vol2_id = vol['id'] mountpoint = '/dev/vdc' else: self.fail() self._assert_volume_attached(vol, instance_uuid, mountpoint) #Just make sure we found them self.assertTrue(vol1_id) self.assertTrue(vol2_id) self.cloud.terminate_instances(self.context, [ec2_instance_id]) admin_ctxt = context.get_admin_context(read_deleted="no") vol = self.volume_api.get(admin_ctxt, vol1_id) self._assert_volume_detached(vol) self.assertFalse(vol['deleted']) def test_create_image(self): # Make sure that CreateImage works. # enforce periodic tasks run in short time to avoid wait for 60s. self._restart_compute_service(periodic_interval_max=0.3) (volumes, snapshots) = self._setUpImageSet( create_volumes_and_snapshots=True) kwargs = {'image_id': 'ami-1', 'instance_type': CONF.default_flavor, 'max_count': 1} ec2_instance_id = self._run_instance(**kwargs) self.cloud.terminate_instances(self.context, [ec2_instance_id]) self._restart_compute_service() @staticmethod def _fake_bdm_get(ctxt, id): return [{'volume_id': 87654321, 'snapshot_id': None, 'no_device': None, 'virtual_name': None, 'delete_on_termination': True, 'device_name': '/dev/sdh'}, {'volume_id': None, 'snapshot_id': 98765432, 'no_device': None, 'virtual_name': None, 'delete_on_termination': True, 'device_name': '/dev/sdi'}, {'volume_id': None, 'snapshot_id': None, 'no_device': True, 'virtual_name': None, 'delete_on_termination': None, 'device_name': None}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'virtual_name': 'ephemeral0', 'delete_on_termination': None, 'device_name': '/dev/sdb'}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'virtual_name': 'swap', 'delete_on_termination': None, 'device_name': '/dev/sdc'}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'virtual_name': 'ephemeral1', 'delete_on_termination': None, 'device_name': '/dev/sdd'}, {'volume_id': None, 'snapshot_id': None, 'no_device': None, 'virtual_name': 'ephemeral2', 'delete_on_termination': None, 'device_name': '/dev/sd3'}, ] nova-2014.1/nova/tests/api/ec2/__init__.py0000664000175400017540000000117312323721477021354 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/api/test_sizelimit.py0000664000175400017540000000665312323721477022224 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo.config import cfg import StringIO import webob import nova.api.sizelimit from nova import test CONF = cfg.CONF MAX_REQUEST_BODY_SIZE = CONF.osapi_max_request_body_size class TestLimitingReader(test.NoDBTestCase): def test_limiting_reader(self): BYTES = 1024 bytes_read = 0 data = StringIO.StringIO("*" * BYTES) for chunk in nova.api.sizelimit.LimitingReader(data, BYTES): bytes_read += len(chunk) self.assertEqual(bytes_read, BYTES) bytes_read = 0 data = StringIO.StringIO("*" * BYTES) reader = nova.api.sizelimit.LimitingReader(data, BYTES) byte = reader.read(1) while len(byte) != 0: bytes_read += 1 byte = reader.read(1) self.assertEqual(bytes_read, BYTES) def test_limiting_reader_fails(self): BYTES = 1024 def _consume_all_iter(): bytes_read = 0 data = StringIO.StringIO("*" * BYTES) for chunk in nova.api.sizelimit.LimitingReader(data, BYTES - 1): bytes_read += len(chunk) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, _consume_all_iter) def _consume_all_read(): bytes_read = 0 data = StringIO.StringIO("*" * BYTES) reader = nova.api.sizelimit.LimitingReader(data, BYTES - 1) byte = reader.read(1) while len(byte) != 0: bytes_read += 1 byte = reader.read(1) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, _consume_all_read) class TestRequestBodySizeLimiter(test.NoDBTestCase): def setUp(self): super(TestRequestBodySizeLimiter, self).setUp() @webob.dec.wsgify() def fake_app(req): return webob.Response(req.body) self.middleware = nova.api.sizelimit.RequestBodySizeLimiter(fake_app) self.request = webob.Request.blank('/', method='POST') def test_content_length_acceptable(self): self.request.headers['Content-Length'] = MAX_REQUEST_BODY_SIZE self.request.body = "0" * MAX_REQUEST_BODY_SIZE response = self.request.get_response(self.middleware) self.assertEqual(response.status_int, 200) def test_content_length_too_large(self): self.request.headers['Content-Length'] = MAX_REQUEST_BODY_SIZE + 1 self.request.body = "0" * (MAX_REQUEST_BODY_SIZE + 1) response = self.request.get_response(self.middleware) self.assertEqual(response.status_int, 413) def test_request_too_large_no_content_length(self): self.request.body = "0" * (MAX_REQUEST_BODY_SIZE + 1) self.request.headers['Content-Length'] = None response = self.request.get_response(self.middleware) self.assertEqual(response.status_int, 413) nova-2014.1/nova/tests/api/test_auth.py0000664000175400017540000001731412323721477021150 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import json from oslo.config import cfg import webob import webob.exc import nova.api.auth from nova.openstack.common.gettextutils import _ from nova import test CONF = cfg.CONF class TestNovaKeystoneContextMiddleware(test.NoDBTestCase): def setUp(self): super(TestNovaKeystoneContextMiddleware, self).setUp() @webob.dec.wsgify() def fake_app(req): self.context = req.environ['nova.context'] return webob.Response() self.context = None self.middleware = nova.api.auth.NovaKeystoneContext(fake_app) self.request = webob.Request.blank('/') self.request.headers['X_TENANT_ID'] = 'testtenantid' self.request.headers['X_AUTH_TOKEN'] = 'testauthtoken' self.request.headers['X_SERVICE_CATALOG'] = json.dumps({}) def test_no_user_or_user_id(self): response = self.request.get_response(self.middleware) self.assertEqual(response.status, '401 Unauthorized') def test_user_only(self): self.request.headers['X_USER_ID'] = 'testuserid' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.user_id, 'testuserid') def test_user_id_only(self): self.request.headers['X_USER'] = 'testuser' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.user_id, 'testuser') def test_user_id_trumps_user(self): self.request.headers['X_USER_ID'] = 'testuserid' self.request.headers['X_USER'] = 'testuser' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.user_id, 'testuserid') def test_invalid_service_catalog(self): self.request.headers['X_USER'] = 'testuser' self.request.headers['X_SERVICE_CATALOG'] = "bad json" response = self.request.get_response(self.middleware) self.assertEqual(response.status, '500 Internal Server Error') class TestKeystoneMiddlewareRoles(test.NoDBTestCase): def setUp(self): super(TestKeystoneMiddlewareRoles, self).setUp() @webob.dec.wsgify() def role_check_app(req): context = req.environ['nova.context'] if "knight" in context.roles and "bad" not in context.roles: return webob.Response(status="200 Role Match") elif context.roles == ['']: return webob.Response(status="200 No Roles") else: raise webob.exc.HTTPBadRequest(_("unexpected role header")) self.middleware = nova.api.auth.NovaKeystoneContext(role_check_app) self.request = webob.Request.blank('/') self.request.headers['X_USER'] = 'testuser' self.request.headers['X_TENANT_ID'] = 'testtenantid' self.request.headers['X_AUTH_TOKEN'] = 'testauthtoken' self.request.headers['X_SERVICE_CATALOG'] = json.dumps({}) self.roles = "pawn, knight, rook" def test_roles(self): # Test that the newer style role header takes precedence. self.request.headers['X_ROLES'] = 'pawn,knight,rook' self.request.headers['X_ROLE'] = 'bad' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 Role Match') def test_roles_empty(self): self.request.headers['X_ROLES'] = '' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 No Roles') def test_deprecated_role(self): # Test fallback to older role header. self.request.headers['X_ROLE'] = 'pawn,knight,rook' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 Role Match') def test_role_empty(self): self.request.headers['X_ROLE'] = '' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 No Roles') def test_no_role_headers(self): # Test with no role headers set. response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 No Roles') class TestPipeLineFactory(test.NoDBTestCase): class FakeFilter(object): def __init__(self, name): self.name = name self.obj = None def __call__(self, obj): self.obj = obj return self class FakeApp(object): def __init__(self, name): self.name = name class FakeLoader(): def get_filter(self, name): return TestPipeLineFactory.FakeFilter(name) def get_app(self, name): return TestPipeLineFactory.FakeApp(name) def _test_pipeline(self, pipeline, app): for p in pipeline.split()[:-1]: self.assertEqual(app.name, p) self.assertIsInstance(app, TestPipeLineFactory.FakeFilter) app = app.obj self.assertEqual(app.name, pipeline.split()[-1]) self.assertIsInstance(app, TestPipeLineFactory.FakeApp) def test_pipeline_factory(self): fake_pipeline = 'test1 test2 test3' app = nova.api.auth.pipeline_factory( TestPipeLineFactory.FakeLoader(), None, noauth=fake_pipeline) self._test_pipeline(fake_pipeline, app) def test_pipeline_factory_v3(self): fake_pipeline = 'test1 test2 test3' app = nova.api.auth.pipeline_factory_v3( TestPipeLineFactory.FakeLoader(), None, noauth=fake_pipeline) self._test_pipeline(fake_pipeline, app) def test_pipeline_facotry_with_rate_limits(self): CONF.set_override('api_rate_limit', True) CONF.set_override('auth_strategy', 'keystone') fake_pipeline = 'test1 test2 test3' app = nova.api.auth.pipeline_factory( TestPipeLineFactory.FakeLoader(), None, keystone=fake_pipeline) self._test_pipeline(fake_pipeline, app) def test_pipeline_facotry_without_rate_limits(self): CONF.set_override('auth_strategy', 'keystone') fake_pipeline1 = 'test1 test2 test3' fake_pipeline2 = 'test4 test5 test6' app = nova.api.auth.pipeline_factory( TestPipeLineFactory.FakeLoader(), None, keystone_nolimit=fake_pipeline1, keystone=fake_pipeline2) self._test_pipeline(fake_pipeline1, app) def test_pipeline_facotry_missing_nolimits_pipeline(self): CONF.set_override('api_rate_limit', False) CONF.set_override('auth_strategy', 'keystone') fake_pipeline = 'test1 test2 test3' app = nova.api.auth.pipeline_factory( TestPipeLineFactory.FakeLoader(), None, keystone=fake_pipeline) self._test_pipeline(fake_pipeline, app) def test_pipeline_facotry_compatibility_with_v3(self): CONF.set_override('api_rate_limit', True) CONF.set_override('auth_strategy', 'keystone') fake_pipeline = 'test1 ratelimit_v3 test3' app = nova.api.auth.pipeline_factory( TestPipeLineFactory.FakeLoader(), None, keystone=fake_pipeline) self._test_pipeline('test1 test3', app) nova-2014.1/nova/tests/api/test_validator.py0000664000175400017540000000752512323721477022177 0ustar jenkinsjenkins00000000000000# Copyright 2011 Cloudscaling, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import base64 from nova.api import validator from nova import test class ValidatorTestCase(test.NoDBTestCase): def test_validate(self): fixture = { 'foo': lambda val: val is True } self.assertTrue( validator.validate({'foo': True}, fixture)) self.assertFalse( validator.validate({'foo': False}, fixture)) def test_only_tests_intersect(self): """Test that validator.validate only tests the intersect of keys from args and validator. """ fixture = { 'foo': lambda val: True, 'bar': lambda val: True } self.assertTrue( validator.validate({'foo': True}, fixture)) self.assertTrue( validator.validate({'foo': True, 'bar': True}, fixture)) self.assertTrue( validator.validate({'foo': True, 'bar': True, 'baz': True}, fixture)) def test_validate_str(self): self.assertTrue(validator.validate_str()('foo')) self.assertFalse(validator.validate_str()(1)) self.assertTrue(validator.validate_str(4)('foo')) self.assertFalse(validator.validate_str(2)('foo')) self.assertFalse(validator.validate_str()(None)) self.assertTrue(validator.validate_str()(u'foo')) def test_validate_int(self): self.assertTrue(validator.validate_int()(1)) self.assertFalse(validator.validate_int()('foo')) self.assertTrue(validator.validate_int(100)(1)) self.assertFalse(validator.validate_int(4)(5)) self.assertFalse(validator.validate_int()(None)) def test_validate_ec2_id(self): self.assertFalse(validator.validate_ec2_id('foobar')) self.assertFalse(validator.validate_ec2_id('')) self.assertFalse(validator.validate_ec2_id(1234)) self.assertTrue(validator.validate_ec2_id('i-284f3a41')) def test_validate_url_path(self): self.assertTrue(validator.validate_url_path('/path/to/file')) self.assertFalse(validator.validate_url_path('path/to/file')) self.assertFalse( validator.validate_url_path('#this is not a path!@#$%^&*()') ) self.assertFalse(validator.validate_url_path(None)) self.assertFalse(validator.validate_url_path(123)) def test_validate_image_path(self): self.assertTrue(validator.validate_image_path('path/to/file')) self.assertFalse(validator.validate_image_path('/path/to/file')) self.assertFalse(validator.validate_image_path('path')) def test_validate_user_data(self): fixture = base64.b64encode('foo') self.assertTrue(validator.validate_user_data(fixture)) self.assertFalse(validator.validate_user_data(False)) self.assertFalse(validator.validate_user_data('hello, world!')) def test_default_validator(self): expect_pass = { 'attribute': 'foobar' } self.assertTrue(validator.validate(expect_pass, validator.DEFAULT_VALIDATOR)) expect_fail = { 'attribute': 0 } self.assertFalse(validator.validate(expect_fail, validator.DEFAULT_VALIDATOR)) nova-2014.1/nova/tests/api/__init__.py0000664000175400017540000000117312323721477020703 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/test_flavors.py0000664000175400017540000006020412323721477021106 0ustar jenkinsjenkins00000000000000# Copyright 2011 Ken Pepple # 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. """ Unit Tests for flavors code """ import time from nova.compute import flavors from nova import context from nova import db from nova.db.sqlalchemy import api as sql_session from nova.db.sqlalchemy import models from nova import exception from nova import test DEFAULT_FLAVORS = [ {'memory_mb': 512, 'root_gb': 1, 'deleted_at': None, 'name': 'm1.tiny', 'deleted': 0, 'created_at': None, 'ephemeral_gb': 0, 'updated_at': None, 'disabled': False, 'vcpus': 1, 'extra_specs': {}, 'swap': 0, 'rxtx_factor': 1.0, 'is_public': True, 'flavorid': '1', 'vcpu_weight': None, 'id': 2}, {'memory_mb': 2048, 'root_gb': 20, 'deleted_at': None, 'name': 'm1.small', 'deleted': 0, 'created_at': None, 'ephemeral_gb': 0, 'updated_at': None, 'disabled': False, 'vcpus': 1, 'extra_specs': {}, 'swap': 0, 'rxtx_factor': 1.0, 'is_public': True, 'flavorid': '2', 'vcpu_weight': None, 'id': 5}, {'memory_mb': 4096, 'root_gb': 40, 'deleted_at': None, 'name': 'm1.medium', 'deleted': 0, 'created_at': None, 'ephemeral_gb': 0, 'updated_at': None, 'disabled': False, 'vcpus': 2, 'extra_specs': {}, 'swap': 0, 'rxtx_factor': 1.0, 'is_public': True, 'flavorid': '3', 'vcpu_weight': None, 'id': 1}, {'memory_mb': 8192, 'root_gb': 80, 'deleted_at': None, 'name': 'm1.large', 'deleted': 0, 'created_at': None, 'ephemeral_gb': 0, 'updated_at': None, 'disabled': False, 'vcpus': 4, 'extra_specs': {}, 'swap': 0, 'rxtx_factor': 1.0, 'is_public': True, 'flavorid': '4', 'vcpu_weight': None, 'id': 3}, {'memory_mb': 16384, 'root_gb': 160, 'deleted_at': None, 'name': 'm1.xlarge', 'deleted': 0, 'created_at': None, 'ephemeral_gb': 0, 'updated_at': None, 'disabled': False, 'vcpus': 8, 'extra_specs': {}, 'swap': 0, 'rxtx_factor': 1.0, 'is_public': True, 'flavorid': '5', 'vcpu_weight': None, 'id': 4} ] class InstanceTypeTestCase(test.TestCase): """Test cases for flavor code.""" def _generate_name(self): """return a name not in the DB.""" nonexistent_flavor = str(int(time.time())) all_flavors = flavors.get_all_flavors() while nonexistent_flavor in all_flavors: nonexistent_flavor += "z" else: return nonexistent_flavor def _generate_flavorid(self): """return a flavorid not in the DB.""" nonexistent_flavor = 2700 flavor_ids = [value["id"] for key, value in flavors.get_all_flavors().iteritems()] while nonexistent_flavor in flavor_ids: nonexistent_flavor += 1 else: return nonexistent_flavor def _existing_flavor(self): """return first flavor name.""" return flavors.get_all_flavors().keys()[0] def test_add_instance_type_access(self): user_id = 'fake' project_id = 'fake' ctxt = context.RequestContext(user_id, project_id, is_admin=True) flavor_id = 'flavor1' type_ref = flavors.create('some flavor', 256, 1, 120, 100, flavorid=flavor_id) access_ref = flavors.add_flavor_access(flavor_id, project_id, ctxt=ctxt) self.assertEqual(access_ref["project_id"], project_id) self.assertEqual(access_ref["instance_type_id"], type_ref["id"]) def test_add_flavor_access_already_exists(self): user_id = 'fake' project_id = 'fake' ctxt = context.RequestContext(user_id, project_id, is_admin=True) flavor_id = 'flavor1' flavors.create('some flavor', 256, 1, 120, 100, flavorid=flavor_id) flavors.add_flavor_access(flavor_id, project_id, ctxt=ctxt) self.assertRaises(exception.FlavorAccessExists, flavors.add_flavor_access, flavor_id, project_id, ctxt) def test_add_flavor_access_invalid_flavor(self): user_id = 'fake' project_id = 'fake' ctxt = context.RequestContext(user_id, project_id, is_admin=True) flavor_id = 'no_such_flavor' self.assertRaises(exception.FlavorNotFound, flavors.add_flavor_access, flavor_id, project_id, ctxt) def test_remove_flavor_access(self): user_id = 'fake' project_id = 'fake' ctxt = context.RequestContext(user_id, project_id, is_admin=True) flavor_id = 'flavor1' flavors.create('some flavor', 256, 1, 120, 100, flavorid=flavor_id) flavors.add_flavor_access(flavor_id, project_id, ctxt) flavors.remove_flavor_access(flavor_id, project_id, ctxt) projects = flavors.get_flavor_access_by_flavor_id(flavor_id, ctxt) self.assertEqual([], projects) def test_remove_flavor_access_doesnt_exists(self): user_id = 'fake' project_id = 'fake' ctxt = context.RequestContext(user_id, project_id, is_admin=True) flavor_id = 'flavor1' flavors.create('some flavor', 256, 1, 120, 100, flavorid=flavor_id) self.assertRaises(exception.FlavorAccessNotFound, flavors.remove_flavor_access, flavor_id, project_id, ctxt=ctxt) def test_get_all_instance_types(self): # Ensures that all flavors can be retrieved. session = sql_session.get_session() total_instance_types = session.query(models.InstanceTypes).count() inst_types = flavors.get_all_flavors() self.assertEqual(total_instance_types, len(inst_types)) def test_non_existent_inst_type_shouldnt_delete(self): # Ensures that flavor creation fails with invalid args. self.assertRaises(exception.FlavorNotFoundByName, flavors.destroy, 'unknown_flavor') def test_will_not_destroy_with_no_name(self): # Ensure destroy said path of no name raises error. self.assertRaises(exception.FlavorNotFoundByName, flavors.destroy, None) def test_will_not_get_bad_default_instance_type(self): # ensures error raised on bad default flavor. self.flags(default_flavor='unknown_flavor') self.assertRaises(exception.FlavorNotFound, flavors.get_default_flavor) def test_will_get_flavor_by_id(self): default_instance_type = flavors.get_default_flavor() instance_type_id = default_instance_type['id'] fetched = flavors.get_flavor(instance_type_id) self.assertEqual(default_instance_type, fetched) def test_will_not_get_flavor_by_unknown_id(self): # Ensure get by name returns default flavor with no name. self.assertRaises(exception.FlavorNotFound, flavors.get_flavor, 10000) def test_will_not_get_flavor_with_bad_id(self): # Ensure get by name returns default flavor with bad name. self.assertRaises(exception.FlavorNotFound, flavors.get_flavor, 'asdf') def test_flavor_get_by_None_name_returns_default(self): # Ensure get by name returns default flavor with no name. default = flavors.get_default_flavor() actual = flavors.get_flavor_by_name(None) self.assertEqual(default, actual) def test_will_not_get_flavor_with_bad_name(self): # Ensure get by name returns default flavor with bad name. self.assertRaises(exception.FlavorNotFound, flavors.get_flavor_by_name, 10000) def test_will_not_get_instance_by_unknown_flavor_id(self): # Ensure get by flavor raises error with wrong flavorid. self.assertRaises(exception.FlavorNotFound, flavors.get_flavor_by_flavor_id, 'unknown_flavor') def test_will_get_instance_by_flavor_id(self): default_instance_type = flavors.get_default_flavor() flavorid = default_instance_type['flavorid'] fetched = flavors.get_flavor_by_flavor_id(flavorid) self.assertEqual(default_instance_type, fetched) def test_can_read_deleted_types_using_flavor_id(self): # Ensure deleted flavors can be read when querying flavor_id. inst_type_name = "test" inst_type_flavor_id = "test1" inst_type = flavors.create(inst_type_name, 256, 1, 120, 100, inst_type_flavor_id) self.assertEqual(inst_type_name, inst_type["name"]) # NOTE(jk0): The deleted flavor will show up here because the context # in get_flavor_by_flavor_id() is set to use read_deleted by # default. flavors.destroy(inst_type["name"]) deleted_inst_type = flavors.get_flavor_by_flavor_id( inst_type_flavor_id) self.assertEqual(inst_type_name, deleted_inst_type["name"]) def test_read_deleted_false_converting_flavorid(self): """Ensure deleted flavors are not returned when not needed (for example when creating a server and attempting to translate from flavorid to instance_type_id. """ flavors.create("instance_type1", 256, 1, 120, 100, "test1") flavors.destroy("instance_type1") flavors.create("instance_type1_redo", 256, 1, 120, 100, "test1") instance_type = flavors.get_flavor_by_flavor_id( "test1", read_deleted="no") self.assertEqual("instance_type1_redo", instance_type["name"]) def test_get_all_flavors_sorted_list_sort(self): # Test default sort all_flavors = flavors.get_all_flavors_sorted_list() self.assertEqual(DEFAULT_FLAVORS, all_flavors) # Test sorted by name all_flavors = flavors.get_all_flavors_sorted_list(sort_key='name') expected = sorted(DEFAULT_FLAVORS, key=lambda item: item['name']) self.assertEqual(expected, all_flavors) def test_get_all_flavors_sorted_list_limit(self): limited_flavors = flavors.get_all_flavors_sorted_list(limit=2) self.assertEqual(2, len(limited_flavors)) def test_get_all_flavors_sorted_list_marker(self): all_flavors = flavors.get_all_flavors_sorted_list() # Set the 3rd result as the marker marker_flavorid = all_flavors[2]['flavorid'] marked_flavors = flavors.get_all_flavors_sorted_list( marker=marker_flavorid) # We expect everything /after/ the 3rd result expected_results = all_flavors[3:] self.assertEqual(expected_results, marked_flavors) def test_get_inactive_flavors(self): flav1 = flavors.create('flavor1', 256, 1, 120) flav2 = flavors.create('flavor2', 512, 4, 250) flavors.destroy('flavor1') returned_flavors_ids = flavors.get_all_flavors().keys() self.assertNotIn(flav1['id'], returned_flavors_ids) self.assertIn(flav2['id'], returned_flavors_ids) returned_flavors_ids = flavors.get_all_flavors(inactive=True).keys() self.assertIn(flav1['id'], returned_flavors_ids) self.assertIn(flav2['id'], returned_flavors_ids) def test_get_inactive_flavors_with_same_name(self): flav1 = flavors.create('flavor', 256, 1, 120) flavors.destroy('flavor') flav2 = flavors.create('flavor', 512, 4, 250) returned_flavors_ids = flavors.get_all_flavors().keys() self.assertNotIn(flav1['id'], returned_flavors_ids) self.assertIn(flav2['id'], returned_flavors_ids) returned_flavors_ids = flavors.get_all_flavors(inactive=True).keys() self.assertIn(flav1['id'], returned_flavors_ids) self.assertIn(flav2['id'], returned_flavors_ids) def test_get_inactive_flavors_with_same_flavorid(self): flav1 = flavors.create('flavor', 256, 1, 120, 100, "flavid") flavors.destroy('flavor') flav2 = flavors.create('flavor', 512, 4, 250, 100, "flavid") returned_flavors_ids = flavors.get_all_flavors().keys() self.assertNotIn(flav1['id'], returned_flavors_ids) self.assertIn(flav2['id'], returned_flavors_ids) returned_flavors_ids = flavors.get_all_flavors(inactive=True).keys() self.assertIn(flav1['id'], returned_flavors_ids) self.assertIn(flav2['id'], returned_flavors_ids) class InstanceTypeToolsTest(test.TestCase): def _dict_to_metadata(self, data): return [{'key': key, 'value': value} for key, value in data.items()] def _test_extract_flavor(self, prefix): instance_type = flavors.get_default_flavor() metadata = {} flavors.save_flavor_info(metadata, instance_type, prefix) instance = {'system_metadata': self._dict_to_metadata(metadata)} _instance_type = flavors.extract_flavor(instance, prefix) props = flavors.system_metadata_flavor_props.keys() for key in instance_type.keys(): if key not in props: del instance_type[key] self.assertEqual(instance_type, _instance_type) def test_extract_flavor(self): self._test_extract_flavor('') def test_extract_flavor_prefix(self): self._test_extract_flavor('foo_') def test_save_flavor_info(self): instance_type = flavors.get_default_flavor() example = {} example_prefix = {} for key in flavors.system_metadata_flavor_props.keys(): example['instance_type_%s' % key] = instance_type[key] example_prefix['fooinstance_type_%s' % key] = instance_type[key] metadata = {} flavors.save_flavor_info(metadata, instance_type) self.assertEqual(example, metadata) metadata = {} flavors.save_flavor_info(metadata, instance_type, 'foo') self.assertEqual(example_prefix, metadata) def test_delete_flavor_info(self): instance_type = flavors.get_default_flavor() metadata = {} flavors.save_flavor_info(metadata, instance_type) flavors.save_flavor_info(metadata, instance_type, '_') flavors.delete_flavor_info(metadata, '', '_') self.assertEqual(metadata, {}) class InstanceTypeFilteringTest(test.TestCase): """Test cases for the filter option available for instance_type_get_all.""" def setUp(self): super(InstanceTypeFilteringTest, self).setUp() self.context = context.get_admin_context() def assertFilterResults(self, filters, expected): inst_types = db.flavor_get_all( self.context, filters=filters) inst_names = [i['name'] for i in inst_types] self.assertEqual(inst_names, expected) def test_no_filters(self): filters = None expected = ['m1.tiny', 'm1.small', 'm1.medium', 'm1.large', 'm1.xlarge'] self.assertFilterResults(filters, expected) def test_min_memory_mb_filter(self): # Exclude tiny instance which is 512 MB. filters = dict(min_memory_mb=513) expected = ['m1.small', 'm1.medium', 'm1.large', 'm1.xlarge'] self.assertFilterResults(filters, expected) def test_min_root_gb_filter(self): # Exclude everything but large and xlarge which have >= 80 GB. filters = dict(min_root_gb=80) expected = ['m1.large', 'm1.xlarge'] self.assertFilterResults(filters, expected) def test_min_memory_mb_AND_root_gb_filter(self): # Exclude everything but large and xlarge which have >= 80 GB. filters = dict(min_memory_mb=16384, min_root_gb=80) expected = ['m1.xlarge'] self.assertFilterResults(filters, expected) class CreateInstanceTypeTest(test.TestCase): def assertInvalidInput(self, *create_args, **create_kwargs): self.assertRaises(exception.InvalidInput, flavors.create, *create_args, **create_kwargs) def test_create_with_valid_name(self): # Names can contain alphanumeric and [_.- ] flavors.create('azAZ09. -_', 64, 1, 120) # And they are not limited to ascii characters # E.g.: m1.huge in simplified Chinese flavors.create(u'm1.\u5DE8\u5927', 6400, 100, 12000) def test_name_with_special_characters(self): # Names can contain alphanumeric and [_.- ] flavors.create('_foo.bar-123', 64, 1, 120) # Ensure instance types raises InvalidInput for invalid characters. self.assertInvalidInput('foobar#', 64, 1, 120) def test_non_ascii_name_with_special_characters(self): self.assertInvalidInput(u'm1.\u5DE8\u5927 #', 64, 1, 120) def test_name_length_checks(self): MAX_LEN = 255 # Flavor name with 255 characters or less is valid. flavors.create('a' * MAX_LEN, 64, 1, 120) # Flavor name which is more than 255 characters will cause error. self.assertInvalidInput('a' * (MAX_LEN + 1), 64, 1, 120) # Flavor name which is empty should cause an error self.assertInvalidInput('', 64, 1, 120) def test_all_whitespace_flavor_names_rejected(self): self.assertInvalidInput(' ', 64, 1, 120) def test_flavorid_with_invalid_characters(self): # Ensure Flavor ID can only contain [a-zA-Z0-9_.- ] self.assertInvalidInput('a', 64, 1, 120, flavorid=u'\u2605') self.assertInvalidInput('a', 64, 1, 120, flavorid='%%$%$@#$#@$@#$^%') def test_flavorid_length_checks(self): MAX_LEN = 255 # Flavor ID which is more than 255 characters will cause error. self.assertInvalidInput('a', 64, 1, 120, flavorid='a' * (MAX_LEN + 1)) def test_memory_must_be_positive_db_integer(self): self.assertInvalidInput('flavor1', 'foo', 1, 120) self.assertInvalidInput('flavor1', -1, 1, 120) self.assertInvalidInput('flavor1', 0, 1, 120) self.assertInvalidInput('flavor1', db.MAX_INT + 1, 1, 120) flavors.create('flavor1', 1, 1, 120) def test_vcpus_must_be_positive_db_integer(self): self.assertInvalidInput('flavor`', 64, 'foo', 120) self.assertInvalidInput('flavor1', 64, -1, 120) self.assertInvalidInput('flavor1', 64, 0, 120) self.assertInvalidInput('flavor1', 64, db.MAX_INT + 1, 120) flavors.create('flavor1', 64, 1, 120) def test_root_gb_must_be_nonnegative_db_integer(self): self.assertInvalidInput('flavor1', 64, 1, 'foo') self.assertInvalidInput('flavor1', 64, 1, -1) self.assertInvalidInput('flavor1', 64, 1, db.MAX_INT + 1) flavors.create('flavor1', 64, 1, 0) flavors.create('flavor2', 64, 1, 120) def test_ephemeral_gb_must_be_nonnegative_db_integer(self): self.assertInvalidInput('flavor1', 64, 1, 120, ephemeral_gb='foo') self.assertInvalidInput('flavor1', 64, 1, 120, ephemeral_gb=-1) self.assertInvalidInput('flavor1', 64, 1, 120, ephemeral_gb=db.MAX_INT + 1) flavors.create('flavor1', 64, 1, 120, ephemeral_gb=0) flavors.create('flavor2', 64, 1, 120, ephemeral_gb=120) def test_swap_must_be_nonnegative_db_integer(self): self.assertInvalidInput('flavor1', 64, 1, 120, swap='foo') self.assertInvalidInput('flavor1', 64, 1, 120, swap=-1) self.assertInvalidInput('flavor1', 64, 1, 120, swap=db.MAX_INT + 1) flavors.create('flavor1', 64, 1, 120, swap=0) flavors.create('flavor2', 64, 1, 120, swap=1) def test_rxtx_factor_must_be_positive_float(self): self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor='foo') self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor=-1.0) self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor=0.0) flavor = flavors.create('flavor1', 64, 1, 120, rxtx_factor=1.0) self.assertEqual(1.0, flavor['rxtx_factor']) flavor = flavors.create('flavor2', 64, 1, 120, rxtx_factor=1.1) self.assertEqual(1.1, flavor['rxtx_factor']) def test_rxtx_factor_must_be_within_sql_float_range(self): _context = context.get_admin_context() inst_types = db.flavor_get_all(_context) # We do * 10 since this is an approximation and we need to make sure # the difference is noticeble. over_rxtx_factor = flavors.SQL_SP_FLOAT_MAX * 10 self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor=over_rxtx_factor) flavor = flavors.create('flavor2', 64, 1, 120, rxtx_factor=flavors.SQL_SP_FLOAT_MAX) self.assertEqual(flavors.SQL_SP_FLOAT_MAX, flavor['rxtx_factor']) def test_is_public_must_be_valid_bool_string(self): self.assertInvalidInput('flavor1', 64, 1, 120, is_public='foo') flavors.create('flavor1', 64, 1, 120, is_public='TRUE') flavors.create('flavor2', 64, 1, 120, is_public='False') flavors.create('flavor3', 64, 1, 120, is_public='Yes') flavors.create('flavor4', 64, 1, 120, is_public='No') flavors.create('flavor5', 64, 1, 120, is_public='Y') flavors.create('flavor6', 64, 1, 120, is_public='N') flavors.create('flavor7', 64, 1, 120, is_public='1') flavors.create('flavor8', 64, 1, 120, is_public='0') flavors.create('flavor9', 64, 1, 120, is_public='true') def test_flavorid_populated(self): flavor1 = flavors.create('flavor1', 64, 1, 120) self.assertIsNot(None, flavor1['flavorid']) flavor2 = flavors.create('flavor2', 64, 1, 120, flavorid='') self.assertIsNot(None, flavor2['flavorid']) flavor3 = flavors.create('flavor3', 64, 1, 120, flavorid='foo') self.assertEqual('foo', flavor3['flavorid']) def test_default_values(self): flavor1 = flavors.create('flavor1', 64, 1, 120) self.assertIsNot(None, flavor1['flavorid']) self.assertEqual(flavor1['ephemeral_gb'], 0) self.assertEqual(flavor1['swap'], 0) self.assertEqual(flavor1['rxtx_factor'], 1.0) def test_basic_create(self): # Ensure instance types can be created. original_list = flavors.get_all_flavors() # Create new type and make sure values stick flavor = flavors.create('flavor', 64, 1, 120) self.assertEqual(flavor['name'], 'flavor') self.assertEqual(flavor['memory_mb'], 64) self.assertEqual(flavor['vcpus'], 1) self.assertEqual(flavor['root_gb'], 120) # Ensure new type shows up in list new_list = flavors.get_all_flavors() self.assertNotEqual(len(original_list), len(new_list), 'flavor was not created') def test_create_then_delete(self): original_list = flavors.get_all_flavors() flavor = flavors.create('flavor', 64, 1, 120) # Ensure new type shows up in list new_list = flavors.get_all_flavors() self.assertNotEqual(len(original_list), len(new_list), 'instance type was not created') flavors.destroy('flavor') self.assertRaises(exception.FlavorNotFound, flavors.get_flavor, flavor['id']) # Deleted instance should not be in list anymore new_list = flavors.get_all_flavors() self.assertEqual(original_list, new_list) def test_duplicate_names_fail(self): # Ensures that name duplicates raise FlavorCreateFailed. flavors.create('flavor', 256, 1, 120, 200, 'flavor1') self.assertRaises(exception.FlavorExists, flavors.create, 'flavor', 64, 1, 120) def test_duplicate_flavorids_fail(self): # Ensures that flavorid duplicates raise FlavorCreateFailed. flavors.create('flavor1', 64, 1, 120, flavorid='flavorid') self.assertRaises(exception.FlavorIdExists, flavors.create, 'flavor2', 64, 1, 120, flavorid='flavorid') nova-2014.1/nova/tests/test_context.py0000664000175400017540000001075112323721477021120 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import context from nova import test class ContextTestCase(test.NoDBTestCase): def test_request_context_sets_is_admin(self): ctxt = context.RequestContext('111', '222', roles=['admin', 'weasel']) self.assertEqual(ctxt.is_admin, True) def test_request_context_sets_is_admin_by_role(self): ctxt = context.RequestContext('111', '222', roles=['administrator']) self.assertEqual(ctxt.is_admin, True) def test_request_context_sets_is_admin_upcase(self): ctxt = context.RequestContext('111', '222', roles=['Admin', 'weasel']) self.assertEqual(ctxt.is_admin, True) def test_request_context_read_deleted(self): ctxt = context.RequestContext('111', '222', read_deleted='yes') self.assertEqual(ctxt.read_deleted, 'yes') ctxt.read_deleted = 'no' self.assertEqual(ctxt.read_deleted, 'no') def test_request_context_read_deleted_invalid(self): self.assertRaises(ValueError, context.RequestContext, '111', '222', read_deleted=True) ctxt = context.RequestContext('111', '222') self.assertRaises(ValueError, setattr, ctxt, 'read_deleted', True) def test_extra_args_to_context_get_logged(self): info = {} def fake_warn(log_msg): info['log_msg'] = log_msg self.stubs.Set(context.LOG, 'warn', fake_warn) c = context.RequestContext('user', 'project', extra_arg1='meow', extra_arg2='wuff') self.assertTrue(c) self.assertIn("'extra_arg1': 'meow'", info['log_msg']) self.assertIn("'extra_arg2': 'wuff'", info['log_msg']) def test_service_catalog_default(self): ctxt = context.RequestContext('111', '222') self.assertEqual(ctxt.service_catalog, []) ctxt = context.RequestContext('111', '222', service_catalog=[]) self.assertEqual(ctxt.service_catalog, []) ctxt = context.RequestContext('111', '222', service_catalog=None) self.assertEqual(ctxt.service_catalog, []) def test_service_catalog_cinder_only(self): service_catalog = [ {u'type': u'compute', u'name': u'nova'}, {u'type': u's3', u'name': u's3'}, {u'type': u'image', u'name': u'glance'}, {u'type': u'volume', u'name': u'cinder'}, {u'type': u'ec2', u'name': u'ec2'}, {u'type': u'object-store', u'name': u'swift'}, {u'type': u'identity', u'name': u'keystone'}, {u'type': None, u'name': u'S_withouttype'}, {u'type': u'vo', u'name': u'S_partofvolume'}] volume_catalog = [{u'type': u'volume', u'name': u'cinder'}] ctxt = context.RequestContext('111', '222', service_catalog=service_catalog) self.assertEqual(ctxt.service_catalog, volume_catalog) def test_to_dict_from_dict_no_log(self): warns = [] def stub_warn(msg, *a, **kw): if (a and len(a) == 1 and isinstance(a[0], dict) and a[0]): a = a[0] warns.append(str(msg) % a) self.stubs.Set(context.LOG, 'warn', stub_warn) ctxt = context.RequestContext('111', '222', roles=['admin', 'weasel']) ctxt = context.RequestContext.from_dict(ctxt.to_dict()) self.assertEqual(len(warns), 0, warns) nova-2014.1/nova/tests/test_notifications.py0000664000175400017540000003205312323721477022304 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for common notifcations.""" import copy from oslo.config import cfg from nova.compute import flavors from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import db from nova.network import api as network_api from nova import notifications from nova import test from nova.tests import fake_network from nova.tests import fake_notifier CONF = cfg.CONF CONF.import_opt('compute_driver', 'nova.virt.driver') class NotificationsTestCase(test.TestCase): def setUp(self): super(NotificationsTestCase, self).setUp() self.net_info = fake_network.fake_get_instance_nw_info(self.stubs, 1, 1) def fake_get_nw_info(cls, ctxt, instance): self.assertTrue(ctxt.is_admin) return self.net_info self.stubs.Set(network_api.API, 'get_instance_nw_info', fake_get_nw_info) fake_network.set_stub_network_methods(self.stubs) fake_notifier.stub_notifier(self.stubs) self.addCleanup(fake_notifier.reset) self.flags(compute_driver='nova.virt.fake.FakeDriver', network_manager='nova.network.manager.FlatManager', notify_on_state_change="vm_and_task_state", host='testhost') self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.instance = self._wrapped_create() def _wrapped_create(self, params=None): instance_type = flavors.get_flavor_by_name('m1.tiny') sys_meta = flavors.save_flavor_info({}, instance_type) inst = {} inst['image_ref'] = 1 inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['instance_type_id'] = instance_type['id'] inst['root_gb'] = 0 inst['ephemeral_gb'] = 0 inst['access_ip_v4'] = '1.2.3.4' inst['access_ip_v6'] = 'feed:5eed' inst['display_name'] = 'test_instance' inst['hostname'] = 'test_instance_hostname' inst['node'] = 'test_instance_node' inst['system_metadata'] = sys_meta if params: inst.update(params) return db.instance_create(self.context, inst) def test_send_api_fault_disabled(self): self.flags(notify_api_faults=False) notifications.send_api_fault("http://example.com/foo", 500, None) self.assertEqual(0, len(fake_notifier.NOTIFICATIONS)) def test_send_api_fault(self): self.flags(notify_api_faults=True) exception = None try: # Get a real exception with a call stack. raise test.TestingException("junk") except test.TestingException as e: exception = e notifications.send_api_fault("http://example.com/foo", 500, exception) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) n = fake_notifier.NOTIFICATIONS[0] self.assertEqual(n.priority, 'ERROR') self.assertEqual(n.event_type, 'api.fault') self.assertEqual(n.payload['url'], 'http://example.com/foo') self.assertEqual(n.payload['status'], 500) self.assertIsNotNone(n.payload['exception']) def test_notif_disabled(self): # test config disable of the notifcations self.flags(notify_on_state_change=None) old = copy.copy(self.instance) self.instance["vm_state"] = vm_states.ACTIVE old_vm_state = old['vm_state'] new_vm_state = self.instance["vm_state"] old_task_state = old['task_state'] new_task_state = self.instance["task_state"] notifications.send_update_with_states(self.context, self.instance, old_vm_state, new_vm_state, old_task_state, new_task_state, verify_states=True) notifications.send_update(self.context, old, self.instance) self.assertEqual(0, len(fake_notifier.NOTIFICATIONS)) def test_task_notif(self): # test config disable of just the task state notifications self.flags(notify_on_state_change="vm_state") # we should not get a notification on task stgate chagne now old = copy.copy(self.instance) self.instance["task_state"] = task_states.SPAWNING old_vm_state = old['vm_state'] new_vm_state = self.instance["vm_state"] old_task_state = old['task_state'] new_task_state = self.instance["task_state"] notifications.send_update_with_states(self.context, self.instance, old_vm_state, new_vm_state, old_task_state, new_task_state, verify_states=True) self.assertEqual(0, len(fake_notifier.NOTIFICATIONS)) # ok now enable task state notifcations and re-try self.flags(notify_on_state_change="vm_and_task_state") notifications.send_update(self.context, old, self.instance) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) def test_send_no_notif(self): # test notification on send no initial vm state: old_vm_state = self.instance['vm_state'] new_vm_state = self.instance['vm_state'] old_task_state = self.instance['task_state'] new_task_state = self.instance['task_state'] notifications.send_update_with_states(self.context, self.instance, old_vm_state, new_vm_state, old_task_state, new_task_state, service="compute", host=None, verify_states=True) self.assertEqual(0, len(fake_notifier.NOTIFICATIONS)) def test_send_on_vm_change(self): # pretend we just transitioned to ACTIVE: params = {"vm_state": vm_states.ACTIVE} (old_ref, new_ref) = db.instance_update_and_get_original(self.context, self.instance['uuid'], params) notifications.send_update(self.context, old_ref, new_ref) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) def test_send_on_task_change(self): # pretend we just transitioned to task SPAWNING: params = {"task_state": task_states.SPAWNING} (old_ref, new_ref) = db.instance_update_and_get_original(self.context, self.instance['uuid'], params) notifications.send_update(self.context, old_ref, new_ref) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) def test_no_update_with_states(self): notifications.send_update_with_states(self.context, self.instance, vm_states.BUILDING, vm_states.BUILDING, task_states.SPAWNING, task_states.SPAWNING, verify_states=True) self.assertEqual(0, len(fake_notifier.NOTIFICATIONS)) def test_vm_update_with_states(self): notifications.send_update_with_states(self.context, self.instance, vm_states.BUILDING, vm_states.ACTIVE, task_states.SPAWNING, task_states.SPAWNING, verify_states=True) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) notif = fake_notifier.NOTIFICATIONS[0] payload = notif.payload 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"] node = self.instance["node"] self.assertEqual(vm_states.BUILDING, payload["old_state"]) self.assertEqual(vm_states.ACTIVE, payload["state"]) self.assertEqual(task_states.SPAWNING, payload["old_task_state"]) self.assertEqual(task_states.SPAWNING, payload["new_task_state"]) self.assertEqual(payload["access_ip_v4"], access_ip_v4) self.assertEqual(payload["access_ip_v6"], access_ip_v6) self.assertEqual(payload["display_name"], display_name) self.assertEqual(payload["hostname"], hostname) self.assertEqual(payload["node"], node) def test_task_update_with_states(self): self.flags(notify_on_state_change="vm_and_task_state") notifications.send_update_with_states(self.context, self.instance, vm_states.BUILDING, vm_states.BUILDING, task_states.SPAWNING, None, verify_states=True) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) notif = fake_notifier.NOTIFICATIONS[0] payload = notif.payload 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.assertEqual(vm_states.BUILDING, payload["old_state"]) self.assertEqual(vm_states.BUILDING, payload["state"]) self.assertEqual(task_states.SPAWNING, payload["old_task_state"]) self.assertIsNone(payload["new_task_state"]) self.assertEqual(payload["access_ip_v4"], access_ip_v4) self.assertEqual(payload["access_ip_v6"], access_ip_v6) self.assertEqual(payload["display_name"], display_name) self.assertEqual(payload["hostname"], hostname) def test_update_no_service_name(self): notifications.send_update_with_states(self.context, self.instance, vm_states.BUILDING, vm_states.BUILDING, task_states.SPAWNING, None) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) # service name should default to 'compute' notif = fake_notifier.NOTIFICATIONS[0] self.assertEqual('compute.testhost', notif.publisher_id) def test_update_with_service_name(self): notifications.send_update_with_states(self.context, self.instance, vm_states.BUILDING, vm_states.BUILDING, task_states.SPAWNING, None, service="testservice") self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) # service name should default to 'compute' notif = fake_notifier.NOTIFICATIONS[0] self.assertEqual('testservice.testhost', notif.publisher_id) def test_update_with_host_name(self): notifications.send_update_with_states(self.context, self.instance, vm_states.BUILDING, vm_states.BUILDING, task_states.SPAWNING, None, host="someotherhost") self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) # service name should default to 'compute' notif = fake_notifier.NOTIFICATIONS[0] self.assertEqual('compute.someotherhost', notif.publisher_id) def test_payload_has_fixed_ip_labels(self): info = notifications.info_from_instance(self.context, self.instance, self.net_info, None) self.assertIn("fixed_ips", info) self.assertEqual(info["fixed_ips"][0]["label"], "test1") def test_send_access_ip_update(self): notifications.send_update(self.context, self.instance, self.instance) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) notif = fake_notifier.NOTIFICATIONS[0] payload = notif.payload access_ip_v4 = self.instance["access_ip_v4"] access_ip_v6 = self.instance["access_ip_v6"] self.assertEqual(payload["access_ip_v4"], access_ip_v4) self.assertEqual(payload["access_ip_v6"], access_ip_v6) def test_send_name_update(self): param = {"display_name": "new_display_name"} new_name_inst = self._wrapped_create(params=param) notifications.send_update(self.context, self.instance, new_name_inst) self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) notif = fake_notifier.NOTIFICATIONS[0] payload = notif.payload old_display_name = self.instance["display_name"] new_display_name = new_name_inst["display_name"] self.assertEqual(payload["old_display_name"], old_display_name) self.assertEqual(payload["display_name"], new_display_name) def test_send_no_state_change(self): called = [False] def sending_no_state_change(context, instance, **kwargs): called[0] = True self.stubs.Set(notifications, '_send_instance_update_notification', sending_no_state_change) notifications.send_update(self.context, self.instance, self.instance) self.assertTrue(called[0]) def test_fail_sending_update(self): def fail_sending(context, instance, **kwargs): raise Exception('failed to notify') self.stubs.Set(notifications, '_send_instance_update_notification', fail_sending) notifications.send_update(self.context, self.instance, self.instance) self.assertEqual(0, len(fake_notifier.NOTIFICATIONS)) nova-2014.1/nova/tests/test_test_utils.py0000664000175400017540000000471712323721477021640 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import errno import socket import tempfile import fixtures from nova import db from nova import test from nova.tests import utils as test_utils class TestUtilsTestCase(test.TestCase): def test_get_test_admin_context(self): # get_test_admin_context's return value behaves like admin context. ctxt = test_utils.get_test_admin_context() # TODO(soren): This should verify the full interface context # objects expose. self.assertTrue(ctxt.is_admin) def test_get_test_instance(self): # get_test_instance's return value looks like an instance_ref. instance_ref = test_utils.get_test_instance() ctxt = test_utils.get_test_admin_context() db.instance_get(ctxt, instance_ref['id']) def _test_get_test_network_info(self): """Does the return value match a real network_info structure.""" # The challenge here is to define what exactly such a structure # must look like. pass def test_ipv6_supported(self): self.assertIn(test_utils.is_ipv6_supported(), (False, True)) def fake_open(path): raise IOError def fake_socket_fail(x, y): e = socket.error() e.errno = errno.EAFNOSUPPORT raise e def fake_socket_ok(x, y): return tempfile.TemporaryFile() with fixtures.MonkeyPatch('socket.socket', fake_socket_fail): self.assertFalse(test_utils.is_ipv6_supported()) with fixtures.MonkeyPatch('socket.socket', fake_socket_ok): with fixtures.MonkeyPatch('sys.platform', 'windows'): self.assertTrue(test_utils.is_ipv6_supported()) with fixtures.MonkeyPatch('sys.platform', 'linux2'): with fixtures.MonkeyPatch('__builtin__.open', fake_open): self.assertFalse(test_utils.is_ipv6_supported()) nova-2014.1/nova/tests/test_utils.py0000664000175400017540000011377612323721477020607 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import __builtin__ import datetime import functools import hashlib import importlib import multiprocessing import os import os.path import StringIO import tempfile import mox import netaddr from oslo.config import cfg import nova from nova import exception from nova.openstack.common import processutils from nova.openstack.common import timeutils from nova import test from nova import utils CONF = cfg.CONF class GetMyIP4AddressTestCase(test.NoDBTestCase): def test_get_my_ipv4_address_with_no_ipv4(self): response = """172.16.0.0/16 via 172.16.251.13 dev tun1 172.16.251.1 via 172.16.251.13 dev tun1 172.16.251.13 dev tun1 proto kernel scope link src 172.16.251.14 172.24.0.0/16 via 172.16.251.13 dev tun1 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1""" def fake_execute(*args, **kwargs): return response, None self.stubs.Set(utils, 'execute', fake_execute) address = utils.get_my_ipv4_address() self.assertEqual(address, '127.0.0.1') def test_get_my_ipv4_address_bad_process(self): def fake_execute(*args, **kwargs): raise processutils.ProcessExecutionError() self.stubs.Set(utils, 'execute', fake_execute) address = utils.get_my_ipv4_address() self.assertEqual(address, '127.0.0.1') def test_get_my_ipv4_address_with_single_interface(self): response_route = """default via 192.168.1.1 dev wlan0 proto static 192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.137 metric 9 """ response_addr = """ 1: lo inet 127.0.0.1/8 scope host lo 3: wlan0 inet 192.168.1.137/24 brd 192.168.1.255 scope global wlan0 """ def fake_execute(*args, **kwargs): if 'route' in args: return response_route, None return response_addr, None self.stubs.Set(utils, 'execute', fake_execute) address = utils.get_my_ipv4_address() self.assertEqual(address, '192.168.1.137') def test_get_my_ipv4_address_with_multi_ipv4_on_single_interface(self): response_route = """ 172.18.56.0/24 dev customer proto kernel scope link src 172.18.56.22 169.254.0.0/16 dev customer scope link metric 1031 default via 172.18.56.1 dev customer """ response_addr = ("" "31: customer inet 172.18.56.22/24 brd 172.18.56.255 scope global" " customer\n" "31: customer inet 172.18.56.32/24 brd 172.18.56.255 scope global " "secondary customer") def fake_execute(*args, **kwargs): if 'route' in args: return response_route, None return response_addr, None self.stubs.Set(utils, 'execute', fake_execute) address = utils.get_my_ipv4_address() self.assertEqual(address, '172.18.56.22') def test_get_my_ipv4_address_with_multiple_interfaces(self): response_route = """ 169.1.9.0/24 dev eth1 proto kernel scope link src 169.1.9.10 172.17.248.0/21 dev eth0 proto kernel scope link src 172.17.255.9 169.254.0.0/16 dev eth0 scope link metric 1002 169.254.0.0/16 dev eth1 scope link metric 1003 default via 172.17.248.1 dev eth0 proto static """ response_addr = """ 1: lo inet 127.0.0.1/8 scope host lo 2: eth0 inet 172.17.255.9/21 brd 172.17.255.255 scope global eth0 3: eth1 inet 169.1.9.10/24 scope global eth1 """ def fake_execute(*args, **kwargs): if 'route' in args: return response_route, None return response_addr, None self.stubs.Set(utils, 'execute', fake_execute) address = utils.get_my_ipv4_address() self.assertEqual(address, '172.17.255.9') class GenericUtilsTestCase(test.NoDBTestCase): def test_parse_server_string(self): result = utils.parse_server_string('::1') self.assertEqual(('::1', ''), result) result = utils.parse_server_string('[::1]:8773') self.assertEqual(('::1', '8773'), result) result = utils.parse_server_string('2001:db8::192.168.1.1') self.assertEqual(('2001:db8::192.168.1.1', ''), result) result = utils.parse_server_string('[2001:db8::192.168.1.1]:8773') self.assertEqual(('2001:db8::192.168.1.1', '8773'), result) result = utils.parse_server_string('192.168.1.1') self.assertEqual(('192.168.1.1', ''), result) result = utils.parse_server_string('192.168.1.2:8773') self.assertEqual(('192.168.1.2', '8773'), result) result = utils.parse_server_string('192.168.1.3') self.assertEqual(('192.168.1.3', ''), result) result = utils.parse_server_string('www.example.com:8443') self.assertEqual(('www.example.com', '8443'), result) result = utils.parse_server_string('www.example.com') self.assertEqual(('www.example.com', ''), result) # error case result = utils.parse_server_string('www.exa:mple.com:8443') self.assertEqual(('', ''), result) def test_hostname_unicode_sanitization(self): hostname = u"\u7684.test.example.com" self.assertEqual("test.example.com", utils.sanitize_hostname(hostname)) def test_hostname_sanitize_periods(self): hostname = "....test.example.com..." self.assertEqual("test.example.com", utils.sanitize_hostname(hostname)) def test_hostname_sanitize_dashes(self): hostname = "----test.example.com---" self.assertEqual("test.example.com", utils.sanitize_hostname(hostname)) def test_hostname_sanitize_characters(self): hostname = "(#@&$!(@*--#&91)(__=+--test-host.example!!.com-0+" self.assertEqual("91----test-host.example.com-0", utils.sanitize_hostname(hostname)) def test_hostname_translate(self): hostname = "<}\x1fh\x10e\x08l\x02l\x05o\x12!{>" self.assertEqual("hello", utils.sanitize_hostname(hostname)) def test_read_cached_file(self): self.mox.StubOutWithMock(os.path, "getmtime") os.path.getmtime(mox.IgnoreArg()).AndReturn(1) self.mox.ReplayAll() cache_data = {"data": 1123, "mtime": 1} data = utils.read_cached_file("/this/is/a/fake", cache_data) self.assertEqual(cache_data["data"], data) def test_read_modified_cached_file(self): self.mox.StubOutWithMock(os.path, "getmtime") self.mox.StubOutWithMock(__builtin__, 'open') os.path.getmtime(mox.IgnoreArg()).AndReturn(2) fake_contents = "lorem ipsum" fake_file = self.mox.CreateMockAnything() fake_file.read().AndReturn(fake_contents) fake_context_manager = self.mox.CreateMockAnything() fake_context_manager.__enter__().AndReturn(fake_file) fake_context_manager.__exit__(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) __builtin__.open(mox.IgnoreArg()).AndReturn(fake_context_manager) self.mox.ReplayAll() cache_data = {"data": 1123, "mtime": 1} self.reload_called = False def test_reload(reloaded_data): self.assertEqual(reloaded_data, fake_contents) self.reload_called = True data = utils.read_cached_file("/this/is/a/fake", cache_data, reload_func=test_reload) self.assertEqual(data, fake_contents) self.assertTrue(self.reload_called) def test_generate_password(self): password = utils.generate_password() self.assertTrue([c for c in password if c in '0123456789']) self.assertTrue([c for c in password if c in 'abcdefghijklmnopqrstuvwxyz']) self.assertTrue([c for c in password if c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ']) def test_read_file_as_root(self): def fake_execute(*args, **kwargs): if args[1] == 'bad': raise processutils.ProcessExecutionError() return 'fakecontents', None self.stubs.Set(utils, 'execute', fake_execute) contents = utils.read_file_as_root('good') self.assertEqual(contents, 'fakecontents') self.assertRaises(exception.FileNotFound, utils.read_file_as_root, 'bad') def test_temporary_chown(self): def fake_execute(*args, **kwargs): if args[0] == 'chown': fake_execute.uid = args[1] self.stubs.Set(utils, 'execute', fake_execute) with tempfile.NamedTemporaryFile() as f: with utils.temporary_chown(f.name, owner_uid=2): self.assertEqual(fake_execute.uid, 2) self.assertEqual(fake_execute.uid, os.getuid()) def test_xhtml_escape(self): self.assertEqual('"foo"', utils.xhtml_escape('"foo"')) self.assertEqual(''foo'', utils.xhtml_escape("'foo'")) self.assertEqual('&', utils.xhtml_escape('&')) self.assertEqual('>', utils.xhtml_escape('>')) self.assertEqual('<', utils.xhtml_escape('<')) self.assertEqual('<foo>', utils.xhtml_escape('')) def test_is_valid_ipv4(self): self.assertTrue(utils.is_valid_ipv4('127.0.0.1')) self.assertFalse(utils.is_valid_ipv4('::1')) self.assertFalse(utils.is_valid_ipv4('bacon')) self.assertFalse(utils.is_valid_ipv4("")) self.assertFalse(utils.is_valid_ipv4(10)) def test_is_valid_ipv6(self): self.assertTrue(utils.is_valid_ipv6("::1")) self.assertTrue(utils.is_valid_ipv6( "abcd:ef01:2345:6789:abcd:ef01:192.168.254.254")) self.assertTrue(utils.is_valid_ipv6( "0000:0000:0000:0000:0000:0000:0000:0001")) self.assertFalse(utils.is_valid_ipv6("foo")) self.assertFalse(utils.is_valid_ipv6("127.0.0.1")) self.assertFalse(utils.is_valid_ipv6("")) self.assertFalse(utils.is_valid_ipv6(10)) def test_is_valid_ipv6_cidr(self): self.assertTrue(utils.is_valid_ipv6_cidr("2600::/64")) self.assertTrue(utils.is_valid_ipv6_cidr( "abcd:ef01:2345:6789:abcd:ef01:192.168.254.254/48")) self.assertTrue(utils.is_valid_ipv6_cidr( "0000:0000:0000:0000:0000:0000:0000:0001/32")) self.assertTrue(utils.is_valid_ipv6_cidr( "0000:0000:0000:0000:0000:0000:0000:0001")) self.assertFalse(utils.is_valid_ipv6_cidr("foo")) self.assertFalse(utils.is_valid_ipv6_cidr("127.0.0.1")) def test_get_shortened_ipv6(self): self.assertEqual("abcd:ef01:2345:6789:abcd:ef01:c0a8:fefe", utils.get_shortened_ipv6( "abcd:ef01:2345:6789:abcd:ef01:192.168.254.254")) self.assertEqual("::1", utils.get_shortened_ipv6( "0000:0000:0000:0000:0000:0000:0000:0001")) self.assertEqual("caca::caca:0:babe:201:102", utils.get_shortened_ipv6( "caca:0000:0000:caca:0000:babe:0201:0102")) self.assertRaises(netaddr.AddrFormatError, utils.get_shortened_ipv6, "127.0.0.1") self.assertRaises(netaddr.AddrFormatError, utils.get_shortened_ipv6, "failure") def test_get_shortened_ipv6_cidr(self): self.assertEqual("2600::/64", utils.get_shortened_ipv6_cidr( "2600:0000:0000:0000:0000:0000:0000:0000/64")) self.assertEqual("2600::/64", utils.get_shortened_ipv6_cidr( "2600::1/64")) self.assertRaises(netaddr.AddrFormatError, utils.get_shortened_ipv6_cidr, "127.0.0.1") self.assertRaises(netaddr.AddrFormatError, utils.get_shortened_ipv6_cidr, "failure") def test_get_hash_str(self): base_str = "foo" value = hashlib.md5(base_str).hexdigest() self.assertEqual( value, utils.get_hash_str(base_str)) def test_cpu_count(self): def fake_cpu_count(): return 8 self.stubs.Set(multiprocessing, 'cpu_count', fake_cpu_count) self.assertEqual(8, utils.cpu_count()) def test_cpu_count_not_implemented_returns_1(self): def fake_cpu_count(): raise NotImplementedError() self.stubs.Set(multiprocessing, 'cpu_count', fake_cpu_count) self.assertEqual(1, utils.cpu_count()) class MonkeyPatchTestCase(test.NoDBTestCase): """Unit test for utils.monkey_patch().""" def setUp(self): super(MonkeyPatchTestCase, self).setUp() self.example_package = 'nova.tests.monkey_patch_example.' self.flags( monkey_patch=True, monkey_patch_modules=[self.example_package + 'example_a' + ':' + self.example_package + 'example_decorator']) def test_monkey_patch(self): utils.monkey_patch() nova.tests.monkey_patch_example.CALLED_FUNCTION = [] from nova.tests.monkey_patch_example import example_a from nova.tests.monkey_patch_example import example_b self.assertEqual('Example function', example_a.example_function_a()) exampleA = example_a.ExampleClassA() exampleA.example_method() ret_a = exampleA.example_method_add(3, 5) self.assertEqual(ret_a, 8) self.assertEqual('Example function', example_b.example_function_b()) exampleB = example_b.ExampleClassB() exampleB.example_method() ret_b = exampleB.example_method_add(3, 5) self.assertEqual(ret_b, 8) package_a = self.example_package + 'example_a.' self.assertTrue(package_a + 'example_function_a' in nova.tests.monkey_patch_example.CALLED_FUNCTION) self.assertTrue(package_a + 'ExampleClassA.example_method' in nova.tests.monkey_patch_example.CALLED_FUNCTION) self.assertTrue(package_a + 'ExampleClassA.example_method_add' in nova.tests.monkey_patch_example.CALLED_FUNCTION) package_b = self.example_package + 'example_b.' self.assertFalse(package_b + 'example_function_b' in nova.tests.monkey_patch_example.CALLED_FUNCTION) self.assertFalse(package_b + 'ExampleClassB.example_method' in nova.tests.monkey_patch_example.CALLED_FUNCTION) self.assertFalse(package_b + 'ExampleClassB.example_method_add' in nova.tests.monkey_patch_example.CALLED_FUNCTION) class MonkeyPatchDefaultTestCase(test.NoDBTestCase): """Unit test for default monkey_patch_modules value.""" def setUp(self): super(MonkeyPatchDefaultTestCase, self).setUp() self.flags( monkey_patch=True) def test_monkey_patch_default_mod(self): # monkey_patch_modules is defined to be # : # Here we check that both parts of the default values are # valid for module in CONF.monkey_patch_modules: m = module.split(':', 1) # Check we can import the module to be patched importlib.import_module(m[0]) # check the decorator is valid decorator_name = m[1].rsplit('.', 1) decorator_module = importlib.import_module(decorator_name[0]) getattr(decorator_module, decorator_name[1]) class AuditPeriodTest(test.NoDBTestCase): def setUp(self): super(AuditPeriodTest, self).setUp() #a fairly random time to test with self.test_time = datetime.datetime(second=23, minute=12, hour=8, day=5, month=3, year=2012) timeutils.set_time_override(override_time=self.test_time) def tearDown(self): timeutils.clear_time_override() super(AuditPeriodTest, self).tearDown() def test_hour(self): begin, end = utils.last_completed_audit_period(unit='hour') self.assertEqual(begin, datetime.datetime( hour=7, day=5, month=3, year=2012)) self.assertEqual(end, datetime.datetime( hour=8, day=5, month=3, year=2012)) def test_hour_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='hour@10') self.assertEqual(begin, datetime.datetime( minute=10, hour=7, day=5, month=3, year=2012)) self.assertEqual(end, datetime.datetime( minute=10, hour=8, day=5, month=3, year=2012)) def test_hour_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='hour@30') self.assertEqual(begin, datetime.datetime( minute=30, hour=6, day=5, month=3, year=2012)) self.assertEqual(end, datetime.datetime( minute=30, hour=7, day=5, month=3, year=2012)) def test_day(self): begin, end = utils.last_completed_audit_period(unit='day') self.assertEqual(begin, datetime.datetime( day=4, month=3, year=2012)) self.assertEqual(end, datetime.datetime( day=5, month=3, year=2012)) def test_day_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='day@6') self.assertEqual(begin, datetime.datetime( hour=6, day=4, month=3, year=2012)) self.assertEqual(end, datetime.datetime( hour=6, day=5, month=3, year=2012)) def test_day_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='day@10') self.assertEqual(begin, datetime.datetime( hour=10, day=3, month=3, year=2012)) self.assertEqual(end, datetime.datetime( hour=10, day=4, month=3, year=2012)) def test_month(self): begin, end = utils.last_completed_audit_period(unit='month') self.assertEqual(begin, datetime.datetime( day=1, month=2, year=2012)) self.assertEqual(end, datetime.datetime( day=1, month=3, year=2012)) def test_month_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='month@2') self.assertEqual(begin, datetime.datetime( day=2, month=2, year=2012)) self.assertEqual(end, datetime.datetime( day=2, month=3, year=2012)) def test_month_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='month@15') self.assertEqual(begin, datetime.datetime( day=15, month=1, year=2012)) self.assertEqual(end, datetime.datetime( day=15, month=2, year=2012)) def test_year(self): begin, end = utils.last_completed_audit_period(unit='year') self.assertEqual(begin, datetime.datetime( day=1, month=1, year=2011)) self.assertEqual(end, datetime.datetime( day=1, month=1, year=2012)) def test_year_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='year@2') self.assertEqual(begin, datetime.datetime( day=1, month=2, year=2011)) self.assertEqual(end, datetime.datetime( day=1, month=2, year=2012)) def test_year_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='year@6') self.assertEqual(begin, datetime.datetime( day=1, month=6, year=2010)) self.assertEqual(end, datetime.datetime( day=1, month=6, year=2011)) class MkfsTestCase(test.NoDBTestCase): def test_mkfs(self): self.mox.StubOutWithMock(utils, 'execute') utils.execute('mkfs', '-t', 'ext4', '-F', '/my/block/dev', run_as_root=False) utils.execute('mkfs', '-t', 'msdos', '/my/msdos/block/dev', run_as_root=False) utils.execute('mkswap', '/my/swap/block/dev', run_as_root=False) self.mox.ReplayAll() utils.mkfs('ext4', '/my/block/dev') utils.mkfs('msdos', '/my/msdos/block/dev') utils.mkfs('swap', '/my/swap/block/dev') def test_mkfs_with_label(self): self.mox.StubOutWithMock(utils, 'execute') utils.execute('mkfs', '-t', 'ext4', '-F', '-L', 'ext4-vol', '/my/block/dev', run_as_root=False) utils.execute('mkfs', '-t', 'msdos', '-n', 'msdos-vol', '/my/msdos/block/dev', run_as_root=False) utils.execute('mkswap', '-L', 'swap-vol', '/my/swap/block/dev', run_as_root=False) self.mox.ReplayAll() utils.mkfs('ext4', '/my/block/dev', 'ext4-vol') utils.mkfs('msdos', '/my/msdos/block/dev', 'msdos-vol') utils.mkfs('swap', '/my/swap/block/dev', 'swap-vol') class LastBytesTestCase(test.NoDBTestCase): """Test the last_bytes() utility method.""" def setUp(self): super(LastBytesTestCase, self).setUp() self.f = StringIO.StringIO('1234567890') def test_truncated(self): self.f.seek(0, os.SEEK_SET) out, remaining = utils.last_bytes(self.f, 5) self.assertEqual(out, '67890') self.assertTrue(remaining > 0) def test_read_all(self): self.f.seek(0, os.SEEK_SET) out, remaining = utils.last_bytes(self.f, 1000) self.assertEqual(out, '1234567890') self.assertFalse(remaining > 0) def test_seek_too_far_real_file(self): # StringIO doesn't raise IOError if you see past the start of the file. flo = tempfile.TemporaryFile() content = '1234567890' flo.write(content) self.assertEqual((content, 0), utils.last_bytes(flo, 1000)) class IntLikeTestCase(test.NoDBTestCase): def test_is_int_like(self): self.assertTrue(utils.is_int_like(1)) self.assertTrue(utils.is_int_like("1")) self.assertTrue(utils.is_int_like("514")) self.assertTrue(utils.is_int_like("0")) self.assertFalse(utils.is_int_like(1.1)) self.assertFalse(utils.is_int_like("1.1")) self.assertFalse(utils.is_int_like("1.1.1")) self.assertFalse(utils.is_int_like(None)) self.assertFalse(utils.is_int_like("0.")) self.assertFalse(utils.is_int_like("aaaaaa")) self.assertFalse(utils.is_int_like("....")) self.assertFalse(utils.is_int_like("1g")) self.assertFalse( utils.is_int_like("0cc3346e-9fef-4445-abe6-5d2b2690ec64")) self.assertFalse(utils.is_int_like("a1")) class MetadataToDictTestCase(test.NoDBTestCase): def test_metadata_to_dict(self): self.assertEqual(utils.metadata_to_dict( [{'key': 'foo1', 'value': 'bar'}, {'key': 'foo2', 'value': 'baz'}]), {'foo1': 'bar', 'foo2': 'baz'}) def test_metadata_to_dict_empty(self): self.assertEqual(utils.metadata_to_dict([]), {}) def test_dict_to_metadata(self): expected = [{'key': 'foo1', 'value': 'bar1'}, {'key': 'foo2', 'value': 'bar2'}] self.assertEqual(utils.dict_to_metadata(dict(foo1='bar1', foo2='bar2')), expected) def test_dict_to_metadata_empty(self): self.assertEqual(utils.dict_to_metadata({}), []) class WrappedCodeTestCase(test.NoDBTestCase): """Test the get_wrapped_function utility method.""" def _wrapper(self, function): @functools.wraps(function) def decorated_function(self, *args, **kwargs): function(self, *args, **kwargs) return decorated_function def test_single_wrapped(self): @self._wrapper def wrapped(self, instance, red=None, blue=None): pass func = utils.get_wrapped_function(wrapped) func_code = func.func_code self.assertEqual(4, len(func_code.co_varnames)) self.assertIn('self', func_code.co_varnames) self.assertIn('instance', func_code.co_varnames) self.assertIn('red', func_code.co_varnames) self.assertIn('blue', func_code.co_varnames) def test_double_wrapped(self): @self._wrapper @self._wrapper def wrapped(self, instance, red=None, blue=None): pass func = utils.get_wrapped_function(wrapped) func_code = func.func_code self.assertEqual(4, len(func_code.co_varnames)) self.assertIn('self', func_code.co_varnames) self.assertIn('instance', func_code.co_varnames) self.assertIn('red', func_code.co_varnames) self.assertIn('blue', func_code.co_varnames) def test_triple_wrapped(self): @self._wrapper @self._wrapper @self._wrapper def wrapped(self, instance, red=None, blue=None): pass func = utils.get_wrapped_function(wrapped) func_code = func.func_code self.assertEqual(4, len(func_code.co_varnames)) self.assertIn('self', func_code.co_varnames) self.assertIn('instance', func_code.co_varnames) self.assertIn('red', func_code.co_varnames) self.assertIn('blue', func_code.co_varnames) class ExpectedArgsTestCase(test.NoDBTestCase): def test_passes(self): @utils.expects_func_args('foo', 'baz') def dec(f): return f @dec def func(foo, bar, baz="lol"): pass def test_raises(self): @utils.expects_func_args('foo', 'baz') def dec(f): return f def func(bar, baz): pass self.assertRaises(TypeError, dec, func) def test_var_no_of_args(self): @utils.expects_func_args('foo') def dec(f): return f @dec def func(bar, *args, **kwargs): pass def test_more_layers(self): @utils.expects_func_args('foo', 'baz') def dec(f): return f def dec_2(f): def inner_f(*a, **k): return f() return inner_f @dec_2 def func(bar, baz): pass self.assertRaises(TypeError, dec, func) class StringLengthTestCase(test.NoDBTestCase): def test_check_string_length(self): self.assertIsNone(utils.check_string_length( 'test', 'name', max_length=255)) self.assertRaises(exception.InvalidInput, utils.check_string_length, 11, 'name', max_length=255) self.assertRaises(exception.InvalidInput, utils.check_string_length, '', 'name', min_length=1) self.assertRaises(exception.InvalidInput, utils.check_string_length, 'a' * 256, 'name', max_length=255) class ValidateIntegerTestCase(test.NoDBTestCase): def test_valid_inputs(self): self.assertEqual( utils.validate_integer(42, "answer"), 42) self.assertEqual( utils.validate_integer("42", "answer"), 42) self.assertEqual( utils.validate_integer( "7", "lucky", min_value=7, max_value=8), 7) self.assertEqual( utils.validate_integer( 7, "lucky", min_value=6, max_value=7), 7) self.assertEqual( utils.validate_integer( 300, "Spartaaa!!!", min_value=300), 300) self.assertEqual( utils.validate_integer( "300", "Spartaaa!!!", max_value=300), 300) def test_invalid_inputs(self): self.assertRaises(exception.InvalidInput, utils.validate_integer, "im-not-an-int", "not-an-int") self.assertRaises(exception.InvalidInput, utils.validate_integer, 3.14, "Pie") self.assertRaises(exception.InvalidInput, utils.validate_integer, "299", "Sparta no-show", min_value=300, max_value=300) self.assertRaises(exception.InvalidInput, utils.validate_integer, 55, "doing 55 in a 54", max_value=54) self.assertRaises(exception.InvalidInput, utils.validate_integer, unichr(129), "UnicodeError", max_value=1000) class ValidateNeutronConfiguration(test.NoDBTestCase): def setUp(self): super(ValidateNeutronConfiguration, self).setUp() utils.reset_is_neutron() def test_nova_network(self): self.flags(network_api_class='nova.network.api.API') self.assertFalse(utils.is_neutron()) def test_neutron(self): self.flags(network_api_class='nova.network.neutronv2.api.API') self.assertTrue(utils.is_neutron()) def test_quantum(self): self.flags(network_api_class='nova.network.quantumv2.api.API') self.assertTrue(utils.is_neutron()) class AutoDiskConfigUtilTestCase(test.NoDBTestCase): def test_is_auto_disk_config_disabled(self): self.assertTrue(utils.is_auto_disk_config_disabled("Disabled ")) def test_is_auto_disk_config_disabled_none(self): self.assertFalse(utils.is_auto_disk_config_disabled(None)) def test_is_auto_disk_config_disabled_false(self): self.assertFalse(utils.is_auto_disk_config_disabled("false")) class GetSystemMetadataFromImageTestCase(test.NoDBTestCase): def get_image(self): image_meta = { "id": "fake-image", "name": "fake-name", "min_ram": 1, "min_disk": 1, "disk_format": "raw", "container_format": "bare", } return image_meta def get_flavor(self): flavor = { "id": "fake.flavor", "root_gb": 10, } return flavor def test_base_image_properties(self): image = self.get_image() # Verify that we inherit all the needed keys sys_meta = utils.get_system_metadata_from_image(image) for key in utils.SM_INHERITABLE_KEYS: sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, key) self.assertEqual(image[key], sys_meta.get(sys_key)) # Verify that everything else is ignored self.assertEqual(len(sys_meta), len(utils.SM_INHERITABLE_KEYS)) def test_inherit_image_properties(self): image = self.get_image() image["properties"] = {"foo1": "bar", "foo2": "baz"} sys_meta = utils.get_system_metadata_from_image(image) # Verify that we inherit all the image properties for key, expected in image["properties"].iteritems(): sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, key) self.assertEqual(sys_meta[sys_key], expected) def test_vhd_min_disk_image(self): image = self.get_image() flavor = self.get_flavor() image["disk_format"] = "vhd" sys_meta = utils.get_system_metadata_from_image(image, flavor) # Verify that the min_disk property is taken from # flavor's root_gb when using vhd disk format sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, "min_disk") self.assertEqual(sys_meta[sys_key], flavor["root_gb"]) def test_dont_inherit_empty_values(self): image = self.get_image() for key in utils.SM_INHERITABLE_KEYS: image[key] = None sys_meta = utils.get_system_metadata_from_image(image) # Verify that the empty properties have not been inherited for key in utils.SM_INHERITABLE_KEYS: sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, key) self.assertNotIn(sys_key, sys_meta) class GetImageFromSystemMetadataTestCase(test.NoDBTestCase): def get_system_metadata(self): sys_meta = { "image_min_ram": 1, "image_min_disk": 1, "image_disk_format": "raw", "image_container_format": "bare", } return sys_meta def test_image_from_system_metadata(self): sys_meta = self.get_system_metadata() sys_meta["%soo1" % utils.SM_IMAGE_PROP_PREFIX] = "bar" sys_meta["%soo2" % utils.SM_IMAGE_PROP_PREFIX] = "baz" image = utils.get_image_from_system_metadata(sys_meta) # Verify that we inherit all the needed keys for key in utils.SM_INHERITABLE_KEYS: sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, key) self.assertEqual(image[key], sys_meta.get(sys_key)) # Verify that we inherit the rest of metadata as properties self.assertIn("properties", image) for key, value in image["properties"].iteritems(): sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, key) self.assertEqual(image["properties"][key], sys_meta[sys_key]) def test_dont_inherit_empty_values(self): sys_meta = self.get_system_metadata() for key in utils.SM_INHERITABLE_KEYS: sys_key = "%s%s" % (utils.SM_IMAGE_PROP_PREFIX, key) sys_meta[sys_key] = None image = utils.get_image_from_system_metadata(sys_meta) # Verify that the empty properties have not been inherited for key in utils.SM_INHERITABLE_KEYS: self.assertNotIn(key, image) def test_non_inheritable_image_properties(self): sys_meta = self.get_system_metadata() sys_meta["%soo1" % utils.SM_IMAGE_PROP_PREFIX] = "bar" CONF.non_inheritable_image_properties = ["foo1"] image = utils.get_image_from_system_metadata(sys_meta) # Verify that the foo1 key has not been inherited self.assertNotIn("foo1", image) class VersionTestCase(test.NoDBTestCase): def test_convert_version_to_int(self): self.assertEqual(utils.convert_version_to_int('6.2.0'), 6002000) self.assertEqual(utils.convert_version_to_int((6, 4, 3)), 6004003) self.assertEqual(utils.convert_version_to_int((5, )), 5) self.assertRaises(exception.NovaException, utils.convert_version_to_int, '5a.6b') def test_convert_version_to_string(self): self.assertEqual(utils.convert_version_to_str(6007000), '6.7.0') self.assertEqual(utils.convert_version_to_str(4), '4') def test_convert_version_to_tuple(self): self.assertEqual(utils.convert_version_to_tuple('6.7.0'), (6, 7, 0)) nova-2014.1/nova/tests/fake_notifier.py0000664000175400017540000000460112323721477021177 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import collections import functools import anyjson from oslo import messaging from nova import rpc NOTIFICATIONS = [] def reset(): del NOTIFICATIONS[:] FakeMessage = collections.namedtuple('Message', ['publisher_id', 'priority', 'event_type', 'payload']) class FakeNotifier(object): def __init__(self, transport, publisher_id, serializer=None): self.transport = transport self.publisher_id = publisher_id self._serializer = serializer or messaging.serializer.NoOpSerializer() for priority in ['debug', 'info', 'warn', 'error', 'critical']: setattr(self, priority, functools.partial(self._notify, priority.upper())) def prepare(self, publisher_id=None): if publisher_id is None: publisher_id = self.publisher_id return self.__class__(self.transport, publisher_id, serializer=self._serializer) def _notify(self, priority, ctxt, event_type, payload): payload = self._serializer.serialize_entity(ctxt, payload) # NOTE(sileht): simulate the kombu serializer # this permit to raise an exception if something have not # been serialized correctly anyjson.serialize(payload) msg = FakeMessage(self.publisher_id, priority, event_type, payload) NOTIFICATIONS.append(msg) def stub_notifier(stubs): stubs.Set(messaging, 'Notifier', FakeNotifier) if rpc.NOTIFIER: stubs.Set(rpc, 'NOTIFIER', FakeNotifier(rpc.NOTIFIER.transport, rpc.NOTIFIER.publisher_id, serializer=getattr(rpc.NOTIFIER, '_serializer', None))) nova-2014.1/nova/tests/image/0000775000175400017540000000000012323722546017077 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/image/test_s3.py0000664000175400017540000002570512323721477021050 0ustar jenkinsjenkins00000000000000# Copyright 2011 Isaku Yamahata # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import binascii import eventlet import mox import os import tempfile import fixtures from nova.api.ec2 import ec2utils from nova import context from nova import db from nova import exception from nova.image import s3 from nova import test from nova.tests.image import fake ami_manifest_xml = """ 2011-06-17 test-s3 0 0 x86_64 ami sda1 root /dev/sda1 ephemeral0 sda2 swap sda3 aki-00000001 ari-00000001 """ file_manifest_xml = """ foo foo foo foo """ class TestS3ImageService(test.TestCase): def setUp(self): super(TestS3ImageService, self).setUp() self.context = context.RequestContext(None, None) self.useFixture(fixtures.FakeLogger('boto')) # set up 3 fixtures to test shows, should have id '1', '2', and '3' db.s3_image_create(self.context, '155d900f-4e14-4e4c-a73d-069cbf4541e6') db.s3_image_create(self.context, 'a2459075-d96c-40d5-893e-577ff92e721c') db.s3_image_create(self.context, '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6') fake.stub_out_image_service(self.stubs) self.image_service = s3.S3ImageService() ec2utils.reset_cache() def tearDown(self): super(TestS3ImageService, self).tearDown() fake.FakeImageService_reset() def _assertEqualList(self, list0, list1, keys): self.assertEqual(len(list0), len(list1)) key = keys[0] for x in list0: self.assertEqual(len(x), len(keys)) self.assertIn(key, x) for y in list1: self.assertIn(key, y) if x[key] == y[key]: for k in keys: self.assertEqual(x[k], y[k]) def test_show_cannot_use_uuid(self): self.assertRaises(exception.ImageNotFound, self.image_service.show, self.context, '155d900f-4e14-4e4c-a73d-069cbf4541e6') def test_show_translates_correctly(self): self.image_service.show(self.context, '1') def test_show_translates_image_state_correctly(self): def my_fake_show(self, context, image_id): fake_state_map = { '155d900f-4e14-4e4c-a73d-069cbf4541e6': 'downloading', 'a2459075-d96c-40d5-893e-577ff92e721c': 'failed_decrypt', '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6': 'available'} return {'id': image_id, 'name': 'fakeimage123456', 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'raw', 'disk_format': 'raw', 'size': '25165824', 'properties': {'image_state': fake_state_map[image_id]}} # Override part of the fake image service as well just for # this test so we can set the image_state to various values # and test that S3ImageService does the correct mapping for # us. We can't put fake bad or pending states in the real fake # image service as it causes other tests to fail self.stubs.Set(fake._FakeImageService, 'show', my_fake_show) ret_image = self.image_service.show(self.context, '1') self.assertEqual(ret_image['properties']['image_state'], 'pending') ret_image = self.image_service.show(self.context, '2') self.assertEqual(ret_image['properties']['image_state'], 'failed') ret_image = self.image_service.show(self.context, '3') self.assertEqual(ret_image['properties']['image_state'], 'available') def test_detail(self): self.image_service.detail(self.context) def test_s3_create(self): metadata = {'properties': { 'root_device_name': '/dev/sda1', 'block_device_mapping': [ {'device_name': '/dev/sda1', 'snapshot_id': 'snap-12345678', 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}]}} _manifest, image, image_uuid = self.image_service._s3_parse_manifest( self.context, metadata, ami_manifest_xml) ret_image = self.image_service.show(self.context, image['id']) self.assertIn('properties', ret_image) properties = ret_image['properties'] self.assertIn('mappings', properties) mappings = properties['mappings'] expected_mappings = [ {"device": "sda1", "virtual": "ami"}, {"device": "/dev/sda1", "virtual": "root"}, {"device": "sda2", "virtual": "ephemeral0"}, {"device": "sda3", "virtual": "swap"}] self._assertEqualList(mappings, expected_mappings, ['device', 'virtual']) self.assertIn('block_device_mapping', properties) block_device_mapping = properties['block_device_mapping'] expected_bdm = [ {'device_name': '/dev/sda1', 'snapshot_id': 'snap-12345678', 'delete_on_termination': True}, {'device_name': '/dev/sda2', 'virtual_name': 'ephemeral0'}, {'device_name': '/dev/sdb0', 'no_device': True}] self.assertEqual(block_device_mapping, expected_bdm) def _initialize_mocks(self): handle, tempf = tempfile.mkstemp(dir='/tmp') ignore = mox.IgnoreArg() mockobj = self.mox.CreateMockAnything() self.stubs.Set(self.image_service, '_conn', mockobj) mockobj(ignore).AndReturn(mockobj) self.stubs.Set(mockobj, 'get_bucket', mockobj) mockobj(ignore).AndReturn(mockobj) self.stubs.Set(mockobj, 'get_key', mockobj) mockobj(ignore).AndReturn(mockobj) self.stubs.Set(mockobj, 'get_contents_as_string', mockobj) mockobj().AndReturn(file_manifest_xml) self.stubs.Set(self.image_service, '_download_file', mockobj) mockobj(ignore, ignore, ignore).AndReturn(tempf) self.stubs.Set(binascii, 'a2b_hex', mockobj) mockobj(ignore).AndReturn('foo') mockobj(ignore).AndReturn('foo') self.stubs.Set(self.image_service, '_decrypt_image', mockobj) mockobj(ignore, ignore, ignore, ignore, ignore).AndReturn(mockobj) self.stubs.Set(self.image_service, '_untarzip_image', mockobj) mockobj(ignore, ignore).AndReturn(tempf) self.mox.ReplayAll() def test_s3_create_image_locations(self): image_location_1 = 'testbucket_1/test.img.manifest.xml' # Use another location that starts with a '/' image_location_2 = '/testbucket_2/test.img.manifest.xml' metadata = [{'properties': {'image_location': image_location_1}}, {'properties': {'image_location': image_location_2}}] for mdata in metadata: self._initialize_mocks() image = self.image_service._s3_create(self.context, mdata) eventlet.sleep() translated = self.image_service._translate_id_to_uuid(self.context, image) uuid = translated['id'] image_service = fake.FakeImageService() updated_image = image_service.update(self.context, uuid, {'properties': {'image_state': 'available'}}, purge_props=False) self.assertEqual(updated_image['properties']['image_state'], 'available') def test_s3_create_is_public(self): self._initialize_mocks() metadata = {'properties': { 'image_location': 'mybucket/my.img.manifest.xml'}, 'name': 'mybucket/my.img'} img = self.image_service._s3_create(self.context, metadata) eventlet.sleep() translated = self.image_service._translate_id_to_uuid(self.context, img) uuid = translated['id'] image_service = fake.FakeImageService() updated_image = image_service.update(self.context, uuid, {'is_public': True}, purge_props=False) self.assertTrue(updated_image['is_public']) self.assertEqual(updated_image['status'], 'active') self.assertEqual(updated_image['properties']['image_state'], 'available') def test_s3_malicious_tarballs(self): self.assertRaises(exception.NovaException, self.image_service._test_for_malicious_tarball, "/unused", os.path.join(os.path.dirname(__file__), 'abs.tar.gz')) self.assertRaises(exception.NovaException, self.image_service._test_for_malicious_tarball, "/unused", os.path.join(os.path.dirname(__file__), 'rel.tar.gz')) nova-2014.1/nova/tests/image/abs.tar.gz0000664000175400017540000000023112323721477020771 0ustar jenkinsjenkins00000000000000‹‹ªØNíÑA Â0…á¬=En™LÎSîJ¤FđøE¥¸hA"₫ßf30^¨Ó%œK ®yÊ9µ©9Éz.œª™éÔ'*míSÇL/·kgï]­÷Í»½ư Kÿ§qîơ£l7úoưk<ªó̉+ĐÚŸ÷?•røvŸyQä‡ (nova-2014.1/nova/tests/image/test_fake.py0000664000175400017540000001105312323721477021420 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import StringIO from nova import context from nova import exception from nova import test import nova.tests.image.fake class FakeImageServiceTestCase(test.NoDBTestCase): def setUp(self): super(FakeImageServiceTestCase, self).setUp() self.image_service = nova.tests.image.fake.FakeImageService() self.context = context.get_admin_context() def tearDown(self): super(FakeImageServiceTestCase, self).tearDown() nova.tests.image.fake.FakeImageService_reset() def test_detail(self): res = self.image_service.detail(self.context) for image in res: keys = set(image.keys()) self.assertEqual(keys, set(['id', 'name', 'created_at', 'updated_at', 'deleted_at', 'deleted', 'status', 'is_public', 'properties', 'disk_format', 'container_format', 'size'])) self.assertIsInstance(image['created_at'], datetime.datetime) self.assertIsInstance(image['updated_at'], datetime.datetime) if not (isinstance(image['deleted_at'], datetime.datetime) or image['deleted_at'] is None): self.fail('image\'s "deleted_at" attribute was neither a ' 'datetime object nor None') def check_is_bool(image, key): val = image.get('deleted') if not isinstance(val, bool): self.fail('image\'s "%s" attribute wasn\'t ' 'a bool: %r' % (key, val)) check_is_bool(image, 'deleted') check_is_bool(image, 'is_public') def test_show_raises_imagenotfound_for_invalid_id(self): self.assertRaises(exception.ImageNotFound, self.image_service.show, self.context, 'this image does not exist') def test_create_adds_id(self): index = self.image_service.detail(self.context) image_count = len(index) self.image_service.create(self.context, {}) index = self.image_service.detail(self.context) self.assertEqual(len(index), image_count + 1) self.assertTrue(index[0]['id']) def test_create_keeps_id(self): self.image_service.create(self.context, {'id': '34'}) self.image_service.show(self.context, '34') def test_create_rejects_duplicate_ids(self): self.image_service.create(self.context, {'id': '34'}) self.assertRaises(exception.CouldNotUploadImage, self.image_service.create, self.context, {'id': '34'}) # Make sure there's still one left self.image_service.show(self.context, '34') def test_update(self): self.image_service.create(self.context, {'id': '34', 'foo': 'bar'}) self.image_service.update(self.context, '34', {'id': '34', 'foo': 'baz'}) img = self.image_service.show(self.context, '34') self.assertEqual(img['foo'], 'baz') def test_delete(self): self.image_service.create(self.context, {'id': '34', 'foo': 'bar'}) self.image_service.delete(self.context, '34') self.assertRaises(exception.NotFound, self.image_service.show, self.context, '34') def test_create_then_get(self): blob = 'some data' s1 = StringIO.StringIO(blob) self.image_service.create(self.context, {'id': '32', 'foo': 'bar'}, data=s1) s2 = StringIO.StringIO() self.image_service.download(self.context, '32', data=s2) self.assertEqual(s2.getvalue(), blob, 'Did not get blob back intact') nova-2014.1/nova/tests/image/fake.py0000664000175400017540000002206312323721477020364 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Implementation of a fake image service.""" import copy import datetime import uuid from oslo.config import cfg from nova import exception import nova.image.glance from nova.openstack.common import log as logging CONF = cfg.CONF CONF.import_opt('null_kernel', 'nova.compute.api') LOG = logging.getLogger(__name__) class _FakeImageService(object): """Mock (fake) image service for unit testing.""" def __init__(self): self.images = {} # NOTE(justinsb): The OpenStack API can't upload an image? # So, make sure we've got one.. timestamp = datetime.datetime(2011, 1, 1, 1, 2, 3) image1 = {'id': '155d900f-4e14-4e4c-a73d-069cbf4541e6', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'raw', 'disk_format': 'raw', 'size': '25165824', 'properties': {'kernel_id': CONF.null_kernel, 'ramdisk_id': CONF.null_kernel, 'architecture': 'x86_64'}} image2 = {'id': 'a2459075-d96c-40d5-893e-577ff92e721c', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': 'ami', 'disk_format': 'ami', 'size': '58145823', 'properties': {'kernel_id': CONF.null_kernel, 'ramdisk_id': CONF.null_kernel}} image3 = {'id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': None, 'disk_format': None, 'size': '83594576', 'properties': {'kernel_id': CONF.null_kernel, 'ramdisk_id': CONF.null_kernel}} image4 = {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': 'ami', 'disk_format': 'ami', 'size': '84035174', 'properties': {'kernel_id': CONF.null_kernel, 'ramdisk_id': CONF.null_kernel}} image5 = {'id': 'c905cedb-7281-47e4-8a62-f26bc5fc4c77', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': 'ami', 'disk_format': 'ami', 'size': '26360814', 'properties': {'kernel_id': '155d900f-4e14-4e4c-a73d-069cbf4541e6', 'ramdisk_id': None}} image6 = {'id': 'a440c04b-79fa-479c-bed1-0b816eaec379', 'name': 'fakeimage6', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'ova', 'disk_format': 'vhd', 'size': '49163826', 'properties': {'kernel_id': CONF.null_kernel, 'ramdisk_id': CONF.null_kernel, 'architecture': 'x86_64', 'auto_disk_config': 'False'}} image7 = {'id': '70a599e0-31e7-49b7-b260-868f441e862b', 'name': 'fakeimage7', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'ova', 'disk_format': 'vhd', 'size': '74185822', 'properties': {'kernel_id': CONF.null_kernel, 'ramdisk_id': CONF.null_kernel, 'architecture': 'x86_64', 'auto_disk_config': 'True'}} self.create(None, image1) self.create(None, image2) self.create(None, image3) self.create(None, image4) self.create(None, image5) self.create(None, image6) self.create(None, image7) self._imagedata = {} super(_FakeImageService, self).__init__() #TODO(bcwaldon): implement optional kwargs such as limit, sort_dir def detail(self, context, **kwargs): """Return list of detailed image information.""" return copy.deepcopy(self.images.values()) def download(self, context, image_id, dst_path=None, data=None): self.show(context, image_id) if data: data.write(self._imagedata.get(image_id, '')) elif dst_path: with open(dst_path, 'wb') as data: data.write(self._imagedata.get(image_id, '')) def show(self, context, image_id): """Get data about specified image. Returns a dict containing image data for the given opaque image id. """ image = self.images.get(str(image_id)) if image: return copy.deepcopy(image) LOG.warn('Unable to find image id %s. Have images: %s', image_id, self.images) raise exception.ImageNotFound(image_id=image_id) def create(self, context, metadata, data=None): """Store the image data and return the new image id. :raises: Duplicate if the image already exist. """ image_id = str(metadata.get('id', uuid.uuid4())) metadata['id'] = image_id if image_id in self.images: raise exception.CouldNotUploadImage(image_id=image_id) self.images[image_id] = copy.deepcopy(metadata) if data: self._imagedata[image_id] = data.read() return self.images[image_id] def update(self, context, image_id, metadata, data=None, purge_props=False): """Replace the contents of the given image with the new data. :raises: ImageNotFound if the image does not exist. """ if not self.images.get(image_id): raise exception.ImageNotFound(image_id=image_id) if purge_props: self.images[image_id] = copy.deepcopy(metadata) else: image = self.images[image_id] try: image['properties'].update(metadata.pop('properties')) except KeyError: pass image.update(metadata) return self.images[image_id] def delete(self, context, image_id): """Delete the given image. :raises: ImageNotFound if the image does not exist. """ removed = self.images.pop(image_id, None) if not removed: raise exception.ImageNotFound(image_id=image_id) def get_location(self, context, image_id): if image_id in self.images: return 'fake_location' return None _fakeImageService = _FakeImageService() def FakeImageService(): return _fakeImageService def FakeImageService_reset(): global _fakeImageService _fakeImageService = _FakeImageService() def get_valid_image_id(): return _fakeImageService.images.keys()[0] def stub_out_image_service(stubs): image_service = FakeImageService() stubs.Set(nova.image.glance, 'get_remote_image_service', lambda x, y: (image_service, y)) stubs.Set(nova.image.glance, 'get_default_image_service', lambda: image_service) return image_service nova-2014.1/nova/tests/image/rel.tar.gz0000664000175400017540000000024512323721477021013 0ustar jenkinsjenkins00000000000000‹,«ØNí̉A Â0…á¬=ENĐdj2=O]tW"1¢̃̃v!H±$ âÿ˜Ạ̊àeH¹ÜÊ%¹¦™OnHÉ™ü¤ëâ<¥‹₫y>U•6¶ÆË¾•`l¬bÅùTúl­)åºyïƯ₫G ¯û?ô¹̃sÁªa£ÿ°́_§ïb}½ë₫¼ÿ1¥Ư·3ø̀ơB;<(nova-2014.1/nova/tests/image/test_glance.py0000664000175400017540000012330312323721510021731 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import filecmp import os import random import tempfile import time import sys import testtools import mock import mox import glanceclient.exc from oslo.config import cfg from nova import context from nova import exception from nova.image import glance from nova import test from nova.tests.api.openstack import fakes from nova.tests.glance import stubs as glance_stubs from nova.tests import matchers from nova import utils import nova.virt.libvirt.utils as lv_utils CONF = cfg.CONF class NullWriter(object): """Used to test ImageService.get which takes a writer object.""" def write(self, *arg, **kwargs): pass class TestGlanceSerializer(test.NoDBTestCase): def test_serialize(self): metadata = {'name': 'image1', 'is_public': True, 'foo': 'bar', 'properties': { 'prop1': 'propvalue1', 'mappings': [ {'virtual': 'aaa', 'device': 'bbb'}, {'virtual': 'xxx', 'device': 'yyy'}], 'block_device_mapping': [ {'virtual_device': 'fake', 'device_name': '/dev/fake'}, {'virtual_device': 'ephemeral0', 'device_name': '/dev/fake0'}]}} converted_expected = { 'name': 'image1', 'is_public': True, 'foo': 'bar', 'properties': { 'prop1': 'propvalue1', 'mappings': '[{"device": "bbb", "virtual": "aaa"}, ' '{"device": "yyy", "virtual": "xxx"}]', 'block_device_mapping': '[{"virtual_device": "fake", "device_name": "/dev/fake"}, ' '{"virtual_device": "ephemeral0", ' '"device_name": "/dev/fake0"}]'}} converted = glance._convert_to_string(metadata) self.assertEqual(converted, converted_expected) self.assertEqual(glance._convert_from_string(converted), metadata) class TestGlanceImageService(test.NoDBTestCase): """Tests the Glance image service. At a high level, the translations involved are: 1. Glance -> ImageService - This is needed so we can support multple ImageServices (Glance, Local, etc) 2. ImageService -> API - This is needed so we can support multple APIs (OpenStack, EC2) """ NOW_GLANCE_OLD_FORMAT = "2010-10-11T10:30:22" NOW_GLANCE_FORMAT = "2010-10-11T10:30:22.000000" class tzinfo(datetime.tzinfo): @staticmethod def utcoffset(*args, **kwargs): return datetime.timedelta() NOW_DATETIME = datetime.datetime(2010, 10, 11, 10, 30, 22, tzinfo=tzinfo()) def setUp(self): super(TestGlanceImageService, self).setUp() fakes.stub_out_compute_api_snapshot(self.stubs) self.client = glance_stubs.StubGlanceClient() self.service = self._create_image_service(self.client) self.context = context.RequestContext('fake', 'fake', auth_token=True) self.mox = mox.Mox() self.files_to_clean = [] def tearDown(self): super(TestGlanceImageService, self).tearDown() self.mox.UnsetStubs() for f in self.files_to_clean: try: os.unlink(f) except os.error: pass def _get_tempfile(self): (outfd, config_filename) = tempfile.mkstemp(prefix='nova_glance_tests') self.files_to_clean.append(config_filename) return (outfd, config_filename) def _create_image_service(self, client): def _fake_create_glance_client(context, host, port, use_ssl, version): return client self.stubs.Set(glance, '_create_glance_client', _fake_create_glance_client) client_wrapper = glance.GlanceClientWrapper( 'fake', 'fake_host', 9292) return glance.GlanceImageService(client=client_wrapper) @staticmethod def _make_fixture(**kwargs): fixture = {'name': None, 'properties': {}, 'status': None, 'is_public': None} fixture.update(kwargs) return fixture def _make_datetime_fixture(self): return self._make_fixture(created_at=self.NOW_GLANCE_FORMAT, updated_at=self.NOW_GLANCE_FORMAT, deleted_at=self.NOW_GLANCE_FORMAT) def test_create_with_instance_id(self): # Ensure instance_id is persisted as an image-property. fixture = {'name': 'test image', 'is_public': False, 'properties': {'instance_id': '42', 'user_id': 'fake'}} image_id = self.service.create(self.context, fixture)['id'] image_meta = self.service.show(self.context, image_id) expected = { 'id': image_id, 'name': 'test image', 'is_public': False, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {'instance_id': '42', 'user_id': 'fake'}, 'owner': None, } self.assertThat(image_meta, matchers.DictMatches(expected)) image_metas = self.service.detail(self.context) self.assertThat(image_metas[0], matchers.DictMatches(expected)) def test_create_without_instance_id(self): """Ensure we can create an image without having to specify an instance_id. Public images are an example of an image not tied to an instance. """ fixture = {'name': 'test image', 'is_public': False} image_id = self.service.create(self.context, fixture)['id'] expected = { 'id': image_id, 'name': 'test image', 'is_public': False, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {}, 'owner': None, } actual = self.service.show(self.context, image_id) self.assertThat(actual, matchers.DictMatches(expected)) def test_create(self): fixture = self._make_fixture(name='test image') num_images = len(self.service.detail(self.context)) image_id = self.service.create(self.context, fixture)['id'] self.assertIsNotNone(image_id) self.assertEqual(num_images + 1, len(self.service.detail(self.context))) def test_create_and_show_non_existing_image(self): fixture = self._make_fixture(name='test image') image_id = self.service.create(self.context, fixture)['id'] self.assertIsNotNone(image_id) self.assertRaises(exception.ImageNotFound, self.service.show, self.context, 'bad image id') def test_show_makes_datetimes(self): fixture = self._make_datetime_fixture() image_id = self.service.create(self.context, fixture)['id'] image_meta = self.service.show(self.context, image_id) self.assertEqual(image_meta['created_at'], self.NOW_DATETIME) self.assertEqual(image_meta['updated_at'], self.NOW_DATETIME) def test_detail_makes_datetimes(self): fixture = self._make_datetime_fixture() self.service.create(self.context, fixture) image_meta = self.service.detail(self.context)[0] self.assertEqual(image_meta['created_at'], self.NOW_DATETIME) self.assertEqual(image_meta['updated_at'], self.NOW_DATETIME) def test_page_size(self): with mock.patch.object(glance.GlanceClientWrapper, 'call') as a_mock: self.service.detail(self.context, page_size=5) self.assertEqual(a_mock.called, True) a_mock.assert_called_with(self.context, 1, 'list', filters={'is_public': 'none'}, page_size=5) def test_update(self): fixture = self._make_fixture(name='test image') image = self.service.create(self.context, fixture) image_id = image['id'] fixture['name'] = 'new image name' self.service.update(self.context, image_id, fixture) new_image_data = self.service.show(self.context, image_id) self.assertEqual('new image name', new_image_data['name']) def test_delete(self): fixture1 = self._make_fixture(name='test image 1') fixture2 = self._make_fixture(name='test image 2') fixtures = [fixture1, fixture2] num_images = len(self.service.detail(self.context)) self.assertEqual(0, num_images) ids = [] for fixture in fixtures: new_id = self.service.create(self.context, fixture)['id'] ids.append(new_id) num_images = len(self.service.detail(self.context)) self.assertEqual(2, num_images) self.service.delete(self.context, ids[0]) # When you delete an image from glance, it sets the status to DELETED # and doesn't actually remove the image. # Check the image is still there. num_images = len(self.service.detail(self.context)) self.assertEqual(2, num_images) # Check the image is marked as deleted. num_images = reduce(lambda x, y: x + (0 if y['deleted'] else 1), self.service.detail(self.context), 0) self.assertEqual(1, num_images) def test_download_with_retries(self): tries = [0] class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that fails the first time, then succeeds.""" def get(self, image_id): if tries[0] == 0: tries[0] = 1 raise glanceclient.exc.ServiceUnavailable('') else: return {} client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter writer = NullWriter() # When retries are disabled, we should get an exception self.flags(glance_num_retries=0) self.assertRaises(exception.GlanceConnectionFailed, service.download, self.context, image_id, data=writer) # Now lets enable retries. No exception should happen now. tries = [0] self.flags(glance_num_retries=1) service.download(self.context, image_id, data=writer) def test_download_file_url(self): self.flags(allowed_direct_url_schemes=['file']) class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that returns a file url.""" (outfd, s_tmpfname) = tempfile.mkstemp(prefix='directURLsrc') outf = os.fdopen(outfd, 'w') inf = open('/dev/urandom', 'r') for i in range(10): _data = inf.read(1024) outf.write(_data) outf.close() def get(self, image_id): return type('GlanceTestDirectUrlMeta', (object,), {'direct_url': 'file://%s' + self.s_tmpfname}) client = MyGlanceStubClient() (outfd, tmpfname) = tempfile.mkstemp(prefix='directURLdst') os.close(outfd) service = self._create_image_service(client) image_id = 1 # doesn't matter service.download(self.context, image_id, dst_path=tmpfname) # compare the two files rc = filecmp.cmp(tmpfname, client.s_tmpfname) self.assertTrue(rc, "The file %s and %s should be the same" % (tmpfname, client.s_tmpfname)) os.remove(client.s_tmpfname) os.remove(tmpfname) def test_download_module_filesystem_match(self): mountpoint = '/' fs_id = 'someid' desc = {'id': fs_id, 'mountpoint': mountpoint} class MyGlanceStubClient(glance_stubs.StubGlanceClient): outer_test = self def get(self, image_id): return type('GlanceLocations', (object,), {'locations': [ {'url': 'file:///' + os.devnull, 'metadata': desc}]}) def data(self, image_id): self.outer_test.fail('This should not be called because the ' 'transfer module should have intercepted ' 'it.') self.mox.StubOutWithMock(lv_utils, 'copy_image') image_id = 1 # doesn't matter client = MyGlanceStubClient() self.flags(allowed_direct_url_schemes=['file']) self.flags(group='image_file_url', filesystems=['gluster']) service = self._create_image_service(client) #NOTE(Jbresnah) The following options must be added after the module # has added the specific groups. self.flags(group='image_file_url:gluster', id=fs_id) self.flags(group='image_file_url:gluster', mountpoint=mountpoint) dest_file = os.devnull lv_utils.copy_image(mox.IgnoreArg(), dest_file) self.mox.ReplayAll() service.download(self.context, image_id, dst_path=dest_file) self.mox.VerifyAll() def test_download_module_no_filesystem_match(self): mountpoint = '/' fs_id = 'someid' desc = {'id': fs_id, 'mountpoint': mountpoint} some_data = "sfxvdwjer" class MyGlanceStubClient(glance_stubs.StubGlanceClient): outer_test = self def get(self, image_id): return type('GlanceLocations', (object,), {'locations': [ {'url': 'file:///' + os.devnull, 'metadata': desc}]}) def data(self, image_id): return some_data def _fake_copyfile(source, dest): self.fail('This should not be called because a match should not ' 'have been found.') self.stubs.Set(lv_utils, 'copy_image', _fake_copyfile) image_id = 1 # doesn't matter client = MyGlanceStubClient() self.flags(allowed_direct_url_schemes=['file']) self.flags(group='image_file_url', filesystems=['gluster']) service = self._create_image_service(client) #NOTE(Jbresnah) The following options must be added after the module # has added the specific groups. self.flags(group='image_file_url:gluster', id='someotherid') self.flags(group='image_file_url:gluster', mountpoint=mountpoint) service.download(self.context, image_id, dst_path=os.devnull, data=None) def test_download_module_mountpoints(self): glance_mount = '/glance/mount/point' _, data_filename = self._get_tempfile() nova_mount = os.path.dirname(data_filename) source_path = os.path.basename(data_filename) file_url = 'file://%s' % os.path.join(glance_mount, source_path) file_system_id = 'test_FS_ID' file_system_desc = {'id': file_system_id, 'mountpoint': glance_mount} class MyGlanceStubClient(glance_stubs.StubGlanceClient): outer_test = self def get(self, image_id): return type('GlanceLocations', (object,), {'locations': [{'url': file_url, 'metadata': file_system_desc}]}) def data(self, image_id): self.outer_test.fail('This should not be called because the ' 'transfer module should have intercepted ' 'it.') self.copy_called = False def _fake_copyfile(source, dest): self.assertEqual(source, data_filename) self.copy_called = True self.stubs.Set(lv_utils, 'copy_image', _fake_copyfile) self.flags(allowed_direct_url_schemes=['file']) self.flags(group='image_file_url', filesystems=['gluster']) image_id = 1 # doesn't matter client = MyGlanceStubClient() service = self._create_image_service(client) self.flags(group='image_file_url:gluster', id=file_system_id) self.flags(group='image_file_url:gluster', mountpoint=nova_mount) service.download(self.context, image_id, dst_path=os.devnull) self.assertTrue(self.copy_called) def test_download_module_file_bad_module(self): _, data_filename = self._get_tempfile() file_url = 'applesauce://%s' % data_filename data_called = False class MyGlanceStubClient(glance_stubs.StubGlanceClient): data_called = False def get(self, image_id): return type('GlanceLocations', (object,), {'locations': [{'url': file_url, 'metadata': {}}]}) def data(self, image_id): self.data_called = True return "someData" self.flags(allowed_direct_url_schemes=['applesauce']) self.mox.StubOutWithMock(lv_utils, 'copy_image') self.flags(allowed_direct_url_schemes=['file']) image_id = 1 # doesn't matter client = MyGlanceStubClient() service = self._create_image_service(client) # by not calling copyfileobj in the file download module we verify # that the requirements were not met for its use self.mox.ReplayAll() service.download(self.context, image_id, dst_path=os.devnull) self.mox.VerifyAll() self.assertTrue(client.data_called) def test_client_forbidden_converts_to_imagenotauthed(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a Forbidden exception.""" def get(self, image_id): raise glanceclient.exc.Forbidden(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter self.assertRaises(exception.ImageNotAuthorized, service.download, self.context, image_id, dst_path=os.devnull) def test_client_httpforbidden_converts_to_imagenotauthed(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a HTTPForbidden exception.""" def get(self, image_id): raise glanceclient.exc.HTTPForbidden(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter self.assertRaises(exception.ImageNotAuthorized, service.download, self.context, image_id, dst_path=os.devnull) def test_client_notfound_converts_to_imagenotfound(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a NotFound exception.""" def get(self, image_id): raise glanceclient.exc.NotFound(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter self.assertRaises(exception.ImageNotFound, service.download, self.context, image_id, dst_path=os.devnull) def test_client_httpnotfound_converts_to_imagenotfound(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a HTTPNotFound exception.""" def get(self, image_id): raise glanceclient.exc.HTTPNotFound(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter self.assertRaises(exception.ImageNotFound, service.download, self.context, image_id, dst_path=os.devnull) def test_glance_client_image_id(self): fixture = self._make_fixture(name='test image') image_id = self.service.create(self.context, fixture)['id'] (service, same_id) = glance.get_remote_image_service( self.context, image_id) self.assertEqual(same_id, image_id) def test_glance_client_image_ref(self): fixture = self._make_fixture(name='test image') image_id = self.service.create(self.context, fixture)['id'] image_url = 'http://something-less-likely/%s' % image_id (service, same_id) = glance.get_remote_image_service( self.context, image_url) self.assertEqual(same_id, image_id) self.assertEqual(service._client.host, 'something-less-likely') def _create_failing_glance_client(info): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that fails the first time, then succeeds.""" def get(self, image_id): info['num_calls'] += 1 if info['num_calls'] == 1: raise glanceclient.exc.ServiceUnavailable('') return {} return MyGlanceStubClient() class TestIsImageAvailable(test.NoDBTestCase): """Tests the internal _is_image_available function.""" class ImageSpecV2(object): visibility = None properties = None class ImageSpecV1(object): is_public = None properties = None def test_auth_token_override(self): ctx = mock.MagicMock(auth_token=True) img = mock.MagicMock() res = glance._is_image_available(ctx, img) self.assertTrue(res) img.assert_not_called() def test_admin_override(self): ctx = mock.MagicMock(auth_token=False, is_admin=True) img = mock.MagicMock() res = glance._is_image_available(ctx, img) self.assertTrue(res) img.assert_not_called() def test_v2_visibility(self): ctx = mock.MagicMock(auth_token=False, is_admin=False) # We emulate warlock validation that throws an AttributeError # if you try to call is_public on an image model returned by # a call to V2 image.get(). Here, the ImageSpecV2 does not have # an is_public attribute and MagicMock will throw an AttributeError. img = mock.MagicMock(visibility='PUBLIC', spec=TestIsImageAvailable.ImageSpecV2) res = glance._is_image_available(ctx, img) self.assertTrue(res) def test_v1_is_public(self): ctx = mock.MagicMock(auth_token=False, is_admin=False) img = mock.MagicMock(is_public=True, spec=TestIsImageAvailable.ImageSpecV1) res = glance._is_image_available(ctx, img) self.assertTrue(res) def test_project_is_owner(self): ctx = mock.MagicMock(auth_token=False, is_admin=False, project_id='123') props = { 'owner_id': '123' } img = mock.MagicMock(visibility='private', properties=props, spec=TestIsImageAvailable.ImageSpecV2) res = glance._is_image_available(ctx, img) self.assertTrue(res) ctx.reset_mock() img = mock.MagicMock(is_public=False, properties=props, spec=TestIsImageAvailable.ImageSpecV1) res = glance._is_image_available(ctx, img) self.assertTrue(res) def test_project_context_matches_project_prop(self): ctx = mock.MagicMock(auth_token=False, is_admin=False, project_id='123') props = { 'project_id': '123' } img = mock.MagicMock(visibility='private', properties=props, spec=TestIsImageAvailable.ImageSpecV2) res = glance._is_image_available(ctx, img) self.assertTrue(res) ctx.reset_mock() img = mock.MagicMock(is_public=False, properties=props, spec=TestIsImageAvailable.ImageSpecV1) res = glance._is_image_available(ctx, img) self.assertTrue(res) def test_no_user_in_props(self): ctx = mock.MagicMock(auth_token=False, is_admin=False, project_id='123') props = { } img = mock.MagicMock(visibility='private', properties=props, spec=TestIsImageAvailable.ImageSpecV2) res = glance._is_image_available(ctx, img) self.assertFalse(res) ctx.reset_mock() img = mock.MagicMock(is_public=False, properties=props, spec=TestIsImageAvailable.ImageSpecV1) res = glance._is_image_available(ctx, img) self.assertFalse(res) def test_user_matches_context(self): ctx = mock.MagicMock(auth_token=False, is_admin=False, user_id='123') props = { 'user_id': '123' } img = mock.MagicMock(visibility='private', properties=props, spec=TestIsImageAvailable.ImageSpecV2) res = glance._is_image_available(ctx, img) self.assertTrue(res) ctx.reset_mock() img = mock.MagicMock(is_public=False, properties=props, spec=TestIsImageAvailable.ImageSpecV1) res = glance._is_image_available(ctx, img) self.assertTrue(res) class TestShow(test.NoDBTestCase): """Tests the show method of the GlanceImageService.""" @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_show_success(self, is_avail_mock, trans_from_mock): is_avail_mock.return_value = True trans_from_mock.return_value = mock.sentinel.trans_from client = mock.MagicMock() client.call.return_value = mock.sentinel.images_0 ctx = mock.sentinel.ctx service = glance.GlanceImageService(client) info = service.show(ctx, mock.sentinel.image_id) client.call.assert_called_once_with(ctx, 1, 'get', mock.sentinel.image_id) is_avail_mock.assert_called_once_with(ctx, mock.sentinel.images_0) trans_from_mock.assert_called_once_with(mock.sentinel.images_0) self.assertEqual(mock.sentinel.trans_from, info) @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_show_not_available(self, is_avail_mock, trans_from_mock): is_avail_mock.return_value = False client = mock.MagicMock() client.call.return_value = mock.sentinel.images_0 ctx = mock.sentinel.ctx service = glance.GlanceImageService(client) with testtools.ExpectedException(exception.ImageNotFound): service.show(ctx, mock.sentinel.image_id) client.call.assert_called_once_with(ctx, 1, 'get', mock.sentinel.image_id) is_avail_mock.assert_called_once_with(ctx, mock.sentinel.images_0) trans_from_mock.assert_not_called() @mock.patch('nova.image.glance._reraise_translated_image_exception') @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_show_client_failure(self, is_avail_mock, trans_from_mock, reraise_mock): raised = exception.ImageNotAuthorized(image_id=123) client = mock.MagicMock() client.call.side_effect = glanceclient.exc.Forbidden ctx = mock.sentinel.ctx reraise_mock.side_effect = raised service = glance.GlanceImageService(client) with testtools.ExpectedException(exception.ImageNotAuthorized): service.show(ctx, mock.sentinel.image_id) client.call.assert_called_once_with(ctx, 1, 'get', mock.sentinel.image_id) is_avail_mock.assert_not_called() trans_from_mock.assert_not_called() reraise_mock.assert_called_once_with(mock.sentinel.image_id) class TestDetail(test.NoDBTestCase): """Tests the show method of the GlanceImageService.""" @mock.patch('nova.image.glance._extract_query_params') @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_detail_success_available(self, is_avail_mock, trans_from_mock, ext_query_mock): params = {} is_avail_mock.return_value = True ext_query_mock.return_value = params trans_from_mock.return_value = mock.sentinel.trans_from client = mock.MagicMock() client.call.return_value = [mock.sentinel.images_0] ctx = mock.sentinel.ctx service = glance.GlanceImageService(client) images = service.detail(ctx, **params) client.call.assert_called_once_with(ctx, 1, 'list') is_avail_mock.assert_called_once_with(ctx, mock.sentinel.images_0) trans_from_mock.assert_called_once_with(mock.sentinel.images_0) self.assertEqual([mock.sentinel.trans_from], images) @mock.patch('nova.image.glance._extract_query_params') @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_detail_success_unavailable(self, is_avail_mock, trans_from_mock, ext_query_mock): params = {} is_avail_mock.return_value = False ext_query_mock.return_value = params trans_from_mock.return_value = mock.sentinel.trans_from client = mock.MagicMock() client.call.return_value = [mock.sentinel.images_0] ctx = mock.sentinel.ctx service = glance.GlanceImageService(client) images = service.detail(ctx, **params) client.call.assert_called_once_with(ctx, 1, 'list') is_avail_mock.assert_called_once_with(ctx, mock.sentinel.images_0) trans_from_mock.assert_not_called() self.assertEqual([], images) @mock.patch('nova.image.glance._extract_query_params') @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_detail_params_passed(self, is_avail_mock, _trans_from_mock, ext_query_mock): params = dict(limit=10) ext_query_mock.return_value = params client = mock.MagicMock() client.call.return_value = [mock.sentinel.images_0] ctx = mock.sentinel.ctx service = glance.GlanceImageService(client) images = service.detail(ctx, **params) client.call.assert_called_once_with(ctx, 1, 'list', limit=10) @mock.patch('nova.image.glance._reraise_translated_exception') @mock.patch('nova.image.glance._extract_query_params') @mock.patch('nova.image.glance._translate_from_glance') @mock.patch('nova.image.glance._is_image_available') def test_detail_client_failure(self, is_avail_mock, trans_from_mock, ext_query_mock, reraise_mock): params = {} ext_query_mock.return_value = params raised = exception.NotAuthorized() client = mock.MagicMock() client.call.side_effect = glanceclient.exc.Forbidden ctx = mock.sentinel.ctx reraise_mock.side_effect = raised service = glance.GlanceImageService(client) with testtools.ExpectedException(exception.NotAuthorized): service.detail(ctx, **params) client.call.assert_called_once_with(ctx, 1, 'list') is_avail_mock.assert_not_called() trans_from_mock.assert_not_called() reraise_mock.assert_called_once_with() class TestGlanceClientWrapper(test.NoDBTestCase): def setUp(self): super(TestGlanceClientWrapper, self).setUp() # host1 has no scheme, which is http by default self.flags(glance_api_servers=['host1:9292', 'https://host2:9293', 'http://host3:9294']) # Make the test run fast def _fake_sleep(secs): pass self.stubs.Set(time, 'sleep', _fake_sleep) def test_headers_passed_glanceclient(self): auth_token = 'auth_token' ctxt = context.RequestContext('fake', 'fake', auth_token=auth_token) fake_host = 'host4' fake_port = 9295 fake_use_ssl = False def _get_fake_glanceclient(version, endpoint, **params): fake_client = glance_stubs.StubGlanceClient(version, endpoint, **params) self.assertIsNotNone(fake_client.auth_token) self.assertIsNotNone(fake_client.identity_headers) self.assertEqual(fake_client.identity_header['X-Auth_Token'], auth_token) self.assertEqual(fake_client.identity_header['X-User-Id'], 'fake') self.assertIsNone(fake_client.identity_header['X-Roles']) self.assertIsNone(fake_client.identity_header['X-Tenant-Id']) self.assertIsNone(fake_client.identity_header['X-Service-Catalog']) self.assertEqual(fake_client. identity_header['X-Identity-Status'], 'Confirmed') self.stubs.Set(glanceclient.Client, '__init__', _get_fake_glanceclient) glance._create_glance_client(ctxt, fake_host, fake_port, fake_use_ssl) def test_static_client_without_retries(self): self.flags(glance_num_retries=0) ctxt = context.RequestContext('fake', 'fake') fake_host = 'host4' fake_port = 9295 fake_use_ssl = False info = {'num_calls': 0} def _fake_create_glance_client(context, host, port, use_ssl, version): self.assertEqual(host, fake_host) self.assertEqual(port, fake_port) self.assertEqual(use_ssl, fake_use_ssl) return _create_failing_glance_client(info) self.stubs.Set(glance, '_create_glance_client', _fake_create_glance_client) client = glance.GlanceClientWrapper(context=ctxt, host=fake_host, port=fake_port, use_ssl=fake_use_ssl) self.assertRaises(exception.GlanceConnectionFailed, client.call, ctxt, 1, 'get', 'meow') self.assertEqual(info['num_calls'], 1) def test_default_client_without_retries(self): self.flags(glance_num_retries=0) ctxt = context.RequestContext('fake', 'fake') info = {'num_calls': 0, 'host': 'host1', 'port': 9292, 'use_ssl': False} # Leave the list in a known-order def _fake_shuffle(servers): pass def _fake_create_glance_client(context, host, port, use_ssl, version): self.assertEqual(host, info['host']) self.assertEqual(port, info['port']) self.assertEqual(use_ssl, info['use_ssl']) return _create_failing_glance_client(info) self.stubs.Set(random, 'shuffle', _fake_shuffle) self.stubs.Set(glance, '_create_glance_client', _fake_create_glance_client) client = glance.GlanceClientWrapper() client2 = glance.GlanceClientWrapper() self.assertRaises(exception.GlanceConnectionFailed, client.call, ctxt, 1, 'get', 'meow') self.assertEqual(info['num_calls'], 1) info = {'num_calls': 0, 'host': 'host2', 'port': 9293, 'use_ssl': True} def _fake_shuffle2(servers): # fake shuffle in a known manner servers.append(servers.pop(0)) self.stubs.Set(random, 'shuffle', _fake_shuffle2) self.assertRaises(exception.GlanceConnectionFailed, client2.call, ctxt, 1, 'get', 'meow') self.assertEqual(info['num_calls'], 1) def test_static_client_with_retries(self): self.flags(glance_num_retries=1) ctxt = context.RequestContext('fake', 'fake') fake_host = 'host4' fake_port = 9295 fake_use_ssl = False info = {'num_calls': 0} def _fake_create_glance_client(context, host, port, use_ssl, version): self.assertEqual(host, fake_host) self.assertEqual(port, fake_port) self.assertEqual(use_ssl, fake_use_ssl) return _create_failing_glance_client(info) self.stubs.Set(glance, '_create_glance_client', _fake_create_glance_client) client = glance.GlanceClientWrapper(context=ctxt, host=fake_host, port=fake_port, use_ssl=fake_use_ssl) client.call(ctxt, 1, 'get', 'meow') self.assertEqual(info['num_calls'], 2) def test_default_client_with_retries(self): self.flags(glance_num_retries=1) ctxt = context.RequestContext('fake', 'fake') info = {'num_calls': 0, 'host0': 'host1', 'port0': 9292, 'use_ssl0': False, 'host1': 'host2', 'port1': 9293, 'use_ssl1': True} # Leave the list in a known-order def _fake_shuffle(servers): pass def _fake_create_glance_client(context, host, port, use_ssl, version): attempt = info['num_calls'] self.assertEqual(host, info['host%s' % attempt]) self.assertEqual(port, info['port%s' % attempt]) self.assertEqual(use_ssl, info['use_ssl%s' % attempt]) return _create_failing_glance_client(info) self.stubs.Set(random, 'shuffle', _fake_shuffle) self.stubs.Set(glance, '_create_glance_client', _fake_create_glance_client) client = glance.GlanceClientWrapper() client2 = glance.GlanceClientWrapper() client.call(ctxt, 1, 'get', 'meow') self.assertEqual(info['num_calls'], 2) def _fake_shuffle2(servers): # fake shuffle in a known manner servers.append(servers.pop(0)) self.stubs.Set(random, 'shuffle', _fake_shuffle2) info = {'num_calls': 0, 'host0': 'host2', 'port0': 9293, 'use_ssl0': True, 'host1': 'host3', 'port1': 9294, 'use_ssl1': False} client2.call(ctxt, 1, 'get', 'meow') self.assertEqual(info['num_calls'], 2) class TestGlanceUrl(test.NoDBTestCase): def test_generate_glance_http_url(self): generated_url = glance.generate_glance_url() glance_host = CONF.glance_host # ipv6 address, need to wrap it with '[]' if utils.is_valid_ipv6(glance_host): glance_host = '[%s]' % glance_host http_url = "http://%s:%d" % (glance_host, CONF.glance_port) self.assertEqual(generated_url, http_url) def test_generate_glance_https_url(self): self.flags(glance_protocol="https") generated_url = glance.generate_glance_url() glance_host = CONF.glance_host # ipv6 address, need to wrap it with '[]' if utils.is_valid_ipv6(glance_host): glance_host = '[%s]' % glance_host https_url = "https://%s:%d" % (glance_host, CONF.glance_port) self.assertEqual(generated_url, https_url) class TestGlanceApiServers(test.TestCase): def test_get_ipv4_api_servers(self): self.flags(glance_api_servers=['10.0.1.1:9292', 'https://10.0.0.1:9293', 'http://10.0.2.2:9294']) glance_host = ['10.0.1.1', '10.0.0.1', '10.0.2.2'] api_servers = glance.get_api_servers() i = 0 for server in api_servers: i += 1 self.assertIn(server[0], glance_host) if i > 2: break # Python 2.6 can not parse ipv6 address correctly @testtools.skipIf(sys.version_info < (2, 7), "py27 or greater only") def test_get_ipv6_api_servers(self): self.flags(glance_api_servers=['[2001:2012:1:f101::1]:9292', 'https://[2010:2013:1:f122::1]:9293', 'http://[2001:2011:1:f111::1]:9294']) glance_host = ['2001:2012:1:f101::1', '2010:2013:1:f122::1', '2001:2011:1:f111::1'] api_servers = glance.get_api_servers() i = 0 for server in api_servers: i += 1 self.assertIn(server[0], glance_host) if i > 2: break class TestUpdateGlanceImage(test.NoDBTestCase): def test_start(self): consumer = glance.UpdateGlanceImage( 'context', 'id', 'metadata', 'stream') image_service = self.mox.CreateMock(glance.GlanceImageService) self.mox.StubOutWithMock(glance, 'get_remote_image_service') glance.get_remote_image_service( 'context', 'id').AndReturn((image_service, 'image_id')) image_service.update( 'context', 'image_id', 'metadata', 'stream', purge_props=False) self.mox.ReplayAll() consumer.start() nova-2014.1/nova/tests/image/__init__.py0000664000175400017540000000117312323721477021214 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/glance/0000775000175400017540000000000012323722546017246 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/glance/stubs.py0000664000175400017540000001107212323721477020763 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, 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. import glanceclient.exc NOW_GLANCE_FORMAT = "2010-10-11T10:30:22" class StubGlanceClient(object): def __init__(self, images=None, version=None, endpoint=None, **params): self.auth_token = params.get('token') self.identity_headers = params.get('identity_headers') if self.identity_headers: if self.identity_headers.get('X-Auth-Token'): self.auth_token = (self.identity_headers.get('X-Auth_Token') or self.auth_token) del self.identity_headers['X-Auth-Token'] self._images = [] _images = images or [] map(lambda image: self.create(**image), _images) #NOTE(bcwaldon): HACK to get client.images.* to work self.images = lambda: None for fn in ('list', 'get', 'data', 'create', 'update', 'delete'): setattr(self.images, fn, getattr(self, fn)) #TODO(bcwaldon): implement filters def list(self, filters=None, marker=None, limit=30, page_size=20): if marker is None: index = 0 else: for index, image in enumerate(self._images): if image.id == str(marker): index += 1 break else: raise glanceclient.exc.BadRequest('Marker not found') return self._images[index:index + limit] def get(self, image_id): for image in self._images: if image.id == str(image_id): return image raise glanceclient.exc.NotFound(image_id) def data(self, image_id): self.get(image_id) return [] def create(self, **metadata): metadata['created_at'] = NOW_GLANCE_FORMAT metadata['updated_at'] = NOW_GLANCE_FORMAT self._images.append(FakeImage(metadata)) try: image_id = str(metadata['id']) except KeyError: # auto-generate an id if one wasn't provided image_id = str(len(self._images)) self._images[-1].id = image_id return self._images[-1] def update(self, image_id, **metadata): for i, image in enumerate(self._images): if image.id == str(image_id): # If you try to update a non-authorized image, it raises # HTTPForbidden if image.owner == 'authorized_fake': raise glanceclient.exc.HTTPForbidden for k, v in metadata.items(): setattr(self._images[i], k, v) return self._images[i] raise glanceclient.exc.NotFound(image_id) def delete(self, image_id): for i, image in enumerate(self._images): if image.id == image_id: # When you delete an image from glance, it sets the status to # DELETED. If you try to delete a DELETED image, it raises # HTTPForbidden. image_data = self._images[i] if image_data.deleted: raise glanceclient.exc.HTTPForbidden() image_data.deleted = True image_data.deleted_at = NOW_GLANCE_FORMAT return raise glanceclient.exc.NotFound(image_id) class FakeImage(object): def __init__(self, metadata): IMAGE_ATTRIBUTES = ['size', 'disk_format', 'owner', 'container_format', 'checksum', 'id', 'name', 'created_at', 'updated_at', 'deleted', 'deleted_at', 'status', 'min_disk', 'min_ram', 'is_public'] raw = dict.fromkeys(IMAGE_ATTRIBUTES) raw.update(metadata) self.__dict__['raw'] = raw def __getattr__(self, key): try: return self.__dict__['raw'][key] except KeyError: raise AttributeError(key) def __setattr__(self, key, value): try: self.__dict__['raw'][key] = value except KeyError: raise AttributeError(key) nova-2014.1/nova/tests/glance/__init__.py0000664000175400017540000000127012323721477021361 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, 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. """ :mod:`glance` -- Stubs for Glance ================================= """ nova-2014.1/nova/tests/volume/0000775000175400017540000000000012323722546017324 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/volume/test_cinder.py0000664000175400017540000003013112323721477022201 0ustar jenkinsjenkins00000000000000# Copyright 2013 Mirantis, Inc. # Copyright 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from cinderclient import exceptions as cinder_exception from nova import context from nova import exception from nova import test from nova.volume import cinder class FakeCinderClient(object): class Volumes(object): def get(self, volume_id): return {'id': volume_id} def list(self, detailed): return [{'id': 'id1'}, {'id': 'id2'}] def create(self, *args, **kwargs): return {'id': 'created_id'} def __getattr__(self, item): return None def __init__(self): self.volumes = self.Volumes() self.volume_snapshots = self.volumes class CinderApiTestCase(test.NoDBTestCase): def setUp(self): super(CinderApiTestCase, self).setUp() self.api = cinder.API() self.cinderclient = FakeCinderClient() self.ctx = context.get_admin_context() self.mox.StubOutWithMock(cinder, 'cinderclient') self.mox.StubOutWithMock(cinder, '_untranslate_volume_summary_view') self.mox.StubOutWithMock(cinder, '_untranslate_snapshot_summary_view') def test_get(self): volume_id = 'volume_id1' cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_volume_summary_view(self.ctx, {'id': 'volume_id1'}) self.mox.ReplayAll() self.api.get(self.ctx, volume_id) def test_get_failed(self): volume_id = 'volume_id' cinder.cinderclient(self.ctx).AndRaise(cinder_exception.NotFound('')) cinder.cinderclient(self.ctx).AndRaise(cinder_exception.BadRequest('')) self.mox.ReplayAll() self.assertRaises(exception.VolumeNotFound, self.api.get, self.ctx, volume_id) self.assertRaises(exception.InvalidInput, self.api.get, self.ctx, volume_id) def test_create(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_volume_summary_view(self.ctx, {'id': 'created_id'}) self.mox.ReplayAll() self.api.create(self.ctx, 1, '', '') def test_create_failed(self): cinder.cinderclient(self.ctx).AndRaise(cinder_exception.BadRequest('')) self.mox.ReplayAll() self.assertRaises(exception.InvalidInput, self.api.create, self.ctx, 1, '', '') def test_get_all(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_volume_summary_view(self.ctx, {'id': 'id1'}).AndReturn('id1') cinder._untranslate_volume_summary_view(self.ctx, {'id': 'id2'}).AndReturn('id2') self.mox.ReplayAll() self.assertEqual(['id1', 'id2'], self.api.get_all(self.ctx)) def test_check_attach_volume_status_error(self): volume = {'status': 'error'} self.assertRaises(exception.InvalidVolume, self.api.check_attach, self.ctx, volume) def test_check_attach_volume_already_attached(self): volume = {'status': 'available'} volume['attach_status'] = "attached" self.assertRaises(exception.InvalidVolume, self.api.check_attach, self.ctx, volume) def test_check_attach_availability_zone_differs(self): volume = {'status': 'available'} volume['attach_status'] = "detached" instance = {'availability_zone': 'zone1'} volume['availability_zone'] = 'zone2' cinder.CONF.set_override('cinder_cross_az_attach', False) self.assertRaises(exception.InvalidVolume, self.api.check_attach, self.ctx, volume, instance) volume['availability_zone'] = 'zone1' self.assertIsNone(self.api.check_attach(self.ctx, volume, instance)) cinder.CONF.reset() def test_check_attach(self): volume = {'status': 'available'} volume['attach_status'] = "detached" volume['availability_zone'] = 'zone1' instance = {'availability_zone': 'zone1'} cinder.CONF.set_override('cinder_cross_az_attach', False) self.assertIsNone(self.api.check_attach(self.ctx, volume, instance)) cinder.CONF.reset() def test_check_detach(self): volume = {'status': 'available'} self.assertRaises(exception.InvalidVolume, self.api.check_detach, self.ctx, volume) volume['status'] = 'non-available' self.assertIsNone(self.api.check_detach(self.ctx, volume)) def test_reserve_volume(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'reserve') self.cinderclient.volumes.reserve('id1') self.mox.ReplayAll() self.api.reserve_volume(self.ctx, 'id1') def test_unreserve_volume(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'unreserve') self.cinderclient.volumes.unreserve('id1') self.mox.ReplayAll() self.api.unreserve_volume(self.ctx, 'id1') def test_begin_detaching(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'begin_detaching') self.cinderclient.volumes.begin_detaching('id1') self.mox.ReplayAll() self.api.begin_detaching(self.ctx, 'id1') def test_roll_detaching(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'roll_detaching') self.cinderclient.volumes.roll_detaching('id1') self.mox.ReplayAll() self.api.roll_detaching(self.ctx, 'id1') def test_attach(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'attach') self.cinderclient.volumes.attach('id1', 'uuid', 'point') self.mox.ReplayAll() self.api.attach(self.ctx, 'id1', 'uuid', 'point') def test_detach(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'detach') self.cinderclient.volumes.detach('id1') self.mox.ReplayAll() self.api.detach(self.ctx, 'id1') def test_initialize_connection(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'initialize_connection') self.cinderclient.volumes.initialize_connection('id1', 'connector') self.mox.ReplayAll() self.api.initialize_connection(self.ctx, 'id1', 'connector') def test_terminate_connection(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'terminate_connection') self.cinderclient.volumes.terminate_connection('id1', 'connector') self.mox.ReplayAll() self.api.terminate_connection(self.ctx, 'id1', 'connector') def test_delete(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'delete') self.cinderclient.volumes.delete('id1') self.mox.ReplayAll() self.api.delete(self.ctx, 'id1') def test_update(self): self.assertRaises(NotImplementedError, self.api.update, self.ctx, '', '') def test_get_snapshot(self): snapshot_id = 'snapshot_id' cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_snapshot_summary_view(self.ctx, {'id': snapshot_id}) self.mox.ReplayAll() self.api.get_snapshot(self.ctx, snapshot_id) def test_get_snapshot_failed(self): snapshot_id = 'snapshot_id' cinder.cinderclient(self.ctx).AndRaise(cinder_exception.NotFound('')) self.mox.ReplayAll() self.assertRaises(exception.SnapshotNotFound, self.api.get_snapshot, self.ctx, snapshot_id) def test_get_all_snapshots(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_snapshot_summary_view(self.ctx, {'id': 'id1'}).AndReturn('id1') cinder._untranslate_snapshot_summary_view(self.ctx, {'id': 'id2'}).AndReturn('id2') self.mox.ReplayAll() self.assertEqual(['id1', 'id2'], self.api.get_all_snapshots(self.ctx)) def test_create_snapshot(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_snapshot_summary_view(self.ctx, {'id': 'created_id'}) self.mox.ReplayAll() self.api.create_snapshot(self.ctx, {'id': 'id1'}, '', '') def test_create_force(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) cinder._untranslate_snapshot_summary_view(self.ctx, {'id': 'created_id'}) self.mox.ReplayAll() self.api.create_snapshot_force(self.ctx, {'id': 'id1'}, '', '') def test_delete_snapshot(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volume_snapshots, 'delete') self.cinderclient.volume_snapshots.delete('id1') self.mox.ReplayAll() self.api.delete_snapshot(self.ctx, 'id1') def test_get_volume_metadata(self): self.assertRaises(NotImplementedError, self.api.get_volume_metadata, self.ctx, '') def test_get_volume_metadata_value(self): self.assertRaises(NotImplementedError, self.api.get_volume_metadata_value, '', '') def test_delete_volume_metadata(self): self.assertRaises(NotImplementedError, self.api.delete_volume_metadata, self.ctx, '', '') def test_update_volume_metadata(self): self.assertRaises(NotImplementedError, self.api.update_volume_metadata, self.ctx, '', '') def test_update_snapshot_status(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volume_snapshots, 'update_snapshot_status') self.cinderclient.volume_snapshots.update_snapshot_status( 'id1', {'status': 'error', 'progress': '90%'}) self.mox.ReplayAll() self.api.update_snapshot_status(self.ctx, 'id1', 'error') def test_get_volume_encryption_metadata(self): cinder.cinderclient(self.ctx).AndReturn(self.cinderclient) self.mox.StubOutWithMock(self.cinderclient.volumes, 'get_encryption_metadata') self.cinderclient.volumes.\ get_encryption_metadata({'encryption_key_id': 'fake_key'}) self.mox.ReplayAll() self.api.get_volume_encryption_metadata(self.ctx, {'encryption_key_id': 'fake_key'}) nova-2014.1/nova/tests/volume/encryptors/0000775000175400017540000000000012323722546021534 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/volume/encryptors/test_cryptsetup.py0000664000175400017540000000550012323721477025371 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import array import os from nova.keymgr import key from nova.tests.volume.encryptors import test_base from nova import utils from nova.volume.encryptors import cryptsetup def fake__get_key(context): raw = array.array('B', ('0' * 64).decode('hex')).tolist() symmetric_key = key.SymmetricKey('AES', raw) return symmetric_key class CryptsetupEncryptorTestCase(test_base.VolumeEncryptorTestCase): def _create(self, connection_info): return cryptsetup.CryptsetupEncryptor(connection_info) def setUp(self): super(CryptsetupEncryptorTestCase, self).setUp() self.executes = [] def fake_execute(*cmd, **kwargs): self.executes.append(cmd) return None, None self.stubs.Set(utils, 'execute', fake_execute) self.stubs.Set(os.path, "realpath", lambda x: x) self.dev_path = self.connection_info['data']['device_path'] self.dev_name = self.dev_path.split('/')[-1] self.symlink_path = self.dev_path def test__open_volume(self): self.encryptor._open_volume("passphrase") expected_commands = [('cryptsetup', 'create', '--key-file=-', self.dev_name, self.dev_path)] self.assertEqual(expected_commands, self.executes) def test_attach_volume(self): self.stubs.Set(self.encryptor, '_get_key', fake__get_key) self.encryptor.attach_volume(None) expected_commands = [('cryptsetup', 'create', '--key-file=-', self.dev_name, self.dev_path), ('ln', '--symbolic', '--force', '/dev/mapper/%s' % self.dev_name, self.symlink_path)] self.assertEqual(expected_commands, self.executes) def test__close_volume(self): self.encryptor.detach_volume() expected_commands = [('cryptsetup', 'remove', self.dev_name)] self.assertEqual(expected_commands, self.executes) def test_detach_volume(self): self.encryptor.detach_volume() expected_commands = [('cryptsetup', 'remove', self.dev_name)] self.assertEqual(expected_commands, self.executes) nova-2014.1/nova/tests/volume/encryptors/test_nop.py0000664000175400017540000000217212323721477023745 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.tests.volume.encryptors import test_base from nova.volume.encryptors import nop class NoOpEncryptorTestCase(test_base.VolumeEncryptorTestCase): def _create(self, connection_info): return nop.NoOpEncryptor(connection_info) def setUp(self): super(NoOpEncryptorTestCase, self).setUp() def test_attach_volume(self): self.encryptor.attach_volume(None) def test_detach_volume(self): self.encryptor.detach_volume() nova-2014.1/nova/tests/volume/encryptors/test_luks.py0000664000175400017540000000553012323721477024130 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.tests.volume.encryptors import test_cryptsetup from nova.volume.encryptors import luks """ The utility of these test cases is limited given the simplicity of the LuksEncryptor class. The attach_volume method has the only significant logic to handle cases where the volume has not previously been formatted, but exercising this logic requires "real" devices and actually executing the various cryptsetup commands rather than simply logging them. """ class LuksEncryptorTestCase(test_cryptsetup.CryptsetupEncryptorTestCase): def _create(self, connection_info): return luks.LuksEncryptor(connection_info) def setUp(self): super(LuksEncryptorTestCase, self).setUp() def test__format_volume(self): self.encryptor._format_volume("passphrase") expected_commands = [('cryptsetup', '--batch-mode', 'luksFormat', '--key-file=-', self.dev_path)] self.assertEqual(expected_commands, self.executes) def test__open_volume(self): self.encryptor._open_volume("passphrase") expected_commands = [('cryptsetup', 'luksOpen', '--key-file=-', self.dev_path, self.dev_name)] self.assertEqual(expected_commands, self.executes) def test_attach_volume(self): self.stubs.Set(self.encryptor, '_get_key', test_cryptsetup.fake__get_key) self.encryptor.attach_volume(None) expected_commands = [('cryptsetup', 'luksOpen', '--key-file=-', self.dev_path, self.dev_name), ('ln', '--symbolic', '--force', '/dev/mapper/%s' % self.dev_name, self.symlink_path)] self.assertEqual(expected_commands, self.executes) def test__close_volume(self): self.encryptor.detach_volume() expected_commands = [('cryptsetup', 'luksClose', self.dev_name)] self.assertEqual(expected_commands, self.executes) def test_detach_volume(self): self.encryptor.detach_volume() expected_commands = [('cryptsetup', 'luksClose', self.dev_name)] self.assertEqual(expected_commands, self.executes) nova-2014.1/nova/tests/volume/encryptors/test_base.py0000664000175400017540000000241712323721477024065 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import keymgr from nova import test from nova.tests.keymgr import fake class VolumeEncryptorTestCase(test.TestCase): def _create(self, device_path): pass def setUp(self): super(VolumeEncryptorTestCase, self).setUp() self.stubs.Set(keymgr, 'API', fake.fake_api) self.connection_info = { "data": { "device_path": "/dev/disk/by-path/" "ip-192.0.2.0:3260-iscsi-iqn.2010-10.org.openstack" ":volume-fake_uuid-lun-1", }, } self.encryptor = self._create(self.connection_info) nova-2014.1/nova/tests/volume/encryptors/__init__.py0000664000175400017540000000124212323721477023646 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/volume/__init__.py0000664000175400017540000000114712323721477021442 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/test_instance_types_extra_specs.py0000664000175400017540000001305412323721477025063 0ustar jenkinsjenkins00000000000000# Copyright 2011 University of Southern California # 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. """ Unit Tests for instance types extra specs code """ from nova import context from nova import db from nova import exception from nova import test class InstanceTypeExtraSpecsTestCase(test.TestCase): def setUp(self): super(InstanceTypeExtraSpecsTestCase, self).setUp() self.context = context.get_admin_context() values = dict(name="cg1.4xlarge", memory_mb=22000, vcpus=8, root_gb=1690, ephemeral_gb=2000, flavorid=105) self.specs = dict(cpu_arch="x86_64", cpu_model="Nehalem", xpu_arch="fermi", xpus="2", xpu_model="Tesla 2050") values['extra_specs'] = self.specs ref = db.flavor_create(self.context, values) self.instance_type_id = ref["id"] self.flavorid = ref["flavorid"] def tearDown(self): # Remove the instance type from the database db.flavor_destroy(self.context, "cg1.4xlarge") super(InstanceTypeExtraSpecsTestCase, self).tearDown() def test_instance_type_specs_get(self): actual_specs = db.flavor_extra_specs_get( self.context, self.flavorid) self.assertEqual(self.specs, actual_specs) def test_flavor_extra_specs_delete(self): del self.specs["xpu_model"] db.flavor_extra_specs_delete(self.context, self.flavorid, "xpu_model") actual_specs = db.flavor_extra_specs_get( self.context, self.flavorid) self.assertEqual(self.specs, actual_specs) def test_instance_type_extra_specs_update(self): self.specs["cpu_model"] = "Sandy Bridge" db.flavor_extra_specs_update_or_create( self.context, self.flavorid, dict(cpu_model="Sandy Bridge")) actual_specs = db.flavor_extra_specs_get( self.context, self.flavorid) self.assertEqual(self.specs, actual_specs) def test_instance_type_extra_specs_update_with_nonexisting_flavor(self): extra_specs = dict(cpu_arch="x86_64") nonexisting_flavorid = "some_flavor_that_doesnt_exists" self.assertRaises(exception.FlavorNotFound, db.flavor_extra_specs_update_or_create, self.context, nonexisting_flavorid, extra_specs) def test_instance_type_extra_specs_create(self): net_attrs = { "net_arch": "ethernet", "net_mbps": "10000" } self.specs.update(net_attrs) db.flavor_extra_specs_update_or_create( self.context, self.flavorid, net_attrs) actual_specs = db.flavor_extra_specs_get( self.context, self.flavorid) self.assertEqual(self.specs, actual_specs) def test_instance_type_get_with_extra_specs(self): instance_type = db.flavor_get( self.context, self.instance_type_id) self.assertEqual(instance_type['extra_specs'], self.specs) instance_type = db.flavor_get( self.context, 5) self.assertEqual(instance_type['extra_specs'], {}) def test_instance_type_get_by_name_with_extra_specs(self): instance_type = db.flavor_get_by_name( self.context, "cg1.4xlarge") self.assertEqual(instance_type['extra_specs'], self.specs) instance_type = db.flavor_get_by_name( self.context, "m1.small") self.assertEqual(instance_type['extra_specs'], {}) def test_instance_type_get_by_flavor_id_with_extra_specs(self): instance_type = db.flavor_get_by_flavor_id( self.context, 105) self.assertEqual(instance_type['extra_specs'], self.specs) instance_type = db.flavor_get_by_flavor_id( self.context, 2) self.assertEqual(instance_type['extra_specs'], {}) def test_instance_type_get_all(self): types = db.flavor_get_all(self.context) name2specs = {} for instance_type in types: name = instance_type['name'] name2specs[name] = instance_type['extra_specs'] self.assertEqual(name2specs['cg1.4xlarge'], self.specs) self.assertEqual(name2specs['m1.small'], {}) nova-2014.1/nova/tests/fake_processutils.py0000664000175400017540000000674612323721477022133 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, 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. """This modules stubs out functions in openstack.common.processutils.""" import re from eventlet import greenthread import six from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import processutils LOG = logging.getLogger(__name__) _fake_execute_repliers = [] _fake_execute_log = [] def fake_execute_get_log(): return _fake_execute_log def fake_execute_clear_log(): global _fake_execute_log _fake_execute_log = [] def fake_execute_set_repliers(repliers): """Allows the client to configure replies to commands.""" global _fake_execute_repliers _fake_execute_repliers = repliers def fake_execute_default_reply_handler(*ignore_args, **ignore_kwargs): """A reply handler for commands that haven't been added to the reply list. Returns empty strings for stdout and stderr. """ return '', '' def fake_execute(*cmd_parts, **kwargs): """This function stubs out execute. It optionally executes a preconfigued function to return expected data. """ global _fake_execute_repliers process_input = kwargs.get('process_input', None) check_exit_code = kwargs.get('check_exit_code', 0) delay_on_retry = kwargs.get('delay_on_retry', True) attempts = kwargs.get('attempts', 1) run_as_root = kwargs.get('run_as_root', False) cmd_str = ' '.join(str(part) for part in cmd_parts) LOG.debug(_("Faking execution of cmd (subprocess): %s"), cmd_str) _fake_execute_log.append(cmd_str) reply_handler = fake_execute_default_reply_handler for fake_replier in _fake_execute_repliers: if re.match(fake_replier[0], cmd_str): reply_handler = fake_replier[1] LOG.debug(_('Faked command matched %s') % fake_replier[0]) break if isinstance(reply_handler, six.string_types): # If the reply handler is a string, return it as stdout reply = reply_handler, '' else: try: # Alternative is a function, so call it reply = reply_handler(cmd_parts, process_input=process_input, delay_on_retry=delay_on_retry, attempts=attempts, run_as_root=run_as_root, check_exit_code=check_exit_code) except processutils.ProcessExecutionError as e: LOG.debug(_('Faked command raised an exception %s'), e) raise LOG.debug(_("Reply to faked command is stdout='%(stdout)s' " "stderr='%(stderr)s'") % {'stdout': reply[0], 'stderr': reply[1]}) # Replicate the sleep call in the real function greenthread.sleep(0) return reply def stub_out_processutils_execute(stubs): fake_execute_set_repliers([]) fake_execute_clear_log() stubs.Set(processutils, 'execute', fake_execute) nova-2014.1/nova/tests/keymgr/0000775000175400017540000000000012323722546017313 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/keymgr/test_mock_key_mgr.py0000664000175400017540000000705612323721477023404 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test cases for the mock key manager. """ import array from nova import context from nova import exception from nova.keymgr import key as keymgr_key from nova.keymgr import mock_key_mgr from nova.tests.keymgr import test_key_mgr class MockKeyManagerTestCase(test_key_mgr.KeyManagerTestCase): def _create_key_manager(self): return mock_key_mgr.MockKeyManager() def setUp(self): super(MockKeyManagerTestCase, self).setUp() self.ctxt = context.RequestContext('fake', 'fake') def test_create_key(self): key_id_1 = self.key_mgr.create_key(self.ctxt) key_id_2 = self.key_mgr.create_key(self.ctxt) # ensure that the UUIDs are unique self.assertNotEqual(key_id_1, key_id_2) def test_create_key_with_length(self): for length in [64, 128, 256]: key_id = self.key_mgr.create_key(self.ctxt, key_length=length) key = self.key_mgr.get_key(self.ctxt, key_id) self.assertEqual(length / 8, len(key.get_encoded())) def test_create_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.create_key, None) def test_store_key(self): secret_key = array.array('B', ('0' * 64).decode('hex')).tolist() _key = keymgr_key.SymmetricKey('AES', secret_key) key_id = self.key_mgr.store_key(self.ctxt, _key) actual_key = self.key_mgr.get_key(self.ctxt, key_id) self.assertEqual(_key, actual_key) def test_store_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.store_key, None, None) def test_copy_key(self): key_id = self.key_mgr.create_key(self.ctxt) key = self.key_mgr.get_key(self.ctxt, key_id) copied_key_id = self.key_mgr.copy_key(self.ctxt, key_id) copied_key = self.key_mgr.get_key(self.ctxt, copied_key_id) self.assertNotEqual(key_id, copied_key_id) self.assertEqual(key, copied_key) def test_copy_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.copy_key, None, None) def test_get_key(self): pass def test_get_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.get_key, None, None) def test_get_unknown_key(self): self.assertRaises(KeyError, self.key_mgr.get_key, self.ctxt, None) def test_delete_key(self): key_id = self.key_mgr.create_key(self.ctxt) self.key_mgr.delete_key(self.ctxt, key_id) self.assertRaises(KeyError, self.key_mgr.get_key, self.ctxt, key_id) def test_delete_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.delete_key, None, None) def test_delete_unknown_key(self): self.assertRaises(KeyError, self.key_mgr.delete_key, self.ctxt, None) nova-2014.1/nova/tests/keymgr/test_key.py0000664000175400017540000000356012323721477021522 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test cases for the key classes. """ import array from nova.keymgr import key from nova import test class KeyTestCase(test.NoDBTestCase): def _create_key(self): raise NotImplementedError() def setUp(self): super(KeyTestCase, self).setUp() self.key = self._create_key() class SymmetricKeyTestCase(KeyTestCase): def _create_key(self): return key.SymmetricKey(self.algorithm, self.encoded) def setUp(self): self.algorithm = 'AES' self.encoded = array.array('B', ('0' * 64).decode('hex')).tolist() super(SymmetricKeyTestCase, self).setUp() def test_get_algorithm(self): self.assertEqual(self.key.get_algorithm(), self.algorithm) def test_get_format(self): self.assertEqual(self.key.get_format(), 'RAW') def test_get_encoded(self): self.assertEqual(self.key.get_encoded(), self.encoded) def test___eq__(self): self.assertTrue(self.key == self.key) self.assertFalse(self.key == None) self.assertFalse(None == self.key) def test___ne__(self): self.assertFalse(self.key != self.key) self.assertTrue(self.key != None) self.assertTrue(None != self.key) nova-2014.1/nova/tests/keymgr/fake.py0000664000175400017540000000146012323721477020576 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Implementation of a fake key manager.""" from nova.keymgr import mock_key_mgr def fake_api(): return mock_key_mgr.MockKeyManager() nova-2014.1/nova/tests/keymgr/test_single_key_mgr.py0000664000175400017540000000461712323721477023734 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test cases for the single key manager. """ import array from nova import exception from nova.keymgr import key from nova.keymgr import single_key_mgr from nova.tests.keymgr import test_mock_key_mgr class SingleKeyManagerTestCase(test_mock_key_mgr.MockKeyManagerTestCase): def _create_key_manager(self): return single_key_mgr.SingleKeyManager() def setUp(self): super(SingleKeyManagerTestCase, self).setUp() self.key_id = '00000000-0000-0000-0000-000000000000' encoded = array.array('B', ('0' * 64).decode('hex')).tolist() self.key = key.SymmetricKey('AES', encoded) def test___init__(self): self.assertEqual(self.key, self.key_mgr.get_key(self.ctxt, self.key_id)) def test_create_key(self): key_id_1 = self.key_mgr.create_key(self.ctxt) key_id_2 = self.key_mgr.create_key(self.ctxt) # ensure that the UUIDs are the same self.assertEqual(key_id_1, key_id_2) def test_create_key_with_length(self): pass def test_store_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.store_key, None, self.key) def test_copy_key(self): key_id = self.key_mgr.create_key(self.ctxt) key = self.key_mgr.get_key(self.ctxt, key_id) copied_key_id = self.key_mgr.copy_key(self.ctxt, key_id) copied_key = self.key_mgr.get_key(self.ctxt, copied_key_id) self.assertEqual(key_id, copied_key_id) self.assertEqual(key, copied_key) def test_delete_key(self): pass def test_delete_unknown_key(self): self.assertRaises(exception.KeyManagerError, self.key_mgr.delete_key, self.ctxt, None) nova-2014.1/nova/tests/keymgr/test_conf_key_mgr.py0000664000175400017540000000302712323721477023372 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test cases for the conf key manager. """ import array from oslo.config import cfg from nova.keymgr import conf_key_mgr from nova.keymgr import key from nova.tests.keymgr import test_single_key_mgr CONF = cfg.CONF CONF.import_opt('fixed_key', 'nova.keymgr.conf_key_mgr', group='keymgr') class ConfKeyManagerTestCase(test_single_key_mgr.SingleKeyManagerTestCase): def __init__(self, *args, **kwargs): super(ConfKeyManagerTestCase, self).__init__(*args, **kwargs) self._hex_key = '0' * 64 def _create_key_manager(self): CONF.set_default('fixed_key', default=self._hex_key, group='keymgr') return conf_key_mgr.ConfKeyManager() def setUp(self): super(ConfKeyManagerTestCase, self).setUp() encoded_key = array.array('B', self._hex_key.decode('hex')).tolist() self.key = key.SymmetricKey('AES', encoded_key) nova-2014.1/nova/tests/keymgr/test_key_mgr.py0000664000175400017540000000172212323721477022365 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test cases for the key manager. """ from nova import test class KeyManagerTestCase(test.NoDBTestCase): def _create_key_manager(self): raise NotImplementedError() def setUp(self): super(KeyManagerTestCase, self).setUp() self.key_mgr = self._create_key_manager() nova-2014.1/nova/tests/keymgr/test_not_implemented_key_mgr.py0000664000175400017540000000336012323721477025630 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Test cases for the not implemented key manager. """ from nova.keymgr import not_implemented_key_mgr from nova.tests.keymgr import test_key_mgr class NotImplementedKeyManagerTestCase(test_key_mgr.KeyManagerTestCase): def _create_key_manager(self): return not_implemented_key_mgr.NotImplementedKeyManager() def setUp(self): super(NotImplementedKeyManagerTestCase, self).setUp() def test_create_key(self): self.assertRaises(NotImplementedError, self.key_mgr.create_key, None) def test_store_key(self): self.assertRaises(NotImplementedError, self.key_mgr.store_key, None, None) def test_copy_key(self): self.assertRaises(NotImplementedError, self.key_mgr.copy_key, None, None) def test_get_key(self): self.assertRaises(NotImplementedError, self.key_mgr.get_key, None, None) def test_delete_key(self): self.assertRaises(NotImplementedError, self.key_mgr.delete_key, None, None) nova-2014.1/nova/tests/keymgr/__init__.py0000664000175400017540000000124212323721477021425 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/bundle/0000775000175400017540000000000012323722546017266 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/bundle/1mb.no_kernel_or_ramdisk.manifest.xml0000664000175400017540000000426012323721477026465 0ustar jenkinsjenkins000000000000002007-10-10euca-tools1.231337x86_641mb42machineda39a3ee5e6b4b0d3255bfef95601890afd807091048576113633a2ea00dc64083dd9a10eb5e233635b42a7beb1670ab75452087d9de74c60aba1cd27c136fda56f62beb581de128fb1f10d072b9e556fd25e903107a57827c21f6ee8a93a4ff55b11311fcef217e3eefb07e81f71e88216f43b4b54029c1f2549f2925a839a73947d2d5aeecec4a62ece4af9156d557ae907978298296d99154c11147fd8caf92447e90ce339928933d7579244c2f8ffb07cc0ea35f8738da8b90eff6c7a49671a84500e993e9462e4c36d5c19c0b3a2b397d035b4c0cce742b58e12552175d81d129b0425e9f71ebacb9aeb539fa9dd2ac36749fb82876f6902e5fb24b6ec19f35ec4c20acd50437fd30966e99c4d9a0647577970a8fa302314bd082c9715f071160c69bbfb070f51d2ba1076775f1d988ccde150e515088156b248e4b5a64e46c4fe064feeeedfe14511f7fde478a51acb89f9b2f6c84b60593e5c3f792ba6b01fed9bf2158fdac03086374883b39d13a3ca74497eeaaf579fc3f26effc73bfd9446a2a8c4061f0874bfaca058905180e22d3d8881551cb38f7606f19f00e4e19535dd234b66b31b77e9c7bad3885d9c9efa75c863631fd4f82a009e17d789066d9cc6032a436f05384832f6d9a3283d3e63eab04fa0da5c8c87db9b17e854e842c3fb416507d067a266b44538125ce732e486098e8ebd1ca91fa3079f007fce7d14957a9b7e57282407ead3c6eb68fe975df3d83190021b1mb.part.0c4413423cf7a57e71187e19bfd5cd4b514a642831mb.part.19d4262e6589393d09a11a0332af169887bc2e57d4e00b5ba28114dda4a9df7eeae94be847ec46117a09a1cbe41e578660642f0660dda1776b39fb3bf826b6cfec019e2a5e9c566728d186b7400ebc989a30670eb1db26ce01e68bd9d3f31290370077a85b81c66b63c1e0d5499bac115c06c17a21a81b6d3a67ebbce6c17019095af7ab07f3796c708cc843e58efc12ddc788c5e nova-2014.1/nova/tests/bundle/1mb.manifest.xml0000664000175400017540000000436012323721477022301 0ustar jenkinsjenkins000000000000002007-10-10euca-tools1.231337x86_64aki-testari-test1mb42machineda39a3ee5e6b4b0d3255bfef95601890afd807091048576113633a2ea00dc64083dd9a10eb5e233635b42a7beb1670ab75452087d9de74c60aba1cd27c136fda56f62beb581de128fb1f10d072b9e556fd25e903107a57827c21f6ee8a93a4ff55b11311fcef217e3eefb07e81f71e88216f43b4b54029c1f2549f2925a839a73947d2d5aeecec4a62ece4af9156d557ae907978298296d99154c11147fd8caf92447e90ce339928933d7579244c2f8ffb07cc0ea35f8738da8b90eff6c7a49671a84500e993e9462e4c36d5c19c0b3a2b397d035b4c0cce742b58e12552175d81d129b0425e9f71ebacb9aeb539fa9dd2ac36749fb82876f6902e5fb24b6ec19f35ec4c20acd50437fd30966e99c4d9a0647577970a8fa302314bd082c9715f071160c69bbfb070f51d2ba1076775f1d988ccde150e515088156b248e4b5a64e46c4fe064feeeedfe14511f7fde478a51acb89f9b2f6c84b60593e5c3f792ba6b01fed9bf2158fdac03086374883b39d13a3ca74497eeaaf579fc3f26effc73bfd9446a2a8c4061f0874bfaca058905180e22d3d8881551cb38f7606f19f00e4e19535dd234b66b31b77e9c7bad3885d9c9efa75c863631fd4f82a009e17d789066d9cc6032a436f05384832f6d9a3283d3e63eab04fa0da5c8c87db9b17e854e842c3fb416507d067a266b44538125ce732e486098e8ebd1ca91fa3079f007fce7d14957a9b7e57282407ead3c6eb68fe975df3d83190021b1mb.part.0c4413423cf7a57e71187e19bfd5cd4b514a642831mb.part.19d4262e6589393d09a11a0332af169887bc2e57d4e00b5ba28114dda4a9df7eeae94be847ec46117a09a1cbe41e578660642f0660dda1776b39fb3bf826b6cfec019e2a5e9c566728d186b7400ebc989a30670eb1db26ce01e68bd9d3f31290370077a85b81c66b63c1e0d5499bac115c06c17a21a81b6d3a67ebbce6c17019095af7ab07f3796c708cc843e58efc12ddc788c5e nova-2014.1/nova/tests/bundle/1mb.part.00000664000175400017540000000200012323721477020765 0ustar jenkinsjenkins00000000000000í+ĐŒ!}›ûa1W:ïĐdvb£GÖv:equ°eQ´À̉Ê™åÙđúF™½(Y?aú"Ơ Ù(,u« »₫tƒ#æ®ü)~$¡ªîF­Aæ„g–ù<Î…ùñbgædRåÙÀ] ß|B7Ơ ²ơ#f*Øà‡Ô›±Ø•5˜ÆA»’Kj`”äJœ… ‹eÓ ®̃߬‚ÜÁi0gđ†‹ƒL¾^ÃÏwƯ0̀!e,¯ê­Å.ĐZÙ8PøLÁR ñô‚ϼ‡1ú†£<·)çÑËí€Ü- ‚_™»´¤M7¯¹ah́ÀÏjB¡oíL4Ư­µ5wi_ª½[ o°Î}Ñ] œÊÑơOåŒ6q¸ír»& Û‚M鵘̉r:̣Ÿ¬åf¶¥UÜ·s)¼¥¢F̣àsQ&ă èˆÚرÄơ½…’SB,1I÷Ö PÚG–HHW¶â¡&­ơ¯(̀…¨[¹́ƒ̀IŸev‚jq“ÔP=¬l5ƠỤ̂́8ßmíµ.cø̃¡å…æÈ\\ÉB€nc ̣Gi›|&E£cp†¾)¦ˆ̀0F5ĂºwHưƳ'=‚đÙ¹w¾XpŸ´¯4!3Z®RÅVïúiq»^$-0SJ)›+o -“™9'¨Á”µ̃¥¢?AơĐH§¬[̣Ó|>qqe›p |_„¥¡U4|; ïM¾~¶V| tĐ•z sà­À·K‡jČؘ›}wTºl¬)ª’nÓs¼(rR+Ÿ—}%,€3·D‰ÿaVSă¥v%p/̣ƒÅÔ?j1ë—ï§¡v@s‹A€ü¹•½ÈàpíÊK$C¿ïÛyyT®³Æx =\l»W£=½Q÷£º§5ç˜<¸ Ư"+e³, ;ö;Ô‰¹x¤¾æ‚ùz?Ät N8ÎÅ®EƯ·sØfCƠ¹ŒV£V £!¨̃Ă®í»LÉâÖHÚà ”¨J3̀×»aY’¢–¡îÖ÷ZaG»|Ï\¥½“rk±½¶ï—Ú`"±²™ÖÂl¬Ä·Ñ3?7ºâK¡ˆlZƒ°†”ƒÚLaú1§kCT ªl6µ¦NÊ(ª ÎêY ©̃YÒ·Ê4záH|î:lx¬̀S¡,Ö€[6°¼Ăå–öˆ*˜ê6 pđ[„¢ƒrüqG»ơ}9¶réÆloTˆZ` ¼§]ñWsïÁ~Q7*÷®Ùù†ÚZZë9—ßôQ…>Ú×(ù—ŒgÂV(Çj"וTY“#â€ÓUÈkW45Y4J“qĐªcÜDăä­û—‡EƯWèuÿ¡pVnova-2014.1/nova/tests/bundle/1mb.part.10000664000175400017540000000016012323721477020773 0ustar jenkinsjenkins00000000000000­´ˆà«€ç‰°Ƴ ¡ÀiDHẀ½×JÈ8ïrV¼³h§X’·@Yj“~Ø ·Gû5û 3Nt«˜•H6Ñ$§Ëgö™é Lá¢+³æ¤X†pm¬@,ø>7ÚÊ×up¼ aü`¥V2X@£#á¶nova-2014.1/nova/tests/servicegroup/0000775000175400017540000000000012323722546020532 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/servicegroup/test_db_servicegroup.py0000664000175400017540000001244212323721477025332 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import fixtures from nova import context from nova import db from nova.openstack.common import timeutils from nova import service from nova import servicegroup from nova import test class ServiceFixture(fixtures.Fixture): def __init__(self, host, binary, topic): super(ServiceFixture, self).__init__() self.host = host self.binary = binary self.topic = topic self.serv = None def setUp(self): super(ServiceFixture, self).setUp() self.serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager', 1, 1) self.addCleanup(self.serv.kill) class DBServiceGroupTestCase(test.TestCase): def setUp(self): super(DBServiceGroupTestCase, self).setUp() servicegroup.API._driver = None self.flags(servicegroup_driver='db') self.down_time = 15 self.flags(enable_new_services=True) self.flags(service_down_time=self.down_time) self.servicegroup_api = servicegroup.API() self._host = 'foo' self._binary = 'nova-fake' self._topic = 'unittest' self._ctx = context.get_admin_context() def test_DB_driver(self): serv = self.useFixture( ServiceFixture(self._host, self._binary, self._topic)).serv serv.start() service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) self.assertTrue(self.servicegroup_api.service_is_up(service_ref)) self.useFixture(test.TimeOverride()) timeutils.advance_time_seconds(self.down_time + 1) self.servicegroup_api._driver._report_state(serv) service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) self.assertTrue(self.servicegroup_api.service_is_up(service_ref)) serv.stop() timeutils.advance_time_seconds(self.down_time + 1) service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) self.assertFalse(self.servicegroup_api.service_is_up(service_ref)) def test_get_all(self): host1 = self._host + '_1' host2 = self._host + '_2' serv1 = self.useFixture( ServiceFixture(host1, self._binary, self._topic)).serv serv1.start() serv2 = self.useFixture( ServiceFixture(host2, self._binary, self._topic)).serv serv2.start() service_ref1 = db.service_get_by_args(self._ctx, host1, self._binary) service_ref2 = db.service_get_by_args(self._ctx, host2, self._binary) services = self.servicegroup_api.get_all(self._topic) self.assertIn(service_ref1['host'], services) self.assertIn(service_ref2['host'], services) service_id = self.servicegroup_api.get_one(self._topic) self.assertIn(service_id, services) def test_service_is_up(self): fts_func = datetime.datetime.fromtimestamp fake_now = 1000 down_time = 15 self.flags(service_down_time=down_time) self.mox.StubOutWithMock(timeutils, 'utcnow') self.servicegroup_api = servicegroup.API() # Up (equal) timeutils.utcnow().AndReturn(fts_func(fake_now)) service = {'updated_at': fts_func(fake_now - self.down_time), 'created_at': fts_func(fake_now - self.down_time)} self.mox.ReplayAll() result = self.servicegroup_api.service_is_up(service) self.assertTrue(result) self.mox.ResetAll() # Up timeutils.utcnow().AndReturn(fts_func(fake_now)) service = {'updated_at': fts_func(fake_now - self.down_time + 1), 'created_at': fts_func(fake_now - self.down_time + 1)} self.mox.ReplayAll() result = self.servicegroup_api.service_is_up(service) self.assertTrue(result) self.mox.ResetAll() # Down timeutils.utcnow().AndReturn(fts_func(fake_now)) service = {'updated_at': fts_func(fake_now - self.down_time - 3), 'created_at': fts_func(fake_now - self.down_time - 3)} self.mox.ReplayAll() result = self.servicegroup_api.service_is_up(service) self.assertFalse(result) nova-2014.1/nova/tests/servicegroup/test_mc_servicegroup.py0000664000175400017540000002046412323721477025347 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Akira Yoshiyama # # This is derived from test_db_servicegroup.py. # Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures from nova import context from nova import db from nova.openstack.common import timeutils from nova import service from nova import servicegroup from nova import test class ServiceFixture(fixtures.Fixture): def __init__(self, host, binary, topic): super(ServiceFixture, self).__init__() self.host = host self.binary = binary self.topic = topic self.serv = None def setUp(self): super(ServiceFixture, self).setUp() self.serv = service.Service(self.host, self.binary, self.topic, 'nova.tests.test_service.FakeManager', 1, 1) self.addCleanup(self.serv.kill) class MemcachedServiceGroupTestCase(test.TestCase): def setUp(self): super(MemcachedServiceGroupTestCase, self).setUp() servicegroup.API._driver = None self.flags(servicegroup_driver='mc') self.down_time = 15 self.flags(enable_new_services=True) self.flags(service_down_time=self.down_time) self.servicegroup_api = servicegroup.API(test=True) self._host = 'foo' self._binary = 'nova-fake' self._topic = 'unittest' self._ctx = context.get_admin_context() def test_memcached_driver(self): serv = self.useFixture( ServiceFixture(self._host, self._binary, self._topic)).serv serv.start() service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) hostkey = str("%s:%s" % (self._topic, self._host)) self.servicegroup_api._driver.mc.set(hostkey, timeutils.utcnow(), time=self.down_time) self.assertTrue(self.servicegroup_api.service_is_up(service_ref)) self.useFixture(test.TimeOverride()) timeutils.advance_time_seconds(self.down_time + 1) self.servicegroup_api._driver._report_state(serv) service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) self.assertTrue(self.servicegroup_api.service_is_up(service_ref)) serv.stop() timeutils.advance_time_seconds(self.down_time + 1) service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) self.assertFalse(self.servicegroup_api.service_is_up(service_ref)) def test_get_all(self): host1 = self._host + '_1' host2 = self._host + '_2' host3 = self._host + '_3' serv1 = self.useFixture( ServiceFixture(host1, self._binary, self._topic)).serv serv1.start() serv2 = self.useFixture( ServiceFixture(host2, self._binary, self._topic)).serv serv2.start() serv3 = self.useFixture( ServiceFixture(host3, self._binary, self._topic)).serv serv3.start() db.service_get_by_args(self._ctx, host1, self._binary) db.service_get_by_args(self._ctx, host2, self._binary) db.service_get_by_args(self._ctx, host3, self._binary) host1key = str("%s:%s" % (self._topic, host1)) host2key = str("%s:%s" % (self._topic, host2)) host3key = str("%s:%s" % (self._topic, host3)) self.servicegroup_api._driver.mc.set(host1key, timeutils.utcnow(), time=self.down_time) self.servicegroup_api._driver.mc.set(host2key, timeutils.utcnow(), time=self.down_time) self.servicegroup_api._driver.mc.set(host3key, timeutils.utcnow(), time=-1) services = self.servicegroup_api.get_all(self._topic) self.assertIn(host1, services) self.assertIn(host2, services) self.assertNotIn(host3, services) service_id = self.servicegroup_api.get_one(self._topic) self.assertIn(service_id, services) def test_service_is_up(self): serv = self.useFixture( ServiceFixture(self._host, self._binary, self._topic)).serv serv.start() service_ref = db.service_get_by_args(self._ctx, self._host, self._binary) fake_now = 1000 down_time = 15 self.flags(service_down_time=down_time) self.mox.StubOutWithMock(timeutils, 'utcnow_ts') self.servicegroup_api = servicegroup.API() hostkey = str("%s:%s" % (self._topic, self._host)) # Up (equal) timeutils.utcnow_ts().AndReturn(fake_now) timeutils.utcnow_ts().AndReturn(fake_now + down_time - 1) self.mox.ReplayAll() self.servicegroup_api._driver.mc.set(hostkey, timeutils.utcnow(), time=down_time) result = self.servicegroup_api.service_is_up(service_ref) self.assertTrue(result) self.mox.ResetAll() # Up timeutils.utcnow_ts().AndReturn(fake_now) timeutils.utcnow_ts().AndReturn(fake_now + down_time - 2) self.mox.ReplayAll() self.servicegroup_api._driver.mc.set(hostkey, timeutils.utcnow(), time=down_time) result = self.servicegroup_api.service_is_up(service_ref) self.assertTrue(result) self.mox.ResetAll() # Down timeutils.utcnow_ts().AndReturn(fake_now) timeutils.utcnow_ts().AndReturn(fake_now + down_time) self.mox.ReplayAll() self.servicegroup_api._driver.mc.set(hostkey, timeutils.utcnow(), time=down_time) result = self.servicegroup_api.service_is_up(service_ref) self.assertFalse(result) self.mox.ResetAll() # Down timeutils.utcnow_ts().AndReturn(fake_now) timeutils.utcnow_ts().AndReturn(fake_now + down_time + 1) self.mox.ReplayAll() self.servicegroup_api._driver.mc.set(hostkey, timeutils.utcnow(), time=down_time) result = self.servicegroup_api.service_is_up(service_ref) self.assertFalse(result) self.mox.ResetAll() def test_report_state(self): serv = self.useFixture( ServiceFixture(self._host, self._binary, self._topic)).serv serv.start() db.service_get_by_args(self._ctx, self._host, self._binary) self.servicegroup_api = servicegroup.API() # updating model_disconnected serv.model_disconnected = True self.servicegroup_api._driver._report_state(serv) self.assertFalse(serv.model_disconnected) # handling exception serv.model_disconnected = True self.servicegroup_api._driver.mc = None self.servicegroup_api._driver._report_state(serv) self.assertTrue(serv.model_disconnected) delattr(serv, 'model_disconnected') self.servicegroup_api._driver.mc = None self.servicegroup_api._driver._report_state(serv) self.assertTrue(serv.model_disconnected) nova-2014.1/nova/tests/servicegroup/test_zk_driver.py0000664000175400017540000000505512323721477024151 0ustar jenkinsjenkins00000000000000# Copyright (c) AT&T 2012-2013 Yun Mao # Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test the ZooKeeper driver for servicegroup. You need to install ZooKeeper locally and related dependencies to run the test. It's unclear how to install python-zookeeper lib in venv so you might have to run the test without it. To set up in Ubuntu 12.04: $ sudo apt-get install zookeeper zookeeperd python-zookeeper $ sudo pip install evzookeeper $ nosetests nova.tests.servicegroup.test_zk_driver """ import eventlet from nova import servicegroup from nova import test class ZKServiceGroupTestCase(test.NoDBTestCase): def setUp(self): super(ZKServiceGroupTestCase, self).setUp() servicegroup.API._driver = None from nova.servicegroup.drivers import zk self.flags(servicegroup_driver='zk') self.flags(address='localhost:2181', group="zookeeper") try: zk.ZooKeeperDriver() except ImportError: self.skipTest("Unable to test due to lack of ZooKeeper") def test_join_leave(self): self.servicegroup_api = servicegroup.API() service_id = {'topic': 'unittest', 'host': 'serviceA'} self.servicegroup_api.join(service_id['host'], service_id['topic']) self.assertTrue(self.servicegroup_api.service_is_up(service_id)) self.servicegroup_api.leave(service_id['host'], service_id['topic']) # make sure zookeeper is updated and watcher is triggered eventlet.sleep(1) self.assertFalse(self.servicegroup_api.service_is_up(service_id)) def test_stop(self): self.servicegroup_api = servicegroup.API() service_id = {'topic': 'unittest', 'host': 'serviceA'} pulse = self.servicegroup_api.join(service_id['host'], service_id['topic'], None) self.assertTrue(self.servicegroup_api.service_is_up(service_id)) pulse.stop() eventlet.sleep(1) self.assertFalse(self.servicegroup_api.service_is_up(service_id)) nova-2014.1/nova/tests/servicegroup/__init__.py0000664000175400017540000000114712323721477022650 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/test_block_device.py0000664000175400017540000004716512323721477022056 0ustar jenkinsjenkins00000000000000# Copyright 2011 Isaku Yamahata # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests for Block Device utility functions. """ from nova import block_device from nova import exception from nova.objects import block_device as block_device_obj from nova import test from nova.tests import fake_block_device from nova.tests import matchers class BlockDeviceTestCase(test.NoDBTestCase): def test_properties(self): root_device0 = '/dev/sda' root_device1 = '/dev/sdb' mappings = [{'virtual': 'root', 'device': root_device0}] properties0 = {'mappings': mappings} properties1 = {'mappings': mappings, 'root_device_name': root_device1} self.assertIsNone(block_device.properties_root_device_name({})) self.assertEqual( block_device.properties_root_device_name(properties0), root_device0) self.assertEqual( block_device.properties_root_device_name(properties1), root_device1) def test_ephemeral(self): self.assertFalse(block_device.is_ephemeral('ephemeral')) self.assertTrue(block_device.is_ephemeral('ephemeral0')) self.assertTrue(block_device.is_ephemeral('ephemeral1')) self.assertTrue(block_device.is_ephemeral('ephemeral11')) self.assertFalse(block_device.is_ephemeral('root')) self.assertFalse(block_device.is_ephemeral('swap')) self.assertFalse(block_device.is_ephemeral('/dev/sda1')) self.assertEqual(block_device.ephemeral_num('ephemeral0'), 0) self.assertEqual(block_device.ephemeral_num('ephemeral1'), 1) self.assertEqual(block_device.ephemeral_num('ephemeral11'), 11) self.assertFalse(block_device.is_swap_or_ephemeral('ephemeral')) self.assertTrue(block_device.is_swap_or_ephemeral('ephemeral0')) self.assertTrue(block_device.is_swap_or_ephemeral('ephemeral1')) self.assertTrue(block_device.is_swap_or_ephemeral('swap')) self.assertFalse(block_device.is_swap_or_ephemeral('root')) self.assertFalse(block_device.is_swap_or_ephemeral('/dev/sda1')) def test_mappings_prepend_dev(self): mapping = [ {'virtual': 'ami', 'device': '/dev/sda'}, {'virtual': 'root', 'device': 'sda'}, {'virtual': 'ephemeral0', 'device': 'sdb'}, {'virtual': 'swap', 'device': 'sdc'}, {'virtual': 'ephemeral1', 'device': 'sdd'}, {'virtual': 'ephemeral2', 'device': 'sde'}] expected = [ {'virtual': 'ami', 'device': '/dev/sda'}, {'virtual': 'root', 'device': 'sda'}, {'virtual': 'ephemeral0', 'device': '/dev/sdb'}, {'virtual': 'swap', 'device': '/dev/sdc'}, {'virtual': 'ephemeral1', 'device': '/dev/sdd'}, {'virtual': 'ephemeral2', 'device': '/dev/sde'}] prepended = block_device.mappings_prepend_dev(mapping) self.assertEqual(prepended.sort(), expected.sort()) def test_strip_dev(self): self.assertEqual(block_device.strip_dev('/dev/sda'), 'sda') self.assertEqual(block_device.strip_dev('sda'), 'sda') def test_strip_prefix(self): self.assertEqual(block_device.strip_prefix('/dev/sda'), 'a') self.assertEqual(block_device.strip_prefix('a'), 'a') self.assertEqual(block_device.strip_prefix('xvda'), 'a') self.assertEqual(block_device.strip_prefix('vda'), 'a') def test_volume_in_mapping(self): swap = {'device_name': '/dev/sdb', 'swap_size': 1} ephemerals = [{'num': 0, 'virtual_name': 'ephemeral0', 'device_name': '/dev/sdc1', 'size': 1}, {'num': 2, 'virtual_name': 'ephemeral2', 'device_name': '/dev/sdd', 'size': 1}] block_device_mapping = [{'mount_device': '/dev/sde', 'device_path': 'fake_device'}, {'mount_device': '/dev/sdf', 'device_path': 'fake_device'}] block_device_info = { 'root_device_name': '/dev/sda', 'swap': swap, 'ephemerals': ephemerals, 'block_device_mapping': block_device_mapping} def _assert_volume_in_mapping(device_name, true_or_false): in_mapping = block_device.volume_in_mapping( device_name, block_device_info) self.assertEqual(in_mapping, true_or_false) _assert_volume_in_mapping('sda', False) _assert_volume_in_mapping('sdb', True) _assert_volume_in_mapping('sdc1', True) _assert_volume_in_mapping('sdd', True) _assert_volume_in_mapping('sde', True) _assert_volume_in_mapping('sdf', True) _assert_volume_in_mapping('sdg', False) _assert_volume_in_mapping('sdh1', False) def test_get_root_bdm(self): root_bdm = {'device_name': 'vda', 'boot_index': 0} bdms = [root_bdm, {'device_name': 'vdb', 'boot_index': 1}, {'device_name': 'vdc', 'boot_index': -1}, {'device_name': 'vdd'}] self.assertEqual(root_bdm, block_device.get_root_bdm(bdms)) self.assertEqual(root_bdm, block_device.get_root_bdm([bdms[0]])) self.assertIsNone(block_device.get_root_bdm(bdms[1:])) self.assertIsNone(block_device.get_root_bdm(bdms[2:])) self.assertIsNone(block_device.get_root_bdm(bdms[3:])) self.assertIsNone(block_device.get_root_bdm([])) class TestBlockDeviceDict(test.NoDBTestCase): def setUp(self): super(TestBlockDeviceDict, self).setUp() BDM = block_device.BlockDeviceDict self.api_mapping = [ {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdb1', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'guest_format': 'swap', 'boot_index': -1}, {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdc1', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'boot_index': -1}, {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda1', 'source_type': 'volume', 'destination_type': 'volume', 'uuid': 'fake-volume-id-1', 'boot_index': 0}, {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'source_type': 'snapshot', 'destination_type': 'volume', 'uuid': 'fake-snapshot-id-1', 'boot_index': -1}, {'id': 5, 'instance_uuid': 'fake-instance', 'no_device': True, 'device_name': '/dev/vdc'}, ] self.new_mapping = [ BDM({'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdb1', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'guest_format': 'swap', 'boot_index': -1}), BDM({'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdc1', 'source_type': 'blank', 'destination_type': 'local', 'delete_on_termination': True, 'boot_index': -1}), BDM({'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda1', 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'fake-volume-id-1', 'connection_info': "{'fake': 'connection_info'}", 'boot_index': 0}), BDM({'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'source_type': 'snapshot', 'destination_type': 'volume', 'connection_info': "{'fake': 'connection_info'}", 'snapshot_id': 'fake-snapshot-id-1', 'volume_id': 'fake-volume-id-2', 'boot_index': -1}), BDM({'id': 5, 'instance_uuid': 'fake-instance', 'no_device': True, 'device_name': '/dev/vdc'}), ] self.legacy_mapping = [ {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdb1', 'delete_on_termination': True, 'virtual_name': 'swap'}, {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdc1', 'delete_on_termination': True, 'virtual_name': 'ephemeral0'}, {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda1', 'volume_id': 'fake-volume-id-1', 'connection_info': "{'fake': 'connection_info'}"}, {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'connection_info': "{'fake': 'connection_info'}", 'snapshot_id': 'fake-snapshot-id-1', 'volume_id': 'fake-volume-id-2'}, {'id': 5, 'instance_uuid': 'fake-instance', 'no_device': True, 'device_name': '/dev/vdc'}, ] self.new_mapping_source_image = [ BDM({'id': 6, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda3', 'source_type': 'image', 'destination_type': 'volume', 'connection_info': "{'fake': 'connection_info'}", 'volume_id': 'fake-volume-id-3', 'boot_index': -1}), BDM({'id': 7, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda4', 'source_type': 'image', 'destination_type': 'local', 'connection_info': "{'fake': 'connection_info'}", 'image_id': 'fake-image-id-2', 'boot_index': -1}), ] self.legacy_mapping_source_image = [ {'id': 6, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda3', 'connection_info': "{'fake': 'connection_info'}", 'volume_id': 'fake-volume-id-3'}, ] def test_init(self): def fake_validate(obj, dct): pass self.stubs.Set(block_device.BlockDeviceDict, '_fields', set(['field1', 'field2'])) self.stubs.Set(block_device.BlockDeviceDict, '_db_only_fields', set(['db_field1', 'db_field2'])) self.stubs.Set(block_device.BlockDeviceDict, '_validate', fake_validate) # Make sure db fields are not picked up if they are not # in the original dict dev_dict = block_device.BlockDeviceDict({'field1': 'foo', 'field2': 'bar', 'db_field1': 'baz'}) self.assertIn('field1', dev_dict) self.assertIn('field2', dev_dict) self.assertIn('db_field1', dev_dict) self.assertFalse('db_field2'in dev_dict) # Make sure all expected fields are defaulted dev_dict = block_device.BlockDeviceDict({'field1': 'foo'}) self.assertIn('field1', dev_dict) self.assertIn('field2', dev_dict) self.assertIsNone(dev_dict['field2']) self.assertNotIn('db_field1', dev_dict) self.assertFalse('db_field2'in dev_dict) # Unless they are not meant to be dev_dict = block_device.BlockDeviceDict({'field1': 'foo'}, do_not_default=set(['field2'])) self.assertIn('field1', dev_dict) self.assertNotIn('field2', dev_dict) self.assertNotIn('db_field1', dev_dict) self.assertFalse('db_field2'in dev_dict) def test_validate(self): self.assertRaises(exception.InvalidBDMFormat, block_device.BlockDeviceDict, {'bogus_field': 'lame_val'}) lame_bdm = dict(self.new_mapping[2]) del lame_bdm['source_type'] self.assertRaises(exception.InvalidBDMFormat, block_device.BlockDeviceDict, lame_bdm) lame_bdm['no_device'] = True block_device.BlockDeviceDict(lame_bdm) lame_dev_bdm = dict(self.new_mapping[2]) lame_dev_bdm['device_name'] = "not a valid name" self.assertRaises(exception.InvalidBDMFormat, block_device.BlockDeviceDict, lame_dev_bdm) lame_dev_bdm['device_name'] = "" self.assertRaises(exception.InvalidBDMFormat, block_device.BlockDeviceDict, lame_dev_bdm) cool_volume_size_bdm = dict(self.new_mapping[2]) cool_volume_size_bdm['volume_size'] = '42' cool_volume_size_bdm = block_device.BlockDeviceDict( cool_volume_size_bdm) self.assertEqual(cool_volume_size_bdm['volume_size'], 42) lame_volume_size_bdm = dict(self.new_mapping[2]) lame_volume_size_bdm['volume_size'] = 'some_non_int_string' self.assertRaises(exception.InvalidBDMFormat, block_device.BlockDeviceDict, lame_volume_size_bdm) truthy_bdm = dict(self.new_mapping[2]) truthy_bdm['delete_on_termination'] = '1' truthy_bdm = block_device.BlockDeviceDict(truthy_bdm) self.assertEqual(truthy_bdm['delete_on_termination'], True) verbose_bdm = dict(self.new_mapping[2]) verbose_bdm['boot_index'] = 'first' self.assertRaises(exception.InvalidBDMFormat, block_device.BlockDeviceDict, verbose_bdm) def test_from_legacy(self): for legacy, new in zip(self.legacy_mapping, self.new_mapping): self.assertThat( block_device.BlockDeviceDict.from_legacy(legacy), matchers.IsSubDictOf(new)) def test_from_legacy_mapping(self): def _get_image_bdms(bdms): return [bdm for bdm in bdms if bdm['source_type'] == 'image'] def _get_bootable_bdms(bdms): return [bdm for bdm in bdms if bdm['boot_index'] >= 0] new_no_img = block_device.from_legacy_mapping(self.legacy_mapping) self.assertEqual(len(_get_image_bdms(new_no_img)), 0) for new, expected in zip(new_no_img, self.new_mapping): self.assertThat(new, matchers.IsSubDictOf(expected)) new_with_img = block_device.from_legacy_mapping( self.legacy_mapping, 'fake_image_ref') image_bdms = _get_image_bdms(new_with_img) boot_bdms = _get_bootable_bdms(new_with_img) self.assertEqual(len(image_bdms), 1) self.assertEqual(len(boot_bdms), 1) self.assertEqual(image_bdms[0]['boot_index'], 0) self.assertEqual(boot_bdms[0]['source_type'], 'image') new_with_img_and_root = block_device.from_legacy_mapping( self.legacy_mapping, 'fake_image_ref', 'sda1') image_bdms = _get_image_bdms(new_with_img_and_root) boot_bdms = _get_bootable_bdms(new_with_img_and_root) self.assertEqual(len(image_bdms), 0) self.assertEqual(len(boot_bdms), 1) self.assertEqual(boot_bdms[0]['boot_index'], 0) self.assertEqual(boot_bdms[0]['source_type'], 'volume') new_no_root = block_device.from_legacy_mapping( self.legacy_mapping, 'fake_image_ref', 'sda1', no_root=True) self.assertEqual(len(_get_image_bdms(new_no_root)), 0) self.assertEqual(len(_get_bootable_bdms(new_no_root)), 0) def test_from_api(self): for api, new in zip(self.api_mapping, self.new_mapping): new['connection_info'] = None if new['snapshot_id']: new['volume_id'] = None self.assertThat( block_device.BlockDeviceDict.from_api(api), matchers.IsSubDictOf(new)) def test_legacy(self): for legacy, new in zip(self.legacy_mapping, self.new_mapping): self.assertThat( legacy, matchers.IsSubDictOf(new.legacy())) def test_legacy_mapping(self): got_legacy = block_device.legacy_mapping(self.new_mapping) for legacy, expected in zip(got_legacy, self.legacy_mapping): self.assertThat(expected, matchers.IsSubDictOf(legacy)) def test_legacy_source_image(self): for legacy, new in zip(self.legacy_mapping_source_image, self.new_mapping_source_image): if new['destination_type'] == 'volume': self.assertThat(legacy, matchers.IsSubDictOf(new.legacy())) else: self.assertRaises(exception.InvalidBDMForLegacy, new.legacy) def test_legacy_mapping_source_image(self): got_legacy = block_device.legacy_mapping(self.new_mapping) for legacy, expected in zip(got_legacy, self.legacy_mapping): self.assertThat(expected, matchers.IsSubDictOf(legacy)) def test_legacy_mapping_from_object_list(self): bdm1 = block_device_obj.BlockDeviceMapping() bdm1 = block_device_obj.BlockDeviceMapping._from_db_object( None, bdm1, fake_block_device.FakeDbBlockDeviceDict( self.new_mapping[0])) bdm2 = block_device_obj.BlockDeviceMapping() bdm2 = block_device_obj.BlockDeviceMapping._from_db_object( None, bdm2, fake_block_device.FakeDbBlockDeviceDict( self.new_mapping[1])) bdmlist = block_device_obj.BlockDeviceMappingList() bdmlist.objects = [bdm1, bdm2] block_device.legacy_mapping(bdmlist) def test_image_mapping(self): removed_fields = ['id', 'instance_uuid', 'connection_info', 'device_name', 'created_at', 'updated_at', 'deleted_at', 'deleted'] for bdm in self.new_mapping: mapping_bdm = fake_block_device.FakeDbBlockDeviceDict( bdm).get_image_mapping() for fld in removed_fields: self.assertTrue(fld not in mapping_bdm) def _test_snapshot_from_bdm(self, template): snapshot = block_device.snapshot_from_bdm('new-snapshot-id', template) self.assertEqual(snapshot['snapshot_id'], 'new-snapshot-id') self.assertEqual(snapshot['source_type'], 'snapshot') self.assertEqual(snapshot['destination_type'], 'volume') for key in ['disk_bus', 'device_type', 'boot_index']: self.assertEqual(snapshot[key], template[key]) def test_snapshot_from_bdm(self): for bdm in self.new_mapping: self._test_snapshot_from_bdm(bdm) def test_snapshot_from_object(self): for bdm in self.new_mapping[:-1]: obj = block_device_obj.BlockDeviceMapping() obj = block_device_obj.BlockDeviceMapping._from_db_object( None, obj, fake_block_device.FakeDbBlockDeviceDict( bdm)) self._test_snapshot_from_bdm(obj) nova-2014.1/nova/tests/test_weights.py0000664000175400017540000000356612323721477021114 0ustar jenkinsjenkins00000000000000# Copyright 2011-2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests For weights. """ from nova import test from nova import weights class TestWeigher(test.NoDBTestCase): def test_no_multiplier(self): class FakeWeigher(weights.BaseWeigher): def _weigh_object(self, *args, **kwargs): pass self.assertEqual(1.0, FakeWeigher().weight_multiplier()) def test_no_weight_object(self): class FakeWeigher(weights.BaseWeigher): def weight_multiplier(self, *args, **kwargs): pass self.assertRaises(TypeError, FakeWeigher) def test_normalization(self): # weight_list, expected_result, minval, maxval map_ = ( ((), (), None, None), ((0.0, 0.0), (0.0, 0.0), None, None), ((1.0, 1.0), (0.0, 0.0), None, None), ((20.0, 50.0), (0.0, 1.0), None, None), ((20.0, 50.0), (0.0, 0.375), None, 100.0), ((20.0, 50.0), (0.4, 1.0), 0.0, None), ((20.0, 50.0), (0.2, 0.5), 0.0, 100.0), ) normalize_to = (1.0, 10.0) for seq, result, minval, maxval in map_: ret = weights.normalize(seq, minval=minval, maxval=maxval) self.assertEqual(tuple(ret), result) nova-2014.1/nova/tests/console/0000775000175400017540000000000012323722546017457 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/console/test_rpcapi.py0000664000175400017540000000542712323721477022360 0ustar jenkinsjenkins00000000000000# 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. """ Unit Tests for nova.console.rpcapi """ import contextlib import mock from oslo.config import cfg from nova.console import rpcapi as console_rpcapi from nova import context from nova import test CONF = cfg.CONF class ConsoleRpcAPITestCase(test.NoDBTestCase): def _test_console_api(self, method, rpc_method, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = console_rpcapi.ConsoleAPI() self.assertIsNotNone(rpcapi.client) self.assertEqual(rpcapi.client.target.topic, CONF.console_topic) orig_prepare = rpcapi.client.prepare expected_version = kwargs.pop('version', rpcapi.client.target.version) with contextlib.nested( mock.patch.object(rpcapi.client, rpc_method), mock.patch.object(rpcapi.client, 'prepare'), mock.patch.object(rpcapi.client, 'can_send_version'), ) as ( rpc_mock, prepare_mock, csv_mock ): prepare_mock.return_value = rpcapi.client rpc_mock.return_value = 'foo' if rpc_method == 'call' else None csv_mock.side_effect = ( lambda v: orig_prepare(version=v).can_send_version()) retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, rpc_mock.return_value) prepare_mock.assert_called_once_with(version=expected_version) rpc_mock.assert_called_once_with(ctxt, method, **kwargs) def test_add_console(self): self._test_console_api('add_console', instance_id='i', rpc_method='cast') # NOTE(russellb) Havana compat self.flags(console='havana', group='upgrade_levels') self._test_console_api('add_console', instance_id='i', rpc_method='cast', version='1.0') def test_remove_console(self): self._test_console_api('remove_console', console_id='i', rpc_method='cast') # NOTE(russellb) Havana compat self.flags(console='havana', group='upgrade_levels') self._test_console_api('remove_console', console_id='i', rpc_method='cast', version='1.0') nova-2014.1/nova/tests/console/test_console.py0000664000175400017540000001701112323721477022534 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 OpenStack Foundation # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests For Console proxy.""" from oslo.config import cfg from nova.compute import rpcapi as compute_rpcapi from nova.console import api as console_api from nova.console import rpcapi as console_rpcapi from nova import context from nova import db from nova import exception from nova.openstack.common import importutils from nova import test CONF = cfg.CONF CONF.import_opt('console_manager', 'nova.service') CONF.import_opt('console_driver', 'nova.console.manager') class ConsoleTestCase(test.TestCase): """Test case for console proxy manager.""" def setUp(self): super(ConsoleTestCase, self).setUp() self.flags(console_driver='nova.console.fake.FakeConsoleProxy', stub_compute=True) self.console = importutils.import_object(CONF.console_manager) self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.host = 'test_compute_host' def _create_instance(self): """Create a test instance.""" inst = {} #inst['host'] = self.host #inst['name'] = 'instance-1234' inst['image_id'] = 1 inst['reservation_id'] = 'r-fakeres' inst['user_id'] = self.user_id inst['project_id'] = self.project_id inst['instance_type_id'] = 1 inst['ami_launch_index'] = 0 return db.instance_create(self.context, inst) def test_get_pool_for_instance_host(self): pool = self.console._get_pool_for_instance_host(self.context, self.host) self.assertEqual(pool['compute_host'], self.host) def test_get_pool_creates_new_pool_if_needed(self): self.assertRaises(exception.NotFound, db.console_pool_get_by_host_type, self.context, self.host, self.console.host, self.console.driver.console_type) pool = self.console._get_pool_for_instance_host(self.context, self.host) pool2 = db.console_pool_get_by_host_type(self.context, self.host, self.console.host, self.console.driver.console_type) self.assertEqual(pool['id'], pool2['id']) def test_get_pool_does_not_create_new_pool_if_exists(self): pool_info = {'address': '127.0.0.1', 'username': 'test', 'password': '1234pass', 'host': self.console.host, 'console_type': self.console.driver.console_type, 'compute_host': 'sometesthostname'} new_pool = db.console_pool_create(self.context, pool_info) pool = self.console._get_pool_for_instance_host(self.context, 'sometesthostname') self.assertEqual(pool['id'], new_pool['id']) def test_add_console(self): instance = self._create_instance() self.console.add_console(self.context, instance['id']) instance = db.instance_get(self.context, instance['id']) pool = db.console_pool_get_by_host_type(self.context, instance['host'], self.console.host, self.console.driver.console_type) console_instances = [con['instance_uuid'] for con in pool['consoles']] self.assertIn(instance['uuid'], console_instances) db.instance_destroy(self.context, instance['uuid']) def test_add_console_does_not_duplicate(self): instance = self._create_instance() cons1 = self.console.add_console(self.context, instance['id']) cons2 = self.console.add_console(self.context, instance['id']) self.assertEqual(cons1, cons2) db.instance_destroy(self.context, instance['uuid']) def test_remove_console(self): instance = self._create_instance() console_id = self.console.add_console(self.context, instance['id']) self.console.remove_console(self.context, console_id) self.assertRaises(exception.NotFound, db.console_get, self.context, console_id) db.instance_destroy(self.context, instance['uuid']) class ConsoleAPITestCase(test.TestCase): """Test case for console API.""" def setUp(self): super(ConsoleAPITestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.console_api = console_api.API() self.fake_uuid = '00000000-aaaa-bbbb-cccc-000000000000' self.fake_instance = { 'id': 1, 'uuid': self.fake_uuid, 'host': 'fake_host' } self.fake_console = { 'pool': {'host': 'fake_host'}, 'id': 'fake_id' } def _fake_db_console_get(_ctxt, _console_uuid, _instance_uuid): return self.fake_console self.stubs.Set(db, 'console_get', _fake_db_console_get) def _fake_db_console_get_all_by_instance(_ctxt, _instance_uuid, columns_to_join): return [self.fake_console] self.stubs.Set(db, 'console_get_all_by_instance', _fake_db_console_get_all_by_instance) def _fake_instance_get_by_uuid(_ctxt, _instance_uuid): return self.fake_instance self.stubs.Set(db, 'instance_get_by_uuid', _fake_instance_get_by_uuid) def test_get_consoles(self): console = self.console_api.get_consoles(self.context, self.fake_uuid) self.assertEqual(console, [self.fake_console]) def test_get_console(self): console = self.console_api.get_console(self.context, self.fake_uuid, 'fake_id') self.assertEqual(console, self.fake_console) def test_delete_console(self): self.mox.StubOutWithMock(console_rpcapi.ConsoleAPI, 'remove_console') console_rpcapi.ConsoleAPI.remove_console(self.context, 'fake_id') self.mox.ReplayAll() self.console_api.delete_console(self.context, self.fake_uuid, 'fake_id') def test_create_console(self): self.mox.StubOutWithMock(compute_rpcapi.ComputeAPI, 'get_console_topic') compute_rpcapi.ComputeAPI.get_console_topic( self.context, 'fake_host').AndReturn('compute.fake_host') self.mox.StubOutClassWithMocks(console_rpcapi, 'ConsoleAPI') console_api_mock = console_rpcapi.ConsoleAPI( topic='compute', server='fake_host') console_api_mock.add_console(self.context, self.fake_instance['id']) self.mox.ReplayAll() self.console_api.create_console(self.context, self.fake_uuid) nova-2014.1/nova/tests/console/__init__.py0000664000175400017540000000117312323721477021574 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. nova-2014.1/nova/tests/test_safeutils.py0000664000175400017540000000752412323721477021437 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import safe_utils from nova import test class GetCallArgsTestCase(test.NoDBTestCase): def _test_func(self, instance, red=None, blue=None): pass def test_all_kwargs(self): args = () kwargs = {'instance': {'uuid': 1}, 'red': 3, 'blue': 4} callargs = safe_utils.getcallargs(self._test_func, *args, **kwargs) #implicit self counts as an arg self.assertEqual(4, len(callargs)) self.assertIn('instance', callargs) self.assertEqual({'uuid': 1}, callargs['instance']) self.assertIn('red', callargs) self.assertEqual(3, callargs['red']) self.assertIn('blue', callargs) self.assertEqual(4, callargs['blue']) def test_all_args(self): args = ({'uuid': 1}, 3, 4) kwargs = {} callargs = safe_utils.getcallargs(self._test_func, *args, **kwargs) #implicit self counts as an arg self.assertEqual(4, len(callargs)) self.assertIn('instance', callargs) self.assertEqual({'uuid': 1}, callargs['instance']) self.assertIn('red', callargs) self.assertEqual(3, callargs['red']) self.assertIn('blue', callargs) self.assertEqual(4, callargs['blue']) def test_mixed_args(self): args = ({'uuid': 1}, 3) kwargs = {'blue': 4} callargs = safe_utils.getcallargs(self._test_func, *args, **kwargs) #implicit self counts as an arg self.assertEqual(4, len(callargs)) self.assertIn('instance', callargs) self.assertEqual({'uuid': 1}, callargs['instance']) self.assertIn('red', callargs) self.assertEqual(3, callargs['red']) self.assertIn('blue', callargs) self.assertEqual(4, callargs['blue']) def test_partial_kwargs(self): args = () kwargs = {'instance': {'uuid': 1}, 'red': 3} callargs = safe_utils.getcallargs(self._test_func, *args, **kwargs) #implicit self counts as an arg self.assertEqual(4, len(callargs)) self.assertIn('instance', callargs) self.assertEqual({'uuid': 1}, callargs['instance']) self.assertIn('red', callargs) self.assertEqual(3, callargs['red']) self.assertIn('blue', callargs) self.assertIsNone(callargs['blue']) def test_partial_args(self): args = ({'uuid': 1}, 3) kwargs = {} callargs = safe_utils.getcallargs(self._test_func, *args, **kwargs) #implicit self counts as an arg self.assertEqual(4, len(callargs)) self.assertIn('instance', callargs) self.assertEqual({'uuid': 1}, callargs['instance']) self.assertIn('red', callargs) self.assertEqual(3, callargs['red']) self.assertIn('blue', callargs) self.assertIsNone(callargs['blue']) def test_partial_mixed_args(self): args = (3,) kwargs = {'instance': {'uuid': 1}} callargs = safe_utils.getcallargs(self._test_func, *args, **kwargs) self.assertEqual(4, len(callargs)) self.assertIn('instance', callargs) self.assertEqual({'uuid': 1}, callargs['instance']) self.assertIn('red', callargs) self.assertEqual(3, callargs['red']) self.assertIn('blue', callargs) self.assertIsNone(callargs['blue']) nova-2014.1/nova/tests/test_hooks.py0000664000175400017540000000665412323721477020566 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Tests for hook customization.""" import stevedore from nova import hooks from nova import test class SampleHookA(object): name = "a" def _add_called(self, op, kwargs): called = kwargs.get('called', None) if called is not None: called.append(op + self.name) def pre(self, *args, **kwargs): self._add_called("pre", kwargs) class SampleHookB(SampleHookA): name = "b" def post(self, rv, *args, **kwargs): self._add_called("post", kwargs) class SampleHookC(SampleHookA): name = "c" def pre(self, f, *args, **kwargs): self._add_called("pre" + f.__name__, kwargs) def post(self, f, rv, *args, **kwargs): self._add_called("post" + f.__name__, kwargs) class MockEntryPoint(object): def __init__(self, cls): self.cls = cls def load(self): return self.cls class HookTestCase(test.NoDBTestCase): def _mock_load_plugins(self, iload, *iargs, **ikwargs): return [ stevedore.extension.Extension('test_hook', MockEntryPoint(SampleHookA), SampleHookA, SampleHookA()), stevedore.extension.Extension('test_hook', MockEntryPoint(SampleHookB), SampleHookB, SampleHookB()), ] def setUp(self): super(HookTestCase, self).setUp() hooks.reset() self.stubs.Set(stevedore.extension.ExtensionManager, '_load_plugins', self._mock_load_plugins) @hooks.add_hook('test_hook') def _hooked(self, a, b=1, c=2, called=None): return 42 def test_basic(self): self.assertEqual(42, self._hooked(1)) mgr = hooks._HOOKS['test_hook'] self.assertEqual(2, len(mgr.extensions)) self.assertEqual(SampleHookA, mgr.extensions[0].plugin) self.assertEqual(SampleHookB, mgr.extensions[1].plugin) def test_order_of_execution(self): called_order = [] self._hooked(42, called=called_order) self.assertEqual(['prea', 'preb', 'postb'], called_order) class HookTestCaseWithFunction(HookTestCase): def _mock_load_plugins(self, iload, *iargs, **ikwargs): return [ stevedore.extension.Extension('function_hook', MockEntryPoint(SampleHookC), SampleHookC, SampleHookC()), ] @hooks.add_hook('function_hook', pass_function=True) def _hooked(self, a, b=1, c=2, called=None): return 42 def test_basic(self): self.assertEqual(42, self._hooked(1)) mgr = hooks._HOOKS['function_hook'] self.assertEqual(1, len(mgr.extensions)) self.assertEqual(SampleHookC, mgr.extensions[0].plugin) def test_order_of_execution(self): called_order = [] self._hooked(42, called=called_order) self.assertEqual(['pre_hookedc', 'post_hookedc'], called_order) nova-2014.1/nova/tests/ssl_cert/0000775000175400017540000000000012323722546017633 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/ssl_cert/privatekey.key0000664000175400017540000000625312323721477022540 0ustar jenkinsjenkins00000000000000-----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEA16VJEDeqbmr6PoM96NSuJK1XT5dZuzYzSQ8g//mR9BBjXBDe 4moNajxOybI6hjzWbECtXTKF20s/jkovarzXiZwXH8FMeakwLcMgG/QMRpMLjGny FPpVm7HJaPnTxrI2tNcsG10wmWxd9oqp6TjGIX8VlHaEGIgZIccYVvXjDyi0vypD /P28flWmtlyYgHm6pHfZ65LAAAXhnPZpWn2ARJogoT3SRD8PtXjwOEFavWj3qQ7K gCrRjfCS6ZqAtwXcUEE228C90PH01yuLQjVGlZOAGw8vzHBaustKHEKATyY4oTmN +Zlhvzi7XCPfcjzqVhp6bP+Whv+uAwydg+uxZ2o+oCh1fuk1xTvCmcZZ8bYLYmQy QWZJ3kwbfQK0jr/pejQbLpkc9IhCeKOB9Utk0jJ6awL1+1pxrXOl4vYF2oWHAxxH pcMGM6gIkwb+ocUqeDGdnTV2viszorQu2W1dqrINGrtMI3xP6EkNzb7L1K/Jzpn7 rSU7x0QMGwtb+Bv7bgLDuztMNtLtgd7vqRtOpufq5xKqfqwfYZrpEWE34BBUUbFS L6RZf3MLz1ykXF9N1CDMfpS6/Rbfnqe2KKAYWN8GNpMAsQ+JUWDZm8LAiFcsGbeN H/+GnffE5Ln0fTYbH8nMRnqm65kzBZWfE05Zj/NoqIXpCgjr6MhLkyFi9vsCAwEA AQKCAgAA96baQcWr9SLmQOR4NOwLEhQAMWefpWCZhU3amB4FgEVR1mmJjnw868RW t0v36jH0Dl44us9K6o2Ab+jCi9JTtbWM2Osk6JNkwSlVtsSPVH2KxbbmTTExH50N sYE3tPj12rlB7isXpRrOzlRwzWZmJBHOtrFlAsdKFYCQc03vdXlKGkBv1BuSXYP/ 8W5ltSYXMspxehkOZvhaIejbFREMPbzDvGlDER1a7Q320qQ7kUr7ISvbY1XJUzj1 f1HwgEA6w/AhED5Jv6wfgvx+8Yo9hYnflTPbsO1XRS4x7kJxGHTMlFuEsSF1ICYH Bcos0wUiGcBO2N6uAFuhe98BBn+nOwAPZYWwGkmVuK2psm2mXAHx94GT/XqgK/1r VWGSoOV7Fhjauc2Nv8/vJU18DXT3OY5hc4iXVeEBkuZwRb/NVUtnFoHxVO/Mp5Fh /W5KZaLWVrLghzvSQ/KUIM0k4lfKDZpY9ZpOdNgWDyZY8tNrXumUZZimzWdXZ9vR dBssmd8qEKs1AHGFnMDt56IjLGou6j0qnWsLdR1e/WEFsYzGXLVHCv6vXRNkbjqh WFw5nA+2Dw1YAsy+YkTfgx2pOe+exM/wxsVPa7tG9oZ374dywUi1k6VoHw5dkmJw 1hbXqSLZtx2N51G+SpGmNAV4vLUF0y3dy2wnrzFkFT4uxh1w8QKCAQEA+h6LwHTK hgcJx6CQQ6zYRqXo4wdvMooY1FcqJOq7LvJUA2CX5OOLs8qN1TyFrOCuAUTurOrM ABlQ0FpsIaP8TOGz72dHe2eLB+dD6Bqjn10sEFMn54zWd/w9ympQrO9jb5X3ViTh sCcdYyXVS9Hz8nzbbIF+DaKlxF2Hh71uRDxXpMPxRcGbOIuKZXUj6RkTIulzqT6o uawlegWxch05QSgzq/1ASxtjTzo4iuDCAii3N45xqxnB+fV9NXEt4R2oOGquBRPJ LxKcOnaQKBD0YNX4muTq+zPlv/kOb8/ys2WGWDUrNkpyJXqhTve4KONjqM7+iL/U 4WdJuiCjonzk/QKCAQEA3Lc+kNq35FNLxMcnCVcUgkmiCWZ4dyGZZPdqjOPww1+n bbudGPzY1nxOvE60dZM4or/tm6qlXYfb2UU3+OOJrK9s297EQybZ8DTZu2GHyitc NSFV3Gl4cgvKdbieGKkk9X2dV9xSNesNvX9lJEnQxuwHDTeo8ubLHtV88Ml1xokn 7W+IFiyEuUIL4e5/fadbrI3EwMrbCF4+9VcfABx4PTNMzdc8LsncCMXE+jFX8AWp TsT2JezTe5o2WpvBoKMAYhJQNQiaWATn00pDVY/70H1vK3ljomAa1IUdOr/AhAF7 3jL0MYMgXSHzXZOKAtc7yf+QfFWF1Ls8+sen1clJVwKCAQEAp59rB0r+Iz56RmgL 5t7ifs5XujbURemY5E2aN+18DuVmenD0uvfoO1DnJt4NtCNLWhxpXEdq+jH9H/VJ fG4a+ydT4IC1vjVRTrWlo9qeh4H4suQX3S1c2kKY4pvHf25blH/Lp9bFzbkZD8Ze IRcOxxb4MsrBwL+dGnGYD9dbG63ZCtoqSxaKQSX7VS1hKKmeUopj8ivFBdIht5oz JogBQ/J+Vqg9u1gagRFCrYgdXTcOOtRix0lW336vL+6u0ax/fXe5MjvlW3+8Zc3p pIBgVrlvh9ccx8crFTIDg9m4DJRgqaLQV+0ifI2np3WK3RQvSQWYPetZ7sm69ltD bvUGvQKCAQAz5CEhjUqOs8asjOXwnDiGKSmfbCgGWi/mPQUf+rcwN9z1P5a/uTKB utgIDbj/q401Nkp2vrgCNV7KxitSqKxFnTjKuKUL5KZ4gvRtyZBTR751/1BgcauP pJYE91K0GZBG5zGG5pWtd4XTd5Af5/rdycAeq2ddNEWtCiRFuBeohbaNbBtimzTZ GV4R0DDJKf+zoeEQMqEsZnwG0mTHceoS+WylOGU92teQeG7HI7K5C5uymTwFzpgq ByegRd5QFgKRDB0vWsZuyzh1xI/wHdnmOpdYcUGre0zTijhFB7ALWQ32P6SJv3ps av78kSNxZ4j3BM7DbJf6W8sKasZazOghAoIBAHekpBcLq9gRv2+NfLYxWN2sTZVB 1ldwioG7rWvk5YQR2akukecI3NRjtC5gG2vverawG852Y4+oLfgRMHxgp0qNStwX juTykzPkCwZn8AyR+avC3mkrtJyM3IigcYOu4/UoaRDFa0xvCC1EfumpnKXIpHag miSQZf2sVbgqb3/LWvHIg/ceOP9oGJve87/HVfQtBoLaIe5RXCWkqB7mcI/exvTS 8ShaW6v2Fe5Bzdvawj7sbsVYRWe93Aq2tmIgSX320D2RVepb6mjD4nr0IUaM3Yed TFT7e2ikWXyDLLgVkDTU4Qe8fr3ZKGfanCIDzvgNw6H1gRi+2WQgOmjilMQ= -----END RSA PRIVATE KEY----- nova-2014.1/nova/tests/ssl_cert/certificate.crt0000664000175400017540000000350212323721477022631 0ustar jenkinsjenkins00000000000000-----BEGIN CERTIFICATE----- MIIFLjCCAxYCAQEwDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCQVUxEzARBgNV BAgTClNvbWUtU3RhdGUxFTATBgNVBAoTDE9wZW5zdGFjayBDQTESMBAGA1UECxMJ R2xhbmNlIENBMRIwEAYDVQQDEwlHbGFuY2UgQ0EwHhcNMTIwMjA5MTcxMDUzWhcN MjIwMjA2MTcxMDUzWjBZMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0 ZTESMBAGA1UEChMJT3BlbnN0YWNrMQ8wDQYDVQQLEwZHbGFuY2UxEDAOBgNVBAMT BzAuMC4wLjAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXpUkQN6pu avo+gz3o1K4krVdPl1m7NjNJDyD/+ZH0EGNcEN7iag1qPE7JsjqGPNZsQK1dMoXb Sz+OSi9qvNeJnBcfwUx5qTAtwyAb9AxGkwuMafIU+lWbsclo+dPGsja01ywbXTCZ bF32iqnpOMYhfxWUdoQYiBkhxxhW9eMPKLS/KkP8/bx+Vaa2XJiAebqkd9nrksAA BeGc9mlafYBEmiChPdJEPw+1ePA4QVq9aPepDsqAKtGN8JLpmoC3BdxQQTbbwL3Q 8fTXK4tCNUaVk4AbDy/McFq6y0ocQoBPJjihOY35mWG/OLtcI99yPOpWGnps/5aG /64DDJ2D67Fnaj6gKHV+6TXFO8KZxlnxtgtiZDJBZkneTBt9ArSOv+l6NBsumRz0 iEJ4o4H1S2TSMnprAvX7WnGtc6Xi9gXahYcDHEelwwYzqAiTBv6hxSp4MZ2dNXa+ KzOitC7ZbV2qsg0au0wjfE/oSQ3NvsvUr8nOmfutJTvHRAwbC1v4G/tuAsO7O0w2 0u2B3u+pG06m5+rnEqp+rB9hmukRYTfgEFRRsVIvpFl/cwvPXKRcX03UIMx+lLr9 Ft+ep7YooBhY3wY2kwCxD4lRYNmbwsCIVywZt40f/4ad98TkufR9NhsfycxGeqbr mTMFlZ8TTlmP82iohekKCOvoyEuTIWL2+wIDAQABMA0GCSqGSIb3DQEBBQUAA4IC AQBMUBgV0R+Qltf4Du7u/8IFmGAoKR/mktB7R1gRRAqsvecUt7kIwBexGdavGg1y 0pU0+lgUZjJ20N1SlPD8gkNHfXE1fL6fmMjWz4dtYJjzRVhpufHPeBW4tl8DgHPN rBGAYQ+drDSXaEjiPQifuzKx8WS+DGA3ki4co5mPjVnVH1xvLIdFsk89z3b3YD1k yCJ/a9K36x6Z/c67JK7s6MWtrdRF9+MVnRKJ2PK4xznd1kBz16V+RA466wBDdARY vFbtkafbEqOb96QTonIZB7+fAldKDPZYnwPqasreLmaGOaM8sxtlPYAJ5bjDONbc AaXG8BMRQyO4FyH237otDKlxPyHOFV66BaffF5S8OlwIMiZoIvq+IcTZOdtDUSW2 KHNLfe5QEDZdKjWCBrfqAfvNuG13m03WqfmcMHl3o/KiPJlx8l9Z4QEzZ9xcyQGL cncgeHM9wJtzi2cD/rTDNFsx/gxvoyutRmno7I3NRbKmpsXF4StZioU3USRspB07 hYXOVnG3pS+PjVby7ThT3gvFHSocguOsxClx1epdUJAmJUbmM7NmOp5WVBVtMtC2 Su4NG/xJciXitKzw+btb7C7RjO6OEqv/1X/oBDzKBWQAwxUC+lqmnM7W6oqWJFEM YfTLnrjs7Hj6ThMGcEnfvc46dWK3dz0RjsQzUxugPuEkLA== -----END CERTIFICATE----- nova-2014.1/nova/tests/ssl_cert/ca.crt0000664000175400017540000000415712323721477020741 0ustar jenkinsjenkins00000000000000-----BEGIN CERTIFICATE----- MIIGDDCCA/SgAwIBAgIJAPSvwQYk4qI4MA0GCSqGSIb3DQEBBQUAMGExCzAJBgNV BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRUwEwYDVQQKEwxPcGVuc3RhY2sg Q0ExEjAQBgNVBAsTCUdsYW5jZSBDQTESMBAGA1UEAxMJR2xhbmNlIENBMB4XDTEy MDIwOTE3MTAwMloXDTIyMDIwNjE3MTAwMlowYTELMAkGA1UEBhMCQVUxEzARBgNV BAgTClNvbWUtU3RhdGUxFTATBgNVBAoTDE9wZW5zdGFjayBDQTESMBAGA1UECxMJ R2xhbmNlIENBMRIwEAYDVQQDEwlHbGFuY2UgQ0EwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDmf+fapWfzy1Uylus0KGalw4X/5xZ+ltPVOr+IdCPbstvi RTC5g+O+TvXeOP32V/cnSY4ho/+f2q730za+ZA/cgWO252rcm3Q7KTJn3PoqzJvX /l3EXe3/TCrbzgZ7lW3QLTCTEE2eEzwYG3wfDTOyoBq+F6ct6ADh+86gmpbIRfYI N+ixB0hVyz9427PTof97fL7qxxkjAayB28OfwHrkEBl7iblNhUC0RoH+/H9r5GEl GnWiebxfNrONEHug6PHgiaGq7/Dj+u9bwr7J3/NoS84I08ajMnhlPZxZ8bS/O8If ceWGZv7clPozyhABT/otDfgVcNH1UdZ4zLlQwc1MuPYN7CwxrElxc8Quf94ttGjb tfGTl4RTXkDofYdG1qBWW962PsGl2tWmbYDXV0q5JhV/IwbrE1X9f+OksJQne1/+ dZDxMhdf2Q1V0P9hZZICu4+YhmTMs5Mc9myKVnzp4NYdX5fXoB/uNYph+G7xG5IK WLSODKhr1wFGTTcuaa8LhOH5UREVenGDJuc6DdgX9a9PzyJGIi2ngQ03TJIkCiU/ 4J/r/vsm81ezDiYZSp2j5JbME+ixW0GBLTUWpOIxUSHgUFwH5f7lQwbXWBOgwXQk BwpZTmdQx09MfalhBtWeu4/6BnOCOj7e/4+4J0eVxXST0AmVyv8YjJ2nz1F9oQID AQABo4HGMIHDMB0GA1UdDgQWBBTk7Krj4bEsTjHXaWEtI2GZ5ACQyTCBkwYDVR0j BIGLMIGIgBTk7Krj4bEsTjHXaWEtI2GZ5ACQyaFlpGMwYTELMAkGA1UEBhMCQVUx EzARBgNVBAgTClNvbWUtU3RhdGUxFTATBgNVBAoTDE9wZW5zdGFjayBDQTESMBAG A1UECxMJR2xhbmNlIENBMRIwEAYDVQQDEwlHbGFuY2UgQ0GCCQD0r8EGJOKiODAM BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQA8Zrss/MiwFHGmDlercE0h UvzA54n/EvKP9nP3jHM2qW/VPfKdnFw99nEPFLhb+lN553vdjOpCYFm+sW0Z5Mi4 qsFkk4AmXIIEFOPt6zKxMioLYDQ9Sw/BUv6EZGeANWr/bhmaE+dMcKJt5le/0jJm 2ahsVB9fbFu9jBFeYb7Ba/x2aLkEGMxaDLla+6EQhj148fTnS1wjmX9G2cNzJvj/ +C2EfKJIuDJDqw2oS2FGVpP37FA2Bz2vga0QatNneLkGKCFI3ZTenBznoN+fmurX TL3eJE4IFNrANCcdfMpdyLAtXz4KpjcehqpZMu70er3d30zbi1l0Ajz4dU+WKz/a NQES+vMkT2wqjXHVTjrNwodxw3oLK/EuTgwoxIHJuplx5E5Wrdx9g7Gl1PBIJL8V xiOYS5N7CakyALvdhP7cPubA2+TPAjNInxiAcmhdASS/Vrmpvrkat6XhGn8h9liv ysDOpMQmYQkmgZBpW8yBKK7JABGGsJADJ3E6J5MMWBX2RR4kFoqVGAzdOU3oyaTy I0kz5sfuahaWpdYJVlkO+esc0CRXw8fLDYivabK2tOgUEWeZsZGZ9uK6aV1VxTAY 9Guu3BJ4Rv/KP/hk7mP8rIeCwotV66/2H8nq72ImQhzSVyWcxbFf2rJiFQJ3BFwA WoRMgEwjGJWqzhJZUYpUAQ== -----END CERTIFICATE----- nova-2014.1/nova/tests/db/0000775000175400017540000000000012323722546016402 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/db/test_sqlalchemy_utils.py0000664000175400017540000000623112323721477023401 0ustar jenkinsjenkins00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock from nova.db.sqlalchemy import utils from nova import test class SqlAlchemyUtilsTestCase(test.NoDBTestCase): """Test case for sqlaclchemy utils methods.""" def test_modify_indexes_checks_index_before_dropping_in_postgresql(self): data = {"table_name": (('index2', ('old_column'), ('new_column')),)} migrate_engine = mock.Mock() migrate_engine.name = 'postgresql' with mock.patch('nova.db.sqlalchemy.utils.reflection.Inspector' '.from_engine') as inspector: inspector.return_value.get_indexes.return_value = [ {'name': "index1"}] with mock.patch('nova.db.sqlalchemy.utils.Index') as index: index.return_value = mock.Mock() utils.modify_indexes(migrate_engine, data, False) self.assertFalse(index.called) self.assertFalse(index.return_value.drop.called) def test_modify_indexes_checks_index_before_dropping_in_mysql(self): data = {"table_name": (('index2', ('old_column'), ('new_column')),)} migrate_engine = mock.Mock() migrate_engine.name = 'mysql' with mock.patch('nova.db.sqlalchemy.utils.reflection.Inspector' '.from_engine') as inspector: inspector.return_value.get_indexes.return_value = [ {'name': "index1"}] with mock.patch('nova.db.sqlalchemy.utils.Index') as index: with mock.patch('nova.db.sqlalchemy.utils.Table') as Table: index.return_value = mock.Mock() utils.modify_indexes(migrate_engine, data, False) self.assertFalse(index.return_value.drop.called) def test_modify_indexes(self): data = {"table_name": (('index2', ('old_column'), ('new_column')),)} migrate_engine = mock.Mock() migrate_engine.name = 'mysql' with mock.patch('nova.db.sqlalchemy.utils.reflection.Inspector' '.from_engine') as inspector: inspector.return_value.get_indexes.return_value = [ {'name': "index2"}] with mock.patch('nova.db.sqlalchemy.utils.Index') as index: with mock.patch('nova.db.sqlalchemy.utils.Table') as Table: index.return_value = mock.Mock() utils.modify_indexes(migrate_engine, data, True) self.assertTrue(index.return_value.drop.called) self.assertTrue(index.return_value.create.called) nova-2014.1/nova/tests/db/test_db_api.py0000664000175400017540000116710312323721510021230 0ustar jenkinsjenkins00000000000000# encoding=UTF8 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Unit tests for the DB API.""" import copy import datetime import iso8601 import types import uuid as stdlib_uuid import mox import netaddr from oslo.config import cfg import six from sqlalchemy.dialects import sqlite from sqlalchemy import exc from sqlalchemy.exc import IntegrityError from sqlalchemy import MetaData from sqlalchemy.orm import exc as sqlalchemy_orm_exc from sqlalchemy.orm import query from sqlalchemy.sql.expression import select from nova import block_device from nova.compute import vm_states from nova import context from nova import db from nova.db.sqlalchemy import api as sqlalchemy_api from nova.db.sqlalchemy import models from nova.db.sqlalchemy import utils as db_utils from nova import exception from nova.openstack.common.db import exception as db_exc from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.openstack.common import uuidutils from nova import quota from nova import test from nova.tests import matchers from nova import utils CONF = cfg.CONF CONF.import_opt('reserved_host_memory_mb', 'nova.compute.resource_tracker') CONF.import_opt('reserved_host_disk_mb', 'nova.compute.resource_tracker') get_engine = sqlalchemy_api.get_engine get_session = sqlalchemy_api.get_session def _reservation_get(context, uuid): result = sqlalchemy_api.model_query(context, models.Reservation, read_deleted="no").filter_by(uuid=uuid).first() if not result: raise exception.ReservationNotFound(uuid=uuid) return result def _quota_reserve(context, project_id, user_id): """Create sample Quota, QuotaUsage and Reservation objects. There is no method db.quota_usage_create(), so we have to use db.quota_reserve() for creating QuotaUsage objects. Returns reservations uuids. """ def get_sync(resource, usage): def sync(elevated, project_id, user_id, session): return {resource: usage} return sync quotas = {} user_quotas = {} resources = {} deltas = {} for i in range(3): resource = 'resource%d' % i if i == 2: # test for project level resources resource = 'fixed_ips' quotas[resource] = db.quota_create(context, project_id, resource, i) user_quotas[resource] = quotas[resource] else: quotas[resource] = db.quota_create(context, project_id, resource, i) user_quotas[resource] = db.quota_create(context, project_id, resource, i, user_id=user_id) sync_name = '_sync_%s' % resource resources[resource] = quota.ReservableResource( resource, sync_name, 'quota_res_%d' % i) deltas[resource] = i setattr(sqlalchemy_api, sync_name, get_sync(resource, i)) sqlalchemy_api.QUOTA_SYNC_FUNCTIONS[sync_name] = getattr( sqlalchemy_api, sync_name) return db.quota_reserve(context, resources, quotas, user_quotas, deltas, timeutils.utcnow(), CONF.until_refresh, datetime.timedelta(days=1), project_id, user_id) class DbTestCase(test.TestCase): def setUp(self): super(DbTestCase, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) def create_instance_with_args(self, **kwargs): args = {'reservation_id': 'a', 'image_ref': 1, 'host': 'host1', 'node': 'node1', 'project_id': self.project_id, 'vm_state': 'fake'} if 'context' in kwargs: ctxt = kwargs.pop('context') args['project_id'] = ctxt.project_id else: ctxt = self.context args.update(kwargs) return db.instance_create(ctxt, args) def fake_metadata(self, content): meta = {} for i in range(0, 10): meta["foo%i" % i] = "this is %s item %i" % (content, i) return meta def create_metadata_for_instance(self, instance_uuid): meta = self.fake_metadata('metadata') db.instance_metadata_update(self.context, instance_uuid, meta, False) sys_meta = self.fake_metadata('system_metadata') db.instance_system_metadata_update(self.context, instance_uuid, sys_meta, False) return meta, sys_meta class DecoratorTestCase(test.TestCase): def _test_decorator_wraps_helper(self, decorator): def test_func(): """Test docstring.""" decorated_func = decorator(test_func) self.assertEqual(test_func.func_name, decorated_func.func_name) self.assertEqual(test_func.__doc__, decorated_func.__doc__) self.assertEqual(test_func.__module__, decorated_func.__module__) def test_require_context_decorator_wraps_functions_properly(self): self._test_decorator_wraps_helper(sqlalchemy_api.require_context) def test_require_admin_context_decorator_wraps_functions_properly(self): self._test_decorator_wraps_helper(sqlalchemy_api.require_admin_context) def test_require_deadlock_retry_wraps_functions_properly(self): self._test_decorator_wraps_helper(sqlalchemy_api._retry_on_deadlock) def _get_fake_aggr_values(): return {'name': 'fake_aggregate'} def _get_fake_aggr_metadata(): return {'fake_key1': 'fake_value1', 'fake_key2': 'fake_value2', 'availability_zone': 'fake_avail_zone'} def _get_fake_aggr_hosts(): return ['foo.openstack.org'] def _create_aggregate(context=context.get_admin_context(), values=_get_fake_aggr_values(), metadata=_get_fake_aggr_metadata()): return db.aggregate_create(context, values, metadata) def _create_aggregate_with_hosts(context=context.get_admin_context(), values=_get_fake_aggr_values(), metadata=_get_fake_aggr_metadata(), hosts=_get_fake_aggr_hosts()): result = _create_aggregate(context=context, values=values, metadata=metadata) for host in hosts: db.aggregate_host_add(context, result['id'], host) return result class NotDbApiTestCase(DbTestCase): def setUp(self): super(NotDbApiTestCase, self).setUp() self.flags(connection='notdb://', group='database') def test_instance_get_all_by_filters_regex_unsupported_db(self): # Ensure that the 'LIKE' operator is used for unsupported dbs. self.create_instance_with_args(display_name='test1') self.create_instance_with_args(display_name='test2') self.create_instance_with_args(display_name='diff') result = db.instance_get_all_by_filters(self.context, {'display_name': 'test'}) self.assertEqual(2, len(result)) result = db.instance_get_all_by_filters(self.context, {'display_name': 'di'}) self.assertEqual(1, len(result)) def test_instance_get_all_by_filters_paginate(self): test1 = self.create_instance_with_args(display_name='test1') test2 = self.create_instance_with_args(display_name='test2') test3 = self.create_instance_with_args(display_name='test3') result = db.instance_get_all_by_filters(self.context, {'display_name': '%test%'}, marker=None) self.assertEqual(3, len(result)) result = db.instance_get_all_by_filters(self.context, {'display_name': '%test%'}, sort_dir="asc", marker=test1['uuid']) self.assertEqual(2, len(result)) result = db.instance_get_all_by_filters(self.context, {'display_name': '%test%'}, sort_dir="asc", marker=test2['uuid']) self.assertEqual(1, len(result)) result = db.instance_get_all_by_filters(self.context, {'display_name': '%test%'}, sort_dir="asc", marker=test3['uuid']) self.assertEqual(0, len(result)) self.assertRaises(exception.MarkerNotFound, db.instance_get_all_by_filters, self.context, {'display_name': '%test%'}, marker=str(stdlib_uuid.uuid4())) def test_convert_objects_related_datetimes(self): t1 = timeutils.utcnow() t2 = t1 + datetime.timedelta(seconds=10) t3 = t2 + datetime.timedelta(hours=1) t2_utc = t2.replace(tzinfo=iso8601.iso8601.Utc()) t3_utc = t3.replace(tzinfo=iso8601.iso8601.Utc()) datetime_keys = ('created_at', 'deleted_at') test1 = {'created_at': t1, 'deleted_at': t2, 'updated_at': t3} expected_dict = {'created_at': t1, 'deleted_at': t2, 'updated_at': t3} sqlalchemy_api.convert_objects_related_datetimes(test1, *datetime_keys) self.assertEqual(test1, expected_dict) test2 = {'created_at': t1, 'deleted_at': t2_utc, 'updated_at': t3} expected_dict = {'created_at': t1, 'deleted_at': t2, 'updated_at': t3} sqlalchemy_api.convert_objects_related_datetimes(test2, *datetime_keys) self.assertEqual(test2, expected_dict) test3 = {'deleted_at': t2_utc, 'updated_at': t3_utc} expected_dict = {'deleted_at': t2, 'updated_at': t3_utc} sqlalchemy_api.convert_objects_related_datetimes(test3, *datetime_keys) self.assertEqual(test3, expected_dict) class AggregateDBApiTestCase(test.TestCase): def setUp(self): super(AggregateDBApiTestCase, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) def test_aggregate_create_no_metadata(self): result = _create_aggregate(metadata=None) self.assertEqual(result['name'], 'fake_aggregate') def test_aggregate_create_avoid_name_conflict(self): r1 = _create_aggregate(metadata=None) db.aggregate_delete(context.get_admin_context(), r1['id']) values = {'name': r1['name']} metadata = {'availability_zone': 'new_zone'} r2 = _create_aggregate(values=values, metadata=metadata) self.assertEqual(r2['name'], values['name']) self.assertEqual(r2['availability_zone'], metadata['availability_zone']) def test_aggregate_create_raise_exist_exc(self): _create_aggregate(metadata=None) self.assertRaises(exception.AggregateNameExists, _create_aggregate, metadata=None) def test_aggregate_get_raise_not_found(self): ctxt = context.get_admin_context() # this does not exist! aggregate_id = 1 self.assertRaises(exception.AggregateNotFound, db.aggregate_get, ctxt, aggregate_id) def test_aggregate_metadata_get_raise_not_found(self): ctxt = context.get_admin_context() # this does not exist! aggregate_id = 1 self.assertRaises(exception.AggregateNotFound, db.aggregate_metadata_get, ctxt, aggregate_id) def test_aggregate_create_with_metadata(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) expected_metadata = db.aggregate_metadata_get(ctxt, result['id']) self.assertThat(expected_metadata, matchers.DictMatches(_get_fake_aggr_metadata())) def test_aggregate_create_delete_create_with_metadata(self): #test for bug 1052479 ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) expected_metadata = db.aggregate_metadata_get(ctxt, result['id']) self.assertThat(expected_metadata, matchers.DictMatches(_get_fake_aggr_metadata())) db.aggregate_delete(ctxt, result['id']) result = _create_aggregate(metadata={'availability_zone': 'fake_avail_zone'}) expected_metadata = db.aggregate_metadata_get(ctxt, result['id']) self.assertEqual(expected_metadata, {'availability_zone': 'fake_avail_zone'}) def test_aggregate_get(self): ctxt = context.get_admin_context() result = _create_aggregate_with_hosts(context=ctxt) expected = db.aggregate_get(ctxt, result['id']) self.assertEqual(_get_fake_aggr_hosts(), expected['hosts']) self.assertEqual(_get_fake_aggr_metadata(), expected['metadetails']) def test_aggregate_get_by_host(self): ctxt = context.get_admin_context() values2 = {'name': 'fake_aggregate2'} values3 = {'name': 'fake_aggregate3'} values4 = {'name': 'fake_aggregate4'} values5 = {'name': 'fake_aggregate5'} a1 = _create_aggregate_with_hosts(context=ctxt) a2 = _create_aggregate_with_hosts(context=ctxt, values=values2) # a3 has no hosts and should not be in the results. a3 = _create_aggregate(context=ctxt, values=values3) # a4 has no matching hosts. a4 = _create_aggregate_with_hosts(context=ctxt, values=values4, hosts=['foo4.openstack.org']) # a5 has no matching hosts after deleting the only matching host. a5 = _create_aggregate_with_hosts(context=ctxt, values=values5, hosts=['foo5.openstack.org', 'foo.openstack.org']) db.aggregate_host_delete(ctxt, a5['id'], 'foo.openstack.org') r1 = db.aggregate_get_by_host(ctxt, 'foo.openstack.org') self.assertEqual([a1['id'], a2['id']], [x['id'] for x in r1]) def test_aggregate_get_by_host_with_key(self): ctxt = context.get_admin_context() values2 = {'name': 'fake_aggregate2'} values3 = {'name': 'fake_aggregate3'} values4 = {'name': 'fake_aggregate4'} a1 = _create_aggregate_with_hosts(context=ctxt, metadata={'goodkey': 'good'}) _create_aggregate_with_hosts(context=ctxt, values=values2) _create_aggregate(context=ctxt, values=values3) _create_aggregate_with_hosts(context=ctxt, values=values4, hosts=['foo4.openstack.org'], metadata={'goodkey': 'bad'}) # filter result by key r1 = db.aggregate_get_by_host(ctxt, 'foo.openstack.org', key='goodkey') self.assertEqual([a1['id']], [x['id'] for x in r1]) def test_aggregate_metadata_get_by_host(self): ctxt = context.get_admin_context() values = {'name': 'fake_aggregate2'} values2 = {'name': 'fake_aggregate3'} _create_aggregate_with_hosts(context=ctxt) _create_aggregate_with_hosts(context=ctxt, values=values) _create_aggregate_with_hosts(context=ctxt, values=values2, hosts=['bar.openstack.org'], metadata={'badkey': 'bad'}) r1 = db.aggregate_metadata_get_by_host(ctxt, 'foo.openstack.org') self.assertEqual(r1['fake_key1'], set(['fake_value1'])) self.assertNotIn('badkey', r1) def test_aggregate_metadata_get_by_metadata_key(self): ctxt = context.get_admin_context() values = {'aggregate_id': 'fake_id', 'name': 'fake_aggregate'} aggr = _create_aggregate_with_hosts(context=ctxt, values=values, hosts=['bar.openstack.org'], metadata={'availability_zone': 'az1'}) r1 = db.aggregate_metadata_get_by_metadata_key(ctxt, aggr['id'], 'availability_zone') self.assertEqual(r1['availability_zone'], set(['az1'])) self.assertIn('availability_zone', r1) self.assertNotIn('name', r1) def test_aggregate_metadata_get_by_host_with_key(self): ctxt = context.get_admin_context() values2 = {'name': 'fake_aggregate12'} values3 = {'name': 'fake_aggregate23'} a2_hosts = ['foo1.openstack.org', 'foo2.openstack.org'] a2_metadata = {'good': 'value12', 'bad': 'badvalue12'} a3_hosts = ['foo2.openstack.org', 'foo3.openstack.org'] a3_metadata = {'good': 'value23', 'bad': 'badvalue23'} a1 = _create_aggregate_with_hosts(context=ctxt) a2 = _create_aggregate_with_hosts(context=ctxt, values=values2, hosts=a2_hosts, metadata=a2_metadata) a3 = _create_aggregate_with_hosts(context=ctxt, values=values3, hosts=a3_hosts, metadata=a3_metadata) r1 = db.aggregate_metadata_get_by_host(ctxt, 'foo2.openstack.org', key='good') self.assertEqual(r1['good'], set(['value12', 'value23'])) self.assertNotIn('fake_key1', r1) self.assertNotIn('bad', r1) # Delete metadata db.aggregate_metadata_delete(ctxt, a3['id'], 'good') r2 = db.aggregate_metadata_get_by_host(ctxt, 'foo.openstack.org', key='good') self.assertNotIn('good', r2) def test_aggregate_host_get_by_metadata_key(self): ctxt = context.get_admin_context() values2 = {'name': 'fake_aggregate12'} values3 = {'name': 'fake_aggregate23'} a2_hosts = ['foo1.openstack.org', 'foo2.openstack.org'] a2_metadata = {'good': 'value12', 'bad': 'badvalue12'} a3_hosts = ['foo2.openstack.org', 'foo3.openstack.org'] a3_metadata = {'good': 'value23', 'bad': 'badvalue23'} a1 = _create_aggregate_with_hosts(context=ctxt) a2 = _create_aggregate_with_hosts(context=ctxt, values=values2, hosts=a2_hosts, metadata=a2_metadata) a3 = _create_aggregate_with_hosts(context=ctxt, values=values3, hosts=a3_hosts, metadata=a3_metadata) r1 = db.aggregate_host_get_by_metadata_key(ctxt, key='good') self.assertEqual({ 'foo1.openstack.org': set(['value12']), 'foo2.openstack.org': set(['value12', 'value23']), 'foo3.openstack.org': set(['value23']), }, r1) self.assertNotIn('fake_key1', r1) def test_aggregate_get_by_host_not_found(self): ctxt = context.get_admin_context() _create_aggregate_with_hosts(context=ctxt) self.assertEqual([], db.aggregate_get_by_host(ctxt, 'unknown_host')) def test_aggregate_delete_raise_not_found(self): ctxt = context.get_admin_context() # this does not exist! aggregate_id = 1 self.assertRaises(exception.AggregateNotFound, db.aggregate_delete, ctxt, aggregate_id) def test_aggregate_delete(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata=None) db.aggregate_delete(ctxt, result['id']) expected = db.aggregate_get_all(ctxt) self.assertEqual(0, len(expected)) aggregate = db.aggregate_get(ctxt.elevated(read_deleted='yes'), result['id']) self.assertEqual(aggregate['deleted'], result['id']) def test_aggregate_update(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata={'availability_zone': 'fake_avail_zone'}) self.assertEqual(result['availability_zone'], 'fake_avail_zone') new_values = _get_fake_aggr_values() new_values['availability_zone'] = 'different_avail_zone' updated = db.aggregate_update(ctxt, result['id'], new_values) self.assertNotEqual(result['availability_zone'], updated['availability_zone']) def test_aggregate_update_with_metadata(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata=None) values = _get_fake_aggr_values() values['metadata'] = _get_fake_aggr_metadata() values['availability_zone'] = 'different_avail_zone' db.aggregate_update(ctxt, result['id'], values) expected = db.aggregate_metadata_get(ctxt, result['id']) updated = db.aggregate_get(ctxt, result['id']) self.assertThat(values['metadata'], matchers.DictMatches(expected)) self.assertNotEqual(result['availability_zone'], updated['availability_zone']) def test_aggregate_update_with_existing_metadata(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) values = _get_fake_aggr_values() values['metadata'] = _get_fake_aggr_metadata() values['metadata']['fake_key1'] = 'foo' db.aggregate_update(ctxt, result['id'], values) expected = db.aggregate_metadata_get(ctxt, result['id']) self.assertThat(values['metadata'], matchers.DictMatches(expected)) def test_aggregate_update_zone_with_existing_metadata(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) new_zone = {'availability_zone': 'fake_avail_zone_2'} metadata = _get_fake_aggr_metadata() metadata.update(new_zone) db.aggregate_update(ctxt, result['id'], new_zone) expected = db.aggregate_metadata_get(ctxt, result['id']) self.assertThat(metadata, matchers.DictMatches(expected)) def test_aggregate_update_raise_not_found(self): ctxt = context.get_admin_context() # this does not exist! aggregate_id = 1 new_values = _get_fake_aggr_values() self.assertRaises(exception.AggregateNotFound, db.aggregate_update, ctxt, aggregate_id, new_values) def test_aggregate_update_raise_name_exist(self): ctxt = context.get_admin_context() _create_aggregate(context=ctxt, values={'name': 'test1'}, metadata={'availability_zone': 'fake_avail_zone'}) _create_aggregate(context=ctxt, values={'name': 'test2'}, metadata={'availability_zone': 'fake_avail_zone'}) aggregate_id = 1 new_values = {'name': 'test2'} self.assertRaises(exception.AggregateNameExists, db.aggregate_update, ctxt, aggregate_id, new_values) def test_aggregate_get_all(self): ctxt = context.get_admin_context() counter = 3 for c in range(counter): _create_aggregate(context=ctxt, values={'name': 'fake_aggregate_%d' % c}, metadata=None) results = db.aggregate_get_all(ctxt) self.assertEqual(len(results), counter) def test_aggregate_get_all_non_deleted(self): ctxt = context.get_admin_context() add_counter = 5 remove_counter = 2 aggregates = [] for c in range(1, add_counter): values = {'name': 'fake_aggregate_%d' % c} aggregates.append(_create_aggregate(context=ctxt, values=values, metadata=None)) for c in range(1, remove_counter): db.aggregate_delete(ctxt, aggregates[c - 1]['id']) results = db.aggregate_get_all(ctxt) self.assertEqual(len(results), add_counter - remove_counter) def test_aggregate_metadata_add(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata=None) metadata = _get_fake_aggr_metadata() db.aggregate_metadata_add(ctxt, result['id'], metadata) expected = db.aggregate_metadata_get(ctxt, result['id']) self.assertThat(metadata, matchers.DictMatches(expected)) def test_aggregate_metadata_add_retry(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata=None) def counted(): def get_query(context, id, session, read_deleted): get_query.counter += 1 raise db_exc.DBDuplicateEntry get_query.counter = 0 return get_query get_query = counted() self.stubs.Set(sqlalchemy_api, '_aggregate_metadata_get_query', get_query) self.assertRaises(db_exc.DBDuplicateEntry, sqlalchemy_api. aggregate_metadata_add, ctxt, result['id'], {}, max_retries=5) self.assertEqual(get_query.counter, 5) def test_aggregate_metadata_update(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) metadata = _get_fake_aggr_metadata() key = metadata.keys()[0] db.aggregate_metadata_delete(ctxt, result['id'], key) new_metadata = {key: 'foo'} db.aggregate_metadata_add(ctxt, result['id'], new_metadata) expected = db.aggregate_metadata_get(ctxt, result['id']) metadata[key] = 'foo' self.assertThat(metadata, matchers.DictMatches(expected)) def test_aggregate_metadata_delete(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata=None) metadata = _get_fake_aggr_metadata() db.aggregate_metadata_add(ctxt, result['id'], metadata) db.aggregate_metadata_delete(ctxt, result['id'], metadata.keys()[0]) expected = db.aggregate_metadata_get(ctxt, result['id']) del metadata[metadata.keys()[0]] self.assertThat(metadata, matchers.DictMatches(expected)) def test_aggregate_remove_availability_zone(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt, metadata={'availability_zone': 'fake_avail_zone'}) db.aggregate_metadata_delete(ctxt, result['id'], 'availability_zone') expected = db.aggregate_metadata_get(ctxt, result['id']) aggregate = db.aggregate_get(ctxt, result['id']) self.assertIsNone(aggregate['availability_zone']) self.assertThat({}, matchers.DictMatches(expected)) def test_aggregate_metadata_delete_raise_not_found(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) self.assertRaises(exception.AggregateMetadataNotFound, db.aggregate_metadata_delete, ctxt, result['id'], 'foo_key') def test_aggregate_host_add(self): ctxt = context.get_admin_context() result = _create_aggregate_with_hosts(context=ctxt, metadata=None) expected = db.aggregate_host_get_all(ctxt, result['id']) self.assertEqual(_get_fake_aggr_hosts(), expected) def test_aggregate_host_re_add(self): ctxt = context.get_admin_context() result = _create_aggregate_with_hosts(context=ctxt, metadata=None) host = _get_fake_aggr_hosts()[0] db.aggregate_host_delete(ctxt, result['id'], host) db.aggregate_host_add(ctxt, result['id'], host) expected = db.aggregate_host_get_all(ctxt, result['id']) self.assertEqual(len(expected), 1) def test_aggregate_host_add_duplicate_works(self): ctxt = context.get_admin_context() r1 = _create_aggregate_with_hosts(context=ctxt, metadata=None) r2 = _create_aggregate_with_hosts(ctxt, values={'name': 'fake_aggregate2'}, metadata={'availability_zone': 'fake_avail_zone2'}) h1 = db.aggregate_host_get_all(ctxt, r1['id']) h2 = db.aggregate_host_get_all(ctxt, r2['id']) self.assertEqual(h1, h2) def test_aggregate_host_add_duplicate_raise_exist_exc(self): ctxt = context.get_admin_context() result = _create_aggregate_with_hosts(context=ctxt, metadata=None) self.assertRaises(exception.AggregateHostExists, db.aggregate_host_add, ctxt, result['id'], _get_fake_aggr_hosts()[0]) def test_aggregate_host_add_raise_not_found(self): ctxt = context.get_admin_context() # this does not exist! aggregate_id = 1 host = _get_fake_aggr_hosts()[0] self.assertRaises(exception.AggregateNotFound, db.aggregate_host_add, ctxt, aggregate_id, host) def test_aggregate_host_delete(self): ctxt = context.get_admin_context() result = _create_aggregate_with_hosts(context=ctxt, metadata=None) db.aggregate_host_delete(ctxt, result['id'], _get_fake_aggr_hosts()[0]) expected = db.aggregate_host_get_all(ctxt, result['id']) self.assertEqual(0, len(expected)) def test_aggregate_host_delete_raise_not_found(self): ctxt = context.get_admin_context() result = _create_aggregate(context=ctxt) self.assertRaises(exception.AggregateHostNotFound, db.aggregate_host_delete, ctxt, result['id'], _get_fake_aggr_hosts()[0]) class SqlAlchemyDbApiTestCase(DbTestCase): def test_instance_get_all_by_host(self): ctxt = context.get_admin_context() self.create_instance_with_args() self.create_instance_with_args() self.create_instance_with_args(host='host2') result = sqlalchemy_api._instance_get_all_uuids_by_host(ctxt, 'host1') self.assertEqual(2, len(result)) def test_instance_get_all_uuids_by_host(self): ctxt = context.get_admin_context() self.create_instance_with_args() self.create_instance_with_args() self.create_instance_with_args(host='host2') result = sqlalchemy_api._instance_get_all_uuids_by_host(ctxt, 'host1') self.assertEqual(2, len(result)) self.assertEqual(types.UnicodeType, type(result[0])) def test_instance_get_active_by_window_joined(self): now = datetime.datetime(2013, 10, 10, 17, 16, 37, 156701) start_time = now - datetime.timedelta(minutes=10) now1 = now + datetime.timedelta(minutes=1) now2 = now + datetime.timedelta(minutes=2) now3 = now + datetime.timedelta(minutes=3) ctxt = context.get_admin_context() self.create_instance_with_args(launched_at=now) self.create_instance_with_args(launched_at=now1, terminated_at=now2) self.create_instance_with_args(launched_at=now2, terminated_at=now3) self.create_instance_with_args(launched_at=now3, terminated_at=None) result = sqlalchemy_api.instance_get_active_by_window_joined( ctxt, begin=now) self.assertEqual(4, len(result)) result = sqlalchemy_api.instance_get_active_by_window_joined( ctxt, begin=now3) self.assertEqual(2, len(result)) result = sqlalchemy_api.instance_get_active_by_window_joined( ctxt, begin=start_time, end=now) self.assertEqual(0, len(result)) result = sqlalchemy_api.instance_get_active_by_window_joined( ctxt, begin=start_time, end=now2) self.assertEqual(2, len(result)) result = sqlalchemy_api.instance_get_active_by_window_joined( ctxt, begin=now2, end=now3) self.assertEqual(2, len(result)) class MigrationTestCase(test.TestCase): def setUp(self): super(MigrationTestCase, self).setUp() self.ctxt = context.get_admin_context() self._create() self._create() self._create(status='reverted') self._create(status='confirmed') self._create(status='error') self._create(source_compute='host2', source_node='b', dest_compute='host1', dest_node='a') self._create(source_compute='host2', dest_compute='host3') self._create(source_compute='host3', dest_compute='host4') def _create(self, status='migrating', source_compute='host1', source_node='a', dest_compute='host2', dest_node='b', system_metadata=None): values = {'host': source_compute} instance = db.instance_create(self.ctxt, values) if system_metadata: db.instance_system_metadata_update(self.ctxt, instance['uuid'], system_metadata, False) values = {'status': status, 'source_compute': source_compute, 'source_node': source_node, 'dest_compute': dest_compute, 'dest_node': dest_node, 'instance_uuid': instance['uuid']} db.migration_create(self.ctxt, values) def _assert_in_progress(self, migrations): for migration in migrations: self.assertNotEqual('confirmed', migration['status']) self.assertNotEqual('reverted', migration['status']) self.assertNotEqual('error', migration['status']) def test_migration_get_in_progress_joins(self): self._create(source_compute='foo', system_metadata={'foo': 'bar'}) migrations = db.migration_get_in_progress_by_host_and_node(self.ctxt, 'foo', 'a') system_metadata = migrations[0]['instance']['system_metadata'][0] self.assertEqual(system_metadata['key'], 'foo') self.assertEqual(system_metadata['value'], 'bar') def test_in_progress_host1_nodea(self): migrations = db.migration_get_in_progress_by_host_and_node(self.ctxt, 'host1', 'a') # 2 as source + 1 as dest self.assertEqual(3, len(migrations)) self._assert_in_progress(migrations) def test_in_progress_host1_nodeb(self): migrations = db.migration_get_in_progress_by_host_and_node(self.ctxt, 'host1', 'b') # some migrations are to/from host1, but none with a node 'b' self.assertEqual(0, len(migrations)) def test_in_progress_host2_nodeb(self): migrations = db.migration_get_in_progress_by_host_and_node(self.ctxt, 'host2', 'b') # 2 as dest, 1 as source self.assertEqual(3, len(migrations)) self._assert_in_progress(migrations) def test_instance_join(self): migrations = db.migration_get_in_progress_by_host_and_node(self.ctxt, 'host2', 'b') for migration in migrations: instance = migration['instance'] self.assertEqual(migration['instance_uuid'], instance['uuid']) def test_get_migrations_by_filters(self): filters = {"status": "migrating", "host": "host3"} migrations = db.migration_get_all_by_filters(self.ctxt, filters) self.assertEqual(2, len(migrations)) for migration in migrations: self.assertEqual(filters["status"], migration['status']) hosts = [migration['source_compute'], migration['dest_compute']] self.assertIn(filters["host"], hosts) def test_only_admin_can_get_all_migrations_by_filters(self): user_ctxt = context.RequestContext(user_id=None, project_id=None, is_admin=False, read_deleted="no", overwrite=False) self.assertRaises(exception.AdminRequired, db.migration_get_all_by_filters, user_ctxt, {}) def test_migration_get_unconfirmed_by_dest_compute(self): # Ensure no migrations are returned. results = db.migration_get_unconfirmed_by_dest_compute(self.ctxt, 10, 'fake_host') self.assertEqual(0, len(results)) # Ensure no migrations are returned. results = db.migration_get_unconfirmed_by_dest_compute(self.ctxt, 10, 'fake_host2') self.assertEqual(0, len(results)) updated_at = datetime.datetime(2000, 1, 1, 12, 0, 0) values = {"status": "finished", "updated_at": updated_at, "dest_compute": "fake_host2"} migration = db.migration_create(self.ctxt, values) # Ensure different host is not returned results = db.migration_get_unconfirmed_by_dest_compute(self.ctxt, 10, 'fake_host') self.assertEqual(0, len(results)) # Ensure one migration older than 10 seconds is returned. results = db.migration_get_unconfirmed_by_dest_compute(self.ctxt, 10, 'fake_host2') self.assertEqual(1, len(results)) db.migration_update(self.ctxt, migration['id'], {"status": "CONFIRMED"}) # Ensure the new migration is not returned. updated_at = timeutils.utcnow() values = {"status": "finished", "updated_at": updated_at, "dest_compute": "fake_host2"} migration = db.migration_create(self.ctxt, values) results = db.migration_get_unconfirmed_by_dest_compute(self.ctxt, 10, "fake_host2") self.assertEqual(0, len(results)) db.migration_update(self.ctxt, migration['id'], {"status": "CONFIRMED"}) def test_migration_update_not_found(self): self.assertRaises(exception.MigrationNotFound, db.migration_update, self.ctxt, 42, {}) class ModelsObjectComparatorMixin(object): def _dict_from_object(self, obj, ignored_keys): if ignored_keys is None: ignored_keys = [] return dict([(k, v) for k, v in obj.iteritems() if k not in ignored_keys]) def _assertEqualObjects(self, obj1, obj2, ignored_keys=None): obj1 = self._dict_from_object(obj1, ignored_keys) obj2 = self._dict_from_object(obj2, ignored_keys) self.assertEqual(len(obj1), len(obj2), "Keys mismatch: %s" % str(set(obj1.keys()) ^ set(obj2.keys()))) for key, value in obj1.iteritems(): self.assertEqual(value, obj2[key]) def _assertEqualListsOfObjects(self, objs1, objs2, ignored_keys=None): obj_to_dict = lambda o: self._dict_from_object(o, ignored_keys) sort_key = lambda d: [d[k] for k in sorted(d)] conv_and_sort = lambda obj: sorted(map(obj_to_dict, obj), key=sort_key) self.assertEqual(conv_and_sort(objs1), conv_and_sort(objs2)) def _assertEqualOrderedListOfObjects(self, objs1, objs2, ignored_keys=None): obj_to_dict = lambda o: self._dict_from_object(o, ignored_keys) conv = lambda obj: map(obj_to_dict, obj) self.assertEqual(conv(objs1), conv(objs2)) def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2): self.assertEqual(len(primitives1), len(primitives2)) for primitive in primitives1: self.assertIn(primitive, primitives2) for primitive in primitives2: self.assertIn(primitive, primitives1) class InstanceSystemMetadataTestCase(test.TestCase): """Tests for db.api.instance_system_metadata_* methods.""" def setUp(self): super(InstanceSystemMetadataTestCase, self).setUp() values = {'host': 'h1', 'project_id': 'p1', 'system_metadata': {'key': 'value'}} self.ctxt = context.get_admin_context() self.instance = db.instance_create(self.ctxt, values) def test_instance_system_metadata_get(self): metadata = db.instance_system_metadata_get(self.ctxt, self.instance['uuid']) self.assertEqual(metadata, {'key': 'value'}) def test_instance_system_metadata_update_new_pair(self): db.instance_system_metadata_update( self.ctxt, self.instance['uuid'], {'new_key': 'new_value'}, False) metadata = db.instance_system_metadata_get(self.ctxt, self.instance['uuid']) self.assertEqual(metadata, {'key': 'value', 'new_key': 'new_value'}) def test_instance_system_metadata_update_existent_pair(self): db.instance_system_metadata_update( self.ctxt, self.instance['uuid'], {'key': 'new_value'}, True) metadata = db.instance_system_metadata_get(self.ctxt, self.instance['uuid']) self.assertEqual(metadata, {'key': 'new_value'}) def test_instance_system_metadata_update_delete_true(self): db.instance_system_metadata_update( self.ctxt, self.instance['uuid'], {'new_key': 'new_value'}, True) metadata = db.instance_system_metadata_get(self.ctxt, self.instance['uuid']) self.assertEqual(metadata, {'new_key': 'new_value'}) @test.testtools.skip("bug 1189462") def test_instance_system_metadata_update_nonexistent(self): self.assertRaises(exception.InstanceNotFound, db.instance_system_metadata_update, self.ctxt, 'nonexistent-uuid', {'key': 'value'}, True) class ReservationTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.reservation_* methods.""" def setUp(self): super(ReservationTestCase, self).setUp() self.ctxt = context.get_admin_context() self.values = {'uuid': 'sample-uuid', 'project_id': 'project1', 'user_id': 'user1', 'resource': 'resource', 'delta': 42, 'expire': timeutils.utcnow() + datetime.timedelta(days=1), 'usage': {'id': 1}} def test_reservation_commit(self): reservations = _quota_reserve(self.ctxt, 'project1', 'user1') expected = {'project_id': 'project1', 'user_id': 'user1', 'resource0': {'reserved': 0, 'in_use': 0}, 'resource1': {'reserved': 1, 'in_use': 1}, 'fixed_ips': {'reserved': 2, 'in_use': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project_and_user( self.ctxt, 'project1', 'user1')) _reservation_get(self.ctxt, reservations[0]) db.reservation_commit(self.ctxt, reservations, 'project1', 'user1') self.assertRaises(exception.ReservationNotFound, _reservation_get, self.ctxt, reservations[0]) expected = {'project_id': 'project1', 'user_id': 'user1', 'resource0': {'reserved': 0, 'in_use': 0}, 'resource1': {'reserved': 0, 'in_use': 2}, 'fixed_ips': {'reserved': 0, 'in_use': 4}} self.assertEqual(expected, db.quota_usage_get_all_by_project_and_user( self.ctxt, 'project1', 'user1')) def test_reservation_rollback(self): reservations = _quota_reserve(self.ctxt, 'project1', 'user1') expected = {'project_id': 'project1', 'user_id': 'user1', 'resource0': {'reserved': 0, 'in_use': 0}, 'resource1': {'reserved': 1, 'in_use': 1}, 'fixed_ips': {'reserved': 2, 'in_use': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project_and_user( self.ctxt, 'project1', 'user1')) _reservation_get(self.ctxt, reservations[0]) db.reservation_rollback(self.ctxt, reservations, 'project1', 'user1') self.assertRaises(exception.ReservationNotFound, _reservation_get, self.ctxt, reservations[0]) expected = {'project_id': 'project1', 'user_id': 'user1', 'resource0': {'reserved': 0, 'in_use': 0}, 'resource1': {'reserved': 0, 'in_use': 1}, 'fixed_ips': {'reserved': 0, 'in_use': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project_and_user( self.ctxt, 'project1', 'user1')) def test_reservation_expire(self): self.values['expire'] = timeutils.utcnow() + datetime.timedelta(days=1) _quota_reserve(self.ctxt, 'project1', 'user1') db.reservation_expire(self.ctxt) expected = {'project_id': 'project1', 'user_id': 'user1', 'resource0': {'reserved': 0, 'in_use': 0}, 'resource1': {'reserved': 0, 'in_use': 1}, 'fixed_ips': {'reserved': 0, 'in_use': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project_and_user( self.ctxt, 'project1', 'user1')) class SecurityGroupRuleTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(SecurityGroupRuleTestCase, self).setUp() self.ctxt = context.get_admin_context() def _get_base_values(self): return { 'name': 'fake_sec_group', 'description': 'fake_sec_group_descr', 'user_id': 'fake', 'project_id': 'fake', 'instances': [] } def _get_base_rule_values(self): return { 'protocol': "tcp", 'from_port': 80, 'to_port': 8080, 'cidr': None, 'deleted': 0, 'deleted_at': None, 'grantee_group': None, 'updated_at': None } def _create_security_group(self, values): v = self._get_base_values() v.update(values) return db.security_group_create(self.ctxt, v) def _create_security_group_rule(self, values): v = self._get_base_rule_values() v.update(values) return db.security_group_rule_create(self.ctxt, v) def test_security_group_rule_create(self): security_group_rule = self._create_security_group_rule({}) self.assertIsNotNone(security_group_rule['id']) for key, value in self._get_base_rule_values().items(): self.assertEqual(value, security_group_rule[key]) def _test_security_group_rule_get_by_security_group(self, columns=None): instance = db.instance_create(self.ctxt, {'system_metadata': {'foo': 'bar'}}) security_group = self._create_security_group({ 'instances': [instance]}) security_group_rule = self._create_security_group_rule( {'parent_group': security_group, 'grantee_group': security_group}) security_group_rule1 = self._create_security_group_rule( {'parent_group': security_group, 'grantee_group': security_group}) found_rules = db.security_group_rule_get_by_security_group( self.ctxt, security_group['id'], columns_to_join=columns) self.assertEqual(len(found_rules), 2) rules_ids = [security_group_rule['id'], security_group_rule1['id']] for rule in found_rules: if columns is None: self.assertIn('grantee_group', dict(rule.iteritems())) self.assertIn('instances', dict(rule.grantee_group.iteritems())) self.assertIn( 'system_metadata', dict(rule.grantee_group.instances[0].iteritems())) self.assertIn(rule['id'], rules_ids) else: self.assertNotIn('grantee_group', dict(rule.iteritems())) def test_security_group_rule_get_by_security_group(self): self._test_security_group_rule_get_by_security_group() def test_security_group_rule_get_by_security_group_no_joins(self): self._test_security_group_rule_get_by_security_group(columns=[]) def test_security_group_rule_get_by_security_group_grantee(self): security_group = self._create_security_group({}) security_group_rule = self._create_security_group_rule( {'grantee_group': security_group}) rules = db.security_group_rule_get_by_security_group_grantee(self.ctxt, security_group['id']) self.assertEqual(len(rules), 1) self.assertEqual(rules[0]['id'], security_group_rule['id']) def test_security_group_rule_destroy(self): security_group1 = self._create_security_group({'name': 'fake1'}) security_group2 = self._create_security_group({'name': 'fake2'}) security_group_rule1 = self._create_security_group_rule({}) security_group_rule2 = self._create_security_group_rule({}) db.security_group_rule_destroy(self.ctxt, security_group_rule1['id']) self.assertRaises(exception.SecurityGroupNotFound, db.security_group_rule_get, self.ctxt, security_group_rule1['id']) self._assertEqualObjects(db.security_group_rule_get(self.ctxt, security_group_rule2['id']), security_group_rule2, ['grantee_group']) def test_security_group_rule_destroy_not_found_exception(self): self.assertRaises(exception.SecurityGroupNotFound, db.security_group_rule_destroy, self.ctxt, 100500) def test_security_group_rule_get(self): security_group_rule1 = ( self._create_security_group_rule({})) security_group_rule2 = self._create_security_group_rule({}) real_security_group_rule = db.security_group_rule_get(self.ctxt, security_group_rule1['id']) self._assertEqualObjects(security_group_rule1, real_security_group_rule, ['grantee_group']) def test_security_group_rule_get_not_found_exception(self): self.assertRaises(exception.SecurityGroupNotFound, db.security_group_rule_get, self.ctxt, 100500) def test_security_group_rule_count_by_group(self): sg1 = self._create_security_group({'name': 'fake1'}) sg2 = self._create_security_group({'name': 'fake2'}) rules_by_group = {sg1: [], sg2: []} for group in rules_by_group: rules = rules_by_group[group] for i in range(0, 10): rules.append( self._create_security_group_rule({'parent_group_id': group['id']})) db.security_group_rule_destroy(self.ctxt, rules_by_group[sg1][0]['id']) counted_groups = [db.security_group_rule_count_by_group(self.ctxt, group['id']) for group in [sg1, sg2]] expected = [9, 10] self.assertEqual(counted_groups, expected) class SecurityGroupTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(SecurityGroupTestCase, self).setUp() self.ctxt = context.get_admin_context() def _get_base_values(self): return { 'name': 'fake_sec_group', 'description': 'fake_sec_group_descr', 'user_id': 'fake', 'project_id': 'fake', 'instances': [] } def _create_security_group(self, values): v = self._get_base_values() v.update(values) return db.security_group_create(self.ctxt, v) def test_security_group_create(self): security_group = self._create_security_group({}) self.assertIsNotNone(security_group['id']) for key, value in self._get_base_values().iteritems(): self.assertEqual(value, security_group[key]) def test_security_group_destroy(self): security_group1 = self._create_security_group({}) security_group2 = \ self._create_security_group({'name': 'fake_sec_group2'}) db.security_group_destroy(self.ctxt, security_group1['id']) self.assertRaises(exception.SecurityGroupNotFound, db.security_group_get, self.ctxt, security_group1['id']) self._assertEqualObjects(db.security_group_get( self.ctxt, security_group2['id'], columns_to_join=['instances']), security_group2) def test_security_group_get(self): security_group1 = self._create_security_group({}) self._create_security_group({'name': 'fake_sec_group2'}) real_security_group = db.security_group_get(self.ctxt, security_group1['id'], columns_to_join=['instances']) self._assertEqualObjects(security_group1, real_security_group) def test_security_group_get_with_instance_columns(self): instance = db.instance_create(self.ctxt, {'system_metadata': {'foo': 'bar'}}) secgroup = self._create_security_group({'instances': [instance]}) secgroup = db.security_group_get( self.ctxt, secgroup['id'], columns_to_join=['instances.system_metadata']) inst = secgroup.instances[0] self.assertIn('system_metadata', dict(inst.iteritems()).keys()) def test_security_group_get_no_instances(self): instance = db.instance_create(self.ctxt, {}) sid = self._create_security_group({'instances': [instance]})['id'] session = get_session() self.mox.StubOutWithMock(sqlalchemy_api, 'get_session') sqlalchemy_api.get_session(use_slave=False).AndReturn(session) sqlalchemy_api.get_session(use_slave=False).AndReturn(session) self.mox.ReplayAll() security_group = db.security_group_get(self.ctxt, sid, columns_to_join=['instances']) session.expunge(security_group) self.assertEqual(1, len(security_group['instances'])) security_group = db.security_group_get(self.ctxt, sid) session.expunge(security_group) self.assertRaises(sqlalchemy_orm_exc.DetachedInstanceError, getattr, security_group, 'instances') def test_security_group_get_not_found_exception(self): self.assertRaises(exception.SecurityGroupNotFound, db.security_group_get, self.ctxt, 100500) def test_security_group_get_by_name(self): security_group1 = self._create_security_group({'name': 'fake1'}) security_group2 = self._create_security_group({'name': 'fake2'}) real_security_group1 = db.security_group_get_by_name( self.ctxt, security_group1['project_id'], security_group1['name'], columns_to_join=None) real_security_group2 = db.security_group_get_by_name( self.ctxt, security_group2['project_id'], security_group2['name'], columns_to_join=None) self._assertEqualObjects(security_group1, real_security_group1) self._assertEqualObjects(security_group2, real_security_group2) def test_security_group_get_by_project(self): security_group1 = self._create_security_group( {'name': 'fake1', 'project_id': 'fake_proj1'}) security_group2 = self._create_security_group( {'name': 'fake2', 'project_id': 'fake_proj2'}) real1 = db.security_group_get_by_project( self.ctxt, security_group1['project_id']) real2 = db.security_group_get_by_project( self.ctxt, security_group2['project_id']) expected1, expected2 = [security_group1], [security_group2] self._assertEqualListsOfObjects(expected1, real1, ignored_keys=['instances']) self._assertEqualListsOfObjects(expected2, real2, ignored_keys=['instances']) def test_security_group_get_by_instance(self): instance = db.instance_create(self.ctxt, dict(host='foo')) values = [ {'name': 'fake1', 'instances': [instance]}, {'name': 'fake2', 'instances': [instance]}, {'name': 'fake3', 'instances': []}, ] security_groups = [self._create_security_group(vals) for vals in values] real = db.security_group_get_by_instance(self.ctxt, instance['uuid']) expected = security_groups[:2] self._assertEqualListsOfObjects(expected, real, ignored_keys=['instances']) def test_security_group_get_all(self): values = [ {'name': 'fake1', 'project_id': 'fake_proj1'}, {'name': 'fake2', 'project_id': 'fake_proj2'}, ] security_groups = [self._create_security_group(vals) for vals in values] real = db.security_group_get_all(self.ctxt) self._assertEqualListsOfObjects(security_groups, real, ignored_keys=['instances']) def test_security_group_in_use(self): instance = db.instance_create(self.ctxt, dict(host='foo')) values = [ {'instances': [instance], 'name': 'fake_in_use'}, {'instances': []}, ] security_groups = [self._create_security_group(vals) for vals in values] real = [] for security_group in security_groups: in_use = db.security_group_in_use(self.ctxt, security_group['id']) real.append(in_use) expected = [True, False] self.assertEqual(expected, real) def test_security_group_ensure_default(self): self.ctxt.project_id = 'fake' self.ctxt.user_id = 'fake' self.assertEqual(0, len(db.security_group_get_by_project( self.ctxt, self.ctxt.project_id))) db.security_group_ensure_default(self.ctxt) security_groups = db.security_group_get_by_project( self.ctxt, self.ctxt.project_id) self.assertEqual(1, len(security_groups)) self.assertEqual("default", security_groups[0]["name"]) usage = db.quota_usage_get(self.ctxt, self.ctxt.project_id, 'security_groups', self.ctxt.user_id) self.assertEqual(1, usage.in_use) def test_security_group_update(self): security_group = self._create_security_group({}) new_values = { 'name': 'sec_group1', 'description': 'sec_group_descr1', 'user_id': 'fake_user1', 'project_id': 'fake_proj1', } columns_to_join = ['rules.grantee_group'] updated_group = db.security_group_update(self.ctxt, security_group['id'], new_values, columns_to_join=['rules.grantee_group']) for key, value in new_values.iteritems(): self.assertEqual(updated_group[key], value) self.assertEqual(updated_group['rules'], []) def test_security_group_update_to_duplicate(self): security_group1 = self._create_security_group( {'name': 'fake1', 'project_id': 'fake_proj1'}) security_group2 = self._create_security_group( {'name': 'fake1', 'project_id': 'fake_proj2'}) self.assertRaises(exception.SecurityGroupExists, db.security_group_update, self.ctxt, security_group2['id'], {'project_id': 'fake_proj1'}) class InstanceTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.instance_* methods.""" sample_data = { 'project_id': 'project1', 'hostname': 'example.com', 'host': 'h1', 'node': 'n1', 'metadata': {'mkey1': 'mval1', 'mkey2': 'mval2'}, 'system_metadata': {'smkey1': 'smval1', 'smkey2': 'smval2'}, 'info_cache': {'ckey': 'cvalue'}, } def setUp(self): super(InstanceTestCase, self).setUp() self.ctxt = context.get_admin_context() def _assertEqualInstances(self, instance1, instance2): self._assertEqualObjects(instance1, instance2, ignored_keys=['metadata', 'system_metadata', 'info_cache']) def _assertEqualListsOfInstances(self, list1, list2): self._assertEqualListsOfObjects(list1, list2, ignored_keys=['metadata', 'system_metadata', 'info_cache']) def create_instance_with_args(self, **kwargs): if 'context' in kwargs: context = kwargs.pop('context') else: context = self.ctxt args = self.sample_data.copy() args.update(kwargs) return db.instance_create(context, args) def test_instance_create(self): instance = self.create_instance_with_args() self.assertTrue(uuidutils.is_uuid_like(instance['uuid'])) def test_instance_create_with_object_values(self): values = { 'access_ip_v4': netaddr.IPAddress('1.2.3.4'), 'access_ip_v6': netaddr.IPAddress('::1'), } dt_keys = ('created_at', 'deleted_at', 'updated_at', 'launched_at', 'terminated_at', 'scheduled_at') dt = timeutils.utcnow() dt_utc = dt.replace(tzinfo=iso8601.iso8601.Utc()) for key in dt_keys: values[key] = dt_utc inst = db.instance_create(self.ctxt, values) self.assertEqual(inst['access_ip_v4'], '1.2.3.4') self.assertEqual(inst['access_ip_v6'], '::1') for key in dt_keys: self.assertEqual(inst[key], dt) def test_instance_update_with_object_values(self): values = { 'access_ip_v4': netaddr.IPAddress('1.2.3.4'), 'access_ip_v6': netaddr.IPAddress('::1'), } dt_keys = ('created_at', 'deleted_at', 'updated_at', 'launched_at', 'terminated_at', 'scheduled_at') dt = timeutils.utcnow() dt_utc = dt.replace(tzinfo=iso8601.iso8601.Utc()) for key in dt_keys: values[key] = dt_utc inst = db.instance_create(self.ctxt, {}) inst = db.instance_update(self.ctxt, inst['uuid'], values) self.assertEqual(inst['access_ip_v4'], '1.2.3.4') self.assertEqual(inst['access_ip_v6'], '::1') for key in dt_keys: self.assertEqual(inst[key], dt) def test_instance_update_no_metadata_clobber(self): meta = {'foo': 'bar'} sys_meta = {'sfoo': 'sbar'} values = { 'metadata': meta, 'system_metadata': sys_meta, } inst = db.instance_create(self.ctxt, {}) inst = db.instance_update(self.ctxt, inst['uuid'], values) self.assertEqual({'foo': 'bar'}, meta) self.assertEqual({'sfoo': 'sbar'}, sys_meta) def test_instance_get_all_with_meta(self): inst = self.create_instance_with_args() for inst in db.instance_get_all(self.ctxt): meta = utils.metadata_to_dict(inst['metadata']) self.assertEqual(meta, self.sample_data['metadata']) sys_meta = utils.metadata_to_dict(inst['system_metadata']) self.assertEqual(sys_meta, self.sample_data['system_metadata']) def test_instance_update(self): instance = self.create_instance_with_args() metadata = {'host': 'bar', 'key2': 'wuff'} system_metadata = {'original_image_ref': 'baz'} # Update the metadata db.instance_update(self.ctxt, instance['uuid'], {'metadata': metadata, 'system_metadata': system_metadata}) # Retrieve the user-provided metadata to ensure it was successfully # updated self.assertEqual(metadata, db.instance_metadata_get(self.ctxt, instance['uuid'])) self.assertEqual(system_metadata, db.instance_system_metadata_get(self.ctxt, instance['uuid'])) def test_instance_update_bad_str_dates(self): instance = self.create_instance_with_args() values = {'created_at': '123'} self.assertRaises(ValueError, db.instance_update, self.ctxt, instance['uuid'], values) def test_instance_update_good_str_dates(self): instance = self.create_instance_with_args() values = {'created_at': '2011-01-31T00:00:00.0'} actual = db.instance_update(self.ctxt, instance['uuid'], values) expected = datetime.datetime(2011, 1, 31) self.assertEqual(expected, actual["created_at"]) def test_create_instance_unique_hostname(self): context1 = context.RequestContext('user1', 'p1') context2 = context.RequestContext('user2', 'p2') self.create_instance_with_args(hostname='h1', project_id='p1') # With scope 'global' any duplicate should fail, be it this project: self.flags(osapi_compute_unique_server_name_scope='global') self.assertRaises(exception.InstanceExists, self.create_instance_with_args, context=context1, hostname='h1', project_id='p3') # or another: self.assertRaises(exception.InstanceExists, self.create_instance_with_args, context=context2, hostname='h1', project_id='p2') # With scope 'project' a duplicate in the project should fail: self.flags(osapi_compute_unique_server_name_scope='project') self.assertRaises(exception.InstanceExists, self.create_instance_with_args, context=context1, hostname='h1', project_id='p1') # With scope 'project' a duplicate in a different project should work: self.flags(osapi_compute_unique_server_name_scope='project') self.create_instance_with_args(context=context2, hostname='h2') self.flags(osapi_compute_unique_server_name_scope=None) def test_instance_get_all_by_filters_with_meta(self): inst = self.create_instance_with_args() for inst in db.instance_get_all_by_filters(self.ctxt, {}): meta = utils.metadata_to_dict(inst['metadata']) self.assertEqual(meta, self.sample_data['metadata']) sys_meta = utils.metadata_to_dict(inst['system_metadata']) self.assertEqual(sys_meta, self.sample_data['system_metadata']) def test_instance_get_all_by_filters_without_meta(self): inst = self.create_instance_with_args() result = db.instance_get_all_by_filters(self.ctxt, {}, columns_to_join=[]) for inst in result: meta = utils.metadata_to_dict(inst['metadata']) self.assertEqual(meta, {}) sys_meta = utils.metadata_to_dict(inst['system_metadata']) self.assertEqual(sys_meta, {}) def test_instance_get_all_by_filters(self): instances = [self.create_instance_with_args() for i in range(3)] filtered_instances = db.instance_get_all_by_filters(self.ctxt, {}) self._assertEqualListsOfInstances(instances, filtered_instances) def test_instance_metadata_get_multi(self): uuids = [self.create_instance_with_args()['uuid'] for i in range(3)] meta = sqlalchemy_api._instance_metadata_get_multi(self.ctxt, uuids) for row in meta: self.assertIn(row['instance_uuid'], uuids) def test_instance_metadata_get_multi_no_uuids(self): self.mox.StubOutWithMock(query.Query, 'filter') self.mox.ReplayAll() sqlalchemy_api._instance_metadata_get_multi(self.ctxt, []) def test_instance_system_system_metadata_get_multi(self): uuids = [self.create_instance_with_args()['uuid'] for i in range(3)] sys_meta = sqlalchemy_api._instance_system_metadata_get_multi( self.ctxt, uuids) for row in sys_meta: self.assertIn(row['instance_uuid'], uuids) def test_instance_system_metadata_get_multi_no_uuids(self): self.mox.StubOutWithMock(query.Query, 'filter') self.mox.ReplayAll() sqlalchemy_api._instance_system_metadata_get_multi(self.ctxt, []) def test_instance_get_all_by_filters_regex(self): i1 = self.create_instance_with_args(display_name='test1') i2 = self.create_instance_with_args(display_name='teeeest2') self.create_instance_with_args(display_name='diff') result = db.instance_get_all_by_filters(self.ctxt, {'display_name': 't.*st.'}) self._assertEqualListsOfInstances(result, [i1, i2]) def test_instance_get_all_by_filters_changes_since(self): i1 = self.create_instance_with_args(updated_at= '2013-12-05T15:03:25.000000') i2 = self.create_instance_with_args(updated_at= '2013-12-05T15:03:26.000000') changes_since = iso8601.parse_date('2013-12-05T15:03:25.000000') result = db.instance_get_all_by_filters(self.ctxt, {'changes-since': changes_since}) self._assertEqualListsOfInstances([i1, i2], result) changes_since = iso8601.parse_date('2013-12-05T15:03:26.000000') result = db.instance_get_all_by_filters(self.ctxt, {'changes-since': changes_since}) self._assertEqualListsOfInstances([i2], result) def test_instance_get_all_by_filters_exact_match(self): instance = self.create_instance_with_args(host='host1') self.create_instance_with_args(host='host12') result = db.instance_get_all_by_filters(self.ctxt, {'host': 'host1'}) self._assertEqualListsOfInstances([instance], result) def test_instance_get_all_by_filters_metadata(self): instance = self.create_instance_with_args(metadata={'foo': 'bar'}) self.create_instance_with_args() result = db.instance_get_all_by_filters(self.ctxt, {'metadata': {'foo': 'bar'}}) self._assertEqualListsOfInstances([instance], result) def test_instance_get_all_by_filters_system_metadata(self): instance = self.create_instance_with_args( system_metadata={'foo': 'bar'}) self.create_instance_with_args() result = db.instance_get_all_by_filters(self.ctxt, {'system_metadata': {'foo': 'bar'}}) self._assertEqualListsOfInstances([instance], result) def test_instance_get_all_by_filters_unicode_value(self): instance = self.create_instance_with_args(display_name=u'test♥') result = db.instance_get_all_by_filters(self.ctxt, {'display_name': u'test'}) self._assertEqualListsOfInstances([instance], result) def test_instance_get_all_by_filters_tags(self): instance = self.create_instance_with_args( metadata={'foo': 'bar'}) self.create_instance_with_args() #For format 'tag-' result = db.instance_get_all_by_filters( self.ctxt, {'filter': [ {'name': 'tag-key', 'value': 'foo'}, {'name': 'tag-value', 'value': 'bar'}, ]}) self._assertEqualListsOfInstances([instance], result) #For format 'tag:' result = db.instance_get_all_by_filters( self.ctxt, {'filter': [ {'name': 'tag:foo', 'value': 'bar'}, ]}) self._assertEqualListsOfInstances([instance], result) #For non-existent tag result = db.instance_get_all_by_filters( self.ctxt, {'filter': [ {'name': 'tag:foo', 'value': 'barred'}, ]}) self.assertEqual([], result) #Confirm with deleted tags db.instance_metadata_delete(self.ctxt, instance['uuid'], 'foo') #For format 'tag-' result = db.instance_get_all_by_filters( self.ctxt, {'filter': [ {'name': 'tag-key', 'value': 'foo'}, ]}) self.assertEqual([], result) result = db.instance_get_all_by_filters( self.ctxt, {'filter': [ {'name': 'tag-value', 'value': 'bar'} ]}) self.assertEqual([], result) #For format 'tag:' result = db.instance_get_all_by_filters( self.ctxt, {'filter': [ {'name': 'tag:foo', 'value': 'bar'}, ]}) self.assertEqual([], result) def test_instance_get_by_uuid(self): inst = self.create_instance_with_args() result = db.instance_get_by_uuid(self.ctxt, inst['uuid']) self._assertEqualInstances(inst, result) def test_instance_get_by_uuid_join_empty(self): inst = self.create_instance_with_args() result = db.instance_get_by_uuid(self.ctxt, inst['uuid'], columns_to_join=[]) meta = utils.metadata_to_dict(result['metadata']) self.assertEqual(meta, {}) sys_meta = utils.metadata_to_dict(result['system_metadata']) self.assertEqual(sys_meta, {}) def test_instance_get_by_uuid_join_meta(self): inst = self.create_instance_with_args() result = db.instance_get_by_uuid(self.ctxt, inst['uuid'], columns_to_join=['metadata']) meta = utils.metadata_to_dict(result['metadata']) self.assertEqual(meta, self.sample_data['metadata']) sys_meta = utils.metadata_to_dict(result['system_metadata']) self.assertEqual(sys_meta, {}) def test_instance_get_by_uuid_join_sys_meta(self): inst = self.create_instance_with_args() result = db.instance_get_by_uuid(self.ctxt, inst['uuid'], columns_to_join=['system_metadata']) meta = utils.metadata_to_dict(result['metadata']) self.assertEqual(meta, {}) sys_meta = utils.metadata_to_dict(result['system_metadata']) self.assertEqual(sys_meta, self.sample_data['system_metadata']) def test_instance_get_all_by_filters_deleted(self): inst1 = self.create_instance_with_args() inst2 = self.create_instance_with_args(reservation_id='b') db.instance_destroy(self.ctxt, inst1['uuid']) result = db.instance_get_all_by_filters(self.ctxt, {}) self._assertEqualListsOfObjects([inst1, inst2], result, ignored_keys=['metadata', 'system_metadata', 'deleted', 'deleted_at', 'info_cache', 'pci_devices']) def test_instance_get_all_by_filters_deleted_and_soft_deleted(self): inst1 = self.create_instance_with_args() inst2 = self.create_instance_with_args(vm_state=vm_states.SOFT_DELETED) inst3 = self.create_instance_with_args() db.instance_destroy(self.ctxt, inst1['uuid']) result = db.instance_get_all_by_filters(self.ctxt, {'deleted': True}) self._assertEqualListsOfObjects([inst1, inst2], result, ignored_keys=['metadata', 'system_metadata', 'deleted', 'deleted_at', 'info_cache', 'pci_devices']) def test_instance_get_all_by_filters_deleted_no_soft_deleted(self): inst1 = self.create_instance_with_args() inst2 = self.create_instance_with_args(vm_state=vm_states.SOFT_DELETED) inst3 = self.create_instance_with_args() db.instance_destroy(self.ctxt, inst1['uuid']) result = db.instance_get_all_by_filters(self.ctxt, {'deleted': True, 'soft_deleted': False}) self._assertEqualListsOfObjects([inst1], result, ignored_keys=['deleted', 'deleted_at', 'metadata', 'system_metadata', 'info_cache', 'pci_devices']) def test_instance_get_all_by_filters_alive_and_soft_deleted(self): inst1 = self.create_instance_with_args() inst2 = self.create_instance_with_args(vm_state=vm_states.SOFT_DELETED) inst3 = self.create_instance_with_args() db.instance_destroy(self.ctxt, inst1['uuid']) result = db.instance_get_all_by_filters(self.ctxt, {'deleted': False, 'soft_deleted': True}) self._assertEqualListsOfInstances([inst2, inst3], result) def test_instance_get_all_by_filters_not_deleted(self): inst1 = self.create_instance_with_args() inst2 = self.create_instance_with_args(vm_state=vm_states.SOFT_DELETED) inst3 = self.create_instance_with_args() inst4 = self.create_instance_with_args(vm_state=vm_states.ACTIVE) db.instance_destroy(self.ctxt, inst1['uuid']) result = db.instance_get_all_by_filters(self.ctxt, {'deleted': False}) self.assertIsNone(inst3.vm_state) self._assertEqualListsOfInstances([inst3, inst4], result) def test_instance_get_all_by_filters_cleaned(self): inst1 = self.create_instance_with_args() inst2 = self.create_instance_with_args(reservation_id='b') db.instance_update(self.ctxt, inst1['uuid'], {'cleaned': 1}) result = db.instance_get_all_by_filters(self.ctxt, {}) self.assertEqual(2, len(result)) self.assertIn(inst1['uuid'], [result[0]['uuid'], result[1]['uuid']]) self.assertIn(inst2['uuid'], [result[0]['uuid'], result[1]['uuid']]) if inst1['uuid'] == result[0]['uuid']: self.assertTrue(result[0]['cleaned']) self.assertFalse(result[1]['cleaned']) else: self.assertTrue(result[1]['cleaned']) self.assertFalse(result[0]['cleaned']) def test_instance_get_all_by_host_and_node_no_join(self): instance = self.create_instance_with_args() result = db.instance_get_all_by_host_and_node(self.ctxt, 'h1', 'n1') self.assertEqual(result[0]['uuid'], instance['uuid']) self.assertEqual(result[0]['system_metadata'], []) def test_instance_get_all_hung_in_rebooting(self): # Ensure no instances are returned. results = db.instance_get_all_hung_in_rebooting(self.ctxt, 10) self.assertEqual([], results) # Ensure one rebooting instance with updated_at older than 10 seconds # is returned. instance = self.create_instance_with_args(task_state="rebooting", updated_at=datetime.datetime(2000, 1, 1, 12, 0, 0)) results = db.instance_get_all_hung_in_rebooting(self.ctxt, 10) self._assertEqualListsOfObjects([instance], results, ignored_keys=['task_state', 'info_cache', 'security_groups', 'metadata', 'system_metadata', 'pci_devices']) db.instance_update(self.ctxt, instance['uuid'], {"task_state": None}) # Ensure the newly rebooted instance is not returned. instance = self.create_instance_with_args(task_state="rebooting", updated_at=timeutils.utcnow()) results = db.instance_get_all_hung_in_rebooting(self.ctxt, 10) self.assertEqual([], results) def test_instance_update_with_expected_vm_state(self): instance = self.create_instance_with_args(vm_state='foo') db.instance_update(self.ctxt, instance['uuid'], {'host': 'h1', 'expected_vm_state': ('foo', 'bar')}) def test_instance_update_with_unexpected_vm_state(self): instance = self.create_instance_with_args(vm_state='foo') self.assertRaises(exception.UnexpectedVMStateError, db.instance_update, self.ctxt, instance['uuid'], {'host': 'h1', 'expected_vm_state': ('spam', 'bar')}) def test_instance_update_with_instance_uuid(self): # test instance_update() works when an instance UUID is passed. ctxt = context.get_admin_context() # Create an instance with some metadata values = {'metadata': {'host': 'foo', 'key1': 'meow'}, 'system_metadata': {'original_image_ref': 'blah'}} instance = db.instance_create(ctxt, values) # Update the metadata values = {'metadata': {'host': 'bar', 'key2': 'wuff'}, 'system_metadata': {'original_image_ref': 'baz'}} db.instance_update(ctxt, instance['uuid'], values) # Retrieve the user-provided metadata to ensure it was successfully # updated instance_meta = db.instance_metadata_get(ctxt, instance['uuid']) self.assertEqual('bar', instance_meta['host']) self.assertEqual('wuff', instance_meta['key2']) self.assertNotIn('key1', instance_meta) # Retrieve the system metadata to ensure it was successfully updated system_meta = db.instance_system_metadata_get(ctxt, instance['uuid']) self.assertEqual('baz', system_meta['original_image_ref']) def test_delete_instance_metadata_on_instance_destroy(self): ctxt = context.get_admin_context() # Create an instance with some metadata values = {'metadata': {'host': 'foo', 'key1': 'meow'}, 'system_metadata': {'original_image_ref': 'blah'}} instance = db.instance_create(ctxt, values) instance_meta = db.instance_metadata_get(ctxt, instance['uuid']) self.assertEqual('foo', instance_meta['host']) self.assertEqual('meow', instance_meta['key1']) db.instance_destroy(ctxt, instance['uuid']) instance_meta = db.instance_metadata_get(ctxt, instance['uuid']) # Make sure instance metadata is deleted as well self.assertEqual({}, instance_meta) def test_delete_instance_faults_on_instance_destroy(self): ctxt = context.get_admin_context() uuid = str(stdlib_uuid.uuid4()) # Create faults db.instance_create(ctxt, {'uuid': uuid}) fault_values = { 'message': 'message', 'details': 'detail', 'instance_uuid': uuid, 'code': 404, 'host': 'localhost' } fault = db.instance_fault_create(ctxt, fault_values) # Retrieve the fault to ensure it was successfully added faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid]) self.assertEqual(1, len(faults[uuid])) self._assertEqualObjects(fault, faults[uuid][0]) db.instance_destroy(ctxt, uuid) faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid]) # Make sure instance faults is deleted as well self.assertEqual(0, len(faults[uuid])) def test_instance_update_with_and_get_original(self): instance = self.create_instance_with_args(vm_state='building') (old_ref, new_ref) = db.instance_update_and_get_original(self.ctxt, instance['uuid'], {'vm_state': 'needscoffee'}) self.assertEqual('building', old_ref['vm_state']) self.assertEqual('needscoffee', new_ref['vm_state']) def test_instance_update_and_get_original_metadata(self): instance = self.create_instance_with_args() columns_to_join = ['metadata'] (old_ref, new_ref) = db.instance_update_and_get_original( self.ctxt, instance['uuid'], {'vm_state': 'needscoffee'}, columns_to_join=columns_to_join) meta = utils.metadata_to_dict(new_ref['metadata']) self.assertEqual(meta, self.sample_data['metadata']) sys_meta = utils.metadata_to_dict(new_ref['system_metadata']) self.assertEqual(sys_meta, {}) def test_instance_update_and_get_original_metadata_none_join(self): instance = self.create_instance_with_args() (old_ref, new_ref) = db.instance_update_and_get_original( self.ctxt, instance['uuid'], {'metadata': {'mk1': 'mv3'}}) meta = utils.metadata_to_dict(new_ref['metadata']) self.assertEqual(meta, {'mk1': 'mv3'}) def test_instance_update_unique_name(self): context1 = context.RequestContext('user1', 'p1') context2 = context.RequestContext('user2', 'p2') inst1 = self.create_instance_with_args(context=context1, project_id='p1', hostname='fake_name1') inst2 = self.create_instance_with_args(context=context1, project_id='p1', hostname='fake_name2') inst3 = self.create_instance_with_args(context=context2, project_id='p2', hostname='fake_name3') # osapi_compute_unique_server_name_scope is unset so this should work: db.instance_update(context1, inst1['uuid'], {'hostname': 'fake_name2'}) db.instance_update(context1, inst1['uuid'], {'hostname': 'fake_name1'}) # With scope 'global' any duplicate should fail. self.flags(osapi_compute_unique_server_name_scope='global') self.assertRaises(exception.InstanceExists, db.instance_update, context1, inst2['uuid'], {'hostname': 'fake_name1'}) self.assertRaises(exception.InstanceExists, db.instance_update, context2, inst3['uuid'], {'hostname': 'fake_name1'}) # But we should definitely be able to update our name if we aren't # really changing it. db.instance_update(context1, inst1['uuid'], {'hostname': 'fake_NAME'}) # With scope 'project' a duplicate in the project should fail: self.flags(osapi_compute_unique_server_name_scope='project') self.assertRaises(exception.InstanceExists, db.instance_update, context1, inst2['uuid'], {'hostname': 'fake_NAME'}) # With scope 'project' a duplicate in a different project should work: self.flags(osapi_compute_unique_server_name_scope='project') db.instance_update(context2, inst3['uuid'], {'hostname': 'fake_NAME'}) def _test_instance_update_updates_metadata(self, metadata_type): instance = self.create_instance_with_args() def set_and_check(meta): inst = db.instance_update(self.ctxt, instance['uuid'], {metadata_type: dict(meta)}) _meta = utils.metadata_to_dict(inst[metadata_type]) self.assertEqual(meta, _meta) meta = {'speed': '88', 'units': 'MPH'} set_and_check(meta) meta['gigawatts'] = '1.21' set_and_check(meta) del meta['gigawatts'] set_and_check(meta) def test_security_group_in_use(self): instance = db.instance_create(self.ctxt, dict(host='foo')) values = [ {'instances': [instance]}, {'instances': []}, ] def test_instance_update_updates_system_metadata(self): # Ensure that system_metadata is updated during instance_update self._test_instance_update_updates_metadata('system_metadata') def test_instance_update_updates_metadata(self): # Ensure that metadata is updated during instance_update self._test_instance_update_updates_metadata('metadata') def test_instance_floating_address_get_all(self): ctxt = context.get_admin_context() instance1 = db.instance_create(ctxt, {'host': 'h1', 'hostname': 'n1'}) instance2 = db.instance_create(ctxt, {'host': 'h2', 'hostname': 'n2'}) fixed_addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] float_addresses = ['2.1.1.1', '2.1.1.2', '2.1.1.3'] instance_uuids = [instance1['uuid'], instance1['uuid'], instance2['uuid']] for fixed_addr, float_addr, instance_uuid in zip(fixed_addresses, float_addresses, instance_uuids): db.fixed_ip_create(ctxt, {'address': fixed_addr, 'instance_uuid': instance_uuid}) fixed_id = db.fixed_ip_get_by_address(ctxt, fixed_addr)['id'] db.floating_ip_create(ctxt, {'address': float_addr, 'fixed_ip_id': fixed_id}) real_float_addresses = \ db.instance_floating_address_get_all(ctxt, instance_uuids[0]) self.assertEqual(set(float_addresses[:2]), set(real_float_addresses)) real_float_addresses = \ db.instance_floating_address_get_all(ctxt, instance_uuids[2]) self.assertEqual(set([float_addresses[2]]), set(real_float_addresses)) def test_instance_stringified_ips(self): instance = self.create_instance_with_args() instance = db.instance_update( self.ctxt, instance['uuid'], {'access_ip_v4': netaddr.IPAddress('1.2.3.4'), 'access_ip_v6': netaddr.IPAddress('::1')}) self.assertIsInstance(instance['access_ip_v4'], six.string_types) self.assertIsInstance(instance['access_ip_v6'], six.string_types) instance = db.instance_get_by_uuid(self.ctxt, instance['uuid']) self.assertIsInstance(instance['access_ip_v4'], six.string_types) self.assertIsInstance(instance['access_ip_v6'], six.string_types) def test_instance_destroy(self): ctxt = context.get_admin_context() values = { 'metadata': {'key': 'value'} } inst_uuid = self.create_instance_with_args(**values)['uuid'] db.instance_destroy(ctxt, inst_uuid) self.assertRaises(exception.InstanceNotFound, db.instance_get, ctxt, inst_uuid) self.assertIsNone(db.instance_info_cache_get(ctxt, inst_uuid)) self.assertEqual({}, db.instance_metadata_get(ctxt, inst_uuid)) def test_instance_destroy_already_destroyed(self): ctxt = context.get_admin_context() instance = self.create_instance_with_args() db.instance_destroy(ctxt, instance['uuid']) self.assertRaises(exception.InstanceNotFound, db.instance_destroy, ctxt, instance['uuid']) class InstanceMetadataTestCase(test.TestCase): """Tests for db.api.instance_metadata_* methods.""" def setUp(self): super(InstanceMetadataTestCase, self).setUp() self.ctxt = context.get_admin_context() def test_instance_metadata_get(self): instance = db.instance_create(self.ctxt, {'metadata': {'key': 'value'}}) self.assertEqual({'key': 'value'}, db.instance_metadata_get( self.ctxt, instance['uuid'])) def test_instance_metadata_delete(self): instance = db.instance_create(self.ctxt, {'metadata': {'key': 'val', 'key1': 'val1'}}) db.instance_metadata_delete(self.ctxt, instance['uuid'], 'key1') self.assertEqual({'key': 'val'}, db.instance_metadata_get( self.ctxt, instance['uuid'])) def test_instance_metadata_update(self): instance = db.instance_create(self.ctxt, {'host': 'h1', 'project_id': 'p1', 'metadata': {'key': 'value'}}) # This should add new key/value pair metadata = db.instance_metadata_update( self.ctxt, instance['uuid'], {'new_key': 'new_value'}, False) metadata = db.instance_metadata_get(self.ctxt, instance['uuid']) self.assertEqual(metadata, {'key': 'value', 'new_key': 'new_value'}) # This should leave only one key/value pair metadata = db.instance_metadata_update( self.ctxt, instance['uuid'], {'new_key': 'new_value'}, True) metadata = db.instance_metadata_get(self.ctxt, instance['uuid']) self.assertEqual(metadata, {'new_key': 'new_value'}) class ServiceTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(ServiceTestCase, self).setUp() self.ctxt = context.get_admin_context() def _get_base_values(self): return { 'host': 'fake_host', 'binary': 'fake_binary', 'topic': 'fake_topic', 'report_count': 3, 'disabled': False } def _create_service(self, values): v = self._get_base_values() v.update(values) return db.service_create(self.ctxt, v) def test_service_create(self): service = self._create_service({}) self.assertIsNotNone(service['id']) for key, value in self._get_base_values().iteritems(): self.assertEqual(value, service[key]) def test_service_destroy(self): service1 = self._create_service({}) service2 = self._create_service({'host': 'fake_host2'}) db.service_destroy(self.ctxt, service1['id']) self.assertRaises(exception.ServiceNotFound, db.service_get, self.ctxt, service1['id']) self._assertEqualObjects(db.service_get(self.ctxt, service2['id']), service2, ignored_keys=['compute_node']) def test_service_update(self): service = self._create_service({}) new_values = { 'host': 'fake_host1', 'binary': 'fake_binary1', 'topic': 'fake_topic1', 'report_count': 4, 'disabled': True } db.service_update(self.ctxt, service['id'], new_values) updated_service = db.service_get(self.ctxt, service['id']) for key, value in new_values.iteritems(): self.assertEqual(value, updated_service[key]) def test_service_update_not_found_exception(self): self.assertRaises(exception.ServiceNotFound, db.service_update, self.ctxt, 100500, {}) def test_service_get(self): service1 = self._create_service({}) self._create_service({'host': 'some_other_fake_host'}) real_service1 = db.service_get(self.ctxt, service1['id']) self._assertEqualObjects(service1, real_service1, ignored_keys=['compute_node']) def test_service_get_with_compute_node(self): service = self._create_service({}) compute_values = dict(vcpus=2, memory_mb=1024, local_gb=2048, vcpus_used=0, memory_mb_used=0, local_gb_used=0, free_ram_mb=1024, free_disk_gb=2048, hypervisor_type="xen", hypervisor_version=1, cpu_info="", running_vms=0, current_workload=0, service_id=service['id']) compute = db.compute_node_create(self.ctxt, compute_values) real_service = db.service_get(self.ctxt, service['id']) real_compute = real_service['compute_node'][0] self.assertEqual(compute['id'], real_compute['id']) def test_service_get_not_found_exception(self): self.assertRaises(exception.ServiceNotFound, db.service_get, self.ctxt, 100500) def test_service_get_by_host_and_topic(self): service1 = self._create_service({'host': 'host1', 'topic': 'topic1'}) self._create_service({'host': 'host2', 'topic': 'topic2'}) real_service1 = db.service_get_by_host_and_topic(self.ctxt, host='host1', topic='topic1') self._assertEqualObjects(service1, real_service1) def test_service_get_all(self): values = [ {'host': 'host1', 'topic': 'topic1'}, {'host': 'host2', 'topic': 'topic2'}, {'disabled': True} ] services = [self._create_service(vals) for vals in values] disabled_services = [services[-1]] non_disabled_services = services[:-1] compares = [ (services, db.service_get_all(self.ctxt)), (disabled_services, db.service_get_all(self.ctxt, True)), (non_disabled_services, db.service_get_all(self.ctxt, False)) ] for comp in compares: self._assertEqualListsOfObjects(*comp) def test_service_get_all_by_topic(self): values = [ {'host': 'host1', 'topic': 't1'}, {'host': 'host2', 'topic': 't1'}, {'disabled': True, 'topic': 't1'}, {'host': 'host3', 'topic': 't2'} ] services = [self._create_service(vals) for vals in values] expected = services[:2] real = db.service_get_all_by_topic(self.ctxt, 't1') self._assertEqualListsOfObjects(expected, real) def test_service_get_all_by_host(self): values = [ {'host': 'host1', 'topic': 't11', 'binary': 'b11'}, {'host': 'host1', 'topic': 't12', 'binary': 'b12'}, {'host': 'host2', 'topic': 't1'}, {'host': 'host3', 'topic': 't1'} ] services = [self._create_service(vals) for vals in values] expected = services[:2] real = db.service_get_all_by_host(self.ctxt, 'host1') self._assertEqualListsOfObjects(expected, real) def test_service_get_by_compute_host(self): values = [ {'host': 'host1', 'topic': CONF.compute_topic}, {'host': 'host2', 'topic': 't1'}, {'host': 'host3', 'topic': CONF.compute_topic} ] services = [self._create_service(vals) for vals in values] real_service = db.service_get_by_compute_host(self.ctxt, 'host1') self._assertEqualObjects(services[0], real_service, ignored_keys=['compute_node']) self.assertRaises(exception.ComputeHostNotFound, db.service_get_by_compute_host, self.ctxt, 'non-exists-host') def test_service_get_by_compute_host_not_found(self): self.assertRaises(exception.ComputeHostNotFound, db.service_get_by_compute_host, self.ctxt, 'non-exists-host') def test_service_get_by_args(self): values = [ {'host': 'host1', 'binary': 'a'}, {'host': 'host2', 'binary': 'b'} ] services = [self._create_service(vals) for vals in values] service1 = db.service_get_by_args(self.ctxt, 'host1', 'a') self._assertEqualObjects(services[0], service1) service2 = db.service_get_by_args(self.ctxt, 'host2', 'b') self._assertEqualObjects(services[1], service2) def test_service_get_by_args_not_found_exception(self): self.assertRaises(exception.HostBinaryNotFound, db.service_get_by_args, self.ctxt, 'non-exists-host', 'a') def test_service_binary_exists_exception(self): db.service_create(self.ctxt, self._get_base_values()) values = self._get_base_values() values.update({'topic': 'top1'}) self.assertRaises(exception.ServiceBinaryExists, db.service_create, self.ctxt, values) def test_service_topic_exists_exceptions(self): db.service_create(self.ctxt, self._get_base_values()) values = self._get_base_values() values.update({'binary': 'bin1'}) self.assertRaises(exception.ServiceTopicExists, db.service_create, self.ctxt, values) class BaseInstanceTypeTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(BaseInstanceTypeTestCase, self).setUp() self.ctxt = context.get_admin_context() self.user_ctxt = context.RequestContext('user', 'user') def _get_base_values(self): return { 'name': 'fake_name', 'memory_mb': 512, 'vcpus': 1, 'root_gb': 10, 'ephemeral_gb': 10, 'flavorid': 'fake_flavor', 'swap': 0, 'rxtx_factor': 0.5, 'vcpu_weight': 1, 'disabled': False, 'is_public': True } def _create_flavor(self, values, projects=None): v = self._get_base_values() v.update(values) return db.flavor_create(self.ctxt, v, projects) class InstanceActionTestCase(test.TestCase, ModelsObjectComparatorMixin): IGNORED_FIELDS = [ 'id', 'created_at', 'updated_at', 'deleted_at', 'deleted' ] def setUp(self): super(InstanceActionTestCase, self).setUp() self.ctxt = context.get_admin_context() def _create_action_values(self, uuid, action='run_instance', ctxt=None, extra=None): if ctxt is None: ctxt = self.ctxt db.instance_create(ctxt, {'uuid': uuid}) values = { 'action': action, 'instance_uuid': uuid, 'request_id': ctxt.request_id, 'user_id': ctxt.user_id, 'project_id': ctxt.project_id, 'start_time': timeutils.utcnow(), 'message': 'action-message' } if extra is not None: values.update(extra) return values def _create_event_values(self, uuid, event='schedule', ctxt=None, extra=None): if ctxt is None: ctxt = self.ctxt values = { 'event': event, 'instance_uuid': uuid, 'request_id': ctxt.request_id, 'start_time': timeutils.utcnow(), 'host': 'fake-host', 'details': 'fake-details', } if extra is not None: values.update(extra) return values def _assertActionSaved(self, action, uuid): """Retrieve the action to ensure it was successfully added.""" actions = db.actions_get(self.ctxt, uuid) self.assertEqual(1, len(actions)) self._assertEqualObjects(action, actions[0]) def _assertActionEventSaved(self, event, action_id): # Retrieve the event to ensure it was successfully added events = db.action_events_get(self.ctxt, action_id) self.assertEqual(1, len(events)) self._assertEqualObjects(event, events[0], ['instance_uuid', 'request_id']) def test_instance_action_start(self): """Create an instance action.""" uuid = str(stdlib_uuid.uuid4()) action_values = self._create_action_values(uuid) action = db.action_start(self.ctxt, action_values) ignored_keys = self.IGNORED_FIELDS + ['finish_time'] self._assertEqualObjects(action_values, action, ignored_keys) self._assertActionSaved(action, uuid) def test_instance_action_finish(self): """Create an instance action.""" uuid = str(stdlib_uuid.uuid4()) action_values = self._create_action_values(uuid) db.action_start(self.ctxt, action_values) action_values['finish_time'] = timeutils.utcnow() action = db.action_finish(self.ctxt, action_values) self._assertEqualObjects(action_values, action, self.IGNORED_FIELDS) self._assertActionSaved(action, uuid) def test_instance_action_finish_without_started_event(self): """Create an instance finish action.""" uuid = str(stdlib_uuid.uuid4()) action_values = self._create_action_values(uuid) action_values['finish_time'] = timeutils.utcnow() self.assertRaises(exception.InstanceActionNotFound, db.action_finish, self.ctxt, action_values) def test_instance_actions_get_by_instance(self): """Ensure we can get actions by UUID.""" uuid1 = str(stdlib_uuid.uuid4()) expected = [] action_values = self._create_action_values(uuid1) action = db.action_start(self.ctxt, action_values) expected.append(action) action_values['action'] = 'resize' action = db.action_start(self.ctxt, action_values) expected.append(action) # Create some extra actions uuid2 = str(stdlib_uuid.uuid4()) ctxt2 = context.get_admin_context() action_values = self._create_action_values(uuid2, 'reboot', ctxt2) db.action_start(ctxt2, action_values) db.action_start(ctxt2, action_values) # Retrieve the action to ensure it was successfully added actions = db.actions_get(self.ctxt, uuid1) self._assertEqualListsOfObjects(expected, actions) def test_instance_actions_get_are_in_order(self): """Ensure retrived actions are in order.""" uuid1 = str(stdlib_uuid.uuid4()) extra = { 'created_at': timeutils.utcnow() } action_values = self._create_action_values(uuid1, extra=extra) action1 = db.action_start(self.ctxt, action_values) action_values['action'] = 'delete' action2 = db.action_start(self.ctxt, action_values) actions = db.actions_get(self.ctxt, uuid1) self.assertEqual(2, len(actions)) self._assertEqualOrderedListOfObjects([action2, action1], actions) def test_instance_action_get_by_instance_and_action(self): """Ensure we can get an action by instance UUID and action id.""" ctxt2 = context.get_admin_context() uuid1 = str(stdlib_uuid.uuid4()) uuid2 = str(stdlib_uuid.uuid4()) action_values = self._create_action_values(uuid1) db.action_start(self.ctxt, action_values) action_values['action'] = 'resize' db.action_start(self.ctxt, action_values) action_values = self._create_action_values(uuid2, 'reboot', ctxt2) db.action_start(ctxt2, action_values) db.action_start(ctxt2, action_values) actions = db.actions_get(self.ctxt, uuid1) request_id = actions[0]['request_id'] action = db.action_get_by_request_id(self.ctxt, uuid1, request_id) self.assertEqual('run_instance', action['action']) self.assertEqual(self.ctxt.request_id, action['request_id']) def test_instance_action_event_start(self): """Create an instance action event.""" uuid = str(stdlib_uuid.uuid4()) action_values = self._create_action_values(uuid) action = db.action_start(self.ctxt, action_values) event_values = self._create_event_values(uuid) event = db.action_event_start(self.ctxt, event_values) # self.fail(self._dict_from_object(event, None)) event_values['action_id'] = action['id'] ignored = self.IGNORED_FIELDS + ['finish_time', 'traceback', 'result'] self._assertEqualObjects(event_values, event, ignored) self._assertActionEventSaved(event, action['id']) def test_instance_action_event_start_without_action(self): """Create an instance action event.""" uuid = str(stdlib_uuid.uuid4()) event_values = self._create_event_values(uuid) self.assertRaises(exception.InstanceActionNotFound, db.action_event_start, self.ctxt, event_values) def test_instance_action_event_finish_without_started_event(self): """Finish an instance action event.""" uuid = str(stdlib_uuid.uuid4()) db.action_start(self.ctxt, self._create_action_values(uuid)) event_values = { 'finish_time': timeutils.utcnow() + datetime.timedelta(seconds=5), 'result': 'Success' } event_values = self._create_event_values(uuid, extra=event_values) self.assertRaises(exception.InstanceActionEventNotFound, db.action_event_finish, self.ctxt, event_values) def test_instance_action_event_finish_without_action(self): """Finish an instance action event.""" uuid = str(stdlib_uuid.uuid4()) event_values = { 'finish_time': timeutils.utcnow() + datetime.timedelta(seconds=5), 'result': 'Success' } event_values = self._create_event_values(uuid, extra=event_values) self.assertRaises(exception.InstanceActionNotFound, db.action_event_finish, self.ctxt, event_values) def test_instance_action_event_finish_success(self): """Finish an instance action event.""" uuid = str(stdlib_uuid.uuid4()) action = db.action_start(self.ctxt, self._create_action_values(uuid)) db.action_event_start(self.ctxt, self._create_event_values(uuid)) event_values = { 'finish_time': timeutils.utcnow() + datetime.timedelta(seconds=5), 'result': 'Success' } event_values = self._create_event_values(uuid, extra=event_values) event = db.action_event_finish(self.ctxt, event_values) self._assertActionEventSaved(event, action['id']) action = db.action_get_by_request_id(self.ctxt, uuid, self.ctxt.request_id) self.assertNotEqual('Error', action['message']) def test_instance_action_event_finish_error(self): """Finish an instance action event with an error.""" uuid = str(stdlib_uuid.uuid4()) action = db.action_start(self.ctxt, self._create_action_values(uuid)) db.action_event_start(self.ctxt, self._create_event_values(uuid)) event_values = { 'finish_time': timeutils.utcnow() + datetime.timedelta(seconds=5), 'result': 'Error' } event_values = self._create_event_values(uuid, extra=event_values) event = db.action_event_finish(self.ctxt, event_values) self._assertActionEventSaved(event, action['id']) action = db.action_get_by_request_id(self.ctxt, uuid, self.ctxt.request_id) self.assertEqual('Error', action['message']) def test_instance_action_and_event_start_string_time(self): """Create an instance action and event with a string start_time.""" uuid = str(stdlib_uuid.uuid4()) action = db.action_start(self.ctxt, self._create_action_values(uuid)) event_values = {'start_time': timeutils.strtime(timeutils.utcnow())} event_values = self._create_event_values(uuid, extra=event_values) event = db.action_event_start(self.ctxt, event_values) self._assertActionEventSaved(event, action['id']) def test_instance_action_events_get_are_in_order(self): """Ensure retrived action events are in order.""" uuid1 = str(stdlib_uuid.uuid4()) action = db.action_start(self.ctxt, self._create_action_values(uuid1)) extra1 = { 'created_at': timeutils.utcnow() } extra2 = { 'created_at': timeutils.utcnow() + datetime.timedelta(seconds=5) } event_val1 = self._create_event_values(uuid1, 'schedule', extra=extra1) event_val2 = self._create_event_values(uuid1, 'run', extra=extra1) event_val3 = self._create_event_values(uuid1, 'stop', extra=extra2) event1 = db.action_event_start(self.ctxt, event_val1) event2 = db.action_event_start(self.ctxt, event_val2) event3 = db.action_event_start(self.ctxt, event_val3) events = db.action_events_get(self.ctxt, action['id']) self.assertEqual(3, len(events)) self._assertEqualOrderedListOfObjects([event3, event2, event1], events, ['instance_uuid', 'request_id']) def test_instance_action_event_get_by_id(self): """Get a specific instance action event.""" ctxt2 = context.get_admin_context() uuid1 = str(stdlib_uuid.uuid4()) uuid2 = str(stdlib_uuid.uuid4()) action = db.action_start(self.ctxt, self._create_action_values(uuid1)) db.action_start(ctxt2, self._create_action_values(uuid2, 'reboot', ctxt2)) event = db.action_event_start(self.ctxt, self._create_event_values(uuid1)) event_values = self._create_event_values(uuid2, 'reboot', ctxt2) db.action_event_start(ctxt2, event_values) # Retrieve the event to ensure it was successfully added saved_event = db.action_event_get_by_id(self.ctxt, action['id'], event['id']) self._assertEqualObjects(event, saved_event, ['instance_uuid', 'request_id']) class InstanceFaultTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(InstanceFaultTestCase, self).setUp() self.ctxt = context.get_admin_context() def _create_fault_values(self, uuid, code=404): return { 'message': 'message', 'details': 'detail', 'instance_uuid': uuid, 'code': code, 'host': 'localhost' } def test_instance_fault_create(self): """Ensure we can create an instance fault.""" uuid = str(stdlib_uuid.uuid4()) # Ensure no faults registered for this instance faults = db.instance_fault_get_by_instance_uuids(self.ctxt, [uuid]) self.assertEqual(0, len(faults[uuid])) # Create a fault fault_values = self._create_fault_values(uuid) db.instance_create(self.ctxt, {'uuid': uuid}) fault = db.instance_fault_create(self.ctxt, fault_values) ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at', 'id'] self._assertEqualObjects(fault_values, fault, ignored_keys) # Retrieve the fault to ensure it was successfully added faults = db.instance_fault_get_by_instance_uuids(self.ctxt, [uuid]) self.assertEqual(1, len(faults[uuid])) self._assertEqualObjects(fault, faults[uuid][0]) def test_instance_fault_get_by_instance(self): """Ensure we can retrieve faults for instance.""" uuids = [str(stdlib_uuid.uuid4()), str(stdlib_uuid.uuid4())] fault_codes = [404, 500] expected = {} # Create faults for uuid in uuids: db.instance_create(self.ctxt, {'uuid': uuid}) expected[uuid] = [] for code in fault_codes: fault_values = self._create_fault_values(uuid, code) fault = db.instance_fault_create(self.ctxt, fault_values) expected[uuid].append(fault) # Ensure faults are saved faults = db.instance_fault_get_by_instance_uuids(self.ctxt, uuids) self.assertEqual(len(expected), len(faults)) for uuid in uuids: self._assertEqualListsOfObjects(expected[uuid], faults[uuid]) def test_instance_faults_get_by_instance_uuids_no_faults(self): uuid = str(stdlib_uuid.uuid4()) # None should be returned when no faults exist. faults = db.instance_fault_get_by_instance_uuids(self.ctxt, [uuid]) expected = {uuid: []} self.assertEqual(expected, faults) def test_instance_faults_get_by_instance_uuids_no_uuids(self): self.mox.StubOutWithMock(query.Query, 'filter') self.mox.ReplayAll() faults = db.instance_fault_get_by_instance_uuids(self.ctxt, []) self.assertEqual({}, faults) class InstanceTypeTestCase(BaseInstanceTypeTestCase): def test_flavor_create(self): flavor = self._create_flavor({}) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at', 'extra_specs'] self.assertIsNotNone(flavor['id']) self._assertEqualObjects(flavor, self._get_base_values(), ignored_keys) def test_flavor_create_with_projects(self): projects = ['fake-project1', 'fake-project2'] flavor = self._create_flavor({}, projects + ['fake-project2']) access = db.flavor_access_get_by_flavor_id(self.ctxt, flavor['flavorid']) self.assertEqual(projects, [x.project_id for x in access]) def test_flavor_destroy(self): specs1 = {'a': '1', 'b': '2'} flavor1 = self._create_flavor({'name': 'name1', 'flavorid': 'a1', 'extra_specs': specs1}) specs2 = {'c': '4', 'd': '3'} flavor2 = self._create_flavor({'name': 'name2', 'flavorid': 'a2', 'extra_specs': specs2}) db.flavor_destroy(self.ctxt, 'name1') self.assertRaises(exception.FlavorNotFound, db.flavor_get, self.ctxt, flavor1['id']) real_specs1 = db.flavor_extra_specs_get(self.ctxt, flavor1['flavorid']) self._assertEqualObjects(real_specs1, {}) r_flavor2 = db.flavor_get(self.ctxt, flavor2['id']) self._assertEqualObjects(flavor2, r_flavor2, 'extra_specs') def test_flavor_destroy_not_found(self): self.assertRaises(exception.FlavorNotFound, db.flavor_destroy, self.ctxt, 'nonexists') def test_flavor_create_duplicate_name(self): self._create_flavor({}) self.assertRaises(exception.FlavorExists, self._create_flavor, {'flavorid': 'some_random_flavor'}) def test_flavor_create_duplicate_flavorid(self): self._create_flavor({}) self.assertRaises(exception.FlavorIdExists, self._create_flavor, {'name': 'some_random_name'}) def test_flavor_create_with_extra_specs(self): extra_specs = dict(a='abc', b='def', c='ghi') flavor = self._create_flavor({'extra_specs': extra_specs}) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at', 'extra_specs'] self._assertEqualObjects(flavor, self._get_base_values(), ignored_keys) self._assertEqualObjects(extra_specs, flavor['extra_specs']) def test_flavor_get_all(self): # NOTE(boris-42): Remove base instance types for it in db.flavor_get_all(self.ctxt): db.flavor_destroy(self.ctxt, it['name']) flavors = [ {'root_gb': 600, 'memory_mb': 100, 'disabled': True, 'is_public': True, 'name': 'a1', 'flavorid': 'f1'}, {'root_gb': 500, 'memory_mb': 200, 'disabled': True, 'is_public': True, 'name': 'a2', 'flavorid': 'f2'}, {'root_gb': 400, 'memory_mb': 300, 'disabled': False, 'is_public': True, 'name': 'a3', 'flavorid': 'f3'}, {'root_gb': 300, 'memory_mb': 400, 'disabled': False, 'is_public': False, 'name': 'a4', 'flavorid': 'f4'}, {'root_gb': 200, 'memory_mb': 500, 'disabled': True, 'is_public': False, 'name': 'a5', 'flavorid': 'f5'}, {'root_gb': 100, 'memory_mb': 600, 'disabled': True, 'is_public': False, 'name': 'a6', 'flavorid': 'f6'} ] flavors = [self._create_flavor(it) for it in flavors] lambda_filters = { 'min_memory_mb': lambda it, v: it['memory_mb'] >= v, 'min_root_gb': lambda it, v: it['root_gb'] >= v, 'disabled': lambda it, v: it['disabled'] == v, 'is_public': lambda it, v: (v is None or it['is_public'] == v) } mem_filts = [{'min_memory_mb': x} for x in [100, 350, 550, 650]] root_filts = [{'min_root_gb': x} for x in [100, 350, 550, 650]] disabled_filts = [{'disabled': x} for x in [True, False]] is_public_filts = [{'is_public': x} for x in [True, False, None]] def assert_multi_filter_flavor_get(filters=None): if filters is None: filters = {} expected_it = flavors for name, value in filters.iteritems(): filt = lambda it: lambda_filters[name](it, value) expected_it = filter(filt, expected_it) real_it = db.flavor_get_all(self.ctxt, filters=filters) self._assertEqualListsOfObjects(expected_it, real_it) #no filter assert_multi_filter_flavor_get() #test only with one filter for filt in mem_filts: assert_multi_filter_flavor_get(filt) for filt in root_filts: assert_multi_filter_flavor_get(filt) for filt in disabled_filts: assert_multi_filter_flavor_get(filt) for filt in is_public_filts: assert_multi_filter_flavor_get(filt) #test all filters together for mem in mem_filts: for root in root_filts: for disabled in disabled_filts: for is_public in is_public_filts: filts = [f.items() for f in [mem, root, disabled, is_public]] filts = dict(reduce(lambda x, y: x + y, filts, [])) assert_multi_filter_flavor_get(filts) def test_flavor_get_all_limit_sort(self): def assert_sorted_by_key_dir(sort_key, asc=True): sort_dir = 'asc' if asc else 'desc' results = db.flavor_get_all(self.ctxt, sort_key='name', sort_dir=sort_dir) # Manually sort the results as we would expect them expected_results = sorted(results, key=lambda item: item['name'], reverse=(not asc)) self.assertEqual(expected_results, results) def assert_sorted_by_key_both_dir(sort_key): assert_sorted_by_key_dir(sort_key, True) assert_sorted_by_key_dir(sort_key, False) for attr in ['memory_mb', 'root_gb', 'deleted_at', 'name', 'deleted', 'created_at', 'ephemeral_gb', 'updated_at', 'disabled', 'vcpus', 'swap', 'rxtx_factor', 'is_public', 'flavorid', 'vcpu_weight', 'id']: assert_sorted_by_key_both_dir(attr) def test_flavor_get_all_limit(self): limited_flavors = db.flavor_get_all(self.ctxt, limit=2) self.assertEqual(2, len(limited_flavors)) def test_flavor_get_all_list_marker(self): all_flavors = db.flavor_get_all(self.ctxt) # Set the 3rd result as the marker marker_flavorid = all_flavors[2]['flavorid'] marked_flavors = db.flavor_get_all(self.ctxt, marker=marker_flavorid) # We expect everything /after/ the 3rd result expected_results = all_flavors[3:] self.assertEqual(expected_results, marked_flavors) def test_flavor_get_all_marker_not_found(self): self.assertRaises(exception.MarkerNotFound, db.flavor_get_all, self.ctxt, marker='invalid') def test_flavor_get(self): flavors = [{'name': 'abc', 'flavorid': '123'}, {'name': 'def', 'flavorid': '456'}, {'name': 'ghi', 'flavorid': '789'}] flavors = [self._create_flavor(t) for t in flavors] for flavor in flavors: flavor_by_id = db.flavor_get(self.ctxt, flavor['id']) self._assertEqualObjects(flavor, flavor_by_id) def test_flavor_get_non_public(self): flavor = self._create_flavor({'name': 'abc', 'flavorid': '123', 'is_public': False}) # Admin can see it flavor_by_id = db.flavor_get(self.ctxt, flavor['id']) self._assertEqualObjects(flavor, flavor_by_id) # Regular user can not self.assertRaises(exception.FlavorNotFound, db.flavor_get, self.user_ctxt, flavor['id']) # Regular user can see it after being granted access db.flavor_access_add(self.ctxt, flavor['flavorid'], self.user_ctxt.project_id) flavor_by_id = db.flavor_get(self.user_ctxt, flavor['id']) self._assertEqualObjects(flavor, flavor_by_id) def test_flavor_get_by_name(self): flavors = [{'name': 'abc', 'flavorid': '123'}, {'name': 'def', 'flavorid': '456'}, {'name': 'ghi', 'flavorid': '789'}] flavors = [self._create_flavor(t) for t in flavors] for flavor in flavors: flavor_by_name = db.flavor_get_by_name(self.ctxt, flavor['name']) self._assertEqualObjects(flavor, flavor_by_name) def test_flavor_get_by_name_not_found(self): self._create_flavor({}) self.assertRaises(exception.FlavorNotFoundByName, db.flavor_get_by_name, self.ctxt, 'nonexists') def test_flavor_get_by_name_non_public(self): flavor = self._create_flavor({'name': 'abc', 'flavorid': '123', 'is_public': False}) # Admin can see it flavor_by_name = db.flavor_get_by_name(self.ctxt, flavor['name']) self._assertEqualObjects(flavor, flavor_by_name) # Regular user can not self.assertRaises(exception.FlavorNotFoundByName, db.flavor_get_by_name, self.user_ctxt, flavor['name']) # Regular user can see it after being granted access db.flavor_access_add(self.ctxt, flavor['flavorid'], self.user_ctxt.project_id) flavor_by_name = db.flavor_get_by_name(self.user_ctxt, flavor['name']) self._assertEqualObjects(flavor, flavor_by_name) def test_flavor_get_by_flavor_id(self): flavors = [{'name': 'abc', 'flavorid': '123'}, {'name': 'def', 'flavorid': '456'}, {'name': 'ghi', 'flavorid': '789'}] flavors = [self._create_flavor(t) for t in flavors] for flavor in flavors: params = (self.ctxt, flavor['flavorid']) flavor_by_flavorid = db.flavor_get_by_flavor_id(*params) self._assertEqualObjects(flavor, flavor_by_flavorid) def test_flavor_get_by_flavor_not_found(self): self._create_flavor({}) self.assertRaises(exception.FlavorNotFound, db.flavor_get_by_flavor_id, self.ctxt, 'nonexists') def test_flavor_get_by_flavor_id_non_public(self): flavor = self._create_flavor({'name': 'abc', 'flavorid': '123', 'is_public': False}) # Admin can see it flavor_by_fid = db.flavor_get_by_flavor_id(self.ctxt, flavor['flavorid']) self._assertEqualObjects(flavor, flavor_by_fid) # Regular user can not self.assertRaises(exception.FlavorNotFound, db.flavor_get_by_flavor_id, self.user_ctxt, flavor['flavorid']) # Regular user can see it after being granted access db.flavor_access_add(self.ctxt, flavor['flavorid'], self.user_ctxt.project_id) flavor_by_fid = db.flavor_get_by_flavor_id(self.user_ctxt, flavor['flavorid']) self._assertEqualObjects(flavor, flavor_by_fid) def test_flavor_get_by_flavor_id_deleted(self): flavor = self._create_flavor({'name': 'abc', 'flavorid': '123'}) db.flavor_destroy(self.ctxt, 'abc') flavor_by_fid = db.flavor_get_by_flavor_id(self.ctxt, flavor['flavorid'], read_deleted='yes') self.assertEqual(flavor['id'], flavor_by_fid['id']) def test_flavor_get_by_flavor_id_deleted_and_recreat(self): # NOTE(wingwj): Aims to test difference between mysql and postgresql # for bug 1288636 param_dict = {'name': 'abc', 'flavorid': '123'} self._create_flavor(param_dict) db.flavor_destroy(self.ctxt, 'abc') # Recreate the flavor with the same params flavor = self._create_flavor(param_dict) flavor_by_fid = db.flavor_get_by_flavor_id(self.ctxt, flavor['flavorid'], read_deleted='yes') self.assertEqual(flavor['id'], flavor_by_fid['id']) class InstanceTypeExtraSpecsTestCase(BaseInstanceTypeTestCase): def setUp(self): super(InstanceTypeExtraSpecsTestCase, self).setUp() values = ({'name': 'n1', 'flavorid': 'f1', 'extra_specs': dict(a='a', b='b', c='c')}, {'name': 'n2', 'flavorid': 'f2', 'extra_specs': dict(d='d', e='e', f='f')}) # NOTE(boris-42): We have already tested flavor_create method # with extra_specs in InstanceTypeTestCase. self.flavors = [self._create_flavor(v) for v in values] def test_flavor_extra_specs_get(self): for it in self.flavors: real_specs = db.flavor_extra_specs_get(self.ctxt, it['flavorid']) self._assertEqualObjects(it['extra_specs'], real_specs) def test_flavor_extra_specs_get_item(self): expected = dict(f1=dict(a='a', b='b', c='c'), f2=dict(d='d', e='e', f='f')) for flavor, specs in expected.iteritems(): for key, val in specs.iteritems(): spec = db.flavor_extra_specs_get_item(self.ctxt, flavor, key) self.assertEqual(spec[key], val) def test_flavor_extra_specs_delete(self): for it in self.flavors: specs = it['extra_specs'] key = specs.keys()[0] del specs[key] db.flavor_extra_specs_delete(self.ctxt, it['flavorid'], key) real_specs = db.flavor_extra_specs_get(self.ctxt, it['flavorid']) self._assertEqualObjects(it['extra_specs'], real_specs) def test_flavor_extra_specs_delete_failed(self): for it in self.flavors: self.assertRaises(exception.FlavorExtraSpecsNotFound, db.flavor_extra_specs_delete, self.ctxt, it['flavorid'], 'dummy') def test_flavor_extra_specs_update_or_create(self): for it in self.flavors: current_specs = it['extra_specs'] current_specs.update(dict(b='b1', c='c1', d='d1', e='e1')) params = (self.ctxt, it['flavorid'], current_specs) db.flavor_extra_specs_update_or_create(*params) real_specs = db.flavor_extra_specs_get(self.ctxt, it['flavorid']) self._assertEqualObjects(current_specs, real_specs) def test_flavor_extra_specs_update_or_create_flavor_not_found(self): self.assertRaises(exception.FlavorNotFound, db.flavor_extra_specs_update_or_create, self.ctxt, 'nonexists', {}) def test_flavor_extra_specs_update_or_create_retry(self): def counted(): def get_id(context, flavorid, session): get_id.counter += 1 raise db_exc.DBDuplicateEntry get_id.counter = 0 return get_id get_id = counted() self.stubs.Set(sqlalchemy_api, '_flavor_get_id_from_flavor', get_id) self.assertRaises(db_exc.DBDuplicateEntry, sqlalchemy_api. flavor_extra_specs_update_or_create, self.ctxt, 1, {}, 5) self.assertEqual(get_id.counter, 5) class InstanceTypeAccessTestCase(BaseInstanceTypeTestCase): def _create_flavor_access(self, flavor_id, project_id): return db.flavor_access_add(self.ctxt, flavor_id, project_id) def test_flavor_access_get_by_flavor_id(self): flavors = ({'name': 'n1', 'flavorid': 'f1'}, {'name': 'n2', 'flavorid': 'f2'}) it1, it2 = tuple((self._create_flavor(v) for v in flavors)) access_it1 = [self._create_flavor_access(it1['flavorid'], 'pr1'), self._create_flavor_access(it1['flavorid'], 'pr2')] access_it2 = [self._create_flavor_access(it2['flavorid'], 'pr1')] for it, access_it in zip((it1, it2), (access_it1, access_it2)): params = (self.ctxt, it['flavorid']) real_access_it = db.flavor_access_get_by_flavor_id(*params) self._assertEqualListsOfObjects(access_it, real_access_it) def test_flavor_access_get_by_flavor_id_flavor_not_found(self): self.assertRaises(exception.FlavorNotFound, db.flavor_get_by_flavor_id, self.ctxt, 'nonexists') def test_flavor_access_add(self): flavor = self._create_flavor({'flavorid': 'f1'}) project_id = 'p1' access = self._create_flavor_access(flavor['flavorid'], project_id) # NOTE(boris-42): Check that flavor_access_add doesn't fail and # returns correct value. This is enough because other # logic is checked by other methods. self.assertIsNotNone(access['id']) self.assertEqual(access['instance_type_id'], flavor['id']) self.assertEqual(access['project_id'], project_id) def test_flavor_access_add_to_non_existing_flavor(self): self.assertRaises(exception.FlavorNotFound, self._create_flavor_access, 'nonexists', 'does_not_matter') def test_flavor_access_add_duplicate_project_id_flavor(self): flavor = self._create_flavor({'flavorid': 'f1'}) params = (flavor['flavorid'], 'p1') self._create_flavor_access(*params) self.assertRaises(exception.FlavorAccessExists, self._create_flavor_access, *params) def test_flavor_access_remove(self): flavors = ({'name': 'n1', 'flavorid': 'f1'}, {'name': 'n2', 'flavorid': 'f2'}) it1, it2 = tuple((self._create_flavor(v) for v in flavors)) access_it1 = [self._create_flavor_access(it1['flavorid'], 'pr1'), self._create_flavor_access(it1['flavorid'], 'pr2')] access_it2 = [self._create_flavor_access(it2['flavorid'], 'pr1')] db.flavor_access_remove(self.ctxt, it1['flavorid'], access_it1[1]['project_id']) for it, access_it in zip((it1, it2), (access_it1[:1], access_it2)): params = (self.ctxt, it['flavorid']) real_access_it = db.flavor_access_get_by_flavor_id(*params) self._assertEqualListsOfObjects(access_it, real_access_it) def test_flavor_access_remove_flavor_not_found(self): self.assertRaises(exception.FlavorNotFound, db.flavor_access_remove, self.ctxt, 'nonexists', 'does_not_matter') def test_flavor_access_remove_access_not_found(self): flavor = self._create_flavor({'flavorid': 'f1'}) params = (flavor['flavorid'], 'p1') self._create_flavor_access(*params) self.assertRaises(exception.FlavorAccessNotFound, db.flavor_access_remove, self.ctxt, flavor['flavorid'], 'p2') def test_flavor_access_removed_after_flavor_destroy(self): flavor1 = self._create_flavor({'flavorid': 'f1', 'name': 'n1'}) flavor2 = self._create_flavor({'flavorid': 'f2', 'name': 'n2'}) values = [ (flavor1['flavorid'], 'p1'), (flavor1['flavorid'], 'p2'), (flavor2['flavorid'], 'p3') ] for v in values: self._create_flavor_access(*v) db.flavor_destroy(self.ctxt, flavor1['name']) p = (self.ctxt, flavor1['flavorid']) self.assertEqual(0, len(db.flavor_access_get_by_flavor_id(*p))) p = (self.ctxt, flavor2['flavorid']) self.assertEqual(1, len(db.flavor_access_get_by_flavor_id(*p))) db.flavor_destroy(self.ctxt, flavor2['name']) self.assertEqual(0, len(db.flavor_access_get_by_flavor_id(*p))) class FixedIPTestCase(BaseInstanceTypeTestCase): def _timeout_test(self, ctxt, timeout, multi_host): instance = db.instance_create(ctxt, dict(host='foo')) net = db.network_create_safe(ctxt, dict(multi_host=multi_host, host='bar')) old = timeout - datetime.timedelta(seconds=5) new = timeout + datetime.timedelta(seconds=5) # should deallocate db.fixed_ip_create(ctxt, dict(allocated=False, instance_uuid=instance['uuid'], network_id=net['id'], updated_at=old)) # still allocated db.fixed_ip_create(ctxt, dict(allocated=True, instance_uuid=instance['uuid'], network_id=net['id'], updated_at=old)) # wrong network db.fixed_ip_create(ctxt, dict(allocated=False, instance_uuid=instance['uuid'], network_id=None, updated_at=old)) # too new db.fixed_ip_create(ctxt, dict(allocated=False, instance_uuid=instance['uuid'], network_id=None, updated_at=new)) def mock_db_query_first_to_raise_data_error_exception(self): self.mox.StubOutWithMock(query.Query, 'first') query.Query.first().AndRaise(exc.DataError(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())) self.mox.ReplayAll() def test_fixed_ip_disassociate_all_by_timeout_single_host(self): now = timeutils.utcnow() self._timeout_test(self.ctxt, now, False) result = db.fixed_ip_disassociate_all_by_timeout(self.ctxt, 'foo', now) self.assertEqual(result, 0) result = db.fixed_ip_disassociate_all_by_timeout(self.ctxt, 'bar', now) self.assertEqual(result, 1) def test_fixed_ip_disassociate_all_by_timeout_multi_host(self): now = timeutils.utcnow() self._timeout_test(self.ctxt, now, True) result = db.fixed_ip_disassociate_all_by_timeout(self.ctxt, 'foo', now) self.assertEqual(result, 1) result = db.fixed_ip_disassociate_all_by_timeout(self.ctxt, 'bar', now) self.assertEqual(result, 0) def test_fixed_ip_get_by_floating_address(self): fixed_ip = db.fixed_ip_create(self.ctxt, {'address': '192.168.0.2'}) values = {'address': '8.7.6.5', 'fixed_ip_id': fixed_ip['id']} floating = db.floating_ip_create(self.ctxt, values)['address'] fixed_ip_ref = db.fixed_ip_get_by_floating_address(self.ctxt, floating) self._assertEqualObjects(fixed_ip, fixed_ip_ref) def test_fixed_ip_get_by_host(self): host_ips = { 'host1': ['1.1.1.1', '1.1.1.2', '1.1.1.3'], 'host2': ['1.1.1.4', '1.1.1.5'], 'host3': ['1.1.1.6'] } for host, ips in host_ips.iteritems(): for ip in ips: instance_uuid = self._create_instance(host=host) db.fixed_ip_create(self.ctxt, {'address': ip}) db.fixed_ip_associate(self.ctxt, ip, instance_uuid) for host, ips in host_ips.iteritems(): ips_on_host = map(lambda x: x['address'], db.fixed_ip_get_by_host(self.ctxt, host)) self._assertEqualListsOfPrimitivesAsSets(ips_on_host, ips) def test_fixed_ip_get_by_network_host_not_found_exception(self): self.assertRaises( exception.FixedIpNotFoundForNetworkHost, db.fixed_ip_get_by_network_host, self.ctxt, 1, 'ignore') def test_fixed_ip_get_by_network_host_fixed_ip_found(self): db.fixed_ip_create(self.ctxt, dict(network_id=1, host='host')) fip = db.fixed_ip_get_by_network_host(self.ctxt, 1, 'host') self.assertEqual(1, fip['network_id']) self.assertEqual('host', fip['host']) def _create_instance(self, **kwargs): instance = db.instance_create(self.ctxt, kwargs) return instance['uuid'] def test_fixed_ip_get_by_instance_fixed_ip_found(self): instance_uuid = self._create_instance() FIXED_IP_ADDRESS = '192.168.1.5' db.fixed_ip_create(self.ctxt, dict( instance_uuid=instance_uuid, address=FIXED_IP_ADDRESS)) ips_list = db.fixed_ip_get_by_instance(self.ctxt, instance_uuid) self._assertEqualListsOfPrimitivesAsSets([FIXED_IP_ADDRESS], [ips_list[0].address]) def test_fixed_ip_get_by_instance_multiple_fixed_ips_found(self): instance_uuid = self._create_instance() FIXED_IP_ADDRESS_1 = '192.168.1.5' db.fixed_ip_create(self.ctxt, dict( instance_uuid=instance_uuid, address=FIXED_IP_ADDRESS_1)) FIXED_IP_ADDRESS_2 = '192.168.1.6' db.fixed_ip_create(self.ctxt, dict( instance_uuid=instance_uuid, address=FIXED_IP_ADDRESS_2)) ips_list = db.fixed_ip_get_by_instance(self.ctxt, instance_uuid) self._assertEqualListsOfPrimitivesAsSets( [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2], [ips_list[0].address, ips_list[1].address]) def test_fixed_ip_get_by_instance_inappropriate_ignored(self): instance_uuid = self._create_instance() FIXED_IP_ADDRESS_1 = '192.168.1.5' db.fixed_ip_create(self.ctxt, dict( instance_uuid=instance_uuid, address=FIXED_IP_ADDRESS_1)) FIXED_IP_ADDRESS_2 = '192.168.1.6' db.fixed_ip_create(self.ctxt, dict( instance_uuid=instance_uuid, address=FIXED_IP_ADDRESS_2)) another_instance = db.instance_create(self.ctxt, {}) db.fixed_ip_create(self.ctxt, dict( instance_uuid=another_instance['uuid'], address="192.168.1.7")) ips_list = db.fixed_ip_get_by_instance(self.ctxt, instance_uuid) self._assertEqualListsOfPrimitivesAsSets( [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2], [ips_list[0].address, ips_list[1].address]) def test_fixed_ip_get_by_instance_not_found_exception(self): instance_uuid = self._create_instance() self.assertRaises(exception.FixedIpNotFoundForInstance, db.fixed_ip_get_by_instance, self.ctxt, instance_uuid) def test_fixed_ips_by_virtual_interface_fixed_ip_found(self): instance_uuid = self._create_instance() vif = db.virtual_interface_create( self.ctxt, dict(instance_uuid=instance_uuid)) FIXED_IP_ADDRESS = '192.168.1.5' db.fixed_ip_create(self.ctxt, dict( virtual_interface_id=vif.id, address=FIXED_IP_ADDRESS)) ips_list = db.fixed_ips_by_virtual_interface(self.ctxt, vif.id) self._assertEqualListsOfPrimitivesAsSets([FIXED_IP_ADDRESS], [ips_list[0].address]) def test_fixed_ips_by_virtual_interface_multiple_fixed_ips_found(self): instance_uuid = self._create_instance() vif = db.virtual_interface_create( self.ctxt, dict(instance_uuid=instance_uuid)) FIXED_IP_ADDRESS_1 = '192.168.1.5' db.fixed_ip_create(self.ctxt, dict( virtual_interface_id=vif.id, address=FIXED_IP_ADDRESS_1)) FIXED_IP_ADDRESS_2 = '192.168.1.6' db.fixed_ip_create(self.ctxt, dict( virtual_interface_id=vif.id, address=FIXED_IP_ADDRESS_2)) ips_list = db.fixed_ips_by_virtual_interface(self.ctxt, vif.id) self._assertEqualListsOfPrimitivesAsSets( [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2], [ips_list[0].address, ips_list[1].address]) def test_fixed_ips_by_virtual_interface_inappropriate_ignored(self): instance_uuid = self._create_instance() vif = db.virtual_interface_create( self.ctxt, dict(instance_uuid=instance_uuid)) FIXED_IP_ADDRESS_1 = '192.168.1.5' db.fixed_ip_create(self.ctxt, dict( virtual_interface_id=vif.id, address=FIXED_IP_ADDRESS_1)) FIXED_IP_ADDRESS_2 = '192.168.1.6' db.fixed_ip_create(self.ctxt, dict( virtual_interface_id=vif.id, address=FIXED_IP_ADDRESS_2)) another_vif = db.virtual_interface_create( self.ctxt, dict(instance_uuid=instance_uuid)) db.fixed_ip_create(self.ctxt, dict( virtual_interface_id=another_vif.id, address="192.168.1.7")) ips_list = db.fixed_ips_by_virtual_interface(self.ctxt, vif.id) self._assertEqualListsOfPrimitivesAsSets( [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2], [ips_list[0].address, ips_list[1].address]) def test_fixed_ips_by_virtual_interface_no_ip_found(self): instance_uuid = self._create_instance() vif = db.virtual_interface_create( self.ctxt, dict(instance_uuid=instance_uuid)) ips_list = db.fixed_ips_by_virtual_interface(self.ctxt, vif.id) self.assertEqual(0, len(ips_list)) def create_fixed_ip(self, **params): default_params = {'address': '192.168.0.1'} default_params.update(params) return db.fixed_ip_create(self.ctxt, default_params)['address'] def test_fixed_ip_associate_fails_if_ip_not_in_network(self): instance_uuid = self._create_instance() self.assertRaises(exception.FixedIpNotFoundForNetwork, db.fixed_ip_associate, self.ctxt, None, instance_uuid) def test_fixed_ip_associate_fails_if_ip_in_use(self): instance_uuid = self._create_instance() address = self.create_fixed_ip(instance_uuid=instance_uuid) self.assertRaises(exception.FixedIpAlreadyInUse, db.fixed_ip_associate, self.ctxt, address, instance_uuid) def test_fixed_ip_associate_succeeds(self): instance_uuid = self._create_instance() network = db.network_create_safe(self.ctxt, {}) address = self.create_fixed_ip(network_id=network['id']) db.fixed_ip_associate(self.ctxt, address, instance_uuid, network_id=network['id']) fixed_ip = db.fixed_ip_get_by_address(self.ctxt, address) self.assertEqual(fixed_ip['instance_uuid'], instance_uuid) def test_fixed_ip_associate_succeeds_and_sets_network(self): instance_uuid = self._create_instance() network = db.network_create_safe(self.ctxt, {}) address = self.create_fixed_ip() db.fixed_ip_associate(self.ctxt, address, instance_uuid, network_id=network['id']) fixed_ip = db.fixed_ip_get_by_address(self.ctxt, address) self.assertEqual(fixed_ip['instance_uuid'], instance_uuid) self.assertEqual(fixed_ip['network_id'], network['id']) def test_fixed_ip_associate_pool_invalid_uuid(self): instance_uuid = '123' self.assertRaises(exception.InvalidUUID, db.fixed_ip_associate_pool, self.ctxt, None, instance_uuid) def test_fixed_ip_associate_pool_no_more_fixed_ips(self): instance_uuid = self._create_instance() self.assertRaises(exception.NoMoreFixedIps, db.fixed_ip_associate_pool, self.ctxt, None, instance_uuid) def test_fixed_ip_associate_pool_succeeds(self): instance_uuid = self._create_instance() network = db.network_create_safe(self.ctxt, {}) address = self.create_fixed_ip(network_id=network['id']) db.fixed_ip_associate_pool(self.ctxt, network['id'], instance_uuid) fixed_ip = db.fixed_ip_get_by_address(self.ctxt, address) self.assertEqual(fixed_ip['instance_uuid'], instance_uuid) def test_fixed_ip_create_same_address(self): address = '192.168.1.5' params = {'address': address} db.fixed_ip_create(self.ctxt, params) self.assertRaises(exception.FixedIpExists, db.fixed_ip_create, self.ctxt, params) def test_fixed_ip_create_success(self): instance_uuid = self._create_instance() network_id = db.network_create_safe(self.ctxt, {})['id'] param = { 'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': '192.168.1.5', 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id, 'virtual_interface_id': None } ignored_keys = ['created_at', 'id', 'deleted_at', 'updated_at'] fixed_ip_data = db.fixed_ip_create(self.ctxt, param) self._assertEqualObjects(param, fixed_ip_data, ignored_keys) def test_fixed_ip_bulk_create_same_address(self): address_1 = '192.168.1.5' address_2 = '192.168.1.6' instance_uuid = self._create_instance() network_id_1 = db.network_create_safe(self.ctxt, {})['id'] network_id_2 = db.network_create_safe(self.ctxt, {})['id'] params = [ {'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address_2, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id_1, 'virtual_interface_id': None}, {'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address_1, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id_1, 'virtual_interface_id': None}, {'reserved': False, 'deleted': 0, 'leased': False, 'host': 'localhost', 'address': address_2, 'allocated': True, 'instance_uuid': instance_uuid, 'network_id': network_id_2, 'virtual_interface_id': None}, ] self.assertRaises(exception.FixedIpExists, db.fixed_ip_bulk_create, self.ctxt, params) # In this case the transaction will be rolled back and none of the ips # will make it to the database. self.assertRaises(exception.FixedIpNotFoundForAddress, db.fixed_ip_get_by_address, self.ctxt, address_1) self.assertRaises(exception.FixedIpNotFoundForAddress, db.fixed_ip_get_by_address, self.ctxt, address_2) def test_fixed_ip_bulk_create_success(self): address_1 = '192.168.1.5' address_2 = '192.168.1.6' instance_uuid = self._create_instance() network_id_1 = db.network_create_safe(self.ctxt, {})['id'] network_id_2 = db.network_create_safe(self.ctxt, {})['id'] params = [ {'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address_1, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id_1, 'virtual_interface_id': None}, {'reserved': False, 'deleted': 0, 'leased': False, 'host': 'localhost', 'address': address_2, 'allocated': True, 'instance_uuid': instance_uuid, 'network_id': network_id_2, 'virtual_interface_id': None} ] db.fixed_ip_bulk_create(self.ctxt, params) ignored_keys = ['created_at', 'id', 'deleted_at', 'updated_at'] fixed_ip_data = db.fixed_ip_get_by_instance(self.ctxt, instance_uuid) # we have no `id` in incoming data so we can not use # _assertEqualListsOfObjects to compare incoming data and received # objects fixed_ip_data = sorted(fixed_ip_data, key=lambda i: i['network_id']) params = sorted(params, key=lambda i: i['network_id']) for param, ip in zip(params, fixed_ip_data): self._assertEqualObjects(param, ip, ignored_keys) def test_fixed_ip_disassociate(self): address = '192.168.1.5' instance_uuid = self._create_instance() network_id = db.network_create_safe(self.ctxt, {})['id'] param = { 'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id, 'virtual_interface_id': None } db.fixed_ip_create(self.ctxt, param) db.fixed_ip_disassociate(self.ctxt, address) fixed_ip_data = db.fixed_ip_get_by_address(self.ctxt, address) ignored_keys = ['created_at', 'id', 'deleted_at', 'updated_at', 'instance_uuid'] self._assertEqualObjects(param, fixed_ip_data, ignored_keys) self.assertIsNone(fixed_ip_data['instance_uuid']) def test_fixed_ip_get_not_found_exception(self): self.assertRaises(exception.FixedIpNotFound, db.fixed_ip_get, self.ctxt, 0) def test_fixed_ip_get_success2(self): address = '192.168.1.5' instance_uuid = self._create_instance() network_id = db.network_create_safe(self.ctxt, {})['id'] param = { 'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id, 'virtual_interface_id': None } fixed_ip_id = db.fixed_ip_create(self.ctxt, param) self.ctxt.is_admin = False self.assertRaises(exception.NotAuthorized, db.fixed_ip_get, self.ctxt, fixed_ip_id) def test_fixed_ip_get_success(self): address = '192.168.1.5' instance_uuid = self._create_instance() network_id = db.network_create_safe(self.ctxt, {})['id'] param = { 'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id, 'virtual_interface_id': None } db.fixed_ip_create(self.ctxt, param) fixed_ip_id = db.fixed_ip_get_by_address(self.ctxt, address)['id'] fixed_ip_data = db.fixed_ip_get(self.ctxt, fixed_ip_id) ignored_keys = ['created_at', 'id', 'deleted_at', 'updated_at'] self._assertEqualObjects(param, fixed_ip_data, ignored_keys) def test_fixed_ip_get_by_address(self): instance_uuid = self._create_instance() db.fixed_ip_create(self.ctxt, {'address': '1.2.3.4', 'instance_uuid': instance_uuid, }) fixed_ip = db.fixed_ip_get_by_address(self.ctxt, '1.2.3.4', columns_to_join=['instance']) self.assertIn('instance', fixed_ip.__dict__) self.assertEqual(instance_uuid, fixed_ip.instance.uuid) def test_fixed_ip_get_by_address_detailed_not_found_exception(self): self.assertRaises(exception.FixedIpNotFoundForAddress, db.fixed_ip_get_by_address_detailed, self.ctxt, '192.168.1.5') def test_fixed_ip_get_by_address_with_data_error_exception(self): self.mock_db_query_first_to_raise_data_error_exception() self.assertRaises(exception.FixedIpInvalid, db.fixed_ip_get_by_address_detailed, self.ctxt, '192.168.1.6') def test_fixed_ip_get_by_address_detailed_sucsess(self): address = '192.168.1.5' instance_uuid = self._create_instance() network_id = db.network_create_safe(self.ctxt, {})['id'] param = { 'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': address, 'allocated': False, 'instance_uuid': instance_uuid, 'network_id': network_id, 'virtual_interface_id': None } db.fixed_ip_create(self.ctxt, param) fixed_ip_data = db.fixed_ip_get_by_address_detailed(self.ctxt, address) # fixed ip check here ignored_keys = ['created_at', 'id', 'deleted_at', 'updated_at'] self._assertEqualObjects(param, fixed_ip_data[0], ignored_keys) # network model check here network_data = db.network_get(self.ctxt, network_id) self._assertEqualObjects(network_data, fixed_ip_data[1]) # Instance check here instance_data = db.instance_get_by_uuid(self.ctxt, instance_uuid) ignored_keys = ['info_cache', 'system_metadata', 'security_groups', 'metadata', 'pci_devices'] # HOW ???? self._assertEqualObjects(instance_data, fixed_ip_data[2], ignored_keys) def test_fixed_ip_update_not_found_for_address(self): self.assertRaises(exception.FixedIpNotFoundForAddress, db.fixed_ip_update, self.ctxt, '192.168.1.5', {}) def test_fixed_ip_update(self): instance_uuid_1 = self._create_instance() instance_uuid_2 = self._create_instance() network_id_1 = db.network_create_safe(self.ctxt, {})['id'] network_id_2 = db.network_create_safe(self.ctxt, {})['id'] param_1 = { 'reserved': True, 'deleted': 0, 'leased': True, 'host': '192.168.133.1', 'address': '10.0.0.2', 'allocated': True, 'instance_uuid': instance_uuid_1, 'network_id': network_id_1, 'virtual_interface_id': '123', } param_2 = { 'reserved': False, 'deleted': 0, 'leased': False, 'host': '127.0.0.1', 'address': '10.0.0.3', 'allocated': False, 'instance_uuid': instance_uuid_2, 'network_id': network_id_2, 'virtual_interface_id': None } ignored_keys = ['created_at', 'id', 'deleted_at', 'updated_at'] fixed_ip_addr = db.fixed_ip_create(self.ctxt, param_1)['address'] db.fixed_ip_update(self.ctxt, fixed_ip_addr, param_2) fixed_ip_after_update = db.fixed_ip_get_by_address(self.ctxt, param_2['address']) self._assertEqualObjects(param_2, fixed_ip_after_update, ignored_keys) class FloatingIpTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(FloatingIpTestCase, self).setUp() self.ctxt = context.get_admin_context() def _get_base_values(self): return { 'address': '1.1.1.1', 'fixed_ip_id': None, 'project_id': 'fake_project', 'host': 'fake_host', 'auto_assigned': False, 'pool': 'fake_pool', 'interface': 'fake_interface', } def mock_db_query_first_to_raise_data_error_exception(self): self.mox.StubOutWithMock(query.Query, 'first') query.Query.first().AndRaise(exc.DataError(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())) self.mox.ReplayAll() def _create_floating_ip(self, values): if not values: values = {} vals = self._get_base_values() vals.update(values) return db.floating_ip_create(self.ctxt, vals) def test_floating_ip_get(self): values = [{'address': '0.0.0.0'}, {'address': '1.1.1.1'}] floating_ips = [self._create_floating_ip(val) for val in values] for floating_ip in floating_ips: real_floating_ip = db.floating_ip_get(self.ctxt, floating_ip['id']) self._assertEqualObjects(floating_ip, real_floating_ip, ignored_keys=['fixed_ip']) def test_floating_ip_get_not_found(self): self.assertRaises(exception.FloatingIpNotFound, db.floating_ip_get, self.ctxt, 100500) def test_floating_ip_get_with_long_id_not_found(self): self.mock_db_query_first_to_raise_data_error_exception() self.assertRaises(exception.InvalidID, db.floating_ip_get, self.ctxt, 123456789101112) def test_floating_ip_get_pools(self): values = [ {'address': '0.0.0.0', 'pool': 'abc'}, {'address': '1.1.1.1', 'pool': 'abc'}, {'address': '2.2.2.2', 'pool': 'def'}, {'address': '3.3.3.3', 'pool': 'ghi'}, ] for val in values: self._create_floating_ip(val) expected_pools = [{'name': x} for x in set(map(lambda x: x['pool'], values))] real_pools = db.floating_ip_get_pools(self.ctxt) self._assertEqualListsOfPrimitivesAsSets(real_pools, expected_pools) def test_floating_ip_allocate_address(self): pools = { 'pool1': ['0.0.0.0', '1.1.1.1'], 'pool2': ['2.2.2.2'], 'pool3': ['3.3.3.3', '4.4.4.4', '5.5.5.5'] } for pool, addresses in pools.iteritems(): for address in addresses: vals = {'pool': pool, 'address': address, 'project_id': None} self._create_floating_ip(vals) project_id = self._get_base_values()['project_id'] for pool, addresses in pools.iteritems(): alloc_addrs = [] for i in addresses: float_addr = db.floating_ip_allocate_address(self.ctxt, project_id, pool) alloc_addrs.append(float_addr) self._assertEqualListsOfPrimitivesAsSets(alloc_addrs, addresses) def test_floating_ip_allocate_auto_assigned(self): addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3', '1.1.1.4'] float_ips = [] for i in range(0, 2): float_ips.append(self._create_floating_ip( {"address": addresses[i]})) for i in range(2, 4): float_ips.append(self._create_floating_ip({"address": addresses[i], "auto_assigned": True})) for i in range(0, 2): float_ip = db.floating_ip_get(self.ctxt, float_ips[i].id) self.assertFalse(float_ip.auto_assigned) for i in range(2, 4): float_ip = db.floating_ip_get(self.ctxt, float_ips[i].id) self.assertTrue(float_ip.auto_assigned) def test_floating_ip_allocate_address_no_more_floating_ips(self): self.assertRaises(exception.NoMoreFloatingIps, db.floating_ip_allocate_address, self.ctxt, 'any_project_id', 'no_such_pool') def test_floating_ip_allocate_not_authorized(self): ctxt = context.RequestContext(user_id='a', project_id='abc', is_admin=False) self.assertRaises(exception.NotAuthorized, db.floating_ip_allocate_address, ctxt, 'other_project_id', 'any_pool') def _get_existing_ips(self): return [ip['address'] for ip in db.floating_ip_get_all(self.ctxt)] def test_floating_ip_bulk_create(self): expected_ips = ['1.1.1.1', '1.1.1.2', '1.1.1.3', '1.1.1.4'] db.floating_ip_bulk_create(self.ctxt, map(lambda x: {'address': x}, expected_ips)) self._assertEqualListsOfPrimitivesAsSets(self._get_existing_ips(), expected_ips) def test_floating_ip_bulk_create_duplicate(self): ips = ['1.1.1.1', '1.1.1.2', '1.1.1.3', '1.1.1.4'] prepare_ips = lambda x: {'address': x} db.floating_ip_bulk_create(self.ctxt, map(prepare_ips, ips)) self.assertRaises(exception.FloatingIpExists, db.floating_ip_bulk_create, self.ctxt, map(prepare_ips, ['1.1.1.5', '1.1.1.4'])) self.assertRaises(exception.FloatingIpNotFoundForAddress, db.floating_ip_get_by_address, self.ctxt, '1.1.1.5') def test_floating_ip_bulk_destroy(self): ips_for_delete = [] ips_for_non_delete = [] def create_ips(i, j): return [{'address': '1.1.%s.%s' % (i, k)} for k in range(1, j + 1)] # NOTE(boris-42): Create more then 256 ip to check that # _ip_range_splitter works properly. for i in range(1, 3): ips_for_delete.extend(create_ips(i, 255)) ips_for_non_delete.extend(create_ips(3, 255)) db.floating_ip_bulk_create(self.ctxt, ips_for_delete + ips_for_non_delete) non_bulk_ips_for_delete = create_ips(4, 3) non_bulk_ips_for_non_delete = create_ips(5, 3) non_bulk_ips = non_bulk_ips_for_delete + non_bulk_ips_for_non_delete project_id = 'fake_project' reservations = quota.QUOTAS.reserve(self.ctxt, floating_ips=len(non_bulk_ips), project_id=project_id) for dct in non_bulk_ips: self._create_floating_ip(dct) quota.QUOTAS.commit(self.ctxt, reservations, project_id=project_id) self.assertEqual(db.quota_usage_get_all_by_project( self.ctxt, project_id), {'project_id': project_id, 'floating_ips': {'in_use': 6, 'reserved': 0}}) ips_for_delete.extend(non_bulk_ips_for_delete) ips_for_non_delete.extend(non_bulk_ips_for_non_delete) db.floating_ip_bulk_destroy(self.ctxt, ips_for_delete) expected_addresses = map(lambda x: x['address'], ips_for_non_delete) self._assertEqualListsOfPrimitivesAsSets(self._get_existing_ips(), expected_addresses) self.assertEqual(db.quota_usage_get_all_by_project( self.ctxt, project_id), {'project_id': project_id, 'floating_ips': {'in_use': 3, 'reserved': 0}}) def test_floating_ip_create(self): floating_ip = self._create_floating_ip({}) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self.assertIsNotNone(floating_ip['id']) self._assertEqualObjects(floating_ip, self._get_base_values(), ignored_keys) def test_floating_ip_create_duplicate(self): self._create_floating_ip({}) self.assertRaises(exception.FloatingIpExists, self._create_floating_ip, {}) def _create_fixed_ip(self, params): default_params = {'address': '192.168.0.1'} default_params.update(params) return db.fixed_ip_create(self.ctxt, default_params)['address'] def test_floating_ip_fixed_ip_associate(self): float_addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] fixed_addresses = ['2.2.2.1', '2.2.2.2', '2.2.2.3'] float_ips = [self._create_floating_ip({'address': address}) for address in float_addresses] fixed_addrs = [self._create_fixed_ip({'address': address}) for address in fixed_addresses] for float_ip, fixed_addr in zip(float_ips, fixed_addrs): fixed_ip = db.floating_ip_fixed_ip_associate(self.ctxt, float_ip.address, fixed_addr, 'host') self.assertEqual(fixed_ip.address, fixed_addr) updated_float_ip = db.floating_ip_get(self.ctxt, float_ip.id) self.assertEqual(fixed_ip.id, updated_float_ip.fixed_ip_id) self.assertEqual('host', updated_float_ip.host) # Test that already allocated float_ip returns None result = db.floating_ip_fixed_ip_associate(self.ctxt, float_addresses[0], fixed_addresses[0], 'host') self.assertIsNone(result) def test_floating_ip_fixed_ip_associate_float_ip_not_found(self): self.assertRaises(exception.FloatingIpNotFoundForAddress, db.floating_ip_fixed_ip_associate, self.ctxt, '10.10.10.10', 'some', 'some') def test_floating_ip_deallocate(self): values = {'address': '1.1.1.1', 'project_id': 'fake', 'host': 'fake'} float_ip = self._create_floating_ip(values) db.floating_ip_deallocate(self.ctxt, float_ip.address) updated_float_ip = db.floating_ip_get(self.ctxt, float_ip.id) self.assertIsNone(updated_float_ip.project_id) self.assertIsNone(updated_float_ip.host) self.assertFalse(updated_float_ip.auto_assigned) def test_floating_ip_destroy(self): addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] float_ips = [self._create_floating_ip({'address': addr}) for addr in addresses] expected_len = len(addresses) for float_ip in float_ips: db.floating_ip_destroy(self.ctxt, float_ip.address) self.assertRaises(exception.FloatingIpNotFound, db.floating_ip_get, self.ctxt, float_ip.id) expected_len -= 1 if expected_len > 0: self.assertEqual(expected_len, len(db.floating_ip_get_all(self.ctxt))) else: self.assertRaises(exception.NoFloatingIpsDefined, db.floating_ip_get_all, self.ctxt) def test_floating_ip_disassociate(self): float_addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] fixed_addresses = ['2.2.2.1', '2.2.2.2', '2.2.2.3'] float_ips = [self._create_floating_ip({'address': address}) for address in float_addresses] fixed_addrs = [self._create_fixed_ip({'address': address}) for address in fixed_addresses] for float_ip, fixed_addr in zip(float_ips, fixed_addrs): db.floating_ip_fixed_ip_associate(self.ctxt, float_ip.address, fixed_addr, 'host') for float_ip, fixed_addr in zip(float_ips, fixed_addrs): fixed = db.floating_ip_disassociate(self.ctxt, float_ip.address) self.assertEqual(fixed.address, fixed_addr) updated_float_ip = db.floating_ip_get(self.ctxt, float_ip.id) self.assertIsNone(updated_float_ip.fixed_ip_id) self.assertIsNone(updated_float_ip.host) def test_floating_ip_disassociate_not_found(self): self.assertRaises(exception.FloatingIpNotFoundForAddress, db.floating_ip_disassociate, self.ctxt, '11.11.11.11') def test_floating_ip_set_auto_assigned(self): addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] float_ips = [self._create_floating_ip({'address': addr, 'auto_assigned': False}) for addr in addresses] for i in range(2): db.floating_ip_set_auto_assigned(self.ctxt, float_ips[i].address) for i in range(2): float_ip = db.floating_ip_get(self.ctxt, float_ips[i].id) self.assertTrue(float_ip.auto_assigned) float_ip = db.floating_ip_get(self.ctxt, float_ips[2].id) self.assertFalse(float_ip.auto_assigned) def test_floating_ip_get_all(self): addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] float_ips = [self._create_floating_ip({'address': addr}) for addr in addresses] self._assertEqualListsOfObjects(float_ips, db.floating_ip_get_all(self.ctxt)) def test_floating_ip_get_all_not_found(self): self.assertRaises(exception.NoFloatingIpsDefined, db.floating_ip_get_all, self.ctxt) def test_floating_ip_get_all_by_host(self): hosts = { 'host1': ['1.1.1.1', '1.1.1.2'], 'host2': ['2.1.1.1', '2.1.1.2'], 'host3': ['3.1.1.1', '3.1.1.2', '3.1.1.3'] } hosts_with_float_ips = {} for host, addresses in hosts.iteritems(): hosts_with_float_ips[host] = [] for address in addresses: float_ip = self._create_floating_ip({'host': host, 'address': address}) hosts_with_float_ips[host].append(float_ip) for host, float_ips in hosts_with_float_ips.iteritems(): real_float_ips = db.floating_ip_get_all_by_host(self.ctxt, host) self._assertEqualListsOfObjects(float_ips, real_float_ips) def test_floating_ip_get_all_by_host_not_found(self): self.assertRaises(exception.FloatingIpNotFoundForHost, db.floating_ip_get_all_by_host, self.ctxt, 'non_exists_host') def test_floating_ip_get_all_by_project(self): projects = { 'pr1': ['1.1.1.1', '1.1.1.2'], 'pr2': ['2.1.1.1', '2.1.1.2'], 'pr3': ['3.1.1.1', '3.1.1.2', '3.1.1.3'] } projects_with_float_ips = {} for project_id, addresses in projects.iteritems(): projects_with_float_ips[project_id] = [] for address in addresses: float_ip = self._create_floating_ip({'project_id': project_id, 'address': address}) projects_with_float_ips[project_id].append(float_ip) for project_id, float_ips in projects_with_float_ips.iteritems(): real_float_ips = db.floating_ip_get_all_by_project(self.ctxt, project_id) self._assertEqualListsOfObjects(float_ips, real_float_ips, ignored_keys='fixed_ip') def test_floating_ip_get_all_by_project_not_authorized(self): ctxt = context.RequestContext(user_id='a', project_id='abc', is_admin=False) self.assertRaises(exception.NotAuthorized, db.floating_ip_get_all_by_project, ctxt, 'other_project') def test_floating_ip_get_by_address(self): addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3'] float_ips = [self._create_floating_ip({'address': addr}) for addr in addresses] for float_ip in float_ips: real_float_ip = db.floating_ip_get_by_address(self.ctxt, float_ip.address) self._assertEqualObjects(float_ip, real_float_ip, ignored_keys='fixed_ip') def test_floating_ip_get_by_address_not_found(self): self.assertRaises(exception.FloatingIpNotFoundForAddress, db.floating_ip_get_by_address, self.ctxt, '20.20.20.20') def test_floating_ip_get_by_invalid_address(self): self.mock_db_query_first_to_raise_data_error_exception() self.assertRaises(exception.InvalidIpAddressError, db.floating_ip_get_by_address, self.ctxt, 'non_exists_host') def test_floating_ip_get_by_fixed_address(self): fixed_float = [ ('1.1.1.1', '2.2.2.1'), ('1.1.1.2', '2.2.2.2'), ('1.1.1.3', '2.2.2.3') ] for fixed_addr, float_addr in fixed_float: self._create_floating_ip({'address': float_addr}) self._create_fixed_ip({'address': fixed_addr}) db.floating_ip_fixed_ip_associate(self.ctxt, float_addr, fixed_addr, 'some_host') for fixed_addr, float_addr in fixed_float: float_ip = db.floating_ip_get_by_fixed_address(self.ctxt, fixed_addr) self.assertEqual(float_addr, float_ip[0]['address']) def test_floating_ip_get_by_fixed_ip_id(self): fixed_float = [ ('1.1.1.1', '2.2.2.1'), ('1.1.1.2', '2.2.2.2'), ('1.1.1.3', '2.2.2.3') ] for fixed_addr, float_addr in fixed_float: self._create_floating_ip({'address': float_addr}) self._create_fixed_ip({'address': fixed_addr}) db.floating_ip_fixed_ip_associate(self.ctxt, float_addr, fixed_addr, 'some_host') for fixed_addr, float_addr in fixed_float: fixed_ip = db.fixed_ip_get_by_address(self.ctxt, fixed_addr) float_ip = db.floating_ip_get_by_fixed_ip_id(self.ctxt, fixed_ip['id']) self.assertEqual(float_addr, float_ip[0]['address']) def test_floating_ip_update(self): float_ip = self._create_floating_ip({}) values = { 'project_id': 'some_pr', 'host': 'some_host', 'auto_assigned': True, 'interface': 'some_interface', 'pool': 'some_pool' } db.floating_ip_update(self.ctxt, float_ip['address'], values) updated_float_ip = db.floating_ip_get(self.ctxt, float_ip['id']) self._assertEqualObjects(updated_float_ip, values, ignored_keys=['id', 'address', 'updated_at', 'deleted_at', 'created_at', 'deleted', 'fixed_ip_id', 'fixed_ip']) def test_floating_ip_update_to_duplicate(self): float_ip1 = self._create_floating_ip({'address': '1.1.1.1'}) float_ip2 = self._create_floating_ip({'address': '1.1.1.2'}) self.assertRaises(exception.FloatingIpExists, db.floating_ip_update, self.ctxt, float_ip2['address'], {'address': float_ip1['address']}) class InstanceDestroyConstraints(test.TestCase): def test_destroy_with_equal_any_constraint_met_single_value(self): ctx = context.get_admin_context() instance = db.instance_create(ctx, {'task_state': 'deleting'}) constraint = db.constraint(task_state=db.equal_any('deleting')) db.instance_destroy(ctx, instance['uuid'], constraint) self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, ctx, instance['uuid']) def test_destroy_with_equal_any_constraint_met(self): ctx = context.get_admin_context() instance = db.instance_create(ctx, {'task_state': 'deleting'}) constraint = db.constraint(task_state=db.equal_any('deleting', 'error')) db.instance_destroy(ctx, instance['uuid'], constraint) self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, ctx, instance['uuid']) def test_destroy_with_equal_any_constraint_not_met(self): ctx = context.get_admin_context() instance = db.instance_create(ctx, {'vm_state': 'resize'}) constraint = db.constraint(vm_state=db.equal_any('active', 'error')) self.assertRaises(exception.ConstraintNotMet, db.instance_destroy, ctx, instance['uuid'], constraint) instance = db.instance_get_by_uuid(ctx, instance['uuid']) self.assertFalse(instance['deleted']) def test_destroy_with_not_equal_constraint_met(self): ctx = context.get_admin_context() instance = db.instance_create(ctx, {'task_state': 'deleting'}) constraint = db.constraint(task_state=db.not_equal('error', 'resize')) db.instance_destroy(ctx, instance['uuid'], constraint) self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, ctx, instance['uuid']) def test_destroy_with_not_equal_constraint_not_met(self): ctx = context.get_admin_context() instance = db.instance_create(ctx, {'vm_state': 'active'}) constraint = db.constraint(vm_state=db.not_equal('active', 'error')) self.assertRaises(exception.ConstraintNotMet, db.instance_destroy, ctx, instance['uuid'], constraint) instance = db.instance_get_by_uuid(ctx, instance['uuid']) self.assertFalse(instance['deleted']) class VolumeUsageDBApiTestCase(test.TestCase): def setUp(self): super(VolumeUsageDBApiTestCase, self).setUp() self.user_id = 'fake' self.project_id = 'fake' self.context = context.RequestContext(self.user_id, self.project_id) self.useFixture(test.TimeOverride()) def test_vol_usage_update_no_totals_update(self): ctxt = context.get_admin_context() now = timeutils.utcnow() timeutils.set_time_override(now) start_time = now - datetime.timedelta(seconds=10) expected_vol_usages = { u'1': {'volume_id': u'1', 'instance_uuid': 'fake-instance-uuid1', 'project_id': 'fake-project-uuid1', 'user_id': 'fake-user-uuid1', 'curr_reads': 1000, 'curr_read_bytes': 2000, 'curr_writes': 3000, 'curr_write_bytes': 4000, 'curr_last_refreshed': now, 'tot_reads': 0, 'tot_read_bytes': 0, 'tot_writes': 0, 'tot_write_bytes': 0, 'tot_last_refreshed': None}, u'2': {'volume_id': u'2', 'instance_uuid': 'fake-instance-uuid2', 'project_id': 'fake-project-uuid2', 'user_id': 'fake-user-uuid2', 'curr_reads': 100, 'curr_read_bytes': 200, 'curr_writes': 300, 'curr_write_bytes': 400, 'tot_reads': 0, 'tot_read_bytes': 0, 'tot_writes': 0, 'tot_write_bytes': 0, 'tot_last_refreshed': None} } def _compare(vol_usage, expected): for key, value in expected.items(): self.assertEqual(vol_usage[key], value) vol_usages = db.vol_get_usage_by_time(ctxt, start_time) self.assertEqual(len(vol_usages), 0) db.vol_usage_update(ctxt, u'1', rd_req=10, rd_bytes=20, wr_req=30, wr_bytes=40, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', user_id='fake-user-uuid1', availability_zone='fake-az') db.vol_usage_update(ctxt, u'2', rd_req=100, rd_bytes=200, wr_req=300, wr_bytes=400, instance_id='fake-instance-uuid2', project_id='fake-project-uuid2', user_id='fake-user-uuid2', availability_zone='fake-az') db.vol_usage_update(ctxt, u'1', rd_req=1000, rd_bytes=2000, wr_req=3000, wr_bytes=4000, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', user_id='fake-user-uuid1', availability_zone='fake-az') vol_usages = db.vol_get_usage_by_time(ctxt, start_time) self.assertEqual(len(vol_usages), 2) for usage in vol_usages: _compare(usage, expected_vol_usages[usage.volume_id]) def test_vol_usage_update_totals_update(self): ctxt = context.get_admin_context() now = datetime.datetime(1, 1, 1, 1, 0, 0) start_time = now - datetime.timedelta(seconds=10) now1 = now + datetime.timedelta(minutes=1) now2 = now + datetime.timedelta(minutes=2) now3 = now + datetime.timedelta(minutes=3) timeutils.set_time_override(now) db.vol_usage_update(ctxt, u'1', rd_req=100, rd_bytes=200, wr_req=300, wr_bytes=400, instance_id='fake-instance-uuid', project_id='fake-project-uuid', user_id='fake-user-uuid', availability_zone='fake-az') current_usage = db.vol_get_usage_by_time(ctxt, start_time)[0] self.assertEqual(current_usage['tot_reads'], 0) self.assertEqual(current_usage['curr_reads'], 100) timeutils.set_time_override(now1) db.vol_usage_update(ctxt, u'1', rd_req=200, rd_bytes=300, wr_req=400, wr_bytes=500, instance_id='fake-instance-uuid', project_id='fake-project-uuid', user_id='fake-user-uuid', availability_zone='fake-az', update_totals=True) current_usage = db.vol_get_usage_by_time(ctxt, start_time)[0] self.assertEqual(current_usage['tot_reads'], 200) self.assertEqual(current_usage['curr_reads'], 0) timeutils.set_time_override(now2) db.vol_usage_update(ctxt, u'1', rd_req=300, rd_bytes=400, wr_req=500, wr_bytes=600, instance_id='fake-instance-uuid', project_id='fake-project-uuid', availability_zone='fake-az', user_id='fake-user-uuid') current_usage = db.vol_get_usage_by_time(ctxt, start_time)[0] self.assertEqual(current_usage['tot_reads'], 200) self.assertEqual(current_usage['curr_reads'], 300) timeutils.set_time_override(now3) db.vol_usage_update(ctxt, u'1', rd_req=400, rd_bytes=500, wr_req=600, wr_bytes=700, instance_id='fake-instance-uuid', project_id='fake-project-uuid', user_id='fake-user-uuid', availability_zone='fake-az', update_totals=True) vol_usages = db.vol_get_usage_by_time(ctxt, start_time) expected_vol_usages = {'volume_id': u'1', 'project_id': 'fake-project-uuid', 'user_id': 'fake-user-uuid', 'instance_uuid': 'fake-instance-uuid', 'availability_zone': 'fake-az', 'tot_reads': 600, 'tot_read_bytes': 800, 'tot_writes': 1000, 'tot_write_bytes': 1200, 'tot_last_refreshed': now3, 'curr_reads': 0, 'curr_read_bytes': 0, 'curr_writes': 0, 'curr_write_bytes': 0, 'curr_last_refreshed': now2} self.assertEqual(1, len(vol_usages)) for key, value in expected_vol_usages.items(): self.assertEqual(vol_usages[0][key], value, key) def test_vol_usage_update_when_blockdevicestats_reset(self): ctxt = context.get_admin_context() now = timeutils.utcnow() start_time = now - datetime.timedelta(seconds=10) vol_usages = db.vol_get_usage_by_time(ctxt, start_time) self.assertEqual(len(vol_usages), 0) db.vol_usage_update(ctxt, u'1', rd_req=10000, rd_bytes=20000, wr_req=30000, wr_bytes=40000, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', availability_zone='fake-az', user_id='fake-user-uuid1') # Instance rebooted or crashed. block device stats were reset and are # less then the previous values db.vol_usage_update(ctxt, u'1', rd_req=100, rd_bytes=200, wr_req=300, wr_bytes=400, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', availability_zone='fake-az', user_id='fake-user-uuid1') db.vol_usage_update(ctxt, u'1', rd_req=200, rd_bytes=300, wr_req=400, wr_bytes=500, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', availability_zone='fake-az', user_id='fake-user-uuid1') vol_usage = db.vol_get_usage_by_time(ctxt, start_time)[0] expected_vol_usage = {'volume_id': u'1', 'instance_uuid': 'fake-instance-uuid1', 'project_id': 'fake-project-uuid1', 'availability_zone': 'fake-az', 'user_id': 'fake-user-uuid1', 'curr_reads': 200, 'curr_read_bytes': 300, 'curr_writes': 400, 'curr_write_bytes': 500, 'tot_reads': 10000, 'tot_read_bytes': 20000, 'tot_writes': 30000, 'tot_write_bytes': 40000} for key, value in expected_vol_usage.items(): self.assertEqual(vol_usage[key], value, key) def test_vol_usage_update_totals_update_when_blockdevicestats_reset(self): # This is unlikely to happen, but could when a volume is detached # right after a instance has rebooted / recovered and before # the system polled and updated the volume usage cache table. ctxt = context.get_admin_context() now = timeutils.utcnow() start_time = now - datetime.timedelta(seconds=10) vol_usages = db.vol_get_usage_by_time(ctxt, start_time) self.assertEqual(len(vol_usages), 0) db.vol_usage_update(ctxt, u'1', rd_req=10000, rd_bytes=20000, wr_req=30000, wr_bytes=40000, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', availability_zone='fake-az', user_id='fake-user-uuid1') # Instance rebooted or crashed. block device stats were reset and are # less then the previous values db.vol_usage_update(ctxt, u'1', rd_req=100, rd_bytes=200, wr_req=300, wr_bytes=400, instance_id='fake-instance-uuid1', project_id='fake-project-uuid1', availability_zone='fake-az', user_id='fake-user-uuid1', update_totals=True) vol_usage = db.vol_get_usage_by_time(ctxt, start_time)[0] expected_vol_usage = {'volume_id': u'1', 'instance_uuid': 'fake-instance-uuid1', 'project_id': 'fake-project-uuid1', 'availability_zone': 'fake-az', 'user_id': 'fake-user-uuid1', 'curr_reads': 0, 'curr_read_bytes': 0, 'curr_writes': 0, 'curr_write_bytes': 0, 'tot_reads': 10100, 'tot_read_bytes': 20200, 'tot_writes': 30300, 'tot_write_bytes': 40400} for key, value in expected_vol_usage.items(): self.assertEqual(vol_usage[key], value, key) class TaskLogTestCase(test.TestCase): def setUp(self): super(TaskLogTestCase, self).setUp() self.context = context.get_admin_context() now = timeutils.utcnow() self.begin = now - datetime.timedelta(seconds=10) self.end = now - datetime.timedelta(seconds=5) self.task_name = 'fake-task-name' self.host = 'fake-host' self.message = 'Fake task message' db.task_log_begin_task(self.context, self.task_name, self.begin, self.end, self.host, message=self.message) def test_task_log_get(self): result = db.task_log_get(self.context, self.task_name, self.begin, self.end, self.host) self.assertEqual(result['task_name'], self.task_name) self.assertEqual(result['period_beginning'], self.begin) self.assertEqual(result['period_ending'], self.end) self.assertEqual(result['host'], self.host) self.assertEqual(result['message'], self.message) def test_task_log_get_all(self): result = db.task_log_get_all(self.context, self.task_name, self.begin, self.end, host=self.host) self.assertEqual(len(result), 1) result = db.task_log_get_all(self.context, self.task_name, self.begin, self.end, host=self.host, state='') self.assertEqual(len(result), 0) def test_task_log_begin_task(self): db.task_log_begin_task(self.context, 'fake', self.begin, self.end, self.host, task_items=42, message=self.message) result = db.task_log_get(self.context, 'fake', self.begin, self.end, self.host) self.assertEqual(result['task_name'], 'fake') def test_task_log_begin_task_duplicate(self): params = (self.context, 'fake', self.begin, self.end, self.host) db.task_log_begin_task(*params, message=self.message) self.assertRaises(exception.TaskAlreadyRunning, db.task_log_begin_task, *params, message=self.message) def test_task_log_end_task(self): errors = 1 db.task_log_end_task(self.context, self.task_name, self.begin, self.end, self.host, errors, message=self.message) result = db.task_log_get(self.context, self.task_name, self.begin, self.end, self.host) self.assertEqual(result['errors'], 1) def test_task_log_end_task_task_not_running(self): self.assertRaises(exception.TaskNotRunning, db.task_log_end_task, self.context, 'nonexistent', self.begin, self.end, self.host, 42, message=self.message) class BlockDeviceMappingTestCase(test.TestCase): def setUp(self): super(BlockDeviceMappingTestCase, self).setUp() self.ctxt = context.get_admin_context() self.instance = db.instance_create(self.ctxt, {}) def _create_bdm(self, values): values.setdefault('instance_uuid', self.instance['uuid']) values.setdefault('device_name', 'fake_device') values.setdefault('source_type', 'volume') values.setdefault('destination_type', 'volume') block_dev = block_device.BlockDeviceDict(values) db.block_device_mapping_create(self.ctxt, block_dev, legacy=False) uuid = block_dev['instance_uuid'] bdms = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) for bdm in bdms: if bdm['device_name'] == values['device_name']: return bdm def test_scrub_empty_str_values_no_effect(self): values = {'volume_size': 5} expected = copy.copy(values) sqlalchemy_api._scrub_empty_str_values(values, ['volume_size']) self.assertEqual(values, expected) def test_scrub_empty_str_values_empty_string(self): values = {'volume_size': ''} sqlalchemy_api._scrub_empty_str_values(values, ['volume_size']) self.assertEqual(values, {}) def test_scrub_empty_str_values_empty_unicode(self): values = {'volume_size': u''} sqlalchemy_api._scrub_empty_str_values(values, ['volume_size']) self.assertEqual(values, {}) def test_block_device_mapping_create(self): bdm = self._create_bdm({}) self.assertIsNotNone(bdm) def test_block_device_mapping_update(self): bdm = self._create_bdm({}) result = db.block_device_mapping_update( self.ctxt, bdm['id'], {'destination_type': 'moon'}, legacy=False) uuid = bdm['instance_uuid'] bdm_real = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(bdm_real[0]['destination_type'], 'moon') # Also make sure the update call returned correct data self.assertEqual(dict(bdm_real[0].iteritems()), dict(result.iteritems())) def test_block_device_mapping_update_or_create(self): values = { 'instance_uuid': self.instance['uuid'], 'device_name': 'fake_name', 'source_type': 'volume', 'destination_type': 'volume' } # check create db.block_device_mapping_update_or_create(self.ctxt, values, legacy=False) uuid = values['instance_uuid'] bdm_real = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdm_real), 1) self.assertEqual(bdm_real[0]['device_name'], 'fake_name') # check update values['destination_type'] = 'camelot' db.block_device_mapping_update_or_create(self.ctxt, values, legacy=False) bdm_real = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdm_real), 1) bdm_real = bdm_real[0] self.assertEqual(bdm_real['device_name'], 'fake_name') self.assertEqual(bdm_real['destination_type'], 'camelot') # check create without device_name bdm1 = dict(values) bdm1['device_name'] = None db.block_device_mapping_update_or_create(self.ctxt, bdm1, legacy=False) bdm_real = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdm_real), 2) bdm_real = bdm_real[1] self.assertIsNone(bdm_real['device_name']) # check create multiple devices without device_name bdm2 = dict(values) bdm2['device_name'] = None db.block_device_mapping_update_or_create(self.ctxt, bdm2, legacy=False) bdm_real = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdm_real), 3) bdm_real = bdm_real[2] self.assertIsNone(bdm_real['device_name']) def test_block_device_mapping_update_or_create_multiple_ephemeral(self): uuid = self.instance['uuid'] values = { 'instance_uuid': uuid, 'source_type': 'blank', 'guest_format': 'myformat', } bdm1 = dict(values) bdm1['device_name'] = '/dev/sdb' db.block_device_mapping_update_or_create(self.ctxt, bdm1, legacy=False) bdm2 = dict(values) bdm2['device_name'] = '/dev/sdc' db.block_device_mapping_update_or_create(self.ctxt, bdm2, legacy=False) bdm_real = sorted( db.block_device_mapping_get_all_by_instance(self.ctxt, uuid), key=lambda bdm: bdm['device_name'] ) self.assertEqual(len(bdm_real), 2) for bdm, device_name in zip(bdm_real, ['/dev/sdb', '/dev/sdc']): self.assertEqual(bdm['device_name'], device_name) self.assertEqual(bdm['guest_format'], 'myformat') def test_block_device_mapping_update_or_create_check_remove_virt(self): uuid = self.instance['uuid'] values = { 'instance_uuid': uuid, 'source_type': 'blank', 'destination_type': 'local', 'guest_format': 'swap', } # check that old swap bdms are deleted on create val1 = dict(values) val1['device_name'] = 'device1' db.block_device_mapping_create(self.ctxt, val1, legacy=False) val2 = dict(values) val2['device_name'] = 'device2' db.block_device_mapping_update_or_create(self.ctxt, val2, legacy=False) bdm_real = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdm_real), 1) bdm_real = bdm_real[0] self.assertEqual(bdm_real['device_name'], 'device2') self.assertEqual(bdm_real['source_type'], 'blank') self.assertEqual(bdm_real['guest_format'], 'swap') db.block_device_mapping_destroy(self.ctxt, bdm_real['id']) def test_block_device_mapping_get_all_by_instance(self): uuid1 = self.instance['uuid'] uuid2 = db.instance_create(self.ctxt, {})['uuid'] bmds_values = [{'instance_uuid': uuid1, 'device_name': 'first'}, {'instance_uuid': uuid2, 'device_name': 'second'}, {'instance_uuid': uuid2, 'device_name': 'third'}] for bdm in bmds_values: self._create_bdm(bdm) bmd = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid1) self.assertEqual(len(bmd), 1) self.assertEqual(bmd[0]['device_name'], 'first') bmd = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid2) self.assertEqual(len(bmd), 2) def test_block_device_mapping_destroy(self): bdm = self._create_bdm({}) db.block_device_mapping_destroy(self.ctxt, bdm['id']) bdm = db.block_device_mapping_get_all_by_instance(self.ctxt, bdm['instance_uuid']) self.assertEqual(len(bdm), 0) def test_block_device_mapping_destroy_by_instance_and_volumne(self): vol_id1 = '69f5c254-1a5b-4fff-acf7-cb369904f58f' vol_id2 = '69f5c254-1a5b-4fff-acf7-cb369904f59f' self._create_bdm({'device_name': 'fake1', 'volume_id': vol_id1}) self._create_bdm({'device_name': 'fake2', 'volume_id': vol_id2}) uuid = self.instance['uuid'] db.block_device_mapping_destroy_by_instance_and_volume(self.ctxt, uuid, vol_id1) bdms = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdms), 1) self.assertEqual(bdms[0]['device_name'], 'fake2') def test_block_device_mapping_destroy_by_instance_and_device(self): self._create_bdm({'device_name': 'fake1'}) self._create_bdm({'device_name': 'fake2'}) uuid = self.instance['uuid'] params = (self.ctxt, uuid, 'fake1') db.block_device_mapping_destroy_by_instance_and_device(*params) bdms = db.block_device_mapping_get_all_by_instance(self.ctxt, uuid) self.assertEqual(len(bdms), 1) self.assertEqual(bdms[0]['device_name'], 'fake2') def test_block_device_mapping_get_by_volume_id(self): self._create_bdm({'volume_id': 'fake_id'}) bdm = db.block_device_mapping_get_by_volume_id(self.ctxt, 'fake_id') self.assertEqual(bdm['volume_id'], 'fake_id') def test_block_device_mapping_get_by_volume_id_join_instance(self): self._create_bdm({'volume_id': 'fake_id'}) bdm = db.block_device_mapping_get_by_volume_id(self.ctxt, 'fake_id', ['instance']) self.assertEqual(bdm['volume_id'], 'fake_id') self.assertEqual(bdm['instance']['uuid'], self.instance['uuid']) class AgentBuildTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.agent_build_* methods.""" def setUp(self): super(AgentBuildTestCase, self).setUp() self.ctxt = context.get_admin_context() def test_agent_build_create_and_get_all(self): self.assertEqual(0, len(db.agent_build_get_all(self.ctxt))) agent_build = db.agent_build_create(self.ctxt, {'os': 'GNU/HURD'}) all_agent_builds = db.agent_build_get_all(self.ctxt) self.assertEqual(1, len(all_agent_builds)) self._assertEqualObjects(agent_build, all_agent_builds[0]) def test_agent_build_get_by_triple(self): agent_build = db.agent_build_create(self.ctxt, {'hypervisor': 'kvm', 'os': 'FreeBSD', 'architecture': 'x86_64'}) self.assertIsNone(db.agent_build_get_by_triple(self.ctxt, 'kvm', 'FreeBSD', 'i386')) self._assertEqualObjects(agent_build, db.agent_build_get_by_triple( self.ctxt, 'kvm', 'FreeBSD', 'x86_64')) def test_agent_build_destroy(self): agent_build = db.agent_build_create(self.ctxt, {}) self.assertEqual(1, len(db.agent_build_get_all(self.ctxt))) db.agent_build_destroy(self.ctxt, agent_build.id) self.assertEqual(0, len(db.agent_build_get_all(self.ctxt))) def test_agent_build_update(self): agent_build = db.agent_build_create(self.ctxt, {'os': 'HaikuOS'}) db.agent_build_update(self.ctxt, agent_build.id, {'os': 'ReactOS'}) self.assertEqual('ReactOS', db.agent_build_get_all(self.ctxt)[0].os) def test_agent_build_destroy_destroyed(self): agent_build = db.agent_build_create(self.ctxt, {}) db.agent_build_destroy(self.ctxt, agent_build.id) self.assertRaises(exception.AgentBuildNotFound, db.agent_build_destroy, self.ctxt, agent_build.id) def test_agent_build_update_destroyed(self): agent_build = db.agent_build_create(self.ctxt, {'os': 'HaikuOS'}) db.agent_build_destroy(self.ctxt, agent_build.id) self.assertRaises(exception.AgentBuildNotFound, db.agent_build_update, self.ctxt, agent_build.id, {'os': 'OS/2'}) def test_agent_build_exists(self): values = {'hypervisor': 'kvm', 'os': 'FreeBSD', 'architecture': 'x86_64'} db.agent_build_create(self.ctxt, values) self.assertRaises(exception.AgentBuildExists, db.agent_build_create, self.ctxt, values) def test_agent_build_get_all_by_hypervisor(self): values = {'hypervisor': 'kvm', 'os': 'FreeBSD', 'architecture': 'x86_64'} created = db.agent_build_create(self.ctxt, values) actual = db.agent_build_get_all(self.ctxt, hypervisor='kvm') self._assertEqualListsOfObjects([created], actual) class VirtualInterfaceTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(VirtualInterfaceTestCase, self).setUp() self.ctxt = context.get_admin_context() self.instance_uuid = db.instance_create(self.ctxt, {})['uuid'] values = {'host': 'localhost', 'project_id': 'project1'} self.network = db.network_create_safe(self.ctxt, values) def _get_base_values(self): return { 'instance_uuid': self.instance_uuid, 'address': 'fake_address', 'network_id': self.network['id'], 'uuid': str(stdlib_uuid.uuid4()) } def mock_db_query_first_to_raise_data_error_exception(self): self.mox.StubOutWithMock(query.Query, 'first') query.Query.first().AndRaise(exc.DataError(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())) self.mox.ReplayAll() def _create_virt_interface(self, values): v = self._get_base_values() v.update(values) return db.virtual_interface_create(self.ctxt, v) def test_virtual_interface_create(self): vif = self._create_virt_interface({}) self.assertIsNotNone(vif['id']) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at', 'uuid'] self._assertEqualObjects(vif, self._get_base_values(), ignored_keys) def test_virtual_interface_create_with_duplicate_address(self): vif = self._create_virt_interface({}) self.assertRaises(exception.VirtualInterfaceCreateException, self._create_virt_interface, {"uuid": vif['uuid']}) def test_virtual_interface_get(self): vifs = [self._create_virt_interface({'address': 'a'}), self._create_virt_interface({'address': 'b'})] for vif in vifs: real_vif = db.virtual_interface_get(self.ctxt, vif['id']) self._assertEqualObjects(vif, real_vif) def test_virtual_interface_get_by_address(self): vifs = [self._create_virt_interface({'address': 'first'}), self._create_virt_interface({'address': 'second'})] for vif in vifs: real_vif = db.virtual_interface_get_by_address(self.ctxt, vif['address']) self._assertEqualObjects(vif, real_vif) def test_virtual_interface_get_by_address_not_found(self): self.assertIsNone(db.virtual_interface_get_by_address(self.ctxt, "i.nv.ali.ip")) def test_virtual_interface_get_by_address_data_error_exception(self): self.mock_db_query_first_to_raise_data_error_exception() self.assertRaises(exception.InvalidIpAddressError, db.virtual_interface_get_by_address, self.ctxt, "i.nv.ali.ip") def test_virtual_interface_get_by_uuid(self): vifs = [self._create_virt_interface({"address": "address_1"}), self._create_virt_interface({"address": "address_2"})] for vif in vifs: real_vif = db.virtual_interface_get_by_uuid(self.ctxt, vif['uuid']) self._assertEqualObjects(vif, real_vif) def test_virtual_interface_get_by_instance(self): inst_uuid2 = db.instance_create(self.ctxt, {})['uuid'] vifs1 = [self._create_virt_interface({'address': 'fake1'}), self._create_virt_interface({'address': 'fake2'})] vifs2 = [self._create_virt_interface({'address': 'fake3', 'instance_uuid': inst_uuid2})] vifs1_real = db.virtual_interface_get_by_instance(self.ctxt, self.instance_uuid) vifs2_real = db.virtual_interface_get_by_instance(self.ctxt, inst_uuid2) self._assertEqualListsOfObjects(vifs1, vifs1_real) self._assertEqualListsOfObjects(vifs2, vifs2_real) def test_virtual_interface_get_by_instance_and_network(self): inst_uuid2 = db.instance_create(self.ctxt, {})['uuid'] values = {'host': 'localhost', 'project_id': 'project2'} network_id = db.network_create_safe(self.ctxt, values)['id'] vifs = [self._create_virt_interface({'address': 'fake1'}), self._create_virt_interface({'address': 'fake2', 'network_id': network_id, 'instance_uuid': inst_uuid2}), self._create_virt_interface({'address': 'fake3', 'instance_uuid': inst_uuid2})] for vif in vifs: params = (self.ctxt, vif['instance_uuid'], vif['network_id']) r_vif = db.virtual_interface_get_by_instance_and_network(*params) self._assertEqualObjects(r_vif, vif) def test_virtual_interface_delete_by_instance(self): inst_uuid2 = db.instance_create(self.ctxt, {})['uuid'] values = [dict(address='fake1'), dict(address='fake2'), dict(address='fake3', instance_uuid=inst_uuid2)] for vals in values: self._create_virt_interface(vals) db.virtual_interface_delete_by_instance(self.ctxt, self.instance_uuid) real_vifs1 = db.virtual_interface_get_by_instance(self.ctxt, self.instance_uuid) real_vifs2 = db.virtual_interface_get_by_instance(self.ctxt, inst_uuid2) self.assertEqual(len(real_vifs1), 0) self.assertEqual(len(real_vifs2), 1) def test_virtual_interface_get_all(self): inst_uuid2 = db.instance_create(self.ctxt, {})['uuid'] values = [dict(address='fake1'), dict(address='fake2'), dict(address='fake3', instance_uuid=inst_uuid2)] vifs = [self._create_virt_interface(val) for val in values] real_vifs = db.virtual_interface_get_all(self.ctxt) self._assertEqualListsOfObjects(vifs, real_vifs) class NetworkTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.network_* methods.""" def setUp(self): super(NetworkTestCase, self).setUp() self.ctxt = context.get_admin_context() def _get_associated_fixed_ip(self, host, cidr, ip): network = db.network_create_safe(self.ctxt, {'project_id': 'project1', 'cidr': cidr}) self.assertFalse(db.network_in_use_on_host(self.ctxt, network.id, host)) instance = db.instance_create(self.ctxt, {'project_id': 'project1', 'host': host}) virtual_interface = db.virtual_interface_create(self.ctxt, {'instance_uuid': instance.uuid, 'network_id': network.id, 'address': ip}) db.fixed_ip_create(self.ctxt, {'address': ip, 'network_id': network.id, 'allocated': True, 'virtual_interface_id': virtual_interface.id}) db.fixed_ip_associate(self.ctxt, ip, instance.uuid, network.id) return network, instance def test_network_get_associated_fixed_ips(self): network, instance = self._get_associated_fixed_ip('host.net', '192.0.2.0/30', '192.0.2.1') data = db.network_get_associated_fixed_ips(self.ctxt, network.id) self.assertEqual(1, len(data)) self.assertEqual('192.0.2.1', data[0]['address']) self.assertEqual('192.0.2.1', data[0]['vif_address']) self.assertEqual(instance.uuid, data[0]['instance_uuid']) self.assertTrue(data[0]['allocated']) def test_network_create_safe(self): values = {'host': 'localhost', 'project_id': 'project1'} network = db.network_create_safe(self.ctxt, values) self.assertEqual(36, len(network['uuid'])) db_network = db.network_get(self.ctxt, network['id']) self._assertEqualObjects(network, db_network) def test_network_create_with_duplicate_vlan(self): values1 = {'host': 'localhost', 'project_id': 'project1', 'vlan': 1} values2 = {'host': 'something', 'project_id': 'project1', 'vlan': 1} db.network_create_safe(self.ctxt, values1) self.assertRaises(exception.DuplicateVlan, db.network_create_safe, self.ctxt, values2) def test_network_delete_safe(self): values = {'host': 'localhost', 'project_id': 'project1'} network = db.network_create_safe(self.ctxt, values) db_network = db.network_get(self.ctxt, network['id']) values = {'network_id': network['id'], 'address': '192.168.1.5'} address1 = db.fixed_ip_create(self.ctxt, values)['address'] values = {'network_id': network['id'], 'address': '192.168.1.6', 'allocated': True} address2 = db.fixed_ip_create(self.ctxt, values)['address'] self.assertRaises(exception.NetworkInUse, db.network_delete_safe, self.ctxt, network['id']) db.fixed_ip_update(self.ctxt, address2, {'allocated': False}) network = db.network_delete_safe(self.ctxt, network['id']) self.assertRaises(exception.FixedIpNotFoundForAddress, db.fixed_ip_get_by_address, self.ctxt, address1) ctxt = self.ctxt.elevated(read_deleted='yes') fixed_ip = db.fixed_ip_get_by_address(ctxt, address1) self.assertTrue(fixed_ip['deleted']) def test_network_in_use_on_host(self): values = {'host': 'foo', 'hostname': 'myname'} instance = db.instance_create(self.ctxt, values) values = {'address': '192.168.1.5', 'instance_uuid': instance['uuid']} vif = db.virtual_interface_create(self.ctxt, values) values = {'address': '192.168.1.6', 'network_id': 1, 'allocated': True, 'instance_uuid': instance['uuid'], 'virtual_interface_id': vif['id']} db.fixed_ip_create(self.ctxt, values) self.assertEqual(db.network_in_use_on_host(self.ctxt, 1, 'foo'), True) self.assertEqual(db.network_in_use_on_host(self.ctxt, 1, 'bar'), False) def test_network_update_nonexistent(self): self.assertRaises(exception.NetworkNotFound, db.network_update, self.ctxt, 123456, {}) def test_network_update_with_duplicate_vlan(self): values1 = {'host': 'localhost', 'project_id': 'project1', 'vlan': 1} values2 = {'host': 'something', 'project_id': 'project1', 'vlan': 2} network_ref = db.network_create_safe(self.ctxt, values1) db.network_create_safe(self.ctxt, values2) self.assertRaises(exception.DuplicateVlan, db.network_update, self.ctxt, network_ref["id"], values2) def test_network_update(self): network = db.network_create_safe(self.ctxt, {'project_id': 'project1', 'vlan': 1, 'host': 'test.com'}) db.network_update(self.ctxt, network.id, {'vlan': 2}) network_new = db.network_get(self.ctxt, network.id) self.assertEqual(2, network_new.vlan) def test_network_set_host_nonexistent_network(self): self.assertRaises(exception.NetworkNotFound, db.network_set_host, self.ctxt, 123456, 'nonexistent') def test_network_set_host_with_initially_no_host(self): values = {'host': 'example.com', 'project_id': 'project1'} network = db.network_create_safe(self.ctxt, values) self.assertEqual( db.network_set_host(self.ctxt, network.id, 'new.example.com'), 'example.com') def test_network_set_host(self): values = {'project_id': 'project1'} network = db.network_create_safe(self.ctxt, values) self.assertEqual( db.network_set_host(self.ctxt, network.id, 'example.com'), 'example.com') self.assertEqual('example.com', db.network_get(self.ctxt, network.id).host) def test_network_get_all_by_host(self): self.assertEqual([], db.network_get_all_by_host(self.ctxt, 'example.com')) host = 'h1.example.com' # network with host set net1 = db.network_create_safe(self.ctxt, {'host': host}) self._assertEqualListsOfObjects([net1], db.network_get_all_by_host(self.ctxt, host)) # network with fixed ip with host set net2 = db.network_create_safe(self.ctxt, {}) db.fixed_ip_create(self.ctxt, {'host': host, 'network_id': net2.id}) data = db.network_get_all_by_host(self.ctxt, host) self._assertEqualListsOfObjects([net1, net2], db.network_get_all_by_host(self.ctxt, host)) # network with instance with host set net3 = db.network_create_safe(self.ctxt, {}) instance = db.instance_create(self.ctxt, {'host': host}) vif = db.virtual_interface_create(self.ctxt, {'instance_uuid': instance.uuid}) db.fixed_ip_create(self.ctxt, {'network_id': net3.id, 'virtual_interface_id': vif.id}) self._assertEqualListsOfObjects([net1, net2, net3], db.network_get_all_by_host(self.ctxt, host)) def test_network_get_by_cidr(self): cidr = '192.0.2.0/30' cidr_v6 = '2001:db8:1::/64' network = db.network_create_safe(self.ctxt, {'project_id': 'project1', 'cidr': cidr, 'cidr_v6': cidr_v6}) self._assertEqualObjects(network, db.network_get_by_cidr(self.ctxt, cidr)) self._assertEqualObjects(network, db.network_get_by_cidr(self.ctxt, cidr_v6)) def test_network_get_by_cidr_nonexistent(self): self.assertRaises(exception.NetworkNotFoundForCidr, db.network_get_by_cidr, self.ctxt, '192.0.2.0/30') def test_network_get_by_uuid(self): network = db.network_create_safe(self.ctxt, {'project_id': 'project_1'}) self._assertEqualObjects(network, db.network_get_by_uuid(self.ctxt, network.uuid)) def test_network_get_by_uuid_nonexistent(self): self.assertRaises(exception.NetworkNotFoundForUUID, db.network_get_by_uuid, self.ctxt, 'non-existent-uuid') def test_network_get_all_by_uuids_no_networks(self): self.assertRaises(exception.NoNetworksFound, db.network_get_all_by_uuids, self.ctxt, ['non-existent-uuid']) def test_network_get_all_by_uuids(self): net1 = db.network_create_safe(self.ctxt, {}) net2 = db.network_create_safe(self.ctxt, {}) self._assertEqualListsOfObjects([net1, net2], db.network_get_all_by_uuids(self.ctxt, [net1.uuid, net2.uuid])) def test_network_get_all_no_networks(self): self.assertRaises(exception.NoNetworksFound, db.network_get_all, self.ctxt) def test_network_get_all(self): network = db.network_create_safe(self.ctxt, {}) network_db = db.network_get_all(self.ctxt) self.assertEqual(1, len(network_db)) self._assertEqualObjects(network, network_db[0]) def test_network_get_all_admin_user(self): network1 = db.network_create_safe(self.ctxt, {}) network2 = db.network_create_safe(self.ctxt, {'project_id': 'project1'}) self._assertEqualListsOfObjects([network1, network2], db.network_get_all(self.ctxt, project_only=True)) def test_network_get_all_normal_user(self): normal_ctxt = context.RequestContext('fake', 'fake') db.network_create_safe(self.ctxt, {}) db.network_create_safe(self.ctxt, {'project_id': 'project1'}) network1 = db.network_create_safe(self.ctxt, {'project_id': 'fake'}) network_db = db.network_get_all(normal_ctxt, project_only=True) self.assertEqual(1, len(network_db)) self._assertEqualObjects(network1, network_db[0]) def test_network_get(self): network = db.network_create_safe(self.ctxt, {}) self._assertEqualObjects(db.network_get(self.ctxt, network.id), network) db.network_delete_safe(self.ctxt, network.id) self.assertRaises(exception.NetworkNotFound, db.network_get, self.ctxt, network.id) def test_network_associate(self): network = db.network_create_safe(self.ctxt, {}) self.assertIsNone(network.project_id) db.network_associate(self.ctxt, "project1", network.id) self.assertEqual("project1", db.network_get(self.ctxt, network.id).project_id) def test_network_diassociate(self): network = db.network_create_safe(self.ctxt, {'project_id': 'project1', 'host': 'test.net'}) # disassociate project db.network_disassociate(self.ctxt, network.id, False, True) self.assertIsNone(db.network_get(self.ctxt, network.id).project_id) # disassociate host db.network_disassociate(self.ctxt, network.id, True, False) self.assertIsNone(db.network_get(self.ctxt, network.id).host) def test_network_count_reserved_ips(self): net = db.network_create_safe(self.ctxt, {}) self.assertEqual(0, db.network_count_reserved_ips(self.ctxt, net.id)) db.fixed_ip_create(self.ctxt, {'network_id': net.id, 'reserved': True}) self.assertEqual(1, db.network_count_reserved_ips(self.ctxt, net.id)) class KeyPairTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(KeyPairTestCase, self).setUp() self.ctxt = context.get_admin_context() def _create_key_pair(self, values): return db.key_pair_create(self.ctxt, values) def test_key_pair_create(self): param = { 'name': 'test_1', 'user_id': 'test_user_id_1', 'public_key': 'test_public_key_1', 'fingerprint': 'test_fingerprint_1' } key_pair = self._create_key_pair(param) self.assertIsNotNone(key_pair['id']) ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at', 'id'] self._assertEqualObjects(key_pair, param, ignored_keys) def test_key_pair_create_with_duplicate_name(self): params = {'name': 'test_name', 'user_id': 'test_user_id'} self._create_key_pair(params) self.assertRaises(exception.KeyPairExists, self._create_key_pair, params) def test_key_pair_get(self): params = [ {'name': 'test_1', 'user_id': 'test_user_id_1'}, {'name': 'test_2', 'user_id': 'test_user_id_2'}, {'name': 'test_3', 'user_id': 'test_user_id_3'} ] key_pairs = [self._create_key_pair(p) for p in params] for key in key_pairs: real_key = db.key_pair_get(self.ctxt, key['user_id'], key['name']) self._assertEqualObjects(key, real_key) def test_key_pair_get_no_results(self): param = {'name': 'test_1', 'user_id': 'test_user_id_1'} self.assertRaises(exception.KeypairNotFound, db.key_pair_get, self.ctxt, param['user_id'], param['name']) def test_key_pair_get_deleted(self): param = {'name': 'test_1', 'user_id': 'test_user_id_1'} key_pair_created = self._create_key_pair(param) db.key_pair_destroy(self.ctxt, param['user_id'], param['name']) self.assertRaises(exception.KeypairNotFound, db.key_pair_get, self.ctxt, param['user_id'], param['name']) ctxt = self.ctxt.elevated(read_deleted='yes') key_pair_deleted = db.key_pair_get(ctxt, param['user_id'], param['name']) ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at'] self._assertEqualObjects(key_pair_deleted, key_pair_created, ignored_keys) self.assertEqual(key_pair_deleted['deleted'], key_pair_deleted['id']) def test_key_pair_get_all_by_user(self): params = [ {'name': 'test_1', 'user_id': 'test_user_id_1'}, {'name': 'test_2', 'user_id': 'test_user_id_1'}, {'name': 'test_3', 'user_id': 'test_user_id_2'} ] key_pairs_user_1 = [self._create_key_pair(p) for p in params if p['user_id'] == 'test_user_id_1'] key_pairs_user_2 = [self._create_key_pair(p) for p in params if p['user_id'] == 'test_user_id_2'] real_keys_1 = db.key_pair_get_all_by_user(self.ctxt, 'test_user_id_1') real_keys_2 = db.key_pair_get_all_by_user(self.ctxt, 'test_user_id_2') self._assertEqualListsOfObjects(key_pairs_user_1, real_keys_1) self._assertEqualListsOfObjects(key_pairs_user_2, real_keys_2) def test_key_pair_count_by_user(self): params = [ {'name': 'test_1', 'user_id': 'test_user_id_1'}, {'name': 'test_2', 'user_id': 'test_user_id_1'}, {'name': 'test_3', 'user_id': 'test_user_id_2'} ] for p in params: self._create_key_pair(p) count_1 = db.key_pair_count_by_user(self.ctxt, 'test_user_id_1') self.assertEqual(count_1, 2) count_2 = db.key_pair_count_by_user(self.ctxt, 'test_user_id_2') self.assertEqual(count_2, 1) def test_key_pair_destroy(self): param = {'name': 'test_1', 'user_id': 'test_user_id_1'} self._create_key_pair(param) db.key_pair_destroy(self.ctxt, param['user_id'], param['name']) self.assertRaises(exception.KeypairNotFound, db.key_pair_get, self.ctxt, param['user_id'], param['name']) def test_key_pair_destroy_no_such_key(self): param = {'name': 'test_1', 'user_id': 'test_user_id_1'} self.assertRaises(exception.KeypairNotFound, db.key_pair_destroy, self.ctxt, param['user_id'], param['name']) class QuotaTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.quota_* methods.""" def setUp(self): super(QuotaTestCase, self).setUp() self.ctxt = context.get_admin_context() def test_quota_create(self): quota = db.quota_create(self.ctxt, 'project1', 'resource', 99) self.assertEqual(quota.resource, 'resource') self.assertEqual(quota.hard_limit, 99) self.assertEqual(quota.project_id, 'project1') def test_quota_get(self): quota = db.quota_create(self.ctxt, 'project1', 'resource', 99) quota_db = db.quota_get(self.ctxt, 'project1', 'resource') self._assertEqualObjects(quota, quota_db) def test_quota_get_all_by_project(self): for i in range(3): for j in range(3): db.quota_create(self.ctxt, 'proj%d' % i, 'resource%d' % j, j) for i in range(3): quotas_db = db.quota_get_all_by_project(self.ctxt, 'proj%d' % i) self.assertEqual(quotas_db, {'project_id': 'proj%d' % i, 'resource0': 0, 'resource1': 1, 'resource2': 2}) def test_quota_get_all_by_project_and_user(self): for i in range(3): for j in range(3): db.quota_create(self.ctxt, 'proj%d' % i, 'resource%d' % j, j - 1, user_id='user%d' % i) for i in range(3): quotas_db = db.quota_get_all_by_project_and_user(self.ctxt, 'proj%d' % i, 'user%d' % i) self.assertEqual(quotas_db, {'project_id': 'proj%d' % i, 'user_id': 'user%d' % i, 'resource0': -1, 'resource1': 0, 'resource2': 1}) def test_quota_update(self): db.quota_create(self.ctxt, 'project1', 'resource1', 41) db.quota_update(self.ctxt, 'project1', 'resource1', 42) quota = db.quota_get(self.ctxt, 'project1', 'resource1') self.assertEqual(quota.hard_limit, 42) self.assertEqual(quota.resource, 'resource1') self.assertEqual(quota.project_id, 'project1') def test_quota_update_nonexistent(self): self.assertRaises(exception.ProjectQuotaNotFound, db.quota_update, self.ctxt, 'project1', 'resource1', 42) def test_quota_get_nonexistent(self): self.assertRaises(exception.ProjectQuotaNotFound, db.quota_get, self.ctxt, 'project1', 'resource1') def test_quota_reserve_all_resources(self): quotas = {} deltas = {} reservable_resources = {} for i, resource in enumerate(quota.resources): if isinstance(resource, quota.ReservableResource): quotas[resource.name] = db.quota_create(self.ctxt, 'project1', resource.name, 100) deltas[resource.name] = i reservable_resources[resource.name] = resource usages = {'instances': 3, 'cores': 6, 'ram': 9} instances = [] for i in range(3): instances.append(db.instance_create(self.ctxt, {'vcpus': 2, 'memory_mb': 3, 'project_id': 'project1'})) usages['fixed_ips'] = 2 network = db.network_create_safe(self.ctxt, {}) for i in range(2): address = '192.168.0.%d' % i ip = db.fixed_ip_create(self.ctxt, {'project_id': 'project1', 'address': address, 'network_id': network['id']}) db.fixed_ip_associate(self.ctxt, address, instances[0].uuid, network['id']) usages['floating_ips'] = 5 for i in range(5): db.floating_ip_create(self.ctxt, {'project_id': 'project1'}) usages['security_groups'] = 3 for i in range(3): db.security_group_create(self.ctxt, {'project_id': 'project1'}) reservations_uuids = db.quota_reserve(self.ctxt, reservable_resources, quotas, quotas, deltas, None, None, None, 'project1') resources_names = reservable_resources.keys() for reservation_uuid in reservations_uuids: reservation = _reservation_get(self.ctxt, reservation_uuid) usage = db.quota_usage_get(self.ctxt, 'project1', reservation.resource) self.assertEqual(usage.in_use, usages[reservation.resource], 'Resource: %s' % reservation.resource) self.assertEqual(usage.reserved, deltas[reservation.resource]) self.assertIn(reservation.resource, resources_names) resources_names.remove(reservation.resource) self.assertEqual(len(resources_names), 0) def test_quota_destroy_all_by_project(self): reservations = _quota_reserve(self.ctxt, 'project1', 'user1') db.quota_destroy_all_by_project(self.ctxt, 'project1') self.assertEqual(db.quota_get_all_by_project(self.ctxt, 'project1'), {'project_id': 'project1'}) self.assertEqual(db.quota_get_all_by_project_and_user(self.ctxt, 'project1', 'user1'), {'project_id': 'project1', 'user_id': 'user1'}) self.assertEqual(db.quota_usage_get_all_by_project( self.ctxt, 'project1'), {'project_id': 'project1'}) for r in reservations: self.assertRaises(exception.ReservationNotFound, _reservation_get, self.ctxt, r) def test_quota_destroy_all_by_project_and_user(self): reservations = _quota_reserve(self.ctxt, 'project1', 'user1') db.quota_destroy_all_by_project_and_user(self.ctxt, 'project1', 'user1') self.assertEqual(db.quota_get_all_by_project_and_user(self.ctxt, 'project1', 'user1'), {'project_id': 'project1', 'user_id': 'user1'}) self.assertEqual(db.quota_usage_get_all_by_project_and_user( self.ctxt, 'project1', 'user1'), {'project_id': 'project1', 'user_id': 'user1', 'fixed_ips': {'in_use': 2, 'reserved': 2}}) for r in reservations: self.assertRaises(exception.ReservationNotFound, _reservation_get, self.ctxt, r) def test_quota_usage_get_nonexistent(self): self.assertRaises(exception.QuotaUsageNotFound, db.quota_usage_get, self.ctxt, 'p1', 'nonexitent_resource') def test_quota_usage_get(self): _quota_reserve(self.ctxt, 'p1', 'u1') quota_usage = db.quota_usage_get(self.ctxt, 'p1', 'resource0') expected = {'resource': 'resource0', 'project_id': 'p1', 'in_use': 0, 'reserved': 0, 'total': 0} for key, value in expected.iteritems(): self.assertEqual(value, quota_usage[key]) def test_quota_usage_get_all_by_project(self): _quota_reserve(self.ctxt, 'p1', 'u1') expected = {'project_id': 'p1', 'resource0': {'in_use': 0, 'reserved': 0}, 'resource1': {'in_use': 1, 'reserved': 1}, 'fixed_ips': {'in_use': 2, 'reserved': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'p1')) def test_quota_usage_get_all_by_project_and_user(self): _quota_reserve(self.ctxt, 'p1', 'u1') expected = {'project_id': 'p1', 'user_id': 'u1', 'resource0': {'in_use': 0, 'reserved': 0}, 'resource1': {'in_use': 1, 'reserved': 1}, 'fixed_ips': {'in_use': 2, 'reserved': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project_and_user( self.ctxt, 'p1', 'u1')) def test_quota_usage_update_nonexistent(self): self.assertRaises(exception.QuotaUsageNotFound, db.quota_usage_update, self.ctxt, 'p1', 'u1', 'resource', in_use=42) def test_quota_usage_update(self): _quota_reserve(self.ctxt, 'p1', 'u1') db.quota_usage_update(self.ctxt, 'p1', 'u1', 'resource0', in_use=42, reserved=43) quota_usage = db.quota_usage_get(self.ctxt, 'p1', 'resource0', 'u1') expected = {'resource': 'resource0', 'project_id': 'p1', 'user_id': 'u1', 'in_use': 42, 'reserved': 43, 'total': 85} for key, value in expected.iteritems(): self.assertEqual(value, quota_usage[key]) def test_quota_create_exists(self): db.quota_create(self.ctxt, 'project1', 'resource1', 41) self.assertRaises(exception.QuotaExists, db.quota_create, self.ctxt, 'project1', 'resource1', 42) class QuotaClassTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(QuotaClassTestCase, self).setUp() self.ctxt = context.get_admin_context() def test_quota_class_get_default(self): params = { 'test_resource1': '10', 'test_resource2': '20', 'test_resource3': '30', } for res, limit in params.items(): db.quota_class_create(self.ctxt, 'default', res, limit) defaults = db.quota_class_get_default(self.ctxt) self.assertEqual(defaults, dict(class_name='default', test_resource1=10, test_resource2=20, test_resource3=30)) def test_quota_class_create(self): qc = db.quota_class_create(self.ctxt, 'class name', 'resource', 42) self.assertEqual(qc.class_name, 'class name') self.assertEqual(qc.resource, 'resource') self.assertEqual(qc.hard_limit, 42) def test_quota_class_get(self): qc = db.quota_class_create(self.ctxt, 'class name', 'resource', 42) qc_db = db.quota_class_get(self.ctxt, 'class name', 'resource') self._assertEqualObjects(qc, qc_db) def test_quota_class_get_nonexistent(self): self.assertRaises(exception.QuotaClassNotFound, db.quota_class_get, self.ctxt, 'nonexistent', 'resource') def test_quota_class_get_all_by_name(self): for i in range(3): for j in range(3): db.quota_class_create(self.ctxt, 'class%d' % i, 'resource%d' % j, j) for i in range(3): classes = db.quota_class_get_all_by_name(self.ctxt, 'class%d' % i) self.assertEqual(classes, {'class_name': 'class%d' % i, 'resource0': 0, 'resource1': 1, 'resource2': 2}) def test_quota_class_update(self): db.quota_class_create(self.ctxt, 'class name', 'resource', 42) db.quota_class_update(self.ctxt, 'class name', 'resource', 43) self.assertEqual(db.quota_class_get(self.ctxt, 'class name', 'resource').hard_limit, 43) def test_quota_class_update_nonexistent(self): self.assertRaises(exception.QuotaClassNotFound, db.quota_class_update, self.ctxt, 'class name', 'resource', 42) class S3ImageTestCase(test.TestCase): def setUp(self): super(S3ImageTestCase, self).setUp() self.ctxt = context.get_admin_context() self.values = [uuidutils.generate_uuid() for i in xrange(3)] self.images = [db.s3_image_create(self.ctxt, uuid) for uuid in self.values] def test_s3_image_create(self): for ref in self.images: self.assertTrue(uuidutils.is_uuid_like(ref.uuid)) self.assertEqual(sorted(self.values), sorted([ref.uuid for ref in self.images])) def test_s3_image_get_by_uuid(self): for uuid in self.values: ref = db.s3_image_get_by_uuid(self.ctxt, uuid) self.assertTrue(uuidutils.is_uuid_like(ref.uuid)) self.assertEqual(uuid, ref.uuid) def test_s3_image_get(self): self.assertEqual(sorted(self.values), sorted([db.s3_image_get(self.ctxt, ref.id).uuid for ref in self.images])) def test_s3_image_get_not_found(self): self.assertRaises(exception.ImageNotFound, db.s3_image_get, self.ctxt, 100500) def test_s3_image_get_by_uuid_not_found(self): self.assertRaises(exception.ImageNotFound, db.s3_image_get_by_uuid, self.ctxt, uuidutils.generate_uuid()) class ComputeNodeTestCase(test.TestCase, ModelsObjectComparatorMixin): _ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] def setUp(self): super(ComputeNodeTestCase, self).setUp() self.ctxt = context.get_admin_context() self.service_dict = dict(host='host1', binary='nova-compute', topic=CONF.compute_topic, report_count=1, disabled=False) self.service = db.service_create(self.ctxt, self.service_dict) self.compute_node_dict = dict(vcpus=2, memory_mb=1024, local_gb=2048, vcpus_used=0, memory_mb_used=0, local_gb_used=0, free_ram_mb=1024, free_disk_gb=2048, hypervisor_type="xen", hypervisor_version=1, cpu_info="", running_vms=0, current_workload=0, service_id=self.service['id'], disk_available_least=100, hypervisor_hostname='abracadabra104', host_ip='127.0.0.1', supported_instances='', pci_stats='', metrics='', extra_resources='', stats='') # add some random stats self.stats = dict(num_instances=3, num_proj_12345=2, num_proj_23456=2, num_vm_building=3) self.compute_node_dict['stats'] = jsonutils.dumps(self.stats) self.flags(reserved_host_memory_mb=0) self.flags(reserved_host_disk_mb=0) self.item = db.compute_node_create(self.ctxt, self.compute_node_dict) def test_compute_node_create(self): self._assertEqualObjects(self.compute_node_dict, self.item, ignored_keys=self._ignored_keys + ['stats']) new_stats = jsonutils.loads(self.item['stats']) self.assertEqual(self.stats, new_stats) def test_compute_node_get_all(self): date_fields = set(['created_at', 'updated_at', 'deleted_at', 'deleted']) for no_date_fields in [False, True]: nodes = db.compute_node_get_all(self.ctxt, no_date_fields) self.assertEqual(1, len(nodes)) node = nodes[0] self._assertEqualObjects(self.compute_node_dict, node, ignored_keys=self._ignored_keys + ['stats', 'service']) node_fields = set(node.keys()) if no_date_fields: self.assertFalse(date_fields & node_fields) else: self.assertTrue(date_fields <= node_fields) new_stats = jsonutils.loads(node['stats']) self.assertEqual(self.stats, new_stats) def test_compute_node_get_all_deleted_compute_node(self): # Create a service and compute node and ensure we can find its stats; # delete the service and compute node when done and loop again for x in range(2, 5): # Create a service service_data = self.service_dict.copy() service_data['host'] = 'host-%s' % x service = db.service_create(self.ctxt, service_data) # Create a compute node compute_node_data = self.compute_node_dict.copy() compute_node_data['service_id'] = service['id'] compute_node_data['stats'] = jsonutils.dumps(self.stats.copy()) compute_node_data['hypervisor_hostname'] = 'hypervisor-%s' % x node = db.compute_node_create(self.ctxt, compute_node_data) # Ensure the "new" compute node is found nodes = db.compute_node_get_all(self.ctxt, False) self.assertEqual(2, len(nodes)) found = None for n in nodes: if n['id'] == node['id']: found = n break self.assertIsNotNone(found) # Now ensure the match has stats! self.assertNotEqual(jsonutils.loads(found['stats']), {}) # Now delete the newly-created compute node to ensure the related # compute node stats are wiped in a cascaded fashion db.compute_node_delete(self.ctxt, node['id']) # Clean up the service db.service_destroy(self.ctxt, service['id']) def test_compute_node_get_all_mult_compute_nodes_one_service_entry(self): service_data = self.service_dict.copy() service_data['host'] = 'host2' service = db.service_create(self.ctxt, service_data) existing_node = dict(self.item.iteritems()) existing_node['service'] = dict(self.service.iteritems()) expected = [existing_node] for name in ['bm_node1', 'bm_node2']: compute_node_data = self.compute_node_dict.copy() compute_node_data['service_id'] = service['id'] compute_node_data['stats'] = jsonutils.dumps(self.stats) compute_node_data['hypervisor_hostname'] = 'bm_node_1' node = db.compute_node_create(self.ctxt, compute_node_data) node = dict(node.iteritems()) node['service'] = dict(service.iteritems()) expected.append(node) result = sorted(db.compute_node_get_all(self.ctxt, False), key=lambda n: n['hypervisor_hostname']) self._assertEqualListsOfObjects(expected, result, ignored_keys=['stats']) def test_compute_node_get(self): compute_node_id = self.item['id'] node = db.compute_node_get(self.ctxt, compute_node_id) self._assertEqualObjects(self.compute_node_dict, node, ignored_keys=self._ignored_keys + ['stats', 'service']) new_stats = jsonutils.loads(node['stats']) self.assertEqual(self.stats, new_stats) def test_compute_node_update(self): compute_node_id = self.item['id'] stats = jsonutils.loads(self.item['stats']) # change some values: stats['num_instances'] = 8 stats['num_tribbles'] = 1 values = { 'vcpus': 4, 'stats': jsonutils.dumps(stats), } item_updated = db.compute_node_update(self.ctxt, compute_node_id, values) self.assertEqual(4, item_updated['vcpus']) new_stats = jsonutils.loads(item_updated['stats']) self.assertEqual(stats, new_stats) def test_compute_node_delete(self): compute_node_id = self.item['id'] db.compute_node_delete(self.ctxt, compute_node_id) nodes = db.compute_node_get_all(self.ctxt) self.assertEqual(len(nodes), 0) def test_compute_node_search_by_hypervisor(self): nodes_created = [] new_service = copy.copy(self.service_dict) for i in xrange(3): new_service['binary'] += str(i) new_service['topic'] += str(i) service = db.service_create(self.ctxt, new_service) self.compute_node_dict['service_id'] = service['id'] self.compute_node_dict['hypervisor_hostname'] = 'testhost' + str(i) self.compute_node_dict['stats'] = jsonutils.dumps(self.stats) node = db.compute_node_create(self.ctxt, self.compute_node_dict) nodes_created.append(node) nodes = db.compute_node_search_by_hypervisor(self.ctxt, 'host') self.assertEqual(3, len(nodes)) self._assertEqualListsOfObjects(nodes_created, nodes, ignored_keys=self._ignored_keys + ['stats', 'service']) def test_compute_node_statistics(self): stats = db.compute_node_statistics(self.ctxt) self.assertEqual(stats.pop('count'), 1) for k, v in stats.iteritems(): self.assertEqual(v, self.item[k]) def test_compute_node_not_found(self): self.assertRaises(exception.ComputeHostNotFound, db.compute_node_get, self.ctxt, 100500) def test_compute_node_update_always_updates_updated_at(self): item_updated = db.compute_node_update(self.ctxt, self.item['id'], {}) self.assertNotEqual(self.item['updated_at'], item_updated['updated_at']) def test_compute_node_update_override_updated_at(self): # Update the record once so updated_at is set. first = db.compute_node_update(self.ctxt, self.item['id'], {'free_ram_mb': '12'}) self.assertIsNotNone(first['updated_at']) # Update a second time. Make sure that the updated_at value we send # is overridden. second = db.compute_node_update(self.ctxt, self.item['id'], {'updated_at': first.updated_at, 'free_ram_mb': '13'}) self.assertNotEqual(first['updated_at'], second['updated_at']) class ProviderFwRuleTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(ProviderFwRuleTestCase, self).setUp() self.ctxt = context.get_admin_context() self.values = self._get_rule_values() self.rules = [db.provider_fw_rule_create(self.ctxt, rule) for rule in self.values] def _get_rule_values(self): cidr_samples = ['192.168.0.0/24', '10.1.2.3/32', '2001:4f8:3:ba::/64', '2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128'] values = [] for i in xrange(len(cidr_samples)): rule = {} rule['protocol'] = 'foo' + str(i) rule['from_port'] = 9999 + i rule['to_port'] = 9898 + i rule['cidr'] = cidr_samples[i] values.append(rule) return values def test_provider_fw_rule_create(self): ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] for i, rule in enumerate(self.values): self._assertEqualObjects(self.rules[i], rule, ignored_keys=ignored_keys) def test_provider_fw_rule_get_all(self): self._assertEqualListsOfObjects(self.rules, db.provider_fw_rule_get_all(self.ctxt)) def test_provider_fw_rule_destroy(self): for rule in self.rules: db.provider_fw_rule_destroy(self.ctxt, rule.id) self.assertEqual([], db.provider_fw_rule_get_all(self.ctxt)) class CertificateTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(CertificateTestCase, self).setUp() self.ctxt = context.get_admin_context() self.created = self._certificates_create() def _get_certs_values(self): base_values = { 'user_id': 'user', 'project_id': 'project', 'file_name': 'filename' } return [dict((k, v + str(x)) for k, v in base_values.iteritems()) for x in xrange(1, 4)] def _certificates_create(self): return [db.certificate_create(self.ctxt, cert) for cert in self._get_certs_values()] def test_certificate_create(self): ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] for i, cert in enumerate(self._get_certs_values()): self._assertEqualObjects(self.created[i], cert, ignored_keys=ignored_keys) def test_certificate_get_all_by_project(self): cert = db.certificate_get_all_by_project(self.ctxt, self.created[1].project_id) self._assertEqualObjects(self.created[1], cert[0]) def test_certificate_get_all_by_user(self): cert = db.certificate_get_all_by_user(self.ctxt, self.created[1].user_id) self._assertEqualObjects(self.created[1], cert[0]) def test_certificate_get_all_by_user_and_project(self): cert = db.certificate_get_all_by_user_and_project(self.ctxt, self.created[1].user_id, self.created[1].project_id) self._assertEqualObjects(self.created[1], cert[0]) class ConsoleTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(ConsoleTestCase, self).setUp() self.ctxt = context.get_admin_context() pools_data = [ {'address': '192.168.10.10', 'username': 'user1', 'password': 'passwd1', 'console_type': 'type1', 'public_hostname': 'public_host1', 'host': 'host1', 'compute_host': 'compute_host1', }, {'address': '192.168.10.11', 'username': 'user2', 'password': 'passwd2', 'console_type': 'type2', 'public_hostname': 'public_host2', 'host': 'host2', 'compute_host': 'compute_host2', }, ] self.console_pools = [db.console_pool_create(self.ctxt, val) for val in pools_data] instance_uuid = uuidutils.generate_uuid() db.instance_create(self.ctxt, {'uuid': instance_uuid}) self.console_data = [dict([('instance_name', 'name' + str(x)), ('instance_uuid', instance_uuid), ('password', 'pass' + str(x)), ('port', 7878 + x), ('pool_id', self.console_pools[x]['id'])]) for x in xrange(len(pools_data))] self.consoles = [db.console_create(self.ctxt, val) for val in self.console_data] def test_console_create(self): ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] for console in self.consoles: self.assertIsNotNone(console['id']) self._assertEqualListsOfObjects(self.console_data, self.consoles, ignored_keys=ignored_keys) def test_console_get_by_id(self): console = self.consoles[0] console_get = db.console_get(self.ctxt, console['id']) self._assertEqualObjects(console, console_get, ignored_keys=['pool']) def test_console_get_by_id_uuid(self): console = self.consoles[0] console_get = db.console_get(self.ctxt, console['id'], console['instance_uuid']) self._assertEqualObjects(console, console_get, ignored_keys=['pool']) def test_console_get_by_pool_instance(self): console = self.consoles[0] console_get = db.console_get_by_pool_instance(self.ctxt, console['pool_id'], console['instance_uuid']) self._assertEqualObjects(console, console_get, ignored_keys=['pool']) def test_console_get_all_by_instance(self): instance_uuid = self.consoles[0]['instance_uuid'] consoles_get = db.console_get_all_by_instance(self.ctxt, instance_uuid) self._assertEqualListsOfObjects(self.consoles, consoles_get) def test_console_get_all_by_instance_with_pool(self): instance_uuid = self.consoles[0]['instance_uuid'] consoles_get = db.console_get_all_by_instance(self.ctxt, instance_uuid, columns_to_join=['pool']) self._assertEqualListsOfObjects(self.consoles, consoles_get, ignored_keys=['pool']) self._assertEqualListsOfObjects([pool for pool in self.console_pools], [c['pool'] for c in consoles_get]) def test_console_get_all_by_instance_empty(self): consoles_get = db.console_get_all_by_instance(self.ctxt, uuidutils.generate_uuid()) self.assertEqual(consoles_get, []) def test_console_delete(self): console_id = self.consoles[0]['id'] db.console_delete(self.ctxt, console_id) self.assertRaises(exception.ConsoleNotFound, db.console_get, self.ctxt, console_id) def test_console_get_by_pool_instance_not_found(self): self.assertRaises(exception.ConsoleNotFoundInPoolForInstance, db.console_get_by_pool_instance, self.ctxt, self.consoles[0]['pool_id'], uuidutils.generate_uuid()) def test_console_get_not_found(self): self.assertRaises(exception.ConsoleNotFound, db.console_get, self.ctxt, 100500) def test_console_get_not_found_instance(self): self.assertRaises(exception.ConsoleNotFoundForInstance, db.console_get, self.ctxt, self.consoles[0]['id'], uuidutils.generate_uuid()) class CellTestCase(test.TestCase, ModelsObjectComparatorMixin): _ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] def setUp(self): super(CellTestCase, self).setUp() self.ctxt = context.get_admin_context() def _get_cell_base_values(self): return { 'name': 'myname', 'api_url': 'apiurl', 'transport_url': 'transporturl', 'weight_offset': 0.5, 'weight_scale': 1.5, 'is_parent': True, } def _cell_value_modify(self, value, step): if isinstance(value, str): return value + str(step) elif isinstance(value, float): return value + step + 0.6 elif isinstance(value, bool): return bool(step % 2) elif isinstance(value, int): return value + step def _create_cells(self): test_values = [] for x in xrange(1, 4): modified_val = dict([(k, self._cell_value_modify(v, x)) for k, v in self._get_cell_base_values().iteritems()]) db.cell_create(self.ctxt, modified_val) test_values.append(modified_val) return test_values def test_cell_create(self): cell = db.cell_create(self.ctxt, self._get_cell_base_values()) self.assertIsNotNone(cell['id']) self._assertEqualObjects(cell, self._get_cell_base_values(), ignored_keys=self._ignored_keys) def test_cell_update(self): db.cell_create(self.ctxt, self._get_cell_base_values()) new_values = { 'api_url': 'apiurl1', 'transport_url': 'transporturl1', 'weight_offset': 0.6, 'weight_scale': 1.6, 'is_parent': False, } test_cellname = self._get_cell_base_values()['name'] updated_cell = db.cell_update(self.ctxt, test_cellname, new_values) self._assertEqualObjects(updated_cell, new_values, ignored_keys=self._ignored_keys + ['name']) def test_cell_delete(self): new_cells = self._create_cells() for cell in new_cells: test_cellname = cell['name'] db.cell_delete(self.ctxt, test_cellname) self.assertRaises(exception.CellNotFound, db.cell_get, self.ctxt, test_cellname) def test_cell_get(self): new_cells = self._create_cells() for cell in new_cells: cell_get = db.cell_get(self.ctxt, cell['name']) self._assertEqualObjects(cell_get, cell, ignored_keys=self._ignored_keys) def test_cell_get_all(self): new_cells = self._create_cells() cells = db.cell_get_all(self.ctxt) self.assertEqual(len(new_cells), len(cells)) cells_byname = dict([(newcell['name'], newcell) for newcell in new_cells]) for cell in cells: self._assertEqualObjects(cell, cells_byname[cell['name']], self._ignored_keys) def test_cell_get_not_found(self): self._create_cells() self.assertRaises(exception.CellNotFound, db.cell_get, self.ctxt, 'cellnotinbase') def test_cell_update_not_found(self): self._create_cells() self.assertRaises(exception.CellNotFound, db.cell_update, self.ctxt, 'cellnotinbase', self._get_cell_base_values()) def test_cell_create_exists(self): db.cell_create(self.ctxt, self._get_cell_base_values()) self.assertRaises(exception.CellExists, db.cell_create, self.ctxt, self._get_cell_base_values()) class ConsolePoolTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(ConsolePoolTestCase, self).setUp() self.ctxt = context.get_admin_context() self.test_console_pool_1 = { 'address': '192.168.2.10', 'username': 'user_1', 'password': 'secret_123', 'console_type': 'type_1', 'public_hostname': 'public_hostname_123', 'host': 'localhost', 'compute_host': '127.0.0.1', } self.test_console_pool_2 = { 'address': '192.168.2.11', 'username': 'user_2', 'password': 'secret_1234', 'console_type': 'type_2', 'public_hostname': 'public_hostname_1234', 'host': '127.0.0.1', 'compute_host': 'localhost', } self.test_console_pool_3 = { 'address': '192.168.2.12', 'username': 'user_3', 'password': 'secret_12345', 'console_type': 'type_2', 'public_hostname': 'public_hostname_12345', 'host': '127.0.0.1', 'compute_host': '192.168.1.1', } def test_console_pool_create(self): console_pool = db.console_pool_create( self.ctxt, self.test_console_pool_1) self.assertIsNotNone(console_pool.get('id')) ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at', 'id'] self._assertEqualObjects( console_pool, self.test_console_pool_1, ignored_keys) def test_console_pool_create_duplicate(self): db.console_pool_create(self.ctxt, self.test_console_pool_1) self.assertRaises(exception.ConsolePoolExists, db.console_pool_create, self.ctxt, self.test_console_pool_1) def test_console_pool_get_by_host_type(self): params = [ self.test_console_pool_1, self.test_console_pool_2, ] for p in params: db.console_pool_create(self.ctxt, p) ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at', 'id', 'consoles'] cp = self.test_console_pool_1 db_cp = db.console_pool_get_by_host_type( self.ctxt, cp['compute_host'], cp['host'], cp['console_type'] ) self._assertEqualObjects(cp, db_cp, ignored_keys) def test_console_pool_get_by_host_type_no_resuls(self): self.assertRaises( exception.ConsolePoolNotFoundForHostType, db.console_pool_get_by_host_type, self.ctxt, 'compute_host', 'host', 'console_type') def test_console_pool_get_all_by_host_type(self): params = [ self.test_console_pool_1, self.test_console_pool_2, self.test_console_pool_3, ] for p in params: db.console_pool_create(self.ctxt, p) ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at', 'id', 'consoles'] cp = self.test_console_pool_2 db_cp = db.console_pool_get_all_by_host_type( self.ctxt, cp['host'], cp['console_type']) self._assertEqualListsOfObjects( db_cp, [self.test_console_pool_2, self.test_console_pool_3], ignored_keys) def test_console_pool_get_all_by_host_type_no_results(self): res = db.console_pool_get_all_by_host_type( self.ctxt, 'cp_host', 'cp_console_type') self.assertEqual([], res) class DnsdomainTestCase(test.TestCase): def setUp(self): super(DnsdomainTestCase, self).setUp() self.ctxt = context.get_admin_context() self.domain = 'test.domain' self.testzone = 'testzone' self.project = 'fake' def test_dnsdomain_register_for_zone(self): db.dnsdomain_register_for_zone(self.ctxt, self.domain, self.testzone) domain = db.dnsdomain_get(self.ctxt, self.domain) self.assertEqual(domain['domain'], self.domain) self.assertEqual(domain['availability_zone'], self.testzone) self.assertEqual(domain['scope'], 'private') def test_dnsdomain_register_for_project(self): db.dnsdomain_register_for_project(self.ctxt, self.domain, self.project) domain = db.dnsdomain_get(self.ctxt, self.domain) self.assertEqual(domain['domain'], self.domain) self.assertEqual(domain['project_id'], self.project) self.assertEqual(domain['scope'], 'public') def test_dnsdomain_list(self): d_list = ['test.domain.one', 'test.domain.two'] db.dnsdomain_register_for_zone(self.ctxt, d_list[0], self.testzone) db.dnsdomain_register_for_project(self.ctxt, d_list[1], self.project) db_list = db.dnsdomain_list(self.ctxt) self.assertEqual(sorted(d_list), sorted(db_list)) def test_dnsdomain_unregister(self): db.dnsdomain_register_for_zone(self.ctxt, self.domain, self.testzone) db.dnsdomain_unregister(self.ctxt, self.domain) domain = db.dnsdomain_get(self.ctxt, self.domain) self.assertIsNone(domain) def test_dnsdomain_get_all(self): d_list = ['test.domain.one', 'test.domain.two'] db.dnsdomain_register_for_zone(self.ctxt, d_list[0], 'zone') db.dnsdomain_register_for_zone(self.ctxt, d_list[1], 'zone') db_list = db.dnsdomain_get_all(self.ctxt) db_domain_list = [d.domain for d in db_list] self.assertEqual(sorted(d_list), sorted(db_domain_list)) class BwUsageTestCase(test.TestCase, ModelsObjectComparatorMixin): _ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] def setUp(self): super(BwUsageTestCase, self).setUp() self.ctxt = context.get_admin_context() self.useFixture(test.TimeOverride()) def test_bw_usage_get_by_uuids(self): now = timeutils.utcnow() start_period = now - datetime.timedelta(seconds=10) uuid3_refreshed = now - datetime.timedelta(seconds=5) expected_bw_usages = { 'fake_uuid1': {'uuid': 'fake_uuid1', 'mac': 'fake_mac1', 'start_period': start_period, 'bw_in': 100, 'bw_out': 200, 'last_ctr_in': 12345, 'last_ctr_out': 67890, 'last_refreshed': now}, 'fake_uuid2': {'uuid': 'fake_uuid2', 'mac': 'fake_mac2', 'start_period': start_period, 'bw_in': 200, 'bw_out': 300, 'last_ctr_in': 22345, 'last_ctr_out': 77890, 'last_refreshed': now}, 'fake_uuid3': {'uuid': 'fake_uuid3', 'mac': 'fake_mac3', 'start_period': start_period, 'bw_in': 400, 'bw_out': 500, 'last_ctr_in': 32345, 'last_ctr_out': 87890, 'last_refreshed': uuid3_refreshed} } bw_usages = db.bw_usage_get_by_uuids(self.ctxt, ['fake_uuid1', 'fake_uuid2'], start_period) # No matches self.assertEqual(len(bw_usages), 0) # Add 3 entries db.bw_usage_update(self.ctxt, 'fake_uuid1', 'fake_mac1', start_period, 100, 200, 12345, 67890) db.bw_usage_update(self.ctxt, 'fake_uuid2', 'fake_mac2', start_period, 100, 200, 42, 42) # Test explicit refreshed time db.bw_usage_update(self.ctxt, 'fake_uuid3', 'fake_mac3', start_period, 400, 500, 32345, 87890, last_refreshed=uuid3_refreshed) # Update 2nd entry db.bw_usage_update(self.ctxt, 'fake_uuid2', 'fake_mac2', start_period, 200, 300, 22345, 77890) bw_usages = db.bw_usage_get_by_uuids(self.ctxt, ['fake_uuid1', 'fake_uuid2', 'fake_uuid3'], start_period) self.assertEqual(len(bw_usages), 3) for usage in bw_usages: self._assertEqualObjects(expected_bw_usages[usage['uuid']], usage, ignored_keys=self._ignored_keys) def test_bw_usage_get(self): now = timeutils.utcnow() start_period = now - datetime.timedelta(seconds=10) expected_bw_usage = {'uuid': 'fake_uuid1', 'mac': 'fake_mac1', 'start_period': start_period, 'bw_in': 100, 'bw_out': 200, 'last_ctr_in': 12345, 'last_ctr_out': 67890, 'last_refreshed': now} bw_usage = db.bw_usage_get(self.ctxt, 'fake_uuid1', start_period, 'fake_mac1') self.assertIsNone(bw_usage) db.bw_usage_update(self.ctxt, 'fake_uuid1', 'fake_mac1', start_period, 100, 200, 12345, 67890) bw_usage = db.bw_usage_get(self.ctxt, 'fake_uuid1', start_period, 'fake_mac1') self._assertEqualObjects(bw_usage, expected_bw_usage, ignored_keys=self._ignored_keys) class Ec2TestCase(test.TestCase): def setUp(self): super(Ec2TestCase, self).setUp() self.ctxt = context.RequestContext('fake_user', 'fake_project') def test_ec2_ids_not_found_are_printable(self): def check_exc_format(method, value): try: method(self.ctxt, value) except exception.NotFound as exc: self.assertIn(unicode(value), unicode(exc)) check_exc_format(db.get_ec2_volume_id_by_uuid, 'fake') check_exc_format(db.get_volume_uuid_by_ec2_id, 123456) check_exc_format(db.get_ec2_snapshot_id_by_uuid, 'fake') check_exc_format(db.get_snapshot_uuid_by_ec2_id, 123456) check_exc_format(db.get_ec2_instance_id_by_uuid, 'fake') check_exc_format(db.get_instance_uuid_by_ec2_id, 123456) def test_ec2_volume_create(self): vol = db.ec2_volume_create(self.ctxt, 'fake-uuid') self.assertIsNotNone(vol['id']) self.assertEqual(vol['uuid'], 'fake-uuid') def test_get_ec2_volume_id_by_uuid(self): vol = db.ec2_volume_create(self.ctxt, 'fake-uuid') vol_id = db.get_ec2_volume_id_by_uuid(self.ctxt, 'fake-uuid') self.assertEqual(vol['id'], vol_id) def test_get_volume_uuid_by_ec2_id(self): vol = db.ec2_volume_create(self.ctxt, 'fake-uuid') vol_uuid = db.get_volume_uuid_by_ec2_id(self.ctxt, vol['id']) self.assertEqual(vol_uuid, 'fake-uuid') def test_get_ec2_volume_id_by_uuid_not_found(self): self.assertRaises(exception.VolumeNotFound, db.get_ec2_volume_id_by_uuid, self.ctxt, 'uuid-not-present') def test_get_volume_uuid_by_ec2_id_not_found(self): self.assertRaises(exception.VolumeNotFound, db.get_volume_uuid_by_ec2_id, self.ctxt, 100500) def test_ec2_snapshot_create(self): snap = db.ec2_snapshot_create(self.ctxt, 'fake-uuid') self.assertIsNotNone(snap['id']) self.assertEqual(snap['uuid'], 'fake-uuid') def test_get_ec2_snapshot_id_by_uuid(self): snap = db.ec2_snapshot_create(self.ctxt, 'fake-uuid') snap_id = db.get_ec2_snapshot_id_by_uuid(self.ctxt, 'fake-uuid') self.assertEqual(snap['id'], snap_id) def test_get_snapshot_uuid_by_ec2_id(self): snap = db.ec2_snapshot_create(self.ctxt, 'fake-uuid') snap_uuid = db.get_snapshot_uuid_by_ec2_id(self.ctxt, snap['id']) self.assertEqual(snap_uuid, 'fake-uuid') def test_get_ec2_snapshot_id_by_uuid_not_found(self): self.assertRaises(exception.SnapshotNotFound, db.get_ec2_snapshot_id_by_uuid, self.ctxt, 'uuid-not-present') def test_get_snapshot_uuid_by_ec2_id_not_found(self): self.assertRaises(exception.SnapshotNotFound, db.get_snapshot_uuid_by_ec2_id, self.ctxt, 100500) def test_ec2_instance_create(self): inst = db.ec2_instance_create(self.ctxt, 'fake-uuid') self.assertIsNotNone(inst['id']) self.assertEqual(inst['uuid'], 'fake-uuid') def test_get_ec2_instance_id_by_uuid(self): inst = db.ec2_instance_create(self.ctxt, 'fake-uuid') inst_id = db.get_ec2_instance_id_by_uuid(self.ctxt, 'fake-uuid') self.assertEqual(inst['id'], inst_id) def test_get_instance_uuid_by_ec2_id(self): inst = db.ec2_instance_create(self.ctxt, 'fake-uuid') inst_uuid = db.get_instance_uuid_by_ec2_id(self.ctxt, inst['id']) self.assertEqual(inst_uuid, 'fake-uuid') def test_get_ec2_instance_id_by_uuid_not_found(self): self.assertRaises(exception.InstanceNotFound, db.get_ec2_instance_id_by_uuid, self.ctxt, 'uuid-not-present') def test_get_instance_uuid_by_ec2_id_not_found(self): self.assertRaises(exception.InstanceNotFound, db.get_instance_uuid_by_ec2_id, self.ctxt, 100500) class ArchiveTestCase(test.TestCase): def setUp(self): super(ArchiveTestCase, self).setUp() self.context = context.get_admin_context() self.engine = get_engine() self.conn = self.engine.connect() self.instance_id_mappings = db_utils.get_table(self.engine, "instance_id_mappings") self.shadow_instance_id_mappings = db_utils.get_table(self.engine, "shadow_instance_id_mappings") self.dns_domains = db_utils.get_table(self.engine, "dns_domains") self.shadow_dns_domains = db_utils.get_table(self.engine, "shadow_dns_domains") self.consoles = db_utils.get_table(self.engine, "consoles") self.console_pools = db_utils.get_table(self.engine, "console_pools") self.shadow_consoles = db_utils.get_table(self.engine, "shadow_consoles") self.shadow_console_pools = db_utils.get_table(self.engine, "shadow_console_pools") self.instances = db_utils.get_table(self.engine, "instances") self.shadow_instances = db_utils.get_table(self.engine, "shadow_instances") self.uuidstrs = [] for unused in range(6): self.uuidstrs.append(stdlib_uuid.uuid4().hex) self.ids = [] self.id_tablenames_to_cleanup = set(["console_pools", "consoles"]) self.uuid_tablenames_to_cleanup = set(["instance_id_mappings", "instances"]) self.domain_tablenames_to_cleanup = set(["dns_domains"]) def tearDown(self): super(ArchiveTestCase, self).tearDown() for tablename in self.id_tablenames_to_cleanup: for name in [tablename, "shadow_" + tablename]: table = db_utils.get_table(self.engine, name) del_statement = table.delete(table.c.id.in_(self.ids)) self.conn.execute(del_statement) for tablename in self.uuid_tablenames_to_cleanup: for name in [tablename, "shadow_" + tablename]: table = db_utils.get_table(self.engine, name) del_statement = table.delete(table.c.uuid.in_(self.uuidstrs)) self.conn.execute(del_statement) for tablename in self.domain_tablenames_to_cleanup: for name in [tablename, "shadow_" + tablename]: table = db_utils.get_table(self.engine, name) del_statement = table.delete(table.c.domain.in_(self.uuidstrs)) self.conn.execute(del_statement) def test_shadow_tables(self): metadata = MetaData(bind=self.engine) metadata.reflect() for table_name in metadata.tables: # NOTE(rpodolyaka): migration 209 introduced a few new tables, # which don't have shadow tables and it's # completely OK, so we should skip them here if table_name.startswith("dump_"): continue if table_name.startswith("shadow_"): self.assertIn(table_name[7:], metadata.tables) continue self.assertTrue(db_utils.check_shadow_table(self.engine, table_name)) def test_archive_deleted_rows(self): # Add 6 rows to table for uuidstr in self.uuidstrs: ins_stmt = self.instance_id_mappings.insert().values(uuid=uuidstr) self.conn.execute(ins_stmt) # Set 4 to deleted update_statement = self.instance_id_mappings.update().\ where(self.instance_id_mappings.c.uuid.in_(self.uuidstrs[:4]))\ .values(deleted=1) self.conn.execute(update_statement) qiim = select([self.instance_id_mappings]).where(self. instance_id_mappings.c.uuid.in_(self.uuidstrs)) rows = self.conn.execute(qiim).fetchall() # Verify we have 6 in main self.assertEqual(len(rows), 6) qsiim = select([self.shadow_instance_id_mappings]).\ where(self.shadow_instance_id_mappings.c.uuid.in_( self.uuidstrs)) rows = self.conn.execute(qsiim).fetchall() # Verify we have 0 in shadow self.assertEqual(len(rows), 0) # Archive 2 rows db.archive_deleted_rows(self.context, max_rows=2) rows = self.conn.execute(qiim).fetchall() # Verify we have 4 left in main self.assertEqual(len(rows), 4) rows = self.conn.execute(qsiim).fetchall() # Verify we have 2 in shadow self.assertEqual(len(rows), 2) # Archive 2 more rows db.archive_deleted_rows(self.context, max_rows=2) rows = self.conn.execute(qiim).fetchall() # Verify we have 2 left in main self.assertEqual(len(rows), 2) rows = self.conn.execute(qsiim).fetchall() # Verify we have 4 in shadow self.assertEqual(len(rows), 4) # Try to archive more, but there are no deleted rows left. db.archive_deleted_rows(self.context, max_rows=2) rows = self.conn.execute(qiim).fetchall() # Verify we still have 2 left in main self.assertEqual(len(rows), 2) rows = self.conn.execute(qsiim).fetchall() # Verify we still have 4 in shadow self.assertEqual(len(rows), 4) def test_archive_deleted_rows_for_every_uuid_table(self): tablenames = [] for model_class in models.__dict__.itervalues(): if hasattr(model_class, "__tablename__"): tablenames.append(model_class.__tablename__) tablenames.sort() for tablename in tablenames: ret = self._test_archive_deleted_rows_for_one_uuid_table(tablename) if ret == 0: self.uuid_tablenames_to_cleanup.add(tablename) def _test_archive_deleted_rows_for_one_uuid_table(self, tablename): """:returns: 0 on success, 1 if no uuid column, 2 if insert failed.""" main_table = db_utils.get_table(self.engine, tablename) if not hasattr(main_table.c, "uuid"): # Not a uuid table, so skip it. return 1 shadow_table = db_utils.get_table(self.engine, "shadow_" + tablename) # Add 6 rows to table for uuidstr in self.uuidstrs: ins_stmt = main_table.insert().values(uuid=uuidstr) try: self.conn.execute(ins_stmt) except IntegrityError: # This table has constraints that require a table-specific # insert, so skip it. return 2 # Set 4 to deleted update_statement = main_table.update().\ where(main_table.c.uuid.in_(self.uuidstrs[:4]))\ .values(deleted=1) self.conn.execute(update_statement) qmt = select([main_table]).where(main_table.c.uuid.in_( self.uuidstrs)) rows = self.conn.execute(qmt).fetchall() # Verify we have 6 in main self.assertEqual(len(rows), 6) qst = select([shadow_table]).\ where(shadow_table.c.uuid.in_(self.uuidstrs)) rows = self.conn.execute(qst).fetchall() # Verify we have 0 in shadow self.assertEqual(len(rows), 0) # Archive 2 rows db.archive_deleted_rows_for_table(self.context, tablename, max_rows=2) # Verify we have 4 left in main rows = self.conn.execute(qmt).fetchall() self.assertEqual(len(rows), 4) # Verify we have 2 in shadow rows = self.conn.execute(qst).fetchall() self.assertEqual(len(rows), 2) # Archive 2 more rows db.archive_deleted_rows_for_table(self.context, tablename, max_rows=2) # Verify we have 2 left in main rows = self.conn.execute(qmt).fetchall() self.assertEqual(len(rows), 2) # Verify we have 4 in shadow rows = self.conn.execute(qst).fetchall() self.assertEqual(len(rows), 4) # Try to archive more, but there are no deleted rows left. db.archive_deleted_rows_for_table(self.context, tablename, max_rows=2) # Verify we still have 2 left in main rows = self.conn.execute(qmt).fetchall() self.assertEqual(len(rows), 2) # Verify we still have 4 in shadow rows = self.conn.execute(qst).fetchall() self.assertEqual(len(rows), 4) return 0 def test_archive_deleted_rows_no_id_column(self): uuidstr0 = self.uuidstrs[0] ins_stmt = self.dns_domains.insert().values(domain=uuidstr0) self.conn.execute(ins_stmt) update_statement = self.dns_domains.update().\ where(self.dns_domains.c.domain == uuidstr0).\ values(deleted=True) self.conn.execute(update_statement) qdd = select([self.dns_domains], self.dns_domains.c.domain == uuidstr0) rows = self.conn.execute(qdd).fetchall() self.assertEqual(len(rows), 1) qsdd = select([self.shadow_dns_domains], self.shadow_dns_domains.c.domain == uuidstr0) rows = self.conn.execute(qsdd).fetchall() self.assertEqual(len(rows), 0) db.archive_deleted_rows(self.context, max_rows=1) rows = self.conn.execute(qdd).fetchall() self.assertEqual(len(rows), 0) rows = self.conn.execute(qsdd).fetchall() self.assertEqual(len(rows), 1) def test_archive_deleted_rows_fk_constraint(self): # consoles.pool_id depends on console_pools.id # SQLite doesn't enforce foreign key constraints without a pragma. dialect = self.engine.url.get_dialect() if dialect == sqlite.dialect: # We're seeing issues with foreign key support in SQLite 3.6.20 # SQLAlchemy doesn't support it at all with < SQLite 3.6.19 # It works fine in SQLite 3.7. # So return early to skip this test if running SQLite < 3.7 import sqlite3 tup = sqlite3.sqlite_version_info if tup[0] < 3 or (tup[0] == 3 and tup[1] < 7): self.skipTest( 'sqlite version too old for reliable SQLA foreign_keys') self.conn.execute("PRAGMA foreign_keys = ON") ins_stmt = self.console_pools.insert().values(deleted=1) result = self.conn.execute(ins_stmt) id1 = result.inserted_primary_key[0] self.ids.append(id1) ins_stmt = self.consoles.insert().values(deleted=1, pool_id=id1) result = self.conn.execute(ins_stmt) id2 = result.inserted_primary_key[0] self.ids.append(id2) # The first try to archive console_pools should fail, due to FK. num = db.archive_deleted_rows_for_table(self.context, "console_pools") self.assertEqual(num, 0) # Then archiving consoles should work. num = db.archive_deleted_rows_for_table(self.context, "consoles") self.assertEqual(num, 1) # Then archiving console_pools should work. num = db.archive_deleted_rows_for_table(self.context, "console_pools") self.assertEqual(num, 1) def test_archive_deleted_rows_2_tables(self): # Add 6 rows to each table for uuidstr in self.uuidstrs: ins_stmt = self.instance_id_mappings.insert().values(uuid=uuidstr) self.conn.execute(ins_stmt) ins_stmt2 = self.instances.insert().values(uuid=uuidstr) self.conn.execute(ins_stmt2) # Set 4 of each to deleted update_statement = self.instance_id_mappings.update().\ where(self.instance_id_mappings.c.uuid.in_(self.uuidstrs[:4]))\ .values(deleted=1) self.conn.execute(update_statement) update_statement2 = self.instances.update().\ where(self.instances.c.uuid.in_(self.uuidstrs[:4]))\ .values(deleted=1) self.conn.execute(update_statement2) # Verify we have 6 in each main table qiim = select([self.instance_id_mappings]).where( self.instance_id_mappings.c.uuid.in_(self.uuidstrs)) rows = self.conn.execute(qiim).fetchall() self.assertEqual(len(rows), 6) qi = select([self.instances]).where(self.instances.c.uuid.in_( self.uuidstrs)) rows = self.conn.execute(qi).fetchall() self.assertEqual(len(rows), 6) # Verify we have 0 in each shadow table qsiim = select([self.shadow_instance_id_mappings]).\ where(self.shadow_instance_id_mappings.c.uuid.in_( self.uuidstrs)) rows = self.conn.execute(qsiim).fetchall() self.assertEqual(len(rows), 0) qsi = select([self.shadow_instances]).\ where(self.shadow_instances.c.uuid.in_(self.uuidstrs)) rows = self.conn.execute(qsi).fetchall() self.assertEqual(len(rows), 0) # Archive 7 rows, which should be 4 in one table and 3 in the other. db.archive_deleted_rows(self.context, max_rows=7) # Verify we have 5 left in the two main tables combined iim_rows = self.conn.execute(qiim).fetchall() i_rows = self.conn.execute(qi).fetchall() self.assertEqual(len(iim_rows) + len(i_rows), 5) # Verify we have 7 in the two shadow tables combined. siim_rows = self.conn.execute(qsiim).fetchall() si_rows = self.conn.execute(qsi).fetchall() self.assertEqual(len(siim_rows) + len(si_rows), 7) # Archive the remaining deleted rows. db.archive_deleted_rows(self.context, max_rows=1) # Verify we have 4 total left in both main tables. iim_rows = self.conn.execute(qiim).fetchall() i_rows = self.conn.execute(qi).fetchall() self.assertEqual(len(iim_rows) + len(i_rows), 4) # Verify we have 8 in shadow siim_rows = self.conn.execute(qsiim).fetchall() si_rows = self.conn.execute(qsi).fetchall() self.assertEqual(len(siim_rows) + len(si_rows), 8) # Try to archive more, but there are no deleted rows left. db.archive_deleted_rows(self.context, max_rows=500) # Verify we have 4 total left in both main tables. iim_rows = self.conn.execute(qiim).fetchall() i_rows = self.conn.execute(qi).fetchall() self.assertEqual(len(iim_rows) + len(i_rows), 4) # Verify we have 8 in shadow siim_rows = self.conn.execute(qsiim).fetchall() si_rows = self.conn.execute(qsi).fetchall() self.assertEqual(len(siim_rows) + len(si_rows), 8) class InstanceGroupDBApiTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(InstanceGroupDBApiTestCase, self).setUp() self.user_id = 'fake_user' self.project_id = 'fake_project' self.context = context.RequestContext(self.user_id, self.project_id) def _get_default_values(self): return {'name': 'fake_name', 'user_id': self.user_id, 'project_id': self.project_id} def _create_instance_group(self, context, values, policies=None, metadata=None, members=None): return db.instance_group_create(context, values, policies=policies, metadata=metadata, members=members) def test_instance_group_create_no_key(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) ignored_keys = ['id', 'uuid', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result, values, ignored_keys) self.assertTrue(uuidutils.is_uuid_like(result['uuid'])) def test_instance_group_create_with_key(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result, values, ignored_keys) def test_instance_group_create_with_same_key(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) self.assertRaises(exception.InstanceGroupIdExists, self._create_instance_group, self.context, values) def test_instance_group_get(self): values = self._get_default_values() result1 = self._create_instance_group(self.context, values) result2 = db.instance_group_get(self.context, result1['uuid']) self._assertEqualObjects(result1, result2) def test_instance_group_update_simple(self): values = self._get_default_values() result1 = self._create_instance_group(self.context, values) values = {'name': 'new_name', 'user_id': 'new_user', 'project_id': 'new_project'} db.instance_group_update(self.context, result1['uuid'], values) result2 = db.instance_group_get(self.context, result1['uuid']) self.assertEqual(result1['uuid'], result2['uuid']) ignored_keys = ['id', 'uuid', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result2, values, ignored_keys) def test_instance_group_delete(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) db.instance_group_delete(self.context, result['uuid']) self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_delete, self.context, result['uuid']) def test_instance_group_get_nonexistent(self): self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_get, self.context, 'nonexistent') def test_instance_group_delete_nonexistent(self): self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_delete, self.context, 'nonexistent') def test_instance_group_get_all(self): groups = db.instance_group_get_all(self.context) self.assertEqual(0, len(groups)) value = self._get_default_values() result1 = self._create_instance_group(self.context, value) groups = db.instance_group_get_all(self.context) self.assertEqual(1, len(groups)) value = self._get_default_values() result2 = self._create_instance_group(self.context, value) groups = db.instance_group_get_all(self.context) results = [result1, result2] self._assertEqualListsOfObjects(results, groups) def test_instance_group_get_all_by_project_id(self): groups = db.instance_group_get_all_by_project_id(self.context, 'invalid_project_id') self.assertEqual(0, len(groups)) values = self._get_default_values() result1 = self._create_instance_group(self.context, values) groups = db.instance_group_get_all_by_project_id(self.context, 'fake_project') self.assertEqual(1, len(groups)) values = self._get_default_values() values['project_id'] = 'new_project_id' result2 = self._create_instance_group(self.context, values) groups = db.instance_group_get_all(self.context) results = [result1, result2] self._assertEqualListsOfObjects(results, groups) projects = [{'name': 'fake_project', 'value': [result1]}, {'name': 'new_project_id', 'value': [result2]}] for project in projects: groups = db.instance_group_get_all_by_project_id(self.context, project['name']) self._assertEqualListsOfObjects(project['value'], groups) def test_instance_group_update(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) ignored_keys = ['id', 'uuid', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result, values, ignored_keys) self.assertTrue(uuidutils.is_uuid_like(result['uuid'])) id = result['uuid'] values = self._get_default_values() values['name'] = 'new_fake_name' db.instance_group_update(self.context, id, values) result = db.instance_group_get(self.context, id) self.assertEqual(result['name'], 'new_fake_name') # update metadata values = self._get_default_values() metadataInput = {'key11': 'value1', 'key12': 'value2'} values['metadata'] = metadataInput db.instance_group_update(self.context, id, values) result = db.instance_group_get(self.context, id) metadata = result['metadetails'] self._assertEqualObjects(metadata, metadataInput) # update update members values = self._get_default_values() members = ['instance_id1', 'instance_id2'] values['members'] = members db.instance_group_update(self.context, id, values) result = db.instance_group_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(result['members'], members) # update update policies values = self._get_default_values() policies = ['policy1', 'policy2'] values['policies'] = policies db.instance_group_update(self.context, id, values) result = db.instance_group_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(result['policies'], policies) # test invalid ID self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_update, self.context, 'invalid_id', values) class InstanceGroupMetadataDBApiTestCase(InstanceGroupDBApiTestCase): def test_instance_group_metadata_on_create(self): values = self._get_default_values() values['uuid'] = 'fake_id' metadata = {'key11': 'value1', 'key12': 'value2'} result = self._create_instance_group(self.context, values, metadata=metadata) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result, values, ignored_keys) self._assertEqualObjects(metadata, result['metadetails']) def test_instance_group_metadata_add(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] metadata = db.instance_group_metadata_get(self.context, id) self._assertEqualObjects(metadata, {}) metadata = {'key1': 'value1', 'key2': 'value2'} db.instance_group_metadata_add(self.context, id, metadata) metadata2 = db.instance_group_metadata_get(self.context, id) self._assertEqualObjects(metadata, metadata2) def test_instance_group_update(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] metadata = {'key1': 'value1', 'key2': 'value2'} db.instance_group_metadata_add(self.context, id, metadata) metadata2 = db.instance_group_metadata_get(self.context, id) self._assertEqualObjects(metadata, metadata2) # check add with existing keys metadata = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} db.instance_group_metadata_add(self.context, id, metadata) metadata3 = db.instance_group_metadata_get(self.context, id) self._assertEqualObjects(metadata, metadata3) def test_instance_group_delete(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] metadata = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} db.instance_group_metadata_add(self.context, id, metadata) metadata3 = db.instance_group_metadata_get(self.context, id) self._assertEqualObjects(metadata, metadata3) db.instance_group_metadata_delete(self.context, id, 'key1') metadata = db.instance_group_metadata_get(self.context, id) self.assertNotIn('key1', metadata) db.instance_group_metadata_delete(self.context, id, 'key2') metadata = db.instance_group_metadata_get(self.context, id) self.assertNotIn('key2', metadata) def test_instance_group_metadata_invalid_ids(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) id = result['uuid'] self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_metadata_get, self.context, 'invalid') self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_metadata_delete, self.context, 'invalidid', 'key1') metadata = {'key1': 'value1', 'key2': 'value2'} db.instance_group_metadata_add(self.context, id, metadata) self.assertRaises(exception.InstanceGroupMetadataNotFound, db.instance_group_metadata_delete, self.context, id, 'invalidkey') class InstanceGroupMembersDBApiTestCase(InstanceGroupDBApiTestCase): def test_instance_group_members_on_create(self): values = self._get_default_values() values['uuid'] = 'fake_id' members = ['instance_id1', 'instance_id2'] result = self._create_instance_group(self.context, values, members=members) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result, values, ignored_keys) self._assertEqualListsOfPrimitivesAsSets(result['members'], members) def test_instance_group_members_add(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] members = db.instance_group_members_get(self.context, id) self.assertEqual(members, []) members2 = ['instance_id1', 'instance_id2'] db.instance_group_members_add(self.context, id, members2) members = db.instance_group_members_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(members, members2) def test_instance_group_members_update(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] members2 = ['instance_id1', 'instance_id2'] db.instance_group_members_add(self.context, id, members2) members = db.instance_group_members_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(members, members2) # check add with existing keys members3 = ['instance_id1', 'instance_id2', 'instance_id3'] db.instance_group_members_add(self.context, id, members3) members = db.instance_group_members_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(members, members3) def test_instance_group_members_delete(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] members3 = ['instance_id1', 'instance_id2', 'instance_id3'] db.instance_group_members_add(self.context, id, members3) members = db.instance_group_members_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(members, members3) for instance_id in members3[:]: db.instance_group_member_delete(self.context, id, instance_id) members3.remove(instance_id) members = db.instance_group_members_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(members, members3) def test_instance_group_members_invalid_ids(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) id = result['uuid'] self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_members_get, self.context, 'invalid') self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_member_delete, self.context, 'invalidid', 'instance_id1') members = ['instance_id1', 'instance_id2'] db.instance_group_members_add(self.context, id, members) self.assertRaises(exception.InstanceGroupMemberNotFound, db.instance_group_member_delete, self.context, id, 'invalid_id') class InstanceGroupPoliciesDBApiTestCase(InstanceGroupDBApiTestCase): def test_instance_group_policies_on_create(self): values = self._get_default_values() values['uuid'] = 'fake_id' policies = ['policy1', 'policy2'] result = self._create_instance_group(self.context, values, policies=policies) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(result, values, ignored_keys) self._assertEqualListsOfPrimitivesAsSets(result['policies'], policies) def test_instance_group_policies_add(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] policies = db.instance_group_policies_get(self.context, id) self.assertEqual(policies, []) policies2 = ['policy1', 'policy2'] db.instance_group_policies_add(self.context, id, policies2) policies = db.instance_group_policies_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(policies, policies2) def test_instance_group_policies_update(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] policies2 = ['policy1', 'policy2'] db.instance_group_policies_add(self.context, id, policies2) policies = db.instance_group_policies_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(policies, policies2) policies3 = ['policy1', 'policy2', 'policy3'] db.instance_group_policies_add(self.context, id, policies3) policies = db.instance_group_policies_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(policies, policies3) def test_instance_group_policies_delete(self): values = self._get_default_values() values['uuid'] = 'fake_id' result = self._create_instance_group(self.context, values) id = result['uuid'] policies3 = ['policy1', 'policy2', 'policy3'] db.instance_group_policies_add(self.context, id, policies3) policies = db.instance_group_policies_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(policies, policies3) for policy in policies3[:]: db.instance_group_policy_delete(self.context, id, policy) policies3.remove(policy) policies = db.instance_group_policies_get(self.context, id) self._assertEqualListsOfPrimitivesAsSets(policies, policies3) def test_instance_group_policies_invalid_ids(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) id = result['uuid'] self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_policies_get, self.context, 'invalid') self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_policy_delete, self.context, 'invalidid', 'policy1') policies = ['policy1', 'policy2'] db.instance_group_policies_add(self.context, id, policies) self.assertRaises(exception.InstanceGroupPolicyNotFound, db.instance_group_policy_delete, self.context, id, 'invalid_policy') class PciDeviceDBApiTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(PciDeviceDBApiTestCase, self).setUp() self.user_id = 'fake_user' self.project_id = 'fake_project' self.context = context.RequestContext(self.user_id, self.project_id) self.admin_context = context.get_admin_context() self.ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] def _get_fake_pci_devs(self): return {'id': 3353, 'compute_node_id': 1, 'address': '0000:0f:08.7', 'vendor_id': '8086', 'product_id': '1520', 'dev_type': 'type-VF', 'dev_id': 'pci_0000:0f:08.7', 'extra_info': None, 'label': 'label_8086_1520', 'status': 'available', 'instance_uuid': '00000000-0000-0000-0000-000000000010', }, {'id': 3356, 'compute_node_id': 1, 'address': '0000:0f:03.7', 'vendor_id': '8083', 'product_id': '1523', 'dev_type': 'type-VF', 'dev_id': 'pci_0000:0f:08.7', 'extra_info': None, 'label': 'label_8086_1520', 'status': 'available', 'instance_uuid': '00000000-0000-0000-0000-000000000010', } def _create_fake_pci_devs(self): v1, v2 = self._get_fake_pci_devs() db.pci_device_update(self.admin_context, v1['compute_node_id'], v1['address'], v1) db.pci_device_update(self.admin_context, v2['compute_node_id'], v2['address'], v2) return (v1, v2) def test_pci_device_get_by_addr(self): v1, v2 = self._create_fake_pci_devs() result = db.pci_device_get_by_addr(self.admin_context, 1, '0000:0f:08.7') self._assertEqualObjects(v1, result, self.ignored_keys) def test_pci_device_get_by_addr_not_found(self): self._create_fake_pci_devs() self.assertRaises(exception.PciDeviceNotFound, db.pci_device_get_by_addr, self.admin_context, 1, '0000:0f:08:09') def test_pci_device_get_by_addr_low_priv(self): self._create_fake_pci_devs() self.assertRaises(exception.AdminRequired, db.pci_device_get_by_addr, self.context, 1, '0000:0f:08.7') def test_pci_device_get_by_id(self): v1, v2 = self._create_fake_pci_devs() result = db.pci_device_get_by_id(self.admin_context, 3353) ignored_keys = ['id', 'deleted', 'deleted_at', 'updated_at', 'created_at'] self._assertEqualObjects(v1, result, self.ignored_keys) def test_pci_device_get_by_id_not_found(self): self._create_fake_pci_devs() self.assertRaises(exception.PciDeviceNotFoundById, db.pci_device_get_by_id, self.admin_context, 3354) def test_pci_device_get_by_id_low_priv(self): self._create_fake_pci_devs() self.assertRaises(exception.AdminRequired, db.pci_device_get_by_id, self.context, 3553) def test_pci_device_get_all_by_node(self): v1, v2 = self._create_fake_pci_devs() results = db.pci_device_get_all_by_node(self.admin_context, 1) self._assertEqualListsOfObjects(results, [v1, v2], self.ignored_keys) def test_pci_device_get_all_by_node_empty(self): v1, v2 = self._get_fake_pci_devs() results = db.pci_device_get_all_by_node(self.admin_context, 9) self.assertEqual(len(results), 0) def test_pci_device_get_all_by_node_low_priv(self): self._create_fake_pci_devs() self.assertRaises(exception.AdminRequired, db.pci_device_get_all_by_node, self.context, 1) def test_pci_device_get_by_instance_uuid(self): v1, v2 = self._get_fake_pci_devs() v1['status'] = 'allocated' v2['status'] = 'allocated' db.pci_device_update(self.admin_context, v1['compute_node_id'], v1['address'], v1) db.pci_device_update(self.admin_context, v2['compute_node_id'], v2['address'], v2) results = db.pci_device_get_all_by_instance_uuid( self.context, '00000000-0000-0000-0000-000000000010') self._assertEqualListsOfObjects(results, [v1, v2], self.ignored_keys) def test_pci_device_get_by_instance_uuid_check_status(self): v1, v2 = self._get_fake_pci_devs() v1['status'] = 'allocated' v2['status'] = 'claimed' db.pci_device_update(self.admin_context, v1['compute_node_id'], v1['address'], v1) db.pci_device_update(self.admin_context, v2['compute_node_id'], v2['address'], v2) results = db.pci_device_get_all_by_instance_uuid( self.context, '00000000-0000-0000-0000-000000000010') self._assertEqualListsOfObjects(results, [v1], self.ignored_keys) def test_pci_device_update(self): v1, v2 = self._get_fake_pci_devs() v1['status'] = 'allocated' db.pci_device_update(self.admin_context, v1['compute_node_id'], v1['address'], v1) result = db.pci_device_get_by_addr( self.admin_context, 1, '0000:0f:08.7') self._assertEqualObjects(v1, result, self.ignored_keys) v1['status'] = 'claimed' db.pci_device_update(self.admin_context, v1['compute_node_id'], v1['address'], v1) result = db.pci_device_get_by_addr( self.admin_context, 1, '0000:0f:08.7') self._assertEqualObjects(v1, result, self.ignored_keys) def test_pci_device_update_low_priv(self): v1, v2 = self._get_fake_pci_devs() self.assertRaises(exception.AdminRequired, db.pci_device_update, self.context, v1['compute_node_id'], v1['address'], v1) def test_pci_device_destroy(self): v1, v2 = self._create_fake_pci_devs() results = db.pci_device_get_all_by_node(self.admin_context, 1) self._assertEqualListsOfObjects(results, [v1, v2], self.ignored_keys) db.pci_device_destroy(self.admin_context, v1['compute_node_id'], v1['address']) results = db.pci_device_get_all_by_node(self.admin_context, 1) self._assertEqualListsOfObjects(results, [v2], self.ignored_keys) def test_pci_device_destroy_exception(self): v1, v2 = self._get_fake_pci_devs() db.pci_device_update(self.admin_context, v1['compute_node_id'], v1['address'], v1) results = db.pci_device_get_all_by_node(self.admin_context, 1) self._assertEqualListsOfObjects(results, [v1], self.ignored_keys) self.assertRaises(exception.PciDeviceNotFound, db.pci_device_destroy, self.admin_context, v2['compute_node_id'], v2['address']) class RetryOnDeadlockTestCase(test.TestCase): def test_without_deadlock(self): @sqlalchemy_api._retry_on_deadlock def call_api(*args, **kwargs): return True self.assertTrue(call_api()) def test_raise_deadlock(self): self.attempts = 2 @sqlalchemy_api._retry_on_deadlock def call_api(*args, **kwargs): while self.attempts: self.attempts = self.attempts - 1 raise db_exc.DBDeadlock("fake exception") return True self.assertTrue(call_api()) nova-2014.1/nova/tests/db/test_migrations.conf0000664000175400017540000000157312323721477022474 0ustar jenkinsjenkins00000000000000[unit_tests] # Set up any number of databases to test concurrently. # The "name" used in the test is the config variable key. # A few tests rely on one sqlite database with 'sqlite' as the key. sqlite=sqlite:// #sqlitefile=sqlite:///test_migrations_utils.db #mysql=mysql+mysqldb://user:pass@localhost/test_migrations_utils #postgresql=postgresql+psycopg2://user:pass@localhost/test_migrations_utils [migration_dbs] # Migration DB details are listed separately as they can't be connected to # concurrently. These databases can't be the same as above # Note, sqlite:// is in-memory and unique each time it is spawned. # However file sqlite's are not unique. sqlite=sqlite:// #sqlitefile=sqlite:///test_migrations.db #mysql=mysql+mysqldb://user:pass@localhost/test_migrations #postgresql=postgresql+psycopg2://user:pass@localhost/test_migrations [walk_style] snake_walk=yes downgrade=yes nova-2014.1/nova/tests/db/fakes.py0000664000175400017540000003777712323721477020074 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Stubouts, mocks and fixtures for the test suite.""" from nova import db from nova import exception class FakeModel(object): """Stubs out for model.""" def __init__(self, values): self.values = values def __getattr__(self, name): return self.values[name] def __getitem__(self, key): if key in self.values: return self.values[key] else: raise NotImplementedError() def __repr__(self): return '' % self.values def get(self, name): return self.values[name] def stub_out(stubs, funcs): """Set the stubs in mapping in the db api.""" for func in funcs: func_name = '_'.join(func.__name__.split('_')[1:]) stubs.Set(db, func_name, func) stubs.Set(db.api, func_name, func) fixed_ip_fields = {'id': 0, 'network_id': 0, 'address': '192.168.0.100', 'instance': False, 'instance_uuid': 'eb57d790-fc60-4119-a51a-f2b0913bdc93', 'allocated': False, 'virtual_interface_id': 0, 'virtual_interface': None, 'floating_ips': []} def stub_out_db_network_api(stubs): network_fields = {'id': 0, 'cidr': '192.168.0.0/24', 'netmask': '255.255.255.0', 'cidr_v6': 'dead:beef::/64', 'netmask_v6': '64', 'project_id': 'fake', 'label': 'fake', 'gateway': '192.168.0.1', 'bridge': 'fa0', 'bridge_interface': 'fake_fa0', 'broadcast': '192.168.0.255', 'gateway_v6': 'dead:beef::1', 'dns': '192.168.0.1', 'vlan': None, 'host': None, 'injected': False, 'vpn_public_address': '192.168.0.2'} flavor_fields = {'id': 0, 'rxtx_cap': 3} floating_ip_fields = {'id': 0, 'address': '192.168.1.100', 'fixed_ip_id': None, 'fixed_ip': None, 'project_id': None, 'pool': 'nova', 'auto_assigned': False} virtual_interface_fields = {'id': 0, 'address': 'DE:AD:BE:EF:00:00', 'network_id': 0, 'instance_id': 0, 'network': FakeModel(network_fields)} fixed_ips = [fixed_ip_fields] floating_ips = [floating_ip_fields] virtual_interfacees = [virtual_interface_fields] networks = [network_fields] def fake_floating_ip_allocate_address(context, project_id, pool, auto_assigned=False): ips = filter(lambda i: i['fixed_ip_id'] is None and i['project_id'] is None and i['pool'] == pool, floating_ips) if not ips: raise exception.NoMoreFloatingIps() ips[0]['project_id'] = project_id ips[0]['auto_assigned'] = auto_assigned return FakeModel(ips[0]) def fake_floating_ip_deallocate(context, address): ips = filter(lambda i: i['address'] == address, floating_ips) if ips: ips[0]['project_id'] = None ips[0]['auto_assigned'] = False def fake_floating_ip_disassociate(context, address): ips = filter(lambda i: i['address'] == address, floating_ips) if ips: fixed_ip_address = None if ips[0]['fixed_ip']: fixed_ip_address = ips[0]['fixed_ip']['address'] ips[0]['fixed_ip'] = None ips[0]['host'] = None return fixed_ip_address def fake_floating_ip_fixed_ip_associate(context, floating_address, fixed_address, host): float = filter(lambda i: i['address'] == floating_address, floating_ips) fixed = filter(lambda i: i['address'] == fixed_address, fixed_ips) if float and fixed: float[0]['fixed_ip'] = fixed[0] float[0]['fixed_ip_id'] = fixed[0]['id'] float[0]['host'] = host def fake_floating_ip_get_all_by_host(context, host): # TODO(jkoelker): Once we get the patches that remove host from # the floating_ip table, we'll need to stub # this out pass def fake_floating_ip_get_by_address(context, address): if isinstance(address, FakeModel): # NOTE(tr3buchet): yo dawg, i heard you like addresses address = address['address'] ips = filter(lambda i: i['address'] == address, floating_ips) if not ips: raise exception.FloatingIpNotFoundForAddress(address=address) return FakeModel(ips[0]) def fake_floating_ip_set_auto_assigned(contex, address): ips = filter(lambda i: i['address'] == address, floating_ips) if ips: ips[0]['auto_assigned'] = True def fake_fixed_ip_associate(context, address, instance_id): ips = filter(lambda i: i['address'] == address, fixed_ips) if not ips: raise exception.NoMoreFixedIps() ips[0]['instance'] = True ips[0]['instance_id'] = instance_id def fake_fixed_ip_associate_pool(context, network_id, instance_id): ips = filter(lambda i: (i['network_id'] == network_id or i['network_id'] is None) and not i['instance'], fixed_ips) if not ips: raise exception.NoMoreFixedIps() ips[0]['instance'] = True ips[0]['instance_id'] = instance_id return ips[0]['address'] def fake_fixed_ip_create(context, values): ip = dict(fixed_ip_fields) ip['id'] = max([i['id'] for i in fixed_ips] or [-1]) + 1 for key in values: ip[key] = values[key] return ip def fake_fixed_ip_disassociate(context, address): ips = filter(lambda i: i['address'] == address, fixed_ips) if ips: ips[0]['instance_id'] = None ips[0]['instance'] = None ips[0]['virtual_interface'] = None ips[0]['virtual_interface_id'] = None def fake_fixed_ip_disassociate_all_by_timeout(context, host, time): return 0 def fake_fixed_ip_get_all(context): return [FakeModel(i) for i in fixed_ips] def fake_fixed_ip_get_by_instance(context, instance_uuid): ips = filter(lambda i: i['instance_uuid'] == instance_uuid, fixed_ips) return [FakeModel(i) for i in ips] def fake_fixed_ip_get_by_address(context, address): ips = filter(lambda i: i['address'] == address, fixed_ips) if ips: return FakeModel(ips[0]) def fake_fixed_ip_update(context, address, values): ips = filter(lambda i: i['address'] == address, fixed_ips) if ips: for key in values: ips[0][key] = values[key] if key == 'virtual_interface_id': vif = filter(lambda x: x['id'] == values[key], virtual_interfacees) if not vif: continue fixed_ip_fields['virtual_interface'] = FakeModel(vif[0]) def fake_flavor_get(context, id): if flavor_fields['id'] == id: return FakeModel(flavor_fields) def fake_virtual_interface_create(context, values): vif = dict(virtual_interface_fields) vif['id'] = max([m['id'] for m in virtual_interfacees] or [-1]) + 1 for key in values: vif[key] = values[key] return FakeModel(vif) def fake_virtual_interface_delete_by_instance(context, instance_id): addresses = [m for m in virtual_interfacees if m['instance_id'] == instance_id] try: for address in addresses: virtual_interfacees.remove(address) except ValueError: pass def fake_virtual_interface_get_by_instance(context, instance_id): return [FakeModel(m) for m in virtual_interfacees if m['instance_id'] == instance_id] def fake_virtual_interface_get_by_instance_and_network(context, instance_id, network_id): vif = filter(lambda m: m['instance_id'] == instance_id and m['network_id'] == network_id, virtual_interfacees) if not vif: return None return FakeModel(vif[0]) def fake_network_create_safe(context, values): net = dict(network_fields) net['id'] = max([n['id'] for n in networks] or [-1]) + 1 for key in values: net[key] = values[key] return FakeModel(net) def fake_network_get(context, network_id): net = filter(lambda n: n['id'] == network_id, networks) if not net: return None return FakeModel(net[0]) def fake_network_get_all(context): return [FakeModel(n) for n in networks] def fake_network_get_all_by_host(context, host): nets = filter(lambda n: n['host'] == host, networks) return [FakeModel(n) for n in nets] def fake_network_set_host(context, network_id, host_id): nets = filter(lambda n: n['id'] == network_id, networks) for net in nets: net['host'] = host_id return host_id def fake_network_update(context, network_id, values): nets = filter(lambda n: n['id'] == network_id, networks) for net in nets: for key in values: net[key] = values[key] def fake_project_get_networks(context, project_id): return [FakeModel(n) for n in networks if n['project_id'] == project_id] funcs = [fake_floating_ip_allocate_address, fake_floating_ip_deallocate, fake_floating_ip_disassociate, fake_floating_ip_fixed_ip_associate, fake_floating_ip_get_all_by_host, fake_floating_ip_get_by_address, fake_floating_ip_set_auto_assigned, fake_fixed_ip_associate, fake_fixed_ip_associate_pool, fake_fixed_ip_create, fake_fixed_ip_disassociate, fake_fixed_ip_disassociate_all_by_timeout, fake_fixed_ip_get_all, fake_fixed_ip_get_by_instance, fake_fixed_ip_get_by_address, fake_fixed_ip_update, fake_flavor_get, fake_virtual_interface_create, fake_virtual_interface_delete_by_instance, fake_virtual_interface_get_by_instance, fake_virtual_interface_get_by_instance_and_network, fake_network_create_safe, fake_network_get, fake_network_get_all, fake_network_get_all_by_host, fake_network_set_host, fake_network_update, fake_project_get_networks] stub_out(stubs, funcs) def stub_out_db_instance_api(stubs, injected=True): """Stubs out the db API for creating Instances.""" INSTANCE_TYPES = { 'm1.tiny': dict(id=2, name='m1.tiny', memory_mb=512, vcpus=1, vcpu_weight=None, root_gb=0, ephemeral_gb=10, flavorid=1, rxtx_factor=1.0, swap=0), 'm1.small': dict(id=5, name='m1.small', memory_mb=2048, vcpus=1, vcpu_weight=None, root_gb=20, ephemeral_gb=0, flavorid=2, rxtx_factor=1.0, swap=1024), 'm1.medium': dict(id=1, name='m1.medium', memory_mb=4096, vcpus=2, vcpu_weight=None, root_gb=40, ephemeral_gb=40, flavorid=3, rxtx_factor=1.0, swap=0), 'm1.large': dict(id=3, name='m1.large', memory_mb=8192, vcpus=4, vcpu_weight=10, root_gb=80, ephemeral_gb=80, flavorid=4, rxtx_factor=1.0, swap=0), 'm1.xlarge': dict(id=4, name='m1.xlarge', memory_mb=16384, vcpus=8, vcpu_weight=None, root_gb=160, ephemeral_gb=160, flavorid=5, rxtx_factor=1.0, swap=0)} flat_network_fields = {'id': 'fake_flat', 'bridge': 'xenbr0', 'label': 'fake_flat_network', 'netmask': '255.255.255.0', 'cidr_v6': 'fe80::a00:0/120', 'netmask_v6': '120', 'gateway': '10.0.0.1', 'gateway_v6': 'fe80::a00:1', 'broadcast': '10.0.0.255', 'dns': '10.0.0.2', 'ra_server': None, 'injected': injected} vlan_network_fields = {'id': 'fake_vlan', 'bridge': 'br111', 'label': 'fake_vlan_network', 'netmask': '255.255.255.0', 'cidr_v6': 'fe80::a00:0/120', 'netmask_v6': '120', 'gateway': '10.0.0.1', 'gateway_v6': 'fe80::a00:1', 'broadcast': '10.0.0.255', 'dns': '10.0.0.2', 'ra_server': None, 'vlan': 111, 'injected': False} fixed_ip_fields = {'address': '10.0.0.3', 'address_v6': 'fe80::a00:3', 'network_id': 'fake_flat'} def fake_flavor_get_all(context, inactive=0, filters=None): return INSTANCE_TYPES.values() def fake_flavor_get_by_name(context, name): return INSTANCE_TYPES[name] def fake_flavor_get(context, id): for name, inst_type in INSTANCE_TYPES.iteritems(): if str(inst_type['id']) == str(id): return inst_type return None def fake_fixed_ip_get_by_instance(context, instance_id): return [FakeModel(fixed_ip_fields)] funcs = [fake_flavor_get_all, fake_flavor_get_by_name, fake_flavor_get, fake_fixed_ip_get_by_instance] stub_out(stubs, funcs) nova-2014.1/nova/tests/db/test_sqlite.py0000664000175400017540000000361312323721477021321 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Test cases for sqlite-specific logic""" from nova import test from sqlalchemy import create_engine from sqlalchemy import Column, BigInteger, String import sqlalchemy.engine.reflection from sqlalchemy.ext.declarative import declarative_base class TestSqlite(test.NoDBTestCase): """Tests for sqlite-specific logic.""" def test_big_int_mapping(self): base_class = declarative_base() class User(base_class): """Dummy class with a BigInteger column for testing.""" __tablename__ = "users" id = Column(BigInteger, primary_key=True) name = Column(String) engine = create_engine('sqlite://') base_class.metadata.create_all(engine) insp = sqlalchemy.engine.reflection.Inspector.from_engine(engine) id_type = None for column in insp.get_columns('users'): if column['name'] == 'id': id_type = column['type'].compile() # NOTE(russellb) We have a hook in nova.db.sqlalchemy that makes it so # BigInteger() is compiled to INTEGER for sqlite instead of BIGINT. self.assertEqual('INTEGER', id_type) nova-2014.1/nova/tests/db/test_migration_utils.py0000664000175400017540000007207412323721477023240 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Boris Pavlovic (boris@pavlovic.me). # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import uuid import warnings from migrate.changeset import UniqueConstraint import sqlalchemy from sqlalchemy.dialects import mysql from sqlalchemy import Boolean, Index, Integer, DateTime, String from sqlalchemy import MetaData, Table, Column, ForeignKey from sqlalchemy.engine import reflection from sqlalchemy.exc import NoSuchTableError from sqlalchemy.exc import SAWarning from sqlalchemy.sql import select from sqlalchemy.types import UserDefinedType, NullType from nova.db.sqlalchemy import api as db from nova.db.sqlalchemy import utils from nova import exception from nova.tests.db import test_migrations SA_VERSION = tuple(map(int, sqlalchemy.__version__.split('.'))) class CustomType(UserDefinedType): """Dummy column type for testing unsupported types.""" def get_col_spec(self): return "CustomType" class TestMigrationUtils(test_migrations.BaseMigrationTestCase): """Class for testing utils that are used in db migrations.""" def test_delete_from_select(self): table_name = "__test_deletefromselect_table__" uuidstrs = [] for unused in range(10): uuidstrs.append(uuid.uuid4().hex) for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine conn = engine.connect() test_table = Table(table_name, meta, Column('id', Integer, primary_key=True, nullable=False, autoincrement=True), Column('uuid', String(36), nullable=False)) test_table.create() # Add 10 rows to table for uuidstr in uuidstrs: ins_stmt = test_table.insert().values(uuid=uuidstr) conn.execute(ins_stmt) # Delete 4 rows in one chunk column = test_table.c.id query_delete = select([column], test_table.c.id < 5).order_by(column) delete_statement = utils.DeleteFromSelect(test_table, query_delete, column) result_delete = conn.execute(delete_statement) # Verify we delete 4 rows self.assertEqual(result_delete.rowcount, 4) query_all = select([test_table]).\ where(test_table.c.uuid.in_(uuidstrs)) rows = conn.execute(query_all).fetchall() # Verify we still have 6 rows in table self.assertEqual(len(rows), 6) test_table.drop() def test_insert_from_select(self): insert_table_name = "__test_insert_to_table__" select_table_name = "__test_select_from_table__" uuidstrs = [] for unused in range(10): uuidstrs.append(uuid.uuid4().hex) for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine conn = engine.connect() insert_table = Table(insert_table_name, meta, Column('id', Integer, primary_key=True, nullable=False, autoincrement=True), Column('uuid', String(36), nullable=False)) select_table = Table(select_table_name, meta, Column('id', Integer, primary_key=True, nullable=False, autoincrement=True), Column('uuid', String(36), nullable=False)) insert_table.create() select_table.create() # Add 10 rows to select_table for uuidstr in uuidstrs: ins_stmt = select_table.insert().values(uuid=uuidstr) conn.execute(ins_stmt) # Select 4 rows in one chunk from select_table column = select_table.c.id query_insert = select([select_table], select_table.c.id < 5).order_by(column) insert_statement = utils.InsertFromSelect(insert_table, query_insert) result_insert = conn.execute(insert_statement) # Verify we insert 4 rows self.assertEqual(result_insert.rowcount, 4) query_all = select([insert_table]).\ where(insert_table.c.uuid.in_(uuidstrs)) rows = conn.execute(query_all).fetchall() # Verify we really have 4 rows in insert_table self.assertEqual(len(rows), 4) insert_table.drop() select_table.drop() def test_utils_drop_unique_constraint(self): table_name = "test_utils_drop_unique_constraint" uc_name = 'uniq_foo' values = [ {'id': 1, 'a': 3, 'foo': 10}, {'id': 2, 'a': 2, 'foo': 20}, {'id': 3, 'a': 1, 'foo': 30} ] for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine test_table = Table(table_name, meta, Column('id', Integer, primary_key=True, nullable=False), Column('a', Integer), Column('foo', Integer), UniqueConstraint('a', name='uniq_a'), UniqueConstraint('foo', name=uc_name)) test_table.create() engine.execute(test_table.insert(), values) # NOTE(boris-42): This method is generic UC dropper. utils.drop_unique_constraint(engine, table_name, uc_name, 'foo') s = test_table.select().order_by(test_table.c.id) rows = engine.execute(s).fetchall() for i in xrange(0, len(values)): v = values[i] self.assertEqual((v['id'], v['a'], v['foo']), rows[i]) # NOTE(boris-42): Update data about Table from DB. meta = MetaData() meta.bind = engine test_table = Table(table_name, meta, autoload=True) constraints = filter(lambda c: c.name == uc_name, test_table.constraints) self.assertEqual(len(constraints), 0) self.assertEqual(len(test_table.constraints), 1) test_table.drop() def test_util_drop_unique_constraint_with_not_supported_sqlite_type(self): if 'sqlite' not in self.engines: self.skipTest('sqlite is not configured') engine = self.engines['sqlite'] meta = MetaData(bind=engine) table_name = ("test_util_drop_unique_constraint_with_not_supported" "_sqlite_type") uc_name = 'uniq_foo' values = [ {'id': 1, 'a': 3, 'foo': 10}, {'id': 2, 'a': 2, 'foo': 20}, {'id': 3, 'a': 1, 'foo': 30} ] test_table = Table(table_name, meta, Column('id', Integer, primary_key=True, nullable=False), Column('a', Integer), Column('foo', CustomType, default=0), UniqueConstraint('a', name='uniq_a'), UniqueConstraint('foo', name=uc_name)) test_table.create() engine.execute(test_table.insert(), values) warnings.simplefilter("ignore", SAWarning) # reflection of custom types has been fixed upstream if SA_VERSION < (0, 9, 0): # NOTE(boris-42): Missing info about column `foo` that has # unsupported type CustomType. self.assertRaises(exception.NovaException, utils.drop_unique_constraint, engine, table_name, uc_name, 'foo') # NOTE(boris-42): Wrong type of foo instance. it should be # instance of sqlalchemy.Column. self.assertRaises(exception.NovaException, utils.drop_unique_constraint, engine, table_name, uc_name, 'foo', foo=Integer()) foo = Column('foo', CustomType, default=0) utils.drop_unique_constraint(engine, table_name, uc_name, 'foo', foo=foo) s = test_table.select().order_by(test_table.c.id) rows = engine.execute(s).fetchall() for i in xrange(0, len(values)): v = values[i] self.assertEqual((v['id'], v['a'], v['foo']), rows[i]) # NOTE(boris-42): Update data about Table from DB. meta = MetaData(bind=engine) test_table = Table(table_name, meta, autoload=True) constraints = filter(lambda c: c.name == uc_name, test_table.constraints) self.assertEqual(len(constraints), 0) self.assertEqual(len(test_table.constraints), 1) test_table.drop() def _populate_db_for_drop_duplicate_entries(self, engine, meta, table_name): values = [ {'id': 11, 'a': 3, 'b': 10, 'c': 'abcdef'}, {'id': 12, 'a': 5, 'b': 10, 'c': 'abcdef'}, {'id': 13, 'a': 6, 'b': 10, 'c': 'abcdef'}, {'id': 14, 'a': 7, 'b': 10, 'c': 'abcdef'}, {'id': 21, 'a': 1, 'b': 20, 'c': 'aa'}, {'id': 31, 'a': 1, 'b': 20, 'c': 'bb'}, {'id': 41, 'a': 1, 'b': 30, 'c': 'aef'}, {'id': 42, 'a': 2, 'b': 30, 'c': 'aef'}, {'id': 43, 'a': 3, 'b': 30, 'c': 'aef'} ] test_table = Table(table_name, meta, Column('id', Integer, primary_key=True, nullable=False), Column('a', Integer), Column('b', Integer), Column('c', String(255)), Column('deleted', Integer, default=0), Column('deleted_at', DateTime), Column('updated_at', DateTime)) test_table.create() engine.execute(test_table.insert(), values) return test_table, values def test_drop_old_duplicate_entries_from_table(self): table_name = "test_drop_old_duplicate_entries_from_table" for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine test_table, values = self.\ _populate_db_for_drop_duplicate_entries(engine, meta, table_name) utils.drop_old_duplicate_entries_from_table(engine, table_name, False, 'b', 'c') uniq_values = set() expected_ids = [] for value in sorted(values, key=lambda x: x['id'], reverse=True): uniq_value = (('b', value['b']), ('c', value['c'])) if uniq_value in uniq_values: continue uniq_values.add(uniq_value) expected_ids.append(value['id']) real_ids = [row[0] for row in engine.execute(select([test_table.c.id])).fetchall()] self.assertEqual(len(real_ids), len(expected_ids)) for id_ in expected_ids: self.assertIn(id_, real_ids) test_table.drop() def test_drop_old_duplicate_entries_from_table_soft_delete(self): table_name = "test_drop_old_duplicate_entries_from_table_soft_delete" for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table, values = self.\ _populate_db_for_drop_duplicate_entries(engine, meta, table_name) utils.drop_old_duplicate_entries_from_table(engine, table_name, True, 'b', 'c') uniq_values = set() expected_values = [] soft_deleted_values = [] for value in sorted(values, key=lambda x: x['id'], reverse=True): uniq_value = (('b', value['b']), ('c', value['c'])) if uniq_value in uniq_values: soft_deleted_values.append(value) continue uniq_values.add(uniq_value) expected_values.append(value) base_select = table.select() rows_select = base_select.\ where(table.c.deleted != table.c.id) row_ids = [row['id'] for row in engine.execute(rows_select).fetchall()] self.assertEqual(len(row_ids), len(expected_values)) for value in expected_values: self.assertIn(value['id'], row_ids) deleted_rows_select = base_select.\ where(table.c.deleted == table.c.id) deleted_rows_ids = [row['id'] for row in engine.execute(deleted_rows_select).fetchall()] self.assertEqual(len(deleted_rows_ids), len(values) - len(row_ids)) for value in soft_deleted_values: self.assertIn(value['id'], deleted_rows_ids) table.drop() def test_check_shadow_table(self): table_name = 'test_check_shadow_table' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer), Column('c', String(256))) table.create() #check missing shadow table self.assertRaises(NoSuchTableError, utils.check_shadow_table, engine, table_name) shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta, Column('id', Integer), Column('a', Integer)) shadow_table.create() # check missing column self.assertRaises(exception.NovaException, utils.check_shadow_table, engine, table_name) # check when all is ok c = Column('c', String(256)) shadow_table.create_column(c) self.assertTrue(utils.check_shadow_table(engine, table_name)) # check extra column d = Column('d', Integer) shadow_table.create_column(d) self.assertRaises(exception.NovaException, utils.check_shadow_table, engine, table_name) table.drop() shadow_table.drop() def test_check_shadow_table_different_types(self): table_name = 'test_check_shadow_table_different_types' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer)) table.create() shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta, Column('id', Integer, primary_key=True), Column('a', String(256))) shadow_table.create() self.assertRaises(exception.NovaException, utils.check_shadow_table, engine, table_name) table.drop() shadow_table.drop() def test_check_shadow_table_with_unsupported_sqlite_type(self): if 'sqlite' not in self.engines: self.skipTest('sqlite is not configured') table_name = 'test_check_shadow_table_with_unsupported_sqlite_type' engine = self.engines['sqlite'] meta = MetaData(bind=engine) table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer), Column('c', CustomType)) table.create() shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer), Column('c', CustomType)) shadow_table.create() self.assertTrue(utils.check_shadow_table(engine, table_name)) shadow_table.drop() def test_create_shadow_table_by_table_instance(self): table_name = 'test_create_shadow_table_by_table_instance' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer), Column('b', String(256))) table.create() shadow_table = utils.create_shadow_table(engine, table=table) self.assertTrue(utils.check_shadow_table(engine, table_name)) table.drop() shadow_table.drop() def test_create_shadow_table_by_name(self): table_name = 'test_create_shadow_table_by_name' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer), Column('b', String(256))) table.create() shadow_table = utils.create_shadow_table(engine, table_name=table_name) self.assertTrue(utils.check_shadow_table(engine, table_name)) table.drop() shadow_table.drop() def test_create_shadow_table_not_supported_type(self): if 'sqlite' in self.engines: table_name = 'test_create_shadow_table_not_supported_type' engine = self.engines['sqlite'] meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', CustomType)) table.create() # reflection of custom types has been fixed upstream if SA_VERSION < (0, 9, 0): self.assertRaises(exception.NovaException, utils.create_shadow_table, engine, table_name=table_name) shadow_table = utils.create_shadow_table(engine, table_name=table_name, a=Column('a', CustomType()) ) self.assertTrue(utils.check_shadow_table(engine, table_name)) table.drop() shadow_table.drop() def test_create_shadow_both_table_and_table_name_are_none(self): for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine self.assertRaises(exception.NovaException, utils.create_shadow_table, engine) def test_create_shadow_both_table_and_table_name_are_specified(self): table_name = ('test_create_shadow_both_table_and_table_name_are_' 'specified') for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer)) table.create() self.assertRaises(exception.NovaException, utils.create_shadow_table, engine, table=table, table_name=table_name) table.drop() def test_create_duplicate_shadow_table(self): table_name = 'test_create_duplicate_shadow_table' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', Integer)) table.create() shadow_table = utils.create_shadow_table(engine, table_name=table_name) self.assertRaises(exception.ShadowTableExists, utils.create_shadow_table, engine, table_name=table_name) table.drop() shadow_table.drop() def test_change_deleted_column_type_doesnt_drop_index(self): table_name = 'test_change_deleted_column_type_doesnt_drop_index' for key, engine in self.engines.items(): meta = MetaData(bind=engine) indexes = { 'idx_a_deleted': ['a', 'deleted'], 'idx_b_deleted': ['b', 'deleted'], 'idx_a': ['a'] } index_instances = [Index(name, *columns) for name, columns in indexes.iteritems()] table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('a', String(255)), Column('b', String(255)), Column('deleted', Boolean), *index_instances) table.create() utils.change_deleted_column_type_to_id_type(engine, table_name) utils.change_deleted_column_type_to_boolean(engine, table_name) insp = reflection.Inspector.from_engine(engine) real_indexes = insp.get_indexes(table_name) self.assertEqual(len(real_indexes), 3) for index in real_indexes: name = index['name'] self.assertIn(name, indexes) self.assertEqual(set(index['column_names']), set(indexes[name])) table.drop() def test_change_deleted_column_type_to_id_type_integer(self): table_name = 'test_change_deleted_column_type_to_id_type_integer' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('deleted', Boolean)) table.create() utils.change_deleted_column_type_to_id_type(engine, table_name) table = utils.get_table(engine, table_name) self.assertIsInstance(table.c.deleted.type, Integer) table.drop() def test_change_deleted_column_type_to_id_type_string(self): table_name = 'test_change_deleted_column_type_to_id_type_string' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', String(255), primary_key=True), Column('deleted', Boolean)) table.create() utils.change_deleted_column_type_to_id_type(engine, table_name) table = utils.get_table(engine, table_name) self.assertIsInstance(table.c.deleted.type, String) table.drop() def test_change_deleted_column_type_to_id_type_custom(self): if 'sqlite' in self.engines: table_name = 'test_change_deleted_column_type_to_id_type_custom' engine = self.engines['sqlite'] meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('foo', CustomType), Column('deleted', Boolean)) table.create() # reflection of custom types has been fixed upstream if SA_VERSION < (0, 9, 0): self.assertRaises(exception.NovaException, utils.change_deleted_column_type_to_id_type, engine, table_name) fooColumn = Column('foo', CustomType()) utils.change_deleted_column_type_to_id_type(engine, table_name, foo=fooColumn) table = utils.get_table(engine, table_name) # NOTE(boris-42): There is no way to check has foo type CustomType. # but sqlalchemy will set it to NullType. This has # been fixed upstream in recent SA versions if SA_VERSION < (0, 9, 0): self.assertIsInstance(table.c.foo.type, NullType) self.assertIsInstance(table.c.deleted.type, Integer) table.drop() def test_change_deleted_column_type_to_boolean(self): table_name = 'test_change_deleted_column_type_to_boolean' for key, engine in self.engines.items(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('deleted', Integer)) table.create() utils.change_deleted_column_type_to_boolean(engine, table_name) table = utils.get_table(engine, table_name) expected_type = Boolean if key != "mysql" else mysql.TINYINT self.assertIsInstance(table.c.deleted.type, expected_type) table.drop() def test_change_deleted_column_type_to_boolean_type_custom(self): if 'sqlite' in self.engines: table_name = \ 'test_change_deleted_column_type_to_boolean_type_custom' engine = self.engines['sqlite'] meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('foo', CustomType), Column('deleted', Integer)) table.create() # reflection of custom types has been fixed upstream if SA_VERSION < (0, 9, 0): self.assertRaises(exception.NovaException, utils.change_deleted_column_type_to_boolean, engine, table_name) fooColumn = Column('foo', CustomType()) utils.change_deleted_column_type_to_boolean(engine, table_name, foo=fooColumn) table = utils.get_table(engine, table_name) # NOTE(boris-42): There is no way to check has foo type CustomType. # but sqlalchemy will set it to NullType. This has # been fixed upstream in recent SA versions. if SA_VERSION < (0, 9, 0): self.assertIsInstance(table.c.foo.type, NullType) self.assertIsInstance(table.c.deleted.type, Boolean) table.drop() def test_drop_unique_constraint_in_sqlite_fk_recreate(self): if 'sqlite' in self.engines: engine = self.engines['sqlite'] meta = MetaData() meta.bind = engine parent_table_name = ('test_drop_unique_constraint_in_sqlite_fk_' 'recreate_parent_table') parent_table = Table(parent_table_name, meta, Column('id', Integer, primary_key=True), Column('foo', Integer)) parent_table.create() table_name = 'test_drop_unique_constraint_in_sqlite_fk_recreate' table = Table(table_name, meta, Column('id', Integer, primary_key=True), Column('baz', Integer), Column('bar', Integer, ForeignKey(parent_table_name + ".id")), UniqueConstraint('baz', name='constr1')) table.create() utils.drop_unique_constraint(engine, table_name, 'constr1', 'baz') insp = reflection.Inspector.from_engine(engine) f_keys = insp.get_foreign_keys(table_name) self.assertEqual(len(f_keys), 1) f_key = f_keys[0] self.assertEqual(f_key['referred_table'], parent_table_name) self.assertEqual(f_key['referred_columns'], ['id']) self.assertEqual(f_key['constrained_columns'], ['bar']) table.drop() parent_table.drop() nova-2014.1/nova/tests/db/test_migrations.py0000664000175400017540000010571712323721510022170 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # Copyright 2012-2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Tests for database migrations. This test case reads the configuration file test_migrations.conf for database connection settings to use in the tests. For each connection found in the config file, the test case runs a series of test cases to ensure that migrations work properly both upgrading and downgrading, and that no data loss occurs if possible. There are also "opportunistic" tests for both mysql and postgresql in here, which allows testing against all 3 databases (sqlite in memory, mysql, pg) in a properly configured unit test environment. For the opportunistic testing you need to set up db's named 'openstack_citest' and 'openstack_baremetal_citest' with user 'openstack_citest' and password 'openstack_citest' on localhost. The test will then use that db and u/p combo to run the tests. For postgres on Ubuntu this can be done with the following commands: sudo -u postgres psql postgres=# create user openstack_citest with createdb login password 'openstack_citest'; postgres=# create database openstack_citest with owner openstack_citest; postgres=# create database openstack_baremetal_citest with owner openstack_citest; """ import ConfigParser import glob import os from migrate.versioning import repository import six.moves.urllib.parse as urlparse import sqlalchemy import sqlalchemy.exc import nova.db.sqlalchemy.migrate_repo from nova.db.sqlalchemy import utils as db_utils from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova import test from nova import utils import nova.virt.baremetal.db.sqlalchemy.migrate_repo LOG = logging.getLogger(__name__) def _get_connect_string(backend, user, passwd, database): """Try to get a connection with a very specific set of values, if we get these then we'll run the tests, otherwise they are skipped """ if backend == "postgres": backend = "postgresql+psycopg2" elif backend == "mysql": backend = "mysql+mysqldb" else: raise Exception("Unrecognized backend: '%s'" % backend) return ("%s://%s:%s@localhost/%s" % (backend, user, passwd, database)) def _is_backend_avail(backend, user, passwd, database): try: connect_uri = _get_connect_string(backend, user, passwd, database) engine = sqlalchemy.create_engine(connect_uri) connection = engine.connect() except Exception: # intentionally catch all to handle exceptions even if we don't # have any backend code loaded. return False else: connection.close() engine.dispose() return True def _have_mysql(user, passwd, database): present = os.environ.get('NOVA_TEST_MYSQL_PRESENT') if present is None: return _is_backend_avail('mysql', user, passwd, database) return present.lower() in ('', 'true') def _have_postgresql(user, passwd, database): present = os.environ.get('NOVA_TEST_POSTGRESQL_PRESENT') if present is None: return _is_backend_avail('postgres', user, passwd, database) return present.lower() in ('', 'true') def get_mysql_connection_info(conn_pieces): database = conn_pieces.path.strip('/') loc_pieces = conn_pieces.netloc.split('@') host = loc_pieces[1] auth_pieces = loc_pieces[0].split(':') user = auth_pieces[0] password = "" if len(auth_pieces) > 1: if auth_pieces[1].strip(): password = "-p\"%s\"" % auth_pieces[1] return (user, password, database, host) def get_pgsql_connection_info(conn_pieces): database = conn_pieces.path.strip('/') loc_pieces = conn_pieces.netloc.split('@') host = loc_pieces[1] auth_pieces = loc_pieces[0].split(':') user = auth_pieces[0] password = "" if len(auth_pieces) > 1: password = auth_pieces[1].strip() return (user, password, database, host) class CommonTestsMixIn(object): """These tests are shared between TestNovaMigrations and TestBaremetalMigrations. BaseMigrationTestCase is effectively an abstract class, meant to be derived from and not directly tested against; that's why these `test_` methods need to be on a Mixin, so that they won't be picked up as valid tests for BaseMigrationTestCase. """ def test_walk_versions(self): for key, engine in self.engines.items(): # We start each walk with a completely blank slate. self._reset_database(key) self._walk_versions(engine, self.snake_walk, self.downgrade) def test_mysql_opportunistically(self): self._test_mysql_opportunistically() def test_mysql_connect_fail(self): """Test that we can trigger a mysql connection failure and we fail gracefully to ensure we don't break people without mysql """ if _is_backend_avail('mysql', "openstack_cifail", self.PASSWD, self.DATABASE): self.fail("Shouldn't have connected") def test_postgresql_opportunistically(self): self._test_postgresql_opportunistically() def test_postgresql_connect_fail(self): """Test that we can trigger a postgres connection failure and we fail gracefully to ensure we don't break people without postgres """ if _is_backend_avail('postgres', "openstack_cifail", self.PASSWD, self.DATABASE): self.fail("Shouldn't have connected") class BaseMigrationTestCase(test.NoDBTestCase): """Base class for testing migrations and migration utils. This sets up and configures the databases to run tests against. """ # NOTE(jhesketh): It is expected that tests clean up after themselves. # This is necessary for concurrency to allow multiple tests to work on # one database. # The full migration walk tests however do call the old _reset_databases() # to throw away whatever was there so they need to operate on their own # database that we know isn't accessed concurrently. # Hence, BaseWalkMigrationTestCase overwrites the engine list. USER = None PASSWD = None DATABASE = None TIMEOUT_SCALING_FACTOR = 2 def __init__(self, *args, **kwargs): super(BaseMigrationTestCase, self).__init__(*args, **kwargs) self.DEFAULT_CONFIG_FILE = os.path.join(os.path.dirname(__file__), 'test_migrations.conf') # Test machines can set the NOVA_TEST_MIGRATIONS_CONF variable # to override the location of the config file for migration testing self.CONFIG_FILE_PATH = os.environ.get('NOVA_TEST_MIGRATIONS_CONF', self.DEFAULT_CONFIG_FILE) self.MIGRATE_FILE = nova.db.sqlalchemy.migrate_repo.__file__ self.REPOSITORY = repository.Repository( os.path.abspath(os.path.dirname(self.MIGRATE_FILE))) self.INIT_VERSION = 0 self.snake_walk = False self.downgrade = False self.test_databases = {} self.migration = None self.migration_api = None def setUp(self): super(BaseMigrationTestCase, self).setUp() self._load_config() def _load_config(self): # Load test databases from the config file. Only do this # once. No need to re-run this on each test... LOG.debug('config_path is %s' % self.CONFIG_FILE_PATH) if os.path.exists(self.CONFIG_FILE_PATH): cp = ConfigParser.RawConfigParser() try: cp.read(self.CONFIG_FILE_PATH) config = cp.options('unit_tests') for key in config: self.test_databases[key] = cp.get('unit_tests', key) self.snake_walk = cp.getboolean('walk_style', 'snake_walk') self.downgrade = cp.getboolean('walk_style', 'downgrade') except ConfigParser.ParsingError as e: self.fail("Failed to read test_migrations.conf config " "file. Got error: %s" % e) else: self.fail("Failed to find test_migrations.conf config " "file.") self.engines = {} for key, value in self.test_databases.items(): self.engines[key] = sqlalchemy.create_engine(value) # NOTE(jhesketh): We only need to make sure the databases are created # not necessarily clean of tables. self._create_databases() def execute_cmd(self, cmd=None): out, err = processutils.trycmd(cmd, shell=True, discard_warnings=True) output = out or err LOG.debug(output) self.assertEqual('', err, "Failed to run: %s\n%s" % (cmd, output)) @utils.synchronized('pgadmin', external=True) def _reset_pg(self, conn_pieces): (user, password, database, host) = \ get_pgsql_connection_info(conn_pieces) os.environ['PGPASSWORD'] = password os.environ['PGUSER'] = user # note(boris-42): We must create and drop database, we can't # drop database which we have connected to, so for such # operations there is a special database template1. sqlcmd = ("psql -w -U %(user)s -h %(host)s -c" " '%(sql)s' -d template1") sqldict = {'user': user, 'host': host} sqldict['sql'] = ("drop database if exists %s;") % database droptable = sqlcmd % sqldict self.execute_cmd(droptable) sqldict['sql'] = ("create database %s;") % database createtable = sqlcmd % sqldict self.execute_cmd(createtable) os.unsetenv('PGPASSWORD') os.unsetenv('PGUSER') @utils.synchronized('mysql', external=True) def _reset_mysql(self, conn_pieces): # We can execute the MySQL client to destroy and re-create # the MYSQL database, which is easier and less error-prone # than using SQLAlchemy to do this via MetaData...trust me. (user, password, database, host) = \ get_mysql_connection_info(conn_pieces) sql = ("drop database if exists %(database)s; " "create database %(database)s;" % {'database': database}) cmd = ("mysql -u \"%(user)s\" %(password)s -h %(host)s " "-e \"%(sql)s\"" % {'user': user, 'password': password, 'host': host, 'sql': sql}) self.execute_cmd(cmd) @utils.synchronized('sqlite', external=True) def _reset_sqlite(self, conn_pieces): # We can just delete the SQLite database, which is # the easiest and cleanest solution db_path = conn_pieces.path.strip('/') if os.path.exists(db_path): os.unlink(db_path) # No need to recreate the SQLite DB. SQLite will # create it for us if it's not there... def _create_databases(self): """Create all configured databases as needed.""" for key, engine in self.engines.items(): self._create_database(key) def _create_database(self, key): """Create database if it doesn't exist.""" conn_string = self.test_databases[key] conn_pieces = urlparse.urlparse(conn_string) if conn_string.startswith('mysql'): (user, password, database, host) = \ get_mysql_connection_info(conn_pieces) sql = "create database if not exists %s;" % database cmd = ("mysql -u \"%(user)s\" %(password)s -h %(host)s " "-e \"%(sql)s\"" % {'user': user, 'password': password, 'host': host, 'sql': sql}) self.execute_cmd(cmd) elif conn_string.startswith('postgresql'): (user, password, database, host) = \ get_pgsql_connection_info(conn_pieces) os.environ['PGPASSWORD'] = password os.environ['PGUSER'] = user sqlcmd = ("psql -w -U %(user)s -h %(host)s -c" " '%(sql)s' -d template1") sql = ("create database if not exists %s;") % database createtable = sqlcmd % {'user': user, 'host': host, 'sql': sql} # 0 means databases is created # 256 means it already exists (which is fine) # otherwise raise an error out, err = processutils.trycmd(createtable, shell=True, check_exit_code=[0, 256], discard_warnings=True) output = out or err if err != '': self.fail("Failed to run: %s\n%s" % (createtable, output)) os.unsetenv('PGPASSWORD') os.unsetenv('PGUSER') def _reset_databases(self): """Reset all configured databases.""" for key, engine in self.engines.items(): self._reset_database(key) def _reset_database(self, key): """Reset specific database.""" engine = self.engines[key] conn_string = self.test_databases[key] conn_pieces = urlparse.urlparse(conn_string) engine.dispose() if conn_string.startswith('sqlite'): self._reset_sqlite(conn_pieces) elif conn_string.startswith('mysql'): self._reset_mysql(conn_pieces) elif conn_string.startswith('postgresql'): self._reset_pg(conn_pieces) class BaseWalkMigrationTestCase(BaseMigrationTestCase): """BaseWalkMigrationTestCase loads in an alternative set of databases for testing against. This is necessary as the default databases can run tests concurrently without interfering with itself. It is expected that databases listed under [migraiton_dbs] in the configuration are only being accessed by one test at a time. Currently only test_walk_versions accesses the databases (and is the only method that calls _reset_database() which is clearly problematic for concurrency). """ def _load_config(self): # Load test databases from the config file. Only do this # once. No need to re-run this on each test... LOG.debug('config_path is %s' % self.CONFIG_FILE_PATH) if os.path.exists(self.CONFIG_FILE_PATH): cp = ConfigParser.RawConfigParser() try: cp.read(self.CONFIG_FILE_PATH) config = cp.options('migration_dbs') for key in config: self.test_databases[key] = cp.get('migration_dbs', key) self.snake_walk = cp.getboolean('walk_style', 'snake_walk') self.downgrade = cp.getboolean('walk_style', 'downgrade') except ConfigParser.ParsingError as e: self.fail("Failed to read test_migrations.conf config " "file. Got error: %s" % e) else: self.fail("Failed to find test_migrations.conf config " "file.") self.engines = {} for key, value in self.test_databases.items(): self.engines[key] = sqlalchemy.create_engine(value) self._create_databases() def _test_mysql_opportunistically(self): # Test that table creation on mysql only builds InnoDB tables if not _have_mysql(self.USER, self.PASSWD, self.DATABASE): self.skipTest("mysql not available") # add this to the global lists to make reset work with it, it's removed # automatically in tearDown so no need to clean it up here. connect_string = _get_connect_string("mysql", self.USER, self.PASSWD, self.DATABASE) (user, password, database, host) = \ get_mysql_connection_info(urlparse.urlparse(connect_string)) engine = sqlalchemy.create_engine(connect_string) self.engines[database] = engine self.test_databases[database] = connect_string # build a fully populated mysql database with all the tables self._reset_database(database) self._walk_versions(engine, self.snake_walk, self.downgrade) connection = engine.connect() # sanity check total = connection.execute("SELECT count(*) " "from information_schema.TABLES " "where TABLE_SCHEMA='%(database)s'" % {'database': database}) self.assertTrue(total.scalar() > 0, "No tables found. Wrong schema?") noninnodb = connection.execute("SELECT count(*) " "from information_schema.TABLES " "where TABLE_SCHEMA='%(database)s' " "and ENGINE!='InnoDB' " "and TABLE_NAME!='migrate_version'" % {'database': database}) count = noninnodb.scalar() self.assertEqual(count, 0, "%d non InnoDB tables created" % count) connection.close() del(self.engines[database]) del(self.test_databases[database]) def _test_postgresql_opportunistically(self): # Test postgresql database migration walk if not _have_postgresql(self.USER, self.PASSWD, self.DATABASE): self.skipTest("postgresql not available") # add this to the global lists to make reset work with it, it's removed # automatically in tearDown so no need to clean it up here. connect_string = _get_connect_string("postgres", self.USER, self.PASSWD, self.DATABASE) engine = sqlalchemy.create_engine(connect_string) (user, password, database, host) = \ get_pgsql_connection_info(urlparse.urlparse(connect_string)) self.engines[database] = engine self.test_databases[database] = connect_string # build a fully populated postgresql database with all the tables self._reset_database(database) self._walk_versions(engine, self.snake_walk, self.downgrade) del(self.engines[database]) del(self.test_databases[database]) def _walk_versions(self, engine=None, snake_walk=False, downgrade=True): # Determine latest version script from the repo, then # upgrade from 1 through to the latest, with no data # in the databases. This just checks that the schema itself # upgrades successfully. # Place the database under version control self.migration_api.version_control(engine, self.REPOSITORY, self.INIT_VERSION) self.assertEqual(self.INIT_VERSION, self.migration_api.db_version(engine, self.REPOSITORY)) LOG.debug('latest version is %s' % self.REPOSITORY.latest) versions = range(self.INIT_VERSION + 1, self.REPOSITORY.latest + 1) for version in versions: # upgrade -> downgrade -> upgrade self._migrate_up(engine, version, with_data=True) if snake_walk: downgraded = self._migrate_down( engine, version - 1, with_data=True) if downgraded: self._migrate_up(engine, version) if downgrade: # Now walk it back down to 0 from the latest, testing # the downgrade paths. for version in reversed(versions): # downgrade -> upgrade -> downgrade downgraded = self._migrate_down(engine, version - 1) if snake_walk and downgraded: self._migrate_up(engine, version) self._migrate_down(engine, version - 1) def _migrate_down(self, engine, version, with_data=False): try: self.migration_api.downgrade(engine, self.REPOSITORY, version) except NotImplementedError: # NOTE(sirp): some migrations, namely release-level # migrations, don't support a downgrade. return False self.assertEqual(version, self.migration_api.db_version(engine, self.REPOSITORY)) # NOTE(sirp): `version` is what we're downgrading to (i.e. the 'target' # version). So if we have any downgrade checks, they need to be run for # the previous (higher numbered) migration. if with_data: post_downgrade = getattr( self, "_post_downgrade_%03d" % (version + 1), None) if post_downgrade: post_downgrade(engine) return True def _migrate_up(self, engine, version, with_data=False): """migrate up to a new version of the db. We allow for data insertion and post checks at every migration version with special _pre_upgrade_### and _check_### functions in the main test. """ # NOTE(sdague): try block is here because it's impossible to debug # where a failed data migration happens otherwise try: if with_data: data = None pre_upgrade = getattr( self, "_pre_upgrade_%03d" % version, None) if pre_upgrade: data = pre_upgrade(engine) self.migration_api.upgrade(engine, self.REPOSITORY, version) self.assertEqual(version, self.migration_api.db_version(engine, self.REPOSITORY)) if with_data: check = getattr(self, "_check_%03d" % version, None) if check: check(engine, data) except Exception: LOG.error("Failed to migrate to version %s on engine %s" % (version, engine)) raise class TestNovaMigrations(BaseWalkMigrationTestCase, CommonTestsMixIn): """Test sqlalchemy-migrate migrations.""" USER = "openstack_citest" PASSWD = "openstack_citest" DATABASE = "openstack_citest" def __init__(self, *args, **kwargs): super(TestNovaMigrations, self).__init__(*args, **kwargs) self.DEFAULT_CONFIG_FILE = os.path.join(os.path.dirname(__file__), 'test_migrations.conf') # Test machines can set the NOVA_TEST_MIGRATIONS_CONF variable # to override the location of the config file for migration testing self.CONFIG_FILE_PATH = os.environ.get('NOVA_TEST_MIGRATIONS_CONF', self.DEFAULT_CONFIG_FILE) self.MIGRATE_FILE = nova.db.sqlalchemy.migrate_repo.__file__ self.REPOSITORY = repository.Repository( os.path.abspath(os.path.dirname(self.MIGRATE_FILE))) def setUp(self): super(TestNovaMigrations, self).setUp() if self.migration is None: self.migration = __import__('nova.db.migration', globals(), locals(), ['db_initial_version'], -1) self.INIT_VERSION = self.migration.db_initial_version() if self.migration_api is None: temp = __import__('nova.db.sqlalchemy.migration', globals(), locals(), ['versioning_api'], -1) self.migration_api = temp.versioning_api def assertColumnExists(self, engine, table, column): t = db_utils.get_table(engine, table) self.assertIn(column, t.c) def assertColumnNotExists(self, engine, table, column): t = db_utils.get_table(engine, table) self.assertNotIn(column, t.c) def assertTableNotExists(self, engine, table): self.assertRaises(sqlalchemy.exc.NoSuchTableError, db_utils.get_table, engine, table) def assertIndexExists(self, engine, table, index): t = db_utils.get_table(engine, table) index_names = [idx.name for idx in t.indexes] self.assertIn(index, index_names) def assertIndexMembers(self, engine, table, index, members): self.assertIndexExists(engine, table, index) t = db_utils.get_table(engine, table) index_columns = None for idx in t.indexes: if idx.name == index: index_columns = idx.columns.keys() break self.assertEqual(sorted(members), sorted(index_columns)) def _check_227(self, engine, data): table = db_utils.get_table(engine, 'project_user_quotas') # Insert fake_quotas with the longest resource name. fake_quotas = {'id': 5, 'project_id': 'fake_project', 'user_id': 'fake_user', 'resource': 'injected_file_content_bytes', 'hard_limit': 10} table.insert().execute(fake_quotas) # Check we can get the longest resource name. quota = table.select(table.c.id == 5).execute().first() self.assertEqual(quota['resource'], 'injected_file_content_bytes') def _check_228(self, engine, data): self.assertColumnExists(engine, 'compute_nodes', 'metrics') compute_nodes = db_utils.get_table(engine, 'compute_nodes') self.assertIsInstance(compute_nodes.c.metrics.type, sqlalchemy.types.Text) def _post_downgrade_228(self, engine): self.assertColumnNotExists(engine, 'compute_nodes', 'metrics') def _check_229(self, engine, data): self.assertColumnExists(engine, 'compute_nodes', 'extra_resources') compute_nodes = db_utils.get_table(engine, 'compute_nodes') self.assertIsInstance(compute_nodes.c.extra_resources.type, sqlalchemy.types.Text) def _post_downgrade_229(self, engine): self.assertColumnNotExists(engine, 'compute_nodes', 'extra_resources') def _check_230(self, engine, data): for table_name in ['instance_actions_events', 'shadow_instance_actions_events']: self.assertColumnExists(engine, table_name, 'host') self.assertColumnExists(engine, table_name, 'details') action_events = db_utils.get_table(engine, 'instance_actions_events') self.assertIsInstance(action_events.c.host.type, sqlalchemy.types.String) self.assertIsInstance(action_events.c.details.type, sqlalchemy.types.Text) def _post_downgrade_230(self, engine): for table_name in ['instance_actions_events', 'shadow_instance_actions_events']: self.assertColumnNotExists(engine, table_name, 'host') self.assertColumnNotExists(engine, table_name, 'details') def _check_231(self, engine, data): self.assertColumnExists(engine, 'instances', 'ephemeral_key_uuid') instances = db_utils.get_table(engine, 'instances') self.assertIsInstance(instances.c.ephemeral_key_uuid.type, sqlalchemy.types.String) self.assertTrue(db_utils.check_shadow_table(engine, 'instances')) def _post_downgrade_231(self, engine): self.assertColumnNotExists(engine, 'instances', 'ephemeral_key_uuid') self.assertTrue(db_utils.check_shadow_table(engine, 'instances')) def _check_232(self, engine, data): table_names = ['compute_node_stats', 'compute_nodes', 'instance_actions', 'instance_actions_events', 'instance_faults', 'migrations'] for table_name in table_names: self.assertTableNotExists(engine, 'dump_' + table_name) def _check_233(self, engine, data): self.assertColumnExists(engine, 'compute_nodes', 'stats') compute_nodes = db_utils.get_table(engine, 'compute_nodes') self.assertIsInstance(compute_nodes.c.stats.type, sqlalchemy.types.Text) self.assertRaises(sqlalchemy.exc.NoSuchTableError, db_utils.get_table, engine, 'compute_node_stats') def _post_downgrade_233(self, engine): self.assertColumnNotExists(engine, 'compute_nodes', 'stats') # confirm compute_node_stats exists db_utils.get_table(engine, 'compute_node_stats') class TestBaremetalMigrations(BaseWalkMigrationTestCase, CommonTestsMixIn): """Test sqlalchemy-migrate migrations.""" USER = "openstack_citest" PASSWD = "openstack_citest" DATABASE = "openstack_baremetal_citest" def __init__(self, *args, **kwargs): super(TestBaremetalMigrations, self).__init__(*args, **kwargs) self.DEFAULT_CONFIG_FILE = os.path.join(os.path.dirname(__file__), '../virt/baremetal/test_baremetal_migrations.conf') # Test machines can set the NOVA_TEST_MIGRATIONS_CONF variable # to override the location of the config file for migration testing self.CONFIG_FILE_PATH = os.environ.get( 'BAREMETAL_TEST_MIGRATIONS_CONF', self.DEFAULT_CONFIG_FILE) self.MIGRATE_FILE = \ nova.virt.baremetal.db.sqlalchemy.migrate_repo.__file__ self.REPOSITORY = repository.Repository( os.path.abspath(os.path.dirname(self.MIGRATE_FILE))) def setUp(self): super(TestBaremetalMigrations, self).setUp() if self.migration is None: self.migration = __import__('nova.virt.baremetal.db.migration', globals(), locals(), ['db_initial_version'], -1) self.INIT_VERSION = self.migration.db_initial_version() if self.migration_api is None: temp = __import__('nova.virt.baremetal.db.sqlalchemy.migration', globals(), locals(), ['versioning_api'], -1) self.migration_api = temp.versioning_api def _pre_upgrade_002(self, engine): data = [{'id': 1, 'key': 'fake-key', 'image_path': '/dev/null', 'pxe_config_path': '/dev/null/', 'root_mb': 0, 'swap_mb': 0}] table = db_utils.get_table(engine, 'bm_deployments') engine.execute(table.insert(), data) return data def _check_002(self, engine, data): self.assertRaises(sqlalchemy.exc.NoSuchTableError, db_utils.get_table, engine, 'bm_deployments') def _post_downgrade_004(self, engine): bm_nodes = db_utils.get_table(engine, 'bm_nodes') self.assertNotIn(u'instance_name', [c.name for c in bm_nodes.columns]) def _check_005(self, engine, data): bm_nodes = db_utils.get_table(engine, 'bm_nodes') columns = [c.name for c in bm_nodes.columns] self.assertNotIn(u'prov_vlan_id', columns) self.assertNotIn(u'registration_status', columns) def _pre_upgrade_006(self, engine): nodes = db_utils.get_table(engine, 'bm_nodes') ifs = db_utils.get_table(engine, 'bm_interfaces') # node 1 has two different addresses in bm_nodes and bm_interfaces engine.execute(nodes.insert(), [{'id': 1, 'prov_mac_address': 'aa:aa:aa:aa:aa:aa'}]) engine.execute(ifs.insert(), [{'id': 101, 'bm_node_id': 1, 'address': 'bb:bb:bb:bb:bb:bb'}]) # node 2 has one same address both in bm_nodes and bm_interfaces engine.execute(nodes.insert(), [{'id': 2, 'prov_mac_address': 'cc:cc:cc:cc:cc:cc'}]) engine.execute(ifs.insert(), [{'id': 201, 'bm_node_id': 2, 'address': 'cc:cc:cc:cc:cc:cc'}]) def _check_006(self, engine, data): ifs = db_utils.get_table(engine, 'bm_interfaces') rows = ifs.select().\ where(ifs.c.bm_node_id == 1).\ execute().\ fetchall() self.assertEqual(len(rows), 2) rows = ifs.select().\ where(ifs.c.bm_node_id == 2).\ execute().\ fetchall() self.assertEqual(len(rows), 1) self.assertEqual(rows[0]['address'], 'cc:cc:cc:cc:cc:cc') def _post_downgrade_006(self, engine): ifs = db_utils.get_table(engine, 'bm_interfaces') rows = ifs.select().where(ifs.c.bm_node_id == 1).execute().fetchall() self.assertEqual(len(rows), 1) self.assertEqual(rows[0]['address'], 'bb:bb:bb:bb:bb:bb') rows = ifs.select().where(ifs.c.bm_node_id == 2).execute().fetchall() self.assertEqual(len(rows), 0) def _check_007(self, engine, data): bm_nodes = db_utils.get_table(engine, 'bm_nodes') columns = [c.name for c in bm_nodes.columns] self.assertNotIn(u'prov_mac_address', columns) def _check_008(self, engine, data): self.assertRaises(sqlalchemy.exc.NoSuchTableError, db_utils.get_table, engine, 'bm_pxe_ips') def _post_downgrade_008(self, engine): db_utils.get_table(engine, 'bm_pxe_ips') def _pre_upgrade_010(self, engine): bm_nodes = db_utils.get_table(engine, 'bm_nodes') data = [{'id': 10, 'prov_mac_address': 'cc:cc:cc:cc:cc:cc'}] engine.execute(bm_nodes.insert(), data) return data def _check_010(self, engine, data): bm_nodes = db_utils.get_table(engine, 'bm_nodes') self.assertIn('preserve_ephemeral', bm_nodes.columns) default = engine.execute( sqlalchemy.select([bm_nodes.c.preserve_ephemeral]) .where(bm_nodes.c.id == data[0]['id']) ).scalar() self.assertEqual(default, False) bm_nodes.delete().where(bm_nodes.c.id == data[0]['id']).execute() def _post_downgrade_010(self, engine): bm_nodes = db_utils.get_table(engine, 'bm_nodes') self.assertNotIn('preserve_ephemeral', bm_nodes.columns) class ProjectTestCase(test.NoDBTestCase): def test_all_migrations_have_downgrade(self): topdir = os.path.normpath(os.path.dirname(__file__) + '/../../../') py_glob = os.path.join(topdir, "nova", "db", "sqlalchemy", "migrate_repo", "versions", "*.py") missing_downgrade = [] for path in glob.iglob(py_glob): has_upgrade = False has_downgrade = False with open(path, "r") as f: for line in f: if 'def upgrade(' in line: has_upgrade = True if 'def downgrade(' in line: has_downgrade = True if has_upgrade and not has_downgrade: fname = os.path.basename(path) missing_downgrade.append(fname) helpful_msg = (_("The following migrations are missing a downgrade:" "\n\t%s") % '\n\t'.join(sorted(missing_downgrade))) self.assertTrue(not missing_downgrade, helpful_msg) nova-2014.1/nova/tests/db/__init__.py0000664000175400017540000000126012323721477020514 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 Citrix Systems, 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. """ :mod:`db` -- Stubs for DB API ============================= """ nova-2014.1/nova/tests/cast_as_call.py0000664000175400017540000000310612323721477021001 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import fixtures from oslo import messaging class CastAsCall(fixtures.Fixture): """Make RPC 'cast' behave like a 'call'. This is a little hack for tests that need to know when a cast operation has completed. The idea is that we wait for the RPC endpoint method to complete and return before continuing on the caller. See Ia7f40718533e450f00cd3e7d753ac65755c70588 for more background. """ def __init__(self, stubs): super(CastAsCall, self).__init__() self.stubs = stubs @staticmethod def _stub_out(stubs, obj): orig_prepare = obj.prepare def prepare(self, *args, **kwargs): cctxt = orig_prepare(self, *args, **kwargs) CastAsCall._stub_out(stubs, cctxt) # woo, recurse! return cctxt stubs.Set(obj, 'prepare', prepare) stubs.Set(obj, 'cast', obj.call) def setUp(self): super(CastAsCall, self).setUp() self._stub_out(self.stubs, messaging.RPCClient) nova-2014.1/nova/tests/objects/0000775000175400017540000000000012323722546017446 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/objects/test_floating_ip.py0000664000175400017540000001772612323721477023371 0ustar jenkinsjenkins00000000000000# Copyright 2014 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. import mock import netaddr from nova import exception from nova.objects import floating_ip from nova.tests.objects import test_fixed_ip from nova.tests.objects import test_network from nova.tests.objects import test_objects fake_floating_ip = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'address': '172.17.0.1', 'fixed_ip_id': None, 'project_id': None, 'host': None, 'auto_assigned': False, 'pool': None, 'interface': None, 'fixed_ip': None, } class _TestFloatingIPObject(object): def _compare(self, obj, db_obj): for field in obj.fields: if field in floating_ip.FLOATING_IP_OPTIONAL_ATTRS: if obj.obj_attr_is_set(field): obj_val = obj[field].id db_val = db_obj[field]['id'] else: continue else: obj_val = obj[field] db_val = db_obj[field] if isinstance(obj_val, netaddr.IPAddress): obj_val = str(obj_val) self.assertEqual(db_val, obj_val) @mock.patch('nova.db.floating_ip_get') def test_get_by_id(self, get): db_floatingip = dict(fake_floating_ip, fixed_ip=test_fixed_ip.fake_fixed_ip) get.return_value = db_floatingip floatingip = floating_ip.FloatingIP.get_by_id(self.context, 123) get.assert_called_once_with(self.context, 123) self._compare(floatingip, db_floatingip) @mock.patch('nova.db.floating_ip_get_by_address') def test_get_by_address(self, get): get.return_value = fake_floating_ip floatingip = floating_ip.FloatingIP.get_by_address(self.context, '1.2.3.4') get.assert_called_once_with(self.context, '1.2.3.4') self._compare(floatingip, fake_floating_ip) @mock.patch('nova.db.floating_ip_get_pools') def test_get_pool_names(self, get): get.return_value = [{'name': 'a'}, {'name': 'b'}] self.assertEqual(['a', 'b'], floating_ip.FloatingIP.get_pool_names(self.context)) @mock.patch('nova.db.floating_ip_allocate_address') def test_allocate_address(self, allocate): allocate.return_value = '1.2.3.4' self.assertEqual('1.2.3.4', floating_ip.FloatingIP.allocate_address(self.context, 'project', 'pool')) allocate.assert_called_with(self.context, 'project', 'pool', auto_assigned=False) @mock.patch('nova.db.floating_ip_fixed_ip_associate') def test_associate(self, associate): db_fixed = dict(test_fixed_ip.fake_fixed_ip, network=test_network.fake_network) associate.return_value = db_fixed floatingip = floating_ip.FloatingIP.associate(self.context, '172.17.0.1', '192.168.1.1', 'host') associate.assert_called_with(self.context, '172.17.0.1', '192.168.1.1', 'host') self.assertEqual(db_fixed['id'], floatingip.fixed_ip.id) self.assertEqual('172.17.0.1', str(floatingip.address)) self.assertEqual('host', floatingip.host) @mock.patch('nova.db.floating_ip_deallocate') def test_deallocate(self, deallocate): floating_ip.FloatingIP.deallocate(self.context, '1.2.3.4') deallocate.assert_called_with(self.context, '1.2.3.4') @mock.patch('nova.db.floating_ip_destroy') def test_destroy(self, destroy): floating_ip.FloatingIP.destroy(self.context, '1.2.3.4') destroy.assert_called_with(self.context, '1.2.3.4') @mock.patch('nova.db.floating_ip_disassociate') def test_disassociate(self, disassociate): db_fixed = dict(test_fixed_ip.fake_fixed_ip, network=test_network.fake_network) disassociate.return_value = db_fixed floatingip = floating_ip.FloatingIP.disassociate(self.context, '1.2.3.4') disassociate.assert_called_with(self.context, '1.2.3.4') self.assertEqual(db_fixed['id'], floatingip.fixed_ip.id) self.assertEqual('1.2.3.4', str(floatingip.address)) @mock.patch('nova.db.floating_ip_update') def test_save(self, update): update.return_value = fake_floating_ip floatingip = floating_ip.FloatingIP(context=self.context, id=123, address='1.2.3.4', host='foo') self.assertRaises(exception.ObjectActionError, floatingip.save) floatingip.obj_reset_changes(['address', 'id']) floatingip.save() self.assertEqual(set(), floatingip.obj_what_changed()) update.assert_called_with(self.context, '1.2.3.4', {'host': 'foo'}) @mock.patch('nova.db.floating_ip_get_all') def test_get_all(self, get): get.return_value = [fake_floating_ip] floatingips = floating_ip.FloatingIPList.get_all(self.context) self.assertEqual(1, len(floatingips)) self._compare(floatingips[0], fake_floating_ip) get.assert_called_with(self.context) @mock.patch('nova.db.floating_ip_get_all_by_host') def test_get_by_host(self, get): get.return_value = [fake_floating_ip] floatingips = floating_ip.FloatingIPList.get_by_host(self.context, 'host') self.assertEqual(1, len(floatingips)) self._compare(floatingips[0], fake_floating_ip) get.assert_called_with(self.context, 'host') @mock.patch('nova.db.floating_ip_get_all_by_project') def test_get_by_project(self, get): get.return_value = [fake_floating_ip] floatingips = floating_ip.FloatingIPList.get_by_project(self.context, 'project') self.assertEqual(1, len(floatingips)) self._compare(floatingips[0], fake_floating_ip) get.assert_called_with(self.context, 'project') @mock.patch('nova.db.floating_ip_get_by_fixed_address') def test_get_by_fixed_address(self, get): get.return_value = [fake_floating_ip] floatingips = floating_ip.FloatingIPList.get_by_fixed_address( self.context, '1.2.3.4') self.assertEqual(1, len(floatingips)) self._compare(floatingips[0], fake_floating_ip) get.assert_called_with(self.context, '1.2.3.4') @mock.patch('nova.db.floating_ip_get_by_fixed_ip_id') def test_get_by_fixed_ip_id(self, get): get.return_value = [fake_floating_ip] floatingips = floating_ip.FloatingIPList.get_by_fixed_ip_id( self.context, 123) self.assertEqual(1, len(floatingips)) self._compare(floatingips[0], fake_floating_ip) get.assert_called_with(self.context, 123) class TestFloatingIPObject(test_objects._LocalTest, _TestFloatingIPObject): pass class TestRemoteFloatingIPObject(test_objects._RemoteTest, _TestFloatingIPObject): pass nova-2014.1/nova/tests/objects/test_objects.py0000664000175400017540000010122512323721477022513 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import datetime import iso8601 import mock import netaddr import six from testtools import matchers from nova.conductor import rpcapi as conductor_rpcapi from nova import context from nova import exception from nova.objects import base from nova.objects import fields from nova.objects import utils from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import rpc from nova import test class MyObj(base.NovaPersistentObject, base.NovaObject): VERSION = '1.5' fields = {'foo': fields.Field(fields.Integer()), 'bar': fields.Field(fields.String()), 'missing': fields.Field(fields.String()), } @staticmethod def _from_db_object(context, obj, db_obj): self = MyObj() self.foo = db_obj['foo'] self.bar = db_obj['bar'] self.missing = db_obj['missing'] return self def obj_load_attr(self, attrname): setattr(self, attrname, 'loaded!') @base.remotable_classmethod def query(cls, context): obj = cls(foo=1, bar='bar') obj.obj_reset_changes() return obj @base.remotable def marco(self, context): return 'polo' @base.remotable def _update_test(self, context): if context.project_id == 'alternate': self.bar = 'alternate-context' else: self.bar = 'updated' @base.remotable def save(self, context): self.obj_reset_changes() @base.remotable def refresh(self, context): self.foo = 321 self.bar = 'refreshed' self.obj_reset_changes() @base.remotable def modify_save_modify(self, context): self.bar = 'meow' self.save() self.foo = 42 def obj_make_compatible(self, primitive, target_version): # NOTE(danms): Simulate an older version that had a different # format for the 'bar' attribute if target_version == '1.1': primitive['bar'] = 'old%s' % primitive['bar'] class MyObj2(object): @classmethod def obj_name(cls): return 'MyObj' @base.remotable_classmethod def query(cls, *args, **kwargs): pass class RandomMixInWithNoFields(object): """Used to test object inheritance using a mixin that has no fields.""" pass class TestSubclassedObject(RandomMixInWithNoFields, MyObj): fields = {'new_field': fields.Field(fields.String())} class TestMetaclass(test.TestCase): def test_obj_tracking(self): @six.add_metaclass(base.NovaObjectMetaclass) class NewBaseClass(object): fields = {} @classmethod def obj_name(cls): return cls.__name__ class Test1(NewBaseClass): @staticmethod def obj_name(): return 'fake1' class Test2(NewBaseClass): pass class Test2v2(NewBaseClass): @staticmethod def obj_name(): return 'Test2' expected = {'fake1': [Test1], 'Test2': [Test2, Test2v2]} self.assertEqual(expected, NewBaseClass._obj_classes) # The following should work, also. self.assertEqual(expected, Test1._obj_classes) self.assertEqual(expected, Test2._obj_classes) class TestUtils(test.TestCase): def test_datetime_or_none(self): naive_dt = timeutils.utcnow() dt = timeutils.parse_isotime(timeutils.isotime(naive_dt)) self.assertEqual(utils.datetime_or_none(dt), dt) self.assertEqual(utils.datetime_or_none(dt), naive_dt.replace(tzinfo=iso8601.iso8601.Utc(), microsecond=0)) self.assertIsNone(utils.datetime_or_none(None)) self.assertRaises(ValueError, utils.datetime_or_none, 'foo') def test_datetime_or_str_or_none(self): dts = timeutils.isotime() dt = timeutils.parse_isotime(dts) self.assertEqual(utils.datetime_or_str_or_none(dt), dt) self.assertIsNone(utils.datetime_or_str_or_none(None)) self.assertEqual(utils.datetime_or_str_or_none(dts), dt) self.assertRaises(ValueError, utils.datetime_or_str_or_none, 'foo') def test_int_or_none(self): self.assertEqual(utils.int_or_none(1), 1) self.assertEqual(utils.int_or_none('1'), 1) self.assertIsNone(utils.int_or_none(None)) self.assertRaises(ValueError, utils.int_or_none, 'foo') def test_str_or_none(self): class Obj(object): pass self.assertEqual(utils.str_or_none('foo'), 'foo') self.assertEqual(utils.str_or_none(1), '1') self.assertIsNone(utils.str_or_none(None)) self.assertIsInstance(utils.str_or_none('foo'), unicode) def test_str_value(self): self.assertEqual('foo', utils.str_value('foo')) self.assertEqual('1', utils.str_value(1)) self.assertRaises(ValueError, utils.str_value, None) self.assertIsInstance(utils.str_value('foo'), unicode) def test_cstring(self): self.assertEqual('foo', utils.cstring('foo')) self.assertEqual('1', utils.cstring(1)) self.assertRaises(ValueError, utils.cstring, None) def test_ip_or_none(self): ip4 = netaddr.IPAddress('1.2.3.4', 4) ip6 = netaddr.IPAddress('1::2', 6) self.assertEqual(utils.ip_or_none(4)('1.2.3.4'), ip4) self.assertEqual(utils.ip_or_none(6)('1::2'), ip6) self.assertIsNone(utils.ip_or_none(4)(None)) self.assertIsNone(utils.ip_or_none(6)(None)) self.assertRaises(netaddr.AddrFormatError, utils.ip_or_none(4), 'foo') self.assertRaises(netaddr.AddrFormatError, utils.ip_or_none(6), 'foo') def test_list_of_strings_or_none(self): self.assertIsNone(utils.list_of_strings_or_none(None)) self.assertEqual(utils.list_of_strings_or_none(['1', '2']), ['1', '2']) self.assertRaises(ValueError, utils.list_of_strings_or_none, 'foo') self.assertRaises(ValueError, utils.list_of_strings_or_none, [1, 2]) self.assertRaises(ValueError, utils.list_of_strings_or_none, ['1', 2]) def test_dict_of_strings_or_none(self): self.assertIsNone(utils.dict_of_strings_or_none(None)) self.assertEqual(utils.dict_of_strings_or_none({'1': '2'}), {'1': '2'}) self.assertRaises(ValueError, utils.dict_of_strings_or_none, {'1': '2', '3': 4}) self.assertRaises(ValueError, utils.dict_of_strings_or_none, {'1': '2', 3: '4'}) self.assertRaises(ValueError, utils.dict_of_strings_or_none, {'1': '2', 3: '4'}) self.assertRaises(ValueError, utils.dict_of_strings_or_none, 'foo') def test_dt_serializer(self): class Obj(object): foo = utils.dt_serializer('bar') obj = Obj() obj.bar = timeutils.parse_isotime('1955-11-05T00:00:00Z') self.assertEqual(obj.foo(), '1955-11-05T00:00:00Z') obj.bar = None self.assertIsNone(obj.foo()) obj.bar = 'foo' self.assertRaises(AttributeError, obj.foo) def test_dt_deserializer(self): dt = timeutils.parse_isotime('1955-11-05T00:00:00Z') self.assertEqual(utils.dt_deserializer(None, timeutils.isotime(dt)), dt) self.assertIsNone(utils.dt_deserializer(None, None)) self.assertRaises(ValueError, utils.dt_deserializer, None, 'foo') def test_obj_to_primitive_list(self): class MyObjElement(base.NovaObject): fields = {'foo': fields.IntegerField()} def __init__(self, foo): super(MyObjElement, self).__init__() self.foo = foo class MyList(base.ObjectListBase, base.NovaObject): fields = {'objects': fields.ListOfObjectsField('MyObjElement')} mylist = MyList() mylist.objects = [MyObjElement(1), MyObjElement(2), MyObjElement(3)] self.assertEqual([1, 2, 3], [x['foo'] for x in base.obj_to_primitive(mylist)]) def test_obj_to_primitive_dict(self): myobj = MyObj(foo=1, bar='foo') self.assertEqual({'foo': 1, 'bar': 'foo'}, base.obj_to_primitive(myobj)) def test_obj_to_primitive_recursive(self): class MyList(base.ObjectListBase, base.NovaObject): fields = {'objects': fields.ListOfObjectsField('MyObj')} mylist = MyList(objects=[MyObj(), MyObj()]) for i, value in enumerate(mylist): value.foo = i self.assertEqual([{'foo': 0}, {'foo': 1}], base.obj_to_primitive(mylist)) def test_obj_to_primitive_with_ip_addr(self): class TestObject(base.NovaObject): fields = {'addr': fields.IPAddressField(), 'cidr': fields.IPNetworkField()} obj = TestObject(addr='1.2.3.4', cidr='1.1.1.1/16') self.assertEqual({'addr': '1.2.3.4', 'cidr': '1.1.1.1/16'}, base.obj_to_primitive(obj)) def test_obj_make_list(self): class MyList(base.ObjectListBase, base.NovaObject): pass db_objs = [{'foo': 1, 'bar': 'baz', 'missing': 'banana'}, {'foo': 2, 'bar': 'bat', 'missing': 'apple'}, ] mylist = base.obj_make_list('ctxt', MyList(), MyObj, db_objs) self.assertEqual(2, len(mylist)) self.assertEqual('ctxt', mylist._context) for index, item in enumerate(mylist): self.assertEqual(db_objs[index]['foo'], item.foo) self.assertEqual(db_objs[index]['bar'], item.bar) self.assertEqual(db_objs[index]['missing'], item.missing) def compare_obj(test, obj, db_obj, subs=None, allow_missing=None, comparators=None): """Compare a NovaObject and a dict-like database object. This automatically converts TZ-aware datetimes and iterates over the fields of the object. :param:test: The TestCase doing the comparison :param:obj: The NovaObject to examine :param:db_obj: The dict-like database object to use as reference :param:subs: A dict of objkey=dbkey field substitutions :param:allow_missing: A list of fields that may not be in db_obj :param:comparators: Map of comparator functions to use for certain fields """ if subs is None: subs = {} if allow_missing is None: allow_missing = [] if comparators is None: comparators = {} for key in obj.fields: if key in allow_missing and not obj.obj_attr_is_set(key): continue obj_val = obj[key] db_key = subs.get(key, key) db_val = db_obj[db_key] if isinstance(obj_val, datetime.datetime): obj_val = obj_val.replace(tzinfo=None) if key in comparators: comparator = comparators[key] comparator(db_val, obj_val) else: test.assertEqual(db_val, obj_val) class _BaseTestCase(test.TestCase): def setUp(self): super(_BaseTestCase, self).setUp() self.remote_object_calls = list() self.context = context.RequestContext('fake-user', 'fake-project') def compare_obj(self, obj, db_obj, subs=None, allow_missing=None, comparators=None): compare_obj(self, obj, db_obj, subs=subs, allow_missing=allow_missing, comparators=comparators) def json_comparator(self, expected, obj_val): # json-ify an object field for comparison with its db str #equivalent self.assertEqual(expected, jsonutils.dumps(obj_val)) def assertNotIsInstance(self, obj, cls, msg=None): """Python < v2.7 compatibility. Assert 'not isinstance(obj, cls).""" try: f = super(_BaseTestCase, self).assertNotIsInstance except AttributeError: self.assertThat(obj, matchers.Not(matchers.IsInstance(cls)), message=msg or '') else: f(obj, cls, msg=msg) class _LocalTest(_BaseTestCase): def setUp(self): super(_LocalTest, self).setUp() # Just in case base.NovaObject.indirection_api = None def assertRemotes(self): self.assertEqual(self.remote_object_calls, []) @contextlib.contextmanager def things_temporarily_local(): # Temporarily go non-remote so the conductor handles # this request directly _api = base.NovaObject.indirection_api base.NovaObject.indirection_api = None yield base.NovaObject.indirection_api = _api class _RemoteTest(_BaseTestCase): def _testable_conductor(self): self.conductor_service = self.start_service( 'conductor', manager='nova.conductor.manager.ConductorManager') self.remote_object_calls = list() orig_object_class_action = \ self.conductor_service.manager.object_class_action orig_object_action = \ self.conductor_service.manager.object_action def fake_object_class_action(*args, **kwargs): self.remote_object_calls.append((kwargs.get('objname'), kwargs.get('objmethod'))) with things_temporarily_local(): result = orig_object_class_action(*args, **kwargs) return (base.NovaObject.obj_from_primitive(result, context=args[0]) if isinstance(result, base.NovaObject) else result) self.stubs.Set(self.conductor_service.manager, 'object_class_action', fake_object_class_action) def fake_object_action(*args, **kwargs): self.remote_object_calls.append((kwargs.get('objinst'), kwargs.get('objmethod'))) with things_temporarily_local(): result = orig_object_action(*args, **kwargs) return result self.stubs.Set(self.conductor_service.manager, 'object_action', fake_object_action) # Things are remoted by default in this session base.NovaObject.indirection_api = conductor_rpcapi.ConductorAPI() # To make sure local and remote contexts match self.stubs.Set(rpc.RequestContextSerializer, 'serialize_context', lambda s, c: c) self.stubs.Set(rpc.RequestContextSerializer, 'deserialize_context', lambda s, c: c) def setUp(self): super(_RemoteTest, self).setUp() self._testable_conductor() def assertRemotes(self): self.assertNotEqual(self.remote_object_calls, []) class _TestObject(object): def test_hydration_type_error(self): primitive = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'nova', 'nova_object.version': '1.5', 'nova_object.data': {'foo': 'a'}} self.assertRaises(ValueError, MyObj.obj_from_primitive, primitive) def test_hydration(self): primitive = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'nova', 'nova_object.version': '1.5', 'nova_object.data': {'foo': 1}} real_method = MyObj._obj_from_primitive def _obj_from_primitive(*args): return real_method(*args) with mock.patch.object(MyObj, '_obj_from_primitive') as ofp: ofp.side_effect = _obj_from_primitive obj = MyObj.obj_from_primitive(primitive) ofp.assert_called_once_with(None, '1.5', primitive) self.assertEqual(obj.foo, 1) def test_hydration_version_different(self): primitive = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'nova', 'nova_object.version': '1.2', 'nova_object.data': {'foo': 1}} obj = MyObj.obj_from_primitive(primitive) self.assertEqual(obj.foo, 1) self.assertEqual('1.2', obj.VERSION) def test_hydration_bad_ns(self): primitive = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'foo', 'nova_object.version': '1.5', 'nova_object.data': {'foo': 1}} self.assertRaises(exception.UnsupportedObjectError, MyObj.obj_from_primitive, primitive) def test_dehydration(self): expected = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'nova', 'nova_object.version': '1.5', 'nova_object.data': {'foo': 1}} obj = MyObj(foo=1) obj.obj_reset_changes() self.assertEqual(obj.obj_to_primitive(), expected) def test_object_property(self): obj = MyObj(foo=1) self.assertEqual(obj.foo, 1) def test_object_property_type_error(self): obj = MyObj() def fail(): obj.foo = 'a' self.assertRaises(ValueError, fail) def test_object_dict_syntax(self): obj = MyObj(foo=123, bar='bar') self.assertEqual(obj['foo'], 123) self.assertEqual(sorted(obj.items(), key=lambda x: x[0]), [('bar', 'bar'), ('foo', 123)]) self.assertEqual(sorted(list(obj.iteritems()), key=lambda x: x[0]), [('bar', 'bar'), ('foo', 123)]) def test_load(self): obj = MyObj() self.assertEqual(obj.bar, 'loaded!') def test_load_in_base(self): class Foo(base.NovaObject): fields = {'foobar': fields.Field(fields.Integer())} obj = Foo() # NOTE(danms): Can't use assertRaisesRegexp() because of py26 raised = False try: obj.foobar except NotImplementedError as ex: raised = True self.assertTrue(raised) self.assertIn('foobar', str(ex)) def test_loaded_in_primitive(self): obj = MyObj(foo=1) obj.obj_reset_changes() self.assertEqual(obj.bar, 'loaded!') expected = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'nova', 'nova_object.version': '1.5', 'nova_object.changes': ['bar'], 'nova_object.data': {'foo': 1, 'bar': 'loaded!'}} self.assertEqual(obj.obj_to_primitive(), expected) def test_changes_in_primitive(self): obj = MyObj(foo=123) self.assertEqual(obj.obj_what_changed(), set(['foo'])) primitive = obj.obj_to_primitive() self.assertIn('nova_object.changes', primitive) obj2 = MyObj.obj_from_primitive(primitive) self.assertEqual(obj2.obj_what_changed(), set(['foo'])) obj2.obj_reset_changes() self.assertEqual(obj2.obj_what_changed(), set()) def test_unknown_objtype(self): self.assertRaises(exception.UnsupportedObjectError, base.NovaObject.obj_class_from_name, 'foo', '1.0') def test_obj_class_from_name_supported_version(self): error = None try: base.NovaObject.obj_class_from_name('MyObj', '1.25') except exception.IncompatibleObjectVersion as error: pass self.assertIsNotNone(error) self.assertEqual('1.5', error.kwargs['supported']) def test_with_alternate_context(self): ctxt1 = context.RequestContext('foo', 'foo') ctxt2 = context.RequestContext('bar', 'alternate') obj = MyObj.query(ctxt1) obj._update_test(ctxt2) self.assertEqual(obj.bar, 'alternate-context') self.assertRemotes() def test_orphaned_object(self): obj = MyObj.query(self.context) obj._context = None self.assertRaises(exception.OrphanedObjectError, obj._update_test) self.assertRemotes() def test_changed_1(self): obj = MyObj.query(self.context) obj.foo = 123 self.assertEqual(obj.obj_what_changed(), set(['foo'])) obj._update_test(self.context) self.assertEqual(obj.obj_what_changed(), set(['foo', 'bar'])) self.assertEqual(obj.foo, 123) self.assertRemotes() def test_changed_2(self): obj = MyObj.query(self.context) obj.foo = 123 self.assertEqual(obj.obj_what_changed(), set(['foo'])) obj.save(self.context) self.assertEqual(obj.obj_what_changed(), set([])) self.assertEqual(obj.foo, 123) self.assertRemotes() def test_changed_3(self): obj = MyObj.query(self.context) obj.foo = 123 self.assertEqual(obj.obj_what_changed(), set(['foo'])) obj.refresh(self.context) self.assertEqual(obj.obj_what_changed(), set([])) self.assertEqual(obj.foo, 321) self.assertEqual(obj.bar, 'refreshed') self.assertRemotes() def test_changed_4(self): obj = MyObj.query(self.context) obj.bar = 'something' self.assertEqual(obj.obj_what_changed(), set(['bar'])) obj.modify_save_modify(self.context) self.assertEqual(obj.obj_what_changed(), set(['foo'])) self.assertEqual(obj.foo, 42) self.assertEqual(obj.bar, 'meow') self.assertRemotes() def test_changed_with_sub_object(self): class ParentObject(base.NovaObject): fields = {'foo': fields.IntegerField(), 'bar': fields.ObjectField('MyObj'), } obj = ParentObject() self.assertEqual(set(), obj.obj_what_changed()) obj.foo = 1 self.assertEqual(set(['foo']), obj.obj_what_changed()) bar = MyObj() obj.bar = bar self.assertEqual(set(['foo', 'bar']), obj.obj_what_changed()) obj.obj_reset_changes() self.assertEqual(set(), obj.obj_what_changed()) bar.foo = 1 self.assertEqual(set(['bar']), obj.obj_what_changed()) def test_static_result(self): obj = MyObj.query(self.context) self.assertEqual(obj.bar, 'bar') result = obj.marco() self.assertEqual(result, 'polo') self.assertRemotes() def test_updates(self): obj = MyObj.query(self.context) self.assertEqual(obj.foo, 1) obj._update_test() self.assertEqual(obj.bar, 'updated') self.assertRemotes() def test_base_attributes(self): dt = datetime.datetime(1955, 11, 5) obj = MyObj(created_at=dt, updated_at=dt, deleted_at=None, deleted=False) expected = {'nova_object.name': 'MyObj', 'nova_object.namespace': 'nova', 'nova_object.version': '1.5', 'nova_object.changes': ['deleted', 'created_at', 'deleted_at', 'updated_at'], 'nova_object.data': {'created_at': timeutils.isotime(dt), 'updated_at': timeutils.isotime(dt), 'deleted_at': None, 'deleted': False, } } self.assertEqual(obj.obj_to_primitive(), expected) def test_contains(self): obj = MyObj() self.assertNotIn('foo', obj) obj.foo = 1 self.assertIn('foo', obj) self.assertNotIn('does_not_exist', obj) def test_obj_attr_is_set(self): obj = MyObj(foo=1) self.assertTrue(obj.obj_attr_is_set('foo')) self.assertFalse(obj.obj_attr_is_set('bar')) self.assertRaises(AttributeError, obj.obj_attr_is_set, 'bang') def test_get(self): obj = MyObj(foo=1) # Foo has value, should not get the default self.assertEqual(obj.get('foo', 2), 1) # Foo has value, should return the value without error self.assertEqual(obj.get('foo'), 1) # Bar is not loaded, so we should get the default self.assertEqual(obj.get('bar', 'not-loaded'), 'not-loaded') # Bar without a default should lazy-load self.assertEqual(obj.get('bar'), 'loaded!') # Bar now has a default, but loaded value should be returned self.assertEqual(obj.get('bar', 'not-loaded'), 'loaded!') # Invalid attribute should raise AttributeError self.assertRaises(AttributeError, obj.get, 'nothing') # ...even with a default self.assertRaises(AttributeError, obj.get, 'nothing', 3) def test_object_inheritance(self): base_fields = base.NovaPersistentObject.fields.keys() myobj_fields = ['foo', 'bar', 'missing'] + base_fields myobj3_fields = ['new_field'] self.assertTrue(issubclass(TestSubclassedObject, MyObj)) self.assertEqual(len(myobj_fields), len(MyObj.fields)) self.assertEqual(set(myobj_fields), set(MyObj.fields.keys())) self.assertEqual(len(myobj_fields) + len(myobj3_fields), len(TestSubclassedObject.fields)) self.assertEqual(set(myobj_fields) | set(myobj3_fields), set(TestSubclassedObject.fields.keys())) def test_get_changes(self): obj = MyObj() self.assertEqual({}, obj.obj_get_changes()) obj.foo = 123 self.assertEqual({'foo': 123}, obj.obj_get_changes()) obj.bar = 'test' self.assertEqual({'foo': 123, 'bar': 'test'}, obj.obj_get_changes()) obj.obj_reset_changes() self.assertEqual({}, obj.obj_get_changes()) def test_obj_fields(self): class TestObj(base.NovaObject): fields = {'foo': fields.Field(fields.Integer())} obj_extra_fields = ['bar'] @property def bar(self): return 'this is bar' obj = TestObj() self.assertEqual(['foo', 'bar'], obj.obj_fields) def test_obj_constructor(self): obj = MyObj(context=self.context, foo=123, bar='abc') self.assertEqual(123, obj.foo) self.assertEqual('abc', obj.bar) self.assertEqual(set(['foo', 'bar']), obj.obj_what_changed()) class TestObject(_LocalTest, _TestObject): pass class TestRemoteObject(_RemoteTest, _TestObject): def test_major_version_mismatch(self): MyObj2.VERSION = '2.0' self.assertRaises(exception.IncompatibleObjectVersion, MyObj2.query, self.context) def test_minor_version_greater(self): MyObj2.VERSION = '1.6' self.assertRaises(exception.IncompatibleObjectVersion, MyObj2.query, self.context) def test_minor_version_less(self): MyObj2.VERSION = '1.2' obj = MyObj2.query(self.context) self.assertEqual(obj.bar, 'bar') self.assertRemotes() def test_compat(self): MyObj2.VERSION = '1.1' obj = MyObj2.query(self.context) self.assertEqual('oldbar', obj.bar) class TestObjectListBase(test.TestCase): def test_list_like_operations(self): class MyElement(base.NovaObject): fields = {'foo': fields.IntegerField()} def __init__(self, foo): super(MyElement, self).__init__() self.foo = foo class Foo(base.ObjectListBase, base.NovaObject): fields = {'objects': fields.ListOfObjectsField('MyElement')} objlist = Foo(context='foo', objects=[MyElement(1), MyElement(2), MyElement(3)]) self.assertEqual(list(objlist), objlist.objects) self.assertEqual(len(objlist), 3) self.assertIn(objlist.objects[0], objlist) self.assertEqual(list(objlist[:1]), [objlist.objects[0]]) self.assertEqual(objlist[:1]._context, 'foo') self.assertEqual(objlist[2], objlist.objects[2]) self.assertEqual(objlist.count(objlist.objects[0]), 1) self.assertEqual(objlist.index(objlist.objects[1]), 1) objlist.sort(key=lambda x: x.foo, reverse=True) self.assertEqual([3, 2, 1], [x.foo for x in objlist]) def test_serialization(self): class Foo(base.ObjectListBase, base.NovaObject): fields = {'objects': fields.ListOfObjectsField('Bar')} class Bar(base.NovaObject): fields = {'foo': fields.Field(fields.String())} obj = Foo(objects=[]) for i in 'abc': bar = Bar(foo=i) obj.objects.append(bar) obj2 = base.NovaObject.obj_from_primitive(obj.obj_to_primitive()) self.assertFalse(obj is obj2) self.assertEqual([x.foo for x in obj], [y.foo for y in obj2]) def _test_object_list_version_mappings(self, list_obj_class): # Figure out what sort of object this list is for list_field = list_obj_class.fields['objects'] item_obj_field = list_field._type._element_type item_obj_name = item_obj_field._type._obj_name # Look through all object classes of this type and make sure that # the versions we find are covered by the parent list class for item_class in base.NovaObject._obj_classes[item_obj_name]: self.assertIn( item_class.VERSION, list_obj_class.child_versions.values()) def test_object_version_mappings(self): # Find all object list classes and make sure that they at least handle # all the current object versions for obj_classes in base.NovaObject._obj_classes.values(): for obj_class in obj_classes: if issubclass(obj_class, base.ObjectListBase): self._test_object_list_version_mappings(obj_class) def test_list_changes(self): class Foo(base.ObjectListBase, base.NovaObject): fields = {'objects': fields.ListOfObjectsField('Bar')} class Bar(base.NovaObject): fields = {'foo': fields.StringField()} obj = Foo(objects=[]) self.assertEqual(set(['objects']), obj.obj_what_changed()) obj.objects.append(Bar(foo='test')) self.assertEqual(set(['objects']), obj.obj_what_changed()) obj.obj_reset_changes() # This should still look dirty because the child is dirty self.assertEqual(set(['objects']), obj.obj_what_changed()) obj.objects[0].obj_reset_changes() # This should now look clean because the child is clean self.assertEqual(set(), obj.obj_what_changed()) class TestObjectSerializer(_BaseTestCase): def test_serialize_entity_primitive(self): ser = base.NovaObjectSerializer() for thing in (1, 'foo', [1, 2], {'foo': 'bar'}): self.assertEqual(thing, ser.serialize_entity(None, thing)) def test_deserialize_entity_primitive(self): ser = base.NovaObjectSerializer() for thing in (1, 'foo', [1, 2], {'foo': 'bar'}): self.assertEqual(thing, ser.deserialize_entity(None, thing)) def test_deserialize_entity_newer_version(self): ser = base.NovaObjectSerializer() ser._conductor = mock.Mock() ser._conductor.object_backport.return_value = 'backported' obj = MyObj() obj.VERSION = '1.25' primitive = obj.obj_to_primitive() result = ser.deserialize_entity(self.context, primitive) self.assertEqual('backported', result) ser._conductor.object_backport.assert_called_with(self.context, primitive, '1.5') def test_object_serialization(self): ser = base.NovaObjectSerializer() obj = MyObj() primitive = ser.serialize_entity(self.context, obj) self.assertIn('nova_object.name', primitive) obj2 = ser.deserialize_entity(self.context, primitive) self.assertIsInstance(obj2, MyObj) self.assertEqual(self.context, obj2._context) def test_object_serialization_iterables(self): ser = base.NovaObjectSerializer() obj = MyObj() for iterable in (list, tuple, set): thing = iterable([obj]) primitive = ser.serialize_entity(self.context, thing) self.assertEqual(1, len(primitive)) for item in primitive: self.assertNotIsInstance(item, base.NovaObject) thing2 = ser.deserialize_entity(self.context, primitive) self.assertEqual(1, len(thing2)) for item in thing2: self.assertIsInstance(item, MyObj) nova-2014.1/nova/tests/objects/test_quotas.py0000664000175400017540000001330212323721477022374 0ustar jenkinsjenkins00000000000000# Copyright 2013 Rackspace Hosting. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import context from nova.objects import quotas as quotas_obj from nova import quota from nova import test from nova.tests import fake_instance from nova.tests.objects import test_objects QUOTAS = quota.QUOTAS class TestQuotasModule(test.NoDBTestCase): def setUp(self): super(TestQuotasModule, self).setUp() self.context = context.RequestContext('fake_user1', 'fake_proj1') self.instance = fake_instance.fake_db_instance( project_id='fake_proj2', user_id='fake_user2') def test_ids_from_instance_non_admin(self): project_id, user_id = quotas_obj.ids_from_instance( self.context, self.instance) self.assertEqual('fake_user2', user_id) self.assertEqual('fake_proj1', project_id) def test_ids_from_instance_admin(self): project_id, user_id = quotas_obj.ids_from_instance( self.context.elevated(), self.instance) self.assertEqual('fake_user2', user_id) self.assertEqual('fake_proj2', project_id) class _TestQuotasObject(object): def setUp(self): super(_TestQuotasObject, self).setUp() self.context = context.RequestContext('fake_user1', 'fake_proj1') self.instance = fake_instance.fake_db_instance( project_id='fake_proj2', user_id='fake_user2') def test_from_reservations(self): fake_reservations = ['1', '2'] quotas = quotas_obj.Quotas.from_reservations( self.context, fake_reservations) self.assertEqual(self.context, quotas._context) self.assertEqual(fake_reservations, quotas.reservations) self.assertIsNone(quotas.project_id) self.assertIsNone(quotas.user_id) def test_from_reservations_bogus(self): fake_reservations = [_TestQuotasObject, _TestQuotasObject] self.assertRaises(ValueError, quotas_obj.Quotas.from_reservations, self.context, fake_reservations) def test_from_reservations_instance(self): fake_reservations = ['1', '2'] quotas = quotas_obj.Quotas.from_reservations( self.context, fake_reservations, instance=self.instance) self.assertEqual(self.context, quotas._context) self.assertEqual(fake_reservations, quotas.reservations) self.assertEqual('fake_proj1', quotas.project_id) self.assertEqual('fake_user2', quotas.user_id) def test_from_reservations_instance_admin(self): fake_reservations = ['1', '2'] elevated = self.context.elevated() quotas = quotas_obj.Quotas.from_reservations( elevated, fake_reservations, instance=self.instance) self.assertEqual(elevated, quotas._context) self.assertEqual(fake_reservations, quotas.reservations) self.assertEqual('fake_proj2', quotas.project_id) self.assertEqual('fake_user2', quotas.user_id) def test_reserve(self): fake_reservations = ['1', '2'] quotas = quotas_obj.Quotas() self.mox.StubOutWithMock(QUOTAS, 'reserve') QUOTAS.reserve(self.context, expire='expire', project_id='project_id', user_id='user_id', moo='cow').AndReturn(fake_reservations) self.mox.ReplayAll() quotas.reserve(self.context, expire='expire', project_id='project_id', user_id='user_id', moo='cow') self.assertEqual(self.context, quotas._context) self.assertEqual(fake_reservations, quotas.reservations) self.assertEqual('project_id', quotas.project_id) self.assertEqual('user_id', quotas.user_id) def test_commit(self): fake_reservations = ['1', '2'] quotas = quotas_obj.Quotas.from_reservations( self.context, fake_reservations) self.mox.StubOutWithMock(QUOTAS, 'commit') QUOTAS.commit(self.context, fake_reservations, project_id=None, user_id=None) self.mox.ReplayAll() quotas.commit() self.assertIsNone(quotas.reservations) def test_commit_none_reservations(self): quotas = quotas_obj.Quotas.from_reservations(self.context, None) self.mox.StubOutWithMock(QUOTAS, 'commit') self.mox.ReplayAll() quotas.commit() def test_rollback(self): fake_reservations = ['1', '2'] quotas = quotas_obj.Quotas.from_reservations( self.context, fake_reservations) self.mox.StubOutWithMock(QUOTAS, 'rollback') QUOTAS.rollback(self.context, fake_reservations, project_id=None, user_id=None) self.mox.ReplayAll() quotas.rollback() self.assertIsNone(quotas.reservations) def test_rollback_none_reservations(self): quotas = quotas_obj.Quotas.from_reservations(self.context, None) self.mox.StubOutWithMock(QUOTAS, 'rollback') self.mox.ReplayAll() quotas.rollback() class TestQuotasObject(_TestQuotasObject, test_objects._LocalTest): pass class TestRemoteQuotasObject(_TestQuotasObject, test_objects._RemoteTest): pass nova-2014.1/nova/tests/objects/test_virtual_interface.py0000664000175400017540000001101212323721477024562 0ustar jenkinsjenkins00000000000000# Copyright (C) 2014, 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. import mock from nova import db from nova.objects import virtual_interface as vif_obj from nova.tests.objects import test_objects fake_vif = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'id': 1, 'address': '00:00:00:00:00:00', 'network_id': 123, 'instance_uuid': 'fake-uuid', 'uuid': 'fake-uuid-2', } class _TestVirtualInterface(object): @staticmethod def _compare(test, db, obj): for field, value in db.items(): test.assertEqual(db[field], obj[field]) def test_get_by_id(self): with mock.patch.object(db, 'virtual_interface_get') as get: get.return_value = fake_vif vif = vif_obj.VirtualInterface.get_by_id(self.context, 1) self._compare(self, fake_vif, vif) def test_get_by_uuid(self): with mock.patch.object(db, 'virtual_interface_get_by_uuid') as get: get.return_value = fake_vif vif = vif_obj.VirtualInterface.get_by_uuid(self.context, 'fake-uuid-2') self._compare(self, fake_vif, vif) def test_get_by_address(self): with mock.patch.object(db, 'virtual_interface_get_by_address') as get: get.return_value = fake_vif vif = vif_obj.VirtualInterface.get_by_address(self.context, '00:00:00:00:00:00') self._compare(self, fake_vif, vif) def test_get_by_instance_and_network(self): with mock.patch.object(db, 'virtual_interface_get_by_instance_and_network') as get: get.return_value = fake_vif vif = vif_obj.VirtualInterface.get_by_instance_and_network( self.context, 'fake-uuid', 123) self._compare(self, fake_vif, vif) def test_create(self): vif = vif_obj.VirtualInterface() vif.address = '00:00:00:00:00:00' vif.network_id = 123 vif.instance_uuid = 'fake-uuid' vif.uuid = 'fake-uuid-2' with mock.patch.object(db, 'virtual_interface_create') as create: create.return_value = fake_vif vif.create(self.context) self.assertEqual(self.context, vif._context) vif._context = None self._compare(self, fake_vif, vif) def test_delete_by_instance_uuid(self): with mock.patch.object(db, 'virtual_interface_delete_by_instance') as delete: vif_obj.VirtualInterface.delete_by_instance_uuid(self.context, 'fake-uuid') delete.assert_called_with(self.context, 'fake-uuid') class TestVirtualInterfaceObject(test_objects._LocalTest, _TestVirtualInterface): pass class TestRemoteVirtualInterfaceObject(test_objects._RemoteTest, _TestVirtualInterface): pass class _TestVirtualInterfaceList(object): def test_get_all(self): with mock.patch.object(db, 'virtual_interface_get_all') as get: get.return_value = [fake_vif] vifs = vif_obj.VirtualInterfaceList.get_all(self.context) self.assertEqual(1, len(vifs)) _TestVirtualInterface._compare(self, fake_vif, vifs[0]) def test_get_by_instance_uuid(self): with mock.patch.object(db, 'virtual_interface_get_by_instance') as get: get.return_value = [fake_vif] vifs = vif_obj.VirtualInterfaceList.get_by_instance_uuid( self.context, 'fake-uuid') self.assertEqual(1, len(vifs)) _TestVirtualInterface._compare(self, fake_vif, vifs[0]) class TestVirtualInterfaceList(test_objects._LocalTest, _TestVirtualInterfaceList): pass class TestRemoteVirtualInterfaceList(test_objects._RemoteTest, _TestVirtualInterfaceList): pass nova-2014.1/nova/tests/objects/test_instance_action.py0000664000175400017540000003062412323721477024227 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import mock import traceback from nova.compute import utils as compute_utils from nova import db from nova.objects import instance_action from nova.openstack.common import timeutils from nova.tests.objects import test_objects NOW = timeutils.utcnow().replace(microsecond=0) fake_action = { 'created_at': NOW, 'deleted_at': None, 'updated_at': None, 'deleted': False, 'id': 123, 'action': 'fake-action', 'instance_uuid': 'fake-uuid', 'request_id': 'fake-request', 'user_id': 'fake-user', 'project_id': 'fake-project', 'start_time': NOW, 'finish_time': None, 'message': 'foo', } fake_event = { 'created_at': NOW, 'deleted_at': None, 'updated_at': None, 'deleted': False, 'id': 123, 'event': 'fake-event', 'action_id': 123, 'start_time': NOW, 'finish_time': None, 'result': 'fake-result', 'traceback': 'fake-tb', } class _TestInstanceActionObject(object): @mock.patch.object(db, 'action_get_by_request_id') def test_get_by_request_id(self, mock_get): context = self.context mock_get.return_value = fake_action action = instance_action.InstanceAction.get_by_request_id( context, 'fake-uuid', 'fake-request') self.compare_obj(action, fake_action) mock_get.assert_called_once_with(context, 'fake-uuid', 'fake-request') def test_pack_action_start(self): values = instance_action.InstanceAction.pack_action_start( self.context, 'fake-uuid', 'fake-action') self.assertEqual(values['request_id'], self.context.request_id) self.assertEqual(values['user_id'], self.context.user_id) self.assertEqual(values['project_id'], self.context.project_id) self.assertEqual(values['instance_uuid'], 'fake-uuid') self.assertEqual(values['action'], 'fake-action') self.assertEqual(values['start_time'].replace(tzinfo=None), self.context.timestamp) def test_pack_action_finish(self): timeutils.set_time_override(override_time=NOW) values = instance_action.InstanceAction.pack_action_finish( self.context, 'fake-uuid') self.assertEqual(values['request_id'], self.context.request_id) self.assertEqual(values['instance_uuid'], 'fake-uuid') self.assertEqual(values['finish_time'].replace(tzinfo=None), NOW) @mock.patch.object(db, 'action_start') def test_action_start(self, mock_start): test_class = instance_action.InstanceAction expected_packed_values = test_class.pack_action_start( self.context, 'fake-uuid', 'fake-action') mock_start.return_value = fake_action action = instance_action.InstanceAction.action_start( self.context, 'fake-uuid', 'fake-action', want_result=True) mock_start.assert_called_once_with(self.context, expected_packed_values) self.compare_obj(action, fake_action) @mock.patch.object(db, 'action_start') def test_action_start_no_result(self, mock_start): test_class = instance_action.InstanceAction expected_packed_values = test_class.pack_action_start( self.context, 'fake-uuid', 'fake-action') mock_start.return_value = fake_action action = instance_action.InstanceAction.action_start( self.context, 'fake-uuid', 'fake-action', want_result=False) mock_start.assert_called_once_with(self.context, expected_packed_values) self.assertIsNone(action) @mock.patch.object(db, 'action_finish') def test_action_finish(self, mock_finish): timeutils.set_time_override(override_time=NOW) test_class = instance_action.InstanceAction expected_packed_values = test_class.pack_action_finish( self.context, 'fake-uuid') mock_finish.return_value = fake_action action = instance_action.InstanceAction.action_finish( self.context, 'fake-uuid', want_result=True) mock_finish.assert_called_once_with(self.context, expected_packed_values) self.compare_obj(action, fake_action) @mock.patch.object(db, 'action_finish') def test_action_finish_no_result(self, mock_finish): timeutils.set_time_override(override_time=NOW) test_class = instance_action.InstanceAction expected_packed_values = test_class.pack_action_finish( self.context, 'fake-uuid') mock_finish.return_value = fake_action action = instance_action.InstanceAction.action_finish( self.context, 'fake-uuid', want_result=False) mock_finish.assert_called_once_with(self.context, expected_packed_values) self.assertIsNone(action) @mock.patch.object(db, 'action_finish') @mock.patch.object(db, 'action_start') def test_finish(self, mock_start, mock_finish): timeutils.set_time_override(override_time=NOW) expected_packed_action_start = { 'request_id': self.context.request_id, 'user_id': self.context.user_id, 'project_id': self.context.project_id, 'instance_uuid': 'fake-uuid', 'action': 'fake-action', 'start_time': self.context.timestamp, } expected_packed_action_finish = { 'request_id': self.context.request_id, 'instance_uuid': 'fake-uuid', 'finish_time': NOW, } mock_start.return_value = fake_action mock_finish.return_value = fake_action action = instance_action.InstanceAction.action_start( self.context, 'fake-uuid', 'fake-action') action.finish(self.context) mock_start.assert_called_once_with(self.context, expected_packed_action_start) mock_finish.assert_called_once_with(self.context, expected_packed_action_finish) self.compare_obj(action, fake_action) @mock.patch.object(db, 'actions_get') def test_get_list(self, mock_get): fake_actions = [dict(fake_action, id=1234), dict(fake_action, id=5678)] mock_get.return_value = fake_actions obj_list = instance_action.InstanceActionList.get_by_instance_uuid( self.context, 'fake-uuid') for index, action in enumerate(obj_list): self.compare_obj(action, fake_actions[index]) mock_get.assert_called_once_with(self.context, 'fake-uuid') class TestInstanceActionObject(test_objects._LocalTest, _TestInstanceActionObject): pass class TestRemoteInstanceActionObject(test_objects._RemoteTest, _TestInstanceActionObject): pass class _TestInstanceActionEventObject(object): @mock.patch.object(db, 'action_event_get_by_id') def test_get_by_id(self, mock_get): mock_get.return_value = fake_event event = instance_action.InstanceActionEvent.get_by_id( self.context, 'fake-action-id', 'fake-event-id') self.compare_obj(event, fake_event) mock_get.assert_called_once_with(self.context, 'fake-action-id', 'fake-event-id') @mock.patch.object(db, 'action_event_start') def test_event_start(self, mock_start): timeutils.set_time_override(override_time=NOW) expected_packed_values = compute_utils.pack_action_event_start( self.context, 'fake-uuid', 'fake-event') mock_start.return_value = fake_event event = instance_action.InstanceActionEvent.event_start( self.context, 'fake-uuid', 'fake-event', want_result=True) mock_start.assert_called_once_with(self.context, expected_packed_values) self.compare_obj(event, fake_event) @mock.patch.object(db, 'action_event_start') def test_event_start_no_result(self, mock_start): timeutils.set_time_override(override_time=NOW) expected_packed_values = compute_utils.pack_action_event_start( self.context, 'fake-uuid', 'fake-event') mock_start.return_value = fake_event event = instance_action.InstanceActionEvent.event_start( self.context, 'fake-uuid', 'fake-event', want_result=False) mock_start.assert_called_once_with(self.context, expected_packed_values) self.assertIsNone(event) @mock.patch.object(db, 'action_event_finish') def test_event_finish(self, mock_finish): timeutils.set_time_override(override_time=NOW) expected_packed_values = compute_utils.pack_action_event_finish( self.context, 'fake-uuid', 'fake-event') mock_finish.return_value = fake_event event = instance_action.InstanceActionEvent.event_finish( self.context, 'fake-uuid', 'fake-event', want_result=True) mock_finish.assert_called_once_with(self.context, expected_packed_values) self.compare_obj(event, fake_event) @mock.patch.object(db, 'action_event_finish') def test_event_finish_no_result(self, mock_finish): timeutils.set_time_override(override_time=NOW) expected_packed_values = compute_utils.pack_action_event_finish( self.context, 'fake-uuid', 'fake-event') mock_finish.return_value = fake_event event = instance_action.InstanceActionEvent.event_finish( self.context, 'fake-uuid', 'fake-event', want_result=False) mock_finish.assert_called_once_with(self.context, expected_packed_values) self.assertIsNone(event) @mock.patch.object(traceback, 'format_tb') @mock.patch.object(db, 'action_event_finish') def test_event_finish_with_failure(self, mock_finish, mock_tb): mock_tb.return_value = 'fake-tb' timeutils.set_time_override(override_time=NOW) expected_packed_values = compute_utils.pack_action_event_finish( self.context, 'fake-uuid', 'fake-event', 'val', 'invalid-tb') mock_finish.return_value = fake_event test_class = instance_action.InstanceActionEvent event = test_class.event_finish_with_failure( self.context, 'fake-uuid', 'fake-event', 'val', 'invalid-tb') mock_finish.assert_called_once_with(self.context, expected_packed_values) self.compare_obj(event, fake_event) @mock.patch.object(traceback, 'format_tb') @mock.patch.object(db, 'action_event_finish') def test_event_finish_with_failure_no_result(self, mock_finish, mock_tb): mock_tb.return_value = 'fake-tb' timeutils.set_time_override(override_time=NOW) expected_packed_values = compute_utils.pack_action_event_finish( self.context, 'fake-uuid', 'fake-event', 'val', 'invalid-tb') mock_finish.return_value = fake_event test_class = instance_action.InstanceActionEvent event = test_class.event_finish_with_failure( self.context, 'fake-uuid', 'fake-event', 'val', 'invalid-tb', want_result=False) mock_finish.assert_called_once_with(self.context, expected_packed_values) self.assertIsNone(event) @mock.patch.object(db, 'action_events_get') def test_get_by_action(self, mock_get): fake_events = [dict(fake_event, id=1234), dict(fake_event, id=5678)] mock_get.return_value = fake_events obj_list = instance_action.InstanceActionEventList.get_by_action( self.context, 'fake-action-id') for index, event in enumerate(obj_list): self.compare_obj(event, fake_events[index]) mock_get.assert_called_once_with(self.context, 'fake-action-id') nova-2014.1/nova/tests/objects/test_aggregate.py0000664000175400017540000001357512323721477023022 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova import exception from nova.objects import aggregate from nova.openstack.common import timeutils from nova.tests.objects import test_objects NOW = timeutils.utcnow().replace(microsecond=0) fake_aggregate = { 'created_at': NOW, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'name': 'fake-aggregate', 'hosts': ['foo', 'bar'], 'metadetails': {'this': 'that'}, } SUBS = {'metadata': 'metadetails'} class _TestAggregateObject(object): def test_get_by_id(self): self.mox.StubOutWithMock(db, 'aggregate_get') db.aggregate_get(self.context, 123).AndReturn(fake_aggregate) self.mox.ReplayAll() agg = aggregate.Aggregate.get_by_id(self.context, 123) self.compare_obj(agg, fake_aggregate, subs=SUBS) def test_create(self): self.mox.StubOutWithMock(db, 'aggregate_create') db.aggregate_create(self.context, {'name': 'foo'}, metadata={'one': 'two'}).AndReturn(fake_aggregate) self.mox.ReplayAll() agg = aggregate.Aggregate() agg.name = 'foo' agg.metadata = {'one': 'two'} agg.create(self.context) self.compare_obj(agg, fake_aggregate, subs=SUBS) def test_recreate_fails(self): self.mox.StubOutWithMock(db, 'aggregate_create') db.aggregate_create(self.context, {'name': 'foo'}, metadata={'one': 'two'}).AndReturn(fake_aggregate) self.mox.ReplayAll() agg = aggregate.Aggregate() agg.name = 'foo' agg.metadata = {'one': 'two'} agg.create(self.context) self.assertRaises(exception.ObjectActionError, agg.create, self.context) def test_save(self): self.mox.StubOutWithMock(db, 'aggregate_update') db.aggregate_update(self.context, 123, {'name': 'baz'}).AndReturn( fake_aggregate) self.mox.ReplayAll() agg = aggregate.Aggregate() agg.id = 123 agg.name = 'baz' agg.save(self.context) self.compare_obj(agg, fake_aggregate, subs=SUBS) def test_save_and_create_no_hosts(self): agg = aggregate.Aggregate() agg.id = 123 agg.hosts = ['foo', 'bar'] self.assertRaises(exception.ObjectActionError, agg.create, self.context) self.assertRaises(exception.ObjectActionError, agg.save, self.context) def test_update_metadata(self): self.mox.StubOutWithMock(db, 'aggregate_metadata_delete') self.mox.StubOutWithMock(db, 'aggregate_metadata_add') db.aggregate_metadata_delete(self.context, 123, 'todelete') db.aggregate_metadata_add(self.context, 123, {'toadd': 'myval'}) self.mox.ReplayAll() agg = aggregate.Aggregate() agg._context = self.context agg.id = 123 agg.metadata = {'foo': 'bar'} agg.obj_reset_changes() agg.update_metadata({'todelete': None, 'toadd': 'myval'}) self.assertEqual({'foo': 'bar', 'toadd': 'myval'}, agg.metadata) def test_destroy(self): self.mox.StubOutWithMock(db, 'aggregate_delete') db.aggregate_delete(self.context, 123) self.mox.ReplayAll() agg = aggregate.Aggregate() agg.id = 123 agg.destroy(self.context) def test_add_host(self): self.mox.StubOutWithMock(db, 'aggregate_host_add') db.aggregate_host_add(self.context, 123, 'bar' ).AndReturn({'host': 'bar'}) self.mox.ReplayAll() agg = aggregate.Aggregate() agg.id = 123 agg.hosts = ['foo'] agg._context = self.context agg.add_host('bar') self.assertEqual(agg.hosts, ['foo', 'bar']) def test_delete_host(self): self.mox.StubOutWithMock(db, 'aggregate_host_delete') db.aggregate_host_delete(self.context, 123, 'foo') self.mox.ReplayAll() agg = aggregate.Aggregate() agg.id = 123 agg.hosts = ['foo', 'bar'] agg._context = self.context agg.delete_host('foo') self.assertEqual(agg.hosts, ['bar']) def test_availability_zone(self): agg = aggregate.Aggregate() agg.metadata = {'availability_zone': 'foo'} self.assertEqual('foo', agg.availability_zone) def test_get_all(self): self.mox.StubOutWithMock(db, 'aggregate_get_all') db.aggregate_get_all(self.context).AndReturn([fake_aggregate]) self.mox.ReplayAll() aggs = aggregate.AggregateList.get_all(self.context) self.assertEqual(1, len(aggs)) self.compare_obj(aggs[0], fake_aggregate, subs=SUBS) def test_by_host(self): self.mox.StubOutWithMock(db, 'aggregate_get_by_host') db.aggregate_get_by_host(self.context, 'fake-host', key=None, ).AndReturn([fake_aggregate]) self.mox.ReplayAll() aggs = aggregate.AggregateList.get_by_host(self.context, 'fake-host') self.assertEqual(1, len(aggs)) self.compare_obj(aggs[0], fake_aggregate, subs=SUBS) class TestAggregateObject(test_objects._LocalTest, _TestAggregateObject): pass class TestRemoteAggregateObject(test_objects._RemoteTest, _TestAggregateObject): pass nova-2014.1/nova/tests/objects/test_security_group_rule.py0000664000175400017540000000475212323721477025203 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import mock from nova import db from nova.objects import security_group from nova.objects import security_group_rule from nova.tests.objects import test_objects from nova.tests.objects import test_security_group fake_rule = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 1, 'protocol': 'tcp', 'from_port': 22, 'to_port': 22, 'cidr': '0.0.0.0/0', } class _TestSecurityGroupRuleObject(object): def test_get_by_id(self): with mock.patch.object(db, 'security_group_rule_get') as sgrg: sgrg.return_value = fake_rule rule = security_group_rule.SecurityGroupRule.get_by_id( self.context, 1) for field in fake_rule: if field == 'cidr': self.assertEqual(fake_rule[field], str(rule[field])) else: self.assertEqual(fake_rule[field], rule[field]) sgrg.assert_called_with(self.context, 1) def test_get_by_security_group(self): secgroup = security_group.SecurityGroup() secgroup.id = 123 rule = dict(fake_rule) rule['grantee_group'] = dict(test_security_group.fake_secgroup, id=123) stupid_method = 'security_group_rule_get_by_security_group' with mock.patch.object(db, stupid_method) as sgrgbsg: sgrgbsg.return_value = [rule] rules = (security_group_rule.SecurityGroupRuleList. get_by_security_group(self.context, secgroup)) self.assertEqual(1, len(rules)) self.assertEqual(123, rules[0].grantee_group.id) class TestSecurityGroupRuleObject(test_objects._LocalTest, _TestSecurityGroupRuleObject): pass class TestSecurityGroupRuleObjectRemote(test_objects._RemoteTest, _TestSecurityGroupRuleObject): pass nova-2014.1/nova/tests/objects/test_fields.py0000664000175400017540000002775512323721477022347 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import datetime import iso8601 import netaddr from nova.network import model as network_model from nova.objects import base as obj_base from nova.objects import fields from nova.openstack.common import timeutils from nova import test class FakeFieldType(fields.FieldType): def coerce(self, obj, attr, value): return '*%s*' % value def to_primitive(self, obj, attr, value): return '!%s!' % value def from_primitive(self, obj, attr, value): return value[1:-1] class TestField(test.NoDBTestCase): def setUp(self): super(TestField, self).setUp() self.field = fields.Field(FakeFieldType()) self.coerce_good_values = [('foo', '*foo*')] self.coerce_bad_values = [] self.to_primitive_values = [('foo', '!foo!')] self.from_primitive_values = [('!foo!', 'foo')] def test_coerce_good_values(self): for in_val, out_val in self.coerce_good_values: self.assertEqual(out_val, self.field.coerce('obj', 'attr', in_val)) def test_coerce_bad_values(self): for in_val in self.coerce_bad_values: self.assertRaises((TypeError, ValueError), self.field.coerce, 'obj', 'attr', in_val) def test_to_primitive(self): for in_val, prim_val in self.to_primitive_values: self.assertEqual(prim_val, self.field.to_primitive('obj', 'attr', in_val)) def test_from_primitive(self): class ObjectLikeThing: _context = 'context' for prim_val, out_val in self.from_primitive_values: self.assertEqual(out_val, self.field.from_primitive( ObjectLikeThing, 'attr', prim_val)) class TestString(TestField): def setUp(self): super(TestField, self).setUp() self.field = fields.StringField() self.coerce_good_values = [('foo', 'foo'), (1, '1'), (1L, '1'), (True, 'True')] self.coerce_bad_values = [None] self.to_primitive_values = self.coerce_good_values[0:1] self.from_primitive_values = self.coerce_good_values[0:1] class TestInteger(TestField): def setUp(self): super(TestField, self).setUp() self.field = fields.IntegerField() self.coerce_good_values = [(1, 1), ('1', 1)] self.coerce_bad_values = ['foo', None] self.to_primitive_values = self.coerce_good_values[0:1] self.from_primitive_values = self.coerce_good_values[0:1] class TestFloat(TestField): def setUp(self): super(TestFloat, self).setUp() self.field = fields.FloatField() self.coerce_good_values = [(1.1, 1.1), ('1.1', 1.1)] self.coerce_bad_values = ['foo', None] self.to_primitive_values = self.coerce_good_values[0:1] self.from_primitive_values = self.coerce_good_values[0:1] class TestBoolean(TestField): def setUp(self): super(TestField, self).setUp() self.field = fields.BooleanField() self.coerce_good_values = [(True, True), (False, False), (1, True), ('foo', True), (0, False), ('', False)] self.coerce_bad_values = [] self.to_primitive_values = self.coerce_good_values[0:2] self.from_primitive_values = self.coerce_good_values[0:2] class TestDateTime(TestField): def setUp(self): super(TestDateTime, self).setUp() self.dt = datetime.datetime(1955, 11, 5, tzinfo=iso8601.iso8601.Utc()) self.field = fields.DateTimeField() self.coerce_good_values = [(self.dt, self.dt), (timeutils.isotime(self.dt), self.dt)] self.coerce_bad_values = [1, 'foo'] self.to_primitive_values = [(self.dt, timeutils.isotime(self.dt))] self.from_primitive_values = [(timeutils.isotime(self.dt), self.dt)] class TestIPAddress(TestField): def setUp(self): super(TestIPAddress, self).setUp() self.field = fields.IPAddressField() self.coerce_good_values = [('1.2.3.4', netaddr.IPAddress('1.2.3.4')), ('::1', netaddr.IPAddress('::1')), (netaddr.IPAddress('::1'), netaddr.IPAddress('::1'))] self.coerce_bad_values = ['1-2', 'foo'] self.to_primitive_values = [(netaddr.IPAddress('1.2.3.4'), '1.2.3.4'), (netaddr.IPAddress('::1'), '::1')] self.from_primitive_values = [('1.2.3.4', netaddr.IPAddress('1.2.3.4')), ('::1', netaddr.IPAddress('::1'))] class TestIPAddressV4(TestField): def setUp(self): super(TestIPAddressV4, self).setUp() self.field = fields.IPV4AddressField() self.coerce_good_values = [('1.2.3.4', netaddr.IPAddress('1.2.3.4')), (netaddr.IPAddress('1.2.3.4'), netaddr.IPAddress('1.2.3.4'))] self.coerce_bad_values = ['1-2', 'foo', '::1'] self.to_primitive_values = [(netaddr.IPAddress('1.2.3.4'), '1.2.3.4')] self.from_primitive_values = [('1.2.3.4', netaddr.IPAddress('1.2.3.4'))] class TestIPAddressV6(TestField): def setUp(self): super(TestIPAddressV6, self).setUp() self.field = fields.IPV6AddressField() self.coerce_good_values = [('::1', netaddr.IPAddress('::1')), (netaddr.IPAddress('::1'), netaddr.IPAddress('::1'))] self.coerce_bad_values = ['1.2', 'foo', '1.2.3.4'] self.to_primitive_values = [(netaddr.IPAddress('::1'), '::1')] self.from_primitive_values = [('::1', netaddr.IPAddress('::1'))] class TestDict(TestField): def setUp(self): super(TestDict, self).setUp() self.field = fields.Field(fields.Dict(FakeFieldType())) self.coerce_good_values = [({'foo': 'bar'}, {'foo': '*bar*'}), ({'foo': 1}, {'foo': '*1*'})] self.coerce_bad_values = [{1: 'bar'}, 'foo'] self.to_primitive_values = [({'foo': 'bar'}, {'foo': '!bar!'})] self.from_primitive_values = [({'foo': '!bar!'}, {'foo': 'bar'})] class TestDictOfStrings(TestField): def setUp(self): super(TestDictOfStrings, self).setUp() self.field = fields.DictOfStringsField() self.coerce_good_values = [({'foo': 'bar'}, {'foo': 'bar'}), ({'foo': 1}, {'foo': '1'})] self.coerce_bad_values = [{1: 'bar'}, {'foo': None}, 'foo'] self.to_primitive_values = [({'foo': 'bar'}, {'foo': 'bar'})] self.from_primitive_values = [({'foo': 'bar'}, {'foo': 'bar'})] class TestDictOfStringsNone(TestField): def setUp(self): super(TestDictOfStringsNone, self).setUp() self.field = fields.DictOfNullableStringsField() self.coerce_good_values = [({'foo': 'bar'}, {'foo': 'bar'}), ({'foo': 1}, {'foo': '1'}), ({'foo': None}, {'foo': None})] self.coerce_bad_values = [{1: 'bar'}, 'foo'] self.to_primitive_values = [({'foo': 'bar'}, {'foo': 'bar'})] self.from_primitive_values = [({'foo': 'bar'}, {'foo': 'bar'})] class TestList(TestField): def setUp(self): super(TestList, self).setUp() self.field = fields.Field(fields.List(FakeFieldType())) self.coerce_good_values = [(['foo', 'bar'], ['*foo*', '*bar*'])] self.coerce_bad_values = ['foo'] self.to_primitive_values = [(['foo'], ['!foo!'])] self.from_primitive_values = [(['!foo!'], ['foo'])] class TestListOfStrings(TestField): def setUp(self): super(TestListOfStrings, self).setUp() self.field = fields.ListOfStringsField() self.coerce_good_values = [(['foo', 'bar'], ['foo', 'bar'])] self.coerce_bad_values = ['foo'] self.to_primitive_values = [(['foo'], ['foo'])] self.from_primitive_values = [(['foo'], ['foo'])] class TestObject(TestField): def setUp(self): class TestableObject(obj_base.NovaObject): def __eq__(self, value): # NOTE(danms): Be rather lax about this equality thing to # satisfy the assertEqual() in test_from_primitive(). We # just want to make sure the right type of object is re-created return value.__class__.__name__ == TestableObject.__name__ class OtherTestableObject(obj_base.NovaObject): pass test_inst = TestableObject() super(TestObject, self).setUp() self.field = fields.Field(fields.Object('TestableObject')) self.coerce_good_values = [(test_inst, test_inst)] self.coerce_bad_values = [OtherTestableObject(), 1, 'foo'] self.to_primitive_values = [(test_inst, test_inst.obj_to_primitive())] self.from_primitive_values = [(test_inst.obj_to_primitive(), test_inst)] class TestNetworkModel(TestField): def setUp(self): super(TestNetworkModel, self).setUp() model = network_model.NetworkInfo() self.field = fields.Field(fields.NetworkModel()) self.coerce_good_values = [(model, model), (model.json(), model)] self.coerce_bad_values = [[], 'foo'] self.to_primitive_values = [(model, model.json())] self.from_primitive_values = [(model.json(), model)] class TestIPNetwork(TestField): def setUp(self): super(TestIPNetwork, self).setUp() self.field = fields.Field(fields.IPNetwork()) good = ['192.168.1.0/24', '0.0.0.0/0', '::1/128', '::1/64', '::1/0'] self.coerce_good_values = [(x, netaddr.IPNetwork(x)) for x in good] self.coerce_bad_values = ['192.168.0.0/f', '192.168.0.0/foo', '::1/129', '192.168.0.0/-1'] self.to_primitive_values = [(netaddr.IPNetwork(x), x) for x in good] self.from_primitive_values = [(x, netaddr.IPNetwork(x)) for x in good] class TestIPV4Network(TestField): def setUp(self): super(TestIPV4Network, self).setUp() self.field = fields.Field(fields.IPV4Network()) good = ['192.168.1.0/24', '0.0.0.0/0'] self.coerce_good_values = [(x, netaddr.IPNetwork(x)) for x in good] self.coerce_bad_values = ['192.168.0.0/f', '192.168.0.0/foo', '::1/129', '192.168.0.0/-1'] self.to_primitive_values = [(netaddr.IPNetwork(x), x) for x in good] self.from_primitive_values = [(x, netaddr.IPNetwork(x)) for x in good] class TestIPV6Network(TestField): def setUp(self): super(TestIPV6Network, self).setUp() self.field = fields.Field(fields.IPV6Network()) good = ['::1/128', '::1/64', '::1/0'] self.coerce_good_values = [(x, netaddr.IPNetwork(x)) for x in good] self.coerce_bad_values = ['192.168.0.0/f', '192.168.0.0/foo', '::1/129', '192.168.0.0/-1'] self.to_primitive_values = [(netaddr.IPNetwork(x), x) for x in good] self.from_primitive_values = [(x, netaddr.IPNetwork(x)) for x in good] nova-2014.1/nova/tests/objects/test_network.py0000664000175400017540000002106512323721477022556 0ustar jenkinsjenkins00000000000000# Copyright 2014 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. import mock import netaddr from nova.objects import network as network_obj from nova.tests.objects import test_objects fake_network = { 'deleted': False, 'created_at': None, 'updated_at': None, 'deleted_at': None, 'id': 1, 'label': 'Fake Network', 'injected': False, 'cidr': '192.168.1.0/24', 'cidr_v6': '1234::/64', 'multi_host': False, 'netmask': '255.255.255.0', 'gateway': '192.168.1.1', 'broadcast': '192.168.1.255', 'netmask_v6': 64, 'gateway_v6': '1234::1', 'bridge': 'br100', 'bridge_interface': 'eth0', 'dns1': '8.8.8.8', 'dns2': '8.8.4.4', 'vlan': None, 'vpn_public_address': None, 'vpn_public_port': None, 'vpn_private_address': None, 'dhcp_start': '192.168.1.10', 'rxtx_base': None, 'project_id': None, 'priority': None, 'host': None, 'uuid': 'fake-uuid', } class _TestNetworkObject(object): def _compare(self, obj, db_obj): for field in obj.fields: db_val = db_obj[field] obj_val = obj[field] if isinstance(obj_val, netaddr.IPAddress): obj_val = str(obj_val) if isinstance(obj_val, netaddr.IPNetwork): obj_val = str(obj_val) if field == 'netmask_v6': db_val = str(netaddr.IPNetwork('1::/%i' % db_val).netmask) self.assertEqual(db_val, obj_val) @mock.patch('nova.db.network_get') def test_get_by_id(self, get): get.return_value = fake_network network = network_obj.Network.get_by_id(self.context, 'foo') self._compare(network, fake_network) get.assert_called_once_with(self.context, 'foo', project_only='allow_none') @mock.patch('nova.db.network_get_by_uuid') def test_get_by_uuid(self, get): get.return_value = fake_network network = network_obj.Network.get_by_uuid(self.context, 'foo') self._compare(network, fake_network) get.assert_called_once_with(self.context, 'foo') @mock.patch('nova.db.network_get_by_cidr') def test_get_by_cidr(self, get): get.return_value = fake_network network = network_obj.Network.get_by_cidr(self.context, '192.168.1.0/24') self._compare(network, fake_network) get.assert_called_once_with(self.context, '192.168.1.0/24') @mock.patch('nova.db.network_update') @mock.patch('nova.db.network_set_host') def test_save(self, set_host, update): result = dict(fake_network, injected=True) network = network_obj.Network._from_db_object(self.context, network_obj.Network(), fake_network) network.obj_reset_changes() network.save() network.label = 'bar' update.return_value = result network.save() update.assert_called_once_with(self.context, network.id, {'label': 'bar'}) self.assertFalse(set_host.called) self._compare(network, result) @mock.patch('nova.db.network_update') @mock.patch('nova.db.network_set_host') @mock.patch('nova.db.network_get') def test_save_with_host(self, get, set_host, update): result = dict(fake_network, injected=True) network = network_obj.Network._from_db_object(self.context, network_obj.Network(), fake_network) network.obj_reset_changes() network.host = 'foo' get.return_value = result network.save() set_host.assert_called_once_with(self.context, network.id, 'foo') self.assertFalse(update.called) self._compare(network, result) @mock.patch('nova.db.network_update') @mock.patch('nova.db.network_set_host') def test_save_with_host_and_other(self, set_host, update): result = dict(fake_network, injected=True) network = network_obj.Network._from_db_object(self.context, network_obj.Network(), fake_network) network.obj_reset_changes() network.host = 'foo' network.label = 'bar' update.return_value = result network.save() set_host.assert_called_once_with(self.context, network.id, 'foo') update.assert_called_once_with(self.context, network.id, {'label': 'bar'}) self._compare(network, result) @mock.patch('nova.db.network_associate') def test_associate(self, associate): network_obj.Network.associate(self.context, 'project', network_id=123) associate.assert_called_once_with(self.context, 'project', network_id=123, force=False) @mock.patch('nova.db.network_disassociate') def test_disassociate(self, disassociate): network_obj.Network.disassociate(self.context, 123, host=True, project=True) disassociate.assert_called_once_with(self.context, 123, True, True) @mock.patch('nova.db.network_create_safe') def test_create(self, create): create.return_value = fake_network network = network_obj.Network(context=self.context, label='foo') network.create() create.assert_called_once_with(self.context, {'label': 'foo'}) self._compare(network, fake_network) @mock.patch('nova.db.network_delete_safe') def test_destroy(self, delete): network = network_obj.Network(context=self.context, id=123) network.destroy() delete.assert_called_once_with(self.context, 123) self.assertTrue(network.deleted) self.assertNotIn('deleted', network.obj_what_changed()) @mock.patch('nova.db.network_get_all') def test_get_all(self, get_all): get_all.return_value = [fake_network] networks = network_obj.NetworkList.get_all(self.context) self.assertEqual(1, len(networks)) get_all.assert_called_once_with(self.context, 'allow_none') self._compare(networks[0], fake_network) @mock.patch('nova.db.network_get_all_by_uuids') def test_get_all_by_uuids(self, get_all): get_all.return_value = [fake_network] networks = network_obj.NetworkList.get_by_uuids(self.context, ['foo']) self.assertEqual(1, len(networks)) get_all.assert_called_once_with(self.context, ['foo'], 'allow_none') self._compare(networks[0], fake_network) @mock.patch('nova.db.network_get_all_by_host') def test_get_all_by_host(self, get_all): get_all.return_value = [fake_network] networks = network_obj.NetworkList.get_by_host(self.context, 'host') self.assertEqual(1, len(networks)) get_all.assert_called_once_with(self.context, 'host') self._compare(networks[0], fake_network) @mock.patch('nova.db.network_in_use_on_host') def test_in_use_on_host(self, in_use): in_use.return_value = True self.assertTrue(network_obj.Network.in_use_on_host(self.context, 123, 'foo')) in_use.assert_called_once_with(self.context, 123, 'foo') @mock.patch('nova.db.project_get_networks') def test_get_all_by_project(self, get_nets): get_nets.return_value = [fake_network] networks = network_obj.NetworkList.get_by_project(self.context, 123) self.assertEqual(1, len(networks)) get_nets.assert_called_once_with(self.context, 123, associate=True) self._compare(networks[0], fake_network) class TestNetworkObject(test_objects._LocalTest, _TestNetworkObject): pass class TestRemoteNetworkObject(test_objects._RemoteTest, _TestNetworkObject): pass nova-2014.1/nova/tests/objects/test_compute_node.py0000664000175400017540000001410112323721510023523 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova import exception from nova.objects import compute_node from nova.objects import service from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova.tests.objects import test_objects NOW = timeutils.utcnow().replace(microsecond=0) fake_stats = {'num_foo': '10'} fake_stats_db_format = jsonutils.dumps(fake_stats) fake_compute_node = { 'created_at': NOW, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'service_id': 456, 'vcpus': 4, 'memory_mb': 4096, 'local_gb': 1024, 'vcpus_used': 2, 'memory_mb_used': 2048, 'local_gb_used': 512, 'hypervisor_type': 'Hyper-Dan-VM-ware', 'hypervisor_version': 1001, 'hypervisor_hostname': 'vm.danplanet.com', 'free_ram_mb': 1024, 'free_disk_gb': 256, 'current_workload': 100, 'running_vms': 2013, 'cpu_info': 'Schmintel i786', 'disk_available_least': 256, 'metrics': '', 'stats': fake_stats_db_format, } class _TestComputeNodeObject(object): def test_get_by_id(self): self.mox.StubOutWithMock(db, 'compute_node_get') db.compute_node_get(self.context, 123).AndReturn(fake_compute_node) self.mox.ReplayAll() compute = compute_node.ComputeNode.get_by_id(self.context, 123) self.compare_obj(compute, fake_compute_node, comparators={'stats': self.json_comparator}) def test_get_by_service_id(self): self.mox.StubOutWithMock(db, 'compute_node_get_by_service_id') db.compute_node_get_by_service_id(self.context, 456).AndReturn( fake_compute_node) self.mox.ReplayAll() compute = compute_node.ComputeNode.get_by_service_id(self.context, 456) self.compare_obj(compute, fake_compute_node, comparators={'stats': self.json_comparator}) def test_create(self): self.mox.StubOutWithMock(db, 'compute_node_create') db.compute_node_create( self.context, { 'service_id': 456, 'stats': fake_stats_db_format }).AndReturn(fake_compute_node) self.mox.ReplayAll() compute = compute_node.ComputeNode() compute.service_id = 456 compute.stats = fake_stats compute.create(self.context) self.compare_obj(compute, fake_compute_node, comparators={'stats': self.json_comparator}) def test_recreate_fails(self): self.mox.StubOutWithMock(db, 'compute_node_create') db.compute_node_create(self.context, {'service_id': 456}).AndReturn( fake_compute_node) self.mox.ReplayAll() compute = compute_node.ComputeNode() compute.service_id = 456 compute.create(self.context) self.assertRaises(exception.ObjectActionError, compute.create, self.context) def test_save(self): self.mox.StubOutWithMock(db, 'compute_node_update') db.compute_node_update( self.context, 123, { 'vcpus_used': 3, 'stats': fake_stats_db_format }).AndReturn(fake_compute_node) self.mox.ReplayAll() compute = compute_node.ComputeNode() compute.id = 123 compute.vcpus_used = 3 compute.stats = fake_stats compute.save(self.context) self.compare_obj(compute, fake_compute_node, comparators={'stats': self.json_comparator}) def test_destroy(self): self.mox.StubOutWithMock(db, 'compute_node_delete') db.compute_node_delete(self.context, 123) self.mox.ReplayAll() compute = compute_node.ComputeNode() compute.id = 123 compute.destroy(self.context) def test_service(self): self.mox.StubOutWithMock(service.Service, 'get_by_id') service.Service.get_by_id(self.context, 456).AndReturn('my-service') self.mox.ReplayAll() compute = compute_node.ComputeNode() compute._context = self.context compute.id = 123 compute.service_id = 456 self.assertEqual('my-service', compute.service) # Make sure it doesn't call Service.get_by_id() again self.assertEqual('my-service', compute.service) def test_get_all(self): self.mox.StubOutWithMock(db, 'compute_node_get_all') db.compute_node_get_all(self.context).AndReturn([fake_compute_node]) self.mox.ReplayAll() computes = compute_node.ComputeNodeList.get_all(self.context) self.assertEqual(1, len(computes)) self.compare_obj(computes[0], fake_compute_node, comparators={'stats': self.json_comparator}) def test_get_by_hypervisor(self): self.mox.StubOutWithMock(db, 'compute_node_search_by_hypervisor') db.compute_node_search_by_hypervisor(self.context, 'hyper').AndReturn( [fake_compute_node]) self.mox.ReplayAll() computes = compute_node.ComputeNodeList.get_by_hypervisor(self.context, 'hyper') self.assertEqual(1, len(computes)) self.compare_obj(computes[0], fake_compute_node, comparators={'stats': self.json_comparator}) class TestComputeNodeObject(test_objects._LocalTest, _TestComputeNodeObject): pass class TestRemoteComputeNodeObject(test_objects._RemoteTest, _TestComputeNodeObject): pass nova-2014.1/nova/tests/objects/test_service.py0000664000175400017540000001726312323721477022532 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova import exception from nova.objects import service from nova.openstack.common import timeutils from nova.tests.objects import test_compute_node from nova.tests.objects import test_objects NOW = timeutils.utcnow().replace(microsecond=0) fake_service = { 'created_at': NOW, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'host': 'fake-host', 'binary': 'fake-service', 'topic': 'fake-service-topic', 'report_count': 1, 'disabled': False, 'disabled_reason': None, } OPTIONAL = ['availability_zone', 'compute_node'] class _TestServiceObject(object): def _test_query(self, db_method, obj_method, *args, **kwargs): self.mox.StubOutWithMock(db, db_method) getattr(db, db_method)(self.context, *args, **kwargs).AndReturn( fake_service) self.mox.ReplayAll() obj = getattr(service.Service, obj_method)(self.context, *args, **kwargs) self.compare_obj(obj, fake_service, allow_missing=OPTIONAL) def test_get_by_id(self): self._test_query('service_get', 'get_by_id', 123) def test_get_by_host_and_topic(self): self._test_query('service_get_by_host_and_topic', 'get_by_host_and_topic', 'fake-host', 'fake-topic') def test_get_by_compute_host(self): self._test_query('service_get_by_compute_host', 'get_by_compute_host', 'fake-host') def test_get_by_args(self): self._test_query('service_get_by_args', 'get_by_args', 'fake-host', 'fake-service') def test_with_compute_node(self): self.mox.StubOutWithMock(db, 'service_get') self.mox.StubOutWithMock(db, 'compute_node_get_by_service_id') _fake_service = dict( fake_service, compute_node=[test_compute_node.fake_compute_node]) db.service_get(self.context, 123).AndReturn(_fake_service) self.mox.ReplayAll() service_obj = service.Service.get_by_id(self.context, 123) self.assertTrue(service_obj.obj_attr_is_set('compute_node')) self.compare_obj(service_obj.compute_node, test_compute_node.fake_compute_node, allow_missing=OPTIONAL, comparators={'stats': self.json_comparator}) def test_create(self): self.mox.StubOutWithMock(db, 'service_create') db.service_create(self.context, {'host': 'fake-host'}).AndReturn( fake_service) self.mox.ReplayAll() service_obj = service.Service() service_obj.host = 'fake-host' service_obj.create(self.context) self.assertEqual(fake_service['id'], service_obj.id) def test_recreate_fails(self): self.mox.StubOutWithMock(db, 'service_create') db.service_create(self.context, {'host': 'fake-host'}).AndReturn( fake_service) self.mox.ReplayAll() service_obj = service.Service() service_obj.host = 'fake-host' service_obj.create(self.context) self.assertRaises(exception.ObjectActionError, service_obj.create, self.context) def test_save(self): self.mox.StubOutWithMock(db, 'service_update') db.service_update(self.context, 123, {'host': 'fake-host'}).AndReturn( fake_service) self.mox.ReplayAll() service_obj = service.Service() service_obj.id = 123 service_obj.host = 'fake-host' service_obj.save(self.context) def _test_destroy(self): self.mox.StubOutWithMock(db, 'service_destroy') db.service_destroy(self.context, 123) self.mox.ReplayAll() service_obj = service.Service() service_obj.id = 123 service_obj.destroy(self.context) def test_destroy(self): # The test harness needs db.service_destroy to work, # so avoid leaving it broken here after we're done orig_service_destroy = db.service_destroy try: self._test_destroy() finally: db.service_destroy = orig_service_destroy def test_get_by_topic(self): self.mox.StubOutWithMock(db, 'service_get_all_by_topic') db.service_get_all_by_topic(self.context, 'fake-topic').AndReturn( [fake_service]) self.mox.ReplayAll() services = service.ServiceList.get_by_topic(self.context, 'fake-topic') self.assertEqual(1, len(services)) self.compare_obj(services[0], fake_service, allow_missing=OPTIONAL) def test_get_by_host(self): self.mox.StubOutWithMock(db, 'service_get_all_by_host') db.service_get_all_by_host(self.context, 'fake-host').AndReturn( [fake_service]) self.mox.ReplayAll() services = service.ServiceList.get_by_host(self.context, 'fake-host') self.assertEqual(1, len(services)) self.compare_obj(services[0], fake_service, allow_missing=OPTIONAL) def test_get_all(self): self.mox.StubOutWithMock(db, 'service_get_all') db.service_get_all(self.context, disabled=False).AndReturn( [fake_service]) self.mox.ReplayAll() services = service.ServiceList.get_all(self.context, disabled=False) self.assertEqual(1, len(services)) self.compare_obj(services[0], fake_service, allow_missing=OPTIONAL) def test_get_all_with_az(self): self.mox.StubOutWithMock(db, 'service_get_all') self.mox.StubOutWithMock(db, 'aggregate_host_get_by_metadata_key') db.service_get_all(self.context, disabled=None).AndReturn( [dict(fake_service, topic='compute')]) db.aggregate_host_get_by_metadata_key( self.context, key='availability_zone').AndReturn( {fake_service['host']: ['test-az']}) self.mox.ReplayAll() services = service.ServiceList.get_all(self.context, set_zones=True) self.assertEqual(1, len(services)) self.assertEqual('test-az', services[0].availability_zone) def test_compute_node(self): self.mox.StubOutWithMock(db, 'compute_node_get_by_service_id') db.compute_node_get_by_service_id(self.context, 123).AndReturn( test_compute_node.fake_compute_node) self.mox.ReplayAll() service_obj = service.Service() service_obj._context = self.context service_obj.id = 123 self.compare_obj(service_obj.compute_node, test_compute_node.fake_compute_node, allow_missing=OPTIONAL, comparators={'stats': self.json_comparator}) # Make sure it doesn't re-fetch this service_obj.compute_node def test_load_when_orphaned(self): service_obj = service.Service() service_obj.id = 123 self.assertRaises(exception.OrphanedObjectError, getattr, service_obj, 'compute_node') class TestServiceObject(test_objects._LocalTest, _TestServiceObject): pass class TestRemoteServiceObject(test_objects._RemoteTest, _TestServiceObject): pass nova-2014.1/nova/tests/objects/test_migration.py0000664000175400017540000001632212323721477023056 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import context from nova import db from nova import exception from nova.objects import migration from nova.openstack.common import timeutils from nova.tests import fake_instance from nova.tests.objects import test_objects NOW = timeutils.utcnow().replace(microsecond=0) def fake_db_migration(**updates): db_instance = { 'created_at': NOW, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'source_compute': 'compute-source', 'dest_compute': 'compute-dest', 'source_node': 'node-source', 'dest_node': 'node-dest', 'dest_host': 'host-dest', 'old_instance_type_id': 42, 'new_instance_type_id': 84, 'instance_uuid': 'fake-uuid', 'status': 'migrating', } if updates: db_instance.update(updates) return db_instance class _TestMigrationObject(object): def test_get_by_id(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() self.mox.StubOutWithMock(db, 'migration_get') db.migration_get(ctxt, fake_migration['id']).AndReturn(fake_migration) self.mox.ReplayAll() mig = migration.Migration.get_by_id(ctxt, fake_migration['id']) self.compare_obj(mig, fake_migration) def test_get_by_instance_and_status(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() self.mox.StubOutWithMock(db, 'migration_get_by_instance_and_status') db.migration_get_by_instance_and_status(ctxt, fake_migration['id'], 'migrating' ).AndReturn(fake_migration) self.mox.ReplayAll() mig = migration.Migration.get_by_instance_and_status( ctxt, fake_migration['id'], 'migrating') self.compare_obj(mig, fake_migration) def test_create(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() self.mox.StubOutWithMock(db, 'migration_create') db.migration_create(ctxt, {'source_compute': 'foo'}).AndReturn( fake_migration) self.mox.ReplayAll() mig = migration.Migration() mig.source_compute = 'foo' mig.create(ctxt) self.assertEqual(fake_migration['dest_compute'], mig.dest_compute) def test_recreate_fails(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() self.mox.StubOutWithMock(db, 'migration_create') db.migration_create(ctxt, {'source_compute': 'foo'}).AndReturn( fake_migration) self.mox.ReplayAll() mig = migration.Migration() mig.source_compute = 'foo' mig.create(ctxt) self.assertRaises(exception.ObjectActionError, mig.create, self.context) def test_save(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() self.mox.StubOutWithMock(db, 'migration_update') db.migration_update(ctxt, 123, {'source_compute': 'foo'} ).AndReturn(fake_migration) self.mox.ReplayAll() mig = migration.Migration() mig.id = 123 mig.source_compute = 'foo' mig.save(ctxt) self.assertEqual(fake_migration['dest_compute'], mig.dest_compute) def test_instance(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() fake_inst = fake_instance.fake_db_instance() self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(ctxt, fake_migration['instance_uuid'], columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) mig = migration.Migration._from_db_object(ctxt, migration.Migration(), fake_migration) mig._context = ctxt self.mox.ReplayAll() self.assertEqual(mig.instance.host, fake_inst['host']) def test_get_unconfirmed_by_dest_compute(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() db_migrations = [fake_migration, dict(fake_migration, id=456)] self.mox.StubOutWithMock( db, 'migration_get_unconfirmed_by_dest_compute') db.migration_get_unconfirmed_by_dest_compute( ctxt, 'window', 'foo', use_slave=False).AndReturn(db_migrations) self.mox.ReplayAll() migrations = ( migration.MigrationList.get_unconfirmed_by_dest_compute( ctxt, 'window', 'foo', use_slave=False)) self.assertEqual(2, len(migrations)) for index, db_migration in enumerate(db_migrations): self.compare_obj(migrations[index], db_migration) def test_get_in_progress_by_host_and_node(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() db_migrations = [fake_migration, dict(fake_migration, id=456)] self.mox.StubOutWithMock( db, 'migration_get_in_progress_by_host_and_node') db.migration_get_in_progress_by_host_and_node( ctxt, 'host', 'node').AndReturn(db_migrations) self.mox.ReplayAll() migrations = ( migration.MigrationList.get_in_progress_by_host_and_node( ctxt, 'host', 'node')) self.assertEqual(2, len(migrations)) for index, db_migration in enumerate(db_migrations): self.compare_obj(migrations[index], db_migration) def test_get_by_filters(self): ctxt = context.get_admin_context() fake_migration = fake_db_migration() db_migrations = [fake_migration, dict(fake_migration, id=456)] self.mox.StubOutWithMock( db, 'migration_get_all_by_filters') filters = {'foo': 'bar'} db.migration_get_all_by_filters(ctxt, filters).AndReturn(db_migrations) self.mox.ReplayAll() migrations = migration.MigrationList.get_by_filters(ctxt, filters) self.assertEqual(2, len(migrations)) for index, db_migration in enumerate(db_migrations): self.compare_obj(migrations[index], db_migration) class TestMigrationObject(test_objects._LocalTest, _TestMigrationObject): pass class TestRemoteMigrationObject(test_objects._RemoteTest, _TestMigrationObject): pass nova-2014.1/nova/tests/objects/test_instance_group.py0000664000175400017540000003140212323721477024101 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova.compute import flavors from nova import context from nova import db from nova import exception from nova.objects import instance_group from nova import test from nova.tests.objects import test_objects from nova.tests import utils as tests_utils class _TestInstanceGroupObjects(test.TestCase): def setUp(self): super(_TestInstanceGroupObjects, self).setUp() self.user_id = 'fake_user' self.project_id = 'fake_project' self.context = context.RequestContext(self.user_id, self.project_id) def _get_default_values(self): return {'name': 'fake_name', 'user_id': self.user_id, 'project_id': self.project_id} def _create_instance_group(self, context, values, policies=None, metadata=None, members=None): return db.instance_group_create(context, values, policies=policies, metadata=metadata, members=members) def test_get_by_uuid(self): values = self._get_default_values() metadata = {'key11': 'value1', 'key12': 'value2'} policies = ['policy1', 'policy2'] members = ['instance_id1', 'instance_id2'] db_result = self._create_instance_group(self.context, values, metadata=metadata, policies=policies, members=members) obj_result = instance_group.InstanceGroup.get_by_uuid(self.context, db_result.uuid) self.assertEqual(obj_result.metadetails, metadata) self.assertEqual(obj_result.members, members) self.assertEqual(obj_result.policies, policies) def test_refresh(self): values = self._get_default_values() db_result = self._create_instance_group(self.context, values) obj_result = instance_group.InstanceGroup.get_by_uuid(self.context, db_result.uuid) self.assertEqual(obj_result.name, 'fake_name') values = {'name': 'new_name', 'user_id': 'new_user', 'project_id': 'new_project'} db.instance_group_update(self.context, db_result['uuid'], values) obj_result.refresh() self.assertEqual(obj_result.name, 'new_name') self.assertEqual(set([]), obj_result.obj_what_changed()) def test_save_simple(self): values = self._get_default_values() db_result = self._create_instance_group(self.context, values) obj_result = instance_group.InstanceGroup.get_by_uuid(self.context, db_result.uuid) self.assertEqual(obj_result.name, 'fake_name') obj_result.name = 'new_name' obj_result.save() result = db.instance_group_get(self.context, db_result['uuid']) self.assertEqual(result['name'], 'new_name') def test_save_policies(self): values = self._get_default_values() db_result = self._create_instance_group(self.context, values) obj_result = instance_group.InstanceGroup.get_by_uuid(self.context, db_result.uuid) policies = ['policy1', 'policy2'] obj_result.policies = policies obj_result.save() result = db.instance_group_get(self.context, db_result['uuid']) self.assertEqual(result['policies'], policies) def test_save_members(self): values = self._get_default_values() db_result = self._create_instance_group(self.context, values) obj_result = instance_group.InstanceGroup.get_by_uuid(self.context, db_result.uuid) members = ['instance1', 'instance2'] obj_result.members = members obj_result.save() result = db.instance_group_get(self.context, db_result['uuid']) self.assertEqual(result['members'], members) def test_save_metadata(self): values = self._get_default_values() db_result = self._create_instance_group(self.context, values) obj_result = instance_group.InstanceGroup.get_by_uuid(self.context, db_result.uuid) metadata = {'foo': 'bar'} obj_result.metadetails = metadata obj_result.save() metadata1 = db.instance_group_metadata_get(self.context, db_result['uuid']) for key, value in metadata.iteritems(): self.assertEqual(value, metadata[key]) def test_create(self): group1 = instance_group.InstanceGroup() group1.uuid = 'fake-uuid' group1.name = 'fake-name' group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid(self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.uuid, group2.uuid) self.assertEqual(group1.name, group2.name) result = db.instance_group_get(self.context, group1.uuid) self.assertEqual(group1.id, result.id) self.assertEqual(group1.uuid, result.uuid) self.assertEqual(group1.name, result.name) def test_create_with_policies(self): group1 = instance_group.InstanceGroup() group1.policies = ['policy1', 'policy2'] group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid(self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.policies, group2.policies) def test_create_with_members(self): group1 = instance_group.InstanceGroup() group1.members = ['instance1', 'instance2'] group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid(self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.members, group2.members) def test_create_with_metadata(self): group1 = instance_group.InstanceGroup() metadata = {'foo': 'bar'} group1.metadetails = metadata group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid(self.context, group1.uuid) self.assertEqual(group1.id, group2.id) for key, value in metadata.iteritems(): self.assertEqual(value, group2.metadetails[key]) def test_recreate_fails(self): group = instance_group.InstanceGroup() group.create(self.context) self.assertRaises(exception.ObjectActionError, group.create, self.context) def test_destroy(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) group = instance_group.InstanceGroup() group.id = result.id group.uuid = result.uuid group.destroy(self.context) self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_get, self.context, result['uuid']) def _populate_instances(self): instances = [('f1', 'p1'), ('f2', 'p1'), ('f3', 'p2'), ('f4', 'p2')] for instance in instances: values = self._get_default_values() values['uuid'] = instance[0] values['name'] = instance[0] values['project_id'] = instance[1] self._create_instance_group(self.context, values) def test_list_all(self): self._populate_instances() inst_list = instance_group.InstanceGroupList.get_all(self.context) groups = db.instance_group_get_all(self.context) self.assertEqual(len(groups), len(inst_list.objects)) self.assertEqual(len(groups), 4) for i in range(0, len(groups)): self.assertIsInstance(inst_list.objects[i], instance_group.InstanceGroup) self.assertEqual(inst_list.objects[i].uuid, groups[i]['uuid']) def test_list_by_project_id(self): self._populate_instances() project_ids = ['p1', 'p2'] for id in project_ids: il = instance_group.InstanceGroupList.get_by_project_id( self.context, id) groups = db.instance_group_get_all_by_project_id(self.context, id) self.assertEqual(len(groups), len(il.objects)) self.assertEqual(len(groups), 2) for i in range(0, len(groups)): self.assertIsInstance(il.objects[i], instance_group.InstanceGroup) self.assertEqual(il.objects[i].uuid, groups[i]['uuid']) self.assertEqual(il.objects[i].name, groups[i]['name']) self.assertEqual(il.objects[i].project_id, id) def test_get_by_name(self): self._populate_instances() ctxt = context.RequestContext('fake_user', 'p1') ig = instance_group.InstanceGroup.get_by_name(ctxt, 'f1') self.assertEqual('f1', ig.name) def test_add_members(self): instance_ids = ['fakeid1', 'fakeid2'] values = self._get_default_values() group = self._create_instance_group(self.context, values) members = instance_group.InstanceGroup.add_members(self.context, group.uuid, instance_ids) group = instance_group.InstanceGroup.get_by_uuid(self.context, group.uuid) for instance in instance_ids: self.assertIn(instance, members) self.assertIn(instance, group.members) def test_get_hosts(self): instance1 = tests_utils.get_test_instance(self.context, flavor=flavors.get_default_flavor(), obj=True) instance1.host = 'hostA' instance1.save() instance2 = tests_utils.get_test_instance(self.context, flavor=flavors.get_default_flavor(), obj=True) instance2.host = 'hostB' instance2.save() instance3 = tests_utils.get_test_instance(self.context, flavor=flavors.get_default_flavor(), obj=True) instance3.host = 'hostB' instance3.save() instance_ids = [instance1.uuid, instance2.uuid, instance3.uuid] values = self._get_default_values() group = self._create_instance_group(self.context, values) instance_group.InstanceGroup.add_members(self.context, group.uuid, instance_ids) group = instance_group.InstanceGroup.get_by_uuid(self.context, group.uuid) hosts = group.get_hosts(self.context) self.assertEqual(2, len(hosts)) self.assertIn('hostA', hosts) self.assertIn('hostB', hosts) hosts = group.get_hosts(self.context, exclude=[instance1.uuid]) self.assertEqual(1, len(hosts)) self.assertIn('hostB', hosts) def test_get_hosts_with_some_none(self): instance1 = tests_utils.get_test_instance(self.context, flavor=flavors.get_default_flavor(), obj=True) instance1.host = None instance1.save() instance2 = tests_utils.get_test_instance(self.context, flavor=flavors.get_default_flavor(), obj=True) instance2.host = 'hostB' instance2.save() instance_ids = [instance1.uuid, instance2.uuid] values = self._get_default_values() group = self._create_instance_group(self.context, values) instance_group.InstanceGroup.add_members(self.context, group.uuid, instance_ids) group = instance_group.InstanceGroup.get_by_uuid(self.context, group.uuid) hosts = group.get_hosts(self.context) self.assertEqual(1, len(hosts)) self.assertIn('hostB', hosts) class TestInstanceGroupObject(test_objects._LocalTest, _TestInstanceGroupObjects): pass class TestRemoteInstanceGroupObject(test_objects._RemoteTest, _TestInstanceGroupObjects): pass nova-2014.1/nova/tests/objects/test_instance_info_cache.py0000664000175400017540000001121012323721477025016 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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.cells import opts as cells_opts from nova.cells import rpcapi as cells_rpcapi from nova import db from nova import exception from nova.network import model as network_model from nova.objects import instance_info_cache from nova.tests.objects import test_objects fake_info_cache = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'instance_uuid': 'fake-uuid', 'network_info': '[]', } class _TestInstanceInfoCacheObject(object): def test_get_by_instance_uuid(self): nwinfo = network_model.NetworkInfo.hydrate([{'address': 'foo'}]) self.mox.StubOutWithMock(db, 'instance_info_cache_get') db.instance_info_cache_get(self.context, 'fake-uuid').AndReturn( dict(fake_info_cache, network_info=nwinfo.json())) self.mox.ReplayAll() obj = instance_info_cache.InstanceInfoCache.get_by_instance_uuid( self.context, 'fake-uuid') self.assertEqual(obj.instance_uuid, 'fake-uuid') self.assertEqual(obj.network_info, nwinfo) self.assertRemotes() def test_get_by_instance_uuid_no_entries(self): self.mox.StubOutWithMock(db, 'instance_info_cache_get') db.instance_info_cache_get(self.context, 'fake-uuid').AndReturn(None) self.mox.ReplayAll() self.assertRaises( exception.InstanceInfoCacheNotFound, instance_info_cache.InstanceInfoCache.get_by_instance_uuid, self.context, 'fake-uuid') def test_new(self): obj = instance_info_cache.InstanceInfoCache.new(self.context, 'fake-uuid') self.assertEqual(set(['instance_uuid', 'network_info']), obj.obj_what_changed()) self.assertEqual('fake-uuid', obj.instance_uuid) self.assertIsNone(obj.network_info) def _save_helper(self, cell_type, update_cells): obj = instance_info_cache.InstanceInfoCache() cells_api = cells_rpcapi.CellsAPI() self.mox.StubOutWithMock(db, 'instance_info_cache_update') self.mox.StubOutWithMock(cells_opts, 'get_cell_type') self.mox.StubOutWithMock(cells_rpcapi, 'CellsAPI', use_mock_anything=True) self.mox.StubOutWithMock(cells_api, 'instance_info_cache_update_at_top') nwinfo = network_model.NetworkInfo.hydrate([{'address': 'foo'}]) db.instance_info_cache_update( self.context, 'fake-uuid', {'network_info': nwinfo.json()}).AndReturn('foo') if update_cells: cells_opts.get_cell_type().AndReturn(cell_type) if cell_type == 'compute': cells_rpcapi.CellsAPI().AndReturn(cells_api) cells_api.instance_info_cache_update_at_top( self.context, 'foo') self.mox.ReplayAll() obj._context = self.context obj.instance_uuid = 'fake-uuid' obj.network_info = nwinfo obj.save(update_cells=update_cells) def test_save_with_update_cells_and_compute_cell(self): self._save_helper('compute', True) def test_save_with_update_cells_and_non_compute_cell(self): self._save_helper(None, True) def test_save_without_update_cells(self): self._save_helper(None, False) def test_refresh(self): obj = instance_info_cache.InstanceInfoCache.new(self.context, 'fake-uuid1') self.mox.StubOutWithMock(db, 'instance_info_cache_get') db.instance_info_cache_get(self.context, 'fake-uuid1').AndReturn( fake_info_cache) self.mox.ReplayAll() obj.refresh() self.assertEqual(fake_info_cache['instance_uuid'], obj.instance_uuid) class TestInstanceInfoCacheObject(test_objects._LocalTest, _TestInstanceInfoCacheObject): pass class TestInstanceInfoCacheObjectRemote(test_objects._RemoteTest, _TestInstanceInfoCacheObject): pass nova-2014.1/nova/tests/objects/test_flavor.py0000664000175400017540000002243312323721477022356 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import contextlib import mock from nova import db from nova import exception from nova.objects import flavor as flavor_obj from nova.tests.objects import test_objects fake_flavor = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'id': 1, 'name': 'm1.foo', 'memory_mb': 1024, 'vcpus': 4, 'root_gb': 20, 'ephemeral_gb': 0, 'flavorid': 'm1.foo', 'swap': 0, 'rxtx_factor': 1.0, 'vcpu_weight': 1, 'disabled': False, 'is_public': True, 'extra_specs': {'foo': 'bar'}, } class _TestFlavor(object): @staticmethod def _compare(test, db, obj): for field, value in db.items(): test.assertEqual(db[field], obj[field]) def test_get_by_id(self): with mock.patch.object(db, 'flavor_get') as get: get.return_value = fake_flavor flavor = flavor_obj.Flavor.get_by_id(self.context, 1) self._compare(self, fake_flavor, flavor) def test_get_by_name(self): with mock.patch.object(db, 'flavor_get_by_name') as get_by_name: get_by_name.return_value = fake_flavor flavor = flavor_obj.Flavor.get_by_name(self.context, 'm1.foo') self._compare(self, fake_flavor, flavor) def test_get_by_flavor_id(self): with mock.patch.object(db, 'flavor_get_by_flavor_id') as get_by_id: get_by_id.return_value = fake_flavor flavor = flavor_obj.Flavor.get_by_flavor_id(self.context, 'm1.foo') self._compare(self, fake_flavor, flavor) def test_add_access(self): elevated = self.context.elevated() flavor = flavor_obj.Flavor(context=elevated, flavorid='123') with mock.patch.object(db, 'flavor_access_add') as add: flavor.add_access('456') add.assert_called_once_with(elevated, '123', '456') def test_add_access_with_dirty_projects(self): flavor = flavor_obj.Flavor(context=self.context, projects=['1']) self.assertRaises(exception.ObjectActionError, flavor.add_access, '2') def test_remove_access(self): elevated = self.context.elevated() flavor = flavor_obj.Flavor(context=elevated, flavorid='123') with mock.patch.object(db, 'flavor_access_remove') as remove: flavor.remove_access('456') remove.assert_called_once_with(elevated, '123', '456') def test_create(self): flavor = flavor_obj.Flavor() flavor.name = 'm1.foo' flavor.extra_specs = fake_flavor['extra_specs'] with mock.patch.object(db, 'flavor_create') as create: create.return_value = fake_flavor flavor.create(self.context) self.assertEqual(self.context, flavor._context) # NOTE(danms): Orphan this to avoid lazy-loads flavor._context = None self._compare(self, fake_flavor, flavor) def test_create_with_projects(self): context = self.context.elevated() flavor = flavor_obj.Flavor() flavor.name = 'm1.foo' flavor.extra_specs = fake_flavor['extra_specs'] flavor.projects = ['project-1', 'project-2'] db_flavor = dict(fake_flavor, projects=list(flavor.projects)) with mock.patch.multiple(db, flavor_create=mock.DEFAULT, flavor_access_get_by_flavor_id=mock.DEFAULT ) as methods: methods['flavor_create'].return_value = db_flavor methods['flavor_access_get_by_flavor_id'].return_value = [ {'project_id': 'project-1'}, {'project_id': 'project-2'}] flavor.create(context) methods['flavor_create'].assert_called_once_with( context, {'name': 'm1.foo', 'extra_specs': fake_flavor['extra_specs']}, projects=['project-1', 'project-2']) self.assertEqual(context, flavor._context) # NOTE(danms): Orphan this to avoid lazy-loads flavor._context = None self._compare(self, fake_flavor, flavor) self.assertEqual(['project-1', 'project-2'], flavor.projects) def test_create_with_id(self): flavor = flavor_obj.Flavor(id=123) self.assertRaises(exception.ObjectActionError, flavor.create, self.context) def test_save(self): flavor = flavor_obj.Flavor._from_db_object(self.context, flavor_obj.Flavor(), fake_flavor) flavor.flavorid = 'foo' flavor.obj_reset_changes() flavor.extra_specs = {'foo': 'baz'} flavor.projects = ['project-1', 'project-3'] with contextlib.nested( mock.patch.object(db, 'flavor_extra_specs_update_or_create'), mock.patch.object(db, 'flavor_access_get_by_flavor_id'), mock.patch.object(db, 'flavor_access_add'), mock.patch.object(db, 'flavor_access_remove')) as ( extra_specs_update, access_get, access_add, access_remove): access_get.return_value = [{'project_id': 'project-1'}, {'project_id': 'project-2'}] flavor.save(self.context) extra_specs_update.assert_called_once_with(self.context, flavor.flavorid, {'foo': 'baz'}) access_get.assert_called_once_with(self.context, flavor.flavorid) access_add.assert_called_once_with(self.context, flavor.flavorid, 'project-3') access_remove.assert_called_once_with(self.context, flavor.flavorid, 'project-2') self.assertEqual(set(), flavor.obj_what_changed()) self.assertEqual(['project-1', 'project-3'], flavor.projects) flavor.projects = [] with contextlib.nested( mock.patch.object(db, 'flavor_access_get_by_flavor_id'), mock.patch.object(db, 'flavor_access_remove')) as ( access_get, access_remove): access_get.return_value = [{'project_id': 'project-1'}] flavor.save(self.context) access_remove.assert_called_once_with(self.context, flavor.flavorid, 'project-1') def test_save_invalid_fields(self): flavor = flavor_obj.Flavor(id=123) self.assertRaises(exception.ObjectActionError, flavor.save, self.context) def test_destroy(self): flavor = flavor_obj.Flavor(id=123, name='foo') with mock.patch.object(db, 'flavor_destroy') as destroy: flavor.destroy(self.context) destroy.assert_called_once_with(self.context, flavor.name) def test_load_projects(self): flavor = flavor_obj.Flavor(context=self.context, flavorid='foo') with mock.patch.object(db, 'flavor_access_get_by_flavor_id') as get: get.return_value = [{'project_id': 'project-1'}] projects = flavor.projects self.assertEqual(['project-1'], projects) def test_load_anything_else(self): flavor = flavor_obj.Flavor() self.assertRaises(exception.ObjectActionError, getattr, flavor, 'name') class TestFlavor(test_objects._LocalTest, _TestFlavor): pass class TestFlavorRemote(test_objects._RemoteTest, _TestFlavor): pass class _TestFlavorList(object): def test_get_all(self): with mock.patch.object(db, 'flavor_get_all') as get_all: get_all.return_value = [fake_flavor] filters = {'min_memory_mb': 4096} flavors = flavor_obj.FlavorList.get_all(self.context, inactive=False, filters=filters, sort_key='id', sort_dir='asc') self.assertEqual(1, len(flavors)) _TestFlavor._compare(self, fake_flavor, flavors[0]) get_all.assert_called_once_with(self.context, inactive=False, filters=filters, sort_key='id', sort_dir='asc', limit=None, marker=None) class TestFlavorList(test_objects._LocalTest, _TestFlavorList): pass class TestFlavorListRemote(test_objects._RemoteTest, _TestFlavorList): pass nova-2014.1/nova/tests/objects/test_pci_device.py0000664000175400017540000003102012323721477023147 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from nova import context from nova import db from nova import exception from nova.objects import instance from nova.objects import pci_device from nova.tests.objects import test_objects dev_dict = { 'compute_node_id': 1, 'address': 'a', 'product_id': 'p', 'vendor_id': 'v', 'status': 'available'} fake_db_dev = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 1, 'compute_node_id': 1, 'address': 'a', 'vendor_id': 'v', 'product_id': 'p', 'dev_type': 't', 'status': 'available', 'dev_id': 'i', 'label': 'l', 'instance_uuid': None, 'extra_info': '{}', } fake_db_dev_1 = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 2, 'compute_node_id': 1, 'address': 'a1', 'vendor_id': 'v1', 'product_id': 'p1', 'dev_type': 't', 'status': 'available', 'dev_id': 'i', 'label': 'l', 'instance_uuid': None, 'extra_info': '{}', } class _TestPciDeviceObject(object): def _create_fake_instance(self): self.inst = instance.Instance() self.inst.uuid = 'fake-inst-uuid' self.inst.pci_devices = pci_device.PciDeviceList() def _create_fake_pci_device(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'pci_device_get_by_addr') db.pci_device_get_by_addr(ctxt, 1, 'a').AndReturn(fake_db_dev) self.mox.ReplayAll() self.pci_device = pci_device.PciDevice.get_by_dev_addr(ctxt, 1, 'a') def test_create_pci_device(self): self.pci_device = pci_device.PciDevice.create(dev_dict) self.assertEqual(self.pci_device.product_id, 'p') self.assertEqual(self.pci_device.obj_what_changed(), set(['compute_node_id', 'product_id', 'vendor_id', 'status', 'address', 'extra_info'])) def test_pci_device_extra_info(self): self.dev_dict = copy.copy(dev_dict) self.dev_dict['k1'] = 'v1' self.dev_dict['k2'] = 'v2' self.pci_device = pci_device.PciDevice.create(self.dev_dict) extra_value = self.pci_device.extra_info self.assertEqual(extra_value.get('k1'), 'v1') self.assertEqual(set(extra_value.keys()), set(('k1', 'k2'))) self.assertEqual(self.pci_device.obj_what_changed(), set(['compute_node_id', 'address', 'product_id', 'vendor_id', 'status', 'extra_info'])) def test_update_device(self): self.pci_device = pci_device.PciDevice.create(dev_dict) self.pci_device.obj_reset_changes() changes = {'product_id': 'p2', 'vendor_id': 'v2'} self.pci_device.update_device(changes) self.assertEqual(self.pci_device.vendor_id, 'v2') self.assertEqual(self.pci_device.obj_what_changed(), set(['vendor_id', 'product_id'])) def test_update_device_same_value(self): self.pci_device = pci_device.PciDevice.create(dev_dict) self.pci_device.obj_reset_changes() changes = {'product_id': 'p', 'vendor_id': 'v2'} self.pci_device.update_device(changes) self.assertEqual(self.pci_device.product_id, 'p') self.assertEqual(self.pci_device.vendor_id, 'v2') self.assertEqual(self.pci_device.obj_what_changed(), set(['vendor_id', 'product_id'])) def test_get_by_dev_addr(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'pci_device_get_by_addr') db.pci_device_get_by_addr(ctxt, 1, 'a').AndReturn(fake_db_dev) self.mox.ReplayAll() self.pci_device = pci_device.PciDevice.get_by_dev_addr(ctxt, 1, 'a') self.assertEqual(self.pci_device.product_id, 'p') self.assertEqual(self.pci_device.obj_what_changed(), set()) self.assertRemotes() def test_get_by_dev_id(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'pci_device_get_by_id') db.pci_device_get_by_id(ctxt, 1).AndReturn(fake_db_dev) self.mox.ReplayAll() self.pci_device = pci_device.PciDevice.get_by_dev_id(ctxt, 1) self.assertEqual(self.pci_device.product_id, 'p') self.assertEqual(self.pci_device.obj_what_changed(), set()) self.assertRemotes() def test_claim_device(self): self._create_fake_instance() self.pci_device = pci_device.PciDevice.create(dev_dict) self.pci_device.claim(self.inst) self.assertEqual(self.pci_device.status, 'claimed') self.assertEqual(self.pci_device.instance_uuid, 'fake-inst-uuid') self.assertEqual(len(self.inst.pci_devices), 0) def test_claim_device_fail(self): self._create_fake_instance() self._create_fake_pci_device() self.pci_device.status = 'allocated' self.assertRaises(exception.PciDeviceInvalidStatus, self.pci_device.claim, self.inst) def test_allocate_device(self): self._create_fake_instance() self._create_fake_pci_device() self.pci_device.claim(self.inst) self.pci_device.allocate(self.inst) self.assertEqual(self.pci_device.status, 'allocated') self.assertEqual(self.pci_device.instance_uuid, 'fake-inst-uuid') self.assertEqual(len(self.inst.pci_devices), 1) self.assertEqual(self.inst.pci_devices[0]['vendor_id'], 'v') self.assertEqual(self.inst.pci_devices[0]['status'], 'allocated') def test_allocacte_device_fail_status(self): self._create_fake_instance() self._create_fake_pci_device() self.pci_device.status = 'removed' self.assertRaises(exception.PciDeviceInvalidStatus, self.pci_device.allocate, self.inst) def test_allocacte_device_fail_owner(self): self._create_fake_instance() self._create_fake_pci_device() inst_2 = instance.Instance() inst_2.uuid = 'fake-inst-uuid-2' self.pci_device.claim(self.inst) self.assertRaises(exception.PciDeviceInvalidOwner, self.pci_device.allocate, inst_2) def test_free_claimed_device(self): self._create_fake_instance() self._create_fake_pci_device() self.pci_device.claim(self.inst) self.pci_device.free(self.inst) self.assertEqual(self.pci_device.status, 'available') self.assertIsNone(self.pci_device.instance_uuid) def test_free_allocated_device(self): self._create_fake_instance() self._create_fake_pci_device() self.pci_device.claim(self.inst) self.pci_device.allocate(self.inst) self.assertEqual(len(self.inst.pci_devices), 1) self.pci_device.free(self.inst) self.assertEqual(len(self.inst.pci_devices), 0) self.assertEqual(self.pci_device.status, 'available') self.assertIsNone(self.pci_device.instance_uuid) def test_free_device_fail(self): self._create_fake_pci_device() self.pci_device.status = 'removed' self.assertRaises(exception.PciDeviceInvalidStatus, self.pci_device.free) def test_remove_device(self): self._create_fake_pci_device() self.pci_device.remove() self.assertEqual(self.pci_device.status, 'removed') self.assertIsNone(self.pci_device.instance_uuid) def test_remove_device_fail(self): self._create_fake_instance() self._create_fake_pci_device() self.pci_device.claim(self.inst) self.assertRaises(exception.PciDeviceInvalidStatus, self.pci_device.remove) def test_save(self): ctxt = context.get_admin_context() self._create_fake_pci_device() return_dev = dict(fake_db_dev, status='available', instance_uuid='fake-uuid-3') self.pci_device.status = 'allocated' self.pci_device.instance_uuid = 'fake-uuid-2' expected_updates = dict(status='allocated', instance_uuid='fake-uuid-2') self.mox.StubOutWithMock(db, 'pci_device_update') db.pci_device_update(ctxt, 1, 'a', expected_updates).AndReturn(return_dev) self.mox.ReplayAll() self.pci_device.save(ctxt) self.assertEqual(self.pci_device.status, 'available') self.assertEqual(self.pci_device.instance_uuid, 'fake-uuid-3') self.assertRemotes() def test_save_no_extra_info(self): return_dev = dict(fake_db_dev, status='available', instance_uuid='fake-uuid-3') def _fake_update(ctxt, node_id, addr, updates): self.extra_info = updates.get('extra_info') return return_dev ctxt = context.get_admin_context() self.stubs.Set(db, 'pci_device_update', _fake_update) self.pci_device = pci_device.PciDevice.create(dev_dict) self.pci_device.save(ctxt) self.assertEqual(self.extra_info, '{}') def test_save_removed(self): ctxt = context.get_admin_context() self._create_fake_pci_device() self.pci_device.status = 'removed' self.mox.StubOutWithMock(db, 'pci_device_destroy') db.pci_device_destroy(ctxt, 1, 'a') self.mox.ReplayAll() self.pci_device.save(ctxt) self.assertEqual(self.pci_device.status, 'deleted') self.assertRemotes() def test_save_deleted(self): def _fake_destroy(ctxt, node_id, addr): self.called = True def _fake_update(ctxt, node_id, addr, updates): self.called = True ctxt = context.get_admin_context() self.stubs.Set(db, 'pci_device_destroy', _fake_destroy) self.stubs.Set(db, 'pci_device_update', _fake_update) self._create_fake_pci_device() self.pci_device.status = 'deleted' self.called = False self.pci_device.save(ctxt) self.assertEqual(self.called, False) class TestPciDeviceObject(test_objects._LocalTest, _TestPciDeviceObject): pass class TestPciDeviceObjectRemote(test_objects._RemoteTest, _TestPciDeviceObject): pass fake_pci_devs = [fake_db_dev, fake_db_dev_1] class _TestPciDeviceListObject(object): def test_get_by_compute_node(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'pci_device_get_all_by_node') db.pci_device_get_all_by_node(ctxt, 1).AndReturn(fake_pci_devs) self.mox.ReplayAll() devs = pci_device.PciDeviceList.get_by_compute_node(ctxt, 1) for i in range(len(fake_pci_devs)): self.assertIsInstance(devs[i], pci_device.PciDevice) self.assertEqual(fake_pci_devs[i]['vendor_id'], devs[i].vendor_id) self.assertRemotes() def test_get_by_instance_uuid(self): ctxt = context.get_admin_context() fake_db_1 = dict(fake_db_dev, address='a1', status='allocated', instance_uuid='1') fake_db_2 = dict(fake_db_dev, address='a2', status='allocated', instance_uuid='1') self.mox.StubOutWithMock(db, 'pci_device_get_all_by_instance_uuid') db.pci_device_get_all_by_instance_uuid(ctxt, '1').AndReturn( [fake_db_1, fake_db_2]) self.mox.ReplayAll() devs = pci_device.PciDeviceList.get_by_instance_uuid(ctxt, '1') self.assertEqual(len(devs), 2) for i in range(len(fake_pci_devs)): self.assertIsInstance(devs[i], pci_device.PciDevice) self.assertEqual(devs[0].vendor_id, 'v') self.assertEqual(devs[1].vendor_id, 'v') self.assertRemotes() class TestPciDeviceListObject(test_objects._LocalTest, _TestPciDeviceListObject): pass class TestPciDeviceListObjectRemote(test_objects._RemoteTest, _TestPciDeviceListObject): pass nova-2014.1/nova/tests/objects/test_security_group.py0000664000175400017540000001604612323721477024153 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova.objects import instance from nova.objects import security_group from nova.tests.objects import test_objects fake_secgroup = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 1, 'name': 'fake-name', 'description': 'fake-desc', 'user_id': 'fake-user', 'project_id': 'fake-project', } class _TestSecurityGroupObject(object): def _fix_deleted(self, db_secgroup): # NOTE(danms): Account for the difference in 'deleted' return dict(db_secgroup.items(), deleted=False) def test_get(self): self.mox.StubOutWithMock(db, 'security_group_get') db.security_group_get(self.context, 1).AndReturn(fake_secgroup) self.mox.ReplayAll() secgroup = security_group.SecurityGroup.get(self.context, 1) self.assertEqual(self._fix_deleted(fake_secgroup), dict(secgroup.items())) self.assertEqual(secgroup.obj_what_changed(), set()) self.assertRemotes() def test_get_by_name(self): self.mox.StubOutWithMock(db, 'security_group_get_by_name') db.security_group_get_by_name(self.context, 'fake-project', 'fake-name').AndReturn(fake_secgroup) self.mox.ReplayAll() secgroup = security_group.SecurityGroup.get_by_name(self.context, 'fake-project', 'fake-name') self.assertEqual(self._fix_deleted(fake_secgroup), dict(secgroup.items())) self.assertEqual(secgroup.obj_what_changed(), set()) self.assertRemotes() def test_in_use(self): self.mox.StubOutWithMock(db, 'security_group_in_use') db.security_group_in_use(self.context, 123).AndReturn(True) self.mox.ReplayAll() secgroup = security_group.SecurityGroup() secgroup.id = 123 self.assertTrue(secgroup.in_use(self.context)) self.assertRemotes() def test_save(self): self.mox.StubOutWithMock(db, 'security_group_update') updated_secgroup = dict(fake_secgroup, project_id='changed') db.security_group_update(self.context, 1, {'description': 'foobar'}).AndReturn( updated_secgroup) self.mox.ReplayAll() secgroup = security_group.SecurityGroup._from_db_object( self.context, security_group.SecurityGroup(), fake_secgroup) secgroup.description = 'foobar' secgroup.save(self.context) self.assertEqual(self._fix_deleted(updated_secgroup), dict(secgroup.items())) self.assertEqual(secgroup.obj_what_changed(), set()) self.assertRemotes() def test_save_no_changes(self): self.mox.StubOutWithMock(db, 'security_group_update') self.mox.ReplayAll() secgroup = security_group.SecurityGroup._from_db_object( self.context, security_group.SecurityGroup(), fake_secgroup) secgroup.save(self.context) def test_refresh(self): updated_secgroup = dict(fake_secgroup, description='changed') self.mox.StubOutWithMock(db, 'security_group_get') db.security_group_get(self.context, 1).AndReturn(updated_secgroup) self.mox.ReplayAll() secgroup = security_group.SecurityGroup._from_db_object( self.context, security_group.SecurityGroup(), fake_secgroup) secgroup.refresh(self.context) self.assertEqual(self._fix_deleted(updated_secgroup), dict(secgroup.items())) self.assertEqual(secgroup.obj_what_changed(), set()) self.assertRemotes() class TestSecurityGroupObject(test_objects._LocalTest, _TestSecurityGroupObject): pass class TestSecurityGroupObjectRemote(test_objects._RemoteTest, _TestSecurityGroupObject): pass fake_secgroups = [ dict(fake_secgroup, id=1, name='secgroup1'), dict(fake_secgroup, id=2, name='secgroup2'), ] class _TestSecurityGroupListObject(object): def test_get_all(self): self.mox.StubOutWithMock(db, 'security_group_get_all') db.security_group_get_all(self.context).AndReturn(fake_secgroups) self.mox.ReplayAll() secgroup_list = security_group.SecurityGroupList.get_all(self.context) for i in range(len(fake_secgroups)): self.assertIsInstance(secgroup_list[i], security_group.SecurityGroup) self.assertEqual(fake_secgroups[i]['id'], secgroup_list[i]['id']) self.assertEqual(secgroup_list[i]._context, self.context) def test_get_by_project(self): self.mox.StubOutWithMock(db, 'security_group_get_by_project') db.security_group_get_by_project(self.context, 'fake-project').AndReturn( fake_secgroups) self.mox.ReplayAll() secgroup_list = security_group.SecurityGroupList.get_by_project( self.context, 'fake-project') for i in range(len(fake_secgroups)): self.assertIsInstance(secgroup_list[i], security_group.SecurityGroup) self.assertEqual(fake_secgroups[i]['id'], secgroup_list[i]['id']) def test_get_by_instance(self): inst = instance.Instance() inst.uuid = 'fake-inst-uuid' self.mox.StubOutWithMock(db, 'security_group_get_by_instance') db.security_group_get_by_instance(self.context, 'fake-inst-uuid').AndReturn( fake_secgroups) self.mox.ReplayAll() secgroup_list = security_group.SecurityGroupList.get_by_instance( self.context, inst) for i in range(len(fake_secgroups)): self.assertIsInstance(secgroup_list[i], security_group.SecurityGroup) self.assertEqual(fake_secgroups[i]['id'], secgroup_list[i]['id']) class TestSecurityGroupListObject(test_objects._LocalTest, _TestSecurityGroupListObject): pass class TestSecurityGroupListObjectRemote(test_objects._RemoteTest, _TestSecurityGroupListObject): pass nova-2014.1/nova/tests/objects/test_external_event.py0000664000175400017540000000332712323721477024111 0ustar jenkinsjenkins00000000000000# Copyright 2014 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. import mock from nova.objects import external_event as external_event_obj from nova.tests.objects import test_objects class _TestInstanceExternalEventObject(object): def test_make_key(self): key = external_event_obj.InstanceExternalEvent.make_key('foo', 'bar') self.assertEqual('foo-bar', key) def test_make_key_no_tag(self): key = external_event_obj.InstanceExternalEvent.make_key('foo') self.assertEqual('foo', key) def test_key(self): event = external_event_obj.InstanceExternalEvent(name='foo', tag='bar') with mock.patch.object(event, 'make_key') as make_key: make_key.return_value = 'key' self.assertEqual('key', event.key) make_key.assert_called_once_with('foo', 'bar') class TestInstanceExternalEventObject(test_objects._LocalTest, _TestInstanceExternalEventObject): pass class TestRemoteInstanceExternalEventObject(test_objects._RemoteTest, _TestInstanceExternalEventObject): pass nova-2014.1/nova/tests/objects/test_instance.py0000664000175400017540000014242112323721477022671 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import iso8601 import mock import mox import netaddr from nova.cells import rpcapi as cells_rpcapi from nova.compute import flavors from nova import db from nova import exception from nova.network import model as network_model from nova import notifications from nova.objects import instance from nova.objects import instance_info_cache from nova.objects import pci_device from nova.objects import security_group from nova.openstack.common import timeutils from nova import test from nova.tests.api.openstack import fakes from nova.tests import fake_instance from nova.tests.objects import test_instance_fault from nova.tests.objects import test_instance_info_cache from nova.tests.objects import test_objects from nova.tests.objects import test_security_group from nova import utils class _TestInstanceObject(object): @property def fake_instance(self): fake_instance = fakes.stub_instance(id=2, access_ipv4='1.2.3.4', access_ipv6='::1') fake_instance['cell_name'] = 'api!child' fake_instance['scheduled_at'] = None fake_instance['terminated_at'] = None fake_instance['deleted_at'] = None fake_instance['created_at'] = None fake_instance['updated_at'] = None fake_instance['launched_at'] = ( fake_instance['launched_at'].replace( tzinfo=iso8601.iso8601.Utc(), microsecond=0)) fake_instance['deleted'] = False fake_instance['info_cache']['instance_uuid'] = fake_instance['uuid'] fake_instance['security_groups'] = [] fake_instance['pci_devices'] = [] fake_instance['user_id'] = self.context.user_id fake_instance['project_id'] = self.context.project_id return fake_instance def test_datetime_deserialization(self): red_letter_date = timeutils.parse_isotime( timeutils.isotime(datetime.datetime(1955, 11, 5))) inst = instance.Instance(uuid='fake-uuid', launched_at=red_letter_date) primitive = inst.obj_to_primitive() expected = {'nova_object.name': 'Instance', 'nova_object.namespace': 'nova', 'nova_object.version': '1.13', 'nova_object.data': {'uuid': 'fake-uuid', 'launched_at': '1955-11-05T00:00:00Z'}, 'nova_object.changes': ['launched_at', 'uuid']} self.assertEqual(primitive, expected) inst2 = instance.Instance.obj_from_primitive(primitive) self.assertIsInstance(inst2.launched_at, datetime.datetime) self.assertEqual(inst2.launched_at, red_letter_date) def test_ip_deserialization(self): inst = instance.Instance(uuid='fake-uuid', access_ip_v4='1.2.3.4', access_ip_v6='::1') primitive = inst.obj_to_primitive() expected = {'nova_object.name': 'Instance', 'nova_object.namespace': 'nova', 'nova_object.version': '1.13', 'nova_object.data': {'uuid': 'fake-uuid', 'access_ip_v4': '1.2.3.4', 'access_ip_v6': '::1'}, 'nova_object.changes': ['uuid', 'access_ip_v6', 'access_ip_v4']} self.assertEqual(primitive, expected) inst2 = instance.Instance.obj_from_primitive(primitive) self.assertIsInstance(inst2.access_ip_v4, netaddr.IPAddress) self.assertIsInstance(inst2.access_ip_v6, netaddr.IPAddress) self.assertEqual(inst2.access_ip_v4, netaddr.IPAddress('1.2.3.4')) self.assertEqual(inst2.access_ip_v6, netaddr.IPAddress('::1')) def test_get_without_expected(self): self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, 'uuid', columns_to_join=[], use_slave=False ).AndReturn(self.fake_instance) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, 'uuid', expected_attrs=[]) for attr in instance.INSTANCE_OPTIONAL_ATTRS: self.assertFalse(inst.obj_attr_is_set(attr)) self.assertRemotes() def test_get_with_expected(self): self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') exp_cols = instance.INSTANCE_OPTIONAL_ATTRS[:] exp_cols.remove('fault') db.instance_get_by_uuid( self.context, 'uuid', columns_to_join=exp_cols, use_slave=False ).AndReturn(self.fake_instance) fake_faults = test_instance_fault.fake_faults db.instance_fault_get_by_instance_uuids( self.context, [self.fake_instance['uuid']] ).AndReturn(fake_faults) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid( self.context, 'uuid', expected_attrs=instance.INSTANCE_OPTIONAL_ATTRS) for attr in instance.INSTANCE_OPTIONAL_ATTRS: self.assertTrue(inst.obj_attr_is_set(attr)) self.assertRemotes() def test_get_by_id(self): self.mox.StubOutWithMock(db, 'instance_get') db.instance_get(self.context, 'instid', columns_to_join=['info_cache', 'security_groups'] ).AndReturn(self.fake_instance) self.mox.ReplayAll() inst = instance.Instance.get_by_id(self.context, 'instid') self.assertEqual(inst.uuid, self.fake_instance['uuid']) self.assertRemotes() def test_load(self): self.mox.StubOutWithMock(db, 'instance_get_by_uuid') fake_uuid = self.fake_instance['uuid'] db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(self.fake_instance) fake_inst2 = dict(self.fake_instance, system_metadata=[{'key': 'foo', 'value': 'bar'}]) db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['system_metadata'], use_slave=False ).AndReturn(fake_inst2) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) self.assertFalse(hasattr(inst, '_system_metadata')) sys_meta = inst.system_metadata self.assertEqual(sys_meta, {'foo': 'bar'}) self.assertTrue(hasattr(inst, '_system_metadata')) # Make sure we don't run load again sys_meta2 = inst.system_metadata self.assertEqual(sys_meta2, {'foo': 'bar'}) self.assertRemotes() def test_load_invalid(self): inst = instance.Instance(context=self.context, uuid='fake-uuid') self.assertRaises(exception.ObjectActionError, inst.obj_load_attr, 'foo') def test_get_remote(self): # isotime doesn't have microseconds and is always UTC self.mox.StubOutWithMock(db, 'instance_get_by_uuid') fake_instance = self.fake_instance db.instance_get_by_uuid(self.context, 'fake-uuid', columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_instance) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, 'fake-uuid') self.assertEqual(inst.id, fake_instance['id']) self.assertEqual(inst.launched_at, fake_instance['launched_at']) self.assertEqual(str(inst.access_ip_v4), fake_instance['access_ip_v4']) self.assertEqual(str(inst.access_ip_v6), fake_instance['access_ip_v6']) self.assertRemotes() def test_refresh(self): self.mox.StubOutWithMock(db, 'instance_get_by_uuid') fake_uuid = self.fake_instance['uuid'] db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(dict(self.fake_instance, host='orig-host')) db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(dict(self.fake_instance, host='new-host')) self.mox.StubOutWithMock(instance_info_cache.InstanceInfoCache, 'refresh') instance_info_cache.InstanceInfoCache.refresh() self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) self.assertEqual(inst.host, 'orig-host') inst.refresh() self.assertEqual(inst.host, 'new-host') self.assertRemotes() self.assertEqual(set([]), inst.obj_what_changed()) def test_refresh_does_not_recurse(self): inst = instance.Instance(context=self.context, uuid='fake-uuid', metadata={}) inst_copy = instance.Instance() inst_copy.uuid = inst.uuid self.mox.StubOutWithMock(instance.Instance, 'get_by_uuid') instance.Instance.get_by_uuid(self.context, uuid=inst.uuid, expected_attrs=['metadata'], use_slave=False ).AndReturn(inst_copy) self.mox.ReplayAll() self.assertRaises(exception.OrphanedObjectError, inst.refresh) def _save_test_helper(self, cell_type, save_kwargs): """Common code for testing save() for cells/non-cells.""" if cell_type: self.flags(enable=True, cell_type=cell_type, group='cells') else: self.flags(enable=False, group='cells') old_ref = dict(self.fake_instance, host='oldhost', user_data='old', vm_state='old', task_state='old') fake_uuid = old_ref['uuid'] expected_updates = dict(vm_state='meow', task_state='wuff', user_data='new') new_ref = dict(old_ref, host='newhost', **expected_updates) exp_vm_state = save_kwargs.get('expected_vm_state') exp_task_state = save_kwargs.get('expected_task_state') admin_reset = save_kwargs.get('admin_state_reset', False) if exp_vm_state: expected_updates['expected_vm_state'] = exp_vm_state if exp_task_state: if (exp_task_state == 'image_snapshot' and 'instance_version' in save_kwargs and save_kwargs['instance_version'] == '1.9'): expected_updates['expected_task_state'] = [ 'image_snapshot', 'image_snapshot_pending'] else: expected_updates['expected_task_state'] = exp_task_state self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(db, 'instance_info_cache_update') cells_api_mock = self.mox.CreateMock(cells_rpcapi.CellsAPI) self.mox.StubOutWithMock(cells_api_mock, 'instance_update_at_top') self.mox.StubOutWithMock(cells_api_mock, 'instance_update_from_api') self.mox.StubOutWithMock(cells_rpcapi, 'CellsAPI', use_mock_anything=True) self.mox.StubOutWithMock(notifications, 'send_update') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(old_ref) db.instance_update_and_get_original( self.context, fake_uuid, expected_updates, update_cells=False, columns_to_join=['info_cache', 'security_groups', 'system_metadata'] ).AndReturn((old_ref, new_ref)) if cell_type == 'api': cells_rpcapi.CellsAPI().AndReturn(cells_api_mock) cells_api_mock.instance_update_from_api( self.context, mox.IsA(instance.Instance), exp_vm_state, exp_task_state, admin_reset) elif cell_type == 'compute': cells_rpcapi.CellsAPI().AndReturn(cells_api_mock) cells_api_mock.instance_update_at_top(self.context, new_ref) notifications.send_update(self.context, mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, old_ref['uuid']) if 'instance_version' in save_kwargs: inst.VERSION = save_kwargs.pop('instance_version') self.assertEqual('old', inst.task_state) self.assertEqual('old', inst.vm_state) self.assertEqual('old', inst.user_data) inst.vm_state = 'meow' inst.task_state = 'wuff' inst.user_data = 'new' inst.save(**save_kwargs) self.assertEqual('newhost', inst.host) self.assertEqual('meow', inst.vm_state) self.assertEqual('wuff', inst.task_state) self.assertEqual('new', inst.user_data) self.assertEqual(set([]), inst.obj_what_changed()) def test_save(self): self._save_test_helper(None, {}) def test_save_in_api_cell(self): self._save_test_helper('api', {}) def test_save_in_compute_cell(self): self._save_test_helper('compute', {}) def test_save_exp_vm_state(self): self._save_test_helper(None, {'expected_vm_state': ['meow']}) def test_save_exp_task_state(self): self._save_test_helper(None, {'expected_task_state': ['meow']}) def test_save_exp_task_state_havana(self): self._save_test_helper(None, { 'expected_task_state': 'image_snapshot', 'instance_version': '1.9'}) def test_save_exp_vm_state_api_cell(self): self._save_test_helper('api', {'expected_vm_state': ['meow']}) def test_save_exp_task_state_api_cell(self): self._save_test_helper('api', {'expected_task_state': ['meow']}) def test_save_exp_task_state_api_cell_admin_reset(self): self._save_test_helper('api', {'admin_state_reset': True}) def test_save_rename_sends_notification(self): # Tests that simply changing the 'display_name' on the instance # will send a notification. self.flags(enable=False, group='cells') old_ref = dict(self.fake_instance, display_name='hello') fake_uuid = old_ref['uuid'] expected_updates = dict(display_name='goodbye') new_ref = dict(old_ref, **expected_updates) self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(notifications, 'send_update') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(old_ref) db.instance_update_and_get_original( self.context, fake_uuid, expected_updates, update_cells=False, columns_to_join=['info_cache', 'security_groups', 'system_metadata'] ).AndReturn((old_ref, new_ref)) notifications.send_update(self.context, mox.IgnoreArg(), mox.IgnoreArg()) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, old_ref['uuid'], use_slave=False) self.assertEqual('hello', inst.display_name) inst.display_name = 'goodbye' inst.save() self.assertEqual('goodbye', inst.display_name) self.assertEqual(set([]), inst.obj_what_changed()) def test_get_deleted(self): fake_inst = dict(self.fake_instance, id=123, deleted=123) fake_uuid = fake_inst['uuid'] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) # NOTE(danms): Make sure it's actually a bool self.assertEqual(inst.deleted, True) def test_get_not_cleaned(self): fake_inst = dict(self.fake_instance, id=123, cleaned=None) fake_uuid = fake_inst['uuid'] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) # NOTE(mikal): Make sure it's actually a bool self.assertEqual(inst.cleaned, False) def test_get_cleaned(self): fake_inst = dict(self.fake_instance, id=123, cleaned=1) fake_uuid = fake_inst['uuid'] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) # NOTE(mikal): Make sure it's actually a bool self.assertEqual(inst.cleaned, True) def test_with_info_cache(self): fake_inst = dict(self.fake_instance) fake_uuid = fake_inst['uuid'] nwinfo1 = network_model.NetworkInfo.hydrate([{'address': 'foo'}]) nwinfo2 = network_model.NetworkInfo.hydrate([{'address': 'bar'}]) nwinfo1_json = nwinfo1.json() nwinfo2_json = nwinfo2.json() fake_inst['info_cache'] = dict( test_instance_info_cache.fake_info_cache, network_info=nwinfo1_json, instance_uuid=fake_uuid) self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(db, 'instance_info_cache_update') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) db.instance_info_cache_update(self.context, fake_uuid, {'network_info': nwinfo2_json}) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) self.assertEqual(inst.info_cache.network_info, nwinfo1) self.assertEqual(inst.info_cache.instance_uuid, fake_uuid) inst.info_cache.network_info = nwinfo2 inst.save() def test_with_info_cache_none(self): fake_inst = dict(self.fake_instance, info_cache=None) fake_uuid = fake_inst['uuid'] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid, ['info_cache']) self.assertIsNone(inst.info_cache) def test_with_security_groups(self): fake_inst = dict(self.fake_instance) fake_uuid = fake_inst['uuid'] fake_inst['security_groups'] = [ {'id': 1, 'name': 'secgroup1', 'description': 'fake-desc', 'user_id': 'fake-user', 'project_id': 'fake_project', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False}, {'id': 2, 'name': 'secgroup2', 'description': 'fake-desc', 'user_id': 'fake-user', 'project_id': 'fake_project', 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False}, ] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.mox.StubOutWithMock(db, 'security_group_update') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) db.security_group_update(self.context, 1, {'description': 'changed'} ).AndReturn(fake_inst['security_groups'][0]) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) self.assertEqual(len(inst.security_groups), 2) for index, group in enumerate(fake_inst['security_groups']): for key in group: self.assertEqual(group[key], inst.security_groups[index][key]) self.assertIsInstance(inst.security_groups[index], security_group.SecurityGroup) self.assertEqual(inst.security_groups.obj_what_changed(), set()) inst.security_groups[0].description = 'changed' inst.save() self.assertEqual(inst.security_groups.obj_what_changed(), set()) def test_with_empty_security_groups(self): fake_inst = dict(self.fake_instance, security_groups=[]) fake_uuid = fake_inst['uuid'] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['info_cache', 'security_groups'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid) self.assertEqual(0, len(inst.security_groups)) def test_with_empty_pci_devices(self): fake_inst = dict(self.fake_instance, pci_devices=[]) fake_uuid = fake_inst['uuid'] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['pci_devices'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid, ['pci_devices']) self.assertEqual(len(inst.pci_devices), 0) def test_with_pci_devices(self): fake_inst = dict(self.fake_instance) fake_uuid = fake_inst['uuid'] fake_inst['pci_devices'] = [ {'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 2, 'compute_node_id': 1, 'address': 'a1', 'vendor_id': 'v1', 'product_id': 'p1', 'dev_type': 't', 'status': 'allocated', 'dev_id': 'i', 'label': 'l', 'instance_uuid': fake_uuid, 'extra_info': '{}'}, { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': None, 'id': 1, 'compute_node_id': 1, 'address': 'a', 'vendor_id': 'v', 'product_id': 'p', 'dev_type': 't', 'status': 'allocated', 'dev_id': 'i', 'label': 'l', 'instance_uuid': fake_uuid, 'extra_info': '{}'}, ] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=['pci_devices'], use_slave=False ).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid, ['pci_devices']) self.assertEqual(len(inst.pci_devices), 2) self.assertEqual(inst.pci_devices[0].instance_uuid, fake_uuid) self.assertEqual(inst.pci_devices[1].instance_uuid, fake_uuid) def test_with_fault(self): fake_inst = dict(self.fake_instance) fake_uuid = fake_inst['uuid'] fake_faults = [dict(x, instance_uuid=fake_uuid) for x in test_instance_fault.fake_faults['fake-uuid']] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=[], use_slave=False ).AndReturn(self.fake_instance) db.instance_fault_get_by_instance_uuids( self.context, [fake_uuid]).AndReturn({fake_uuid: fake_faults}) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid, expected_attrs=['fault']) self.assertEqual(fake_faults[0], dict(inst.fault.items())) self.assertRemotes() def test_iteritems_with_extra_attrs(self): self.stubs.Set(instance.Instance, 'name', 'foo') inst = instance.Instance(uuid='fake-uuid') self.assertEqual(inst.items(), {'uuid': 'fake-uuid', 'name': 'foo', }.items()) def _test_metadata_change_tracking(self, which): inst = instance.Instance(uuid='fake-uuid') setattr(inst, which, {}) inst.obj_reset_changes() getattr(inst, which)['foo'] = 'bar' self.assertEqual(set([which]), inst.obj_what_changed()) inst.obj_reset_changes() self.assertEqual(set(), inst.obj_what_changed()) def test_metadata_change_tracking(self): self._test_metadata_change_tracking('metadata') def test_system_metadata_change_tracking(self): self._test_metadata_change_tracking('system_metadata') def test_create_stubbed(self): self.mox.StubOutWithMock(db, 'instance_create') vals = {'host': 'foo-host', 'memory_mb': 128, 'system_metadata': {'foo': 'bar'}} fake_inst = fake_instance.fake_db_instance(**vals) db.instance_create(self.context, vals).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance(host='foo-host', memory_mb=128, system_metadata={'foo': 'bar'}) inst.create(self.context) def test_create(self): self.mox.StubOutWithMock(db, 'instance_create') db.instance_create(self.context, {}).AndReturn(self.fake_instance) self.mox.ReplayAll() inst = instance.Instance() inst.create(self.context) self.assertEqual(self.fake_instance['id'], inst.id) def test_create_with_values(self): inst1 = instance.Instance(user_id=self.context.user_id, project_id=self.context.project_id, host='foo-host') inst1.create(self.context) self.assertEqual(inst1.host, 'foo-host') inst2 = instance.Instance.get_by_uuid(self.context, inst1.uuid) self.assertEqual(inst2.host, 'foo-host') def test_recreate_fails(self): inst = instance.Instance(user_id=self.context.user_id, project_id=self.context.project_id, host='foo-host') inst.create(self.context) self.assertRaises(exception.ObjectActionError, inst.create, self.context) def test_create_with_special_things(self): self.mox.StubOutWithMock(db, 'instance_create') fake_inst = fake_instance.fake_db_instance() db.instance_create(self.context, {'host': 'foo-host', 'security_groups': ['foo', 'bar'], 'info_cache': {'network_info': '[]'}, } ).AndReturn(fake_inst) self.mox.ReplayAll() secgroups = security_group.SecurityGroupList() secgroups.objects = [] for name in ('foo', 'bar'): secgroup = security_group.SecurityGroup() secgroup.name = name secgroups.objects.append(secgroup) info_cache = instance_info_cache.InstanceInfoCache() info_cache.network_info = network_model.NetworkInfo() inst = instance.Instance(host='foo-host', security_groups=secgroups, info_cache=info_cache) inst.create(self.context) def test_destroy_stubbed(self): self.mox.StubOutWithMock(db, 'instance_destroy') deleted_at = datetime.datetime(1955, 11, 6) fake_inst = fake_instance.fake_db_instance(deleted_at=deleted_at, deleted=True) db.instance_destroy(self.context, 'fake-uuid', constraint=None).AndReturn(fake_inst) self.mox.ReplayAll() inst = instance.Instance(id=1, uuid='fake-uuid', host='foo') inst.destroy(self.context) self.assertEqual(timeutils.normalize_time(inst.deleted_at), timeutils.normalize_time(deleted_at)) self.assertTrue(inst.deleted) def test_destroy(self): values = {'user_id': self.context.user_id, 'project_id': self.context.project_id} db_inst = db.instance_create(self.context, values) inst = instance.Instance(id=db_inst['id'], uuid=db_inst['uuid']) inst.destroy(self.context) self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid, self.context, db_inst['uuid']) def test_destroy_host_constraint(self): values = {'user_id': self.context.user_id, 'project_id': self.context.project_id, 'host': 'foo'} db_inst = db.instance_create(self.context, values) inst = instance.Instance.get_by_uuid(self.context, db_inst['uuid']) inst.host = None self.assertRaises(exception.ObjectActionError, inst.destroy) def test_name_does_not_trigger_lazy_loads(self): values = {'user_id': self.context.user_id, 'project_id': self.context.project_id, 'host': 'foo'} db_inst = db.instance_create(self.context, values) inst = instance.Instance.get_by_uuid(self.context, db_inst['uuid']) self.assertFalse(inst.obj_attr_is_set('fault')) self.flags(instance_name_template='foo-%(uuid)s') self.assertEqual('foo-%s' % db_inst['uuid'], inst.name) self.assertFalse(inst.obj_attr_is_set('fault')) def test_from_db_object_not_overwrite_info_cache(self): info_cache = instance_info_cache.InstanceInfoCache() inst = instance.Instance(context=self.context, info_cache=info_cache) db_inst = fake_instance.fake_db_instance() db_inst['info_cache'] = dict( test_instance_info_cache.fake_info_cache) inst._from_db_object(self.context, inst, db_inst, expected_attrs=['info_cache']) self.assertIs(info_cache, inst.info_cache) def test_compat_strings(self): unicode_attributes = ['user_id', 'project_id', 'image_ref', 'kernel_id', 'ramdisk_id', 'hostname', 'key_name', 'key_data', 'host', 'node', 'user_data', 'availability_zone', 'display_name', 'display_description', 'launched_on', 'locked_by', 'os_type', 'architecture', 'vm_mode', 'root_device_name', 'default_ephemeral_device', 'default_swap_device', 'config_drive', 'cell_name'] inst = instance.Instance() expected = {} for key in unicode_attributes: inst[key] = u'\u2603' expected[key] = '?' primitive = inst.obj_to_primitive(target_version='1.6') self.assertEqual(expected, primitive['nova_object.data']) self.assertEqual('1.6', primitive['nova_object.version']) def test_compat_pci_devices(self): inst = instance.Instance() inst.pci_devices = pci_device.PciDeviceList() primitive = inst.obj_to_primitive(target_version='1.5') self.assertNotIn('pci_devices', primitive) def test_compat_info_cache(self): inst = instance.Instance() inst.info_cache = instance_info_cache.InstanceInfoCache() primitive = inst.obj_to_primitive(target_version='1.9') self.assertEqual( '1.4', primitive['nova_object.data']['info_cache']['nova_object.version']) def _test_get_flavor(self, namespace): prefix = '%s_' % namespace if namespace is not None else '' db_inst = db.instance_create(self.context, { 'user_id': self.context.user_id, 'project_id': self.context.project_id, 'system_metadata': flavors.save_flavor_info( {}, flavors.get_default_flavor(), prefix)}) db_flavor = flavors.extract_flavor(db_inst, prefix) inst = instance.Instance.get_by_uuid(self.context, db_inst['uuid']) flavor = inst.get_flavor(namespace) self.assertEqual(db_flavor['flavorid'], flavor.flavorid) def test_get_flavor(self): self._test_get_flavor(None) self._test_get_flavor('foo') def _test_set_flavor(self, namespace): prefix = '%s_' % namespace if namespace is not None else '' db_inst = db.instance_create(self.context, { 'user_id': self.context.user_id, 'project_id': self.context.project_id, }) inst = instance.Instance.get_by_uuid(self.context, db_inst['uuid']) db_flavor = flavors.get_default_flavor() inst.set_flavor(db_flavor, namespace) db_inst = db.instance_get(self.context, db_inst['id']) self.assertEqual( db_flavor['flavorid'], flavors.extract_flavor( db_inst, prefix)['flavorid']) def test_set_flavor(self): self._test_set_flavor(None) self._test_set_flavor('foo') def test_delete_flavor(self): namespace = 'foo' prefix = '%s_' % namespace db_inst = db.instance_create(self.context, { 'user_id': self.context.user_id, 'project_id': self.context.project_id, 'system_metadata': flavors.save_flavor_info( {}, flavors.get_default_flavor(), prefix)}) inst = instance.Instance.get_by_uuid(self.context, db_inst['uuid']) inst.delete_flavor(namespace) db_inst = db.instance_get(self.context, db_inst['id']) self.assertEqual({}, utils.instance_sys_meta(db_inst)) def test_delete_flavor_no_namespace_fails(self): inst = instance.Instance(system_metadata={}) self.assertRaises(KeyError, inst.delete_flavor, None) self.assertRaises(KeyError, inst.delete_flavor, '') @mock.patch.object(db, 'instance_metadata_delete') def test_delete_metadata_key(self, db_delete): inst = instance.Instance(context=self.context, id=1, uuid='fake-uuid') inst.metadata = {'foo': '1', 'bar': '2'} inst.obj_reset_changes() inst.delete_metadata_key('foo') self.assertEqual({'bar': '2'}, inst.metadata) self.assertEqual({}, inst.obj_get_changes()) db_delete.assert_called_once_with(self.context, inst.uuid, 'foo') def test_reset_changes(self): inst = instance.Instance() inst.metadata = {'1985': 'present'} inst.system_metadata = {'1955': 'past'} self.assertEqual({}, inst._orig_metadata) inst.obj_reset_changes(['metadata']) self.assertEqual({'1985': 'present'}, inst._orig_metadata) self.assertEqual({}, inst._orig_system_metadata) class TestInstanceObject(test_objects._LocalTest, _TestInstanceObject): pass class TestRemoteInstanceObject(test_objects._RemoteTest, _TestInstanceObject): pass class _TestInstanceListObject(object): def fake_instance(self, id, updates=None): fake_instance = fakes.stub_instance(id=2, access_ipv4='1.2.3.4', access_ipv6='::1') fake_instance['scheduled_at'] = None fake_instance['terminated_at'] = None fake_instance['deleted_at'] = None fake_instance['created_at'] = None fake_instance['updated_at'] = None fake_instance['launched_at'] = ( fake_instance['launched_at'].replace( tzinfo=iso8601.iso8601.Utc(), microsecond=0)) fake_instance['info_cache'] = {'network_info': '[]', 'instance_uuid': fake_instance['uuid']} fake_instance['security_groups'] = [] fake_instance['deleted'] = 0 if updates: fake_instance.update(updates) return fake_instance def test_get_all_by_filters(self): fakes = [self.fake_instance(1), self.fake_instance(2)] self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') db.instance_get_all_by_filters(self.context, {'foo': 'bar'}, 'uuid', 'asc', limit=None, marker=None, columns_to_join=['metadata'], use_slave=False).AndReturn(fakes) self.mox.ReplayAll() inst_list = instance.InstanceList.get_by_filters( self.context, {'foo': 'bar'}, 'uuid', 'asc', expected_attrs=['metadata'], use_slave=False) for i in range(0, len(fakes)): self.assertIsInstance(inst_list.objects[i], instance.Instance) self.assertEqual(inst_list.objects[i].uuid, fakes[i]['uuid']) self.assertRemotes() def test_get_all_by_filters_works_for_cleaned(self): fakes = [self.fake_instance(1), self.fake_instance(2, updates={'deleted': 2, 'cleaned': None})] self.context.read_deleted = 'yes' self.mox.StubOutWithMock(db, 'instance_get_all_by_filters') db.instance_get_all_by_filters(self.context, {'deleted': True, 'cleaned': False}, 'uuid', 'asc', limit=None, marker=None, columns_to_join=['metadata'], use_slave=False).AndReturn( [fakes[1]]) self.mox.ReplayAll() inst_list = instance.InstanceList.get_by_filters( self.context, {'deleted': True, 'cleaned': False}, 'uuid', 'asc', expected_attrs=['metadata'], use_slave=False) self.assertEqual(1, len(inst_list)) self.assertIsInstance(inst_list.objects[0], instance.Instance) self.assertEqual(inst_list.objects[0].uuid, fakes[1]['uuid']) self.assertRemotes() def test_get_by_host(self): fakes = [self.fake_instance(1), self.fake_instance(2)] self.mox.StubOutWithMock(db, 'instance_get_all_by_host') db.instance_get_all_by_host(self.context, 'foo', columns_to_join=None, use_slave=False).AndReturn(fakes) self.mox.ReplayAll() inst_list = instance.InstanceList.get_by_host(self.context, 'foo') for i in range(0, len(fakes)): self.assertIsInstance(inst_list.objects[i], instance.Instance) self.assertEqual(inst_list.objects[i].uuid, fakes[i]['uuid']) self.assertEqual(inst_list.objects[i]._context, self.context) self.assertEqual(inst_list.obj_what_changed(), set()) self.assertRemotes() def test_get_by_host_and_node(self): fakes = [self.fake_instance(1), self.fake_instance(2)] self.mox.StubOutWithMock(db, 'instance_get_all_by_host_and_node') db.instance_get_all_by_host_and_node(self.context, 'foo', 'bar' ).AndReturn(fakes) self.mox.ReplayAll() inst_list = instance.InstanceList.get_by_host_and_node(self.context, 'foo', 'bar') for i in range(0, len(fakes)): self.assertIsInstance(inst_list.objects[i], instance.Instance) self.assertEqual(inst_list.objects[i].uuid, fakes[i]['uuid']) self.assertRemotes() def test_get_by_host_and_not_type(self): fakes = [self.fake_instance(1), self.fake_instance(2)] self.mox.StubOutWithMock(db, 'instance_get_all_by_host_and_not_type') db.instance_get_all_by_host_and_not_type(self.context, 'foo', type_id='bar').AndReturn( fakes) self.mox.ReplayAll() inst_list = instance.InstanceList.get_by_host_and_not_type( self.context, 'foo', 'bar') for i in range(0, len(fakes)): self.assertIsInstance(inst_list.objects[i], instance.Instance) self.assertEqual(inst_list.objects[i].uuid, fakes[i]['uuid']) self.assertRemotes() def test_get_hung_in_rebooting(self): fakes = [self.fake_instance(1), self.fake_instance(2)] dt = timeutils.isotime() self.mox.StubOutWithMock(db, 'instance_get_all_hung_in_rebooting') db.instance_get_all_hung_in_rebooting(self.context, dt).AndReturn( fakes) self.mox.ReplayAll() inst_list = instance.InstanceList.get_hung_in_rebooting(self.context, dt) for i in range(0, len(fakes)): self.assertIsInstance(inst_list.objects[i], instance.Instance) self.assertEqual(inst_list.objects[i].uuid, fakes[i]['uuid']) self.assertRemotes() def test_get_active_by_window_joined(self): fakes = [self.fake_instance(1), self.fake_instance(2)] # NOTE(mriedem): Send in a timezone-naive datetime since the # InstanceList.get_active_by_window_joined method should convert it # to tz-aware for the DB API call, which we'll assert with our stub. dt = timeutils.utcnow() def fake_instance_get_active_by_window_joined(context, begin, end, project_id, host): # make sure begin is tz-aware self.assertIsNotNone(begin.utcoffset()) self.assertIsNone(end) return fakes with mock.patch.object(db, 'instance_get_active_by_window_joined', fake_instance_get_active_by_window_joined): inst_list = instance.InstanceList.get_active_by_window_joined( self.context, dt) for fake, obj in zip(fakes, inst_list.objects): self.assertIsInstance(obj, instance.Instance) self.assertEqual(obj.uuid, fake['uuid']) self.assertRemotes() def test_with_fault(self): fake_insts = [ fake_instance.fake_db_instance(uuid='fake-uuid', host='host'), fake_instance.fake_db_instance(uuid='fake-inst2', host='host'), ] fake_faults = test_instance_fault.fake_faults self.mox.StubOutWithMock(db, 'instance_get_all_by_host') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_get_all_by_host(self.context, 'host', columns_to_join=[], use_slave=False ).AndReturn(fake_insts) db.instance_fault_get_by_instance_uuids( self.context, [x['uuid'] for x in fake_insts] ).AndReturn(fake_faults) self.mox.ReplayAll() instances = instance.InstanceList.get_by_host(self.context, 'host', expected_attrs=['fault'], use_slave=False) self.assertEqual(2, len(instances)) self.assertEqual(fake_faults['fake-uuid'][0], dict(instances[0].fault.iteritems())) self.assertIsNone(instances[1].fault) def test_fill_faults(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') inst1 = instance.Instance(uuid='uuid1') inst2 = instance.Instance(uuid='uuid2') insts = [inst1, inst2] for inst in insts: inst.obj_reset_changes() db_faults = { 'uuid1': [{'id': 123, 'instance_uuid': 'uuid1', 'code': 456, 'message': 'Fake message', 'details': 'No details', 'host': 'foo', 'deleted': False, 'deleted_at': None, 'updated_at': None, 'created_at': None, } ]} db.instance_fault_get_by_instance_uuids(self.context, [x.uuid for x in insts], ).AndReturn(db_faults) self.mox.ReplayAll() inst_list = instance.InstanceList() inst_list._context = self.context inst_list.objects = insts faulty = inst_list.fill_faults() self.assertEqual(faulty, ['uuid1']) self.assertEqual(inst_list[0].fault.message, db_faults['uuid1'][0]['message']) self.assertIsNone(inst_list[1].fault) for inst in inst_list: self.assertEqual(inst.obj_what_changed(), set()) def test_get_by_security_group(self): fake_secgroup = dict(test_security_group.fake_secgroup) fake_secgroup['instances'] = [ fake_instance.fake_db_instance(id=1, system_metadata={'foo': 'bar'}), fake_instance.fake_db_instance(id=2), ] with mock.patch.object(db, 'security_group_get') as sgg: sgg.return_value = fake_secgroup secgroup = security_group.SecurityGroup() secgroup.id = fake_secgroup['id'] instances = instance.InstanceList.get_by_security_group( self.context, secgroup) self.assertEqual(2, len(instances)) self.assertEqual([1, 2], [x.id for x in instances]) self.assertTrue(instances[0].obj_attr_is_set('system_metadata')) self.assertEqual({'foo': 'bar'}, instances[0].system_metadata) class TestInstanceListObject(test_objects._LocalTest, _TestInstanceListObject): pass class TestRemoteInstanceListObject(test_objects._RemoteTest, _TestInstanceListObject): pass class TestInstanceObjectMisc(test.NoDBTestCase): def test_expected_cols(self): self.stubs.Set(instance, '_INSTANCE_OPTIONAL_JOINED_FIELDS', ['bar']) self.assertEqual(['bar'], instance._expected_cols(['foo', 'bar'])) self.assertIsNone(instance._expected_cols(None)) nova-2014.1/nova/tests/objects/test_instance_fault.py0000664000175400017540000000666012323721477024070 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova.objects import instance_fault from nova.tests.objects import test_objects fake_faults = { 'fake-uuid': [ {'id': 1, 'instance_uuid': 'fake-uuid', 'code': 123, 'message': 'msg1', 'details': 'details', 'host': 'host', 'deleted': False, 'created_at': None, 'updated_at': None, 'deleted_at': None}, {'id': 2, 'instance_uuid': 'fake-uuid', 'code': 456, 'message': 'msg2', 'details': 'details', 'host': 'host', 'deleted': False, 'created_at': None, 'updated_at': None, 'deleted_at': None}, ] } class _TestInstanceFault(object): def test_get_latest_for_instance(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid'] ).AndReturn(fake_faults) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( self.context, 'fake-uuid') for key in fake_faults['fake-uuid'][0]: self.assertEqual(fake_faults['fake-uuid'][0][key], fault[key]) def test_get_latest_for_instance_with_none(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid'] ).AndReturn({}) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( self.context, 'fake-uuid') self.assertIsNone(fault) def test_get_by_instance(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid'] ).AndReturn(fake_faults) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids( self.context, ['fake-uuid']) for index, db_fault in enumerate(fake_faults['fake-uuid']): for key in db_fault: self.assertEqual(fake_faults['fake-uuid'][index][key], faults[index][key]) def test_get_by_instance_with_none(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid'] ).AndReturn({}) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids( self.context, ['fake-uuid']) self.assertEqual(0, len(faults)) class TestInstanceFault(test_objects._LocalTest, _TestInstanceFault): pass class TestInstanceFaultRemote(test_objects._RemoteTest, _TestInstanceFault): pass nova-2014.1/nova/tests/objects/test_dns_domain.py0000664000175400017540000000570312323721477023201 0ustar jenkinsjenkins00000000000000# Copyright (C) 2014, 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. import mock from nova import db from nova.objects import dns_domain from nova.tests.objects import test_objects fake_dnsd = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': 0, 'domain': 'blah.example.com', 'scope': 'private', 'availability_zone': 'overthere', 'project_id': '867530niner', } class _TestDNSDomain(object): @staticmethod def _compare(test, db, obj): for field, value in db.items(): test.assertEqual(db[field], obj[field]) def test_get_by_domain(self): with mock.patch.object(db, 'dnsdomain_get') as get: get.return_value = fake_dnsd dnsd = dns_domain.DNSDomain.get_by_domain(self.context, 'domain') self._compare(self, fake_dnsd, dnsd) def test_register_for_zone(self): dns_domain.DNSDomain.register_for_zone(self.context.elevated(), 'domain', 'zone') dnsd = dns_domain.DNSDomain.get_by_domain(self.context, 'domain') self.assertEqual('domain', dnsd.domain) self.assertEqual('zone', dnsd.availability_zone) def test_register_for_project(self): dns_domain.DNSDomain.register_for_project(self.context.elevated(), 'domain', 'project') dnsd = dns_domain.DNSDomain.get_by_domain(self.context, 'domain') self.assertEqual('domain', dnsd.domain) self.assertEqual('project', dnsd.project_id) def test_delete_by_domain(self): dns_domain.DNSDomain.register_for_zone(self.context.elevated(), 'domain', 'zone') dnsd = dns_domain.DNSDomain.get_by_domain(self.context, 'domain') self.assertEqual('domain', dnsd.domain) self.assertEqual('zone', dnsd.availability_zone) dns_domain.DNSDomain.delete_by_domain(self.context.elevated(), 'domain') dnsd = dns_domain.DNSDomain.get_by_domain(self.context, 'domain') self.assertIsNone(dnsd) def test_get_all(self): with mock.patch.object(db, 'dnsdomain_get_all') as get: get.return_value = [fake_dnsd] dns_domains = dns_domain.DNSDomainList.get_all(self.context) class TestDNSDomainObject(test_objects._LocalTest, _TestDNSDomain): pass class TestRemoteDNSDomainObject(test_objects._RemoteTest, _TestDNSDomain): pass nova-2014.1/nova/tests/objects/test_keypair.py0000664000175400017540000001020412323721477022522 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import db from nova import exception from nova.objects import keypair from nova.openstack.common import timeutils from nova.tests.objects import test_objects NOW = timeutils.utcnow().replace(microsecond=0) fake_keypair = { 'created_at': NOW, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'name': 'foo-keypair', 'user_id': 'fake-user', 'fingerprint': 'fake-fingerprint', 'public_key': 'fake\npublic\nkey', } class _TestKeyPairObject(object): def test_get_by_name(self): self.mox.StubOutWithMock(db, 'key_pair_get') db.key_pair_get(self.context, 'fake-user', 'foo-keypair').AndReturn( fake_keypair) self.mox.ReplayAll() keypair_obj = keypair.KeyPair.get_by_name(self.context, 'fake-user', 'foo-keypair') self.compare_obj(keypair_obj, fake_keypair) def test_create(self): self.mox.StubOutWithMock(db, 'key_pair_create') db.key_pair_create(self.context, {'name': 'foo-keypair', 'public_key': 'keydata'}).AndReturn(fake_keypair) self.mox.ReplayAll() keypair_obj = keypair.KeyPair() keypair_obj.name = 'foo-keypair' keypair_obj.public_key = 'keydata' keypair_obj.create(self.context) self.compare_obj(keypair_obj, fake_keypair) def test_recreate_fails(self): self.mox.StubOutWithMock(db, 'key_pair_create') db.key_pair_create(self.context, {'name': 'foo-keypair', 'public_key': 'keydata'}).AndReturn(fake_keypair) self.mox.ReplayAll() keypair_obj = keypair.KeyPair() keypair_obj.name = 'foo-keypair' keypair_obj.public_key = 'keydata' keypair_obj.create(self.context) self.assertRaises(exception.ObjectActionError, keypair_obj.create, self.context) def test_destroy(self): self.mox.StubOutWithMock(db, 'key_pair_destroy') db.key_pair_destroy(self.context, 'fake-user', 'foo-keypair') self.mox.ReplayAll() keypair_obj = keypair.KeyPair() keypair_obj.id = 123 keypair_obj.user_id = 'fake-user' keypair_obj.name = 'foo-keypair' keypair_obj.destroy(self.context) def test_destroy_by_name(self): self.mox.StubOutWithMock(db, 'key_pair_destroy') db.key_pair_destroy(self.context, 'fake-user', 'foo-keypair') self.mox.ReplayAll() keypair.KeyPair.destroy_by_name(self.context, 'fake-user', 'foo-keypair') def test_get_by_user(self): self.mox.StubOutWithMock(db, 'key_pair_get_all_by_user') self.mox.StubOutWithMock(db, 'key_pair_count_by_user') db.key_pair_get_all_by_user(self.context, 'fake-user').AndReturn( [fake_keypair]) db.key_pair_count_by_user(self.context, 'fake-user').AndReturn(1) self.mox.ReplayAll() keypairs = keypair.KeyPairList.get_by_user(self.context, 'fake-user') self.assertEqual(1, len(keypairs)) self.compare_obj(keypairs[0], fake_keypair) self.assertEqual(1, keypair.KeyPairList.get_count_by_user(self.context, 'fake-user')) class TestMigrationObject(test_objects._LocalTest, _TestKeyPairObject): pass class TestRemoteMigrationObject(test_objects._RemoteTest, _TestKeyPairObject): pass nova-2014.1/nova/tests/objects/test_block_device.py0000664000175400017540000002610612323721477023477 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import contextlib import mock from nova.cells import rpcapi as cells_rpcapi from nova import db from nova import exception from nova.objects import block_device as block_device_obj from nova.objects import instance as instance_obj from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests.objects import test_objects class _TestBlockDeviceMappingObject(object): def fake_bdm(self, instance=None): instance = instance or {} fake_bdm = fake_block_device.FakeDbBlockDeviceDict({ 'id': 123, 'instance_uuid': instance.get('uuid') or 'fake-instance', 'device_name': '/dev/sda2', 'source_type': 'snapshot', 'destination_type': 'volume', 'connection_info': "{'fake': 'connection_info'}", 'snapshot_id': 'fake-snapshot-id-1', 'boot_index': -1 }) if instance: fake_bdm['instance'] = instance return fake_bdm def test_save(self): fake_bdm = self.fake_bdm() with contextlib.nested( mock.patch.object( db, 'block_device_mapping_update', return_value=fake_bdm), mock.patch.object( cells_rpcapi.CellsAPI, 'bdm_update_or_create_at_top') ) as (bdm_update_mock, cells_update_mock): bdm_object = block_device_obj.BlockDeviceMapping() bdm_object.id = 123 bdm_object.volume_id = 'fake_volume_id' bdm_object.save(self.context) bdm_update_mock.assert_called_once_with( self.context, 123, {'volume_id': 'fake_volume_id'}, legacy=False) cells_update_mock.assert_called_once_with(self.context, fake_bdm) def test_save_instance_changed(self): bdm_object = block_device_obj.BlockDeviceMapping() bdm_object.instance = instance_obj.Instance() self.assertRaises(exception.ObjectActionError, bdm_object.save, self.context) @mock.patch.object(db, 'block_device_mapping_get_by_volume_id') def test_get_by_volume_id(self, get_by_vol_id): get_by_vol_id.return_value = self.fake_bdm() vol_bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( self.context, 'fake-volume-id') for attr in block_device_obj.BLOCK_DEVICE_OPTIONAL_ATTRS: self.assertFalse(vol_bdm.obj_attr_is_set(attr)) self.assertRemotes() @mock.patch.object(db, 'block_device_mapping_get_by_volume_id') def test_get_by_volume_id_not_found(self, get_by_vol_id): get_by_vol_id.return_value = None self.assertRaises(exception.VolumeBDMNotFound, block_device_obj.BlockDeviceMapping.get_by_volume_id, self.context, 'fake-volume-id') @mock.patch.object(db, 'block_device_mapping_get_by_volume_id') def test_get_by_volume_instance_uuid_missmatch(self, get_by_vol_id): fake_bdm_vol = self.fake_bdm(instance={'uuid': 'other-fake-instance'}) get_by_vol_id.return_value = fake_bdm_vol self.assertRaises(exception.InvalidVolume, block_device_obj.BlockDeviceMapping.get_by_volume_id, self.context, 'fake-volume-id', instance_uuid='fake-instance') @mock.patch.object(db, 'block_device_mapping_get_by_volume_id') def test_get_by_volume_id_with_expected(self, get_by_vol_id): get_by_vol_id.return_value = self.fake_bdm( fake_instance.fake_db_instance()) vol_bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( self.context, 'fake-volume-id', expected_attrs=['instance']) for attr in block_device_obj.BLOCK_DEVICE_OPTIONAL_ATTRS: self.assertTrue(vol_bdm.obj_attr_is_set(attr)) get_by_vol_id.assert_called_once_with(self.context, 'fake-volume-id', ['instance']) self.assertRemotes() def test_create_mocked(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': 'fake-instance'} fake_bdm = fake_block_device.FakeDbBlockDeviceDict(values) with contextlib.nested( mock.patch.object( db, 'block_device_mapping_create', return_value=fake_bdm), mock.patch.object(cells_rpcapi.CellsAPI, 'bdm_update_or_create_at_top') ) as (bdm_create_mock, cells_update_mock): bdm = block_device_obj.BlockDeviceMapping(**values) bdm.create(self.context) bdm_create_mock.assert_called_once_with( self.context, values, legacy=False) cells_update_mock.assert_called_once_with( self.context, fake_bdm, create=True) def test_create(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': 'fake-instance'} bdm = block_device_obj.BlockDeviceMapping(**values) with mock.patch.object(cells_rpcapi.CellsAPI, 'bdm_update_or_create_at_top'): bdm.create(self.context) for k, v in values.iteritems(): self.assertEqual(v, getattr(bdm, k)) def test_create_fails(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': 'fake-instance'} bdm = block_device_obj.BlockDeviceMapping(**values) bdm.create(self.context) self.assertRaises(exception.ObjectActionError, bdm.create, self.context) def test_create_fails_instance(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': 'fake-instance', 'instance': instance_obj.Instance()} bdm = block_device_obj.BlockDeviceMapping(**values) self.assertRaises(exception.ObjectActionError, bdm.create, self.context) def test_destroy_mocked(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'id': 1, 'instance_uuid': 'fake-instance', 'device_name': 'fake'} with contextlib.nested( mock.patch.object(db, 'block_device_mapping_destroy'), mock.patch.object(cells_rpcapi.CellsAPI, 'bdm_destroy_at_top') ) as (bdm_del, cells_destroy): bdm = block_device_obj.BlockDeviceMapping(**values) bdm.destroy(self.context) bdm_del.assert_called_once_with(self.context, values['id']) cells_destroy.assert_called_once_with( self.context, values['instance_uuid'], device_name=values['device_name'], volume_id=values['volume_id']) class TestBlockDeviceMappingObject(test_objects._LocalTest, _TestBlockDeviceMappingObject): pass class TestRemoteBlockDeviceMappingObject(test_objects._RemoteTest, _TestBlockDeviceMappingObject): pass class _TestBlockDeviceMappingListObject(object): def fake_bdm(self, bdm_id): fake_bdm = fake_block_device.FakeDbBlockDeviceDict({ 'id': bdm_id, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'source_type': 'snapshot', 'destination_type': 'volume', 'connection_info': "{'fake': 'connection_info'}", 'snapshot_id': 'fake-snapshot-id-1', 'boot_index': -1, }) return fake_bdm @mock.patch.object(db, 'block_device_mapping_get_all_by_instance') def test_get_by_instance_uuid(self, get_all_by_inst): fakes = [self.fake_bdm(123), self.fake_bdm(456)] get_all_by_inst.return_value = fakes bdm_list = ( block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, 'fake_instance_uuid')) for faked, got in zip(fakes, bdm_list): self.assertIsInstance(got, block_device_obj.BlockDeviceMapping) self.assertEqual(faked['id'], got.id) @mock.patch.object(db, 'block_device_mapping_get_all_by_instance') def test_get_by_instance_uuid_no_result(self, get_all_by_inst): get_all_by_inst.return_value = None bdm_list = ( block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( self.context, 'fake_instance_uuid')) self.assertEqual(0, len(bdm_list)) def test_root_volume_metadata(self): fake_volume = { 'volume_image_metadata': {'vol_test_key': 'vol_test_value'}} class FakeVolumeApi(object): def get(*args, **kwargs): return fake_volume block_device_mapping = block_device_obj.block_device_make_list(None, [ fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'boot_index': 0, 'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 'fake_volume_id', 'delete_on_termination': False})]) volume_meta = block_device_mapping.root_metadata( self.context, None, FakeVolumeApi()) self.assertEqual(fake_volume['volume_image_metadata'], volume_meta) def test_root_image_metadata(self): fake_image = {'properties': {'img_test_key': 'img_test_value'}} class FakeImageApi(object): def show(*args, **kwargs): return fake_image block_device_mapping = block_device_obj.block_device_make_list(None, [ fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'boot_index': 0, 'source_type': 'image', 'destination_type': 'local', 'image_id': "fake-image", 'delete_on_termination': True})]) image_meta = block_device_mapping.root_metadata( self.context, FakeImageApi(), None) self.assertEqual(fake_image['properties'], image_meta) class TestBlockDeviceMappingListObject(test_objects._LocalTest, _TestBlockDeviceMappingListObject): pass class TestRemoteBlockDeviceMappingListObject( test_objects._RemoteTest, _TestBlockDeviceMappingListObject): pass nova-2014.1/nova/tests/objects/__init__.py0000664000175400017540000000113412323721477021560 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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. nova-2014.1/nova/tests/objects/test_fixed_ip.py0000664000175400017540000003222212323721477022651 0ustar jenkinsjenkins00000000000000# Copyright 2014 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. import datetime import iso8601 import mock import netaddr from nova import exception from nova.objects import fixed_ip from nova.openstack.common import timeutils from nova.tests import fake_instance from nova.tests.objects import test_network from nova.tests.objects import test_objects fake_fixed_ip = { 'created_at': None, 'updated_at': None, 'deleted_at': None, 'deleted': False, 'id': 123, 'address': '192.168.1.100', 'network_id': None, 'virtual_interface_id': None, 'instance_uuid': None, 'allocated': False, 'leased': False, 'reserved': False, 'host': None, } class _TestFixedIPObject(object): def _compare(self, obj, db_obj): for field in obj.fields: if field is 'virtual_interface': continue if field in fixed_ip.FIXED_IP_OPTIONAL_ATTRS: if obj.obj_attr_is_set(field) and db_obj[field] is not None: obj_val = obj[field].uuid db_val = db_obj[field]['uuid'] else: continue else: obj_val = obj[field] db_val = db_obj[field] if isinstance(obj_val, netaddr.IPAddress): obj_val = str(obj_val) self.assertEqual(db_val, obj_val) @mock.patch('nova.db.fixed_ip_get') def test_get_by_id(self, get): get.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP.get_by_id(self.context, 123) get.assert_called_once_with(self.context, 123, get_network=False) self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_get') @mock.patch('nova.db.network_get') def test_get_by_id_with_extras(self, network_get, fixed_get): db_fixed = dict(fake_fixed_ip, network=test_network.fake_network) fixed_get.return_value = db_fixed fixedip = fixed_ip.FixedIP.get_by_id(self.context, 123, expected_attrs=['network']) fixed_get.assert_called_once_with(self.context, 123, get_network=True) self._compare(fixedip, db_fixed) self.assertEqual(db_fixed['network']['uuid'], fixedip.network.uuid) self.assertFalse(network_get.called) @mock.patch('nova.db.fixed_ip_get_by_address') def test_get_by_address(self, get): get.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP.get_by_address(self.context, '1.2.3.4') get.assert_called_once_with(self.context, '1.2.3.4', columns_to_join=[]) self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') @mock.patch('nova.db.instance_get') def test_get_by_address_with_extras(self, instance_get, network_get, fixed_get): db_fixed = dict(fake_fixed_ip, network=test_network.fake_network, instance=fake_instance.fake_db_instance()) fixed_get.return_value = db_fixed fixedip = fixed_ip.FixedIP.get_by_address(self.context, '1.2.3.4', expected_attrs=['network', 'instance']) fixed_get.assert_called_once_with(self.context, '1.2.3.4', columns_to_join=['network', 'instance']) self._compare(fixedip, db_fixed) self.assertEqual(db_fixed['network']['uuid'], fixedip.network.uuid) self.assertEqual(db_fixed['instance']['uuid'], fixedip.instance.uuid) self.assertFalse(network_get.called) self.assertFalse(instance_get.called) @mock.patch('nova.db.fixed_ip_get_by_address') @mock.patch('nova.db.network_get') @mock.patch('nova.db.instance_get') def test_get_by_address_with_extras_deleted_instance(self, instance_get, network_get, fixed_get): db_fixed = dict(fake_fixed_ip, network=test_network.fake_network, instance=None) fixed_get.return_value = db_fixed fixedip = fixed_ip.FixedIP.get_by_address(self.context, '1.2.3.4', expected_attrs=['network', 'instance']) fixed_get.assert_called_once_with(self.context, '1.2.3.4', columns_to_join=['network', 'instance']) self._compare(fixedip, db_fixed) self.assertEqual(db_fixed['network']['uuid'], fixedip.network.uuid) self.assertIsNone(fixedip.instance) self.assertFalse(network_get.called) self.assertFalse(instance_get.called) @mock.patch('nova.db.fixed_ip_get_by_floating_address') def test_get_by_floating_ip(self, get): get.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP.get_by_floating_address(self.context, '1.2.3.4') get.assert_called_once_with(self.context, '1.2.3.4') self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_get_by_network_host') def test_get_by_network_and_host(self, get): get.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP.get_by_network_and_host(self.context, 123, 'host') get.assert_called_once_with(self.context, 123, 'host') self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_associate') def test_associate(self, associate): associate.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP.associate(self.context, '1.2.3.4', 'fake-uuid') associate.assert_called_with(self.context, '1.2.3.4', 'fake-uuid', network_id=None, reserved=False) self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_associate_pool') def test_associate_pool(self, associate): associate.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP.associate_pool(self.context, 123, 'fake-uuid', 'host') associate.assert_called_with(self.context, 123, instance_uuid='fake-uuid', host='host') self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_disassociate') def test_disassociate_by_address(self, disassociate): fixed_ip.FixedIP.disassociate_by_address(self.context, '1.2.3.4') disassociate.assert_called_with(self.context, '1.2.3.4') @mock.patch('nova.db.fixed_ip_disassociate_all_by_timeout') def test_disassociate_all_by_timeout(self, disassociate): now = timeutils.utcnow() now_tz = timeutils.parse_isotime( timeutils.isotime(now)).replace( tzinfo=iso8601.iso8601.Utc()) disassociate.return_value = 123 result = fixed_ip.FixedIP.disassociate_all_by_timeout(self.context, 'host', now) self.assertEqual(123, result) # NOTE(danms): be pedantic about timezone stuff args, kwargs = disassociate.call_args_list[0] self.assertEqual(now_tz, args[2]) self.assertEqual((self.context, 'host'), args[:2]) self.assertEqual({}, kwargs) @mock.patch('nova.db.fixed_ip_create') def test_create(self, create): create.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP(address='1.2.3.4') fixedip.create(self.context) create.assert_called_once_with( self.context, {'address': '1.2.3.4'}) self._compare(fixedip, fake_fixed_ip) @mock.patch('nova.db.fixed_ip_update') def test_save(self, update): update.return_value = fake_fixed_ip fixedip = fixed_ip.FixedIP(context=self.context, address='1.2.3.4', instance_uuid='fake-uuid') self.assertRaises(exception.ObjectActionError, fixedip.save) fixedip.obj_reset_changes(['address']) fixedip.save() update.assert_called_once_with(self.context, '1.2.3.4', {'instance_uuid': 'fake-uuid'}) @mock.patch('nova.db.fixed_ip_disassociate') def test_disassociate(self, disassociate): fixedip = fixed_ip.FixedIP(context=self.context, address='1.2.3.4', instance_uuid='fake-uuid') fixedip.obj_reset_changes() fixedip.disassociate() disassociate.assert_called_once_with(self.context, '1.2.3.4') self.assertIsNone(fixedip.instance_uuid) @mock.patch('nova.db.fixed_ip_get_all') def test_get_all(self, get_all): get_all.return_value = [fake_fixed_ip] fixedips = fixed_ip.FixedIPList.get_all(self.context) self.assertEqual(1, len(fixedips)) get_all.assert_called_once_with(self.context) self._compare(fixedips[0], fake_fixed_ip) @mock.patch('nova.db.fixed_ip_get_by_instance') def test_get_by_instance(self, get): get.return_value = [fake_fixed_ip] fixedips = fixed_ip.FixedIPList.get_by_instance_uuid(self.context, 'fake-uuid') self.assertEqual(1, len(fixedips)) get.assert_called_once_with(self.context, 'fake-uuid') self._compare(fixedips[0], fake_fixed_ip) @mock.patch('nova.db.fixed_ip_get_by_host') def test_get_by_host(self, get): get.return_value = [fake_fixed_ip] fixedips = fixed_ip.FixedIPList.get_by_host(self.context, 'host') self.assertEqual(1, len(fixedips)) get.assert_called_once_with(self.context, 'host') self._compare(fixedips[0], fake_fixed_ip) @mock.patch('nova.db.fixed_ips_by_virtual_interface') def test_get_by_virtual_interface_id(self, get): get.return_value = [fake_fixed_ip] fixedips = fixed_ip.FixedIPList.get_by_virtual_interface_id( self.context, 123) self.assertEqual(1, len(fixedips)) get.assert_called_once_with(self.context, 123) self._compare(fixedips[0], fake_fixed_ip) @mock.patch('nova.db.fixed_ip_bulk_create') def test_bulk_create(self, bulk): fixed_ips = [fixed_ip.FixedIP(address='192.168.1.1'), fixed_ip.FixedIP(address='192.168.1.2')] fixed_ip.FixedIPList.bulk_create(self.context, fixed_ips) bulk.assert_called_once_with(self.context, [{'address': '192.168.1.1'}, {'address': '192.168.1.2'}]) @mock.patch('nova.db.network_get_associated_fixed_ips') def test_get_by_network(self, get): info = {'address': '1.2.3.4', 'instance_uuid': 'fake-uuid', 'network_id': 0, 'vif_id': 1, 'vif_address': 'de:ad:be:ee:f0:00', 'instance_hostname': 'fake-host', 'instance_updated': datetime.datetime(1955, 11, 5), 'instance_created': datetime.datetime(1955, 11, 5), 'allocated': True, 'leased': True, } get.return_value = [info] fixed_ips = fixed_ip.FixedIPList.get_by_network( self.context, {'id': 0}, host='fake-host') get.assert_called_once_with(self.context, 0, host='fake-host') self.assertEqual(1, len(fixed_ips)) fip = fixed_ips[0] self.assertEqual('1.2.3.4', str(fip.address)) self.assertEqual('fake-uuid', fip.instance_uuid) self.assertEqual(0, fip.network_id) self.assertEqual(1, fip.virtual_interface_id) self.assertTrue(fip.allocated) self.assertTrue(fip.leased) self.assertEqual('fake-uuid', fip.instance.uuid) self.assertEqual('fake-host', fip.instance.hostname) self.assertIsInstance(fip.instance.created_at, datetime.datetime) self.assertIsInstance(fip.instance.updated_at, datetime.datetime) self.assertEqual(1, fip.virtual_interface.id) self.assertEqual(info['vif_address'], fip.virtual_interface.address) class TestFixedIPObject(test_objects._LocalTest, _TestFixedIPObject): pass class TestRemoteFixedIPObject(test_objects._RemoteTest, _TestFixedIPObject): pass nova-2014.1/nova/tests/__init__.py0000664000175400017540000000314312323721477020131 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ :mod:`nova.tests` -- Nova Unittests ===================================================== .. automodule:: nova.tests :platform: Unix """ # TODO(mikal): move eventlet imports to nova.__init__ once we move to PBR import os import sys # NOTE(mikal): All of this is because if dnspython is present in your # environment then eventlet monkeypatches socket.getaddrinfo() with an # implementation which doesn't work for IPv6. What we're checking here is # that the magic environment variable was set when the import happened. if ('eventlet' in sys.modules and os.environ.get('EVENTLET_NO_GREENDNS', '').lower() != 'yes'): raise ImportError('eventlet imported before nova/cmd/__init__ ' '(env var set to %s)' % os.environ.get('EVENTLET_NO_GREENDNS')) os.environ['EVENTLET_NO_GREENDNS'] = 'yes' import eventlet eventlet.monkey_patch(os=False) nova-2014.1/nova/tests/fake_loadables/0000775000175400017540000000000012323722546020731 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/tests/fake_loadables/fake_loadable1.py0000664000175400017540000000236312323721477024123 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Fake Loadable subclasses module #1 """ from nova.tests import fake_loadables class FakeLoadableSubClass1(fake_loadables.FakeLoadable): pass class FakeLoadableSubClass2(fake_loadables.FakeLoadable): pass class _FakeLoadableSubClass3(fake_loadables.FakeLoadable): """Classes beginning with '_' will be ignored.""" pass class FakeLoadableSubClass4(object): """Not a correct subclass.""" def return_valid_classes(): return [FakeLoadableSubClass1, FakeLoadableSubClass2] def return_invalid_classes(): return [FakeLoadableSubClass1, _FakeLoadableSubClass3, FakeLoadableSubClass4] nova-2014.1/nova/tests/fake_loadables/fake_loadable2.py0000664000175400017540000000214312323721477024120 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Fake Loadable subclasses module #2 """ from nova.tests import fake_loadables class FakeLoadableSubClass5(fake_loadables.FakeLoadable): pass class FakeLoadableSubClass6(fake_loadables.FakeLoadable): pass class _FakeLoadableSubClass7(fake_loadables.FakeLoadable): """Classes beginning with '_' will be ignored.""" pass class FakeLoadableSubClass8(BaseException): """Not a correct subclass.""" def return_valid_class(): return [FakeLoadableSubClass6] nova-2014.1/nova/tests/fake_loadables/__init__.py0000664000175400017540000000154312323721477023047 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Fakes For Loadable class handling. """ from nova import loadables class FakeLoadable(object): pass class FakeLoader(loadables.BaseLoader): def __init__(self): super(FakeLoader, self).__init__(FakeLoadable) nova-2014.1/nova/pci/0000775000175400017540000000000012323722546015426 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/pci/pci_stats.py0000664000175400017540000001230112323721477017770 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Intel, Inc. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.pci import pci_utils LOG = logging.getLogger(__name__) class PciDeviceStats(object): """PCI devices summary information. According to the PCI SR-IOV spec, a PCI physical function can have up to 256 PCI virtual functions, thus the number of assignable PCI functions in a cloud can be big. The scheduler needs to know all device availability information in order to determine which compute hosts can support a PCI request. Passing individual virtual device information to the scheduler does not scale, so we provide summary information. Usually the virtual functions provided by a host PCI device have the same value for most properties, like vendor_id, product_id and class type. The PCI stats class summarizes this information for the scheduler. The pci stats information is maintained exclusively by compute node resource tracker and updated to database. The scheduler fetches the information and selects the compute node accordingly. If a comptue node is selected, the resource tracker allocates the devices to the instance and updates the pci stats information. This summary information will be helpful for cloud management also. """ pool_keys = ['product_id', 'vendor_id', 'extra_info'] def __init__(self, stats=None): super(PciDeviceStats, self).__init__() self.pools = jsonutils.loads(stats) if stats else [] def _equal_properties(self, dev, entry): return all(dev.get(prop) == entry.get(prop) for prop in self.pool_keys) def _get_first_pool(self, dev): """Return the first pool that matches dev.""" return next((pool for pool in self.pools if self._equal_properties(dev, pool)), None) def add_device(self, dev): """Add a device to the first matching pool.""" pool = self._get_first_pool(dev) if not pool: pool = dict((k, dev.get(k)) for k in self.pool_keys) pool['count'] = 0 self.pools.append(pool) pool['count'] += 1 @staticmethod def _decrease_pool_count(pool_list, pool, count=1): """Decrement pool's size by count. If pool becomes empty, remove pool from pool_list. """ if pool['count'] > count: pool['count'] -= count count = 0 else: count -= pool['count'] pool_list.remove(pool) return count def consume_device(self, dev): """Remove one device from the first pool that it matches.""" pool = self._get_first_pool(dev) if not pool: raise exception.PciDevicePoolEmpty( compute_node_id=dev.compute_node_id, address=dev.address) self._decrease_pool_count(self.pools, pool) @staticmethod def _filter_pools_for_spec(pools, request_specs): return [pool for pool in pools if pci_utils.pci_device_prop_match(pool, request_specs)] def _apply_request(self, pools, request): count = request['count'] matching_pools = self._filter_pools_for_spec(pools, request['spec']) if sum([pool['count'] for pool in matching_pools]) < count: return False else: for pool in matching_pools: count = self._decrease_pool_count(pools, pool, count) if not count: break return True def support_requests(self, requests): """Check if the pci requests can be met. Scheduler checks compute node's PCI stats to decide if an instance can be scheduled into the node. Support does not mean real allocation. """ # note (yjiang5): this function has high possibility to fail, # so no exception should be triggered for performance reason. pools = copy.deepcopy(self.pools) return all([self._apply_request(pools, r) for r in requests]) def apply_requests(self, requests): """Apply PCI requests to the PCI stats. This is used in multiple instance creation, when the scheduler has to maintain how the resources are consumed by the instances. """ if not all([self._apply_request(self.pools, r) for r in requests]): raise exception.PciDeviceRequestFailed(requests=requests) def __iter__(self): return iter(self.pools) def clear(self): """Clear all the stats maintained.""" self.pools = [] nova-2014.1/nova/pci/pci_utils.py0000664000175400017540000000363712323721477020006 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Intel, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import re from nova import exception PCI_VENDOR_PATTERN = "^(hex{4})$".replace("hex", "[\da-fA-F]") _PCI_ADDRESS_PATTERN = ("^(hex{4}):(hex{2}):(hex{2}).(oct{1})$". replace("hex", "[\da-fA-F]"). replace("oct", "[0-7]")) _PCI_ADDRESS_REGEX = re.compile(_PCI_ADDRESS_PATTERN) def pci_device_prop_match(pci_dev, specs): """Check if the pci_dev meet spec requirement Specs is a list of PCI device property requirements. An example of device requirement that the PCI should be either: a) Device with vendor_id as 0x8086 and product_id as 0x8259, or b) Device with vendor_id as 0x10de and product_id as 0x10d8: [{"vendor_id":"8086", "product_id":"8259"}, {"vendor_id":"10de", "product_id":"10d8"}] """ def _matching_devices(spec): return all(pci_dev.get(k) == v for k, v in spec.iteritems()) return any(_matching_devices(spec) for spec in specs) def parse_address(address): """Returns (domain, bus, slot, function) from PCI address that is stored in PciDevice DB table. """ m = _PCI_ADDRESS_REGEX.match(address) if not m: raise exception.PciDeviceWrongAddressFormat(address=address) return m.groups() nova-2014.1/nova/pci/pci_whitelist.py0000664000175400017540000000727112323721477020660 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Intel, Inc. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import jsonschema from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.pci import pci_utils from oslo.config import cfg pci_opts = [cfg.MultiStrOpt('pci_passthrough_whitelist', default=[], help='White list of PCI devices available to VMs. ' 'For example: pci_passthrough_whitelist = ' '[{"vendor_id": "8086", "product_id": "0443"}]' ) ] CONF = cfg.CONF CONF.register_opts(pci_opts) LOG = logging.getLogger(__name__) _PCI_VENDOR_PATTERN = "^(hex{4})$".replace("hex", "[\da-fA-F]") _WHITELIST_SCHEMA = { "type": "array", "items": { "type": "object", "additionalProperties": False, "properties": { "product_id": { "type": "string", "pattern": _PCI_VENDOR_PATTERN }, "vendor_id": { "type": "string", "pattern": _PCI_VENDOR_PATTERN }, }, "required": ["product_id", "vendor_id"] } } class PciHostDevicesWhiteList(object): """White list class to decide assignable pci devices. Not all devices on compute node can be assigned to guest, the cloud administrator decides the devices that can be assigned based on vendor_id or product_id etc. If no white list specified, no device will be assignable. """ def _parse_white_list_from_config(self, whitelists): """Parse and validate the pci whitelist from the nova config.""" specs = [] try: for jsonspecs in whitelists: spec = jsonutils.loads(jsonspecs) jsonschema.validate(spec, _WHITELIST_SCHEMA) specs.extend(spec) except Exception as e: raise exception.PciConfigInvalidWhitelist(reason=str(e)) return specs def __init__(self, whitelist_spec=None): """White list constructor For example, followed json string specifies that devices whose vendor_id is '8086' and product_id is '1520' can be assigned to guest. '[{"product_id":"1520", "vendor_id":"8086"}]' :param whitelist_spec: A json string for a list of dictionaries, each dictionary specifies the pci device properties requirement. """ super(PciHostDevicesWhiteList, self).__init__() if whitelist_spec: self.spec = self._parse_white_list_from_config(whitelist_spec) else: self.spec = None def device_assignable(self, dev): """Check if a device can be assigned to a guest. :param dev: A dictionary describing the device properties """ if self.spec is None: return False return pci_utils.pci_device_prop_match(dev, self.spec) def get_pci_devices_filter(): return PciHostDevicesWhiteList(CONF.pci_passthrough_whitelist) nova-2014.1/nova/pci/pci_manager.py0000664000175400017540000003052012323721510020233 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Intel, Inc. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import collections from nova.compute import task_states from nova.compute import vm_states from nova import context from nova import exception from nova.objects import instance from nova.objects import pci_device from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.pci import pci_request from nova.pci import pci_stats from nova.pci import pci_utils LOG = logging.getLogger(__name__) class PciDevTracker(object): """Manage pci devices in a compute node. This class fetches pci passthrough information from hypervisor and trackes the usage of these devices. It's called by compute node resource tracker to allocate and free devices to/from instances, and to update the available pci passthrough devices information from hypervisor periodically. The devices information is updated to DB when devices information is changed. """ def __init__(self, node_id=None): """Create a pci device tracker. If a node_id is passed in, it will fetch pci devices information from database, otherwise, it will create an empty devices list and the resource tracker will update the node_id information later. """ super(PciDevTracker, self).__init__() self.stale = {} self.node_id = node_id self.stats = pci_stats.PciDeviceStats() if node_id: self.pci_devs = pci_device.PciDeviceList.get_by_compute_node( context, node_id) else: self.pci_devs = pci_device.PciDeviceList() self._initial_instance_usage() def _initial_instance_usage(self): self.allocations = collections.defaultdict(list) self.claims = collections.defaultdict(list) for dev in self.pci_devs: uuid = dev['instance_uuid'] if dev['status'] == 'claimed': self.claims[uuid].append(dev) elif dev['status'] == 'allocated': self.allocations[uuid].append(dev) elif dev['status'] == 'available': self.stats.add_device(dev) def _filter_devices_for_spec(self, request_spec, pci_devs): return [p for p in pci_devs if pci_utils.pci_device_prop_match(p, request_spec)] def _get_free_devices_for_request(self, pci_request, pci_devs): count = pci_request.get('count', 1) spec = pci_request.get('spec', []) devs = self._filter_devices_for_spec(spec, pci_devs) if len(devs) < count: return None else: return devs[:count] @property def free_devs(self): return [dev for dev in self.pci_devs if dev.status == 'available'] def get_free_devices_for_requests(self, pci_requests): """Select free pci devices for requests Pci_requests is a list of pci_request dictionaries. Each dictionary has three keys: count: number of pci devices required, default 1 spec: the pci properties that the devices should meet alias_name: alias the pci_request is translated from, optional If any single pci_request cannot find any free devices, then the entire request list will fail. """ alloc = [] for request in pci_requests: available = self._get_free_devices_for_request( request, [p for p in self.free_devs if p not in alloc]) if not available: return [] alloc.extend(available) return alloc @property def all_devs(self): return self.pci_devs def save(self, context): for dev in self.pci_devs: if dev.obj_what_changed(): dev.save(context) self.pci_devs.objects = [dev for dev in self.pci_devs if dev['status'] != 'deleted'] @property def pci_stats(self): return self.stats def set_hvdevs(self, devices): """Sync the pci device tracker with hypervisor information. To support pci device hot plug, we sync with the hypervisor periodically, fetching all devices information from hypervisor, update the tracker and sync the DB information. Devices should not be hot-plugged when assigned to a guest, but possibly the hypervisor has no such guarantee. The best we can do is to give a warning if a device is changed or removed while assigned. """ exist_addrs = set([dev['address'] for dev in self.pci_devs]) new_addrs = set([dev['address'] for dev in devices]) for existed in self.pci_devs: if existed['address'] in exist_addrs - new_addrs: try: existed.remove() except exception.PciDeviceInvalidStatus as e: LOG.warn(_("Trying to remove device with %(status)s " "ownership %(instance_uuid)s because of " "%(pci_exception)s"), {'status': existed.status, 'instance_uuid': existed.instance_uuid, 'pci_exception': e.format_message()}) # Note(yjiang5): remove the device by force so that # db entry is cleaned in next sync. existed.status = 'removed' else: # Note(yjiang5): no need to update stats if an assigned # device is hot removed. self.stats.consume_device(existed) else: new_value = next((dev for dev in devices if dev['address'] == existed['address'])) new_value['compute_node_id'] = self.node_id if existed['status'] in ('claimed', 'allocated'): # Pci properties may change while assigned because of # hotplug or config changes. Although normally this should # not happen. # As the devices have been assigned to a instance, we defer # the change till the instance is destroyed. We will # not sync the new properties with database before that. # TODO(yjiang5): Not sure if this is a right policy, but # at least it avoids some confusion and, if needed, # we can add more action like killing the instance # by force in future. self.stale[dev['address']] = dev else: existed.update_device(new_value) for dev in [dev for dev in devices if dev['address'] in new_addrs - exist_addrs]: dev['compute_node_id'] = self.node_id dev_obj = pci_device.PciDevice.create(dev) self.pci_devs.objects.append(dev_obj) self.stats.add_device(dev_obj) def _claim_instance(self, instance, prefix=''): pci_requests = pci_request.get_instance_pci_requests( instance, prefix) if not pci_requests: return None devs = self.get_free_devices_for_requests(pci_requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: dev.claim(instance) self.stats.consume_device(dev) return devs def _allocate_instance(self, instance, devs): for dev in devs: dev.allocate(instance) def _free_device(self, dev, instance=None): dev.free(instance) stale = self.stale.pop(dev['address'], None) if stale: dev.update_device(stale) self.stats.add_device(dev) def _free_instance(self, instance): # Note(yjiang5): When a instance is resized, the devices in the # destination node are claimed to the instance in prep_resize stage. # However, the instance contains only allocated devices # information, not the claimed one. So we can't use # instance['pci_devices'] to check the devices to be freed. for dev in self.pci_devs: if (dev['status'] in ('claimed', 'allocated') and dev['instance_uuid'] == instance['uuid']): self._free_device(dev) def update_pci_for_instance(self, instance): """Update instance's pci usage information. The caller should hold the COMPUTE_RESOURCE_SEMAPHORE lock """ uuid = instance['uuid'] vm_state = instance['vm_state'] task_state = instance['task_state'] if vm_state == vm_states.DELETED: if self.allocations.pop(uuid, None): self._free_instance(instance) elif self.claims.pop(uuid, None): self._free_instance(instance) elif task_state == task_states.RESIZE_MIGRATED: devs = self.allocations.pop(uuid, None) if devs: self._free_instance(instance) elif task_state == task_states.RESIZE_FINISH: devs = self.claims.pop(uuid, None) if devs: self._allocate_instance(instance, devs) self.allocations[uuid] = devs elif (uuid not in self.allocations and uuid not in self.claims): devs = self._claim_instance(instance) if devs: self._allocate_instance(instance, devs) self.allocations[uuid] = devs def update_pci_for_migration(self, instance, sign=1): """Update instance's pci usage information when it is migrated. The caller should hold the COMPUTE_RESOURCE_SEMAPHORE lock. :param sign: claim devices for instance when sign is 1, remove the claims when sign is -1 """ uuid = instance['uuid'] if sign == 1 and uuid not in self.claims: devs = self._claim_instance(instance, 'new_') if devs: self.claims[uuid] = devs if sign == -1 and uuid in self.claims: self._free_instance(instance) def clean_usage(self, instances, migrations, orphans): """Remove all usages for instances not passed in the parameter. The caller should hold the COMPUTE_RESOURCE_SEMAPHORE lock """ existed = [inst['uuid'] for inst in instances] existed += [mig['instance_uuid'] for mig in migrations] existed += [inst['uuid'] for inst in orphans] for uuid in self.claims.keys(): if uuid not in existed: devs = self.claims.pop(uuid, []) for dev in devs: self._free_device(dev) for uuid in self.allocations.keys(): if uuid not in existed: devs = self.allocations.pop(uuid, []) for dev in devs: self._free_device(dev) def set_compute_node_id(self, node_id): """Set the compute node id that this object is tracking for. In current resource tracker implementation, the compute_node entry is created in the last step of update_available_resoruces, thus we have to lazily set the compute_node_id at that time. """ if self.node_id and self.node_id != node_id: raise exception.PciTrackerInvalidNodeId(node_id=self.node_id, new_node_id=node_id) self.node_id = node_id for dev in self.pci_devs: dev.compute_node_id = node_id def get_instance_pci_devs(inst): """Get the devices assigned to the instances.""" if isinstance(inst, instance.Instance): return inst.pci_devices else: ctxt = context.get_admin_context() return pci_device.PciDeviceList.get_by_instance_uuid( ctxt, inst['uuid']) nova-2014.1/nova/pci/pci_request.py0000664000175400017540000001700512323721477020330 0ustar jenkinsjenkins00000000000000# Copyright 2013 Intel Corporation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Example of a PCI alias: pci_alias = '{ "name": "QuicAssist", "product_id": "0443", "vendor_id": "8086", "device_type": "ACCEL", }' Aliases with the same name and the same device_type are OR operation: pci_alias = '{ "name": "QuicAssist", "product_id": "0442", "vendor_id": "8086", "device_type": "ACCEL", }' These 2 aliases define a device request meaning: vendor_id is "8086" and product id is "0442" or "0443". """ import copy import jsonschema from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.pci import pci_utils from nova import utils from oslo.config import cfg pci_alias_opts = [ cfg.MultiStrOpt('pci_alias', default=[], help='An alias for a PCI passthrough device requirement. ' 'This allows users to specify the alias in the ' 'extra_spec for a flavor, without needing to repeat ' 'all the PCI property requirements. For example: ' 'pci_alias = ' '{ "name": "QuicAssist", ' ' "product_id": "0443", ' ' "vendor_id": "8086", ' ' "device_type": "ACCEL" ' '} ' 'defines an alias for the Intel QuickAssist card. ' '(multi valued)' ) ] CONF = cfg.CONF CONF.register_opts(pci_alias_opts) LOG = logging.getLogger(__name__) _ALIAS_DEV_TYPE = ['NIC', 'ACCEL', 'GPU'] _ALIAS_CAP_TYPE = ['pci'] _ALIAS_SCHEMA = { "type": "object", "additionalProperties": False, "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, }, "capability_type": { "type": "string", "enum": _ALIAS_CAP_TYPE, }, "product_id": { "type": "string", "pattern": pci_utils.PCI_VENDOR_PATTERN, }, "vendor_id": { "type": "string", "pattern": pci_utils.PCI_VENDOR_PATTERN, }, "device_type": { "type": "string", "enum": _ALIAS_DEV_TYPE, }, }, "required": ["name"], } def _get_alias_from_config(): """Parse and validate PCI aliases from the nova config.""" jaliases = CONF.pci_alias aliases = {} # map alias name to alias spec list try: for jsonspecs in jaliases: spec = jsonutils.loads(jsonspecs) jsonschema.validate(spec, _ALIAS_SCHEMA) name = spec.pop("name") if name not in aliases: aliases[name] = [spec] else: if aliases[name][0]["device_type"] == spec["device_type"]: aliases[name].append(spec) else: reason = "Device type mismatch for alias '%s'" % name raise exception.PciInvalidAlias(reason=reason) except exception.PciInvalidAlias: raise except Exception as e: raise exception.PciInvalidAlias(reason=str(e)) return aliases def _translate_alias_to_requests(alias_spec): """Generate complete pci requests from pci aliases in extra_spec.""" pci_aliases = _get_alias_from_config() pci_requests = [] # list of a specs dict alias_spec = alias_spec.replace(' ', '') for name, count in [spec.split(':') for spec in alias_spec.split(',')]: if name not in pci_aliases: raise exception.PciRequestAliasNotDefined(alias=name) else: request = {'count': int(count), 'spec': copy.deepcopy(pci_aliases[name]), 'alias_name': name} pci_requests.append(request) return pci_requests def get_pci_requests_from_flavor(flavor): """Get flavor's pci request. The pci_passthrough:alias scope in flavor extra_specs describes the flavor's pci requests, the key is 'pci_passthrough:alias' and the value has format 'alias_name_x:count, alias_name_y:count, ... '. The alias_name is defined in 'pci_alias' configurations. The flavor's requirement is translated into pci requests list, each entry in the list is a dictionary. The dictionary has three keys. The 'specs' gives the pci device properties requirement, the 'count' gives the number of devices, and the optional 'alias_name' is the corresponding alias definition name. Example: Assume alias configuration is: {'vendor_id':'8086', 'device_id':'1502', 'name':'alias_1'} The flavor extra specs includes: 'pci_passthrough:alias': 'alias_1:2'. The returned pci_requests are: pci_requests = [{'count':2, 'specs': [{'vendor_id':'8086', 'device_id':'1502'}], 'alias_name': 'alias_1'}] :param flavor: the flavor to be checked :returns: a list of pci requests """ if 'extra_specs' not in flavor: return [] pci_requests = [] if 'pci_passthrough:alias' in flavor['extra_specs']: pci_requests = _translate_alias_to_requests( flavor['extra_specs']['pci_passthrough:alias']) return pci_requests def get_instance_pci_requests(instance, prefix=""): """Get instance's pci allocation requirement. After a flavor's pci requirement is translated into pci requests, the requests are kept in instance's system metadata to avoid future flavor access and translation. This function get the pci requests from instance system metadata directly. As save_flavor_pci_info(), the prefix can be used to stash information about another flavor for later use, like in resize. """ if 'system_metadata' not in instance: return [] system_metadata = utils.instance_sys_meta(instance) pci_requests = system_metadata.get('%spci_requests' % prefix) if not pci_requests: return [] return jsonutils.loads(pci_requests) def save_flavor_pci_info(metadata, instance_type, prefix=''): """Save flavor's pci information to metadata. To reduce flavor access and pci request translation, the translated pci requests are saved into instance's system metadata. As save_flavor_info(), the prefix can be used to stash information about another flavor for later use, like in resize. """ pci_requests = get_pci_requests_from_flavor(instance_type) if pci_requests: to_key = '%spci_requests' % prefix metadata[to_key] = jsonutils.dumps(pci_requests) def delete_flavor_pci_info(metadata, *prefixes): """Delete pci requests information from instance's system_metadata.""" for prefix in prefixes: to_key = '%spci_requests' % prefix if to_key in metadata: del metadata[to_key] nova-2014.1/nova/pci/__init__.py0000664000175400017540000000000012323721477017527 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/conductor/0000775000175400017540000000000012323722546016653 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/conductor/manager.py0000664000175400017540000014254212323721510020635 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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. """Handles database requests from other nova services.""" from oslo import messaging import six from nova.api.ec2 import ec2utils from nova import block_device from nova.cells import rpcapi as cells_rpcapi from nova.compute import api as compute_api from nova.compute import rpcapi as compute_rpcapi from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor.tasks import live_migrate from nova.db import base from nova import exception from nova.image import glance from nova import manager from nova import network from nova.network.security_group import openstack_driver from nova import notifications from nova.objects import base as nova_object from nova.objects import instance as instance_obj from nova.objects import migration as migration_obj from nova.objects import quotas as quotas_obj from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova import quota from nova.scheduler import rpcapi as scheduler_rpcapi from nova.scheduler import utils as scheduler_utils LOG = logging.getLogger(__name__) # Instead of having a huge list of arguments to instance_update(), we just # accept a dict of fields to update and use this whitelist to validate it. allowed_updates = ['task_state', 'vm_state', 'expected_task_state', 'power_state', 'access_ip_v4', 'access_ip_v6', 'launched_at', 'terminated_at', 'host', 'node', 'memory_mb', 'vcpus', 'root_gb', 'ephemeral_gb', 'instance_type_id', 'root_device_name', 'launched_on', 'progress', 'vm_mode', 'default_ephemeral_device', 'default_swap_device', 'root_device_name', 'system_metadata', 'updated_at' ] # Fields that we want to convert back into a datetime object. datetime_fields = ['launched_at', 'terminated_at', 'updated_at'] class ConductorManager(manager.Manager): """Mission: Conduct things. The methods in the base API for nova-conductor are various proxy operations performed on behalf of the nova-compute service running on compute nodes. Compute nodes are not allowed to directly access the database, so this set of methods allows them to get specific work done without locally accessing the database. The nova-conductor service also exposes an API in the 'compute_task' namespace. See the ComputeTaskManager class for details. """ target = messaging.Target(version='1.64') def __init__(self, *args, **kwargs): super(ConductorManager, self).__init__(service_name='conductor', *args, **kwargs) self.security_group_api = ( openstack_driver.get_openstack_security_group_driver()) self._network_api = None self._compute_api = None self.compute_task_mgr = ComputeTaskManager() self.cells_rpcapi = cells_rpcapi.CellsAPI() self.additional_endpoints.append(self.compute_task_mgr) self.additional_endpoints.append(_ConductorManagerV2Proxy(self)) @property def network_api(self): # NOTE(danms): We need to instantiate our network_api on first use # to avoid the circular dependency that exists between our init # and network_api's if self._network_api is None: self._network_api = network.API() return self._network_api @property def compute_api(self): if self._compute_api is None: self._compute_api = compute_api.API() return self._compute_api def ping(self, context, arg): # NOTE(russellb) This method can be removed in 2.0 of this API. It is # now a part of the base rpc API. return jsonutils.to_primitive({'service': 'conductor', 'arg': arg}) @messaging.expected_exceptions(KeyError, ValueError, exception.InvalidUUID, exception.InstanceNotFound, exception.UnexpectedTaskStateError) def instance_update(self, context, instance_uuid, updates, service=None): for key, value in updates.iteritems(): if key not in allowed_updates: LOG.error(_("Instance update attempted for " "'%(key)s' on %(instance_uuid)s"), {'key': key, 'instance_uuid': instance_uuid}) raise KeyError("unexpected update keyword '%s'" % key) if key in datetime_fields and isinstance(value, six.string_types): updates[key] = timeutils.parse_strtime(value) old_ref, instance_ref = self.db.instance_update_and_get_original( context, instance_uuid, updates) notifications.send_update(context, old_ref, instance_ref, service) return jsonutils.to_primitive(instance_ref) # NOTE(russellb): This method is now deprecated and can be removed in # version 2.0 of the RPC API @messaging.expected_exceptions(exception.InstanceNotFound) def instance_get(self, context, instance_id): return jsonutils.to_primitive( self.db.instance_get(context, instance_id)) @messaging.expected_exceptions(exception.InstanceNotFound) def instance_get_by_uuid(self, context, instance_uuid, columns_to_join=None): return jsonutils.to_primitive( self.db.instance_get_by_uuid(context, instance_uuid, columns_to_join)) # NOTE(hanlind): This method can be removed in v2.0 of the RPC API. def instance_get_all(self, context): return jsonutils.to_primitive(self.db.instance_get_all(context)) def instance_get_all_by_host(self, context, host, node=None, columns_to_join=None): if node is not None: result = self.db.instance_get_all_by_host_and_node( context.elevated(), host, node) else: result = self.db.instance_get_all_by_host(context.elevated(), host, columns_to_join) return jsonutils.to_primitive(result) # NOTE(comstud): This method is now deprecated and can be removed in # version v2.0 of the RPC API @messaging.expected_exceptions(exception.MigrationNotFound) def migration_get(self, context, migration_id): migration_ref = self.db.migration_get(context.elevated(), migration_id) return jsonutils.to_primitive(migration_ref) # NOTE(comstud): This method is now deprecated and can be removed in # version v2.0 of the RPC API def migration_get_unconfirmed_by_dest_compute(self, context, confirm_window, dest_compute): migrations = self.db.migration_get_unconfirmed_by_dest_compute( context, confirm_window, dest_compute) return jsonutils.to_primitive(migrations) def migration_get_in_progress_by_host_and_node(self, context, host, node): migrations = self.db.migration_get_in_progress_by_host_and_node( context, host, node) return jsonutils.to_primitive(migrations) # NOTE(comstud): This method can be removed in v2.0 of the RPC API. def migration_create(self, context, instance, values): values.update({'instance_uuid': instance['uuid'], 'source_compute': instance['host'], 'source_node': instance['node']}) migration_ref = self.db.migration_create(context.elevated(), values) return jsonutils.to_primitive(migration_ref) # NOTE(russellb): This method is now deprecated and can be removed in # version 2.0 of the RPC API @messaging.expected_exceptions(exception.MigrationNotFound) def migration_update(self, context, migration, status): migration_ref = self.db.migration_update(context.elevated(), migration['id'], {'status': status}) return jsonutils.to_primitive(migration_ref) @messaging.expected_exceptions(exception.AggregateHostExists) def aggregate_host_add(self, context, aggregate, host): host_ref = self.db.aggregate_host_add(context.elevated(), aggregate['id'], host) return jsonutils.to_primitive(host_ref) @messaging.expected_exceptions(exception.AggregateHostNotFound) def aggregate_host_delete(self, context, aggregate, host): self.db.aggregate_host_delete(context.elevated(), aggregate['id'], host) # NOTE(russellb): This method is now deprecated and can be removed in # version 2.0 of the RPC API @messaging.expected_exceptions(exception.AggregateNotFound) def aggregate_get(self, context, aggregate_id): aggregate = self.db.aggregate_get(context.elevated(), aggregate_id) return jsonutils.to_primitive(aggregate) # NOTE(russellb): This method is now deprecated and can be removed in # version 2.0 of the RPC API def aggregate_get_by_host(self, context, host, key=None): aggregates = self.db.aggregate_get_by_host(context.elevated(), host, key) return jsonutils.to_primitive(aggregates) # NOTE(danms): This method is now deprecated and can be removed in # version 2.0 of the RPC API def aggregate_metadata_add(self, context, aggregate, metadata, set_delete=False): new_metadata = self.db.aggregate_metadata_add(context.elevated(), aggregate['id'], metadata, set_delete) return jsonutils.to_primitive(new_metadata) # NOTE(danms): This method is now deprecated and can be removed in # version 2.0 of the RPC API @messaging.expected_exceptions(exception.AggregateMetadataNotFound) def aggregate_metadata_delete(self, context, aggregate, key): self.db.aggregate_metadata_delete(context.elevated(), aggregate['id'], key) def aggregate_metadata_get_by_host(self, context, host, key='availability_zone'): result = self.db.aggregate_metadata_get_by_host(context, host, key) return jsonutils.to_primitive(result) def bw_usage_update(self, context, uuid, mac, start_period, bw_in=None, bw_out=None, last_ctr_in=None, last_ctr_out=None, last_refreshed=None, update_cells=True): if [bw_in, bw_out, last_ctr_in, last_ctr_out].count(None) != 4: self.db.bw_usage_update(context, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed, update_cells=update_cells) usage = self.db.bw_usage_get(context, uuid, start_period, mac) return jsonutils.to_primitive(usage) # NOTE(russellb) This method can be removed in 2.0 of this API. It is # deprecated in favor of the method in the base API. def get_backdoor_port(self, context): return self.backdoor_port # NOTE(danms): This method can be removed in version 2.0 of this API. def security_group_get_by_instance(self, context, instance): group = self.db.security_group_get_by_instance(context, instance['uuid']) return jsonutils.to_primitive(group) # NOTE(danms): This method can be removed in version 2.0 of this API. def security_group_rule_get_by_security_group(self, context, secgroup): rules = self.db.security_group_rule_get_by_security_group( context, secgroup['id']) return jsonutils.to_primitive(rules, max_depth=4) def provider_fw_rule_get_all(self, context): rules = self.db.provider_fw_rule_get_all(context) return jsonutils.to_primitive(rules) def agent_build_get_by_triple(self, context, hypervisor, os, architecture): info = self.db.agent_build_get_by_triple(context, hypervisor, os, architecture) return jsonutils.to_primitive(info) def block_device_mapping_update_or_create(self, context, values, create=None): if create is None: bdm = self.db.block_device_mapping_update_or_create(context, values) elif create is True: bdm = self.db.block_device_mapping_create(context, values) else: bdm = self.db.block_device_mapping_update(context, values['id'], values) # NOTE:comstud): 'bdm' is always in the new format, so we # account for this in cells/messaging.py self.cells_rpcapi.bdm_update_or_create_at_top(context, bdm, create=create) def block_device_mapping_get_all_by_instance(self, context, instance, legacy=True): bdms = self.db.block_device_mapping_get_all_by_instance( context, instance['uuid']) if legacy: bdms = block_device.legacy_mapping(bdms) return jsonutils.to_primitive(bdms) # NOTE(russellb) This method can be removed in 2.0 of this API. It is # deprecated in favor of the method in the base API. def block_device_mapping_destroy(self, context, bdms=None, instance=None, volume_id=None, device_name=None): if bdms is not None: for bdm in bdms: self.db.block_device_mapping_destroy(context, bdm['id']) # NOTE(comstud): bdm['id'] will be different in API cell, # so we must try to destroy by device_name or volume_id. # We need an instance_uuid in order to do this properly, # too. # I hope to clean a lot of this up in the object # implementation. instance_uuid = (bdm['instance_uuid'] or (instance and instance['uuid'])) if not instance_uuid: continue # Better to be safe than sorry. device_name is not # NULLable, however it could be an empty string. if bdm['device_name']: self.cells_rpcapi.bdm_destroy_at_top( context, instance_uuid, device_name=bdm['device_name']) elif bdm['volume_id']: self.cells_rpcapi.bdm_destroy_at_top( context, instance_uuid, volume_id=bdm['volume_id']) elif instance is not None and volume_id is not None: self.db.block_device_mapping_destroy_by_instance_and_volume( context, instance['uuid'], volume_id) self.cells_rpcapi.bdm_destroy_at_top( context, instance['uuid'], volume_id=volume_id) elif instance is not None and device_name is not None: self.db.block_device_mapping_destroy_by_instance_and_device( context, instance['uuid'], device_name) self.cells_rpcapi.bdm_destroy_at_top( context, instance['uuid'], device_name=device_name) else: # NOTE(danms): This shouldn't happen raise exception.Invalid(_("Invalid block_device_mapping_destroy" " invocation")) def instance_get_all_by_filters(self, context, filters, sort_key, sort_dir, columns_to_join=None, use_slave=False): result = self.db.instance_get_all_by_filters( context, filters, sort_key, sort_dir, columns_to_join=columns_to_join, use_slave=use_slave) return jsonutils.to_primitive(result) # NOTE(hanlind): This method can be removed in v2.0 of the RPC API. def instance_get_all_hung_in_rebooting(self, context, timeout): result = self.db.instance_get_all_hung_in_rebooting(context, timeout) return jsonutils.to_primitive(result) def instance_get_active_by_window(self, context, begin, end=None, project_id=None, host=None): # Unused, but cannot remove until major RPC version bump result = self.db.instance_get_active_by_window(context, begin, end, project_id, host) return jsonutils.to_primitive(result) def instance_get_active_by_window_joined(self, context, begin, end=None, project_id=None, host=None): result = self.db.instance_get_active_by_window_joined( context, begin, end, project_id, host) return jsonutils.to_primitive(result) def instance_destroy(self, context, instance): result = self.db.instance_destroy(context, instance['uuid']) return jsonutils.to_primitive(result) def instance_info_cache_delete(self, context, instance): self.db.instance_info_cache_delete(context, instance['uuid']) # NOTE(hanlind): This method is now deprecated and can be removed in # version v2.0 of the RPC API. def instance_info_cache_update(self, context, instance, values): self.db.instance_info_cache_update(context, instance['uuid'], values) # NOTE(danms): This method is now deprecated and can be removed in # version v2.0 of the RPC API. def instance_type_get(self, context, instance_type_id): result = self.db.flavor_get(context, instance_type_id) return jsonutils.to_primitive(result) def instance_fault_create(self, context, values): result = self.db.instance_fault_create(context, values) return jsonutils.to_primitive(result) # NOTE(kerrin): This method can be removed in v2.0 of the RPC API. def vol_get_usage_by_time(self, context, start_time): result = self.db.vol_get_usage_by_time(context, start_time) return jsonutils.to_primitive(result) # NOTE(kerrin): The last_refreshed argument is unused by this method # and can be removed in v2.0 of the RPC API. def vol_usage_update(self, context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance, last_refreshed=None, update_totals=False): vol_usage = self.db.vol_usage_update(context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance['uuid'], instance['project_id'], instance['user_id'], instance['availability_zone'], update_totals) # We have just updated the database, so send the notification now self.notifier.info(context, 'volume.usage', compute_utils.usage_volume_info(vol_usage)) @messaging.expected_exceptions(exception.ComputeHostNotFound, exception.HostBinaryNotFound) def service_get_all_by(self, context, topic=None, host=None, binary=None): if not any((topic, host, binary)): result = self.db.service_get_all(context) elif all((topic, host)): if topic == 'compute': result = self.db.service_get_by_compute_host(context, host) # FIXME(comstud) Potentially remove this on bump to v2.0 result = [result] else: result = self.db.service_get_by_host_and_topic(context, host, topic) elif all((host, binary)): result = self.db.service_get_by_args(context, host, binary) elif topic: result = self.db.service_get_all_by_topic(context, topic) elif host: result = self.db.service_get_all_by_host(context, host) return jsonutils.to_primitive(result) @messaging.expected_exceptions(exception.InstanceActionNotFound) def action_event_start(self, context, values): evt = self.db.action_event_start(context, values) return jsonutils.to_primitive(evt) @messaging.expected_exceptions(exception.InstanceActionNotFound, exception.InstanceActionEventNotFound) def action_event_finish(self, context, values): evt = self.db.action_event_finish(context, values) return jsonutils.to_primitive(evt) def service_create(self, context, values): svc = self.db.service_create(context, values) return jsonutils.to_primitive(svc) @messaging.expected_exceptions(exception.ServiceNotFound) def service_destroy(self, context, service_id): self.db.service_destroy(context, service_id) def compute_node_create(self, context, values): result = self.db.compute_node_create(context, values) return jsonutils.to_primitive(result) def compute_node_update(self, context, node, values, prune_stats=False): # NOTE(belliott) prune_stats is no longer relevant and will be # ignored if isinstance(values.get('stats'), dict): # NOTE(danms): In Icehouse, the 'stats' was changed from a dict # to a JSON string. If we get a dict-based value, convert it to # JSON, which the lower layers now expect. This can be removed # in version 2.0 of the RPC API values['stats'] = jsonutils.dumps(values['stats']) result = self.db.compute_node_update(context, node['id'], values) return jsonutils.to_primitive(result) def compute_node_delete(self, context, node): result = self.db.compute_node_delete(context, node['id']) return jsonutils.to_primitive(result) @messaging.expected_exceptions(exception.ServiceNotFound) def service_update(self, context, service, values): svc = self.db.service_update(context, service['id'], values) return jsonutils.to_primitive(svc) def task_log_get(self, context, task_name, begin, end, host, state=None): result = self.db.task_log_get(context, task_name, begin, end, host, state) return jsonutils.to_primitive(result) def task_log_begin_task(self, context, task_name, begin, end, host, task_items=None, message=None): result = self.db.task_log_begin_task(context.elevated(), task_name, begin, end, host, task_items, message) return jsonutils.to_primitive(result) def task_log_end_task(self, context, task_name, begin, end, host, errors, message=None): result = self.db.task_log_end_task(context.elevated(), task_name, begin, end, host, errors, message) return jsonutils.to_primitive(result) def notify_usage_exists(self, context, instance, current_period=False, ignore_missing_network_data=True, system_metadata=None, extra_usage_info=None): compute_utils.notify_usage_exists(self.notifier, context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info) def security_groups_trigger_handler(self, context, event, args): self.security_group_api.trigger_handler(event, context, *args) def security_groups_trigger_members_refresh(self, context, group_ids): self.security_group_api.trigger_members_refresh(context, group_ids) def network_migrate_instance_start(self, context, instance, migration): self.network_api.migrate_instance_start(context, instance, migration) def network_migrate_instance_finish(self, context, instance, migration): self.network_api.migrate_instance_finish(context, instance, migration) def quota_commit(self, context, reservations, project_id=None, user_id=None): quota.QUOTAS.commit(context, reservations, project_id=project_id, user_id=user_id) def quota_rollback(self, context, reservations, project_id=None, user_id=None): quota.QUOTAS.rollback(context, reservations, project_id=project_id, user_id=user_id) def get_ec2_ids(self, context, instance): ec2_ids = {} ec2_ids['instance-id'] = ec2utils.id_to_ec2_inst_id(instance['uuid']) ec2_ids['ami-id'] = ec2utils.glance_id_to_ec2_id(context, instance['image_ref']) for image_type in ['kernel', 'ramdisk']: image_id = instance.get('%s_id' % image_type) if image_id is not None: ec2_image_type = ec2utils.image_type(image_type) ec2_id = ec2utils.glance_id_to_ec2_id(context, image_id, ec2_image_type) ec2_ids['%s-id' % image_type] = ec2_id return ec2_ids # NOTE(danms): This method is now deprecated and can be removed in # version v2.0 of the RPC API def compute_stop(self, context, instance, do_cast=True): # NOTE(mriedem): Clients using an interface before 1.43 will be sending # dicts so we need to handle that here since compute/api::stop() # requires an object. if isinstance(instance, dict): instance = instance_obj.Instance._from_db_object( context, instance_obj.Instance(), instance) self.compute_api.stop(context, instance, do_cast) # NOTE(comstud): This method is now deprecated and can be removed in # version v2.0 of the RPC API def compute_confirm_resize(self, context, instance, migration_ref): if isinstance(instance, dict): attrs = ['metadata', 'system_metadata', 'info_cache', 'security_groups'] instance = instance_obj.Instance._from_db_object( context, instance_obj.Instance(), instance, expected_attrs=attrs) if isinstance(migration_ref, dict): migration_ref = migration_obj.Migration._from_db_object( context.elevated(), migration_ref) self.compute_api.confirm_resize(context, instance, migration=migration_ref) def compute_unrescue(self, context, instance): self.compute_api.unrescue(context, instance) def _object_dispatch(self, target, method, context, args, kwargs): """Dispatch a call to an object method. This ensures that object methods get called and any exception that is raised gets wrapped in an ExpectedException for forwarding back to the caller (without spamming the conductor logs). """ try: # NOTE(danms): Keep the getattr inside the try block since # a missing method is really a client problem return getattr(target, method)(context, *args, **kwargs) except Exception: raise messaging.ExpectedException() def object_class_action(self, context, objname, objmethod, objver, args, kwargs): """Perform a classmethod action on an object.""" objclass = nova_object.NovaObject.obj_class_from_name(objname, objver) result = self._object_dispatch(objclass, objmethod, context, args, kwargs) # NOTE(danms): The RPC layer will convert to primitives for us, # but in this case, we need to honor the version the client is # asking for, so we do it before returning here. return (result.obj_to_primitive(target_version=objver) if isinstance(result, nova_object.NovaObject) else result) def object_action(self, context, objinst, objmethod, args, kwargs): """Perform an action on an object.""" oldobj = objinst.obj_clone() result = self._object_dispatch(objinst, objmethod, context, args, kwargs) updates = dict() # NOTE(danms): Diff the object with the one passed to us and # generate a list of changes to forward back for name, field in objinst.fields.items(): if not objinst.obj_attr_is_set(name): # Avoid demand-loading anything continue if (not oldobj.obj_attr_is_set(name) or oldobj[name] != objinst[name]): updates[name] = field.to_primitive(objinst, name, objinst[name]) # This is safe since a field named this would conflict with the # method anyway updates['obj_what_changed'] = objinst.obj_what_changed() return updates, result # NOTE(danms): This method is now deprecated and can be removed in # v2.0 of the RPC API def compute_reboot(self, context, instance, reboot_type): self.compute_api.reboot(context, instance, reboot_type) def object_backport(self, context, objinst, target_version): return objinst.obj_to_primitive(target_version=target_version) class ComputeTaskManager(base.Base): """Namespace for compute methods. This class presents an rpc API for nova-conductor under the 'compute_task' namespace. The methods here are compute operations that are invoked by the API service. These methods see the operation to completion, which may involve coordinating activities on multiple compute nodes. """ target = messaging.Target(namespace='compute_task', version='1.6') def __init__(self): super(ComputeTaskManager, self).__init__() self.compute_rpcapi = compute_rpcapi.ComputeAPI() self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() self.image_service = glance.get_default_image_service() @messaging.expected_exceptions(exception.NoValidHost, exception.ComputeServiceUnavailable, exception.InvalidHypervisorType, exception.UnableToMigrateToSelf, exception.DestinationHypervisorTooOld, exception.InvalidLocalStorage, exception.InvalidSharedStorage, exception.MigrationPreCheckError) def migrate_server(self, context, instance, scheduler_hint, live, rebuild, flavor, block_migration, disk_over_commit, reservations=None): if instance and not isinstance(instance, instance_obj.Instance): # NOTE(danms): Until v2 of the RPC API, we need to tolerate # old-world instance objects here attrs = ['metadata', 'system_metadata', 'info_cache', 'security_groups'] instance = instance_obj.Instance._from_db_object( context, instance_obj.Instance(), instance, expected_attrs=attrs) if live and not rebuild and not flavor: self._live_migrate(context, instance, scheduler_hint, block_migration, disk_over_commit) elif not live and not rebuild and flavor: instance_uuid = instance['uuid'] with compute_utils.EventReporter(context, self.db, 'cold_migrate', instance_uuid): self._cold_migrate(context, instance, flavor, scheduler_hint['filter_properties'], reservations) else: raise NotImplementedError() def _cold_migrate(self, context, instance, flavor, filter_properties, reservations): image_ref = instance.image_ref image = compute_utils.get_image_metadata( context, self.image_service, image_ref, instance) request_spec = scheduler_utils.build_request_spec( context, image, [instance], instance_type=flavor) quotas = quotas_obj.Quotas.from_reservations(context, reservations, instance=instance) try: hosts = self.scheduler_rpcapi.select_destinations( context, request_spec, filter_properties) host_state = hosts[0] except exception.NoValidHost as ex: vm_state = instance['vm_state'] if not vm_state: vm_state = vm_states.ACTIVE updates = {'vm_state': vm_state, 'task_state': None} self._set_vm_state_and_notify(context, 'migrate_server', updates, ex, request_spec) quotas.rollback() LOG.warning(_("No valid host found for cold migrate"), instance=instance) return try: scheduler_utils.populate_filter_properties(filter_properties, host_state) # context is not serializable filter_properties.pop('context', None) # TODO(timello): originally, instance_type in request_spec # on compute.api.resize does not have 'extra_specs', so we # remove it for now to keep tests backward compatibility. request_spec['instance_type'].pop('extra_specs') (host, node) = (host_state['host'], host_state['nodename']) self.compute_rpcapi.prep_resize( context, image, instance, flavor, host, reservations, request_spec=request_spec, filter_properties=filter_properties, node=node) except Exception as ex: with excutils.save_and_reraise_exception(): updates = {'vm_state': instance['vm_state'], 'task_state': None} self._set_vm_state_and_notify(context, 'migrate_server', updates, ex, request_spec) quotas.rollback() def _set_vm_state_and_notify(self, context, method, updates, ex, request_spec): scheduler_utils.set_vm_state_and_notify( context, 'compute_task', method, updates, ex, request_spec, self.db) def _live_migrate(self, context, instance, scheduler_hint, block_migration, disk_over_commit): destination = scheduler_hint.get("host") try: live_migrate.execute(context, instance, destination, block_migration, disk_over_commit) except (exception.NoValidHost, exception.ComputeServiceUnavailable, exception.InvalidHypervisorType, exception.UnableToMigrateToSelf, exception.DestinationHypervisorTooOld, exception.InvalidLocalStorage, exception.InvalidSharedStorage, exception.HypervisorUnavailable, exception.MigrationPreCheckError) as ex: with excutils.save_and_reraise_exception(): #TODO(johngarbutt) - eventually need instance actions here request_spec = {'instance_properties': { 'uuid': instance['uuid'], }, } scheduler_utils.set_vm_state_and_notify(context, 'compute_task', 'migrate_server', dict(vm_state=instance['vm_state'], task_state=None, expected_task_state=task_states.MIGRATING,), ex, request_spec, self.db) except Exception as ex: LOG.error(_('Migration of instance %(instance_id)s to host' ' %(dest)s unexpectedly failed.'), {'instance_id': instance['uuid'], 'dest': destination}, exc_info=True) raise exception.MigrationError(reason=ex) def build_instances(self, context, instances, image, filter_properties, admin_password, injected_files, requested_networks, security_groups, block_device_mapping, legacy_bdm=True): request_spec = scheduler_utils.build_request_spec(context, image, instances) # NOTE(alaski): For compatibility until a new scheduler method is used. request_spec.update({'block_device_mapping': block_device_mapping, 'security_group': security_groups}) self.scheduler_rpcapi.run_instance(context, request_spec=request_spec, admin_password=admin_password, injected_files=injected_files, requested_networks=requested_networks, is_first_time=True, filter_properties=filter_properties, legacy_bdm_in_spec=legacy_bdm) def _get_image(self, context, image_id): if not image_id: return None return self.image_service.show(context, image_id) def _delete_image(self, context, image_id): (image_service, image_id) = glance.get_remote_image_service(context, image_id) return image_service.delete(context, image_id) def _schedule_instances(self, context, image, filter_properties, *instances): request_spec = scheduler_utils.build_request_spec(context, image, instances) # dict(host='', nodename='', limits='') hosts = self.scheduler_rpcapi.select_destinations(context, request_spec, filter_properties) return hosts def unshelve_instance(self, context, instance): sys_meta = instance.system_metadata if instance.vm_state == vm_states.SHELVED: instance.task_state = task_states.POWERING_ON instance.save(expected_task_state=task_states.UNSHELVING) self.compute_rpcapi.start_instance(context, instance) snapshot_id = sys_meta.get('shelved_image_id') if snapshot_id: self._delete_image(context, snapshot_id) elif instance.vm_state == vm_states.SHELVED_OFFLOADED: try: with compute_utils.EventReporter(context, self.db, 'get_image_info', instance.uuid): image = self._get_image(context, sys_meta['shelved_image_id']) except exception.ImageNotFound: with excutils.save_and_reraise_exception(): LOG.error(_('Unshelve attempted but vm_state not SHELVED ' 'or SHELVED_OFFLOADED'), instance=instance) instance.vm_state = vm_states.ERROR instance.save() try: with compute_utils.EventReporter(context, self.db, 'schedule_instances', instance.uuid): filter_properties = {} hosts = self._schedule_instances(context, image, filter_properties, instance) host_state = hosts[0] scheduler_utils.populate_filter_properties( filter_properties, host_state) (host, node) = (host_state['host'], host_state['nodename']) self.compute_rpcapi.unshelve_instance( context, instance, host, image=image, filter_properties=filter_properties, node=node) except exception.NoValidHost as ex: instance.task_state = None instance.save() LOG.warning(_("No valid host found for unshelve instance"), instance=instance) return else: LOG.error(_('Unshelve attempted but vm_state not SHELVED or ' 'SHELVED_OFFLOADED'), instance=instance) instance.vm_state = vm_states.ERROR instance.save() return for key in ['shelved_at', 'shelved_image_id', 'shelved_host']: if key in sys_meta: del(sys_meta[key]) instance.system_metadata = sys_meta instance.save() class _ConductorManagerV2Proxy(object): target = messaging.Target(version='2.0') def __init__(self, manager): self.manager = manager def instance_update(self, context, instance_uuid, updates, service): return self.manager.instance_update(context, instance_uuid, updates, service) def instance_get_by_uuid(self, context, instance_uuid, columns_to_join): return self.manager.instance_get_by_uuid(context, instance_uuid, columns_to_join) def migration_get_in_progress_by_host_and_node(self, context, host, node): return self.manager.migration_get_in_progress_by_host_and_node(context, host, node) def aggregate_host_add(self, context, aggregate, host): return self.manager.aggregate_host_add(context, aggregate, host) def aggregate_host_delete(self, context, aggregate, host): return self.manager.aggregate_host_delete(context, aggregate, host) def aggregate_metadata_get_by_host(self, context, host, key): return self.manager.aggregate_metadata_get_by_host(context, host, key) def bw_usage_update(self, context, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed, update_cells): return self.manager.bw_usage_update(context, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed, update_cells) def provider_fw_rule_get_all(self, context): return self.manager.provider_fw_rule_get_all(context) def agent_build_get_by_triple(self, context, hypervisor, os, architecture): return self.manager.agent_build_get_by_triple(context, hypervisor, os, architecture) def block_device_mapping_update_or_create(self, context, values, create): return self.manager.block_device_mapping_update_or_create(context, values, create) def block_device_mapping_get_all_by_instance(self, context, instance, legacy): return self.manager.block_device_mapping_get_all_by_instance(context, instance, legacy) def instance_get_all_by_filters(self, context, filters, sort_key, sort_dir, columns_to_join, use_slave): return self.manager.instance_get_all_by_filters(context, filters, sort_key, sort_dir, columns_to_join, use_slave) def instance_get_active_by_window_joined(self, context, begin, end, project_id, host): return self.manager.instance_get_active_by_window_joined(context, begin, end, project_id, host) def instance_destroy(self, context, instance): return self.manager.instance_destroy(context, instance) def instance_info_cache_delete(self, context, instance): return self.manager.instance_info_cache_delete(context, instance) def vol_get_usage_by_time(self, context, start_time): return self.manager.vol_get_usage_by_time(context, start_time) def vol_usage_update(self, context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance, last_refreshed, update_totals): return self.manager.vol_usage_update(context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance, last_refreshed, update_totals) def service_get_all_by(self, context, topic, host, binary): return self.manager.service_get_all_by(context, topic, host, binary) def instance_get_all_by_host(self, context, host, node, columns_to_join): return self.manager.instance_get_all_by_host(context, host, node, columns_to_join) def instance_fault_create(self, context, values): return self.manager.instance_fault_create(context, values) def action_event_start(self, context, values): return self.manager.action_event_start(context, values) def action_event_finish(self, context, values): return self.manager.action_event_finish(context, values) def service_create(self, context, values): return self.manager.service_create(context, values) def service_destroy(self, context, service_id): return self.manager.service_destroy(context, service_id) def compute_node_create(self, context, values): return self.manager.compute_node_create(context, values) def compute_node_update(self, context, node, values): return self.manager.compute_node_update(context, node, values) def compute_node_delete(self, context, node): return self.manager.compute_node_delete(context, node) def service_update(self, context, service, values): return self.manager.service_update(context, service, values) def task_log_get(self, context, task_name, begin, end, host, state): return self.manager.task_log_get(context, task_name, begin, end, host, state) def task_log_begin_task(self, context, task_name, begin, end, host, task_items, message): return self.manager.task_log_begin_task(context, task_name, begin, end, host, task_items, message) def task_log_end_task(self, context, task_name, begin, end, host, errors, message): return self.manager.task_log_end_task(context, task_name, begin, end, host, errors, message) def notify_usage_exists(self, context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info): return self.manager.notify_usage_exists(context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info) def security_groups_trigger_handler(self, context, event, args): return self.manager.security_groups_trigger_handler(context, event, args) def security_groups_trigger_members_refresh(self, context, group_ids): return self.manager.security_groups_trigger_members_refresh(context, group_ids) def network_migrate_instance_start(self, context, instance, migration): return self.manager.network_migrate_instance_start(context, instance, migration) def network_migrate_instance_finish(self, context, instance, migration): return self.manager.network_migrate_instance_finish(context, instance, migration) def quota_commit(self, context, reservations, project_id, user_id): return self.manager.quota_commit(context, reservations, project_id, user_id) def quota_rollback(self, context, reservations, project_id, user_id): return self.manager.quota_rollback(context, reservations, project_id, user_id) def get_ec2_ids(self, context, instance): return self.manager.get_ec2_ids(context, instance) def compute_unrescue(self, context, instance): return self.manager.compute_unrescue(context, instance) def object_class_action(self, context, objname, objmethod, objver, args, kwargs): return self.manager.object_class_action(context, objname, objmethod, objver, args, kwargs) def object_action(self, context, objinst, objmethod, args, kwargs): return self.manager.object_action(context, objinst, objmethod, args, kwargs) def object_backport(self, context, objinst, target_version): return self.manager.object_backport(context, objinst, target_version) nova-2014.1/nova/conductor/tasks/0000775000175400017540000000000012323722546020000 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/conductor/tasks/live_migrate.py0000664000175400017540000001767612323721476023043 0ustar jenkinsjenkins00000000000000# 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 oslo.config import cfg from nova.compute import power_state from nova.compute import rpcapi as compute_rpcapi from nova.compute import utils as compute_utils from nova import db from nova import exception from nova.image import glance from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.scheduler import rpcapi as scheduler_rpcapi from nova.scheduler import utils as scheduler_utils from nova import servicegroup LOG = logging.getLogger(__name__) migrate_opt = cfg.IntOpt('migrate_max_retries', default=-1, help='Number of times to retry live-migration before failing. ' 'If == -1, try until out of hosts. ' 'If == 0, only try once, no retries.') CONF = cfg.CONF CONF.register_opt(migrate_opt) class LiveMigrationTask(object): def __init__(self, context, instance, destination, block_migration, disk_over_commit): self.context = context self.instance = instance self.destination = destination self.block_migration = block_migration self.disk_over_commit = disk_over_commit self.source = instance.host self.migrate_data = None self.compute_rpcapi = compute_rpcapi.ComputeAPI() self.servicegroup_api = servicegroup.API() self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() self.image_service = glance.get_default_image_service() def execute(self): self._check_instance_is_running() self._check_host_is_up(self.source) if not self.destination: self.destination = self._find_destination() else: self._check_requested_destination() #TODO(johngarbutt) need to move complexity out of compute manager return self.compute_rpcapi.live_migration(self.context, host=self.source, instance=self.instance, dest=self.destination, block_migration=self.block_migration, migrate_data=self.migrate_data) #TODO(johngarbutt) disk_over_commit? def rollback(self): #TODO(johngarbutt) need to implement the clean up operation # but this will make sense only once we pull in the compute # calls, since this class currently makes no state changes, # except to call the compute method, that has no matching # rollback call right now. raise NotImplementedError() def _check_instance_is_running(self): if self.instance.power_state != power_state.RUNNING: raise exception.InstanceNotRunning( instance_id=self.instance.uuid) def _check_host_is_up(self, host): try: service = db.service_get_by_compute_host(self.context, host) except exception.NotFound: raise exception.ComputeServiceUnavailable(host=host) if not self.servicegroup_api.service_is_up(service): raise exception.ComputeServiceUnavailable(host=host) def _check_requested_destination(self): self._check_destination_is_not_source() self._check_host_is_up(self.destination) self._check_destination_has_enough_memory() self._check_compatible_with_source_hypervisor(self.destination) self._call_livem_checks_on_host(self.destination) def _check_destination_is_not_source(self): if self.destination == self.source: raise exception.UnableToMigrateToSelf( instance_id=self.instance.uuid, host=self.destination) def _check_destination_has_enough_memory(self): avail = self._get_compute_info(self.destination)['free_ram_mb'] mem_inst = self.instance.memory_mb if not mem_inst or avail <= mem_inst: instance_uuid = self.instance.uuid dest = self.destination reason = _("Unable to migrate %(instance_uuid)s to %(dest)s: " "Lack of memory(host:%(avail)s <= " "instance:%(mem_inst)s)") raise exception.MigrationPreCheckError(reason=reason % dict( instance_uuid=instance_uuid, dest=dest, avail=avail, mem_inst=mem_inst)) def _get_compute_info(self, host): service_ref = db.service_get_by_compute_host(self.context, host) return service_ref['compute_node'][0] def _check_compatible_with_source_hypervisor(self, destination): source_info = self._get_compute_info(self.source) destination_info = self._get_compute_info(destination) source_type = source_info['hypervisor_type'] destination_type = destination_info['hypervisor_type'] if source_type != destination_type: raise exception.InvalidHypervisorType() source_version = source_info['hypervisor_version'] destination_version = destination_info['hypervisor_version'] if source_version > destination_version: raise exception.DestinationHypervisorTooOld() def _call_livem_checks_on_host(self, destination): self.migrate_data = self.compute_rpcapi.\ check_can_live_migrate_destination(self.context, self.instance, destination, self.block_migration, self.disk_over_commit) def _find_destination(self): #TODO(johngarbutt) this retry loop should be shared attempted_hosts = [self.source] image = None if self.instance.image_ref: image = compute_utils.get_image_metadata(self.context, self.image_service, self.instance.image_ref, self.instance) request_spec = scheduler_utils.build_request_spec(self.context, image, [self.instance]) host = None while host is None: self._check_not_over_max_retries(attempted_hosts) filter_properties = {'ignore_hosts': attempted_hosts} host = self.scheduler_rpcapi.select_destinations(self.context, request_spec, filter_properties)[0]['host'] try: self._check_compatible_with_source_hypervisor(host) self._call_livem_checks_on_host(host) except exception.Invalid as e: LOG.debug(_("Skipping host: %(host)s because: %(e)s") % {"host": host, "e": e}) attempted_hosts.append(host) host = None return host def _check_not_over_max_retries(self, attempted_hosts): if CONF.migrate_max_retries == -1: return retries = len(attempted_hosts) - 1 if retries > CONF.migrate_max_retries: msg = (_('Exceeded max scheduling retries %(max_retries)d for ' 'instance %(instance_uuid)s during live migration') % {'max_retries': retries, 'instance_uuid': self.instance.uuid}) raise exception.NoValidHost(reason=msg) def execute(context, instance, destination, block_migration, disk_over_commit): task = LiveMigrationTask(context, instance, destination, block_migration, disk_over_commit) #TODO(johngarbutt) create a superclass that contains a safe_execute call return task.execute() nova-2014.1/nova/conductor/tasks/__init__.py0000664000175400017540000000107412323721476022114 0ustar jenkinsjenkins00000000000000# 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. nova-2014.1/nova/conductor/api.py0000664000175400017540000004452612323721510017777 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Handles all requests to the conductor service.""" from oslo.config import cfg from oslo import messaging from nova import baserpc from nova.conductor import manager from nova.conductor import rpcapi from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova import utils conductor_opts = [ cfg.BoolOpt('use_local', default=False, help='Perform nova-conductor operations locally'), cfg.StrOpt('topic', default='conductor', help='The topic on which conductor nodes listen'), cfg.StrOpt('manager', default='nova.conductor.manager.ConductorManager', help='Full class name for the Manager for conductor'), cfg.IntOpt('workers', help='Number of workers for OpenStack Conductor service. ' 'The default will be the number of CPUs available.') ] conductor_group = cfg.OptGroup(name='conductor', title='Conductor Options') CONF = cfg.CONF CONF.register_group(conductor_group) CONF.register_opts(conductor_opts, conductor_group) LOG = logging.getLogger(__name__) class LocalAPI(object): """A local version of the conductor API that does database updates locally instead of via RPC. """ def __init__(self): # TODO(danms): This needs to be something more generic for # other/future users of this sort of functionality. self._manager = utils.ExceptionHelper(manager.ConductorManager()) def wait_until_ready(self, context, *args, **kwargs): # nothing to wait for in the local case. pass def instance_update(self, context, instance_uuid, **updates): """Perform an instance update in the database.""" return self._manager.instance_update(context, instance_uuid, updates, 'compute') def instance_get_by_uuid(self, context, instance_uuid, columns_to_join=None): return self._manager.instance_get_by_uuid(context, instance_uuid, columns_to_join) def instance_destroy(self, context, instance): return self._manager.instance_destroy(context, instance) def instance_get_all_by_host(self, context, host, columns_to_join=None): return self._manager.instance_get_all_by_host( context, host, columns_to_join=columns_to_join) def instance_get_all_by_host_and_node(self, context, host, node): return self._manager.instance_get_all_by_host(context, host, node) def instance_get_all_by_filters(self, context, filters, sort_key='created_at', sort_dir='desc', columns_to_join=None, use_slave=False): return self._manager.instance_get_all_by_filters(context, filters, sort_key, sort_dir, columns_to_join, use_slave) def instance_get_active_by_window_joined(self, context, begin, end=None, project_id=None, host=None): return self._manager.instance_get_active_by_window_joined( context, begin, end, project_id, host) def instance_info_cache_delete(self, context, instance): return self._manager.instance_info_cache_delete(context, instance) def instance_fault_create(self, context, values): return self._manager.instance_fault_create(context, values) def migration_get_in_progress_by_host_and_node(self, context, host, node): return self._manager.migration_get_in_progress_by_host_and_node( context, host, node) def aggregate_host_add(self, context, aggregate, host): return self._manager.aggregate_host_add(context, aggregate, host) def aggregate_host_delete(self, context, aggregate, host): return self._manager.aggregate_host_delete(context, aggregate, host) def aggregate_metadata_get_by_host(self, context, host, key='availability_zone'): return self._manager.aggregate_metadata_get_by_host(context, host, key) def bw_usage_get(self, context, uuid, start_period, mac): return self._manager.bw_usage_update(context, uuid, mac, start_period) def bw_usage_update(self, context, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed=None, update_cells=True): return self._manager.bw_usage_update(context, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed, update_cells=update_cells) def provider_fw_rule_get_all(self, context): return self._manager.provider_fw_rule_get_all(context) def agent_build_get_by_triple(self, context, hypervisor, os, architecture): return self._manager.agent_build_get_by_triple(context, hypervisor, os, architecture) def block_device_mapping_create(self, context, values): return self._manager.block_device_mapping_update_or_create(context, values, create=True) def block_device_mapping_update(self, context, bdm_id, values): values = dict(values) values['id'] = bdm_id return self._manager.block_device_mapping_update_or_create( context, values, create=False) def block_device_mapping_update_or_create(self, context, values): return self._manager.block_device_mapping_update_or_create(context, values) def block_device_mapping_get_all_by_instance(self, context, instance, legacy=True): return self._manager.block_device_mapping_get_all_by_instance( context, instance, legacy) def vol_get_usage_by_time(self, context, start_time): return self._manager.vol_get_usage_by_time(context, start_time) def vol_usage_update(self, context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance, last_refreshed=None, update_totals=False): return self._manager.vol_usage_update(context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance, last_refreshed, update_totals) def service_get_all(self, context): return self._manager.service_get_all_by(context) def service_get_all_by_topic(self, context, topic): return self._manager.service_get_all_by(context, topic=topic) def service_get_all_by_host(self, context, host): return self._manager.service_get_all_by(context, host=host) def service_get_by_host_and_topic(self, context, host, topic): return self._manager.service_get_all_by(context, topic, host) def service_get_by_compute_host(self, context, host): result = self._manager.service_get_all_by(context, 'compute', host) # FIXME(comstud): A major revision bump to 2.0 should return a # single entry, so we should just return 'result' at that point. return result[0] def service_get_by_args(self, context, host, binary): return self._manager.service_get_all_by(context, host=host, binary=binary) def action_event_start(self, context, values): return self._manager.action_event_start(context, values) def action_event_finish(self, context, values): return self._manager.action_event_finish(context, values) def service_create(self, context, values): return self._manager.service_create(context, values) def service_destroy(self, context, service_id): return self._manager.service_destroy(context, service_id) def compute_node_create(self, context, values): return self._manager.compute_node_create(context, values) def compute_node_update(self, context, node, values, prune_stats=False): # NOTE(belliott) ignore prune_stats param, it's no longer relevant return self._manager.compute_node_update(context, node, values) def compute_node_delete(self, context, node): return self._manager.compute_node_delete(context, node) def service_update(self, context, service, values): return self._manager.service_update(context, service, values) def task_log_get(self, context, task_name, begin, end, host, state=None): return self._manager.task_log_get(context, task_name, begin, end, host, state) def task_log_begin_task(self, context, task_name, begin, end, host, task_items=None, message=None): return self._manager.task_log_begin_task(context, task_name, begin, end, host, task_items, message) def task_log_end_task(self, context, task_name, begin, end, host, errors, message=None): return self._manager.task_log_end_task(context, task_name, begin, end, host, errors, message) def notify_usage_exists(self, context, instance, current_period=False, ignore_missing_network_data=True, system_metadata=None, extra_usage_info=None): return self._manager.notify_usage_exists( context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info) def security_groups_trigger_handler(self, context, event, *args): return self._manager.security_groups_trigger_handler(context, event, args) def security_groups_trigger_members_refresh(self, context, group_ids): return self._manager.security_groups_trigger_members_refresh(context, group_ids) def network_migrate_instance_start(self, context, instance, migration): return self._manager.network_migrate_instance_start(context, instance, migration) def network_migrate_instance_finish(self, context, instance, migration): return self._manager.network_migrate_instance_finish(context, instance, migration) def quota_commit(self, context, reservations, project_id=None, user_id=None): return self._manager.quota_commit(context, reservations, project_id=project_id, user_id=user_id) def quota_rollback(self, context, reservations, project_id=None, user_id=None): return self._manager.quota_rollback(context, reservations, project_id=project_id, user_id=user_id) def get_ec2_ids(self, context, instance): return self._manager.get_ec2_ids(context, instance) def compute_unrescue(self, context, instance): return self._manager.compute_unrescue(context, instance) def object_backport(self, context, objinst, target_version): return self._manager.object_backport(context, objinst, target_version) class LocalComputeTaskAPI(object): def __init__(self): # TODO(danms): This needs to be something more generic for # other/future users of this sort of functionality. self._manager = utils.ExceptionHelper( manager.ComputeTaskManager()) def resize_instance(self, context, instance, extra_instance_updates, scheduler_hint, flavor, reservations): # NOTE(comstud): 'extra_instance_updates' is not used here but is # needed for compatibility with the cells_rpcapi version of this # method. self._manager.migrate_server( context, instance, scheduler_hint, False, False, flavor, None, None, reservations) def live_migrate_instance(self, context, instance, host_name, block_migration, disk_over_commit): scheduler_hint = {'host': host_name} self._manager.migrate_server( context, instance, scheduler_hint, True, False, None, block_migration, disk_over_commit, None) def build_instances(self, context, instances, image, filter_properties, admin_password, injected_files, requested_networks, security_groups, block_device_mapping, legacy_bdm=True): utils.spawn_n(self._manager.build_instances, context, instances=instances, image=image, filter_properties=filter_properties, admin_password=admin_password, injected_files=injected_files, requested_networks=requested_networks, security_groups=security_groups, block_device_mapping=block_device_mapping, legacy_bdm=legacy_bdm) def unshelve_instance(self, context, instance): utils.spawn_n(self._manager.unshelve_instance, context, instance=instance) class API(LocalAPI): """Conductor API that does updates via RPC to the ConductorManager.""" def __init__(self): self._manager = rpcapi.ConductorAPI() self.base_rpcapi = baserpc.BaseAPI(topic=CONF.conductor.topic) def wait_until_ready(self, context, early_timeout=10, early_attempts=10): '''Wait until a conductor service is up and running. This method calls the remote ping() method on the conductor topic until it gets a response. It starts with a shorter timeout in the loop (early_timeout) up to early_attempts number of tries. It then drops back to the globally configured timeout for rpc calls for each retry. ''' attempt = 0 timeout = early_timeout while True: # NOTE(danms): Try ten times with a short timeout, and then punt # to the configured RPC timeout after that if attempt == early_attempts: timeout = None attempt += 1 # NOTE(russellb): This is running during service startup. If we # allow an exception to be raised, the service will shut down. # This may fail the first time around if nova-conductor wasn't # running when this service started. try: self.base_rpcapi.ping(context, '1.21 GigaWatts', timeout=timeout) break except messaging.MessagingTimeout: LOG.warning(_('Timed out waiting for nova-conductor. ' 'Is it running? Or did this service start ' 'before nova-conductor?')) def instance_update(self, context, instance_uuid, **updates): """Perform an instance update in the database.""" return self._manager.instance_update(context, instance_uuid, updates, 'conductor') class ComputeTaskAPI(object): """ComputeTask API that queues up compute tasks for nova-conductor.""" def __init__(self): self.conductor_compute_rpcapi = rpcapi.ComputeTaskAPI() def resize_instance(self, context, instance, extra_instance_updates, scheduler_hint, flavor, reservations): # NOTE(comstud): 'extra_instance_updates' is not used here but is # needed for compatibility with the cells_rpcapi version of this # method. self.conductor_compute_rpcapi.migrate_server( context, instance, scheduler_hint, False, False, flavor, None, None, reservations) def live_migrate_instance(self, context, instance, host_name, block_migration, disk_over_commit): scheduler_hint = {'host': host_name} self.conductor_compute_rpcapi.migrate_server( context, instance, scheduler_hint, True, False, None, block_migration, disk_over_commit, None) def build_instances(self, context, instances, image, filter_properties, admin_password, injected_files, requested_networks, security_groups, block_device_mapping, legacy_bdm=True): self.conductor_compute_rpcapi.build_instances(context, instances=instances, image=image, filter_properties=filter_properties, admin_password=admin_password, injected_files=injected_files, requested_networks=requested_networks, security_groups=security_groups, block_device_mapping=block_device_mapping, legacy_bdm=legacy_bdm) def unshelve_instance(self, context, instance): self.conductor_compute_rpcapi.unshelve_instance(context, instance=instance) nova-2014.1/nova/conductor/__init__.py0000664000175400017540000000226612323721476020773 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import oslo.config.cfg from nova.conductor import api as conductor_api def API(*args, **kwargs): use_local = kwargs.pop('use_local', False) if oslo.config.cfg.CONF.conductor.use_local or use_local: api = conductor_api.LocalAPI else: api = conductor_api.API return api(*args, **kwargs) def ComputeTaskAPI(*args, **kwargs): use_local = kwargs.pop('use_local', False) if oslo.config.cfg.CONF.conductor.use_local or use_local: api = conductor_api.LocalComputeTaskAPI else: api = conductor_api.ComputeTaskAPI return api(*args, **kwargs) nova-2014.1/nova/conductor/rpcapi.py0000664000175400017540000005341412323721510020500 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2013 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. """Client side of the conductor RPC API.""" from oslo.config import cfg from oslo import messaging from nova.objects import base as objects_base from nova.openstack.common import jsonutils from nova import rpc CONF = cfg.CONF rpcapi_cap_opt = cfg.StrOpt('conductor', help='Set a version cap for messages sent to conductor services') CONF.register_opt(rpcapi_cap_opt, 'upgrade_levels') class ConductorAPI(object): """Client side of the conductor RPC API API version history: 1.0 - Initial version. 1.1 - Added migration_update 1.2 - Added instance_get_by_uuid and instance_get_all_by_host 1.3 - Added aggregate_host_add and aggregate_host_delete 1.4 - Added migration_get 1.5 - Added bw_usage_update 1.6 - Added get_backdoor_port() 1.7 - Added aggregate_get_by_host, aggregate_metadata_add, and aggregate_metadata_delete 1.8 - Added security_group_get_by_instance and security_group_rule_get_by_security_group 1.9 - Added provider_fw_rule_get_all 1.10 - Added agent_build_get_by_triple 1.11 - Added aggregate_get 1.12 - Added block_device_mapping_update_or_create 1.13 - Added block_device_mapping_get_all_by_instance 1.14 - Added block_device_mapping_destroy 1.15 - Added instance_get_all_by_filters and instance_get_all_hung_in_rebooting and instance_get_active_by_window Deprecated instance_get_all_by_host 1.16 - Added instance_destroy 1.17 - Added instance_info_cache_delete 1.18 - Added instance_type_get 1.19 - Added vol_get_usage_by_time and vol_usage_update 1.20 - Added migration_get_unconfirmed_by_dest_compute 1.21 - Added service_get_all_by 1.22 - Added ping 1.23 - Added instance_get_all Un-Deprecate instance_get_all_by_host 1.24 - Added instance_get 1.25 - Added action_event_start and action_event_finish 1.26 - Added instance_info_cache_update 1.27 - Added service_create 1.28 - Added binary arg to service_get_all_by 1.29 - Added service_destroy 1.30 - Added migration_create 1.31 - Added migration_get_in_progress_by_host_and_node 1.32 - Added optional node to instance_get_all_by_host 1.33 - Added compute_node_create and compute_node_update 1.34 - Added service_update 1.35 - Added instance_get_active_by_window_joined 1.36 - Added instance_fault_create 1.37 - Added task_log_get, task_log_begin_task, task_log_end_task 1.38 - Added service name to instance_update 1.39 - Added notify_usage_exists 1.40 - Added security_groups_trigger_handler and security_groups_trigger_members_refresh Remove instance_get_active_by_window 1.41 - Added fixed_ip_get_by_instance, network_get, instance_floating_address_get_all, quota_commit, quota_rollback 1.42 - Added get_ec2_ids, aggregate_metadata_get_by_host 1.43 - Added compute_stop 1.44 - Added compute_node_delete 1.45 - Added project_id to quota_commit and quota_rollback 1.46 - Added compute_confirm_resize 1.47 - Added columns_to_join to instance_get_all_by_host and instance_get_all_by_filters 1.48 - Added compute_unrescue ... Grizzly supports message version 1.48. So, any changes to existing methods in 2.x after that point should be done such that they can handle the version_cap being set to 1.48. 1.49 - Added columns_to_join to instance_get_by_uuid 1.50 - Added object_action() and object_class_action() 1.51 - Added the 'legacy' argument to block_device_mapping_get_all_by_instance 1.52 - Pass instance objects for compute_confirm_resize 1.53 - Added compute_reboot 1.54 - Added 'update_cells' argument to bw_usage_update 1.55 - Pass instance objects for compute_stop 1.56 - Remove compute_confirm_resize and migration_get_unconfirmed_by_dest_compute 1.57 - Remove migration_create() 1.58 - Remove migration_get() ... Havana supports message version 1.58. So, any changes to existing methods in 1.x after that point should be done such that they can handle the version_cap being set to 1.58. 1.59 - Remove instance_info_cache_update() 1.60 - Remove aggregate_metadata_add() and aggregate_metadata_delete() ... - Remove security_group_get_by_instance() and security_group_rule_get_by_security_group() 1.61 - Return deleted instance from instance_destroy() 1.62 - Added object_backport() 1.63 - Changed the format of values['stats'] from a dict to a JSON string in compute_node_update() 1.64 - Added use_slave to instance_get_all_filters() ... - Remove instance_type_get() ... - Remove aggregate_get() ... - Remove aggregate_get_by_host() ... - Remove instance_get() ... - Remove migration_update() ... - Remove block_device_mapping_destroy() 2.0 - Drop backwards compatibility """ VERSION_ALIASES = { 'grizzly': '1.48', 'havana': '1.58', 'icehouse': '2.0', } def __init__(self): super(ConductorAPI, self).__init__() target = messaging.Target(topic=CONF.conductor.topic, version='2.0') version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.conductor, CONF.upgrade_levels.conductor) serializer = objects_base.NovaObjectSerializer() self.client = rpc.get_client(target, version_cap=version_cap, serializer=serializer) def instance_update(self, context, instance_uuid, updates, service=None): updates_p = jsonutils.to_primitive(updates) cctxt = self.client.prepare() return cctxt.call(context, 'instance_update', instance_uuid=instance_uuid, updates=updates_p, service=service) def instance_get_by_uuid(self, context, instance_uuid, columns_to_join=None): kwargs = {'instance_uuid': instance_uuid, 'columns_to_join': columns_to_join} cctxt = self.client.prepare() return cctxt.call(context, 'instance_get_by_uuid', **kwargs) def migration_get_in_progress_by_host_and_node(self, context, host, node): cctxt = self.client.prepare() return cctxt.call(context, 'migration_get_in_progress_by_host_and_node', host=host, node=node) def aggregate_host_add(self, context, aggregate, host): aggregate_p = jsonutils.to_primitive(aggregate) cctxt = self.client.prepare() return cctxt.call(context, 'aggregate_host_add', aggregate=aggregate_p, host=host) def aggregate_host_delete(self, context, aggregate, host): aggregate_p = jsonutils.to_primitive(aggregate) cctxt = self.client.prepare() return cctxt.call(context, 'aggregate_host_delete', aggregate=aggregate_p, host=host) def aggregate_metadata_get_by_host(self, context, host, key): cctxt = self.client.prepare() return cctxt.call(context, 'aggregate_metadata_get_by_host', host=host, key=key) def bw_usage_update(self, context, uuid, mac, start_period, bw_in=None, bw_out=None, last_ctr_in=None, last_ctr_out=None, last_refreshed=None, update_cells=True): msg_kwargs = dict(uuid=uuid, mac=mac, start_period=start_period, bw_in=bw_in, bw_out=bw_out, last_ctr_in=last_ctr_in, last_ctr_out=last_ctr_out, last_refreshed=last_refreshed, update_cells=update_cells) cctxt = self.client.prepare() return cctxt.call(context, 'bw_usage_update', **msg_kwargs) def provider_fw_rule_get_all(self, context): cctxt = self.client.prepare() return cctxt.call(context, 'provider_fw_rule_get_all') def agent_build_get_by_triple(self, context, hypervisor, os, architecture): cctxt = self.client.prepare() return cctxt.call(context, 'agent_build_get_by_triple', hypervisor=hypervisor, os=os, architecture=architecture) def block_device_mapping_update_or_create(self, context, values, create=None): cctxt = self.client.prepare() return cctxt.call(context, 'block_device_mapping_update_or_create', values=values, create=create) def block_device_mapping_get_all_by_instance(self, context, instance, legacy=True): instance_p = jsonutils.to_primitive(instance) cctxt = self.client.prepare() return cctxt.call(context, 'block_device_mapping_get_all_by_instance', instance=instance_p, legacy=legacy) def instance_get_all_by_filters(self, context, filters, sort_key, sort_dir, columns_to_join=None, use_slave=False): msg_kwargs = dict(filters=filters, sort_key=sort_key, sort_dir=sort_dir, columns_to_join=columns_to_join, use_slave=use_slave) cctxt = self.client.prepare() return cctxt.call(context, 'instance_get_all_by_filters', **msg_kwargs) def instance_get_active_by_window_joined(self, context, begin, end=None, project_id=None, host=None): cctxt = self.client.prepare() return cctxt.call(context, 'instance_get_active_by_window_joined', begin=begin, end=end, project_id=project_id, host=host) def instance_destroy(self, context, instance): instance_p = jsonutils.to_primitive(instance) cctxt = self.client.prepare() return cctxt.call(context, 'instance_destroy', instance=instance_p) def instance_info_cache_delete(self, context, instance): instance_p = jsonutils.to_primitive(instance) cctxt = self.client.prepare() cctxt.call(context, 'instance_info_cache_delete', instance=instance_p) def vol_get_usage_by_time(self, context, start_time): start_time_p = jsonutils.to_primitive(start_time) cctxt = self.client.prepare() return cctxt.call(context, 'vol_get_usage_by_time', start_time=start_time_p) def vol_usage_update(self, context, vol_id, rd_req, rd_bytes, wr_req, wr_bytes, instance, last_refreshed=None, update_totals=False): instance_p = jsonutils.to_primitive(instance) cctxt = self.client.prepare() return cctxt.call(context, 'vol_usage_update', vol_id=vol_id, rd_req=rd_req, rd_bytes=rd_bytes, wr_req=wr_req, wr_bytes=wr_bytes, instance=instance_p, last_refreshed=last_refreshed, update_totals=update_totals) def service_get_all_by(self, context, topic=None, host=None, binary=None): cctxt = self.client.prepare() return cctxt.call(context, 'service_get_all_by', topic=topic, host=host, binary=binary) def instance_get_all_by_host(self, context, host, node=None, columns_to_join=None): cctxt = self.client.prepare() return cctxt.call(context, 'instance_get_all_by_host', host=host, node=node, columns_to_join=columns_to_join) def instance_fault_create(self, context, values): cctxt = self.client.prepare() return cctxt.call(context, 'instance_fault_create', values=values) def action_event_start(self, context, values): values_p = jsonutils.to_primitive(values) cctxt = self.client.prepare() return cctxt.call(context, 'action_event_start', values=values_p) def action_event_finish(self, context, values): values_p = jsonutils.to_primitive(values) cctxt = self.client.prepare() return cctxt.call(context, 'action_event_finish', values=values_p) def service_create(self, context, values): cctxt = self.client.prepare() return cctxt.call(context, 'service_create', values=values) def service_destroy(self, context, service_id): cctxt = self.client.prepare() return cctxt.call(context, 'service_destroy', service_id=service_id) def compute_node_create(self, context, values): cctxt = self.client.prepare() return cctxt.call(context, 'compute_node_create', values=values) def compute_node_update(self, context, node, values): node_p = jsonutils.to_primitive(node) cctxt = self.client.prepare() return cctxt.call(context, 'compute_node_update', node=node_p, values=values) def compute_node_delete(self, context, node): node_p = jsonutils.to_primitive(node) cctxt = self.client.prepare() return cctxt.call(context, 'compute_node_delete', node=node_p) def service_update(self, context, service, values): service_p = jsonutils.to_primitive(service) cctxt = self.client.prepare() return cctxt.call(context, 'service_update', service=service_p, values=values) def task_log_get(self, context, task_name, begin, end, host, state=None): cctxt = self.client.prepare() return cctxt.call(context, 'task_log_get', task_name=task_name, begin=begin, end=end, host=host, state=state) def task_log_begin_task(self, context, task_name, begin, end, host, task_items=None, message=None): cctxt = self.client.prepare() return cctxt.call(context, 'task_log_begin_task', task_name=task_name, begin=begin, end=end, host=host, task_items=task_items, message=message) def task_log_end_task(self, context, task_name, begin, end, host, errors, message=None): cctxt = self.client.prepare() return cctxt.call(context, 'task_log_end_task', task_name=task_name, begin=begin, end=end, host=host, errors=errors, message=message) def notify_usage_exists(self, context, instance, current_period=False, ignore_missing_network_data=True, system_metadata=None, extra_usage_info=None): instance_p = jsonutils.to_primitive(instance) system_metadata_p = jsonutils.to_primitive(system_metadata) extra_usage_info_p = jsonutils.to_primitive(extra_usage_info) cctxt = self.client.prepare() return cctxt.call( context, 'notify_usage_exists', instance=instance_p, current_period=current_period, ignore_missing_network_data=ignore_missing_network_data, system_metadata=system_metadata_p, extra_usage_info=extra_usage_info_p) def security_groups_trigger_handler(self, context, event, args): args_p = jsonutils.to_primitive(args) cctxt = self.client.prepare() return cctxt.call(context, 'security_groups_trigger_handler', event=event, args=args_p) def security_groups_trigger_members_refresh(self, context, group_ids): cctxt = self.client.prepare() return cctxt.call(context, 'security_groups_trigger_members_refresh', group_ids=group_ids) def network_migrate_instance_start(self, context, instance, migration): instance_p = jsonutils.to_primitive(instance) migration_p = jsonutils.to_primitive(migration) cctxt = self.client.prepare() return cctxt.call(context, 'network_migrate_instance_start', instance=instance_p, migration=migration_p) def network_migrate_instance_finish(self, context, instance, migration): instance_p = jsonutils.to_primitive(instance) migration_p = jsonutils.to_primitive(migration) cctxt = self.client.prepare() return cctxt.call(context, 'network_migrate_instance_finish', instance=instance_p, migration=migration_p) def quota_commit(self, context, reservations, project_id=None, user_id=None): reservations_p = jsonutils.to_primitive(reservations) cctxt = self.client.prepare() return cctxt.call(context, 'quota_commit', reservations=reservations_p, project_id=project_id, user_id=user_id) def quota_rollback(self, context, reservations, project_id=None, user_id=None): reservations_p = jsonutils.to_primitive(reservations) cctxt = self.client.prepare() return cctxt.call(context, 'quota_rollback', reservations=reservations_p, project_id=project_id, user_id=user_id) def get_ec2_ids(self, context, instance): instance_p = jsonutils.to_primitive(instance) cctxt = self.client.prepare() return cctxt.call(context, 'get_ec2_ids', instance=instance_p) def compute_unrescue(self, context, instance): instance_p = jsonutils.to_primitive(instance) cctxt = self.client.prepare() return cctxt.call(context, 'compute_unrescue', instance=instance_p) def object_class_action(self, context, objname, objmethod, objver, args, kwargs): cctxt = self.client.prepare() return cctxt.call(context, 'object_class_action', objname=objname, objmethod=objmethod, objver=objver, args=args, kwargs=kwargs) def object_action(self, context, objinst, objmethod, args, kwargs): cctxt = self.client.prepare() return cctxt.call(context, 'object_action', objinst=objinst, objmethod=objmethod, args=args, kwargs=kwargs) def object_backport(self, context, objinst, target_version): cctxt = self.client.prepare() return cctxt.call(context, 'object_backport', objinst=objinst, target_version=target_version) class ComputeTaskAPI(object): """Client side of the conductor 'compute' namespaced RPC API API version history: 1.0 - Initial version (empty). 1.1 - Added unified migrate_server call. 1.2 - Added build_instances 1.3 - Added unshelve_instance 1.4 - Added reservations to migrate_server. 1.5 - Added the leagacy_bdm parameter to build_instances 1.6 - Made migrate_server use instance objects """ def __init__(self): super(ComputeTaskAPI, self).__init__() target = messaging.Target(topic=CONF.conductor.topic, namespace='compute_task', version='1.0') serializer = objects_base.NovaObjectSerializer() self.client = rpc.get_client(target, serializer=serializer) def migrate_server(self, context, instance, scheduler_hint, live, rebuild, flavor, block_migration, disk_over_commit, reservations=None): if self.client.can_send_version('1.6'): version = '1.6' else: instance = jsonutils.to_primitive( objects_base.obj_to_primitive(instance)) version = '1.4' flavor_p = jsonutils.to_primitive(flavor) cctxt = self.client.prepare(version=version) return cctxt.call(context, 'migrate_server', instance=instance, scheduler_hint=scheduler_hint, live=live, rebuild=rebuild, flavor=flavor_p, block_migration=block_migration, disk_over_commit=disk_over_commit, reservations=reservations) def build_instances(self, context, instances, image, filter_properties, admin_password, injected_files, requested_networks, security_groups, block_device_mapping, legacy_bdm=True): image_p = jsonutils.to_primitive(image) cctxt = self.client.prepare(version='1.5') cctxt.cast(context, 'build_instances', instances=instances, image=image_p, filter_properties=filter_properties, admin_password=admin_password, injected_files=injected_files, requested_networks=requested_networks, security_groups=security_groups, block_device_mapping=block_device_mapping, legacy_bdm=legacy_bdm) def unshelve_instance(self, context, instance): cctxt = self.client.prepare(version='1.3') cctxt.cast(context, 'unshelve_instance', instance=instance) nova-2014.1/nova/policy.py0000664000175400017540000000767212323721477016542 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Policy Engine For Nova.""" import os.path from oslo.config import cfg from nova import exception from nova.openstack.common.gettextutils import _ from nova.openstack.common import policy from nova import utils policy_opts = [ cfg.StrOpt('policy_file', default='policy.json', help=_('JSON file representing policy')), cfg.StrOpt('policy_default_rule', default='default', help=_('Rule checked when requested rule is not found')), ] CONF = cfg.CONF CONF.register_opts(policy_opts) _POLICY_PATH = None _POLICY_CACHE = {} def reset(): global _POLICY_PATH global _POLICY_CACHE _POLICY_PATH = None _POLICY_CACHE = {} policy.reset() def init(): global _POLICY_PATH global _POLICY_CACHE if not _POLICY_PATH: _POLICY_PATH = CONF.policy_file if not os.path.exists(_POLICY_PATH): _POLICY_PATH = CONF.find_file(_POLICY_PATH) if not _POLICY_PATH: raise exception.ConfigNotFound(path=CONF.policy_file) utils.read_cached_file(_POLICY_PATH, _POLICY_CACHE, reload_func=_set_rules) def _set_rules(data): default_rule = CONF.policy_default_rule policy.set_rules(policy.Rules.load_json(data, default_rule)) def enforce(context, action, target, do_raise=True): """Verifies that the action is valid on the target in this context. :param context: nova context :param action: string representing the action to be checked this should be colon separated for clarity. i.e. ``compute:create_instance``, ``compute:attach_volume``, ``volume:attach_volume`` :param target: dictionary representing the object of the action for object creation this should be a dictionary representing the location of the object e.g. ``{'project_id': context.project_id}`` :param do_raise: if True (the default), raises PolicyNotAuthorized; if False, returns False :raises nova.exception.PolicyNotAuthorized: if verification fails and do_raise is True. :return: returns a non-False value (not necessarily "True") if authorized, and the exact value False if not authorized and do_raise is False. """ init() credentials = context.to_dict() # Add the exception arguments if asked to do a raise extra = {} if do_raise: extra.update(exc=exception.PolicyNotAuthorized, action=action) return policy.check(action, target, credentials, **extra) def check_is_admin(context): """Whether or not roles contains 'admin' role according to policy setting. """ init() #the target is user-self credentials = context.to_dict() target = credentials return policy.check('context_is_admin', target, credentials) @policy.register('is_admin') class IsAdminCheck(policy.Check): """An explicit check for is_admin.""" def __init__(self, kind, match): """Initialize the check.""" self.expected = (match.lower() == 'true') super(IsAdminCheck, self).__init__(kind, str(self.expected)) def __call__(self, target, creds): """Determine whether is_admin matches the requested value.""" return creds['is_admin'] == self.expected def get_rules(): return policy._rules nova-2014.1/nova/weights.py0000664000175400017540000001062012323721477016700 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011-2012 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Pluggable Weighing support """ import abc import six from nova import loadables def normalize(weight_list, minval=None, maxval=None): """Normalize the values in a list between 0 and 1.0. The normalization is made regarding the lower and upper values present in weight_list. If the minval and/or maxval parameters are set, these values will be used instead of the minimum and maximum from the list. If all the values are equal, they are normalized to 0. """ if not weight_list: return () if maxval is None: maxval = max(weight_list) if minval is None: minval = min(weight_list) maxval = float(maxval) minval = float(minval) if minval == maxval: return [0] * len(weight_list) range_ = maxval - minval return ((i - minval) / range_ for i in weight_list) class WeighedObject(object): """Object with weight information.""" def __init__(self, obj, weight): self.obj = obj self.weight = weight def __repr__(self): return "" % (self.obj, self.weight) @six.add_metaclass(abc.ABCMeta) class BaseWeigher(object): """Base class for pluggable weighers. The attributes maxval and minval can be specified to set up the maximum and minimum values for the weighed objects. These values will then be taken into account in the normalization step, instead of taking the values from the calculated weights. """ minval = None maxval = None def weight_multiplier(self): """How weighted this weigher should be. Override this method in a subclass, so that the returned value is read from a configuration option to permit operators specify a multiplier for the weigher. """ return 1.0 @abc.abstractmethod def _weigh_object(self, obj, weight_properties): """Weigh an specific object.""" def weigh_objects(self, weighed_obj_list, weight_properties): """Weigh multiple objects. Override in a subclass if you need access to all objects in order to calculate weights. Do not modify the weight of an object here, just return a list of weights. """ # Calculate the weights weights = [] for obj in weighed_obj_list: weight = self._weigh_object(obj.obj, weight_properties) # Record the min and max values if they are None. If they anything # but none we assume that the weigher has set them if self.minval is None: self.minval = weight if self.maxval is None: self.maxval = weight if weight < self.minval: self.minval = weight elif weight > self.maxval: self.maxval = weight weights.append(weight) return weights class BaseWeightHandler(loadables.BaseLoader): object_class = WeighedObject def get_weighed_objects(self, weigher_classes, obj_list, weighing_properties): """Return a sorted (descending), normalized list of WeighedObjects.""" if not obj_list: return [] weighed_objs = [self.object_class(obj, 0.0) for obj in obj_list] for weigher_cls in weigher_classes: weigher = weigher_cls() weights = weigher.weigh_objects(weighed_objs, weighing_properties) # Normalize the weights weights = normalize(weights, minval=weigher.minval, maxval=weigher.maxval) for i, weight in enumerate(weights): obj = weighed_objs[i] obj.weight += weigher.weight_multiplier() * weight return sorted(weighed_objs, key=lambda x: x.weight, reverse=True) nova-2014.1/nova/utils.py0000664000175400017540000011062312323721510016356 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Utilities and helper functions.""" import contextlib import datetime import functools import hashlib import inspect import multiprocessing import os import pyclbr import random import re import shutil import socket import struct import sys import tempfile from xml.sax import saxutils import eventlet import netaddr from oslo.config import cfg from oslo import messaging import six from nova import exception from nova.openstack.common import excutils from nova.openstack.common import gettextutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import lockutils from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova.openstack.common import timeutils notify_decorator = 'nova.notifications.notify_decorator' monkey_patch_opts = [ cfg.BoolOpt('monkey_patch', default=False, help='Whether to log monkey patching'), cfg.ListOpt('monkey_patch_modules', default=[ 'nova.api.ec2.cloud:%s' % (notify_decorator), 'nova.compute.api:%s' % (notify_decorator) ], help='List of modules/decorators to monkey patch'), ] utils_opts = [ cfg.IntOpt('password_length', default=12, help='Length of generated instance admin passwords'), cfg.StrOpt('instance_usage_audit_period', default='month', help='Time period to generate instance usages for. ' 'Time period must be hour, day, month or year'), cfg.StrOpt('rootwrap_config', default="/etc/nova/rootwrap.conf", help='Path to the rootwrap configuration file to use for ' 'running commands as root'), cfg.StrOpt('tempdir', help='Explicitly specify the temporary working directory'), ] CONF = cfg.CONF CONF.register_opts(monkey_patch_opts) CONF.register_opts(utils_opts) CONF.import_opt('network_api_class', 'nova.network') LOG = logging.getLogger(__name__) # used in limits TIME_UNITS = { 'SECOND': 1, 'MINUTE': 60, 'HOUR': 3600, 'DAY': 84400 } _IS_NEUTRON = None synchronized = lockutils.synchronized_with_prefix('nova-') SM_IMAGE_PROP_PREFIX = "image_" SM_INHERITABLE_KEYS = ( 'min_ram', 'min_disk', 'disk_format', 'container_format', ) def vpn_ping(address, port, timeout=0.05, session_id=None): """Sends a vpn negotiation packet and returns the server session. Returns False on a failure. Basic packet structure is below. Client packet (14 bytes):: 0 1 8 9 13 +-+--------+-----+ |x| cli_id |?????| +-+--------+-----+ x = packet identifier 0x38 cli_id = 64 bit identifier ? = unknown, probably flags/padding Server packet (26 bytes):: 0 1 8 9 13 14 21 2225 +-+--------+-----+--------+----+ |x| srv_id |?????| cli_id |????| +-+--------+-----+--------+----+ x = packet identifier 0x40 cli_id = 64 bit identifier ? = unknown, probably flags/padding bit 9 was 1 and the rest were 0 in testing """ if session_id is None: session_id = random.randint(0, 0xffffffffffffffff) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) data = struct.pack('!BQxxxxx', 0x38, session_id) sock.sendto(data, (address, port)) sock.settimeout(timeout) try: received = sock.recv(2048) except socket.timeout: return False finally: sock.close() fmt = '!BQxxxxxQxxxx' if len(received) != struct.calcsize(fmt): LOG.warn(_('Expected to receive %(exp)s bytes, but actually %(act)s') % dict(exp=struct.calcsize(fmt), act=len(received))) return False (identifier, server_sess, client_sess) = struct.unpack(fmt, received) if identifier == 0x40 and client_sess == session_id: return server_sess def _get_root_helper(): return 'sudo nova-rootwrap %s' % CONF.rootwrap_config def execute(*cmd, **kwargs): """Convenience wrapper around oslo's execute() method.""" if 'run_as_root' in kwargs and not 'root_helper' in kwargs: kwargs['root_helper'] = _get_root_helper() return processutils.execute(*cmd, **kwargs) def trycmd(*args, **kwargs): """Convenience wrapper around oslo's trycmd() method.""" if 'run_as_root' in kwargs and not 'root_helper' in kwargs: kwargs['root_helper'] = _get_root_helper() return processutils.trycmd(*args, **kwargs) def novadir(): import nova return os.path.abspath(nova.__file__).split('nova/__init__.py')[0] def generate_uid(topic, size=8): characters = '01234567890abcdefghijklmnopqrstuvwxyz' choices = [random.choice(characters) for _x in xrange(size)] return '%s-%s' % (topic, ''.join(choices)) # Default symbols to use for passwords. Avoids visually confusing characters. # ~6 bits per symbol DEFAULT_PASSWORD_SYMBOLS = ('23456789', # Removed: 0,1 'ABCDEFGHJKLMNPQRSTUVWXYZ', # Removed: I, O 'abcdefghijkmnopqrstuvwxyz') # Removed: l # ~5 bits per symbol EASIER_PASSWORD_SYMBOLS = ('23456789', # Removed: 0, 1 'ABCDEFGHJKLMNPQRSTUVWXYZ') # Removed: I, O def last_completed_audit_period(unit=None, before=None): """This method gives you the most recently *completed* audit period. arguments: units: string, one of 'hour', 'day', 'month', 'year' Periods normally begin at the beginning (UTC) of the period unit (So a 'day' period begins at midnight UTC, a 'month' unit on the 1st, a 'year' on Jan, 1) unit string may be appended with an optional offset like so: 'day@18' This will begin the period at 18:00 UTC. 'month@15' starts a monthly period on the 15th, and year@3 begins a yearly one on March 1st. before: Give the audit period most recently completed before . Defaults to now. returns: 2 tuple of datetimes (begin, end) The begin timestamp of this audit period is the same as the end of the previous. """ if not unit: unit = CONF.instance_usage_audit_period offset = 0 if '@' in unit: unit, offset = unit.split("@", 1) offset = int(offset) if before is not None: rightnow = before else: rightnow = timeutils.utcnow() if unit not in ('month', 'day', 'year', 'hour'): raise ValueError('Time period must be hour, day, month or year') if unit == 'month': if offset == 0: offset = 1 end = datetime.datetime(day=offset, month=rightnow.month, year=rightnow.year) if end >= rightnow: year = rightnow.year if 1 >= rightnow.month: year -= 1 month = 12 + (rightnow.month - 1) else: month = rightnow.month - 1 end = datetime.datetime(day=offset, month=month, year=year) year = end.year if 1 >= end.month: year -= 1 month = 12 + (end.month - 1) else: month = end.month - 1 begin = datetime.datetime(day=offset, month=month, year=year) elif unit == 'year': if offset == 0: offset = 1 end = datetime.datetime(day=1, month=offset, year=rightnow.year) if end >= rightnow: end = datetime.datetime(day=1, month=offset, year=rightnow.year - 1) begin = datetime.datetime(day=1, month=offset, year=rightnow.year - 2) else: begin = datetime.datetime(day=1, month=offset, year=rightnow.year - 1) elif unit == 'day': end = datetime.datetime(hour=offset, day=rightnow.day, month=rightnow.month, year=rightnow.year) if end >= rightnow: end = end - datetime.timedelta(days=1) begin = end - datetime.timedelta(days=1) elif unit == 'hour': end = rightnow.replace(minute=offset, second=0, microsecond=0) if end >= rightnow: end = end - datetime.timedelta(hours=1) begin = end - datetime.timedelta(hours=1) return (begin, end) def generate_password(length=None, symbolgroups=DEFAULT_PASSWORD_SYMBOLS): """Generate a random password from the supplied symbol groups. At least one symbol from each group will be included. Unpredictable results if length is less than the number of symbol groups. Believed to be reasonably secure (with a reasonable password length!) """ if length is None: length = CONF.password_length r = random.SystemRandom() # NOTE(jerdfelt): Some password policies require at least one character # from each group of symbols, so start off with one random character # from each symbol group password = [r.choice(s) for s in symbolgroups] # If length < len(symbolgroups), the leading characters will only # be from the first length groups. Try our best to not be predictable # by shuffling and then truncating. r.shuffle(password) password = password[:length] length -= len(password) # then fill with random characters from all symbol groups symbols = ''.join(symbolgroups) password.extend([r.choice(symbols) for _i in xrange(length)]) # finally shuffle to ensure first x characters aren't from a # predictable group r.shuffle(password) return ''.join(password) def get_my_ipv4_address(): """Run ip route/addr commands to figure out the best ipv4 """ LOCALHOST = '127.0.0.1' try: out = execute('ip', '-f', 'inet', '-o', 'route', 'show') # Find the default route regex_default = ('default\s*via\s*' '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' '\s*dev\s*(\w*)\s*') default_routes = re.findall(regex_default, out[0]) if not default_routes: return LOCALHOST gateway, iface = default_routes[0] # Find the right subnet for the gateway/interface for # the default route route = ('(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,2})' '\s*dev\s*(\w*)\s*') for match in re.finditer(route, out[0]): subnet = netaddr.IPNetwork(match.group(1) + "/" + match.group(2)) if (match.group(3) == iface and netaddr.IPAddress(gateway) in subnet): try: return _get_ipv4_address_for_interface(iface) except exception.NovaException: pass except Exception as ex: LOG.error(_("Couldn't get IPv4 : %(ex)s") % {'ex': ex}) return LOCALHOST def _get_ipv4_address_for_interface(iface): """Run ip addr show for an interface and grab its ipv4 addresses """ try: out = execute('ip', '-f', 'inet', '-o', 'addr', 'show', iface) regexp_address = re.compile('inet\s*' '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})') address = [m.group(1) for m in regexp_address.finditer(out[0]) if m.group(1) != '127.0.0.1'] if address: return address[0] else: msg = _('IPv4 address is not found.: %s') % out[0] raise exception.NovaException(msg) except Exception as ex: msg = _("Couldn't get IPv4 of %(interface)s" " : %(ex)s") % {'interface': iface, 'ex': ex} LOG.error(msg) raise exception.NovaException(msg) def get_my_linklocal(interface): try: if_str = execute('ip', '-f', 'inet6', '-o', 'addr', 'show', interface) condition = '\s+inet6\s+([0-9a-f:]+)/\d+\s+scope\s+link' links = [re.search(condition, x) for x in if_str[0].split('\n')] address = [w.group(1) for w in links if w is not None] if address[0] is not None: return address[0] else: msg = _('Link Local address is not found.:%s') % if_str raise exception.NovaException(msg) except Exception as ex: msg = _("Couldn't get Link Local IP of %(interface)s" " :%(ex)s") % {'interface': interface, 'ex': ex} raise exception.NovaException(msg) class LazyPluggable(object): """A pluggable backend loaded lazily based on some value.""" def __init__(self, pivot, config_group=None, **backends): self.__backends = backends self.__pivot = pivot self.__backend = None self.__config_group = config_group def __get_backend(self): if not self.__backend: if self.__config_group is None: backend_name = CONF[self.__pivot] else: backend_name = CONF[self.__config_group][self.__pivot] if backend_name not in self.__backends: msg = _('Invalid backend: %s') % backend_name raise exception.NovaException(msg) backend = self.__backends[backend_name] if isinstance(backend, tuple): name = backend[0] fromlist = backend[1] else: name = backend fromlist = backend self.__backend = __import__(name, None, None, fromlist) return self.__backend def __getattr__(self, key): backend = self.__get_backend() return getattr(backend, key) def xhtml_escape(value): """Escapes a string so it is valid within XML or XHTML. """ return saxutils.escape(value, {'"': '"', "'": '''}) def utf8(value): """Try to turn a string into utf-8 if possible. Code is directly from the utf8 function in http://github.com/facebook/tornado/blob/master/tornado/escape.py """ if isinstance(value, unicode): return value.encode('utf-8') elif isinstance(value, gettextutils.Message): return unicode(value).encode('utf-8') assert isinstance(value, str) return value def check_isinstance(obj, cls): """Checks that obj is of type cls, and lets PyLint infer types.""" if isinstance(obj, cls): return obj raise Exception(_('Expected object of type: %s') % (str(cls))) def parse_server_string(server_str): """Parses the given server_string and returns a list of host and port. If it's not a combination of host part and port, the port element is a null string. If the input is invalid expression, return a null list. """ try: # First of all, exclude pure IPv6 address (w/o port). if netaddr.valid_ipv6(server_str): return (server_str, '') # Next, check if this is IPv6 address with a port number combination. if server_str.find("]:") != -1: (address, port) = server_str.replace('[', '', 1).split(']:') return (address, port) # Third, check if this is a combination of an address and a port if server_str.find(':') == -1: return (server_str, '') # This must be a combination of an address and a port (address, port) = server_str.split(':') return (address, port) except Exception: LOG.error(_('Invalid server_string: %s'), server_str) return ('', '') def is_int_like(val): """Check if a value looks like an int.""" try: return str(int(val)) == str(val) except Exception: return False def is_valid_ipv4(address): """Verify that address represents a valid IPv4 address.""" try: return netaddr.valid_ipv4(address) except Exception: return False def is_valid_ipv6(address): try: return netaddr.valid_ipv6(address) except Exception: return False def is_valid_ip_address(address): return is_valid_ipv4(address) or is_valid_ipv6(address) def is_valid_ipv6_cidr(address): try: str(netaddr.IPNetwork(address, version=6).cidr) return True except Exception: return False def get_shortened_ipv6(address): addr = netaddr.IPAddress(address, version=6) return str(addr.ipv6()) def get_shortened_ipv6_cidr(address): net = netaddr.IPNetwork(address, version=6) return str(net.cidr) def is_valid_cidr(address): """Check if address is valid The provided address can be a IPv6 or a IPv4 CIDR address. """ try: # Validate the correct CIDR Address netaddr.IPNetwork(address) except netaddr.core.AddrFormatError: return False except UnboundLocalError: # NOTE(MotoKen): work around bug in netaddr 0.7.5 (see detail in # https://github.com/drkjam/netaddr/issues/2) return False # Prior validation partially verify /xx part # Verify it here ip_segment = address.split('/') if (len(ip_segment) <= 1 or ip_segment[1] == ''): return False return True def get_ip_version(network): """Returns the IP version of a network (IPv4 or IPv6). Raises AddrFormatError if invalid network. """ if netaddr.IPNetwork(network).version == 6: return "IPv6" elif netaddr.IPNetwork(network).version == 4: return "IPv4" def monkey_patch(): """If the CONF.monkey_patch set as True, this function patches a decorator for all functions in specified modules. You can set decorators for each modules using CONF.monkey_patch_modules. The format is "Module path:Decorator function". Example: 'nova.api.ec2.cloud:nova.notifications.notify_decorator' Parameters of the decorator is as follows. (See nova.notifications.notify_decorator) name - name of the function function - object of the function """ # If CONF.monkey_patch is not True, this function do nothing. if not CONF.monkey_patch: return # Get list of modules and decorators for module_and_decorator in CONF.monkey_patch_modules: module, decorator_name = module_and_decorator.split(':') # import decorator function decorator = importutils.import_class(decorator_name) __import__(module) # Retrieve module information using pyclbr module_data = pyclbr.readmodule_ex(module) for key in module_data.keys(): # set the decorator for the class methods if isinstance(module_data[key], pyclbr.Class): clz = importutils.import_class("%s.%s" % (module, key)) for method, func in inspect.getmembers(clz, inspect.ismethod): setattr(clz, method, decorator("%s.%s.%s" % (module, key, method), func)) # set the decorator for the function if isinstance(module_data[key], pyclbr.Function): func = importutils.import_class("%s.%s" % (module, key)) setattr(sys.modules[module], key, decorator("%s.%s" % (module, key), func)) def convert_to_list_dict(lst, label): """Convert a value or list into a list of dicts.""" if not lst: return None if not isinstance(lst, list): lst = [lst] return [{label: x} for x in lst] def make_dev_path(dev, partition=None, base='/dev'): """Return a path to a particular device. >>> make_dev_path('xvdc') /dev/xvdc >>> make_dev_path('xvdc', 1) /dev/xvdc1 """ path = os.path.join(base, dev) if partition: path += str(partition) return path def sanitize_hostname(hostname): """Return a hostname which conforms to RFC-952 and RFC-1123 specs.""" if isinstance(hostname, unicode): hostname = hostname.encode('latin-1', 'ignore') hostname = re.sub('[ _]', '-', hostname) hostname = re.sub('[^\w.-]+', '', hostname) hostname = hostname.lower() hostname = hostname.strip('.-') return hostname def read_cached_file(filename, cache_info, reload_func=None): """Read from a file if it has been modified. :param cache_info: dictionary to hold opaque cache. :param reload_func: optional function to be called with data when file is reloaded due to a modification. :returns: data from file """ mtime = os.path.getmtime(filename) if not cache_info or mtime != cache_info.get('mtime'): LOG.debug(_("Reloading cached file %s") % filename) with open(filename) as fap: cache_info['data'] = fap.read() cache_info['mtime'] = mtime if reload_func: reload_func(cache_info['data']) return cache_info['data'] @contextlib.contextmanager def temporary_mutation(obj, **kwargs): """Temporarily set the attr on a particular object to a given value then revert when finished. One use of this is to temporarily set the read_deleted flag on a context object: with temporary_mutation(context, read_deleted="yes"): do_something_that_needed_deleted_objects() """ def is_dict_like(thing): return hasattr(thing, 'has_key') def get(thing, attr, default): if is_dict_like(thing): return thing.get(attr, default) else: return getattr(thing, attr, default) def set_value(thing, attr, val): if is_dict_like(thing): thing[attr] = val else: setattr(thing, attr, val) def delete(thing, attr): if is_dict_like(thing): del thing[attr] else: delattr(thing, attr) NOT_PRESENT = object() old_values = {} for attr, new_value in kwargs.items(): old_values[attr] = get(obj, attr, NOT_PRESENT) set_value(obj, attr, new_value) try: yield finally: for attr, old_value in old_values.items(): if old_value is NOT_PRESENT: delete(obj, attr) else: set_value(obj, attr, old_value) def generate_mac_address(): """Generate an Ethernet MAC address.""" # NOTE(vish): We would prefer to use 0xfe here to ensure that linux # bridge mac addresses don't change, but it appears to # conflict with libvirt, so we use the next highest octet # that has the unicast and locally administered bits set # properly: 0xfa. # Discussion: https://bugs.launchpad.net/nova/+bug/921838 mac = [0xfa, 0x16, 0x3e, random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff)] return ':'.join(map(lambda x: "%02x" % x, mac)) def read_file_as_root(file_path): """Secure helper to read file as root.""" try: out, _err = execute('cat', file_path, run_as_root=True) return out except processutils.ProcessExecutionError: raise exception.FileNotFound(file_path=file_path) @contextlib.contextmanager def temporary_chown(path, owner_uid=None): """Temporarily chown a path. :param owner_uid: UID of temporary owner (defaults to current user) """ if owner_uid is None: owner_uid = os.getuid() orig_uid = os.stat(path).st_uid if orig_uid != owner_uid: execute('chown', owner_uid, path, run_as_root=True) try: yield finally: if orig_uid != owner_uid: execute('chown', orig_uid, path, run_as_root=True) def chown(path, owner_uid=None): """chown a path. :param owner_uid: UID of owner (defaults to current user) """ if owner_uid is None: owner_uid = os.getuid() orig_uid = os.stat(path).st_uid if orig_uid != owner_uid: execute('chown', owner_uid, path, run_as_root=True) @contextlib.contextmanager def tempdir(**kwargs): argdict = kwargs.copy() if 'dir' not in argdict: argdict['dir'] = CONF.tempdir tmpdir = tempfile.mkdtemp(**argdict) try: yield tmpdir finally: try: shutil.rmtree(tmpdir) except OSError as e: LOG.error(_('Could not remove tmpdir: %s'), str(e)) def walk_class_hierarchy(clazz, encountered=None): """Walk class hierarchy, yielding most derived classes first.""" if not encountered: encountered = [] for subclass in clazz.__subclasses__(): if subclass not in encountered: encountered.append(subclass) # drill down to leaves first for subsubclass in walk_class_hierarchy(subclass, encountered): yield subsubclass yield subclass class UndoManager(object): """Provides a mechanism to facilitate rolling back a series of actions when an exception is raised. """ def __init__(self): self.undo_stack = [] def undo_with(self, undo_func): self.undo_stack.append(undo_func) def _rollback(self): for undo_func in reversed(self.undo_stack): undo_func() def rollback_and_reraise(self, msg=None, **kwargs): """Rollback a series of actions then re-raise the exception. .. note:: (sirp) This should only be called within an exception handler. """ with excutils.save_and_reraise_exception(): if msg: LOG.exception(msg, **kwargs) self._rollback() def mkfs(fs, path, label=None, run_as_root=False): """Format a file or block device :param fs: Filesystem type (examples include 'swap', 'ext3', 'ext4' 'btrfs', etc.) :param path: Path to file or block device to format :param label: Volume label to use """ if fs == 'swap': args = ['mkswap'] else: args = ['mkfs', '-t', fs] #add -F to force no interactive execute on non-block device. if fs in ('ext3', 'ext4', 'ntfs'): args.extend(['-F']) if label: if fs in ('msdos', 'vfat'): label_opt = '-n' else: label_opt = '-L' args.extend([label_opt, label]) args.append(path) execute(*args, run_as_root=run_as_root) def last_bytes(file_like_object, num): """Return num bytes from the end of the file, and remaining byte count. :param file_like_object: The file to read :param num: The number of bytes to return :returns (data, remaining) """ try: file_like_object.seek(-num, os.SEEK_END) except IOError as e: if e.errno == 22: file_like_object.seek(0, os.SEEK_SET) else: raise remaining = file_like_object.tell() return (file_like_object.read(), remaining) def metadata_to_dict(metadata): result = {} for item in metadata: if not item.get('deleted'): result[item['key']] = item['value'] return result def dict_to_metadata(metadata): result = [] for key, value in metadata.iteritems(): result.append(dict(key=key, value=value)) return result def instance_meta(instance): if isinstance(instance['metadata'], dict): return instance['metadata'] else: return metadata_to_dict(instance['metadata']) def instance_sys_meta(instance): if not instance.get('system_metadata'): return {} if isinstance(instance['system_metadata'], dict): return instance['system_metadata'] else: return metadata_to_dict(instance['system_metadata']) def get_wrapped_function(function): """Get the method at the bottom of a stack of decorators.""" if not hasattr(function, 'func_closure') or not function.func_closure: return function def _get_wrapped_function(function): if not hasattr(function, 'func_closure') or not function.func_closure: return None for closure in function.func_closure: func = closure.cell_contents deeper_func = _get_wrapped_function(func) if deeper_func: return deeper_func elif hasattr(closure.cell_contents, '__call__'): return closure.cell_contents return _get_wrapped_function(function) def expects_func_args(*args): def _decorator_checker(dec): @functools.wraps(dec) def _decorator(f): base_f = get_wrapped_function(f) arg_names, a, kw, _default = inspect.getargspec(base_f) if a or kw or set(args) <= set(arg_names): # NOTE (ndipanov): We can't really tell if correct stuff will # be passed if it's a function with *args or **kwargs so # we still carry on and hope for the best return dec(f) else: raise TypeError("Decorated function %(f_name)s does not " "have the arguments expected by the " "decorator %(d_name)s" % {'f_name': base_f.__name__, 'd_name': dec.__name__}) return _decorator return _decorator_checker class ExceptionHelper(object): """Class to wrap another and translate the ClientExceptions raised by its function calls to the actual ones. """ def __init__(self, target): self._target = target def __getattr__(self, name): func = getattr(self._target, name) @functools.wraps(func) def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except messaging.ExpectedException as e: raise (e.exc_info[1], None, e.exc_info[2]) return wrapper def check_string_length(value, name, min_length=0, max_length=None): """Check the length of specified string :param value: the value of the string :param name: the name of the string :param min_length: the min_length of the string :param max_length: the max_length of the string """ if not isinstance(value, six.string_types): msg = _("%s is not a string or unicode") % name raise exception.InvalidInput(message=msg) if len(value) < min_length: msg = _("%(name)s has a minimum character requirement of " "%(min_length)s.") % {'name': name, 'min_length': min_length} raise exception.InvalidInput(message=msg) if max_length and len(value) > max_length: msg = _("%(name)s has more than %(max_length)s " "characters.") % {'name': name, 'max_length': max_length} raise exception.InvalidInput(message=msg) def validate_integer(value, name, min_value=None, max_value=None): """Make sure that value is a valid integer, potentially within range.""" try: value = int(str(value)) except (ValueError, UnicodeEncodeError): msg = _('%(value_name)s must be an integer') raise exception.InvalidInput(reason=( msg % {'value_name': name})) if min_value is not None: if value < min_value: msg = _('%(value_name)s must be >= %(min_value)d') raise exception.InvalidInput( reason=(msg % {'value_name': name, 'min_value': min_value})) if max_value is not None: if value > max_value: msg = _('%(value_name)s must be <= %(max_value)d') raise exception.InvalidInput( reason=( msg % {'value_name': name, 'max_value': max_value}) ) return value def spawn_n(func, *args, **kwargs): """Passthrough method for eventlet.spawn_n. This utility exists so that it can be stubbed for testing without interfering with the service spawns. """ eventlet.spawn_n(func, *args, **kwargs) def is_none_string(val): """Check if a string represents a None value. """ if not isinstance(val, six.string_types): return False return val.lower() == 'none' def convert_version_to_int(version): try: if isinstance(version, six.string_types): version = convert_version_to_tuple(version) if isinstance(version, tuple): return reduce(lambda x, y: (x * 1000) + y, version) except Exception: raise exception.NovaException(message="Hypervisor version invalid.") def convert_version_to_str(version_int): version_numbers = [] factor = 1000 while version_int != 0: version_number = version_int - (version_int // factor * factor) version_numbers.insert(0, str(version_number)) version_int = version_int / factor return reduce(lambda x, y: "%s.%s" % (x, y), version_numbers) def convert_version_to_tuple(version_str): return tuple(int(part) for part in version_str.split('.')) def is_neutron(): global _IS_NEUTRON if _IS_NEUTRON is not None: return _IS_NEUTRON try: # compatibility with Folsom/Grizzly configs cls_name = CONF.network_api_class if cls_name == 'nova.network.quantumv2.api.API': cls_name = 'nova.network.neutronv2.api.API' from nova.network.neutronv2 import api as neutron_api _IS_NEUTRON = issubclass(importutils.import_class(cls_name), neutron_api.API) except ImportError: _IS_NEUTRON = False return _IS_NEUTRON def reset_is_neutron(): global _IS_NEUTRON _IS_NEUTRON = None def is_auto_disk_config_disabled(auto_disk_config_raw): auto_disk_config_disabled = False if auto_disk_config_raw is not None: adc_lowered = auto_disk_config_raw.strip().lower() if adc_lowered == "disabled": auto_disk_config_disabled = True return auto_disk_config_disabled def get_auto_disk_config_from_instance(instance=None, sys_meta=None): if sys_meta is None: sys_meta = instance_sys_meta(instance) return sys_meta.get("image_auto_disk_config") def get_auto_disk_config_from_image_props(image_properties): return image_properties.get("auto_disk_config") def get_system_metadata_from_image(image_meta, flavor=None): system_meta = {} prefix_format = SM_IMAGE_PROP_PREFIX + '%s' for key, value in image_meta.get('properties', {}).iteritems(): new_value = unicode(value)[:255] system_meta[prefix_format % key] = new_value for key in SM_INHERITABLE_KEYS: value = image_meta.get(key) if key == 'min_disk' and flavor: if image_meta.get('disk_format') == 'vhd': value = flavor['root_gb'] else: value = max(value, flavor['root_gb']) if value is None: continue system_meta[prefix_format % key] = value return system_meta def get_image_from_system_metadata(system_meta): image_meta = {} properties = {} if not isinstance(system_meta, dict): system_meta = metadata_to_dict(system_meta) for key, value in system_meta.iteritems(): if value is None: continue # NOTE(xqueralt): Not sure this has to inherit all the properties or # just the ones we need. Leaving it for now to keep the old behaviour. if key.startswith(SM_IMAGE_PROP_PREFIX): key = key[len(SM_IMAGE_PROP_PREFIX):] if key in SM_INHERITABLE_KEYS: image_meta[key] = value else: # Skip properties that are non-inheritable if key in CONF.non_inheritable_image_properties: continue properties[key] = value if properties: image_meta['properties'] = properties return image_meta def get_hash_str(base_str): """returns string that represents hash of base_str (in hex format).""" return hashlib.md5(base_str).hexdigest() def cpu_count(): try: return multiprocessing.cpu_count() except NotImplementedError: return 1 nova-2014.1/nova/locale/0000775000175400017540000000000012323722546016112 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/he/0000775000175400017540000000000012323722545016505 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/he/LC_MESSAGES/0000775000175400017540000000000012323722546020273 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/he/LC_MESSAGES/nova.po0000664000175400017540000116541312323721510021577 0ustar jenkinsjenkins00000000000000# Hebrew translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-01-24 12:40+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hebrew " "(http://www.transifex.com/projects/p/openstack/language/he/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/pt/0000775000175400017540000000000012323722545016534 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pt/LC_MESSAGES/0000775000175400017540000000000012323722546020322 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pt/LC_MESSAGES/nova.po0000664000175400017540000116544512323721510021633 0ustar jenkinsjenkins00000000000000# Portuguese translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Portuguese " "(http://www.transifex.com/projects/p/openstack/language/pt/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/id/0000775000175400017540000000000012323722545016505 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/id/LC_MESSAGES/0000775000175400017540000000000012323722546020273 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/id/LC_MESSAGES/nova.po0000664000175400017540000116543612323721510021604 0ustar jenkinsjenkins00000000000000# Indonesian translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Indonesian " "(http://www.transifex.com/projects/p/openstack/language/id/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/sv/0000775000175400017540000000000012323722546016542 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sv/LC_MESSAGES/0000775000175400017540000000000012323722546020327 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sv/LC_MESSAGES/nova.po0000664000175400017540000116541512323721510021635 0ustar jenkinsjenkins00000000000000# Swedish translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-11-22 05:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Swedish " "(http://www.transifex.com/projects/p/openstack/language/sv/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/nl_NL/0000775000175400017540000000000012323722545017113 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/nl_NL/LC_MESSAGES/0000775000175400017540000000000012323722546020701 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/nl_NL/LC_MESSAGES/nova.po0000664000175400017540000116547212323721510022212 0ustar jenkinsjenkins00000000000000# Dutch (Netherlands) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Dutch (Netherlands) " "(http://www.transifex.com/projects/p/openstack/language/nl_NL/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/eu_ES/0000775000175400017540000000000012323722545017111 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/eu_ES/LC_MESSAGES/0000775000175400017540000000000012323722546020677 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/eu_ES/LC_MESSAGES/nova.po0000664000175400017540000116543612323721510022210 0ustar jenkinsjenkins00000000000000# Basque (Spain) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-11-22 05:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Basque (Spain) " "(http://www.transifex.com/projects/p/openstack/language/eu_ES/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/pl_PL/0000775000175400017540000000000012323722545017117 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pl_PL/LC_MESSAGES/0000775000175400017540000000000012323722546020705 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pl_PL/LC_MESSAGES/nova.po0000664000175400017540000116555712323721510022222 0ustar jenkinsjenkins00000000000000# Polish (Poland) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-06-28 18:59+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Polish (Poland) " "(http://www.transifex.com/projects/p/openstack/language/pl_PL/)\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && " "(n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/sl_SI/0000775000175400017540000000000012323722546017123 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sl_SI/LC_MESSAGES/0000775000175400017540000000000012323722546020710 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sl_SI/LC_MESSAGES/nova.po0000664000175400017540000116556312323721510022222 0ustar jenkinsjenkins00000000000000# Slovenian (Slovenia) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-06-28 18:59+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Slovenian (Slovenia) " "(http://www.transifex.com/projects/p/openstack/language/sl_SI/)\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 " "|| n%100==4 ? 2 : 3)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/en_US/0000775000175400017540000000000012323722545017122 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/en_US/LC_MESSAGES/0000775000175400017540000000000012323722546020710 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/en_US/LC_MESSAGES/nova.po0000664000175400017540000135147212323721510022216 0ustar jenkinsjenkins00000000000000# English (United States) translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-01-21 18:28+0000\n" "Last-Translator: Jeremy Stanley \n" "Language-Team: en_US \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "block_device_list %s" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "Arguments dropped when creating context: %s" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "read_deleted can only be one of 'no', 'yes' or 'only', not %r" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Filename of root CA" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Filename of private key" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Filename of root Certificate Revocation List" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Where we keep our keys" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Where we keep our root CA" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Should we use a CA for each project?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "Subject for certificate for users, %s for project, user, timestamp" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Subject for certificate for projects, %s for project, timestamp" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 #, fuzzy msgid "Unable to find the key" msgstr "Unable to find address %r" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Failed to terminate instance" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Flags path: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "An unknown exception occurred." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "Exception in string format operation" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Failed to decrypt text" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Failed to decrypt text" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "Virtual Interface creation failed" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "Connection to glance host %(host)s:%(port)s failed: %(reason)s" #: nova/exception.py:166 msgid "Not authorized." msgstr "Not authorized." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "User does not have admin privileges" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Policy doesn't allow %(action)s to be performed." #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "Image %(image_id)s is not active." #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "Not authorized for image %(image_id)s." #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "Unacceptable parameters." #: nova/exception.py:195 #, fuzzy msgid "Block Device Mapping is Invalid." msgstr "block_device_mapping %s" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "Volume %(volume_id)s is not attached to anything" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "The request is invalid." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Invalid IP protocol %(protocol)s." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Invalid content type %(content_type)s." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "Invalid cidr %(cidr)s." #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "Invalid Parameter: Unicode is not supported by the current database." #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "Group not valid. Reason: %(reason)s" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "Sort key supplied was not valid." #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "Instance %(instance_id)s is not in rescue mode" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "Instance %(instance_id)s is not in rescue mode" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "Instance %(instance_id)s is not ready" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "Service is unavailable at this time." #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "Compute service is unavailable at this time." #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "The supplied hypervisor type of is invalid." #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "The instance requires a newer hypervisor version than has been provided." #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "The supplied device path (%(path)s) is invalid." #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "The supplied device path (%(path)s) is in use." #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "The supplied device (%(device)s) is busy." #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s is not a valid IP v4/6 address." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "Disk format %(disk_format)s is not acceptable" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "Image %(image_id)s is unacceptable: %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "Instance %(instance_id)s is unacceptable: %(reason)s" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "Ec2 id %(ec2_id)s is unacceptable." #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "Expected a uuid but received %(uuid)s." #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "Invalid cidr %(cidr)s." #: nova/exception.py:487 msgid "Constraint not met." msgstr "Constraint not met." #: nova/exception.py:492 msgid "Resource could not be found." msgstr "Resource could not be found." #: nova/exception.py:497 #, fuzzy, python-format msgid "No agent-build associated with id %(id)s." msgstr "No fixed IP associated with id %(id)s." #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Volume %(volume_id)s could not be found." #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "Snapshot %(snapshot_id)s could not be found." #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "No disk at %(location)s" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "Could not find a handler for %(driver_type)s volume." #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "Invalid image href %(image_href)s." #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "Image %(image_id)s could not be found." #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "Project %(project_id)s could not be found." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "Cannot find SR to read/write VDI." #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "Network %(network_id)s is still in use." #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "Network %(network_id)s is still in use." #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "%(req)s is required to create a network." #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "Network %(network_id)s could not be found." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "Port %(port_id)s could not be found." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "Network could not be found for bridge %(bridge)s" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "Network could not be found for uuid %(uuid)s" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "Network could not be found with cidr %(cidr)s." #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "Network could not be found for instance %(instance_id)s." #: nova/exception.py:598 msgid "No networks defined." msgstr "No networks defined." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "Could not find the datastore reference(s) which the VM uses." #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "Port %(port_id)s is still in use." #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Network could not be found for instance %(instance_id)s." #: nova/exception.py:637 #, fuzzy, python-format msgid "No free port available for instance %(instance)s." msgstr "Network could not be found for instance %(instance_id)s." #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "No fixed IP associated with id %(id)s." #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "Fixed ip not found for address %(address)s." #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "Instance %(instance_uuid)s has zero fixed ips." #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "Network host %(host)s has zero fixed ips in network %(network_id)s." #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "More than one instance is associated with fixed ip address '%(address)s'." #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "Fixed IP address %(address)s is invalid." #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "Zero fixed ips available." #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "Zero fixed ips could be found." #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "Floating ip %(address)s already exists." #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "Floating ip not found for id %(id)s." #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "The DNS entry %(name)s already exists in domain %(domain)s." #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "Floating ip not found for address %(address)s." #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "Floating ip not found for host %(host)s." #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "Multiple floating ips are found for address %(address)s." #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "Floating ip pool not found." #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "Zero floating ips available." #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "Floating ip %(address)s is associated." #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "Floating ip %(address)s is not associated." #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "Zero floating ips exist." #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "Interface %(interface)s not found." #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "Cannot disassociate auto assigned floating ip" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "Keypair %(name)s not found for user %(user_id)s" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Service %(service_id)s could not be found." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "Host %(host)s could not be found." #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "Compute host %(host)s could not be found." #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "Could not find binary %(binary)s on host %(host)s." #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "Invalid reservation expiration %(expire)s." #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" "Change would make usage less than 0 for the following resources: " "%(unders)s" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "Quota could not be found" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "Unknown quota resources %(unknown)s." #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "Quota for project %(project_id)s could not be found." #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "Quota class %(class_name)s could not be found." #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "Quota usage for project %(project_id)s could not be found." #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "Quota reservation %(uuid)s could not be found." #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "Quota exceeded for resources: %(overs)s" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "Security group %(security_group_id)s not found." #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "Security group %(security_group_id)s not found for project %(project_id)s." #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "Security group with rule %(rule_id)s not found." #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" #: nova/exception.py:857 #, fuzzy, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "Security group with rule %(rule_id)s not found." #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "Migration %(migration_id)s could not be found." #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "Migration not found for instance %(instance_id)s with status %(status)s." #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "Console pool %(pool_id)s could not be found." #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "Console %(console_id)s could not be found." #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "Console for instance %(instance_uuid)s could not be found." #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "Invalid console type %(console_type)s " #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "Flavor %(flavor_id)s could not be found." #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, fuzzy, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "Flavor access not found for %(flavor_id) / %(project_id) combination." #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "pool %s doesn't exist" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 #, fuzzy msgid "Timeout waiting for response from cell" msgstr "Timed out waiting for RPC response: %s" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Destroying VDIs for Instance %(instance_uuid)s" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "Scheduler Host Filter %(filter_name)s could not be found." #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "File %(file_path)s could not be found." #: nova/exception.py:994 msgid "Zero files could be found." msgstr "Zero files could be found." #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "Virtual switch associated with the network adapter %(adapter)s not found." #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "Network adapter %(adapter)s could not be found." #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "Class %(class_name)s could not be found: %(exception)s" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "Action not allowed." #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "Rotation is not allowed for snapshots" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "Rotation param is required for backup image_type" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "Key pair %(key_name)s already exists." #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "Instance %(name)s already exists." #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "%(path)s is not on shared storage: %(reason)s" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "%(path)s is not on local storage: %(reason)s" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "Malformed message body: %(reason)s" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "Could not find config at %(path)s" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "Could not load paste app '%(name)s' from %(path)s" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "When resizing, instances must change flavor!" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "Insufficient free memory on compute node to start %(uuid)s." #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "No valid host was found. %(reason)s" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "Maximum number of floating ips exceeded" #: nova/exception.py:1120 #, fuzzy msgid "Maximum number of fixed ips exceeded" msgstr "Maximum number of floating ips exceeded" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "Maximum number of metadata items exceeds %(allowed)d" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "Personality file limit exceeded" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "Personality file path too long" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "Personality file content too long" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "Maximum number of key pairs exceeded" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "Maximum number of security groups or rules exceeded" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "Aggregate %(aggregate_id)s could not be found." #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "Aggregate %(aggregate_name)s already exists." #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "Aggregate %(aggregate_id)s has no host %(host)s." #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "Aggregate %(aggregate_id)s already has host %(host)s." #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "Failed to set admin password on %(instance)s because %(reason)s" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "Detected existing vlan with id %(vlan)d" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "Instance %(instance_id)s could not be found." #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "Console for instance %(instance_uuid)s could not be found." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Volume %(volume_id)s could not be found." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "Port %(port_id)s could not be found." #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "Marker %(marker)s could not be found." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "Invalid id: %(val)s (expecting \"i-...\")." #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "Could not fetch image %(image_id)s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "Could not fetch image %(image_id)s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "Task %(task_name)s is already running on host %(host)s" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "Task %(task_name)s is not running on host %(host)s" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "Instance %(instance_uuid)s is locked" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "Unknown config drive format %(format)s. Select one of iso9660 or vfat." #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Failed to dealloc network for deleted instance" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "Failed to dealloc network for deleted instance" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "User data needs to be valid base 64." #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" #: nova/exception.py:1291 #, fuzzy, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "Keypair %(name)s not found for user %(user_id)s" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "The CA file for %(project)s could not be found" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "The CRL file for %(project)s could not be found" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "Instance %(instance_id)s is not in rescue mode" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "Instance %(instance_id)s is not in rescue mode" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "Instance Type with name %(name)s already exists." #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "Expected object of type: %s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "Failed to send state update notification" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Failed to get info for disk %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "JSON file representing policy" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "Rule checked when requested rule is not found" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "Starting %(topic)s node (version %(vcs_string)s)" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Service killed that has no database entry" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "serve() can only be called once" #: nova/utils.py:148 #, fuzzy, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" "unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "Link Local address is not found.:%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "Couldn't get Link Local IP of %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "Invalid backend: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "Expected object of type: %s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "Invalid server_string: %s" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "Reloading cached file %s" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "Could not remove tmpdir: %s" #: nova/utils.py:966 #, fuzzy, python-format msgid "%s is not a string or unicode" msgstr "Server name is not a string or unicode" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "%(name)s listening on %(host)s:%(port)s" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Unable to find address %r" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Unable to find address %r" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Unable to find address %r" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "Stopping WSGI server." #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "WSGI server has stopped." #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "You must implement __call__" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "Loading app %(name)s from %(path)s" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "Invalid service catalog json." #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "Sourcing roles from deprecated X-Role HTTP header" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "Request is too large." #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "%(key)s with value %(value)s failed validator %(name)s" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "FaultWrapper: %s" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Too many failed authentications." #: nova/api/ec2/__init__.py:167 #, 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 "" "Access key %(access_key)s has had %(failures)d failed authentications and" " will be locked out for %(lock_mins)d minutes." #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "Signature not provided" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "Access key not provided" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "Failure communicating with keystone" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "Live Migration failure: %(e)s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Too many failed authentications." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "action: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "arg: %(key)s\t\tval: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "Unauthorized request for controller=%(controller)s and action=%(action)s" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "Environment: %s" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "Unsupported API request: controller = %(controller)s, action = %(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "Create snapshot of volume %s" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "Could not find key pair(s): %s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Create key pair %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "Import key %s" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Delete key pair %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "No rule for the specified parameters." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "Get console output for instance %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "Create volume from snapshot %s" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Create volume of %s GB" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Detach volume %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "vol = %s\n" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Allocate address" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Release address %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "Unable to associate IP Address, no fixed_ips." #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "multiple fixed_ips exist, using the first: %s" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Disassociate address %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "min_count must be <= max_count" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "Image must be available" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "Going to start terminating instances" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Reboot instance %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "Going to stop instances" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "Going to start instances" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "De-registering image %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "imageLocation is required" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "Registered image %(image_location)s with id %(image_id)s" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "user or group not specified" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "only group \"all\" is supported" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_type must be add or remove" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "Updating image %s publicity" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "Not allowed to modify attributes for image %s" #: nova/api/ec2/cloud.py:1668 #, python-format msgid "" "Invalid value '%(ec2_instance_id)s' for instanceId. Instance does not " "have a volume attached at root (%(root)s)" msgstr "" "Invalid value '%(ec2_instance_id)s' for instanceId. Instance does not " "have a volume attached at root (%(root)s)" #: nova/api/ec2/cloud.py:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "image of %(instance)s at %(now)s" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 #, fuzzy msgid "Expecting a list of resources" msgstr "Getting list of instances" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "instance not present" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 #, fuzzy msgid "Expecting a list of tagSets" msgstr "Getting list of instances" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "Invalid CIDR" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "The request is invalid." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Failed to get metadata for ip: %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "An unknown error has occurred. Please try your request again." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 #, fuzzy msgid "Invalid proxy request signature." msgstr "Invalid request: %s" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Failed to get metadata for ip: %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Caught error: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s returned with HTTP %(status)d" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "Must specify an ExtensionManager class" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, fuzzy, python-format msgid "v3 API Extension Blacklist: %s" msgstr "Calling extension factory %s" #: nova/api/openstack/__init__.py:301 #, fuzzy, python-format msgid "v3 API Extension Whitelist: %s" msgstr "Loading extension %s" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "Loading extension %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "Extended resource: %s" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "Extension %(ext_name)s extending resource: %(collection)s" #: nova/api/openstack/common.py:132 #, python-format msgid "" "status is UNKNOWN from vm_state=%(vm_state)s task_state=%(task_state)s. " "Bad upgrade or db corrupted?" msgstr "" "status is UNKNOWN from vm_state=%(vm_state)s task_state=%(task_state)s. " "Bad upgrade or db corrupted?" #: nova/api/openstack/common.py:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "offset param must be an integer" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "limit param must be an integer" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "limit param must be positive" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "offset param must be positive" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "marker [%s] not found" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "href %s does not contain version" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "Image metadata limit exceeded" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "Image metadata key cannot be blank" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "Image metadata key too long" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "Invalid image metadata" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "Cannot '%(action)s' while instance is in %(attr)s %(state)s" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, fuzzy, python-format msgid "Instance is in an invalid state for '%s'" msgstr "Instance is in an invalid state for '%(action)s'" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "Rejecting snapshot request, snapshots currently disabled" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "Instance snapshots are not permitted at this time." #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "Loaded extension: %s" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "Ext name: %s" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "Ext alias: %s" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "Ext description: %s" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "Ext namespace: %s" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Ext updated: %s" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "Exception loading extension: %s" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "Loading extension %s" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "Calling extension factory %s" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "Failed to load extension %(ext_factory)s: %(exc)s" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "Failed to load extension %(classpath)s: %(exc)s" #: nova/api/openstack/extensions.py:372 #, fuzzy, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "Failed to load extension %(ext_name)s: %(exc)s" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "cannot understand JSON" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "too many body keys" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "Exception handling resource: %s" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "Fault thrown: %s" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "HTTP exception thrown: %s" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "Unrecognized Content-Type provided in request" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "There is no such action: %s" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "Malformed request body" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "Unsupported Content-Type" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "element is not a child" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "root element selecting a list" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "subclasses must implement construct()!" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "Initializing extension manager." #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "Invalid is_public filter [%s]" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "Invalid minRam filter [%s]" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "Invalid minDisk filter [%s]" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "Image not found." #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "Incorrect request body format" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "Request body and URI mismatch" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "Request body contains too many items" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "Invalid metadata key" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "Instance does not exist" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "Instance is not a member of specified network" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "This request was rate-limited." #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "Server does not exist" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "Metadata item was not found" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "Invalid changes-since value" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "Only administrators may list deleted instances" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "Host '%s' could not be found." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "Instance could not be found" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "Bad personality format: missing %s" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "Bad personality format" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "Personality content for %s cannot be decoded" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "Bad port format: port uuid is not in proper format (%s)" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "Bad networks format: network uuid is not in proper format (%s)" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "Invalid fixed IP address (%s)" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "Duplicate networks (%s) are not allowed" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "Bad network format: missing %s" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "Bad networks format" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "Userdata content cannot be decoded" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "accessIPv4 is not proper IPv4 format" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "accessIPv6 is not proper IPv6 format" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "Server name is not defined" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "Invalid flavorRef provided." #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "Can not find requested image" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "Invalid key_name provided." #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "HostId cannot be updated." #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "HostId cannot be updated." #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "Instance has not been resized." #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "Instance %(instance_id)s could not be found." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "Argument 'type' for reboot is not HARD or SOFT" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "Missing argument 'type' for reboot" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "Unable to locate requested flavor." #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "Resize requires a flavor change." #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "Instance %(instance_id)s could not be found." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "%s is a valid instance name" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "Missing imageRef attribute" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "Invalid imageRef provided." #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "Missing flavorRef attribute" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "No adminPass was specified" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Failed to soft reboot instance." #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "Unable to parse metadata key/value pairs." #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "Resize request has invalid 'flavorRef' attribute." #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "Resize requests require 'flavorRef' attribute." #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "Could not parse imageRef from request." #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "Cannot find image for rebuild" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "createImage entity requires name attribute" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "Invalid metadata" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "Invalid adminPass" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "Removing options '%(unk_opt_str)s' from query" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "Server not found" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "Error in migrate %s" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "Compute.api::inject_network_info %s" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "createBackup entity requires %s attribute" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "Malformed createBackup entity" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "createBackup attribute 'rotation' must be an integer" #: nova/api/openstack/compute/contrib/admin_actions.py:276 #, fuzzy msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "createBackup attribute 'rotation' must be an integer" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "Instance not found" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, fuzzy, python-format msgid "Live migration of instance %s to another host failed" msgstr "Live migration of instance %(id)s to host %(host)s failed" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "Live migration of instance %(id)s to host %(host)s failed" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "Desired state must be specified. Valid states are: %s" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "Compute.api::resetState %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, fuzzy, python-format msgid "Cannot show aggregate: %s" msgstr "Cannot show aggregate: %(id)s" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, fuzzy, python-format msgid "Cannot update aggregate: %s" msgstr "Cannot update aggregate: %(id)s" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, fuzzy, python-format msgid "Cannot delete aggregate: %s" msgstr "Cannot delete aggregate: %(id)s" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "Aggregates does not have %s action" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "Invalid request body" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "Cannot add host %(host)s in aggregate %(id)s" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "Cannot remove host %(host)s in aggregate %(id)s" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "Cannot set metadata %(metadata)s in aggregate %(id)s" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "Delete snapshot with id: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Failed to add interface: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 #, fuzzy msgid "Network driver does not support this function." msgstr "Virt driver does not implement uptime function." #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Failed to add interface: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "attribute not supported: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Starting VLAN interface %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Rule (%s) not found" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 #, fuzzy msgid "Cell name cannot be empty" msgstr "Security group name cannot be empty" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 #, fuzzy msgid "No cell information in request" msgstr "Block device information present: %s" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "Only root certificate can be retrieved." #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "Unknown chain: %r" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "os-getConsoleOutput malformed or missing from request body" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "Length in request body must be an integer value" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "Unable to get console" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "instance %s:not booted" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "%s must be either 'MANUAL' or 'AUTO'." #: nova/api/openstack/compute/contrib/evacuate.py:53 #, fuzzy msgid "host and onSharedStorage must be specified." msgstr "host and block_migration must be specified." #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Fixed ip %(fixed_ip_id)s not found" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "Flavor not found." #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "Access list not available for public flavors." #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "No request body" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "No Request Body" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "Instance not found" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "Floating ip not found for id %s" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "No more floating ips in pool %s." #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "No more floating ips available." #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "Floating ip is not associated" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "Missing parameter dict" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "Address not specified" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "No nw_info cache associated with instance" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "No fixed ips associated to instance" #: nova/api/openstack/compute/contrib/floating_ips.py:241 #, fuzzy msgid "Specified fixed address not assigned to instance" msgstr "No fixed ips associated to instance" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "floating ip is already associated" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "l3driver call to add floating ip failed" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "floating ip not found" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "Error. Unable to associate floating ip" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "Floating ip is not associated" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "Floating ip %(address)s is not associated." #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "floating ip not found" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "Invalid update setting: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "Invalid status: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "Invalid mode: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, fuzzy, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "Putting host %(host)s in maintenance mode %(mode)s." #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 #, fuzzy msgid "Virt driver does not implement host maintenance mode." msgstr "Virt driver does not implement uptime function." #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Calling setter %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Updating host stats" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 #, fuzzy msgid "Virt driver does not implement host disabled status." msgstr "Virt driver does not implement uptime function." #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 #, fuzzy msgid "Virt driver does not implement host power management." msgstr "Virt driver does not implement uptime function." #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "Describe-resource is admin only functionality" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "Hypervisor with ID '%s' could not be found." #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "Virt driver does not implement uptime function." #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "No hypervisor matching '%s' could be found." #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "Invalid timestamp for date %s" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "Quota exceeded, too many key pairs." #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "Missing 'networkId' argument for addFixedIp" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "Missing 'address' argument for removeFixedIp" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "Unable to find address %r" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "Disassociating network with id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "Network not found" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "Disassociating network with id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "Disassociating network with id %s" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "Showing network with id %s" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "Deleting network with id %s" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "Missing network in body" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "Network label is required" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "Network cidr or cidr_v6 is required" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "Creating network with label %s" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "Associating network %(network)s with project %(project)s" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "Cannot associate network %(network)s with project %(project)s: %(message)s" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 #, fuzzy msgid "Failed to update usages deallocating network." msgstr "Failed to update usages deallocating floating IP" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 #, fuzzy msgid "No CIDR requested" msgstr "Can not find requested image" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "Resource could not be found." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 #, fuzzy msgid "Quota exceeded, too many networks." msgstr "Quota exceeded, too many key pairs." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "Create failed" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "Quota limit must be -1 or greater." #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "Malformed scheduler_hints attribute" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "Not enough parameters to build a valid rule." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "This rule already exists in group %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "Showing network with id %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 #, fuzzy msgid "security group default rule not found" msgstr "Security group with rule %(rule_id)s not found." #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "Bad prefix for to_global_ipv6: %s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "Security group not specified" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "Security group name cannot be empty" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "start instance" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "stop instance" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "vol=%s" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "Delete volume with id: %s" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "Instance %s is not attached." #: nova/api/openstack/compute/contrib/volumes.py:383 #, fuzzy, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "Bad port format: port uuid is not in proper format (%s)" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "Create snapshot from volume %s" #: nova/api/openstack/compute/contrib/volumes.py:693 #, fuzzy, python-format msgid "Invalid value '%s' for force." msgstr "Invalid value '%s' for force. " #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "Loaded extension: %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, fuzzy, python-format msgid "Ext version: %i" msgstr "Ext description: %s" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, fuzzy, python-format msgid "Running _create_extension_point for %s" msgstr "Calling extension factory %s" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "Instance has had its instance_type removed from the DB" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, fuzzy, python-format msgid "Error processing message locally: %(exc)s" msgstr "Error processing message. Skipping it." #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "no method for message: %s" #: nova/cells/messaging.py:436 #, fuzzy, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "Failed to load extension %(ext_factory)s: %(exc)s" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "no method for message: %s" #: nova/cells/messaging.py:535 #, fuzzy, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "Sending message(s) to: %s" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, fuzzy, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "Casted '%(method)s' to compute '%(host)s'" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Starting migration network for instance %(instance_uuid)s" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Starting migration network for instance %(instance_uuid)s" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "Returning exception %s to caller" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Destroying VDIs for Instance %(instance_uuid)s" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "Template for cloudpipe instance boot script" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "Network to push into openvpn config" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "Netmask to push into openvpn config" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "Launching VPN for %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Failed to create VM %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, fuzzy, python-format msgid "deployment to node %s failed" msgstr "element is not a child" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "received %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "DB error: %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "Reset network" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "start address" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 #, fuzzy msgid "No fixed IP found." msgstr "Zero fixed ips could be found." #: nova/cmd/manage.py:358 #, fuzzy, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "No fixed ips associated to instance" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "Floating ip %(address)s already exists." #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "id" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "IPv4" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "IPv6" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "start address" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "DNS1" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "DNS2" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "VlanID" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "project" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "uuid" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "Network not found" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "stop instance" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "Service %(service_id)s could not be found." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "Service %(service_id)s could not be found." #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "Unexpected error: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 #, fuzzy msgid "PROJECT" msgstr "project" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 #, fuzzy msgid "Unknown error" msgstr "unknown guestmount error" #: nova/cmd/manage.py:955 #, fuzzy, python-format msgid "%s created" msgstr "Table |%s| not created!" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "DB error: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, fuzzy, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "%(key)s with value %(value)s failed validator %(name)s" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "hyperv vm state: %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "Cannot run any more instances of this type." #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "Can only run %s more instances of this type." #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "Metadata property key blank" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "Metadata property key greater than 255 characters" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "Metadata property value greater than 255 characters" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Unable to attach boot volume to instance %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "Going to run %s instances..." #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "block_device_mapping %s" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Going to start terminating instances" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Going to start terminating instances" #: nova/compute/api.py:1595 #, fuzzy, python-format msgid "instance's host %s is down, deleting from database" msgstr "host for instance is down, deleting from database" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "Ignoring volume cleanup failure due to %s" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "Going to try to soft delete instance" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "Going to try to terminate instance" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "Going to try to stop instance" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "Going to try to start instance" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "Searching by: %s" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "snapshot for %s" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "flavor_id is None. Assuming migration." #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" #: nova/compute/api.py:2393 #, fuzzy, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "%(overs)s quota exceeded for %(pid)s, tried to resize instance. %(msg)s" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "Locking" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "Unlocking" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "Volume must be attached in order to detach." #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "Going to try to live migrate instance to %s" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "Keypair name contains unsafe characters" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "Keypair name must be between 1 and 255 characters long" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "Security group %s is not a string or unicode" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "Security group %s cannot be empty." #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "Security group %s should not be greater than 255 characters." #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "Quota exceeded, too many security groups." #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "Create Security Group %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "Security group %s already exists" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Unable to destroy vbd %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Unable to destroy vbd %s" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "Security group is still in use" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "Failed to update usages deallocating security group" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Delete security group %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "Rule (%s) not found" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "Quota exceeded, too many security group rules." #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Authorize security group ingress %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "Revoke security group ingress %s" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "Security group id should be integer" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "Aborting claim: %s" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, fuzzy, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "Total VCPUs: %(total_vcpus)d, used: %(used_vcpus)d" #: nova/compute/claims.py:199 #, fuzzy, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "Disk limit not specified, defaulting to unlimited" #: nova/compute/claims.py:206 #, fuzzy, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "Disk limit: %(disk_gb_limit)d GB, free: %(free_disk_gb)d GB" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "DB error: %s" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "Instance type %s not found for deletion" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "Instance has been destroyed from under us while trying to set it to ERROR" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Failed to terminate instance" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "Current state is %(drv_state)s, state in DB is %(db_state)s." #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "Rebooting instance after nova-compute restart." #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "Hypervisor driver does not support resume guests" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Failed to suspend instance" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "Hypervisor driver does not support firewall rules" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "Unexpected status code" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "Checking state" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "Failed to dealloc network for deleted instance" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "DB error: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "Error trying to reschedule" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "Retry info not present, will not reschedule" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "No request spec, will not reschedule" #: nova/compute/manager.py:1438 #, fuzzy, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "Re-scheduling instance: attempt %d" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "Instance build timed out. Set to error state." #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "Starting instance..." #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "Floating ip pool not found." #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "Instance network_info: |%s|" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "Instance failed block device setup" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "Instance failed to spawn" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "Deallocating network for instance" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Failed to dealloc network for deleted instance" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "%(action_str)s instance" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "Ignoring DiskNotFound: %s" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "Ignoring VolumeNotFound: %s" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "terminating bdm %s" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "Rebuilding instance" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Failed to get info for disk %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Attach boot from volume failed: %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "Rebooting instance" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "instance %s: rebooted" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "instance snapshotting" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "Found %(num_images)d images (rotation: %(rotation)d)" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "Rotating out %d backups" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "Deleting image %s" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "Failed to set admin password. Instance %s is not running" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "Root password set" #: nova/compute/manager.py:2860 #, fuzzy msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "set_admin_password is not implemented by this driver." #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "set_admin_password failed: %s" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "error setting admin password" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "Rescuing" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Error trying to reschedule" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "DB error: %s" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "Unrescuing" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "Setting instance to %(state)s state." #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "Instance has no volume." #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "destination same as source!" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "Migrating" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "Pausing" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "Unpausing" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "Retrieving diagnostics" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "Resuming" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "Reset network" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "Inject network info" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "network_info to inject: |%s|" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "Get console output" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "Getting vnc console" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "Getting vnc console" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "Attaching volume %(volume_id)s to %(mountpoint)s" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "Detach volume %(volume_id)s from mountpoint %(mp)s" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "Detaching volume from unknown instance" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Faild to detach volume %(volume_id)s from %(mp)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, fuzzy, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "allocate_for_instance() for %s" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "_post_live_migration() is started.." #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "Post operation of migration started" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "Setting migration %(migration_id)s to error: %(reason)s" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "In ERROR state" #: nova/compute/manager.py:4952 #, fuzzy, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "In states %(vm_state)s/%(task_state)s, notRESIZED/None" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "Failed to generate usage audit for instance on host %s" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "Updating bandwidth usage cache" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Updating bandwidth usage cache" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "During sync_power_state the instance has a pending task. Skip." #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "Instance shutdown by itself. Calling the stop API." #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "error during stop() in sync_power_state." #: nova/compute/manager.py:5310 #, fuzzy msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "Instance is paused or suspended unexpectedly. Calling the stop API." #: nova/compute/manager.py:5326 #, fuzzy msgid "Instance is paused unexpectedly. Ignore." msgstr "Instance is paused or suspended unexpectedly. Calling the stop API." #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "Instance is not stopped. Calling the stop API." #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "Instance is not (soft-)deleted." #: nova/compute/manager.py:5374 #, fuzzy msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "FLAGS.reclaim_instance_interval <= 0, skipping..." #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "Reclaiming deleted instance" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Loading compute driver '%s'" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "No service record for host %s" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "Setting instance to %(state)s state." #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 #, fuzzy msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" "Host field should be not be set on the instance until resources have been" " claimed." #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." #: nova/compute/resource_tracker.py:372 #, fuzzy, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "Compute_service record created for %s " #: nova/compute/resource_tracker.py:378 #, fuzzy, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "Compute_service record updated for %s " #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "Hypervisor: free ram (MB): %s" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "Hypervisor: free disk (GB): %s" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "Hypervisor: free VCPUs: %s" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "Hypervisor: VCPU information unavailable" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "Free ram (MB): %s" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "Free disk (GB): %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "Free VCPUS: %s" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "Free VCPU information unavailable" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, fuzzy, python-format msgid "Updating from migration %s" msgstr "Starting finish_migration" #: nova/compute/resource_tracker.py:545 #, fuzzy msgid "Instance not resizing, skipping migration." msgstr "VM is not present, skipping destroy..." #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "Missing keys: %s" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "No compute host specified" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "Unable to find host for Instance %s" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "Using %(prefix)s instead of %(req_prefix)s" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 #, fuzzy msgid "Invalid block_device_mapping_destroy invocation" msgstr "block_device_mapping %s" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "Adding console" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "Tried to remove non-existent console %(console_id)s." #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "Removing console %(console_id)s." #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Invalid volume" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "Rebuilding xvp conf" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "Re-wrote %s" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "Stopping xvp" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "Starting xvp" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "Error starting xvp: %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "Restarting xvp" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvp not running..." #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "Failed to resume server" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Failed to reboot instance" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Failed to reboot instance" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "Unrecognized read_deleted value '%s'" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "version should be an integer" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "Upgrade DB using Essex release first." #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 #, fuzzy msgid "Unsupported id columns type" msgstr "Unsupported Content-Type" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "Failed to download %(image_location)s to %(image_path)s" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "Failed to decrypt %(image_location)s to %(image_path)s" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "Failed to untar %(image_location)s to %(image_path)s" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "Failed to upload %(image_location)s to %(image_path)s" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "Failed to decrypt private key: %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "Failed to decrypt initialization vector: %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "Failed to decrypt image file %(image_file)s: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "Unsafe filenames in image" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "Bad mac for to_global_ipv6: %s" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "Bad prefix for to_global_ipv6: %s" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "Bad project_id for to_global_ipv6: %s" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "instance is a required argument to use @refresh_cache" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Failed to terminate instance" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "re-assign floating IP %(address)s from instance %(instance_id)s" #: nova/network/driver.py:39 #, fuzzy msgid "Network driver option required, but not specified" msgstr "Compute driver option required, but not specified" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "Loading compute driver '%s'" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "Address |%(address)s| is not allocated" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "Address |%(address)s| is not allocated to your project |%(project)s|" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "Failed to update usages deallocating floating IP" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "Domain |%(domain)s| already exists, changing project to |%(project)s|." #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "This driver only supports type 'a' entries." #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "Attempted to remove chain %s which does not exist" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "Unknown chain: %r" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, python-format msgid "" "Tried to remove rule that was not there: %(chain)r %(rule)r %(wrap)r " "%(top)r" msgstr "" "Tried to remove rule that was not there: %(chain)r %(rule)r %(wrap)r " "%(top)r" #: nova/network/linux_net.py:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "IPTablesManager.apply completed with success" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "arping error for ip %s" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d is stale, skip killing dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "Hupping dnsmasq threw %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d is stale, relaunching dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "killing radvd threw %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d is stale, relaunching radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "Invalid mode: '%s'" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Starting VLAN interface %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Starting bridge %s " #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "Ensuring vlan %(vlan)s and bridge %(bridge)s" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "Failed to add interface: %s" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "Starting bridge %s " #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "Done starting bridge %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "Disassociated %s stale fixed ip(s)" #: nova/network/manager.py:373 msgid "setting network host" msgstr "setting network host" #: nova/network/manager.py:493 msgid "network allocations" msgstr "network allocations" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "network deallocation for instance" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 #, fuzzy msgid "Failed to update usages deallocating fixed IP" msgstr "Failed to update usages deallocating floating IP" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "Unable to release %s because vif doesn't exist." #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "IP %s leased that is not associated" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "IP |%s| leased that isn't allocated" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "IP %s released that is not associated" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "IP %s released that was not leased" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "%s must be an integer" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "Maximum allowed length for 'label' is 255." #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "cidr already in use" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "Network must be disassociated from project %s before delete" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" #: nova/network/manager.py:1858 #, fuzzy, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" "The network range is not big enough to fit %(num_networks)s. Network size" " is %(network_size)s" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Invalid volume" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "This driver only supports type 'a'" #: nova/network/minidns.py:122 #, fuzzy, python-format msgid "Cannot delete entry |%s|" msgstr "Cannot delete aggregate: %(id)s" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "_delete: %s" #: nova/network/minidns.py:207 #, fuzzy, python-format msgid "Cannot delete domain |%s|" msgstr "Cannot delete aggregate: %(id)s" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "allocate_for_instance() for %s" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "empty project id for instance %s" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "deallocate_for_instance() for %s" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "get_instance_nw_info() for %s" #: nova/network/neutronv2/api.py:543 #, fuzzy, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "Fail to delete port %(portid)s with failure: %(exception)s" #: nova/network/neutronv2/api.py:572 #, fuzzy, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "Fail to delete port %(portid)s with failure: %(exception)s" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "validate_networks() for %s" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "Multiple floating IP pools matches found for name '%s'" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Security group id should be integer" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, fuzzy, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "Security group %(security_group_id)s not found for project %(project_id)s." #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "This rule already exists in group %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "error setting admin password" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "foreign key could not be dropped" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "Could not release the acquired lock `%s`" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "Deprecated Config: %s" #: nova/openstack/common/log.py:414 #, fuzzy, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "Error reading image info file %(filename)s: %(error)s" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "syslog facility must be one of: %s" #: nova/openstack/common/log.py:652 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "Fatal call to deprecated config %(msg)s" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 #, fuzzy msgid "in fixed duration looping call" msgstr "in looping call" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 #, fuzzy msgid "in dynamic looping call" msgstr "in looping call" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "Running periodic task %(full_task_name)s" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "Error during %(full_task_name)s: %(e)s" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "Failed to understand rule %(rule)s" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "No handler for matches of kind %s" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "Failed to understand rule %(rule)r" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "Got unknown keyword args to utils.execute: %r" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Result was %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r failed. Retrying." #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Running cmd (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "Environment not supported over SSH" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "process_input not supported over SSH" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Full set of FLAGS:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "Caught %s, exiting" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "Parent process has died unexpectedly, exiting" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "Unhandled exception" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "Forking too fast, sleeping" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "Started child %d" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "Starting %d workers" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "Child %(pid)d killed by signal %(sig)d" #: nova/openstack/common/service.py:352 #, fuzzy, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "Child %(pid)d exited with status %(code)d" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "pid %d not in child list" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "Caught %s, stopping children" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "Waiting on %d children to exit" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, fuzzy, python-format msgid "Unknown byte multiplier: %s" msgstr "Unknown base file: %s" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "Unknown sort direction, must be 'desc' or 'asc'" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "Is the appropriate service running?" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "Could not find another compute" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "Exception during scheduler.run_instance" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "Driver must implement schedule_run_instance" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, fuzzy, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "Attempting to build %(num_instances)d instance(s)" #: nova/scheduler/filter_scheduler.py:83 #, fuzzy, python-format msgid "Request Spec: %s" msgstr "Request: %s" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Destroying VDIs for Instance %(instance_uuid)s" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "Invalid value for 'scheduler_max_attempts', must be >= 1" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "Filtered %(hosts)s" #: nova/scheduler/filter_scheduler.py:337 #, fuzzy, python-format msgid "Weighed %(hosts)s" msgstr "Filtered %(hosts)s" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, fuzzy, python-format msgid "Host filter ignoring hosts: %s" msgstr "Host filter fails for ignored host %(host)s" #: nova/scheduler/host_manager.py:386 #, fuzzy, python-format msgid "Host filter forcing available hosts to %s" msgstr "Host filter fails for non-forced host %(host)s" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, fuzzy, python-format msgid "Host filter forcing available nodes to %s" msgstr "Host filter fails for non-forced host %(host)s" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "No service for compute ID %s" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "Could not stat scheduler options file %(filename)s: '%(e)s'" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, fuzzy, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "%(host_state)s fails instance_type extra_specs requirements" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, fuzzy, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "%(host_state)s fails instance_type extra_specs requirements" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "%(host_state)s fails instance_type extra_specs requirements" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "VCPUs not set; assuming CPU collection broken" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "%(host_state)s does not support requested instance_properties" #: nova/scheduler/filters/io_ops_filter.py:43 #, python-format msgid "" "%(host_state)s fails I/O ops check: Max IOs per host is set to " "%(max_io_ops)s" msgstr "" "%(host_state)s fails I/O ops check: Max IOs per host is set to " "%(max_io_ops)s" #: nova/scheduler/filters/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, python-format msgid "" "%(host_state)s fails num_instances check: Max instances per host is set " "to %(max_instances)s" msgstr "" "%(host_state)s fails num_instances check: Max instances per host is set " "to %(max_instances)s" #: nova/scheduler/filters/ram_filter.py:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Recovered model server connection!" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "model server went away" #: nova/servicegroup/drivers/mc.py:44 #, fuzzy msgid "memcached_servers not defined" msgstr "Server name is not defined" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "Attempted to instantiate singleton" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "Faking execution of cmd (subprocess): %s" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "Faked command matched %s" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "Faked command raised an exception %s" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "status must be available" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "already attached" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "already detached" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "unexpected role header" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "Running instances: %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "After terminating instances: %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "Internal error" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "After force-killing instances: %s" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 #, fuzzy msgid "spawn error" msgstr "unknown guestmount error" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "Keypair data is invalid" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" "The following migrations are missing a downgrade:\n" "\t%s" #: nova/tests/integrated/api_samples_test_base.py:116 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "Result: %(result)s is not a dict." #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "Result: %(result)s is not a list." #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, fuzzy, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" "Values do not match:\n" "%(expected)s\n" "%(result)s" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "flavor: %s" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "Authentication error" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "Authorization error" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "Item not found" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "Doing %(method)s on %(relative_url)s" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "Body: %s" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => code %(http_status)s" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => code %(http_status)s" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "Unexpected status code" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "Decoding JSON: %s" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "marker [%s] not found" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "Expected a list for 'auth' parameter" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "Expected a function in 'auth[0]' parameter" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "Expected a function in 'auth[1]' parameter" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "Creating files in %s to simulate guest agent" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "Removing simulated guest agent files in %s" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "Booting with volume %(volume_id)s at %(mountpoint)s" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "Added %(filepath)s to config drive" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, fuzzy, python-format msgid "Invalid exclusion expression %r" msgstr "Invalid reservation expiration %(expire)s." #: nova/virt/cpu.py:77 #, fuzzy, python-format msgid "Invalid inclusion expression %r" msgstr "Invalid reservation expiration %(expire)s." #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "Compute driver option required, but not specified" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "Loading compute driver '%s'" #: nova/virt/driver.py:1302 #, fuzzy msgid "Unable to load the virtualization driver" msgstr "Unable to load the virtualization driver: %s" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "Attempted to unfilter instance which is not filtered" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "Filters added to instance" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "Provider Firewall Rules refreshed" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "Adding security group rule: %r" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "Adding provider rule: %s" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "'qemu-img info' parsing failed." #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "fmt=%(fmt)s backed by: %(backing_file)s" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "Converted to raw, but format is now %s" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "get_info called for instance" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, fuzzy, python-format msgid "pid file %s does not contain any pid" msgstr "href %s does not contain version" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "Address not specified" #: nova/virt/baremetal/ipmi.py:117 #, fuzzy msgid "User not supplied to IPMI" msgstr "pause not supported for vmwareapi" #: nova/virt/baremetal/ipmi.py:120 #, fuzzy msgid "Password not supplied to IPMI" msgstr "pause not supported for vmwareapi" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "CLI output:\n" " stdout: %(out)s\n" " stderr: %(err)s" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "floating IP allocation for instance |%s|" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "Fetching image '%s' from glance" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Injecting %(injection)s into image %(img_id)s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "empty project id for instance %s" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "empty project id for instance %s" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, fuzzy, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "Timeout while waiting on RPC response." #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "empty project id for instance %s" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "Node is unknown error state." #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Unable to find host for Instance %s" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "Address not specified" #: nova/virt/baremetal/tilera_pdu.py:89 #, fuzzy msgid "User not supplied to PDU" msgstr "pause not supported for vmwareapi" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 #, fuzzy msgid "PDU failed" msgstr "Create failed" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "Ignoring error injecting data into image %(img_id)s (%(e)s)" #: nova/virt/baremetal/utils.py:54 #, fuzzy, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "Failed to load plugin %(plug)s: %(exc)s" #: nova/virt/baremetal/utils.py:63 #, fuzzy, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "Failed to remove %(base_file)s, error was %(error)s" #: nova/virt/baremetal/utils.py:79 #, fuzzy, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "Failed to create Difference Disk from %(base)s to %(target)s" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "Could not determine iscsi initiator name" #: nova/virt/baremetal/volume_driver.py:234 #, fuzzy, python-format msgid "No fixed PXE IP is associated to %s" msgstr "No fixed ips associated to instance" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "partition %s not found" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "Virtual Interface creation failed" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, fuzzy, python-format msgid "Baremetal virtual interface %s not found" msgstr "partition %s not found" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "image already mounted" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, fuzzy, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "Ignoring error injecting data into image %(img_id)s (%(e)s)" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Release address %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "No free nbd devices" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "Failed to unmount container filesystem: %s" #: nova/virt/disk/api.py:451 #, fuzzy, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "Ignoring error injecting data into image %(img_id)s (%(e)s)" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "Not implemented on Windows" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "User %(username)s not found in password file." #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "User %(username)s not found in shadow file." #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, fuzzy, python-format msgid "Map dev %s" msgstr "Import key %s" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "partition search unsupported with %s" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "partition %s not found" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "Failed to map partitions: %s" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "Failed to spawn, rolling back" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "Could not attach image to loopback: %s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "qemu-nbd error: %s" #: nova/virt/disk/mount/loop.py:39 #, fuzzy, python-format msgid "Got loop device %s" msgstr "Found no PIF for device %s" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "No free nbd devices" #: nova/virt/disk/mount/nbd.py:64 #, fuzzy msgid "nbd module not loaded" msgstr "nbd unavailable: module not loaded" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "nbd unavailable: module not loaded" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "qemu-nbd error: %s" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "qemu-nbd error: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "nbd device %s did not show up" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 #, fuzzy msgid "Trying to import guestfs" msgstr "Unable to import suds." #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, fuzzy, python-format msgid "Inspecting guest OS image %s" msgstr "Deleting image %s" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "Floating ip not found for id %s" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Starting instance" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Failed to live migrate VM %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Failed to understand rule %(rule)s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, fuzzy, python-format msgid "File path %s not valid" msgstr "injected file path not valid" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Failed to update agent: %(resp)r" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Failed to load plugin %(plug)s: %(exc)s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Failed to schedule_%(method)s: %(ex)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "The ISCSI initiator name can't be found. Choosing the default one" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "ensure_filtering_rules_for_instance called" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "unfilter_instance called" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "Windows version: %s " #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "get_available_resource called" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "Updating host stats" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "get_console_output called" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Release address %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, fuzzy, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "live_migration called" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "Calling live migration recover_method for instance: %s" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "Calling live migration post_method for instance: %s" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "pre_live_migration called" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "post_live_migration_at_destination called" #: nova/virt/hyperv/livemigrationops.py:105 #, fuzzy msgid "check_can_live_migrate_destination called" msgstr "post_live_migration_at_destination called" #: nova/virt/hyperv/livemigrationops.py:111 #, fuzzy msgid "check_can_live_migrate_destination_cleanup called" msgstr "post_live_migration_at_destination called" #: nova/virt/hyperv/livemigrationops.py:116 #, fuzzy msgid "check_can_live_migrate_source called" msgstr "pre_live_migration called" #: nova/virt/hyperv/livemigrationutils.py:43 #, fuzzy, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "Live migration is not enabled on this host" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "Starting live migration for instance: %s" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Live Migration failure: %(e)s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "Live migration is not enabled on this host" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "Live migration networks are not configured on this host" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "Item not found" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, fuzzy, python-format msgid "Duplicate VM name found: %s" msgstr "duplicate name found: %s" #: nova/virt/hyperv/livemigrationutils.py:77 #, fuzzy, python-format msgid "Destroying existing remote planned VM: %s" msgstr "Removing existing folder %s " #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "Starting live migration for instance: %s" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "Getting live migration networks for remote host: %s" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Updating agent to %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 #, fuzzy msgid "migrate_disk_and_power_off called" msgstr "Starting migrate_disk_and_power_off" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "confirm_migration called" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "finish_revert_migration called" #: nova/virt/hyperv/migrationops.py:170 #, fuzzy, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" #: nova/virt/hyperv/migrationops.py:176 #, fuzzy, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" #: nova/virt/hyperv/migrationops.py:184 #, fuzzy, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, fuzzy, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "finish_migration called" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, fuzzy, python-format msgid "vswitch \"%s\" not found" msgstr "partition %s not found" #: nova/virt/hyperv/networkutils.py:58 #, fuzzy, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "Created switch port %(vm_name)s on switch %(ext_path)s" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Creating directory with path %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Creating directory with path %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "Creating snapshot for instance %s" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "Getting info for VHD %s" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "Removing snapshot %s" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "Failed to remove snapshot for VM %s" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Creating snapshot for instance %s" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "get_info called for instance" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, fuzzy, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, fuzzy, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Starting instance" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "Creating config drive at %(path)s" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "Creating config drive at %(path)s" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Failed to destroy vm %s" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "Pause instance" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "Unpause instance" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "Suspend instance" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "Resume instance" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "Power off instance" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "Power on instance" #: nova/virt/hyperv/vmops.py:407 #, fuzzy, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "Successfully changed vm state of %(vm_name)s to %(req_state)s" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "Failed to change vm state of %(vm_name)s to %(req_state)s" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Failed to get metadata for ip: %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Creating volume: %s" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "Set memory for vm %s..." #: nova/virt/hyperv/vmutils.py:231 #, fuzzy, python-format msgid "Set vCPUs for vm %s" msgstr "Set vcpus for vm %s..." #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "Successfully changed vm state of %(vm_name)s to %(req_state)s" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, fuzzy, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "WMI job succeeded: %(desc)s, Elapsed=%(elap)s " #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Unable to attach volume to instance %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Detach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Creating snapshot for instance %s" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "Unable to find a mounted disk for target_iqn: %s" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "An error has occurred when calling the iscsi initiator: %s" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, fuzzy, python-format msgid "Unable to determine disk bus for '%s'" msgstr "Unable to find vbd for vdi %s" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "Connecting to libvirt: %s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "Connection to libvirt broke" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "Can not handle authentication request for %d credentials" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "Connecting to libvirt: %s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "During wait destroy, instance disappeared." #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "Instance destroyed successfully." #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Going to stop instances" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "Error from libvirt during undefineFlags. Retrying with undefine" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 #, fuzzy msgid "Could not determine fibre channel world wide node names" msgstr "Could not determine iscsi initiator name" #: nova/virt/libvirt/driver.py:1144 #, fuzzy msgid "Could not determine fibre channel world wide port names" msgstr "Could not determine iscsi initiator name" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "During detach_volume, instance disappeared." #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "No networks defined." #: nova/virt/libvirt/driver.py:1426 #, fuzzy msgid "During detach_interface, instance disappeared." msgstr "During detach_volume, instance disappeared." #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "No networks defined." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "Instance soft rebooted successfully." #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "Instance shutdown successfully." #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "Instance rebooted successfully." #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "Instance is running" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "Instance spawned successfully." #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "data: %(data)r, fpath: %(fpath)r" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "Guest does not have a console available" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "Path '%(path)s' supports direct I/O" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "Path '%(path)s' does not support direct I/O: '%(ex)s'" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "Error on '%(path)s' while checking direct I/O: '%(ex)s'" #: nova/virt/libvirt/driver.py:2534 #, fuzzy, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "Ignoring error injecting data into image %(img_id)s (%(e)s)" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "Creating image" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "Using config drive" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, python-format msgid "" "Config requested an explicit CPU model, but the current libvirt " "hypervisor '%s' does not support selecting CPU models" msgstr "" "Config requested an explicit CPU model, but the current libvirt " "hypervisor '%s' does not support selecting CPU models" #: nova/virt/libvirt/driver.py:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "Config requested a custom CPU model, but no model name was provided" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "A CPU model name should not be set when a host CPU model is requested" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "CPU mode '%(mode)s' model '%(model)s' was chosen" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, python-format msgid "" "Error from libvirt while looking up %(instance_name)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" "Error from libvirt while looking up %(instance_name)s: [Error Code " "%(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 #, fuzzy msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. This error can be safely ignored for now." #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "libvirt version is too old (does not support getVersion)" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Getting image size for the image %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, fuzzy, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "Block migration can not be used with shared storage." #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "Live migration can not be used without shared storage." #: nova/virt/libvirt/driver.py:4273 #, 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 "" "Unable to migrate %(instance_uuid)s: Disk of instance is too " "large(available on destination host:%(available)s < need:%(necessary)s)" #: nova/virt/libvirt/driver.py:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" "Instance launched has CPU info:\n" "%s" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" #: nova/virt/libvirt/driver.py:4329 #, python-format msgid "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." msgstr "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." #: nova/virt/libvirt/driver.py:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "The firewall filter for %s does not exist" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, fuzzy, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "plug_vifs() failed %(cnt)d.Retry up to %(max_retry)d for %(hostname)s." #: nova/virt/libvirt/driver.py:4697 #, fuzzy, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" "Error from libvirt while looking up %(instance_name)s: [Error Code " "%(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "Starting migrate_disk_and_power_off" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "Instance running successfully." #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "Starting finish_migration" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "Starting finish_revert_migration" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "Failed to cleanup directory %(target)s: %(e)s" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "Called setup_basic_filtering in nwfilter" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "Ensuring static filters" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "iptables firewall: Setup Basic Filtering" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "Unknown image_type=%s" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "Error reading image info file %(filename)s: %(error)s" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "Reading image info file: %s" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Writing image info file: %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "%s is a valid instance name" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "%s has a disk file" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "Instance %(instance)s is backed by %(backing)s" #: nova/virt/libvirt/imagecache.py:321 #, python-format msgid "" "Instance %(instance)s is using a backing file %(backing)s which does not " "appear in the image service" msgstr "" "Instance %(instance)s is using a backing file %(backing)s which does not " "appear in the image service" #: nova/virt/libvirt/imagecache.py:394 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "%(id)s (%(base_file)s): image verification failed" #: nova/virt/libvirt/imagecache.py:404 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "%(id)s (%(base_file)s): image verification skipped, no hash stored" #: nova/virt/libvirt/imagecache.py:413 #, fuzzy, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "%(id)s (%(base_file)s): checking" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "Base file too young to remove: %s" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "Removing base file: %s" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "Failed to remove %(base_file)s, error was %(error)s" #: nova/virt/libvirt/imagecache.py:461 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "%(id)s (%(base_file)s): checking" #: nova/virt/libvirt/imagecache.py:485 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" "%(id)s (%(base_file)s): in use: on this node %(local)d local, %(remote)d " "on other nodes" #: nova/virt/libvirt/imagecache.py:497 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" "%(id)s (%(base_file)s): warning -- an absent base file is in use! " "instances: %(instance_list)s" #: nova/virt/libvirt/imagecache.py:509 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "%(id)s (%(base_file)s): image is not in use" #: nova/virt/libvirt/imagecache.py:516 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "%(id)s (%(base_file)s): image is in use" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "Verify base images" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "Image id %(id)s yields fingerprint %(fingerprint)s" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "Unknown base file: %s" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "Active base files: %s" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "Corrupt base files: %s" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "Removable base files: %s" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "Verification complete" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "Skipping verification, no base directory at %s" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, python-format msgid "" "Insufficient Space on Volume Group %(vg)s. Only %(free_space)db " "available, but %(size)db required by volume %(lv)s." msgstr "" "Insufficient Space on Volume Group %(vg)s. Only %(free_space)db " "available, but %(size)db required by volume %(lv)s." #: nova/virt/libvirt/utils.py:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, fuzzy, python-format msgid "vg %s must be LVM volume group" msgstr "Path %s must be LVM logical volume" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "Path %s must be LVM logical volume" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "Can't retrieve root device path from instance libvirt configuration" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "Unexpected error: %s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "Ensuring vlan %(vlan)s and bridge %(bridge)s" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "Ensuring bridge %s" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "Failed while unplugging vif" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "iSCSI device not found at %s" #: nova/virt/libvirt/volume.py:307 #, fuzzy, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" "ISCSI volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" #: nova/virt/libvirt/volume.py:320 #, fuzzy, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "Found iSCSI node %(mount_device)s (after %(tries)s rescans)" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "%s is already mounted" #: nova/virt/libvirt/volume.py:751 #, fuzzy, python-format msgid "AoE device not found at %s" msgstr "iSCSI device not found at %s" #: nova/virt/libvirt/volume.py:753 #, fuzzy, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" "ISCSI volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" #: nova/virt/libvirt/volume.py:768 #, fuzzy, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "Found iSCSI node %(mount_device)s (after %(tries)s rescans)" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 #, fuzzy msgid "Fibre Channel device not found." msgstr "iSCSI device not found at %s" #: nova/virt/libvirt/volume.py:946 #, fuzzy, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" "ISCSI volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" #: nova/virt/libvirt/volume.py:963 #, fuzzy, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "Found iSCSI node %(mount_device)s (after %(tries)s rescans)" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "Task [%(task_name)s] %(task_ref)s status: success" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "In vmwareapi:_poll_task, Got this error %s" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "Creating directory with path %s" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "Created directory with path %s" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "Property %(attr)s not set for the managed object %(name)s" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "There is no VM registered" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "Virtual Machine with ref %s is not there" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "Logging out a session that is invalid or already logged out: %s" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "Session is faulty" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "Session Invalid" #: nova/virt/vmwareapi/fake.py:1225 #, fuzzy msgid "No Virtual Machine has been registered yet" msgstr " No Virtual Machine has been registered yet" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "action: %s" #: nova/virt/vmwareapi/host.py:62 #, fuzzy, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "Setting host %(host)s to %(state)s." #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "Glance image %s is in killed state" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "Glance image %(image_id)s is in unknown state - %(state)s" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" "ESX SOAP server returned an empty port group for the host system in its " "response" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "Creating Port Group with name %s on the ESX host" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "Created Port Group with name %s on the ESX host" #: nova/virt/vmwareapi/read_write_util.py:145 #, fuzzy, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "Exception during HTTP connection close in VMWareHTTpWrite. Exception is %s" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "Unable to import suds." #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "No such SOAP method '%s' provided by VI SDK" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "httplib error in %s: " #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "Socket error in %s: " #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "Type error in %s: " #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "Exception in %s " #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "Getting list of instances" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "Got total of %s instances" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "Block device information present: %s" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 #, fuzzy msgid "Creating VM on the ESX host" msgstr "Creating VM on the ESX host" #: nova/virt/vmwareapi/vmops.py:304 #, fuzzy msgid "Created VM on the ESX host" msgstr "Created VM on the ESX host" #: nova/virt/vmwareapi/vmops.py:335 #, fuzzy, 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 "" "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" #: nova/virt/vmwareapi/vmops.py:354 #, fuzzy, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" "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" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, fuzzy, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" "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" #: nova/virt/vmwareapi/vmops.py:413 #, fuzzy, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" "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" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "Powering on the VM instance" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "Powered on the VM instance" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "Creating Snapshot of the VM instance" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "Created Snapshot of the VM instance" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "Uploading image %s" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "Uploaded image %s" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "instance is not powered on" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "Rebooting guest OS of VM" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "Rebooted guest OS of VM" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "Doing hard reboot of VM" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "Did hard reboot of VM" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "Destroying VM" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "VM destroyed" #: nova/virt/vmwareapi/vmops.py:982 #, fuzzy, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "Powering off the VM" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "Powered off the VM" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "Unregistering the VM" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "Unregistered the VM" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "Deleting contents of the VM from datastore %(datastore_name)s" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "Deleted contents of the VM from datastore %(datastore_name)s" #: nova/virt/vmwareapi/vmops.py:1055 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while deleting the VM " "contents from the disk: %s" msgstr "" "In vmwareapi:vmops:destroy, got this exception while deleting the VM " "contents from the disk: %s" #: nova/virt/vmwareapi/vmops.py:1065 msgid "pause not supported for vmwareapi" msgstr "pause not supported for vmwareapi" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "unpause not supported for vmwareapi" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "Suspending the VM" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "Suspended the VM" #: nova/virt/vmwareapi/vmops.py:1087 #, fuzzy msgid "instance is powered off and cannot be suspended." msgstr "instance is powered off and can not be suspended." #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "VM was already in suspended state. So returning without doing anything" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "Resuming the VM" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "Resumed the VM" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "instance is not in a suspended state" #: nova/virt/vmwareapi/vmops.py:1182 #, fuzzy msgid "instance is suspended and cannot be powered off." msgstr "instance is not powered on" #: nova/virt/vmwareapi/vmops.py:1185 #, fuzzy msgid "VM was already in powered off state. So returning without doing anything" msgstr "VM was already in suspended state. So returning without doing anything" #: nova/virt/vmwareapi/vmops.py:1197 #, fuzzy msgid "VM was already in powered on state. So returning without doing anything" msgstr "VM was already in suspended state. So returning without doing anything" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "Powering off the VM" #: nova/virt/vmwareapi/vmops.py:1206 #, fuzzy msgid "Powered on the VM" msgstr "Powered off the VM" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "Updating progress to %(progress)d" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Creating volume: %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "instance not present" #: nova/virt/vmwareapi/vmops.py:1309 #, fuzzy, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Creating volume: %s" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Create volume from snapshot %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "Found %(instance_count)d hung reboots older than %(timeout)d seconds" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "Automatically hard rebooting" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 #, fuzzy msgid "Reconfiguring VM instance to set the machine id" msgstr "Reconfiguring VM instance to attach the image disk" #: nova/virt/vmwareapi/vmops.py:1525 #, fuzzy msgid "Reconfigured VM instance to set the machine id" msgstr "Reconfigured VM instance to attach the image disk" #: nova/virt/vmwareapi/vmops.py:1535 #, fuzzy, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "Reconfiguring VM instance to set the machine id with ip - %(ip_addr)s" #: nova/virt/vmwareapi/vmops.py:1542 #, fuzzy, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "Reconfigured VM instance to set the machine id with ip - %(ip_addr)s" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "Downloading image %s from glance image server" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "Downloaded image %s from glance image server" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "Uploading image %s to the Glance image server" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "Uploaded image %s to the Glance image server" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "Getting image size for the image %s" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "Got image size of %(size)s for the image %(image)s" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Re-scanning SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Re-scanning SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: deleting instance files %(target)s" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: deleting instance files %(target)s" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Unable to find address %r" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Failed to find volume in db" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "TIMEOUT: The call to %(method)s timed out. args=%(args)r" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, python-format msgid "" "NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. " "args=%(args)r" msgstr "" "NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. " "args=%(args)r" #: nova/virt/xenapi/agent.py:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "The call to %(method)s returned an error: %(e)s. args=%(args)r" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "Querying agent version" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "Updating agent to %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "Setting admin password" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "Injecting file path: %r" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "Resetting network" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" "XenServer tools are present in this image but are not capable of network " "injection" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "XenServer tools are not installed in this image" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "OpenSSL error: %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "Failure while cleaning up attached VDIs" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "Could not determine key: %s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "Host startup on XenServer is not supported." #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Raising NotImplemented" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake does not have an implementation for %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Calling getter %s" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "Calling setter %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "Compute host %(host)s could not be found." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "Failed to extract instance support from %s" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "Unable to get updated status" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "The call to %(method)s returned an error: %(e)s." #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "Found non-unique network for name_label %s" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "Found non-unique network for bridge %s" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "Found no network for bridge %s" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "Found no PIF for device %s" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "Created VM" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "VM destroyed" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "VM already halted, skipping shutdown..." #: nova/virt/xenapi/vm_utils.py:355 #, fuzzy msgid "Shutting down VM (cleanly)" msgstr "Shutting down VM" #: nova/virt/xenapi/vm_utils.py:370 #, fuzzy msgid "Shutting down VM (hard)" msgstr "Shutting down VM" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD not found in instance %s" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "VBD %s already detached" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "Unable to unplug VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "Reached maximum number of retries trying to unplug VBD %s" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "Unable to destroy VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "Unable to destroy VDI %s" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 msgid "SR not present and could not be introduced" msgstr "SR not present and could not be introduced" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "block device info: %s" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "Starting snapshot for VM" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "Destroying cached VDI '%(vdi_uuid)s'" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "Removing kernel/ramdisk files from dom0" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "Unrecognized cache_images value '%s', defaulting to True" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "Fetching image %(image_id)s, type %(image_type_str)s" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Size for image %(image_id)s: %(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, python-format msgid "" "Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d " "bytes" msgstr "" "Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d " "bytes" #: nova/virt/xenapi/vm_utils.py:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "Copying VDI %s to /boot/guest on dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk VDI %s destroyed" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "Failed to fetch glance image" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "Detected %(image_type_str)s format for image %(image_ref)s" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s is still available" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "Flag sr_matching_filter '%s' does not respect formatting convention" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "Cannot find SR of content-type ISO" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "ISO: not iso content" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "ISO: iso content_type, no 'i18n-key' key" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "ISO: iso content_type, i18n-key value not 'local-storage-iso'" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "ISO: SR MATCHing our criteria" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "ISO: ISO, looking to see if it is host local" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "ISO: SR with local PBD" #: nova/virt/xenapi/vm_utils.py:1983 #, python-format msgid "" "Unable to obtain RRD XML for VM %(vm_uuid)s with server details: " "%(server)s." msgstr "" "Unable to obtain RRD XML for VM %(vm_uuid)s with server details: " "%(server)s." #: nova/virt/xenapi/vm_utils.py:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s has parent %(parent_uuid)s" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "Timeout waiting for device %s to be created" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "Disconnecting stale VDI %s from compute domU" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "Plugging VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "Plugging VBD %s done." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "VBD %(vbd_ref)s plugged as %(orig_dev)s" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "Destroying VBD for VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "Destroying VBD for VDI %s done." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "Partitions:" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr " %(num)s: %(ptype)s %(size)d sectors" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "Writing partition table %s done." #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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 "" "Starting sparse_copy src=%(src_path)s dst=%(dst_path)s " "virtual_size=%(virtual_size)d block_size=%(block_size)d" #: nova/virt/xenapi/vm_utils.py:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "Manipulating interface files directly" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "Failed to mount filesystem (expected for non-linux instances): %s" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "Failed to transfer vhd to new host" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Writing image info file: %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "Starting instance" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "Failed to spawn, rolling back" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "Waiting for instance state to become running" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "Finished snapshot and upload for VM" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Failed to terminate instance" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "Starting halted instance found during reboot" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "Unable to find root VBD/VDI for VM" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "Destroying VM" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "Using RAW or VHD, skipping kernel and ramdisk deletion" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "instance has a kernel or ramdisk but not both" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "kernel/ramdisk files removed" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "Destroying VM" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "VM is not present, skipping destroy..." #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "Instance is already in Rescue Mode: %s" #: nova/virt/xenapi/vmops.py:1451 #, fuzzy msgid "VM is not present, skipping soft delete..." msgstr "VM is not present, skipping destroy..." #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "Injecting network info to xenstore" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "Creating vifs" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "Created VIF %(vif_ref)s, network %(network_ref)s" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 #, fuzzy msgid "No suitable network for migrate" msgstr "Bad networks format" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "Migrate Receive failed" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "Migrate Send failed" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Creating pbd for SR" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "Plugging SR" #: nova/virt/xenapi/volume_utils.py:89 #, fuzzy msgid "Forgetting SR..." msgstr "Forgetting SR %s..." #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "Unable to find SR from VBD %s" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "Unable to introduce VDI on SR %s" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "Unable to get record of VDI %s on" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "Unable to introduce VDI for SR %s" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Mountpoint cannot be translated: %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "Unable to log in to XenAPI (is the Dom0 disk full?)" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "Host is member of a pool, but DB says otherwise" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "Got exception: %s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "Error in handshake: %s" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "Invalid request: %s" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "Request: %s" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "Request made with missing token: %s" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "Request made with invalid token: %s" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "Unexpected error: %s" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "Starting nova-xvpvncproxy node (version %s)" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "Cinderclient connection created using URL: %s" #: nova/volume/cinder.py:221 #, fuzzy msgid "status must be 'in-use'" msgstr "status must be available" #: nova/volume/cinder.py:227 #, fuzzy msgid "status must be 'available'" msgstr "status must be available" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/es_MX/0000775000175400017540000000000012323722545017124 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/es_MX/LC_MESSAGES/0000775000175400017540000000000012323722546020712 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/es_MX/LC_MESSAGES/nova.po0000664000175400017540000116546412323721510022224 0ustar jenkinsjenkins00000000000000# Spanish (Mexico) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-08-30 07:15+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Spanish (Mexico) " "(http://www.transifex.com/projects/p/openstack/language/es_MX/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/cs/0000775000175400017540000000000012323722545016516 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/cs/LC_MESSAGES/0000775000175400017540000000000012323722546020304 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/cs/LC_MESSAGES/nova.po0000664000175400017540000134056112323721510021607 0ustar jenkinsjenkins00000000000000# Czech translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-05-17 20:04+0000\n" "Last-Translator: ZbynÄ›k Schwarz \n" "Language-Team: Czech \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "block_device_list %s" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "JmĂ©no souboru koÅ™enovĂ© CA" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "JmĂ©no souboru se soukromĂ½m klĂ­Äem" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "NĂ¡zev souboru seznamu zruÅ¡enĂ­ koÅ™enovĂ©ho certifikĂ¡tu" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Kde uchovĂ¡vĂ¡me naÅ¡e klĂ­Äe" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Kde uchovĂ¡vĂ¡me naÅ¡i koÅ™enovou CA" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Použijeme CA pro každĂ½ projekt?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" "PÅ™edmÄ›t certifikĂ¡tu pro uživatele, %s pro projekt, uživatel, ÄasovĂ© " "razĂ­tko" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "PÅ™edmÄ›t certifikĂ¡tu pro projekty, %s pro projekt, ÄasovĂ© razĂ­tko" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 #, fuzzy msgid "Unable to find the key" msgstr "Nelze najĂ­t adresu %r" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Nelze restartovat instanci" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Cesta pÅ™Ă­znaků: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "Vyskytla se neoÄekĂ¡vanĂ¡ vĂ½jimka." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Nelze deÅ¡ifrovat text" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Nelze deÅ¡ifrovat text" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "VytvoÅ™enĂ­ virtuĂ¡lnĂ­ho rozhranĂ­ selhalo" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "NeschvĂ¡leno." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "Uživatel nemĂ¡ sprĂ¡vcovskĂ¡ oprĂ¡vnÄ›nĂ­" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Pravidla nedovolujĂ­, aby bylo %(action)s provedeno." #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "Obraz %(image_id)s nemohl bĂ½t nalezen." #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Kernel nenalezen v obrazu %(image_id)s." #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "NepÅ™ijatelnĂ© parametry." #: nova/exception.py:195 #, fuzzy msgid "Block Device Mapping is Invalid." msgstr "block_device_mapping %s" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "Svazek %(volume_id)s nenĂ­ k niÄemu pÅ™ipojen" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "Požadavek je neplatnĂ½." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "NeplatnĂ½ rozsah portů %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "NeplatnĂ½ protokol IP %(protocol)s." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "NeplatnĂ½ typ obsahu %(content_type)s." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "NeplatnĂ½ cidr %(cidr)s." #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" "Nelze provĂ©st Äinnost '%(action)s' na agregĂ¡tu %(aggregate_id)s. Důvod: " "%(reason)s." #: nova/exception.py:329 #, fuzzy, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "Nebyl nalezen Å¾Ă¡dnĂ½ platnĂ½ hostitel. %(reason)s" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" "Instance %(instance_uuid)s v %(attr)s %(state)s. Nelze %(method)s " "zatĂ­mco je instance v tomto stavu." #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "Instance %(instance_id)s nenĂ­ spuÅ¡tÄ›na." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "Instance %(instance_id)s nenĂ­ v nouzovĂ©m režimu." #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "Instance %(instance_id)s nenĂ­ v nouzovĂ©m režimu." #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "Instance %(instance_id)s nenĂ­ pozastavena." #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "Služba je v tuto chvĂ­li nedostupnĂ¡." #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "Služba vĂ½poÄtu je v tuto chvĂ­li nedostupnĂ¡." #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" "Nelze pÅ™esunout instanci (%(instance_id)s) na souÄasnĂ©ho hostitele " "(%(host)s)." #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "ZadanĂ½ typ hypervizoru je neplatnĂ½." #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "Instance vyžaduje novÄ›jÅ¡Ă­ verzi hypervizoru, než byla poskytnuta." #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "ZadanĂ¡ cesta disku (%(path)s) již existuje, oÄekĂ¡vĂ¡ se, že nebude." #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "ZadanĂ¡ cesta zaÅ™Ă­zenĂ­ (%(path)s) je neplatnĂ¡." #: nova/exception.py:433 #, fuzzy, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "ZadanĂ¡ cesta zaÅ™Ă­zenĂ­ (%(path)s) je neplatnĂ¡." #: nova/exception.py:438 #, fuzzy, python-format msgid "The supplied device (%(device)s) is busy." msgstr "ZadanĂ¡ cesta zaÅ™Ă­zenĂ­ (%(path)s) je neplatnĂ¡." #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s nenĂ­ platnĂ¡ IP adresa v4/6." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" "ZnaÄka VLAN nenĂ­ vhodnĂ¡ pro skupinu portů %(bridge)s. OÄekĂ¡vanĂ¡ znaÄka " "VLAN je %(tag)s, ale znaÄka pÅ™ipojenĂ¡ ke skupinÄ› portů je %(pgroup)s." #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" "vSwitch kterĂ½ obsahuje skupinu portů %(bridge)s nenĂ­ spojen s požadovanĂ½m" " fyzickĂ½m adaptĂ©rem. OÄekĂ¡vanĂ½ vSwitch je %(expected)s, ale spojenĂ½ je " "%(actual)s." #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "FormĂ¡t disku %(disk_format)s nenĂ­ pÅ™ijatelnĂ½" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "Obraz %(image_id)s je nepÅ™ijatelnĂ½: %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "Instance %(instance_id)s je nepÅ™ijatelnĂ¡: %(reason)s" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "Id Ec2 %(ec2_id)s je nepÅ™ijatelnĂ©." #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "NeplatnĂ½ cidr %(cidr)s." #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "instance - %s nenĂ­ pÅ™Ă­tomno" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "Zdroj nemohl bĂ½t nalezen." #: nova/exception.py:497 #, fuzzy, python-format msgid "No agent-build associated with id %(id)s." msgstr "Å½Ă¡dnĂ¡ pevnĂ¡ IP nenĂ­ spojena s %(id)s." #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Svazek %(volume_id)s nemohl bĂ½t nastaven." #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "SnĂ­mek %(snapshot_id)s nemohl bĂ½t nalezen." #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "Å¹Ă¡dnĂ½ disk ve %(location)s" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "Nelze najĂ­t obslužnou rutinu pro svazek %(driver_type)s." #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "NeplatnĂ½ href %(image_href)s obrazu." #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "Obraz %(image_id)s nemohl bĂ½t nalezen." #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "Projekt %(project_id)s nemohl bĂ½t nalezen." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "Nelze najĂ­t SR pro ÄtenĂ­/zĂ¡pis VDI." #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "SĂ­Å¥ %(network_id)s nemohla bĂ½t nalezena." #: nova/exception.py:566 #, fuzzy, python-format msgid "Network %(network_id)s is still in use." msgstr "SĂ­Å¥ %(network_id)s nemohla bĂ½t nalezena." #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "%(req)s je vyžadovĂ¡no pro vytvoÅ™enĂ­ sĂ­tÄ›." #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "SĂ­Å¥ %(network_id)s nemohla bĂ½t nalezena." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "SnĂ­mek %(snapshot_id)s nemohl bĂ½t nalezen." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "SĂ­Å¥ nemohla bĂ½t pro most %(bridge)s nalezena." #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "SĂ­Å¥ nemohla bĂ½t pro uuid %(uuid)s nalezena." #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "SĂ­Å¥ nemohla bĂ½t pro cidr %(cidr)s nalezena." #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "SĂ­Å¥ nemohla bĂ½t pro instance %(instance_id)s nalezena." #: nova/exception.py:598 msgid "No networks defined." msgstr "Å¹Ă¡dnĂ© sĂ­tÄ› nejsou urÄeny." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "Nelze najĂ­t odkazy datovĂ©ho ĂºložiÅ¡tÄ›, kterĂ½ VM pouÅ¾Ă­vĂ¡." #: nova/exception.py:625 #, fuzzy, python-format msgid "Port %(port_id)s is still in use." msgstr "SĂ­Å¥ %(network_id)s nemohla bĂ½t nalezena." #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "SĂ­Å¥ nemohla bĂ½t pro instance %(instance_id)s nalezena." #: nova/exception.py:637 #, fuzzy, python-format msgid "No free port available for instance %(instance)s." msgstr "SĂ­Å¥ nemohla bĂ½t pro instance %(instance_id)s nalezena." #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "Å½Ă¡dnĂ¡ pevnĂ¡ IP nenĂ­ spojena s %(id)s." #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "PevnĂ¡ ip nenĂ­ pro adresu %(address)s nalezena." #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "Instance %(instance_id)s mĂ¡ nula pevnĂ½ch ip." #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "SĂ­Å¥ovĂ½ hostitel %(host)s mĂ¡ nula pevnĂ½ch ip v sĂ­ti %(network_id)s." #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "Instance %(instance_id)s nemĂ¡ pevnou ip '%(ip)s'." #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "PevnĂ¡ IP adresa (%(address)s) v sĂ­ti (%(network_uuid)s) neexistuje." #: nova/exception.py:671 #, fuzzy, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "PevnĂ¡ IP adresa (%(address)s) je již pouÅ¾Ă­vĂ¡na." #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "PevnĂ¡ IP adresa (%(address)s) je neplatnĂ¡." #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "Je dostupno nula pevnĂ½ch ip." #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "Bylo nalezeno nula pevnĂ½ch ip." #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "PlovoucĂ­ ip %(address)s je pÅ™idružena." #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "PlovoucĂ­ ip nenĂ­ nalezena pro id %(id)s." #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "ZĂ¡znam DNS %(name)s již v domĂ©nÄ› %(domain)s existuje." #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "PlovoucĂ­ ip nenalezeno pro adresu %(address)s." #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "PlovoucĂ­ ip nenalezeno pro hostitele %(host)s." #: nova/exception.py:715 #, fuzzy, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "PlovoucĂ­ ip nenalezeno pro adresu %(address)s." #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "Nenalezeny Å¾Ă¡dnĂ© plovoucĂ­ ip" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "Je dostupnĂ½ch nula plovoucĂ­ch ip." #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "PlovoucĂ­ ip %(address)s je pÅ™idružena." #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "PlovoucĂ­ ip %(address)s nenĂ­ pÅ™idružena." #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "Existuje nula plovoucĂ­ch ip." #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "RozhranĂ­ %(interface)s nenalezeno." #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "Dvojice klĂ­Äů %(name)s nenalezena pro uživatele %(user_id)s" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Služba %(service_id)s nemohla bĂ½t nalezena." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "Hostitel %(host)s nemohl bĂ½t nalezen." #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "Hostitel vĂ½poÄtu %(host)s nemohl bĂ½t nalezen." #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "Nelze najĂ­t binĂ¡rnĂ­ soubor %(binary)s v hostiteli %(host)s." #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "KvĂ³ta nemohla bĂ½t nalezena." #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "KvĂ³ta pro projekt %(project_id)s nemohla bĂ½t nalezena." #: nova/exception.py:812 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "TÅ™Ă­da %(class_name)s nemohla bĂ½t nalezena: %(exception)s" #: nova/exception.py:816 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "KvĂ³ta pro projekt %(project_id)s nemohla bĂ½t nalezena." #: nova/exception.py:820 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "Uživatel %(user_id)s nemohl bĂ½t nalezen." #: nova/exception.py:824 #, fuzzy, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "RozÅ¡Ă­Å™enĂ½ zdroj: %s" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "BezpeÄnostnĂ­ skupina %(security_group_id)s nenĂ­ nalezena." #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" "BezpeÄnostnĂ­ skupina %(security_group_id)s nenĂ­ nalezena v projektu " "%(project_id)s." #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "BezpeÄnostnĂ­ skupina s pravidlem %(rule_id)s nenalezena." #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" "BezpeÄnostnĂ­ skupina %(security_group_id)s je již pÅ™idružena k instanci " "%(instance_id)s" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" "BezpeÄnostnĂ­ skupina %(security_group_id)s nenĂ­ pÅ™idružena k instanci " "%(instance_id)s" #: nova/exception.py:857 #, fuzzy, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "BezpeÄnostnĂ­ skupina s pravidlem %(rule_id)s nenalezena." #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "PÅ™esun %(migration_id)s nemohl bĂ½t nalezen." #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "PÅ™esun nenalezen v instanci %(instance_id)s se stavem %(status)s." #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "ZĂ¡soba konzole %(pool_id)s nemohla bĂ½t nalezena." #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" "ZĂ¡soba konzole typu %(console_type)s pro vĂ½poÄetnĂ­ho hostitele " "%(compute_host)s v hostitele proxy %(host)s nemohla bĂ½t nalezena." #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "Konzole %(console_id)s nemohla bĂ½t nalezena." #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "Konzole pro instanci %(instance_id)s nemohla bĂ½t nalezena." #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" "Konzole pro instanci %(instance_id)s v zĂ¡sobÄ› %(pool_id)s nemohla bĂ½t " "nalezena." #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "NeplatnĂ¡ konzole typu %(console_type)s " #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "Konfigurace %(flavor_id)s nemohla bĂ½t nalezena." #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "skupina svazku %s neexistuje" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 #, fuzzy msgid "Timeout waiting for response from cell" msgstr "PÅ™i ÄekĂ¡nĂ­ na odpovÄ›Ä RPC vyprÅ¡el Äas: %s" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Svazek nenĂ­ nalezen v instanci %(instance_id)s." #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "Filtr hostitelů plĂ¡novaÄe %(filter_name)s nemohl bĂ½t nalezen." #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "Soubor %(file_path)s nemohl bĂ½t nalezen." #: nova/exception.py:994 msgid "Zero files could be found." msgstr "Nalezeno nula souborů." #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "Nenalezen virtuĂ¡lnĂ­ pÅ™epĂ­naÄ sdruženĂ½ se sĂ­Å¥ovĂ½m adaptĂ©rem %(adapter)s." #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "SĂ­Å¥ovĂ½ adaptĂ©r %(adapter)s nemohl bĂ½t nalezen." #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "TÅ™Ă­da %(class_name)s nemohla bĂ½t nalezena: %(exception)s" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "ÄŒinnost nenĂ­ povolena." #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "StÅ™Ă­dĂ¡nĂ­ nenĂ­ povoleno pro snĂ­mky" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "Parametr rotation je vyžadovĂ¡n pro backup image_type" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "Dvojice klĂ­Äů %(key_name)s již existuje." #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "Instance %(name)s již existuje." #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, fuzzy, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "%(path)s je ve sdĂ­lenĂ©m ĂºložiÅ¡ti: %(reason)s" #: nova/exception.py:1049 #, fuzzy, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "%(path)s je ve sdĂ­lenĂ©m ĂºložiÅ¡ti: %(reason)s" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "PoÅ¡kozenĂ© tÄ›lo zprĂ¡vy: %(reason)s" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "Nelze najĂ­t nastavenĂ­ v %(path)s" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "Nelze naÄĂ­st aplikaci vloženĂ­ '%(name)s' z %(path)s" #: nova/exception.py:1075 #, fuzzy msgid "When resizing, instances must change flavor!" msgstr "PÅ™i zmÄ›nÄ› velikosti ji musĂ­ instance zmÄ›nit takĂ©!" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "Pro spuÅ¡tÄ›nĂ­ %(uuid)s je v uzlu vĂ½poÄtu nedostatek volnĂ© pamÄ›ti." #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "Nebyl nalezen Å¾Ă¡dnĂ½ platnĂ½ hostitel. %(reason)s" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, fuzzy, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "PÅ™ekroÄena kvĂ³ta pro %(pid)s, pokus o spuÅ¡tÄ›nĂ­ %(min_count)s instancĂ­" #: nova/exception.py:1116 #, fuzzy msgid "Maximum number of floating ips exceeded" msgstr "VybrĂ¡n maximĂ¡lnĂ­ poÄet hostitelů (%d)" #: nova/exception.py:1120 #, fuzzy msgid "Maximum number of fixed ips exceeded" msgstr "VybrĂ¡n maximĂ¡lnĂ­ poÄet hostitelů (%d)" #: nova/exception.py:1124 #, fuzzy, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "VybrĂ¡n maximĂ¡lnĂ­ poÄet hostitelů (%d)" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "PÅ™ekroÄen limit osobnostnĂ­ho souboru" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "Cesta osobnostnĂ­ho souboru je pÅ™Ă­liÅ¡ dlouhĂ¡" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "Obsah osobnostnĂ­ho souboru je pÅ™Ă­liÅ¡ dlouhĂ½" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 #, fuzzy msgid "Maximum number of key pairs exceeded" msgstr "VybrĂ¡n maximĂ¡lnĂ­ poÄet hostitelů (%d)" #: nova/exception.py:1145 #, fuzzy msgid "Maximum number of security groups or rules exceeded" msgstr "VybrĂ¡n maximĂ¡lnĂ­ poÄet hostitelů (%d)" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, fuzzy, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "AgregĂ¡t %(aggregate_id)s nemĂ¡ hostitele %(host)s." #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "AgregĂ¡t %(aggregate_id)s nemohl bĂ½t nalezen." #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "AgregĂ¡t %(aggregate_name)s již existuje." #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "AgregĂ¡t %(aggregate_id)s nemĂ¡ hostitele %(host)s." #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "AgregĂ¡t %(aggregate_id)s nemĂ¡ Å¾Ă¡dnĂ¡ metadata s klĂ­Äem %(metadata_key)s." #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "AgregĂ¡t %(aggregate_id)s již mĂ¡ hostitele %(host)s." #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, fuzzy, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "Nelze nastavit heslo sprĂ¡vce. Instance %s nenĂ­ spuÅ¡tÄ›na" #: nova/exception.py:1189 #, fuzzy, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "Zjišťěna existujĂ­cĂ­ vlan s id %(vlan)" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "Instance %(instance_id)s nemohla bĂ½t nastavena." #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "Konzole pro instanci %(instance_id)s nemohla bĂ½t nalezena." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Svazek %(volume_id)s nemohl bĂ½t nastaven." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "SnĂ­mek %(snapshot_id)s nemohl bĂ½t nalezen." #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "Obraz %(image_id)s nemohl bĂ½t nalezen." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ obrazu %(image)s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ obrazu %(image)s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, fuzzy, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "PlovoucĂ­ ip nenalezeno pro hostitele %(host)s." #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "Instance %(instance_id)s nenalezena" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "NavrĂ¡cenĂ­ sĂ­tÄ› pro instnac" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "NavrĂ¡cenĂ­ sĂ­tÄ› pro instnac" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "PÅ™ipojit svazek %(volume_id)s k instanci %(instance_id)s na %(device)s" #: nova/exception.py:1291 #, fuzzy, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "Dvojice klĂ­Äů %(name)s nenalezena pro uživatele %(user_id)s" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, fuzzy, python-format msgid "The CA file for %(project)s could not be found" msgstr "KvĂ³ta pro projekt %(project_id)s nemohla bĂ½t nalezena." #: nova/exception.py:1304 #, fuzzy, python-format msgid "The CRL file for %(project)s could not be found" msgstr "Projekt %(project_id)s nemohl bĂ½t nalezen." #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "Instance %(instance_id)s nenĂ­ v nouzovĂ©m režimu." #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "Instance %(instance_id)s nenĂ­ v nouzovĂ©m režimu." #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "Instance typu %(name)s již existuje." #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "OÄekĂ¡vĂ¡n objekt typu: %s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Nelze zĂ­skat metadata pro ip: %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "Soubor JSON pÅ™edstavujĂ­cĂ­ zĂ¡sady" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "KontrolovanĂ© pravidlo, když požadovanĂ© nenĂ­ nalezeno" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "ZaÄĂ­najĂ­cĂ­ uzel %(topic)s (verze %(vcs_string)s)" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "UkonÄena služba bez zĂ¡znamu v databĂ¡zi" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "Adresa mĂ­stnĂ­ho spojenĂ­ nenalezena.: %s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "Nelze zĂ­skat IP mĂ­stnĂ­ho spojenĂ­ %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "NeplatnĂ¡ podpůrnĂ¡ vrstva: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "OÄekĂ¡vĂ¡n objekt typu: %s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "NeplatnĂ½ server_string: %s" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, fuzzy, python-format msgid "Reloading cached file %s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, fuzzy, python-format msgid "Could not remove tmpdir: %s" msgstr "Nelze odstranit kontejner: %s" #: nova/utils.py:966 #, fuzzy, python-format msgid "%s is not a string or unicode" msgstr "NĂ¡zev serveru nenĂ­ Å™etÄ›zec nebo unicode" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, fuzzy, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "%(name)s spuÅ¡tÄ›no v %(host)s:%(port)s" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Nelze najĂ­t adresu %r" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Nelze najĂ­t adresu %r" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Nelze najĂ­t adresu %r" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "ZastavovĂ¡nĂ­ serveru WSGI." #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "Server WSGI byl zastaven." #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "MusĂ­te zavĂ©st __call__" #: nova/wsgi.py:500 #, fuzzy, python-format msgid "Loading app %(name)s from %(path)s" msgstr "Nelze naÄĂ­st aplikaci vloženĂ­ '%(name)s' z %(path)s" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "ObalovaÄchyb: %s" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "PÅ™Ă­liÅ¡ mnoho ověřenĂ­ selhalo." #: nova/api/ec2/__init__.py:167 #, 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 "" "PÅ™Ă­stupovĂ½ klĂ­Ä %(access_key)s %(failures)d krĂ¡t selhal pÅ™i ověřenĂ­ a " "bude zablokovĂ¡n na %(lock_mins)d minut." #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "Podpis nenĂ­ zadĂ¡n" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "PÅ™Ă­stupovĂ½ klĂ­Ä nenĂ­ zadĂ¡n" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "Chyba pÅ™i komunikaci s keystone" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "PÅ™esun pÅ™ed spuÅ¡tÄ›nĂ­m selhal na %(dest)s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "PÅ™Ă­liÅ¡ mnoho ověřenĂ­ selhalo." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "Äinnost: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "arg: %(key)s\t\thod: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "NeoprĂ¡vnÄ›nĂ­ požadavek pro ovladaÄ=%(controller)s a Äinnost=%(action)s" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "ProstÅ™edĂ­: %s" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" "NepodporovanĂ½ požadavek API: ovladaÄ = %(controller)s, Äinnost = " "%(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "VytvoÅ™it snĂ­mek svazku %s" #: nova/api/ec2/cloud.py:418 #, fuzzy, python-format msgid "Could not find key pair(s): %s" msgstr "Nelze deÅ¡ifrovat soukromĂ½ klĂ­Ä: %s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "VytvoÅ™it dvojici klĂ­Äů %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "Imprtovat klĂ­Ä %s" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Smazat dvojici klĂ­Äů %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "Pro zadanĂ© parametry nenĂ­ Å¾Ă¡dnĂ© pravidlo." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "ZĂ­skat vĂ½stup konzole pro instanci %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "VytvoÅ™it svazek ze snĂ­mku %s" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "VytvoÅ™it svazek o %s GB" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "PÅ™ipojit svazek %(volume_id)s k instanci %(instance_id)s na %(device)s" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Odpojit svazek %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "svz = %s\n" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "PÅ™idÄ›lit adresu" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Uvolnit adresu %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "PÅ™idÄ›lit adresu %(public_ip)s k instanci %(instance_id)s" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "Nelze najĂ­t adresu %r" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, fuzzy, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "existuje mnoho pevnĂ½ch ip, použita je prvnĂ­: %s" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "OddÄ›lit adresu %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "Obraz musĂ­ bĂ½t dostupnĂ½" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "BUde spuÅ¡tÄ›no ukonÄovĂ¡nĂ­ insatncĂ­" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Restratovat instanci %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "Instance budou zastaveny" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "Instance budou spuÅ¡tÄ›ny" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "ZruÅ¡enĂ­ registrace obrazu %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "Obraz %(image_location)s registrovĂ¡n s id %(image_id)s" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "uživatel nebo skupina nebyly zadĂ¡ny" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "podporovĂ¡na je pouze skupina \"all\"" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_type musĂ­ bĂ½t add nebo remove" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "Aktualizace publicity obrazu %s" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 #, fuzzy msgid "Expecting a list of resources" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ seznamu instancĂ­" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "instance - %s nenĂ­ pÅ™Ă­tomno" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 #, fuzzy msgid "Expecting a list of tagSets" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ seznamu instancĂ­" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 #, fuzzy msgid "Invalid CIDR" msgstr "NeplatnĂ¡ data jednotky" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "Požadavek je neplatnĂ½." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Nelze zĂ­skat metadata pro ip: %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "Vyskytla se neznĂ¡mĂ¡ chyba. ProsĂ­m zopakujte VĂ¡Å¡ požadavek." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 #, fuzzy msgid "Invalid proxy request signature." msgstr "NeplatnĂ½ požadavek: %s" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Nelze zĂ­skat metadata pro ip: %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Zachycena chyba: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s vrĂ¡cena s HTTP %(status)d" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "MusĂ­ bĂ½t urÄena tÅ™Ă­da ExtensionManager" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "RozÅ¡Ă­Å™enĂ­ %(ext_name)s: nelze rozÅ¡Ă­Å™it %(collection)s: Å½Ă¡dnĂ½ takovĂ½ zdroj" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, fuzzy, python-format msgid "v3 API Extension Blacklist: %s" msgstr "VolĂ¡nĂ­ tovĂ¡rny rozÅ¡Ă­Å™enĂ­ %s" #: nova/api/openstack/__init__.py:301 #, fuzzy, python-format msgid "v3 API Extension Whitelist: %s" msgstr "NaÄĂ­tĂ¡nĂ­ rozÅ¡Ă­Å™enĂ­ %s" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "NaÄĂ­tĂ¡nĂ­ rozÅ¡Ă­Å™enĂ­ %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "RozÅ¡Ă­Å™enĂ½ zdroj: %s" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "RozÅ¡Ă­Å™enĂ­ %(ext_name)s: rozÅ¡iÅ™ovĂ¡nĂ­ zdroje %(collection)s" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "parametr offset musĂ­ bĂ½t celĂ© ÄĂ­slo" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "parametr limit musĂ­ bĂ½t celĂ© ÄĂ­slo" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "parametr limit musĂ­ bĂ½t kladnĂ½" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "parametr offset musĂ­ bĂ½t kladnĂ½" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "znaÄka [%s] nenalezena" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "href %s neobsahuje verzi" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "Metadata obrazu pÅ™ekraÄujĂ­ limit" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 #, fuzzy msgid "Invalid image metadata" msgstr "NeplatnĂ¡ metadata" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "Nelze '%(action)s' zatĂ­mco instance je %(attr)s %(state)s" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, fuzzy, python-format msgid "Instance is in an invalid state for '%s'" msgstr "Instance je v neplatnĂ©m stavu pro '%(action)s'" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "OdmĂ­tnutĂ­ Å¾Ă¡dosti o snĂ­mek, snĂ­mky jsou nynĂ­ zakĂ¡zĂ¡ny" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "SnĂ­mky instance nejsou v souÄasnosti povoleny." #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "NaÄteno rozÅ¡Ă­Å™enĂ­: %s" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "NĂ¡zev roz: %s" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "PÅ™ezdĂ­vkĂ¡ roz: %s" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "Popis roz: %s" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "JmennĂ½ prostor roz: %s" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Roz aktualizovĂ¡no: %s" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "VĂ½jimka pÅ™i naÄĂ­tĂ¡nĂ­ rozÅ¡Ă­Å™enĂ­: %s" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "NaÄĂ­tĂ¡nĂ­ rozÅ¡Ă­Å™enĂ­ %s" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "VolĂ¡nĂ­ tovĂ¡rny rozÅ¡Ă­Å™enĂ­ %s" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "Nelze naÄĂ­t rozÅ¡Ă­Å¾enĂ­ %(ext_factory)s: %(exc)s" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "Nelze naÄĂ­st rozÅ¡Ă­Å™enĂ­ %(classpath)s: %(exc)s" #: nova/api/openstack/extensions.py:372 #, fuzzy, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "Nelze naÄĂ­st rozÅ¡Ă­Å™enĂ­ %(ext_name)s: %(exc)s" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "JSON nelze porozumÄ›t" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "pÅ™Ă­liÅ¡ mnoho klĂ­Äů tÄ›la" #: nova/api/openstack/wsgi.py:693 #, fuzzy, python-format msgid "Exception handling resource: %s" msgstr "RozÅ¡Ă­Å™enĂ½ zdroj: %s" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "VyvolĂ¡na chyba: %s" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "VyvolĂ¡na vĂ½jimka HTTP: %s" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "V požadavku zadĂ¡n nerozpoznanĂ½ Content-Type" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "Å½Ă¡dnĂ¡ takovĂ¡ Äinnost: %s" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "PoÅ¡kozenĂ© tÄ›lo požadavku" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "NepodporovanĂ½ Content-Type" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "prvek nenĂ­ podÅ™azenĂ½" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "koÅ™enovĂ½ prvek volĂ­ seznam" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" "Neshoda stromu Å¡ablony; pÅ™idĂ¡vĂ¡nĂ­ sluhy %(slavetag)s k pĂ¡novi " "%(mastertag)s" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "podtÅ™Ă­dy musĂ­ zavĂ¡dÄ›t construct()!" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "ZavĂ¡dÄ›nĂ­ sprĂ¡vce rozÅ¡Ă­Å™enĂ­." #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "NeplatnĂ½ podpis pro uživatele %s" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "NeplatnĂ½ podpis pro uživatele %s" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "Obraz nenalezen" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "NsprĂ¡vnĂ½ formĂ¡t tÄ›la požadavku" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "Neshoda s tÄ›lem požadavku a URI" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "TÄ›lo požadavku obsahuje pÅ™Ă­liÅ¡ mnoho položek" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "NeplatnĂ½ klĂ­Ä metadata" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "Instance neexistuje" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "Instance nenĂ­ Älenem zadanĂ© sĂ­tÄ›" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" "Pouze %(value)s požadavky %(verb)s mohou bĂ½t provedeny pro %(uri)s " "každĂ½ch %(unit_string)s." #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "Tento požadavek mĂ¡ omezen množstvĂ­." #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "Server neexistuje" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "Položka metadat nenalezena" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "NeplatnĂ¡ hodnota changes-since" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "Pokus o jemnĂ© smazĂ¡nĂ­ %s" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "Hostitel %(host)s nemohl bĂ½t nalezen." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "Instance nemohla bĂ½t nalezena" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "Å patnĂ½ formĂ¡t osobnosti: chybĂ­ %s" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "Å patnĂ½ formĂ¡t osobnosti" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "Obsah osobnosti pro %s nemůže bĂ½t dekĂ³dovĂ¡n" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, fuzzy, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "Å patnĂ½ formĂ¡t sĂ­tĂ­: uuid sĂ­tÄ› nenĂ­ ve sprĂ¡vnĂ©m formĂ¡tu (%s)" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "Å patnĂ½ formĂ¡t sĂ­tĂ­: uuid sĂ­tÄ› nenĂ­ ve sprĂ¡vnĂ©m formĂ¡tu (%s)" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "NeplatnĂ¡ pevnĂ¡ IP adresa (%s)" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "DuplicitnĂ­ sĂ­tÄ› (%s) nejosu povoleny" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "Å patnĂ½ formĂ¡t sĂ­tÄ›: chybĂ­ %s" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "Å patnĂ½ formĂ¡t sĂ­tÄ›" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "Obsah uživatelskĂ½ch dat nemůže bĂ½t dekĂ³dovĂ¡n" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "accessIPv4 nenĂ­ ve sprĂ¡vnĂ©m formĂ¡tu IPv4" #: nova/api/openstack/compute/servers.py:760 #, fuzzy msgid "accessIPv6 is not proper IPv6 format" msgstr "accessIPv4 nenĂ­ ve sprĂ¡vnĂ©m formĂ¡tu IPv4" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "NĂ¡zev serveru nenĂ­ urÄen" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "ZadĂ¡no neplatnĂ© flavorRef." #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "Nelze najĂ­t požadovanĂ½ obraz" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "ZadĂ¡n neplatnĂ½ nĂ¡zev_klĂ­Äe." #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "id nemůže bĂ½t None" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "id nemůže bĂ½t None" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "Instanci nebyla zmÄ›nÄ›na velikost." #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "Instance %(instance_id)s nemohla bĂ½t nastavena." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "Argument 'type' pro restart nenĂ­ HARD Äi SOFT" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "ChybĂ­ argument 'type' pro restart" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "Nelze najĂ­t požadovanou konfiguraci." #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 #, fuzzy msgid "Resize requires a flavor change." msgstr "Resize vyžaduje zmÄ›nu velikosti." #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "Instance %(instance_id)s nemohla bĂ½t nastavena." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "%s je platnĂ½ nĂ¡zev instance" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "ChybĂ­ vlastnost imageRef" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "ZadĂ¡no neplatnĂ© imageRef." #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "ChybĂ­ vlastnost flavorRef" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "Nebylo zadĂ¡no adminPass" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Nelze restartovat instanci" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "Nelze zpracovat metadata dvojic hodnot/klĂ­Äů." #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "Požadavek na zmÄ›nu velikosti mĂ¡ neplatnou vlastnost 'flavorRef'." #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "Požadavek na zmÄ›nu velikosti vyžaduje vlastnost 'flavorRef'." #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "Nelze zpracovat imageRef z požadavku." #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "Nelze najĂ­t obraz ke znovu sestavenĂ­" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "Objekt createImage cyžaduje vlastnost name" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "NeplatnĂ¡ metadata" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "NeplatnĂ© adminPass" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "OdstraňovĂ¡nĂ­ voleb '%(unk_opt_str)s' z fronty" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "Server nenalezen" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pauza %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::zruÅ¡ pauzu %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::pÅ™eruÅ¡enĂ­ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::pokraÄovĂ¡nĂ­ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "Chyba v pÅ™esunu %s" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_sĂ­tÄ› %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "Compute.api::vložit_info_sĂ­tÄ› %s" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::uzamÄenĂ­ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::odemÄenĂ­ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "Objekt createBackup vyžaduej vlastnost %s" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "PoÅ¡kozenĂ½ objekt createBackup" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "Vlastnost createBackup 'rotation' musĂ­ bĂ½t celĂ© ÄĂ­slo" #: nova/api/openstack/compute/contrib/admin_actions.py:276 #, fuzzy msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "Vlastnost createBackup 'rotation' musĂ­ bĂ½t celĂ© ÄĂ­slo" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "Instance nenalezena" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, fuzzy, python-format msgid "Live migration of instance %s to another host failed" msgstr "Migrace za chodu instance %(id)s na hostitele %(host)s selhala" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "Migrace za chodu instance %(id)s na hostitele %(host)s selhala" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::pokraÄovĂ¡nĂ­ %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, fuzzy, python-format msgid "Cannot show aggregate: %s" msgstr "Nelze aktualizovat agenta: %(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, fuzzy, python-format msgid "Cannot update aggregate: %s" msgstr "Nelze aktualizovat agenta: %(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, fuzzy, python-format msgid "Cannot delete aggregate: %s" msgstr "Nelze aktualizovat agenta: %(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "AgregĂ¡ty nemajĂ­ Äinnost %s" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "NeplatnĂ© tÄ›lo požadavku" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "Smazat snĂ­mek s id: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Nelze pozastavit instanci" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 #, fuzzy msgid "Network driver does not support this function." msgstr "OvladaÄ hypervizoru nepodporuje pravidla firewallu" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Nelze pozastavit instanci" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "vlastnost nenĂ­ podporovĂ¡na: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "SpouÅ¡tÄ›nĂ­ rozhranĂ­ VLAN %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Pravidlo (%s) nenalezeno" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 #, fuzzy msgid "Cell name cannot be empty" msgstr "NĂ¡zev bezpeÄnostnĂ­ skupiny nemůže bĂ½t prĂ¡zdnĂ©" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 #, fuzzy msgid "No cell information in request" msgstr "block_device_mapping %s" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "Může bĂ½t zĂ­skĂ¡n pouze koÅ™enovĂ½ certifikĂ¡t." #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" "Nelze zĂ­skat IP pro instance VPN, ujistÄ›te se, že nenĂ­ spuÅ¡tÄ›na a zkuste " "to znovu za pĂ¡r minut." #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "NeznĂ¡mĂ½ Å™etÄ›z: %r" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "Nelze pouÅ¾Ă­t globĂ¡lnĂ­ roli %(role_id)s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "instance %s: nenĂ­ zavedena" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "%s musĂ­ bĂ½t buÄ 'MANUAL' nebo 'AUTO'." #: nova/api/openstack/compute/contrib/evacuate.py:53 #, fuzzy msgid "host and onSharedStorage must be specified." msgstr "host a block_migration musĂ­ bĂ½t zadĂ¡ny." #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "CertifikĂ¡t %(certificate_id)s nenalezen." #: nova/api/openstack/compute/contrib/flavor_access.py:94 #, fuzzy msgid "Flavor not found." msgstr "Server nenalezen." #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 #, fuzzy msgid "No request body" msgstr "Å½Ă¡dnĂ© tÄ›lo požadavku" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "Å½Ă¡dnĂ© tÄ›lo požadavku" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "Instance nenalezena" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "PlovoucĂ­ ip nenĂ­ nalezena pro id %(id)s." #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "Å½Ă¡dnĂ© dalÅ¡Ă­ plovoucĂ­ ip v zĂ¡sobnĂ­ku %s." #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "Å½Ă¡dnĂ© dalÅ¡Ă­ plovoucĂ­ ip nejsou dostupnĂ©." #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "PlovoucĂ­ ip %(address)s nenĂ­ pÅ™idružena." #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "ChybĂ­ parametr dict" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "Adresa nenĂ­ urÄena" #: nova/api/openstack/compute/contrib/floating_ips.py:225 #, fuzzy msgid "No nw_info cache associated with instance" msgstr "K instanci nejsou pÅ™idruženy Å¾Ă¡dnĂ© pevnĂ© ip" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "K instanci nejsou pÅ™idruženy Å¾Ă¡dnĂ© pevnĂ© ip" #: nova/api/openstack/compute/contrib/floating_ips.py:241 #, fuzzy msgid "Specified fixed address not assigned to instance" msgstr "K instanci nejsou pÅ™idruženy Å¾Ă¡dnĂ© pevnĂ© ip" #: nova/api/openstack/compute/contrib/floating_ips.py:255 #, fuzzy msgid "floating ip is already associated" msgstr "PlovoucĂ­ ip %(address)s je pÅ™idružena." #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "Nenalezeny Å¾Ă¡dnĂ© plovoucĂ­ ip" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 #, fuzzy msgid "Floating ip is not associated" msgstr "PlovoucĂ­ ip %(address)s nenĂ­ pÅ™idružena." #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "PlovoucĂ­ ip %(address)s nenĂ­ pÅ™idružena." #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "Nenalezeny Å¾Ă¡dnĂ© plovoucĂ­ ip" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "NeplatnĂ© nastavenĂ­ aktualizace: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "NeplatnĂ½ stav: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "NeplatnĂ½ stav: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, fuzzy, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "NastavovĂ¡nĂ­ hostitele %(host)s na %(state)s." #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "VolĂ¡nĂ­ pro zĂ­skĂ¡nĂ­ %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Aktualizace statistik hostitele" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "Describe-resource je funkce pouze pro sprĂ¡vce" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, fuzzy, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "Služba %(service_id)s nemohla bĂ½t nalezena." #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, fuzzy, python-format msgid "No hypervisor matching '%s' could be found." msgstr "Nalezeno nula souborů." #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "NeplatnĂ¡ metadata" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "ChybĂ­ argument 'networkId' pro addFixedIp" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "ChybĂ­ argument 'address' pro removeFixedIp" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "Nelze najĂ­t adresu %r" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "OdluÄovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "SĂ­Å¥ nenalezena" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "OdluÄovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "OdluÄovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "ZobrazovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "ZjišťovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "nastavovĂ¡nĂ­ hostitele sĂ­tÄ›" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "ZjišťovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, fuzzy, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "OdluÄovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 #, fuzzy msgid "Failed to update usages deallocating network." msgstr "Nelze aktualizovat svazek v db" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 #, fuzzy msgid "No CIDR requested" msgstr "Nelze najĂ­t požadovanĂ½ obraz" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "Zdroj nemohl bĂ½t nalezen." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 #, fuzzy msgid "Quota exceeded, too many networks." msgstr "PÅ™idĂ¡vĂ¡nĂ­ pravidla bezpeÄnostnĂ­ skupiny: %r" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "VytvoÅ™enĂ­ selhalo" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "PoÅ¡kozenĂ¡ vlasnost scheduler_hints" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "NenĂ­ dostatek parametrů k sestavenĂ­ platnĂ©ho pravidla." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Toto pravidlo již existuje ve skupinÄ› %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "ZobrazovĂ¡nĂ­ sĂ­tÄ› s id %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 #, fuzzy msgid "security group default rule not found" msgstr "BezpeÄnostnĂ­ skupina s pravidlem %(rule_id)s nenalezena." #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "Å patnĂ¡ pÅ™edpona pro to_global_ipv6: %s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "NenĂ­ zadĂ¡na bezpeÄnostnĂ­ skupina" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "NĂ¡zev bezpeÄnostnĂ­ skupiny nemůže bĂ½t prĂ¡zdnĂ©" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "zaÄĂ¡tek instance %r" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "zastavit instanci %r" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "svazek=%s" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "Smazat svazek s id: %s" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "instance %s: nenĂ­ zavedena" #: nova/api/openstack/compute/contrib/volumes.py:383 #, fuzzy, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "Å patnĂ½ formĂ¡t sĂ­tĂ­: uuid sĂ­tÄ› nenĂ­ ve sprĂ¡vnĂ©m formĂ¡tu (%s)" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "PÅ™ipojit svazek %(volume_id)s k instanci %(server_id)s na %(device)s" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "VytvoÅ™it snĂ­mek ze svazku %s" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "NaÄteno rozÅ¡Ă­Å™enĂ­: %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, fuzzy, python-format msgid "Ext version: %i" msgstr "Popis roz: %s" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, fuzzy, python-format msgid "Running _create_extension_point for %s" msgstr "VolĂ¡nĂ­ tovĂ¡rny rozÅ¡Ă­Å™enĂ­ %s" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "pro zprĂ¡vu nenĂ­ metoda: %s" #: nova/cells/messaging.py:436 #, fuzzy, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "Nelze naÄĂ­t rozÅ¡Ă­Å¾enĂ­ %(ext_factory)s: %(exc)s" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "pro zprĂ¡vu nenĂ­ metoda: %s" #: nova/cells/messaging.py:535 #, fuzzy, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, fuzzy, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "Obsazena '%(method)s' do '%(host)s' vĂ½poÄtu" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Svazek nenĂ­ nalezen v instanci %(instance_id)s." #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Svazek nenĂ­ nalezen v instanci %(instance_id)s." #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "VolajĂ­cĂ­mu je vrĂ¡cena vĂ½jimka: %s" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Svazek nenĂ­ nalezen v instanci %(instance_id)s." #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "Å ablona pro zavĂ¡dÄ›cĂ­ skript instance cloudpipe" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "SĂ­Å¥ kterou odeslat do nastavenĂ­ openvpn" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "SĂ­Å¥ovou masku kterou odeslat do nastavenĂ­ openvpn" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "SpouÅ¡tÄ›nĂ­ VPN pro %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Nelze vytvoÅ™it svazek" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, fuzzy, python-format msgid "deployment to node %s failed" msgstr "prvek nenĂ­ podÅ™azenĂ½" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "obdrženo: %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "Chyba DB: %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "Reset sĂ­tÄ›" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "poÄĂ¡teÄnĂ­ adresa" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 #, fuzzy msgid "No fixed IP found." msgstr "Bylo nalezeno nula pevnĂ½ch ip." #: nova/cmd/manage.py:358 #, fuzzy, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "K instanci nejsou pÅ™idruženy Å¾Ă¡dnĂ© pevnĂ© ip" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "PlovoucĂ­ ip %(address)s je pÅ™idružena." #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "id" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "IPv4" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "IPv6" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "poÄĂ¡teÄnĂ­ adresa" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "DNS1" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "DNS2" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "VlanID" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "projekt" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "uuid" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "SĂ­Å¥ nenalezena" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "zastavit instanci %r" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "Služba %(service_id)s nemohla bĂ½t nalezena." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "Služba %(service_id)s nemohla bĂ½t nalezena." #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "NeoÄekĂ¡vanĂ¡ chyba: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 #, fuzzy msgid "PROJECT" msgstr "projekt" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 #, fuzzy msgid "Unknown error" msgstr "neznĂ¡mĂ¡ chyby pÅ™ipojenĂ­ hosta" #: nova/cmd/manage.py:955 #, fuzzy, python-format msgid "%s created" msgstr "Tabulka |%s| nenĂ­ vytvoÅ™ena!" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "Chyba DB: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "typ je = %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "PÅ™ekroÄena kvĂ³ta instancĂ­. Nemůžete spustit dalÅ¡Ă­ instance tohoto typu." #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "" "PÅ™ekroÄena kvĂ³ta instancĂ­. Můžete spustit pouze %s dalÅ¡Ă­ch instancĂ­ " "tohoto typu." #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" "PÅ™ekroÄena kvĂ³ta pro %(pid)s, pokus o nastavenĂ­ %(num_metadata)s " "vlastnostĂ­ metadat" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 #, fuzzy msgid "Metadata property key greater than 255 characters" msgstr "BezpeÄnostnĂ­ skupina %s by nemÄ›la bĂ½t vÄ›tÅ¡Ă­ než 255 znaků." #: nova/compute/api.py:441 #, fuzzy msgid "Metadata property value greater than 255 characters" msgstr "BezpeÄnostnĂ­ skupina %s by nemÄ›la bĂ½t vÄ›tÅ¡Ă­ než 255 znaků." #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Nelze pÅ™ipojit svazek k instanci %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "ChystĂ¡ se spuÅ¡tÄ›nĂ­ %s instancĂ­..." #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "block_device_mapping %s" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "BUde spuÅ¡tÄ›no ukonÄovĂ¡nĂ­ insatncĂ­" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "BUde spuÅ¡tÄ›no ukonÄovĂ¡nĂ­ insatncĂ­" #: nova/compute/api.py:1595 #, fuzzy, python-format msgid "instance's host %s is down, deleting from database" msgstr "Å½Ă¡dnĂ½ hostitel pro instnaci %s, okamžitÄ› smazĂ¡na" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "Pokus o jemnĂ© smazĂ¡nĂ­ %s" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "Pokus o ukonÄenĂ­ %s" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "Pokus o zastavenĂ­ %s" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "Pokus o spuÅ¡tÄ›nĂ­ %s" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "HledĂ¡nĂ­ podle: %s" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "SpouÅ¡tÄ›nĂ­ snĂ­mku ve VM %s" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "flavor_id je None. PÅ™edpoklĂ¡dĂ¡n pÅ™esun." #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" "StarĂ¡ instance typu %(current_instance_type_name)s, novĂ¡ instance typu " "%(new_instance_type_name)s" #: nova/compute/api.py:2393 #, fuzzy, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "PÅ™ekroÄena kvĂ³ta pro %(pid)s, pokus o spuÅ¡tÄ›nĂ­ %(min_count)s instancĂ­" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Pokus o ukonÄenĂ­ %s" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "Dvojice klĂ­Äů musĂ­ bĂ½t dlouhĂ¡ 1 až 255 znaků." #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "BezpeÄnostnĂ­ skupina %s nenĂ­ Å™etÄ›zec nebo unicode" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "BezpeÄnostnĂ­ skupina %s nemůže bĂ½t prĂ¡zdnĂ¡." #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "BezpeÄnostnĂ­ skupina %s by nemÄ›la bĂ½t vÄ›tÅ¡Ă­ než 255 znaků." #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "VytvoÅ™it bezpeÄnostnĂ­ skupinu %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "BezpeÄnostnĂ­ skupina %s již existuje" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Nelze zniÄit vbd %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Nelze zniÄit vbd %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "Id bezpeÄnostnĂ­ skupiny by mÄ›lo bĂ½t celĂ© ÄĂ­slo" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Smazat bezpeÄnostnĂ­ skupinu %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "Pravidlo (%s) nenalezeno" #: nova/compute/api.py:3769 #, fuzzy msgid "Quota exceeded, too many security group rules." msgstr "PÅ™idĂ¡vĂ¡nĂ­ pravidla bezpeÄnostnĂ­ skupiny: %r" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Povolit pÅ™Ă­stup bezpeÄnostnĂ­ skupiny %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "ZruÅ¡it pÅ™Ă­stup bezpeÄnostnĂ­ skupiny %s" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "Id bezpeÄnostnĂ­ skupiny by mÄ›lo bĂ½t celĂ© ÄĂ­slo" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, fuzzy, python-format msgid "Aborting claim: %s" msgstr "Informace o sĂ­ti instance: |%s|" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "Chyba DB: %s" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "Instance typu %s nenĂ­ nalezena ke smazĂ¡nĂ­" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" "Nelze pÅ™esunout instanci (%(instance_id)s) na souÄasnĂ©ho hostitele " "(%(host)s)." #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Nelze restartovat instanci" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "SouÄasnĂ½ stav je %(drv_state)s, stav v DB je %(db_state)s." #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "RestartovĂ¡nĂ­ instance po restartu nova-compute." #: nova/compute/manager.py:932 #, fuzzy msgid "Hypervisor driver does not support resume guests" msgstr "OvladaÄ hypervizoru nepodporuje pravidla firewallu" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Nelze pozastavit instanci" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "OvladaÄ hypervizoru nepodporuje pravidla firewallu" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "NeoÄekĂ¡vanĂ½ kĂ³d stavu" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "Kontrola stavu" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "NavrĂ¡cenĂ­ sĂ­tÄ› pro instnac" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "Chyba DB: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "SpouÅ¡tÄ›nĂ­ instance..." #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "Nenalezeny Å¾Ă¡dnĂ© plovoucĂ­ ip" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "Informace o sĂ­ti instance: |%s|" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "Instance selhala nastavenĂ­ blokovĂ©ho zaÅ™Ă­zenĂ­" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "Instance nemohla bĂ½t spuÅ¡tÄ›na" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "NavrĂ¡cenĂ­ sĂ­tÄ› pro instnac" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "NavrĂ¡cenĂ­ sĂ­tÄ› pro instnac" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "%(action_str)s nstance" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "IgnorovĂ¡nĂ­ DiskNenalezen: %s" #: nova/compute/manager.py:2140 #, fuzzy, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "IgnorovĂ¡nĂ­ DiskNenalezen: %s" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "ukonÄovĂ¡nĂ­ bdm %s" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Znovu sestavovĂ¡nĂ­ instance %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Nelze zĂ­skat metadata pro ip: %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "VytvoÅ™it snĂ­mek ze svazku %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "RestartovĂ¡nĂ­ instance %s" #: nova/compute/manager.py:2613 #, fuzzy, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" "pokus o restartovĂ¡nĂ­ nespuÅ¡tÄ›nĂ© instance: %(instance_uuid)s (stav: " "%(state)s oÄekĂ¡vĂ¡no: %(running)s)" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "instance %s: znovu zavedena" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "instance %s: poÅ™izovĂ¡nĂ­ snĂ­mku" #: nova/compute/manager.py:2739 #, fuzzy, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" "pokus o vytvoÅ™enĂ­ snĂ­mku z nespuÅ¡tÄ›nĂ© instance: %(instance_uuid)s (stav: " "%(state)s oÄekĂ¡vĂ¡no: %(running)s)" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "Nalezeno %(num_images)d obrazů (stÅ™Ă­dĂ¡nĂ­: %(rotation)d)" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "StÅ™Ă­dĂ¡nĂ­ %d zĂ¡loh" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "MazĂ¡nĂ­ obrazu %s" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "Nelze nastavit heslo sprĂ¡vce. Instance %s nenĂ­ spuÅ¡tÄ›na" #: nova/compute/manager.py:2855 #, fuzzy msgid "Root password set" msgstr "Instance %s: NastavenĂ­ hesla root" #: nova/compute/manager.py:2860 #, fuzzy msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "set_admin_password nenĂ­ tĂ­mto ovladaÄem zavedeno" #: nova/compute/manager.py:2873 #, fuzzy, python-format msgid "set_admin_password failed: %s" msgstr "set_admin_password nenĂ­ tĂ­mto ovladaÄem zavedeno" #: nova/compute/manager.py:2880 #, fuzzy msgid "error setting admin password" msgstr "Chyba pÅ™i nastavovĂ¡nĂ­ hesla sprĂ¡vce" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Nelze pozastavit instanci" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "Chyba DB: %s" #: nova/compute/manager.py:2989 #, fuzzy msgid "Unrescuing" msgstr "instance %s: ruÅ¡enĂ­ zĂ¡chrany" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "NastavovĂ¡nĂ­ instance %(instance_uuid)s do stavu ERROR" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "Instance nemĂ¡ svazek." #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "cĂ­l stejnĂ½ jako zdroj!" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 #, fuzzy msgid "Pausing" msgstr "AktualizovĂ¡nĂ­!" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "instance %s: zĂ­skĂ¡vĂ¡nĂ­ diagnostik" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "Reset sĂ­tÄ›" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "instance %s: vklĂ¡dĂ¡nĂ­ informacĂ­ o sĂ­ti" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "network_info vklĂ¡dĂ¡: |%s|" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "ZĂ­skat vĂ½stup konzole pro instanci %s" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "instance %s: zĂ­skĂ¡vĂ¡nĂ­ konzole vnc" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "instance %s: zĂ­skĂ¡vĂ¡nĂ­ konzole vnc" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "PÅ™ipojovĂ¡nĂ­ svazku %(volume_id)s do %(mountpoint)s" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "OdpojovĂ¡nĂ­ svazku %(volume_id)s z bodu pÅ™ipojenĂ­ %(mp)s" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "OdpojovĂ¡nĂ­ svazku z neznĂ¡mĂ© instance %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "PÅ™ipojovĂ¡nĂ­ svazku %(volume_id)s do %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, fuzzy, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 #, fuzzy msgid "_post_live_migration() is started.." msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" "Můžete vidÄ›t tuto chybu \"libvirt: QEMU error: Domain not found: no " "domain with matching name.\" Tuto chybu můžete bezpeÄnÄ› ignorovat." #: nova/compute/manager.py:4654 #, fuzzy msgid "Post operation of migration started" msgstr "SpuÅ¡tÄ›na operace po migraci" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" "Nalezeno %(migration_count)d nepotvrzenĂ½ch pÅ™esunů starÅ¡Ă­ch než " "%(confirm_window)d vteÅ™in" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, fuzzy, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "VypĂ­nĂ¡nĂ­ VM pro instanci %(instance_uuid)s" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 #, fuzzy msgid "In ERROR state" msgstr "Uzel je v neznĂ¡mĂ©m chybovĂ©m stavu." #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "Aktualizace mezipamÄ›ti využitĂ­ Å¡Ă­Å™ky pĂ¡sma" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Aktualizace mezipamÄ›ti využitĂ­ Å¡Ă­Å™ky pĂ¡sma" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" "Nalezeno %(num_db_instances)s v databĂ¡zi a %(num_vm_instances)s na " "hypervizoru." #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "Instance nenĂ­ zapnuta" #: nova/compute/manager.py:5374 #, fuzzy msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "FLAGS.reclaim_instance_interval <= 0, pÅ™ekskovĂ¡nĂ­..." #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "Znovu zĂ­skĂ¡vĂ¡nĂ­ smazanĂ© instance" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "ZaznamovĂ¡nĂ­ ovladaÄe svazku: %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, fuzzy, python-format msgid "No service record for host %s" msgstr "Å½Ă¡dnĂ¡ služba pro ID vĂ½poÄtu %s" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "NastavovĂ¡nĂ­ instance %(instance_uuid)s do stavu ERROR" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, fuzzy, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "Pro %s vytvoÅ™en zĂ¡znam compute_service " #: nova/compute/resource_tracker.py:378 #, fuzzy, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "ZĂ¡znam compute_service aktualizovĂ¡n pro %s " #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "VytvoÅ™it dvojici klĂ­Äů %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, fuzzy, python-format msgid "Updating from migration %s" msgstr "Instance %s: SpouÅ¡tÄ›nĂ­ dokonÄenĂ­ pÅ™esunu" #: nova/compute/resource_tracker.py:545 #, fuzzy msgid "Instance not resizing, skipping migration." msgstr "VM nenĂ­ pÅ™Ă­tomno, pÅ™eskakovĂ¡nĂ­ niÄenĂ­..." #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "NezadĂ¡n Å¾Ă¡dnĂ½ poÄĂ­taÄovĂ½ hostitel" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "Nelze najĂ­t hostitele pro instanci %s" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 #, fuzzy msgid "Invalid block_device_mapping_destroy invocation" msgstr "block_device_mapping %s" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, fuzzy, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" "Nelze pÅ™esunout %(instance_id)s do %(dest)s: Nedostatek pamÄ›ti " "(hostitel:%(avail)s <= instance:%(mem_inst)s)" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "PÅ™idĂ¡vĂ¡nĂ­ konzole" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "Pokus o odstranÄ›nĂ­ neexistujĂ­cĂ­ konzole %(console_id)s." #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "OdstraňovĂ¡nĂ­ konzole %(console_id)s." #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "NeplatnĂ½ svazek" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "Znovu sestavovĂ¡nĂ­ nastavenĂ­ xvp" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "PÅ™epsĂ¡no %s" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "ZastavovĂ¡nĂ­ xvp" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "SpouÅ¡tÄ›nĂ­ xvp" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "Chyba pÅ™i spouÅ¡tÄ›nĂ­ xvp: %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "RestartovĂ¡nĂ­ xvp" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvp nenĂ­ spuÅ¡tÄ›no" #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "Server nemůže pokraÄovat" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Nelze restartovat instanci" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Nelze restartovat instanci" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "NerozpoznanĂ¡ hodnota read_deleted '%s'" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "instance %s: zachrĂ¡nÄ›na" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "instance %s: zachrĂ¡nÄ›na" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "instance %s: zachrĂ¡nÄ›na" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "instance %s: zachrĂ¡nÄ›na" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "instance %s: zachrĂ¡nÄ›na" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "verze by mÄ›la bĂ½t celĂ© ÄĂ­slo" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 #, fuzzy msgid "Unsupported id columns type" msgstr "NepodporovanĂ½ Content-Type" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "Nelze stĂ¡hnout %(image_location)s do %(image_path)s" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "Nelze deÅ¡ifrovat %(image_location)s do %(image_path)s" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "Nelze rozbalit %(image_location)s do %(image_path)s" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "Nelze nahrĂ¡t %(image_location)s do %(image_path)s" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "Nelze deÅ¡ifrovat soukromĂ½ klĂ­Ä: %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "Nelze deÅ¡ifrovat vektor zavedenĂ­: %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "Nelze deÅ¡ifrovat soubor obrazu %(image_file)s: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "NebezpeÄnĂ© nĂ¡zvy souboru v obrazu" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "Å patnĂ¡ mac adresa pro to_global_ipv6: %s" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "Å patnĂ¡ pÅ™edpona pro to_global_ipv6: %s" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "Å patnĂ© id projektu pro to_global_ipv6: %s" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Nelze restartovat instanci" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "PÅ™idÄ›lit adresu %(public_ip)s k instanci %(instance_id)s" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "ZaznamovĂ¡nĂ­ ovladaÄe svazku: %s" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "Adresa |%(address)s| nenĂ­ pÅ™idÄ›lena" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "Adresa |%(address)s| nenĂ­ pÅ™idÄ›lena pro VĂ¡Å¡ projekt |%(project)s|" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "PevnĂ¡ IP adresa (%(address)s) je již pouÅ¾Ă­vĂ¡na." #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" "Nesoulad databĂ¡ze: DomĂ©na DNS |%s| je registrovĂ¡na v Nova db, ale nenĂ­ " "viditelnĂ¡ plovoucĂ­mu ovladaÄi DNS ani instanÄnĂ­mu. Bude ignorovĂ¡na." #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "DomĂ©na |%(domain)s| již existuje, zmÄ›na zĂ³ny na |%(av_zone)s|." #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "DomĂ©na |%(domain)s| již existuje, zmÄ›na projektu na |%(project)s|." #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "Tento ovladaÄ podporuje pouze zĂ¡znamy typu 'a'." #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "Pokus o odstranÄ›nĂ­ Å™etÄ›zu %s, kterĂ½ neexistuje" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "NeznĂ¡mĂ½ Å™etÄ›z: %r" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, python-format msgid "" "Tried to remove rule that was not there: %(chain)r %(rule)r %(wrap)r " "%(top)r" msgstr "" "Pokus o odstranÄ›nĂ­ neexistujĂ­cĂ­ho pravidla: %(chain)r %(rule)r %(wrap)r " "%(top)r" #: nova/network/linux_net.py:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "IPTablesManager.použitĂ­ ĂºspěšnÄ› dokonÄeno" #: nova/network/linux_net.py:713 #, fuzzy, python-format msgid "arping error for ip %s" msgstr "chyba v httplib v %s: " #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d je starĂ½, znovu spouÅ¡tÄ›nĂ­ dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "Hupping dnsmasq vrhl vĂ½jimku %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d je starĂ½, znovu spouÅ¡tÄ›nĂ­ dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "ukonÄenĂ­ radvd vrhlo %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d je starĂ½, znovu spouÅ¡tÄ›nĂ­ radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "NeplatnĂ½ stav: '%s'" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "SpouÅ¡tÄ›nĂ­ rozhranĂ­ VLAN %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "ZajišťovĂ¡nĂ­ mostu %s" #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "ZajišťovĂ¡nĂ­ vlan %(vlan)s a mostu %(bridge)s" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "Nelze pozastavit instanci" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "ZajišťovĂ¡nĂ­ mostu %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "ZajišťovĂ¡nĂ­ mostu %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "%s odlouÄenĂ½ch zastaralĂ½ch ip" #: nova/network/manager.py:373 msgid "setting network host" msgstr "nastavovĂ¡nĂ­ hostitele sĂ­tÄ›" #: nova/network/manager.py:493 #, fuzzy msgid "network allocations" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 #, fuzzy msgid "network deallocation for instance" msgstr "oddÄ›lenĂ­ sĂ­tÄ› pro instanci |%s|" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, fuzzy, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" "dns zĂ³na instance je %(domain)s|, kterĂ¡ je v zĂ³nÄ› dostupnosti |%(zone)s|." " Instance |%(instance)s| je v zĂ³nÄ› |%(zone2)s|. Nebude vytvoÅ™en Å¾Ă¡dnĂ½ " "zĂ¡znam DNS." #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 #, fuzzy msgid "Failed to update usages deallocating fixed IP" msgstr "Nelze aktualizovat svazek v db" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "VypůjÄenĂ¡ IP %s nenĂ­ pÅ™idÄ›lena" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "VypůjÄena IP |%s|, kterĂ¡ nenĂ­ pÅ™idÄ›lena" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "UvolnÄ›na IP %s, kterĂ¡ nenĂ­ pÅ™idÄ›lena" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "UvolnÄ›na IP %s, kterĂ¡ nebyla vypůjÄena" #: nova/network/manager.py:1028 #, fuzzy, python-format msgid "%s must be an integer" msgstr "parametr offset musĂ­ bĂ½t celĂ© ÄĂ­slo" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "cidr je již pouÅ¾Ă­vĂ¡no" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" "požadovanĂ½ cidr (%(cidr)s) je v konfliktu s existujĂ­cĂ­ supersĂ­tĂ­ " "(%(super)s)" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" "požadovanĂ½ cidr (%(cidr)s) je v konfliktu s existujĂ­cĂ­m menÅ¡Ă­m cidr " "(%(smaller)s)" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "SĂ­Å¥ musĂ­ bĂ½t odlouÄena od projektu %s pÅ™ed smazĂ¡nĂ­m" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "Suma mezi poÄtem sĂ­tĂ­ a spuÅ¡tÄ›nĂ­ vlan nemůže bĂ½t vÄ›tÅ¡Ă­ než 4094" #: nova/network/manager.py:1858 #, fuzzy, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" "Rozsah sĂ­tĂ­ nenĂ­ dostateÄnÄ› velkĂ½, aby se veÅ¡lo %(num_networks)s. " "Velikost sĂ­tÄ› je %(network_size)s" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "NeplatnĂ½ svazek" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "Tento ovladaÄ podporuje pouze typ 'a'" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "_smazat: %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, fuzzy, python-format msgid "allocate_for_instance() for %s" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, fuzzy, python-format msgid "deallocate_for_instance() for %s" msgstr "oddÄ›lenĂ­ sĂ­tÄ› pro instanci |%s|" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, fuzzy, python-format msgid "get_instance_nw_info() for %s" msgstr "Informace o sĂ­ti instance: |%s|" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, fuzzy, python-format msgid "validate_networks() for %s" msgstr "Å patnĂ½ formĂ¡t sĂ­tÄ›" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "PlovoucĂ­ ip nenĂ­ nalezena pro id %(id)s." #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Id bezpeÄnostnĂ­ skupiny by mÄ›lo bĂ½t celĂ© ÄĂ­slo" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, fuzzy, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" "BezpeÄnostnĂ­ skupina %(security_group_id)s nenĂ­ nalezena v projektu " "%(project_id)s." #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Toto pravidlo již existuje ve skupinÄ› %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "Chyba pÅ™i nastavovĂ¡nĂ­ hesla sprĂ¡vce" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "omezenĂ­ cizĂ­ho klĂ­Äe nemohlo bĂ½t vynechĂ¡no" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "NeoÄekĂ¡vanĂ¡ chyba: %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "zaÅ™Ă­zenĂ­ zĂ¡znamu systĂ©mu musĂ­ bĂ½t jedno z: %s" #: nova/openstack/common/log.py:652 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "TÅ™Ă­da %(fullname)s je zastaralĂ¡: %(msg)s" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 #, fuzzy msgid "in fixed duration looping call" msgstr "v opakujĂ­cĂ­m volĂ¡nĂ­" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 #, fuzzy msgid "in dynamic looping call" msgstr "v opakujĂ­cĂ­m volĂ¡nĂ­" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "SpuÅ¡tÄ›nĂ­ pravidelnĂ© Ăºlohy %(full_task_name)s" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "Chyba pÅ™i %(full_task_name)s: %(e)s" #: nova/openstack/common/policy.py:394 #, fuzzy, python-format msgid "Failed to understand rule %(rule)s" msgstr "Nelze vložit soubor: %(resp)r" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, fuzzy, python-format msgid "Failed to understand rule %(rule)r" msgstr "Nelze vložit soubor: %(resp)r" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "ZĂ­skĂ¡ny neznĂ¡mĂ© argumenty klĂ­ÄovĂ©ho slova pro utils.execute: %r" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "SpouÅ¡tÄ›nĂ­ pÅ™Ă­kazu (podproces): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "VĂ½sledek byl %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r selhalo. OpakovĂ¡nĂ­." #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "SpouÅ¡tÄ›nĂ­ pÅ™Ă­kazu (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "ProstÅ™edĂ­ nenĂ­ podporovĂ¡no pÅ™es SSH" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "process_input nenĂ­ podporovĂ¡n pÅ™es SSH" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "ĂplnĂ¡ sada PŘĂZNAKÅ®:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, fuzzy, python-format msgid "Caught %s, exiting" msgstr "snĂ­mek %s: mazĂ¡nĂ­" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "poÄĂ¡teÄnĂ­ adresa" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, fuzzy, python-format msgid "Unknown byte multiplier: %s" msgstr "NeznĂ¡mĂ½ zĂ¡kladnĂ­ soubor: %s" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "BÄ›Å¾Ă­ odpovĂ­dajĂ­cĂ­ služba?" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "Nelze najĂ­t dalÅ¡Ă­ vĂ½poÄet" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, fuzzy, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "Pokus o sestavenĂ­ %(num_instances)d instancĂ­" #: nova/scheduler/filter_scheduler.py:83 #, fuzzy, python-format msgid "Request Spec: %s" msgstr "Požadavek: %s" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Svazek nenĂ­ nalezen v instanci %(instance_id)s." #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "FiltrovĂ¡no %(hosts)s" #: nova/scheduler/filter_scheduler.py:337 #, fuzzy, python-format msgid "Weighed %(hosts)s" msgstr "FiltrovĂ¡no %(hosts)s" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "Å½Ă¡dnĂ¡ služba pro ID vĂ½poÄtu %s" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "Nelze vyhodnotit soubor voleb plĂ¡novaÄe %(filename)s: '%(e)s'" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "VCPU nenastaveny; pÅ™edpoklĂ¡dĂ¡no poÅ¡kozenĂ­ sbĂ­rky CPU" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Obnoveno pÅ™ipojenĂ­ modelovĂ©ho serveru!" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "modelovĂ½ server je nedostupnĂ½" #: nova/servicegroup/drivers/mc.py:44 #, fuzzy msgid "memcached_servers not defined" msgstr "NĂ¡zev serveru nenĂ­ urÄen" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "Pokus o vytvoÅ™enĂ­ instanci jedinĂ¡Äka" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "PÅ™edstĂ­rĂ¡nĂ­ spuÅ¡tÄ›nĂ­ pÅ™Ă­kazu (subprocess): %s" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "PÅ™edstĂ­ranĂ½ pÅ™Ă­kaz odpovĂ­dĂ¡ %s" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "PÅ™edstĂ­ranĂ½ pÅ™Ă­kaz způsobil vĂ½jimku %s" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "OdpovÄ›Ä na pÅ™edstĂ­ranĂ½ pÅ™Ă­kaz je stdout='%(stdout)s' stderr='%(stderr)s'" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "stav musĂ­ bĂ½t dostupnĂ½" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "již pÅ™ipojeno" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "již odpojeno" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 #, fuzzy msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "PÅ™ekroÄena kvĂ³ta pro %(pid)s, pokus o spuÅ¡tÄ›nĂ­ %(min_count)s instancĂ­" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "SpouÅ¡tÄ›nĂ­ instancĂ­: %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "Po ukonÄenĂ­ instancĂ­: %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "VnitÅ™nĂ­ chyba" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "Po vynucenĂ©m ukonÄenĂ­ instancĂ­: %s" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 #, fuzzy msgid "spawn error" msgstr "neznĂ¡mĂ¡ chyby pÅ™ipojenĂ­ hosta" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "Data pĂ¡ru klĂ­Äů jsou neplatnĂ¡" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" "NĂ¡sledujĂ­cĂ­m pÅ™esunům chybĂ­ snĂ­Å¾enĂ­ na niÅ¾Å¡Ă­ verzi:\n" "\t%s" #: nova/tests/integrated/api_samples_test_base.py:116 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "Adresa |%(address)s| nenĂ­ pÅ™idÄ›lena" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "Adresa |%(address)s| nenĂ­ pÅ™idÄ›lena" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "konfigurace: %s" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "KĂ³d stavu: %(_status)s\n" "TÄ›lo: %(_body)s" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "Chyba ověřenĂ­" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "Chyba oprĂ¡vnÄ›nĂ­" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "Položka nenalezena" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "ProvĂ¡dÄ›nĂ­ %(method)s na %(relative_url)s" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "TÄ›lo: %s" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => kĂ³d %(http_status)s" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => kĂ³d %(http_status)s" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "NeoÄekĂ¡vanĂ½ kĂ³d stavu" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "DekĂ³dovĂ¡nĂ­ JSON: %s" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "znaÄka [%s] nenalezena" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "VytvĂ¡Å™enĂ­ souborů v %s pro simulaci agenta hosta" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "OdstraňovĂ¡nĂ­ souborů simulovanĂ©ho agenta hosta v %s" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "ZavĂ¡dÄ›nĂ­ pomocĂ­ svazku %(volume_id)s ve %(mountpoint)s" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, fuzzy, python-format msgid "Loading compute driver '%s'" msgstr "ZaznamovĂ¡nĂ­ ovladaÄe svazku: %s" #: nova/virt/driver.py:1302 #, fuzzy msgid "Unable to load the virtualization driver" msgstr "Nelze naÄĂ­st ovladaÄ virtualizace: %s" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "Pokus o odfiltrovĂ¡nĂ­ instance, kterĂ¡ nenĂ­ filtrovĂ¡na" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "Filtry pÅ™idĂ¡ny do instance %s" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "Pravidla firewallu poskytovatele obnovena" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "PÅ™idĂ¡vĂ¡nĂ­ pravidla bezpeÄnostnĂ­ skupiny: %r" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "PÅ™idĂ¡vĂ¡nĂ­ pravidla poskytovatele: %s" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "zpracovĂ¡nĂ­ 'qemu-img info' selhalo." #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "fmt=%(fmt)s zĂ¡lohovĂ¡no: %(backing_file)s" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "PÅ™evedeno na prostĂ©, ale formĂ¡t je nynĂ­ %s" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ seznamu instancĂ­" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, fuzzy, python-format msgid "pid file %s does not contain any pid" msgstr "href %s neobsahuje verzi" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "Adresa nenĂ­ urÄena" #: nova/virt/baremetal/ipmi.py:117 #, fuzzy msgid "User not supplied to IPMI" msgstr "pozastavenĂ­ nenĂ­ v vmwareapi popdorovĂ¡no" #: nova/virt/baremetal/ipmi.py:120 #, fuzzy msgid "Password not supplied to IPMI" msgstr "pozastavenĂ­ nenĂ­ v vmwareapi popdorovĂ¡no" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "OdpovÄ›Ä na pÅ™edstĂ­ranĂ½ pÅ™Ă­kaz je stdout='%(stdout)s' stderr='%(stderr)s'" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "PÅ™idÄ›lenĂ­ plovoucĂ­ IP pro |%s|" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "StahovĂ¡nĂ­ obrazu %s ze serveru obrazu glance" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "VklĂ¡dĂ¡nĂ­ %(injection)s do obrazu %(img_id)s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "ZĂ­skat vĂ½stup konzole pro instanci %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, fuzzy, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "PÅ™i ÄekĂ¡nĂ­ na odpovÄ›Ä RPC vyprÅ¡el ÄasovĂ½ limit." #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "pÅ™idÄ›lovĂ¡nĂ­ sĂ­tÄ› pro instanci %s" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "ZĂ­skat vĂ½stup konzole pro instanci %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "Uzel je v neznĂ¡mĂ©m chybovĂ©m stavu." #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Nelze najĂ­t hostitele pro instanci %s" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "Adresa nenĂ­ urÄena" #: nova/virt/baremetal/tilera_pdu.py:89 #, fuzzy msgid "User not supplied to PDU" msgstr "pozastavenĂ­ nenĂ­ v vmwareapi popdorovĂ¡no" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 #, fuzzy msgid "PDU failed" msgstr "VytvoÅ™enĂ­ selhalo" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "IgnorovĂ¡nĂ­ chyby pÅ™i vklĂ¡dĂ¡nĂ­ dat do obrazu %(img_id)s (%(e)s)" #: nova/virt/baremetal/utils.py:54 #, fuzzy, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "Nelze naÄĂ­st rozÅ¡Ă­Å™enĂ­ %(classpath)s: %(exc)s" #: nova/virt/baremetal/utils.py:63 #, fuzzy, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "Nelze odstranit %(base_file)s, chyba byla %(error)s" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "Nelze zjistit nĂ¡zev zavadÄ›Äe iscsi" #: nova/virt/baremetal/volume_driver.py:234 #, fuzzy, python-format msgid "No fixed PXE IP is associated to %s" msgstr "K instanci nejsou pÅ™idruženy Å¾Ă¡dnĂ© pevnĂ© ip" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "nenalezeny Å¾Ă¡dnĂ© oddĂ­ly" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "VytvoÅ™enĂ­ virtuĂ¡lnĂ­ho rozhranĂ­ selhalo" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, fuzzy, python-format msgid "Baremetal virtual interface %s not found" msgstr "nenalezeny Å¾Ă¡dnĂ© oddĂ­ly" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "obraz již je pÅ™ipojen" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, fuzzy, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "IgnorovĂ¡nĂ­ chyby pÅ™i vklĂ¡dĂ¡nĂ­ dat do obrazu %(img_id)s (%(e)s)" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Uvolnit adresu %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "Å½Ă¡dnĂ¡ volnĂ¡ zaÅ™Ă­zenĂ­ nbd" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "Nelze pÅ™ipojit souborovĂ½ systĂ©m: %s" #: nova/virt/disk/api.py:451 #, fuzzy, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "IgnorovĂ¡nĂ­ chyby pÅ™i vklĂ¡dĂ¡nĂ­ dat do obrazu %(img_id)s (%(e)s)" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, fuzzy, python-format msgid "Map dev %s" msgstr "Imprtovat klĂ­Ä %s" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, fuzzy, python-format msgid "partition %s not found" msgstr "nenalezeny Å¾Ă¡dnĂ© oddĂ­ly" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "Nelze mapovat oddĂ­ly: %s" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "Nelze pÅ™ipojit souborovĂ½ systĂ©m: %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "Nelze aktualizovat svazek v db" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "Nelze pÅ™ipojit obraz do zpÄ›tnĂ© smyÄky: %s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "chyba qemu-nbd: %s" #: nova/virt/disk/mount/loop.py:39 #, fuzzy, python-format msgid "Got loop device %s" msgstr "Nenalezeno Å¾Ă¡dnĂ© PIF pro zaÅ™Ă­zenĂ­ %s" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "Å½Ă¡dnĂ¡ volnĂ¡ zaÅ™Ă­zenĂ­ nbd" #: nova/virt/disk/mount/nbd.py:64 #, fuzzy msgid "nbd module not loaded" msgstr "nbd nedostupnĂ©: modul nenaÄten" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "nbd nedostupnĂ©: modul nenaÄten" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "chyba qemu-nbd: %s" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "chyba qemu-nbd: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "zaÅ™Ă­zenĂ­ nbd %s se nezobrazilo" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 #, fuzzy msgid "Trying to import guestfs" msgstr "Nelze importovat suds." #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, fuzzy, python-format msgid "Inspecting guest OS image %s" msgstr "MazĂ¡nĂ­ obrazu %s" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "PlovoucĂ­ ip nenĂ­ nalezena pro id %(id)s." #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "Nelze pÅ™ipojit souborovĂ½ systĂ©m: %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "SpouÅ¡tÄ›nĂ­ instance..." #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Nelze nalĂ©zt svazek %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Nelze vložit soubor: %(resp)r" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, fuzzy, python-format msgid "File path %s not valid" msgstr "VklĂ¡dĂ¡nĂ­ cesty souboru: '%s'" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Nelze aktualizovat agenta: %(resp)r" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Nelze naÄĂ­st rozÅ¡Ă­Å™enĂ­ %(classpath)s: %(exc)s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Nelze naplĂ¡novat_%(method)s: %(ex)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, fuzzy, python-format msgid "Windows version: %s " msgstr "Verze agenta instance: %s" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "Aktualizace statistik hostitele" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "ZĂ­skat vĂ½stup konzole pro instanci %s" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Uvolnit adresu %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 #, fuzzy msgid "live_migration called" msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 #, fuzzy msgid "pre_live_migration called" msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/virt/hyperv/livemigrationops.py:97 #, fuzzy msgid "post_live_migration_at_destination called" msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/virt/hyperv/livemigrationops.py:105 #, fuzzy msgid "check_can_live_migrate_destination called" msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/virt/hyperv/livemigrationops.py:111 #, fuzzy msgid "check_can_live_migrate_destination_cleanup called" msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/virt/hyperv/livemigrationops.py:116 #, fuzzy msgid "check_can_live_migrate_source called" msgstr "zahĂ¡jen pÅ™esun po spuÅ¡tÄ›nĂ­." #: nova/virt/hyperv/livemigrationutils.py:43 #, fuzzy, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "StÅ™Ă­dĂ¡nĂ­ nenĂ­ povoleno pro snĂ­mky" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "PÅ™idÄ›lenĂ­ plovoucĂ­ IP pro |%s|" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "PÅ™esun pÅ™ed spuÅ¡tÄ›nĂ­m selhal na %(dest)s" #: nova/virt/hyperv/livemigrationutils.py:61 #, fuzzy msgid "Live migration is not enabled on this host" msgstr "StÅ™Ă­dĂ¡nĂ­ nenĂ­ povoleno pro snĂ­mky" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "Položka nenalezena" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, fuzzy, python-format msgid "Duplicate VM name found: %s" msgstr "KvantovĂ½ objekt nenalezen: %s" #: nova/virt/hyperv/livemigrationutils.py:77 #, fuzzy, python-format msgid "Destroying existing remote planned VM: %s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "PÅ™idÄ›lenĂ­ plovoucĂ­ IP pro |%s|" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Aktualizace agenta na %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 #, fuzzy msgid "migrate_disk_and_power_off called" msgstr "Instance %s: SpouÅ¡tÄ›nĂ­ pÅ™esunu disku a vypnutĂ­" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 #, fuzzy msgid "finish_revert_migration called" msgstr "Instance %s: SpuÅ¡tÄ›nĂ­ dokoÄenĂ­ vrĂ¡cenĂ­ pÅ™esunu" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 #, fuzzy msgid "finish_migration called" msgstr "Instance %s: SpouÅ¡tÄ›nĂ­ dokonÄenĂ­ pÅ™esunu" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, fuzzy, python-format msgid "vswitch \"%s\" not found" msgstr "nenalezeny Å¾Ă¡dnĂ© oddĂ­ly" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "VytvĂ¡Å™enĂ­ adresĂ¡Å™e s cestou %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "VytvĂ¡Å™enĂ­ adresĂ¡Å™e s cestou %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "VytvĂ¡Å™enĂ­ snĂ­mku instance VM %s " #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "PlovoucĂ­ ip nenĂ­ nalezena pro id %(id)s." #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "SpouÅ¡tÄ›nĂ­ snĂ­mku ve VM %s" #: nova/virt/hyperv/snapshotops.py:119 #, fuzzy, python-format msgid "Failed to remove snapshot for VM %s" msgstr "Nelze odstranit kontejner: %s" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "VytvĂ¡Å™enĂ­ snĂ­mku instance VM %s " #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ seznamu instancĂ­" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "SpouÅ¡tÄ›nĂ­ instance..." #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, fuzzy, python-format msgid "Creating config drive at %(path)s" msgstr "VklĂ¡dĂ¡nĂ­ cesty souboru: '%s'" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "VklĂ¡dĂ¡nĂ­ cesty souboru: '%s'" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Nelze zniÄit vbd %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "zastavit instanci %r" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "zastavit instanci %r" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Nelze pozastavit instanci" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "zastavit instanci %r" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "Instance VM %s zapnuta" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "Instance VM %s zapnuta" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Nelze zĂ­skat metadata pro ip: %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "MazĂ¡nĂ­ svazku s ID: %s " #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "PlovoucĂ­ ip nenĂ­ nalezena pro id %(id)s." #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "PÅ™ipojeni svazku: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Nelze pÅ™ipojit svazek k instanci %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "PÅ™ipojeni svazku: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "VytvĂ¡Å™enĂ­ snĂ­mku instance VM %s " #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, fuzzy, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "Nelze najĂ­t hostitele pro instanci %s" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, fuzzy, python-format msgid "Unable to determine disk bus for '%s'" msgstr "Neůze najĂ­t vbd pro vdi %s" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "PÅ™ipojovĂ¡nĂ­ k libvirt: %s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "PÅ™ipojenĂ­ k libvirt poÅ¡kozeno" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "PÅ™ipojovĂ¡nĂ­ k libvirt: %s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "Chyba od libvirt bÄ›hem niÄenĂ­. KĂ³d=%(errcode)s Chyba=%(e)s" #: nova/virt/libvirt/driver.py:919 #, fuzzy msgid "During wait destroy, instance disappeared." msgstr "PÅ™i spuÅ¡tÄ›nĂ­ wait zmizelo %s." #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "Instance ĂºspěšnÄ› zniÄena." #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Instance budou zastaveny" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "Chyba od libvirt bÄ›hem ruÅ¡enĂ­ urÄenĂ­. KĂ³d=%(errcode)s Chyba=%(e)s" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, fuzzy, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "Chyba od libvirt bÄ›hem ruÅ¡enĂ­ urÄenĂ­. KĂ³d=%(errcode)s Chyba=%(e)s" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 #, fuzzy msgid "Could not determine fibre channel world wide node names" msgstr "Nelze zjistit nĂ¡zev zavadÄ›Äe iscsi" #: nova/virt/libvirt/driver.py:1144 #, fuzzy msgid "Could not determine fibre channel world wide port names" msgstr "Nelze zjistit nĂ¡zev zavadÄ›Äe iscsi" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 #, fuzzy msgid "During detach_volume, instance disappeared." msgstr "PÅ™i spuÅ¡tÄ›nĂ­ wait zmizelo %s." #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "Å¹Ă¡dnĂ© sĂ­tÄ› nejsou urÄeny." #: nova/virt/libvirt/driver.py:1426 #, fuzzy msgid "During detach_interface, instance disappeared." msgstr "PÅ™i spuÅ¡tÄ›nĂ­ wait zmizelo %s." #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "Å¹Ă¡dnĂ© sĂ­tÄ› nejsou urÄeny." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "Instance ĂºspěšnÄ› restartovĂ¡na." #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 #, fuzzy msgid "Instance shutdown successfully." msgstr "Instance ĂºspěšnÄ› vytvoÅ™ena." #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "Instance ĂºspěšnÄ› restartovĂ¡na." #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "Instance je spuÅ¡tÄ›na" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "Instance ĂºspěšnÄ› vytvoÅ™ena." #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "data: %(data)r, fpath: %(fpath)r" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "Uživatel nemĂ¡ sprĂ¡vcovskĂ¡ oprĂ¡vnÄ›nĂ­" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, fuzzy, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "IgnorovĂ¡nĂ­ chyby pÅ™i vklĂ¡dĂ¡nĂ­ dat do obrazu %(img_id)s (%(e)s)" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "VytvĂ¡Å™enĂ­ obrazu" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, python-format msgid "" "Error from libvirt while looking up %(instance_name)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" "Chyba od libvirt pÅ™i hledĂ¡nĂ­ %(instance_name)s: [KĂ³d chyby " "%(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 #, fuzzy msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" "Nelze zĂ­skat poÄet cpu, protože tato funkce nenĂ­ na tĂ©to platformÄ› " "zavedena. Tuto chybu lze prozatĂ­m bezpeÄnÄ› ignorovat." #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "verze libvirt je pÅ™Ă­liÅ¡ starĂ¡ (nepodporuje getVersion)" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ velikosto brazu %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, fuzzy, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" "VytvĂ¡Å™enĂ­ doÄasnĂ©ho souboru %s pro informovĂ¡nĂ­ ostatnĂ­ch poÄĂ­taÄovĂ½ch " "uzlů, že by se mÄ›li pÅ™ipojit ke stejnĂ©mu ĂºložiÅ¡ti." #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "PÅ™esunutĂ­ bloku nemůže bĂ½t použito ve sdĂ­lenĂ©m ĂºložiÅ¡ti." #: nova/virt/libvirt/driver.py:4229 #, fuzzy msgid "Live migration can not be used without shared storage." msgstr "PÅ™esunutĂ­ bloku nemůže bĂ½t použito ve sdĂ­lenĂ©m ĂºložiÅ¡ti." #: nova/virt/libvirt/driver.py:4273 #, fuzzy, 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 "" "Nelze pÅ™esunout %(instance_id)s do %(dest)s: Nedostatek disku " "(hostitel:%(available)s <= instance:%(necessary)s)" #: nova/virt/libvirt/driver.py:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" "SpuÅ¡tÄ›nĂ¡ instance mĂ¡ info o CPU:\n" "%s" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" "CPU nemĂ¡ kompatibilitu.\n" "\n" "%(ret)s\n" "\n" "ProhlĂ©dnÄ›te si %(u)s" #: nova/virt/libvirt/driver.py:4329 #, python-format msgid "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." msgstr "" "VytvĂ¡Å™enĂ­ doÄasnĂ©ho souboru %s pro informovĂ¡nĂ­ ostatnĂ­ch poÄĂ­taÄovĂ½ch " "uzlů, že by se mÄ›li pÅ™ipojit ke stejnĂ©mu ĂºložiÅ¡ti." #: nova/virt/libvirt/driver.py:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, fuzzy, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" "plug_vifs() selhalo %(cnt)d.opakovĂ¡nĂ­ až na %(max_retry)d pro " "%(hostname)s." #: nova/virt/libvirt/driver.py:4697 #, fuzzy, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" "Chyba od libvirt pÅ™i hledĂ¡nĂ­ %(instance_name)s: [KĂ³d chyby " "%(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 #, fuzzy msgid "Starting migrate_disk_and_power_off" msgstr "Instance %s: SpouÅ¡tÄ›nĂ­ pÅ™esunu disku a vypnutĂ­" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 #, fuzzy msgid "Instance running successfully." msgstr "Instance %s ĂºspěšnÄ› bÄ›Å¾Ă­." #: nova/virt/libvirt/driver.py:4941 #, fuzzy msgid "Starting finish_migration" msgstr "Instance %s: SpouÅ¡tÄ›nĂ­ dokonÄenĂ­ pÅ™esunu" #: nova/virt/libvirt/driver.py:5011 #, fuzzy msgid "Starting finish_revert_migration" msgstr "Instance %s: SpuÅ¡tÄ›nĂ­ dokoÄenĂ­ vrĂ¡cenĂ­ pÅ™esunu" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, fuzzy, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "Nelze naplĂ¡novat_%(method)s: %(ex)s" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" "Modul libvirt nemohl bĂ½t nalezen. NWFilterFirewall nebude sprĂ¡vnÄ› " "fungovat." #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "VolĂ¡no zĂ¡kladnĂ­ nastavenĂ­ filtrovĂ¡nĂ­ v nwfilter" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "ZajišťovĂ¡nĂ­ statickĂ½ch filtrů" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "Nwfilter (%(instance_filter_name)s) pro %(name)s nenalezen." #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "iptables firewall: NastavenĂ­ zĂ¡kladnĂ­ho filtrovĂ¡nĂ­" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, fuzzy, python-format msgid "Unknown image_type=%s" msgstr "neznĂ¡mĂ¡ obslužnĂ¡ rutina obrazu disku: %s" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, fuzzy, python-format msgid "Reading image info file: %s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "%s je platnĂ½ nĂ¡zev instance" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "%s mĂ¡ soubor disku" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "Instance %(instance)s je zĂ¡lohovĂ¡na %(backing)s" #: nova/virt/libvirt/imagecache.py:321 #, python-format msgid "" "Instance %(instance)s is using a backing file %(backing)s which does not " "appear in the image service" msgstr "" "Instance %(instance)s pouÅ¾Ă­vĂ¡ soubor zĂ¡lohy %(backing)s, kterĂ½ se " "neobjevuje ve službÄ› obrazu" #: nova/virt/libvirt/imagecache.py:394 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "%(container_format)s-%(id)s (%(base_file)s):ověřenĂ­ obrazu selhalo" #: nova/virt/libvirt/imagecache.py:404 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" "%(container_format)s-%(id)s (%(base_file)s): ověřenĂ­ obrazu pÅ™eskoÄeno, " "Å¾Ă¡dnĂ½ hash neuložen" #: nova/virt/libvirt/imagecache.py:413 #, fuzzy, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "%(container_format)s-%(id)s (%(base_file)s): kontrolovĂ¡nĂ­" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "ZĂ¡kladnĂ­ souboru je pÅ™Ă­liÅ¡ novĂ½ k odstranÄ›nĂ­: %s" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "Nelze odstranit %(base_file)s, chyba byla %(error)s" #: nova/virt/libvirt/imagecache.py:461 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "%(container_format)s-%(id)s (%(base_file)s): kontrolovĂ¡nĂ­" #: nova/virt/libvirt/imagecache.py:485 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" "%(container_format)s-%(id)s (%(base_file)s): je pouÅ¾Ă­vĂ¡no: v tomto uzlu " "%(local)d local, %(remote)d v ostatnĂ­ch uzlech" #: nova/virt/libvirt/imagecache.py:497 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" "%(container_format)s-%(id)s (%(base_file)s): varovĂ¡nĂ­ -- je pouÅ¾Ă­vĂ¡n " "chybÄ›jĂ­cĂ­ zĂ¡kladnĂ­ soubor! instance: %(instance_list)s" #: nova/virt/libvirt/imagecache.py:509 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "%(container_format)s-%(id)s (%(base_file)s): obraz nenĂ­ pouÅ¾Ă­vĂ¡n" #: nova/virt/libvirt/imagecache.py:516 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "%(container_format)s-%(id)s (%(base_file)s): obraz je pouÅ¾Ă­vĂ¡n" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "Ověřit zĂ¡kladnĂ­ obrazy" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "NeznĂ¡mĂ½ zĂ¡kladnĂ­ soubor: %s" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "AktivnĂ­ zĂ¡kladnĂ­ soubory: %s" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "PoÅ¡kozenĂ© zĂ¡kladnĂ­ soubory: %s" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "OdstranitelnĂ© zĂ¡kladnĂ­ soubory: %s" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "OvěřenĂ­ dokonÄeno" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "PÅ™eskakovĂ¡nĂ­ oěřenĂ­, Å¾Ă¡dnĂ½ zĂ¡kladnĂ­ adresĂ¡Å™ v %s" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "NeoÄekĂ¡vanĂ¡ chyba: %s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "ZajišťovĂ¡nĂ­ vlan %(vlan)s a mostu %(bridge)s" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "ZajišťovĂ¡nĂ­ mostu %s" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 #, fuzzy msgid "Failed while unplugging vif" msgstr "Nelze pÅ™i odpojenĂ­ vif instance '%s'" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "iSCSI zaÅ™Ă­zenĂ­ v %s nenalezeno" #: nova/virt/libvirt/volume.py:307 #, fuzzy, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" "ISCSI svazek zatĂ­m v %(mount_device)s nenalezen:. Bude znovu provedeno " "hledĂ¡nĂ­ a dalÅ¡Ă­ pokus. ÄŒĂ­slo pokusu: %(tries)s" #: nova/virt/libvirt/volume.py:320 #, fuzzy, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "Nalezen uzel iSCSI %(mount_device)s (po %(tries)s pokusech)" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "obraz již je pÅ™ipojen" #: nova/virt/libvirt/volume.py:751 #, fuzzy, python-format msgid "AoE device not found at %s" msgstr "iSCSI zaÅ™Ă­zenĂ­ v %s nenalezeno" #: nova/virt/libvirt/volume.py:753 #, fuzzy, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" "ISCSI svazek zatĂ­m v %(mount_device)s nenalezen:. Bude znovu provedeno " "hledĂ¡nĂ­ a dalÅ¡Ă­ pokus. ÄŒĂ­slo pokusu: %(tries)s" #: nova/virt/libvirt/volume.py:768 #, fuzzy, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "Nalezen uzel iSCSI %(mount_device)s (po %(tries)s pokusech)" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 #, fuzzy msgid "Fibre Channel device not found." msgstr "iSCSI zaÅ™Ă­zenĂ­ v %s nenalezeno" #: nova/virt/libvirt/volume.py:946 #, fuzzy, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" "ISCSI svazek zatĂ­m v %(mount_device)s nenalezen:. Bude znovu provedeno " "hledĂ¡nĂ­ a dalÅ¡Ă­ pokus. ÄŒĂ­slo pokusu: %(tries)s" #: nova/virt/libvirt/volume.py:963 #, fuzzy, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "Nalezen uzel iSCSI %(mount_device)s (po %(tries)s pokusech)" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "Ăkol [%(task_name)s] %(task_ref)s stav: ĂºspÄ›ch" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "Ăkol [%(task_name)s] %(task_ref)s stav: chyba %(error_info)s" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "In vmwareapi:_poll_task, Obdržena tato chyba %s" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "VytvĂ¡Å™enĂ­ adresĂ¡Å™e s cestou %s" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "VytvoÅ™en adresĂ¡Å™ s cestou %s" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, fuzzy, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "Vlastnost %(attr)s nenastavena pro spravovanĂ½ objekt %(objName)s" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "NenĂ­ registrovĂ¡no Å¾Ă¡dnĂ© VM" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "VirtuĂ¡lnĂ­ stroj s ref %s neexistuje" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "OdhlaÅ¡ovĂ¡nĂ­ sezenĂ­, kterĂ© je neplatnĂ©, nebo už odhlĂ¡Å¡enĂ©: %s" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "SezenĂ­ je chybnĂ©" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "SezenĂ­ je neplatnĂ©" #: nova/virt/vmwareapi/fake.py:1225 #, fuzzy msgid "No Virtual Machine has been registered yet" msgstr " Å½Ă¡dnĂ© virtuĂ¡lnĂ­ stroje nebyly zatĂ­m registrovĂ¡ny" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "Äinnost: %s" #: nova/virt/vmwareapi/host.py:62 #, fuzzy, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "NastavovĂ¡nĂ­ hostitele %(host)s na %(state)s." #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "Obraz Glance %s je ve stavu ukonÄenĂ­" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "Obraz Glance %(image_id)s je v nezĂ¡mĂ©m stavu - %(state)s" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" "Server ESX SOAP vrĂ¡til ve svĂ© odpovÄ›di prĂ¡zdnou skupinu portů pro " "hostitelskĂ½ systĂ©m" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "VytvĂ¡Å™enĂ­ skupiny portů s nĂ¡zvem %s na hostiteli ESX" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "VytvoÅ™ena skupina portů s nĂ¡zvem %s na hostiteli ESX" #: nova/virt/vmwareapi/read_write_util.py:145 #, fuzzy, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "BÄ›hem uzavÅ™enĂ­ HTTP pÅ™ipojenĂ­ v VMWareHTTpWrite doÅ¡lo k vĂ½jimce %s" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "Nelze importovat suds." #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "Neexistuje Å¾Ă¡dnĂ¡ metoda SOAP '%s' poskytovanĂ¡ VI SDK" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "chyba v httplib v %s: " #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "Chyba soketu v %s: " #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "Chyba typu v %s: " #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "VĂ½jimka v %s " #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ seznamu instancĂ­" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "ZĂ­skĂ¡no celkem %s instancĂ­" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, fuzzy, python-format msgid "Block device information present: %s" msgstr "block_device_mapping %s" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 #, fuzzy msgid "Creating VM on the ESX host" msgstr "VytvĂ¡Å™enĂ­ VM s nĂ¡zvem %s na hostiteli ESX" #: nova/virt/vmwareapi/vmops.py:304 #, fuzzy msgid "Created VM on the ESX host" msgstr "VytvĂ¡Å™eno VM s nĂ¡zvem %s na hostiteli ESX" #: nova/virt/vmwareapi/vmops.py:335 #, fuzzy, 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 "" "VytvĂ¡Å™enĂ­ virtuĂ¡lnĂ­ho disku s velikostĂ­ %(vmdk_file_size_in_kb)s KB a " "typem adaptĂ©ru %(adapter_type)s na mĂ­stnĂ­m ĂºložiÅ¡ti hostitele ESX " "%(data_store_name)s" #: nova/virt/vmwareapi/vmops.py:354 #, fuzzy, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" "VytvĂ¡Å™enĂ­ virtuĂ¡lnĂ­ho disku s velikostĂ­ %(vmdk_file_size_in_kb)s KB a " "typem adaptĂ©ru %(adapter_type)s na mĂ­stnĂ­m ĂºložiÅ¡ti hostitele ESX " "%(data_store_name)s" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, fuzzy, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" "VytvĂ¡Å™enĂ­ virtuĂ¡lnĂ­ho disku s velikostĂ­ %(vmdk_file_size_in_kb)s KB a " "typem adaptĂ©ru %(adapter_type)s na mĂ­stnĂ­m ĂºložiÅ¡ti hostitele ESX " "%(data_store_name)s" #: nova/virt/vmwareapi/vmops.py:413 #, fuzzy, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" "VytvĂ¡Å™enĂ­ virtuĂ¡lnĂ­ho disku s velikostĂ­ %(vmdk_file_size_in_kb)s KB a " "typem adaptĂ©ru %(adapter_type)s na mĂ­stnĂ­m ĂºložiÅ¡ti hostitele ESX " "%(data_store_name)s" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "ZapĂ­nĂ¡nĂ­ instance VM %s" #: nova/virt/vmwareapi/vmops.py:632 #, fuzzy msgid "Powered on the VM instance" msgstr "Instance VM %s zapnuta" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "VytvĂ¡Å™enĂ­ snĂ­mku instance VM %s " #: nova/virt/vmwareapi/vmops.py:766 #, fuzzy msgid "Created Snapshot of the VM instance" msgstr "SnĂ­mek instance VM %s vytvoÅ™en " #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "NahrĂ¡vĂ¡nĂ­ obrazu %s" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "Obraz %s nahrĂ¡n" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "Instance nenĂ­ zapnuta" #: nova/virt/vmwareapi/vmops.py:955 #, fuzzy msgid "Rebooting guest OS of VM" msgstr "RestartovĂ¡nĂ­ OS hosta na VM %s" #: nova/virt/vmwareapi/vmops.py:958 #, fuzzy msgid "Rebooted guest OS of VM" msgstr "OS hosta restartovĂ¡n na VM %s" #: nova/virt/vmwareapi/vmops.py:960 #, fuzzy msgid "Doing hard reboot of VM" msgstr "ProvĂ¡dÄ›nĂ­ tvrdho restĂ¡rtu VM %s" #: nova/virt/vmwareapi/vmops.py:964 #, fuzzy msgid "Did hard reboot of VM" msgstr "Proveden tvrdĂ½ restart VM %s" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "RestartovĂ¡nĂ­ xvp" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "Registrace VM %s zruÅ¡ena" #: nova/virt/vmwareapi/vmops.py:982 #, fuzzy, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "Ve vmwareapi:vmops:destroy, obdržena vĂ½jimka pÅ™i ruÅ¡enĂ­ registrace VM: %s" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 #, fuzzy msgid "Powering off the VM" msgstr "VypĂ­nĂ¡nĂ­ VM %s" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 #, fuzzy msgid "Powered off the VM" msgstr "VM %s vypnuto" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "RuÅ¡enĂ­ registrace VM %s" #: nova/virt/vmwareapi/vmops.py:1029 #, fuzzy msgid "Unregistered the VM" msgstr "Registrace VM %s zruÅ¡ena" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "Ve vmwareapi:vmops:destroy, obdržena vĂ½jimka pÅ™i ruÅ¡enĂ­ registrace VM: %s" #: nova/virt/vmwareapi/vmops.py:1040 #, fuzzy, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "MazĂ¡nĂ­ obsahu VM %(name)s z datovĂ©ho ĂºložiÅ¡tÄ› %(datastore_name)s" #: nova/virt/vmwareapi/vmops.py:1050 #, fuzzy, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "SmazĂ¡n obsah VM %(name)s z datovĂ©ho ĂºložiÅ¡tÄ› %(datastore_name)s" #: nova/virt/vmwareapi/vmops.py:1055 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while deleting the VM " "contents from the disk: %s" msgstr "" "Ve vmwareapi:vmops:destroy, obdržena vĂ½jimka pÅ™i mazĂ¡nĂ­ obsahu VM z " "disku: %s" #: nova/virt/vmwareapi/vmops.py:1065 msgid "pause not supported for vmwareapi" msgstr "pozastavenĂ­ nenĂ­ v vmwareapi popdorovĂ¡no" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "zruÅ¡enĂ­ pozastavenĂ­ nenĂ­ v vmwareapi popdorovĂ¡no" #: nova/virt/vmwareapi/vmops.py:1080 #, fuzzy msgid "Suspending the VM" msgstr "PozastavenĂ­ VM %s " #: nova/virt/vmwareapi/vmops.py:1084 #, fuzzy msgid "Suspended the VM" msgstr "VM %s pozastaveno " #: nova/virt/vmwareapi/vmops.py:1087 #, fuzzy msgid "instance is powered off and cannot be suspended." msgstr "instance je vypnutĂ¡, proto nemůže bĂ½t pozastavena." #: nova/virt/vmwareapi/vmops.py:1090 #, fuzzy msgid "VM was already in suspended state. So returning without doing anything" msgstr "VM %s již je v pozastavenĂ©m stavu. NĂ¡vrat, aniž by se nÄ›co provedlo" #: nova/virt/vmwareapi/vmops.py:1100 #, fuzzy msgid "Resuming the VM" msgstr "Znovu spouÅ¡tÄ›nĂ­ VM %s" #: nova/virt/vmwareapi/vmops.py:1105 #, fuzzy msgid "Resumed the VM" msgstr "VM %s znovu spuÅ¡tÄ›no " #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "instance nenĂ­ v pozastavenĂ©m stavu" #: nova/virt/vmwareapi/vmops.py:1182 #, fuzzy msgid "instance is suspended and cannot be powered off." msgstr "Instance nenĂ­ zapnuta" #: nova/virt/vmwareapi/vmops.py:1185 #, fuzzy msgid "VM was already in powered off state. So returning without doing anything" msgstr "VM %s již je v pozastavenĂ©m stavu. NĂ¡vrat, aniž by se nÄ›co provedlo" #: nova/virt/vmwareapi/vmops.py:1197 #, fuzzy msgid "VM was already in powered on state. So returning without doing anything" msgstr "VM %s již je v pozastavenĂ©m stavu. NĂ¡vrat, aniž by se nÄ›co provedlo" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "VypĂ­nĂ¡nĂ­ VM %s" #: nova/virt/vmwareapi/vmops.py:1206 #, fuzzy msgid "Powered on the VM" msgstr "VM %s vypnuto" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "Aktualizace postupu instance '%(instance_uuid)s' na %(progress)d" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "MazĂ¡nĂ­ svazku s ID: %s " #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "instance - %s nenĂ­ pÅ™Ă­tomno" #: nova/virt/vmwareapi/vmops.py:1309 #, fuzzy, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "Ve vmwareapi:vmops:destroy, obdržena vĂ½jimka pÅ™i ruÅ¡enĂ­ registrace VM: %s" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "MazĂ¡nĂ­ svazku s ID: %s " #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "VytvoÅ™it svazek ze snĂ­mku %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" "Nalezeno %(instance_count)d zaseknutĂ½ch restartovĂ¡nĂ­ starÅ¡Ă­ch než " "%(timeout)d vteÅ™in" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 #, fuzzy msgid "Automatically hard rebooting" msgstr "AutomatickĂ½ tvrdĂ½ restart %d" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 #, fuzzy msgid "Reconfiguring VM instance to set the machine id" msgstr "Znovu nastavovĂ¡nĂ­ instance VM %s pro pÅ™ipojenĂ­ obrazu disku" #: nova/virt/vmwareapi/vmops.py:1525 #, fuzzy msgid "Reconfigured VM instance to set the machine id" msgstr "Instance VM %s znovu nastavena pro pÅ™ipojenĂ­ obrazu disku" #: nova/virt/vmwareapi/vmops.py:1535 #, fuzzy, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" "Znovu nastavovĂ¡nĂ­ instance VM %(name)s pro Ăºpravu id stroje s ip - " "%(ip_addr)s" #: nova/virt/vmwareapi/vmops.py:1542 #, fuzzy, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" "Instance VM %(name)s znovu nastavena pro Ăºpravu id stroje s ip - " "%(ip_addr)s" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "StahovĂ¡nĂ­ obrazu %s ze serveru obrazu glance" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "Obraz %s stažen ze serveru obrazu glance" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "NahrĂ¡vĂ¡nĂ­ obrazu %s na server obrazu glance" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "Obraz %s nahrĂ¡n na server obrazu glance" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ velikosto brazu %s" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "ZĂ­skĂ¡nĂ¡ velikost %(size)s obrazu %(image)s" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Znovu skenovĂ¡nĂ­ SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Znovu skenovĂ¡nĂ­ SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: mazĂ¡nĂ­ souborů instance %(target)s" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: mazĂ¡nĂ­ souborů instance %(target)s" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Bod pÅ™ipojenĂ­ %(mountpoint)s pÅ™ipojen k instanci %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "PÅ™ipojeni svazku: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Nelze najĂ­t adresu %r" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Nelze najĂ­t svazek v db" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "OdpojenĂ­ svazku: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Bod pÅ™ipojenĂ­ %(mountpoint)s odpojen od instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, fuzzy, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" "ÄŒASOVĂ LIMIT: VyprÅ¡el Äas volĂ¡nĂ­ %(method)s. VM id=%(instance_uuid)s; " "arg=%(args)r" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, fuzzy, python-format msgid "" "NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. " "args=%(args)r" msgstr "" "NEZAVEDENO: VolĂ¡nĂ­ %(method)s nenĂ­ agentem podporovĂ¡no. VM " "id=%(instance_uuid)s; arg=%(args)r" #: nova/virt/xenapi/agent.py:135 nova/virt/xenapi/vmops.py:1781 #, fuzzy, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "VolĂ¡nĂ­ %(method)s vrĂ¡tilo chybu: %(e)s." #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "Dotaz na verzi agenta" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "Psled v agenta pro %(hypervisor)s/%(os)s/%(architecture)s je %(version)s" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "Nenalezena Å¾Ă¡dnĂ¡ verze agenta pro %(hypervisor)s/%(os)s/%(architecture)s" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "Aktualizace agenta na %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "NastavovĂ¡nĂ­ sprĂ¡vcovskĂ©ho hesla" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, fuzzy, python-format msgid "Injecting file path: %r" msgstr "VklĂ¡dĂ¡nĂ­ cesty souboru: '%s'" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "Reset sĂ­tÄ›" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" "NĂ¡stroje XenServer instalovanĂ© v tomto obrazu jsou schopnĂ© vložit sĂ­tÄ›. " "SĂ­Å¥ovĂ© soubory nebudou zmÄ›nÄ›ny" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" "NĂ¡stroje XenServer jsou v tomto obrazu pÅ™Ă­tomny, ale nejsou schopny " "vložit sĂ­Å¥" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "NĂ¡stroje XenServer nejsou v tomto obrazu nainstalovĂ¡ny" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "Chyba OpenSSL: %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, fuzzy, python-format msgid "Could not determine key: %s" msgstr "Nelze deÅ¡ifrovat soukromĂ½ klĂ­Ä: %s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "SpuÅ¡tÄ›nĂ­ hostitele na XenServer nenĂ­ podporovĂ¡no." #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "OznamovĂ¡nĂ­ NotImplemented" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake nemĂ¡ zavedeno %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "VolĂ¡nĂ­ pro zĂ­skĂ¡nĂ­ %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "VolĂ¡nĂ­ pro zĂ­skĂ¡nĂ­ %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "xenapi.fake nemĂ¡ zavedeno %s, nebo byl zavolĂ¡n se Å¡patnĂ½m poÄtem argumentů" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "Hostitel vĂ½poÄtu %(host)s nemohl bĂ½t nalezen." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Nelze restartovat instanci" #: nova/virt/xenapi/host.py:305 #, fuzzy msgid "Unable to get updated status" msgstr "Nelze zĂ­skat aktualizovanĂ½ stav: %s" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "VolĂ¡nĂ­ %(method)s vrĂ¡tilo chybu: %(e)s." #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "Nalezena sĂ­Å¥ s nĂ¡zvem Å¡tĂ­tku %s, kterĂ½ nenĂ­ jedineÄnĂ½" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "Nalezena sĂ­t mostu %s, kterĂ¡ nenĂ­ jedineÄnĂ¡" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "Å½Ă¡dnĂ¡ sĂ­Å¥ pro most %s nenalezena" #: nova/virt/xenapi/pool.py:67 #, fuzzy, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "AgregĂ¡t %(aggregate_id)s již mĂ¡ hostitele %(host)s." #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "Nenalezeno Å¾Ă¡dnĂ© PIF pro zaÅ™Ă­zenĂ­ %s" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 #, fuzzy msgid "Created VM" msgstr "_vytvoÅ™it: %s" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 #, fuzzy msgid "VM already halted, skipping shutdown..." msgstr "VM %(instance_uuid)s již je zastavena, pÅ™eskakovĂ¡nĂ­ vypnutĂ­..." #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD v instanci %s nenalezeno" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "již odpojeno" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "Nelze odpojit VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "Nelze zniÄit VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "VytvoÅ™eno VBD %(vbd_ref)s pro VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "VytvoÅ™eno VBD %(vbd_ref)s pro VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "Nelze zniÄit VDI %s" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "VytvoÅ™eno VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, " "%(read_only)s) na %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 #, fuzzy msgid "SR not present and could not be introduced" msgstr "Instance nemohla bĂ½t nalezena" #: nova/virt/xenapi/vm_utils.py:580 #, fuzzy, python-format msgid "block device info: %s" msgstr "block_device_list %s" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "ZkopĂ­rovĂ¡no VDI %(vdi_ref)s z VDI %(vdi_to_clone_ref)s" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "SpouÅ¡tÄ›nĂ­ snĂ­mku ve VM %s" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "OdstraňovĂ¡nĂ­ souborů kernel/ramdisku z dom0" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, fuzzy, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "xapi 'download_vhd' vrĂ¡til VDI typu '%(vdi_type)s' s UUID '%(vdi_uuid)s'" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, fuzzy, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "ZĂ­skĂ¡vĂ¡nĂ­ obrazu %(image)s" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Velikost obrazu %(image)s:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, python-format msgid "" "Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d " "bytes" msgstr "" "Obraz Kernel/Ramdisk je pÅ™Ă­liÅ¡ velkĂ½: %(vdi_size)d bajtů, max " "%(max_size)d bajtů" #: nova/virt/xenapi/vm_utils.py:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "KopĂ­rovĂ¡nĂ­ VDI %s do /boot/guest na dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk VDI %s zniÄeno" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "instance %s: nelze zĂ­skat obraz glance" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "ZjiÅ¡tÄ›n formĂ¡t %(image_type_str)s obrazu %(image_ref)s" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s je stĂ¡le dostupnĂ©" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "PÅ™Ă­znak sr_matching_filter '%s' se neÅ™Ă­dĂ­ pravidly formĂ¡tovĂ¡nĂ­" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "Nelze najĂ­t SR typu obsahu ISO" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "ISO: nenĂ­ obsah iso" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "ISO: typ obsahu iso, nenĂ­ klĂ­Ä 'i18n-key'" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "ISO: typ obsahu iso, hodnota i18n-key nenĂ­ 'local-storage-iso'" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "ISO: SR odpovĂ­dajĂ­cĂ­ naÅ¡Ă­m kritĂ©riĂ­m" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "ISO: ISO, prozkoumĂ¡vĂ¡no, zdali se jednĂ¡ o mĂ­stnĂ­ho hostitele" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "ISO: shoda PBD, požadovĂ¡no %(pbd_rec)s, zĂ­skĂ¡no %(host)s" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "ISO: SR s mĂ­stnĂ­m PBD" #: nova/virt/xenapi/vm_utils.py:1983 #, python-format msgid "" "Unable to obtain RRD XML for VM %(vm_uuid)s with server details: " "%(server)s." msgstr "" "Nelze zĂ­skat RRD XML pro VM %(vm_uuid)s majĂ­cĂ­ podrobnosti serveru: " "%(server)s." #: nova/virt/xenapi/vm_utils.py:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s mĂ¡ nadÅ™azenho %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "" "NadÅ™azenĂ½ %(parent_uuid)s se neshoduje s původnĂ­m nadÅ™azenĂ½m " "%(original_parent_uuid)s, ÄekĂ¡nĂ­ na splynutĂ­..." #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "VyprÅ¡el ÄasovĂ½ limit pÅ™i ÄekĂ¡nĂ­ na vytvoÅ™enĂ­ zaÅ™Ă­zenĂ­ %s" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "ZapojovĂ¡nĂ­ VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "ZapojovĂ¡nĂ­ VBD %s hotovo." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "VBD %(vbd_ref)s zapojeno jako %(orig_dev)s" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "VBD %(vbd_ref)s zapojeno do Å¡patnĂ©ho dev, znovu mapovĂ¡nĂ­ do %(dev)s" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "NiÄenĂ­ VBD pro VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "NiÄenĂ­ VBD pro VDI %s hotovo." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "OddĂ­ly:" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr " %(num)s: %(ptype)s %(size)d sektorů" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" "ZapisovĂ¡nĂ­ tabulky oddĂ­lů %(primary_first)d %(primary_last)d do " "%(dev_path)s..." #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "ZapisovĂ¡nĂ­ tabulky oddĂ­lů %s dokonÄeno." #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "PÅ™Ă­mĂ© zachĂ¡zenĂ­ se soubory rozhranĂ­" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "Nelze pÅ™ipojit souborovĂ½ systĂ©m (oÄekĂ¡vĂ¡no v nelinuxovĂ½ch instancĂ­ch): %s" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "Nelze pÅ™evĂ©st vhd na novĂ©ho hostitele" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "OdstraňovĂ¡nĂ­ zĂ¡kladnĂ­ho souboru: %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "SpouÅ¡tÄ›nĂ­ instance..." #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "Nelze aktualizovat svazek v db" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "DokonÄen snĂ­mek a nahrĂ¡nĂ­ na VM %s" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Nelze restartovat instanci" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 #, fuzzy msgid "Unable to find root VBD/VDI for VM" msgstr "Neůze najĂ­t vbd pro vdi %s" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "RestartovĂ¡nĂ­ xvp" #: nova/virt/xenapi/vmops.py:1288 #, fuzzy msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" "Instance %(instance_uuid)s pomocĂ­ RAW nebo VHD, pÅ™eskakovĂ¡nĂ­ mazĂ¡nĂ­ " "kernelu a ramdisku" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "Instance mĂ­ kernel nebo ramdisk, ale ne oba" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "soubory kernel/ramdisk odstranÄ›ny" #: nova/virt/xenapi/vmops.py:1329 #, fuzzy msgid "Destroying VM" msgstr "RestartovĂ¡nĂ­ xvp" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "VM nenĂ­ pÅ™Ă­tomno, pÅ™eskakovĂ¡nĂ­ niÄenĂ­..." #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "Instance již je v zĂ¡chrannĂ©m režimu: %s" #: nova/virt/xenapi/vmops.py:1451 #, fuzzy msgid "VM is not present, skipping soft delete..." msgstr "VM nenĂ­ pÅ™Ă­tomno, pÅ™eskakovĂ¡nĂ­ niÄenĂ­..." #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "VklĂ¡dĂ¡nĂ­ informacĂ­ o sĂ­ti do xs pro vm: |%s|" #: nova/virt/xenapi/vmops.py:1675 #, fuzzy msgid "Creating vifs" msgstr "VytvĂ¡Å™enĂ­ obrazu" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "vytvĂ¡Å™enĂ­ VIF pro VM %(vm_ref)s, sĂ­Å¥ %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 #, fuzzy msgid "No suitable network for migrate" msgstr "Å patnĂ½ formĂ¡t sĂ­tÄ›" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 #, fuzzy msgid "Migrate Send failed" msgstr "VytvoÅ™enĂ­ selhalo" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "VytvĂ¡Å™enĂ­ pbd pro SR" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "ZapojovĂ¡nĂ­ SR" #: nova/virt/xenapi/volume_utils.py:89 #, fuzzy msgid "Forgetting SR..." msgstr "ZapomĂ­nĂ¡nĂ­ na SR %s..." #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "Nelze najĂ­t SR z VBD %s" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "IgnorovĂ¡nĂ­ vĂ½jimky %(exc)s pÅ™i zĂ­skĂ¡vĂ¡nĂ­ PBD pro %(sr_ref)s" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "IgnorovĂ¡nĂ­ vĂ½jimky %(exc)s pÅ™i odpojovĂ¡nĂ­ PBD %(pbd)s" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "Nelze zavĂ©st VDI na SR %s" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "Nelze zĂ­skat zĂ¡znam VDI %s na" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "Nelze zavĂ©st VDI pro SR %s" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Bod pÅ™ipojenĂ­ nelze pÅ™eložit: %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "Nelze se pÅ™ihlĂ¡sit do XenAPI (je disk Dom0 plnĂ½?)" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "Obdržena vĂ½jimka: %s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "Chyba pÅ™i zahĂ¡jenĂ­ komunikace: %s" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "NeplatnĂ½ požadavek: %s" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "Požadavek: %s" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "Proveden požadavek s chybÄ›jĂ­cĂ­ znĂ¡mkou: %s" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "Proveden požadavek s neplatnou znĂ¡mkou: %s" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "NeoÄekĂ¡vanĂ¡ chyba: %s" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "SpouÅ¡tÄ›nĂ­ uzlu nova-xvpvncproxy (verze %s)" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 #, fuzzy msgid "status must be 'in-use'" msgstr "stav musĂ­ bĂ½t dostupnĂ½" #: nova/volume/cinder.py:227 #, fuzzy msgid "status must be 'available'" msgstr "stav musĂ­ bĂ½t dostupnĂ½" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/nova.pot0000664000175400017540000116535112323721510017603 0ustar jenkinsjenkins00000000000000# Translations template for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # FIRST AUTHOR , 2014. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: nova jenkins.nova.propose.translation.update.574\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ur/0000775000175400017540000000000012323722546016540 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ur/LC_MESSAGES/0000775000175400017540000000000012323722546020325 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ur/LC_MESSAGES/nova.po0000664000175400017540000116540712323721510021634 0ustar jenkinsjenkins00000000000000# Urdu translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-10-08 21:53+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Urdu " "(http://www.transifex.com/projects/p/openstack/language/ur/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/da/0000775000175400017540000000000012323722545016475 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/da/LC_MESSAGES/0000775000175400017540000000000012323722546020263 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/da/LC_MESSAGES/nova.po0000664000175400017540000116550012323721510021564 0ustar jenkinsjenkins00000000000000# Danish translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-01-15 21:46+0000\n" "Last-Translator: Soren Hansen \n" "Language-Team: Danish \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Filnavn for privatnøgle" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "bind %s: slettet" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/hu/0000775000175400017540000000000012323722545016525 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/hu/LC_MESSAGES/0000775000175400017540000000000012323722546020313 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/hu/LC_MESSAGES/nova.po0000664000175400017540000116544312323721510021622 0ustar jenkinsjenkins00000000000000# Hungarian translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hungarian " "(http://www.transifex.com/projects/p/openstack/language/hu/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/zh_HK/0000775000175400017540000000000012323722546017115 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/zh_HK/LC_MESSAGES/0000775000175400017540000000000012323722546020702 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/zh_HK/LC_MESSAGES/nova.po0000664000175400017540000116547512323721510022216 0ustar jenkinsjenkins00000000000000# Chinese (Hong Kong SAR China) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Chinese (Hong Kong) " "(http://www.transifex.com/projects/p/openstack/language/zh_HK/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ms/0000775000175400017540000000000012323722545016530 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ms/LC_MESSAGES/0000775000175400017540000000000012323722546020316 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ms/LC_MESSAGES/nova.po0000664000175400017540000116542412323721510021624 0ustar jenkinsjenkins00000000000000# Malay translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Malay " "(http://www.transifex.com/projects/p/openstack/language/ms/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/tl/0000775000175400017540000000000012323722546016531 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tl/LC_MESSAGES/0000775000175400017540000000000012323722546020316 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tl/LC_MESSAGES/nova.po0000664000175400017540000116616412323721510021626 0ustar jenkinsjenkins00000000000000# Tagalog translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-08-23 11:21+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: Tagalog \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Kailangan bang gumamit ng CA bawat proyekto?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "walang paraan para sa mensahe: %s" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "walang paraan para sa mensahe: %s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "walang paraan para sa mensahe: %s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "walang paraan para sa mensahe: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "walang paraan para sa mensahe: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "natanggap %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "natanggap %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "natanggap %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "walang paraan para sa mensahe: %s" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/tr_TR/0000775000175400017540000000000012323722546017144 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tr_TR/LC_MESSAGES/0000775000175400017540000000000012323722546020731 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tr_TR/LC_MESSAGES/nova.po0000664000175400017540000125077612323721510022244 0ustar jenkinsjenkins00000000000000# English (United States) translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: # Ă–zcan Zafer AYAN , 2013. msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-02-02 18:03+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: en_US \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Kök sertifika yetkilisinin dosya adı" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Ă–zel anahtarın dosya adı" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Kök sertifika iptali listesinin dosya adı" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Anahtarlarımızı tuttuÄŸumuz yer" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Kök sertifika yetkilisini tutttuÄŸumuz yer" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Her proje için sertifika yetkilisini kullanmalı mıyız?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "Kullanıcıların sertifika konusu, proje, kullanıcı ve tarih bilgisi için %s" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Projelerin sertifika konusu, proje ve tarih bilgisi için %s" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 #, fuzzy msgid "Unable to find the key" msgstr "%r adresini bulmak olanaksız" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Bayrakların yolu: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "Bilinmeyen bir istisna oluÅŸtu." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Ă–zel anahtar çözĂ¼mĂ¼ baÅŸarısız: %s" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Ă–zel anahtar çözĂ¼mĂ¼ baÅŸarısız: %s" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "Sanal arayĂ¼z oluÅŸturma hatası" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "Yetkiniz yok." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "Kullanıcı yönetici ayrıcalıklarına sahip deÄŸil" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "%(action)s uygulanmasına izin verilmiyor." #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "Kabul edilemez parametreler var." #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "%(volume_id)s bölĂ¼mĂ¼ hiçbir ÅŸeyle iliÅŸkilendirilmedi" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "İstek geçersiz" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "Geçersiz port aralığı %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Geçersiz IP %(protocol)s." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Geçersiz içerik tĂ¼rĂ¼ %(content_type)s." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "Geçersiz CIDR %(cidr)s." #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "Hatalar: %(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" "%(aggregate_id)s Ă¼zerinde '%(action)s' eylemi gerçekleÅŸtirilemiyor. " "Nedeni: %(reason)s." #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" "%(attr)s %(state)s 'deki %(instance_uuid)s örneÄŸi. Ă–rnek bu durumda iken " "%(method)s yapılamaz." #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "%(instance_id)s örneÄŸi çalışmıyor." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "%(instance_id)s örneÄŸi kurtarma modunda deÄŸil" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "%(instance_id)s örneÄŸi kurtarma modunda deÄŸil" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "Åu anda servis kullanılamıyor." #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "Hesaplama servisi ÅŸu anda kullanılamıyor." #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "Mevcut (%(host)s) sunucusundan (%(instance_id)s) örneÄŸi geçirilemez." #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "Desteklenen hypervisor tĂ¼rĂ¼ geçersiz." #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "Ă–rnek ÅŸu ankinden daha yeni hypervisor versiyonu gerektirir." #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "Desteklenen disk yolu (%(path)s) halen var,fakat var olmaması gerekir." #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "Desteklenen cihaz yolu (%(path)s) geçersiz." #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s geçerli bir IP v4/6 adresi deÄŸildir." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" "VLAN etiketi %(bridge)s port grubu için uygun deÄŸil. Beklenen VLAN " "etiketi %(tag)s'dir, fakat tek iliÅŸkili port grubu %(pgroup)s'dir." #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" "%(bridge)s port grubunu içeren vSwitch istenilen fiziksel adaptörĂ¼ ile " "iliÅŸkilendirilmemiÅŸtir. Beklenen vSwitch %(expected)s'dir, fakat " "iliÅŸkilendirilen ise %(actual)s'dir." #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "%(disk_format)s disk formatı kabul edilemez." #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "%(image_id)s imajı kabul edilemez: %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "%(instance_id)s örneÄŸi kabul edilemez: %(reason)s" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "%(ec2_id)s Ec2 id'si kabul edilemez." #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "Geçersiz CIDR %(cidr)s." #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "Kaynak bulunamadı." #: nova/exception.py:497 #, fuzzy, python-format msgid "No agent-build associated with id %(id)s." msgstr "%(id)s ile iliÅŸkilendirilmiÅŸ bir dinamik IP yok." #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "%(volume_id)s bölĂ¼mĂ¼ bulunamadı." #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "%(snapshot_id)s sistem anlık görĂ¼ntĂ¼sĂ¼ bulunamadı." #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "%(location)s'da disk yok." #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "%(driver_type)s bölĂ¼mĂ¼ için bir iÅŸleyici bulunamadı." #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "Geçersiz %(image_href)s imaj kaynak dosyası." #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "%(image_id)s imaj kaynak dosyası bulunamadı." #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "%(project_id)s projesi bulunamadı." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "VDI'ya okuma/yazma yapılırken SR(Saklama deposu) bulunamadı." #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "%(network_id)s ağı bulunamadı." #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "AÄŸ oluÅŸturulurken %(req)s gereklidir." #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "%(network_id)s ağı bulunamadı." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "%(snapshot_id)s sistem anlık görĂ¼ntĂ¼sĂ¼ bulunamadı." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr " %(bridge)s köprĂ¼sĂ¼ için aÄŸ bulunamadı." #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "%(uuid)s UUID'si için bir aÄŸ bulunamadı" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "%(cidr)s CIDR ile bir aÄŸ bulunamadı." #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/exception.py:598 msgid "No networks defined." msgstr "Tanımlı bir aÄŸ yok." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "VM'nin kullandığı veri deposu referansı(ları) bulunamadı." #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/exception.py:637 #, fuzzy, python-format msgid "No free port available for instance %(instance)s." msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "%(id)s ile iliÅŸkilendirilmiÅŸ bir dinamik IP yok." #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "%(address)s adresi için bir dinamik IP bulunamadı." #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" "%(network_id)s ağında %(host)s aÄŸ sunucusunun hiç dinamik IP'si yok.\n" " " #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "(%(network_uuid)s) ağında bir (%(address)s) dinamik IP adresi yok." #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "%(address)s dinamik IP adresi geçersiz." #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "Kullanılabilir hiç dinamik IP yok." #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "Hiç dinamik IP bulunamadı." #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "%(id)s ID'si için deÄŸiÅŸken IP bulunamadı." #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "%(domain)s alanında %(name)s DNS girdisi halen var." #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "%(address)s adresi için bir deÄŸiÅŸken IP bulunamadı." #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr " %(host)s sunucusu için bir deÄŸiÅŸken IP bulunamadı." #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "Hiç mevcut deÄŸiÅŸken IP yok." #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "%(address)s deÄŸiÅŸken IP adresi iliÅŸkilendirildi." #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "%(address)s deÄŸiÅŸken IP adresi iliÅŸkilendirilemedi." #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "Hiç deÄŸiÅŸken IP yok." #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "%(interface)s arayĂ¼zĂ¼ bulunamadı." #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "%(user_id)s kullanıcısı için %(name)s anahtar çifti bulunamadı" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "%(service_id)s servisi bulunamadı." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "%(host)s sunucusu bulunamadı." #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "%(host)s hesaplama sunucusu bulunamadı." #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "%(host)s sunucusunda %(binary)s ikilisi bulunamadı." #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "Kota bulunamadı." #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "%(project_id)s projesi için bir kota bulunamadı." #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "%(security_group_id)s gĂ¼venlik grubu bulunamadı." #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" "%(project_id)s projesi için %(security_group_id)s gĂ¼venlik grubu " "bulunamadı." #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "%(rule_id)s kurallı gĂ¼venlik grubu bulunamadı." #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" "%(security_group_id)s gĂ¼venlik grubu zaten %(instance_id)s örneÄŸi ile " "iliÅŸkilendirimiÅŸ." #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" "%(security_group_id)s gĂ¼venlik grubu %(instance_id)s örneÄŸi ile " "iliÅŸkilendirilmedi." #: nova/exception.py:857 #, fuzzy, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "%(rule_id)s kurallı gĂ¼venlik grubu bulunamadı." #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "%(migration_id)s gĂ¶Ă§Ă¼ bulunamadı." #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "%(status)s durumuyla %(instance_id)s örneÄŸi için göç bulunamadı." #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "%(pool_id)s konsol havuzu bulunamadı." #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" "%(host)s roxy sunucusundaki %(compute_host)s hesaplama sunucusu için " "%(console_type)s tĂ¼rĂ¼nĂ¼n konsol havuzu bulunamadı." #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "%(console_id)s konsolu bulunamadı." #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "Geçersiz içerik tĂ¼rĂ¼ %(content_type)s." #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "%(flavor_id)s örnek tĂ¼rĂ¼ bulunamadı." #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "%(name)s örneÄŸi zaten var." #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "%(filter_name)s zamanlayıcı sunucu filtresi bulunamadı." #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "%(file_path)s dosyası bulunamadı." #: nova/exception.py:994 msgid "Zero files could be found." msgstr "Hiç dosya bulunamadı." #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" "%(adapter)s aÄŸ baÄŸdaÅŸtırıcısı ile iliÅŸkilendirilen sanal anahtar " "bulunamadı." #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "%(adapter)s aÄŸ baÄŸdaÅŸtırıcısı bulunamadı." #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "%(class_name)s sınıfı bulunamadı: %(exception)s" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "İşlem için izin verilmiyor." #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "Ă–nceki sistem geri görĂ¼ntĂ¼sĂ¼ne dönmek için izin verilmiyor." #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "Yedek imajı geri dönĂ¼ÅŸ parametresi gerekli" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "%(key_name)s anahtar çifti zaten var." #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "%(name)s örneÄŸi zaten var." #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "Hatalı biçimlendirilmiÅŸ mesaj gövdesi: %(reason)s" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "%(path)s'deki yapılandırma bulunamadı" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "%(uuid)s hesaplama dĂ¼ÄŸĂ¼mĂ¼ baÅŸlatmada yetersiz boÅŸ hafıza." #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "Geçerli bir sunucu bulunamadı: %(reason)s" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "KiÅŸisel dosya limiti aşıldı" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "KiÅŸisel dosya yolu çok uzun" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "KiÅŸisel dosya içeriÄŸi çok uzun" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "%(aggregate_id)s kĂ¼mesi bulunamadı." #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "%(aggregate_name)s kĂ¼mesi zaten var." #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "%(aggregate_id)s kĂ¼mesi %(host)s sunucusuna sahip deÄŸil." #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" "%(aggregate_id)s kĂ¼mesi %(metadata_key)s. anahtarı ile hiç metadata'sı " "yok." #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "%(aggregate_id)s kĂ¼mesi zaten%(host)s sunucusuna sahip." #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "%(instance_id)s örneÄŸi bulunamadı." #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "%(instance_id)s örneÄŸi bulunamadı." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "%(volume_id)s bölĂ¼mĂ¼ bulunamadı." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "%(project_id)s projesi bulunamadı." #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "%(device)s'daki %(instance_id)s örneÄŸine %(volume_id)s birimini baÄŸla" #: nova/exception.py:1291 #, fuzzy, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "%(user_id)s kullanıcısı için %(name)s anahtar çifti bulunamadı" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "%(instance_id)s örneÄŸi kurtarma modunda deÄŸil" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "%(instance_id)s örneÄŸi kurtarma modunda deÄŸil" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "%(name)s örneÄŸi zaten var." #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "Beklenen nesne tĂ¼rĂ¼: %s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "JSON dosyası ilkeyi temsil eder" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "İstekte bulunan kural bulunamadığında kural kontrol edildi." #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Servis, hiç veritabanı girdisi olmayanı sonlandırdı." #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "Yerel adres baÄŸlantısı bulunamadı.:%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "Couldn't get Link Local IP of %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "Geçersiz backend: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "Beklenen nesne tĂ¼rĂ¼: %s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "Geçersiz server_string: %s" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, fuzzy, python-format msgid "%s is not a string or unicode" msgstr "%s gĂ¼venlik grubu string veya unicode deÄŸil" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "%r adresini bulmak olanaksız" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "%r adresini bulmak olanaksız" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "%r adresini bulmak olanaksız" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "WSGI sunucusu durduruluyor." #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "WSGI sunucusu durduruldu." #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "__call__ fonksiyonunu uygulamalısınız." #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "Hata yakalayıcı: %s" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Çok sayıda kimlik doÄŸrulama baÅŸarısız oldu." #: nova/api/ec2/__init__.py:167 #, 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 "" "%(access_key)s eriÅŸim anahtarı %(failures)d kez yanlış girildi ve " "%(lock_mins)d dakika boyunca kilitlenmiÅŸ olacak." #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "İmza verilmedi." #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "EriÅŸim anahtarı verilmedi." #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "Temel dosya kaldırılıyor: %s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Çok sayıda kimlik doÄŸrulama baÅŸarısız oldu." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "iÅŸlem: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "arg: %(key)s»»val: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "%(controller)s kontrolcĂ¼sĂ¼ ve %(action)s iÅŸlemi için izinsiz istek" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "Ortam: %s" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "Desteklenmeyen API isteÄŸi: kontrolcĂ¼ = %(controller)s, iÅŸlem = %(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "BölĂ¼m %s'in sistem anlık görĂ¼ntĂ¼sĂ¼nĂ¼ oluÅŸtur" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "%s anahtar çiftini oluÅŸtur" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "%s anahtarını içeriye aktar" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "%s anahtar çiftini sil" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "BelirlenmiÅŸ parametreler için hiç kural yok" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "%s örneÄŸi için konsol çıktısını getir" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "%s sistem görĂ¼ntĂ¼sĂ¼nden birim oluÅŸtur" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "%s GB'lık birim oluÅŸtur" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "%(device)s'daki %(instance_id)s örneÄŸine %(volume_id)s birimini baÄŸla" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Birimi ayır %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "birim = %s\n" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Adres tahsisi" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "%s adresini serbest bırak" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "%(instance_id)s örneÄŸine %(public_ip)s adresini iliÅŸkilendir" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Adresi kes %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "İmaj mĂ¼sait olmak zorunda" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "Ă–rnekleri sonlandırma iÅŸlemi baÅŸlatılıyor" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "%r örneÄŸini tekrar yĂ¼kle" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "Ă–rnekler durdurulacak" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "Ă–rnekler baÅŸlatılacak" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "%s imaj kaydı siliniyor" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "%(image_id)s id ile %(image_location)s imajı kaydedildi" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "Kullanıcı veya grup belirlenmedi" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "Sadece \"all\" grubu destekleniyor" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "İşlem tĂ¼rĂ¼ eklenmek veya kaldırılmak zorunda" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "%s imaj tanıtımı gĂ¼ncelleniyor" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "İstek geçersiz" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "IP için metadata alma hata ile sonuçlandı: %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "Bilinmeyen bir hata oluÅŸtu. LĂ¼tfen tekrar deneyin." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "IP için metadata alma hata ile sonuçlandı: %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Yakalama hatası: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s HTTP %(status)d ile geri döndĂ¼" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "UzantıYöneticisi sınıfı belirlenmek zorunda" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" "%(ext_name)s uzantısı: %(collection)s kaynağı geniÅŸletilemiyor: Böyle bir" " kaynak yok" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, fuzzy, python-format msgid "v3 API Extension Blacklist: %s" msgstr "GeniÅŸletme fabrikası çağırılıyor %s" #: nova/api/openstack/__init__.py:301 #, fuzzy, python-format msgid "v3 API Extension Whitelist: %s" msgstr "GeniÅŸletme yĂ¼kleniyor: %s" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "GeniÅŸletme yĂ¼kleniyor: %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "GeniÅŸletilmiÅŸ kaynak: %s" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "%(ext_name)s uzantısı kaynağı geniÅŸletiyor: %(collection)s" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "Göreli konum parametresi tam sayı olmak zorunda" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "Sınır parametresi tam sayı olmak zorunda" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "Sınır parametresi pozitif olmak zorunda" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "Göreli konum parametresi pozitif olmak zorunda" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr " [%s] göstergesi bulunamadı" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "%s referansı versiyon içermiyor" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "İmaj Ă¼stveri sınırı aşıldı" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "Ă–rnek %(attr)s %(state)s'de iken '%(action)s' yapılamaz" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, fuzzy, python-format msgid "Instance is in an invalid state for '%s'" msgstr "Ă–rnek '%(action)s' için geçersiz durumda" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "Sistem görĂ¼ntĂ¼sĂ¼ isteÄŸi reddedildi, sistem görĂ¼ntĂ¼leri ÅŸu anda devre dışı." #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "Ă–rnek sistem görĂ¼ntĂ¼leri ÅŸu an onaylanmadı." #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "YĂ¼klenen bölĂ¼m: %s" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "Ext adı: %s" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "Ext takma adı: %s" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "Ext açıklaması: %s" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "Ext isim uzayı: %s" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Ext gĂ¼ncellendi: %s" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "İstisna yĂ¼kleme uzantısı: %s" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "GeniÅŸletme yĂ¼kleniyor: %s" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "GeniÅŸletme fabrikası çağırılıyor %s" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "%(ext_factory)s uzantısı yĂ¼klemede hata: %(exc)s" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "%(classpath)s uzantısı yĂ¼klemede hata: %(exc)s" #: nova/api/openstack/extensions.py:372 #, fuzzy, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "%(ext_name)s uzantısı yĂ¼klemede hata: %(exc)s" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "JSON dosyası anlaşılamadı" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "Çok sayıda gövde anahtarları" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "Hata fırlatıldı: %s" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "HTTP istisnası fırlatıldı: %s" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "İstekte tanınamayan içerik tĂ¼rĂ¼ saÄŸlayıcısı" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "Böyle bir iÅŸlem yok: %s" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "Kusurlu istek gövdesi" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "Desteklenmeyen içerik tĂ¼rĂ¼" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "eleman çocuk deÄŸil" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "listeden kök elemanı seçiliyor" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" "Åablon aÄŸacı uyumsuz; %(mastertag)s ana kaydına %(slavetag)s bağımlı " "birimi ekleniyor" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "alt sınıflar yapıcı() oluÅŸturmak zorunda!" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "GeniÅŸletme yöneticisi baÅŸlatılıyor" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "İmaj bulunamadı" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "Geçersiz gövde biçimi isteÄŸi." #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "URI ve gövde isteÄŸi uyumsuz" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "İstek gövdesi çok sayıda Ă¶ÄŸe içeriyor" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "Geçersiz özellik anahtarı" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "Ă–rnek mevcut deÄŸil" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "Ă–rnek belirlenmiÅŸ ağın bir Ă¼yesi deÄŸil" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "Bu istek sayı limitlidir." #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "Sunucu mevcut deÄŸil" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "İçerik özelliÄŸi bilgisi bulunamadı" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "Geçersiz deÄŸiÅŸiklik-oluÅŸturma deÄŸeri" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "%(flavor_id)s örnek tĂ¼rĂ¼ bulunamadı." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "Ă–rnek bulunamadı." #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "Yanlış kiÅŸisel biçim: %s bulunamadı" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "Yanlış kiÅŸisel biçim" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "%s için kiÅŸisel içerik çözĂ¼mlenemedi" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "Yanlış aÄŸ biçimi: aÄŸ UUID'si uygun formatta deÄŸil(%s)" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "Geçersiz deÄŸiÅŸken IP adresi (%s)" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "Tekrarlanan aÄŸlara (%s) izin verilmiyor" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "Yanlış aÄŸ biçimi: %s bulunamadı" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "Hatalı aÄŸ biçimi" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "Kullanıcı verisi içeriÄŸi çözĂ¼lemez" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "IPv4 adresi uygun IPv4 formatında deÄŸil" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "Sunucu adı tanımlanmadı" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "Geçersiz örnek tĂ¼rĂ¼ saÄŸlayıcısı" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "İstenilen imaj dosyası bulunamadı" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "Geçersiz anahtar adı verildi." #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "%s için kiÅŸisel içerik çözĂ¼mlenemedi" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "Ă–rnek tekrar boyutlandırılacak ÅŸekilde ayarlanmadı." #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "%(instance_id)s örneÄŸi bulunamadı." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "Ă–nyĂ¼kleme için argĂ¼man tĂ¼rĂ¼ HARD veya SOFT deÄŸil" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "Ă–nyĂ¼kleme için tĂ¼r argĂ¼manı eksik" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "İstenilen örnek tĂ¼rĂ¼ konumlandırılamıyor." #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "%(instance_id)s örneÄŸi bulunamadı." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "%s geçerli bir örnek ismidir" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "İmaj referans özelliÄŸi eksik" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "Geçersiz imaj referansı verildi." #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "Ă–rnek tĂ¼rĂ¼ referans özelliÄŸi eksik" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "BelirlenmiÅŸ bir yönetici parolası yok" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Ă–rnek kapatmada hata oluÅŸtu." #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "ÇözĂ¼mlenemeyen metadata anahtar/deÄŸer çifti." #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" "Yeniden boyutlandırma isteÄŸi geçersiz örnek tĂ¼rĂ¼ referansı özelliÄŸine " "sahip." #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" "Yeniden boyutlandırma isteÄŸi geçersiz örnek tĂ¼rĂ¼ referansı özelliÄŸi " "gerektirir." #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "İstekte bulunulan imaj referansı çözĂ¼mlenemedi." #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "Yeniden kurulum için imaj dosyası bulunamadı." #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "createImage varlığının isim özelliÄŸine ihtiyacı var" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "Geçersiz metadata" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "Geçersiz yönetici parolası" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "Sorgudan '%(unk_opt_str)s' seçenekleri kaldırılıyor" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "Göçte hata %s" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "yedekOluÅŸturma birimi %s özelliÄŸini gerektiriyor" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "Bozuk yedekOluÅŸturma birimi" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "yedekOluÅŸturma 'dönĂ¼ÅŸme' özelliÄŸi tamsayı olmak zorunda" #: nova/api/openstack/compute/contrib/admin_actions.py:276 #, fuzzy msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "yedekOluÅŸturma 'dönĂ¼ÅŸme' özelliÄŸi tamsayı olmak zorunda" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "Ă–rnek bulunamadı" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, fuzzy, python-format msgid "Live migration of instance %s to another host failed" msgstr "%(id)s'dan %(host)s sunucusuna örnek gĂ¶Ă§Ă¼ hatalı" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "%(id)s'dan %(host)s sunucusuna örnek gĂ¶Ă§Ă¼ hatalı" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "KĂ¼meler %s iÅŸlemine sahip deÄŸil" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "Geçersiz istek gövdesi" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "%s id'li sistem görĂ¼ntĂ¼sĂ¼ siliniyor" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 #, fuzzy msgid "Network driver does not support this function." msgstr "Misafir sistem sĂ¼rĂ¼cĂ¼sĂ¼ gĂ¼venlik duvarı kurallarını desteklemiyor" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "Ă–zellik desteklenmiyor: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "%s VLAN arayĂ¼zĂ¼ baÅŸlatılıyor " #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Kural (%s) bulunamadı" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 #, fuzzy msgid "Cell name cannot be empty" msgstr "GĂ¼venlik grup adı boÅŸ bırakılamaz" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "Sadece kök sertifikası alınabilir." #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" "VPN örnekleri için IP talep edilemiyor, çalışmadığından emin olun ve " "birkaç dakika içerisinde tekrar deneyin" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "Tanınmayan zincir: %r" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "Ă–rnek tekrar boyutlandırılacak ÅŸekilde ayarlanmadı." #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "%s 'MANUAL' veya 'AUTO' olmak zorunda" #: nova/api/openstack/compute/contrib/evacuate.py:53 #, fuzzy msgid "host and onSharedStorage must be specified." msgstr "Sunucu ve blok_gĂ¶Ă§Ă¼ tanımlanmak zorunda." #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Kural (%s) bulunamadı" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "İstek gövdesi yok" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "Ă–rnek bulunamadı" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "%s havuzunda daha fazla deÄŸiÅŸken IP yok" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "Daha fazla deÄŸiÅŸken IP mevcut deÄŸil" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "%(address)s deÄŸiÅŸken IP adresi iliÅŸkilendirildi." #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "Parametre dizini eksik" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "Adres belirtilmedi" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "Ă–rnekle deÄŸiÅŸken IP iliÅŸkilendirilmedi" #: nova/api/openstack/compute/contrib/floating_ips.py:241 #, fuzzy msgid "Specified fixed address not assigned to instance" msgstr "Ă–rnekle deÄŸiÅŸken IP iliÅŸkilendirilmedi" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "%(address)s deÄŸiÅŸken IP adresi iliÅŸkilendirilemedi." #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "Kural (%s) bulunamadı" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "Geçersiz gĂ¼ncelleme ayarı: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "Geçersiz durum: %s" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Sunucu durumu gĂ¼ncelleniyor" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "addFixedlp için 'networkld' argĂ¼manı bulunamadı" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "removeFixedIp için 'address' argĂ¼manı bulunamadı" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "%r adresini bulmak olanaksız" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "%s id'si ile aÄŸ ayrılıyor" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "AÄŸ bulunamadı" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "%s id'si ile aÄŸ ayrılıyor" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "%s id'si ile aÄŸ ayrılıyor" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "%s id'li aÄŸ gösteriliyor" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "%s id'li aÄŸ siliniyor" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 #, fuzzy msgid "No CIDR requested" msgstr "İstenilen imaj dosyası bulunamadı" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "Kaynak bulunamadı." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "Tanımlı bir aÄŸ yok." #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "Bozuk scheduler_hints özelliÄŸi" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "Geçerli bir kuralı oluÅŸturmak için yeterli parametre yok." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Bu kural zaten grupta var %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "%s id'li aÄŸ gösteriliyor" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 #, fuzzy msgid "security group default rule not found" msgstr "%(rule_id)s kurallı gĂ¼venlik grubu bulunamadı." #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "Global ipv6 için yanlış sonek: %s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "GĂ¼venlik grubu belirlenmedi" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "GĂ¼venlik grup adı boÅŸ bırakılamaz" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "birim=%s" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "%s id'li birim siliniyor" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, fuzzy, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "Yanlış aÄŸ biçimi: aÄŸ UUID'si uygun formatta deÄŸil(%s)" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "%(device)s'daki %(server_id)s örneÄŸine %(volume_id)s birimi ekleniyor" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "%s biriminden sistem görĂ¼ntĂ¼sĂ¼ oluÅŸturuluyor" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "YĂ¼klenen bölĂ¼m: %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, fuzzy, python-format msgid "Ext version: %i" msgstr "Ext açıklaması: %s" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, fuzzy, python-format msgid "Running _create_extension_point for %s" msgstr "GeniÅŸletme fabrikası çağırılıyor %s" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, fuzzy, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "%(ext_factory)s uzantısı yĂ¼klemede hata: %(exc)s" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, fuzzy, python-format msgid "deployment to node %s failed" msgstr "eleman çocuk deÄŸil" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "Veritabanı hatası: %s" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "BaÅŸlangıç adresi" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 #, fuzzy msgid "No fixed IP found." msgstr "Hiç dinamik IP bulunamadı." #: nova/cmd/manage.py:358 #, fuzzy, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "Ă–rnekle deÄŸiÅŸken IP iliÅŸkilendirilmedi" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "id" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "IPv4" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "IPv6" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "BaÅŸlangıç adresi" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "DNS1" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "DNS2" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "VlanID" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "proje" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "uuid" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "AÄŸ bulunamadı" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "%r örneÄŸini tekrar yĂ¼kle" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "%(service_id)s servisi bulunamadı." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "%(service_id)s servisi bulunamadı." #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "BeklenmeyenHata: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 #, fuzzy msgid "PROJECT" msgstr "proje" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 #, fuzzy msgid "Unknown error" msgstr "Kimlik doÄŸrulama hatası" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "Veritabanı hatası: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "Veritabanı hatası: %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Ă–rnekleri sonlandırma iÅŸlemi baÅŸlatılıyor" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Ă–rnekleri sonlandırma iÅŸlemi baÅŸlatılıyor" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" "Eski örnek tĂ¼rĂ¼ %(current_instance_type_name)s, yeni örnek tĂ¼rĂ¼ " "%(new_instance_type_name)s" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "Anahtar çifti adı 1-255 karakter arası uzunluÄŸunda olmak zorunda" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "%s gĂ¼venlik grubu string veya unicode deÄŸil" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "%s gĂ¼venlik grubu boÅŸ bırakılamaz." #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "%s gĂ¼venlik grubu 255 karakterden fazla olmamalıdır." #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "%s gĂ¼venlik grubunu oluÅŸturunuz" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "%s gĂ¼venlik grubu zaten var" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Geçersiz gĂ¼ncelleme ayarı: '%s'" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "%s gĂ¼venlik grubunu siliniz" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "Kural (%s) bulunamadı" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "YetkilendirilmiÅŸ %s gĂ¼venlik grubu giriÅŸi" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "%s gĂ¼venlik grubu giriÅŸini iptal et" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "GĂ¼venlik grup id'si integer olmak zorunda" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "Veritabanı hatası: %s" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "Silme iÅŸlemi için %s örnek tĂ¼rĂ¼ bulunamadı" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "Mevcut (%(host)s) sunucusundan (%(instance_id)s) örneÄŸi geçirilemez." #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "Mevcut durum %(drv_state)s, veritabanındaki durum %(db_state)s." #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Ă–rnek kapatmada hata oluÅŸtu." #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "Misafir sistem sĂ¼rĂ¼cĂ¼sĂ¼ gĂ¼venlik duvarı kurallarını desteklemiyor" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "BeklenmeyenHata: %s" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "Durum kontrol ediliyor" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "Veritabanı hatası: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "Ă–rnek baÅŸlatılıyor.." #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "Ă–rnek aÄŸ_bilgisi: |%s|" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "Ă–rnek blok aygıtı kurulumu hatalı" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "Ă–rnek oluÅŸturmada hata" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "Ă–rnek için aÄŸ serbest bırakılıyor" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Ă–rnek için aÄŸ serbest bırakılıyor" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "%(action_str)s örneÄŸi" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "DiskBulunamadı yok sayılıyor: %s" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "Blok cihazı haritalandırması kapatılıyor %s" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Birimi ayır %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "%(num_images)d tane imaj bulundu(dönĂ¼ÅŸ: %(rotation)d)" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "İmaj siliniyor %s" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "Yönetici parolası oluÅŸturmada hata. %s örneÄŸi çalışmıyor." #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Ă–rnek kapatmada hata oluÅŸtu." #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "Veritabanı hatası: %s" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "Ă–rneÄŸin hiç bölĂ¼mĂ¼ yok." #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "dedef kaynak ile aynı!" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "Konsol ekleniyor" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "%(mountpoint)s'e %(volume_id)s bölĂ¼mĂ¼ baÄŸlanıyor" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "%(mp)s baÄŸlama noktasındaki %(volume_id)s bölĂ¼mĂ¼ ayrılıyor" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "%(mp)s baÄŸlama noktasındaki %(volume_id)s bölĂ¼mĂ¼ ayrılıyor" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "Bant geniÅŸliÄŸi kullanım önbelleÄŸi gĂ¼ncelleniyor" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Bant geniÅŸliÄŸi kullanım önbelleÄŸi gĂ¼ncelleniyor" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" "Veritabanında %(num_db_instances)s ve misafir sistemde " "%(num_vm_instances)s bulundu" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "Silinen örnek kurtarılıyor" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "İmaj siliniyor %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "%s örneÄŸi için sunucu bulma baÅŸarısız" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "Konsol ekleniyor" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "Var olmayan %(console_id)s konsolu kaldırılmaya çalışıldı." #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "%(console_id)s konsolu kaldırılıyor." #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Geçersiz bölĂ¼m" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "XVP ayarı yeniden oluÅŸturuluyor" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "%s yeniden yazıldı" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "XVP durduruluyor" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "XVP baÅŸlatılıyor" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "XVP baÅŸlatılırken hata oluÅŸtu: %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "XVP tekar baÅŸlatılıyor" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "XVP çalışmıyor..." #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "Tanınmayan silinmiÅŸ okuma deÄŸeri '%s'" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "%s geçerli bir örnek ismidir" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "%s geçerli bir örnek ismidir" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "%s geçerli bir örnek ismidir" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "%s geçerli bir örnek ismidir" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "%s geçerli bir örnek ismidir" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "SĂ¼rĂ¼m tam sayı olmak zorunda" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 #, fuzzy msgid "Unsupported id columns type" msgstr "Desteklenmeyen içerik tĂ¼rĂ¼" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "%(image_path)si için %(image_location)s indirme iÅŸlemi baÅŸarısız" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "%(image_path)s için %(image_location)s çözĂ¼mĂ¼ baÅŸarısız" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "%(image_path)s için %(image_location)s çıkarma iÅŸlemi baÅŸarısız" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "%(image_path)s için %(image_location)s yĂ¼kleme iÅŸlemi baÅŸarısız" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "Ă–zel anahtar çözĂ¼mĂ¼ baÅŸarısız: %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "BaÅŸlatma vektörĂ¼ çözĂ¼mĂ¼ baÅŸarısız: %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "%(image_file)s imaj dosyası çözĂ¼mĂ¼ baÅŸarısız: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "İmajda gĂ¼venliksiz dosya isimleri var" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "Global ipv6 için yanlış mac numarası: %s" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "Global ipv6 için yanlış sonek: %s" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "Global ipv6 için yanlış proje numarası: %s" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "%s id'li aÄŸ gösteriliyor" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "|%(address)s| adresi tahsis edilemedi" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "Sizin |%(project)s| projeniz için |%(address)s| adresi tahsis edilemedi" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "Bu tĂ¼rĂ¼cĂ¼ sadece 'a' tĂ¼rĂ¼ girdileri destekliyor." #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "Var olmayan %s zinciri kaldırılmaya çalışılıyor" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "Tanınmayan zincir: %r" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "%d sĂ¼reç numarası bozuldu, radvd tekrar baÅŸlatılıyor" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "%s VLAN arayĂ¼zĂ¼ baÅŸlatılıyor " #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "%s köprĂ¼sĂ¼ koruma altına alınıyor" #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "%(vlan)s vlan ve %(bridge)s köprĂ¼sĂ¼ koruma altına alınıyor" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Geçersiz bölĂ¼m" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "sil: %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "GĂ¼venlik grup id'si integer olmak zorunda" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, fuzzy, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" "%(project_id)s projesi için %(security_group_id)s gĂ¼venlik grubu " "bulunamadı." #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Bu kural zaten grupta var %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "XVP baÅŸlatılırken hata oluÅŸtu: %s" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "sil: %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "syslog servisi bunlardan biri olmak zorundadır: %s" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "%(full_task_name)s periyodik görevi çalışıyor" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "%(full_task_name)s sırasında hata: %(e)s" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "utils.execute için bilinmeyen anahtar kelime argĂ¼manları: %r" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Çalışan komut(alt sĂ¼reç): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Sonuç %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r hatalı. Yeniden deneniyor." #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Çalışan komut(SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "SSH Ă¼zerinde ortam desteklenmemektedir." #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "SSH Ă¼zerinde process_input desteklenmemektedir." #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, fuzzy, python-format msgid "Unknown byte multiplier: %s" msgstr "Bilinmeyen temel dosya: %s" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "Uygun servis çalışıyor mu?" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "BaÅŸka bir iÅŸlem bulunamadı" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, fuzzy, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "%(num_instances)d örnek(leri) kurulmaya çalışılıyor." #: nova/scheduler/filter_scheduler.py:83 #, fuzzy, python-format msgid "Request Spec: %s" msgstr "Geçersizİstek hatası: %s" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "%(instance_id)s örneÄŸi için aÄŸ bulunamadı." #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "%(hosts)s filtrelendi" #: nova/scheduler/filter_scheduler.py:337 #, fuzzy, python-format msgid "Weighed %(hosts)s" msgstr "%(hosts)s filtrelendi" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "%s iÅŸlem ID'si için servis yok" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "%(filename)s dosyası için zamanlayıcı seçenekleri baÅŸlatılamadı: '%(e)s'" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "VCPU ayarlanamadı, CPU koleksiyonunun bozulduÄŸu varsayılıyor" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Kurtarılmış model sunucu baÄŸlantısı!" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "Model sunucusu gitti." #: nova/servicegroup/drivers/mc.py:44 #, fuzzy msgid "memcached_servers not defined" msgstr "Sunucu adı tanımlanmadı" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "Komutun(alt sĂ¼recin) taklit çalıştırılması: %s" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "Sahte komut eÅŸleÅŸti %s" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "Sahte komut bir istisna fırlattı %s" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" "Sahte komuta verilen yanıt: standartçıktı='%(stdout)s' " "standarthata='%(stderr)s'" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "Ă–rnekler çalışıyor: %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "Ă–rnekleri sonlandırmanın ardından: %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "İçsel hata" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "Zorla öldĂ¼rĂ¼len örneklerin ardından: %s" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 #, fuzzy msgid "spawn error" msgstr "Kimlik doÄŸrulama hatası" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "Anahtar çifti verisi geçersiz" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "Ă–rnek tĂ¼rĂ¼: %s" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "Durum Kodu: %(_status)s\n" "Gövde: %(_body)s" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "Kimlik doÄŸrulama hatası" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "Yetkilendirme hatası" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "Ă–ÄŸe bulunamadı" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "%(relative_url)s'de %(method)s iÅŸlemleri yapılıyor" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "Gövde: %s" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => kodu %(http_status)s" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr " [%s] göstergesi bulunamadı" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "Konuk aracı benzetmek için %s'de dosyalar oluÅŸturuluyor" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "%s'deki benzetilmiÅŸ konuk aracı dosyaları kaldırılıyor" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "%(mountpoint)s'de %(volume_id)s bölĂ¼mĂ¼ ön yĂ¼kleniyor" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 #, fuzzy msgid "Unable to load the virtualization driver" msgstr "SanallaÅŸtırma sĂ¼rĂ¼cĂ¼sĂ¼ yĂ¼kleme baÅŸarısız: %s" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, fuzzy, python-format msgid "pid file %s does not contain any pid" msgstr "%s referansı versiyon içermiyor" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "Adres belirtilmedi" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "Sahte komuta verilen yanıt: standartçıktı='%(stdout)s' " "standarthata='%(stderr)s'" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "|%s| örneÄŸi için deÄŸiÅŸken IP tahsisi" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "%s örneÄŸi için konsol çıktısını getir" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "%s örneÄŸi için konsol çıktısını getir" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "%s örneÄŸi için konsol çıktısını getir" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "%s örneÄŸi için konsol çıktısını getir" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "%s örneÄŸi için konsol çıktısını getir" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "%s örneÄŸi için sunucu bulma baÅŸarısız" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "Adres belirtilmedi" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "%(image_file)s imaj dosyası çözĂ¼mĂ¼ baÅŸarısız: %(err)s" #: nova/virt/baremetal/utils.py:54 #, fuzzy, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "%(method)s zamanlaması baÅŸarısız: %(ex)s" #: nova/virt/baremetal/utils.py:63 #, fuzzy, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "%(base_file)s dosyasını kaldırma baÅŸarısız, %(error)s" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, fuzzy, python-format msgid "No fixed PXE IP is associated to %s" msgstr "Ă–rnekle deÄŸiÅŸken IP iliÅŸkilendirilmedi" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "%(interface)s arayĂ¼zĂ¼ bulunamadı" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "Sanal arayĂ¼z oluÅŸturma hatası" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "%s adresini serbest bırak" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "%s adresini serbest bırak" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, fuzzy, python-format msgid "Map dev %s" msgstr "%s anahtarını içeriye aktar" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "Yakalama hatası: %s" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "Yakalama hatası: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, fuzzy, python-format msgid "Inspecting guest OS image %s" msgstr "İmaj siliniyor %s" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "%(method)s zamanlaması baÅŸarısız: %(ex)s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "%(method)s zamanlaması baÅŸarısız: %(ex)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "%s adresini serbest bırak" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "GĂ¼ncel göç iÅŸlemi %(dest)s'da bir hata ile karşılaÅŸtı" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "Ă–ÄŸe bulunamadı" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "GĂ¼ncel göç iÅŸlemi %(dest)s'da bir hata ile karşılaÅŸtı" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, fuzzy, python-format msgid "vswitch \"%s\" not found" msgstr "Ă–rnek bulunamadı" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "oluÅŸtur: %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Ă–rnek için aÄŸ serbest bırakılıyor" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Ă–rnek baÅŸlatılıyor.." #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Tekrar yĂ¼kleme örneÄŸinde hata oluÅŸtu." #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "IP için metadata alma hata ile sonuçlandı: %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Blok cihazı haritalandırması kapatılıyor %s" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "%(device)s'daki %(instance_id)s örneÄŸine %(volume_id)s birimini baÄŸla" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Ă–rnekler durdurulacak" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "Tanımlı bir aÄŸ yok." #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "Tanımlı bir aÄŸ yok." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, fuzzy, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" "DiÄŸer hesaplama dĂ¼ÄŸĂ¼mlerini haberdar etmek için %s geçici dosyası " "oluÅŸturuluyor. DĂ¼ÄŸĂ¼mler aynı belleÄŸe baÄŸlanmalıdır." #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "Blok gĂ¶Ă§Ă¼ paylaşılan hafıza ile kullanılamaz." #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" "CPU uyumluluÄŸu yok. \n" " \n" " %(ret)s \n" " \n" " Bkz: %(u)s" #: nova/virt/libvirt/driver.py:4329 #, python-format msgid "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." msgstr "" "DiÄŸer hesaplama dĂ¼ÄŸĂ¼mlerini haberdar etmek için %s geçici dosyası " "oluÅŸturuluyor. DĂ¼ÄŸĂ¼mler aynı belleÄŸe baÄŸlanmalıdır." #: nova/virt/libvirt/driver.py:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, fuzzy, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" "plug_vifs() %(cnt)d kez baÅŸarısız oldu. %(hostname)s için %(max_retry)d " "denemeye kadar tekrar deneniyor." #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "Libvirt modĂ¼lĂ¼ yĂ¼klenemedi. AÄŸ filtre gĂ¼venlik duvarı doÄŸru çalışmıyor." #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "AÄŸ filtresinde temel filtreleme kurulumu çağırıldı" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "DuraÄŸan filtreler koruma altına alındı" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "%(name)s için (%(instance_filter_name)s) aÄŸ filtresi bulunamadı." #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "iptabloları gĂ¼venlik duvarı: Temel Filtreleme Kurulumu" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "%s geçerli bir örnek ismidir" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "%s bir disk dosyasına sahiptir" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "%(instance)s örneÄŸi %(backing)s tarafından desteklenmiÅŸtir" #: nova/virt/libvirt/imagecache.py:321 #, python-format msgid "" "Instance %(instance)s is using a backing file %(backing)s which does not " "appear in the image service" msgstr "" "%(instance)s örneÄŸi imaj servisinde görĂ¼nmeyen bir %(backing)s destek " "dosyasını kullanıyor" #: nova/virt/libvirt/imagecache.py:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "Temel dosya kaldırmak için çok yeni: %s" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "Temel dosya kaldırılıyor: %s" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "%(base_file)s dosyasını kaldırma baÅŸarısız, %(error)s" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "Temel imajları doÄŸrulayın" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "Bilinmeyen temel dosya: %s" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "Aktif temel dosyalar: %s" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "Bozuk temel dosyalar: %s" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "Taşınabilir temel dosyalar: %s" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "DoÄŸrulama tamamlandı" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "DoÄŸrulama atlanıyor, %s'de temel dizin yok" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "Beklenen nesne tĂ¼rĂ¼: %s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "%(vlan)s vlan ve %(bridge)s köprĂ¼sĂ¼ koruma altına alınıyor" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "%s köprĂ¼sĂ¼ koruma altına alınıyor" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "%s'de iSCSI cihazı bulunamadı" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, fuzzy, python-format msgid "AoE device not found at %s" msgstr "%s'de iSCSI cihazı bulunamadı" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 #, fuzzy msgid "Fibre Channel device not found." msgstr "%s'de iSCSI cihazı bulunamadı" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "iÅŸlem: %s" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "%s sistem görĂ¼ntĂ¼sĂ¼nden birim oluÅŸtur" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "%s sistem görĂ¼ntĂ¼sĂ¼nden birim oluÅŸtur" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "%r adresini bulmak olanaksız" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Geçersiz bölĂ¼m" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "%(host)s hesaplama sunucusu bulunamadı." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Ă–rnek tĂ¼r oluÅŸturulamıyor." #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "XVP tekar baÅŸlatılıyor" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 #, fuzzy msgid "No suitable network for migrate" msgstr "Hatalı aÄŸ biçimi" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "%s blok aygıt haritalandırması ayarlanıyor" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 #, fuzzy msgid "status must be 'in-use'" msgstr "İmaj mĂ¼sait olmak zorunda" #: nova/volume/cinder.py:227 #, fuzzy msgid "status must be 'available'" msgstr "İmaj mĂ¼sait olmak zorunda" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/sw_KE/0000775000175400017540000000000012323722546017122 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sw_KE/LC_MESSAGES/0000775000175400017540000000000012323722546020707 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sw_KE/LC_MESSAGES/nova.po0000664000175400017540000116546212323721510022217 0ustar jenkinsjenkins00000000000000# Swahili (Kenya) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Swahili (Kenya) " "(http://www.transifex.com/projects/p/openstack/language/sw_KE/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/es/0000775000175400017540000000000012323722545016520 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/es/LC_MESSAGES/0000775000175400017540000000000012323722546020306 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/es/LC_MESSAGES/nova.po0000664000175400017540000122345012323721510021606 0ustar jenkinsjenkins00000000000000# Spanish translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-05-16 06:44+0000\n" "Last-Translator: Paco Molinero \n" "Language-Team: Spanish \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Nombre de fichero de la CA raĂ­z" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Nombre de fichero de la clave privada" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Lista de nombre de archivo de root con certificado de revocacion" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Donde guardamos nuestras claves" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "DĂ³nde guardamos nuestra CA raĂ­z" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "¿DeberĂ­amos usar una CA para cada proyecto?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" "Sujeto (Subject) para el certificado de usuarios, %s para el proyecto, " "usuario, marca de tiempo" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" "Sujeto (Subject) para el certificado del proyecto, %s para el proyecto, " "marca de tiempo" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Fallo a reinicia la instancia" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Ruta a las opciones: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "Una excepcion desconocida ha ocurrido" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Fallo al desencriptar el texto" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Fallo al desencriptar el texto" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "Creacion de interfaz virtual fallida" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "No Autorizado" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "El usuario no tiene privilegios de administrador" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "La polĂ­tica no permite que la %(action)s se realice" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "La imagen %(image_id)s es inaceptable: %(reason)s" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "no hay mĂ©todo para el mensaje: %s" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "Parametros inaceptables" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "Volumen %(volume_id)s no estĂ¡ conectado con nada" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "La peticiĂ³n es invĂ¡lida." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "Rango de puertos invalido %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Protocolo IP invalido %(protocol)s" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Tipo de contenido invalido %(content_type)s." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "Cidr %(cidr)s invalido" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "La instacia %(instance_id)s no se esta ejecutando" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "La instancia %(instance_id)s no esta en modo de rescate" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "La instancia %(instance_id)s no esta en modo de rescate" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "El servicio no esta disponible en este momento" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "El servicio de computo no esta disponible en este momento" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" "Incapaz de emigrar la instancia %(instance_id)s al actual anfitrion " "(%(host)s)" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s no es una direccion IP v4/6 valida" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "Formato de disco %(disk_format)s no es aceptable" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "La imagen %(image_id)s es inaceptable: %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "Cidr %(cidr)s invalido" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "instancia %s: rescatada" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" "El punto de montaje %(mountpoint)s esta unido a la instancia " "%(instance_name)s" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "el grupo %s ya existe" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "configurando la red del host" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "Tipo de contenido invalido %(content_type)s." #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "el grupo de volumenes %s no existe" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "el grupo %s ya existe" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "No se puede unir la imagen con el loopback: %s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "No se puede unir la imagen con el loopback: %s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Vamos a ejecutar %s insntacias..." #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "Vamos a ejecutar %s insntacias..." #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "La instancia %(instance_id)s no esta en modo de rescate" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "La instancia %(instance_id)s no esta en modo de rescate" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "el grupo %s ya existe" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Fallo al generar metadatos para la ip %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Se detuvo un servicio sin entrada en la base de datos" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "No se encuentra la direcciĂ³n del enlace local.:%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "No se pudo obtener enlace de la ip local de %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "backend invĂ¡lido: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Imposible encontrar SR en VBD %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Imposible encontrar SR en VBD %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Imposible encontrar SR en VBD %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Demasiados intentos de autenticacion fallidos." #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "Fallo de autenticaciĂ³n: %s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Demasiados intentos de autenticacion fallidos." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "acciĂ³n: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Creando par de claves %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Borrar para de claves %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "No hay regla para los parĂ¡metros especificados." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "Obtener salida de la consola para la instancia %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Crear volumen de %s GB" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Desasociar volumen %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Asignar direcciĂ³n" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Liberar direcciĂ³n %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "Desasociar direcciĂ³n %s" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Desasociar direcciĂ³n %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Reiniciar instancia %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "Des-registrando la imagen %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "usuario o grupo no especificado" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "sĂ³lo el grupo \"all\" estĂ¡ soportado" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_type debe ser añadir o eliminar" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "Actualizando imagen %s pĂºblicamente" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "instancia %s: rescatada" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 #, fuzzy msgid "Invalid CIDR" msgstr "Cidr %(cidr)s invalido" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "La peticiĂ³n es invĂ¡lida." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Fallo al generar metadatos para la ip %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "Ha sucedido un error desconocido. Por favor repite el intento de nuevo." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Fallo al generar metadatos para la ip %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Capturado error: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "Obtenida excepciĂ³n %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "Firma invalida para el usuario %s" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "Firma invalida para el usuario %s" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "Vamos a ejecutar %s insntacias..." #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "Punto de montaje no puede ser traducido: %s" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "Punto de montaje no puede ser traducido: %s" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "instancia %s: rescatada" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Fallo a reinicia la instancia" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Fallo al suspender la instancia" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Fallo al suspender la instancia" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "atributo no soportado: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Iniciando interfaz VLAN %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "acciĂ³n: %s" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "Imposible desasociar volumen %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "instancia %s: rescatada" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "instancia %s: arrancada" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "el grupo %s ya existe" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "backend invĂ¡lido: %s" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Llanado al adquiridor %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Llanado al adquiridor %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "Firma invalida para el usuario %s" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "configurando la red del host" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Esta regla ya existe en el grupo %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Reiniciar instancia %r" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Reiniciar instancia %r" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "instancia %s: arrancada" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "Obtenida excepciĂ³n %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "no hay mĂ©todo para el mensaje: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "no hay mĂ©todo para el mensaje: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "Red a insertar en la configuraciĂ³n de openvpn" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "Mascara de red a insertar en la configuraciĂ³n de openvpn" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "Lanzando VPN para %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Imposible encontrar volumen %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "recibido %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "Capturado error: %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "configurando la red del host" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "Asignar direcciĂ³n" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "el grupo %s ya existe" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "configurando la red del host" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Reiniciar instancia %r" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "SucediĂ³ un error inexperado: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "Capturado error: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "Capturado error: %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "" "Quota de instancias superada. SĂ³lo puedes ejecutar %s instancias mĂ¡s de " "este tipo." #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "" "Quota de instancias superada. SĂ³lo puedes ejecutar %s instancias mĂ¡s de " "este tipo." #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Imposible adjuntar volumen a la instancia %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "Vamos a ejecutar %s insntacias..." #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "Comenzando snapshot para la VM %s" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "Crear Grupo de Seguridad %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Imposible destruir VBD %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Imposible destruir VBD %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "Revocar ingreso al grupo de seguridad %s" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Borrar grupo de seguridad %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Autorizar ingreso al grupo de seguridad %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "Revocar ingreso al grupo de seguridad %s" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" "Incapaz de emigrar la instancia %(instance_id)s al actual anfitrion " "(%(host)s)" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Fallo a reinicia la instancia" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Fallo al suspender la instancia" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "SucediĂ³ un error inexperado: %s" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "Capturado error: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "configurando la red del host" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Vamos a ejecutar %s insntacias..." #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Reiniciando instancia %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Fallo al generar metadatos para la ip %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Desasociar volumen %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "Reiniciando instancia %s" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "instancia %s: reiniciada" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "instancia %s: creando snapshot" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Fallo al suspender la instancia" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "Capturado error: %s" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "instancia %s: creando snapshot" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "instancia %s: obteniendo los diagnosticos" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "configurando la red del host" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "configurando la red del host" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "Obtener salida de la consola para la instancia %s" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "Desvinculando volumen de instancia desconocida %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Borrando usuario %s" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "instancia %s: arrancada" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Borrando usuario %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "Creando par de claves %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Volumen invĂ¡lido" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "Fallo al reiniciar el servidor" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Fallo a reinicia la instancia" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Fallo a reinicia la instancia" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "instancia %s: rescatada" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "instancia %s: rescatada" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "instancia %s: rescatada" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "instancia %s: rescatada" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "instancia %s: rescatada" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Fallo a reinicia la instancia" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "El pid %d estĂ¡ pasado, relanzando dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "ExcepciĂ³n al recargar la configuraciĂ³n de dnsmasq: %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "El pid %d estĂ¡ pasado, relanzando dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "Matando radvd lanzado %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d corrupto, relanzando radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "backend invĂ¡lido: %s" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Iniciando interfaz VLAN %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Iniciando interfaz puente para %s" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "Fallo al suspender la instancia" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "Iniciando interfaz puente para %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "Des-registrando la imagen %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "configurando la red del host" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Volumen invĂ¡lido" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "recibido %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "configurando la red del host" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Revocar ingreso al grupo de seguridad %s" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Esta regla ya existe en el grupo %s" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "recibido %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Ejecutando cmd (subprocesos): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "El resultado fue %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "corriendo cmd (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Conjunto completo de opciones (FLAGS):" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "configurando la red del host" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Recuperada la conexiĂ³n al servidor de modelos." #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "el servidor de modelos se ha ido" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "Intento de instanciar sigleton" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "Ejecutando instancias: %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "DespuĂ©s de terminar las instancias: %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "configurando la red del host" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "Fallo a reinicia la instancia" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "Obtener salida de la consola para la instancia %s" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Comando: %(cmd)s\n" "CĂ³digo de salida: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Creando una instancia raw" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "Obtener salida de la consola para la instancia %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Obtener salida de la consola para la instancia %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Tipo de instancia invĂ¡lido %(instance_type)s." #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "instancia %s: arrancada" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "Creacion de interfaz virtual fallida" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Liberar direcciĂ³n %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "Liberar direcciĂ³n %s" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "Fallo al montar el sistema de ficheros: %s" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "Fallo al montar el sistema de ficheros: %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "Fallo al suspender la instancia" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "No se puede unir la imagen con el loopback: %s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "Capturado error: %s" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "Capturado error: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "configurando la red del host" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "Fallo al montar el sistema de ficheros: %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Creando una instancia raw" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Imposible encontrar volumen %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Imposible encontrar volumen %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Fallo al montar el sistema de ficheros: %s" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Fallo al montar el sistema de ficheros: %s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Imposible encontrar volumen %s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "Obtener salida de la consola para la instancia %s" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Liberar direcciĂ³n %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Fallo de autenticaciĂ³n: %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "Se va a iniciar la finalizaciĂ³n de las instancias" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Llanado al adquiridor %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Lanzando VPN para %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Borrando usuario %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Creando una instancia raw" #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "configurando la red del host" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "Comenzando snapshot para la VM %s" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Creando una instancia raw" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "Obtener salida de la consola para la instancia %s" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Creando una instancia raw" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Imposible destruir VBD %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Reiniciar instancia %r" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Reiniciar instancia %r" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Fallo al suspender la instancia" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Reiniciar instancia %r" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Fallo al generar metadatos para la ip %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Borrando usuario %s" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "configurando la red del host" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Imposible adjuntar volumen a la instancia %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Creando una instancia raw" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "Conectando a libvirt: %s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "ConexiĂ³n a libvirt rota" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "Conectando a libvirt: %s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Vamos a ejecutar %s insntacias..." #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "instancia %s: reiniciada" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "El usuario no tiene privilegios de administrador" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Fallo al generar metadatos para la ip %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Iniciando interfaz puente para %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "el grupo %s ya existe" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "acciĂ³n: %s" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "Vamos a ejecutar %s insntacias..." #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "Creando una instancia raw" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "Des-registrando la imagen %s" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "Des-registrando la imagen %s" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "Vamos a ejecutar %s insntacias..." #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Borrando usuario %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "instancia %s: rescatada" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Borrando usuario %s" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Imposible encontrar volumen %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Re-escaneando SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Re-escaneando SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" "El punto de montaje %(mountpoint)s esta unido a la instancia " "%(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Imposible encontrar volumen %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Imposible desasociar volumen %s" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" "El punto de montaje %(mountpoint)s se desligĂ³ de la instancia " "%(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "Llanado al adquiridor %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Lanzando NotImplemented" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake no tiene una implementaciĂ³n para %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Llanado al adquiridor %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Llanado al adquiridor %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake no tiene una implementaciĂ³n para %s o ha sido llamada con un " "nĂºmero incorrecto de argumentos" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "La instacia %(instance_id)s no esta suspendida" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Fallo a reinicia la instancia" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "Encontrada una red no Ăºnica para el puente %s" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "No se ha encontrado red para el puente %s" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD no encontrado en la instancia %s" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "el grupo %s ya existe" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "Imposible desconectar VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "Imposible destruir VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "Creado el VBD %(vbd_ref)s para VM %(vm_ref)s, VDI %(vdi_ref)s" #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "Creado el VBD %(vbd_ref)s para VM %(vm_ref)s, VDI %(vdi_ref)s" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "VDI creado %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s) " "sobre %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "Comenzando snapshot para la VM %s" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Tamaño para imagen %(image)s:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "Copiando VDI %s a /boot/guest on dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk VDI %s destruĂ­do" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "Fallo a reinicia la instancia" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s estĂ¡ todavĂ­a disponible" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s tiene origen en %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Iniciando interfaz puente para %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "Creando una instancia raw" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "Fallo al suspender la instancia" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "Finalizado el snapshot y la subida de la VM %s" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Fallo a reinicia la instancia" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "configurando la red del host" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "Creando VIF para VM %(vm_ref)s, red %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Lanzando VPN para %s" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "Imposible encontrar SR en VBD %s" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "Incapaz de insertar VDI en SR %s" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "Imposible obtener copia del VDI %s en" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "Inposible insertar VDI para SR %s" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Punto de montaje no puede ser traducido: %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "Obtenida excepciĂ³n %s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/eu/0000775000175400017540000000000012323722545016522 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/eu/LC_MESSAGES/0000775000175400017540000000000012323722546020310 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/eu/LC_MESSAGES/nova.po0000664000175400017540000116541312323721510021614 0ustar jenkinsjenkins00000000000000# Basque translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-11-06 08:19+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Basque " "(http://www.transifex.com/projects/p/openstack/language/eu/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ml_IN/0000775000175400017540000000000012323722545017107 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ml_IN/LC_MESSAGES/0000775000175400017540000000000012323722546020675 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ml_IN/LC_MESSAGES/nova.po0000664000175400017540000116544412323721510022205 0ustar jenkinsjenkins00000000000000# Malayalam (India) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-11-22 05:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Malayalam (India) " "(http://www.transifex.com/projects/p/openstack/language/ml_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ka_GE/0000775000175400017540000000000012323722545017057 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ka_GE/LC_MESSAGES/0000775000175400017540000000000012323722546020645 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ka_GE/LC_MESSAGES/nova.po0000664000175400017540000116546112323721510022154 0ustar jenkinsjenkins00000000000000# Georgian (Georgia) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Georgian (Georgia) " "(http://www.transifex.com/projects/p/openstack/language/ka_GE/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/zh_CN/0000775000175400017540000000000012323722546017113 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/zh_CN/LC_MESSAGES/0000775000175400017540000000000012323722546020700 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/zh_CN/LC_MESSAGES/nova.po0000664000175400017540000132171512323721510022203 0ustar jenkinsjenkins00000000000000# Chinese (Simplified) translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-05-07 06:51+0000\n" "Last-Translator: Edward \n" "Language-Team: Chinese (Simplified) \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "å—设备列表 block_device_list %s" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "æ ¹è¯ä¹¦ç„文件å" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "ç§é’¥æ–‡ä»¶å" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "æ ¹è¯ä¹¦æ’¤é”€åˆ—è¡¨ç„æ–‡ä»¶å" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "ä¿å­˜å¯†é’¥ç„ä½ç½®" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "ä¿å­˜æ ¹è¯ä¹¦ç„ä½ç½®" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "æ˜¯å¦æ¯ä¸ªé¡¹ç›®éƒ½ä½¿ç”¨è®¤è¯æƒå¨ï¼Ÿ" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "用户è¯ä¹¦ç„标题,%s 便¬¡åˆ†åˆ«ä¸ºé¡¹ç›®ï¼Œç”¨æˆ·ï¼Œæ—¶é—´æˆ³" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "项目è¯ä¹¦ç„标题,%s 便¬¡åˆ†åˆ«ä¸ºé¡¹ç›®ï¼Œæ—¶é—´æˆ³" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 #, fuzzy msgid "Unable to find the key" msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "标记所在路径ï¼%s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "å‘ç”ŸæœªçŸ¥å¼‚å¸¸ă€‚" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "解密文本失败" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "解密文本失败" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "è™æ‹Ÿæ¥å£åˆ›å»ºå¤±è´¥" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "æœªæˆæƒă€‚" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "用户没有管ç†å‘˜æƒé™" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "政策ä¸å…许 %(action)s è¢«æ‰§è¡Œă€‚" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "é•œåƒ %(image_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "æ²¡æœ‰ä¸ºé•œåƒ %(image_id)s æ‰¾åˆ°å†…æ ¸ă€‚" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "无法æ¥å—ç„傿•°ă€‚" #: nova/exception.py:195 #, fuzzy msgid "Block Device Mapping is Invalid." msgstr "block_device_mapping %s" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "å· %(volume_id)s 没有附å ä»»ä½•东西" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "è¯·æ±‚æ— æ•ˆă€‚" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "无效ç„端å£èŒƒå›´ %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "无效ç„IPåè®® %(protocol)s。" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "无效ç„å†…å®¹ç±»å‹ %(content_type)s。" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "无效ç„cidr %(cidr)s。" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "无法执行action '%(action)s' äºèåˆ %(aggregate_id)s ä¸ă€‚åŸå› ï¼ %(reason)s。" #: nova/exception.py:329 #, fuzzy, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "找ä¸åˆ°æœ‰æ•ˆä¸»æœºï¼ŒåŸå› æ˜¯ %(reason)s。" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "å®ä¾‹ %(instance_uuid)s 处äº%(attr)s %(state)s ä¸­ă€‚è¯¥å®ä¾‹åœ¨è¿™ç§ç¶æ€ä¸‹ä¸èƒ½æ‰§è¡Œ %(method)s。" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "å®ä¾‹ %(instance_id)s 没有è¿è¡Œă€‚" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "å®ä¾‹ %(instance_id)s ä¸åœ¨æ•‘æ´æ¨¡å¼ă€‚" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "å®ä¾‹ %(instance_id)s ä¸åœ¨æ•‘æ´æ¨¡å¼ă€‚" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "å®ä¾‹ %(instance_id)s æ²¡æœ‰æŒ‚èµ·ă€‚" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "此时ç„付ä¸å¯ç”¨ă€‚" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "此时ç„计算æœå¡ä¸å¯ç”¨ă€‚" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "无法æå®ä¾‹ (%(instance_id)s) è¿ç§»åˆ°å½“å‰ä¸»æœº (%(host)s)。" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "æä¾›ç„è™æ‹Ÿæœºç®¡ç†ç¨‹åºç±»å‹æ— æ•ˆă€‚" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "该å®ä¾‹éœ€è¦æ¯”当å‰ç‰ˆæœ¬æ›´æ–°ç„è™æ‹Ÿæœºç®¡ç†ç¨‹åºă€‚" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "æä¾›ç„ç£ç›˜è·¯å¾„ (%(path)s) å·²ç»å­˜åœ¨ï¼Œé¢„计是ä¸å­˜åœ¨ç„。" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "æä¾›ç„设备路径 (%(path)s) 是无效ç„。" #: nova/exception.py:433 #, fuzzy, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "æä¾›ç„设备路径 (%(path)s) 是无效ç„。" #: nova/exception.py:438 #, fuzzy, python-format msgid "The supplied device (%(device)s) is busy." msgstr "æä¾›ç„设备路径 (%(path)s) 是无效ç„。" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s 䏿˜¯æœ‰æ•ˆç„IP v4/6地å€ă€‚" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "VLAN标签对äºç«¯å£ç»„%(bridge)s 是ä¸é€‚åˆç„ă€‚é¢„è®¡ç„VLAN标签是 %(tag)s,但ä¸ç«¯å£ç»„å…³è”ç„æ˜¯ %(pgroup)s。" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" "包å«ç«¯å£ç»„ %(bridge)s ç„vSwitch没有ä¸é¢„计ç„物ç†é€‚é…器关è”ă€‚é¢„è®¡ç„vSwitch是 %(expected)s,但关è”ç„æ˜¯ " "%(actual)s。" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "ç£ç›˜æ ¼å¼ %(disk_format)s ä¸èƒ½æ¥å—" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "é•œåƒ %(image_id)s 无法æ¥å—,åŸå› æ˜¯ï¼ %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "å®ä¾‹ %(instance_id)s 无法æ¥å—,åŸå› æ˜¯ï¼ %(reason)s" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "Ec2 id %(ec2_id)s 无法æ¥å—。" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "无效ç„cidr %(cidr)s。" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "å®ä¾‹ - %s ä¸å­˜åœ¨" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "èµ„æºæ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:497 #, fuzzy, python-format msgid "No agent-build associated with id %(id)s." msgstr "没有固å®IPä¸id %(id)s å…³è”。" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "å· %(volume_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "å¿«ç…§ %(snapshot_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "在 %(location)s 没有ç£ç›˜" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "无法为 %(driver_type)s å·æ‰¾åˆ°å¥æŸ„。" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "无效ç„镜åƒhref %(image_href)s。" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "é•œåƒ %(image_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "项目 %(project_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "没有找到存储库æ¥è¯»å†™VDI。" #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "网络 %(network_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:566 #, fuzzy, python-format msgid "Network %(network_id)s is still in use." msgstr "网络 %(network_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "创建网络 %(req)s 是必è¦ç„。" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "网络 %(network_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "å¿«ç…§ %(snapshot_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "无法为桥 %(bridge)s 找到网络" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "无法为uuid %(uuid)s 找到网络" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "无法为cidr %(cidr)s æ‰¾åˆ°ç½‘ç»œă€‚" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "无法为å®ä¾‹ %(instance_id)s æ‰¾åˆ°ç½‘ç»œă€‚" #: nova/exception.py:598 msgid "No networks defined." msgstr "没有网络å®ä¹‰ă€‚" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "æ— æ³•æ‰¾åˆ°è™æ‹Ÿæœºä½¿ç”¨ç„æ•°æ®å­˜å‚¨å¼•用。" #: nova/exception.py:625 #, fuzzy, python-format msgid "Port %(port_id)s is still in use." msgstr "网络 %(network_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "无法为å®ä¾‹ %(instance_id)s æ‰¾åˆ°ç½‘ç»œă€‚" #: nova/exception.py:637 #, fuzzy, python-format msgid "No free port available for instance %(instance)s." msgstr "无法为å®ä¾‹ %(instance_id)s æ‰¾åˆ°ç½‘ç»œă€‚" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "没有固å®IPä¸id %(id)s å…³è”。" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "æ²¡æœ‰ä¸ºåœ°å€ %(address)s 找到固å®IP。" #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "å®ä¾‹ %(instance_id)s 没有固å®ip。" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "网络主机 %(host)s 在网络 %(network_id)s 中没有固å®ip。" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "å®ä¾‹ %(instance_id)s 没有固å®ip '%(ip)s'。" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "固å®IPåœ°å€ (%(address)s) 在网络 (%(network_uuid)s) 中ä¸å­˜åœ¨ă€‚" #: nova/exception.py:671 #, fuzzy, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "固å®IPåœ°å€ %(address)s å·²åœ¨ä½¿ç”¨ă€‚" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "固å®IPåœ°å€ %(address)s æ— æ•ˆă€‚" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "没有固å®ipå¯ç”¨ă€‚" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "找ä¸åˆ°å›ºå®IP。" #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "æµ®å¨ip %(address)s 已被关è”。" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "找ä¸åˆ°é€‚åˆid %(id)s ç„æµ®å¨IP。" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "DNS å…¥å£ %(name)s å·²ç»åœ¨åŸŸä¸­ %(domain)s å­˜åœ¨ă€‚" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "找ä¸åˆ°é€‚åˆåœ°å€ %(address)s ç„æµ®å¨ip。" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "没有为主机 %(host)s 找到浮å¨IP。" #: nova/exception.py:715 #, fuzzy, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "找ä¸åˆ°é€‚åˆåœ°å€ %(address)s ç„æµ®å¨ip。" #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "没有找到floating_ip" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "没有浮å¨IPå¯ç”¨ă€‚" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "æµ®å¨ip %(address)s 已被关è”。" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "æµ®å¨ip %(address)s 没有被关è”。" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "没有浮å¨ipå­˜åœ¨ă€‚" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "æ¥å£ %(interface)sæ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "密钥对 %(name)s 没有为用户 %(user_id)s æ‰¾åˆ°ă€‚" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "æœå¡ %(service_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "主机 %(host)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "计算主机 %(host)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "没有找到二进制 %(binary)s 在主机 %(host)s ä¸ă€‚" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "é…颿²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "没有为项目 %(project_id)s 找到é…é¢ă€‚" #: nova/exception.py:812 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "找ä¸åˆ°ç±» %(class_name)s ï¼å¼‚常 %(exception)s" #: nova/exception.py:816 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "没有为项目 %(project_id)s 找到é…é¢ă€‚" #: nova/exception.py:820 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "用户 %(user_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:824 #, fuzzy, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "扩展资æºï¼%s" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "安全组 %(security_group_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "没有找到安全组 %(security_group_id)s 针对项目 %(project_id)s 。" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "带有规则 %(rule_id)s ç„å®‰å…¨ç»„æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "安全组 %(security_group_id)s å·²ç»ä¸å®ä¾‹ %(instance_id)s å…³è”。" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "安全组 %(security_group_id)s 没有ä¸å®ä¾‹ %(instance_id)s å…³è”。" #: nova/exception.py:857 #, fuzzy, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "带有规则 %(rule_id)s ç„å®‰å…¨ç»„æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "è¿ç§» %(migration_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "没有为å®ä¾‹ %(instance_id)s 找到è¿ç§»å…¶ç¶æ€ä¸º %(status)s 。" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "æ§åˆ¶å°æ±  %(pool_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "æ²¡æœ‰æ‰¾åˆ°ç±»å‹æ˜¯ %(console_type)s ç„æ§åˆ¶å°æ± é’ˆå¯¹è®¡ç®—主机 %(compute_host)s 在代ç†ä¸»æœº %(host)s ä¸ă€‚" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "æ§åˆ¶å°%(console_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "没有为å®ä¾‹ %(instance_id)s 找到æ§åˆ¶å°ă€‚" #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "没有为å®ä¾‹ %(instance_id)s 在池 %(pool_id)s 中找到æ§åˆ¶å°ă€‚" #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "æ— æ•ˆç„æ§åˆ¶å°ç±»å‹ %(console_type)s " #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "ç±»å‹ %(flavor_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "å·ç»„ %s ä¸å­˜åœ¨" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 #, fuzzy msgid "Timeout waiting for response from cell" msgstr "等待RPCå“应超时ï¼%s" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "没有为å®ä¾‹ %(instance_id)s 找到å·ă€‚" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "调度器主机过滤器 %(filter_name)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "找ä¸åˆ°æ–‡ä»¶ %(file_path)s。" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "没找到文件" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "未找到ä¸ç½‘络适é…器 %(adapter)s å…³è”ç„è™æ‹Ÿäº¤æ¢æœºă€‚" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "未找到网络适é…器 %(adapter)s。" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "找ä¸åˆ°ç±» %(class_name)s ï¼å¼‚常 %(exception)s" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "æ“作ä¸å…è®¸ă€‚" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "å¿«ç…§ä¸å…许循ç¯ă€‚" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "备份 image_type è¦æ±‚循ç¯å‚æ•°ă€‚" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "密钥对 %(key_name)s å·²ç»å­˜åœ¨ă€‚" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "å®ä¾‹ %(name)s å·²ç»å­˜åœ¨ă€‚" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, fuzzy, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "%(path)s 在共享存储ä¸ï¼%(reason)s" #: nova/exception.py:1049 #, fuzzy, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "%(path)s 在共享存储ä¸ï¼%(reason)s" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "错误格å¼ç„消æ¯ä½“ï¼ %(reason)s" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "在 %(path)s 找ä¸åˆ°é…ç½®æ–‡ä»¶ă€‚" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "无法ä»è·¯å¾„ %(path)s 中å è½½åº”用 '%(name)s'" #: nova/exception.py:1075 #, fuzzy msgid "When resizing, instances must change flavor!" msgstr "调整时å®ä¾‹ç„大å°å¿…é¡»è¦å‘生å˜åŒ–。" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "没有足够ç„å¯ç”¨å†…å­˜æ¥å¯å¨è®¡ç®—è‚点 %(uuid)s。" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "找ä¸åˆ°æœ‰æ•ˆä¸»æœºï¼ŒåŸå› æ˜¯ %(reason)s。" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, fuzzy, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图è¿è¡Œ %(min_count)s 个å®ä¾‹" #: nova/exception.py:1116 #, fuzzy msgid "Maximum number of floating ips exceeded" msgstr "æ‰€é€‰æ‹©ä¸»æœºç„æœ€å¤§æ•°ç›®(%d)" #: nova/exception.py:1120 #, fuzzy msgid "Maximum number of fixed ips exceeded" msgstr "æ‰€é€‰æ‹©ä¸»æœºç„æœ€å¤§æ•°ç›®(%d)" #: nova/exception.py:1124 #, fuzzy, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "æ‰€é€‰æ‹©ä¸»æœºç„æœ€å¤§æ•°ç›®(%d)" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "超过个性化文件é™åˆ¶" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "个性化文件路径太长" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "个性化文件内容太长" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 #, fuzzy msgid "Maximum number of key pairs exceeded" msgstr "æ‰€é€‰æ‹©ä¸»æœºç„æœ€å¤§æ•°ç›®(%d)" #: nova/exception.py:1145 #, fuzzy msgid "Maximum number of security groups or rules exceeded" msgstr "æ‰€é€‰æ‹©ä¸»æœºç„æœ€å¤§æ•°ç›®(%d)" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, fuzzy, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "èåˆ %(aggregate_id)s没有主机 %(host)s。" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "找ä¸åˆ°èåˆ %(aggregate_id)s。" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "èåˆ %(aggregate_name)s å·²ç»å­˜åœ¨ă€‚" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "èåˆ %(aggregate_id)s没有主机 %(host)s。" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "èåˆ %(aggregate_id)s 没有键为 %(metadata_key)s ç„元数æ®ă€‚" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "èåˆ %(aggregate_id)så·²ç»æœ‰ä¸»æœº %(host)s。" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, fuzzy, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "设置管ç†å‘˜å¯†ç å¤±è´¥ă€‚å®ä¾‹ %s 没有è¿è¡Œ" #: nova/exception.py:1189 #, fuzzy, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "检测到已存在ç„id为%(vlan) vlan" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "å®ä¾‹ %(instance_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "没有为å®ä¾‹ %(instance_id)s 找到æ§åˆ¶å°ă€‚" #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "å· %(volume_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "å¿«ç…§ %(snapshot_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "é•œåƒ %(image_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "è·å–é•œåƒ %(image)s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "è·å–é•œåƒ %(image)s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, fuzzy, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "没有为主机 %(host)s 找到浮å¨IP。" #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "没有找到å®ä¾‹ %(instance_id)s" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "釿”¾å®ä¾‹ç„网络" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "釿”¾å®ä¾‹ç„网络" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "æå· %(volume_id)s 附å åˆ°å®ä¾‹ %(instance_id)s ä¸ä½ç½®åœ¨ %(device)s" #: nova/exception.py:1291 #, fuzzy, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "密钥对 %(name)s 没有为用户 %(user_id)s æ‰¾åˆ°ă€‚" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, fuzzy, python-format msgid "The CA file for %(project)s could not be found" msgstr "没有为项目 %(project_id)s 找到é…é¢ă€‚" #: nova/exception.py:1304 #, fuzzy, python-format msgid "The CRL file for %(project)s could not be found" msgstr "项目 %(project_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "å®ä¾‹ %(instance_id)s ä¸åœ¨æ•‘æ´æ¨¡å¼ă€‚" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "å®ä¾‹ %(instance_id)s ä¸åœ¨æ•‘æ´æ¨¡å¼ă€‚" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "å®ä¾‹ç±»å‹ %(name)s å·²ç»å­˜åœ¨ă€‚" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "期望ç„对象类å‹ï¼%s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "为ipï¼ %sè·å–元数æ®å¤±è´¥" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "JSONæ–‡ä»¶è¡¨ç¤ºç­–ç•¥ă€‚" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "请求ç„规则找ä¸åˆ°æ—¶ç„检查缺çœè§„åˆ™ă€‚" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "å¯å¨ %(topic)s è‚点 (版本 %(vcs_string)s)" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "å› æ— æ•°æ®åº“记录,æœå¡å·²è¢«ä¸­æ­¢" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "本地IPåœ°å€æ²¡æœ‰æ‰¾åˆ°ï¼%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "æ— æ³•è¿æ¥åˆ° %(interface)s ç„æœ¬åœ°IPï¼%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "无效ç„åå°ï¼%s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "期望ç„对象类å‹ï¼%s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "䏿­£ç¡®ç„server_stringï¼%s" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, fuzzy, python-format msgid "Reloading cached file %s" msgstr "正在删除基文件ï¼%s" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, fuzzy, python-format msgid "Could not remove tmpdir: %s" msgstr "移除容器失败ï¼%s" #: nova/utils.py:966 #, fuzzy, python-format msgid "%s is not a string or unicode" msgstr "æœå¡å™¨åç§°ä¸æ˜¯å­—符串或者unicode" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, fuzzy, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "å¯å¨%(name)s ä½ç½®åœ¨ %(host)s:%(port)s" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "关闭WSGIæœå¡å™¨" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "WSGIæœå¡å™¨å·²ç»åœæ­¢ă€‚" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "你必须执行 __call__" #: nova/wsgi.py:500 #, fuzzy, python-format msgid "Loading app %(name)s from %(path)s" msgstr "无法ä»è·¯å¾„ %(path)s 中å è½½åº”用 '%(name)s'" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "FaultWrapper: %s" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "认è¯å¤±è´¥è¿‡å¤" #: nova/api/ec2/__init__.py:167 #, 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 "访问密钥 %(access_key)s 有错误 %(failures)d,认è¯å¤±è´¥å°†è¢«é”å® %(lock_mins)d åˆ†é’Ÿă€‚" #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "ç­¾åæ²¡æœ‰æä¾›" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "访问密钥没有æä¾›" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "ä¸keystone交æµå¤±è´¥" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "预在线è¿ç§»åœ¨%(dest)s失败" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "认è¯å¤±è´¥è¿‡å¤" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "执行: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "arg: %(key)s\t\tval: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "为controller=%(controller)s 以å action=%(action)s未验è¯ç„请求" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "Environment: %s" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "䏿”¯æŒç„API请求ï¼controller = %(controller)s,action = %(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "åˆ›å»ºå· %s ç„å¿«ç…§" #: nova/api/ec2/cloud.py:418 #, fuzzy, python-format msgid "Could not find key pair(s): %s" msgstr "解密ç§é’¥å¤±è´¥ï¼%s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "创建密钥对 %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "导入密钥 %s" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "删除密钥对 %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "对给å®ç„傿•°æ— ç‰¹å®è§„åˆ™ă€‚" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "è·å–å®ä¾‹ %s æ§åˆ¶å°è¾“出" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "ä»å¿«ç…§ %s 创建å·" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "创建 %s GBç„å·" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "æå· %(volume_id)s 附å åˆ°å®ä¾‹ %(instance_id)s ä¸ä½ç½®åœ¨ %(device)s" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "åˆ†ç¦»å· %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "vol = %s\n" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "分é…地å€" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "釿”¾åœ°å€ %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "æåœ°å€ %(public_ip)s å…³è”到å®ä¾‹ %(instance_id)s" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, fuzzy, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "存在å¤ä¸ªå›ºå®IP,使用第一个ï¼%s" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "å–æ¶ˆåœ°å€ %s ç„å…³è”" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "镜åƒå¿…é¡»å¯ç”¨ă€‚" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "准备开始终止å®ä¾‹" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "é‡å¯å®ä¾‹ %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "å‡†å¤‡åœæ­¢å®ä¾‹" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "准备å¯å¨å®ä¾‹" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "è§£é™¤é•œåƒ %s ç„æ³¨å†Œ" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "用id %(image_id)s æ³¨å†Œé•œåƒ %(image_location)s" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "用户或者组没有确å®" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "仅仅支æŒç»„\"all\"" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_typeå¿…é¡»æ·»å æˆ–者移除" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "æ­£åœ¨æ›´æ–°é•œåƒ %s ç„ publicity 屿€§" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 #, fuzzy msgid "Expecting a list of resources" msgstr "è·å–å®ä¾‹åˆ—表" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "å®ä¾‹ - %s ä¸å­˜åœ¨" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 #, fuzzy msgid "Expecting a list of tagSets" msgstr "è·å–å®ä¾‹åˆ—表" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 #, fuzzy msgid "Invalid CIDR" msgstr "无效ç„" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "è¯·æ±‚æ— æ•ˆă€‚" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "为ipï¼ %sè·å–元数æ®å¤±è´¥" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "å‘生了一个未知ç„错误. 请é‡è¯•ä½ ç„请求." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 #, fuzzy msgid "Invalid proxy request signature." msgstr "无效ç„请求ï¼%s" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "为ipï¼ %sè·å–元数æ®å¤±è´¥" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "æ“到错误ï¼%s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s éHTTP %(status)dè¿”å›" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "å¿…é¡»æ˜ç¡®ä¸€ä¸ªExtensionManagerç±»" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "扩展%(ext_name)sï¼æ— æ³•æ‰©å±•èµ„æº %(collection)sï¼æ²¡æœ‰é‚£ç§èµ„æº" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, fuzzy, python-format msgid "v3 API Extension Blacklist: %s" msgstr "è°ƒç”¨æ‰©å±•å·¥å‚ %s" #: nova/api/openstack/__init__.py:301 #, fuzzy, python-format msgid "v3 API Extension Whitelist: %s" msgstr "正在å è½½æ‰©å±• %s" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "正在å è½½æ‰©å±• %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "扩展资æºï¼%s" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "扩展资æºç„扩展 %(ext_name)sï¼%(collection)s" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "offset 傿•°å¿…须是整数" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "limit 傿•°å¿…须是整数" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "limit傿•°å¿…须是正数" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "offset 傿•°å¿…须是正数" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "没有找到标记 [%s]" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "href %s ä¸åŒ…å«ç‰ˆæœ¬" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "超过镜åƒå…ƒæ•°æ®é™åˆ¶" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 #, fuzzy msgid "Invalid image metadata" msgstr "无效ç„元数æ®" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "'%(action)s' é’ˆå¯¹å¤„äº %(attr)s %(state)s ç„å®ä¾‹æ˜¯æ— æ³•进行" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, fuzzy, python-format msgid "Instance is in an invalid state for '%s'" msgstr "å®ä¾‹é’ˆå¯¹ '%(action)s' å¤„äºæ— æ•ˆç¶æ€" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "æ‹’ç»å¿«ç…§è¯·æ±‚ï¼Œå¿«ç…§å½“å‰æœªè¢«æ¿€æ´»" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "该时刻å®ä¾‹å¿«ç…§æ˜¯ä¸å…许ç„。" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "å è½½ç„扩展ï¼%s" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "Ext name: %s" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "Ext alias: %s" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "Ext æè¿°: %s" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "Ext 命å空间: %s" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Ext updated: %s" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "å è½½æ‰©å±•å‘生异常ï¼%s" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "正在å è½½æ‰©å±• %s" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "è°ƒç”¨æ‰©å±•å·¥å‚ %s" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "å è½½æ‰©å±• %(ext_factory)s 失败ï¼%(exc)s" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "å è½½æ‰©å±• %(classpath)s 失败ï¼%(exc)s" #: nova/api/openstack/extensions.py:372 #, fuzzy, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "å è½½æ‰©å±• %(ext_name)s 失败ï¼%(exc)s" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "无法ç†è§£JSON" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "过å¤ä¸»ä½“密钥" #: nova/api/openstack/wsgi.py:693 #, fuzzy, python-format msgid "Exception handling resource: %s" msgstr "扩展资æºï¼%s" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "错误æ›å‡º: %s" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "HTTP 异常æ›å‡ºï¼%s" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "请求中æä¾›äº†æ— æ³•è¯†åˆ«ç„ Content-Type" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "没有该å¨ä½œï¼%s" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "错误格å¼ç„请求主体" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "䏿”¯æŒç„Content-Type" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "å…ƒç´ ä¸æ˜¯å­è‚点" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "根元素选择列表" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "æ¨¡æ¿æ•°ä¸åŒ¹é…ï¼›æslave %(slavetag)s æ·»å åˆ°master %(mastertag)s" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "subclasses必须执行construct()!" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "正在åˆå§‹åŒ–扩展管ç†å‘˜ă€‚" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "用户 %s ç„ç­¾åæ— æ•ˆ" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "用户 %s ç„ç­¾åæ— æ•ˆ" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "é•œåƒæ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "䏿­£ç¡®ç„请求主体格å¼" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "请求主体和URIä¸åŒ¹é…" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "请求主体包å«å¤ªå¤items" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "无效ç„元数æ®é”®" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "å®ä¾‹ä¸å­˜åœ¨" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "å®ä¾‹å¹¶ä¸æ˜¯æŒ‡å®ç½‘ç»œç„æˆå‘˜" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "åªèƒ½æœ‰ %(value)s 个 %(verb)s 请求å‘é€ç»™ %(uri)s é™å®æ˜¯æ¯ä¸€ä¸ª %(unit_string)s。" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "这个请求å—到频ç‡é™åˆ¶ă€‚" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "æœå¡å™¨ä¸å­˜åœ¨" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "元数æ®é¡¹ç›®æœªæ‰¾åˆ°" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "无效ç„changes-since值" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "准备å°è¯•软删除å®ä¾‹ %s" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "主机 %(host)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "无法找到å®ä¾‹" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "错误ç„个性化格å¼ï¼ä¸¢å¤± %s" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "æŸåç„个性化格å¼" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "个性化 %s ç„内容无法解ç " #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, fuzzy, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "æŸåç„网络格å¼ï¼ç½‘络 uuid æ ¼å¼ä¸æ­£ç¡® (%s)" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "æŸåç„网络格å¼ï¼ç½‘络 uuid æ ¼å¼ä¸æ­£ç¡® (%s)" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "䏿­£ç¡®ç„å›ºå® IP 地å€(%s)" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "ä¸å…许é‡å¤ç„网络(%s)" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "错误ç„网络格å¼ï¼ä¸¢å¤±%s" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "错误ç„网络格å¼" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "Userdata 内容无法解ç " #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "accessIPv4 䏿˜¯æ­£ç¡®ç„IPv4æ ¼å¼" #: nova/api/openstack/compute/servers.py:760 #, fuzzy msgid "accessIPv6 is not proper IPv6 format" msgstr "accessIPv4 䏿˜¯æ­£ç¡®ç„IPv4æ ¼å¼" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "æœå¡å™¨å称未å®ä¹‰" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "æä¾›äº†æ— æ•ˆç„flavorRef。" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "无法找到请求ç„镜åƒ" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "æä¾›äº†æ— æ•ˆç„key_name。" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "idä¸èƒ½æ˜¯None" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "idä¸èƒ½æ˜¯None" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "å®ä¾‹è¿˜æ²¡æœ‰è°ƒæ•´å¤§å°ă€‚" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "å®ä¾‹ %(instance_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "é‡å¯ç„傿•°'type'æ—¢ä¸æ˜¯HARDä¹Ÿä¸æ˜¯SOFT" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "缺少é‡å¯ç„傿•°'type'" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "无法找到请求ç„ç±»å‹ă€‚" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 #, fuzzy msgid "Resize requires a flavor change." msgstr "调整大å°éœ€è¦å°ºå¯¸ç„改å˜ă€‚" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "å®ä¾‹ %(instance_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "%s 是一个正确ç„å®ä¾‹åç§°" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "ç¼ºå°‘å±æ€§imageRef" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "æä¾›äº†æ— æ•ˆç„imageRef。" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "ç¼ºå°‘å±æ€§flavorRef" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "没有确å®adminPass" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "无法解æå…ƒæ•°æ®é”®/值对" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "调整大å°è¯·æ±‚中ç„屿€§'flavorRef'æ— æ•ˆă€‚" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "调整大å°è¯·æ±‚è¦æ±‚æœ‰å±æ€§'flavorRef'。" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "无法解æè¯·æ±‚中ç„imageRef。" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "无法找到用æ¥é‡æ–°åˆ›å»ºç„镜åƒ" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "å®ä½“createImage需è¦å±æ€§name" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "无效ç„元数æ®" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "无效ç„adminPass" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "æ­£åœ¨ä»æŸ¥è¯¢è¯­å¥ä¸­ç§»é™¤é€‰é¡¹ '%(unk_opt_str)s'" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "没有找到æœå¡å™¨" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::æ‚åœ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::å–æ¶ˆæ‚åœ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::挂起 %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "è¿ç§»é”™è¯¯ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "Compute.api::inject_network_info %s" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "compute.api::å é” %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "compute.api::è§£é” %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "å®ä½“createBackupéœ€è¦æœ‰å±æ€§ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "错误格å¼ç„å®ä½“createBackup" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "createBackupç„屿€§ 'rotation'必须是整数" #: nova/api/openstack/compute/contrib/admin_actions.py:276 #, fuzzy msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "createBackupç„屿€§ 'rotation'必须是整数" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "没有找到å®ä¾‹" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, fuzzy, python-format msgid "Live migration of instance %s to another host failed" msgstr "å®ä¾‹ %(id)s 到主机 %(host)s ç„卿€è¿ç§»å¤±è´¥" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "å®ä¾‹ %(id)s 到主机 %(host)s ç„卿€è¿ç§»å¤±è´¥" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, fuzzy, python-format msgid "Cannot show aggregate: %s" msgstr "更新代ç†å¤±è´¥ï¼%(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, fuzzy, python-format msgid "Cannot update aggregate: %s" msgstr "更新代ç†å¤±è´¥ï¼%(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, fuzzy, python-format msgid "Cannot delete aggregate: %s" msgstr "更新代ç†å¤±è´¥ï¼%(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "èåˆæ²¡æœ‰å¨ä½œ %s" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "无效ç„请求主体" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "删除id为 %s ç„å¿«ç…§" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "挂起å®ä¾‹å¤±è´¥" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 #, fuzzy msgid "Network driver does not support this function." msgstr "è™æ‹Ÿæœºç®¡ç†ç¨‹åºé©±å¨ä¸æ”¯æŒé˜²ç«å¢™è§„则" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "挂起å®ä¾‹å¤±è´¥" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "屿€§ä¸æ”¯æŒ: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "正在开å¯VLANæ¥å£ %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "没有找到规则 (%s)" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 #, fuzzy msgid "Cell name cannot be empty" msgstr "安全组åç§°ä¸èƒ½æ˜¯ç©º" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 #, fuzzy msgid "No cell information in request" msgstr "block_device_mapping %s" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "åªæœ‰æ ¹è¯ä¹¦èƒ½è¢«è·å–。" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "无法为VPNå®ä¾‹ç”³è¯·IP,确ä¿å®ä¾‹æ²¡æœ‰è¿è¡Œï¼Œè¿‡ä¸€ä¼å„¿å†è¯•。" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "未知链ï¼%r" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "无法使用全局角色 %(role_id)s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "å®ä¾‹ %sï¼æ²¡æœ‰å¯å¨" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "%s 必须是'MANUAL' 或者 'AUTO'。" #: nova/api/openstack/compute/contrib/evacuate.py:53 #, fuzzy msgid "host and onSharedStorage must be specified." msgstr "hostä¸block_migration必须确å®" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "è¯ä¹¦ %(certificate_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/contrib/flavor_access.py:94 #, fuzzy msgid "Flavor not found." msgstr "没有找到æœå¡å™¨ă€‚" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 #, fuzzy msgid "No request body" msgstr "没有请求主体" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "没有请求主体" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "没有找到å®ä¾‹" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "找ä¸åˆ°é€‚åˆid %(id)s ç„æµ®å¨IP。" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "æ±  %s ä¸­å·²ç»æ²¡æœ‰æµ®å¨ip。" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "没有更å¤ç„æµ®å¨ip。" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "æµ®å¨ip %(address)s 没有被关è”。" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "ç¼ºå°‘å‚æ•° dict" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "åœ°å€æ²¡æœ‰æŒ‡å®" #: nova/api/openstack/compute/contrib/floating_ips.py:225 #, fuzzy msgid "No nw_info cache associated with instance" msgstr "没有固å®ipä¸å®ä¾‹å…³è”" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "没有固å®ipä¸å®ä¾‹å…³è”" #: nova/api/openstack/compute/contrib/floating_ips.py:241 #, fuzzy msgid "Specified fixed address not assigned to instance" msgstr "没有固å®ipä¸å®ä¾‹å…³è”" #: nova/api/openstack/compute/contrib/floating_ips.py:255 #, fuzzy msgid "floating ip is already associated" msgstr "æµ®å¨ip %(address)s 已被关è”。" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "没有找到floating_ip" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 #, fuzzy msgid "Floating ip is not associated" msgstr "æµ®å¨ip %(address)s 没有被关è”。" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "æµ®å¨ip %(address)s 没有被关è”。" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "没有找到floating_ip" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "æ— æ•ˆç„æ›´æ–°è®¾ç½®ï¼'%s'" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "无效ç„ç¶æ€ï¼'%s'" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "无效ç„ç¶æ€ï¼'%s'" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, fuzzy, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "æä¸»æœº %(host)s 设置为 %(state)s。" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "调用 getter %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "æ­£åœ¨æ›´æ–°ä¸»æœºç¶æ€" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "Describe-resourceæ˜¯åªæœ‰ç®¡ç†å‘˜æ‰èƒ½æ‰§è¡Œç„åŸèƒ½ă€‚" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, fuzzy, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "æœå¡ %(service_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, fuzzy, python-format msgid "No hypervisor matching '%s' could be found." msgstr "没找到文件" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "无效ç„元数æ®" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "addFixedIpç¼ºå°‘å‚æ•°'networkId'" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "removeFixedIpç¼ºå°‘å‚æ•°'address'" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "为id是 %s ç„网络解除关è”" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "没有找到网络" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "为id是 %s ç„网络解除关è”" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "为id是 %s ç„网络解除关è”" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "显示id是 %s ç„网络" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "正在删除id是 %s ç„网络" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "设置网络主机" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "正在删除id是 %s ç„网络" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, fuzzy, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "为id是 %s ç„网络解除关è”" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 #, fuzzy msgid "Failed to update usages deallocating network." msgstr "在数æ®åº“æ›´æ–°å·å¤±è´¥" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 #, fuzzy msgid "No CIDR requested" msgstr "无法找到请求ç„镜åƒ" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "èµ„æºæ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 #, fuzzy msgid "Quota exceeded, too many networks." msgstr "æ·»å å®‰å…¨ç»„规则ï¼%r" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "创建失败" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "错误格å¼ç„ scheduler_hints 屿€§" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "傿•°ä¸å¤Ÿåˆ›å»ºæœ‰æ•ˆè§„åˆ™ă€‚" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "è¿™æ¡è§„则已ç»å­˜åœ¨äºç»„%s 中" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "显示id是 %s ç„网络" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 #, fuzzy msgid "security group default rule not found" msgstr "带有规则 %(rule_id)s ç„å®‰å…¨ç»„æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "错误ç„to_global_ipv6å‰ç¼€ï¼%s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "没有指å®å®‰å…¨ç»„" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "安全组åç§°ä¸èƒ½æ˜¯ç©º" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "å¯å¨å®ä¾‹ %r" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "åœæ­¢å®ä¾‹ %r" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "vol=%s" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "删除id为 %s ç„å·" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "å®ä¾‹ %sï¼æ²¡æœ‰å¯å¨" #: nova/api/openstack/compute/contrib/volumes.py:383 #, fuzzy, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "æŸåç„网络格å¼ï¼ç½‘络 uuid æ ¼å¼ä¸æ­£ç¡® (%s)" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "æå· %(volume_id)s 附å åˆ°å®ä¾‹ %(server_id)s ç„ %(device)s 设备ä¸" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "ä¸ºå· %s 创建快照" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "å è½½ç„扩展ï¼%s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, fuzzy, python-format msgid "Ext version: %i" msgstr "Ext æè¿°: %s" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, fuzzy, python-format msgid "Running _create_extension_point for %s" msgstr "è°ƒç”¨æ‰©å±•å·¥å‚ %s" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "æ²¡æœ‰é€‚ç”¨äºæ¶ˆæ¯ç„方法ï¼%s" #: nova/cells/messaging.py:436 #, fuzzy, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "å è½½æ‰©å±• %(ext_factory)s 失败ï¼%(exc)s" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "æ²¡æœ‰é€‚ç”¨äºæ¶ˆæ¯ç„方法ï¼%s" #: nova/cells/messaging.py:535 #, fuzzy, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "正在删除基文件ï¼%s" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, fuzzy, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "æâ€œ%(method)sâ€æ•放在主机 \"%(host)s\"" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "没有为å®ä¾‹ %(instance_id)s 找到å·ă€‚" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "没有为å®ä¾‹ %(instance_id)s 找到å·ă€‚" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "è¿”å› %s 异常给调用者" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "没有为å®ä¾‹ %(instance_id)s 找到å·ă€‚" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "cloudpipeå®ä¾‹ç„å¯å¨è„本模æ¿" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "网络地å€å·²å­˜å…¥openvpné…ç½®" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "å­ç½‘æ©ç å·²å­˜å…¥openvpné…ç½®" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "å¯å¨VPN %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "无法创建å·" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, fuzzy, python-format msgid "deployment to node %s failed" msgstr "å…ƒç´ ä¸æ˜¯å­è‚点" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "å·²æ¥æ”¶ %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "æ•°æ®åº“错误ï¼%s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "é‡ç½®ç½‘络" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "起始地å€" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 #, fuzzy msgid "No fixed IP found." msgstr "找ä¸åˆ°å›ºå®IP。" #: nova/cmd/manage.py:358 #, fuzzy, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "没有固å®ipä¸å®ä¾‹å…³è”" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "æµ®å¨ip %(address)s 已被关è”。" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "id" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "IPv4" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "IPv6" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "起始地å€" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "DNS1" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "DNS2" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "VlanID" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "项目" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "uuid" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "没有找到网络" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "åœæ­¢å®ä¾‹ %r" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "æœå¡ %(service_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "æœå¡ %(service_id)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "æ„外错误ï¼%s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 #, fuzzy msgid "PROJECT" msgstr "项目" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 #, fuzzy msgid "Unknown error" msgstr "未知ç„guestmount错误" #: nova/cmd/manage.py:955 #, fuzzy, python-format msgid "%s created" msgstr "表 |%s| 没有创建" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "æ•°æ®åº“错误ï¼%s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "ç±»å‹is = %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "超过å®ä¾‹ç„é…é¢ă€‚您无法è¿è¡Œæ›´å¤æ­¤ç±»å‹ç„å®ä¾‹ă€‚" #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "超过å®ä¾‹ç„é…é¢ă€‚您åªèƒ½å†è¿è¡Œ %s 个此类å‹ç„å®ä¾‹ă€‚" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图设置 %(num_metadata)s 个元数æ®å±æ€§" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 #, fuzzy msgid "Metadata property key greater than 255 characters" msgstr "安全组 %s ä¸èƒ½æ¯”255ä¸ªå­—ç¬¦æ›´é•¿ă€‚" #: nova/compute/api.py:441 #, fuzzy msgid "Metadata property value greater than 255 characters" msgstr "安全组 %s ä¸èƒ½æ¯”255ä¸ªå­—ç¬¦æ›´é•¿ă€‚" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "无法附å å·åˆ°å®ä¾‹ %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "准备è¿è¡Œ %s 个å®ä¾‹" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "block_device_mapping %s" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "准备开始终止å®ä¾‹" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "准备开始终止å®ä¾‹" #: nova/compute/api.py:1595 #, fuzzy, python-format msgid "instance's host %s is down, deleting from database" msgstr "没有托管å®ä¾‹ %s,立刻删除" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "准备å°è¯•软删除å®ä¾‹ %s" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "准备å°è¯•终止å®ä¾‹ %s" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "准备å°è¯•åœæ­¢å®ä¾‹ %s" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "准备å°è¯•å¯å¨å®ä¾‹ %s" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "æœç´¢æ¡ä»¶ï¼ %s" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "å¼€å§‹ä¸ºè™æ‹Ÿæœº %s å¿«ç…§" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "flavor_idä¸ºç©ºă€‚å‡å®åœ¨è¿ç§»ă€‚" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "æ—§ç„å®ä¾‹ç±»å‹ %(current_instance_type_name)s,新ç„å®ä¾‹ç±»å‹ %(new_instance_type_name)s" #: nova/compute/api.py:2393 #, fuzzy, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图è¿è¡Œ %(min_count)s 个å®ä¾‹" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "准备å°è¯•终止å®ä¾‹ %s" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "密钥对å称长度必须在1到255个字符之间" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "安全组 %s æ—¢ä¸æ˜¯å­—ç¬¦ä¸²ä¹Ÿä¸æ˜¯unicode" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "安全组 %s ä¸èƒ½ä¸ºç©ºă€‚" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "安全组 %s ä¸èƒ½æ¯”255ä¸ªå­—ç¬¦æ›´é•¿ă€‚" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "创建安全组 %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "安全组 %s å·²ç»å­˜åœ¨" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "无法销æ¯VBD %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "无法销æ¯VBD %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "安全组id应该是整数" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "删除安全组 %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "没有找到规则 (%s)" #: nova/compute/api.py:3769 #, fuzzy msgid "Quota exceeded, too many security group rules." msgstr "æ·»å å®‰å…¨ç»„规则ï¼%r" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "æˆæƒ %s å®‰å…¨ç»„å…¥å£æƒé™" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "撤销 %s å®‰å…¨ç»„å…¥å£æƒé™" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "安全组id应该是整数" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, fuzzy, python-format msgid "Aborting claim: %s" msgstr "å®ä¾‹ç„network_infoï¼|%s|" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "æ•°æ®åº“错误ï¼%s" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "未找到è¦åˆ é™¤ç„å®ä¾‹ç±»å‹ %s" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "无法æå®ä¾‹ (%(instance_id)s) è¿ç§»åˆ°å½“å‰ä¸»æœº (%(host)s)。" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "当å‰ç¶æ€æ˜¯ %(drv_state)s,数æ®åº“ç¶æ€æ˜¯ %(db_state)s。" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "nova-computeé‡å¯å,å®ä¾‹æ­£åœ¨é‡å¯ă€‚" #: nova/compute/manager.py:932 #, fuzzy msgid "Hypervisor driver does not support resume guests" msgstr "è™æ‹Ÿæœºç®¡ç†ç¨‹åºé©±å¨ä¸æ”¯æŒé˜²ç«å¢™è§„则" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "挂起å®ä¾‹å¤±è´¥" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "è™æ‹Ÿæœºç®¡ç†ç¨‹åºé©±å¨ä¸æ”¯æŒé˜²ç«å¢™è§„则" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "æ„外ç„ç¶æ€ç " #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "æ­£åœ¨æ£€æŸ¥ç¶æ€" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "釿”¾å®ä¾‹ç„网络" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "æ•°æ®åº“错误ï¼%s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "正在å¯å¨è™æ‹Ÿæœº" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "没有找到floating_ip" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "å®ä¾‹ç„network_infoï¼|%s|" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "å®ä¾‹å—设备设置失败" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "å®ä¾‹ç”Ÿäº§å¤±è´¥" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "釿”¾å®ä¾‹ç„网络" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "釿”¾å®ä¾‹ç„网络" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "%(action_str)s å®ä¾‹" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "忽略异常 DiskNotFound: %s" #: nova/compute/manager.py:2140 #, fuzzy, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "忽略异常 DiskNotFound: %s" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "终止bdm %s" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "æ­£åœ¨é‡æ–°åˆ›å»ºå®ä¾‹ %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "为ipï¼ %sè·å–元数æ®å¤±è´¥" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "ä¸ºå· %s 创建快照" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "正在é‡å¯è™æ‹Ÿæœº %s" #: nova/compute/manager.py:2613 #, fuzzy, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "试图é‡å¯ä¸€ä¸ªæ²¡æœ‰è¿è¡Œç„å®ä¾‹ï¼%(instance_uuid)s (ç¶æ€ï¼%(state)s 预计ï¼%(running)s)" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "å®ä¾‹ %sï¼é‡å¯" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "å®ä¾‹ %s: 快照中" #: nova/compute/manager.py:2739 #, fuzzy, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "试图为一个没有è¿è¡Œç„å®ä¾‹å¿«ç…§ï¼%(instance_uuid)s (ç¶æ€ï¼%(state)s 预计ï¼%(running)s)" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "找到 %(num_images)d ä¸ªé•œåƒ (rotation: %(rotation)d)" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "è½®æ¢å‡º%d个备份" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "æ­£åœ¨åˆ é™¤é•œåƒ %s" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "设置管ç†å‘˜å¯†ç å¤±è´¥ă€‚å®ä¾‹ %s 没有è¿è¡Œ" #: nova/compute/manager.py:2855 #, fuzzy msgid "Root password set" msgstr "å®ä¾‹ %sï¼Root密ç å·²è®¾ç½®" #: nova/compute/manager.py:2860 #, fuzzy msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "该驱å¨ä¸èƒ½æ‰§è¡Œset_admin_password。" #: nova/compute/manager.py:2873 #, fuzzy, python-format msgid "set_admin_password failed: %s" msgstr "该驱å¨ä¸èƒ½æ‰§è¡Œset_admin_password。" #: nova/compute/manager.py:2880 #, fuzzy msgid "error setting admin password" msgstr "设置管ç†å‘˜å¯†ç å‡ºé”™" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "挂起å®ä¾‹å¤±è´¥" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "æ•°æ®åº“错误ï¼%s" #: nova/compute/manager.py:2989 #, fuzzy msgid "Unrescuing" msgstr "å®ä¾‹ %sï¼å–消救æ´" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "设置å®ä¾‹ %(instance_uuid)s 至 ERROR ç¶æ€" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "å®ä¾‹æ²¡æœ‰å·ă€‚" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "ç›®æ ‡ä¸æ¥æºä¸€æ ·ă€‚" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 #, fuzzy msgid "Pausing" msgstr "æ­£åœ¨æ›´æ–°ă€‚" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "å®ä¾‹ %s ï¼è·å–è¯æ–­" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "é‡ç½®ç½‘络" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "å®ä¾‹ %sï¼æ³¨å…¥ç½‘络信æ¯" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "将注入ç„network_infoï¼|%s|" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "è·å–å®ä¾‹ %s æ§åˆ¶å°è¾“出" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "å®ä¾‹ %sï¼æ­£åœ¨è·å¾—VNCæ§åˆ¶å°" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "å®ä¾‹ %sï¼æ­£åœ¨è·å¾—VNCæ§åˆ¶å°" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "正在æå· %(volume_id)s 附å åˆ° %(mountpoint)s" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "å· %(volume_id)s 仿Œ‚载点 %(mp)s 分离" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "仿œªçŸ¥å®ä¾‹%s中分离å·" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "正在æå· %(volume_id)s 附å åˆ° %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, fuzzy, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 #, fuzzy msgid "_post_live_migration() is started.." msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" "ä½ ä¼çœ‹åˆ°é”™è¯¯â€œlibvirt: QEMU error: Domain not found: no domain with matching " "name。â€è¿™ä¸ªé”™è¯¯å¯ä»¥æ”¾å¿ƒç„å¿½ç•¥ă€‚" #: nova/compute/manager.py:4654 #, fuzzy msgid "Post operation of migration started" msgstr "è¿ç§»åæ“作å¯å¨" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "å‘ç° %(migration_count)d 个超过 %(confirm_window)d 秒未ç»ç¡®è®¤ç„è¿ç§»" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, fuzzy, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "为å®ä¾‹ %(instance_uuid)s å…³é—­è™æ‹Ÿæœº" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 #, fuzzy msgid "In ERROR state" msgstr "è‚ç‚¹å¤„äºæœªçŸ¥ç„é”™è¯¯ç¶æ€ă€‚" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "更新带宽使用缓存" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "更新带宽使用缓存" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "在数æ®åº“中找到 %(num_db_instances)s个å®ä¾‹ï¼Œåœ¨è™æ‹Ÿæœºç®¡ç†ç¨‹åºæ‰¾åˆ° %(num_vm_instances)s 个å®ä¾‹ă€‚" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "å®ä¾‹æœªå¯å¨" #: nova/compute/manager.py:5374 #, fuzzy msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "FLAGS.reclaim_instance_interval <= 0,跳过..." #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "囿”¶åˆ é™¤ç„å®ä¾‹" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "LoggingVolumeDriver: %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, fuzzy, python-format msgid "No service record for host %s" msgstr "计算è‚点 %s 没有æœå¡" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "设置å®ä¾‹ %(instance_uuid)s 至 ERROR ç¶æ€" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, fuzzy, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "Compute_service记录为 %s 创建 " #: nova/compute/resource_tracker.py:378 #, fuzzy, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "Compute_service记录为 %s æ›´æ–° " #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "创建密钥对 %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, fuzzy, python-format msgid "Updating from migration %s" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ finish_migration" #: nova/compute/resource_tracker.py:545 #, fuzzy msgid "Instance not resizing, skipping migration." msgstr "è™æ‹Ÿæœºä¸å­˜åœ¨ï¼Œè·³è¿‡é”€æ¯..." #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "未指å®è®¡ç®—宿主机" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "无法找到å®ä¾‹ %s ç„宿主机" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 #, fuzzy msgid "Invalid block_device_mapping_destroy invocation" msgstr "block_device_mapping %s" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, fuzzy, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "无法è¿ç§» %(instance_id)s 到 %(dest)s ä¸ï¼ç¼ºå°‘内存(主机ï¼%(avail)s <= å®ä¾‹ï¼%(mem_inst)s)" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "æ­£åœ¨æ·»å æ§åˆ¶å°" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "å°è¯•删除ä¸å­˜åœ¨ç„æ§åˆ¶å°%(console_id)s。" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "删除æ§åˆ¶å°%(console_id)s。" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "无效ç„å·" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "é‡å»ºxvpé…ç½®" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "é‡å†™%s" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "åœæ­¢xvp" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "正在å¯å¨xvp" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "å¯å¨xvpå‘生错误ï¼%s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "é‡å¯xvp" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvpä¸åœ¨è¿è¡Œä¸­" #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "æœå¡å™¨æ¢å¤å¤±è´¥" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "æ— æ³•è¯†åˆ«ç„ read_deleted å–值â€%s“" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "å®ä¾‹ %sï¼å·²æ•‘æ´" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "å®ä¾‹ %sï¼å·²æ•‘æ´" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "å®ä¾‹ %sï¼å·²æ•‘æ´" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "å®ä¾‹ %sï¼å·²æ•‘æ´" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "å®ä¾‹ %sï¼å·²æ•‘æ´" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "version应该是整数" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 #, fuzzy msgid "Unsupported id columns type" msgstr "䏿”¯æŒç„Content-Type" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "æ %(image_location)s 下载到 %(image_path)s失败" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "解密 %(image_location)s 到 %(image_path)s失败" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "解包 %(image_location)s 到 %(image_path)s 失败" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "ä¸ä¼  %(image_location)s 到 %(image_path)s 失败" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "解密ç§é’¥å¤±è´¥ï¼%s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "解密åˆå§‹åŒ–vector失败ï¼%s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "è§£å¯†é•œåƒæ–‡ä»¶ %(image_file)s 失败ï¼%(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "镜åƒä¸­ä¸å®‰å…¨ç„文件å" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "错误ç„to_global_ipv6 macï¼%s" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "错误ç„to_global_ipv6å‰ç¼€ï¼%s" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "错误ç„to_global_ipv6 oject_idï¼›%s" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "æåœ°å€ %(public_ip)s å…³è”到å®ä¾‹ %(instance_id)s" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "LoggingVolumeDriver: %s" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "åœ°å€ |%(address)s| 没有分é…" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "åœ°å€ |%(address)s| 没有分é…给你ç„项目 |%(project)s|" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "固å®IPåœ°å€ %(address)s å·²åœ¨ä½¿ç”¨ă€‚" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "æ•°æ®åº“ä¸ä¸€è‡´ï¼DNS域|%s| 在Novaæ•°æ®åº“ä¸­æ³¨å†Œï¼Œä½†æ˜¯å¯¹æµ®å¨æˆ–者å®ä¾‹DNS驱å¨å‡ä¸å¯è§ă€‚å°†è¢«å¿½ç•¥ă€‚" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "域 |%(domain)s| å·²ç»å­˜åœ¨ï¼ŒæåŒºåŸŸæ”¹å˜ä¸º |%(av_zone)s|。" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "域 |%(domain)s| å·²ç»å­˜åœ¨ï¼Œæé¡¹ç›®æ”¹å˜ä¸º |%(project)s|。" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "驱å¨ä»…支æŒå…¥å£ç±»å‹ 'a'。" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "试图移除ä¸å­˜åœ¨ç„链 %s。" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "未知链ï¼%r" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, python-format msgid "" "Tried to remove rule that was not there: %(chain)r %(rule)r %(wrap)r " "%(top)r" msgstr "试图移除ä¸å­˜åœ¨ç„规则ï¼%(chain)r %(rule)r %(wrap)r %(top)r" #: nova/network/linux_net.py:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "IPTablesManager.applyæˆåŸå®Œæˆ" #: nova/network/linux_net.py:713 #, fuzzy, python-format msgid "arping error for ip %s" msgstr "在 %s 中å‘生 httplib é”™è¯¯ï¼ " #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d è¿‡æœŸäº†ï¼Œé‡æ–°å¯å¨dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "挂起进程 dnsmasq æ—¶æ›å‡º %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d è¿‡æœŸäº†ï¼Œé‡æ–°å¯å¨dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "æ€æ‰è¿›ç¨‹ radvd æ—¶æ›å‡º %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d è¿‡æœŸäº†ï¼Œé‡æ–°å¯å¨radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "无效ç„ç¶æ€ï¼'%s'" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "正在开å¯VLANæ¥å£ %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "ä¿è¯æ¡¥ %s" #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "ä¿è¯vlan %(vlan)s 和桥 %(bridge)s" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "挂起å®ä¾‹å¤±è´¥" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "ä¿è¯æ¡¥ %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "ä¿è¯æ¡¥ %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "解除 %s 过期固å®ipç„å…³è”" #: nova/network/manager.py:373 msgid "setting network host" msgstr "设置网络主机" #: nova/network/manager.py:493 #, fuzzy msgid "network allocations" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 #, fuzzy msgid "network deallocation for instance" msgstr "为å®ä¾‹ |%s| 解除网络分é…" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, fuzzy, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" "instance-dns-zone是 |%(domain)s|,该域ä½äºåŒºåŸŸ |%(zone)s| 中。å®ä¾‹|%(instance)s| 在区域 " "|%(zone2)s| é‡Œă€‚æ²¡æœ‰DNSè®°å½•å°†åˆ›å»ºă€‚" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 #, fuzzy msgid "Failed to update usages deallocating fixed IP" msgstr "在数æ®åº“æ›´æ–°å·å¤±è´¥" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "没有关è”ç„IP %s 被租用了" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "没有分é…ç„IP |%s| 被租用了" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "没有关è”ç„IP %s è¢«é‡æ”¾äº†" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "没有租用ç„IP %s è¢«é‡æ”¾äº†" #: nova/network/manager.py:1028 #, fuzzy, python-format msgid "%s must be an integer" msgstr "offset 傿•°å¿…须是整数" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "cidr å·²ç»åœ¨ä½¿ç”¨" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "请求ç„cidr (%(cidr)s) ä¸å·²å­˜åœ¨ç„超网络 (%(super)s) 冲çª" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "请求ç„cidr (%(cidr)s) ä¸å·²å­˜åœ¨ç„较å°ç„cidr (%(smaller)s) 冲çª" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "网路在删除å‰å¿…é¡»ä¸é¡¹ç›® %s 解除关è”" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "网络数é‡ä¸VLAN起始数之和ä¸èƒ½å¤§äº4049" #: nova/network/manager.py:1858 #, fuzzy, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "网络范围ä¸å¤Ÿå¤è€Œä¸é€‚åˆ %(num_networks)să€‚ç½‘ç»œå¤§å°æ˜¯ %(network_size)s。" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "无效ç„å·" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "驱å¨ä»…支æŒç±»å‹ 'a'" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "_delete: %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, fuzzy, python-format msgid "allocate_for_instance() for %s" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, fuzzy, python-format msgid "deallocate_for_instance() for %s" msgstr "为å®ä¾‹ |%s| 解除网络分é…" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, fuzzy, python-format msgid "get_instance_nw_info() for %s" msgstr "å®ä¾‹ç„network_infoï¼|%s|" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, fuzzy, python-format msgid "validate_networks() for %s" msgstr "错误ç„网络格å¼" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "找ä¸åˆ°é€‚åˆid %(id)s ç„æµ®å¨IP。" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "安全组id应该是整数" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, fuzzy, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "没有找到安全组 %(security_group_id)s 针对项目 %(project_id)s 。" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "è¿™æ¡è§„则已ç»å­˜åœ¨äºç»„%s 中" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "设置管ç†å‘˜å¯†ç å‡ºé”™" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "å¤–é”®çº¦æŸæ— æ³•删除" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "æ„外错误ï¼%s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "syslog设备必须作为一个 %s 。" #: nova/openstack/common/log.py:652 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "ç±» %(fullname)s æ˜¯ä¸æ¨èç„ï¼%(msg)s" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 #, fuzzy msgid "in fixed duration looping call" msgstr "循ç¯è°ƒç”¨ä¸­ă€‚" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 #, fuzzy msgid "in dynamic looping call" msgstr "循ç¯è°ƒç”¨ä¸­ă€‚" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "正在è¿è¡Œå‘¨æœŸæ€§ä»»å¡ %(full_task_name)s" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "在 %(full_task_name)s 期间å‘生ç„错误ï¼%(e)s" #: nova/openstack/common/policy.py:394 #, fuzzy, python-format msgid "Failed to understand rule %(rule)s" msgstr "注入文件失败ï¼%(resp)r" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, fuzzy, python-format msgid "Failed to understand rule %(rule)r" msgstr "注入文件失败ï¼%(resp)r" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "å‘ç°æœªçŸ¥ç„ utils.execute 关键字傿•°ï¼%r" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "正在è¿è¡Œcmd (subprocess)ï¼%s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "è¿è¡Œç»“æœä¸º %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r 失败,é‡è¯•。" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "è¿è¡Œcmd (SSH)ï¼%s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "SSHä¸ä¸æ”¯æŒç¯å¢ƒå˜é‡" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "SSHä¸ä¸æ”¯æŒç„è¿›ç¨‹è¾“å…¥å‚æ•°ă€‚" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "标记全集ï¼" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, fuzzy, python-format msgid "Caught %s, exiting" msgstr "å¿«ç…§ %sï¼æ­£åœ¨åˆ é™¤" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "起始地å€" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, fuzzy, python-format msgid "Unknown byte multiplier: %s" msgstr "未知ç„基文件ï¼%s" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "æ­£ç¡®ç„æœå¡åœ¨è¿è¡Œå—?" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "无法找到å¦ä¸€ä¸ªè®¡ç®—è‚点" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, fuzzy, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "å°è¯•创建 %(num_instances)d 个å®ä¾‹" #: nova/scheduler/filter_scheduler.py:83 #, fuzzy, python-format msgid "Request Spec: %s" msgstr "请求ï¼%s" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "没有为å®ä¾‹ %(instance_id)s 找到å·ă€‚" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "过滤æ‰ç„主机 %(hosts)s" #: nova/scheduler/filter_scheduler.py:337 #, fuzzy, python-format msgid "Weighed %(hosts)s" msgstr "过滤æ‰ç„主机 %(hosts)s" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "计算è‚点 %s 没有æœå¡" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "无法统计调度器ç„选项文件 %(filename)sï¼â€œ%(e)sâ€" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "未设置 VCPUsï¼›å‡è®¾ CPU é›†åˆæŸå了" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "䏿¨¡å‹æœå¡å™¨(model server)ç„è¿æ¥å·²æ¢å¤ï¼" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "失å»ä¸æ¨¡å‹æœå¡å™¨ç„è¿æ¥" #: nova/servicegroup/drivers/mc.py:44 #, fuzzy msgid "memcached_servers not defined" msgstr "æœå¡å™¨å称未å®ä¹‰" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "试图å®ä¾‹åŒ–å•例" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "伪执行命令(å­è¿›ç¨‹ï¼‰ï¼%s" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "ä¼ªå‘½ä»¤åŒ¹é… %s" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "伪命令引起异常 %s" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "ä¼ªå‘½ä»¤ç„æ ‡å‡†è¾“出stdout='%(stdout)s' 标准错误输出 stderr='%(stderr)s'" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "ç¶æ€å¿…é¡»å¯ç”¨" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "å·²ç»é™„å " #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "å·²ç»åˆ†ç¦»" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 #, fuzzy msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图è¿è¡Œ %(min_count)s 个å®ä¾‹" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "正在è¿è¡Œç„å®ä¾‹ï¼%s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "终止å®ä¾‹ä¹‹åï¼%s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "内部错误" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "å¼ºåˆ¶æ€æ­»å®ä¾‹åï¼%s" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 #, fuzzy msgid "spawn error" msgstr "未知ç„guestmount错误" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "å¯†é’¥å¯¹æ•°æ®æ— æ•ˆ" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" "下é¢ç„è¿ç§»ç¼ºå°‘了é™çº§ï¼\n" "\t%s" #: nova/tests/integrated/api_samples_test_base.py:116 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "åœ°å€ |%(address)s| 没有分é…" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "åœ°å€ |%(address)s| 没有分é…" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "ç±»å‹ï¼%s" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "ç¶æ€ç : %(_status)s\n" "主体: %(_body)s" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "认è¯é”™è¯¯" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "æˆæƒé”™è¯¯" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "æ¡ç›®æ²¡æœ‰æ‰¾åˆ°" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "正在 %(relative_url)s 执行 %(method)s" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "主体ï¼%s" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => code %(http_status)s" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => code %(http_status)s" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "æ„外ç„ç¶æ€ç " #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "è§£ç JSONï¼%s" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "没有找到标记 [%s]" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "在%s 创建文件模拟客户代ç†" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "移除在 %s ç„æ¨¡æ‹Ÿç„å®¢æˆ·ä»£ç†æ–‡ä»¶" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "å· %(volume_id)s 正在 %(mountpoint)s ä¸å¯å¨" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, fuzzy, python-format msgid "Loading compute driver '%s'" msgstr "LoggingVolumeDriver: %s" #: nova/virt/driver.py:1302 #, fuzzy msgid "Unable to load the virtualization driver" msgstr "无法å è½½è™æ‹Ÿé©±å¨ï¼%s" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "试图ä¸è¿‡æ»¤æ²¡æœ‰è¿‡æ»¤ç„å®ä¾‹" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "过滤器添å ç»™å®ä¾‹ %s" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "æä¾›è€…防ç«å¢™è§„则刷新" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "æ·»å å®‰å…¨ç»„规则ï¼%r" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "æ·»å æä¾›è€…è§„åˆ™ï¼%s" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "'qemu-img info'è§£æå¤±è´¥" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "fmt=%(fmt)s ç”± %(backing_file)s 支æŒ" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "转化为裸格å¼ï¼Œä½†ç›®å‰æ ¼å¼æ˜¯ %s" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "è·å–å®ä¾‹åˆ—表" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, fuzzy, python-format msgid "pid file %s does not contain any pid" msgstr "href %s ä¸åŒ…å«ç‰ˆæœ¬" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "åœ°å€æ²¡æœ‰æŒ‡å®" #: nova/virt/baremetal/ipmi.py:117 #, fuzzy msgid "User not supplied to IPMI" msgstr "vmwareapi 䏿”¯æŒæ‚åœ" #: nova/virt/baremetal/ipmi.py:120 #, fuzzy msgid "Password not supplied to IPMI" msgstr "vmwareapi 䏿”¯æŒæ‚åœ" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "ä¼ªå‘½ä»¤ç„æ ‡å‡†è¾“出stdout='%(stdout)s' 标准错误输出 stderr='%(stderr)s'" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "为å®ä¾‹ |%s| åˆ†é…æµ®å¨IP" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "正在ä»glanceé•œåƒæœå¡å™¨ä¸­ä¸‹è½½é•œåƒ %s" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "å°† %(injection)s æ³¨å…¥åˆ°é•œåƒ %(img_id)s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "è·å–å®ä¾‹ %s æ§åˆ¶å°è¾“出" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, fuzzy, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "等待RPCå“应返å›è¶…æ—¶" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "å®ä¾‹ %s ç„网络分é…" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "è·å–å®ä¾‹ %s æ§åˆ¶å°è¾“出" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "è‚ç‚¹å¤„äºæœªçŸ¥ç„é”™è¯¯ç¶æ€ă€‚" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "无法找到å®ä¾‹ %s ç„宿主机" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "åœ°å€æ²¡æœ‰æŒ‡å®" #: nova/virt/baremetal/tilera_pdu.py:89 #, fuzzy msgid "User not supplied to PDU" msgstr "vmwareapi 䏿”¯æŒæ‚åœ" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 #, fuzzy msgid "PDU failed" msgstr "创建失败" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "忽略å‘é•œåƒ %(img_id)s æ³¨å…¥ç„æ•°æ®ç„错误 (%(e)s)" #: nova/virt/baremetal/utils.py:54 #, fuzzy, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "å è½½æ‰©å±• %(classpath)s 失败ï¼%(exc)s" #: nova/virt/baremetal/utils.py:63 #, fuzzy, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "删除 %(base_file)s 失败,错误是 %(error)s" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "无法确å®iscsi initiatoråå­—" #: nova/virt/baremetal/volume_driver.py:234 #, fuzzy, python-format msgid "No fixed PXE IP is associated to %s" msgstr "没有固å®ipä¸å®ä¾‹å…³è”" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "未找到分区" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "è™æ‹Ÿæ¥å£åˆ›å»ºå¤±è´¥" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, fuzzy, python-format msgid "Baremetal virtual interface %s not found" msgstr "未找到分区" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "镜åƒå·²ç»æŒ‚è½½" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, fuzzy, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "忽略å‘é•œåƒ %(img_id)s æ³¨å…¥ç„æ•°æ®ç„错误 (%(e)s)" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "釿”¾åœ°å€ %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "没有空闲NBD设备" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "挂载文件系统失败ï¼%s" #: nova/virt/disk/api.py:451 #, fuzzy, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "忽略å‘é•œåƒ %(img_id)s æ³¨å…¥ç„æ•°æ®ç„错误 (%(e)s)" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, fuzzy, python-format msgid "Map dev %s" msgstr "导入密钥 %s" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, fuzzy, python-format msgid "partition %s not found" msgstr "未找到分区" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "映射分区失败ï¼%s" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "挂载文件系统失败ï¼%s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "在数æ®åº“æ›´æ–°å·å¤±è´¥" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "无法给loopback附å é•œåƒï¼%s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "qemu-nbd 错误ï¼%s" #: nova/virt/disk/mount/loop.py:39 #, fuzzy, python-format msgid "Got loop device %s" msgstr "没有找到设备 %s ç„PIF" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "没有空闲NBD设备" #: nova/virt/disk/mount/nbd.py:64 #, fuzzy msgid "nbd module not loaded" msgstr "NBDä¸å¯ç”¨ï¼æ¨¡å—没有å è½½" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "NBDä¸å¯ç”¨ï¼æ¨¡å—没有å è½½" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "qemu-nbd 错误ï¼%s" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "qemu-nbd 错误ï¼%s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "nbd 设备 %s 没有出ç°" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 #, fuzzy msgid "Trying to import guestfs" msgstr "无法导入 suds。" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, fuzzy, python-format msgid "Inspecting guest OS image %s" msgstr "æ­£åœ¨åˆ é™¤é•œåƒ %s" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "找ä¸åˆ°é€‚åˆid %(id)s ç„æµ®å¨IP。" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "挂载文件系统失败ï¼%s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "正在å¯å¨è™æ‹Ÿæœº" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "无法找到 %s å·" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "注入文件失败ï¼%(resp)r" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, fuzzy, python-format msgid "File path %s not valid" msgstr "注入文件路径ï¼'%s'" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "更新代ç†å¤±è´¥ï¼%(resp)r" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "å è½½æ‰©å±• %(classpath)s 失败ï¼%(exc)s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "schedule_%(method)s 失败ï¼%(ex)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, fuzzy, python-format msgid "Windows version: %s " msgstr "å®ä¾‹ä»£ç†ç‰ˆæœ¬ï¼%s" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "æ­£åœ¨æ›´æ–°ä¸»æœºç¶æ€" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "è·å–å®ä¾‹ %s æ§åˆ¶å°è¾“出" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "釿”¾åœ°å€ %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 #, fuzzy msgid "live_migration called" msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 #, fuzzy msgid "pre_live_migration called" msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/virt/hyperv/livemigrationops.py:97 #, fuzzy msgid "post_live_migration_at_destination called" msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/virt/hyperv/livemigrationops.py:105 #, fuzzy msgid "check_can_live_migrate_destination called" msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/virt/hyperv/livemigrationops.py:111 #, fuzzy msgid "check_can_live_migrate_destination_cleanup called" msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/virt/hyperv/livemigrationops.py:116 #, fuzzy msgid "check_can_live_migrate_source called" msgstr "post_live_migration()å·²ç»å¯å¨ă€‚" #: nova/virt/hyperv/livemigrationutils.py:43 #, fuzzy, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "å¿«ç…§ä¸å…许循ç¯ă€‚" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "为å®ä¾‹ |%s| åˆ†é…æµ®å¨IP" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "预在线è¿ç§»åœ¨%(dest)s失败" #: nova/virt/hyperv/livemigrationutils.py:61 #, fuzzy msgid "Live migration is not enabled on this host" msgstr "å¿«ç…§ä¸å…许循ç¯ă€‚" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "æ¡ç›®æ²¡æœ‰æ‰¾åˆ°" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, fuzzy, python-format msgid "Duplicate VM name found: %s" msgstr "Quantumå®ä½“没有找到ï¼%s" #: nova/virt/hyperv/livemigrationutils.py:77 #, fuzzy, python-format msgid "Destroying existing remote planned VM: %s" msgstr "正在删除基文件ï¼%s" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "为å®ä¾‹ |%s| åˆ†é…æµ®å¨IP" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "æä»£ç†æ›´æ–°ä¸º %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 #, fuzzy msgid "migrate_disk_and_power_off called" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ migrate_disk_and_power_off" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 #, fuzzy msgid "finish_revert_migration called" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ finish_revert_migration" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 #, fuzzy msgid "finish_migration called" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ finish_migration" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, fuzzy, python-format msgid "vswitch \"%s\" not found" msgstr "未找到分区" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "正在使用路径 %s 创建目录" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "正在使用路径 %s 创建目录" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "æ­£åœ¨åˆ›å»ºè™æ‹Ÿæœºå®ä¾‹å¿«ç…§ %s " #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "找ä¸åˆ°é€‚åˆid %(id)s ç„æµ®å¨IP。" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "å¼€å§‹ä¸ºè™æ‹Ÿæœº %s å¿«ç…§" #: nova/virt/hyperv/snapshotops.py:119 #, fuzzy, python-format msgid "Failed to remove snapshot for VM %s" msgstr "移除容器失败ï¼%s" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "æ­£åœ¨åˆ›å»ºè™æ‹Ÿæœºå®ä¾‹å¿«ç…§ %s " #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "è·å–å®ä¾‹åˆ—表" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "正在å¯å¨è™æ‹Ÿæœº" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, fuzzy, python-format msgid "Creating config drive at %(path)s" msgstr "注入文件路径ï¼'%s'" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "注入文件路径ï¼'%s'" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "无法销æ¯VBD %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "åœæ­¢å®ä¾‹ %r" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "åœæ­¢å®ä¾‹ %r" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "挂起å®ä¾‹å¤±è´¥" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "åœæ­¢å®ä¾‹ %r" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "å·²ç»å¯å¨è™æ‹Ÿæœºå®ä¾‹ %s" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "å·²ç»å¯å¨è™æ‹Ÿæœºå®ä¾‹ %s" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "为ipï¼ %sè·å–元数æ®å¤±è´¥" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "正在删除volumeIDï¼%s " #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "找ä¸åˆ°é€‚åˆid %(id)s ç„æµ®å¨IP。" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "无法附å å·åˆ°å®ä¾‹ %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "æ­£åœ¨åˆ›å»ºè™æ‹Ÿæœºå®ä¾‹å¿«ç…§ %s " #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, fuzzy, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "无法找到å®ä¾‹ %s ç„宿主机" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, fuzzy, python-format msgid "Unable to determine disk bus for '%s'" msgstr "无法为VDI %s 找到VBD" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "æ­£åœ¨è¿æ¥ libvirtï¼%s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "è¿æ¥ libvirt 失败" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "æ­£åœ¨è¿æ¥ libvirtï¼%s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "é”€æ¯æ—¶å‘ç”Ÿé”™è¯¯ă€‚Code=%(errcode)s Error=%(e)s" #: nova/virt/libvirt/driver.py:919 #, fuzzy msgid "During wait destroy, instance disappeared." msgstr "%s 在è¿è¡Œä¸­æ¶ˆå¤±äº†ă€‚" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "å®ä¾‹é”€æ¯æˆåŸă€‚" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "å‡†å¤‡åœæ­¢å®ä¾‹" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "在 undefine æ—¶ libvirt å‘ç”Ÿé”™è¯¯ă€‚Code=%(errcode)s Error=%(e)s" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, fuzzy, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "在 undefine æ—¶ libvirt å‘ç”Ÿé”™è¯¯ă€‚Code=%(errcode)s Error=%(e)s" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 #, fuzzy msgid "Could not determine fibre channel world wide node names" msgstr "无法确å®iscsi initiatoråå­—" #: nova/virt/libvirt/driver.py:1144 #, fuzzy msgid "Could not determine fibre channel world wide port names" msgstr "无法确å®iscsi initiatoråå­—" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 #, fuzzy msgid "During detach_volume, instance disappeared." msgstr "%s 在è¿è¡Œä¸­æ¶ˆå¤±äº†ă€‚" #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "没有网络å®ä¹‰ă€‚" #: nova/virt/libvirt/driver.py:1426 #, fuzzy msgid "During detach_interface, instance disappeared." msgstr "%s 在è¿è¡Œä¸­æ¶ˆå¤±äº†ă€‚" #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "没有网络å®ä¹‰ă€‚" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "å®ä¾‹æˆåŸé‡å¯ă€‚" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 #, fuzzy msgid "Instance shutdown successfully." msgstr "å®ä¾‹æˆåŸç”Ÿäº§ă€‚" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "å®ä¾‹æˆåŸé‡å¯ă€‚" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "å®ä¾‹åœ¨è¿è¡Œ" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "å®ä¾‹æˆåŸç”Ÿäº§ă€‚" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "dataï¼%(data)r, fpath: %(fpath)r" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "用户没有管ç†å‘˜æƒé™" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, fuzzy, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "忽略å‘é•œåƒ %(img_id)s æ³¨å…¥ç„æ•°æ®ç„错误 (%(e)s)" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "正在创建镜åƒ" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, python-format msgid "" "Error from libvirt while looking up %(instance_name)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "查找 %(instance_name)sæ—¶libvirt出错ï¼[é”™è¯¯ä»£ç  %(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 #, fuzzy msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "无法得到CPUç„æ•°ç›®ï¼Œå› ä¸ºè¿™ä¸ªå‡½æ•°ä¸æ˜¯ç»™è¿™ä¸ªå¹³å°æ‰§è¡Œç„ă€‚è¿™ä¸ªé”™è¯¯å¯ä»¥è¢«æ”¾å¿ƒå¿½ç•¥ă€‚" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "libvirt版本过旧(䏿”¯æŒgetVersion)" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "正在è·å–é•œåƒ %s ç„大å°" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, fuzzy, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "创建tmpfile %s æ¥é€çŸ¥å…¶ä»–ç„计算è‚ç‚¹éœ€è¦æŒ‚载相åŒç„å­˜å‚¨ă€‚" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "å—存储è¿ç§»æ— æ³•在共享存储使用" #: nova/virt/libvirt/driver.py:4229 #, fuzzy msgid "Live migration can not be used without shared storage." msgstr "å—存储è¿ç§»æ— æ³•在共享存储使用" #: nova/virt/libvirt/driver.py:4273 #, fuzzy, 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 "" "无法è¿ç§»%(instance_id)s 到 %(dest)s ä¸ï¼ç¼ºå°‘ç£ç›˜(主机:%(available)s <= " "å®ä¾‹:%(necessary)s)" #: nova/virt/libvirt/driver.py:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" "å·²å¯å¨å®ä¾‹ç„CPUä¿¡æ¯ï¼\n" "%s" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" "CPU ä¸å…¼å®¹.\n" "\n" "%(ret)s\n" "\n" "å‚考 %(u)s" #: nova/virt/libvirt/driver.py:4329 #, python-format msgid "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." msgstr "创建tmpfile %s æ¥é€çŸ¥å…¶ä»–ç„计算è‚ç‚¹éœ€è¦æŒ‚载相åŒç„å­˜å‚¨ă€‚" #: nova/virt/libvirt/driver.py:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, fuzzy, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "plug_vifs() 失败%(cnt)d æ¬¡ă€‚æœ€å¤é‡æ–°å°è¯• %(max_retry)d 次在主机 %(hostname)s。" #: nova/virt/libvirt/driver.py:4697 #, fuzzy, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "查找 %(instance_name)sæ—¶libvirt出错ï¼[é”™è¯¯ä»£ç  %(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 #, fuzzy msgid "Starting migrate_disk_and_power_off" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ migrate_disk_and_power_off" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 #, fuzzy msgid "Instance running successfully." msgstr "å®ä¾‹ %s æˆåŸè¿è¡Œă€‚" #: nova/virt/libvirt/driver.py:4941 #, fuzzy msgid "Starting finish_migration" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ finish_migration" #: nova/virt/libvirt/driver.py:5011 #, fuzzy msgid "Starting finish_revert_migration" msgstr "å®ä¾‹ %sï¼å¼€å§‹æ‰§è¡Œ finish_revert_migration" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, fuzzy, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "schedule_%(method)s 失败ï¼%(ex)s" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "Libvirtæ¨¡å—æ— æ³•å è½½ă€‚NWFilterFirewall æ— æ³•æ­£å¸¸å·¥ä½œă€‚" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "在 nwfilter 里调用 setup_basic_filtering" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "正在确ä¿é™æ€è¿‡æ»¤å™¨" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "å称为 %(name)s ç„nwfilter(%(instance_filter_name)s) æœªæ‰¾åˆ°ă€‚" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "iptables 防ç«å¢™ï¼è®¾ç½®åŸºæœ¬ç„过滤规则" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, fuzzy, python-format msgid "Unknown image_type=%s" msgstr "未知ç„ç£ç›˜é•œåƒå¥æŸ„ï¼%s" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, fuzzy, python-format msgid "Reading image info file: %s" msgstr "正在删除基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "正在删除基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "%s 是一个正确ç„å®ä¾‹åç§°" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "%s 有一个ç£ç›˜æ–‡ä»¶" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "å®ä¾‹ %(instance)s 由文件 %(backing)s æ¥å¤‡ä»½" #: nova/virt/libvirt/imagecache.py:321 #, python-format msgid "" "Instance %(instance)s is using a backing file %(backing)s which does not " "appear in the image service" msgstr "å®ä¾‹ %(instance)s 正在使用ç„备份文件 %(backing)s 没有出ç°åœ¨é•œåƒæœå¡é‡Œă€‚" #: nova/virt/libvirt/imagecache.py:394 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "%(container_format)s-%(id)s (%(base_file)s)ï¼é•œåƒéªŒè¯å¤±è´¥" #: nova/virt/libvirt/imagecache.py:404 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "%(container_format)s-%(id)s (%(base_file)s)ï¼é•œåƒéªŒè¯è·³è¿‡ï¼Œæ²¡æœ‰æ•£åˆ—存储" #: nova/virt/libvirt/imagecache.py:413 #, fuzzy, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "%(container_format)s-%(id)s (%(base_file)s)ï¼æ­£åœ¨æ£€æŸ¥ä¸­" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "基文件太新ä¸éœ€è¦åˆ é™¤ï¼%s" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "正在删除基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "删除 %(base_file)s 失败,错误是 %(error)s" #: nova/virt/libvirt/imagecache.py:461 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "%(container_format)s-%(id)s (%(base_file)s)ï¼æ­£åœ¨æ£€æŸ¥ä¸­" #: nova/virt/libvirt/imagecache.py:485 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" "%(container_format)s-%(id)s (%(base_file)s)ï¼æ­£åœ¨ä½¿ç”¨ä¸­ï¼æœ¬åœ°è‚点 %(local)d, 远程è‚点 " "%(remote)d" #: nova/virt/libvirt/imagecache.py:497 #, fuzzy, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" "%(container_format)s-%(id)s (%(base_file)s)ï¼è­¦å‘ -- 使用中缺少基文件! å®ä¾‹ï¼ " "%(instance_list)s" #: nova/virt/libvirt/imagecache.py:509 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "%(container_format)s-%(id)s (%(base_file)s)ï¼é•œåƒä¸åœ¨ä½¿ç”¨ä¸­" #: nova/virt/libvirt/imagecache.py:516 #, fuzzy, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "%(container_format)s-%(id)s (%(base_file)s)ï¼é•œåƒåœ¨ä½¿ç”¨ä¸­" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "验è¯åŸºç¡€é•œåƒ" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "未知ç„基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "活跃ç„基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "æŸåç„基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "å¯åˆ é™¤ç„基文件ï¼%s" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "确认完æˆ" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "跳过验è¯ï¼Œåœ¨ %s 䏿²¡æœ‰åŸºç¡€ç›®å½•" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "æ„外错误ï¼%s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "ä¿è¯vlan %(vlan)s 和桥 %(bridge)s" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "ä¿è¯æ¡¥ %s" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 #, fuzzy msgid "Failed while unplugging vif" msgstr "移除å®ä¾‹â€%s“ç„è™æ‹Ÿç½‘络设备时失败" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "在 %s 未找到iSCSI设备" #: nova/virt/libvirt/volume.py:307 #, fuzzy, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "在 %(mount_device)s ä¸è¿˜æ²¡æœ‰æ‰¾åˆ°iSCSIå·ă€‚将冿¬¡æ‰«æå¹¶é‡è¯•。å°è¯•次数ï¼%(tries)s" #: nova/virt/libvirt/volume.py:320 #, fuzzy, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "找到iSCSIè‚点 %(mount_device)s (ç»è¿‡%(tries)s æ¬¡å†æ‰«æï¼‰" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "镜åƒå·²ç»æŒ‚è½½" #: nova/virt/libvirt/volume.py:751 #, fuzzy, python-format msgid "AoE device not found at %s" msgstr "在 %s 未找到iSCSI设备" #: nova/virt/libvirt/volume.py:753 #, fuzzy, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "在 %(mount_device)s ä¸è¿˜æ²¡æœ‰æ‰¾åˆ°iSCSIå·ă€‚将冿¬¡æ‰«æå¹¶é‡è¯•。å°è¯•次数ï¼%(tries)s" #: nova/virt/libvirt/volume.py:768 #, fuzzy, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "找到iSCSIè‚点 %(mount_device)s (ç»è¿‡%(tries)s æ¬¡å†æ‰«æï¼‰" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 #, fuzzy msgid "Fibre Channel device not found." msgstr "在 %s 未找到iSCSI设备" #: nova/virt/libvirt/volume.py:946 #, fuzzy, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "在 %(mount_device)s ä¸è¿˜æ²¡æœ‰æ‰¾åˆ°iSCSIå·ă€‚将冿¬¡æ‰«æå¹¶é‡è¯•。å°è¯•次数ï¼%(tries)s" #: nova/virt/libvirt/volume.py:963 #, fuzzy, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "找到iSCSIè‚点 %(mount_device)s (ç»è¿‡%(tries)s æ¬¡å†æ‰«æï¼‰" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "ä»»å¡ [%(task_name)s] %(task_ref)s ç¶æ€ï¼æˆåŸ" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "ä»»å¡ [%(task_name)s] %(task_ref)s ç¶æ€ï¼é”™è¯¯ %(error_info)s" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "在vmwareapiï¼_poll_task,得到这个错误 %s" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "正在使用路径 %s 创建目录" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "å·²ç»åˆ›å»ºè·¯å¾„为 %s ç„目录" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, fuzzy, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "屿€§ %(attr)s 没有为管ç†å¯¹è±¡ %(objName)s 设置" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "æ²¡æœ‰è™æ‹Ÿæœºæ³¨å†Œ" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "ref 为 %s ç„è™æ‹Ÿæœºä¸å­˜åœ¨" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "退出无效ç„ä¼è¯æˆ–者已ç»é€€å‡ºäº†ï¼%s" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "ä¼è¯æœ‰é”™è¯¯" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "ä¼è¯æ— æ•ˆ" #: nova/virt/vmwareapi/fake.py:1225 #, fuzzy msgid "No Virtual Machine has been registered yet" msgstr " è¿˜æ²¡æœ‰è™æ‹Ÿæœºè¢«æ³¨å†Œ" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "执行: %s" #: nova/virt/vmwareapi/host.py:62 #, fuzzy, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "æä¸»æœº %(host)s 设置为 %(state)s。" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "Glance é•œåƒ %s åœ¨è¢«æ€æ­»ç„ç¶æ€" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "Glance é•œåƒ %(image_id)s å¤„äºæœªçŸ¥ç¶æ€ - %(state)s" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "ESX SOAP æœå¡å™¨åœ¨å“应里为托管系统返å›ä¸€ä¸ªç©ºç„端å£ç»„" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "正在ESX主机ä¸åˆ›å»ºå称为 %s ç„端å£ç»„" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "å·²ç»åœ¨ESX主机ä¸åˆ›å»ºäº†å称为 %s ç„端å£ç»„" #: nova/virt/vmwareapi/read_write_util.py:145 #, fuzzy, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "HTTPè¿æ¥å…³é—­æ—¶å‘生异常 VMWareHTTpWrite. Exceptionï¼%s" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "无法导入 suds。" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "VI SDK没有æä¾›è¿™æ ·ç„SOAP方法 “%sâ€" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "在 %s 中å‘生 httplib é”™è¯¯ï¼ " #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "在 %s 套æ¥å­—中å‘生错误 " #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "在%s里å‘生类å‹é”™è¯¯ï¼ " #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "在 %s å‘生异常 " #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "è·å–å®ä¾‹åˆ—表" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "总共è·å¾— %s 个å®ä¾‹" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, fuzzy, python-format msgid "Block device information present: %s" msgstr "block_device_mapping %s" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 #, fuzzy msgid "Creating VM on the ESX host" msgstr "在ESX主机ä¸åˆ›å»ºå为 %s ç„è™æ‹Ÿæœº" #: nova/virt/vmwareapi/vmops.py:304 #, fuzzy msgid "Created VM on the ESX host" msgstr "å·²ç»åœ¨ESX主机ä¸åˆ›å»ºå为 %s ç„è™æ‹Ÿæœº" #: nova/virt/vmwareapi/vmops.py:335 #, fuzzy, 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 "" "创建 %(vmdk_file_size_in_kb)s KB 大ç„è™æ‹Ÿç£ç›˜å’Œé€‚é…å™¨ç±»å‹ %(adapter_type)s 在ESXä¸»æœºç„æœ¬åœ°å­˜å‚¨ " "%(data_store_name)s ä¸" #: nova/virt/vmwareapi/vmops.py:354 #, fuzzy, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" "创建 %(vmdk_file_size_in_kb)s KB 大ç„è™æ‹Ÿç£ç›˜å’Œé€‚é…å™¨ç±»å‹ %(adapter_type)s 在ESXä¸»æœºç„æœ¬åœ°å­˜å‚¨ " "%(data_store_name)s ä¸" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, fuzzy, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" "创建 %(vmdk_file_size_in_kb)s KB 大ç„è™æ‹Ÿç£ç›˜å’Œé€‚é…å™¨ç±»å‹ %(adapter_type)s 在ESXä¸»æœºç„æœ¬åœ°å­˜å‚¨ " "%(data_store_name)s ä¸" #: nova/virt/vmwareapi/vmops.py:413 #, fuzzy, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" "创建 %(vmdk_file_size_in_kb)s KB 大ç„è™æ‹Ÿç£ç›˜å’Œé€‚é…å™¨ç±»å‹ %(adapter_type)s 在ESXä¸»æœºç„æœ¬åœ°å­˜å‚¨ " "%(data_store_name)s ä¸" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "æ­£å¯å¨è™æ‹Ÿæœºå®ä¾‹ %s" #: nova/virt/vmwareapi/vmops.py:632 #, fuzzy msgid "Powered on the VM instance" msgstr "å·²ç»å¯å¨è™æ‹Ÿæœºå®ä¾‹ %s" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "æ­£åœ¨åˆ›å»ºè™æ‹Ÿæœºå®ä¾‹å¿«ç…§ %s " #: nova/virt/vmwareapi/vmops.py:766 #, fuzzy msgid "Created Snapshot of the VM instance" msgstr "å·²ç»åˆ›å»ºè™æ‹Ÿæœºå®ä¾‹å¿«ç…§ %s " #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "ä¸ä¼ é•œåƒ %s" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "å·²ç»ä¸ä¼ é•œåƒ %s" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "å®ä¾‹æœªå¯å¨" #: nova/virt/vmwareapi/vmops.py:955 #, fuzzy msgid "Rebooting guest OS of VM" msgstr "正在é‡å¯è™æ‹Ÿæœºå®¢æˆ·æ“作系统 %s" #: nova/virt/vmwareapi/vmops.py:958 #, fuzzy msgid "Rebooted guest OS of VM" msgstr "å·²ç»é‡å¯è™æ‹Ÿæœºå®¢æˆ·æ“作系统 %s" #: nova/virt/vmwareapi/vmops.py:960 #, fuzzy msgid "Doing hard reboot of VM" msgstr "正在冷å¯å¨è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:964 #, fuzzy msgid "Did hard reboot of VM" msgstr "å·²ç»å†·å¯å¨è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "é‡å¯xvp" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "å·²ç»æ³¨é”€è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:982 #, fuzzy, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "æ³¨é”€è™æ‹Ÿæœºæ—¶åœ¨ vmwareapi:vmops:destroy 中å‘生异常ï¼%s" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 #, fuzzy msgid "Powering off the VM" msgstr "æ­£åœ¨å…³é—­è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 #, fuzzy msgid "Powered off the VM" msgstr "å…³é—­è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "æ­£åœ¨æ³¨é”€è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1029 #, fuzzy msgid "Unregistered the VM" msgstr "å·²ç»æ³¨é”€è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "æ³¨é”€è™æ‹Ÿæœºæ—¶åœ¨ vmwareapi:vmops:destroy 中å‘生异常ï¼%s" #: nova/virt/vmwareapi/vmops.py:1040 #, fuzzy, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "æ­£åœ¨åˆ é™¤è™æ‹Ÿæœº %(name)s ç„内容ä½ç½®åœ¨æ•°æ®å­˜å‚¨ %(datastore_name)s 中" #: nova/virt/vmwareapi/vmops.py:1050 #, fuzzy, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "å·²ç»åˆ é™¤è™æ‹Ÿæœº %(name)s ç„内未知在数æ®å­˜å‚¨ %(datastore_name)s 中" #: nova/virt/vmwareapi/vmops.py:1055 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while deleting the VM " "contents from the disk: %s" msgstr "当ä»ç£ç›˜åˆ é™¤è™æ‹Ÿæœºç„内容时在 vmwareapi:vmops:destroy 里å‘生异常ï¼%s" #: nova/virt/vmwareapi/vmops.py:1065 msgid "pause not supported for vmwareapi" msgstr "vmwareapi 䏿”¯æŒæ‚åœ" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "vmwareapi 䏿”¯æŒå–消æ‚åœ" #: nova/virt/vmwareapi/vmops.py:1080 #, fuzzy msgid "Suspending the VM" msgstr "æŒ‚èµ·è™æ‹Ÿæœº %s " #: nova/virt/vmwareapi/vmops.py:1084 #, fuzzy msgid "Suspended the VM" msgstr "å·²ç»æŒ‚èµ·è™æ‹Ÿæœº %s " #: nova/virt/vmwareapi/vmops.py:1087 #, fuzzy msgid "instance is powered off and cannot be suspended." msgstr "å®ä¾‹å·²å…³é—­ï¼Œæ— æ³•æŒ‚èµ·ă€‚" #: nova/virt/vmwareapi/vmops.py:1090 #, fuzzy msgid "VM was already in suspended state. So returning without doing anything" msgstr "è™æ‹Ÿæœº %s å·²ç»åœ¨æŒ‚èµ·ç¶æ€ă€‚ä¸å任何æ“作直æ¥è¿”å›" #: nova/virt/vmwareapi/vmops.py:1100 #, fuzzy msgid "Resuming the VM" msgstr "正在æ¢å¤è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1105 #, fuzzy msgid "Resumed the VM" msgstr "å·²ç»æ¢å¤è™æ‹Ÿæœº %s " #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "å®ä¾‹ä¸åœ¨æŒ‚èµ·ç¶æ€" #: nova/virt/vmwareapi/vmops.py:1182 #, fuzzy msgid "instance is suspended and cannot be powered off." msgstr "å®ä¾‹æœªå¯å¨" #: nova/virt/vmwareapi/vmops.py:1185 #, fuzzy msgid "VM was already in powered off state. So returning without doing anything" msgstr "è™æ‹Ÿæœº %s å·²ç»åœ¨æŒ‚èµ·ç¶æ€ă€‚ä¸å任何æ“作直æ¥è¿”å›" #: nova/virt/vmwareapi/vmops.py:1197 #, fuzzy msgid "VM was already in powered on state. So returning without doing anything" msgstr "è™æ‹Ÿæœº %s å·²ç»åœ¨æŒ‚èµ·ç¶æ€ă€‚ä¸å任何æ“作直æ¥è¿”å›" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "æ­£åœ¨å…³é—­è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1206 #, fuzzy msgid "Powered on the VM" msgstr "å…³é—­è™æ‹Ÿæœº %s" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "å°†å®ä¾‹ '%(instance_uuid)s' ç„进度更新到 %(progress)d" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "正在删除volumeIDï¼%s " #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "å®ä¾‹ - %s ä¸å­˜åœ¨" #: nova/virt/vmwareapi/vmops.py:1309 #, fuzzy, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "æ³¨é”€è™æ‹Ÿæœºæ—¶åœ¨ vmwareapi:vmops:destroy 中å‘生异常ï¼%s" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "正在删除volumeIDï¼%s " #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "ä»å¿«ç…§ %s 创建å·" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "找到%(instance_count)d个超过%(timeout)d秒悬挂ç„é‡å¯" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 #, fuzzy msgid "Automatically hard rebooting" msgstr "自å¨å†·é‡å¯ %d" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 #, fuzzy msgid "Reconfiguring VM instance to set the machine id" msgstr "æ­£åœ¨é‡æ–°é…ç½®è™æ‹Ÿæœºå®ä¾‹ %s æ¥é™„å é•œåƒç£ç›˜" #: nova/virt/vmwareapi/vmops.py:1525 #, fuzzy msgid "Reconfigured VM instance to set the machine id" msgstr "å·²ç»é‡æ–°é…ç½®è™æ‹Ÿæœºå®ä¾‹ %s æ¥é™„å äºé•œåƒç£ç›˜" #: nova/virt/vmwareapi/vmops.py:1535 #, fuzzy, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "æ­£åœ¨é‡æ–°é…ç½®å®ä¾‹ %(name)s æ¥è®¾ç½®æœºå™¨ç„id为ip - %(ip_addr)s" #: nova/virt/vmwareapi/vmops.py:1542 #, fuzzy, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "å·²ç»é‡æ–°é…ç½®è™æ‹Ÿæœºå®ä¾‹ %(name)s æ¥è®¾ç½®æœºå™¨ç„id为ip - %(ip_addr)s" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "正在ä»glanceé•œåƒæœå¡å™¨ä¸­ä¸‹è½½é•œåƒ %s" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "å·²ç»ä»glanceé•œåƒæœå¡å™¨ä¸­ä¸‹è½½é•œåƒ %s" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "正在å‘Glanceé•œåƒæœå¡å™¨ä¸ä¼ é•œåƒ %s" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "å·²ç»å‘Glanceé•œåƒæœå¡å™¨ä¸ä¼ äº†é•œåƒ %s" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "正在è·å–é•œåƒ %s ç„大å°" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "è·å¾—大å°ä¸º %(size)s ç„镜åƒç›®ç„为了 %(image)s" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "釿–°æ‰«æå­˜å‚¨åº“ %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "釿–°æ‰«æå­˜å‚¨åº“ %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "å®ä¾‹ %(instance_name)sï¼æ­£åœ¨åˆ é™¤å®ä¾‹æ–‡ä»¶ %(target)s" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "å®ä¾‹ %(instance_name)sï¼æ­£åœ¨åˆ é™¤å®ä¾‹æ–‡ä»¶ %(target)s" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "挂载点 %(mountpoint)s 附å åˆ°å®ä¾‹ %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "没有在数æ®åº“找到å·" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "分离_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "挂载点 %(mountpoint)s ä»å®ä¾‹ %(instance_name)s 分离" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, fuzzy, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "è¶…æ—¶ï¼è°ƒç”¨ %(method)s è¶…æ—¶ă€‚è™æ‹Ÿæœºid=%(instance_uuid)s; args=%(args)r" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, fuzzy, python-format msgid "" "NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. " "args=%(args)r" msgstr "没有执行ï¼ä»£ç†ä¸æ”¯æŒ %(method)s ç„è°ƒç”¨ă€‚è™æ‹Ÿæœºid=%(instance_uuid)s; args=%(args)r" #: nova/virt/xenapi/agent.py:135 nova/virt/xenapi/vmops.py:1781 #, fuzzy, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "对 %(method)s ç„调用返å›é”™è¯¯ï¼%(e)s。" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "查询代ç†ç‰ˆæœ¬" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "%(hypervisor)s/%(os)s/%(architecture)s 最新ç„agent build 是 %(version)s 版本" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "没有找到 %(hypervisor)s/%(os)s/%(architecture)s ç„代ç†åˆ›å»º" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "æä»£ç†æ›´æ–°ä¸º %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "设置管ç†å‘˜å¯†ç " #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, fuzzy, python-format msgid "Injecting file path: %r" msgstr "注入文件路径ï¼'%s'" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "é‡ç½®ç½‘络" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "安装在该镜åƒç„XenServer工具å¯ä»¥è¿›è¡Œç½‘ç»œæ³¨å…¥ă€‚ç½‘ç»œæ–‡ä»¶ä¸ä¼è¢«æ“ä½œă€‚" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "è¯¥é•œåƒæœ‰XenServer工具,但是ä¸èƒ½è¿›è¡Œç½‘络注入" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "没有在该镜åƒä¸å®‰è£…XenServer工具" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "OpenSSL错误ï¼%s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, fuzzy, python-format msgid "Could not determine key: %s" msgstr "解密ç§é’¥å¤±è´¥ï¼%s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "䏿”¯æŒåœ¨XenServerå¯å¨ä¸»æœº" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "产生 NotImplemented 错误" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake 没有 %s ç„å®ç°" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "调用 getter %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "调用 getter %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "xenapi.fake 没有 %s ç„å®ç°æˆ–者调用时用了错误数目ç„傿•°" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "计算主机 %(host)s æ²¡æœ‰æ‰¾åˆ°ă€‚" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/virt/xenapi/host.py:305 #, fuzzy msgid "Unable to get updated status" msgstr "无法得到最新ç„ç¶æ€ï¼%s" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "对 %(method)s ç„调用返å›é”™è¯¯ï¼%(e)s。" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "å‘ç°ä¸å”¯ä¸€ç„网络 name_label %s" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "å‘ç°æ¡¥ %s ç„网络ä¸å”¯ä¸€" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "å‘ç°ç½‘æ¡¥ %s 没有网络" #: nova/virt/xenapi/pool.py:67 #, fuzzy, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "èåˆ %(aggregate_id)så·²ç»æœ‰ä¸»æœº %(host)s。" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "没有找到设备 %s ç„PIF" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 #, fuzzy msgid "Created VM" msgstr "_create: %s" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 #, fuzzy msgid "VM already halted, skipping shutdown..." msgstr "è™æ‹Ÿæœº %(instance_uuid)s å·²ç»ç»ˆæ­¢ï¼Œè·³è¿‡å…³é—­..." #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "没有在å®ä¾‹ %s 找到VBD" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "å·²ç»åˆ†ç¦»" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "无法移除 VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "æ— æ³•é”€æ¯ VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "创建了VBD %(vbd_ref)s ç›®ç„æ˜¯ä¸ºäº†è™æ‹Ÿæœº %(vm_ref)s,VDI %(vdi_ref)s" #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "创建了VBD %(vbd_ref)s ç›®ç„æ˜¯ä¸ºäº†è™æ‹Ÿæœº %(vm_ref)s,VDI %(vdi_ref)s" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "æ— æ³•é”€æ¯ VDI %s" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "创建了 VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s) ä½ç½®åœ¨" " %(sr_ref)s。" #: nova/virt/xenapi/vm_utils.py:556 #, fuzzy msgid "SR not present and could not be introduced" msgstr "无法找到å®ä¾‹" #: nova/virt/xenapi/vm_utils.py:580 #, fuzzy, python-format msgid "block device info: %s" msgstr "å—设备列表 block_device_list %s" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "å…‹é†äº† VDI %(vdi_ref)s 对象æ¥è‡ªVDI %(vdi_to_clone_ref)s" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "å¼€å§‹ä¸ºè™æ‹Ÿæœº %s å¿«ç…§" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "ä» dom0 中移除内核/内存盘文件" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, fuzzy, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "xapi 'download_vhd' è¿”å›â€œ%(vdi_type)sâ€ç±»å‹ç„VDI,其UUID为 “%(vdi_uuid)sâ€" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, fuzzy, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "è·å–é•œåƒ %(image)s" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "é•œåƒ %(image)s ç„大å°ï¼%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, python-format msgid "" "Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d " "bytes" msgstr "内核/内存盘镜åƒå¤ªå¤§ï¼%(vdi_size)d å­—è‚,最大 %(max_size)d å­—è‚" #: nova/virt/xenapi/vm_utils.py:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "å°†VDI %s å¤åˆ¶åˆ°dom0ç„/boot/guest下" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "内核/内存盘 VDI %s 已销æ¯" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "å®ä¾‹ %sï¼è·å–Glance镜åƒå¤±è´¥" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "检测到 %(image_type_str)s æ ¼å¼ï¼Œç›®æ ‡æ˜¯é•œåƒ %(image_ref)s" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s ä¾ç„¶å¯ç”¨" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "标记sr_matching_filter '%s' 没有éµå¾ªæ ¼å¼è¦æ±‚" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "无法找到content-type ISOç„存储库" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "ISOï¼éiso内容" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "ISOï¼iso content_type,没有 'i18n-key' é”®" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "ISOï¼iso content_type,i18n-keyç„值䏿˜¯ 'local-storage-iso'" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "ISO: å­˜å‚¨åº“ç¬¦åˆæ ‡å‡†" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "ISO: ISO, æ­£åœ¨æŸ¥çœ‹æ˜¯å¦æ˜¯æœ¬åœ°ç„主机" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "ISO: PBD匹é…, æƒ³è¦ %(pbd_rec)s, ç›®å‰æœ‰ %(host)s" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "ISOï¼å«æœ‰æœ¬åœ°PBDç„存储库" #: nova/virt/xenapi/vm_utils.py:1983 #, python-format msgid "" "Unable to obtain RRD XML for VM %(vm_uuid)s with server details: " "%(server)s." msgstr "æ— æ³•ä¸ºå«æœå¡å™¨è¯¦ç»†ä¿¡æ¯ç„è™æ‹Ÿæœº %(vm_uuid)s è·å–RRD XMLï¼%(server)s。" #: nova/virt/xenapi/vm_utils.py:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s 有父 %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "父标识 %(parent_uuid)s å’ŒåŸå…ˆç„父标识 %(original_parent_uuid)s ä¸åŒ¹é…,正在等待åˆå¹¶..." #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "等待设备 %s 创建超时" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "æ’å…¥VBD %s... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "æ’å…¥VBD %s 完æˆă€‚" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "VBD %(vbd_ref)s 作为 %(orig_dev)s æ’å…¥" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "VBD %(vbd_ref)s æ’入错误ç„è®¾å¤‡ï¼Œé‡æ–°æ˜ å°„为 %(dev)s" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "正在销æ¯VDI为 %s ç„ VBD " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "å·²ç»é”€æ¯VDI为 %s ç„ VBD" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "分区ï¼" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr " %(num)s: %(ptype)s %(size)d sectors" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "将分区表 %(primary_first)d %(primary_last)d 写入到 %(dev_path)s..." #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "完æˆå†™å…¥åˆ†åŒºè¡¨ %s 。" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "ç›´æ¥æ“作æ¥å£æ–‡ä»¶" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "挂载文件系统失败(æœŸæœ›ç„æ˜¯éLinuxå®ä¾‹)ï¼%s" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "å°† vhd 转移到新主机失败" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "正在删除基文件ï¼%s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "正在å¯å¨è™æ‹Ÿæœº" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "在数æ®åº“æ›´æ–°å·å¤±è´¥" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "å¿«ç…§å®Œæ¯•å¹¶ä¸ºè™æ‹Ÿæœº %s ä¸ä¼ " #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "釿–°å¯å¨å®ä¾‹å¤±è´¥" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 #, fuzzy msgid "Unable to find root VBD/VDI for VM" msgstr "无法为VDI %s 找到VBD" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "é‡å¯xvp" #: nova/virt/xenapi/vmops.py:1288 #, fuzzy msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "å®ä¾‹ %(instance_uuid)s 使用RAW或者VHD,跳过内核和内存盘ç„删除" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "å®ä¾‹æ‹¥æœ‰å†…æ ¸æˆ–è€…å†…å­˜ç›˜ï¼Œä½†ä¸æ˜¯äºŒè€…凿œ‰" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "内核/内存盘文件移除了" #: nova/virt/xenapi/vmops.py:1329 #, fuzzy msgid "Destroying VM" msgstr "é‡å¯xvp" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "è™æ‹Ÿæœºä¸å­˜åœ¨ï¼Œè·³è¿‡é”€æ¯..." #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "å®ä¾‹å·²å¤„äºæ•‘æ´æ¨¡å¼ï¼%s" #: nova/virt/xenapi/vmops.py:1451 #, fuzzy msgid "VM is not present, skipping soft delete..." msgstr "è™æ‹Ÿæœºä¸å­˜åœ¨ï¼Œè·³è¿‡é”€æ¯..." #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "ä¸ºè™æ‹Ÿæœºæ³¨å…¥ç½‘络信æ¯åˆ°xsï¼|%s|" #: nova/virt/xenapi/vmops.py:1675 #, fuzzy msgid "Creating vifs" msgstr "正在创建镜åƒ" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "æ­£åœ¨ä¸ºè™æ‹Ÿæœº %(vm_ref)s,网络 %(network_ref)s 创建VIF。" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 #, fuzzy msgid "No suitable network for migrate" msgstr "错误ç„网络格å¼" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 #, fuzzy msgid "Migrate Send failed" msgstr "创建失败" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "为存储库创建pbd" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "æ’入存储库" #: nova/virt/xenapi/volume_utils.py:89 #, fuzzy msgid "Forgetting SR..." msgstr "é—忘存储库 %s..." #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "无法在VBD %s找到存储库" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "异常 %(exc)s 在为 %(sr_ref)s 得到PBDs时被忽略" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "异常 %(exc)s 在拔开PBD %(pbd)s 时被忽略" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "无法在存储库 %s ä¸å¼•å…¥VDI" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "无法使得VDI %s ç„记录è¿è¡Œ" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "无法为存储库 %s 引入VDI" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "挂载点无法被翻译ï¼%s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "无法登录到XenAPI(Dom0ç£ç›˜æ˜¯ç©ºä¹ˆï¼Ÿ)" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "得到异常ï¼%s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "æ¡æ‰‹å‡ºé”™ï¼%s" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "无效ç„请求ï¼%s" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "请求ï¼%s" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "请求缺少令牌ï¼%s" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "请求中有无效令牌ï¼%s" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "æ„外错误ï¼%s" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "å¯å¨nova-xvpvncproxyè‚点(版本 %s)" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 #, fuzzy msgid "status must be 'in-use'" msgstr "ç¶æ€å¿…é¡»å¯ç”¨" #: nova/volume/cinder.py:227 #, fuzzy msgid "status must be 'available'" msgstr "ç¶æ€å¿…é¡»å¯ç”¨" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ar/0000775000175400017540000000000012323722545016513 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ar/LC_MESSAGES/0000775000175400017540000000000012323722546020301 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ar/LC_MESSAGES/nova.po0000664000175400017540000116555212323721510021611 0ustar jenkinsjenkins00000000000000# Arabic translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-09-12 07:56+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Arabic " "(http://www.transifex.com/projects/p/openstack/language/ar/)\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : " "n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ja/0000775000175400017540000000000012323722545016503 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ja/LC_MESSAGES/0000775000175400017540000000000012323722546020271 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ja/LC_MESSAGES/nova.po0000664000175400017540000124423112323721510021571 0ustar jenkinsjenkins00000000000000# Japanese translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-08-23 11:22+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "ăƒ«ăƒ¼ăƒˆCAă®ăƒ•ă‚¡ă‚¤ăƒ«å" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®ăƒ•ă‚¡ă‚¤ăƒ«å" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "ă‚­ăƒ¼ă‚’æ ¼ç´ă™ă‚‹ăƒ‘ă‚¹" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "ăƒ«ăƒ¼ăƒˆCAă‚’æ ¼ç´ă™ă‚‹ăƒ‘ă‚¹" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "ăƒ—ăƒ­ă‚¸ă‚§ă‚¯ăƒˆă”ă¨ă«CAă‚’ä½¿ç”¨ă™ă‚‹ă‹å¦ă‹ă®ăƒ•ăƒ©ă‚°" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "ăƒ¦ăƒ¼ă‚¶ă®è¨¼æ˜æ›¸ă®ă‚µăƒ–ă‚¸ă‚§ă‚¯ăƒˆă€%s ă¯ăƒ—ăƒ­ă‚¸ă‚§ă‚¯ăƒˆă€ăƒ¦ăƒ¼ă‚¶ă€ă‚¿ă‚¤ăƒ ă‚¹ă‚¿ăƒ³ăƒ—" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "ăƒ—ăƒ­ă‚¸ă‚§ă‚¯ăƒˆă®è¨¼æ˜æ›¸ă®ă‚µăƒ–ă‚¸ă‚§ă‚¯ăƒˆă€%s ă¯ăƒ—ăƒ­ă‚¸ă‚§ă‚¯ăƒˆă€ăă‚ˆă³ă‚¿ă‚¤ăƒ ă‚¹ă‚¿ăƒ³ăƒ—" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Flags ă®ăƒ‘ă‚¹: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚½ăƒƒăƒ‰ăŒå­˜åœ¨ă—ă¾ă›ă‚“。" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_name)s ă«ăƒă‚¦ăƒ³ăƒˆăƒă‚¤ăƒ³ăƒˆ %(mountpoint)s ă‚’æ¥ç¶(attach)ă—ă¾ă—ăŸ" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_name)s: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ăƒ•ă‚¡ă‚¤ăƒ«ç¾¤ %(target)s ă‚’å‰é™¤ă—ă¦ă„ă¾ă™" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, fuzzy, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă«ă‚¢ăƒ‰ăƒ¬ă‚¹ %(public_ip)s ă‚’å‰²ă‚当ă¦" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ ă‚°ăƒ«ăƒ¼ăƒ—%săŒå­˜åœ¨ă—ă¾ă›ă‚“。" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ă‚’ăƒ«ăƒ¼ăƒ—ăƒăƒƒă‚¯ %s ă«ă‚¢ă‚¿ăƒƒăƒă§ăă¾ă›ă‚“。" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ă‚’ăƒ«ăƒ¼ăƒ—ăƒăƒƒă‚¯ %s ă«ă‚¢ă‚¿ăƒƒăƒă§ăă¾ă›ă‚“。" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %(volume_id)s ă‚’ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă®ăƒ‡ăƒă‚¤ă‚¹ %(device)s ă«æ¥ç¶" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "%(topic)s ăƒăƒ¼ăƒ‰ă‚’é–‹å§‹ă—ă¦ă„ă¾ă™ (ăƒăƒ¼ă‚¸ăƒ§ăƒ³ %(vcs_string)s)" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "ăƒ‡ăƒ¼ă‚¿ăƒ™ăƒ¼ă‚¹ă«ă‚¨ăƒ³ăƒˆăƒªă®å­˜åœ¨ă—ăªă„ă‚µăƒ¼ăƒ“ă‚¹ă‚’çµ‚äº†ă—ă¾ă™ă€‚" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "ăƒªăƒ³ă‚¯ăƒ­ăƒ¼ă‚«ăƒ«ă‚¢ăƒ‰ăƒ¬ă‚¹ăŒè¦‹ă¤ă‹ă‚ă¾ă›ă‚“: %s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "%(interface)s ă®ăƒ­ăƒ¼ă‚«ăƒ«IPă‚¢ăƒ‰ăƒ¬ă‚¹ă®ăƒªăƒ³ă‚¯ăŒå–å¾—ă§ăă¾ă›ă‚“:%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "䏿­£ăªăƒăƒƒă‚¯ă‚¨ăƒ³ăƒ‰ă§ă™: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "VBD %s ă‹ă‚‰ SRă‚’å–å¾—ă§ăă¾ă›ă‚“。" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "VBD %s ă‹ă‚‰ SRă‚’å–å¾—ă§ăă¾ă›ă‚“。" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "VBD %s ă‹ă‚‰ SRă‚’å–å¾—ă§ăă¾ă›ă‚“。" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "__call__ ă‚’å®Ÿè£…ă—ăªă‘ă‚Œă°ăªă‚ă¾ă›ă‚“" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "èªè¨¼å¤±æ•—ă®å›æ•°ăŒå¤ă™ăă¾ă™ă€‚" #: nova/api/ec2/__init__.py:167 #, 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 "ă‚¢ă‚¯ă‚»ă‚¹ă‚­ăƒ¼ %(access_key)s ă¯ %(failures)d å›èªè¨¼ă«å¤±æ•—ă—ă¾ă—ăŸă®ă§ă€%(lock_mins)d åˆ†é–“ăƒ­ăƒƒă‚¯ă—ă¾ă™ă€‚" #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "%s ă®èªè¨¼ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "èªè¨¼å¤±æ•—ă®å›æ•°ăŒå¤ă™ăă¾ă™ă€‚" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "ă‚¢ă‚¯ă‚·ăƒ§ăƒ³(action): %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "引数: %(key)s\t\t値: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "ă‚³ăƒ³ăƒˆăƒ­ăƒ¼ăƒ©=%(controller)s ă¨ă‚¢ă‚¯ă‚·ăƒ§ăƒ³=%(action)s 用ă®è¨±å¯ă•ă‚Œă¦ă„ăªă„ăƒªă‚¯ă‚¨ă‚¹ăƒˆ" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "æœªă‚µăƒăƒ¼ăƒˆă® API ăƒªă‚¯ă‚¨ă‚¹ăƒˆ: ă‚³ăƒ³ăƒˆăƒ­ăƒ¼ăƒ© = %(controller)s, ă‚¢ă‚¯ă‚·ăƒ§ăƒ³ = %(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, fuzzy, python-format msgid "Could not find key pair(s): %s" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Create key pair: ă‚­ăƒ¼ăƒă‚¢ %s ă‚’ä½œæˆă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Delete key pair: ă‚­ăƒ¼ăƒă‚¢ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "指å®ă•ă‚ŒăŸăƒ‘ăƒ©ăƒ¡ăƒ¼ă‚¿ă«è©²å½“ă™ă‚‹ăƒ«ăƒ¼ăƒ«ăŒă‚ă‚ă¾ă›ă‚“。" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Create volume: %s GBă®ăƒœăƒªăƒ¥ăƒ¼ăƒ ă‚’作æˆă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %(volume_id)s ă‚’ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă®ăƒ‡ăƒă‚¤ă‚¹ %(device)s ă«æ¥ç¶" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Detach volume: ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă‚’ăƒ‡ă‚¿ăƒƒăƒă—ă¾ă™" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Allocate address: ă‚¢ăƒ‰ăƒ¬ă‚¹ă‚’å‰²ă‚当ă¦ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Release address: ă‚¢ăƒ‰ăƒ¬ă‚¹ %s ă‚’é–‹æ”¾ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă«ă‚¢ăƒ‰ăƒ¬ă‚¹ %(public_ip)s ă‚’å‰²ă‚当ă¦" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "Disassociate address: ă‚¢ăƒ‰ăƒ¬ă‚¹ %s ă®é–¢é€£ä»˜ă‘ă‚’è§£é™¤ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Disassociate address: ă‚¢ăƒ‰ăƒ¬ă‚¹ %s ă®é–¢é€£ä»˜ă‘ă‚’è§£é™¤ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "De-registering image: ă‚¤ăƒ¡ăƒ¼ă‚¸ %s ă‚’ç™»éŒ²è§£é™¤ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ %(image_location)s ăŒ ID %(image_id)s ă§ç™»éŒ²ă•ă‚Œă¾ă—ăŸ" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "ăƒ¦ăƒ¼ă‚¶ă¾ăŸă¯ă‚°ăƒ«ăƒ¼ăƒ—ăŒæŒ‡å®ă•ă‚Œă¦ă„ă¾ă›ă‚“。" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "ă‚°ăƒ«ăƒ¼ăƒ— \"all\" ă®ă¿ă‚µăƒăƒ¼ăƒˆă•ă‚Œă¦ă„ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_type ă¯ add ă¾ăŸă¯ remove ă®ä½•ă‚Œă‹ă§ă‚ă‚‹å¿…è¦ăŒă‚ă‚ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ %s ă®å…¬é–‹è¨­å®ă‚’æ›´æ–°ă—ă¾ă™ă€‚" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "未知ă®ă‚¨ăƒ©ăƒ¼ăŒç™ºç”Ÿă—ă¾ă—ăŸă€‚å†åº¦ăƒªă‚¯ă‚¨ă‚¹ăƒˆă‚’実行ă—ă¦ăă ă•ă„。" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "例外 %s ăŒç™ºç”Ÿă—ă¾ă—ăŸă€‚" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "Invalid signature: ăƒ¦ăƒ¼ă‚¶ %s ă®ç½²åăŒä¸æ­£ă§ă™ă€‚" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "Invalid signature: ăƒ¦ăƒ¼ă‚¶ %s ă®ç½²åăŒä¸æ­£ă§ă™ă€‚" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "ăƒă‚¦ăƒ³ăƒˆăƒă‚¤ăƒ³ăƒˆă‚’変æ›ă§ăă¾ă›ă‚“。 %s" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "ăƒă‚¦ăƒ³ăƒˆăƒă‚¤ăƒ³ăƒˆă‚’変æ›ă§ăă¾ă›ă‚“。 %s" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "例外: Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "例外: Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "例外: compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "例外: compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "例外: Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "例外: Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "例外: Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "例外: compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "ă‚¢ăƒˆăƒªăƒ“ăƒ¥ăƒ¼ăƒˆ %s ă¯ă‚µăƒăƒ¼ăƒˆă•ă‚Œă¦ă„ă¾ă›ă‚“。" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "VLANă‚¤ăƒ³ă‚¿ăƒ•ă‚§ăƒ¼ă‚¹ %s ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "ă‚¢ă‚¯ă‚·ăƒ§ăƒ³(action): %s" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă‚’åˆ‡æ–­(detach)ă§ăă¾ă›ă‚“" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă«ă‚¢ăƒ‰ăƒ¬ă‚¹ %(public_ip)s ă‚’å‰²ă‚当ă¦" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "䏿­£ăªăƒăƒƒă‚¯ă‚¨ăƒ³ăƒ‰ă§ă™: %s" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "getter %s ă‚’ă‚³ăƒ¼ăƒ«ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "getter %s ă‚’ă‚³ăƒ¼ăƒ«ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "Invalid signature: ăƒ¦ăƒ¼ă‚¶ %s ă®ç½²åăŒä¸æ­£ă§ă™ă€‚" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "有å¹ăªăƒ«ăƒ¼ăƒ«ă‚’作æˆă™ă‚‹ç‚ºă®å分ăªăƒ‘ăƒ©ăƒ¡ăƒ¼ă‚¿ăŒă‚ă‚ă¾ă›ă‚“" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "指å®ă•ă‚ŒăŸăƒ«ăƒ¼ăƒ«ă¯æ—¢ă«ă‚°ăƒ«ăƒ¼ăƒ— %s ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "例外 %s ăŒç™ºç”Ÿă—ă¾ă—ăŸă€‚" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚½ăƒƒăƒ‰ăŒå­˜åœ¨ă—ă¾ă›ă‚“。" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚½ăƒƒăƒ‰ăŒå­˜åœ¨ă—ă¾ă›ă‚“。" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "呼ă³å‡ºă—å…ƒă« ä¾‹å¤– %s ă‚’è¿”å´ă—ă¾ă™ă€‚" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă«ă‚¢ăƒ‰ăƒ¬ă‚¹ %(public_ip)s ă‚’å‰²ă‚当ă¦" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "openvpnă®è¨­å®ă«å…¥ă‚Œă‚‹ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ă®å€¤" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "openvpnă®è¨­å®ă«å…¥ă‚Œă‚‹ăƒăƒƒăƒˆăƒă‚¹ă‚¯ă®å€¤" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "%s 用ă®VPNă‚’èµ·å‹•ă—ă¾ă™ă€‚" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă®å­˜åœ¨ăŒç¢ºèªă§ăă¾ă›ă‚“。" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "å—ä¿¡ï¼ %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "é–‹å§‹ă‚¢ăƒ‰ăƒ¬ă‚¹" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "é–‹å§‹ă‚¢ăƒ‰ăƒ¬ă‚¹" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "予期ă—ăªă„ă‚¨ăƒ©ăƒ¼ç™ºç”Ÿ: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®ă‚¯ă‚ªăƒ¼ă‚¿ă‚’è¶…ăˆă¾ă—ăŸă€‚ă“ă®ă‚¿ă‚¤ăƒ—ă«ăă„ă¦ă¯ă‚㨠%s ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă—ă‹å®Ÿè¡Œă§ăă¾ă›ă‚“。" #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®ă‚¯ă‚ªăƒ¼ă‚¿ă‚’è¶…ăˆă¾ă—ăŸă€‚ă“ă®ă‚¿ă‚¤ăƒ—ă«ăă„ă¦ă¯ă‚㨠%s ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă—ă‹å®Ÿè¡Œă§ăă¾ă›ă‚“。" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă«ăƒœăƒªăƒ¥ăƒ¼ăƒ ă‚’æ¥ç¶(attach)ă§ăă¾ă›ă‚“。" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "%s 個ă®ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®èµ·å‹•ă‚’å§‹ă‚ă¾ă™â€¦" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "VM %s ă«å¯¾ă™ă‚‹ă‚¹ăƒăƒƒăƒ—ă‚·ăƒ§ăƒƒăƒˆă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "Create Security Group: ă‚»ă‚­ăƒ¥ăƒªăƒ†ă‚£ă‚°ăƒ«ăƒ¼ăƒ— %s ă‚’ä½œæˆă—ă¾ă™ă€‚" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "VBD %s ă®å‰é™¤ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "VBD %s ă®å‰é™¤ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "Revoke security group ingress: ă‚»ă‚­ăƒ¥ăƒªăƒ†ă‚£ă‚°ăƒ«ăƒ¼ăƒ—è¨±å¯ %s ă®å–消" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Delete security group: ă‚»ă‚­ăƒ¥ăƒªăƒ†ă‚£ă‚°ăƒ«ăƒ¼ăƒ— %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Authorize security group ingress: ă‚»ă‚­ăƒ¥ăƒªăƒ†ă‚£ă‚°ăƒ«ăƒ¼ăƒ—è¨±å¯ %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "Revoke security group ingress: ă‚»ă‚­ăƒ¥ăƒªăƒ†ă‚£ă‚°ăƒ«ăƒ¼ăƒ—è¨±å¯ %s ă®å–消" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "予期ă—ăªă„ă‚¨ăƒ©ăƒ¼ç™ºç”Ÿ: %s" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Rebooting instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Detach volume: ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă‚’ăƒ‡ă‚¿ăƒƒăƒă—ă¾ă™" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "Rebooting instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹%s: å†èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "snapshotting: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚¹ăƒăƒƒăƒ—ă‚·ăƒ§ăƒƒăƒˆă‚’å–得中" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/compute/manager.py:2989 #, fuzzy msgid "Unrescuing" msgstr "Unrescuing: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă‚’ă‚¢ăƒ³ăƒ¬ă‚¹ă‚­ăƒ¥ăƒ¼ă—ă¾ă™ă€‚" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "snapshotting: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚¹ăƒăƒƒăƒ—ă‚·ăƒ§ăƒƒăƒˆă‚’å–得中" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "retrieving diagnostics: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®è¨ºæ–­æƒ…å ±ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "ă‚³ăƒ³ă‚½ăƒ¼ăƒ«ă‚’è¿½å ă—ă¦ă„ă¾ă™" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "ă‚³ăƒ³ă‚½ăƒ¼ăƒ«ă‚’è¿½å ă—ă¦ă„ă¾ă™" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ ă‚’æœªçŸ¥ă®ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă‹ă‚‰ăƒ‡ă‚¿ăƒƒăƒă—ă¾ă™ă€‚" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ åˆ‡æ–­: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Deleting user: ăƒ¦ăƒ¼ă‚¶ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Deleting user: ăƒ¦ăƒ¼ă‚¶ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "Create key pair: ă‚­ăƒ¼ăƒă‚¢ %s ă‚’ä½œæˆă—ă¾ă™ă€‚" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "ă‚³ăƒ³ă‚½ăƒ¼ăƒ«ă‚’è¿½å ă—ă¦ă„ă¾ă™" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "䏿­£ăªăƒăƒƒă‚¯ă‚¨ăƒ³ăƒ‰ă§ă™: %s" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "xvp 設å®ă‚’冿§‹ç¯‰ă—ă¦ă„ă¾ă™" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "%s ă‚’å†åº¦æ›¸ăè¾¼ă¿ă¾ă—ăŸ" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "xvp ă‚’åœæ­¢ă—ă¦ă„ă¾ă™" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "xvp ă‚’é–‹å§‹ă—ă¦ă„ă¾ă™" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "xvp ă®é–‹å§‹ä¸­ă«ă‚¨ăƒ©ăƒ¼: %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "xvp ă‚’å†èµ·å‹•ă—ă¦ă„ă¾ă™" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvp ăŒå®Ÿè¡Œă•ă‚Œă¦ă„ă¾ă›ă‚“…" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "åˆæœŸåŒ–ăƒ™ă‚¯ă‚¿ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ăƒ•ă‚¡ă‚¤ăƒ« %(image_file)s ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă«ă‚¢ăƒ‰ăƒ¬ă‚¹ %(public_ip)s ă‚’å‰²ă‚当ă¦" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_id)s ă«ă‚¢ăƒ‰ăƒ¬ă‚¹ %(public_ip)s ă‚’å‰²ă‚当ă¦" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d ă¯ç„¡å¹ă§ă™ă€‚dnsmasqă‚’å†å®Ÿè¡Œă—ă¾ă™ă€‚" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "dnsmasqă«å¯¾ă—ă¦hupă‚’é€ä¿¡ă—ă¾ă—ăŸăŒ %s ăŒç™ºç”Ÿă—ă¾ă—ăŸă€‚" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d ă¯ç„¡å¹ă§ă™ă€‚dnsmasqă‚’å†å®Ÿè¡Œă—ă¾ă™ă€‚" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "radvd åœæ­¢ăŒ %s ä¾‹å¤–ă‚’ç™ºè¡Œă—ă¾ă—ăŸ" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d ăŒă‚¹ăƒˆăƒ¼ăƒ«ă—ă¦ă„ă‚‹ă®ă§ radvd ă‚’å†å®Ÿè¡Œă—ă¦ă„ă¾ă™â€¦" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "䏿­£ăªăƒăƒƒă‚¯ă‚¨ăƒ³ăƒ‰ă§ă™: %s" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "VLANă‚¤ăƒ³ă‚¿ăƒ•ă‚§ăƒ¼ă‚¹ %s ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "%s 用ă®ăƒ–ăƒªăƒƒă‚¸ă‚¤ăƒ³ă‚¿ăƒ•ă‚§ăƒ¼ă‚¹ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "%s 用ă®ăƒ–ăƒªăƒƒă‚¸ă‚¤ăƒ³ă‚¿ăƒ•ă‚§ăƒ¼ă‚¹ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "xvp ă®é–‹å§‹ä¸­ă«ă‚¨ăƒ©ăƒ¼: %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "ăƒªăƒ¼ă‚¹ă—ă¦ă„ăªă„IP %s ăŒé–‹æ”¾ă•ă‚Œă¾ă—ăŸă€‚" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ă®æ•°ă¨VLANă®é–‹å§‹ç•ªå·ă®å’Œă¯ 4094 ă‚ˆă‚大ăăă§ăă¾ă›ă‚“。" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "䏿­£ăªăƒăƒƒă‚¯ă‚¨ăƒ³ăƒ‰ă§ă™: %s" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "å—ä¿¡ï¼ %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Revoke security group ingress: ă‚»ă‚­ăƒ¥ăƒªăƒ†ă‚£ă‚°ăƒ«ăƒ¼ăƒ—è¨±å¯ %s ă®å–消" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "指å®ă•ă‚ŒăŸăƒ«ăƒ¼ăƒ«ă¯æ—¢ă«ă‚°ăƒ«ăƒ¼ăƒ— %s ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "xvp ă®é–‹å§‹ä¸­ă«ă‚¨ăƒ©ăƒ¼: %s" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "å—ä¿¡ï¼ %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "ă‚³ăƒăƒ³ăƒ‰å®Ÿè¡Œ(subprocess): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "ă‚³ăƒăƒ³ăƒ‰å®Ÿè¡Œçµæœï¼ %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "ă‚³ăƒăƒ³ăƒ‰ï¼ˆSSH)ă‚’å®Ÿè¡Œ: %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "FLAGSă®ä¸€è¦§:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "é–‹å§‹ă‚¢ăƒ‰ăƒ¬ă‚¹" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "ăƒ¢ăƒ‡ăƒ«ă‚µăƒ¼ăƒă¸ă®æ¥ç¶ă‚’復旧ă—ă¾ă—ăŸă€‚" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "ăƒ¢ăƒ‡ăƒ«ă‚µăƒ¼ăƒăŒæ¶ˆæ»…ă—ă¾ă—ăŸă€‚" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "ă‚·ăƒ³ă‚°ăƒ«ăƒˆăƒ³ă‚’ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹åŒ–ă—ă‚ˆă†ă¨ă—ă¾ă—ăŸă€‚" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă¯å®Ÿè¡Œä¸­ă§ă™ă€‚" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă‚’çµ‚äº†ă—ăŸå¾Œă§ă™ă€‚" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "ă‚³ăƒăƒ³ăƒ‰: %(cmd)s\n" "çµ‚äº†ă‚³ăƒ¼ăƒ‰: %(exit_code)s\n" "標準出å›: %(stdout)r\n" "æ¨™æº–ă‚¨ăƒ©ăƒ¼å‡ºå›: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ăƒ‘ă‚¹ '%s' ă‚’åŸ‹ă‚è¾¼ă‚“ă§ă„ă¾ă™" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ăƒ•ă‚¡ă‚¤ăƒ« %(image_file)s ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %(err)s" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, fuzzy, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(inst_name)s: ă‚¤ăƒ¡ăƒ¼ă‚¸ %(img_id)s ă¸ă®ăƒ‡ăƒ¼ă‚¿åŸ‹ă‚è¾¼ă¿ă®ă‚¨ăƒ©ăƒ¼ă‚’無視ă—ă¦ă„ă¾ă™ (%(e)s)" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Release address: ă‚¢ăƒ‰ăƒ¬ă‚¹ %s ă‚’é–‹æ”¾ă—ă¾ă™ă€‚" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "空ăă® nbd ăƒ‡ăƒă‚¤ă‚¹ăŒă‚ă‚ă¾ă›ă‚“" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ă‚·ă‚¹ăƒ†ăƒ  %s ă®ăƒă‚¦ăƒ³ăƒˆă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/disk/api.py:451 #, fuzzy, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(inst_name)s: ă‚¤ăƒ¡ăƒ¼ă‚¸ %(img_id)s ă¸ă®ăƒ‡ăƒ¼ă‚¿åŸ‹ă‚è¾¼ă¿ă®ă‚¨ăƒ©ăƒ¼ă‚’無視ă—ă¦ă„ă¾ă™ (%(e)s)" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ă‚·ă‚¹ăƒ†ăƒ  %s ă®ăƒă‚¦ăƒ³ăƒˆă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ă‚’ăƒ«ăƒ¼ăƒ—ăƒăƒƒă‚¯ %s ă«ă‚¢ă‚¿ăƒƒăƒă§ăă¾ă›ă‚“。" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "空ăă® nbd ăƒ‡ăƒă‚¤ă‚¹ăŒă‚ă‚ă¾ă›ă‚“" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "ă‚¨ăƒ©ăƒ¼ %s ă‚’ă‚­ăƒ£ăƒƒăƒă—ă¾ă—ăŸă€‚" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "nbd ăƒ‡ăƒă‚¤ă‚¹ %s ăŒå‡ºç¾ă—ă¾ă›ă‚“" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ă‚·ă‚¹ăƒ†ăƒ  %s ă®ăƒă‚¦ăƒ³ăƒˆă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă®å­˜åœ¨ăŒç¢ºèªă§ăă¾ă›ă‚“。" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă®å­˜åœ¨ăŒç¢ºèªă§ăă¾ă›ă‚“。" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, fuzzy, python-format msgid "File path %s not valid" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ăƒ‘ă‚¹ '%s' ă‚’åŸ‹ă‚è¾¼ă‚“ă§ă„ă¾ă™" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ă‚·ă‚¹ăƒ†ăƒ  %s ă®ăƒă‚¦ăƒ³ăƒˆă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ă‚·ă‚¹ăƒ†ăƒ  %s ă®ăƒă‚¦ăƒ³ăƒˆă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ăƒ•ă‚¡ă‚¤ăƒ« %(image_file)s ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %(err)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Release address: ă‚¢ăƒ‰ăƒ¬ă‚¹ %s ă‚’é–‹æ”¾ă—ă¾ă™ă€‚" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "%s ă®èªè¨¼ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "getter %s ă‚’ă‚³ăƒ¼ăƒ«ă—ă¾ă™ă€‚" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "%s 用ă®VPNă‚’èµ·å‹•ă—ă¾ă™ă€‚" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Deleting user: ăƒ¦ăƒ¼ă‚¶ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "VM %s ă«å¯¾ă™ă‚‹ă‚¹ăƒăƒƒăƒ—ă‚·ăƒ§ăƒƒăƒˆă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "Get console output: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®ă‚³ăƒ³ă‚½ăƒ¼ăƒ«å‡ºå›ă‚’å–å¾—ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, fuzzy, python-format msgid "Creating config drive at %(path)s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ăƒ‘ă‚¹ '%s' ă‚’åŸ‹ă‚è¾¼ă‚“ă§ă„ă¾ă™" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ăƒ‘ă‚¹ '%s' ă‚’åŸ‹ă‚è¾¼ă‚“ă§ă„ă¾ă™" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "VBD %s ă®å‰é™¤ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Reboot instance: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %r ă‚’å†èµ·å‹•ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "%s 個ă®ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®èµ·å‹•ă‚’å§‹ă‚ă¾ă™â€¦" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "%s 個ă®ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®èµ·å‹•ă‚’å§‹ă‚ă¾ă™â€¦" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Deleting user: ăƒ¦ăƒ¼ă‚¶ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ åˆ‡æ–­: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă«ăƒœăƒªăƒ¥ăƒ¼ăƒ ă‚’æ¥ç¶(attach)ă§ăă¾ă›ă‚“。" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ åˆ‡æ–­: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "libvirt %s ă¸æ¥ç¶ă—ă¾ă™ă€‚" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "libvirtă¸ă®æ¥ç¶ăŒåˆ‡ă‚Œă¦ă„ă¾ă™ă€‚" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "libvirt %s ă¸æ¥ç¶ă—ă¾ă™ă€‚" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "%s ă‚’åœæ­¢ă—ă‚ˆă†ă¨ă—ă¦ă„ă¾ă™" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹%s: å†èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "ăƒ‡ăƒ¼ă‚¿: %(data)r, ăƒ•ă‚¡ă‚¤ăƒ«ăƒ‘ă‚¹: %(fpath)r" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, fuzzy, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(inst_name)s: ă‚¤ăƒ¡ăƒ¼ă‚¸ %(img_id)s ă¸ă®ăƒ‡ăƒ¼ă‚¿åŸ‹ă‚è¾¼ă¿ă®ă‚¨ăƒ©ăƒ¼ă‚’無視ă—ă¦ă„ă¾ă™ (%(e)s)" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "ip %s ă«å¯¾ă™ă‚‹ăƒ¡ă‚¿ăƒ‡ăƒ¼ă‚¿ă®å–å¾—ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "%s 用ă®ăƒ–ăƒªăƒƒă‚¸ă‚¤ăƒ³ă‚¿ăƒ•ă‚§ăƒ¼ă‚¹ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "ă‚¢ă‚¯ă‚·ăƒ§ăƒ³(action): %s" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "%s 個ă®ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®èµ·å‹•ă‚’å§‹ă‚ă¾ă™â€¦" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "xvp ă‚’å†èµ·å‹•ă—ă¦ă„ă¾ă™" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "ăƒă‚¹ăƒˆă—ăŸæˆ»ă‚値: %s" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "De-registering image: ă‚¤ăƒ¡ăƒ¼ă‚¸ %s ă‚’ç™»éŒ²è§£é™¤ă—ă¾ă™ă€‚" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "%s 個ă®ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ă®èµ·å‹•ă‚’å§‹ă‚ă¾ă™â€¦" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: èµ·å‹•ă—ă¾ă—ăŸă€‚" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Deleting user: ăƒ¦ăƒ¼ă‚¶ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s: rescued" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Deleting user: ăƒ¦ăƒ¼ă‚¶ %s ă‚’å‰é™¤ă—ă¾ă™ă€‚" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă®å­˜åœ¨ăŒç¢ºèªă§ăă¾ă›ă‚“。" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "SR %s ă‚’å†ă‚¹ă‚­ăƒ£ăƒ³ă—ă¾ă™ă€‚" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "SR %s ă‚’å†ă‚¹ă‚­ăƒ£ăƒ³ă—ă¾ă™ă€‚" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_name)s: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ăƒ•ă‚¡ă‚¤ăƒ«ç¾¤ %(target)s ă‚’å‰é™¤ă—ă¦ă„ă¾ă™" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_name)s: ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ăƒ•ă‚¡ă‚¤ăƒ«ç¾¤ %(target)s ă‚’å‰é™¤ă—ă¦ă„ă¾ă™" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_name)s ă«ăƒă‚¦ăƒ³ăƒˆăƒă‚¤ăƒ³ăƒˆ %(mountpoint)s ă‚’æ¥ç¶(attach)ă—ă¾ă—ăŸ" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă®å­˜åœ¨ăŒç¢ºèªă§ăă¾ă›ă‚“。" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ  %s ă‚’åˆ‡æ–­(detach)ă§ăă¾ă›ă‚“" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "ăƒœăƒªăƒ¥ăƒ¼ăƒ åˆ‡æ–­: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %(instance_name)s ă‹ă‚‰ăƒă‚¦ăƒ³ăƒˆăƒă‚¤ăƒ³ăƒˆ %(mountpoint)s ă‚’åˆ‡æ–­(detach)ă—ă¾ă—ăŸ" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "getter %s ă‚’ă‚³ăƒ¼ăƒ«ă—ă¾ă™ă€‚" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, fuzzy, python-format msgid "Injecting file path: %r" msgstr "ăƒ•ă‚¡ă‚¤ăƒ«ăƒ‘ă‚¹ '%s' ă‚’åŸ‹ă‚è¾¼ă‚“ă§ă„ă¾ă™" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "OpenSSL ă‚¨ăƒ©ăƒ¼: %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, fuzzy, python-format msgid "Could not determine key: %s" msgstr "ăƒ—ăƒ©ă‚¤ăƒ™ăƒ¼ăƒˆă‚­ăƒ¼ă®å¾©å·ă«å¤±æ•—ă—ă¾ă—ăŸ: %s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "NotImplemented ä¾‹å¤–ă‚’ç™ºç”Ÿă•ă›ă¾ă™ă€‚" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake ă«ă¯ %s ăŒå®Ÿè£…ă•ă‚Œă¦ă„ă¾ă›ă‚“。" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "getter %s ă‚’ă‚³ăƒ¼ăƒ«ă—ă¾ă™ă€‚" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "getter %s ă‚’ă‚³ăƒ¼ăƒ«ă—ă¾ă™ă€‚" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "xenapi.fake ă« %s ă«é–¢ă™ă‚‹å®Ÿè£…ăŒăªă„ă‹ă€å¼•æ•°ă®æ•°ăŒèª¤ă£ă¦ă„ă¾ă™ă€‚" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "ăƒ–ăƒªăƒƒă‚¸ %s ă«å¯¾ă—ă¦ăƒ–ăƒªăƒƒă‚¸ăŒè¤‡æ•°å­˜åœ¨ă—ă¾ă™ă€‚" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "ăƒ–ăƒªăƒƒă‚¸ %s ă«å¯¾ă™ă‚‹ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăŒå­˜åœ¨ă—ă¾ă›ă‚“。" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹ %s ă®VBDăŒè¦‹ă¤ă‹ă‚ă¾ă›ă‚“。" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "ă‚°ăƒ«ăƒ¼ăƒ— %s ă¯æ—¢ă«å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "VBD %s ă® unplug ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "VBD %s ă®å‰é™¤ă«å¤±æ•—ă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "VM %(vm_ref)s, VDI %(vdi_ref)s ç”¨ä»®æƒ³ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(VBD) %(vbd_ref)s ă‚’ä½œæˆă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "VM %(vm_ref)s, VDI %(vdi_ref)s ç”¨ä»®æƒ³ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(VBD) %(vbd_ref)s ă‚’ä½œæˆă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "%(sr_ref)s ä¸ă« VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, " "%(read_only)s) ă‚’ä½œæˆă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "VM %s ă«å¯¾ă™ă‚‹ă‚¹ăƒăƒƒăƒ—ă‚·ăƒ§ăƒƒăƒˆă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, fuzzy, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ %(image_location)s ăŒ ID %(image_id)s ă§ç™»éŒ²ă•ă‚Œă¾ă—ăŸ" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "ă‚¤ăƒ¡ăƒ¼ă‚¸ %(image)s ă®ă‚µă‚¤ă‚º:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "ăƒ‰ăƒ¡ă‚¤ăƒ³0 ä¸ă® /boot/guest ă« VDI %s ă‚’ă‚³ăƒ”ăƒ¼ä¸­" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "ă‚«ăƒ¼ăƒăƒ«/RAMăƒ‡ă‚£ă‚¹ă‚¯ VDI %s ăŒå‰é™¤ă•ă‚Œă¾ă—ăŸ" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s ă¯ä¾ç„¶ă¨ă—ă¦å­˜åœ¨ă—ă¦ă„ă¾ă™ă€‚" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s ă®è¦ªă¯ %(parent_ref)s ă§ă™" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "親 %(parent_uuid)s ăŒå…ƒă€…ă®è¦ª %(original_parent_uuid)s ă¨ä¸€è‡´ă—ă¾ă›ă‚“ă€‚ä½œæˆă‚’待機ă—ă¦ă„ă¾ă™â€¦" #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "VBD %s ă‚’æ¥ç¶ă—ă¦ă„ă¾ă™â€¦ " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "ä»®æƒ³ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(VBD) %s ă®æ¥ç¶ăŒå®Œäº†ă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "VDI %s 用ă®ä»®æƒ³ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(VBD)ă‚’å‰é™¤ă—ă¦ă„ă¾ă™â€¦ " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "VDI %s 用ă®ä»®æƒ³ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(VBD)ă®å‰é™¤ăŒå®Œäº†ă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "ăƒ‘ăƒ¼ăƒ†ă‚£ă‚·ăƒ§ăƒ³ăƒ†ăƒ¼ăƒ–ăƒ« %s ă®æ›¸ăè¾¼ă¿ăŒå®Œäº†ă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "%s 用ă®ăƒ–ăƒªăƒƒă‚¸ă‚¤ăƒ³ă‚¿ăƒ•ă‚§ăƒ¼ă‚¹ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "raw instanceă‚’ç”Ÿæˆă—ă¾ă™ă€‚" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "VM %s ă®ă‚¹ăƒăƒƒăƒ—ă‚·ăƒ§ăƒƒăƒˆă¨ă‚¢ăƒƒăƒ—ăƒ­ăƒ¼ăƒ‰ăŒå®Œäº†ă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "ă‚¤ăƒ³ă‚¹ă‚¿ăƒ³ă‚¹çµ‚äº†å‡¦ç†ă‚’é–‹å§‹ă—ă¾ă™ă€‚" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "xvp ă‚’å†èµ·å‹•ă—ă¦ă„ă¾ă™" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "ă‚«ăƒ¼ăƒăƒ«/RAMăƒ‡ă‚£ă‚¹ă‚¯ăƒ•ă‚¡ă‚¤ăƒ«ăŒå‰é™¤ă•ă‚Œă¾ă—ăŸ" #: nova/virt/xenapi/vmops.py:1329 #, fuzzy msgid "Destroying VM" msgstr "xvp ă‚’å†èµ·å‹•ă—ă¦ă„ă¾ă™" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "ăƒăƒƒăƒˆăƒ¯ăƒ¼ă‚¯ăƒ›ă‚¹ăƒˆă®è¨­å®ă‚’ă—ă¾ă™ă€‚" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "VM %(vm_ref)s, network %(network_ref)s ç”¨ä»®æƒ³ă‚¤ăƒ³ă‚¿ăƒ¼ăƒ•ă‚§ăƒ¼ă‚¹(VIF)ă‚’ä½œæˆă—ă¦ă„ă¾ă™ă€‚" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "%s 用ă®VPNă‚’èµ·å‹•ă—ă¾ă™ă€‚" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "VBD %s ă‹ă‚‰ SRă‚’å–å¾—ă§ăă¾ă›ă‚“。" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "%(sr_ref)s 用ă®ç‰©ç†ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(PBD)å–得時ă«ä¾‹å¤– %(exc)s ă‚’ç„¡è¦–ă—ă¦ă„ă¾ă™" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "物ç†ăƒ–ăƒ­ăƒƒă‚¯ăƒ‡ăƒă‚¤ă‚¹(PBD) %(pbd)s ă®å–ă‚å¤–ă—æ™‚ă«ä¾‹å¤– %(exc)s ă‚’ç„¡è¦–ă—ă¦ă„ă¾ă™" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "SR %s ă®VDIă®introduceăŒă§ăă¾ă›ă‚“。" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "VDI %s ă®ăƒ¬ă‚³ăƒ¼ăƒ‰ă‚’å–å¾—ă§ăă¾ă›ă‚“。" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "SR %s ă®VDIă‚’introduceă§ăă¾ă›ă‚“。" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "ăƒă‚¦ăƒ³ăƒˆăƒă‚¤ăƒ³ăƒˆă‚’変æ›ă§ăă¾ă›ă‚“。 %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "例外 %s ăŒç™ºç”Ÿă—ă¾ă—ăŸă€‚" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/tl_PH/0000775000175400017540000000000012323722546017120 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tl_PH/LC_MESSAGES/0000775000175400017540000000000012323722546020705 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tl_PH/LC_MESSAGES/nova.po0000664000175400017540000116546512323721510022220 0ustar jenkinsjenkins00000000000000# Filipino (Philippines) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-09-26 22:10+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Tagalog (Philippines) " "(http://www.transifex.com/projects/p/openstack/language/tl_PH/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/sr/0000775000175400017540000000000012323722546016536 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sr/LC_MESSAGES/0000775000175400017540000000000012323722546020323 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sr/LC_MESSAGES/nova.po0000664000175400017540000116560212323721510021627 0ustar jenkinsjenkins00000000000000# Serbian translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-03-14 00:21+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Serbian " "(http://www.transifex.com/projects/p/openstack/language/sr/)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "syslog okruženje mora biti jedno od: %s" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/hr/0000775000175400017540000000000012323722545016522 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/hr/LC_MESSAGES/0000775000175400017540000000000012323722546020310 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/hr/LC_MESSAGES/nova.po0000664000175400017540000116555412323721510021622 0ustar jenkinsjenkins00000000000000# Croatian translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Croatian " "(http://www.transifex.com/projects/p/openstack/language/hr/)\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ko/0000775000175400017540000000000012323722545016522 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ko/LC_MESSAGES/0000775000175400017540000000000012323722546020310 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ko/LC_MESSAGES/nova.po0000664000175400017540000117565312323721510021623 0ustar jenkinsjenkins00000000000000# Korean translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-12-16 04:42+0000\n" "Last-Translator: Zhongyue Luo \n" "Language-Team: Korean \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "CA 루í¸́˜ 파́¼́´ë¦„" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "비밀키́˜ 파́¼ëª…" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "키를 ́ €́¥í•˜ë” 경로" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "CA 루í¸ë¥¼ ́ €́¥í•˜ë” 경로" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "ê° í”„ë¡œ́ í¸ë§ˆë‹¤ CA를 ́‚¬́©í•˜́‹œê² ́µë‹ˆê¹Œ?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "플ë˜ê·¸ 경로: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "%(instance_name)s ́¸́¤í„´́¤́— %(mountpoint)s 마́´í¸́§€́ ́´ ́¥́°©ë˜́—ˆ́µë‹ˆë‹¤" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "%s 볼륨 탈́°©́— ́‹¤íŒ¨í–ˆ́µë‹ˆë‹¤" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "%(instance_name)s ́¸́¤í„´́¤́— %(mountpoint)s 마́´í¸́§€́ ́´ ́¥́°©ë˜́—ˆ́µë‹ˆë‹¤" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "%(instance_name)s ́¸́¤í„´́¤́— %(mountpoint)s 마́´í¸́§€́ ́´ ́¥́°©ë˜́—ˆ́µë‹ˆë‹¤" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "%s 볼륨 탈́°©́— ́‹¤íŒ¨í–ˆ́µë‹ˆë‹¤" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "볼륨 탈́°©: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "%(instance_name)s ́¸́¤í„´́¤́— %(mountpoint)s 마́´í¸́§€́ ́´ ́¥́°©ë˜́—ˆ́µë‹ˆë‹¤" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "%s 볼륨 탈́°©́— ́‹¤íŒ¨í–ˆ́µë‹ˆë‹¤" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "볼륨 탈́°©: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "볼륨 탈́°©: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "%s ́¸́¤í„´́¤́— 볼륨́¥́°© í•  ́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "%s 볼륨 탈́°©́— ́‹¤íŒ¨í–ˆ́µë‹ˆë‹¤" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "́¸́¤í„´́¤ %s: ́¤ëƒ…́ƒ· ́ €́¥́¤‘" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "%(instance_name)s ́¸́¤í„´́¤́— %(mountpoint)s 마́´í¸́§€́ ́´ ́¥́°©ë˜́—ˆ́µë‹ˆë‹¤" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "%s 볼륨́„ ́°¾́„́ˆ˜ ́—†́µë‹ˆë‹¤" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "%s 볼륨 탈́°©́— ́‹¤íŒ¨í–ˆ́µë‹ˆë‹¤" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "볼륨 탈́°©: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "%(instance_name)s ́¸́¤í„´́¤́— %(mountpoint)s 마́´í¸́§€́ ́´ 탈́°©ë˜́—ˆ́µë‹ˆë‹¤" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "́¸́¤í„´́¤ %s를 ́¬ë¶€íŒ…합니다" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/sq/0000775000175400017540000000000012323722546016535 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sq/LC_MESSAGES/0000775000175400017540000000000012323722546020322 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sq/LC_MESSAGES/nova.po0000664000175400017540000116541712323721510021632 0ustar jenkinsjenkins00000000000000# Albanian translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-03-25 00:30+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Albanian " "(http://www.transifex.com/projects/p/openstack/language/sq/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/it/0000775000175400017540000000000012323722545016525 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/it/LC_MESSAGES/0000775000175400017540000000000012323722546020313 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/it/LC_MESSAGES/nova.po0000664000175400017540000120266012323721510021613 0ustar jenkinsjenkins00000000000000# Italian translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-04-01 18:59+0000\n" "Last-Translator: simone.sandri \n" "Language-Team: Italian \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Filename di root CA" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Nome file della chiave privata" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Dove si conservano le chiavi" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Dove si conserva root CA" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Si dovrebbe usare un CA per ogni progetto?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "Soggetto per il certificato degli utenti, %s per progetto, utente, orario" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Soggetto per il certificato dei progetti, %s per progetto, orario" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Impossibile riavviare l'istanza" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Percorso dei flags: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "E' stato riscontrato un errore sconosciuto" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "L'utente non ha i privilegi dell'amministratore" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "istanza %s: creazione snapshot in corso" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "nessun metodo per il messaggio: %s" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "Parametri inaccettabili." #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "La richiesta non è valida." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "istanza %s: creazione snapshot in corso" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "istanza %s: creazione snapshot in corso" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "E' stato ricevuto un input non valido" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "istanza %s: ripristino" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Mountpoint %(mountpoint)s montato all'istanza %(instance_name)s" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "istanza %s: creazione snapshot in corso" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "nessun metodo per il messaggio: %s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "nessun metodo per il messaggio: %s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "istanza %s: creazione snapshot in corso" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "istanza %s: creazione snapshot in corso" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Impossibile riavviare l'istanza" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Servizio terminato che non ha entry nel database" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Impossibile localizzare il volume %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Impossibile localizzare il volume %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Impossibile localizzare il volume %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "istanza %s: ripristino" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "La richiesta non è valida." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Impossibile sospendere l'istanza" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "istanza %s: creazione snapshot in corso" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "Volume non valido" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Impossibile riavviare l'istanza" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Impossibile sospendere l'istanza" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Impossibile sospendere l'istanza" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Avviando l'interfaccia VLAN %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "istanza %s: sospensione in corso" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "E' stato riscontrato un errore sconosciuto" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "Impossibile smontare il volume %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "istanza %s: ripristino" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "istanza %s: sospensione in corso" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "istanza %s: sospensione in corso" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Dichiarando la coda %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Dichiarando la coda %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Impossibile riavviare l'istanza" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Impossibile sospendere l'istanza" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "istanza %s: creazione snapshot in corso" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "nessun metodo per il messaggio: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "nessun metodo per il messaggio: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Mountpoint %(mountpoint)s montato all'istanza %(instance_name)s" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Mountpoint %(mountpoint)s montato all'istanza %(instance_name)s" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "Sollevando eccezione %s al chiamante" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Impossibile localizzare il volume %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "ricevuto %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "istanza %s: ripristino rete" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Impossibile sospendere l'istanza" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Impossibile montare il volume all'istanza %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Impossibile riavviare l'istanza" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "Impossibile riavviare l'istanza" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "Impossibile riavviare l'istanza" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Impossibile riavviare l'istanza" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Impossibile localizzare il volume %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Impossibile localizzare il volume %s" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Impossibile riavviare l'istanza" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Impossibile sospendere l'istanza" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Impossibile riavviare l'istanza" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Riavviando l'istanza %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Impossibile riavviare l'istanza" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Impossibile smontare il volume %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "Riavviando l'istanza %s" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "istanza %s: creazione snapshot in corso" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Impossibile sospendere l'istanza" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "istanza %s: creazione snapshot in corso" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "istanza %s: ricezione diagnostiche" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "istanza %s: ripristino rete" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "Impossibile montare il volume all'istanza %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "istanza %s: creazione snapshot in corso" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Volume non valido" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "Impossibile ripristinare il server" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Impossibile riavviare l'istanza" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Impossibile riavviare l'istanza" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Impossibile riavviare l'istanza" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Avviando l'interfaccia VLAN %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Avviando l'interfaccia Bridge per %s" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "Impossibile sospendere l'istanza" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "Avviando l'interfaccia Bridge per %s" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Volume non valido" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "ricevuto %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "ricevuto %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Esecuzione del comando (sottoprocesso): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Il risultato é %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Eseguendo cmd (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Insieme di FLAGS:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Mountpoint %(mountpoint)s montato all'istanza %(instance_name)s" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Connessione al model server ripristinata!" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "model server é scomparso" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "Impossibile riavviare l'istanza" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "Impossibile riavviare l'istanza" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Comando: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Impossibile riavviare l'istanza" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "istanza %s: sospensione in corso" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "Impossibile sospendere l'istanza" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Riavviando l'istanza %s" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Impossibile localizzare il volume %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Impossibile localizzare il volume %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Impossibile localizzare il volume %s" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Impossibile localizzare il volume %s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Avviando l'interfaccia Bridge per %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "Avviando l'interfaccia Bridge per %s" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "Impossibile riavviare l'istanza" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Riavviando l'istanza %s" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Impossibile smontare il volume %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Impossibile sospendere l'istanza" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Impossibile sospendere l'istanza" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Impossibile sospendere l'istanza" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Impossibile sospendere l'istanza" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "Impossibile sospendere l'istanza" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "Riavviando l'istanza %s" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Avviando l'interfaccia Bridge per %s" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Impossibile montare il volume all'istanza %s" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Impossibile riavviare l'istanza" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "volume %s: creato con successo" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "L'utente non ha i privilegi dell'amministratore" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Impossibile smontare il volume %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Avviando l'interfaccia Bridge per %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "istanza %s: creazione snapshot in corso" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "istanza %s: ripristino" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Impossibile localizzare il volume %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s montato all'istanza %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Impossibile localizzare il volume %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Impossibile smontare il volume %s" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s smontato dall'istanza %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Sollevando NotImplemented" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Dichiarando la coda %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Impossibile riavviare l'istanza" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "nessun metodo per il messaggio: %s" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk VDI %s distrutti" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "Impossibile riavviare l'istanza" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Avviando l'interfaccia Bridge per %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "Riavviando l'istanza %s" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "Impossibile sospendere l'istanza" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Impossibile riavviare l'istanza" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "volume %s: creazione in corso per l'esportazione" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/gl/0000775000175400017540000000000012323722545016513 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/gl/LC_MESSAGES/0000775000175400017540000000000012323722546020301 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/gl/LC_MESSAGES/nova.po0000664000175400017540000116540612323721510021607 0ustar jenkinsjenkins00000000000000# Galician translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-10-28 23:23+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Galician " "(http://www.transifex.com/projects/p/openstack/language/gl/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/kn/0000775000175400017540000000000012323722545016521 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/kn/LC_MESSAGES/0000775000175400017540000000000012323722546020307 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/kn/LC_MESSAGES/nova.po0000664000175400017540000116541712323721510021617 0ustar jenkinsjenkins00000000000000# Kannada translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-09-17 14:44+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Kannada " "(http://www.transifex.com/projects/p/openstack/language/kn/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ca/0000775000175400017540000000000012323722545016474 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ca/LC_MESSAGES/0000775000175400017540000000000012323722546020262 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ca/LC_MESSAGES/nova.po0000664000175400017540000116543712323721510021574 0ustar jenkinsjenkins00000000000000# Catalan translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Catalan " "(http://www.transifex.com/projects/p/openstack/language/ca/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/fil/0000775000175400017540000000000012323722545016663 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fil/LC_MESSAGES/0000775000175400017540000000000012323722546020451 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fil/LC_MESSAGES/nova.po0000664000175400017540000116543012323721510021754 0ustar jenkinsjenkins00000000000000# Filipino translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-09-26 22:10+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Filipino " "(http://www.transifex.com/projects/p/openstack/language/fil/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/zh_TW/0000775000175400017540000000000012323722546017145 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/zh_TW/LC_MESSAGES/0000775000175400017540000000000012323722546020732 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/zh_TW/LC_MESSAGES/nova.po0000664000175400017540000117303512323721510022235 0ustar jenkinsjenkins00000000000000# Chinese (Traditional) translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-03-07 02:00+0000\n" "Last-Translator: Charles Hsu \n" "Language-Team: Chinese (Traditional) \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Private key ç§é‘°æª”案å稱" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "我們ç„keys留存於何處" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "æˆ‘å€‘ç„æ ¹æ†‘證留存於何處" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "是å¦éœ€è¦ä¸€å€‹project 使用一個CA" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "發生一個未知例外" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "內文解碼失敗" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "內文解碼失敗" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "建立虛擬介é¢å¤±æ•—" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "æœªè¢«æˆæ¬" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "使用者並沒有管ç†è€…æ¬å›" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "ä¸å¯æ¥å—ç„åƒæ•¸å€¼" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "找ä¸åˆ°Volume %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "找ä¸åˆ°Volume %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "找ä¸åˆ°Volume %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "無效ç„Keypair" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "無效ç„å¿«ç…§(snapshot)" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::æ«åœ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::繼續 %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::繼續 %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "發生一個未知例外" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "無法å¸è¼‰ Volume %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "找ä¸åˆ°Volume %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "建立虛擬介é¢å¤±æ•—" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "找ä¸åˆ°Volume %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "找ä¸åˆ°Volume %s" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "無法å¸è¼‰ Volume %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "無效ç„å¿«ç…§(snapshot)" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "無效ç„Keypair" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "命令: %(cmd)s\n" "退出代碼: %(exit_code)s\n" "標準輸出: %(stdout)r\n" "標準錯誤輸出: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "建立虛擬介é¢å¤±æ•—" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "找ä¸åˆ°Volume %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "找ä¸åˆ°Volume %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "找ä¸åˆ°Volume %s" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "找ä¸åˆ°Volume %s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "建立虛擬介é¢å¤±æ•—" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "無法å¸è¼‰ Volume %s" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "連æ¥åˆ°glance失敗" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "使用者並沒有管ç†è€…æ¬å›" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "無法å¸è¼‰ Volume %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "找ä¸åˆ°Volume %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "æ›è¼‰é» %(mountpoint)s æ›è¼‰åˆ°è™›æ“¬æ©Ÿå™¨ %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "找ä¸åˆ°Volume %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "無法å¸è¼‰ Volume %s" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "æ›è¼‰é» %(mountpoint)s å¾è™›æ“¬æ©Ÿå™¨ %(instance_name)s å¸è¼‰" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "無法æ›è¼‰Volume 到虛擬機器 %s" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/bn_IN/0000775000175400017540000000000012323722545017076 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/bn_IN/LC_MESSAGES/0000775000175400017540000000000012323722546020664 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/bn_IN/LC_MESSAGES/nova.po0000664000175400017540000116544012323721510022170 0ustar jenkinsjenkins00000000000000# Bengali (India) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-10-28 18:12+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Bengali (India) " "(http://www.transifex.com/projects/p/openstack/language/bn_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/tr/0000775000175400017540000000000012323722546016537 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tr/LC_MESSAGES/0000775000175400017540000000000012323722546020324 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/tr/LC_MESSAGES/nova.po0000664000175400017540000116540312323721510021627 0ustar jenkinsjenkins00000000000000# Turkish translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-12-14 18:10+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Turkish \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/el/0000775000175400017540000000000012323722545016511 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/el/LC_MESSAGES/0000775000175400017540000000000012323722546020277 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/el/LC_MESSAGES/nova.po0000664000175400017540000116555712323721510021614 0ustar jenkinsjenkins00000000000000# Greek translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: # Efstathios Iosifidis , 2014 msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-03-14 00:21+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Greek " "(http://www.transifex.com/projects/p/openstack/language/el/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "Μη έγκυÏα μεταδεδομένα" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ro/0000775000175400017540000000000012323722545016531 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ro/LC_MESSAGES/0000775000175400017540000000000012323722546020317 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ro/LC_MESSAGES/nova.po0000664000175400017540000116551512323721510021626 0ustar jenkinsjenkins00000000000000# Romanian translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-06-10 18:32+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Romanian " "(http://www.transifex.com/projects/p/openstack/language/ro/)\n" "Plural-Forms: nplurals=3; " "plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/is_IS/0000775000175400017540000000000012323722545017117 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/is_IS/LC_MESSAGES/0000775000175400017540000000000012323722546020705 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/is_IS/LC_MESSAGES/nova.po0000664000175400017540000116545012323721510022212 0ustar jenkinsjenkins00000000000000# Icelandic (Iceland) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-12-21 03:12+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Icelandic (Iceland) " "(http://www.transifex.com/projects/p/openstack/language/is_IS/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/hi/0000775000175400017540000000000012323722545016511 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/hi/LC_MESSAGES/0000775000175400017540000000000012323722546020277 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/hi/LC_MESSAGES/nova.po0000664000175400017540000116542612323721510021607 0ustar jenkinsjenkins00000000000000# Hindi translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-08-27 04:58+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Hindi " "(http://www.transifex.com/projects/p/openstack/language/hi/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/te_IN/0000775000175400017540000000000012323722546017110 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/te_IN/LC_MESSAGES/0000775000175400017540000000000012323722546020675 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/te_IN/LC_MESSAGES/nova.po0000664000175400017540000116543612323721510022206 0ustar jenkinsjenkins00000000000000# Telugu (India) translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-03-25 00:30+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Telugu (India) " "(http://www.transifex.com/projects/p/openstack/language/te_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ru_RU/0000775000175400017540000000000012323722545017145 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ru_RU/LC_MESSAGES/0000775000175400017540000000000012323722546020733 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ru_RU/LC_MESSAGES/nova.po0000664000175400017540000116560112323721510022236 0ustar jenkinsjenkins00000000000000# Russian (Russia) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Russian (Russia) " "(http://www.transifex.com/projects/p/openstack/language/ru_RU/)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/en_AU/0000775000175400017540000000000012323722545017100 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/en_AU/LC_MESSAGES/0000775000175400017540000000000012323722546020666 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/en_AU/LC_MESSAGES/nova.po0000664000175400017540000122051512323721510022165 0ustar jenkinsjenkins00000000000000# English (Australia) translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-10-21 11:27+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: English (Australia) \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Filename of root CA" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Filename of private key" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Where we keep our keys" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Where we keep our root CA" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Should we use a CA for each project?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "Subject for certificate for users, %s for project, user, timestamp" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Subject for certificate for projects, %s for project, timestamp" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Going to start terminating instances" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Flags path: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Failed to get metadata for ip: %s" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Failed to decrypt private key: %s" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "instance %s: booted" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "no method for message: %s" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "instance %s: booted" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "instance %s: booted" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "instance %s: rescued" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "setting network host" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "instance %(instance_name)s: deleting instance files %(target)s" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, fuzzy, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "group %s already exists" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "setting network host" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "volume group %s doesn't exist" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Going to start terminating instances" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "group %s already exists" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "instance %s: booted" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "Could not attach image to loopback: %s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "Could not attach image to loopback: %s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Going to try to terminate %s" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "Going to try to terminate %s" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "instance %s: booted" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "instance %s: booted" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "group %s already exists" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Failed to get metadata for ip: %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "Starting %(topic)s node (version %(vcs_string)s)" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Service killed that has no database entry" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "Link Local address is not found.:%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "Couldn't get Link Local IP of %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "Invalid backend: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Unable to find SR from VBD %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Unable to find SR from VBD %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Unable to find SR from VBD %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "You must implement __call__" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Too many failed authentications." #: nova/api/ec2/__init__.py:167 #, 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 "" "Access key %(access_key)s has had %(failures)d failed authentications and" " will be locked out for %(lock_mins)d minutes." #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "Authentication Failure: %s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Too many failed authentications." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "action: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "arg: %(key)s\t\tval: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "Unauthorised request for controller=%(controller)s and action=%(action)s" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "Unsupported API request: controller = %(controller)s, action = %(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, fuzzy, python-format msgid "Could not find key pair(s): %s" msgstr "Failed to decrypt private key: %s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Create key pair %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Delete key pair %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "No rule for the specified parameters." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "Get console output for instance %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Create volume of %s GB" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Detach volume %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Allocate address" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Release address %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "Disassociate address %s" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Disassociate address %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "Going to start terminating instances" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Reboot instance %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "De-registering image %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "Registered image %(image_location)s with id %(image_id)s" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "user or group not specified" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "only group \"all\" is supported" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_type must be add or remove" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "Updating image %s publicity" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "instance %s: rescued" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Failed to get metadata for ip: %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "An unknown error has occurred. Please try your request again." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Failed to get metadata for ip: %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Caught error: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "Got exception: %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "Invalid signature for user %s" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "Invalid signature for user %s" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "Going to try to terminate %s" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "Mountpoint cannot be translated: %s" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "Mountpoint cannot be translated: %s" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "instance %s: booted" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "instance %s: rescued" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Going to start terminating instances" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Failed to decrypt private key: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Failed to decrypt private key: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "attribute not supported: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Starting VLAN interface %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "instance %s: booted" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "action: %s" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "Unable to detach volume %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "instance %s: rescued" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "setting network host" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "instance %s: booted" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "setting network host" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "group %s already exists" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "setting network host" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "setting network host" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "Invalid backend: %s" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Calling getter %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Calling getter %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "Invalid signature for user %s" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "setting network host" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "setting network host" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "setting network host" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "setting network host" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "Not enough parameters to build a valid rule." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "This rule already exists in group %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Reboot instance %r" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Reboot instance %r" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "instance %s: booted" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "Got exception: %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "no method for message: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "no method for message: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Going to start terminating instances" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Going to start terminating instances" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "Returning exception %s to caller" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "Network to push into openvpn config" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "Netmask to push into openvpn config" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "Launching VPN for %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Unable to locate volume %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "received %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "Caught error: %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "setting network host" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "start address" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "group %s already exists" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "start address" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "setting network host" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Reboot instance %r" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "Unexpected error raised: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "Caught error: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "Caught error: %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "Instance quota exceeded. You can only run %s more instances of this type." #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "Instance quota exceeded. You can only run %s more instances of this type." #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Unable to attach volume to instance %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "Going to run %s instances..." #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Going to start terminating instances" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Going to start terminating instances" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "Going to try to terminate %s" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "Going to try to terminate %s" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "Going to try to terminate %s" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "Going to try to terminate %s" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "Starting snapshot for VM %s" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Going to try to terminate %s" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "Create Security Group %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Unable to destroy VBD %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Unable to destroy VBD %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "Revoke security group ingress %s" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Delete security group %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Authorise security group ingress %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "Revoke security group ingress %s" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Going to start terminating instances" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Going to start terminating instances" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "Unexpected error raised: %s" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "Going to try to terminate %s" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "Caught error: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "setting network host" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Going to try to terminate %s" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Rebooting instance %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Failed to get metadata for ip: %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Detach volume %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "Rebooting instance %s" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "instance %s: rebooted" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "instance %s: snapshotting" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Going to start terminating instances" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "Caught error: %s" #: nova/compute/manager.py:2989 #, fuzzy msgid "Unrescuing" msgstr "instance %s: unrescuing" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "instance %s: snapshotting" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "instance %s: retrieving diagnostics" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "setting network host" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "setting network host" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "Get console output for instance %s" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "Adding console" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "Adding console" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "Detaching volume from unknown instance %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Deleting user %s" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "instance %s: booted" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Deleting user %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "Create key pair %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "Adding console" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Invalid backend: %s" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "Rebuilding xvp conf" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "Re-wrote %s" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "Stopping xvp" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "Starting xvp" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "Error starting xvp: %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "Restarting xvp" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvp not running..." #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "instance %s: rescued" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "Failed to decrypt private key: %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "Failed to decrypt initialisation vector: %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "Failed to decrypt image file %(image_file)s: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Going to start terminating instances" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "Associate address %(public_ip)s to instance %(instance_id)s" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d is stale, relaunching dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "Hupping dnsmasq threw %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d is stale, relaunching dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "killing radvd threw %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d is stale, relaunching radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "Invalid backend: %s" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Starting VLAN interface %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Starting Bridge interface for %s" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "Failed to decrypt private key: %s" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "Starting Bridge interface for %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "Error starting xvp: %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "setting network host" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "IP %s released that was not leased" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Invalid backend: %s" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "received %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "Get console output for instance %s" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "setting network host" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Revoke security group ingress %s" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "This rule already exists in group %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "Error starting xvp: %s" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "received %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Result was %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Running cmd (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "start address" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Going to start terminating instances" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Recovered model server connection!" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "model server went away" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "Attempted to instantiate singleton" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "Running instances: %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "After terminating instances: %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "setting network host" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "Going to start terminating instances" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "Going to start terminating instances" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Injecting file path: '%s'" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "Failed to decrypt image file %(image_file)s: %(err)s" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "instance %s: booted" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, fuzzy, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" "instance %(inst_name)s: ignoring error injecting data into image " "%(img_id)s (%(e)s)" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Release address %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "No free nbd devices" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/api.py:451 #, fuzzy, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" "instance %(inst_name)s: ignoring error injecting data into image " "%(img_id)s (%(e)s)" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "Could not attach image to loopback: %s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "Caught error: %s" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "No free nbd devices" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "Caught error: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "nbd device %s did not show up" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "setting network host" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Creating a raw instance" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Unable to locate volume %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Unable to locate volume %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, fuzzy, python-format msgid "File path %s not valid" msgstr "Injecting file path: '%s'" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Failed to mount filesystem: %s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Failed to decrypt image file %(image_file)s: %(err)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "Get console output for instance %s" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Release address %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "Going to start terminating instances" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Authentication Failure: %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "Going to start terminating instances" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Calling getter %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Launching VPN for %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Deleting user %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Creating a raw instance" #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "setting network host" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "Starting snapshot for VM %s" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Creating a raw instance" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "Get console output for instance %s" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Creating a raw instance" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, fuzzy, python-format msgid "Creating config drive at %(path)s" msgstr "Injecting file path: '%s'" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "Injecting file path: '%s'" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Unable to destroy VBD %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Reboot instance %r" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Reboot instance %r" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Reboot instance %r" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Reboot instance %r" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "Going to run %s instances..." #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "Going to run %s instances..." #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Failed to get metadata for ip: %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Deleting user %s" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "setting network host" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Unable to attach volume to instance %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Creating a raw instance" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "Connecting to libvirt: %s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "Connection to libvirt broke" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "Connecting to libvirt: %s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Going to try to terminate %s" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "instance %s: rebooted" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "data: %(data)r, fpath: %(fpath)r" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, fuzzy, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" "instance %(inst_name)s: ignoring error injecting data into image " "%(img_id)s (%(e)s)" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Failed to get metadata for ip: %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Starting Bridge interface for %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "group %s already exists" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "action: %s" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "Going to run %s instances..." #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "Creating a raw instance" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "Restarting xvp" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "Nested return %s" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "De-registering image %s" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "Going to run %s instances..." #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "instance %s: booted" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Deleting user %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "instance %s: rescued" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Deleting user %s" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Unable to locate volume %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Re-scanning SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Re-scanning SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: deleting instance files %(target)s" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: deleting instance files %(target)s" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Unable to locate volume %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Unable to detach volume %s" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "Calling getter %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, fuzzy, python-format msgid "Injecting file path: %r" msgstr "Injecting file path: '%s'" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "OpenSSL error: %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, fuzzy, python-format msgid "Could not determine key: %s" msgstr "Failed to decrypt private key: %s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Raising NotImplemented" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake does not have an implementation for %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Calling getter %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Calling getter %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Going to start terminating instances" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "Found non-unique network for bridge %s" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "Found no network for bridge %s" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD not found in instance %s" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "group %s already exists" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "Unable to unplug VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "Unable to destroy VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "Starting snapshot for VM %s" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, fuzzy, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "Registered image %(image_location)s with id %(image_id)s" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Size for image %(image)s:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "Copying VDI %s to /boot/guest on dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk VDI %s destroyed" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s is still available" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s has parent %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "Plugging VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "Plugging VBD %s done." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "Destroying VBD for VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "Destroying VBD for VDI %s done." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "Writing partition table %s done." #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Starting Bridge interface for %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "Creating a raw instance" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "Finished snapshot and upload for VM %s" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Going to start terminating instances" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "Restarting xvp" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "kernel/ramdisk files removed" #: nova/virt/xenapi/vmops.py:1329 #, fuzzy msgid "Destroying VM" msgstr "Restarting xvp" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "setting network host" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "Creating VIF for VM %(vm_ref)s, network %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Launching VPN for %s" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "Unable to find SR from VBD %s" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "Unable to introduce VDI on SR %s" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "Unable to get record of VDI %s on" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "Unable to introduce VDI for SR %s" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Mountpoint cannot be translated: %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "Got exception: %s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/mr_IN/0000775000175400017540000000000012323722545017115 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/mr_IN/LC_MESSAGES/0000775000175400017540000000000012323722546020703 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/mr_IN/LC_MESSAGES/nova.po0000664000175400017540000116544012323721510022207 0ustar jenkinsjenkins00000000000000# Marathi (India) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-10-28 18:12+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Marathi (India) " "(http://www.transifex.com/projects/p/openstack/language/mr_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/fr/0000775000175400017540000000000012323722545016520 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fr/LC_MESSAGES/0000775000175400017540000000000012323722546020306 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fr/LC_MESSAGES/nova.po0000664000175400017540000124736712323721510021623 0ustar jenkinsjenkins00000000000000# French translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-05-14 08:35+0000\n" "Last-Translator: Erwan Gallen \n" "Language-Team: French \n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Nom du fichier contenant la racine de l'autoritĂ© de certification" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Nom de fichier de la clĂ© privĂ©e" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Nom du fichier de la liste de rĂ©vocation du Certificat Racine" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Emplacement de sauvegarde des clefs" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Emplacement de sauvegarde des racines d'autoritĂ© de certification" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Doit-on utiliser une autoritĂ© de certification pour chaque projet ?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" "Sujet pour les certificats utilisateurs, %s pour le projet, utilisateur, " "timestamp" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Sujet de certificat pour projets, %s pour le projet, timestamp" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Échec du redĂ©marrage de l'instance" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Chemin des propriĂ©tĂ©s: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "Une exception inconnue s'est produite." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Échec du dĂ©cryptage du text" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Échec du dĂ©cryptage du text" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "La crĂ©ation de l'Interface Virtuelle a Ă©chouĂ©" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "Non autorisĂ©." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "L’utilisateur n'a pas les privilèges administrateur" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Le rĂ©glage des droits n'autorise pas %(action)s Ă  Ăªtre effectuĂ©(e)(s)" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "L'image %(image_id)s n'a pas Ă©tĂ© trouvĂ©e." #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Aucun noyau trouvĂ© pour l'image %(image_id)s." #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "Paramètres inacceptables." #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "Le volume %(volume_id)s n'est liĂ© Ă  rien" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "La requĂªte est invalide." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "La plage de port %(from_port)s:%(to_port)s. %(msg)s est invalide" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Le protocole IP %(protocol)s est invalide" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Le type de contenu %(content_type)s est invalide" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "Le cidr %(cidr)s est invalide" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" "Impossible d'effectuer l'action '%(action)s' sur l'ensemble " "%(aggregate_id)s. Raison: %(reason)s." #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" "L'instance %(instance_uuid)s dans %(attr)s %(state)s. Impossible de " "%(method)s pendant que l'instance est dans cet Ă©tat." #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "L'instance %(instance_id)s ne fonctionne pas." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "L'instance %(instance_id)s n'est pas en mode secours" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "L'instance %(instance_id)s n'est pas en mode secours" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "L'instance %(instance_id)s n'est pas suspendue" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "Le service est indisponible actuellement." #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "Le service de calcul est indisponible actuellement." #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" "Impossible de migrer l'instance (%(instance_id)s) vers l'hĂ´te actuel " "(%(host)s)." #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "Le type de l'hyperviseur fourni n'est pas valide." #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" "L'instance nĂ©cessite une version plus rĂ©cente de l'hyperviseur que celle " "fournie." #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" "Le chemin d'accès du disque (%(path)s) existe dĂ©jĂ , il n'Ă©tait pas prĂ©vu" " d'exister." #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "Le chemin de pĂ©riphĂ©rique (%(path)s) est invalide." #: nova/exception.py:433 #, fuzzy, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "Le chemin de pĂ©riphĂ©rique (%(path)s) est invalide." #: nova/exception.py:438 #, fuzzy, python-format msgid "The supplied device (%(device)s) is busy." msgstr "Le chemin de pĂ©riphĂ©rique (%(path)s) est invalide." #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s n'est pas une adresse IP v4/6 valide" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" "Le tag VLAN n'est pas appropriĂ© pour le groupe de port %(bridge)s. Le tag" " VLAN prĂ©vu est %(tag)s, mais celui qui est associĂ© avec le groupe de " "port est %(pgroup)s." #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" "vSwitch qui contient le groupe de port %(bridge)s n'est pas associĂ© Ă  " "l'adaptateur physique souhaitĂ©. VSwitch est %(expected)s, mais la " "principale association est %(actual)s." #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "Le format de disque %(disk_format)s n'est pas acceptable" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "L'image %(image_id)s est inacceptable: %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "L'instance %(instance_id)s est inacceptable: %(reason)s" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "Ec2 id %(ec2_id)s est inaccepatble." #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "Le cidr %(cidr)s est invalide" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "La ressource n'a pas pu Ăªtre trouvĂ©e." #: nova/exception.py:497 #, fuzzy, python-format msgid "No agent-build associated with id %(id)s." msgstr "Pas d'adresse IP fixe associĂ©e avec l'id %(id)s." #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Le volume %(volume_id)s n'a pas pu Ăªtre trouvĂ©." #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "Le snapshot %(snapshot_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "Aucun disque sur %(location)s" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "Impossible de trouver un gestionnaire pour le %(driver_type)s de volume." #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "L'image href %(image_href)s est invalide." #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "L'image %(image_id)s n'a pas Ă©tĂ© trouvĂ©e." #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "Le projet %(project_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "Impossible de trouver le SR pour lire/Ă©crire le VDI." #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "Le rĂ©seau %(network_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:566 #, fuzzy, python-format msgid "Network %(network_id)s is still in use." msgstr "Le rĂ©seau %(network_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "%(req)s est requis pour crĂ©er un rĂ©seau." #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "Le rĂ©seau %(network_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "Le snapshot %(snapshot_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "Aucun rĂ©seau trouvĂ© pour le pont %(bridge)s" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "Aucun rĂ©seau trouvĂ© pour l'uuid %(uuid)s" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "Aucun rĂ©seau trouvĂ© avec le cidr %(cidr)s." #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "Aucun rĂ©seau trouvĂ© pour l'instance %(instance_id)s." #: nova/exception.py:598 msgid "No networks defined." msgstr "Aucun rĂ©seau dĂ©fini." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, fuzzy, python-format msgid "Port %(port_id)s is still in use." msgstr "Le rĂ©seau %(network_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Aucun rĂ©seau trouvĂ© pour l'instance %(instance_id)s." #: nova/exception.py:637 #, fuzzy, python-format msgid "No free port available for instance %(instance)s." msgstr "Aucun rĂ©seau trouvĂ© pour l'instance %(instance_id)s." #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "Pas d'adresse IP fixe associĂ©e avec l'id %(id)s." #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "Pas d'IP fixe trouvĂ©e pour l'adresse %(address)s." #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "L'instance %(instance_id)s n'a aucunes IPs fixes" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" "Le rĂ©seau hĂ´te %(host)s n'a aucunes IPs fixes dans le rĂ©seau " "%(network_id)s." #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "L'instance %(instance_id)s ne peut avoir l'IP fixe '%(ip)s'." #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" "L'adresse IP fixe (%(address)s) n'existe pas dans le rĂ©seau " "(%(network_uuid)s)." #: nova/exception.py:671 #, fuzzy, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "L'adresse IP fixe %(address)s est dĂ©jĂ  utilisĂ©e." #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "L'adresse IP fixe %(address)s est invalide." #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "Aucunes IPs fixes disponibles." #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "Aucunes IPs fixes trouvĂ©es." #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "L'IP dynamique %(address)s est associĂ©e." #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "L'entrĂ©e DNS %(name)s existe dĂ©jĂ  dans le domaine %(domain)s." #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "Aucune IP dynamique trouvĂ©e pour l'adresse %(address)s." #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "Aucune IP dynamique trouvĂ©e pour l'hĂ´te %(host)s." #: nova/exception.py:715 #, fuzzy, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "Aucune IP dynamique trouvĂ©e pour l'adresse %(address)s." #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "Aucune IPs dynamiques disponibles." #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "L'IP dynamique %(address)s est associĂ©e." #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "L'IP dynamique %(address)s n'est pas associĂ©e." #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "Aucunes IPs dynamiques existes." #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "L'interface %(interface)s non trouvĂ©e." #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "La paire de clĂ©s %(name)s est introuvable pour l'utilisateur %(user_id)s" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Le service %(service_id)s ne peut pas Ăªtre trouvĂ©." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "L'hĂ´te %(host)s ne peut pas Ăªtre trouvĂ©." #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "L'hĂ´te de calcul %(host)s ne peut pas Ăªtre trouvĂ©." #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "Impossible de trouver le binaire %(binary)s sur l'hĂ´te %(host)s." #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "Le quota ne peut pas Ăªtre trouvĂ©" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "Le quota pour le projet %(project_id)s ne peut pas Ăªtre trouvĂ©." #: nova/exception.py:812 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "La clĂ© d'accès %(access_key)s ne peut pas Ăªtre trouvĂ©e." #: nova/exception.py:816 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "Le quota pour le projet %(project_id)s ne peut pas Ăªtre trouvĂ©." #: nova/exception.py:820 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "L'utilisateur %(user_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "Groupe de sĂ©curitĂ© %(security_group_id)s non trouvĂ©." #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" "Groupe de sĂ©curitĂ© %(security_group_id)s non trouvĂ© pour le projet " "%(project_id)s." #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "Le groupe de sĂ©curitĂ© avec la règle %(rule_id)s non trouvĂ©." #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" "Le groupe de sĂ©curitĂ© %(security_group_id)s est dĂ©jĂ  associĂ© avec " "l'instance %(instance_id)s" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" "Le groupe de sĂ©curitĂ© %(security_group_id)s n'est pas associĂ© avec " "l'instance %(instance_id)s" #: nova/exception.py:857 #, fuzzy, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "Le groupe de sĂ©curitĂ© avec la règle %(rule_id)s non trouvĂ©." #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "La migration %(migration_id)s ne peut Ăªtre trouvĂ©e." #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" "Migration non trouvĂ©e pour l'instance %(instance_id)s avec le statut " "%(status)s." #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "La console %(console_id)s ne peut Ăªtre trouvĂ©e." #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "La console pour l'instance %(instance_id)s ne peut Ăªtre trouvĂ©e." #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "La console pour l'instance %(instance_id)s ne peut Ăªtre trouvĂ©e." #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "Le type de console %(console_type)s est invalide " #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "Le Flavor %(flavor_id)s ne peut Ăªtre trouvĂ©." #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "Le groupe de volume %s n'existe pas" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Volume non trouvĂ© pour l'instance %(instance_id)s." #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "La plannification de filtre hĂ´te %(filter_name)s ne peut Ăªtre trouvĂ©e." #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "L'IP dynamique %(address)s est associĂ©e." #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 #, fuzzy msgid "Maximum number of floating ips exceeded" msgstr "Aucunes IPs dynamiques existes." #: nova/exception.py:1120 #, fuzzy msgid "Maximum number of fixed ips exceeded" msgstr "Aucunes IPs dynamiques existes." #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "L'instance %(instance_id)s n'a pas pu Ăªtre trouvĂ©e." #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "La console pour l'instance %(instance_id)s ne peut Ăªtre trouvĂ©e." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Le volume %(volume_id)s n'a pas pu Ăªtre trouvĂ©." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "Le snapshot %(snapshot_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "L'image %(image_id)s n'a pas Ă©tĂ© trouvĂ©e." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "Aucun noyau trouvĂ© pour l'image %(image_id)s." #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "Aucun noyau trouvĂ© pour l'image %(image_id)s." #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, fuzzy, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "Aucune IP dynamique trouvĂ©e pour l'hĂ´te %(host)s." #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "L'instance %(instance_id)s n'a pas pu Ăªtre trouvĂ©e." #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Va essayer d'arrĂªter %s" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "Va essayer d'arrĂªter %s" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" "Montage du volume %(volume_id)s sur l'instance %(instance_id)s en tant " "que %(device)s" #: nova/exception.py:1291 #, fuzzy, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "La paire de clĂ©s %(name)s est introuvable pour l'utilisateur %(user_id)s" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, fuzzy, python-format msgid "The CA file for %(project)s could not be found" msgstr "Le quota pour le projet %(project_id)s ne peut pas Ăªtre trouvĂ©." #: nova/exception.py:1304 #, fuzzy, python-format msgid "The CRL file for %(project)s could not be found" msgstr "Le projet %(project_id)s n'a pas Ă©tĂ© trouvĂ©." #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "L'instance %(instance_id)s n'est pas en mode secours" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "L'instance %(instance_id)s n'est pas en mode secours" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "Le type d'instance avec le nom %(instance_type_name)s ne peut Ăªtre trouvĂ©." #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Impossible de rĂ©cupĂ©rer les mĂ©ta-donnĂ©rs pour l'IP : %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "DĂ©marrage du noeud %(topic)s (version %(vcs_string)s)" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Service dĂ©truit sans entrĂ©e dans la base de donnĂ©es" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "L'adresse du lien local n'a pas Ă©tĂ© trouvĂ© :%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "Impossible de trouver l'IP du lien local de %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "Backend invalide : %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Impossible de trouver SR du VDB %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Impossible de trouver SR du VDB %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Impossible de trouver SR du VDB %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "Vous devez implĂ©menter __call__" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Trop d'erreur d'authentification" #: nova/api/ec2/__init__.py:167 #, 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 "" "La clef d'accès %(access_key)s a rencontrĂ©e %(failures)d echecs " "d'authentification et sera par consĂ©quent vĂ©rouillĂ©e pour %(lock_mins)d " "minutes." #: nova/api/ec2/__init__.py:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "Echec d'authentification : %s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Trop d'erreur d'authentification" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "action: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "arg: %(key)s\t\tval: %(value)s" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" "RequĂªte non authorisĂ© pour le controlleur=%(controller)s et " "l'action=%(action)s" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" "RequĂªte API non supportĂ©e : controleur = %(controller)s, action = " "%(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, fuzzy, python-format msgid "Could not find key pair(s): %s" msgstr "Impossible de dĂ©chiffrer la clef privĂ©e : %s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "CrĂ©ation du bi-clef %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Suppression du bi-clef %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "Pas de règle pour les paramètres spĂ©cifiĂ©s." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "CrĂ©ation d'un volume de %s Go" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" "Montage du volume %(volume_id)s sur l'instance %(instance_id)s en tant " "que %(device)s" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "DĂ©-montage du volume %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Allocation d'adresse" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "DĂ©sallocation de l'adresse %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "Association de l'adresse %(public_ip)s avec l'instance %(instance_id)s" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "DĂ©sassociation de l'adresse %s" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "DĂ©sassociation de l'adresse %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "DĂ©but de la destruction d'instance" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "DĂ©-enregitrement de l'image %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "Image %(image_location)s enregistrĂ© avec l'id %(image_id)s" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "Utilisateur ou groupe non spĂ©cifiĂ©" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "Seul le group \"tous\" est supportĂ©" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" "le type d'opĂ©ration (operation_type) doit Ăªtre ajout (add) ou suppression" " (remove)" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "Mis Ă  jour de la publication de l'image %s" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 #, fuzzy msgid "Invalid CIDR" msgstr "Le cidr %(cidr)s est invalide" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "La requĂªte est invalide." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Impossible de rĂ©cupĂ©rer les mĂ©ta-donnĂ©rs pour l'IP : %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "Une erreur inopinĂ©e Ă  eu lieu. Merci d'essayer votre requĂªte Ă  nouveau." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Impossible de rĂ©cupĂ©rer les mĂ©ta-donnĂ©rs pour l'IP : %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "Reçu exception : %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "Signature non valide pour l'utilisateur %s" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "Signature non valide pour l'utilisateur %s" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "Va essayer d'arrĂªter %s" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "L'hĂ´te %(host)s ne peut pas Ăªtre trouvĂ©." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "Le point de montage ne peut pas Ăªtre traduit : %s" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "Le point de montage ne peut pas Ăªtre traduit : %s" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "L'instance %(instance_id)s n'a pas pu Ăªtre trouvĂ©e." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "L'instance %(instance_id)s n'a pas pu Ăªtre trouvĂ©e." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Échec du redĂ©marrage de l'instance" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Échec de la suspension de l'instance" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Échec de la suspension de l'instance" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "attribut non reconnu : %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "DĂ©marrage de l'interface VLAN %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "L'interface %(interface)s non trouvĂ©e." #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "action: %s" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "Impossible de dĂ©tacher le volume %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Le certificat %(certificate_id)s non trouvĂ©." #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "Aucuns types d'instance trouvĂ©s." #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "L'IP dynamique %(address)s n'est pas associĂ©e." #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 #, fuzzy msgid "floating ip is already associated" msgstr "L'IP dynamique %(address)s est associĂ©e." #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 #, fuzzy msgid "Floating ip is not associated" msgstr "L'IP dynamique %(address)s n'est pas associĂ©e." #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "L'IP dynamique %(address)s n'est pas associĂ©e." #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "Backend invalide : %s" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Appel du getter %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Appel du getter %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, fuzzy, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "Le service %(service_id)s ne peut pas Ăªtre trouvĂ©." #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, fuzzy, python-format msgid "No hypervisor matching '%s' could be found." msgstr "Aucunes IPs fixes trouvĂ©es." #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "Signature non valide pour l'utilisateur %s" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "La ressource n'a pas pu Ăªtre trouvĂ©e." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "Aucun rĂ©seau dĂ©fini." #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "Pas assez de parametres pour contruire un règle valide." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Cette règle existe dĂ©jĂ  dans le groupe %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 #, fuzzy msgid "security group default rule not found" msgstr "Le groupe de sĂ©curitĂ© avec la règle %(rule_id)s non trouvĂ©." #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "instance %s: a dĂ©marrĂ©e" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "Reçu exception : %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "Pas de mĂ©thode pour le message : %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "Pas de mĂ©thode pour le message : %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Volume non trouvĂ© pour l'instance %(instance_id)s." #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Volume non trouvĂ© pour l'instance %(instance_id)s." #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "Renvoi de l'exception %s Ă  l'appelant" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Volume non trouvĂ© pour l'instance %(instance_id)s." #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "RĂ©seau Ă  passer Ă  la configuration d'openvpn" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "Masque rĂ©seau Ă  passer Ă  la configuration d'openvpn" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "DĂ©marrage du VPN pour %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Impossible de trouver le volume %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "%s reçu" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "adresse de dĂ©part" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 #, fuzzy msgid "No fixed IP found." msgstr "Aucunes IPs fixes trouvĂ©es." #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "L'IP dynamique %(address)s est associĂ©e." #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "adresse de dĂ©part" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "Le service %(service_id)s ne peut pas Ăªtre trouvĂ©." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "Le service %(service_id)s ne peut pas Ăªtre trouvĂ©." #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "\"Erreur inopinĂ©e\" remontĂ©e : %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "" "Quota d'instances dĂ©passĂ©. Vous ne pouvez Ă©xĂ©cuter que %s instances de ce" " type de plus." #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "" "Quota d'instances dĂ©passĂ©. Vous ne pouvez Ă©xĂ©cuter que %s instances de ce" " type de plus." #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Impossible d'attacher le volume Ă  l'instance %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "DĂ©marrage de %s instances..." #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "DĂ©but de la destruction d'instance" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "DĂ©but de la destruction d'instance" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "Va essayer d'arrĂªter %s" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "Va essayer d'arrĂªter %s" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "Va essayer d'arrĂªter %s" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "Va essayer d'arrĂªter %s" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "DĂ©but de crĂ©ation d'instantanĂ© (snapshot) pour la VM %s" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Va essayer d'arrĂªter %s" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "CrĂ©ation du groupe de sĂ©curitĂ© %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Impossible de supprimer le VBD %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Impossible de supprimer le VBD %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "RĂ©vocation de groupe de sĂ©curitĂ© %s" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Suppression du groupe de sĂ©curitĂ© %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Authorisation du groupe de sĂ©curitĂ© %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "RĂ©vocation de groupe de sĂ©curitĂ© %s" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" "Impossible de migrer l'instance (%(instance_id)s) vers l'hĂ´te actuel " "(%(host)s)." #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Échec du redĂ©marrage de l'instance" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Échec de la suspension de l'instance" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "\"Erreur inopinĂ©e\" remontĂ©e : %s" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "Va essayer d'arrĂªter %s" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Va essayer d'arrĂªter %s" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "RedĂ©marrage de l'instance %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Impossible de rĂ©cupĂ©rer les mĂ©ta-donnĂ©rs pour l'IP : %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "DĂ©-montage du volume %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "RedĂ©marrage de l'instance %s" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "instance %s: re-dĂ©marrĂ©e" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "instance %s: crĂ©ation d'un instantanĂ© (snapshot)" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Échec de la suspension de l'instance" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/compute/manager.py:2989 #, fuzzy msgid "Unrescuing" msgstr "instance %s: dĂ©-rĂ©cupĂ©ration" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "instance %s: crĂ©ation d'un instantanĂ© (snapshot)" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "instance %s: rĂ©cupĂ©ration des diagnostiques" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "Ajout de console" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "Ajout de console" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "DĂ©montage de volume d'une instance inconnue %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Suppression de l'utilisateur %s" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "instance %s: a dĂ©marrĂ©e" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Suppression de l'utilisateur %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "CrĂ©ation du bi-clef %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "Ajout de console" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Volume invalide" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "Reconstruction de la configuration xvp" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "RĂ©-Ă©criture de %s" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "ArrĂªt xvp" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "DĂ©marrage xvp" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "Erreur au dĂ©marrage xvp : %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "Re-dĂ©marrage xvp" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvp non actif..." #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "Échec de la reprise du serveur" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Échec du redĂ©marrage de l'instance" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Échec du redĂ©marrage de l'instance" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "Impossible de dĂ©chiffrer la clef privĂ©e : %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "Impossible de dĂ©chiffrer le vecteur d'initialisation : %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "Impossible de dĂ©chiffrer le fichier image %(image_file)s: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Échec du redĂ©marrage de l'instance" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "Association de l'adresse %(public_ip)s avec l'instance %(instance_id)s" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "L'adresse IP fixe %(address)s est dĂ©jĂ  utilisĂ©e." #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d est dĂ©passĂ©, re-dĂ©marrage de dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "Hupping dnsmasq Ă  renvoyĂ© %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d est dĂ©passĂ©, re-dĂ©marrage de dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "La destruction de radvd Ă  renvoyĂ© %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d est dĂ©passĂ©, re-dĂ©marrage radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "Backend invalide : %s" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "DĂ©marrage de l'interface VLAN %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "DĂ©marrage de l'interface de Bridge %s" #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "L'interface %(interface)s non trouvĂ©e." #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "Échec de la suspension de l'instance" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "DĂ©marrage de l'interface de Bridge %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "Erreur au dĂ©marrage xvp : %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/network/manager.py:493 #, fuzzy msgid "network allocations" msgstr "Aucun disque sur %(location)s" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "IP %s libĂ©rĂ©e qui n'Ă©tait pas allouĂ©e" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "La somme du nombre de rĂ©seau et le dĂ©but de vlan ne peut excĂ©der 4094" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Volume invalide" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "%s reçu" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "RĂ©vocation de groupe de sĂ©curitĂ© %s" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, fuzzy, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" "Groupe de sĂ©curitĂ© %(security_group_id)s non trouvĂ© pour le projet " "%(project_id)s." #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Cette règle existe dĂ©jĂ  dans le groupe %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "Erreur au dĂ©marrage xvp : %s" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "Le quota ne peut pas Ăªtre trouvĂ©" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "%s reçu" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Execution de la commande (sous-processus) : %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Le rĂ©sultat Ă©tait %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Execution de la cmd (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Ensemble de propriĂ©tĂ©s complet :" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "adresse de dĂ©part" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Volume non trouvĂ© pour l'instance %(instance_id)s." #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "RĂ©cupĂ©ration du modelle de connexion serveur terminĂ©e!" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "Le modèle de serveur Ă  disparu" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "Tentative d'instanciation d'un singleton" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "Instance actives : %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "Après l'arrĂªt d'instances : %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "La paire de clĂ©s de donnĂ©e n'est pas valide" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "L'interface %(interface)s non trouvĂ©e." #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "Échec du redĂ©marrage de l'instance" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Commande : %(cmd)s\n" "Valeur retournĂ©e : %(exit_code)s\n" "Sortie standard : %(stdout)r\n" "Sortie d'erreur : %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "DĂ©but de la destruction d'instance" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "DĂ©but de la destruction d'instance" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Injection du chemin d'accès : '%s'" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "L'instance de type %(instance_type)s est invalide." #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "Impossible de dĂ©chiffrer le fichier image %(image_file)s: %(err)s" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, fuzzy, python-format msgid "No fixed PXE IP is associated to %s" msgstr "Pas d'adresse IP fixe associĂ©e avec l'id %(id)s." #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "Aucuns types d'instance trouvĂ©s." #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "La crĂ©ation de l'Interface Virtuelle a Ă©chouĂ©" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, fuzzy, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" "instance %(inst_name)s : l'erreur d'injection de donnĂ© dans l'image " "%(img_id)s (%(e)s) a Ă©tĂ© ignorĂ©e" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "DĂ©sallocation de l'adresse %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "Pas de device nbd libre" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "Impossible de monter le système de fichier : %s" #: nova/virt/disk/api.py:451 #, fuzzy, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" "instance %(inst_name)s : l'erreur d'injection de donnĂ© dans l'image " "%(img_id)s (%(e)s) a Ă©tĂ© ignorĂ©e" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "Impossible de monter le système de fichier : %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "Échec de la suspension de l'instance" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "Impossible de lier l'image au loopback : %s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "Pas de device nbd libre" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "Erreur interceptĂ©e : %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "Device nbd %s n'est pas apparu" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "Impossible de monter le système de fichier : %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Impossible de trouver le volume %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Impossible de trouver le volume %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, fuzzy, python-format msgid "File path %s not valid" msgstr "Injection du chemin d'accès : '%s'" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Impossible de monter le système de fichier : %s" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Impossible de monter le système de fichier : %s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Impossible de dĂ©chiffrer le fichier image %(image_file)s: %(err)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "DĂ©sallocation de l'adresse %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "DĂ©but de la destruction d'instance" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Echec d'authentification : %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "DĂ©but de la destruction d'instance" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Appel du getter %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "DĂ©marrage du VPN pour %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Suppression de l'utilisateur %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "DĂ©but de crĂ©ation d'instantanĂ© (snapshot) pour la VM %s" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "RĂ©cupĂ©ration de la sortie de la console de l'instance %s" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, fuzzy, python-format msgid "Creating config drive at %(path)s" msgstr "Injection du chemin d'accès : '%s'" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "Injection du chemin d'accès : '%s'" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Impossible de supprimer le VBD %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Échec de la suspension de l'instance" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Re-dĂ©marrage de l'instance %r" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "DĂ©marrage de %s instances..." #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "DĂ©marrage de %s instances..." #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Impossible de rĂ©cupĂ©rer les mĂ©ta-donnĂ©rs pour l'IP : %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Suppression de l'utilisateur %s" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "Aucune IP dynamique trouvĂ©e pour l'id %(id)s." #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Impossible d'attacher le volume Ă  l'instance %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "Connexion Ă  libvirt: %s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "Connexion Ă  libvirt interrompue" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "Connexion Ă  libvirt: %s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Va essayer d'arrĂªter %s" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "Aucun rĂ©seau dĂ©fini." #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "Aucun rĂ©seau dĂ©fini." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "instance %s: re-dĂ©marrĂ©e" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "data: %(data)r, fpath: %(fpath)r" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "L’utilisateur n'a pas les privilèges administrateur" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, fuzzy, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" "instance %(inst_name)s : l'erreur d'injection de donnĂ© dans l'image " "%(img_id)s (%(e)s) a Ă©tĂ© ignorĂ©e" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Impossible de rĂ©cupĂ©rer les mĂ©ta-donnĂ©rs pour l'IP : %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "DĂ©marrage de l'interface de Bridge %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "le groupe %s existe dĂ©jĂ " #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "action: %s" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "DĂ©marrage de %s instances..." #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "Re-dĂ©marrage xvp" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "Nested renvoi %s" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "DĂ©-enregitrement de l'image %s" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "DĂ©marrage de %s instances..." #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "L'instance %(instance_id)s n'a pas pu Ăªtre trouvĂ©e." #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Suppression de l'utilisateur %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "instance %s: rĂ©cupĂ©rĂ©e" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Suppression de l'utilisateur %s" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Impossible de trouver le volume %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Re-parcours de SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Re-parcours de SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: suppression des fichiers d'instance %(target)s" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "instance %(instance_name)s: suppression des fichiers d'instance %(target)s" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" "Le point de montage %(mountpoint)s a Ă©tĂ© attachĂ© Ă  l'instance " "%(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Impossible de trouver le volume %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Impossible de dĂ©tacher le volume %s" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" "Le point de montage %(mountpoint)s Ă  Ă©tĂ© dĂ©tachĂ© de l'instance " "%(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "Appel du getter %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, fuzzy, python-format msgid "Injecting file path: %r" msgstr "Injection du chemin d'accès : '%s'" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "Erreur OpenSSL : %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, fuzzy, python-format msgid "Could not determine key: %s" msgstr "Impossible de dĂ©chiffrer la clef privĂ©e : %s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Fonction non implĂ©mentĂ©e" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake n'a pas d'implĂ©mentation pour %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Appel du getter %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Appel du getter %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake n'a pas d'implementation pour %s ou il a Ă©tĂ© appelĂ© avec le " "mauvais nombre d'arguments" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "L'hĂ´te de calcul %(host)s ne peut pas Ăªtre trouvĂ©." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Échec du redĂ©marrage de l'instance" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "RĂ©seau non unique trouvĂ© pour le bridge %s" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "Aucun rĂ©seau trouvĂ© pour le bridge %s" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD non trouvĂ© dans l'instance %s" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "le groupe %s existe dĂ©jĂ " #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "Impossible de deconnecter le VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "Impossible de supprimer le VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "VBD créé %(vbd_ref)s pour VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "VBD créé %(vbd_ref)s pour VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "VDI créé %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s) on" " %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 #, fuzzy msgid "SR not present and could not be introduced" msgstr "Le quota ne peut pas Ăªtre trouvĂ©" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "DĂ©but de crĂ©ation d'instantanĂ© (snapshot) pour la VM %s" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, fuzzy, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "Image %(image_location)s enregistrĂ© avec l'id %(image_id)s" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Taille de l'image %(image)s:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "Copie de VDI %s vers /boot/guest sur dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Noyau/Ramdisk VDI %s dĂ©truit" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "Échec du redĂ©marrage de l'instance" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "Le VDI %s est toujours disponible" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s Ă  pour parent %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "" "L'UUID parent %(parent_uuid)s ne correspond pas au parent originel " "%(original_parent_uuid)s, attente de coalesence..." #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "Connexion de VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "Connexion de VBD %s terminĂ©e." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "Destruction de VBD pour la VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "Destruction de VBD pour la VDI %s terminĂ©e." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "Ecriture de la table de partitionnement %s terminĂ©e." #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "DĂ©marrage de l'interface de Bridge %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "CrĂ©ation d'une instance raw" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "Échec de la suspension de l'instance" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "Fin de l'instantanĂ© et du chargement de VM %s" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Échec du redĂ©marrage de l'instance" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "Re-dĂ©marrage xvp" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "Fichiers noyau/ramdisk supprimĂ©s" #: nova/virt/xenapi/vmops.py:1329 #, fuzzy msgid "Destroying VM" msgstr "Re-dĂ©marrage xvp" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "rĂ©glage de l'hĂ´te rĂ©seau" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "CrĂ©ation du VIF pour la VM %(vm_ref)s, rĂ©seau %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "DĂ©marrage du VPN pour %s" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "Impossible de trouver SR du VDB %s" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "Exception %(exc)s ignorĂ©e pendant l'obtention de PBDs pour %(sr_ref)s" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "Exception %(exc)s ignorĂ©e pendant la deconnexion du PBD %(pbd)s" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "Impossible d'introduire VDI sur SR %s" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "Impossible de rĂ©cuppĂ©rer l'enregistrement du VDI %s sur" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "Impossible d'introduire le VDI pour SR %s" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Le point de montage ne peut pas Ăªtre traduit : %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "Reçu exception : %s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/fi_FI/0000775000175400017540000000000012323722545017065 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fi_FI/LC_MESSAGES/0000775000175400017540000000000012323722546020653 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fi_FI/LC_MESSAGES/nova.po0000664000175400017540000116547412323721510022166 0ustar jenkinsjenkins00000000000000# English (United States) translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-18 19:07+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Finnish (Finland) " "(http://www.transifex.com/projects/p/openstack/language/fi_FI/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/nb/0000775000175400017540000000000012323722545016510 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/nb/LC_MESSAGES/0000775000175400017540000000000012323722546020276 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/nb/LC_MESSAGES/nova.po0000664000175400017540000117514712323721510021607 0ustar jenkinsjenkins00000000000000# Norwegian BokmĂ¥l translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: # FIRST AUTHOR , 2012. msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-09-13 10:30+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: nb \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 #, fuzzy msgid "Unable to find the key" msgstr "Kan ikke finne adressen %r" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "En ukjent feil oppsto." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Kunne ikke dekryptere teksten" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Kunne ikke dekryptere teksten" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "Ikke autorisert." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "Bruker har ikke admin-rettigheter" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "Forespørselen er ugyldig." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Ugyldig IP protokoll %(protocol)s." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s er ikke en gyldig IP v4/6 addresse." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "Ressurs ble ikke funnet." #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "Prosjekt %(project_id)s ble ikke funnet." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "Nettverk %(network_id)s ble ikke funnet." #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "Nettverk %(network_id)s ble ikke funnet." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "Prosjekt %(project_id)s ble ikke funnet." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "Ingen nettverk definert." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "Handlingen er ikke tillatt." #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "Nøkkelpar '%s' finnes allerede." #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Prosjekt %(project_id)s ble ikke funnet." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "Prosjekt %(project_id)s ble ikke funnet." #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "Forventet objekt av typen: %s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "Forventet objekt av typen: %s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, fuzzy, python-format msgid "%s is not a string or unicode" msgstr "Tjenernavn er ikke en streng eller unicode" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Kan ikke finne adressen %r" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Kan ikke finne adressen %r" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Kan ikke finne adressen %r" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "Stoppet WSGI tjener." #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "WSGI tjener har stoppet." #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "Du mĂ¥ implementere __call__" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "Signatur ikke gitt" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Lag nøkkelpar %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "Importer nøkkel %s" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Slett nøkkelpar %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "Ingen regel for de angitte parametrene." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Tildel adresse" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Frigjør adresse %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "bruker eller gruppe ikke spesifisert" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "kun gruppe \"all\" er støttet" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "Forespørselen er ugyldig." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Kunne ikke hente metadata for ip:% s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Kunne ikke hente metadata for ip:% s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, fuzzy, python-format msgid "v3 API Extension Blacklist: %s" msgstr "Laster utvidelse %s" #: nova/api/openstack/__init__.py:301 #, fuzzy, python-format msgid "v3 API Extension Whitelist: %s" msgstr "Laster utvidelse %s" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "Laster utvidelse %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "Laster utvidelse %s" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "Kunne ikke laste utvidelse %(ext_factory)s: %(exc)s" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "Kunne ikke laste utvidelse %(classpath)s: %(exc)s" #: nova/api/openstack/extensions.py:372 #, fuzzy, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "Kunne ikke laste utvidelse %(ext_name)s: %(exc)s" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "Ingen slik handling: %s" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "Tjener eksisterer ikke" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "Metadata element ble ikke funnet" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "Feil nettverks-format: mangler %s" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "Feil nettverks-format" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "Tjenernavn er ikke definert" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "Ressurs ble ikke funnet." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "Ressurs ble ikke funnet." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "Ugyldig snapshot" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "Tjener ikke funnet" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Nettverk ikke funnet" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Metadata element ble ikke funnet" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "Tjener ikke funnet" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "Adresse ikke spesifisert" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "Ugyldig status: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "Kan ikke finne adressen %r" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "Viser nettverk med id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "Nettverk ikke funnet" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "Viser nettverk med id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "Viser nettverk med id %s" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "Sletter nettverk med id %s" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "Ressurs ble ikke funnet." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "Ingen nettverk definert." #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "Ikke nok parametere for Ă¥ lage en gyldig regel." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Denne regelen eksisterer allerede i gruppen %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "Viser nettverk med id %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "Sletter nettverk med id %s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "Laster utvidelse %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, fuzzy, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "Kunne ikke laste utvidelse %(ext_factory)s: %(exc)s" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Kan ikke finne adressen %r" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "Tildel adresse" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "Nettverk ikke funnet" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Kunne ikke hente metadata for ip:% s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "Viser nettverk med id %s" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Ugyldig snapshot" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Denne regelen eksisterer allerede i gruppen %s" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Resultat var %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r feilet. Prøver pĂ¥ nytt." #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 #, fuzzy msgid "memcached_servers not defined" msgstr "Tjenernavn er ikke definert" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "Tjener ikke funnet" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "Adresse ikke spesifisert" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "Adresse ikke spesifisert" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, fuzzy, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "Kunne ikke laste utvidelse %(classpath)s: %(exc)s" #: nova/virt/baremetal/utils.py:63 #, fuzzy, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "Kunne ikke laste utvidelse %(classpath)s: %(exc)s" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "Metadata element ble ikke funnet" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Frigjør adresse %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "Frigjør adresse %s" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, fuzzy, python-format msgid "Map dev %s" msgstr "Importer nøkkel %s" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Kan ikke finne adressen %r" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Kunne ikke laste utvidelse %(ext_name)s: %(exc)s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Kunne ikke laste utvidelse %(ext_name)s: %(exc)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Frigjør adresse %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "Tjener ikke funnet" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Kunne ikke hente metadata for ip:% s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "Ingen nettverk definert." #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "Ingen nettverk definert." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "Forventet objekt av typen: %s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, fuzzy, python-format msgid "AoE device not found at %s" msgstr "Tjener ikke funnet" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Kan ikke finne adressen %r" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Kan ikke finne adressen %r" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "Tjeneste %(service_id)s ble ikke funnet." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 #, fuzzy msgid "SR not present and could not be introduced" msgstr "Prosjekt %(project_id)s ble ikke funnet." #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 #, fuzzy msgid "No suitable network for migrate" msgstr "Feil nettverks-format" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/it_IT/0000775000175400017540000000000012323722545017121 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/it_IT/LC_MESSAGES/0000775000175400017540000000000012323722546020707 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/it_IT/LC_MESSAGES/nova.po0000664000175400017540000116546212323721510022217 0ustar jenkinsjenkins00000000000000# Italian (Italy) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-28 17:08+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Italian (Italy) " "(http://www.transifex.com/projects/p/openstack/language/it_IT/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/bs/0000775000175400017540000000000012323722545016515 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/bs/LC_MESSAGES/0000775000175400017540000000000012323722546020303 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/bs/LC_MESSAGES/nova.po0000664000175400017540000116542212323721510021607 0ustar jenkinsjenkins00000000000000# Bosnian translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-01-19 20:22+0000\n" "Last-Translator: yazar \n" "Language-Team: Bosnian \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ru/0000775000175400017540000000000012323722545016537 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ru/LC_MESSAGES/0000775000175400017540000000000012323722546020325 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ru/LC_MESSAGES/nova.po0000664000175400017540000134632112323721510021630 0ustar jenkinsjenkins00000000000000# Russian translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-03-25 09:34+0000\n" "Last-Translator: Eugene Marshal \n" "Language-Team: Russian \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "block_device_list %s" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Đ˜Đ¼Ñ Ñ„Đ°Đ¹Đ»Đ° ĐºĐ¾Ñ€Đ½ĐµĐ²Đ¾Đ³Đ¾ Ñ†ĐµĐ½Ñ‚Ñ€Đ° ÑĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Đ˜Đ¼Ñ Ñ„Đ°Đ¹Đ»Đ° ÑĐµĐºÑ€ĐµÑ‚Đ½Đ¾Đ³Đ¾ ĐºĐ»ÑÑ‡Đ°" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Đ˜Đ¼Ñ Ñ„Đ°Đ¹Đ»Đ° ĐºĐ¾Ñ€Đ½ĐµĐ²Đ¾Đ³Đ¾ ÑĐ¿Đ¸ÑĐºĐ° Đ¾Ñ‚Đ·Ñ‹Đ²Đ° ÑĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Đ²" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "ĐŸÑƒÑ‚ÑŒ Đº ĐºĐ»ÑÑ‡Đ°Đ¼" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "ĐœĐµÑÑ‚Đ¾ Ñ€Đ°ÑĐ¿Đ¾Đ»Đ¾Đ¶ĐµĐ½Đ¸Ñ Đ½Đ°ÑˆĐµĐ³Đ¾ ĐºĐ¾Ñ€Đ½ĐµĐ²Đ¾Đ³Đ¾ Ñ†ĐµĐ½Ñ‚Ñ€Đ° ÑĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Đ”Đ¾Đ»Đ¶Đ½Ñ‹ ли Đ¼Ñ‹ иÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ÑŒ Ñ†ĐµĐ½Ñ‚Ñ€ ÑĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸ Đ´Đ»Ñ ĐºĐ°Đ¶Đ´Đ¾Đ³Đ¾ Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ°?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" "Đ¢ĐµĐ¼Đ° Đ´Đ»Ñ ÑĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Đ² Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ĐµĐ¹, %s Đ´Đ»Ñ Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ°, Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ, " "Đ²Ñ€ĐµĐ¼ĐµĐ½Đ½Đ¾Đ¹ Đ¼ĐµÑ‚ĐºĐ¸" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Đ¢ĐµĐ¼Đ° Đ´Đ»Ñ ÑĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Đ² Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ¾Đ², %s Đ´Đ»Ñ Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ°, Đ²Ñ€ĐµĐ¼ĐµĐ½Đ½Đ°Ñ Đ¼ĐµÑ‚ĐºĐ°" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 #, fuzzy msgid "Unable to find the key" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "РаÑĐ¿Đ¾Đ»Đ¾Đ¶ĐµĐ½Đ¸Đµ Ñ„Đ»Đ°Đ³Đ¾Đ²: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "ĐĐ±Đ½Đ°Ñ€ÑƒĐ¶ĐµĐ½Đ¾ Đ½ĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Đ¾Đµ иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¾Đ²ĐºĐ¸ Ñ‚ĐµĐºÑÑ‚Đ°" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¾Đ²ĐºĐ¸ Ñ‚ĐµĐºÑÑ‚Đ°" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ Đ²Đ¸Ñ€Ñ‚ÑƒĐ°Đ»ÑŒĐ½Đ¾Đ³Đ¾ Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñа" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "Đе Đ°Đ²Ñ‚Đ¾Ñ€Đ¸Đ·Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¾." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "ĐŸĐ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒ Đ½Đµ Đ¸Đ¼ĐµĐµÑ‚ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¸Đ²Đ½Ñ‹Ñ… Đ¿Ñ€Đ¸Đ²Đ¸Đ»ĐµĐ³Đ¸Đ¹" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "ĐŸĐ¾Đ»Đ¸Ñ‚Đ¸ĐºĐ° Đ½Đµ Đ´Đ¾Đ¿ÑƒÑĐºĐ°ĐµÑ‚ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ %(action)s." #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "ĐĐ±Ñ€Đ°Đ· %(image_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Đ¯Đ´Ñ€Đ¾ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ´Đ»Ñ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image_id)s." #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đµ Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€Ñ‹." #: nova/exception.py:195 #, fuzzy msgid "Block Device Mapping is Invalid." msgstr "block_device_mapping %s" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "Đ¢Đ¾Đ¼ %(volume_id)s Đ½Đ¸ĐºÑƒĐ´Đ° Đ½Đµ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½Ñ‘Đ½" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ´Đ¸Đ°Đ¿Đ°Đ·Đ¾Đ½ Đ¿Đ¾Ñ€Ñ‚Đ¾Đ² %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ¿Ñ€Đ¾Ñ‚Đ¾ĐºĐ¾Đ» IP %(protocol)s." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Ñ‚Đ¸Đ¿ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đ³Đ¾ %(content_type)s." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ cidr %(cidr)s." #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, fuzzy, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "Đ”Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑƒĐ·ĐµĐ» Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½. %(reason)s" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" "ĐĐ¾Đ¿Đ¸Ñ %(instance_uuid)s Đ² %(attr)s %(state)s. ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ %(method)s Đ²Đ¾ " "Đ²Ñ€ĐµĐ¼Ñ Đ½Đ°Ñ…Đ¾Đ¶Đ´ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸ Đ² ÑÑ‚Đ¾Đ¼ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đ¸." #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ° Đ² Ñ€ĐµĐ¶Đ¸Đ¼ Đ²Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ° Đ² Ñ€ĐµĐ¶Đ¸Đ¼ Đ²Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ" #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ° Đ² Ñ€ĐµĐ¶Đ¸Đ¼ Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ." #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "Đ’ Đ´Đ°Đ½Đ½Ñ‹Đ¹ Đ¼Đ¾Đ¼ĐµĐ½Ñ‚ ÑĐ»ÑƒĐ¶Đ±Đ° Đ½ĐµĐ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đ°." #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "Đ¡Đ»ÑƒĐ¶Đ±Đ° Compute Đ½ĐµĐ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đ° Đ² Đ½Đ°ÑÑ‚Đ¾ÑÑ‰ĐµĐµ Đ²Ñ€ĐµĐ¼Ñ." #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿ĐµÑ€ĐµĐ¼ĐµÑÑ‚Đ¸Ñ‚ÑŒ ĐºĐ¾Đ¿Đ¸Ñ (%(instance_id)s) Đ½Đ° Ñ‚ĐµĐºÑƒÑ‰Đ¸Đ¹ ÑƒĐ·ĐµĐ» (%(host)s)." #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "ĐĐ¾Đ¿Đ¸Đ¸ Đ½ĐµĐ¾Đ±Ñ…Đ¾Đ´Đ¸Đ¼Đ° Đ½Đ¾Đ²Đ°Ñ Đ²ĐµÑ€ÑĐ¸Ñ Đ³Đ¸Đ¿ĐµÑ€Đ²Đ¸Đ·Đ¾Ñ€Đ°, Đ²Đ¼ĐµÑÑ‚Đ¾ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ½Đ¾Đ¹." #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" "ĐŸÑ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ½Ñ‹Đ¹ Đ°Đ´Ñ€ĐµÑ Đ´Đ¸ÑĐºĐ° (%(path)s) ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚, Đ½Đ¾ Đ¾Đ¶Đ¸Đ´Đ°Đ»Đ¾ÑÑŒ, Ñ‡Ñ‚Đ¾ " "Đ¾Ñ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đµ Ñ€Đ°Đ·Đ¼ĐµÑ‰ĐµĐ½Đ¸Đµ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ½Đ¾Đ³Đ¾ уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ° (%(path)s)." #: nova/exception.py:433 #, fuzzy, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đµ Ñ€Đ°Đ·Đ¼ĐµÑ‰ĐµĐ½Đ¸Đµ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ½Đ¾Đ³Đ¾ уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ° (%(path)s)." #: nova/exception.py:438 #, fuzzy, python-format msgid "The supplied device (%(device)s) is busy." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đµ Ñ€Đ°Đ·Đ¼ĐµÑ‰ĐµĐ½Đ¸Đµ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ½Đ¾Đ³Đ¾ уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ° (%(path)s)." #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s Đ½Đµ ÑĐ²Đ»ÑĐµÑ‚ÑÑ Đ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¼ IP-Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ Đ²4/6." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "Đ¤Đ¾Ñ€Đ¼Đ°Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ диÑĐºĐ° %(disk_format)s Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "ĐĐ±Ñ€Đ°Đ· %(image_id)s Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼: %(reason)s" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ°: %(reason)s" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "Ec2 id %(ec2_id)s Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼." #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ cidr %(cidr)s." #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "ĐºĐ¾Đ¿Đ¸Ñ - %s Đ½Đµ Đ¿Ñ€ĐµĐ´ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "РеÑÑƒÑ€Ñ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Đ¢Đ¾Đ¼ %(volume_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "Đ¡Đ½Đ¸Đ¼Đ¾Đº %(snapshot_id)s Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ диÑĐº Đ² %(location)s" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ¾Đ±Ñ€Đ°Đ±Đ¾Ñ‚Ñ‡Đ¸Đº Đ´Đ»Ñ Ñ‚Đ¾Đ¼Đ° %(driver_type)s." #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ¾Đ±Ñ€Đ°Đ· href %(image_href)s." #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "ĐĐ±Ñ€Đ°Đ· %(image_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "ĐŸÑ€Đ¾ĐµĐºÑ‚ %(project_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ SR Đ´Đ»Ñ Ñ‡Ñ‚ĐµĐ½Đ¸Ñ/Đ·Đ°Đ¿Đ¸Ñи VDI." #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "Đ¡ĐµÑ‚ÑŒ %(network_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:566 #, fuzzy, python-format msgid "Network %(network_id)s is still in use." msgstr "Đ¡ĐµÑ‚ÑŒ %(network_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "%(req)s Đ½ĐµĐ¾Đ±Ñ…Đ¾Đ´Đ¸Đ¼Đ¾ Đ´Đ»Ñ ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ ÑĐµÑ‚Đ¸." #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "Đ¡ĐµÑ‚ÑŒ %(network_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "Đ¡Đ½Đ¸Đ¼Đ¾Đº %(snapshot_id)s Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ Đ¼Đ¾ÑÑ‚Đ° %(bridge)s" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ uuid %(uuid)s" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Ñ cidr %(cidr)s." #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/exception.py:598 msgid "No networks defined." msgstr "Đ¡ĐµÑ‚Đ¸ Đ½Đµ Đ¾Đ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Ñ‹." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, fuzzy, python-format msgid "Port %(port_id)s is still in use." msgstr "Đ¡ĐµÑ‚ÑŒ %(network_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/exception.py:637 #, fuzzy, python-format msgid "No free port available for instance %(instance)s." msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, fuzzy, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %(public_ip)s ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Ñ„Đ¸ĐºÑĐ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đ¹ IP-Đ°Đ´Ñ€ĐµÑ %(address)s." #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "Đ¢Đ¸Đ¿ Ñ‚Đ¾Đ¼Đ° %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "Đ—Đ°Đ¿Đ¸ÑÑŒ DNS %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚ Đ² Đ´Đ¾Đ¼ĐµĐ½Đµ %(domain)s." #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "Đ˜Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñ %(interface)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Đ¡Đ»ÑƒĐ¶Đ±Đ° %(service_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "Đ£Đ·ĐµĐ» %(host)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "Đ£Đ·ĐµĐ» Ñompute %(host)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "ĐĐ²Đ¾Ñ‚Đ° Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "ĐĐ²Đ¾Ñ‚Đ° Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° %(project_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:812 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "ĐлаÑÑ %(class_name)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½: %(exception)s" #: nova/exception.py:816 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "ĐĐ²Đ¾Ñ‚Đ° Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° %(project_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:820 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "ĐŸĐ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒ %(user_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:824 #, fuzzy, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "РаÑÑˆĐ¸Ñ€ĐµĐ½Đ½Ñ‹Đ¹ Ñ€ĐµÑурÑ: %s" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %(security_group_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %(security_group_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° " "%(project_id)s." #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ Ñ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾Đ¼ %(rule_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %(security_group_id)s ÑƒĐ¶Đµ аÑÑĐ¾Ñ†Đ¸Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ° Ñ ĐºĐ¾Đ¿Đ¸ĐµĐ¹ " "%(instance_id)s" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %(security_group_id)s Đ½Đµ аÑÑĐ¾Ñ†Đ¸Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ° Ñ ĐºĐ¾Đ¿Đ¸ĐµĐ¹ " "%(instance_id)s" #: nova/exception.py:857 #, fuzzy, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ Ñ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾Đ¼ %(rule_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "ĐŸĐµÑ€ĐµĐ¼ĐµÑ‰ĐµĐ½Đ¸Đµ %(migration_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾." #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "ĐŸĐµÑ€ĐµĐ¼ĐµÑ‰ĐµĐ½Đ¸Đµ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ² ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đ¸ %(status)s." #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "ĐŸÑƒĐ» ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ %(pool_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "ĐĐ¾Đ½ÑĐ¾Đ»ÑŒ %(console_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "ĐĐ¾Đ½ÑĐ¾Đ»ÑŒ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "ĐĐ¾Đ½ÑĐ¾Đ»ÑŒ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ² Đ¿ÑƒĐ»Đµ %(pool_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Ñ‚Đ¸Đ¿ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ %(console_type)s " #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "Ñ‚Đ¾Đ¼ Đ³Ñ€ÑƒĐ¿Đ¿Ñ‹ %s Đ½Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Đе Đ½Đ°Đ¹Đ´ĐµĐ½ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "Đ¤Đ°Đ¹Đ» %(file_path)s Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" "Đе Đ½Đ°Đ¹Đ´ĐµĐ½ Đ²Đ¸Ñ€Ñ‚ÑƒĐ°Đ»ÑŒĐ½Ñ‹Đ¹ Đ¿ĐµÑ€ĐµĐºĐ»ÑÑ‡Đ°Ñ‚ĐµĐ»ÑŒ аÑÑĐ¾Ñ†Đ¸Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đ¹ Ñ ÑĐµÑ‚ĐµĐ²Ñ‹Đ¼ Đ°Đ´Đ°Đ¿Ñ‚ĐµÑ€Đ¾Đ¼ " "%(adapter)s." #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "Đ¡ĐµÑ‚ĐµĐ²Đ¾Đ¹ Đ°Đ´Đ°Đ¿Ñ‚ĐµÑ€ %(adapter)s Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "ĐлаÑÑ %(class_name)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½: %(exception)s" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "Đ”ĐµĐ¹ÑÑ‚Đ²Đ¸Đµ Đ½Đµ Ñ€Đ°Đ·Ñ€ĐµÑˆĐµĐ½Đ¾." #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, fuzzy, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "%(path)s Ñ€Đ°ÑĐ¿Đ¾Đ»Đ°Đ³Đ°ĐµÑ‚ÑÑ Đ½Đ° Đ¾Đ±Ñ‰ĐµĐ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đ¾Đ¼ Đ½Đ°ĐºĐ¾Đ¿Đ¸Ñ‚ĐµĐ»Đµ: %(reason)s" #: nova/exception.py:1049 #, fuzzy, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "%(path)s Ñ€Đ°ÑĐ¿Đ¾Đ»Đ°Đ³Đ°ĐµÑ‚ÑÑ Đ½Đ° Đ¾Đ±Ñ‰ĐµĐ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đ¾Đ¼ Đ½Đ°ĐºĐ¾Đ¿Đ¸Ñ‚ĐµĐ»Đµ: %(reason)s" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "ĐĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Đ¾Đµ Ñ‚ĐµĐ»Đ¾ ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Ñ: %(reason)s" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ ĐºĐ¾Đ½Ñ„Đ¸Đ³ÑƒÑ€Đ°Ñ†Đ¸Ñ Đ¿Đ¾ Đ°Đ´Ñ€ĐµÑу %(path)s" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 #, fuzzy msgid "When resizing, instances must change flavor!" msgstr "ĐŸÑ€Đ¸ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đ¸ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ°, ĐºĐ¾Đ¿Đ¸Đ¸ Đ´Đ¾Đ»Đ¶Đ½Ñ‹ Đ¸Đ·Đ¼ĐµĐ½Đ¸Ñ‚ÑŒ Ñ€Đ°Đ·Đ¼ĐµÑ€!" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "ĐĐµĐ´Đ¾ÑÑ‚Đ°Ñ‚Đ¾Ñ‡Đ½Đ¾ Đ¿Đ°Đ¼ÑÑ‚Đ¸ Đ½Đ° ÑƒĐ·Đ»Đµ ÑĐµÑ‚Đ¸ compute Đ´Đ»Ñ Đ·Đ°Đ¿ÑƒÑĐºĐ° %(uuid)s." #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "Đ”Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑƒĐ·ĐµĐ» Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½. %(reason)s" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, fuzzy, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½Đ° ĐºĐ²Đ¾Ñ‚Đ° Đ´Đ»Ñ %(pid)s, Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ²Ñ‹Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ÑŒ %(min_count)s ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/exception.py:1116 #, fuzzy msgid "Maximum number of floating ips exceeded" msgstr "Đ’Ñ‹Đ±Ñ€Đ°Đ½Đ¾ Đ¼Đ°ĐºÑ. ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ ÑƒĐ·Đ»Đ¾Đ² (%d)" #: nova/exception.py:1120 #, fuzzy msgid "Maximum number of fixed ips exceeded" msgstr "Đ’Ñ‹Đ±Ñ€Đ°Đ½Đ¾ Đ¼Đ°ĐºÑ. ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ ÑƒĐ·Đ»Đ¾Đ² (%d)" #: nova/exception.py:1124 #, fuzzy, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "Đ’Ñ‹Đ±Ñ€Đ°Đ½Đ¾ Đ¼Đ°ĐºÑ. ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ ÑƒĐ·Đ»Đ¾Đ² (%d)" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 #, fuzzy msgid "Maximum number of key pairs exceeded" msgstr "Đ’Ñ‹Đ±Ñ€Đ°Đ½Đ¾ Đ¼Đ°ĐºÑ. ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ ÑƒĐ·Đ»Đ¾Đ² (%d)" #: nova/exception.py:1145 #, fuzzy msgid "Maximum number of security groups or rules exceeded" msgstr "Đ’Ñ‹Đ±Ñ€Đ°Đ½Đ¾ Đ¼Đ°ĐºÑ. ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ ÑƒĐ·Đ»Đ¾Đ² (%d)" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, fuzzy, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ·Đ½Đ°Ñ‡Đ¸Ñ‚ÑŒ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¾Ñ€Đ°. ĐĐ¾Đ¿Đ¸Ñ %s Đ½Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "ĐĐ¾Đ½ÑĐ¾Đ»ÑŒ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Đ¢Đ¾Đ¼ %(volume_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "Đ¡Đ½Đ¸Đ¼Đ¾Đº %(snapshot_id)s Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "ĐĐ±Ñ€Đ°Đ· %(image_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image)s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image)s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "ĐŸĐ¾Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ %(volume_id)s Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ½Đ° %(device)s" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, fuzzy, python-format msgid "The CA file for %(project)s could not be found" msgstr "ĐĐ²Đ¾Ñ‚Đ° Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° %(project_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/exception.py:1304 #, fuzzy, python-format msgid "The CRL file for %(project)s could not be found" msgstr "ĐŸÑ€Đ¾ĐµĐºÑ‚ %(project_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ° Đ² Ñ€ĐµĐ¶Đ¸Đ¼ Đ²Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ° Đ² Ñ€ĐµĐ¶Đ¸Đ¼ Đ²Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ" #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "Đ¢Đ¸Đ¿ ĐºĐ¾Đ¿Đ¸Đ¸ %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "ĐжидалÑÑ Đ¾Đ±ÑĐµĐºÑ‚ Ñ‚Đ¸Đ¿Đ°: %s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Ñ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ´Đ»Ñ ip: %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ÑƒĐ·Đ»Đ° ÑĐµÑ‚Đ¸ (Đ²ĐµÑ€ÑĐ¸Ñ %(vcs_string)s) %(topic)s" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Đ¡Đ»ÑƒĐ¶Đ±Đ° Đ·Đ°Đ²ĐµÑ€ÑˆĐ¸Đ»Đ° Ñ€Đ°Đ±Đ¾Ñ‚Ñƒ из-за Đ¾Ñ‚ÑутÑÑ‚Đ²Đ¸Ñ Đ·Đ°Đ¿Đ¸Ñи Đ±Đ°Đ·Ñ‹ Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ²Đ½ÑƒÑ‚Ñ€ĐµĐ½Đ½Đ¸Đ¹ Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñ: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "ĐжидалÑÑ Đ¾Đ±ÑĐµĐºÑ‚ Ñ‚Đ¸Đ¿Đ°: %s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ°Ñ server_string: %s" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, fuzzy, python-format msgid "Reloading cached file %s" msgstr "Đ’Ñ‹Đ³Ñ€ÑƒĐ·ĐºĐ° Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, fuzzy, python-format msgid "Could not remove tmpdir: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ½Ñ‚ĐµĐ¹Đ½ĐµÑ€Đ°: %s" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, fuzzy, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ %(name)s Đ½Đ° %(host)s:%(port)s" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ² ÑĐµÑ€Đ²ĐµÑ€Đ° WSGI." #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "Đ¡ĐµÑ€Đ²ĐµÑ€ WSGI Đ±Ñ‹Đ» Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½." #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Đ¡Đ»Đ¸ÑˆĐºĐ¾Đ¼ Đ¼Đ½Đ¾Đ³Đ¾ Đ½ĐµÑƒĐ´Đ°Ñ‡Đ½Ñ‹Ñ… Đ¿Đ¾Đ¿Ñ‹Ñ‚Đ¾Đº Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸." #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸: %s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Đ¡Đ»Đ¸ÑˆĐºĐ¾Đ¼ Đ¼Đ½Đ¾Đ³Đ¾ Đ½ĐµÑƒĐ´Đ°Ñ‡Đ½Ñ‹Ñ… Đ¿Đ¾Đ¿Ñ‹Ñ‚Đ¾Đº Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "Đ´ĐµĐ¹ÑÑ‚Đ²Đ¸Đµ: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" "ĐĐµĐ°Đ²Ñ‚Đ¾Ñ€Đ¸Đ·Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Đ´Đ»Ñ ĐºĐ¾Đ½Ñ‚Ñ€Đ¾Đ»Đ»ĐµÑ€Đ°=%(controller)s и " "Đ´ĐµĐ¹ÑÑ‚Đ²Đ¸Ñ=%(action)s" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" "ĐĐµĐ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµĐ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ API: ĐºĐ¾Đ½Ñ‚Ñ€Đ¾Đ»Đ»ĐµÑ€ = %(controller)s, Đ´ĐµĐ¹ÑÑ‚Đ²Đ¸Đµ = " "%(action)s" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ ÑĐ½Đ¸Đ¼Đ¾Đº Ñ‚Đ¾Đ¼Đ° %s" #: nova/api/ec2/cloud.py:418 #, fuzzy, python-format msgid "Could not find key pair(s): %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Đ»Đ¸Ñ‡Đ½Đ¾Đ³Đ¾ ĐºĐ»ÑÑ‡Đ°: %s" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¿Đ°Ñ€Ñ‹ ĐºĐ»ÑÑ‡ĐµĐ¹ %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "Đ˜Đ¼Đ¿Đ¾Ñ€Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ ĐºĐ»Ñч %s" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ Đ¿Đ°Ñ€Ñ‹ ĐºĐ»ÑÑ‡ĐµĐ¹ %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾ Đ´Đ»Ñ Đ·Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€Đ¾Đ²." #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ ĐºĐ¾Đ½ÑĐ¾Đ»ÑŒĐ½Ñ‹Đ¹ Đ²Ñ‹Đ²Đ¾Đ´ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ Ñ‚Đ¾Đ¼ из ÑĐ½Đ¸Đ¼ĐºĐ° %s" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Ñ€Đ°Đ·Đ´ĐµĐ»Đ° %s ГБ" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "ĐŸĐ¾Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ %(volume_id)s Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ½Đ° %(device)s" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "ĐÑ‚ÑĐ¾ĐµĐ´Đ¸Đ½Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Đ’Ñ‹Đ´ĐµĐ»Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %(public_ip)s ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "ĐĐ±Ñ€Đ°Đ· Đ´Đ¾Đ»Đ¶ĐµĐ½ Đ±Ñ‹Ñ‚ÑŒ Đ´Đ¾ÑÑ‚ÑƒĐ¿ĐµĐ½" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Ñ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ ĐºĐ¾Đ¿Đ¸Ñ %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ°Ñ†Đ¸Đ¸ Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "Đ—Đ°Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đ¹ Đ¾Đ±Ñ€Đ°Đ· %(image_location)s Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %(image_id)s" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "Đ½Đµ ÑƒĐºĐ°Đ·Đ°Đ½ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒ или Đ³Ñ€ÑƒĐ¿Đ¿Đ°" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ Ñ‚Đ¾Đ»ÑŒĐºĐ¾ Đ³Ñ€ÑƒĐ¿Đ¿Đ° \"Đ²Ñе(all)\"" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ¾ÑĐ²ĐµĐ´Đ¾Đ¼Đ»Ñ‘Đ½Đ½Đ¾ÑÑ‚Đ¸ Đ¾Đ± Đ¾Đ±Ñ€Đ°Đ·Đµ %s" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 #, fuzzy msgid "Expecting a list of resources" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "ĐºĐ¾Đ¿Đ¸Ñ - %s Đ½Đµ Đ¿Ñ€ĐµĐ´ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 #, fuzzy msgid "Expecting a list of tagSets" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 #, fuzzy msgid "Invalid CIDR" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ cidr %(cidr)s." #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Ñ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ´Đ»Ñ ip: %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" "ĐŸÑ€Đ¾Đ¸Đ·Đ¾ÑˆĐ»Đ° Đ½ĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Đ°Ñ Đ¾ÑˆĐ¸Đ±ĐºĐ°. ĐŸĐ¾Đ¶Đ°Đ»ÑƒĐ¹ÑÑ‚Đ°, Đ¿Đ¾Đ¿Ñ‹Ñ‚Đ°Đ¹Ñ‚ĐµÑÑŒ Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ¸Ñ‚ÑŒ Đ²Đ°Ñˆ " "Đ·Đ°Đ¿Ñ€Đ¾Ñ." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 #, fuzzy msgid "Invalid proxy request signature." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ: %s" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Ñ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ´Đ»Ñ ip: %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "ĐĐ±Đ½Đ°Ñ€ÑƒĐ¶ĐµĐ½Đ° Đ¾ÑˆĐ¸Đ±ĐºĐ°: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s Đ²Đ¾Đ·Đ²Ñ€Đ°Ñ‚Đ¸Đ» Ñ HTTP %(status)d" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" "РаÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Đµ %(ext_name)s: ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Ñ€Đ°ÑÑˆĐ¸Ñ€Đ¸Ñ‚ÑŒ Ñ€ĐµÑÑƒÑ€Ñ %(collection)s: ĐĐµÑ‚ " "Ñ‚Đ°ĐºĐ¾Đ³Đ¾ Ñ€ĐµÑурÑа" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, fuzzy, python-format msgid "v3 API Extension Blacklist: %s" msgstr "Đ—Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %s" #: nova/api/openstack/__init__.py:301 #, fuzzy, python-format msgid "v3 API Extension Whitelist: %s" msgstr "Đ—Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %s" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, fuzzy, python-format msgid "Missing core API extensions: %s" msgstr "Đ—Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %s" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "РаÑÑˆĐ¸Ñ€ĐµĐ½Đ½Ñ‹Đ¹ Ñ€ĐµÑурÑ: %s" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "РаÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Đµ %(ext_name)s Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Đµ Ñ€ĐµÑурÑа: %(collection)s" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "Đ¼Đ°Ñ€ĐºĐµÑ€ [%s] Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "href %s Đ½Đµ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Ñ‚ Đ²ĐµÑ€ÑиÑ" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 #, fuzzy msgid "Invalid image metadata" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đµ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Đµ" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ '%(action)s', ĐºĐ¾Đ³Đ´Đ° ĐºĐ¾Đ¿Đ¸Ñ Đ² %(attr)s %(state)s" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, fuzzy, python-format msgid "Instance is in an invalid state for '%s'" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ² Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đ¼ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đ¸ Đ´Đ»Ñ '%(action)s'" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "ĐÑ‚ĐºĐ»Đ¾Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿Ñ€Đ¾Ñа ÑĐ½Đ¸Đ¼ĐºĐ°, ÑĐ½Đ¸Đ¼ĐºĐ¸ Đ² Đ´Đ°Đ½Đ½Ñ‹Đ¹ Đ¼Đ¾Đ¼ĐµĐ½Ñ‚ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "Đ¡Đ½Đ¸Đ¼ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸ Đ² Đ½Đ°ÑÑ‚Đ¾ÑÑ‰Đ¸Đ¹ Đ¼Đ¾Đ¼ĐµĐ½Ñ‚ Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹." #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "Đ—Đ°Đ³Ñ€ÑƒĐ¶ĐµĐ½Đ½Đ¾Đµ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Đµ: %s" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "Đ—Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %s" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %(ext_factory)s: %(exc)s" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, fuzzy, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %(ext_name)s: %(exc)s" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, fuzzy, python-format msgid "Exception handling resource: %s" msgstr "РаÑÑˆĐ¸Ñ€ĐµĐ½Đ½Ñ‹Đ¹ Ñ€ĐµÑурÑ: %s" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "Đ’ Đ·Đ°Đ¿Ñ€Đ¾Ñе Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½ Đ½Đµ Ñ€Đ°ÑĐ¿Đ¾Đ·Đ½Đ°Đ½Đ½Ñ‹Đ¹ Ñ‚Đ¸Đ¿-ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đ³Đ¾" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "ĐĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Đ¾Đµ Ñ‚ĐµĐ»Đ¾ Đ·Đ°Đ¿Ñ€Đ¾Ñа" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "Đе Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµĐ¼Ñ‹Đ¹ Ñ‚Đ¸Đ¿ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đ³Đ¾" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "ÑĐ»ĐµĐ¼ĐµĐ½Ñ‚ Đ½Đµ ÑĐ²Đ»ÑĐµÑ‚ÑÑ Đ¿Đ¾Ñ‚Đ¾Đ¼ĐºĐ¾Đ¼" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "Đ˜Đ½Đ¸Ñ†Đ¸Đ°Đ»Đ¸Đ·Đ°Ñ†Đ¸Ñ Đ´Đ¸ÑĐ¿ĐµÑ‚Ñ‡ĐµÑ€Đ° Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Đ¹." #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "Đе Đ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ°Ñ Đ¿Đ¾Đ´Đ¿Đ¸ÑÑŒ Đ´Đ»Ñ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ %s" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "Đе Đ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ°Ñ Đ¿Đ¾Đ´Đ¿Đ¸ÑÑŒ Đ´Đ»Ñ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ %s" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "Đ¾Đ±Ñ€Đ°Đ· Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "ĐĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚ Ñ‚ĐµĐ»Đ° Đ·Đ°Đ¿Ñ€Đ¾Ñа" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "Đ¢ĐµĐ»Đ¾ Đ·Đ°Đ¿Ñ€Đ¾Ñа и URI Đ½Đµ ÑĐ¾Đ²Đ¿Đ°Đ´Đ°ÑÑ‚" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "Đ¢ĐµĐ»Đ¾ Đ·Đ°Đ¿Ñ€Đ¾Ñа ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Ñ‚ Đ¸Đ·Đ±Ñ‹Ñ‚Đ¾Ñ‡Đ½Đ¾Đµ ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ Đ¾Đ±ÑĐµĐºÑ‚Đ¾Đ²" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "ĐĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¹ ĐºĐ»Ñч Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ ÑĐ²Đ»ÑĐµÑ‚ÑÑ ÑƒÑ‡Đ°ÑÑ‚Đ½Đ¸ĐºĐ¾Đ¼ Đ·Đ°Đ´Đ°Đ½Đ½Đ¾Đ¹ ÑĐµÑ‚Đ¸" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" "Đ¢Đ¾Đ»ÑŒĐºĐ¾ %(value)s %(verb)s Đ·Đ°Đ¿Ñ€Đ¾Ñ(Đ¾Đ²) Đ¼Đ¾Đ³ÑƒÑ‚ Đ±Ñ‹Ñ‚ÑŒ ÑĐ´ĐµĐ»Đ°Đ½Ñ‹ Đ´Đ»Ñ %(uri)s, " "ĐºĐ°Đ¶Đ´Ñ‹Đµ %(unit_string)s." #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "Đ¡ĐµÑ€Đ²ĐµÑ€ Đ½Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "Đ­Đ»ĐµĐ¼ĐµĐ½Ñ‚ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "Đ£Đ·ĐµĐ» %(host)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, fuzzy, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚: ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ uuid Đ¸Đ¼ĐµĐµÑ‚ Đ½ĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚ (%s)" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚: ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ uuid Đ¸Đ¼ĐµĐµÑ‚ Đ½ĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚ (%s)" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Ñ„Đ¸ĐºÑĐ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đ¹ IP-Đ°Đ´Ñ€ĐµÑ (%s)" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "Đ”ÑƒĐ±Đ»Đ¸ĐºĐ°Ñ‚Ñ‹ ÑĐµÑ‚ĐµĐ¹ (%s) Đ½Đµ Ñ€Đ°Đ·Ñ€ĐµÑˆĐµĐ½Ñ‹" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚: Đ¾Ñ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ %s" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "Đ¡Đ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đµ Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¾Đ²Đ°Đ½Đ¾" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "Đ˜Đ¼Ñ ÑĐµÑ€Đ²ĐµÑ€Đ° Đ½Đµ Đ·Đ°Đ´Đ°Đ½Đ¾" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "ĐŸÑ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½ Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ flavorRef." #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ·Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Ñ‹Đ¹ Đ¾Đ±Ñ€Đ°Đ·" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "ĐŸÑ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½ Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ key_name." #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "Đ¢Đ¾Ñ‡ĐºĐ° Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ°: %s" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "Đ¢Đ¾Ñ‡ĐºĐ° Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ°: %s" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "Đ¡ ĐºĐ¾Đ¿Đ¸ĐµĐ¹ Đ½Đµ Đ¿Ñ€Đ¾Đ¸Đ·Đ²Đ¾Đ´Đ¸Đ»Đ¾ÑÑŒ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đµ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ°." #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ°Ñ€Đ³ÑƒĐ¼ĐµĐ½Ñ‚ Ñ‚Đ¸Đ¿Đ° 'type' Đ´Đ»Ñ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 #, fuzzy msgid "Resize requires a flavor change." msgstr "Đ˜Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đµ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ° Ñ‚Ñ€ĐµĐ±ÑƒĐµÑ‚ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Đ¾Đ±ÑÑ‘Đ¼Đ°." #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "ĐĐ¾Đ¿Đ¸Ñ %(instance_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ°Ñ‚Ñ€Đ¸Đ±ÑƒÑ‚ imageRef" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ°Ñ‚Ñ€Đ¸Đ±ÑƒÑ‚ flavorRef" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "adminPass Đ½Đµ Đ±Ñ‹Đ» Đ·Đ°Đ´Đ°Đ½" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "Đ—Đ°Đ¿Ñ€Đ¾Ñ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ° Đ¸Đ¼ĐµĐµÑ‚ Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ°Ñ‚Ñ€Đ¸Đ±ÑƒÑ‚ 'flavorRef'." #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "Đ—Đ°Đ¿Ñ€Đ¾ÑÑ‹ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đµ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ° Ñ‚Ñ€ĐµĐ±ÑƒÑÑ‚ Đ°Ñ‚Ñ€Đ¸Đ±ÑƒÑ‚ 'flavorRef'." #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đµ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Đµ" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ adminPass" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€Đ¾Đ² '%(unk_opt_str)s' из Đ·Đ°Đ¿Ñ€Đ¾Ñа" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "Đ¡ĐµÑ€Đ²ĐµÑ€ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ¼ĐµÑ‰ĐµĐ½Đ¸Ñ %s" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, fuzzy, python-format msgid "Cannot show aggregate: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ°: %(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, fuzzy, python-format msgid "Cannot update aggregate: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ°: %(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, fuzzy, python-format msgid "Cannot delete aggregate: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ°: %(resp)r" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ ÑĐ½Đ¸Đ¼Đ¾Đº Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 #, fuzzy msgid "Network driver does not support this function." msgstr "Đ”Ñ€Đ°Đ¹Đ²ĐµÑ€ Đ³Đ¸Đ¿ĐµÑ€Đ²Đ¸Đ·Đ¾Ñ€Đ° Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ±Ñ€Đ°Đ½Đ´Đ¼Đ°ÑƒÑÑ€Đ°" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "Đ°Ñ‚Ñ‚Ñ€Đ¸Đ±ÑƒÑ‚ Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñа VLAN %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "ĐŸÑ€Đ°Đ²Đ¸Đ»Đ¾ (%s) Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 #, fuzzy msgid "Cell name cannot be empty" msgstr "ĐĐ°Đ¸Đ¼ĐµĐ½Đ¾Đ²Đ°Đ½Đ¸Đµ Đ³Ñ€ÑƒĐ¿Đ¿Ñ‹ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ¾Ñ‚ÑутÑÑ‚Đ²Đ¾Đ²Đ°Ñ‚ÑŒ" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 #, fuzzy msgid "No cell information in request" msgstr "block_device_mapping %s" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "ĐĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Đ°Ñ Ñ†ĐµĐ¿Đ¾Ñ‡ĐºĐ°: %r" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ иÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ÑŒ Đ³Đ»Đ¾Đ±Đ°Đ»ÑŒĐ½Ñ‹Đµ Đ¿Đ¾Đ»Đ½Đ¾Đ¼Đ¾Ñ‡Đ¸Ñ %(role_id)s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "ĐºĐ¾Đ¿Đ¸Ñ - %s Đ½Đµ Đ¿Ñ€ĐµĐ´ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Đ¡ĐµÑ€Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚ %(certificate_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/api/openstack/compute/contrib/flavor_access.py:94 #, fuzzy msgid "Flavor not found." msgstr "Đ¡ĐµÑ€Đ²ĐµÑ€ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 #, fuzzy msgid "No request body" msgstr "ĐĐµÑ‚ Ñ‚ĐµĐ»Đ° Đ·Đ°Đ¿Ñ€Đ¾Ñа" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "ĐĐµÑ‚ Ñ‚ĐµĐ»Đ° Đ·Đ°Đ¿Ñ€Đ¾Ñа" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "Đ¢Đ¸Đ¿ Ñ‚Đ¾Đ¼Đ° %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "ĐĐ´Ñ€ĐµÑ Đ½Đµ Đ·Đ°Đ´Đ°Đ½" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %(security_group_id)s Đ½Đµ аÑÑĐ¾Ñ†Đ¸Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ° Ñ ĐºĐ¾Đ¿Đ¸ĐµĐ¹ " "%(instance_id)s" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€ Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đµ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đµ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ: '%s'" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, fuzzy, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "ĐŸĐµÑ€ĐµĐ²Đ¾Đ´ ÑƒĐ·Đ»Đ° %(host)s Đ² %(state)s." #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ Đ²Ñ‹Đ·Đ¾Đ² getter %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Ñ ÑƒĐ·Đ»Đ°" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, fuzzy, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "Đ¡Đ»ÑƒĐ¶Đ±Đ° %(service_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, fuzzy, python-format msgid "No hypervisor matching '%s' could be found." msgstr "ĐŸĐ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒ %(user_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đµ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Đµ" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ°Ñ€Đ³ÑƒĐ¼ĐµĐ½Ñ‚ 'networkId' Đ´Đ»Ñ addFixedIp" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ°Ñ€Đ³ÑƒĐ¼ĐµĐ½Ñ‚ 'address' Đ´Đ»Ñ removeFixedIp" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "ĐÑ‚Đ¾Đ±Ñ€Đ°Đ¶ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, fuzzy, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 #, fuzzy msgid "Failed to update usages deallocating network." msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Ñ‚Đ¾Đ¼Đ° Đ² базе Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 #, fuzzy msgid "No CIDR requested" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ·Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Ñ‹Đ¹ Đ¾Đ±Ñ€Đ°Đ·" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "РеÑÑƒÑ€Ñ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 #, fuzzy msgid "Quota exceeded, too many networks." msgstr "Đ”Đ¾Đ±Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ³Ñ€ÑƒĐ¿Đ¿Ñ‹ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸: %r" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "ĐĐµĐ´Đ¾ÑÑ‚Đ°Ñ‚Đ¾Ñ‡Đ½Đ¾ Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€Đ¾Đ² Đ´Đ»Ñ ÑĐ±Đ¾Ñ€Đ° Đ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Đ¾Đ³Đ¾ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ°." #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Đ­Ñ‚Đ¾ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾ ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚ Đ² Đ³Ñ€ÑƒĐ¿Đ¿Đµ %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "ĐÑ‚Đ¾Đ±Ñ€Đ°Đ¶ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼ %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 #, fuzzy msgid "security group default rule not found" msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ Ñ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾Đ¼ %(rule_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ¿Ñ€ĐµÑ„Đ¸ĐºÑ Đ´Đ»Ñ to_global_ipv6: %s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ Đ½Đµ Đ·Đ°Đ´Đ°Đ½Đ°" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "ĐĐ°Đ¸Đ¼ĐµĐ½Đ¾Đ²Đ°Đ½Đ¸Đµ Đ³Ñ€ÑƒĐ¿Đ¿Ñ‹ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ¾Ñ‚ÑутÑÑ‚Đ²Đ¾Đ²Đ°Ñ‚ÑŒ" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "vol=%s" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼: %s" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "ĐĐ¾Đ¿Đ¸Ñ %s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/api/openstack/compute/contrib/volumes.py:383 #, fuzzy, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚: ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ uuid Đ¸Đ¼ĐµĐµÑ‚ Đ½ĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚ (%s)" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "ĐŸÑ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ %(volume_id)s Đº ĐºĐ¾Đ¿Đ¸Đ¸ %(server_id)s Đ½Đ° %(device)s" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ ÑĐ½Đ¸Đ¼Đ¾Đº из Ñ‚Đ¾Đ¼Đ° %s" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, fuzzy, python-format msgid "Loaded extension %s" msgstr "Đ—Đ°Đ³Ñ€ÑƒĐ¶ĐµĐ½Đ½Đ¾Đµ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Đµ: %s" #: nova/api/openstack/compute/plugins/__init__.py:49 #, fuzzy, python-format msgid "Ext version: %i" msgstr "Đ’ĐµÑ€ÑĐ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ° ĐºĐ¾Đ¿Đ¸Đ¸: %s" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "Đ½Đµ Đ¾Đ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½ Đ¼ĐµÑ‚Đ¾Đ´ Đ´Đ»Ñ ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Ñ: %s" #: nova/cells/messaging.py:436 #, fuzzy, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %(ext_factory)s: %(exc)s" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "Đ½Đµ Đ¾Đ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½ Đ¼ĐµÑ‚Đ¾Đ´ Đ´Đ»Ñ ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Ñ: %s" #: nova/cells/messaging.py:535 #, fuzzy, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "Đ’Ñ‹Đ³Ñ€ÑƒĐ·ĐºĐ° Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Đе Đ½Đ°Đ¹Đ´ĐµĐ½ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Đе Đ½Đ°Đ¹Đ´ĐµĐ½ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "Đ’Đ¾Đ·Đ²Ñ€Đ°Ñ‚ иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ %s Đ²Ñ‹Đ·Ñ‹Đ²Đ°ÑÑ‰ĐµĐ¼Ñƒ" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Đе Đ½Đ°Đ¹Đ´ĐµĐ½ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº VPN Đ´Đ»Ñ %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ ÑĐ¾Đ·Đ´Đ°Ñ‚ÑŒ Ñ‚Đ¾Đ¼" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, fuzzy, python-format msgid "deployment to node %s failed" msgstr "ÑĐ»ĐµĐ¼ĐµĐ½Ñ‚ Đ½Đµ ÑĐ²Đ»ÑĐµÑ‚ÑÑ Đ¿Đ¾Ñ‚Đ¾Đ¼ĐºĐ¾Đ¼" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¾ %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° БД: %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "Đ’Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "Đ’Ñ‹Đ´ĐµĐ»Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "Đ¢Đ¸Đ¿ Ñ‚Đ¾Đ¼Đ° %(name)s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚." #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "IPv4" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "IPv6" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "Đ¿Ñ€Đ¾ĐµĐºÑ‚" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "Đ¡ĐµÑ‚ÑŒ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "Đ¡Đ»ÑƒĐ¶Đ±Đ° %(service_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "Đ¡Đ»ÑƒĐ¶Đ±Đ° %(service_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°." #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "ĐĐµĐ¿Ñ€ĐµĐ´Đ²Đ¸Đ´ĐµĐ½Đ½Đ°Ñ Đ¾ÑˆĐ¸Đ±ĐºĐ°: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 #, fuzzy msgid "PROJECT" msgstr "Đ¿Ñ€Đ¾ĐµĐºÑ‚" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 #, fuzzy msgid "Unknown error" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸" #: nova/cmd/manage.py:955 #, fuzzy, python-format msgid "%s created" msgstr "Đ¢Đ°Đ±Đ»Đ¸Ñ†Đ° |%s| Đ½Đµ ÑĐ¾Đ·Đ´Đ°Đ½Đ°!" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° БД: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "Ñ‚Đ¸Đ¿ = %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 #, fuzzy msgid "Cannot run any more instances of this type." msgstr "" "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½Đ° ĐºĐ²Đ¾Ñ‚Đ° ĐºĐ¾Đ¿Đ¸Đ¹. Đ’Ñ‹ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚Đµ Đ·Đ°Đ¿ÑƒÑÑ‚Đ¸Ñ‚ÑŒ Đ´Đ¾Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ĐµĐ»ÑŒĐ½Ñ‹Đµ ĐºĐ¾Đ¿Đ¸Đ¸ ÑÑ‚Đ¾Đ³Đ¾ " "Ñ‚Đ¸Đ¿Đ°." #: nova/compute/api.py:373 #, fuzzy, python-format msgid "Can only run %s more instances of this type." msgstr "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½Đ° ĐºĐ²Đ¾Ñ‚Đ° ĐºĐ¾Đ¿Đ¸Đ¹. Đ’Ñ‹ Đ¼Đ¾Đ¶ĐµÑ‚Đµ Đ·Đ°Đ¿ÑƒÑÑ‚Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ»ÑŒĐºĐ¾ %s ĐºĐ¾Đ¿Đ¸Đ¹ ÑÑ‚Đ¾Đ³Đ¾ Ñ‚Đ¸Đ¿Đ°." #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½Đ° ĐºĐ²Đ¾Ñ‚Đ° Đ´Đ»Ñ %(pid)s, Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ½Đ°Đ·Đ½Đ°Ñ‡Đ¸Ñ‚ÑŒ %(num_metadata)s ÑĐ²Đ¾Đ¹ÑÑ‚Đ² " "Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ Đ·Đ°Đ¿ÑƒÑĐº %s ĐºĐ¾Đ¿Đ¸Đ¹..." #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "block_device_mapping %s" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Ñ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Ñ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/compute/api.py:1595 #, fuzzy, python-format msgid "instance's host %s is down, deleting from database" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ ÑƒĐ·ĐµĐ» Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s, Đ½ĐµĐ¼ĐµĐ´Đ»ĐµĐ½Đ½Đ¾Đµ ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Đµ" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "Đ‘ÑƒĐ´ĐµÑ‚ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ·Đ°Đ²ĐµÑ€ÑˆĐ¸Ñ‚ÑŒ Ñ€Đ°Đ±Đ¾Ñ‚Ñƒ %s" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "ĐŸĐ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ¸Ñ‚ÑŒ %s" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "ĐŸĐ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ·Đ°Đ¿ÑƒÑÑ‚Đ¸Ñ‚ÑŒ %s" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "ĐŸĐ¾Đ¸ÑĐº Đ¿Đ¾: %s" #: nova/compute/api.py:2018 #, fuzzy, python-format msgid "snapshot for %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ÑĐ½Đ¸Đ¼ĐºĐ° Đ´Đ»Ñ Đ’Đœ %s" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" "Đ£ÑÑ‚Đ°Ñ€ĐµĐ²ÑˆĐ¸Đ¹ Ñ‚Đ¸Đ¿ ĐºĐ¾Đ¿Đ¸Đ¸ %(current_instance_type_name)s, Đ½Đ¾Đ²Ñ‹Đ¹ Ñ‚Đ¸Đ¿ ĐºĐ¾Đ¿Đ¸Đ¸ " "%(new_instance_type_name)s" #: nova/compute/api.py:2393 #, fuzzy, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½Đ° ĐºĐ²Đ¾Ñ‚Đ° Đ´Đ»Ñ %(pid)s, Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ²Ñ‹Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ÑŒ %(min_count)s ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Đ‘ÑƒĐ´ĐµÑ‚ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ·Đ°Đ²ĐµÑ€ÑˆĐ¸Ñ‚ÑŒ Ñ€Đ°Đ±Đ¾Ñ‚Ñƒ %s" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %s Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ¿ÑƒÑÑ‚Đ¾Đ¹." #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ Đ³Ñ€ÑƒĐ¿Đ¿Ñƒ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ vbd %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ vbd %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ (%s) Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ Đ³Ñ€ÑƒĐ¿Đ¿Ñƒ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "ĐŸÑ€Đ°Đ²Đ¸Đ»Đ¾ (%s) Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾" #: nova/compute/api.py:3769 #, fuzzy msgid "Quota exceeded, too many security group rules." msgstr "Đ”Đ¾Đ±Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ³Ñ€ÑƒĐ¿Đ¿Ñ‹ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸: %r" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° БД: %s" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "ĐĐ¾Đ¿Đ¸Ñ Ñ‚Đ¸Đ¿Đ° %s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Ñ" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, fuzzy, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿ĐµÑ€ĐµĐ¼ĐµÑÑ‚Đ¸Ñ‚ÑŒ ĐºĐ¾Đ¿Đ¸Ñ (%(instance_id)s) Đ½Đ° Ñ‚ĐµĐºÑƒÑ‰Đ¸Đ¹ ÑƒĐ·ĐµĐ» (%(host)s)." #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 #, fuzzy msgid "Hypervisor driver does not support resume guests" msgstr "Đ”Ñ€Đ°Đ¹Đ²ĐµÑ€ Đ³Đ¸Đ¿ĐµÑ€Đ²Đ¸Đ·Đ¾Ñ€Đ° Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ±Ñ€Đ°Đ½Đ´Đ¼Đ°ÑƒÑÑ€Đ°" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "Đ”Ñ€Đ°Đ¹Đ²ĐµÑ€ Đ³Đ¸Đ¿ĐµÑ€Đ²Đ¸Đ·Đ¾Ñ€Đ° Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ±Ñ€Đ°Đ½Đ´Đ¼Đ°ÑƒÑÑ€Đ°" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "ĐĐµĐ¿Ñ€ĐµĐ´Đ²Đ¸Đ´ĐµĐ½Đ½Ñ‹Đ¹ ĐºĐ¾Đ´ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Ñ" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° БД: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ·Đ°Đ¿ÑƒÑĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "ĐŸÑ€Đ¾Đ¿ÑƒÑĐº DiskNotFound: %s" #: nova/compute/manager.py:2140 #, fuzzy, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "ĐŸÑ€Đ¾Đ¿ÑƒÑĐº DiskNotFound: %s" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Đµ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ bdm %s" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ ÑĐ±Đ¾Ñ€ĐºĐ¸ %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Ñ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ´Đ»Ñ ip: %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ ÑĐ½Đ¸Đ¼Đ¾Đº из Ñ‚Đ¾Đ¼Đ° %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/compute/manager.py:2613 #, fuzzy, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" "Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Đ½Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµĐ¼Đ¾Đ¹ ĐºĐ¾Đ¿Đ¸Đ¸: %(instance_uuid)s (ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ: " "%(state)s Đ¾Đ¶Đ¸Đ´Đ°Đ»Đ¾ÑÑŒ: %(running)s)" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 #, fuzzy msgid "Instance disappeared during reboot" msgstr "ĐºĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ°" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "ĐºĐ¾Đ¿Đ¸Ñ %s: Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ°" #: nova/compute/manager.py:2739 #, fuzzy, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" "Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ ÑĐ½Đ¸Đ¼ĐºĐ° Đ½Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµĐ¼Đ¾Đ¹ ĐºĐ¾Đ¿Đ¸Đ¸: %(instance_uuid)s " "(ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ: %(state)s Đ¾Đ¶Đ¸Đ´Đ°Đ»Đ¾ÑÑŒ: %(running)s)" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "ĐĐ°Đ¹Đ´ĐµĐ½Đ¾ %(num_images)d Đ¾Đ±Ñ€Đ°Đ·Đ¾Đ² (Ñ€Đ¾Ñ‚Đ°Ñ†Đ¸Ñ: %(rotation)d)" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ·Đ½Đ°Ñ‡Đ¸Ñ‚ÑŒ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¾Ñ€Đ°. ĐĐ¾Đ¿Đ¸Ñ %s Đ½Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ" #: nova/compute/manager.py:2855 #, fuzzy msgid "Root password set" msgstr "ĐĐ¾Đ¿Đ¸Ñ %s: ĐĐ°Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¸Đµ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¸Đ²Đ½Đ¾Đ³Đ¾ Đ¿Đ°Ñ€Đ¾Đ»Ñ" #: nova/compute/manager.py:2860 #, fuzzy msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "set_admin_password Đ½Đµ Ñ€ĐµĐ°Đ»Đ¸Đ·Đ¾Đ²Đ°Đ½ Đ² ÑÑ‚Đ¾Đ¹ Đ´Ñ€Đ°Đ¹Đ²ĐµÑ€Đµ." #: nova/compute/manager.py:2873 #, fuzzy, python-format msgid "set_admin_password failed: %s" msgstr "set_admin_password Đ½Đµ Ñ€ĐµĐ°Đ»Đ¸Đ·Đ¾Đ²Đ°Đ½ Đ² ÑÑ‚Đ¾Đ¹ Đ´Ñ€Đ°Đ¹Đ²ĐµÑ€Đµ." #: nova/compute/manager.py:2880 #, fuzzy msgid "error setting admin password" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ½Đ°Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¸Ñ Đ¿Đ°Ñ€Đ¾Đ»Ñ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¾Ñ€Đ°" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° БД: %s" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "%s. Đ£ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸ vm_state Đ½Đ° ERROR" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "Đ½Đ°Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¸Đµ ÑĐ¾Đ²Đ¿Đ°Đ´Đ°ĐµÑ‚ Ñ Đ¸ÑÑ‚Đ¾Ñ‡Đ½Đ¸ĐºĐ¾Đ¼!" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "ĐºĐ¾Đ¿Đ¸Ñ %s: Đ¿Ñ€Đ¸Đ½ÑÑ‚Đ¸Đµ Đ´Đ¸Đ°Đ³Đ½Đ¾ÑÑ‚Đ¸ĐºĐ¸" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "Đ’Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸" #: nova/compute/manager.py:3912 #, fuzzy msgid "Inject network info" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ ĐºĐ¾Đ½ÑĐ¾Đ»ÑŒĐ½Ñ‹Đ¹ Đ²Ñ‹Đ²Đ¾Đ´ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "ĐºĐ¾Đ¿Đ¸Ñ %s: Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ vnc" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "ĐºĐ¾Đ¿Đ¸Ñ %s: Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ vnc" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "ĐÑ‚ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Đµ Ñ‚Đ¾Đ¼Đ° Đ¾Ñ‚ Đ½ĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Đ¾Đ¹ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "ĐŸĐ¾Đ¿Ñ‹Ñ‚ĐºĐ° ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Ñ Đ½ĐµÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒÑÑ‰ĐµĐ¹ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ %(console_id)s." #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, fuzzy, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 #, fuzzy msgid "_post_live_migration() is started.." msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" "Đ’Ñ‹ Đ¼Đ¾Đ¶ĐµÑ‚Đµ ÑƒĐ²Đ¸Đ´ĐµÑ‚ÑŒ Đ¾ÑˆĐ¸Đ±ĐºÑƒ \"libvirt: Đ¾ÑˆĐ¸Đ±ĐºĐ° QEMU: Đ”Đ¾Đ¼ĐµĐ½ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½: " "Đ¾Ñ‚ÑутÑÑ‚Đ²ÑƒĐµÑ‚ Đ´Đ¾Đ¼ĐµĐ½ Ñ ÑĐ¾Đ¾Ñ‚Đ²ĐµÑ‚ÑÑ‚Đ²ÑƒÑÑ‰Đ¸Đ¼ Đ¸Đ¼ĐµĐ½ĐµĐ¼.\" Đ­Ñ‚Đ° Đ¾ÑˆĐ¸Đ±ĐºĐ° Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ " "Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ Đ¿Ñ€Đ¾Đ¿ÑƒÑ‰ĐµĐ½Đ°." #: nova/compute/manager.py:4654 #, fuzzy msgid "Post operation of migration started" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" "ĐĐ°Đ¹Đ´ĐµĐ½Ñ‹ %(migration_count)d Đ½ĐµĐ¿Đ¾Đ´Ñ‚Đ²ĐµÑ€Đ¶Đ´Ñ‘Đ½Đ½Ñ‹Ñ… Đ¿ĐµÑ€ĐµĐ¼ĐµÑ‰ĐµĐ½Đ¸Đ¹, ÑÑ‚Đ°Ñ€ÑˆĐµ " "%(confirm_window)d ÑĐµĐºÑƒĐ½Đ´" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, fuzzy, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "Đ—Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Đµ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ Đ’Đœ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_uuid)s" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 #, fuzzy msgid "In ERROR state" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° БД: %s" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ²Ñ€ĐµĐ¼ĐµĐ½Đ½Ñ‹Ñ… Đ´Đ°Đ½Đ½Ñ‹Ñ… иÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸Ñ Đ¿Đ¾Đ»Đ¾ÑÑ‹ Đ¿Ñ€Đ¾Đ¿ÑƒÑĐºĐ°Đ½Đ¸Ñ" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ²Ñ€ĐµĐ¼ĐµĐ½Đ½Ñ‹Ñ… Đ´Đ°Đ½Đ½Ñ‹Ñ… иÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸Ñ Đ¿Đ¾Đ»Đ¾ÑÑ‹ Đ¿Ñ€Đ¾Đ¿ÑƒÑĐºĐ°Đ½Đ¸Ñ" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" "ĐĐ°Đ¹Đ´ĐµĐ½Đ¾ %(num_db_instances)s Đ² базе Đ´Đ°Đ½Đ½Ñ‹Ñ… и %(num_vm_instances)s Đ² " "Đ³Đ¸Đ¿ĐµÑ€Đ²Đ¸Đ·Đ¾Ñ€Đµ." #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "ĐºĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ°" #: nova/compute/manager.py:5374 #, fuzzy msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "FLAGS.reclaim_instance_interval <= 0, Đ¿Ñ€Đ¾Đ¿ÑƒÑĐº..." #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "LoggingVolumeDriver: %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, fuzzy, python-format msgid "No service record for host %s" msgstr "ĐĐµÑ‚ ÑĐ»ÑƒĐ¶Đ±Ñ‹ Đ´Đ»Ñ compute ID %s" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "%s. Đ£ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸ vm_state Đ½Đ° ERROR" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, fuzzy, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "Đ—Đ°Đ¿Đ¸ÑÑŒ Compute_service ÑĐ¾Đ·Đ´Đ°Đ½Đ° Đ´Đ»Ñ %s " #: nova/compute/resource_tracker.py:378 #, fuzzy, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "Đ—Đ°Đ¿Đ¸ÑÑŒ Compute_service Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ° Đ´Đ»Ñ %s " #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¿Đ°Ñ€Ñ‹ ĐºĐ»ÑÑ‡ĐµĐ¹ %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 #, fuzzy msgid "Instance not resizing, skipping migration." msgstr "Đ’Đœ Đ½Đµ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°, Đ¿Ñ€Đ¾Đ¿ÑƒÑĐº Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ°Ñ†Đ¸Đ¸..." #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ ÑƒĐ·ĐµĐ» Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 #, fuzzy msgid "Invalid block_device_mapping_destroy invocation" msgstr "block_device_mapping %s" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "Đ”Đ¾Đ±Đ°Đ²Đ»ĐµĐ½Đ¸Đµ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "ĐŸĐ¾Đ¿Ñ‹Ñ‚ĐºĐ° ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Ñ Đ½ĐµÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒÑÑ‰ĐµĐ¹ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ %(console_id)s." #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ ĐºĐ¾Đ½ÑĐ¾Đ»Đ¸ %(console_id)s." #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Ñ‚Đ¾Đ¼" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ ÑĐ±Đ¾Ñ€ĐºĐ¸ xvp conf" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ° xvp" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "Đ—Đ°Đ¿ÑƒÑĐº xvp" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ¿ÑƒÑĐºĐ° xvp: %s" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ xvp" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "xvp Đ½Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ..." #: nova/console/xvp.py:203 #, fuzzy msgid "Failed to run xvp." msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ²Đ¾Đ·Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ ÑĐµÑ€Đ²ĐµÑ€Đ°" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "ĐĐµÑ€Đ°ÑĐ¿Đ¾Đ·Đ½Đ°Đ½Đ½Đ¾Đµ Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¸Đµ read_deleted '%s'" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ Ñ‚ĐµĐ»Đ°" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 #, fuzzy msgid "Unsupported id columns type" msgstr "Đе Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµĐ¼Ñ‹Đ¹ Ñ‚Đ¸Đ¿ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đ³Đ¾" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ %(image_location)s Đ² %(image_path)s" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Ñ€Đ°ÑÑˆĐ¸Ñ„Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ %(image_location)s Đ² %(image_path)s" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¸Đ·Đ²Đ»ĐµÑ‡ĐµĐ½Đ¸Ñ %(image_location)s Đ² %(image_path)s" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ²Ñ‹Đ³Ñ€ÑƒĐ·ĐºĐ¸ %(image_location)s Đ² %(image_path)s" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Đ»Đ¸Ñ‡Đ½Đ¾Đ³Đ¾ ĐºĐ»ÑÑ‡Đ°: %s" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Đ²ĐµĐºÑ‚Đ¾Ñ€Đ° Đ¸Đ½Đ¸Ñ†Đ¸Đ°Đ»Đ¸Đ·Đ°Ñ†Đ¸Đ¸: %s" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Ñ„Đ°Đ¹Đ»Đ° Đ¾Đ±Ñ€Đ°Đ·Đ° %(image_file)s: %(err)s" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "Đ’ Đ¾Đ±Ñ€Đ°Đ·Đµ Đ½ĐµĐ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Ñ‹Đµ Đ¸Đ¼ĐµĐ½Đ° Ñ„Đ°Đ¹Đ»Đ¾Đ²" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ mac Đ´Đ»Ñ to_global_ipv6: %s" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ¿Ñ€ĐµÑ„Đ¸ĐºÑ Đ´Đ»Ñ to_global_ipv6: %s" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ project_id Đ´Đ»Ñ to_global_ipv6: %s" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %(public_ip)s ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "LoggingVolumeDriver: %s" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "ĐĐ´Ñ€ĐµÑ |%(address)s| Đ½Đµ Đ²Ñ‹Đ´ĐµĐ»ĐµĐ½" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "ĐĐ´Ñ€ĐµÑ |%(address)s| Đ½Đµ Đ²Ñ‹Đ´ĐµĐ»ĐµĐ½ Đ²Đ°ÑˆĐµĐ¼Ñƒ Đ¿Ñ€Đ¾ĐµĐºÑ‚Ñƒ |%(project)s|" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %(public_ip)s ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "Đ”Đ¾Đ¼ĐµĐ½ |%(domain)s| ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚, Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đµ Đ·Đ¾Đ½Ñ‹ Đ½Đ° |%(av_zone)s|." #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "Đ”Đ¾Đ¼ĐµĐ½ |%(domain)s| ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚, Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đµ Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° Đ½Đ° |%(project)s|." #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "Đ­Ñ‚Đ¾Ñ‚ Đ´Ñ€Đ°Đ¹Đ²ĐµÑ€ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ Ñ‚Đ¾Đ»ÑŒĐºĐ¾ Đ·Đ°Đ¿Đ¸Ñи Ñ‚Đ¸Đ¿Đ° 'a'." #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "ĐŸÑ€ĐµĐ´Đ¿Ñ€Đ¸Đ½ÑÑ‚Đ° ÑƒĐ´Đ°Đ»Đ¸Ñ‚ÑŒ Ñ†ĐµĐ¿Đ¾Ñ‡ĐºÑƒ %s, ĐºĐ¾Ñ‚Đ¾Ñ€Đ°Ñ Đ½Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "ĐĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Đ°Ñ Ñ†ĐµĐ¿Đ¾Ñ‡ĐºĐ°: %r" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, python-format msgid "" "Tried to remove rule that was not there: %(chain)r %(rule)r %(wrap)r " "%(top)r" msgstr "" "ĐŸÑ€ĐµĐ´Đ¿Ñ€Đ¸Đ½ÑÑ‚Đ° Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° ÑƒĐ´Đ°Đ»Đ¸Ñ‚ÑŒ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾, ĐºĐ¾Ñ‚Đ¾Ñ€Đ¾Đ³Đ¾ Ñ‚Đ°Đ¼ Đ½ĐµÑ‚: %(chain)r %(rule)r" " %(wrap)r %(top)r" #: nova/network/linux_net.py:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Đ¾Đµ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ: '%s'" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñа VLAN %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "Đ˜Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñ %(interface)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "Đ—Đ°Đ¿ÑƒÑĐº ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ¿ÑƒÑĐºĐ° xvp: %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/network/manager.py:493 #, fuzzy msgid "network allocations" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 #, fuzzy msgid "network deallocation for instance" msgstr "иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ ÑĐµÑ‚ĐµĐ²Ñ‹Ñ… Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Đ¹ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ |%s|" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, fuzzy, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" "instance-dns-zone ÑĐ²Đ»ÑĐµÑ‚ÑÑ |%(domain)s|, ĐºĐ¾Ñ‚Đ¾Ñ€Ñ‹Đ¹ Ñ€Đ°ÑĐ¿Đ¾Đ»Đ°Đ³Đ°ĐµÑ‚ÑÑ Đ² " "Đ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đ¾Đ¹ Đ·Đ¾Đ½Đµ |%(zone)s|. ĐĐ¾Đ¿Đ¸Ñ |%(instance)s| Ñ€Đ°ÑĐ¿Đ¾Đ»Đ¾Đ¶ĐµĐ½Đ° Đ² Đ·Đ¾Đ½Đµ " "|%(zone2)s|. Đ—Đ°Đ¿Đ¸ÑÑŒ DNS Đ½Đµ Đ±ÑƒĐ´ĐµÑ‚ ÑĐ¾Đ·Đ´Đ°Đ½Đ°." #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 #, fuzzy msgid "Failed to update usages deallocating fixed IP" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Ñ‚Đ¾Đ¼Đ° Đ² базе Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "cidr ÑƒĐ¶Đµ иÑĐ¿Đ¾Đ»ÑŒĐ·ÑƒĐµÑ‚ÑÑ" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" "Đ·Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Đ°Ñ cidr (%(cidr)s) ĐºĐ¾Đ½Ñ„Đ»Đ¸ĐºÑ‚ÑƒĐµÑ‚ Ñ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒÑÑ‰ĐµĐ¹ ÑÑƒĐ¿ĐµÑ€-ÑĐµÑ‚ÑŒÑ " "(%(super)s)" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" "Đ·Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Đ°Ñ cidr (%(cidr)s) ĐºĐ¾Đ½Ñ„Đ»Đ¸ĐºÑ‚ÑƒĐµÑ‚ Ñ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒÑÑ‰ĐµĐ¹, Đ¼ĐµĐ½ÑŒÑˆĐµĐ¹ cidr " "(%(smaller)s)" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "Đ¡ĐµÑ‚ÑŒ Đ´Đ¾Đ»Đ¶Đ½Đ° Đ±Ñ‹Ñ‚ÑŒ иÑĐºĐ»ÑÑ‡ĐµĐ½Đ° из Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° %s Đ¿ĐµÑ€ĐµĐ´ ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸ĐµĐ¼" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, fuzzy, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" "Đ¡ĐµÑ‚ĐµĐ²Đ¾Đ¹ Đ´Đ¸Đ°Đ¿Đ°Đ·Đ¾Đ½ Đ½ĐµĐ´Đ¾ÑÑ‚Đ°Ñ‚Đ¾Ñ‡ĐµĐ½ Đ´Đ»Ñ ÑĐ¾Đ¾Ñ‚Đ²ĐµÑ‚ÑÑ‚Đ²Đ¸Ñ %(num_networks)s. Đ Đ°Đ·Đ¼ĐµÑ€ " "ÑĐµÑ‚Đ¸ %(network_size)s" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Ñ‚Đ¾Đ¼" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "Đ­Ñ‚Đ¾Ñ‚ Đ´Ñ€Đ°Đ¹Đ²ĐµÑ€ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ Ñ‚Đ¾Đ»ÑŒĐºĐ¾ Ñ‚Đ¸Đ¿ 'a'" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "_ÑƒĐ´Đ°Đ»Đ¸Ñ‚ÑŒ: %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, fuzzy, python-format msgid "allocate_for_instance() for %s" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, fuzzy, python-format msgid "deallocate_for_instance() for %s" msgstr "иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ ÑĐµÑ‚ĐµĐ²Ñ‹Ñ… Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Đ¹ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ |%s|" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, fuzzy, python-format msgid "validate_networks() for %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ (%s) Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, fuzzy, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" "Đ“Ñ€ÑƒĐ¿Đ¿Đ° Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸ %(security_group_id)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ° Đ´Đ»Ñ Đ¿Ñ€Đ¾ĐµĐºÑ‚Đ° " "%(project_id)s." #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Đ­Ñ‚Đ¾ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾ ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚ Đ² Đ³Ñ€ÑƒĐ¿Đ¿Đµ %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ½Đ°Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¸Ñ Đ¿Đ°Ñ€Đ¾Đ»Ñ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¾Ñ€Đ°" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "Đ¾Đ³Ñ€Đ°Đ½Đ¸Ñ‡ĐµĐ½Đ¸Ñ Đ²Đ½ĐµÑˆĐ½ĐµĐ³Đ¾ ĐºĐ»ÑÑ‡Đ° Đ½Đµ Đ¼Đ¾Đ³ÑƒÑ‚ Đ±Ñ‹Ñ‚ÑŒ ÑƒĐ´Đ°Đ»ĐµĐ½Ñ‹" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "ĐĐµĐ¿Ñ€ĐµĐ´Đ²Đ¸Đ´ĐµĐ½Đ½Đ°Ñ Đ¾ÑˆĐ¸Đ±ĐºĐ°: %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "ĐлаÑÑ %(fullname)s уÑÑ‚Đ°Ñ€ĐµĐ»: %(msg)s" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€ÑÑÑ‰ĐµĐ³Đ¾ÑÑ Đ·Đ°Đ´Đ°Đ½Đ¸Ñ %(full_task_name)s" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ²Đ¾ Đ²Ñ€ĐµĐ¼Ñ %(full_task_name)s: %(e)s" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, fuzzy, python-format msgid "Failed to understand rule %(rule)r" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ°: %(resp)r" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "ĐŸÑ€Đ¸Đ½Ñты Đ½ĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Ñ‹Đµ Đ°Ñ€Đ³ÑƒĐ¼ĐµĐ½Ñ‚Ñ‹ ĐºĐ»ÑÑ‡ĐµĐ²Đ¾Đ³Đ¾ ÑĐ»Đ¾Đ²Đ° Đ´Đ»Ñ utils.execute: %r" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ (ÑÑƒĐ±Đ¿Ñ€Đ¾Ñ†ĐµÑÑ): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Đ ĐµĐ·ÑƒĐ»ÑŒÑ‚Đ°Ñ‚ %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r Đ¾ÑˆĐ¸Đ±ĐºĐ°. Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€." #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "Đ¡Ñ€ĐµĐ´Đ° Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ Ñ Đ¸ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸ĐµĐ¼ SSH" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "process_input Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ Ñ Đ¸ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸ĐµĐ¼ SSH" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "ĐŸĐ¾Đ»Đ½Ñ‹Đ¹ Đ½Đ°Đ±Đ¾Ñ€ ФЛĐĐ“ĐĐ’:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, fuzzy, python-format msgid "Caught %s, exiting" msgstr "ÑĐ½Đ¸Đ¼Đ¾Đº %s: ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Đµ" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, fuzzy, python-format msgid "Starting %d workers" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ Đ»Đ¸ ÑĐ¾Đ¾Ñ‚Đ²ĐµÑ‚ÑÑ‚Đ²ÑƒÑÑ‰Đ°Ñ ÑĐ»ÑƒĐ¶Đ±Đ°?" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ´Ñ€ÑƒĐ³Đ¾Đ¹ compute" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, fuzzy, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "ĐŸĐ¾Đ¿Ñ‹Ñ‚ĐºĐ° ÑĐ¾Đ±Ñ€Đ°Ñ‚ÑŒ %(num_instances)d ĐºĐ¾Đ¿Đ¸Ñ(Đ¹)" #: nova/scheduler/filter_scheduler.py:83 #, fuzzy, python-format msgid "Request Spec: %s" msgstr "Đ—Đ°Đ¿Ñ€Đ¾Ñ: %s" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Đе Đ½Đ°Đ¹Đ´ĐµĐ½ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s." #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "ĐÑ‚Ñ„Đ¸Đ»ÑŒÑ‚Ñ€Đ¾Đ²Đ°Đ½Ñ‹ %(hosts)s" #: nova/scheduler/filter_scheduler.py:337 #, fuzzy, python-format msgid "Weighed %(hosts)s" msgstr "ĐÑ‚Ñ„Đ¸Đ»ÑŒÑ‚Ñ€Đ¾Đ²Đ°Đ½Ñ‹ %(hosts)s" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "ĐĐµÑ‚ ÑĐ»ÑƒĐ¶Đ±Ñ‹ Đ´Đ»Ñ compute ID %s" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 #, fuzzy msgid "memcached_servers not defined" msgstr "Đ˜Đ¼Ñ ÑĐµÑ€Đ²ĐµÑ€Đ° Đ½Đµ Đ·Đ°Đ´Đ°Đ½Đ¾" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "Đ˜Đ¼Đ¸Ñ‚Đ°Ñ†Đ¸Ñ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ (ÑÑƒĐ±Đ¿Ñ€Đ¾Ñ†ĐµÑÑ): %s" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "Đ˜Đ¼Đ¸Ñ‚Đ°Ñ†Đ¸Ñ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ Đ¿Ñ€Đ¸Đ²ĐµĐ»Đ° Đº иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ %s" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "ĐÑ‚Đ²ĐµÑ‚ Đ½Đ° Đ¸Đ¼Đ¸Ñ‚Đ°Ñ†Đ¸Ñ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ Đ² stdout='%(stdout)s' stderr='%(stderr)s'" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 #, fuzzy msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½Đ° ĐºĐ²Đ¾Ñ‚Đ° Đ´Đ»Ñ %(pid)s, Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ° Đ²Ñ‹Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ÑŒ %(min_count)s ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµĐ¼Ñ‹Đµ ĐºĐ¾Đ¿Đ¸Đ¸: %s" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "ĐŸĐ¾Ñле Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Ñ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ ĐºĐ¾Đ¿Đ¸Đ¹: %s" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "Đ’Đ½ÑƒÑ‚Ñ€ĐµĐ½Đ½ÑÑ Đ¾ÑˆĐ¸Đ±ĐºĐ°" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "ĐŸĐ¾Ñле Đ¿Ñ€Đ¸Đ½ÑƒĐ´Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾Đ³Đ¾ Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Ñ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ ĐºĐ¾Đ¿Đ¸Đ¹: %s" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 #, fuzzy msgid "spawn error" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "ĐĐ´Ñ€ĐµÑ |%(address)s| Đ½Đµ Đ²Ñ‹Đ´ĐµĐ»ĐµĐ½" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "ĐĐ´Ñ€ĐµÑ |%(address)s| Đ½Đµ Đ²Ñ‹Đ´ĐµĐ»ĐµĐ½" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "ĐĐ¾Đ´ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Ñ: %(_status)s\n" "Đ¢ĐµĐ»Đ¾: %(_body)s" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°Đ²Ñ‚Đ¾Ñ€Đ¸Đ·Đ°Ñ†Đ¸Đ¸" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "Đ¾Đ±ÑĐµĐºÑ‚ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ %(method)s Đ½Đ° %(relative_url)s" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "Đ¢ĐµĐ»Đ¾: %s" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => ĐºĐ¾Đ´ %(http_status)s" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => ĐºĐ¾Đ´ %(http_status)s" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "ĐĐµĐ¿Ñ€ĐµĐ´Đ²Đ¸Đ´ĐµĐ½Đ½Ñ‹Đ¹ ĐºĐ¾Đ´ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Ñ" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "Đ”ĐµĐºĐ¾Đ´Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ JSON: %s" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "Đ¼Đ°Ñ€ĐºĐµÑ€ [%s] Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Ñ„Đ°Đ¹Đ»Đ¾Đ² Đ² %s Đ´Đ»Ñ Đ¸Đ¼Đ¸Ñ‚Đ°Ñ†Đ¸Đ¸ Đ³Đ¾ÑÑ‚ĐµĐ²Đ¾Đ³Đ¾ Đ°Đ³ĐµĐ½Ñ‚Đ°" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ Ñ„Đ°Đ¹Đ»Đ¾Đ² Đ¸Đ¼Đ¸Ñ‚Đ°Ñ†Đ¸Đ¸ Đ³Đ¾ÑÑ‚ĐµĐ²Đ¾Đ³Đ¾ Đ°Đ³ĐµĐ½Ñ‚Đ° Đ² %s" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, fuzzy, python-format msgid "Loading compute driver '%s'" msgstr "LoggingVolumeDriver: %s" #: nova/virt/driver.py:1302 #, fuzzy msgid "Unable to load the virtualization driver" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ Đ´Ñ€Đ°Đ¹Đ²ĐµÑ€ Đ²Đ¸Ñ€Ñ‚ÑƒĐ°Đ»Đ¸Đ·Đ°Ñ†Đ¸Đ¸: %s" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¾Đµ Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ¿Ñ€Đ°Đ²Đ¸Đ» Đ±Ñ€Đ°Đ½Đ´Đ¼Đ°ÑƒÑÑ€Đ° Đ¿Đ¾ÑÑ‚Đ°Đ²Ñ‰Đ¸ĐºĐ°" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "Đ”Đ¾Đ±Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ³Ñ€ÑƒĐ¿Đ¿Ñ‹ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ÑÑ‚Đ¸: %r" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "Đ”Đ¾Đ±Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ° Đ¿Đ¾ÑÑ‚Đ°Đ²Ñ‰Đ¸ĐºĐ°: %s" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°Đ½Đ°Đ»Đ¸Đ·Đ° 'qemu-img info'." #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "ĐŸÑ€ĐµĐ¾Đ±Ñ€Đ°Đ·Đ¾Đ²Đ°Đ½Đ¸Đµ Đ² Đ½ĐµĐ¾Đ±Ñ€Đ°Đ±Đ¾Ñ‚Đ°Đ½Đ½Ñ‹Đ¹, Đ½Đ¾ Ñ‚ĐµĐºÑƒÑ‰Đ¸Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚ %s" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, fuzzy, python-format msgid "pid file %s does not contain any pid" msgstr "href %s Đ½Đµ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Ñ‚ Đ²ĐµÑ€ÑиÑ" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "ĐĐ´Ñ€ĐµÑ Đ½Đµ Đ·Đ°Đ´Đ°Đ½" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "ĐÑ‚Đ²ĐµÑ‚ Đ½Đ° Đ¸Đ¼Đ¸Ñ‚Đ°Ñ†Đ¸Ñ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ Đ² stdout='%(stdout)s' stderr='%(stderr)s'" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s " #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ ĐºĐ¾Đ½ÑĐ¾Đ»ÑŒĐ½Ñ‹Đ¹ Đ²Ñ‹Đ²Đ¾Đ´ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "ÑĐµÑ‚ĐµĐ²Ñ‹Đµ Ñ€Đ°ÑĐ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Đ¸Ñ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ ĐºĐ¾Đ½ÑĐ¾Đ»ÑŒĐ½Ñ‹Đ¹ Đ²Ñ‹Đ²Đ¾Đ´ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ ÑƒĐ·ĐµĐ» Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "ĐĐ´Ñ€ĐµÑ Đ½Đµ Đ·Đ°Đ´Đ°Đ½" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 #, fuzzy msgid "PDU failed" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, fuzzy, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Ñ„Đ°Đ¹Đ»Đ° Đ¾Đ±Ñ€Đ°Đ·Đ° %(image_file)s: %(err)s" #: nova/virt/baremetal/utils.py:54 #, fuzzy, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %(ext_name)s: %(exc)s" #: nova/virt/baremetal/utils.py:63 #, fuzzy, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° schedule_%(method)s: %(ex)s" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "Ñ€Đ°Đ·Đ´ĐµĐ»Ñ‹ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ Đ²Đ¸Ñ€Ñ‚ÑƒĐ°Đ»ÑŒĐ½Đ¾Đ³Đ¾ Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñа" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, fuzzy, python-format msgid "Baremetal virtual interface %s not found" msgstr "Ñ€Đ°Đ·Đ´ĐµĐ»Ñ‹ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "Đ¾Đ±Ñ€Đ°Đ· ÑƒĐ¶Đµ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½Ñ‘Đ½" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "ĐĐµÑ‚ ÑĐ²Đ¾Đ±Đ¾Đ´Đ½Ñ‹Ñ… уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ² nbd" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¼Đ¾Đ½Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Ñ„Đ°Đ¹Đ»Đ¾Đ²Đ¾Đ¹ ÑиÑÑ‚ĐµĐ¼Ñ‹: %s" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, fuzzy, python-format msgid "Map dev %s" msgstr "Đ˜Đ¼Đ¿Đ¾Ñ€Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ ĐºĐ»Ñч %s" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, fuzzy, python-format msgid "partition %s not found" msgstr "Ñ€Đ°Đ·Đ´ĐµĐ»Ñ‹ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¼Đ¾Đ½Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Ñ„Đ°Đ¹Đ»Đ¾Đ²Đ¾Đ¹ ÑиÑÑ‚ĐµĐ¼Ñ‹: %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Ñ‚Đ¾Đ¼Đ° Đ² базе Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Ñ€Đ¸ĐºÑ€ĐµĐ¿Đ¸Ñ‚ÑŒ Đ¾Đ±Ñ€Đ°Đ· Đ´Đ»Ñ Đ·Đ°Đ¼Ñ‹ĐºĐ°Đ½Đ¸Ñ: %s" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "Đ¾ÑˆĐ¸Đ±ĐºĐ° qemu-nbd: %s" #: nova/virt/disk/mount/loop.py:39 #, fuzzy, python-format msgid "Got loop device %s" msgstr "block_device_list %s" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "ĐĐµÑ‚ ÑĐ²Đ¾Đ±Đ¾Đ´Đ½Ñ‹Ñ… уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ² nbd" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "Đ¾ÑˆĐ¸Đ±ĐºĐ° qemu-nbd: %s" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "Đ¾ÑˆĐ¸Đ±ĐºĐ° qemu-nbd: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 #, fuzzy msgid "Trying to import guestfs" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¸Đ¼Đ¿Đ¾Ñ€Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ suds." #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, fuzzy, python-format msgid "Inspecting guest OS image %s" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¼Đ¾Đ½Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Ñ„Đ°Đ¹Đ»Đ¾Đ²Đ¾Đ¹ ÑиÑÑ‚ĐµĐ¼Ñ‹: %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ°: %(resp)r" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ°: %(resp)r" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Ñ€Đ°ÑÑˆĐ¸Ñ€ĐµĐ½Đ¸Ñ %(ext_name)s: %(exc)s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° schedule_%(method)s: %(ex)s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, fuzzy, python-format msgid "Windows version: %s " msgstr "Đ’ĐµÑ€ÑĐ¸Ñ Đ°Đ³ĐµĐ½Ñ‚Đ° ĐºĐ¾Đ¿Đ¸Đ¸: %s" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ ĐºĐ¾Đ½ÑĐ¾Đ»ÑŒĐ½Ñ‹Đ¹ Đ²Ñ‹Đ²Đ¾Đ´ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "ĐŸÑ€Đ¸ÑĐ²Đ¾Đ¸Ñ‚ÑŒ Đ°Đ´Ñ€ĐµÑ %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 #, fuzzy msgid "live_migration called" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 #, fuzzy msgid "pre_live_migration called" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/virt/hyperv/livemigrationops.py:97 #, fuzzy msgid "post_live_migration_at_destination called" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/virt/hyperv/livemigrationops.py:105 #, fuzzy msgid "check_can_live_migrate_destination called" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/virt/hyperv/livemigrationops.py:111 #, fuzzy msgid "check_can_live_migrate_destination_cleanup called" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/virt/hyperv/livemigrationops.py:116 #, fuzzy msgid "check_can_live_migrate_source called" msgstr "Đ—Đ°Đ¿ÑƒÑ‰ĐµĐ½Đ¾ post_live_migration().." #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ†Đ¸Đ¸: %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "Đ¾Đ±ÑĐµĐºÑ‚ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, fuzzy, python-format msgid "Duplicate VM name found: %s" msgstr "ĐбÑĐµĐºÑ‚ Quantum Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½: %s" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ°Đ³ĐµĐ½Ñ‚Đ° Đ´Đ¾ %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, fuzzy, python-format msgid "vswitch \"%s\" not found" msgstr "Ñ€Đ°Đ·Đ´ĐµĐ»Ñ‹ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¿Đ°Đ¿ĐºĐ¸ Ñ Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¿Đ°Đ¿ĐºĐ¸ Ñ Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s " #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ÑĐ½Đ¸Đ¼ĐºĐ° Đ´Đ»Ñ Đ’Đœ %s" #: nova/virt/hyperv/snapshotops.py:119 #, fuzzy, python-format msgid "Failed to remove snapshot for VM %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ½Ñ‚ĐµĐ¹Đ½ĐµÑ€Đ°: %s" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s " #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, fuzzy, python-format msgid "Creating config drive at %(path)s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ ĐºĐ¾Đ½Ñ„Đ¸Đ³ÑƒÑ€Đ°Ñ†Đ¸Ñ Đ¿Đ¾ Đ°Đ´Ñ€ĐµÑу %(path)s" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, fuzzy, python-format msgid "Creating config drive failed with error: %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ ĐºĐ¾Đ½Ñ„Đ¸Đ³ÑƒÑ€Đ°Ñ†Đ¸Ñ Đ¿Đ¾ Đ°Đ´Ñ€ĐµÑу %(path)s" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ vbd %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "ĐŸĐ¸Ñ‚Đ°Đ½Đ¸Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ¾ Đ½Đ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "ĐŸĐ¸Ñ‚Đ°Đ½Đ¸Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ¾ Đ½Đ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Ñ Đ¼ĐµÑ‚Đ°Đ´Đ°Đ½Đ½Ñ‹Ñ… Đ´Đ»Ñ ip: %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼: %s" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "ĐŸĐ¾Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ %(volume_id)s Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_id)s Đ½Đ° %(device)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s " #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, fuzzy, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ ÑƒĐ·ĐµĐ» Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, fuzzy, python-format msgid "Unable to determine disk bus for '%s'" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ¸ÑĐºĐ° vbd Đ´Đ»Ñ vdi %s" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "ĐŸĐ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Đº libvirt: %s" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "ĐĐµĐ¿Đ¾Đ»Đ°Đ´ĐºĐ° Ñ Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸ĐµĐ¼ Đº libvirt" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "ĐŸĐ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Đº libvirt: %s" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "Đ¡ĐµÑ‚Đ¸ Đ½Đµ Đ¾Đ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Ñ‹." #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "Đ¡ĐµÑ‚Đ¸ Đ½Đµ Đ¾Đ¿Ñ€ĐµĐ´ĐµĐ»ĐµĐ½Ñ‹." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "ÑĐ½Đ¸Đ¼Đ¾Đº %s: ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¾" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "ĐŸĐ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒ Đ½Đµ Đ¸Đ¼ĐµĐµÑ‚ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¸Đ²Đ½Ñ‹Ñ… Đ¿Ñ€Đ¸Đ²Đ¸Đ»ĐµĐ³Đ¸Đ¹" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¸Đ·Đ¾Đ±Ñ€Đ°Đ¶ĐµĐ½Đ¸Ñ" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, python-format msgid "" "Error from libvirt while looking up %(instance_name)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" "ĐÑˆĐ¸Đ±ĐºĐ° libvirt Đ²Đ¾ Đ²Ñ€ĐµĐ¼Ñ Đ¿Đ¾Đ¸ÑĐºĐ° %(instance_name)s: [ĐĐ¾Đ´ Đ¾ÑˆĐ¸Đ±ĐºĐ¸ " "%(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 #, fuzzy msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Đ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ¾ Đ¦ĐŸĐ£, Ñ‚Đ°Đº ĐºĐ°Đº ÑÑ‚Đ° Đ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾Ñть Đ½Đµ " "Ñ€ĐµĐ°Đ»Đ¸Đ·Đ¾Đ²Đ°Đ½Đ° Đ´Đ»Ñ ÑÑ‚Đ¾Đ¹ Đ¿Đ»Đ°Ñ‚Ñ„Đ¾Ñ€Đ¼Ñ‹. Đ­Ñ‚Ñƒ Đ¾ÑˆĐ¸Đ±ĐºÑƒ Đ¼Đ¾Đ¶Đ½Đ¾ Đ±ĐµĐ·Đ¾Đ¿Đ°ÑĐ½Đ¾ Đ¿Ñ€Đ¾Đ¿ÑƒÑÑ‚Đ¸Ñ‚ÑŒ." #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "уÑÑ‚Đ°Ñ€ĐµĐ²ÑˆĐ°Ñ Đ²ĐµÑ€ÑĐ¸Ñ libvirt (Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ getVersion)" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ° Đ¾Đ±Ñ€Đ°Đ·Đ° Đ´Đ»Ñ Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, fuzzy, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ²Ñ€ĐµĐ¼ĐµĐ½Đ½Đ¾Đ³Đ¾ Ñ„Đ°Đ¹Đ»Đ° %s Đ´Đ»Ñ Đ¾Đ¿Đ¾Đ²ĐµÑ‰ĐµĐ½Đ¸Ñ Đ´Ñ€ÑƒĐ³Đ¸Ñ… ÑƒĐ·Đ»Đ¾Đ² ÑĐµÑ‚Đ¸ compute Đ¾ " "Đ½ĐµĐ¾Đ±Ñ…Đ¾Đ´Đ¸Đ¼Đ¾ÑÑ‚Đ¸ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Ñ Ñ‚Đ¾Đ³Đ¾ же Ñ…Ñ€Đ°Đ½Đ¸Đ»Đ¸Ñ‰Đ°." #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, python-format msgid "" "Creating tmpfile %s to notify to other compute nodes that they should " "mount the same storage." msgstr "" "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ²Ñ€ĐµĐ¼ĐµĐ½Đ½Đ¾Đ³Đ¾ Ñ„Đ°Đ¹Đ»Đ° %s Đ´Đ»Ñ Đ¾Đ¿Đ¾Đ²ĐµÑ‰ĐµĐ½Đ¸Ñ Đ´Ñ€ÑƒĐ³Đ¸Ñ… ÑƒĐ·Đ»Đ¾Đ² ÑĐµÑ‚Đ¸ compute Đ¾ " "Đ½ĐµĐ¾Đ±Ñ…Đ¾Đ´Đ¸Đ¼Đ¾ÑÑ‚Đ¸ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Ñ Ñ‚Đ¾Đ³Đ¾ же Ñ…Ñ€Đ°Đ½Đ¸Đ»Đ¸Ñ‰Đ°." #: nova/virt/libvirt/driver.py:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, fuzzy, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "plug_vifs() Đ¾ÑˆĐ¸Đ±ĐºĐ° %(cnt)d.Đ”Đ¾ %(max_retry)d Đ¿Đ¾Đ¿Ñ‹Ñ‚Đ¾Đº Đ´Đ»Ñ %(hostname)s." #: nova/virt/libvirt/driver.py:4697 #, fuzzy, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" "ĐÑˆĐ¸Đ±ĐºĐ° libvirt Đ²Đ¾ Đ²Ñ€ĐµĐ¼Ñ Đ¿Đ¾Đ¸ÑĐºĐ° %(instance_name)s: [ĐĐ¾Đ´ Đ¾ÑˆĐ¸Đ±ĐºĐ¸ " "%(error_code)s] %(ex)s" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 #, fuzzy msgid "Instance running successfully." msgstr "ĐĐ¾Đ¿Đ¸Ñ %s: Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, fuzzy, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° schedule_%(method)s: %(ex)s" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" "ĐœĐ¾Đ´ÑƒĐ»ÑŒ Libvirt Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ·Đ°Đ³Ñ€ÑƒĐ¶ĐµĐ½. NWFilterFirewall Đ½Đµ Đ±ÑƒĐ´ĐµÑ‚ Ñ€Đ°Đ±Đ¾Ñ‚Đ°Ñ‚ÑŒ" " Đ½Đ°Đ´Đ»ĐµĐ¶Đ°Ñ‰Đ¸Đ¼ Đ¾Đ±Ñ€Đ°Đ·Đ¾Đ¼." #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "nwfilter(%(instance_filter_name)s) Đ´Đ»Ñ%(name)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "Đ‘Ñ€Đ°Đ½Đ´Đ¼Đ°ÑƒÑÑ€ iptables: ĐаÑÑ‚Ñ€Đ¾Đ¹ĐºĐ° Đ±Đ°Đ·Đ¾Đ²Đ¾Đ¹ Ñ„Đ¸Đ»ÑŒÑ‚Ñ€Đ°Ñ†Đ¸Đ¸" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, fuzzy, python-format msgid "Unknown image_type=%s" msgstr "Đ½ĐµĐ¸Đ·Đ²ĐµÑÑ‚Đ½Ñ‹Đ¹ Đ¾Đ±Ñ€Đ°Đ±Đ¾Ñ‚Ñ‡Đ¸Đº Đ¾Đ±Ñ€Đ°Đ·Đ° диÑĐºĐ°: %s" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, fuzzy, python-format msgid "Reading image info file: %s" msgstr "Đ’Ñ‹Đ³Ñ€ÑƒĐ·ĐºĐ° Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº Đ¼Đ¾ÑÑ‚Đ° Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñа Đ´Đ»Ñ %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "ĐĐµĐ¿Ñ€ĐµĐ´Đ²Đ¸Đ´ĐµĐ½Đ½Đ°Ñ Đ¾ÑˆĐ¸Đ±ĐºĐ°: %s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 #, fuzzy msgid "Failed while unplugging vif" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Ñ‚ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Ñ vif ĐºĐ¾Đ¿Đ¸Đ¸ '%s'" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "iSCSI-уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ¾ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ² %s" #: nova/virt/libvirt/volume.py:307 #, fuzzy, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" "Đ¢Đ¾Đ¼ ISCSI Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½ Đ²: %(mount_device)s. Đ‘ÑƒĐ´ĐµÑ‚ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ° Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ½Đ°Ñ " "Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºĐ° и Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ°. ĐŸĐ¾Đ²Ñ‚Đ¾Ñ€ĐµĐ½Đ¸Đµ: %(tries)s" #: nova/virt/libvirt/volume.py:320 #, fuzzy, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "ĐĐ°Đ¹Đ´ĐµĐ½ ÑƒĐ·ĐµĐ» iSCSI %(mount_device)s (Đ¿Đ¾Ñле %(tries)s Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ½Ñ‹Ñ… Đ¿Ñ€Đ¾Đ²ĐµÑ€Đ¾Đº)" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "Đ¾Đ±Ñ€Đ°Đ· ÑƒĐ¶Đµ Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½Ñ‘Đ½" #: nova/virt/libvirt/volume.py:751 #, fuzzy, python-format msgid "AoE device not found at %s" msgstr "iSCSI-уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ¾ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ² %s" #: nova/virt/libvirt/volume.py:753 #, fuzzy, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" "Đ¢Đ¾Đ¼ ISCSI Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½ Đ²: %(mount_device)s. Đ‘ÑƒĐ´ĐµÑ‚ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ° Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ½Đ°Ñ " "Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºĐ° и Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ°. ĐŸĐ¾Đ²Ñ‚Đ¾Ñ€ĐµĐ½Đ¸Đµ: %(tries)s" #: nova/virt/libvirt/volume.py:768 #, fuzzy, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "ĐĐ°Đ¹Đ´ĐµĐ½ ÑƒĐ·ĐµĐ» iSCSI %(mount_device)s (Đ¿Đ¾Ñле %(tries)s Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ½Ñ‹Ñ… Đ¿Ñ€Đ¾Đ²ĐµÑ€Đ¾Đº)" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 #, fuzzy msgid "Fibre Channel device not found." msgstr "iSCSI-уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ¾ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ² %s" #: nova/virt/libvirt/volume.py:946 #, fuzzy, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" "Đ¢Đ¾Đ¼ ISCSI Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½ Đ²: %(mount_device)s. Đ‘ÑƒĐ´ĐµÑ‚ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ° Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ½Đ°Ñ " "Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºĐ° и Đ¿Đ¾Đ¿Ñ‹Ñ‚ĐºĐ°. ĐŸĐ¾Đ²Ñ‚Đ¾Ñ€ĐµĐ½Đ¸Đµ: %(tries)s" #: nova/virt/libvirt/volume.py:963 #, fuzzy, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "ĐĐ°Đ¹Đ´ĐµĐ½ ÑƒĐ·ĐµĐ» iSCSI %(mount_device)s (Đ¿Đ¾Ñле %(tries)s Đ¿Đ¾Đ²Ñ‚Đ¾Ñ€Đ½Ñ‹Ñ… Đ¿Ñ€Đ¾Đ²ĐµÑ€Đ¾Đº)" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "Đ¡Đ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ Đ·Đ°Đ´Đ°Ñ‡Đ¸ [%(task_name)s] %(task_ref)s: Đ³Đ¾Ñ‚Đ¾Đ²Đ¾" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "Đ¡Đ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ Đ·Đ°Đ´Đ°Ñ‡Đ¸ [%(task_name)s] %(task_ref)s: Đ¾ÑˆĐ¸Đ±ĐºĐ° %(error_info)s" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "Đ’ vmwareapi:_poll_task, Đ¿Ñ€Đ¸Đ½ÑÑ‚Đ° ÑÑ‚Đ° Đ¾ÑˆĐ¸Đ±ĐºĐ° %s" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¿Đ°Đ¿ĐºĐ¸ Ñ Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ %s" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ° Đ¿Đ°Đ¿ĐºĐ° Ñ Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ %s" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, fuzzy, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "Đ¡Đ²Đ¾Đ¹ÑÑ‚Đ²Đ¾ %(attr)s Đ½Đµ Đ½Đ°Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¾ Đ´Đ»Ñ ÑƒĐ¿Ñ€Đ°Đ²Đ»ÑĐµĐ¼Đ¾Đ³Đ¾ Đ¾Đ±ÑĐµĐºÑ‚Đ° %(objName)s" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "ĐÑ‚ÑутÑÑ‚Đ²ÑƒÑÑ‚ Đ·Đ°Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đµ Đ’Đœ" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "Đ—Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¸Đµ ÑĐµĐ°Đ½Ñа Ñ Đ½ĐµĐ¿Đ¾Đ»Đ°Đ´ĐºĐ°Đ¼Đ¸ или ÑƒĐ¶Đµ Đ·Đ°Đ²ĐµÑ€ÑˆÑ‘Đ½Đ½Đ¾Đ³Đ¾ ÑĐµĐ°Đ½Ñа: %s" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "Đ¡ĐµĐ°Đ½Ñ Đ¸Đ¼ĐµĐµÑ‚ Đ½ĐµĐ¿Đ¾Đ»Đ°Đ´ĐºĐ¸" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµĐ°Đ½Ñ" #: nova/virt/vmwareapi/fake.py:1225 #, fuzzy msgid "No Virtual Machine has been registered yet" msgstr " ĐÑ‚ÑутÑÑ‚Đ²ÑƒÑÑ‚ Đ·Đ°Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ¸Đ¾Đ²Đ°Đ½Đ½Ñ‹Đµ Đ²Đ¸Ñ€Ñ‚ÑƒĐ°Đ»ÑŒĐ½Ñ‹Đµ Đ¼Đ°ÑˆĐ¸Đ½Ñ‹" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "Đ´ĐµĐ¹ÑÑ‚Đ²Đ¸Đµ: %s" #: nova/virt/vmwareapi/host.py:62 #, fuzzy, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "ĐŸĐµÑ€ĐµĐ²Đ¾Đ´ ÑƒĐ·Đ»Đ° %(host)s Đ² %(state)s." #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¸Đ¼Đ¿Đ¾Ñ€Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ suds." #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Đ² %s " #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "ĐŸĐµÑ€ĐµÑ‡ĐµĐ½ÑŒ ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "Đ’ÑĐµĐ³Đ¾ %s ĐºĐ¾Đ¿Đ¸Đ¹" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, fuzzy, python-format msgid "Block device information present: %s" msgstr "block_device_mapping %s" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 #, fuzzy msgid "Creating VM on the ESX host" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ’Đœ Ñ Đ¸Đ¼ĐµĐ½ĐµĐ¼ %s Đ½Đ° ÑƒĐ·Đ»Đµ ESX" #: nova/virt/vmwareapi/vmops.py:304 #, fuzzy msgid "Created VM on the ESX host" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ’Đœ Ñ Đ¸Đ¼ĐµĐ½ĐµĐ¼ %s Đ½Đ° ÑƒĐ·Đ»Đµ ESX" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "Đ’ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Đ¿Đ¸Ñ‚Đ°Đ½Đ¸Ñ Đ½Đ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:632 #, fuzzy msgid "Powered on the VM instance" msgstr "ĐŸĐ¸Ñ‚Đ°Đ½Đ¸Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ¾ Đ½Đ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 #, fuzzy msgid "Creating Snapshot of the VM instance" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s " #: nova/virt/vmwareapi/vmops.py:766 #, fuzzy msgid "Created Snapshot of the VM instance" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ ÑĐ½Đ¸Đ¼ĐºĐ° ĐºĐ¾Đ¿Đ¸Đ¸ Đ’Đœ %s " #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "Đ’Ñ‹Đ³Ñ€ÑƒĐ·ĐºĐ° Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "Đ’Ñ‹Đ³Ñ€ÑƒĐ¶ĐµĐ½Đ½Ñ‹Đ¹ Đ¾Đ±Ñ€Đ°Đ· %s" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "ĐºĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ°" #: nova/virt/vmwareapi/vmops.py:955 #, fuzzy msgid "Rebooting guest OS of VM" msgstr "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° Đ³Đ¾ÑÑ‚ĐµĐ²Đ¾Đ¹ ĐĐ¡ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:958 #, fuzzy msgid "Rebooted guest OS of VM" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° Đ³Đ¾ÑÑ‚ĐµĐ²Đ¾Đ¹ ĐĐ¡ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:960 #, fuzzy msgid "Doing hard reboot of VM" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ±ĐµĐ·Đ¾Ñ‚ĐºĐ°Đ·Đ½Đ¾Đ¹ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:964 #, fuzzy msgid "Did hard reboot of VM" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ±ĐµĐ·Đ¾Ñ‚ĐºĐ°Đ·Đ½Đ¾Đ¹ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ xvp" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "ĐĐµĐ·Đ°Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Đ°Ñ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:982 #, fuzzy, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "Đ’ vmwareapi:_call_method, Đ¿Ñ€Đ¸Đ½ÑÑ‚Đ¾ ÑÑ‚Đ¾ иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ: %s" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 #, fuzzy msgid "Powering off the VM" msgstr "Đ’Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Đ¿Đ¸Ñ‚Đ°Đ½Đ¸Ñ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 #, fuzzy msgid "Powered off the VM" msgstr "ĐŸĐ¸Ñ‚Đ°Đ½Đ¸Đµ Đ’Đœ %s Đ²Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¾" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ°Ñ†Đ¸Đ¸ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:1029 #, fuzzy msgid "Unregistered the VM" msgstr "ĐĐµĐ·Đ°Ñ€ĐµĐ³Đ¸ÑÑ‚Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Đ°Ñ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 #, fuzzy msgid "Suspending the VM" msgstr "ĐŸÑ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° Đ’Đœ %s " #: nova/virt/vmwareapi/vmops.py:1084 #, fuzzy msgid "Suspended the VM" msgstr "ĐŸÑ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ½Đ°Ñ Đ’Đœ %s " #: nova/virt/vmwareapi/vmops.py:1087 #, fuzzy msgid "instance is powered off and cannot be suspended." msgstr "ĐŸĐ¸Ñ‚Đ°Đ½Đ¸Đµ ĐºĐ¾Đ¿Đ¸Đ¸ Đ²Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¾ и ÑĐ»ĐµĐ´Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒĐ½Đ¾ Đ¾Đ½Đ° Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ°." #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 #, fuzzy msgid "Resuming the VM" msgstr "Đ’Đ¾Đ·Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Ñ€Đ°Đ±Đ¾Ñ‚Ñ‹ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:1105 #, fuzzy msgid "Resumed the VM" msgstr "Đ Đ°Đ±Đ¾Ñ‚Đ° Đ’Đœ %s Đ²Đ¾Đ·Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ° " #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "ĐºĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ² Đ¿Ñ€Đ¸Đ¾ÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ½Đ¾Đ¼ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đ¸" #: nova/virt/vmwareapi/vmops.py:1182 #, fuzzy msgid "instance is suspended and cannot be powered off." msgstr "ĐºĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ²ĐºĐ»ÑÑ‡ĐµĐ½Đ°" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "Đ’Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ Đ¿Đ¸Ñ‚Đ°Đ½Đ¸Ñ Đ’Đœ %s" #: nova/virt/vmwareapi/vmops.py:1206 #, fuzzy msgid "Powered on the VM" msgstr "ĐŸĐ¸Ñ‚Đ°Đ½Đ¸Đµ Đ’Đœ %s Đ²Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¾" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ ĐºĐ¾Đ¿Đ¸Đ¸ '%(instance_uuid)s' Đ´Đ¾ %(progress)d" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼: %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "ĐºĐ¾Đ¿Đ¸Ñ - %s Đ½Đµ Đ¿Ñ€ĐµĐ´ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°" #: nova/virt/vmwareapi/vmops.py:1309 #, fuzzy, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "Đ’ vmwareapi:_create_session, Đ¿Ñ€Đ¸Đ½ÑÑ‚Đ¾ ÑÑ‚Đ¾ иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ: %s" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ Ñ‚Đ¾Đ¼ Ñ Đ¸Đ´ĐµĐ½Ñ‚Đ¸Ñ„Đ¸ĐºĐ°Ñ‚Đ¾Ñ€Đ¾Đ¼: %s" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ Ñ‚Đ¾Đ¼ из ÑĐ½Đ¸Đ¼ĐºĐ° %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 #, fuzzy msgid "Automatically hard rebooting" msgstr "ĐĐ²Ñ‚Đ¾Đ¼Đ°Ñ‚Đ¸Ñ‡ĐµÑĐºĐ°Ñ Đ±ĐµĐ·Đ¾Ñ‚ĐºĐ°Đ·Đ½Đ°Ñ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ° %d" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ Ñ€Đ°Đ·Đ¼ĐµÑ€Đ° Đ¾Đ±Ñ€Đ°Đ·Đ° Đ´Đ»Ñ Đ¾Đ±Ñ€Đ°Đ·Đ° %s" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "ĐŸÑ€Đ¸Đ½ÑÑ‚ Ñ€Đ°Đ·Đ¼ĐµÑ€ Đ¾Đ±Ñ€Đ°Đ·Đ° %(size)s Đ´Đ»Ñ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image)s" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "ĐŸĐ¾Đ²Ñ‚Đ¾Ñ€Đ½Đ°Ñ Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºĐ° SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "ĐŸĐ¾Đ²Ñ‚Đ¾Ñ€Đ½Đ°Ñ Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºĐ° SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, fuzzy, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "ĐºĐ¾Đ¿Đ¸Ñ %(instance_name)s: ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Đµ Ñ„Đ°Đ¹Đ»Đ¾Đ² ĐºĐ¾Đ¿Đ¸Đ¸ %(target)s" #: nova/virt/vmwareapi/volumeops.py:130 #, fuzzy, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "ĐºĐ¾Đ¿Đ¸Ñ %(instance_name)s: ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Đµ Ñ„Đ°Đ¹Đ»Đ¾Đ² ĐºĐ¾Đ¿Đ¸Đ¸ %(target)s" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Đ¢Đ¾Ñ‡ĐºĐ° Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ %(mountpoint)s Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ° Đº ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ Đ°Đ´Ñ€ĐµÑ %r" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ¸ÑĐºĐ° Ñ‚Đ¾Đ¼Đ° Đ² базе Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Đ¢Đ¾Ñ‡ĐºĐ° Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ %(mountpoint)s Đ¾Ñ‚ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ° Đ¾Ñ‚ ĐºĐ¾Đ¿Đ¸Đ¸ %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, fuzzy, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" "Đ’Đ Đ•ĐœĐ¯ ĐŸĐ ĐĐ¡Đ¢ĐĐ¯: Đ¡Ñ€Đ¾Đº Đ²Ñ‹Đ·Đ¾Đ²Đ° %(method)s иÑÑ‚Ñ‘Đº. VM id=%(instance_uuid)s; " "args=%(args)r" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, fuzzy, python-format msgid "" "NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. " "args=%(args)r" msgstr "" "ĐĐ• Đ Đ•ĐĐ›Đ˜Đ—ĐĐ’ĐĐĐ: Đ’Ñ‹Đ·Đ¾Đ² %(method)s Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ Đ°Đ³ĐµĐ½Ñ‚Đ¾Đ¼. VM " "id=%(instance_uuid)s; args=%(args)r" #: nova/virt/xenapi/agent.py:135 nova/virt/xenapi/vmops.py:1781 #, fuzzy, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "Đ’Ñ‹Đ·Đ¾Đ² %(method)s Đ²Đ¾Đ·Đ²Ñ€Đ°Ñ‚Đ¸Đ» Đ¾ÑˆĐ¸Đ±ĐºÑƒ: %(e)s." #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "Đ—Đ°Đ¿Ñ€Đ¾Ñ Đ²ĐµÑ€Ñии Đ°Đ³ĐµĐ½Ñ‚Đ°" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ Đ°Đ³ĐµĐ½Ñ‚Đ° Đ´Đ¾ %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "ĐаÑÑ‚Ñ€Đ¾Đ¹ĐºĐ° Đ¿Đ°Ñ€Đ¾Đ»Ñ Đ°Đ´Đ¼Đ¸Đ½Đ¸ÑÑ‚Ñ€Đ°Ñ‚Đ¾Ñ€Đ°" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "Đ’Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Đµ ÑĐµÑ‚Đ¸" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "Đ¡Ñ€ĐµĐ´ÑÑ‚Đ²Đ° XenServer Đ½Đµ уÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Ñ‹ Đ² ÑÑ‚Đ¾Ñ‚ Đ¾Đ±Ñ€Đ°Đ·" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° OpenSSL: %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, fuzzy, python-format msgid "Could not determine key: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ´ĐµÑˆĐ¸Ñ„Ñ€Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Ñ Đ»Đ¸Ñ‡Đ½Đ¾Đ³Đ¾ ĐºĐ»ÑÑ‡Đ°: %s" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "Đ—Đ°Đ¿ÑƒÑĐº ÑƒĐ·Đ»Đ° Đ½Đ° XenServer Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ĐµÑ‚ÑÑ." #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake Đ½Đµ Đ¸Đ¼ĐµĐµÑ‚ Ñ€ĐµĐ°Đ»Đ¸Đ·Đ°Ñ†Đ¸Đ¸ Đ´Đ»Ñ %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ Đ²Ñ‹Đ·Đ¾Đ² getter %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ÑĐµÑ‚ÑÑ Đ²Ñ‹Đ·Đ¾Đ² getter %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake Đ½Đµ Đ¸Đ¼ĐµĐµÑ‚ Ñ€ĐµĐ°Đ»Đ¸Đ·Đ°Ñ†Đ¸Đ¸ Đ´Đ»Ñ %s или Đ±Ñ‹Đ» Đ²Ñ‹Đ·Đ²Đ°Đ½ Ñ Đ¸ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸ĐµĐ¼ " "Đ½ĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¼ Ñ‡Đ¸ÑĐ»Đ¾Đ¼ Đ°Ñ€Đ³ÑƒĐ¼ĐµĐ½Ñ‚Đ¾Đ²" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "Đ£Đ·ĐµĐ» Ñompute %(host)s Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/virt/xenapi/host.py:305 #, fuzzy msgid "Unable to get updated status" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Đ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ Đ¾Đ±Đ½Đ¾Đ²Đ»Ñ‘Đ½Đ½Đ¾Đµ ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đµ: %s" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "Đ’Ñ‹Đ·Đ¾Đ² %(method)s Đ²Đ¾Đ·Đ²Ñ€Đ°Ñ‚Đ¸Đ» Đ¾ÑˆĐ¸Đ±ĐºÑƒ: %(e)s." #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "ĐĐ°Đ¹Đ´ĐµĐ½Đ° Đ½Đµ ÑƒĐ½Đ¸ĐºĐ°Đ»ÑŒĐ½Đ°Ñ ÑĐµÑ‚ÑŒ Đ´Đ»Ñ name_label %s" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "ĐĐ°Đ¹Đ´ĐµĐ½Đ° Đ½Đµ ÑƒĐ½Đ¸ĐºĐ°Đ»ÑŒĐ½Đ°Ñ ÑĐµÑ‚ÑŒ Đ´Đ»Ñ Đ¼Đ¾ÑÑ‚Đ° %s" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "Đе Đ½Đ°Đ¹Đ´ĐµĐ½Đ° ÑĐµÑ‚ÑŒ Đ´Đ»Ñ Đ¼Đ¾ÑÑ‚Đ° %s" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 #, fuzzy msgid "Created VM" msgstr "_ÑĐ¾Đ·Đ´Đ°Ñ‚ÑŒ: %s" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "Đ³Ñ€ÑƒĐ¿Đ¿Đ° %s ÑƒĐ¶Đµ ÑÑƒÑ‰ĐµÑÑ‚Đ²ÑƒĐµÑ‚" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¾Ñ‚ÑĐ¾ĐµĐ´Đ¸Đ½Đ¸Ñ‚ÑŒ VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ° VBD %(vbd_ref)s Đ´Đ»Ñ Đ’Đœ %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ° VBD %(vbd_ref)s Đ´Đ»Ñ Đ’Đœ %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ VDI %s" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "Đ¡Đ¾Đ·Đ´Đ°Đ½ VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s) " "Đ½Đ° %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 #, fuzzy msgid "SR not present and could not be introduced" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ°" #: nova/virt/xenapi/vm_utils.py:580 #, fuzzy, python-format msgid "block device info: %s" msgstr "block_device_list %s" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 #, fuzzy msgid "Starting snapshot for VM" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ÑĐ½Đ¸Đ¼ĐºĐ° Đ´Đ»Ñ Đ’Đœ %s" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "Đ£Đ´Đ°Đ»ĐµĐ½Đ¸Đµ ÑĐ´Ñ€Đ°/ramdisk Ñ„Đ°Đ¹Đ»Đ¾Đ² из dom0" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, fuzzy, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" "xapi 'download_vhd' Đ²Đ¾Đ·Đ²Ñ€Đ°Ñ‚Đ¸Đ» VDI Ñ‚Đ¸Đ¿Đ° '%(vdi_type)s' Ñ UUID " "'%(vdi_uuid)s'" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, fuzzy, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "ĐŸĐ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đµ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image)s" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Đ¯Đ´Ñ€Đ¾ Đ½Đµ Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ´Đ»Ñ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image_id)s." #: nova/virt/xenapi/vm_utils.py:1583 #, python-format msgid "" "Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d " "bytes" msgstr "" "ĐŸÑ€ĐµĐ²Ñ‹ÑˆĐµĐ½ Ñ€Đ°Đ·Đ¼ĐµÑ€ ÑĐ´Ñ€Đ°/Ramdisk Đ¾Đ±Ñ€Đ°Đ·Đ°: %(vdi_size)d Đ±Đ°Đ¹Ñ‚, Đ¼Đ°ĐºÑ. " "%(max_size)d Đ±Đ°Đ¹Ñ‚" #: nova/virt/xenapi/vm_utils.py:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "ĐĐ¾Đ¿Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ VDI %s Đ² /boot/guest Đ½Đ° dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Đ¯Đ´Ñ€Đ¾/Ramdisk VDI %s Đ»Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Đ½" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "ĐĐ±Đ½Đ°Ñ€ÑƒĐ¶ĐµĐ½ %(image_type_str)s Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚ Đ´Đ»Ñ Đ¾Đ±Ñ€Đ°Đ·Đ° %(image_ref)s" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s Đ´Đ¾ ÑĐ¸Ñ… Đ¿Đ¾Ñ€ Đ´Đ¾ÑÑ‚ÑƒĐ¿ĐµĐ½" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ SR Ñ‚Đ¸Đ¿Đ° ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đ³Đ¾ ISO" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "ISO: Đ½Đµ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Đ¼Đ¾Đµ iso Ñ‚Đ¸Đ¿Đ°" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "ISO: SR Ñ Đ»Đ¾ĐºĐ°Đ»ÑŒĐ½Đ¾Đ¹ PBD" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "Đ’Ñ€ĐµĐ¼Ñ Đ¾Đ¶Đ¸Đ´Đ°Đ½Đ¸Ñ Đ¿Ñ€Đ¸ ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Đ¸ уÑÑ‚Ñ€Đ¾Đ¹ÑÑ‚Đ²Đ° %s" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "ĐŸĐ¾Đ´ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Đµ VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "ĐŸĐ¾Đ´ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Đµ VBD %s Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¾." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "VBD %(vbd_ref)s Đ¿Đ¾Đ´ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¾ ĐºĐ°Đº %(orig_dev)s" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" "VBD %(vbd_ref)s Đ¿Đ¾Đ´ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¾ Đ² Đ½ĐµĐ¿Ñ€Đ°Đ²Đ¸Đ»ÑŒĐ½Ñ‹Đ¹ dev, Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Đµ Đ½Đ°Đ·Đ½Đ°Ñ‡ĐµĐ½Đ¸Ñ Đ½Đ° " "%(dev)s" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "Đ›Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ VBD Đ´Đ»Ñ VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "Đ›Đ¸ĐºĐ²Đ¸Đ´Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ VBD Đ´Đ»Ñ VDI %s Đ·Đ°Đ²ĐµÑ€ÑˆĐµĐ½Đ¾." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "Đ Đ°Đ·Đ´ĐµĐ»Ñ‹:" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr " %(num)s: %(ptype)s %(size)d ÑĐµĐºÑ‚Đ¾Ñ€Đ¾Đ²" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" "Đ—Đ°Đ¿Đ¸ÑÑŒ Ñ‚Đ°Đ±Đ»Đ¸Ñ†Ñ‹ Ñ€Đ°Đ·Đ´ĐµĐ»Đ¾Đ² %(primary_first)d %(primary_last)d Đ² " "%(dev_path)s..." #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "Đ—Đ°Đ¿Đ¸ÑÑŒ Ñ‚Đ°Đ±Đ»Đ¸Ñ†Ñ‹ Ñ€Đ°Đ·Đ´ĐµĐ»Đ¾Đ² %s Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ°." #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Ñ€Đ¸ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Ñ Ñ„Đ°Đ¹Đ»Đ¾Đ²Đ¾Đ¹ ÑиÑÑ‚ĐµĐ¼Ñ‹ (Đ¾Đ¶Đ¸Đ´Đ°ĐµĐ¼Đ¾ Đ´Đ»Ñ ĐºĐ¾Đ¿Đ¸Đ¹ Đ½Đµ Đ½Đ° базе " "linux): %s" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ¼ĐµÑ‰ĐµĐ½Đ¸Ñ vhd Đ½Đ° Đ½Đ¾Đ²Ñ‹Đ¹ ÑƒĐ·ĐµĐ»" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Đ—Đ°Đ¿ÑƒÑĐº Đ¼Đ¾ÑÑ‚Đ° Đ¸Đ½Ñ‚ĐµÑ€Ñ„ĐµĐ¹Ñа Đ´Đ»Ñ %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ĐºĐ¾Đ¿Đ¸Đ¸ %s" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¾Đ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ Ñ‚Đ¾Đ¼Đ° Đ² базе Đ´Đ°Đ½Đ½Ñ‹Ñ…" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 #, fuzzy msgid "Finished snapshot and upload for VM" msgstr "Đ“Đ¾Ñ‚Đ¾Đ²Ñ‹Đ¹ ÑĐ½Đ¸Đ¼Đ¾Đº и Đ²Ñ‹Đ³Ñ€ÑƒĐ·ĐºĐ° Đ´Đ»Ñ Đ’Đœ %s" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ĐºĐ¾Đ¿Đ¸Đ¸" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 #, fuzzy msgid "Unable to find root VBD/VDI for VM" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ¿Đ¾Đ¸ÑĐºĐ° vbd Đ´Đ»Ñ vdi %s" #: nova/virt/xenapi/vmops.py:1261 #, fuzzy msgid "Destroying VDIs" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ xvp" #: nova/virt/xenapi/vmops.py:1288 #, fuzzy msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" "ĐĐ¾Đ¿Đ¸Ñ %(instance_uuid)s иÑĐ¿Đ¾Đ»ÑŒĐ·ÑƒĐµÑ‚ RAW или VHD, Đ¿Ñ€Đ¾Đ¿ÑƒÑĐº ÑĐ´Ñ€Đ° и ÑƒĐ´Đ°Đ»ĐµĐ½Đ¸Đµ " "ramdisk" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "ĐºĐ¾Đ¿Đ¸Ñ ÑĐ¾Đ´ĐµÑ€Đ¶Đ¸Ñ‚ ÑĐ´Ñ€Đ¾ или ramdisk, Đ½Đ¾ Đ½Đµ Đ¾Đ±Đ°" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "Ñ„Đ°Đ¹Đ»Ñ‹ ÑĐ´Ñ€Đ°/ramdisk ÑƒĐ´Đ°Đ»ĐµĐ½Ñ‹" #: nova/virt/xenapi/vmops.py:1329 #, fuzzy msgid "Destroying VM" msgstr "Đ’Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Đµ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ xvp" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "Đ’Đœ Đ½Đµ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°, Đ¿Ñ€Đ¾Đ¿ÑƒÑĐº Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ°Ñ†Đ¸Đ¸..." #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "ĐĐ¾Đ¿Đ¸Ñ Đ² ÑĐ¾ÑÑ‚Đ¾ÑĐ½Đ¸Đ¸ Ñ€ĐµĐ¶Đ¸Đ¼Đ° Đ²Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ: %s" #: nova/virt/xenapi/vmops.py:1451 #, fuzzy msgid "VM is not present, skipping soft delete..." msgstr "Đ’Đœ Đ½Đµ Đ¿Ñ€ĐµĐ´Đ¾ÑÑ‚Đ°Đ²Đ»ĐµĐ½Đ°, Đ¿Ñ€Đ¾Đ¿ÑƒÑĐº Đ²Ñ‹Đ¿Đ¾Đ»Đ½ĐµĐ½Đ¸Ñ Đ»Đ¸ĐºĐ²Đ¸Đ´Đ°Ñ†Đ¸Đ¸..." #: nova/virt/xenapi/vmops.py:1652 #, fuzzy msgid "Injecting network info to xenstore" msgstr "уÑÑ‚Đ°Đ½Đ¾Đ²ĐºĐ° ÑĐµÑ‚ĐµĐ²Đ¾Đ³Đ¾ ÑƒĐ·Đ»Đ°" #: nova/virt/xenapi/vmops.py:1675 #, fuzzy msgid "Creating vifs" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ Đ¸Đ·Đ¾Đ±Ñ€Đ°Đ¶ĐµĐ½Đ¸Ñ" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ VIF Đ´Đ»Ñ Đ’Đœ %(vm_ref)s, ÑĐµÑ‚ÑŒ %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 #, fuzzy msgid "No suitable network for migrate" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ ÑĐµÑ‚ĐµĐ²Đ¾Đ¹ Ñ„Đ¾Ñ€Đ¼Đ°Ñ‚" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 #, fuzzy msgid "Migrate Send failed" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° ÑĐ¾Đ·Đ´Đ°Đ½Đ¸Ñ" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Đ¡Đ¾Đ·Đ´Đ°Đ½Đ¸Đµ pbd Đ´Đ»Ñ SR" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "ĐŸĐ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ SR" #: nova/virt/xenapi/volume_utils.py:89 #, fuzzy msgid "Forgetting SR..." msgstr "Đ—Đ°Đ±Ñ‹Đ²Đ°Đ½Đ¸Đµ SR %s..." #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ½Đ°Đ¹Ñ‚Đ¸ SR из VBD %s" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "ĐŸÑ€Đ¾Đ¿ÑƒÑĐº иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ %(exc)s Đ¿Ñ€Đ¸ Đ¿Đ¾Đ»ÑƒÑ‡ĐµĐ½Đ¸Đ¸ PBD Đ´Đ»Ñ %(sr_ref)s" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "ĐŸÑ€Đ¾Đ¿ÑƒÑĐº иÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ %(exc)s Đ¿Ñ€Đ¸ Đ¾Ñ‚ÑĐ¾ĐµĐ´Đ¸Đ½ĐµĐ½Đ¸Đ¸ PBD %(pbd)s" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ²Đ½ĐµĐ´Ñ€Đ¸Ñ‚ÑŒ VDI Đ½Đ° SR %s" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Đ¾Đ»ÑƒÑ‡Đ¸Ñ‚ÑŒ Đ·Đ°Đ¿Đ¸ÑÑŒ VDI %s Đ½Đ°" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ²Đ½ĐµĐ´Ñ€Đ¸Ñ‚ÑŒ VDI Đ´Đ»Ñ SR %s" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Đ¢Đ¾Ñ‡ĐºĐ° Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Ñ Đ½Đµ Đ¼Đ¾Đ¶ĐµÑ‚ Đ±Ñ‹Ñ‚ÑŒ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Đ°: %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ²Ñ‹Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ÑŒ Đ²Ñ…Đ¾Đ´ Đ² XenAPI (Đ½ĐµĐ´Đ¾ÑÑ‚Đ°Ñ‚Đ¾Ñ‡Đ½Đ¾ ÑĐ²Đ¾Đ±Đ¾Đ´Đ½Đ¾Đ³Đ¾ Đ¼ĐµÑÑ‚Đ° Đ½Đ° " "Dom0?)" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "Đ˜ÑĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đµ: %s" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "ĐÑˆĐ¸Đ±ĐºĐ° Đ² ÑĐ¾Đ³Đ»Đ°ÑˆĐµĐ½Đ¸Đ¸: %s" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "ĐĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¹ Đ·Đ°Đ¿Ñ€Đ¾Ñ: %s" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "Đ—Đ°Đ¿Ñ€Đ¾Ñ: %s" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "Đ—Đ°Đ¿Ñ€Đ¾Ñ ÑĐ´ĐµĐ»Đ°Đ½ Ñ Đ¾Ñ‚ÑутÑÑ‚Đ²ÑƒÑÑ‰Đ¸Đ¼ Ñ‚Đ¾ĐºĐµĐ½Đ¾Đ¼: %s" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "Đ—Đ°Đ¿Ñ€Đ¾Ñ ÑĐ´ĐµĐ»Đ°Đ½ Ñ Đ½ĐµĐ´Đ¾Đ¿ÑƒÑÑ‚Đ¸Đ¼Ñ‹Đ¼ Ñ‚Đ¾ĐºĐµĐ½Đ¾Đ¼: %s" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "ĐĐµĐ¿Ñ€ĐµĐ´Đ²Đ¸Đ´ĐµĐ½Đ½Đ°Ñ Đ¾ÑˆĐ¸Đ±ĐºĐ°: %s" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "Đ—Đ°Đ¿ÑƒÑĐº ÑƒĐ·Đ»Đ° ÑĐµÑ‚Đ¸ nova-xvpvncproxy (Đ²ĐµÑ€ÑĐ¸Ñ %s)" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 #, fuzzy msgid "status must be 'in-use'" msgstr "ĐĐ±Ñ€Đ°Đ· Đ´Đ¾Đ»Đ¶ĐµĐ½ Đ±Ñ‹Ñ‚ÑŒ Đ´Đ¾ÑÑ‚ÑƒĐ¿ĐµĐ½" #: nova/volume/cinder.py:227 #, fuzzy msgid "status must be 'available'" msgstr "ĐĐ±Ñ€Đ°Đ· Đ´Đ¾Đ»Đ¶ĐµĐ½ Đ±Ñ‹Ñ‚ÑŒ Đ´Đ¾ÑÑ‚ÑƒĐ¿ĐµĐ½" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/km/0000775000175400017540000000000012323722545016520 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/km/LC_MESSAGES/0000775000175400017540000000000012323722546020306 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/km/LC_MESSAGES/nova.po0000664000175400017540000116540212323721510021610 0ustar jenkinsjenkins00000000000000# Khmer translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-11-22 05:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Khmer " "(http://www.transifex.com/projects/p/openstack/language/km/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/en_GB/0000775000175400017540000000000012323722545017063 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/en_GB/LC_MESSAGES/0000775000175400017540000000000012323722546020651 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/en_GB/LC_MESSAGES/nova.po0000664000175400017540000120610712323721510022151 0ustar jenkinsjenkins00000000000000# English (United Kingdom) translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-03-30 11:10+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: English (United Kingdom) \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Filename of root CA" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Filename of private key" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Filename of root Certificate Revocation List" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Where we keep our keys" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Where we keep our root CA" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Should we use a CA for each project?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "Subject for certificate for users, %s for project, user, timestamp" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Subject for certificate for projects, %s for project, timestamp" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "Flags path: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "An unknown exception occurred." #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Failed to decrypt text" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Failed to decrypt text" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "Virtual Interface creation failed" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "Not authorised." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "User does not have admin privileges" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Policy doesn't allow %(action)s to be performed." #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "Unacceptable parameters." #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "Volume %(volume_id)s is not attached to anything" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "The request is invalid." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Invalid IP protocol %(protocol)s." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Invalid content type %(content_type)s." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "Invalid cidr %(cidr)s." #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "Invalid cidr %(cidr)s." #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "instance %s: resuming" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "Invalid content type %(content_type)s." #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Unable to attach volume to instance %s" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "Instance %(instance_id)s is not running." #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "Link Local address is not found.:%s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "Couldn't get Link Local IP of %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "Invalid backend: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Unable to locate volume %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Unable to locate volume %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Unable to locate volume %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "Get console output for instance %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "instance %s: resuming" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 #, fuzzy msgid "Invalid CIDR" msgstr "Invalid cidr %(cidr)s." #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "The request is invalid." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Invalid instance type %(instance_type)s." #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "Instance %(instance_id)s is not running." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "Instance %(instance_id)s is not running." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "Invalid volume" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Unable to attach volume to instance %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Starting VLAN interface %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Instance %(instance_id)s is not running." #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "An unknown exception occurred." #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "Unable to detach volume %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "instance %s: resuming" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "instance %s: suspending" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "instance %s: suspending" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "Invalid backend: %s" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Calling getter %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Calling getter %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "Instance %(instance_id)s is not running." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "instance %s: snapshotting" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Instance %(instance_id)s is not running." #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Instance %(instance_id)s is not running." #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Instance %(instance_id)s is not running." #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Unable to locate volume %s" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "instance %s: reset network" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Rebooting instance %s" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Unable to attach volume to instance %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Virtual Interface creation failed" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Unable to destroy VBD %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Unable to destroy VBD %s" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "volume %s: creating export" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Rebooting instance %s" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Get console output for instance %s" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Rebooting instance %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Unable to detach volume %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "Rebooting instance %s" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "instance %s: snapshotting" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Rebooting instance %s" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "Invalid instance type %(instance_type)s." #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "instance %s: snapshotting" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "instance %s: retrieving diagnostics" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "instance %s: reset network" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "Get console output for instance %s" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "Detaching volume from unknown instance %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Re-exporting %s volumes" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "instance %s: snapshotting" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Re-exporting %s volumes" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "Invalid instance type %(instance_type)s." #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Invalid volume" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d is stale, relaunching dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "Hupping dnsmasq threw %s" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d is stale, relaunching dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "killing radvd threw %s" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d is stale, relaunching radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "Invalid backend: %s" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Starting VLAN interface %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Starting Bridge interface for %s" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "Starting Bridge interface for %s" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Invalid volume" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "Invalid instance type %(instance_type)s." #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "Nested return %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Result was %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Running cmd (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Full set of FLAGS:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Instance %(instance_id)s is not running." #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "Keypair data is invalid" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "Instance %(instance_id)s is not running." #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "Invalid instance type %(instance_type)s." #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "Invalid instance type %(instance_type)s." #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "Invalid instance type %(instance_type)s." #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Get console output for instance %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "Invalid instance type %(instance_type)s." #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "instance %s: suspending" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, fuzzy, python-format msgid "Baremetal interface %s already in use" msgstr "Virtual Interface creation failed" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Rebooting instance %s" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Unable to locate volume %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Unable to locate volume %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Unable to locate volume %s" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Unable to locate volume %s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "Get console output for instance %s" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Starting Bridge interface for %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "Starting Bridge interface for %s" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Calling getter %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Re-exporting %s volumes" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Re-exporting %s volumes" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Get console output for instance %s" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Get console output for instance %s" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "Get console output for instance %s" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Unable to destroy VBD %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "Rebooting instance %s" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Re-exporting %s volumes" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Unable to attach volume to instance %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Get console output for instance %s" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, fuzzy, python-format msgid "Connection to libvirt failed: %s" msgstr "Connection to melange failed" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "volume %s: created successfully" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "User does not have admin privileges" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Unable to detach volume %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Starting Bridge interface for %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 #, fuzzy msgid "Destroyed the VM" msgstr "Nested return %s" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "Instance %(instance_id)s is not running." #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Re-exporting %s volumes" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "instance %s: resuming" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Re-exporting %s volumes" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Unable to locate volume %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Re-scanning SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Re-scanning SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Unable to locate volume %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Unable to detach volume %s" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "Calling getter %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Raising NotImplemented" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake does not have an implementation for %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Calling getter %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Calling getter %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "Instance %(instance_id)s is not running." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "volume %s: creating export" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "VBD not found in instance %s" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "Unable to unplug VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "Unable to destroy VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." #: nova/virt/xenapi/vm_utils.py:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Size for image %(image)s:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "Copying VDI %s to /boot/guest on dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk VDI %s destroyed" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "VDI %s is still available" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "VHD %(vdi_uuid)s has parent %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, python-format msgid "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." msgstr "" "Parent %(parent_uuid)s doesn't match original parent " "%(original_parent_uuid)s, waiting for coalesce..." #: nova/virt/xenapi/vm_utils.py:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "Plugging VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "Plugging VBD %s done." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "Destroying VBD for VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "Destroying VBD for VDI %s done." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "Writing partition table %s done." #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Starting Bridge interface for %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "Rebooting instance %s" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Rebooting instance %s" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "Creating VIF for VM %(vm_ref)s, network %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "volume %s: creating export" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/bg_BG/0000775000175400017540000000000012323722545017051 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/bg_BG/LC_MESSAGES/0000775000175400017540000000000012323722546020637 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/bg_BG/LC_MESSAGES/nova.po0000664000175400017540000116547712323721510022155 0ustar jenkinsjenkins00000000000000# English (United States) translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-18 19:07+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Bulgarian (Bulgaria) " "(http://www.transifex.com/projects/p/openstack/language/bg_BG/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ta/0000775000175400017540000000000012323722546016516 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ta/LC_MESSAGES/0000775000175400017540000000000012323722546020303 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ta/LC_MESSAGES/nova.po0000664000175400017540000116541112323721510021605 0ustar jenkinsjenkins00000000000000# Tamil translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-03-25 00:30+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Tamil " "(http://www.transifex.com/projects/p/openstack/language/ta/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ko_KR/0000775000175400017540000000000012323722545017116 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ko_KR/LC_MESSAGES/0000775000175400017540000000000012323722546020704 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ko_KR/LC_MESSAGES/nova.po0000664000175400017540000116642012323721510022207 0ustar jenkinsjenkins00000000000000# English (United States) translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: # Sungjin Gang , 2013 msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-06 16:05+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: en_US \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "root CÁ˜ 파́¼ ́´ë¦„" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "ê°œ́¸ Keý˜ 파́¼ ́´ë¦„" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "Root ́¦́„œ í기 ëª©ë¡ íŒŒ́¼ ́´ë¦„" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "ê°€́ƒ ́¸í„°í˜́´́¤ ́ƒ́„± ́‹¤íŒ¨" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "́¸́¦ë˜́§€ ́•́Œ." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "ê·¸ ́”́²­́€ ë§́§€ ́•́µë‹ˆë‹¤." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)së” v4/6́£¼́†Œ́— ë§́§€ ́•́€ IṔ…니다." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "Disk format %(disk_format)s를 ́•Œ ́ˆ˜ ́—†́µë‹ˆë‹¤." #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "vol = %s\n" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "́£¼́†Œ 할당" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "́£¼́†Œ 릴리́¦ˆ %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "́…ë ¥ ê°’́´ ́ •확하́§€ ́•́µë‹ˆë‹¤." #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "́¸́¤í„´́¤ ́¬́‹œ́‘ ́‹¤íŒ¨" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "Keypair ë°́´í„°ê°€ ë§́§€ ́•́µë‹ˆë‹¤" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "́¸́¤í„´́¤ ́¬́‹œ́‘ ́‹¤íŒ¨" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/ne/0000775000175400017540000000000012323722545016513 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ne/LC_MESSAGES/0000775000175400017540000000000012323722546020301 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/ne/LC_MESSAGES/nova.po0000664000175400017540000116543012323721510021604 0ustar jenkinsjenkins00000000000000# Nepali translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-08-30 22:38+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Nepali " "(http://www.transifex.com/projects/p/openstack/language/ne/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/pa_IN/0000775000175400017540000000000012323722545017077 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pa_IN/LC_MESSAGES/0000775000175400017540000000000012323722546020665 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pa_IN/LC_MESSAGES/nova.po0000664000175400017540000116602012323721510022164 0ustar jenkinsjenkins00000000000000# Punjabi (Gurmukhi, India) translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-12-21 03:12+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Panjabi (Punjabi) (India) " "(http://www.transifex.com/projects/p/openstack/language/pa_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "ਨੀਤੀ ਦੀ ਪà©à¨°à¨¤à©€à¨¨à¨¿à¨§à¨¤à¨¾ ਕਰਦੀ JSON ਫਾਈਲ" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "ਜਦੋਂ ਬੇਨਤੀ ਕੀਤਾ ਗਿਆ ਨਿਯਮ ਨਹੀਂ ਲੱਭਿਆ ਤਾਂ ਨਿਯਮ ਜਾਂà¨à©‡ ਗà¨" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/he_IL/0000775000175400017540000000000012323722545017071 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/he_IL/LC_MESSAGES/0000775000175400017540000000000012323722546020657 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/he_IL/LC_MESSAGES/nova.po0000664000175400017540000116544012323721510022163 0ustar jenkinsjenkins00000000000000# Hebrew (Israel) translations for nova. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2014-01-24 12:40+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hebrew (Israel) " "(http://www.transifex.com/projects/p/openstack/language/he_IL/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/fa/0000775000175400017540000000000012323722545016477 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fa/LC_MESSAGES/0000775000175400017540000000000012323722546020265 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/fa/LC_MESSAGES/nova.po0000664000175400017540000116540612323721510021573 0ustar jenkinsjenkins00000000000000# Persian translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-11-22 05:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Persian " "(http://www.transifex.com/projects/p/openstack/language/fa/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/uk/0000775000175400017540000000000012323722546016531 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/uk/LC_MESSAGES/0000775000175400017540000000000012323722546020316 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/uk/LC_MESSAGES/nova.po0000664000175400017540000117042512323721510021621 0ustar jenkinsjenkins00000000000000# Ukrainian translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-08-23 11:21+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: Ukrainian \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Đ†Đ¼'Ñ Ñ„Đ°Đ¹Đ»Ñƒ ÑĐµĐºÑ€ĐµÑ‚Đ½Đ¾Đ³Đ¾ ĐºĐ»ÑÑ‡Đ°" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "ШлÑÑ… Đ´Đ¾ Đ·Đ±ĐµÑ€ĐµĐ¶ĐµĐ½Đ¸Ñ… ĐºĐ»ÑÑ‡Ñ–Đ²" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "без Đ¿Đ¾Ñ€ÑĐ´ĐºÑƒ Đ´Đ»Ñ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ: %s" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "без Đ¿Đ¾Ñ€ÑĐ´ĐºÑƒ Đ´Đ»Ñ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ: %s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "без Đ¿Đ¾Ñ€ÑĐ´ĐºÑƒ Đ´Đ»Ñ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ: %s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Đ—Đ°Đ½Đ°Đ´Ñ‚Đ¾ Đ±Đ°Đ³Đ°Ñ‚Đ¾ Đ½ĐµĐ²Đ´Đ°Đ»Đ¸Ñ… Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Ñ–ĐºĐ°Ñ†Ñ–Đ¹." #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Đ—Đ°Đ½Đ°Đ´Ñ‚Đ¾ Đ±Đ°Đ³Đ°Ñ‚Đ¾ Đ½ĐµĐ²Đ´Đ°Đ»Đ¸Ñ… Đ°ÑƒÑ‚ĐµĐ½Ñ‚Đ¸Ñ„Ñ–ĐºĐ°Ñ†Ñ–Đ¹." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Đ¡Ñ‚Đ²Đ¾Ñ€Đ¸Ñ‚Đ¸ Ñ€Đ¾Đ·Đ´Ñ–Đ» Đ½Đ° %s ГБ" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "Đ»Đ¸ÑˆĐµ Đ³Ñ€ÑƒĐ¿Đ° \"Đ²ÑÑ–\" Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼ÑƒÑ”Ñ‚ÑŒÑÑ" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "ĐĐ³Đ¾Đ»Đ¾ÑˆĐµĐ½Đ½Ñ Ñ‡ĐµÑ€Đ³Đ¸ %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "ĐĐ³Đ¾Đ»Đ¾ÑˆĐµĐ½Đ½Ñ Ñ‡ĐµÑ€Đ³Đ¸ %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Це Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾ Đ²Đ¶Đµ Ñ–ÑĐ½ÑƒÑ” Đ² Đ³Ñ€ÑƒĐ¿Ñ– %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "без Đ¿Đ¾Ñ€ÑĐ´ĐºÑƒ Đ´Đ»Ñ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "без Đ¿Đ¾Ñ€ÑĐ´ĐºÑƒ Đ´Đ»Ñ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "Đ¾Ñ‚Ñ€Đ¸Đ¼Đ°Đ½Đ¾ %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Đ’Đ¸Đ»ÑƒÑ‡Đ¸Ñ‚Đ¸ Đ³Ñ€ÑƒĐ¿Ñƒ Đ±ĐµĐ·Đ¿ĐµĐºĐ¸ %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "Đ¾Ñ‚Ñ€Đ¸Đ¼Đ°Đ½Đ¾ %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Це Đ¿Ñ€Đ°Đ²Đ¸Đ»Đ¾ Đ²Đ¶Đµ Ñ–ÑĐ½ÑƒÑ” Đ² Đ³Ñ€ÑƒĐ¿Ñ– %s" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "Đ¾Ñ‚Ñ€Đ¸Đ¼Đ°Đ½Đ¾ %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "ĐĐ³Đ¾Đ»Đ¾ÑˆĐµĐ½Đ½Ñ Ñ‡ĐµÑ€Đ³Đ¸ %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "без Đ¿Đ¾Ñ€ÑĐ´ĐºÑƒ Đ´Đ»Ñ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ: %s" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Đ’Ñ–Đ´'Ñ”Đ´Đ½Đ°Ñ‚Đ¸ Ñ‚Đ¾Đ¼ %s" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/pt_BR/0000775000175400017540000000000012323722545017117 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pt_BR/LC_MESSAGES/0000775000175400017540000000000012323722546020705 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/pt_BR/LC_MESSAGES/nova.po0000664000175400017540000122567312323721510022216 0ustar jenkinsjenkins00000000000000# Brazilian Portuguese translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2012-05-04 19:25+0000\n" "Last-Translator: JĂºlio Cezar Santos Pires \n" "Language-Team: Brazilian Portuguese \n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Nome do arquivo da CA raiz" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Nome do arquivo da chave privada" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Aonde armazenamos nossas chaves" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "Onde mantemos nosso CA raiz" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Devemos usar um CA para cada projeto?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "Assunto do certificado para usuĂ¡rios, %s para projeto, usuĂ¡rio, timestamp" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "Assunto do certificado para projetos, %s para projeto, timestamp" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 #, fuzzy msgid "Failed to write inbound.csr" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "LocalizaĂ§Ă£o dos sinalizadores: %s" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, fuzzy, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "Falhou ao descriptografar texto" #: nova/exception.py:147 #, fuzzy, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "Falhou ao descriptografar texto" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "NĂ£o autorizado." #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "UsuĂ¡rio nĂ£o tem privilĂ©gios de administrador" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, fuzzy, python-format msgid "Image %(image_id)s is not active." msgstr "Imagem %(image_id)s nĂ£o foi encontrada." #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Kernel nĂ£o encontrado para a imagem %(image_id)s." #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "ParĂ¢metros inaceitĂ¡veis." #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "A requisiĂ§Ă£o Ă© invĂ¡lida." #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "Sequencia de porta %(from_port)s:%(to_port)s Ă© invĂ¡lida. %(msg)s" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "Protocolo IP %(protocol)s Ă© invĂ¡lido." #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Tipo de conteĂºdo %(content_type)s Ă© invĂ¡lido." #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "%(err)s" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, fuzzy, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:354 #, fuzzy, python-format msgid "Instance %(instance_id)s is not ready" msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "Serviço estĂ¡ indisponĂ­vel neste momento" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, fuzzy, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "Serviço estĂ¡ indisponĂ­vel neste momento" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "%(address)s nĂ£o Ă© um endereço IPv4/6 vĂ¡lido." #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "Formato do disco %(disk_format)s nĂ£o Ă© aceito" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, fuzzy, python-format msgid "Invalid ID received %(id)s." msgstr "Dados recebidos Ă© invĂ¡lido" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "InstĂ¢ncia nĂ£o existe" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Volume %(volume_id)s nĂ£o pode ser encontrado." #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "Imagem %(image_id)s nĂ£o foi encontrada." #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, fuzzy, python-format msgid "Network %(network_id)s is duplicated." msgstr "Rede %(network_id)s nĂ£o foi encontrada." #: nova/exception.py:566 #, fuzzy, python-format msgid "Network %(network_id)s is still in use." msgstr "Rede %(network_id)s nĂ£o foi encontrada." #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "%(req)s Ă© necessĂ¡rio para criar a rede." #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "Rede %(network_id)s nĂ£o foi encontrada." #: nova/exception.py:578 #, fuzzy, python-format msgid "Port id %(port_id)s could not be found." msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "Nenhuma rede definida." #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, fuzzy, python-format msgid "Port %(port_id)s is still in use." msgstr "Rede %(network_id)s nĂ£o foi encontrada." #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Ponto de montagem %(mountpoint)s conectada Ă  instĂ¢ncia %(instance_name)s" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, fuzzy, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, fuzzy, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, fuzzy, python-format msgid "Floating ip %(address)s already exists." msgstr "group %s jĂ¡ existe" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 #, fuzzy msgid "Floating ip pool not found." msgstr "Removendo rede com id %s" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "Interface %(interface)s nĂ£o encontrada." #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Serviço %(service_id)s nĂ£o encontrado." #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "Host %(host)s nĂ£o encontrado." #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "Host %(host)s nĂ£o encontrado." #: nova/exception.py:816 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/exception.py:820 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "UsuĂ¡rio %(user_id)s nĂ£o foi encontrado." #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, fuzzy, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:909 #, fuzzy, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:914 #, fuzzy, python-format msgid "Invalid console type %(console_type)s" msgstr "Tipo de conteĂºdo %(content_type)s Ă© invĂ¡lido." #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, fuzzy, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "InstĂ¢ncia nĂ£o existe" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, fuzzy, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, fuzzy, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "group %s jĂ¡ existe" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, fuzzy, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:1208 #, fuzzy, python-format msgid "Node %(node_id)s could not be found." msgstr "Volume %(volume_id)s nĂ£o pode ser encontrado." #: nova/exception.py:1212 #, fuzzy, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/exception.py:1216 #, fuzzy, python-format msgid "Marker %(marker)s could not be found." msgstr "Imagem %(image_id)s nĂ£o foi encontrada." #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "Kernel nĂ£o encontrado para a imagem %(image_id)s." #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "Kernel nĂ£o encontrado para a imagem %(image_id)s." #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, fuzzy, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Começando a terminar instĂ¢ncias" #: nova/exception.py:1263 #, fuzzy, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "Começando a terminar instĂ¢ncias" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, fuzzy, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, fuzzy, python-format msgid "The CA file for %(project)s could not be found" msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/exception.py:1304 #, fuzzy, python-format msgid "The CRL file for %(project)s could not be found" msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "A instĂ¢ncia %(instance_id)s nĂ£o estĂ¡ executando." #: nova/exception.py:1345 #, fuzzy, python-format msgid "Shadow table with name %(name)s already exists." msgstr "group %s jĂ¡ existe" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, fuzzy, python-format msgid "Unsupported object type %(objtype)s" msgstr "Objeto esperado do tipo: %s" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 #, fuzzy msgid "Failed to get nw_info" msgstr "Falha ao obter metadados para o ip: %s" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "Encerrado serviço que nĂ£o tem entrada na base de dados" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "Endereço para Link Local nĂ£o encontrado: %s" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "NĂ£o foi possĂ­vel atribuir um IP para o Link Local de %(interface)s :%(ex)s" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "Backend invĂ¡lido: %s" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "Objeto esperado do tipo: %s" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "Muitas falhas de autenticaĂ§Ă£o." #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, fuzzy, python-format msgid "Keystone failure: %s" msgstr "Falha de AutenticaĂ§Ă£o: %s" #: nova/api/ec2/__init__.py:303 #, fuzzy msgid "Timestamp failed validation." msgstr "Muitas falhas de autenticaĂ§Ă£o." #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "aĂ§Ă£o: %s" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "Criar par de chaves %s" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "Remover par de chaves %s" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "NĂ£o existe regra para os parĂ¢metros especificados" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "Criar volume de %s GB" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "Desanexar volume %s" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "Alocar endereço" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "Liberar endereço %s" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 #, fuzzy msgid "Unable to associate IP Address, no fixed_ips." msgstr "Desatribuir endereço %s" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "Desatribuir endereço %s" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "Começando a terminar instĂ¢ncias" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "Reiniciar instĂ¢ncia %r" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "Removendo o registro da imagem %s" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "usuĂ¡rio ou grupo nĂ£o especificado" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "apenas o grupo \"all\" Ă© suportado" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "operation_type deve ser add ou remove" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "Atualizando publicidade da imagem %s" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "InstĂ¢ncia nĂ£o existe" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 #, fuzzy msgid "Timestamp is invalid." msgstr "A requisiĂ§Ă£o Ă© invĂ¡lida." #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "Falha ao obter metadados para o ip: %s" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "Ocorreu um erro desconhecido. Por favor tente sua requisiĂ§Ă£o novamente." #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Falha ao obter metadados para o ip: %s" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "Capturado o erro: %s" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, fuzzy, python-format msgid "Invalid is_public filter [%s]" msgstr "Assinatura invĂ¡lida para usuĂ¡rio %s" #: nova/api/openstack/compute/flavors.py:131 #, fuzzy, python-format msgid "Invalid minRam filter [%s]" msgstr "Assinatura invĂ¡lida para usuĂ¡rio %s" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "Imagem nĂ£o encontrada." #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "Corpo do pedido e incompatibilidade URI" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "Corpo da solicitaĂ§Ă£o contĂ©m muitos intens" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "InstĂ¢ncia nĂ£o existe" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "Este pedido estava com taxa limitada." #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 #, fuzzy msgid "Only administrators may list deleted instances" msgstr "Começando a terminar instĂ¢ncias" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, fuzzy, python-format msgid "Flavor '%s' could not be found " msgstr "Host %(host)s nĂ£o encontrado." #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 #, fuzzy msgid "HostId cannot be updated." msgstr "Ponto de montagem nĂ£o pode ser traduzido: %s" #: nova/api/openstack/compute/servers.py:1068 #, fuzzy msgid "Personality cannot be updated." msgstr "Ponto de montagem nĂ£o pode ser traduzido: %s" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 #, fuzzy msgid "Flavor used by the instance could not be found." msgstr "Serviço %(service_id)s nĂ£o encontrado." #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 #, fuzzy msgid "Image that the instance was started with could not be found." msgstr "Serviço %(service_id)s nĂ£o encontrado." #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 #, fuzzy msgid "Unable to set password on instance" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "Compute.api::pause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "Compute.api::unpause %s" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "compute.api::suspend %s" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "Compute.api::reset_network %s" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "Compute.api::lock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "Compute.api::unlock %s" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "InstĂ¢ncia nĂ£o encontrada" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, fuzzy, python-format msgid "Compute.api::resetState %s" msgstr "compute.api::resume %s" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 #, fuzzy msgid "Attach interface" msgstr "Falha ao suspender instĂ¢ncia" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Falha ao suspender instĂ¢ncia" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 #, fuzzy msgid "Attachments update is not supported" msgstr "atributo nĂ£o suportado: %s" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, fuzzy, python-format msgid "Detach interface %s" msgstr "Iniciando a VLAN %s" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Interface %(interface)s nĂ£o encontrada." #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, fuzzy, python-format msgid "Unknown action %s" msgstr "aĂ§Ă£o: %s" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 #, fuzzy msgid "Unable to get console" msgstr "NĂ£o Ă© possĂ­vel desconectar o volume %s" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "InstĂ¢ncia nĂ£o existe" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Certificado %(certificate_id)s nĂ£o encontrado." #: nova/api/openstack/compute/contrib/flavor_access.py:94 #, fuzzy msgid "Flavor not found." msgstr "Imagem nĂ£o encontrada." #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 #, fuzzy msgid "No request body" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "InstĂ¢ncia nĂ£o encontrada" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, fuzzy, python-format msgid "Floating ip not found for id %s" msgstr "Removendo rede com id %s" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, fuzzy, python-format msgid "Floating ip %s has been disassociated" msgstr "group %s jĂ¡ existe" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "Endereço nĂ£o especificado" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 #, fuzzy msgid "floating ip not found" msgstr "Removendo rede com id %s" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, fuzzy, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 #, fuzzy msgid "fping utility is not found." msgstr "Removendo rede com id %s" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, fuzzy, python-format msgid "Invalid mode: '%s'" msgstr "Backend invĂ¡lido: %s" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, fuzzy, python-format msgid "Enabling host %s." msgstr "Chamando o pai %s" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, fuzzy, python-format msgid "Disabling host %s." msgstr "Chamando o pai %s" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, fuzzy, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "Serviço %(service_id)s nĂ£o encontrado." #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, fuzzy, python-format msgid "No hypervisor matching '%s' could be found." msgstr "UsuĂ¡rio %(user_id)s nĂ£o foi encontrado." #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, fuzzy, python-format msgid "Invalid timestamp for date %s" msgstr "Assinatura invĂ¡lida para usuĂ¡rio %s" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, fuzzy, python-format msgid "Disassociating host with network with id %s" msgstr "Mostrando rede com id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, fuzzy, python-format msgid "Disassociating project with network with id %s" msgstr "Mostrando rede com id %s" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "Mostrando rede com id %s" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "Removendo rede com id %s" #: nova/api/openstack/compute/contrib/os_networks.py:116 #, fuzzy msgid "Missing network in body" msgstr "Mostrando rede com id %s" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, fuzzy, python-format msgid "Creating network with label %s" msgstr "Removendo rede com id %s" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 #, fuzzy msgid "No CIDR requested" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 #, fuzzy msgid "Address could not be converted." msgstr "Host %(host)s nĂ£o encontrado." #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 #, fuzzy msgid "Create networks failed" msgstr "Nenhuma rede definida." #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 #, fuzzy msgid "This default rule already exists." msgstr "Esta regra jĂ¡ existe no grupo %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, fuzzy, python-format msgid "Showing security_group_default_rule with id %s" msgstr "Mostrando rede com id %s" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, fuzzy, python-format msgid "Bad prefix for network in cidr %s" msgstr "Removendo rede com id %s" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 #, fuzzy msgid "start instance" msgstr "Iniciando instĂ¢ncia %s" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 #, fuzzy msgid "stop instance" msgstr "Reiniciar instĂ¢ncia %r" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "vol=%s" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "Remover volume com id: %s" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, fuzzy, python-format msgid "Instance %s is not attached." msgstr "InstĂ¢ncia %s nĂ£o encontrada" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "sem mĂ©todo para mensagem: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "sem mĂ©todo para mensagem: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "Retornando exceĂ§Ă£o %s ao mĂ©todo de origem" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, fuzzy, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "Executando VPN para %s" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "NĂ£o foi possĂ­vel criar volume" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 #, fuzzy msgid "Reserved" msgstr "recebido %s" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, fuzzy, python-format msgid "error: %s" msgstr "Capturado o erro: %s" #: nova/cmd/manage.py:327 #, fuzzy msgid "network" msgstr "instĂ¢ncia %s: reset da rede" #: nova/cmd/manage.py:328 #, fuzzy msgid "IP address" msgstr "Alocar endereço" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 #, fuzzy msgid "No floating IP addresses have been defined." msgstr "group %s jĂ¡ existe" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 #, fuzzy msgid "No networks found" msgstr "Nenhuma rede definida." #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 #, fuzzy msgid "instance" msgstr "Reiniciar instĂ¢ncia %r" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "Serviço %(service_id)s nĂ£o encontrado." #: nova/cmd/manage.py:734 #, fuzzy, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "Serviço %(service_id)s nĂ£o encontrado." #: nova/cmd/manage.py:806 #, fuzzy msgid "An unexpected error has occurred." msgstr "Erro inexperado lançado: %s" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, fuzzy, python-format msgid "%s created" msgstr "_criar: %s" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, fuzzy, python-format msgid "DB Error: %s" msgstr "Capturado o erro: %s" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, fuzzy, python-format msgid "Hypervisor: %s" msgstr "Capturado o erro: %s" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "NĂ£o Ă© possĂ­vel anexar o volume na instĂ¢ncia %s" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 #, fuzzy msgid "instance termination disabled" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 #, fuzzy msgid "going to delete a resizing instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 #, fuzzy msgid "Going to try to soft delete instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/api.py:1680 #, fuzzy msgid "Going to try to terminate instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/api.py:1721 #, fuzzy msgid "Going to try to stop instance" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/compute/api.py:1747 #, fuzzy msgid "Going to try to start instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, fuzzy, python-format msgid "Going to try to live migrate instance to %s" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "Criar Grupo de Segurança %s" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "NĂ£o Ă© possĂ­vel destruir o VBD %s" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "NĂ£o Ă© possĂ­vel destruir o VBD %s" #: nova/compute/api.py:3664 #, fuzzy msgid "Security group is still in use" msgstr "Revogado entrada do grupo de segurança %s" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "Excluir grupo de segurança %s" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "Autorizada entrada do grupo de segurança %s" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "Revogado entrada do grupo de segurança %s" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Falha ao suspender instĂ¢ncia" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, fuzzy, python-format msgid "Unexpected power state %d" msgstr "Erro inexperado lançado: %s" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 #, fuzzy msgid "Failed to dealloc network for deleted instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, fuzzy, python-format msgid "Error: %s" msgstr "Capturado o erro: %s" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 #, fuzzy msgid "Allocating IP information in the background." msgstr "Removendo rede com id %s" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 #, fuzzy msgid "Failed to deallocate network for instance." msgstr "Começando a terminar instĂ¢ncias" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 #, fuzzy msgid "Rebuilding instance" msgstr "Reconstruindo instĂ¢ncia %s" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, fuzzy, python-format msgid "Failed to get compute_info for %s" msgstr "Falha ao obter metadados para o ip: %s" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Desanexar volume %s" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 #, fuzzy msgid "Rebooting instance" msgstr "Reiniciando a instĂ¢ncia %s" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "instĂ¢ncia %s: fazendo um snapshot" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "Removendo imagem %s" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 #, fuzzy msgid "error setting admin password" msgstr "Configurar senha do administrador" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Falha ao suspender instĂ¢ncia" #: nova/compute/manager.py:2965 #, fuzzy, python-format msgid "Driver Error: %s" msgstr "Capturado o erro: %s" #: nova/compute/manager.py:2989 #, fuzzy msgid "Unrescuing" msgstr "instĂ¢ncia %s: desfazendo o resgate" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, fuzzy, python-format msgid "Updating instance to original state: '%s'" msgstr "Iniciando instĂ¢ncia %s" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "InstĂ¢ncia nĂ£o existe" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 #, fuzzy msgid "Retrieving diagnostics" msgstr "instĂ¢ncia %s: recuperando os diagnĂ³sticos" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 #, fuzzy msgid "Reset network" msgstr "instĂ¢ncia %s: reset da rede" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 #, fuzzy msgid "Get console output" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/compute/manager.py:3966 #, fuzzy msgid "Getting vnc console" msgstr "Adicionando console" #: nova/compute/manager.py:4004 #, fuzzy msgid "Getting spice console" msgstr "Adicionando console" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "Desconectando volume da instĂ¢ncia desconhecida %s" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 #, fuzzy msgid "Updating volume usage cache" msgstr "Remover volume com id: %s" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "InstĂ¢ncia %s nĂ£o encontrada" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, fuzzy, python-format msgid "Deleting orphan compute node %s" msgstr "Removendo imagem %s" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, fuzzy, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "Iniciando instĂ¢ncia %s" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, fuzzy, python-format msgid "Free disk (GB): %s" msgstr "Criar par de chaves %s" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "Adicionando console" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 #, fuzzy msgid "Invalid Token" msgstr "Volume invĂ¡lido" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 #, fuzzy msgid "Failed to notify cells of instance update" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 #, fuzzy msgid "Failed to notify cells of instance fault" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, fuzzy, python-format msgid "Invalid floating ip id %s in request" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, fuzzy, python-format msgid "Invalid floating IP %s in request" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, fuzzy, python-format msgid "Invalid fixed IP Address %s in request" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/db/sqlalchemy/api.py:1465 #, fuzzy, python-format msgid "Invalid virtual interface address %s in request" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, fuzzy, python-format msgid "Invalid instance id %s in request" msgstr "Corpo do pedido estĂ¡ mal formado" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 #, fuzzy msgid "Failed storing info cache" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, fuzzy, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, fuzzy, python-format msgid "Loading network driver '%s'" msgstr "Mostrando rede com id %s" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "Endereço |%(address)s| nĂ£o estĂ¡ alocado" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, fuzzy, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, fuzzy, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "Pid %d estĂ¡ ultrapassado, reiniciando dnsmasq" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "Pid %d estĂ¡ ultrapassado, reiniciando dnsmasq" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "Pid %d estĂ¡ ultrapassado, reiniciando radvd" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, fuzzy, python-format msgid "Net device removed: '%s'" msgstr "Backend invĂ¡lido: %s" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "Iniciando a VLAN %s" #: nova/network/linux_net.py:1518 #, fuzzy, python-format msgid "Starting Bridge %s" msgstr "Iniciando instĂ¢ncia %s" #: nova/network/linux_net.py:1530 #, fuzzy, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "Interface %(interface)s nĂ£o encontrada." #: nova/network/linux_net.py:1568 #, fuzzy, python-format msgid "Failed to add interface: %s" msgstr "Falha ao suspender instĂ¢ncia" #: nova/network/linux_net.py:1800 #, fuzzy, python-format msgid "Starting bridge %s " msgstr "Iniciando instĂ¢ncia %s" #: nova/network/linux_net.py:1808 #, fuzzy, python-format msgid "Done starting bridge %s" msgstr "Removendo o registro da imagem %s" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 #, fuzzy msgid "Invalid name" msgstr "Volume invĂ¡lido" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, fuzzy, python-format msgid "deleted %s" msgstr "_remover: %s" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, fuzzy, python-format msgid "empty project id for instance %s" msgstr "tipo de instĂ¢ncia %(instance_type)s Ă© invĂ¡lida." #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, fuzzy, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "Removendo rede com id %s" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 #, fuzzy msgid "Security group id should be uuid" msgstr "Revogado entrada do grupo de segurança %s" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "Esta regra jĂ¡ existe no grupo %s" #: nova/objects/base.py:73 #, fuzzy, python-format msgid "Error setting %(attr)s" msgstr "Configurar senha do administrador" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "_remover: %s" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "Classe %(fullname)s estĂ¡ obsoleta: %(msg)s" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "Executando tarefa periĂ³dica %(full_task_name)s" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "Erro durante %(full_task_name)s: %(e)s" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Executando comando (subprocesso): %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Resultado foi %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "%r falhou. Tentando novamente." #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "Executando o comando (SSH): %s" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "Ambiente nĂ£o suportado por SSH" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Conjunto completo de FLAGS:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Volume nĂ£o encontrada para a instĂ¢ncia %(instance_id)s." #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "Recuperada conexĂ£o servidor de modelo." #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "servidor de modelo perdido" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "Tentativa de instanciar singleton" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "Erro interno" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "Endereço |%(address)s| nĂ£o estĂ¡ alocado" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, fuzzy, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "Endereço |%(address)s| nĂ£o estĂ¡ alocado" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 #, fuzzy msgid "fake vswitch not found" msgstr "InstĂ¢ncia nĂ£o encontrada" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 #, fuzzy msgid "Unable to load the virtualization driver" msgstr "NĂ£o foi possĂ­vel carregar o driver de virtualizaĂ§Ă£o: %s" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 #, fuzzy msgid "Filters added to instance" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, fuzzy, python-format msgid "Destroy called on non-existing instance %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 #, fuzzy msgid "Address not supplied to IPMI" msgstr "Endereço nĂ£o especificado" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Comando: %(cmd)s\n" "CĂ³digo de saĂ­da: %(exit_code)s\n" "SaĂ­da padrĂ£o: %(stdout)r\n" "Erro: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, fuzzy, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "tipo de instĂ¢ncia %(instance_type)s Ă© invĂ¡lida." #: nova/virt/baremetal/pxe.py:477 #, fuzzy, python-format msgid "PXE deploy completed for instance %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/baremetal/pxe.py:481 #, fuzzy, python-format msgid "PXE deploy failed for instance %s" msgstr "tipo de instĂ¢ncia %(instance_type)s Ă© invĂ¡lida." #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "tipo de instĂ¢ncia %(instance_type)s Ă© invĂ¡lida." #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, fuzzy, python-format msgid "Tilera deploy failed for instance %s" msgstr "tipo de instĂ¢ncia %(instance_type)s Ă© invĂ¡lida." #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 #, fuzzy msgid "Address not supplied to PDU" msgstr "Endereço nĂ£o especificado" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "nenhuma partiĂ§Ă£o encontrada" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, fuzzy, python-format msgid "Baremetal virtual interface %s not found" msgstr "nenhuma partiĂ§Ă£o encontrada" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, fuzzy, python-format msgid "Release loop device %s" msgstr "Liberar endereço %s" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, fuzzy, python-format msgid "Release nbd device %s" msgstr "Liberar endereço %s" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, fuzzy, python-format msgid "Failed to umount container filesystem: %s" msgstr "Falhou em montar sistema de arquivo: %s" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, fuzzy, python-format msgid "partition %s not found" msgstr "nenhuma partiĂ§Ă£o encontrada" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "Falhou em montar sistema de arquivo: %s" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 #, fuzzy msgid "Fail to mount, tearing back down" msgstr "Falha ao suspender instĂ¢ncia" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, fuzzy, python-format msgid "Loop mount error: %s" msgstr "Capturado o erro: %s" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, fuzzy, python-format msgid "NBD mount error: %s" msgstr "Capturado o erro: %s" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, fuzzy, python-format msgid "Inspecting guest OS image %s" msgstr "Removendo imagem %s" #: nova/virt/disk/vfs/guestfs.py:64 #, fuzzy, python-format msgid "No operating system found in %s" msgstr "Removendo rede com id %s" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, fuzzy, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "Falhou em montar sistema de arquivo: %s" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 #, fuzzy msgid "Tearing down appliance" msgstr "Iniciando instĂ¢ncia %s" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Falhou em montar sistema de arquivo: %s" #: nova/virt/disk/vfs/localfs.py:88 #, fuzzy, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "Falhou em montar sistema de arquivo: %s" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 #, fuzzy msgid "get_host_stats called" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/hyperv/hostops.py:179 #, fuzzy, python-format msgid "Host IP address is: %s" msgstr "Liberar endereço %s" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, fuzzy, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/hyperv/livemigrationutils.py:49 #, fuzzy, python-format msgid "Live migration failed: %s" msgstr "Falha de AutenticaĂ§Ă£o: %s" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, fuzzy, python-format msgid "VM not found: %s" msgstr "Imagem nĂ£o encontrada." #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, fuzzy, python-format msgid "Starting live migration for VM: %s" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, fuzzy, python-format msgid "Migration target host: %s" msgstr "Atualizando agente para %s" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, fuzzy, python-format msgid "vswitch \"%s\" not found" msgstr "nenhuma partiĂ§Ă£o encontrada" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, fuzzy, python-format msgid "Creating directory: %s" msgstr "Atualizando agente para %s" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, fuzzy, python-format msgid "Removing directory: %s" msgstr "Remover volume com id: %s" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/hyperv/snapshotops.py:62 #, fuzzy, python-format msgid "Getting info for VHD %s" msgstr "Removendo rede com id %s" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, fuzzy, python-format msgid "Removing snapshot %s" msgstr "modificando projeto %s" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 #, fuzzy msgid "get_info called for instance" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 #, fuzzy msgid "Spawning new instance" msgstr "Iniciando instĂ¢ncia %s" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "NĂ£o Ă© possĂ­vel destruir o VBD %s" #: nova/virt/hyperv/vmops.py:370 #, fuzzy msgid "Pause instance" msgstr "Reiniciar instĂ¢ncia %r" #: nova/virt/hyperv/vmops.py:376 #, fuzzy msgid "Unpause instance" msgstr "Reiniciar instĂ¢ncia %r" #: nova/virt/hyperv/vmops.py:382 #, fuzzy msgid "Suspend instance" msgstr "Falha ao suspender instĂ¢ncia" #: nova/virt/hyperv/vmops.py:388 #, fuzzy msgid "Resume instance" msgstr "Reiniciar instĂ¢ncia %r" #: nova/virt/hyperv/vmops.py:394 #, fuzzy msgid "Power off instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/hyperv/vmops.py:400 #, fuzzy msgid "Power on instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, fuzzy, python-format msgid "Cannot get VM summary data for: %s" msgstr "Falha ao obter metadados para o ip: %s" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, fuzzy, python-format msgid "Creating VM %s" msgstr "Remover volume com id: %s" #: nova/virt/hyperv/vmutils.py:228 #, fuzzy, python-format msgid "Setting memory for vm %s" msgstr "Removendo rede com id %s" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, fuzzy, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "NĂ£o Ă© possĂ­vel anexar o volume na instĂ¢ncia %s" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, fuzzy, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Obter saĂ­da do console para instĂ¢ncia %s" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 #, fuzzy msgid "Going to destroy instance again." msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 #, fuzzy msgid "attaching network adapter failed." msgstr "Nenhuma rede definida." #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 #, fuzzy msgid "detaching network adapter failed." msgstr "Nenhuma rede definida." #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "volume %s: criado com sucesso" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 #, fuzzy msgid "Guest does not have a console available" msgstr "UsuĂ¡rio nĂ£o tem privilĂ©gios de administrador" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, fuzzy, python-format msgid "Trying to get stats for the volume %s" msgstr "Obtendo o tamanho da imagem para a imagem %s" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, fuzzy, python-format msgid "Writing stored info to %s" msgstr "Iniciando a Bridge para %s" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, fuzzy, python-format msgid "Unexpected vif_type=%s" msgstr "Objeto esperado do tipo: %s" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, fuzzy, python-format msgid "%s is already mounted" msgstr "group %s jĂ¡ existe" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "%(text)s: _db_content => %(content)s" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "SessĂ£o invĂ¡lida" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, fuzzy, python-format msgid "%(action)s %(host)s" msgstr "aĂ§Ă£o: %s" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 #, fuzzy msgid "Powering on the VM instance" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 #, fuzzy msgid "Destroying the VM" msgstr "Removendo o registro da imagem %s" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 #, fuzzy msgid "Unregistering the VM" msgstr "Removendo o registro da imagem %s" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 #, fuzzy msgid "Powering on the VM" msgstr "Começando a terminar instĂ¢ncias" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, fuzzy, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "Atualizando agente para %s" #: nova/virt/vmwareapi/vmops.py:1256 #, fuzzy, python-format msgid "Renaming the VM to %s" msgstr "Remover volume com id: %s" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "InstĂ¢ncia nĂ£o existe" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, fuzzy, python-format msgid "Renaming the VM from %s" msgstr "Remover volume com id: %s" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "Obtendo o tamanho da imagem para a imagem %s" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, fuzzy, python-format msgid "Rescanning HBA %s" msgstr "Re-escaneando SR %s" #: nova/virt/vmwareapi/volume_util.py:158 #, fuzzy, python-format msgid "Rescanned HBA %s " msgstr "Re-escaneando SR %s" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Ponto de montagem %(mountpoint)s conectada Ă  instĂ¢ncia %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "NĂ£o Ă© possĂ­vel localizar o volume %s" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "NĂ£o foi possĂ­vel criar volume" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "Ponto de montagem %(mountpoint)s desanexada da instĂ¢ncia %(instance_name)s" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, fuzzy, python-format msgid "Updating agent to %s" msgstr "Atualizando agente para %s" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "Configurar senha do administrador" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "Erro de OpenSSL: %s" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "Aumento nĂ£o implementado" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "xenapi.fake nĂ£o tem uma implementaĂ§Ă£o para %s" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "Chamando o pai %s" #: nova/virt/xenapi/fake.py:854 #, fuzzy, python-format msgid "Calling setter %s" msgstr "Chamando o pai %s" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" "xenapi.fake nĂ£o tem implementaĂ§Ă£o para %s ou foi chamado com um nĂºmero de" " argumentos invĂ¡lido" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, fuzzy, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "Host %(host)s nĂ£o encontrado." #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "Encontrado mĂºltiplas redes para a bridge %s" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "NĂ£o foi encontrada rede para bridge %s" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 #, fuzzy msgid "Created VM" msgstr "_criar: %s" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "O VBD nĂ£o foi encontrado na instĂ¢ncia %s" #: nova/virt/xenapi/vm_utils.py:434 #, fuzzy, python-format msgid "VBD %s already detached" msgstr "group %s jĂ¡ existe" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "NĂ£o Ă© possĂ­vel desconectar o VBD %s" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "NĂ£o Ă© possĂ­vel destruir o VBD %s" #: nova/virt/xenapi/vm_utils.py:480 #, fuzzy, python-format msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... " msgstr "VBD %(vbd_ref)s criado para VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "VBD %(vbd_ref)s criado para VM %(vm_ref)s, VDI %(vdi_ref)s." #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, python-format msgid "" "Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)" " on %(sr_ref)s." msgstr "" "VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s) no SR " "%(sr_ref)s criada com sucesso." #: nova/virt/xenapi/vm_utils.py:556 #, fuzzy msgid "SR not present and could not be introduced" msgstr "Projeto %(project_id)s nĂ£o foi encontrado." #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "Tamanho da imagem %(image)s:%(virtual_size)d" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "Copiando o VDI %s de /boot/guest no dom0" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "Kernel/Ramdisk %s destruidos" #: nova/virt/xenapi/vm_utils.py:1625 #, fuzzy msgid "Failed to fetch glance image" msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "O VDI %s continua disponĂ­vel" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, fuzzy, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "O VHD %(vdi_uuid)s tem pai %(parent_ref)s" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "Conectando VBD %s ... " #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "O VDB %s foi conectado." #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "Destruindo VBD para o VDI %s ... " #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "O VBD para o VDI %s foi destruĂ­do." #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, fuzzy, python-format msgid "Importing image upload handler: %s" msgstr "Iniciando a Bridge para %s" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 #, fuzzy msgid "Starting instance" msgstr "Iniciando instĂ¢ncia %s" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 #, fuzzy msgid "Failed to spawn, rolling back" msgstr "Falha ao suspender instĂ¢ncia" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Falhou ao reiniciar instĂ¢ncia" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, fuzzy, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "Criando a VIF para VM %(vm_ref)s, rede %(network_ref)s." #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Atualizando agente para %s" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "Ponto de montagem nĂ£o pode ser traduzido: %s" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/sk/0000775000175400017540000000000012323722546016527 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sk/LC_MESSAGES/0000775000175400017540000000000012323722546020314 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/sk/LC_MESSAGES/nova.po0000664000175400017540000116546312323721510021625 0ustar jenkinsjenkins00000000000000# Slovak translations for nova. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-08-27 04:58+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Slovak " "(http://www.transifex.com/projects/p/openstack/language/sk/)\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/de/0000775000175400017540000000000012323722545016501 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/de/LC_MESSAGES/0000775000175400017540000000000012323722546020267 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/de/LC_MESSAGES/nova.po0000664000175400017540000117410012323721510021564 0ustar jenkinsjenkins00000000000000# German translation for nova # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nova package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2011-08-23 11:23+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: German \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "Dateiname der Root CA" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "Dateiname des Private Key" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "Wo wir unsere SchlĂ¼ssel aufbewahren" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "Soll eine eigenständige CA fĂ¼r jedes Projekt verwendet werden?" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "keine Methode fĂ¼r diese Nachricht gefunden: %s" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 #, fuzzy msgid "Constraint not met." msgstr "Instanz %s: Rettung" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, fuzzy, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, fuzzy, python-format msgid "Could not fetch image %(image_id)s" msgstr "keine Methode fĂ¼r diese Nachricht gefunden: %s" #: nova/exception.py:1229 #, fuzzy, python-format msgid "Could not upload image %(image_id)s" msgstr "keine Methode fĂ¼r diese Nachricht gefunden: %s" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, fuzzy, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/exception.py:1340 #, fuzzy, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Nicht möglich volume %s zufinden" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Nicht möglich volume %s zufinden" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Nicht möglich volume %s zufinden" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 #, fuzzy msgid "Only instances implemented" msgstr "Instanz %s: Rettung" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, fuzzy, python-format msgid "Failed to get metadata for instance id: %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 #, fuzzy msgid "Invalid instance image." msgstr "Instanz %s: Rettung" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 #, fuzzy msgid "Failed to attach interface" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, fuzzy, python-format msgid "Cell %(id)s not found." msgstr "Instanz %s pausiert" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 #, fuzzy msgid "Instance not yet ready" msgstr "Instanz %s: Rettung" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, fuzzy, python-format msgid "Fixed IP %s not found" msgstr "Instanz %s pausiert" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 #, fuzzy msgid "DNS entries not found." msgstr "Instanz %s pausiert" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, fuzzy, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "keine Methode fĂ¼r diese Nachricht gefunden: %s" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, fuzzy, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "keine Methode fĂ¼r diese Nachricht gefunden: %s" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, fuzzy, python-format msgid "Got update for instance: %(instance)s" msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/cells/messaging.py:1070 #, fuzzy msgid "Got update to delete instance" msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, fuzzy, python-format msgid "Failed to load %s" msgstr "Nicht möglich volume %s zufinden" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 #, fuzzy msgid "Cannot attach one or more volumes to multiple instances" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, fuzzy, python-format msgid "Unable to update system group '%s'" msgstr "Nicht möglich volume %s zufinden" #: nova/compute/api.py:3659 #, fuzzy, python-format msgid "Unable to delete system group '%s'" msgstr "Nicht möglich volume %s zufinden" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 #, fuzzy msgid "Failed to check if instance shared" msgstr "Volume %s: erstelle Export" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 #, fuzzy msgid "Failed to resume instance" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, fuzzy, python-format msgid "Detaching from volume api: %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 #, fuzzy msgid "instance snapshotting" msgstr "Instanz %s: Rettung" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 #, fuzzy msgid "Error trying to Rescue Instance" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 #, fuzzy msgid "Instance has no source host" msgstr "Instanz %s: Rettung" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 #, fuzzy msgid "Detaching volume from unknown instance" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/compute/manager.py:4182 #, fuzzy, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "Nicht möglich volume %s zufinden" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 #, fuzzy msgid "Instance is not (soft-)deleted." msgstr "Instanz %s: Rettung" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "FĂ¼hre Kommando (subprocess) aus: %s" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "Ergebnis war %s" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 #, fuzzy msgid "Full set of CONF:" msgstr "Alle vorhandenen FLAGS:" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, fuzzy, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, fuzzy, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" "%(description)s\n" "Befehl: %(cmd)s\n" "Exit-Code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, fuzzy, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, fuzzy, python-format msgid "Injecting files into image for instance %(name)s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, fuzzy, python-format msgid "PXE deploy started for instance %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, fuzzy, python-format msgid "Tilera deploy started for instance %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/baremetal/tilera.py:329 #, fuzzy, python-format msgid "Tilera deploy completed for instance %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, fuzzy, python-format msgid "Baremetal interface %s not found" msgstr "Instanz %s pausiert" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, fuzzy, python-format msgid "Failed to close augeas %s" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, fuzzy, python-format msgid "Failed to close guest handle %s" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, fuzzy, python-format msgid "Failed to mount image %(ex)s)" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, fuzzy, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, fuzzy, python-format msgid "Creating snapshot for instance %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, fuzzy, python-format msgid "Creating vswitch port for instance: %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, fuzzy, python-format msgid "Failed to destroy instance: %s" msgstr "Volume %s: erstelle Export" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, fuzzy, python-format msgid "Detaching physical disk from instance: %s" msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 #, fuzzy msgid "Instance soft rebooted successfully." msgstr "Volume %s: erfolgreich erstellt" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 #, fuzzy msgid "instance not present" msgstr "Instanz %s: Rettung" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, fuzzy, python-format msgid "Renamed the VM from %s" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefĂ¼gt" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 #, fuzzy msgid "Unable to find iSCSI Target" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 #, fuzzy msgid "Unable to find volume" msgstr "Nicht möglich volume %s zufinden" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, fuzzy, python-format msgid "Failed to extract instance support from %s" msgstr "Volume %s: erstelle Export" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, fuzzy, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "keine Methode fĂ¼r diese Nachricht gefunden: %s" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 #, fuzzy msgid "Unable to terminate instance." msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufĂ¼gen" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 #, fuzzy msgid "Creating PBD for SR" msgstr "Volume %s: erstelle Export" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/locale/vi_VN/0000775000175400017540000000000012323722546017133 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/vi_VN/LC_MESSAGES/0000775000175400017540000000000012323722546020720 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/locale/vi_VN/LC_MESSAGES/nova.po0000664000175400017540000116547112323721510022230 0ustar jenkinsjenkins00000000000000# English (United States) translations for nova. # Copyright (C) 2012 ORGANIZATION # This file is distributed under the same license as the nova project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Nova\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n" "POT-Creation-Date: 2014-03-27 06:16+0000\n" "PO-Revision-Date: 2013-05-13 19:22+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Vietnamese (Viet Nam) " "(http://www.transifex.com/projects/p/openstack/language/vi_VN/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: nova/block_device.py:530 nova/virt/hyperv/basevolumeutils.py:91 #, python-format msgid "block_device_list %s" msgstr "" #: nova/context.py:64 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: nova/context.py:109 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: nova/crypto.py:54 msgid "Filename of root CA" msgstr "" #: nova/crypto.py:57 msgid "Filename of private key" msgstr "" #: nova/crypto.py:60 msgid "Filename of root Certificate Revocation List" msgstr "" #: nova/crypto.py:63 msgid "Where we keep our keys" msgstr "" #: nova/crypto.py:66 msgid "Where we keep our root CA" msgstr "" #: nova/crypto.py:69 msgid "Should we use a CA for each project?" msgstr "" #: nova/crypto.py:73 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" #: nova/crypto.py:78 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" #: nova/crypto.py:143 msgid "failed to generate fingerprint" msgstr "" #: nova/crypto.py:210 msgid "Unable to find the key" msgstr "" #: nova/crypto.py:393 msgid "Failed to write inbound.csr" msgstr "" #: nova/crypto.py:395 #, python-format msgid "Flags path: %s" msgstr "" #: nova/debugger.py:67 #, python-format msgid "Listening on %(host)s:%(port)s for debug connection" msgstr "" #: nova/debugger.py:77 msgid "" "WARNING: Using the remote debug option changes how Nova uses the eventlet" " library to support async IO. This could result in failures that do not " "occur under normal operation. Use at your own risk." msgstr "" #: nova/exception.py:102 msgid "An unknown exception occurred." msgstr "" #: nova/exception.py:124 msgid "Exception in string format operation" msgstr "" #: nova/exception.py:143 #, python-format msgid "Failed to encrypt text: %(reason)s" msgstr "" #: nova/exception.py:147 #, python-format msgid "Failed to decrypt text: %(reason)s" msgstr "" #: nova/exception.py:151 msgid "Virtual Interface creation failed" msgstr "" #: nova/exception.py:155 msgid "Creation of virtual interface with unique mac address failed" msgstr "" #: nova/exception.py:160 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" #: nova/exception.py:166 msgid "Not authorized." msgstr "" #: nova/exception.py:171 msgid "User does not have admin privileges" msgstr "" #: nova/exception.py:175 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: nova/exception.py:182 #, python-format msgid "Image %(image_id)s is not active." msgstr "" #: nova/exception.py:186 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: nova/exception.py:190 msgid "Unacceptable parameters." msgstr "" #: nova/exception.py:195 msgid "Block Device Mapping is Invalid." msgstr "" #: nova/exception.py:199 #, python-format msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s." msgstr "" #: nova/exception.py:204 #, python-format msgid "Block Device Mapping is Invalid: failed to get volume %(id)s." msgstr "" #: nova/exception.py:209 #, python-format msgid "Block Device Mapping is Invalid: failed to get image %(id)s." msgstr "" #: nova/exception.py:214 msgid "" "Block Device Mapping is Invalid: Boot sequence for the instance and " "image/block device mapping combination is not valid." msgstr "" #: nova/exception.py:221 msgid "" "Block Device Mapping is Invalid: You specified more local devices than " "the limit allows" msgstr "" #: nova/exception.py:227 msgid "Ephemeral disks requested are larger than the instance type allows." msgstr "" #: nova/exception.py:232 msgid "Swap drive requested is larger than instance type allows." msgstr "" #: nova/exception.py:236 #, python-format msgid "Block Device Mapping is Invalid: %(details)s" msgstr "" #: nova/exception.py:241 msgid "Block Device Mapping cannot be converted to legacy format. " msgstr "" #: nova/exception.py:246 #, python-format msgid "Attribute not supported: %(attr)s" msgstr "" #: nova/exception.py:255 #, python-format msgid "Volume %(volume_id)s is not attached to anything" msgstr "" #: nova/exception.py:259 #, python-format msgid "" "Volume %(volume_id)s did not finish being created even after we waited " "%(seconds)s seconds or %(attempts)s attempts." msgstr "" #: nova/exception.py:266 #, python-format msgid "Keypair data is invalid: %(reason)s" msgstr "" #: nova/exception.py:270 msgid "The request is invalid." msgstr "" #: nova/exception.py:274 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: nova/exception.py:279 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: nova/exception.py:283 msgid "Invalid volume access mode" msgstr "" #: nova/exception.py:287 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: nova/exception.py:291 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: nova/exception.py:296 #, python-format msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" #: nova/exception.py:300 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" #: nova/exception.py:304 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: nova/exception.py:308 #, python-format msgid "Invalid cidr %(cidr)s." msgstr "" #: nova/exception.py:312 nova/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: nova/exception.py:320 #, python-format msgid "%(err)s" msgstr "" #: nova/exception.py:324 #, python-format msgid "" "Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:" " %(reason)s." msgstr "" #: nova/exception.py:329 #, python-format msgid "Group not valid. Reason: %(reason)s" msgstr "" #: nova/exception.py:333 nova/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" #: nova/exception.py:337 #, python-format msgid "" "Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while" " the instance is in this state." msgstr "" #: nova/exception.py:342 #, python-format msgid "Instance %(instance_id)s is not running." msgstr "" #: nova/exception.py:346 #, python-format msgid "Instance %(instance_id)s is not in rescue mode" msgstr "" #: nova/exception.py:350 #, python-format msgid "Instance %(instance_id)s cannot be rescued: %(reason)s" msgstr "" #: nova/exception.py:354 #, python-format msgid "Instance %(instance_id)s is not ready" msgstr "" #: nova/exception.py:358 #, python-format msgid "Failed to suspend instance: %(reason)s" msgstr "" #: nova/exception.py:362 #, python-format msgid "Failed to resume instance: %(reason)s" msgstr "" #: nova/exception.py:366 #, python-format msgid "Failed to power on instance: %(reason)s" msgstr "" #: nova/exception.py:370 #, python-format msgid "Failed to power off instance: %(reason)s" msgstr "" #: nova/exception.py:374 #, python-format msgid "Failed to reboot instance: %(reason)s" msgstr "" #: nova/exception.py:378 #, python-format msgid "Failed to terminate instance: %(reason)s" msgstr "" #: nova/exception.py:382 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" #: nova/exception.py:386 #, python-format msgid "Failed to launch instances: %(reason)s" msgstr "" #: nova/exception.py:390 msgid "Service is unavailable at this time." msgstr "" #: nova/exception.py:394 #, python-format msgid "Insufficient compute resources: %(reason)s." msgstr "" #: nova/exception.py:398 #, python-format msgid "Connection to the hypervisor is broken on host: %(host)s" msgstr "" #: nova/exception.py:402 #, python-format msgid "Compute service of %(host)s is unavailable at this time." msgstr "" #: nova/exception.py:406 #, python-format msgid "Compute service of %(host)s is still in use." msgstr "" #: nova/exception.py:410 #, python-format msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)." msgstr "" #: nova/exception.py:415 msgid "The supplied hypervisor type of is invalid." msgstr "" #: nova/exception.py:419 msgid "The instance requires a newer hypervisor version than has been provided." msgstr "" #: nova/exception.py:424 #, python-format msgid "" "The supplied disk path (%(path)s) already exists, it is expected not to " "exist." msgstr "" #: nova/exception.py:429 #, python-format msgid "The supplied device path (%(path)s) is invalid." msgstr "" #: nova/exception.py:433 #, python-format msgid "The supplied device path (%(path)s) is in use." msgstr "" #: nova/exception.py:438 #, python-format msgid "The supplied device (%(device)s) is busy." msgstr "" #: nova/exception.py:442 #, python-format msgid "Unacceptable CPU info: %(reason)s" msgstr "" #: nova/exception.py:446 #, python-format msgid "%(address)s is not a valid IP v4/6 address." msgstr "" #: nova/exception.py:450 #, python-format msgid "" "VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN " "tag is %(tag)s, but the one associated with the port group is %(pgroup)s." msgstr "" #: nova/exception.py:456 #, python-format msgid "" "vSwitch which contains the port group %(bridge)s is not associated with " "the desired physical adapter. Expected vSwitch is %(expected)s, but the " "one associated is %(actual)s." msgstr "" #: nova/exception.py:463 #, python-format msgid "Disk format %(disk_format)s is not acceptable" msgstr "" #: nova/exception.py:467 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:471 #, python-format msgid "Instance %(instance_id)s is unacceptable: %(reason)s" msgstr "" #: nova/exception.py:475 #, python-format msgid "Ec2 id %(ec2_id)s is unacceptable." msgstr "" #: nova/exception.py:479 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: nova/exception.py:483 #, python-format msgid "Invalid ID received %(id)s." msgstr "" #: nova/exception.py:487 msgid "Constraint not met." msgstr "" #: nova/exception.py:492 msgid "Resource could not be found." msgstr "" #: nova/exception.py:497 #, python-format msgid "No agent-build associated with id %(id)s." msgstr "" #: nova/exception.py:501 #, python-format msgid "" "Agent-build with hypervisor %(hypervisor)s os %(os)s architecture " "%(architecture)s exists." msgstr "" #: nova/exception.py:507 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: nova/exception.py:511 #, python-format msgid "No volume Block Device Mapping with id %(volume_id)s." msgstr "" #: nova/exception.py:516 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: nova/exception.py:520 #, python-format msgid "No disk at %(location)s" msgstr "" #: nova/exception.py:524 #, python-format msgid "Could not find a handler for %(driver_type)s volume." msgstr "" #: nova/exception.py:528 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: nova/exception.py:532 #, python-format msgid "Requested image %(image)s has automatic disk resize disabled." msgstr "" #: nova/exception.py:537 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: nova/exception.py:541 msgid "The current driver does not support preserving ephemeral partitions." msgstr "" #: nova/exception.py:547 #, python-format msgid "" "Image %(image_id)s could not be found. The nova EC2 API assigns image ids" " dynamically when they are listed for the first time. Have you listed " "image ids since adding this image?" msgstr "" #: nova/exception.py:554 #, python-format msgid "Project %(project_id)s could not be found." msgstr "" #: nova/exception.py:558 msgid "Cannot find SR to read/write VDI." msgstr "" #: nova/exception.py:562 #, python-format msgid "Network %(network_id)s is duplicated." msgstr "" #: nova/exception.py:566 #, python-format msgid "Network %(network_id)s is still in use." msgstr "" #: nova/exception.py:570 #, python-format msgid "%(req)s is required to create a network." msgstr "" #: nova/exception.py:574 #, python-format msgid "Network %(network_id)s could not be found." msgstr "" #: nova/exception.py:578 #, python-format msgid "Port id %(port_id)s could not be found." msgstr "" #: nova/exception.py:582 #, python-format msgid "Network could not be found for bridge %(bridge)s" msgstr "" #: nova/exception.py:586 #, python-format msgid "Network could not be found for uuid %(uuid)s" msgstr "" #: nova/exception.py:590 #, python-format msgid "Network could not be found with cidr %(cidr)s." msgstr "" #: nova/exception.py:594 #, python-format msgid "Network could not be found for instance %(instance_id)s." msgstr "" #: nova/exception.py:598 msgid "No networks defined." msgstr "" #: nova/exception.py:602 msgid "No more available networks." msgstr "" #: nova/exception.py:606 #, python-format msgid "" "Either network uuid %(network_uuid)s is not present or is not assigned to" " the project %(project_id)s." msgstr "" #: nova/exception.py:611 msgid "" "More than one possible network found. Specify network ID(s) to select " "which one(s) to connect to," msgstr "" #: nova/exception.py:616 #, python-format msgid "Network %(network_uuid)s requires a subnet in order to boot instances on." msgstr "" #: nova/exception.py:621 msgid "Could not find the datastore reference(s) which the VM uses." msgstr "" #: nova/exception.py:625 #, python-format msgid "Port %(port_id)s is still in use." msgstr "" #: nova/exception.py:629 #, python-format msgid "Port %(port_id)s requires a FixedIP in order to be used." msgstr "" #: nova/exception.py:633 #, python-format msgid "Port %(port_id)s not usable for instance %(instance)s." msgstr "" #: nova/exception.py:637 #, python-format msgid "No free port available for instance %(instance)s." msgstr "" #: nova/exception.py:641 #, python-format msgid "Fixed ip %(address)s already exists." msgstr "" #: nova/exception.py:645 #, python-format msgid "No fixed IP associated with id %(id)s." msgstr "" #: nova/exception.py:649 #, python-format msgid "Fixed ip not found for address %(address)s." msgstr "" #: nova/exception.py:653 #, python-format msgid "Instance %(instance_uuid)s has zero fixed ips." msgstr "" #: nova/exception.py:657 #, python-format msgid "Network host %(host)s has zero fixed ips in network %(network_id)s." msgstr "" #: nova/exception.py:662 #, python-format msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'." msgstr "" #: nova/exception.py:666 #, python-format msgid "" "Fixed IP address (%(address)s) does not exist in network " "(%(network_uuid)s)." msgstr "" #: nova/exception.py:671 #, python-format msgid "" "Fixed IP address %(address)s is already in use on instance " "%(instance_uuid)s." msgstr "" #: nova/exception.py:676 #, python-format msgid "More than one instance is associated with fixed ip address '%(address)s'." msgstr "" #: nova/exception.py:681 #, python-format msgid "Fixed IP address %(address)s is invalid." msgstr "" #: nova/exception.py:686 msgid "Zero fixed ips available." msgstr "" #: nova/exception.py:690 msgid "Zero fixed ips could be found." msgstr "" #: nova/exception.py:694 #, python-format msgid "Floating ip %(address)s already exists." msgstr "" #: nova/exception.py:699 #, python-format msgid "Floating ip not found for id %(id)s." msgstr "" #: nova/exception.py:703 #, python-format msgid "The DNS entry %(name)s already exists in domain %(domain)s." msgstr "" #: nova/exception.py:707 #, python-format msgid "Floating ip not found for address %(address)s." msgstr "" #: nova/exception.py:711 #, python-format msgid "Floating ip not found for host %(host)s." msgstr "" #: nova/exception.py:715 #, python-format msgid "Multiple floating ips are found for address %(address)s." msgstr "" #: nova/exception.py:719 msgid "Floating ip pool not found." msgstr "" #: nova/exception.py:724 msgid "Zero floating ips available." msgstr "" #: nova/exception.py:730 #, python-format msgid "Floating ip %(address)s is associated." msgstr "" #: nova/exception.py:734 #, python-format msgid "Floating ip %(address)s is not associated." msgstr "" #: nova/exception.py:738 msgid "Zero floating ips exist." msgstr "" #: nova/exception.py:743 #, python-format msgid "Interface %(interface)s not found." msgstr "" #: nova/exception.py:748 nova/api/openstack/compute/contrib/floating_ips.py:97 msgid "Cannot disassociate auto assigned floating ip" msgstr "" #: nova/exception.py:753 #, python-format msgid "Keypair %(name)s not found for user %(user_id)s" msgstr "" #: nova/exception.py:757 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: nova/exception.py:761 #, python-format msgid "Service with host %(host)s binary %(binary)s exists." msgstr "" #: nova/exception.py:765 #, python-format msgid "Service with host %(host)s topic %(topic)s exists." msgstr "" #: nova/exception.py:769 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: nova/exception.py:773 #, python-format msgid "Compute host %(host)s could not be found." msgstr "" #: nova/exception.py:777 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: nova/exception.py:781 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: nova/exception.py:785 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: nova/exception.py:790 msgid "Quota could not be found" msgstr "" #: nova/exception.py:794 #, python-format msgid "Quota exists for project %(project_id)s, resource %(resource)s" msgstr "" #: nova/exception.py:799 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: nova/exception.py:803 #, python-format msgid "Quota for user %(user_id)s in project %(project_id)s could not be found." msgstr "" #: nova/exception.py:808 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:812 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: nova/exception.py:816 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: nova/exception.py:820 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: nova/exception.py:824 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: nova/exception.py:828 #, python-format msgid "Security group %(security_group_id)s not found." msgstr "" #: nova/exception.py:832 #, python-format msgid "Security group %(security_group_id)s not found for project %(project_id)s." msgstr "" #: nova/exception.py:837 #, python-format msgid "Security group with rule %(rule_id)s not found." msgstr "" #: nova/exception.py:842 #, python-format msgid "" "Security group %(security_group_name)s already exists for project " "%(project_id)s." msgstr "" #: nova/exception.py:847 #, python-format msgid "" "Security group %(security_group_id)s is already associated with the " "instance %(instance_id)s" msgstr "" #: nova/exception.py:852 #, python-format msgid "" "Security group %(security_group_id)s is not associated with the instance " "%(instance_id)s" msgstr "" #: nova/exception.py:857 #, python-format msgid "Security group default rule (%rule_id)s not found." msgstr "" #: nova/exception.py:861 msgid "" "Network requires port_security_enabled and subnet associated in order to " "apply security groups." msgstr "" #: nova/exception.py:867 #, python-format msgid "Rule already exists in group: %(rule)s" msgstr "" #: nova/exception.py:871 msgid "No Unique Match Found." msgstr "" #: nova/exception.py:876 #, python-format msgid "Migration %(migration_id)s could not be found." msgstr "" #: nova/exception.py:880 #, python-format msgid "Migration not found for instance %(instance_id)s with status %(status)s." msgstr "" #: nova/exception.py:885 #, python-format msgid "Console pool %(pool_id)s could not be found." msgstr "" #: nova/exception.py:889 #, python-format msgid "" "Console pool with host %(host)s, console_type %(console_type)s and " "compute_host %(compute_host)s already exists." msgstr "" #: nova/exception.py:895 #, python-format msgid "" "Console pool of type %(console_type)s for compute host %(compute_host)s " "on proxy host %(host)s not found." msgstr "" #: nova/exception.py:901 #, python-format msgid "Console %(console_id)s could not be found." msgstr "" #: nova/exception.py:905 #, python-format msgid "Console for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:909 #, python-format msgid "" "Console for instance %(instance_uuid)s in pool %(pool_id)s could not be " "found." msgstr "" #: nova/exception.py:914 #, python-format msgid "Invalid console type %(console_type)s" msgstr "" #: nova/exception.py:918 #, python-format msgid "Unavailable console type %(console_type)s." msgstr "" #: nova/exception.py:922 #, python-format msgid "The console port range %(min_port)d-%(max_port)d is exhausted." msgstr "" #: nova/exception.py:927 #, python-format msgid "Flavor %(flavor_id)s could not be found." msgstr "" #: nova/exception.py:931 #, python-format msgid "Flavor with name %(flavor_name)s could not be found." msgstr "" #: nova/exception.py:935 #, python-format msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination." msgstr "" #: nova/exception.py:940 #, python-format msgid "Cell %(cell_name)s doesn't exist." msgstr "" #: nova/exception.py:944 #, python-format msgid "Cell with name %(name)s already exists." msgstr "" #: nova/exception.py:948 #, python-format msgid "Inconsistency in cell routing: %(reason)s" msgstr "" #: nova/exception.py:952 #, python-format msgid "Service API method not found: %(detail)s" msgstr "" #: nova/exception.py:956 msgid "Timeout waiting for response from cell" msgstr "" #: nova/exception.py:960 #, python-format msgid "Cell message has reached maximum hop count: %(hop_count)s" msgstr "" #: nova/exception.py:964 msgid "No cells available matching scheduling criteria." msgstr "" #: nova/exception.py:968 msgid "Cannot update cells configuration file." msgstr "" #: nova/exception.py:972 #, python-format msgid "Cell is not known for instance %(instance_uuid)s" msgstr "" #: nova/exception.py:976 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: nova/exception.py:980 #, python-format msgid "Flavor %(flavor_id)s has no extra specs with key %(extra_specs_key)s." msgstr "" #: nova/exception.py:985 #, python-format msgid "" "Metric %(name)s could not be found on the compute host node " "%(host)s.%(node)s." msgstr "" #: nova/exception.py:990 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: nova/exception.py:994 msgid "Zero files could be found." msgstr "" #: nova/exception.py:998 #, python-format msgid "Virtual switch associated with the network adapter %(adapter)s not found." msgstr "" #: nova/exception.py:1003 #, python-format msgid "Network adapter %(adapter)s could not be found." msgstr "" #: nova/exception.py:1007 #, python-format msgid "Class %(class_name)s could not be found: %(exception)s" msgstr "" #: nova/exception.py:1011 msgid "Action not allowed." msgstr "" #: nova/exception.py:1015 msgid "Rotation is not allowed for snapshots" msgstr "" #: nova/exception.py:1019 msgid "Rotation param is required for backup image_type" msgstr "" #: nova/exception.py:1024 nova/tests/compute/test_keypairs.py:144 #, python-format msgid "Key pair '%(key_name)s' already exists." msgstr "" #: nova/exception.py:1028 #, python-format msgid "Instance %(name)s already exists." msgstr "" #: nova/exception.py:1032 #, python-format msgid "Flavor with name %(name)s already exists." msgstr "" #: nova/exception.py:1036 #, python-format msgid "Flavor with ID %(flavor_id)s already exists." msgstr "" #: nova/exception.py:1040 #, python-format msgid "" "Flavor access already exists for flavor %(flavor_id)s and project " "%(project_id)s combination." msgstr "" #: nova/exception.py:1045 #, python-format msgid "%(path)s is not on shared storage: %(reason)s" msgstr "" #: nova/exception.py:1049 #, python-format msgid "%(path)s is not on local storage: %(reason)s" msgstr "" #: nova/exception.py:1053 #, python-format msgid "Migration error: %(reason)s" msgstr "" #: nova/exception.py:1057 #, python-format msgid "Migration pre-check error: %(reason)s" msgstr "" #: nova/exception.py:1061 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: nova/exception.py:1067 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: nova/exception.py:1071 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: nova/exception.py:1075 msgid "When resizing, instances must change flavor!" msgstr "" #: nova/exception.py:1079 #, python-format msgid "Resize error: %(reason)s" msgstr "" #: nova/exception.py:1083 #, python-format msgid "Server disk was unable to be resized because: %(reason)s" msgstr "" #: nova/exception.py:1087 msgid "Flavor's memory is too small for requested image." msgstr "" #: nova/exception.py:1091 msgid "Flavor's disk is too small for requested image." msgstr "" #: nova/exception.py:1095 #, python-format msgid "Insufficient free memory on compute node to start %(uuid)s." msgstr "" #: nova/exception.py:1099 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: nova/exception.py:1104 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: nova/exception.py:1111 #, python-format msgid "" "Quota exceeded for %(overs)s: Requested %(req)s, but already used " "%(used)d of %(allowed)d %(resource)s" msgstr "" #: nova/exception.py:1116 msgid "Maximum number of floating ips exceeded" msgstr "" #: nova/exception.py:1120 msgid "Maximum number of fixed ips exceeded" msgstr "" #: nova/exception.py:1124 #, python-format msgid "Maximum number of metadata items exceeds %(allowed)d" msgstr "" #: nova/exception.py:1128 msgid "Personality file limit exceeded" msgstr "" #: nova/exception.py:1132 msgid "Personality file path too long" msgstr "" #: nova/exception.py:1136 msgid "Personality file content too long" msgstr "" #: nova/exception.py:1140 nova/tests/compute/test_keypairs.py:155 msgid "Maximum number of key pairs exceeded" msgstr "" #: nova/exception.py:1145 msgid "Maximum number of security groups or rules exceeded" msgstr "" #: nova/exception.py:1149 msgid "Maximum number of ports exceeded" msgstr "" #: nova/exception.py:1153 #, python-format msgid "" "Aggregate %(aggregate_id)s: action '%(action)s' caused an error: " "%(reason)s." msgstr "" #: nova/exception.py:1158 #, python-format msgid "Aggregate %(aggregate_id)s could not be found." msgstr "" #: nova/exception.py:1162 #, python-format msgid "Aggregate %(aggregate_name)s already exists." msgstr "" #: nova/exception.py:1166 #, python-format msgid "Aggregate %(aggregate_id)s has no host %(host)s." msgstr "" #: nova/exception.py:1170 #, python-format msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1175 #, python-format msgid "Aggregate %(aggregate_id)s already has host %(host)s." msgstr "" #: nova/exception.py:1179 msgid "Unable to create flavor" msgstr "" #: nova/exception.py:1183 #, python-format msgid "Failed to set admin password on %(instance)s because %(reason)s" msgstr "" #: nova/exception.py:1189 #, python-format msgid "Detected existing vlan with id %(vlan)d" msgstr "" #: nova/exception.py:1193 msgid "There was a conflict when trying to complete your request." msgstr "" #: nova/exception.py:1199 #, python-format msgid "Instance %(instance_id)s could not be found." msgstr "" #: nova/exception.py:1203 #, python-format msgid "Info cache for instance %(instance_uuid)s could not be found." msgstr "" #: nova/exception.py:1208 #, python-format msgid "Node %(node_id)s could not be found." msgstr "" #: nova/exception.py:1212 #, python-format msgid "Node with UUID %(node_uuid)s could not be found." msgstr "" #: nova/exception.py:1216 #, python-format msgid "Marker %(marker)s could not be found." msgstr "" #: nova/exception.py:1221 #, python-format msgid "Invalid id: %(val)s (expecting \"i-...\")." msgstr "" #: nova/exception.py:1225 #, python-format msgid "Could not fetch image %(image_id)s" msgstr "" #: nova/exception.py:1229 #, python-format msgid "Could not upload image %(image_id)s" msgstr "" #: nova/exception.py:1233 #, python-format msgid "Task %(task_name)s is already running on host %(host)s" msgstr "" #: nova/exception.py:1237 #, python-format msgid "Task %(task_name)s is not running on host %(host)s" msgstr "" #: nova/exception.py:1241 #, python-format msgid "Instance %(instance_uuid)s is locked" msgstr "" #: nova/exception.py:1245 #, python-format msgid "Invalid value for Config Drive option: %(option)s" msgstr "" #: nova/exception.py:1249 #, python-format msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s" msgstr "" #: nova/exception.py:1254 #, python-format msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat." msgstr "" #: nova/exception.py:1259 #, python-format msgid "Failed to attach network adapter device to %(instance)s" msgstr "" #: nova/exception.py:1263 #, python-format msgid "Failed to detach network adapter device from %(instance)s" msgstr "" #: nova/exception.py:1267 #, python-format msgid "" "User data too large. User data must be no larger than %(maxsize)s bytes " "once base64 encoded. Your data is %(length)d bytes" msgstr "" #: nova/exception.py:1273 msgid "User data needs to be valid base 64." msgstr "" #: nova/exception.py:1277 #, python-format msgid "" "Unexpected task state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1286 #, python-format msgid "" "Action for request_id %(request_id)s on instance %(instance_uuid)s not " "found" msgstr "" #: nova/exception.py:1291 #, python-format msgid "Event %(event)s not found for action id %(action_id)s" msgstr "" #: nova/exception.py:1295 #, python-format msgid "" "Unexpected VM state: expecting %(expected)s but the actual state is " "%(actual)s" msgstr "" #: nova/exception.py:1300 #, python-format msgid "The CA file for %(project)s could not be found" msgstr "" #: nova/exception.py:1304 #, python-format msgid "The CRL file for %(project)s could not be found" msgstr "" #: nova/exception.py:1308 msgid "Instance recreate is not supported." msgstr "" #: nova/exception.py:1312 #, python-format msgid "" "The service from servicegroup driver %(driver)s is temporarily " "unavailable." msgstr "" #: nova/exception.py:1317 #, python-format msgid "%(binary)s attempted direct database access which is not allowed by policy" msgstr "" #: nova/exception.py:1322 #, python-format msgid "Virtualization type '%(virt)s' is not supported by this compute driver" msgstr "" #: nova/exception.py:1327 #, python-format msgid "" "Requested hardware '%(model)s' is not supported by the '%(virt)s' virt " "driver" msgstr "" #: nova/exception.py:1332 #, python-format msgid "Invalid Base 64 data for file %(path)s" msgstr "" #: nova/exception.py:1336 #, python-format msgid "Build of instance %(instance_uuid)s aborted: %(reason)s" msgstr "" #: nova/exception.py:1340 #, python-format msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s" msgstr "" #: nova/exception.py:1345 #, python-format msgid "Shadow table with name %(name)s already exists." msgstr "" #: nova/exception.py:1350 #, python-format msgid "Instance rollback performed due to: %s" msgstr "" #: nova/exception.py:1356 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" #: nova/exception.py:1360 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" #: nova/exception.py:1364 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" #: nova/exception.py:1368 #, python-format msgid "Object action %(action)s failed because: %(reason)s" msgstr "" #: nova/exception.py:1372 #, python-format msgid "Core API extensions are missing: %(missing_apis)s" msgstr "" #: nova/exception.py:1376 #, python-format msgid "Error during following call to agent: %(method)s" msgstr "" #: nova/exception.py:1380 #, python-format msgid "Unable to contact guest agent. The following call timed out: %(method)s" msgstr "" #: nova/exception.py:1385 #, python-format msgid "Agent does not support the call: %(method)s" msgstr "" #: nova/exception.py:1389 #, python-format msgid "Instance group %(group_uuid)s could not be found." msgstr "" #: nova/exception.py:1393 #, python-format msgid "Instance group %(group_uuid)s already exists." msgstr "" #: nova/exception.py:1397 #, python-format msgid "Instance group %(group_uuid)s has no metadata with key %(metadata_key)s." msgstr "" #: nova/exception.py:1402 #, python-format msgid "Instance group %(group_uuid)s has no member with id %(instance_id)s." msgstr "" #: nova/exception.py:1407 #, python-format msgid "Instance group %(group_uuid)s has no policy %(policy)s." msgstr "" #: nova/exception.py:1411 #, python-format msgid "Number of retries to plugin (%(num_retries)d) exceeded." msgstr "" #: nova/exception.py:1415 #, python-format msgid "There was an error with the download module %(module)s. %(reason)s" msgstr "" #: nova/exception.py:1420 #, python-format msgid "" "The metadata for this location will not work with this module %(module)s." " %(reason)s." msgstr "" #: nova/exception.py:1425 #, python-format msgid "The method %(method_name)s is not implemented." msgstr "" #: nova/exception.py:1429 #, python-format msgid "The module %(module)s is misconfigured: %(reason)s." msgstr "" #: nova/exception.py:1433 #, python-format msgid "Error when creating resource monitor: %(monitor)s" msgstr "" #: nova/exception.py:1437 #, python-format msgid "The PCI address %(address)s has an incorrect format." msgstr "" #: nova/exception.py:1441 #, python-format msgid "PCI device %(id)s not found" msgstr "" #: nova/exception.py:1445 #, python-format msgid "PCI Device %(node_id)s:%(address)s not found." msgstr "" #: nova/exception.py:1449 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is %(status)s instead of " "%(hopestatus)s" msgstr "" #: nova/exception.py:1455 #, python-format msgid "" "PCI device %(compute_node_id)s:%(address)s is owned by %(owner)s instead " "of %(hopeowner)s" msgstr "" #: nova/exception.py:1461 #, python-format msgid "PCI device request (%requests)s failed" msgstr "" #: nova/exception.py:1466 #, python-format msgid "" "Attempt to consume PCI device %(compute_node_id)s:%(address)s from empty " "pool" msgstr "" #: nova/exception.py:1472 #, python-format msgid "Invalid PCI alias definition: %(reason)s" msgstr "" #: nova/exception.py:1476 #, python-format msgid "PCI alias %(alias)s is not defined" msgstr "" #: nova/exception.py:1481 #, python-format msgid "Not enough parameters: %(reason)s" msgstr "" #: nova/exception.py:1486 #, python-format msgid "Invalid PCI devices Whitelist config %(reason)s" msgstr "" #: nova/exception.py:1490 #, python-format msgid "Cannot change %(node_id)s to %(new_node_id)s" msgstr "" #: nova/exception.py:1500 #, python-format msgid "" "Failed to prepare PCI device %(id)s for instance %(instance_uuid)s: " "%(reason)s" msgstr "" #: nova/exception.py:1505 #, python-format msgid "Failed to detach PCI device %(dev)s: %(reason)s" msgstr "" #: nova/exception.py:1509 #, python-format msgid "%(type)s hypervisor does not support PCI devices" msgstr "" #: nova/exception.py:1513 #, python-format msgid "Key manager error: %(reason)s" msgstr "" #: nova/exception.py:1517 #, python-format msgid "Provided video model (%(model)s) is not supported." msgstr "" #: nova/exception.py:1521 #, python-format msgid "The provided RNG device path: (%(path)s) is not present on the host." msgstr "" #: nova/exception.py:1526 #, python-format msgid "" "The requested amount of video memory %(req_vram)d is higher than the " "maximum allowed by flavor %(max_vram)d." msgstr "" #: nova/exception.py:1531 #, python-format msgid "Provided watchdog action (%(action)s) is not supported." msgstr "" #: nova/exception.py:1535 msgid "" "Block migration of instances with config drives is not supported in " "libvirt." msgstr "" #: nova/filters.py:70 #, python-format msgid "Starting with %d host(s)" msgstr "" #: nova/filters.py:79 #, python-format msgid "Filter %(cls_name)s says to stop filtering" msgstr "" #: nova/filters.py:84 #, python-format msgid "Filter %s returned 0 hosts" msgstr "" #: nova/filters.py:86 #, python-format msgid "Filter %(cls_name)s returned %(obj_len)d host(s)" msgstr "" #: nova/hooks.py:68 #, python-format msgid "Running %(name)s pre-hook: %(obj)s" msgstr "" #: nova/hooks.py:80 #, python-format msgid "Running %(name)s post-hook: %(obj)s" msgstr "" #: nova/notifications.py:147 nova/notifications.py:187 msgid "Failed to send state update notification" msgstr "" #: nova/notifications.py:271 msgid "Failed to get nw_info" msgstr "" #: nova/policy.py:31 msgid "JSON file representing policy" msgstr "" #: nova/policy.py:34 msgid "Rule checked when requested rule is not found" msgstr "" #: nova/quota.py:1272 #, python-format msgid "Created reservations %s" msgstr "" #: nova/quota.py:1295 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: nova/quota.py:1297 #, python-format msgid "Committed reservations %s" msgstr "" #: nova/quota.py:1318 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: nova/quota.py:1321 #, python-format msgid "Rolled back reservations %s" msgstr "" #: nova/service.py:160 #, python-format msgid "Starting %(topic)s node (version %(version)s)" msgstr "" #: nova/service.py:184 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: nova/service.py:201 #, python-format msgid "Join ServiceGroup membership for this service %s" msgstr "" #: nova/service.py:284 msgid "Service killed that has no database entry" msgstr "" #: nova/service.py:296 msgid "Service error occurred during cleanup_host" msgstr "" #: nova/service.py:313 #, python-format msgid "Temporary directory is invalid: %s" msgstr "" #: nova/service.py:338 #, python-format msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" msgstr "" #: nova/service.py:423 msgid "serve() can only be called once" msgstr "" #: nova/utils.py:148 #, python-format msgid "Expected to receive %(exp)s bytes, but actually %(act)s" msgstr "" #: nova/utils.py:354 #, python-format msgid "Couldn't get IPv4 : %(ex)s" msgstr "" #: nova/utils.py:370 #, python-format msgid "IPv4 address is not found.: %s" msgstr "" #: nova/utils.py:373 #, python-format msgid "Couldn't get IPv4 of %(interface)s : %(ex)s" msgstr "" #: nova/utils.py:388 #, python-format msgid "Link Local address is not found.:%s" msgstr "" #: nova/utils.py:391 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" #: nova/utils.py:412 #, python-format msgid "Invalid backend: %s" msgstr "" #: nova/utils.py:457 #, python-format msgid "Expected object of type: %s" msgstr "" #: nova/utils.py:485 #, python-format msgid "Invalid server_string: %s" msgstr "" #: nova/utils.py:662 nova/openstack/common/fileutils.py:63 #, python-format msgid "Reloading cached file %s" msgstr "" #: nova/utils.py:776 nova/virt/configdrive.py:176 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: nova/utils.py:966 #, python-format msgid "%s is not a string or unicode" msgstr "" #: nova/utils.py:970 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: nova/utils.py:975 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: nova/utils.py:985 #, python-format msgid "%(value_name)s must be an integer" msgstr "" #: nova/utils.py:991 #, python-format msgid "%(value_name)s must be >= %(min_value)d" msgstr "" #: nova/utils.py:997 #, python-format msgid "%(value_name)s must be <= %(max_value)d" msgstr "" #: nova/version.py:65 #, python-format msgid "Failed to load %(cfgfile)s: %(ex)s" msgstr "" #: nova/wsgi.py:132 #, python-format msgid "Could not bind to %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:137 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" #: nova/wsgi.py:152 nova/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: nova/wsgi.py:156 nova/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: nova/wsgi.py:160 nova/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: nova/wsgi.py:164 nova/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: nova/wsgi.py:195 #, python-format msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support" msgstr "" #: nova/wsgi.py:223 msgid "Stopping WSGI server." msgstr "" #: nova/wsgi.py:242 msgid "WSGI server has stopped." msgstr "" #: nova/wsgi.py:311 msgid "You must implement __call__" msgstr "" #: nova/wsgi.py:500 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" #: nova/api/auth.py:71 msgid "ratelimit_v3 is removed from v3 api." msgstr "" #: nova/api/auth.py:132 msgid "Invalid service catalog json." msgstr "" #: nova/api/auth.py:155 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" #: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76 #: nova/api/metadata/password.py:62 msgid "Request is too large." msgstr "" #: nova/api/validator.py:131 #, python-format msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" #: nova/api/ec2/__init__.py:87 #, python-format msgid "FaultWrapper: %s" msgstr "" #: nova/api/ec2/__init__.py:158 msgid "Too many failed authentications." msgstr "" #: nova/api/ec2/__init__.py:167 #, 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:186 msgid "Signature not provided" msgstr "" #: nova/api/ec2/__init__.py:191 msgid "Access key not provided" msgstr "" #: nova/api/ec2/__init__.py:227 nova/api/ec2/__init__.py:243 msgid "Failure communicating with keystone" msgstr "" #: nova/api/ec2/__init__.py:242 #, python-format msgid "Keystone failure: %s" msgstr "" #: nova/api/ec2/__init__.py:303 msgid "Timestamp failed validation." msgstr "" #: nova/api/ec2/__init__.py:323 #, python-format msgid "action: %s" msgstr "" #: nova/api/ec2/__init__.py:325 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" #: nova/api/ec2/__init__.py:401 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" #: nova/api/ec2/__init__.py:492 #, python-format msgid "Unexpected %(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:494 #, python-format msgid "Unexpected %(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:498 #, python-format msgid "%(ex_name)s raised: %(ex_str)s" msgstr "" #: nova/api/ec2/__init__.py:500 #, python-format msgid "%(ex_name)s raised" msgstr "" #: nova/api/ec2/__init__.py:523 #, python-format msgid "Environment: %s" msgstr "" #: nova/api/ec2/__init__.py:525 msgid "Unknown error occurred." msgstr "" #: nova/api/ec2/apirequest.py:60 #, python-format msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" #: nova/api/ec2/cloud.py:393 #, python-format msgid "Create snapshot of volume %s" msgstr "" #: nova/api/ec2/cloud.py:418 #, python-format msgid "Could not find key pair(s): %s" msgstr "" #: nova/api/ec2/cloud.py:434 #, python-format msgid "Create key pair %s" msgstr "" #: nova/api/ec2/cloud.py:446 #, python-format msgid "Import key %s" msgstr "" #: nova/api/ec2/cloud.py:459 #, python-format msgid "Delete key pair %s" msgstr "" #: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:725 msgid "need group_name or group_id" msgstr "" #: nova/api/ec2/cloud.py:606 msgid "can't build a valid rule" msgstr "" #: nova/api/ec2/cloud.py:614 #, python-format msgid "Invalid IP protocol %(protocol)s" msgstr "" #: nova/api/ec2/cloud.py:645 nova/api/ec2/cloud.py:678 msgid "No rule for the specified parameters." msgstr "" #: nova/api/ec2/cloud.py:753 #, python-format msgid "Get console output for instance %s" msgstr "" #: nova/api/ec2/cloud.py:824 #, python-format msgid "Create volume from snapshot %s" msgstr "" #: nova/api/ec2/cloud.py:828 nova/api/openstack/compute/contrib/volumes.py:243 #, python-format msgid "Create volume of %s GB" msgstr "" #: nova/api/ec2/cloud.py:865 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" #: nova/api/ec2/cloud.py:894 nova/api/openstack/compute/contrib/volumes.py:505 #, python-format msgid "Detach volume %s" msgstr "" #: nova/api/ec2/cloud.py:1055 #, python-format msgid "vol = %s\n" msgstr "" #: nova/api/ec2/cloud.py:1221 msgid "Allocate address" msgstr "" #: nova/api/ec2/cloud.py:1226 #, python-format msgid "Release address %s" msgstr "" #: nova/api/ec2/cloud.py:1231 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" #: nova/api/ec2/cloud.py:1241 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" #: nova/api/ec2/cloud.py:1249 #: nova/api/openstack/compute/contrib/floating_ips.py:247 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" #: nova/api/ec2/cloud.py:1262 #, python-format msgid "Disassociate address %s" msgstr "" #: nova/api/ec2/cloud.py:1279 nova/api/openstack/compute/servers.py:919 #: nova/api/openstack/compute/plugins/v3/multiple_create.py:64 msgid "min_count must be <= max_count" msgstr "" #: nova/api/ec2/cloud.py:1311 msgid "Image must be available" msgstr "" #: nova/api/ec2/cloud.py:1400 msgid "Going to start terminating instances" msgstr "" #: nova/api/ec2/cloud.py:1411 #, python-format msgid "Reboot instance %r" msgstr "" #: nova/api/ec2/cloud.py:1421 msgid "Going to stop instances" msgstr "" #: nova/api/ec2/cloud.py:1432 msgid "Going to start instances" msgstr "" #: nova/api/ec2/cloud.py:1524 #, python-format msgid "De-registering image %s" msgstr "" #: nova/api/ec2/cloud.py:1540 msgid "imageLocation is required" msgstr "" #: nova/api/ec2/cloud.py:1560 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" #: nova/api/ec2/cloud.py:1621 msgid "user or group not specified" msgstr "" #: nova/api/ec2/cloud.py:1624 msgid "only group \"all\" is supported" msgstr "" #: nova/api/ec2/cloud.py:1627 msgid "operation_type must be add or remove" msgstr "" #: nova/api/ec2/cloud.py:1629 #, python-format msgid "Updating image %s publicity" msgstr "" #: nova/api/ec2/cloud.py:1642 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" #: nova/api/ec2/cloud.py:1668 #, 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:1699 #, python-format msgid "Couldn't stop instance within %d sec" msgstr "" #: nova/api/ec2/cloud.py:1718 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" #: nova/api/ec2/cloud.py:1743 nova/api/ec2/cloud.py:1793 msgid "resource_id and tag are required" msgstr "" #: nova/api/ec2/cloud.py:1747 nova/api/ec2/cloud.py:1797 msgid "Expecting a list of resources" msgstr "" #: nova/api/ec2/cloud.py:1752 nova/api/ec2/cloud.py:1802 #: nova/api/ec2/cloud.py:1860 msgid "Only instances implemented" msgstr "" #: nova/api/ec2/cloud.py:1756 nova/api/ec2/cloud.py:1806 msgid "Expecting a list of tagSets" msgstr "" #: nova/api/ec2/cloud.py:1762 nova/api/ec2/cloud.py:1815 msgid "Expecting tagSet to be key/value pairs" msgstr "" #: nova/api/ec2/cloud.py:1769 msgid "Expecting both key and value to be set" msgstr "" #: nova/api/ec2/cloud.py:1820 msgid "Expecting key to be set" msgstr "" #: nova/api/ec2/cloud.py:1894 msgid "Invalid CIDR" msgstr "" #: nova/api/ec2/ec2utils.py:255 msgid "Request must include either Timestamp or Expires, but cannot contain both" msgstr "" #: nova/api/ec2/ec2utils.py:273 msgid "Timestamp is invalid." msgstr "" #: nova/api/ec2/faults.py:29 #, python-format msgid "EC2 error response: %(code)s: %(message)s" msgstr "" #: nova/api/metadata/base.py:392 #, python-format msgid "future versions %s hidden in version list" msgstr "" #: nova/api/metadata/handler.py:108 msgid "" "X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled to process this " "header." msgstr "" #: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" #: nova/api/metadata/handler.py:136 nova/api/metadata/handler.py:192 msgid "An unknown error has occurred. Please try your request again." msgstr "" #: nova/api/metadata/handler.py:154 msgid "X-Instance-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:156 msgid "X-Tenant-ID header is missing from request." msgstr "" #: nova/api/metadata/handler.py:158 msgid "Multiple X-Instance-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:160 msgid "Multiple X-Tenant-ID headers found within request." msgstr "" #: nova/api/metadata/handler.py:174 #, python-format msgid "" "X-Instance-ID-Signature: %(signature)s does not match the expected value:" " %(expected_signature)s for id: %(instance_id)s. Request From: " "%(remote_address)s" msgstr "" #: nova/api/metadata/handler.py:183 msgid "Invalid proxy request signature." msgstr "" #: nova/api/metadata/handler.py:190 nova/api/metadata/handler.py:197 #, python-format msgid "Failed to get metadata for instance id: %s" msgstr "" #: nova/api/metadata/handler.py:201 #, python-format msgid "" "Tenant_id %(tenant_id)s does not match tenant_id of instance " "%(instance_id)s." msgstr "" #: nova/api/metadata/vendordata_json.py:47 msgid "file does not exist" msgstr "" #: nova/api/metadata/vendordata_json.py:49 msgid "Unexpected IOError when reading" msgstr "" #: nova/api/metadata/vendordata_json.py:52 msgid "failed to load json" msgstr "" #: nova/api/openstack/__init__.py:89 #, python-format msgid "Caught error: %s" msgstr "" #: nova/api/openstack/__init__.py:98 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: nova/api/openstack/__init__.py:190 msgid "Must specify an ExtensionManager class" msgstr "" #: nova/api/openstack/__init__.py:201 #, python-format msgid "Extending resource: %s" msgstr "" #: nova/api/openstack/__init__.py:236 nova/api/openstack/__init__.py:410 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: nova/api/openstack/__init__.py:241 #, python-format msgid "Extension %(ext_name)s extended resource: %(collection)s" msgstr "" #: nova/api/openstack/__init__.py:283 #: nova/api/openstack/compute/plugins/v3/servers.py:100 #, python-format msgid "Not loading %s because it is in the blacklist" msgstr "" #: nova/api/openstack/__init__.py:288 #: nova/api/openstack/compute/plugins/v3/servers.py:105 #, python-format msgid "Not loading %s because it is not in the whitelist" msgstr "" #: nova/api/openstack/__init__.py:299 #, python-format msgid "v3 API Extension Blacklist: %s" msgstr "" #: nova/api/openstack/__init__.py:301 #, python-format msgid "v3 API Extension Whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:308 #, python-format msgid "Extensions in both blacklist and whitelist: %s" msgstr "" #: nova/api/openstack/__init__.py:332 #, python-format msgid "Missing core API extensions: %s" msgstr "" #: nova/api/openstack/__init__.py:360 #, python-format msgid "Running _register_resources on %s" msgstr "" #: nova/api/openstack/__init__.py:363 #, python-format msgid "Extended resource: %s" msgstr "" #: nova/api/openstack/__init__.py:402 #, python-format msgid "Running _register_controllers on %s" msgstr "" #: nova/api/openstack/__init__.py:415 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: nova/api/openstack/common.py:132 #, 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:182 #, python-format msgid "%s param must be an integer" msgstr "" #: nova/api/openstack/common.py:185 #, python-format msgid "%s param must be positive" msgstr "" #: nova/api/openstack/common.py:210 msgid "offset param must be an integer" msgstr "" #: nova/api/openstack/common.py:216 msgid "limit param must be an integer" msgstr "" #: nova/api/openstack/common.py:220 msgid "limit param must be positive" msgstr "" #: nova/api/openstack/common.py:224 msgid "offset param must be positive" msgstr "" #: nova/api/openstack/common.py:259 nova/api/openstack/compute/flavors.py:146 #: nova/api/openstack/compute/servers.py:604 #: nova/api/openstack/compute/plugins/v3/flavors.py:110 #: nova/api/openstack/compute/plugins/v3/servers.py:281 #, python-format msgid "marker [%s] not found" msgstr "" #: nova/api/openstack/common.py:299 #, python-format msgid "href %s does not contain version" msgstr "" #: nova/api/openstack/common.py:314 msgid "Image metadata limit exceeded" msgstr "" #: nova/api/openstack/common.py:322 msgid "Image metadata key cannot be blank" msgstr "" #: nova/api/openstack/common.py:325 msgid "Image metadata key too long" msgstr "" #: nova/api/openstack/common.py:328 msgid "Invalid image metadata" msgstr "" #: nova/api/openstack/common.py:391 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" #: nova/api/openstack/common.py:394 #, python-format msgid "Cannot '%s' an instance which has never been active" msgstr "" #: nova/api/openstack/common.py:397 #, python-format msgid "Instance is in an invalid state for '%s'" msgstr "" #: nova/api/openstack/common.py:477 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" #: nova/api/openstack/common.py:479 msgid "Instance snapshots are not permitted at this time." msgstr "" #: nova/api/openstack/common.py:592 msgid "Cells is not enabled." msgstr "" #: nova/api/openstack/extensions.py:197 #, python-format msgid "Loaded extension: %s" msgstr "" #: nova/api/openstack/extensions.py:236 #: nova/api/openstack/compute/plugins/__init__.py:45 #, python-format msgid "Ext name: %s" msgstr "" #: nova/api/openstack/extensions.py:237 #: nova/api/openstack/compute/plugins/__init__.py:46 #, python-format msgid "Ext alias: %s" msgstr "" #: nova/api/openstack/extensions.py:238 #: nova/api/openstack/compute/plugins/__init__.py:47 #, python-format msgid "Ext description: %s" msgstr "" #: nova/api/openstack/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: nova/api/openstack/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: nova/api/openstack/extensions.py:243 #: nova/api/openstack/compute/plugins/__init__.py:51 #, python-format msgid "Exception loading extension: %s" msgstr "" #: nova/api/openstack/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: nova/api/openstack/extensions.py:266 #, python-format msgid "Calling extension factory %s" msgstr "" #: nova/api/openstack/extensions.py:278 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:349 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: nova/api/openstack/extensions.py:372 #, python-format msgid "Failed to load extension %(ext_name)s:%(exc)s" msgstr "" #: nova/api/openstack/extensions.py:494 msgid "Unexpected exception in API method" msgstr "" #: nova/api/openstack/extensions.py:495 #, python-format msgid "" "Unexpected API Error. Please report this at " "http://bugs.launchpad.net/nova/ and attach the Nova API log if possible." "\n" "%s" msgstr "" #: nova/api/openstack/wsgi.py:228 nova/api/openstack/wsgi.py:644 msgid "cannot understand JSON" msgstr "" #: nova/api/openstack/wsgi.py:649 msgid "too many body keys" msgstr "" #: nova/api/openstack/wsgi.py:693 #, python-format msgid "Exception handling resource: %s" msgstr "" #: nova/api/openstack/wsgi.py:697 #, python-format msgid "Fault thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:700 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: nova/api/openstack/wsgi.py:815 msgid "Unrecognized Content-Type provided in request" msgstr "" #: nova/api/openstack/wsgi.py:930 #, python-format msgid "There is no such action: %s" msgstr "" #: nova/api/openstack/wsgi.py:933 nova/api/openstack/wsgi.py:960 #: nova/api/openstack/compute/server_metadata.py:57 #: nova/api/openstack/compute/server_metadata.py:75 #: nova/api/openstack/compute/server_metadata.py:100 #: nova/api/openstack/compute/server_metadata.py:126 #: nova/api/openstack/compute/contrib/evacuate.py:45 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:58 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:73 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:95 msgid "Malformed request body" msgstr "" #: nova/api/openstack/wsgi.py:937 #, python-format msgid "Action: '%(action)s', body: %(body)s" msgstr "" #: nova/api/openstack/wsgi.py:941 #, python-format msgid "Calling method '%(meth)s' (Content-type='%(ctype)s', Accept='%(accept)s')" msgstr "" #: nova/api/openstack/wsgi.py:957 msgid "Unsupported Content-Type" msgstr "" #: nova/api/openstack/wsgi.py:969 #, python-format msgid "" "Malformed request URL: URL's project_id '%(project_id)s' doesn't match " "Context's project_id '%(context_project_id)s'" msgstr "" #: nova/api/openstack/wsgi.py:1214 #, python-format msgid "Returning %(code)s to user: %(explanation)s" msgstr "" #: nova/api/openstack/xmlutil.py:286 msgid "element is not a child" msgstr "" #: nova/api/openstack/xmlutil.py:444 msgid "root element selecting a list" msgstr "" #: nova/api/openstack/xmlutil.py:767 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: nova/api/openstack/xmlutil.py:887 msgid "subclasses must implement construct()!" msgstr "" #: nova/api/openstack/compute/extensions.py:37 msgid "Initializing extension manager." msgstr "" #: nova/api/openstack/compute/flavors.py:107 #: nova/api/openstack/compute/plugins/v3/flavors.py:70 #, python-format msgid "Invalid is_public filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:131 #, python-format msgid "Invalid minRam filter [%s]" msgstr "" #: nova/api/openstack/compute/flavors.py:138 #, python-format msgid "Invalid minDisk filter [%s]" msgstr "" #: nova/api/openstack/compute/image_metadata.py:35 #: nova/api/openstack/compute/images.py:141 #: nova/api/openstack/compute/images.py:157 msgid "Image not found." msgstr "" #: nova/api/openstack/compute/image_metadata.py:78 msgid "Incorrect request body format" msgstr "" #: nova/api/openstack/compute/image_metadata.py:82 #: nova/api/openstack/compute/server_metadata.py:79 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:92 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:84 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:77 msgid "Request body and URI mismatch" msgstr "" #: nova/api/openstack/compute/image_metadata.py:85 #: nova/api/openstack/compute/server_metadata.py:83 #: nova/api/openstack/compute/contrib/flavorextraspecs.py:95 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:87 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:81 msgid "Request body contains too many items" msgstr "" #: nova/api/openstack/compute/image_metadata.py:117 msgid "Invalid metadata key" msgstr "" #: nova/api/openstack/compute/images.py:162 msgid "You are not allowed to delete the image." msgstr "" #: nova/api/openstack/compute/ips.py:67 #: nova/api/openstack/compute/plugins/v3/ips.py:39 msgid "Instance does not exist" msgstr "" #: nova/api/openstack/compute/ips.py:90 #: nova/api/openstack/compute/plugins/v3/ips.py:60 msgid "Instance is not a member of specified network" msgstr "" #: nova/api/openstack/compute/limits.py:161 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: nova/api/openstack/compute/limits.py:287 msgid "This request was rate-limited." msgstr "" #: nova/api/openstack/compute/server_metadata.py:37 #: nova/api/openstack/compute/server_metadata.py:122 #: nova/api/openstack/compute/server_metadata.py:174 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:41 msgid "Server does not exist" msgstr "" #: nova/api/openstack/compute/server_metadata.py:154 #: nova/api/openstack/compute/server_metadata.py:165 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:141 #: nova/api/openstack/compute/plugins/v3/server_metadata.py:153 msgid "Metadata item was not found" msgstr "" #: nova/api/openstack/compute/servers.py:82 msgid "XML support has been deprecated and will be removed in the Juno release." msgstr "" #: nova/api/openstack/compute/servers.py:552 #: nova/api/openstack/compute/contrib/cells.py:423 #: nova/api/openstack/compute/plugins/v3/cells.py:331 msgid "Invalid changes-since value" msgstr "" #: nova/api/openstack/compute/servers.py:571 #: nova/api/openstack/compute/plugins/v3/servers.py:235 msgid "Only administrators may list deleted instances" msgstr "" #: nova/api/openstack/compute/servers.py:607 #: nova/api/openstack/compute/plugins/v3/servers.py:284 #, python-format msgid "Flavor '%s' could not be found " msgstr "" #: nova/api/openstack/compute/servers.py:626 #: nova/api/openstack/compute/servers.py:773 #: nova/api/openstack/compute/servers.py:1079 #: nova/api/openstack/compute/servers.py:1199 #: nova/api/openstack/compute/servers.py:1380 #: nova/api/openstack/compute/plugins/v3/servers.py:622 #: nova/api/openstack/compute/plugins/v3/servers.py:734 #: nova/api/openstack/compute/plugins/v3/servers.py:853 msgid "Instance could not be found" msgstr "" #: nova/api/openstack/compute/servers.py:657 #, python-format msgid "Bad personality format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:660 msgid "Bad personality format" msgstr "" #: nova/api/openstack/compute/servers.py:663 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:678 msgid "Unknown argument : port" msgstr "" #: nova/api/openstack/compute/servers.py:681 #: nova/api/openstack/compute/plugins/v3/servers.py:346 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:691 #: nova/api/openstack/compute/plugins/v3/servers.py:362 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:702 #: nova/api/openstack/compute/plugins/v3/servers.py:335 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" #: nova/api/openstack/compute/servers.py:715 #: nova/api/openstack/compute/plugins/v3/servers.py:377 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" #: nova/api/openstack/compute/servers.py:721 #: nova/api/openstack/compute/plugins/v3/servers.py:383 #, python-format msgid "Bad network format: missing %s" msgstr "" #: nova/api/openstack/compute/servers.py:724 #: nova/api/openstack/compute/servers.py:825 #: nova/api/openstack/compute/plugins/v3/servers.py:386 msgid "Bad networks format" msgstr "" #: nova/api/openstack/compute/servers.py:750 msgid "Userdata content cannot be decoded" msgstr "" #: nova/api/openstack/compute/servers.py:755 msgid "accessIPv4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/servers.py:760 msgid "accessIPv6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/servers.py:789 #: nova/api/openstack/compute/plugins/v3/servers.py:427 msgid "Server name is not defined" msgstr "" #: nova/api/openstack/compute/servers.py:841 #: nova/api/openstack/compute/servers.py:969 msgid "Invalid flavorRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:881 msgid "" "Using different block_device_mapping syntaxes is not allowed in the same " "request." msgstr "" #: nova/api/openstack/compute/servers.py:966 #: nova/api/openstack/compute/plugins/v3/servers.py:503 msgid "Can not find requested image" msgstr "" #: nova/api/openstack/compute/servers.py:972 #: nova/api/openstack/compute/plugins/v3/servers.py:509 msgid "Invalid key_name provided." msgstr "" #: nova/api/openstack/compute/servers.py:975 #: nova/api/openstack/compute/plugins/v3/servers.py:512 msgid "Invalid config_drive provided." msgstr "" #: nova/api/openstack/compute/servers.py:1064 msgid "HostId cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1068 msgid "Personality cannot be updated." msgstr "" #: nova/api/openstack/compute/servers.py:1094 #: nova/api/openstack/compute/servers.py:1113 #: nova/api/openstack/compute/plugins/v3/servers.py:633 #: nova/api/openstack/compute/plugins/v3/servers.py:649 msgid "Instance has not been resized." msgstr "" #: nova/api/openstack/compute/servers.py:1116 #: nova/api/openstack/compute/plugins/v3/servers.py:652 msgid "Flavor used by the instance could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1132 #: nova/api/openstack/compute/plugins/v3/servers.py:666 msgid "Argument 'type' for reboot must be a string" msgstr "" #: nova/api/openstack/compute/servers.py:1138 #: nova/api/openstack/compute/plugins/v3/servers.py:672 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" #: nova/api/openstack/compute/servers.py:1142 #: nova/api/openstack/compute/plugins/v3/servers.py:676 msgid "Missing argument 'type' for reboot" msgstr "" #: nova/api/openstack/compute/servers.py:1169 #: nova/api/openstack/compute/plugins/v3/servers.py:704 msgid "Unable to locate requested flavor." msgstr "" #: nova/api/openstack/compute/servers.py:1172 #: nova/api/openstack/compute/plugins/v3/servers.py:707 msgid "Resize requires a flavor change." msgstr "" #: nova/api/openstack/compute/servers.py:1180 #: nova/api/openstack/compute/plugins/v3/servers.py:715 msgid "You are not authorized to access the image the instance was started with." msgstr "" #: nova/api/openstack/compute/servers.py:1184 #: nova/api/openstack/compute/plugins/v3/servers.py:719 msgid "Image that the instance was started with could not be found." msgstr "" #: nova/api/openstack/compute/servers.py:1188 #: nova/api/openstack/compute/plugins/v3/servers.py:723 msgid "Invalid instance image." msgstr "" #: nova/api/openstack/compute/servers.py:1211 msgid "Missing imageRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1220 msgid "Invalid imageRef provided." msgstr "" #: nova/api/openstack/compute/servers.py:1250 msgid "Missing flavorRef attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1263 msgid "No adminPass was specified" msgstr "" #: nova/api/openstack/compute/servers.py:1271 #: nova/api/openstack/compute/plugins/v3/admin_password.py:56 msgid "Unable to set password on instance" msgstr "" #: nova/api/openstack/compute/servers.py:1280 msgid "Unable to parse metadata key/value pairs." msgstr "" #: nova/api/openstack/compute/servers.py:1293 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1296 msgid "Resize requests require 'flavorRef' attribute." msgstr "" #: nova/api/openstack/compute/servers.py:1316 msgid "Could not parse imageRef from request." msgstr "" #: nova/api/openstack/compute/servers.py:1386 #: nova/api/openstack/compute/plugins/v3/servers.py:859 msgid "Cannot find image for rebuild" msgstr "" #: nova/api/openstack/compute/servers.py:1419 msgid "createImage entity requires name attribute" msgstr "" #: nova/api/openstack/compute/servers.py:1428 #: nova/api/openstack/compute/contrib/admin_actions.py:286 #: nova/api/openstack/compute/plugins/v3/create_backup.py:85 #: nova/api/openstack/compute/plugins/v3/servers.py:899 msgid "Invalid metadata" msgstr "" #: nova/api/openstack/compute/servers.py:1486 msgid "Invalid adminPass" msgstr "" #: nova/api/openstack/compute/servers.py:1512 #: nova/api/openstack/compute/plugins/v3/servers.py:1014 #, python-format msgid "Removing options '%s' from query" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:63 #: nova/api/openstack/compute/contrib/admin_actions.py:88 #: nova/api/openstack/compute/contrib/admin_actions.py:113 #: nova/api/openstack/compute/contrib/admin_actions.py:135 #: nova/api/openstack/compute/contrib/admin_actions.py:176 #: nova/api/openstack/compute/contrib/admin_actions.py:195 #: nova/api/openstack/compute/contrib/admin_actions.py:214 #: nova/api/openstack/compute/contrib/admin_actions.py:233 #: nova/api/openstack/compute/contrib/admin_actions.py:386 #: nova/api/openstack/compute/contrib/multinic.py:43 #: nova/api/openstack/compute/contrib/rescue.py:44 #: nova/api/openstack/compute/contrib/shelve.py:43 msgid "Server not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:66 msgid "Virt driver does not implement pause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:70 #, python-format msgid "Compute.api::pause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:91 msgid "Virt driver does not implement unpause function." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:95 #, python-format msgid "Compute.api::unpause %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:117 #, python-format msgid "compute.api::suspend %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:139 #, python-format msgid "compute.api::resume %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:163 #, python-format msgid "Error in migrate %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:182 #, python-format msgid "Compute.api::reset_network %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:201 #, python-format msgid "Compute.api::inject_network_info %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:218 #, python-format msgid "Compute.api::lock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:237 #, python-format msgid "Compute.api::unlock %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:263 #, python-format msgid "createBackup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:267 msgid "Malformed createBackup entity" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:273 msgid "createBackup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:276 msgid "createBackup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:292 #: nova/api/openstack/compute/contrib/console_output.py:44 #: nova/api/openstack/compute/contrib/server_diagnostics.py:48 #: nova/api/openstack/compute/contrib/server_start_stop.py:40 #: nova/virt/hyperv/vmops.py:353 msgid "Instance not found" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:323 #: nova/api/openstack/compute/plugins/v3/migrate_server.py:80 msgid "" "host, block_migration and disk_over_commit must be specified for live " "migration." msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:355 #, python-format msgid "Live migration of instance %s to another host failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:358 #, python-format msgid "Live migration of instance %(id)s to host %(host)s failed" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:376 #: nova/api/openstack/compute/plugins/v3/admin_actions.py:83 #, python-format msgid "Desired state must be specified. Valid states are: %s" msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:390 #, python-format msgid "Compute.api::resetState %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:98 #, python-format msgid "Cannot show aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:133 #, python-format msgid "Cannot update aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:147 #, python-format msgid "Cannot delete aggregate: %s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:158 #, python-format msgid "Aggregates does not have %s action" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:162 #: nova/api/openstack/compute/contrib/flavormanage.py:55 #: nova/api/openstack/compute/contrib/keypairs.py:86 #: nova/api/openstack/compute/plugins/v3/aggregates.py:46 #: nova/api/openstack/compute/plugins/v3/aggregates.py:82 #: nova/api/openstack/compute/plugins/v3/aggregates.py:120 #: nova/api/openstack/compute/plugins/v3/aggregates.py:205 msgid "Invalid request body" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:172 #: nova/api/openstack/compute/contrib/aggregates.py:177 #, python-format msgid "Cannot add host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:191 #: nova/api/openstack/compute/contrib/aggregates.py:195 #: nova/api/openstack/compute/plugins/v3/aggregates.py:189 #: nova/api/openstack/compute/plugins/v3/aggregates.py:193 #, python-format msgid "Cannot remove host %(host)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/aggregates.py:215 #, python-format msgid "Cannot set metadata %(metadata)s in aggregate %(id)s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:66 #, python-format msgid "Create assisted snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/assisted_volume_snapshots.py:77 #: nova/api/openstack/compute/contrib/volumes.py:646 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:104 msgid "Attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:117 #: nova/api/openstack/compute/contrib/attach_interfaces.py:150 #: nova/api/openstack/compute/contrib/attach_interfaces.py:173 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:161 msgid "Network driver does not support this function." msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:121 msgid "Failed to attach interface" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:128 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:125 msgid "Attachments update is not supported" msgstr "" #: nova/api/openstack/compute/contrib/attach_interfaces.py:140 #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:136 #, python-format msgid "Detach interface %s" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:163 #: nova/api/openstack/compute/contrib/baremetal_nodes.py:206 msgid "Must specify address in the form of xx:xx:xx:xx:xx:xx" msgstr "" #: nova/api/openstack/compute/contrib/baremetal_nodes.py:227 msgid "Must specify id or address" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:252 #, python-format msgid "Cell %(id)s not found." msgstr "" #: nova/api/openstack/compute/contrib/cells.py:285 #: nova/api/openstack/compute/plugins/v3/cells.py:192 msgid "Cell name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:289 #: nova/api/openstack/compute/plugins/v3/cells.py:196 msgid "Cell name cannot contain '!' or '.'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:296 #: nova/api/openstack/compute/plugins/v3/cells.py:203 msgid "Cell type must be 'parent' or 'child'" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:352 #: nova/api/openstack/compute/contrib/cells.py:376 #: nova/api/openstack/compute/plugins/v3/cells.py:259 #: nova/api/openstack/compute/plugins/v3/cells.py:282 msgid "No cell information in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:357 #: nova/api/openstack/compute/plugins/v3/cells.py:264 msgid "No cell name in request" msgstr "" #: nova/api/openstack/compute/contrib/cells.py:411 #: nova/api/openstack/compute/plugins/v3/cells.py:319 msgid "Only 'updated_since', 'project_id' and 'deleted' are understood." msgstr "" #: nova/api/openstack/compute/contrib/certificates.py:59 #: nova/api/openstack/compute/plugins/v3/certificates.py:49 msgid "Only root certificate can be retrieved." msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe.py:150 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" msgstr "" #: nova/api/openstack/compute/contrib/cloudpipe_update.py:40 #, python-format msgid "Unknown action %s" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:40 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:45 msgid "Token not found" msgstr "" #: nova/api/openstack/compute/contrib/console_auth_tokens.py:46 #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:51 msgid "The requested console type details are not accessible" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:50 msgid "os-getConsoleOutput malformed or missing from request body" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:61 msgid "Length in request body must be an integer value" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:69 msgid "Unable to get console" msgstr "" #: nova/api/openstack/compute/contrib/console_output.py:74 #: nova/api/openstack/compute/plugins/v3/console_output.py:55 msgid "Unable to get console log, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:50 msgid "Instance not yet ready" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:52 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:59 msgid "Unable to get vnc console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:76 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:89 msgid "Unable to get spice console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/consoles.py:101 #: nova/api/openstack/compute/plugins/v3/remote_consoles.py:122 msgid "Unable to get rdp console, functionality not implemented" msgstr "" #: nova/api/openstack/compute/contrib/disk_config.py:42 #, python-format msgid "%s must be either 'MANUAL' or 'AUTO'." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:53 msgid "host and onSharedStorage must be specified." msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:61 #: nova/api/openstack/compute/plugins/v3/evacuate.py:67 msgid "admin password can't be changed on existing disk" msgstr "" #: nova/api/openstack/compute/contrib/evacuate.py:71 #: nova/api/openstack/compute/plugins/v3/evacuate.py:77 #, python-format msgid "Compute host %s not found." msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:39 #, python-format msgid "Fixed IP %s has been deleted" msgstr "" #: nova/api/openstack/compute/contrib/fixed_ips.py:72 #, python-format msgid "Fixed IP %s not found" msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:94 msgid "Flavor not found." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:99 #: nova/api/openstack/compute/plugins/v3/flavor_access.py:61 msgid "Access list not available for public flavors." msgstr "" #: nova/api/openstack/compute/contrib/flavor_access.py:111 msgid "No request body" msgstr "" #: nova/api/openstack/compute/contrib/flavorextraspecs.py:55 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:42 msgid "No Request Body" msgstr "" #: nova/api/openstack/compute/contrib/floating_ip_dns.py:222 msgid "DNS entries not found." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:129 #: nova/api/openstack/compute/contrib/floating_ips.py:177 #, python-format msgid "Floating ip not found for id %s" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:162 #, python-format msgid "No more floating ips in pool %s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:164 msgid "No more floating ips available." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:189 #, python-format msgid "Floating ip %s has been disassociated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:216 #: nova/api/openstack/compute/contrib/floating_ips.py:280 #: nova/api/openstack/compute/contrib/security_groups.py:457 msgid "Missing parameter dict" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:219 #: nova/api/openstack/compute/contrib/floating_ips.py:283 msgid "Address not specified" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:225 msgid "No nw_info cache associated with instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:230 msgid "No fixed ips associated to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:241 msgid "Specified fixed address not assigned to instance" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:255 msgid "floating ip is already associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:258 msgid "l3driver call to add floating ip failed" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:262 #: nova/api/openstack/compute/contrib/floating_ips.py:291 msgid "floating ip not found" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:265 msgid "Error. Unable to associate floating ip" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:306 msgid "Floating ip is not associated" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips.py:310 #, python-format msgid "Floating ip %(address)s is not associated with instance %(id)s." msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:120 #: nova/api/openstack/compute/contrib/services.py:173 #: nova/api/openstack/compute/plugins/v3/services.py:124 msgid "Unknown action" msgstr "" #: nova/api/openstack/compute/contrib/floating_ips_bulk.py:148 #: nova/cmd/manage.py:413 #, python-format msgid "/%s should be specified as single address(es) not in cidr format" msgstr "" #: nova/api/openstack/compute/contrib/fping.py:52 msgid "fping utility is not found." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:183 #: nova/api/openstack/compute/plugins/v3/hosts.py:128 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:186 #: nova/api/openstack/compute/plugins/v3/hosts.py:131 #, python-format msgid "Invalid status: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:188 #: nova/api/openstack/compute/plugins/v3/hosts.py:133 #, python-format msgid "Invalid mode: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:190 #: nova/api/openstack/compute/plugins/v3/hosts.py:135 msgid "'status' or 'maintenance_mode' needed for host update" msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:206 #: nova/api/openstack/compute/plugins/v3/hosts.py:152 #, python-format msgid "Putting host %(host_name)s in maintenance mode %(mode)s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:212 #: nova/api/openstack/compute/plugins/v3/hosts.py:158 msgid "Virt driver does not implement host maintenance mode." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:227 #: nova/api/openstack/compute/plugins/v3/hosts.py:174 #, python-format msgid "Enabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:229 #: nova/api/openstack/compute/plugins/v3/hosts.py:176 #, python-format msgid "Disabling host %s." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:234 #: nova/api/openstack/compute/plugins/v3/hosts.py:181 msgid "Virt driver does not implement host disabled status." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:250 #: nova/api/openstack/compute/plugins/v3/hosts.py:199 msgid "Virt driver does not implement host power management." msgstr "" #: nova/api/openstack/compute/contrib/hosts.py:336 #: nova/api/openstack/compute/plugins/v3/hosts.py:292 msgid "Describe-resource is admin only functionality" msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:193 #: nova/api/openstack/compute/contrib/hypervisors.py:205 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:93 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:105 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:140 #, python-format msgid "Hypervisor with ID '%s' could not be found." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:213 #: nova/api/openstack/compute/plugins/v3/hypervisors.py:113 msgid "Virt driver does not implement uptime function." msgstr "" #: nova/api/openstack/compute/contrib/hypervisors.py:229 #: nova/api/openstack/compute/contrib/hypervisors.py:239 #, python-format msgid "No hypervisor matching '%s' could be found." msgstr "" #: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:56 #, python-format msgid "Invalid timestamp for date %s" msgstr "" #: nova/api/openstack/compute/contrib/keypairs.py:104 #: nova/api/openstack/compute/plugins/v3/keypairs.py:88 msgid "Quota exceeded, too many key pairs." msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:54 msgid "Missing 'networkId' argument for addFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:70 msgid "Missing 'address' argument for removeFixedIp" msgstr "" #: nova/api/openstack/compute/contrib/multinic.py:80 #, python-format msgid "Unable to find address %r" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:36 #, python-format msgid "Disassociating host with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:40 #: nova/api/openstack/compute/contrib/networks_associate.py:56 #: nova/api/openstack/compute/contrib/networks_associate.py:74 #: nova/api/openstack/compute/contrib/os_networks.py:78 #: nova/api/openstack/compute/contrib/os_networks.py:93 #: nova/api/openstack/compute/contrib/os_networks.py:104 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:110 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:135 msgid "Network not found" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:43 msgid "Disassociate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:52 #, python-format msgid "Disassociating project with network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:59 msgid "Disassociate project is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/networks_associate.py:77 msgid "Associate host is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:73 #, python-format msgid "Disassociating network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:81 msgid "Disassociate network is not implemented by the configured Network API" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:89 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:106 #, python-format msgid "Showing network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:100 #: nova/api/openstack/compute/contrib/os_tenant_networks.py:125 #, python-format msgid "Deleting network with id %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:116 msgid "Missing network in body" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:120 msgid "Network label is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:124 msgid "Network cidr or cidr_v6 is required" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:126 #, python-format msgid "Creating network with label %s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:142 #, python-format msgid "Associating network %(network)s with project %(project)s" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:150 msgid "VLAN support must be enabled" msgstr "" #: nova/api/openstack/compute/contrib/os_networks.py:153 #, python-format msgid "Cannot associate network %(network)s with project %(project)s: %(message)s" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:83 msgid "Failed to get default networks" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:122 msgid "Failed to update usages deallocating network." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:155 msgid "No CIDR requested" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:161 msgid "Requested network does not contain enough (2+) usable hosts" msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:165 msgid "CIDR is malformed." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:168 msgid "Address could not be converted." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:176 msgid "Quota exceeded, too many networks." msgstr "" #: nova/api/openstack/compute/contrib/os_tenant_networks.py:189 msgid "Create networks failed" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:72 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:56 #: nova/cmd/manage.py:251 msgid "Quota limit must be -1 or greater." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:76 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:60 #: nova/cmd/manage.py:255 #, python-format msgid "Quota limit must be greater than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:79 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:63 #: nova/cmd/manage.py:258 #, python-format msgid "Quota limit must be less than %s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:140 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:118 msgid "quota_set not specified" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:160 #, python-format msgid "force update quotas: %s" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:163 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:139 #, python-format msgid "Bad key(s) %s in quota_set" msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:184 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:168 #, python-format msgid "Quota %(key)s used: %(quota_used)s, value: %(value)s." msgstr "" #: nova/api/openstack/compute/contrib/quotas.py:189 #: nova/api/openstack/compute/plugins/v3/quota_sets.py:173 #, python-format msgid "" "Quota value %(value)s for %(key)s are less than already used and reserved" " %(quota_used)s" msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:71 #: nova/api/openstack/compute/plugins/v3/rescue.py:73 msgid "The rescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/rescue.py:89 #: nova/api/openstack/compute/plugins/v3/rescue.py:95 msgid "The unrescue operation is not implemented by this cloud." msgstr "" #: nova/api/openstack/compute/contrib/scheduler_hints.py:37 #: nova/api/openstack/compute/plugins/v3/scheduler_hints.py:39 msgid "Malformed scheduler_hints attribute" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:127 #: nova/api/openstack/compute/contrib/security_groups.py:371 msgid "Not enough parameters to build a valid rule." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:131 msgid "This default rule already exists." msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:152 #, python-format msgid "Showing security_group_default_rule with id %s" msgstr "" #: nova/api/openstack/compute/contrib/security_group_default_rules.py:156 msgid "security group default rule not found" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:379 #, python-format msgid "Bad prefix for network in cidr %s" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:460 msgid "Security group not specified" msgstr "" #: nova/api/openstack/compute/contrib/security_groups.py:464 msgid "Security group name cannot be empty" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:92 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:65 #, python-format msgid "event entity requires key %(key)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:96 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:69 #, python-format msgid "event entity contains unsupported items: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:102 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:75 #, python-format msgid "Invalid event status `%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:111 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:84 #, python-format msgid "Dropping event %(name)s:%(tag)s for unknown instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:121 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:94 #, python-format msgid "Create event %(name)s:%(tag)s for instance %(instance_uuid)s" msgstr "" #: nova/api/openstack/compute/contrib/server_external_events.py:130 #: nova/api/openstack/compute/plugins/v3/server_external_events.py:103 msgid "No instances found for any event" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:173 msgid "Conflicting policies configured!" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:178 #, python-format msgid "Invalid policies: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:183 msgid "the body is invalid." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:192 #, python-format msgid "'%s' is either missing or empty." msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:198 #, python-format msgid "Invalid format for name: '%s'" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:206 #, python-format msgid "'%s' is not a list" msgstr "" #: nova/api/openstack/compute/contrib/server_groups.py:210 #, python-format msgid "unsupported fields: %s" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:49 #: nova/api/openstack/compute/plugins/v3/servers.py:982 msgid "start instance" msgstr "" #: nova/api/openstack/compute/contrib/server_start_stop.py:63 #: nova/api/openstack/compute/plugins/v3/servers.py:997 msgid "stop instance" msgstr "" #: nova/api/openstack/compute/contrib/services.py:146 #: nova/api/openstack/compute/plugins/v3/services.py:99 #, python-format msgid "Service %s not found." msgstr "" #: nova/api/openstack/compute/contrib/services.py:192 msgid "" "The string containing the reason for disabling the service contains " "invalid characters or is too long." msgstr "" #: nova/api/openstack/compute/contrib/services.py:200 #: nova/api/openstack/compute/plugins/v3/services.py:150 msgid "Invalid attribute in the request" msgstr "" #: nova/api/openstack/compute/contrib/services.py:202 #: nova/api/openstack/compute/plugins/v3/services.py:152 msgid "Missing disabled reason field" msgstr "" #: nova/api/openstack/compute/contrib/simple_tenant_usage.py:238 msgid "Invalid start time. The start time cannot occur after the end time." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:77 #, python-format msgid "vol=%s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:188 #, python-format msgid "Delete volume with id: %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:362 #: nova/api/openstack/compute/contrib/volumes.py:517 #, python-format msgid "Instance %s is not attached." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:383 #, python-format msgid "Bad volumeId format: volumeId is not in proper format (%s)" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:399 #: nova/api/openstack/compute/contrib/volumes.py:460 msgid "volumeId must be specified." msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:405 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:139 #, python-format msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:526 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:201 msgid "Can't detach root device volume" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:686 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: nova/api/openstack/compute/contrib/volumes.py:693 #, python-format msgid "Invalid value '%s' for force." msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:34 #, python-format msgid "Loaded extension %s" msgstr "" #: nova/api/openstack/compute/plugins/__init__.py:49 #, python-format msgid "Ext version: %i" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:115 msgid "access_ip_v4 is not proper IPv4 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/access_ips.py:120 msgid "access_ip_v6 is not proper IPv6 format" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:50 msgid "Could not find host to be set in request body" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:54 msgid "The value of host must be a string" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:87 #, python-format msgid "Could not find %s parameter in the request" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:124 msgid "Request body is empty" msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:127 #, python-format msgid "Invalid key %s in request body." msgstr "" #: nova/api/openstack/compute/plugins/v3/aggregates.py:208 msgid "Invalid request format for metadata" msgstr "" #: nova/api/openstack/compute/plugins/v3/attach_interfaces.py:103 #, python-format msgid "Attach interface to %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/cells.py:187 #, python-format msgid "Cell %s doesn't exist." msgstr "" #: nova/api/openstack/compute/plugins/v3/console_auth_tokens.py:40 msgid "token not provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:62 #, python-format msgid "create_backup entity requires %s attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:66 msgid "Malformed create_backup entity" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:72 msgid "create_backup attribute 'rotation' must be an integer" msgstr "" #: nova/api/openstack/compute/plugins/v3/create_backup.py:75 msgid "create_backup attribute 'rotation' must be greater than or equal to zero" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:98 msgid "The volume was either invalid or not attached to the instance." msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:176 #, python-format msgid "Detach volume %(volume_id)s from instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:191 #: nova/api/openstack/compute/plugins/v3/extended_volumes.py:218 #, python-format msgid "Volume %(volume_id)s is not attached to the instance %(server_id)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/extension_info.py:48 #, python-format msgid "Filter out extension %s from discover list" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:94 #, python-format msgid "Invalid min_ram filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors.py:101 #, python-format msgid "Invalid min_disk filter [%s]" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:66 msgid "No or bad extra_specs provided" msgstr "" #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:72 #: nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py:93 msgid "Concurrent transaction has been committed, try again" msgstr "" #: nova/api/openstack/compute/plugins/v3/hosts.py:120 msgid "The request body invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/hypervisors.py:125 msgid "Need parameter 'query' to specify which hypervisor to filter on" msgstr "" #: nova/api/openstack/compute/plugins/v3/instance_actions.py:73 #, python-format msgid "Action %s not found" msgstr "" #: nova/api/openstack/compute/plugins/v3/quota_sets.py:154 #, python-format msgid "Force update quotas: %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:118 #, python-format msgid "" "extension %(ext_alias)s detected by servers extension for function " "%(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:125 #, python-format msgid "extension %(ext_alias)s is missing %(func)s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:146 msgid "Did not find any server create extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:157 msgid "Did not find any server rebuild extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:168 msgid "Did not find any server update extensions" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:213 msgid "Invalid changes_since value" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:321 msgid "Device name cannot include spaces." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:343 msgid "Unknown argument: port" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:351 #, python-format msgid "" "Specified Fixed IP '%(addr)s' cannot be used with port '%(port)s': port " "already has a Fixed IP allocated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:420 #: nova/api/openstack/compute/plugins/v3/servers.py:592 msgid "The request body is invalid" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:478 #: nova/api/openstack/compute/plugins/v3/servers.py:506 msgid "Invalid flavor_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:555 #, python-format msgid "Running _create_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:561 #, python-format msgid "Running _rebuild_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:567 #, python-format msgid "Running _resize_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:573 #, python-format msgid "Running _update_extension_point for %s" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:603 msgid "host_id cannot be updated." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:748 msgid "Invalid image_ref provided." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:767 msgid "Missing image_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:774 msgid "Missing flavor_ref attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:787 msgid "Resize request has invalid 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:790 msgid "Resize requests require 'flavor_ref' attribute." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:806 msgid "Could not parse image_ref from request." msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:890 msgid "create_image entity requires name attribute" msgstr "" #: nova/api/openstack/compute/plugins/v3/servers.py:954 msgid "Invalid admin_password" msgstr "" #: nova/api/openstack/compute/plugins/v3/services.py:143 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: nova/api/openstack/compute/views/servers.py:187 msgid "Instance has had its instance_type removed from the DB" msgstr "" #: nova/api/validation/validators.py:61 #, python-format msgid "Invalid input for field/attribute %(path)s. Value: %(value)s. %(message)s" msgstr "" #: nova/cells/manager.py:78 msgid "" "The cells feature of Nova is considered experimental by the OpenStack " "project because it receives much less testing than the rest of Nova. This" " may change in the future, but current deployers should be aware that the" " use of it in production right now may be risky." msgstr "" #: nova/cells/messaging.py:204 #, python-format msgid "Error processing message locally: %(exc)s" msgstr "" #: nova/cells/messaging.py:365 nova/cells/messaging.py:373 #, python-format msgid "destination is %(target_cell)s but routing_path is %(routing_path)s" msgstr "" #: nova/cells/messaging.py:385 #, python-format msgid "Unknown %(cell_type)s when routing to %(target_cell)s" msgstr "" #: nova/cells/messaging.py:409 #, python-format msgid "Error locating next hop for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:436 #, python-format msgid "Failed to send message to cell: %(next_hop)s: %(exc)s" msgstr "" #: nova/cells/messaging.py:515 #, python-format msgid "Error locating next hops for message: %(exc)s" msgstr "" #: nova/cells/messaging.py:535 #, python-format msgid "Error sending message to next hops: %(exc)s" msgstr "" #: nova/cells/messaging.py:553 #, python-format msgid "Error waiting for responses from neighbor cells: %(exc)s" msgstr "" #: nova/cells/messaging.py:668 #, python-format msgid "Unknown method '%(method)s' in compute API" msgstr "" #: nova/cells/messaging.py:699 #, python-format msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s" msgstr "" #: nova/cells/messaging.py:709 #, python-format msgid "Received capacities from child cell %(cell_name)s: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1034 #, python-format msgid "Got update for instance: %(instance)s" msgstr "" #: nova/cells/messaging.py:1070 msgid "Got update to delete instance" msgstr "" #: nova/cells/messaging.py:1085 #, python-format msgid "Got broadcast to %(delete_type)s delete instance" msgstr "" #: nova/cells/messaging.py:1099 #, python-format msgid "Got message to create instance fault: %(instance_fault)s" msgstr "" #: nova/cells/messaging.py:1120 #, python-format msgid "" "Forcing a sync of instances, project_id=%(projid_str)s, " "updated_since=%(since_str)s" msgstr "" #: nova/cells/messaging.py:1199 #, python-format msgid "No match when trying to update BDM: %(bdm)s" msgstr "" #: nova/cells/messaging.py:1383 #, python-format msgid "Updating parents with our capabilities: %(capabs)s" msgstr "" #: nova/cells/messaging.py:1403 #, python-format msgid "Updating parents with our capacities: %(capacities)s" msgstr "" #: nova/cells/messaging.py:1683 #, python-format msgid "No cell_name for %(method)s() from API" msgstr "" #: nova/cells/messaging.py:1700 msgid "No cell_name for instance update from API" msgstr "" #: nova/cells/messaging.py:1863 #, python-format msgid "Returning exception %s to caller" msgstr "" #: nova/cells/rpcapi.py:370 msgid "Failed to notify cells of BDM update/create." msgstr "" #: nova/cells/rpcapi.py:386 msgid "Failed to notify cells of BDM destroy." msgstr "" #: nova/cells/scheduler.py:153 #, python-format msgid "Weighted cells: %(weighted_cells)s" msgstr "" #: nova/cells/scheduler.py:169 #, python-format msgid "Scheduling with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:190 nova/cells/scheduler.py:230 #, python-format msgid "Couldn't communicate with cell '%s'" msgstr "" #: nova/cells/scheduler.py:194 nova/cells/scheduler.py:234 msgid "Couldn't communicate with any cells" msgstr "" #: nova/cells/scheduler.py:209 #, python-format msgid "Building instances with routing_path=%(routing_path)s" msgstr "" #: nova/cells/scheduler.py:291 #, python-format msgid "" "No cells available when scheduling. Will retry in %(sleep_time)s " "second(s)" msgstr "" #: nova/cells/scheduler.py:297 #, python-format msgid "Error scheduling instances %(instance_uuids)s" msgstr "" #: nova/cells/state.py:352 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capabilities" msgstr "" #: nova/cells/state.py:367 #, python-format msgid "Unknown cell '%(cell_name)s' when trying to update capacities" msgstr "" #: nova/cells/state.py:431 msgid "Updating cell cache from db." msgstr "" #: nova/cells/state.py:468 msgid "Updating cell cache from config file." msgstr "" #: nova/cells/filters/target_cell.py:58 #, python-format msgid "" "Forcing direct route to %(cell_name)s because of 'target_cell' scheduler " "hint" msgstr "" #: nova/cells/weights/mute_child.py:66 #, python-format msgid "" "%(cell)s has not been seen since %(last_seen)s and is being treated as " "mute." msgstr "" #: nova/cloudpipe/pipelib.py:47 msgid "Flavor for vpn instances" msgstr "" #: nova/cloudpipe/pipelib.py:50 msgid "Template for cloudpipe instance boot script" msgstr "" #: nova/cloudpipe/pipelib.py:53 msgid "Network to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:56 msgid "Netmask to push into openvpn config" msgstr "" #: nova/cloudpipe/pipelib.py:125 #, python-format msgid "Launching VPN for %s" msgstr "" #: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90 #, python-format msgid "Failed to load %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:210 #, python-format msgid "parent device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:213 #, python-format msgid "root device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:215 #, python-format msgid "swap device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:217 #, python-format msgid "ephemeral device '%s' not found" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:227 msgid "Failed to detect root device UUID." msgstr "" #: nova/cmd/baremetal_deploy_helper.py:251 #, python-format msgid "Cmd : %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:252 #, python-format msgid "StdOut : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:253 #, python-format msgid "StdErr : %r" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:281 #, python-format msgid "start deployment for node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:290 #, python-format msgid "deployment to node %s failed" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:294 #, python-format msgid "deployment to node %s done" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:316 #, python-format msgid "post: environ=%s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:335 #, python-format msgid "Deploy agent error message: %s" msgstr "" #: nova/cmd/baremetal_deploy_helper.py:359 #, python-format msgid "request is queued: node %(node_id)s, params %(params)s" msgstr "" #: nova/cmd/baremetal_manage.py:158 nova/cmd/manage.py:1327 #, python-format msgid "Could not read %s. Re-running with sudo" msgstr "" #: nova/cmd/baremetal_manage.py:162 nova/cmd/manage.py:1331 msgid "sudo failed, continuing as if nothing happened" msgstr "" #: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1333 msgid "Please re-run nova-manage as root." msgstr "" #: nova/cmd/baremetal_manage.py:204 nova/cmd/manage.py:1378 msgid "Command failed, please check log for more info" msgstr "" #: nova/cmd/compute.py:50 #, python-format msgid "No db access allowed in nova-compute: %s" msgstr "" #: nova/cmd/dhcpbridge.py:105 #, python-format msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'" msgstr "" #: nova/cmd/dhcpbridge.py:115 msgid "Environment variable 'NETWORK_ID' must be set." msgstr "" #: nova/cmd/manage.py:210 msgid "" "The above error may show that the database has not been created.\n" "Please create a database using 'nova-manage db sync' before running this " "command." msgstr "" #: nova/cmd/manage.py:267 #, python-format msgid "%(key)s is not a valid quota key. Valid options are: %(options)s." msgstr "" #: nova/cmd/manage.py:273 msgid "Quota" msgstr "" #: nova/cmd/manage.py:274 msgid "Limit" msgstr "" #: nova/cmd/manage.py:275 msgid "In Use" msgstr "" #: nova/cmd/manage.py:276 msgid "Reserved" msgstr "" #: nova/cmd/manage.py:319 nova/cmd/manage.py:394 nova/cmd/manage.py:718 #: nova/cmd/manage.py:732 nova/cmd/manage.py:802 #, python-format msgid "error: %s" msgstr "" #: nova/cmd/manage.py:327 msgid "network" msgstr "" #: nova/cmd/manage.py:328 msgid "IP address" msgstr "" #: nova/cmd/manage.py:329 msgid "hostname" msgstr "" #: nova/cmd/manage.py:330 nova/cmd/manage.py:858 msgid "host" msgstr "" #: nova/cmd/manage.py:342 nova/cmd/manage.py:366 msgid "No fixed IP found." msgstr "" #: nova/cmd/manage.py:358 #, python-format msgid "WARNING: fixed ip %s allocated to missing instance" msgstr "" #: nova/cmd/manage.py:420 #, python-format msgid "" "Too many IP addresses will be generated. Please increase /%s to reduce " "the number generated." msgstr "" #: nova/cmd/manage.py:471 msgid "No floating IP addresses have been defined." msgstr "" #: nova/cmd/manage.py:533 nova/tests/test_nova_manage.py:214 msgid "id" msgstr "" #: nova/cmd/manage.py:534 nova/tests/test_nova_manage.py:215 msgid "IPv4" msgstr "" #: nova/cmd/manage.py:535 nova/tests/test_nova_manage.py:216 msgid "IPv6" msgstr "" #: nova/cmd/manage.py:536 nova/tests/test_nova_manage.py:217 msgid "start address" msgstr "" #: nova/cmd/manage.py:537 nova/tests/test_nova_manage.py:218 msgid "DNS1" msgstr "" #: nova/cmd/manage.py:538 nova/tests/test_nova_manage.py:219 msgid "DNS2" msgstr "" #: nova/cmd/manage.py:539 nova/tests/test_nova_manage.py:220 msgid "VlanID" msgstr "" #: nova/cmd/manage.py:540 nova/cmd/manage.py:646 #: nova/tests/test_nova_manage.py:221 msgid "project" msgstr "" #: nova/cmd/manage.py:541 nova/tests/test_nova_manage.py:222 msgid "uuid" msgstr "" #: nova/cmd/manage.py:548 msgid "No networks found" msgstr "" #: nova/cmd/manage.py:567 msgid "Please specify either fixed_range or uuid" msgstr "" #: nova/cmd/manage.py:572 msgid "UUID is required to delete Neutron Networks" msgstr "" #: nova/cmd/manage.py:575 msgid "Deleting by fixed_range is not supported with the NeutronManager" msgstr "" #: nova/cmd/manage.py:638 msgid "instance" msgstr "" #: nova/cmd/manage.py:639 msgid "node" msgstr "" #: nova/cmd/manage.py:640 msgid "type" msgstr "" #: nova/cmd/manage.py:641 msgid "state" msgstr "" #: nova/cmd/manage.py:642 msgid "launched" msgstr "" #: nova/cmd/manage.py:643 msgid "image" msgstr "" #: nova/cmd/manage.py:644 msgid "kernel" msgstr "" #: nova/cmd/manage.py:645 msgid "ramdisk" msgstr "" #: nova/cmd/manage.py:647 msgid "user" msgstr "" #: nova/cmd/manage.py:648 nova/cmd/manage.py:859 msgid "zone" msgstr "" #: nova/cmd/manage.py:649 msgid "index" msgstr "" #: nova/cmd/manage.py:693 msgid "Binary" msgstr "" #: nova/cmd/manage.py:694 msgid "Host" msgstr "" #: nova/cmd/manage.py:695 msgid "Zone" msgstr "" #: nova/cmd/manage.py:696 msgid "Status" msgstr "" #: nova/cmd/manage.py:697 msgid "State" msgstr "" #: nova/cmd/manage.py:698 msgid "Updated_At" msgstr "" #: nova/cmd/manage.py:720 #, python-format msgid "Service %(service)s on host %(host)s enabled." msgstr "" #: nova/cmd/manage.py:734 #, python-format msgid "Service %(service)s on host %(host)s disabled." msgstr "" #: nova/cmd/manage.py:806 msgid "An unexpected error has occurred." msgstr "" #: nova/cmd/manage.py:807 msgid "[Result]" msgstr "" #: nova/cmd/manage.py:811 msgid "HOST" msgstr "" #: nova/cmd/manage.py:812 msgid "PROJECT" msgstr "" #: nova/cmd/manage.py:813 msgid "cpu" msgstr "" #: nova/cmd/manage.py:814 msgid "mem(mb)" msgstr "" #: nova/cmd/manage.py:815 msgid "hdd" msgstr "" #: nova/cmd/manage.py:898 msgid "Must supply a positive value for max_rows" msgstr "" #: nova/cmd/manage.py:940 msgid "Must supply valid parameters to create flavor" msgstr "" #: nova/cmd/manage.py:944 msgid "Flavor exists." msgstr "" #: nova/cmd/manage.py:945 msgid "Please ensure flavor name and flavorid are unique." msgstr "" #: nova/cmd/manage.py:947 msgid "Currently defined flavor names and flavorids:" msgstr "" #: nova/cmd/manage.py:952 msgid "Unknown error" msgstr "" #: nova/cmd/manage.py:955 #, python-format msgid "%s created" msgstr "" #: nova/cmd/manage.py:963 msgid "Valid flavor name is required" msgstr "" #: nova/cmd/manage.py:966 #, python-format msgid "DB Error: %s" msgstr "" #: nova/cmd/manage.py:971 #, python-format msgid "%s deleted" msgstr "" #: nova/cmd/manage.py:1007 #, python-format msgid "Key %(key)s set to %(value)s on instance type %(name)s" msgstr "" #: nova/cmd/manage.py:1030 #, python-format msgid "Key %(key)s on flavor %(name)s unset" msgstr "" #: nova/cmd/manage.py:1091 #, python-format msgid "Hypervisor: %s" msgstr "" #: nova/cmd/manage.py:1140 #, python-format msgid "Line %(linenum)d : %(line)s" msgstr "" #: nova/cmd/manage.py:1143 msgid "No errors in logfiles!" msgstr "" #: nova/cmd/manage.py:1157 msgid "Unable to find system log file!" msgstr "" #: nova/cmd/manage.py:1161 #, python-format msgid "Last %s nova syslog entries:-" msgstr "" #: nova/cmd/manage.py:1170 msgid "No nova entries in syslog!" msgstr "" #: nova/cmd/network.py:49 #, python-format msgid "No db access allowed in nova-network: %s" msgstr "" #: nova/compute/api.py:366 msgid "Cannot run any more instances of this type." msgstr "" #: nova/compute/api.py:373 #, python-format msgid "Can only run %s more instances of this type." msgstr "" #: nova/compute/api.py:385 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)d " "instances. %(msg)s" msgstr "" #: nova/compute/api.py:389 #, python-format msgid "" "%(overs)s quota exceeded for %(pid)s, tried to run between %(min_count)d " "and %(max_count)d instances. %(msg)s" msgstr "" #: nova/compute/api.py:410 msgid "Metadata type should be dict." msgstr "" #: nova/compute/api.py:416 #, python-format msgid "" "Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata " "properties" msgstr "" #: nova/compute/api.py:428 #, python-format msgid "Metadata property key '%s' is not a string." msgstr "" #: nova/compute/api.py:431 #, python-format msgid "Metadata property value '%(v)s' for key '%(k)s' is not a string." msgstr "" #: nova/compute/api.py:435 msgid "Metadata property key blank" msgstr "" #: nova/compute/api.py:438 msgid "Metadata property key greater than 255 characters" msgstr "" #: nova/compute/api.py:441 msgid "Metadata property value greater than 255 characters" msgstr "" #: nova/compute/api.py:573 msgid "Failed to set instance name using multi_instance_display_name_template." msgstr "" #: nova/compute/api.py:667 msgid "Cannot attach one or more volumes to multiple instances" msgstr "" #: nova/compute/api.py:711 msgid "The requested availability zone is not available" msgstr "" #: nova/compute/api.py:812 #, python-format msgid "Going to run %s instances..." msgstr "" #: nova/compute/api.py:948 #, python-format msgid "" "max count reduced from %(max_count)d to %(max_net_count)d due to network " "port quota" msgstr "" #: nova/compute/api.py:999 #, python-format msgid "Image bdm %s" msgstr "" #: nova/compute/api.py:1038 #, python-format msgid "block_device_mapping %s" msgstr "" #: nova/compute/api.py:1080 msgid "" "Images with destination_type 'volume' need to have a non-zero size " "specified" msgstr "" #: nova/compute/api.py:1107 msgid "More than one swap drive requested." msgstr "" #: nova/compute/api.py:1272 #: nova/tests/api/openstack/compute/test_servers.py:3112 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2460 msgid "" "Unable to launch multiple instances with a single configured port ID. " "Please launch your instance one by one with different ports." msgstr "" #: nova/compute/api.py:1374 msgid "instance termination disabled" msgstr "" #: nova/compute/api.py:1389 #, python-format msgid "Working on deleting snapshot %s from shelved instance..." msgstr "" #: nova/compute/api.py:1396 #, python-format msgid "Failed to delete snapshot from shelved instance (%s)." msgstr "" #: nova/compute/api.py:1400 msgid "" "Something wrong happened when trying to delete snapshot from shelved " "instance." msgstr "" #: nova/compute/api.py:1466 msgid "Instance is already in deleting state, ignoring this request" msgstr "" #: nova/compute/api.py:1514 #, python-format msgid "" "Found an unconfirmed migration during delete, id: %(id)s, status: " "%(status)s" msgstr "" #: nova/compute/api.py:1524 msgid "Instance may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1541 #, python-format msgid "Migration %s may have been confirmed during delete" msgstr "" #: nova/compute/api.py:1577 #, python-format msgid "Flavor %d not found" msgstr "" #: nova/compute/api.py:1584 msgid "going to delete a resizing instance" msgstr "" #: nova/compute/api.py:1595 #, python-format msgid "instance's host %s is down, deleting from database" msgstr "" #: nova/compute/api.py:1622 nova/compute/manager.py:2201 #, python-format msgid "Ignoring volume cleanup failure due to %s" msgstr "" #: nova/compute/api.py:1662 msgid "Going to try to soft delete instance" msgstr "" #: nova/compute/api.py:1680 msgid "Going to try to terminate instance" msgstr "" #: nova/compute/api.py:1721 msgid "Going to try to stop instance" msgstr "" #: nova/compute/api.py:1747 msgid "Going to try to start instance" msgstr "" #: nova/compute/api.py:1811 #, python-format msgid "Searching by: %s" msgstr "" #: nova/compute/api.py:2018 #, python-format msgid "snapshot for %s" msgstr "" #: nova/compute/api.py:2347 msgid "flavor_id is None. Assuming migration." msgstr "" #: nova/compute/api.py:2356 #, python-format msgid "" "Old instance type %(current_instance_type_name)s, new instance type " "%(new_instance_type_name)s" msgstr "" #: nova/compute/api.py:2393 #, python-format msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance." msgstr "" #: nova/compute/api.py:2557 msgid "Cannot rescue a volume-backed instance" msgstr "" #: nova/compute/api.py:2679 msgid "Locking" msgstr "" #: nova/compute/api.py:2696 msgid "Unlocking" msgstr "" #: nova/compute/api.py:2787 msgid "Volume must be attached in order to detach." msgstr "" #: nova/compute/api.py:2808 msgid "Old volume is attached to a different instance." msgstr "" #: nova/compute/api.py:2811 msgid "New volume must be detached in order to swap." msgstr "" #: nova/compute/api.py:2814 msgid "New volume must be the same size or larger." msgstr "" #: nova/compute/api.py:2983 #, python-format msgid "Going to try to live migrate instance to %s" msgstr "" #: nova/compute/api.py:3002 msgid "vm evacuation scheduled" msgstr "" #: nova/compute/api.py:3006 #, python-format msgid "Instance compute service state on %s expected to be down, but it was up." msgstr "" #: nova/compute/api.py:3287 msgid "This aggregate contains hosts in an existing availability zone" msgstr "" #: nova/compute/api.py:3352 #, python-format msgid "Host already in availability zone %s" msgstr "" #: nova/compute/api.py:3442 nova/tests/compute/test_keypairs.py:135 msgid "Keypair name contains unsafe characters" msgstr "" #: nova/compute/api.py:3446 nova/tests/compute/test_keypairs.py:127 #: nova/tests/compute/test_keypairs.py:131 msgid "Keypair name must be between 1 and 255 characters long" msgstr "" #: nova/compute/api.py:3534 #, python-format msgid "Security group %s is not a string or unicode" msgstr "" #: nova/compute/api.py:3537 #, python-format msgid "Security group %s cannot be empty." msgstr "" #: nova/compute/api.py:3545 #, python-format msgid "" "Value (%(value)s) for parameter Group%(property)s is invalid. Content " "limited to '%(allowed)s'." msgstr "" #: nova/compute/api.py:3551 #, python-format msgid "Security group %s should not be greater than 255 characters." msgstr "" #: nova/compute/api.py:3569 msgid "Quota exceeded, too many security groups." msgstr "" #: nova/compute/api.py:3572 #, python-format msgid "Create Security Group %s" msgstr "" #: nova/compute/api.py:3584 #, python-format msgid "Security group %s already exists" msgstr "" #: nova/compute/api.py:3597 #, python-format msgid "Unable to update system group '%s'" msgstr "" #: nova/compute/api.py:3659 #, python-format msgid "Unable to delete system group '%s'" msgstr "" #: nova/compute/api.py:3664 msgid "Security group is still in use" msgstr "" #: nova/compute/api.py:3674 msgid "Failed to update usages deallocating security group" msgstr "" #: nova/compute/api.py:3677 #, python-format msgid "Delete security group %s" msgstr "" #: nova/compute/api.py:3753 nova/compute/api.py:3827 #, python-format msgid "Rule (%s) not found" msgstr "" #: nova/compute/api.py:3769 msgid "Quota exceeded, too many security group rules." msgstr "" #: nova/compute/api.py:3772 #, python-format msgid "Authorize security group ingress %s" msgstr "" #: nova/compute/api.py:3781 #, python-format msgid "Revoke security group ingress %s" msgstr "" #: nova/compute/api.py:3834 msgid "Security group id should be integer" msgstr "" #: nova/compute/claims.py:113 nova/compute/claims.py:255 #, python-format msgid "Aborting claim: %s" msgstr "" #: nova/compute/claims.py:135 #, python-format msgid "" "Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs " "%(vcpus)d" msgstr "" #: nova/compute/claims.py:150 msgid "Claim successful" msgstr "" #: nova/compute/claims.py:153 msgid "memory" msgstr "" #: nova/compute/claims.py:162 msgid "disk" msgstr "" #: nova/compute/claims.py:177 nova/compute/claims.py:249 msgid "Claim pci failed." msgstr "" #: nova/compute/claims.py:180 msgid "CPUs" msgstr "" #: nova/compute/claims.py:192 #, python-format msgid "Total %(type)s: %(total)d %(unit)s, used: %(used).02f %(unit)s" msgstr "" #: nova/compute/claims.py:199 #, python-format msgid "%(type)s limit not specified, defaulting to unlimited" msgstr "" #: nova/compute/claims.py:206 #, python-format msgid "%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f %(unit)s" msgstr "" #: nova/compute/claims.py:212 #, python-format msgid "Free %(type)s %(free).02f %(unit)s < requested %(requested)d %(unit)s" msgstr "" #: nova/compute/flavors.py:109 msgid "" "Flavor names can only contain alphanumeric characters, periods, dashes, " "underscores and spaces." msgstr "" #: nova/compute/flavors.py:119 msgid "id cannot contain leading and/or trailing whitespace(s)" msgstr "" #: nova/compute/flavors.py:129 msgid "" "Flavor id can only contain letters from A-Z (both cases), periods, " "dashes, underscores and spaces." msgstr "" #: nova/compute/flavors.py:150 #, python-format msgid "'rxtx_factor' argument must be a float between 0 and %g" msgstr "" #: nova/compute/flavors.py:161 msgid "is_public must be a boolean" msgstr "" #: nova/compute/flavors.py:166 #, python-format msgid "DB error: %s" msgstr "" #: nova/compute/flavors.py:177 #, python-format msgid "Instance type %s not found for deletion" msgstr "" #: nova/compute/flavors.py:327 msgid "" "Key Names can only contain alphanumeric characters, periods, dashes, " "underscores, colons and spaces." msgstr "" #: nova/compute/manager.py:251 #, python-format msgid "Error setting migration status for instance %s." msgstr "" #: nova/compute/manager.py:272 #, python-format msgid "Task possibly preempted: %s" msgstr "" #: nova/compute/manager.py:352 #, python-format msgid "Cleaning up image %s" msgstr "" #: nova/compute/manager.py:358 #, python-format msgid "Error while trying to clean up image %s" msgstr "" #: nova/compute/manager.py:452 #, python-format msgid "Preparing to wait for external event %(event)s" msgstr "" #: nova/compute/manager.py:512 msgid "Instance event failed" msgstr "" #: nova/compute/manager.py:610 #, python-format msgid "%s is not a valid node managed by this compute host." msgstr "" #: nova/compute/manager.py:637 nova/compute/manager.py:646 msgid "Instance has been destroyed from under us while trying to set it to ERROR" msgstr "" #: nova/compute/manager.py:693 #, python-format msgid "" "Deleting instance as its host (%(instance_host)s) is not equal to our " "host (%(our_host)s)." msgstr "" #: nova/compute/manager.py:709 msgid "Instance has been marked deleted already, removing it from the hypervisor." msgstr "" #: nova/compute/manager.py:730 msgid "" "Hypervisor driver does not support instance shared storage check, " "assuming it's not on shared storage" msgstr "" #: nova/compute/manager.py:736 msgid "Failed to check if instance shared" msgstr "" #: nova/compute/manager.py:793 #, python-format msgid "Instance is in %s state." msgstr "" #: nova/compute/manager.py:802 nova/compute/manager.py:846 msgid "Failed to complete a deletion" msgstr "" #: nova/compute/manager.py:816 msgid "Instance failed to spawn correctly, setting to ERROR state" msgstr "" #: nova/compute/manager.py:828 #, python-format msgid "Instance in transitional state %s at start-up clearing task state" msgstr "" #: nova/compute/manager.py:836 msgid "" "Service started deleting the instance during the previous run, but did " "not finish. Restarting the deletion now." msgstr "" #: nova/compute/manager.py:856 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), triggering reboot" msgstr "" #: nova/compute/manager.py:870 #, python-format msgid "" "Instance in transitional state (%(task_state)s) at start-up and power " "state is (%(power_state)s), clearing task state" msgstr "" #: nova/compute/manager.py:901 msgid "Failed to revert crashed migration" msgstr "" #: nova/compute/manager.py:904 msgid "Instance found in migrating state during startup. Resetting task_state" msgstr "" #: nova/compute/manager.py:915 #, python-format msgid "Current state is %(drv_state)s, state in DB is %(db_state)s." msgstr "" #: nova/compute/manager.py:921 msgid "Rebooting instance after nova-compute restart." msgstr "" #: nova/compute/manager.py:932 msgid "Hypervisor driver does not support resume guests" msgstr "" #: nova/compute/manager.py:937 msgid "Failed to resume instance" msgstr "" #: nova/compute/manager.py:946 msgid "Hypervisor driver does not support firewall rules" msgstr "" #: nova/compute/manager.py:971 #, python-format msgid "Lifecycle event %(state)d on VM %(uuid)s" msgstr "" #: nova/compute/manager.py:987 #, python-format msgid "Unexpected power state %d" msgstr "" #: nova/compute/manager.py:1000 #, python-format msgid "" "Event %s arrived for non-existent instance. The instance was probably " "deleted." msgstr "" #: nova/compute/manager.py:1003 #, python-format msgid "Ignoring event %s" msgstr "" #: nova/compute/manager.py:1041 msgid "Checking state" msgstr "" #: nova/compute/manager.py:1092 msgid "Hypervisor driver does not support security groups." msgstr "" #: nova/compute/manager.py:1132 #, python-format msgid "Volume id: %s finished being created but was not set as 'available'" msgstr "" #: nova/compute/manager.py:1190 nova/compute/manager.py:1918 msgid "Success" msgstr "" #: nova/compute/manager.py:1214 msgid "Instance disappeared before we could start it" msgstr "" #: nova/compute/manager.py:1242 msgid "Anti-affinity instance group policy was violated." msgstr "" #: nova/compute/manager.py:1263 nova/compute/manager.py:1845 #: nova/compute/manager.py:3329 nova/compute/manager.py:3870 #, python-format msgid "No node specified, defaulting to %s" msgstr "" #: nova/compute/manager.py:1314 msgid "Instance disappeared during build" msgstr "" #: nova/compute/manager.py:1320 msgid "Failed to dealloc network for deleted instance" msgstr "" #: nova/compute/manager.py:1341 msgid "Failed to dealloc network for failed instance" msgstr "" #: nova/compute/manager.py:1368 #, python-format msgid "Error: %s" msgstr "" #: nova/compute/manager.py:1387 msgid "Clean up resource before rescheduling." msgstr "" #: nova/compute/manager.py:1414 nova/compute/manager.py:3386 msgid "Error trying to reschedule" msgstr "" #: nova/compute/manager.py:1427 msgid "Retry info not present, will not reschedule" msgstr "" #: nova/compute/manager.py:1432 msgid "No request spec, will not reschedule" msgstr "" #: nova/compute/manager.py:1438 #, python-format msgid "Re-scheduling %(method)s: attempt %(num)d" msgstr "" #: nova/compute/manager.py:1468 msgid "Instance build timed out. Set to error state." msgstr "" #: nova/compute/manager.py:1478 nova/compute/manager.py:1823 msgid "Starting instance..." msgstr "" #: nova/compute/manager.py:1492 msgid "Allocating IP information in the background." msgstr "" #: nova/compute/manager.py:1496 #, python-format msgid "" "Treating negative config value (%(retries)s) for " "'network_allocate_retries' as 0." msgstr "" #: nova/compute/manager.py:1509 #, python-format msgid "Instance network_info: |%s|" msgstr "" #: nova/compute/manager.py:1523 #, python-format msgid "Instance failed network setup after %(attempts)d attempt(s)" msgstr "" #: nova/compute/manager.py:1527 #, python-format msgid "Instance failed network setup (attempt %(attempt)d of %(attempts)d)" msgstr "" #: nova/compute/manager.py:1701 msgid "Instance failed block device setup" msgstr "" #: nova/compute/manager.py:1721 nova/compute/manager.py:2015 #: nova/compute/manager.py:3888 msgid "Instance failed to spawn" msgstr "" #: nova/compute/manager.py:1771 msgid "Deallocating network for instance" msgstr "" #: nova/compute/manager.py:1830 msgid "Instance disappeared before build." msgstr "" #: nova/compute/manager.py:1868 msgid "Instance disappeared during build." msgstr "" #: nova/compute/manager.py:1882 msgid "Unexpected build failure, not rescheduling build." msgstr "" #: nova/compute/manager.py:1940 msgid "Failed to allocate network(s)" msgstr "" #: nova/compute/manager.py:1944 nova/compute/manager.py:1981 msgid "Failed to allocate the network(s), not rescheduling." msgstr "" #: nova/compute/manager.py:2005 msgid "Failure prepping block device" msgstr "" #: nova/compute/manager.py:2007 msgid "Failure prepping block device." msgstr "" #: nova/compute/manager.py:2024 msgid "Could not clean up failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2036 msgid "Failed to deallocate networks" msgstr "" #: nova/compute/manager.py:2047 msgid "Failed to cleanup volumes for failed build, not rescheduling" msgstr "" #: nova/compute/manager.py:2082 msgid "Failed to deallocate network for instance." msgstr "" #: nova/compute/manager.py:2090 #, python-format msgid "%(action_str)s instance" msgstr "" #: nova/compute/manager.py:2137 #, python-format msgid "Ignoring DiskNotFound: %s" msgstr "" #: nova/compute/manager.py:2140 #, python-format msgid "Ignoring VolumeNotFound: %s" msgstr "" #: nova/compute/manager.py:2149 #, python-format msgid "terminating bdm %s" msgstr "" #: nova/compute/manager.py:2181 #, python-format msgid "Events pending at deletion: %(events)s" msgstr "" #: nova/compute/manager.py:2250 msgid "Instance disappeared during terminate" msgstr "" #: nova/compute/manager.py:2256 nova/compute/manager.py:3560 #: nova/compute/manager.py:5556 msgid "Setting instance vm_state to ERROR" msgstr "" #: nova/compute/manager.py:2430 msgid "Rebuilding instance" msgstr "" #: nova/compute/manager.py:2443 msgid "Invalid state of instance files on shared storage" msgstr "" #: nova/compute/manager.py:2447 msgid "disk on shared storage, recreating using existing disk" msgstr "" #: nova/compute/manager.py:2451 #, python-format msgid "disk not on shared storage, rebuilding from: '%s'" msgstr "" #: nova/compute/manager.py:2462 nova/compute/manager.py:4686 #, python-format msgid "Failed to get compute_info for %s" msgstr "" #: nova/compute/manager.py:2538 #, python-format msgid "bringing vm to original state: '%s'" msgstr "" #: nova/compute/manager.py:2569 #, python-format msgid "Detaching from volume api: %s" msgstr "" #: nova/compute/manager.py:2596 nova/virt/hyperv/vmops.py:364 msgid "Rebooting instance" msgstr "" #: nova/compute/manager.py:2613 #, python-format msgid "" "trying to reboot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2649 msgid "Reboot failed but instance is running" msgstr "" #: nova/compute/manager.py:2657 #, python-format msgid "Cannot reboot instance: %s" msgstr "" #: nova/compute/manager.py:2669 msgid "Instance disappeared during reboot" msgstr "" #: nova/compute/manager.py:2711 #, python-format msgid "Instance not found, could not set state %s for instance." msgstr "" #: nova/compute/manager.py:2717 msgid "Instance being deleted, snapshot cannot continue" msgstr "" #: nova/compute/manager.py:2733 msgid "instance snapshotting" msgstr "" #: nova/compute/manager.py:2739 #, python-format msgid "" "trying to snapshot a non-running instance: (state: %(state)s expected: " "%(running)s)" msgstr "" #: nova/compute/manager.py:2764 msgid "Instance disappeared during snapshot" msgstr "" #: nova/compute/manager.py:2769 msgid "Image not found during snapshot" msgstr "" #: nova/compute/manager.py:2808 #, python-format msgid "Found %(num_images)d images (rotation: %(rotation)d)" msgstr "" #: nova/compute/manager.py:2816 #, python-format msgid "Rotating out %d backups" msgstr "" #: nova/compute/manager.py:2821 #, python-format msgid "Deleting image %s" msgstr "" #: nova/compute/manager.py:2848 #, python-format msgid "Failed to set admin password. Instance %s is not running" msgstr "" #: nova/compute/manager.py:2855 msgid "Root password set" msgstr "" #: nova/compute/manager.py:2860 msgid "set_admin_password is not implemented by this driver or guest instance." msgstr "" #: nova/compute/manager.py:2873 #, python-format msgid "set_admin_password failed: %s" msgstr "" #: nova/compute/manager.py:2880 msgid "error setting admin password" msgstr "" #: nova/compute/manager.py:2896 #, python-format msgid "" "trying to inject a file into a non-running (state: %(current_state)s " "expected: %(expected_state)s)" msgstr "" #: nova/compute/manager.py:2901 #, python-format msgid "injecting file to %s" msgstr "" #: nova/compute/manager.py:2919 msgid "" "Unable to find a different image to use for rescue VM, using instance's " "current image" msgstr "" #: nova/compute/manager.py:2941 msgid "Rescuing" msgstr "" #: nova/compute/manager.py:2961 msgid "Error trying to Rescue Instance" msgstr "" #: nova/compute/manager.py:2965 #, python-format msgid "Driver Error: %s" msgstr "" #: nova/compute/manager.py:2989 msgid "Unrescuing" msgstr "" #: nova/compute/manager.py:3015 #, python-format msgid "Changing instance metadata according to %r" msgstr "" #: nova/compute/manager.py:3049 #, python-format msgid "Going to confirm migration %s" msgstr "" #: nova/compute/manager.py:3057 #, python-format msgid "Migration %s is not found during confirmation" msgstr "" #: nova/compute/manager.py:3062 #, python-format msgid "Migration %s is already confirmed" msgstr "" #: nova/compute/manager.py:3066 #, python-format msgid "" "Unexpected confirmation status '%(status)s' of migration %(id)s, exit " "confirmation process" msgstr "" #: nova/compute/manager.py:3079 msgid "Instance is not found during confirmation" msgstr "" #: nova/compute/manager.py:3128 #, python-format msgid "Resized/migrated instance is powered off. Setting vm_state to '%s'." msgstr "" #: nova/compute/manager.py:3250 #, python-format msgid "Updating instance to original state: '%s'" msgstr "" #: nova/compute/manager.py:3288 msgid "Instance has no source host" msgstr "" #: nova/compute/manager.py:3294 msgid "destination same as source!" msgstr "" #: nova/compute/manager.py:3304 #, python-format msgid "Stashing vm_state: %s" msgstr "" #: nova/compute/manager.py:3312 msgid "Migrating" msgstr "" #: nova/compute/manager.py:3566 #, python-format msgid "Failed to rollback quota for failed finish_resize: %s" msgstr "" #: nova/compute/manager.py:3628 msgid "Pausing" msgstr "" #: nova/compute/manager.py:3645 msgid "Unpausing" msgstr "" #: nova/compute/manager.py:3686 msgid "Retrieving diagnostics" msgstr "" #: nova/compute/manager.py:3715 msgid "Resuming" msgstr "" #: nova/compute/manager.py:3907 msgid "Reset network" msgstr "" #: nova/compute/manager.py:3912 msgid "Inject network info" msgstr "" #: nova/compute/manager.py:3915 #, python-format msgid "network_info to inject: |%s|" msgstr "" #: nova/compute/manager.py:3935 msgid "Get console output" msgstr "" #: nova/compute/manager.py:3966 msgid "Getting vnc console" msgstr "" #: nova/compute/manager.py:4004 msgid "Getting spice console" msgstr "" #: nova/compute/manager.py:4042 msgid "Getting RDP console" msgstr "" #: nova/compute/manager.py:4134 #, python-format msgid "Attaching volume %(volume_id)s to %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4143 #, python-format msgid "Failed to attach %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4159 #, python-format msgid "Detach volume %(volume_id)s from mountpoint %(mp)s" msgstr "" #: nova/compute/manager.py:4170 msgid "Detaching volume from unknown instance" msgstr "" #: nova/compute/manager.py:4182 #, python-format msgid "Failed to detach volume %(volume_id)s from %(mp)s" msgstr "" #: nova/compute/manager.py:4207 msgid "Updating volume usage cache with totals" msgstr "" #: nova/compute/manager.py:4254 #, python-format msgid "Failed to swap volume %(old_volume_id)s for %(new_volume_id)s" msgstr "" #: nova/compute/manager.py:4261 #, python-format msgid "Failed to connect to volume %(volume_id)s with volume at %(mountpoint)s" msgstr "" #: nova/compute/manager.py:4345 #, python-format msgid "allocate_port_for_instance returned %(ports)s ports" msgstr "" #: nova/compute/manager.py:4369 #, python-format msgid "Port %s is not attached" msgstr "" #: nova/compute/manager.py:4382 nova/tests/compute/test_compute.py:10381 #, python-format msgid "Host %s not found" msgstr "" #: nova/compute/manager.py:4524 #, python-format msgid "Pre live migration failed at %s" msgstr "" #: nova/compute/manager.py:4554 msgid "_post_live_migration() is started.." msgstr "" #: nova/compute/manager.py:4627 #, python-format msgid "Migrating instance to %s finished successfully." msgstr "" #: nova/compute/manager.py:4629 msgid "" "You may see the error \"libvirt: QEMU error: Domain not found: no domain " "with matching name.\" This error can be safely ignored." msgstr "" #: nova/compute/manager.py:4654 msgid "Post operation of migration started" msgstr "" #: nova/compute/manager.py:4799 msgid "Starting heal instance info cache" msgstr "" #: nova/compute/manager.py:4803 msgid "Rebuilding the list of instances to heal" msgstr "" #: nova/compute/manager.py:4812 msgid "Skipping network cache update for instance because it is Building." msgstr "" #: nova/compute/manager.py:4816 nova/compute/manager.py:4847 msgid "Skipping network cache update for instance because it is being deleted." msgstr "" #: nova/compute/manager.py:4842 msgid "" "Skipping network cache update for instance because it has been migrated " "to another host." msgstr "" #: nova/compute/manager.py:4859 msgid "Updated the network info_cache for instance" msgstr "" #: nova/compute/manager.py:4862 msgid "An error occurred while refreshing the network cache." msgstr "" #: nova/compute/manager.py:4865 msgid "Didn't find any instances for network info cache update." msgstr "" #: nova/compute/manager.py:4916 #, python-format msgid "" "Found %(migration_count)d unconfirmed migrations older than " "%(confirm_window)d seconds" msgstr "" #: nova/compute/manager.py:4921 #, python-format msgid "Setting migration %(migration_id)s to error: %(reason)s" msgstr "" #: nova/compute/manager.py:4930 #, python-format msgid "" "Automatically confirming migration %(migration_id)s for instance " "%(instance_uuid)s" msgstr "" #: nova/compute/manager.py:4940 #, python-format msgid "Instance %s not found" msgstr "" #: nova/compute/manager.py:4945 msgid "In ERROR state" msgstr "" #: nova/compute/manager.py:4952 #, python-format msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None" msgstr "" #: nova/compute/manager.py:4963 #, python-format msgid "Error auto-confirming resize: %s. Will retry later." msgstr "" #: nova/compute/manager.py:4990 msgid "Periodic task failed to offload instance." msgstr "" #: nova/compute/manager.py:5010 #, python-format msgid "" "Running instance usage audit for host %(host)s from %(begin_time)s to " "%(end_time)s. %(number_instances)s instances." msgstr "" #: nova/compute/manager.py:5030 #, python-format msgid "Failed to generate usage audit for instance on host %s" msgstr "" #: nova/compute/manager.py:5058 msgid "Updating bandwidth usage cache" msgstr "" #: nova/compute/manager.py:5080 msgid "Bandwidth usage not supported by hypervisor." msgstr "" #: nova/compute/manager.py:5175 msgid "Updating volume usage cache" msgstr "" #: nova/compute/manager.py:5203 #, python-format msgid "" "Found %(num_db_instances)s in the database and %(num_vm_instances)s on " "the hypervisor." msgstr "" #: nova/compute/manager.py:5210 nova/compute/manager.py:5271 msgid "During sync_power_state the instance has a pending task. Skip." msgstr "" #: nova/compute/manager.py:5232 msgid "Periodic sync_power_state task had an error while processing an instance." msgstr "" #: nova/compute/manager.py:5258 #, python-format msgid "" "During the sync_power process the instance has moved from host %(src)s to" " host %(dst)s" msgstr "" #: nova/compute/manager.py:5294 msgid "Instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5306 nova/compute/manager.py:5315 #: nova/compute/manager.py:5346 nova/compute/manager.py:5357 msgid "error during stop() in sync_power_state." msgstr "" #: nova/compute/manager.py:5310 msgid "Instance is suspended unexpectedly. Calling the stop API." msgstr "" #: nova/compute/manager.py:5326 msgid "Instance is paused unexpectedly. Ignore." msgstr "" #: nova/compute/manager.py:5332 msgid "Instance is unexpectedly not found. Ignore." msgstr "" #: nova/compute/manager.py:5338 msgid "Instance is not stopped. Calling the stop API." msgstr "" #: nova/compute/manager.py:5352 msgid "Paused instance shutdown by itself. Calling the stop API." msgstr "" #: nova/compute/manager.py:5366 msgid "Instance is not (soft-)deleted." msgstr "" #: nova/compute/manager.py:5374 msgid "CONF.reclaim_instance_interval <= 0, skipping..." msgstr "" #: nova/compute/manager.py:5388 msgid "Reclaiming deleted instance" msgstr "" #: nova/compute/manager.py:5395 #, python-format msgid "Periodic reclaim failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5420 #, python-format msgid "Deleting orphan compute node %s" msgstr "" #: nova/compute/manager.py:5430 nova/compute/resource_tracker.py:392 #, python-format msgid "No service record for host %s" msgstr "" #: nova/compute/manager.py:5472 #, python-format msgid "" "Detected instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5478 #, python-format msgid "" "Powering off instance with name label '%s' which is marked as DELETED but" " still present on host." msgstr "" #: nova/compute/manager.py:5487 msgid "set_bootable is not implemented for the current driver" msgstr "" #: nova/compute/manager.py:5492 msgid "Failed to power off instance" msgstr "" #: nova/compute/manager.py:5496 #, python-format msgid "" "Destroying instance with name label '%s' which is marked as DELETED but " "still present on host." msgstr "" #: nova/compute/manager.py:5506 #, python-format msgid "Periodic cleanup failed to delete instance: %s" msgstr "" #: nova/compute/manager.py:5510 #, python-format msgid "Unrecognized value '%s' for CONF.running_deleted_instance_action" msgstr "" #: nova/compute/manager.py:5540 #, python-format msgid "Setting instance back to %(state)s after: %(error)s" msgstr "" #: nova/compute/manager.py:5549 #, python-format msgid "Setting instance back to ACTIVE after: %s" msgstr "" #: nova/compute/manager.py:5570 msgid "Hypervisor driver does not support add_aggregate_host" msgstr "" #: nova/compute/manager.py:5587 msgid "Hypervisor driver does not support remove_aggregate_host" msgstr "" #: nova/compute/manager.py:5601 #, python-format msgid "Processing event %(event)s" msgstr "" #: nova/compute/manager.py:5652 msgid "Cleaning up deleted instances" msgstr "" #: nova/compute/manager.py:5661 #, python-format msgid "There are %d instances to clean" msgstr "" #: nova/compute/manager.py:5665 #, python-format msgid "Instance has had %(attempts)s of %(max)s cleanup attempts" msgstr "" #: nova/compute/resource_tracker.py:106 msgid "" "Host field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:111 msgid "" "Node field should not be set on the instance until resources have been " "claimed." msgstr "" #: nova/compute/resource_tracker.py:117 nova/compute/resource_tracker.py:157 #, python-format msgid "Memory overhead for %(flavor)d MB instance; %(overhead)d MB" msgstr "" #: nova/compute/resource_tracker.py:273 #, python-format msgid "Cannot get the metrics from %s." msgstr "" #: nova/compute/resource_tracker.py:292 msgid "Auditing locally available compute resources" msgstr "" #: nova/compute/resource_tracker.py:297 msgid "" "Virt driver does not support 'get_available_resource' Compute tracking " "is disabled." msgstr "" #: nova/compute/resource_tracker.py:372 #, python-format msgid "Compute_service record created for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:378 #, python-format msgid "Compute_service record updated for %(host)s:%(node)s" msgstr "" #: nova/compute/resource_tracker.py:409 #, python-format msgid "Hypervisor: free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:410 #, python-format msgid "Hypervisor: free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:415 #, python-format msgid "Hypervisor: free VCPUs: %s" msgstr "" #: nova/compute/resource_tracker.py:417 msgid "Hypervisor: VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:421 #, python-format msgid "Hypervisor: assignable PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:424 msgid "Hypervisor: no assignable PCI devices" msgstr "" #: nova/compute/resource_tracker.py:431 #, python-format msgid "Free ram (MB): %s" msgstr "" #: nova/compute/resource_tracker.py:432 #, python-format msgid "Free disk (GB): %s" msgstr "" #: nova/compute/resource_tracker.py:437 #, python-format msgid "Free VCPUS: %s" msgstr "" #: nova/compute/resource_tracker.py:439 msgid "Free VCPU information unavailable" msgstr "" #: nova/compute/resource_tracker.py:442 #, python-format msgid "Free PCI devices: %s" msgstr "" #: nova/compute/resource_tracker.py:478 #, python-format msgid "Updating from migration %s" msgstr "" #: nova/compute/resource_tracker.py:545 msgid "Instance not resizing, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:560 msgid "Flavor could not be found, skipping migration." msgstr "" #: nova/compute/resource_tracker.py:650 #, python-format msgid "" "Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB " "memory)" msgstr "" #: nova/compute/resource_tracker.py:664 #, python-format msgid "Missing keys: %s" msgstr "" #: nova/compute/rpcapi.py:58 msgid "No compute host specified" msgstr "" #: nova/compute/rpcapi.py:60 #, python-format msgid "Unable to find host for Instance %s" msgstr "" #: nova/compute/utils.py:208 #, python-format msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" #: nova/compute/utils.py:253 #, python-format msgid "Can't access image %(image_id)s: %(error)s" msgstr "" #: nova/compute/utils.py:357 msgid "" "No aggregate id or name specified for this notification and it will be " "ignored" msgstr "" #: nova/compute/utils.py:377 #, python-format msgid "" "No host name specified for the notification of HostAPI.%s and it will be " "ignored" msgstr "" #: nova/compute/monitors/__init__.py:175 #, python-format msgid "" "Excluding monitor %(monitor_name)s due to metric name overlap; " "overlapping metrics: %(overlap)s" msgstr "" #: nova/compute/monitors/__init__.py:183 #, python-format msgid "Monitor %(monitor_name)s cannot be used: %(ex)s" msgstr "" #: nova/compute/monitors/__init__.py:189 #, python-format msgid "The following monitors have been disabled: %s" msgstr "" #: nova/compute/monitors/virt/cpu_monitor.py:112 #, python-format msgid "Not all properties needed are implemented in the compute driver: %s" msgstr "" #: nova/conductor/api.py:357 msgid "" "Timed out waiting for nova-conductor. Is it running? Or did this service " "start before nova-conductor?" msgstr "" #: nova/conductor/manager.py:122 #, python-format msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" msgstr "" #: nova/conductor/manager.py:352 msgid "Invalid block_device_mapping_destroy invocation" msgstr "" #: nova/conductor/manager.py:714 msgid "No valid host found for cold migrate" msgstr "" #: nova/conductor/manager.py:776 #, python-format msgid "" "Migration of instance %(instance_id)s to host %(dest)s unexpectedly " "failed." msgstr "" #: nova/conductor/manager.py:833 nova/conductor/manager.py:860 msgid "Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED" msgstr "" #: nova/conductor/manager.py:856 msgid "No valid host found for unshelve instance" msgstr "" #: nova/conductor/tasks/live_migrate.py:113 #, python-format msgid "" "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of " "memory(host:%(avail)s <= instance:%(mem_inst)s)" msgstr "" #: nova/conductor/tasks/live_migrate.py:165 #, python-format msgid "Skipping host: %(host)s because: %(e)s" msgstr "" #: nova/conductor/tasks/live_migrate.py:177 #, python-format msgid "" "Exceeded max scheduling retries %(max_retries)d for instance " "%(instance_uuid)s during live migration" msgstr "" #: nova/console/manager.py:80 nova/console/vmrc_manager.py:62 msgid "Adding console" msgstr "" #: nova/console/manager.py:98 nova/console/vmrc_manager.py:112 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" #: nova/console/vmrc_manager.py:115 #, python-format msgid "Removing console %(console_id)s." msgstr "" #: nova/console/websocketproxy.py:56 msgid "Invalid Token" msgstr "" #: nova/console/websocketproxy.py:75 msgid "Invalid Connection Info" msgstr "" #: nova/console/xvp.py:99 msgid "Rebuilding xvp conf" msgstr "" #: nova/console/xvp.py:119 #, python-format msgid "Re-wrote %s" msgstr "" #: nova/console/xvp.py:124 msgid "Failed to write configuration file" msgstr "" #: nova/console/xvp.py:127 msgid "Stopping xvp" msgstr "" #: nova/console/xvp.py:140 msgid "Starting xvp" msgstr "" #: nova/console/xvp.py:147 #, python-format msgid "Error starting xvp: %s" msgstr "" #: nova/console/xvp.py:150 msgid "Restarting xvp" msgstr "" #: nova/console/xvp.py:152 msgid "xvp not running..." msgstr "" #: nova/console/xvp.py:203 msgid "Failed to run xvp." msgstr "" #: nova/consoleauth/manager.py:89 #, python-format msgid "Received Token: %(token)s, %(token_dict)s" msgstr "" #: nova/consoleauth/manager.py:114 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s" msgstr "" #: nova/db/api.py:631 msgid "Failed to notify cells of instance destroy" msgstr "" #: nova/db/api.py:719 nova/db/api.py:747 msgid "Failed to notify cells of instance update" msgstr "" #: nova/db/api.py:1647 msgid "Failed to notify cells of bw_usage update" msgstr "" #: nova/db/api.py:1792 msgid "Failed to notify cells of instance fault" msgstr "" #: nova/db/sqlalchemy/api.py:204 #, python-format msgid "Deadlock detected when running '%(func_name)s': Retrying..." msgstr "" #: nova/db/sqlalchemy/api.py:245 msgid "model or base_model parameter should be subclass of NovaBase" msgstr "" #: nova/db/sqlalchemy/api.py:258 #: nova/openstack/common/db/sqlalchemy/utils.py:176 #: nova/virt/baremetal/db/sqlalchemy/api.py:60 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: nova/db/sqlalchemy/api.py:744 #, python-format msgid "Invalid floating ip id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:846 msgid "Failed to update usages bulk deallocating floating IP" msgstr "" #: nova/db/sqlalchemy/api.py:990 #, python-format msgid "Invalid floating IP %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1291 nova/db/sqlalchemy/api.py:1330 #, python-format msgid "Invalid fixed IP Address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1465 #, python-format msgid "Invalid virtual interface address %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1558 #, python-format msgid "" "Unknown osapi_compute_unique_server_name_scope value: %s Flag must be " "empty, \"global\" or \"project\"" msgstr "" #: nova/db/sqlalchemy/api.py:1717 #, python-format msgid "Invalid instance id %s in request" msgstr "" #: nova/db/sqlalchemy/api.py:1991 #, python-format msgid "Invalid field name: %s" msgstr "" #: nova/db/sqlalchemy/api.py:3149 #, python-format msgid "" "quota_usages out of sync, updating. project_id: %(project_id)s, user_id: " "%(user_id)s, resource: %(res)s, tracked usage: %(tracked_use)s, actual " "usage: %(in_use)s" msgstr "" #: nova/db/sqlalchemy/api.py:3237 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: nova/db/sqlalchemy/api.py:4887 #, python-format msgid "" "Volume(%s) has lower stats then what is in the database. Instance must " "have been rebooted or crashed. Updating totals." msgstr "" #: nova/db/sqlalchemy/api.py:5244 #, python-format msgid "Add metadata failed for aggregate %(id)s after %(retries)s retries" msgstr "" #: nova/db/sqlalchemy/api.py:5623 #, python-format msgid "IntegrityError detected when archiving table %s" msgstr "" #: nova/db/sqlalchemy/migration.py:39 #: nova/openstack/common/db/sqlalchemy/migration.py:188 #: nova/virt/baremetal/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:66 #: nova/virt/baremetal/db/sqlalchemy/migration.py:65 msgid "Upgrade DB using Essex release first." msgstr "" #: nova/db/sqlalchemy/utils.py:94 #: nova/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." msgstr "" #: nova/db/sqlalchemy/utils.py:100 #: nova/openstack/common/db/sqlalchemy/utils.py:290 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." msgstr "" #: nova/db/sqlalchemy/utils.py:241 #, python-format msgid "Deleted duplicated row with id: %(id)s from table: %(table)s" msgstr "" #: nova/db/sqlalchemy/utils.py:274 #, python-format msgid "Missing column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:280 #, python-format msgid "" "Different types in %(table)s.%(column)s and shadow table: %(c_type)s " "%(shadow_c_type)s" msgstr "" #: nova/db/sqlalchemy/utils.py:289 #, python-format msgid "Extra column %(table)s.%(column)s in shadow table" msgstr "" #: nova/db/sqlalchemy/utils.py:310 msgid "Specify `table_name` or `table` param" msgstr "" #: nova/db/sqlalchemy/utils.py:313 msgid "Specify only one param `table_name` `table`" msgstr "" #: nova/db/sqlalchemy/utils.py:336 nova/db/sqlalchemy/utils.py:340 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:84 #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:1103 msgid "Exception while creating table." msgstr "" #: nova/db/sqlalchemy/utils.py:348 #: nova/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: nova/db/sqlalchemy/migrate_repo/versions/216_havana.py:111 msgid "Exception while seeding instance_types table" msgstr "" #: nova/image/glance.py:214 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" #: nova/image/glance.py:248 #, python-format msgid "" "When loading the module %(module_str)s the following error occurred: " "%(ex)s" msgstr "" #: nova/image/glance.py:305 #, python-format msgid "Failed to instantiate the download handler for %(scheme)s" msgstr "" #: nova/image/glance.py:321 #, python-format msgid "Successfully transferred using %s" msgstr "" #: nova/image/s3.py:331 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:348 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:359 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:369 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" #: nova/image/s3.py:381 #, python-format msgid "Image %s was deleted underneath us" msgstr "" #: nova/image/s3.py:396 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" #: nova/image/s3.py:403 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" #: nova/image/s3.py:414 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" #: nova/image/s3.py:426 msgid "Unsafe filenames in image" msgstr "" #: nova/image/download/__init__.py:42 #, python-format msgid "" "%(scheme)s is registered as a module twice. %(module_name)s is not being " "used." msgstr "" #: nova/image/download/file.py:30 msgid "" "List of file systems that are configured in this file in the " "image_file_url: sections" msgstr "" #: nova/image/download/file.py:78 msgid "" "A unique ID given to each file system. This is value is set in Glance " "and agreed upon here so that the operator knowns they are dealing with " "the same file system." msgstr "" #: nova/image/download/file.py:83 msgid "The path at which the file system is mounted." msgstr "" #: nova/image/download/file.py:92 #, python-format msgid "The group %s(group_name) must be configured with an id." msgstr "" #: nova/image/download/file.py:110 #, python-format msgid "The key %s is required in all file system descriptions." msgstr "" #: nova/image/download/file.py:120 #, python-format msgid "" "The key %(r)s is required in the location metadata to access the url " "%(url)s." msgstr "" #: nova/image/download/file.py:127 #, python-format msgid "The ID %(id)s is unknown." msgstr "" #: nova/image/download/file.py:135 #, python-format msgid "" "The mount point advertised by glance: %(glance_mount)s, does not match " "the URL path: %(path)s" msgstr "" #: nova/image/download/file.py:153 #, python-format msgid "No matching ID for the URL %s was found." msgstr "" #: nova/image/download/file.py:164 #, python-format msgid "Copied %(source_file)s using %(module_str)s" msgstr "" #: nova/ipv6/account_identifier.py:39 nova/ipv6/rfc2462.py:34 #, python-format msgid "Bad mac for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:41 nova/ipv6/rfc2462.py:36 #, python-format msgid "Bad prefix for to_global_ipv6: %s" msgstr "" #: nova/ipv6/account_identifier.py:43 #, python-format msgid "Bad project_id for to_global_ipv6: %s" msgstr "" #: nova/keymgr/conf_key_mgr.py:58 msgid "keymgr.fixed_key not defined" msgstr "" #: nova/keymgr/mock_key_mgr.py:54 msgid "This key manager is not suitable for use in production deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:40 msgid "" "This key manager is insecure and is not recommended for production " "deployments" msgstr "" #: nova/keymgr/single_key_mgr.py:72 #, python-format msgid "Not deleting key %s" msgstr "" #: nova/network/api.py:56 msgid "instance is a required argument to use @refresh_cache" msgstr "" #: nova/network/api.py:74 #, python-format msgid "Updating cache with info: %s" msgstr "" #: nova/network/api.py:84 msgid "Failed storing info cache" msgstr "" #: nova/network/api.py:247 nova/network/neutronv2/api.py:737 #, python-format msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" #: nova/network/driver.py:39 msgid "Network driver option required, but not specified" msgstr "" #: nova/network/driver.py:42 #, python-format msgid "Loading network driver '%s'" msgstr "" #: nova/network/floating_ips.py:90 #, python-format msgid "Fixed ip %s not found" msgstr "" #: nova/network/floating_ips.py:100 nova/network/floating_ips.py:385 #, python-format msgid "Interface %s not found" msgstr "" #: nova/network/floating_ips.py:124 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" #: nova/network/floating_ips.py:181 #, python-format msgid "Floating IP %s is not associated. Ignore." msgstr "" #: nova/network/floating_ips.py:200 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" #: nova/network/floating_ips.py:204 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" #: nova/network/floating_ips.py:224 #, python-format msgid "Quota exceeded for %s, tried to allocate floating IP" msgstr "" #: nova/network/floating_ips.py:284 msgid "Failed to update usages deallocating floating IP" msgstr "" #: nova/network/floating_ips.py:380 #, python-format msgid "Failed to disassociated floating address: %s" msgstr "" #: nova/network/floating_ips.py:548 #, python-format msgid "Starting migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:555 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will not migrate it " msgstr "" #: nova/network/floating_ips.py:588 #, python-format msgid "Finishing migration network for instance %s" msgstr "" #: nova/network/floating_ips.py:596 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" #: nova/network/floating_ips.py:639 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " "not visible to either the floating or instance DNS driver. It will be " "ignored." msgstr "" #: nova/network/floating_ips.py:679 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" #: nova/network/floating_ips.py:688 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" #: nova/network/ldapdns.py:108 #, python-format msgid "" "Found multiple matches for domain %(domain)s.\n" "%(entry)s" msgstr "" #: nova/network/ldapdns.py:135 #, python-format msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n" msgstr "" #: nova/network/ldapdns.py:322 msgid "ldap not installed" msgstr "" #: nova/network/ldapdns.py:333 msgid "This driver only supports type 'a' entries." msgstr "" #: nova/network/ldapdns.py:376 msgid "This shouldn't be getting called except during testing." msgstr "" #: nova/network/linux_net.py:228 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" #: nova/network/linux_net.py:264 #, python-format msgid "Unknown chain: %r" msgstr "" #: nova/network/linux_net.py:271 msgid "Skipping duplicate iptables rule addition" msgstr "" #: nova/network/linux_net.py:295 #, 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:430 msgid "Skipping apply due to lack of new rules" msgstr "" #: nova/network/linux_net.py:458 msgid "IPTablesManager.apply completed with success" msgstr "" #: nova/network/linux_net.py:713 #, python-format msgid "arping error for ip %s" msgstr "" #: nova/network/linux_net.py:763 #, python-format msgid "Removed %(num)d duplicate rules for floating ip %(float)s" msgstr "" #: nova/network/linux_net.py:811 #, python-format msgid "Error deleting conntrack entries for %s" msgstr "" #: nova/network/linux_net.py:1022 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" #: nova/network/linux_net.py:1066 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" #: nova/network/linux_net.py:1068 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" #: nova/network/linux_net.py:1148 #, python-format msgid "killing radvd threw %s" msgstr "" #: nova/network/linux_net.py:1150 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" #: nova/network/linux_net.py:1300 #, python-format msgid "Unable to execute %(cmd)s. Exception: %(exception)s" msgstr "" #: nova/network/linux_net.py:1355 #, python-format msgid "Net device removed: '%s'" msgstr "" #: nova/network/linux_net.py:1358 #, python-format msgid "Failed removing net device: '%s'" msgstr "" #: nova/network/linux_net.py:1475 #, python-format msgid "Starting VLAN interface %s" msgstr "" #: nova/network/linux_net.py:1518 #, python-format msgid "Starting Bridge %s" msgstr "" #: nova/network/linux_net.py:1530 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" #: nova/network/linux_net.py:1568 #, python-format msgid "Failed to add interface: %s" msgstr "" #: nova/network/linux_net.py:1800 #, python-format msgid "Starting bridge %s " msgstr "" #: nova/network/linux_net.py:1808 #, python-format msgid "Done starting bridge %s" msgstr "" #: nova/network/manager.py:366 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" #: nova/network/manager.py:373 msgid "setting network host" msgstr "" #: nova/network/manager.py:493 msgid "network allocations" msgstr "" #: nova/network/manager.py:500 #, python-format msgid "networks retrieved for instance: |%s|" msgstr "" #: nova/network/manager.py:558 msgid "network deallocation for instance" msgstr "" #: nova/network/manager.py:822 #, python-format msgid "instance-dns-zone not found |%s|." msgstr "" #: nova/network/manager.py:829 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " "|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be " "created." msgstr "" #: nova/network/manager.py:862 #, python-format msgid "Quota exceeded for %s, tried to allocate fixed IP" msgstr "" #: nova/network/manager.py:925 msgid "Failed to update usages deallocating fixed IP" msgstr "" #: nova/network/manager.py:950 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" #: nova/network/manager.py:987 #, python-format msgid "Leased IP |%s|" msgstr "" #: nova/network/manager.py:991 #, python-format msgid "IP %s leased that is not associated" msgstr "" #: nova/network/manager.py:997 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" #: nova/network/manager.py:1002 #, python-format msgid "Released IP |%s|" msgstr "" #: nova/network/manager.py:1006 #, python-format msgid "IP %s released that is not associated" msgstr "" #: nova/network/manager.py:1010 #, python-format msgid "IP %s released that was not leased" msgstr "" #: nova/network/manager.py:1028 #, python-format msgid "%s must be an integer" msgstr "" #: nova/network/manager.py:1052 msgid "Maximum allowed length for 'label' is 255." msgstr "" #: nova/network/manager.py:1072 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" #: nova/network/manager.py:1155 msgid "cidr already in use" msgstr "" #: nova/network/manager.py:1158 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" #: nova/network/manager.py:1169 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" #: nova/network/manager.py:1251 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" #: nova/network/manager.py:1851 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" #: nova/network/manager.py:1858 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s networks. " "Network size is %(network_size)s" msgstr "" #: nova/network/manager.py:1916 #, python-format msgid "Remove unused gateway %s" msgstr "" #: nova/network/minidns.py:48 #, python-format msgid "minidns file is |%s|" msgstr "" #: nova/network/minidns.py:75 nova/network/minidns.py:106 msgid "Invalid name" msgstr "" #: nova/network/minidns.py:78 msgid "This driver only supports type 'a'" msgstr "" #: nova/network/minidns.py:122 #, python-format msgid "Cannot delete entry |%s|" msgstr "" #: nova/network/minidns.py:201 #, python-format msgid "deleted %s" msgstr "" #: nova/network/minidns.py:207 #, python-format msgid "Cannot delete domain |%s|" msgstr "" #: nova/network/model.py:80 #, python-format msgid "Invalid IP format %s" msgstr "" #: nova/network/neutronv2/api.py:176 #, python-format msgid "Successfully created port: %s" msgstr "" #: nova/network/neutronv2/api.py:182 msgid "Neutron error: quota exceeded" msgstr "" #: nova/network/neutronv2/api.py:185 #, python-format msgid "Neutron error creating port on network %s" msgstr "" #: nova/network/neutronv2/api.py:216 #, python-format msgid "allocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:219 #, python-format msgid "empty project id for instance %s" msgstr "" #: nova/network/neutronv2/api.py:254 msgid "No network configured!" msgstr "" #: nova/network/neutronv2/api.py:274 #, python-format msgid "" "Multiple security groups found matching '%s'. Use an ID to be more " "specific." msgstr "" #: nova/network/neutronv2/api.py:344 #, python-format msgid "Failed to update port %s" msgstr "" #: nova/network/neutronv2/api.py:351 #, python-format msgid "Failed to delete port %s" msgstr "" #: nova/network/neutronv2/api.py:398 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" #: nova/network/neutronv2/api.py:414 #, python-format msgid "Port %s does not exist" msgstr "" #: nova/network/neutronv2/api.py:417 nova/network/neutronv2/api.py:441 #, python-format msgid "Failed to delete neutron port %s" msgstr "" #: nova/network/neutronv2/api.py:471 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" #: nova/network/neutronv2/api.py:543 #, python-format msgid "" "Unable to update port %(portid)s on subnet %(subnet_id)s with failure: " "%(exception)s" msgstr "" #: nova/network/neutronv2/api.py:572 #, python-format msgid "Unable to update port %(portid)s with failure: %(exception)s" msgstr "" #: nova/network/neutronv2/api.py:586 #, python-format msgid "validate_networks() for %s" msgstr "" #: nova/network/neutronv2/api.py:599 msgid "Multiple possible networks found, use a Network ID to be more specific." msgstr "" #: nova/network/neutronv2/api.py:617 #, python-format msgid "Failed to access port %s" msgstr "" #: nova/network/neutronv2/api.py:819 #, python-format msgid "Unable to access floating IP %s" msgstr "" #: nova/network/neutronv2/api.py:907 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" #: nova/network/neutronv2/api.py:947 #, python-format msgid "Unable to access floating IP %(fixed_ip)s for port %(port_id)s" msgstr "" #: nova/network/neutronv2/api.py:1006 #, python-format msgid "Unable to update host of port %s" msgstr "" #: nova/network/neutronv2/api.py:1042 #, python-format msgid "" "Network %(id)s not matched with the tenants network! The ports tenant " "%(tenant_id)s will be used." msgstr "" #: nova/network/security_group/neutron_driver.py:60 #, python-format msgid "Neutron Error creating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:81 #, python-format msgid "Neutron Error updating security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:137 #, python-format msgid "Neutron security group %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:140 #: nova/network/security_group/neutron_driver.py:187 #: nova/network/security_group/neutron_driver.py:282 #, python-format msgid "Neutron Error: %s" msgstr "" #: nova/network/security_group/neutron_driver.py:161 msgid "Neutron Error getting security groups" msgstr "" #: nova/network/security_group/neutron_driver.py:170 msgid "Security group id should be uuid" msgstr "" #: nova/network/security_group/neutron_driver.py:207 #, python-format msgid "Neutron Error getting security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:211 #, python-format msgid "Neutron Error adding rules to security group %s" msgstr "" #: nova/network/security_group/neutron_driver.py:215 #: nova/network/security_group/neutron_driver.py:411 #: nova/network/security_group/neutron_driver.py:418 #: nova/network/security_group/neutron_driver.py:444 #: nova/network/security_group/neutron_driver.py:462 #: nova/network/security_group/neutron_driver.py:469 #: nova/network/security_group/neutron_driver.py:498 msgid "Neutron Error:" msgstr "" #: nova/network/security_group/neutron_driver.py:269 #, python-format msgid "Neutron Error unable to delete %s" msgstr "" #: nova/network/security_group/neutron_driver.py:279 #, python-format msgid "Neutron security group rule %s not found" msgstr "" #: nova/network/security_group/neutron_driver.py:405 #: nova/network/security_group/neutron_driver.py:456 #, python-format msgid "Security group %(name)s is not found for project %(project)s" msgstr "" #: nova/network/security_group/neutron_driver.py:421 #: nova/network/security_group/neutron_driver.py:472 #, python-format msgid "instance_id %s could not be found as device id on any ports" msgstr "" #: nova/network/security_group/neutron_driver.py:427 #, python-format msgid "" "Cannot add security group %(name)s to %(instance)s since the port " "%(port_id)s does not meet security requirements" msgstr "" #: nova/network/security_group/neutron_driver.py:437 #: nova/network/security_group/neutron_driver.py:490 #, python-format msgid "Adding security group %(security_group_id)s to port %(port_id)s" msgstr "" #: nova/network/security_group/neutron_driver.py:500 #, python-format msgid "" "Security group %(security_group_name)s not associated with the instance " "%(instance)s" msgstr "" #: nova/network/security_group/security_group_base.py:134 #, python-format msgid "This rule already exists in group %s" msgstr "" #: nova/objects/base.py:73 #, python-format msgid "Error setting %(attr)s" msgstr "" #: nova/objects/base.py:199 #, python-format msgid "Unable to instantiate unregistered object type %(objtype)s" msgstr "" #: nova/objects/base.py:319 #, python-format msgid "Cannot load '%s' in the base class" msgstr "" #: nova/objects/base.py:365 #, python-format msgid "%(objname)s object has no attribute '%(attrname)s'" msgstr "" #: nova/objects/block_device.py:136 msgid "Volume does not belong to the requested instance." msgstr "" #: nova/objects/block_device.py:165 nova/objects/instance.py:516 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s uuid %(uuid)s" msgstr "" #: nova/objects/fields.py:30 #, python-format msgid "Key %(key)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:40 #, python-format msgid "Element %(key)s:%(val)s must be of type %(expected)s not %(actual)s" msgstr "" #: nova/objects/fields.py:142 #, python-format msgid "Field `%s' cannot be None" msgstr "" #: nova/objects/fields.py:217 #, python-format msgid "A string is required here, not %s" msgstr "" #: nova/objects/fields.py:251 msgid "A datetime.datetime is required here" msgstr "" #: nova/objects/fields.py:286 nova/objects/fields.py:295 #: nova/objects/fields.py:304 #, python-format msgid "Network \"%s\" is not valid" msgstr "" #: nova/objects/fields.py:343 msgid "A list is required here" msgstr "" #: nova/objects/fields.py:359 msgid "A dict is required here" msgstr "" #: nova/objects/fields.py:398 #, python-format msgid "An object of type %s is required here" msgstr "" #: nova/objects/fields.py:425 msgid "A NetworkModel is required here" msgstr "" #: nova/objects/instance.py:435 #, python-format msgid "No save handler for %s" msgstr "" #: nova/objects/instance_info_cache.py:82 msgid "Failed to notify cells of instance info cache update" msgstr "" #: nova/objects/service.py:76 #, python-format msgid "Lazy-loading `%(attr)s' on %(name)s id %(id)s" msgstr "" #: nova/objects/utils.py:61 nova/objects/utils.py:75 msgid "None is not valid here" msgstr "" #: nova/objects/utils.py:112 msgid "A list of strings is required here" msgstr "" #: nova/objects/utils.py:114 msgid "Invalid values found in list (strings are required)" msgstr "" #: nova/objects/utils.py:126 msgid "A dict of strings is required here" msgstr "" #: nova/objects/utils.py:128 msgid "Invalid keys found in dict (strings are required)" msgstr "" #: nova/objects/utils.py:131 msgid "Invalid values found in dict (strings are required)" msgstr "" #: nova/openstack/common/eventlet_backdoor.py:142 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: nova/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: nova/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: nova/openstack/common/gettextutils.py:297 msgid "Message objects do not support addition." msgstr "" #: nova/openstack/common/gettextutils.py:306 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: nova/openstack/common/imageutils.py:96 msgid "Snapshot list encountered but no header found!" msgstr "" #: nova/openstack/common/lockutils.py:103 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: nova/openstack/common/lockutils.py:168 #, python-format msgid "Got semaphore \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:177 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" msgstr "" #: nova/openstack/common/lockutils.py:187 #, python-format msgid "Created lock path: %s" msgstr "" #: nova/openstack/common/lockutils.py:205 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:209 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" msgstr "" #: nova/openstack/common/lockutils.py:247 #, python-format msgid "Got semaphore / lock \"%(function)s\"" msgstr "" #: nova/openstack/common/lockutils.py:251 #, python-format msgid "Semaphore / lock released \"%(function)s\"" msgstr "" #: nova/openstack/common/log.py:313 #, python-format msgid "Deprecated: %s" msgstr "" #: nova/openstack/common/log.py:414 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: nova/openstack/common/log.py:465 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: nova/openstack/common/log.py:652 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: nova/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: nova/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" msgstr "" #: nova/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: nova/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" msgstr "" #: nova/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: nova/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: nova/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: nova/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: nova/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: nova/openstack/common/policy.py:394 #, python-format msgid "Failed to understand rule %(rule)s" msgstr "" #: nova/openstack/common/policy.py:404 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: nova/openstack/common/policy.py:679 #, python-format msgid "Failed to understand rule %(rule)r" msgstr "" #: nova/openstack/common/processutils.py:58 msgid "Unexpected error while running command." msgstr "" #: nova/openstack/common/processutils.py:61 #, python-format msgid "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" msgstr "" #: nova/openstack/common/processutils.py:139 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: nova/openstack/common/processutils.py:145 msgid "Command requested root, but did not specify a root helper." msgstr "" #: nova/openstack/common/processutils.py:154 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: nova/openstack/common/processutils.py:187 #: nova/openstack/common/processutils.py:259 #, python-format msgid "Result was %s" msgstr "" #: nova/openstack/common/processutils.py:199 #, python-format msgid "%r failed. Retrying." msgstr "" #: nova/openstack/common/processutils.py:238 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: nova/openstack/common/processutils.py:240 msgid "Environment not supported over SSH" msgstr "" #: nova/openstack/common/processutils.py:244 msgid "process_input not supported over SSH" msgstr "" #: nova/openstack/common/service.py:166 nova/openstack/common/service.py:378 msgid "Full set of CONF:" msgstr "" #: nova/openstack/common/service.py:175 nova/openstack/common/service.py:263 #, python-format msgid "Caught %s, exiting" msgstr "" #: nova/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: nova/openstack/common/service.py:232 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: nova/openstack/common/service.py:269 msgid "Unhandled exception" msgstr "" #: nova/openstack/common/service.py:302 msgid "Forking too fast, sleeping" msgstr "" #: nova/openstack/common/service.py:321 #, python-format msgid "Started child %d" msgstr "" #: nova/openstack/common/service.py:331 #, python-format msgid "Starting %d workers" msgstr "" #: nova/openstack/common/service.py:348 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: nova/openstack/common/service.py:352 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: nova/openstack/common/service.py:356 #, python-format msgid "pid %d not in child list" msgstr "" #: nova/openstack/common/service.py:386 #, python-format msgid "Caught %s, stopping children" msgstr "" #: nova/openstack/common/service.py:404 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: nova/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: nova/openstack/common/strutils.py:86 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: nova/openstack/common/strutils.py:182 #, python-format msgid "Invalid string format: %s" msgstr "" #: nova/openstack/common/strutils.py:189 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:216 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" #: nova/openstack/common/db/sqlalchemy/migration.py:240 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" "There is no `deleted` column in `%s` table. Project doesn't use soft-" "deleted feature." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:183 #, python-format msgid "There is no `project_id` column in `%s` table." msgstr "" #: nova/openstack/common/db/sqlalchemy/utils.py:241 msgid "model should be a subclass of ModelBase" msgstr "" #: nova/pci/pci_manager.py:154 #, python-format msgid "" "Trying to remove device with %(status)s ownership %(instance_uuid)s " "because of %(pci_exception)s" msgstr "" #: nova/scheduler/chance.py:55 msgid "Is the appropriate service running?" msgstr "" #: nova/scheduler/chance.py:60 msgid "Could not find another compute" msgstr "" #: nova/scheduler/driver.py:60 msgid "Exception during scheduler.run_instance" msgstr "" #: nova/scheduler/driver.py:62 nova/scheduler/utils.py:81 #, python-format msgid "Setting instance to %s state." msgstr "" #: nova/scheduler/driver.py:124 msgid "Driver must implement schedule_run_instance" msgstr "" #: nova/scheduler/driver.py:133 msgid "Driver must implement select_destinations" msgstr "" #: nova/scheduler/filter_scheduler.py:79 #, python-format msgid "" "Attempting to build %(num_instances)d instance(s) uuids: " "%(instance_uuids)s" msgstr "" #: nova/scheduler/filter_scheduler.py:83 #, python-format msgid "Request Spec: %s" msgstr "" #: nova/scheduler/filter_scheduler.py:103 #, python-format msgid "Choosing host %(weighed_host)s for instance %(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:165 msgid "Instance disappeared during scheduling" msgstr "" #: nova/scheduler/filter_scheduler.py:204 msgid "Invalid value for 'scheduler_max_attempts', must be >= 1" msgstr "" #: nova/scheduler/filter_scheduler.py:221 #, python-format msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s" msgstr "" #: nova/scheduler/filter_scheduler.py:255 #, python-format msgid "" "Exceeded max scheduling attempts %(max_attempts)d for instance " "%(instance_uuid)s" msgstr "" #: nova/scheduler/filter_scheduler.py:332 #, python-format msgid "Filtered %(hosts)s" msgstr "" #: nova/scheduler/filter_scheduler.py:337 #, python-format msgid "Weighed %(hosts)s" msgstr "" #: nova/scheduler/host_manager.py:177 #, python-format msgid "Metric name unknown of %r" msgstr "" #: nova/scheduler/host_manager.py:192 #, python-format msgid "" "Host has more disk space than database expected (%(physical)sgb > " "%(database)sgb)" msgstr "" #: nova/scheduler/host_manager.py:374 #, python-format msgid "Host filter ignoring hosts: %s" msgstr "" #: nova/scheduler/host_manager.py:386 #, python-format msgid "Host filter forcing available hosts to %s" msgstr "" #: nova/scheduler/host_manager.py:389 #, python-format msgid "No hosts matched due to not matching 'force_hosts' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:402 #, python-format msgid "Host filter forcing available nodes to %s" msgstr "" #: nova/scheduler/host_manager.py:405 #, python-format msgid "No nodes matched due to not matching 'force_nodes' value of '%s'" msgstr "" #: nova/scheduler/host_manager.py:453 #: nova/scheduler/filters/trusted_filter.py:208 #, python-format msgid "No service for compute ID %s" msgstr "" #: nova/scheduler/host_manager.py:475 #, python-format msgid "Removing dead compute node %(host)s:%(node)s from scheduler" msgstr "" #: nova/scheduler/scheduler_options.py:69 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: nova/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: nova/scheduler/utils.py:63 #, python-format msgid "Failed to %(service)s_%(method)s: %(ex)s" msgstr "" #: nova/scheduler/utils.py:165 #, python-format msgid "Ignoring the invalid elements of the option %(name)s: %(options)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:114 #, python-format msgid "Group anti affinity: check if %(host)s not in %(configured)s" msgstr "" #: nova/scheduler/filters/affinity_filter.py:135 #, python-format msgid "Group affinity: check if %(host)s in %(configured)s" msgstr "" #: nova/scheduler/filters/aggregate_image_properties_isolation.py:61 #, python-format msgid "" "%(host_state)s fails image aggregate properties requirements. Property " "%(prop)s does not match %(options)s." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:59 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. Extra_spec " "%(key)s is not in aggregate." msgstr "" #: nova/scheduler/filters/aggregate_instance_extra_specs.py:67 #, python-format msgid "" "%(host_state)s fails instance_type extra_specs requirements. " "'%(aggregate_vals)s' do not match '%(req)s'" msgstr "" #: nova/scheduler/filters/aggregate_multitenancy_isolation.py:48 #, python-format msgid "%s fails tenant id on aggregate" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:62 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: nova/scheduler/filters/compute_capabilities_filter.py:72 #, python-format msgid "%(host_state)s fails instance_type extra_specs requirements" msgstr "" #: nova/scheduler/filters/compute_filter.py:41 #, python-format msgid "%(host_state)s is disabled, reason: %(reason)s" msgstr "" #: nova/scheduler/filters/compute_filter.py:47 #, python-format msgid "%(host_state)s has not been heard from in a while" msgstr "" #: nova/scheduler/filters/core_filter.py:51 msgid "VCPUs not set; assuming CPU collection broken" msgstr "" #: nova/scheduler/filters/core_filter.py:94 #: nova/scheduler/filters/ram_filter.py:95 #, python-format msgid "" "%(num_values)d ratio values found, of which the minimum value will be " "used." msgstr "" #: nova/scheduler/filters/core_filter.py:101 #, python-format msgid "Could not decode cpu_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/disk_filter.py:49 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " "has %(usable_disk_mb)s MB usable disk." msgstr "" #: nova/scheduler/filters/image_props_filter.py:58 #, python-format msgid "" "Instance contains properties %(image_props)s, but no corresponding " "supported_instances are advertised by the compute node" msgstr "" #: nova/scheduler/filters/image_props_filter.py:82 #, python-format msgid "" "Instance properties %(image_props)s are satisfied by compute host " "hypervisor version %(hypervisor_version)s and supported instances " "%(supp_instances)s" msgstr "" #: nova/scheduler/filters/image_props_filter.py:91 #, python-format msgid "" "Instance contains properties %(image_props)s that are not provided by the" " compute node supported_instances %(supp_instances)s or hypervisor " "version %(hypervisor_version)s do not match" msgstr "" #: nova/scheduler/filters/image_props_filter.py:111 #, python-format msgid "%(host_state)s does not support requested instance_properties" msgstr "" #: nova/scheduler/filters/io_ops_filter.py:43 #, 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/metrics_filter.py:50 #, python-format msgid "%(host_state)s does not have the following metrics: %(metrics)s" msgstr "" #: nova/scheduler/filters/num_instances_filter.py:40 #, 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:56 #, python-format msgid "" "%(host_state)s does not have %(requested_ram)s MB usable ram, it only has" " %(usable_ram)s MB usable ram." msgstr "" #: nova/scheduler/filters/ram_filter.py:102 #, python-format msgid "Could not decode ram_allocation_ratio: '%s'" msgstr "" #: nova/scheduler/filters/retry_filter.py:42 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: nova/servicegroup/api.py:64 #, python-format msgid "ServiceGroup driver defined as an instance of %s" msgstr "" #: nova/servicegroup/api.py:70 #, python-format msgid "unknown ServiceGroup driver name: %s" msgstr "" #: nova/servicegroup/api.py:88 #, python-format msgid "" "Report interval must be less than service down time. Current config: " ". Setting service_down_time to: " "%(new_service_down_time)s" msgstr "" #: nova/servicegroup/api.py:106 #, python-format msgid "" "Join new ServiceGroup member %(member_id)s to the %(group_id)s group, " "service = %(service)s" msgstr "" #: nova/servicegroup/api.py:114 #, python-format msgid "Check if the given member [%s] is part of the ServiceGroup, is up" msgstr "" #: nova/servicegroup/api.py:123 #, python-format msgid "" "Explicitly remove the given member %(member_id)s from the%(group_id)s " "group monitoring" msgstr "" #: nova/servicegroup/api.py:130 #, python-format msgid "Returns ALL members of the [%s] ServiceGroup" msgstr "" #: nova/servicegroup/api.py:138 #, python-format msgid "Returns one member of the [%s] group" msgstr "" #: nova/servicegroup/drivers/db.py:42 #, python-format msgid "" "DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s" " group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/db.py:47 msgid "service is a mandatory argument for DB based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/db.py:77 #, python-format msgid "DB_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/db.py:100 nova/servicegroup/drivers/mc.py:100 msgid "Recovered model server connection!" msgstr "" #: nova/servicegroup/drivers/db.py:106 nova/servicegroup/drivers/mc.py:106 msgid "model server went away" msgstr "" #: nova/servicegroup/drivers/mc.py:44 msgid "memcached_servers not defined" msgstr "" #: nova/servicegroup/drivers/mc.py:52 #, python-format msgid "" "Memcached_Driver: join new ServiceGroup member %(member_id)s to the " "%(group_id)s group, service = %(service)s" msgstr "" #: nova/servicegroup/drivers/mc.py:58 msgid "service is a mandatory argument for Memcached based ServiceGroup driver" msgstr "" #: nova/servicegroup/drivers/mc.py:75 #, python-format msgid "Memcached_Driver: get_all members of the %s group" msgstr "" #: nova/servicegroup/drivers/zk.py:80 #, python-format msgid "" "ZooKeeperDriver: join new member %(id)s to the %(gr)s group, " "service=%(sr)s" msgstr "" #: nova/servicegroup/drivers/zk.py:90 msgid "" "Unable to join. It is possible that either another node exists with the " "same name, or this node just restarted. We will try again in a short " "while to make sure." msgstr "" #: nova/servicegroup/drivers/zk.py:101 #, python-format msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s" msgstr "" #: nova/servicegroup/drivers/zk.py:109 #, python-format msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group" msgstr "" #: nova/storage/linuxscsi.py:70 #, python-format msgid "Trying (%(tries)s) to remove device %(device)s" msgstr "" #: nova/storage/linuxscsi.py:100 #, python-format msgid "Multipath call failed exit (%(code)s)" msgstr "" #: nova/storage/linuxscsi.py:121 #, python-format msgid "Couldn't find multipath device %s" msgstr "" #: nova/storage/linuxscsi.py:124 #, python-format msgid "Found multipath device = %s" msgstr "" #: nova/tests/fake_ldap.py:33 msgid "Attempted to instantiate singleton" msgstr "" #: nova/tests/fake_processutils.py:71 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: nova/tests/fake_processutils.py:79 #, python-format msgid "Faked command matched %s" msgstr "" #: nova/tests/fake_processutils.py:95 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: nova/tests/fake_processutils.py:98 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: nova/tests/fake_volume.py:187 msgid "status must be available" msgstr "" #: nova/tests/fake_volume.py:191 nova/volume/cinder.py:230 msgid "already attached" msgstr "" #: nova/tests/fake_volume.py:195 nova/volume/cinder.py:234 msgid "Instance and volume not in same availability_zone" msgstr "" #: nova/tests/fake_volume.py:200 nova/volume/cinder.py:240 msgid "already detached" msgstr "" #: nova/tests/api/test_auth.py:88 msgid "unexpected role header" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3192 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2425 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3197 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2430 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" #: nova/tests/api/openstack/compute/test_servers.py:3202 #: nova/tests/api/openstack/compute/plugins/v3/test_servers.py:2435 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" #: nova/tests/compute/test_compute.py:1616 #: nova/tests/compute/test_compute.py:1643 #: nova/tests/compute/test_compute.py:1721 #: nova/tests/compute/test_compute.py:1748 #: nova/tests/compute/test_compute.py:1795 #: nova/tests/compute/test_compute.py:5420 #, python-format msgid "Running instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:1623 #: nova/tests/compute/test_compute.py:1691 #: nova/tests/compute/test_compute.py:1737 #: nova/tests/compute/test_compute.py:1763 #, python-format msgid "After terminating instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:2664 msgid "Internal error" msgstr "" #: nova/tests/compute/test_compute.py:5431 #, python-format msgid "After force-killing instances: %s" msgstr "" #: nova/tests/compute/test_compute.py:6056 msgid "wrong host/node" msgstr "" #: nova/tests/compute/test_compute.py:10589 msgid "spawn error" msgstr "" #: nova/tests/compute/test_keypairs.py:123 msgid "Keypair data is invalid" msgstr "" #: nova/tests/db/test_migrations.py:854 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:116 #, python-format msgid "%(result_str)s: %(result)s is not a dict." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:130 #, python-format msgid "" "Dictionary key mismatch:\n" "Extra key(s) in template:\n" "%(ex_delta)s\n" "Extra key(s) in %(result_str)s:\n" "%(res_delta)s\n" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:142 #, python-format msgid "%(result_str)s: %(result)s is not a list." msgstr "" #: nova/tests/integrated/api_samples_test_base.py:162 msgid "Extra list items in template:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:166 #, python-format msgid "Extra list items in %(result_str)s:" msgstr "" #: nova/tests/integrated/api_samples_test_base.py:187 #: nova/tests/integrated/api_samples_test_base.py:203 #, python-format msgid "" "Values do not match:\n" "Template: %(expected)s\n" "%(result_str)s: %(result)s" msgstr "" #: nova/tests/integrated/test_login.py:33 #, python-format msgid "flavor: %s" msgstr "" #: nova/tests/integrated/api/client.py:39 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: nova/tests/integrated/api/client.py:50 msgid "Authentication error" msgstr "" #: nova/tests/integrated/api/client.py:58 msgid "Authorization error" msgstr "" #: nova/tests/integrated/api/client.py:66 msgid "Item not found" msgstr "" #: nova/tests/integrated/api/client.py:108 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: nova/tests/integrated/api/client.py:111 #, python-format msgid "Body: %s" msgstr "" #: nova/tests/integrated/api/client.py:129 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:160 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: nova/tests/integrated/api/client.py:171 msgid "Unexpected status code" msgstr "" #: nova/tests/integrated/api/client.py:178 #, python-format msgid "Decoding JSON: %s" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:512 msgid "fake vswitch not found" msgstr "" #: nova/tests/virt/hyperv/test_hypervapi.py:973 msgid "Simulated failure" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:938 msgid "Expected a list for 'auth' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:942 msgid "Expected a function in 'auth[0]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:946 msgid "Expected a function in 'auth[1]' parameter" msgstr "" #: nova/tests/virt/libvirt/fakelibvirt.py:959 msgid "" "virEventRegisterDefaultImpl() must be called before " "connection is used." msgstr "" #: nova/tests/virt/vmwareapi/test_vm_util.py:172 #: nova/virt/vmwareapi/vm_util.py:1116 #, python-format msgid "Datastore regex %s did not match any datastores" msgstr "" #: nova/tests/virt/xenapi/test_vm_utils.py:510 #: nova/virt/xenapi/vm_utils.py:2356 #, python-format msgid "" "Sparse copy in progress, %(complete_pct).2f%% complete. %(left)s bytes " "left to copy" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:951 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" #: nova/tests/virt/xenapi/test_xenapi.py:962 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:133 #: nova/virt/xenapi/image/bittorrent.py:98 msgid "" "Cannot create default bittorrent URL without torrent_base_url set or " "torrent URL fetcher extension" msgstr "" #: nova/tests/virt/xenapi/image/test_bittorrent.py:167 #: nova/virt/xenapi/image/bittorrent.py:102 msgid "Multiple torrent URL fetcher extensions found. Failing." msgstr "" #: nova/virt/block_device.py:242 #, python-format msgid "Driver failed to attach volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/block_device.py:357 #, python-format msgid "Booting with volume %(volume_id)s at %(mountpoint)s" msgstr "" #: nova/virt/configdrive.py:96 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" #: nova/virt/cpu.py:57 nova/virt/cpu.py:61 #, python-format msgid "Invalid range expression %r" msgstr "" #: nova/virt/cpu.py:70 #, python-format msgid "Invalid exclusion expression %r" msgstr "" #: nova/virt/cpu.py:77 #, python-format msgid "Invalid inclusion expression %r" msgstr "" #: nova/virt/cpu.py:82 #, python-format msgid "No CPUs available after parsing %r" msgstr "" #: nova/virt/driver.py:1199 #, python-format msgid "Discarding event %s" msgstr "" #: nova/virt/driver.py:1204 msgid "Event must be an instance of nova.virt.event.Event" msgstr "" #: nova/virt/driver.py:1207 #, python-format msgid "Emitting event %s" msgstr "" #: nova/virt/driver.py:1210 #, python-format msgid "Exception dispatching event %(event)s: %(ex)s" msgstr "" #: nova/virt/driver.py:1292 msgid "Compute driver option required, but not specified" msgstr "" #: nova/virt/driver.py:1295 #, python-format msgid "Loading compute driver '%s'" msgstr "" #: nova/virt/driver.py:1302 msgid "Unable to load the virtualization driver" msgstr "" #: nova/virt/fake.py:212 #, python-format msgid "Key '%(key)s' not in instances '%(inst)s'" msgstr "" #: nova/virt/firewall.py:178 nova/virt/libvirt/firewall.py:309 msgid "Attempted to unfilter instance which is not filtered" msgstr "" #: nova/virt/firewall.py:186 msgid "Filters added to instance" msgstr "" #: nova/virt/firewall.py:188 msgid "Provider Firewall Rules refreshed" msgstr "" #: nova/virt/firewall.py:370 #, python-format msgid "Adding security group rule: %r" msgstr "" #: nova/virt/firewall.py:501 nova/virt/xenapi/firewall.py:75 #, python-format msgid "Adding provider rule: %s" msgstr "" #: nova/virt/images.py:86 msgid "'qemu-img info' parsing failed." msgstr "" #: nova/virt/images.py:92 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: nova/virt/images.py:105 #, python-format msgid "" "%(base)s virtual size %(disk_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/images.py:122 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: nova/virt/storage_users.py:63 nova/virt/storage_users.py:101 #, python-format msgid "Cannot decode JSON from %(id_path)s" msgstr "" #: nova/virt/baremetal/common.py:27 msgid "Connection failed" msgstr "" #: nova/virt/baremetal/common.py:65 msgid "Connection error" msgstr "" #: nova/virt/baremetal/driver.py:87 #, python-format msgid "Request for baremetal node %s sent to wrong service host" msgstr "" #: nova/virt/baremetal/driver.py:141 msgid "cpu_arch is not found in flavor_extra_specs" msgstr "" #: nova/virt/baremetal/driver.py:180 #, python-format msgid "Baremetal node id not supplied to driver for %r" msgstr "" #: nova/virt/baremetal/driver.py:285 #, python-format msgid "Error deploying instance %(instance)s on baremetal node %(node)s." msgstr "" #: nova/virt/baremetal/driver.py:360 #, python-format msgid "Baremetal power manager failed to restart node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:371 #, python-format msgid "Destroy called on non-existing instance %s" msgstr "" #: nova/virt/baremetal/driver.py:389 #, python-format msgid "Error from baremetal driver during destroy: %s" msgstr "" #: nova/virt/baremetal/driver.py:394 #, python-format msgid "Error while recording destroy failure in baremetal database: %s" msgstr "" #: nova/virt/baremetal/driver.py:409 #, python-format msgid "Baremetal power manager failed to stop node for instance %r" msgstr "" #: nova/virt/baremetal/driver.py:422 #, python-format msgid "Baremetal power manager failed to start node for instance %r" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:51 msgid "iboot PDU relay ID must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:62 msgid "iboot PDU port must be an integer." msgstr "" #: nova/virt/baremetal/iboot_pdu.py:89 #: nova/virt/baremetal/virtual_power_driver.py:157 #, python-format msgid "activate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:101 #, python-format msgid "reboot_node: %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:114 #: nova/virt/baremetal/virtual_power_driver.py:180 #, python-format msgid "deactivate_node name %s" msgstr "" #: nova/virt/baremetal/iboot_pdu.py:127 #: nova/virt/baremetal/virtual_power_driver.py:193 #, python-format msgid "Checking if %s is running" msgstr "" #: nova/virt/baremetal/ipmi.py:88 #, python-format msgid "pid file %s does not contain any pid" msgstr "" #: nova/virt/baremetal/ipmi.py:111 msgid "Node id not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:114 msgid "Address not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:117 msgid "User not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:120 msgid "Password not supplied to IPMI" msgstr "" #: nova/virt/baremetal/ipmi.py:137 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" #: nova/virt/baremetal/ipmi.py:153 #, python-format msgid "IPMI power on failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:163 msgid "IPMI power on failed" msgstr "" #: nova/virt/baremetal/ipmi.py:180 #, python-format msgid "IPMI power off failed after %d tries" msgstr "" #: nova/virt/baremetal/ipmi.py:190 msgid "IPMI power off failed" msgstr "" #: nova/virt/baremetal/ipmi.py:201 msgid "IPMI set next bootdev failed" msgstr "" #: nova/virt/baremetal/ipmi.py:213 nova/virt/baremetal/tilera_pdu.py:152 #, python-format msgid "Activate node called, but node %s is already active" msgstr "" #: nova/virt/baremetal/pxe.py:110 #, python-format msgid "Building PXE config for deployment %s." msgstr "" #: nova/virt/baremetal/pxe.py:224 #, python-format msgid "" "Can not activate PXE bootloader. The following boot parameters were not " "passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/pxe.py:248 nova/virt/baremetal/tilera.py:131 #, python-format msgid "Fetching kernel and ramdisk for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:280 nova/virt/baremetal/tilera.py:162 #, python-format msgid "Fetching image %(ami)s for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:321 nova/virt/baremetal/tilera.py:199 #, python-format msgid "Injecting files into image for instance %(name)s" msgstr "" #: nova/virt/baremetal/pxe.py:465 nova/virt/baremetal/tilera.py:317 #, python-format msgid "Node associated with another instance while waiting for deploy of %s" msgstr "" #: nova/virt/baremetal/pxe.py:472 #, python-format msgid "PXE deploy started for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:477 #, python-format msgid "PXE deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:481 #, python-format msgid "PXE deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:483 nova/virt/baremetal/tilera.py:342 #, python-format msgid "Baremetal node deleted while waiting for deployment of instance %s" msgstr "" #: nova/virt/baremetal/pxe.py:488 #, python-format msgid "Timeout reached while waiting for PXE deploy of instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:106 #, python-format msgid "" "Can not activate Tilera bootloader. The following boot parameters were " "not passed to baremetal driver: %s" msgstr "" #: nova/virt/baremetal/tilera.py:323 #, python-format msgid "Tilera deploy started for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:329 #, python-format msgid "Tilera deploy completed for instance %s" msgstr "" #: nova/virt/baremetal/tilera.py:337 msgid "Node is unknown error state." msgstr "" #: nova/virt/baremetal/tilera.py:340 #, python-format msgid "Tilera deploy failed for instance %s" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:83 msgid "Node id not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:86 msgid "Address not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:89 msgid "User not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:92 msgid "Password not supplied to PDU" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:116 msgid "PDU failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:133 msgid "PDU power on failed" msgstr "" #: nova/virt/baremetal/tilera_pdu.py:146 msgid "PDU power off failed" msgstr "" #: nova/virt/baremetal/utils.py:43 #, python-format msgid "Failed to inject data into image %(image)s. Error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:54 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:63 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/utils.py:79 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:38 #, python-format msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:50 #, python-format msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:57 #, python-format msgid "" "Baremetal node: %(id)s has no available physical interface for virtual " "interface %(vif_uuid)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:63 #, python-format msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s" msgstr "" #: nova/virt/baremetal/vif_driver.py:70 #, python-format msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)" msgstr "" #: nova/virt/baremetal/vif_driver.py:74 #, python-format msgid "no pif for vif_uuid=%s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:87 #, python-format msgid "Setting up %s commands." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:107 msgid "virtual_power_ssh_host not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:111 msgid "virtual_power_host_user not defined. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:117 msgid "virtual_power_host_pass/key not set. Can not Start" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:135 msgid "Getting full node list." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:141 #, python-format msgid "Looking up Name for Mac address %s." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:169 #, python-format msgid "reset node: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:196 #, python-format msgid "Node \"%(name)s\" with MAC address %(mac)s not found." msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:230 #, python-format msgid "Result for run_command: %s" msgstr "" #: nova/virt/baremetal/virtual_power_driver.py:233 #, python-format msgid "Error running command: %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:124 #, python-format msgid "baremetal driver was unable to delete tid %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:195 nova/virt/hyperv/volumeops.py:189 #: nova/virt/libvirt/driver.py:1131 msgid "Could not determine iscsi initiator name" msgstr "" #: nova/virt/baremetal/volume_driver.py:234 #, python-format msgid "No fixed PXE IP is associated to %s" msgstr "" #: nova/virt/baremetal/volume_driver.py:288 #, python-format msgid "detach volume could not find tid for %s" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:198 msgid "instance_uuid must be supplied to bm_node_associate_and_update" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:210 #, python-format msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s." msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:245 #: nova/virt/baremetal/db/sqlalchemy/api.py:287 #, python-format msgid "Baremetal interface %s not found" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:297 #, python-format msgid "Baremetal interface %s already in use" msgstr "" #: nova/virt/baremetal/db/sqlalchemy/api.py:310 #, python-format msgid "Baremetal virtual interface %s not found" msgstr "" #: nova/virt/disk/api.py:128 #, python-format msgid "" "Checking the file system with e2fsck has failed, the resize will be " "aborted. (%s)" msgstr "" #: nova/virt/disk/api.py:162 #, python-format msgid "Resizing the file system with resize2fs has failed with error: %s" msgstr "" #: nova/virt/disk/api.py:184 #, python-format msgid "Checking if we can resize image %(image)s. size=%(size)s" msgstr "" #: nova/virt/disk/api.py:190 #, python-format msgid "Cannot resize image %s to a smaller size." msgstr "" #: nova/virt/disk/api.py:198 #, python-format msgid "Checking if we can resize filesystem inside %(image)s. CoW=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:208 #, python-format msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize." msgstr "" #: nova/virt/disk/api.py:218 #, python-format msgid "" "Unable to determine label for image %(image)s with error %(error)s. " "Cannot resize." msgstr "" #: nova/virt/disk/api.py:285 msgid "image already mounted" msgstr "" #: nova/virt/disk/api.py:341 #, python-format msgid "" "Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s" " admin_password= files=%(files)s partition=%(partition)s " "use_cow=%(use_cow)s" msgstr "" #: nova/virt/disk/api.py:361 #, python-format msgid "Ignoring error injecting data into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:383 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" #: nova/virt/disk/api.py:405 nova/virt/disk/mount/loop.py:57 #, python-format msgid "Release loop device %s" msgstr "" #: nova/virt/disk/api.py:409 nova/virt/disk/mount/nbd.py:125 #, python-format msgid "Release nbd device %s" msgstr "" #: nova/virt/disk/api.py:413 #, python-format msgid "Failed to teardown container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:426 #, python-format msgid "Failed to umount container filesystem: %s" msgstr "" #: nova/virt/disk/api.py:451 #, python-format msgid "Ignoring error injecting %(inject)s into image (%(e)s)" msgstr "" #: nova/virt/disk/api.py:470 #, python-format msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s" msgstr "" #: nova/virt/disk/api.py:479 #, python-format msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s" msgstr "" #: nova/virt/disk/api.py:519 #, python-format msgid "Inject key fs=%(fs)s key=%(key)s" msgstr "" #: nova/virt/disk/api.py:547 #, python-format msgid "Inject key fs=%(fs)s net=%(net)s" msgstr "" #: nova/virt/disk/api.py:572 #, python-format msgid "Inject admin password fs=%(fs)s admin_passwd=" msgstr "" #: nova/virt/disk/api.py:611 msgid "Not implemented on Windows" msgstr "" #: nova/virt/disk/api.py:640 #, python-format msgid "User %(username)s not found in password file." msgstr "" #: nova/virt/disk/api.py:656 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" #: nova/virt/disk/mount/api.py:40 #, python-format msgid "" "Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s imgfmt=%(imgfmt)s" msgstr "" #: nova/virt/disk/mount/api.py:46 nova/virt/disk/mount/api.py:64 #: nova/virt/disk/vfs/localfs.py:66 msgid "Using LoopMount" msgstr "" #: nova/virt/disk/mount/api.py:51 nova/virt/disk/mount/api.py:69 #: nova/virt/disk/vfs/localfs.py:71 msgid "Using NbdMount" msgstr "" #: nova/virt/disk/mount/api.py:58 #, python-format msgid "" "Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s " "partition=%(partition)s device=%(device)s" msgstr "" #: nova/virt/disk/mount/api.py:120 msgid "Device allocation failed. Will retry in 2 seconds." msgstr "" #: nova/virt/disk/mount/api.py:123 msgid "Device allocation failed after repeated retries." msgstr "" #: nova/virt/disk/mount/api.py:138 #, python-format msgid "Map dev %s" msgstr "" #: nova/virt/disk/mount/api.py:143 #, python-format msgid "partition search unsupported with %s" msgstr "" #: nova/virt/disk/mount/api.py:159 #, python-format msgid "partition %s not found" msgstr "" #: nova/virt/disk/mount/api.py:160 #, python-format msgid "Failed to map partitions: %s" msgstr "" #: nova/virt/disk/mount/api.py:182 #, python-format msgid "Unmap dev %s" msgstr "" #: nova/virt/disk/mount/api.py:190 #, python-format msgid "Mount %(dev)s on %(dir)s" msgstr "" #: nova/virt/disk/mount/api.py:195 #, python-format msgid "Failed to mount filesystem: %s" msgstr "" #: nova/virt/disk/mount/api.py:207 #, python-format msgid "Umount %s" msgstr "" #: nova/virt/disk/mount/api.py:221 msgid "Fail to mount, tearing back down" msgstr "" #: nova/virt/disk/mount/loop.py:32 #, python-format msgid "Could not attach image to loopback: %s" msgstr "" #: nova/virt/disk/mount/loop.py:33 #, python-format msgid "Loop mount error: %s" msgstr "" #: nova/virt/disk/mount/loop.py:39 #, python-format msgid "Got loop device %s" msgstr "" #: nova/virt/disk/mount/nbd.py:57 #, python-format msgid "NBD error - previous umount did not cleanup /var/lock/qemu-nbd-%s." msgstr "" #: nova/virt/disk/mount/nbd.py:59 nova/virt/disk/mount/nbd.py:73 msgid "No free nbd devices" msgstr "" #: nova/virt/disk/mount/nbd.py:64 msgid "nbd module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:65 msgid "nbd unavailable: module not loaded" msgstr "" #: nova/virt/disk/mount/nbd.py:85 #, python-format msgid "Get nbd device %(dev)s for %(imgfile)s" msgstr "" #: nova/virt/disk/mount/nbd.py:90 #, python-format msgid "qemu-nbd error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:91 nova/virt/disk/mount/nbd.py:104 #, python-format msgid "NBD mount error: %s" msgstr "" #: nova/virt/disk/mount/nbd.py:103 #, python-format msgid "nbd device %s did not show up" msgstr "" #: nova/virt/disk/mount/nbd.py:110 #, python-format msgid "Detaching from erroneous nbd device returned error: %s" msgstr "" #: nova/virt/disk/vfs/api.py:26 #, python-format msgid "" "Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s " "partition=%(partition)s" msgstr "" #: nova/virt/disk/vfs/api.py:32 msgid "Trying to import guestfs" msgstr "" #: nova/virt/disk/vfs/api.py:39 msgid "Using primary VFSGuestFS" msgstr "" #: nova/virt/disk/vfs/api.py:44 msgid "Falling back to VFSLocalFS" msgstr "" #: nova/virt/disk/vfs/guestfs.py:51 #, python-format msgid "Mount guest OS image %(imgfile)s partition %(part)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:60 #, python-format msgid "Inspecting guest OS image %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:64 #, python-format msgid "No operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:68 #, python-format msgid "Multi-boot OS %(roots)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:70 #, python-format msgid "Multi-boot operating system found in %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:76 #, python-format msgid "Inspecting guest OS root filesystem %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:81 #, python-format msgid "No mount points found in %(root)s of %(imgfile)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:89 #, python-format msgid "Mounting %(dev)s at %(dir)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:95 #, python-format msgid "" "Error mounting %(device)s to %(dir)s in image %(imgfile)s with libguestfs" " (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:105 #, python-format msgid "Setting up appliance for %(imgfile)s %(imgfmt)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:131 #, python-format msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)" msgstr "" #: nova/virt/disk/vfs/guestfs.py:141 msgid "Tearing down appliance" msgstr "" #: nova/virt/disk/vfs/guestfs.py:147 #, python-format msgid "Failed to close augeas %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:155 #, python-format msgid "Failed to shutdown appliance %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:163 #, python-format msgid "Failed to close guest handle %s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:175 nova/virt/disk/vfs/localfs.py:100 #, python-format msgid "Make directory path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:180 nova/virt/disk/vfs/localfs.py:105 #, python-format msgid "Append file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:185 nova/virt/disk/vfs/localfs.py:114 #, python-format msgid "Replace file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:190 nova/virt/disk/vfs/localfs.py:123 #, python-format msgid "Read file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:195 nova/virt/disk/vfs/localfs.py:129 #, python-format msgid "Has file path=%s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:204 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:210 #, python-format msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/disk/vfs/guestfs.py:224 #, python-format msgid "chown uid=%(uid)d gid=%(gid)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:45 #, python-format msgid "File path %s not valid" msgstr "" #: nova/virt/disk/vfs/localfs.py:80 #, python-format msgid "Failed to mount image %(ex)s)" msgstr "" #: nova/virt/disk/vfs/localfs.py:88 #, python-format msgid "Failed to unmount %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:94 #, python-format msgid "Failed to remove %(imgdir)s: %(ex)s" msgstr "" #: nova/virt/disk/vfs/localfs.py:137 #, python-format msgid "Set permissions path=%(path)s mode=%(mode)o" msgstr "" #: nova/virt/disk/vfs/localfs.py:143 #, python-format msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s" msgstr "" #: nova/virt/hyperv/basevolumeutils.py:71 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" #: nova/virt/hyperv/driver.py:165 msgid "VIF plugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:170 msgid "VIF unplugging is not supported by the Hyper-V driver." msgstr "" #: nova/virt/hyperv/driver.py:174 msgid "ensure_filtering_rules_for_instance called" msgstr "" #: nova/virt/hyperv/driver.py:178 msgid "unfilter_instance called" msgstr "" #: nova/virt/hyperv/hostops.py:92 #, python-format msgid "Windows version: %s " msgstr "" #: nova/virt/hyperv/hostops.py:104 msgid "get_available_resource called" msgstr "" #: nova/virt/hyperv/hostops.py:138 nova/virt/libvirt/driver.py:5223 #: nova/virt/xenapi/host.py:240 msgid "Updating host stats" msgstr "" #: nova/virt/hyperv/hostops.py:164 msgid "get_host_stats called" msgstr "" #: nova/virt/hyperv/hostops.py:179 #, python-format msgid "Host IP address is: %s" msgstr "" #: nova/virt/hyperv/imagecache.py:65 #, python-format msgid "" "Cannot resize the image to a size smaller than the VHD max. internal " "size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/imagecache.py:80 #, python-format msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s" msgstr "" #: nova/virt/hyperv/imagecache.py:85 #, python-format msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:39 msgid "Live migration is supported starting with Hyper-V Server 2012" msgstr "" #: nova/virt/hyperv/livemigrationops.py:62 msgid "live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:72 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:76 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" #: nova/virt/hyperv/livemigrationops.py:83 msgid "pre_live_migration called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:97 msgid "post_live_migration_at_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:105 msgid "check_can_live_migrate_destination called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:111 msgid "check_can_live_migrate_destination_cleanup called" msgstr "" #: nova/virt/hyperv/livemigrationops.py:116 msgid "check_can_live_migrate_source called" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:43 #, python-format msgid "Live migration is not supported on target host \"%s\"" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:46 #, python-format msgid "Target live migration host \"%s\" is unreachable" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:49 #, python-format msgid "Live migration failed: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:61 msgid "Live migration is not enabled on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:64 msgid "Live migration networks are not configured on this host" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:144 #, python-format msgid "VM not found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:153 #, python-format msgid "Duplicate VM name found: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:77 #, python-format msgid "Destroying existing remote planned VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:99 #, python-format msgid "Creating remote planned VM for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:156 #, python-format msgid "" "Replacing host resource %(old_disk_path)s with %(new_disk_path)s on " "planned VM %(vm_name)s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:165 #, python-format msgid "Updating remote planned VM disk paths for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:201 #, python-format msgid "Starting live migration for VM: %s" msgstr "" #: nova/virt/hyperv/livemigrationutils.py:210 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:50 msgid "Migration target is the source host" msgstr "" #: nova/virt/hyperv/migrationops.py:52 #, python-format msgid "Migration target host: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:73 #, python-format msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\"" msgstr "" #: nova/virt/hyperv/migrationops.py:97 msgid "Cannot cleanup migration files" msgstr "" #: nova/virt/hyperv/migrationops.py:105 #, python-format msgid "" "Cannot resize the root disk to a smaller size. Current size: " "%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB" msgstr "" #: nova/virt/hyperv/migrationops.py:113 msgid "migrate_disk_and_power_off called" msgstr "" #: nova/virt/hyperv/migrationops.py:133 msgid "confirm_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:148 msgid "finish_revert_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:170 #, python-format msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:176 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:184 #, python-format msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:200 msgid "Cannot resize a VHD to a smaller size" msgstr "" #: nova/virt/hyperv/migrationops.py:207 #, python-format msgid "Getting parent disk info for disk: %s" msgstr "" #: nova/virt/hyperv/migrationops.py:213 #, python-format msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s" msgstr "" #: nova/virt/hyperv/migrationops.py:225 #, python-format msgid "" "Reconnecting copied base VHD %(base_vhd_path)s and diff VHD " "%(diff_vhd_path)s" msgstr "" #: nova/virt/hyperv/migrationops.py:236 msgid "finish_migration called" msgstr "" #: nova/virt/hyperv/migrationops.py:245 #, python-format msgid "Cannot find boot VHD file for instance: %s" msgstr "" #: nova/virt/hyperv/networkutils.py:45 nova/virt/hyperv/networkutilsv2.py:42 #, python-format msgid "vswitch \"%s\" not found" msgstr "" #: nova/virt/hyperv/networkutils.py:58 #, python-format msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s" msgstr "" #: nova/virt/hyperv/networkutilsv2.py:55 msgid "No external vswitch found" msgstr "" #: nova/virt/hyperv/pathutils.py:71 #, python-format msgid "The file copy from %(src)s to %(dest)s failed" msgstr "" #: nova/virt/hyperv/pathutils.py:93 #, python-format msgid "Creating directory: %s" msgstr "" #: nova/virt/hyperv/pathutils.py:98 nova/virt/hyperv/snapshotops.py:122 #, python-format msgid "Removing directory: %s" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:31 msgid "get_rdp_console called" msgstr "" #: nova/virt/hyperv/rdpconsoleops.py:36 #, python-format msgid "RDP console: %(host)s:%(port)s, %(vm_id)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:53 #, python-format msgid "Creating snapshot for instance %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:62 #, python-format msgid "Getting info for VHD %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:70 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:81 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:88 #, python-format msgid "" "Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD " "%(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:96 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:103 #, python-format msgid "" "Updating Glance image %(name)s with content from merged disk " "%(image_vhd_path)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:110 #, python-format msgid "Snapshot image %(name)s updated for VM %(instance_name)s" msgstr "" #: nova/virt/hyperv/snapshotops.py:115 #, python-format msgid "Removing snapshot %s" msgstr "" #: nova/virt/hyperv/snapshotops.py:119 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:65 nova/virt/hyperv/vhdutilsv2.py:63 #, python-format msgid "Unsupported disk format: %s" msgstr "" #: nova/virt/hyperv/vhdutils.py:150 #, python-format msgid "The %(vhd_type)s type VHD is not supported" msgstr "" #: nova/virt/hyperv/vhdutils.py:161 #, python-format msgid "Unable to obtain block size from VHD %(vhd_path)s" msgstr "" #: nova/virt/hyperv/vhdutils.py:208 msgid "Unsupported virtual disk format" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:134 msgid "Differencing VHDX images are not supported" msgstr "" #: nova/virt/hyperv/vhdutilsv2.py:157 #, python-format msgid "Unable to obtain internal size from VHDX: %(vhd_path)s. Exception: %(ex)s" msgstr "" #: nova/virt/hyperv/vif.py:72 #, python-format msgid "Creating vswitch port for instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:113 #, python-format msgid "VIF driver not found for network_api_class: %s" msgstr "" #: nova/virt/hyperv/vmops.py:122 msgid "get_info called for instance" msgstr "" #: nova/virt/hyperv/vmops.py:145 #, python-format msgid "" "Creating differencing VHD. Parent: %(base_vhd_path)s, Target: " "%(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:153 #, python-format msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s" msgstr "" #: nova/virt/hyperv/vmops.py:169 #, python-format msgid "" "Cannot resize a VHD to a smaller size, the original size is " "%(base_vhd_size)s, the newer size is %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:176 #, python-format msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s" msgstr "" #: nova/virt/hyperv/vmops.py:206 msgid "Spawning new instance" msgstr "" #: nova/virt/hyperv/vmops.py:268 msgid "Creating nic for instance" msgstr "" #: nova/virt/hyperv/vmops.py:280 nova/virt/vmwareapi/vmops.py:640 #, python-format msgid "Invalid config_drive_format \"%s\"" msgstr "" #: nova/virt/hyperv/vmops.py:283 nova/virt/vmwareapi/vmops.py:644 msgid "Using config drive for instance" msgstr "" #: nova/virt/hyperv/vmops.py:296 nova/virt/libvirt/driver.py:2678 #, python-format msgid "Creating config drive at %(path)s" msgstr "" #: nova/virt/hyperv/vmops.py:304 nova/virt/libvirt/driver.py:2685 #: nova/virt/vmwareapi/vmops.py:669 #, python-format msgid "Creating config drive failed with error: %s" msgstr "" #: nova/virt/hyperv/vmops.py:340 msgid "Got request to destroy instance" msgstr "" #: nova/virt/hyperv/vmops.py:359 #, python-format msgid "Failed to destroy instance: %s" msgstr "" #: nova/virt/hyperv/vmops.py:370 msgid "Pause instance" msgstr "" #: nova/virt/hyperv/vmops.py:376 msgid "Unpause instance" msgstr "" #: nova/virt/hyperv/vmops.py:382 msgid "Suspend instance" msgstr "" #: nova/virt/hyperv/vmops.py:388 msgid "Resume instance" msgstr "" #: nova/virt/hyperv/vmops.py:394 msgid "Power off instance" msgstr "" #: nova/virt/hyperv/vmops.py:400 msgid "Power on instance" msgstr "" #: nova/virt/hyperv/vmops.py:407 #, python-format msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s" msgstr "" #: nova/virt/hyperv/vmops.py:412 #, python-format msgid "Failed to change vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:122 #, python-format msgid "Cannot get VM summary data for: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:213 msgid "" "The Windows account running nova-compute on this Hyper-V host doesn't " "have the required permissions to create or operate the virtual machine." msgstr "" #: nova/virt/hyperv/vmutils.py:223 #, python-format msgid "Creating VM %s" msgstr "" #: nova/virt/hyperv/vmutils.py:228 #, python-format msgid "Setting memory for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:231 #, python-format msgid "Set vCPUs for vm %s" msgstr "" #: nova/virt/hyperv/vmutils.py:392 #, python-format msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s" msgstr "" #: nova/virt/hyperv/vmutils.py:441 #, python-format msgid "Operation failed with return value: %s" msgstr "" #: nova/virt/hyperv/vmutils.py:457 #, python-format msgid "" "WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s" " - %(err_desc)s - Error code: %(err_code)d" msgstr "" #: nova/virt/hyperv/vmutils.py:468 #, python-format msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" #: nova/virt/hyperv/vmutils.py:474 #, python-format msgid "WMI job failed with status %d. No error description available" msgstr "" #: nova/virt/hyperv/vmutils.py:480 #, python-format msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" msgstr "" #: nova/virt/hyperv/vmutils.py:577 msgid "Metrics collection is not supported on this version of Hyper-V" msgstr "" #: nova/virt/hyperv/vmutilsv2.py:244 #, python-format msgid "Metric not found: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:93 #, python-format msgid "" "Already logged in on storage target. No need to login. Portal: " "%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:99 #, python-format msgid "" "Logging in on storage target. Portal: %(target_portal)s, IQN: " "%(target_iqn)s, LUN: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s to %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:146 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" #: nova/virt/hyperv/volumeops.py:161 #, python-format msgid "Logging off storage target %s" msgstr "" #: nova/virt/hyperv/volumeops.py:166 #, python-format msgid "Detach_volume: %(connection_info)s from %(instance_name)s" msgstr "" #: nova/virt/hyperv/volumeops.py:179 #, python-format msgid "Detaching physical disk from instance: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:207 #, python-format msgid "" "Attempt %d to get device_number from get_device_number_for_target failed." " Retrying..." msgstr "" #: nova/virt/hyperv/volumeops.py:215 nova/virt/hyperv/volumeops.py:229 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" #: nova/virt/hyperv/volumeops.py:217 #, python-format msgid "Device number: %(device_number)s, target lun: %(target_lun)s" msgstr "" #: nova/virt/hyperv/volumeutils.py:42 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" #: nova/virt/imagehandler/__init__.py:94 #, python-format msgid "Duplicated handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:98 #, python-format msgid "Invalid handler extension name in 'image_handlers' option: %s, skip." msgstr "" #: nova/virt/imagehandler/__init__.py:112 #, python-format msgid "Failed to import image handler extension %(name)s: %(err)s" msgstr "" #: nova/virt/imagehandler/__init__.py:174 #, python-format msgid "Can not handle image: %(image_id)s %(target_path)s" msgstr "" #: nova/virt/libvirt/blockinfo.py:145 #, python-format msgid "Unable to determine disk prefix for %s" msgstr "" #: nova/virt/libvirt/blockinfo.py:193 #, python-format msgid "No free disk device names for prefix '%s'" msgstr "" #: nova/virt/libvirt/blockinfo.py:294 #, python-format msgid "Unable to determine disk bus for '%s'" msgstr "" #: nova/virt/libvirt/config.py:71 #, python-format msgid "Generated XML %s " msgstr "" #: nova/virt/libvirt/driver.py:403 #, python-format msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s." msgstr "" #: nova/virt/libvirt/driver.py:576 #, python-format msgid "Connection to libvirt lost: %s" msgstr "" #: nova/virt/libvirt/driver.py:620 msgid "Starting native event thread" msgstr "" #: nova/virt/libvirt/driver.py:625 msgid "Starting green dispatch thread" msgstr "" #: nova/virt/libvirt/driver.py:640 #, python-format msgid "" "The libvirt driver is not tested on %(type)s/%(arch)s by the OpenStack " "project and thus its quality can not be ensured. For more information, " "see: https://wiki.openstack.org/wiki/HypervisorSupportMatrix" msgstr "" #: nova/virt/libvirt/driver.py:656 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" #: nova/virt/libvirt/driver.py:664 #, python-format msgid "Connecting to libvirt: %s" msgstr "" #: nova/virt/libvirt/driver.py:680 #, python-format msgid "Registering for lifecycle events %s" msgstr "" #: nova/virt/libvirt/driver.py:687 #, python-format msgid "URI %(uri)s does not support events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:691 #, python-format msgid "Registering for connection events: %s" msgstr "" #: nova/virt/libvirt/driver.py:701 #, python-format msgid "" "The version of python-libvirt does not support registerCloseCallback or " "is too old: %s" msgstr "" #: nova/virt/libvirt/driver.py:704 #, python-format msgid "URI %(uri)s does not support connection events: %(error)s" msgstr "" #: nova/virt/libvirt/driver.py:735 msgid "Connection to libvirt broke" msgstr "" #: nova/virt/libvirt/driver.py:757 nova/virt/libvirt/driver.py:760 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" #: nova/virt/libvirt/driver.py:783 #, python-format msgid "Connection to libvirt failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:896 msgid "Cannot destroy instance, operation time out" msgstr "" #: nova/virt/libvirt/driver.py:898 msgid "operation time out" msgstr "" #: nova/virt/libvirt/driver.py:903 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:919 msgid "During wait destroy, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:924 msgid "Instance destroyed successfully." msgstr "" #: nova/virt/libvirt/driver.py:934 msgid "Instance may be started again." msgstr "" #: nova/virt/libvirt/driver.py:944 msgid "Going to destroy instance again." msgstr "" #: nova/virt/libvirt/driver.py:964 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" #: nova/virt/libvirt/driver.py:980 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1000 msgid "Instance may be still running, destroy it again." msgstr "" #: nova/virt/libvirt/driver.py:1006 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:1055 #, python-format msgid "Ignoring Volume Error on vol %(vol_id)s during delete %(exc)s" msgstr "" #: nova/virt/libvirt/driver.py:1105 #, python-format msgid "Volume %(disk)s possibly unsafe to remove, please clean up manually" msgstr "" #: nova/virt/libvirt/driver.py:1137 msgid "Could not determine fibre channel world wide node names" msgstr "" #: nova/virt/libvirt/driver.py:1144 msgid "Could not determine fibre channel world wide port names" msgstr "" #: nova/virt/libvirt/driver.py:1208 #, python-format msgid "" "Volume sets block size, but the current libvirt hypervisor '%s' does not " "support custom block size" msgstr "" #: nova/virt/libvirt/driver.py:1215 #, python-format msgid "Volume sets block size, but libvirt '%s' or later is required." msgstr "" #: nova/virt/libvirt/driver.py:1313 msgid "Swap only supports host devices" msgstr "" #: nova/virt/libvirt/driver.py:1381 msgid "During detach_volume, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1405 msgid "attaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1426 msgid "During detach_interface, instance disappeared." msgstr "" #: nova/virt/libvirt/driver.py:1430 msgid "detaching network adapter failed." msgstr "" #: nova/virt/libvirt/driver.py:1538 msgid "Beginning live snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1541 msgid "Beginning cold snapshot process" msgstr "" #: nova/virt/libvirt/driver.py:1570 msgid "Snapshot extracted, beginning image upload" msgstr "" #: nova/virt/libvirt/driver.py:1582 msgid "Snapshot image upload complete" msgstr "" #: nova/virt/libvirt/driver.py:1599 msgid "libvirt error while requesting blockjob info." msgstr "" #: nova/virt/libvirt/driver.py:1683 msgid "Failed to send updated snapshot status to volume service." msgstr "" #: nova/virt/libvirt/driver.py:1733 msgid "Found no disk to snapshot." msgstr "" #: nova/virt/libvirt/driver.py:1756 #, python-format msgid "snap xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:1770 msgid "" "Unable to create quiesced VM snapshot, attempting again with quiescing " "disabled." msgstr "" #: nova/virt/libvirt/driver.py:1777 msgid "Unable to create VM snapshot, failing volume_snapshot operation." msgstr "" #: nova/virt/libvirt/driver.py:1797 #, python-format msgid "volume_snapshot_create: create_info: %(c_info)s" msgstr "" #: nova/virt/libvirt/driver.py:1806 #, python-format msgid "Unknown type: %s" msgstr "" #: nova/virt/libvirt/driver.py:1811 msgid "snapshot_id required in create_info" msgstr "" #: nova/virt/libvirt/driver.py:1820 msgid "" "Error occurred during volume_snapshot_create, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1858 #, python-format msgid "Libvirt '%s' or later is required for online deletion of volume snapshots." msgstr "" #: nova/virt/libvirt/driver.py:1862 #, python-format msgid "volume_snapshot_delete: delete_info: %s" msgstr "" #: nova/virt/libvirt/driver.py:1865 #, python-format msgid "Unknown delete_info type %s" msgstr "" #: nova/virt/libvirt/driver.py:1895 #, python-format msgid "Unable to locate disk matching id: %s" msgstr "" #: nova/virt/libvirt/driver.py:1898 #, python-format msgid "found dev, it's %(dev)s, with active disk: %(disk)s" msgstr "" #: nova/virt/libvirt/driver.py:1911 #, python-format msgid "disk: %(disk)s, base: %(base)s, bw: %(bw)s, flags: %(flags)s" msgstr "" #: nova/virt/libvirt/driver.py:1922 msgid "blockRebase started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1926 msgid "waiting for blockRebase job completion" msgstr "" #: nova/virt/libvirt/driver.py:1942 msgid "blockCommit started successfully" msgstr "" #: nova/virt/libvirt/driver.py:1946 msgid "waiting for blockCommit job completion" msgstr "" #: nova/virt/libvirt/driver.py:1956 msgid "" "Error occurred during volume_snapshot_delete, sending error status to " "Cinder." msgstr "" #: nova/virt/libvirt/driver.py:1972 #, python-format msgid "Instance soft reboot failed: %s" msgstr "" #: nova/virt/libvirt/driver.py:1976 msgid "Instance soft rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:1980 msgid "Failed to soft reboot instance. Trying hard reboot." msgstr "" #: nova/virt/libvirt/driver.py:2021 msgid "Instance shutdown successfully." msgstr "" #: nova/virt/libvirt/driver.py:2029 msgid "Instance may have been rebooted during soft reboot, so return now." msgstr "" #: nova/virt/libvirt/driver.py:2099 msgid "Instance rebooted successfully." msgstr "" #: nova/virt/libvirt/driver.py:2252 msgid "Instance is running" msgstr "" #: nova/virt/libvirt/driver.py:2259 msgid "Instance spawned successfully." msgstr "" #: nova/virt/libvirt/driver.py:2275 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" #: nova/virt/libvirt/driver.py:2313 nova/virt/libvirt/driver.py:2339 #, python-format msgid "Truncated console log returned, %d bytes ignored" msgstr "" #: nova/virt/libvirt/driver.py:2328 nova/virt/xenapi/vmops.py:1555 msgid "Guest does not have a console available" msgstr "" #: nova/virt/libvirt/driver.py:2390 msgid "This python runtime does not support direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2404 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" #: nova/virt/libvirt/driver.py:2408 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2413 nova/virt/libvirt/driver.py:2418 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" #: nova/virt/libvirt/driver.py:2534 #, python-format msgid "Error injecting data into image %(img_id)s (%(e)s)" msgstr "" #: nova/virt/libvirt/driver.py:2560 msgid "Creating image" msgstr "" #: nova/virt/libvirt/driver.py:2669 msgid "Using config drive" msgstr "" #: nova/virt/libvirt/driver.py:2692 msgid "File injection into a boot from volume instance is not supported" msgstr "" #: nova/virt/libvirt/driver.py:2738 #, python-format msgid "Detaching PCI devices with libvirt < %(ver)s is not permitted" msgstr "" #: nova/virt/libvirt/driver.py:2767 msgid "Instance disappeared while detaching a PCI device from it." msgstr "" #: nova/virt/libvirt/driver.py:2778 #, python-format msgid "Attaching PCI devices %(dev)s to %(dom)s failed." msgstr "" #: nova/virt/libvirt/driver.py:2815 #, python-format msgid "Updating compute service status to %s" msgstr "" #: nova/virt/libvirt/driver.py:2818 #, python-format msgid "Not overriding manual compute service status with: %s" msgstr "" #: nova/virt/libvirt/driver.py:2822 #, python-format msgid "Cannot update service status on host: %s,since it is not registered." msgstr "" #: nova/virt/libvirt/driver.py:2825 #, python-format msgid "Cannot update service status on host: %s,due to an unexpected exception." msgstr "" #: nova/virt/libvirt/driver.py:2897 #, 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:2903 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" #: nova/virt/libvirt/driver.py:2907 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" #: nova/virt/libvirt/driver.py:2911 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" #: nova/virt/libvirt/driver.py:2927 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" #: nova/virt/libvirt/driver.py:3203 msgid "Configuring timezone for windows instance to localtime" msgstr "" #: nova/virt/libvirt/driver.py:3353 msgid "Qemu guest agent is enabled through image metadata" msgstr "" #: nova/virt/libvirt/driver.py:3419 #, python-format msgid "" "Start to_xml network_info=%(network_info)s disk_info=%(disk_info)s " "image_meta=%(image_meta)s " "rescue=%(rescue)sblock_device_info=%(block_device_info)s" msgstr "" #: nova/virt/libvirt/driver.py:3437 #, python-format msgid "End to_xml xml=%(xml)s" msgstr "" #: nova/virt/libvirt/driver.py:3455 #, python-format msgid "" "Error from libvirt while looking up %(instance_id)s: [Error Code " "%(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3476 #, 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:3534 #, python-format msgid "An error occurred while trying to define a domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3543 #, python-format msgid "An error occurred while trying to launch a defined domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3552 #, python-format msgid "An error occurred while enabling hairpin mode on domain with xml: %s" msgstr "" #: nova/virt/libvirt/driver.py:3570 #, python-format msgid "Neutron Reported failure on event %(event)s for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3648 #, python-format msgid "Timeout waiting for vif plugging callback for instance %(uuid)s" msgstr "" #: nova/virt/libvirt/driver.py:3666 nova/virt/libvirt/driver.py:3809 #: nova/virt/libvirt/driver.py:3835 #, python-format msgid "libvirt can't find a domain with id: %s" msgstr "" #: nova/virt/libvirt/driver.py:3738 msgid "" "Cannot get the number of cpu, because this function is not implemented " "for this platform. " msgstr "" #: nova/virt/libvirt/driver.py:3748 msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range." msgstr "" #: nova/virt/libvirt/driver.py:3801 #, python-format msgid "couldn't obtain the vpu count from domain id: %(id)s, exception: %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:3876 msgid "libvirt version is too old (does not support getVersion)" msgstr "" #: nova/virt/libvirt/driver.py:3890 nova/virt/xenapi/host.py:263 #, python-format msgid "" "Hostname has changed from %(old)s to %(new)s. A restart is required to " "take effect." msgstr "" #: nova/virt/libvirt/driver.py:4051 #, python-format msgid "Trying to get stats for the volume %s" msgstr "" #: nova/virt/libvirt/driver.py:4064 #, python-format msgid "" "Got volume usage stats for the volume=%(volume)s, rd_req=%(rd_req)d, " "rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, wr_bytes=%(wr_bytes)d" msgstr "" #: nova/virt/libvirt/driver.py:4079 #, python-format msgid "" "Getting block stats failed, device might have been detached. " "Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s" msgstr "" #: nova/virt/libvirt/driver.py:4085 #, python-format msgid "" "Could not find domain in libvirt for instance %s. Cannot get block stats " "for device" msgstr "" #: nova/virt/libvirt/driver.py:4137 #, python-format msgid "" "Creating tmpfile %s to verify with other compute node that the instance " "is on the same shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4221 msgid "Block migration can not be used with shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4229 msgid "Live migration can not be used without shared storage." msgstr "" #: nova/virt/libvirt/driver.py:4273 #, 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:4300 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" #: nova/virt/libvirt/driver.py:4312 #, python-format msgid "" "CPU doesn't have compatibility.\n" "\n" "%(ret)s\n" "\n" "Refer to %(u)s" msgstr "" #: nova/virt/libvirt/driver.py:4329 #, 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:4379 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" #: nova/virt/libvirt/driver.py:4451 #, python-format msgid "Live Migration failure: %s" msgstr "" #: nova/virt/libvirt/driver.py:4564 #, python-format msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d." msgstr "" #: nova/virt/libvirt/driver.py:4697 #, python-format msgid "" "Error from libvirt while getting description of %(instance_name)s: [Error" " Code %(error_code)s] %(ex)s" msgstr "" #: nova/virt/libvirt/driver.py:4727 #, python-format msgid "skipping disk for %s as it does not have a path" msgstr "" #: nova/virt/libvirt/driver.py:4732 #, python-format msgid "skipping %s since it looks like volume" msgstr "" #: nova/virt/libvirt/driver.py:4736 #, python-format msgid "skipping disk %(path)s (%(target)s) as it is a volume" msgstr "" #: nova/virt/libvirt/driver.py:4776 #, python-format msgid "" "Periodic task is updating the host stat, it is trying to get disk " "%(i_name)s, but disk file was removed by concurrent operations such as " "resize." msgstr "" #: nova/virt/libvirt/driver.py:4858 msgid "Starting migrate_disk_and_power_off" msgstr "" #: nova/virt/libvirt/driver.py:4864 msgid "Unable to resize disk down." msgstr "" #: nova/virt/libvirt/driver.py:4935 msgid "Instance running successfully." msgstr "" #: nova/virt/libvirt/driver.py:4941 msgid "Starting finish_migration" msgstr "" #: nova/virt/libvirt/driver.py:5011 msgid "Starting finish_revert_migration" msgstr "" #: nova/virt/libvirt/driver.py:5119 #, python-format msgid "Checking instance files accessibility %s" msgstr "" #: nova/virt/libvirt/driver.py:5143 #, python-format msgid "Deleting instance files %s" msgstr "" #: nova/virt/libvirt/driver.py:5148 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" #: nova/virt/libvirt/driver.py:5155 #, python-format msgid "Deletion of %s failed" msgstr "" #: nova/virt/libvirt/driver.py:5158 #, python-format msgid "Deletion of %s complete" msgstr "" #: nova/virt/libvirt/firewall.py:48 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" #: nova/virt/libvirt/firewall.py:104 msgid "Called setup_basic_filtering in nwfilter" msgstr "" #: nova/virt/libvirt/firewall.py:112 msgid "Ensuring static filters" msgstr "" #: nova/virt/libvirt/firewall.py:254 #, python-format msgid "The nwfilter(%s) is not found." msgstr "" #: nova/virt/libvirt/firewall.py:272 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" #: nova/virt/libvirt/firewall.py:290 msgid "iptables firewall: Setup Basic Filtering" msgstr "" #: nova/virt/libvirt/imagebackend.py:205 #, python-format msgid "Unable to preallocate_images=%(imgs)s at path: %(path)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:233 #, python-format msgid "" "%(base)s virtual size %(base_size)s larger than flavor root disk size " "%(size)s" msgstr "" #: nova/virt/libvirt/imagebackend.py:364 msgid "You should specify images_volume_group flag to use LVM images." msgstr "" #: nova/virt/libvirt/imagebackend.py:436 #, python-format msgid "error opening rbd image %s" msgstr "" #: nova/virt/libvirt/imagebackend.py:479 msgid "You should specify images_rbd_pool flag to use rbd images." msgstr "" #: nova/virt/libvirt/imagebackend.py:593 msgid "rbd python libraries not found" msgstr "" #: nova/virt/libvirt/imagebackend.py:632 #, python-format msgid "Unknown image_type=%s" msgstr "" #: nova/virt/libvirt/imagecache.py:133 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:172 #, python-format msgid "Reading image info file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:194 #, python-format msgid "Writing stored info to %s" msgstr "" #: nova/virt/libvirt/imagecache.py:292 #, python-format msgid "%s is a valid instance name" msgstr "" #: nova/virt/libvirt/imagecache.py:295 #, python-format msgid "%s has a disk file" msgstr "" #: nova/virt/libvirt/imagecache.py:302 #, python-format msgid "Failed to get disk backing file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:307 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" #: nova/virt/libvirt/imagecache.py:321 #, 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:394 #, python-format msgid "image %(id)s at (%(base_file)s): image verification failed" msgstr "" #: nova/virt/libvirt/imagecache.py:404 #, python-format msgid "" "image %(id)s at (%(base_file)s): image verification skipped, no hash " "stored" msgstr "" #: nova/virt/libvirt/imagecache.py:413 #, python-format msgid "%(id)s (%(base_file)s): generating checksum" msgstr "" #: nova/virt/libvirt/imagecache.py:428 #, python-format msgid "Cannot remove %s, it does not exist" msgstr "" #: nova/virt/libvirt/imagecache.py:440 #, python-format msgid "Base file too young to remove: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:443 #, python-format msgid "Removing base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:450 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" #: nova/virt/libvirt/imagecache.py:461 #, python-format msgid "image %(id)s at (%(base_file)s): checking" msgstr "" #: nova/virt/libvirt/imagecache.py:485 #, python-format msgid "" "image %(id)s at (%(base_file)s): in use: on this node %(local)d local, " "%(remote)d on other nodes sharing this instance storage" msgstr "" #: nova/virt/libvirt/imagecache.py:497 #, python-format msgid "" "image %(id)s at (%(base_file)s): warning -- an absent base file is in " "use! instances: %(instance_list)s" msgstr "" #: nova/virt/libvirt/imagecache.py:509 #, python-format msgid "image %(id)s at (%(base_file)s): image is not in use" msgstr "" #: nova/virt/libvirt/imagecache.py:516 #, python-format msgid "image %(id)s at (%(base_file)s): image is in use" msgstr "" #: nova/virt/libvirt/imagecache.py:525 msgid "Verify base images" msgstr "" #: nova/virt/libvirt/imagecache.py:529 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" #: nova/virt/libvirt/imagecache.py:547 #, python-format msgid "Unknown base file: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:552 #, python-format msgid "Active base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:555 #, python-format msgid "Corrupt base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:559 #, python-format msgid "Removable base files: %s" msgstr "" #: nova/virt/libvirt/imagecache.py:567 msgid "Verification complete" msgstr "" #: nova/virt/libvirt/imagecache.py:584 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" #: nova/virt/libvirt/utils.py:71 nova/virt/libvirt/utils.py:77 msgid "systool is not installed" msgstr "" #: nova/virt/libvirt/utils.py:81 msgid "Cannot find any Fibre Channel HBAs" msgstr "" #: nova/virt/libvirt/utils.py:223 #, 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:236 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " "Virtual volume size is %(size)db, but free space on volume group is only " "%(free_space)db." msgstr "" #: nova/virt/libvirt/utils.py:290 #, python-format msgid "rbd remove %(name)s in pool %(pool)s failed" msgstr "" #: nova/virt/libvirt/utils.py:311 #, python-format msgid "vg %s must be LVM volume group" msgstr "" #: nova/virt/libvirt/utils.py:340 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" #: nova/virt/libvirt/utils.py:394 #, python-format msgid "ignoring unrecognized volume_clear='%s' value" msgstr "" #: nova/virt/libvirt/utils.py:415 #, python-format msgid "volume_clear='%s' is not handled" msgstr "" #: nova/virt/libvirt/utils.py:615 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" #: nova/virt/libvirt/utils.py:714 msgid "findmnt tool is not installed" msgstr "" #: nova/virt/libvirt/vif.py:334 nova/virt/libvirt/vif.py:590 #: nova/virt/libvirt/vif.py:772 #, python-format msgid "vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s" msgstr "" #: nova/virt/libvirt/vif.py:341 nova/virt/libvirt/vif.py:597 #: nova/virt/libvirt/vif.py:779 msgid "vif_type parameter must be present for this vif_driver implementation" msgstr "" #: nova/virt/libvirt/vif.py:385 nova/virt/libvirt/vif.py:617 #: nova/virt/libvirt/vif.py:799 #, python-format msgid "Unexpected vif_type=%s" msgstr "" #: nova/virt/libvirt/vif.py:397 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" #: nova/virt/libvirt/vif.py:408 #, python-format msgid "Ensuring bridge %s" msgstr "" #: nova/virt/libvirt/vif.py:537 nova/virt/libvirt/vif.py:561 #: nova/virt/libvirt/vif.py:585 msgid "Failed while plugging vif" msgstr "" #: nova/virt/libvirt/vif.py:633 nova/virt/libvirt/vif.py:664 #: nova/virt/libvirt/vif.py:682 nova/virt/libvirt/vif.py:703 #: nova/virt/libvirt/vif.py:722 nova/virt/libvirt/vif.py:746 #: nova/virt/libvirt/vif.py:767 msgid "Failed while unplugging vif" msgstr "" #: nova/virt/libvirt/volume.py:145 #, python-format msgid "Unknown content in connection_info/qos_specs: %s" msgstr "" #: nova/virt/libvirt/volume.py:154 #, python-format msgid "Unknown content in connection_info/access_mode: %s" msgstr "" #: nova/virt/libvirt/volume.py:247 nova/virt/libvirt/volume.py:580 #, python-format msgid "iscsiadm %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:304 #, python-format msgid "iSCSI device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:307 #, python-format msgid "" "ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try " "number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:320 #, python-format msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:375 #, python-format msgid "Unable to delete volume device %s" msgstr "" #: nova/virt/libvirt/volume.py:386 #, python-format msgid "" "Failed to remove multipath device descriptor %(dev_mapper)s. Exception " "message: %(msg)s" msgstr "" #: nova/virt/libvirt/volume.py:590 #, python-format msgid "multipath %(command)s: stdout=%(out)s stderr=%(err)s" msgstr "" #: nova/virt/libvirt/volume.py:678 #, python-format msgid "The NFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:680 #, python-format msgid "Couldn't unmount the NFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:708 nova/virt/libvirt/volume.py:858 #, python-format msgid "%s is already mounted" msgstr "" #: nova/virt/libvirt/volume.py:751 #, python-format msgid "AoE device not found at %s" msgstr "" #: nova/virt/libvirt/volume.py:753 #, python-format msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:768 #, python-format msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)" msgstr "" #: nova/virt/libvirt/volume.py:828 #, python-format msgid "The GlusterFS share %s is still in use." msgstr "" #: nova/virt/libvirt/volume.py:830 #, python-format msgid "Couldn't unmount the GlusterFS share %s" msgstr "" #: nova/virt/libvirt/volume.py:924 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: nova/virt/libvirt/volume.py:933 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:943 msgid "Fibre Channel device not found." msgstr "" #: nova/virt/libvirt/volume.py:946 #, python-format msgid "" "Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" #: nova/virt/libvirt/volume.py:963 #, python-format msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)" msgstr "" #: nova/virt/libvirt/volume.py:972 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: nova/virt/libvirt/volume.py:1005 #, python-format msgid "devices to remove = %s" msgstr "" #: nova/virt/libvirt/volume.py:1049 msgid "Value required for 'scality_sofs_config'" msgstr "" #: nova/virt/libvirt/volume.py:1060 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: nova/virt/libvirt/volume.py:1066 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: nova/virt/libvirt/volume.py:1081 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: nova/virt/vmwareapi/driver.py:100 msgid "" "The VMware ESX driver is now deprecated and will be removed in the Juno " "release. The VC driver will remain and continue to be supported." msgstr "" #: nova/virt/vmwareapi/driver.py:112 msgid "" "Must specify host_ip, host_username and host_password to use " "compute_driver=vmwareapi.VMwareESXDriver or vmwareapi.VMwareVCDriver" msgstr "" #: nova/virt/vmwareapi/driver.py:124 #, python-format msgid "Invalid Regular Expression %s" msgstr "" #: nova/virt/vmwareapi/driver.py:160 msgid "No vSphere session was open during cleanup_host." msgstr "" #: nova/virt/vmwareapi/driver.py:233 msgid "Instance cannot be found in host, or in an unknownstate." msgstr "" #: nova/virt/vmwareapi/driver.py:389 #, python-format msgid "All clusters specified %s were not found in the vCenter" msgstr "" #: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "The following clusters could not be found in the vCenter %s" msgstr "" #: nova/virt/vmwareapi/driver.py:535 #, python-format msgid "The resource %s does not exist" msgstr "" #: nova/virt/vmwareapi/driver.py:581 #, python-format msgid "Invalid cluster or resource pool name : %s" msgstr "" #: nova/virt/vmwareapi/driver.py:603 #, python-format msgid "The available nodes are: %s" msgstr "" #: nova/virt/vmwareapi/driver.py:818 #, python-format msgid "" "Unable to connect to server at %(server)s, sleeping for %(seconds)s " "seconds" msgstr "" #: nova/virt/vmwareapi/driver.py:838 #, python-format msgid "Unable to validate session %s!" msgstr "" #: nova/virt/vmwareapi/driver.py:840 #, python-format msgid "Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/driver.py:879 #, python-format msgid "Session %s is inactive!" msgstr "" #: nova/virt/vmwareapi/driver.py:905 #, python-format msgid "" "_call_method(session=%(key)s) failed. Module: %(module)s. Method: " "%(method)s. args: %(args)s. kwargs: %(kwargs)s. Iteration: %(n)s. " "Exception: %(ex)s. " msgstr "" #: nova/virt/vmwareapi/driver.py:926 #, python-format msgid "In vmwareapi: _call_method (session=%s)" msgstr "" #: nova/virt/vmwareapi/driver.py:966 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" #: nova/virt/vmwareapi/driver.py:972 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" #: nova/virt/vmwareapi/driver.py:982 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:48 #, python-format msgid "Deleting the datastore file %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:57 msgid "Deleted the datastore file" msgstr "" #: nova/virt/vmwareapi/ds_util.py:82 #, python-format msgid "Moving file from %(src)s to %(dst)s." msgstr "" #: nova/virt/vmwareapi/ds_util.py:94 msgid "File moved" msgstr "" #: nova/virt/vmwareapi/ds_util.py:121 #, python-format msgid "Creating directory with path %s" msgstr "" #: nova/virt/vmwareapi/ds_util.py:126 #, python-format msgid "Created directory with path %s" msgstr "" #: nova/virt/vmwareapi/error_util.py:113 #, python-format msgid "Error(s) %s occurred in the call to RetrievePropertiesEx" msgstr "" #: nova/virt/vmwareapi/error_util.py:127 msgid "VMware Driver fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:133 msgid "VMware Driver configuration fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:137 msgid "No default value for use_linked_clone found." msgstr "" #: nova/virt/vmwareapi/error_util.py:141 msgid "Resource already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:146 msgid "Cannot delete file." msgstr "" #: nova/virt/vmwareapi/error_util.py:151 msgid "File already exists." msgstr "" #: nova/virt/vmwareapi/error_util.py:156 msgid "File fault." msgstr "" #: nova/virt/vmwareapi/error_util.py:161 msgid "File locked." msgstr "" #: nova/virt/vmwareapi/error_util.py:166 msgid "File not found." msgstr "" #: nova/virt/vmwareapi/error_util.py:171 msgid "Invalid property." msgstr "" #: nova/virt/vmwareapi/error_util.py:176 msgid "Not Authenticated." msgstr "" #: nova/virt/vmwareapi/error_util.py:199 #, python-format msgid "Fault %s not matched." msgstr "" #: nova/virt/vmwareapi/fake.py:46 nova/virt/xenapi/fake.py:80 #, python-format msgid "%(text)s: _db_content => %(content)s" msgstr "" #: nova/virt/vmwareapi/fake.py:243 #, python-format msgid "Property %(attr)s not set for the managed object %(name)s" msgstr "" #: nova/virt/vmwareapi/fake.py:955 msgid "There is no VM registered" msgstr "" #: nova/virt/vmwareapi/fake.py:957 nova/virt/vmwareapi/fake.py:1228 #, python-format msgid "Virtual Machine with ref %s is not there" msgstr "" #: nova/virt/vmwareapi/fake.py:1027 #, python-format msgid "Logging out a session that is invalid or already logged out: %s" msgstr "" #: nova/virt/vmwareapi/fake.py:1042 msgid "Session is faulty" msgstr "" #: nova/virt/vmwareapi/fake.py:1045 msgid "Session Invalid" msgstr "" #: nova/virt/vmwareapi/fake.py:1225 msgid "No Virtual Machine has been registered yet" msgstr "" #: nova/virt/vmwareapi/host.py:39 #, python-format msgid "%(action)s %(host)s" msgstr "" #: nova/virt/vmwareapi/host.py:62 #, python-format msgid "Set maintenance mod on %(host)s to %(mode)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:74 #, python-format msgid "Unable to delete %(file)s. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:77 #, python-format msgid "File not found: %s" msgstr "" #: nova/virt/vmwareapi/imagecache.py:88 #, python-format msgid "Timestamp path %s exists. Deleting!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:148 msgid "Timestamp already exists." msgstr "" #: nova/virt/vmwareapi/imagecache.py:149 #, python-format msgid "Image %s is no longer used by this node. Pending deletion!" msgstr "" #: nova/virt/vmwareapi/imagecache.py:154 #, python-format msgid "Image %s is no longer used. Deleting!" msgstr "" #: nova/virt/vmwareapi/io_util.py:117 #, python-format msgid "Glance image %s is in killed state" msgstr "" #: nova/virt/vmwareapi/io_util.py:125 #, python-format msgid "Glance image %(image_id)s is in unknown state - %(state)s" msgstr "" #: nova/virt/vmwareapi/network_util.py:50 msgid "No networks configured on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:54 #, python-format msgid "Configured networks: %s" msgstr "" #: nova/virt/vmwareapi/network_util.py:80 #, python-format msgid "Network %s not found on host!" msgstr "" #: nova/virt/vmwareapi/network_util.py:132 msgid "" "ESX SOAP server returned an empty port group for the host system in its " "response" msgstr "" #: nova/virt/vmwareapi/network_util.py:157 #, python-format msgid "Creating Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/network_util.py:169 #, python-format msgid "Port Group %s already exists." msgstr "" #: nova/virt/vmwareapi/network_util.py:170 #, python-format msgid "Created Port Group with name %s on the ESX host" msgstr "" #: nova/virt/vmwareapi/read_write_util.py:145 #, python-format msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s" msgstr "" #: nova/virt/vmwareapi/vif.py:114 #, python-format msgid "" "No valid network found in %(opaque)s, from %(bridge)s or " "%(integration_bridge)s" msgstr "" #: nova/virt/vmwareapi/vim.py:109 msgid "Unable to import suds." msgstr "" #: nova/virt/vmwareapi/vim.py:198 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" #: nova/virt/vmwareapi/vim.py:203 #, python-format msgid "httplib error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:207 #, python-format msgid "urllib2 error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:214 #, python-format msgid "Socket error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:219 #, python-format msgid "Type error in %s: " msgstr "" #: nova/virt/vmwareapi/vim.py:223 #, python-format msgid "Exception in %s " msgstr "" #: nova/virt/vmwareapi/vim_util.py:191 #, python-format msgid "Unable to retrieve value for %(path)s Reason: %(reason)s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1008 msgid "No host available on cluster" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1239 #, python-format msgid "Failed to get cluster references %s" msgstr "" #: nova/virt/vmwareapi/vm_util.py:1251 #, python-format msgid "Failed to get resource pool references %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:117 msgid "Getting list of instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:123 nova/virt/vmwareapi/vmops.py:1749 #, python-format msgid "Got total of %s instances" msgstr "" #: nova/virt/vmwareapi/vmops.py:128 #, python-format msgid "Extending root virtual disk to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:141 #, python-format msgid "Extending virtual disk failed with error: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:148 msgid "Extended root virtual disk" msgstr "" #: nova/virt/vmwareapi/vmops.py:157 #, python-format msgid "" "Unable to delete %(ds)s. There may be more than one process or thread " "that tries to delete the file. Exception: %(ex)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:196 nova/virt/xenapi/vmops.py:332 #, python-format msgid "Block device information present: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:255 msgid "Image disk size greater than requested disk size" msgstr "" #: nova/virt/vmwareapi/vmops.py:296 msgid "Creating VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:304 msgid "Created VM on the ESX host" msgstr "" #: nova/virt/vmwareapi/vmops.py:335 #, 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:354 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:364 #, python-format msgid "" "Downloading image file data %(image_ref)s to the data store " "%(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:378 #, python-format msgid "" "Downloaded image file data %(image_ref)s to %(upload_name)s on the data " "store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:392 #, python-format msgid "" "Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type" " %(adapter_type)s on the ESX host local store %(data_store_name)s to disk" " type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:413 #, python-format msgid "" "Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type " "%(disk_type)s on the ESX host local store %(data_store_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:529 #, python-format msgid "File %s already exists" msgstr "" #: nova/virt/vmwareapi/vmops.py:575 #, python-format msgid "Copying root disk of size %sGb" msgstr "" #: nova/virt/vmwareapi/vmops.py:580 #, python-format msgid "Root disk file creation failed - %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:626 msgid "Powering on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:632 msgid "Powered on the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:692 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:700 #, python-format msgid "Reconfigured VM instance %(instance_name)s to attach cdrom %(file_path)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:757 msgid "Creating Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:766 msgid "Created Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:774 msgid "Deleting Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:780 msgid "Deleted Snapshot of the VM instance" msgstr "" #: nova/virt/vmwareapi/vmops.py:852 #, python-format msgid "Copying snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:866 #, python-format msgid "Copied snapshotted disk %s." msgstr "" #: nova/virt/vmwareapi/vmops.py:878 #, python-format msgid "Uploading image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:893 #, python-format msgid "Uploaded image %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:948 msgid "instance is not powered on" msgstr "" #: nova/virt/vmwareapi/vmops.py:955 msgid "Rebooting guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:958 msgid "Rebooted guest OS of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:960 msgid "Doing hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:964 msgid "Did hard reboot of VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:975 nova/virt/vmwareapi/vmops.py:1302 msgid "Destroying the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:980 nova/virt/vmwareapi/vmops.py:1307 msgid "Destroyed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:982 #, python-format msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1017 nova/virt/vmwareapi/vmops.py:1174 msgid "Powering off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1022 nova/virt/vmwareapi/vmops.py:1179 msgid "Powered off the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1026 msgid "Unregistering the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1029 msgid "Unregistered the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1031 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1040 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1050 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1055 #, 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:1065 msgid "pause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1069 msgid "unpause not supported for vmwareapi" msgstr "" #: nova/virt/vmwareapi/vmops.py:1080 msgid "Suspending the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1084 msgid "Suspended the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1087 msgid "instance is powered off and cannot be suspended." msgstr "" #: nova/virt/vmwareapi/vmops.py:1090 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1100 msgid "Resuming the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1105 msgid "Resumed the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1107 msgid "instance is not in a suspended state" msgstr "" #: nova/virt/vmwareapi/vmops.py:1182 msgid "instance is suspended and cannot be powered off." msgstr "" #: nova/virt/vmwareapi/vmops.py:1185 msgid "VM was already in powered off state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1197 msgid "VM was already in powered on state. So returning without doing anything" msgstr "" #: nova/virt/vmwareapi/vmops.py:1201 msgid "Powering on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1206 msgid "Powered on the VM" msgstr "" #: nova/virt/vmwareapi/vmops.py:1226 #, python-format msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d" msgstr "" #: nova/virt/vmwareapi/vmops.py:1256 #, python-format msgid "Renaming the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1262 #, python-format msgid "Renamed the VM to %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1278 #, python-format msgid "Cloning VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1286 #, python-format msgid "Cloned VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1298 msgid "instance not present" msgstr "" #: nova/virt/vmwareapi/vmops.py:1309 #, python-format msgid "" "In vmwareapi:vmops:confirm_migration, got this exception while destroying" " the VM: %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1322 #, python-format msgid "Renaming the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1328 #, python-format msgid "Renamed the VM from %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1364 #, python-format msgid "Migrating VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1376 #, python-format msgid "Migrated VM to host %s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1386 nova/virt/xenapi/vmops.py:1500 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" #: nova/virt/vmwareapi/vmops.py:1390 nova/virt/xenapi/vmops.py:1504 msgid "Automatically hard rebooting" msgstr "" #: nova/virt/vmwareapi/vmops.py:1476 #, python-format msgid "VM %(uuid)s is currently on host %(host_name)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1519 msgid "Reconfiguring VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1525 msgid "Reconfigured VM instance to set the machine id" msgstr "" #: nova/virt/vmwareapi/vmops.py:1535 #, python-format msgid "Reconfiguring VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1542 #, python-format msgid "Reconfigured VM instance to enable vnc on port - %(port)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1605 #, python-format msgid "Folder %s created." msgstr "" #: nova/virt/vmwareapi/vmops.py:1638 msgid "Image aging disabled. Aging will not be done." msgstr "" #: nova/virt/vmwareapi/vmops.py:1685 #, python-format msgid "" "Will copy while retaining adapter type %(adapter_type)s and disk type " "%(disk_type)s" msgstr "" #: nova/virt/vmwareapi/vmops.py:1737 #, python-format msgid "Getting list of instances from cluster %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:92 #, python-format msgid "Uploading iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:103 #, python-format msgid "Uploading iso of size : %s " msgstr "" #: nova/virt/vmwareapi/vmware_images.py:112 #, python-format msgid "Uploaded iso %s to datastore" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:118 #, python-format msgid "Downloading image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:134 #, python-format msgid "Downloaded image %s from glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:140 #, python-format msgid "Uploading image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:170 #, python-format msgid "Uploaded image %s to the Glance image server" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:180 #, python-format msgid "Getting image size for the image %s" msgstr "" #: nova/virt/vmwareapi/vmware_images.py:185 #, python-format msgid "Got image size of %(size)s for the image %(image)s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:155 #, python-format msgid "Rescanning HBA %s" msgstr "" #: nova/virt/vmwareapi/volume_util.py:158 #, python-format msgid "Rescanned HBA %s " msgstr "" #: nova/virt/vmwareapi/volume_util.py:167 #, python-format msgid "Adding iSCSI host %s to send targets" msgstr "" #: nova/virt/vmwareapi/volumeops.py:65 #, python-format msgid "" "Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:76 #, python-format msgid "" "Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s " "or device %(device_name)s with type %(disk_type)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:121 #, python-format msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:130 #, python-format msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:139 #, python-format msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:145 msgid "Storage target found. No need to discover" msgstr "" #: nova/virt/vmwareapi/volumeops.py:154 #, python-format msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:159 #, python-format msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s." msgstr "" #: nova/virt/vmwareapi/volumeops.py:217 nova/virt/vmwareapi/volumeops.py:251 #: nova/virt/xenapi/volumeops.py:55 #, python-format msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:227 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:239 nova/virt/vmwareapi/volumeops.py:414 msgid "Unable to find iSCSI Target" msgstr "" #: nova/virt/vmwareapi/volumeops.py:259 #, python-format msgid "Volume attach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:330 #, python-format msgid "" "The volume has not been displaced from its original location: %s. No " "consolidation needed." msgstr "" #: nova/virt/vmwareapi/volumeops.py:337 #, python-format msgid "" "The volume's backing has been relocated to %s. Need to consolidate " "backing disk file." msgstr "" #: nova/virt/vmwareapi/volumeops.py:375 nova/virt/vmwareapi/volumeops.py:422 msgid "Unable to find volume" msgstr "" #: nova/virt/vmwareapi/volumeops.py:383 nova/virt/vmwareapi/volumeops.py:405 #: nova/virt/xenapi/volumeops.py:127 #, python-format msgid "Detach_volume: %(instance_name)s, %(mountpoint)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:395 nova/virt/vmwareapi/volumeops.py:424 #: nova/virt/xenapi/volumeops.py:146 #, python-format msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:432 #, python-format msgid "Volume detach. Driver type: %s" msgstr "" #: nova/virt/vmwareapi/volumeops.py:445 #, python-format msgid "Root volume attach. Driver type: %s" msgstr "" #: nova/virt/xenapi/agent.py:125 nova/virt/xenapi/vmops.py:1771 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:130 nova/virt/xenapi/vmops.py:1776 #, 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:135 nova/virt/xenapi/vmops.py:1781 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:145 #, python-format msgid "" "The agent call to %(method)s returned an invalid response: %(ret)r. " "args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:152 #, python-format msgid "The agent call to %(method)s returned an an error: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:158 #, python-format msgid "The agent call to %(method)s was successful: %(ret)r. args=%(args)r" msgstr "" #: nova/virt/xenapi/agent.py:184 #, python-format msgid "Ignoring error while configuring instance with agent: %s" msgstr "" #: nova/virt/xenapi/agent.py:207 msgid "Querying agent version" msgstr "" #: nova/virt/xenapi/agent.py:231 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" #: nova/virt/xenapi/agent.py:234 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" #: nova/virt/xenapi/agent.py:245 #, python-format msgid "Updating agent to %s" msgstr "" #: nova/virt/xenapi/agent.py:249 msgid "Skipping agent update." msgstr "" #: nova/virt/xenapi/agent.py:257 #, python-format msgid "Unable to update the agent due to: %(exc)s" msgstr "" #: nova/virt/xenapi/agent.py:290 msgid "Setting admin password" msgstr "" #: nova/virt/xenapi/agent.py:312 msgid "Skipping setting of ssh key for Windows." msgstr "" #: nova/virt/xenapi/agent.py:317 msgid "Skipping agent ssh key injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:334 msgid "Skipping agent file injection for this image." msgstr "" #: nova/virt/xenapi/agent.py:341 #, python-format msgid "Injecting file path: %r" msgstr "" #: nova/virt/xenapi/agent.py:351 msgid "Resetting network" msgstr "" #: nova/virt/xenapi/agent.py:385 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" #: nova/virt/xenapi/agent.py:393 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" #: nova/virt/xenapi/agent.py:397 msgid "XenServer tools are not installed in this image" msgstr "" #: nova/virt/xenapi/agent.py:411 msgid "Invalid 'agent_present' value. Falling back to the default." msgstr "" #: nova/virt/xenapi/agent.py:452 #, python-format msgid "OpenSSL error: %s" msgstr "" #: nova/virt/xenapi/driver.py:151 msgid "" "Must specify connection_url, connection_username (optionally), and " "connection_password to use compute_driver=xenapi.XenAPIDriver" msgstr "" #: nova/virt/xenapi/driver.py:178 msgid "Failure while cleaning up attached VDIs" msgstr "" #: nova/virt/xenapi/driver.py:412 #, python-format msgid "Could not determine key: %s" msgstr "" #: nova/virt/xenapi/driver.py:656 msgid "Host startup on XenServer is not supported." msgstr "" #: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:918 #: nova/virt/xenapi/fake.py:937 nova/virt/xenapi/fake.py:1005 msgid "Raising NotImplemented" msgstr "" #: nova/virt/xenapi/fake.py:812 #, python-format msgid "xenapi.fake does not have an implementation for %s" msgstr "" #: nova/virt/xenapi/fake.py:845 #, python-format msgid "Calling %(name)s %(impl)s" msgstr "" #: nova/virt/xenapi/fake.py:851 #, python-format msgid "Calling getter %s" msgstr "" #: nova/virt/xenapi/fake.py:854 #, python-format msgid "Calling setter %s" msgstr "" #: nova/virt/xenapi/fake.py:920 #, python-format msgid "" "xenapi.fake does not have an implementation for %s or it has been called " "with the wrong number of arguments" msgstr "" #: nova/virt/xenapi/host.py:73 #, python-format msgid "" "Instance %(name)s running on %(host)s could not be found in the database:" " assuming it is a worker VM and skip ping migration to a new host" msgstr "" #: nova/virt/xenapi/host.py:85 #, python-format msgid "Aggregate for host %(host)s count not be found." msgstr "" #: nova/virt/xenapi/host.py:104 #, python-format msgid "Unable to migrate VM %(vm_ref)s from %(host)s" msgstr "" #: nova/virt/xenapi/host.py:191 msgid "Failed to parse information about a pci device for passthrough" msgstr "" #: nova/virt/xenapi/host.py:288 #, python-format msgid "Failed to extract instance support from %s" msgstr "" #: nova/virt/xenapi/host.py:305 msgid "Unable to get updated status" msgstr "" #: nova/virt/xenapi/host.py:308 #, python-format msgid "The call to %(method)s returned an error: %(e)s." msgstr "" #: nova/virt/xenapi/network_utils.py:29 #, python-format msgid "Found non-unique network for name_label %s" msgstr "" #: nova/virt/xenapi/network_utils.py:46 #, python-format msgid "Found non-unique network for bridge %s" msgstr "" #: nova/virt/xenapi/network_utils.py:48 #, python-format msgid "Found no network for bridge %s" msgstr "" #: nova/virt/xenapi/pool.py:67 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" #: nova/virt/xenapi/pool.py:150 #, python-format msgid "Unable to eject %s from the pool; pool not empty" msgstr "" #: nova/virt/xenapi/pool.py:165 #, python-format msgid "Unable to eject %s from the pool; No master found" msgstr "" #: nova/virt/xenapi/pool.py:182 #, python-format msgid "Pool-Join failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:185 #, python-format msgid "Unable to join %s in the pool" msgstr "" #: nova/virt/xenapi/pool.py:201 #, python-format msgid "Pool-eject failed: %s" msgstr "" #: nova/virt/xenapi/pool.py:212 #, python-format msgid "Unable to set up pool: %s." msgstr "" #: nova/virt/xenapi/pool.py:223 #, python-format msgid "Pool-set_name_label failed: %s" msgstr "" #: nova/virt/xenapi/vif.py:103 #, python-format msgid "Found no PIF for device %s" msgstr "" #: nova/virt/xenapi/vif.py:122 #, python-format msgid "" "PIF %(pif_uuid)s for network %(bridge)s has VLAN id %(pif_vlan)d. " "Expected %(vlan_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:234 #, python-format msgid "" "Device id %(id)s specified is not supported by hypervisor version " "%(version)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:334 msgid "Created VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:346 msgid "VM destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:351 nova/virt/xenapi/vm_utils.py:366 msgid "VM already halted, skipping shutdown..." msgstr "" #: nova/virt/xenapi/vm_utils.py:355 msgid "Shutting down VM (cleanly)" msgstr "" #: nova/virt/xenapi/vm_utils.py:370 msgid "Shutting down VM (hard)" msgstr "" #: nova/virt/xenapi/vm_utils.py:407 #, python-format msgid "VBD not found in instance %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:434 #, python-format msgid "VBD %s already detached" msgstr "" #: nova/virt/xenapi/vm_utils.py:437 #, python-format msgid "" "VBD %(vbd_ref)s uplug failed with \"%(err)s\", attempt " "%(num_attempt)d/%(max_attempts)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:444 #, python-format msgid "Unable to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:447 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:458 #, python-format msgid "Unable to destroy VBD %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:480 #, 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:484 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" #: nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "Unable to destroy VDI %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:521 #, python-format msgid "Ignoring error while destroying VDI: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:540 #, 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:556 msgid "SR not present and could not be introduced" msgstr "" #: nova/virt/xenapi/vm_utils.py:580 #, python-format msgid "block device info: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:669 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:737 #, python-format msgid "No primary VDI found for %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:754 msgid "Error while removing sm_config" msgstr "" #: nova/virt/xenapi/vm_utils.py:778 msgid "Starting snapshot for VM" msgstr "" #: nova/virt/xenapi/vm_utils.py:828 #, python-format msgid "" "Only file-based SRs (ext/NFS) are supported by this feature. SR %(uuid)s" " is of type %(type)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:852 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:907 #, python-format msgid "Multiple base images for image: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:944 #, python-format msgid "Resizing up VDI %(vdi_ref)s from %(virtual_size)d to %(new_disk_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:955 msgid "No need to change vdi virtual size." msgstr "" #: nova/virt/xenapi/vm_utils.py:962 #, python-format msgid "VDI %s is bigger than requested resize up size." msgstr "" #: nova/virt/xenapi/vm_utils.py:964 msgid "VDI too big for requested resize up." msgstr "" #: nova/virt/xenapi/vm_utils.py:970 nova/virt/xenapi/vmops.py:1044 msgid "Can't resize a disk to 0 GB." msgstr "" #: nova/virt/xenapi/vm_utils.py:1015 msgid "Skipping auto_config_disk as destination size is 0GB" msgstr "" #: nova/virt/xenapi/vm_utils.py:1022 msgid "Disk must have only one partition." msgstr "" #: nova/virt/xenapi/vm_utils.py:1030 #, python-format msgid "Disk contains a filesystem we are unable to resize: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1039 #, python-format msgid "Attempted auto_configure_disk failed because: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1115 #, python-format msgid "Error while generating disk number: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1178 #, python-format msgid "" "Error when generating ephemeral disk. Device: %(userdevice)s Size GB: " "%(size_gb)s Error: %(exc)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1223 msgid "Error while generating config drive" msgstr "" #: nova/virt/xenapi/vm_utils.py:1275 msgid "Removing kernel/ramdisk files from dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1290 #, 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 %s. Ignoring the cow flag." msgstr "" #: nova/virt/xenapi/vm_utils.py:1361 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" #: nova/virt/xenapi/vm_utils.py:1395 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1427 #, python-format msgid "Invalid value '%s' for torrent_images" msgstr "" #: nova/virt/xenapi/vm_utils.py:1450 #, python-format msgid "Invalid value '%d' for image_compression_level" msgstr "" #: nova/virt/xenapi/vm_utils.py:1461 #, python-format msgid "Asking xapi to fetch vhd image %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1476 #, python-format msgid "" "Download handler '%(handler)s' raised an exception, falling back to " "default handler '%(default_handler)s'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1493 msgid "Error while checking vdi size" msgstr "" #: nova/virt/xenapi/vm_utils.py:1514 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1532 #, python-format msgid "Image size %(size)d exceeded flavor allowed size %(allowed_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1556 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1573 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:1583 #, 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:1602 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" #: nova/virt/xenapi/vm_utils.py:1616 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" #: nova/virt/xenapi/vm_utils.py:1625 msgid "Failed to fetch glance image" msgstr "" #: nova/virt/xenapi/vm_utils.py:1669 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1720 #, python-format msgid "VDI %s is still available" msgstr "" #: nova/virt/xenapi/vm_utils.py:1833 #, python-format msgid "Unable to parse rrd of %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1852 #, python-format msgid "Scanning SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1863 #, python-format msgid "Retry SR scan due to error: %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1896 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" #: nova/virt/xenapi/vm_utils.py:1917 msgid "" "XenAPI is unable to find a Storage Repository to install guest instances " "on. Please check your configuration (e.g. set a default SR for the pool) " "and/or configure the flag 'sr_matching_filter'." msgstr "" #: nova/virt/xenapi/vm_utils.py:1930 msgid "Cannot find SR of content-type ISO" msgstr "" #: nova/virt/xenapi/vm_utils.py:1938 #, python-format msgid "ISO: looking at SR %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1940 msgid "ISO: not iso content" msgstr "" #: nova/virt/xenapi/vm_utils.py:1943 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" #: nova/virt/xenapi/vm_utils.py:1946 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" #: nova/virt/xenapi/vm_utils.py:1950 msgid "ISO: SR MATCHing our criteria" msgstr "" #: nova/virt/xenapi/vm_utils.py:1952 msgid "ISO: ISO, looking to see if it is host local" msgstr "" #: nova/virt/xenapi/vm_utils.py:1955 #, python-format msgid "ISO: PBD %s disappeared" msgstr "" #: nova/virt/xenapi/vm_utils.py:1958 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:1961 msgid "ISO: SR with local PBD" msgstr "" #: nova/virt/xenapi/vm_utils.py:1983 #, 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:2018 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2108 #, 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:2120 #, python-format msgid "VHD coalesce attempts exceeded (%d), giving up..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2155 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" #: nova/virt/xenapi/vm_utils.py:2175 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" #: nova/virt/xenapi/vm_utils.py:2188 #, python-format msgid "Plugging VBD %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2191 #, python-format msgid "Plugging VBD %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2193 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2197 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2204 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" #: nova/virt/xenapi/vm_utils.py:2212 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2254 msgid "Partitions:" msgstr "" #: nova/virt/xenapi/vm_utils.py:2260 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" #: nova/virt/xenapi/vm_utils.py:2286 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2295 #, python-format msgid "Writing partition table %s done." msgstr "" #: nova/virt/xenapi/vm_utils.py:2331 msgid "" "Shrinking the filesystem down with resize2fs has failed, please check if " "you have enough free space on your disk." msgstr "" #: nova/virt/xenapi/vm_utils.py:2371 #, 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:2407 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" #: nova/virt/xenapi/vm_utils.py:2462 msgid "Manipulating interface files directly" msgstr "" #: nova/virt/xenapi/vm_utils.py:2471 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" #: nova/virt/xenapi/vm_utils.py:2582 msgid "This domU must be running on the host specified by connection_url" msgstr "" #: nova/virt/xenapi/vm_utils.py:2639 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" #: nova/virt/xenapi/vm_utils.py:2651 msgid "Failed to transfer vhd to new host" msgstr "" #: nova/virt/xenapi/vm_utils.py:2677 msgid "ipxe_boot_menu_url not set, user will have to enter URL manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2683 msgid "ipxe_network_name not set, user will have to enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2694 #, python-format msgid "" "Unable to find network matching '%(network_name)s', user will have to " "enter IP manually..." msgstr "" #: nova/virt/xenapi/vm_utils.py:2718 #, python-format msgid "ISO creation tool '%s' does not exist." msgstr "" #: nova/virt/xenapi/vmops.py:170 #, python-format msgid "Importing image upload handler: %s" msgstr "" #: nova/virt/xenapi/vmops.py:185 msgid "Error: Agent is disabled" msgstr "" #: nova/virt/xenapi/vmops.py:305 msgid "Starting instance" msgstr "" #: nova/virt/xenapi/vmops.py:382 msgid "ipxe_boot is True but no ISO image found" msgstr "" #: nova/virt/xenapi/vmops.py:525 msgid "Failed to spawn, rolling back" msgstr "" #: nova/virt/xenapi/vmops.py:565 #, python-format msgid "Using PV kernel: %s" msgstr "" #: nova/virt/xenapi/vmops.py:591 msgid "Auto configuring disk, attempting to resize root disk..." msgstr "" #: nova/virt/xenapi/vmops.py:644 msgid "Waiting for instance state to become running" msgstr "" #: nova/virt/xenapi/vmops.py:656 msgid "Skip agent setup, not enabled." msgstr "" #: nova/virt/xenapi/vmops.py:663 msgid "Skip agent setup, unable to contact agent." msgstr "" #: nova/virt/xenapi/vmops.py:667 #, python-format msgid "Detected agent version: %s" msgstr "" #: nova/virt/xenapi/vmops.py:756 msgid "Finished snapshot and upload for VM" msgstr "" #: nova/virt/xenapi/vmops.py:775 #, python-format msgid "Updating progress to %d" msgstr "" #: nova/virt/xenapi/vmops.py:782 msgid "VM was already shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:786 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" #: nova/virt/xenapi/vmops.py:790 msgid "Unable to terminate instance." msgstr "" #: nova/virt/xenapi/vmops.py:842 #, python-format msgid "_migrate_disk_resizing_down failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:895 msgid "Migrated root base vhds" msgstr "" #: nova/virt/xenapi/vmops.py:911 msgid "Migrated all base vhds." msgstr "" #: nova/virt/xenapi/vmops.py:945 #, python-format msgid "Read-only migrated for disk: %s" msgstr "" #: nova/virt/xenapi/vmops.py:996 #, python-format msgid "_migrate_disk_resizing_up failed. Restoring orig vm due_to: %s." msgstr "" #: nova/virt/xenapi/vmops.py:1003 #, python-format msgid "_migrate_disk_resizing_up failed to rollback: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1020 msgid "Can't resize down ephemeral disks." msgstr "" #: nova/virt/xenapi/vmops.py:1127 msgid "Starting halted instance found during reboot" msgstr "" #: nova/virt/xenapi/vmops.py:1133 msgid "" "Reboot failed due to bad volumes, detaching bad volumes and starting " "halted instance" msgstr "" #: nova/virt/xenapi/vmops.py:1211 msgid "Unable to update metadata, VM not found." msgstr "" #: nova/virt/xenapi/vmops.py:1257 msgid "Unable to find root VBD/VDI for VM" msgstr "" #: nova/virt/xenapi/vmops.py:1261 msgid "Destroying VDIs" msgstr "" #: nova/virt/xenapi/vmops.py:1288 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" #: nova/virt/xenapi/vmops.py:1295 msgid "instance has a kernel or ramdisk but not both" msgstr "" #: nova/virt/xenapi/vmops.py:1303 msgid "kernel/ramdisk files removed" msgstr "" #: nova/virt/xenapi/vmops.py:1329 msgid "Destroying VM" msgstr "" #: nova/virt/xenapi/vmops.py:1358 msgid "VM is not present, skipping destroy..." msgstr "" #: nova/virt/xenapi/vmops.py:1409 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" #: nova/virt/xenapi/vmops.py:1451 msgid "VM is not present, skipping soft delete..." msgstr "" #: nova/virt/xenapi/vmops.py:1652 msgid "Injecting network info to xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1675 msgid "Creating vifs" msgstr "" #: nova/virt/xenapi/vmops.py:1684 #, python-format msgid "Creating VIF for network %s" msgstr "" #: nova/virt/xenapi/vmops.py:1687 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" #: nova/virt/xenapi/vmops.py:1722 #, python-format msgid "Injecting hostname (%s) into xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1732 msgid "Removing hostname from xenstore" msgstr "" #: nova/virt/xenapi/vmops.py:1837 #, python-format msgid "Destination host:%s must be in the same aggregate as the source server" msgstr "" #: nova/virt/xenapi/vmops.py:1858 msgid "No suitable network for migrate" msgstr "" #: nova/virt/xenapi/vmops.py:1864 #, python-format msgid "PIF %s does not contain IP address" msgstr "" #: nova/virt/xenapi/vmops.py:1877 msgid "Migrate Receive failed" msgstr "" #: nova/virt/xenapi/vmops.py:1951 msgid "XAPI supporting relax-xsm-sr-check=true required" msgstr "" #: nova/virt/xenapi/vmops.py:1962 #, python-format msgid "assert_can_migrate failed because: %s" msgstr "" #: nova/virt/xenapi/vmops.py:2022 msgid "Migrate Send failed" msgstr "" #: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Creating SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:70 #, python-format msgid "Introducing SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:77 msgid "Creating PBD for SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:80 msgid "Plugging SR" msgstr "" #: nova/virt/xenapi/volume_utils.py:89 msgid "Forgetting SR..." msgstr "" #: nova/virt/xenapi/volume_utils.py:111 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:128 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:136 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" #: nova/virt/xenapi/volume_utils.py:168 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:171 #, python-format msgid "" "VDI not found on SR %(sr)s (vdi_uuid %(vdi_uuid)s, target_lun " "%(target_lun)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:182 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" #: nova/virt/xenapi/volume_utils.py:204 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:214 msgid "Cannot purge SR with referenced VDIs" msgstr "" #: nova/virt/xenapi/volume_utils.py:223 nova/virt/xenapi/volume_utils.py:269 #, python-format msgid "Unable to obtain target information %s" msgstr "" #: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "(vol_id,host,port,iqn): (%(vol_id)s,%(host)s,%(port)s,%(iqn)s)" msgstr "" #: nova/virt/xenapi/volume_utils.py:295 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:42 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s,\" %(mountpoint)s" msgstr "" #: nova/virt/xenapi/volumeops.py:68 #, python-format msgid "Connect_volume: %s" msgstr "" #: nova/virt/xenapi/volumeops.py:138 #, python-format msgid "Skipping detach because VBD for %s was not found" msgstr "" #: nova/virt/xenapi/client/session.py:83 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" #: nova/virt/xenapi/client/session.py:103 #, python-format msgid "Plugin version mismatch (Expected %(exp)s, got %(got)s)" msgstr "" #: nova/virt/xenapi/client/session.py:137 msgid "Host is member of a pool, but DB says otherwise" msgstr "" #: nova/virt/xenapi/client/session.py:213 #, python-format msgid "%(plugin)s.%(fn)s attempt %(attempt)d/%(attempts)d" msgstr "" #: nova/virt/xenapi/client/session.py:227 #, python-format msgid "%(plugin)s.%(fn)s failed. Retrying call." msgstr "" #: nova/virt/xenapi/client/session.py:237 msgid "RetryableError, so retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:241 msgid "Error due to a signal, retrying upload_vhd" msgstr "" #: nova/virt/xenapi/client/session.py:259 #: nova/virt/xenapi/client/session.py:273 #, python-format msgid "Got exception: %s" msgstr "" #: nova/virt/xenapi/image/bittorrent.py:106 #, python-format msgid "Loading torrent URL fetcher from entry points %(ep)s" msgstr "" #: nova/vnc/xvp_proxy.py:94 nova/vnc/xvp_proxy.py:99 #, python-format msgid "Error in handshake: %s" msgstr "" #: nova/vnc/xvp_proxy.py:114 #, python-format msgid "Invalid request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:134 #, python-format msgid "Request: %s" msgstr "" #: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request made with missing token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:147 #, python-format msgid "Request made with invalid token: %s" msgstr "" #: nova/vnc/xvp_proxy.py:154 #, python-format msgid "Unexpected error: %s" msgstr "" #: nova/vnc/xvp_proxy.py:174 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" #: nova/volume/cinder.py:93 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" #: nova/volume/cinder.py:221 msgid "status must be 'in-use'" msgstr "" #: nova/volume/cinder.py:227 msgid "status must be 'available'" msgstr "" #: nova/volume/encryptors/__init__.py:42 #, python-format msgid "Error instantiating %(provider)s: %(exception)s" msgstr "" #: nova/volume/encryptors/__init__.py:57 #, python-format msgid "" "Failed to retrieve encryption metadata for volume %(volume_id)s: " "%(exception)s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:54 nova/volume/encryptors/luks.py:67 #, python-format msgid "opening encrypted volume %s" msgstr "" #: nova/volume/encryptors/cryptsetup.py:95 nova/volume/encryptors/luks.py:104 #, python-format msgid "closing encrypted volume %s" msgstr "" #: nova/volume/encryptors/luks.py:42 #, python-format msgid "formatting encrypted volume %s" msgstr "" nova-2014.1/nova/openstack/0000775000175400017540000000000012323722546016642 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/0000775000175400017540000000000012323722546020132 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/fileutils.py0000664000175400017540000000750612323721510022502 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import errno import os import tempfile from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ # noqa from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) _FILE_CACHE = {} def ensure_tree(path): """Create a directory (and any ancestor directories required) :param path: Directory to create """ try: os.makedirs(path) except OSError as exc: if exc.errno == errno.EEXIST: if not os.path.isdir(path): raise else: raise def read_cached_file(filename, force_reload=False): """Read from a file if it has been modified. :param force_reload: Whether to reload the file. :returns: A tuple with a boolean specifying if the data is fresh or not. """ global _FILE_CACHE if force_reload and filename in _FILE_CACHE: del _FILE_CACHE[filename] reloaded = False mtime = os.path.getmtime(filename) cache_info = _FILE_CACHE.setdefault(filename, {}) if not cache_info or mtime > cache_info.get('mtime', 0): LOG.debug(_("Reloading cached file %s") % filename) with open(filename) as fap: cache_info['data'] = fap.read() cache_info['mtime'] = mtime reloaded = True return (reloaded, cache_info['data']) def delete_if_exists(path, remove=os.unlink): """Delete a file, but ignore file not found error. :param path: File to delete :param remove: Optional function to remove passed path """ try: remove(path) except OSError as e: if e.errno != errno.ENOENT: raise @contextlib.contextmanager def remove_path_on_error(path, remove=delete_if_exists): """Protect code that wants to operate on PATH atomically. Any exception will cause PATH to be removed. :param path: File to work with :param remove: Optional function to remove passed path """ try: yield except Exception: with excutils.save_and_reraise_exception(): remove(path) def file_open(*args, **kwargs): """Open file see built-in file() documentation for more details Note: The reason this is kept in a separate module is to easily be able to provide a stub module that doesn't alter system state at all (for unit tests) """ return file(*args, **kwargs) def write_to_tempfile(content, path=None, suffix='', prefix='tmp'): """Create temporary file or use existing file. This util is needed for creating temporary file with specified content, suffix and prefix. If path is not None, it will be used for writing content. If the path doesn't exist it'll be created. :param content: content for temporary file. :param path: same as parameter 'dir' for mkstemp :param suffix: same as parameter 'suffix' for mkstemp :param prefix: same as parameter 'prefix' for mkstemp For example: it can be used in database tests for creating configuration files. """ if path: ensure_tree(path) (fd, path) = tempfile.mkstemp(suffix=suffix, dir=path, prefix=prefix) try: os.write(fd, content) finally: os.close(fd) return path nova-2014.1/nova/openstack/common/network_utils.py0000664000175400017540000000520212323721510023402 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2012 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Network-related utilities and helper functions. """ import urlparse def parse_host_port(address, default_port=None): """Interpret a string as a host:port pair. An IPv6 address MUST be escaped if accompanied by a port, because otherwise ambiguity ensues: 2001:db8:85a3::8a2e:370:7334 means both [2001:db8:85a3::8a2e:370:7334] and [2001:db8:85a3::8a2e:370]:7334. >>> parse_host_port('server01:80') ('server01', 80) >>> parse_host_port('server01') ('server01', None) >>> parse_host_port('server01', default_port=1234) ('server01', 1234) >>> parse_host_port('[::1]:80') ('::1', 80) >>> parse_host_port('[::1]') ('::1', None) >>> parse_host_port('[::1]', default_port=1234) ('::1', 1234) >>> parse_host_port('2001:db8:85a3::8a2e:370:7334', default_port=1234) ('2001:db8:85a3::8a2e:370:7334', 1234) """ if address[0] == '[': # Escaped ipv6 _host, _port = address[1:].split(']') host = _host if ':' in _port: port = _port.split(':')[1] else: port = default_port else: if address.count(':') == 1: host, port = address.split(':') else: # 0 means ipv4, >1 means ipv6. # We prohibit unescaped ipv6 addresses with port. host = address port = default_port return (host, None if port is None else int(port)) def urlsplit(url, scheme='', allow_fragments=True): """Parse a URL using urlparse.urlsplit(), splitting query and fragments. This function papers over Python issue9374 when needed. The parameters are the same as urlparse.urlsplit. """ scheme, netloc, path, query, fragment = urlparse.urlsplit( url, scheme, allow_fragments) if allow_fragments and '#' in path: path, fragment = path.split('#', 1) if '?' in path: path, query = path.split('?', 1) return urlparse.SplitResult(scheme, netloc, path, query, fragment) nova-2014.1/nova/openstack/common/units.py0000664000175400017540000000163012323721477021650 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Unit constants """ #Binary unit constants. Ki = 1024 Mi = 1024 ** 2 Gi = 1024 ** 3 Ti = 1024 ** 4 Pi = 1024 ** 5 Ei = 1024 ** 6 Zi = 1024 ** 7 Yi = 1024 ** 8 #Decimal unit constants. k = 1000 M = 1000 ** 2 G = 1000 ** 3 T = 1000 ** 4 P = 1000 ** 5 E = 1000 ** 6 Z = 1000 ** 7 Y = 1000 ** 8 nova-2014.1/nova/openstack/common/threadgroup.py0000664000175400017540000000743012323721510023022 0ustar jenkinsjenkins00000000000000# 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 eventlet import greenlet from eventlet import greenpool from eventlet import greenthread from nova.openstack.common import log as logging from nova.openstack.common import loopingcall LOG = logging.getLogger(__name__) def _thread_done(gt, *args, **kwargs): """Callback function to be passed to GreenThread.link() when we spawn() Calls the :class:`ThreadGroup` to notify if. """ kwargs['group'].thread_done(kwargs['thread']) class Thread(object): """Wrapper around a greenthread, that holds a reference to the :class:`ThreadGroup`. The Thread will notify the :class:`ThreadGroup` when it has done so it can be removed from the threads list. """ def __init__(self, thread, group): self.thread = thread self.thread.link(_thread_done, group=group, thread=self) def stop(self): self.thread.kill() def wait(self): return self.thread.wait() class ThreadGroup(object): """The point of the ThreadGroup classis to: * keep track of timers and greenthreads (making it easier to stop them when need be). * provide an easy API to add timers. """ def __init__(self, thread_pool_size=10): self.pool = greenpool.GreenPool(thread_pool_size) self.threads = [] self.timers = [] def add_dynamic_timer(self, callback, initial_delay=None, periodic_interval_max=None, *args, **kwargs): timer = loopingcall.DynamicLoopingCall(callback, *args, **kwargs) timer.start(initial_delay=initial_delay, periodic_interval_max=periodic_interval_max) self.timers.append(timer) def add_timer(self, interval, callback, initial_delay=None, *args, **kwargs): pulse = loopingcall.FixedIntervalLoopingCall(callback, *args, **kwargs) pulse.start(interval=interval, initial_delay=initial_delay) self.timers.append(pulse) def add_thread(self, callback, *args, **kwargs): gt = self.pool.spawn(callback, *args, **kwargs) th = Thread(gt, self) self.threads.append(th) def thread_done(self, thread): self.threads.remove(thread) def stop(self): current = greenthread.getcurrent() for x in self.threads: if x is current: # don't kill the current thread. continue try: x.stop() except Exception as ex: LOG.exception(ex) for x in self.timers: try: x.stop() except Exception as ex: LOG.exception(ex) self.timers = [] def wait(self): for x in self.timers: try: x.wait() except greenlet.GreenletExit: pass except Exception as ex: LOG.exception(ex) current = greenthread.getcurrent() for x in self.threads: if x is current: continue try: x.wait() except greenlet.GreenletExit: pass except Exception as ex: LOG.exception(ex) nova-2014.1/nova/openstack/common/eventlet_backdoor.py0000664000175400017540000001135412323721510024170 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2012 OpenStack Foundation. # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import print_function import errno import gc import os import pprint import socket import sys import traceback import eventlet import eventlet.backdoor import greenlet from oslo.config import cfg from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging help_for_backdoor_port = 'Acceptable ' + \ 'values are 0, and :, where 0 results in ' + \ 'listening on a random tcp port number, results in ' + \ 'listening on the specified port number and not enabling backdoor' + \ 'if it is in use and : results in listening on the ' + \ 'smallest unused port number within the specified range of port ' + \ 'numbers. The chosen port is displayed in the service\'s log file.' eventlet_backdoor_opts = [ cfg.StrOpt('backdoor_port', default=None, help='Enable eventlet backdoor. %s' % help_for_backdoor_port) ] CONF = cfg.CONF CONF.register_opts(eventlet_backdoor_opts) LOG = logging.getLogger(__name__) class EventletBackdoorConfigValueError(Exception): def __init__(self, port_range, help_msg, ex): msg = ('Invalid backdoor_port configuration %(range)s: %(ex)s. ' '%(help)s' % {'range': port_range, 'ex': ex, 'help': help_msg}) super(EventletBackdoorConfigValueError, self).__init__(msg) self.port_range = port_range def _dont_use_this(): print("Don't use this, just disconnect instead") def _find_objects(t): return filter(lambda o: isinstance(o, t), gc.get_objects()) def _print_greenthreads(): for i, gt in enumerate(_find_objects(greenlet.greenlet)): print(i, gt) traceback.print_stack(gt.gr_frame) print() def _print_nativethreads(): for threadId, stack in sys._current_frames().items(): print(threadId) traceback.print_stack(stack) print() def _parse_port_range(port_range): if ':' not in port_range: start, end = port_range, port_range else: start, end = port_range.split(':', 1) try: start, end = int(start), int(end) if end < start: raise ValueError return start, end except ValueError as ex: raise EventletBackdoorConfigValueError(port_range, ex, help_for_backdoor_port) def _listen(host, start_port, end_port, listen_func): try_port = start_port while True: try: return listen_func((host, try_port)) except socket.error as exc: if (exc.errno != errno.EADDRINUSE or try_port >= end_port): raise try_port += 1 def initialize_if_enabled(): backdoor_locals = { 'exit': _dont_use_this, # So we don't exit the entire process 'quit': _dont_use_this, # So we don't exit the entire process 'fo': _find_objects, 'pgt': _print_greenthreads, 'pnt': _print_nativethreads, } if CONF.backdoor_port is None: return None start_port, end_port = _parse_port_range(str(CONF.backdoor_port)) # NOTE(johannes): The standard sys.displayhook will print the value of # the last expression and set it to __builtin__._, which overwrites # the __builtin__._ that gettext sets. Let's switch to using pprint # since it won't interact poorly with gettext, and it's easier to # read the output too. def displayhook(val): if val is not None: pprint.pprint(val) sys.displayhook = displayhook sock = _listen('localhost', start_port, end_port, eventlet.listen) # In the case of backdoor port being zero, a port number is assigned by # listen(). In any case, pull the port number out here. port = sock.getsockname()[1] LOG.info(_('Eventlet backdoor listening on %(port)s for process %(pid)d') % {'port': port, 'pid': os.getpid()}) eventlet.spawn_n(eventlet.backdoor.backdoor_server, sock, locals=backdoor_locals) return port nova-2014.1/nova/openstack/common/importutils.py0000664000175400017540000000421512323721510023067 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Import related utilities and helper functions. """ import sys import traceback def import_class(import_str): """Returns a class from a string including module and class.""" mod_str, _sep, class_str = import_str.rpartition('.') try: __import__(mod_str) return getattr(sys.modules[mod_str], class_str) except (ValueError, AttributeError): raise ImportError('Class %s cannot be found (%s)' % (class_str, traceback.format_exception(*sys.exc_info()))) def import_object(import_str, *args, **kwargs): """Import a class and return an instance of it.""" return import_class(import_str)(*args, **kwargs) def import_object_ns(name_space, import_str, *args, **kwargs): """Tries to import object from default namespace. Imports a class and return an instance of it, first by trying to find the class in a default namespace, then failing back to a full path if not found in the default namespace. """ import_value = "%s.%s" % (name_space, import_str) try: return import_class(import_value)(*args, **kwargs) except ImportError: return import_class(import_str)(*args, **kwargs) def import_module(import_str): """Import a module.""" __import__(import_str) return sys.modules[import_str] def try_import(import_str, default=None): """Try to import a module and if it fails return default.""" try: return import_module(import_str) except ImportError: return default nova-2014.1/nova/openstack/common/cliutils.py0000664000175400017540000000365412323721477022346 0ustar jenkinsjenkins00000000000000# 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. import inspect class MissingArgs(Exception): def __init__(self, missing): self.missing = missing def __str__(self): if len(self.missing) == 1: return "An argument is missing" else: return ("%(num)d arguments are missing" % dict(num=len(self.missing))) def validate_args(fn, *args, **kwargs): """Check that the supplied args are sufficient for calling a function. >>> validate_args(lambda a: None) Traceback (most recent call last): ... MissingArgs: An argument is missing >>> validate_args(lambda a, b, c, d: None, 0, c=1) Traceback (most recent call last): ... MissingArgs: 2 arguments are missing :param fn: the function to check :param arg: the positional arguments supplied :param kwargs: the keyword arguments supplied """ argspec = inspect.getargspec(fn) num_defaults = len(argspec.defaults or []) required_args = argspec.args[:len(argspec.args) - num_defaults] def isbound(method): return getattr(method, 'im_self', None) is not None if isbound(fn): required_args.pop(0) missing = [arg for arg in required_args if arg not in kwargs] missing = missing[len(args):] if missing: raise MissingArgs(missing) nova-2014.1/nova/openstack/common/strutils.py0000664000175400017540000001623212323721510022367 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ System-level utilities and helper functions. """ import re import sys import unicodedata from nova.openstack.common.gettextutils import _ # Used for looking up extensions of text # to their 'multiplied' byte amount BYTE_MULTIPLIERS = { '': 1, 't': 1024 ** 4, 'g': 1024 ** 3, 'm': 1024 ** 2, 'k': 1024, } BYTE_REGEX = re.compile(r'(^-?\d+)(\D*)') TRUE_STRINGS = ('1', 't', 'true', 'on', 'y', 'yes') FALSE_STRINGS = ('0', 'f', 'false', 'off', 'n', 'no') SLUGIFY_STRIP_RE = re.compile(r"[^\w\s-]") SLUGIFY_HYPHENATE_RE = re.compile(r"[-\s]+") def int_from_bool_as_string(subject): """Interpret a string as a boolean and return either 1 or 0. Any string value in: ('True', 'true', 'On', 'on', '1') is interpreted as a boolean True. Useful for JSON-decoded stuff and config file parsing """ return bool_from_string(subject) and 1 or 0 def bool_from_string(subject, strict=False): """Interpret a string as a boolean. A case-insensitive match is performed such that strings matching 't', 'true', 'on', 'y', 'yes', or '1' are considered True and, when `strict=False`, anything else is considered False. Useful for JSON-decoded stuff and config file parsing. If `strict=True`, unrecognized values, including None, will raise a ValueError which is useful when parsing values passed in from an API call. Strings yielding False are 'f', 'false', 'off', 'n', 'no', or '0'. """ if not isinstance(subject, basestring): subject = str(subject) lowered = subject.strip().lower() if lowered in TRUE_STRINGS: return True elif lowered in FALSE_STRINGS: return False elif strict: acceptable = ', '.join( "'%s'" % s for s in sorted(TRUE_STRINGS + FALSE_STRINGS)) msg = _("Unrecognized value '%(val)s', acceptable values are:" " %(acceptable)s") % {'val': subject, 'acceptable': acceptable} raise ValueError(msg) else: return False def safe_decode(text, incoming=None, errors='strict'): """Decodes incoming str using `incoming` if they're not already unicode. :param incoming: Text's current encoding :param errors: Errors handling policy. See here for valid values http://docs.python.org/2/library/codecs.html :returns: text or a unicode `incoming` encoded representation of it. :raises TypeError: If text is not an isntance of basestring """ if not isinstance(text, basestring): raise TypeError("%s can't be decoded" % type(text)) if isinstance(text, unicode): return text if not incoming: incoming = (sys.stdin.encoding or sys.getdefaultencoding()) try: return text.decode(incoming, errors) except UnicodeDecodeError: # Note(flaper87) If we get here, it means that # sys.stdin.encoding / sys.getdefaultencoding # didn't return a suitable encoding to decode # text. This happens mostly when global LANG # var is not set correctly and there's no # default encoding. In this case, most likely # python will use ASCII or ANSI encoders as # default encodings but they won't be capable # of decoding non-ASCII characters. # # Also, UTF-8 is being used since it's an ASCII # extension. return text.decode('utf-8', errors) def safe_encode(text, incoming=None, encoding='utf-8', errors='strict'): """Encodes incoming str/unicode using `encoding`. If incoming is not specified, text is expected to be encoded with current python's default encoding. (`sys.getdefaultencoding`) :param incoming: Text's current encoding :param encoding: Expected encoding for text (Default UTF-8) :param errors: Errors handling policy. See here for valid values http://docs.python.org/2/library/codecs.html :returns: text or a bytestring `encoding` encoded representation of it. :raises TypeError: If text is not an isntance of basestring """ if not isinstance(text, basestring): raise TypeError("%s can't be encoded" % type(text)) if not incoming: incoming = (sys.stdin.encoding or sys.getdefaultencoding()) if isinstance(text, unicode): return text.encode(encoding, errors) elif text and encoding != incoming: # Decode text before encoding it with `encoding` text = safe_decode(text, incoming, errors) return text.encode(encoding, errors) return text def to_bytes(text, default=0): """Converts a string into an integer of bytes. Looks at the last characters of the text to determine what conversion is needed to turn the input text into a byte number. Supports "B, K(B), M(B), G(B), and T(B)". (case insensitive) :param text: String input for bytes size conversion. :param default: Default return value when text is blank. """ match = BYTE_REGEX.search(text) if match: magnitude = int(match.group(1)) mult_key_org = match.group(2) if not mult_key_org: return magnitude elif text: msg = _('Invalid string format: %s') % text raise TypeError(msg) else: return default mult_key = mult_key_org.lower().replace('b', '', 1) multiplier = BYTE_MULTIPLIERS.get(mult_key) if multiplier is None: msg = _('Unknown byte multiplier: %s') % mult_key_org raise TypeError(msg) return magnitude * multiplier def to_slug(value, incoming=None, errors="strict"): """Normalize string. Convert to lowercase, remove non-word characters, and convert spaces to hyphens. Inspired by Django's `slugify` filter. :param value: Text to slugify :param incoming: Text's current encoding :param errors: Errors handling policy. See here for valid values http://docs.python.org/2/library/codecs.html :returns: slugified unicode representation of `value` :raises TypeError: If text is not an instance of basestring """ value = safe_decode(value, incoming, errors) # NOTE(aababilov): no need to use safe_(encode|decode) here: # encodings are always "ascii", error handling is always "ignore" # and types are always known (first: unicode; second: str) value = unicodedata.normalize("NFKD", value).encode( "ascii", "ignore").decode("ascii") value = SLUGIFY_STRIP_RE.sub("", value).strip().lower() return SLUGIFY_HYPHENATE_RE.sub("-", value) nova-2014.1/nova/openstack/common/context.py0000664000175400017540000000525512323721510022165 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Simple class that stores security context information in the web request. Projects should subclass this class if they wish to enhance the request context or provide additional information in their specific WSGI pipeline. """ import itertools from nova.openstack.common import uuidutils def generate_request_id(): return 'req-%s' % uuidutils.generate_uuid() class RequestContext(object): """Helper class to represent useful information about a request context. Stores information about the security context under which the user accesses the system, as well as additional request information. """ def __init__(self, auth_token=None, user=None, tenant=None, is_admin=False, read_only=False, show_deleted=False, request_id=None): self.auth_token = auth_token self.user = user self.tenant = tenant self.is_admin = is_admin self.read_only = read_only self.show_deleted = show_deleted if not request_id: request_id = generate_request_id() self.request_id = request_id def to_dict(self): return {'user': self.user, 'tenant': self.tenant, 'is_admin': self.is_admin, 'read_only': self.read_only, 'show_deleted': self.show_deleted, 'auth_token': self.auth_token, 'request_id': self.request_id} def get_admin_context(show_deleted=False): context = RequestContext(None, tenant=None, is_admin=True, show_deleted=show_deleted) return context def get_context_from_function_and_args(function, args, kwargs): """Find an arg of type RequestContext and return it. This is useful in a couple of decorators where we don't know much about the function we're wrapping. """ for arg in itertools.chain(kwargs.values(), args): if isinstance(arg, RequestContext): return arg return None nova-2014.1/nova/openstack/common/lockutils.py0000664000175400017540000002327712323721477022532 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import contextlib import errno import functools import os import shutil import subprocess import sys import tempfile import threading import time import weakref from oslo.config import cfg from nova.openstack.common import fileutils from nova.openstack.common.gettextutils import _ # noqa from nova.openstack.common import local from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) util_opts = [ cfg.BoolOpt('disable_process_locking', default=False, help='Whether to disable inter-process locks'), cfg.StrOpt('lock_path', default=os.environ.get("NOVA_LOCK_PATH"), help=('Directory to use for lock files.')) ] CONF = cfg.CONF CONF.register_opts(util_opts) def set_defaults(lock_path): cfg.set_defaults(util_opts, lock_path=lock_path) class _InterProcessLock(object): """Lock implementation which allows multiple locks, working around issues like bugs.debian.org/cgi-bin/bugreport.cgi?bug=632857 and does not require any cleanup. Since the lock is always held on a file descriptor rather than outside of the process, the lock gets dropped automatically if the process crashes, even if __exit__ is not executed. There are no guarantees regarding usage by multiple green threads in a single process here. This lock works only between processes. Exclusive access between local threads should be achieved using the semaphores in the @synchronized decorator. Note these locks are released when the descriptor is closed, so it's not safe to close the file descriptor while another green thread holds the lock. Just opening and closing the lock file can break synchronisation, so lock files must be accessed only using this abstraction. """ def __init__(self, name): self.lockfile = None self.fname = name def __enter__(self): self.lockfile = open(self.fname, 'w') while True: try: # Using non-blocking locks since green threads are not # patched to deal with blocking locking calls. # Also upon reading the MSDN docs for locking(), it seems # to have a laughable 10 attempts "blocking" mechanism. self.trylock() return self except IOError as e: if e.errno in (errno.EACCES, errno.EAGAIN): # external locks synchronise things like iptables # updates - give it some time to prevent busy spinning time.sleep(0.01) else: raise def __exit__(self, exc_type, exc_val, exc_tb): try: self.unlock() self.lockfile.close() except IOError: LOG.exception(_("Could not release the acquired lock `%s`"), self.fname) def trylock(self): raise NotImplementedError() def unlock(self): raise NotImplementedError() class _WindowsLock(_InterProcessLock): def trylock(self): msvcrt.locking(self.lockfile.fileno(), msvcrt.LK_NBLCK, 1) def unlock(self): msvcrt.locking(self.lockfile.fileno(), msvcrt.LK_UNLCK, 1) class _PosixLock(_InterProcessLock): def trylock(self): fcntl.lockf(self.lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB) def unlock(self): fcntl.lockf(self.lockfile, fcntl.LOCK_UN) if os.name == 'nt': import msvcrt InterProcessLock = _WindowsLock else: import fcntl InterProcessLock = _PosixLock _semaphores = weakref.WeakValueDictionary() _semaphores_lock = threading.Lock() @contextlib.contextmanager def lock(name, lock_file_prefix=None, external=False, lock_path=None): """Context based lock This function yields a `threading.Semaphore` instance (if we don't use eventlet.monkey_patch(), else `semaphore.Semaphore`) unless external is True, in which case, it'll yield an InterProcessLock instance. :param lock_file_prefix: The lock_file_prefix argument is used to provide lock files on disk with a meaningful prefix. :param external: The external keyword argument denotes whether this lock should work across multiple processes. This means that if two different workers both run a a method decorated with @synchronized('mylock', external=True), only one of them will execute at a time. :param lock_path: The lock_path keyword argument is used to specify a special location for external lock files to live. If nothing is set, then CONF.lock_path is used as a default. """ with _semaphores_lock: try: sem = _semaphores[name] except KeyError: sem = threading.Semaphore() _semaphores[name] = sem with sem: LOG.debug(_('Got semaphore "%(lock)s"'), {'lock': name}) # NOTE(mikal): I know this looks odd if not hasattr(local.strong_store, 'locks_held'): local.strong_store.locks_held = [] local.strong_store.locks_held.append(name) try: if external and not CONF.disable_process_locking: LOG.debug(_('Attempting to grab file lock "%(lock)s"'), {'lock': name}) # We need a copy of lock_path because it is non-local local_lock_path = lock_path or CONF.lock_path if not local_lock_path: raise cfg.RequiredOptError('lock_path') if not os.path.exists(local_lock_path): fileutils.ensure_tree(local_lock_path) LOG.info(_('Created lock path: %s'), local_lock_path) def add_prefix(name, prefix): if not prefix: return name sep = '' if prefix.endswith('-') else '-' return '%s%s%s' % (prefix, sep, name) # NOTE(mikal): the lock name cannot contain directory # separators lock_file_name = add_prefix(name.replace(os.sep, '_'), lock_file_prefix) lock_file_path = os.path.join(local_lock_path, lock_file_name) try: lock = InterProcessLock(lock_file_path) with lock as lock: LOG.debug(_('Got file lock "%(lock)s" at %(path)s'), {'lock': name, 'path': lock_file_path}) yield lock finally: LOG.debug(_('Released file lock "%(lock)s" at %(path)s'), {'lock': name, 'path': lock_file_path}) else: yield sem finally: local.strong_store.locks_held.remove(name) def synchronized(name, lock_file_prefix=None, external=False, lock_path=None): """Synchronization decorator. Decorating a method like so:: @synchronized('mylock') def foo(self, *args): ... ensures that only one thread will execute the foo method at a time. Different methods can share the same lock:: @synchronized('mylock') def foo(self, *args): ... @synchronized('mylock') def bar(self, *args): ... This way only one of either foo or bar can be executing at a time. """ def wrap(f): @functools.wraps(f) def inner(*args, **kwargs): try: with lock(name, lock_file_prefix, external, lock_path): LOG.debug(_('Got semaphore / lock "%(function)s"'), {'function': f.__name__}) return f(*args, **kwargs) finally: LOG.debug(_('Semaphore / lock released "%(function)s"'), {'function': f.__name__}) return inner return wrap def synchronized_with_prefix(lock_file_prefix): """Partial object generator for the synchronization decorator. Redefine @synchronized in each project like so:: (in nova/utils.py) from nova.openstack.common import lockutils synchronized = lockutils.synchronized_with_prefix('nova-') (in nova/foo.py) from nova import utils @utils.synchronized('mylock') def bar(self, *args): ... The lock_file_prefix argument is used to provide lock files on disk with a meaningful prefix. """ return functools.partial(synchronized, lock_file_prefix=lock_file_prefix) def main(argv): """Create a dir for locks and pass it to command from arguments If you run this: python -m openstack.common.lockutils python setup.py testr a temporary directory will be created for all your locks and passed to all your tests in an environment variable. The temporary dir will be deleted afterwards and the return value will be preserved. """ lock_dir = tempfile.mkdtemp() os.environ["NOVA_LOCK_PATH"] = lock_dir try: ret_val = subprocess.call(argv[1:]) finally: shutil.rmtree(lock_dir, ignore_errors=True) return ret_val if __name__ == '__main__': sys.exit(main(sys.argv)) nova-2014.1/nova/openstack/common/loopingcall.py0000664000175400017540000001106312323721510022776 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import sys from eventlet import event from eventlet import greenthread from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import timeutils LOG = logging.getLogger(__name__) class LoopingCallDone(Exception): """Exception to break out and stop a LoopingCall. The poll-function passed to LoopingCall can raise this exception to break out of the loop normally. This is somewhat analogous to StopIteration. An optional return-value can be included as the argument to the exception; this return-value will be returned by LoopingCall.wait() """ def __init__(self, retvalue=True): """:param retvalue: Value that LoopingCall.wait() should return.""" self.retvalue = retvalue class LoopingCallBase(object): def __init__(self, f=None, *args, **kw): self.args = args self.kw = kw self.f = f self._running = False self.done = None def stop(self): self._running = False def wait(self): return self.done.wait() class FixedIntervalLoopingCall(LoopingCallBase): """A fixed interval looping call.""" def start(self, interval, initial_delay=None): self._running = True done = event.Event() def _inner(): if initial_delay: greenthread.sleep(initial_delay) try: while self._running: start = timeutils.utcnow() self.f(*self.args, **self.kw) end = timeutils.utcnow() if not self._running: break delay = interval - timeutils.delta_seconds(start, end) if delay <= 0: LOG.warn(_('task run outlasted interval by %s sec') % -delay) greenthread.sleep(delay if delay > 0 else 0) except LoopingCallDone as e: self.stop() done.send(e.retvalue) except Exception: LOG.exception(_('in fixed duration looping call')) done.send_exception(*sys.exc_info()) return else: done.send(True) self.done = done greenthread.spawn_n(_inner) return self.done # TODO(mikal): this class name is deprecated in Havana and should be removed # in the I release LoopingCall = FixedIntervalLoopingCall class DynamicLoopingCall(LoopingCallBase): """A looping call which sleeps until the next known event. The function called should return how long to sleep for before being called again. """ def start(self, initial_delay=None, periodic_interval_max=None): self._running = True done = event.Event() def _inner(): if initial_delay: greenthread.sleep(initial_delay) try: while self._running: idle = self.f(*self.args, **self.kw) if not self._running: break if periodic_interval_max is not None: idle = min(idle, periodic_interval_max) LOG.debug(_('Dynamic looping call sleeping for %.02f ' 'seconds'), idle) greenthread.sleep(idle) except LoopingCallDone as e: self.stop() done.send(e.retvalue) except Exception: LOG.exception(_('in dynamic looping call')) done.send_exception(*sys.exc_info()) return else: done.send(True) self.done = done greenthread.spawn(_inner) return self.done nova-2014.1/nova/openstack/common/README0000664000175400017540000000072312323721477021016 0ustar jenkinsjenkins00000000000000openstack-common ---------------- A number of modules from openstack-common are imported into this project. These modules are "incubating" in openstack-common and are kept in sync with the help of openstack-common's update.py script. See: https://wiki.openstack.org/wiki/Oslo#Syncing_Code_from_Incubator The copy of the code should never be directly modified here. Please always update openstack-common first and then run the script to copy the changes across. nova-2014.1/nova/openstack/common/config/0000775000175400017540000000000012323722546021377 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/config/generator.py0000664000175400017540000002424012323721510023727 0ustar jenkinsjenkins00000000000000# Copyright 2012 SINA Corporation # Copyright 2014 Cisco Systems, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # """Extracts OpenStack config option info from module(s).""" from __future__ import print_function import argparse import imp import os import re import socket import sys import textwrap from oslo.config import cfg import six import stevedore.named from nova.openstack.common import gettextutils from nova.openstack.common import importutils gettextutils.install('nova') STROPT = "StrOpt" BOOLOPT = "BoolOpt" INTOPT = "IntOpt" FLOATOPT = "FloatOpt" LISTOPT = "ListOpt" DICTOPT = "DictOpt" MULTISTROPT = "MultiStrOpt" OPT_TYPES = { STROPT: 'string value', BOOLOPT: 'boolean value', INTOPT: 'integer value', FLOATOPT: 'floating point value', LISTOPT: 'list value', DICTOPT: 'dict value', MULTISTROPT: 'multi valued', } OPTION_REGEX = re.compile(r"(%s)" % "|".join([STROPT, BOOLOPT, INTOPT, FLOATOPT, LISTOPT, DICTOPT, MULTISTROPT])) PY_EXT = ".py" BASEDIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../../")) WORDWRAP_WIDTH = 60 def generate(argv): parser = argparse.ArgumentParser( description='generate sample configuration file', ) parser.add_argument('-m', dest='modules', action='append') parser.add_argument('-l', dest='libraries', action='append') parser.add_argument('srcfiles', nargs='*') parsed_args = parser.parse_args(argv) mods_by_pkg = dict() for filepath in parsed_args.srcfiles: pkg_name = filepath.split(os.sep)[1] mod_str = '.'.join(['.'.join(filepath.split(os.sep)[:-1]), os.path.basename(filepath).split('.')[0]]) mods_by_pkg.setdefault(pkg_name, list()).append(mod_str) # NOTE(lzyeval): place top level modules before packages pkg_names = sorted(pkg for pkg in mods_by_pkg if pkg.endswith(PY_EXT)) ext_names = sorted(pkg for pkg in mods_by_pkg if pkg not in pkg_names) pkg_names.extend(ext_names) # opts_by_group is a mapping of group name to an options list # The options list is a list of (module, options) tuples opts_by_group = {'DEFAULT': []} if parsed_args.modules: for module_name in parsed_args.modules: module = _import_module(module_name) if module: for group, opts in _list_opts(module): opts_by_group.setdefault(group, []).append((module_name, opts)) # Look for entry points defined in libraries (or applications) for # option discovery, and include their return values in the output. # # Each entry point should be a function returning an iterable # of pairs with the group name (or None for the default group) # and the list of Opt instances for that group. if parsed_args.libraries: loader = stevedore.named.NamedExtensionManager( 'oslo.config.opts', names=list(set(parsed_args.libraries)), invoke_on_load=False, ) for ext in loader: for group, opts in ext.plugin(): opt_list = opts_by_group.setdefault(group or 'DEFAULT', []) opt_list.append((ext.name, opts)) for pkg_name in pkg_names: mods = mods_by_pkg.get(pkg_name) mods.sort() for mod_str in mods: if mod_str.endswith('.__init__'): mod_str = mod_str[:mod_str.rfind(".")] mod_obj = _import_module(mod_str) if not mod_obj: raise RuntimeError("Unable to import module %s" % mod_str) for group, opts in _list_opts(mod_obj): opts_by_group.setdefault(group, []).append((mod_str, opts)) print_group_opts('DEFAULT', opts_by_group.pop('DEFAULT', [])) for group in sorted(opts_by_group.keys()): print_group_opts(group, opts_by_group[group]) def _import_module(mod_str): try: if mod_str.startswith('bin.'): imp.load_source(mod_str[4:], os.path.join('bin', mod_str[4:])) return sys.modules[mod_str[4:]] else: return importutils.import_module(mod_str) except Exception as e: sys.stderr.write("Error importing module %s: %s\n" % (mod_str, str(e))) return None def _is_in_group(opt, group): "Check if opt is in group." for value in group._opts.values(): # NOTE(llu): Temporary workaround for bug #1262148, wait until # newly released oslo.config support '==' operator. if not(value['opt'] != opt): return True return False def _guess_groups(opt, mod_obj): # is it in the DEFAULT group? if _is_in_group(opt, cfg.CONF): return 'DEFAULT' # what other groups is it in? for value in cfg.CONF.values(): if isinstance(value, cfg.CONF.GroupAttr): if _is_in_group(opt, value._group): return value._group.name raise RuntimeError( "Unable to find group for option %s, " "maybe it's defined twice in the same group?" % opt.name ) def _list_opts(obj): def is_opt(o): return (isinstance(o, cfg.Opt) and not isinstance(o, cfg.SubCommandOpt)) opts = list() for attr_str in dir(obj): attr_obj = getattr(obj, attr_str) if is_opt(attr_obj): opts.append(attr_obj) elif (isinstance(attr_obj, list) and all(map(lambda x: is_opt(x), attr_obj))): opts.extend(attr_obj) ret = {} for opt in opts: ret.setdefault(_guess_groups(opt, obj), []).append(opt) return ret.items() def print_group_opts(group, opts_by_module): print("[%s]" % group) print('') for mod, opts in opts_by_module: print('#') print('# Options defined in %s' % mod) print('#') print('') for opt in opts: _print_opt(opt) print('') def _get_my_ip(): try: csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) csock.connect(('8.8.8.8', 80)) (addr, port) = csock.getsockname() csock.close() return addr except socket.error: return None def _sanitize_default(name, value): """Set up a reasonably sensible default for pybasedir, my_ip and host.""" if value.startswith(sys.prefix): # NOTE(jd) Don't use os.path.join, because it is likely to think the # second part is an absolute pathname and therefore drop the first # part. value = os.path.normpath("/usr/" + value[len(sys.prefix):]) elif value.startswith(BASEDIR): return value.replace(BASEDIR, '/usr/lib/python/site-packages') elif BASEDIR in value: return value.replace(BASEDIR, '') elif value == _get_my_ip(): return '10.0.0.1' elif value in (socket.gethostname(), socket.getfqdn()) and 'host' in name: return 'nova' elif value.strip() != value: return '"%s"' % value return value def _print_opt(opt): opt_name, opt_default, opt_help = opt.dest, opt.default, opt.help if not opt_help: sys.stderr.write('WARNING: "%s" is missing help string.\n' % opt_name) opt_help = "" opt_type = None try: opt_type = OPTION_REGEX.search(str(type(opt))).group(0) except (ValueError, AttributeError) as err: sys.stderr.write("%s\n" % str(err)) sys.exit(1) opt_help = u'%s (%s)' % (opt_help, OPT_TYPES[opt_type]) print('#', "\n# ".join(textwrap.wrap(opt_help, WORDWRAP_WIDTH))) if opt.deprecated_opts: for deprecated_opt in opt.deprecated_opts: if deprecated_opt.name: deprecated_group = (deprecated_opt.group if deprecated_opt.group else "DEFAULT") print('# Deprecated group/name - [%s]/%s' % (deprecated_group, deprecated_opt.name)) try: if opt_default is None: print('#%s=' % opt_name) elif opt_type == STROPT: assert(isinstance(opt_default, six.string_types)) print('#%s=%s' % (opt_name, _sanitize_default(opt_name, opt_default))) elif opt_type == BOOLOPT: assert(isinstance(opt_default, bool)) print('#%s=%s' % (opt_name, str(opt_default).lower())) elif opt_type == INTOPT: assert(isinstance(opt_default, int) and not isinstance(opt_default, bool)) print('#%s=%s' % (opt_name, opt_default)) elif opt_type == FLOATOPT: assert(isinstance(opt_default, float)) print('#%s=%s' % (opt_name, opt_default)) elif opt_type == LISTOPT: assert(isinstance(opt_default, list)) print('#%s=%s' % (opt_name, ','.join(opt_default))) elif opt_type == DICTOPT: assert(isinstance(opt_default, dict)) opt_default_strlist = [str(key) + ':' + str(value) for (key, value) in opt_default.items()] print('#%s=%s' % (opt_name, ','.join(opt_default_strlist))) elif opt_type == MULTISTROPT: assert(isinstance(opt_default, list)) if not opt_default: opt_default = [''] for default in opt_default: print('#%s=%s' % (opt_name, default)) print('') except Exception: sys.stderr.write('Error in option "%s"\n' % opt_name) sys.exit(1) def main(): generate(sys.argv[1:]) if __name__ == '__main__': main() nova-2014.1/nova/openstack/common/config/__init__.py0000664000175400017540000000000012323721477023500 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/middleware/0000775000175400017540000000000012323722546022247 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/middleware/base.py0000664000175400017540000000347612323721477023547 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Base class(es) for WSGI Middleware.""" import webob.dec class Middleware(object): """Base WSGI middleware wrapper. These classes require an application to be initialized that will be called next. By default the middleware will simply call its wrapped app, or you can override __call__ to customize its behavior. """ @classmethod def factory(cls, global_conf, **local_conf): """Factory method for paste.deploy.""" return cls def __init__(self, application): self.application = application def process_request(self, req): """Called on each request. If this returns None, the next application down the stack will be executed. If it returns a response then that response will be returned and execution will stop here. """ return None def process_response(self, response): """Do whatever you'd like to the response.""" return response @webob.dec.wsgify def __call__(self, req): response = self.process_request(req) if response: return response response = req.get_response(self.application) return self.process_response(response) nova-2014.1/nova/openstack/common/middleware/request_id.py0000664000175400017540000000245612323721510024762 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 NEC Corporation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Middleware that ensures request ID. It ensures to assign request ID for each API request and set it to request environment. The request ID is also added to API response. """ from nova.openstack.common import context from nova.openstack.common.middleware import base ENV_REQUEST_ID = 'openstack.request_id' HTTP_RESP_HEADER_REQUEST_ID = 'x-openstack-request-id' class RequestIdMiddleware(base.Middleware): def process_request(self, req): self.req_id = context.generate_request_id() req.environ[ENV_REQUEST_ID] = self.req_id def process_response(self, response): response.headers.add(HTTP_RESP_HEADER_REQUEST_ID, self.req_id) return response nova-2014.1/nova/openstack/common/middleware/__init__.py0000664000175400017540000000000012323721477024350 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/sslutils.py0000664000175400017540000000543212323721477022374 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os import ssl from oslo.config import cfg from nova.openstack.common.gettextutils import _ ssl_opts = [ cfg.StrOpt('ca_file', default=None, help="CA certificate file to use to verify " "connecting clients."), cfg.StrOpt('cert_file', default=None, help="Certificate file to use when starting " "the server securely."), cfg.StrOpt('key_file', default=None, help="Private key file to use when starting " "the server securely."), ] CONF = cfg.CONF CONF.register_opts(ssl_opts, "ssl") def is_enabled(): cert_file = CONF.ssl.cert_file key_file = CONF.ssl.key_file ca_file = CONF.ssl.ca_file use_ssl = cert_file or key_file if cert_file and not os.path.exists(cert_file): raise RuntimeError(_("Unable to find cert_file : %s") % cert_file) if ca_file and not os.path.exists(ca_file): raise RuntimeError(_("Unable to find ca_file : %s") % ca_file) if key_file and not os.path.exists(key_file): raise RuntimeError(_("Unable to find key_file : %s") % key_file) if use_ssl and (not cert_file or not key_file): raise RuntimeError(_("When running server in SSL mode, you must " "specify both a cert_file and key_file " "option value in your configuration file")) return use_ssl def wrap(sock): ssl_kwargs = { 'server_side': True, 'certfile': CONF.ssl.cert_file, 'keyfile': CONF.ssl.key_file, 'cert_reqs': ssl.CERT_NONE, } if CONF.ssl.ca_file: ssl_kwargs['ca_certs'] = CONF.ssl.ca_file ssl_kwargs['cert_reqs'] = ssl.CERT_REQUIRED return ssl.wrap_socket(sock, **ssl_kwargs) _SSL_PROTOCOLS = { "tlsv1": ssl.PROTOCOL_TLSv1, "sslv23": ssl.PROTOCOL_SSLv23, "sslv3": ssl.PROTOCOL_SSLv3 } try: _SSL_PROTOCOLS["sslv2"] = ssl.PROTOCOL_SSLv2 except AttributeError: pass def validate_ssl_version(version): key = version.lower() try: return _SSL_PROTOCOLS[key] except KeyError: raise RuntimeError(_("Invalid SSL version : %s") % version) nova-2014.1/nova/openstack/common/timeutils.py0000664000175400017540000001424212323721510022514 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Time related utilities and helper functions. """ import calendar import datetime import time import iso8601 import six # ISO 8601 extended time format with microseconds _ISO8601_TIME_FORMAT_SUBSECOND = '%Y-%m-%dT%H:%M:%S.%f' _ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S' PERFECT_TIME_FORMAT = _ISO8601_TIME_FORMAT_SUBSECOND def isotime(at=None, subsecond=False): """Stringify time in ISO 8601 format.""" if not at: at = utcnow() st = at.strftime(_ISO8601_TIME_FORMAT if not subsecond else _ISO8601_TIME_FORMAT_SUBSECOND) tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC' st += ('Z' if tz == 'UTC' else tz) return st def parse_isotime(timestr): """Parse time from ISO 8601 format.""" try: return iso8601.parse_date(timestr) except iso8601.ParseError as e: raise ValueError(six.text_type(e)) except TypeError as e: raise ValueError(six.text_type(e)) def strtime(at=None, fmt=PERFECT_TIME_FORMAT): """Returns formatted utcnow.""" if not at: at = utcnow() return at.strftime(fmt) def parse_strtime(timestr, fmt=PERFECT_TIME_FORMAT): """Turn a formatted time back into a datetime.""" return datetime.datetime.strptime(timestr, fmt) def normalize_time(timestamp): """Normalize time in arbitrary timezone to UTC naive object.""" offset = timestamp.utcoffset() if offset is None: return timestamp return timestamp.replace(tzinfo=None) - offset def is_older_than(before, seconds): """Return True if before is older than seconds.""" if isinstance(before, six.string_types): before = parse_strtime(before).replace(tzinfo=None) else: before = before.replace(tzinfo=None) return utcnow() - before > datetime.timedelta(seconds=seconds) def is_newer_than(after, seconds): """Return True if after is newer than seconds.""" if isinstance(after, six.string_types): after = parse_strtime(after).replace(tzinfo=None) else: after = after.replace(tzinfo=None) return after - utcnow() > datetime.timedelta(seconds=seconds) def utcnow_ts(): """Timestamp version of our utcnow function.""" if utcnow.override_time is None: # NOTE(kgriffs): This is several times faster # than going through calendar.timegm(...) return int(time.time()) return calendar.timegm(utcnow().timetuple()) def utcnow(): """Overridable version of utils.utcnow.""" if utcnow.override_time: try: return utcnow.override_time.pop(0) except AttributeError: return utcnow.override_time return datetime.datetime.utcnow() def iso8601_from_timestamp(timestamp): """Returns a iso8601 formated date from timestamp.""" return isotime(datetime.datetime.utcfromtimestamp(timestamp)) utcnow.override_time = None def set_time_override(override_time=None): """Overrides utils.utcnow. Make it return a constant time or a list thereof, one at a time. :param override_time: datetime instance or list thereof. If not given, defaults to the current UTC time. """ utcnow.override_time = override_time or datetime.datetime.utcnow() def advance_time_delta(timedelta): """Advance overridden time using a datetime.timedelta.""" assert(not utcnow.override_time is None) try: for dt in utcnow.override_time: dt += timedelta except TypeError: utcnow.override_time += timedelta def advance_time_seconds(seconds): """Advance overridden time by seconds.""" advance_time_delta(datetime.timedelta(0, seconds)) def clear_time_override(): """Remove the overridden time.""" utcnow.override_time = None def marshall_now(now=None): """Make an rpc-safe datetime with microseconds. Note: tzinfo is stripped, but not required for relative times. """ if not now: now = utcnow() return dict(day=now.day, month=now.month, year=now.year, hour=now.hour, minute=now.minute, second=now.second, microsecond=now.microsecond) def unmarshall_time(tyme): """Unmarshall a datetime dict.""" return datetime.datetime(day=tyme['day'], month=tyme['month'], year=tyme['year'], hour=tyme['hour'], minute=tyme['minute'], second=tyme['second'], microsecond=tyme['microsecond']) def delta_seconds(before, after): """Return the difference between two timing objects. Compute the difference in seconds between two date, time, or datetime objects (as a float, to microsecond resolution). """ delta = after - before return total_seconds(delta) def total_seconds(delta): """Return the total seconds of datetime.timedelta object. Compute total seconds of datetime.timedelta, datetime.timedelta doesn't have method total_seconds in Python2.6, calculate it manually. """ try: return delta.total_seconds() except AttributeError: return ((delta.days * 24 * 3600) + delta.seconds + float(delta.microseconds) / (10 ** 6)) def is_soon(dt, window): """Determines if time is going to happen in the next window seconds. :params dt: the time :params window: minimum seconds to remain to consider the time not soon :return: True if expiration is within the given duration """ soon = (utcnow() + datetime.timedelta(seconds=window)) return normalize_time(dt) <= soon nova-2014.1/nova/openstack/common/policy.py0000664000175400017540000005213612323721477022014 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2012 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Common Policy Engine Implementation Policies can be expressed in one of two forms: A list of lists, or a string written in the new policy language. In the list-of-lists representation, each check inside the innermost list is combined as with an "and" conjunction--for that check to pass, all the specified checks must pass. These innermost lists are then combined as with an "or" conjunction. This is the original way of expressing policies, but there now exists a new way: the policy language. In the policy language, each check is specified the same way as in the list-of-lists representation: a simple "a:b" pair that is matched to the correct code to perform that check. However, conjunction operators are available, allowing for more expressiveness in crafting policies. As an example, take the following rule, expressed in the list-of-lists representation:: [["role:admin"], ["project_id:%(project_id)s", "role:projectadmin"]] In the policy language, this becomes:: role:admin or (project_id:%(project_id)s and role:projectadmin) The policy language also has the "not" operator, allowing a richer policy rule:: project_id:%(project_id)s and not role:dunce Finally, two special policy checks should be mentioned; the policy check "@" will always accept an access, and the policy check "!" will always reject an access. (Note that if a rule is either the empty list ("[]") or the empty string, this is equivalent to the "@" policy check.) Of these, the "!" policy check is probably the most useful, as it allows particular rules to be explicitly disabled. """ import abc import re import urllib import urllib2 from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) _rules = None _checks = {} class Rules(dict): """ A store for rules. Handles the default_rule setting directly. """ @classmethod def load_json(cls, data, default_rule=None): """ Allow loading of JSON rule data. """ # Suck in the JSON data and parse the rules rules = dict((k, parse_rule(v)) for k, v in jsonutils.loads(data).items()) return cls(rules, default_rule) def __init__(self, rules=None, default_rule=None): """Initialize the Rules store.""" super(Rules, self).__init__(rules or {}) self.default_rule = default_rule def __missing__(self, key): """Implements the default rule handling.""" # If the default rule isn't actually defined, do something # reasonably intelligent if not self.default_rule or self.default_rule not in self: raise KeyError(key) return self[self.default_rule] def __str__(self): """Dumps a string representation of the rules.""" # Start by building the canonical strings for the rules out_rules = {} for key, value in self.items(): # Use empty string for singleton TrueCheck instances if isinstance(value, TrueCheck): out_rules[key] = '' else: out_rules[key] = str(value) # Dump a pretty-printed JSON representation return jsonutils.dumps(out_rules, indent=4) # Really have to figure out a way to deprecate this def set_rules(rules): """Set the rules in use for policy checks.""" global _rules _rules = rules # Ditto def reset(): """Clear the rules used for policy checks.""" global _rules _rules = None def check(rule, target, creds, exc=None, *args, **kwargs): """ Checks authorization of a rule against the target and credentials. :param rule: The rule to evaluate. :param target: As much information about the object being operated on as possible, as a dictionary. :param creds: As much information about the user performing the action as possible, as a dictionary. :param exc: Class of the exception to raise if the check fails. Any remaining arguments passed to check() (both positional and keyword arguments) will be passed to the exception class. If exc is not provided, returns False. :return: Returns False if the policy does not allow the action and exc is not provided; otherwise, returns a value that evaluates to True. Note: for rules using the "case" expression, this True value will be the specified string from the expression. """ # Allow the rule to be a Check tree if isinstance(rule, BaseCheck): result = rule(target, creds) elif not _rules: # No rules to reference means we're going to fail closed result = False else: try: # Evaluate the rule result = _rules[rule](target, creds) except KeyError: # If the rule doesn't exist, fail closed result = False # If it is False, raise the exception if requested if exc and result is False: raise exc(*args, **kwargs) return result class BaseCheck(object): """ Abstract base class for Check classes. """ __metaclass__ = abc.ABCMeta @abc.abstractmethod def __str__(self): """ Retrieve a string representation of the Check tree rooted at this node. """ pass @abc.abstractmethod def __call__(self, target, cred): """ Perform the check. Returns False to reject the access or a true value (not necessary True) to accept the access. """ pass class FalseCheck(BaseCheck): """ A policy check that always returns False (disallow). """ def __str__(self): """Return a string representation of this check.""" return "!" def __call__(self, target, cred): """Check the policy.""" return False class TrueCheck(BaseCheck): """ A policy check that always returns True (allow). """ def __str__(self): """Return a string representation of this check.""" return "@" def __call__(self, target, cred): """Check the policy.""" return True class Check(BaseCheck): """ A base class to allow for user-defined policy checks. """ def __init__(self, kind, match): """ :param kind: The kind of the check, i.e., the field before the ':'. :param match: The match of the check, i.e., the field after the ':'. """ self.kind = kind self.match = match def __str__(self): """Return a string representation of this check.""" return "%s:%s" % (self.kind, self.match) class NotCheck(BaseCheck): """ A policy check that inverts the result of another policy check. Implements the "not" operator. """ def __init__(self, rule): """ Initialize the 'not' check. :param rule: The rule to negate. Must be a Check. """ self.rule = rule def __str__(self): """Return a string representation of this check.""" return "not %s" % self.rule def __call__(self, target, cred): """ Check the policy. Returns the logical inverse of the wrapped check. """ return not self.rule(target, cred) class AndCheck(BaseCheck): """ A policy check that requires that a list of other checks all return True. Implements the "and" operator. """ def __init__(self, rules): """ Initialize the 'and' check. :param rules: A list of rules that will be tested. """ self.rules = rules def __str__(self): """Return a string representation of this check.""" return "(%s)" % ' and '.join(str(r) for r in self.rules) def __call__(self, target, cred): """ Check the policy. Requires that all rules accept in order to return True. """ for rule in self.rules: if not rule(target, cred): return False return True def add_check(self, rule): """ Allows addition of another rule to the list of rules that will be tested. Returns the AndCheck object for convenience. """ self.rules.append(rule) return self class OrCheck(BaseCheck): """ A policy check that requires that at least one of a list of other checks returns True. Implements the "or" operator. """ def __init__(self, rules): """ Initialize the 'or' check. :param rules: A list of rules that will be tested. """ self.rules = rules def __str__(self): """Return a string representation of this check.""" return "(%s)" % ' or '.join(str(r) for r in self.rules) def __call__(self, target, cred): """ Check the policy. Requires that at least one rule accept in order to return True. """ for rule in self.rules: if rule(target, cred): return True return False def add_check(self, rule): """ Allows addition of another rule to the list of rules that will be tested. Returns the OrCheck object for convenience. """ self.rules.append(rule) return self def _parse_check(rule): """ Parse a single base check rule into an appropriate Check object. """ # Handle the special checks if rule == '!': return FalseCheck() elif rule == '@': return TrueCheck() try: kind, match = rule.split(':', 1) except Exception: LOG.exception(_("Failed to understand rule %(rule)s") % locals()) # If the rule is invalid, we'll fail closed return FalseCheck() # Find what implements the check if kind in _checks: return _checks[kind](kind, match) elif None in _checks: return _checks[None](kind, match) else: LOG.error(_("No handler for matches of kind %s") % kind) return FalseCheck() def _parse_list_rule(rule): """ Provided for backwards compatibility. Translates the old list-of-lists syntax into a tree of Check objects. """ # Empty rule defaults to True if not rule: return TrueCheck() # Outer list is joined by "or"; inner list by "and" or_list = [] for inner_rule in rule: # Elide empty inner lists if not inner_rule: continue # Handle bare strings if isinstance(inner_rule, basestring): inner_rule = [inner_rule] # Parse the inner rules into Check objects and_list = [_parse_check(r) for r in inner_rule] # Append the appropriate check to the or_list if len(and_list) == 1: or_list.append(and_list[0]) else: or_list.append(AndCheck(and_list)) # If we have only one check, omit the "or" if len(or_list) == 0: return FalseCheck() elif len(or_list) == 1: return or_list[0] return OrCheck(or_list) # Used for tokenizing the policy language _tokenize_re = re.compile(r'\s+') def _parse_tokenize(rule): """ Tokenizer for the policy language. Most of the single-character tokens are specified in the _tokenize_re; however, parentheses need to be handled specially, because they can appear inside a check string. Thankfully, those parentheses that appear inside a check string can never occur at the very beginning or end ("%(variable)s" is the correct syntax). """ for tok in _tokenize_re.split(rule): # Skip empty tokens if not tok or tok.isspace(): continue # Handle leading parens on the token clean = tok.lstrip('(') for i in range(len(tok) - len(clean)): yield '(', '(' # If it was only parentheses, continue if not clean: continue else: tok = clean # Handle trailing parens on the token clean = tok.rstrip(')') trail = len(tok) - len(clean) # Yield the cleaned token lowered = clean.lower() if lowered in ('and', 'or', 'not'): # Special tokens yield lowered, clean elif clean: # Not a special token, but not composed solely of ')' if len(tok) >= 2 and ((tok[0], tok[-1]) in [('"', '"'), ("'", "'")]): # It's a quoted string yield 'string', tok[1:-1] else: yield 'check', _parse_check(clean) # Yield the trailing parens for i in range(trail): yield ')', ')' class ParseStateMeta(type): """ Metaclass for the ParseState class. Facilitates identifying reduction methods. """ def __new__(mcs, name, bases, cls_dict): """ Create the class. Injects the 'reducers' list, a list of tuples matching token sequences to the names of the corresponding reduction methods. """ reducers = [] for key, value in cls_dict.items(): if not hasattr(value, 'reducers'): continue for reduction in value.reducers: reducers.append((reduction, key)) cls_dict['reducers'] = reducers return super(ParseStateMeta, mcs).__new__(mcs, name, bases, cls_dict) def reducer(*tokens): """ Decorator for reduction methods. Arguments are a sequence of tokens, in order, which should trigger running this reduction method. """ def decorator(func): # Make sure we have a list of reducer sequences if not hasattr(func, 'reducers'): func.reducers = [] # Add the tokens to the list of reducer sequences func.reducers.append(list(tokens)) return func return decorator class ParseState(object): """ Implement the core of parsing the policy language. Uses a greedy reduction algorithm to reduce a sequence of tokens into a single terminal, the value of which will be the root of the Check tree. Note: error reporting is rather lacking. The best we can get with this parser formulation is an overall "parse failed" error. Fortunately, the policy language is simple enough that this shouldn't be that big a problem. """ __metaclass__ = ParseStateMeta def __init__(self): """Initialize the ParseState.""" self.tokens = [] self.values = [] def reduce(self): """ Perform a greedy reduction of the token stream. If a reducer method matches, it will be executed, then the reduce() method will be called recursively to search for any more possible reductions. """ for reduction, methname in self.reducers: if (len(self.tokens) >= len(reduction) and self.tokens[-len(reduction):] == reduction): # Get the reduction method meth = getattr(self, methname) # Reduce the token stream results = meth(*self.values[-len(reduction):]) # Update the tokens and values self.tokens[-len(reduction):] = [r[0] for r in results] self.values[-len(reduction):] = [r[1] for r in results] # Check for any more reductions return self.reduce() def shift(self, tok, value): """Adds one more token to the state. Calls reduce().""" self.tokens.append(tok) self.values.append(value) # Do a greedy reduce... self.reduce() @property def result(self): """ Obtain the final result of the parse. Raises ValueError if the parse failed to reduce to a single result. """ if len(self.values) != 1: raise ValueError("Could not parse rule") return self.values[0] @reducer('(', 'check', ')') @reducer('(', 'and_expr', ')') @reducer('(', 'or_expr', ')') def _wrap_check(self, _p1, check, _p2): """Turn parenthesized expressions into a 'check' token.""" return [('check', check)] @reducer('check', 'and', 'check') def _make_and_expr(self, check1, _and, check2): """ Create an 'and_expr' from two checks joined by the 'and' operator. """ return [('and_expr', AndCheck([check1, check2]))] @reducer('and_expr', 'and', 'check') def _extend_and_expr(self, and_expr, _and, check): """ Extend an 'and_expr' by adding one more check. """ return [('and_expr', and_expr.add_check(check))] @reducer('check', 'or', 'check') def _make_or_expr(self, check1, _or, check2): """ Create an 'or_expr' from two checks joined by the 'or' operator. """ return [('or_expr', OrCheck([check1, check2]))] @reducer('or_expr', 'or', 'check') def _extend_or_expr(self, or_expr, _or, check): """ Extend an 'or_expr' by adding one more check. """ return [('or_expr', or_expr.add_check(check))] @reducer('not', 'check') def _make_not_expr(self, _not, check): """Invert the result of another check.""" return [('check', NotCheck(check))] def _parse_text_rule(rule): """ Translates a policy written in the policy language into a tree of Check objects. """ # Empty rule means always accept if not rule: return TrueCheck() # Parse the token stream state = ParseState() for tok, value in _parse_tokenize(rule): state.shift(tok, value) try: return state.result except ValueError: # Couldn't parse the rule LOG.exception(_("Failed to understand rule %(rule)r") % locals()) # Fail closed return FalseCheck() def parse_rule(rule): """ Parses a policy rule into a tree of Check objects. """ # If the rule is a string, it's in the policy language if isinstance(rule, basestring): return _parse_text_rule(rule) return _parse_list_rule(rule) def register(name, func=None): """ Register a function or Check class as a policy check. :param name: Gives the name of the check type, e.g., 'rule', 'role', etc. If name is None, a default check type will be registered. :param func: If given, provides the function or class to register. If not given, returns a function taking one argument to specify the function or class to register, allowing use as a decorator. """ # Perform the actual decoration by registering the function or # class. Returns the function or class for compliance with the # decorator interface. def decorator(func): _checks[name] = func return func # If the function or class is given, do the registration if func: return decorator(func) return decorator @register("rule") class RuleCheck(Check): def __call__(self, target, creds): """ Recursively checks credentials based on the defined rules. """ try: return _rules[self.match](target, creds) except KeyError: # We don't have any matching rule; fail closed return False @register("role") class RoleCheck(Check): def __call__(self, target, creds): """Check that there is a matching role in the cred dict.""" return self.match.lower() in [x.lower() for x in creds['roles']] @register('http') class HttpCheck(Check): def __call__(self, target, creds): """ Check http: rules by calling to a remote server. This example implementation simply verifies that the response is exactly 'True'. """ url = ('http:' + self.match) % target data = {'target': jsonutils.dumps(target), 'credentials': jsonutils.dumps(creds)} post_data = urllib.urlencode(data) f = urllib2.urlopen(url, post_data) return f.read() == "True" @register(None) class GenericCheck(Check): def __call__(self, target, creds): """ Check an individual match. Matches look like: tenant:%(tenant_id)s role:compute:admin """ # TODO(termie): do dict inspection via dot syntax match = self.match % target if self.kind in creds: return match == unicode(creds[self.kind]) return False nova-2014.1/nova/openstack/common/processutils.py0000664000175400017540000002371612323721510023242 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ System-level utilities and helper functions. """ import errno import logging as stdlib_logging import os import random import shlex import signal from eventlet.green import subprocess from eventlet import greenthread import six from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging LOG = logging.getLogger(__name__) class InvalidArgumentError(Exception): def __init__(self, message=None): super(InvalidArgumentError, self).__init__(message) class UnknownArgumentError(Exception): def __init__(self, message=None): super(UnknownArgumentError, self).__init__(message) class ProcessExecutionError(Exception): def __init__(self, stdout=None, stderr=None, exit_code=None, cmd=None, description=None): self.exit_code = exit_code self.stderr = stderr self.stdout = stdout self.cmd = cmd self.description = description if description is None: description = _("Unexpected error while running command.") if exit_code is None: exit_code = '-' message = _('%(description)s\n' 'Command: %(cmd)s\n' 'Exit code: %(exit_code)s\n' 'Stdout: %(stdout)r\n' 'Stderr: %(stderr)r') % {'description': description, 'cmd': cmd, 'exit_code': exit_code, 'stdout': stdout, 'stderr': stderr} super(ProcessExecutionError, self).__init__(message) class NoRootWrapSpecified(Exception): def __init__(self, message=None): super(NoRootWrapSpecified, self).__init__(message) def _subprocess_setup(): # Python installs a SIGPIPE handler by default. This is usually not what # non-Python subprocesses expect. signal.signal(signal.SIGPIPE, signal.SIG_DFL) def execute(*cmd, **kwargs): """Helper method to shell out and execute a command through subprocess. Allows optional retry. :param cmd: Passed to subprocess.Popen. :type cmd: string :param process_input: Send to opened process. :type process_input: string :param check_exit_code: Single bool, int, or list of allowed exit codes. Defaults to [0]. Raise :class:`ProcessExecutionError` unless program exits with one of these code. :type check_exit_code: boolean, int, or [int] :param delay_on_retry: True | False. Defaults to True. If set to True, wait a short amount of time before retrying. :type delay_on_retry: boolean :param attempts: How many times to retry cmd. :type attempts: int :param run_as_root: True | False. Defaults to False. If set to True, the command is prefixed by the command specified in the root_helper kwarg. :type run_as_root: boolean :param root_helper: command to prefix to commands called with run_as_root=True :type root_helper: string :param shell: whether or not there should be a shell used to execute this command. Defaults to false. :type shell: boolean :param loglevel: log level for execute commands. :type loglevel: int. (Should be stdlib_logging.DEBUG or stdlib_logging.INFO) :returns: (stdout, stderr) from process execution :raises: :class:`UnknownArgumentError` on receiving unknown arguments :raises: :class:`ProcessExecutionError` """ process_input = kwargs.pop('process_input', None) check_exit_code = kwargs.pop('check_exit_code', [0]) ignore_exit_code = False delay_on_retry = kwargs.pop('delay_on_retry', True) attempts = kwargs.pop('attempts', 1) run_as_root = kwargs.pop('run_as_root', False) root_helper = kwargs.pop('root_helper', '') shell = kwargs.pop('shell', False) loglevel = kwargs.pop('loglevel', stdlib_logging.DEBUG) if isinstance(check_exit_code, bool): ignore_exit_code = not check_exit_code check_exit_code = [0] elif isinstance(check_exit_code, int): check_exit_code = [check_exit_code] if kwargs: raise UnknownArgumentError(_('Got unknown keyword args ' 'to utils.execute: %r') % kwargs) if run_as_root and hasattr(os, 'geteuid') and os.geteuid() != 0: if not root_helper: raise NoRootWrapSpecified( message=_('Command requested root, but did not ' 'specify a root helper.')) cmd = shlex.split(root_helper) + list(cmd) cmd = map(str, cmd) while attempts > 0: attempts -= 1 try: LOG.log(loglevel, _('Running cmd (subprocess): %s'), ' '.join(cmd)) _PIPE = subprocess.PIPE # pylint: disable=E1101 if os.name == 'nt': preexec_fn = None close_fds = False else: preexec_fn = _subprocess_setup close_fds = True obj = subprocess.Popen(cmd, stdin=_PIPE, stdout=_PIPE, stderr=_PIPE, close_fds=close_fds, preexec_fn=preexec_fn, shell=shell) result = None for _i in six.moves.range(20): # NOTE(russellb) 20 is an arbitrary number of retries to # prevent any chance of looping forever here. try: if process_input is not None: result = obj.communicate(process_input) else: result = obj.communicate() except OSError as e: if e.errno in (errno.EAGAIN, errno.EINTR): continue raise break obj.stdin.close() # pylint: disable=E1101 _returncode = obj.returncode # pylint: disable=E1101 LOG.log(loglevel, _('Result was %s') % _returncode) if not ignore_exit_code and _returncode not in check_exit_code: (stdout, stderr) = result raise ProcessExecutionError(exit_code=_returncode, stdout=stdout, stderr=stderr, cmd=' '.join(cmd)) return result except ProcessExecutionError: if not attempts: raise else: LOG.log(loglevel, _('%r failed. Retrying.'), cmd) if delay_on_retry: greenthread.sleep(random.randint(20, 200) / 100.0) finally: # NOTE(termie): this appears to be necessary to let the subprocess # call clean something up in between calls, without # it two execute calls in a row hangs the second one greenthread.sleep(0) def trycmd(*args, **kwargs): """A wrapper around execute() to more easily handle warnings and errors. Returns an (out, err) tuple of strings containing the output of the command's stdout and stderr. If 'err' is not empty then the command can be considered to have failed. :discard_warnings True | False. Defaults to False. If set to True, then for succeeding commands, stderr is cleared """ discard_warnings = kwargs.pop('discard_warnings', False) try: out, err = execute(*args, **kwargs) failed = False except ProcessExecutionError as exn: out, err = '', str(exn) failed = True if not failed and discard_warnings and err: # Handle commands that output to stderr but otherwise succeed err = '' return out, err def ssh_execute(ssh, cmd, process_input=None, addl_env=None, check_exit_code=True): LOG.debug(_('Running cmd (SSH): %s'), cmd) if addl_env: raise InvalidArgumentError(_('Environment not supported over SSH')) if process_input: # This is (probably) fixable if we need it... raise InvalidArgumentError(_('process_input not supported over SSH')) stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd) channel = stdout_stream.channel # NOTE(justinsb): This seems suspicious... # ...other SSH clients have buffering issues with this approach stdout = stdout_stream.read() stderr = stderr_stream.read() stdin_stream.close() exit_status = channel.recv_exit_status() # exit_status == -1 if no exit code was returned if exit_status != -1: LOG.debug(_('Result was %s') % exit_status) if check_exit_code and exit_status != 0: raise ProcessExecutionError(exit_code=exit_status, stdout=stdout, stderr=stderr, cmd=cmd) return (stdout, stderr) nova-2014.1/nova/openstack/common/jsonutils.py0000664000175400017540000001437012323721510022531 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. ''' JSON related utilities. This module provides a few things: 1) A handy function for getting an object down to something that can be JSON serialized. See to_primitive(). 2) Wrappers around loads() and dumps(). The dumps() wrapper will automatically use to_primitive() for you if needed. 3) This sets up anyjson to use the loads() and dumps() wrappers if anyjson is available. ''' import datetime import functools import inspect import itertools import json try: import xmlrpclib except ImportError: # NOTE(jd): xmlrpclib is not shipped with Python 3 xmlrpclib = None import six from nova.openstack.common import gettextutils from nova.openstack.common import importutils from nova.openstack.common import timeutils netaddr = importutils.try_import("netaddr") _nasty_type_tests = [inspect.ismodule, inspect.isclass, inspect.ismethod, inspect.isfunction, inspect.isgeneratorfunction, inspect.isgenerator, inspect.istraceback, inspect.isframe, inspect.iscode, inspect.isbuiltin, inspect.isroutine, inspect.isabstract] _simple_types = (six.string_types + six.integer_types + (type(None), bool, float)) def to_primitive(value, convert_instances=False, convert_datetime=True, level=0, max_depth=3): """Convert a complex object into primitives. Handy for JSON serialization. We can optionally handle instances, but since this is a recursive function, we could have cyclical data structures. To handle cyclical data structures we could track the actual objects visited in a set, but not all objects are hashable. Instead we just track the depth of the object inspections and don't go too deep. Therefore, convert_instances=True is lossy ... be aware. """ # handle obvious types first - order of basic types determined by running # full tests on nova project, resulting in the following counts: # 572754 # 460353 # 379632 # 274610 # 199918 # 114200 # 51817 # 26164 # 6491 # 283 # 19 if isinstance(value, _simple_types): return value if isinstance(value, datetime.datetime): if convert_datetime: return timeutils.strtime(value) else: return value # value of itertools.count doesn't get caught by nasty_type_tests # and results in infinite loop when list(value) is called. if type(value) == itertools.count: return six.text_type(value) # FIXME(vish): Workaround for LP bug 852095. Without this workaround, # tests that raise an exception in a mocked method that # has a @wrap_exception with a notifier will fail. If # we up the dependency to 0.5.4 (when it is released) we # can remove this workaround. if getattr(value, '__module__', None) == 'mox': return 'mock' if level > max_depth: return '?' # The try block may not be necessary after the class check above, # but just in case ... try: recursive = functools.partial(to_primitive, convert_instances=convert_instances, convert_datetime=convert_datetime, level=level, max_depth=max_depth) if isinstance(value, dict): return dict((k, recursive(v)) for k, v in six.iteritems(value)) elif isinstance(value, (list, tuple)): return [recursive(lv) for lv in value] # It's not clear why xmlrpclib created their own DateTime type, but # for our purposes, make it a datetime type which is explicitly # handled if xmlrpclib and isinstance(value, xmlrpclib.DateTime): value = datetime.datetime(*tuple(value.timetuple())[:6]) if convert_datetime and isinstance(value, datetime.datetime): return timeutils.strtime(value) elif isinstance(value, gettextutils.Message): return value.data elif hasattr(value, 'iteritems'): return recursive(dict(value.iteritems()), level=level + 1) elif hasattr(value, '__iter__'): return recursive(list(value)) elif convert_instances and hasattr(value, '__dict__'): # Likely an instance of something. Watch for cycles. # Ignore class member vars. return recursive(value.__dict__, level=level + 1) elif netaddr and isinstance(value, netaddr.IPAddress): return six.text_type(value) else: if any(test(value) for test in _nasty_type_tests): return six.text_type(value) return value except TypeError: # Class objects are tricky since they may define something like # __iter__ defined but it isn't callable as list(). return six.text_type(value) def dumps(value, default=to_primitive, **kwargs): return json.dumps(value, default=default, **kwargs) def loads(s): return json.loads(s) def load(s): return json.load(s) try: import anyjson except ImportError: pass else: anyjson._modules.append((__name__, 'dumps', TypeError, 'loads', ValueError, 'load')) anyjson.force_implementation(__name__) nova-2014.1/nova/openstack/common/gettextutils.py0000664000175400017540000004452412323721510023250 0ustar jenkinsjenkins00000000000000# Copyright 2012 Red Hat, Inc. # Copyright 2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ gettext for openstack-common modules. Usual usage in an openstack.common module: from nova.openstack.common.gettextutils import _ """ import copy import functools import gettext import locale from logging import handlers import os import re from babel import localedata import six _localedir = os.environ.get('nova'.upper() + '_LOCALEDIR') _t = gettext.translation('nova', localedir=_localedir, fallback=True) # We use separate translation catalogs for each log level, so set up a # mapping between the log level name and the translator. The domain # for the log level is project_name + "-log-" + log_level so messages # for each level end up in their own catalog. _t_log_levels = dict( (level, gettext.translation('nova' + '-log-' + level, localedir=_localedir, fallback=True)) for level in ['info', 'warning', 'error', 'critical'] ) _AVAILABLE_LANGUAGES = {} USE_LAZY = False def enable_lazy(): """Convenience function for configuring _() to use lazy gettext Call this at the start of execution to enable the gettextutils._ function to use lazy gettext functionality. This is useful if your project is importing _ directly instead of using the gettextutils.install() way of importing the _ function. """ global USE_LAZY USE_LAZY = True def _(msg): if USE_LAZY: return Message(msg, domain='nova') else: if six.PY3: return _t.gettext(msg) return _t.ugettext(msg) def _log_translation(msg, level): """Build a single translation of a log message """ if USE_LAZY: return Message(msg, domain='nova' + '-log-' + level) else: translator = _t_log_levels[level] if six.PY3: return translator.gettext(msg) return translator.ugettext(msg) # Translators for log levels. # # The abbreviated names are meant to reflect the usual use of a short # name like '_'. The "L" is for "log" and the other letter comes from # the level. _LI = functools.partial(_log_translation, level='info') _LW = functools.partial(_log_translation, level='warning') _LE = functools.partial(_log_translation, level='error') _LC = functools.partial(_log_translation, level='critical') def install(domain, lazy=False): """Install a _() function using the given translation domain. Given a translation domain, install a _() function using gettext's install() function. The main difference from gettext.install() is that we allow overriding the default localedir (e.g. /usr/share/locale) using a translation-domain-specific environment variable (e.g. NOVA_LOCALEDIR). :param domain: the translation domain :param lazy: indicates whether or not to install the lazy _() function. The lazy _() introduces a way to do deferred translation of messages by installing a _ that builds Message objects, instead of strings, which can then be lazily translated into any available locale. """ if lazy: # NOTE(mrodden): Lazy gettext functionality. # # The following introduces a deferred way to do translations on # messages in OpenStack. We override the standard _() function # and % (format string) operation to build Message objects that can # later be translated when we have more information. def _lazy_gettext(msg): """Create and return a Message object. Lazy gettext function for a given domain, it is a factory method for a project/module to get a lazy gettext function for its own translation domain (i.e. nova, glance, cinder, etc.) Message encapsulates a string so that we can translate it later when needed. """ return Message(msg, domain=domain) from six import moves moves.builtins.__dict__['_'] = _lazy_gettext else: localedir = '%s_LOCALEDIR' % domain.upper() if six.PY3: gettext.install(domain, localedir=os.environ.get(localedir)) else: gettext.install(domain, localedir=os.environ.get(localedir), unicode=True) class Message(six.text_type): """A Message object is a unicode object that can be translated. Translation of Message is done explicitly using the translate() method. For all non-translation intents and purposes, a Message is simply unicode, and can be treated as such. """ def __new__(cls, msgid, msgtext=None, params=None, domain='nova', *args): """Create a new Message object. In order for translation to work gettext requires a message ID, this msgid will be used as the base unicode text. It is also possible for the msgid and the base unicode text to be different by passing the msgtext parameter. """ # If the base msgtext is not given, we use the default translation # of the msgid (which is in English) just in case the system locale is # not English, so that the base text will be in that locale by default. if not msgtext: msgtext = Message._translate_msgid(msgid, domain) # We want to initialize the parent unicode with the actual object that # would have been plain unicode if 'Message' was not enabled. msg = super(Message, cls).__new__(cls, msgtext) msg.msgid = msgid msg.domain = domain msg.params = params return msg def translate(self, desired_locale=None): """Translate this message to the desired locale. :param desired_locale: The desired locale to translate the message to, if no locale is provided the message will be translated to the system's default locale. :returns: the translated message in unicode """ translated_message = Message._translate_msgid(self.msgid, self.domain, desired_locale) if self.params is None: # No need for more translation return translated_message # This Message object may have been formatted with one or more # Message objects as substitution arguments, given either as a single # argument, part of a tuple, or as one or more values in a dictionary. # When translating this Message we need to translate those Messages too translated_params = _translate_args(self.params, desired_locale) translated_message = translated_message % translated_params return translated_message @staticmethod def _translate_msgid(msgid, domain, desired_locale=None): if not desired_locale: system_locale = locale.getdefaultlocale() # If the system locale is not available to the runtime use English if not system_locale[0]: desired_locale = 'en_US' else: desired_locale = system_locale[0] locale_dir = os.environ.get(domain.upper() + '_LOCALEDIR') lang = gettext.translation(domain, localedir=locale_dir, languages=[desired_locale], fallback=True) if six.PY3: translator = lang.gettext else: translator = lang.ugettext translated_message = translator(msgid) return translated_message def __mod__(self, other): # When we mod a Message we want the actual operation to be performed # by the parent class (i.e. unicode()), the only thing we do here is # save the original msgid and the parameters in case of a translation params = self._sanitize_mod_params(other) unicode_mod = super(Message, self).__mod__(params) modded = Message(self.msgid, msgtext=unicode_mod, params=params, domain=self.domain) return modded def _sanitize_mod_params(self, other): """Sanitize the object being modded with this Message. - Add support for modding 'None' so translation supports it - Trim the modded object, which can be a large dictionary, to only those keys that would actually be used in a translation - Snapshot the object being modded, in case the message is translated, it will be used as it was when the Message was created """ if other is None: params = (other,) elif isinstance(other, dict): params = self._trim_dictionary_parameters(other) else: params = self._copy_param(other) return params def _trim_dictionary_parameters(self, dict_param): """Return a dict that only has matching entries in the msgid.""" # NOTE(luisg): Here we trim down the dictionary passed as parameters # to avoid carrying a lot of unnecessary weight around in the message # object, for example if someone passes in Message() % locals() but # only some params are used, and additionally we prevent errors for # non-deepcopyable objects by unicoding() them. # Look for %(param) keys in msgid; # Skip %% and deal with the case where % is first character on the line keys = re.findall('(?:[^%]|^)?%\((\w*)\)[a-z]', self.msgid) # If we don't find any %(param) keys but have a %s if not keys and re.findall('(?:[^%]|^)%[a-z]', self.msgid): # Apparently the full dictionary is the parameter params = self._copy_param(dict_param) else: params = {} # Save our existing parameters as defaults to protect # ourselves from losing values if we are called through an # (erroneous) chain that builds a valid Message with # arguments, and then does something like "msg % kwds" # where kwds is an empty dictionary. src = {} if isinstance(self.params, dict): src.update(self.params) src.update(dict_param) for key in keys: params[key] = self._copy_param(src[key]) return params def _copy_param(self, param): try: return copy.deepcopy(param) except TypeError: # Fallback to casting to unicode this will handle the # python code-like objects that can't be deep-copied return six.text_type(param) def __add__(self, other): msg = _('Message objects do not support addition.') raise TypeError(msg) def __radd__(self, other): return self.__add__(other) def __str__(self): # NOTE(luisg): Logging in python 2.6 tries to str() log records, # and it expects specifically a UnicodeError in order to proceed. msg = _('Message objects do not support str() because they may ' 'contain non-ascii characters. ' 'Please use unicode() or translate() instead.') raise UnicodeError(msg) def get_available_languages(domain): """Lists the available languages for the given translation domain. :param domain: the domain to get languages for """ if domain in _AVAILABLE_LANGUAGES: return copy.copy(_AVAILABLE_LANGUAGES[domain]) localedir = '%s_LOCALEDIR' % domain.upper() find = lambda x: gettext.find(domain, localedir=os.environ.get(localedir), languages=[x]) # NOTE(mrodden): en_US should always be available (and first in case # order matters) since our in-line message strings are en_US language_list = ['en_US'] # NOTE(luisg): Babel <1.0 used a function called list(), which was # renamed to locale_identifiers() in >=1.0, the requirements master list # requires >=0.9.6, uncapped, so defensively work with both. We can remove # this check when the master list updates to >=1.0, and update all projects list_identifiers = (getattr(localedata, 'list', None) or getattr(localedata, 'locale_identifiers')) locale_identifiers = list_identifiers() for i in locale_identifiers: if find(i) is not None: language_list.append(i) # NOTE(luisg): Babel>=1.0,<1.3 has a bug where some OpenStack supported # locales (e.g. 'zh_CN', and 'zh_TW') aren't supported even though they # are perfectly legitimate locales: # https://github.com/mitsuhiko/babel/issues/37 # In Babel 1.3 they fixed the bug and they support these locales, but # they are still not explicitly "listed" by locale_identifiers(). # That is why we add the locales here explicitly if necessary so that # they are listed as supported. aliases = {'zh': 'zh_CN', 'zh_Hant_HK': 'zh_HK', 'zh_Hant': 'zh_TW', 'fil': 'tl_PH'} for (locale, alias) in six.iteritems(aliases): if locale in language_list and alias not in language_list: language_list.append(alias) _AVAILABLE_LANGUAGES[domain] = language_list return copy.copy(language_list) def translate(obj, desired_locale=None): """Gets the translated unicode representation of the given object. If the object is not translatable it is returned as-is. If the locale is None the object is translated to the system locale. :param obj: the object to translate :param desired_locale: the locale to translate the message to, if None the default system locale will be used :returns: the translated object in unicode, or the original object if it could not be translated """ message = obj if not isinstance(message, Message): # If the object to translate is not already translatable, # let's first get its unicode representation message = six.text_type(obj) if isinstance(message, Message): # Even after unicoding() we still need to check if we are # running with translatable unicode before translating return message.translate(desired_locale) return obj def _translate_args(args, desired_locale=None): """Translates all the translatable elements of the given arguments object. This method is used for translating the translatable values in method arguments which include values of tuples or dictionaries. If the object is not a tuple or a dictionary the object itself is translated if it is translatable. If the locale is None the object is translated to the system locale. :param args: the args to translate :param desired_locale: the locale to translate the args to, if None the default system locale will be used :returns: a new args object with the translated contents of the original """ if isinstance(args, tuple): return tuple(translate(v, desired_locale) for v in args) if isinstance(args, dict): translated_dict = {} for (k, v) in six.iteritems(args): translated_v = translate(v, desired_locale) translated_dict[k] = translated_v return translated_dict return translate(args, desired_locale) class TranslationHandler(handlers.MemoryHandler): """Handler that translates records before logging them. The TranslationHandler takes a locale and a target logging.Handler object to forward LogRecord objects to after translating them. This handler depends on Message objects being logged, instead of regular strings. The handler can be configured declaratively in the logging.conf as follows: [handlers] keys = translatedlog, translator [handler_translatedlog] class = handlers.WatchedFileHandler args = ('/var/log/api-localized.log',) formatter = context [handler_translator] class = openstack.common.log.TranslationHandler target = translatedlog args = ('zh_CN',) If the specified locale is not available in the system, the handler will log in the default locale. """ def __init__(self, locale=None, target=None): """Initialize a TranslationHandler :param locale: locale to use for translating messages :param target: logging.Handler object to forward LogRecord objects to after translation """ # NOTE(luisg): In order to allow this handler to be a wrapper for # other handlers, such as a FileHandler, and still be able to # configure it using logging.conf, this handler has to extend # MemoryHandler because only the MemoryHandlers' logging.conf # parsing is implemented such that it accepts a target handler. handlers.MemoryHandler.__init__(self, capacity=0, target=target) self.locale = locale def setFormatter(self, fmt): self.target.setFormatter(fmt) def emit(self, record): # We save the message from the original record to restore it # after translation, so other handlers are not affected by this original_msg = record.msg original_args = record.args try: self._translate_and_log_record(record) finally: record.msg = original_msg record.args = original_args def _translate_and_log_record(self, record): record.msg = translate(record.msg, self.locale) # In addition to translating the message, we also need to translate # arguments that were passed to the log method that were not part # of the main message e.g., log.info(_('Some message %s'), this_one)) record.args = _translate_args(record.args, self.locale) self.target.emit(record) nova-2014.1/nova/openstack/common/log.py0000664000175400017540000005634012323721510021263 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Openstack logging handler. This module adds to logging functionality by adding the option to specify a context object when calling the various log methods. If the context object is not specified, default formatting is used. Additionally, an instance uuid may be passed as part of the log message, which is intended to make it easier for admins to find messages related to a specific instance. It also allows setting of formatting information through conf. """ import inspect import itertools import logging import logging.config import logging.handlers import os import re import sys import traceback from oslo.config import cfg import six from six import moves from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import local _DEFAULT_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" _SANITIZE_KEYS = ['adminPass', 'admin_pass', 'password', 'admin_password'] # NOTE(ldbragst): Let's build a list of regex objects using the list of # _SANITIZE_KEYS we already have. This way, we only have to add the new key # to the list of _SANITIZE_KEYS and we can generate regular expressions # for XML and JSON automatically. _SANITIZE_PATTERNS = [] _FORMAT_PATTERNS = [r'(%(key)s\s*[=]\s*[\"\']).*?([\"\'])', r'(<%(key)s>).*?()', r'([\"\']%(key)s[\"\']\s*:\s*[\"\']).*?([\"\'])', r'([\'"].*?%(key)s[\'"]\s*:\s*u?[\'"]).*?([\'"])'] for key in _SANITIZE_KEYS: for pattern in _FORMAT_PATTERNS: reg_ex = re.compile(pattern % {'key': key}, re.DOTALL) _SANITIZE_PATTERNS.append(reg_ex) common_cli_opts = [ cfg.BoolOpt('debug', short='d', default=False, help='Print debugging output (set logging level to ' 'DEBUG instead of default WARNING level).'), cfg.BoolOpt('verbose', short='v', default=False, help='Print more verbose output (set logging level to ' 'INFO instead of default WARNING level).'), ] logging_cli_opts = [ cfg.StrOpt('log-config-append', metavar='PATH', deprecated_name='log-config', help='The name of logging configuration file. It does not ' 'disable existing loggers, but just appends specified ' 'logging configuration to any other existing logging ' 'options. Please see the Python logging module ' 'documentation for details on logging configuration ' 'files.'), cfg.StrOpt('log-format', default=None, metavar='FORMAT', help='DEPRECATED. ' 'A logging.Formatter log message format string which may ' 'use any of the available logging.LogRecord attributes. ' 'This option is deprecated. Please use ' 'logging_context_format_string and ' 'logging_default_format_string instead.'), cfg.StrOpt('log-date-format', default=_DEFAULT_LOG_DATE_FORMAT, metavar='DATE_FORMAT', help='Format string for %%(asctime)s in log records. ' 'Default: %(default)s'), cfg.StrOpt('log-file', metavar='PATH', deprecated_name='logfile', help='(Optional) Name of log file to output to. ' 'If no default is set, logging will go to stdout.'), cfg.StrOpt('log-dir', deprecated_name='logdir', help='(Optional) The base directory used for relative ' '--log-file paths'), cfg.BoolOpt('use-syslog', default=False, help='Use syslog for logging. ' 'Existing syslog format is DEPRECATED during I, ' 'and then will be changed in J to honor RFC5424'), cfg.BoolOpt('use-syslog-rfc-format', # TODO(bogdando) remove or use True after existing # syslog format deprecation in J default=False, help='(Optional) Use syslog rfc5424 format for logging. ' 'If enabled, will add APP-NAME (RFC5424) before the ' 'MSG part of the syslog message. The old format ' 'without APP-NAME is deprecated in I, ' 'and will be removed in J.'), cfg.StrOpt('syslog-log-facility', default='LOG_USER', help='syslog facility to receive log lines') ] generic_log_opts = [ cfg.BoolOpt('use_stderr', default=True, help='Log output to standard error') ] log_opts = [ cfg.StrOpt('logging_context_format_string', default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' '%(name)s [%(request_id)s %(user)s %(tenant)s] ' '%(instance)s%(message)s', help='format string to use for log messages with context'), cfg.StrOpt('logging_default_format_string', default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' '%(name)s [-] %(instance)s%(message)s', help='format string to use for log messages without context'), cfg.StrOpt('logging_debug_format_suffix', default='%(funcName)s %(pathname)s:%(lineno)d', help='data to append to log format when level is DEBUG'), cfg.StrOpt('logging_exception_prefix', default='%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s ' '%(instance)s', help='prefix each line of exception output with this format'), cfg.ListOpt('default_log_levels', default=[ 'amqp=WARN', 'amqplib=WARN', 'boto=WARN', 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', 'oslo.messaging=INFO', 'iso8601=WARN', ], help='list of logger=LEVEL pairs'), cfg.BoolOpt('publish_errors', default=False, help='publish error events'), cfg.BoolOpt('fatal_deprecations', default=False, help='make deprecations fatal'), # NOTE(mikal): there are two options here because sometimes we are handed # a full instance (and could include more information), and other times we # are just handed a UUID for the instance. cfg.StrOpt('instance_format', default='[instance: %(uuid)s] ', help='If an instance is passed with the log message, format ' 'it like this'), cfg.StrOpt('instance_uuid_format', default='[instance: %(uuid)s] ', help='If an instance UUID is passed with the log message, ' 'format it like this'), ] CONF = cfg.CONF CONF.register_cli_opts(common_cli_opts) CONF.register_cli_opts(logging_cli_opts) CONF.register_opts(generic_log_opts) CONF.register_opts(log_opts) # our new audit level # NOTE(jkoelker) Since we synthesized an audit level, make the logging # module aware of it so it acts like other levels. logging.AUDIT = logging.INFO + 1 logging.addLevelName(logging.AUDIT, 'AUDIT') try: NullHandler = logging.NullHandler except AttributeError: # NOTE(jkoelker) NullHandler added in Python 2.7 class NullHandler(logging.Handler): def handle(self, record): pass def emit(self, record): pass def createLock(self): self.lock = None def _dictify_context(context): if context is None: return None if not isinstance(context, dict) and getattr(context, 'to_dict', None): context = context.to_dict() return context def _get_binary_name(): return os.path.basename(inspect.stack()[-1][1]) def _get_log_file_path(binary=None): logfile = CONF.log_file logdir = CONF.log_dir if logfile and not logdir: return logfile if logfile and logdir: return os.path.join(logdir, logfile) if logdir: binary = binary or _get_binary_name() return '%s.log' % (os.path.join(logdir, binary),) return None def mask_password(message, secret="***"): """Replace password with 'secret' in message. :param message: The string which includes security information. :param secret: value with which to replace passwords. :returns: The unicode value of message with the password fields masked. For example: >>> mask_password("'adminPass' : 'aaaaa'") "'adminPass' : '***'" >>> mask_password("'admin_pass' : 'aaaaa'") "'admin_pass' : '***'" >>> mask_password('"password" : "aaaaa"') '"password" : "***"' >>> mask_password("'original_password' : 'aaaaa'") "'original_password' : '***'" >>> mask_password("u'original_password' : u'aaaaa'") "u'original_password' : u'***'" """ message = six.text_type(message) # NOTE(ldbragst): Check to see if anything in message contains any key # specified in _SANITIZE_KEYS, if not then just return the message since # we don't have to mask any passwords. if not any(key in message for key in _SANITIZE_KEYS): return message secret = r'\g<1>' + secret + r'\g<2>' for pattern in _SANITIZE_PATTERNS: message = re.sub(pattern, secret, message) return message class BaseLoggerAdapter(logging.LoggerAdapter): def audit(self, msg, *args, **kwargs): self.log(logging.AUDIT, msg, *args, **kwargs) class LazyAdapter(BaseLoggerAdapter): def __init__(self, name='unknown', version='unknown'): self._logger = None self.extra = {} self.name = name self.version = version @property def logger(self): if not self._logger: self._logger = getLogger(self.name, self.version) return self._logger class ContextAdapter(BaseLoggerAdapter): warn = logging.LoggerAdapter.warning def __init__(self, logger, project_name, version_string): self.logger = logger self.project = project_name self.version = version_string @property def handlers(self): return self.logger.handlers def deprecated(self, msg, *args, **kwargs): stdmsg = _("Deprecated: %s") % msg if CONF.fatal_deprecations: self.critical(stdmsg, *args, **kwargs) raise DeprecatedConfig(msg=stdmsg) else: self.warn(stdmsg, *args, **kwargs) def process(self, msg, kwargs): # NOTE(mrodden): catch any Message/other object and # coerce to unicode before they can get # to the python logging and possibly # cause string encoding trouble if not isinstance(msg, six.string_types): msg = six.text_type(msg) if 'extra' not in kwargs: kwargs['extra'] = {} extra = kwargs['extra'] context = kwargs.pop('context', None) if not context: context = getattr(local.store, 'context', None) if context: extra.update(_dictify_context(context)) instance = kwargs.pop('instance', None) instance_uuid = (extra.get('instance_uuid', None) or kwargs.pop('instance_uuid', None)) instance_extra = '' if instance: instance_extra = CONF.instance_format % instance elif instance_uuid: instance_extra = (CONF.instance_uuid_format % {'uuid': instance_uuid}) extra.update({'instance': instance_extra}) extra.update({"project": self.project}) extra.update({"version": self.version}) extra['extra'] = extra.copy() return msg, kwargs class JSONFormatter(logging.Formatter): def __init__(self, fmt=None, datefmt=None): # NOTE(jkoelker) we ignore the fmt argument, but its still there # since logging.config.fileConfig passes it. self.datefmt = datefmt def formatException(self, ei, strip_newlines=True): lines = traceback.format_exception(*ei) if strip_newlines: lines = [moves.filter( lambda x: x, line.rstrip().splitlines()) for line in lines] lines = list(itertools.chain(*lines)) return lines def format(self, record): message = {'message': record.getMessage(), 'asctime': self.formatTime(record, self.datefmt), 'name': record.name, 'msg': record.msg, 'args': record.args, 'levelname': record.levelname, 'levelno': record.levelno, 'pathname': record.pathname, 'filename': record.filename, 'module': record.module, 'lineno': record.lineno, 'funcname': record.funcName, 'created': record.created, 'msecs': record.msecs, 'relative_created': record.relativeCreated, 'thread': record.thread, 'thread_name': record.threadName, 'process_name': record.processName, 'process': record.process, 'traceback': None} if hasattr(record, 'extra'): message['extra'] = record.extra if record.exc_info: message['traceback'] = self.formatException(record.exc_info) return jsonutils.dumps(message) def _create_logging_excepthook(product_name): def logging_excepthook(exc_type, value, tb): extra = {} if CONF.verbose or CONF.debug: extra['exc_info'] = (exc_type, value, tb) getLogger(product_name).critical( "".join(traceback.format_exception_only(exc_type, value)), **extra) return logging_excepthook class LogConfigError(Exception): message = _('Error loading logging config %(log_config)s: %(err_msg)s') def __init__(self, log_config, err_msg): self.log_config = log_config self.err_msg = err_msg def __str__(self): return self.message % dict(log_config=self.log_config, err_msg=self.err_msg) def _load_log_config(log_config_append): try: logging.config.fileConfig(log_config_append, disable_existing_loggers=False) except moves.configparser.Error as exc: raise LogConfigError(log_config_append, str(exc)) def setup(product_name): """Setup logging.""" if CONF.log_config_append: _load_log_config(CONF.log_config_append) else: _setup_logging_from_conf() sys.excepthook = _create_logging_excepthook(product_name) def set_defaults(logging_context_format_string): cfg.set_defaults(log_opts, logging_context_format_string= logging_context_format_string) def _find_facility_from_conf(): facility_names = logging.handlers.SysLogHandler.facility_names facility = getattr(logging.handlers.SysLogHandler, CONF.syslog_log_facility, None) if facility is None and CONF.syslog_log_facility in facility_names: facility = facility_names.get(CONF.syslog_log_facility) if facility is None: valid_facilities = facility_names.keys() consts = ['LOG_AUTH', 'LOG_AUTHPRIV', 'LOG_CRON', 'LOG_DAEMON', 'LOG_FTP', 'LOG_KERN', 'LOG_LPR', 'LOG_MAIL', 'LOG_NEWS', 'LOG_AUTH', 'LOG_SYSLOG', 'LOG_USER', 'LOG_UUCP', 'LOG_LOCAL0', 'LOG_LOCAL1', 'LOG_LOCAL2', 'LOG_LOCAL3', 'LOG_LOCAL4', 'LOG_LOCAL5', 'LOG_LOCAL6', 'LOG_LOCAL7'] valid_facilities.extend(consts) raise TypeError(_('syslog facility must be one of: %s') % ', '.join("'%s'" % fac for fac in valid_facilities)) return facility class RFCSysLogHandler(logging.handlers.SysLogHandler): def __init__(self, *args, **kwargs): self.binary_name = _get_binary_name() super(RFCSysLogHandler, self).__init__(*args, **kwargs) def format(self, record): msg = super(RFCSysLogHandler, self).format(record) msg = self.binary_name + ' ' + msg return msg def _setup_logging_from_conf(): log_root = getLogger(None).logger for handler in log_root.handlers: log_root.removeHandler(handler) if CONF.use_syslog: facility = _find_facility_from_conf() # TODO(bogdando) use the format provided by RFCSysLogHandler # after existing syslog format deprecation in J if CONF.use_syslog_rfc_format: syslog = RFCSysLogHandler(address='/dev/log', facility=facility) else: syslog = logging.handlers.SysLogHandler(address='/dev/log', facility=facility) log_root.addHandler(syslog) logpath = _get_log_file_path() if logpath: filelog = logging.handlers.WatchedFileHandler(logpath) log_root.addHandler(filelog) if CONF.use_stderr: streamlog = ColorHandler() log_root.addHandler(streamlog) elif not logpath: # pass sys.stdout as a positional argument # python2.6 calls the argument strm, in 2.7 it's stream streamlog = logging.StreamHandler(sys.stdout) log_root.addHandler(streamlog) if CONF.publish_errors: handler = importutils.import_object( "nova.openstack.common.log_handler.PublishErrorsHandler", logging.ERROR) log_root.addHandler(handler) datefmt = CONF.log_date_format for handler in log_root.handlers: # NOTE(alaski): CONF.log_format overrides everything currently. This # should be deprecated in favor of context aware formatting. if CONF.log_format: handler.setFormatter(logging.Formatter(fmt=CONF.log_format, datefmt=datefmt)) log_root.info('Deprecated: log_format is now deprecated and will ' 'be removed in the next release') else: handler.setFormatter(ContextFormatter(datefmt=datefmt)) if CONF.debug: log_root.setLevel(logging.DEBUG) elif CONF.verbose: log_root.setLevel(logging.INFO) else: log_root.setLevel(logging.WARNING) for pair in CONF.default_log_levels: mod, _sep, level_name = pair.partition('=') level = logging.getLevelName(level_name) logger = logging.getLogger(mod) logger.setLevel(level) _loggers = {} def getLogger(name='unknown', version='unknown'): if name not in _loggers: _loggers[name] = ContextAdapter(logging.getLogger(name), name, version) return _loggers[name] def getLazyLogger(name='unknown', version='unknown'): """Returns lazy logger. Creates a pass-through logger that does not create the real logger until it is really needed and delegates all calls to the real logger once it is created. """ return LazyAdapter(name, version) class WritableLogger(object): """A thin wrapper that responds to `write` and logs.""" def __init__(self, logger, level=logging.INFO): self.logger = logger self.level = level def write(self, msg): self.logger.log(self.level, msg.rstrip()) class ContextFormatter(logging.Formatter): """A context.RequestContext aware formatter configured through flags. The flags used to set format strings are: logging_context_format_string and logging_default_format_string. You can also specify logging_debug_format_suffix to append extra formatting if the log level is debug. For information about what variables are available for the formatter see: http://docs.python.org/library/logging.html#formatter """ def format(self, record): """Uses contextstring if request_id is set, otherwise default.""" # NOTE(sdague): default the fancier formatting params # to an empty string so we don't throw an exception if # they get used for key in ('instance', 'color'): if key not in record.__dict__: record.__dict__[key] = '' if record.__dict__.get('request_id', None): self._fmt = CONF.logging_context_format_string else: self._fmt = CONF.logging_default_format_string if (record.levelno == logging.DEBUG and CONF.logging_debug_format_suffix): self._fmt += " " + CONF.logging_debug_format_suffix # Cache this on the record, Logger will respect our formatted copy if record.exc_info: record.exc_text = self.formatException(record.exc_info, record) return logging.Formatter.format(self, record) def formatException(self, exc_info, record=None): """Format exception output with CONF.logging_exception_prefix.""" if not record: return logging.Formatter.formatException(self, exc_info) stringbuffer = moves.StringIO() traceback.print_exception(exc_info[0], exc_info[1], exc_info[2], None, stringbuffer) lines = stringbuffer.getvalue().split('\n') stringbuffer.close() if CONF.logging_exception_prefix.find('%(asctime)') != -1: record.asctime = self.formatTime(record, self.datefmt) formatted_lines = [] for line in lines: pl = CONF.logging_exception_prefix % record.__dict__ fl = '%s%s' % (pl, line) formatted_lines.append(fl) return '\n'.join(formatted_lines) class ColorHandler(logging.StreamHandler): LEVEL_COLORS = { logging.DEBUG: '\033[00;32m', # GREEN logging.INFO: '\033[00;36m', # CYAN logging.AUDIT: '\033[01;36m', # BOLD CYAN logging.WARN: '\033[01;33m', # BOLD YELLOW logging.ERROR: '\033[01;31m', # BOLD RED logging.CRITICAL: '\033[01;31m', # BOLD RED } def format(self, record): record.color = self.LEVEL_COLORS[record.levelno] return logging.StreamHandler.format(self, record) class DeprecatedConfig(Exception): message = _("Fatal call to deprecated config: %(msg)s") def __init__(self, msg): super(Exception, self).__init__(self.message % dict(msg=msg)) nova-2014.1/nova/openstack/common/memorycache.py0000664000175400017540000000564412323721510022777 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Super simple fake memcache client.""" from oslo.config import cfg from nova.openstack.common import timeutils memcache_opts = [ cfg.ListOpt('memcached_servers', default=None, help='Memcached servers or None for in process cache.'), ] CONF = cfg.CONF CONF.register_opts(memcache_opts) def get_client(memcached_servers=None): client_cls = Client if not memcached_servers: memcached_servers = CONF.memcached_servers if memcached_servers: try: import memcache client_cls = memcache.Client except ImportError: pass return client_cls(memcached_servers, debug=0) class Client(object): """Replicates a tiny subset of memcached client interface.""" def __init__(self, *args, **kwargs): """Ignores the passed in args.""" self.cache = {} def get(self, key): """Retrieves the value for a key or None. This expunges expired keys during each get. """ now = timeutils.utcnow_ts() for k in self.cache.keys(): (timeout, _value) = self.cache[k] if timeout and now >= timeout: del self.cache[k] return self.cache.get(key, (0, None))[1] def set(self, key, value, time=0, min_compress_len=0): """Sets the value for a key.""" timeout = 0 if time != 0: timeout = timeutils.utcnow_ts() + time self.cache[key] = (timeout, value) return True def add(self, key, value, time=0, min_compress_len=0): """Sets the value for a key if it doesn't exist.""" if self.get(key) is not None: return False return self.set(key, value, time, min_compress_len) def incr(self, key, delta=1): """Increments the value for a key.""" value = self.get(key) if value is None: return None new_value = int(value) + delta self.cache[key] = (self.cache[key][0], str(new_value)) return new_value def delete(self, key, time=0): """Deletes the value associated with a key.""" if key in self.cache: del self.cache[key] nova-2014.1/nova/openstack/common/imageutils.py0000664000175400017540000001343512323721510022643 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright (c) 2010 Citrix Systems, 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. """ Helper methods to deal with images. """ import re from nova.openstack.common.gettextutils import _ # noqa from nova.openstack.common import strutils class QemuImgInfo(object): BACKING_FILE_RE = re.compile((r"^(.*?)\s*\(actual\s+path\s*:" r"\s+(.*?)\)\s*$"), re.I) TOP_LEVEL_RE = re.compile(r"^([\w\d\s\_\-]+):(.*)$") SIZE_RE = re.compile(r"\(\s*(\d+)\s+bytes\s*\)", re.I) def __init__(self, cmd_output=None): details = self._parse(cmd_output or '') self.image = details.get('image') self.backing_file = details.get('backing_file') self.file_format = details.get('file_format') self.virtual_size = details.get('virtual_size') self.cluster_size = details.get('cluster_size') self.disk_size = details.get('disk_size') self.snapshots = details.get('snapshot_list', []) self.encryption = details.get('encryption') def __str__(self): lines = [ 'image: %s' % self.image, 'file_format: %s' % self.file_format, 'virtual_size: %s' % self.virtual_size, 'disk_size: %s' % self.disk_size, 'cluster_size: %s' % self.cluster_size, 'backing_file: %s' % self.backing_file, ] if self.snapshots: lines.append("snapshots: %s" % self.snapshots) return "\n".join(lines) def _canonicalize(self, field): # Standardize on underscores/lc/no dash and no spaces # since qemu seems to have mixed outputs here... and # this format allows for better integration with python # - ie for usage in kwargs and such... field = field.lower().strip() for c in (" ", "-"): field = field.replace(c, '_') return field def _extract_bytes(self, details): # Replace it with the byte amount real_size = self.SIZE_RE.search(details) if real_size: details = real_size.group(1) try: details = strutils.to_bytes(details) except TypeError: pass return details def _extract_details(self, root_cmd, root_details, lines_after): real_details = root_details if root_cmd == 'backing_file': # Replace it with the real backing file backing_match = self.BACKING_FILE_RE.match(root_details) if backing_match: real_details = backing_match.group(2).strip() elif root_cmd in ['virtual_size', 'cluster_size', 'disk_size']: # Replace it with the byte amount (if we can convert it) real_details = self._extract_bytes(root_details) elif root_cmd == 'file_format': real_details = real_details.strip().lower() elif root_cmd == 'snapshot_list': # Next line should be a header, starting with 'ID' if not lines_after or not lines_after[0].startswith("ID"): msg = _("Snapshot list encountered but no header found!") raise ValueError(msg) del lines_after[0] real_details = [] # This is the sprintf pattern we will try to match # "%-10s%-20s%7s%20s%15s" # ID TAG VM SIZE DATE VM CLOCK (current header) while lines_after: line = lines_after[0] line_pieces = line.split() if len(line_pieces) != 6: break # Check against this pattern in the final position # "%02d:%02d:%02d.%03d" date_pieces = line_pieces[5].split(":") if len(date_pieces) != 3: break real_details.append({ 'id': line_pieces[0], 'tag': line_pieces[1], 'vm_size': line_pieces[2], 'date': line_pieces[3], 'vm_clock': line_pieces[4] + " " + line_pieces[5], }) del lines_after[0] return real_details def _parse(self, cmd_output): # Analysis done of qemu-img.c to figure out what is going on here # Find all points start with some chars and then a ':' then a newline # and then handle the results of those 'top level' items in a separate # function. # # TODO(harlowja): newer versions might have a json output format # we should switch to that whenever possible. # see: http://bit.ly/XLJXDX contents = {} lines = [x for x in cmd_output.splitlines() if x.strip()] while lines: line = lines.pop(0) top_level = self.TOP_LEVEL_RE.match(line) if top_level: root = self._canonicalize(top_level.group(1)) if not root: continue root_details = top_level.group(2).strip() details = self._extract_details(root, root_details, lines) contents[root] = details return contents nova-2014.1/nova/openstack/common/service.py0000664000175400017540000003467212323721510022146 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Generic Node base class for all workers that run on hosts.""" import errno import logging as std_logging import os import random import signal import sys import time try: # Importing just the symbol here because the io module does not # exist in Python 2.6. from io import UnsupportedOperation # noqa except ImportError: # Python 2.6 UnsupportedOperation = None import eventlet from eventlet import event from oslo.config import cfg from nova.openstack.common import eventlet_backdoor from nova.openstack.common.gettextutils import _ # noqa from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import threadgroup rpc = importutils.try_import('nova.rpc') CONF = cfg.CONF LOG = logging.getLogger(__name__) def _sighup_supported(): return hasattr(signal, 'SIGHUP') def _is_daemon(): # The process group for a foreground process will match the # process group of the controlling terminal. If those values do # not match, or ioctl() fails on the stdout file handle, we assume # the process is running in the background as a daemon. # http://www.gnu.org/software/bash/manual/bashref.html#Job-Control-Basics try: is_daemon = os.getpgrp() != os.tcgetpgrp(sys.stdout.fileno()) except OSError as err: if err.errno == errno.ENOTTY: # Assume we are a daemon because there is no terminal. is_daemon = True else: raise except UnsupportedOperation: # Could not get the fileno for stdout, so we must be a daemon. is_daemon = True return is_daemon def _is_sighup_and_daemon(signo): if not (_sighup_supported() and signo == signal.SIGHUP): # Avoid checking if we are a daemon, because the signal isn't # SIGHUP. return False return _is_daemon() def _signo_to_signame(signo): signals = {signal.SIGTERM: 'SIGTERM', signal.SIGINT: 'SIGINT'} if _sighup_supported(): signals[signal.SIGHUP] = 'SIGHUP' return signals[signo] def _set_signals_handler(handler): signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGINT, handler) if _sighup_supported(): signal.signal(signal.SIGHUP, handler) class Launcher(object): """Launch one or more services and wait for them to complete.""" def __init__(self): """Initialize the service launcher. :returns: None """ self.services = Services() self.backdoor_port = eventlet_backdoor.initialize_if_enabled() def launch_service(self, service): """Load and start the given service. :param service: The service you would like to start. :returns: None """ service.backdoor_port = self.backdoor_port self.services.add(service) def stop(self): """Stop all services which are currently running. :returns: None """ self.services.stop() def wait(self): """Waits until all services have been stopped, and then returns. :returns: None """ self.services.wait() def restart(self): """Reload config files and restart service. :returns: None """ cfg.CONF.reload_config_files() self.services.restart() class SignalExit(SystemExit): def __init__(self, signo, exccode=1): super(SignalExit, self).__init__(exccode) self.signo = signo class ServiceLauncher(Launcher): def _handle_signal(self, signo, frame): # Allow the process to be killed again and die from natural causes _set_signals_handler(signal.SIG_DFL) raise SignalExit(signo) def handle_signal(self): _set_signals_handler(self._handle_signal) def _wait_for_exit_or_signal(self, ready_callback=None): status = None signo = 0 LOG.debug(_('Full set of CONF:')) CONF.log_opt_values(LOG, std_logging.DEBUG) try: if ready_callback: ready_callback() super(ServiceLauncher, self).wait() except SignalExit as exc: signame = _signo_to_signame(exc.signo) LOG.info(_('Caught %s, exiting'), signame) status = exc.code signo = exc.signo except SystemExit as exc: status = exc.code finally: self.stop() if rpc: try: rpc.cleanup() except Exception: # We're shutting down, so it doesn't matter at this point. LOG.exception(_('Exception during rpc cleanup.')) return status, signo def wait(self, ready_callback=None): while True: self.handle_signal() status, signo = self._wait_for_exit_or_signal(ready_callback) if not _is_sighup_and_daemon(signo): return status self.restart() class ServiceWrapper(object): def __init__(self, service, workers): self.service = service self.workers = workers self.children = set() self.forktimes = [] class ProcessLauncher(object): def __init__(self): self.children = {} self.sigcaught = None self.running = True rfd, self.writepipe = os.pipe() self.readpipe = eventlet.greenio.GreenPipe(rfd, 'r') self.handle_signal() def handle_signal(self): _set_signals_handler(self._handle_signal) def _handle_signal(self, signo, frame): self.sigcaught = signo self.running = False # Allow the process to be killed again and die from natural causes _set_signals_handler(signal.SIG_DFL) def _pipe_watcher(self): # This will block until the write end is closed when the parent # dies unexpectedly self.readpipe.read() LOG.info(_('Parent process has died unexpectedly, exiting')) sys.exit(1) def _child_process_handle_signal(self): # Setup child signal handlers differently def _sigterm(*args): signal.signal(signal.SIGTERM, signal.SIG_DFL) raise SignalExit(signal.SIGTERM) def _sighup(*args): signal.signal(signal.SIGHUP, signal.SIG_DFL) raise SignalExit(signal.SIGHUP) signal.signal(signal.SIGTERM, _sigterm) if _sighup_supported(): signal.signal(signal.SIGHUP, _sighup) # Block SIGINT and let the parent send us a SIGTERM signal.signal(signal.SIGINT, signal.SIG_IGN) def _child_wait_for_exit_or_signal(self, launcher): status = 0 signo = 0 # NOTE(johannes): All exceptions are caught to ensure this # doesn't fallback into the loop spawning children. It would # be bad for a child to spawn more children. try: launcher.wait() except SignalExit as exc: signame = _signo_to_signame(exc.signo) LOG.info(_('Caught %s, exiting'), signame) status = exc.code signo = exc.signo except SystemExit as exc: status = exc.code except BaseException: LOG.exception(_('Unhandled exception')) status = 2 finally: launcher.stop() return status, signo def _child_process(self, service): self._child_process_handle_signal() # Reopen the eventlet hub to make sure we don't share an epoll # fd with parent and/or siblings, which would be bad eventlet.hubs.use_hub() # Close write to ensure only parent has it open os.close(self.writepipe) # Create greenthread to watch for parent to close pipe eventlet.spawn_n(self._pipe_watcher) # Reseed random number generator random.seed() launcher = Launcher() launcher.launch_service(service) return launcher def _start_child(self, wrap): if len(wrap.forktimes) > wrap.workers: # Limit ourselves to one process a second (over the period of # number of workers * 1 second). This will allow workers to # start up quickly but ensure we don't fork off children that # die instantly too quickly. if time.time() - wrap.forktimes[0] < wrap.workers: LOG.info(_('Forking too fast, sleeping')) time.sleep(1) wrap.forktimes.pop(0) wrap.forktimes.append(time.time()) pid = os.fork() if pid == 0: launcher = self._child_process(wrap.service) while True: self._child_process_handle_signal() status, signo = self._child_wait_for_exit_or_signal(launcher) if not _is_sighup_and_daemon(signo): break launcher.restart() os._exit(status) LOG.info(_('Started child %d'), pid) wrap.children.add(pid) self.children[pid] = wrap return pid def launch_service(self, service, workers=1): wrap = ServiceWrapper(service, workers) LOG.info(_('Starting %d workers'), wrap.workers) while self.running and len(wrap.children) < wrap.workers: self._start_child(wrap) def _wait_child(self): try: # Don't block if no child processes have exited pid, status = os.waitpid(0, os.WNOHANG) if not pid: return None except OSError as exc: if exc.errno not in (errno.EINTR, errno.ECHILD): raise return None if os.WIFSIGNALED(status): sig = os.WTERMSIG(status) LOG.info(_('Child %(pid)d killed by signal %(sig)d'), dict(pid=pid, sig=sig)) else: code = os.WEXITSTATUS(status) LOG.info(_('Child %(pid)s exited with status %(code)d'), dict(pid=pid, code=code)) if pid not in self.children: LOG.warning(_('pid %d not in child list'), pid) return None wrap = self.children.pop(pid) wrap.children.remove(pid) return wrap def _respawn_children(self): while self.running: wrap = self._wait_child() if not wrap: # Yield to other threads if no children have exited # Sleep for a short time to avoid excessive CPU usage # (see bug #1095346) eventlet.greenthread.sleep(.01) continue while self.running and len(wrap.children) < wrap.workers: self._start_child(wrap) def wait(self): """Loop waiting on children to die and respawning as necessary.""" LOG.debug(_('Full set of CONF:')) CONF.log_opt_values(LOG, std_logging.DEBUG) while True: self.handle_signal() self._respawn_children() if self.sigcaught: signame = _signo_to_signame(self.sigcaught) LOG.info(_('Caught %s, stopping children'), signame) if not _is_sighup_and_daemon(self.sigcaught): break for pid in self.children: os.kill(pid, signal.SIGHUP) self.running = True self.sigcaught = None for pid in self.children: try: os.kill(pid, signal.SIGTERM) except OSError as exc: if exc.errno != errno.ESRCH: raise # Wait for children to die if self.children: LOG.info(_('Waiting on %d children to exit'), len(self.children)) while self.children: self._wait_child() class Service(object): """Service object for binaries running on hosts.""" def __init__(self, threads=1000): self.tg = threadgroup.ThreadGroup(threads) # signal that the service is done shutting itself down: self._done = event.Event() def reset(self): # NOTE(Fengqian): docs for Event.reset() recommend against using it self._done = event.Event() def start(self): pass def stop(self): self.tg.stop() self.tg.wait() # Signal that service cleanup is done: if not self._done.ready(): self._done.send() def wait(self): self._done.wait() class Services(object): def __init__(self): self.services = [] self.tg = threadgroup.ThreadGroup() self.done = event.Event() def add(self, service): self.services.append(service) self.tg.add_thread(self.run_service, service, self.done) def stop(self): # wait for graceful shutdown of services: for service in self.services: service.stop() service.wait() # Each service has performed cleanup, now signal that the run_service # wrapper threads can now die: if not self.done.ready(): self.done.send() # reap threads: self.tg.stop() def wait(self): self.tg.wait() def restart(self): self.stop() self.done = event.Event() for restart_service in self.services: restart_service.reset() self.tg.add_thread(self.run_service, restart_service, self.done) @staticmethod def run_service(service, done): """Service start wrapper. :param service: service to run :param done: event to wait on until a shutdown is triggered :returns: None """ service.start() done.wait() def launch(service, workers=None): if workers: launcher = ProcessLauncher() launcher.launch_service(service, workers=workers) else: launcher = ServiceLauncher() launcher.launch_service(service) return launcher nova-2014.1/nova/openstack/common/excutils.py0000664000175400017540000000716412323721510022342 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # 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. """ Exception related utilities. """ import logging import sys import time import traceback import six from nova.openstack.common.gettextutils import _ # noqa class save_and_reraise_exception(object): """Save current exception, run some code and then re-raise. In some cases the exception context can be cleared, resulting in None being attempted to be re-raised after an exception handler is run. This can happen when eventlet switches greenthreads or when running an exception handler, code raises and catches an exception. In both cases the exception context will be cleared. To work around this, we save the exception state, run handler code, and then re-raise the original exception. If another exception occurs, the saved exception is logged and the new exception is re-raised. In some cases the caller may not want to re-raise the exception, and for those circumstances this context provides a reraise flag that can be used to suppress the exception. For example: except Exception: with save_and_reraise_exception() as ctxt: decide_if_need_reraise() if not should_be_reraised: ctxt.reraise = False """ def __init__(self): self.reraise = True def __enter__(self): self.type_, self.value, self.tb, = sys.exc_info() return self def __exit__(self, exc_type, exc_val, exc_tb): if exc_type is not None: logging.error(_('Original exception being dropped: %s'), traceback.format_exception(self.type_, self.value, self.tb)) return False if self.reraise: six.reraise(self.type_, self.value, self.tb) def forever_retry_uncaught_exceptions(infunc): def inner_func(*args, **kwargs): last_log_time = 0 last_exc_message = None exc_count = 0 while True: try: return infunc(*args, **kwargs) except Exception as exc: this_exc_message = six.u(str(exc)) if this_exc_message == last_exc_message: exc_count += 1 else: exc_count = 1 # Do not log any more frequently than once a minute unless # the exception message changes cur_time = int(time.time()) if (cur_time - last_log_time > 60 or this_exc_message != last_exc_message): logging.exception( _('Unexpected exception occurred %d time(s)... ' 'retrying.') % exc_count) last_log_time = cur_time last_exc_message = this_exc_message exc_count = 0 # This should be a very rare event. In case it isn't, do # a sleep. time.sleep(1) return inner_func nova-2014.1/nova/openstack/common/periodic_task.py0000664000175400017540000001554712323721477023342 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import datetime import time from oslo.config import cfg import six from nova.openstack.common.gettextutils import _ # noqa from nova.openstack.common import log as logging from nova.openstack.common import timeutils periodic_opts = [ cfg.BoolOpt('run_external_periodic_tasks', default=True, help=('Some periodic tasks can be run in a separate process. ' 'Should we run them here?')), ] CONF = cfg.CONF CONF.register_opts(periodic_opts) LOG = logging.getLogger(__name__) DEFAULT_INTERVAL = 60.0 class InvalidPeriodicTaskArg(Exception): message = _("Unexpected argument for periodic task creation: %(arg)s.") def periodic_task(*args, **kwargs): """Decorator to indicate that a method is a periodic task. This decorator can be used in two ways: 1. Without arguments '@periodic_task', this will be run on every cycle of the periodic scheduler. 2. With arguments: @periodic_task(spacing=N [, run_immediately=[True|False]]) this will be run on approximately every N seconds. If this number is negative the periodic task will be disabled. If the run_immediately argument is provided and has a value of 'True', the first run of the task will be shortly after task scheduler starts. If run_immediately is omitted or set to 'False', the first time the task runs will be approximately N seconds after the task scheduler starts. """ def decorator(f): # Test for old style invocation if 'ticks_between_runs' in kwargs: raise InvalidPeriodicTaskArg(arg='ticks_between_runs') # Control if run at all f._periodic_task = True f._periodic_external_ok = kwargs.pop('external_process_ok', False) if f._periodic_external_ok and not CONF.run_external_periodic_tasks: f._periodic_enabled = False else: f._periodic_enabled = kwargs.pop('enabled', True) # Control frequency f._periodic_spacing = kwargs.pop('spacing', 0) f._periodic_immediate = kwargs.pop('run_immediately', False) if f._periodic_immediate: f._periodic_last_run = None else: f._periodic_last_run = timeutils.utcnow() return f # NOTE(sirp): The `if` is necessary to allow the decorator to be used with # and without parens. # # In the 'with-parens' case (with kwargs present), this function needs to # return a decorator function since the interpreter will invoke it like: # # periodic_task(*args, **kwargs)(f) # # In the 'without-parens' case, the original function will be passed # in as the first argument, like: # # periodic_task(f) if kwargs: return decorator else: return decorator(args[0]) class _PeriodicTasksMeta(type): def __init__(cls, names, bases, dict_): """Metaclass that allows us to collect decorated periodic tasks.""" super(_PeriodicTasksMeta, cls).__init__(names, bases, dict_) # NOTE(sirp): if the attribute is not present then we must be the base # class, so, go ahead an initialize it. If the attribute is present, # then we're a subclass so make a copy of it so we don't step on our # parent's toes. try: cls._periodic_tasks = cls._periodic_tasks[:] except AttributeError: cls._periodic_tasks = [] try: cls._periodic_last_run = cls._periodic_last_run.copy() except AttributeError: cls._periodic_last_run = {} try: cls._periodic_spacing = cls._periodic_spacing.copy() except AttributeError: cls._periodic_spacing = {} for value in cls.__dict__.values(): if getattr(value, '_periodic_task', False): task = value name = task.__name__ if task._periodic_spacing < 0: LOG.info(_('Skipping periodic task %(task)s because ' 'its interval is negative'), {'task': name}) continue if not task._periodic_enabled: LOG.info(_('Skipping periodic task %(task)s because ' 'it is disabled'), {'task': name}) continue # A periodic spacing of zero indicates that this task should # be run every pass if task._periodic_spacing == 0: task._periodic_spacing = None cls._periodic_tasks.append((name, task)) cls._periodic_spacing[name] = task._periodic_spacing cls._periodic_last_run[name] = task._periodic_last_run @six.add_metaclass(_PeriodicTasksMeta) class PeriodicTasks(object): def run_periodic_tasks(self, context, raise_on_error=False): """Tasks to be run at a periodic interval.""" idle_for = DEFAULT_INTERVAL for task_name, task in self._periodic_tasks: full_task_name = '.'.join([self.__class__.__name__, task_name]) now = timeutils.utcnow() spacing = self._periodic_spacing[task_name] last_run = self._periodic_last_run[task_name] # If a periodic task is _nearly_ due, then we'll run it early if spacing is not None and last_run is not None: due = last_run + datetime.timedelta(seconds=spacing) if not timeutils.is_soon(due, 0.2): idle_for = min(idle_for, timeutils.delta_seconds(now, due)) continue if spacing is not None: idle_for = min(idle_for, spacing) LOG.debug(_("Running periodic task %(full_task_name)s"), {"full_task_name": full_task_name}) self._periodic_last_run[task_name] = timeutils.utcnow() try: task(self, context) except Exception as e: if raise_on_error: raise LOG.exception(_("Error during %(full_task_name)s: %(e)s"), {"full_task_name": full_task_name, "e": e}) time.sleep(0) return idle_for nova-2014.1/nova/openstack/common/report/0000775000175400017540000000000012323722546021445 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/generators/0000775000175400017540000000000012323722546023616 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/generators/threading.py0000664000175400017540000000475112323721477026146 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides thread-related generators This module defines classes for threading-related generators for generating the models in :mod:`openstack.common.report.models.threading`. """ import sys import greenlet import nova.openstack.common.report.models.threading as tm from nova.openstack.common.report.models import with_default_views as mwdv import nova.openstack.common.report.utils as rutils import nova.openstack.common.report.views.text.generic as text_views class ThreadReportGenerator(object): """A Thread Data Generator This generator returns a collection of :class:`openstack.common.report.models.threading.ThreadModel` objects by introspecting the current python state using :func:`sys._current_frames()` . """ def __call__(self): threadModels = [ tm.ThreadModel(thread_id, stack) for thread_id, stack in sys._current_frames().items() ] thread_pairs = dict(zip(range(len(threadModels)), threadModels)) return mwdv.ModelWithDefaultViews(thread_pairs, text_view=text_views.MultiView()) class GreenThreadReportGenerator(object): """A Green Thread Data Generator This generator returns a collection of :class:`openstack.common.report.models.threading.GreenThreadModel` objects by introspecting the current python garbage collection state, and sifting through for :class:`greenlet.greenlet` objects. .. seealso:: Function :func:`openstack.common.report.utils._find_objects` """ def __call__(self): threadModels = [ tm.GreenThreadModel(gr.gr_frame) for gr in rutils._find_objects(greenlet.greenlet) ] thread_pairs = dict(zip(range(len(threadModels)), threadModels)) return mwdv.ModelWithDefaultViews(thread_pairs, text_view=text_views.MultiView()) nova-2014.1/nova/openstack/common/report/generators/conf.py0000664000175400017540000000261012323721477025116 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Openstack config generators This module defines a class for configuration generators for generating the model in :mod:`openstack.common.report.models.conf`. """ from oslo.config import cfg import nova.openstack.common.report.models.conf as cm class ConfigReportGenerator(object): """A Configuration Data Generator This generator returns :class:`openstack.common.report.models.conf.ConfigModel` , by default using the configuration options stored in :attr:`oslo.config.cfg.CONF`, which is where Openstack stores everything. :param cnf: the configuration option object :type cnf: :class:`oslo.config.cfg.ConfigOpts` """ def __init__(self, cnf=cfg.CONF): self.conf_obj = cnf def __call__(self): return cm.ConfigModel(self.conf_obj) nova-2014.1/nova/openstack/common/report/generators/version.py0000664000175400017540000000315312323721477025661 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Openstack version generators This module defines a class for Openstack version and package information generators for generating the model in :mod:`openstack.common.report.models.version`. """ import nova.openstack.common.report.models.version as vm class PackageReportGenerator(object): """A Package Information Data Generator This generator returns :class:`openstack.common.report.models.version.PackageModel`, extracting data from the given version object, which should follow the general format defined in Nova's version information (i.e. it should contain the methods vendor_string, product_string, and version_string_with_package). :param version_object: the version information object """ def __init__(self, version_obj): self.version_obj = version_obj def __call__(self): return vm.PackageModel( self.version_obj.vendor_string(), self.version_obj.product_string(), self.version_obj.version_string_with_package()) nova-2014.1/nova/openstack/common/report/generators/__init__.py0000664000175400017540000000152312323721477025732 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Data Model Generators This module defines classes for generating data models ( :class:`openstack.common.report.models.base.ReportModel` ). A generator is any object which is callable with no parameters and returns a data model. """ nova-2014.1/nova/openstack/common/report/report.py0000664000175400017540000001500412323721477023334 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Report classes This module defines various classes representing reports and report sections. All reports take the form of a report class containing various report sections. """ import nova.openstack.common.report.views.text.header as header_views class BasicReport(object): """A Basic Report A Basic Report consists of a collection of :class:`ReportSection` objects, each of which contains a top-level model and generator. It collects these sections into a cohesive report which may then be serialized by calling :func:`run` """ def __init__(self): self.sections = [] self._state = 0 def add_section(self, view, generator, index=None): """Add a section to the report This method adds a section with the given view and generator to the report. An index may be specified to insert the section at a given location in the list; If no index is specified, the section is appended to the list. The view is called on the model which results from the generator when the report is run. A generator is simply a method or callable object which takes no arguments and returns a :class:`openstack.common.report.models.base.ReportModel` or similar object. :param view: the top-level view for the section :param generator: the method or class which generates the model :param index: the index at which to insert the section (or None to append it) :type index: int or None """ if index is None: self.sections.append(ReportSection(view, generator)) else: self.sections.insert(index, ReportSection(view, generator)) def run(self): """Run the report This method runs the report, having each section generate its data and serialize itself before joining the sections together. The BasicReport accomplishes the joining by joining the serialized sections together with newlines. :rtype: str :returns: the serialized report """ return "\n".join(str(sect) for sect in self.sections) class ReportSection(object): """A Report Section A report section contains a generator and a top-level view. When something attempts to serialize the section by calling str() on it, the section runs the generator and calls the view on the resulting model. .. seealso:: Class :class:`BasicReport` :func:`BasicReport.add_section` :param view: the top-level view for this section :param generator: the generator for this section (any callable object which takes no parameters and returns a data model) """ def __init__(self, view, generator): self.view = view self.generator = generator def __str__(self): return self.view(self.generator()) class ReportOfType(BasicReport): """A Report of a Certain Type A ReportOfType has a predefined type associated with it. This type is automatically propagated down to the each of the sections upon serialization by wrapping the generator for each section. .. seealso:: Class :class:`openstack.common.report.models.with_default_view.ModelWithDefaultView` # noqa (the entire class) Class :class:`openstack.common.report.models.base.ReportModel` :func:`openstack.common.report.models.base.ReportModel.set_current_view_type` # noqa :param str tp: the type of the report """ def __init__(self, tp): self.output_type = tp super(ReportOfType, self).__init__() def add_section(self, view, generator, index=None): def with_type(gen): def newgen(): res = gen() try: res.set_current_view_type(self.output_type) except AttributeError: pass return res return newgen super(ReportOfType, self).add_section( view, with_type(generator), index ) class TextReport(ReportOfType): """A Human-Readable Text Report This class defines a report that is designed to be read by a human being. It has nice section headers, and a formatted title. :param str name: the title of the report """ def __init__(self, name): super(TextReport, self).__init__('text') self.name = name # add a title with a generator that creates an empty result model self.add_section(name, lambda: ('|' * 72) + "\n\n") def add_section(self, heading, generator, index=None): """Add a section to the report This method adds a section with the given title, and generator to the report. An index may be specified to insert the section at a given location in the list; If no index is specified, the section is appended to the list. The view is called on the model which results from the generator when the report is run. A generator is simply a method or callable object which takes no arguments and returns a :class:`openstack.common.report.models.base.ReportModel` or similar object. The model is told to serialize as text (if possible) at serialization time by wrapping the generator. The view model's attached view (if any) is wrapped in a :class:`openstack.common.report.views.text.header.TitledView` :param str heading: the title for the section :param generator: the method or class which generates the model :param index: the index at which to insert the section (or None to append) :type index: int or None """ super(TextReport, self).add_section(header_views.TitledView(heading), generator, index) nova-2014.1/nova/openstack/common/report/utils.py0000664000175400017540000000257412323721477023171 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Various utilities for report generation This module includes various utilities used in generating reports. """ import gc class StringWithAttrs(str): """A String that can have arbitrary attributes """ pass def _find_objects(t): """Find Objects in the GC State This horribly hackish method locates objects of a given class in the current python instance's garbage collection state. In case you couldn't tell, this is horribly hackish, but is necessary for locating all green threads, since they don't keep track of themselves like normal threads do in python. :param class t: the class of object to locate :rtype: list :returns: a list of objects of the given type """ return [o for o in gc.get_objects() if isinstance(o, t)] nova-2014.1/nova/openstack/common/report/models/0000775000175400017540000000000012323722546022730 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/models/threading.py0000664000175400017540000000616512323721477025261 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides threading and stack-trace models This module defines classes representing thread, green thread, and stack trace data models """ import traceback import nova.openstack.common.report.models.with_default_views as mwdv import nova.openstack.common.report.views.text.threading as text_views class StackTraceModel(mwdv.ModelWithDefaultViews): """A Stack Trace Model This model holds data from a python stack trace, commonly extracted from running thread information :param stack_state: the python stack_state object """ def __init__(self, stack_state): super(StackTraceModel, self).__init__( text_view=text_views.StackTraceView()) if (stack_state is not None): self['lines'] = [ {'filename': fn, 'line': ln, 'name': nm, 'code': cd} for fn, ln, nm, cd in traceback.extract_stack(stack_state) ] if stack_state.f_exc_type is not None: self['root_exception'] = { 'type': stack_state.f_exc_type, 'value': stack_state.f_exc_value } else: self['root_exception'] = None else: self['lines'] = [] self['root_exception'] = None class ThreadModel(mwdv.ModelWithDefaultViews): """A Thread Model This model holds data for information about an individual thread. It holds both a thread id, as well as a stack trace for the thread .. seealso:: Class :class:`StackTraceModel` :param int thread_id: the id of the thread :param stack: the python stack state for the current thread """ # threadId, stack in sys._current_frams().items() def __init__(self, thread_id, stack): super(ThreadModel, self).__init__(text_view=text_views.ThreadView()) self['thread_id'] = thread_id self['stack_trace'] = StackTraceModel(stack) class GreenThreadModel(mwdv.ModelWithDefaultViews): """A Green Thread Model This model holds data for information about an individual thread. Unlike the thread model, it holds just a stack trace, since green threads do not have thread ids. .. seealso:: Class :class:`StackTraceModel` :param stack: the python stack state for the green thread """ # gr in greenpool.coroutines_running --> gr.gr_frame def __init__(self, stack): super(GreenThreadModel, self).__init__( {'stack_trace': StackTraceModel(stack)}, text_view=text_views.GreenThreadView()) nova-2014.1/nova/openstack/common/report/models/conf.py0000664000175400017540000000406312323721477024234 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Openstack Configuration Model This module defines a class representing the data model for :mod:`oslo.config` configuration options """ import nova.openstack.common.report.models.with_default_views as mwdv import nova.openstack.common.report.views.text.generic as generic_text_views class ConfigModel(mwdv.ModelWithDefaultViews): """A Configuration Options Model This model holds data about a set of configuration options from :mod:`oslo.config`. It supports both the default group of options and named option groups. :param conf_obj: a configuration object :type conf_obj: :class:`oslo.config.cfg.ConfigOpts` """ def __init__(self, conf_obj): kv_view = generic_text_views.KeyValueView(dict_sep=": ", before_dict='') super(ConfigModel, self).__init__(text_view=kv_view) def opt_title(optname, co): return co._opts[optname]['opt'].name self['default'] = dict( (opt_title(optname, conf_obj), conf_obj[optname]) for optname in conf_obj._opts ) groups = {} for groupname in conf_obj._groups: group_obj = conf_obj._groups[groupname] curr_group_opts = dict( (opt_title(optname, group_obj), conf_obj[groupname][optname]) for optname in group_obj._opts ) groups[group_obj.name] = curr_group_opts self.update(groups) nova-2014.1/nova/openstack/common/report/models/base.py0000664000175400017540000000761312323721477024225 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides the base report model This module defines a class representing the basic report data model from which all data models should inherit (or at least implement similar functionality). Data models store unserialized data generated by generators during the report serialization process. """ import collections as col import copy class ReportModel(col.MutableMapping): """A Report Data Model A report data model contains data generated by some generator method or class. Data may be read or written using dictionary-style access, and may be read (but not written) using object-member-style access. Additionally, a data model may have an associated view. This view is used to serialize the model when str() is called on the model. An appropriate object for a view is callable with a single parameter: the model to be serialized. :param data: a dictionary of data to initially associate with the model :param attached_view: a view object to attach to this model """ def __init__(self, data=None, attached_view=None): self.attached_view = attached_view self.data = data or {} def __str__(self): self_cpy = copy.deepcopy(self) for key in self_cpy: if getattr(self_cpy[key], 'attached_view', None) is not None: self_cpy[key] = str(self_cpy[key]) if self.attached_view is not None: return self.attached_view(self_cpy) else: raise Exception("Cannot stringify model: no attached view") def __repr__(self): if self.attached_view is not None: return ("").format(cl=type(self), dt=self.data, vw=type(self.attached_view)) else: return ("").format(cl=type(self), dt=self.data) def __getitem__(self, attrname): return self.data[attrname] def __setitem__(self, attrname, attrval): self.data[attrname] = attrval def __delitem__(self, attrname): del self.data[attrname] def __contains__(self, key): return self.data.__contains__(key) def __getattr__(self, attrname): try: return self.data[attrname] except KeyError: raise AttributeError( "'{cl}' object has no attribute '{an}'".format( cl=type(self).__name__, an=attrname ) ) def __len__(self): return len(self.data) def __iter__(self): return self.data.__iter__() def set_current_view_type(self, tp): """Set the current view type This method attempts to set the current view type for this model and all submodels by calling itself recursively on all values (and ignoring the ones that are not themselves models) :param tp: the type of the view ('text', 'json', 'xml', etc) """ for key in self: try: self[key].set_current_view_type(tp) except AttributeError: pass nova-2014.1/nova/openstack/common/report/models/version.py0000664000175400017540000000274512323721477025001 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Openstack Version Info Model This module defines a class representing the data model for Openstack package and version information """ import nova.openstack.common.report.models.with_default_views as mwdv import nova.openstack.common.report.views.text.generic as generic_text_views class PackageModel(mwdv.ModelWithDefaultViews): """A Package Information Model This model holds information about the current package. It contains vendor, product, and version information. :param str vendor: the product vendor :param str product: the product name :param str version: the product version """ def __init__(self, vendor, product, version): super(PackageModel, self).__init__( text_view=generic_text_views.KeyValueView() ) self['vendor'] = vendor self['product'] = product self['version'] = version nova-2014.1/nova/openstack/common/report/models/with_default_views.py0000664000175400017540000000570312323721477027205 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import copy import nova.openstack.common.report.models.base as base_model import nova.openstack.common.report.views.json.generic as jsonviews import nova.openstack.common.report.views.text.generic as textviews import nova.openstack.common.report.views.xml.generic as xmlviews class ModelWithDefaultViews(base_model.ReportModel): """A Model With Default Views of Various Types A model with default views has several predefined views, each associated with a given type. This is often used for when a submodel should have an attached view, but the view differs depending on the serialization format Paramaters are as the superclass, with the exception of any parameters ending in '_view': these parameters get stored as default views. The default 'default views' are text :class:`openstack.common.views.text.generic.KeyValueView` xml :class:`openstack.common.views.xml.generic.KeyValueView` json :class:`openstack.common.views.json.generic.KeyValueView` .. function:: to_type() ('type' is one of the 'default views' defined for this model) Serializes this model using the default view for 'type' :rtype: str :returns: this model serialized as 'type' """ def __init__(self, *args, **kwargs): self.views = { 'text': textviews.KeyValueView(), 'json': jsonviews.KeyValueView(), 'xml': xmlviews.KeyValueView() } newargs = copy.copy(kwargs) for k in kwargs: if k.endswith('_view'): self.views[k[:-5]] = kwargs[k] del newargs[k] super(ModelWithDefaultViews, self).__init__(*args, **newargs) def set_current_view_type(self, tp): self.attached_view = self.views[tp] super(ModelWithDefaultViews, self).set_current_view_type(tp) def __getattr__(self, attrname): if attrname[:3] == 'to_': if self.views[attrname[3:]] is not None: return lambda: self.views[attrname[3:]](self) else: raise NotImplementedError(( "Model {cn.__module__}.{cn.__name__} does not have" + " a default view for " "{tp}").format(cn=type(self), tp=attrname[3:])) else: return super(ModelWithDefaultViews, self).__getattr__(attrname) nova-2014.1/nova/openstack/common/report/models/__init__.py0000664000175400017540000000136412323721477025047 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides data models This module provides both the base data model, as well as several predefined specific data models to be used in reports. """ nova-2014.1/nova/openstack/common/report/guru_meditation_report.py0000664000175400017540000001332512323721477026617 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Guru Meditation Report This module defines the actual OpenStack Guru Meditation Report class. This can be used in the OpenStack command definition files. For example, in a nova command module (under nova/cmd): .. code-block:: python :emphasize-lines: 8,9,10 CONF = cfg.CONF # maybe import some options here... def main(): config.parse_args(sys.argv) logging.setup('blah') TextGuruMeditation.register_section('Some Special Section', special_section_generator) TextGuruMeditation.setup_autorun(version_object) server = service.Service.create(binary='some-service', topic=CONF.some_service_topic) service.serve(server) service.wait() Then, you can do .. code-block:: bash $ kill -USR1 $SERVICE_PID and get a Guru Meditation Report in the file or terminal where stderr is logged for that given service. """ from __future__ import print_function import signal import sys from nova.openstack.common.report.generators import conf as cgen from nova.openstack.common.report.generators import threading as tgen from nova.openstack.common.report.generators import version as pgen from nova.openstack.common.report import report class GuruMeditation(object): """A Guru Meditation Report Mixin/Base Class This class is a base class for Guru Meditation Reports. It provides facilities for registering sections and setting up functionality to auto-run the report on a certain signal. This class should always be used in conjunction with a Report class via multiple inheritance. It should always come first in the class list to ensure the MRO is correct. """ def __init__(self, version_obj, *args, **kwargs): self.version_obj = version_obj super(GuruMeditation, self).__init__(*args, **kwargs) self.start_section_index = len(self.sections) @classmethod def register_section(cls, section_title, generator): """Register a New Section This method registers a persistent section for the current class. :param str section_title: the title of the section :param generator: the generator for the section """ try: cls.persistent_sections.append([section_title, generator]) except AttributeError: cls.persistent_sections = [[section_title, generator]] @classmethod def setup_autorun(cls, version, signum=None): """Set Up Auto-Run This method sets up the Guru Meditation Report to automatically get dumped to stderr when the given signal is received. :param version: the version object for the current product :param signum: the signal to associate with running the report """ if not signum and hasattr(signal, 'SIGUSR1'): # SIGUSR1 is not supported on all platforms signum = signal.SIGUSR1 if signum: signal.signal(signum, lambda *args: cls.handle_signal(version, *args)) @classmethod def handle_signal(cls, version, *args): """The Signal Handler This method (indirectly) handles receiving a registered signal and dumping the Guru Meditation Report to stderr. This method is designed to be curried into a proper signal handler by currying out the version parameter. :param version: the version object for the current product """ try: res = cls(version).run() except Exception: print("Unable to run Guru Meditation Report!", file=sys.stderr) else: print(res, file=sys.stderr) def _readd_sections(self): del self.sections[self.start_section_index:] self.add_section('Package', pgen.PackageReportGenerator(self.version_obj)) self.add_section('Threads', tgen.ThreadReportGenerator()) self.add_section('Green Threads', tgen.GreenThreadReportGenerator()) self.add_section('Configuration', cgen.ConfigReportGenerator()) try: for section_title, generator in self.persistent_sections: self.add_section(section_title, generator) except AttributeError: pass def run(self): self._readd_sections() return super(GuruMeditation, self).run() # GuruMeditation must come first to get the correct MRO class TextGuruMeditation(GuruMeditation, report.TextReport): """A Text Guru Meditation Report This report is the basic human-readable Guru Meditation Report It contains the following sections by default (in addition to any registered persistent sections): - Package Information - Threads List - Green Threads List - Configuration Options :param version_obj: the version object for the current product """ def __init__(self, version_obj): super(TextGuruMeditation, self).__init__(version_obj, 'Guru Meditation') nova-2014.1/nova/openstack/common/report/__init__.py0000664000175400017540000000211212323721477023554 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides a way to generate serializable reports This package/module provides mechanisms for defining reports which may then be serialized into various data types. Each report ( :class:`openstack.common.report.report.BasicReport` ) is composed of one or more report sections ( :class:`openstack.common.report.report.BasicSection` ), which contain generators which generate data models ( :class:`openstack.common.report.models.base.ReportModels` ), which are then serialized by views. """ nova-2014.1/nova/openstack/common/report/views/0000775000175400017540000000000012323722546022602 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/views/xml/0000775000175400017540000000000012323722546023402 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/views/xml/generic.py0000664000175400017540000000605312323721477025376 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides generic XML views This modules defines several basic views for serializing data to XML. Submodels that have already been serialized as XML may have their string values marked with `__is_xml__ = True` using :class:`openstack.common.report.utils.StringWithAttrs` (each of the classes within this module does this automatically, and non-naive serializers check for this attribute and handle such strings specially) """ import collections as col import copy import xml.etree.ElementTree as ET import six import nova.openstack.common.report.utils as utils class KeyValueView(object): """A Key-Value XML View This view performs advanced serialization of a data model into XML. It first deserializes any values marked as XML so that they can be properly reserialized later. It then follows the following rules to perform serialization: key : text/xml The tag name is the key name, and the contents are the text or xml key : Sequence A wrapper tag is created with the key name, and each item is placed in an 'item' tag key : Mapping A wrapper tag is created with the key name, and the serialize is called on each key-value pair (such that each key gets its own tag) :param str wrapper_name: the name of the top-level element """ def __init__(self, wrapper_name="model"): self.wrapper_name = wrapper_name def __call__(self, model): # this part deals with subviews that were already serialized cpy = copy.deepcopy(model) for key, valstr in model.items(): if getattr(valstr, '__is_xml__', False): cpy[key] = ET.fromstring(valstr) def serialize(rootmodel, rootkeyname): res = ET.Element(rootkeyname) if isinstance(rootmodel, col.Mapping): for key in rootmodel: res.append(serialize(rootmodel[key], key)) elif (isinstance(rootmodel, col.Sequence) and not isinstance(rootmodel, six.string_types)): for val in rootmodel: res.append(serialize(val, 'item')) elif ET.iselement(rootmodel): res.append(rootmodel) else: res.text = str(rootmodel) return res res = utils.StringWithAttrs(ET.tostring(serialize(cpy, self.wrapper_name))) res.__is_xml__ = True return res nova-2014.1/nova/openstack/common/report/views/xml/__init__.py0000664000175400017540000000131112323721477025511 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides basic XML views This module provides several basic views which serialize models into XML. """ nova-2014.1/nova/openstack/common/report/views/json/0000775000175400017540000000000012323722546023553 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/views/json/generic.py0000664000175400017540000000436712323721477025555 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides generic JSON views This modules defines several basic views for serializing data to JSON. Submodels that have already been serialized as JSON may have their string values marked with `__is_json__ = True` using :class:`openstack.common.report.utils.StringWithAttrs` (each of the classes within this module does this automatically, and non-naive serializers check for this attribute and handle such strings specially) """ import copy from nova.openstack.common import jsonutils as json import nova.openstack.common.report.utils as utils class BasicKeyValueView(object): """A Basic Key-Value JSON View This view performs a naive serialization of a model into JSON by simply calling :func:`json.dumps` on the model """ def __call__(self, model): res = utils.StringWithAttrs(json.dumps(model.data)) res.__is_json__ = True return res class KeyValueView(object): """A Key-Value JSON View This view performs advanced serialization to a model into JSON. It does so by first checking all values to see if they are marked as JSON. If so, they are deserialized using :func:`json.loads`. Then, the copy of the model with all JSON deserialized is reserialized into proper nested JSON using :func:`json.dumps`. """ def __call__(self, model): # this part deals with subviews that were already serialized cpy = copy.deepcopy(model) for key, valstr in model.items(): if getattr(valstr, '__is_json__', False): cpy[key] = json.loads(valstr) res = utils.StringWithAttrs(json.dumps(cpy.data)) res.__is_json__ = True return res nova-2014.1/nova/openstack/common/report/views/json/__init__.py0000664000175400017540000000131312323721477025664 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides basic JSON views This module provides several basic views which serialize models into JSON. """ nova-2014.1/nova/openstack/common/report/views/jinja_view.py0000664000175400017540000000776612323721477025323 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides Jinja Views This module provides views that utilize the Jinja templating system for serialization. For more information on Jinja, please see http://jinja.pocoo.org/ . """ import jinja2 class JinjaView(object): """A Jinja View This view renders the given model using the provided Jinja template. The template can be given in various ways. If the `VIEw_TEXT` property is defined, that is used as template. Othewise, if a `path` parameter is passed to the constructor, that is used to load a file containing the template. If the `path` parameter is None, the `text` parameter is used as the template. The leading newline character and trailing newline character are stripped from the template (provided they exist). Baseline indentation is also stripped from each line. The baseline indentation is determined by checking the indentation of the first line, after stripping off the leading newline (if any). :param str path: the path to the Jinja template :param str text: the text of the Jinja template """ def __init__(self, path=None, text=None): try: self._text = self.VIEW_TEXT except AttributeError: if path is not None: with open(path, 'r') as f: self._text = f.read() elif text is not None: self._text = text else: self._text = "" if self._text[0] == "\n": self._text = self._text[1:] newtext = self._text.lstrip() amt = len(self._text) - len(newtext) if (amt > 0): base_indent = self._text[0:amt] lines = self._text.splitlines() newlines = [] for line in lines: if line.startswith(base_indent): newlines.append(line[amt:]) else: newlines.append(line) self._text = "\n".join(newlines) if self._text[-1] == "\n": self._text = self._text[:-1] self._regentemplate = True self._templatecache = None def __call__(self, model): return self.template.render(**model) @property def template(self): """Get the Compiled Template Gets the compiled template, using a cached copy if possible (stored in attr:`_templatecache`) or otherwise recompiling the template if the compiled template is not present or is invalid (due to attr:`_regentemplate` being set to True). :returns: the compiled Jinja template :rtype: :class:`jinja2.Template` """ if self._templatecache is None or self._regentemplate: self._templatecache = jinja2.Template(self._text) self._regentemplate = False return self._templatecache def _gettext(self): """Get the Template Text Gets the text of the current template :returns: the text of the Jinja template :rtype: str """ return self._text def _settext(self, textval): """Set the Template Text Sets the text of the current template, marking it for recompilation next time the compiled template is retrived via attr:`template` . :param str textval: the new text of the Jinja template """ self._text = textval self.regentemplate = True text = property(_gettext, _settext) nova-2014.1/nova/openstack/common/report/views/text/0000775000175400017540000000000012323722546023566 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/report/views/text/threading.py0000664000175400017540000000465412323721477026120 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides thread and stack-trace views This module provides a collection of views for visualizing threads, green threads, and stack traces in human-readable form. """ import nova.openstack.common.report.views.jinja_view as jv class StackTraceView(jv.JinjaView): """A Stack Trace View This view displays stack trace models defined by :class:`openstack.common.report.models.threading.StackTraceModel` """ VIEW_TEXT = ( "{% if root_exception is not none %}" "Exception: {{ root_exception }}\n" "------------------------------------\n" "\n" "{% endif %}" "{% for line in lines %}\n" "{{ line.filename }}:{{ line.line }} in {{ line.name }}\n" " {% if line.code is not none %}" "`{{ line.code }}`" "{% else %}" "(source not found)" "{% endif %}\n" "{% else %}\n" "No Traceback!\n" "{% endfor %}" ) class GreenThreadView(object): """A Green Thread View This view displays a green thread provided by the data model :class:`openstack.common.report.models.threading.GreenThreadModel` # noqa """ FORMAT_STR = "------{thread_str: ^60}------" + "\n" + "{stack_trace}" def __call__(self, model): return self.FORMAT_STR.format( thread_str=" Green Thread ", stack_trace=model.stack_trace ) class ThreadView(object): """A Thread Collection View This view displays a python thread provided by the data model :class:`openstack.common.report.models.threading.ThreadModel` # noqa """ FORMAT_STR = "------{thread_str: ^60}------" + "\n" + "{stack_trace}" def __call__(self, model): return self.FORMAT_STR.format( thread_str=" Thread #{0} ".format(model.thread_id), stack_trace=model.stack_trace ) nova-2014.1/nova/openstack/common/report/views/text/generic.py0000664000175400017540000001562612323721477025570 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides generic text views This modules provides several generic views for serializing models into human-readable text. """ import collections as col import six class MultiView(object): """A Text View Containing Multiple Views This view simply serializes each value in the data model, and then joins them with newlines (ignoring the key values altogether). This is useful for serializing lists of models (as array-like dicts). """ def __call__(self, model): res = [str(model[key]) for key in model] return "\n".join(res) class BasicKeyValueView(object): """A Basic Key-Value Text View This view performs a naive serialization of a model into text using a basic key-value method, where each key-value pair is rendered as "key = str(value)" """ def __call__(self, model): res = "" for key in model: res += "{key} = {value}\n".format(key=key, value=model[key]) return res class KeyValueView(object): """A Key-Value Text View This view performs an advanced serialization of a model into text by following the following set of rules: key : text key = text rootkey : Mapping :: rootkey = serialize(key, value) key : Sequence :: key = serialize(item) :param str indent_str: the string used to represent one "indent" :param str key_sep: the separator to use between keys and values :param str dict_sep: the separator to use after a dictionary root key :param str list_sep: the separator to use after a list root key :param str anon_dict: the "key" to use when there is a dict in a list (does not automatically use the dict separator) :param before_dict: content to place on the line(s) before the a dict root key (use None to avoid inserting an extra line) :type before_dict: str or None :param before_list: content to place on the line(s) before the a list root key (use None to avoid inserting an extra line) :type before_list: str or None """ def __init__(self, indent_str=' ', key_sep=' = ', dict_sep=' = ', list_sep=' = ', anon_dict='[dict]', before_dict=None, before_list=None): self.indent_str = indent_str self.key_sep = key_sep self.dict_sep = dict_sep self.list_sep = list_sep self.anon_dict = anon_dict self.before_dict = before_dict self.before_list = before_list def __call__(self, model): def serialize(root, rootkey, indent): res = [] if rootkey is not None: res.append((self.indent_str * indent) + rootkey) if isinstance(root, col.Mapping): if rootkey is None and indent > 0: res.append((self.indent_str * indent) + self.anon_dict) elif rootkey is not None: res[0] += self.dict_sep if self.before_dict is not None: res.insert(0, self.before_dict) for key in root: res.extend(serialize(root[key], key, indent + 1)) elif (isinstance(root, col.Sequence) and not isinstance(root, six.string_types)): if rootkey is not None: res[0] += self.list_sep if self.before_list is not None: res.insert(0, self.before_list) for val in root: res.extend(serialize(val, None, indent + 1)) else: str_root = str(root) if '\n' in str_root: # we are in a submodel if rootkey is not None: res[0] += self.dict_sep list_root = [(self.indent_str * (indent + 1)) + line for line in str_root.split('\n')] res.extend(list_root) else: # just a normal key or list entry try: res[0] += self.key_sep + str_root except IndexError: res = [(self.indent_str * indent) + str_root] return res return "\n".join(serialize(model, None, -1)) class TableView(object): """A Basic Table Text View This view performs serialization of data into a basic table with predefined column names and mappings. Column width is auto-calculated evenly, column values are automatically truncated accordingly. Values are centered in the columns. :param [str] column_names: the headers for each of the columns :param [str] column_values: the item name to match each column to in each row :param str table_prop_name: the name of the property within the model containing the row models """ def __init__(self, column_names, column_values, table_prop_name): self.table_prop_name = table_prop_name self.column_names = column_names self.column_values = column_values self.column_width = (72 - len(column_names) + 1) / len(column_names) column_headers = "|".join( "{ch[" + str(n) + "]: ^" + str(self.column_width) + "}" for n in range(len(column_names)) ) # correct for float-to-int roundoff error test_fmt = column_headers.format(ch=column_names) if len(test_fmt) < 72: column_headers += ' ' * (72 - len(test_fmt)) vert_divider = '-' * 72 self.header_fmt_str = column_headers + "\n" + vert_divider + "\n" self.row_fmt_str = "|".join( "{cv[" + str(n) + "]: ^" + str(self.column_width) + "}" for n in range(len(column_values)) ) def __call__(self, model): res = self.header_fmt_str.format(ch=self.column_names) for raw_row in model[self.table_prop_name]: row = [str(raw_row[prop_name]) for prop_name in self.column_values] # double format is in case we have roundoff error res += '{0: <72}\n'.format(self.row_fmt_str.format(cv=row)) return res nova-2014.1/nova/openstack/common/report/views/text/header.py0000664000175400017540000000277612323721477025406 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Text Views With Headers This package defines several text views with headers """ class HeaderView(object): """A Text View With a Header This view simply serializes the model and places the given header on top. :param header: the header (can be anything on which str() can be called) """ def __init__(self, header): self.header = header def __call__(self, model): return str(self.header) + "\n" + str(model) class TitledView(HeaderView): """A Text View With a Title This view simply serializes the model, and places a preformatted header containing the given title text on top. The title text can be up to 64 characters long. :param str title: the title of the view """ FORMAT_STR = ('=' * 72) + "\n===={0: ^64}====\n" + ('=' * 72) def __init__(self, title): super(TitledView, self).__init__(self.FORMAT_STR.format(title)) nova-2014.1/nova/openstack/common/report/views/text/__init__.py0000664000175400017540000000133212323721477025700 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides basic text views This module provides several basic views which serialize models into human-readable text. """ nova-2014.1/nova/openstack/common/report/views/__init__.py0000664000175400017540000000163012323721477024715 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Provides predefined views This module provides a collection of predefined views for use in reports. It is separated by type (xml, json, or text). Each type contains a submodule called 'generic' containing several basic, universal views for that type. There is also a predefined view that utilizes Jinja. """ nova-2014.1/nova/openstack/common/versionutils.py0000664000175400017540000000330012323721510023234 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Helpers for comparing version strings. """ import pkg_resources def is_compatible(requested_version, current_version, same_major=True): """Determine whether `requested_version` is satisfied by `current_version`; in other words, `current_version` is >= `requested_version`. :param requested_version: version to check for compatibility :param current_version: version to check against :param same_major: if True, the major version must be identical between `requested_version` and `current_version`. This is used when a major-version difference indicates incompatibility between the two versions. Since this is the common-case in practice, the default is True. :returns: True if compatible, False if not """ requested_parts = pkg_resources.parse_version(requested_version) current_parts = pkg_resources.parse_version(current_version) if same_major and (requested_parts[0] != current_parts[0]): return False return current_parts >= requested_parts nova-2014.1/nova/openstack/common/local.py0000664000175400017540000000321512323721477021601 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Local storage of variables using weak references""" import threading import weakref class WeakLocal(threading.local): def __getattribute__(self, attr): rval = super(WeakLocal, self).__getattribute__(attr) if rval: # NOTE(mikal): this bit is confusing. What is stored is a weak # reference, not the value itself. We therefore need to lookup # the weak reference and return the inner value here. rval = rval() return rval def __setattr__(self, attr, value): value = weakref.ref(value) return super(WeakLocal, self).__setattr__(attr, value) # NOTE(mikal): the name "store" should be deprecated in the future store = WeakLocal() # A "weak" store uses weak references and allows an object to fall out of scope # when it falls out of scope in the code that uses the thread local storage. A # "strong" store will hold a reference to the object so that it never falls out # of scope. weak_store = WeakLocal() strong_store = threading.local() nova-2014.1/nova/openstack/common/fixture/0000775000175400017540000000000012323722546021620 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/fixture/moxstubout.py0000664000175400017540000000233612323721477024431 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures from six.moves import mox # noqa class MoxStubout(fixtures.Fixture): """Deal with code around mox and stubout as a fixture.""" def setUp(self): super(MoxStubout, self).setUp() # emulate some of the mox stuff, we can't use the metaclass # because it screws with our generators self.mox = mox.Mox() self.stubs = self.mox.stubs self.addCleanup(self.mox.UnsetStubs) self.addCleanup(self.mox.VerifyAll) nova-2014.1/nova/openstack/common/fixture/logging.py0000664000175400017540000000213512323721477023623 0ustar jenkinsjenkins00000000000000# All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures def get_logging_handle_error_fixture(): """returns a fixture to make logging raise formatting exceptions. Usage: self.useFixture(logging.get_logging_handle_error_fixture()) """ return fixtures.MonkeyPatch('logging.Handler.handleError', _handleError) def _handleError(self, record): """Monkey patch for logging.Handler.handleError. The default handleError just logs the error to stderr but we want the option of actually raising an exception. """ raise nova-2014.1/nova/openstack/common/fixture/lockutils.py0000664000175400017540000000353712323721477024215 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures from nova.openstack.common import lockutils class LockFixture(fixtures.Fixture): """External locking fixture. This fixture is basically an alternative to the synchronized decorator with the external flag so that tearDowns and addCleanups will be included in the lock context for locking between tests. The fixture is recommended to be the first line in a test method, like so:: def test_method(self): self.useFixture(LockFixture) ... or the first line in setUp if all the test methods in the class are required to be serialized. Something like:: class TestCase(testtools.testcase): def setUp(self): self.useFixture(LockFixture) super(TestCase, self).setUp() ... This is because addCleanups are put on a LIFO queue that gets run after the test method exits. (either by completing or raising an exception) """ def __init__(self, name, lock_file_prefix=None): self.mgr = lockutils.lock(name, lock_file_prefix, True) def setUp(self): super(LockFixture, self).setUp() self.addCleanup(self.mgr.__exit__, None, None, None) self.mgr.__enter__() nova-2014.1/nova/openstack/common/fixture/mockpatch.py0000664000175400017540000000313412323721477024146 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures import mock class PatchObject(fixtures.Fixture): """Deal with code around mock.""" def __init__(self, obj, attr, new=mock.DEFAULT, **kwargs): self.obj = obj self.attr = attr self.kwargs = kwargs self.new = new def setUp(self): super(PatchObject, self).setUp() _p = mock.patch.object(self.obj, self.attr, self.new, **self.kwargs) self.mock = _p.start() self.addCleanup(_p.stop) class Patch(fixtures.Fixture): """Deal with code around mock.patch.""" def __init__(self, obj, new=mock.DEFAULT, **kwargs): self.obj = obj self.kwargs = kwargs self.new = new def setUp(self): super(Patch, self).setUp() _p = mock.patch(self.obj, self.new, **self.kwargs) self.mock = _p.start() self.addCleanup(_p.stop) nova-2014.1/nova/openstack/common/fixture/config.py0000664000175400017540000000576612323721477023457 0ustar jenkinsjenkins00000000000000# # Copyright 2013 Mirantis, Inc. # Copyright 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import fixtures from oslo.config import cfg import six class Config(fixtures.Fixture): """Allows overriding configuration settings for the test. `conf` will be reset on cleanup. """ def __init__(self, conf=cfg.CONF): self.conf = conf def setUp(self): super(Config, self).setUp() # NOTE(morganfainberg): unregister must be added to cleanup before # reset is because cleanup works in reverse order of registered items, # and a reset must occur before unregistering options can occur. self.addCleanup(self._unregister_config_opts) self.addCleanup(self.conf.reset) self._registered_config_opts = {} def config(self, **kw): """Override configuration values. The keyword arguments are the names of configuration options to override and their values. If a `group` argument is supplied, the overrides are applied to the specified configuration option group, otherwise the overrides are applied to the ``default`` group. """ group = kw.pop('group', None) for k, v in six.iteritems(kw): self.conf.set_override(k, v, group) def _unregister_config_opts(self): for group in self._registered_config_opts: self.conf.unregister_opts(self._registered_config_opts[group], group=group) def register_opt(self, opt, group=None): """Register a single option for the test run. Options registered in this manner will automatically be unregistered during cleanup. If a `group` argument is supplied, it will register the new option to that group, otherwise the option is registered to the ``default`` group. """ self.conf.register_opt(opt, group=group) self._registered_config_opts.setdefault(group, set()).add(opt) def register_opts(self, opts, group=None): """Register multiple options for the test run. This works in the same manner as register_opt() but takes a list of options as the first argument. All arguments will be registered to the same group if the ``group`` argument is supplied, otherwise all options will be registered to the ``default`` group. """ for opt in opts: self.register_opt(opt, group=group) nova-2014.1/nova/openstack/common/fixture/__init__.py0000664000175400017540000000000012323721477023721 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/xmlutils.py0000664000175400017540000000551512323721510022361 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # 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 xml.dom import minidom from xml.parsers import expat from xml import sax from xml.sax import expatreader class ProtectedExpatParser(expatreader.ExpatParser): """An expat parser which disables DTD's and entities by default.""" def __init__(self, forbid_dtd=True, forbid_entities=True, *args, **kwargs): # Python 2.x old style class expatreader.ExpatParser.__init__(self, *args, **kwargs) self.forbid_dtd = forbid_dtd self.forbid_entities = forbid_entities def start_doctype_decl(self, name, sysid, pubid, has_internal_subset): raise ValueError("Inline DTD forbidden") def entity_decl(self, entityName, is_parameter_entity, value, base, systemId, publicId, notationName): raise ValueError(" entity declaration forbidden") def unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): # expat 1.2 raise ValueError(" unparsed entity forbidden") def external_entity_ref(self, context, base, systemId, publicId): raise ValueError(" external entity forbidden") def notation_decl(self, name, base, sysid, pubid): raise ValueError(" notation forbidden") def reset(self): expatreader.ExpatParser.reset(self) if self.forbid_dtd: self._parser.StartDoctypeDeclHandler = self.start_doctype_decl self._parser.EndDoctypeDeclHandler = None if self.forbid_entities: self._parser.EntityDeclHandler = self.entity_decl self._parser.UnparsedEntityDeclHandler = self.unparsed_entity_decl self._parser.ExternalEntityRefHandler = self.external_entity_ref self._parser.NotationDeclHandler = self.notation_decl try: self._parser.SkippedEntityHandler = None except AttributeError: # some pyexpat versions do not support SkippedEntity pass def safe_minidom_parse_string(xml_string): """Parse an XML string using minidom safely. """ try: return minidom.parseString(xml_string, parser=ProtectedExpatParser()) except sax.SAXParseException: raise expat.ExpatError() nova-2014.1/nova/openstack/common/db/0000775000175400017540000000000012323722546020517 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/db/options.py0000664000175400017540000001746312323721477022601 0ustar jenkinsjenkins00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import copy from oslo.config import cfg database_opts = [ cfg.StrOpt('sqlite_db', deprecated_group='DEFAULT', default='nova.sqlite', help='The file name to use with SQLite'), cfg.BoolOpt('sqlite_synchronous', deprecated_group='DEFAULT', default=True, help='If True, SQLite uses synchronous mode'), cfg.StrOpt('backend', default='sqlalchemy', deprecated_name='db_backend', deprecated_group='DEFAULT', help='The backend to use for db'), cfg.StrOpt('connection', help='The SQLAlchemy connection string used to connect to the ' 'database', secret=True, deprecated_opts=[cfg.DeprecatedOpt('sql_connection', group='DEFAULT'), cfg.DeprecatedOpt('sql_connection', group='DATABASE'), cfg.DeprecatedOpt('connection', group='sql'), ]), cfg.StrOpt('mysql_sql_mode', help='The SQL mode to be used for MySQL sessions ' '(default is empty, meaning do not override ' 'any server-side SQL mode setting)'), cfg.IntOpt('idle_timeout', default=3600, deprecated_opts=[cfg.DeprecatedOpt('sql_idle_timeout', group='DEFAULT'), cfg.DeprecatedOpt('sql_idle_timeout', group='DATABASE'), cfg.DeprecatedOpt('idle_timeout', group='sql')], help='Timeout before idle sql connections are reaped'), cfg.IntOpt('min_pool_size', default=1, deprecated_opts=[cfg.DeprecatedOpt('sql_min_pool_size', group='DEFAULT'), cfg.DeprecatedOpt('sql_min_pool_size', group='DATABASE')], help='Minimum number of SQL connections to keep open in a ' 'pool'), cfg.IntOpt('max_pool_size', default=None, deprecated_opts=[cfg.DeprecatedOpt('sql_max_pool_size', group='DEFAULT'), cfg.DeprecatedOpt('sql_max_pool_size', group='DATABASE')], help='Maximum number of SQL connections to keep open in a ' 'pool'), cfg.IntOpt('max_retries', default=10, deprecated_opts=[cfg.DeprecatedOpt('sql_max_retries', group='DEFAULT'), cfg.DeprecatedOpt('sql_max_retries', group='DATABASE')], help='Maximum db connection retries during startup. ' '(setting -1 implies an infinite retry count)'), cfg.IntOpt('retry_interval', default=10, deprecated_opts=[cfg.DeprecatedOpt('sql_retry_interval', group='DEFAULT'), cfg.DeprecatedOpt('reconnect_interval', group='DATABASE')], help='Interval between retries of opening a sql connection'), cfg.IntOpt('max_overflow', default=None, deprecated_opts=[cfg.DeprecatedOpt('sql_max_overflow', group='DEFAULT'), cfg.DeprecatedOpt('sqlalchemy_max_overflow', group='DATABASE')], help='If set, use this value for max_overflow with sqlalchemy'), cfg.IntOpt('connection_debug', default=0, deprecated_opts=[cfg.DeprecatedOpt('sql_connection_debug', group='DEFAULT')], help='Verbosity of SQL debugging information. 0=None, ' '100=Everything'), cfg.BoolOpt('connection_trace', default=False, deprecated_opts=[cfg.DeprecatedOpt('sql_connection_trace', group='DEFAULT')], help='Add python stack traces to SQL as comment strings'), cfg.IntOpt('pool_timeout', default=None, deprecated_opts=[cfg.DeprecatedOpt('sqlalchemy_pool_timeout', group='DATABASE')], help='If set, use this value for pool_timeout with sqlalchemy'), cfg.BoolOpt('use_db_reconnect', default=False, help='Enable the experimental use of database reconnect ' 'on connection lost'), cfg.IntOpt('db_retry_interval', default=1, help='seconds between db connection retries'), cfg.BoolOpt('db_inc_retry_interval', default=True, help='Whether to increase interval between db connection ' 'retries, up to db_max_retry_interval'), cfg.IntOpt('db_max_retry_interval', default=10, help='max seconds between db connection retries, if ' 'db_inc_retry_interval is enabled'), cfg.IntOpt('db_max_retries', default=20, help='maximum db connection retries before error is raised. ' '(setting -1 implies an infinite retry count)'), ] CONF = cfg.CONF CONF.register_opts(database_opts, 'database') def set_defaults(sql_connection, sqlite_db, max_pool_size=None, max_overflow=None, pool_timeout=None): """Set defaults for configuration variables.""" cfg.set_defaults(database_opts, connection=sql_connection, sqlite_db=sqlite_db) # Update the QueuePool defaults if max_pool_size is not None: cfg.set_defaults(database_opts, max_pool_size=max_pool_size) if max_overflow is not None: cfg.set_defaults(database_opts, max_overflow=max_overflow) if pool_timeout is not None: cfg.set_defaults(database_opts, pool_timeout=pool_timeout) def list_opts(): """Returns a list of oslo.config options available in the library. The returned list includes all oslo.config options which may be registered at runtime by the library. Each element of the list is a tuple. The first element is the name of the group under which the list of elements in the second element will be registered. A group name of None corresponds to the [DEFAULT] group in config files. The purpose of this is to allow tools like the Oslo sample config file generator to discover the options exposed to users by this library. :returns: a list of (group_name, opts) tuples """ return [('database', copy.deepcopy(database_opts))] nova-2014.1/nova/openstack/common/db/sqlalchemy/0000775000175400017540000000000012323722546022661 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/db/sqlalchemy/migration.py0000664000175400017540000002355612323721477025241 0ustar jenkinsjenkins00000000000000# coding: utf-8 # # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # Base on code in migrate/changeset/databases/sqlite.py which is under # the following license: # # The MIT License # # Copyright (c) 2009 Evan Rosson, Jan Dittberner, Domen Kožar # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import os import re from migrate.changeset import ansisql from migrate.changeset.databases import sqlite from migrate import exceptions as versioning_exceptions from migrate.versioning import api as versioning_api from migrate.versioning.repository import Repository import sqlalchemy from sqlalchemy.schema import UniqueConstraint from nova.openstack.common.db import exception from nova.openstack.common.gettextutils import _ def _get_unique_constraints(self, table): """Retrieve information about existing unique constraints of the table This feature is needed for _recreate_table() to work properly. Unfortunately, it's not available in sqlalchemy 0.7.x/0.8.x. """ data = table.metadata.bind.execute( """SELECT sql FROM sqlite_master WHERE type='table' AND name=:table_name""", table_name=table.name ).fetchone()[0] UNIQUE_PATTERN = "CONSTRAINT (\w+) UNIQUE \(([^\)]+)\)" return [ UniqueConstraint( *[getattr(table.columns, c.strip(' "')) for c in cols.split(",")], name=name ) for name, cols in re.findall(UNIQUE_PATTERN, data) ] def _recreate_table(self, table, column=None, delta=None, omit_uniques=None): """Recreate the table properly Unlike the corresponding original method of sqlalchemy-migrate this one doesn't drop existing unique constraints when creating a new one. """ table_name = self.preparer.format_table(table) # we remove all indexes so as not to have # problems during copy and re-create for index in table.indexes: index.drop() # reflect existing unique constraints for uc in self._get_unique_constraints(table): table.append_constraint(uc) # omit given unique constraints when creating a new table if required table.constraints = set([ cons for cons in table.constraints if omit_uniques is None or cons.name not in omit_uniques ]) self.append('ALTER TABLE %s RENAME TO migration_tmp' % table_name) self.execute() insertion_string = self._modify_table(table, column, delta) table.create(bind=self.connection) self.append(insertion_string % {'table_name': table_name}) self.execute() self.append('DROP TABLE migration_tmp') self.execute() def _visit_migrate_unique_constraint(self, *p, **k): """Drop the given unique constraint The corresponding original method of sqlalchemy-migrate just raises NotImplemented error """ self.recreate_table(p[0].table, omit_uniques=[p[0].name]) def patch_migrate(): """A workaround for SQLite's inability to alter things SQLite abilities to alter tables are very limited (please read http://www.sqlite.org/lang_altertable.html for more details). E. g. one can't drop a column or a constraint in SQLite. The workaround for this is to recreate the original table omitting the corresponding constraint (or column). sqlalchemy-migrate library has recreate_table() method that implements this workaround, but it does it wrong: - information about unique constraints of a table is not retrieved. So if you have a table with one unique constraint and a migration adding another one you will end up with a table that has only the latter unique constraint, and the former will be lost - dropping of unique constraints is not supported at all The proper way to fix this is to provide a pull-request to sqlalchemy-migrate, but the project seems to be dead. So we can go on with monkey-patching of the lib at least for now. """ # this patch is needed to ensure that recreate_table() doesn't drop # existing unique constraints of the table when creating a new one helper_cls = sqlite.SQLiteHelper helper_cls.recreate_table = _recreate_table helper_cls._get_unique_constraints = _get_unique_constraints # this patch is needed to be able to drop existing unique constraints constraint_cls = sqlite.SQLiteConstraintDropper constraint_cls.visit_migrate_unique_constraint = \ _visit_migrate_unique_constraint constraint_cls.__bases__ = (ansisql.ANSIColumnDropper, sqlite.SQLiteConstraintGenerator) def db_sync(engine, abs_path, version=None, init_version=0): """Upgrade or downgrade a database. Function runs the upgrade() or downgrade() functions in change scripts. :param engine: SQLAlchemy engine instance for a given database :param abs_path: Absolute path to migrate repository. :param version: Database will upgrade/downgrade until this version. If None - database will update to the latest available version. :param init_version: Initial database version """ if version is not None: try: version = int(version) except ValueError: raise exception.DbMigrationError( message=_("version should be an integer")) current_version = db_version(engine, abs_path, init_version) repository = _find_migrate_repo(abs_path) _db_schema_sanity_check(engine) if version is None or version > current_version: return versioning_api.upgrade(engine, repository, version) else: return versioning_api.downgrade(engine, repository, version) def _db_schema_sanity_check(engine): """Ensure all database tables were created with required parameters. :param engine: SQLAlchemy engine instance for a given database """ if engine.name == 'mysql': onlyutf8_sql = ('SELECT TABLE_NAME,TABLE_COLLATION ' 'from information_schema.TABLES ' 'where TABLE_SCHEMA=%s and ' 'TABLE_COLLATION NOT LIKE "%%utf8%%"') table_names = [res[0] for res in engine.execute(onlyutf8_sql, engine.url.database)] if len(table_names) > 0: raise ValueError(_('Tables "%s" have non utf8 collation, ' 'please make sure all tables are CHARSET=utf8' ) % ','.join(table_names)) def db_version(engine, abs_path, init_version): """Show the current version of the repository. :param engine: SQLAlchemy engine instance for a given database :param abs_path: Absolute path to migrate repository :param version: Initial database version """ repository = _find_migrate_repo(abs_path) try: return versioning_api.db_version(engine, repository) except versioning_exceptions.DatabaseNotControlledError: meta = sqlalchemy.MetaData() meta.reflect(bind=engine) tables = meta.tables if len(tables) == 0 or 'alembic_version' in tables: db_version_control(engine, abs_path, version=init_version) return versioning_api.db_version(engine, repository) else: raise exception.DbMigrationError( message=_( "The database is not under version control, but has " "tables. Please stamp the current version of the schema " "manually.")) def db_version_control(engine, abs_path, version=None): """Mark a database as under this repository's version control. Once a database is under version control, schema changes should only be done via change scripts in this repository. :param engine: SQLAlchemy engine instance for a given database :param abs_path: Absolute path to migrate repository :param version: Initial database version """ repository = _find_migrate_repo(abs_path) versioning_api.version_control(engine, repository, version) return version def _find_migrate_repo(abs_path): """Get the project's change script repository :param abs_path: Absolute path to migrate repository """ if not os.path.exists(abs_path): raise exception.DbMigrationError("Path %s not found" % abs_path) return Repository(abs_path) nova-2014.1/nova/openstack/common/db/sqlalchemy/session.py0000664000175400017540000010177512323721477024733 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Session Handling for SQLAlchemy backend. Recommended ways to use sessions within this framework: * Don't use them explicitly; this is like running with ``AUTOCOMMIT=1``. `model_query()` will implicitly use a session when called without one supplied. This is the ideal situation because it will allow queries to be automatically retried if the database connection is interrupted. .. note:: Automatic retry will be enabled in a future patch. It is generally fine to issue several queries in a row like this. Even though they may be run in separate transactions and/or separate sessions, each one will see the data from the prior calls. If needed, undo- or rollback-like functionality should be handled at a logical level. For an example, look at the code around quotas and `reservation_rollback()`. Examples: .. code:: python def get_foo(context, foo): return (model_query(context, models.Foo). filter_by(foo=foo). first()) def update_foo(context, id, newfoo): (model_query(context, models.Foo). filter_by(id=id). update({'foo': newfoo})) def create_foo(context, values): foo_ref = models.Foo() foo_ref.update(values) foo_ref.save() return foo_ref * Within the scope of a single method, keep all the reads and writes within the context managed by a single session. In this way, the session's `__exit__` handler will take care of calling `flush()` and `commit()` for you. If using this approach, you should not explicitly call `flush()` or `commit()`. Any error within the context of the session will cause the session to emit a `ROLLBACK`. Database errors like `IntegrityError` will be raised in `session`'s `__exit__` handler, and any try/except within the context managed by `session` will not be triggered. And catching other non-database errors in the session will not trigger the ROLLBACK, so exception handlers should always be outside the session, unless the developer wants to do a partial commit on purpose. If the connection is dropped before this is possible, the database will implicitly roll back the transaction. .. note:: Statements in the session scope will not be automatically retried. If you create models within the session, they need to be added, but you do not need to call `model.save()`: .. code:: python def create_many_foo(context, foos): session = sessionmaker() with session.begin(): for foo in foos: foo_ref = models.Foo() foo_ref.update(foo) session.add(foo_ref) def update_bar(context, foo_id, newbar): session = sessionmaker() with session.begin(): foo_ref = (model_query(context, models.Foo, session). filter_by(id=foo_id). first()) (model_query(context, models.Bar, session). filter_by(id=foo_ref['bar_id']). update({'bar': newbar})) .. note:: `update_bar` is a trivially simple example of using ``with session.begin``. Whereas `create_many_foo` is a good example of when a transaction is needed, it is always best to use as few queries as possible. The two queries in `update_bar` can be better expressed using a single query which avoids the need for an explicit transaction. It can be expressed like so: .. code:: python def update_bar(context, foo_id, newbar): subq = (model_query(context, models.Foo.id). filter_by(id=foo_id). limit(1). subquery()) (model_query(context, models.Bar). filter_by(id=subq.as_scalar()). update({'bar': newbar})) For reference, this emits approximately the following SQL statement: .. code:: sql UPDATE bar SET bar = ${newbar} WHERE id=(SELECT bar_id FROM foo WHERE id = ${foo_id} LIMIT 1); .. note:: `create_duplicate_foo` is a trivially simple example of catching an exception while using ``with session.begin``. Here create two duplicate instances with same primary key, must catch the exception out of context managed by a single session: .. code:: python def create_duplicate_foo(context): foo1 = models.Foo() foo2 = models.Foo() foo1.id = foo2.id = 1 session = sessionmaker() try: with session.begin(): session.add(foo1) session.add(foo2) except exception.DBDuplicateEntry as e: handle_error(e) * Passing an active session between methods. Sessions should only be passed to private methods. The private method must use a subtransaction; otherwise SQLAlchemy will throw an error when you call `session.begin()` on an existing transaction. Public methods should not accept a session parameter and should not be involved in sessions within the caller's scope. Note that this incurs more overhead in SQLAlchemy than the above means due to nesting transactions, and it is not possible to implicitly retry failed database operations when using this approach. This also makes code somewhat more difficult to read and debug, because a single database transaction spans more than one method. Error handling becomes less clear in this situation. When this is needed for code clarity, it should be clearly documented. .. code:: python def myfunc(foo): session = sessionmaker() with session.begin(): # do some database things bar = _private_func(foo, session) return bar def _private_func(foo, session=None): if not session: session = sessionmaker() with session.begin(subtransaction=True): # do some other database things return bar There are some things which it is best to avoid: * Don't keep a transaction open any longer than necessary. This means that your ``with session.begin()`` block should be as short as possible, while still containing all the related calls for that transaction. * Avoid ``with_lockmode('UPDATE')`` when possible. In MySQL/InnoDB, when a ``SELECT ... FOR UPDATE`` query does not match any rows, it will take a gap-lock. This is a form of write-lock on the "gap" where no rows exist, and prevents any other writes to that space. This can effectively prevent any INSERT into a table by locking the gap at the end of the index. Similar problems will occur if the SELECT FOR UPDATE has an overly broad WHERE clause, or doesn't properly use an index. One idea proposed at ODS Fall '12 was to use a normal SELECT to test the number of rows matching a query, and if only one row is returned, then issue the SELECT FOR UPDATE. The better long-term solution is to use ``INSERT .. ON DUPLICATE KEY UPDATE``. However, this can not be done until the "deleted" columns are removed and proper UNIQUE constraints are added to the tables. Enabling soft deletes: * To use/enable soft-deletes, the `SoftDeleteMixin` must be added to your model class. For example: .. code:: python class NovaBase(models.SoftDeleteMixin, models.ModelBase): pass Efficient use of soft deletes: * There are two possible ways to mark a record as deleted: `model.soft_delete()` and `query.soft_delete()`. The `model.soft_delete()` method works with a single already-fetched entry. `query.soft_delete()` makes only one db request for all entries that correspond to the query. * In almost all cases you should use `query.soft_delete()`. Some examples: .. code:: python def soft_delete_bar(): count = model_query(BarModel).find(some_condition).soft_delete() if count == 0: raise Exception("0 entries were soft deleted") def complex_soft_delete_with_synchronization_bar(session=None): if session is None: session = sessionmaker() with session.begin(subtransactions=True): count = (model_query(BarModel). find(some_condition). soft_delete(synchronize_session=True)) # Here synchronize_session is required, because we # don't know what is going on in outer session. if count == 0: raise Exception("0 entries were soft deleted") * There is only one situation where `model.soft_delete()` is appropriate: when you fetch a single record, work with it, and mark it as deleted in the same transaction. .. code:: python def soft_delete_bar_model(): session = sessionmaker() with session.begin(): bar_ref = model_query(BarModel).find(some_condition).first() # Work with bar_ref bar_ref.soft_delete(session=session) However, if you need to work with all entries that correspond to query and then soft delete them you should use the `query.soft_delete()` method: .. code:: python def soft_delete_multi_models(): session = sessionmaker() with session.begin(): query = (model_query(BarModel, session=session). find(some_condition)) model_refs = query.all() # Work with model_refs query.soft_delete(synchronize_session=False) # synchronize_session=False should be set if there is no outer # session and these entries are not used after this. When working with many rows, it is very important to use query.soft_delete, which issues a single query. Using `model.soft_delete()`, as in the following example, is very inefficient. .. code:: python for bar_ref in bar_refs: bar_ref.soft_delete(session=session) # This will produce count(bar_refs) db requests. """ import functools import logging import re import time import six from sqlalchemy import exc as sqla_exc from sqlalchemy.interfaces import PoolListener import sqlalchemy.orm from sqlalchemy.pool import NullPool, StaticPool from sqlalchemy.sql.expression import literal_column from nova.openstack.common.db import exception from nova.openstack.common.gettextutils import _LE, _LW, _LI from nova.openstack.common import timeutils LOG = logging.getLogger(__name__) class SqliteForeignKeysListener(PoolListener): """Ensures that the foreign key constraints are enforced in SQLite. The foreign key constraints are disabled by default in SQLite, so the foreign key constraints will be enabled here for every database connection """ def connect(self, dbapi_con, con_record): dbapi_con.execute('pragma foreign_keys=ON') # note(boris-42): In current versions of DB backends unique constraint # violation messages follow the structure: # # sqlite: # 1 column - (IntegrityError) column c1 is not unique # N columns - (IntegrityError) column c1, c2, ..., N are not unique # # sqlite since 3.7.16: # 1 column - (IntegrityError) UNIQUE constraint failed: tbl.k1 # # N columns - (IntegrityError) UNIQUE constraint failed: tbl.k1, tbl.k2 # # postgres: # 1 column - (IntegrityError) duplicate key value violates unique # constraint "users_c1_key" # N columns - (IntegrityError) duplicate key value violates unique # constraint "name_of_our_constraint" # # mysql: # 1 column - (IntegrityError) (1062, "Duplicate entry 'value_of_c1' for key # 'c1'") # N columns - (IntegrityError) (1062, "Duplicate entry 'values joined # with -' for key 'name_of_our_constraint'") # # ibm_db_sa: # N columns - (IntegrityError) SQL0803N One or more values in the INSERT # statement, UPDATE statement, or foreign key update caused by a # DELETE statement are not valid because the primary key, unique # constraint or unique index identified by "2" constrains table # "NOVA.KEY_PAIRS" from having duplicate values for the index # key. _DUP_KEY_RE_DB = { "sqlite": (re.compile(r"^.*columns?([^)]+)(is|are)\s+not\s+unique$"), re.compile(r"^.*UNIQUE\s+constraint\s+failed:\s+(.+)$")), "postgresql": (re.compile(r"^.*duplicate\s+key.*\"([^\"]+)\"\s*\n.*$"),), "mysql": (re.compile(r"^.*\(1062,.*'([^\']+)'\"\)$"),), "ibm_db_sa": (re.compile(r"^.*SQL0803N.*$"),), } def _raise_if_duplicate_entry_error(integrity_error, engine_name): """Raise exception if two entries are duplicated. In this function will be raised DBDuplicateEntry exception if integrity error wrap unique constraint violation. """ def get_columns_from_uniq_cons_or_name(columns): # note(vsergeyev): UniqueConstraint name convention: "uniq_t0c10c2" # where `t` it is table name and columns `c1`, `c2` # are in UniqueConstraint. uniqbase = "uniq_" if not columns.startswith(uniqbase): if engine_name == "postgresql": return [columns[columns.index("_") + 1:columns.rindex("_")]] return [columns] return columns[len(uniqbase):].split("0")[1:] if engine_name not in ["ibm_db_sa", "mysql", "sqlite", "postgresql"]: return # FIXME(johannes): The usage of the .message attribute has been # deprecated since Python 2.6. However, the exceptions raised by # SQLAlchemy can differ when using unicode() and accessing .message. # An audit across all three supported engines will be necessary to # ensure there are no regressions. for pattern in _DUP_KEY_RE_DB[engine_name]: match = pattern.match(integrity_error.message) if match: break else: return # NOTE(mriedem): The ibm_db_sa integrity error message doesn't provide the # columns so we have to omit that from the DBDuplicateEntry error. columns = '' if engine_name != 'ibm_db_sa': columns = match.group(1) if engine_name == "sqlite": columns = [c.split('.')[-1] for c in columns.strip().split(", ")] else: columns = get_columns_from_uniq_cons_or_name(columns) raise exception.DBDuplicateEntry(columns, integrity_error) # NOTE(comstud): In current versions of DB backends, Deadlock violation # messages follow the structure: # # mysql: # (OperationalError) (1213, 'Deadlock found when trying to get lock; try ' # 'restarting transaction') _DEADLOCK_RE_DB = { "mysql": re.compile(r"^.*\(1213, 'Deadlock.*") } def _raise_if_deadlock_error(operational_error, engine_name): """Raise exception on deadlock condition. Raise DBDeadlock exception if OperationalError contains a Deadlock condition. """ re = _DEADLOCK_RE_DB.get(engine_name) if re is None: return # FIXME(johannes): The usage of the .message attribute has been # deprecated since Python 2.6. However, the exceptions raised by # SQLAlchemy can differ when using unicode() and accessing .message. # An audit across all three supported engines will be necessary to # ensure there are no regressions. m = re.match(operational_error.message) if not m: return raise exception.DBDeadlock(operational_error) def _wrap_db_error(f): #TODO(rpodolyaka): in a subsequent commit make this a class decorator to # ensure it can only applied to Session subclasses instances (as we use # Session instance bind attribute below) @functools.wraps(f) def _wrap(self, *args, **kwargs): try: return f(self, *args, **kwargs) except UnicodeEncodeError: raise exception.DBInvalidUnicodeParameter() except sqla_exc.OperationalError as e: _raise_if_db_connection_lost(e, self.bind) _raise_if_deadlock_error(e, self.bind.dialect.name) # NOTE(comstud): A lot of code is checking for OperationalError # so let's not wrap it for now. raise # note(boris-42): We should catch unique constraint violation and # wrap it by our own DBDuplicateEntry exception. Unique constraint # violation is wrapped by IntegrityError. except sqla_exc.IntegrityError as e: # note(boris-42): SqlAlchemy doesn't unify errors from different # DBs so we must do this. Also in some tables (for example # instance_types) there are more than one unique constraint. This # means we should get names of columns, which values violate # unique constraint, from error message. _raise_if_duplicate_entry_error(e, self.bind.dialect.name) raise exception.DBError(e) except Exception as e: LOG.exception(_LE('DB exception wrapped.')) raise exception.DBError(e) return _wrap def _synchronous_switch_listener(dbapi_conn, connection_rec): """Switch sqlite connections to non-synchronous mode.""" dbapi_conn.execute("PRAGMA synchronous = OFF") def _add_regexp_listener(dbapi_con, con_record): """Add REGEXP function to sqlite connections.""" def regexp(expr, item): reg = re.compile(expr) return reg.search(six.text_type(item)) is not None dbapi_con.create_function('regexp', 2, regexp) def _thread_yield(dbapi_con, con_record): """Ensure other greenthreads get a chance to be executed. If we use eventlet.monkey_patch(), eventlet.greenthread.sleep(0) will execute instead of time.sleep(0). Force a context switch. With common database backends (eg MySQLdb and sqlite), there is no implicit yield caused by network I/O since they are implemented by C libraries that eventlet cannot monkey patch. """ time.sleep(0) def _ping_listener(engine, dbapi_conn, connection_rec, connection_proxy): """Ensures that MySQL and DB2 connections are alive. Borrowed from: http://groups.google.com/group/sqlalchemy/msg/a4ce563d802c929f """ cursor = dbapi_conn.cursor() try: ping_sql = 'select 1' if engine.name == 'ibm_db_sa': # DB2 requires a table expression ping_sql = 'select 1 from (values (1)) AS t1' cursor.execute(ping_sql) except Exception as ex: if engine.dialect.is_disconnect(ex, dbapi_conn, cursor): msg = _LW('Database server has gone away: %s') % ex LOG.warning(msg) raise sqla_exc.DisconnectionError(msg) else: raise def _set_mode_traditional(dbapi_con, connection_rec, connection_proxy): """Set engine mode to 'traditional'. Required to prevent silent truncates at insert or update operations under MySQL. By default MySQL truncates inserted string if it longer than a declared field just with warning. That is fraught with data corruption. """ _set_session_sql_mode(dbapi_con, connection_rec, connection_proxy, 'TRADITIONAL') def _set_session_sql_mode(dbapi_con, connection_rec, connection_proxy, sql_mode=None): """Set the sql_mode session variable. MySQL supports several server modes. The default is None, but sessions may choose to enable server modes like TRADITIONAL, ANSI, several STRICT_* modes and others. Note: passing in '' (empty string) for sql_mode clears the SQL mode for the session, overriding a potentially set server default. Passing in None (the default) makes this a no-op, meaning if a server-side SQL mode is set, it still applies. """ cursor = dbapi_con.cursor() if sql_mode is not None: cursor.execute("SET SESSION sql_mode = %s", [sql_mode]) # Check against the real effective SQL mode. Even when unset by # our own config, the server may still be operating in a specific # SQL mode as set by the server configuration cursor.execute("SHOW VARIABLES LIKE 'sql_mode'") row = cursor.fetchone() if row is None: LOG.warning(_LW('Unable to detect effective SQL mode')) return realmode = row[1] LOG.info(_LI('MySQL server mode set to %s') % realmode) # 'TRADITIONAL' mode enables several other modes, so # we need a substring match here if not ('TRADITIONAL' in realmode.upper() or 'STRICT_ALL_TABLES' in realmode.upper()): LOG.warning(_LW("MySQL SQL mode is '%s', " "consider enabling TRADITIONAL or STRICT_ALL_TABLES") % realmode) def _is_db_connection_error(args): """Return True if error in connecting to db.""" # NOTE(adam_g): This is currently MySQL specific and needs to be extended # to support Postgres and others. # For the db2, the error code is -30081 since the db2 is still not ready conn_err_codes = ('2002', '2003', '2006', '2013', '-30081') for err_code in conn_err_codes: if args.find(err_code) != -1: return True return False def _raise_if_db_connection_lost(error, engine): # NOTE(vsergeyev): Function is_disconnect(e, connection, cursor) # requires connection and cursor in incoming parameters, # but we have no possibility to create connection if DB # is not available, so in such case reconnect fails. # But is_disconnect() ignores these parameters, so it # makes sense to pass to function None as placeholder # instead of connection and cursor. if engine.dialect.is_disconnect(error, None, None): raise exception.DBConnectionError(error) def create_engine(sql_connection, sqlite_fk=False, mysql_sql_mode=None, mysql_traditional_mode=False, idle_timeout=3600, connection_debug=0, max_pool_size=None, max_overflow=None, pool_timeout=None, sqlite_synchronous=True, connection_trace=False, max_retries=10, retry_interval=10): """Return a new SQLAlchemy engine.""" connection_dict = sqlalchemy.engine.url.make_url(sql_connection) engine_args = { "pool_recycle": idle_timeout, 'convert_unicode': True, } logger = logging.getLogger('sqlalchemy.engine') # Map SQL debug level to Python log level if connection_debug >= 100: logger.setLevel(logging.DEBUG) elif connection_debug >= 50: logger.setLevel(logging.INFO) else: logger.setLevel(logging.WARNING) if "sqlite" in connection_dict.drivername: if sqlite_fk: engine_args["listeners"] = [SqliteForeignKeysListener()] engine_args["poolclass"] = NullPool if sql_connection == "sqlite://": engine_args["poolclass"] = StaticPool engine_args["connect_args"] = {'check_same_thread': False} else: if max_pool_size is not None: engine_args['pool_size'] = max_pool_size if max_overflow is not None: engine_args['max_overflow'] = max_overflow if pool_timeout is not None: engine_args['pool_timeout'] = pool_timeout engine = sqlalchemy.create_engine(sql_connection, **engine_args) sqlalchemy.event.listen(engine, 'checkin', _thread_yield) if engine.name in ['mysql', 'ibm_db_sa']: ping_callback = functools.partial(_ping_listener, engine) sqlalchemy.event.listen(engine, 'checkout', ping_callback) if engine.name == 'mysql': if mysql_traditional_mode: mysql_sql_mode = 'TRADITIONAL' if mysql_sql_mode: mode_callback = functools.partial(_set_session_sql_mode, sql_mode=mysql_sql_mode) sqlalchemy.event.listen(engine, 'checkout', mode_callback) elif 'sqlite' in connection_dict.drivername: if not sqlite_synchronous: sqlalchemy.event.listen(engine, 'connect', _synchronous_switch_listener) sqlalchemy.event.listen(engine, 'connect', _add_regexp_listener) if connection_trace and engine.dialect.dbapi.__name__ == 'MySQLdb': _patch_mysqldb_with_stacktrace_comments() try: engine.connect() except sqla_exc.OperationalError as e: if not _is_db_connection_error(e.args[0]): raise remaining = max_retries if remaining == -1: remaining = 'infinite' while True: msg = _LW('SQL connection failed. %s attempts left.') LOG.warning(msg % remaining) if remaining != 'infinite': remaining -= 1 time.sleep(retry_interval) try: engine.connect() break except sqla_exc.OperationalError as e: if (remaining != 'infinite' and remaining == 0) or \ not _is_db_connection_error(e.args[0]): raise return engine class Query(sqlalchemy.orm.query.Query): """Subclass of sqlalchemy.query with soft_delete() method.""" def soft_delete(self, synchronize_session='evaluate'): return self.update({'deleted': literal_column('id'), 'updated_at': literal_column('updated_at'), 'deleted_at': timeutils.utcnow()}, synchronize_session=synchronize_session) class Session(sqlalchemy.orm.session.Session): """Custom Session class to avoid SqlAlchemy Session monkey patching.""" @_wrap_db_error def query(self, *args, **kwargs): return super(Session, self).query(*args, **kwargs) @_wrap_db_error def flush(self, *args, **kwargs): return super(Session, self).flush(*args, **kwargs) @_wrap_db_error def execute(self, *args, **kwargs): return super(Session, self).execute(*args, **kwargs) def get_maker(engine, autocommit=True, expire_on_commit=False): """Return a SQLAlchemy sessionmaker using the given engine.""" return sqlalchemy.orm.sessionmaker(bind=engine, class_=Session, autocommit=autocommit, expire_on_commit=expire_on_commit, query_cls=Query) def _patch_mysqldb_with_stacktrace_comments(): """Adds current stack trace as a comment in queries. Patches MySQLdb.cursors.BaseCursor._do_query. """ import MySQLdb.cursors import traceback old_mysql_do_query = MySQLdb.cursors.BaseCursor._do_query def _do_query(self, q): stack = '' for filename, line, method, function in traceback.extract_stack(): # exclude various common things from trace if filename.endswith('session.py') and method == '_do_query': continue if filename.endswith('api.py') and method == 'wrapper': continue if filename.endswith('utils.py') and method == '_inner': continue if filename.endswith('exception.py') and method == '_wrap': continue # db/api is just a wrapper around db/sqlalchemy/api if filename.endswith('db/api.py'): continue # only trace inside nova index = filename.rfind('nova') if index == -1: continue stack += "File:%s:%s Method:%s() Line:%s | " \ % (filename[index:], line, method, function) # strip trailing " | " from stack if stack: stack = stack[:-3] qq = "%s /* %s */" % (q, stack) else: qq = q old_mysql_do_query(self, qq) setattr(MySQLdb.cursors.BaseCursor, '_do_query', _do_query) class EngineFacade(object): """A helper class for removing of global engine instances from nova.db. As a library, nova.db can't decide where to store/when to create engine and sessionmaker instances, so this must be left for a target application. On the other hand, in order to simplify the adoption of nova.db changes, we'll provide a helper class, which creates engine and sessionmaker on its instantiation and provides get_engine()/get_session() methods that are compatible with corresponding utility functions that currently exist in target projects, e.g. in Nova. engine/sessionmaker instances will still be global (and they are meant to be global), but they will be stored in the app context, rather that in the nova.db context. Note: using of this helper is completely optional and you are encouraged to integrate engine/sessionmaker instances into your apps any way you like (e.g. one might want to bind a session to a request context). Two important things to remember: 1. An Engine instance is effectively a pool of DB connections, so it's meant to be shared (and it's thread-safe). 2. A Session instance is not meant to be shared and represents a DB transactional context (i.e. it's not thread-safe). sessionmaker is a factory of sessions. """ def __init__(self, sql_connection, sqlite_fk=False, mysql_sql_mode=None, autocommit=True, expire_on_commit=False, **kwargs): """Initialize engine and sessionmaker instances. :param sqlite_fk: enable foreign keys in SQLite :type sqlite_fk: bool :param mysql_sql_mode: set SQL mode in MySQL :type mysql_sql_mode: string :param autocommit: use autocommit mode for created Session instances :type autocommit: bool :param expire_on_commit: expire session objects on commit :type expire_on_commit: bool Keyword arguments: :keyword idle_timeout: timeout before idle sql connections are reaped (defaults to 3600) :keyword connection_debug: verbosity of SQL debugging information. 0=None, 100=Everything (defaults to 0) :keyword max_pool_size: maximum number of SQL connections to keep open in a pool (defaults to SQLAlchemy settings) :keyword max_overflow: if set, use this value for max_overflow with sqlalchemy (defaults to SQLAlchemy settings) :keyword pool_timeout: if set, use this value for pool_timeout with sqlalchemy (defaults to SQLAlchemy settings) :keyword sqlite_synchronous: if True, SQLite uses synchronous mode (defaults to True) :keyword connection_trace: add python stack traces to SQL as comment strings (defaults to False) :keyword max_retries: maximum db connection retries during startup. (setting -1 implies an infinite retry count) (defaults to 10) :keyword retry_interval: interval between retries of opening a sql connection (defaults to 10) """ super(EngineFacade, self).__init__() self._engine = create_engine( sql_connection=sql_connection, sqlite_fk=sqlite_fk, mysql_sql_mode=mysql_sql_mode, idle_timeout=kwargs.get('idle_timeout', 3600), connection_debug=kwargs.get('connection_debug', 0), max_pool_size=kwargs.get('max_pool_size'), max_overflow=kwargs.get('max_overflow'), pool_timeout=kwargs.get('pool_timeout'), sqlite_synchronous=kwargs.get('sqlite_synchronous', True), connection_trace=kwargs.get('connection_trace', False), max_retries=kwargs.get('max_retries', 10), retry_interval=kwargs.get('retry_interval', 10)) self._session_maker = get_maker( engine=self._engine, autocommit=autocommit, expire_on_commit=expire_on_commit) def get_engine(self): """Get the engine instance (note, that it's shared).""" return self._engine def get_session(self, **kwargs): """Get a Session instance. If passed, keyword arguments values override the ones used when the sessionmaker instance was created. :keyword autocommit: use autocommit mode for created Session instances :type autocommit: bool :keyword expire_on_commit: expire session objects on commit :type expire_on_commit: bool """ for arg in kwargs: if arg not in ('autocommit', 'expire_on_commit'): del kwargs[arg] return self._session_maker(**kwargs) nova-2014.1/nova/openstack/common/db/sqlalchemy/utils.py0000664000175400017540000005700712323721477024406 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010-2011 OpenStack Foundation. # Copyright 2012 Justin Santa Barbara # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import logging import re from migrate.changeset import UniqueConstraint import sqlalchemy from sqlalchemy import Boolean from sqlalchemy import CheckConstraint from sqlalchemy import Column from sqlalchemy.engine import reflection from sqlalchemy.ext.compiler import compiles from sqlalchemy import func from sqlalchemy import Index from sqlalchemy import Integer from sqlalchemy import MetaData from sqlalchemy import or_ from sqlalchemy.sql.expression import literal_column from sqlalchemy.sql.expression import UpdateBase from sqlalchemy.sql import select from sqlalchemy import String from sqlalchemy import Table from sqlalchemy.types import NullType from nova.openstack.common import context as request_context from nova.openstack.common.db.sqlalchemy import models from nova.openstack.common.gettextutils import _, _LI, _LW from nova.openstack.common import timeutils LOG = logging.getLogger(__name__) _DBURL_REGEX = re.compile(r"[^:]+://([^:]+):([^@]+)@.+") def sanitize_db_url(url): match = _DBURL_REGEX.match(url) if match: return '%s****:****%s' % (url[:match.start(1)], url[match.end(2):]) return url class InvalidSortKey(Exception): message = _("Sort key supplied was not valid.") # copy from glance/db/sqlalchemy/api.py def paginate_query(query, model, limit, sort_keys, marker=None, sort_dir=None, sort_dirs=None): """Returns a query with sorting / pagination criteria added. Pagination works by requiring a unique sort_key, specified by sort_keys. (If sort_keys is not unique, then we risk looping through values.) We use the last row in the previous page as the 'marker' for pagination. So we must return values that follow the passed marker in the order. With a single-valued sort_key, this would be easy: sort_key > X. With a compound-values sort_key, (k1, k2, k3) we must do this to repeat the lexicographical ordering: (k1 > X1) or (k1 == X1 && k2 > X2) or (k1 == X1 && k2 == X2 && k3 > X3) We also have to cope with different sort_directions. Typically, the id of the last row is used as the client-facing pagination marker, then the actual marker object must be fetched from the db and passed in to us as marker. :param query: the query object to which we should add paging/sorting :param model: the ORM model class :param limit: maximum number of items to return :param sort_keys: array of attributes by which results should be sorted :param marker: the last item of the previous page; we returns the next results after this value. :param sort_dir: direction in which results should be sorted (asc, desc) :param sort_dirs: per-column array of sort_dirs, corresponding to sort_keys :rtype: sqlalchemy.orm.query.Query :return: The query with sorting/pagination added. """ if 'id' not in sort_keys: # TODO(justinsb): If this ever gives a false-positive, check # the actual primary key, rather than assuming its id LOG.warning(_LW('Id not in sort_keys; is sort_keys unique?')) assert(not (sort_dir and sort_dirs)) # Default the sort direction to ascending if sort_dirs is None and sort_dir is None: sort_dir = 'asc' # Ensure a per-column sort direction if sort_dirs is None: sort_dirs = [sort_dir for _sort_key in sort_keys] assert(len(sort_dirs) == len(sort_keys)) # Add sorting for current_sort_key, current_sort_dir in zip(sort_keys, sort_dirs): try: sort_dir_func = { 'asc': sqlalchemy.asc, 'desc': sqlalchemy.desc, }[current_sort_dir] except KeyError: raise ValueError(_("Unknown sort direction, " "must be 'desc' or 'asc'")) try: sort_key_attr = getattr(model, current_sort_key) except AttributeError: raise InvalidSortKey() query = query.order_by(sort_dir_func(sort_key_attr)) # Add pagination if marker is not None: marker_values = [] for sort_key in sort_keys: v = getattr(marker, sort_key) marker_values.append(v) # Build up an array of sort criteria as in the docstring criteria_list = [] for i in range(len(sort_keys)): crit_attrs = [] for j in range(i): model_attr = getattr(model, sort_keys[j]) crit_attrs.append((model_attr == marker_values[j])) model_attr = getattr(model, sort_keys[i]) if sort_dirs[i] == 'desc': crit_attrs.append((model_attr < marker_values[i])) else: crit_attrs.append((model_attr > marker_values[i])) criteria = sqlalchemy.sql.and_(*crit_attrs) criteria_list.append(criteria) f = sqlalchemy.sql.or_(*criteria_list) query = query.filter(f) if limit is not None: query = query.limit(limit) return query def _read_deleted_filter(query, db_model, read_deleted): if 'deleted' not in db_model.__table__.columns: raise ValueError(_("There is no `deleted` column in `%s` table. " "Project doesn't use soft-deleted feature.") % db_model.__name__) default_deleted_value = db_model.__table__.c.deleted.default.arg if read_deleted == 'no': query = query.filter(db_model.deleted == default_deleted_value) elif read_deleted == 'yes': pass # omit the filter to include deleted and active elif read_deleted == 'only': query = query.filter(db_model.deleted != default_deleted_value) else: raise ValueError(_("Unrecognized read_deleted value '%s'") % read_deleted) return query def _project_filter(query, db_model, context, project_only): if project_only and 'project_id' not in db_model.__table__.columns: raise ValueError(_("There is no `project_id` column in `%s` table.") % db_model.__name__) if request_context.is_user_context(context) and project_only: if project_only == 'allow_none': is_none = None query = query.filter(or_(db_model.project_id == context.project_id, db_model.project_id == is_none)) else: query = query.filter(db_model.project_id == context.project_id) return query def model_query(context, model, session, args=None, project_only=False, read_deleted=None): """Query helper that accounts for context's `read_deleted` field. :param context: context to query under :param model: Model to query. Must be a subclass of ModelBase. :type model: models.ModelBase :param session: The session to use. :type session: sqlalchemy.orm.session.Session :param args: Arguments to query. If None - model is used. :type args: tuple :param project_only: If present and context is user-type, then restrict query to match the context's project_id. If set to 'allow_none', restriction includes project_id = None. :type project_only: bool :param read_deleted: If present, overrides context's read_deleted field. :type read_deleted: bool Usage: result = (utils.model_query(context, models.Instance, session=session) .filter_by(uuid=instance_uuid) .all()) query = utils.model_query( context, Node, session=session, args=(func.count(Node.id), func.sum(Node.ram)) ).filter_by(project_id=project_id) """ if not read_deleted: if hasattr(context, 'read_deleted'): # NOTE(viktors): some projects use `read_deleted` attribute in # their contexts instead of `show_deleted`. read_deleted = context.read_deleted else: read_deleted = context.show_deleted if not issubclass(model, models.ModelBase): raise TypeError(_("model should be a subclass of ModelBase")) query = session.query(model) if not args else session.query(*args) query = _read_deleted_filter(query, model, read_deleted) query = _project_filter(query, model, context, project_only) return query def get_table(engine, name): """Returns an sqlalchemy table dynamically from db. Needed because the models don't work for us in migrations as models will be far out of sync with the current data. """ metadata = MetaData() metadata.bind = engine return Table(name, metadata, autoload=True) class InsertFromSelect(UpdateBase): """Form the base for `INSERT INTO table (SELECT ... )` statement.""" def __init__(self, table, select): self.table = table self.select = select @compiles(InsertFromSelect) def visit_insert_from_select(element, compiler, **kw): """Form the `INSERT INTO table (SELECT ... )` statement.""" return "INSERT INTO %s %s" % ( compiler.process(element.table, asfrom=True), compiler.process(element.select)) class ColumnError(Exception): """Error raised when no column or an invalid column is found.""" def _get_not_supported_column(col_name_col_instance, column_name): try: column = col_name_col_instance[column_name] except KeyError: msg = _("Please specify column %s in col_name_col_instance " "param. It is required because column has unsupported " "type by sqlite).") raise ColumnError(msg % column_name) if not isinstance(column, Column): msg = _("col_name_col_instance param has wrong type of " "column instance for column %s It should be instance " "of sqlalchemy.Column.") raise ColumnError(msg % column_name) return column def drop_unique_constraint(migrate_engine, table_name, uc_name, *columns, **col_name_col_instance): """Drop unique constraint from table. This method drops UC from table and works for mysql, postgresql and sqlite. In mysql and postgresql we are able to use "alter table" construction. Sqlalchemy doesn't support some sqlite column types and replaces their type with NullType in metadata. We process these columns and replace NullType with the correct column type. :param migrate_engine: sqlalchemy engine :param table_name: name of table that contains uniq constraint. :param uc_name: name of uniq constraint that will be dropped. :param columns: columns that are in uniq constraint. :param col_name_col_instance: contains pair column_name=column_instance. column_instance is instance of Column. These params are required only for columns that have unsupported types by sqlite. For example BigInteger. """ meta = MetaData() meta.bind = migrate_engine t = Table(table_name, meta, autoload=True) if migrate_engine.name == "sqlite": override_cols = [ _get_not_supported_column(col_name_col_instance, col.name) for col in t.columns if isinstance(col.type, NullType) ] for col in override_cols: t.columns.replace(col) uc = UniqueConstraint(*columns, table=t, name=uc_name) uc.drop() def drop_old_duplicate_entries_from_table(migrate_engine, table_name, use_soft_delete, *uc_column_names): """Drop all old rows having the same values for columns in uc_columns. This method drop (or mark ad `deleted` if use_soft_delete is True) old duplicate rows form table with name `table_name`. :param migrate_engine: Sqlalchemy engine :param table_name: Table with duplicates :param use_soft_delete: If True - values will be marked as `deleted`, if False - values will be removed from table :param uc_column_names: Unique constraint columns """ meta = MetaData() meta.bind = migrate_engine table = Table(table_name, meta, autoload=True) columns_for_group_by = [table.c[name] for name in uc_column_names] columns_for_select = [func.max(table.c.id)] columns_for_select.extend(columns_for_group_by) duplicated_rows_select = select(columns_for_select, group_by=columns_for_group_by, having=func.count(table.c.id) > 1) for row in migrate_engine.execute(duplicated_rows_select): # NOTE(boris-42): Do not remove row that has the biggest ID. delete_condition = table.c.id != row[0] is_none = None # workaround for pyflakes delete_condition &= table.c.deleted_at == is_none for name in uc_column_names: delete_condition &= table.c[name] == row[name] rows_to_delete_select = select([table.c.id]).where(delete_condition) for row in migrate_engine.execute(rows_to_delete_select).fetchall(): LOG.info(_LI("Deleting duplicated row with id: %(id)s from table: " "%(table)s") % dict(id=row[0], table=table_name)) if use_soft_delete: delete_statement = table.update().\ where(delete_condition).\ values({ 'deleted': literal_column('id'), 'updated_at': literal_column('updated_at'), 'deleted_at': timeutils.utcnow() }) else: delete_statement = table.delete().where(delete_condition) migrate_engine.execute(delete_statement) def _get_default_deleted_value(table): if isinstance(table.c.id.type, Integer): return 0 if isinstance(table.c.id.type, String): return "" raise ColumnError(_("Unsupported id columns type")) def _restore_indexes_on_deleted_columns(migrate_engine, table_name, indexes): table = get_table(migrate_engine, table_name) insp = reflection.Inspector.from_engine(migrate_engine) real_indexes = insp.get_indexes(table_name) existing_index_names = dict( [(index['name'], index['column_names']) for index in real_indexes]) # NOTE(boris-42): Restore indexes on `deleted` column for index in indexes: if 'deleted' not in index['column_names']: continue name = index['name'] if name in existing_index_names: column_names = [table.c[c] for c in existing_index_names[name]] old_index = Index(name, *column_names, unique=index["unique"]) old_index.drop(migrate_engine) column_names = [table.c[c] for c in index['column_names']] new_index = Index(index["name"], *column_names, unique=index["unique"]) new_index.create(migrate_engine) def change_deleted_column_type_to_boolean(migrate_engine, table_name, **col_name_col_instance): if migrate_engine.name == "sqlite": return _change_deleted_column_type_to_boolean_sqlite( migrate_engine, table_name, **col_name_col_instance) insp = reflection.Inspector.from_engine(migrate_engine) indexes = insp.get_indexes(table_name) table = get_table(migrate_engine, table_name) old_deleted = Column('old_deleted', Boolean, default=False) old_deleted.create(table, populate_default=False) table.update().\ where(table.c.deleted == table.c.id).\ values(old_deleted=True).\ execute() table.c.deleted.drop() table.c.old_deleted.alter(name="deleted") _restore_indexes_on_deleted_columns(migrate_engine, table_name, indexes) def _change_deleted_column_type_to_boolean_sqlite(migrate_engine, table_name, **col_name_col_instance): insp = reflection.Inspector.from_engine(migrate_engine) table = get_table(migrate_engine, table_name) columns = [] for column in table.columns: column_copy = None if column.name != "deleted": if isinstance(column.type, NullType): column_copy = _get_not_supported_column(col_name_col_instance, column.name) else: column_copy = column.copy() else: column_copy = Column('deleted', Boolean, default=0) columns.append(column_copy) constraints = [constraint.copy() for constraint in table.constraints] meta = table.metadata new_table = Table(table_name + "__tmp__", meta, *(columns + constraints)) new_table.create() indexes = [] for index in insp.get_indexes(table_name): column_names = [new_table.c[c] for c in index['column_names']] indexes.append(Index(index["name"], *column_names, unique=index["unique"])) c_select = [] for c in table.c: if c.name != "deleted": c_select.append(c) else: c_select.append(table.c.deleted == table.c.id) ins = InsertFromSelect(new_table, select(c_select)) migrate_engine.execute(ins) table.drop() [index.create(migrate_engine) for index in indexes] new_table.rename(table_name) new_table.update().\ where(new_table.c.deleted == new_table.c.id).\ values(deleted=True).\ execute() def change_deleted_column_type_to_id_type(migrate_engine, table_name, **col_name_col_instance): if migrate_engine.name == "sqlite": return _change_deleted_column_type_to_id_type_sqlite( migrate_engine, table_name, **col_name_col_instance) insp = reflection.Inspector.from_engine(migrate_engine) indexes = insp.get_indexes(table_name) table = get_table(migrate_engine, table_name) new_deleted = Column('new_deleted', table.c.id.type, default=_get_default_deleted_value(table)) new_deleted.create(table, populate_default=True) deleted = True # workaround for pyflakes table.update().\ where(table.c.deleted == deleted).\ values(new_deleted=table.c.id).\ execute() table.c.deleted.drop() table.c.new_deleted.alter(name="deleted") _restore_indexes_on_deleted_columns(migrate_engine, table_name, indexes) def _change_deleted_column_type_to_id_type_sqlite(migrate_engine, table_name, **col_name_col_instance): # NOTE(boris-42): sqlaclhemy-migrate can't drop column with check # constraints in sqlite DB and our `deleted` column has # 2 check constraints. So there is only one way to remove # these constraints: # 1) Create new table with the same columns, constraints # and indexes. (except deleted column). # 2) Copy all data from old to new table. # 3) Drop old table. # 4) Rename new table to old table name. insp = reflection.Inspector.from_engine(migrate_engine) meta = MetaData(bind=migrate_engine) table = Table(table_name, meta, autoload=True) default_deleted_value = _get_default_deleted_value(table) columns = [] for column in table.columns: column_copy = None if column.name != "deleted": if isinstance(column.type, NullType): column_copy = _get_not_supported_column(col_name_col_instance, column.name) else: column_copy = column.copy() else: column_copy = Column('deleted', table.c.id.type, default=default_deleted_value) columns.append(column_copy) def is_deleted_column_constraint(constraint): # NOTE(boris-42): There is no other way to check is CheckConstraint # associated with deleted column. if not isinstance(constraint, CheckConstraint): return False sqltext = str(constraint.sqltext) return (sqltext.endswith("deleted in (0, 1)") or sqltext.endswith("deleted IN (:deleted_1, :deleted_2)")) constraints = [] for constraint in table.constraints: if not is_deleted_column_constraint(constraint): constraints.append(constraint.copy()) new_table = Table(table_name + "__tmp__", meta, *(columns + constraints)) new_table.create() indexes = [] for index in insp.get_indexes(table_name): column_names = [new_table.c[c] for c in index['column_names']] indexes.append(Index(index["name"], *column_names, unique=index["unique"])) ins = InsertFromSelect(new_table, table.select()) migrate_engine.execute(ins) table.drop() [index.create(migrate_engine) for index in indexes] new_table.rename(table_name) deleted = True # workaround for pyflakes new_table.update().\ where(new_table.c.deleted == deleted).\ values(deleted=new_table.c.id).\ execute() # NOTE(boris-42): Fix value of deleted column: False -> "" or 0. deleted = False # workaround for pyflakes new_table.update().\ where(new_table.c.deleted == deleted).\ values(deleted=default_deleted_value).\ execute() def get_connect_string(backend, database, user=None, passwd=None): """Get database connection Try to get a connection with a very specific set of values, if we get these then we'll run the tests, otherwise they are skipped """ args = {'backend': backend, 'user': user, 'passwd': passwd, 'database': database} if backend == 'sqlite': template = '%(backend)s:///%(database)s' else: template = "%(backend)s://%(user)s:%(passwd)s@localhost/%(database)s" return template % args def is_backend_avail(backend, database, user=None, passwd=None): try: connect_uri = get_connect_string(backend=backend, database=database, user=user, passwd=passwd) engine = sqlalchemy.create_engine(connect_uri) connection = engine.connect() except Exception: # intentionally catch all to handle exceptions even if we don't # have any backend code loaded. return False else: connection.close() engine.dispose() return True def get_db_connection_info(conn_pieces): database = conn_pieces.path.strip('/') loc_pieces = conn_pieces.netloc.split('@') host = loc_pieces[1] auth_pieces = loc_pieces[0].split(':') user = auth_pieces[0] password = "" if len(auth_pieces) > 1: password = auth_pieces[1].strip() return (user, password, database, host) nova-2014.1/nova/openstack/common/db/sqlalchemy/provision.py0000664000175400017540000001311312323721477025264 0ustar jenkinsjenkins00000000000000# Copyright 2013 Mirantis.inc # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Provision test environment for specific DB backends""" import argparse import os import random import string from six import moves import sqlalchemy from nova.openstack.common.db import exception as exc SQL_CONNECTION = os.getenv('OS_TEST_DBAPI_ADMIN_CONNECTION', 'sqlite://') def _gen_credentials(*names): """Generate credentials.""" auth_dict = {} for name in names: val = ''.join(random.choice(string.ascii_lowercase) for i in moves.range(10)) auth_dict[name] = val return auth_dict def _get_engine(uri=SQL_CONNECTION): """Engine creation By default the uri is SQL_CONNECTION which is admin credentials. Call the function without arguments to get admin connection. Admin connection required to create temporary user and database for each particular test. Otherwise use existing connection to recreate connection to the temporary database. """ return sqlalchemy.create_engine(uri, poolclass=sqlalchemy.pool.NullPool) def _execute_sql(engine, sql, driver): """Initialize connection, execute sql query and close it.""" try: with engine.connect() as conn: if driver == 'postgresql': conn.connection.set_isolation_level(0) for s in sql: conn.execute(s) except sqlalchemy.exc.OperationalError: msg = ('%s does not match database admin ' 'credentials or database does not exist.') raise exc.DBConnectionError(msg % SQL_CONNECTION) def create_database(engine): """Provide temporary user and database for each particular test.""" driver = engine.name auth = _gen_credentials('database', 'user', 'passwd') sqls = { 'mysql': [ "drop database if exists %(database)s;", "grant all on %(database)s.* to '%(user)s'@'localhost'" " identified by '%(passwd)s';", "create database %(database)s;", ], 'postgresql': [ "drop database if exists %(database)s;", "drop user if exists %(user)s;", "create user %(user)s with password '%(passwd)s';", "create database %(database)s owner %(user)s;", ] } if driver == 'sqlite': return 'sqlite:////tmp/%s' % auth['database'] try: sql_rows = sqls[driver] except KeyError: raise ValueError('Unsupported RDBMS %s' % driver) sql_query = map(lambda x: x % auth, sql_rows) _execute_sql(engine, sql_query, driver) params = auth.copy() params['backend'] = driver return "%(backend)s://%(user)s:%(passwd)s@localhost/%(database)s" % params def drop_database(engine, current_uri): """Drop temporary database and user after each particular test.""" engine = _get_engine(current_uri) admin_engine = _get_engine() driver = engine.name auth = {'database': engine.url.database, 'user': engine.url.username} if driver == 'sqlite': try: os.remove(auth['database']) except OSError: pass return sqls = { 'mysql': [ "drop database if exists %(database)s;", "drop user '%(user)s'@'localhost';", ], 'postgresql': [ "drop database if exists %(database)s;", "drop user if exists %(user)s;", ] } try: sql_rows = sqls[driver] except KeyError: raise ValueError('Unsupported RDBMS %s' % driver) sql_query = map(lambda x: x % auth, sql_rows) _execute_sql(admin_engine, sql_query, driver) def main(): """Controller to handle commands ::create: Create test user and database with random names. ::drop: Drop user and database created by previous command. """ parser = argparse.ArgumentParser( description='Controller to handle database creation and dropping' ' commands.', epilog='Under normal circumstances is not used directly.' ' Used in .testr.conf to automate test database creation' ' and dropping processes.') subparsers = parser.add_subparsers( help='Subcommands to manipulate temporary test databases.') create = subparsers.add_parser( 'create', help='Create temporary test ' 'databases and users.') create.set_defaults(which='create') create.add_argument( 'instances_count', type=int, help='Number of databases to create.') drop = subparsers.add_parser( 'drop', help='Drop temporary test databases and users.') drop.set_defaults(which='drop') drop.add_argument( 'instances', nargs='+', help='List of databases uri to be dropped.') args = parser.parse_args() engine = _get_engine() which = args.which if which == "create": for i in range(int(args.instances_count)): print(create_database(engine)) elif which == "drop": for db in args.instances: drop_database(engine, db) if __name__ == "__main__": main() nova-2014.1/nova/openstack/common/db/sqlalchemy/models.py0000664000175400017540000000737112323721477024530 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Piston Cloud Computing, Inc. # Copyright 2012 Cloudscaling Group, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ SQLAlchemy models. """ import six from sqlalchemy import Column, Integer from sqlalchemy import DateTime from sqlalchemy.orm import object_mapper from nova.openstack.common import timeutils class ModelBase(object): """Base class for models.""" __table_initialized__ = False def save(self, session): """Save this object.""" # NOTE(boris-42): This part of code should be look like: # session.add(self) # session.flush() # But there is a bug in sqlalchemy and eventlet that # raises NoneType exception if there is no running # transaction and rollback is called. As long as # sqlalchemy has this bug we have to create transaction # explicitly. with session.begin(subtransactions=True): session.add(self) session.flush() def __setitem__(self, key, value): setattr(self, key, value) def __getitem__(self, key): return getattr(self, key) def get(self, key, default=None): return getattr(self, key, default) @property def _extra_keys(self): """Specifies custom fields Subclasses can override this property to return a list of custom fields that should be included in their dict representation. For reference check tests/db/sqlalchemy/test_models.py """ return [] def __iter__(self): columns = dict(object_mapper(self).columns).keys() # NOTE(russellb): Allow models to specify other keys that can be looked # up, beyond the actual db columns. An example would be the 'name' # property for an Instance. columns.extend(self._extra_keys) self._i = iter(columns) return self def next(self): n = six.advance_iterator(self._i) return n, getattr(self, n) def update(self, values): """Make the model object behave like a dict.""" for k, v in six.iteritems(values): setattr(self, k, v) def iteritems(self): """Make the model object behave like a dict. Includes attributes from joins. """ local = dict(self) joined = dict([(k, v) for k, v in six.iteritems(self.__dict__) if not k[0] == '_']) local.update(joined) return six.iteritems(local) class TimestampMixin(object): created_at = Column(DateTime, default=lambda: timeutils.utcnow()) updated_at = Column(DateTime, onupdate=lambda: timeutils.utcnow()) class SoftDeleteMixin(object): deleted_at = Column(DateTime) deleted = Column(Integer, default=0) def soft_delete(self, session): """Mark this object as deleted.""" self.deleted = self.id self.deleted_at = timeutils.utcnow() self.save(session=session) nova-2014.1/nova/openstack/common/db/sqlalchemy/test_base.py0000664000175400017540000001114112323721477025204 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import abc import functools import os import fixtures import six from nova.openstack.common.db.sqlalchemy import session from nova.openstack.common.db.sqlalchemy import utils from nova.openstack.common import test class DbFixture(fixtures.Fixture): """Basic database fixture. Allows to run tests on various db backends, such as SQLite, MySQL and PostgreSQL. By default use sqlite backend. To override default backend uri set env variable OS_TEST_DBAPI_CONNECTION with database admin credentials for specific backend. """ def _get_uri(self): return os.getenv('OS_TEST_DBAPI_CONNECTION', 'sqlite://') def __init__(self, test): super(DbFixture, self).__init__() self.test = test def setUp(self): super(DbFixture, self).setUp() self.test.engine = session.create_engine(self._get_uri()) self.test.sessionmaker = session.get_maker(self.test.engine) self.addCleanup(self.test.engine.dispose) class DbTestCase(test.BaseTestCase): """Base class for testing of DB code. Using `DbFixture`. Intended to be the main database test case to use all the tests on a given backend with user defined uri. Backend specific tests should be decorated with `backend_specific` decorator. """ FIXTURE = DbFixture def setUp(self): super(DbTestCase, self).setUp() self.useFixture(self.FIXTURE(self)) ALLOWED_DIALECTS = ['sqlite', 'mysql', 'postgresql'] def backend_specific(*dialects): """Decorator to skip backend specific tests on inappropriate engines. ::dialects: list of dialects names under which the test will be launched. """ def wrap(f): @functools.wraps(f) def ins_wrap(self): if not set(dialects).issubset(ALLOWED_DIALECTS): raise ValueError( "Please use allowed dialects: %s" % ALLOWED_DIALECTS) if self.engine.name not in dialects: msg = ('The test "%s" can be run ' 'only on %s. Current engine is %s.') args = (f.__name__, ' '.join(dialects), self.engine.name) self.skip(msg % args) else: return f(self) return ins_wrap return wrap @six.add_metaclass(abc.ABCMeta) class OpportunisticFixture(DbFixture): """Base fixture to use default CI databases. The databases exist in OpenStack CI infrastructure. But for the correct functioning in local environment the databases must be created manually. """ DRIVER = abc.abstractproperty(lambda: None) DBNAME = PASSWORD = USERNAME = 'openstack_citest' def _get_uri(self): return utils.get_connect_string(backend=self.DRIVER, user=self.USERNAME, passwd=self.PASSWORD, database=self.DBNAME) @six.add_metaclass(abc.ABCMeta) class OpportunisticTestCase(DbTestCase): """Base test case to use default CI databases. The subclasses of the test case are running only when openstack_citest database is available otherwise a tests will be skipped. """ FIXTURE = abc.abstractproperty(lambda: None) def setUp(self): credentials = { 'backend': self.FIXTURE.DRIVER, 'user': self.FIXTURE.USERNAME, 'passwd': self.FIXTURE.PASSWORD, 'database': self.FIXTURE.DBNAME} if self.FIXTURE.DRIVER and not utils.is_backend_avail(**credentials): msg = '%s backend is not available.' % self.FIXTURE.DRIVER return self.skip(msg) super(OpportunisticTestCase, self).setUp() class MySQLOpportunisticFixture(OpportunisticFixture): DRIVER = 'mysql' class PostgreSQLOpportunisticFixture(OpportunisticFixture): DRIVER = 'postgresql' class MySQLOpportunisticTestCase(OpportunisticTestCase): FIXTURE = MySQLOpportunisticFixture class PostgreSQLOpportunisticTestCase(OpportunisticTestCase): FIXTURE = PostgreSQLOpportunisticFixture nova-2014.1/nova/openstack/common/db/sqlalchemy/test_migrations.py0000664000175400017540000002547312323721477026463 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # Copyright 2012-2013 IBM Corp. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import functools import logging import os import subprocess import lockfile from six import moves from six.moves.urllib import parse import sqlalchemy import sqlalchemy.exc from nova.openstack.common.db.sqlalchemy import utils from nova.openstack.common.gettextutils import _LE from nova.openstack.common import test LOG = logging.getLogger(__name__) def _have_mysql(user, passwd, database): present = os.environ.get('TEST_MYSQL_PRESENT') if present is None: return utils.is_backend_avail(backend='mysql', user=user, passwd=passwd, database=database) return present.lower() in ('', 'true') def _have_postgresql(user, passwd, database): present = os.environ.get('TEST_POSTGRESQL_PRESENT') if present is None: return utils.is_backend_avail(backend='postgres', user=user, passwd=passwd, database=database) return present.lower() in ('', 'true') def _set_db_lock(lock_path=None, lock_prefix=None): def decorator(f): @functools.wraps(f) def wrapper(*args, **kwargs): try: path = lock_path or os.environ.get("NOVA_LOCK_PATH") lock = lockfile.FileLock(os.path.join(path, lock_prefix)) with lock: LOG.debug('Got lock "%s"' % f.__name__) return f(*args, **kwargs) finally: LOG.debug('Lock released "%s"' % f.__name__) return wrapper return decorator class BaseMigrationTestCase(test.BaseTestCase): """Base class fort testing of migration utils.""" def __init__(self, *args, **kwargs): super(BaseMigrationTestCase, self).__init__(*args, **kwargs) self.DEFAULT_CONFIG_FILE = os.path.join(os.path.dirname(__file__), 'test_migrations.conf') # Test machines can set the TEST_MIGRATIONS_CONF variable # to override the location of the config file for migration testing self.CONFIG_FILE_PATH = os.environ.get('TEST_MIGRATIONS_CONF', self.DEFAULT_CONFIG_FILE) self.test_databases = {} self.migration_api = None def setUp(self): super(BaseMigrationTestCase, self).setUp() # Load test databases from the config file. Only do this # once. No need to re-run this on each test... LOG.debug('config_path is %s' % self.CONFIG_FILE_PATH) if os.path.exists(self.CONFIG_FILE_PATH): cp = moves.configparser.RawConfigParser() try: cp.read(self.CONFIG_FILE_PATH) defaults = cp.defaults() for key, value in defaults.items(): self.test_databases[key] = value except moves.configparser.ParsingError as e: self.fail("Failed to read test_migrations.conf config " "file. Got error: %s" % e) else: self.fail("Failed to find test_migrations.conf config " "file.") self.engines = {} for key, value in self.test_databases.items(): self.engines[key] = sqlalchemy.create_engine(value) # We start each test case with a completely blank slate. self._reset_databases() def tearDown(self): # We destroy the test data store between each test case, # and recreate it, which ensures that we have no side-effects # from the tests self._reset_databases() super(BaseMigrationTestCase, self).tearDown() def execute_cmd(self, cmd=None): process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = process.communicate()[0] LOG.debug(output) self.assertEqual(0, process.returncode, "Failed to run: %s\n%s" % (cmd, output)) def _reset_pg(self, conn_pieces): (user, password, database, host) = utils.get_db_connection_info(conn_pieces) os.environ['PGPASSWORD'] = password os.environ['PGUSER'] = user # note(boris-42): We must create and drop database, we can't # drop database which we have connected to, so for such # operations there is a special database template1. sqlcmd = ("psql -w -U %(user)s -h %(host)s -c" " '%(sql)s' -d template1") sql = ("drop database if exists %s;") % database droptable = sqlcmd % {'user': user, 'host': host, 'sql': sql} self.execute_cmd(droptable) sql = ("create database %s;") % database createtable = sqlcmd % {'user': user, 'host': host, 'sql': sql} self.execute_cmd(createtable) os.unsetenv('PGPASSWORD') os.unsetenv('PGUSER') @_set_db_lock(lock_prefix='migration_tests-') def _reset_databases(self): for key, engine in self.engines.items(): conn_string = self.test_databases[key] conn_pieces = parse.urlparse(conn_string) engine.dispose() if conn_string.startswith('sqlite'): # We can just delete the SQLite database, which is # the easiest and cleanest solution db_path = conn_pieces.path.strip('/') if os.path.exists(db_path): os.unlink(db_path) # No need to recreate the SQLite DB. SQLite will # create it for us if it's not there... elif conn_string.startswith('mysql'): # We can execute the MySQL client to destroy and re-create # the MYSQL database, which is easier and less error-prone # than using SQLAlchemy to do this via MetaData...trust me. (user, password, database, host) = \ utils.get_db_connection_info(conn_pieces) sql = ("drop database if exists %(db)s; " "create database %(db)s;") % {'db': database} cmd = ("mysql -u \"%(user)s\" -p\"%(password)s\" -h %(host)s " "-e \"%(sql)s\"") % {'user': user, 'password': password, 'host': host, 'sql': sql} self.execute_cmd(cmd) elif conn_string.startswith('postgresql'): self._reset_pg(conn_pieces) class WalkVersionsMixin(object): def _walk_versions(self, engine=None, snake_walk=False, downgrade=True): # Determine latest version script from the repo, then # upgrade from 1 through to the latest, with no data # in the databases. This just checks that the schema itself # upgrades successfully. # Place the database under version control self.migration_api.version_control(engine, self.REPOSITORY, self.INIT_VERSION) self.assertEqual(self.INIT_VERSION, self.migration_api.db_version(engine, self.REPOSITORY)) LOG.debug('latest version is %s' % self.REPOSITORY.latest) versions = range(self.INIT_VERSION + 1, self.REPOSITORY.latest + 1) for version in versions: # upgrade -> downgrade -> upgrade self._migrate_up(engine, version, with_data=True) if snake_walk: downgraded = self._migrate_down( engine, version - 1, with_data=True) if downgraded: self._migrate_up(engine, version) if downgrade: # Now walk it back down to 0 from the latest, testing # the downgrade paths. for version in reversed(versions): # downgrade -> upgrade -> downgrade downgraded = self._migrate_down(engine, version - 1) if snake_walk and downgraded: self._migrate_up(engine, version) self._migrate_down(engine, version - 1) def _migrate_down(self, engine, version, with_data=False): try: self.migration_api.downgrade(engine, self.REPOSITORY, version) except NotImplementedError: # NOTE(sirp): some migrations, namely release-level # migrations, don't support a downgrade. return False self.assertEqual( version, self.migration_api.db_version(engine, self.REPOSITORY)) # NOTE(sirp): `version` is what we're downgrading to (i.e. the 'target' # version). So if we have any downgrade checks, they need to be run for # the previous (higher numbered) migration. if with_data: post_downgrade = getattr( self, "_post_downgrade_%03d" % (version + 1), None) if post_downgrade: post_downgrade(engine) return True def _migrate_up(self, engine, version, with_data=False): """migrate up to a new version of the db. We allow for data insertion and post checks at every migration version with special _pre_upgrade_### and _check_### functions in the main test. """ # NOTE(sdague): try block is here because it's impossible to debug # where a failed data migration happens otherwise try: if with_data: data = None pre_upgrade = getattr( self, "_pre_upgrade_%03d" % version, None) if pre_upgrade: data = pre_upgrade(engine) self.migration_api.upgrade(engine, self.REPOSITORY, version) self.assertEqual(version, self.migration_api.db_version(engine, self.REPOSITORY)) if with_data: check = getattr(self, "_check_%03d" % version, None) if check: check(engine, data) except Exception: LOG.error(_LE("Failed to migrate to version %s on engine %s") % (version, engine)) raise nova-2014.1/nova/openstack/common/db/sqlalchemy/__init__.py0000664000175400017540000000000012323721477024762 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/db/exception.py0000664000175400017540000000351612323721477023076 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """DB related custom exceptions.""" import six from nova.openstack.common.gettextutils import _ class DBError(Exception): """Wraps an implementation specific exception.""" def __init__(self, inner_exception=None): self.inner_exception = inner_exception super(DBError, self).__init__(six.text_type(inner_exception)) class DBDuplicateEntry(DBError): """Wraps an implementation specific exception.""" def __init__(self, columns=[], inner_exception=None): self.columns = columns super(DBDuplicateEntry, self).__init__(inner_exception) class DBDeadlock(DBError): def __init__(self, inner_exception=None): super(DBDeadlock, self).__init__(inner_exception) class DBInvalidUnicodeParameter(Exception): message = _("Invalid Parameter: " "Unicode is not supported by the current database.") class DbMigrationError(DBError): """Wraps migration specific exception.""" def __init__(self, message=None): super(DbMigrationError, self).__init__(message) class DBConnectionError(DBError): """Wraps connection specific exception.""" pass nova-2014.1/nova/openstack/common/db/api.py0000664000175400017540000001353412323721477021652 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Rackspace Hosting # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Multiple DB API backend support. A DB backend module should implement a method named 'get_backend' which takes no arguments. The method can return any object that implements DB API methods. """ import functools import logging import threading import time from nova.openstack.common.db import exception from nova.openstack.common.gettextutils import _LE from nova.openstack.common import importutils LOG = logging.getLogger(__name__) def safe_for_db_retry(f): """Enable db-retry for decorated function, if config option enabled.""" f.__dict__['enable_retry'] = True return f class wrap_db_retry(object): """Retry db.api methods, if DBConnectionError() raised Retry decorated db.api methods. If we enabled `use_db_reconnect` in config, this decorator will be applied to all db.api functions, marked with @safe_for_db_retry decorator. Decorator catchs DBConnectionError() and retries function in a loop until it succeeds, or until maximum retries count will be reached. """ def __init__(self, retry_interval, max_retries, inc_retry_interval, max_retry_interval): super(wrap_db_retry, self).__init__() self.retry_interval = retry_interval self.max_retries = max_retries self.inc_retry_interval = inc_retry_interval self.max_retry_interval = max_retry_interval def __call__(self, f): @functools.wraps(f) def wrapper(*args, **kwargs): next_interval = self.retry_interval remaining = self.max_retries while True: try: return f(*args, **kwargs) except exception.DBConnectionError as e: if remaining == 0: LOG.exception(_LE('DB exceeded retry limit.')) raise exception.DBError(e) if remaining != -1: remaining -= 1 LOG.exception(_LE('DB connection error.')) # NOTE(vsergeyev): We are using patched time module, so # this effectively yields the execution # context to another green thread. time.sleep(next_interval) if self.inc_retry_interval: next_interval = min( next_interval * 2, self.max_retry_interval ) return wrapper class DBAPI(object): def __init__(self, backend_name, backend_mapping=None, lazy=False, **kwargs): """Initialize the chosen DB API backend. :param backend_name: name of the backend to load :type backend_name: str :param backend_mapping: backend name -> module/class to load mapping :type backend_mapping: dict :param lazy: load the DB backend lazily on the first DB API method call :type lazy: bool Keyword arguments: :keyword use_db_reconnect: retry DB transactions on disconnect or not :type use_db_reconnect: bool :keyword retry_interval: seconds between transaction retries :type retry_interval: int :keyword inc_retry_interval: increase retry interval or not :type inc_retry_interval: bool :keyword max_retry_interval: max interval value between retries :type max_retry_interval: int :keyword max_retries: max number of retries before an error is raised :type max_retries: int """ self._backend = None self._backend_name = backend_name self._backend_mapping = backend_mapping or {} self._lock = threading.Lock() if not lazy: self._load_backend() self.use_db_reconnect = kwargs.get('use_db_reconnect', False) self.retry_interval = kwargs.get('retry_interval', 1) self.inc_retry_interval = kwargs.get('inc_retry_interval', True) self.max_retry_interval = kwargs.get('max_retry_interval', 10) self.max_retries = kwargs.get('max_retries', 20) def _load_backend(self): with self._lock: if not self._backend: # Import the untranslated name if we don't have a mapping backend_path = self._backend_mapping.get(self._backend_name, self._backend_name) backend_mod = importutils.import_module(backend_path) self._backend = backend_mod.get_backend() def __getattr__(self, key): if not self._backend: self._load_backend() attr = getattr(self._backend, key) if not hasattr(attr, '__call__'): return attr # NOTE(vsergeyev): If `use_db_reconnect` option is set to True, retry # DB API methods, decorated with @safe_for_db_retry # on disconnect. if self.use_db_reconnect and hasattr(attr, 'enable_retry'): attr = wrap_db_retry( retry_interval=self.retry_interval, max_retries=self.max_retries, inc_retry_interval=self.inc_retry_interval, max_retry_interval=self.max_retry_interval)(attr) return attr nova-2014.1/nova/openstack/common/db/__init__.py0000664000175400017540000000000012323721477022620 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/openstack/common/__init__.py0000664000175400017540000000010312323721510022223 0ustar jenkinsjenkins00000000000000import six six.add_move(six.MovedModule('mox', 'mox', 'mox3.mox')) nova-2014.1/nova/openstack/common/uuidutils.py0000664000175400017540000000204512323721477022536 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Intel Corporation. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ UUID related utilities and helper functions. """ import uuid def generate_uuid(): return str(uuid.uuid4()) def is_uuid_like(val): """Returns validation of a value as a UUID. For our purposes, a UUID is a canonical form string: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa """ try: return str(uuid.UUID(val)) == val except (TypeError, ValueError, AttributeError): return False nova-2014.1/nova/openstack/__init__.py0000664000175400017540000000000012323721477020743 0ustar jenkinsjenkins00000000000000nova-2014.1/nova/cmd/0000775000175400017540000000000012323722546015416 5ustar jenkinsjenkins00000000000000nova-2014.1/nova/cmd/manage.py0000664000175400017540000015441712323721510017222 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2013 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. # Interactive shell based on Django: # # Copyright (c) 2005, the Lawrence Journal-World # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of Django nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ CLI interface for nova management. """ from __future__ import print_function import os import sys import netaddr from oslo.config import cfg from oslo import messaging import six from nova.api.ec2 import ec2utils from nova import availability_zones from nova.compute import flavors from nova import config from nova import context from nova import db from nova.db import migration from nova import exception from nova.openstack.common import cliutils from nova.openstack.common.db import exception as db_exc from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova import quota from nova import rpc from nova import servicegroup from nova import version CONF = cfg.CONF CONF.import_opt('network_manager', 'nova.service') CONF.import_opt('service_down_time', 'nova.service') CONF.import_opt('flat_network_bridge', 'nova.network.manager') CONF.import_opt('num_networks', 'nova.network.manager') CONF.import_opt('multi_host', 'nova.network.manager') CONF.import_opt('network_size', 'nova.network.manager') CONF.import_opt('vlan_start', 'nova.network.manager') CONF.import_opt('vpn_start', 'nova.network.manager') CONF.import_opt('default_floating_pool', 'nova.network.floating_ips') CONF.import_opt('public_interface', 'nova.network.linux_net') QUOTAS = quota.QUOTAS # Decorators for actions def args(*args, **kwargs): def _decorator(func): func.__dict__.setdefault('args', []).insert(0, (args, kwargs)) return func return _decorator def param2id(object_id): """Helper function to convert various volume id types to internal id. args: [object_id], e.g. 'vol-0000000a' or 'volume-0000000a' or '10' """ if '-' in object_id: return ec2utils.ec2_vol_id_to_uuid(object_id) else: return object_id class VpnCommands(object): """Class for managing VPNs.""" @args('--project', dest='project_id', metavar='', help='Project name') @args('--ip', metavar='', help='IP Address') @args('--port', metavar='', help='Port') def change(self, project_id, ip, port): """Change the ip and port for a vpn. this will update all networks associated with a project not sure if that's the desired behavior or not, patches accepted """ # TODO(tr3buchet): perhaps this shouldn't update all networks # associated with a project in the future admin_context = context.get_admin_context() networks = db.project_get_networks(admin_context, project_id) for network in networks: db.network_update(admin_context, network['id'], {'vpn_public_address': ip, 'vpn_public_port': int(port)}) class ShellCommands(object): def bpython(self): """Runs a bpython shell. Falls back to Ipython/python shell if unavailable """ self.run('bpython') def ipython(self): """Runs an Ipython shell. Falls back to Python shell if unavailable """ self.run('ipython') def python(self): """Runs a python shell. Falls back to Python shell if unavailable """ self.run('python') @args('--shell', metavar='', help='Python shell') def run(self, shell=None): """Runs a Python interactive interpreter.""" if not shell: shell = 'bpython' if shell == 'bpython': try: import bpython bpython.embed() except ImportError: shell = 'ipython' if shell == 'ipython': try: import IPython # Explicitly pass an empty list as arguments, because # otherwise IPython would use sys.argv from this script. shell = IPython.Shell.IPShell(argv=[]) shell.mainloop() except ImportError: shell = 'python' if shell == 'python': import code try: # Try activating rlcompleter, because it's handy. import readline except ImportError: pass else: # We don't have to wrap the following import in a 'try', # because we already know 'readline' was imported successfully. readline.parse_and_bind("tab:complete") code.interact() @args('--path', metavar='', help='Script path') def script(self, path): """Runs the script from the specified path with flags set properly. arguments: path """ exec(compile(open(path).read(), path, 'exec'), locals(), globals()) def _db_error(caught_exception): print(caught_exception) print(_("The above error may show that the database has not " "been created.\nPlease create a database using " "'nova-manage db sync' before running this command.")) exit(1) class ProjectCommands(object): """Class for managing projects.""" @args('--project', dest='project_id', metavar='', help='Project name') @args('--user', dest='user_id', metavar='', help='User name') @args('--key', metavar='', help='Key') @args('--value', metavar='', help='Value') def quota(self, project_id, user_id=None, key=None, value=None): """Create, update or display quotas for project/user If no quota key is provided, the quota will be displayed. If a valid quota key is provided and it does not exist, it will be created. Otherwise, it will be updated. """ ctxt = context.get_admin_context() if user_id: quota = QUOTAS.get_user_quotas(ctxt, project_id, user_id) else: user_id = None quota = QUOTAS.get_project_quotas(ctxt, project_id) # if key is None, that means we need to show the quotas instead # of updating them if key: settable_quotas = QUOTAS.get_settable_quotas(ctxt, project_id, user_id=user_id) if key in quota: minimum = settable_quotas[key]['minimum'] maximum = settable_quotas[key]['maximum'] if value.lower() == 'unlimited': value = -1 if int(value) < -1: print(_('Quota limit must be -1 or greater.')) return(2) if ((int(value) < minimum) and (maximum != -1 or (maximum == -1 and int(value) != -1))): print(_('Quota limit must be greater than %s.') % minimum) return(2) if maximum != -1 and int(value) > maximum: print(_('Quota limit must be less than %s.') % maximum) return(2) try: db.quota_create(ctxt, project_id, key, value, user_id=user_id) except exception.QuotaExists: db.quota_update(ctxt, project_id, key, value, user_id=user_id) else: print(_('%(key)s is not a valid quota key. Valid options are: ' '%(options)s.') % {'key': key, 'options': ', '.join(quota)}) return(2) print_format = "%-36s %-10s %-10s %-10s" print(print_format % ( _('Quota'), _('Limit'), _('In Use'), _('Reserved'))) # Retrieve the quota after update if user_id: quota = QUOTAS.get_user_quotas(ctxt, project_id, user_id) else: quota = QUOTAS.get_project_quotas(ctxt, project_id) for key, value in quota.iteritems(): if value['limit'] < 0 or value['limit'] is None: value['limit'] = 'unlimited' print(print_format % (key, value['limit'], value['in_use'], value['reserved'])) @args('--project', dest='project_id', metavar='', help='Project name') def scrub(self, project_id): """Deletes data associated with project.""" admin_context = context.get_admin_context() networks = db.project_get_networks(admin_context, project_id) for network in networks: db.network_disassociate(admin_context, network['id']) groups = db.security_group_get_by_project(admin_context, project_id) for group in groups: db.security_group_destroy(admin_context, group['id']) AccountCommands = ProjectCommands class FixedIpCommands(object): """Class for managing fixed ip.""" @args('--host', metavar='', help='Host') def list(self, host=None): """Lists all fixed ips (optionally by host).""" ctxt = context.get_admin_context() try: if host is None: fixed_ips = db.fixed_ip_get_all(ctxt) else: fixed_ips = db.fixed_ip_get_by_host(ctxt, host) except exception.NotFound as ex: print(_("error: %s") % ex) return(2) instances = db.instance_get_all(context.get_admin_context()) instances_by_uuid = {} for instance in instances: instances_by_uuid[instance['uuid']] = instance print("%-18s\t%-15s\t%-15s\t%s" % (_('network'), _('IP address'), _('hostname'), _('host'))) all_networks = {} try: # use network_get_all to retrieve all existing networks # this is to ensure that IPs associated with deleted networks # will not throw exceptions. for network in db.network_get_all(context.get_admin_context()): all_networks[network.id] = network except exception.NoNetworksFound: # do not have any networks, so even if there are IPs, these # IPs should have been deleted ones, so return. print(_('No fixed IP found.')) return has_ip = False for fixed_ip in fixed_ips: hostname = None host = None network = all_networks.get(fixed_ip['network_id']) if network: has_ip = True if fixed_ip.get('instance_uuid'): instance = instances_by_uuid.get(fixed_ip['instance_uuid']) if instance: hostname = instance['hostname'] host = instance['host'] else: print(_('WARNING: fixed ip %s allocated to missing' ' instance') % str(fixed_ip['address'])) print("%-18s\t%-15s\t%-15s\t%s" % ( network['cidr'], fixed_ip['address'], hostname, host)) if not has_ip: print(_('No fixed IP found.')) @args('--address', metavar='', help='IP address') def reserve(self, address): """Mark fixed ip as reserved arguments: address """ return self._set_reserved(address, True) @args('--address', metavar='', help='IP address') def unreserve(self, address): """Mark fixed ip as free to use arguments: address """ return self._set_reserved(address, False) def _set_reserved(self, address, reserved): ctxt = context.get_admin_context() try: fixed_ip = db.fixed_ip_get_by_address(ctxt, address) if fixed_ip is None: raise exception.NotFound('Could not find address') db.fixed_ip_update(ctxt, fixed_ip['address'], {'reserved': reserved}) except exception.NotFound as ex: print(_("error: %s") % ex) return(2) class FloatingIpCommands(object): """Class for managing floating ip.""" @staticmethod def address_to_hosts(addresses): """Iterate over hosts within an address range. If an explicit range specifier is missing, the parameter is interpreted as a specific individual address. """ try: return [netaddr.IPAddress(addresses)] except ValueError: net = netaddr.IPNetwork(addresses) if net.size < 4: reason = _("/%s should be specified as single address(es) " "not in cidr format") % net.prefixlen raise exception.InvalidInput(reason=reason) elif net.size >= 1000000: # NOTE(dripton): If we generate a million IPs and put them in # the database, the system will slow to a crawl and/or run # out of memory and crash. This is clearly a misconfiguration. reason = _("Too many IP addresses will be generated. Please " "increase /%s to reduce the number generated." ) % net.prefixlen raise exception.InvalidInput(reason=reason) else: return net.iter_hosts() @args('--ip_range', metavar='', help='IP range') @args('--pool', metavar='', help='Optional pool') @args('--interface', metavar='', help='Optional interface') def create(self, ip_range, pool=None, interface=None): """Creates floating ips for zone by range.""" admin_context = context.get_admin_context() if not pool: pool = CONF.default_floating_pool if not interface: interface = CONF.public_interface ips = ({'address': str(address), 'pool': pool, 'interface': interface} for address in self.address_to_hosts(ip_range)) try: db.floating_ip_bulk_create(admin_context, ips) except exception.FloatingIpExists as exc: # NOTE(simplylizz): Maybe logging would be better here # instead of printing, but logging isn't used here and I # don't know why. print('error: %s' % exc) return(1) @args('--ip_range', metavar='', help='IP range') def delete(self, ip_range): """Deletes floating ips by range.""" admin_context = context.get_admin_context() ips = ({'address': str(address)} for address in self.address_to_hosts(ip_range)) db.floating_ip_bulk_destroy(admin_context, ips) @args('--host', metavar='', help='Host') def list(self, host=None): """Lists all floating ips (optionally by host). Note: if host is given, only active floating IPs are returned """ ctxt = context.get_admin_context() try: if host is None: floating_ips = db.floating_ip_get_all(ctxt) else: floating_ips = db.floating_ip_get_all_by_host(ctxt, host) except exception.NoFloatingIpsDefined: print(_("No floating IP addresses have been defined.")) return for floating_ip in floating_ips: instance_uuid = None if floating_ip['fixed_ip_id']: fixed_ip = db.fixed_ip_get(ctxt, floating_ip['fixed_ip_id']) instance_uuid = fixed_ip['instance_uuid'] print("%s\t%s\t%s\t%s\t%s" % (floating_ip['project_id'], floating_ip['address'], instance_uuid, floating_ip['pool'], floating_ip['interface'])) class NetworkCommands(object): """Class for managing networks.""" @args('--label', metavar='